commit b1896ea6e78bb1864c4df95235b84c70e3801e85 Author: ymi Date: Fri Sep 19 11:32:56 2025 +0200 initial commit diff --git a/db/data/dbdata_activite_t_classes.SQL b/db/data/dbdata_activite_t_classes.SQL new file mode 100644 index 0000000..2ea1598 --- /dev/null +++ b/db/data/dbdata_activite_t_classes.SQL @@ -0,0 +1,96 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + CASE WHEN t_classes.oid = 0 THEN t_classes.oid ELSE 1 END AS oid, + t_classes.code, + t_classes.texte, + t_classes.is_cti, + t_classes.sequence, + t_listes_tables.code as table_code, + t_classes.contenu_by_code, + t_classes.contenu_non_replicable_ailleurs + FROM + activite.t_classes, + activite.t_listes_tables + WHERE 1=1 + AND (is_cti = '1' OR t_classes.code ilike 'CTI_%') + AND table_id = t_listes_tables.oid + ORDER BY t_classes.code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + oid, + code, + texte, + is_cti, + sequence, + table_code, + contenu_by_code, + contenu_non_replicable_ailleurs +) +VALUES +(1, 'CTIGFA1', 'Formes d''activité CTI niveau 1', '1', 1, 'FORMEACTIVITE', '0', '0'), +(1, 'CTIGFA2', 'Formes d''activité CTI niveau 2', '1', 2, 'FORMEACTIVITE', '0', '0'), +(1, 'CTIGFA3', 'Champ satisfaction', '1', 3, 'FORMEACTIVITE', '0', '0'), +(1, 'CTI_DURSEJ', 'Tranches séjours CTI', '1', 9, 'DURSEJ', '0', '0'), +(1, 'CTI_ETA_1', 'Etages CTI', '0', 4, 'ETAGE', '0', '1'), +(1, 'CTI_GHMDA', 'Domaines d''activité ATIH', '1', 9, 'GHM', '0', '0'), +(1, 'CTI_GHMGA', 'Groupes d''activité ATIH', '1', 7, 'GHM', '0', '0'), +(1, 'CTI_GHMGP', 'Groupes de planification ATIH', '1', 8, 'GHM', '0', '0'), +(1, 'CTI_MEDLIBSAL', 'Conditions d''exercice', '1', 1, 'MEDECIN', '0', '1'), +(1, 'CTI_PRC_1', 'Prestations CTI', '0', 4, 'PRESTA_C', '0', '0'), +(1, 'CTI_PREDCA', 'Décomposition CA (CTI)', '1', 9, 'PRESTA_C', '0', '0'), +(1, 'CTI_RUB_1', 'Rubriques CTI', '0', 4, 'RUBRIQUE', '1', '1'), +(1, 'CTI_RUB_2', 'Rubriques détaillées CTI.', '0', 31, 'RUBRIQUE', '0', '1'), +(1, 'CTI_SER_1', 'Services CTI', '0', 4, 'SERVICE_F', '0', '1'), +(1, 'CTI_TAGE', 'Tranches d''âge', '1', 9, 'AGE', '0', '0'), +(1, 'CTI_UF_1', 'Unités Fonctionnelles CTI', '0', 4, 'UF', '0', '1'), +(1, 'ETATSEJN1', 'Etat de séjour CTI niveau 1', '1', 11, 'ETATSEJOUR', '0', '0'), +(1, 'ETATSEJN2', 'Etat de séjour CTI niveau 2', '1', 10, 'ETATSEJOUR', '0', '0') +; + +-- 3/3 : Màj de la table iCTI +UPDATE activite.t_classes SET + code = w_dbsetup.code, + texte = w_dbsetup.texte, + table_id = t_listes_tables.oid, + is_cti = w_dbsetup.is_cti, + contenu_by_code = w_dbsetup.contenu_by_code, + contenu_non_replicable_ailleurs = w_dbsetup.contenu_non_replicable_ailleurs +FROM + w_dbsetup, + activite.t_listes_tables +WHERE 1=1 + AND w_dbsetup.table_code = t_listes_tables.code + AND t_classes.sequence = w_dbsetup.sequence + AND t_classes.table_id = t_listes_tables.oid + AND (1!=1 + OR t_classes.code IS DISTINCT FROM w_dbsetup.code + OR t_classes.texte IS DISTINCT FROM w_dbsetup.texte + OR t_classes.table_id IS DISTINCT FROM t_listes_tables.oid + OR t_classes.is_cti IS DISTINCT FROM w_dbsetup.is_cti + OR t_classes.contenu_by_code IS DISTINCT FROM w_dbsetup.contenu_by_code + OR t_classes.contenu_non_replicable_ailleurs IS DISTINCT FROM w_dbsetup.contenu_non_replicable_ailleurs) +; + +INSERT INTO activite.t_classes(code, texte, table_id, is_cti, sequence, contenu_by_code, contenu_non_replicable_ailleurs) + SELECT + w_dbsetup.code, + w_dbsetup.texte, + t_listes_tables.oid, + w_dbsetup.is_cti, + w_dbsetup.sequence, + w_dbsetup.contenu_by_code, + w_dbsetup.contenu_non_replicable_ailleurs + FROM + w_dbsetup, + activite.t_listes_tables + WHERE 1=1 + AND w_dbsetup.table_code = t_listes_tables.code + AND t_listes_tables.oid::text || '-' || w_dbsetup.sequence::text NOT IN (SELECT table_id::text || '-' || sequence::text FROM activite.t_classes) + AND w_dbsetup.texte NOT LIKE '*SUPPRIME%' +; \ No newline at end of file diff --git a/db/data/dbdata_activite_t_classes_sections.SQL b/db/data/dbdata_activite_t_classes_sections.SQL new file mode 100644 index 0000000..f3852c6 --- /dev/null +++ b/db/data/dbdata_activite_t_classes_sections.SQL @@ -0,0 +1,539 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + CASE WHEN t_classes_sections.oid = 0 THEN t_classes_sections.oid ELSE 1 END AS oid, + t_classes_sections.code, + t_classes_sections.texte, + t_listes_tables.code as table_code, + t_classes.sequence as classe_sequence, + t_classes_sections.condition, + t_classes_sections.exclude_code, + t_classes_sections.include_code + FROM + activite.t_classes_sections, + activite.t_classes, + activite.t_listes_tables + WHERE 1=1 + AND t_classes_sections.classe_id = t_classes.oid + AND table_id = t_listes_tables.oid + AND (t_classes.is_cti = '1' OR t_classes.code LIKE 'CTI_%') + ORDER BY + t_listes_tables.code, + t_classes.sequence, + t_classes_sections.code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + oid, + code, + texte, + table_code, + classe_sequence, + condition, + exclude_code, + include_code +) +VALUES +(1, 'T01', 'Nouveaux-nés', 'AGE', 9, '', '', ''), +(1, 'T02', '1 - 5 ans', 'AGE', 9, '', '', ''), +(1, 'T03', '6 - 12 ans', 'AGE', 9, '', '', ''), +(1, 'T04', '13 - 20 ans', 'AGE', 9, '', '', ''), +(1, 'T05', '21 - 30 ans', 'AGE', 9, '', '', ''), +(1, 'T06', '31 - 40 ans', 'AGE', 9, '', '', ''), +(1, 'T07', '41 - 50 ans', 'AGE', 9, '', '', ''), +(1, 'T08', '51 - 60 ans', 'AGE', 9, '', '', ''), +(1, 'T09', '61 - 70 ans', 'AGE', 9, '', '', ''), +(1, 'T10', '71 - 80 ans', 'AGE', 9, '', '', ''), +(1, 'T11', '81 ans et plus', 'AGE', 9, '', '', ''), +(1, 'S1', '0 nuit', 'DURSEJ', 9, '', '', ''), +(1, 'S2', '1 nuit', 'DURSEJ', 9, '', '', ''), +(1, 'S3', 'de 2 à 5 nuits', 'DURSEJ', 9, '', '', ''), +(1, 'S4', 'de 6 à 10 nuits', 'DURSEJ', 9, '', '', ''), +(1, 'S5', 'de 11 à 20 nuits', 'DURSEJ', 9, '', '', ''), +(1, 'S6', 'de 21 à 30 nuits', 'DURSEJ', 9, '', '', ''), +(1, 'S7', 'de 31 à 100 nuits', 'DURSEJ', 9, '', '', ''), +(1, 'S8', 'de 101 à 1000 nuits', 'DURSEJ', 9, '', '', ''), +(1, 'S9', 'plus de 1000 nuits', 'DURSEJ', 9, '', '', ''), +(1, 'S1', 'Prévu(s)', 'ETATSEJOUR', 10, '', '', ''), +(1, 'S2', 'Présent(s)', 'ETATSEJOUR', 10, '', '', ''), +(1, 'S3', 'Sorti(s) non groupé(s)', 'ETATSEJOUR', 10, '', '', ''), +(1, 'S4', 'Sorti(s) facturable(s)', 'ETATSEJOUR', 10, '', '', ''), +(1, 'S5', 'Facturé(s) non soldé(s)', 'ETATSEJOUR', 10, '', '', ''), +(1, 'S6', 'Soldé(s)', 'ETATSEJOUR', 10, '', '', ''), +(1, 'S7', 'Fictif(s)', 'ETATSEJOUR', 10, '', '', ''), +(1, 'S8', 'Annulé(s)', 'ETATSEJOUR', 10, '', '', ''), +(1, 'S1', 'Prévu(s)', 'ETATSEJOUR', 11, '', '', ''), +(1, 'S2', 'Présent(s)', 'ETATSEJOUR', 11, '', '', ''), +(1, 'S3', 'Sorti(s) non facturé(s)', 'ETATSEJOUR', 11, '', '', ''), +(1, 'S4', 'Facturé(s) non soldé(s)', 'ETATSEJOUR', 11, '', '', ''), +(1, 'S5', 'Soldé(s)', 'ETATSEJOUR', 11, '', '', ''), +(1, 'S6', 'Annulé(s)', 'ETATSEJOUR', 11, '', '', ''), +(1, '1', 'MCO', 'FORMEACTIVITE', 1, '', '', ''), +(1, '2', 'SSR', 'FORMEACTIVITE', 1, '', '', ''), +(1, '3', 'PSY', 'FORMEACTIVITE', 1, '', '', ''), +(1, '4', 'HAD', 'FORMEACTIVITE', 1, '', '', ''), +(1, '5', 'EHPAD et assimilés', 'FORMEACTIVITE', 1, '', '', ''), +(1, '7', 'Externes', 'FORMEACTIVITE', 1, '', '', ''), +(1, '9', 'Autres', 'FORMEACTIVITE', 1, '', '', ''), +(1, '11', 'MCO Médecine', 'FORMEACTIVITE', 2, '', '', ''), +(1, '12', 'MCO Chirurgie', 'FORMEACTIVITE', 2, '', '', ''), +(1, '13', 'MCO Obstétrique', 'FORMEACTIVITE', 2, '', '', ''), +(1, '14', 'MCO Esthétique', 'FORMEACTIVITE', 2, '', '', ''), +(1, '15', 'MCO Séances', 'FORMEACTIVITE', 2, '', '', ''), +(1, '19', 'MCO Autres', 'FORMEACTIVITE', 2, '', '', ''), +(1, '20', 'SSR', 'FORMEACTIVITE', 2, '', '', ''), +(1, '30', 'PSY', 'FORMEACTIVITE', 2, '', '', ''), +(1, '40', 'HAD', 'FORMEACTIVITE', 2, '', '', ''), +(1, '50', 'EHPAD et assimilés', 'FORMEACTIVITE', 2, '', '', ''), +(1, '70', 'Externes', 'FORMEACTIVITE', 2, '', '', ''), +(1, '99', 'Autres', 'FORMEACTIVITE', 2, '', '', ''), +(1, '11', 'MCOCA', 'FORMEACTIVITE', 3, '', '', ''), +(1, '12', 'MCO48H', 'FORMEACTIVITE', 3, '', '', ''), +(1, '2', 'SSR', 'FORMEACTIVITE', 3, '', '', ''), +(1, '3', 'PSY', 'FORMEACTIVITE', 3, '', '', ''), +(1, '4', 'HAD', 'FORMEACTIVITE', 3, '', '', ''), +(1, '9', 'Autres', 'FORMEACTIVITE', 3, '', '', ''), +(1, 'G001', 'Chirurgies digestives hautes', 'GHM', 7, '', '', ''), +(1, 'G002', 'Chirurgie digestive majeure', 'GHM', 7, '', '', ''), +(1, 'G003', 'Appendicectomies', 'GHM', 7, '', '', ''), +(1, 'G004', 'Hernies', 'GHM', 7, '', '', ''), +(1, 'G005', 'Occlusions, sub-occlusions digestives', 'GHM', 7, '', '', ''), +(1, 'G006', 'Chirurgie mineure grêle/colon', 'GHM', 7, '', '', ''), +(1, 'G007', 'Chirurgies rectum/anus (hors résections)', 'GHM', 7, '', '', ''), +(1, 'G008', 'Autres chirurgies digestives', 'GHM', 7, '', '', ''), +(1, 'G009', 'Cholécystectomies', 'GHM', 7, '', '', ''), +(1, 'G010', 'Autres chirurgies foie, pancréas, voies biliaires', 'GHM', 7, '', '', ''), +(1, 'G011', 'Prise en charge médicale des tumeurs malignes du tube digestif', 'GHM', 7, '', '', ''), +(1, 'G012', 'Ulcères, hémorragies digestives', 'GHM', 7, '', '', ''), +(1, 'G013', 'Suivi de greffes digestives', 'GHM', 7, '', '', ''), +(1, 'G014', 'Maladies inflammatoires de l''intestin', 'GHM', 7, '', '', ''), +(1, 'G015', 'Gastro-entérites et affections du tube digestif', 'GHM', 7, '', '', ''), +(1, 'G016', 'Autres gastroentérites et maladies diverses du tube digestif', 'GHM', 7, '', '', ''), +(1, 'G017', 'Autres affections digestives', 'GHM', 7, '', '', ''), +(1, 'G018', 'Hépatites, cirrhoses', 'GHM', 7, '', '', ''), +(1, 'G019', 'Affections hépatiques sévères et affections du pancréas', 'GHM', 7, '', '', ''), +(1, 'G020', 'Autres affections hépatiques, voies biliaires', 'GHM', 7, '', '', ''), +(1, 'G021', 'Symptômes digestifs', 'GHM', 7, '', '', ''), +(1, 'G022', 'Endoscopies digestives avec ou sans anesthésie', 'GHM', 7, '', '', ''), +(1, 'G023', 'Explorations et surveillance pour affections de l''appareil digestif, du système hépatobiliaire et du pancréas', 'GHM', 7, '', '', ''), +(1, 'G024', 'Chirurgies majeures orthopédiques (dont hanche et fémur genou)', 'GHM', 7, '', '', ''), +(1, 'G025', 'Arthroscopies, Biopsies ostéo-articulaires', 'GHM', 7, '', '', ''), +(1, 'G026', 'Chirurgie Fractures, entorses, luxations, tractions', 'GHM', 7, '', '', ''), +(1, 'G027', 'Ablations matériel', 'GHM', 7, '', '', ''), +(1, 'G028', 'Amputations', 'GHM', 7, '', '', ''), +(1, 'G029', 'Chirurgies main, poignet', 'GHM', 7, '', '', ''), +(1, 'G030', 'Chirurgie pour Ostéomyélites aigües (y compris vertébrales) et arthrites septiques', 'GHM', 7, '', '', ''), +(1, 'G031', 'Chirurgie de la jambe', 'GHM', 7, '', '', ''), +(1, 'G032', 'Chirurgie de la cheville ou du pied', 'GHM', 7, '', '', ''), +(1, 'G033', 'Chirurgie du membre supérieur (hors prothèses)', 'GHM', 7, '', '', ''), +(1, 'G034', 'Chirurgie des tissus mous', 'GHM', 7, '', '', ''), +(1, 'G035', 'Interventions sur le tissu mou pour tumeurs malignes', 'GHM', 7, '', '', ''), +(1, 'G036', 'Traumatismes du bassin et des membres', 'GHM', 7, '', '', ''), +(1, 'G037', 'Polytraumatismes graves', 'GHM', 7, '', '', ''), +(1, 'G038', 'Prise en charge médicale des tumeurs de l''appareil musculosquelettique, du tissu conjonctif et fractures pathologiques', 'GHM', 7, '', '', ''), +(1, 'G039', 'Maladies osseuses et arthropathies', 'GHM', 7, '', '', ''), +(1, 'G040', 'Autres affections rhumatologiques', 'GHM', 7, '', '', ''), +(1, 'G041', 'Chirurgies rachis/moelle', 'GHM', 7, '', '', ''), +(1, 'G042', 'Explorations et surveillance de l''appareil musculosquelettique et du tissu conjonctif', 'GHM', 7, '', '', ''), +(1, 'G043', 'Chirurgies SNC trauma', 'GHM', 7, '', '', ''), +(1, 'G044', 'Chirurgies SNC hors trauma (rachis et moelle exceptés)', 'GHM', 7, '', '', ''), +(1, 'G045', 'Pose stimulateur cérébral / médullaire', 'GHM', 7, '', '', ''), +(1, 'G046', 'Trauma crâniens', 'GHM', 7, '', '', ''), +(1, 'G047', 'Affections dégénératives du système nerveux', 'GHM', 7, '', '', ''), +(1, 'G048', 'Affections nerfs crâniens / moëlle', 'GHM', 7, '', '', ''), +(1, 'G049', 'AVC', 'GHM', 7, '', '', ''), +(1, 'G050', 'Comas non traumatiques', 'GHM', 7, '', '', ''), +(1, 'G051', 'Migraines et céphalées', 'GHM', 7, '', '', ''), +(1, 'G052', 'Convulsions, épilepsie', 'GHM', 7, '', '', ''), +(1, 'G053', 'Infections SNC', 'GHM', 7, '', '', ''), +(1, 'G054', 'Prise en charge médicale des tumeurs système nerveux', 'GHM', 7, '', '', ''), +(1, 'G055', 'Autres affections du système nerveux', 'GHM', 7, '', '', ''), +(1, 'G056', 'Explorations et surveillance pour affections du système nerveux', 'GHM', 7, '', '', ''), +(1, 'G057', 'Cathétérismes thérapeutiques vasculaires et coronariens avec endoprothèse ou prothèses cardiaques', 'GHM', 7, '', '', ''), +(1, 'G058', 'Cathétérismes thérapeutiques vasculaires et coronariens sans endoprothèse', 'GHM', 7, '', '', ''), +(1, 'G059', 'Cathéthérismes diagnostiques vasculaires et coronariens', 'GHM', 7, '', '', ''), +(1, 'G060', 'Cathétérisme thérapeutiques vasculaires du système nerveux', 'GHM', 7, '', '', ''), +(1, 'G061', 'Chirurgies valvulaires', 'GHM', 7, '', '', ''), +(1, 'G062', 'Pontages coronaires', 'GHM', 7, '', '', ''), +(1, 'G063', 'Chirurgie cardiaque, autres', 'GHM', 7, '', '', ''), +(1, 'G064', 'Stimulateurs / défibrillateurs cardiaques', 'GHM', 7, '', '', ''), +(1, 'G065', 'Cardiopathies, valvulopathies', 'GHM', 7, '', '', ''), +(1, 'G066', 'Coronaropathies', 'GHM', 7, '', '', ''), +(1, 'G067', 'Endocardites', 'GHM', 7, '', '', ''), +(1, 'G068', 'Hypertension artérielle', 'GHM', 7, '', '', ''), +(1, 'G069', 'Troubles du rythme/conduction', 'GHM', 7, '', '', ''), +(1, 'G070', 'Cardiologie autres', 'GHM', 7, '', '', ''), +(1, 'G071', 'Explorations et surveillance pour affections de l''appareil circulatoire', 'GHM', 7, '', '', ''), +(1, 'G072', 'Chirurgies majeures revascularisation', 'GHM', 7, '', '', ''), +(1, 'G073', 'Ligatures veines', 'GHM', 7, '', '', ''), +(1, 'G074', 'Autres chirurgies vasculaires', 'GHM', 7, '', '', ''), +(1, 'G075', 'Phlébites, varices et autres troubles vasculaires d''origine veineuse', 'GHM', 7, '', '', ''), +(1, 'G076', 'Chirurgies thoraciques majeures', 'GHM', 7, '', '', ''), +(1, 'G077', 'Autres chirurgies thoraciques', 'GHM', 7, '', '', ''), +(1, 'G078', 'Bronchites, bronchiolites et asthme', 'GHM', 7, '', '', ''), +(1, 'G079', 'Embolies pulmonaires et détresses respiratoires', 'GHM', 7, '', '', ''), +(1, 'G080', 'Infections respiratoires', 'GHM', 7, '', '', ''), +(1, 'G081', 'Prise en charge médicale des tumeurs de l''appareil respiratoire', 'GHM', 7, '', '', ''), +(1, 'G082', 'Affections respiratoires, autres', 'GHM', 7, '', '', ''), +(1, 'G083', 'Explorations et surveillance pour affections de l''appareil respiratoire', 'GHM', 7, '', '', ''), +(1, 'G084', 'Endoscopies bronchiques, avec ou sans anesthésie', 'GHM', 7, '', '', ''), +(1, 'G085', 'Chirurgies ORL majeures', 'GHM', 7, '', '', ''), +(1, 'G086', 'Chirurgie de l''oreille', 'GHM', 7, '', '', ''), +(1, 'G087', 'Amygdalectomies, VG, drains transT', 'GHM', 7, '', '', ''), +(1, 'G088', 'Autres chirurgies ORL', 'GHM', 7, '', '', ''), +(1, 'G089', 'Chirurgie de la bouche', 'GHM', 7, '', '', ''), +(1, 'G090', 'Affections Cavité buccale et dents', 'GHM', 7, '', '', ''), +(1, 'G091', 'Infections ORL', 'GHM', 7, '', '', ''), +(1, 'G092', 'Prise en charge médicale des tumeurs malignes ORL, Stomato', 'GHM', 7, '', '', ''), +(1, 'G093', 'Pathologies ORL et Stomato autres', 'GHM', 7, '', '', ''), +(1, 'G094', 'Explorations et surveillance pour affections ORL', 'GHM', 7, '', '', ''), +(1, 'G095', 'Endoscopies ORL, avec ou sans anesthésie', 'GHM', 7, '', '', ''), +(1, 'G096', 'Chirurgies ophtalmo lourdes', 'GHM', 7, '', '', ''), +(1, 'G097', 'Cataractes', 'GHM', 7, '', '', ''), +(1, 'G098', 'Allogreffes de cornées', 'GHM', 7, '', '', ''), +(1, 'G099', 'Autres chirurgies ophtalmo', 'GHM', 7, '', '', ''), +(1, 'G100', 'Affections oeil', 'GHM', 7, '', '', ''), +(1, 'G101', 'Infections oeil', 'GHM', 7, '', '', ''), +(1, 'G102', 'Explorations et surveillance pour affections de l''oeil', 'GHM', 7, '', '', ''), +(1, 'G103', 'Chirurgie pour tumeurs malignes (app génital fem)', 'GHM', 7, '', '', ''), +(1, 'G104', 'Chirurgies pelviennes majeures (app gen feminin)', 'GHM', 7, '', '', ''), +(1, 'G105', 'Chirurgies utérus / annexes', 'GHM', 7, '', '', ''), +(1, 'G106', 'Autres chirurgies gynécologiques autres que le sein', 'GHM', 7, '', '', ''), +(1, 'G107', 'Chirurgie pour tumeurs malignes sein', 'GHM', 7, '', '', ''), +(1, 'G108', 'Chirurgie du sein hors TM', 'GHM', 7, '', '', ''), +(1, 'G109', 'Prise en charge médicale des tumeurs de l''appareil génital féminin', 'GHM', 7, '', '', ''), +(1, 'G110', 'Autres affections appareil génital féminin', 'GHM', 7, '', '', ''), +(1, 'G111', 'AMP', 'GHM', 7, '', '', ''), +(1, 'G112', 'Infections gynécologiques d''organes autres que le sein', 'GHM', 7, '', '', ''), +(1, 'G113', 'Affections des seins', 'GHM', 7, '', '', ''), +(1, 'G114', 'Prise en charge médicale des tumeurs des seins', 'GHM', 7, '', '', ''), +(1, 'G115', 'Explorations et surveillance gynécologiques et des affections des seins', 'GHM', 7, '', '', ''), +(1, 'G116', 'Accouchements par voie basse', 'GHM', 7, '', '', ''), +(1, 'G117', 'Césariennes', 'GHM', 7, '', '', ''), +(1, 'G118', 'IVG', 'GHM', 7, '', '', ''), +(1, 'G119', 'Affections de ante partum', 'GHM', 7, '', '', ''), +(1, 'G120', 'Affections du post partum', 'GHM', 7, '', '', ''), +(1, 'G121', 'Interruptions médicale de grossesse', 'GHM', 7, '', '', ''), +(1, 'G122', 'Chirurgie du nouveau né', 'GHM', 7, '', '', ''), +(1, 'G123', 'Transferts précoces de nouveau nés', 'GHM', 7, '', '', ''), +(1, 'G124', 'Afections médicales du nouveau né', 'GHM', 7, '', '', ''), +(1, 'G125', 'Décès de nouveau nés', 'GHM', 7, '', '', ''), +(1, 'G126', 'Chirurgies reins, uretères, vessie, glandes surrénales', 'GHM', 7, '', '', ''), +(1, 'G127', 'Chirurgies transurétrales, autres', 'GHM', 7, '', '', ''), +(1, 'G128', 'Chirurgies appareil génital masculin', 'GHM', 7, '', '', ''), +(1, 'G129', 'Circoncisions', 'GHM', 7, '', '', ''), +(1, 'G130', 'Chirurgies pelviennes majeures (urologie)', 'GHM', 7, '', '', ''), +(1, 'G131', 'Chirurgie des tumeurs appareil génital masculin', 'GHM', 7, '', '', ''), +(1, 'G132', 'Prise en charge médicale des tumeurs reins et voies urinaires', 'GHM', 7, '', '', ''), +(1, 'G133', 'Infections reins et voies urinaires, lithiases', 'GHM', 7, '', '', ''), +(1, 'G134', 'Autres affections reins, voies urinaires', 'GHM', 7, '', '', ''), +(1, 'G135', 'Explorations et surveillance pour affections du rein et des voies urinaires', 'GHM', 7, '', '', ''), +(1, 'G136', 'Infections appareil génital masculin', 'GHM', 7, '', '', ''), +(1, 'G137', 'Prise en charge médicale des tumeurs de l''appareil génital masculin', 'GHM', 7, '', '', ''), +(1, 'G138', 'Autres affections appareil génital masculin', 'GHM', 7, '', '', ''), +(1, 'G139', 'Explorations et surveillance des affections de l''appareil génital masculin', 'GHM', 7, '', '', ''), +(1, 'G140', 'Endoscopies génito-urinaires, avec ou sans anesthésie', 'GHM', 7, '', '', ''), +(1, 'G141', 'Chirurgie au cours des tumeurs malignes (hématologie)', 'GHM', 7, '', '', ''), +(1, 'G142', 'Greffes de cellules souches hématopoïétiques', 'GHM', 7, '', '', ''), +(1, 'G143', 'Donneurs de moëlle', 'GHM', 7, '', '', ''), +(1, 'G144', 'Affections hématologiques malignes', 'GHM', 7, '', '', ''), +(1, 'G145', 'Autres Maladies immunitaires, du Sang, des Organes hématopoïétiques, Tumeurs siège imprécis ou diffus', 'GHM', 7, '', '', ''), +(1, 'G146', 'Explorations et surveillance pour affections du sang et des organes hématopoïétiques', 'GHM', 7, '', '', ''), +(1, 'G147', 'Explorations et surveillance pour affections myéloprolifératives et tumeurs de siège imprécis ou diffus', 'GHM', 7, '', '', ''), +(1, 'G148', 'Chimiothérapie hors séances', 'GHM', 7, '', '', ''), +(1, 'G149', 'Radiothérapie hors séances', 'GHM', 7, '', '', ''), +(1, 'G150', 'Chimiothérapie non tumorale hors séances', 'GHM', 7, '', '', ''), +(1, 'G151', 'Maladies virales et fièvres d''origine inconnue', 'GHM', 7, '', '', ''), +(1, 'G152', 'Septicémies', 'GHM', 7, '', '', ''), +(1, 'G153', 'Maladies infectieuses ou parasitaires hors septicémies et maladies virales', 'GHM', 7, '', '', ''), +(1, 'G154', 'Décès secondaire à une maladie infectieuse: séjours de moins de 2 jours', 'GHM', 7, '', '', ''), +(1, 'G155', 'Explorations et surveillance pour maladies infectieuses ou parasitaires', 'GHM', 7, '', '', ''), +(1, 'G156', 'Maladies VIH', 'GHM', 7, '', '', ''), +(1, 'G157', 'Chirurgie des parathyroides, du tractus thyréoglosse, endocrinologie', 'GHM', 7, '', '', ''), +(1, 'G158', 'Chirurgie de la thyroide', 'GHM', 7, '', '', ''), +(1, 'G159', 'Diabète', 'GHM', 7, '', '', ''), +(1, 'G160', 'Maladies endocriniennes hors diabète', 'GHM', 7, '', '', ''), +(1, 'G161', 'Troubles métaboliques, nutritionnels et obésité', 'GHM', 7, '', '', ''), +(1, 'G162', 'Explorations et surveillance pour affections endocriniennes, troubles métaboliques, nutritionnels et obésité', 'GHM', 7, '', '', ''), +(1, 'G163', 'Greffes peau / parages hors brûlures', 'GHM', 7, '', '', ''), +(1, 'G164', 'Intervention peau et tissu sous-cutané', 'GHM', 7, '', '', ''), +(1, 'G165', 'Affections peau et tissu sous-cutané', 'GHM', 7, '', '', ''), +(1, 'G166', 'Infections peau et tissu sous-cutané', 'GHM', 7, '', '', ''), +(1, 'G167', 'Prise en charge médicale des tumeurs de la peau et tissu sous-cutané', 'GHM', 7, '', '', ''), +(1, 'G168', 'Explorations et surveillance des affections de la peau', 'GHM', 7, '', '', ''), +(1, 'G169', 'Brûlures sans acte opératoire classant', 'GHM', 7, '', '', ''), +(1, 'G170', 'Troubles mentaux d''origine organique et retards mentaux', 'GHM', 7, '', '', ''), +(1, 'G171', 'Névroses, psychoses et autres troubles mentaux', 'GHM', 7, '', '', ''), +(1, 'G172', 'Explorations et surveillance pour maladies et troubles mentaux', 'GHM', 7, '', '', ''), +(1, 'G173', 'Toxicomanies et alcoolisme', 'GHM', 7, '', '', ''), +(1, 'G174', 'Allergies', 'GHM', 7, '', '', ''), +(1, 'G175', 'Iatrogénie, intox médicamenteuses et chimiques', 'GHM', 7, '', '', ''), +(1, 'G176', 'Soins palliatifs', 'GHM', 7, '', '', ''), +(1, 'G177', 'Douleurs chroniques', 'GHM', 7, '', '', ''), +(1, 'G178', 'Transplantations d''organes', 'GHM', 7, '', '', ''), +(1, 'G179', 'Chirurgie inter spécialités', 'GHM', 7, '', '', ''), +(1, 'G180', 'Chirurgie esthétique et de confort', 'GHM', 7, '', '', ''), +(1, 'G181', 'Médecine inter spécialités', 'GHM', 7, '', '', ''), +(1, 'G182', 'Allergologie', 'GHM', 7, '', '', ''), +(1, 'G183', 'Explorations nocturnes et apparentées', 'GHM', 7, '', '', ''), +(1, 'G184', 'Suivi thérap.d''affections connues', 'GHM', 7, '', '', ''), +(1, 'G185', 'Explorations et surveillance pour autres motifs de recours aux soins', 'GHM', 7, '', '', ''), +(1, 'G186', 'Rééducation - Convalescence', 'GHM', 7, '', '', ''), +(1, 'G187', 'Séances : dialyse', 'GHM', 7, '', '', ''), +(1, 'G188', 'Séances : transfusion', 'GHM', 7, '', '', ''), +(1, 'G189', 'Séances : radiothérapie', 'GHM', 7, '', '', ''), +(1, 'G190', 'Séances : chimiothérapie', 'GHM', 7, '', '', ''), +(1, 'G191', 'Séances : chimiothérapie non tumorale', 'GHM', 7, '', '', ''), +(1, 'G192', 'Séances : caisson hyperbare', 'GHM', 7, '', '', ''), +(1, 'G193', 'Séances : aphérèse sanguine', 'GHM', 7, '', '', ''), +(1, 'G194', 'Signes et symptômes', 'GHM', 7, '', '', ''), +(1, 'G195', 'Mort-nés', 'GHM', 7, '', '', ''), +(1, 'G196', 'Injections de toxine botulique, en ambulatoire', 'GHM', 7, '', '', ''), +(1, 'G197', 'Affections du système nerveux sans acte opératoire avec anesthésie, en ambulatoire', 'GHM', 7, '', '', ''), +(1, 'G198', 'Affections cardiovasculaires sans acte opératoire de la CMD 05, avec anesthésie, en ambulatoire', 'GHM', 7, '', '', ''), +(1, 'G199', 'Mise en place d''accès vasculaire', 'GHM', 7, '', '', ''), +(1, 'G200', 'Varices avec acte autre que ligature et éveinage, en ambulatoire', 'GHM', 7, '', '', ''), +(1, 'G201', 'Affections de l''appareil génital féminin sans acte opératoire de la CMD 13, avec anesthésie, en ambulatoire', 'GHM', 7, '', '', ''), +(1, 'G202', 'Insuffisance rénale, avec dialyse', 'GHM', 7, '', '', ''), +(1, 'G203', 'Autres séj. sans acte, avec anesthésie, en ambulatoire (Aff. myéloP., peau, sein..)', 'GHM', 7, '', '', ''), +(1, 'G204', 'Brûlures chirurgie', 'GHM', 7, '', '', ''), +(1, 'G205', 'Séjours pour douleurs chroniques rebelles comprenant un bloc ou une infiltration, en ambulatoire', 'GHM', 7, '', '', ''), +(1, 'G206', 'Traumatismes, allergies et empoisonnements sans acte opératoire, avec anesthésie, en ambulatoire', 'GHM', 7, '', '', ''), +(1, 'G207', 'Actes ORL et stomato divers', 'GHM', 7, '', '', ''), +(1, 'G208', 'Lithotritie extracorporelle de l''appareil urinaire, en ambulatoire', 'GHM', 7, '', '', ''), +(1, 'G209', 'Séjours comprenant une biopsie prostatique, en ambulatoire', 'GHM', 7, '', '', ''), +(1, 'G210', 'Traumatismes du rachis', 'GHM', 7, '', '', ''), +(1, 'G211', 'Ostéomyélites aigües (y compris vertébrales) et arthrites septiques', 'GHM', 7, '', '', ''), +(1, 'G212', 'Affections endocriniennes et problèmes alimentaires du nouveau né et du nourisson', 'GHM', 7, '', '', ''), +(1, 'G213', 'Endoscopies digestives thérapeutiques et anesthésie : séjours de moins de 2 jours', 'GHM', 7, '', '', ''), +(1, 'G214', 'Affections digestives sans acte opératoire de la CMD 06, avec anesthésie, en ambulatoire', 'GHM', 7, '', '', ''), +(1, 'G215', 'Brûlures sans acte opératoire, avec anesthésie, en ambulatoire', 'GHM', 7, '', '', ''), +(1, 'G216', 'Polytraumatismes graves', 'GHM', 7, '', '', ''), +(1, 'G217', 'Activité interventionnelle en Hépato-Gastro-Entérologie', 'GHM', 7, '', '', ''), +(1, 'G999', 'Séjours en Erreur', 'GHM', 7, '', '', ''), +(1, 'C01', 'Transplant. d''organes (hors greffes de moelle & cornée)', 'GHM', 8, '', '', ''), +(1, 'C02', 'Chirurgie du rachis, Neuro-chirurgie', 'GHM', 8, '', '', ''), +(1, 'C03', 'Neurostimulateurs', 'GHM', 8, '', '', ''), +(1, 'C04', 'Chir. cardio-thoracique (hors transplant. d''organe), Pontages aorto-coronariens', 'GHM', 8, '', '', ''), +(1, 'C05', 'Chir. majeure sur le thorax, l''app. respiratoire, interventions sous thoracoscopie', 'GHM', 8, '', '', ''), +(1, 'C06', 'Chir. Digestive majeure : oesophage, estomac, grêle, côlon, rectum', 'GHM', 8, '', '', ''), +(1, 'C07', 'Chir. Viscérale autre : rate, grêle, colon, proctologie, hernies', 'GHM', 8, '', '', ''), +(1, 'C08', 'Chir. hépato-biliaire et pancréatique', 'GHM', 8, '', '', ''), +(1, 'C09', 'Chir. majeure de l''app. Locomoteur: hanche, fémur, genou, épaule', 'GHM', 8, '', '', ''), +(1, 'C10', 'Arthroscopies, Biopsies ostéo-articulaires', 'GHM', 8, '', '', ''), +(1, 'C11', 'Chirurgies autres de l''appareil locomoteur, amputations', 'GHM', 8, '', '', ''), +(1, 'C12', 'Traumatismes multiples graves', 'GHM', 8, '', '', ''), +(1, 'C13', 'Stimulateurs, Défibrillateurs cardiaques', 'GHM', 8, '', '', ''), +(1, 'C14', 'Chirurgie vasculaire', 'GHM', 8, '', '', ''), +(1, 'C15', 'Chirurgie ORL stomato', 'GHM', 8, '', '', ''), +(1, 'C16', 'Chirurgie Ophtalmologique et greffe de cornée', 'GHM', 8, '', '', ''), +(1, 'C17', 'Chirurgie Gynécologique', 'GHM', 8, '', '', ''), +(1, 'C18', 'Chirurgie du sein', 'GHM', 8, '', '', ''), +(1, 'C19', 'Chirurgie Urologique', 'GHM', 8, '', '', ''), +(1, 'C20', 'Chirurgie de l''appareil génital masculin', 'GHM', 8, '', '', ''), +(1, 'C21', 'Chir. pour Aff. des Org. Hématopoiétiques, Lymphomes, Leucémies, Tumeurs SID', 'GHM', 8, '', '', ''), +(1, 'C22', 'Chirurgie de la Thyroide, Parathyroide, du Tractus Thyréoglosse, endocrinologie', 'GHM', 8, '', '', ''), +(1, 'C23', 'Parages de plaies, Greffes de peau, des Tissus S/C', 'GHM', 8, '', '', ''), +(1, 'C24', 'Chirurgie pour brûlures', 'GHM', 8, '', '', ''), +(1, 'C25', 'Chirurgie inter spécialités', 'GHM', 8, '', '', ''), +(1, 'K01', 'Hépato-Gastro-Entérologie, sans acte opératoire, avec anesthésie', 'GHM', 8, '', '', ''), +(1, 'K02', 'Endoscopies digestives et biliaires avec ou sans anesthésie', 'GHM', 8, '', '', ''), +(1, 'K03', 'Neurologie médicale avec Acte classant non opératoire, ou anesthésie', 'GHM', 8, '', '', ''), +(1, 'K04', 'Aff. Cardio-vasculaire avec Acte classant non opératoire, ou anesthésie', 'GHM', 8, '', '', ''), +(1, 'K05', 'Cathétérismes vasculaires diagnostiques et interventionnels', 'GHM', 8, '', '', ''), +(1, 'K06', 'Mise en place d''accès vasculaire', 'GHM', 8, '', '', ''), +(1, 'K07', 'Endoscopies bronchiques, avec ou sans anesthésie', 'GHM', 8, '', '', ''), +(1, 'K08', 'Traumatologie avec acte classant non opératoire ou anesthésie', 'GHM', 8, '', '', ''), +(1, 'K09', 'ORL Stomato avec Acte classant non opératoire et endoscopies', 'GHM', 8, '', '', ''), +(1, 'K10', 'Aff. génito-urinaires avec Acte classant non opératoire et endoscopies', 'GHM', 8, '', '', ''), +(1, 'K11', 'Douleur chroniques, avec bloc ou infiltration, en ambulatoire', 'GHM', 8, '', '', ''), +(1, 'K12', 'Explorations nocturnes, séjours de moins de 2 jours', 'GHM', 8, '', '', ''), +(1, 'K13', 'Dialyse (hors Séances)', 'GHM', 8, '', '', ''), +(1, 'K14', 'Radiothérapie (hors séances)', 'GHM', 8, '', '', ''), +(1, 'K15', 'Autres séj. sans acte, avec anesthésie, en ambulatoire (Aff. myéloP., peau, sein...)', 'GHM', 8, '', '', ''), +(1, 'K16', 'Brûlures sans acte opératoire, avec anesthésie, en ambulatoire', 'GHM', 8, '', '', ''), +(1, 'K17', 'Traumatologie avec acte classant non opératoire ou anesthésie', 'GHM', 8, '', '', ''), +(1, 'N01', 'Chirurgie des nouveau-nés, prématurés et de la période périnatale', 'GHM', 8, '', '', ''), +(1, 'N02', 'Aff. médicales des nouveau-nés, prématurés et de la période périnatale', 'GHM', 8, '', '', ''), +(1, 'N03', 'Mort-nés, décès et transferts précoces de nouveau-nés', 'GHM', 8, '', '', ''), +(1, 'O01', 'Accouchements par voie basse', 'GHM', 8, '', '', ''), +(1, 'O02', 'Césariennes', 'GHM', 8, '', '', ''), +(1, 'O03', 'IVG', 'GHM', 8, '', '', ''), +(1, 'O04', 'Obstétrique autre', 'GHM', 8, '', '', ''), +(1, 'S01', 'Dialyse', 'GHM', 8, '', '', ''), +(1, 'S02', 'Chimiothérapie pour tumeur', 'GHM', 8, '', '', ''), +(1, 'S03', 'Chimiothérapie pour aff. Non tumorale', 'GHM', 8, '', '', ''), +(1, 'S04', 'Radiothérapie', 'GHM', 8, '', '', ''), +(1, 'S05', 'Transfusion', 'GHM', 8, '', '', ''), +(1, 'S06', 'Aphérèse', 'GHM', 8, '', '', ''), +(1, 'S07', 'Oxygénothérapie hyperbare, en séances', 'GHM', 8, '', '', ''), +(1, 'X01', 'Greffe de moelle, Auto et Allogreffes de cellules souches', 'GHM', 8, '', '', ''), +(1, 'X02', 'Hépato-Gastro-Entérologie', 'GHM', 8, '', '', ''), +(1, 'X03', 'Neurologie médicale', 'GHM', 8, '', '', ''), +(1, 'X04', 'Commotions cérébrales, Traumatismes crâniens', 'GHM', 8, '', '', ''), +(1, 'X05', 'Traumatologie et ablation de matériel de l''appareil locomoteur', 'GHM', 8, '', '', ''), +(1, 'X06', 'Rhumatologie', 'GHM', 8, '', '', ''), +(1, 'X07', 'Affections Cardio-vasculaires', 'GHM', 8, '', '', ''), +(1, 'X08', 'Pneumologie', 'GHM', 8, '', '', ''), +(1, 'X09', 'ORL, Stomato', 'GHM', 8, '', '', ''), +(1, 'X10', 'Ophtalmologie', 'GHM', 8, '', '', ''), +(1, 'X11', 'Gynécologie, Sénologie (hors Obstétrique)', 'GHM', 8, '', '', ''), +(1, 'X12', 'Uro-Néphrologie médicale (hors Séances)', 'GHM', 8, '', '', ''), +(1, 'X13', 'Appareil génital masculin', 'GHM', 8, '', '', ''), +(1, 'X14', 'Maladies immunitaires, du Sang, des Organes hématopoïétiques, Tumeurs SID', 'GHM', 8, '', '', ''), +(1, 'X15', 'Diabète, Maladies métaboliques, Endocrinologie (hors complications)', 'GHM', 8, '', '', ''), +(1, 'X16', 'Affections et traumatismes de la peau, gelures', 'GHM', 8, '', '', ''), +(1, 'X17', 'Brûlures', 'GHM', 8, '', '', ''), +(1, 'X18', 'Suivi thérap. d''affections connues, Allergologie, Rééducation, Convalescence', 'GHM', 8, '', '', ''), +(1, 'X19', 'Fièvre, Infection, Septicémie, VIH', 'GHM', 8, '', '', ''), +(1, 'X20', 'Psychiatrie', 'GHM', 8, '', '', ''), +(1, 'X21', 'Effets nocifs, alcool, toxicologie, allergies', 'GHM', 8, '', '', ''), +(1, 'X22', 'Douleur et soins palliatifs', 'GHM', 8, '', '', ''), +(1, 'X23', 'Chimiothérapie (hors séances)', 'GHM', 8, '', '', ''), +(1, 'X24', 'Médecine inter spécialités, Autres symptômes ou motifs médicaux', 'GHM', 8, '', '', ''), +(1, 'X25', 'Traumatismes multiples graves', 'GHM', 8, '', '', ''), +(1, 'X26', 'Chirurgie esthétique et de confort', 'GHM', 8, '', '', ''), +(1, 'Z99', 'Séjours en Erreur', 'GHM', 8, '', '', ''), +(1, 'D01', 'Digestif', 'GHM', 9, '', '', ''), +(1, 'D02', 'Orthopédie traumatologie', 'GHM', 9, '', '', ''), +(1, 'D03', 'Traumatismes multiples ou complexes graves', 'GHM', 9, '', '', ''), +(1, 'D04', 'Rhumatologie', 'GHM', 9, '', '', ''), +(1, 'D05', 'Système nerveux (hors cathétérismes vasculaires diagnostiques et interventionnels)', 'GHM', 9, '', '', ''), +(1, 'D06', 'Cathétérismes vasculaires diagnostiques et interventionnels', 'GHM', 9, '', '', ''), +(1, 'D07', 'Cardio-vasculaire (hors cathétérismes vasculaires diagnostiques et interventionnels)', 'GHM', 9, '', '', ''), +(1, 'D09', 'Pneumologie', 'GHM', 9, '', '', ''), +(1, 'D10', 'ORL, Stomatologie', 'GHM', 9, '', '', ''), +(1, 'D11', 'Ophtalmologie', 'GHM', 9, '', '', ''), +(1, 'D12', 'Gynécologie - sein', 'GHM', 9, '', '', ''), +(1, 'D13', 'Obstétrique', 'GHM', 9, '', '', ''), +(1, 'D14', 'Nouveau-nés et période périnatale', 'GHM', 9, '', '', ''), +(1, 'D15', 'Uro-néphrologie et génital', 'GHM', 9, '', '', ''), +(1, 'D16', 'Hématologie', 'GHM', 9, '', '', ''), +(1, 'D17', 'Chimiothérapie, radiothérapie, hors séances', 'GHM', 9, '', '', ''), +(1, 'D18', 'Maladies infectieuses (dont VIH)', 'GHM', 9, '', '', ''), +(1, 'D19', 'Endocrinologie', 'GHM', 9, '', '', ''), +(1, 'D20', 'Tissu cutané et tissu sous-cutané', 'GHM', 9, '', '', ''), +(1, 'D21', 'Brûlures', 'GHM', 9, '', '', ''), +(1, 'D22', 'Psychiatrie', 'GHM', 9, '', '', ''), +(1, 'D23', 'Toxicologie, Intoxications, Alcool', 'GHM', 9, '', '', ''), +(1, 'D24', 'Douleurs chroniques, Soins palliatifs', 'GHM', 9, '', '', ''), +(1, 'D25', 'Transplant. d''organes', 'GHM', 9, '', '', ''), +(1, 'D26', 'Activités inter spécialités, suivi thérapeutique d''affections connues', 'GHM', 9, '', '', ''), +(1, 'D27', 'Séances', 'GHM', 9, '', '', ''), +(1, 'D90', 'Séjours en erreur', 'GHM', 9, '', '', ''), +(1, '1', 'Libéraux', 'MEDECIN', 1, '', '', ''), +(1, '2', 'Salariés', 'MEDECIN', 1, '', '', ''), +(1, 'S11', 'T2A. GHS', 'PRESTA_C', 9, '', '', ''), +(1, 'S12', 'T2A. EXH', 'PRESTA_C', 9, '', '', ''), +(1, 'S13', 'T2A. Forfaits et suppléments', 'PRESTA_C', 9, '', '', ''), +(1, 'S19', 'T2A. Autres', 'PRESTA_C', 9, '', '', ''), +(1, 'S2', 'DMI', 'PRESTA_C', 9, '', '', ''), +(1, 'S3', 'PHC', 'PRESTA_C', 9, '', '', ''), +(1, 'S1', 'CA Soins.', 'RUBRIQUE', 4, '', '', '[CLASSE:CTI_RUB_2:S01][CLASSE:CTI_RUB_2:S02][CLASSE:CTI_RUB_2:S03][CLASSE:CTI_RUB_2:S04][CLASSE:CTI_RUB_2:S05][CLASSE:CTI_RUB_2:S06]'), +(1, 'S2', 'CA Hotellerie', 'RUBRIQUE', 4, '', '', '[CLASSE:CTI_RUB_2:S11][CLASSE:CTI_RUB_2:S12]'), +(1, 'S3', 'CA UCD / DMI', 'RUBRIQUE', 4, '', '', '[CLASSE:CTI_RUB_2:S21][CLASSE:CTI_RUB_2:S22]'), +(1, 'S8', 'Médecins salariés', 'RUBRIQUE', 4, '', '', '[CLASSE:CTI_RUB_2:S81]'), +(1, 'S9', 'Aucune facturation clinique', 'RUBRIQUE', 4, '', '', '[CLASSE:CTI_RUB_2:S91]'), +(1, 'S01', 'Séjours', 'RUBRIQUE', 31, '', '', ''), +(1, 'S02', 'Forfaits : Suppléments', 'RUBRIQUE', 31, '', '', ''), +(1, 'S03', 'Forfaits : SE', 'RUBRIQUE', 31, '', '', ''), +(1, 'S04', 'Forfaits : ATU', 'RUBRIQUE', 31, '', '', ''), +(1, 'S05', 'Forfaits : Esthétique', 'RUBRIQUE', 31, '', '', ''), +(1, 'S06', 'Forfaits : Externes et divers', 'RUBRIQUE', 31, '', '', ''), +(1, 'S11', 'Chambres particulières', 'RUBRIQUE', 31, '', '', ''), +(1, 'S12', 'Suppléments hoteliers', 'RUBRIQUE', 31, '', '', ''), +(1, 'S21', 'UCD', 'RUBRIQUE', 31, '', '', ''), +(1, 'S22', 'DMI', 'RUBRIQUE', 31, '', '', ''), +(1, 'S81', 'Médecins salariés', 'RUBRIQUE', 31, '', '', ''), +(1, 'S91', 'Aucune facturation clinique', 'RUBRIQUE', 31, '', '', '') +; + +-- 3/3 : Màj de la table iCTI +-- Implémentation oids +ALTER TABLE w_dbsetup ADD COLUMN table_id bigint DEFAULT 0 +; +UPDATE w_dbsetup +SET table_id = t_listes_tables.oid +FROM activite.t_listes_tables +WHERE table_code = t_listes_tables.code +; +ALTER TABLE w_dbsetup ADD COLUMN classe_id bigint DEFAULT 0 +; +UPDATE w_dbsetup +SET classe_id = t_classes.oid +FROM activite.t_classes +WHERE w_dbsetup.classe_sequence = t_classes.sequence AND + w_dbsetup.table_id = t_classes.table_id +; + + +-- Sections à supprimer -> Sections CTI non-livrées +-- La classe CTI_SPE_BUDG est créée et aliméntée lors de l'import activité et n'est pas livrée +DROP TABLE IF EXISTS w_del_sections +; +CREATE TEMP TABLE w_del_sections as ( + SELECT oid FROM activite.t_classes_sections + WHERE classe_id IN ( + SELECT + t_classes.oid + FROM activite.t_classes + WHERE 1=1 + AND is_cti = '1' + AND t_classes.code <> 'CTI_SPE_BUDG' + ) +); + +DELETE FROM activite.t_classes_sections_elements +WHERE section_id IN (SELECT oid FROM w_del_sections); + + +DELETE FROM activite.t_classes_sections +USING +( +SELECT t_classes_sections.classe_id, t_classes_sections.oid +FROM activite.t_classes_sections +LEFT JOIN w_dbsetup ON + w_dbsetup.classe_id = t_classes_sections.classe_id AND + w_dbsetup.code = t_classes_sections.code +WHERE w_dbsetup.oid IS NULL AND + t_classes_sections.classe_id IN (SELECT classe_id FROM w_dbsetup) AND + t_classes_sections.oid NOT IN (SELECT section_id FROM activite.t_classes_sections_elements) +) subview +WHERE subview.classe_id = t_classes_sections.classe_id AND + subview.oid = t_classes_sections.oid +; + +-- Mise à jour +UPDATE activite.t_classes_sections SET + texte = w_dbsetup.texte, + condition = w_dbsetup.condition, + exclude_code = w_dbsetup.exclude_code, + include_code = w_dbsetup.include_code +FROM w_dbsetup +WHERE w_dbsetup.classe_id = t_classes_sections.classe_id AND + w_dbsetup.code = t_classes_sections.code AND + ( + t_classes_sections.texte IS DISTINCT FROM w_dbsetup.texte OR + t_classes_sections.condition IS DISTINCT FROM w_dbsetup.condition OR + t_classes_sections.exclude_code IS DISTINCT FROM w_dbsetup.exclude_code OR + t_classes_sections.include_code IS DISTINCT FROM w_dbsetup.include_code + ) +; + +INSERT INTO activite.t_classes_sections(code, texte, classe_id, condition, exclude_code, include_code) +SELECT + w_dbsetup.code, + w_dbsetup.texte, + w_dbsetup.classe_id, + w_dbsetup.condition, + w_dbsetup.exclude_code, + w_dbsetup.include_code +FROM w_dbsetup +WHERE w_dbsetup.classe_id > 0 AND + (w_dbsetup.code||'@'||w_dbsetup.classe_id::text) + NOT IN (SELECT t_classes_sections.code||'@'||t_classes_sections.classe_id FROM activite.t_classes_sections) +; \ No newline at end of file diff --git a/db/data/dbdata_activite_t_classes_sections_elements_ages.SQL b/db/data/dbdata_activite_t_classes_sections_elements_ages.SQL new file mode 100644 index 0000000..56029a5 --- /dev/null +++ b/db/data/dbdata_activite_t_classes_sections_elements_ages.SQL @@ -0,0 +1,178 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + t_classes_sections.code AS section_code, + t_ages.code as to_code, + t_listes_tables.code as table_code, + t_classes.sequence as classe_sequence + FROM + activite.t_classes_sections_elements, + activite.t_classes_sections, + activite.t_classes, + activite.t_listes_tables, + base.t_ages + WHERE 1=1 + AND t_classes_sections_elements.section_id = t_classes_sections.oid + AND t_classes_sections.classe_id = t_classes.oid + AND t_classes.is_cti = '1' + AND table_id = t_listes_tables.oid + AND t_listes_tables.code = 'AGE' + AND t_classes_sections_elements.to_id = t_ages.oid + ORDER BY t_classes.sequence, t_classes_sections.code, t_ages.code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + section_code, + to_code, + table_code, + classe_sequence +) +VALUES +('T01', '000', 'AGE', 9), +('T02', '001', 'AGE', 9), +('T02', '002', 'AGE', 9), +('T02', '003', 'AGE', 9), +('T02', '004', 'AGE', 9), +('T02', '005', 'AGE', 9), +('T03', '006', 'AGE', 9), +('T03', '007', 'AGE', 9), +('T03', '008', 'AGE', 9), +('T03', '009', 'AGE', 9), +('T03', '010', 'AGE', 9), +('T03', '011', 'AGE', 9), +('T03', '012', 'AGE', 9), +('T04', '013', 'AGE', 9), +('T04', '014', 'AGE', 9), +('T04', '015', 'AGE', 9), +('T04', '016', 'AGE', 9), +('T04', '017', 'AGE', 9), +('T04', '018', 'AGE', 9), +('T04', '019', 'AGE', 9), +('T04', '020', 'AGE', 9), +('T05', '021', 'AGE', 9), +('T05', '022', 'AGE', 9), +('T05', '023', 'AGE', 9), +('T05', '024', 'AGE', 9), +('T05', '025', 'AGE', 9), +('T05', '026', 'AGE', 9), +('T05', '027', 'AGE', 9), +('T05', '028', 'AGE', 9), +('T05', '029', 'AGE', 9), +('T05', '030', 'AGE', 9), +('T06', '031', 'AGE', 9), +('T06', '032', 'AGE', 9), +('T06', '033', 'AGE', 9), +('T06', '034', 'AGE', 9), +('T06', '035', 'AGE', 9), +('T06', '036', 'AGE', 9), +('T06', '037', 'AGE', 9), +('T06', '038', 'AGE', 9), +('T06', '039', 'AGE', 9), +('T06', '040', 'AGE', 9), +('T07', '041', 'AGE', 9), +('T07', '042', 'AGE', 9), +('T07', '043', 'AGE', 9), +('T07', '044', 'AGE', 9), +('T07', '045', 'AGE', 9), +('T07', '046', 'AGE', 9), +('T07', '047', 'AGE', 9), +('T07', '048', 'AGE', 9), +('T07', '049', 'AGE', 9), +('T07', '050', 'AGE', 9), +('T08', '051', 'AGE', 9), +('T08', '052', 'AGE', 9), +('T08', '053', 'AGE', 9), +('T08', '054', 'AGE', 9), +('T08', '055', 'AGE', 9), +('T08', '056', 'AGE', 9), +('T08', '057', 'AGE', 9), +('T08', '058', 'AGE', 9), +('T08', '059', 'AGE', 9), +('T08', '060', 'AGE', 9), +('T09', '061', 'AGE', 9), +('T09', '062', 'AGE', 9), +('T09', '063', 'AGE', 9), +('T09', '064', 'AGE', 9), +('T09', '065', 'AGE', 9), +('T09', '066', 'AGE', 9), +('T09', '067', 'AGE', 9), +('T09', '068', 'AGE', 9), +('T09', '069', 'AGE', 9), +('T09', '070', 'AGE', 9), +('T10', '071', 'AGE', 9), +('T10', '072', 'AGE', 9), +('T10', '073', 'AGE', 9), +('T10', '074', 'AGE', 9), +('T10', '075', 'AGE', 9), +('T10', '076', 'AGE', 9), +('T10', '077', 'AGE', 9), +('T10', '078', 'AGE', 9), +('T10', '079', 'AGE', 9), +('T10', '080', 'AGE', 9), +('T11', '081', 'AGE', 9), +('T11', '082', 'AGE', 9), +('T11', '083', 'AGE', 9), +('T11', '084', 'AGE', 9), +('T11', '085', 'AGE', 9), +('T11', '086', 'AGE', 9), +('T11', '087', 'AGE', 9), +('T11', '088', 'AGE', 9), +('T11', '089', 'AGE', 9), +('T11', '090', 'AGE', 9), +('T11', '091', 'AGE', 9), +('T11', '092', 'AGE', 9), +('T11', '093', 'AGE', 9), +('T11', '094', 'AGE', 9), +('T11', '095', 'AGE', 9), +('T11', '096', 'AGE', 9), +('T11', '097', 'AGE', 9), +('T11', '098', 'AGE', 9), +('T11', '099', 'AGE', 9), +('T11', '100', 'AGE', 9), +('T11', '101', 'AGE', 9), +('T11', '102', 'AGE', 9), +('T11', '103', 'AGE', 9), +('T11', '104', 'AGE', 9), +('T11', '105', 'AGE', 9), +('T11', '106', 'AGE', 9), +('T11', '107', 'AGE', 9), +('T11', '108', 'AGE', 9), +('T11', '109', 'AGE', 9), +('T11', '110', 'AGE', 9), +('T11', '111', 'AGE', 9), +('T11', '112', 'AGE', 9), +('T11', '113', 'AGE', 9), +('T11', '114', 'AGE', 9), +('T11', '115', 'AGE', 9), +('T11', '116', 'AGE', 9), +('T11', '117', 'AGE', 9), +('T11', '118', 'AGE', 9), +('T11', '119', 'AGE', 9), +('T11', '120', 'AGE', 9) +; + +-- 3/3 : Màj de la table iCTI +INSERT INTO activite.t_classes_sections_elements(section_id, to_id) +SELECT + t_classes_sections.oid, + t_ages.oid +FROM + w_dbsetup, + activite.t_listes_tables, + activite.t_classes, + activite.t_classes_sections, + base.t_ages +WHERE + w_dbsetup.table_code = t_listes_tables.code + AND t_classes.table_id = t_listes_tables.oid + AND t_classes_sections.classe_id = t_classes.oid + AND w_dbsetup.section_code = t_classes_sections.code + AND w_dbsetup.classe_sequence = t_classes.sequence + AND w_dbsetup.to_code = t_ages.code + AND t_classes_sections.oid::text || '-' || t_ages.oid::text NOT IN (SELECT section_id::text || '-' || to_id::text FROM activite.t_classes_sections_elements); + +SELECT * FROM activite.cti_update_schema_classes('AGE'); \ No newline at end of file diff --git a/db/data/dbdata_activite_t_classes_sections_elements_duree_sejour.SQL b/db/data/dbdata_activite_t_classes_sections_elements_duree_sejour.SQL new file mode 100644 index 0000000..91b5f36 --- /dev/null +++ b/db/data/dbdata_activite_t_classes_sections_elements_duree_sejour.SQL @@ -0,0 +1,10058 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + t_classes_sections.code AS section_code, + t_durees_sejour.code as to_code, + t_listes_tables.code as table_code, + t_classes.sequence as classe_sequence + FROM + activite.t_classes_sections_elements, + activite.t_classes_sections, + activite.t_classes, + activite.t_listes_tables, + base.t_durees_sejour + WHERE + t_classes_sections_elements.section_id = t_classes_sections.oid + AND t_classes_sections.classe_id = t_classes.oid + AND t_classes.is_cti = '1' + AND table_id = t_listes_tables.oid + AND t_listes_tables.code = 'DURSEJ' + AND t_classes_sections_elements.to_id = t_durees_sejour.oid + ORDER BY t_classes.sequence, t_classes_sections.code, t_durees_sejour.code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + section_code, + to_code, + table_code, + classe_sequence +) +VALUES +('S1', '0000', 'DURSEJ', 9), +('S2', '0001', 'DURSEJ', 9), +('S3', '0002', 'DURSEJ', 9), +('S3', '0003', 'DURSEJ', 9), +('S3', '0004', 'DURSEJ', 9), +('S3', '0005', 'DURSEJ', 9), +('S4', '0006', 'DURSEJ', 9), +('S4', '0007', 'DURSEJ', 9), +('S4', '0008', 'DURSEJ', 9), +('S4', '0009', 'DURSEJ', 9), +('S4', '0010', 'DURSEJ', 9), +('S5', '0011', 'DURSEJ', 9), +('S5', '0012', 'DURSEJ', 9), +('S5', '0013', 'DURSEJ', 9), +('S5', '0014', 'DURSEJ', 9), +('S5', '0015', 'DURSEJ', 9), +('S5', '0016', 'DURSEJ', 9), +('S5', '0017', 'DURSEJ', 9), +('S5', '0018', 'DURSEJ', 9), +('S5', '0019', 'DURSEJ', 9), +('S5', '0020', 'DURSEJ', 9), +('S6', '0021', 'DURSEJ', 9), +('S6', '0022', 'DURSEJ', 9), +('S6', '0023', 'DURSEJ', 9), +('S6', '0024', 'DURSEJ', 9), +('S6', '0025', 'DURSEJ', 9), +('S6', '0026', 'DURSEJ', 9), +('S6', '0027', 'DURSEJ', 9), +('S6', '0028', 'DURSEJ', 9), +('S6', '0029', 'DURSEJ', 9), +('S6', '0030', 'DURSEJ', 9), +('S7', '0031', 'DURSEJ', 9), +('S7', '0032', 'DURSEJ', 9), +('S7', '0033', 'DURSEJ', 9), +('S7', '0034', 'DURSEJ', 9), +('S7', '0035', 'DURSEJ', 9), +('S7', '0036', 'DURSEJ', 9), +('S7', '0037', 'DURSEJ', 9), +('S7', '0038', 'DURSEJ', 9), +('S7', '0039', 'DURSEJ', 9), +('S7', '0040', 'DURSEJ', 9), +('S7', '0041', 'DURSEJ', 9), +('S7', '0042', 'DURSEJ', 9), +('S7', '0043', 'DURSEJ', 9), +('S7', '0044', 'DURSEJ', 9), +('S7', '0045', 'DURSEJ', 9), +('S7', '0046', 'DURSEJ', 9), +('S7', '0047', 'DURSEJ', 9), +('S7', '0048', 'DURSEJ', 9), +('S7', '0049', 'DURSEJ', 9), +('S7', '0050', 'DURSEJ', 9), +('S7', '0051', 'DURSEJ', 9), +('S7', '0052', 'DURSEJ', 9), +('S7', '0053', 'DURSEJ', 9), +('S7', '0054', 'DURSEJ', 9), +('S7', '0055', 'DURSEJ', 9), +('S7', '0056', 'DURSEJ', 9), +('S7', '0057', 'DURSEJ', 9), +('S7', '0058', 'DURSEJ', 9), +('S7', '0059', 'DURSEJ', 9), +('S7', '0060', 'DURSEJ', 9), +('S7', '0061', 'DURSEJ', 9), +('S7', '0062', 'DURSEJ', 9), +('S7', '0063', 'DURSEJ', 9), +('S7', '0064', 'DURSEJ', 9), +('S7', '0065', 'DURSEJ', 9), +('S7', '0066', 'DURSEJ', 9), +('S7', '0067', 'DURSEJ', 9), +('S7', '0068', 'DURSEJ', 9), +('S7', '0069', 'DURSEJ', 9), +('S7', '0070', 'DURSEJ', 9), +('S7', '0071', 'DURSEJ', 9), +('S7', '0072', 'DURSEJ', 9), +('S7', '0073', 'DURSEJ', 9), +('S7', '0074', 'DURSEJ', 9), +('S7', '0075', 'DURSEJ', 9), +('S7', '0076', 'DURSEJ', 9), +('S7', '0077', 'DURSEJ', 9), +('S7', '0078', 'DURSEJ', 9), +('S7', '0079', 'DURSEJ', 9), +('S7', '0080', 'DURSEJ', 9), +('S7', '0081', 'DURSEJ', 9), +('S7', '0082', 'DURSEJ', 9), +('S7', '0083', 'DURSEJ', 9), +('S7', '0084', 'DURSEJ', 9), +('S7', '0085', 'DURSEJ', 9), +('S7', '0086', 'DURSEJ', 9), +('S7', '0087', 'DURSEJ', 9), +('S7', '0088', 'DURSEJ', 9), +('S7', '0089', 'DURSEJ', 9), +('S7', '0090', 'DURSEJ', 9), +('S7', '0091', 'DURSEJ', 9), +('S7', '0092', 'DURSEJ', 9), +('S7', '0093', 'DURSEJ', 9), +('S7', '0094', 'DURSEJ', 9), +('S7', '0095', 'DURSEJ', 9), +('S7', '0096', 'DURSEJ', 9), +('S7', '0097', 'DURSEJ', 9), +('S7', '0098', 'DURSEJ', 9), +('S7', '0099', 'DURSEJ', 9), +('S7', '0100', 'DURSEJ', 9), +('S8', '0101', 'DURSEJ', 9), +('S8', '0102', 'DURSEJ', 9), +('S8', '0103', 'DURSEJ', 9), +('S8', '0104', 'DURSEJ', 9), +('S8', '0105', 'DURSEJ', 9), +('S8', '0106', 'DURSEJ', 9), +('S8', '0107', 'DURSEJ', 9), +('S8', '0108', 'DURSEJ', 9), +('S8', '0109', 'DURSEJ', 9), +('S8', '0110', 'DURSEJ', 9), +('S8', '0111', 'DURSEJ', 9), +('S8', '0112', 'DURSEJ', 9), +('S8', '0113', 'DURSEJ', 9), +('S8', '0114', 'DURSEJ', 9), +('S8', '0115', 'DURSEJ', 9), +('S8', '0116', 'DURSEJ', 9), +('S8', '0117', 'DURSEJ', 9), +('S8', '0118', 'DURSEJ', 9), +('S8', '0119', 'DURSEJ', 9), +('S8', '0120', 'DURSEJ', 9), +('S8', '0121', 'DURSEJ', 9), +('S8', '0122', 'DURSEJ', 9), +('S8', '0123', 'DURSEJ', 9), +('S8', '0124', 'DURSEJ', 9), +('S8', '0125', 'DURSEJ', 9), +('S8', '0126', 'DURSEJ', 9), +('S8', '0127', 'DURSEJ', 9), +('S8', '0128', 'DURSEJ', 9), +('S8', '0129', 'DURSEJ', 9), +('S8', '0130', 'DURSEJ', 9), +('S8', '0131', 'DURSEJ', 9), +('S8', '0132', 'DURSEJ', 9), +('S8', '0133', 'DURSEJ', 9), +('S8', '0134', 'DURSEJ', 9), +('S8', '0135', 'DURSEJ', 9), +('S8', '0136', 'DURSEJ', 9), +('S8', '0137', 'DURSEJ', 9), +('S8', '0138', 'DURSEJ', 9), +('S8', '0139', 'DURSEJ', 9), +('S8', '0140', 'DURSEJ', 9), +('S8', '0141', 'DURSEJ', 9), +('S8', '0142', 'DURSEJ', 9), +('S8', '0143', 'DURSEJ', 9), +('S8', '0144', 'DURSEJ', 9), +('S8', '0145', 'DURSEJ', 9), +('S8', '0146', 'DURSEJ', 9), +('S8', '0147', 'DURSEJ', 9), +('S8', '0148', 'DURSEJ', 9), +('S8', '0149', 'DURSEJ', 9), +('S8', '0150', 'DURSEJ', 9), +('S8', '0151', 'DURSEJ', 9), +('S8', '0152', 'DURSEJ', 9), +('S8', '0153', 'DURSEJ', 9), +('S8', '0154', 'DURSEJ', 9), +('S8', '0155', 'DURSEJ', 9), +('S8', '0156', 'DURSEJ', 9), +('S8', '0157', 'DURSEJ', 9), +('S8', '0158', 'DURSEJ', 9), +('S8', '0159', 'DURSEJ', 9), +('S8', '0160', 'DURSEJ', 9), +('S8', '0161', 'DURSEJ', 9), +('S8', '0162', 'DURSEJ', 9), +('S8', '0163', 'DURSEJ', 9), +('S8', '0164', 'DURSEJ', 9), +('S8', '0165', 'DURSEJ', 9), +('S8', '0166', 'DURSEJ', 9), +('S8', '0167', 'DURSEJ', 9), +('S8', '0168', 'DURSEJ', 9), +('S8', '0169', 'DURSEJ', 9), +('S8', '0170', 'DURSEJ', 9), +('S8', '0171', 'DURSEJ', 9), +('S8', '0172', 'DURSEJ', 9), +('S8', '0173', 'DURSEJ', 9), +('S8', '0174', 'DURSEJ', 9), +('S8', '0175', 'DURSEJ', 9), +('S8', '0176', 'DURSEJ', 9), +('S8', '0177', 'DURSEJ', 9), +('S8', '0178', 'DURSEJ', 9), +('S8', '0179', 'DURSEJ', 9), +('S8', '0180', 'DURSEJ', 9), +('S8', '0181', 'DURSEJ', 9), +('S8', '0182', 'DURSEJ', 9), +('S8', '0183', 'DURSEJ', 9), +('S8', '0184', 'DURSEJ', 9), +('S8', '0185', 'DURSEJ', 9), +('S8', '0186', 'DURSEJ', 9), +('S8', '0187', 'DURSEJ', 9), +('S8', '0188', 'DURSEJ', 9), +('S8', '0189', 'DURSEJ', 9), +('S8', '0190', 'DURSEJ', 9), +('S8', '0191', 'DURSEJ', 9), +('S8', '0192', 'DURSEJ', 9), +('S8', '0193', 'DURSEJ', 9), +('S8', '0194', 'DURSEJ', 9), +('S8', '0195', 'DURSEJ', 9), +('S8', '0196', 'DURSEJ', 9), +('S8', '0197', 'DURSEJ', 9), +('S8', '0198', 'DURSEJ', 9), +('S8', '0199', 'DURSEJ', 9), +('S8', '0200', 'DURSEJ', 9), +('S8', '0201', 'DURSEJ', 9), +('S8', '0202', 'DURSEJ', 9), +('S8', '0203', 'DURSEJ', 9), +('S8', '0204', 'DURSEJ', 9), +('S8', '0205', 'DURSEJ', 9), +('S8', '0206', 'DURSEJ', 9), +('S8', '0207', 'DURSEJ', 9), +('S8', '0208', 'DURSEJ', 9), +('S8', '0209', 'DURSEJ', 9), +('S8', '0210', 'DURSEJ', 9), +('S8', '0211', 'DURSEJ', 9), +('S8', '0212', 'DURSEJ', 9), +('S8', '0213', 'DURSEJ', 9), +('S8', '0214', 'DURSEJ', 9), +('S8', '0215', 'DURSEJ', 9), +('S8', '0216', 'DURSEJ', 9), +('S8', '0217', 'DURSEJ', 9), +('S8', '0218', 'DURSEJ', 9), +('S8', '0219', 'DURSEJ', 9), +('S8', '0220', 'DURSEJ', 9), +('S8', '0221', 'DURSEJ', 9), +('S8', '0222', 'DURSEJ', 9), +('S8', '0223', 'DURSEJ', 9), +('S8', '0224', 'DURSEJ', 9), +('S8', '0225', 'DURSEJ', 9), +('S8', '0226', 'DURSEJ', 9), +('S8', '0227', 'DURSEJ', 9), +('S8', '0228', 'DURSEJ', 9), +('S8', '0229', 'DURSEJ', 9), +('S8', '0230', 'DURSEJ', 9), +('S8', '0231', 'DURSEJ', 9), +('S8', '0232', 'DURSEJ', 9), +('S8', '0233', 'DURSEJ', 9), +('S8', '0234', 'DURSEJ', 9), +('S8', '0235', 'DURSEJ', 9), +('S8', '0236', 'DURSEJ', 9), +('S8', '0237', 'DURSEJ', 9), +('S8', '0238', 'DURSEJ', 9), +('S8', '0239', 'DURSEJ', 9), +('S8', '0240', 'DURSEJ', 9), +('S8', '0241', 'DURSEJ', 9), +('S8', '0242', 'DURSEJ', 9), +('S8', '0243', 'DURSEJ', 9), +('S8', '0244', 'DURSEJ', 9), +('S8', '0245', 'DURSEJ', 9), +('S8', '0246', 'DURSEJ', 9), +('S8', '0247', 'DURSEJ', 9), +('S8', '0248', 'DURSEJ', 9), +('S8', '0249', 'DURSEJ', 9), +('S8', '0250', 'DURSEJ', 9), +('S8', '0251', 'DURSEJ', 9), +('S8', '0252', 'DURSEJ', 9), +('S8', '0253', 'DURSEJ', 9), +('S8', '0254', 'DURSEJ', 9), +('S8', '0255', 'DURSEJ', 9), +('S8', '0256', 'DURSEJ', 9), +('S8', '0257', 'DURSEJ', 9), +('S8', '0258', 'DURSEJ', 9), +('S8', '0259', 'DURSEJ', 9), +('S8', '0260', 'DURSEJ', 9), +('S8', '0261', 'DURSEJ', 9), +('S8', '0262', 'DURSEJ', 9), +('S8', '0263', 'DURSEJ', 9), +('S8', '0264', 'DURSEJ', 9), +('S8', '0265', 'DURSEJ', 9), +('S8', '0266', 'DURSEJ', 9), +('S8', '0267', 'DURSEJ', 9), +('S8', '0268', 'DURSEJ', 9), +('S8', '0269', 'DURSEJ', 9), +('S8', '0270', 'DURSEJ', 9), +('S8', '0271', 'DURSEJ', 9), +('S8', '0272', 'DURSEJ', 9), +('S8', '0273', 'DURSEJ', 9), +('S8', '0274', 'DURSEJ', 9), +('S8', '0275', 'DURSEJ', 9), +('S8', '0276', 'DURSEJ', 9), +('S8', '0277', 'DURSEJ', 9), +('S8', '0278', 'DURSEJ', 9), +('S8', '0279', 'DURSEJ', 9), +('S8', '0280', 'DURSEJ', 9), +('S8', '0281', 'DURSEJ', 9), +('S8', '0282', 'DURSEJ', 9), +('S8', '0283', 'DURSEJ', 9), +('S8', '0284', 'DURSEJ', 9), +('S8', '0285', 'DURSEJ', 9), +('S8', '0286', 'DURSEJ', 9), +('S8', '0287', 'DURSEJ', 9), +('S8', '0288', 'DURSEJ', 9), +('S8', '0289', 'DURSEJ', 9), +('S8', '0290', 'DURSEJ', 9), +('S8', '0291', 'DURSEJ', 9), +('S8', '0292', 'DURSEJ', 9), +('S8', '0293', 'DURSEJ', 9), +('S8', '0294', 'DURSEJ', 9), +('S8', '0295', 'DURSEJ', 9), +('S8', '0296', 'DURSEJ', 9), +('S8', '0297', 'DURSEJ', 9), +('S8', '0298', 'DURSEJ', 9), +('S8', '0299', 'DURSEJ', 9), +('S8', '0300', 'DURSEJ', 9), +('S8', '0301', 'DURSEJ', 9), +('S8', '0302', 'DURSEJ', 9), +('S8', '0303', 'DURSEJ', 9), +('S8', '0304', 'DURSEJ', 9), +('S8', '0305', 'DURSEJ', 9), +('S8', '0306', 'DURSEJ', 9), +('S8', '0307', 'DURSEJ', 9), +('S8', '0308', 'DURSEJ', 9), +('S8', '0309', 'DURSEJ', 9), +('S8', '0310', 'DURSEJ', 9), +('S8', '0311', 'DURSEJ', 9), +('S8', '0312', 'DURSEJ', 9), +('S8', '0313', 'DURSEJ', 9), +('S8', '0314', 'DURSEJ', 9), +('S8', '0315', 'DURSEJ', 9), +('S8', '0316', 'DURSEJ', 9), +('S8', '0317', 'DURSEJ', 9), +('S8', '0318', 'DURSEJ', 9), +('S8', '0319', 'DURSEJ', 9), +('S8', '0320', 'DURSEJ', 9), +('S8', '0321', 'DURSEJ', 9), +('S8', '0322', 'DURSEJ', 9), +('S8', '0323', 'DURSEJ', 9), +('S8', '0324', 'DURSEJ', 9), +('S8', '0325', 'DURSEJ', 9), +('S8', '0326', 'DURSEJ', 9), +('S8', '0327', 'DURSEJ', 9), +('S8', '0328', 'DURSEJ', 9), +('S8', '0329', 'DURSEJ', 9), +('S8', '0330', 'DURSEJ', 9), +('S8', '0331', 'DURSEJ', 9), +('S8', '0332', 'DURSEJ', 9), +('S8', '0333', 'DURSEJ', 9), +('S8', '0334', 'DURSEJ', 9), +('S8', '0335', 'DURSEJ', 9), +('S8', '0336', 'DURSEJ', 9), +('S8', '0337', 'DURSEJ', 9), +('S8', '0338', 'DURSEJ', 9), +('S8', '0339', 'DURSEJ', 9), +('S8', '0340', 'DURSEJ', 9), +('S8', '0341', 'DURSEJ', 9), +('S8', '0342', 'DURSEJ', 9), +('S8', '0343', 'DURSEJ', 9), +('S8', '0344', 'DURSEJ', 9), +('S8', '0345', 'DURSEJ', 9), +('S8', '0346', 'DURSEJ', 9), +('S8', '0347', 'DURSEJ', 9), +('S8', '0348', 'DURSEJ', 9), +('S8', '0349', 'DURSEJ', 9), +('S8', '0350', 'DURSEJ', 9), +('S8', '0351', 'DURSEJ', 9), +('S8', '0352', 'DURSEJ', 9), +('S8', '0353', 'DURSEJ', 9), +('S8', '0354', 'DURSEJ', 9), +('S8', '0355', 'DURSEJ', 9), +('S8', '0356', 'DURSEJ', 9), +('S8', '0357', 'DURSEJ', 9), +('S8', '0358', 'DURSEJ', 9), +('S8', '0359', 'DURSEJ', 9), +('S8', '0360', 'DURSEJ', 9), +('S8', '0361', 'DURSEJ', 9), +('S8', '0362', 'DURSEJ', 9), +('S8', '0363', 'DURSEJ', 9), +('S8', '0364', 'DURSEJ', 9), +('S8', '0365', 'DURSEJ', 9), +('S8', '0366', 'DURSEJ', 9), +('S8', '0367', 'DURSEJ', 9), +('S8', '0368', 'DURSEJ', 9), +('S8', '0369', 'DURSEJ', 9), +('S8', '0370', 'DURSEJ', 9), +('S8', '0371', 'DURSEJ', 9), +('S8', '0372', 'DURSEJ', 9), +('S8', '0373', 'DURSEJ', 9), +('S8', '0374', 'DURSEJ', 9), +('S8', '0375', 'DURSEJ', 9), +('S8', '0376', 'DURSEJ', 9), +('S8', '0377', 'DURSEJ', 9), +('S8', '0378', 'DURSEJ', 9), +('S8', '0379', 'DURSEJ', 9), +('S8', '0380', 'DURSEJ', 9), +('S8', '0381', 'DURSEJ', 9), +('S8', '0382', 'DURSEJ', 9), +('S8', '0383', 'DURSEJ', 9), +('S8', '0384', 'DURSEJ', 9), +('S8', '0385', 'DURSEJ', 9), +('S8', '0386', 'DURSEJ', 9), +('S8', '0387', 'DURSEJ', 9), +('S8', '0388', 'DURSEJ', 9), +('S8', '0389', 'DURSEJ', 9), +('S8', '0390', 'DURSEJ', 9), +('S8', '0391', 'DURSEJ', 9), +('S8', '0392', 'DURSEJ', 9), +('S8', '0393', 'DURSEJ', 9), +('S8', '0394', 'DURSEJ', 9), +('S8', '0395', 'DURSEJ', 9), +('S8', '0396', 'DURSEJ', 9), +('S8', '0397', 'DURSEJ', 9), +('S8', '0398', 'DURSEJ', 9), +('S8', '0399', 'DURSEJ', 9), +('S8', '0400', 'DURSEJ', 9), +('S8', '0401', 'DURSEJ', 9), +('S8', '0402', 'DURSEJ', 9), +('S8', '0403', 'DURSEJ', 9), +('S8', '0404', 'DURSEJ', 9), +('S8', '0405', 'DURSEJ', 9), +('S8', '0406', 'DURSEJ', 9), +('S8', '0407', 'DURSEJ', 9), +('S8', '0408', 'DURSEJ', 9), +('S8', '0409', 'DURSEJ', 9), +('S8', '0410', 'DURSEJ', 9), +('S8', '0411', 'DURSEJ', 9), +('S8', '0412', 'DURSEJ', 9), +('S8', '0413', 'DURSEJ', 9), +('S8', '0414', 'DURSEJ', 9), +('S8', '0415', 'DURSEJ', 9), +('S8', '0416', 'DURSEJ', 9), +('S8', '0417', 'DURSEJ', 9), +('S8', '0418', 'DURSEJ', 9), +('S8', '0419', 'DURSEJ', 9), +('S8', '0420', 'DURSEJ', 9), +('S8', '0421', 'DURSEJ', 9), +('S8', '0422', 'DURSEJ', 9), +('S8', '0423', 'DURSEJ', 9), +('S8', '0424', 'DURSEJ', 9), +('S8', '0425', 'DURSEJ', 9), +('S8', '0426', 'DURSEJ', 9), +('S8', '0427', 'DURSEJ', 9), +('S8', '0428', 'DURSEJ', 9), +('S8', '0429', 'DURSEJ', 9), +('S8', '0430', 'DURSEJ', 9), +('S8', '0431', 'DURSEJ', 9), +('S8', '0432', 'DURSEJ', 9), +('S8', '0433', 'DURSEJ', 9), +('S8', '0434', 'DURSEJ', 9), +('S8', '0435', 'DURSEJ', 9), +('S8', '0436', 'DURSEJ', 9), +('S8', '0437', 'DURSEJ', 9), +('S8', '0438', 'DURSEJ', 9), +('S8', '0439', 'DURSEJ', 9), +('S8', '0440', 'DURSEJ', 9), +('S8', '0441', 'DURSEJ', 9), +('S8', '0442', 'DURSEJ', 9), +('S8', '0443', 'DURSEJ', 9), +('S8', '0444', 'DURSEJ', 9), +('S8', '0445', 'DURSEJ', 9), +('S8', '0446', 'DURSEJ', 9), +('S8', '0447', 'DURSEJ', 9), +('S8', '0448', 'DURSEJ', 9), +('S8', '0449', 'DURSEJ', 9), +('S8', '0450', 'DURSEJ', 9), +('S8', '0451', 'DURSEJ', 9), +('S8', '0452', 'DURSEJ', 9), +('S8', '0453', 'DURSEJ', 9), +('S8', '0454', 'DURSEJ', 9), +('S8', '0455', 'DURSEJ', 9), +('S8', '0456', 'DURSEJ', 9), +('S8', '0457', 'DURSEJ', 9), +('S8', '0458', 'DURSEJ', 9), +('S8', '0459', 'DURSEJ', 9), +('S8', '0460', 'DURSEJ', 9), +('S8', '0461', 'DURSEJ', 9), +('S8', '0462', 'DURSEJ', 9), +('S8', '0463', 'DURSEJ', 9), +('S8', '0464', 'DURSEJ', 9), +('S8', '0465', 'DURSEJ', 9), +('S8', '0466', 'DURSEJ', 9), +('S8', '0467', 'DURSEJ', 9), +('S8', '0468', 'DURSEJ', 9), +('S8', '0469', 'DURSEJ', 9), +('S8', '0470', 'DURSEJ', 9), +('S8', '0471', 'DURSEJ', 9), +('S8', '0472', 'DURSEJ', 9), +('S8', '0473', 'DURSEJ', 9), +('S8', '0474', 'DURSEJ', 9), +('S8', '0475', 'DURSEJ', 9), +('S8', '0476', 'DURSEJ', 9), +('S8', '0477', 'DURSEJ', 9), +('S8', '0478', 'DURSEJ', 9), +('S8', '0479', 'DURSEJ', 9), +('S8', '0480', 'DURSEJ', 9), +('S8', '0481', 'DURSEJ', 9), +('S8', '0482', 'DURSEJ', 9), +('S8', '0483', 'DURSEJ', 9), +('S8', '0484', 'DURSEJ', 9), +('S8', '0485', 'DURSEJ', 9), +('S8', '0486', 'DURSEJ', 9), +('S8', '0487', 'DURSEJ', 9), +('S8', '0488', 'DURSEJ', 9), +('S8', '0489', 'DURSEJ', 9), +('S8', '0490', 'DURSEJ', 9), +('S8', '0491', 'DURSEJ', 9), +('S8', '0492', 'DURSEJ', 9), +('S8', '0493', 'DURSEJ', 9), +('S8', '0494', 'DURSEJ', 9), +('S8', '0495', 'DURSEJ', 9), +('S8', '0496', 'DURSEJ', 9), +('S8', '0497', 'DURSEJ', 9), +('S8', '0498', 'DURSEJ', 9), +('S8', '0499', 'DURSEJ', 9), +('S8', '0500', 'DURSEJ', 9), +('S8', '0501', 'DURSEJ', 9), +('S8', '0502', 'DURSEJ', 9), +('S8', '0503', 'DURSEJ', 9), +('S8', '0504', 'DURSEJ', 9), +('S8', '0505', 'DURSEJ', 9), +('S8', '0506', 'DURSEJ', 9), +('S8', '0507', 'DURSEJ', 9), +('S8', '0508', 'DURSEJ', 9), +('S8', '0509', 'DURSEJ', 9), +('S8', '0510', 'DURSEJ', 9), +('S8', '0511', 'DURSEJ', 9), +('S8', '0512', 'DURSEJ', 9), +('S8', '0513', 'DURSEJ', 9), +('S8', '0514', 'DURSEJ', 9), +('S8', '0515', 'DURSEJ', 9), +('S8', '0516', 'DURSEJ', 9), +('S8', '0517', 'DURSEJ', 9), +('S8', '0518', 'DURSEJ', 9), +('S8', '0519', 'DURSEJ', 9), +('S8', '0520', 'DURSEJ', 9), +('S8', '0521', 'DURSEJ', 9), +('S8', '0522', 'DURSEJ', 9), +('S8', '0523', 'DURSEJ', 9), +('S8', '0524', 'DURSEJ', 9), +('S8', '0525', 'DURSEJ', 9), +('S8', '0526', 'DURSEJ', 9), +('S8', '0527', 'DURSEJ', 9), +('S8', '0528', 'DURSEJ', 9), +('S8', '0529', 'DURSEJ', 9), +('S8', '0530', 'DURSEJ', 9), +('S8', '0531', 'DURSEJ', 9), +('S8', '0532', 'DURSEJ', 9), +('S8', '0533', 'DURSEJ', 9), +('S8', '0534', 'DURSEJ', 9), +('S8', '0535', 'DURSEJ', 9), +('S8', '0536', 'DURSEJ', 9), +('S8', '0537', 'DURSEJ', 9), +('S8', '0538', 'DURSEJ', 9), +('S8', '0539', 'DURSEJ', 9), +('S8', '0540', 'DURSEJ', 9), +('S8', '0541', 'DURSEJ', 9), +('S8', '0542', 'DURSEJ', 9), +('S8', '0543', 'DURSEJ', 9), +('S8', '0544', 'DURSEJ', 9), +('S8', '0545', 'DURSEJ', 9), +('S8', '0546', 'DURSEJ', 9), +('S8', '0547', 'DURSEJ', 9), +('S8', '0548', 'DURSEJ', 9), +('S8', '0549', 'DURSEJ', 9), +('S8', '0550', 'DURSEJ', 9), +('S8', '0551', 'DURSEJ', 9), +('S8', '0552', 'DURSEJ', 9), +('S8', '0553', 'DURSEJ', 9), +('S8', '0554', 'DURSEJ', 9), +('S8', '0555', 'DURSEJ', 9), +('S8', '0556', 'DURSEJ', 9), +('S8', '0557', 'DURSEJ', 9), +('S8', '0558', 'DURSEJ', 9), +('S8', '0559', 'DURSEJ', 9), +('S8', '0560', 'DURSEJ', 9), +('S8', '0561', 'DURSEJ', 9), +('S8', '0562', 'DURSEJ', 9), +('S8', '0563', 'DURSEJ', 9), +('S8', '0564', 'DURSEJ', 9), +('S8', '0565', 'DURSEJ', 9), +('S8', '0566', 'DURSEJ', 9), +('S8', '0567', 'DURSEJ', 9), +('S8', '0568', 'DURSEJ', 9), +('S8', '0569', 'DURSEJ', 9), +('S8', '0570', 'DURSEJ', 9), +('S8', '0571', 'DURSEJ', 9), +('S8', '0572', 'DURSEJ', 9), +('S8', '0573', 'DURSEJ', 9), +('S8', '0574', 'DURSEJ', 9), +('S8', '0575', 'DURSEJ', 9), +('S8', '0576', 'DURSEJ', 9), +('S8', '0577', 'DURSEJ', 9), +('S8', '0578', 'DURSEJ', 9), +('S8', '0579', 'DURSEJ', 9), +('S8', '0580', 'DURSEJ', 9), +('S8', '0581', 'DURSEJ', 9), +('S8', '0582', 'DURSEJ', 9), +('S8', '0583', 'DURSEJ', 9), +('S8', '0584', 'DURSEJ', 9), +('S8', '0585', 'DURSEJ', 9), +('S8', '0586', 'DURSEJ', 9), +('S8', '0587', 'DURSEJ', 9), +('S8', '0588', 'DURSEJ', 9), +('S8', '0589', 'DURSEJ', 9), +('S8', '0590', 'DURSEJ', 9), +('S8', '0591', 'DURSEJ', 9), +('S8', '0592', 'DURSEJ', 9), +('S8', '0593', 'DURSEJ', 9), +('S8', '0594', 'DURSEJ', 9), +('S8', '0595', 'DURSEJ', 9), +('S8', '0596', 'DURSEJ', 9), +('S8', '0597', 'DURSEJ', 9), +('S8', '0598', 'DURSEJ', 9), +('S8', '0599', 'DURSEJ', 9), +('S8', '0600', 'DURSEJ', 9), +('S8', '0601', 'DURSEJ', 9), +('S8', '0602', 'DURSEJ', 9), +('S8', '0603', 'DURSEJ', 9), +('S8', '0604', 'DURSEJ', 9), +('S8', '0605', 'DURSEJ', 9), +('S8', '0606', 'DURSEJ', 9), +('S8', '0607', 'DURSEJ', 9), +('S8', '0608', 'DURSEJ', 9), +('S8', '0609', 'DURSEJ', 9), +('S8', '0610', 'DURSEJ', 9), +('S8', '0611', 'DURSEJ', 9), +('S8', '0612', 'DURSEJ', 9), +('S8', '0613', 'DURSEJ', 9), +('S8', '0614', 'DURSEJ', 9), +('S8', '0615', 'DURSEJ', 9), +('S8', '0616', 'DURSEJ', 9), +('S8', '0617', 'DURSEJ', 9), +('S8', '0618', 'DURSEJ', 9), +('S8', '0619', 'DURSEJ', 9), +('S8', '0620', 'DURSEJ', 9), +('S8', '0621', 'DURSEJ', 9), +('S8', '0622', 'DURSEJ', 9), +('S8', '0623', 'DURSEJ', 9), +('S8', '0624', 'DURSEJ', 9), +('S8', '0625', 'DURSEJ', 9), +('S8', '0626', 'DURSEJ', 9), +('S8', '0627', 'DURSEJ', 9), +('S8', '0628', 'DURSEJ', 9), +('S8', '0629', 'DURSEJ', 9), +('S8', '0630', 'DURSEJ', 9), +('S8', '0631', 'DURSEJ', 9), +('S8', '0632', 'DURSEJ', 9), +('S8', '0633', 'DURSEJ', 9), +('S8', '0634', 'DURSEJ', 9), +('S8', '0635', 'DURSEJ', 9), +('S8', '0636', 'DURSEJ', 9), +('S8', '0637', 'DURSEJ', 9), +('S8', '0638', 'DURSEJ', 9), +('S8', '0639', 'DURSEJ', 9), +('S8', '0640', 'DURSEJ', 9), +('S8', '0641', 'DURSEJ', 9), +('S8', '0642', 'DURSEJ', 9), +('S8', '0643', 'DURSEJ', 9), +('S8', '0644', 'DURSEJ', 9), +('S8', '0645', 'DURSEJ', 9), +('S8', '0646', 'DURSEJ', 9), +('S8', '0647', 'DURSEJ', 9), +('S8', '0648', 'DURSEJ', 9), +('S8', '0649', 'DURSEJ', 9), +('S8', '0650', 'DURSEJ', 9), +('S8', '0651', 'DURSEJ', 9), +('S8', '0652', 'DURSEJ', 9), +('S8', '0653', 'DURSEJ', 9), +('S8', '0654', 'DURSEJ', 9), +('S8', '0655', 'DURSEJ', 9), +('S8', '0656', 'DURSEJ', 9), +('S8', '0657', 'DURSEJ', 9), +('S8', '0658', 'DURSEJ', 9), +('S8', '0659', 'DURSEJ', 9), +('S8', '0660', 'DURSEJ', 9), +('S8', '0661', 'DURSEJ', 9), +('S8', '0662', 'DURSEJ', 9), +('S8', '0663', 'DURSEJ', 9), +('S8', '0664', 'DURSEJ', 9), +('S8', '0665', 'DURSEJ', 9), +('S8', '0666', 'DURSEJ', 9), +('S8', '0667', 'DURSEJ', 9), +('S8', '0668', 'DURSEJ', 9), +('S8', '0669', 'DURSEJ', 9), +('S8', '0670', 'DURSEJ', 9), +('S8', '0671', 'DURSEJ', 9), +('S8', '0672', 'DURSEJ', 9), +('S8', '0673', 'DURSEJ', 9), +('S8', '0674', 'DURSEJ', 9), +('S8', '0675', 'DURSEJ', 9), +('S8', '0676', 'DURSEJ', 9), +('S8', '0677', 'DURSEJ', 9), +('S8', '0678', 'DURSEJ', 9), +('S8', '0679', 'DURSEJ', 9), +('S8', '0680', 'DURSEJ', 9), +('S8', '0681', 'DURSEJ', 9), +('S8', '0682', 'DURSEJ', 9), +('S8', '0683', 'DURSEJ', 9), +('S8', '0684', 'DURSEJ', 9), +('S8', '0685', 'DURSEJ', 9), +('S8', '0686', 'DURSEJ', 9), +('S8', '0687', 'DURSEJ', 9), +('S8', '0688', 'DURSEJ', 9), +('S8', '0689', 'DURSEJ', 9), +('S8', '0690', 'DURSEJ', 9), +('S8', '0691', 'DURSEJ', 9), +('S8', '0692', 'DURSEJ', 9), +('S8', '0693', 'DURSEJ', 9), +('S8', '0694', 'DURSEJ', 9), +('S8', '0695', 'DURSEJ', 9), +('S8', '0696', 'DURSEJ', 9), +('S8', '0697', 'DURSEJ', 9), +('S8', '0698', 'DURSEJ', 9), +('S8', '0699', 'DURSEJ', 9), +('S8', '0700', 'DURSEJ', 9), +('S8', '0701', 'DURSEJ', 9), +('S8', '0702', 'DURSEJ', 9), +('S8', '0703', 'DURSEJ', 9), +('S8', '0704', 'DURSEJ', 9), +('S8', '0705', 'DURSEJ', 9), +('S8', '0706', 'DURSEJ', 9), +('S8', '0707', 'DURSEJ', 9), +('S8', '0708', 'DURSEJ', 9), +('S8', '0709', 'DURSEJ', 9), +('S8', '0710', 'DURSEJ', 9), +('S8', '0711', 'DURSEJ', 9), +('S8', '0712', 'DURSEJ', 9), +('S8', '0713', 'DURSEJ', 9), +('S8', '0714', 'DURSEJ', 9), +('S8', '0715', 'DURSEJ', 9), +('S8', '0716', 'DURSEJ', 9), +('S8', '0717', 'DURSEJ', 9), +('S8', '0718', 'DURSEJ', 9), +('S8', '0719', 'DURSEJ', 9), +('S8', '0720', 'DURSEJ', 9), +('S8', '0721', 'DURSEJ', 9), +('S8', '0722', 'DURSEJ', 9), +('S8', '0723', 'DURSEJ', 9), +('S8', '0724', 'DURSEJ', 9), +('S8', '0725', 'DURSEJ', 9), +('S8', '0726', 'DURSEJ', 9), +('S8', '0727', 'DURSEJ', 9), +('S8', '0728', 'DURSEJ', 9), +('S8', '0729', 'DURSEJ', 9), +('S8', '0730', 'DURSEJ', 9), +('S8', '0731', 'DURSEJ', 9), +('S8', '0732', 'DURSEJ', 9), +('S8', '0733', 'DURSEJ', 9), +('S8', '0734', 'DURSEJ', 9), +('S8', '0735', 'DURSEJ', 9), +('S8', '0736', 'DURSEJ', 9), +('S8', '0737', 'DURSEJ', 9), +('S8', '0738', 'DURSEJ', 9), +('S8', '0739', 'DURSEJ', 9), +('S8', '0740', 'DURSEJ', 9), +('S8', '0741', 'DURSEJ', 9), +('S8', '0742', 'DURSEJ', 9), +('S8', '0743', 'DURSEJ', 9), +('S8', '0744', 'DURSEJ', 9), +('S8', '0745', 'DURSEJ', 9), +('S8', '0746', 'DURSEJ', 9), +('S8', '0747', 'DURSEJ', 9), +('S8', '0748', 'DURSEJ', 9), +('S8', '0749', 'DURSEJ', 9), +('S8', '0750', 'DURSEJ', 9), +('S8', '0751', 'DURSEJ', 9), +('S8', '0752', 'DURSEJ', 9), +('S8', '0753', 'DURSEJ', 9), +('S8', '0754', 'DURSEJ', 9), +('S8', '0755', 'DURSEJ', 9), +('S8', '0756', 'DURSEJ', 9), +('S8', '0757', 'DURSEJ', 9), +('S8', '0758', 'DURSEJ', 9), +('S8', '0759', 'DURSEJ', 9), +('S8', '0760', 'DURSEJ', 9), +('S8', '0761', 'DURSEJ', 9), +('S8', '0762', 'DURSEJ', 9), +('S8', '0763', 'DURSEJ', 9), +('S8', '0764', 'DURSEJ', 9), +('S8', '0765', 'DURSEJ', 9), +('S8', '0766', 'DURSEJ', 9), +('S8', '0767', 'DURSEJ', 9), +('S8', '0768', 'DURSEJ', 9), +('S8', '0769', 'DURSEJ', 9), +('S8', '0770', 'DURSEJ', 9), +('S8', '0771', 'DURSEJ', 9), +('S8', '0772', 'DURSEJ', 9), +('S8', '0773', 'DURSEJ', 9), +('S8', '0774', 'DURSEJ', 9), +('S8', '0775', 'DURSEJ', 9), +('S8', '0776', 'DURSEJ', 9), +('S8', '0777', 'DURSEJ', 9), +('S8', '0778', 'DURSEJ', 9), +('S8', '0779', 'DURSEJ', 9), +('S8', '0780', 'DURSEJ', 9), +('S8', '0781', 'DURSEJ', 9), +('S8', '0782', 'DURSEJ', 9), +('S8', '0783', 'DURSEJ', 9), +('S8', '0784', 'DURSEJ', 9), +('S8', '0785', 'DURSEJ', 9), +('S8', '0786', 'DURSEJ', 9), +('S8', '0787', 'DURSEJ', 9), +('S8', '0788', 'DURSEJ', 9), +('S8', '0789', 'DURSEJ', 9), +('S8', '0790', 'DURSEJ', 9), +('S8', '0791', 'DURSEJ', 9), +('S8', '0792', 'DURSEJ', 9), +('S8', '0793', 'DURSEJ', 9), +('S8', '0794', 'DURSEJ', 9), +('S8', '0795', 'DURSEJ', 9), +('S8', '0796', 'DURSEJ', 9), +('S8', '0797', 'DURSEJ', 9), +('S8', '0798', 'DURSEJ', 9), +('S8', '0799', 'DURSEJ', 9), +('S8', '0800', 'DURSEJ', 9), +('S8', '0801', 'DURSEJ', 9), +('S8', '0802', 'DURSEJ', 9), +('S8', '0803', 'DURSEJ', 9), +('S8', '0804', 'DURSEJ', 9), +('S8', '0805', 'DURSEJ', 9), +('S8', '0806', 'DURSEJ', 9), +('S8', '0807', 'DURSEJ', 9), +('S8', '0808', 'DURSEJ', 9), +('S8', '0809', 'DURSEJ', 9), +('S8', '0810', 'DURSEJ', 9), +('S8', '0811', 'DURSEJ', 9), +('S8', '0812', 'DURSEJ', 9), +('S8', '0813', 'DURSEJ', 9), +('S8', '0814', 'DURSEJ', 9), +('S8', '0815', 'DURSEJ', 9), +('S8', '0816', 'DURSEJ', 9), +('S8', '0817', 'DURSEJ', 9), +('S8', '0818', 'DURSEJ', 9), +('S8', '0819', 'DURSEJ', 9), +('S8', '0820', 'DURSEJ', 9), +('S8', '0821', 'DURSEJ', 9), +('S8', '0822', 'DURSEJ', 9), +('S8', '0823', 'DURSEJ', 9), +('S8', '0824', 'DURSEJ', 9), +('S8', '0825', 'DURSEJ', 9), +('S8', '0826', 'DURSEJ', 9), +('S8', '0827', 'DURSEJ', 9), +('S8', '0828', 'DURSEJ', 9), +('S8', '0829', 'DURSEJ', 9), +('S8', '0830', 'DURSEJ', 9), +('S8', '0831', 'DURSEJ', 9), +('S8', '0832', 'DURSEJ', 9), +('S8', '0833', 'DURSEJ', 9), +('S8', '0834', 'DURSEJ', 9), +('S8', '0835', 'DURSEJ', 9), +('S8', '0836', 'DURSEJ', 9), +('S8', '0837', 'DURSEJ', 9), +('S8', '0838', 'DURSEJ', 9), +('S8', '0839', 'DURSEJ', 9), +('S8', '0840', 'DURSEJ', 9), +('S8', '0841', 'DURSEJ', 9), +('S8', '0842', 'DURSEJ', 9), +('S8', '0843', 'DURSEJ', 9), +('S8', '0844', 'DURSEJ', 9), +('S8', '0845', 'DURSEJ', 9), +('S8', '0846', 'DURSEJ', 9), +('S8', '0847', 'DURSEJ', 9), +('S8', '0848', 'DURSEJ', 9), +('S8', '0849', 'DURSEJ', 9), +('S8', '0850', 'DURSEJ', 9), +('S8', '0851', 'DURSEJ', 9), +('S8', '0852', 'DURSEJ', 9), +('S8', '0853', 'DURSEJ', 9), +('S8', '0854', 'DURSEJ', 9), +('S8', '0855', 'DURSEJ', 9), +('S8', '0856', 'DURSEJ', 9), +('S8', '0857', 'DURSEJ', 9), +('S8', '0858', 'DURSEJ', 9), +('S8', '0859', 'DURSEJ', 9), +('S8', '0860', 'DURSEJ', 9), +('S8', '0861', 'DURSEJ', 9), +('S8', '0862', 'DURSEJ', 9), +('S8', '0863', 'DURSEJ', 9), +('S8', '0864', 'DURSEJ', 9), +('S8', '0865', 'DURSEJ', 9), +('S8', '0866', 'DURSEJ', 9), +('S8', '0867', 'DURSEJ', 9), +('S8', '0868', 'DURSEJ', 9), +('S8', '0869', 'DURSEJ', 9), +('S8', '0870', 'DURSEJ', 9), +('S8', '0871', 'DURSEJ', 9), +('S8', '0872', 'DURSEJ', 9), +('S8', '0873', 'DURSEJ', 9), +('S8', '0874', 'DURSEJ', 9), +('S8', '0875', 'DURSEJ', 9), +('S8', '0876', 'DURSEJ', 9), +('S8', '0877', 'DURSEJ', 9), +('S8', '0878', 'DURSEJ', 9), +('S8', '0879', 'DURSEJ', 9), +('S8', '0880', 'DURSEJ', 9), +('S8', '0881', 'DURSEJ', 9), +('S8', '0882', 'DURSEJ', 9), +('S8', '0883', 'DURSEJ', 9), +('S8', '0884', 'DURSEJ', 9), +('S8', '0885', 'DURSEJ', 9), +('S8', '0886', 'DURSEJ', 9), +('S8', '0887', 'DURSEJ', 9), +('S8', '0888', 'DURSEJ', 9), +('S8', '0889', 'DURSEJ', 9), +('S8', '0890', 'DURSEJ', 9), +('S8', '0891', 'DURSEJ', 9), +('S8', '0892', 'DURSEJ', 9), +('S8', '0893', 'DURSEJ', 9), +('S8', '0894', 'DURSEJ', 9), +('S8', '0895', 'DURSEJ', 9), +('S8', '0896', 'DURSEJ', 9), +('S8', '0897', 'DURSEJ', 9), +('S8', '0898', 'DURSEJ', 9), +('S8', '0899', 'DURSEJ', 9), +('S8', '0900', 'DURSEJ', 9), +('S8', '0901', 'DURSEJ', 9), +('S8', '0902', 'DURSEJ', 9), +('S8', '0903', 'DURSEJ', 9), +('S8', '0904', 'DURSEJ', 9), +('S8', '0905', 'DURSEJ', 9), +('S8', '0906', 'DURSEJ', 9), +('S8', '0907', 'DURSEJ', 9), +('S8', '0908', 'DURSEJ', 9), +('S8', '0909', 'DURSEJ', 9), +('S8', '0910', 'DURSEJ', 9), +('S8', '0911', 'DURSEJ', 9), +('S8', '0912', 'DURSEJ', 9), +('S8', '0913', 'DURSEJ', 9), +('S8', '0914', 'DURSEJ', 9), +('S8', '0915', 'DURSEJ', 9), +('S8', '0916', 'DURSEJ', 9), +('S8', '0917', 'DURSEJ', 9), +('S8', '0918', 'DURSEJ', 9), +('S8', '0919', 'DURSEJ', 9), +('S8', '0920', 'DURSEJ', 9), +('S8', '0921', 'DURSEJ', 9), +('S8', '0922', 'DURSEJ', 9), +('S8', '0923', 'DURSEJ', 9), +('S8', '0924', 'DURSEJ', 9), +('S8', '0925', 'DURSEJ', 9), +('S8', '0926', 'DURSEJ', 9), +('S8', '0927', 'DURSEJ', 9), +('S8', '0928', 'DURSEJ', 9), +('S8', '0929', 'DURSEJ', 9), +('S8', '0930', 'DURSEJ', 9), +('S8', '0931', 'DURSEJ', 9), +('S8', '0932', 'DURSEJ', 9), +('S8', '0933', 'DURSEJ', 9), +('S8', '0934', 'DURSEJ', 9), +('S8', '0935', 'DURSEJ', 9), +('S8', '0936', 'DURSEJ', 9), +('S8', '0937', 'DURSEJ', 9), +('S8', '0938', 'DURSEJ', 9), +('S8', '0939', 'DURSEJ', 9), +('S8', '0940', 'DURSEJ', 9), +('S8', '0941', 'DURSEJ', 9), +('S8', '0942', 'DURSEJ', 9), +('S8', '0943', 'DURSEJ', 9), +('S8', '0944', 'DURSEJ', 9), +('S8', '0945', 'DURSEJ', 9), +('S8', '0946', 'DURSEJ', 9), +('S8', '0947', 'DURSEJ', 9), +('S8', '0948', 'DURSEJ', 9), +('S8', '0949', 'DURSEJ', 9), +('S8', '0950', 'DURSEJ', 9), +('S8', '0951', 'DURSEJ', 9), +('S8', '0952', 'DURSEJ', 9), +('S8', '0953', 'DURSEJ', 9), +('S8', '0954', 'DURSEJ', 9), +('S8', '0955', 'DURSEJ', 9), +('S8', '0956', 'DURSEJ', 9), +('S8', '0957', 'DURSEJ', 9), +('S8', '0958', 'DURSEJ', 9), +('S8', '0959', 'DURSEJ', 9), +('S8', '0960', 'DURSEJ', 9), +('S8', '0961', 'DURSEJ', 9), +('S8', '0962', 'DURSEJ', 9), +('S8', '0963', 'DURSEJ', 9), +('S8', '0964', 'DURSEJ', 9), +('S8', '0965', 'DURSEJ', 9), +('S8', '0966', 'DURSEJ', 9), +('S8', '0967', 'DURSEJ', 9), +('S8', '0968', 'DURSEJ', 9), +('S8', '0969', 'DURSEJ', 9), +('S8', '0970', 'DURSEJ', 9), +('S8', '0971', 'DURSEJ', 9), +('S8', '0972', 'DURSEJ', 9), +('S8', '0973', 'DURSEJ', 9), +('S8', '0974', 'DURSEJ', 9), +('S8', '0975', 'DURSEJ', 9), +('S8', '0976', 'DURSEJ', 9), +('S8', '0977', 'DURSEJ', 9), +('S8', '0978', 'DURSEJ', 9), +('S8', '0979', 'DURSEJ', 9), +('S8', '0980', 'DURSEJ', 9), +('S8', '0981', 'DURSEJ', 9), +('S8', '0982', 'DURSEJ', 9), +('S8', '0983', 'DURSEJ', 9), +('S8', '0984', 'DURSEJ', 9), +('S8', '0985', 'DURSEJ', 9), +('S8', '0986', 'DURSEJ', 9), +('S8', '0987', 'DURSEJ', 9), +('S8', '0988', 'DURSEJ', 9), +('S8', '0989', 'DURSEJ', 9), +('S8', '0990', 'DURSEJ', 9), +('S8', '0991', 'DURSEJ', 9), +('S8', '0992', 'DURSEJ', 9), +('S8', '0993', 'DURSEJ', 9), +('S8', '0994', 'DURSEJ', 9), +('S8', '0995', 'DURSEJ', 9), +('S8', '0996', 'DURSEJ', 9), +('S8', '0997', 'DURSEJ', 9), +('S8', '0998', 'DURSEJ', 9), +('S8', '0999', 'DURSEJ', 9), +('S8', '1000', 'DURSEJ', 9), +('S9', '1001', 'DURSEJ', 9), +('S9', '1002', 'DURSEJ', 9), +('S9', '1003', 'DURSEJ', 9), +('S9', '1004', 'DURSEJ', 9), +('S9', '1005', 'DURSEJ', 9), +('S9', '1006', 'DURSEJ', 9), +('S9', '1007', 'DURSEJ', 9), +('S9', '1008', 'DURSEJ', 9), +('S9', '1009', 'DURSEJ', 9), +('S9', '1010', 'DURSEJ', 9), +('S9', '1011', 'DURSEJ', 9), +('S9', '1012', 'DURSEJ', 9), +('S9', '1013', 'DURSEJ', 9), +('S9', '1014', 'DURSEJ', 9), +('S9', '1015', 'DURSEJ', 9), +('S9', '1016', 'DURSEJ', 9), +('S9', '1017', 'DURSEJ', 9), +('S9', '1018', 'DURSEJ', 9), +('S9', '1019', 'DURSEJ', 9), +('S9', '1020', 'DURSEJ', 9), +('S9', '1021', 'DURSEJ', 9), +('S9', '1022', 'DURSEJ', 9), +('S9', '1023', 'DURSEJ', 9), +('S9', '1024', 'DURSEJ', 9), +('S9', '1025', 'DURSEJ', 9), +('S9', '1026', 'DURSEJ', 9), +('S9', '1027', 'DURSEJ', 9), +('S9', '1028', 'DURSEJ', 9), +('S9', '1029', 'DURSEJ', 9), +('S9', '1030', 'DURSEJ', 9), +('S9', '1031', 'DURSEJ', 9), +('S9', '1032', 'DURSEJ', 9), +('S9', '1033', 'DURSEJ', 9), +('S9', '1034', 'DURSEJ', 9), +('S9', '1035', 'DURSEJ', 9), +('S9', '1036', 'DURSEJ', 9), +('S9', '1037', 'DURSEJ', 9), +('S9', '1038', 'DURSEJ', 9), +('S9', '1039', 'DURSEJ', 9), +('S9', '1040', 'DURSEJ', 9), +('S9', '1041', 'DURSEJ', 9), +('S9', '1042', 'DURSEJ', 9), +('S9', '1043', 'DURSEJ', 9), +('S9', '1044', 'DURSEJ', 9), +('S9', '1045', 'DURSEJ', 9), +('S9', '1046', 'DURSEJ', 9), +('S9', '1047', 'DURSEJ', 9), +('S9', '1048', 'DURSEJ', 9), +('S9', '1049', 'DURSEJ', 9), +('S9', '1050', 'DURSEJ', 9), +('S9', '1051', 'DURSEJ', 9), +('S9', '1052', 'DURSEJ', 9), +('S9', '1053', 'DURSEJ', 9), +('S9', '1054', 'DURSEJ', 9), +('S9', '1055', 'DURSEJ', 9), +('S9', '1056', 'DURSEJ', 9), +('S9', '1057', 'DURSEJ', 9), +('S9', '1058', 'DURSEJ', 9), +('S9', '1059', 'DURSEJ', 9), +('S9', '1060', 'DURSEJ', 9), +('S9', '1061', 'DURSEJ', 9), +('S9', '1062', 'DURSEJ', 9), +('S9', '1063', 'DURSEJ', 9), +('S9', '1064', 'DURSEJ', 9), +('S9', '1065', 'DURSEJ', 9), +('S9', '1066', 'DURSEJ', 9), +('S9', '1067', 'DURSEJ', 9), +('S9', '1068', 'DURSEJ', 9), +('S9', '1069', 'DURSEJ', 9), +('S9', '1070', 'DURSEJ', 9), +('S9', '1071', 'DURSEJ', 9), +('S9', '1072', 'DURSEJ', 9), +('S9', '1073', 'DURSEJ', 9), +('S9', '1074', 'DURSEJ', 9), +('S9', '1075', 'DURSEJ', 9), +('S9', '1076', 'DURSEJ', 9), +('S9', '1077', 'DURSEJ', 9), +('S9', '1078', 'DURSEJ', 9), +('S9', '1079', 'DURSEJ', 9), +('S9', '1080', 'DURSEJ', 9), +('S9', '1081', 'DURSEJ', 9), +('S9', '1082', 'DURSEJ', 9), +('S9', '1083', 'DURSEJ', 9), +('S9', '1084', 'DURSEJ', 9), +('S9', '1085', 'DURSEJ', 9), +('S9', '1086', 'DURSEJ', 9), +('S9', '1087', 'DURSEJ', 9), +('S9', '1088', 'DURSEJ', 9), +('S9', '1089', 'DURSEJ', 9), +('S9', '1090', 'DURSEJ', 9), +('S9', '1091', 'DURSEJ', 9), +('S9', '1092', 'DURSEJ', 9), +('S9', '1093', 'DURSEJ', 9), +('S9', '1094', 'DURSEJ', 9), +('S9', '1095', 'DURSEJ', 9), +('S9', '1096', 'DURSEJ', 9), +('S9', '1097', 'DURSEJ', 9), +('S9', '1098', 'DURSEJ', 9), +('S9', '1099', 'DURSEJ', 9), +('S9', '1100', 'DURSEJ', 9), +('S9', '1101', 'DURSEJ', 9), +('S9', '1102', 'DURSEJ', 9), +('S9', '1103', 'DURSEJ', 9), +('S9', '1104', 'DURSEJ', 9), +('S9', '1105', 'DURSEJ', 9), +('S9', '1106', 'DURSEJ', 9), +('S9', '1107', 'DURSEJ', 9), +('S9', '1108', 'DURSEJ', 9), +('S9', '1109', 'DURSEJ', 9), +('S9', '1110', 'DURSEJ', 9), +('S9', '1111', 'DURSEJ', 9), +('S9', '1112', 'DURSEJ', 9), +('S9', '1113', 'DURSEJ', 9), +('S9', '1114', 'DURSEJ', 9), +('S9', '1115', 'DURSEJ', 9), +('S9', '1116', 'DURSEJ', 9), +('S9', '1117', 'DURSEJ', 9), +('S9', '1118', 'DURSEJ', 9), +('S9', '1119', 'DURSEJ', 9), +('S9', '1120', 'DURSEJ', 9), +('S9', '1121', 'DURSEJ', 9), +('S9', '1122', 'DURSEJ', 9), +('S9', '1123', 'DURSEJ', 9), +('S9', '1124', 'DURSEJ', 9), +('S9', '1125', 'DURSEJ', 9), +('S9', '1126', 'DURSEJ', 9), +('S9', '1127', 'DURSEJ', 9), +('S9', '1128', 'DURSEJ', 9), +('S9', '1129', 'DURSEJ', 9), +('S9', '1130', 'DURSEJ', 9), +('S9', '1131', 'DURSEJ', 9), +('S9', '1132', 'DURSEJ', 9), +('S9', '1133', 'DURSEJ', 9), +('S9', '1134', 'DURSEJ', 9), +('S9', '1135', 'DURSEJ', 9), +('S9', '1136', 'DURSEJ', 9), +('S9', '1137', 'DURSEJ', 9), +('S9', '1138', 'DURSEJ', 9), +('S9', '1139', 'DURSEJ', 9), +('S9', '1140', 'DURSEJ', 9), +('S9', '1141', 'DURSEJ', 9), +('S9', '1142', 'DURSEJ', 9), +('S9', '1143', 'DURSEJ', 9), +('S9', '1144', 'DURSEJ', 9), +('S9', '1145', 'DURSEJ', 9), +('S9', '1146', 'DURSEJ', 9), +('S9', '1147', 'DURSEJ', 9), +('S9', '1148', 'DURSEJ', 9), +('S9', '1149', 'DURSEJ', 9), +('S9', '1150', 'DURSEJ', 9), +('S9', '1151', 'DURSEJ', 9), +('S9', '1152', 'DURSEJ', 9), +('S9', '1153', 'DURSEJ', 9), +('S9', '1154', 'DURSEJ', 9), +('S9', '1155', 'DURSEJ', 9), +('S9', '1156', 'DURSEJ', 9), +('S9', '1157', 'DURSEJ', 9), +('S9', '1158', 'DURSEJ', 9), +('S9', '1159', 'DURSEJ', 9), +('S9', '1160', 'DURSEJ', 9), +('S9', '1161', 'DURSEJ', 9), +('S9', '1162', 'DURSEJ', 9), +('S9', '1163', 'DURSEJ', 9), +('S9', '1164', 'DURSEJ', 9), +('S9', '1165', 'DURSEJ', 9), +('S9', '1166', 'DURSEJ', 9), +('S9', '1167', 'DURSEJ', 9), +('S9', '1168', 'DURSEJ', 9), +('S9', '1169', 'DURSEJ', 9), +('S9', '1170', 'DURSEJ', 9), +('S9', '1171', 'DURSEJ', 9), +('S9', '1172', 'DURSEJ', 9), +('S9', '1173', 'DURSEJ', 9), +('S9', '1174', 'DURSEJ', 9), +('S9', '1175', 'DURSEJ', 9), +('S9', '1176', 'DURSEJ', 9), +('S9', '1177', 'DURSEJ', 9), +('S9', '1178', 'DURSEJ', 9), +('S9', '1179', 'DURSEJ', 9), +('S9', '1180', 'DURSEJ', 9), +('S9', '1181', 'DURSEJ', 9), +('S9', '1182', 'DURSEJ', 9), +('S9', '1183', 'DURSEJ', 9), +('S9', '1184', 'DURSEJ', 9), +('S9', '1185', 'DURSEJ', 9), +('S9', '1186', 'DURSEJ', 9), +('S9', '1187', 'DURSEJ', 9), +('S9', '1188', 'DURSEJ', 9), +('S9', '1189', 'DURSEJ', 9), +('S9', '1190', 'DURSEJ', 9), +('S9', '1191', 'DURSEJ', 9), +('S9', '1192', 'DURSEJ', 9), +('S9', '1193', 'DURSEJ', 9), +('S9', '1194', 'DURSEJ', 9), +('S9', '1195', 'DURSEJ', 9), +('S9', '1196', 'DURSEJ', 9), +('S9', '1197', 'DURSEJ', 9), +('S9', '1198', 'DURSEJ', 9), +('S9', '1199', 'DURSEJ', 9), +('S9', '1200', 'DURSEJ', 9), +('S9', '1201', 'DURSEJ', 9), +('S9', '1202', 'DURSEJ', 9), +('S9', '1203', 'DURSEJ', 9), +('S9', '1204', 'DURSEJ', 9), +('S9', '1205', 'DURSEJ', 9), +('S9', '1206', 'DURSEJ', 9), +('S9', '1207', 'DURSEJ', 9), +('S9', '1208', 'DURSEJ', 9), +('S9', '1209', 'DURSEJ', 9), +('S9', '1210', 'DURSEJ', 9), +('S9', '1211', 'DURSEJ', 9), +('S9', '1212', 'DURSEJ', 9), +('S9', '1213', 'DURSEJ', 9), +('S9', '1214', 'DURSEJ', 9), +('S9', '1215', 'DURSEJ', 9), +('S9', '1216', 'DURSEJ', 9), +('S9', '1217', 'DURSEJ', 9), +('S9', '1218', 'DURSEJ', 9), +('S9', '1219', 'DURSEJ', 9), +('S9', '1220', 'DURSEJ', 9), +('S9', '1221', 'DURSEJ', 9), +('S9', '1222', 'DURSEJ', 9), +('S9', '1223', 'DURSEJ', 9), +('S9', '1224', 'DURSEJ', 9), +('S9', '1225', 'DURSEJ', 9), +('S9', '1226', 'DURSEJ', 9), +('S9', '1227', 'DURSEJ', 9), +('S9', '1228', 'DURSEJ', 9), +('S9', '1229', 'DURSEJ', 9), +('S9', '1230', 'DURSEJ', 9), +('S9', '1231', 'DURSEJ', 9), +('S9', '1232', 'DURSEJ', 9), +('S9', '1233', 'DURSEJ', 9), +('S9', '1234', 'DURSEJ', 9), +('S9', '1235', 'DURSEJ', 9), +('S9', '1236', 'DURSEJ', 9), +('S9', '1237', 'DURSEJ', 9), +('S9', '1238', 'DURSEJ', 9), +('S9', '1239', 'DURSEJ', 9), +('S9', '1240', 'DURSEJ', 9), +('S9', '1241', 'DURSEJ', 9), +('S9', '1242', 'DURSEJ', 9), +('S9', '1243', 'DURSEJ', 9), +('S9', '1244', 'DURSEJ', 9), +('S9', '1245', 'DURSEJ', 9), +('S9', '1246', 'DURSEJ', 9), +('S9', '1247', 'DURSEJ', 9), +('S9', '1248', 'DURSEJ', 9), +('S9', '1249', 'DURSEJ', 9), +('S9', '1250', 'DURSEJ', 9), +('S9', '1251', 'DURSEJ', 9), +('S9', '1252', 'DURSEJ', 9), +('S9', '1253', 'DURSEJ', 9), +('S9', '1254', 'DURSEJ', 9), +('S9', '1255', 'DURSEJ', 9), +('S9', '1256', 'DURSEJ', 9), +('S9', '1257', 'DURSEJ', 9), +('S9', '1258', 'DURSEJ', 9), +('S9', '1259', 'DURSEJ', 9), +('S9', '1260', 'DURSEJ', 9), +('S9', '1261', 'DURSEJ', 9), +('S9', '1262', 'DURSEJ', 9), +('S9', '1263', 'DURSEJ', 9), +('S9', '1264', 'DURSEJ', 9), +('S9', '1265', 'DURSEJ', 9), +('S9', '1266', 'DURSEJ', 9), +('S9', '1267', 'DURSEJ', 9), +('S9', '1268', 'DURSEJ', 9), +('S9', '1269', 'DURSEJ', 9), +('S9', '1270', 'DURSEJ', 9), +('S9', '1271', 'DURSEJ', 9), +('S9', '1272', 'DURSEJ', 9), +('S9', '1273', 'DURSEJ', 9), +('S9', '1274', 'DURSEJ', 9), +('S9', '1275', 'DURSEJ', 9), +('S9', '1276', 'DURSEJ', 9), +('S9', '1277', 'DURSEJ', 9), +('S9', '1278', 'DURSEJ', 9), +('S9', '1279', 'DURSEJ', 9), +('S9', '1280', 'DURSEJ', 9), +('S9', '1281', 'DURSEJ', 9), +('S9', '1282', 'DURSEJ', 9), +('S9', '1283', 'DURSEJ', 9), +('S9', '1284', 'DURSEJ', 9), +('S9', '1285', 'DURSEJ', 9), +('S9', '1286', 'DURSEJ', 9), +('S9', '1287', 'DURSEJ', 9), +('S9', '1288', 'DURSEJ', 9), +('S9', '1289', 'DURSEJ', 9), +('S9', '1290', 'DURSEJ', 9), +('S9', '1291', 'DURSEJ', 9), +('S9', '1292', 'DURSEJ', 9), +('S9', '1293', 'DURSEJ', 9), +('S9', '1294', 'DURSEJ', 9), +('S9', '1295', 'DURSEJ', 9), +('S9', '1296', 'DURSEJ', 9), +('S9', '1297', 'DURSEJ', 9), +('S9', '1298', 'DURSEJ', 9), +('S9', '1299', 'DURSEJ', 9), +('S9', '1300', 'DURSEJ', 9), +('S9', '1301', 'DURSEJ', 9), +('S9', '1302', 'DURSEJ', 9), +('S9', '1303', 'DURSEJ', 9), +('S9', '1304', 'DURSEJ', 9), +('S9', '1305', 'DURSEJ', 9), +('S9', '1306', 'DURSEJ', 9), +('S9', '1307', 'DURSEJ', 9), +('S9', '1308', 'DURSEJ', 9), +('S9', '1309', 'DURSEJ', 9), +('S9', '1310', 'DURSEJ', 9), +('S9', '1311', 'DURSEJ', 9), +('S9', '1312', 'DURSEJ', 9), +('S9', '1313', 'DURSEJ', 9), +('S9', '1314', 'DURSEJ', 9), +('S9', '1315', 'DURSEJ', 9), +('S9', '1316', 'DURSEJ', 9), +('S9', '1317', 'DURSEJ', 9), +('S9', '1318', 'DURSEJ', 9), +('S9', '1319', 'DURSEJ', 9), +('S9', '1320', 'DURSEJ', 9), +('S9', '1321', 'DURSEJ', 9), +('S9', '1322', 'DURSEJ', 9), +('S9', '1323', 'DURSEJ', 9), +('S9', '1324', 'DURSEJ', 9), +('S9', '1325', 'DURSEJ', 9), +('S9', '1326', 'DURSEJ', 9), +('S9', '1327', 'DURSEJ', 9), +('S9', '1328', 'DURSEJ', 9), +('S9', '1329', 'DURSEJ', 9), +('S9', '1330', 'DURSEJ', 9), +('S9', '1331', 'DURSEJ', 9), +('S9', '1332', 'DURSEJ', 9), +('S9', '1333', 'DURSEJ', 9), +('S9', '1334', 'DURSEJ', 9), +('S9', '1335', 'DURSEJ', 9), +('S9', '1336', 'DURSEJ', 9), +('S9', '1337', 'DURSEJ', 9), +('S9', '1338', 'DURSEJ', 9), +('S9', '1339', 'DURSEJ', 9), +('S9', '1340', 'DURSEJ', 9), +('S9', '1341', 'DURSEJ', 9), +('S9', '1342', 'DURSEJ', 9), +('S9', '1343', 'DURSEJ', 9), +('S9', '1344', 'DURSEJ', 9), +('S9', '1345', 'DURSEJ', 9), +('S9', '1346', 'DURSEJ', 9), +('S9', '1347', 'DURSEJ', 9), +('S9', '1348', 'DURSEJ', 9), +('S9', '1349', 'DURSEJ', 9), +('S9', '1350', 'DURSEJ', 9), +('S9', '1351', 'DURSEJ', 9), +('S9', '1352', 'DURSEJ', 9), +('S9', '1353', 'DURSEJ', 9), +('S9', '1354', 'DURSEJ', 9), +('S9', '1355', 'DURSEJ', 9), +('S9', '1356', 'DURSEJ', 9), +('S9', '1357', 'DURSEJ', 9), +('S9', '1358', 'DURSEJ', 9), +('S9', '1359', 'DURSEJ', 9), +('S9', '1360', 'DURSEJ', 9), +('S9', '1361', 'DURSEJ', 9), +('S9', '1362', 'DURSEJ', 9), +('S9', '1363', 'DURSEJ', 9), +('S9', '1364', 'DURSEJ', 9), +('S9', '1365', 'DURSEJ', 9), +('S9', '1366', 'DURSEJ', 9), +('S9', '1367', 'DURSEJ', 9), +('S9', '1368', 'DURSEJ', 9), +('S9', '1369', 'DURSEJ', 9), +('S9', '1370', 'DURSEJ', 9), +('S9', '1371', 'DURSEJ', 9), +('S9', '1372', 'DURSEJ', 9), +('S9', '1373', 'DURSEJ', 9), +('S9', '1374', 'DURSEJ', 9), +('S9', '1375', 'DURSEJ', 9), +('S9', '1376', 'DURSEJ', 9), +('S9', '1377', 'DURSEJ', 9), +('S9', '1378', 'DURSEJ', 9), +('S9', '1379', 'DURSEJ', 9), +('S9', '1380', 'DURSEJ', 9), +('S9', '1381', 'DURSEJ', 9), +('S9', '1382', 'DURSEJ', 9), +('S9', '1383', 'DURSEJ', 9), +('S9', '1384', 'DURSEJ', 9), +('S9', '1385', 'DURSEJ', 9), +('S9', '1386', 'DURSEJ', 9), +('S9', '1387', 'DURSEJ', 9), +('S9', '1388', 'DURSEJ', 9), +('S9', '1389', 'DURSEJ', 9), +('S9', '1390', 'DURSEJ', 9), +('S9', '1391', 'DURSEJ', 9), +('S9', '1392', 'DURSEJ', 9), +('S9', '1393', 'DURSEJ', 9), +('S9', '1394', 'DURSEJ', 9), +('S9', '1395', 'DURSEJ', 9), +('S9', '1396', 'DURSEJ', 9), +('S9', '1397', 'DURSEJ', 9), +('S9', '1398', 'DURSEJ', 9), +('S9', '1399', 'DURSEJ', 9), +('S9', '1400', 'DURSEJ', 9), +('S9', '1401', 'DURSEJ', 9), +('S9', '1402', 'DURSEJ', 9), +('S9', '1403', 'DURSEJ', 9), +('S9', '1404', 'DURSEJ', 9), +('S9', '1405', 'DURSEJ', 9), +('S9', '1406', 'DURSEJ', 9), +('S9', '1407', 'DURSEJ', 9), +('S9', '1408', 'DURSEJ', 9), +('S9', '1409', 'DURSEJ', 9), +('S9', '1410', 'DURSEJ', 9), +('S9', '1411', 'DURSEJ', 9), +('S9', '1412', 'DURSEJ', 9), +('S9', '1413', 'DURSEJ', 9), +('S9', '1414', 'DURSEJ', 9), +('S9', '1415', 'DURSEJ', 9), +('S9', '1416', 'DURSEJ', 9), +('S9', '1417', 'DURSEJ', 9), +('S9', '1418', 'DURSEJ', 9), +('S9', '1419', 'DURSEJ', 9), +('S9', '1420', 'DURSEJ', 9), +('S9', '1421', 'DURSEJ', 9), +('S9', '1422', 'DURSEJ', 9), +('S9', '1423', 'DURSEJ', 9), +('S9', '1424', 'DURSEJ', 9), +('S9', '1425', 'DURSEJ', 9), +('S9', '1426', 'DURSEJ', 9), +('S9', '1427', 'DURSEJ', 9), +('S9', '1428', 'DURSEJ', 9), +('S9', '1429', 'DURSEJ', 9), +('S9', '1430', 'DURSEJ', 9), +('S9', '1431', 'DURSEJ', 9), +('S9', '1432', 'DURSEJ', 9), +('S9', '1433', 'DURSEJ', 9), +('S9', '1434', 'DURSEJ', 9), +('S9', '1435', 'DURSEJ', 9), +('S9', '1436', 'DURSEJ', 9), +('S9', '1437', 'DURSEJ', 9), +('S9', '1438', 'DURSEJ', 9), +('S9', '1439', 'DURSEJ', 9), +('S9', '1440', 'DURSEJ', 9), +('S9', '1441', 'DURSEJ', 9), +('S9', '1442', 'DURSEJ', 9), +('S9', '1443', 'DURSEJ', 9), +('S9', '1444', 'DURSEJ', 9), +('S9', '1445', 'DURSEJ', 9), +('S9', '1446', 'DURSEJ', 9), +('S9', '1447', 'DURSEJ', 9), +('S9', '1448', 'DURSEJ', 9), +('S9', '1449', 'DURSEJ', 9), +('S9', '1450', 'DURSEJ', 9), +('S9', '1451', 'DURSEJ', 9), +('S9', '1452', 'DURSEJ', 9), +('S9', '1453', 'DURSEJ', 9), +('S9', '1454', 'DURSEJ', 9), +('S9', '1455', 'DURSEJ', 9), +('S9', '1456', 'DURSEJ', 9), +('S9', '1457', 'DURSEJ', 9), +('S9', '1458', 'DURSEJ', 9), +('S9', '1459', 'DURSEJ', 9), +('S9', '1460', 'DURSEJ', 9), +('S9', '1461', 'DURSEJ', 9), +('S9', '1462', 'DURSEJ', 9), +('S9', '1463', 'DURSEJ', 9), +('S9', '1464', 'DURSEJ', 9), +('S9', '1465', 'DURSEJ', 9), +('S9', '1466', 'DURSEJ', 9), +('S9', '1467', 'DURSEJ', 9), +('S9', '1468', 'DURSEJ', 9), +('S9', '1469', 'DURSEJ', 9), +('S9', '1470', 'DURSEJ', 9), +('S9', '1471', 'DURSEJ', 9), +('S9', '1472', 'DURSEJ', 9), +('S9', '1473', 'DURSEJ', 9), +('S9', '1474', 'DURSEJ', 9), +('S9', '1475', 'DURSEJ', 9), +('S9', '1476', 'DURSEJ', 9), +('S9', '1477', 'DURSEJ', 9), +('S9', '1478', 'DURSEJ', 9), +('S9', '1479', 'DURSEJ', 9), +('S9', '1480', 'DURSEJ', 9), +('S9', '1481', 'DURSEJ', 9), +('S9', '1482', 'DURSEJ', 9), +('S9', '1483', 'DURSEJ', 9), +('S9', '1484', 'DURSEJ', 9), +('S9', '1485', 'DURSEJ', 9), +('S9', '1486', 'DURSEJ', 9), +('S9', '1487', 'DURSEJ', 9), +('S9', '1488', 'DURSEJ', 9), +('S9', '1489', 'DURSEJ', 9), +('S9', '1490', 'DURSEJ', 9), +('S9', '1491', 'DURSEJ', 9), +('S9', '1492', 'DURSEJ', 9), +('S9', '1493', 'DURSEJ', 9), +('S9', '1494', 'DURSEJ', 9), +('S9', '1495', 'DURSEJ', 9), +('S9', '1496', 'DURSEJ', 9), +('S9', '1497', 'DURSEJ', 9), +('S9', '1498', 'DURSEJ', 9), +('S9', '1499', 'DURSEJ', 9), +('S9', '1500', 'DURSEJ', 9), +('S9', '1501', 'DURSEJ', 9), +('S9', '1502', 'DURSEJ', 9), +('S9', '1503', 'DURSEJ', 9), +('S9', '1504', 'DURSEJ', 9), +('S9', '1505', 'DURSEJ', 9), +('S9', '1506', 'DURSEJ', 9), +('S9', '1507', 'DURSEJ', 9), +('S9', '1508', 'DURSEJ', 9), +('S9', '1509', 'DURSEJ', 9), +('S9', '1510', 'DURSEJ', 9), +('S9', '1511', 'DURSEJ', 9), +('S9', '1512', 'DURSEJ', 9), +('S9', '1513', 'DURSEJ', 9), +('S9', '1514', 'DURSEJ', 9), +('S9', '1515', 'DURSEJ', 9), +('S9', '1516', 'DURSEJ', 9), +('S9', '1517', 'DURSEJ', 9), +('S9', '1518', 'DURSEJ', 9), +('S9', '1519', 'DURSEJ', 9), +('S9', '1520', 'DURSEJ', 9), +('S9', '1521', 'DURSEJ', 9), +('S9', '1522', 'DURSEJ', 9), +('S9', '1523', 'DURSEJ', 9), +('S9', '1524', 'DURSEJ', 9), +('S9', '1525', 'DURSEJ', 9), +('S9', '1526', 'DURSEJ', 9), +('S9', '1527', 'DURSEJ', 9), +('S9', '1528', 'DURSEJ', 9), +('S9', '1529', 'DURSEJ', 9), +('S9', '1530', 'DURSEJ', 9), +('S9', '1531', 'DURSEJ', 9), +('S9', '1532', 'DURSEJ', 9), +('S9', '1533', 'DURSEJ', 9), +('S9', '1534', 'DURSEJ', 9), +('S9', '1535', 'DURSEJ', 9), +('S9', '1536', 'DURSEJ', 9), +('S9', '1537', 'DURSEJ', 9), +('S9', '1538', 'DURSEJ', 9), +('S9', '1539', 'DURSEJ', 9), +('S9', '1540', 'DURSEJ', 9), +('S9', '1541', 'DURSEJ', 9), +('S9', '1542', 'DURSEJ', 9), +('S9', '1543', 'DURSEJ', 9), +('S9', '1544', 'DURSEJ', 9), +('S9', '1545', 'DURSEJ', 9), +('S9', '1546', 'DURSEJ', 9), +('S9', '1547', 'DURSEJ', 9), +('S9', '1548', 'DURSEJ', 9), +('S9', '1549', 'DURSEJ', 9), +('S9', '1550', 'DURSEJ', 9), +('S9', '1551', 'DURSEJ', 9), +('S9', '1552', 'DURSEJ', 9), +('S9', '1553', 'DURSEJ', 9), +('S9', '1554', 'DURSEJ', 9), +('S9', '1555', 'DURSEJ', 9), +('S9', '1556', 'DURSEJ', 9), +('S9', '1557', 'DURSEJ', 9), +('S9', '1558', 'DURSEJ', 9), +('S9', '1559', 'DURSEJ', 9), +('S9', '1560', 'DURSEJ', 9), +('S9', '1561', 'DURSEJ', 9), +('S9', '1562', 'DURSEJ', 9), +('S9', '1563', 'DURSEJ', 9), +('S9', '1564', 'DURSEJ', 9), +('S9', '1565', 'DURSEJ', 9), +('S9', '1566', 'DURSEJ', 9), +('S9', '1567', 'DURSEJ', 9), +('S9', '1568', 'DURSEJ', 9), +('S9', '1569', 'DURSEJ', 9), +('S9', '1570', 'DURSEJ', 9), +('S9', '1571', 'DURSEJ', 9), +('S9', '1572', 'DURSEJ', 9), +('S9', '1573', 'DURSEJ', 9), +('S9', '1574', 'DURSEJ', 9), +('S9', '1575', 'DURSEJ', 9), +('S9', '1576', 'DURSEJ', 9), +('S9', '1577', 'DURSEJ', 9), +('S9', '1578', 'DURSEJ', 9), +('S9', '1579', 'DURSEJ', 9), +('S9', '1580', 'DURSEJ', 9), +('S9', '1581', 'DURSEJ', 9), +('S9', '1582', 'DURSEJ', 9), +('S9', '1583', 'DURSEJ', 9), +('S9', '1584', 'DURSEJ', 9), +('S9', '1585', 'DURSEJ', 9), +('S9', '1586', 'DURSEJ', 9), +('S9', '1587', 'DURSEJ', 9), +('S9', '1588', 'DURSEJ', 9), +('S9', '1589', 'DURSEJ', 9), +('S9', '1590', 'DURSEJ', 9), +('S9', '1591', 'DURSEJ', 9), +('S9', '1592', 'DURSEJ', 9), +('S9', '1593', 'DURSEJ', 9), +('S9', '1594', 'DURSEJ', 9), +('S9', '1595', 'DURSEJ', 9), +('S9', '1596', 'DURSEJ', 9), +('S9', '1597', 'DURSEJ', 9), +('S9', '1598', 'DURSEJ', 9), +('S9', '1599', 'DURSEJ', 9), +('S9', '1600', 'DURSEJ', 9), +('S9', '1601', 'DURSEJ', 9), +('S9', '1602', 'DURSEJ', 9), +('S9', '1603', 'DURSEJ', 9), +('S9', '1604', 'DURSEJ', 9), +('S9', '1605', 'DURSEJ', 9), +('S9', '1606', 'DURSEJ', 9), +('S9', '1607', 'DURSEJ', 9), +('S9', '1608', 'DURSEJ', 9), +('S9', '1609', 'DURSEJ', 9), +('S9', '1610', 'DURSEJ', 9), +('S9', '1611', 'DURSEJ', 9), +('S9', '1612', 'DURSEJ', 9), +('S9', '1613', 'DURSEJ', 9), +('S9', '1614', 'DURSEJ', 9), +('S9', '1615', 'DURSEJ', 9), +('S9', '1616', 'DURSEJ', 9), +('S9', '1617', 'DURSEJ', 9), +('S9', '1618', 'DURSEJ', 9), +('S9', '1619', 'DURSEJ', 9), +('S9', '1620', 'DURSEJ', 9), +('S9', '1621', 'DURSEJ', 9), +('S9', '1622', 'DURSEJ', 9), +('S9', '1623', 'DURSEJ', 9), +('S9', '1624', 'DURSEJ', 9), +('S9', '1625', 'DURSEJ', 9), +('S9', '1626', 'DURSEJ', 9), +('S9', '1627', 'DURSEJ', 9), +('S9', '1628', 'DURSEJ', 9), +('S9', '1629', 'DURSEJ', 9), +('S9', '1630', 'DURSEJ', 9), +('S9', '1631', 'DURSEJ', 9), +('S9', '1632', 'DURSEJ', 9), +('S9', '1633', 'DURSEJ', 9), +('S9', '1634', 'DURSEJ', 9), +('S9', '1635', 'DURSEJ', 9), +('S9', '1636', 'DURSEJ', 9), +('S9', '1637', 'DURSEJ', 9), +('S9', '1638', 'DURSEJ', 9), +('S9', '1639', 'DURSEJ', 9), +('S9', '1640', 'DURSEJ', 9), +('S9', '1641', 'DURSEJ', 9), +('S9', '1642', 'DURSEJ', 9), +('S9', '1643', 'DURSEJ', 9), +('S9', '1644', 'DURSEJ', 9), +('S9', '1645', 'DURSEJ', 9), +('S9', '1646', 'DURSEJ', 9), +('S9', '1647', 'DURSEJ', 9), +('S9', '1648', 'DURSEJ', 9), +('S9', '1649', 'DURSEJ', 9), +('S9', '1650', 'DURSEJ', 9), +('S9', '1651', 'DURSEJ', 9), +('S9', '1652', 'DURSEJ', 9), +('S9', '1653', 'DURSEJ', 9), +('S9', '1654', 'DURSEJ', 9), +('S9', '1655', 'DURSEJ', 9), +('S9', '1656', 'DURSEJ', 9), +('S9', '1657', 'DURSEJ', 9), +('S9', '1658', 'DURSEJ', 9), +('S9', '1659', 'DURSEJ', 9), +('S9', '1660', 'DURSEJ', 9), +('S9', '1661', 'DURSEJ', 9), +('S9', '1662', 'DURSEJ', 9), +('S9', '1663', 'DURSEJ', 9), +('S9', '1664', 'DURSEJ', 9), +('S9', '1665', 'DURSEJ', 9), +('S9', '1666', 'DURSEJ', 9), +('S9', '1667', 'DURSEJ', 9), +('S9', '1668', 'DURSEJ', 9), +('S9', '1669', 'DURSEJ', 9), +('S9', '1670', 'DURSEJ', 9), +('S9', '1671', 'DURSEJ', 9), +('S9', '1672', 'DURSEJ', 9), +('S9', '1673', 'DURSEJ', 9), +('S9', '1674', 'DURSEJ', 9), +('S9', '1675', 'DURSEJ', 9), +('S9', '1676', 'DURSEJ', 9), +('S9', '1677', 'DURSEJ', 9), +('S9', '1678', 'DURSEJ', 9), +('S9', '1679', 'DURSEJ', 9), +('S9', '1680', 'DURSEJ', 9), +('S9', '1681', 'DURSEJ', 9), +('S9', '1682', 'DURSEJ', 9), +('S9', '1683', 'DURSEJ', 9), +('S9', '1684', 'DURSEJ', 9), +('S9', '1685', 'DURSEJ', 9), +('S9', '1686', 'DURSEJ', 9), +('S9', '1687', 'DURSEJ', 9), +('S9', '1688', 'DURSEJ', 9), +('S9', '1689', 'DURSEJ', 9), +('S9', '1690', 'DURSEJ', 9), +('S9', '1691', 'DURSEJ', 9), +('S9', '1692', 'DURSEJ', 9), +('S9', '1693', 'DURSEJ', 9), +('S9', '1694', 'DURSEJ', 9), +('S9', '1695', 'DURSEJ', 9), +('S9', '1696', 'DURSEJ', 9), +('S9', '1697', 'DURSEJ', 9), +('S9', '1698', 'DURSEJ', 9), +('S9', '1699', 'DURSEJ', 9), +('S9', '1700', 'DURSEJ', 9), +('S9', '1701', 'DURSEJ', 9), +('S9', '1702', 'DURSEJ', 9), +('S9', '1703', 'DURSEJ', 9), +('S9', '1704', 'DURSEJ', 9), +('S9', '1705', 'DURSEJ', 9), +('S9', '1706', 'DURSEJ', 9), +('S9', '1707', 'DURSEJ', 9), +('S9', '1708', 'DURSEJ', 9), +('S9', '1709', 'DURSEJ', 9), +('S9', '1710', 'DURSEJ', 9), +('S9', '1711', 'DURSEJ', 9), +('S9', '1712', 'DURSEJ', 9), +('S9', '1713', 'DURSEJ', 9), +('S9', '1714', 'DURSEJ', 9), +('S9', '1715', 'DURSEJ', 9), +('S9', '1716', 'DURSEJ', 9), +('S9', '1717', 'DURSEJ', 9), +('S9', '1718', 'DURSEJ', 9), +('S9', '1719', 'DURSEJ', 9), +('S9', '1720', 'DURSEJ', 9), +('S9', '1721', 'DURSEJ', 9), +('S9', '1722', 'DURSEJ', 9), +('S9', '1723', 'DURSEJ', 9), +('S9', '1724', 'DURSEJ', 9), +('S9', '1725', 'DURSEJ', 9), +('S9', '1726', 'DURSEJ', 9), +('S9', '1727', 'DURSEJ', 9), +('S9', '1728', 'DURSEJ', 9), +('S9', '1729', 'DURSEJ', 9), +('S9', '1730', 'DURSEJ', 9), +('S9', '1731', 'DURSEJ', 9), +('S9', '1732', 'DURSEJ', 9), +('S9', '1733', 'DURSEJ', 9), +('S9', '1734', 'DURSEJ', 9), +('S9', '1735', 'DURSEJ', 9), +('S9', '1736', 'DURSEJ', 9), +('S9', '1737', 'DURSEJ', 9), +('S9', '1738', 'DURSEJ', 9), +('S9', '1739', 'DURSEJ', 9), +('S9', '1740', 'DURSEJ', 9), +('S9', '1741', 'DURSEJ', 9), +('S9', '1742', 'DURSEJ', 9), +('S9', '1743', 'DURSEJ', 9), +('S9', '1744', 'DURSEJ', 9), +('S9', '1745', 'DURSEJ', 9), +('S9', '1746', 'DURSEJ', 9), +('S9', '1747', 'DURSEJ', 9), +('S9', '1748', 'DURSEJ', 9), +('S9', '1749', 'DURSEJ', 9), +('S9', '1750', 'DURSEJ', 9), +('S9', '1751', 'DURSEJ', 9), +('S9', '1752', 'DURSEJ', 9), +('S9', '1753', 'DURSEJ', 9), +('S9', '1754', 'DURSEJ', 9), +('S9', '1755', 'DURSEJ', 9), +('S9', '1756', 'DURSEJ', 9), +('S9', '1757', 'DURSEJ', 9), +('S9', '1758', 'DURSEJ', 9), +('S9', '1759', 'DURSEJ', 9), +('S9', '1760', 'DURSEJ', 9), +('S9', '1761', 'DURSEJ', 9), +('S9', '1762', 'DURSEJ', 9), +('S9', '1763', 'DURSEJ', 9), +('S9', '1764', 'DURSEJ', 9), +('S9', '1765', 'DURSEJ', 9), +('S9', '1766', 'DURSEJ', 9), +('S9', '1767', 'DURSEJ', 9), +('S9', '1768', 'DURSEJ', 9), +('S9', '1769', 'DURSEJ', 9), +('S9', '1770', 'DURSEJ', 9), +('S9', '1771', 'DURSEJ', 9), +('S9', '1772', 'DURSEJ', 9), +('S9', '1773', 'DURSEJ', 9), +('S9', '1774', 'DURSEJ', 9), +('S9', '1775', 'DURSEJ', 9), +('S9', '1776', 'DURSEJ', 9), +('S9', '1777', 'DURSEJ', 9), +('S9', '1778', 'DURSEJ', 9), +('S9', '1779', 'DURSEJ', 9), +('S9', '1780', 'DURSEJ', 9), +('S9', '1781', 'DURSEJ', 9), +('S9', '1782', 'DURSEJ', 9), +('S9', '1783', 'DURSEJ', 9), +('S9', '1784', 'DURSEJ', 9), +('S9', '1785', 'DURSEJ', 9), +('S9', '1786', 'DURSEJ', 9), +('S9', '1787', 'DURSEJ', 9), +('S9', '1788', 'DURSEJ', 9), +('S9', '1789', 'DURSEJ', 9), +('S9', '1790', 'DURSEJ', 9), +('S9', '1791', 'DURSEJ', 9), +('S9', '1792', 'DURSEJ', 9), +('S9', '1793', 'DURSEJ', 9), +('S9', '1794', 'DURSEJ', 9), +('S9', '1795', 'DURSEJ', 9), +('S9', '1796', 'DURSEJ', 9), +('S9', '1797', 'DURSEJ', 9), +('S9', '1798', 'DURSEJ', 9), +('S9', '1799', 'DURSEJ', 9), +('S9', '1800', 'DURSEJ', 9), +('S9', '1801', 'DURSEJ', 9), +('S9', '1802', 'DURSEJ', 9), +('S9', '1803', 'DURSEJ', 9), +('S9', '1804', 'DURSEJ', 9), +('S9', '1805', 'DURSEJ', 9), +('S9', '1806', 'DURSEJ', 9), +('S9', '1807', 'DURSEJ', 9), +('S9', '1808', 'DURSEJ', 9), +('S9', '1809', 'DURSEJ', 9), +('S9', '1810', 'DURSEJ', 9), +('S9', '1811', 'DURSEJ', 9), +('S9', '1812', 'DURSEJ', 9), +('S9', '1813', 'DURSEJ', 9), +('S9', '1814', 'DURSEJ', 9), +('S9', '1815', 'DURSEJ', 9), +('S9', '1816', 'DURSEJ', 9), +('S9', '1817', 'DURSEJ', 9), +('S9', '1818', 'DURSEJ', 9), +('S9', '1819', 'DURSEJ', 9), +('S9', '1820', 'DURSEJ', 9), +('S9', '1821', 'DURSEJ', 9), +('S9', '1822', 'DURSEJ', 9), +('S9', '1823', 'DURSEJ', 9), +('S9', '1824', 'DURSEJ', 9), +('S9', '1825', 'DURSEJ', 9), +('S9', '1826', 'DURSEJ', 9), +('S9', '1827', 'DURSEJ', 9), +('S9', '1828', 'DURSEJ', 9), +('S9', '1829', 'DURSEJ', 9), +('S9', '1830', 'DURSEJ', 9), +('S9', '1831', 'DURSEJ', 9), +('S9', '1832', 'DURSEJ', 9), +('S9', '1833', 'DURSEJ', 9), +('S9', '1834', 'DURSEJ', 9), +('S9', '1835', 'DURSEJ', 9), +('S9', '1836', 'DURSEJ', 9), +('S9', '1837', 'DURSEJ', 9), +('S9', '1838', 'DURSEJ', 9), +('S9', '1839', 'DURSEJ', 9), +('S9', '1840', 'DURSEJ', 9), +('S9', '1841', 'DURSEJ', 9), +('S9', '1842', 'DURSEJ', 9), +('S9', '1843', 'DURSEJ', 9), +('S9', '1844', 'DURSEJ', 9), +('S9', '1845', 'DURSEJ', 9), +('S9', '1846', 'DURSEJ', 9), +('S9', '1847', 'DURSEJ', 9), +('S9', '1848', 'DURSEJ', 9), +('S9', '1849', 'DURSEJ', 9), +('S9', '1850', 'DURSEJ', 9), +('S9', '1851', 'DURSEJ', 9), +('S9', '1852', 'DURSEJ', 9), +('S9', '1853', 'DURSEJ', 9), +('S9', '1854', 'DURSEJ', 9), +('S9', '1855', 'DURSEJ', 9), +('S9', '1856', 'DURSEJ', 9), +('S9', '1857', 'DURSEJ', 9), +('S9', '1858', 'DURSEJ', 9), +('S9', '1859', 'DURSEJ', 9), +('S9', '1860', 'DURSEJ', 9), +('S9', '1861', 'DURSEJ', 9), +('S9', '1862', 'DURSEJ', 9), +('S9', '1863', 'DURSEJ', 9), +('S9', '1864', 'DURSEJ', 9), +('S9', '1865', 'DURSEJ', 9), +('S9', '1866', 'DURSEJ', 9), +('S9', '1867', 'DURSEJ', 9), +('S9', '1868', 'DURSEJ', 9), +('S9', '1869', 'DURSEJ', 9), +('S9', '1870', 'DURSEJ', 9), +('S9', '1871', 'DURSEJ', 9), +('S9', '1872', 'DURSEJ', 9), +('S9', '1873', 'DURSEJ', 9), +('S9', '1874', 'DURSEJ', 9), +('S9', '1875', 'DURSEJ', 9), +('S9', '1876', 'DURSEJ', 9), +('S9', '1877', 'DURSEJ', 9), +('S9', '1878', 'DURSEJ', 9), +('S9', '1879', 'DURSEJ', 9), +('S9', '1880', 'DURSEJ', 9), +('S9', '1881', 'DURSEJ', 9), +('S9', '1882', 'DURSEJ', 9), +('S9', '1883', 'DURSEJ', 9), +('S9', '1884', 'DURSEJ', 9), +('S9', '1885', 'DURSEJ', 9), +('S9', '1886', 'DURSEJ', 9), +('S9', '1887', 'DURSEJ', 9), +('S9', '1888', 'DURSEJ', 9), +('S9', '1889', 'DURSEJ', 9), +('S9', '1890', 'DURSEJ', 9), +('S9', '1891', 'DURSEJ', 9), +('S9', '1892', 'DURSEJ', 9), +('S9', '1893', 'DURSEJ', 9), +('S9', '1894', 'DURSEJ', 9), +('S9', '1895', 'DURSEJ', 9), +('S9', '1896', 'DURSEJ', 9), +('S9', '1897', 'DURSEJ', 9), +('S9', '1898', 'DURSEJ', 9), +('S9', '1899', 'DURSEJ', 9), +('S9', '1900', 'DURSEJ', 9), +('S9', '1901', 'DURSEJ', 9), +('S9', '1902', 'DURSEJ', 9), +('S9', '1903', 'DURSEJ', 9), +('S9', '1904', 'DURSEJ', 9), +('S9', '1905', 'DURSEJ', 9), +('S9', '1906', 'DURSEJ', 9), +('S9', '1907', 'DURSEJ', 9), +('S9', '1908', 'DURSEJ', 9), +('S9', '1909', 'DURSEJ', 9), +('S9', '1910', 'DURSEJ', 9), +('S9', '1911', 'DURSEJ', 9), +('S9', '1912', 'DURSEJ', 9), +('S9', '1913', 'DURSEJ', 9), +('S9', '1914', 'DURSEJ', 9), +('S9', '1915', 'DURSEJ', 9), +('S9', '1916', 'DURSEJ', 9), +('S9', '1917', 'DURSEJ', 9), +('S9', '1918', 'DURSEJ', 9), +('S9', '1919', 'DURSEJ', 9), +('S9', '1920', 'DURSEJ', 9), +('S9', '1921', 'DURSEJ', 9), +('S9', '1922', 'DURSEJ', 9), +('S9', '1923', 'DURSEJ', 9), +('S9', '1924', 'DURSEJ', 9), +('S9', '1925', 'DURSEJ', 9), +('S9', '1926', 'DURSEJ', 9), +('S9', '1927', 'DURSEJ', 9), +('S9', '1928', 'DURSEJ', 9), +('S9', '1929', 'DURSEJ', 9), +('S9', '1930', 'DURSEJ', 9), +('S9', '1931', 'DURSEJ', 9), +('S9', '1932', 'DURSEJ', 9), +('S9', '1933', 'DURSEJ', 9), +('S9', '1934', 'DURSEJ', 9), +('S9', '1935', 'DURSEJ', 9), +('S9', '1936', 'DURSEJ', 9), +('S9', '1937', 'DURSEJ', 9), +('S9', '1938', 'DURSEJ', 9), +('S9', '1939', 'DURSEJ', 9), +('S9', '1940', 'DURSEJ', 9), +('S9', '1941', 'DURSEJ', 9), +('S9', '1942', 'DURSEJ', 9), +('S9', '1943', 'DURSEJ', 9), +('S9', '1944', 'DURSEJ', 9), +('S9', '1945', 'DURSEJ', 9), +('S9', '1946', 'DURSEJ', 9), +('S9', '1947', 'DURSEJ', 9), +('S9', '1948', 'DURSEJ', 9), +('S9', '1949', 'DURSEJ', 9), +('S9', '1950', 'DURSEJ', 9), +('S9', '1951', 'DURSEJ', 9), +('S9', '1952', 'DURSEJ', 9), +('S9', '1953', 'DURSEJ', 9), +('S9', '1954', 'DURSEJ', 9), +('S9', '1955', 'DURSEJ', 9), +('S9', '1956', 'DURSEJ', 9), +('S9', '1957', 'DURSEJ', 9), +('S9', '1958', 'DURSEJ', 9), +('S9', '1959', 'DURSEJ', 9), +('S9', '1960', 'DURSEJ', 9), +('S9', '1961', 'DURSEJ', 9), +('S9', '1962', 'DURSEJ', 9), +('S9', '1963', 'DURSEJ', 9), +('S9', '1964', 'DURSEJ', 9), +('S9', '1965', 'DURSEJ', 9), +('S9', '1966', 'DURSEJ', 9), +('S9', '1967', 'DURSEJ', 9), +('S9', '1968', 'DURSEJ', 9), +('S9', '1969', 'DURSEJ', 9), +('S9', '1970', 'DURSEJ', 9), +('S9', '1971', 'DURSEJ', 9), +('S9', '1972', 'DURSEJ', 9), +('S9', '1973', 'DURSEJ', 9), +('S9', '1974', 'DURSEJ', 9), +('S9', '1975', 'DURSEJ', 9), +('S9', '1976', 'DURSEJ', 9), +('S9', '1977', 'DURSEJ', 9), +('S9', '1978', 'DURSEJ', 9), +('S9', '1979', 'DURSEJ', 9), +('S9', '1980', 'DURSEJ', 9), +('S9', '1981', 'DURSEJ', 9), +('S9', '1982', 'DURSEJ', 9), +('S9', '1983', 'DURSEJ', 9), +('S9', '1984', 'DURSEJ', 9), +('S9', '1985', 'DURSEJ', 9), +('S9', '1986', 'DURSEJ', 9), +('S9', '1987', 'DURSEJ', 9), +('S9', '1988', 'DURSEJ', 9), +('S9', '1989', 'DURSEJ', 9), +('S9', '1990', 'DURSEJ', 9), +('S9', '1991', 'DURSEJ', 9), +('S9', '1992', 'DURSEJ', 9), +('S9', '1993', 'DURSEJ', 9), +('S9', '1994', 'DURSEJ', 9), +('S9', '1995', 'DURSEJ', 9), +('S9', '1996', 'DURSEJ', 9), +('S9', '1997', 'DURSEJ', 9), +('S9', '1998', 'DURSEJ', 9), +('S9', '1999', 'DURSEJ', 9), +('S9', '2000', 'DURSEJ', 9), +('S9', '2001', 'DURSEJ', 9), +('S9', '2002', 'DURSEJ', 9), +('S9', '2003', 'DURSEJ', 9), +('S9', '2004', 'DURSEJ', 9), +('S9', '2005', 'DURSEJ', 9), +('S9', '2006', 'DURSEJ', 9), +('S9', '2007', 'DURSEJ', 9), +('S9', '2008', 'DURSEJ', 9), +('S9', '2009', 'DURSEJ', 9), +('S9', '2010', 'DURSEJ', 9), +('S9', '2011', 'DURSEJ', 9), +('S9', '2012', 'DURSEJ', 9), +('S9', '2013', 'DURSEJ', 9), +('S9', '2014', 'DURSEJ', 9), +('S9', '2015', 'DURSEJ', 9), +('S9', '2016', 'DURSEJ', 9), +('S9', '2017', 'DURSEJ', 9), +('S9', '2018', 'DURSEJ', 9), +('S9', '2019', 'DURSEJ', 9), +('S9', '2020', 'DURSEJ', 9), +('S9', '2021', 'DURSEJ', 9), +('S9', '2022', 'DURSEJ', 9), +('S9', '2023', 'DURSEJ', 9), +('S9', '2024', 'DURSEJ', 9), +('S9', '2025', 'DURSEJ', 9), +('S9', '2026', 'DURSEJ', 9), +('S9', '2027', 'DURSEJ', 9), +('S9', '2028', 'DURSEJ', 9), +('S9', '2029', 'DURSEJ', 9), +('S9', '2030', 'DURSEJ', 9), +('S9', '2031', 'DURSEJ', 9), +('S9', '2032', 'DURSEJ', 9), +('S9', '2033', 'DURSEJ', 9), +('S9', '2034', 'DURSEJ', 9), +('S9', '2035', 'DURSEJ', 9), +('S9', '2036', 'DURSEJ', 9), +('S9', '2037', 'DURSEJ', 9), +('S9', '2038', 'DURSEJ', 9), +('S9', '2039', 'DURSEJ', 9), +('S9', '2040', 'DURSEJ', 9), +('S9', '2041', 'DURSEJ', 9), +('S9', '2042', 'DURSEJ', 9), +('S9', '2043', 'DURSEJ', 9), +('S9', '2044', 'DURSEJ', 9), +('S9', '2045', 'DURSEJ', 9), +('S9', '2046', 'DURSEJ', 9), +('S9', '2047', 'DURSEJ', 9), +('S9', '2048', 'DURSEJ', 9), +('S9', '2049', 'DURSEJ', 9), +('S9', '2050', 'DURSEJ', 9), +('S9', '2051', 'DURSEJ', 9), +('S9', '2052', 'DURSEJ', 9), +('S9', '2053', 'DURSEJ', 9), +('S9', '2054', 'DURSEJ', 9), +('S9', '2055', 'DURSEJ', 9), +('S9', '2056', 'DURSEJ', 9), +('S9', '2057', 'DURSEJ', 9), +('S9', '2058', 'DURSEJ', 9), +('S9', '2059', 'DURSEJ', 9), +('S9', '2060', 'DURSEJ', 9), +('S9', '2061', 'DURSEJ', 9), +('S9', '2062', 'DURSEJ', 9), +('S9', '2063', 'DURSEJ', 9), +('S9', '2064', 'DURSEJ', 9), +('S9', '2065', 'DURSEJ', 9), +('S9', '2066', 'DURSEJ', 9), +('S9', '2067', 'DURSEJ', 9), +('S9', '2068', 'DURSEJ', 9), +('S9', '2069', 'DURSEJ', 9), +('S9', '2070', 'DURSEJ', 9), +('S9', '2071', 'DURSEJ', 9), +('S9', '2072', 'DURSEJ', 9), +('S9', '2073', 'DURSEJ', 9), +('S9', '2074', 'DURSEJ', 9), +('S9', '2075', 'DURSEJ', 9), +('S9', '2076', 'DURSEJ', 9), +('S9', '2077', 'DURSEJ', 9), +('S9', '2078', 'DURSEJ', 9), +('S9', '2079', 'DURSEJ', 9), +('S9', '2080', 'DURSEJ', 9), +('S9', '2081', 'DURSEJ', 9), +('S9', '2082', 'DURSEJ', 9), +('S9', '2083', 'DURSEJ', 9), +('S9', '2084', 'DURSEJ', 9), +('S9', '2085', 'DURSEJ', 9), +('S9', '2086', 'DURSEJ', 9), +('S9', '2087', 'DURSEJ', 9), +('S9', '2088', 'DURSEJ', 9), +('S9', '2089', 'DURSEJ', 9), +('S9', '2090', 'DURSEJ', 9), +('S9', '2091', 'DURSEJ', 9), +('S9', '2092', 'DURSEJ', 9), +('S9', '2093', 'DURSEJ', 9), +('S9', '2094', 'DURSEJ', 9), +('S9', '2095', 'DURSEJ', 9), +('S9', '2096', 'DURSEJ', 9), +('S9', '2097', 'DURSEJ', 9), +('S9', '2098', 'DURSEJ', 9), +('S9', '2099', 'DURSEJ', 9), +('S9', '2100', 'DURSEJ', 9), +('S9', '2101', 'DURSEJ', 9), +('S9', '2102', 'DURSEJ', 9), +('S9', '2103', 'DURSEJ', 9), +('S9', '2104', 'DURSEJ', 9), +('S9', '2105', 'DURSEJ', 9), +('S9', '2106', 'DURSEJ', 9), +('S9', '2107', 'DURSEJ', 9), +('S9', '2108', 'DURSEJ', 9), +('S9', '2109', 'DURSEJ', 9), +('S9', '2110', 'DURSEJ', 9), +('S9', '2111', 'DURSEJ', 9), +('S9', '2112', 'DURSEJ', 9), +('S9', '2113', 'DURSEJ', 9), +('S9', '2114', 'DURSEJ', 9), +('S9', '2115', 'DURSEJ', 9), +('S9', '2116', 'DURSEJ', 9), +('S9', '2117', 'DURSEJ', 9), +('S9', '2118', 'DURSEJ', 9), +('S9', '2119', 'DURSEJ', 9), +('S9', '2120', 'DURSEJ', 9), +('S9', '2121', 'DURSEJ', 9), +('S9', '2122', 'DURSEJ', 9), +('S9', '2123', 'DURSEJ', 9), +('S9', '2124', 'DURSEJ', 9), +('S9', '2125', 'DURSEJ', 9), +('S9', '2126', 'DURSEJ', 9), +('S9', '2127', 'DURSEJ', 9), +('S9', '2128', 'DURSEJ', 9), +('S9', '2129', 'DURSEJ', 9), +('S9', '2130', 'DURSEJ', 9), +('S9', '2131', 'DURSEJ', 9), +('S9', '2132', 'DURSEJ', 9), +('S9', '2133', 'DURSEJ', 9), +('S9', '2134', 'DURSEJ', 9), +('S9', '2135', 'DURSEJ', 9), +('S9', '2136', 'DURSEJ', 9), +('S9', '2137', 'DURSEJ', 9), +('S9', '2138', 'DURSEJ', 9), +('S9', '2139', 'DURSEJ', 9), +('S9', '2140', 'DURSEJ', 9), +('S9', '2141', 'DURSEJ', 9), +('S9', '2142', 'DURSEJ', 9), +('S9', '2143', 'DURSEJ', 9), +('S9', '2144', 'DURSEJ', 9), +('S9', '2145', 'DURSEJ', 9), +('S9', '2146', 'DURSEJ', 9), +('S9', '2147', 'DURSEJ', 9), +('S9', '2148', 'DURSEJ', 9), +('S9', '2149', 'DURSEJ', 9), +('S9', '2150', 'DURSEJ', 9), +('S9', '2151', 'DURSEJ', 9), +('S9', '2152', 'DURSEJ', 9), +('S9', '2153', 'DURSEJ', 9), +('S9', '2154', 'DURSEJ', 9), +('S9', '2155', 'DURSEJ', 9), +('S9', '2156', 'DURSEJ', 9), +('S9', '2157', 'DURSEJ', 9), +('S9', '2158', 'DURSEJ', 9), +('S9', '2159', 'DURSEJ', 9), +('S9', '2160', 'DURSEJ', 9), +('S9', '2161', 'DURSEJ', 9), +('S9', '2162', 'DURSEJ', 9), +('S9', '2163', 'DURSEJ', 9), +('S9', '2164', 'DURSEJ', 9), +('S9', '2165', 'DURSEJ', 9), +('S9', '2166', 'DURSEJ', 9), +('S9', '2167', 'DURSEJ', 9), +('S9', '2168', 'DURSEJ', 9), +('S9', '2169', 'DURSEJ', 9), +('S9', '2170', 'DURSEJ', 9), +('S9', '2171', 'DURSEJ', 9), +('S9', '2172', 'DURSEJ', 9), +('S9', '2173', 'DURSEJ', 9), +('S9', '2174', 'DURSEJ', 9), +('S9', '2175', 'DURSEJ', 9), +('S9', '2176', 'DURSEJ', 9), +('S9', '2177', 'DURSEJ', 9), +('S9', '2178', 'DURSEJ', 9), +('S9', '2179', 'DURSEJ', 9), +('S9', '2180', 'DURSEJ', 9), +('S9', '2181', 'DURSEJ', 9), +('S9', '2182', 'DURSEJ', 9), +('S9', '2183', 'DURSEJ', 9), +('S9', '2184', 'DURSEJ', 9), +('S9', '2185', 'DURSEJ', 9), +('S9', '2186', 'DURSEJ', 9), +('S9', '2187', 'DURSEJ', 9), +('S9', '2188', 'DURSEJ', 9), +('S9', '2189', 'DURSEJ', 9), +('S9', '2190', 'DURSEJ', 9), +('S9', '2191', 'DURSEJ', 9), +('S9', '2192', 'DURSEJ', 9), +('S9', '2193', 'DURSEJ', 9), +('S9', '2194', 'DURSEJ', 9), +('S9', '2195', 'DURSEJ', 9), +('S9', '2196', 'DURSEJ', 9), +('S9', '2197', 'DURSEJ', 9), +('S9', '2198', 'DURSEJ', 9), +('S9', '2199', 'DURSEJ', 9), +('S9', '2200', 'DURSEJ', 9), +('S9', '2201', 'DURSEJ', 9), +('S9', '2202', 'DURSEJ', 9), +('S9', '2203', 'DURSEJ', 9), +('S9', '2204', 'DURSEJ', 9), +('S9', '2205', 'DURSEJ', 9), +('S9', '2206', 'DURSEJ', 9), +('S9', '2207', 'DURSEJ', 9), +('S9', '2208', 'DURSEJ', 9), +('S9', '2209', 'DURSEJ', 9), +('S9', '2210', 'DURSEJ', 9), +('S9', '2211', 'DURSEJ', 9), +('S9', '2212', 'DURSEJ', 9), +('S9', '2213', 'DURSEJ', 9), +('S9', '2214', 'DURSEJ', 9), +('S9', '2215', 'DURSEJ', 9), +('S9', '2216', 'DURSEJ', 9), +('S9', '2217', 'DURSEJ', 9), +('S9', '2218', 'DURSEJ', 9), +('S9', '2219', 'DURSEJ', 9), +('S9', '2220', 'DURSEJ', 9), +('S9', '2221', 'DURSEJ', 9), +('S9', '2222', 'DURSEJ', 9), +('S9', '2223', 'DURSEJ', 9), +('S9', '2224', 'DURSEJ', 9), +('S9', '2225', 'DURSEJ', 9), +('S9', '2226', 'DURSEJ', 9), +('S9', '2227', 'DURSEJ', 9), +('S9', '2228', 'DURSEJ', 9), +('S9', '2229', 'DURSEJ', 9), +('S9', '2230', 'DURSEJ', 9), +('S9', '2231', 'DURSEJ', 9), +('S9', '2232', 'DURSEJ', 9), +('S9', '2233', 'DURSEJ', 9), +('S9', '2234', 'DURSEJ', 9), +('S9', '2235', 'DURSEJ', 9), +('S9', '2236', 'DURSEJ', 9), +('S9', '2237', 'DURSEJ', 9), +('S9', '2238', 'DURSEJ', 9), +('S9', '2239', 'DURSEJ', 9), +('S9', '2240', 'DURSEJ', 9), +('S9', '2241', 'DURSEJ', 9), +('S9', '2242', 'DURSEJ', 9), +('S9', '2243', 'DURSEJ', 9), +('S9', '2244', 'DURSEJ', 9), +('S9', '2245', 'DURSEJ', 9), +('S9', '2246', 'DURSEJ', 9), +('S9', '2247', 'DURSEJ', 9), +('S9', '2248', 'DURSEJ', 9), +('S9', '2249', 'DURSEJ', 9), +('S9', '2250', 'DURSEJ', 9), +('S9', '2251', 'DURSEJ', 9), +('S9', '2252', 'DURSEJ', 9), +('S9', '2253', 'DURSEJ', 9), +('S9', '2254', 'DURSEJ', 9), +('S9', '2255', 'DURSEJ', 9), +('S9', '2256', 'DURSEJ', 9), +('S9', '2257', 'DURSEJ', 9), +('S9', '2258', 'DURSEJ', 9), +('S9', '2259', 'DURSEJ', 9), +('S9', '2260', 'DURSEJ', 9), +('S9', '2261', 'DURSEJ', 9), +('S9', '2262', 'DURSEJ', 9), +('S9', '2263', 'DURSEJ', 9), +('S9', '2264', 'DURSEJ', 9), +('S9', '2265', 'DURSEJ', 9), +('S9', '2266', 'DURSEJ', 9), +('S9', '2267', 'DURSEJ', 9), +('S9', '2268', 'DURSEJ', 9), +('S9', '2269', 'DURSEJ', 9), +('S9', '2270', 'DURSEJ', 9), +('S9', '2271', 'DURSEJ', 9), +('S9', '2272', 'DURSEJ', 9), +('S9', '2273', 'DURSEJ', 9), +('S9', '2274', 'DURSEJ', 9), +('S9', '2275', 'DURSEJ', 9), +('S9', '2276', 'DURSEJ', 9), +('S9', '2277', 'DURSEJ', 9), +('S9', '2278', 'DURSEJ', 9), +('S9', '2279', 'DURSEJ', 9), +('S9', '2280', 'DURSEJ', 9), +('S9', '2281', 'DURSEJ', 9), +('S9', '2282', 'DURSEJ', 9), +('S9', '2283', 'DURSEJ', 9), +('S9', '2284', 'DURSEJ', 9), +('S9', '2285', 'DURSEJ', 9), +('S9', '2286', 'DURSEJ', 9), +('S9', '2287', 'DURSEJ', 9), +('S9', '2288', 'DURSEJ', 9), +('S9', '2289', 'DURSEJ', 9), +('S9', '2290', 'DURSEJ', 9), +('S9', '2291', 'DURSEJ', 9), +('S9', '2292', 'DURSEJ', 9), +('S9', '2293', 'DURSEJ', 9), +('S9', '2294', 'DURSEJ', 9), +('S9', '2295', 'DURSEJ', 9), +('S9', '2296', 'DURSEJ', 9), +('S9', '2297', 'DURSEJ', 9), +('S9', '2298', 'DURSEJ', 9), +('S9', '2299', 'DURSEJ', 9), +('S9', '2300', 'DURSEJ', 9), +('S9', '2301', 'DURSEJ', 9), +('S9', '2302', 'DURSEJ', 9), +('S9', '2303', 'DURSEJ', 9), +('S9', '2304', 'DURSEJ', 9), +('S9', '2305', 'DURSEJ', 9), +('S9', '2306', 'DURSEJ', 9), +('S9', '2307', 'DURSEJ', 9), +('S9', '2308', 'DURSEJ', 9), +('S9', '2309', 'DURSEJ', 9), +('S9', '2310', 'DURSEJ', 9), +('S9', '2311', 'DURSEJ', 9), +('S9', '2312', 'DURSEJ', 9), +('S9', '2313', 'DURSEJ', 9), +('S9', '2314', 'DURSEJ', 9), +('S9', '2315', 'DURSEJ', 9), +('S9', '2316', 'DURSEJ', 9), +('S9', '2317', 'DURSEJ', 9), +('S9', '2318', 'DURSEJ', 9), +('S9', '2319', 'DURSEJ', 9), +('S9', '2320', 'DURSEJ', 9), +('S9', '2321', 'DURSEJ', 9), +('S9', '2322', 'DURSEJ', 9), +('S9', '2323', 'DURSEJ', 9), +('S9', '2324', 'DURSEJ', 9), +('S9', '2325', 'DURSEJ', 9), +('S9', '2326', 'DURSEJ', 9), +('S9', '2327', 'DURSEJ', 9), +('S9', '2328', 'DURSEJ', 9), +('S9', '2329', 'DURSEJ', 9), +('S9', '2330', 'DURSEJ', 9), +('S9', '2331', 'DURSEJ', 9), +('S9', '2332', 'DURSEJ', 9), +('S9', '2333', 'DURSEJ', 9), +('S9', '2334', 'DURSEJ', 9), +('S9', '2335', 'DURSEJ', 9), +('S9', '2336', 'DURSEJ', 9), +('S9', '2337', 'DURSEJ', 9), +('S9', '2338', 'DURSEJ', 9), +('S9', '2339', 'DURSEJ', 9), +('S9', '2340', 'DURSEJ', 9), +('S9', '2341', 'DURSEJ', 9), +('S9', '2342', 'DURSEJ', 9), +('S9', '2343', 'DURSEJ', 9), +('S9', '2344', 'DURSEJ', 9), +('S9', '2345', 'DURSEJ', 9), +('S9', '2346', 'DURSEJ', 9), +('S9', '2347', 'DURSEJ', 9), +('S9', '2348', 'DURSEJ', 9), +('S9', '2349', 'DURSEJ', 9), +('S9', '2350', 'DURSEJ', 9), +('S9', '2351', 'DURSEJ', 9), +('S9', '2352', 'DURSEJ', 9), +('S9', '2353', 'DURSEJ', 9), +('S9', '2354', 'DURSEJ', 9), +('S9', '2355', 'DURSEJ', 9), +('S9', '2356', 'DURSEJ', 9), +('S9', '2357', 'DURSEJ', 9), +('S9', '2358', 'DURSEJ', 9), +('S9', '2359', 'DURSEJ', 9), +('S9', '2360', 'DURSEJ', 9), +('S9', '2361', 'DURSEJ', 9), +('S9', '2362', 'DURSEJ', 9), +('S9', '2363', 'DURSEJ', 9), +('S9', '2364', 'DURSEJ', 9), +('S9', '2365', 'DURSEJ', 9), +('S9', '2366', 'DURSEJ', 9), +('S9', '2367', 'DURSEJ', 9), +('S9', '2368', 'DURSEJ', 9), +('S9', '2369', 'DURSEJ', 9), +('S9', '2370', 'DURSEJ', 9), +('S9', '2371', 'DURSEJ', 9), +('S9', '2372', 'DURSEJ', 9), +('S9', '2373', 'DURSEJ', 9), +('S9', '2374', 'DURSEJ', 9), +('S9', '2375', 'DURSEJ', 9), +('S9', '2376', 'DURSEJ', 9), +('S9', '2377', 'DURSEJ', 9), +('S9', '2378', 'DURSEJ', 9), +('S9', '2379', 'DURSEJ', 9), +('S9', '2380', 'DURSEJ', 9), +('S9', '2381', 'DURSEJ', 9), +('S9', '2382', 'DURSEJ', 9), +('S9', '2383', 'DURSEJ', 9), +('S9', '2384', 'DURSEJ', 9), +('S9', '2385', 'DURSEJ', 9), +('S9', '2386', 'DURSEJ', 9), +('S9', '2387', 'DURSEJ', 9), +('S9', '2388', 'DURSEJ', 9), +('S9', '2389', 'DURSEJ', 9), +('S9', '2390', 'DURSEJ', 9), +('S9', '2391', 'DURSEJ', 9), +('S9', '2392', 'DURSEJ', 9), +('S9', '2393', 'DURSEJ', 9), +('S9', '2394', 'DURSEJ', 9), +('S9', '2395', 'DURSEJ', 9), +('S9', '2396', 'DURSEJ', 9), +('S9', '2397', 'DURSEJ', 9), +('S9', '2398', 'DURSEJ', 9), +('S9', '2399', 'DURSEJ', 9), +('S9', '2400', 'DURSEJ', 9), +('S9', '2401', 'DURSEJ', 9), +('S9', '2402', 'DURSEJ', 9), +('S9', '2403', 'DURSEJ', 9), +('S9', '2404', 'DURSEJ', 9), +('S9', '2405', 'DURSEJ', 9), +('S9', '2406', 'DURSEJ', 9), +('S9', '2407', 'DURSEJ', 9), +('S9', '2408', 'DURSEJ', 9), +('S9', '2409', 'DURSEJ', 9), +('S9', '2410', 'DURSEJ', 9), +('S9', '2411', 'DURSEJ', 9), +('S9', '2412', 'DURSEJ', 9), +('S9', '2413', 'DURSEJ', 9), +('S9', '2414', 'DURSEJ', 9), +('S9', '2415', 'DURSEJ', 9), +('S9', '2416', 'DURSEJ', 9), +('S9', '2417', 'DURSEJ', 9), +('S9', '2418', 'DURSEJ', 9), +('S9', '2419', 'DURSEJ', 9), +('S9', '2420', 'DURSEJ', 9), +('S9', '2421', 'DURSEJ', 9), +('S9', '2422', 'DURSEJ', 9), +('S9', '2423', 'DURSEJ', 9), +('S9', '2424', 'DURSEJ', 9), +('S9', '2425', 'DURSEJ', 9), +('S9', '2426', 'DURSEJ', 9), +('S9', '2427', 'DURSEJ', 9), +('S9', '2428', 'DURSEJ', 9), +('S9', '2429', 'DURSEJ', 9), +('S9', '2430', 'DURSEJ', 9), +('S9', '2431', 'DURSEJ', 9), +('S9', '2432', 'DURSEJ', 9), +('S9', '2433', 'DURSEJ', 9), +('S9', '2434', 'DURSEJ', 9), +('S9', '2435', 'DURSEJ', 9), +('S9', '2436', 'DURSEJ', 9), +('S9', '2437', 'DURSEJ', 9), +('S9', '2438', 'DURSEJ', 9), +('S9', '2439', 'DURSEJ', 9), +('S9', '2440', 'DURSEJ', 9), +('S9', '2441', 'DURSEJ', 9), +('S9', '2442', 'DURSEJ', 9), +('S9', '2443', 'DURSEJ', 9), +('S9', '2444', 'DURSEJ', 9), +('S9', '2445', 'DURSEJ', 9), +('S9', '2446', 'DURSEJ', 9), +('S9', '2447', 'DURSEJ', 9), +('S9', '2448', 'DURSEJ', 9), +('S9', '2449', 'DURSEJ', 9), +('S9', '2450', 'DURSEJ', 9), +('S9', '2451', 'DURSEJ', 9), +('S9', '2452', 'DURSEJ', 9), +('S9', '2453', 'DURSEJ', 9), +('S9', '2454', 'DURSEJ', 9), +('S9', '2455', 'DURSEJ', 9), +('S9', '2456', 'DURSEJ', 9), +('S9', '2457', 'DURSEJ', 9), +('S9', '2458', 'DURSEJ', 9), +('S9', '2459', 'DURSEJ', 9), +('S9', '2460', 'DURSEJ', 9), +('S9', '2461', 'DURSEJ', 9), +('S9', '2462', 'DURSEJ', 9), +('S9', '2463', 'DURSEJ', 9), +('S9', '2464', 'DURSEJ', 9), +('S9', '2465', 'DURSEJ', 9), +('S9', '2466', 'DURSEJ', 9), +('S9', '2467', 'DURSEJ', 9), +('S9', '2468', 'DURSEJ', 9), +('S9', '2469', 'DURSEJ', 9), +('S9', '2470', 'DURSEJ', 9), +('S9', '2471', 'DURSEJ', 9), +('S9', '2472', 'DURSEJ', 9), +('S9', '2473', 'DURSEJ', 9), +('S9', '2474', 'DURSEJ', 9), +('S9', '2475', 'DURSEJ', 9), +('S9', '2476', 'DURSEJ', 9), +('S9', '2477', 'DURSEJ', 9), +('S9', '2478', 'DURSEJ', 9), +('S9', '2479', 'DURSEJ', 9), +('S9', '2480', 'DURSEJ', 9), +('S9', '2481', 'DURSEJ', 9), +('S9', '2482', 'DURSEJ', 9), +('S9', '2483', 'DURSEJ', 9), +('S9', '2484', 'DURSEJ', 9), +('S9', '2485', 'DURSEJ', 9), +('S9', '2486', 'DURSEJ', 9), +('S9', '2487', 'DURSEJ', 9), +('S9', '2488', 'DURSEJ', 9), +('S9', '2489', 'DURSEJ', 9), +('S9', '2490', 'DURSEJ', 9), +('S9', '2491', 'DURSEJ', 9), +('S9', '2492', 'DURSEJ', 9), +('S9', '2493', 'DURSEJ', 9), +('S9', '2494', 'DURSEJ', 9), +('S9', '2495', 'DURSEJ', 9), +('S9', '2496', 'DURSEJ', 9), +('S9', '2497', 'DURSEJ', 9), +('S9', '2498', 'DURSEJ', 9), +('S9', '2499', 'DURSEJ', 9), +('S9', '2500', 'DURSEJ', 9), +('S9', '2501', 'DURSEJ', 9), +('S9', '2502', 'DURSEJ', 9), +('S9', '2503', 'DURSEJ', 9), +('S9', '2504', 'DURSEJ', 9), +('S9', '2505', 'DURSEJ', 9), +('S9', '2506', 'DURSEJ', 9), +('S9', '2507', 'DURSEJ', 9), +('S9', '2508', 'DURSEJ', 9), +('S9', '2509', 'DURSEJ', 9), +('S9', '2510', 'DURSEJ', 9), +('S9', '2511', 'DURSEJ', 9), +('S9', '2512', 'DURSEJ', 9), +('S9', '2513', 'DURSEJ', 9), +('S9', '2514', 'DURSEJ', 9), +('S9', '2515', 'DURSEJ', 9), +('S9', '2516', 'DURSEJ', 9), +('S9', '2517', 'DURSEJ', 9), +('S9', '2518', 'DURSEJ', 9), +('S9', '2519', 'DURSEJ', 9), +('S9', '2520', 'DURSEJ', 9), +('S9', '2521', 'DURSEJ', 9), +('S9', '2522', 'DURSEJ', 9), +('S9', '2523', 'DURSEJ', 9), +('S9', '2524', 'DURSEJ', 9), +('S9', '2525', 'DURSEJ', 9), +('S9', '2526', 'DURSEJ', 9), +('S9', '2527', 'DURSEJ', 9), +('S9', '2528', 'DURSEJ', 9), +('S9', '2529', 'DURSEJ', 9), +('S9', '2530', 'DURSEJ', 9), +('S9', '2531', 'DURSEJ', 9), +('S9', '2532', 'DURSEJ', 9), +('S9', '2533', 'DURSEJ', 9), +('S9', '2534', 'DURSEJ', 9), +('S9', '2535', 'DURSEJ', 9), +('S9', '2536', 'DURSEJ', 9), +('S9', '2537', 'DURSEJ', 9), +('S9', '2538', 'DURSEJ', 9), +('S9', '2539', 'DURSEJ', 9), +('S9', '2540', 'DURSEJ', 9), +('S9', '2541', 'DURSEJ', 9), +('S9', '2542', 'DURSEJ', 9), +('S9', '2543', 'DURSEJ', 9), +('S9', '2544', 'DURSEJ', 9), +('S9', '2545', 'DURSEJ', 9), +('S9', '2546', 'DURSEJ', 9), +('S9', '2547', 'DURSEJ', 9), +('S9', '2548', 'DURSEJ', 9), +('S9', '2549', 'DURSEJ', 9), +('S9', '2550', 'DURSEJ', 9), +('S9', '2551', 'DURSEJ', 9), +('S9', '2552', 'DURSEJ', 9), +('S9', '2553', 'DURSEJ', 9), +('S9', '2554', 'DURSEJ', 9), +('S9', '2555', 'DURSEJ', 9), +('S9', '2556', 'DURSEJ', 9), +('S9', '2557', 'DURSEJ', 9), +('S9', '2558', 'DURSEJ', 9), +('S9', '2559', 'DURSEJ', 9), +('S9', '2560', 'DURSEJ', 9), +('S9', '2561', 'DURSEJ', 9), +('S9', '2562', 'DURSEJ', 9), +('S9', '2563', 'DURSEJ', 9), +('S9', '2564', 'DURSEJ', 9), +('S9', '2565', 'DURSEJ', 9), +('S9', '2566', 'DURSEJ', 9), +('S9', '2567', 'DURSEJ', 9), +('S9', '2568', 'DURSEJ', 9), +('S9', '2569', 'DURSEJ', 9), +('S9', '2570', 'DURSEJ', 9), +('S9', '2571', 'DURSEJ', 9), +('S9', '2572', 'DURSEJ', 9), +('S9', '2573', 'DURSEJ', 9), +('S9', '2574', 'DURSEJ', 9), +('S9', '2575', 'DURSEJ', 9), +('S9', '2576', 'DURSEJ', 9), +('S9', '2577', 'DURSEJ', 9), +('S9', '2578', 'DURSEJ', 9), +('S9', '2579', 'DURSEJ', 9), +('S9', '2580', 'DURSEJ', 9), +('S9', '2581', 'DURSEJ', 9), +('S9', '2582', 'DURSEJ', 9), +('S9', '2583', 'DURSEJ', 9), +('S9', '2584', 'DURSEJ', 9), +('S9', '2585', 'DURSEJ', 9), +('S9', '2586', 'DURSEJ', 9), +('S9', '2587', 'DURSEJ', 9), +('S9', '2588', 'DURSEJ', 9), +('S9', '2589', 'DURSEJ', 9), +('S9', '2590', 'DURSEJ', 9), +('S9', '2591', 'DURSEJ', 9), +('S9', '2592', 'DURSEJ', 9), +('S9', '2593', 'DURSEJ', 9), +('S9', '2594', 'DURSEJ', 9), +('S9', '2595', 'DURSEJ', 9), +('S9', '2596', 'DURSEJ', 9), +('S9', '2597', 'DURSEJ', 9), +('S9', '2598', 'DURSEJ', 9), +('S9', '2599', 'DURSEJ', 9), +('S9', '2600', 'DURSEJ', 9), +('S9', '2601', 'DURSEJ', 9), +('S9', '2602', 'DURSEJ', 9), +('S9', '2603', 'DURSEJ', 9), +('S9', '2604', 'DURSEJ', 9), +('S9', '2605', 'DURSEJ', 9), +('S9', '2606', 'DURSEJ', 9), +('S9', '2607', 'DURSEJ', 9), +('S9', '2608', 'DURSEJ', 9), +('S9', '2609', 'DURSEJ', 9), +('S9', '2610', 'DURSEJ', 9), +('S9', '2611', 'DURSEJ', 9), +('S9', '2612', 'DURSEJ', 9), +('S9', '2613', 'DURSEJ', 9), +('S9', '2614', 'DURSEJ', 9), +('S9', '2615', 'DURSEJ', 9), +('S9', '2616', 'DURSEJ', 9), +('S9', '2617', 'DURSEJ', 9), +('S9', '2618', 'DURSEJ', 9), +('S9', '2619', 'DURSEJ', 9), +('S9', '2620', 'DURSEJ', 9), +('S9', '2621', 'DURSEJ', 9), +('S9', '2622', 'DURSEJ', 9), +('S9', '2623', 'DURSEJ', 9), +('S9', '2624', 'DURSEJ', 9), +('S9', '2625', 'DURSEJ', 9), +('S9', '2626', 'DURSEJ', 9), +('S9', '2627', 'DURSEJ', 9), +('S9', '2628', 'DURSEJ', 9), +('S9', '2629', 'DURSEJ', 9), +('S9', '2630', 'DURSEJ', 9), +('S9', '2631', 'DURSEJ', 9), +('S9', '2632', 'DURSEJ', 9), +('S9', '2633', 'DURSEJ', 9), +('S9', '2634', 'DURSEJ', 9), +('S9', '2635', 'DURSEJ', 9), +('S9', '2636', 'DURSEJ', 9), +('S9', '2637', 'DURSEJ', 9), +('S9', '2638', 'DURSEJ', 9), +('S9', '2639', 'DURSEJ', 9), +('S9', '2640', 'DURSEJ', 9), +('S9', '2641', 'DURSEJ', 9), +('S9', '2642', 'DURSEJ', 9), +('S9', '2643', 'DURSEJ', 9), +('S9', '2644', 'DURSEJ', 9), +('S9', '2645', 'DURSEJ', 9), +('S9', '2646', 'DURSEJ', 9), +('S9', '2647', 'DURSEJ', 9), +('S9', '2648', 'DURSEJ', 9), +('S9', '2649', 'DURSEJ', 9), +('S9', '2650', 'DURSEJ', 9), +('S9', '2651', 'DURSEJ', 9), +('S9', '2652', 'DURSEJ', 9), +('S9', '2653', 'DURSEJ', 9), +('S9', '2654', 'DURSEJ', 9), +('S9', '2655', 'DURSEJ', 9), +('S9', '2656', 'DURSEJ', 9), +('S9', '2657', 'DURSEJ', 9), +('S9', '2658', 'DURSEJ', 9), +('S9', '2659', 'DURSEJ', 9), +('S9', '2660', 'DURSEJ', 9), +('S9', '2661', 'DURSEJ', 9), +('S9', '2662', 'DURSEJ', 9), +('S9', '2663', 'DURSEJ', 9), +('S9', '2664', 'DURSEJ', 9), +('S9', '2665', 'DURSEJ', 9), +('S9', '2666', 'DURSEJ', 9), +('S9', '2667', 'DURSEJ', 9), +('S9', '2668', 'DURSEJ', 9), +('S9', '2669', 'DURSEJ', 9), +('S9', '2670', 'DURSEJ', 9), +('S9', '2671', 'DURSEJ', 9), +('S9', '2672', 'DURSEJ', 9), +('S9', '2673', 'DURSEJ', 9), +('S9', '2674', 'DURSEJ', 9), +('S9', '2675', 'DURSEJ', 9), +('S9', '2676', 'DURSEJ', 9), +('S9', '2677', 'DURSEJ', 9), +('S9', '2678', 'DURSEJ', 9), +('S9', '2679', 'DURSEJ', 9), +('S9', '2680', 'DURSEJ', 9), +('S9', '2681', 'DURSEJ', 9), +('S9', '2682', 'DURSEJ', 9), +('S9', '2683', 'DURSEJ', 9), +('S9', '2684', 'DURSEJ', 9), +('S9', '2685', 'DURSEJ', 9), +('S9', '2686', 'DURSEJ', 9), +('S9', '2687', 'DURSEJ', 9), +('S9', '2688', 'DURSEJ', 9), +('S9', '2689', 'DURSEJ', 9), +('S9', '2690', 'DURSEJ', 9), +('S9', '2691', 'DURSEJ', 9), +('S9', '2692', 'DURSEJ', 9), +('S9', '2693', 'DURSEJ', 9), +('S9', '2694', 'DURSEJ', 9), +('S9', '2695', 'DURSEJ', 9), +('S9', '2696', 'DURSEJ', 9), +('S9', '2697', 'DURSEJ', 9), +('S9', '2698', 'DURSEJ', 9), +('S9', '2699', 'DURSEJ', 9), +('S9', '2700', 'DURSEJ', 9), +('S9', '2701', 'DURSEJ', 9), +('S9', '2702', 'DURSEJ', 9), +('S9', '2703', 'DURSEJ', 9), +('S9', '2704', 'DURSEJ', 9), +('S9', '2705', 'DURSEJ', 9), +('S9', '2706', 'DURSEJ', 9), +('S9', '2707', 'DURSEJ', 9), +('S9', '2708', 'DURSEJ', 9), +('S9', '2709', 'DURSEJ', 9), +('S9', '2710', 'DURSEJ', 9), +('S9', '2711', 'DURSEJ', 9), +('S9', '2712', 'DURSEJ', 9), +('S9', '2713', 'DURSEJ', 9), +('S9', '2714', 'DURSEJ', 9), +('S9', '2715', 'DURSEJ', 9), +('S9', '2716', 'DURSEJ', 9), +('S9', '2717', 'DURSEJ', 9), +('S9', '2718', 'DURSEJ', 9), +('S9', '2719', 'DURSEJ', 9), +('S9', '2720', 'DURSEJ', 9), +('S9', '2721', 'DURSEJ', 9), +('S9', '2722', 'DURSEJ', 9), +('S9', '2723', 'DURSEJ', 9), +('S9', '2724', 'DURSEJ', 9), +('S9', '2725', 'DURSEJ', 9), +('S9', '2726', 'DURSEJ', 9), +('S9', '2727', 'DURSEJ', 9), +('S9', '2728', 'DURSEJ', 9), +('S9', '2729', 'DURSEJ', 9), +('S9', '2730', 'DURSEJ', 9), +('S9', '2731', 'DURSEJ', 9), +('S9', '2732', 'DURSEJ', 9), +('S9', '2733', 'DURSEJ', 9), +('S9', '2734', 'DURSEJ', 9), +('S9', '2735', 'DURSEJ', 9), +('S9', '2736', 'DURSEJ', 9), +('S9', '2737', 'DURSEJ', 9), +('S9', '2738', 'DURSEJ', 9), +('S9', '2739', 'DURSEJ', 9), +('S9', '2740', 'DURSEJ', 9), +('S9', '2741', 'DURSEJ', 9), +('S9', '2742', 'DURSEJ', 9), +('S9', '2743', 'DURSEJ', 9), +('S9', '2744', 'DURSEJ', 9), +('S9', '2745', 'DURSEJ', 9), +('S9', '2746', 'DURSEJ', 9), +('S9', '2747', 'DURSEJ', 9), +('S9', '2748', 'DURSEJ', 9), +('S9', '2749', 'DURSEJ', 9), +('S9', '2750', 'DURSEJ', 9), +('S9', '2751', 'DURSEJ', 9), +('S9', '2752', 'DURSEJ', 9), +('S9', '2753', 'DURSEJ', 9), +('S9', '2754', 'DURSEJ', 9), +('S9', '2755', 'DURSEJ', 9), +('S9', '2756', 'DURSEJ', 9), +('S9', '2757', 'DURSEJ', 9), +('S9', '2758', 'DURSEJ', 9), +('S9', '2759', 'DURSEJ', 9), +('S9', '2760', 'DURSEJ', 9), +('S9', '2761', 'DURSEJ', 9), +('S9', '2762', 'DURSEJ', 9), +('S9', '2763', 'DURSEJ', 9), +('S9', '2764', 'DURSEJ', 9), +('S9', '2765', 'DURSEJ', 9), +('S9', '2766', 'DURSEJ', 9), +('S9', '2767', 'DURSEJ', 9), +('S9', '2768', 'DURSEJ', 9), +('S9', '2769', 'DURSEJ', 9), +('S9', '2770', 'DURSEJ', 9), +('S9', '2771', 'DURSEJ', 9), +('S9', '2772', 'DURSEJ', 9), +('S9', '2773', 'DURSEJ', 9), +('S9', '2774', 'DURSEJ', 9), +('S9', '2775', 'DURSEJ', 9), +('S9', '2776', 'DURSEJ', 9), +('S9', '2777', 'DURSEJ', 9), +('S9', '2778', 'DURSEJ', 9), +('S9', '2779', 'DURSEJ', 9), +('S9', '2780', 'DURSEJ', 9), +('S9', '2781', 'DURSEJ', 9), +('S9', '2782', 'DURSEJ', 9), +('S9', '2783', 'DURSEJ', 9), +('S9', '2784', 'DURSEJ', 9), +('S9', '2785', 'DURSEJ', 9), +('S9', '2786', 'DURSEJ', 9), +('S9', '2787', 'DURSEJ', 9), +('S9', '2788', 'DURSEJ', 9), +('S9', '2789', 'DURSEJ', 9), +('S9', '2790', 'DURSEJ', 9), +('S9', '2791', 'DURSEJ', 9), +('S9', '2792', 'DURSEJ', 9), +('S9', '2793', 'DURSEJ', 9), +('S9', '2794', 'DURSEJ', 9), +('S9', '2795', 'DURSEJ', 9), +('S9', '2796', 'DURSEJ', 9), +('S9', '2797', 'DURSEJ', 9), +('S9', '2798', 'DURSEJ', 9), +('S9', '2799', 'DURSEJ', 9), +('S9', '2800', 'DURSEJ', 9), +('S9', '2801', 'DURSEJ', 9), +('S9', '2802', 'DURSEJ', 9), +('S9', '2803', 'DURSEJ', 9), +('S9', '2804', 'DURSEJ', 9), +('S9', '2805', 'DURSEJ', 9), +('S9', '2806', 'DURSEJ', 9), +('S9', '2807', 'DURSEJ', 9), +('S9', '2808', 'DURSEJ', 9), +('S9', '2809', 'DURSEJ', 9), +('S9', '2810', 'DURSEJ', 9), +('S9', '2811', 'DURSEJ', 9), +('S9', '2812', 'DURSEJ', 9), +('S9', '2813', 'DURSEJ', 9), +('S9', '2814', 'DURSEJ', 9), +('S9', '2815', 'DURSEJ', 9), +('S9', '2816', 'DURSEJ', 9), +('S9', '2817', 'DURSEJ', 9), +('S9', '2818', 'DURSEJ', 9), +('S9', '2819', 'DURSEJ', 9), +('S9', '2820', 'DURSEJ', 9), +('S9', '2821', 'DURSEJ', 9), +('S9', '2822', 'DURSEJ', 9), +('S9', '2823', 'DURSEJ', 9), +('S9', '2824', 'DURSEJ', 9), +('S9', '2825', 'DURSEJ', 9), +('S9', '2826', 'DURSEJ', 9), +('S9', '2827', 'DURSEJ', 9), +('S9', '2828', 'DURSEJ', 9), +('S9', '2829', 'DURSEJ', 9), +('S9', '2830', 'DURSEJ', 9), +('S9', '2831', 'DURSEJ', 9), +('S9', '2832', 'DURSEJ', 9), +('S9', '2833', 'DURSEJ', 9), +('S9', '2834', 'DURSEJ', 9), +('S9', '2835', 'DURSEJ', 9), +('S9', '2836', 'DURSEJ', 9), +('S9', '2837', 'DURSEJ', 9), +('S9', '2838', 'DURSEJ', 9), +('S9', '2839', 'DURSEJ', 9), +('S9', '2840', 'DURSEJ', 9), +('S9', '2841', 'DURSEJ', 9), +('S9', '2842', 'DURSEJ', 9), +('S9', '2843', 'DURSEJ', 9), +('S9', '2844', 'DURSEJ', 9), +('S9', '2845', 'DURSEJ', 9), +('S9', '2846', 'DURSEJ', 9), +('S9', '2847', 'DURSEJ', 9), +('S9', '2848', 'DURSEJ', 9), +('S9', '2849', 'DURSEJ', 9), +('S9', '2850', 'DURSEJ', 9), +('S9', '2851', 'DURSEJ', 9), +('S9', '2852', 'DURSEJ', 9), +('S9', '2853', 'DURSEJ', 9), +('S9', '2854', 'DURSEJ', 9), +('S9', '2855', 'DURSEJ', 9), +('S9', '2856', 'DURSEJ', 9), +('S9', '2857', 'DURSEJ', 9), +('S9', '2858', 'DURSEJ', 9), +('S9', '2859', 'DURSEJ', 9), +('S9', '2860', 'DURSEJ', 9), +('S9', '2861', 'DURSEJ', 9), +('S9', '2862', 'DURSEJ', 9), +('S9', '2863', 'DURSEJ', 9), +('S9', '2864', 'DURSEJ', 9), +('S9', '2865', 'DURSEJ', 9), +('S9', '2866', 'DURSEJ', 9), +('S9', '2867', 'DURSEJ', 9), +('S9', '2868', 'DURSEJ', 9), +('S9', '2869', 'DURSEJ', 9), +('S9', '2870', 'DURSEJ', 9), +('S9', '2871', 'DURSEJ', 9), +('S9', '2872', 'DURSEJ', 9), +('S9', '2873', 'DURSEJ', 9), +('S9', '2874', 'DURSEJ', 9), +('S9', '2875', 'DURSEJ', 9), +('S9', '2876', 'DURSEJ', 9), +('S9', '2877', 'DURSEJ', 9), +('S9', '2878', 'DURSEJ', 9), +('S9', '2879', 'DURSEJ', 9), +('S9', '2880', 'DURSEJ', 9), +('S9', '2881', 'DURSEJ', 9), +('S9', '2882', 'DURSEJ', 9), +('S9', '2883', 'DURSEJ', 9), +('S9', '2884', 'DURSEJ', 9), +('S9', '2885', 'DURSEJ', 9), +('S9', '2886', 'DURSEJ', 9), +('S9', '2887', 'DURSEJ', 9), +('S9', '2888', 'DURSEJ', 9), +('S9', '2889', 'DURSEJ', 9), +('S9', '2890', 'DURSEJ', 9), +('S9', '2891', 'DURSEJ', 9), +('S9', '2892', 'DURSEJ', 9), +('S9', '2893', 'DURSEJ', 9), +('S9', '2894', 'DURSEJ', 9), +('S9', '2895', 'DURSEJ', 9), +('S9', '2896', 'DURSEJ', 9), +('S9', '2897', 'DURSEJ', 9), +('S9', '2898', 'DURSEJ', 9), +('S9', '2899', 'DURSEJ', 9), +('S9', '2900', 'DURSEJ', 9), +('S9', '2901', 'DURSEJ', 9), +('S9', '2902', 'DURSEJ', 9), +('S9', '2903', 'DURSEJ', 9), +('S9', '2904', 'DURSEJ', 9), +('S9', '2905', 'DURSEJ', 9), +('S9', '2906', 'DURSEJ', 9), +('S9', '2907', 'DURSEJ', 9), +('S9', '2908', 'DURSEJ', 9), +('S9', '2909', 'DURSEJ', 9), +('S9', '2910', 'DURSEJ', 9), +('S9', '2911', 'DURSEJ', 9), +('S9', '2912', 'DURSEJ', 9), +('S9', '2913', 'DURSEJ', 9), +('S9', '2914', 'DURSEJ', 9), +('S9', '2915', 'DURSEJ', 9), +('S9', '2916', 'DURSEJ', 9), +('S9', '2917', 'DURSEJ', 9), +('S9', '2918', 'DURSEJ', 9), +('S9', '2919', 'DURSEJ', 9), +('S9', '2920', 'DURSEJ', 9), +('S9', '2921', 'DURSEJ', 9), +('S9', '2922', 'DURSEJ', 9), +('S9', '2923', 'DURSEJ', 9), +('S9', '2924', 'DURSEJ', 9), +('S9', '2925', 'DURSEJ', 9), +('S9', '2926', 'DURSEJ', 9), +('S9', '2927', 'DURSEJ', 9), +('S9', '2928', 'DURSEJ', 9), +('S9', '2929', 'DURSEJ', 9), +('S9', '2930', 'DURSEJ', 9), +('S9', '2931', 'DURSEJ', 9), +('S9', '2932', 'DURSEJ', 9), +('S9', '2933', 'DURSEJ', 9), +('S9', '2934', 'DURSEJ', 9), +('S9', '2935', 'DURSEJ', 9), +('S9', '2936', 'DURSEJ', 9), +('S9', '2937', 'DURSEJ', 9), +('S9', '2938', 'DURSEJ', 9), +('S9', '2939', 'DURSEJ', 9), +('S9', '2940', 'DURSEJ', 9), +('S9', '2941', 'DURSEJ', 9), +('S9', '2942', 'DURSEJ', 9), +('S9', '2943', 'DURSEJ', 9), +('S9', '2944', 'DURSEJ', 9), +('S9', '2945', 'DURSEJ', 9), +('S9', '2946', 'DURSEJ', 9), +('S9', '2947', 'DURSEJ', 9), +('S9', '2948', 'DURSEJ', 9), +('S9', '2949', 'DURSEJ', 9), +('S9', '2950', 'DURSEJ', 9), +('S9', '2951', 'DURSEJ', 9), +('S9', '2952', 'DURSEJ', 9), +('S9', '2953', 'DURSEJ', 9), +('S9', '2954', 'DURSEJ', 9), +('S9', '2955', 'DURSEJ', 9), +('S9', '2956', 'DURSEJ', 9), +('S9', '2957', 'DURSEJ', 9), +('S9', '2958', 'DURSEJ', 9), +('S9', '2959', 'DURSEJ', 9), +('S9', '2960', 'DURSEJ', 9), +('S9', '2961', 'DURSEJ', 9), +('S9', '2962', 'DURSEJ', 9), +('S9', '2963', 'DURSEJ', 9), +('S9', '2964', 'DURSEJ', 9), +('S9', '2965', 'DURSEJ', 9), +('S9', '2966', 'DURSEJ', 9), +('S9', '2967', 'DURSEJ', 9), +('S9', '2968', 'DURSEJ', 9), +('S9', '2969', 'DURSEJ', 9), +('S9', '2970', 'DURSEJ', 9), +('S9', '2971', 'DURSEJ', 9), +('S9', '2972', 'DURSEJ', 9), +('S9', '2973', 'DURSEJ', 9), +('S9', '2974', 'DURSEJ', 9), +('S9', '2975', 'DURSEJ', 9), +('S9', '2976', 'DURSEJ', 9), +('S9', '2977', 'DURSEJ', 9), +('S9', '2978', 'DURSEJ', 9), +('S9', '2979', 'DURSEJ', 9), +('S9', '2980', 'DURSEJ', 9), +('S9', '2981', 'DURSEJ', 9), +('S9', '2982', 'DURSEJ', 9), +('S9', '2983', 'DURSEJ', 9), +('S9', '2984', 'DURSEJ', 9), +('S9', '2985', 'DURSEJ', 9), +('S9', '2986', 'DURSEJ', 9), +('S9', '2987', 'DURSEJ', 9), +('S9', '2988', 'DURSEJ', 9), +('S9', '2989', 'DURSEJ', 9), +('S9', '2990', 'DURSEJ', 9), +('S9', '2991', 'DURSEJ', 9), +('S9', '2992', 'DURSEJ', 9), +('S9', '2993', 'DURSEJ', 9), +('S9', '2994', 'DURSEJ', 9), +('S9', '2995', 'DURSEJ', 9), +('S9', '2996', 'DURSEJ', 9), +('S9', '2997', 'DURSEJ', 9), +('S9', '2998', 'DURSEJ', 9), +('S9', '2999', 'DURSEJ', 9), +('S9', '3000', 'DURSEJ', 9), +('S9', '3001', 'DURSEJ', 9), +('S9', '3002', 'DURSEJ', 9), +('S9', '3003', 'DURSEJ', 9), +('S9', '3004', 'DURSEJ', 9), +('S9', '3005', 'DURSEJ', 9), +('S9', '3006', 'DURSEJ', 9), +('S9', '3007', 'DURSEJ', 9), +('S9', '3008', 'DURSEJ', 9), +('S9', '3009', 'DURSEJ', 9), +('S9', '3010', 'DURSEJ', 9), +('S9', '3011', 'DURSEJ', 9), +('S9', '3012', 'DURSEJ', 9), +('S9', '3013', 'DURSEJ', 9), +('S9', '3014', 'DURSEJ', 9), +('S9', '3015', 'DURSEJ', 9), +('S9', '3016', 'DURSEJ', 9), +('S9', '3017', 'DURSEJ', 9), +('S9', '3018', 'DURSEJ', 9), +('S9', '3019', 'DURSEJ', 9), +('S9', '3020', 'DURSEJ', 9), +('S9', '3021', 'DURSEJ', 9), +('S9', '3022', 'DURSEJ', 9), +('S9', '3023', 'DURSEJ', 9), +('S9', '3024', 'DURSEJ', 9), +('S9', '3025', 'DURSEJ', 9), +('S9', '3026', 'DURSEJ', 9), +('S9', '3027', 'DURSEJ', 9), +('S9', '3028', 'DURSEJ', 9), +('S9', '3029', 'DURSEJ', 9), +('S9', '3030', 'DURSEJ', 9), +('S9', '3031', 'DURSEJ', 9), +('S9', '3032', 'DURSEJ', 9), +('S9', '3033', 'DURSEJ', 9), +('S9', '3034', 'DURSEJ', 9), +('S9', '3035', 'DURSEJ', 9), +('S9', '3036', 'DURSEJ', 9), +('S9', '3037', 'DURSEJ', 9), +('S9', '3038', 'DURSEJ', 9), +('S9', '3039', 'DURSEJ', 9), +('S9', '3040', 'DURSEJ', 9), +('S9', '3041', 'DURSEJ', 9), +('S9', '3042', 'DURSEJ', 9), +('S9', '3043', 'DURSEJ', 9), +('S9', '3044', 'DURSEJ', 9), +('S9', '3045', 'DURSEJ', 9), +('S9', '3046', 'DURSEJ', 9), +('S9', '3047', 'DURSEJ', 9), +('S9', '3048', 'DURSEJ', 9), +('S9', '3049', 'DURSEJ', 9), +('S9', '3050', 'DURSEJ', 9), +('S9', '3051', 'DURSEJ', 9), +('S9', '3052', 'DURSEJ', 9), +('S9', '3053', 'DURSEJ', 9), +('S9', '3054', 'DURSEJ', 9), +('S9', '3055', 'DURSEJ', 9), +('S9', '3056', 'DURSEJ', 9), +('S9', '3057', 'DURSEJ', 9), +('S9', '3058', 'DURSEJ', 9), +('S9', '3059', 'DURSEJ', 9), +('S9', '3060', 'DURSEJ', 9), +('S9', '3061', 'DURSEJ', 9), +('S9', '3062', 'DURSEJ', 9), +('S9', '3063', 'DURSEJ', 9), +('S9', '3064', 'DURSEJ', 9), +('S9', '3065', 'DURSEJ', 9), +('S9', '3066', 'DURSEJ', 9), +('S9', '3067', 'DURSEJ', 9), +('S9', '3068', 'DURSEJ', 9), +('S9', '3069', 'DURSEJ', 9), +('S9', '3070', 'DURSEJ', 9), +('S9', '3071', 'DURSEJ', 9), +('S9', '3072', 'DURSEJ', 9), +('S9', '3073', 'DURSEJ', 9), +('S9', '3074', 'DURSEJ', 9), +('S9', '3075', 'DURSEJ', 9), +('S9', '3076', 'DURSEJ', 9), +('S9', '3077', 'DURSEJ', 9), +('S9', '3078', 'DURSEJ', 9), +('S9', '3079', 'DURSEJ', 9), +('S9', '3080', 'DURSEJ', 9), +('S9', '3081', 'DURSEJ', 9), +('S9', '3082', 'DURSEJ', 9), +('S9', '3083', 'DURSEJ', 9), +('S9', '3084', 'DURSEJ', 9), +('S9', '3085', 'DURSEJ', 9), +('S9', '3086', 'DURSEJ', 9), +('S9', '3087', 'DURSEJ', 9), +('S9', '3088', 'DURSEJ', 9), +('S9', '3089', 'DURSEJ', 9), +('S9', '3090', 'DURSEJ', 9), +('S9', '3091', 'DURSEJ', 9), +('S9', '3092', 'DURSEJ', 9), +('S9', '3093', 'DURSEJ', 9), +('S9', '3094', 'DURSEJ', 9), +('S9', '3095', 'DURSEJ', 9), +('S9', '3096', 'DURSEJ', 9), +('S9', '3097', 'DURSEJ', 9), +('S9', '3098', 'DURSEJ', 9), +('S9', '3099', 'DURSEJ', 9), +('S9', '3100', 'DURSEJ', 9), +('S9', '3101', 'DURSEJ', 9), +('S9', '3102', 'DURSEJ', 9), +('S9', '3103', 'DURSEJ', 9), +('S9', '3104', 'DURSEJ', 9), +('S9', '3105', 'DURSEJ', 9), +('S9', '3106', 'DURSEJ', 9), +('S9', '3107', 'DURSEJ', 9), +('S9', '3108', 'DURSEJ', 9), +('S9', '3109', 'DURSEJ', 9), +('S9', '3110', 'DURSEJ', 9), +('S9', '3111', 'DURSEJ', 9), +('S9', '3112', 'DURSEJ', 9), +('S9', '3113', 'DURSEJ', 9), +('S9', '3114', 'DURSEJ', 9), +('S9', '3115', 'DURSEJ', 9), +('S9', '3116', 'DURSEJ', 9), +('S9', '3117', 'DURSEJ', 9), +('S9', '3118', 'DURSEJ', 9), +('S9', '3119', 'DURSEJ', 9), +('S9', '3120', 'DURSEJ', 9), +('S9', '3121', 'DURSEJ', 9), +('S9', '3122', 'DURSEJ', 9), +('S9', '3123', 'DURSEJ', 9), +('S9', '3124', 'DURSEJ', 9), +('S9', '3125', 'DURSEJ', 9), +('S9', '3126', 'DURSEJ', 9), +('S9', '3127', 'DURSEJ', 9), +('S9', '3128', 'DURSEJ', 9), +('S9', '3129', 'DURSEJ', 9), +('S9', '3130', 'DURSEJ', 9), +('S9', '3131', 'DURSEJ', 9), +('S9', '3132', 'DURSEJ', 9), +('S9', '3133', 'DURSEJ', 9), +('S9', '3134', 'DURSEJ', 9), +('S9', '3135', 'DURSEJ', 9), +('S9', '3136', 'DURSEJ', 9), +('S9', '3137', 'DURSEJ', 9), +('S9', '3138', 'DURSEJ', 9), +('S9', '3139', 'DURSEJ', 9), +('S9', '3140', 'DURSEJ', 9), +('S9', '3141', 'DURSEJ', 9), +('S9', '3142', 'DURSEJ', 9), +('S9', '3143', 'DURSEJ', 9), +('S9', '3144', 'DURSEJ', 9), +('S9', '3145', 'DURSEJ', 9), +('S9', '3146', 'DURSEJ', 9), +('S9', '3147', 'DURSEJ', 9), +('S9', '3148', 'DURSEJ', 9), +('S9', '3149', 'DURSEJ', 9), +('S9', '3150', 'DURSEJ', 9), +('S9', '3151', 'DURSEJ', 9), +('S9', '3152', 'DURSEJ', 9), +('S9', '3153', 'DURSEJ', 9), +('S9', '3154', 'DURSEJ', 9), +('S9', '3155', 'DURSEJ', 9), +('S9', '3156', 'DURSEJ', 9), +('S9', '3157', 'DURSEJ', 9), +('S9', '3158', 'DURSEJ', 9), +('S9', '3159', 'DURSEJ', 9), +('S9', '3160', 'DURSEJ', 9), +('S9', '3161', 'DURSEJ', 9), +('S9', '3162', 'DURSEJ', 9), +('S9', '3163', 'DURSEJ', 9), +('S9', '3164', 'DURSEJ', 9), +('S9', '3165', 'DURSEJ', 9), +('S9', '3166', 'DURSEJ', 9), +('S9', '3167', 'DURSEJ', 9), +('S9', '3168', 'DURSEJ', 9), +('S9', '3169', 'DURSEJ', 9), +('S9', '3170', 'DURSEJ', 9), +('S9', '3171', 'DURSEJ', 9), +('S9', '3172', 'DURSEJ', 9), +('S9', '3173', 'DURSEJ', 9), +('S9', '3174', 'DURSEJ', 9), +('S9', '3175', 'DURSEJ', 9), +('S9', '3176', 'DURSEJ', 9), +('S9', '3177', 'DURSEJ', 9), +('S9', '3178', 'DURSEJ', 9), +('S9', '3179', 'DURSEJ', 9), +('S9', '3180', 'DURSEJ', 9), +('S9', '3181', 'DURSEJ', 9), +('S9', '3182', 'DURSEJ', 9), +('S9', '3183', 'DURSEJ', 9), +('S9', '3184', 'DURSEJ', 9), +('S9', '3185', 'DURSEJ', 9), +('S9', '3186', 'DURSEJ', 9), +('S9', '3187', 'DURSEJ', 9), +('S9', '3188', 'DURSEJ', 9), +('S9', '3189', 'DURSEJ', 9), +('S9', '3190', 'DURSEJ', 9), +('S9', '3191', 'DURSEJ', 9), +('S9', '3192', 'DURSEJ', 9), +('S9', '3193', 'DURSEJ', 9), +('S9', '3194', 'DURSEJ', 9), +('S9', '3195', 'DURSEJ', 9), +('S9', '3196', 'DURSEJ', 9), +('S9', '3197', 'DURSEJ', 9), +('S9', '3198', 'DURSEJ', 9), +('S9', '3199', 'DURSEJ', 9), +('S9', '3200', 'DURSEJ', 9), +('S9', '3201', 'DURSEJ', 9), +('S9', '3202', 'DURSEJ', 9), +('S9', '3203', 'DURSEJ', 9), +('S9', '3204', 'DURSEJ', 9), +('S9', '3205', 'DURSEJ', 9), +('S9', '3206', 'DURSEJ', 9), +('S9', '3207', 'DURSEJ', 9), +('S9', '3208', 'DURSEJ', 9), +('S9', '3209', 'DURSEJ', 9), +('S9', '3210', 'DURSEJ', 9), +('S9', '3211', 'DURSEJ', 9), +('S9', '3212', 'DURSEJ', 9), +('S9', '3213', 'DURSEJ', 9), +('S9', '3214', 'DURSEJ', 9), +('S9', '3215', 'DURSEJ', 9), +('S9', '3216', 'DURSEJ', 9), +('S9', '3217', 'DURSEJ', 9), +('S9', '3218', 'DURSEJ', 9), +('S9', '3219', 'DURSEJ', 9), +('S9', '3220', 'DURSEJ', 9), +('S9', '3221', 'DURSEJ', 9), +('S9', '3222', 'DURSEJ', 9), +('S9', '3223', 'DURSEJ', 9), +('S9', '3224', 'DURSEJ', 9), +('S9', '3225', 'DURSEJ', 9), +('S9', '3226', 'DURSEJ', 9), +('S9', '3227', 'DURSEJ', 9), +('S9', '3228', 'DURSEJ', 9), +('S9', '3229', 'DURSEJ', 9), +('S9', '3230', 'DURSEJ', 9), +('S9', '3231', 'DURSEJ', 9), +('S9', '3232', 'DURSEJ', 9), +('S9', '3233', 'DURSEJ', 9), +('S9', '3234', 'DURSEJ', 9), +('S9', '3235', 'DURSEJ', 9), +('S9', '3236', 'DURSEJ', 9), +('S9', '3237', 'DURSEJ', 9), +('S9', '3238', 'DURSEJ', 9), +('S9', '3239', 'DURSEJ', 9), +('S9', '3240', 'DURSEJ', 9), +('S9', '3241', 'DURSEJ', 9), +('S9', '3242', 'DURSEJ', 9), +('S9', '3243', 'DURSEJ', 9), +('S9', '3244', 'DURSEJ', 9), +('S9', '3245', 'DURSEJ', 9), +('S9', '3246', 'DURSEJ', 9), +('S9', '3247', 'DURSEJ', 9), +('S9', '3248', 'DURSEJ', 9), +('S9', '3249', 'DURSEJ', 9), +('S9', '3250', 'DURSEJ', 9), +('S9', '3251', 'DURSEJ', 9), +('S9', '3252', 'DURSEJ', 9), +('S9', '3253', 'DURSEJ', 9), +('S9', '3254', 'DURSEJ', 9), +('S9', '3255', 'DURSEJ', 9), +('S9', '3256', 'DURSEJ', 9), +('S9', '3257', 'DURSEJ', 9), +('S9', '3258', 'DURSEJ', 9), +('S9', '3259', 'DURSEJ', 9), +('S9', '3260', 'DURSEJ', 9), +('S9', '3261', 'DURSEJ', 9), +('S9', '3262', 'DURSEJ', 9), +('S9', '3263', 'DURSEJ', 9), +('S9', '3264', 'DURSEJ', 9), +('S9', '3265', 'DURSEJ', 9), +('S9', '3266', 'DURSEJ', 9), +('S9', '3267', 'DURSEJ', 9), +('S9', '3268', 'DURSEJ', 9), +('S9', '3269', 'DURSEJ', 9), +('S9', '3270', 'DURSEJ', 9), +('S9', '3271', 'DURSEJ', 9), +('S9', '3272', 'DURSEJ', 9), +('S9', '3273', 'DURSEJ', 9), +('S9', '3274', 'DURSEJ', 9), +('S9', '3275', 'DURSEJ', 9), +('S9', '3276', 'DURSEJ', 9), +('S9', '3277', 'DURSEJ', 9), +('S9', '3278', 'DURSEJ', 9), +('S9', '3279', 'DURSEJ', 9), +('S9', '3280', 'DURSEJ', 9), +('S9', '3281', 'DURSEJ', 9), +('S9', '3282', 'DURSEJ', 9), +('S9', '3283', 'DURSEJ', 9), +('S9', '3284', 'DURSEJ', 9), +('S9', '3285', 'DURSEJ', 9), +('S9', '3286', 'DURSEJ', 9), +('S9', '3287', 'DURSEJ', 9), +('S9', '3288', 'DURSEJ', 9), +('S9', '3289', 'DURSEJ', 9), +('S9', '3290', 'DURSEJ', 9), +('S9', '3291', 'DURSEJ', 9), +('S9', '3292', 'DURSEJ', 9), +('S9', '3293', 'DURSEJ', 9), +('S9', '3294', 'DURSEJ', 9), +('S9', '3295', 'DURSEJ', 9), +('S9', '3296', 'DURSEJ', 9), +('S9', '3297', 'DURSEJ', 9), +('S9', '3298', 'DURSEJ', 9), +('S9', '3299', 'DURSEJ', 9), +('S9', '3300', 'DURSEJ', 9), +('S9', '3301', 'DURSEJ', 9), +('S9', '3302', 'DURSEJ', 9), +('S9', '3303', 'DURSEJ', 9), +('S9', '3304', 'DURSEJ', 9), +('S9', '3305', 'DURSEJ', 9), +('S9', '3306', 'DURSEJ', 9), +('S9', '3307', 'DURSEJ', 9), +('S9', '3308', 'DURSEJ', 9), +('S9', '3309', 'DURSEJ', 9), +('S9', '3310', 'DURSEJ', 9), +('S9', '3311', 'DURSEJ', 9), +('S9', '3312', 'DURSEJ', 9), +('S9', '3313', 'DURSEJ', 9), +('S9', '3314', 'DURSEJ', 9), +('S9', '3315', 'DURSEJ', 9), +('S9', '3316', 'DURSEJ', 9), +('S9', '3317', 'DURSEJ', 9), +('S9', '3318', 'DURSEJ', 9), +('S9', '3319', 'DURSEJ', 9), +('S9', '3320', 'DURSEJ', 9), +('S9', '3321', 'DURSEJ', 9), +('S9', '3322', 'DURSEJ', 9), +('S9', '3323', 'DURSEJ', 9), +('S9', '3324', 'DURSEJ', 9), +('S9', '3325', 'DURSEJ', 9), +('S9', '3326', 'DURSEJ', 9), +('S9', '3327', 'DURSEJ', 9), +('S9', '3328', 'DURSEJ', 9), +('S9', '3329', 'DURSEJ', 9), +('S9', '3330', 'DURSEJ', 9), +('S9', '3331', 'DURSEJ', 9), +('S9', '3332', 'DURSEJ', 9), +('S9', '3333', 'DURSEJ', 9), +('S9', '3334', 'DURSEJ', 9), +('S9', '3335', 'DURSEJ', 9), +('S9', '3336', 'DURSEJ', 9), +('S9', '3337', 'DURSEJ', 9), +('S9', '3338', 'DURSEJ', 9), +('S9', '3339', 'DURSEJ', 9), +('S9', '3340', 'DURSEJ', 9), +('S9', '3341', 'DURSEJ', 9), +('S9', '3342', 'DURSEJ', 9), +('S9', '3343', 'DURSEJ', 9), +('S9', '3344', 'DURSEJ', 9), +('S9', '3345', 'DURSEJ', 9), +('S9', '3346', 'DURSEJ', 9), +('S9', '3347', 'DURSEJ', 9), +('S9', '3348', 'DURSEJ', 9), +('S9', '3349', 'DURSEJ', 9), +('S9', '3350', 'DURSEJ', 9), +('S9', '3351', 'DURSEJ', 9), +('S9', '3352', 'DURSEJ', 9), +('S9', '3353', 'DURSEJ', 9), +('S9', '3354', 'DURSEJ', 9), +('S9', '3355', 'DURSEJ', 9), +('S9', '3356', 'DURSEJ', 9), +('S9', '3357', 'DURSEJ', 9), +('S9', '3358', 'DURSEJ', 9), +('S9', '3359', 'DURSEJ', 9), +('S9', '3360', 'DURSEJ', 9), +('S9', '3361', 'DURSEJ', 9), +('S9', '3362', 'DURSEJ', 9), +('S9', '3363', 'DURSEJ', 9), +('S9', '3364', 'DURSEJ', 9), +('S9', '3365', 'DURSEJ', 9), +('S9', '3366', 'DURSEJ', 9), +('S9', '3367', 'DURSEJ', 9), +('S9', '3368', 'DURSEJ', 9), +('S9', '3369', 'DURSEJ', 9), +('S9', '3370', 'DURSEJ', 9), +('S9', '3371', 'DURSEJ', 9), +('S9', '3372', 'DURSEJ', 9), +('S9', '3373', 'DURSEJ', 9), +('S9', '3374', 'DURSEJ', 9), +('S9', '3375', 'DURSEJ', 9), +('S9', '3376', 'DURSEJ', 9), +('S9', '3377', 'DURSEJ', 9), +('S9', '3378', 'DURSEJ', 9), +('S9', '3379', 'DURSEJ', 9), +('S9', '3380', 'DURSEJ', 9), +('S9', '3381', 'DURSEJ', 9), +('S9', '3382', 'DURSEJ', 9), +('S9', '3383', 'DURSEJ', 9), +('S9', '3384', 'DURSEJ', 9), +('S9', '3385', 'DURSEJ', 9), +('S9', '3386', 'DURSEJ', 9), +('S9', '3387', 'DURSEJ', 9), +('S9', '3388', 'DURSEJ', 9), +('S9', '3389', 'DURSEJ', 9), +('S9', '3390', 'DURSEJ', 9), +('S9', '3391', 'DURSEJ', 9), +('S9', '3392', 'DURSEJ', 9), +('S9', '3393', 'DURSEJ', 9), +('S9', '3394', 'DURSEJ', 9), +('S9', '3395', 'DURSEJ', 9), +('S9', '3396', 'DURSEJ', 9), +('S9', '3397', 'DURSEJ', 9), +('S9', '3398', 'DURSEJ', 9), +('S9', '3399', 'DURSEJ', 9), +('S9', '3400', 'DURSEJ', 9), +('S9', '3401', 'DURSEJ', 9), +('S9', '3402', 'DURSEJ', 9), +('S9', '3403', 'DURSEJ', 9), +('S9', '3404', 'DURSEJ', 9), +('S9', '3405', 'DURSEJ', 9), +('S9', '3406', 'DURSEJ', 9), +('S9', '3407', 'DURSEJ', 9), +('S9', '3408', 'DURSEJ', 9), +('S9', '3409', 'DURSEJ', 9), +('S9', '3410', 'DURSEJ', 9), +('S9', '3411', 'DURSEJ', 9), +('S9', '3412', 'DURSEJ', 9), +('S9', '3413', 'DURSEJ', 9), +('S9', '3414', 'DURSEJ', 9), +('S9', '3415', 'DURSEJ', 9), +('S9', '3416', 'DURSEJ', 9), +('S9', '3417', 'DURSEJ', 9), +('S9', '3418', 'DURSEJ', 9), +('S9', '3419', 'DURSEJ', 9), +('S9', '3420', 'DURSEJ', 9), +('S9', '3421', 'DURSEJ', 9), +('S9', '3422', 'DURSEJ', 9), +('S9', '3423', 'DURSEJ', 9), +('S9', '3424', 'DURSEJ', 9), +('S9', '3425', 'DURSEJ', 9), +('S9', '3426', 'DURSEJ', 9), +('S9', '3427', 'DURSEJ', 9), +('S9', '3428', 'DURSEJ', 9), +('S9', '3429', 'DURSEJ', 9), +('S9', '3430', 'DURSEJ', 9), +('S9', '3431', 'DURSEJ', 9), +('S9', '3432', 'DURSEJ', 9), +('S9', '3433', 'DURSEJ', 9), +('S9', '3434', 'DURSEJ', 9), +('S9', '3435', 'DURSEJ', 9), +('S9', '3436', 'DURSEJ', 9), +('S9', '3437', 'DURSEJ', 9), +('S9', '3438', 'DURSEJ', 9), +('S9', '3439', 'DURSEJ', 9), +('S9', '3440', 'DURSEJ', 9), +('S9', '3441', 'DURSEJ', 9), +('S9', '3442', 'DURSEJ', 9), +('S9', '3443', 'DURSEJ', 9), +('S9', '3444', 'DURSEJ', 9), +('S9', '3445', 'DURSEJ', 9), +('S9', '3446', 'DURSEJ', 9), +('S9', '3447', 'DURSEJ', 9), +('S9', '3448', 'DURSEJ', 9), +('S9', '3449', 'DURSEJ', 9), +('S9', '3450', 'DURSEJ', 9), +('S9', '3451', 'DURSEJ', 9), +('S9', '3452', 'DURSEJ', 9), +('S9', '3453', 'DURSEJ', 9), +('S9', '3454', 'DURSEJ', 9), +('S9', '3455', 'DURSEJ', 9), +('S9', '3456', 'DURSEJ', 9), +('S9', '3457', 'DURSEJ', 9), +('S9', '3458', 'DURSEJ', 9), +('S9', '3459', 'DURSEJ', 9), +('S9', '3460', 'DURSEJ', 9), +('S9', '3461', 'DURSEJ', 9), +('S9', '3462', 'DURSEJ', 9), +('S9', '3463', 'DURSEJ', 9), +('S9', '3464', 'DURSEJ', 9), +('S9', '3465', 'DURSEJ', 9), +('S9', '3466', 'DURSEJ', 9), +('S9', '3467', 'DURSEJ', 9), +('S9', '3468', 'DURSEJ', 9), +('S9', '3469', 'DURSEJ', 9), +('S9', '3470', 'DURSEJ', 9), +('S9', '3471', 'DURSEJ', 9), +('S9', '3472', 'DURSEJ', 9), +('S9', '3473', 'DURSEJ', 9), +('S9', '3474', 'DURSEJ', 9), +('S9', '3475', 'DURSEJ', 9), +('S9', '3476', 'DURSEJ', 9), +('S9', '3477', 'DURSEJ', 9), +('S9', '3478', 'DURSEJ', 9), +('S9', '3479', 'DURSEJ', 9), +('S9', '3480', 'DURSEJ', 9), +('S9', '3481', 'DURSEJ', 9), +('S9', '3482', 'DURSEJ', 9), +('S9', '3483', 'DURSEJ', 9), +('S9', '3484', 'DURSEJ', 9), +('S9', '3485', 'DURSEJ', 9), +('S9', '3486', 'DURSEJ', 9), +('S9', '3487', 'DURSEJ', 9), +('S9', '3488', 'DURSEJ', 9), +('S9', '3489', 'DURSEJ', 9), +('S9', '3490', 'DURSEJ', 9), +('S9', '3491', 'DURSEJ', 9), +('S9', '3492', 'DURSEJ', 9), +('S9', '3493', 'DURSEJ', 9), +('S9', '3494', 'DURSEJ', 9), +('S9', '3495', 'DURSEJ', 9), +('S9', '3496', 'DURSEJ', 9), +('S9', '3497', 'DURSEJ', 9), +('S9', '3498', 'DURSEJ', 9), +('S9', '3499', 'DURSEJ', 9), +('S9', '3500', 'DURSEJ', 9), +('S9', '3501', 'DURSEJ', 9), +('S9', '3502', 'DURSEJ', 9), +('S9', '3503', 'DURSEJ', 9), +('S9', '3504', 'DURSEJ', 9), +('S9', '3505', 'DURSEJ', 9), +('S9', '3506', 'DURSEJ', 9), +('S9', '3507', 'DURSEJ', 9), +('S9', '3508', 'DURSEJ', 9), +('S9', '3509', 'DURSEJ', 9), +('S9', '3510', 'DURSEJ', 9), +('S9', '3511', 'DURSEJ', 9), +('S9', '3512', 'DURSEJ', 9), +('S9', '3513', 'DURSEJ', 9), +('S9', '3514', 'DURSEJ', 9), +('S9', '3515', 'DURSEJ', 9), +('S9', '3516', 'DURSEJ', 9), +('S9', '3517', 'DURSEJ', 9), +('S9', '3518', 'DURSEJ', 9), +('S9', '3519', 'DURSEJ', 9), +('S9', '3520', 'DURSEJ', 9), +('S9', '3521', 'DURSEJ', 9), +('S9', '3522', 'DURSEJ', 9), +('S9', '3523', 'DURSEJ', 9), +('S9', '3524', 'DURSEJ', 9), +('S9', '3525', 'DURSEJ', 9), +('S9', '3526', 'DURSEJ', 9), +('S9', '3527', 'DURSEJ', 9), +('S9', '3528', 'DURSEJ', 9), +('S9', '3529', 'DURSEJ', 9), +('S9', '3530', 'DURSEJ', 9), +('S9', '3531', 'DURSEJ', 9), +('S9', '3532', 'DURSEJ', 9), +('S9', '3533', 'DURSEJ', 9), +('S9', '3534', 'DURSEJ', 9), +('S9', '3535', 'DURSEJ', 9), +('S9', '3536', 'DURSEJ', 9), +('S9', '3537', 'DURSEJ', 9), +('S9', '3538', 'DURSEJ', 9), +('S9', '3539', 'DURSEJ', 9), +('S9', '3540', 'DURSEJ', 9), +('S9', '3541', 'DURSEJ', 9), +('S9', '3542', 'DURSEJ', 9), +('S9', '3543', 'DURSEJ', 9), +('S9', '3544', 'DURSEJ', 9), +('S9', '3545', 'DURSEJ', 9), +('S9', '3546', 'DURSEJ', 9), +('S9', '3547', 'DURSEJ', 9), +('S9', '3548', 'DURSEJ', 9), +('S9', '3549', 'DURSEJ', 9), +('S9', '3550', 'DURSEJ', 9), +('S9', '3551', 'DURSEJ', 9), +('S9', '3552', 'DURSEJ', 9), +('S9', '3553', 'DURSEJ', 9), +('S9', '3554', 'DURSEJ', 9), +('S9', '3555', 'DURSEJ', 9), +('S9', '3556', 'DURSEJ', 9), +('S9', '3557', 'DURSEJ', 9), +('S9', '3558', 'DURSEJ', 9), +('S9', '3559', 'DURSEJ', 9), +('S9', '3560', 'DURSEJ', 9), +('S9', '3561', 'DURSEJ', 9), +('S9', '3562', 'DURSEJ', 9), +('S9', '3563', 'DURSEJ', 9), +('S9', '3564', 'DURSEJ', 9), +('S9', '3565', 'DURSEJ', 9), +('S9', '3566', 'DURSEJ', 9), +('S9', '3567', 'DURSEJ', 9), +('S9', '3568', 'DURSEJ', 9), +('S9', '3569', 'DURSEJ', 9), +('S9', '3570', 'DURSEJ', 9), +('S9', '3571', 'DURSEJ', 9), +('S9', '3572', 'DURSEJ', 9), +('S9', '3573', 'DURSEJ', 9), +('S9', '3574', 'DURSEJ', 9), +('S9', '3575', 'DURSEJ', 9), +('S9', '3576', 'DURSEJ', 9), +('S9', '3577', 'DURSEJ', 9), +('S9', '3578', 'DURSEJ', 9), +('S9', '3579', 'DURSEJ', 9), +('S9', '3580', 'DURSEJ', 9), +('S9', '3581', 'DURSEJ', 9), +('S9', '3582', 'DURSEJ', 9), +('S9', '3583', 'DURSEJ', 9), +('S9', '3584', 'DURSEJ', 9), +('S9', '3585', 'DURSEJ', 9), +('S9', '3586', 'DURSEJ', 9), +('S9', '3587', 'DURSEJ', 9), +('S9', '3588', 'DURSEJ', 9), +('S9', '3589', 'DURSEJ', 9), +('S9', '3590', 'DURSEJ', 9), +('S9', '3591', 'DURSEJ', 9), +('S9', '3592', 'DURSEJ', 9), +('S9', '3593', 'DURSEJ', 9), +('S9', '3594', 'DURSEJ', 9), +('S9', '3595', 'DURSEJ', 9), +('S9', '3596', 'DURSEJ', 9), +('S9', '3597', 'DURSEJ', 9), +('S9', '3598', 'DURSEJ', 9), +('S9', '3599', 'DURSEJ', 9), +('S9', '3600', 'DURSEJ', 9), +('S9', '3601', 'DURSEJ', 9), +('S9', '3602', 'DURSEJ', 9), +('S9', '3603', 'DURSEJ', 9), +('S9', '3604', 'DURSEJ', 9), +('S9', '3605', 'DURSEJ', 9), +('S9', '3606', 'DURSEJ', 9), +('S9', '3607', 'DURSEJ', 9), +('S9', '3608', 'DURSEJ', 9), +('S9', '3609', 'DURSEJ', 9), +('S9', '3610', 'DURSEJ', 9), +('S9', '3611', 'DURSEJ', 9), +('S9', '3612', 'DURSEJ', 9), +('S9', '3613', 'DURSEJ', 9), +('S9', '3614', 'DURSEJ', 9), +('S9', '3615', 'DURSEJ', 9), +('S9', '3616', 'DURSEJ', 9), +('S9', '3617', 'DURSEJ', 9), +('S9', '3618', 'DURSEJ', 9), +('S9', '3619', 'DURSEJ', 9), +('S9', '3620', 'DURSEJ', 9), +('S9', '3621', 'DURSEJ', 9), +('S9', '3622', 'DURSEJ', 9), +('S9', '3623', 'DURSEJ', 9), +('S9', '3624', 'DURSEJ', 9), +('S9', '3625', 'DURSEJ', 9), +('S9', '3626', 'DURSEJ', 9), +('S9', '3627', 'DURSEJ', 9), +('S9', '3628', 'DURSEJ', 9), +('S9', '3629', 'DURSEJ', 9), +('S9', '3630', 'DURSEJ', 9), +('S9', '3631', 'DURSEJ', 9), +('S9', '3632', 'DURSEJ', 9), +('S9', '3633', 'DURSEJ', 9), +('S9', '3634', 'DURSEJ', 9), +('S9', '3635', 'DURSEJ', 9), +('S9', '3636', 'DURSEJ', 9), +('S9', '3637', 'DURSEJ', 9), +('S9', '3638', 'DURSEJ', 9), +('S9', '3639', 'DURSEJ', 9), +('S9', '3640', 'DURSEJ', 9), +('S9', '3641', 'DURSEJ', 9), +('S9', '3642', 'DURSEJ', 9), +('S9', '3643', 'DURSEJ', 9), +('S9', '3644', 'DURSEJ', 9), +('S9', '3645', 'DURSEJ', 9), +('S9', '3646', 'DURSEJ', 9), +('S9', '3647', 'DURSEJ', 9), +('S9', '3648', 'DURSEJ', 9), +('S9', '3649', 'DURSEJ', 9), +('S9', '3650', 'DURSEJ', 9), +('S9', '3651', 'DURSEJ', 9), +('S9', '3652', 'DURSEJ', 9), +('S9', '3653', 'DURSEJ', 9), +('S9', '3654', 'DURSEJ', 9), +('S9', '3655', 'DURSEJ', 9), +('S9', '3656', 'DURSEJ', 9), +('S9', '3657', 'DURSEJ', 9), +('S9', '3658', 'DURSEJ', 9), +('S9', '3659', 'DURSEJ', 9), +('S9', '3660', 'DURSEJ', 9), +('S9', '3661', 'DURSEJ', 9), +('S9', '3662', 'DURSEJ', 9), +('S9', '3663', 'DURSEJ', 9), +('S9', '3664', 'DURSEJ', 9), +('S9', '3665', 'DURSEJ', 9), +('S9', '3666', 'DURSEJ', 9), +('S9', '3667', 'DURSEJ', 9), +('S9', '3668', 'DURSEJ', 9), +('S9', '3669', 'DURSEJ', 9), +('S9', '3670', 'DURSEJ', 9), +('S9', '3671', 'DURSEJ', 9), +('S9', '3672', 'DURSEJ', 9), +('S9', '3673', 'DURSEJ', 9), +('S9', '3674', 'DURSEJ', 9), +('S9', '3675', 'DURSEJ', 9), +('S9', '3676', 'DURSEJ', 9), +('S9', '3677', 'DURSEJ', 9), +('S9', '3678', 'DURSEJ', 9), +('S9', '3679', 'DURSEJ', 9), +('S9', '3680', 'DURSEJ', 9), +('S9', '3681', 'DURSEJ', 9), +('S9', '3682', 'DURSEJ', 9), +('S9', '3683', 'DURSEJ', 9), +('S9', '3684', 'DURSEJ', 9), +('S9', '3685', 'DURSEJ', 9), +('S9', '3686', 'DURSEJ', 9), +('S9', '3687', 'DURSEJ', 9), +('S9', '3688', 'DURSEJ', 9), +('S9', '3689', 'DURSEJ', 9), +('S9', '3690', 'DURSEJ', 9), +('S9', '3691', 'DURSEJ', 9), +('S9', '3692', 'DURSEJ', 9), +('S9', '3693', 'DURSEJ', 9), +('S9', '3694', 'DURSEJ', 9), +('S9', '3695', 'DURSEJ', 9), +('S9', '3696', 'DURSEJ', 9), +('S9', '3697', 'DURSEJ', 9), +('S9', '3698', 'DURSEJ', 9), +('S9', '3699', 'DURSEJ', 9), +('S9', '3700', 'DURSEJ', 9), +('S9', '3701', 'DURSEJ', 9), +('S9', '3702', 'DURSEJ', 9), +('S9', '3703', 'DURSEJ', 9), +('S9', '3704', 'DURSEJ', 9), +('S9', '3705', 'DURSEJ', 9), +('S9', '3706', 'DURSEJ', 9), +('S9', '3707', 'DURSEJ', 9), +('S9', '3708', 'DURSEJ', 9), +('S9', '3709', 'DURSEJ', 9), +('S9', '3710', 'DURSEJ', 9), +('S9', '3711', 'DURSEJ', 9), +('S9', '3712', 'DURSEJ', 9), +('S9', '3713', 'DURSEJ', 9), +('S9', '3714', 'DURSEJ', 9), +('S9', '3715', 'DURSEJ', 9), +('S9', '3716', 'DURSEJ', 9), +('S9', '3717', 'DURSEJ', 9), +('S9', '3718', 'DURSEJ', 9), +('S9', '3719', 'DURSEJ', 9), +('S9', '3720', 'DURSEJ', 9), +('S9', '3721', 'DURSEJ', 9), +('S9', '3722', 'DURSEJ', 9), +('S9', '3723', 'DURSEJ', 9), +('S9', '3724', 'DURSEJ', 9), +('S9', '3725', 'DURSEJ', 9), +('S9', '3726', 'DURSEJ', 9), +('S9', '3727', 'DURSEJ', 9), +('S9', '3728', 'DURSEJ', 9), +('S9', '3729', 'DURSEJ', 9), +('S9', '3730', 'DURSEJ', 9), +('S9', '3731', 'DURSEJ', 9), +('S9', '3732', 'DURSEJ', 9), +('S9', '3733', 'DURSEJ', 9), +('S9', '3734', 'DURSEJ', 9), +('S9', '3735', 'DURSEJ', 9), +('S9', '3736', 'DURSEJ', 9), +('S9', '3737', 'DURSEJ', 9), +('S9', '3738', 'DURSEJ', 9), +('S9', '3739', 'DURSEJ', 9), +('S9', '3740', 'DURSEJ', 9), +('S9', '3741', 'DURSEJ', 9), +('S9', '3742', 'DURSEJ', 9), +('S9', '3743', 'DURSEJ', 9), +('S9', '3744', 'DURSEJ', 9), +('S9', '3745', 'DURSEJ', 9), +('S9', '3746', 'DURSEJ', 9), +('S9', '3747', 'DURSEJ', 9), +('S9', '3748', 'DURSEJ', 9), +('S9', '3749', 'DURSEJ', 9), +('S9', '3750', 'DURSEJ', 9), +('S9', '3751', 'DURSEJ', 9), +('S9', '3752', 'DURSEJ', 9), +('S9', '3753', 'DURSEJ', 9), +('S9', '3754', 'DURSEJ', 9), +('S9', '3755', 'DURSEJ', 9), +('S9', '3756', 'DURSEJ', 9), +('S9', '3757', 'DURSEJ', 9), +('S9', '3758', 'DURSEJ', 9), +('S9', '3759', 'DURSEJ', 9), +('S9', '3760', 'DURSEJ', 9), +('S9', '3761', 'DURSEJ', 9), +('S9', '3762', 'DURSEJ', 9), +('S9', '3763', 'DURSEJ', 9), +('S9', '3764', 'DURSEJ', 9), +('S9', '3765', 'DURSEJ', 9), +('S9', '3766', 'DURSEJ', 9), +('S9', '3767', 'DURSEJ', 9), +('S9', '3768', 'DURSEJ', 9), +('S9', '3769', 'DURSEJ', 9), +('S9', '3770', 'DURSEJ', 9), +('S9', '3771', 'DURSEJ', 9), +('S9', '3772', 'DURSEJ', 9), +('S9', '3773', 'DURSEJ', 9), +('S9', '3774', 'DURSEJ', 9), +('S9', '3775', 'DURSEJ', 9), +('S9', '3776', 'DURSEJ', 9), +('S9', '3777', 'DURSEJ', 9), +('S9', '3778', 'DURSEJ', 9), +('S9', '3779', 'DURSEJ', 9), +('S9', '3780', 'DURSEJ', 9), +('S9', '3781', 'DURSEJ', 9), +('S9', '3782', 'DURSEJ', 9), +('S9', '3783', 'DURSEJ', 9), +('S9', '3784', 'DURSEJ', 9), +('S9', '3785', 'DURSEJ', 9), +('S9', '3786', 'DURSEJ', 9), +('S9', '3787', 'DURSEJ', 9), +('S9', '3788', 'DURSEJ', 9), +('S9', '3789', 'DURSEJ', 9), +('S9', '3790', 'DURSEJ', 9), +('S9', '3791', 'DURSEJ', 9), +('S9', '3792', 'DURSEJ', 9), +('S9', '3793', 'DURSEJ', 9), +('S9', '3794', 'DURSEJ', 9), +('S9', '3795', 'DURSEJ', 9), +('S9', '3796', 'DURSEJ', 9), +('S9', '3797', 'DURSEJ', 9), +('S9', '3798', 'DURSEJ', 9), +('S9', '3799', 'DURSEJ', 9), +('S9', '3800', 'DURSEJ', 9), +('S9', '3801', 'DURSEJ', 9), +('S9', '3802', 'DURSEJ', 9), +('S9', '3803', 'DURSEJ', 9), +('S9', '3804', 'DURSEJ', 9), +('S9', '3805', 'DURSEJ', 9), +('S9', '3806', 'DURSEJ', 9), +('S9', '3807', 'DURSEJ', 9), +('S9', '3808', 'DURSEJ', 9), +('S9', '3809', 'DURSEJ', 9), +('S9', '3810', 'DURSEJ', 9), +('S9', '3811', 'DURSEJ', 9), +('S9', '3812', 'DURSEJ', 9), +('S9', '3813', 'DURSEJ', 9), +('S9', '3814', 'DURSEJ', 9), +('S9', '3815', 'DURSEJ', 9), +('S9', '3816', 'DURSEJ', 9), +('S9', '3817', 'DURSEJ', 9), +('S9', '3818', 'DURSEJ', 9), +('S9', '3819', 'DURSEJ', 9), +('S9', '3820', 'DURSEJ', 9), +('S9', '3821', 'DURSEJ', 9), +('S9', '3822', 'DURSEJ', 9), +('S9', '3823', 'DURSEJ', 9), +('S9', '3824', 'DURSEJ', 9), +('S9', '3825', 'DURSEJ', 9), +('S9', '3826', 'DURSEJ', 9), +('S9', '3827', 'DURSEJ', 9), +('S9', '3828', 'DURSEJ', 9), +('S9', '3829', 'DURSEJ', 9), +('S9', '3830', 'DURSEJ', 9), +('S9', '3831', 'DURSEJ', 9), +('S9', '3832', 'DURSEJ', 9), +('S9', '3833', 'DURSEJ', 9), +('S9', '3834', 'DURSEJ', 9), +('S9', '3835', 'DURSEJ', 9), +('S9', '3836', 'DURSEJ', 9), +('S9', '3837', 'DURSEJ', 9), +('S9', '3838', 'DURSEJ', 9), +('S9', '3839', 'DURSEJ', 9), +('S9', '3840', 'DURSEJ', 9), +('S9', '3841', 'DURSEJ', 9), +('S9', '3842', 'DURSEJ', 9), +('S9', '3843', 'DURSEJ', 9), +('S9', '3844', 'DURSEJ', 9), +('S9', '3845', 'DURSEJ', 9), +('S9', '3846', 'DURSEJ', 9), +('S9', '3847', 'DURSEJ', 9), +('S9', '3848', 'DURSEJ', 9), +('S9', '3849', 'DURSEJ', 9), +('S9', '3850', 'DURSEJ', 9), +('S9', '3851', 'DURSEJ', 9), +('S9', '3852', 'DURSEJ', 9), +('S9', '3853', 'DURSEJ', 9), +('S9', '3854', 'DURSEJ', 9), +('S9', '3855', 'DURSEJ', 9), +('S9', '3856', 'DURSEJ', 9), +('S9', '3857', 'DURSEJ', 9), +('S9', '3858', 'DURSEJ', 9), +('S9', '3859', 'DURSEJ', 9), +('S9', '3860', 'DURSEJ', 9), +('S9', '3861', 'DURSEJ', 9), +('S9', '3862', 'DURSEJ', 9), +('S9', '3863', 'DURSEJ', 9), +('S9', '3864', 'DURSEJ', 9), +('S9', '3865', 'DURSEJ', 9), +('S9', '3866', 'DURSEJ', 9), +('S9', '3867', 'DURSEJ', 9), +('S9', '3868', 'DURSEJ', 9), +('S9', '3869', 'DURSEJ', 9), +('S9', '3870', 'DURSEJ', 9), +('S9', '3871', 'DURSEJ', 9), +('S9', '3872', 'DURSEJ', 9), +('S9', '3873', 'DURSEJ', 9), +('S9', '3874', 'DURSEJ', 9), +('S9', '3875', 'DURSEJ', 9), +('S9', '3876', 'DURSEJ', 9), +('S9', '3877', 'DURSEJ', 9), +('S9', '3878', 'DURSEJ', 9), +('S9', '3879', 'DURSEJ', 9), +('S9', '3880', 'DURSEJ', 9), +('S9', '3881', 'DURSEJ', 9), +('S9', '3882', 'DURSEJ', 9), +('S9', '3883', 'DURSEJ', 9), +('S9', '3884', 'DURSEJ', 9), +('S9', '3885', 'DURSEJ', 9), +('S9', '3886', 'DURSEJ', 9), +('S9', '3887', 'DURSEJ', 9), +('S9', '3888', 'DURSEJ', 9), +('S9', '3889', 'DURSEJ', 9), +('S9', '3890', 'DURSEJ', 9), +('S9', '3891', 'DURSEJ', 9), +('S9', '3892', 'DURSEJ', 9), +('S9', '3893', 'DURSEJ', 9), +('S9', '3894', 'DURSEJ', 9), +('S9', '3895', 'DURSEJ', 9), +('S9', '3896', 'DURSEJ', 9), +('S9', '3897', 'DURSEJ', 9), +('S9', '3898', 'DURSEJ', 9), +('S9', '3899', 'DURSEJ', 9), +('S9', '3900', 'DURSEJ', 9), +('S9', '3901', 'DURSEJ', 9), +('S9', '3902', 'DURSEJ', 9), +('S9', '3903', 'DURSEJ', 9), +('S9', '3904', 'DURSEJ', 9), +('S9', '3905', 'DURSEJ', 9), +('S9', '3906', 'DURSEJ', 9), +('S9', '3907', 'DURSEJ', 9), +('S9', '3908', 'DURSEJ', 9), +('S9', '3909', 'DURSEJ', 9), +('S9', '3910', 'DURSEJ', 9), +('S9', '3911', 'DURSEJ', 9), +('S9', '3912', 'DURSEJ', 9), +('S9', '3913', 'DURSEJ', 9), +('S9', '3914', 'DURSEJ', 9), +('S9', '3915', 'DURSEJ', 9), +('S9', '3916', 'DURSEJ', 9), +('S9', '3917', 'DURSEJ', 9), +('S9', '3918', 'DURSEJ', 9), +('S9', '3919', 'DURSEJ', 9), +('S9', '3920', 'DURSEJ', 9), +('S9', '3921', 'DURSEJ', 9), +('S9', '3922', 'DURSEJ', 9), +('S9', '3923', 'DURSEJ', 9), +('S9', '3924', 'DURSEJ', 9), +('S9', '3925', 'DURSEJ', 9), +('S9', '3926', 'DURSEJ', 9), +('S9', '3927', 'DURSEJ', 9), +('S9', '3928', 'DURSEJ', 9), +('S9', '3929', 'DURSEJ', 9), +('S9', '3930', 'DURSEJ', 9), +('S9', '3931', 'DURSEJ', 9), +('S9', '3932', 'DURSEJ', 9), +('S9', '3933', 'DURSEJ', 9), +('S9', '3934', 'DURSEJ', 9), +('S9', '3935', 'DURSEJ', 9), +('S9', '3936', 'DURSEJ', 9), +('S9', '3937', 'DURSEJ', 9), +('S9', '3938', 'DURSEJ', 9), +('S9', '3939', 'DURSEJ', 9), +('S9', '3940', 'DURSEJ', 9), +('S9', '3941', 'DURSEJ', 9), +('S9', '3942', 'DURSEJ', 9), +('S9', '3943', 'DURSEJ', 9), +('S9', '3944', 'DURSEJ', 9), +('S9', '3945', 'DURSEJ', 9), +('S9', '3946', 'DURSEJ', 9), +('S9', '3947', 'DURSEJ', 9), +('S9', '3948', 'DURSEJ', 9), +('S9', '3949', 'DURSEJ', 9), +('S9', '3950', 'DURSEJ', 9), +('S9', '3951', 'DURSEJ', 9), +('S9', '3952', 'DURSEJ', 9), +('S9', '3953', 'DURSEJ', 9), +('S9', '3954', 'DURSEJ', 9), +('S9', '3955', 'DURSEJ', 9), +('S9', '3956', 'DURSEJ', 9), +('S9', '3957', 'DURSEJ', 9), +('S9', '3958', 'DURSEJ', 9), +('S9', '3959', 'DURSEJ', 9), +('S9', '3960', 'DURSEJ', 9), +('S9', '3961', 'DURSEJ', 9), +('S9', '3962', 'DURSEJ', 9), +('S9', '3963', 'DURSEJ', 9), +('S9', '3964', 'DURSEJ', 9), +('S9', '3965', 'DURSEJ', 9), +('S9', '3966', 'DURSEJ', 9), +('S9', '3967', 'DURSEJ', 9), +('S9', '3968', 'DURSEJ', 9), +('S9', '3969', 'DURSEJ', 9), +('S9', '3970', 'DURSEJ', 9), +('S9', '3971', 'DURSEJ', 9), +('S9', '3972', 'DURSEJ', 9), +('S9', '3973', 'DURSEJ', 9), +('S9', '3974', 'DURSEJ', 9), +('S9', '3975', 'DURSEJ', 9), +('S9', '3976', 'DURSEJ', 9), +('S9', '3977', 'DURSEJ', 9), +('S9', '3978', 'DURSEJ', 9), +('S9', '3979', 'DURSEJ', 9), +('S9', '3980', 'DURSEJ', 9), +('S9', '3981', 'DURSEJ', 9), +('S9', '3982', 'DURSEJ', 9), +('S9', '3983', 'DURSEJ', 9), +('S9', '3984', 'DURSEJ', 9), +('S9', '3985', 'DURSEJ', 9), +('S9', '3986', 'DURSEJ', 9), +('S9', '3987', 'DURSEJ', 9), +('S9', '3988', 'DURSEJ', 9), +('S9', '3989', 'DURSEJ', 9), +('S9', '3990', 'DURSEJ', 9), +('S9', '3991', 'DURSEJ', 9), +('S9', '3992', 'DURSEJ', 9), +('S9', '3993', 'DURSEJ', 9), +('S9', '3994', 'DURSEJ', 9), +('S9', '3995', 'DURSEJ', 9), +('S9', '3996', 'DURSEJ', 9), +('S9', '3997', 'DURSEJ', 9), +('S9', '3998', 'DURSEJ', 9), +('S9', '3999', 'DURSEJ', 9), +('S9', '4000', 'DURSEJ', 9), +('S9', '4001', 'DURSEJ', 9), +('S9', '4002', 'DURSEJ', 9), +('S9', '4003', 'DURSEJ', 9), +('S9', '4004', 'DURSEJ', 9), +('S9', '4005', 'DURSEJ', 9), +('S9', '4006', 'DURSEJ', 9), +('S9', '4007', 'DURSEJ', 9), +('S9', '4008', 'DURSEJ', 9), +('S9', '4009', 'DURSEJ', 9), +('S9', '4010', 'DURSEJ', 9), +('S9', '4011', 'DURSEJ', 9), +('S9', '4012', 'DURSEJ', 9), +('S9', '4013', 'DURSEJ', 9), +('S9', '4014', 'DURSEJ', 9), +('S9', '4015', 'DURSEJ', 9), +('S9', '4016', 'DURSEJ', 9), +('S9', '4017', 'DURSEJ', 9), +('S9', '4018', 'DURSEJ', 9), +('S9', '4019', 'DURSEJ', 9), +('S9', '4020', 'DURSEJ', 9), +('S9', '4021', 'DURSEJ', 9), +('S9', '4022', 'DURSEJ', 9), +('S9', '4023', 'DURSEJ', 9), +('S9', '4024', 'DURSEJ', 9), +('S9', '4025', 'DURSEJ', 9), +('S9', '4026', 'DURSEJ', 9), +('S9', '4027', 'DURSEJ', 9), +('S9', '4028', 'DURSEJ', 9), +('S9', '4029', 'DURSEJ', 9), +('S9', '4030', 'DURSEJ', 9), +('S9', '4031', 'DURSEJ', 9), +('S9', '4032', 'DURSEJ', 9), +('S9', '4033', 'DURSEJ', 9), +('S9', '4034', 'DURSEJ', 9), +('S9', '4035', 'DURSEJ', 9), +('S9', '4036', 'DURSEJ', 9), +('S9', '4037', 'DURSEJ', 9), +('S9', '4038', 'DURSEJ', 9), +('S9', '4039', 'DURSEJ', 9), +('S9', '4040', 'DURSEJ', 9), +('S9', '4041', 'DURSEJ', 9), +('S9', '4042', 'DURSEJ', 9), +('S9', '4043', 'DURSEJ', 9), +('S9', '4044', 'DURSEJ', 9), +('S9', '4045', 'DURSEJ', 9), +('S9', '4046', 'DURSEJ', 9), +('S9', '4047', 'DURSEJ', 9), +('S9', '4048', 'DURSEJ', 9), +('S9', '4049', 'DURSEJ', 9), +('S9', '4050', 'DURSEJ', 9), +('S9', '4051', 'DURSEJ', 9), +('S9', '4052', 'DURSEJ', 9), +('S9', '4053', 'DURSEJ', 9), +('S9', '4054', 'DURSEJ', 9), +('S9', '4055', 'DURSEJ', 9), +('S9', '4056', 'DURSEJ', 9), +('S9', '4057', 'DURSEJ', 9), +('S9', '4058', 'DURSEJ', 9), +('S9', '4059', 'DURSEJ', 9), +('S9', '4060', 'DURSEJ', 9), +('S9', '4061', 'DURSEJ', 9), +('S9', '4062', 'DURSEJ', 9), +('S9', '4063', 'DURSEJ', 9), +('S9', '4064', 'DURSEJ', 9), +('S9', '4065', 'DURSEJ', 9), +('S9', '4066', 'DURSEJ', 9), +('S9', '4067', 'DURSEJ', 9), +('S9', '4068', 'DURSEJ', 9), +('S9', '4069', 'DURSEJ', 9), +('S9', '4070', 'DURSEJ', 9), +('S9', '4071', 'DURSEJ', 9), +('S9', '4072', 'DURSEJ', 9), +('S9', '4073', 'DURSEJ', 9), +('S9', '4074', 'DURSEJ', 9), +('S9', '4075', 'DURSEJ', 9), +('S9', '4076', 'DURSEJ', 9), +('S9', '4077', 'DURSEJ', 9), +('S9', '4078', 'DURSEJ', 9), +('S9', '4079', 'DURSEJ', 9), +('S9', '4080', 'DURSEJ', 9), +('S9', '4081', 'DURSEJ', 9), +('S9', '4082', 'DURSEJ', 9), +('S9', '4083', 'DURSEJ', 9), +('S9', '4084', 'DURSEJ', 9), +('S9', '4085', 'DURSEJ', 9), +('S9', '4086', 'DURSEJ', 9), +('S9', '4087', 'DURSEJ', 9), +('S9', '4088', 'DURSEJ', 9), +('S9', '4089', 'DURSEJ', 9), +('S9', '4090', 'DURSEJ', 9), +('S9', '4091', 'DURSEJ', 9), +('S9', '4092', 'DURSEJ', 9), +('S9', '4093', 'DURSEJ', 9), +('S9', '4094', 'DURSEJ', 9), +('S9', '4095', 'DURSEJ', 9), +('S9', '4096', 'DURSEJ', 9), +('S9', '4097', 'DURSEJ', 9), +('S9', '4098', 'DURSEJ', 9), +('S9', '4099', 'DURSEJ', 9), +('S9', '4100', 'DURSEJ', 9), +('S9', '4101', 'DURSEJ', 9), +('S9', '4102', 'DURSEJ', 9), +('S9', '4103', 'DURSEJ', 9), +('S9', '4104', 'DURSEJ', 9), +('S9', '4105', 'DURSEJ', 9), +('S9', '4106', 'DURSEJ', 9), +('S9', '4107', 'DURSEJ', 9), +('S9', '4108', 'DURSEJ', 9), +('S9', '4109', 'DURSEJ', 9), +('S9', '4110', 'DURSEJ', 9), +('S9', '4111', 'DURSEJ', 9), +('S9', '4112', 'DURSEJ', 9), +('S9', '4113', 'DURSEJ', 9), +('S9', '4114', 'DURSEJ', 9), +('S9', '4115', 'DURSEJ', 9), +('S9', '4116', 'DURSEJ', 9), +('S9', '4117', 'DURSEJ', 9), +('S9', '4118', 'DURSEJ', 9), +('S9', '4119', 'DURSEJ', 9), +('S9', '4120', 'DURSEJ', 9), +('S9', '4121', 'DURSEJ', 9), +('S9', '4122', 'DURSEJ', 9), +('S9', '4123', 'DURSEJ', 9), +('S9', '4124', 'DURSEJ', 9), +('S9', '4125', 'DURSEJ', 9), +('S9', '4126', 'DURSEJ', 9), +('S9', '4127', 'DURSEJ', 9), +('S9', '4128', 'DURSEJ', 9), +('S9', '4129', 'DURSEJ', 9), +('S9', '4130', 'DURSEJ', 9), +('S9', '4131', 'DURSEJ', 9), +('S9', '4132', 'DURSEJ', 9), +('S9', '4133', 'DURSEJ', 9), +('S9', '4134', 'DURSEJ', 9), +('S9', '4135', 'DURSEJ', 9), +('S9', '4136', 'DURSEJ', 9), +('S9', '4137', 'DURSEJ', 9), +('S9', '4138', 'DURSEJ', 9), +('S9', '4139', 'DURSEJ', 9), +('S9', '4140', 'DURSEJ', 9), +('S9', '4141', 'DURSEJ', 9), +('S9', '4142', 'DURSEJ', 9), +('S9', '4143', 'DURSEJ', 9), +('S9', '4144', 'DURSEJ', 9), +('S9', '4145', 'DURSEJ', 9), +('S9', '4146', 'DURSEJ', 9), +('S9', '4147', 'DURSEJ', 9), +('S9', '4148', 'DURSEJ', 9), +('S9', '4149', 'DURSEJ', 9), +('S9', '4150', 'DURSEJ', 9), +('S9', '4151', 'DURSEJ', 9), +('S9', '4152', 'DURSEJ', 9), +('S9', '4153', 'DURSEJ', 9), +('S9', '4154', 'DURSEJ', 9), +('S9', '4155', 'DURSEJ', 9), +('S9', '4156', 'DURSEJ', 9), +('S9', '4157', 'DURSEJ', 9), +('S9', '4158', 'DURSEJ', 9), +('S9', '4159', 'DURSEJ', 9), +('S9', '4160', 'DURSEJ', 9), +('S9', '4161', 'DURSEJ', 9), +('S9', '4162', 'DURSEJ', 9), +('S9', '4163', 'DURSEJ', 9), +('S9', '4164', 'DURSEJ', 9), +('S9', '4165', 'DURSEJ', 9), +('S9', '4166', 'DURSEJ', 9), +('S9', '4167', 'DURSEJ', 9), +('S9', '4168', 'DURSEJ', 9), +('S9', '4169', 'DURSEJ', 9), +('S9', '4170', 'DURSEJ', 9), +('S9', '4171', 'DURSEJ', 9), +('S9', '4172', 'DURSEJ', 9), +('S9', '4173', 'DURSEJ', 9), +('S9', '4174', 'DURSEJ', 9), +('S9', '4175', 'DURSEJ', 9), +('S9', '4176', 'DURSEJ', 9), +('S9', '4177', 'DURSEJ', 9), +('S9', '4178', 'DURSEJ', 9), +('S9', '4179', 'DURSEJ', 9), +('S9', '4180', 'DURSEJ', 9), +('S9', '4181', 'DURSEJ', 9), +('S9', '4182', 'DURSEJ', 9), +('S9', '4183', 'DURSEJ', 9), +('S9', '4184', 'DURSEJ', 9), +('S9', '4185', 'DURSEJ', 9), +('S9', '4186', 'DURSEJ', 9), +('S9', '4187', 'DURSEJ', 9), +('S9', '4188', 'DURSEJ', 9), +('S9', '4189', 'DURSEJ', 9), +('S9', '4190', 'DURSEJ', 9), +('S9', '4191', 'DURSEJ', 9), +('S9', '4192', 'DURSEJ', 9), +('S9', '4193', 'DURSEJ', 9), +('S9', '4194', 'DURSEJ', 9), +('S9', '4195', 'DURSEJ', 9), +('S9', '4196', 'DURSEJ', 9), +('S9', '4197', 'DURSEJ', 9), +('S9', '4198', 'DURSEJ', 9), +('S9', '4199', 'DURSEJ', 9), +('S9', '4200', 'DURSEJ', 9), +('S9', '4201', 'DURSEJ', 9), +('S9', '4202', 'DURSEJ', 9), +('S9', '4203', 'DURSEJ', 9), +('S9', '4204', 'DURSEJ', 9), +('S9', '4205', 'DURSEJ', 9), +('S9', '4206', 'DURSEJ', 9), +('S9', '4207', 'DURSEJ', 9), +('S9', '4208', 'DURSEJ', 9), +('S9', '4209', 'DURSEJ', 9), +('S9', '4210', 'DURSEJ', 9), +('S9', '4211', 'DURSEJ', 9), +('S9', '4212', 'DURSEJ', 9), +('S9', '4213', 'DURSEJ', 9), +('S9', '4214', 'DURSEJ', 9), +('S9', '4215', 'DURSEJ', 9), +('S9', '4216', 'DURSEJ', 9), +('S9', '4217', 'DURSEJ', 9), +('S9', '4218', 'DURSEJ', 9), +('S9', '4219', 'DURSEJ', 9), +('S9', '4220', 'DURSEJ', 9), +('S9', '4221', 'DURSEJ', 9), +('S9', '4222', 'DURSEJ', 9), +('S9', '4223', 'DURSEJ', 9), +('S9', '4224', 'DURSEJ', 9), +('S9', '4225', 'DURSEJ', 9), +('S9', '4226', 'DURSEJ', 9), +('S9', '4227', 'DURSEJ', 9), +('S9', '4228', 'DURSEJ', 9), +('S9', '4229', 'DURSEJ', 9), +('S9', '4230', 'DURSEJ', 9), +('S9', '4231', 'DURSEJ', 9), +('S9', '4232', 'DURSEJ', 9), +('S9', '4233', 'DURSEJ', 9), +('S9', '4234', 'DURSEJ', 9), +('S9', '4235', 'DURSEJ', 9), +('S9', '4236', 'DURSEJ', 9), +('S9', '4237', 'DURSEJ', 9), +('S9', '4238', 'DURSEJ', 9), +('S9', '4239', 'DURSEJ', 9), +('S9', '4240', 'DURSEJ', 9), +('S9', '4241', 'DURSEJ', 9), +('S9', '4242', 'DURSEJ', 9), +('S9', '4243', 'DURSEJ', 9), +('S9', '4244', 'DURSEJ', 9), +('S9', '4245', 'DURSEJ', 9), +('S9', '4246', 'DURSEJ', 9), +('S9', '4247', 'DURSEJ', 9), +('S9', '4248', 'DURSEJ', 9), +('S9', '4249', 'DURSEJ', 9), +('S9', '4250', 'DURSEJ', 9), +('S9', '4251', 'DURSEJ', 9), +('S9', '4252', 'DURSEJ', 9), +('S9', '4253', 'DURSEJ', 9), +('S9', '4254', 'DURSEJ', 9), +('S9', '4255', 'DURSEJ', 9), +('S9', '4256', 'DURSEJ', 9), +('S9', '4257', 'DURSEJ', 9), +('S9', '4258', 'DURSEJ', 9), +('S9', '4259', 'DURSEJ', 9), +('S9', '4260', 'DURSEJ', 9), +('S9', '4261', 'DURSEJ', 9), +('S9', '4262', 'DURSEJ', 9), +('S9', '4263', 'DURSEJ', 9), +('S9', '4264', 'DURSEJ', 9), +('S9', '4265', 'DURSEJ', 9), +('S9', '4266', 'DURSEJ', 9), +('S9', '4267', 'DURSEJ', 9), +('S9', '4268', 'DURSEJ', 9), +('S9', '4269', 'DURSEJ', 9), +('S9', '4270', 'DURSEJ', 9), +('S9', '4271', 'DURSEJ', 9), +('S9', '4272', 'DURSEJ', 9), +('S9', '4273', 'DURSEJ', 9), +('S9', '4274', 'DURSEJ', 9), +('S9', '4275', 'DURSEJ', 9), +('S9', '4276', 'DURSEJ', 9), +('S9', '4277', 'DURSEJ', 9), +('S9', '4278', 'DURSEJ', 9), +('S9', '4279', 'DURSEJ', 9), +('S9', '4280', 'DURSEJ', 9), +('S9', '4281', 'DURSEJ', 9), +('S9', '4282', 'DURSEJ', 9), +('S9', '4283', 'DURSEJ', 9), +('S9', '4284', 'DURSEJ', 9), +('S9', '4285', 'DURSEJ', 9), +('S9', '4286', 'DURSEJ', 9), +('S9', '4287', 'DURSEJ', 9), +('S9', '4288', 'DURSEJ', 9), +('S9', '4289', 'DURSEJ', 9), +('S9', '4290', 'DURSEJ', 9), +('S9', '4291', 'DURSEJ', 9), +('S9', '4292', 'DURSEJ', 9), +('S9', '4293', 'DURSEJ', 9), +('S9', '4294', 'DURSEJ', 9), +('S9', '4295', 'DURSEJ', 9), +('S9', '4296', 'DURSEJ', 9), +('S9', '4297', 'DURSEJ', 9), +('S9', '4298', 'DURSEJ', 9), +('S9', '4299', 'DURSEJ', 9), +('S9', '4300', 'DURSEJ', 9), +('S9', '4301', 'DURSEJ', 9), +('S9', '4302', 'DURSEJ', 9), +('S9', '4303', 'DURSEJ', 9), +('S9', '4304', 'DURSEJ', 9), +('S9', '4305', 'DURSEJ', 9), +('S9', '4306', 'DURSEJ', 9), +('S9', '4307', 'DURSEJ', 9), +('S9', '4308', 'DURSEJ', 9), +('S9', '4309', 'DURSEJ', 9), +('S9', '4310', 'DURSEJ', 9), +('S9', '4311', 'DURSEJ', 9), +('S9', '4312', 'DURSEJ', 9), +('S9', '4313', 'DURSEJ', 9), +('S9', '4314', 'DURSEJ', 9), +('S9', '4315', 'DURSEJ', 9), +('S9', '4316', 'DURSEJ', 9), +('S9', '4317', 'DURSEJ', 9), +('S9', '4318', 'DURSEJ', 9), +('S9', '4319', 'DURSEJ', 9), +('S9', '4320', 'DURSEJ', 9), +('S9', '4321', 'DURSEJ', 9), +('S9', '4322', 'DURSEJ', 9), +('S9', '4323', 'DURSEJ', 9), +('S9', '4324', 'DURSEJ', 9), +('S9', '4325', 'DURSEJ', 9), +('S9', '4326', 'DURSEJ', 9), +('S9', '4327', 'DURSEJ', 9), +('S9', '4328', 'DURSEJ', 9), +('S9', '4329', 'DURSEJ', 9), +('S9', '4330', 'DURSEJ', 9), +('S9', '4331', 'DURSEJ', 9), +('S9', '4332', 'DURSEJ', 9), +('S9', '4333', 'DURSEJ', 9), +('S9', '4334', 'DURSEJ', 9), +('S9', '4335', 'DURSEJ', 9), +('S9', '4336', 'DURSEJ', 9), +('S9', '4337', 'DURSEJ', 9), +('S9', '4338', 'DURSEJ', 9), +('S9', '4339', 'DURSEJ', 9), +('S9', '4340', 'DURSEJ', 9), +('S9', '4341', 'DURSEJ', 9), +('S9', '4342', 'DURSEJ', 9), +('S9', '4343', 'DURSEJ', 9), +('S9', '4344', 'DURSEJ', 9), +('S9', '4345', 'DURSEJ', 9), +('S9', '4346', 'DURSEJ', 9), +('S9', '4347', 'DURSEJ', 9), +('S9', '4348', 'DURSEJ', 9), +('S9', '4349', 'DURSEJ', 9), +('S9', '4350', 'DURSEJ', 9), +('S9', '4351', 'DURSEJ', 9), +('S9', '4352', 'DURSEJ', 9), +('S9', '4353', 'DURSEJ', 9), +('S9', '4354', 'DURSEJ', 9), +('S9', '4355', 'DURSEJ', 9), +('S9', '4356', 'DURSEJ', 9), +('S9', '4357', 'DURSEJ', 9), +('S9', '4358', 'DURSEJ', 9), +('S9', '4359', 'DURSEJ', 9), +('S9', '4360', 'DURSEJ', 9), +('S9', '4361', 'DURSEJ', 9), +('S9', '4362', 'DURSEJ', 9), +('S9', '4363', 'DURSEJ', 9), +('S9', '4364', 'DURSEJ', 9), +('S9', '4365', 'DURSEJ', 9), +('S9', '4366', 'DURSEJ', 9), +('S9', '4367', 'DURSEJ', 9), +('S9', '4368', 'DURSEJ', 9), +('S9', '4369', 'DURSEJ', 9), +('S9', '4370', 'DURSEJ', 9), +('S9', '4371', 'DURSEJ', 9), +('S9', '4372', 'DURSEJ', 9), +('S9', '4373', 'DURSEJ', 9), +('S9', '4374', 'DURSEJ', 9), +('S9', '4375', 'DURSEJ', 9), +('S9', '4376', 'DURSEJ', 9), +('S9', '4377', 'DURSEJ', 9), +('S9', '4378', 'DURSEJ', 9), +('S9', '4379', 'DURSEJ', 9), +('S9', '4380', 'DURSEJ', 9), +('S9', '4381', 'DURSEJ', 9), +('S9', '4382', 'DURSEJ', 9), +('S9', '4383', 'DURSEJ', 9), +('S9', '4384', 'DURSEJ', 9), +('S9', '4385', 'DURSEJ', 9), +('S9', '4386', 'DURSEJ', 9), +('S9', '4387', 'DURSEJ', 9), +('S9', '4388', 'DURSEJ', 9), +('S9', '4389', 'DURSEJ', 9), +('S9', '4390', 'DURSEJ', 9), +('S9', '4391', 'DURSEJ', 9), +('S9', '4392', 'DURSEJ', 9), +('S9', '4393', 'DURSEJ', 9), +('S9', '4394', 'DURSEJ', 9), +('S9', '4395', 'DURSEJ', 9), +('S9', '4396', 'DURSEJ', 9), +('S9', '4397', 'DURSEJ', 9), +('S9', '4398', 'DURSEJ', 9), +('S9', '4399', 'DURSEJ', 9), +('S9', '4400', 'DURSEJ', 9), +('S9', '4401', 'DURSEJ', 9), +('S9', '4402', 'DURSEJ', 9), +('S9', '4403', 'DURSEJ', 9), +('S9', '4404', 'DURSEJ', 9), +('S9', '4405', 'DURSEJ', 9), +('S9', '4406', 'DURSEJ', 9), +('S9', '4407', 'DURSEJ', 9), +('S9', '4408', 'DURSEJ', 9), +('S9', '4409', 'DURSEJ', 9), +('S9', '4410', 'DURSEJ', 9), +('S9', '4411', 'DURSEJ', 9), +('S9', '4412', 'DURSEJ', 9), +('S9', '4413', 'DURSEJ', 9), +('S9', '4414', 'DURSEJ', 9), +('S9', '4415', 'DURSEJ', 9), +('S9', '4416', 'DURSEJ', 9), +('S9', '4417', 'DURSEJ', 9), +('S9', '4418', 'DURSEJ', 9), +('S9', '4419', 'DURSEJ', 9), +('S9', '4420', 'DURSEJ', 9), +('S9', '4421', 'DURSEJ', 9), +('S9', '4422', 'DURSEJ', 9), +('S9', '4423', 'DURSEJ', 9), +('S9', '4424', 'DURSEJ', 9), +('S9', '4425', 'DURSEJ', 9), +('S9', '4426', 'DURSEJ', 9), +('S9', '4427', 'DURSEJ', 9), +('S9', '4428', 'DURSEJ', 9), +('S9', '4429', 'DURSEJ', 9), +('S9', '4430', 'DURSEJ', 9), +('S9', '4431', 'DURSEJ', 9), +('S9', '4432', 'DURSEJ', 9), +('S9', '4433', 'DURSEJ', 9), +('S9', '4434', 'DURSEJ', 9), +('S9', '4435', 'DURSEJ', 9), +('S9', '4436', 'DURSEJ', 9), +('S9', '4437', 'DURSEJ', 9), +('S9', '4438', 'DURSEJ', 9), +('S9', '4439', 'DURSEJ', 9), +('S9', '4440', 'DURSEJ', 9), +('S9', '4441', 'DURSEJ', 9), +('S9', '4442', 'DURSEJ', 9), +('S9', '4443', 'DURSEJ', 9), +('S9', '4444', 'DURSEJ', 9), +('S9', '4445', 'DURSEJ', 9), +('S9', '4446', 'DURSEJ', 9), +('S9', '4447', 'DURSEJ', 9), +('S9', '4448', 'DURSEJ', 9), +('S9', '4449', 'DURSEJ', 9), +('S9', '4450', 'DURSEJ', 9), +('S9', '4451', 'DURSEJ', 9), +('S9', '4452', 'DURSEJ', 9), +('S9', '4453', 'DURSEJ', 9), +('S9', '4454', 'DURSEJ', 9), +('S9', '4455', 'DURSEJ', 9), +('S9', '4456', 'DURSEJ', 9), +('S9', '4457', 'DURSEJ', 9), +('S9', '4458', 'DURSEJ', 9), +('S9', '4459', 'DURSEJ', 9), +('S9', '4460', 'DURSEJ', 9), +('S9', '4461', 'DURSEJ', 9), +('S9', '4462', 'DURSEJ', 9), +('S9', '4463', 'DURSEJ', 9), +('S9', '4464', 'DURSEJ', 9), +('S9', '4465', 'DURSEJ', 9), +('S9', '4466', 'DURSEJ', 9), +('S9', '4467', 'DURSEJ', 9), +('S9', '4468', 'DURSEJ', 9), +('S9', '4469', 'DURSEJ', 9), +('S9', '4470', 'DURSEJ', 9), +('S9', '4471', 'DURSEJ', 9), +('S9', '4472', 'DURSEJ', 9), +('S9', '4473', 'DURSEJ', 9), +('S9', '4474', 'DURSEJ', 9), +('S9', '4475', 'DURSEJ', 9), +('S9', '4476', 'DURSEJ', 9), +('S9', '4477', 'DURSEJ', 9), +('S9', '4478', 'DURSEJ', 9), +('S9', '4479', 'DURSEJ', 9), +('S9', '4480', 'DURSEJ', 9), +('S9', '4481', 'DURSEJ', 9), +('S9', '4482', 'DURSEJ', 9), +('S9', '4483', 'DURSEJ', 9), +('S9', '4484', 'DURSEJ', 9), +('S9', '4485', 'DURSEJ', 9), +('S9', '4486', 'DURSEJ', 9), +('S9', '4487', 'DURSEJ', 9), +('S9', '4488', 'DURSEJ', 9), +('S9', '4489', 'DURSEJ', 9), +('S9', '4490', 'DURSEJ', 9), +('S9', '4491', 'DURSEJ', 9), +('S9', '4492', 'DURSEJ', 9), +('S9', '4493', 'DURSEJ', 9), +('S9', '4494', 'DURSEJ', 9), +('S9', '4495', 'DURSEJ', 9), +('S9', '4496', 'DURSEJ', 9), +('S9', '4497', 'DURSEJ', 9), +('S9', '4498', 'DURSEJ', 9), +('S9', '4499', 'DURSEJ', 9), +('S9', '4500', 'DURSEJ', 9), +('S9', '4501', 'DURSEJ', 9), +('S9', '4502', 'DURSEJ', 9), +('S9', '4503', 'DURSEJ', 9), +('S9', '4504', 'DURSEJ', 9), +('S9', '4505', 'DURSEJ', 9), +('S9', '4506', 'DURSEJ', 9), +('S9', '4507', 'DURSEJ', 9), +('S9', '4508', 'DURSEJ', 9), +('S9', '4509', 'DURSEJ', 9), +('S9', '4510', 'DURSEJ', 9), +('S9', '4511', 'DURSEJ', 9), +('S9', '4512', 'DURSEJ', 9), +('S9', '4513', 'DURSEJ', 9), +('S9', '4514', 'DURSEJ', 9), +('S9', '4515', 'DURSEJ', 9), +('S9', '4516', 'DURSEJ', 9), +('S9', '4517', 'DURSEJ', 9), +('S9', '4518', 'DURSEJ', 9), +('S9', '4519', 'DURSEJ', 9), +('S9', '4520', 'DURSEJ', 9), +('S9', '4521', 'DURSEJ', 9), +('S9', '4522', 'DURSEJ', 9), +('S9', '4523', 'DURSEJ', 9), +('S9', '4524', 'DURSEJ', 9), +('S9', '4525', 'DURSEJ', 9), +('S9', '4526', 'DURSEJ', 9), +('S9', '4527', 'DURSEJ', 9), +('S9', '4528', 'DURSEJ', 9), +('S9', '4529', 'DURSEJ', 9), +('S9', '4530', 'DURSEJ', 9), +('S9', '4531', 'DURSEJ', 9), +('S9', '4532', 'DURSEJ', 9), +('S9', '4533', 'DURSEJ', 9), +('S9', '4534', 'DURSEJ', 9), +('S9', '4535', 'DURSEJ', 9), +('S9', '4536', 'DURSEJ', 9), +('S9', '4537', 'DURSEJ', 9), +('S9', '4538', 'DURSEJ', 9), +('S9', '4539', 'DURSEJ', 9), +('S9', '4540', 'DURSEJ', 9), +('S9', '4541', 'DURSEJ', 9), +('S9', '4542', 'DURSEJ', 9), +('S9', '4543', 'DURSEJ', 9), +('S9', '4544', 'DURSEJ', 9), +('S9', '4545', 'DURSEJ', 9), +('S9', '4546', 'DURSEJ', 9), +('S9', '4547', 'DURSEJ', 9), +('S9', '4548', 'DURSEJ', 9), +('S9', '4549', 'DURSEJ', 9), +('S9', '4550', 'DURSEJ', 9), +('S9', '4551', 'DURSEJ', 9), +('S9', '4552', 'DURSEJ', 9), +('S9', '4553', 'DURSEJ', 9), +('S9', '4554', 'DURSEJ', 9), +('S9', '4555', 'DURSEJ', 9), +('S9', '4556', 'DURSEJ', 9), +('S9', '4557', 'DURSEJ', 9), +('S9', '4558', 'DURSEJ', 9), +('S9', '4559', 'DURSEJ', 9), +('S9', '4560', 'DURSEJ', 9), +('S9', '4561', 'DURSEJ', 9), +('S9', '4562', 'DURSEJ', 9), +('S9', '4563', 'DURSEJ', 9), +('S9', '4564', 'DURSEJ', 9), +('S9', '4565', 'DURSEJ', 9), +('S9', '4566', 'DURSEJ', 9), +('S9', '4567', 'DURSEJ', 9), +('S9', '4568', 'DURSEJ', 9), +('S9', '4569', 'DURSEJ', 9), +('S9', '4570', 'DURSEJ', 9), +('S9', '4571', 'DURSEJ', 9), +('S9', '4572', 'DURSEJ', 9), +('S9', '4573', 'DURSEJ', 9), +('S9', '4574', 'DURSEJ', 9), +('S9', '4575', 'DURSEJ', 9), +('S9', '4576', 'DURSEJ', 9), +('S9', '4577', 'DURSEJ', 9), +('S9', '4578', 'DURSEJ', 9), +('S9', '4579', 'DURSEJ', 9), +('S9', '4580', 'DURSEJ', 9), +('S9', '4581', 'DURSEJ', 9), +('S9', '4582', 'DURSEJ', 9), +('S9', '4583', 'DURSEJ', 9), +('S9', '4584', 'DURSEJ', 9), +('S9', '4585', 'DURSEJ', 9), +('S9', '4586', 'DURSEJ', 9), +('S9', '4587', 'DURSEJ', 9), +('S9', '4588', 'DURSEJ', 9), +('S9', '4589', 'DURSEJ', 9), +('S9', '4590', 'DURSEJ', 9), +('S9', '4591', 'DURSEJ', 9), +('S9', '4592', 'DURSEJ', 9), +('S9', '4593', 'DURSEJ', 9), +('S9', '4594', 'DURSEJ', 9), +('S9', '4595', 'DURSEJ', 9), +('S9', '4596', 'DURSEJ', 9), +('S9', '4597', 'DURSEJ', 9), +('S9', '4598', 'DURSEJ', 9), +('S9', '4599', 'DURSEJ', 9), +('S9', '4600', 'DURSEJ', 9), +('S9', '4601', 'DURSEJ', 9), +('S9', '4602', 'DURSEJ', 9), +('S9', '4603', 'DURSEJ', 9), +('S9', '4604', 'DURSEJ', 9), +('S9', '4605', 'DURSEJ', 9), +('S9', '4606', 'DURSEJ', 9), +('S9', '4607', 'DURSEJ', 9), +('S9', '4608', 'DURSEJ', 9), +('S9', '4609', 'DURSEJ', 9), +('S9', '4610', 'DURSEJ', 9), +('S9', '4611', 'DURSEJ', 9), +('S9', '4612', 'DURSEJ', 9), +('S9', '4613', 'DURSEJ', 9), +('S9', '4614', 'DURSEJ', 9), +('S9', '4615', 'DURSEJ', 9), +('S9', '4616', 'DURSEJ', 9), +('S9', '4617', 'DURSEJ', 9), +('S9', '4618', 'DURSEJ', 9), +('S9', '4619', 'DURSEJ', 9), +('S9', '4620', 'DURSEJ', 9), +('S9', '4621', 'DURSEJ', 9), +('S9', '4622', 'DURSEJ', 9), +('S9', '4623', 'DURSEJ', 9), +('S9', '4624', 'DURSEJ', 9), +('S9', '4625', 'DURSEJ', 9), +('S9', '4626', 'DURSEJ', 9), +('S9', '4627', 'DURSEJ', 9), +('S9', '4628', 'DURSEJ', 9), +('S9', '4629', 'DURSEJ', 9), +('S9', '4630', 'DURSEJ', 9), +('S9', '4631', 'DURSEJ', 9), +('S9', '4632', 'DURSEJ', 9), +('S9', '4633', 'DURSEJ', 9), +('S9', '4634', 'DURSEJ', 9), +('S9', '4635', 'DURSEJ', 9), +('S9', '4636', 'DURSEJ', 9), +('S9', '4637', 'DURSEJ', 9), +('S9', '4638', 'DURSEJ', 9), +('S9', '4639', 'DURSEJ', 9), +('S9', '4640', 'DURSEJ', 9), +('S9', '4641', 'DURSEJ', 9), +('S9', '4642', 'DURSEJ', 9), +('S9', '4643', 'DURSEJ', 9), +('S9', '4644', 'DURSEJ', 9), +('S9', '4645', 'DURSEJ', 9), +('S9', '4646', 'DURSEJ', 9), +('S9', '4647', 'DURSEJ', 9), +('S9', '4648', 'DURSEJ', 9), +('S9', '4649', 'DURSEJ', 9), +('S9', '4650', 'DURSEJ', 9), +('S9', '4651', 'DURSEJ', 9), +('S9', '4652', 'DURSEJ', 9), +('S9', '4653', 'DURSEJ', 9), +('S9', '4654', 'DURSEJ', 9), +('S9', '4655', 'DURSEJ', 9), +('S9', '4656', 'DURSEJ', 9), +('S9', '4657', 'DURSEJ', 9), +('S9', '4658', 'DURSEJ', 9), +('S9', '4659', 'DURSEJ', 9), +('S9', '4660', 'DURSEJ', 9), +('S9', '4661', 'DURSEJ', 9), +('S9', '4662', 'DURSEJ', 9), +('S9', '4663', 'DURSEJ', 9), +('S9', '4664', 'DURSEJ', 9), +('S9', '4665', 'DURSEJ', 9), +('S9', '4666', 'DURSEJ', 9), +('S9', '4667', 'DURSEJ', 9), +('S9', '4668', 'DURSEJ', 9), +('S9', '4669', 'DURSEJ', 9), +('S9', '4670', 'DURSEJ', 9), +('S9', '4671', 'DURSEJ', 9), +('S9', '4672', 'DURSEJ', 9), +('S9', '4673', 'DURSEJ', 9), +('S9', '4674', 'DURSEJ', 9), +('S9', '4675', 'DURSEJ', 9), +('S9', '4676', 'DURSEJ', 9), +('S9', '4677', 'DURSEJ', 9), +('S9', '4678', 'DURSEJ', 9), +('S9', '4679', 'DURSEJ', 9), +('S9', '4680', 'DURSEJ', 9), +('S9', '4681', 'DURSEJ', 9), +('S9', '4682', 'DURSEJ', 9), +('S9', '4683', 'DURSEJ', 9), +('S9', '4684', 'DURSEJ', 9), +('S9', '4685', 'DURSEJ', 9), +('S9', '4686', 'DURSEJ', 9), +('S9', '4687', 'DURSEJ', 9), +('S9', '4688', 'DURSEJ', 9), +('S9', '4689', 'DURSEJ', 9), +('S9', '4690', 'DURSEJ', 9), +('S9', '4691', 'DURSEJ', 9), +('S9', '4692', 'DURSEJ', 9), +('S9', '4693', 'DURSEJ', 9), +('S9', '4694', 'DURSEJ', 9), +('S9', '4695', 'DURSEJ', 9), +('S9', '4696', 'DURSEJ', 9), +('S9', '4697', 'DURSEJ', 9), +('S9', '4698', 'DURSEJ', 9), +('S9', '4699', 'DURSEJ', 9), +('S9', '4700', 'DURSEJ', 9), +('S9', '4701', 'DURSEJ', 9), +('S9', '4702', 'DURSEJ', 9), +('S9', '4703', 'DURSEJ', 9), +('S9', '4704', 'DURSEJ', 9), +('S9', '4705', 'DURSEJ', 9), +('S9', '4706', 'DURSEJ', 9), +('S9', '4707', 'DURSEJ', 9), +('S9', '4708', 'DURSEJ', 9), +('S9', '4709', 'DURSEJ', 9), +('S9', '4710', 'DURSEJ', 9), +('S9', '4711', 'DURSEJ', 9), +('S9', '4712', 'DURSEJ', 9), +('S9', '4713', 'DURSEJ', 9), +('S9', '4714', 'DURSEJ', 9), +('S9', '4715', 'DURSEJ', 9), +('S9', '4716', 'DURSEJ', 9), +('S9', '4717', 'DURSEJ', 9), +('S9', '4718', 'DURSEJ', 9), +('S9', '4719', 'DURSEJ', 9), +('S9', '4720', 'DURSEJ', 9), +('S9', '4721', 'DURSEJ', 9), +('S9', '4722', 'DURSEJ', 9), +('S9', '4723', 'DURSEJ', 9), +('S9', '4724', 'DURSEJ', 9), +('S9', '4725', 'DURSEJ', 9), +('S9', '4726', 'DURSEJ', 9), +('S9', '4727', 'DURSEJ', 9), +('S9', '4728', 'DURSEJ', 9), +('S9', '4729', 'DURSEJ', 9), +('S9', '4730', 'DURSEJ', 9), +('S9', '4731', 'DURSEJ', 9), +('S9', '4732', 'DURSEJ', 9), +('S9', '4733', 'DURSEJ', 9), +('S9', '4734', 'DURSEJ', 9), +('S9', '4735', 'DURSEJ', 9), +('S9', '4736', 'DURSEJ', 9), +('S9', '4737', 'DURSEJ', 9), +('S9', '4738', 'DURSEJ', 9), +('S9', '4739', 'DURSEJ', 9), +('S9', '4740', 'DURSEJ', 9), +('S9', '4741', 'DURSEJ', 9), +('S9', '4742', 'DURSEJ', 9), +('S9', '4743', 'DURSEJ', 9), +('S9', '4744', 'DURSEJ', 9), +('S9', '4745', 'DURSEJ', 9), +('S9', '4746', 'DURSEJ', 9), +('S9', '4747', 'DURSEJ', 9), +('S9', '4748', 'DURSEJ', 9), +('S9', '4749', 'DURSEJ', 9), +('S9', '4750', 'DURSEJ', 9), +('S9', '4751', 'DURSEJ', 9), +('S9', '4752', 'DURSEJ', 9), +('S9', '4753', 'DURSEJ', 9), +('S9', '4754', 'DURSEJ', 9), +('S9', '4755', 'DURSEJ', 9), +('S9', '4756', 'DURSEJ', 9), +('S9', '4757', 'DURSEJ', 9), +('S9', '4758', 'DURSEJ', 9), +('S9', '4759', 'DURSEJ', 9), +('S9', '4760', 'DURSEJ', 9), +('S9', '4761', 'DURSEJ', 9), +('S9', '4762', 'DURSEJ', 9), +('S9', '4763', 'DURSEJ', 9), +('S9', '4764', 'DURSEJ', 9), +('S9', '4765', 'DURSEJ', 9), +('S9', '4766', 'DURSEJ', 9), +('S9', '4767', 'DURSEJ', 9), +('S9', '4768', 'DURSEJ', 9), +('S9', '4769', 'DURSEJ', 9), +('S9', '4770', 'DURSEJ', 9), +('S9', '4771', 'DURSEJ', 9), +('S9', '4772', 'DURSEJ', 9), +('S9', '4773', 'DURSEJ', 9), +('S9', '4774', 'DURSEJ', 9), +('S9', '4775', 'DURSEJ', 9), +('S9', '4776', 'DURSEJ', 9), +('S9', '4777', 'DURSEJ', 9), +('S9', '4778', 'DURSEJ', 9), +('S9', '4779', 'DURSEJ', 9), +('S9', '4780', 'DURSEJ', 9), +('S9', '4781', 'DURSEJ', 9), +('S9', '4782', 'DURSEJ', 9), +('S9', '4783', 'DURSEJ', 9), +('S9', '4784', 'DURSEJ', 9), +('S9', '4785', 'DURSEJ', 9), +('S9', '4786', 'DURSEJ', 9), +('S9', '4787', 'DURSEJ', 9), +('S9', '4788', 'DURSEJ', 9), +('S9', '4789', 'DURSEJ', 9), +('S9', '4790', 'DURSEJ', 9), +('S9', '4791', 'DURSEJ', 9), +('S9', '4792', 'DURSEJ', 9), +('S9', '4793', 'DURSEJ', 9), +('S9', '4794', 'DURSEJ', 9), +('S9', '4795', 'DURSEJ', 9), +('S9', '4796', 'DURSEJ', 9), +('S9', '4797', 'DURSEJ', 9), +('S9', '4798', 'DURSEJ', 9), +('S9', '4799', 'DURSEJ', 9), +('S9', '4800', 'DURSEJ', 9), +('S9', '4801', 'DURSEJ', 9), +('S9', '4802', 'DURSEJ', 9), +('S9', '4803', 'DURSEJ', 9), +('S9', '4804', 'DURSEJ', 9), +('S9', '4805', 'DURSEJ', 9), +('S9', '4806', 'DURSEJ', 9), +('S9', '4807', 'DURSEJ', 9), +('S9', '4808', 'DURSEJ', 9), +('S9', '4809', 'DURSEJ', 9), +('S9', '4810', 'DURSEJ', 9), +('S9', '4811', 'DURSEJ', 9), +('S9', '4812', 'DURSEJ', 9), +('S9', '4813', 'DURSEJ', 9), +('S9', '4814', 'DURSEJ', 9), +('S9', '4815', 'DURSEJ', 9), +('S9', '4816', 'DURSEJ', 9), +('S9', '4817', 'DURSEJ', 9), +('S9', '4818', 'DURSEJ', 9), +('S9', '4819', 'DURSEJ', 9), +('S9', '4820', 'DURSEJ', 9), +('S9', '4821', 'DURSEJ', 9), +('S9', '4822', 'DURSEJ', 9), +('S9', '4823', 'DURSEJ', 9), +('S9', '4824', 'DURSEJ', 9), +('S9', '4825', 'DURSEJ', 9), +('S9', '4826', 'DURSEJ', 9), +('S9', '4827', 'DURSEJ', 9), +('S9', '4828', 'DURSEJ', 9), +('S9', '4829', 'DURSEJ', 9), +('S9', '4830', 'DURSEJ', 9), +('S9', '4831', 'DURSEJ', 9), +('S9', '4832', 'DURSEJ', 9), +('S9', '4833', 'DURSEJ', 9), +('S9', '4834', 'DURSEJ', 9), +('S9', '4835', 'DURSEJ', 9), +('S9', '4836', 'DURSEJ', 9), +('S9', '4837', 'DURSEJ', 9), +('S9', '4838', 'DURSEJ', 9), +('S9', '4839', 'DURSEJ', 9), +('S9', '4840', 'DURSEJ', 9), +('S9', '4841', 'DURSEJ', 9), +('S9', '4842', 'DURSEJ', 9), +('S9', '4843', 'DURSEJ', 9), +('S9', '4844', 'DURSEJ', 9), +('S9', '4845', 'DURSEJ', 9), +('S9', '4846', 'DURSEJ', 9), +('S9', '4847', 'DURSEJ', 9), +('S9', '4848', 'DURSEJ', 9), +('S9', '4849', 'DURSEJ', 9), +('S9', '4850', 'DURSEJ', 9), +('S9', '4851', 'DURSEJ', 9), +('S9', '4852', 'DURSEJ', 9), +('S9', '4853', 'DURSEJ', 9), +('S9', '4854', 'DURSEJ', 9), +('S9', '4855', 'DURSEJ', 9), +('S9', '4856', 'DURSEJ', 9), +('S9', '4857', 'DURSEJ', 9), +('S9', '4858', 'DURSEJ', 9), +('S9', '4859', 'DURSEJ', 9), +('S9', '4860', 'DURSEJ', 9), +('S9', '4861', 'DURSEJ', 9), +('S9', '4862', 'DURSEJ', 9), +('S9', '4863', 'DURSEJ', 9), +('S9', '4864', 'DURSEJ', 9), +('S9', '4865', 'DURSEJ', 9), +('S9', '4866', 'DURSEJ', 9), +('S9', '4867', 'DURSEJ', 9), +('S9', '4868', 'DURSEJ', 9), +('S9', '4869', 'DURSEJ', 9), +('S9', '4870', 'DURSEJ', 9), +('S9', '4871', 'DURSEJ', 9), +('S9', '4872', 'DURSEJ', 9), +('S9', '4873', 'DURSEJ', 9), +('S9', '4874', 'DURSEJ', 9), +('S9', '4875', 'DURSEJ', 9), +('S9', '4876', 'DURSEJ', 9), +('S9', '4877', 'DURSEJ', 9), +('S9', '4878', 'DURSEJ', 9), +('S9', '4879', 'DURSEJ', 9), +('S9', '4880', 'DURSEJ', 9), +('S9', '4881', 'DURSEJ', 9), +('S9', '4882', 'DURSEJ', 9), +('S9', '4883', 'DURSEJ', 9), +('S9', '4884', 'DURSEJ', 9), +('S9', '4885', 'DURSEJ', 9), +('S9', '4886', 'DURSEJ', 9), +('S9', '4887', 'DURSEJ', 9), +('S9', '4888', 'DURSEJ', 9), +('S9', '4889', 'DURSEJ', 9), +('S9', '4890', 'DURSEJ', 9), +('S9', '4891', 'DURSEJ', 9), +('S9', '4892', 'DURSEJ', 9), +('S9', '4893', 'DURSEJ', 9), +('S9', '4894', 'DURSEJ', 9), +('S9', '4895', 'DURSEJ', 9), +('S9', '4896', 'DURSEJ', 9), +('S9', '4897', 'DURSEJ', 9), +('S9', '4898', 'DURSEJ', 9), +('S9', '4899', 'DURSEJ', 9), +('S9', '4900', 'DURSEJ', 9), +('S9', '4901', 'DURSEJ', 9), +('S9', '4902', 'DURSEJ', 9), +('S9', '4903', 'DURSEJ', 9), +('S9', '4904', 'DURSEJ', 9), +('S9', '4905', 'DURSEJ', 9), +('S9', '4906', 'DURSEJ', 9), +('S9', '4907', 'DURSEJ', 9), +('S9', '4908', 'DURSEJ', 9), +('S9', '4909', 'DURSEJ', 9), +('S9', '4910', 'DURSEJ', 9), +('S9', '4911', 'DURSEJ', 9), +('S9', '4912', 'DURSEJ', 9), +('S9', '4913', 'DURSEJ', 9), +('S9', '4914', 'DURSEJ', 9), +('S9', '4915', 'DURSEJ', 9), +('S9', '4916', 'DURSEJ', 9), +('S9', '4917', 'DURSEJ', 9), +('S9', '4918', 'DURSEJ', 9), +('S9', '4919', 'DURSEJ', 9), +('S9', '4920', 'DURSEJ', 9), +('S9', '4921', 'DURSEJ', 9), +('S9', '4922', 'DURSEJ', 9), +('S9', '4923', 'DURSEJ', 9), +('S9', '4924', 'DURSEJ', 9), +('S9', '4925', 'DURSEJ', 9), +('S9', '4926', 'DURSEJ', 9), +('S9', '4927', 'DURSEJ', 9), +('S9', '4928', 'DURSEJ', 9), +('S9', '4929', 'DURSEJ', 9), +('S9', '4930', 'DURSEJ', 9), +('S9', '4931', 'DURSEJ', 9), +('S9', '4932', 'DURSEJ', 9), +('S9', '4933', 'DURSEJ', 9), +('S9', '4934', 'DURSEJ', 9), +('S9', '4935', 'DURSEJ', 9), +('S9', '4936', 'DURSEJ', 9), +('S9', '4937', 'DURSEJ', 9), +('S9', '4938', 'DURSEJ', 9), +('S9', '4939', 'DURSEJ', 9), +('S9', '4940', 'DURSEJ', 9), +('S9', '4941', 'DURSEJ', 9), +('S9', '4942', 'DURSEJ', 9), +('S9', '4943', 'DURSEJ', 9), +('S9', '4944', 'DURSEJ', 9), +('S9', '4945', 'DURSEJ', 9), +('S9', '4946', 'DURSEJ', 9), +('S9', '4947', 'DURSEJ', 9), +('S9', '4948', 'DURSEJ', 9), +('S9', '4949', 'DURSEJ', 9), +('S9', '4950', 'DURSEJ', 9), +('S9', '4951', 'DURSEJ', 9), +('S9', '4952', 'DURSEJ', 9), +('S9', '4953', 'DURSEJ', 9), +('S9', '4954', 'DURSEJ', 9), +('S9', '4955', 'DURSEJ', 9), +('S9', '4956', 'DURSEJ', 9), +('S9', '4957', 'DURSEJ', 9), +('S9', '4958', 'DURSEJ', 9), +('S9', '4959', 'DURSEJ', 9), +('S9', '4960', 'DURSEJ', 9), +('S9', '4961', 'DURSEJ', 9), +('S9', '4962', 'DURSEJ', 9), +('S9', '4963', 'DURSEJ', 9), +('S9', '4964', 'DURSEJ', 9), +('S9', '4965', 'DURSEJ', 9), +('S9', '4966', 'DURSEJ', 9), +('S9', '4967', 'DURSEJ', 9), +('S9', '4968', 'DURSEJ', 9), +('S9', '4969', 'DURSEJ', 9), +('S9', '4970', 'DURSEJ', 9), +('S9', '4971', 'DURSEJ', 9), +('S9', '4972', 'DURSEJ', 9), +('S9', '4973', 'DURSEJ', 9), +('S9', '4974', 'DURSEJ', 9), +('S9', '4975', 'DURSEJ', 9), +('S9', '4976', 'DURSEJ', 9), +('S9', '4977', 'DURSEJ', 9), +('S9', '4978', 'DURSEJ', 9), +('S9', '4979', 'DURSEJ', 9), +('S9', '4980', 'DURSEJ', 9), +('S9', '4981', 'DURSEJ', 9), +('S9', '4982', 'DURSEJ', 9), +('S9', '4983', 'DURSEJ', 9), +('S9', '4984', 'DURSEJ', 9), +('S9', '4985', 'DURSEJ', 9), +('S9', '4986', 'DURSEJ', 9), +('S9', '4987', 'DURSEJ', 9), +('S9', '4988', 'DURSEJ', 9), +('S9', '4989', 'DURSEJ', 9), +('S9', '4990', 'DURSEJ', 9), +('S9', '4991', 'DURSEJ', 9), +('S9', '4992', 'DURSEJ', 9), +('S9', '4993', 'DURSEJ', 9), +('S9', '4994', 'DURSEJ', 9), +('S9', '4995', 'DURSEJ', 9), +('S9', '4996', 'DURSEJ', 9), +('S9', '4997', 'DURSEJ', 9), +('S9', '4998', 'DURSEJ', 9), +('S9', '4999', 'DURSEJ', 9), +('S9', '5000', 'DURSEJ', 9), +('S9', '5001', 'DURSEJ', 9), +('S9', '5002', 'DURSEJ', 9), +('S9', '5003', 'DURSEJ', 9), +('S9', '5004', 'DURSEJ', 9), +('S9', '5005', 'DURSEJ', 9), +('S9', '5006', 'DURSEJ', 9), +('S9', '5007', 'DURSEJ', 9), +('S9', '5008', 'DURSEJ', 9), +('S9', '5009', 'DURSEJ', 9), +('S9', '5010', 'DURSEJ', 9), +('S9', '5011', 'DURSEJ', 9), +('S9', '5012', 'DURSEJ', 9), +('S9', '5013', 'DURSEJ', 9), +('S9', '5014', 'DURSEJ', 9), +('S9', '5015', 'DURSEJ', 9), +('S9', '5016', 'DURSEJ', 9), +('S9', '5017', 'DURSEJ', 9), +('S9', '5018', 'DURSEJ', 9), +('S9', '5019', 'DURSEJ', 9), +('S9', '5020', 'DURSEJ', 9), +('S9', '5021', 'DURSEJ', 9), +('S9', '5022', 'DURSEJ', 9), +('S9', '5023', 'DURSEJ', 9), +('S9', '5024', 'DURSEJ', 9), +('S9', '5025', 'DURSEJ', 9), +('S9', '5026', 'DURSEJ', 9), +('S9', '5027', 'DURSEJ', 9), +('S9', '5028', 'DURSEJ', 9), +('S9', '5029', 'DURSEJ', 9), +('S9', '5030', 'DURSEJ', 9), +('S9', '5031', 'DURSEJ', 9), +('S9', '5032', 'DURSEJ', 9), +('S9', '5033', 'DURSEJ', 9), +('S9', '5034', 'DURSEJ', 9), +('S9', '5035', 'DURSEJ', 9), +('S9', '5036', 'DURSEJ', 9), +('S9', '5037', 'DURSEJ', 9), +('S9', '5038', 'DURSEJ', 9), +('S9', '5039', 'DURSEJ', 9), +('S9', '5040', 'DURSEJ', 9), +('S9', '5041', 'DURSEJ', 9), +('S9', '5042', 'DURSEJ', 9), +('S9', '5043', 'DURSEJ', 9), +('S9', '5044', 'DURSEJ', 9), +('S9', '5045', 'DURSEJ', 9), +('S9', '5046', 'DURSEJ', 9), +('S9', '5047', 'DURSEJ', 9), +('S9', '5048', 'DURSEJ', 9), +('S9', '5049', 'DURSEJ', 9), +('S9', '5050', 'DURSEJ', 9), +('S9', '5051', 'DURSEJ', 9), +('S9', '5052', 'DURSEJ', 9), +('S9', '5053', 'DURSEJ', 9), +('S9', '5054', 'DURSEJ', 9), +('S9', '5055', 'DURSEJ', 9), +('S9', '5056', 'DURSEJ', 9), +('S9', '5057', 'DURSEJ', 9), +('S9', '5058', 'DURSEJ', 9), +('S9', '5059', 'DURSEJ', 9), +('S9', '5060', 'DURSEJ', 9), +('S9', '5061', 'DURSEJ', 9), +('S9', '5062', 'DURSEJ', 9), +('S9', '5063', 'DURSEJ', 9), +('S9', '5064', 'DURSEJ', 9), +('S9', '5065', 'DURSEJ', 9), +('S9', '5066', 'DURSEJ', 9), +('S9', '5067', 'DURSEJ', 9), +('S9', '5068', 'DURSEJ', 9), +('S9', '5069', 'DURSEJ', 9), +('S9', '5070', 'DURSEJ', 9), +('S9', '5071', 'DURSEJ', 9), +('S9', '5072', 'DURSEJ', 9), +('S9', '5073', 'DURSEJ', 9), +('S9', '5074', 'DURSEJ', 9), +('S9', '5075', 'DURSEJ', 9), +('S9', '5076', 'DURSEJ', 9), +('S9', '5077', 'DURSEJ', 9), +('S9', '5078', 'DURSEJ', 9), +('S9', '5079', 'DURSEJ', 9), +('S9', '5080', 'DURSEJ', 9), +('S9', '5081', 'DURSEJ', 9), +('S9', '5082', 'DURSEJ', 9), +('S9', '5083', 'DURSEJ', 9), +('S9', '5084', 'DURSEJ', 9), +('S9', '5085', 'DURSEJ', 9), +('S9', '5086', 'DURSEJ', 9), +('S9', '5087', 'DURSEJ', 9), +('S9', '5088', 'DURSEJ', 9), +('S9', '5089', 'DURSEJ', 9), +('S9', '5090', 'DURSEJ', 9), +('S9', '5091', 'DURSEJ', 9), +('S9', '5092', 'DURSEJ', 9), +('S9', '5093', 'DURSEJ', 9), +('S9', '5094', 'DURSEJ', 9), +('S9', '5095', 'DURSEJ', 9), +('S9', '5096', 'DURSEJ', 9), +('S9', '5097', 'DURSEJ', 9), +('S9', '5098', 'DURSEJ', 9), +('S9', '5099', 'DURSEJ', 9), +('S9', '5100', 'DURSEJ', 9), +('S9', '5101', 'DURSEJ', 9), +('S9', '5102', 'DURSEJ', 9), +('S9', '5103', 'DURSEJ', 9), +('S9', '5104', 'DURSEJ', 9), +('S9', '5105', 'DURSEJ', 9), +('S9', '5106', 'DURSEJ', 9), +('S9', '5107', 'DURSEJ', 9), +('S9', '5108', 'DURSEJ', 9), +('S9', '5109', 'DURSEJ', 9), +('S9', '5110', 'DURSEJ', 9), +('S9', '5111', 'DURSEJ', 9), +('S9', '5112', 'DURSEJ', 9), +('S9', '5113', 'DURSEJ', 9), +('S9', '5114', 'DURSEJ', 9), +('S9', '5115', 'DURSEJ', 9), +('S9', '5116', 'DURSEJ', 9), +('S9', '5117', 'DURSEJ', 9), +('S9', '5118', 'DURSEJ', 9), +('S9', '5119', 'DURSEJ', 9), +('S9', '5120', 'DURSEJ', 9), +('S9', '5121', 'DURSEJ', 9), +('S9', '5122', 'DURSEJ', 9), +('S9', '5123', 'DURSEJ', 9), +('S9', '5124', 'DURSEJ', 9), +('S9', '5125', 'DURSEJ', 9), +('S9', '5126', 'DURSEJ', 9), +('S9', '5127', 'DURSEJ', 9), +('S9', '5128', 'DURSEJ', 9), +('S9', '5129', 'DURSEJ', 9), +('S9', '5130', 'DURSEJ', 9), +('S9', '5131', 'DURSEJ', 9), +('S9', '5132', 'DURSEJ', 9), +('S9', '5133', 'DURSEJ', 9), +('S9', '5134', 'DURSEJ', 9), +('S9', '5135', 'DURSEJ', 9), +('S9', '5136', 'DURSEJ', 9), +('S9', '5137', 'DURSEJ', 9), +('S9', '5138', 'DURSEJ', 9), +('S9', '5139', 'DURSEJ', 9), +('S9', '5140', 'DURSEJ', 9), +('S9', '5141', 'DURSEJ', 9), +('S9', '5142', 'DURSEJ', 9), +('S9', '5143', 'DURSEJ', 9), +('S9', '5144', 'DURSEJ', 9), +('S9', '5145', 'DURSEJ', 9), +('S9', '5146', 'DURSEJ', 9), +('S9', '5147', 'DURSEJ', 9), +('S9', '5148', 'DURSEJ', 9), +('S9', '5149', 'DURSEJ', 9), +('S9', '5150', 'DURSEJ', 9), +('S9', '5151', 'DURSEJ', 9), +('S9', '5152', 'DURSEJ', 9), +('S9', '5153', 'DURSEJ', 9), +('S9', '5154', 'DURSEJ', 9), +('S9', '5155', 'DURSEJ', 9), +('S9', '5156', 'DURSEJ', 9), +('S9', '5157', 'DURSEJ', 9), +('S9', '5158', 'DURSEJ', 9), +('S9', '5159', 'DURSEJ', 9), +('S9', '5160', 'DURSEJ', 9), +('S9', '5161', 'DURSEJ', 9), +('S9', '5162', 'DURSEJ', 9), +('S9', '5163', 'DURSEJ', 9), +('S9', '5164', 'DURSEJ', 9), +('S9', '5165', 'DURSEJ', 9), +('S9', '5166', 'DURSEJ', 9), +('S9', '5167', 'DURSEJ', 9), +('S9', '5168', 'DURSEJ', 9), +('S9', '5169', 'DURSEJ', 9), +('S9', '5170', 'DURSEJ', 9), +('S9', '5171', 'DURSEJ', 9), +('S9', '5172', 'DURSEJ', 9), +('S9', '5173', 'DURSEJ', 9), +('S9', '5174', 'DURSEJ', 9), +('S9', '5175', 'DURSEJ', 9), +('S9', '5176', 'DURSEJ', 9), +('S9', '5177', 'DURSEJ', 9), +('S9', '5178', 'DURSEJ', 9), +('S9', '5179', 'DURSEJ', 9), +('S9', '5180', 'DURSEJ', 9), +('S9', '5181', 'DURSEJ', 9), +('S9', '5182', 'DURSEJ', 9), +('S9', '5183', 'DURSEJ', 9), +('S9', '5184', 'DURSEJ', 9), +('S9', '5185', 'DURSEJ', 9), +('S9', '5186', 'DURSEJ', 9), +('S9', '5187', 'DURSEJ', 9), +('S9', '5188', 'DURSEJ', 9), +('S9', '5189', 'DURSEJ', 9), +('S9', '5190', 'DURSEJ', 9), +('S9', '5191', 'DURSEJ', 9), +('S9', '5192', 'DURSEJ', 9), +('S9', '5193', 'DURSEJ', 9), +('S9', '5194', 'DURSEJ', 9), +('S9', '5195', 'DURSEJ', 9), +('S9', '5196', 'DURSEJ', 9), +('S9', '5197', 'DURSEJ', 9), +('S9', '5198', 'DURSEJ', 9), +('S9', '5199', 'DURSEJ', 9), +('S9', '5200', 'DURSEJ', 9), +('S9', '5201', 'DURSEJ', 9), +('S9', '5202', 'DURSEJ', 9), +('S9', '5203', 'DURSEJ', 9), +('S9', '5204', 'DURSEJ', 9), +('S9', '5205', 'DURSEJ', 9), +('S9', '5206', 'DURSEJ', 9), +('S9', '5207', 'DURSEJ', 9), +('S9', '5208', 'DURSEJ', 9), +('S9', '5209', 'DURSEJ', 9), +('S9', '5210', 'DURSEJ', 9), +('S9', '5211', 'DURSEJ', 9), +('S9', '5212', 'DURSEJ', 9), +('S9', '5213', 'DURSEJ', 9), +('S9', '5214', 'DURSEJ', 9), +('S9', '5215', 'DURSEJ', 9), +('S9', '5216', 'DURSEJ', 9), +('S9', '5217', 'DURSEJ', 9), +('S9', '5218', 'DURSEJ', 9), +('S9', '5219', 'DURSEJ', 9), +('S9', '5220', 'DURSEJ', 9), +('S9', '5221', 'DURSEJ', 9), +('S9', '5222', 'DURSEJ', 9), +('S9', '5223', 'DURSEJ', 9), +('S9', '5224', 'DURSEJ', 9), +('S9', '5225', 'DURSEJ', 9), +('S9', '5226', 'DURSEJ', 9), +('S9', '5227', 'DURSEJ', 9), +('S9', '5228', 'DURSEJ', 9), +('S9', '5229', 'DURSEJ', 9), +('S9', '5230', 'DURSEJ', 9), +('S9', '5231', 'DURSEJ', 9), +('S9', '5232', 'DURSEJ', 9), +('S9', '5233', 'DURSEJ', 9), +('S9', '5234', 'DURSEJ', 9), +('S9', '5235', 'DURSEJ', 9), +('S9', '5236', 'DURSEJ', 9), +('S9', '5237', 'DURSEJ', 9), +('S9', '5238', 'DURSEJ', 9), +('S9', '5239', 'DURSEJ', 9), +('S9', '5240', 'DURSEJ', 9), +('S9', '5241', 'DURSEJ', 9), +('S9', '5242', 'DURSEJ', 9), +('S9', '5243', 'DURSEJ', 9), +('S9', '5244', 'DURSEJ', 9), +('S9', '5245', 'DURSEJ', 9), +('S9', '5246', 'DURSEJ', 9), +('S9', '5247', 'DURSEJ', 9), +('S9', '5248', 'DURSEJ', 9), +('S9', '5249', 'DURSEJ', 9), +('S9', '5250', 'DURSEJ', 9), +('S9', '5251', 'DURSEJ', 9), +('S9', '5252', 'DURSEJ', 9), +('S9', '5253', 'DURSEJ', 9), +('S9', '5254', 'DURSEJ', 9), +('S9', '5255', 'DURSEJ', 9), +('S9', '5256', 'DURSEJ', 9), +('S9', '5257', 'DURSEJ', 9), +('S9', '5258', 'DURSEJ', 9), +('S9', '5259', 'DURSEJ', 9), +('S9', '5260', 'DURSEJ', 9), +('S9', '5261', 'DURSEJ', 9), +('S9', '5262', 'DURSEJ', 9), +('S9', '5263', 'DURSEJ', 9), +('S9', '5264', 'DURSEJ', 9), +('S9', '5265', 'DURSEJ', 9), +('S9', '5266', 'DURSEJ', 9), +('S9', '5267', 'DURSEJ', 9), +('S9', '5268', 'DURSEJ', 9), +('S9', '5269', 'DURSEJ', 9), +('S9', '5270', 'DURSEJ', 9), +('S9', '5271', 'DURSEJ', 9), +('S9', '5272', 'DURSEJ', 9), +('S9', '5273', 'DURSEJ', 9), +('S9', '5274', 'DURSEJ', 9), +('S9', '5275', 'DURSEJ', 9), +('S9', '5276', 'DURSEJ', 9), +('S9', '5277', 'DURSEJ', 9), +('S9', '5278', 'DURSEJ', 9), +('S9', '5279', 'DURSEJ', 9), +('S9', '5280', 'DURSEJ', 9), +('S9', '5281', 'DURSEJ', 9), +('S9', '5282', 'DURSEJ', 9), +('S9', '5283', 'DURSEJ', 9), +('S9', '5284', 'DURSEJ', 9), +('S9', '5285', 'DURSEJ', 9), +('S9', '5286', 'DURSEJ', 9), +('S9', '5287', 'DURSEJ', 9), +('S9', '5288', 'DURSEJ', 9), +('S9', '5289', 'DURSEJ', 9), +('S9', '5290', 'DURSEJ', 9), +('S9', '5291', 'DURSEJ', 9), +('S9', '5292', 'DURSEJ', 9), +('S9', '5293', 'DURSEJ', 9), +('S9', '5294', 'DURSEJ', 9), +('S9', '5295', 'DURSEJ', 9), +('S9', '5296', 'DURSEJ', 9), +('S9', '5297', 'DURSEJ', 9), +('S9', '5298', 'DURSEJ', 9), +('S9', '5299', 'DURSEJ', 9), +('S9', '5300', 'DURSEJ', 9), +('S9', '5301', 'DURSEJ', 9), +('S9', '5302', 'DURSEJ', 9), +('S9', '5303', 'DURSEJ', 9), +('S9', '5304', 'DURSEJ', 9), +('S9', '5305', 'DURSEJ', 9), +('S9', '5306', 'DURSEJ', 9), +('S9', '5307', 'DURSEJ', 9), +('S9', '5308', 'DURSEJ', 9), +('S9', '5309', 'DURSEJ', 9), +('S9', '5310', 'DURSEJ', 9), +('S9', '5311', 'DURSEJ', 9), +('S9', '5312', 'DURSEJ', 9), +('S9', '5313', 'DURSEJ', 9), +('S9', '5314', 'DURSEJ', 9), +('S9', '5315', 'DURSEJ', 9), +('S9', '5316', 'DURSEJ', 9), +('S9', '5317', 'DURSEJ', 9), +('S9', '5318', 'DURSEJ', 9), +('S9', '5319', 'DURSEJ', 9), +('S9', '5320', 'DURSEJ', 9), +('S9', '5321', 'DURSEJ', 9), +('S9', '5322', 'DURSEJ', 9), +('S9', '5323', 'DURSEJ', 9), +('S9', '5324', 'DURSEJ', 9), +('S9', '5325', 'DURSEJ', 9), +('S9', '5326', 'DURSEJ', 9), +('S9', '5327', 'DURSEJ', 9), +('S9', '5328', 'DURSEJ', 9), +('S9', '5329', 'DURSEJ', 9), +('S9', '5330', 'DURSEJ', 9), +('S9', '5331', 'DURSEJ', 9), +('S9', '5332', 'DURSEJ', 9), +('S9', '5333', 'DURSEJ', 9), +('S9', '5334', 'DURSEJ', 9), +('S9', '5335', 'DURSEJ', 9), +('S9', '5336', 'DURSEJ', 9), +('S9', '5337', 'DURSEJ', 9), +('S9', '5338', 'DURSEJ', 9), +('S9', '5339', 'DURSEJ', 9), +('S9', '5340', 'DURSEJ', 9), +('S9', '5341', 'DURSEJ', 9), +('S9', '5342', 'DURSEJ', 9), +('S9', '5343', 'DURSEJ', 9), +('S9', '5344', 'DURSEJ', 9), +('S9', '5345', 'DURSEJ', 9), +('S9', '5346', 'DURSEJ', 9), +('S9', '5347', 'DURSEJ', 9), +('S9', '5348', 'DURSEJ', 9), +('S9', '5349', 'DURSEJ', 9), +('S9', '5350', 'DURSEJ', 9), +('S9', '5351', 'DURSEJ', 9), +('S9', '5352', 'DURSEJ', 9), +('S9', '5353', 'DURSEJ', 9), +('S9', '5354', 'DURSEJ', 9), +('S9', '5355', 'DURSEJ', 9), +('S9', '5356', 'DURSEJ', 9), +('S9', '5357', 'DURSEJ', 9), +('S9', '5358', 'DURSEJ', 9), +('S9', '5359', 'DURSEJ', 9), +('S9', '5360', 'DURSEJ', 9), +('S9', '5361', 'DURSEJ', 9), +('S9', '5362', 'DURSEJ', 9), +('S9', '5363', 'DURSEJ', 9), +('S9', '5364', 'DURSEJ', 9), +('S9', '5365', 'DURSEJ', 9), +('S9', '5366', 'DURSEJ', 9), +('S9', '5367', 'DURSEJ', 9), +('S9', '5368', 'DURSEJ', 9), +('S9', '5369', 'DURSEJ', 9), +('S9', '5370', 'DURSEJ', 9), +('S9', '5371', 'DURSEJ', 9), +('S9', '5372', 'DURSEJ', 9), +('S9', '5373', 'DURSEJ', 9), +('S9', '5374', 'DURSEJ', 9), +('S9', '5375', 'DURSEJ', 9), +('S9', '5376', 'DURSEJ', 9), +('S9', '5377', 'DURSEJ', 9), +('S9', '5378', 'DURSEJ', 9), +('S9', '5379', 'DURSEJ', 9), +('S9', '5380', 'DURSEJ', 9), +('S9', '5381', 'DURSEJ', 9), +('S9', '5382', 'DURSEJ', 9), +('S9', '5383', 'DURSEJ', 9), +('S9', '5384', 'DURSEJ', 9), +('S9', '5385', 'DURSEJ', 9), +('S9', '5386', 'DURSEJ', 9), +('S9', '5387', 'DURSEJ', 9), +('S9', '5388', 'DURSEJ', 9), +('S9', '5389', 'DURSEJ', 9), +('S9', '5390', 'DURSEJ', 9), +('S9', '5391', 'DURSEJ', 9), +('S9', '5392', 'DURSEJ', 9), +('S9', '5393', 'DURSEJ', 9), +('S9', '5394', 'DURSEJ', 9), +('S9', '5395', 'DURSEJ', 9), +('S9', '5396', 'DURSEJ', 9), +('S9', '5397', 'DURSEJ', 9), +('S9', '5398', 'DURSEJ', 9), +('S9', '5399', 'DURSEJ', 9), +('S9', '5400', 'DURSEJ', 9), +('S9', '5401', 'DURSEJ', 9), +('S9', '5402', 'DURSEJ', 9), +('S9', '5403', 'DURSEJ', 9), +('S9', '5404', 'DURSEJ', 9), +('S9', '5405', 'DURSEJ', 9), +('S9', '5406', 'DURSEJ', 9), +('S9', '5407', 'DURSEJ', 9), +('S9', '5408', 'DURSEJ', 9), +('S9', '5409', 'DURSEJ', 9), +('S9', '5410', 'DURSEJ', 9), +('S9', '5411', 'DURSEJ', 9), +('S9', '5412', 'DURSEJ', 9), +('S9', '5413', 'DURSEJ', 9), +('S9', '5414', 'DURSEJ', 9), +('S9', '5415', 'DURSEJ', 9), +('S9', '5416', 'DURSEJ', 9), +('S9', '5417', 'DURSEJ', 9), +('S9', '5418', 'DURSEJ', 9), +('S9', '5419', 'DURSEJ', 9), +('S9', '5420', 'DURSEJ', 9), +('S9', '5421', 'DURSEJ', 9), +('S9', '5422', 'DURSEJ', 9), +('S9', '5423', 'DURSEJ', 9), +('S9', '5424', 'DURSEJ', 9), +('S9', '5425', 'DURSEJ', 9), +('S9', '5426', 'DURSEJ', 9), +('S9', '5427', 'DURSEJ', 9), +('S9', '5428', 'DURSEJ', 9), +('S9', '5429', 'DURSEJ', 9), +('S9', '5430', 'DURSEJ', 9), +('S9', '5431', 'DURSEJ', 9), +('S9', '5432', 'DURSEJ', 9), +('S9', '5433', 'DURSEJ', 9), +('S9', '5434', 'DURSEJ', 9), +('S9', '5435', 'DURSEJ', 9), +('S9', '5436', 'DURSEJ', 9), +('S9', '5437', 'DURSEJ', 9), +('S9', '5438', 'DURSEJ', 9), +('S9', '5439', 'DURSEJ', 9), +('S9', '5440', 'DURSEJ', 9), +('S9', '5441', 'DURSEJ', 9), +('S9', '5442', 'DURSEJ', 9), +('S9', '5443', 'DURSEJ', 9), +('S9', '5444', 'DURSEJ', 9), +('S9', '5445', 'DURSEJ', 9), +('S9', '5446', 'DURSEJ', 9), +('S9', '5447', 'DURSEJ', 9), +('S9', '5448', 'DURSEJ', 9), +('S9', '5449', 'DURSEJ', 9), +('S9', '5450', 'DURSEJ', 9), +('S9', '5451', 'DURSEJ', 9), +('S9', '5452', 'DURSEJ', 9), +('S9', '5453', 'DURSEJ', 9), +('S9', '5454', 'DURSEJ', 9), +('S9', '5455', 'DURSEJ', 9), +('S9', '5456', 'DURSEJ', 9), +('S9', '5457', 'DURSEJ', 9), +('S9', '5458', 'DURSEJ', 9), +('S9', '5459', 'DURSEJ', 9), +('S9', '5460', 'DURSEJ', 9), +('S9', '5461', 'DURSEJ', 9), +('S9', '5462', 'DURSEJ', 9), +('S9', '5463', 'DURSEJ', 9), +('S9', '5464', 'DURSEJ', 9), +('S9', '5465', 'DURSEJ', 9), +('S9', '5466', 'DURSEJ', 9), +('S9', '5467', 'DURSEJ', 9), +('S9', '5468', 'DURSEJ', 9), +('S9', '5469', 'DURSEJ', 9), +('S9', '5470', 'DURSEJ', 9), +('S9', '5471', 'DURSEJ', 9), +('S9', '5472', 'DURSEJ', 9), +('S9', '5473', 'DURSEJ', 9), +('S9', '5474', 'DURSEJ', 9), +('S9', '5475', 'DURSEJ', 9), +('S9', '5476', 'DURSEJ', 9), +('S9', '5477', 'DURSEJ', 9), +('S9', '5478', 'DURSEJ', 9), +('S9', '5479', 'DURSEJ', 9), +('S9', '5480', 'DURSEJ', 9), +('S9', '5481', 'DURSEJ', 9), +('S9', '5482', 'DURSEJ', 9), +('S9', '5483', 'DURSEJ', 9), +('S9', '5484', 'DURSEJ', 9), +('S9', '5485', 'DURSEJ', 9), +('S9', '5486', 'DURSEJ', 9), +('S9', '5487', 'DURSEJ', 9), +('S9', '5488', 'DURSEJ', 9), +('S9', '5489', 'DURSEJ', 9), +('S9', '5490', 'DURSEJ', 9), +('S9', '5491', 'DURSEJ', 9), +('S9', '5492', 'DURSEJ', 9), +('S9', '5493', 'DURSEJ', 9), +('S9', '5494', 'DURSEJ', 9), +('S9', '5495', 'DURSEJ', 9), +('S9', '5496', 'DURSEJ', 9), +('S9', '5497', 'DURSEJ', 9), +('S9', '5498', 'DURSEJ', 9), +('S9', '5499', 'DURSEJ', 9), +('S9', '5500', 'DURSEJ', 9), +('S9', '5501', 'DURSEJ', 9), +('S9', '5502', 'DURSEJ', 9), +('S9', '5503', 'DURSEJ', 9), +('S9', '5504', 'DURSEJ', 9), +('S9', '5505', 'DURSEJ', 9), +('S9', '5506', 'DURSEJ', 9), +('S9', '5507', 'DURSEJ', 9), +('S9', '5508', 'DURSEJ', 9), +('S9', '5509', 'DURSEJ', 9), +('S9', '5510', 'DURSEJ', 9), +('S9', '5511', 'DURSEJ', 9), +('S9', '5512', 'DURSEJ', 9), +('S9', '5513', 'DURSEJ', 9), +('S9', '5514', 'DURSEJ', 9), +('S9', '5515', 'DURSEJ', 9), +('S9', '5516', 'DURSEJ', 9), +('S9', '5517', 'DURSEJ', 9), +('S9', '5518', 'DURSEJ', 9), +('S9', '5519', 'DURSEJ', 9), +('S9', '5520', 'DURSEJ', 9), +('S9', '5521', 'DURSEJ', 9), +('S9', '5522', 'DURSEJ', 9), +('S9', '5523', 'DURSEJ', 9), +('S9', '5524', 'DURSEJ', 9), +('S9', '5525', 'DURSEJ', 9), +('S9', '5526', 'DURSEJ', 9), +('S9', '5527', 'DURSEJ', 9), +('S9', '5528', 'DURSEJ', 9), +('S9', '5529', 'DURSEJ', 9), +('S9', '5530', 'DURSEJ', 9), +('S9', '5531', 'DURSEJ', 9), +('S9', '5532', 'DURSEJ', 9), +('S9', '5533', 'DURSEJ', 9), +('S9', '5534', 'DURSEJ', 9), +('S9', '5535', 'DURSEJ', 9), +('S9', '5536', 'DURSEJ', 9), +('S9', '5537', 'DURSEJ', 9), +('S9', '5538', 'DURSEJ', 9), +('S9', '5539', 'DURSEJ', 9), +('S9', '5540', 'DURSEJ', 9), +('S9', '5541', 'DURSEJ', 9), +('S9', '5542', 'DURSEJ', 9), +('S9', '5543', 'DURSEJ', 9), +('S9', '5544', 'DURSEJ', 9), +('S9', '5545', 'DURSEJ', 9), +('S9', '5546', 'DURSEJ', 9), +('S9', '5547', 'DURSEJ', 9), +('S9', '5548', 'DURSEJ', 9), +('S9', '5549', 'DURSEJ', 9), +('S9', '5550', 'DURSEJ', 9), +('S9', '5551', 'DURSEJ', 9), +('S9', '5552', 'DURSEJ', 9), +('S9', '5553', 'DURSEJ', 9), +('S9', '5554', 'DURSEJ', 9), +('S9', '5555', 'DURSEJ', 9), +('S9', '5556', 'DURSEJ', 9), +('S9', '5557', 'DURSEJ', 9), +('S9', '5558', 'DURSEJ', 9), +('S9', '5559', 'DURSEJ', 9), +('S9', '5560', 'DURSEJ', 9), +('S9', '5561', 'DURSEJ', 9), +('S9', '5562', 'DURSEJ', 9), +('S9', '5563', 'DURSEJ', 9), +('S9', '5564', 'DURSEJ', 9), +('S9', '5565', 'DURSEJ', 9), +('S9', '5566', 'DURSEJ', 9), +('S9', '5567', 'DURSEJ', 9), +('S9', '5568', 'DURSEJ', 9), +('S9', '5569', 'DURSEJ', 9), +('S9', '5570', 'DURSEJ', 9), +('S9', '5571', 'DURSEJ', 9), +('S9', '5572', 'DURSEJ', 9), +('S9', '5573', 'DURSEJ', 9), +('S9', '5574', 'DURSEJ', 9), +('S9', '5575', 'DURSEJ', 9), +('S9', '5576', 'DURSEJ', 9), +('S9', '5577', 'DURSEJ', 9), +('S9', '5578', 'DURSEJ', 9), +('S9', '5579', 'DURSEJ', 9), +('S9', '5580', 'DURSEJ', 9), +('S9', '5581', 'DURSEJ', 9), +('S9', '5582', 'DURSEJ', 9), +('S9', '5583', 'DURSEJ', 9), +('S9', '5584', 'DURSEJ', 9), +('S9', '5585', 'DURSEJ', 9), +('S9', '5586', 'DURSEJ', 9), +('S9', '5587', 'DURSEJ', 9), +('S9', '5588', 'DURSEJ', 9), +('S9', '5589', 'DURSEJ', 9), +('S9', '5590', 'DURSEJ', 9), +('S9', '5591', 'DURSEJ', 9), +('S9', '5592', 'DURSEJ', 9), +('S9', '5593', 'DURSEJ', 9), +('S9', '5594', 'DURSEJ', 9), +('S9', '5595', 'DURSEJ', 9), +('S9', '5596', 'DURSEJ', 9), +('S9', '5597', 'DURSEJ', 9), +('S9', '5598', 'DURSEJ', 9), +('S9', '5599', 'DURSEJ', 9), +('S9', '5600', 'DURSEJ', 9), +('S9', '5601', 'DURSEJ', 9), +('S9', '5602', 'DURSEJ', 9), +('S9', '5603', 'DURSEJ', 9), +('S9', '5604', 'DURSEJ', 9), +('S9', '5605', 'DURSEJ', 9), +('S9', '5606', 'DURSEJ', 9), +('S9', '5607', 'DURSEJ', 9), +('S9', '5608', 'DURSEJ', 9), +('S9', '5609', 'DURSEJ', 9), +('S9', '5610', 'DURSEJ', 9), +('S9', '5611', 'DURSEJ', 9), +('S9', '5612', 'DURSEJ', 9), +('S9', '5613', 'DURSEJ', 9), +('S9', '5614', 'DURSEJ', 9), +('S9', '5615', 'DURSEJ', 9), +('S9', '5616', 'DURSEJ', 9), +('S9', '5617', 'DURSEJ', 9), +('S9', '5618', 'DURSEJ', 9), +('S9', '5619', 'DURSEJ', 9), +('S9', '5620', 'DURSEJ', 9), +('S9', '5621', 'DURSEJ', 9), +('S9', '5622', 'DURSEJ', 9), +('S9', '5623', 'DURSEJ', 9), +('S9', '5624', 'DURSEJ', 9), +('S9', '5625', 'DURSEJ', 9), +('S9', '5626', 'DURSEJ', 9), +('S9', '5627', 'DURSEJ', 9), +('S9', '5628', 'DURSEJ', 9), +('S9', '5629', 'DURSEJ', 9), +('S9', '5630', 'DURSEJ', 9), +('S9', '5631', 'DURSEJ', 9), +('S9', '5632', 'DURSEJ', 9), +('S9', '5633', 'DURSEJ', 9), +('S9', '5634', 'DURSEJ', 9), +('S9', '5635', 'DURSEJ', 9), +('S9', '5636', 'DURSEJ', 9), +('S9', '5637', 'DURSEJ', 9), +('S9', '5638', 'DURSEJ', 9), +('S9', '5639', 'DURSEJ', 9), +('S9', '5640', 'DURSEJ', 9), +('S9', '5641', 'DURSEJ', 9), +('S9', '5642', 'DURSEJ', 9), +('S9', '5643', 'DURSEJ', 9), +('S9', '5644', 'DURSEJ', 9), +('S9', '5645', 'DURSEJ', 9), +('S9', '5646', 'DURSEJ', 9), +('S9', '5647', 'DURSEJ', 9), +('S9', '5648', 'DURSEJ', 9), +('S9', '5649', 'DURSEJ', 9), +('S9', '5650', 'DURSEJ', 9), +('S9', '5651', 'DURSEJ', 9), +('S9', '5652', 'DURSEJ', 9), +('S9', '5653', 'DURSEJ', 9), +('S9', '5654', 'DURSEJ', 9), +('S9', '5655', 'DURSEJ', 9), +('S9', '5656', 'DURSEJ', 9), +('S9', '5657', 'DURSEJ', 9), +('S9', '5658', 'DURSEJ', 9), +('S9', '5659', 'DURSEJ', 9), +('S9', '5660', 'DURSEJ', 9), +('S9', '5661', 'DURSEJ', 9), +('S9', '5662', 'DURSEJ', 9), +('S9', '5663', 'DURSEJ', 9), +('S9', '5664', 'DURSEJ', 9), +('S9', '5665', 'DURSEJ', 9), +('S9', '5666', 'DURSEJ', 9), +('S9', '5667', 'DURSEJ', 9), +('S9', '5668', 'DURSEJ', 9), +('S9', '5669', 'DURSEJ', 9), +('S9', '5670', 'DURSEJ', 9), +('S9', '5671', 'DURSEJ', 9), +('S9', '5672', 'DURSEJ', 9), +('S9', '5673', 'DURSEJ', 9), +('S9', '5674', 'DURSEJ', 9), +('S9', '5675', 'DURSEJ', 9), +('S9', '5676', 'DURSEJ', 9), +('S9', '5677', 'DURSEJ', 9), +('S9', '5678', 'DURSEJ', 9), +('S9', '5679', 'DURSEJ', 9), +('S9', '5680', 'DURSEJ', 9), +('S9', '5681', 'DURSEJ', 9), +('S9', '5682', 'DURSEJ', 9), +('S9', '5683', 'DURSEJ', 9), +('S9', '5684', 'DURSEJ', 9), +('S9', '5685', 'DURSEJ', 9), +('S9', '5686', 'DURSEJ', 9), +('S9', '5687', 'DURSEJ', 9), +('S9', '5688', 'DURSEJ', 9), +('S9', '5689', 'DURSEJ', 9), +('S9', '5690', 'DURSEJ', 9), +('S9', '5691', 'DURSEJ', 9), +('S9', '5692', 'DURSEJ', 9), +('S9', '5693', 'DURSEJ', 9), +('S9', '5694', 'DURSEJ', 9), +('S9', '5695', 'DURSEJ', 9), +('S9', '5696', 'DURSEJ', 9), +('S9', '5697', 'DURSEJ', 9), +('S9', '5698', 'DURSEJ', 9), +('S9', '5699', 'DURSEJ', 9), +('S9', '5700', 'DURSEJ', 9), +('S9', '5701', 'DURSEJ', 9), +('S9', '5702', 'DURSEJ', 9), +('S9', '5703', 'DURSEJ', 9), +('S9', '5704', 'DURSEJ', 9), +('S9', '5705', 'DURSEJ', 9), +('S9', '5706', 'DURSEJ', 9), +('S9', '5707', 'DURSEJ', 9), +('S9', '5708', 'DURSEJ', 9), +('S9', '5709', 'DURSEJ', 9), +('S9', '5710', 'DURSEJ', 9), +('S9', '5711', 'DURSEJ', 9), +('S9', '5712', 'DURSEJ', 9), +('S9', '5713', 'DURSEJ', 9), +('S9', '5714', 'DURSEJ', 9), +('S9', '5715', 'DURSEJ', 9), +('S9', '5716', 'DURSEJ', 9), +('S9', '5717', 'DURSEJ', 9), +('S9', '5718', 'DURSEJ', 9), +('S9', '5719', 'DURSEJ', 9), +('S9', '5720', 'DURSEJ', 9), +('S9', '5721', 'DURSEJ', 9), +('S9', '5722', 'DURSEJ', 9), +('S9', '5723', 'DURSEJ', 9), +('S9', '5724', 'DURSEJ', 9), +('S9', '5725', 'DURSEJ', 9), +('S9', '5726', 'DURSEJ', 9), +('S9', '5727', 'DURSEJ', 9), +('S9', '5728', 'DURSEJ', 9), +('S9', '5729', 'DURSEJ', 9), +('S9', '5730', 'DURSEJ', 9), +('S9', '5731', 'DURSEJ', 9), +('S9', '5732', 'DURSEJ', 9), +('S9', '5733', 'DURSEJ', 9), +('S9', '5734', 'DURSEJ', 9), +('S9', '5735', 'DURSEJ', 9), +('S9', '5736', 'DURSEJ', 9), +('S9', '5737', 'DURSEJ', 9), +('S9', '5738', 'DURSEJ', 9), +('S9', '5739', 'DURSEJ', 9), +('S9', '5740', 'DURSEJ', 9), +('S9', '5741', 'DURSEJ', 9), +('S9', '5742', 'DURSEJ', 9), +('S9', '5743', 'DURSEJ', 9), +('S9', '5744', 'DURSEJ', 9), +('S9', '5745', 'DURSEJ', 9), +('S9', '5746', 'DURSEJ', 9), +('S9', '5747', 'DURSEJ', 9), +('S9', '5748', 'DURSEJ', 9), +('S9', '5749', 'DURSEJ', 9), +('S9', '5750', 'DURSEJ', 9), +('S9', '5751', 'DURSEJ', 9), +('S9', '5752', 'DURSEJ', 9), +('S9', '5753', 'DURSEJ', 9), +('S9', '5754', 'DURSEJ', 9), +('S9', '5755', 'DURSEJ', 9), +('S9', '5756', 'DURSEJ', 9), +('S9', '5757', 'DURSEJ', 9), +('S9', '5758', 'DURSEJ', 9), +('S9', '5759', 'DURSEJ', 9), +('S9', '5760', 'DURSEJ', 9), +('S9', '5761', 'DURSEJ', 9), +('S9', '5762', 'DURSEJ', 9), +('S9', '5763', 'DURSEJ', 9), +('S9', '5764', 'DURSEJ', 9), +('S9', '5765', 'DURSEJ', 9), +('S9', '5766', 'DURSEJ', 9), +('S9', '5767', 'DURSEJ', 9), +('S9', '5768', 'DURSEJ', 9), +('S9', '5769', 'DURSEJ', 9), +('S9', '5770', 'DURSEJ', 9), +('S9', '5771', 'DURSEJ', 9), +('S9', '5772', 'DURSEJ', 9), +('S9', '5773', 'DURSEJ', 9), +('S9', '5774', 'DURSEJ', 9), +('S9', '5775', 'DURSEJ', 9), +('S9', '5776', 'DURSEJ', 9), +('S9', '5777', 'DURSEJ', 9), +('S9', '5778', 'DURSEJ', 9), +('S9', '5779', 'DURSEJ', 9), +('S9', '5780', 'DURSEJ', 9), +('S9', '5781', 'DURSEJ', 9), +('S9', '5782', 'DURSEJ', 9), +('S9', '5783', 'DURSEJ', 9), +('S9', '5784', 'DURSEJ', 9), +('S9', '5785', 'DURSEJ', 9), +('S9', '5786', 'DURSEJ', 9), +('S9', '5787', 'DURSEJ', 9), +('S9', '5788', 'DURSEJ', 9), +('S9', '5789', 'DURSEJ', 9), +('S9', '5790', 'DURSEJ', 9), +('S9', '5791', 'DURSEJ', 9), +('S9', '5792', 'DURSEJ', 9), +('S9', '5793', 'DURSEJ', 9), +('S9', '5794', 'DURSEJ', 9), +('S9', '5795', 'DURSEJ', 9), +('S9', '5796', 'DURSEJ', 9), +('S9', '5797', 'DURSEJ', 9), +('S9', '5798', 'DURSEJ', 9), +('S9', '5799', 'DURSEJ', 9), +('S9', '5800', 'DURSEJ', 9), +('S9', '5801', 'DURSEJ', 9), +('S9', '5802', 'DURSEJ', 9), +('S9', '5803', 'DURSEJ', 9), +('S9', '5804', 'DURSEJ', 9), +('S9', '5805', 'DURSEJ', 9), +('S9', '5806', 'DURSEJ', 9), +('S9', '5807', 'DURSEJ', 9), +('S9', '5808', 'DURSEJ', 9), +('S9', '5809', 'DURSEJ', 9), +('S9', '5810', 'DURSEJ', 9), +('S9', '5811', 'DURSEJ', 9), +('S9', '5812', 'DURSEJ', 9), +('S9', '5813', 'DURSEJ', 9), +('S9', '5814', 'DURSEJ', 9), +('S9', '5815', 'DURSEJ', 9), +('S9', '5816', 'DURSEJ', 9), +('S9', '5817', 'DURSEJ', 9), +('S9', '5818', 'DURSEJ', 9), +('S9', '5819', 'DURSEJ', 9), +('S9', '5820', 'DURSEJ', 9), +('S9', '5821', 'DURSEJ', 9), +('S9', '5822', 'DURSEJ', 9), +('S9', '5823', 'DURSEJ', 9), +('S9', '5824', 'DURSEJ', 9), +('S9', '5825', 'DURSEJ', 9), +('S9', '5826', 'DURSEJ', 9), +('S9', '5827', 'DURSEJ', 9), +('S9', '5828', 'DURSEJ', 9), +('S9', '5829', 'DURSEJ', 9), +('S9', '5830', 'DURSEJ', 9), +('S9', '5831', 'DURSEJ', 9), +('S9', '5832', 'DURSEJ', 9), +('S9', '5833', 'DURSEJ', 9), +('S9', '5834', 'DURSEJ', 9), +('S9', '5835', 'DURSEJ', 9), +('S9', '5836', 'DURSEJ', 9), +('S9', '5837', 'DURSEJ', 9), +('S9', '5838', 'DURSEJ', 9), +('S9', '5839', 'DURSEJ', 9), +('S9', '5840', 'DURSEJ', 9), +('S9', '5841', 'DURSEJ', 9), +('S9', '5842', 'DURSEJ', 9), +('S9', '5843', 'DURSEJ', 9), +('S9', '5844', 'DURSEJ', 9), +('S9', '5845', 'DURSEJ', 9), +('S9', '5846', 'DURSEJ', 9), +('S9', '5847', 'DURSEJ', 9), +('S9', '5848', 'DURSEJ', 9), +('S9', '5849', 'DURSEJ', 9), +('S9', '5850', 'DURSEJ', 9), +('S9', '5851', 'DURSEJ', 9), +('S9', '5852', 'DURSEJ', 9), +('S9', '5853', 'DURSEJ', 9), +('S9', '5854', 'DURSEJ', 9), +('S9', '5855', 'DURSEJ', 9), +('S9', '5856', 'DURSEJ', 9), +('S9', '5857', 'DURSEJ', 9), +('S9', '5858', 'DURSEJ', 9), +('S9', '5859', 'DURSEJ', 9), +('S9', '5860', 'DURSEJ', 9), +('S9', '5861', 'DURSEJ', 9), +('S9', '5862', 'DURSEJ', 9), +('S9', '5863', 'DURSEJ', 9), +('S9', '5864', 'DURSEJ', 9), +('S9', '5865', 'DURSEJ', 9), +('S9', '5866', 'DURSEJ', 9), +('S9', '5867', 'DURSEJ', 9), +('S9', '5868', 'DURSEJ', 9), +('S9', '5869', 'DURSEJ', 9), +('S9', '5870', 'DURSEJ', 9), +('S9', '5871', 'DURSEJ', 9), +('S9', '5872', 'DURSEJ', 9), +('S9', '5873', 'DURSEJ', 9), +('S9', '5874', 'DURSEJ', 9), +('S9', '5875', 'DURSEJ', 9), +('S9', '5876', 'DURSEJ', 9), +('S9', '5877', 'DURSEJ', 9), +('S9', '5878', 'DURSEJ', 9), +('S9', '5879', 'DURSEJ', 9), +('S9', '5880', 'DURSEJ', 9), +('S9', '5881', 'DURSEJ', 9), +('S9', '5882', 'DURSEJ', 9), +('S9', '5883', 'DURSEJ', 9), +('S9', '5884', 'DURSEJ', 9), +('S9', '5885', 'DURSEJ', 9), +('S9', '5886', 'DURSEJ', 9), +('S9', '5887', 'DURSEJ', 9), +('S9', '5888', 'DURSEJ', 9), +('S9', '5889', 'DURSEJ', 9), +('S9', '5890', 'DURSEJ', 9), +('S9', '5891', 'DURSEJ', 9), +('S9', '5892', 'DURSEJ', 9), +('S9', '5893', 'DURSEJ', 9), +('S9', '5894', 'DURSEJ', 9), +('S9', '5895', 'DURSEJ', 9), +('S9', '5896', 'DURSEJ', 9), +('S9', '5897', 'DURSEJ', 9), +('S9', '5898', 'DURSEJ', 9), +('S9', '5899', 'DURSEJ', 9), +('S9', '5900', 'DURSEJ', 9), +('S9', '5901', 'DURSEJ', 9), +('S9', '5902', 'DURSEJ', 9), +('S9', '5903', 'DURSEJ', 9), +('S9', '5904', 'DURSEJ', 9), +('S9', '5905', 'DURSEJ', 9), +('S9', '5906', 'DURSEJ', 9), +('S9', '5907', 'DURSEJ', 9), +('S9', '5908', 'DURSEJ', 9), +('S9', '5909', 'DURSEJ', 9), +('S9', '5910', 'DURSEJ', 9), +('S9', '5911', 'DURSEJ', 9), +('S9', '5912', 'DURSEJ', 9), +('S9', '5913', 'DURSEJ', 9), +('S9', '5914', 'DURSEJ', 9), +('S9', '5915', 'DURSEJ', 9), +('S9', '5916', 'DURSEJ', 9), +('S9', '5917', 'DURSEJ', 9), +('S9', '5918', 'DURSEJ', 9), +('S9', '5919', 'DURSEJ', 9), +('S9', '5920', 'DURSEJ', 9), +('S9', '5921', 'DURSEJ', 9), +('S9', '5922', 'DURSEJ', 9), +('S9', '5923', 'DURSEJ', 9), +('S9', '5924', 'DURSEJ', 9), +('S9', '5925', 'DURSEJ', 9), +('S9', '5926', 'DURSEJ', 9), +('S9', '5927', 'DURSEJ', 9), +('S9', '5928', 'DURSEJ', 9), +('S9', '5929', 'DURSEJ', 9), +('S9', '5930', 'DURSEJ', 9), +('S9', '5931', 'DURSEJ', 9), +('S9', '5932', 'DURSEJ', 9), +('S9', '5933', 'DURSEJ', 9), +('S9', '5934', 'DURSEJ', 9), +('S9', '5935', 'DURSEJ', 9), +('S9', '5936', 'DURSEJ', 9), +('S9', '5937', 'DURSEJ', 9), +('S9', '5938', 'DURSEJ', 9), +('S9', '5939', 'DURSEJ', 9), +('S9', '5940', 'DURSEJ', 9), +('S9', '5941', 'DURSEJ', 9), +('S9', '5942', 'DURSEJ', 9), +('S9', '5943', 'DURSEJ', 9), +('S9', '5944', 'DURSEJ', 9), +('S9', '5945', 'DURSEJ', 9), +('S9', '5946', 'DURSEJ', 9), +('S9', '5947', 'DURSEJ', 9), +('S9', '5948', 'DURSEJ', 9), +('S9', '5949', 'DURSEJ', 9), +('S9', '5950', 'DURSEJ', 9), +('S9', '5951', 'DURSEJ', 9), +('S9', '5952', 'DURSEJ', 9), +('S9', '5953', 'DURSEJ', 9), +('S9', '5954', 'DURSEJ', 9), +('S9', '5955', 'DURSEJ', 9), +('S9', '5956', 'DURSEJ', 9), +('S9', '5957', 'DURSEJ', 9), +('S9', '5958', 'DURSEJ', 9), +('S9', '5959', 'DURSEJ', 9), +('S9', '5960', 'DURSEJ', 9), +('S9', '5961', 'DURSEJ', 9), +('S9', '5962', 'DURSEJ', 9), +('S9', '5963', 'DURSEJ', 9), +('S9', '5964', 'DURSEJ', 9), +('S9', '5965', 'DURSEJ', 9), +('S9', '5966', 'DURSEJ', 9), +('S9', '5967', 'DURSEJ', 9), +('S9', '5968', 'DURSEJ', 9), +('S9', '5969', 'DURSEJ', 9), +('S9', '5970', 'DURSEJ', 9), +('S9', '5971', 'DURSEJ', 9), +('S9', '5972', 'DURSEJ', 9), +('S9', '5973', 'DURSEJ', 9), +('S9', '5974', 'DURSEJ', 9), +('S9', '5975', 'DURSEJ', 9), +('S9', '5976', 'DURSEJ', 9), +('S9', '5977', 'DURSEJ', 9), +('S9', '5978', 'DURSEJ', 9), +('S9', '5979', 'DURSEJ', 9), +('S9', '5980', 'DURSEJ', 9), +('S9', '5981', 'DURSEJ', 9), +('S9', '5982', 'DURSEJ', 9), +('S9', '5983', 'DURSEJ', 9), +('S9', '5984', 'DURSEJ', 9), +('S9', '5985', 'DURSEJ', 9), +('S9', '5986', 'DURSEJ', 9), +('S9', '5987', 'DURSEJ', 9), +('S9', '5988', 'DURSEJ', 9), +('S9', '5989', 'DURSEJ', 9), +('S9', '5990', 'DURSEJ', 9), +('S9', '5991', 'DURSEJ', 9), +('S9', '5992', 'DURSEJ', 9), +('S9', '5993', 'DURSEJ', 9), +('S9', '5994', 'DURSEJ', 9), +('S9', '5995', 'DURSEJ', 9), +('S9', '5996', 'DURSEJ', 9), +('S9', '5997', 'DURSEJ', 9), +('S9', '5998', 'DURSEJ', 9), +('S9', '5999', 'DURSEJ', 9), +('S9', '6000', 'DURSEJ', 9), +('S9', '6001', 'DURSEJ', 9), +('S9', '6002', 'DURSEJ', 9), +('S9', '6003', 'DURSEJ', 9), +('S9', '6004', 'DURSEJ', 9), +('S9', '6005', 'DURSEJ', 9), +('S9', '6006', 'DURSEJ', 9), +('S9', '6007', 'DURSEJ', 9), +('S9', '6008', 'DURSEJ', 9), +('S9', '6009', 'DURSEJ', 9), +('S9', '6010', 'DURSEJ', 9), +('S9', '6011', 'DURSEJ', 9), +('S9', '6012', 'DURSEJ', 9), +('S9', '6013', 'DURSEJ', 9), +('S9', '6014', 'DURSEJ', 9), +('S9', '6015', 'DURSEJ', 9), +('S9', '6016', 'DURSEJ', 9), +('S9', '6017', 'DURSEJ', 9), +('S9', '6018', 'DURSEJ', 9), +('S9', '6019', 'DURSEJ', 9), +('S9', '6020', 'DURSEJ', 9), +('S9', '6021', 'DURSEJ', 9), +('S9', '6022', 'DURSEJ', 9), +('S9', '6023', 'DURSEJ', 9), +('S9', '6024', 'DURSEJ', 9), +('S9', '6025', 'DURSEJ', 9), +('S9', '6026', 'DURSEJ', 9), +('S9', '6027', 'DURSEJ', 9), +('S9', '6028', 'DURSEJ', 9), +('S9', '6029', 'DURSEJ', 9), +('S9', '6030', 'DURSEJ', 9), +('S9', '6031', 'DURSEJ', 9), +('S9', '6032', 'DURSEJ', 9), +('S9', '6033', 'DURSEJ', 9), +('S9', '6034', 'DURSEJ', 9), +('S9', '6035', 'DURSEJ', 9), +('S9', '6036', 'DURSEJ', 9), +('S9', '6037', 'DURSEJ', 9), +('S9', '6038', 'DURSEJ', 9), +('S9', '6039', 'DURSEJ', 9), +('S9', '6040', 'DURSEJ', 9), +('S9', '6041', 'DURSEJ', 9), +('S9', '6042', 'DURSEJ', 9), +('S9', '6043', 'DURSEJ', 9), +('S9', '6044', 'DURSEJ', 9), +('S9', '6045', 'DURSEJ', 9), +('S9', '6046', 'DURSEJ', 9), +('S9', '6047', 'DURSEJ', 9), +('S9', '6048', 'DURSEJ', 9), +('S9', '6049', 'DURSEJ', 9), +('S9', '6050', 'DURSEJ', 9), +('S9', '6051', 'DURSEJ', 9), +('S9', '6052', 'DURSEJ', 9), +('S9', '6053', 'DURSEJ', 9), +('S9', '6054', 'DURSEJ', 9), +('S9', '6055', 'DURSEJ', 9), +('S9', '6056', 'DURSEJ', 9), +('S9', '6057', 'DURSEJ', 9), +('S9', '6058', 'DURSEJ', 9), +('S9', '6059', 'DURSEJ', 9), +('S9', '6060', 'DURSEJ', 9), +('S9', '6061', 'DURSEJ', 9), +('S9', '6062', 'DURSEJ', 9), +('S9', '6063', 'DURSEJ', 9), +('S9', '6064', 'DURSEJ', 9), +('S9', '6065', 'DURSEJ', 9), +('S9', '6066', 'DURSEJ', 9), +('S9', '6067', 'DURSEJ', 9), +('S9', '6068', 'DURSEJ', 9), +('S9', '6069', 'DURSEJ', 9), +('S9', '6070', 'DURSEJ', 9), +('S9', '6071', 'DURSEJ', 9), +('S9', '6072', 'DURSEJ', 9), +('S9', '6073', 'DURSEJ', 9), +('S9', '6074', 'DURSEJ', 9), +('S9', '6075', 'DURSEJ', 9), +('S9', '6076', 'DURSEJ', 9), +('S9', '6077', 'DURSEJ', 9), +('S9', '6078', 'DURSEJ', 9), +('S9', '6079', 'DURSEJ', 9), +('S9', '6080', 'DURSEJ', 9), +('S9', '6081', 'DURSEJ', 9), +('S9', '6082', 'DURSEJ', 9), +('S9', '6083', 'DURSEJ', 9), +('S9', '6084', 'DURSEJ', 9), +('S9', '6085', 'DURSEJ', 9), +('S9', '6086', 'DURSEJ', 9), +('S9', '6087', 'DURSEJ', 9), +('S9', '6088', 'DURSEJ', 9), +('S9', '6089', 'DURSEJ', 9), +('S9', '6090', 'DURSEJ', 9), +('S9', '6091', 'DURSEJ', 9), +('S9', '6092', 'DURSEJ', 9), +('S9', '6093', 'DURSEJ', 9), +('S9', '6094', 'DURSEJ', 9), +('S9', '6095', 'DURSEJ', 9), +('S9', '6096', 'DURSEJ', 9), +('S9', '6097', 'DURSEJ', 9), +('S9', '6098', 'DURSEJ', 9), +('S9', '6099', 'DURSEJ', 9), +('S9', '6100', 'DURSEJ', 9), +('S9', '6101', 'DURSEJ', 9), +('S9', '6102', 'DURSEJ', 9), +('S9', '6103', 'DURSEJ', 9), +('S9', '6104', 'DURSEJ', 9), +('S9', '6105', 'DURSEJ', 9), +('S9', '6106', 'DURSEJ', 9), +('S9', '6107', 'DURSEJ', 9), +('S9', '6108', 'DURSEJ', 9), +('S9', '6109', 'DURSEJ', 9), +('S9', '6110', 'DURSEJ', 9), +('S9', '6111', 'DURSEJ', 9), +('S9', '6112', 'DURSEJ', 9), +('S9', '6113', 'DURSEJ', 9), +('S9', '6114', 'DURSEJ', 9), +('S9', '6115', 'DURSEJ', 9), +('S9', '6116', 'DURSEJ', 9), +('S9', '6117', 'DURSEJ', 9), +('S9', '6118', 'DURSEJ', 9), +('S9', '6119', 'DURSEJ', 9), +('S9', '6120', 'DURSEJ', 9), +('S9', '6121', 'DURSEJ', 9), +('S9', '6122', 'DURSEJ', 9), +('S9', '6123', 'DURSEJ', 9), +('S9', '6124', 'DURSEJ', 9), +('S9', '6125', 'DURSEJ', 9), +('S9', '6126', 'DURSEJ', 9), +('S9', '6127', 'DURSEJ', 9), +('S9', '6128', 'DURSEJ', 9), +('S9', '6129', 'DURSEJ', 9), +('S9', '6130', 'DURSEJ', 9), +('S9', '6131', 'DURSEJ', 9), +('S9', '6132', 'DURSEJ', 9), +('S9', '6133', 'DURSEJ', 9), +('S9', '6134', 'DURSEJ', 9), +('S9', '6135', 'DURSEJ', 9), +('S9', '6136', 'DURSEJ', 9), +('S9', '6137', 'DURSEJ', 9), +('S9', '6138', 'DURSEJ', 9), +('S9', '6139', 'DURSEJ', 9), +('S9', '6140', 'DURSEJ', 9), +('S9', '6141', 'DURSEJ', 9), +('S9', '6142', 'DURSEJ', 9), +('S9', '6143', 'DURSEJ', 9), +('S9', '6144', 'DURSEJ', 9), +('S9', '6145', 'DURSEJ', 9), +('S9', '6146', 'DURSEJ', 9), +('S9', '6147', 'DURSEJ', 9), +('S9', '6148', 'DURSEJ', 9), +('S9', '6149', 'DURSEJ', 9), +('S9', '6150', 'DURSEJ', 9), +('S9', '6151', 'DURSEJ', 9), +('S9', '6152', 'DURSEJ', 9), +('S9', '6153', 'DURSEJ', 9), +('S9', '6154', 'DURSEJ', 9), +('S9', '6155', 'DURSEJ', 9), +('S9', '6156', 'DURSEJ', 9), +('S9', '6157', 'DURSEJ', 9), +('S9', '6158', 'DURSEJ', 9), +('S9', '6159', 'DURSEJ', 9), +('S9', '6160', 'DURSEJ', 9), +('S9', '6161', 'DURSEJ', 9), +('S9', '6162', 'DURSEJ', 9), +('S9', '6163', 'DURSEJ', 9), +('S9', '6164', 'DURSEJ', 9), +('S9', '6165', 'DURSEJ', 9), +('S9', '6166', 'DURSEJ', 9), +('S9', '6167', 'DURSEJ', 9), +('S9', '6168', 'DURSEJ', 9), +('S9', '6169', 'DURSEJ', 9), +('S9', '6170', 'DURSEJ', 9), +('S9', '6171', 'DURSEJ', 9), +('S9', '6172', 'DURSEJ', 9), +('S9', '6173', 'DURSEJ', 9), +('S9', '6174', 'DURSEJ', 9), +('S9', '6175', 'DURSEJ', 9), +('S9', '6176', 'DURSEJ', 9), +('S9', '6177', 'DURSEJ', 9), +('S9', '6178', 'DURSEJ', 9), +('S9', '6179', 'DURSEJ', 9), +('S9', '6180', 'DURSEJ', 9), +('S9', '6181', 'DURSEJ', 9), +('S9', '6182', 'DURSEJ', 9), +('S9', '6183', 'DURSEJ', 9), +('S9', '6184', 'DURSEJ', 9), +('S9', '6185', 'DURSEJ', 9), +('S9', '6186', 'DURSEJ', 9), +('S9', '6187', 'DURSEJ', 9), +('S9', '6188', 'DURSEJ', 9), +('S9', '6189', 'DURSEJ', 9), +('S9', '6190', 'DURSEJ', 9), +('S9', '6191', 'DURSEJ', 9), +('S9', '6192', 'DURSEJ', 9), +('S9', '6193', 'DURSEJ', 9), +('S9', '6194', 'DURSEJ', 9), +('S9', '6195', 'DURSEJ', 9), +('S9', '6196', 'DURSEJ', 9), +('S9', '6197', 'DURSEJ', 9), +('S9', '6198', 'DURSEJ', 9), +('S9', '6199', 'DURSEJ', 9), +('S9', '6200', 'DURSEJ', 9), +('S9', '6201', 'DURSEJ', 9), +('S9', '6202', 'DURSEJ', 9), +('S9', '6203', 'DURSEJ', 9), +('S9', '6204', 'DURSEJ', 9), +('S9', '6205', 'DURSEJ', 9), +('S9', '6206', 'DURSEJ', 9), +('S9', '6207', 'DURSEJ', 9), +('S9', '6208', 'DURSEJ', 9), +('S9', '6209', 'DURSEJ', 9), +('S9', '6210', 'DURSEJ', 9), +('S9', '6211', 'DURSEJ', 9), +('S9', '6212', 'DURSEJ', 9), +('S9', '6213', 'DURSEJ', 9), +('S9', '6214', 'DURSEJ', 9), +('S9', '6215', 'DURSEJ', 9), +('S9', '6216', 'DURSEJ', 9), +('S9', '6217', 'DURSEJ', 9), +('S9', '6218', 'DURSEJ', 9), +('S9', '6219', 'DURSEJ', 9), +('S9', '6220', 'DURSEJ', 9), +('S9', '6221', 'DURSEJ', 9), +('S9', '6222', 'DURSEJ', 9), +('S9', '6223', 'DURSEJ', 9), +('S9', '6224', 'DURSEJ', 9), +('S9', '6225', 'DURSEJ', 9), +('S9', '6226', 'DURSEJ', 9), +('S9', '6227', 'DURSEJ', 9), +('S9', '6228', 'DURSEJ', 9), +('S9', '6229', 'DURSEJ', 9), +('S9', '6230', 'DURSEJ', 9), +('S9', '6231', 'DURSEJ', 9), +('S9', '6232', 'DURSEJ', 9), +('S9', '6233', 'DURSEJ', 9), +('S9', '6234', 'DURSEJ', 9), +('S9', '6235', 'DURSEJ', 9), +('S9', '6236', 'DURSEJ', 9), +('S9', '6237', 'DURSEJ', 9), +('S9', '6238', 'DURSEJ', 9), +('S9', '6239', 'DURSEJ', 9), +('S9', '6240', 'DURSEJ', 9), +('S9', '6241', 'DURSEJ', 9), +('S9', '6242', 'DURSEJ', 9), +('S9', '6243', 'DURSEJ', 9), +('S9', '6244', 'DURSEJ', 9), +('S9', '6245', 'DURSEJ', 9), +('S9', '6246', 'DURSEJ', 9), +('S9', '6247', 'DURSEJ', 9), +('S9', '6248', 'DURSEJ', 9), +('S9', '6249', 'DURSEJ', 9), +('S9', '6250', 'DURSEJ', 9), +('S9', '6251', 'DURSEJ', 9), +('S9', '6252', 'DURSEJ', 9), +('S9', '6253', 'DURSEJ', 9), +('S9', '6254', 'DURSEJ', 9), +('S9', '6255', 'DURSEJ', 9), +('S9', '6256', 'DURSEJ', 9), +('S9', '6257', 'DURSEJ', 9), +('S9', '6258', 'DURSEJ', 9), +('S9', '6259', 'DURSEJ', 9), +('S9', '6260', 'DURSEJ', 9), +('S9', '6261', 'DURSEJ', 9), +('S9', '6262', 'DURSEJ', 9), +('S9', '6263', 'DURSEJ', 9), +('S9', '6264', 'DURSEJ', 9), +('S9', '6265', 'DURSEJ', 9), +('S9', '6266', 'DURSEJ', 9), +('S9', '6267', 'DURSEJ', 9), +('S9', '6268', 'DURSEJ', 9), +('S9', '6269', 'DURSEJ', 9), +('S9', '6270', 'DURSEJ', 9), +('S9', '6271', 'DURSEJ', 9), +('S9', '6272', 'DURSEJ', 9), +('S9', '6273', 'DURSEJ', 9), +('S9', '6274', 'DURSEJ', 9), +('S9', '6275', 'DURSEJ', 9), +('S9', '6276', 'DURSEJ', 9), +('S9', '6277', 'DURSEJ', 9), +('S9', '6278', 'DURSEJ', 9), +('S9', '6279', 'DURSEJ', 9), +('S9', '6280', 'DURSEJ', 9), +('S9', '6281', 'DURSEJ', 9), +('S9', '6282', 'DURSEJ', 9), +('S9', '6283', 'DURSEJ', 9), +('S9', '6284', 'DURSEJ', 9), +('S9', '6285', 'DURSEJ', 9), +('S9', '6286', 'DURSEJ', 9), +('S9', '6287', 'DURSEJ', 9), +('S9', '6288', 'DURSEJ', 9), +('S9', '6289', 'DURSEJ', 9), +('S9', '6290', 'DURSEJ', 9), +('S9', '6291', 'DURSEJ', 9), +('S9', '6292', 'DURSEJ', 9), +('S9', '6293', 'DURSEJ', 9), +('S9', '6294', 'DURSEJ', 9), +('S9', '6295', 'DURSEJ', 9), +('S9', '6296', 'DURSEJ', 9), +('S9', '6297', 'DURSEJ', 9), +('S9', '6298', 'DURSEJ', 9), +('S9', '6299', 'DURSEJ', 9), +('S9', '6300', 'DURSEJ', 9), +('S9', '6301', 'DURSEJ', 9), +('S9', '6302', 'DURSEJ', 9), +('S9', '6303', 'DURSEJ', 9), +('S9', '6304', 'DURSEJ', 9), +('S9', '6305', 'DURSEJ', 9), +('S9', '6306', 'DURSEJ', 9), +('S9', '6307', 'DURSEJ', 9), +('S9', '6308', 'DURSEJ', 9), +('S9', '6309', 'DURSEJ', 9), +('S9', '6310', 'DURSEJ', 9), +('S9', '6311', 'DURSEJ', 9), +('S9', '6312', 'DURSEJ', 9), +('S9', '6313', 'DURSEJ', 9), +('S9', '6314', 'DURSEJ', 9), +('S9', '6315', 'DURSEJ', 9), +('S9', '6316', 'DURSEJ', 9), +('S9', '6317', 'DURSEJ', 9), +('S9', '6318', 'DURSEJ', 9), +('S9', '6319', 'DURSEJ', 9), +('S9', '6320', 'DURSEJ', 9), +('S9', '6321', 'DURSEJ', 9), +('S9', '6322', 'DURSEJ', 9), +('S9', '6323', 'DURSEJ', 9), +('S9', '6324', 'DURSEJ', 9), +('S9', '6325', 'DURSEJ', 9), +('S9', '6326', 'DURSEJ', 9), +('S9', '6327', 'DURSEJ', 9), +('S9', '6328', 'DURSEJ', 9), +('S9', '6329', 'DURSEJ', 9), +('S9', '6330', 'DURSEJ', 9), +('S9', '6331', 'DURSEJ', 9), +('S9', '6332', 'DURSEJ', 9), +('S9', '6333', 'DURSEJ', 9), +('S9', '6334', 'DURSEJ', 9), +('S9', '6335', 'DURSEJ', 9), +('S9', '6336', 'DURSEJ', 9), +('S9', '6337', 'DURSEJ', 9), +('S9', '6338', 'DURSEJ', 9), +('S9', '6339', 'DURSEJ', 9), +('S9', '6340', 'DURSEJ', 9), +('S9', '6341', 'DURSEJ', 9), +('S9', '6342', 'DURSEJ', 9), +('S9', '6343', 'DURSEJ', 9), +('S9', '6344', 'DURSEJ', 9), +('S9', '6345', 'DURSEJ', 9), +('S9', '6346', 'DURSEJ', 9), +('S9', '6347', 'DURSEJ', 9), +('S9', '6348', 'DURSEJ', 9), +('S9', '6349', 'DURSEJ', 9), +('S9', '6350', 'DURSEJ', 9), +('S9', '6351', 'DURSEJ', 9), +('S9', '6352', 'DURSEJ', 9), +('S9', '6353', 'DURSEJ', 9), +('S9', '6354', 'DURSEJ', 9), +('S9', '6355', 'DURSEJ', 9), +('S9', '6356', 'DURSEJ', 9), +('S9', '6357', 'DURSEJ', 9), +('S9', '6358', 'DURSEJ', 9), +('S9', '6359', 'DURSEJ', 9), +('S9', '6360', 'DURSEJ', 9), +('S9', '6361', 'DURSEJ', 9), +('S9', '6362', 'DURSEJ', 9), +('S9', '6363', 'DURSEJ', 9), +('S9', '6364', 'DURSEJ', 9), +('S9', '6365', 'DURSEJ', 9), +('S9', '6366', 'DURSEJ', 9), +('S9', '6367', 'DURSEJ', 9), +('S9', '6368', 'DURSEJ', 9), +('S9', '6369', 'DURSEJ', 9), +('S9', '6370', 'DURSEJ', 9), +('S9', '6371', 'DURSEJ', 9), +('S9', '6372', 'DURSEJ', 9), +('S9', '6373', 'DURSEJ', 9), +('S9', '6374', 'DURSEJ', 9), +('S9', '6375', 'DURSEJ', 9), +('S9', '6376', 'DURSEJ', 9), +('S9', '6377', 'DURSEJ', 9), +('S9', '6378', 'DURSEJ', 9), +('S9', '6379', 'DURSEJ', 9), +('S9', '6380', 'DURSEJ', 9), +('S9', '6381', 'DURSEJ', 9), +('S9', '6382', 'DURSEJ', 9), +('S9', '6383', 'DURSEJ', 9), +('S9', '6384', 'DURSEJ', 9), +('S9', '6385', 'DURSEJ', 9), +('S9', '6386', 'DURSEJ', 9), +('S9', '6387', 'DURSEJ', 9), +('S9', '6388', 'DURSEJ', 9), +('S9', '6389', 'DURSEJ', 9), +('S9', '6390', 'DURSEJ', 9), +('S9', '6391', 'DURSEJ', 9), +('S9', '6392', 'DURSEJ', 9), +('S9', '6393', 'DURSEJ', 9), +('S9', '6394', 'DURSEJ', 9), +('S9', '6395', 'DURSEJ', 9), +('S9', '6396', 'DURSEJ', 9), +('S9', '6397', 'DURSEJ', 9), +('S9', '6398', 'DURSEJ', 9), +('S9', '6399', 'DURSEJ', 9), +('S9', '6400', 'DURSEJ', 9), +('S9', '6401', 'DURSEJ', 9), +('S9', '6402', 'DURSEJ', 9), +('S9', '6403', 'DURSEJ', 9), +('S9', '6404', 'DURSEJ', 9), +('S9', '6405', 'DURSEJ', 9), +('S9', '6406', 'DURSEJ', 9), +('S9', '6407', 'DURSEJ', 9), +('S9', '6408', 'DURSEJ', 9), +('S9', '6409', 'DURSEJ', 9), +('S9', '6410', 'DURSEJ', 9), +('S9', '6411', 'DURSEJ', 9), +('S9', '6412', 'DURSEJ', 9), +('S9', '6413', 'DURSEJ', 9), +('S9', '6414', 'DURSEJ', 9), +('S9', '6415', 'DURSEJ', 9), +('S9', '6416', 'DURSEJ', 9), +('S9', '6417', 'DURSEJ', 9), +('S9', '6418', 'DURSEJ', 9), +('S9', '6419', 'DURSEJ', 9), +('S9', '6420', 'DURSEJ', 9), +('S9', '6421', 'DURSEJ', 9), +('S9', '6422', 'DURSEJ', 9), +('S9', '6423', 'DURSEJ', 9), +('S9', '6424', 'DURSEJ', 9), +('S9', '6425', 'DURSEJ', 9), +('S9', '6426', 'DURSEJ', 9), +('S9', '6427', 'DURSEJ', 9), +('S9', '6428', 'DURSEJ', 9), +('S9', '6429', 'DURSEJ', 9), +('S9', '6430', 'DURSEJ', 9), +('S9', '6431', 'DURSEJ', 9), +('S9', '6432', 'DURSEJ', 9), +('S9', '6433', 'DURSEJ', 9), +('S9', '6434', 'DURSEJ', 9), +('S9', '6435', 'DURSEJ', 9), +('S9', '6436', 'DURSEJ', 9), +('S9', '6437', 'DURSEJ', 9), +('S9', '6438', 'DURSEJ', 9), +('S9', '6439', 'DURSEJ', 9), +('S9', '6440', 'DURSEJ', 9), +('S9', '6441', 'DURSEJ', 9), +('S9', '6442', 'DURSEJ', 9), +('S9', '6443', 'DURSEJ', 9), +('S9', '6444', 'DURSEJ', 9), +('S9', '6445', 'DURSEJ', 9), +('S9', '6446', 'DURSEJ', 9), +('S9', '6447', 'DURSEJ', 9), +('S9', '6448', 'DURSEJ', 9), +('S9', '6449', 'DURSEJ', 9), +('S9', '6450', 'DURSEJ', 9), +('S9', '6451', 'DURSEJ', 9), +('S9', '6452', 'DURSEJ', 9), +('S9', '6453', 'DURSEJ', 9), +('S9', '6454', 'DURSEJ', 9), +('S9', '6455', 'DURSEJ', 9), +('S9', '6456', 'DURSEJ', 9), +('S9', '6457', 'DURSEJ', 9), +('S9', '6458', 'DURSEJ', 9), +('S9', '6459', 'DURSEJ', 9), +('S9', '6460', 'DURSEJ', 9), +('S9', '6461', 'DURSEJ', 9), +('S9', '6462', 'DURSEJ', 9), +('S9', '6463', 'DURSEJ', 9), +('S9', '6464', 'DURSEJ', 9), +('S9', '6465', 'DURSEJ', 9), +('S9', '6466', 'DURSEJ', 9), +('S9', '6467', 'DURSEJ', 9), +('S9', '6468', 'DURSEJ', 9), +('S9', '6469', 'DURSEJ', 9), +('S9', '6470', 'DURSEJ', 9), +('S9', '6471', 'DURSEJ', 9), +('S9', '6472', 'DURSEJ', 9), +('S9', '6473', 'DURSEJ', 9), +('S9', '6474', 'DURSEJ', 9), +('S9', '6475', 'DURSEJ', 9), +('S9', '6476', 'DURSEJ', 9), +('S9', '6477', 'DURSEJ', 9), +('S9', '6478', 'DURSEJ', 9), +('S9', '6479', 'DURSEJ', 9), +('S9', '6480', 'DURSEJ', 9), +('S9', '6481', 'DURSEJ', 9), +('S9', '6482', 'DURSEJ', 9), +('S9', '6483', 'DURSEJ', 9), +('S9', '6484', 'DURSEJ', 9), +('S9', '6485', 'DURSEJ', 9), +('S9', '6486', 'DURSEJ', 9), +('S9', '6487', 'DURSEJ', 9), +('S9', '6488', 'DURSEJ', 9), +('S9', '6489', 'DURSEJ', 9), +('S9', '6490', 'DURSEJ', 9), +('S9', '6491', 'DURSEJ', 9), +('S9', '6492', 'DURSEJ', 9), +('S9', '6493', 'DURSEJ', 9), +('S9', '6494', 'DURSEJ', 9), +('S9', '6495', 'DURSEJ', 9), +('S9', '6496', 'DURSEJ', 9), +('S9', '6497', 'DURSEJ', 9), +('S9', '6498', 'DURSEJ', 9), +('S9', '6499', 'DURSEJ', 9), +('S9', '6500', 'DURSEJ', 9), +('S9', '6501', 'DURSEJ', 9), +('S9', '6502', 'DURSEJ', 9), +('S9', '6503', 'DURSEJ', 9), +('S9', '6504', 'DURSEJ', 9), +('S9', '6505', 'DURSEJ', 9), +('S9', '6506', 'DURSEJ', 9), +('S9', '6507', 'DURSEJ', 9), +('S9', '6508', 'DURSEJ', 9), +('S9', '6509', 'DURSEJ', 9), +('S9', '6510', 'DURSEJ', 9), +('S9', '6511', 'DURSEJ', 9), +('S9', '6512', 'DURSEJ', 9), +('S9', '6513', 'DURSEJ', 9), +('S9', '6514', 'DURSEJ', 9), +('S9', '6515', 'DURSEJ', 9), +('S9', '6516', 'DURSEJ', 9), +('S9', '6517', 'DURSEJ', 9), +('S9', '6518', 'DURSEJ', 9), +('S9', '6519', 'DURSEJ', 9), +('S9', '6520', 'DURSEJ', 9), +('S9', '6521', 'DURSEJ', 9), +('S9', '6522', 'DURSEJ', 9), +('S9', '6523', 'DURSEJ', 9), +('S9', '6524', 'DURSEJ', 9), +('S9', '6525', 'DURSEJ', 9), +('S9', '6526', 'DURSEJ', 9), +('S9', '6527', 'DURSEJ', 9), +('S9', '6528', 'DURSEJ', 9), +('S9', '6529', 'DURSEJ', 9), +('S9', '6530', 'DURSEJ', 9), +('S9', '6531', 'DURSEJ', 9), +('S9', '6532', 'DURSEJ', 9), +('S9', '6533', 'DURSEJ', 9), +('S9', '6534', 'DURSEJ', 9), +('S9', '6535', 'DURSEJ', 9), +('S9', '6536', 'DURSEJ', 9), +('S9', '6537', 'DURSEJ', 9), +('S9', '6538', 'DURSEJ', 9), +('S9', '6539', 'DURSEJ', 9), +('S9', '6540', 'DURSEJ', 9), +('S9', '6541', 'DURSEJ', 9), +('S9', '6542', 'DURSEJ', 9), +('S9', '6543', 'DURSEJ', 9), +('S9', '6544', 'DURSEJ', 9), +('S9', '6545', 'DURSEJ', 9), +('S9', '6546', 'DURSEJ', 9), +('S9', '6547', 'DURSEJ', 9), +('S9', '6548', 'DURSEJ', 9), +('S9', '6549', 'DURSEJ', 9), +('S9', '6550', 'DURSEJ', 9), +('S9', '6551', 'DURSEJ', 9), +('S9', '6552', 'DURSEJ', 9), +('S9', '6553', 'DURSEJ', 9), +('S9', '6554', 'DURSEJ', 9), +('S9', '6555', 'DURSEJ', 9), +('S9', '6556', 'DURSEJ', 9), +('S9', '6557', 'DURSEJ', 9), +('S9', '6558', 'DURSEJ', 9), +('S9', '6559', 'DURSEJ', 9), +('S9', '6560', 'DURSEJ', 9), +('S9', '6561', 'DURSEJ', 9), +('S9', '6562', 'DURSEJ', 9), +('S9', '6563', 'DURSEJ', 9), +('S9', '6564', 'DURSEJ', 9), +('S9', '6565', 'DURSEJ', 9), +('S9', '6566', 'DURSEJ', 9), +('S9', '6567', 'DURSEJ', 9), +('S9', '6568', 'DURSEJ', 9), +('S9', '6569', 'DURSEJ', 9), +('S9', '6570', 'DURSEJ', 9), +('S9', '6571', 'DURSEJ', 9), +('S9', '6572', 'DURSEJ', 9), +('S9', '6573', 'DURSEJ', 9), +('S9', '6574', 'DURSEJ', 9), +('S9', '6575', 'DURSEJ', 9), +('S9', '6576', 'DURSEJ', 9), +('S9', '6577', 'DURSEJ', 9), +('S9', '6578', 'DURSEJ', 9), +('S9', '6579', 'DURSEJ', 9), +('S9', '6580', 'DURSEJ', 9), +('S9', '6581', 'DURSEJ', 9), +('S9', '6582', 'DURSEJ', 9), +('S9', '6583', 'DURSEJ', 9), +('S9', '6584', 'DURSEJ', 9), +('S9', '6585', 'DURSEJ', 9), +('S9', '6586', 'DURSEJ', 9), +('S9', '6587', 'DURSEJ', 9), +('S9', '6588', 'DURSEJ', 9), +('S9', '6589', 'DURSEJ', 9), +('S9', '6590', 'DURSEJ', 9), +('S9', '6591', 'DURSEJ', 9), +('S9', '6592', 'DURSEJ', 9), +('S9', '6593', 'DURSEJ', 9), +('S9', '6594', 'DURSEJ', 9), +('S9', '6595', 'DURSEJ', 9), +('S9', '6596', 'DURSEJ', 9), +('S9', '6597', 'DURSEJ', 9), +('S9', '6598', 'DURSEJ', 9), +('S9', '6599', 'DURSEJ', 9), +('S9', '6600', 'DURSEJ', 9), +('S9', '6601', 'DURSEJ', 9), +('S9', '6602', 'DURSEJ', 9), +('S9', '6603', 'DURSEJ', 9), +('S9', '6604', 'DURSEJ', 9), +('S9', '6605', 'DURSEJ', 9), +('S9', '6606', 'DURSEJ', 9), +('S9', '6607', 'DURSEJ', 9), +('S9', '6608', 'DURSEJ', 9), +('S9', '6609', 'DURSEJ', 9), +('S9', '6610', 'DURSEJ', 9), +('S9', '6611', 'DURSEJ', 9), +('S9', '6612', 'DURSEJ', 9), +('S9', '6613', 'DURSEJ', 9), +('S9', '6614', 'DURSEJ', 9), +('S9', '6615', 'DURSEJ', 9), +('S9', '6616', 'DURSEJ', 9), +('S9', '6617', 'DURSEJ', 9), +('S9', '6618', 'DURSEJ', 9), +('S9', '6619', 'DURSEJ', 9), +('S9', '6620', 'DURSEJ', 9), +('S9', '6621', 'DURSEJ', 9), +('S9', '6622', 'DURSEJ', 9), +('S9', '6623', 'DURSEJ', 9), +('S9', '6624', 'DURSEJ', 9), +('S9', '6625', 'DURSEJ', 9), +('S9', '6626', 'DURSEJ', 9), +('S9', '6627', 'DURSEJ', 9), +('S9', '6628', 'DURSEJ', 9), +('S9', '6629', 'DURSEJ', 9), +('S9', '6630', 'DURSEJ', 9), +('S9', '6631', 'DURSEJ', 9), +('S9', '6632', 'DURSEJ', 9), +('S9', '6633', 'DURSEJ', 9), +('S9', '6634', 'DURSEJ', 9), +('S9', '6635', 'DURSEJ', 9), +('S9', '6636', 'DURSEJ', 9), +('S9', '6637', 'DURSEJ', 9), +('S9', '6638', 'DURSEJ', 9), +('S9', '6639', 'DURSEJ', 9), +('S9', '6640', 'DURSEJ', 9), +('S9', '6641', 'DURSEJ', 9), +('S9', '6642', 'DURSEJ', 9), +('S9', '6643', 'DURSEJ', 9), +('S9', '6644', 'DURSEJ', 9), +('S9', '6645', 'DURSEJ', 9), +('S9', '6646', 'DURSEJ', 9), +('S9', '6647', 'DURSEJ', 9), +('S9', '6648', 'DURSEJ', 9), +('S9', '6649', 'DURSEJ', 9), +('S9', '6650', 'DURSEJ', 9), +('S9', '6651', 'DURSEJ', 9), +('S9', '6652', 'DURSEJ', 9), +('S9', '6653', 'DURSEJ', 9), +('S9', '6654', 'DURSEJ', 9), +('S9', '6655', 'DURSEJ', 9), +('S9', '6656', 'DURSEJ', 9), +('S9', '6657', 'DURSEJ', 9), +('S9', '6658', 'DURSEJ', 9), +('S9', '6659', 'DURSEJ', 9), +('S9', '6660', 'DURSEJ', 9), +('S9', '6661', 'DURSEJ', 9), +('S9', '6662', 'DURSEJ', 9), +('S9', '6663', 'DURSEJ', 9), +('S9', '6664', 'DURSEJ', 9), +('S9', '6665', 'DURSEJ', 9), +('S9', '6666', 'DURSEJ', 9), +('S9', '6667', 'DURSEJ', 9), +('S9', '6668', 'DURSEJ', 9), +('S9', '6669', 'DURSEJ', 9), +('S9', '6670', 'DURSEJ', 9), +('S9', '6671', 'DURSEJ', 9), +('S9', '6672', 'DURSEJ', 9), +('S9', '6673', 'DURSEJ', 9), +('S9', '6674', 'DURSEJ', 9), +('S9', '6675', 'DURSEJ', 9), +('S9', '6676', 'DURSEJ', 9), +('S9', '6677', 'DURSEJ', 9), +('S9', '6678', 'DURSEJ', 9), +('S9', '6679', 'DURSEJ', 9), +('S9', '6680', 'DURSEJ', 9), +('S9', '6681', 'DURSEJ', 9), +('S9', '6682', 'DURSEJ', 9), +('S9', '6683', 'DURSEJ', 9), +('S9', '6684', 'DURSEJ', 9), +('S9', '6685', 'DURSEJ', 9), +('S9', '6686', 'DURSEJ', 9), +('S9', '6687', 'DURSEJ', 9), +('S9', '6688', 'DURSEJ', 9), +('S9', '6689', 'DURSEJ', 9), +('S9', '6690', 'DURSEJ', 9), +('S9', '6691', 'DURSEJ', 9), +('S9', '6692', 'DURSEJ', 9), +('S9', '6693', 'DURSEJ', 9), +('S9', '6694', 'DURSEJ', 9), +('S9', '6695', 'DURSEJ', 9), +('S9', '6696', 'DURSEJ', 9), +('S9', '6697', 'DURSEJ', 9), +('S9', '6698', 'DURSEJ', 9), +('S9', '6699', 'DURSEJ', 9), +('S9', '6700', 'DURSEJ', 9), +('S9', '6701', 'DURSEJ', 9), +('S9', '6702', 'DURSEJ', 9), +('S9', '6703', 'DURSEJ', 9), +('S9', '6704', 'DURSEJ', 9), +('S9', '6705', 'DURSEJ', 9), +('S9', '6706', 'DURSEJ', 9), +('S9', '6707', 'DURSEJ', 9), +('S9', '6708', 'DURSEJ', 9), +('S9', '6709', 'DURSEJ', 9), +('S9', '6710', 'DURSEJ', 9), +('S9', '6711', 'DURSEJ', 9), +('S9', '6712', 'DURSEJ', 9), +('S9', '6713', 'DURSEJ', 9), +('S9', '6714', 'DURSEJ', 9), +('S9', '6715', 'DURSEJ', 9), +('S9', '6716', 'DURSEJ', 9), +('S9', '6717', 'DURSEJ', 9), +('S9', '6718', 'DURSEJ', 9), +('S9', '6719', 'DURSEJ', 9), +('S9', '6720', 'DURSEJ', 9), +('S9', '6721', 'DURSEJ', 9), +('S9', '6722', 'DURSEJ', 9), +('S9', '6723', 'DURSEJ', 9), +('S9', '6724', 'DURSEJ', 9), +('S9', '6725', 'DURSEJ', 9), +('S9', '6726', 'DURSEJ', 9), +('S9', '6727', 'DURSEJ', 9), +('S9', '6728', 'DURSEJ', 9), +('S9', '6729', 'DURSEJ', 9), +('S9', '6730', 'DURSEJ', 9), +('S9', '6731', 'DURSEJ', 9), +('S9', '6732', 'DURSEJ', 9), +('S9', '6733', 'DURSEJ', 9), +('S9', '6734', 'DURSEJ', 9), +('S9', '6735', 'DURSEJ', 9), +('S9', '6736', 'DURSEJ', 9), +('S9', '6737', 'DURSEJ', 9), +('S9', '6738', 'DURSEJ', 9), +('S9', '6739', 'DURSEJ', 9), +('S9', '6740', 'DURSEJ', 9), +('S9', '6741', 'DURSEJ', 9), +('S9', '6742', 'DURSEJ', 9), +('S9', '6743', 'DURSEJ', 9), +('S9', '6744', 'DURSEJ', 9), +('S9', '6745', 'DURSEJ', 9), +('S9', '6746', 'DURSEJ', 9), +('S9', '6747', 'DURSEJ', 9), +('S9', '6748', 'DURSEJ', 9), +('S9', '6749', 'DURSEJ', 9), +('S9', '6750', 'DURSEJ', 9), +('S9', '6751', 'DURSEJ', 9), +('S9', '6752', 'DURSEJ', 9), +('S9', '6753', 'DURSEJ', 9), +('S9', '6754', 'DURSEJ', 9), +('S9', '6755', 'DURSEJ', 9), +('S9', '6756', 'DURSEJ', 9), +('S9', '6757', 'DURSEJ', 9), +('S9', '6758', 'DURSEJ', 9), +('S9', '6759', 'DURSEJ', 9), +('S9', '6760', 'DURSEJ', 9), +('S9', '6761', 'DURSEJ', 9), +('S9', '6762', 'DURSEJ', 9), +('S9', '6763', 'DURSEJ', 9), +('S9', '6764', 'DURSEJ', 9), +('S9', '6765', 'DURSEJ', 9), +('S9', '6766', 'DURSEJ', 9), +('S9', '6767', 'DURSEJ', 9), +('S9', '6768', 'DURSEJ', 9), +('S9', '6769', 'DURSEJ', 9), +('S9', '6770', 'DURSEJ', 9), +('S9', '6771', 'DURSEJ', 9), +('S9', '6772', 'DURSEJ', 9), +('S9', '6773', 'DURSEJ', 9), +('S9', '6774', 'DURSEJ', 9), +('S9', '6775', 'DURSEJ', 9), +('S9', '6776', 'DURSEJ', 9), +('S9', '6777', 'DURSEJ', 9), +('S9', '6778', 'DURSEJ', 9), +('S9', '6779', 'DURSEJ', 9), +('S9', '6780', 'DURSEJ', 9), +('S9', '6781', 'DURSEJ', 9), +('S9', '6782', 'DURSEJ', 9), +('S9', '6783', 'DURSEJ', 9), +('S9', '6784', 'DURSEJ', 9), +('S9', '6785', 'DURSEJ', 9), +('S9', '6786', 'DURSEJ', 9), +('S9', '6787', 'DURSEJ', 9), +('S9', '6788', 'DURSEJ', 9), +('S9', '6789', 'DURSEJ', 9), +('S9', '6790', 'DURSEJ', 9), +('S9', '6791', 'DURSEJ', 9), +('S9', '6792', 'DURSEJ', 9), +('S9', '6793', 'DURSEJ', 9), +('S9', '6794', 'DURSEJ', 9), +('S9', '6795', 'DURSEJ', 9), +('S9', '6796', 'DURSEJ', 9), +('S9', '6797', 'DURSEJ', 9), +('S9', '6798', 'DURSEJ', 9), +('S9', '6799', 'DURSEJ', 9), +('S9', '6800', 'DURSEJ', 9), +('S9', '6801', 'DURSEJ', 9), +('S9', '6802', 'DURSEJ', 9), +('S9', '6803', 'DURSEJ', 9), +('S9', '6804', 'DURSEJ', 9), +('S9', '6805', 'DURSEJ', 9), +('S9', '6806', 'DURSEJ', 9), +('S9', '6807', 'DURSEJ', 9), +('S9', '6808', 'DURSEJ', 9), +('S9', '6809', 'DURSEJ', 9), +('S9', '6810', 'DURSEJ', 9), +('S9', '6811', 'DURSEJ', 9), +('S9', '6812', 'DURSEJ', 9), +('S9', '6813', 'DURSEJ', 9), +('S9', '6814', 'DURSEJ', 9), +('S9', '6815', 'DURSEJ', 9), +('S9', '6816', 'DURSEJ', 9), +('S9', '6817', 'DURSEJ', 9), +('S9', '6818', 'DURSEJ', 9), +('S9', '6819', 'DURSEJ', 9), +('S9', '6820', 'DURSEJ', 9), +('S9', '6821', 'DURSEJ', 9), +('S9', '6822', 'DURSEJ', 9), +('S9', '6823', 'DURSEJ', 9), +('S9', '6824', 'DURSEJ', 9), +('S9', '6825', 'DURSEJ', 9), +('S9', '6826', 'DURSEJ', 9), +('S9', '6827', 'DURSEJ', 9), +('S9', '6828', 'DURSEJ', 9), +('S9', '6829', 'DURSEJ', 9), +('S9', '6830', 'DURSEJ', 9), +('S9', '6831', 'DURSEJ', 9), +('S9', '6832', 'DURSEJ', 9), +('S9', '6833', 'DURSEJ', 9), +('S9', '6834', 'DURSEJ', 9), +('S9', '6835', 'DURSEJ', 9), +('S9', '6836', 'DURSEJ', 9), +('S9', '6837', 'DURSEJ', 9), +('S9', '6838', 'DURSEJ', 9), +('S9', '6839', 'DURSEJ', 9), +('S9', '6840', 'DURSEJ', 9), +('S9', '6841', 'DURSEJ', 9), +('S9', '6842', 'DURSEJ', 9), +('S9', '6843', 'DURSEJ', 9), +('S9', '6844', 'DURSEJ', 9), +('S9', '6845', 'DURSEJ', 9), +('S9', '6846', 'DURSEJ', 9), +('S9', '6847', 'DURSEJ', 9), +('S9', '6848', 'DURSEJ', 9), +('S9', '6849', 'DURSEJ', 9), +('S9', '6850', 'DURSEJ', 9), +('S9', '6851', 'DURSEJ', 9), +('S9', '6852', 'DURSEJ', 9), +('S9', '6853', 'DURSEJ', 9), +('S9', '6854', 'DURSEJ', 9), +('S9', '6855', 'DURSEJ', 9), +('S9', '6856', 'DURSEJ', 9), +('S9', '6857', 'DURSEJ', 9), +('S9', '6858', 'DURSEJ', 9), +('S9', '6859', 'DURSEJ', 9), +('S9', '6860', 'DURSEJ', 9), +('S9', '6861', 'DURSEJ', 9), +('S9', '6862', 'DURSEJ', 9), +('S9', '6863', 'DURSEJ', 9), +('S9', '6864', 'DURSEJ', 9), +('S9', '6865', 'DURSEJ', 9), +('S9', '6866', 'DURSEJ', 9), +('S9', '6867', 'DURSEJ', 9), +('S9', '6868', 'DURSEJ', 9), +('S9', '6869', 'DURSEJ', 9), +('S9', '6870', 'DURSEJ', 9), +('S9', '6871', 'DURSEJ', 9), +('S9', '6872', 'DURSEJ', 9), +('S9', '6873', 'DURSEJ', 9), +('S9', '6874', 'DURSEJ', 9), +('S9', '6875', 'DURSEJ', 9), +('S9', '6876', 'DURSEJ', 9), +('S9', '6877', 'DURSEJ', 9), +('S9', '6878', 'DURSEJ', 9), +('S9', '6879', 'DURSEJ', 9), +('S9', '6880', 'DURSEJ', 9), +('S9', '6881', 'DURSEJ', 9), +('S9', '6882', 'DURSEJ', 9), +('S9', '6883', 'DURSEJ', 9), +('S9', '6884', 'DURSEJ', 9), +('S9', '6885', 'DURSEJ', 9), +('S9', '6886', 'DURSEJ', 9), +('S9', '6887', 'DURSEJ', 9), +('S9', '6888', 'DURSEJ', 9), +('S9', '6889', 'DURSEJ', 9), +('S9', '6890', 'DURSEJ', 9), +('S9', '6891', 'DURSEJ', 9), +('S9', '6892', 'DURSEJ', 9), +('S9', '6893', 'DURSEJ', 9), +('S9', '6894', 'DURSEJ', 9), +('S9', '6895', 'DURSEJ', 9), +('S9', '6896', 'DURSEJ', 9), +('S9', '6897', 'DURSEJ', 9), +('S9', '6898', 'DURSEJ', 9), +('S9', '6899', 'DURSEJ', 9), +('S9', '6900', 'DURSEJ', 9), +('S9', '6901', 'DURSEJ', 9), +('S9', '6902', 'DURSEJ', 9), +('S9', '6903', 'DURSEJ', 9), +('S9', '6904', 'DURSEJ', 9), +('S9', '6905', 'DURSEJ', 9), +('S9', '6906', 'DURSEJ', 9), +('S9', '6907', 'DURSEJ', 9), +('S9', '6908', 'DURSEJ', 9), +('S9', '6909', 'DURSEJ', 9), +('S9', '6910', 'DURSEJ', 9), +('S9', '6911', 'DURSEJ', 9), +('S9', '6912', 'DURSEJ', 9), +('S9', '6913', 'DURSEJ', 9), +('S9', '6914', 'DURSEJ', 9), +('S9', '6915', 'DURSEJ', 9), +('S9', '6916', 'DURSEJ', 9), +('S9', '6917', 'DURSEJ', 9), +('S9', '6918', 'DURSEJ', 9), +('S9', '6919', 'DURSEJ', 9), +('S9', '6920', 'DURSEJ', 9), +('S9', '6921', 'DURSEJ', 9), +('S9', '6922', 'DURSEJ', 9), +('S9', '6923', 'DURSEJ', 9), +('S9', '6924', 'DURSEJ', 9), +('S9', '6925', 'DURSEJ', 9), +('S9', '6926', 'DURSEJ', 9), +('S9', '6927', 'DURSEJ', 9), +('S9', '6928', 'DURSEJ', 9), +('S9', '6929', 'DURSEJ', 9), +('S9', '6930', 'DURSEJ', 9), +('S9', '6931', 'DURSEJ', 9), +('S9', '6932', 'DURSEJ', 9), +('S9', '6933', 'DURSEJ', 9), +('S9', '6934', 'DURSEJ', 9), +('S9', '6935', 'DURSEJ', 9), +('S9', '6936', 'DURSEJ', 9), +('S9', '6937', 'DURSEJ', 9), +('S9', '6938', 'DURSEJ', 9), +('S9', '6939', 'DURSEJ', 9), +('S9', '6940', 'DURSEJ', 9), +('S9', '6941', 'DURSEJ', 9), +('S9', '6942', 'DURSEJ', 9), +('S9', '6943', 'DURSEJ', 9), +('S9', '6944', 'DURSEJ', 9), +('S9', '6945', 'DURSEJ', 9), +('S9', '6946', 'DURSEJ', 9), +('S9', '6947', 'DURSEJ', 9), +('S9', '6948', 'DURSEJ', 9), +('S9', '6949', 'DURSEJ', 9), +('S9', '6950', 'DURSEJ', 9), +('S9', '6951', 'DURSEJ', 9), +('S9', '6952', 'DURSEJ', 9), +('S9', '6953', 'DURSEJ', 9), +('S9', '6954', 'DURSEJ', 9), +('S9', '6955', 'DURSEJ', 9), +('S9', '6956', 'DURSEJ', 9), +('S9', '6957', 'DURSEJ', 9), +('S9', '6958', 'DURSEJ', 9), +('S9', '6959', 'DURSEJ', 9), +('S9', '6960', 'DURSEJ', 9), +('S9', '6961', 'DURSEJ', 9), +('S9', '6962', 'DURSEJ', 9), +('S9', '6963', 'DURSEJ', 9), +('S9', '6964', 'DURSEJ', 9), +('S9', '6965', 'DURSEJ', 9), +('S9', '6966', 'DURSEJ', 9), +('S9', '6967', 'DURSEJ', 9), +('S9', '6968', 'DURSEJ', 9), +('S9', '6969', 'DURSEJ', 9), +('S9', '6970', 'DURSEJ', 9), +('S9', '6971', 'DURSEJ', 9), +('S9', '6972', 'DURSEJ', 9), +('S9', '6973', 'DURSEJ', 9), +('S9', '6974', 'DURSEJ', 9), +('S9', '6975', 'DURSEJ', 9), +('S9', '6976', 'DURSEJ', 9), +('S9', '6977', 'DURSEJ', 9), +('S9', '6978', 'DURSEJ', 9), +('S9', '6979', 'DURSEJ', 9), +('S9', '6980', 'DURSEJ', 9), +('S9', '6981', 'DURSEJ', 9), +('S9', '6982', 'DURSEJ', 9), +('S9', '6983', 'DURSEJ', 9), +('S9', '6984', 'DURSEJ', 9), +('S9', '6985', 'DURSEJ', 9), +('S9', '6986', 'DURSEJ', 9), +('S9', '6987', 'DURSEJ', 9), +('S9', '6988', 'DURSEJ', 9), +('S9', '6989', 'DURSEJ', 9), +('S9', '6990', 'DURSEJ', 9), +('S9', '6991', 'DURSEJ', 9), +('S9', '6992', 'DURSEJ', 9), +('S9', '6993', 'DURSEJ', 9), +('S9', '6994', 'DURSEJ', 9), +('S9', '6995', 'DURSEJ', 9), +('S9', '6996', 'DURSEJ', 9), +('S9', '6997', 'DURSEJ', 9), +('S9', '6998', 'DURSEJ', 9), +('S9', '6999', 'DURSEJ', 9), +('S9', '7000', 'DURSEJ', 9), +('S9', '7001', 'DURSEJ', 9), +('S9', '7002', 'DURSEJ', 9), +('S9', '7003', 'DURSEJ', 9), +('S9', '7004', 'DURSEJ', 9), +('S9', '7005', 'DURSEJ', 9), +('S9', '7006', 'DURSEJ', 9), +('S9', '7007', 'DURSEJ', 9), +('S9', '7008', 'DURSEJ', 9), +('S9', '7009', 'DURSEJ', 9), +('S9', '7010', 'DURSEJ', 9), +('S9', '7011', 'DURSEJ', 9), +('S9', '7012', 'DURSEJ', 9), +('S9', '7013', 'DURSEJ', 9), +('S9', '7014', 'DURSEJ', 9), +('S9', '7015', 'DURSEJ', 9), +('S9', '7016', 'DURSEJ', 9), +('S9', '7017', 'DURSEJ', 9), +('S9', '7018', 'DURSEJ', 9), +('S9', '7019', 'DURSEJ', 9), +('S9', '7020', 'DURSEJ', 9), +('S9', '7021', 'DURSEJ', 9), +('S9', '7022', 'DURSEJ', 9), +('S9', '7023', 'DURSEJ', 9), +('S9', '7024', 'DURSEJ', 9), +('S9', '7025', 'DURSEJ', 9), +('S9', '7026', 'DURSEJ', 9), +('S9', '7027', 'DURSEJ', 9), +('S9', '7028', 'DURSEJ', 9), +('S9', '7029', 'DURSEJ', 9), +('S9', '7030', 'DURSEJ', 9), +('S9', '7031', 'DURSEJ', 9), +('S9', '7032', 'DURSEJ', 9), +('S9', '7033', 'DURSEJ', 9), +('S9', '7034', 'DURSEJ', 9), +('S9', '7035', 'DURSEJ', 9), +('S9', '7036', 'DURSEJ', 9), +('S9', '7037', 'DURSEJ', 9), +('S9', '7038', 'DURSEJ', 9), +('S9', '7039', 'DURSEJ', 9), +('S9', '7040', 'DURSEJ', 9), +('S9', '7041', 'DURSEJ', 9), +('S9', '7042', 'DURSEJ', 9), +('S9', '7043', 'DURSEJ', 9), +('S9', '7044', 'DURSEJ', 9), +('S9', '7045', 'DURSEJ', 9), +('S9', '7046', 'DURSEJ', 9), +('S9', '7047', 'DURSEJ', 9), +('S9', '7048', 'DURSEJ', 9), +('S9', '7049', 'DURSEJ', 9), +('S9', '7050', 'DURSEJ', 9), +('S9', '7051', 'DURSEJ', 9), +('S9', '7052', 'DURSEJ', 9), +('S9', '7053', 'DURSEJ', 9), +('S9', '7054', 'DURSEJ', 9), +('S9', '7055', 'DURSEJ', 9), +('S9', '7056', 'DURSEJ', 9), +('S9', '7057', 'DURSEJ', 9), +('S9', '7058', 'DURSEJ', 9), +('S9', '7059', 'DURSEJ', 9), +('S9', '7060', 'DURSEJ', 9), +('S9', '7061', 'DURSEJ', 9), +('S9', '7062', 'DURSEJ', 9), +('S9', '7063', 'DURSEJ', 9), +('S9', '7064', 'DURSEJ', 9), +('S9', '7065', 'DURSEJ', 9), +('S9', '7066', 'DURSEJ', 9), +('S9', '7067', 'DURSEJ', 9), +('S9', '7068', 'DURSEJ', 9), +('S9', '7069', 'DURSEJ', 9), +('S9', '7070', 'DURSEJ', 9), +('S9', '7071', 'DURSEJ', 9), +('S9', '7072', 'DURSEJ', 9), +('S9', '7073', 'DURSEJ', 9), +('S9', '7074', 'DURSEJ', 9), +('S9', '7075', 'DURSEJ', 9), +('S9', '7076', 'DURSEJ', 9), +('S9', '7077', 'DURSEJ', 9), +('S9', '7078', 'DURSEJ', 9), +('S9', '7079', 'DURSEJ', 9), +('S9', '7080', 'DURSEJ', 9), +('S9', '7081', 'DURSEJ', 9), +('S9', '7082', 'DURSEJ', 9), +('S9', '7083', 'DURSEJ', 9), +('S9', '7084', 'DURSEJ', 9), +('S9', '7085', 'DURSEJ', 9), +('S9', '7086', 'DURSEJ', 9), +('S9', '7087', 'DURSEJ', 9), +('S9', '7088', 'DURSEJ', 9), +('S9', '7089', 'DURSEJ', 9), +('S9', '7090', 'DURSEJ', 9), +('S9', '7091', 'DURSEJ', 9), +('S9', '7092', 'DURSEJ', 9), +('S9', '7093', 'DURSEJ', 9), +('S9', '7094', 'DURSEJ', 9), +('S9', '7095', 'DURSEJ', 9), +('S9', '7096', 'DURSEJ', 9), +('S9', '7097', 'DURSEJ', 9), +('S9', '7098', 'DURSEJ', 9), +('S9', '7099', 'DURSEJ', 9), +('S9', '7100', 'DURSEJ', 9), +('S9', '7101', 'DURSEJ', 9), +('S9', '7102', 'DURSEJ', 9), +('S9', '7103', 'DURSEJ', 9), +('S9', '7104', 'DURSEJ', 9), +('S9', '7105', 'DURSEJ', 9), +('S9', '7106', 'DURSEJ', 9), +('S9', '7107', 'DURSEJ', 9), +('S9', '7108', 'DURSEJ', 9), +('S9', '7109', 'DURSEJ', 9), +('S9', '7110', 'DURSEJ', 9), +('S9', '7111', 'DURSEJ', 9), +('S9', '7112', 'DURSEJ', 9), +('S9', '7113', 'DURSEJ', 9), +('S9', '7114', 'DURSEJ', 9), +('S9', '7115', 'DURSEJ', 9), +('S9', '7116', 'DURSEJ', 9), +('S9', '7117', 'DURSEJ', 9), +('S9', '7118', 'DURSEJ', 9), +('S9', '7119', 'DURSEJ', 9), +('S9', '7120', 'DURSEJ', 9), +('S9', '7121', 'DURSEJ', 9), +('S9', '7122', 'DURSEJ', 9), +('S9', '7123', 'DURSEJ', 9), +('S9', '7124', 'DURSEJ', 9), +('S9', '7125', 'DURSEJ', 9), +('S9', '7126', 'DURSEJ', 9), +('S9', '7127', 'DURSEJ', 9), +('S9', '7128', 'DURSEJ', 9), +('S9', '7129', 'DURSEJ', 9), +('S9', '7130', 'DURSEJ', 9), +('S9', '7131', 'DURSEJ', 9), +('S9', '7132', 'DURSEJ', 9), +('S9', '7133', 'DURSEJ', 9), +('S9', '7134', 'DURSEJ', 9), +('S9', '7135', 'DURSEJ', 9), +('S9', '7136', 'DURSEJ', 9), +('S9', '7137', 'DURSEJ', 9), +('S9', '7138', 'DURSEJ', 9), +('S9', '7139', 'DURSEJ', 9), +('S9', '7140', 'DURSEJ', 9), +('S9', '7141', 'DURSEJ', 9), +('S9', '7142', 'DURSEJ', 9), +('S9', '7143', 'DURSEJ', 9), +('S9', '7144', 'DURSEJ', 9), +('S9', '7145', 'DURSEJ', 9), +('S9', '7146', 'DURSEJ', 9), +('S9', '7147', 'DURSEJ', 9), +('S9', '7148', 'DURSEJ', 9), +('S9', '7149', 'DURSEJ', 9), +('S9', '7150', 'DURSEJ', 9), +('S9', '7151', 'DURSEJ', 9), +('S9', '7152', 'DURSEJ', 9), +('S9', '7153', 'DURSEJ', 9), +('S9', '7154', 'DURSEJ', 9), +('S9', '7155', 'DURSEJ', 9), +('S9', '7156', 'DURSEJ', 9), +('S9', '7157', 'DURSEJ', 9), +('S9', '7158', 'DURSEJ', 9), +('S9', '7159', 'DURSEJ', 9), +('S9', '7160', 'DURSEJ', 9), +('S9', '7161', 'DURSEJ', 9), +('S9', '7162', 'DURSEJ', 9), +('S9', '7163', 'DURSEJ', 9), +('S9', '7164', 'DURSEJ', 9), +('S9', '7165', 'DURSEJ', 9), +('S9', '7166', 'DURSEJ', 9), +('S9', '7167', 'DURSEJ', 9), +('S9', '7168', 'DURSEJ', 9), +('S9', '7169', 'DURSEJ', 9), +('S9', '7170', 'DURSEJ', 9), +('S9', '7171', 'DURSEJ', 9), +('S9', '7172', 'DURSEJ', 9), +('S9', '7173', 'DURSEJ', 9), +('S9', '7174', 'DURSEJ', 9), +('S9', '7175', 'DURSEJ', 9), +('S9', '7176', 'DURSEJ', 9), +('S9', '7177', 'DURSEJ', 9), +('S9', '7178', 'DURSEJ', 9), +('S9', '7179', 'DURSEJ', 9), +('S9', '7180', 'DURSEJ', 9), +('S9', '7181', 'DURSEJ', 9), +('S9', '7182', 'DURSEJ', 9), +('S9', '7183', 'DURSEJ', 9), +('S9', '7184', 'DURSEJ', 9), +('S9', '7185', 'DURSEJ', 9), +('S9', '7186', 'DURSEJ', 9), +('S9', '7187', 'DURSEJ', 9), +('S9', '7188', 'DURSEJ', 9), +('S9', '7189', 'DURSEJ', 9), +('S9', '7190', 'DURSEJ', 9), +('S9', '7191', 'DURSEJ', 9), +('S9', '7192', 'DURSEJ', 9), +('S9', '7193', 'DURSEJ', 9), +('S9', '7194', 'DURSEJ', 9), +('S9', '7195', 'DURSEJ', 9), +('S9', '7196', 'DURSEJ', 9), +('S9', '7197', 'DURSEJ', 9), +('S9', '7198', 'DURSEJ', 9), +('S9', '7199', 'DURSEJ', 9), +('S9', '7200', 'DURSEJ', 9), +('S9', '7201', 'DURSEJ', 9), +('S9', '7202', 'DURSEJ', 9), +('S9', '7203', 'DURSEJ', 9), +('S9', '7204', 'DURSEJ', 9), +('S9', '7205', 'DURSEJ', 9), +('S9', '7206', 'DURSEJ', 9), +('S9', '7207', 'DURSEJ', 9), +('S9', '7208', 'DURSEJ', 9), +('S9', '7209', 'DURSEJ', 9), +('S9', '7210', 'DURSEJ', 9), +('S9', '7211', 'DURSEJ', 9), +('S9', '7212', 'DURSEJ', 9), +('S9', '7213', 'DURSEJ', 9), +('S9', '7214', 'DURSEJ', 9), +('S9', '7215', 'DURSEJ', 9), +('S9', '7216', 'DURSEJ', 9), +('S9', '7217', 'DURSEJ', 9), +('S9', '7218', 'DURSEJ', 9), +('S9', '7219', 'DURSEJ', 9), +('S9', '7220', 'DURSEJ', 9), +('S9', '7221', 'DURSEJ', 9), +('S9', '7222', 'DURSEJ', 9), +('S9', '7223', 'DURSEJ', 9), +('S9', '7224', 'DURSEJ', 9), +('S9', '7225', 'DURSEJ', 9), +('S9', '7226', 'DURSEJ', 9), +('S9', '7227', 'DURSEJ', 9), +('S9', '7228', 'DURSEJ', 9), +('S9', '7229', 'DURSEJ', 9), +('S9', '7230', 'DURSEJ', 9), +('S9', '7231', 'DURSEJ', 9), +('S9', '7232', 'DURSEJ', 9), +('S9', '7233', 'DURSEJ', 9), +('S9', '7234', 'DURSEJ', 9), +('S9', '7235', 'DURSEJ', 9), +('S9', '7236', 'DURSEJ', 9), +('S9', '7237', 'DURSEJ', 9), +('S9', '7238', 'DURSEJ', 9), +('S9', '7239', 'DURSEJ', 9), +('S9', '7240', 'DURSEJ', 9), +('S9', '7241', 'DURSEJ', 9), +('S9', '7242', 'DURSEJ', 9), +('S9', '7243', 'DURSEJ', 9), +('S9', '7244', 'DURSEJ', 9), +('S9', '7245', 'DURSEJ', 9), +('S9', '7246', 'DURSEJ', 9), +('S9', '7247', 'DURSEJ', 9), +('S9', '7248', 'DURSEJ', 9), +('S9', '7249', 'DURSEJ', 9), +('S9', '7250', 'DURSEJ', 9), +('S9', '7251', 'DURSEJ', 9), +('S9', '7252', 'DURSEJ', 9), +('S9', '7253', 'DURSEJ', 9), +('S9', '7254', 'DURSEJ', 9), +('S9', '7255', 'DURSEJ', 9), +('S9', '7256', 'DURSEJ', 9), +('S9', '7257', 'DURSEJ', 9), +('S9', '7258', 'DURSEJ', 9), +('S9', '7259', 'DURSEJ', 9), +('S9', '7260', 'DURSEJ', 9), +('S9', '7261', 'DURSEJ', 9), +('S9', '7262', 'DURSEJ', 9), +('S9', '7263', 'DURSEJ', 9), +('S9', '7264', 'DURSEJ', 9), +('S9', '7265', 'DURSEJ', 9), +('S9', '7266', 'DURSEJ', 9), +('S9', '7267', 'DURSEJ', 9), +('S9', '7268', 'DURSEJ', 9), +('S9', '7269', 'DURSEJ', 9), +('S9', '7270', 'DURSEJ', 9), +('S9', '7271', 'DURSEJ', 9), +('S9', '7272', 'DURSEJ', 9), +('S9', '7273', 'DURSEJ', 9), +('S9', '7274', 'DURSEJ', 9), +('S9', '7275', 'DURSEJ', 9), +('S9', '7276', 'DURSEJ', 9), +('S9', '7277', 'DURSEJ', 9), +('S9', '7278', 'DURSEJ', 9), +('S9', '7279', 'DURSEJ', 9), +('S9', '7280', 'DURSEJ', 9), +('S9', '7281', 'DURSEJ', 9), +('S9', '7282', 'DURSEJ', 9), +('S9', '7283', 'DURSEJ', 9), +('S9', '7284', 'DURSEJ', 9), +('S9', '7285', 'DURSEJ', 9), +('S9', '7286', 'DURSEJ', 9), +('S9', '7287', 'DURSEJ', 9), +('S9', '7288', 'DURSEJ', 9), +('S9', '7289', 'DURSEJ', 9), +('S9', '7290', 'DURSEJ', 9), +('S9', '7291', 'DURSEJ', 9), +('S9', '7292', 'DURSEJ', 9), +('S9', '7293', 'DURSEJ', 9), +('S9', '7294', 'DURSEJ', 9), +('S9', '7295', 'DURSEJ', 9), +('S9', '7296', 'DURSEJ', 9), +('S9', '7297', 'DURSEJ', 9), +('S9', '7298', 'DURSEJ', 9), +('S9', '7299', 'DURSEJ', 9), +('S9', '7300', 'DURSEJ', 9), +('S9', '7301', 'DURSEJ', 9), +('S9', '7302', 'DURSEJ', 9), +('S9', '7303', 'DURSEJ', 9), +('S9', '7304', 'DURSEJ', 9), +('S9', '7305', 'DURSEJ', 9), +('S9', '7306', 'DURSEJ', 9), +('S9', '7307', 'DURSEJ', 9), +('S9', '7308', 'DURSEJ', 9), +('S9', '7309', 'DURSEJ', 9), +('S9', '7310', 'DURSEJ', 9), +('S9', '7311', 'DURSEJ', 9), +('S9', '7312', 'DURSEJ', 9), +('S9', '7313', 'DURSEJ', 9), +('S9', '7314', 'DURSEJ', 9), +('S9', '7315', 'DURSEJ', 9), +('S9', '7316', 'DURSEJ', 9), +('S9', '7317', 'DURSEJ', 9), +('S9', '7318', 'DURSEJ', 9), +('S9', '7319', 'DURSEJ', 9), +('S9', '7320', 'DURSEJ', 9), +('S9', '7321', 'DURSEJ', 9), +('S9', '7322', 'DURSEJ', 9), +('S9', '7323', 'DURSEJ', 9), +('S9', '7324', 'DURSEJ', 9), +('S9', '7325', 'DURSEJ', 9), +('S9', '7326', 'DURSEJ', 9), +('S9', '7327', 'DURSEJ', 9), +('S9', '7328', 'DURSEJ', 9), +('S9', '7329', 'DURSEJ', 9), +('S9', '7330', 'DURSEJ', 9), +('S9', '7331', 'DURSEJ', 9), +('S9', '7332', 'DURSEJ', 9), +('S9', '7333', 'DURSEJ', 9), +('S9', '7334', 'DURSEJ', 9), +('S9', '7335', 'DURSEJ', 9), +('S9', '7336', 'DURSEJ', 9), +('S9', '7337', 'DURSEJ', 9), +('S9', '7338', 'DURSEJ', 9), +('S9', '7339', 'DURSEJ', 9), +('S9', '7340', 'DURSEJ', 9), +('S9', '7341', 'DURSEJ', 9), +('S9', '7342', 'DURSEJ', 9), +('S9', '7343', 'DURSEJ', 9), +('S9', '7344', 'DURSEJ', 9), +('S9', '7345', 'DURSEJ', 9), +('S9', '7346', 'DURSEJ', 9), +('S9', '7347', 'DURSEJ', 9), +('S9', '7348', 'DURSEJ', 9), +('S9', '7349', 'DURSEJ', 9), +('S9', '7350', 'DURSEJ', 9), +('S9', '7351', 'DURSEJ', 9), +('S9', '7352', 'DURSEJ', 9), +('S9', '7353', 'DURSEJ', 9), +('S9', '7354', 'DURSEJ', 9), +('S9', '7355', 'DURSEJ', 9), +('S9', '7356', 'DURSEJ', 9), +('S9', '7357', 'DURSEJ', 9), +('S9', '7358', 'DURSEJ', 9), +('S9', '7359', 'DURSEJ', 9), +('S9', '7360', 'DURSEJ', 9), +('S9', '7361', 'DURSEJ', 9), +('S9', '7362', 'DURSEJ', 9), +('S9', '7363', 'DURSEJ', 9), +('S9', '7364', 'DURSEJ', 9), +('S9', '7365', 'DURSEJ', 9), +('S9', '7366', 'DURSEJ', 9), +('S9', '7367', 'DURSEJ', 9), +('S9', '7368', 'DURSEJ', 9), +('S9', '7369', 'DURSEJ', 9), +('S9', '7370', 'DURSEJ', 9), +('S9', '7371', 'DURSEJ', 9), +('S9', '7372', 'DURSEJ', 9), +('S9', '7373', 'DURSEJ', 9), +('S9', '7374', 'DURSEJ', 9), +('S9', '7375', 'DURSEJ', 9), +('S9', '7376', 'DURSEJ', 9), +('S9', '7377', 'DURSEJ', 9), +('S9', '7378', 'DURSEJ', 9), +('S9', '7379', 'DURSEJ', 9), +('S9', '7380', 'DURSEJ', 9), +('S9', '7381', 'DURSEJ', 9), +('S9', '7382', 'DURSEJ', 9), +('S9', '7383', 'DURSEJ', 9), +('S9', '7384', 'DURSEJ', 9), +('S9', '7385', 'DURSEJ', 9), +('S9', '7386', 'DURSEJ', 9), +('S9', '7387', 'DURSEJ', 9), +('S9', '7388', 'DURSEJ', 9), +('S9', '7389', 'DURSEJ', 9), +('S9', '7390', 'DURSEJ', 9), +('S9', '7391', 'DURSEJ', 9), +('S9', '7392', 'DURSEJ', 9), +('S9', '7393', 'DURSEJ', 9), +('S9', '7394', 'DURSEJ', 9), +('S9', '7395', 'DURSEJ', 9), +('S9', '7396', 'DURSEJ', 9), +('S9', '7397', 'DURSEJ', 9), +('S9', '7398', 'DURSEJ', 9), +('S9', '7399', 'DURSEJ', 9), +('S9', '7400', 'DURSEJ', 9), +('S9', '7401', 'DURSEJ', 9), +('S9', '7402', 'DURSEJ', 9), +('S9', '7403', 'DURSEJ', 9), +('S9', '7404', 'DURSEJ', 9), +('S9', '7405', 'DURSEJ', 9), +('S9', '7406', 'DURSEJ', 9), +('S9', '7407', 'DURSEJ', 9), +('S9', '7408', 'DURSEJ', 9), +('S9', '7409', 'DURSEJ', 9), +('S9', '7410', 'DURSEJ', 9), +('S9', '7411', 'DURSEJ', 9), +('S9', '7412', 'DURSEJ', 9), +('S9', '7413', 'DURSEJ', 9), +('S9', '7414', 'DURSEJ', 9), +('S9', '7415', 'DURSEJ', 9), +('S9', '7416', 'DURSEJ', 9), +('S9', '7417', 'DURSEJ', 9), +('S9', '7418', 'DURSEJ', 9), +('S9', '7419', 'DURSEJ', 9), +('S9', '7420', 'DURSEJ', 9), +('S9', '7421', 'DURSEJ', 9), +('S9', '7422', 'DURSEJ', 9), +('S9', '7423', 'DURSEJ', 9), +('S9', '7424', 'DURSEJ', 9), +('S9', '7425', 'DURSEJ', 9), +('S9', '7426', 'DURSEJ', 9), +('S9', '7427', 'DURSEJ', 9), +('S9', '7428', 'DURSEJ', 9), +('S9', '7429', 'DURSEJ', 9), +('S9', '7430', 'DURSEJ', 9), +('S9', '7431', 'DURSEJ', 9), +('S9', '7432', 'DURSEJ', 9), +('S9', '7433', 'DURSEJ', 9), +('S9', '7434', 'DURSEJ', 9), +('S9', '7435', 'DURSEJ', 9), +('S9', '7436', 'DURSEJ', 9), +('S9', '7437', 'DURSEJ', 9), +('S9', '7438', 'DURSEJ', 9), +('S9', '7439', 'DURSEJ', 9), +('S9', '7440', 'DURSEJ', 9), +('S9', '7441', 'DURSEJ', 9), +('S9', '7442', 'DURSEJ', 9), +('S9', '7443', 'DURSEJ', 9), +('S9', '7444', 'DURSEJ', 9), +('S9', '7445', 'DURSEJ', 9), +('S9', '7446', 'DURSEJ', 9), +('S9', '7447', 'DURSEJ', 9), +('S9', '7448', 'DURSEJ', 9), +('S9', '7449', 'DURSEJ', 9), +('S9', '7450', 'DURSEJ', 9), +('S9', '7451', 'DURSEJ', 9), +('S9', '7452', 'DURSEJ', 9), +('S9', '7453', 'DURSEJ', 9), +('S9', '7454', 'DURSEJ', 9), +('S9', '7455', 'DURSEJ', 9), +('S9', '7456', 'DURSEJ', 9), +('S9', '7457', 'DURSEJ', 9), +('S9', '7458', 'DURSEJ', 9), +('S9', '7459', 'DURSEJ', 9), +('S9', '7460', 'DURSEJ', 9), +('S9', '7461', 'DURSEJ', 9), +('S9', '7462', 'DURSEJ', 9), +('S9', '7463', 'DURSEJ', 9), +('S9', '7464', 'DURSEJ', 9), +('S9', '7465', 'DURSEJ', 9), +('S9', '7466', 'DURSEJ', 9), +('S9', '7467', 'DURSEJ', 9), +('S9', '7468', 'DURSEJ', 9), +('S9', '7469', 'DURSEJ', 9), +('S9', '7470', 'DURSEJ', 9), +('S9', '7471', 'DURSEJ', 9), +('S9', '7472', 'DURSEJ', 9), +('S9', '7473', 'DURSEJ', 9), +('S9', '7474', 'DURSEJ', 9), +('S9', '7475', 'DURSEJ', 9), +('S9', '7476', 'DURSEJ', 9), +('S9', '7477', 'DURSEJ', 9), +('S9', '7478', 'DURSEJ', 9), +('S9', '7479', 'DURSEJ', 9), +('S9', '7480', 'DURSEJ', 9), +('S9', '7481', 'DURSEJ', 9), +('S9', '7482', 'DURSEJ', 9), +('S9', '7483', 'DURSEJ', 9), +('S9', '7484', 'DURSEJ', 9), +('S9', '7485', 'DURSEJ', 9), +('S9', '7486', 'DURSEJ', 9), +('S9', '7487', 'DURSEJ', 9), +('S9', '7488', 'DURSEJ', 9), +('S9', '7489', 'DURSEJ', 9), +('S9', '7490', 'DURSEJ', 9), +('S9', '7491', 'DURSEJ', 9), +('S9', '7492', 'DURSEJ', 9), +('S9', '7493', 'DURSEJ', 9), +('S9', '7494', 'DURSEJ', 9), +('S9', '7495', 'DURSEJ', 9), +('S9', '7496', 'DURSEJ', 9), +('S9', '7497', 'DURSEJ', 9), +('S9', '7498', 'DURSEJ', 9), +('S9', '7499', 'DURSEJ', 9), +('S9', '7500', 'DURSEJ', 9), +('S9', '7501', 'DURSEJ', 9), +('S9', '7502', 'DURSEJ', 9), +('S9', '7503', 'DURSEJ', 9), +('S9', '7504', 'DURSEJ', 9), +('S9', '7505', 'DURSEJ', 9), +('S9', '7506', 'DURSEJ', 9), +('S9', '7507', 'DURSEJ', 9), +('S9', '7508', 'DURSEJ', 9), +('S9', '7509', 'DURSEJ', 9), +('S9', '7510', 'DURSEJ', 9), +('S9', '7511', 'DURSEJ', 9), +('S9', '7512', 'DURSEJ', 9), +('S9', '7513', 'DURSEJ', 9), +('S9', '7514', 'DURSEJ', 9), +('S9', '7515', 'DURSEJ', 9), +('S9', '7516', 'DURSEJ', 9), +('S9', '7517', 'DURSEJ', 9), +('S9', '7518', 'DURSEJ', 9), +('S9', '7519', 'DURSEJ', 9), +('S9', '7520', 'DURSEJ', 9), +('S9', '7521', 'DURSEJ', 9), +('S9', '7522', 'DURSEJ', 9), +('S9', '7523', 'DURSEJ', 9), +('S9', '7524', 'DURSEJ', 9), +('S9', '7525', 'DURSEJ', 9), +('S9', '7526', 'DURSEJ', 9), +('S9', '7527', 'DURSEJ', 9), +('S9', '7528', 'DURSEJ', 9), +('S9', '7529', 'DURSEJ', 9), +('S9', '7530', 'DURSEJ', 9), +('S9', '7531', 'DURSEJ', 9), +('S9', '7532', 'DURSEJ', 9), +('S9', '7533', 'DURSEJ', 9), +('S9', '7534', 'DURSEJ', 9), +('S9', '7535', 'DURSEJ', 9), +('S9', '7536', 'DURSEJ', 9), +('S9', '7537', 'DURSEJ', 9), +('S9', '7538', 'DURSEJ', 9), +('S9', '7539', 'DURSEJ', 9), +('S9', '7540', 'DURSEJ', 9), +('S9', '7541', 'DURSEJ', 9), +('S9', '7542', 'DURSEJ', 9), +('S9', '7543', 'DURSEJ', 9), +('S9', '7544', 'DURSEJ', 9), +('S9', '7545', 'DURSEJ', 9), +('S9', '7546', 'DURSEJ', 9), +('S9', '7547', 'DURSEJ', 9), +('S9', '7548', 'DURSEJ', 9), +('S9', '7549', 'DURSEJ', 9), +('S9', '7550', 'DURSEJ', 9), +('S9', '7551', 'DURSEJ', 9), +('S9', '7552', 'DURSEJ', 9), +('S9', '7553', 'DURSEJ', 9), +('S9', '7554', 'DURSEJ', 9), +('S9', '7555', 'DURSEJ', 9), +('S9', '7556', 'DURSEJ', 9), +('S9', '7557', 'DURSEJ', 9), +('S9', '7558', 'DURSEJ', 9), +('S9', '7559', 'DURSEJ', 9), +('S9', '7560', 'DURSEJ', 9), +('S9', '7561', 'DURSEJ', 9), +('S9', '7562', 'DURSEJ', 9), +('S9', '7563', 'DURSEJ', 9), +('S9', '7564', 'DURSEJ', 9), +('S9', '7565', 'DURSEJ', 9), +('S9', '7566', 'DURSEJ', 9), +('S9', '7567', 'DURSEJ', 9), +('S9', '7568', 'DURSEJ', 9), +('S9', '7569', 'DURSEJ', 9), +('S9', '7570', 'DURSEJ', 9), +('S9', '7571', 'DURSEJ', 9), +('S9', '7572', 'DURSEJ', 9), +('S9', '7573', 'DURSEJ', 9), +('S9', '7574', 'DURSEJ', 9), +('S9', '7575', 'DURSEJ', 9), +('S9', '7576', 'DURSEJ', 9), +('S9', '7577', 'DURSEJ', 9), +('S9', '7578', 'DURSEJ', 9), +('S9', '7579', 'DURSEJ', 9), +('S9', '7580', 'DURSEJ', 9), +('S9', '7581', 'DURSEJ', 9), +('S9', '7582', 'DURSEJ', 9), +('S9', '7583', 'DURSEJ', 9), +('S9', '7584', 'DURSEJ', 9), +('S9', '7585', 'DURSEJ', 9), +('S9', '7586', 'DURSEJ', 9), +('S9', '7587', 'DURSEJ', 9), +('S9', '7588', 'DURSEJ', 9), +('S9', '7589', 'DURSEJ', 9), +('S9', '7590', 'DURSEJ', 9), +('S9', '7591', 'DURSEJ', 9), +('S9', '7592', 'DURSEJ', 9), +('S9', '7593', 'DURSEJ', 9), +('S9', '7594', 'DURSEJ', 9), +('S9', '7595', 'DURSEJ', 9), +('S9', '7596', 'DURSEJ', 9), +('S9', '7597', 'DURSEJ', 9), +('S9', '7598', 'DURSEJ', 9), +('S9', '7599', 'DURSEJ', 9), +('S9', '7600', 'DURSEJ', 9), +('S9', '7601', 'DURSEJ', 9), +('S9', '7602', 'DURSEJ', 9), +('S9', '7603', 'DURSEJ', 9), +('S9', '7604', 'DURSEJ', 9), +('S9', '7605', 'DURSEJ', 9), +('S9', '7606', 'DURSEJ', 9), +('S9', '7607', 'DURSEJ', 9), +('S9', '7608', 'DURSEJ', 9), +('S9', '7609', 'DURSEJ', 9), +('S9', '7610', 'DURSEJ', 9), +('S9', '7611', 'DURSEJ', 9), +('S9', '7612', 'DURSEJ', 9), +('S9', '7613', 'DURSEJ', 9), +('S9', '7614', 'DURSEJ', 9), +('S9', '7615', 'DURSEJ', 9), +('S9', '7616', 'DURSEJ', 9), +('S9', '7617', 'DURSEJ', 9), +('S9', '7618', 'DURSEJ', 9), +('S9', '7619', 'DURSEJ', 9), +('S9', '7620', 'DURSEJ', 9), +('S9', '7621', 'DURSEJ', 9), +('S9', '7622', 'DURSEJ', 9), +('S9', '7623', 'DURSEJ', 9), +('S9', '7624', 'DURSEJ', 9), +('S9', '7625', 'DURSEJ', 9), +('S9', '7626', 'DURSEJ', 9), +('S9', '7627', 'DURSEJ', 9), +('S9', '7628', 'DURSEJ', 9), +('S9', '7629', 'DURSEJ', 9), +('S9', '7630', 'DURSEJ', 9), +('S9', '7631', 'DURSEJ', 9), +('S9', '7632', 'DURSEJ', 9), +('S9', '7633', 'DURSEJ', 9), +('S9', '7634', 'DURSEJ', 9), +('S9', '7635', 'DURSEJ', 9), +('S9', '7636', 'DURSEJ', 9), +('S9', '7637', 'DURSEJ', 9), +('S9', '7638', 'DURSEJ', 9), +('S9', '7639', 'DURSEJ', 9), +('S9', '7640', 'DURSEJ', 9), +('S9', '7641', 'DURSEJ', 9), +('S9', '7642', 'DURSEJ', 9), +('S9', '7643', 'DURSEJ', 9), +('S9', '7644', 'DURSEJ', 9), +('S9', '7645', 'DURSEJ', 9), +('S9', '7646', 'DURSEJ', 9), +('S9', '7647', 'DURSEJ', 9), +('S9', '7648', 'DURSEJ', 9), +('S9', '7649', 'DURSEJ', 9), +('S9', '7650', 'DURSEJ', 9), +('S9', '7651', 'DURSEJ', 9), +('S9', '7652', 'DURSEJ', 9), +('S9', '7653', 'DURSEJ', 9), +('S9', '7654', 'DURSEJ', 9), +('S9', '7655', 'DURSEJ', 9), +('S9', '7656', 'DURSEJ', 9), +('S9', '7657', 'DURSEJ', 9), +('S9', '7658', 'DURSEJ', 9), +('S9', '7659', 'DURSEJ', 9), +('S9', '7660', 'DURSEJ', 9), +('S9', '7661', 'DURSEJ', 9), +('S9', '7662', 'DURSEJ', 9), +('S9', '7663', 'DURSEJ', 9), +('S9', '7664', 'DURSEJ', 9), +('S9', '7665', 'DURSEJ', 9), +('S9', '7666', 'DURSEJ', 9), +('S9', '7667', 'DURSEJ', 9), +('S9', '7668', 'DURSEJ', 9), +('S9', '7669', 'DURSEJ', 9), +('S9', '7670', 'DURSEJ', 9), +('S9', '7671', 'DURSEJ', 9), +('S9', '7672', 'DURSEJ', 9), +('S9', '7673', 'DURSEJ', 9), +('S9', '7674', 'DURSEJ', 9), +('S9', '7675', 'DURSEJ', 9), +('S9', '7676', 'DURSEJ', 9), +('S9', '7677', 'DURSEJ', 9), +('S9', '7678', 'DURSEJ', 9), +('S9', '7679', 'DURSEJ', 9), +('S9', '7680', 'DURSEJ', 9), +('S9', '7681', 'DURSEJ', 9), +('S9', '7682', 'DURSEJ', 9), +('S9', '7683', 'DURSEJ', 9), +('S9', '7684', 'DURSEJ', 9), +('S9', '7685', 'DURSEJ', 9), +('S9', '7686', 'DURSEJ', 9), +('S9', '7687', 'DURSEJ', 9), +('S9', '7688', 'DURSEJ', 9), +('S9', '7689', 'DURSEJ', 9), +('S9', '7690', 'DURSEJ', 9), +('S9', '7691', 'DURSEJ', 9), +('S9', '7692', 'DURSEJ', 9), +('S9', '7693', 'DURSEJ', 9), +('S9', '7694', 'DURSEJ', 9), +('S9', '7695', 'DURSEJ', 9), +('S9', '7696', 'DURSEJ', 9), +('S9', '7697', 'DURSEJ', 9), +('S9', '7698', 'DURSEJ', 9), +('S9', '7699', 'DURSEJ', 9), +('S9', '7700', 'DURSEJ', 9), +('S9', '7701', 'DURSEJ', 9), +('S9', '7702', 'DURSEJ', 9), +('S9', '7703', 'DURSEJ', 9), +('S9', '7704', 'DURSEJ', 9), +('S9', '7705', 'DURSEJ', 9), +('S9', '7706', 'DURSEJ', 9), +('S9', '7707', 'DURSEJ', 9), +('S9', '7708', 'DURSEJ', 9), +('S9', '7709', 'DURSEJ', 9), +('S9', '7710', 'DURSEJ', 9), +('S9', '7711', 'DURSEJ', 9), +('S9', '7712', 'DURSEJ', 9), +('S9', '7713', 'DURSEJ', 9), +('S9', '7714', 'DURSEJ', 9), +('S9', '7715', 'DURSEJ', 9), +('S9', '7716', 'DURSEJ', 9), +('S9', '7717', 'DURSEJ', 9), +('S9', '7718', 'DURSEJ', 9), +('S9', '7719', 'DURSEJ', 9), +('S9', '7720', 'DURSEJ', 9), +('S9', '7721', 'DURSEJ', 9), +('S9', '7722', 'DURSEJ', 9), +('S9', '7723', 'DURSEJ', 9), +('S9', '7724', 'DURSEJ', 9), +('S9', '7725', 'DURSEJ', 9), +('S9', '7726', 'DURSEJ', 9), +('S9', '7727', 'DURSEJ', 9), +('S9', '7728', 'DURSEJ', 9), +('S9', '7729', 'DURSEJ', 9), +('S9', '7730', 'DURSEJ', 9), +('S9', '7731', 'DURSEJ', 9), +('S9', '7732', 'DURSEJ', 9), +('S9', '7733', 'DURSEJ', 9), +('S9', '7734', 'DURSEJ', 9), +('S9', '7735', 'DURSEJ', 9), +('S9', '7736', 'DURSEJ', 9), +('S9', '7737', 'DURSEJ', 9), +('S9', '7738', 'DURSEJ', 9), +('S9', '7739', 'DURSEJ', 9), +('S9', '7740', 'DURSEJ', 9), +('S9', '7741', 'DURSEJ', 9), +('S9', '7742', 'DURSEJ', 9), +('S9', '7743', 'DURSEJ', 9), +('S9', '7744', 'DURSEJ', 9), +('S9', '7745', 'DURSEJ', 9), +('S9', '7746', 'DURSEJ', 9), +('S9', '7747', 'DURSEJ', 9), +('S9', '7748', 'DURSEJ', 9), +('S9', '7749', 'DURSEJ', 9), +('S9', '7750', 'DURSEJ', 9), +('S9', '7751', 'DURSEJ', 9), +('S9', '7752', 'DURSEJ', 9), +('S9', '7753', 'DURSEJ', 9), +('S9', '7754', 'DURSEJ', 9), +('S9', '7755', 'DURSEJ', 9), +('S9', '7756', 'DURSEJ', 9), +('S9', '7757', 'DURSEJ', 9), +('S9', '7758', 'DURSEJ', 9), +('S9', '7759', 'DURSEJ', 9), +('S9', '7760', 'DURSEJ', 9), +('S9', '7761', 'DURSEJ', 9), +('S9', '7762', 'DURSEJ', 9), +('S9', '7763', 'DURSEJ', 9), +('S9', '7764', 'DURSEJ', 9), +('S9', '7765', 'DURSEJ', 9), +('S9', '7766', 'DURSEJ', 9), +('S9', '7767', 'DURSEJ', 9), +('S9', '7768', 'DURSEJ', 9), +('S9', '7769', 'DURSEJ', 9), +('S9', '7770', 'DURSEJ', 9), +('S9', '7771', 'DURSEJ', 9), +('S9', '7772', 'DURSEJ', 9), +('S9', '7773', 'DURSEJ', 9), +('S9', '7774', 'DURSEJ', 9), +('S9', '7775', 'DURSEJ', 9), +('S9', '7776', 'DURSEJ', 9), +('S9', '7777', 'DURSEJ', 9), +('S9', '7778', 'DURSEJ', 9), +('S9', '7779', 'DURSEJ', 9), +('S9', '7780', 'DURSEJ', 9), +('S9', '7781', 'DURSEJ', 9), +('S9', '7782', 'DURSEJ', 9), +('S9', '7783', 'DURSEJ', 9), +('S9', '7784', 'DURSEJ', 9), +('S9', '7785', 'DURSEJ', 9), +('S9', '7786', 'DURSEJ', 9), +('S9', '7787', 'DURSEJ', 9), +('S9', '7788', 'DURSEJ', 9), +('S9', '7789', 'DURSEJ', 9), +('S9', '7790', 'DURSEJ', 9), +('S9', '7791', 'DURSEJ', 9), +('S9', '7792', 'DURSEJ', 9), +('S9', '7793', 'DURSEJ', 9), +('S9', '7794', 'DURSEJ', 9), +('S9', '7795', 'DURSEJ', 9), +('S9', '7796', 'DURSEJ', 9), +('S9', '7797', 'DURSEJ', 9), +('S9', '7798', 'DURSEJ', 9), +('S9', '7799', 'DURSEJ', 9), +('S9', '7800', 'DURSEJ', 9), +('S9', '7801', 'DURSEJ', 9), +('S9', '7802', 'DURSEJ', 9), +('S9', '7803', 'DURSEJ', 9), +('S9', '7804', 'DURSEJ', 9), +('S9', '7805', 'DURSEJ', 9), +('S9', '7806', 'DURSEJ', 9), +('S9', '7807', 'DURSEJ', 9), +('S9', '7808', 'DURSEJ', 9), +('S9', '7809', 'DURSEJ', 9), +('S9', '7810', 'DURSEJ', 9), +('S9', '7811', 'DURSEJ', 9), +('S9', '7812', 'DURSEJ', 9), +('S9', '7813', 'DURSEJ', 9), +('S9', '7814', 'DURSEJ', 9), +('S9', '7815', 'DURSEJ', 9), +('S9', '7816', 'DURSEJ', 9), +('S9', '7817', 'DURSEJ', 9), +('S9', '7818', 'DURSEJ', 9), +('S9', '7819', 'DURSEJ', 9), +('S9', '7820', 'DURSEJ', 9), +('S9', '7821', 'DURSEJ', 9), +('S9', '7822', 'DURSEJ', 9), +('S9', '7823', 'DURSEJ', 9), +('S9', '7824', 'DURSEJ', 9), +('S9', '7825', 'DURSEJ', 9), +('S9', '7826', 'DURSEJ', 9), +('S9', '7827', 'DURSEJ', 9), +('S9', '7828', 'DURSEJ', 9), +('S9', '7829', 'DURSEJ', 9), +('S9', '7830', 'DURSEJ', 9), +('S9', '7831', 'DURSEJ', 9), +('S9', '7832', 'DURSEJ', 9), +('S9', '7833', 'DURSEJ', 9), +('S9', '7834', 'DURSEJ', 9), +('S9', '7835', 'DURSEJ', 9), +('S9', '7836', 'DURSEJ', 9), +('S9', '7837', 'DURSEJ', 9), +('S9', '7838', 'DURSEJ', 9), +('S9', '7839', 'DURSEJ', 9), +('S9', '7840', 'DURSEJ', 9), +('S9', '7841', 'DURSEJ', 9), +('S9', '7842', 'DURSEJ', 9), +('S9', '7843', 'DURSEJ', 9), +('S9', '7844', 'DURSEJ', 9), +('S9', '7845', 'DURSEJ', 9), +('S9', '7846', 'DURSEJ', 9), +('S9', '7847', 'DURSEJ', 9), +('S9', '7848', 'DURSEJ', 9), +('S9', '7849', 'DURSEJ', 9), +('S9', '7850', 'DURSEJ', 9), +('S9', '7851', 'DURSEJ', 9), +('S9', '7852', 'DURSEJ', 9), +('S9', '7853', 'DURSEJ', 9), +('S9', '7854', 'DURSEJ', 9), +('S9', '7855', 'DURSEJ', 9), +('S9', '7856', 'DURSEJ', 9), +('S9', '7857', 'DURSEJ', 9), +('S9', '7858', 'DURSEJ', 9), +('S9', '7859', 'DURSEJ', 9), +('S9', '7860', 'DURSEJ', 9), +('S9', '7861', 'DURSEJ', 9), +('S9', '7862', 'DURSEJ', 9), +('S9', '7863', 'DURSEJ', 9), +('S9', '7864', 'DURSEJ', 9), +('S9', '7865', 'DURSEJ', 9), +('S9', '7866', 'DURSEJ', 9), +('S9', '7867', 'DURSEJ', 9), +('S9', '7868', 'DURSEJ', 9), +('S9', '7869', 'DURSEJ', 9), +('S9', '7870', 'DURSEJ', 9), +('S9', '7871', 'DURSEJ', 9), +('S9', '7872', 'DURSEJ', 9), +('S9', '7873', 'DURSEJ', 9), +('S9', '7874', 'DURSEJ', 9), +('S9', '7875', 'DURSEJ', 9), +('S9', '7876', 'DURSEJ', 9), +('S9', '7877', 'DURSEJ', 9), +('S9', '7878', 'DURSEJ', 9), +('S9', '7879', 'DURSEJ', 9), +('S9', '7880', 'DURSEJ', 9), +('S9', '7881', 'DURSEJ', 9), +('S9', '7882', 'DURSEJ', 9), +('S9', '7883', 'DURSEJ', 9), +('S9', '7884', 'DURSEJ', 9), +('S9', '7885', 'DURSEJ', 9), +('S9', '7886', 'DURSEJ', 9), +('S9', '7887', 'DURSEJ', 9), +('S9', '7888', 'DURSEJ', 9), +('S9', '7889', 'DURSEJ', 9), +('S9', '7890', 'DURSEJ', 9), +('S9', '7891', 'DURSEJ', 9), +('S9', '7892', 'DURSEJ', 9), +('S9', '7893', 'DURSEJ', 9), +('S9', '7894', 'DURSEJ', 9), +('S9', '7895', 'DURSEJ', 9), +('S9', '7896', 'DURSEJ', 9), +('S9', '7897', 'DURSEJ', 9), +('S9', '7898', 'DURSEJ', 9), +('S9', '7899', 'DURSEJ', 9), +('S9', '7900', 'DURSEJ', 9), +('S9', '7901', 'DURSEJ', 9), +('S9', '7902', 'DURSEJ', 9), +('S9', '7903', 'DURSEJ', 9), +('S9', '7904', 'DURSEJ', 9), +('S9', '7905', 'DURSEJ', 9), +('S9', '7906', 'DURSEJ', 9), +('S9', '7907', 'DURSEJ', 9), +('S9', '7908', 'DURSEJ', 9), +('S9', '7909', 'DURSEJ', 9), +('S9', '7910', 'DURSEJ', 9), +('S9', '7911', 'DURSEJ', 9), +('S9', '7912', 'DURSEJ', 9), +('S9', '7913', 'DURSEJ', 9), +('S9', '7914', 'DURSEJ', 9), +('S9', '7915', 'DURSEJ', 9), +('S9', '7916', 'DURSEJ', 9), +('S9', '7917', 'DURSEJ', 9), +('S9', '7918', 'DURSEJ', 9), +('S9', '7919', 'DURSEJ', 9), +('S9', '7920', 'DURSEJ', 9), +('S9', '7921', 'DURSEJ', 9), +('S9', '7922', 'DURSEJ', 9), +('S9', '7923', 'DURSEJ', 9), +('S9', '7924', 'DURSEJ', 9), +('S9', '7925', 'DURSEJ', 9), +('S9', '7926', 'DURSEJ', 9), +('S9', '7927', 'DURSEJ', 9), +('S9', '7928', 'DURSEJ', 9), +('S9', '7929', 'DURSEJ', 9), +('S9', '7930', 'DURSEJ', 9), +('S9', '7931', 'DURSEJ', 9), +('S9', '7932', 'DURSEJ', 9), +('S9', '7933', 'DURSEJ', 9), +('S9', '7934', 'DURSEJ', 9), +('S9', '7935', 'DURSEJ', 9), +('S9', '7936', 'DURSEJ', 9), +('S9', '7937', 'DURSEJ', 9), +('S9', '7938', 'DURSEJ', 9), +('S9', '7939', 'DURSEJ', 9), +('S9', '7940', 'DURSEJ', 9), +('S9', '7941', 'DURSEJ', 9), +('S9', '7942', 'DURSEJ', 9), +('S9', '7943', 'DURSEJ', 9), +('S9', '7944', 'DURSEJ', 9), +('S9', '7945', 'DURSEJ', 9), +('S9', '7946', 'DURSEJ', 9), +('S9', '7947', 'DURSEJ', 9), +('S9', '7948', 'DURSEJ', 9), +('S9', '7949', 'DURSEJ', 9), +('S9', '7950', 'DURSEJ', 9), +('S9', '7951', 'DURSEJ', 9), +('S9', '7952', 'DURSEJ', 9), +('S9', '7953', 'DURSEJ', 9), +('S9', '7954', 'DURSEJ', 9), +('S9', '7955', 'DURSEJ', 9), +('S9', '7956', 'DURSEJ', 9), +('S9', '7957', 'DURSEJ', 9), +('S9', '7958', 'DURSEJ', 9), +('S9', '7959', 'DURSEJ', 9), +('S9', '7960', 'DURSEJ', 9), +('S9', '7961', 'DURSEJ', 9), +('S9', '7962', 'DURSEJ', 9), +('S9', '7963', 'DURSEJ', 9), +('S9', '7964', 'DURSEJ', 9), +('S9', '7965', 'DURSEJ', 9), +('S9', '7966', 'DURSEJ', 9), +('S9', '7967', 'DURSEJ', 9), +('S9', '7968', 'DURSEJ', 9), +('S9', '7969', 'DURSEJ', 9), +('S9', '7970', 'DURSEJ', 9), +('S9', '7971', 'DURSEJ', 9), +('S9', '7972', 'DURSEJ', 9), +('S9', '7973', 'DURSEJ', 9), +('S9', '7974', 'DURSEJ', 9), +('S9', '7975', 'DURSEJ', 9), +('S9', '7976', 'DURSEJ', 9), +('S9', '7977', 'DURSEJ', 9), +('S9', '7978', 'DURSEJ', 9), +('S9', '7979', 'DURSEJ', 9), +('S9', '7980', 'DURSEJ', 9), +('S9', '7981', 'DURSEJ', 9), +('S9', '7982', 'DURSEJ', 9), +('S9', '7983', 'DURSEJ', 9), +('S9', '7984', 'DURSEJ', 9), +('S9', '7985', 'DURSEJ', 9), +('S9', '7986', 'DURSEJ', 9), +('S9', '7987', 'DURSEJ', 9), +('S9', '7988', 'DURSEJ', 9), +('S9', '7989', 'DURSEJ', 9), +('S9', '7990', 'DURSEJ', 9), +('S9', '7991', 'DURSEJ', 9), +('S9', '7992', 'DURSEJ', 9), +('S9', '7993', 'DURSEJ', 9), +('S9', '7994', 'DURSEJ', 9), +('S9', '7995', 'DURSEJ', 9), +('S9', '7996', 'DURSEJ', 9), +('S9', '7997', 'DURSEJ', 9), +('S9', '7998', 'DURSEJ', 9), +('S9', '7999', 'DURSEJ', 9), +('S9', '8000', 'DURSEJ', 9), +('S9', '8001', 'DURSEJ', 9), +('S9', '8002', 'DURSEJ', 9), +('S9', '8003', 'DURSEJ', 9), +('S9', '8004', 'DURSEJ', 9), +('S9', '8005', 'DURSEJ', 9), +('S9', '8006', 'DURSEJ', 9), +('S9', '8007', 'DURSEJ', 9), +('S9', '8008', 'DURSEJ', 9), +('S9', '8009', 'DURSEJ', 9), +('S9', '8010', 'DURSEJ', 9), +('S9', '8011', 'DURSEJ', 9), +('S9', '8012', 'DURSEJ', 9), +('S9', '8013', 'DURSEJ', 9), +('S9', '8014', 'DURSEJ', 9), +('S9', '8015', 'DURSEJ', 9), +('S9', '8016', 'DURSEJ', 9), +('S9', '8017', 'DURSEJ', 9), +('S9', '8018', 'DURSEJ', 9), +('S9', '8019', 'DURSEJ', 9), +('S9', '8020', 'DURSEJ', 9), +('S9', '8021', 'DURSEJ', 9), +('S9', '8022', 'DURSEJ', 9), +('S9', '8023', 'DURSEJ', 9), +('S9', '8024', 'DURSEJ', 9), +('S9', '8025', 'DURSEJ', 9), +('S9', '8026', 'DURSEJ', 9), +('S9', '8027', 'DURSEJ', 9), +('S9', '8028', 'DURSEJ', 9), +('S9', '8029', 'DURSEJ', 9), +('S9', '8030', 'DURSEJ', 9), +('S9', '8031', 'DURSEJ', 9), +('S9', '8032', 'DURSEJ', 9), +('S9', '8033', 'DURSEJ', 9), +('S9', '8034', 'DURSEJ', 9), +('S9', '8035', 'DURSEJ', 9), +('S9', '8036', 'DURSEJ', 9), +('S9', '8037', 'DURSEJ', 9), +('S9', '8038', 'DURSEJ', 9), +('S9', '8039', 'DURSEJ', 9), +('S9', '8040', 'DURSEJ', 9), +('S9', '8041', 'DURSEJ', 9), +('S9', '8042', 'DURSEJ', 9), +('S9', '8043', 'DURSEJ', 9), +('S9', '8044', 'DURSEJ', 9), +('S9', '8045', 'DURSEJ', 9), +('S9', '8046', 'DURSEJ', 9), +('S9', '8047', 'DURSEJ', 9), +('S9', '8048', 'DURSEJ', 9), +('S9', '8049', 'DURSEJ', 9), +('S9', '8050', 'DURSEJ', 9), +('S9', '8051', 'DURSEJ', 9), +('S9', '8052', 'DURSEJ', 9), +('S9', '8053', 'DURSEJ', 9), +('S9', '8054', 'DURSEJ', 9), +('S9', '8055', 'DURSEJ', 9), +('S9', '8056', 'DURSEJ', 9), +('S9', '8057', 'DURSEJ', 9), +('S9', '8058', 'DURSEJ', 9), +('S9', '8059', 'DURSEJ', 9), +('S9', '8060', 'DURSEJ', 9), +('S9', '8061', 'DURSEJ', 9), +('S9', '8062', 'DURSEJ', 9), +('S9', '8063', 'DURSEJ', 9), +('S9', '8064', 'DURSEJ', 9), +('S9', '8065', 'DURSEJ', 9), +('S9', '8066', 'DURSEJ', 9), +('S9', '8067', 'DURSEJ', 9), +('S9', '8068', 'DURSEJ', 9), +('S9', '8069', 'DURSEJ', 9), +('S9', '8070', 'DURSEJ', 9), +('S9', '8071', 'DURSEJ', 9), +('S9', '8072', 'DURSEJ', 9), +('S9', '8073', 'DURSEJ', 9), +('S9', '8074', 'DURSEJ', 9), +('S9', '8075', 'DURSEJ', 9), +('S9', '8076', 'DURSEJ', 9), +('S9', '8077', 'DURSEJ', 9), +('S9', '8078', 'DURSEJ', 9), +('S9', '8079', 'DURSEJ', 9), +('S9', '8080', 'DURSEJ', 9), +('S9', '8081', 'DURSEJ', 9), +('S9', '8082', 'DURSEJ', 9), +('S9', '8083', 'DURSEJ', 9), +('S9', '8084', 'DURSEJ', 9), +('S9', '8085', 'DURSEJ', 9), +('S9', '8086', 'DURSEJ', 9), +('S9', '8087', 'DURSEJ', 9), +('S9', '8088', 'DURSEJ', 9), +('S9', '8089', 'DURSEJ', 9), +('S9', '8090', 'DURSEJ', 9), +('S9', '8091', 'DURSEJ', 9), +('S9', '8092', 'DURSEJ', 9), +('S9', '8093', 'DURSEJ', 9), +('S9', '8094', 'DURSEJ', 9), +('S9', '8095', 'DURSEJ', 9), +('S9', '8096', 'DURSEJ', 9), +('S9', '8097', 'DURSEJ', 9), +('S9', '8098', 'DURSEJ', 9), +('S9', '8099', 'DURSEJ', 9), +('S9', '8100', 'DURSEJ', 9), +('S9', '8101', 'DURSEJ', 9), +('S9', '8102', 'DURSEJ', 9), +('S9', '8103', 'DURSEJ', 9), +('S9', '8104', 'DURSEJ', 9), +('S9', '8105', 'DURSEJ', 9), +('S9', '8106', 'DURSEJ', 9), +('S9', '8107', 'DURSEJ', 9), +('S9', '8108', 'DURSEJ', 9), +('S9', '8109', 'DURSEJ', 9), +('S9', '8110', 'DURSEJ', 9), +('S9', '8111', 'DURSEJ', 9), +('S9', '8112', 'DURSEJ', 9), +('S9', '8113', 'DURSEJ', 9), +('S9', '8114', 'DURSEJ', 9), +('S9', '8115', 'DURSEJ', 9), +('S9', '8116', 'DURSEJ', 9), +('S9', '8117', 'DURSEJ', 9), +('S9', '8118', 'DURSEJ', 9), +('S9', '8119', 'DURSEJ', 9), +('S9', '8120', 'DURSEJ', 9), +('S9', '8121', 'DURSEJ', 9), +('S9', '8122', 'DURSEJ', 9), +('S9', '8123', 'DURSEJ', 9), +('S9', '8124', 'DURSEJ', 9), +('S9', '8125', 'DURSEJ', 9), +('S9', '8126', 'DURSEJ', 9), +('S9', '8127', 'DURSEJ', 9), +('S9', '8128', 'DURSEJ', 9), +('S9', '8129', 'DURSEJ', 9), +('S9', '8130', 'DURSEJ', 9), +('S9', '8131', 'DURSEJ', 9), +('S9', '8132', 'DURSEJ', 9), +('S9', '8133', 'DURSEJ', 9), +('S9', '8134', 'DURSEJ', 9), +('S9', '8135', 'DURSEJ', 9), +('S9', '8136', 'DURSEJ', 9), +('S9', '8137', 'DURSEJ', 9), +('S9', '8138', 'DURSEJ', 9), +('S9', '8139', 'DURSEJ', 9), +('S9', '8140', 'DURSEJ', 9), +('S9', '8141', 'DURSEJ', 9), +('S9', '8142', 'DURSEJ', 9), +('S9', '8143', 'DURSEJ', 9), +('S9', '8144', 'DURSEJ', 9), +('S9', '8145', 'DURSEJ', 9), +('S9', '8146', 'DURSEJ', 9), +('S9', '8147', 'DURSEJ', 9), +('S9', '8148', 'DURSEJ', 9), +('S9', '8149', 'DURSEJ', 9), +('S9', '8150', 'DURSEJ', 9), +('S9', '8151', 'DURSEJ', 9), +('S9', '8152', 'DURSEJ', 9), +('S9', '8153', 'DURSEJ', 9), +('S9', '8154', 'DURSEJ', 9), +('S9', '8155', 'DURSEJ', 9), +('S9', '8156', 'DURSEJ', 9), +('S9', '8157', 'DURSEJ', 9), +('S9', '8158', 'DURSEJ', 9), +('S9', '8159', 'DURSEJ', 9), +('S9', '8160', 'DURSEJ', 9), +('S9', '8161', 'DURSEJ', 9), +('S9', '8162', 'DURSEJ', 9), +('S9', '8163', 'DURSEJ', 9), +('S9', '8164', 'DURSEJ', 9), +('S9', '8165', 'DURSEJ', 9), +('S9', '8166', 'DURSEJ', 9), +('S9', '8167', 'DURSEJ', 9), +('S9', '8168', 'DURSEJ', 9), +('S9', '8169', 'DURSEJ', 9), +('S9', '8170', 'DURSEJ', 9), +('S9', '8171', 'DURSEJ', 9), +('S9', '8172', 'DURSEJ', 9), +('S9', '8173', 'DURSEJ', 9), +('S9', '8174', 'DURSEJ', 9), +('S9', '8175', 'DURSEJ', 9), +('S9', '8176', 'DURSEJ', 9), +('S9', '8177', 'DURSEJ', 9), +('S9', '8178', 'DURSEJ', 9), +('S9', '8179', 'DURSEJ', 9), +('S9', '8180', 'DURSEJ', 9), +('S9', '8181', 'DURSEJ', 9), +('S9', '8182', 'DURSEJ', 9), +('S9', '8183', 'DURSEJ', 9), +('S9', '8184', 'DURSEJ', 9), +('S9', '8185', 'DURSEJ', 9), +('S9', '8186', 'DURSEJ', 9), +('S9', '8187', 'DURSEJ', 9), +('S9', '8188', 'DURSEJ', 9), +('S9', '8189', 'DURSEJ', 9), +('S9', '8190', 'DURSEJ', 9), +('S9', '8191', 'DURSEJ', 9), +('S9', '8192', 'DURSEJ', 9), +('S9', '8193', 'DURSEJ', 9), +('S9', '8194', 'DURSEJ', 9), +('S9', '8195', 'DURSEJ', 9), +('S9', '8196', 'DURSEJ', 9), +('S9', '8197', 'DURSEJ', 9), +('S9', '8198', 'DURSEJ', 9), +('S9', '8199', 'DURSEJ', 9), +('S9', '8200', 'DURSEJ', 9), +('S9', '8201', 'DURSEJ', 9), +('S9', '8202', 'DURSEJ', 9), +('S9', '8203', 'DURSEJ', 9), +('S9', '8204', 'DURSEJ', 9), +('S9', '8205', 'DURSEJ', 9), +('S9', '8206', 'DURSEJ', 9), +('S9', '8207', 'DURSEJ', 9), +('S9', '8208', 'DURSEJ', 9), +('S9', '8209', 'DURSEJ', 9), +('S9', '8210', 'DURSEJ', 9), +('S9', '8211', 'DURSEJ', 9), +('S9', '8212', 'DURSEJ', 9), +('S9', '8213', 'DURSEJ', 9), +('S9', '8214', 'DURSEJ', 9), +('S9', '8215', 'DURSEJ', 9), +('S9', '8216', 'DURSEJ', 9), +('S9', '8217', 'DURSEJ', 9), +('S9', '8218', 'DURSEJ', 9), +('S9', '8219', 'DURSEJ', 9), +('S9', '8220', 'DURSEJ', 9), +('S9', '8221', 'DURSEJ', 9), +('S9', '8222', 'DURSEJ', 9), +('S9', '8223', 'DURSEJ', 9), +('S9', '8224', 'DURSEJ', 9), +('S9', '8225', 'DURSEJ', 9), +('S9', '8226', 'DURSEJ', 9), +('S9', '8227', 'DURSEJ', 9), +('S9', '8228', 'DURSEJ', 9), +('S9', '8229', 'DURSEJ', 9), +('S9', '8230', 'DURSEJ', 9), +('S9', '8231', 'DURSEJ', 9), +('S9', '8232', 'DURSEJ', 9), +('S9', '8233', 'DURSEJ', 9), +('S9', '8234', 'DURSEJ', 9), +('S9', '8235', 'DURSEJ', 9), +('S9', '8236', 'DURSEJ', 9), +('S9', '8237', 'DURSEJ', 9), +('S9', '8238', 'DURSEJ', 9), +('S9', '8239', 'DURSEJ', 9), +('S9', '8240', 'DURSEJ', 9), +('S9', '8241', 'DURSEJ', 9), +('S9', '8242', 'DURSEJ', 9), +('S9', '8243', 'DURSEJ', 9), +('S9', '8244', 'DURSEJ', 9), +('S9', '8245', 'DURSEJ', 9), +('S9', '8246', 'DURSEJ', 9), +('S9', '8247', 'DURSEJ', 9), +('S9', '8248', 'DURSEJ', 9), +('S9', '8249', 'DURSEJ', 9), +('S9', '8250', 'DURSEJ', 9), +('S9', '8251', 'DURSEJ', 9), +('S9', '8252', 'DURSEJ', 9), +('S9', '8253', 'DURSEJ', 9), +('S9', '8254', 'DURSEJ', 9), +('S9', '8255', 'DURSEJ', 9), +('S9', '8256', 'DURSEJ', 9), +('S9', '8257', 'DURSEJ', 9), +('S9', '8258', 'DURSEJ', 9), +('S9', '8259', 'DURSEJ', 9), +('S9', '8260', 'DURSEJ', 9), +('S9', '8261', 'DURSEJ', 9), +('S9', '8262', 'DURSEJ', 9), +('S9', '8263', 'DURSEJ', 9), +('S9', '8264', 'DURSEJ', 9), +('S9', '8265', 'DURSEJ', 9), +('S9', '8266', 'DURSEJ', 9), +('S9', '8267', 'DURSEJ', 9), +('S9', '8268', 'DURSEJ', 9), +('S9', '8269', 'DURSEJ', 9), +('S9', '8270', 'DURSEJ', 9), +('S9', '8271', 'DURSEJ', 9), +('S9', '8272', 'DURSEJ', 9), +('S9', '8273', 'DURSEJ', 9), +('S9', '8274', 'DURSEJ', 9), +('S9', '8275', 'DURSEJ', 9), +('S9', '8276', 'DURSEJ', 9), +('S9', '8277', 'DURSEJ', 9), +('S9', '8278', 'DURSEJ', 9), +('S9', '8279', 'DURSEJ', 9), +('S9', '8280', 'DURSEJ', 9), +('S9', '8281', 'DURSEJ', 9), +('S9', '8282', 'DURSEJ', 9), +('S9', '8283', 'DURSEJ', 9), +('S9', '8284', 'DURSEJ', 9), +('S9', '8285', 'DURSEJ', 9), +('S9', '8286', 'DURSEJ', 9), +('S9', '8287', 'DURSEJ', 9), +('S9', '8288', 'DURSEJ', 9), +('S9', '8289', 'DURSEJ', 9), +('S9', '8290', 'DURSEJ', 9), +('S9', '8291', 'DURSEJ', 9), +('S9', '8292', 'DURSEJ', 9), +('S9', '8293', 'DURSEJ', 9), +('S9', '8294', 'DURSEJ', 9), +('S9', '8295', 'DURSEJ', 9), +('S9', '8296', 'DURSEJ', 9), +('S9', '8297', 'DURSEJ', 9), +('S9', '8298', 'DURSEJ', 9), +('S9', '8299', 'DURSEJ', 9), +('S9', '8300', 'DURSEJ', 9), +('S9', '8301', 'DURSEJ', 9), +('S9', '8302', 'DURSEJ', 9), +('S9', '8303', 'DURSEJ', 9), +('S9', '8304', 'DURSEJ', 9), +('S9', '8305', 'DURSEJ', 9), +('S9', '8306', 'DURSEJ', 9), +('S9', '8307', 'DURSEJ', 9), +('S9', '8308', 'DURSEJ', 9), +('S9', '8309', 'DURSEJ', 9), +('S9', '8310', 'DURSEJ', 9), +('S9', '8311', 'DURSEJ', 9), +('S9', '8312', 'DURSEJ', 9), +('S9', '8313', 'DURSEJ', 9), +('S9', '8314', 'DURSEJ', 9), +('S9', '8315', 'DURSEJ', 9), +('S9', '8316', 'DURSEJ', 9), +('S9', '8317', 'DURSEJ', 9), +('S9', '8318', 'DURSEJ', 9), +('S9', '8319', 'DURSEJ', 9), +('S9', '8320', 'DURSEJ', 9), +('S9', '8321', 'DURSEJ', 9), +('S9', '8322', 'DURSEJ', 9), +('S9', '8323', 'DURSEJ', 9), +('S9', '8324', 'DURSEJ', 9), +('S9', '8325', 'DURSEJ', 9), +('S9', '8326', 'DURSEJ', 9), +('S9', '8327', 'DURSEJ', 9), +('S9', '8328', 'DURSEJ', 9), +('S9', '8329', 'DURSEJ', 9), +('S9', '8330', 'DURSEJ', 9), +('S9', '8331', 'DURSEJ', 9), +('S9', '8332', 'DURSEJ', 9), +('S9', '8333', 'DURSEJ', 9), +('S9', '8334', 'DURSEJ', 9), +('S9', '8335', 'DURSEJ', 9), +('S9', '8336', 'DURSEJ', 9), +('S9', '8337', 'DURSEJ', 9), +('S9', '8338', 'DURSEJ', 9), +('S9', '8339', 'DURSEJ', 9), +('S9', '8340', 'DURSEJ', 9), +('S9', '8341', 'DURSEJ', 9), +('S9', '8342', 'DURSEJ', 9), +('S9', '8343', 'DURSEJ', 9), +('S9', '8344', 'DURSEJ', 9), +('S9', '8345', 'DURSEJ', 9), +('S9', '8346', 'DURSEJ', 9), +('S9', '8347', 'DURSEJ', 9), +('S9', '8348', 'DURSEJ', 9), +('S9', '8349', 'DURSEJ', 9), +('S9', '8350', 'DURSEJ', 9), +('S9', '8351', 'DURSEJ', 9), +('S9', '8352', 'DURSEJ', 9), +('S9', '8353', 'DURSEJ', 9), +('S9', '8354', 'DURSEJ', 9), +('S9', '8355', 'DURSEJ', 9), +('S9', '8356', 'DURSEJ', 9), +('S9', '8357', 'DURSEJ', 9), +('S9', '8358', 'DURSEJ', 9), +('S9', '8359', 'DURSEJ', 9), +('S9', '8360', 'DURSEJ', 9), +('S9', '8361', 'DURSEJ', 9), +('S9', '8362', 'DURSEJ', 9), +('S9', '8363', 'DURSEJ', 9), +('S9', '8364', 'DURSEJ', 9), +('S9', '8365', 'DURSEJ', 9), +('S9', '8366', 'DURSEJ', 9), +('S9', '8367', 'DURSEJ', 9), +('S9', '8368', 'DURSEJ', 9), +('S9', '8369', 'DURSEJ', 9), +('S9', '8370', 'DURSEJ', 9), +('S9', '8371', 'DURSEJ', 9), +('S9', '8372', 'DURSEJ', 9), +('S9', '8373', 'DURSEJ', 9), +('S9', '8374', 'DURSEJ', 9), +('S9', '8375', 'DURSEJ', 9), +('S9', '8376', 'DURSEJ', 9), +('S9', '8377', 'DURSEJ', 9), +('S9', '8378', 'DURSEJ', 9), +('S9', '8379', 'DURSEJ', 9), +('S9', '8380', 'DURSEJ', 9), +('S9', '8381', 'DURSEJ', 9), +('S9', '8382', 'DURSEJ', 9), +('S9', '8383', 'DURSEJ', 9), +('S9', '8384', 'DURSEJ', 9), +('S9', '8385', 'DURSEJ', 9), +('S9', '8386', 'DURSEJ', 9), +('S9', '8387', 'DURSEJ', 9), +('S9', '8388', 'DURSEJ', 9), +('S9', '8389', 'DURSEJ', 9), +('S9', '8390', 'DURSEJ', 9), +('S9', '8391', 'DURSEJ', 9), +('S9', '8392', 'DURSEJ', 9), +('S9', '8393', 'DURSEJ', 9), +('S9', '8394', 'DURSEJ', 9), +('S9', '8395', 'DURSEJ', 9), +('S9', '8396', 'DURSEJ', 9), +('S9', '8397', 'DURSEJ', 9), +('S9', '8398', 'DURSEJ', 9), +('S9', '8399', 'DURSEJ', 9), +('S9', '8400', 'DURSEJ', 9), +('S9', '8401', 'DURSEJ', 9), +('S9', '8402', 'DURSEJ', 9), +('S9', '8403', 'DURSEJ', 9), +('S9', '8404', 'DURSEJ', 9), +('S9', '8405', 'DURSEJ', 9), +('S9', '8406', 'DURSEJ', 9), +('S9', '8407', 'DURSEJ', 9), +('S9', '8408', 'DURSEJ', 9), +('S9', '8409', 'DURSEJ', 9), +('S9', '8410', 'DURSEJ', 9), +('S9', '8411', 'DURSEJ', 9), +('S9', '8412', 'DURSEJ', 9), +('S9', '8413', 'DURSEJ', 9), +('S9', '8414', 'DURSEJ', 9), +('S9', '8415', 'DURSEJ', 9), +('S9', '8416', 'DURSEJ', 9), +('S9', '8417', 'DURSEJ', 9), +('S9', '8418', 'DURSEJ', 9), +('S9', '8419', 'DURSEJ', 9), +('S9', '8420', 'DURSEJ', 9), +('S9', '8421', 'DURSEJ', 9), +('S9', '8422', 'DURSEJ', 9), +('S9', '8423', 'DURSEJ', 9), +('S9', '8424', 'DURSEJ', 9), +('S9', '8425', 'DURSEJ', 9), +('S9', '8426', 'DURSEJ', 9), +('S9', '8427', 'DURSEJ', 9), +('S9', '8428', 'DURSEJ', 9), +('S9', '8429', 'DURSEJ', 9), +('S9', '8430', 'DURSEJ', 9), +('S9', '8431', 'DURSEJ', 9), +('S9', '8432', 'DURSEJ', 9), +('S9', '8433', 'DURSEJ', 9), +('S9', '8434', 'DURSEJ', 9), +('S9', '8435', 'DURSEJ', 9), +('S9', '8436', 'DURSEJ', 9), +('S9', '8437', 'DURSEJ', 9), +('S9', '8438', 'DURSEJ', 9), +('S9', '8439', 'DURSEJ', 9), +('S9', '8440', 'DURSEJ', 9), +('S9', '8441', 'DURSEJ', 9), +('S9', '8442', 'DURSEJ', 9), +('S9', '8443', 'DURSEJ', 9), +('S9', '8444', 'DURSEJ', 9), +('S9', '8445', 'DURSEJ', 9), +('S9', '8446', 'DURSEJ', 9), +('S9', '8447', 'DURSEJ', 9), +('S9', '8448', 'DURSEJ', 9), +('S9', '8449', 'DURSEJ', 9), +('S9', '8450', 'DURSEJ', 9), +('S9', '8451', 'DURSEJ', 9), +('S9', '8452', 'DURSEJ', 9), +('S9', '8453', 'DURSEJ', 9), +('S9', '8454', 'DURSEJ', 9), +('S9', '8455', 'DURSEJ', 9), +('S9', '8456', 'DURSEJ', 9), +('S9', '8457', 'DURSEJ', 9), +('S9', '8458', 'DURSEJ', 9), +('S9', '8459', 'DURSEJ', 9), +('S9', '8460', 'DURSEJ', 9), +('S9', '8461', 'DURSEJ', 9), +('S9', '8462', 'DURSEJ', 9), +('S9', '8463', 'DURSEJ', 9), +('S9', '8464', 'DURSEJ', 9), +('S9', '8465', 'DURSEJ', 9), +('S9', '8466', 'DURSEJ', 9), +('S9', '8467', 'DURSEJ', 9), +('S9', '8468', 'DURSEJ', 9), +('S9', '8469', 'DURSEJ', 9), +('S9', '8470', 'DURSEJ', 9), +('S9', '8471', 'DURSEJ', 9), +('S9', '8472', 'DURSEJ', 9), +('S9', '8473', 'DURSEJ', 9), +('S9', '8474', 'DURSEJ', 9), +('S9', '8475', 'DURSEJ', 9), +('S9', '8476', 'DURSEJ', 9), +('S9', '8477', 'DURSEJ', 9), +('S9', '8478', 'DURSEJ', 9), +('S9', '8479', 'DURSEJ', 9), +('S9', '8480', 'DURSEJ', 9), +('S9', '8481', 'DURSEJ', 9), +('S9', '8482', 'DURSEJ', 9), +('S9', '8483', 'DURSEJ', 9), +('S9', '8484', 'DURSEJ', 9), +('S9', '8485', 'DURSEJ', 9), +('S9', '8486', 'DURSEJ', 9), +('S9', '8487', 'DURSEJ', 9), +('S9', '8488', 'DURSEJ', 9), +('S9', '8489', 'DURSEJ', 9), +('S9', '8490', 'DURSEJ', 9), +('S9', '8491', 'DURSEJ', 9), +('S9', '8492', 'DURSEJ', 9), +('S9', '8493', 'DURSEJ', 9), +('S9', '8494', 'DURSEJ', 9), +('S9', '8495', 'DURSEJ', 9), +('S9', '8496', 'DURSEJ', 9), +('S9', '8497', 'DURSEJ', 9), +('S9', '8498', 'DURSEJ', 9), +('S9', '8499', 'DURSEJ', 9), +('S9', '8500', 'DURSEJ', 9), +('S9', '8501', 'DURSEJ', 9), +('S9', '8502', 'DURSEJ', 9), +('S9', '8503', 'DURSEJ', 9), +('S9', '8504', 'DURSEJ', 9), +('S9', '8505', 'DURSEJ', 9), +('S9', '8506', 'DURSEJ', 9), +('S9', '8507', 'DURSEJ', 9), +('S9', '8508', 'DURSEJ', 9), +('S9', '8509', 'DURSEJ', 9), +('S9', '8510', 'DURSEJ', 9), +('S9', '8511', 'DURSEJ', 9), +('S9', '8512', 'DURSEJ', 9), +('S9', '8513', 'DURSEJ', 9), +('S9', '8514', 'DURSEJ', 9), +('S9', '8515', 'DURSEJ', 9), +('S9', '8516', 'DURSEJ', 9), +('S9', '8517', 'DURSEJ', 9), +('S9', '8518', 'DURSEJ', 9), +('S9', '8519', 'DURSEJ', 9), +('S9', '8520', 'DURSEJ', 9), +('S9', '8521', 'DURSEJ', 9), +('S9', '8522', 'DURSEJ', 9), +('S9', '8523', 'DURSEJ', 9), +('S9', '8524', 'DURSEJ', 9), +('S9', '8525', 'DURSEJ', 9), +('S9', '8526', 'DURSEJ', 9), +('S9', '8527', 'DURSEJ', 9), +('S9', '8528', 'DURSEJ', 9), +('S9', '8529', 'DURSEJ', 9), +('S9', '8530', 'DURSEJ', 9), +('S9', '8531', 'DURSEJ', 9), +('S9', '8532', 'DURSEJ', 9), +('S9', '8533', 'DURSEJ', 9), +('S9', '8534', 'DURSEJ', 9), +('S9', '8535', 'DURSEJ', 9), +('S9', '8536', 'DURSEJ', 9), +('S9', '8537', 'DURSEJ', 9), +('S9', '8538', 'DURSEJ', 9), +('S9', '8539', 'DURSEJ', 9), +('S9', '8540', 'DURSEJ', 9), +('S9', '8541', 'DURSEJ', 9), +('S9', '8542', 'DURSEJ', 9), +('S9', '8543', 'DURSEJ', 9), +('S9', '8544', 'DURSEJ', 9), +('S9', '8545', 'DURSEJ', 9), +('S9', '8546', 'DURSEJ', 9), +('S9', '8547', 'DURSEJ', 9), +('S9', '8548', 'DURSEJ', 9), +('S9', '8549', 'DURSEJ', 9), +('S9', '8550', 'DURSEJ', 9), +('S9', '8551', 'DURSEJ', 9), +('S9', '8552', 'DURSEJ', 9), +('S9', '8553', 'DURSEJ', 9), +('S9', '8554', 'DURSEJ', 9), +('S9', '8555', 'DURSEJ', 9), +('S9', '8556', 'DURSEJ', 9), +('S9', '8557', 'DURSEJ', 9), +('S9', '8558', 'DURSEJ', 9), +('S9', '8559', 'DURSEJ', 9), +('S9', '8560', 'DURSEJ', 9), +('S9', '8561', 'DURSEJ', 9), +('S9', '8562', 'DURSEJ', 9), +('S9', '8563', 'DURSEJ', 9), +('S9', '8564', 'DURSEJ', 9), +('S9', '8565', 'DURSEJ', 9), +('S9', '8566', 'DURSEJ', 9), +('S9', '8567', 'DURSEJ', 9), +('S9', '8568', 'DURSEJ', 9), +('S9', '8569', 'DURSEJ', 9), +('S9', '8570', 'DURSEJ', 9), +('S9', '8571', 'DURSEJ', 9), +('S9', '8572', 'DURSEJ', 9), +('S9', '8573', 'DURSEJ', 9), +('S9', '8574', 'DURSEJ', 9), +('S9', '8575', 'DURSEJ', 9), +('S9', '8576', 'DURSEJ', 9), +('S9', '8577', 'DURSEJ', 9), +('S9', '8578', 'DURSEJ', 9), +('S9', '8579', 'DURSEJ', 9), +('S9', '8580', 'DURSEJ', 9), +('S9', '8581', 'DURSEJ', 9), +('S9', '8582', 'DURSEJ', 9), +('S9', '8583', 'DURSEJ', 9), +('S9', '8584', 'DURSEJ', 9), +('S9', '8585', 'DURSEJ', 9), +('S9', '8586', 'DURSEJ', 9), +('S9', '8587', 'DURSEJ', 9), +('S9', '8588', 'DURSEJ', 9), +('S9', '8589', 'DURSEJ', 9), +('S9', '8590', 'DURSEJ', 9), +('S9', '8591', 'DURSEJ', 9), +('S9', '8592', 'DURSEJ', 9), +('S9', '8593', 'DURSEJ', 9), +('S9', '8594', 'DURSEJ', 9), +('S9', '8595', 'DURSEJ', 9), +('S9', '8596', 'DURSEJ', 9), +('S9', '8597', 'DURSEJ', 9), +('S9', '8598', 'DURSEJ', 9), +('S9', '8599', 'DURSEJ', 9), +('S9', '8600', 'DURSEJ', 9), +('S9', '8601', 'DURSEJ', 9), +('S9', '8602', 'DURSEJ', 9), +('S9', '8603', 'DURSEJ', 9), +('S9', '8604', 'DURSEJ', 9), +('S9', '8605', 'DURSEJ', 9), +('S9', '8606', 'DURSEJ', 9), +('S9', '8607', 'DURSEJ', 9), +('S9', '8608', 'DURSEJ', 9), +('S9', '8609', 'DURSEJ', 9), +('S9', '8610', 'DURSEJ', 9), +('S9', '8611', 'DURSEJ', 9), +('S9', '8612', 'DURSEJ', 9), +('S9', '8613', 'DURSEJ', 9), +('S9', '8614', 'DURSEJ', 9), +('S9', '8615', 'DURSEJ', 9), +('S9', '8616', 'DURSEJ', 9), +('S9', '8617', 'DURSEJ', 9), +('S9', '8618', 'DURSEJ', 9), +('S9', '8619', 'DURSEJ', 9), +('S9', '8620', 'DURSEJ', 9), +('S9', '8621', 'DURSEJ', 9), +('S9', '8622', 'DURSEJ', 9), +('S9', '8623', 'DURSEJ', 9), +('S9', '8624', 'DURSEJ', 9), +('S9', '8625', 'DURSEJ', 9), +('S9', '8626', 'DURSEJ', 9), +('S9', '8627', 'DURSEJ', 9), +('S9', '8628', 'DURSEJ', 9), +('S9', '8629', 'DURSEJ', 9), +('S9', '8630', 'DURSEJ', 9), +('S9', '8631', 'DURSEJ', 9), +('S9', '8632', 'DURSEJ', 9), +('S9', '8633', 'DURSEJ', 9), +('S9', '8634', 'DURSEJ', 9), +('S9', '8635', 'DURSEJ', 9), +('S9', '8636', 'DURSEJ', 9), +('S9', '8637', 'DURSEJ', 9), +('S9', '8638', 'DURSEJ', 9), +('S9', '8639', 'DURSEJ', 9), +('S9', '8640', 'DURSEJ', 9), +('S9', '8641', 'DURSEJ', 9), +('S9', '8642', 'DURSEJ', 9), +('S9', '8643', 'DURSEJ', 9), +('S9', '8644', 'DURSEJ', 9), +('S9', '8645', 'DURSEJ', 9), +('S9', '8646', 'DURSEJ', 9), +('S9', '8647', 'DURSEJ', 9), +('S9', '8648', 'DURSEJ', 9), +('S9', '8649', 'DURSEJ', 9), +('S9', '8650', 'DURSEJ', 9), +('S9', '8651', 'DURSEJ', 9), +('S9', '8652', 'DURSEJ', 9), +('S9', '8653', 'DURSEJ', 9), +('S9', '8654', 'DURSEJ', 9), +('S9', '8655', 'DURSEJ', 9), +('S9', '8656', 'DURSEJ', 9), +('S9', '8657', 'DURSEJ', 9), +('S9', '8658', 'DURSEJ', 9), +('S9', '8659', 'DURSEJ', 9), +('S9', '8660', 'DURSEJ', 9), +('S9', '8661', 'DURSEJ', 9), +('S9', '8662', 'DURSEJ', 9), +('S9', '8663', 'DURSEJ', 9), +('S9', '8664', 'DURSEJ', 9), +('S9', '8665', 'DURSEJ', 9), +('S9', '8666', 'DURSEJ', 9), +('S9', '8667', 'DURSEJ', 9), +('S9', '8668', 'DURSEJ', 9), +('S9', '8669', 'DURSEJ', 9), +('S9', '8670', 'DURSEJ', 9), +('S9', '8671', 'DURSEJ', 9), +('S9', '8672', 'DURSEJ', 9), +('S9', '8673', 'DURSEJ', 9), +('S9', '8674', 'DURSEJ', 9), +('S9', '8675', 'DURSEJ', 9), +('S9', '8676', 'DURSEJ', 9), +('S9', '8677', 'DURSEJ', 9), +('S9', '8678', 'DURSEJ', 9), +('S9', '8679', 'DURSEJ', 9), +('S9', '8680', 'DURSEJ', 9), +('S9', '8681', 'DURSEJ', 9), +('S9', '8682', 'DURSEJ', 9), +('S9', '8683', 'DURSEJ', 9), +('S9', '8684', 'DURSEJ', 9), +('S9', '8685', 'DURSEJ', 9), +('S9', '8686', 'DURSEJ', 9), +('S9', '8687', 'DURSEJ', 9), +('S9', '8688', 'DURSEJ', 9), +('S9', '8689', 'DURSEJ', 9), +('S9', '8690', 'DURSEJ', 9), +('S9', '8691', 'DURSEJ', 9), +('S9', '8692', 'DURSEJ', 9), +('S9', '8693', 'DURSEJ', 9), +('S9', '8694', 'DURSEJ', 9), +('S9', '8695', 'DURSEJ', 9), +('S9', '8696', 'DURSEJ', 9), +('S9', '8697', 'DURSEJ', 9), +('S9', '8698', 'DURSEJ', 9), +('S9', '8699', 'DURSEJ', 9), +('S9', '8700', 'DURSEJ', 9), +('S9', '8701', 'DURSEJ', 9), +('S9', '8702', 'DURSEJ', 9), +('S9', '8703', 'DURSEJ', 9), +('S9', '8704', 'DURSEJ', 9), +('S9', '8705', 'DURSEJ', 9), +('S9', '8706', 'DURSEJ', 9), +('S9', '8707', 'DURSEJ', 9), +('S9', '8708', 'DURSEJ', 9), +('S9', '8709', 'DURSEJ', 9), +('S9', '8710', 'DURSEJ', 9), +('S9', '8711', 'DURSEJ', 9), +('S9', '8712', 'DURSEJ', 9), +('S9', '8713', 'DURSEJ', 9), +('S9', '8714', 'DURSEJ', 9), +('S9', '8715', 'DURSEJ', 9), +('S9', '8716', 'DURSEJ', 9), +('S9', '8717', 'DURSEJ', 9), +('S9', '8718', 'DURSEJ', 9), +('S9', '8719', 'DURSEJ', 9), +('S9', '8720', 'DURSEJ', 9), +('S9', '8721', 'DURSEJ', 9), +('S9', '8722', 'DURSEJ', 9), +('S9', '8723', 'DURSEJ', 9), +('S9', '8724', 'DURSEJ', 9), +('S9', '8725', 'DURSEJ', 9), +('S9', '8726', 'DURSEJ', 9), +('S9', '8727', 'DURSEJ', 9), +('S9', '8728', 'DURSEJ', 9), +('S9', '8729', 'DURSEJ', 9), +('S9', '8730', 'DURSEJ', 9), +('S9', '8731', 'DURSEJ', 9), +('S9', '8732', 'DURSEJ', 9), +('S9', '8733', 'DURSEJ', 9), +('S9', '8734', 'DURSEJ', 9), +('S9', '8735', 'DURSEJ', 9), +('S9', '8736', 'DURSEJ', 9), +('S9', '8737', 'DURSEJ', 9), +('S9', '8738', 'DURSEJ', 9), +('S9', '8739', 'DURSEJ', 9), +('S9', '8740', 'DURSEJ', 9), +('S9', '8741', 'DURSEJ', 9), +('S9', '8742', 'DURSEJ', 9), +('S9', '8743', 'DURSEJ', 9), +('S9', '8744', 'DURSEJ', 9), +('S9', '8745', 'DURSEJ', 9), +('S9', '8746', 'DURSEJ', 9), +('S9', '8747', 'DURSEJ', 9), +('S9', '8748', 'DURSEJ', 9), +('S9', '8749', 'DURSEJ', 9), +('S9', '8750', 'DURSEJ', 9), +('S9', '8751', 'DURSEJ', 9), +('S9', '8752', 'DURSEJ', 9), +('S9', '8753', 'DURSEJ', 9), +('S9', '8754', 'DURSEJ', 9), +('S9', '8755', 'DURSEJ', 9), +('S9', '8756', 'DURSEJ', 9), +('S9', '8757', 'DURSEJ', 9), +('S9', '8758', 'DURSEJ', 9), +('S9', '8759', 'DURSEJ', 9), +('S9', '8760', 'DURSEJ', 9), +('S9', '8761', 'DURSEJ', 9), +('S9', '8762', 'DURSEJ', 9), +('S9', '8763', 'DURSEJ', 9), +('S9', '8764', 'DURSEJ', 9), +('S9', '8765', 'DURSEJ', 9), +('S9', '8766', 'DURSEJ', 9), +('S9', '8767', 'DURSEJ', 9), +('S9', '8768', 'DURSEJ', 9), +('S9', '8769', 'DURSEJ', 9), +('S9', '8770', 'DURSEJ', 9), +('S9', '8771', 'DURSEJ', 9), +('S9', '8772', 'DURSEJ', 9), +('S9', '8773', 'DURSEJ', 9), +('S9', '8774', 'DURSEJ', 9), +('S9', '8775', 'DURSEJ', 9), +('S9', '8776', 'DURSEJ', 9), +('S9', '8777', 'DURSEJ', 9), +('S9', '8778', 'DURSEJ', 9), +('S9', '8779', 'DURSEJ', 9), +('S9', '8780', 'DURSEJ', 9), +('S9', '8781', 'DURSEJ', 9), +('S9', '8782', 'DURSEJ', 9), +('S9', '8783', 'DURSEJ', 9), +('S9', '8784', 'DURSEJ', 9), +('S9', '8785', 'DURSEJ', 9), +('S9', '8786', 'DURSEJ', 9), +('S9', '8787', 'DURSEJ', 9), +('S9', '8788', 'DURSEJ', 9), +('S9', '8789', 'DURSEJ', 9), +('S9', '8790', 'DURSEJ', 9), +('S9', '8791', 'DURSEJ', 9), +('S9', '8792', 'DURSEJ', 9), +('S9', '8793', 'DURSEJ', 9), +('S9', '8794', 'DURSEJ', 9), +('S9', '8795', 'DURSEJ', 9), +('S9', '8796', 'DURSEJ', 9), +('S9', '8797', 'DURSEJ', 9), +('S9', '8798', 'DURSEJ', 9), +('S9', '8799', 'DURSEJ', 9), +('S9', '8800', 'DURSEJ', 9), +('S9', '8801', 'DURSEJ', 9), +('S9', '8802', 'DURSEJ', 9), +('S9', '8803', 'DURSEJ', 9), +('S9', '8804', 'DURSEJ', 9), +('S9', '8805', 'DURSEJ', 9), +('S9', '8806', 'DURSEJ', 9), +('S9', '8807', 'DURSEJ', 9), +('S9', '8808', 'DURSEJ', 9), +('S9', '8809', 'DURSEJ', 9), +('S9', '8810', 'DURSEJ', 9), +('S9', '8811', 'DURSEJ', 9), +('S9', '8812', 'DURSEJ', 9), +('S9', '8813', 'DURSEJ', 9), +('S9', '8814', 'DURSEJ', 9), +('S9', '8815', 'DURSEJ', 9), +('S9', '8816', 'DURSEJ', 9), +('S9', '8817', 'DURSEJ', 9), +('S9', '8818', 'DURSEJ', 9), +('S9', '8819', 'DURSEJ', 9), +('S9', '8820', 'DURSEJ', 9), +('S9', '8821', 'DURSEJ', 9), +('S9', '8822', 'DURSEJ', 9), +('S9', '8823', 'DURSEJ', 9), +('S9', '8824', 'DURSEJ', 9), +('S9', '8825', 'DURSEJ', 9), +('S9', '8826', 'DURSEJ', 9), +('S9', '8827', 'DURSEJ', 9), +('S9', '8828', 'DURSEJ', 9), +('S9', '8829', 'DURSEJ', 9), +('S9', '8830', 'DURSEJ', 9), +('S9', '8831', 'DURSEJ', 9), +('S9', '8832', 'DURSEJ', 9), +('S9', '8833', 'DURSEJ', 9), +('S9', '8834', 'DURSEJ', 9), +('S9', '8835', 'DURSEJ', 9), +('S9', '8836', 'DURSEJ', 9), +('S9', '8837', 'DURSEJ', 9), +('S9', '8838', 'DURSEJ', 9), +('S9', '8839', 'DURSEJ', 9), +('S9', '8840', 'DURSEJ', 9), +('S9', '8841', 'DURSEJ', 9), +('S9', '8842', 'DURSEJ', 9), +('S9', '8843', 'DURSEJ', 9), +('S9', '8844', 'DURSEJ', 9), +('S9', '8845', 'DURSEJ', 9), +('S9', '8846', 'DURSEJ', 9), +('S9', '8847', 'DURSEJ', 9), +('S9', '8848', 'DURSEJ', 9), +('S9', '8849', 'DURSEJ', 9), +('S9', '8850', 'DURSEJ', 9), +('S9', '8851', 'DURSEJ', 9), +('S9', '8852', 'DURSEJ', 9), +('S9', '8853', 'DURSEJ', 9), +('S9', '8854', 'DURSEJ', 9), +('S9', '8855', 'DURSEJ', 9), +('S9', '8856', 'DURSEJ', 9), +('S9', '8857', 'DURSEJ', 9), +('S9', '8858', 'DURSEJ', 9), +('S9', '8859', 'DURSEJ', 9), +('S9', '8860', 'DURSEJ', 9), +('S9', '8861', 'DURSEJ', 9), +('S9', '8862', 'DURSEJ', 9), +('S9', '8863', 'DURSEJ', 9), +('S9', '8864', 'DURSEJ', 9), +('S9', '8865', 'DURSEJ', 9), +('S9', '8866', 'DURSEJ', 9), +('S9', '8867', 'DURSEJ', 9), +('S9', '8868', 'DURSEJ', 9), +('S9', '8869', 'DURSEJ', 9), +('S9', '8870', 'DURSEJ', 9), +('S9', '8871', 'DURSEJ', 9), +('S9', '8872', 'DURSEJ', 9), +('S9', '8873', 'DURSEJ', 9), +('S9', '8874', 'DURSEJ', 9), +('S9', '8875', 'DURSEJ', 9), +('S9', '8876', 'DURSEJ', 9), +('S9', '8877', 'DURSEJ', 9), +('S9', '8878', 'DURSEJ', 9), +('S9', '8879', 'DURSEJ', 9), +('S9', '8880', 'DURSEJ', 9), +('S9', '8881', 'DURSEJ', 9), +('S9', '8882', 'DURSEJ', 9), +('S9', '8883', 'DURSEJ', 9), +('S9', '8884', 'DURSEJ', 9), +('S9', '8885', 'DURSEJ', 9), +('S9', '8886', 'DURSEJ', 9), +('S9', '8887', 'DURSEJ', 9), +('S9', '8888', 'DURSEJ', 9), +('S9', '8889', 'DURSEJ', 9), +('S9', '8890', 'DURSEJ', 9), +('S9', '8891', 'DURSEJ', 9), +('S9', '8892', 'DURSEJ', 9), +('S9', '8893', 'DURSEJ', 9), +('S9', '8894', 'DURSEJ', 9), +('S9', '8895', 'DURSEJ', 9), +('S9', '8896', 'DURSEJ', 9), +('S9', '8897', 'DURSEJ', 9), +('S9', '8898', 'DURSEJ', 9), +('S9', '8899', 'DURSEJ', 9), +('S9', '8900', 'DURSEJ', 9), +('S9', '8901', 'DURSEJ', 9), +('S9', '8902', 'DURSEJ', 9), +('S9', '8903', 'DURSEJ', 9), +('S9', '8904', 'DURSEJ', 9), +('S9', '8905', 'DURSEJ', 9), +('S9', '8906', 'DURSEJ', 9), +('S9', '8907', 'DURSEJ', 9), +('S9', '8908', 'DURSEJ', 9), +('S9', '8909', 'DURSEJ', 9), +('S9', '8910', 'DURSEJ', 9), +('S9', '8911', 'DURSEJ', 9), +('S9', '8912', 'DURSEJ', 9), +('S9', '8913', 'DURSEJ', 9), +('S9', '8914', 'DURSEJ', 9), +('S9', '8915', 'DURSEJ', 9), +('S9', '8916', 'DURSEJ', 9), +('S9', '8917', 'DURSEJ', 9), +('S9', '8918', 'DURSEJ', 9), +('S9', '8919', 'DURSEJ', 9), +('S9', '8920', 'DURSEJ', 9), +('S9', '8921', 'DURSEJ', 9), +('S9', '8922', 'DURSEJ', 9), +('S9', '8923', 'DURSEJ', 9), +('S9', '8924', 'DURSEJ', 9), +('S9', '8925', 'DURSEJ', 9), +('S9', '8926', 'DURSEJ', 9), +('S9', '8927', 'DURSEJ', 9), +('S9', '8928', 'DURSEJ', 9), +('S9', '8929', 'DURSEJ', 9), +('S9', '8930', 'DURSEJ', 9), +('S9', '8931', 'DURSEJ', 9), +('S9', '8932', 'DURSEJ', 9), +('S9', '8933', 'DURSEJ', 9), +('S9', '8934', 'DURSEJ', 9), +('S9', '8935', 'DURSEJ', 9), +('S9', '8936', 'DURSEJ', 9), +('S9', '8937', 'DURSEJ', 9), +('S9', '8938', 'DURSEJ', 9), +('S9', '8939', 'DURSEJ', 9), +('S9', '8940', 'DURSEJ', 9), +('S9', '8941', 'DURSEJ', 9), +('S9', '8942', 'DURSEJ', 9), +('S9', '8943', 'DURSEJ', 9), +('S9', '8944', 'DURSEJ', 9), +('S9', '8945', 'DURSEJ', 9), +('S9', '8946', 'DURSEJ', 9), +('S9', '8947', 'DURSEJ', 9), +('S9', '8948', 'DURSEJ', 9), +('S9', '8949', 'DURSEJ', 9), +('S9', '8950', 'DURSEJ', 9), +('S9', '8951', 'DURSEJ', 9), +('S9', '8952', 'DURSEJ', 9), +('S9', '8953', 'DURSEJ', 9), +('S9', '8954', 'DURSEJ', 9), +('S9', '8955', 'DURSEJ', 9), +('S9', '8956', 'DURSEJ', 9), +('S9', '8957', 'DURSEJ', 9), +('S9', '8958', 'DURSEJ', 9), +('S9', '8959', 'DURSEJ', 9), +('S9', '8960', 'DURSEJ', 9), +('S9', '8961', 'DURSEJ', 9), +('S9', '8962', 'DURSEJ', 9), +('S9', '8963', 'DURSEJ', 9), +('S9', '8964', 'DURSEJ', 9), +('S9', '8965', 'DURSEJ', 9), +('S9', '8966', 'DURSEJ', 9), +('S9', '8967', 'DURSEJ', 9), +('S9', '8968', 'DURSEJ', 9), +('S9', '8969', 'DURSEJ', 9), +('S9', '8970', 'DURSEJ', 9), +('S9', '8971', 'DURSEJ', 9), +('S9', '8972', 'DURSEJ', 9), +('S9', '8973', 'DURSEJ', 9), +('S9', '8974', 'DURSEJ', 9), +('S9', '8975', 'DURSEJ', 9), +('S9', '8976', 'DURSEJ', 9), +('S9', '8977', 'DURSEJ', 9), +('S9', '8978', 'DURSEJ', 9), +('S9', '8979', 'DURSEJ', 9), +('S9', '8980', 'DURSEJ', 9), +('S9', '8981', 'DURSEJ', 9), +('S9', '8982', 'DURSEJ', 9), +('S9', '8983', 'DURSEJ', 9), +('S9', '8984', 'DURSEJ', 9), +('S9', '8985', 'DURSEJ', 9), +('S9', '8986', 'DURSEJ', 9), +('S9', '8987', 'DURSEJ', 9), +('S9', '8988', 'DURSEJ', 9), +('S9', '8989', 'DURSEJ', 9), +('S9', '8990', 'DURSEJ', 9), +('S9', '8991', 'DURSEJ', 9), +('S9', '8992', 'DURSEJ', 9), +('S9', '8993', 'DURSEJ', 9), +('S9', '8994', 'DURSEJ', 9), +('S9', '8995', 'DURSEJ', 9), +('S9', '8996', 'DURSEJ', 9), +('S9', '8997', 'DURSEJ', 9), +('S9', '8998', 'DURSEJ', 9), +('S9', '8999', 'DURSEJ', 9), +('S9', '9000', 'DURSEJ', 9), +('S9', '9001', 'DURSEJ', 9), +('S9', '9002', 'DURSEJ', 9), +('S9', '9003', 'DURSEJ', 9), +('S9', '9004', 'DURSEJ', 9), +('S9', '9005', 'DURSEJ', 9), +('S9', '9006', 'DURSEJ', 9), +('S9', '9007', 'DURSEJ', 9), +('S9', '9008', 'DURSEJ', 9), +('S9', '9009', 'DURSEJ', 9), +('S9', '9010', 'DURSEJ', 9), +('S9', '9011', 'DURSEJ', 9), +('S9', '9012', 'DURSEJ', 9), +('S9', '9013', 'DURSEJ', 9), +('S9', '9014', 'DURSEJ', 9), +('S9', '9015', 'DURSEJ', 9), +('S9', '9016', 'DURSEJ', 9), +('S9', '9017', 'DURSEJ', 9), +('S9', '9018', 'DURSEJ', 9), +('S9', '9019', 'DURSEJ', 9), +('S9', '9020', 'DURSEJ', 9), +('S9', '9021', 'DURSEJ', 9), +('S9', '9022', 'DURSEJ', 9), +('S9', '9023', 'DURSEJ', 9), +('S9', '9024', 'DURSEJ', 9), +('S9', '9025', 'DURSEJ', 9), +('S9', '9026', 'DURSEJ', 9), +('S9', '9027', 'DURSEJ', 9), +('S9', '9028', 'DURSEJ', 9), +('S9', '9029', 'DURSEJ', 9), +('S9', '9030', 'DURSEJ', 9), +('S9', '9031', 'DURSEJ', 9), +('S9', '9032', 'DURSEJ', 9), +('S9', '9033', 'DURSEJ', 9), +('S9', '9034', 'DURSEJ', 9), +('S9', '9035', 'DURSEJ', 9), +('S9', '9036', 'DURSEJ', 9), +('S9', '9037', 'DURSEJ', 9), +('S9', '9038', 'DURSEJ', 9), +('S9', '9039', 'DURSEJ', 9), +('S9', '9040', 'DURSEJ', 9), +('S9', '9041', 'DURSEJ', 9), +('S9', '9042', 'DURSEJ', 9), +('S9', '9043', 'DURSEJ', 9), +('S9', '9044', 'DURSEJ', 9), +('S9', '9045', 'DURSEJ', 9), +('S9', '9046', 'DURSEJ', 9), +('S9', '9047', 'DURSEJ', 9), +('S9', '9048', 'DURSEJ', 9), +('S9', '9049', 'DURSEJ', 9), +('S9', '9050', 'DURSEJ', 9), +('S9', '9051', 'DURSEJ', 9), +('S9', '9052', 'DURSEJ', 9), +('S9', '9053', 'DURSEJ', 9), +('S9', '9054', 'DURSEJ', 9), +('S9', '9055', 'DURSEJ', 9), +('S9', '9056', 'DURSEJ', 9), +('S9', '9057', 'DURSEJ', 9), +('S9', '9058', 'DURSEJ', 9), +('S9', '9059', 'DURSEJ', 9), +('S9', '9060', 'DURSEJ', 9), +('S9', '9061', 'DURSEJ', 9), +('S9', '9062', 'DURSEJ', 9), +('S9', '9063', 'DURSEJ', 9), +('S9', '9064', 'DURSEJ', 9), +('S9', '9065', 'DURSEJ', 9), +('S9', '9066', 'DURSEJ', 9), +('S9', '9067', 'DURSEJ', 9), +('S9', '9068', 'DURSEJ', 9), +('S9', '9069', 'DURSEJ', 9), +('S9', '9070', 'DURSEJ', 9), +('S9', '9071', 'DURSEJ', 9), +('S9', '9072', 'DURSEJ', 9), +('S9', '9073', 'DURSEJ', 9), +('S9', '9074', 'DURSEJ', 9), +('S9', '9075', 'DURSEJ', 9), +('S9', '9076', 'DURSEJ', 9), +('S9', '9077', 'DURSEJ', 9), +('S9', '9078', 'DURSEJ', 9), +('S9', '9079', 'DURSEJ', 9), +('S9', '9080', 'DURSEJ', 9), +('S9', '9081', 'DURSEJ', 9), +('S9', '9082', 'DURSEJ', 9), +('S9', '9083', 'DURSEJ', 9), +('S9', '9084', 'DURSEJ', 9), +('S9', '9085', 'DURSEJ', 9), +('S9', '9086', 'DURSEJ', 9), +('S9', '9087', 'DURSEJ', 9), +('S9', '9088', 'DURSEJ', 9), +('S9', '9089', 'DURSEJ', 9), +('S9', '9090', 'DURSEJ', 9), +('S9', '9091', 'DURSEJ', 9), +('S9', '9092', 'DURSEJ', 9), +('S9', '9093', 'DURSEJ', 9), +('S9', '9094', 'DURSEJ', 9), +('S9', '9095', 'DURSEJ', 9), +('S9', '9096', 'DURSEJ', 9), +('S9', '9097', 'DURSEJ', 9), +('S9', '9098', 'DURSEJ', 9), +('S9', '9099', 'DURSEJ', 9), +('S9', '9100', 'DURSEJ', 9), +('S9', '9101', 'DURSEJ', 9), +('S9', '9102', 'DURSEJ', 9), +('S9', '9103', 'DURSEJ', 9), +('S9', '9104', 'DURSEJ', 9), +('S9', '9105', 'DURSEJ', 9), +('S9', '9106', 'DURSEJ', 9), +('S9', '9107', 'DURSEJ', 9), +('S9', '9108', 'DURSEJ', 9), +('S9', '9109', 'DURSEJ', 9), +('S9', '9110', 'DURSEJ', 9), +('S9', '9111', 'DURSEJ', 9), +('S9', '9112', 'DURSEJ', 9), +('S9', '9113', 'DURSEJ', 9), +('S9', '9114', 'DURSEJ', 9), +('S9', '9115', 'DURSEJ', 9), +('S9', '9116', 'DURSEJ', 9), +('S9', '9117', 'DURSEJ', 9), +('S9', '9118', 'DURSEJ', 9), +('S9', '9119', 'DURSEJ', 9), +('S9', '9120', 'DURSEJ', 9), +('S9', '9121', 'DURSEJ', 9), +('S9', '9122', 'DURSEJ', 9), +('S9', '9123', 'DURSEJ', 9), +('S9', '9124', 'DURSEJ', 9), +('S9', '9125', 'DURSEJ', 9), +('S9', '9126', 'DURSEJ', 9), +('S9', '9127', 'DURSEJ', 9), +('S9', '9128', 'DURSEJ', 9), +('S9', '9129', 'DURSEJ', 9), +('S9', '9130', 'DURSEJ', 9), +('S9', '9131', 'DURSEJ', 9), +('S9', '9132', 'DURSEJ', 9), +('S9', '9133', 'DURSEJ', 9), +('S9', '9134', 'DURSEJ', 9), +('S9', '9135', 'DURSEJ', 9), +('S9', '9136', 'DURSEJ', 9), +('S9', '9137', 'DURSEJ', 9), +('S9', '9138', 'DURSEJ', 9), +('S9', '9139', 'DURSEJ', 9), +('S9', '9140', 'DURSEJ', 9), +('S9', '9141', 'DURSEJ', 9), +('S9', '9142', 'DURSEJ', 9), +('S9', '9143', 'DURSEJ', 9), +('S9', '9144', 'DURSEJ', 9), +('S9', '9145', 'DURSEJ', 9), +('S9', '9146', 'DURSEJ', 9), +('S9', '9147', 'DURSEJ', 9), +('S9', '9148', 'DURSEJ', 9), +('S9', '9149', 'DURSEJ', 9), +('S9', '9150', 'DURSEJ', 9), +('S9', '9151', 'DURSEJ', 9), +('S9', '9152', 'DURSEJ', 9), +('S9', '9153', 'DURSEJ', 9), +('S9', '9154', 'DURSEJ', 9), +('S9', '9155', 'DURSEJ', 9), +('S9', '9156', 'DURSEJ', 9), +('S9', '9157', 'DURSEJ', 9), +('S9', '9158', 'DURSEJ', 9), +('S9', '9159', 'DURSEJ', 9), +('S9', '9160', 'DURSEJ', 9), +('S9', '9161', 'DURSEJ', 9), +('S9', '9162', 'DURSEJ', 9), +('S9', '9163', 'DURSEJ', 9), +('S9', '9164', 'DURSEJ', 9), +('S9', '9165', 'DURSEJ', 9), +('S9', '9166', 'DURSEJ', 9), +('S9', '9167', 'DURSEJ', 9), +('S9', '9168', 'DURSEJ', 9), +('S9', '9169', 'DURSEJ', 9), +('S9', '9170', 'DURSEJ', 9), +('S9', '9171', 'DURSEJ', 9), +('S9', '9172', 'DURSEJ', 9), +('S9', '9173', 'DURSEJ', 9), +('S9', '9174', 'DURSEJ', 9), +('S9', '9175', 'DURSEJ', 9), +('S9', '9176', 'DURSEJ', 9), +('S9', '9177', 'DURSEJ', 9), +('S9', '9178', 'DURSEJ', 9), +('S9', '9179', 'DURSEJ', 9), +('S9', '9180', 'DURSEJ', 9), +('S9', '9181', 'DURSEJ', 9), +('S9', '9182', 'DURSEJ', 9), +('S9', '9183', 'DURSEJ', 9), +('S9', '9184', 'DURSEJ', 9), +('S9', '9185', 'DURSEJ', 9), +('S9', '9186', 'DURSEJ', 9), +('S9', '9187', 'DURSEJ', 9), +('S9', '9188', 'DURSEJ', 9), +('S9', '9189', 'DURSEJ', 9), +('S9', '9190', 'DURSEJ', 9), +('S9', '9191', 'DURSEJ', 9), +('S9', '9192', 'DURSEJ', 9), +('S9', '9193', 'DURSEJ', 9), +('S9', '9194', 'DURSEJ', 9), +('S9', '9195', 'DURSEJ', 9), +('S9', '9196', 'DURSEJ', 9), +('S9', '9197', 'DURSEJ', 9), +('S9', '9198', 'DURSEJ', 9), +('S9', '9199', 'DURSEJ', 9), +('S9', '9200', 'DURSEJ', 9), +('S9', '9201', 'DURSEJ', 9), +('S9', '9202', 'DURSEJ', 9), +('S9', '9203', 'DURSEJ', 9), +('S9', '9204', 'DURSEJ', 9), +('S9', '9205', 'DURSEJ', 9), +('S9', '9206', 'DURSEJ', 9), +('S9', '9207', 'DURSEJ', 9), +('S9', '9208', 'DURSEJ', 9), +('S9', '9209', 'DURSEJ', 9), +('S9', '9210', 'DURSEJ', 9), +('S9', '9211', 'DURSEJ', 9), +('S9', '9212', 'DURSEJ', 9), +('S9', '9213', 'DURSEJ', 9), +('S9', '9214', 'DURSEJ', 9), +('S9', '9215', 'DURSEJ', 9), +('S9', '9216', 'DURSEJ', 9), +('S9', '9217', 'DURSEJ', 9), +('S9', '9218', 'DURSEJ', 9), +('S9', '9219', 'DURSEJ', 9), +('S9', '9220', 'DURSEJ', 9), +('S9', '9221', 'DURSEJ', 9), +('S9', '9222', 'DURSEJ', 9), +('S9', '9223', 'DURSEJ', 9), +('S9', '9224', 'DURSEJ', 9), +('S9', '9225', 'DURSEJ', 9), +('S9', '9226', 'DURSEJ', 9), +('S9', '9227', 'DURSEJ', 9), +('S9', '9228', 'DURSEJ', 9), +('S9', '9229', 'DURSEJ', 9), +('S9', '9230', 'DURSEJ', 9), +('S9', '9231', 'DURSEJ', 9), +('S9', '9232', 'DURSEJ', 9), +('S9', '9233', 'DURSEJ', 9), +('S9', '9234', 'DURSEJ', 9), +('S9', '9235', 'DURSEJ', 9), +('S9', '9236', 'DURSEJ', 9), +('S9', '9237', 'DURSEJ', 9), +('S9', '9238', 'DURSEJ', 9), +('S9', '9239', 'DURSEJ', 9), +('S9', '9240', 'DURSEJ', 9), +('S9', '9241', 'DURSEJ', 9), +('S9', '9242', 'DURSEJ', 9), +('S9', '9243', 'DURSEJ', 9), +('S9', '9244', 'DURSEJ', 9), +('S9', '9245', 'DURSEJ', 9), +('S9', '9246', 'DURSEJ', 9), +('S9', '9247', 'DURSEJ', 9), +('S9', '9248', 'DURSEJ', 9), +('S9', '9249', 'DURSEJ', 9), +('S9', '9250', 'DURSEJ', 9), +('S9', '9251', 'DURSEJ', 9), +('S9', '9252', 'DURSEJ', 9), +('S9', '9253', 'DURSEJ', 9), +('S9', '9254', 'DURSEJ', 9), +('S9', '9255', 'DURSEJ', 9), +('S9', '9256', 'DURSEJ', 9), +('S9', '9257', 'DURSEJ', 9), +('S9', '9258', 'DURSEJ', 9), +('S9', '9259', 'DURSEJ', 9), +('S9', '9260', 'DURSEJ', 9), +('S9', '9261', 'DURSEJ', 9), +('S9', '9262', 'DURSEJ', 9), +('S9', '9263', 'DURSEJ', 9), +('S9', '9264', 'DURSEJ', 9), +('S9', '9265', 'DURSEJ', 9), +('S9', '9266', 'DURSEJ', 9), +('S9', '9267', 'DURSEJ', 9), +('S9', '9268', 'DURSEJ', 9), +('S9', '9269', 'DURSEJ', 9), +('S9', '9270', 'DURSEJ', 9), +('S9', '9271', 'DURSEJ', 9), +('S9', '9272', 'DURSEJ', 9), +('S9', '9273', 'DURSEJ', 9), +('S9', '9274', 'DURSEJ', 9), +('S9', '9275', 'DURSEJ', 9), +('S9', '9276', 'DURSEJ', 9), +('S9', '9277', 'DURSEJ', 9), +('S9', '9278', 'DURSEJ', 9), +('S9', '9279', 'DURSEJ', 9), +('S9', '9280', 'DURSEJ', 9), +('S9', '9281', 'DURSEJ', 9), +('S9', '9282', 'DURSEJ', 9), +('S9', '9283', 'DURSEJ', 9), +('S9', '9284', 'DURSEJ', 9), +('S9', '9285', 'DURSEJ', 9), +('S9', '9286', 'DURSEJ', 9), +('S9', '9287', 'DURSEJ', 9), +('S9', '9288', 'DURSEJ', 9), +('S9', '9289', 'DURSEJ', 9), +('S9', '9290', 'DURSEJ', 9), +('S9', '9291', 'DURSEJ', 9), +('S9', '9292', 'DURSEJ', 9), +('S9', '9293', 'DURSEJ', 9), +('S9', '9294', 'DURSEJ', 9), +('S9', '9295', 'DURSEJ', 9), +('S9', '9296', 'DURSEJ', 9), +('S9', '9297', 'DURSEJ', 9), +('S9', '9298', 'DURSEJ', 9), +('S9', '9299', 'DURSEJ', 9), +('S9', '9300', 'DURSEJ', 9), +('S9', '9301', 'DURSEJ', 9), +('S9', '9302', 'DURSEJ', 9), +('S9', '9303', 'DURSEJ', 9), +('S9', '9304', 'DURSEJ', 9), +('S9', '9305', 'DURSEJ', 9), +('S9', '9306', 'DURSEJ', 9), +('S9', '9307', 'DURSEJ', 9), +('S9', '9308', 'DURSEJ', 9), +('S9', '9309', 'DURSEJ', 9), +('S9', '9310', 'DURSEJ', 9), +('S9', '9311', 'DURSEJ', 9), +('S9', '9312', 'DURSEJ', 9), +('S9', '9313', 'DURSEJ', 9), +('S9', '9314', 'DURSEJ', 9), +('S9', '9315', 'DURSEJ', 9), +('S9', '9316', 'DURSEJ', 9), +('S9', '9317', 'DURSEJ', 9), +('S9', '9318', 'DURSEJ', 9), +('S9', '9319', 'DURSEJ', 9), +('S9', '9320', 'DURSEJ', 9), +('S9', '9321', 'DURSEJ', 9), +('S9', '9322', 'DURSEJ', 9), +('S9', '9323', 'DURSEJ', 9), +('S9', '9324', 'DURSEJ', 9), +('S9', '9325', 'DURSEJ', 9), +('S9', '9326', 'DURSEJ', 9), +('S9', '9327', 'DURSEJ', 9), +('S9', '9328', 'DURSEJ', 9), +('S9', '9329', 'DURSEJ', 9), +('S9', '9330', 'DURSEJ', 9), +('S9', '9331', 'DURSEJ', 9), +('S9', '9332', 'DURSEJ', 9), +('S9', '9333', 'DURSEJ', 9), +('S9', '9334', 'DURSEJ', 9), +('S9', '9335', 'DURSEJ', 9), +('S9', '9336', 'DURSEJ', 9), +('S9', '9337', 'DURSEJ', 9), +('S9', '9338', 'DURSEJ', 9), +('S9', '9339', 'DURSEJ', 9), +('S9', '9340', 'DURSEJ', 9), +('S9', '9341', 'DURSEJ', 9), +('S9', '9342', 'DURSEJ', 9), +('S9', '9343', 'DURSEJ', 9), +('S9', '9344', 'DURSEJ', 9), +('S9', '9345', 'DURSEJ', 9), +('S9', '9346', 'DURSEJ', 9), +('S9', '9347', 'DURSEJ', 9), +('S9', '9348', 'DURSEJ', 9), +('S9', '9349', 'DURSEJ', 9), +('S9', '9350', 'DURSEJ', 9), +('S9', '9351', 'DURSEJ', 9), +('S9', '9352', 'DURSEJ', 9), +('S9', '9353', 'DURSEJ', 9), +('S9', '9354', 'DURSEJ', 9), +('S9', '9355', 'DURSEJ', 9), +('S9', '9356', 'DURSEJ', 9), +('S9', '9357', 'DURSEJ', 9), +('S9', '9358', 'DURSEJ', 9), +('S9', '9359', 'DURSEJ', 9), +('S9', '9360', 'DURSEJ', 9), +('S9', '9361', 'DURSEJ', 9), +('S9', '9362', 'DURSEJ', 9), +('S9', '9363', 'DURSEJ', 9), +('S9', '9364', 'DURSEJ', 9), +('S9', '9365', 'DURSEJ', 9), +('S9', '9366', 'DURSEJ', 9), +('S9', '9367', 'DURSEJ', 9), +('S9', '9368', 'DURSEJ', 9), +('S9', '9369', 'DURSEJ', 9), +('S9', '9370', 'DURSEJ', 9), +('S9', '9371', 'DURSEJ', 9), +('S9', '9372', 'DURSEJ', 9), +('S9', '9373', 'DURSEJ', 9), +('S9', '9374', 'DURSEJ', 9), +('S9', '9375', 'DURSEJ', 9), +('S9', '9376', 'DURSEJ', 9), +('S9', '9377', 'DURSEJ', 9), +('S9', '9378', 'DURSEJ', 9), +('S9', '9379', 'DURSEJ', 9), +('S9', '9380', 'DURSEJ', 9), +('S9', '9381', 'DURSEJ', 9), +('S9', '9382', 'DURSEJ', 9), +('S9', '9383', 'DURSEJ', 9), +('S9', '9384', 'DURSEJ', 9), +('S9', '9385', 'DURSEJ', 9), +('S9', '9386', 'DURSEJ', 9), +('S9', '9387', 'DURSEJ', 9), +('S9', '9388', 'DURSEJ', 9), +('S9', '9389', 'DURSEJ', 9), +('S9', '9390', 'DURSEJ', 9), +('S9', '9391', 'DURSEJ', 9), +('S9', '9392', 'DURSEJ', 9), +('S9', '9393', 'DURSEJ', 9), +('S9', '9394', 'DURSEJ', 9), +('S9', '9395', 'DURSEJ', 9), +('S9', '9396', 'DURSEJ', 9), +('S9', '9397', 'DURSEJ', 9), +('S9', '9398', 'DURSEJ', 9), +('S9', '9399', 'DURSEJ', 9), +('S9', '9400', 'DURSEJ', 9), +('S9', '9401', 'DURSEJ', 9), +('S9', '9402', 'DURSEJ', 9), +('S9', '9403', 'DURSEJ', 9), +('S9', '9404', 'DURSEJ', 9), +('S9', '9405', 'DURSEJ', 9), +('S9', '9406', 'DURSEJ', 9), +('S9', '9407', 'DURSEJ', 9), +('S9', '9408', 'DURSEJ', 9), +('S9', '9409', 'DURSEJ', 9), +('S9', '9410', 'DURSEJ', 9), +('S9', '9411', 'DURSEJ', 9), +('S9', '9412', 'DURSEJ', 9), +('S9', '9413', 'DURSEJ', 9), +('S9', '9414', 'DURSEJ', 9), +('S9', '9415', 'DURSEJ', 9), +('S9', '9416', 'DURSEJ', 9), +('S9', '9417', 'DURSEJ', 9), +('S9', '9418', 'DURSEJ', 9), +('S9', '9419', 'DURSEJ', 9), +('S9', '9420', 'DURSEJ', 9), +('S9', '9421', 'DURSEJ', 9), +('S9', '9422', 'DURSEJ', 9), +('S9', '9423', 'DURSEJ', 9), +('S9', '9424', 'DURSEJ', 9), +('S9', '9425', 'DURSEJ', 9), +('S9', '9426', 'DURSEJ', 9), +('S9', '9427', 'DURSEJ', 9), +('S9', '9428', 'DURSEJ', 9), +('S9', '9429', 'DURSEJ', 9), +('S9', '9430', 'DURSEJ', 9), +('S9', '9431', 'DURSEJ', 9), +('S9', '9432', 'DURSEJ', 9), +('S9', '9433', 'DURSEJ', 9), +('S9', '9434', 'DURSEJ', 9), +('S9', '9435', 'DURSEJ', 9), +('S9', '9436', 'DURSEJ', 9), +('S9', '9437', 'DURSEJ', 9), +('S9', '9438', 'DURSEJ', 9), +('S9', '9439', 'DURSEJ', 9), +('S9', '9440', 'DURSEJ', 9), +('S9', '9441', 'DURSEJ', 9), +('S9', '9442', 'DURSEJ', 9), +('S9', '9443', 'DURSEJ', 9), +('S9', '9444', 'DURSEJ', 9), +('S9', '9445', 'DURSEJ', 9), +('S9', '9446', 'DURSEJ', 9), +('S9', '9447', 'DURSEJ', 9), +('S9', '9448', 'DURSEJ', 9), +('S9', '9449', 'DURSEJ', 9), +('S9', '9450', 'DURSEJ', 9), +('S9', '9451', 'DURSEJ', 9), +('S9', '9452', 'DURSEJ', 9), +('S9', '9453', 'DURSEJ', 9), +('S9', '9454', 'DURSEJ', 9), +('S9', '9455', 'DURSEJ', 9), +('S9', '9456', 'DURSEJ', 9), +('S9', '9457', 'DURSEJ', 9), +('S9', '9458', 'DURSEJ', 9), +('S9', '9459', 'DURSEJ', 9), +('S9', '9460', 'DURSEJ', 9), +('S9', '9461', 'DURSEJ', 9), +('S9', '9462', 'DURSEJ', 9), +('S9', '9463', 'DURSEJ', 9), +('S9', '9464', 'DURSEJ', 9), +('S9', '9465', 'DURSEJ', 9), +('S9', '9466', 'DURSEJ', 9), +('S9', '9467', 'DURSEJ', 9), +('S9', '9468', 'DURSEJ', 9), +('S9', '9469', 'DURSEJ', 9), +('S9', '9470', 'DURSEJ', 9), +('S9', '9471', 'DURSEJ', 9), +('S9', '9472', 'DURSEJ', 9), +('S9', '9473', 'DURSEJ', 9), +('S9', '9474', 'DURSEJ', 9), +('S9', '9475', 'DURSEJ', 9), +('S9', '9476', 'DURSEJ', 9), +('S9', '9477', 'DURSEJ', 9), +('S9', '9478', 'DURSEJ', 9), +('S9', '9479', 'DURSEJ', 9), +('S9', '9480', 'DURSEJ', 9), +('S9', '9481', 'DURSEJ', 9), +('S9', '9482', 'DURSEJ', 9), +('S9', '9483', 'DURSEJ', 9), +('S9', '9484', 'DURSEJ', 9), +('S9', '9485', 'DURSEJ', 9), +('S9', '9486', 'DURSEJ', 9), +('S9', '9487', 'DURSEJ', 9), +('S9', '9488', 'DURSEJ', 9), +('S9', '9489', 'DURSEJ', 9), +('S9', '9490', 'DURSEJ', 9), +('S9', '9491', 'DURSEJ', 9), +('S9', '9492', 'DURSEJ', 9), +('S9', '9493', 'DURSEJ', 9), +('S9', '9494', 'DURSEJ', 9), +('S9', '9495', 'DURSEJ', 9), +('S9', '9496', 'DURSEJ', 9), +('S9', '9497', 'DURSEJ', 9), +('S9', '9498', 'DURSEJ', 9), +('S9', '9499', 'DURSEJ', 9), +('S9', '9500', 'DURSEJ', 9), +('S9', '9501', 'DURSEJ', 9), +('S9', '9502', 'DURSEJ', 9), +('S9', '9503', 'DURSEJ', 9), +('S9', '9504', 'DURSEJ', 9), +('S9', '9505', 'DURSEJ', 9), +('S9', '9506', 'DURSEJ', 9), +('S9', '9507', 'DURSEJ', 9), +('S9', '9508', 'DURSEJ', 9), +('S9', '9509', 'DURSEJ', 9), +('S9', '9510', 'DURSEJ', 9), +('S9', '9511', 'DURSEJ', 9), +('S9', '9512', 'DURSEJ', 9), +('S9', '9513', 'DURSEJ', 9), +('S9', '9514', 'DURSEJ', 9), +('S9', '9515', 'DURSEJ', 9), +('S9', '9516', 'DURSEJ', 9), +('S9', '9517', 'DURSEJ', 9), +('S9', '9518', 'DURSEJ', 9), +('S9', '9519', 'DURSEJ', 9), +('S9', '9520', 'DURSEJ', 9), +('S9', '9521', 'DURSEJ', 9), +('S9', '9522', 'DURSEJ', 9), +('S9', '9523', 'DURSEJ', 9), +('S9', '9524', 'DURSEJ', 9), +('S9', '9525', 'DURSEJ', 9), +('S9', '9526', 'DURSEJ', 9), +('S9', '9527', 'DURSEJ', 9), +('S9', '9528', 'DURSEJ', 9), +('S9', '9529', 'DURSEJ', 9), +('S9', '9530', 'DURSEJ', 9), +('S9', '9531', 'DURSEJ', 9), +('S9', '9532', 'DURSEJ', 9), +('S9', '9533', 'DURSEJ', 9), +('S9', '9534', 'DURSEJ', 9), +('S9', '9535', 'DURSEJ', 9), +('S9', '9536', 'DURSEJ', 9), +('S9', '9537', 'DURSEJ', 9), +('S9', '9538', 'DURSEJ', 9), +('S9', '9539', 'DURSEJ', 9), +('S9', '9540', 'DURSEJ', 9), +('S9', '9541', 'DURSEJ', 9), +('S9', '9542', 'DURSEJ', 9), +('S9', '9543', 'DURSEJ', 9), +('S9', '9544', 'DURSEJ', 9), +('S9', '9545', 'DURSEJ', 9), +('S9', '9546', 'DURSEJ', 9), +('S9', '9547', 'DURSEJ', 9), +('S9', '9548', 'DURSEJ', 9), +('S9', '9549', 'DURSEJ', 9), +('S9', '9550', 'DURSEJ', 9), +('S9', '9551', 'DURSEJ', 9), +('S9', '9552', 'DURSEJ', 9), +('S9', '9553', 'DURSEJ', 9), +('S9', '9554', 'DURSEJ', 9), +('S9', '9555', 'DURSEJ', 9), +('S9', '9556', 'DURSEJ', 9), +('S9', '9557', 'DURSEJ', 9), +('S9', '9558', 'DURSEJ', 9), +('S9', '9559', 'DURSEJ', 9), +('S9', '9560', 'DURSEJ', 9), +('S9', '9561', 'DURSEJ', 9), +('S9', '9562', 'DURSEJ', 9), +('S9', '9563', 'DURSEJ', 9), +('S9', '9564', 'DURSEJ', 9), +('S9', '9565', 'DURSEJ', 9), +('S9', '9566', 'DURSEJ', 9), +('S9', '9567', 'DURSEJ', 9), +('S9', '9568', 'DURSEJ', 9), +('S9', '9569', 'DURSEJ', 9), +('S9', '9570', 'DURSEJ', 9), +('S9', '9571', 'DURSEJ', 9), +('S9', '9572', 'DURSEJ', 9), +('S9', '9573', 'DURSEJ', 9), +('S9', '9574', 'DURSEJ', 9), +('S9', '9575', 'DURSEJ', 9), +('S9', '9576', 'DURSEJ', 9), +('S9', '9577', 'DURSEJ', 9), +('S9', '9578', 'DURSEJ', 9), +('S9', '9579', 'DURSEJ', 9), +('S9', '9580', 'DURSEJ', 9), +('S9', '9581', 'DURSEJ', 9), +('S9', '9582', 'DURSEJ', 9), +('S9', '9583', 'DURSEJ', 9), +('S9', '9584', 'DURSEJ', 9), +('S9', '9585', 'DURSEJ', 9), +('S9', '9586', 'DURSEJ', 9), +('S9', '9587', 'DURSEJ', 9), +('S9', '9588', 'DURSEJ', 9), +('S9', '9589', 'DURSEJ', 9), +('S9', '9590', 'DURSEJ', 9), +('S9', '9591', 'DURSEJ', 9), +('S9', '9592', 'DURSEJ', 9), +('S9', '9593', 'DURSEJ', 9), +('S9', '9594', 'DURSEJ', 9), +('S9', '9595', 'DURSEJ', 9), +('S9', '9596', 'DURSEJ', 9), +('S9', '9597', 'DURSEJ', 9), +('S9', '9598', 'DURSEJ', 9), +('S9', '9599', 'DURSEJ', 9), +('S9', '9600', 'DURSEJ', 9), +('S9', '9601', 'DURSEJ', 9), +('S9', '9602', 'DURSEJ', 9), +('S9', '9603', 'DURSEJ', 9), +('S9', '9604', 'DURSEJ', 9), +('S9', '9605', 'DURSEJ', 9), +('S9', '9606', 'DURSEJ', 9), +('S9', '9607', 'DURSEJ', 9), +('S9', '9608', 'DURSEJ', 9), +('S9', '9609', 'DURSEJ', 9), +('S9', '9610', 'DURSEJ', 9), +('S9', '9611', 'DURSEJ', 9), +('S9', '9612', 'DURSEJ', 9), +('S9', '9613', 'DURSEJ', 9), +('S9', '9614', 'DURSEJ', 9), +('S9', '9615', 'DURSEJ', 9), +('S9', '9616', 'DURSEJ', 9), +('S9', '9617', 'DURSEJ', 9), +('S9', '9618', 'DURSEJ', 9), +('S9', '9619', 'DURSEJ', 9), +('S9', '9620', 'DURSEJ', 9), +('S9', '9621', 'DURSEJ', 9), +('S9', '9622', 'DURSEJ', 9), +('S9', '9623', 'DURSEJ', 9), +('S9', '9624', 'DURSEJ', 9), +('S9', '9625', 'DURSEJ', 9), +('S9', '9626', 'DURSEJ', 9), +('S9', '9627', 'DURSEJ', 9), +('S9', '9628', 'DURSEJ', 9), +('S9', '9629', 'DURSEJ', 9), +('S9', '9630', 'DURSEJ', 9), +('S9', '9631', 'DURSEJ', 9), +('S9', '9632', 'DURSEJ', 9), +('S9', '9633', 'DURSEJ', 9), +('S9', '9634', 'DURSEJ', 9), +('S9', '9635', 'DURSEJ', 9), +('S9', '9636', 'DURSEJ', 9), +('S9', '9637', 'DURSEJ', 9), +('S9', '9638', 'DURSEJ', 9), +('S9', '9639', 'DURSEJ', 9), +('S9', '9640', 'DURSEJ', 9), +('S9', '9641', 'DURSEJ', 9), +('S9', '9642', 'DURSEJ', 9), +('S9', '9643', 'DURSEJ', 9), +('S9', '9644', 'DURSEJ', 9), +('S9', '9645', 'DURSEJ', 9), +('S9', '9646', 'DURSEJ', 9), +('S9', '9647', 'DURSEJ', 9), +('S9', '9648', 'DURSEJ', 9), +('S9', '9649', 'DURSEJ', 9), +('S9', '9650', 'DURSEJ', 9), +('S9', '9651', 'DURSEJ', 9), +('S9', '9652', 'DURSEJ', 9), +('S9', '9653', 'DURSEJ', 9), +('S9', '9654', 'DURSEJ', 9), +('S9', '9655', 'DURSEJ', 9), +('S9', '9656', 'DURSEJ', 9), +('S9', '9657', 'DURSEJ', 9), +('S9', '9658', 'DURSEJ', 9), +('S9', '9659', 'DURSEJ', 9), +('S9', '9660', 'DURSEJ', 9), +('S9', '9661', 'DURSEJ', 9), +('S9', '9662', 'DURSEJ', 9), +('S9', '9663', 'DURSEJ', 9), +('S9', '9664', 'DURSEJ', 9), +('S9', '9665', 'DURSEJ', 9), +('S9', '9666', 'DURSEJ', 9), +('S9', '9667', 'DURSEJ', 9), +('S9', '9668', 'DURSEJ', 9), +('S9', '9669', 'DURSEJ', 9), +('S9', '9670', 'DURSEJ', 9), +('S9', '9671', 'DURSEJ', 9), +('S9', '9672', 'DURSEJ', 9), +('S9', '9673', 'DURSEJ', 9), +('S9', '9674', 'DURSEJ', 9), +('S9', '9675', 'DURSEJ', 9), +('S9', '9676', 'DURSEJ', 9), +('S9', '9677', 'DURSEJ', 9), +('S9', '9678', 'DURSEJ', 9), +('S9', '9679', 'DURSEJ', 9), +('S9', '9680', 'DURSEJ', 9), +('S9', '9681', 'DURSEJ', 9), +('S9', '9682', 'DURSEJ', 9), +('S9', '9683', 'DURSEJ', 9), +('S9', '9684', 'DURSEJ', 9), +('S9', '9685', 'DURSEJ', 9), +('S9', '9686', 'DURSEJ', 9), +('S9', '9687', 'DURSEJ', 9), +('S9', '9688', 'DURSEJ', 9), +('S9', '9689', 'DURSEJ', 9), +('S9', '9690', 'DURSEJ', 9), +('S9', '9691', 'DURSEJ', 9), +('S9', '9692', 'DURSEJ', 9), +('S9', '9693', 'DURSEJ', 9), +('S9', '9694', 'DURSEJ', 9), +('S9', '9695', 'DURSEJ', 9), +('S9', '9696', 'DURSEJ', 9), +('S9', '9697', 'DURSEJ', 9), +('S9', '9698', 'DURSEJ', 9), +('S9', '9699', 'DURSEJ', 9), +('S9', '9700', 'DURSEJ', 9), +('S9', '9701', 'DURSEJ', 9), +('S9', '9702', 'DURSEJ', 9), +('S9', '9703', 'DURSEJ', 9), +('S9', '9704', 'DURSEJ', 9), +('S9', '9705', 'DURSEJ', 9), +('S9', '9706', 'DURSEJ', 9), +('S9', '9707', 'DURSEJ', 9), +('S9', '9708', 'DURSEJ', 9), +('S9', '9709', 'DURSEJ', 9), +('S9', '9710', 'DURSEJ', 9), +('S9', '9711', 'DURSEJ', 9), +('S9', '9712', 'DURSEJ', 9), +('S9', '9713', 'DURSEJ', 9), +('S9', '9714', 'DURSEJ', 9), +('S9', '9715', 'DURSEJ', 9), +('S9', '9716', 'DURSEJ', 9), +('S9', '9717', 'DURSEJ', 9), +('S9', '9718', 'DURSEJ', 9), +('S9', '9719', 'DURSEJ', 9), +('S9', '9720', 'DURSEJ', 9), +('S9', '9721', 'DURSEJ', 9), +('S9', '9722', 'DURSEJ', 9), +('S9', '9723', 'DURSEJ', 9), +('S9', '9724', 'DURSEJ', 9), +('S9', '9725', 'DURSEJ', 9), +('S9', '9726', 'DURSEJ', 9), +('S9', '9727', 'DURSEJ', 9), +('S9', '9728', 'DURSEJ', 9), +('S9', '9729', 'DURSEJ', 9), +('S9', '9730', 'DURSEJ', 9), +('S9', '9731', 'DURSEJ', 9), +('S9', '9732', 'DURSEJ', 9), +('S9', '9733', 'DURSEJ', 9), +('S9', '9734', 'DURSEJ', 9), +('S9', '9735', 'DURSEJ', 9), +('S9', '9736', 'DURSEJ', 9), +('S9', '9737', 'DURSEJ', 9), +('S9', '9738', 'DURSEJ', 9), +('S9', '9739', 'DURSEJ', 9), +('S9', '9740', 'DURSEJ', 9), +('S9', '9741', 'DURSEJ', 9), +('S9', '9742', 'DURSEJ', 9), +('S9', '9743', 'DURSEJ', 9), +('S9', '9744', 'DURSEJ', 9), +('S9', '9745', 'DURSEJ', 9), +('S9', '9746', 'DURSEJ', 9), +('S9', '9747', 'DURSEJ', 9), +('S9', '9748', 'DURSEJ', 9), +('S9', '9749', 'DURSEJ', 9), +('S9', '9750', 'DURSEJ', 9), +('S9', '9751', 'DURSEJ', 9), +('S9', '9752', 'DURSEJ', 9), +('S9', '9753', 'DURSEJ', 9), +('S9', '9754', 'DURSEJ', 9), +('S9', '9755', 'DURSEJ', 9), +('S9', '9756', 'DURSEJ', 9), +('S9', '9757', 'DURSEJ', 9), +('S9', '9758', 'DURSEJ', 9), +('S9', '9759', 'DURSEJ', 9), +('S9', '9760', 'DURSEJ', 9), +('S9', '9761', 'DURSEJ', 9), +('S9', '9762', 'DURSEJ', 9), +('S9', '9763', 'DURSEJ', 9), +('S9', '9764', 'DURSEJ', 9), +('S9', '9765', 'DURSEJ', 9), +('S9', '9766', 'DURSEJ', 9), +('S9', '9767', 'DURSEJ', 9), +('S9', '9768', 'DURSEJ', 9), +('S9', '9769', 'DURSEJ', 9), +('S9', '9770', 'DURSEJ', 9), +('S9', '9771', 'DURSEJ', 9), +('S9', '9772', 'DURSEJ', 9), +('S9', '9773', 'DURSEJ', 9), +('S9', '9774', 'DURSEJ', 9), +('S9', '9775', 'DURSEJ', 9), +('S9', '9776', 'DURSEJ', 9), +('S9', '9777', 'DURSEJ', 9), +('S9', '9778', 'DURSEJ', 9), +('S9', '9779', 'DURSEJ', 9), +('S9', '9780', 'DURSEJ', 9), +('S9', '9781', 'DURSEJ', 9), +('S9', '9782', 'DURSEJ', 9), +('S9', '9783', 'DURSEJ', 9), +('S9', '9784', 'DURSEJ', 9), +('S9', '9785', 'DURSEJ', 9), +('S9', '9786', 'DURSEJ', 9), +('S9', '9787', 'DURSEJ', 9), +('S9', '9788', 'DURSEJ', 9), +('S9', '9789', 'DURSEJ', 9), +('S9', '9790', 'DURSEJ', 9), +('S9', '9791', 'DURSEJ', 9), +('S9', '9792', 'DURSEJ', 9), +('S9', '9793', 'DURSEJ', 9), +('S9', '9794', 'DURSEJ', 9), +('S9', '9795', 'DURSEJ', 9), +('S9', '9796', 'DURSEJ', 9), +('S9', '9797', 'DURSEJ', 9), +('S9', '9798', 'DURSEJ', 9), +('S9', '9799', 'DURSEJ', 9), +('S9', '9800', 'DURSEJ', 9), +('S9', '9801', 'DURSEJ', 9), +('S9', '9802', 'DURSEJ', 9), +('S9', '9803', 'DURSEJ', 9), +('S9', '9804', 'DURSEJ', 9), +('S9', '9805', 'DURSEJ', 9), +('S9', '9806', 'DURSEJ', 9), +('S9', '9807', 'DURSEJ', 9), +('S9', '9808', 'DURSEJ', 9), +('S9', '9809', 'DURSEJ', 9), +('S9', '9810', 'DURSEJ', 9), +('S9', '9811', 'DURSEJ', 9), +('S9', '9812', 'DURSEJ', 9), +('S9', '9813', 'DURSEJ', 9), +('S9', '9814', 'DURSEJ', 9), +('S9', '9815', 'DURSEJ', 9), +('S9', '9816', 'DURSEJ', 9), +('S9', '9817', 'DURSEJ', 9), +('S9', '9818', 'DURSEJ', 9), +('S9', '9819', 'DURSEJ', 9), +('S9', '9820', 'DURSEJ', 9), +('S9', '9821', 'DURSEJ', 9), +('S9', '9822', 'DURSEJ', 9), +('S9', '9823', 'DURSEJ', 9), +('S9', '9824', 'DURSEJ', 9), +('S9', '9825', 'DURSEJ', 9), +('S9', '9826', 'DURSEJ', 9), +('S9', '9827', 'DURSEJ', 9), +('S9', '9828', 'DURSEJ', 9), +('S9', '9829', 'DURSEJ', 9), +('S9', '9830', 'DURSEJ', 9), +('S9', '9831', 'DURSEJ', 9), +('S9', '9832', 'DURSEJ', 9), +('S9', '9833', 'DURSEJ', 9), +('S9', '9834', 'DURSEJ', 9), +('S9', '9835', 'DURSEJ', 9), +('S9', '9836', 'DURSEJ', 9), +('S9', '9837', 'DURSEJ', 9), +('S9', '9838', 'DURSEJ', 9), +('S9', '9839', 'DURSEJ', 9), +('S9', '9840', 'DURSEJ', 9), +('S9', '9841', 'DURSEJ', 9), +('S9', '9842', 'DURSEJ', 9), +('S9', '9843', 'DURSEJ', 9), +('S9', '9844', 'DURSEJ', 9), +('S9', '9845', 'DURSEJ', 9), +('S9', '9846', 'DURSEJ', 9), +('S9', '9847', 'DURSEJ', 9), +('S9', '9848', 'DURSEJ', 9), +('S9', '9849', 'DURSEJ', 9), +('S9', '9850', 'DURSEJ', 9), +('S9', '9851', 'DURSEJ', 9), +('S9', '9852', 'DURSEJ', 9), +('S9', '9853', 'DURSEJ', 9), +('S9', '9854', 'DURSEJ', 9), +('S9', '9855', 'DURSEJ', 9), +('S9', '9856', 'DURSEJ', 9), +('S9', '9857', 'DURSEJ', 9), +('S9', '9858', 'DURSEJ', 9), +('S9', '9859', 'DURSEJ', 9), +('S9', '9860', 'DURSEJ', 9), +('S9', '9861', 'DURSEJ', 9), +('S9', '9862', 'DURSEJ', 9), +('S9', '9863', 'DURSEJ', 9), +('S9', '9864', 'DURSEJ', 9), +('S9', '9865', 'DURSEJ', 9), +('S9', '9866', 'DURSEJ', 9), +('S9', '9867', 'DURSEJ', 9), +('S9', '9868', 'DURSEJ', 9), +('S9', '9869', 'DURSEJ', 9), +('S9', '9870', 'DURSEJ', 9), +('S9', '9871', 'DURSEJ', 9), +('S9', '9872', 'DURSEJ', 9), +('S9', '9873', 'DURSEJ', 9), +('S9', '9874', 'DURSEJ', 9), +('S9', '9875', 'DURSEJ', 9), +('S9', '9876', 'DURSEJ', 9), +('S9', '9877', 'DURSEJ', 9), +('S9', '9878', 'DURSEJ', 9), +('S9', '9879', 'DURSEJ', 9), +('S9', '9880', 'DURSEJ', 9), +('S9', '9881', 'DURSEJ', 9), +('S9', '9882', 'DURSEJ', 9), +('S9', '9883', 'DURSEJ', 9), +('S9', '9884', 'DURSEJ', 9), +('S9', '9885', 'DURSEJ', 9), +('S9', '9886', 'DURSEJ', 9), +('S9', '9887', 'DURSEJ', 9), +('S9', '9888', 'DURSEJ', 9), +('S9', '9889', 'DURSEJ', 9), +('S9', '9890', 'DURSEJ', 9), +('S9', '9891', 'DURSEJ', 9), +('S9', '9892', 'DURSEJ', 9), +('S9', '9893', 'DURSEJ', 9), +('S9', '9894', 'DURSEJ', 9), +('S9', '9895', 'DURSEJ', 9), +('S9', '9896', 'DURSEJ', 9), +('S9', '9897', 'DURSEJ', 9), +('S9', '9898', 'DURSEJ', 9), +('S9', '9899', 'DURSEJ', 9), +('S9', '9900', 'DURSEJ', 9), +('S9', '9901', 'DURSEJ', 9), +('S9', '9902', 'DURSEJ', 9), +('S9', '9903', 'DURSEJ', 9), +('S9', '9904', 'DURSEJ', 9), +('S9', '9905', 'DURSEJ', 9), +('S9', '9906', 'DURSEJ', 9), +('S9', '9907', 'DURSEJ', 9), +('S9', '9908', 'DURSEJ', 9), +('S9', '9909', 'DURSEJ', 9), +('S9', '9910', 'DURSEJ', 9), +('S9', '9911', 'DURSEJ', 9), +('S9', '9912', 'DURSEJ', 9), +('S9', '9913', 'DURSEJ', 9), +('S9', '9914', 'DURSEJ', 9), +('S9', '9915', 'DURSEJ', 9), +('S9', '9916', 'DURSEJ', 9), +('S9', '9917', 'DURSEJ', 9), +('S9', '9918', 'DURSEJ', 9), +('S9', '9919', 'DURSEJ', 9), +('S9', '9920', 'DURSEJ', 9), +('S9', '9921', 'DURSEJ', 9), +('S9', '9922', 'DURSEJ', 9), +('S9', '9923', 'DURSEJ', 9), +('S9', '9924', 'DURSEJ', 9), +('S9', '9925', 'DURSEJ', 9), +('S9', '9926', 'DURSEJ', 9), +('S9', '9927', 'DURSEJ', 9), +('S9', '9928', 'DURSEJ', 9), +('S9', '9929', 'DURSEJ', 9), +('S9', '9930', 'DURSEJ', 9), +('S9', '9931', 'DURSEJ', 9), +('S9', '9932', 'DURSEJ', 9), +('S9', '9933', 'DURSEJ', 9), +('S9', '9934', 'DURSEJ', 9), +('S9', '9935', 'DURSEJ', 9), +('S9', '9936', 'DURSEJ', 9), +('S9', '9937', 'DURSEJ', 9), +('S9', '9938', 'DURSEJ', 9), +('S9', '9939', 'DURSEJ', 9), +('S9', '9940', 'DURSEJ', 9), +('S9', '9941', 'DURSEJ', 9), +('S9', '9942', 'DURSEJ', 9), +('S9', '9943', 'DURSEJ', 9), +('S9', '9944', 'DURSEJ', 9), +('S9', '9945', 'DURSEJ', 9), +('S9', '9946', 'DURSEJ', 9), +('S9', '9947', 'DURSEJ', 9), +('S9', '9948', 'DURSEJ', 9), +('S9', '9949', 'DURSEJ', 9), +('S9', '9950', 'DURSEJ', 9), +('S9', '9951', 'DURSEJ', 9), +('S9', '9952', 'DURSEJ', 9), +('S9', '9953', 'DURSEJ', 9), +('S9', '9954', 'DURSEJ', 9), +('S9', '9955', 'DURSEJ', 9), +('S9', '9956', 'DURSEJ', 9), +('S9', '9957', 'DURSEJ', 9), +('S9', '9958', 'DURSEJ', 9), +('S9', '9959', 'DURSEJ', 9), +('S9', '9960', 'DURSEJ', 9), +('S9', '9961', 'DURSEJ', 9), +('S9', '9962', 'DURSEJ', 9), +('S9', '9963', 'DURSEJ', 9), +('S9', '9964', 'DURSEJ', 9), +('S9', '9965', 'DURSEJ', 9), +('S9', '9966', 'DURSEJ', 9), +('S9', '9967', 'DURSEJ', 9), +('S9', '9968', 'DURSEJ', 9), +('S9', '9969', 'DURSEJ', 9), +('S9', '9970', 'DURSEJ', 9), +('S9', '9971', 'DURSEJ', 9), +('S9', '9972', 'DURSEJ', 9), +('S9', '9973', 'DURSEJ', 9), +('S9', '9974', 'DURSEJ', 9), +('S9', '9975', 'DURSEJ', 9), +('S9', '9976', 'DURSEJ', 9), +('S9', '9977', 'DURSEJ', 9), +('S9', '9978', 'DURSEJ', 9), +('S9', '9979', 'DURSEJ', 9), +('S9', '9980', 'DURSEJ', 9), +('S9', '9981', 'DURSEJ', 9), +('S9', '9982', 'DURSEJ', 9), +('S9', '9983', 'DURSEJ', 9), +('S9', '9984', 'DURSEJ', 9), +('S9', '9985', 'DURSEJ', 9), +('S9', '9986', 'DURSEJ', 9), +('S9', '9987', 'DURSEJ', 9), +('S9', '9988', 'DURSEJ', 9), +('S9', '9989', 'DURSEJ', 9), +('S9', '9990', 'DURSEJ', 9), +('S9', '9991', 'DURSEJ', 9), +('S9', '9992', 'DURSEJ', 9), +('S9', '9993', 'DURSEJ', 9), +('S9', '9994', 'DURSEJ', 9), +('S9', '9995', 'DURSEJ', 9), +('S9', '9996', 'DURSEJ', 9), +('S9', '9997', 'DURSEJ', 9), +('S9', '9998', 'DURSEJ', 9), +('S9', '9999', 'DURSEJ', 9) +; + +-- 3/3 : Màj de la table iCTI +INSERT INTO activite.t_classes_sections_elements(section_id, to_id) +SELECT + t_classes_sections.oid, + t_durees_sejour.oid +FROM + w_dbsetup, + activite.t_listes_tables, + activite.t_classes, + activite.t_classes_sections, + base.t_durees_sejour +WHERE + w_dbsetup.table_code = t_listes_tables.code + AND t_classes.table_id = t_listes_tables.oid + AND t_classes_sections.classe_id = t_classes.oid + AND w_dbsetup.section_code = t_classes_sections.code + AND w_dbsetup.classe_sequence = t_classes.sequence + AND w_dbsetup.to_code = t_durees_sejour.code + AND t_classes_sections.oid::text || '-' || t_durees_sejour.oid::text NOT IN (SELECT section_id::text || '-' || to_id::text FROM activite.t_classes_sections_elements); + + +SELECT * FROM activite.cti_update_schema_classes('DURSEJ'); \ No newline at end of file diff --git a/db/data/dbdata_activite_t_classes_sections_elements_etat_sejour.SQL b/db/data/dbdata_activite_t_classes_sections_elements_etat_sejour.SQL new file mode 100644 index 0000000..1da2ac1 --- /dev/null +++ b/db/data/dbdata_activite_t_classes_sections_elements_etat_sejour.SQL @@ -0,0 +1,83 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + t_classes_sections.code AS section_code, + t_etat_sejour.code as to_code, + t_listes_tables.code as table_code, + t_classes.sequence as classe_sequence + FROM + activite.t_classes_sections_elements, + activite.t_classes_sections, + activite.t_classes, + activite.t_listes_tables, + activite.t_etat_sejour + WHERE + t_classes_sections_elements.section_id = t_classes_sections.oid + AND t_classes_sections.classe_id = t_classes.oid + AND t_classes.is_cti = '1' + AND table_id = t_listes_tables.oid + AND t_listes_tables.code = 'ETATSEJOUR' + AND t_classes_sections_elements.to_id = t_etat_sejour.oid + ORDER BY t_classes.sequence, t_classes_sections.code, t_etat_sejour.code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + section_code, + to_code, + table_code, + classe_sequence +) +VALUES +('S1', '0', 'ETATSEJOUR', 10), +('S2', '1', 'ETATSEJOUR', 10), +('S2', '2', 'ETATSEJOUR', 10), +('S3', '3', 'ETATSEJOUR', 10), +('S4', '4', 'ETATSEJOUR', 10), +('S4', '5', 'ETATSEJOUR', 10), +('S5', '6', 'ETATSEJOUR', 10), +('S6', '7', 'ETATSEJOUR', 10), +('S6', '8', 'ETATSEJOUR', 10), +('S7', '9', 'ETATSEJOUR', 10), +('S8', 'A', 'ETATSEJOUR', 10), +('S8', 'C', 'ETATSEJOUR', 10), +('S8', 'R', 'ETATSEJOUR', 10), +('S1', '0', 'ETATSEJOUR', 11), +('S1', '9', 'ETATSEJOUR', 11), +('S2', '1', 'ETATSEJOUR', 11), +('S2', '2', 'ETATSEJOUR', 11), +('S3', '3', 'ETATSEJOUR', 11), +('S3', '4', 'ETATSEJOUR', 11), +('S3', '5', 'ETATSEJOUR', 11), +('S4', '6', 'ETATSEJOUR', 11), +('S5', '7', 'ETATSEJOUR', 11), +('S5', '8', 'ETATSEJOUR', 11), +('S6', 'A', 'ETATSEJOUR', 11), +('S6', 'C', 'ETATSEJOUR', 11), +('S6', 'R', 'ETATSEJOUR', 11) +; + +-- 3/3 : Màj de la table iCTI +INSERT INTO activite.t_classes_sections_elements(section_id, to_id) +SELECT + t_classes_sections.oid, + t_etat_sejour.oid +FROM + w_dbsetup, + activite.t_listes_tables, + activite.t_classes, + activite.t_classes_sections, + activite.t_etat_sejour +WHERE + w_dbsetup.table_code = t_listes_tables.code + AND t_classes.table_id = t_listes_tables.oid + AND t_classes_sections.classe_id = t_classes.oid + AND w_dbsetup.section_code = t_classes_sections.code + AND w_dbsetup.classe_sequence = t_classes.sequence + AND w_dbsetup.to_code = t_etat_sejour.code + AND t_classes_sections.oid::text || '-'::text || t_etat_sejour.oid::text NOT IN (SELECT section_id::text || '-'::text || to_id::text FROM activite.t_classes_sections_elements); + +SELECT * FROM activite.cti_update_schema_classes('ETATSEJOUR'); \ No newline at end of file diff --git a/db/data/dbdata_activite_t_classes_sections_elements_forme_activite.SQL b/db/data/dbdata_activite_t_classes_sections_elements_forme_activite.SQL new file mode 100644 index 0000000..39f3223 --- /dev/null +++ b/db/data/dbdata_activite_t_classes_sections_elements_forme_activite.SQL @@ -0,0 +1,192 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + t_classes_sections.code AS section_code, + t_forme_activite.code as to_code, + t_listes_tables.code as table_code, + t_classes.sequence as classe_sequence + FROM + activite.t_classes_sections_elements, + activite.t_classes_sections, + activite.t_classes, + activite.t_listes_tables, + activite.t_forme_activite + WHERE + t_classes_sections_elements.section_id = t_classes_sections.oid + AND t_classes_sections.classe_id = t_classes.oid + AND t_classes.is_cti = '1' + AND table_id = t_listes_tables.oid + AND t_listes_tables.code = 'FORMEACTIVITE' + AND t_classes_sections_elements.to_id = t_forme_activite.oid + ORDER BY t_classes.sequence, t_classes_sections.code, t_forme_activite.code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + section_code, + to_code, + table_code, + classe_sequence +) +VALUES +('1', '111', 'FORMEACTIVITE', 1), +('1', '112', 'FORMEACTIVITE', 1), +('1', '113', 'FORMEACTIVITE', 1), +('1', '114', 'FORMEACTIVITE', 1), +('1', '117', 'FORMEACTIVITE', 1), +('1', '118', 'FORMEACTIVITE', 1), +('1', '119', 'FORMEACTIVITE', 1), +('1', '121', 'FORMEACTIVITE', 1), +('1', '122', 'FORMEACTIVITE', 1), +('1', '123', 'FORMEACTIVITE', 1), +('1', '124', 'FORMEACTIVITE', 1), +('1', '127', 'FORMEACTIVITE', 1), +('1', '128', 'FORMEACTIVITE', 1), +('1', '129', 'FORMEACTIVITE', 1), +('1', '131', 'FORMEACTIVITE', 1), +('1', '132', 'FORMEACTIVITE', 1), +('1', '133', 'FORMEACTIVITE', 1), +('1', '139', 'FORMEACTIVITE', 1), +('2', '211', 'FORMEACTIVITE', 1), +('2', '212', 'FORMEACTIVITE', 1), +('2', '217', 'FORMEACTIVITE', 1), +('2', '218', 'FORMEACTIVITE', 1), +('2', '219', 'FORMEACTIVITE', 1), +('2', '221', 'FORMEACTIVITE', 1), +('2', '222', 'FORMEACTIVITE', 1), +('2', '227', 'FORMEACTIVITE', 1), +('2', '228', 'FORMEACTIVITE', 1), +('2', '229', 'FORMEACTIVITE', 1), +('3', '311', 'FORMEACTIVITE', 1), +('3', '317', 'FORMEACTIVITE', 1), +('3', '318', 'FORMEACTIVITE', 1), +('3', '319', 'FORMEACTIVITE', 1), +('3', '321', 'FORMEACTIVITE', 1), +('3', '327', 'FORMEACTIVITE', 1), +('3', '328', 'FORMEACTIVITE', 1), +('3', '329', 'FORMEACTIVITE', 1), +('4', '401', 'FORMEACTIVITE', 1), +('5', '501', 'FORMEACTIVITE', 1), +('5', '502', 'FORMEACTIVITE', 1), +('5', '503', 'FORMEACTIVITE', 1), +('7', '701', 'FORMEACTIVITE', 1), +('7', '702', 'FORMEACTIVITE', 1), +('7', '709', 'FORMEACTIVITE', 1), +('9', '***', 'FORMEACTIVITE', 1), +('9', '999', 'FORMEACTIVITE', 1), +('11', '111', 'FORMEACTIVITE', 2), +('11', '121', 'FORMEACTIVITE', 2), +('12', '112', 'FORMEACTIVITE', 2), +('12', '122', 'FORMEACTIVITE', 2), +('13', '113', 'FORMEACTIVITE', 2), +('13', '123', 'FORMEACTIVITE', 2), +('14', '114', 'FORMEACTIVITE', 2), +('14', '124', 'FORMEACTIVITE', 2), +('15', '131', 'FORMEACTIVITE', 2), +('15', '132', 'FORMEACTIVITE', 2), +('15', '133', 'FORMEACTIVITE', 2), +('15', '139', 'FORMEACTIVITE', 2), +('19', '117', 'FORMEACTIVITE', 2), +('19', '118', 'FORMEACTIVITE', 2), +('19', '119', 'FORMEACTIVITE', 2), +('19', '127', 'FORMEACTIVITE', 2), +('19', '128', 'FORMEACTIVITE', 2), +('19', '129', 'FORMEACTIVITE', 2), +('20', '211', 'FORMEACTIVITE', 2), +('20', '212', 'FORMEACTIVITE', 2), +('20', '217', 'FORMEACTIVITE', 2), +('20', '218', 'FORMEACTIVITE', 2), +('20', '219', 'FORMEACTIVITE', 2), +('20', '221', 'FORMEACTIVITE', 2), +('20', '222', 'FORMEACTIVITE', 2), +('20', '227', 'FORMEACTIVITE', 2), +('20', '228', 'FORMEACTIVITE', 2), +('20', '229', 'FORMEACTIVITE', 2), +('30', '311', 'FORMEACTIVITE', 2), +('30', '317', 'FORMEACTIVITE', 2), +('30', '318', 'FORMEACTIVITE', 2), +('30', '319', 'FORMEACTIVITE', 2), +('30', '321', 'FORMEACTIVITE', 2), +('30', '327', 'FORMEACTIVITE', 2), +('30', '328', 'FORMEACTIVITE', 2), +('30', '329', 'FORMEACTIVITE', 2), +('40', '401', 'FORMEACTIVITE', 2), +('50', '501', 'FORMEACTIVITE', 2), +('50', '502', 'FORMEACTIVITE', 2), +('50', '503', 'FORMEACTIVITE', 2), +('70', '701', 'FORMEACTIVITE', 2), +('70', '702', 'FORMEACTIVITE', 2), +('70', '709', 'FORMEACTIVITE', 2), +('99', '***', 'FORMEACTIVITE', 2), +('99', '999', 'FORMEACTIVITE', 2), +('11', '121', 'FORMEACTIVITE', 3), +('11', '122', 'FORMEACTIVITE', 3), +('11', '123', 'FORMEACTIVITE', 3), +('11', '124', 'FORMEACTIVITE', 3), +('11', '127', 'FORMEACTIVITE', 3), +('11', '128', 'FORMEACTIVITE', 3), +('11', '129', 'FORMEACTIVITE', 3), +('12', '111', 'FORMEACTIVITE', 3), +('12', '112', 'FORMEACTIVITE', 3), +('12', '113', 'FORMEACTIVITE', 3), +('12', '114', 'FORMEACTIVITE', 3), +('12', '117', 'FORMEACTIVITE', 3), +('12', '118', 'FORMEACTIVITE', 3), +('12', '119', 'FORMEACTIVITE', 3), +('2', '211', 'FORMEACTIVITE', 3), +('2', '212', 'FORMEACTIVITE', 3), +('2', '217', 'FORMEACTIVITE', 3), +('2', '218', 'FORMEACTIVITE', 3), +('2', '219', 'FORMEACTIVITE', 3), +('2', '221', 'FORMEACTIVITE', 3), +('2', '222', 'FORMEACTIVITE', 3), +('2', '227', 'FORMEACTIVITE', 3), +('2', '228', 'FORMEACTIVITE', 3), +('2', '229', 'FORMEACTIVITE', 3), +('3', '311', 'FORMEACTIVITE', 3), +('3', '317', 'FORMEACTIVITE', 3), +('3', '318', 'FORMEACTIVITE', 3), +('3', '319', 'FORMEACTIVITE', 3), +('3', '321', 'FORMEACTIVITE', 3), +('3', '327', 'FORMEACTIVITE', 3), +('3', '328', 'FORMEACTIVITE', 3), +('3', '329', 'FORMEACTIVITE', 3), +('4', '401', 'FORMEACTIVITE', 3), +('9', '***', 'FORMEACTIVITE', 3), +('9', '131', 'FORMEACTIVITE', 3), +('9', '132', 'FORMEACTIVITE', 3), +('9', '133', 'FORMEACTIVITE', 3), +('9', '139', 'FORMEACTIVITE', 3), +('9', '501', 'FORMEACTIVITE', 3), +('9', '502', 'FORMEACTIVITE', 3), +('9', '503', 'FORMEACTIVITE', 3), +('9', '701', 'FORMEACTIVITE', 3), +('9', '702', 'FORMEACTIVITE', 3), +('9', '709', 'FORMEACTIVITE', 3), +('9', '999', 'FORMEACTIVITE', 3) +; + +-- 3/3 : Màj de la table iCTI +INSERT INTO activite.t_classes_sections_elements(section_id, to_id) +SELECT + t_classes_sections.oid, + t_forme_activite.oid +FROM + w_dbsetup, + activite.t_listes_tables, + activite.t_classes, + activite.t_classes_sections, + activite.t_forme_activite +WHERE + w_dbsetup.table_code = t_listes_tables.code + AND t_classes.table_id = t_listes_tables.oid + AND t_classes_sections.classe_id = t_classes.oid + AND w_dbsetup.section_code = t_classes_sections.code + AND w_dbsetup.classe_sequence = t_classes.sequence + AND w_dbsetup.to_code = t_forme_activite.code + AND t_classes_sections.oid::text || '-'::text || t_forme_activite.oid::text NOT IN (SELECT section_id::text || '-'::text || to_id::text FROM activite.t_classes_sections_elements); + +SELECT * FROM activite.cti_update_schema_classes('FORMEACTIVITE'); \ No newline at end of file diff --git a/db/data/dbdata_activite_t_classes_sections_elements_ghm.SQL b/db/data/dbdata_activite_t_classes_sections_elements_ghm.SQL new file mode 100644 index 0000000..d7600ec --- /dev/null +++ b/db/data/dbdata_activite_t_classes_sections_elements_ghm.SQL @@ -0,0 +1,10086 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + t_classes_sections.code AS section_code, + t_ghm.code as to_code, + t_listes_tables.code as table_code, + t_classes.sequence as classe_sequence + FROM + activite.t_classes_sections_elements, + activite.t_classes_sections, + activite.t_classes, + activite.t_listes_tables, + base.t_ghm + WHERE + t_classes_sections_elements.section_id = t_classes_sections.oid + AND t_classes_sections.classe_id = t_classes.oid + AND t_classes.is_cti = '1' + AND table_id = t_listes_tables.oid + AND t_listes_tables.code = 'GHM' + AND t_classes_sections_elements.to_id = t_ghm.oid + ORDER BY t_classes.sequence, t_classes_sections.code, t_ghm.code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + section_code, + to_code, + table_code, + classe_sequence +) +VALUES +('G001', '06C02Z', 'GHM', 7), +('G001', '06C051', 'GHM', 7), +('G001', '06C052', 'GHM', 7), +('G001', '06C053', 'GHM', 7), +('G001', '06C054', 'GHM', 7), +('G001', '06C05Z', 'GHM', 7), +('G001', '06C161', 'GHM', 7), +('G001', '06C162', 'GHM', 7), +('G001', '06C163', 'GHM', 7), +('G001', '06C164', 'GHM', 7), +('G001', '06C16V', 'GHM', 7), +('G001', '06C16W', 'GHM', 7), +('G001', '06C201', 'GHM', 7), +('G001', '06C202', 'GHM', 7), +('G001', '06C203', 'GHM', 7), +('G001', '06C204', 'GHM', 7), +('G001', '06C221', 'GHM', 7), +('G001', '06C222', 'GHM', 7), +('G001', '06C223', 'GHM', 7), +('G001', '06C224', 'GHM', 7), +('G001', '10C04Z', 'GHM', 7), +('G001', '10C091', 'GHM', 7), +('G001', '10C092', 'GHM', 7), +('G001', '10C093', 'GHM', 7), +('G001', '10C094', 'GHM', 7), +('G001', '10C09Z', 'GHM', 7), +('G002', '06C021', 'GHM', 7), +('G002', '06C022', 'GHM', 7), +('G002', '06C023', 'GHM', 7), +('G002', '06C024', 'GHM', 7), +('G002', '06C031', 'GHM', 7), +('G002', '06C032', 'GHM', 7), +('G002', '06C033', 'GHM', 7), +('G002', '06C034', 'GHM', 7), +('G002', '06C03V', 'GHM', 7), +('G002', '06C03W', 'GHM', 7), +('G002', '06C041', 'GHM', 7), +('G002', '06C042', 'GHM', 7), +('G002', '06C043', 'GHM', 7), +('G002', '06C044', 'GHM', 7), +('G002', '06C04V', 'GHM', 7), +('G002', '06C04W', 'GHM', 7), +('G003', '06C081', 'GHM', 7), +('G003', '06C082', 'GHM', 7), +('G003', '06C083', 'GHM', 7), +('G003', '06C084', 'GHM', 7), +('G003', '06C08V', 'GHM', 7), +('G003', '06C08W', 'GHM', 7), +('G003', '06C091', 'GHM', 7), +('G003', '06C092', 'GHM', 7), +('G003', '06C093', 'GHM', 7), +('G003', '06C094', 'GHM', 7), +('G003', '06C09V', 'GHM', 7), +('G003', '06C09W', 'GHM', 7), +('G004', '06C101', 'GHM', 7), +('G004', '06C102', 'GHM', 7), +('G004', '06C103', 'GHM', 7), +('G004', '06C104', 'GHM', 7), +('G004', '06C10J', 'GHM', 7), +('G004', '06C10Z', 'GHM', 7), +('G004', '06C111', 'GHM', 7), +('G004', '06C112', 'GHM', 7), +('G004', '06C113', 'GHM', 7), +('G004', '06C114', 'GHM', 7), +('G004', '06C11J', 'GHM', 7), +('G004', '06C11V', 'GHM', 7), +('G004', '06C11W', 'GHM', 7), +('G004', '06C121', 'GHM', 7), +('G004', '06C122', 'GHM', 7), +('G004', '06C123', 'GHM', 7), +('G004', '06C124', 'GHM', 7), +('G004', '06C12J', 'GHM', 7), +('G004', '06C12V', 'GHM', 7), +('G004', '06C12W', 'GHM', 7), +('G004', '06C241', 'GHM', 7), +('G004', '06C242', 'GHM', 7), +('G004', '06C243', 'GHM', 7), +('G004', '06C244', 'GHM', 7), +('G004', '06C24J', 'GHM', 7), +('G004', '06C251', 'GHM', 7), +('G004', '06C252', 'GHM', 7), +('G004', '06C253', 'GHM', 7), +('G004', '06C254', 'GHM', 7), +('G004', '06C25J', 'GHM', 7), +('G005', '06M061', 'GHM', 7), +('G005', '06M062', 'GHM', 7), +('G005', '06M063', 'GHM', 7), +('G005', '06M064', 'GHM', 7), +('G005', '06M06T', 'GHM', 7), +('G005', '06M06V', 'GHM', 7), +('G005', '06M06W', 'GHM', 7), +('G006', '06C071', 'GHM', 7), +('G006', '06C072', 'GHM', 7), +('G006', '06C073', 'GHM', 7), +('G006', '06C074', 'GHM', 7), +('G006', '06C07V', 'GHM', 7), +('G006', '06C07W', 'GHM', 7), +('G007', '06C141', 'GHM', 7), +('G007', '06C142', 'GHM', 7), +('G007', '06C143', 'GHM', 7), +('G007', '06C144', 'GHM', 7), +('G007', '06C14J', 'GHM', 7), +('G007', '06C14V', 'GHM', 7), +('G007', '06C14W', 'GHM', 7), +('G007', '06C191', 'GHM', 7), +('G007', '06C192', 'GHM', 7), +('G007', '06C193', 'GHM', 7), +('G007', '06C194', 'GHM', 7), +('G007', '06C19J', 'GHM', 7), +('G007', '09C081', 'GHM', 7), +('G007', '09C082', 'GHM', 7), +('G007', '09C083', 'GHM', 7), +('G007', '09C084', 'GHM', 7), +('G007', '09C08J', 'GHM', 7), +('G007', '09C08Z', 'GHM', 7), +('G007', '09C131', 'GHM', 7), +('G007', '09C132', 'GHM', 7), +('G007', '09C133', 'GHM', 7), +('G007', '09C134', 'GHM', 7), +('G007', '09C13J', 'GHM', 7), +('G008', '06C131', 'GHM', 7), +('G008', '06C132', 'GHM', 7), +('G008', '06C133', 'GHM', 7), +('G008', '06C134', 'GHM', 7), +('G008', '06C13V', 'GHM', 7), +('G008', '06C13W', 'GHM', 7), +('G008', '06C151', 'GHM', 7), +('G008', '06C152', 'GHM', 7), +('G008', '06C153', 'GHM', 7), +('G008', '06C154', 'GHM', 7), +('G008', '06C15V', 'GHM', 7), +('G008', '06C15W', 'GHM', 7), +('G008', '06C211', 'GHM', 7), +('G008', '06C212', 'GHM', 7), +('G008', '06C213', 'GHM', 7), +('G008', '06C214', 'GHM', 7), +('G008', '06C231', 'GHM', 7), +('G008', '06C232', 'GHM', 7), +('G008', '06C233', 'GHM', 7), +('G008', '06C234', 'GHM', 7), +('G008', '06C23J', 'GHM', 7), +('G008', '10C131', 'GHM', 7), +('G008', '10C132', 'GHM', 7), +('G008', '10C133', 'GHM', 7), +('G008', '10C134', 'GHM', 7), +('G008', '10C13Z', 'GHM', 7), +('G008', '16C021', 'GHM', 7), +('G008', '16C022', 'GHM', 7), +('G008', '16C023', 'GHM', 7), +('G008', '16C024', 'GHM', 7), +('G008', '16C02Z', 'GHM', 7), +('G009', '07C131', 'GHM', 7), +('G009', '07C132', 'GHM', 7), +('G009', '07C133', 'GHM', 7), +('G009', '07C134', 'GHM', 7), +('G009', '07C141', 'GHM', 7), +('G009', '07C142', 'GHM', 7), +('G009', '07C143', 'GHM', 7), +('G009', '07C144', 'GHM', 7), +('G009', '07C14J', 'GHM', 7), +('G010', '07C061', 'GHM', 7), +('G010', '07C062', 'GHM', 7), +('G010', '07C063', 'GHM', 7), +('G010', '07C064', 'GHM', 7), +('G010', '07C06Z', 'GHM', 7), +('G010', '07C071', 'GHM', 7), +('G010', '07C072', 'GHM', 7), +('G010', '07C073', 'GHM', 7), +('G010', '07C074', 'GHM', 7), +('G010', '07C07Z', 'GHM', 7), +('G010', '07C081', 'GHM', 7), +('G010', '07C082', 'GHM', 7), +('G010', '07C083', 'GHM', 7), +('G010', '07C084', 'GHM', 7), +('G010', '07C08Z', 'GHM', 7), +('G010', '07C091', 'GHM', 7), +('G010', '07C092', 'GHM', 7), +('G010', '07C093', 'GHM', 7), +('G010', '07C094', 'GHM', 7), +('G010', '07C09V', 'GHM', 7), +('G010', '07C09W', 'GHM', 7), +('G010', '07C101', 'GHM', 7), +('G010', '07C102', 'GHM', 7), +('G010', '07C103', 'GHM', 7), +('G010', '07C104', 'GHM', 7), +('G010', '07C10V', 'GHM', 7), +('G010', '07C10W', 'GHM', 7), +('G010', '07C111', 'GHM', 7), +('G010', '07C112', 'GHM', 7), +('G010', '07C113', 'GHM', 7), +('G010', '07C114', 'GHM', 7), +('G010', '07C11V', 'GHM', 7), +('G010', '07C11W', 'GHM', 7), +('G010', '07C121', 'GHM', 7), +('G010', '07C122', 'GHM', 7), +('G010', '07C123', 'GHM', 7), +('G010', '07C124', 'GHM', 7), +('G010', '07C12V', 'GHM', 7), +('G010', '07C12W', 'GHM', 7), +('G011', '06M051', 'GHM', 7), +('G011', '06M052', 'GHM', 7), +('G011', '06M053', 'GHM', 7), +('G011', '06M054', 'GHM', 7), +('G011', '06M05T', 'GHM', 7), +('G011', '06M05V', 'GHM', 7), +('G011', '06M05W', 'GHM', 7), +('G011', '06M131', 'GHM', 7), +('G011', '06M132', 'GHM', 7), +('G011', '06M133', 'GHM', 7), +('G011', '06M134', 'GHM', 7), +('G011', '06M13T', 'GHM', 7), +('G012', '06M041', 'GHM', 7), +('G012', '06M042', 'GHM', 7), +('G012', '06M043', 'GHM', 7), +('G012', '06M044', 'GHM', 7), +('G012', '06M04T', 'GHM', 7), +('G012', '06M04V', 'GHM', 7), +('G012', '06M04W', 'GHM', 7), +('G012', '06M101', 'GHM', 7), +('G012', '06M102', 'GHM', 7), +('G012', '06M103', 'GHM', 7), +('G012', '06M104', 'GHM', 7), +('G012', '06M10Z', 'GHM', 7), +('G012', '06M111', 'GHM', 7), +('G012', '06M112', 'GHM', 7), +('G012', '06M113', 'GHM', 7), +('G012', '06M114', 'GHM', 7), +('G012', '06M11T', 'GHM', 7), +('G012', '06M11V', 'GHM', 7), +('G012', '06M11W', 'GHM', 7), +('G013', '06M15Z', 'GHM', 7), +('G013', '07M121', 'GHM', 7), +('G013', '07M122', 'GHM', 7), +('G013', '07M123', 'GHM', 7), +('G013', '07M124', 'GHM', 7), +('G014', '06M071', 'GHM', 7), +('G014', '06M072', 'GHM', 7), +('G014', '06M073', 'GHM', 7), +('G014', '06M074', 'GHM', 7), +('G014', '06M07T', 'GHM', 7), +('G014', '06M07V', 'GHM', 7), +('G014', '06M07W', 'GHM', 7), +('G015', '06M141', 'GHM', 7), +('G015', '06M142', 'GHM', 7), +('G015', '06M143', 'GHM', 7), +('G015', '06M144', 'GHM', 7), +('G015', '06M17T', 'GHM', 7), +('G015', '06M17Z', 'GHM', 7), +('G015', '06M191', 'GHM', 7), +('G015', '06M192', 'GHM', 7), +('G015', '06M193', 'GHM', 7), +('G015', '06M194', 'GHM', 7), +('G015', '06M201', 'GHM', 7), +('G015', '06M202', 'GHM', 7), +('G015', '06M203', 'GHM', 7), +('G015', '06M204', 'GHM', 7), +('G015', '06M20T', 'GHM', 7), +('G016', '06M021', 'GHM', 7), +('G016', '06M022', 'GHM', 7), +('G016', '06M023', 'GHM', 7), +('G016', '06M024', 'GHM', 7), +('G016', '06M02T', 'GHM', 7), +('G016', '06M02V', 'GHM', 7), +('G016', '06M02W', 'GHM', 7), +('G016', '06M031', 'GHM', 7), +('G016', '06M032', 'GHM', 7), +('G016', '06M033', 'GHM', 7), +('G016', '06M034', 'GHM', 7), +('G016', '06M03T', 'GHM', 7), +('G016', '06M03V', 'GHM', 7), +('G016', '06M03W', 'GHM', 7), +('G017', '06M081', 'GHM', 7), +('G017', '06M082', 'GHM', 7), +('G017', '06M083', 'GHM', 7), +('G017', '06M084', 'GHM', 7), +('G017', '06M08T', 'GHM', 7), +('G017', '06M08Z', 'GHM', 7), +('G017', '06M091', 'GHM', 7), +('G017', '06M092', 'GHM', 7), +('G017', '06M093', 'GHM', 7), +('G017', '06M094', 'GHM', 7), +('G017', '06M09T', 'GHM', 7), +('G017', '06M09V', 'GHM', 7), +('G017', '06M09W', 'GHM', 7), +('G017', '06M211', 'GHM', 7), +('G017', '06M212', 'GHM', 7), +('G017', '06M213', 'GHM', 7), +('G017', '06M214', 'GHM', 7), +('G018', '07M071', 'GHM', 7), +('G018', '07M072', 'GHM', 7), +('G018', '07M073', 'GHM', 7), +('G018', '07M074', 'GHM', 7), +('G018', '07M07T', 'GHM', 7), +('G018', '07M081', 'GHM', 7), +('G018', '07M082', 'GHM', 7), +('G018', '07M083', 'GHM', 7), +('G018', '07M084', 'GHM', 7), +('G018', '07M08T', 'GHM', 7), +('G018', '07M091', 'GHM', 7), +('G018', '07M092', 'GHM', 7), +('G018', '07M093', 'GHM', 7), +('G018', '07M094', 'GHM', 7), +('G018', '07M09T', 'GHM', 7), +('G019', '07M061', 'GHM', 7), +('G019', '07M062', 'GHM', 7), +('G019', '07M063', 'GHM', 7), +('G019', '07M064', 'GHM', 7), +('G019', '07M06T', 'GHM', 7), +('G019', '07M06V', 'GHM', 7), +('G019', '07M06W', 'GHM', 7), +('G019', '07M101', 'GHM', 7), +('G019', '07M102', 'GHM', 7), +('G019', '07M103', 'GHM', 7), +('G019', '07M104', 'GHM', 7), +('G019', '07M10T', 'GHM', 7), +('G019', '07M111', 'GHM', 7), +('G019', '07M112', 'GHM', 7), +('G019', '07M113', 'GHM', 7), +('G019', '07M114', 'GHM', 7), +('G019', '07M11T', 'GHM', 7), +('G019', '07M151', 'GHM', 7), +('G019', '07M152', 'GHM', 7), +('G019', '07M153', 'GHM', 7), +('G019', '07M154', 'GHM', 7), +('G019', '07M15T', 'GHM', 7), +('G020', '07M021', 'GHM', 7), +('G020', '07M022', 'GHM', 7), +('G020', '07M023', 'GHM', 7), +('G020', '07M024', 'GHM', 7), +('G020', '07M02T', 'GHM', 7), +('G020', '07M02V', 'GHM', 7), +('G020', '07M02W', 'GHM', 7), +('G020', '07M041', 'GHM', 7), +('G020', '07M042', 'GHM', 7), +('G020', '07M043', 'GHM', 7), +('G020', '07M044', 'GHM', 7), +('G020', '07M04T', 'GHM', 7), +('G020', '07M04V', 'GHM', 7), +('G020', '07M04W', 'GHM', 7), +('G020', '07M161', 'GHM', 7), +('G020', '07M162', 'GHM', 7), +('G020', '07M163', 'GHM', 7), +('G020', '07M164', 'GHM', 7), +('G021', '06M121', 'GHM', 7), +('G021', '06M122', 'GHM', 7), +('G021', '06M123', 'GHM', 7), +('G021', '06M124', 'GHM', 7), +('G021', '06M12T', 'GHM', 7), +('G021', '06M18T', 'GHM', 7), +('G021', '06M18Z', 'GHM', 7), +('G021', '07M14T', 'GHM', 7), +('G021', '07M14Z', 'GHM', 7), +('G022', '06K03J', 'GHM', 7), +('G022', '06K04J', 'GHM', 7), +('G022', '06K05J', 'GHM', 7), +('G022', '07K02Z', 'GHM', 7), +('G022', '07K04J', 'GHM', 7), +('G022', '07K05J', 'GHM', 7), +('G023', '06M16Z', 'GHM', 7), +('G023', '07M13Z', 'GHM', 7), +('G024', '08C021', 'GHM', 7), +('G024', '08C022', 'GHM', 7), +('G024', '08C023', 'GHM', 7), +('G024', '08C024', 'GHM', 7), +('G024', '08C02Z', 'GHM', 7), +('G024', '08C041', 'GHM', 7), +('G024', '08C042', 'GHM', 7), +('G024', '08C043', 'GHM', 7), +('G024', '08C044', 'GHM', 7), +('G024', '08C04Z', 'GHM', 7), +('G024', '08C221', 'GHM', 7), +('G024', '08C222', 'GHM', 7), +('G024', '08C223', 'GHM', 7), +('G024', '08C224', 'GHM', 7), +('G024', '08C22Z', 'GHM', 7), +('G024', '08C241', 'GHM', 7), +('G024', '08C242', 'GHM', 7), +('G024', '08C243', 'GHM', 7), +('G024', '08C244', 'GHM', 7), +('G024', '08C24Z', 'GHM', 7), +('G024', '08C251', 'GHM', 7), +('G024', '08C252', 'GHM', 7), +('G024', '08C253', 'GHM', 7), +('G024', '08C254', 'GHM', 7), +('G024', '08C25Z', 'GHM', 7), +('G024', '08C471', 'GHM', 7), +('G024', '08C472', 'GHM', 7), +('G024', '08C473', 'GHM', 7), +('G024', '08C474', 'GHM', 7), +('G024', '08C481', 'GHM', 7), +('G024', '08C482', 'GHM', 7), +('G024', '08C483', 'GHM', 7), +('G024', '08C484', 'GHM', 7), +('G024', '08C491', 'GHM', 7), +('G024', '08C492', 'GHM', 7), +('G024', '08C493', 'GHM', 7), +('G024', '08C494', 'GHM', 7), +('G024', '08C501', 'GHM', 7), +('G024', '08C502', 'GHM', 7), +('G024', '08C503', 'GHM', 7), +('G024', '08C504', 'GHM', 7), +('G025', '08C121', 'GHM', 7), +('G025', '08C122', 'GHM', 7), +('G025', '08C123', 'GHM', 7), +('G025', '08C124', 'GHM', 7), +('G025', '08C12J', 'GHM', 7), +('G025', '08C12Z', 'GHM', 7), +('G025', '08C19Z', 'GHM', 7), +('G025', '08C341', 'GHM', 7), +('G025', '08C342', 'GHM', 7), +('G025', '08C343', 'GHM', 7), +('G025', '08C344', 'GHM', 7), +('G025', '08C34J', 'GHM', 7), +('G025', '08C381', 'GHM', 7), +('G025', '08C382', 'GHM', 7), +('G025', '08C383', 'GHM', 7), +('G025', '08C384', 'GHM', 7), +('G025', '08C38J', 'GHM', 7), +('G025', '08C401', 'GHM', 7), +('G025', '08C402', 'GHM', 7), +('G025', '08C403', 'GHM', 7), +('G025', '08C404', 'GHM', 7), +('G025', '08C40J', 'GHM', 7), +('G025', '08C451', 'GHM', 7), +('G025', '08C452', 'GHM', 7), +('G025', '08C453', 'GHM', 7), +('G025', '08C454', 'GHM', 7), +('G025', '08C45J', 'GHM', 7), +('G025', '08C581', 'GHM', 7), +('G025', '08C582', 'GHM', 7), +('G025', '08C583', 'GHM', 7), +('G025', '08C584', 'GHM', 7), +('G025', '08C58J', 'GHM', 7), +('G026', '08K02J', 'GHM', 7), +('G026', '08K031', 'GHM', 7), +('G026', '08K032', 'GHM', 7), +('G026', '08K033', 'GHM', 7), +('G026', '08K034', 'GHM', 7), +('G026', '08K041', 'GHM', 7), +('G026', '08K042', 'GHM', 7), +('G026', '08K043', 'GHM', 7), +('G026', '08K044', 'GHM', 7), +('G026', '08K051', 'GHM', 7), +('G026', '08K052', 'GHM', 7), +('G026', '08K053', 'GHM', 7), +('G026', '08K054', 'GHM', 7), +('G026', '08K05J', 'GHM', 7), +('G026', '08K06Z', 'GHM', 7), +('G026', '08M13Z', 'GHM', 7), +('G027', '08C131', 'GHM', 7), +('G027', '08C132', 'GHM', 7), +('G027', '08C133', 'GHM', 7), +('G027', '08C134', 'GHM', 7), +('G027', '08C13J', 'GHM', 7), +('G027', '08C13Z', 'GHM', 7), +('G027', '08C141', 'GHM', 7), +('G027', '08C142', 'GHM', 7), +('G027', '08C143', 'GHM', 7), +('G027', '08C144', 'GHM', 7), +('G027', '08C14J', 'GHM', 7), +('G027', '08C14Z', 'GHM', 7), +('G028', '05C121', 'GHM', 7), +('G028', '05C122', 'GHM', 7), +('G028', '05C123', 'GHM', 7), +('G028', '05C124', 'GHM', 7), +('G028', '05C12V', 'GHM', 7), +('G028', '05C12W', 'GHM', 7), +('G028', '05C131', 'GHM', 7), +('G028', '05C132', 'GHM', 7), +('G028', '05C133', 'GHM', 7), +('G028', '05C134', 'GHM', 7), +('G028', '05C13J', 'GHM', 7), +('G028', '05C13V', 'GHM', 7), +('G028', '05C13W', 'GHM', 7), +('G028', '08C061', 'GHM', 7), +('G028', '08C062', 'GHM', 7), +('G028', '08C063', 'GHM', 7), +('G028', '08C064', 'GHM', 7), +('G028', '08C06Z', 'GHM', 7), +('G029', '01C07Z', 'GHM', 7), +('G029', '01C131', 'GHM', 7), +('G029', '01C132', 'GHM', 7), +('G029', '01C133', 'GHM', 7), +('G029', '01C134', 'GHM', 7), +('G029', '01C13J', 'GHM', 7), +('G029', '01C13Z', 'GHM', 7), +('G029', '01C141', 'GHM', 7), +('G029', '01C142', 'GHM', 7), +('G029', '01C143', 'GHM', 7), +('G029', '01C144', 'GHM', 7), +('G029', '01C14J', 'GHM', 7), +('G029', '01C151', 'GHM', 7), +('G029', '01C152', 'GHM', 7), +('G029', '01C153', 'GHM', 7), +('G029', '01C154', 'GHM', 7), +('G029', '01C15J', 'GHM', 7), +('G029', '08C17Z', 'GHM', 7), +('G029', '08C411', 'GHM', 7), +('G029', '08C412', 'GHM', 7), +('G029', '08C413', 'GHM', 7), +('G029', '08C414', 'GHM', 7), +('G029', '08C41J', 'GHM', 7), +('G029', '08C431', 'GHM', 7), +('G029', '08C432', 'GHM', 7), +('G029', '08C433', 'GHM', 7), +('G029', '08C434', 'GHM', 7), +('G029', '08C43J', 'GHM', 7), +('G029', '08C441', 'GHM', 7), +('G029', '08C442', 'GHM', 7), +('G029', '08C443', 'GHM', 7), +('G029', '08C444', 'GHM', 7), +('G029', '08C44J', 'GHM', 7), +('G029', '08C591', 'GHM', 7), +('G029', '08C592', 'GHM', 7), +('G029', '08C593', 'GHM', 7), +('G029', '08C594', 'GHM', 7), +('G029', '08C59J', 'GHM', 7), +('G029', '08C601', 'GHM', 7), +('G029', '08C602', 'GHM', 7), +('G029', '08C603', 'GHM', 7), +('G029', '08C604', 'GHM', 7), +('G029', '08C60J', 'GHM', 7), +('G029', '21C041', 'GHM', 7), +('G029', '21C042', 'GHM', 7), +('G029', '21C043', 'GHM', 7), +('G029', '21C044', 'GHM', 7), +('G029', '21C04J', 'GHM', 7), +('G029', '21C04Z', 'GHM', 7), +('G030', '08C561', 'GHM', 7), +('G030', '08C562', 'GHM', 7), +('G030', '08C563', 'GHM', 7), +('G030', '08C564', 'GHM', 7), +('G030', '08C611', 'GHM', 7), +('G030', '08C612', 'GHM', 7), +('G030', '08C613', 'GHM', 7), +('G030', '08C614', 'GHM', 7), +('G030', '08C621', 'GHM', 7), +('G030', '08C622', 'GHM', 7), +('G030', '08C623', 'GHM', 7), +('G030', '08C624', 'GHM', 7), +('G030', '08C62J', 'GHM', 7), +('G031', '08C08Z', 'GHM', 7), +('G031', '08C311', 'GHM', 7), +('G031', '08C312', 'GHM', 7), +('G031', '08C313', 'GHM', 7), +('G031', '08C314', 'GHM', 7), +('G031', '08C321', 'GHM', 7), +('G031', '08C322', 'GHM', 7), +('G031', '08C323', 'GHM', 7), +('G031', '08C324', 'GHM', 7), +('G031', '08C32J', 'GHM', 7), +('G031', '08C531', 'GHM', 7), +('G031', '08C532', 'GHM', 7), +('G031', '08C533', 'GHM', 7), +('G031', '08C534', 'GHM', 7), +('G031', '08C541', 'GHM', 7), +('G031', '08C542', 'GHM', 7), +('G031', '08C543', 'GHM', 7), +('G031', '08C544', 'GHM', 7), +('G031', '08C54J', 'GHM', 7), +('G031', '08C571', 'GHM', 7), +('G031', '08C572', 'GHM', 7), +('G031', '08C573', 'GHM', 7), +('G031', '08C574', 'GHM', 7), +('G031', '08C57J', 'GHM', 7), +('G032', '08C331', 'GHM', 7), +('G032', '08C332', 'GHM', 7), +('G032', '08C333', 'GHM', 7), +('G032', '08C334', 'GHM', 7), +('G032', '08C361', 'GHM', 7), +('G032', '08C362', 'GHM', 7), +('G032', '08C363', 'GHM', 7), +('G032', '08C364', 'GHM', 7), +('G032', '08C36J', 'GHM', 7), +('G032', '08C371', 'GHM', 7), +('G032', '08C372', 'GHM', 7), +('G032', '08C373', 'GHM', 7), +('G032', '08C374', 'GHM', 7), +('G032', '08C37J', 'GHM', 7), +('G032', '08C551', 'GHM', 7), +('G032', '08C552', 'GHM', 7), +('G032', '08C553', 'GHM', 7), +('G032', '08C554', 'GHM', 7), +('G033', '08C351', 'GHM', 7), +('G033', '08C352', 'GHM', 7), +('G033', '08C353', 'GHM', 7), +('G033', '08C354', 'GHM', 7), +('G033', '08C35J', 'GHM', 7), +('G033', '08C391', 'GHM', 7), +('G033', '08C392', 'GHM', 7), +('G033', '08C393', 'GHM', 7), +('G033', '08C394', 'GHM', 7), +('G033', '08C39J', 'GHM', 7), +('G034', '08C421', 'GHM', 7), +('G034', '08C422', 'GHM', 7), +('G034', '08C423', 'GHM', 7), +('G034', '08C424', 'GHM', 7), +('G034', '08C42J', 'GHM', 7), +('G034', '08C461', 'GHM', 7), +('G034', '08C462', 'GHM', 7), +('G034', '08C463', 'GHM', 7), +('G034', '08C464', 'GHM', 7), +('G034', '08C46J', 'GHM', 7), +('G035', '08C291', 'GHM', 7), +('G035', '08C292', 'GHM', 7), +('G035', '08C293', 'GHM', 7), +('G035', '08C294', 'GHM', 7), +('G035', '08C29J', 'GHM', 7), +('G035', '08C29Z', 'GHM', 7), +('G036', '08M02Z', 'GHM', 7), +('G036', '08M041', 'GHM', 7), +('G036', '08M042', 'GHM', 7), +('G036', '08M043', 'GHM', 7), +('G036', '08M044', 'GHM', 7), +('G036', '08M04T', 'GHM', 7), +('G036', '08M04V', 'GHM', 7), +('G036', '08M04W', 'GHM', 7), +('G036', '08M051', 'GHM', 7), +('G036', '08M052', 'GHM', 7), +('G036', '08M053', 'GHM', 7), +('G036', '08M054', 'GHM', 7), +('G036', '08M05T', 'GHM', 7), +('G036', '08M05Z', 'GHM', 7), +('G036', '08M061', 'GHM', 7), +('G036', '08M062', 'GHM', 7), +('G036', '08M063', 'GHM', 7), +('G036', '08M064', 'GHM', 7), +('G036', '08M06T', 'GHM', 7), +('G036', '08M06Z', 'GHM', 7), +('G036', '08M071', 'GHM', 7), +('G036', '08M072', 'GHM', 7), +('G036', '08M073', 'GHM', 7), +('G036', '08M074', 'GHM', 7), +('G036', '08M07T', 'GHM', 7), +('G036', '08M07V', 'GHM', 7), +('G036', '08M07W', 'GHM', 7), +('G036', '08M081', 'GHM', 7), +('G036', '08M082', 'GHM', 7), +('G036', '08M083', 'GHM', 7), +('G036', '08M084', 'GHM', 7), +('G036', '08M08T', 'GHM', 7), +('G036', '08M08Z', 'GHM', 7), +('G036', '08M201', 'GHM', 7), +('G036', '08M202', 'GHM', 7), +('G036', '08M203', 'GHM', 7), +('G036', '08M204', 'GHM', 7), +('G036', '08M211', 'GHM', 7), +('G036', '08M212', 'GHM', 7), +('G036', '08M213', 'GHM', 7), +('G036', '08M214', 'GHM', 7), +('G036', '08M221', 'GHM', 7), +('G036', '08M222', 'GHM', 7), +('G036', '08M223', 'GHM', 7), +('G036', '08M224', 'GHM', 7), +('G036', '08M231', 'GHM', 7), +('G036', '08M232', 'GHM', 7), +('G036', '08M233', 'GHM', 7), +('G036', '08M234', 'GHM', 7), +('G036', '08M331', 'GHM', 7), +('G036', '08M332', 'GHM', 7), +('G036', '08M333', 'GHM', 7), +('G036', '08M334', 'GHM', 7), +('G036', '08M33T', 'GHM', 7), +('G036', '08M371', 'GHM', 7), +('G036', '08M372', 'GHM', 7), +('G036', '08M373', 'GHM', 7), +('G036', '08M374', 'GHM', 7), +('G036', '08M37T', 'GHM', 7), +('G036', '21M061', 'GHM', 7), +('G036', '21M062', 'GHM', 7), +('G036', '21M063', 'GHM', 7), +('G036', '21M064', 'GHM', 7), +('G036', '21M06Z', 'GHM', 7), +('G036', '21M071', 'GHM', 7), +('G036', '21M072', 'GHM', 7), +('G036', '21M073', 'GHM', 7), +('G036', '21M074', 'GHM', 7), +('G036', '21M07T', 'GHM', 7), +('G036', '21M07V', 'GHM', 7), +('G036', '21M07W', 'GHM', 7), +('G037', '26C021', 'GHM', 7), +('G037', '26C022', 'GHM', 7), +('G037', '26C023', 'GHM', 7), +('G037', '26C024', 'GHM', 7), +('G037', '26C02Z', 'GHM', 7), +('G038', '08M241', 'GHM', 7), +('G038', '08M242', 'GHM', 7), +('G038', '08M243', 'GHM', 7), +('G038', '08M244', 'GHM', 7), +('G038', '08M24T', 'GHM', 7), +('G038', '08M251', 'GHM', 7), +('G038', '08M252', 'GHM', 7), +('G038', '08M253', 'GHM', 7), +('G038', '08M254', 'GHM', 7), +('G038', '08M25T', 'GHM', 7), +('G039', '08M091', 'GHM', 7), +('G039', '08M092', 'GHM', 7), +('G039', '08M093', 'GHM', 7), +('G039', '08M094', 'GHM', 7), +('G039', '08M09T', 'GHM', 7), +('G039', '08M09Z', 'GHM', 7), +('G039', '08M101', 'GHM', 7), +('G039', '08M102', 'GHM', 7), +('G039', '08M103', 'GHM', 7), +('G039', '08M104', 'GHM', 7), +('G039', '08M10T', 'GHM', 7), +('G039', '08M10V', 'GHM', 7), +('G039', '08M10W', 'GHM', 7), +('G039', '08M271', 'GHM', 7), +('G039', '08M272', 'GHM', 7), +('G039', '08M273', 'GHM', 7), +('G039', '08M274', 'GHM', 7), +('G039', '08M27T', 'GHM', 7), +('G039', '08M281', 'GHM', 7), +('G039', '08M282', 'GHM', 7), +('G039', '08M283', 'GHM', 7), +('G039', '08M284', 'GHM', 7), +('G039', '08M28T', 'GHM', 7), +('G039', '08M291', 'GHM', 7), +('G039', '08M292', 'GHM', 7), +('G039', '08M293', 'GHM', 7), +('G039', '08M294', 'GHM', 7), +('G039', '08M29T', 'GHM', 7), +('G039', '08M301', 'GHM', 7), +('G039', '08M302', 'GHM', 7), +('G039', '08M303', 'GHM', 7), +('G039', '08M304', 'GHM', 7), +('G039', '08M30T', 'GHM', 7), +('G039', '08M321', 'GHM', 7), +('G039', '08M322', 'GHM', 7), +('G039', '08M323', 'GHM', 7), +('G039', '08M324', 'GHM', 7), +('G039', '08M32T', 'GHM', 7), +('G039', '08M341', 'GHM', 7), +('G039', '08M342', 'GHM', 7), +('G039', '08M343', 'GHM', 7), +('G039', '08M344', 'GHM', 7), +('G039', '08M34T', 'GHM', 7), +('G039', '08M36T', 'GHM', 7), +('G039', '08M36Z', 'GHM', 7), +('G040', '08M141', 'GHM', 7), +('G040', '08M142', 'GHM', 7), +('G040', '08M143', 'GHM', 7), +('G040', '08M144', 'GHM', 7), +('G040', '08M14T', 'GHM', 7), +('G040', '08M14V', 'GHM', 7), +('G040', '08M14W', 'GHM', 7), +('G040', '08M151', 'GHM', 7), +('G040', '08M152', 'GHM', 7), +('G040', '08M153', 'GHM', 7), +('G040', '08M154', 'GHM', 7), +('G040', '08M15T', 'GHM', 7), +('G040', '08M15V', 'GHM', 7), +('G040', '08M15W', 'GHM', 7), +('G040', '08M181', 'GHM', 7), +('G040', '08M182', 'GHM', 7), +('G040', '08M183', 'GHM', 7), +('G040', '08M184', 'GHM', 7), +('G040', '08M18T', 'GHM', 7), +('G040', '08M18Z', 'GHM', 7), +('G040', '08M191', 'GHM', 7), +('G040', '08M192', 'GHM', 7), +('G040', '08M193', 'GHM', 7), +('G040', '08M194', 'GHM', 7), +('G040', '08M19T', 'GHM', 7), +('G040', '08M19V', 'GHM', 7), +('G040', '08M19W', 'GHM', 7), +('G041', '01C051', 'GHM', 7), +('G041', '01C052', 'GHM', 7), +('G041', '01C053', 'GHM', 7), +('G041', '01C054', 'GHM', 7), +('G041', '01C05V', 'GHM', 7), +('G041', '01C05W', 'GHM', 7), +('G041', '08C26Z', 'GHM', 7), +('G041', '08C271', 'GHM', 7), +('G041', '08C272', 'GHM', 7), +('G041', '08C273', 'GHM', 7), +('G041', '08C274', 'GHM', 7), +('G041', '08C27V', 'GHM', 7), +('G041', '08C27W', 'GHM', 7), +('G041', '08C511', 'GHM', 7), +('G041', '08C512', 'GHM', 7), +('G041', '08C513', 'GHM', 7), +('G041', '08C514', 'GHM', 7), +('G041', '08C521', 'GHM', 7), +('G041', '08C522', 'GHM', 7), +('G041', '08C523', 'GHM', 7), +('G041', '08C524', 'GHM', 7), +('G042', '08M35Z', 'GHM', 7), +('G043', '01C031', 'GHM', 7), +('G043', '01C032', 'GHM', 7), +('G043', '01C033', 'GHM', 7), +('G043', '01C034', 'GHM', 7), +('G043', '01C03V', 'GHM', 7), +('G043', '01C03W', 'GHM', 7), +('G044', '01C02Z', 'GHM', 7), +('G044', '01C041', 'GHM', 7), +('G044', '01C042', 'GHM', 7), +('G044', '01C043', 'GHM', 7), +('G044', '01C044', 'GHM', 7), +('G044', '01C04V', 'GHM', 7), +('G044', '01C04W', 'GHM', 7), +('G044', '01C111', 'GHM', 7), +('G044', '01C112', 'GHM', 7), +('G044', '01C113', 'GHM', 7), +('G044', '01C114', 'GHM', 7), +('G044', '01C11Z', 'GHM', 7), +('G044', '01C121', 'GHM', 7), +('G044', '01C122', 'GHM', 7), +('G044', '01C123', 'GHM', 7), +('G044', '01C124', 'GHM', 7), +('G044', '01C12Z', 'GHM', 7), +('G044', '10C021', 'GHM', 7), +('G044', '10C022', 'GHM', 7), +('G044', '10C023', 'GHM', 7), +('G044', '10C024', 'GHM', 7), +('G044', '10C02Z', 'GHM', 7), +('G045', '01C091', 'GHM', 7), +('G045', '01C092', 'GHM', 7), +('G045', '01C093', 'GHM', 7), +('G045', '01C094', 'GHM', 7), +('G045', '01C09Z', 'GHM', 7), +('G045', '01C101', 'GHM', 7), +('G045', '01C102', 'GHM', 7), +('G045', '01C103', 'GHM', 7), +('G045', '01C104', 'GHM', 7), +('G045', '01C10J', 'GHM', 7), +('G045', '01C10Z', 'GHM', 7), +('G046', '01M181', 'GHM', 7), +('G046', '01M182', 'GHM', 7), +('G046', '01M183', 'GHM', 7), +('G046', '01M184', 'GHM', 7), +('G046', '01M18T', 'GHM', 7), +('G046', '01M18V', 'GHM', 7), +('G046', '01M18W', 'GHM', 7), +('G046', '01M191', 'GHM', 7), +('G046', '01M192', 'GHM', 7), +('G046', '01M193', 'GHM', 7), +('G046', '01M194', 'GHM', 7), +('G046', '01M19V', 'GHM', 7), +('G046', '01M19W', 'GHM', 7), +('G046', '01M201', 'GHM', 7), +('G046', '01M202', 'GHM', 7), +('G046', '01M203', 'GHM', 7), +('G046', '01M204', 'GHM', 7), +('G046', '01M20V', 'GHM', 7), +('G046', '01M20W', 'GHM', 7), +('G047', '01M071', 'GHM', 7), +('G047', '01M072', 'GHM', 7), +('G047', '01M073', 'GHM', 7), +('G047', '01M074', 'GHM', 7), +('G047', '01M07T', 'GHM', 7), +('G047', '01M07Z', 'GHM', 7), +('G047', '01M081', 'GHM', 7), +('G047', '01M082', 'GHM', 7), +('G047', '01M083', 'GHM', 7), +('G047', '01M084', 'GHM', 7), +('G047', '01M08T', 'GHM', 7), +('G047', '01M08V', 'GHM', 7), +('G047', '01M08W', 'GHM', 7), +('G047', '01M171', 'GHM', 7), +('G047', '01M172', 'GHM', 7), +('G047', '01M173', 'GHM', 7), +('G047', '01M174', 'GHM', 7), +('G047', '01M17T', 'GHM', 7), +('G047', '01M17V', 'GHM', 7), +('G047', '01M17W', 'GHM', 7), +('G048', '01M091', 'GHM', 7), +('G048', '01M092', 'GHM', 7), +('G048', '01M093', 'GHM', 7), +('G048', '01M094', 'GHM', 7), +('G048', '01M09T', 'GHM', 7), +('G048', '01M09Z', 'GHM', 7), +('G048', '01M111', 'GHM', 7), +('G048', '01M112', 'GHM', 7), +('G048', '01M113', 'GHM', 7), +('G048', '01M114', 'GHM', 7), +('G048', '01M11T', 'GHM', 7), +('G048', '01M11V', 'GHM', 7), +('G048', '01M11W', 'GHM', 7), +('G049', '01M101', 'GHM', 7), +('G049', '01M102', 'GHM', 7), +('G049', '01M103', 'GHM', 7), +('G049', '01M104', 'GHM', 7), +('G049', '01M10T', 'GHM', 7), +('G049', '01M10V', 'GHM', 7), +('G049', '01M10W', 'GHM', 7), +('G049', '01M151', 'GHM', 7), +('G049', '01M152', 'GHM', 7), +('G049', '01M153', 'GHM', 7), +('G049', '01M154', 'GHM', 7), +('G049', '01M15T', 'GHM', 7), +('G049', '01M15Z', 'GHM', 7), +('G049', '01M161', 'GHM', 7), +('G049', '01M162', 'GHM', 7), +('G049', '01M163', 'GHM', 7), +('G049', '01M164', 'GHM', 7), +('G049', '01M16T', 'GHM', 7), +('G049', '01M16Z', 'GHM', 7), +('G049', '01M301', 'GHM', 7), +('G049', '01M302', 'GHM', 7), +('G049', '01M303', 'GHM', 7), +('G049', '01M304', 'GHM', 7), +('G049', '01M30T', 'GHM', 7), +('G049', '01M311', 'GHM', 7), +('G049', '01M312', 'GHM', 7), +('G049', '01M313', 'GHM', 7), +('G049', '01M314', 'GHM', 7), +('G049', '01M31T', 'GHM', 7), +('G049', '01M36E', 'GHM', 7), +('G050', '01M131', 'GHM', 7), +('G050', '01M132', 'GHM', 7), +('G050', '01M133', 'GHM', 7), +('G050', '01M134', 'GHM', 7), +('G050', '01M13Z', 'GHM', 7), +('G051', '01M221', 'GHM', 7), +('G051', '01M222', 'GHM', 7), +('G051', '01M223', 'GHM', 7), +('G051', '01M224', 'GHM', 7), +('G051', '01M22T', 'GHM', 7), +('G051', '01M22Z', 'GHM', 7), +('G052', '01M02Z', 'GHM', 7), +('G052', '01M231', 'GHM', 7), +('G052', '01M232', 'GHM', 7), +('G052', '01M233', 'GHM', 7), +('G052', '01M234', 'GHM', 7), +('G052', '01M23Z', 'GHM', 7), +('G052', '01M241', 'GHM', 7), +('G052', '01M242', 'GHM', 7), +('G052', '01M243', 'GHM', 7), +('G052', '01M244', 'GHM', 7), +('G052', '01M24T', 'GHM', 7), +('G052', '01M24V', 'GHM', 7), +('G052', '01M24W', 'GHM', 7), +('G052', '01M251', 'GHM', 7), +('G052', '01M252', 'GHM', 7), +('G052', '01M253', 'GHM', 7), +('G052', '01M254', 'GHM', 7), +('G052', '01M25T', 'GHM', 7), +('G052', '01M25V', 'GHM', 7), +('G052', '01M25W', 'GHM', 7), +('G053', '01M041', 'GHM', 7), +('G053', '01M042', 'GHM', 7), +('G053', '01M043', 'GHM', 7), +('G053', '01M044', 'GHM', 7), +('G053', '01M04T', 'GHM', 7), +('G053', '01M04Z', 'GHM', 7), +('G053', '01M051', 'GHM', 7), +('G053', '01M052', 'GHM', 7), +('G053', '01M053', 'GHM', 7), +('G053', '01M054', 'GHM', 7), +('G053', '01M05T', 'GHM', 7), +('G053', '01M05V', 'GHM', 7), +('G053', '01M05W', 'GHM', 7), +('G054', '01M261', 'GHM', 7), +('G054', '01M262', 'GHM', 7), +('G054', '01M263', 'GHM', 7), +('G054', '01M264', 'GHM', 7), +('G054', '01M26T', 'GHM', 7), +('G054', '01M271', 'GHM', 7), +('G054', '01M272', 'GHM', 7), +('G054', '01M273', 'GHM', 7), +('G054', '01M274', 'GHM', 7), +('G054', '01M27T', 'GHM', 7), +('G055', '01M121', 'GHM', 7), +('G055', '01M122', 'GHM', 7), +('G055', '01M123', 'GHM', 7), +('G055', '01M124', 'GHM', 7), +('G055', '01M12T', 'GHM', 7), +('G055', '01M12V', 'GHM', 7), +('G055', '01M12W', 'GHM', 7), +('G055', '01M281', 'GHM', 7), +('G055', '01M282', 'GHM', 7), +('G055', '01M283', 'GHM', 7), +('G055', '01M284', 'GHM', 7), +('G055', '01M28T', 'GHM', 7), +('G055', '01M291', 'GHM', 7), +('G055', '01M292', 'GHM', 7), +('G055', '01M293', 'GHM', 7), +('G055', '01M294', 'GHM', 7), +('G055', '01M331', 'GHM', 7), +('G055', '01M332', 'GHM', 7), +('G055', '01M333', 'GHM', 7), +('G055', '01M334', 'GHM', 7), +('G055', '01M34T', 'GHM', 7), +('G055', '01M34Z', 'GHM', 7), +('G055', '01M35T', 'GHM', 7), +('G055', '01M35Z', 'GHM', 7), +('G055', '01M381', 'GHM', 7), +('G055', '01M382', 'GHM', 7), +('G055', '01M383', 'GHM', 7), +('G055', '01M384', 'GHM', 7), +('G055', '01M391', 'GHM', 7), +('G055', '01M392', 'GHM', 7), +('G055', '01M393', 'GHM', 7), +('G055', '01M394', 'GHM', 7), +('G056', '01M32Z', 'GHM', 7), +('G057', '05K03Z', 'GHM', 7), +('G057', '05K04Z', 'GHM', 7), +('G057', '05K051', 'GHM', 7), +('G057', '05K052', 'GHM', 7), +('G057', '05K053', 'GHM', 7), +('G057', '05K054', 'GHM', 7), +('G057', '05K05V', 'GHM', 7), +('G057', '05K05W', 'GHM', 7), +('G057', '05K061', 'GHM', 7), +('G057', '05K062', 'GHM', 7), +('G057', '05K063', 'GHM', 7), +('G057', '05K064', 'GHM', 7), +('G057', '05K06T', 'GHM', 7), +('G057', '05K06V', 'GHM', 7), +('G057', '05K06W', 'GHM', 7), +('G057', '05K211', 'GHM', 7), +('G057', '05K212', 'GHM', 7), +('G057', '05K213', 'GHM', 7), +('G057', '05K214', 'GHM', 7), +('G058', '05K07Z', 'GHM', 7), +('G058', '05K08Z', 'GHM', 7), +('G058', '05K111', 'GHM', 7), +('G058', '05K112', 'GHM', 7), +('G058', '05K113', 'GHM', 7), +('G058', '05K114', 'GHM', 7), +('G058', '05K11T', 'GHM', 7), +('G058', '05K11Z', 'GHM', 7), +('G058', '05K121', 'GHM', 7), +('G058', '05K122', 'GHM', 7), +('G058', '05K123', 'GHM', 7), +('G058', '05K124', 'GHM', 7), +('G058', '05K12Z', 'GHM', 7), +('G058', '05K131', 'GHM', 7), +('G058', '05K132', 'GHM', 7), +('G058', '05K133', 'GHM', 7), +('G058', '05K134', 'GHM', 7), +('G058', '05K13J', 'GHM', 7), +('G058', '05K13Z', 'GHM', 7), +('G058', '05K191', 'GHM', 7), +('G058', '05K192', 'GHM', 7), +('G058', '05K193', 'GHM', 7), +('G058', '05K194', 'GHM', 7), +('G058', '05K201', 'GHM', 7), +('G058', '05K202', 'GHM', 7), +('G058', '05K203', 'GHM', 7), +('G058', '05K204', 'GHM', 7), +('G058', '05K20T', 'GHM', 7), +('G058', '05K221', 'GHM', 7), +('G058', '05K222', 'GHM', 7), +('G058', '05K223', 'GHM', 7), +('G058', '05K224', 'GHM', 7), +('G058', '05K231', 'GHM', 7), +('G058', '05K232', 'GHM', 7), +('G058', '05K233', 'GHM', 7), +('G058', '05K234', 'GHM', 7), +('G058', '05K23J', 'GHM', 7), +('G058', '05K241', 'GHM', 7), +('G058', '05K242', 'GHM', 7), +('G058', '05K243', 'GHM', 7), +('G058', '05K244', 'GHM', 7), +('G058', '05K24J', 'GHM', 7), +('G058', '05K251', 'GHM', 7), +('G058', '05K252', 'GHM', 7), +('G058', '05K253', 'GHM', 7), +('G058', '05K254', 'GHM', 7), +('G058', '05K25J', 'GHM', 7), +('G058', '05K261', 'GHM', 7), +('G058', '05K262', 'GHM', 7), +('G058', '05K263', 'GHM', 7), +('G058', '05K264', 'GHM', 7), +('G058', '05K26J', 'GHM', 7), +('G059', '05K09Z', 'GHM', 7), +('G059', '05K101', 'GHM', 7), +('G059', '05K102', 'GHM', 7), +('G059', '05K103', 'GHM', 7), +('G059', '05K104', 'GHM', 7), +('G059', '05K10J', 'GHM', 7), +('G059', '05K10Z', 'GHM', 7), +('G059', '05K151', 'GHM', 7), +('G059', '05K152', 'GHM', 7), +('G059', '05K153', 'GHM', 7), +('G059', '05K154', 'GHM', 7), +('G059', '05K15J', 'GHM', 7), +('G060', '01K021', 'GHM', 7), +('G060', '01K022', 'GHM', 7), +('G060', '01K023', 'GHM', 7), +('G060', '01K024', 'GHM', 7), +('G060', '01K02Z', 'GHM', 7), +('G060', '01K031', 'GHM', 7), +('G060', '01K032', 'GHM', 7), +('G060', '01K033', 'GHM', 7), +('G060', '01K034', 'GHM', 7), +('G060', '01K03Z', 'GHM', 7), +('G060', '01K071', 'GHM', 7), +('G060', '01K072', 'GHM', 7), +('G060', '01K073', 'GHM', 7), +('G060', '01K074', 'GHM', 7), +('G061', '05C021', 'GHM', 7), +('G061', '05C022', 'GHM', 7), +('G061', '05C023', 'GHM', 7), +('G061', '05C024', 'GHM', 7), +('G061', '05C02Z', 'GHM', 7), +('G061', '05C031', 'GHM', 7), +('G061', '05C032', 'GHM', 7), +('G061', '05C033', 'GHM', 7), +('G061', '05C034', 'GHM', 7), +('G061', '05C03V', 'GHM', 7), +('G061', '05C03W', 'GHM', 7), +('G062', '05C041', 'GHM', 7), +('G062', '05C042', 'GHM', 7), +('G062', '05C043', 'GHM', 7), +('G062', '05C044', 'GHM', 7), +('G062', '05C04V', 'GHM', 7), +('G062', '05C04W', 'GHM', 7), +('G062', '05C051', 'GHM', 7), +('G062', '05C052', 'GHM', 7), +('G062', '05C053', 'GHM', 7), +('G062', '05C054', 'GHM', 7), +('G062', '05C05V', 'GHM', 7), +('G062', '05C05W', 'GHM', 7), +('G063', '05C061', 'GHM', 7), +('G063', '05C062', 'GHM', 7), +('G063', '05C063', 'GHM', 7), +('G063', '05C064', 'GHM', 7), +('G063', '05C06V', 'GHM', 7), +('G063', '05C06W', 'GHM', 7), +('G063', '05C071', 'GHM', 7), +('G063', '05C072', 'GHM', 7), +('G063', '05C073', 'GHM', 7), +('G063', '05C074', 'GHM', 7), +('G063', '05C07Z', 'GHM', 7), +('G063', '05C081', 'GHM', 7), +('G063', '05C082', 'GHM', 7), +('G063', '05C083', 'GHM', 7), +('G063', '05C084', 'GHM', 7), +('G063', '05C08T', 'GHM', 7), +('G063', '05C08V', 'GHM', 7), +('G063', '05C08W', 'GHM', 7), +('G063', '05C091', 'GHM', 7), +('G063', '05C092', 'GHM', 7), +('G063', '05C093', 'GHM', 7), +('G063', '05C094', 'GHM', 7), +('G063', '05C09Z', 'GHM', 7), +('G064', '05C141', 'GHM', 7), +('G064', '05C142', 'GHM', 7), +('G064', '05C143', 'GHM', 7), +('G064', '05C144', 'GHM', 7), +('G064', '05C14J', 'GHM', 7), +('G064', '05C14Z', 'GHM', 7), +('G064', '05C151', 'GHM', 7), +('G064', '05C152', 'GHM', 7), +('G064', '05C153', 'GHM', 7), +('G064', '05C154', 'GHM', 7), +('G064', '05C15T', 'GHM', 7), +('G064', '05C15Z', 'GHM', 7), +('G064', '05C16Z', 'GHM', 7), +('G064', '05C191', 'GHM', 7), +('G064', '05C192', 'GHM', 7), +('G064', '05C193', 'GHM', 7), +('G064', '05C194', 'GHM', 7), +('G064', '05C19T', 'GHM', 7), +('G064', '05C19Z', 'GHM', 7), +('G064', '05C201', 'GHM', 7), +('G064', '05C202', 'GHM', 7), +('G064', '05C203', 'GHM', 7), +('G064', '05C204', 'GHM', 7), +('G064', '05C20Z', 'GHM', 7), +('G064', '05C221', 'GHM', 7), +('G064', '05C222', 'GHM', 7), +('G064', '05C223', 'GHM', 7), +('G064', '05C224', 'GHM', 7), +('G064', '05C22T', 'GHM', 7), +('G065', '05M091', 'GHM', 7), +('G065', '05M092', 'GHM', 7), +('G065', '05M093', 'GHM', 7), +('G065', '05M094', 'GHM', 7), +('G065', '05M09T', 'GHM', 7), +('G065', '05M09V', 'GHM', 7), +('G065', '05M09W', 'GHM', 7), +('G065', '05M101', 'GHM', 7), +('G065', '05M102', 'GHM', 7), +('G065', '05M103', 'GHM', 7), +('G065', '05M104', 'GHM', 7), +('G065', '05M10T', 'GHM', 7), +('G065', '05M10Z', 'GHM', 7), +('G065', '05M111', 'GHM', 7), +('G065', '05M112', 'GHM', 7), +('G065', '05M113', 'GHM', 7), +('G065', '05M114', 'GHM', 7), +('G065', '05M11T', 'GHM', 7), +('G065', '05M11V', 'GHM', 7), +('G065', '05M11W', 'GHM', 7), +('G065', '05M141', 'GHM', 7), +('G065', '05M142', 'GHM', 7), +('G065', '05M143', 'GHM', 7), +('G065', '05M144', 'GHM', 7), +('G065', '05M14Z', 'GHM', 7), +('G066', '05M02E', 'GHM', 7), +('G066', '05M03Z', 'GHM', 7), +('G066', '05M041', 'GHM', 7), +('G066', '05M042', 'GHM', 7), +('G066', '05M043', 'GHM', 7), +('G066', '05M044', 'GHM', 7), +('G066', '05M04T', 'GHM', 7), +('G066', '05M04V', 'GHM', 7), +('G066', '05M04W', 'GHM', 7), +('G066', '05M061', 'GHM', 7), +('G066', '05M062', 'GHM', 7), +('G066', '05M063', 'GHM', 7), +('G066', '05M064', 'GHM', 7), +('G066', '05M06T', 'GHM', 7), +('G066', '05M06V', 'GHM', 7), +('G066', '05M06W', 'GHM', 7), +('G066', '05M161', 'GHM', 7), +('G066', '05M162', 'GHM', 7), +('G066', '05M163', 'GHM', 7), +('G066', '05M164', 'GHM', 7), +('G066', '05M16T', 'GHM', 7), +('G066', '05M16V', 'GHM', 7), +('G066', '05M16W', 'GHM', 7), +('G066', '05M21E', 'GHM', 7), +('G067', '05M181', 'GHM', 7), +('G067', '05M182', 'GHM', 7), +('G067', '05M183', 'GHM', 7), +('G067', '05M184', 'GHM', 7), +('G067', '05M18T', 'GHM', 7), +('G067', '05M18Z', 'GHM', 7), +('G068', '05M151', 'GHM', 7), +('G068', '05M152', 'GHM', 7), +('G068', '05M153', 'GHM', 7), +('G068', '05M154', 'GHM', 7), +('G068', '05M15T', 'GHM', 7), +('G068', '05M15Z', 'GHM', 7), +('G069', '05M081', 'GHM', 7), +('G069', '05M082', 'GHM', 7), +('G069', '05M083', 'GHM', 7), +('G069', '05M084', 'GHM', 7), +('G069', '05M08T', 'GHM', 7), +('G069', '05M08V', 'GHM', 7), +('G069', '05M08W', 'GHM', 7), +('G070', '05M051', 'GHM', 7), +('G070', '05M052', 'GHM', 7), +('G070', '05M053', 'GHM', 7), +('G070', '05M054', 'GHM', 7), +('G070', '05M05T', 'GHM', 7), +('G070', '05M05V', 'GHM', 7), +('G070', '05M05W', 'GHM', 7), +('G070', '05M131', 'GHM', 7), +('G070', '05M132', 'GHM', 7), +('G070', '05M133', 'GHM', 7), +('G070', '05M134', 'GHM', 7), +('G070', '05M13T', 'GHM', 7), +('G070', '05M13Z', 'GHM', 7), +('G070', '05M171', 'GHM', 7), +('G070', '05M172', 'GHM', 7), +('G070', '05M173', 'GHM', 7), +('G070', '05M174', 'GHM', 7), +('G070', '05M17T', 'GHM', 7), +('G070', '05M17V', 'GHM', 7), +('G070', '05M17W', 'GHM', 7), +('G070', '05M191', 'GHM', 7), +('G070', '05M192', 'GHM', 7), +('G070', '05M193', 'GHM', 7), +('G070', '05M194', 'GHM', 7), +('G070', '05M23T', 'GHM', 7), +('G070', '05M23Z', 'GHM', 7), +('G071', '05M20Z', 'GHM', 7), +('G072', '05C101', 'GHM', 7), +('G072', '05C102', 'GHM', 7), +('G072', '05C103', 'GHM', 7), +('G072', '05C104', 'GHM', 7), +('G072', '05C10V', 'GHM', 7), +('G072', '05C10W', 'GHM', 7), +('G073', '05C171', 'GHM', 7), +('G073', '05C172', 'GHM', 7), +('G073', '05C173', 'GHM', 7), +('G073', '05C174', 'GHM', 7), +('G073', '05C17J', 'GHM', 7), +('G073', '05C17V', 'GHM', 7), +('G073', '05C17W', 'GHM', 7), +('G074', '01C061', 'GHM', 7), +('G074', '01C062', 'GHM', 7), +('G074', '01C063', 'GHM', 7), +('G074', '01C064', 'GHM', 7), +('G074', '01C06V', 'GHM', 7), +('G074', '01C06W', 'GHM', 7), +('G074', '05C111', 'GHM', 7), +('G074', '05C112', 'GHM', 7), +('G074', '05C113', 'GHM', 7), +('G074', '05C114', 'GHM', 7), +('G074', '05C11J', 'GHM', 7), +('G074', '05C11V', 'GHM', 7), +('G074', '05C11W', 'GHM', 7), +('G074', '05C211', 'GHM', 7), +('G074', '05C212', 'GHM', 7), +('G074', '05C213', 'GHM', 7), +('G074', '05C214', 'GHM', 7), +('G074', '05C21J', 'GHM', 7), +('G074', '11C091', 'GHM', 7), +('G074', '11C092', 'GHM', 7), +('G074', '11C093', 'GHM', 7), +('G074', '11C094', 'GHM', 7), +('G074', '11C09J', 'GHM', 7), +('G075', '05M071', 'GHM', 7), +('G075', '05M072', 'GHM', 7), +('G075', '05M073', 'GHM', 7), +('G075', '05M074', 'GHM', 7), +('G075', '05M07T', 'GHM', 7), +('G075', '05M07V', 'GHM', 7), +('G075', '05M07W', 'GHM', 7), +('G075', '05M121', 'GHM', 7), +('G075', '05M122', 'GHM', 7), +('G075', '05M123', 'GHM', 7), +('G075', '05M124', 'GHM', 7), +('G075', '05M12T', 'GHM', 7), +('G075', '05M12V', 'GHM', 7), +('G075', '05M12W', 'GHM', 7), +('G076', '04C021', 'GHM', 7), +('G076', '04C022', 'GHM', 7), +('G076', '04C023', 'GHM', 7), +('G076', '04C024', 'GHM', 7), +('G076', '04C02V', 'GHM', 7), +('G076', '04C02W', 'GHM', 7), +('G076', '04C041', 'GHM', 7), +('G076', '04C042', 'GHM', 7), +('G076', '04C043', 'GHM', 7), +('G076', '04C044', 'GHM', 7), +('G077', '04C031', 'GHM', 7), +('G077', '04C032', 'GHM', 7), +('G077', '04C033', 'GHM', 7), +('G077', '04C034', 'GHM', 7), +('G077', '04C03V', 'GHM', 7), +('G077', '04C03W', 'GHM', 7), +('G078', '04M021', 'GHM', 7), +('G078', '04M022', 'GHM', 7), +('G078', '04M023', 'GHM', 7), +('G078', '04M024', 'GHM', 7), +('G078', '04M02T', 'GHM', 7), +('G078', '04M02V', 'GHM', 7), +('G078', '04M02W', 'GHM', 7), +('G078', '04M031', 'GHM', 7), +('G078', '04M032', 'GHM', 7), +('G078', '04M033', 'GHM', 7), +('G078', '04M034', 'GHM', 7), +('G078', '04M03T', 'GHM', 7), +('G078', '04M03V', 'GHM', 7), +('G078', '04M03W', 'GHM', 7), +('G078', '04M081', 'GHM', 7), +('G078', '04M082', 'GHM', 7), +('G078', '04M083', 'GHM', 7), +('G078', '04M084', 'GHM', 7), +('G078', '04M08T', 'GHM', 7), +('G078', '04M08V', 'GHM', 7), +('G078', '04M08W', 'GHM', 7), +('G078', '04M161', 'GHM', 7), +('G078', '04M162', 'GHM', 7), +('G078', '04M163', 'GHM', 7), +('G078', '04M164', 'GHM', 7), +('G078', '04M16T', 'GHM', 7), +('G078', '04M16V', 'GHM', 7), +('G078', '04M16W', 'GHM', 7), +('G078', '04M181', 'GHM', 7), +('G078', '04M182', 'GHM', 7), +('G078', '04M183', 'GHM', 7), +('G078', '04M184', 'GHM', 7), +('G078', '04M18T', 'GHM', 7), +('G079', '04M101', 'GHM', 7), +('G079', '04M102', 'GHM', 7), +('G079', '04M103', 'GHM', 7), +('G079', '04M104', 'GHM', 7), +('G079', '04M10T', 'GHM', 7), +('G079', '04M10V', 'GHM', 7), +('G079', '04M10W', 'GHM', 7), +('G079', '04M131', 'GHM', 7), +('G079', '04M132', 'GHM', 7), +('G079', '04M133', 'GHM', 7), +('G079', '04M134', 'GHM', 7), +('G079', '04M13T', 'GHM', 7), +('G079', '04M13Z', 'GHM', 7), +('G080', '04M041', 'GHM', 7), +('G080', '04M042', 'GHM', 7), +('G080', '04M043', 'GHM', 7), +('G080', '04M044', 'GHM', 7), +('G080', '04M04Z', 'GHM', 7), +('G080', '04M051', 'GHM', 7), +('G080', '04M052', 'GHM', 7), +('G080', '04M053', 'GHM', 7), +('G080', '04M054', 'GHM', 7), +('G080', '04M05T', 'GHM', 7), +('G080', '04M05V', 'GHM', 7), +('G080', '04M05W', 'GHM', 7), +('G080', '04M061', 'GHM', 7), +('G080', '04M062', 'GHM', 7), +('G080', '04M063', 'GHM', 7), +('G080', '04M064', 'GHM', 7), +('G080', '04M06T', 'GHM', 7), +('G080', '04M06Z', 'GHM', 7), +('G080', '04M071', 'GHM', 7), +('G080', '04M072', 'GHM', 7), +('G080', '04M073', 'GHM', 7), +('G080', '04M074', 'GHM', 7), +('G080', '04M07T', 'GHM', 7), +('G080', '04M07V', 'GHM', 7), +('G080', '04M07W', 'GHM', 7), +('G080', '04M191', 'GHM', 7), +('G080', '04M192', 'GHM', 7), +('G080', '04M193', 'GHM', 7), +('G080', '04M194', 'GHM', 7), +('G080', '04M19T', 'GHM', 7), +('G080', '04M201', 'GHM', 7), +('G080', '04M202', 'GHM', 7), +('G080', '04M203', 'GHM', 7), +('G080', '04M204', 'GHM', 7), +('G080', '04M20T', 'GHM', 7), +('G080', '04M251', 'GHM', 7), +('G080', '04M252', 'GHM', 7), +('G080', '04M253', 'GHM', 7), +('G080', '04M254', 'GHM', 7), +('G080', '04M25T', 'GHM', 7), +('G081', '04M091', 'GHM', 7), +('G081', '04M092', 'GHM', 7), +('G081', '04M093', 'GHM', 7), +('G081', '04M094', 'GHM', 7), +('G081', '04M09T', 'GHM', 7), +('G081', '04M09V', 'GHM', 7), +('G081', '04M09W', 'GHM', 7), +('G082', '04M111', 'GHM', 7), +('G082', '04M112', 'GHM', 7), +('G082', '04M113', 'GHM', 7), +('G082', '04M114', 'GHM', 7), +('G082', '04M11V', 'GHM', 7), +('G082', '04M11W', 'GHM', 7), +('G082', '04M121', 'GHM', 7), +('G082', '04M122', 'GHM', 7), +('G082', '04M123', 'GHM', 7), +('G082', '04M124', 'GHM', 7), +('G082', '04M12T', 'GHM', 7), +('G082', '04M12V', 'GHM', 7), +('G082', '04M12W', 'GHM', 7), +('G082', '04M141', 'GHM', 7), +('G082', '04M142', 'GHM', 7), +('G082', '04M143', 'GHM', 7), +('G082', '04M144', 'GHM', 7), +('G082', '04M14T', 'GHM', 7), +('G082', '04M14V', 'GHM', 7), +('G082', '04M14W', 'GHM', 7), +('G082', '04M151', 'GHM', 7), +('G082', '04M152', 'GHM', 7), +('G082', '04M153', 'GHM', 7), +('G082', '04M154', 'GHM', 7), +('G082', '04M15T', 'GHM', 7), +('G082', '04M15V', 'GHM', 7), +('G082', '04M15W', 'GHM', 7), +('G082', '04M171', 'GHM', 7), +('G082', '04M172', 'GHM', 7), +('G082', '04M173', 'GHM', 7), +('G082', '04M174', 'GHM', 7), +('G082', '04M17T', 'GHM', 7), +('G082', '04M17V', 'GHM', 7), +('G082', '04M17W', 'GHM', 7), +('G082', '04M211', 'GHM', 7), +('G082', '04M212', 'GHM', 7), +('G082', '04M213', 'GHM', 7), +('G082', '04M214', 'GHM', 7), +('G082', '04M23T', 'GHM', 7), +('G082', '04M23Z', 'GHM', 7), +('G082', '04M24E', 'GHM', 7), +('G082', '04M261', 'GHM', 7), +('G082', '04M262', 'GHM', 7), +('G082', '04M263', 'GHM', 7), +('G082', '04M264', 'GHM', 7), +('G082', '04M26T', 'GHM', 7), +('G082', '04M271', 'GHM', 7), +('G082', '04M272', 'GHM', 7), +('G082', '04M273', 'GHM', 7), +('G082', '04M274', 'GHM', 7), +('G083', '04M22Z', 'GHM', 7), +('G084', '04K02J', 'GHM', 7), +('G085', '03C191', 'GHM', 7), +('G085', '03C192', 'GHM', 7), +('G085', '03C193', 'GHM', 7), +('G085', '03C194', 'GHM', 7), +('G085', '03C19J', 'GHM', 7), +('G085', '03C19Z', 'GHM', 7), +('G085', '03C251', 'GHM', 7), +('G085', '03C252', 'GHM', 7), +('G085', '03C253', 'GHM', 7), +('G085', '03C254', 'GHM', 7), +('G085', '03C261', 'GHM', 7), +('G085', '03C262', 'GHM', 7), +('G085', '03C263', 'GHM', 7), +('G085', '03C264', 'GHM', 7), +('G085', '08C281', 'GHM', 7), +('G085', '08C282', 'GHM', 7), +('G085', '08C283', 'GHM', 7), +('G085', '08C284', 'GHM', 7), +('G085', '08C28J', 'GHM', 7), +('G085', '08C28Z', 'GHM', 7), +('G086', '03C181', 'GHM', 7), +('G086', '03C182', 'GHM', 7), +('G086', '03C183', 'GHM', 7), +('G086', '03C184', 'GHM', 7), +('G086', '03C18Z', 'GHM', 7), +('G086', '03C201', 'GHM', 7), +('G086', '03C202', 'GHM', 7), +('G086', '03C203', 'GHM', 7), +('G086', '03C204', 'GHM', 7), +('G086', '03C20J', 'GHM', 7), +('G086', '03C20Z', 'GHM', 7), +('G086', '03C211', 'GHM', 7), +('G086', '03C212', 'GHM', 7), +('G086', '03C213', 'GHM', 7), +('G086', '03C214', 'GHM', 7), +('G086', '03C21J', 'GHM', 7), +('G086', '03C21Z', 'GHM', 7), +('G086', '03C301', 'GHM', 7), +('G086', '03C302', 'GHM', 7), +('G086', '03C303', 'GHM', 7), +('G086', '03C304', 'GHM', 7), +('G086', '03C30J', 'GHM', 7), +('G087', '03C101', 'GHM', 7), +('G087', '03C102', 'GHM', 7), +('G087', '03C103', 'GHM', 7), +('G087', '03C104', 'GHM', 7), +('G087', '03C10Z', 'GHM', 7), +('G087', '03C111', 'GHM', 7), +('G087', '03C112', 'GHM', 7), +('G087', '03C113', 'GHM', 7), +('G087', '03C114', 'GHM', 7), +('G087', '03C11Z', 'GHM', 7), +('G087', '03C121', 'GHM', 7), +('G087', '03C122', 'GHM', 7), +('G087', '03C123', 'GHM', 7), +('G087', '03C124', 'GHM', 7), +('G087', '03C12Z', 'GHM', 7), +('G087', '03C131', 'GHM', 7), +('G087', '03C132', 'GHM', 7), +('G087', '03C133', 'GHM', 7), +('G087', '03C134', 'GHM', 7), +('G087', '03C13Z', 'GHM', 7), +('G087', '03C141', 'GHM', 7), +('G087', '03C142', 'GHM', 7), +('G087', '03C143', 'GHM', 7), +('G087', '03C144', 'GHM', 7), +('G087', '03C14J', 'GHM', 7), +('G087', '03C14Z', 'GHM', 7), +('G087', '03C151', 'GHM', 7), +('G087', '03C152', 'GHM', 7), +('G087', '03C153', 'GHM', 7), +('G087', '03C154', 'GHM', 7), +('G087', '03C15J', 'GHM', 7), +('G087', '03C15Z', 'GHM', 7), +('G087', '03C22J', 'GHM', 7), +('G087', '03C27J', 'GHM', 7), +('G087', '03C28J', 'GHM', 7), +('G088', '03C03Z', 'GHM', 7), +('G088', '03C04Z', 'GHM', 7), +('G088', '03C051', 'GHM', 7), +('G088', '03C052', 'GHM', 7), +('G088', '03C053', 'GHM', 7), +('G088', '03C054', 'GHM', 7), +('G088', '03C05T', 'GHM', 7), +('G088', '03C05Z', 'GHM', 7), +('G088', '03C061', 'GHM', 7), +('G088', '03C062', 'GHM', 7), +('G088', '03C063', 'GHM', 7), +('G088', '03C064', 'GHM', 7), +('G088', '03C06J', 'GHM', 7), +('G088', '03C06Z', 'GHM', 7), +('G088', '03C071', 'GHM', 7), +('G088', '03C072', 'GHM', 7), +('G088', '03C073', 'GHM', 7), +('G088', '03C074', 'GHM', 7), +('G088', '03C07J', 'GHM', 7), +('G088', '03C07V', 'GHM', 7), +('G088', '03C07W', 'GHM', 7), +('G088', '03C091', 'GHM', 7), +('G088', '03C092', 'GHM', 7), +('G088', '03C093', 'GHM', 7), +('G088', '03C094', 'GHM', 7), +('G088', '03C09J', 'GHM', 7), +('G088', '03C09Z', 'GHM', 7), +('G088', '03C161', 'GHM', 7), +('G088', '03C162', 'GHM', 7), +('G088', '03C163', 'GHM', 7), +('G088', '03C164', 'GHM', 7), +('G088', '03C16J', 'GHM', 7), +('G088', '03C16V', 'GHM', 7), +('G088', '03C16W', 'GHM', 7), +('G088', '03C241', 'GHM', 7), +('G088', '03C242', 'GHM', 7), +('G088', '03C243', 'GHM', 7), +('G088', '03C244', 'GHM', 7), +('G088', '03C24J', 'GHM', 7), +('G088', '03C291', 'GHM', 7), +('G088', '03C292', 'GHM', 7), +('G088', '03C293', 'GHM', 7), +('G088', '03C294', 'GHM', 7), +('G088', '03C29J', 'GHM', 7), +('G089', '03C171', 'GHM', 7), +('G089', '03C172', 'GHM', 7), +('G089', '03C173', 'GHM', 7), +('G089', '03C174', 'GHM', 7), +('G089', '03C17J', 'GHM', 7), +('G089', '03C17Z', 'GHM', 7), +('G090', '03M101', 'GHM', 7), +('G090', '03M102', 'GHM', 7), +('G090', '03M103', 'GHM', 7), +('G090', '03M104', 'GHM', 7), +('G090', '03M10T', 'GHM', 7), +('G090', '03M10Z', 'GHM', 7), +('G090', '03M111', 'GHM', 7), +('G090', '03M112', 'GHM', 7), +('G090', '03M113', 'GHM', 7), +('G090', '03M114', 'GHM', 7), +('G090', '03M11T', 'GHM', 7), +('G090', '03M11V', 'GHM', 7), +('G090', '03M11W', 'GHM', 7), +('G091', '03M031', 'GHM', 7), +('G091', '03M032', 'GHM', 7), +('G091', '03M033', 'GHM', 7), +('G091', '03M034', 'GHM', 7), +('G091', '03M03T', 'GHM', 7), +('G091', '03M03Z', 'GHM', 7), +('G091', '03M041', 'GHM', 7), +('G091', '03M042', 'GHM', 7), +('G091', '03M043', 'GHM', 7), +('G091', '03M044', 'GHM', 7), +('G091', '03M04T', 'GHM', 7), +('G091', '03M04V', 'GHM', 7), +('G091', '03M04W', 'GHM', 7), +('G091', '03M121', 'GHM', 7), +('G091', '03M122', 'GHM', 7), +('G091', '03M123', 'GHM', 7), +('G091', '03M124', 'GHM', 7), +('G091', '03M131', 'GHM', 7), +('G091', '03M132', 'GHM', 7), +('G091', '03M133', 'GHM', 7), +('G091', '03M134', 'GHM', 7), +('G092', '03M071', 'GHM', 7), +('G092', '03M072', 'GHM', 7), +('G092', '03M073', 'GHM', 7), +('G092', '03M074', 'GHM', 7), +('G092', '03M07T', 'GHM', 7), +('G092', '03M07V', 'GHM', 7), +('G092', '03M07W', 'GHM', 7), +('G093', '03M021', 'GHM', 7), +('G093', '03M022', 'GHM', 7), +('G093', '03M023', 'GHM', 7), +('G093', '03M024', 'GHM', 7), +('G093', '03M02T', 'GHM', 7), +('G093', '03M02Z', 'GHM', 7), +('G093', '03M051', 'GHM', 7), +('G093', '03M052', 'GHM', 7), +('G093', '03M053', 'GHM', 7), +('G093', '03M054', 'GHM', 7), +('G093', '03M05T', 'GHM', 7), +('G093', '03M05Z', 'GHM', 7), +('G093', '03M061', 'GHM', 7), +('G093', '03M062', 'GHM', 7), +('G093', '03M063', 'GHM', 7), +('G093', '03M064', 'GHM', 7), +('G093', '03M06T', 'GHM', 7), +('G093', '03M06Z', 'GHM', 7), +('G093', '03M081', 'GHM', 7), +('G093', '03M082', 'GHM', 7), +('G093', '03M083', 'GHM', 7), +('G093', '03M084', 'GHM', 7), +('G093', '03M08T', 'GHM', 7), +('G093', '03M08Z', 'GHM', 7), +('G093', '03M091', 'GHM', 7), +('G093', '03M092', 'GHM', 7), +('G093', '03M093', 'GHM', 7), +('G093', '03M094', 'GHM', 7), +('G093', '03M09T', 'GHM', 7), +('G093', '03M09V', 'GHM', 7), +('G093', '03M09W', 'GHM', 7), +('G093', '03M15T', 'GHM', 7), +('G093', '03M15Z', 'GHM', 7), +('G094', '03M14Z', 'GHM', 7), +('G095', '03K03J', 'GHM', 7), +('G096', '02C021', 'GHM', 7), +('G096', '02C022', 'GHM', 7), +('G096', '02C023', 'GHM', 7), +('G096', '02C024', 'GHM', 7), +('G096', '02C02J', 'GHM', 7), +('G096', '02C02V', 'GHM', 7), +('G096', '02C02W', 'GHM', 7), +('G096', '02C031', 'GHM', 7), +('G096', '02C032', 'GHM', 7), +('G096', '02C033', 'GHM', 7), +('G096', '02C034', 'GHM', 7), +('G096', '02C03J', 'GHM', 7), +('G096', '02C03Z', 'GHM', 7), +('G096', '02C101', 'GHM', 7), +('G096', '02C102', 'GHM', 7), +('G096', '02C103', 'GHM', 7), +('G096', '02C104', 'GHM', 7), +('G096', '02C10J', 'GHM', 7), +('G096', '02C111', 'GHM', 7), +('G096', '02C112', 'GHM', 7), +('G096', '02C113', 'GHM', 7), +('G096', '02C114', 'GHM', 7), +('G096', '02C11J', 'GHM', 7), +('G097', '02C051', 'GHM', 7), +('G097', '02C052', 'GHM', 7), +('G097', '02C053', 'GHM', 7), +('G097', '02C054', 'GHM', 7), +('G097', '02C05J', 'GHM', 7), +('G097', '02C05Z', 'GHM', 7), +('G097', '02C121', 'GHM', 7), +('G097', '02C122', 'GHM', 7), +('G097', '02C123', 'GHM', 7), +('G097', '02C124', 'GHM', 7), +('G097', '02C12J', 'GHM', 7), +('G098', '02C091', 'GHM', 7), +('G098', '02C092', 'GHM', 7), +('G098', '02C093', 'GHM', 7), +('G098', '02C094', 'GHM', 7), +('G098', '02C09J', 'GHM', 7), +('G098', '02C09Z', 'GHM', 7), +('G099', '02C04Z', 'GHM', 7), +('G099', '02C061', 'GHM', 7), +('G099', '02C062', 'GHM', 7), +('G099', '02C063', 'GHM', 7), +('G099', '02C064', 'GHM', 7), +('G099', '02C06J', 'GHM', 7), +('G099', '02C06Z', 'GHM', 7), +('G099', '02C071', 'GHM', 7), +('G099', '02C072', 'GHM', 7), +('G099', '02C073', 'GHM', 7), +('G099', '02C074', 'GHM', 7), +('G099', '02C07J', 'GHM', 7), +('G099', '02C07Z', 'GHM', 7), +('G099', '02C081', 'GHM', 7), +('G099', '02C082', 'GHM', 7), +('G099', '02C083', 'GHM', 7), +('G099', '02C084', 'GHM', 7), +('G099', '02C08J', 'GHM', 7), +('G099', '02C08V', 'GHM', 7), +('G099', '02C08W', 'GHM', 7), +('G099', '02C131', 'GHM', 7), +('G099', '02C132', 'GHM', 7), +('G099', '02C133', 'GHM', 7), +('G099', '02C134', 'GHM', 7), +('G099', '02C13J', 'GHM', 7), +('G100', '02M021', 'GHM', 7), +('G100', '02M022', 'GHM', 7), +('G100', '02M023', 'GHM', 7), +('G100', '02M024', 'GHM', 7), +('G100', '02M02Z', 'GHM', 7), +('G100', '02M041', 'GHM', 7), +('G100', '02M042', 'GHM', 7), +('G100', '02M043', 'GHM', 7), +('G100', '02M044', 'GHM', 7), +('G100', '02M04T', 'GHM', 7), +('G100', '02M04Z', 'GHM', 7), +('G100', '02M051', 'GHM', 7), +('G100', '02M052', 'GHM', 7), +('G100', '02M053', 'GHM', 7), +('G100', '02M054', 'GHM', 7), +('G100', '02M05T', 'GHM', 7), +('G100', '02M05Z', 'GHM', 7), +('G100', '02M071', 'GHM', 7), +('G100', '02M072', 'GHM', 7), +('G100', '02M073', 'GHM', 7), +('G100', '02M074', 'GHM', 7), +('G100', '02M07T', 'GHM', 7), +('G100', '02M081', 'GHM', 7), +('G100', '02M082', 'GHM', 7), +('G100', '02M083', 'GHM', 7), +('G100', '02M084', 'GHM', 7), +('G100', '02M08T', 'GHM', 7), +('G100', '02M10T', 'GHM', 7), +('G100', '02M10Z', 'GHM', 7), +('G101', '02M031', 'GHM', 7), +('G101', '02M032', 'GHM', 7), +('G101', '02M033', 'GHM', 7), +('G101', '02M034', 'GHM', 7), +('G101', '02M03Z', 'GHM', 7), +('G102', '02M09Z', 'GHM', 7), +('G103', '13C051', 'GHM', 7), +('G103', '13C052', 'GHM', 7), +('G103', '13C053', 'GHM', 7), +('G103', '13C054', 'GHM', 7), +('G103', '13C05Z', 'GHM', 7), +('G103', '13C111', 'GHM', 7), +('G103', '13C112', 'GHM', 7), +('G103', '13C113', 'GHM', 7), +('G103', '13C114', 'GHM', 7), +('G103', '13C11J', 'GHM', 7), +('G103', '13C11Z', 'GHM', 7), +('G103', '13C141', 'GHM', 7), +('G103', '13C142', 'GHM', 7), +('G103', '13C143', 'GHM', 7), +('G103', '13C144', 'GHM', 7), +('G103', '13C14V', 'GHM', 7), +('G103', '13C14W', 'GHM', 7), +('G104', '13C151', 'GHM', 7), +('G104', '13C152', 'GHM', 7), +('G104', '13C153', 'GHM', 7), +('G104', '13C154', 'GHM', 7), +('G104', '13C15V', 'GHM', 7), +('G104', '13C15W', 'GHM', 7), +('G105', '13C031', 'GHM', 7), +('G105', '13C032', 'GHM', 7), +('G105', '13C033', 'GHM', 7), +('G105', '13C034', 'GHM', 7), +('G105', '13C03V', 'GHM', 7), +('G105', '13C03W', 'GHM', 7), +('G105', '13C061', 'GHM', 7), +('G105', '13C062', 'GHM', 7), +('G105', '13C063', 'GHM', 7), +('G105', '13C064', 'GHM', 7), +('G105', '13C06J', 'GHM', 7), +('G105', '13C06Z', 'GHM', 7), +('G105', '13C071', 'GHM', 7), +('G105', '13C072', 'GHM', 7), +('G105', '13C073', 'GHM', 7), +('G105', '13C074', 'GHM', 7), +('G105', '13C07J', 'GHM', 7), +('G105', '13C07V', 'GHM', 7), +('G105', '13C07W', 'GHM', 7), +('G105', '13C091', 'GHM', 7), +('G105', '13C092', 'GHM', 7), +('G105', '13C093', 'GHM', 7), +('G105', '13C094', 'GHM', 7), +('G105', '13C09J', 'GHM', 7), +('G105', '13C09T', 'GHM', 7), +('G105', '13C09Z', 'GHM', 7), +('G105', '13C101', 'GHM', 7), +('G105', '13C102', 'GHM', 7), +('G105', '13C103', 'GHM', 7), +('G105', '13C104', 'GHM', 7), +('G105', '13C10J', 'GHM', 7), +('G105', '13C10T', 'GHM', 7), +('G105', '13C10Z', 'GHM', 7), +('G105', '13C121', 'GHM', 7), +('G105', '13C122', 'GHM', 7), +('G105', '13C123', 'GHM', 7), +('G105', '13C124', 'GHM', 7), +('G105', '13C12J', 'GHM', 7), +('G105', '13C12Z', 'GHM', 7), +('G105', '13C181', 'GHM', 7), +('G105', '13C182', 'GHM', 7), +('G105', '13C183', 'GHM', 7), +('G105', '13C184', 'GHM', 7), +('G105', '13C191', 'GHM', 7), +('G105', '13C192', 'GHM', 7), +('G105', '13C193', 'GHM', 7), +('G105', '13C194', 'GHM', 7), +('G105', '13C19J', 'GHM', 7), +('G105', '13C201', 'GHM', 7), +('G105', '13C202', 'GHM', 7), +('G105', '13C203', 'GHM', 7), +('G105', '13C204', 'GHM', 7), +('G105', '13C20J', 'GHM', 7), +('G106', '13C041', 'GHM', 7), +('G106', '13C042', 'GHM', 7), +('G106', '13C043', 'GHM', 7), +('G106', '13C044', 'GHM', 7), +('G106', '13C04J', 'GHM', 7), +('G106', '13C04V', 'GHM', 7), +('G106', '13C04W', 'GHM', 7), +('G106', '13C081', 'GHM', 7), +('G106', '13C082', 'GHM', 7), +('G106', '13C083', 'GHM', 7), +('G106', '13C084', 'GHM', 7), +('G106', '13C08J', 'GHM', 7), +('G106', '13C08V', 'GHM', 7), +('G106', '13C08W', 'GHM', 7), +('G106', '13C131', 'GHM', 7), +('G106', '13C132', 'GHM', 7), +('G106', '13C133', 'GHM', 7), +('G106', '13C134', 'GHM', 7), +('G106', '13C13T', 'GHM', 7), +('G106', '13C13Z', 'GHM', 7), +('G106', '13C16J', 'GHM', 7), +('G106', '13C171', 'GHM', 7), +('G106', '13C172', 'GHM', 7), +('G106', '13C173', 'GHM', 7), +('G106', '13C174', 'GHM', 7), +('G106', '13C17J', 'GHM', 7), +('G107', '09C041', 'GHM', 7), +('G107', '09C042', 'GHM', 7), +('G107', '09C043', 'GHM', 7), +('G107', '09C044', 'GHM', 7), +('G107', '09C04V', 'GHM', 7), +('G107', '09C04W', 'GHM', 7), +('G107', '09C051', 'GHM', 7), +('G107', '09C052', 'GHM', 7), +('G107', '09C053', 'GHM', 7), +('G107', '09C054', 'GHM', 7), +('G107', '09C05J', 'GHM', 7), +('G107', '09C05V', 'GHM', 7), +('G107', '09C05W', 'GHM', 7), +('G107', '09C111', 'GHM', 7), +('G107', '09C112', 'GHM', 7), +('G107', '09C113', 'GHM', 7), +('G107', '09C114', 'GHM', 7), +('G108', '09C061', 'GHM', 7), +('G108', '09C062', 'GHM', 7), +('G108', '09C063', 'GHM', 7), +('G108', '09C064', 'GHM', 7), +('G108', '09C06T', 'GHM', 7), +('G108', '09C06Z', 'GHM', 7), +('G108', '09C071', 'GHM', 7), +('G108', '09C072', 'GHM', 7), +('G108', '09C073', 'GHM', 7), +('G108', '09C074', 'GHM', 7), +('G108', '09C07J', 'GHM', 7), +('G108', '09C07Z', 'GHM', 7), +('G109', '13M031', 'GHM', 7), +('G109', '13M032', 'GHM', 7), +('G109', '13M033', 'GHM', 7), +('G109', '13M034', 'GHM', 7), +('G109', '13M03T', 'GHM', 7), +('G109', '13M03V', 'GHM', 7), +('G109', '13M03W', 'GHM', 7), +('G109', '13M071', 'GHM', 7), +('G109', '13M072', 'GHM', 7), +('G109', '13M073', 'GHM', 7), +('G109', '13M074', 'GHM', 7), +('G110', '13M041', 'GHM', 7), +('G110', '13M042', 'GHM', 7), +('G110', '13M043', 'GHM', 7), +('G110', '13M044', 'GHM', 7), +('G110', '13M04T', 'GHM', 7), +('G110', '13M04V', 'GHM', 7), +('G110', '13M04W', 'GHM', 7), +('G110', '13M10Z', 'GHM', 7), +('G111', '13M081', 'GHM', 7), +('G111', '13M082', 'GHM', 7), +('G111', '13M083', 'GHM', 7), +('G111', '13M084', 'GHM', 7), +('G112', '13M02Z', 'GHM', 7), +('G112', '13M051', 'GHM', 7), +('G112', '13M052', 'GHM', 7), +('G112', '13M053', 'GHM', 7), +('G112', '13M054', 'GHM', 7), +('G112', '13M061', 'GHM', 7), +('G112', '13M062', 'GHM', 7), +('G112', '13M063', 'GHM', 7), +('G112', '13M064', 'GHM', 7), +('G112', '13M06T', 'GHM', 7), +('G113', '09M091', 'GHM', 7), +('G113', '09M092', 'GHM', 7), +('G113', '09M093', 'GHM', 7), +('G113', '09M094', 'GHM', 7), +('G113', '09M09T', 'GHM', 7), +('G113', '09M09Z', 'GHM', 7), +('G113', '09M15Z', 'GHM', 7), +('G114', '09M101', 'GHM', 7), +('G114', '09M102', 'GHM', 7), +('G114', '09M103', 'GHM', 7), +('G114', '09M104', 'GHM', 7), +('G114', '09M10T', 'GHM', 7), +('G114', '09M10V', 'GHM', 7), +('G114', '09M10W', 'GHM', 7), +('G115', '09M13Z', 'GHM', 7), +('G115', '13M09Z', 'GHM', 7), +('G116', '14C03A', 'GHM', 7), +('G116', '14C03B', 'GHM', 7), +('G116', '14C03C', 'GHM', 7), +('G116', '14C03D', 'GHM', 7), +('G116', '14C03Z', 'GHM', 7), +('G116', '14Z02A', 'GHM', 7), +('G116', '14Z02B', 'GHM', 7), +('G116', '14Z02C', 'GHM', 7), +('G116', '14Z02T', 'GHM', 7), +('G116', '14Z09Z', 'GHM', 7), +('G116', '14Z10A', 'GHM', 7), +('G116', '14Z10B', 'GHM', 7), +('G116', '14Z10T', 'GHM', 7), +('G116', '14Z11A', 'GHM', 7), +('G116', '14Z11B', 'GHM', 7), +('G116', '14Z12A', 'GHM', 7), +('G116', '14Z12B', 'GHM', 7), +('G116', '14Z13A', 'GHM', 7), +('G116', '14Z13B', 'GHM', 7), +('G116', '14Z13C', 'GHM', 7), +('G116', '14Z13D', 'GHM', 7), +('G116', '14Z13T', 'GHM', 7), +('G116', '14Z14A', 'GHM', 7), +('G116', '14Z14B', 'GHM', 7), +('G116', '14Z14C', 'GHM', 7), +('G116', '14Z14D', 'GHM', 7), +('G116', '14Z14T', 'GHM', 7), +('G117', '14C02A', 'GHM', 7), +('G117', '14C02B', 'GHM', 7), +('G117', '14C02C', 'GHM', 7), +('G117', '14C06A', 'GHM', 7), +('G117', '14C06B', 'GHM', 7), +('G117', '14C06C', 'GHM', 7), +('G117', '14C06D', 'GHM', 7), +('G117', '14C07A', 'GHM', 7), +('G117', '14C07B', 'GHM', 7), +('G117', '14C07C', 'GHM', 7), +('G117', '14C07D', 'GHM', 7), +('G117', '14C08A', 'GHM', 7), +('G117', '14C08B', 'GHM', 7), +('G117', '14C08C', 'GHM', 7), +('G117', '14C08D', 'GHM', 7), +('G118', '14Z08Z', 'GHM', 7), +('G119', '14C09A', 'GHM', 7), +('G119', '14C09B', 'GHM', 7), +('G119', '14C10T', 'GHM', 7), +('G119', '14C10Z', 'GHM', 7), +('G119', '14M03A', 'GHM', 7), +('G119', '14M03B', 'GHM', 7), +('G119', '14M03C', 'GHM', 7), +('G119', '14M03D', 'GHM', 7), +('G119', '14M03T', 'GHM', 7), +('G119', '14Z03A', 'GHM', 7), +('G119', '14Z03B', 'GHM', 7), +('G119', '14Z03T', 'GHM', 7), +('G119', '14Z05Z', 'GHM', 7), +('G119', '14Z06T', 'GHM', 7), +('G119', '14Z06Z', 'GHM', 7), +('G119', '14Z07Z', 'GHM', 7), +('G119', '14Z15Z', 'GHM', 7), +('G119', '14Z16T', 'GHM', 7), +('G119', '14Z16Z', 'GHM', 7), +('G120', '14C04T', 'GHM', 7), +('G120', '14C04Z', 'GHM', 7), +('G120', '14M02A', 'GHM', 7), +('G120', '14M02B', 'GHM', 7), +('G120', '14M02T', 'GHM', 7), +('G120', '14M02Z', 'GHM', 7), +('G121', '14C05J', 'GHM', 7), +('G121', '14C05Z', 'GHM', 7), +('G121', '14Z04T', 'GHM', 7), +('G121', '14Z04Z', 'GHM', 7), +('G122', '15C02A', 'GHM', 7), +('G122', '15C02B', 'GHM', 7), +('G122', '15C02Z', 'GHM', 7), +('G122', '15C03A', 'GHM', 7), +('G122', '15C03B', 'GHM', 7), +('G122', '15C03Z', 'GHM', 7), +('G122', '15C04A', 'GHM', 7), +('G122', '15C04B', 'GHM', 7), +('G122', '15C04Z', 'GHM', 7), +('G122', '15C05A', 'GHM', 7), +('G122', '15C05B', 'GHM', 7), +('G122', '15C05Z', 'GHM', 7), +('G122', '15C06A', 'GHM', 7), +('G122', '15C06B', 'GHM', 7), +('G122', '15C06Z', 'GHM', 7), +('G123', '15M02Z', 'GHM', 7), +('G123', '15Z03Z', 'GHM', 7), +('G124', '15M05A', 'GHM', 7), +('G124', '15M05B', 'GHM', 7), +('G124', '15M05C', 'GHM', 7), +('G124', '15M05D', 'GHM', 7), +('G124', '15M06A', 'GHM', 7), +('G124', '15M06B', 'GHM', 7), +('G124', '15M06C', 'GHM', 7), +('G124', '15M06D', 'GHM', 7), +('G124', '15M07A', 'GHM', 7), +('G124', '15M07B', 'GHM', 7), +('G124', '15M07C', 'GHM', 7), +('G124', '15M08A', 'GHM', 7), +('G124', '15M08B', 'GHM', 7), +('G124', '15M08C', 'GHM', 7), +('G124', '15M09A', 'GHM', 7), +('G124', '15M09B', 'GHM', 7), +('G124', '15M09C', 'GHM', 7), +('G124', '15M10A', 'GHM', 7), +('G124', '15M10B', 'GHM', 7), +('G124', '15M10C', 'GHM', 7), +('G124', '15M11A', 'GHM', 7), +('G124', '15M11B', 'GHM', 7), +('G124', '15M11C', 'GHM', 7), +('G124', '15M12A', 'GHM', 7), +('G124', '15M12B', 'GHM', 7), +('G124', '15M13A', 'GHM', 7), +('G124', '15M13B', 'GHM', 7), +('G124', '15M14A', 'GHM', 7), +('G124', '15M14B', 'GHM', 7), +('G124', '15Z02T', 'GHM', 7), +('G124', '15Z02Z', 'GHM', 7), +('G124', '15Z04E', 'GHM', 7), +('G124', '15Z05A', 'GHM', 7), +('G124', '15Z05B', 'GHM', 7), +('G124', '15Z05C', 'GHM', 7), +('G124', '15Z05D', 'GHM', 7), +('G124', '15Z06A', 'GHM', 7), +('G124', '15Z06B', 'GHM', 7), +('G124', '15Z06C', 'GHM', 7), +('G124', '15Z06D', 'GHM', 7), +('G124', '15Z07A', 'GHM', 7), +('G124', '15Z07B', 'GHM', 7), +('G124', '15Z07C', 'GHM', 7), +('G124', '15Z08A', 'GHM', 7), +('G124', '15Z08E', 'GHM', 7), +('G124', '15Z08Z', 'GHM', 7), +('G124', '15Z09A', 'GHM', 7), +('G124', '15Z09Z', 'GHM', 7), +('G125', '15M03E', 'GHM', 7), +('G125', '15M04E', 'GHM', 7), +('G125', '15Z09E', 'GHM', 7), +('G126', '10C031', 'GHM', 7), +('G126', '10C032', 'GHM', 7), +('G126', '10C033', 'GHM', 7), +('G126', '10C034', 'GHM', 7), +('G126', '10C03Z', 'GHM', 7), +('G126', '11C021', 'GHM', 7), +('G126', '11C022', 'GHM', 7), +('G126', '11C023', 'GHM', 7), +('G126', '11C024', 'GHM', 7), +('G126', '11C02V', 'GHM', 7), +('G126', '11C02W', 'GHM', 7), +('G126', '11C031', 'GHM', 7), +('G126', '11C032', 'GHM', 7), +('G126', '11C033', 'GHM', 7), +('G126', '11C034', 'GHM', 7), +('G126', '11C03V', 'GHM', 7), +('G126', '11C03W', 'GHM', 7), +('G126', '11C041', 'GHM', 7), +('G126', '11C042', 'GHM', 7), +('G126', '11C043', 'GHM', 7), +('G126', '11C044', 'GHM', 7), +('G126', '11C04J', 'GHM', 7), +('G126', '11C04Z', 'GHM', 7), +('G126', '11C081', 'GHM', 7), +('G126', '11C082', 'GHM', 7), +('G126', '11C083', 'GHM', 7), +('G126', '11C084', 'GHM', 7), +('G126', '11C08T', 'GHM', 7), +('G126', '11C08V', 'GHM', 7), +('G126', '11C08W', 'GHM', 7), +('G126', '11C101', 'GHM', 7), +('G126', '11C102', 'GHM', 7), +('G126', '11C103', 'GHM', 7), +('G126', '11C104', 'GHM', 7), +('G126', '11C10J', 'GHM', 7), +('G127', '11C051', 'GHM', 7), +('G127', '11C052', 'GHM', 7), +('G127', '11C053', 'GHM', 7), +('G127', '11C054', 'GHM', 7), +('G127', '11C05J', 'GHM', 7), +('G127', '11C05V', 'GHM', 7), +('G127', '11C05W', 'GHM', 7), +('G127', '11C061', 'GHM', 7), +('G127', '11C062', 'GHM', 7), +('G127', '11C063', 'GHM', 7), +('G127', '11C064', 'GHM', 7), +('G127', '11C06Z', 'GHM', 7), +('G127', '11C071', 'GHM', 7), +('G127', '11C072', 'GHM', 7), +('G127', '11C073', 'GHM', 7), +('G127', '11C074', 'GHM', 7), +('G127', '11C07J', 'GHM', 7), +('G127', '11C07Z', 'GHM', 7), +('G127', '11C111', 'GHM', 7), +('G127', '11C112', 'GHM', 7), +('G127', '11C113', 'GHM', 7), +('G127', '11C114', 'GHM', 7), +('G127', '11C11J', 'GHM', 7), +('G127', '11C121', 'GHM', 7), +('G127', '11C122', 'GHM', 7), +('G127', '11C123', 'GHM', 7), +('G127', '11C124', 'GHM', 7), +('G127', '11C12J', 'GHM', 7), +('G127', '11C131', 'GHM', 7), +('G127', '11C132', 'GHM', 7), +('G127', '11C133', 'GHM', 7), +('G127', '11C134', 'GHM', 7), +('G127', '11C13J', 'GHM', 7), +('G128', '12C031', 'GHM', 7), +('G128', '12C032', 'GHM', 7), +('G128', '12C033', 'GHM', 7), +('G128', '12C034', 'GHM', 7), +('G128', '12C03J', 'GHM', 7), +('G128', '12C03Z', 'GHM', 7), +('G128', '12C041', 'GHM', 7), +('G128', '12C042', 'GHM', 7), +('G128', '12C043', 'GHM', 7), +('G128', '12C044', 'GHM', 7), +('G128', '12C04J', 'GHM', 7), +('G128', '12C04V', 'GHM', 7), +('G128', '12C04W', 'GHM', 7), +('G128', '12C061', 'GHM', 7), +('G128', '12C062', 'GHM', 7), +('G128', '12C063', 'GHM', 7), +('G128', '12C064', 'GHM', 7), +('G128', '12C06J', 'GHM', 7), +('G128', '12C06Z', 'GHM', 7), +('G128', '12C071', 'GHM', 7), +('G128', '12C072', 'GHM', 7), +('G128', '12C073', 'GHM', 7), +('G128', '12C074', 'GHM', 7), +('G128', '12C07J', 'GHM', 7), +('G128', '12C07Z', 'GHM', 7), +('G128', '12C101', 'GHM', 7), +('G128', '12C102', 'GHM', 7), +('G128', '12C103', 'GHM', 7), +('G128', '12C104', 'GHM', 7), +('G128', '12C10Z', 'GHM', 7), +('G128', '12C131', 'GHM', 7), +('G128', '12C132', 'GHM', 7), +('G128', '12C133', 'GHM', 7), +('G128', '12C134', 'GHM', 7), +('G128', '12C13J', 'GHM', 7), +('G129', '12C081', 'GHM', 7), +('G129', '12C082', 'GHM', 7), +('G129', '12C083', 'GHM', 7), +('G129', '12C084', 'GHM', 7), +('G129', '12C08J', 'GHM', 7), +('G129', '12C08Z', 'GHM', 7), +('G130', '12C02Z', 'GHM', 7), +('G130', '12C111', 'GHM', 7), +('G130', '12C112', 'GHM', 7), +('G130', '12C113', 'GHM', 7), +('G130', '12C114', 'GHM', 7), +('G130', '12C11Z', 'GHM', 7), +('G130', '12C121', 'GHM', 7), +('G130', '12C122', 'GHM', 7), +('G130', '12C123', 'GHM', 7), +('G130', '12C124', 'GHM', 7), +('G130', '12C12Z', 'GHM', 7), +('G131', '12C051', 'GHM', 7), +('G131', '12C052', 'GHM', 7), +('G131', '12C053', 'GHM', 7), +('G131', '12C054', 'GHM', 7), +('G131', '12C05Z', 'GHM', 7), +('G131', '12C091', 'GHM', 7), +('G131', '12C092', 'GHM', 7), +('G131', '12C093', 'GHM', 7), +('G131', '12C094', 'GHM', 7), +('G131', '12C09Z', 'GHM', 7), +('G132', '11M071', 'GHM', 7), +('G132', '11M072', 'GHM', 7), +('G132', '11M073', 'GHM', 7), +('G132', '11M074', 'GHM', 7), +('G132', '11M07T', 'GHM', 7), +('G132', '11M07V', 'GHM', 7), +('G132', '11M07W', 'GHM', 7), +('G133', '11M021', 'GHM', 7), +('G133', '11M022', 'GHM', 7), +('G133', '11M023', 'GHM', 7), +('G133', '11M024', 'GHM', 7), +('G133', '11M02T', 'GHM', 7), +('G133', '11M02V', 'GHM', 7), +('G133', '11M02W', 'GHM', 7), +('G133', '11M031', 'GHM', 7), +('G133', '11M032', 'GHM', 7), +('G133', '11M033', 'GHM', 7), +('G133', '11M034', 'GHM', 7), +('G133', '11M03T', 'GHM', 7), +('G133', '11M03V', 'GHM', 7), +('G133', '11M03W', 'GHM', 7), +('G133', '11M041', 'GHM', 7), +('G133', '11M042', 'GHM', 7), +('G133', '11M043', 'GHM', 7), +('G133', '11M044', 'GHM', 7), +('G133', '11M04T', 'GHM', 7), +('G133', '11M04V', 'GHM', 7), +('G133', '11M04W', 'GHM', 7), +('G134', '11M061', 'GHM', 7), +('G134', '11M062', 'GHM', 7), +('G134', '11M063', 'GHM', 7), +('G134', '11M064', 'GHM', 7), +('G134', '11M06T', 'GHM', 7), +('G134', '11M06V', 'GHM', 7), +('G134', '11M06W', 'GHM', 7), +('G134', '11M081', 'GHM', 7), +('G134', '11M082', 'GHM', 7), +('G134', '11M083', 'GHM', 7), +('G134', '11M084', 'GHM', 7), +('G134', '11M08T', 'GHM', 7), +('G134', '11M08Z', 'GHM', 7), +('G134', '11M101', 'GHM', 7), +('G134', '11M102', 'GHM', 7), +('G134', '11M103', 'GHM', 7), +('G134', '11M104', 'GHM', 7), +('G134', '11M10T', 'GHM', 7), +('G134', '11M10V', 'GHM', 7), +('G134', '11M10W', 'GHM', 7), +('G134', '11M111', 'GHM', 7), +('G134', '11M112', 'GHM', 7), +('G134', '11M113', 'GHM', 7), +('G134', '11M114', 'GHM', 7), +('G134', '11M11Z', 'GHM', 7), +('G134', '11M121', 'GHM', 7), +('G134', '11M122', 'GHM', 7), +('G134', '11M123', 'GHM', 7), +('G134', '11M124', 'GHM', 7), +('G134', '11M12T', 'GHM', 7), +('G134', '11M12V', 'GHM', 7), +('G134', '11M12W', 'GHM', 7), +('G134', '11M151', 'GHM', 7), +('G134', '11M152', 'GHM', 7), +('G134', '11M153', 'GHM', 7), +('G134', '11M154', 'GHM', 7), +('G134', '11M15T', 'GHM', 7), +('G134', '11M161', 'GHM', 7), +('G134', '11M162', 'GHM', 7), +('G134', '11M163', 'GHM', 7), +('G134', '11M164', 'GHM', 7), +('G134', '11M16T', 'GHM', 7), +('G134', '11M19T', 'GHM', 7), +('G134', '11M19Z', 'GHM', 7), +('G134', '11M201', 'GHM', 7), +('G134', '11M202', 'GHM', 7), +('G134', '11M203', 'GHM', 7), +('G134', '11M204', 'GHM', 7), +('G135', '11M171', 'GHM', 7), +('G135', '11M172', 'GHM', 7), +('G135', '11M173', 'GHM', 7), +('G135', '11M174', 'GHM', 7), +('G135', '11M18Z', 'GHM', 7), +('G136', '12M061', 'GHM', 7), +('G136', '12M062', 'GHM', 7), +('G136', '12M063', 'GHM', 7), +('G136', '12M064', 'GHM', 7), +('G136', '12M06T', 'GHM', 7), +('G136', '12M071', 'GHM', 7), +('G136', '12M072', 'GHM', 7), +('G136', '12M073', 'GHM', 7), +('G136', '12M074', 'GHM', 7), +('G136', '12M07T', 'GHM', 7), +('G137', '12M031', 'GHM', 7), +('G137', '12M032', 'GHM', 7), +('G137', '12M033', 'GHM', 7), +('G137', '12M034', 'GHM', 7), +('G137', '12M03T', 'GHM', 7), +('G137', '12M03V', 'GHM', 7), +('G137', '12M03W', 'GHM', 7), +('G138', '12M041', 'GHM', 7), +('G138', '12M042', 'GHM', 7), +('G138', '12M043', 'GHM', 7), +('G138', '12M044', 'GHM', 7), +('G138', '12M04T', 'GHM', 7), +('G138', '12M04V', 'GHM', 7), +('G138', '12M04W', 'GHM', 7), +('G138', '12M051', 'GHM', 7), +('G138', '12M052', 'GHM', 7), +('G138', '12M053', 'GHM', 7), +('G138', '12M054', 'GHM', 7), +('G138', '12M05T', 'GHM', 7), +('G138', '12M05Z', 'GHM', 7), +('G138', '12M09Z', 'GHM', 7), +('G139', '12M08Z', 'GHM', 7), +('G140', '11K03Z', 'GHM', 7), +('G140', '11K04Z', 'GHM', 7), +('G140', '11K05Z', 'GHM', 7), +('G140', '11K06Z', 'GHM', 7), +('G140', '12K02Z', 'GHM', 7), +('G140', '12K03Z', 'GHM', 7), +('G140', '13K02Z', 'GHM', 7), +('G140', '13K03Z', 'GHM', 7), +('G140', '13K04Z', 'GHM', 7), +('G140', '13K05Z', 'GHM', 7), +('G141', '16C031', 'GHM', 7), +('G141', '16C032', 'GHM', 7), +('G141', '16C033', 'GHM', 7), +('G141', '16C034', 'GHM', 7), +('G141', '16C03J', 'GHM', 7), +('G141', '16C03V', 'GHM', 7), +('G141', '16C03W', 'GHM', 7), +('G141', '17C021', 'GHM', 7), +('G141', '17C022', 'GHM', 7), +('G141', '17C023', 'GHM', 7), +('G141', '17C024', 'GHM', 7), +('G141', '17C02V', 'GHM', 7), +('G141', '17C02W', 'GHM', 7), +('G141', '17C031', 'GHM', 7), +('G141', '17C032', 'GHM', 7), +('G141', '17C033', 'GHM', 7), +('G141', '17C034', 'GHM', 7), +('G141', '17C03J', 'GHM', 7), +('G141', '17C03V', 'GHM', 7), +('G141', '17C03W', 'GHM', 7), +('G141', '17C041', 'GHM', 7), +('G141', '17C042', 'GHM', 7), +('G141', '17C043', 'GHM', 7), +('G141', '17C044', 'GHM', 7), +('G141', '17C04V', 'GHM', 7), +('G141', '17C04W', 'GHM', 7), +('G141', '17C051', 'GHM', 7), +('G141', '17C052', 'GHM', 7), +('G141', '17C053', 'GHM', 7), +('G141', '17C054', 'GHM', 7), +('G141', '17C05J', 'GHM', 7), +('G141', '17C05V', 'GHM', 7), +('G141', '17C05W', 'GHM', 7), +('G141', '17C061', 'GHM', 7), +('G141', '17C062', 'GHM', 7), +('G141', '17C063', 'GHM', 7), +('G141', '17C064', 'GHM', 7), +('G141', '17C071', 'GHM', 7), +('G141', '17C072', 'GHM', 7), +('G141', '17C073', 'GHM', 7), +('G141', '17C074', 'GHM', 7), +('G141', '17C081', 'GHM', 7), +('G141', '17C082', 'GHM', 7), +('G141', '17C083', 'GHM', 7), +('G141', '17C084', 'GHM', 7), +('G141', '17C08J', 'GHM', 7), +('G141', '17M02Z', 'GHM', 7), +('G141', '17M03V', 'GHM', 7), +('G142', '27Z021', 'GHM', 7), +('G142', '27Z022', 'GHM', 7), +('G142', '27Z023', 'GHM', 7), +('G142', '27Z024', 'GHM', 7), +('G142', '27Z02Z', 'GHM', 7), +('G142', '27Z03Z', 'GHM', 7), +('G142', '27Z04J', 'GHM', 7), +('G143', '16M071', 'GHM', 7), +('G143', '16M072', 'GHM', 7), +('G143', '16M073', 'GHM', 7), +('G143', '16M074', 'GHM', 7), +('G144', '17M081', 'GHM', 7), +('G144', '17M082', 'GHM', 7), +('G144', '17M083', 'GHM', 7), +('G144', '17M084', 'GHM', 7), +('G144', '17M08T', 'GHM', 7), +('G144', '17M08Z', 'GHM', 7), +('G144', '17M091', 'GHM', 7), +('G144', '17M092', 'GHM', 7), +('G144', '17M093', 'GHM', 7), +('G144', '17M094', 'GHM', 7), +('G144', '17M09T', 'GHM', 7), +('G144', '17M09V', 'GHM', 7), +('G144', '17M09W', 'GHM', 7), +('G144', '17M111', 'GHM', 7), +('G144', '17M112', 'GHM', 7), +('G144', '17M113', 'GHM', 7), +('G144', '17M114', 'GHM', 7), +('G144', '17M11T', 'GHM', 7), +('G144', '17M121', 'GHM', 7), +('G144', '17M122', 'GHM', 7), +('G144', '17M123', 'GHM', 7), +('G144', '17M124', 'GHM', 7), +('G144', '17M12T', 'GHM', 7), +('G144', '17M151', 'GHM', 7), +('G144', '17M152', 'GHM', 7), +('G144', '17M153', 'GHM', 7), +('G144', '17M154', 'GHM', 7), +('G144', '17M15T', 'GHM', 7), +('G145', '16M061', 'GHM', 7), +('G145', '16M062', 'GHM', 7), +('G145', '16M063', 'GHM', 7), +('G145', '16M064', 'GHM', 7), +('G145', '16M06T', 'GHM', 7), +('G145', '16M081', 'GHM', 7), +('G145', '16M082', 'GHM', 7), +('G145', '16M083', 'GHM', 7), +('G145', '16M084', 'GHM', 7), +('G145', '16M091', 'GHM', 7), +('G145', '16M092', 'GHM', 7), +('G145', '16M093', 'GHM', 7), +('G145', '16M094', 'GHM', 7), +('G145', '16M09T', 'GHM', 7), +('G145', '16M101', 'GHM', 7), +('G145', '16M102', 'GHM', 7), +('G145', '16M103', 'GHM', 7), +('G145', '16M104', 'GHM', 7), +('G145', '16M10T', 'GHM', 7), +('G145', '16M111', 'GHM', 7), +('G145', '16M112', 'GHM', 7), +('G145', '16M113', 'GHM', 7), +('G145', '16M114', 'GHM', 7), +('G145', '16M11T', 'GHM', 7), +('G145', '16M121', 'GHM', 7), +('G145', '16M122', 'GHM', 7), +('G145', '16M123', 'GHM', 7), +('G145', '16M124', 'GHM', 7), +('G145', '16M12T', 'GHM', 7), +('G145', '16M131', 'GHM', 7), +('G145', '16M132', 'GHM', 7), +('G145', '16M133', 'GHM', 7), +('G145', '16M134', 'GHM', 7), +('G145', '16M13T', 'GHM', 7), +('G145', '16M15T', 'GHM', 7), +('G145', '16M15Z', 'GHM', 7), +('G145', '16M161', 'GHM', 7), +('G145', '16M162', 'GHM', 7), +('G145', '16M163', 'GHM', 7), +('G145', '16M164', 'GHM', 7), +('G145', '16M16T', 'GHM', 7), +('G145', '16M171', 'GHM', 7), +('G145', '16M172', 'GHM', 7), +('G145', '16M173', 'GHM', 7), +('G145', '16M174', 'GHM', 7), +('G145', '16M17T', 'GHM', 7), +('G145', '16M181', 'GHM', 7), +('G145', '16M182', 'GHM', 7), +('G145', '16M183', 'GHM', 7), +('G145', '16M184', 'GHM', 7), +('G145', '17M071', 'GHM', 7), +('G145', '17M072', 'GHM', 7), +('G145', '17M073', 'GHM', 7), +('G145', '17M074', 'GHM', 7), +('G145', '17M07T', 'GHM', 7), +('G145', '17M07V', 'GHM', 7), +('G145', '17M07W', 'GHM', 7), +('G145', '17M131', 'GHM', 7), +('G145', '17M132', 'GHM', 7), +('G145', '17M133', 'GHM', 7), +('G145', '17M134', 'GHM', 7), +('G145', '17M13T', 'GHM', 7), +('G145', '17M161', 'GHM', 7), +('G145', '17M162', 'GHM', 7), +('G145', '17M163', 'GHM', 7), +('G145', '17M164', 'GHM', 7), +('G145', '17M16T', 'GHM', 7), +('G145', '17M171', 'GHM', 7), +('G145', '17M172', 'GHM', 7), +('G145', '17M173', 'GHM', 7), +('G145', '17M174', 'GHM', 7), +('G145', '17M17T', 'GHM', 7), +('G146', '16M14Z', 'GHM', 7), +('G147', '17K02Z', 'GHM', 7), +('G147', '17M04Z', 'GHM', 7), +('G147', '17M14Z', 'GHM', 7), +('G148', '17M051', 'GHM', 7), +('G148', '17M052', 'GHM', 7), +('G148', '17M053', 'GHM', 7), +('G148', '17M054', 'GHM', 7), +('G148', '17M05Z', 'GHM', 7), +('G148', '17M061', 'GHM', 7), +('G148', '17M062', 'GHM', 7), +('G148', '17M063', 'GHM', 7), +('G148', '17M064', 'GHM', 7), +('G148', '17M06T', 'GHM', 7), +('G148', '17M06V', 'GHM', 7), +('G148', '17M06W', 'GHM', 7), +('G149', '17K03Z', 'GHM', 7), +('G149', '17K041', 'GHM', 7), +('G149', '17K042', 'GHM', 7), +('G149', '17K043', 'GHM', 7), +('G149', '17K044', 'GHM', 7), +('G149', '17K04Z', 'GHM', 7), +('G149', '17K051', 'GHM', 7), +('G149', '17K052', 'GHM', 7), +('G149', '17K053', 'GHM', 7), +('G149', '17K054', 'GHM', 7), +('G149', '17K05Z', 'GHM', 7), +('G149', '17K061', 'GHM', 7), +('G149', '17K062', 'GHM', 7), +('G149', '17K063', 'GHM', 7), +('G149', '17K064', 'GHM', 7), +('G149', '17K06Z', 'GHM', 7), +('G149', '17K081', 'GHM', 7), +('G149', '17K082', 'GHM', 7), +('G149', '17K083', 'GHM', 7), +('G149', '17K084', 'GHM', 7), +('G149', '17K091', 'GHM', 7), +('G149', '17K092', 'GHM', 7), +('G149', '17K093', 'GHM', 7), +('G149', '17K094', 'GHM', 7), +('G150', '23M091', 'GHM', 7), +('G150', '23M092', 'GHM', 7), +('G150', '23M093', 'GHM', 7), +('G150', '23M094', 'GHM', 7), +('G151', '18M021', 'GHM', 7), +('G151', '18M022', 'GHM', 7), +('G151', '18M023', 'GHM', 7), +('G151', '18M024', 'GHM', 7), +('G151', '18M02V', 'GHM', 7), +('G151', '18M02W', 'GHM', 7), +('G151', '18M031', 'GHM', 7), +('G151', '18M032', 'GHM', 7), +('G151', '18M033', 'GHM', 7), +('G151', '18M034', 'GHM', 7), +('G151', '18M03T', 'GHM', 7), +('G151', '18M03Z', 'GHM', 7), +('G151', '18M041', 'GHM', 7), +('G151', '18M042', 'GHM', 7), +('G151', '18M043', 'GHM', 7), +('G151', '18M044', 'GHM', 7), +('G151', '18M04T', 'GHM', 7), +('G151', '18M04V', 'GHM', 7), +('G151', '18M04W', 'GHM', 7), +('G152', '18M061', 'GHM', 7), +('G152', '18M062', 'GHM', 7), +('G152', '18M063', 'GHM', 7), +('G152', '18M064', 'GHM', 7), +('G152', '18M06Z', 'GHM', 7), +('G152', '18M071', 'GHM', 7), +('G152', '18M072', 'GHM', 7), +('G152', '18M073', 'GHM', 7), +('G152', '18M074', 'GHM', 7), +('G152', '18M07T', 'GHM', 7), +('G152', '18M07V', 'GHM', 7), +('G152', '18M07W', 'GHM', 7), +('G153', '18M091', 'GHM', 7), +('G153', '18M092', 'GHM', 7), +('G153', '18M093', 'GHM', 7), +('G153', '18M094', 'GHM', 7), +('G153', '18M09T', 'GHM', 7), +('G153', '18M101', 'GHM', 7), +('G153', '18M102', 'GHM', 7), +('G153', '18M103', 'GHM', 7), +('G153', '18M104', 'GHM', 7), +('G153', '18M10T', 'GHM', 7), +('G153', '18M111', 'GHM', 7), +('G153', '18M112', 'GHM', 7), +('G153', '18M113', 'GHM', 7), +('G153', '18M114', 'GHM', 7), +('G153', '18M11T', 'GHM', 7), +('G153', '18M14T', 'GHM', 7), +('G153', '18M14Z', 'GHM', 7), +('G153', '18M151', 'GHM', 7), +('G153', '18M152', 'GHM', 7), +('G153', '18M153', 'GHM', 7), +('G153', '18M154', 'GHM', 7), +('G154', '18M13E', 'GHM', 7), +('G155', '18M12Z', 'GHM', 7), +('G156', '23M07J', 'GHM', 7), +('G156', '25M02A', 'GHM', 7), +('G156', '25M02B', 'GHM', 7), +('G156', '25M02C', 'GHM', 7), +('G156', '25M02T', 'GHM', 7), +('G156', '25Z02E', 'GHM', 7), +('G156', '25Z031', 'GHM', 7), +('G156', '25Z032', 'GHM', 7), +('G156', '25Z033', 'GHM', 7), +('G156', '25Z034', 'GHM', 7), +('G156', '25Z03Z', 'GHM', 7), +('G157', '10C051', 'GHM', 7), +('G157', '10C052', 'GHM', 7), +('G157', '10C053', 'GHM', 7), +('G157', '10C054', 'GHM', 7), +('G157', '10C05Z', 'GHM', 7), +('G157', '10C071', 'GHM', 7), +('G157', '10C072', 'GHM', 7), +('G157', '10C073', 'GHM', 7), +('G157', '10C074', 'GHM', 7), +('G157', '10C07Z', 'GHM', 7), +('G157', '10C101', 'GHM', 7), +('G157', '10C102', 'GHM', 7), +('G157', '10C103', 'GHM', 7), +('G157', '10C104', 'GHM', 7), +('G157', '10C10Z', 'GHM', 7), +('G158', '10C111', 'GHM', 7), +('G158', '10C112', 'GHM', 7), +('G158', '10C113', 'GHM', 7), +('G158', '10C114', 'GHM', 7), +('G158', '10C11V', 'GHM', 7), +('G158', '10C11W', 'GHM', 7), +('G158', '10C121', 'GHM', 7), +('G158', '10C122', 'GHM', 7), +('G158', '10C123', 'GHM', 7), +('G158', '10C124', 'GHM', 7), +('G158', '10C12V', 'GHM', 7), +('G158', '10C12W', 'GHM', 7), +('G159', '10M021', 'GHM', 7), +('G159', '10M022', 'GHM', 7), +('G159', '10M023', 'GHM', 7), +('G159', '10M024', 'GHM', 7), +('G159', '10M02T', 'GHM', 7), +('G159', '10M02V', 'GHM', 7), +('G159', '10M02W', 'GHM', 7), +('G159', '10M031', 'GHM', 7), +('G159', '10M032', 'GHM', 7), +('G159', '10M033', 'GHM', 7), +('G159', '10M034', 'GHM', 7), +('G159', '10M03T', 'GHM', 7), +('G159', '10M03Z', 'GHM', 7), +('G159', '10M081', 'GHM', 7), +('G159', '10M082', 'GHM', 7), +('G159', '10M083', 'GHM', 7), +('G159', '10M084', 'GHM', 7), +('G159', '10M08T', 'GHM', 7), +('G159', '23M08J', 'GHM', 7), +('G160', '10M071', 'GHM', 7), +('G160', '10M072', 'GHM', 7), +('G160', '10M073', 'GHM', 7), +('G160', '10M074', 'GHM', 7), +('G160', '10M07T', 'GHM', 7), +('G160', '10M07V', 'GHM', 7), +('G160', '10M07W', 'GHM', 7), +('G160', '10M121', 'GHM', 7), +('G160', '10M122', 'GHM', 7), +('G160', '10M123', 'GHM', 7), +('G160', '10M124', 'GHM', 7), +('G160', '10M12T', 'GHM', 7), +('G160', '10M14T', 'GHM', 7), +('G160', '10M14Z', 'GHM', 7), +('G161', '10M06Z', 'GHM', 7), +('G161', '10M091', 'GHM', 7), +('G161', '10M092', 'GHM', 7), +('G161', '10M093', 'GHM', 7), +('G161', '10M094', 'GHM', 7), +('G161', '10M09T', 'GHM', 7), +('G161', '10M101', 'GHM', 7), +('G161', '10M102', 'GHM', 7), +('G161', '10M103', 'GHM', 7), +('G161', '10M104', 'GHM', 7), +('G161', '10M10T', 'GHM', 7), +('G161', '10M111', 'GHM', 7), +('G161', '10M112', 'GHM', 7), +('G161', '10M113', 'GHM', 7), +('G161', '10M114', 'GHM', 7), +('G161', '10M11T', 'GHM', 7), +('G161', '10M151', 'GHM', 7), +('G161', '10M152', 'GHM', 7), +('G161', '10M153', 'GHM', 7), +('G161', '10M154', 'GHM', 7), +('G161', '10M15T', 'GHM', 7), +('G161', '10M161', 'GHM', 7), +('G161', '10M162', 'GHM', 7), +('G161', '10M163', 'GHM', 7), +('G161', '10M164', 'GHM', 7), +('G161', '10M16T', 'GHM', 7), +('G161', '10M171', 'GHM', 7), +('G161', '10M172', 'GHM', 7), +('G161', '10M173', 'GHM', 7), +('G161', '10M174', 'GHM', 7), +('G161', '10M17T', 'GHM', 7), +('G161', '10M181', 'GHM', 7), +('G161', '10M182', 'GHM', 7), +('G161', '10M183', 'GHM', 7), +('G161', '10M184', 'GHM', 7), +('G161', '10M18T', 'GHM', 7), +('G162', '10M13T', 'GHM', 7), +('G162', '10M13Z', 'GHM', 7), +('G163', '08C201', 'GHM', 7), +('G163', '08C202', 'GHM', 7), +('G163', '08C203', 'GHM', 7), +('G163', '08C204', 'GHM', 7), +('G163', '08C20J', 'GHM', 7), +('G163', '08C20Z', 'GHM', 7), +('G163', '09C021', 'GHM', 7), +('G163', '09C022', 'GHM', 7), +('G163', '09C023', 'GHM', 7), +('G163', '09C024', 'GHM', 7), +('G163', '09C02J', 'GHM', 7), +('G163', '09C02V', 'GHM', 7), +('G163', '09C02W', 'GHM', 7), +('G163', '09C031', 'GHM', 7), +('G163', '09C032', 'GHM', 7), +('G163', '09C033', 'GHM', 7), +('G163', '09C034', 'GHM', 7), +('G163', '09C03J', 'GHM', 7), +('G163', '09C03V', 'GHM', 7), +('G163', '09C03W', 'GHM', 7), +('G163', '09C091', 'GHM', 7), +('G163', '09C092', 'GHM', 7), +('G163', '09C093', 'GHM', 7), +('G163', '09C094', 'GHM', 7), +('G163', '09C09J', 'GHM', 7), +('G163', '09C09Z', 'GHM', 7), +('G163', '09C121', 'GHM', 7), +('G163', '09C122', 'GHM', 7), +('G163', '09C123', 'GHM', 7), +('G163', '09C124', 'GHM', 7), +('G163', '09C12J', 'GHM', 7), +('G163', '21C021', 'GHM', 7), +('G163', '21C022', 'GHM', 7), +('G163', '21C023', 'GHM', 7), +('G163', '21C024', 'GHM', 7), +('G163', '21C02J', 'GHM', 7), +('G163', '21C02Z', 'GHM', 7), +('G163', '21C031', 'GHM', 7), +('G163', '21C032', 'GHM', 7), +('G163', '21C033', 'GHM', 7), +('G163', '21C034', 'GHM', 7), +('G163', '21C03J', 'GHM', 7), +('G163', '21C03Z', 'GHM', 7), +('G163', '21C061', 'GHM', 7), +('G163', '21C062', 'GHM', 7), +('G163', '21C063', 'GHM', 7), +('G163', '21C064', 'GHM', 7), +('G163', '21C06J', 'GHM', 7), +('G164', '09M021', 'GHM', 7), +('G164', '09M022', 'GHM', 7), +('G164', '09M023', 'GHM', 7), +('G164', '09M024', 'GHM', 7), +('G164', '09M02T', 'GHM', 7), +('G164', '09M02Z', 'GHM', 7), +('G164', '09M031', 'GHM', 7), +('G164', '09M032', 'GHM', 7), +('G164', '09M033', 'GHM', 7), +('G164', '09M034', 'GHM', 7), +('G164', '09M03T', 'GHM', 7), +('G164', '09M03V', 'GHM', 7), +('G164', '09M03W', 'GHM', 7), +('G165', '09M061', 'GHM', 7), +('G165', '09M062', 'GHM', 7), +('G165', '09M063', 'GHM', 7), +('G165', '09M064', 'GHM', 7), +('G165', '09M06T', 'GHM', 7), +('G165', '09M06Z', 'GHM', 7), +('G165', '09M071', 'GHM', 7), +('G165', '09M072', 'GHM', 7), +('G165', '09M073', 'GHM', 7), +('G165', '09M074', 'GHM', 7), +('G165', '09M07T', 'GHM', 7), +('G165', '09M07V', 'GHM', 7), +('G165', '09M07W', 'GHM', 7), +('G165', '09M081', 'GHM', 7), +('G165', '09M082', 'GHM', 7), +('G165', '09M083', 'GHM', 7), +('G165', '09M084', 'GHM', 7), +('G165', '09M08T', 'GHM', 7), +('G165', '09M08V', 'GHM', 7), +('G165', '09M08W', 'GHM', 7), +('G165', '09M14T', 'GHM', 7), +('G165', '09M14Z', 'GHM', 7), +('G166', '09M041', 'GHM', 7), +('G166', '09M042', 'GHM', 7), +('G166', '09M043', 'GHM', 7), +('G166', '09M044', 'GHM', 7), +('G166', '09M04T', 'GHM', 7), +('G166', '09M04Z', 'GHM', 7), +('G166', '09M051', 'GHM', 7), +('G166', '09M052', 'GHM', 7), +('G166', '09M053', 'GHM', 7), +('G166', '09M054', 'GHM', 7), +('G166', '09M05T', 'GHM', 7), +('G166', '09M05V', 'GHM', 7), +('G166', '09M05W', 'GHM', 7), +('G167', '09M111', 'GHM', 7), +('G167', '09M112', 'GHM', 7), +('G167', '09M113', 'GHM', 7), +('G167', '09M114', 'GHM', 7), +('G167', '09M11T', 'GHM', 7), +('G168', '09M12Z', 'GHM', 7), +('G169', '22M021', 'GHM', 7), +('G169', '22M022', 'GHM', 7), +('G169', '22M023', 'GHM', 7), +('G169', '22M024', 'GHM', 7), +('G169', '22M02T', 'GHM', 7), +('G169', '22M02Z', 'GHM', 7), +('G169', '22Z021', 'GHM', 7), +('G169', '22Z022', 'GHM', 7), +('G169', '22Z023', 'GHM', 7), +('G169', '22Z024', 'GHM', 7), +('G169', '22Z02Z', 'GHM', 7), +('G169', '22Z03Z', 'GHM', 7), +('G170', '19M061', 'GHM', 7), +('G170', '19M062', 'GHM', 7), +('G170', '19M063', 'GHM', 7), +('G170', '19M064', 'GHM', 7), +('G170', '19M06T', 'GHM', 7), +('G170', '19M06V', 'GHM', 7), +('G170', '19M06W', 'GHM', 7), +('G170', '19M071', 'GHM', 7), +('G170', '19M072', 'GHM', 7), +('G170', '19M073', 'GHM', 7), +('G170', '19M074', 'GHM', 7), +('G170', '19M07T', 'GHM', 7), +('G170', '19M07V', 'GHM', 7), +('G170', '19M07W', 'GHM', 7), +('G171', '19M021', 'GHM', 7), +('G171', '19M022', 'GHM', 7), +('G171', '19M023', 'GHM', 7), +('G171', '19M024', 'GHM', 7), +('G171', '19M02T', 'GHM', 7), +('G171', '19M02V', 'GHM', 7), +('G171', '19M02W', 'GHM', 7), +('G171', '19M03Z', 'GHM', 7), +('G171', '19M04Z', 'GHM', 7), +('G171', '19M05Z', 'GHM', 7), +('G171', '19M08Z', 'GHM', 7), +('G171', '19M09Z', 'GHM', 7), +('G171', '19M101', 'GHM', 7), +('G171', '19M102', 'GHM', 7), +('G171', '19M103', 'GHM', 7), +('G171', '19M104', 'GHM', 7), +('G171', '19M10T', 'GHM', 7), +('G171', '19M10Z', 'GHM', 7), +('G171', '19M111', 'GHM', 7), +('G171', '19M112', 'GHM', 7), +('G171', '19M113', 'GHM', 7), +('G171', '19M114', 'GHM', 7), +('G171', '19M11T', 'GHM', 7), +('G171', '19M11V', 'GHM', 7), +('G171', '19M11W', 'GHM', 7), +('G171', '19M121', 'GHM', 7), +('G171', '19M122', 'GHM', 7), +('G171', '19M123', 'GHM', 7), +('G171', '19M124', 'GHM', 7), +('G171', '19M12T', 'GHM', 7), +('G171', '19M131', 'GHM', 7), +('G171', '19M132', 'GHM', 7), +('G171', '19M133', 'GHM', 7), +('G171', '19M134', 'GHM', 7), +('G171', '19M13T', 'GHM', 7), +('G171', '19M141', 'GHM', 7), +('G171', '19M142', 'GHM', 7), +('G171', '19M143', 'GHM', 7), +('G171', '19M144', 'GHM', 7), +('G171', '19M14T', 'GHM', 7), +('G171', '19M151', 'GHM', 7), +('G171', '19M152', 'GHM', 7), +('G171', '19M153', 'GHM', 7), +('G171', '19M154', 'GHM', 7), +('G171', '19M15T', 'GHM', 7), +('G171', '19M161', 'GHM', 7), +('G171', '19M162', 'GHM', 7), +('G171', '19M163', 'GHM', 7), +('G171', '19M164', 'GHM', 7), +('G171', '19M16T', 'GHM', 7), +('G171', '19M171', 'GHM', 7), +('G171', '19M172', 'GHM', 7), +('G171', '19M173', 'GHM', 7), +('G171', '19M174', 'GHM', 7), +('G171', '19M181', 'GHM', 7), +('G171', '19M182', 'GHM', 7), +('G171', '19M183', 'GHM', 7), +('G171', '19M184', 'GHM', 7), +('G171', '19M18T', 'GHM', 7), +('G171', '19M191', 'GHM', 7), +('G171', '19M192', 'GHM', 7), +('G171', '19M193', 'GHM', 7), +('G171', '19M194', 'GHM', 7), +('G171', '19M19T', 'GHM', 7), +('G171', '19M201', 'GHM', 7), +('G171', '19M202', 'GHM', 7), +('G171', '19M203', 'GHM', 7), +('G171', '19M204', 'GHM', 7), +('G171', '19M20T', 'GHM', 7), +('G171', '19M22T', 'GHM', 7), +('G171', '19M22Z', 'GHM', 7), +('G172', '19M21Z', 'GHM', 7), +('G173', '20Z021', 'GHM', 7), +('G173', '20Z022', 'GHM', 7), +('G173', '20Z023', 'GHM', 7), +('G173', '20Z024', 'GHM', 7), +('G173', '20Z02T', 'GHM', 7), +('G173', '20Z02Z', 'GHM', 7), +('G173', '20Z031', 'GHM', 7), +('G173', '20Z032', 'GHM', 7), +('G173', '20Z033', 'GHM', 7), +('G173', '20Z034', 'GHM', 7), +('G173', '20Z03Z', 'GHM', 7), +('G173', '20Z041', 'GHM', 7), +('G173', '20Z042', 'GHM', 7), +('G173', '20Z043', 'GHM', 7), +('G173', '20Z044', 'GHM', 7), +('G173', '20Z04T', 'GHM', 7), +('G173', '20Z04Z', 'GHM', 7), +('G173', '20Z051', 'GHM', 7), +('G173', '20Z052', 'GHM', 7), +('G173', '20Z053', 'GHM', 7), +('G173', '20Z054', 'GHM', 7), +('G173', '20Z05Z', 'GHM', 7), +('G173', '20Z061', 'GHM', 7), +('G173', '20Z062', 'GHM', 7), +('G173', '20Z063', 'GHM', 7), +('G173', '20Z064', 'GHM', 7), +('G173', '20Z06T', 'GHM', 7), +('G173', '20Z06V', 'GHM', 7), +('G173', '20Z06W', 'GHM', 7), +('G174', '21M041', 'GHM', 7), +('G174', '21M042', 'GHM', 7), +('G174', '21M043', 'GHM', 7), +('G174', '21M044', 'GHM', 7), +('G174', '21M04T', 'GHM', 7), +('G174', '21M04Z', 'GHM', 7), +('G174', '21M051', 'GHM', 7), +('G174', '21M052', 'GHM', 7), +('G174', '21M053', 'GHM', 7), +('G174', '21M054', 'GHM', 7), +('G174', '21M05T', 'GHM', 7), +('G174', '21M05Z', 'GHM', 7), +('G175', '21M021', 'GHM', 7), +('G175', '21M022', 'GHM', 7), +('G175', '21M023', 'GHM', 7), +('G175', '21M024', 'GHM', 7), +('G175', '21M02T', 'GHM', 7), +('G175', '21M02Z', 'GHM', 7), +('G175', '21M101', 'GHM', 7), +('G175', '21M102', 'GHM', 7), +('G175', '21M103', 'GHM', 7), +('G175', '21M104', 'GHM', 7), +('G175', '21M10T', 'GHM', 7), +('G175', '21M111', 'GHM', 7), +('G175', '21M112', 'GHM', 7), +('G175', '21M113', 'GHM', 7), +('G175', '21M114', 'GHM', 7), +('G175', '21M11T', 'GHM', 7), +('G175', '21M121', 'GHM', 7), +('G175', '21M122', 'GHM', 7), +('G175', '21M123', 'GHM', 7), +('G175', '21M124', 'GHM', 7), +('G175', '21M141', 'GHM', 7), +('G175', '21M142', 'GHM', 7), +('G175', '21M143', 'GHM', 7), +('G175', '21M144', 'GHM', 7), +('G175', '21M14T', 'GHM', 7), +('G175', '21M161', 'GHM', 7), +('G175', '21M162', 'GHM', 7), +('G175', '21M163', 'GHM', 7), +('G175', '21M164', 'GHM', 7), +('G175', '21M16T', 'GHM', 7), +('G176', '23Z02T', 'GHM', 7), +('G176', '23Z02Z', 'GHM', 7), +('G177', '01M211', 'GHM', 7), +('G177', '01M212', 'GHM', 7), +('G177', '01M213', 'GHM', 7), +('G177', '01M214', 'GHM', 7), +('G177', '01M21T', 'GHM', 7), +('G177', '01M21Z', 'GHM', 7), +('G178', '27C021', 'GHM', 7), +('G178', '27C022', 'GHM', 7), +('G178', '27C023', 'GHM', 7), +('G178', '27C024', 'GHM', 7), +('G178', '27C02Z', 'GHM', 7), +('G178', '27C031', 'GHM', 7), +('G178', '27C032', 'GHM', 7), +('G178', '27C033', 'GHM', 7), +('G178', '27C034', 'GHM', 7), +('G178', '27C03Z', 'GHM', 7), +('G178', '27C041', 'GHM', 7), +('G178', '27C042', 'GHM', 7), +('G178', '27C043', 'GHM', 7), +('G178', '27C044', 'GHM', 7), +('G178', '27C04Z', 'GHM', 7), +('G178', '27C051', 'GHM', 7), +('G178', '27C052', 'GHM', 7), +('G178', '27C053', 'GHM', 7), +('G178', '27C054', 'GHM', 7), +('G178', '27C05Z', 'GHM', 7), +('G178', '27C061', 'GHM', 7), +('G178', '27C062', 'GHM', 7), +('G178', '27C063', 'GHM', 7), +('G178', '27C064', 'GHM', 7), +('G178', '27C06Z', 'GHM', 7), +('G178', '27C071', 'GHM', 7), +('G178', '27C072', 'GHM', 7), +('G178', '27C073', 'GHM', 7), +('G178', '27C074', 'GHM', 7), +('G178', '27C07Z', 'GHM', 7), +('G179', '01C081', 'GHM', 7), +('G179', '01C082', 'GHM', 7), +('G179', '01C083', 'GHM', 7), +('G179', '01C084', 'GHM', 7), +('G179', '01C08J', 'GHM', 7), +('G179', '01C08V', 'GHM', 7), +('G179', '01C08W', 'GHM', 7), +('G179', '05C181', 'GHM', 7), +('G179', '05C182', 'GHM', 7), +('G179', '05C183', 'GHM', 7), +('G179', '05C184', 'GHM', 7), +('G179', '05C18J', 'GHM', 7), +('G179', '05C18Z', 'GHM', 7), +('G179', '08C211', 'GHM', 7), +('G179', '08C212', 'GHM', 7), +('G179', '08C213', 'GHM', 7), +('G179', '08C214', 'GHM', 7), +('G179', '08C21J', 'GHM', 7), +('G179', '08C21V', 'GHM', 7), +('G179', '08C21W', 'GHM', 7), +('G179', '09C101', 'GHM', 7), +('G179', '09C102', 'GHM', 7), +('G179', '09C103', 'GHM', 7), +('G179', '09C104', 'GHM', 7), +('G179', '09C10J', 'GHM', 7), +('G179', '09C10V', 'GHM', 7), +('G179', '09C10W', 'GHM', 7), +('G179', '09C141', 'GHM', 7), +('G179', '09C142', 'GHM', 7), +('G179', '09C143', 'GHM', 7), +('G179', '09C144', 'GHM', 7), +('G179', '09C14J', 'GHM', 7), +('G179', '09C151', 'GHM', 7), +('G179', '09C152', 'GHM', 7), +('G179', '09C153', 'GHM', 7), +('G179', '09C154', 'GHM', 7), +('G179', '09C15J', 'GHM', 7), +('G179', '09C161', 'GHM', 7), +('G179', '09C162', 'GHM', 7), +('G179', '09C163', 'GHM', 7), +('G179', '09C164', 'GHM', 7), +('G179', '09C171', 'GHM', 7), +('G179', '09C172', 'GHM', 7), +('G179', '09C173', 'GHM', 7), +('G179', '09C174', 'GHM', 7), +('G179', '09C181', 'GHM', 7), +('G179', '09C182', 'GHM', 7), +('G179', '09C183', 'GHM', 7), +('G179', '09C184', 'GHM', 7), +('G179', '09C191', 'GHM', 7), +('G179', '09C192', 'GHM', 7), +('G179', '09C193', 'GHM', 7), +('G179', '09C194', 'GHM', 7), +('G179', '09C201', 'GHM', 7), +('G179', '09C202', 'GHM', 7), +('G179', '09C203', 'GHM', 7), +('G179', '09C204', 'GHM', 7), +('G179', '09C20J', 'GHM', 7), +('G179', '09C211', 'GHM', 7), +('G179', '09C212', 'GHM', 7), +('G179', '09C213', 'GHM', 7), +('G179', '09C214', 'GHM', 7), +('G179', '09C221', 'GHM', 7), +('G179', '09C222', 'GHM', 7), +('G179', '09C223', 'GHM', 7), +('G179', '09C224', 'GHM', 7), +('G179', '09C22J', 'GHM', 7), +('G179', '09C231', 'GHM', 7), +('G179', '09C232', 'GHM', 7), +('G179', '09C233', 'GHM', 7), +('G179', '09C234', 'GHM', 7), +('G179', '09C23J', 'GHM', 7), +('G179', '09C241', 'GHM', 7), +('G179', '09C242', 'GHM', 7), +('G179', '09C243', 'GHM', 7), +('G179', '09C244', 'GHM', 7), +('G179', '09C24J', 'GHM', 7), +('G179', '09C251', 'GHM', 7), +('G179', '09C252', 'GHM', 7), +('G179', '09C253', 'GHM', 7), +('G179', '09C254', 'GHM', 7), +('G179', '09C25J', 'GHM', 7), +('G179', '09C261', 'GHM', 7), +('G179', '09C262', 'GHM', 7), +('G179', '09C263', 'GHM', 7), +('G179', '09C264', 'GHM', 7), +('G179', '09C26J', 'GHM', 7), +('G179', '09C271', 'GHM', 7), +('G179', '09C272', 'GHM', 7), +('G179', '09C273', 'GHM', 7), +('G179', '09C274', 'GHM', 7), +('G179', '09C281', 'GHM', 7), +('G179', '09C282', 'GHM', 7), +('G179', '09C283', 'GHM', 7), +('G179', '09C284', 'GHM', 7), +('G179', '09C28J', 'GHM', 7), +('G179', '09C291', 'GHM', 7), +('G179', '09C292', 'GHM', 7), +('G179', '09C293', 'GHM', 7), +('G179', '09C294', 'GHM', 7), +('G179', '09C29J', 'GHM', 7), +('G179', '09C301', 'GHM', 7), +('G179', '09C302', 'GHM', 7), +('G179', '09C303', 'GHM', 7), +('G179', '09C304', 'GHM', 7), +('G179', '09C30J', 'GHM', 7), +('G179', '09C311', 'GHM', 7), +('G179', '09C312', 'GHM', 7), +('G179', '09C313', 'GHM', 7), +('G179', '09C314', 'GHM', 7), +('G179', '09C31J', 'GHM', 7), +('G179', '09C321', 'GHM', 7), +('G179', '09C322', 'GHM', 7), +('G179', '09C323', 'GHM', 7), +('G179', '09C324', 'GHM', 7), +('G179', '09C32J', 'GHM', 7), +('G179', '09C331', 'GHM', 7), +('G179', '09C332', 'GHM', 7), +('G179', '09C333', 'GHM', 7), +('G179', '09C334', 'GHM', 7), +('G179', '09C341', 'GHM', 7), +('G179', '09C342', 'GHM', 7), +('G179', '09C343', 'GHM', 7), +('G179', '09C344', 'GHM', 7), +('G179', '09C34J', 'GHM', 7), +('G179', '10C081', 'GHM', 7), +('G179', '10C082', 'GHM', 7), +('G179', '10C083', 'GHM', 7), +('G179', '10C084', 'GHM', 7), +('G179', '10C08J', 'GHM', 7), +('G179', '10C08Z', 'GHM', 7), +('G179', '18C021', 'GHM', 7), +('G179', '18C022', 'GHM', 7), +('G179', '18C023', 'GHM', 7), +('G179', '18C024', 'GHM', 7), +('G179', '18C02J', 'GHM', 7), +('G179', '18C02V', 'GHM', 7), +('G179', '18C02W', 'GHM', 7), +('G179', '19C021', 'GHM', 7), +('G179', '19C022', 'GHM', 7), +('G179', '19C023', 'GHM', 7), +('G179', '19C024', 'GHM', 7), +('G179', '19C02Z', 'GHM', 7), +('G179', '21C051', 'GHM', 7), +('G179', '21C052', 'GHM', 7), +('G179', '21C053', 'GHM', 7), +('G179', '21C054', 'GHM', 7), +('G179', '21C05J', 'GHM', 7), +('G179', '21C05V', 'GHM', 7), +('G179', '21C05W', 'GHM', 7), +('G179', '23C021', 'GHM', 7), +('G179', '23C022', 'GHM', 7), +('G179', '23C023', 'GHM', 7), +('G179', '23C024', 'GHM', 7), +('G179', '23C02J', 'GHM', 7), +('G179', '23C02Z', 'GHM', 7), +('G179', '25C021', 'GHM', 7), +('G179', '25C022', 'GHM', 7), +('G179', '25C023', 'GHM', 7), +('G179', '25C024', 'GHM', 7), +('G179', '25C02Z', 'GHM', 7), +('G180', '09Z02A', 'GHM', 7), +('G180', '09Z02B', 'GHM', 7), +('G180', '09Z02Z', 'GHM', 7), +('G180', '23Z03Z', 'GHM', 7), +('G181', '01M37E', 'GHM', 7), +('G181', '05M22E', 'GHM', 7), +('G181', '21M131', 'GHM', 7), +('G181', '21M132', 'GHM', 7), +('G181', '21M133', 'GHM', 7), +('G181', '21M134', 'GHM', 7), +('G181', '21M151', 'GHM', 7), +('G181', '21M152', 'GHM', 7), +('G181', '21M153', 'GHM', 7), +('G181', '21M154', 'GHM', 7), +('G181', '21M15T', 'GHM', 7), +('G181', '23M111', 'GHM', 7), +('G181', '23M112', 'GHM', 7), +('G181', '23M113', 'GHM', 7), +('G181', '23M114', 'GHM', 7), +('G181', '23M11T', 'GHM', 7), +('G181', '23M15Z', 'GHM', 7), +('G182', '23M13Z', 'GHM', 7), +('G182', '23M18Z', 'GHM', 7), +('G182', '23M21T', 'GHM', 7), +('G182', '23M21Z', 'GHM', 7), +('G183', '23K02Z', 'GHM', 7), +('G184', '23M101', 'GHM', 7), +('G184', '23M102', 'GHM', 7), +('G184', '23M103', 'GHM', 7), +('G184', '23M104', 'GHM', 7), +('G184', '23M10T', 'GHM', 7), +('G184', '23M14Z', 'GHM', 7), +('G185', '23M19Z', 'GHM', 7), +('G186', '23M02T', 'GHM', 7), +('G186', '23M02Z', 'GHM', 7), +('G186', '23M16T', 'GHM', 7), +('G186', '23M16Z', 'GHM', 7), +('G187', '28Z01Z', 'GHM', 7), +('G187', '28Z02Z', 'GHM', 7), +('G187', '28Z03Z', 'GHM', 7), +('G187', '28Z04Z', 'GHM', 7), +('G187', '28Z05Z', 'GHM', 7), +('G187', '28Z06Z', 'GHM', 7), +('G188', '28Z14Z', 'GHM', 7), +('G189', '28Z08Z', 'GHM', 7), +('G189', '28Z09Z', 'GHM', 7), +('G189', '28Z10Z', 'GHM', 7), +('G189', '28Z11Z', 'GHM', 7), +('G189', '28Z12Z', 'GHM', 7), +('G189', '28Z13Z', 'GHM', 7), +('G189', '28Z18Z', 'GHM', 7), +('G189', '28Z19Z', 'GHM', 7), +('G189', '28Z20Z', 'GHM', 7), +('G189', '28Z21Z', 'GHM', 7), +('G189', '28Z22Z', 'GHM', 7), +('G189', '28Z23Z', 'GHM', 7), +('G189', '28Z24Z', 'GHM', 7), +('G189', '28Z25Z', 'GHM', 7), +('G190', '28Z07Z', 'GHM', 7), +('G191', '28Z17Z', 'GHM', 7), +('G192', '28Z15Z', 'GHM', 7), +('G193', '28Z16Z', 'GHM', 7), +('G194', '23M04Z', 'GHM', 7), +('G194', '23M05Z', 'GHM', 7), +('G194', '23M061', 'GHM', 7), +('G194', '23M062', 'GHM', 7), +('G194', '23M063', 'GHM', 7), +('G194', '23M064', 'GHM', 7), +('G194', '23M06T', 'GHM', 7), +('G194', '23M06Z', 'GHM', 7), +('G194', '23M20T', 'GHM', 7), +('G194', '23M20Z', 'GHM', 7), +('G195', '15Z10E', 'GHM', 7), +('G196', '01K04J', 'GHM', 7), +('G197', '01K06J', 'GHM', 7), +('G198', '05K17J', 'GHM', 7), +('G199', '05K14Z', 'GHM', 7), +('G199', '11K07Z', 'GHM', 7), +('G200', '05K18J', 'GHM', 7), +('G201', '13K06J', 'GHM', 7), +('G202', '11K021', 'GHM', 7), +('G202', '11K022', 'GHM', 7), +('G202', '11K023', 'GHM', 7), +('G202', '11K024', 'GHM', 7), +('G202', '11K02J', 'GHM', 7), +('G202', '11K02V', 'GHM', 7), +('G202', '11K02W', 'GHM', 7), +('G203', '09K02J', 'GHM', 7), +('G203', '17K07J', 'GHM', 7), +('G203', '23K03J', 'GHM', 7), +('G204', '22C021', 'GHM', 7), +('G204', '22C022', 'GHM', 7), +('G204', '22C023', 'GHM', 7), +('G204', '22C024', 'GHM', 7), +('G204', '22C02J', 'GHM', 7), +('G204', '22C02Z', 'GHM', 7), +('G204', '22C031', 'GHM', 7), +('G204', '22C032', 'GHM', 7), +('G204', '22C033', 'GHM', 7), +('G204', '22C034', 'GHM', 7), +('G204', '22C03Z', 'GHM', 7), +('G205', '01K05J', 'GHM', 7), +('G206', '21K02J', 'GHM', 7), +('G207', '03K021', 'GHM', 7), +('G207', '03K022', 'GHM', 7), +('G207', '03K023', 'GHM', 7), +('G207', '03K024', 'GHM', 7), +('G207', '03K02J', 'GHM', 7), +('G207', '03K02Z', 'GHM', 7), +('G207', '03K04J', 'GHM', 7), +('G208', '11K08J', 'GHM', 7), +('G209', '12K06J', 'GHM', 7), +('G210', '08M261', 'GHM', 7), +('G210', '08M262', 'GHM', 7), +('G210', '08M263', 'GHM', 7), +('G210', '08M264', 'GHM', 7), +('G210', '08M381', 'GHM', 7), +('G210', '08M382', 'GHM', 7), +('G210', '08M383', 'GHM', 7), +('G210', '08M384', 'GHM', 7), +('G210', '08M38T', 'GHM', 7), +('G211', '08M16Z', 'GHM', 7), +('G211', '08M17Z', 'GHM', 7), +('G211', '08M311', 'GHM', 7), +('G211', '08M312', 'GHM', 7), +('G211', '08M313', 'GHM', 7), +('G211', '08M314', 'GHM', 7), +('G211', '08M31T', 'GHM', 7), +('G212', '10M191', 'GHM', 7), +('G212', '10M192', 'GHM', 7), +('G212', '10M193', 'GHM', 7), +('G212', '10M194', 'GHM', 7), +('G212', '10M201', 'GHM', 7), +('G212', '10M202', 'GHM', 7), +('G212', '10M203', 'GHM', 7), +('G212', '10M204', 'GHM', 7), +('G213', '06K02Z', 'GHM', 7), +('G214', '06K06J', 'GHM', 7), +('G215', '22K02J', 'GHM', 7), +('G216', '26M021', 'GHM', 7), +('G216', '26M022', 'GHM', 7), +('G216', '26M023', 'GHM', 7), +('G216', '26M024', 'GHM', 7), +('G216', '26M02Z', 'GHM', 7), +('G217', '07K061', 'GHM', 7), +('G217', '07K062', 'GHM', 7), +('G217', '07K063', 'GHM', 7), +('G217', '07K064', 'GHM', 7), +('G999', '90C01Z', 'GHM', 7), +('G999', '90H01Z', 'GHM', 7), +('G999', '90H02Z', 'GHM', 7), +('G999', '90H03Z', 'GHM', 7), +('G999', '90Z00Z', 'GHM', 7), +('G999', '90Z01Z', 'GHM', 7), +('G999', '90Z02Z', 'GHM', 7), +('G999', '90Z03Z', 'GHM', 7), +('G999', '999999', 'GHM', 7), +('G999', 'ZZZZZZ', 'GHM', 7), +('C01', '27C021', 'GHM', 8), +('C01', '27C022', 'GHM', 8), +('C01', '27C023', 'GHM', 8), +('C01', '27C024', 'GHM', 8), +('C01', '27C02Z', 'GHM', 8), +('C01', '27C031', 'GHM', 8), +('C01', '27C032', 'GHM', 8), +('C01', '27C033', 'GHM', 8), +('C01', '27C034', 'GHM', 8), +('C01', '27C03Z', 'GHM', 8), +('C01', '27C041', 'GHM', 8), +('C01', '27C042', 'GHM', 8), +('C01', '27C043', 'GHM', 8), +('C01', '27C044', 'GHM', 8), +('C01', '27C04Z', 'GHM', 8), +('C01', '27C051', 'GHM', 8), +('C01', '27C052', 'GHM', 8), +('C01', '27C053', 'GHM', 8), +('C01', '27C054', 'GHM', 8), +('C01', '27C05Z', 'GHM', 8), +('C01', '27C061', 'GHM', 8), +('C01', '27C062', 'GHM', 8), +('C01', '27C063', 'GHM', 8), +('C01', '27C064', 'GHM', 8), +('C01', '27C06Z', 'GHM', 8), +('C01', '27C071', 'GHM', 8), +('C01', '27C072', 'GHM', 8), +('C01', '27C073', 'GHM', 8), +('C01', '27C074', 'GHM', 8), +('C01', '27C07Z', 'GHM', 8), +('C02', '01C02Z', 'GHM', 8), +('C02', '01C031', 'GHM', 8), +('C02', '01C032', 'GHM', 8), +('C02', '01C033', 'GHM', 8), +('C02', '01C034', 'GHM', 8), +('C02', '01C03V', 'GHM', 8), +('C02', '01C03W', 'GHM', 8), +('C02', '01C041', 'GHM', 8), +('C02', '01C042', 'GHM', 8), +('C02', '01C043', 'GHM', 8), +('C02', '01C044', 'GHM', 8), +('C02', '01C04V', 'GHM', 8), +('C02', '01C04W', 'GHM', 8), +('C02', '01C051', 'GHM', 8), +('C02', '01C052', 'GHM', 8), +('C02', '01C053', 'GHM', 8), +('C02', '01C054', 'GHM', 8), +('C02', '01C05V', 'GHM', 8), +('C02', '01C05W', 'GHM', 8), +('C02', '01C111', 'GHM', 8), +('C02', '01C112', 'GHM', 8), +('C02', '01C113', 'GHM', 8), +('C02', '01C114', 'GHM', 8), +('C02', '01C11Z', 'GHM', 8), +('C02', '01C121', 'GHM', 8), +('C02', '01C122', 'GHM', 8), +('C02', '01C123', 'GHM', 8), +('C02', '01C124', 'GHM', 8), +('C02', '01C12Z', 'GHM', 8), +('C02', '08C26Z', 'GHM', 8), +('C02', '08C271', 'GHM', 8), +('C02', '08C272', 'GHM', 8), +('C02', '08C273', 'GHM', 8), +('C02', '08C274', 'GHM', 8), +('C02', '08C27V', 'GHM', 8), +('C02', '08C27W', 'GHM', 8), +('C02', '08C511', 'GHM', 8), +('C02', '08C512', 'GHM', 8), +('C02', '08C513', 'GHM', 8), +('C02', '08C514', 'GHM', 8), +('C02', '08C521', 'GHM', 8), +('C02', '08C522', 'GHM', 8), +('C02', '08C523', 'GHM', 8), +('C02', '08C524', 'GHM', 8), +('C02', '10C021', 'GHM', 8), +('C02', '10C022', 'GHM', 8), +('C02', '10C023', 'GHM', 8), +('C02', '10C024', 'GHM', 8), +('C02', '10C02Z', 'GHM', 8), +('C03', '01C091', 'GHM', 8), +('C03', '01C092', 'GHM', 8), +('C03', '01C093', 'GHM', 8), +('C03', '01C094', 'GHM', 8), +('C03', '01C09Z', 'GHM', 8), +('C03', '01C101', 'GHM', 8), +('C03', '01C102', 'GHM', 8), +('C03', '01C103', 'GHM', 8), +('C03', '01C104', 'GHM', 8), +('C03', '01C10J', 'GHM', 8), +('C03', '01C10Z', 'GHM', 8), +('C04', '05C021', 'GHM', 8), +('C04', '05C022', 'GHM', 8), +('C04', '05C023', 'GHM', 8), +('C04', '05C024', 'GHM', 8), +('C04', '05C02Z', 'GHM', 8), +('C04', '05C031', 'GHM', 8), +('C04', '05C032', 'GHM', 8), +('C04', '05C033', 'GHM', 8), +('C04', '05C034', 'GHM', 8), +('C04', '05C03V', 'GHM', 8), +('C04', '05C03W', 'GHM', 8), +('C04', '05C041', 'GHM', 8), +('C04', '05C042', 'GHM', 8), +('C04', '05C043', 'GHM', 8), +('C04', '05C044', 'GHM', 8), +('C04', '05C04V', 'GHM', 8), +('C04', '05C04W', 'GHM', 8), +('C04', '05C051', 'GHM', 8), +('C04', '05C052', 'GHM', 8), +('C04', '05C053', 'GHM', 8), +('C04', '05C054', 'GHM', 8), +('C04', '05C05V', 'GHM', 8), +('C04', '05C05W', 'GHM', 8), +('C04', '05C061', 'GHM', 8), +('C04', '05C062', 'GHM', 8), +('C04', '05C063', 'GHM', 8), +('C04', '05C064', 'GHM', 8), +('C04', '05C06V', 'GHM', 8), +('C04', '05C06W', 'GHM', 8), +('C04', '05C071', 'GHM', 8), +('C04', '05C072', 'GHM', 8), +('C04', '05C073', 'GHM', 8), +('C04', '05C074', 'GHM', 8), +('C04', '05C07Z', 'GHM', 8), +('C04', '05C081', 'GHM', 8), +('C04', '05C082', 'GHM', 8), +('C04', '05C083', 'GHM', 8), +('C04', '05C084', 'GHM', 8), +('C04', '05C08T', 'GHM', 8), +('C04', '05C08V', 'GHM', 8), +('C04', '05C08W', 'GHM', 8), +('C04', '05C091', 'GHM', 8), +('C04', '05C092', 'GHM', 8), +('C04', '05C093', 'GHM', 8), +('C04', '05C094', 'GHM', 8), +('C04', '05C09Z', 'GHM', 8), +('C05', '04C021', 'GHM', 8), +('C05', '04C022', 'GHM', 8), +('C05', '04C023', 'GHM', 8), +('C05', '04C024', 'GHM', 8), +('C05', '04C02V', 'GHM', 8), +('C05', '04C02W', 'GHM', 8), +('C05', '04C031', 'GHM', 8), +('C05', '04C032', 'GHM', 8), +('C05', '04C033', 'GHM', 8), +('C05', '04C034', 'GHM', 8), +('C05', '04C03V', 'GHM', 8), +('C05', '04C03W', 'GHM', 8), +('C05', '04C041', 'GHM', 8), +('C05', '04C042', 'GHM', 8), +('C05', '04C043', 'GHM', 8), +('C05', '04C044', 'GHM', 8), +('C06', '06C021', 'GHM', 8), +('C06', '06C022', 'GHM', 8), +('C06', '06C023', 'GHM', 8), +('C06', '06C024', 'GHM', 8), +('C06', '06C02Z', 'GHM', 8), +('C06', '06C031', 'GHM', 8), +('C06', '06C032', 'GHM', 8), +('C06', '06C033', 'GHM', 8), +('C06', '06C034', 'GHM', 8), +('C06', '06C03V', 'GHM', 8), +('C06', '06C03W', 'GHM', 8), +('C06', '06C041', 'GHM', 8), +('C06', '06C042', 'GHM', 8), +('C06', '06C043', 'GHM', 8), +('C06', '06C044', 'GHM', 8), +('C06', '06C04V', 'GHM', 8), +('C06', '06C04W', 'GHM', 8), +('C06', '06C051', 'GHM', 8), +('C06', '06C052', 'GHM', 8), +('C06', '06C053', 'GHM', 8), +('C06', '06C054', 'GHM', 8), +('C06', '06C05Z', 'GHM', 8), +('C06', '06C161', 'GHM', 8), +('C06', '06C162', 'GHM', 8), +('C06', '06C163', 'GHM', 8), +('C06', '06C164', 'GHM', 8), +('C06', '06C16V', 'GHM', 8), +('C06', '06C16W', 'GHM', 8), +('C06', '06C201', 'GHM', 8), +('C06', '06C202', 'GHM', 8), +('C06', '06C203', 'GHM', 8), +('C06', '06C204', 'GHM', 8), +('C06', '06C221', 'GHM', 8), +('C06', '06C222', 'GHM', 8), +('C06', '06C223', 'GHM', 8), +('C06', '06C224', 'GHM', 8), +('C06', '10C04Z', 'GHM', 8), +('C06', '10C091', 'GHM', 8), +('C06', '10C092', 'GHM', 8), +('C06', '10C093', 'GHM', 8), +('C06', '10C094', 'GHM', 8), +('C06', '10C09Z', 'GHM', 8), +('C07', '06C071', 'GHM', 8), +('C07', '06C072', 'GHM', 8), +('C07', '06C073', 'GHM', 8), +('C07', '06C074', 'GHM', 8), +('C07', '06C07V', 'GHM', 8), +('C07', '06C07W', 'GHM', 8), +('C07', '06C081', 'GHM', 8), +('C07', '06C082', 'GHM', 8), +('C07', '06C083', 'GHM', 8), +('C07', '06C084', 'GHM', 8), +('C07', '06C08V', 'GHM', 8), +('C07', '06C08W', 'GHM', 8), +('C07', '06C091', 'GHM', 8), +('C07', '06C092', 'GHM', 8), +('C07', '06C093', 'GHM', 8), +('C07', '06C094', 'GHM', 8), +('C07', '06C09V', 'GHM', 8), +('C07', '06C09W', 'GHM', 8), +('C07', '06C101', 'GHM', 8), +('C07', '06C102', 'GHM', 8), +('C07', '06C103', 'GHM', 8), +('C07', '06C104', 'GHM', 8), +('C07', '06C10J', 'GHM', 8), +('C07', '06C10Z', 'GHM', 8), +('C07', '06C111', 'GHM', 8), +('C07', '06C112', 'GHM', 8), +('C07', '06C113', 'GHM', 8), +('C07', '06C114', 'GHM', 8), +('C07', '06C11J', 'GHM', 8), +('C07', '06C11V', 'GHM', 8), +('C07', '06C11W', 'GHM', 8), +('C07', '06C121', 'GHM', 8), +('C07', '06C122', 'GHM', 8), +('C07', '06C123', 'GHM', 8), +('C07', '06C124', 'GHM', 8), +('C07', '06C12J', 'GHM', 8), +('C07', '06C12V', 'GHM', 8), +('C07', '06C12W', 'GHM', 8), +('C07', '06C131', 'GHM', 8), +('C07', '06C132', 'GHM', 8), +('C07', '06C133', 'GHM', 8), +('C07', '06C134', 'GHM', 8), +('C07', '06C13V', 'GHM', 8), +('C07', '06C13W', 'GHM', 8), +('C07', '06C141', 'GHM', 8), +('C07', '06C142', 'GHM', 8), +('C07', '06C143', 'GHM', 8), +('C07', '06C144', 'GHM', 8), +('C07', '06C14J', 'GHM', 8), +('C07', '06C14V', 'GHM', 8), +('C07', '06C14W', 'GHM', 8), +('C07', '06C151', 'GHM', 8), +('C07', '06C152', 'GHM', 8), +('C07', '06C153', 'GHM', 8), +('C07', '06C154', 'GHM', 8), +('C07', '06C15V', 'GHM', 8), +('C07', '06C15W', 'GHM', 8), +('C07', '06C191', 'GHM', 8), +('C07', '06C192', 'GHM', 8), +('C07', '06C193', 'GHM', 8), +('C07', '06C194', 'GHM', 8), +('C07', '06C19J', 'GHM', 8), +('C07', '06C211', 'GHM', 8), +('C07', '06C212', 'GHM', 8), +('C07', '06C213', 'GHM', 8), +('C07', '06C214', 'GHM', 8), +('C07', '06C231', 'GHM', 8), +('C07', '06C232', 'GHM', 8), +('C07', '06C233', 'GHM', 8), +('C07', '06C234', 'GHM', 8), +('C07', '06C23J', 'GHM', 8), +('C07', '06C241', 'GHM', 8), +('C07', '06C242', 'GHM', 8), +('C07', '06C243', 'GHM', 8), +('C07', '06C244', 'GHM', 8), +('C07', '06C24J', 'GHM', 8), +('C07', '06C251', 'GHM', 8), +('C07', '06C252', 'GHM', 8), +('C07', '06C253', 'GHM', 8), +('C07', '06C254', 'GHM', 8), +('C07', '06C25J', 'GHM', 8), +('C07', '09C081', 'GHM', 8), +('C07', '09C082', 'GHM', 8), +('C07', '09C083', 'GHM', 8), +('C07', '09C084', 'GHM', 8), +('C07', '09C08J', 'GHM', 8), +('C07', '09C08Z', 'GHM', 8), +('C07', '09C131', 'GHM', 8), +('C07', '09C132', 'GHM', 8), +('C07', '09C133', 'GHM', 8), +('C07', '09C134', 'GHM', 8), +('C07', '09C13J', 'GHM', 8), +('C07', '10C131', 'GHM', 8), +('C07', '10C132', 'GHM', 8), +('C07', '10C133', 'GHM', 8), +('C07', '10C134', 'GHM', 8), +('C07', '10C13Z', 'GHM', 8), +('C07', '16C021', 'GHM', 8), +('C07', '16C022', 'GHM', 8), +('C07', '16C023', 'GHM', 8), +('C07', '16C024', 'GHM', 8), +('C07', '16C02Z', 'GHM', 8), +('C08', '07C061', 'GHM', 8), +('C08', '07C062', 'GHM', 8), +('C08', '07C063', 'GHM', 8), +('C08', '07C064', 'GHM', 8), +('C08', '07C06Z', 'GHM', 8), +('C08', '07C071', 'GHM', 8), +('C08', '07C072', 'GHM', 8), +('C08', '07C073', 'GHM', 8), +('C08', '07C074', 'GHM', 8), +('C08', '07C07Z', 'GHM', 8), +('C08', '07C081', 'GHM', 8), +('C08', '07C082', 'GHM', 8), +('C08', '07C083', 'GHM', 8), +('C08', '07C084', 'GHM', 8), +('C08', '07C08Z', 'GHM', 8), +('C08', '07C091', 'GHM', 8), +('C08', '07C092', 'GHM', 8), +('C08', '07C093', 'GHM', 8), +('C08', '07C094', 'GHM', 8), +('C08', '07C09V', 'GHM', 8), +('C08', '07C09W', 'GHM', 8), +('C08', '07C101', 'GHM', 8), +('C08', '07C102', 'GHM', 8), +('C08', '07C103', 'GHM', 8), +('C08', '07C104', 'GHM', 8), +('C08', '07C10V', 'GHM', 8), +('C08', '07C10W', 'GHM', 8), +('C08', '07C111', 'GHM', 8), +('C08', '07C112', 'GHM', 8), +('C08', '07C113', 'GHM', 8), +('C08', '07C114', 'GHM', 8), +('C08', '07C11V', 'GHM', 8), +('C08', '07C11W', 'GHM', 8), +('C08', '07C121', 'GHM', 8), +('C08', '07C122', 'GHM', 8), +('C08', '07C123', 'GHM', 8), +('C08', '07C124', 'GHM', 8), +('C08', '07C12V', 'GHM', 8), +('C08', '07C12W', 'GHM', 8), +('C08', '07C131', 'GHM', 8), +('C08', '07C132', 'GHM', 8), +('C08', '07C133', 'GHM', 8), +('C08', '07C134', 'GHM', 8), +('C08', '07C141', 'GHM', 8), +('C08', '07C142', 'GHM', 8), +('C08', '07C143', 'GHM', 8), +('C08', '07C144', 'GHM', 8), +('C08', '07C14J', 'GHM', 8), +('C09', '08C021', 'GHM', 8), +('C09', '08C022', 'GHM', 8), +('C09', '08C023', 'GHM', 8), +('C09', '08C024', 'GHM', 8), +('C09', '08C02Z', 'GHM', 8), +('C09', '08C041', 'GHM', 8), +('C09', '08C042', 'GHM', 8), +('C09', '08C043', 'GHM', 8), +('C09', '08C044', 'GHM', 8), +('C09', '08C04Z', 'GHM', 8), +('C09', '08C221', 'GHM', 8), +('C09', '08C222', 'GHM', 8), +('C09', '08C223', 'GHM', 8), +('C09', '08C224', 'GHM', 8), +('C09', '08C22Z', 'GHM', 8), +('C09', '08C241', 'GHM', 8), +('C09', '08C242', 'GHM', 8), +('C09', '08C243', 'GHM', 8), +('C09', '08C244', 'GHM', 8), +('C09', '08C24Z', 'GHM', 8), +('C09', '08C251', 'GHM', 8), +('C09', '08C252', 'GHM', 8), +('C09', '08C253', 'GHM', 8), +('C09', '08C254', 'GHM', 8), +('C09', '08C25Z', 'GHM', 8), +('C09', '08C471', 'GHM', 8), +('C09', '08C472', 'GHM', 8), +('C09', '08C473', 'GHM', 8), +('C09', '08C474', 'GHM', 8), +('C09', '08C481', 'GHM', 8), +('C09', '08C482', 'GHM', 8), +('C09', '08C483', 'GHM', 8), +('C09', '08C484', 'GHM', 8), +('C09', '08C491', 'GHM', 8), +('C09', '08C492', 'GHM', 8), +('C09', '08C493', 'GHM', 8), +('C09', '08C494', 'GHM', 8), +('C09', '08C501', 'GHM', 8), +('C09', '08C502', 'GHM', 8), +('C09', '08C503', 'GHM', 8), +('C09', '08C504', 'GHM', 8), +('C10', '08C121', 'GHM', 8), +('C10', '08C122', 'GHM', 8), +('C10', '08C123', 'GHM', 8), +('C10', '08C124', 'GHM', 8), +('C10', '08C12J', 'GHM', 8), +('C10', '08C12Z', 'GHM', 8), +('C10', '08C19Z', 'GHM', 8), +('C10', '08C341', 'GHM', 8), +('C10', '08C342', 'GHM', 8), +('C10', '08C343', 'GHM', 8), +('C10', '08C344', 'GHM', 8), +('C10', '08C34J', 'GHM', 8), +('C10', '08C381', 'GHM', 8), +('C10', '08C382', 'GHM', 8), +('C10', '08C383', 'GHM', 8), +('C10', '08C384', 'GHM', 8), +('C10', '08C38J', 'GHM', 8), +('C10', '08C401', 'GHM', 8), +('C10', '08C402', 'GHM', 8), +('C10', '08C403', 'GHM', 8), +('C10', '08C404', 'GHM', 8), +('C10', '08C40J', 'GHM', 8), +('C10', '08C451', 'GHM', 8), +('C10', '08C452', 'GHM', 8), +('C10', '08C453', 'GHM', 8), +('C10', '08C454', 'GHM', 8), +('C10', '08C45J', 'GHM', 8), +('C10', '08C581', 'GHM', 8), +('C10', '08C582', 'GHM', 8), +('C10', '08C583', 'GHM', 8), +('C10', '08C584', 'GHM', 8), +('C10', '08C58J', 'GHM', 8), +('C11', '01C07Z', 'GHM', 8), +('C11', '01C131', 'GHM', 8), +('C11', '01C132', 'GHM', 8), +('C11', '01C133', 'GHM', 8), +('C11', '01C134', 'GHM', 8), +('C11', '01C13J', 'GHM', 8), +('C11', '01C13Z', 'GHM', 8), +('C11', '01C141', 'GHM', 8), +('C11', '01C142', 'GHM', 8), +('C11', '01C143', 'GHM', 8), +('C11', '01C144', 'GHM', 8), +('C11', '01C14J', 'GHM', 8), +('C11', '01C151', 'GHM', 8), +('C11', '01C152', 'GHM', 8), +('C11', '01C153', 'GHM', 8), +('C11', '01C154', 'GHM', 8), +('C11', '01C15J', 'GHM', 8), +('C11', '05C121', 'GHM', 8), +('C11', '05C122', 'GHM', 8), +('C11', '05C123', 'GHM', 8), +('C11', '05C124', 'GHM', 8), +('C11', '05C12V', 'GHM', 8), +('C11', '05C12W', 'GHM', 8), +('C11', '05C131', 'GHM', 8), +('C11', '05C132', 'GHM', 8), +('C11', '05C133', 'GHM', 8), +('C11', '05C134', 'GHM', 8), +('C11', '05C13J', 'GHM', 8), +('C11', '05C13V', 'GHM', 8), +('C11', '05C13W', 'GHM', 8), +('C11', '08C061', 'GHM', 8), +('C11', '08C062', 'GHM', 8), +('C11', '08C063', 'GHM', 8), +('C11', '08C064', 'GHM', 8), +('C11', '08C06Z', 'GHM', 8), +('C11', '08C08Z', 'GHM', 8), +('C11', '08C131', 'GHM', 8), +('C11', '08C132', 'GHM', 8), +('C11', '08C133', 'GHM', 8), +('C11', '08C134', 'GHM', 8), +('C11', '08C13J', 'GHM', 8), +('C11', '08C13Z', 'GHM', 8), +('C11', '08C141', 'GHM', 8), +('C11', '08C142', 'GHM', 8), +('C11', '08C143', 'GHM', 8), +('C11', '08C144', 'GHM', 8), +('C11', '08C14J', 'GHM', 8), +('C11', '08C14Z', 'GHM', 8), +('C11', '08C17Z', 'GHM', 8), +('C11', '08C291', 'GHM', 8), +('C11', '08C292', 'GHM', 8), +('C11', '08C293', 'GHM', 8), +('C11', '08C294', 'GHM', 8), +('C11', '08C29J', 'GHM', 8), +('C11', '08C29Z', 'GHM', 8), +('C11', '08C311', 'GHM', 8), +('C11', '08C312', 'GHM', 8), +('C11', '08C313', 'GHM', 8), +('C11', '08C314', 'GHM', 8), +('C11', '08C321', 'GHM', 8), +('C11', '08C322', 'GHM', 8), +('C11', '08C323', 'GHM', 8), +('C11', '08C324', 'GHM', 8), +('C11', '08C32J', 'GHM', 8), +('C11', '08C331', 'GHM', 8), +('C11', '08C332', 'GHM', 8), +('C11', '08C333', 'GHM', 8), +('C11', '08C334', 'GHM', 8), +('C11', '08C351', 'GHM', 8), +('C11', '08C352', 'GHM', 8), +('C11', '08C353', 'GHM', 8), +('C11', '08C354', 'GHM', 8), +('C11', '08C35J', 'GHM', 8), +('C11', '08C361', 'GHM', 8), +('C11', '08C362', 'GHM', 8), +('C11', '08C363', 'GHM', 8), +('C11', '08C364', 'GHM', 8), +('C11', '08C36J', 'GHM', 8), +('C11', '08C371', 'GHM', 8), +('C11', '08C372', 'GHM', 8), +('C11', '08C373', 'GHM', 8), +('C11', '08C374', 'GHM', 8), +('C11', '08C37J', 'GHM', 8), +('C11', '08C391', 'GHM', 8), +('C11', '08C392', 'GHM', 8), +('C11', '08C393', 'GHM', 8), +('C11', '08C394', 'GHM', 8), +('C11', '08C39J', 'GHM', 8), +('C11', '08C411', 'GHM', 8), +('C11', '08C412', 'GHM', 8), +('C11', '08C413', 'GHM', 8), +('C11', '08C414', 'GHM', 8), +('C11', '08C41J', 'GHM', 8), +('C11', '08C421', 'GHM', 8), +('C11', '08C422', 'GHM', 8), +('C11', '08C423', 'GHM', 8), +('C11', '08C424', 'GHM', 8), +('C11', '08C42J', 'GHM', 8), +('C11', '08C431', 'GHM', 8), +('C11', '08C432', 'GHM', 8), +('C11', '08C433', 'GHM', 8), +('C11', '08C434', 'GHM', 8), +('C11', '08C43J', 'GHM', 8), +('C11', '08C441', 'GHM', 8), +('C11', '08C442', 'GHM', 8), +('C11', '08C443', 'GHM', 8), +('C11', '08C444', 'GHM', 8), +('C11', '08C44J', 'GHM', 8), +('C11', '08C461', 'GHM', 8), +('C11', '08C462', 'GHM', 8), +('C11', '08C463', 'GHM', 8), +('C11', '08C464', 'GHM', 8), +('C11', '08C46J', 'GHM', 8), +('C11', '08C531', 'GHM', 8), +('C11', '08C532', 'GHM', 8), +('C11', '08C533', 'GHM', 8), +('C11', '08C534', 'GHM', 8), +('C11', '08C541', 'GHM', 8), +('C11', '08C542', 'GHM', 8), +('C11', '08C543', 'GHM', 8), +('C11', '08C544', 'GHM', 8), +('C11', '08C54J', 'GHM', 8), +('C11', '08C551', 'GHM', 8), +('C11', '08C552', 'GHM', 8), +('C11', '08C553', 'GHM', 8), +('C11', '08C554', 'GHM', 8), +('C11', '08C561', 'GHM', 8), +('C11', '08C562', 'GHM', 8), +('C11', '08C563', 'GHM', 8), +('C11', '08C564', 'GHM', 8), +('C11', '08C571', 'GHM', 8), +('C11', '08C572', 'GHM', 8), +('C11', '08C573', 'GHM', 8), +('C11', '08C574', 'GHM', 8), +('C11', '08C57J', 'GHM', 8), +('C11', '08C591', 'GHM', 8), +('C11', '08C592', 'GHM', 8), +('C11', '08C593', 'GHM', 8), +('C11', '08C594', 'GHM', 8), +('C11', '08C59J', 'GHM', 8), +('C11', '08C601', 'GHM', 8), +('C11', '08C602', 'GHM', 8), +('C11', '08C603', 'GHM', 8), +('C11', '08C604', 'GHM', 8), +('C11', '08C60J', 'GHM', 8), +('C11', '08C611', 'GHM', 8), +('C11', '08C612', 'GHM', 8), +('C11', '08C613', 'GHM', 8), +('C11', '08C614', 'GHM', 8), +('C11', '08C621', 'GHM', 8), +('C11', '08C622', 'GHM', 8), +('C11', '08C623', 'GHM', 8), +('C11', '08C624', 'GHM', 8), +('C11', '08C62J', 'GHM', 8), +('C11', '21C041', 'GHM', 8), +('C11', '21C042', 'GHM', 8), +('C11', '21C043', 'GHM', 8), +('C11', '21C044', 'GHM', 8), +('C11', '21C04J', 'GHM', 8), +('C11', '21C04Z', 'GHM', 8), +('C12', '26C021', 'GHM', 8), +('C12', '26C022', 'GHM', 8), +('C12', '26C023', 'GHM', 8), +('C12', '26C024', 'GHM', 8), +('C12', '26C02Z', 'GHM', 8), +('C13', '05C141', 'GHM', 8), +('C13', '05C142', 'GHM', 8), +('C13', '05C143', 'GHM', 8), +('C13', '05C144', 'GHM', 8), +('C13', '05C14J', 'GHM', 8), +('C13', '05C14Z', 'GHM', 8), +('C13', '05C151', 'GHM', 8), +('C13', '05C152', 'GHM', 8), +('C13', '05C153', 'GHM', 8), +('C13', '05C154', 'GHM', 8), +('C13', '05C15T', 'GHM', 8), +('C13', '05C15Z', 'GHM', 8), +('C13', '05C191', 'GHM', 8), +('C13', '05C192', 'GHM', 8), +('C13', '05C193', 'GHM', 8), +('C13', '05C194', 'GHM', 8), +('C13', '05C19T', 'GHM', 8), +('C13', '05C19Z', 'GHM', 8), +('C13', '05C201', 'GHM', 8), +('C13', '05C202', 'GHM', 8), +('C13', '05C203', 'GHM', 8), +('C13', '05C204', 'GHM', 8), +('C13', '05C20Z', 'GHM', 8), +('C13', '05C221', 'GHM', 8), +('C13', '05C222', 'GHM', 8), +('C13', '05C223', 'GHM', 8), +('C13', '05C224', 'GHM', 8), +('C13', '05C22T', 'GHM', 8), +('C14', '01C061', 'GHM', 8), +('C14', '01C062', 'GHM', 8), +('C14', '01C063', 'GHM', 8), +('C14', '01C064', 'GHM', 8), +('C14', '01C06V', 'GHM', 8), +('C14', '01C06W', 'GHM', 8), +('C14', '05C101', 'GHM', 8), +('C14', '05C102', 'GHM', 8), +('C14', '05C103', 'GHM', 8), +('C14', '05C104', 'GHM', 8), +('C14', '05C10V', 'GHM', 8), +('C14', '05C10W', 'GHM', 8), +('C14', '05C111', 'GHM', 8), +('C14', '05C112', 'GHM', 8), +('C14', '05C113', 'GHM', 8), +('C14', '05C114', 'GHM', 8), +('C14', '05C11J', 'GHM', 8), +('C14', '05C11V', 'GHM', 8), +('C14', '05C11W', 'GHM', 8), +('C14', '05C171', 'GHM', 8), +('C14', '05C172', 'GHM', 8), +('C14', '05C173', 'GHM', 8), +('C14', '05C174', 'GHM', 8), +('C14', '05C17J', 'GHM', 8), +('C14', '05C17V', 'GHM', 8), +('C14', '05C17W', 'GHM', 8), +('C14', '05C211', 'GHM', 8), +('C14', '05C212', 'GHM', 8), +('C14', '05C213', 'GHM', 8), +('C14', '05C214', 'GHM', 8), +('C14', '05C21J', 'GHM', 8), +('C14', '11C091', 'GHM', 8), +('C14', '11C092', 'GHM', 8), +('C14', '11C093', 'GHM', 8), +('C14', '11C094', 'GHM', 8), +('C14', '11C09J', 'GHM', 8), +('C15', '03C03Z', 'GHM', 8), +('C15', '03C04Z', 'GHM', 8), +('C15', '03C051', 'GHM', 8), +('C15', '03C052', 'GHM', 8), +('C15', '03C053', 'GHM', 8), +('C15', '03C054', 'GHM', 8), +('C15', '03C05T', 'GHM', 8), +('C15', '03C05Z', 'GHM', 8), +('C15', '03C061', 'GHM', 8), +('C15', '03C062', 'GHM', 8), +('C15', '03C063', 'GHM', 8), +('C15', '03C064', 'GHM', 8), +('C15', '03C06J', 'GHM', 8), +('C15', '03C06Z', 'GHM', 8), +('C15', '03C071', 'GHM', 8), +('C15', '03C072', 'GHM', 8), +('C15', '03C073', 'GHM', 8), +('C15', '03C074', 'GHM', 8), +('C15', '03C07J', 'GHM', 8), +('C15', '03C07V', 'GHM', 8), +('C15', '03C07W', 'GHM', 8), +('C15', '03C091', 'GHM', 8), +('C15', '03C092', 'GHM', 8), +('C15', '03C093', 'GHM', 8), +('C15', '03C094', 'GHM', 8), +('C15', '03C09J', 'GHM', 8), +('C15', '03C09Z', 'GHM', 8), +('C15', '03C101', 'GHM', 8), +('C15', '03C102', 'GHM', 8), +('C15', '03C103', 'GHM', 8), +('C15', '03C104', 'GHM', 8), +('C15', '03C10Z', 'GHM', 8), +('C15', '03C111', 'GHM', 8), +('C15', '03C112', 'GHM', 8), +('C15', '03C113', 'GHM', 8), +('C15', '03C114', 'GHM', 8), +('C15', '03C11Z', 'GHM', 8), +('C15', '03C121', 'GHM', 8), +('C15', '03C122', 'GHM', 8), +('C15', '03C123', 'GHM', 8), +('C15', '03C124', 'GHM', 8), +('C15', '03C12Z', 'GHM', 8), +('C15', '03C131', 'GHM', 8), +('C15', '03C132', 'GHM', 8), +('C15', '03C133', 'GHM', 8), +('C15', '03C134', 'GHM', 8), +('C15', '03C13Z', 'GHM', 8), +('C15', '03C141', 'GHM', 8), +('C15', '03C142', 'GHM', 8), +('C15', '03C143', 'GHM', 8), +('C15', '03C144', 'GHM', 8), +('C15', '03C14J', 'GHM', 8), +('C15', '03C14Z', 'GHM', 8), +('C15', '03C151', 'GHM', 8), +('C15', '03C152', 'GHM', 8), +('C15', '03C153', 'GHM', 8), +('C15', '03C154', 'GHM', 8), +('C15', '03C15J', 'GHM', 8), +('C15', '03C15Z', 'GHM', 8), +('C15', '03C161', 'GHM', 8), +('C15', '03C162', 'GHM', 8), +('C15', '03C163', 'GHM', 8), +('C15', '03C164', 'GHM', 8), +('C15', '03C16J', 'GHM', 8), +('C15', '03C16V', 'GHM', 8), +('C15', '03C16W', 'GHM', 8), +('C15', '03C171', 'GHM', 8), +('C15', '03C172', 'GHM', 8), +('C15', '03C173', 'GHM', 8), +('C15', '03C174', 'GHM', 8), +('C15', '03C17J', 'GHM', 8), +('C15', '03C17Z', 'GHM', 8), +('C15', '03C181', 'GHM', 8), +('C15', '03C182', 'GHM', 8), +('C15', '03C183', 'GHM', 8), +('C15', '03C184', 'GHM', 8), +('C15', '03C18Z', 'GHM', 8), +('C15', '03C191', 'GHM', 8), +('C15', '03C192', 'GHM', 8), +('C15', '03C193', 'GHM', 8), +('C15', '03C194', 'GHM', 8), +('C15', '03C19J', 'GHM', 8), +('C15', '03C19Z', 'GHM', 8), +('C15', '03C201', 'GHM', 8), +('C15', '03C202', 'GHM', 8), +('C15', '03C203', 'GHM', 8), +('C15', '03C204', 'GHM', 8), +('C15', '03C20J', 'GHM', 8), +('C15', '03C20Z', 'GHM', 8), +('C15', '03C211', 'GHM', 8), +('C15', '03C212', 'GHM', 8), +('C15', '03C213', 'GHM', 8), +('C15', '03C214', 'GHM', 8), +('C15', '03C21J', 'GHM', 8), +('C15', '03C21Z', 'GHM', 8), +('C15', '03C22J', 'GHM', 8), +('C15', '03C241', 'GHM', 8), +('C15', '03C242', 'GHM', 8), +('C15', '03C243', 'GHM', 8), +('C15', '03C244', 'GHM', 8), +('C15', '03C24J', 'GHM', 8), +('C15', '03C251', 'GHM', 8), +('C15', '03C252', 'GHM', 8), +('C15', '03C253', 'GHM', 8), +('C15', '03C254', 'GHM', 8), +('C15', '03C261', 'GHM', 8), +('C15', '03C262', 'GHM', 8), +('C15', '03C263', 'GHM', 8), +('C15', '03C264', 'GHM', 8), +('C15', '03C27J', 'GHM', 8), +('C15', '03C28J', 'GHM', 8), +('C15', '03C291', 'GHM', 8), +('C15', '03C292', 'GHM', 8), +('C15', '03C293', 'GHM', 8), +('C15', '03C294', 'GHM', 8), +('C15', '03C29J', 'GHM', 8), +('C15', '03C301', 'GHM', 8), +('C15', '03C302', 'GHM', 8), +('C15', '03C303', 'GHM', 8), +('C15', '03C304', 'GHM', 8), +('C15', '03C30J', 'GHM', 8), +('C15', '08C281', 'GHM', 8), +('C15', '08C282', 'GHM', 8), +('C15', '08C283', 'GHM', 8), +('C15', '08C284', 'GHM', 8), +('C15', '08C28J', 'GHM', 8), +('C15', '08C28Z', 'GHM', 8), +('C16', '02C021', 'GHM', 8), +('C16', '02C022', 'GHM', 8), +('C16', '02C023', 'GHM', 8), +('C16', '02C024', 'GHM', 8), +('C16', '02C02J', 'GHM', 8), +('C16', '02C02V', 'GHM', 8), +('C16', '02C02W', 'GHM', 8), +('C16', '02C031', 'GHM', 8), +('C16', '02C032', 'GHM', 8), +('C16', '02C033', 'GHM', 8), +('C16', '02C034', 'GHM', 8), +('C16', '02C03J', 'GHM', 8), +('C16', '02C03Z', 'GHM', 8), +('C16', '02C04Z', 'GHM', 8), +('C16', '02C051', 'GHM', 8), +('C16', '02C052', 'GHM', 8), +('C16', '02C053', 'GHM', 8), +('C16', '02C054', 'GHM', 8), +('C16', '02C05J', 'GHM', 8), +('C16', '02C05Z', 'GHM', 8), +('C16', '02C061', 'GHM', 8), +('C16', '02C062', 'GHM', 8), +('C16', '02C063', 'GHM', 8), +('C16', '02C064', 'GHM', 8), +('C16', '02C06J', 'GHM', 8), +('C16', '02C06Z', 'GHM', 8), +('C16', '02C071', 'GHM', 8), +('C16', '02C072', 'GHM', 8), +('C16', '02C073', 'GHM', 8), +('C16', '02C074', 'GHM', 8), +('C16', '02C07J', 'GHM', 8), +('C16', '02C07Z', 'GHM', 8), +('C16', '02C081', 'GHM', 8), +('C16', '02C082', 'GHM', 8), +('C16', '02C083', 'GHM', 8), +('C16', '02C084', 'GHM', 8), +('C16', '02C08J', 'GHM', 8), +('C16', '02C08V', 'GHM', 8), +('C16', '02C08W', 'GHM', 8), +('C16', '02C091', 'GHM', 8), +('C16', '02C092', 'GHM', 8), +('C16', '02C093', 'GHM', 8), +('C16', '02C094', 'GHM', 8), +('C16', '02C09J', 'GHM', 8), +('C16', '02C09Z', 'GHM', 8), +('C16', '02C101', 'GHM', 8), +('C16', '02C102', 'GHM', 8), +('C16', '02C103', 'GHM', 8), +('C16', '02C104', 'GHM', 8), +('C16', '02C10J', 'GHM', 8), +('C16', '02C111', 'GHM', 8), +('C16', '02C112', 'GHM', 8), +('C16', '02C113', 'GHM', 8), +('C16', '02C114', 'GHM', 8), +('C16', '02C11J', 'GHM', 8), +('C16', '02C121', 'GHM', 8), +('C16', '02C122', 'GHM', 8), +('C16', '02C123', 'GHM', 8), +('C16', '02C124', 'GHM', 8), +('C16', '02C12J', 'GHM', 8), +('C16', '02C131', 'GHM', 8), +('C16', '02C132', 'GHM', 8), +('C16', '02C133', 'GHM', 8), +('C16', '02C134', 'GHM', 8), +('C16', '02C13J', 'GHM', 8), +('C17', '13C031', 'GHM', 8), +('C17', '13C032', 'GHM', 8), +('C17', '13C033', 'GHM', 8), +('C17', '13C034', 'GHM', 8), +('C17', '13C03V', 'GHM', 8), +('C17', '13C03W', 'GHM', 8), +('C17', '13C041', 'GHM', 8), +('C17', '13C042', 'GHM', 8), +('C17', '13C043', 'GHM', 8), +('C17', '13C044', 'GHM', 8), +('C17', '13C04J', 'GHM', 8), +('C17', '13C04V', 'GHM', 8), +('C17', '13C04W', 'GHM', 8), +('C17', '13C051', 'GHM', 8), +('C17', '13C052', 'GHM', 8), +('C17', '13C053', 'GHM', 8), +('C17', '13C054', 'GHM', 8), +('C17', '13C05Z', 'GHM', 8), +('C17', '13C061', 'GHM', 8), +('C17', '13C062', 'GHM', 8), +('C17', '13C063', 'GHM', 8), +('C17', '13C064', 'GHM', 8), +('C17', '13C06J', 'GHM', 8), +('C17', '13C06Z', 'GHM', 8), +('C17', '13C071', 'GHM', 8), +('C17', '13C072', 'GHM', 8), +('C17', '13C073', 'GHM', 8), +('C17', '13C074', 'GHM', 8), +('C17', '13C07J', 'GHM', 8), +('C17', '13C07V', 'GHM', 8), +('C17', '13C07W', 'GHM', 8), +('C17', '13C081', 'GHM', 8), +('C17', '13C082', 'GHM', 8), +('C17', '13C083', 'GHM', 8), +('C17', '13C084', 'GHM', 8), +('C17', '13C08J', 'GHM', 8), +('C17', '13C08V', 'GHM', 8), +('C17', '13C08W', 'GHM', 8), +('C17', '13C091', 'GHM', 8), +('C17', '13C092', 'GHM', 8), +('C17', '13C093', 'GHM', 8), +('C17', '13C094', 'GHM', 8), +('C17', '13C09J', 'GHM', 8), +('C17', '13C09T', 'GHM', 8), +('C17', '13C09Z', 'GHM', 8), +('C17', '13C101', 'GHM', 8), +('C17', '13C102', 'GHM', 8), +('C17', '13C103', 'GHM', 8), +('C17', '13C104', 'GHM', 8), +('C17', '13C10J', 'GHM', 8), +('C17', '13C10T', 'GHM', 8), +('C17', '13C10Z', 'GHM', 8), +('C17', '13C111', 'GHM', 8), +('C17', '13C112', 'GHM', 8), +('C17', '13C113', 'GHM', 8), +('C17', '13C114', 'GHM', 8), +('C17', '13C11J', 'GHM', 8), +('C17', '13C11Z', 'GHM', 8), +('C17', '13C121', 'GHM', 8), +('C17', '13C122', 'GHM', 8), +('C17', '13C123', 'GHM', 8), +('C17', '13C124', 'GHM', 8), +('C17', '13C12J', 'GHM', 8), +('C17', '13C12Z', 'GHM', 8), +('C17', '13C131', 'GHM', 8), +('C17', '13C132', 'GHM', 8), +('C17', '13C133', 'GHM', 8), +('C17', '13C134', 'GHM', 8), +('C17', '13C13T', 'GHM', 8), +('C17', '13C13Z', 'GHM', 8), +('C17', '13C141', 'GHM', 8), +('C17', '13C142', 'GHM', 8), +('C17', '13C143', 'GHM', 8), +('C17', '13C144', 'GHM', 8), +('C17', '13C14V', 'GHM', 8), +('C17', '13C14W', 'GHM', 8), +('C17', '13C151', 'GHM', 8), +('C17', '13C152', 'GHM', 8), +('C17', '13C153', 'GHM', 8), +('C17', '13C154', 'GHM', 8), +('C17', '13C15V', 'GHM', 8), +('C17', '13C15W', 'GHM', 8), +('C17', '13C16J', 'GHM', 8), +('C17', '13C171', 'GHM', 8), +('C17', '13C172', 'GHM', 8), +('C17', '13C173', 'GHM', 8), +('C17', '13C174', 'GHM', 8), +('C17', '13C17J', 'GHM', 8), +('C17', '13C181', 'GHM', 8), +('C17', '13C182', 'GHM', 8), +('C17', '13C183', 'GHM', 8), +('C17', '13C184', 'GHM', 8), +('C17', '13C191', 'GHM', 8), +('C17', '13C192', 'GHM', 8), +('C17', '13C193', 'GHM', 8), +('C17', '13C194', 'GHM', 8), +('C17', '13C19J', 'GHM', 8), +('C17', '13C201', 'GHM', 8), +('C17', '13C202', 'GHM', 8), +('C17', '13C203', 'GHM', 8), +('C17', '13C204', 'GHM', 8), +('C17', '13C20J', 'GHM', 8), +('C18', '09C041', 'GHM', 8), +('C18', '09C042', 'GHM', 8), +('C18', '09C043', 'GHM', 8), +('C18', '09C044', 'GHM', 8), +('C18', '09C04V', 'GHM', 8), +('C18', '09C04W', 'GHM', 8), +('C18', '09C051', 'GHM', 8), +('C18', '09C052', 'GHM', 8), +('C18', '09C053', 'GHM', 8), +('C18', '09C054', 'GHM', 8), +('C18', '09C05J', 'GHM', 8), +('C18', '09C05V', 'GHM', 8), +('C18', '09C05W', 'GHM', 8), +('C18', '09C061', 'GHM', 8), +('C18', '09C062', 'GHM', 8), +('C18', '09C063', 'GHM', 8), +('C18', '09C064', 'GHM', 8), +('C18', '09C06T', 'GHM', 8), +('C18', '09C06Z', 'GHM', 8), +('C18', '09C071', 'GHM', 8), +('C18', '09C072', 'GHM', 8), +('C18', '09C073', 'GHM', 8), +('C18', '09C074', 'GHM', 8), +('C18', '09C07J', 'GHM', 8), +('C18', '09C07Z', 'GHM', 8), +('C18', '09C111', 'GHM', 8), +('C18', '09C112', 'GHM', 8), +('C18', '09C113', 'GHM', 8), +('C18', '09C114', 'GHM', 8), +('C19', '10C031', 'GHM', 8), +('C19', '10C032', 'GHM', 8), +('C19', '10C033', 'GHM', 8), +('C19', '10C034', 'GHM', 8), +('C19', '10C03Z', 'GHM', 8), +('C19', '11C021', 'GHM', 8), +('C19', '11C022', 'GHM', 8), +('C19', '11C023', 'GHM', 8), +('C19', '11C024', 'GHM', 8), +('C19', '11C02V', 'GHM', 8), +('C19', '11C02W', 'GHM', 8), +('C19', '11C031', 'GHM', 8), +('C19', '11C032', 'GHM', 8), +('C19', '11C033', 'GHM', 8), +('C19', '11C034', 'GHM', 8), +('C19', '11C03V', 'GHM', 8), +('C19', '11C03W', 'GHM', 8), +('C19', '11C041', 'GHM', 8), +('C19', '11C042', 'GHM', 8), +('C19', '11C043', 'GHM', 8), +('C19', '11C044', 'GHM', 8), +('C19', '11C04J', 'GHM', 8), +('C19', '11C04Z', 'GHM', 8), +('C19', '11C051', 'GHM', 8), +('C19', '11C052', 'GHM', 8), +('C19', '11C053', 'GHM', 8), +('C19', '11C054', 'GHM', 8), +('C19', '11C05J', 'GHM', 8), +('C19', '11C05V', 'GHM', 8), +('C19', '11C05W', 'GHM', 8), +('C19', '11C061', 'GHM', 8), +('C19', '11C062', 'GHM', 8), +('C19', '11C063', 'GHM', 8), +('C19', '11C064', 'GHM', 8), +('C19', '11C06Z', 'GHM', 8), +('C19', '11C071', 'GHM', 8), +('C19', '11C072', 'GHM', 8), +('C19', '11C073', 'GHM', 8), +('C19', '11C074', 'GHM', 8), +('C19', '11C07J', 'GHM', 8), +('C19', '11C07Z', 'GHM', 8), +('C19', '11C081', 'GHM', 8), +('C19', '11C082', 'GHM', 8), +('C19', '11C083', 'GHM', 8), +('C19', '11C084', 'GHM', 8), +('C19', '11C08T', 'GHM', 8), +('C19', '11C08V', 'GHM', 8), +('C19', '11C08W', 'GHM', 8), +('C19', '11C101', 'GHM', 8), +('C19', '11C102', 'GHM', 8), +('C19', '11C103', 'GHM', 8), +('C19', '11C104', 'GHM', 8), +('C19', '11C10J', 'GHM', 8), +('C19', '11C111', 'GHM', 8), +('C19', '11C112', 'GHM', 8), +('C19', '11C113', 'GHM', 8), +('C19', '11C114', 'GHM', 8), +('C19', '11C11J', 'GHM', 8), +('C19', '11C121', 'GHM', 8), +('C19', '11C122', 'GHM', 8), +('C19', '11C123', 'GHM', 8), +('C19', '11C124', 'GHM', 8), +('C19', '11C12J', 'GHM', 8), +('C19', '11C131', 'GHM', 8), +('C19', '11C132', 'GHM', 8), +('C19', '11C133', 'GHM', 8), +('C19', '11C134', 'GHM', 8), +('C19', '11C13J', 'GHM', 8), +('C20', '12C02Z', 'GHM', 8), +('C20', '12C031', 'GHM', 8), +('C20', '12C032', 'GHM', 8), +('C20', '12C033', 'GHM', 8), +('C20', '12C034', 'GHM', 8), +('C20', '12C03J', 'GHM', 8), +('C20', '12C03Z', 'GHM', 8), +('C20', '12C041', 'GHM', 8), +('C20', '12C042', 'GHM', 8), +('C20', '12C043', 'GHM', 8), +('C20', '12C044', 'GHM', 8), +('C20', '12C04J', 'GHM', 8), +('C20', '12C04V', 'GHM', 8), +('C20', '12C04W', 'GHM', 8), +('C20', '12C051', 'GHM', 8), +('C20', '12C052', 'GHM', 8), +('C20', '12C053', 'GHM', 8), +('C20', '12C054', 'GHM', 8), +('C20', '12C05Z', 'GHM', 8), +('C20', '12C061', 'GHM', 8), +('C20', '12C062', 'GHM', 8), +('C20', '12C063', 'GHM', 8), +('C20', '12C064', 'GHM', 8), +('C20', '12C06J', 'GHM', 8), +('C20', '12C06Z', 'GHM', 8), +('C20', '12C071', 'GHM', 8), +('C20', '12C072', 'GHM', 8), +('C20', '12C073', 'GHM', 8), +('C20', '12C074', 'GHM', 8), +('C20', '12C07J', 'GHM', 8), +('C20', '12C07Z', 'GHM', 8), +('C20', '12C081', 'GHM', 8), +('C20', '12C082', 'GHM', 8), +('C20', '12C083', 'GHM', 8), +('C20', '12C084', 'GHM', 8), +('C20', '12C08J', 'GHM', 8), +('C20', '12C08Z', 'GHM', 8), +('C20', '12C091', 'GHM', 8), +('C20', '12C092', 'GHM', 8), +('C20', '12C093', 'GHM', 8), +('C20', '12C094', 'GHM', 8), +('C20', '12C09Z', 'GHM', 8), +('C20', '12C101', 'GHM', 8), +('C20', '12C102', 'GHM', 8), +('C20', '12C103', 'GHM', 8), +('C20', '12C104', 'GHM', 8), +('C20', '12C10Z', 'GHM', 8), +('C20', '12C111', 'GHM', 8), +('C20', '12C112', 'GHM', 8), +('C20', '12C113', 'GHM', 8), +('C20', '12C114', 'GHM', 8), +('C20', '12C11Z', 'GHM', 8), +('C20', '12C121', 'GHM', 8), +('C20', '12C122', 'GHM', 8), +('C20', '12C123', 'GHM', 8), +('C20', '12C124', 'GHM', 8), +('C20', '12C12Z', 'GHM', 8), +('C20', '12C131', 'GHM', 8), +('C20', '12C132', 'GHM', 8), +('C20', '12C133', 'GHM', 8), +('C20', '12C134', 'GHM', 8), +('C20', '12C13J', 'GHM', 8), +('C21', '16C031', 'GHM', 8), +('C21', '16C032', 'GHM', 8), +('C21', '16C033', 'GHM', 8), +('C21', '16C034', 'GHM', 8), +('C21', '16C03J', 'GHM', 8), +('C21', '16C03V', 'GHM', 8), +('C21', '16C03W', 'GHM', 8), +('C21', '17C021', 'GHM', 8), +('C21', '17C022', 'GHM', 8), +('C21', '17C023', 'GHM', 8), +('C21', '17C024', 'GHM', 8), +('C21', '17C02V', 'GHM', 8), +('C21', '17C02W', 'GHM', 8), +('C21', '17C031', 'GHM', 8), +('C21', '17C032', 'GHM', 8), +('C21', '17C033', 'GHM', 8), +('C21', '17C034', 'GHM', 8), +('C21', '17C03J', 'GHM', 8), +('C21', '17C03V', 'GHM', 8), +('C21', '17C03W', 'GHM', 8), +('C21', '17C041', 'GHM', 8), +('C21', '17C042', 'GHM', 8), +('C21', '17C043', 'GHM', 8), +('C21', '17C044', 'GHM', 8), +('C21', '17C04V', 'GHM', 8), +('C21', '17C04W', 'GHM', 8), +('C21', '17C051', 'GHM', 8), +('C21', '17C052', 'GHM', 8), +('C21', '17C053', 'GHM', 8), +('C21', '17C054', 'GHM', 8), +('C21', '17C05J', 'GHM', 8), +('C21', '17C05V', 'GHM', 8), +('C21', '17C05W', 'GHM', 8), +('C21', '17C061', 'GHM', 8), +('C21', '17C062', 'GHM', 8), +('C21', '17C063', 'GHM', 8), +('C21', '17C064', 'GHM', 8), +('C21', '17C071', 'GHM', 8), +('C21', '17C072', 'GHM', 8), +('C21', '17C073', 'GHM', 8), +('C21', '17C074', 'GHM', 8), +('C21', '17C081', 'GHM', 8), +('C21', '17C082', 'GHM', 8), +('C21', '17C083', 'GHM', 8), +('C21', '17C084', 'GHM', 8), +('C21', '17C08J', 'GHM', 8), +('C22', '10C051', 'GHM', 8), +('C22', '10C052', 'GHM', 8), +('C22', '10C053', 'GHM', 8), +('C22', '10C054', 'GHM', 8), +('C22', '10C05Z', 'GHM', 8), +('C22', '10C071', 'GHM', 8), +('C22', '10C072', 'GHM', 8), +('C22', '10C073', 'GHM', 8), +('C22', '10C074', 'GHM', 8), +('C22', '10C07Z', 'GHM', 8), +('C22', '10C101', 'GHM', 8), +('C22', '10C102', 'GHM', 8), +('C22', '10C103', 'GHM', 8), +('C22', '10C104', 'GHM', 8), +('C22', '10C10Z', 'GHM', 8), +('C22', '10C111', 'GHM', 8), +('C22', '10C112', 'GHM', 8), +('C22', '10C113', 'GHM', 8), +('C22', '10C114', 'GHM', 8), +('C22', '10C11V', 'GHM', 8), +('C22', '10C11W', 'GHM', 8), +('C22', '10C121', 'GHM', 8), +('C22', '10C122', 'GHM', 8), +('C22', '10C123', 'GHM', 8), +('C22', '10C124', 'GHM', 8), +('C22', '10C12V', 'GHM', 8), +('C22', '10C12W', 'GHM', 8), +('C23', '08C201', 'GHM', 8), +('C23', '08C202', 'GHM', 8), +('C23', '08C203', 'GHM', 8), +('C23', '08C204', 'GHM', 8), +('C23', '08C20J', 'GHM', 8), +('C23', '08C20Z', 'GHM', 8), +('C23', '09C021', 'GHM', 8), +('C23', '09C022', 'GHM', 8), +('C23', '09C023', 'GHM', 8), +('C23', '09C024', 'GHM', 8), +('C23', '09C02J', 'GHM', 8), +('C23', '09C02V', 'GHM', 8), +('C23', '09C02W', 'GHM', 8), +('C23', '09C031', 'GHM', 8), +('C23', '09C032', 'GHM', 8), +('C23', '09C033', 'GHM', 8), +('C23', '09C034', 'GHM', 8), +('C23', '09C03J', 'GHM', 8), +('C23', '09C03V', 'GHM', 8), +('C23', '09C03W', 'GHM', 8), +('C23', '09C091', 'GHM', 8), +('C23', '09C092', 'GHM', 8), +('C23', '09C093', 'GHM', 8), +('C23', '09C094', 'GHM', 8), +('C23', '09C09J', 'GHM', 8), +('C23', '09C09Z', 'GHM', 8), +('C23', '09C121', 'GHM', 8), +('C23', '09C122', 'GHM', 8), +('C23', '09C123', 'GHM', 8), +('C23', '09C124', 'GHM', 8), +('C23', '09C12J', 'GHM', 8), +('C23', '21C021', 'GHM', 8), +('C23', '21C022', 'GHM', 8), +('C23', '21C023', 'GHM', 8), +('C23', '21C024', 'GHM', 8), +('C23', '21C02J', 'GHM', 8), +('C23', '21C02Z', 'GHM', 8), +('C23', '21C031', 'GHM', 8), +('C23', '21C032', 'GHM', 8), +('C23', '21C033', 'GHM', 8), +('C23', '21C034', 'GHM', 8), +('C23', '21C03J', 'GHM', 8), +('C23', '21C03Z', 'GHM', 8), +('C23', '21C061', 'GHM', 8), +('C23', '21C062', 'GHM', 8), +('C23', '21C063', 'GHM', 8), +('C23', '21C064', 'GHM', 8), +('C23', '21C06J', 'GHM', 8), +('C24', '22C021', 'GHM', 8), +('C24', '22C022', 'GHM', 8), +('C24', '22C023', 'GHM', 8), +('C24', '22C024', 'GHM', 8), +('C24', '22C02J', 'GHM', 8), +('C24', '22C02Z', 'GHM', 8), +('C24', '22C031', 'GHM', 8), +('C24', '22C032', 'GHM', 8), +('C24', '22C033', 'GHM', 8), +('C24', '22C034', 'GHM', 8), +('C24', '22C03Z', 'GHM', 8), +('C25', '01C081', 'GHM', 8), +('C25', '01C082', 'GHM', 8), +('C25', '01C083', 'GHM', 8), +('C25', '01C084', 'GHM', 8), +('C25', '01C08J', 'GHM', 8), +('C25', '01C08V', 'GHM', 8), +('C25', '01C08W', 'GHM', 8), +('C25', '05C181', 'GHM', 8), +('C25', '05C182', 'GHM', 8), +('C25', '05C183', 'GHM', 8), +('C25', '05C184', 'GHM', 8), +('C25', '05C18J', 'GHM', 8), +('C25', '05C18Z', 'GHM', 8), +('C25', '08C211', 'GHM', 8), +('C25', '08C212', 'GHM', 8), +('C25', '08C213', 'GHM', 8), +('C25', '08C214', 'GHM', 8), +('C25', '08C21J', 'GHM', 8), +('C25', '08C21V', 'GHM', 8), +('C25', '08C21W', 'GHM', 8), +('C25', '09C101', 'GHM', 8), +('C25', '09C102', 'GHM', 8), +('C25', '09C103', 'GHM', 8), +('C25', '09C104', 'GHM', 8), +('C25', '09C10J', 'GHM', 8), +('C25', '09C10V', 'GHM', 8), +('C25', '09C10W', 'GHM', 8), +('C25', '09C141', 'GHM', 8), +('C25', '09C142', 'GHM', 8), +('C25', '09C143', 'GHM', 8), +('C25', '09C144', 'GHM', 8), +('C25', '09C14J', 'GHM', 8), +('C25', '09C151', 'GHM', 8), +('C25', '09C152', 'GHM', 8), +('C25', '09C153', 'GHM', 8), +('C25', '09C154', 'GHM', 8), +('C25', '09C15J', 'GHM', 8), +('C25', '09C161', 'GHM', 8), +('C25', '09C162', 'GHM', 8), +('C25', '09C163', 'GHM', 8), +('C25', '09C164', 'GHM', 8), +('C25', '09C171', 'GHM', 8), +('C25', '09C172', 'GHM', 8), +('C25', '09C173', 'GHM', 8), +('C25', '09C174', 'GHM', 8), +('C25', '09C181', 'GHM', 8), +('C25', '09C182', 'GHM', 8), +('C25', '09C183', 'GHM', 8), +('C25', '09C184', 'GHM', 8), +('C25', '09C191', 'GHM', 8), +('C25', '09C192', 'GHM', 8), +('C25', '09C193', 'GHM', 8), +('C25', '09C194', 'GHM', 8), +('C25', '09C201', 'GHM', 8), +('C25', '09C202', 'GHM', 8), +('C25', '09C203', 'GHM', 8), +('C25', '09C204', 'GHM', 8), +('C25', '09C20J', 'GHM', 8), +('C25', '09C211', 'GHM', 8), +('C25', '09C212', 'GHM', 8), +('C25', '09C213', 'GHM', 8), +('C25', '09C214', 'GHM', 8), +('C25', '09C221', 'GHM', 8), +('C25', '09C222', 'GHM', 8), +('C25', '09C223', 'GHM', 8), +('C25', '09C224', 'GHM', 8), +('C25', '09C22J', 'GHM', 8), +('C25', '09C231', 'GHM', 8), +('C25', '09C232', 'GHM', 8), +('C25', '09C233', 'GHM', 8), +('C25', '09C234', 'GHM', 8), +('C25', '09C23J', 'GHM', 8), +('C25', '09C241', 'GHM', 8), +('C25', '09C242', 'GHM', 8), +('C25', '09C243', 'GHM', 8), +('C25', '09C244', 'GHM', 8), +('C25', '09C24J', 'GHM', 8), +('C25', '09C251', 'GHM', 8), +('C25', '09C252', 'GHM', 8), +('C25', '09C253', 'GHM', 8), +('C25', '09C254', 'GHM', 8), +('C25', '09C25J', 'GHM', 8), +('C25', '09C261', 'GHM', 8), +('C25', '09C262', 'GHM', 8), +('C25', '09C263', 'GHM', 8), +('C25', '09C264', 'GHM', 8), +('C25', '09C26J', 'GHM', 8), +('C25', '09C271', 'GHM', 8), +('C25', '09C272', 'GHM', 8), +('C25', '09C273', 'GHM', 8), +('C25', '09C274', 'GHM', 8), +('C25', '09C281', 'GHM', 8), +('C25', '09C282', 'GHM', 8), +('C25', '09C283', 'GHM', 8), +('C25', '09C284', 'GHM', 8), +('C25', '09C28J', 'GHM', 8), +('C25', '09C291', 'GHM', 8), +('C25', '09C292', 'GHM', 8), +('C25', '09C293', 'GHM', 8), +('C25', '09C294', 'GHM', 8), +('C25', '09C29J', 'GHM', 8), +('C25', '09C301', 'GHM', 8), +('C25', '09C302', 'GHM', 8), +('C25', '09C303', 'GHM', 8), +('C25', '09C304', 'GHM', 8), +('C25', '09C30J', 'GHM', 8), +('C25', '09C311', 'GHM', 8), +('C25', '09C312', 'GHM', 8), +('C25', '09C313', 'GHM', 8), +('C25', '09C314', 'GHM', 8), +('C25', '09C31J', 'GHM', 8), +('C25', '09C321', 'GHM', 8), +('C25', '09C322', 'GHM', 8), +('C25', '09C323', 'GHM', 8), +('C25', '09C324', 'GHM', 8), +('C25', '09C32J', 'GHM', 8), +('C25', '09C331', 'GHM', 8), +('C25', '09C332', 'GHM', 8), +('C25', '09C333', 'GHM', 8), +('C25', '09C334', 'GHM', 8), +('C25', '09C341', 'GHM', 8), +('C25', '09C342', 'GHM', 8), +('C25', '09C343', 'GHM', 8), +('C25', '09C344', 'GHM', 8), +('C25', '09C34J', 'GHM', 8), +('C25', '10C081', 'GHM', 8), +('C25', '10C082', 'GHM', 8), +('C25', '10C083', 'GHM', 8), +('C25', '10C084', 'GHM', 8), +('C25', '10C08J', 'GHM', 8), +('C25', '10C08Z', 'GHM', 8), +('C25', '18C021', 'GHM', 8), +('C25', '18C022', 'GHM', 8), +('C25', '18C023', 'GHM', 8), +('C25', '18C024', 'GHM', 8), +('C25', '18C02J', 'GHM', 8), +('C25', '18C02V', 'GHM', 8), +('C25', '18C02W', 'GHM', 8), +('C25', '19C021', 'GHM', 8), +('C25', '19C022', 'GHM', 8), +('C25', '19C023', 'GHM', 8), +('C25', '19C024', 'GHM', 8), +('C25', '19C02Z', 'GHM', 8), +('C25', '21C051', 'GHM', 8), +('C25', '21C052', 'GHM', 8), +('C25', '21C053', 'GHM', 8), +('C25', '21C054', 'GHM', 8), +('C25', '21C05J', 'GHM', 8), +('C25', '21C05V', 'GHM', 8), +('C25', '21C05W', 'GHM', 8), +('C25', '23C021', 'GHM', 8), +('C25', '23C022', 'GHM', 8), +('C25', '23C023', 'GHM', 8), +('C25', '23C024', 'GHM', 8), +('C25', '23C02J', 'GHM', 8), +('C25', '23C02Z', 'GHM', 8), +('C25', '25C021', 'GHM', 8), +('C25', '25C022', 'GHM', 8), +('C25', '25C023', 'GHM', 8), +('C25', '25C024', 'GHM', 8), +('C25', '25C02Z', 'GHM', 8), +('K01', '06K06J', 'GHM', 8), +('K01', '07K061', 'GHM', 8), +('K01', '07K062', 'GHM', 8), +('K01', '07K063', 'GHM', 8), +('K01', '07K064', 'GHM', 8), +('K02', '06K02Z', 'GHM', 8), +('K02', '06K03J', 'GHM', 8), +('K02', '06K04J', 'GHM', 8), +('K02', '06K05J', 'GHM', 8), +('K02', '07K02Z', 'GHM', 8), +('K02', '07K04J', 'GHM', 8), +('K02', '07K05J', 'GHM', 8), +('K03', '01K04J', 'GHM', 8), +('K03', '01K06J', 'GHM', 8), +('K04', '05K17J', 'GHM', 8), +('K04', '05K18J', 'GHM', 8), +('K05', '01K021', 'GHM', 8), +('K05', '01K022', 'GHM', 8), +('K05', '01K023', 'GHM', 8), +('K05', '01K024', 'GHM', 8), +('K05', '01K02Z', 'GHM', 8), +('K05', '01K031', 'GHM', 8), +('K05', '01K032', 'GHM', 8), +('K05', '01K033', 'GHM', 8), +('K05', '01K034', 'GHM', 8), +('K05', '01K03Z', 'GHM', 8), +('K05', '01K071', 'GHM', 8), +('K05', '01K072', 'GHM', 8), +('K05', '01K073', 'GHM', 8), +('K05', '01K074', 'GHM', 8), +('K05', '05C16Z', 'GHM', 8), +('K05', '05K03Z', 'GHM', 8), +('K05', '05K04Z', 'GHM', 8), +('K05', '05K051', 'GHM', 8), +('K05', '05K052', 'GHM', 8), +('K05', '05K053', 'GHM', 8), +('K05', '05K054', 'GHM', 8), +('K05', '05K05V', 'GHM', 8), +('K05', '05K05W', 'GHM', 8), +('K05', '05K061', 'GHM', 8), +('K05', '05K062', 'GHM', 8), +('K05', '05K063', 'GHM', 8), +('K05', '05K064', 'GHM', 8), +('K05', '05K06T', 'GHM', 8), +('K05', '05K06V', 'GHM', 8), +('K05', '05K06W', 'GHM', 8), +('K05', '05K07Z', 'GHM', 8), +('K05', '05K08Z', 'GHM', 8), +('K05', '05K09Z', 'GHM', 8), +('K05', '05K101', 'GHM', 8), +('K05', '05K102', 'GHM', 8), +('K05', '05K103', 'GHM', 8), +('K05', '05K104', 'GHM', 8), +('K05', '05K10J', 'GHM', 8), +('K05', '05K10Z', 'GHM', 8), +('K05', '05K111', 'GHM', 8), +('K05', '05K112', 'GHM', 8), +('K05', '05K113', 'GHM', 8), +('K05', '05K114', 'GHM', 8), +('K05', '05K11T', 'GHM', 8), +('K05', '05K11Z', 'GHM', 8), +('K05', '05K121', 'GHM', 8), +('K05', '05K122', 'GHM', 8), +('K05', '05K123', 'GHM', 8), +('K05', '05K124', 'GHM', 8), +('K05', '05K12Z', 'GHM', 8), +('K05', '05K131', 'GHM', 8), +('K05', '05K132', 'GHM', 8), +('K05', '05K133', 'GHM', 8), +('K05', '05K134', 'GHM', 8), +('K05', '05K13J', 'GHM', 8), +('K05', '05K13Z', 'GHM', 8), +('K05', '05K151', 'GHM', 8), +('K05', '05K152', 'GHM', 8), +('K05', '05K153', 'GHM', 8), +('K05', '05K154', 'GHM', 8), +('K05', '05K15J', 'GHM', 8), +('K05', '05K191', 'GHM', 8), +('K05', '05K192', 'GHM', 8), +('K05', '05K193', 'GHM', 8), +('K05', '05K194', 'GHM', 8), +('K05', '05K201', 'GHM', 8), +('K05', '05K202', 'GHM', 8), +('K05', '05K203', 'GHM', 8), +('K05', '05K204', 'GHM', 8), +('K05', '05K20T', 'GHM', 8), +('K05', '05K211', 'GHM', 8), +('K05', '05K212', 'GHM', 8), +('K05', '05K213', 'GHM', 8), +('K05', '05K214', 'GHM', 8), +('K05', '05K221', 'GHM', 8), +('K05', '05K222', 'GHM', 8), +('K05', '05K223', 'GHM', 8), +('K05', '05K224', 'GHM', 8), +('K05', '05K231', 'GHM', 8), +('K05', '05K232', 'GHM', 8), +('K05', '05K233', 'GHM', 8), +('K05', '05K234', 'GHM', 8), +('K05', '05K23J', 'GHM', 8), +('K05', '05K241', 'GHM', 8), +('K05', '05K242', 'GHM', 8), +('K05', '05K243', 'GHM', 8), +('K05', '05K244', 'GHM', 8), +('K05', '05K24J', 'GHM', 8), +('K05', '05K251', 'GHM', 8), +('K05', '05K252', 'GHM', 8), +('K05', '05K253', 'GHM', 8), +('K05', '05K254', 'GHM', 8), +('K05', '05K25J', 'GHM', 8), +('K05', '05K261', 'GHM', 8), +('K05', '05K262', 'GHM', 8), +('K05', '05K263', 'GHM', 8), +('K05', '05K264', 'GHM', 8), +('K05', '05K26J', 'GHM', 8), +('K05', '05M02E', 'GHM', 8), +('K05', '05M03Z', 'GHM', 8), +('K06', '05K14Z', 'GHM', 8), +('K06', '11K07Z', 'GHM', 8), +('K07', '04K02J', 'GHM', 8), +('K08', '08K02J', 'GHM', 8), +('K08', '08K031', 'GHM', 8), +('K08', '08K032', 'GHM', 8), +('K08', '08K033', 'GHM', 8), +('K08', '08K034', 'GHM', 8), +('K08', '08K041', 'GHM', 8), +('K08', '08K042', 'GHM', 8), +('K08', '08K043', 'GHM', 8), +('K08', '08K044', 'GHM', 8), +('K08', '08K051', 'GHM', 8), +('K08', '08K052', 'GHM', 8), +('K08', '08K053', 'GHM', 8), +('K08', '08K054', 'GHM', 8), +('K08', '08K05J', 'GHM', 8), +('K08', '08K06Z', 'GHM', 8), +('K09', '03K021', 'GHM', 8), +('K09', '03K022', 'GHM', 8), +('K09', '03K023', 'GHM', 8), +('K09', '03K024', 'GHM', 8), +('K09', '03K02J', 'GHM', 8), +('K09', '03K02Z', 'GHM', 8), +('K09', '03K03J', 'GHM', 8), +('K09', '03K04J', 'GHM', 8), +('K10', '11K03Z', 'GHM', 8), +('K10', '11K04Z', 'GHM', 8), +('K10', '11K05Z', 'GHM', 8), +('K10', '11K06Z', 'GHM', 8), +('K10', '11K08J', 'GHM', 8), +('K10', '12K02Z', 'GHM', 8), +('K10', '12K03Z', 'GHM', 8), +('K10', '12K06J', 'GHM', 8), +('K10', '13K02Z', 'GHM', 8), +('K10', '13K03Z', 'GHM', 8), +('K10', '13K04Z', 'GHM', 8), +('K10', '13K05Z', 'GHM', 8), +('K10', '13K06J', 'GHM', 8), +('K11', '01K05J', 'GHM', 8), +('K12', '23K02Z', 'GHM', 8), +('K13', '11K021', 'GHM', 8), +('K13', '11K022', 'GHM', 8), +('K13', '11K023', 'GHM', 8), +('K13', '11K024', 'GHM', 8), +('K13', '11K02J', 'GHM', 8), +('K13', '11K02V', 'GHM', 8), +('K13', '11K02W', 'GHM', 8), +('K14', '17K02Z', 'GHM', 8), +('K14', '17K03Z', 'GHM', 8), +('K14', '17K041', 'GHM', 8), +('K14', '17K042', 'GHM', 8), +('K14', '17K043', 'GHM', 8), +('K14', '17K044', 'GHM', 8), +('K14', '17K04Z', 'GHM', 8), +('K14', '17K051', 'GHM', 8), +('K14', '17K052', 'GHM', 8), +('K14', '17K053', 'GHM', 8), +('K14', '17K054', 'GHM', 8), +('K14', '17K05Z', 'GHM', 8), +('K14', '17K061', 'GHM', 8), +('K14', '17K062', 'GHM', 8), +('K14', '17K063', 'GHM', 8), +('K14', '17K064', 'GHM', 8), +('K14', '17K06Z', 'GHM', 8), +('K14', '17K081', 'GHM', 8), +('K14', '17K082', 'GHM', 8), +('K14', '17K083', 'GHM', 8), +('K14', '17K084', 'GHM', 8), +('K14', '17K091', 'GHM', 8), +('K14', '17K092', 'GHM', 8), +('K14', '17K093', 'GHM', 8), +('K14', '17K094', 'GHM', 8), +('K15', '09K02J', 'GHM', 8), +('K15', '17K07J', 'GHM', 8), +('K15', '23K03J', 'GHM', 8), +('K16', '22K02J', 'GHM', 8), +('K17', '21K02J', 'GHM', 8), +('N01', '15C02A', 'GHM', 8), +('N01', '15C02B', 'GHM', 8), +('N01', '15C02Z', 'GHM', 8), +('N01', '15C03A', 'GHM', 8), +('N01', '15C03B', 'GHM', 8), +('N01', '15C03Z', 'GHM', 8), +('N01', '15C04A', 'GHM', 8), +('N01', '15C04B', 'GHM', 8), +('N01', '15C04Z', 'GHM', 8), +('N01', '15C05A', 'GHM', 8), +('N01', '15C05B', 'GHM', 8), +('N01', '15C05Z', 'GHM', 8), +('N01', '15C06A', 'GHM', 8), +('N01', '15C06B', 'GHM', 8), +('N01', '15C06Z', 'GHM', 8), +('N02', '15M05A', 'GHM', 8), +('N02', '15M05B', 'GHM', 8), +('N02', '15M05C', 'GHM', 8), +('N02', '15M05D', 'GHM', 8), +('N02', '15M06A', 'GHM', 8), +('N02', '15M06B', 'GHM', 8), +('N02', '15M06C', 'GHM', 8), +('N02', '15M06D', 'GHM', 8), +('N02', '15M07A', 'GHM', 8), +('N02', '15M07B', 'GHM', 8), +('N02', '15M07C', 'GHM', 8), +('N02', '15M08A', 'GHM', 8), +('N02', '15M08B', 'GHM', 8), +('N02', '15M08C', 'GHM', 8), +('N02', '15M09A', 'GHM', 8), +('N02', '15M09B', 'GHM', 8), +('N02', '15M09C', 'GHM', 8), +('N02', '15M10A', 'GHM', 8), +('N02', '15M10B', 'GHM', 8), +('N02', '15M10C', 'GHM', 8), +('N02', '15M11A', 'GHM', 8), +('N02', '15M11B', 'GHM', 8), +('N02', '15M11C', 'GHM', 8), +('N02', '15M12A', 'GHM', 8), +('N02', '15M12B', 'GHM', 8), +('N02', '15M13A', 'GHM', 8), +('N02', '15M13B', 'GHM', 8), +('N02', '15M14A', 'GHM', 8), +('N02', '15M14B', 'GHM', 8), +('N02', '15Z02T', 'GHM', 8), +('N02', '15Z02Z', 'GHM', 8), +('N02', '15Z05A', 'GHM', 8), +('N02', '15Z05B', 'GHM', 8), +('N02', '15Z05C', 'GHM', 8), +('N02', '15Z05D', 'GHM', 8), +('N02', '15Z06A', 'GHM', 8), +('N02', '15Z06B', 'GHM', 8), +('N02', '15Z06C', 'GHM', 8), +('N02', '15Z06D', 'GHM', 8), +('N02', '15Z07A', 'GHM', 8), +('N02', '15Z07B', 'GHM', 8), +('N02', '15Z07C', 'GHM', 8), +('N02', '15Z08A', 'GHM', 8), +('N02', '15Z08Z', 'GHM', 8), +('N02', '15Z09A', 'GHM', 8), +('N02', '15Z09Z', 'GHM', 8), +('N03', '15M02Z', 'GHM', 8), +('N03', '15M03E', 'GHM', 8), +('N03', '15M04E', 'GHM', 8), +('N03', '15Z03Z', 'GHM', 8), +('N03', '15Z04E', 'GHM', 8), +('N03', '15Z08E', 'GHM', 8), +('N03', '15Z09E', 'GHM', 8), +('N03', '15Z10E', 'GHM', 8), +('O01', '14C03A', 'GHM', 8), +('O01', '14C03B', 'GHM', 8), +('O01', '14C03C', 'GHM', 8), +('O01', '14C03D', 'GHM', 8), +('O01', '14C03Z', 'GHM', 8), +('O01', '14Z02A', 'GHM', 8), +('O01', '14Z02B', 'GHM', 8), +('O01', '14Z02C', 'GHM', 8), +('O01', '14Z02T', 'GHM', 8), +('O01', '14Z09Z', 'GHM', 8), +('O01', '14Z10A', 'GHM', 8), +('O01', '14Z10B', 'GHM', 8), +('O01', '14Z10T', 'GHM', 8), +('O01', '14Z11A', 'GHM', 8), +('O01', '14Z11B', 'GHM', 8), +('O01', '14Z12A', 'GHM', 8), +('O01', '14Z12B', 'GHM', 8), +('O01', '14Z13A', 'GHM', 8), +('O01', '14Z13B', 'GHM', 8), +('O01', '14Z13C', 'GHM', 8), +('O01', '14Z13D', 'GHM', 8), +('O01', '14Z13T', 'GHM', 8), +('O01', '14Z14A', 'GHM', 8), +('O01', '14Z14B', 'GHM', 8), +('O01', '14Z14C', 'GHM', 8), +('O01', '14Z14D', 'GHM', 8), +('O01', '14Z14T', 'GHM', 8), +('O02', '14C02A', 'GHM', 8), +('O02', '14C02B', 'GHM', 8), +('O02', '14C02C', 'GHM', 8), +('O02', '14C06A', 'GHM', 8), +('O02', '14C06B', 'GHM', 8), +('O02', '14C06C', 'GHM', 8), +('O02', '14C06D', 'GHM', 8), +('O02', '14C07A', 'GHM', 8), +('O02', '14C07B', 'GHM', 8), +('O02', '14C07C', 'GHM', 8), +('O02', '14C07D', 'GHM', 8), +('O02', '14C08A', 'GHM', 8), +('O02', '14C08B', 'GHM', 8), +('O02', '14C08C', 'GHM', 8), +('O02', '14C08D', 'GHM', 8), +('O03', '14Z08Z', 'GHM', 8), +('O04', '14C04T', 'GHM', 8), +('O04', '14C04Z', 'GHM', 8), +('O04', '14C05J', 'GHM', 8), +('O04', '14C05Z', 'GHM', 8), +('O04', '14C09A', 'GHM', 8), +('O04', '14C09B', 'GHM', 8), +('O04', '14C10T', 'GHM', 8), +('O04', '14C10Z', 'GHM', 8), +('O04', '14M02A', 'GHM', 8), +('O04', '14M02B', 'GHM', 8), +('O04', '14M02T', 'GHM', 8), +('O04', '14M02Z', 'GHM', 8), +('O04', '14M03A', 'GHM', 8), +('O04', '14M03B', 'GHM', 8), +('O04', '14M03C', 'GHM', 8), +('O04', '14M03D', 'GHM', 8), +('O04', '14M03T', 'GHM', 8), +('O04', '14Z03A', 'GHM', 8), +('O04', '14Z03B', 'GHM', 8), +('O04', '14Z03T', 'GHM', 8), +('O04', '14Z04T', 'GHM', 8), +('O04', '14Z04Z', 'GHM', 8), +('O04', '14Z05Z', 'GHM', 8), +('O04', '14Z06T', 'GHM', 8), +('O04', '14Z06Z', 'GHM', 8), +('O04', '14Z07Z', 'GHM', 8), +('O04', '14Z15Z', 'GHM', 8), +('O04', '14Z16T', 'GHM', 8), +('O04', '14Z16Z', 'GHM', 8), +('S01', '28Z01Z', 'GHM', 8), +('S01', '28Z02Z', 'GHM', 8), +('S01', '28Z03Z', 'GHM', 8), +('S01', '28Z04Z', 'GHM', 8), +('S01', '28Z05Z', 'GHM', 8), +('S01', '28Z06Z', 'GHM', 8), +('S02', '28Z07Z', 'GHM', 8), +('S03', '28Z17Z', 'GHM', 8), +('S04', '28Z08Z', 'GHM', 8), +('S04', '28Z09Z', 'GHM', 8), +('S04', '28Z10Z', 'GHM', 8), +('S04', '28Z11Z', 'GHM', 8), +('S04', '28Z12Z', 'GHM', 8), +('S04', '28Z13Z', 'GHM', 8), +('S04', '28Z18Z', 'GHM', 8), +('S04', '28Z19Z', 'GHM', 8), +('S04', '28Z20Z', 'GHM', 8), +('S04', '28Z21Z', 'GHM', 8), +('S04', '28Z22Z', 'GHM', 8), +('S04', '28Z23Z', 'GHM', 8), +('S04', '28Z24Z', 'GHM', 8), +('S04', '28Z25Z', 'GHM', 8), +('S05', '28Z14Z', 'GHM', 8), +('S06', '28Z16Z', 'GHM', 8), +('S07', '28Z15Z', 'GHM', 8), +('X01', '27Z021', 'GHM', 8), +('X01', '27Z022', 'GHM', 8), +('X01', '27Z023', 'GHM', 8), +('X01', '27Z024', 'GHM', 8), +('X01', '27Z02Z', 'GHM', 8), +('X01', '27Z03Z', 'GHM', 8), +('X01', '27Z04J', 'GHM', 8), +('X02', '06M021', 'GHM', 8), +('X02', '06M022', 'GHM', 8), +('X02', '06M023', 'GHM', 8), +('X02', '06M024', 'GHM', 8), +('X02', '06M02T', 'GHM', 8), +('X02', '06M02V', 'GHM', 8), +('X02', '06M02W', 'GHM', 8), +('X02', '06M031', 'GHM', 8), +('X02', '06M032', 'GHM', 8), +('X02', '06M033', 'GHM', 8), +('X02', '06M034', 'GHM', 8), +('X02', '06M03T', 'GHM', 8), +('X02', '06M03V', 'GHM', 8), +('X02', '06M03W', 'GHM', 8), +('X02', '06M041', 'GHM', 8), +('X02', '06M042', 'GHM', 8), +('X02', '06M043', 'GHM', 8), +('X02', '06M044', 'GHM', 8), +('X02', '06M04T', 'GHM', 8), +('X02', '06M04V', 'GHM', 8), +('X02', '06M04W', 'GHM', 8), +('X02', '06M051', 'GHM', 8), +('X02', '06M052', 'GHM', 8), +('X02', '06M053', 'GHM', 8), +('X02', '06M054', 'GHM', 8), +('X02', '06M05T', 'GHM', 8), +('X02', '06M05V', 'GHM', 8), +('X02', '06M05W', 'GHM', 8), +('X02', '06M061', 'GHM', 8), +('X02', '06M062', 'GHM', 8), +('X02', '06M063', 'GHM', 8), +('X02', '06M064', 'GHM', 8), +('X02', '06M06T', 'GHM', 8), +('X02', '06M06V', 'GHM', 8), +('X02', '06M06W', 'GHM', 8), +('X02', '06M071', 'GHM', 8), +('X02', '06M072', 'GHM', 8), +('X02', '06M073', 'GHM', 8), +('X02', '06M074', 'GHM', 8), +('X02', '06M07T', 'GHM', 8), +('X02', '06M07V', 'GHM', 8), +('X02', '06M07W', 'GHM', 8), +('X02', '06M081', 'GHM', 8), +('X02', '06M082', 'GHM', 8), +('X02', '06M083', 'GHM', 8), +('X02', '06M084', 'GHM', 8), +('X02', '06M08T', 'GHM', 8), +('X02', '06M08Z', 'GHM', 8), +('X02', '06M091', 'GHM', 8), +('X02', '06M092', 'GHM', 8), +('X02', '06M093', 'GHM', 8), +('X02', '06M094', 'GHM', 8), +('X02', '06M09T', 'GHM', 8), +('X02', '06M09V', 'GHM', 8), +('X02', '06M09W', 'GHM', 8), +('X02', '06M101', 'GHM', 8), +('X02', '06M102', 'GHM', 8), +('X02', '06M103', 'GHM', 8), +('X02', '06M104', 'GHM', 8), +('X02', '06M10Z', 'GHM', 8), +('X02', '06M111', 'GHM', 8), +('X02', '06M112', 'GHM', 8), +('X02', '06M113', 'GHM', 8), +('X02', '06M114', 'GHM', 8), +('X02', '06M11T', 'GHM', 8), +('X02', '06M11V', 'GHM', 8), +('X02', '06M11W', 'GHM', 8), +('X02', '06M121', 'GHM', 8), +('X02', '06M122', 'GHM', 8), +('X02', '06M123', 'GHM', 8), +('X02', '06M124', 'GHM', 8), +('X02', '06M12T', 'GHM', 8), +('X02', '06M131', 'GHM', 8), +('X02', '06M132', 'GHM', 8), +('X02', '06M133', 'GHM', 8), +('X02', '06M134', 'GHM', 8), +('X02', '06M13T', 'GHM', 8), +('X02', '06M141', 'GHM', 8), +('X02', '06M142', 'GHM', 8), +('X02', '06M143', 'GHM', 8), +('X02', '06M144', 'GHM', 8), +('X02', '06M15Z', 'GHM', 8), +('X02', '06M16Z', 'GHM', 8), +('X02', '06M17T', 'GHM', 8), +('X02', '06M17Z', 'GHM', 8), +('X02', '06M18T', 'GHM', 8), +('X02', '06M18Z', 'GHM', 8), +('X02', '06M191', 'GHM', 8), +('X02', '06M192', 'GHM', 8), +('X02', '06M193', 'GHM', 8), +('X02', '06M194', 'GHM', 8), +('X02', '06M201', 'GHM', 8), +('X02', '06M202', 'GHM', 8), +('X02', '06M203', 'GHM', 8), +('X02', '06M204', 'GHM', 8), +('X02', '06M20T', 'GHM', 8), +('X02', '06M211', 'GHM', 8), +('X02', '06M212', 'GHM', 8), +('X02', '06M213', 'GHM', 8), +('X02', '06M214', 'GHM', 8), +('X02', '07M021', 'GHM', 8), +('X02', '07M022', 'GHM', 8), +('X02', '07M023', 'GHM', 8), +('X02', '07M024', 'GHM', 8), +('X02', '07M02T', 'GHM', 8), +('X02', '07M02V', 'GHM', 8), +('X02', '07M02W', 'GHM', 8), +('X02', '07M041', 'GHM', 8), +('X02', '07M042', 'GHM', 8), +('X02', '07M043', 'GHM', 8), +('X02', '07M044', 'GHM', 8), +('X02', '07M04T', 'GHM', 8), +('X02', '07M04V', 'GHM', 8), +('X02', '07M04W', 'GHM', 8), +('X02', '07M061', 'GHM', 8), +('X02', '07M062', 'GHM', 8), +('X02', '07M063', 'GHM', 8), +('X02', '07M064', 'GHM', 8), +('X02', '07M06T', 'GHM', 8), +('X02', '07M06V', 'GHM', 8), +('X02', '07M06W', 'GHM', 8), +('X02', '07M071', 'GHM', 8), +('X02', '07M072', 'GHM', 8), +('X02', '07M073', 'GHM', 8), +('X02', '07M074', 'GHM', 8), +('X02', '07M07T', 'GHM', 8), +('X02', '07M081', 'GHM', 8), +('X02', '07M082', 'GHM', 8), +('X02', '07M083', 'GHM', 8), +('X02', '07M084', 'GHM', 8), +('X02', '07M08T', 'GHM', 8), +('X02', '07M091', 'GHM', 8), +('X02', '07M092', 'GHM', 8), +('X02', '07M093', 'GHM', 8), +('X02', '07M094', 'GHM', 8), +('X02', '07M09T', 'GHM', 8), +('X02', '07M101', 'GHM', 8), +('X02', '07M102', 'GHM', 8), +('X02', '07M103', 'GHM', 8), +('X02', '07M104', 'GHM', 8), +('X02', '07M10T', 'GHM', 8), +('X02', '07M111', 'GHM', 8), +('X02', '07M112', 'GHM', 8), +('X02', '07M113', 'GHM', 8), +('X02', '07M114', 'GHM', 8), +('X02', '07M11T', 'GHM', 8), +('X02', '07M121', 'GHM', 8), +('X02', '07M122', 'GHM', 8), +('X02', '07M123', 'GHM', 8), +('X02', '07M124', 'GHM', 8), +('X02', '07M13Z', 'GHM', 8), +('X02', '07M14T', 'GHM', 8), +('X02', '07M14Z', 'GHM', 8), +('X02', '07M151', 'GHM', 8), +('X02', '07M152', 'GHM', 8), +('X02', '07M153', 'GHM', 8), +('X02', '07M154', 'GHM', 8), +('X02', '07M15T', 'GHM', 8), +('X02', '07M161', 'GHM', 8), +('X02', '07M162', 'GHM', 8), +('X02', '07M163', 'GHM', 8), +('X02', '07M164', 'GHM', 8), +('X03', '01M02Z', 'GHM', 8), +('X03', '01M041', 'GHM', 8), +('X03', '01M042', 'GHM', 8), +('X03', '01M043', 'GHM', 8), +('X03', '01M044', 'GHM', 8), +('X03', '01M04T', 'GHM', 8), +('X03', '01M04Z', 'GHM', 8), +('X03', '01M051', 'GHM', 8), +('X03', '01M052', 'GHM', 8), +('X03', '01M053', 'GHM', 8), +('X03', '01M054', 'GHM', 8), +('X03', '01M05T', 'GHM', 8), +('X03', '01M05V', 'GHM', 8), +('X03', '01M05W', 'GHM', 8), +('X03', '01M071', 'GHM', 8), +('X03', '01M072', 'GHM', 8), +('X03', '01M073', 'GHM', 8), +('X03', '01M074', 'GHM', 8), +('X03', '01M07T', 'GHM', 8), +('X03', '01M07Z', 'GHM', 8), +('X03', '01M081', 'GHM', 8), +('X03', '01M082', 'GHM', 8), +('X03', '01M083', 'GHM', 8), +('X03', '01M084', 'GHM', 8), +('X03', '01M08T', 'GHM', 8), +('X03', '01M08V', 'GHM', 8), +('X03', '01M08W', 'GHM', 8), +('X03', '01M091', 'GHM', 8), +('X03', '01M092', 'GHM', 8), +('X03', '01M093', 'GHM', 8), +('X03', '01M094', 'GHM', 8), +('X03', '01M09T', 'GHM', 8), +('X03', '01M09Z', 'GHM', 8), +('X03', '01M101', 'GHM', 8), +('X03', '01M102', 'GHM', 8), +('X03', '01M103', 'GHM', 8), +('X03', '01M104', 'GHM', 8), +('X03', '01M10T', 'GHM', 8), +('X03', '01M10V', 'GHM', 8), +('X03', '01M10W', 'GHM', 8), +('X03', '01M111', 'GHM', 8), +('X03', '01M112', 'GHM', 8), +('X03', '01M113', 'GHM', 8), +('X03', '01M114', 'GHM', 8), +('X03', '01M11T', 'GHM', 8), +('X03', '01M11V', 'GHM', 8), +('X03', '01M11W', 'GHM', 8), +('X03', '01M121', 'GHM', 8), +('X03', '01M122', 'GHM', 8), +('X03', '01M123', 'GHM', 8), +('X03', '01M124', 'GHM', 8), +('X03', '01M12T', 'GHM', 8), +('X03', '01M12V', 'GHM', 8), +('X03', '01M12W', 'GHM', 8), +('X03', '01M131', 'GHM', 8), +('X03', '01M132', 'GHM', 8), +('X03', '01M133', 'GHM', 8), +('X03', '01M134', 'GHM', 8), +('X03', '01M13Z', 'GHM', 8), +('X03', '01M151', 'GHM', 8), +('X03', '01M152', 'GHM', 8), +('X03', '01M153', 'GHM', 8), +('X03', '01M154', 'GHM', 8), +('X03', '01M15T', 'GHM', 8), +('X03', '01M15Z', 'GHM', 8), +('X03', '01M161', 'GHM', 8), +('X03', '01M162', 'GHM', 8), +('X03', '01M163', 'GHM', 8), +('X03', '01M164', 'GHM', 8), +('X03', '01M16T', 'GHM', 8), +('X03', '01M16Z', 'GHM', 8), +('X03', '01M171', 'GHM', 8), +('X03', '01M172', 'GHM', 8), +('X03', '01M173', 'GHM', 8), +('X03', '01M174', 'GHM', 8), +('X03', '01M17T', 'GHM', 8), +('X03', '01M17V', 'GHM', 8), +('X03', '01M17W', 'GHM', 8), +('X03', '01M221', 'GHM', 8), +('X03', '01M222', 'GHM', 8), +('X03', '01M223', 'GHM', 8), +('X03', '01M224', 'GHM', 8), +('X03', '01M22T', 'GHM', 8), +('X03', '01M22Z', 'GHM', 8), +('X03', '01M231', 'GHM', 8), +('X03', '01M232', 'GHM', 8), +('X03', '01M233', 'GHM', 8), +('X03', '01M234', 'GHM', 8), +('X03', '01M23Z', 'GHM', 8), +('X03', '01M241', 'GHM', 8), +('X03', '01M242', 'GHM', 8), +('X03', '01M243', 'GHM', 8), +('X03', '01M244', 'GHM', 8), +('X03', '01M24T', 'GHM', 8), +('X03', '01M24V', 'GHM', 8), +('X03', '01M24W', 'GHM', 8), +('X03', '01M251', 'GHM', 8), +('X03', '01M252', 'GHM', 8), +('X03', '01M253', 'GHM', 8), +('X03', '01M254', 'GHM', 8), +('X03', '01M25T', 'GHM', 8), +('X03', '01M25V', 'GHM', 8), +('X03', '01M25W', 'GHM', 8), +('X03', '01M261', 'GHM', 8), +('X03', '01M262', 'GHM', 8), +('X03', '01M263', 'GHM', 8), +('X03', '01M264', 'GHM', 8), +('X03', '01M26T', 'GHM', 8), +('X03', '01M271', 'GHM', 8), +('X03', '01M272', 'GHM', 8), +('X03', '01M273', 'GHM', 8), +('X03', '01M274', 'GHM', 8), +('X03', '01M27T', 'GHM', 8), +('X03', '01M281', 'GHM', 8), +('X03', '01M282', 'GHM', 8), +('X03', '01M283', 'GHM', 8), +('X03', '01M284', 'GHM', 8), +('X03', '01M28T', 'GHM', 8), +('X03', '01M291', 'GHM', 8), +('X03', '01M292', 'GHM', 8), +('X03', '01M293', 'GHM', 8), +('X03', '01M294', 'GHM', 8), +('X03', '01M301', 'GHM', 8), +('X03', '01M302', 'GHM', 8), +('X03', '01M303', 'GHM', 8), +('X03', '01M304', 'GHM', 8), +('X03', '01M30T', 'GHM', 8), +('X03', '01M311', 'GHM', 8), +('X03', '01M312', 'GHM', 8), +('X03', '01M313', 'GHM', 8), +('X03', '01M314', 'GHM', 8), +('X03', '01M31T', 'GHM', 8), +('X03', '01M32Z', 'GHM', 8), +('X03', '01M331', 'GHM', 8), +('X03', '01M332', 'GHM', 8), +('X03', '01M333', 'GHM', 8), +('X03', '01M334', 'GHM', 8), +('X03', '01M34T', 'GHM', 8), +('X03', '01M34Z', 'GHM', 8), +('X03', '01M35T', 'GHM', 8), +('X03', '01M35Z', 'GHM', 8), +('X03', '01M36E', 'GHM', 8), +('X03', '01M381', 'GHM', 8), +('X03', '01M382', 'GHM', 8), +('X03', '01M383', 'GHM', 8), +('X03', '01M384', 'GHM', 8), +('X03', '01M391', 'GHM', 8), +('X03', '01M392', 'GHM', 8), +('X03', '01M393', 'GHM', 8), +('X03', '01M394', 'GHM', 8), +('X04', '01M181', 'GHM', 8), +('X04', '01M182', 'GHM', 8), +('X04', '01M183', 'GHM', 8), +('X04', '01M184', 'GHM', 8), +('X04', '01M18T', 'GHM', 8), +('X04', '01M18V', 'GHM', 8), +('X04', '01M18W', 'GHM', 8), +('X04', '01M191', 'GHM', 8), +('X04', '01M192', 'GHM', 8), +('X04', '01M193', 'GHM', 8), +('X04', '01M194', 'GHM', 8), +('X04', '01M19V', 'GHM', 8), +('X04', '01M19W', 'GHM', 8), +('X04', '01M201', 'GHM', 8), +('X04', '01M202', 'GHM', 8), +('X04', '01M203', 'GHM', 8), +('X04', '01M204', 'GHM', 8), +('X04', '01M20V', 'GHM', 8), +('X04', '01M20W', 'GHM', 8), +('X05', '08M02Z', 'GHM', 8), +('X05', '08M041', 'GHM', 8), +('X05', '08M042', 'GHM', 8), +('X05', '08M043', 'GHM', 8), +('X05', '08M044', 'GHM', 8), +('X05', '08M04T', 'GHM', 8), +('X05', '08M04V', 'GHM', 8), +('X05', '08M04W', 'GHM', 8), +('X05', '08M051', 'GHM', 8), +('X05', '08M052', 'GHM', 8), +('X05', '08M053', 'GHM', 8), +('X05', '08M054', 'GHM', 8), +('X05', '08M05T', 'GHM', 8), +('X05', '08M05Z', 'GHM', 8), +('X05', '08M061', 'GHM', 8), +('X05', '08M062', 'GHM', 8), +('X05', '08M063', 'GHM', 8), +('X05', '08M064', 'GHM', 8), +('X05', '08M06T', 'GHM', 8), +('X05', '08M06Z', 'GHM', 8), +('X05', '08M071', 'GHM', 8), +('X05', '08M072', 'GHM', 8), +('X05', '08M073', 'GHM', 8), +('X05', '08M074', 'GHM', 8), +('X05', '08M07T', 'GHM', 8), +('X05', '08M07V', 'GHM', 8), +('X05', '08M07W', 'GHM', 8), +('X05', '08M081', 'GHM', 8), +('X05', '08M082', 'GHM', 8), +('X05', '08M083', 'GHM', 8), +('X05', '08M084', 'GHM', 8), +('X05', '08M08T', 'GHM', 8), +('X05', '08M08Z', 'GHM', 8), +('X05', '08M201', 'GHM', 8), +('X05', '08M202', 'GHM', 8), +('X05', '08M203', 'GHM', 8), +('X05', '08M204', 'GHM', 8), +('X05', '08M211', 'GHM', 8), +('X05', '08M212', 'GHM', 8), +('X05', '08M213', 'GHM', 8), +('X05', '08M214', 'GHM', 8), +('X05', '08M221', 'GHM', 8), +('X05', '08M222', 'GHM', 8), +('X05', '08M223', 'GHM', 8), +('X05', '08M224', 'GHM', 8), +('X05', '08M231', 'GHM', 8), +('X05', '08M232', 'GHM', 8), +('X05', '08M233', 'GHM', 8), +('X05', '08M234', 'GHM', 8), +('X05', '08M261', 'GHM', 8), +('X05', '08M262', 'GHM', 8), +('X05', '08M263', 'GHM', 8), +('X05', '08M264', 'GHM', 8), +('X05', '08M331', 'GHM', 8), +('X05', '08M332', 'GHM', 8), +('X05', '08M333', 'GHM', 8), +('X05', '08M334', 'GHM', 8), +('X05', '08M33T', 'GHM', 8), +('X05', '08M371', 'GHM', 8), +('X05', '08M372', 'GHM', 8), +('X05', '08M373', 'GHM', 8), +('X05', '08M374', 'GHM', 8), +('X05', '08M37T', 'GHM', 8), +('X05', '08M381', 'GHM', 8), +('X05', '08M382', 'GHM', 8), +('X05', '08M383', 'GHM', 8), +('X05', '08M384', 'GHM', 8), +('X05', '08M38T', 'GHM', 8), +('X05', '21M061', 'GHM', 8), +('X05', '21M062', 'GHM', 8), +('X05', '21M063', 'GHM', 8), +('X05', '21M064', 'GHM', 8), +('X05', '21M06Z', 'GHM', 8), +('X05', '21M071', 'GHM', 8), +('X05', '21M072', 'GHM', 8), +('X05', '21M073', 'GHM', 8), +('X05', '21M074', 'GHM', 8), +('X05', '21M07T', 'GHM', 8), +('X05', '21M07V', 'GHM', 8), +('X05', '21M07W', 'GHM', 8), +('X06', '08M01S', 'GHM', 8), +('X06', '08M091', 'GHM', 8), +('X06', '08M092', 'GHM', 8), +('X06', '08M093', 'GHM', 8), +('X06', '08M094', 'GHM', 8), +('X06', '08M09T', 'GHM', 8), +('X06', '08M09Z', 'GHM', 8), +('X06', '08M101', 'GHM', 8), +('X06', '08M102', 'GHM', 8), +('X06', '08M103', 'GHM', 8), +('X06', '08M104', 'GHM', 8), +('X06', '08M10T', 'GHM', 8), +('X06', '08M10V', 'GHM', 8), +('X06', '08M10W', 'GHM', 8), +('X06', '08M13Z', 'GHM', 8), +('X06', '08M141', 'GHM', 8), +('X06', '08M142', 'GHM', 8), +('X06', '08M143', 'GHM', 8), +('X06', '08M144', 'GHM', 8), +('X06', '08M14T', 'GHM', 8), +('X06', '08M14V', 'GHM', 8), +('X06', '08M14W', 'GHM', 8), +('X06', '08M151', 'GHM', 8), +('X06', '08M152', 'GHM', 8), +('X06', '08M153', 'GHM', 8), +('X06', '08M154', 'GHM', 8), +('X06', '08M15T', 'GHM', 8), +('X06', '08M15V', 'GHM', 8), +('X06', '08M15W', 'GHM', 8), +('X06', '08M16Z', 'GHM', 8), +('X06', '08M17Z', 'GHM', 8), +('X06', '08M181', 'GHM', 8), +('X06', '08M182', 'GHM', 8), +('X06', '08M183', 'GHM', 8), +('X06', '08M184', 'GHM', 8), +('X06', '08M18T', 'GHM', 8), +('X06', '08M18Z', 'GHM', 8), +('X06', '08M191', 'GHM', 8), +('X06', '08M192', 'GHM', 8), +('X06', '08M193', 'GHM', 8), +('X06', '08M194', 'GHM', 8), +('X06', '08M19T', 'GHM', 8), +('X06', '08M19V', 'GHM', 8), +('X06', '08M19W', 'GHM', 8), +('X06', '08M241', 'GHM', 8), +('X06', '08M242', 'GHM', 8), +('X06', '08M243', 'GHM', 8), +('X06', '08M244', 'GHM', 8), +('X06', '08M24T', 'GHM', 8), +('X06', '08M251', 'GHM', 8), +('X06', '08M252', 'GHM', 8), +('X06', '08M253', 'GHM', 8), +('X06', '08M254', 'GHM', 8), +('X06', '08M25T', 'GHM', 8), +('X06', '08M271', 'GHM', 8), +('X06', '08M272', 'GHM', 8), +('X06', '08M273', 'GHM', 8), +('X06', '08M274', 'GHM', 8), +('X06', '08M27T', 'GHM', 8), +('X06', '08M281', 'GHM', 8), +('X06', '08M282', 'GHM', 8), +('X06', '08M283', 'GHM', 8), +('X06', '08M284', 'GHM', 8), +('X06', '08M28T', 'GHM', 8), +('X06', '08M291', 'GHM', 8), +('X06', '08M292', 'GHM', 8), +('X06', '08M293', 'GHM', 8), +('X06', '08M294', 'GHM', 8), +('X06', '08M29T', 'GHM', 8), +('X06', '08M301', 'GHM', 8), +('X06', '08M302', 'GHM', 8), +('X06', '08M303', 'GHM', 8), +('X06', '08M304', 'GHM', 8), +('X06', '08M30T', 'GHM', 8), +('X06', '08M311', 'GHM', 8), +('X06', '08M312', 'GHM', 8), +('X06', '08M313', 'GHM', 8), +('X06', '08M314', 'GHM', 8), +('X06', '08M31T', 'GHM', 8), +('X06', '08M321', 'GHM', 8), +('X06', '08M322', 'GHM', 8), +('X06', '08M323', 'GHM', 8), +('X06', '08M324', 'GHM', 8), +('X06', '08M32T', 'GHM', 8), +('X06', '08M341', 'GHM', 8), +('X06', '08M342', 'GHM', 8), +('X06', '08M343', 'GHM', 8), +('X06', '08M344', 'GHM', 8), +('X06', '08M34T', 'GHM', 8), +('X06', '08M35Z', 'GHM', 8), +('X06', '08M36T', 'GHM', 8), +('X06', '08M36Z', 'GHM', 8), +('X07', '05M041', 'GHM', 8), +('X07', '05M042', 'GHM', 8), +('X07', '05M043', 'GHM', 8), +('X07', '05M044', 'GHM', 8), +('X07', '05M04T', 'GHM', 8), +('X07', '05M04V', 'GHM', 8), +('X07', '05M04W', 'GHM', 8), +('X07', '05M051', 'GHM', 8), +('X07', '05M052', 'GHM', 8), +('X07', '05M053', 'GHM', 8), +('X07', '05M054', 'GHM', 8), +('X07', '05M05T', 'GHM', 8), +('X07', '05M05V', 'GHM', 8), +('X07', '05M05W', 'GHM', 8), +('X07', '05M061', 'GHM', 8), +('X07', '05M062', 'GHM', 8), +('X07', '05M063', 'GHM', 8), +('X07', '05M064', 'GHM', 8), +('X07', '05M06T', 'GHM', 8), +('X07', '05M06V', 'GHM', 8), +('X07', '05M06W', 'GHM', 8), +('X07', '05M071', 'GHM', 8), +('X07', '05M072', 'GHM', 8), +('X07', '05M073', 'GHM', 8), +('X07', '05M074', 'GHM', 8), +('X07', '05M07T', 'GHM', 8), +('X07', '05M07V', 'GHM', 8), +('X07', '05M07W', 'GHM', 8), +('X07', '05M081', 'GHM', 8), +('X07', '05M082', 'GHM', 8), +('X07', '05M083', 'GHM', 8), +('X07', '05M084', 'GHM', 8), +('X07', '05M08T', 'GHM', 8), +('X07', '05M08V', 'GHM', 8), +('X07', '05M08W', 'GHM', 8), +('X07', '05M091', 'GHM', 8), +('X07', '05M092', 'GHM', 8), +('X07', '05M093', 'GHM', 8), +('X07', '05M094', 'GHM', 8), +('X07', '05M09T', 'GHM', 8), +('X07', '05M09V', 'GHM', 8), +('X07', '05M09W', 'GHM', 8), +('X07', '05M101', 'GHM', 8), +('X07', '05M102', 'GHM', 8), +('X07', '05M103', 'GHM', 8), +('X07', '05M104', 'GHM', 8), +('X07', '05M10T', 'GHM', 8), +('X07', '05M10Z', 'GHM', 8), +('X07', '05M111', 'GHM', 8), +('X07', '05M112', 'GHM', 8), +('X07', '05M113', 'GHM', 8), +('X07', '05M114', 'GHM', 8), +('X07', '05M11T', 'GHM', 8), +('X07', '05M11V', 'GHM', 8), +('X07', '05M11W', 'GHM', 8), +('X07', '05M121', 'GHM', 8), +('X07', '05M122', 'GHM', 8), +('X07', '05M123', 'GHM', 8), +('X07', '05M124', 'GHM', 8), +('X07', '05M12T', 'GHM', 8), +('X07', '05M12V', 'GHM', 8), +('X07', '05M12W', 'GHM', 8), +('X07', '05M131', 'GHM', 8), +('X07', '05M132', 'GHM', 8), +('X07', '05M133', 'GHM', 8), +('X07', '05M134', 'GHM', 8), +('X07', '05M13T', 'GHM', 8), +('X07', '05M13Z', 'GHM', 8), +('X07', '05M141', 'GHM', 8), +('X07', '05M142', 'GHM', 8), +('X07', '05M143', 'GHM', 8), +('X07', '05M144', 'GHM', 8), +('X07', '05M14Z', 'GHM', 8), +('X07', '05M151', 'GHM', 8), +('X07', '05M152', 'GHM', 8), +('X07', '05M153', 'GHM', 8), +('X07', '05M154', 'GHM', 8), +('X07', '05M15T', 'GHM', 8), +('X07', '05M15Z', 'GHM', 8), +('X07', '05M161', 'GHM', 8), +('X07', '05M162', 'GHM', 8), +('X07', '05M163', 'GHM', 8), +('X07', '05M164', 'GHM', 8), +('X07', '05M16T', 'GHM', 8), +('X07', '05M16V', 'GHM', 8), +('X07', '05M16W', 'GHM', 8), +('X07', '05M171', 'GHM', 8), +('X07', '05M172', 'GHM', 8), +('X07', '05M173', 'GHM', 8), +('X07', '05M174', 'GHM', 8), +('X07', '05M17T', 'GHM', 8), +('X07', '05M17V', 'GHM', 8), +('X07', '05M17W', 'GHM', 8), +('X07', '05M181', 'GHM', 8), +('X07', '05M182', 'GHM', 8), +('X07', '05M183', 'GHM', 8), +('X07', '05M184', 'GHM', 8), +('X07', '05M18T', 'GHM', 8), +('X07', '05M18Z', 'GHM', 8), +('X07', '05M191', 'GHM', 8), +('X07', '05M192', 'GHM', 8), +('X07', '05M193', 'GHM', 8), +('X07', '05M194', 'GHM', 8), +('X07', '05M20Z', 'GHM', 8), +('X07', '05M21E', 'GHM', 8), +('X07', '05M23T', 'GHM', 8), +('X07', '05M23Z', 'GHM', 8), +('X08', '04M021', 'GHM', 8), +('X08', '04M022', 'GHM', 8), +('X08', '04M023', 'GHM', 8), +('X08', '04M024', 'GHM', 8), +('X08', '04M02T', 'GHM', 8), +('X08', '04M02V', 'GHM', 8), +('X08', '04M02W', 'GHM', 8), +('X08', '04M031', 'GHM', 8), +('X08', '04M032', 'GHM', 8), +('X08', '04M033', 'GHM', 8), +('X08', '04M034', 'GHM', 8), +('X08', '04M03T', 'GHM', 8), +('X08', '04M03V', 'GHM', 8), +('X08', '04M03W', 'GHM', 8), +('X08', '04M041', 'GHM', 8), +('X08', '04M042', 'GHM', 8), +('X08', '04M043', 'GHM', 8), +('X08', '04M044', 'GHM', 8), +('X08', '04M04Z', 'GHM', 8), +('X08', '04M051', 'GHM', 8), +('X08', '04M052', 'GHM', 8), +('X08', '04M053', 'GHM', 8), +('X08', '04M054', 'GHM', 8), +('X08', '04M05T', 'GHM', 8), +('X08', '04M05V', 'GHM', 8), +('X08', '04M05W', 'GHM', 8), +('X08', '04M061', 'GHM', 8), +('X08', '04M062', 'GHM', 8), +('X08', '04M063', 'GHM', 8), +('X08', '04M064', 'GHM', 8), +('X08', '04M06T', 'GHM', 8), +('X08', '04M06Z', 'GHM', 8), +('X08', '04M071', 'GHM', 8), +('X08', '04M072', 'GHM', 8), +('X08', '04M073', 'GHM', 8), +('X08', '04M074', 'GHM', 8), +('X08', '04M07T', 'GHM', 8), +('X08', '04M07V', 'GHM', 8), +('X08', '04M07W', 'GHM', 8), +('X08', '04M081', 'GHM', 8), +('X08', '04M082', 'GHM', 8), +('X08', '04M083', 'GHM', 8), +('X08', '04M084', 'GHM', 8), +('X08', '04M08T', 'GHM', 8), +('X08', '04M08V', 'GHM', 8), +('X08', '04M08W', 'GHM', 8), +('X08', '04M091', 'GHM', 8), +('X08', '04M092', 'GHM', 8), +('X08', '04M093', 'GHM', 8), +('X08', '04M094', 'GHM', 8), +('X08', '04M09T', 'GHM', 8), +('X08', '04M09V', 'GHM', 8), +('X08', '04M09W', 'GHM', 8), +('X08', '04M101', 'GHM', 8), +('X08', '04M102', 'GHM', 8), +('X08', '04M103', 'GHM', 8), +('X08', '04M104', 'GHM', 8), +('X08', '04M10T', 'GHM', 8), +('X08', '04M10V', 'GHM', 8), +('X08', '04M10W', 'GHM', 8), +('X08', '04M111', 'GHM', 8), +('X08', '04M112', 'GHM', 8), +('X08', '04M113', 'GHM', 8), +('X08', '04M114', 'GHM', 8), +('X08', '04M11V', 'GHM', 8), +('X08', '04M11W', 'GHM', 8), +('X08', '04M121', 'GHM', 8), +('X08', '04M122', 'GHM', 8), +('X08', '04M123', 'GHM', 8), +('X08', '04M124', 'GHM', 8), +('X08', '04M12T', 'GHM', 8), +('X08', '04M12V', 'GHM', 8), +('X08', '04M12W', 'GHM', 8), +('X08', '04M131', 'GHM', 8), +('X08', '04M132', 'GHM', 8), +('X08', '04M133', 'GHM', 8), +('X08', '04M134', 'GHM', 8), +('X08', '04M13T', 'GHM', 8), +('X08', '04M13Z', 'GHM', 8), +('X08', '04M141', 'GHM', 8), +('X08', '04M142', 'GHM', 8), +('X08', '04M143', 'GHM', 8), +('X08', '04M144', 'GHM', 8), +('X08', '04M14T', 'GHM', 8), +('X08', '04M14V', 'GHM', 8), +('X08', '04M14W', 'GHM', 8), +('X08', '04M151', 'GHM', 8), +('X08', '04M152', 'GHM', 8), +('X08', '04M153', 'GHM', 8), +('X08', '04M154', 'GHM', 8), +('X08', '04M15T', 'GHM', 8), +('X08', '04M15V', 'GHM', 8), +('X08', '04M15W', 'GHM', 8), +('X08', '04M161', 'GHM', 8), +('X08', '04M162', 'GHM', 8), +('X08', '04M163', 'GHM', 8), +('X08', '04M164', 'GHM', 8), +('X08', '04M16T', 'GHM', 8), +('X08', '04M16V', 'GHM', 8), +('X08', '04M16W', 'GHM', 8), +('X08', '04M171', 'GHM', 8), +('X08', '04M172', 'GHM', 8), +('X08', '04M173', 'GHM', 8), +('X08', '04M174', 'GHM', 8), +('X08', '04M17T', 'GHM', 8), +('X08', '04M17V', 'GHM', 8), +('X08', '04M17W', 'GHM', 8), +('X08', '04M181', 'GHM', 8), +('X08', '04M182', 'GHM', 8), +('X08', '04M183', 'GHM', 8), +('X08', '04M184', 'GHM', 8), +('X08', '04M18T', 'GHM', 8), +('X08', '04M191', 'GHM', 8), +('X08', '04M192', 'GHM', 8), +('X08', '04M193', 'GHM', 8), +('X08', '04M194', 'GHM', 8), +('X08', '04M19T', 'GHM', 8), +('X08', '04M201', 'GHM', 8), +('X08', '04M202', 'GHM', 8), +('X08', '04M203', 'GHM', 8), +('X08', '04M204', 'GHM', 8), +('X08', '04M20T', 'GHM', 8), +('X08', '04M211', 'GHM', 8), +('X08', '04M212', 'GHM', 8), +('X08', '04M213', 'GHM', 8), +('X08', '04M214', 'GHM', 8), +('X08', '04M22Z', 'GHM', 8), +('X08', '04M23T', 'GHM', 8), +('X08', '04M23Z', 'GHM', 8), +('X08', '04M24E', 'GHM', 8), +('X08', '04M251', 'GHM', 8), +('X08', '04M252', 'GHM', 8), +('X08', '04M253', 'GHM', 8), +('X08', '04M254', 'GHM', 8), +('X08', '04M25T', 'GHM', 8), +('X08', '04M261', 'GHM', 8), +('X08', '04M262', 'GHM', 8), +('X08', '04M263', 'GHM', 8), +('X08', '04M264', 'GHM', 8), +('X08', '04M26T', 'GHM', 8), +('X08', '04M271', 'GHM', 8), +('X08', '04M272', 'GHM', 8), +('X08', '04M273', 'GHM', 8), +('X08', '04M274', 'GHM', 8), +('X09', '03M021', 'GHM', 8), +('X09', '03M022', 'GHM', 8), +('X09', '03M023', 'GHM', 8), +('X09', '03M024', 'GHM', 8), +('X09', '03M02T', 'GHM', 8), +('X09', '03M02Z', 'GHM', 8), +('X09', '03M031', 'GHM', 8), +('X09', '03M032', 'GHM', 8), +('X09', '03M033', 'GHM', 8), +('X09', '03M034', 'GHM', 8), +('X09', '03M03T', 'GHM', 8), +('X09', '03M03Z', 'GHM', 8), +('X09', '03M041', 'GHM', 8), +('X09', '03M042', 'GHM', 8), +('X09', '03M043', 'GHM', 8), +('X09', '03M044', 'GHM', 8), +('X09', '03M04T', 'GHM', 8), +('X09', '03M04V', 'GHM', 8), +('X09', '03M04W', 'GHM', 8), +('X09', '03M051', 'GHM', 8), +('X09', '03M052', 'GHM', 8), +('X09', '03M053', 'GHM', 8), +('X09', '03M054', 'GHM', 8), +('X09', '03M05T', 'GHM', 8), +('X09', '03M05Z', 'GHM', 8), +('X09', '03M061', 'GHM', 8), +('X09', '03M062', 'GHM', 8), +('X09', '03M063', 'GHM', 8), +('X09', '03M064', 'GHM', 8), +('X09', '03M06T', 'GHM', 8), +('X09', '03M06Z', 'GHM', 8), +('X09', '03M071', 'GHM', 8), +('X09', '03M072', 'GHM', 8), +('X09', '03M073', 'GHM', 8), +('X09', '03M074', 'GHM', 8), +('X09', '03M07T', 'GHM', 8), +('X09', '03M07V', 'GHM', 8), +('X09', '03M07W', 'GHM', 8), +('X09', '03M081', 'GHM', 8), +('X09', '03M082', 'GHM', 8), +('X09', '03M083', 'GHM', 8), +('X09', '03M084', 'GHM', 8), +('X09', '03M08T', 'GHM', 8), +('X09', '03M08Z', 'GHM', 8), +('X09', '03M091', 'GHM', 8), +('X09', '03M092', 'GHM', 8), +('X09', '03M093', 'GHM', 8), +('X09', '03M094', 'GHM', 8), +('X09', '03M09T', 'GHM', 8), +('X09', '03M09V', 'GHM', 8), +('X09', '03M09W', 'GHM', 8), +('X09', '03M101', 'GHM', 8), +('X09', '03M102', 'GHM', 8), +('X09', '03M103', 'GHM', 8), +('X09', '03M104', 'GHM', 8), +('X09', '03M10T', 'GHM', 8), +('X09', '03M10Z', 'GHM', 8), +('X09', '03M111', 'GHM', 8), +('X09', '03M112', 'GHM', 8), +('X09', '03M113', 'GHM', 8), +('X09', '03M114', 'GHM', 8), +('X09', '03M11T', 'GHM', 8), +('X09', '03M11V', 'GHM', 8), +('X09', '03M11W', 'GHM', 8), +('X09', '03M121', 'GHM', 8), +('X09', '03M122', 'GHM', 8), +('X09', '03M123', 'GHM', 8), +('X09', '03M124', 'GHM', 8), +('X09', '03M131', 'GHM', 8), +('X09', '03M132', 'GHM', 8), +('X09', '03M133', 'GHM', 8), +('X09', '03M134', 'GHM', 8), +('X09', '03M14Z', 'GHM', 8), +('X09', '03M15T', 'GHM', 8), +('X09', '03M15Z', 'GHM', 8), +('X10', '02M021', 'GHM', 8), +('X10', '02M022', 'GHM', 8), +('X10', '02M023', 'GHM', 8), +('X10', '02M024', 'GHM', 8), +('X10', '02M02Z', 'GHM', 8), +('X10', '02M031', 'GHM', 8), +('X10', '02M032', 'GHM', 8), +('X10', '02M033', 'GHM', 8), +('X10', '02M034', 'GHM', 8), +('X10', '02M03Z', 'GHM', 8), +('X10', '02M041', 'GHM', 8), +('X10', '02M042', 'GHM', 8), +('X10', '02M043', 'GHM', 8), +('X10', '02M044', 'GHM', 8), +('X10', '02M04T', 'GHM', 8), +('X10', '02M04Z', 'GHM', 8), +('X10', '02M051', 'GHM', 8), +('X10', '02M052', 'GHM', 8), +('X10', '02M053', 'GHM', 8), +('X10', '02M054', 'GHM', 8), +('X10', '02M05T', 'GHM', 8), +('X10', '02M05Z', 'GHM', 8), +('X10', '02M071', 'GHM', 8), +('X10', '02M072', 'GHM', 8), +('X10', '02M073', 'GHM', 8), +('X10', '02M074', 'GHM', 8), +('X10', '02M07T', 'GHM', 8), +('X10', '02M081', 'GHM', 8), +('X10', '02M082', 'GHM', 8), +('X10', '02M083', 'GHM', 8), +('X10', '02M084', 'GHM', 8), +('X10', '02M08T', 'GHM', 8), +('X10', '02M09Z', 'GHM', 8), +('X10', '02M10T', 'GHM', 8), +('X10', '02M10Z', 'GHM', 8), +('X11', '09M091', 'GHM', 8), +('X11', '09M092', 'GHM', 8), +('X11', '09M093', 'GHM', 8), +('X11', '09M094', 'GHM', 8), +('X11', '09M09T', 'GHM', 8), +('X11', '09M09Z', 'GHM', 8), +('X11', '09M101', 'GHM', 8), +('X11', '09M102', 'GHM', 8), +('X11', '09M103', 'GHM', 8), +('X11', '09M104', 'GHM', 8), +('X11', '09M10T', 'GHM', 8), +('X11', '09M10V', 'GHM', 8), +('X11', '09M10W', 'GHM', 8), +('X11', '09M13Z', 'GHM', 8), +('X11', '09M15Z', 'GHM', 8), +('X11', '13M02Z', 'GHM', 8), +('X11', '13M031', 'GHM', 8), +('X11', '13M032', 'GHM', 8), +('X11', '13M033', 'GHM', 8), +('X11', '13M034', 'GHM', 8), +('X11', '13M03T', 'GHM', 8), +('X11', '13M03V', 'GHM', 8), +('X11', '13M03W', 'GHM', 8), +('X11', '13M041', 'GHM', 8), +('X11', '13M042', 'GHM', 8), +('X11', '13M043', 'GHM', 8), +('X11', '13M044', 'GHM', 8), +('X11', '13M04T', 'GHM', 8), +('X11', '13M04V', 'GHM', 8), +('X11', '13M04W', 'GHM', 8), +('X11', '13M051', 'GHM', 8), +('X11', '13M052', 'GHM', 8), +('X11', '13M053', 'GHM', 8), +('X11', '13M054', 'GHM', 8), +('X11', '13M061', 'GHM', 8), +('X11', '13M062', 'GHM', 8), +('X11', '13M063', 'GHM', 8), +('X11', '13M064', 'GHM', 8), +('X11', '13M06T', 'GHM', 8), +('X11', '13M071', 'GHM', 8), +('X11', '13M072', 'GHM', 8), +('X11', '13M073', 'GHM', 8), +('X11', '13M074', 'GHM', 8), +('X11', '13M081', 'GHM', 8), +('X11', '13M082', 'GHM', 8), +('X11', '13M083', 'GHM', 8), +('X11', '13M084', 'GHM', 8), +('X11', '13M09Z', 'GHM', 8), +('X11', '13M10Z', 'GHM', 8), +('X12', '11M021', 'GHM', 8), +('X12', '11M022', 'GHM', 8), +('X12', '11M023', 'GHM', 8), +('X12', '11M024', 'GHM', 8), +('X12', '11M02T', 'GHM', 8), +('X12', '11M02V', 'GHM', 8), +('X12', '11M02W', 'GHM', 8), +('X12', '11M031', 'GHM', 8), +('X12', '11M032', 'GHM', 8), +('X12', '11M033', 'GHM', 8), +('X12', '11M034', 'GHM', 8), +('X12', '11M03T', 'GHM', 8), +('X12', '11M03V', 'GHM', 8), +('X12', '11M03W', 'GHM', 8), +('X12', '11M041', 'GHM', 8), +('X12', '11M042', 'GHM', 8), +('X12', '11M043', 'GHM', 8), +('X12', '11M044', 'GHM', 8), +('X12', '11M04T', 'GHM', 8), +('X12', '11M04V', 'GHM', 8), +('X12', '11M04W', 'GHM', 8), +('X12', '11M061', 'GHM', 8), +('X12', '11M062', 'GHM', 8), +('X12', '11M063', 'GHM', 8), +('X12', '11M064', 'GHM', 8), +('X12', '11M06T', 'GHM', 8), +('X12', '11M06V', 'GHM', 8), +('X12', '11M06W', 'GHM', 8), +('X12', '11M071', 'GHM', 8), +('X12', '11M072', 'GHM', 8), +('X12', '11M073', 'GHM', 8), +('X12', '11M074', 'GHM', 8), +('X12', '11M07T', 'GHM', 8), +('X12', '11M07V', 'GHM', 8), +('X12', '11M07W', 'GHM', 8), +('X12', '11M081', 'GHM', 8), +('X12', '11M082', 'GHM', 8), +('X12', '11M083', 'GHM', 8), +('X12', '11M084', 'GHM', 8), +('X12', '11M08T', 'GHM', 8), +('X12', '11M08Z', 'GHM', 8), +('X12', '11M101', 'GHM', 8), +('X12', '11M102', 'GHM', 8), +('X12', '11M103', 'GHM', 8), +('X12', '11M104', 'GHM', 8), +('X12', '11M10T', 'GHM', 8), +('X12', '11M10V', 'GHM', 8), +('X12', '11M10W', 'GHM', 8), +('X12', '11M111', 'GHM', 8), +('X12', '11M112', 'GHM', 8), +('X12', '11M113', 'GHM', 8), +('X12', '11M114', 'GHM', 8), +('X12', '11M11Z', 'GHM', 8), +('X12', '11M121', 'GHM', 8), +('X12', '11M122', 'GHM', 8), +('X12', '11M123', 'GHM', 8), +('X12', '11M124', 'GHM', 8), +('X12', '11M12T', 'GHM', 8), +('X12', '11M12V', 'GHM', 8), +('X12', '11M12W', 'GHM', 8), +('X12', '11M151', 'GHM', 8), +('X12', '11M152', 'GHM', 8), +('X12', '11M153', 'GHM', 8), +('X12', '11M154', 'GHM', 8), +('X12', '11M15T', 'GHM', 8), +('X12', '11M161', 'GHM', 8), +('X12', '11M162', 'GHM', 8), +('X12', '11M163', 'GHM', 8), +('X12', '11M164', 'GHM', 8), +('X12', '11M16T', 'GHM', 8), +('X12', '11M171', 'GHM', 8), +('X12', '11M172', 'GHM', 8), +('X12', '11M173', 'GHM', 8), +('X12', '11M174', 'GHM', 8), +('X12', '11M18Z', 'GHM', 8), +('X12', '11M19T', 'GHM', 8), +('X12', '11M19Z', 'GHM', 8), +('X12', '11M201', 'GHM', 8), +('X12', '11M202', 'GHM', 8), +('X12', '11M203', 'GHM', 8), +('X12', '11M204', 'GHM', 8), +('X13', '12M031', 'GHM', 8), +('X13', '12M032', 'GHM', 8), +('X13', '12M033', 'GHM', 8), +('X13', '12M034', 'GHM', 8), +('X13', '12M03T', 'GHM', 8), +('X13', '12M03V', 'GHM', 8), +('X13', '12M03W', 'GHM', 8), +('X13', '12M041', 'GHM', 8), +('X13', '12M042', 'GHM', 8), +('X13', '12M043', 'GHM', 8), +('X13', '12M044', 'GHM', 8), +('X13', '12M04T', 'GHM', 8), +('X13', '12M04V', 'GHM', 8), +('X13', '12M04W', 'GHM', 8), +('X13', '12M051', 'GHM', 8), +('X13', '12M052', 'GHM', 8), +('X13', '12M053', 'GHM', 8), +('X13', '12M054', 'GHM', 8), +('X13', '12M05T', 'GHM', 8), +('X13', '12M05Z', 'GHM', 8), +('X13', '12M061', 'GHM', 8), +('X13', '12M062', 'GHM', 8), +('X13', '12M063', 'GHM', 8), +('X13', '12M064', 'GHM', 8), +('X13', '12M06T', 'GHM', 8), +('X13', '12M071', 'GHM', 8), +('X13', '12M072', 'GHM', 8), +('X13', '12M073', 'GHM', 8), +('X13', '12M074', 'GHM', 8), +('X13', '12M07T', 'GHM', 8), +('X13', '12M08Z', 'GHM', 8), +('X13', '12M09Z', 'GHM', 8), +('X14', '16M061', 'GHM', 8), +('X14', '16M062', 'GHM', 8), +('X14', '16M063', 'GHM', 8), +('X14', '16M064', 'GHM', 8), +('X14', '16M06T', 'GHM', 8), +('X14', '16M071', 'GHM', 8), +('X14', '16M072', 'GHM', 8), +('X14', '16M073', 'GHM', 8), +('X14', '16M074', 'GHM', 8), +('X14', '16M081', 'GHM', 8), +('X14', '16M082', 'GHM', 8), +('X14', '16M083', 'GHM', 8), +('X14', '16M084', 'GHM', 8), +('X14', '16M091', 'GHM', 8), +('X14', '16M092', 'GHM', 8), +('X14', '16M093', 'GHM', 8), +('X14', '16M094', 'GHM', 8), +('X14', '16M09T', 'GHM', 8), +('X14', '16M101', 'GHM', 8), +('X14', '16M102', 'GHM', 8), +('X14', '16M103', 'GHM', 8), +('X14', '16M104', 'GHM', 8), +('X14', '16M10T', 'GHM', 8), +('X14', '16M111', 'GHM', 8), +('X14', '16M112', 'GHM', 8), +('X14', '16M113', 'GHM', 8), +('X14', '16M114', 'GHM', 8), +('X14', '16M11T', 'GHM', 8), +('X14', '16M121', 'GHM', 8), +('X14', '16M122', 'GHM', 8), +('X14', '16M123', 'GHM', 8), +('X14', '16M124', 'GHM', 8), +('X14', '16M12T', 'GHM', 8), +('X14', '16M131', 'GHM', 8), +('X14', '16M132', 'GHM', 8), +('X14', '16M133', 'GHM', 8), +('X14', '16M134', 'GHM', 8), +('X14', '16M13T', 'GHM', 8), +('X14', '16M14Z', 'GHM', 8), +('X14', '16M15T', 'GHM', 8), +('X14', '16M15Z', 'GHM', 8), +('X14', '16M161', 'GHM', 8), +('X14', '16M162', 'GHM', 8), +('X14', '16M163', 'GHM', 8), +('X14', '16M164', 'GHM', 8), +('X14', '16M16T', 'GHM', 8), +('X14', '16M171', 'GHM', 8), +('X14', '16M172', 'GHM', 8), +('X14', '16M173', 'GHM', 8), +('X14', '16M174', 'GHM', 8), +('X14', '16M17T', 'GHM', 8), +('X14', '16M181', 'GHM', 8), +('X14', '16M182', 'GHM', 8), +('X14', '16M183', 'GHM', 8), +('X14', '16M184', 'GHM', 8), +('X14', '17M02Z', 'GHM', 8), +('X14', '17M04Z', 'GHM', 8), +('X14', '17M071', 'GHM', 8), +('X14', '17M072', 'GHM', 8), +('X14', '17M073', 'GHM', 8), +('X14', '17M074', 'GHM', 8), +('X14', '17M07T', 'GHM', 8), +('X14', '17M07V', 'GHM', 8), +('X14', '17M07W', 'GHM', 8), +('X14', '17M081', 'GHM', 8), +('X14', '17M082', 'GHM', 8), +('X14', '17M083', 'GHM', 8), +('X14', '17M084', 'GHM', 8), +('X14', '17M08T', 'GHM', 8), +('X14', '17M08Z', 'GHM', 8), +('X14', '17M091', 'GHM', 8), +('X14', '17M092', 'GHM', 8), +('X14', '17M093', 'GHM', 8), +('X14', '17M094', 'GHM', 8), +('X14', '17M09T', 'GHM', 8), +('X14', '17M09V', 'GHM', 8), +('X14', '17M09W', 'GHM', 8), +('X14', '17M111', 'GHM', 8), +('X14', '17M112', 'GHM', 8), +('X14', '17M113', 'GHM', 8), +('X14', '17M114', 'GHM', 8), +('X14', '17M11T', 'GHM', 8), +('X14', '17M121', 'GHM', 8), +('X14', '17M122', 'GHM', 8), +('X14', '17M123', 'GHM', 8), +('X14', '17M124', 'GHM', 8), +('X14', '17M12T', 'GHM', 8), +('X14', '17M131', 'GHM', 8), +('X14', '17M132', 'GHM', 8), +('X14', '17M133', 'GHM', 8), +('X14', '17M134', 'GHM', 8), +('X14', '17M13T', 'GHM', 8), +('X14', '17M14Z', 'GHM', 8), +('X14', '17M151', 'GHM', 8), +('X14', '17M152', 'GHM', 8), +('X14', '17M153', 'GHM', 8), +('X14', '17M154', 'GHM', 8), +('X14', '17M15T', 'GHM', 8), +('X14', '17M161', 'GHM', 8), +('X14', '17M162', 'GHM', 8), +('X14', '17M163', 'GHM', 8), +('X14', '17M164', 'GHM', 8), +('X14', '17M16T', 'GHM', 8), +('X14', '17M171', 'GHM', 8), +('X14', '17M172', 'GHM', 8), +('X14', '17M173', 'GHM', 8), +('X14', '17M174', 'GHM', 8), +('X14', '17M17T', 'GHM', 8), +('X15', '10M021', 'GHM', 8), +('X15', '10M022', 'GHM', 8), +('X15', '10M023', 'GHM', 8), +('X15', '10M024', 'GHM', 8), +('X15', '10M02T', 'GHM', 8), +('X15', '10M02V', 'GHM', 8), +('X15', '10M02W', 'GHM', 8), +('X15', '10M031', 'GHM', 8), +('X15', '10M032', 'GHM', 8), +('X15', '10M033', 'GHM', 8), +('X15', '10M034', 'GHM', 8), +('X15', '10M03T', 'GHM', 8), +('X15', '10M03Z', 'GHM', 8), +('X15', '10M06Z', 'GHM', 8), +('X15', '10M071', 'GHM', 8), +('X15', '10M072', 'GHM', 8), +('X15', '10M073', 'GHM', 8), +('X15', '10M074', 'GHM', 8), +('X15', '10M07T', 'GHM', 8), +('X15', '10M07V', 'GHM', 8), +('X15', '10M07W', 'GHM', 8), +('X15', '10M081', 'GHM', 8), +('X15', '10M082', 'GHM', 8), +('X15', '10M083', 'GHM', 8), +('X15', '10M084', 'GHM', 8), +('X15', '10M08T', 'GHM', 8), +('X15', '10M091', 'GHM', 8), +('X15', '10M092', 'GHM', 8), +('X15', '10M093', 'GHM', 8), +('X15', '10M094', 'GHM', 8), +('X15', '10M09T', 'GHM', 8), +('X15', '10M101', 'GHM', 8), +('X15', '10M102', 'GHM', 8), +('X15', '10M103', 'GHM', 8), +('X15', '10M104', 'GHM', 8), +('X15', '10M10T', 'GHM', 8), +('X15', '10M111', 'GHM', 8), +('X15', '10M112', 'GHM', 8), +('X15', '10M113', 'GHM', 8), +('X15', '10M114', 'GHM', 8), +('X15', '10M11T', 'GHM', 8), +('X15', '10M121', 'GHM', 8), +('X15', '10M122', 'GHM', 8), +('X15', '10M123', 'GHM', 8), +('X15', '10M124', 'GHM', 8), +('X15', '10M12T', 'GHM', 8), +('X15', '10M13T', 'GHM', 8), +('X15', '10M13Z', 'GHM', 8), +('X15', '10M14T', 'GHM', 8), +('X15', '10M14Z', 'GHM', 8), +('X15', '10M151', 'GHM', 8), +('X15', '10M152', 'GHM', 8), +('X15', '10M153', 'GHM', 8), +('X15', '10M154', 'GHM', 8), +('X15', '10M15T', 'GHM', 8), +('X15', '10M161', 'GHM', 8), +('X15', '10M162', 'GHM', 8), +('X15', '10M163', 'GHM', 8), +('X15', '10M164', 'GHM', 8), +('X15', '10M16T', 'GHM', 8), +('X15', '10M171', 'GHM', 8), +('X15', '10M172', 'GHM', 8), +('X15', '10M173', 'GHM', 8), +('X15', '10M174', 'GHM', 8), +('X15', '10M17T', 'GHM', 8), +('X15', '10M181', 'GHM', 8), +('X15', '10M182', 'GHM', 8), +('X15', '10M183', 'GHM', 8), +('X15', '10M184', 'GHM', 8), +('X15', '10M18T', 'GHM', 8), +('X15', '10M191', 'GHM', 8), +('X15', '10M192', 'GHM', 8), +('X15', '10M193', 'GHM', 8), +('X15', '10M194', 'GHM', 8), +('X15', '10M201', 'GHM', 8), +('X15', '10M202', 'GHM', 8), +('X15', '10M203', 'GHM', 8), +('X15', '10M204', 'GHM', 8), +('X15', '23M08J', 'GHM', 8), +('X16', '09M021', 'GHM', 8), +('X16', '09M022', 'GHM', 8), +('X16', '09M023', 'GHM', 8), +('X16', '09M024', 'GHM', 8), +('X16', '09M02T', 'GHM', 8), +('X16', '09M02Z', 'GHM', 8), +('X16', '09M031', 'GHM', 8), +('X16', '09M032', 'GHM', 8), +('X16', '09M033', 'GHM', 8), +('X16', '09M034', 'GHM', 8), +('X16', '09M03T', 'GHM', 8), +('X16', '09M03V', 'GHM', 8), +('X16', '09M03W', 'GHM', 8), +('X16', '09M041', 'GHM', 8), +('X16', '09M042', 'GHM', 8), +('X16', '09M043', 'GHM', 8), +('X16', '09M044', 'GHM', 8), +('X16', '09M04T', 'GHM', 8), +('X16', '09M04Z', 'GHM', 8), +('X16', '09M051', 'GHM', 8), +('X16', '09M052', 'GHM', 8), +('X16', '09M053', 'GHM', 8), +('X16', '09M054', 'GHM', 8), +('X16', '09M05T', 'GHM', 8), +('X16', '09M05V', 'GHM', 8), +('X16', '09M05W', 'GHM', 8), +('X16', '09M061', 'GHM', 8), +('X16', '09M062', 'GHM', 8), +('X16', '09M063', 'GHM', 8), +('X16', '09M064', 'GHM', 8), +('X16', '09M06T', 'GHM', 8), +('X16', '09M06Z', 'GHM', 8), +('X16', '09M071', 'GHM', 8), +('X16', '09M072', 'GHM', 8), +('X16', '09M073', 'GHM', 8), +('X16', '09M074', 'GHM', 8), +('X16', '09M07T', 'GHM', 8), +('X16', '09M07V', 'GHM', 8), +('X16', '09M07W', 'GHM', 8), +('X16', '09M081', 'GHM', 8), +('X16', '09M082', 'GHM', 8), +('X16', '09M083', 'GHM', 8), +('X16', '09M084', 'GHM', 8), +('X16', '09M08T', 'GHM', 8), +('X16', '09M08V', 'GHM', 8), +('X16', '09M08W', 'GHM', 8), +('X16', '09M111', 'GHM', 8), +('X16', '09M112', 'GHM', 8), +('X16', '09M113', 'GHM', 8), +('X16', '09M114', 'GHM', 8), +('X16', '09M11T', 'GHM', 8), +('X16', '09M12Z', 'GHM', 8), +('X16', '09M14T', 'GHM', 8), +('X16', '09M14Z', 'GHM', 8), +('X17', '22M021', 'GHM', 8), +('X17', '22M022', 'GHM', 8), +('X17', '22M023', 'GHM', 8), +('X17', '22M024', 'GHM', 8), +('X17', '22M02T', 'GHM', 8), +('X17', '22M02Z', 'GHM', 8), +('X17', '22Z021', 'GHM', 8), +('X17', '22Z022', 'GHM', 8), +('X17', '22Z023', 'GHM', 8), +('X17', '22Z024', 'GHM', 8), +('X17', '22Z02Z', 'GHM', 8), +('X17', '22Z03Z', 'GHM', 8), +('X18', '23M02T', 'GHM', 8), +('X18', '23M02Z', 'GHM', 8), +('X18', '23M04Z', 'GHM', 8), +('X18', '23M05Z', 'GHM', 8), +('X18', '23M101', 'GHM', 8), +('X18', '23M102', 'GHM', 8), +('X18', '23M103', 'GHM', 8), +('X18', '23M104', 'GHM', 8), +('X18', '23M10T', 'GHM', 8), +('X18', '23M13Z', 'GHM', 8), +('X18', '23M14Z', 'GHM', 8), +('X18', '23M16T', 'GHM', 8), +('X18', '23M16Z', 'GHM', 8), +('X18', '23M18Z', 'GHM', 8), +('X18', '23M19Z', 'GHM', 8), +('X18', '23M21T', 'GHM', 8), +('X18', '23M21Z', 'GHM', 8), +('X19', '18M021', 'GHM', 8), +('X19', '18M022', 'GHM', 8), +('X19', '18M023', 'GHM', 8), +('X19', '18M024', 'GHM', 8), +('X19', '18M02V', 'GHM', 8), +('X19', '18M02W', 'GHM', 8), +('X19', '18M031', 'GHM', 8), +('X19', '18M032', 'GHM', 8), +('X19', '18M033', 'GHM', 8), +('X19', '18M034', 'GHM', 8), +('X19', '18M03T', 'GHM', 8), +('X19', '18M03Z', 'GHM', 8), +('X19', '18M041', 'GHM', 8), +('X19', '18M042', 'GHM', 8), +('X19', '18M043', 'GHM', 8), +('X19', '18M044', 'GHM', 8), +('X19', '18M04T', 'GHM', 8), +('X19', '18M04V', 'GHM', 8), +('X19', '18M04W', 'GHM', 8), +('X19', '18M061', 'GHM', 8), +('X19', '18M062', 'GHM', 8), +('X19', '18M063', 'GHM', 8), +('X19', '18M064', 'GHM', 8), +('X19', '18M06Z', 'GHM', 8), +('X19', '18M071', 'GHM', 8), +('X19', '18M072', 'GHM', 8), +('X19', '18M073', 'GHM', 8), +('X19', '18M074', 'GHM', 8), +('X19', '18M07T', 'GHM', 8), +('X19', '18M07V', 'GHM', 8), +('X19', '18M07W', 'GHM', 8), +('X19', '18M091', 'GHM', 8), +('X19', '18M092', 'GHM', 8), +('X19', '18M093', 'GHM', 8), +('X19', '18M094', 'GHM', 8), +('X19', '18M09T', 'GHM', 8), +('X19', '18M101', 'GHM', 8), +('X19', '18M102', 'GHM', 8), +('X19', '18M103', 'GHM', 8), +('X19', '18M104', 'GHM', 8), +('X19', '18M10T', 'GHM', 8), +('X19', '18M111', 'GHM', 8), +('X19', '18M112', 'GHM', 8), +('X19', '18M113', 'GHM', 8), +('X19', '18M114', 'GHM', 8), +('X19', '18M11T', 'GHM', 8), +('X19', '18M12Z', 'GHM', 8), +('X19', '18M13E', 'GHM', 8), +('X19', '18M14T', 'GHM', 8), +('X19', '18M14Z', 'GHM', 8), +('X19', '18M151', 'GHM', 8), +('X19', '18M152', 'GHM', 8), +('X19', '18M153', 'GHM', 8), +('X19', '18M154', 'GHM', 8), +('X19', '23M07J', 'GHM', 8), +('X19', '25M02A', 'GHM', 8), +('X19', '25M02B', 'GHM', 8), +('X19', '25M02C', 'GHM', 8), +('X19', '25M02T', 'GHM', 8), +('X19', '25Z02E', 'GHM', 8), +('X19', '25Z031', 'GHM', 8), +('X19', '25Z032', 'GHM', 8), +('X19', '25Z033', 'GHM', 8), +('X19', '25Z034', 'GHM', 8), +('X19', '25Z03Z', 'GHM', 8), +('X20', '19M021', 'GHM', 8), +('X20', '19M022', 'GHM', 8), +('X20', '19M023', 'GHM', 8), +('X20', '19M024', 'GHM', 8), +('X20', '19M02T', 'GHM', 8), +('X20', '19M02V', 'GHM', 8), +('X20', '19M02W', 'GHM', 8), +('X20', '19M03Z', 'GHM', 8), +('X20', '19M04Z', 'GHM', 8), +('X20', '19M05Z', 'GHM', 8), +('X20', '19M061', 'GHM', 8), +('X20', '19M062', 'GHM', 8), +('X20', '19M063', 'GHM', 8), +('X20', '19M064', 'GHM', 8), +('X20', '19M06T', 'GHM', 8), +('X20', '19M06V', 'GHM', 8), +('X20', '19M06W', 'GHM', 8), +('X20', '19M071', 'GHM', 8), +('X20', '19M072', 'GHM', 8), +('X20', '19M073', 'GHM', 8), +('X20', '19M074', 'GHM', 8), +('X20', '19M07T', 'GHM', 8), +('X20', '19M07V', 'GHM', 8), +('X20', '19M07W', 'GHM', 8), +('X20', '19M08Z', 'GHM', 8), +('X20', '19M09Z', 'GHM', 8), +('X20', '19M101', 'GHM', 8), +('X20', '19M102', 'GHM', 8), +('X20', '19M103', 'GHM', 8), +('X20', '19M104', 'GHM', 8), +('X20', '19M10T', 'GHM', 8), +('X20', '19M10Z', 'GHM', 8), +('X20', '19M111', 'GHM', 8), +('X20', '19M112', 'GHM', 8), +('X20', '19M113', 'GHM', 8), +('X20', '19M114', 'GHM', 8), +('X20', '19M11T', 'GHM', 8), +('X20', '19M11V', 'GHM', 8), +('X20', '19M11W', 'GHM', 8), +('X20', '19M121', 'GHM', 8), +('X20', '19M122', 'GHM', 8), +('X20', '19M123', 'GHM', 8), +('X20', '19M124', 'GHM', 8), +('X20', '19M12T', 'GHM', 8), +('X20', '19M131', 'GHM', 8), +('X20', '19M132', 'GHM', 8), +('X20', '19M133', 'GHM', 8), +('X20', '19M134', 'GHM', 8), +('X20', '19M13T', 'GHM', 8), +('X20', '19M141', 'GHM', 8), +('X20', '19M142', 'GHM', 8), +('X20', '19M143', 'GHM', 8), +('X20', '19M144', 'GHM', 8), +('X20', '19M14T', 'GHM', 8), +('X20', '19M151', 'GHM', 8), +('X20', '19M152', 'GHM', 8), +('X20', '19M153', 'GHM', 8), +('X20', '19M154', 'GHM', 8), +('X20', '19M15T', 'GHM', 8), +('X20', '19M161', 'GHM', 8), +('X20', '19M162', 'GHM', 8), +('X20', '19M163', 'GHM', 8), +('X20', '19M164', 'GHM', 8), +('X20', '19M16T', 'GHM', 8), +('X20', '19M171', 'GHM', 8), +('X20', '19M172', 'GHM', 8), +('X20', '19M173', 'GHM', 8), +('X20', '19M174', 'GHM', 8), +('X20', '19M181', 'GHM', 8), +('X20', '19M182', 'GHM', 8), +('X20', '19M183', 'GHM', 8), +('X20', '19M184', 'GHM', 8), +('X20', '19M18T', 'GHM', 8), +('X20', '19M191', 'GHM', 8), +('X20', '19M192', 'GHM', 8), +('X20', '19M193', 'GHM', 8), +('X20', '19M194', 'GHM', 8), +('X20', '19M19T', 'GHM', 8), +('X20', '19M201', 'GHM', 8), +('X20', '19M202', 'GHM', 8), +('X20', '19M203', 'GHM', 8), +('X20', '19M204', 'GHM', 8), +('X20', '19M20T', 'GHM', 8), +('X20', '19M21Z', 'GHM', 8), +('X20', '19M22T', 'GHM', 8), +('X20', '19M22Z', 'GHM', 8), +('X21', '20Z021', 'GHM', 8), +('X21', '20Z022', 'GHM', 8), +('X21', '20Z023', 'GHM', 8), +('X21', '20Z024', 'GHM', 8), +('X21', '20Z02T', 'GHM', 8), +('X21', '20Z02Z', 'GHM', 8), +('X21', '20Z031', 'GHM', 8), +('X21', '20Z032', 'GHM', 8), +('X21', '20Z033', 'GHM', 8), +('X21', '20Z034', 'GHM', 8), +('X21', '20Z03Z', 'GHM', 8), +('X21', '20Z041', 'GHM', 8), +('X21', '20Z042', 'GHM', 8), +('X21', '20Z043', 'GHM', 8), +('X21', '20Z044', 'GHM', 8), +('X21', '20Z04T', 'GHM', 8), +('X21', '20Z04Z', 'GHM', 8), +('X21', '20Z051', 'GHM', 8), +('X21', '20Z052', 'GHM', 8), +('X21', '20Z053', 'GHM', 8), +('X21', '20Z054', 'GHM', 8), +('X21', '20Z05Z', 'GHM', 8), +('X21', '20Z061', 'GHM', 8), +('X21', '20Z062', 'GHM', 8), +('X21', '20Z063', 'GHM', 8), +('X21', '20Z064', 'GHM', 8), +('X21', '20Z06T', 'GHM', 8), +('X21', '20Z06V', 'GHM', 8), +('X21', '20Z06W', 'GHM', 8), +('X21', '21M021', 'GHM', 8), +('X21', '21M022', 'GHM', 8), +('X21', '21M023', 'GHM', 8), +('X21', '21M024', 'GHM', 8), +('X21', '21M02T', 'GHM', 8), +('X21', '21M02Z', 'GHM', 8), +('X21', '21M041', 'GHM', 8), +('X21', '21M042', 'GHM', 8), +('X21', '21M043', 'GHM', 8), +('X21', '21M044', 'GHM', 8), +('X21', '21M04T', 'GHM', 8), +('X21', '21M04Z', 'GHM', 8), +('X21', '21M051', 'GHM', 8), +('X21', '21M052', 'GHM', 8), +('X21', '21M053', 'GHM', 8), +('X21', '21M054', 'GHM', 8), +('X21', '21M05T', 'GHM', 8), +('X21', '21M05Z', 'GHM', 8), +('X21', '21M101', 'GHM', 8), +('X21', '21M102', 'GHM', 8), +('X21', '21M103', 'GHM', 8), +('X21', '21M104', 'GHM', 8), +('X21', '21M10T', 'GHM', 8), +('X21', '21M111', 'GHM', 8), +('X21', '21M112', 'GHM', 8), +('X21', '21M113', 'GHM', 8), +('X21', '21M114', 'GHM', 8), +('X21', '21M11T', 'GHM', 8), +('X21', '21M121', 'GHM', 8), +('X21', '21M122', 'GHM', 8), +('X21', '21M123', 'GHM', 8), +('X21', '21M124', 'GHM', 8), +('X21', '21M141', 'GHM', 8), +('X21', '21M142', 'GHM', 8), +('X21', '21M143', 'GHM', 8), +('X21', '21M144', 'GHM', 8), +('X21', '21M14T', 'GHM', 8), +('X21', '21M161', 'GHM', 8), +('X21', '21M162', 'GHM', 8), +('X21', '21M163', 'GHM', 8), +('X21', '21M164', 'GHM', 8), +('X21', '21M16T', 'GHM', 8), +('X22', '01M211', 'GHM', 8), +('X22', '01M212', 'GHM', 8), +('X22', '01M213', 'GHM', 8), +('X22', '01M214', 'GHM', 8), +('X22', '01M21T', 'GHM', 8), +('X22', '01M21Z', 'GHM', 8), +('X22', '23Z02T', 'GHM', 8), +('X22', '23Z02Z', 'GHM', 8), +('X23', '17M051', 'GHM', 8), +('X23', '17M052', 'GHM', 8), +('X23', '17M053', 'GHM', 8), +('X23', '17M054', 'GHM', 8), +('X23', '17M05Z', 'GHM', 8), +('X23', '17M061', 'GHM', 8), +('X23', '17M062', 'GHM', 8), +('X23', '17M063', 'GHM', 8), +('X23', '17M064', 'GHM', 8), +('X23', '17M06T', 'GHM', 8), +('X23', '17M06V', 'GHM', 8), +('X23', '17M06W', 'GHM', 8), +('X23', '23M091', 'GHM', 8), +('X23', '23M092', 'GHM', 8), +('X23', '23M093', 'GHM', 8), +('X23', '23M094', 'GHM', 8), +('X24', '01M37E', 'GHM', 8), +('X24', '05M22E', 'GHM', 8), +('X24', '21M131', 'GHM', 8), +('X24', '21M132', 'GHM', 8), +('X24', '21M133', 'GHM', 8), +('X24', '21M134', 'GHM', 8), +('X24', '21M151', 'GHM', 8), +('X24', '21M152', 'GHM', 8), +('X24', '21M153', 'GHM', 8), +('X24', '21M154', 'GHM', 8), +('X24', '21M15T', 'GHM', 8), +('X24', '23M061', 'GHM', 8), +('X24', '23M062', 'GHM', 8), +('X24', '23M063', 'GHM', 8), +('X24', '23M064', 'GHM', 8), +('X24', '23M06T', 'GHM', 8), +('X24', '23M06Z', 'GHM', 8), +('X24', '23M111', 'GHM', 8), +('X24', '23M112', 'GHM', 8), +('X24', '23M113', 'GHM', 8), +('X24', '23M114', 'GHM', 8), +('X24', '23M11T', 'GHM', 8), +('X24', '23M15Z', 'GHM', 8), +('X24', '23M20T', 'GHM', 8), +('X24', '23M20Z', 'GHM', 8), +('X25', '26M021', 'GHM', 8), +('X25', '26M022', 'GHM', 8), +('X25', '26M023', 'GHM', 8), +('X25', '26M024', 'GHM', 8), +('X25', '26M02Z', 'GHM', 8), +('X26', '09Z02A', 'GHM', 8), +('X26', '09Z02B', 'GHM', 8), +('X26', '09Z02Z', 'GHM', 8), +('X26', '23Z03Z', 'GHM', 8), +('Z99', '90C01Z', 'GHM', 8), +('Z99', '90H01Z', 'GHM', 8), +('Z99', '90H02Z', 'GHM', 8), +('Z99', '90H03Z', 'GHM', 8), +('Z99', '90Z00Z', 'GHM', 8), +('Z99', '90Z01Z', 'GHM', 8), +('Z99', '90Z02Z', 'GHM', 8), +('Z99', '90Z03Z', 'GHM', 8), +('Z99', '999999', 'GHM', 8), +('Z99', 'ZZZZZZ', 'GHM', 8), +('D01', '06C021', 'GHM', 9), +('D01', '06C022', 'GHM', 9), +('D01', '06C023', 'GHM', 9), +('D01', '06C024', 'GHM', 9), +('D01', '06C02Z', 'GHM', 9), +('D01', '06C031', 'GHM', 9), +('D01', '06C032', 'GHM', 9), +('D01', '06C033', 'GHM', 9), +('D01', '06C034', 'GHM', 9), +('D01', '06C03V', 'GHM', 9), +('D01', '06C03W', 'GHM', 9), +('D01', '06C041', 'GHM', 9), +('D01', '06C042', 'GHM', 9), +('D01', '06C043', 'GHM', 9), +('D01', '06C044', 'GHM', 9), +('D01', '06C04V', 'GHM', 9), +('D01', '06C04W', 'GHM', 9), +('D01', '06C051', 'GHM', 9), +('D01', '06C052', 'GHM', 9), +('D01', '06C053', 'GHM', 9), +('D01', '06C054', 'GHM', 9), +('D01', '06C05Z', 'GHM', 9), +('D01', '06C071', 'GHM', 9), +('D01', '06C072', 'GHM', 9), +('D01', '06C073', 'GHM', 9), +('D01', '06C074', 'GHM', 9), +('D01', '06C07V', 'GHM', 9), +('D01', '06C07W', 'GHM', 9), +('D01', '06C081', 'GHM', 9), +('D01', '06C082', 'GHM', 9), +('D01', '06C083', 'GHM', 9), +('D01', '06C084', 'GHM', 9), +('D01', '06C08V', 'GHM', 9), +('D01', '06C08W', 'GHM', 9), +('D01', '06C091', 'GHM', 9), +('D01', '06C092', 'GHM', 9), +('D01', '06C093', 'GHM', 9), +('D01', '06C094', 'GHM', 9), +('D01', '06C09V', 'GHM', 9), +('D01', '06C09W', 'GHM', 9), +('D01', '06C101', 'GHM', 9), +('D01', '06C102', 'GHM', 9), +('D01', '06C103', 'GHM', 9), +('D01', '06C104', 'GHM', 9), +('D01', '06C10J', 'GHM', 9), +('D01', '06C10Z', 'GHM', 9), +('D01', '06C111', 'GHM', 9), +('D01', '06C112', 'GHM', 9), +('D01', '06C113', 'GHM', 9), +('D01', '06C114', 'GHM', 9), +('D01', '06C11J', 'GHM', 9), +('D01', '06C11V', 'GHM', 9), +('D01', '06C11W', 'GHM', 9), +('D01', '06C121', 'GHM', 9), +('D01', '06C122', 'GHM', 9), +('D01', '06C123', 'GHM', 9), +('D01', '06C124', 'GHM', 9), +('D01', '06C12J', 'GHM', 9), +('D01', '06C12V', 'GHM', 9), +('D01', '06C12W', 'GHM', 9), +('D01', '06C131', 'GHM', 9), +('D01', '06C132', 'GHM', 9), +('D01', '06C133', 'GHM', 9), +('D01', '06C134', 'GHM', 9), +('D01', '06C13V', 'GHM', 9), +('D01', '06C13W', 'GHM', 9), +('D01', '06C141', 'GHM', 9), +('D01', '06C142', 'GHM', 9), +('D01', '06C143', 'GHM', 9), +('D01', '06C144', 'GHM', 9), +('D01', '06C14J', 'GHM', 9), +('D01', '06C14V', 'GHM', 9), +('D01', '06C14W', 'GHM', 9), +('D01', '06C151', 'GHM', 9), +('D01', '06C152', 'GHM', 9), +('D01', '06C153', 'GHM', 9), +('D01', '06C154', 'GHM', 9), +('D01', '06C15V', 'GHM', 9), +('D01', '06C15W', 'GHM', 9), +('D01', '06C161', 'GHM', 9), +('D01', '06C162', 'GHM', 9), +('D01', '06C163', 'GHM', 9), +('D01', '06C164', 'GHM', 9), +('D01', '06C16V', 'GHM', 9), +('D01', '06C16W', 'GHM', 9), +('D01', '06C191', 'GHM', 9), +('D01', '06C192', 'GHM', 9), +('D01', '06C193', 'GHM', 9), +('D01', '06C194', 'GHM', 9), +('D01', '06C19J', 'GHM', 9), +('D01', '06C201', 'GHM', 9), +('D01', '06C202', 'GHM', 9), +('D01', '06C203', 'GHM', 9), +('D01', '06C204', 'GHM', 9), +('D01', '06C211', 'GHM', 9), +('D01', '06C212', 'GHM', 9), +('D01', '06C213', 'GHM', 9), +('D01', '06C214', 'GHM', 9), +('D01', '06C221', 'GHM', 9), +('D01', '06C222', 'GHM', 9), +('D01', '06C223', 'GHM', 9), +('D01', '06C224', 'GHM', 9), +('D01', '06C231', 'GHM', 9), +('D01', '06C232', 'GHM', 9), +('D01', '06C233', 'GHM', 9), +('D01', '06C234', 'GHM', 9), +('D01', '06C23J', 'GHM', 9), +('D01', '06C241', 'GHM', 9), +('D01', '06C242', 'GHM', 9), +('D01', '06C243', 'GHM', 9), +('D01', '06C244', 'GHM', 9), +('D01', '06C24J', 'GHM', 9), +('D01', '06C251', 'GHM', 9), +('D01', '06C252', 'GHM', 9), +('D01', '06C253', 'GHM', 9), +('D01', '06C254', 'GHM', 9), +('D01', '06C25J', 'GHM', 9), +('D01', '06K02Z', 'GHM', 9), +('D01', '06K03J', 'GHM', 9), +('D01', '06K04J', 'GHM', 9), +('D01', '06K05J', 'GHM', 9), +('D01', '06K06J', 'GHM', 9), +('D01', '06M021', 'GHM', 9), +('D01', '06M022', 'GHM', 9), +('D01', '06M023', 'GHM', 9), +('D01', '06M024', 'GHM', 9), +('D01', '06M02T', 'GHM', 9), +('D01', '06M02V', 'GHM', 9), +('D01', '06M02W', 'GHM', 9), +('D01', '06M031', 'GHM', 9), +('D01', '06M032', 'GHM', 9), +('D01', '06M033', 'GHM', 9), +('D01', '06M034', 'GHM', 9), +('D01', '06M03T', 'GHM', 9), +('D01', '06M03V', 'GHM', 9), +('D01', '06M03W', 'GHM', 9), +('D01', '06M041', 'GHM', 9), +('D01', '06M042', 'GHM', 9), +('D01', '06M043', 'GHM', 9), +('D01', '06M044', 'GHM', 9), +('D01', '06M04T', 'GHM', 9), +('D01', '06M04V', 'GHM', 9), +('D01', '06M04W', 'GHM', 9), +('D01', '06M051', 'GHM', 9), +('D01', '06M052', 'GHM', 9), +('D01', '06M053', 'GHM', 9), +('D01', '06M054', 'GHM', 9), +('D01', '06M05T', 'GHM', 9), +('D01', '06M05V', 'GHM', 9), +('D01', '06M05W', 'GHM', 9), +('D01', '06M061', 'GHM', 9), +('D01', '06M062', 'GHM', 9), +('D01', '06M063', 'GHM', 9), +('D01', '06M064', 'GHM', 9), +('D01', '06M06T', 'GHM', 9), +('D01', '06M06V', 'GHM', 9), +('D01', '06M06W', 'GHM', 9), +('D01', '06M071', 'GHM', 9), +('D01', '06M072', 'GHM', 9), +('D01', '06M073', 'GHM', 9), +('D01', '06M074', 'GHM', 9), +('D01', '06M07T', 'GHM', 9), +('D01', '06M07V', 'GHM', 9), +('D01', '06M07W', 'GHM', 9), +('D01', '06M081', 'GHM', 9), +('D01', '06M082', 'GHM', 9), +('D01', '06M083', 'GHM', 9), +('D01', '06M084', 'GHM', 9), +('D01', '06M08T', 'GHM', 9), +('D01', '06M08Z', 'GHM', 9), +('D01', '06M091', 'GHM', 9), +('D01', '06M092', 'GHM', 9), +('D01', '06M093', 'GHM', 9), +('D01', '06M094', 'GHM', 9), +('D01', '06M09T', 'GHM', 9), +('D01', '06M09V', 'GHM', 9), +('D01', '06M09W', 'GHM', 9), +('D01', '06M101', 'GHM', 9), +('D01', '06M102', 'GHM', 9), +('D01', '06M103', 'GHM', 9), +('D01', '06M104', 'GHM', 9), +('D01', '06M10Z', 'GHM', 9), +('D01', '06M111', 'GHM', 9), +('D01', '06M112', 'GHM', 9), +('D01', '06M113', 'GHM', 9), +('D01', '06M114', 'GHM', 9), +('D01', '06M11T', 'GHM', 9), +('D01', '06M11V', 'GHM', 9), +('D01', '06M11W', 'GHM', 9), +('D01', '06M121', 'GHM', 9), +('D01', '06M122', 'GHM', 9), +('D01', '06M123', 'GHM', 9), +('D01', '06M124', 'GHM', 9), +('D01', '06M12T', 'GHM', 9), +('D01', '06M131', 'GHM', 9), +('D01', '06M132', 'GHM', 9), +('D01', '06M133', 'GHM', 9), +('D01', '06M134', 'GHM', 9), +('D01', '06M13T', 'GHM', 9), +('D01', '06M141', 'GHM', 9), +('D01', '06M142', 'GHM', 9), +('D01', '06M143', 'GHM', 9), +('D01', '06M144', 'GHM', 9), +('D01', '06M15Z', 'GHM', 9), +('D01', '06M16Z', 'GHM', 9), +('D01', '06M17T', 'GHM', 9), +('D01', '06M17Z', 'GHM', 9), +('D01', '06M18T', 'GHM', 9), +('D01', '06M18Z', 'GHM', 9), +('D01', '06M191', 'GHM', 9), +('D01', '06M192', 'GHM', 9), +('D01', '06M193', 'GHM', 9), +('D01', '06M194', 'GHM', 9), +('D01', '06M201', 'GHM', 9), +('D01', '06M202', 'GHM', 9), +('D01', '06M203', 'GHM', 9), +('D01', '06M204', 'GHM', 9), +('D01', '06M20T', 'GHM', 9), +('D01', '06M211', 'GHM', 9), +('D01', '06M212', 'GHM', 9), +('D01', '06M213', 'GHM', 9), +('D01', '06M214', 'GHM', 9), +('D01', '07C061', 'GHM', 9), +('D01', '07C062', 'GHM', 9), +('D01', '07C063', 'GHM', 9), +('D01', '07C064', 'GHM', 9), +('D01', '07C06Z', 'GHM', 9), +('D01', '07C071', 'GHM', 9), +('D01', '07C072', 'GHM', 9), +('D01', '07C073', 'GHM', 9), +('D01', '07C074', 'GHM', 9), +('D01', '07C07Z', 'GHM', 9), +('D01', '07C081', 'GHM', 9), +('D01', '07C082', 'GHM', 9), +('D01', '07C083', 'GHM', 9), +('D01', '07C084', 'GHM', 9), +('D01', '07C08Z', 'GHM', 9), +('D01', '07C091', 'GHM', 9), +('D01', '07C092', 'GHM', 9), +('D01', '07C093', 'GHM', 9), +('D01', '07C094', 'GHM', 9), +('D01', '07C09V', 'GHM', 9), +('D01', '07C09W', 'GHM', 9), +('D01', '07C101', 'GHM', 9), +('D01', '07C102', 'GHM', 9), +('D01', '07C103', 'GHM', 9), +('D01', '07C104', 'GHM', 9), +('D01', '07C10V', 'GHM', 9), +('D01', '07C10W', 'GHM', 9), +('D01', '07C111', 'GHM', 9), +('D01', '07C112', 'GHM', 9), +('D01', '07C113', 'GHM', 9), +('D01', '07C114', 'GHM', 9), +('D01', '07C11V', 'GHM', 9), +('D01', '07C11W', 'GHM', 9), +('D01', '07C121', 'GHM', 9), +('D01', '07C122', 'GHM', 9), +('D01', '07C123', 'GHM', 9), +('D01', '07C124', 'GHM', 9), +('D01', '07C12V', 'GHM', 9), +('D01', '07C12W', 'GHM', 9), +('D01', '07C131', 'GHM', 9), +('D01', '07C132', 'GHM', 9), +('D01', '07C133', 'GHM', 9), +('D01', '07C134', 'GHM', 9), +('D01', '07C141', 'GHM', 9), +('D01', '07C142', 'GHM', 9), +('D01', '07C143', 'GHM', 9), +('D01', '07C144', 'GHM', 9), +('D01', '07C14J', 'GHM', 9), +('D01', '07K02Z', 'GHM', 9), +('D01', '07K04J', 'GHM', 9), +('D01', '07K05J', 'GHM', 9), +('D01', '07K061', 'GHM', 9), +('D01', '07K062', 'GHM', 9), +('D01', '07K063', 'GHM', 9), +('D01', '07K064', 'GHM', 9), +('D01', '07M021', 'GHM', 9), +('D01', '07M022', 'GHM', 9), +('D01', '07M023', 'GHM', 9), +('D01', '07M024', 'GHM', 9), +('D01', '07M02T', 'GHM', 9), +('D01', '07M02V', 'GHM', 9), +('D01', '07M02W', 'GHM', 9), +('D01', '07M041', 'GHM', 9), +('D01', '07M042', 'GHM', 9), +('D01', '07M043', 'GHM', 9), +('D01', '07M044', 'GHM', 9), +('D01', '07M04T', 'GHM', 9), +('D01', '07M04V', 'GHM', 9), +('D01', '07M04W', 'GHM', 9), +('D01', '07M061', 'GHM', 9), +('D01', '07M062', 'GHM', 9), +('D01', '07M063', 'GHM', 9), +('D01', '07M064', 'GHM', 9), +('D01', '07M06T', 'GHM', 9), +('D01', '07M06V', 'GHM', 9), +('D01', '07M06W', 'GHM', 9), +('D01', '07M071', 'GHM', 9), +('D01', '07M072', 'GHM', 9), +('D01', '07M073', 'GHM', 9), +('D01', '07M074', 'GHM', 9), +('D01', '07M07T', 'GHM', 9), +('D01', '07M081', 'GHM', 9), +('D01', '07M082', 'GHM', 9), +('D01', '07M083', 'GHM', 9), +('D01', '07M084', 'GHM', 9), +('D01', '07M08T', 'GHM', 9), +('D01', '07M091', 'GHM', 9), +('D01', '07M092', 'GHM', 9), +('D01', '07M093', 'GHM', 9), +('D01', '07M094', 'GHM', 9), +('D01', '07M09T', 'GHM', 9), +('D01', '07M101', 'GHM', 9), +('D01', '07M102', 'GHM', 9), +('D01', '07M103', 'GHM', 9), +('D01', '07M104', 'GHM', 9), +('D01', '07M10T', 'GHM', 9), +('D01', '07M111', 'GHM', 9), +('D01', '07M112', 'GHM', 9), +('D01', '07M113', 'GHM', 9), +('D01', '07M114', 'GHM', 9), +('D01', '07M11T', 'GHM', 9), +('D01', '07M121', 'GHM', 9), +('D01', '07M122', 'GHM', 9), +('D01', '07M123', 'GHM', 9), +('D01', '07M124', 'GHM', 9), +('D01', '07M13Z', 'GHM', 9), +('D01', '07M14T', 'GHM', 9), +('D01', '07M14Z', 'GHM', 9), +('D01', '07M151', 'GHM', 9), +('D01', '07M152', 'GHM', 9), +('D01', '07M153', 'GHM', 9), +('D01', '07M154', 'GHM', 9), +('D01', '07M15T', 'GHM', 9), +('D01', '07M161', 'GHM', 9), +('D01', '07M162', 'GHM', 9), +('D01', '07M163', 'GHM', 9), +('D01', '07M164', 'GHM', 9), +('D01', '09C081', 'GHM', 9), +('D01', '09C082', 'GHM', 9), +('D01', '09C083', 'GHM', 9), +('D01', '09C084', 'GHM', 9), +('D01', '09C08J', 'GHM', 9), +('D01', '09C08Z', 'GHM', 9), +('D01', '09C131', 'GHM', 9), +('D01', '09C132', 'GHM', 9), +('D01', '09C133', 'GHM', 9), +('D01', '09C134', 'GHM', 9), +('D01', '09C13J', 'GHM', 9), +('D01', '10C04Z', 'GHM', 9), +('D01', '10C091', 'GHM', 9), +('D01', '10C092', 'GHM', 9), +('D01', '10C093', 'GHM', 9), +('D01', '10C094', 'GHM', 9), +('D01', '10C09Z', 'GHM', 9), +('D01', '10C131', 'GHM', 9), +('D01', '10C132', 'GHM', 9), +('D01', '10C133', 'GHM', 9), +('D01', '10C134', 'GHM', 9), +('D01', '10C13Z', 'GHM', 9), +('D01', '16C021', 'GHM', 9), +('D01', '16C022', 'GHM', 9), +('D01', '16C023', 'GHM', 9), +('D01', '16C024', 'GHM', 9), +('D01', '16C02Z', 'GHM', 9), +('D02', '01C07Z', 'GHM', 9), +('D02', '01C131', 'GHM', 9), +('D02', '01C132', 'GHM', 9), +('D02', '01C133', 'GHM', 9), +('D02', '01C134', 'GHM', 9), +('D02', '01C13J', 'GHM', 9), +('D02', '01C13Z', 'GHM', 9), +('D02', '01C141', 'GHM', 9), +('D02', '01C142', 'GHM', 9), +('D02', '01C143', 'GHM', 9), +('D02', '01C144', 'GHM', 9), +('D02', '01C14J', 'GHM', 9), +('D02', '01C151', 'GHM', 9), +('D02', '01C152', 'GHM', 9), +('D02', '01C153', 'GHM', 9), +('D02', '01C154', 'GHM', 9), +('D02', '01C15J', 'GHM', 9), +('D02', '05C121', 'GHM', 9), +('D02', '05C122', 'GHM', 9), +('D02', '05C123', 'GHM', 9), +('D02', '05C124', 'GHM', 9), +('D02', '05C12V', 'GHM', 9), +('D02', '05C12W', 'GHM', 9), +('D02', '05C131', 'GHM', 9), +('D02', '05C132', 'GHM', 9), +('D02', '05C133', 'GHM', 9), +('D02', '05C134', 'GHM', 9), +('D02', '05C13J', 'GHM', 9), +('D02', '05C13V', 'GHM', 9), +('D02', '05C13W', 'GHM', 9), +('D02', '08C021', 'GHM', 9), +('D02', '08C022', 'GHM', 9), +('D02', '08C023', 'GHM', 9), +('D02', '08C024', 'GHM', 9), +('D02', '08C02Z', 'GHM', 9), +('D02', '08C041', 'GHM', 9), +('D02', '08C042', 'GHM', 9), +('D02', '08C043', 'GHM', 9), +('D02', '08C044', 'GHM', 9), +('D02', '08C04Z', 'GHM', 9), +('D02', '08C061', 'GHM', 9), +('D02', '08C062', 'GHM', 9), +('D02', '08C063', 'GHM', 9), +('D02', '08C064', 'GHM', 9), +('D02', '08C06Z', 'GHM', 9), +('D02', '08C08Z', 'GHM', 9), +('D02', '08C121', 'GHM', 9), +('D02', '08C122', 'GHM', 9), +('D02', '08C123', 'GHM', 9), +('D02', '08C124', 'GHM', 9), +('D02', '08C12J', 'GHM', 9), +('D02', '08C12Z', 'GHM', 9), +('D02', '08C131', 'GHM', 9), +('D02', '08C132', 'GHM', 9), +('D02', '08C133', 'GHM', 9), +('D02', '08C134', 'GHM', 9), +('D02', '08C13J', 'GHM', 9), +('D02', '08C13Z', 'GHM', 9), +('D02', '08C141', 'GHM', 9), +('D02', '08C142', 'GHM', 9), +('D02', '08C143', 'GHM', 9), +('D02', '08C144', 'GHM', 9), +('D02', '08C14J', 'GHM', 9), +('D02', '08C14Z', 'GHM', 9), +('D02', '08C17Z', 'GHM', 9), +('D02', '08C19Z', 'GHM', 9), +('D02', '08C221', 'GHM', 9), +('D02', '08C222', 'GHM', 9), +('D02', '08C223', 'GHM', 9), +('D02', '08C224', 'GHM', 9), +('D02', '08C22Z', 'GHM', 9), +('D02', '08C241', 'GHM', 9), +('D02', '08C242', 'GHM', 9), +('D02', '08C243', 'GHM', 9), +('D02', '08C244', 'GHM', 9), +('D02', '08C24Z', 'GHM', 9), +('D02', '08C251', 'GHM', 9), +('D02', '08C252', 'GHM', 9), +('D02', '08C253', 'GHM', 9), +('D02', '08C254', 'GHM', 9), +('D02', '08C25Z', 'GHM', 9), +('D02', '08C26Z', 'GHM', 9), +('D02', '08C291', 'GHM', 9), +('D02', '08C292', 'GHM', 9), +('D02', '08C293', 'GHM', 9), +('D02', '08C294', 'GHM', 9), +('D02', '08C29J', 'GHM', 9), +('D02', '08C29Z', 'GHM', 9), +('D02', '08C311', 'GHM', 9), +('D02', '08C312', 'GHM', 9), +('D02', '08C313', 'GHM', 9), +('D02', '08C314', 'GHM', 9), +('D02', '08C321', 'GHM', 9), +('D02', '08C322', 'GHM', 9), +('D02', '08C323', 'GHM', 9), +('D02', '08C324', 'GHM', 9), +('D02', '08C32J', 'GHM', 9), +('D02', '08C331', 'GHM', 9), +('D02', '08C332', 'GHM', 9), +('D02', '08C333', 'GHM', 9), +('D02', '08C334', 'GHM', 9), +('D02', '08C341', 'GHM', 9), +('D02', '08C342', 'GHM', 9), +('D02', '08C343', 'GHM', 9), +('D02', '08C344', 'GHM', 9), +('D02', '08C34J', 'GHM', 9), +('D02', '08C351', 'GHM', 9), +('D02', '08C352', 'GHM', 9), +('D02', '08C353', 'GHM', 9), +('D02', '08C354', 'GHM', 9), +('D02', '08C35J', 'GHM', 9), +('D02', '08C361', 'GHM', 9), +('D02', '08C362', 'GHM', 9), +('D02', '08C363', 'GHM', 9), +('D02', '08C364', 'GHM', 9), +('D02', '08C36J', 'GHM', 9), +('D02', '08C371', 'GHM', 9), +('D02', '08C372', 'GHM', 9), +('D02', '08C373', 'GHM', 9), +('D02', '08C374', 'GHM', 9), +('D02', '08C37J', 'GHM', 9), +('D02', '08C381', 'GHM', 9), +('D02', '08C382', 'GHM', 9), +('D02', '08C383', 'GHM', 9), +('D02', '08C384', 'GHM', 9), +('D02', '08C38J', 'GHM', 9), +('D02', '08C391', 'GHM', 9), +('D02', '08C392', 'GHM', 9), +('D02', '08C393', 'GHM', 9), +('D02', '08C394', 'GHM', 9), +('D02', '08C39J', 'GHM', 9), +('D02', '08C401', 'GHM', 9), +('D02', '08C402', 'GHM', 9), +('D02', '08C403', 'GHM', 9), +('D02', '08C404', 'GHM', 9), +('D02', '08C40J', 'GHM', 9), +('D02', '08C411', 'GHM', 9), +('D02', '08C412', 'GHM', 9), +('D02', '08C413', 'GHM', 9), +('D02', '08C414', 'GHM', 9), +('D02', '08C41J', 'GHM', 9), +('D02', '08C421', 'GHM', 9), +('D02', '08C422', 'GHM', 9), +('D02', '08C423', 'GHM', 9), +('D02', '08C424', 'GHM', 9), +('D02', '08C42J', 'GHM', 9), +('D02', '08C431', 'GHM', 9), +('D02', '08C432', 'GHM', 9), +('D02', '08C433', 'GHM', 9), +('D02', '08C434', 'GHM', 9), +('D02', '08C43J', 'GHM', 9), +('D02', '08C441', 'GHM', 9), +('D02', '08C442', 'GHM', 9), +('D02', '08C443', 'GHM', 9), +('D02', '08C444', 'GHM', 9), +('D02', '08C44J', 'GHM', 9), +('D02', '08C451', 'GHM', 9), +('D02', '08C452', 'GHM', 9), +('D02', '08C453', 'GHM', 9), +('D02', '08C454', 'GHM', 9), +('D02', '08C45J', 'GHM', 9), +('D02', '08C461', 'GHM', 9), +('D02', '08C462', 'GHM', 9), +('D02', '08C463', 'GHM', 9), +('D02', '08C464', 'GHM', 9), +('D02', '08C46J', 'GHM', 9), +('D02', '08C471', 'GHM', 9), +('D02', '08C472', 'GHM', 9), +('D02', '08C473', 'GHM', 9), +('D02', '08C474', 'GHM', 9), +('D02', '08C481', 'GHM', 9), +('D02', '08C482', 'GHM', 9), +('D02', '08C483', 'GHM', 9), +('D02', '08C484', 'GHM', 9), +('D02', '08C491', 'GHM', 9), +('D02', '08C492', 'GHM', 9), +('D02', '08C493', 'GHM', 9), +('D02', '08C494', 'GHM', 9), +('D02', '08C501', 'GHM', 9), +('D02', '08C502', 'GHM', 9), +('D02', '08C503', 'GHM', 9), +('D02', '08C504', 'GHM', 9), +('D02', '08C531', 'GHM', 9), +('D02', '08C532', 'GHM', 9), +('D02', '08C533', 'GHM', 9), +('D02', '08C534', 'GHM', 9), +('D02', '08C541', 'GHM', 9), +('D02', '08C542', 'GHM', 9), +('D02', '08C543', 'GHM', 9), +('D02', '08C544', 'GHM', 9), +('D02', '08C54J', 'GHM', 9), +('D02', '08C551', 'GHM', 9), +('D02', '08C552', 'GHM', 9), +('D02', '08C553', 'GHM', 9), +('D02', '08C554', 'GHM', 9), +('D02', '08C561', 'GHM', 9), +('D02', '08C562', 'GHM', 9), +('D02', '08C563', 'GHM', 9), +('D02', '08C564', 'GHM', 9), +('D02', '08C571', 'GHM', 9), +('D02', '08C572', 'GHM', 9), +('D02', '08C573', 'GHM', 9), +('D02', '08C574', 'GHM', 9), +('D02', '08C57J', 'GHM', 9), +('D02', '08C581', 'GHM', 9), +('D02', '08C582', 'GHM', 9), +('D02', '08C583', 'GHM', 9), +('D02', '08C584', 'GHM', 9), +('D02', '08C58J', 'GHM', 9), +('D02', '08C591', 'GHM', 9), +('D02', '08C592', 'GHM', 9), +('D02', '08C593', 'GHM', 9), +('D02', '08C594', 'GHM', 9), +('D02', '08C59J', 'GHM', 9), +('D02', '08C601', 'GHM', 9), +('D02', '08C602', 'GHM', 9), +('D02', '08C603', 'GHM', 9), +('D02', '08C604', 'GHM', 9), +('D02', '08C60J', 'GHM', 9), +('D02', '08C611', 'GHM', 9), +('D02', '08C612', 'GHM', 9), +('D02', '08C613', 'GHM', 9), +('D02', '08C614', 'GHM', 9), +('D02', '08C621', 'GHM', 9), +('D02', '08C622', 'GHM', 9), +('D02', '08C623', 'GHM', 9), +('D02', '08C624', 'GHM', 9), +('D02', '08C62J', 'GHM', 9), +('D02', '08K02J', 'GHM', 9), +('D02', '08K031', 'GHM', 9), +('D02', '08K032', 'GHM', 9), +('D02', '08K033', 'GHM', 9), +('D02', '08K034', 'GHM', 9), +('D02', '08K041', 'GHM', 9), +('D02', '08K042', 'GHM', 9), +('D02', '08K043', 'GHM', 9), +('D02', '08K044', 'GHM', 9), +('D02', '08K051', 'GHM', 9), +('D02', '08K052', 'GHM', 9), +('D02', '08K053', 'GHM', 9), +('D02', '08K054', 'GHM', 9), +('D02', '08K05J', 'GHM', 9), +('D02', '08K06Z', 'GHM', 9), +('D02', '08M02Z', 'GHM', 9), +('D02', '08M041', 'GHM', 9), +('D02', '08M042', 'GHM', 9), +('D02', '08M043', 'GHM', 9), +('D02', '08M044', 'GHM', 9), +('D02', '08M04T', 'GHM', 9), +('D02', '08M04V', 'GHM', 9), +('D02', '08M04W', 'GHM', 9), +('D02', '08M051', 'GHM', 9), +('D02', '08M052', 'GHM', 9), +('D02', '08M053', 'GHM', 9), +('D02', '08M054', 'GHM', 9), +('D02', '08M05T', 'GHM', 9), +('D02', '08M05Z', 'GHM', 9), +('D02', '08M061', 'GHM', 9), +('D02', '08M062', 'GHM', 9), +('D02', '08M063', 'GHM', 9), +('D02', '08M064', 'GHM', 9), +('D02', '08M06T', 'GHM', 9), +('D02', '08M06Z', 'GHM', 9), +('D02', '08M071', 'GHM', 9), +('D02', '08M072', 'GHM', 9), +('D02', '08M073', 'GHM', 9), +('D02', '08M074', 'GHM', 9), +('D02', '08M07T', 'GHM', 9), +('D02', '08M07V', 'GHM', 9), +('D02', '08M07W', 'GHM', 9), +('D02', '08M081', 'GHM', 9), +('D02', '08M082', 'GHM', 9), +('D02', '08M083', 'GHM', 9), +('D02', '08M084', 'GHM', 9), +('D02', '08M08T', 'GHM', 9), +('D02', '08M08Z', 'GHM', 9), +('D02', '08M13Z', 'GHM', 9), +('D02', '08M16Z', 'GHM', 9), +('D02', '08M17Z', 'GHM', 9), +('D02', '08M201', 'GHM', 9), +('D02', '08M202', 'GHM', 9), +('D02', '08M203', 'GHM', 9), +('D02', '08M204', 'GHM', 9), +('D02', '08M211', 'GHM', 9), +('D02', '08M212', 'GHM', 9), +('D02', '08M213', 'GHM', 9), +('D02', '08M214', 'GHM', 9), +('D02', '08M221', 'GHM', 9), +('D02', '08M222', 'GHM', 9), +('D02', '08M223', 'GHM', 9), +('D02', '08M224', 'GHM', 9), +('D02', '08M231', 'GHM', 9), +('D02', '08M232', 'GHM', 9), +('D02', '08M233', 'GHM', 9), +('D02', '08M234', 'GHM', 9), +('D02', '08M261', 'GHM', 9), +('D02', '08M262', 'GHM', 9), +('D02', '08M263', 'GHM', 9), +('D02', '08M264', 'GHM', 9), +('D02', '08M331', 'GHM', 9), +('D02', '08M332', 'GHM', 9), +('D02', '08M333', 'GHM', 9), +('D02', '08M334', 'GHM', 9), +('D02', '08M33T', 'GHM', 9), +('D02', '08M371', 'GHM', 9), +('D02', '08M372', 'GHM', 9), +('D02', '08M373', 'GHM', 9), +('D02', '08M374', 'GHM', 9), +('D02', '08M37T', 'GHM', 9), +('D02', '08M381', 'GHM', 9), +('D02', '08M382', 'GHM', 9), +('D02', '08M383', 'GHM', 9), +('D02', '08M384', 'GHM', 9), +('D02', '08M38T', 'GHM', 9), +('D02', '21C041', 'GHM', 9), +('D02', '21C042', 'GHM', 9), +('D02', '21C043', 'GHM', 9), +('D02', '21C044', 'GHM', 9), +('D02', '21C04J', 'GHM', 9), +('D02', '21C04Z', 'GHM', 9), +('D02', '21M061', 'GHM', 9), +('D02', '21M062', 'GHM', 9), +('D02', '21M063', 'GHM', 9), +('D02', '21M064', 'GHM', 9), +('D02', '21M06Z', 'GHM', 9), +('D02', '21M071', 'GHM', 9), +('D02', '21M072', 'GHM', 9), +('D02', '21M073', 'GHM', 9), +('D02', '21M074', 'GHM', 9), +('D02', '21M07T', 'GHM', 9), +('D02', '21M07V', 'GHM', 9), +('D02', '21M07W', 'GHM', 9), +('D03', '26C021', 'GHM', 9), +('D03', '26C022', 'GHM', 9), +('D03', '26C023', 'GHM', 9), +('D03', '26C024', 'GHM', 9), +('D03', '26C02Z', 'GHM', 9), +('D03', '26M021', 'GHM', 9), +('D03', '26M022', 'GHM', 9), +('D03', '26M023', 'GHM', 9), +('D03', '26M024', 'GHM', 9), +('D03', '26M02Z', 'GHM', 9), +('D04', '08M091', 'GHM', 9), +('D04', '08M092', 'GHM', 9), +('D04', '08M093', 'GHM', 9), +('D04', '08M094', 'GHM', 9), +('D04', '08M09T', 'GHM', 9), +('D04', '08M09Z', 'GHM', 9), +('D04', '08M101', 'GHM', 9), +('D04', '08M102', 'GHM', 9), +('D04', '08M103', 'GHM', 9), +('D04', '08M104', 'GHM', 9), +('D04', '08M10T', 'GHM', 9), +('D04', '08M10V', 'GHM', 9), +('D04', '08M10W', 'GHM', 9), +('D04', '08M141', 'GHM', 9), +('D04', '08M142', 'GHM', 9), +('D04', '08M143', 'GHM', 9), +('D04', '08M144', 'GHM', 9), +('D04', '08M14T', 'GHM', 9), +('D04', '08M14V', 'GHM', 9), +('D04', '08M14W', 'GHM', 9), +('D04', '08M151', 'GHM', 9), +('D04', '08M152', 'GHM', 9), +('D04', '08M153', 'GHM', 9), +('D04', '08M154', 'GHM', 9), +('D04', '08M15T', 'GHM', 9), +('D04', '08M15V', 'GHM', 9), +('D04', '08M15W', 'GHM', 9), +('D04', '08M181', 'GHM', 9), +('D04', '08M182', 'GHM', 9), +('D04', '08M183', 'GHM', 9), +('D04', '08M184', 'GHM', 9), +('D04', '08M18T', 'GHM', 9), +('D04', '08M18Z', 'GHM', 9), +('D04', '08M191', 'GHM', 9), +('D04', '08M192', 'GHM', 9), +('D04', '08M193', 'GHM', 9), +('D04', '08M194', 'GHM', 9), +('D04', '08M19T', 'GHM', 9), +('D04', '08M19V', 'GHM', 9), +('D04', '08M19W', 'GHM', 9), +('D04', '08M241', 'GHM', 9), +('D04', '08M242', 'GHM', 9), +('D04', '08M243', 'GHM', 9), +('D04', '08M244', 'GHM', 9), +('D04', '08M24T', 'GHM', 9), +('D04', '08M251', 'GHM', 9), +('D04', '08M252', 'GHM', 9), +('D04', '08M253', 'GHM', 9), +('D04', '08M254', 'GHM', 9), +('D04', '08M25T', 'GHM', 9), +('D04', '08M271', 'GHM', 9), +('D04', '08M272', 'GHM', 9), +('D04', '08M273', 'GHM', 9), +('D04', '08M274', 'GHM', 9), +('D04', '08M27T', 'GHM', 9), +('D04', '08M281', 'GHM', 9), +('D04', '08M282', 'GHM', 9), +('D04', '08M283', 'GHM', 9), +('D04', '08M284', 'GHM', 9), +('D04', '08M28T', 'GHM', 9), +('D04', '08M291', 'GHM', 9), +('D04', '08M292', 'GHM', 9), +('D04', '08M293', 'GHM', 9), +('D04', '08M294', 'GHM', 9), +('D04', '08M29T', 'GHM', 9), +('D04', '08M301', 'GHM', 9), +('D04', '08M302', 'GHM', 9), +('D04', '08M303', 'GHM', 9), +('D04', '08M304', 'GHM', 9), +('D04', '08M30T', 'GHM', 9), +('D04', '08M311', 'GHM', 9), +('D04', '08M312', 'GHM', 9), +('D04', '08M313', 'GHM', 9), +('D04', '08M314', 'GHM', 9), +('D04', '08M31T', 'GHM', 9), +('D04', '08M321', 'GHM', 9), +('D04', '08M322', 'GHM', 9), +('D04', '08M323', 'GHM', 9), +('D04', '08M324', 'GHM', 9), +('D04', '08M32T', 'GHM', 9), +('D04', '08M341', 'GHM', 9), +('D04', '08M342', 'GHM', 9), +('D04', '08M343', 'GHM', 9), +('D04', '08M344', 'GHM', 9), +('D04', '08M34T', 'GHM', 9), +('D04', '08M35Z', 'GHM', 9), +('D04', '08M36T', 'GHM', 9), +('D04', '08M36Z', 'GHM', 9), +('D05', '01C02Z', 'GHM', 9), +('D05', '01C031', 'GHM', 9), +('D05', '01C032', 'GHM', 9), +('D05', '01C033', 'GHM', 9), +('D05', '01C034', 'GHM', 9), +('D05', '01C03V', 'GHM', 9), +('D05', '01C03W', 'GHM', 9), +('D05', '01C041', 'GHM', 9), +('D05', '01C042', 'GHM', 9), +('D05', '01C043', 'GHM', 9), +('D05', '01C044', 'GHM', 9), +('D05', '01C04V', 'GHM', 9), +('D05', '01C04W', 'GHM', 9), +('D05', '01C051', 'GHM', 9), +('D05', '01C052', 'GHM', 9), +('D05', '01C053', 'GHM', 9), +('D05', '01C054', 'GHM', 9), +('D05', '01C05V', 'GHM', 9), +('D05', '01C05W', 'GHM', 9), +('D05', '01C091', 'GHM', 9), +('D05', '01C092', 'GHM', 9), +('D05', '01C093', 'GHM', 9), +('D05', '01C094', 'GHM', 9), +('D05', '01C09Z', 'GHM', 9), +('D05', '01C101', 'GHM', 9), +('D05', '01C102', 'GHM', 9), +('D05', '01C103', 'GHM', 9), +('D05', '01C104', 'GHM', 9), +('D05', '01C10J', 'GHM', 9), +('D05', '01C10Z', 'GHM', 9), +('D05', '01C111', 'GHM', 9), +('D05', '01C112', 'GHM', 9), +('D05', '01C113', 'GHM', 9), +('D05', '01C114', 'GHM', 9), +('D05', '01C11Z', 'GHM', 9), +('D05', '01C121', 'GHM', 9), +('D05', '01C122', 'GHM', 9), +('D05', '01C123', 'GHM', 9), +('D05', '01C124', 'GHM', 9), +('D05', '01C12Z', 'GHM', 9), +('D05', '01K04J', 'GHM', 9), +('D05', '01K06J', 'GHM', 9), +('D05', '01M02Z', 'GHM', 9), +('D05', '01M041', 'GHM', 9), +('D05', '01M042', 'GHM', 9), +('D05', '01M043', 'GHM', 9), +('D05', '01M044', 'GHM', 9), +('D05', '01M04T', 'GHM', 9), +('D05', '01M04Z', 'GHM', 9), +('D05', '01M051', 'GHM', 9), +('D05', '01M052', 'GHM', 9), +('D05', '01M053', 'GHM', 9), +('D05', '01M054', 'GHM', 9), +('D05', '01M05T', 'GHM', 9), +('D05', '01M05V', 'GHM', 9), +('D05', '01M05W', 'GHM', 9), +('D05', '01M071', 'GHM', 9), +('D05', '01M072', 'GHM', 9), +('D05', '01M073', 'GHM', 9), +('D05', '01M074', 'GHM', 9), +('D05', '01M07T', 'GHM', 9), +('D05', '01M07Z', 'GHM', 9), +('D05', '01M081', 'GHM', 9), +('D05', '01M082', 'GHM', 9), +('D05', '01M083', 'GHM', 9), +('D05', '01M084', 'GHM', 9), +('D05', '01M08T', 'GHM', 9), +('D05', '01M08V', 'GHM', 9), +('D05', '01M08W', 'GHM', 9), +('D05', '01M091', 'GHM', 9), +('D05', '01M092', 'GHM', 9), +('D05', '01M093', 'GHM', 9), +('D05', '01M094', 'GHM', 9), +('D05', '01M09T', 'GHM', 9), +('D05', '01M09Z', 'GHM', 9), +('D05', '01M101', 'GHM', 9), +('D05', '01M102', 'GHM', 9), +('D05', '01M103', 'GHM', 9), +('D05', '01M104', 'GHM', 9), +('D05', '01M10T', 'GHM', 9), +('D05', '01M10V', 'GHM', 9), +('D05', '01M10W', 'GHM', 9), +('D05', '01M111', 'GHM', 9), +('D05', '01M112', 'GHM', 9), +('D05', '01M113', 'GHM', 9), +('D05', '01M114', 'GHM', 9), +('D05', '01M11T', 'GHM', 9), +('D05', '01M11V', 'GHM', 9), +('D05', '01M11W', 'GHM', 9), +('D05', '01M121', 'GHM', 9), +('D05', '01M122', 'GHM', 9), +('D05', '01M123', 'GHM', 9), +('D05', '01M124', 'GHM', 9), +('D05', '01M12T', 'GHM', 9), +('D05', '01M12V', 'GHM', 9), +('D05', '01M12W', 'GHM', 9), +('D05', '01M131', 'GHM', 9), +('D05', '01M132', 'GHM', 9), +('D05', '01M133', 'GHM', 9), +('D05', '01M134', 'GHM', 9), +('D05', '01M13Z', 'GHM', 9), +('D05', '01M151', 'GHM', 9), +('D05', '01M152', 'GHM', 9), +('D05', '01M153', 'GHM', 9), +('D05', '01M154', 'GHM', 9), +('D05', '01M15T', 'GHM', 9), +('D05', '01M15Z', 'GHM', 9), +('D05', '01M161', 'GHM', 9), +('D05', '01M162', 'GHM', 9), +('D05', '01M163', 'GHM', 9), +('D05', '01M164', 'GHM', 9), +('D05', '01M16T', 'GHM', 9), +('D05', '01M16Z', 'GHM', 9), +('D05', '01M171', 'GHM', 9), +('D05', '01M172', 'GHM', 9), +('D05', '01M173', 'GHM', 9), +('D05', '01M174', 'GHM', 9), +('D05', '01M17T', 'GHM', 9), +('D05', '01M17V', 'GHM', 9), +('D05', '01M17W', 'GHM', 9), +('D05', '01M181', 'GHM', 9), +('D05', '01M182', 'GHM', 9), +('D05', '01M183', 'GHM', 9), +('D05', '01M184', 'GHM', 9), +('D05', '01M18T', 'GHM', 9), +('D05', '01M18V', 'GHM', 9), +('D05', '01M18W', 'GHM', 9), +('D05', '01M191', 'GHM', 9), +('D05', '01M192', 'GHM', 9), +('D05', '01M193', 'GHM', 9), +('D05', '01M194', 'GHM', 9), +('D05', '01M19V', 'GHM', 9), +('D05', '01M19W', 'GHM', 9), +('D05', '01M201', 'GHM', 9), +('D05', '01M202', 'GHM', 9), +('D05', '01M203', 'GHM', 9), +('D05', '01M204', 'GHM', 9), +('D05', '01M20V', 'GHM', 9), +('D05', '01M20W', 'GHM', 9), +('D05', '01M221', 'GHM', 9), +('D05', '01M222', 'GHM', 9), +('D05', '01M223', 'GHM', 9), +('D05', '01M224', 'GHM', 9), +('D05', '01M22T', 'GHM', 9), +('D05', '01M22Z', 'GHM', 9), +('D05', '01M231', 'GHM', 9), +('D05', '01M232', 'GHM', 9), +('D05', '01M233', 'GHM', 9), +('D05', '01M234', 'GHM', 9), +('D05', '01M23Z', 'GHM', 9), +('D05', '01M241', 'GHM', 9), +('D05', '01M242', 'GHM', 9), +('D05', '01M243', 'GHM', 9), +('D05', '01M244', 'GHM', 9), +('D05', '01M24T', 'GHM', 9), +('D05', '01M24V', 'GHM', 9), +('D05', '01M24W', 'GHM', 9), +('D05', '01M251', 'GHM', 9), +('D05', '01M252', 'GHM', 9), +('D05', '01M253', 'GHM', 9), +('D05', '01M254', 'GHM', 9), +('D05', '01M25T', 'GHM', 9), +('D05', '01M25V', 'GHM', 9), +('D05', '01M25W', 'GHM', 9), +('D05', '01M261', 'GHM', 9), +('D05', '01M262', 'GHM', 9), +('D05', '01M263', 'GHM', 9), +('D05', '01M264', 'GHM', 9), +('D05', '01M26T', 'GHM', 9), +('D05', '01M271', 'GHM', 9), +('D05', '01M272', 'GHM', 9), +('D05', '01M273', 'GHM', 9), +('D05', '01M274', 'GHM', 9), +('D05', '01M27T', 'GHM', 9), +('D05', '01M281', 'GHM', 9), +('D05', '01M282', 'GHM', 9), +('D05', '01M283', 'GHM', 9), +('D05', '01M284', 'GHM', 9), +('D05', '01M28T', 'GHM', 9), +('D05', '01M291', 'GHM', 9), +('D05', '01M292', 'GHM', 9), +('D05', '01M293', 'GHM', 9), +('D05', '01M294', 'GHM', 9), +('D05', '01M301', 'GHM', 9), +('D05', '01M302', 'GHM', 9), +('D05', '01M303', 'GHM', 9), +('D05', '01M304', 'GHM', 9), +('D05', '01M30T', 'GHM', 9), +('D05', '01M311', 'GHM', 9), +('D05', '01M312', 'GHM', 9), +('D05', '01M313', 'GHM', 9), +('D05', '01M314', 'GHM', 9), +('D05', '01M31T', 'GHM', 9), +('D05', '01M32Z', 'GHM', 9), +('D05', '01M331', 'GHM', 9), +('D05', '01M332', 'GHM', 9), +('D05', '01M333', 'GHM', 9), +('D05', '01M334', 'GHM', 9), +('D05', '01M34T', 'GHM', 9), +('D05', '01M34Z', 'GHM', 9), +('D05', '01M35T', 'GHM', 9), +('D05', '01M35Z', 'GHM', 9), +('D05', '01M36E', 'GHM', 9), +('D05', '01M381', 'GHM', 9), +('D05', '01M382', 'GHM', 9), +('D05', '01M383', 'GHM', 9), +('D05', '01M384', 'GHM', 9), +('D05', '01M391', 'GHM', 9), +('D05', '01M392', 'GHM', 9), +('D05', '01M393', 'GHM', 9), +('D05', '01M394', 'GHM', 9), +('D05', '08C271', 'GHM', 9), +('D05', '08C272', 'GHM', 9), +('D05', '08C273', 'GHM', 9), +('D05', '08C274', 'GHM', 9), +('D05', '08C27V', 'GHM', 9), +('D05', '08C27W', 'GHM', 9), +('D05', '08C511', 'GHM', 9), +('D05', '08C512', 'GHM', 9), +('D05', '08C513', 'GHM', 9), +('D05', '08C514', 'GHM', 9), +('D05', '08C521', 'GHM', 9), +('D05', '08C522', 'GHM', 9), +('D05', '08C523', 'GHM', 9), +('D05', '08C524', 'GHM', 9), +('D05', '10C021', 'GHM', 9), +('D05', '10C022', 'GHM', 9), +('D05', '10C023', 'GHM', 9), +('D05', '10C024', 'GHM', 9), +('D05', '10C02Z', 'GHM', 9), +('D06', '01K021', 'GHM', 9), +('D06', '01K022', 'GHM', 9), +('D06', '01K023', 'GHM', 9), +('D06', '01K024', 'GHM', 9), +('D06', '01K02Z', 'GHM', 9), +('D06', '01K031', 'GHM', 9), +('D06', '01K032', 'GHM', 9), +('D06', '01K033', 'GHM', 9), +('D06', '01K034', 'GHM', 9), +('D06', '01K03Z', 'GHM', 9), +('D06', '01K071', 'GHM', 9), +('D06', '01K072', 'GHM', 9), +('D06', '01K073', 'GHM', 9), +('D06', '01K074', 'GHM', 9), +('D06', '05K03Z', 'GHM', 9), +('D06', '05K04Z', 'GHM', 9), +('D06', '05K051', 'GHM', 9), +('D06', '05K052', 'GHM', 9), +('D06', '05K053', 'GHM', 9), +('D06', '05K054', 'GHM', 9), +('D06', '05K05V', 'GHM', 9), +('D06', '05K05W', 'GHM', 9), +('D06', '05K061', 'GHM', 9), +('D06', '05K062', 'GHM', 9), +('D06', '05K063', 'GHM', 9), +('D06', '05K064', 'GHM', 9), +('D06', '05K06T', 'GHM', 9), +('D06', '05K06V', 'GHM', 9), +('D06', '05K06W', 'GHM', 9), +('D06', '05K07Z', 'GHM', 9), +('D06', '05K08Z', 'GHM', 9), +('D06', '05K09Z', 'GHM', 9), +('D06', '05K101', 'GHM', 9), +('D06', '05K102', 'GHM', 9), +('D06', '05K103', 'GHM', 9), +('D06', '05K104', 'GHM', 9), +('D06', '05K10J', 'GHM', 9), +('D06', '05K10Z', 'GHM', 9), +('D06', '05K111', 'GHM', 9), +('D06', '05K112', 'GHM', 9), +('D06', '05K113', 'GHM', 9), +('D06', '05K114', 'GHM', 9), +('D06', '05K11T', 'GHM', 9), +('D06', '05K11Z', 'GHM', 9), +('D06', '05K121', 'GHM', 9), +('D06', '05K122', 'GHM', 9), +('D06', '05K123', 'GHM', 9), +('D06', '05K124', 'GHM', 9), +('D06', '05K12Z', 'GHM', 9), +('D06', '05K131', 'GHM', 9), +('D06', '05K132', 'GHM', 9), +('D06', '05K133', 'GHM', 9), +('D06', '05K134', 'GHM', 9), +('D06', '05K13J', 'GHM', 9), +('D06', '05K13Z', 'GHM', 9), +('D06', '05K151', 'GHM', 9), +('D06', '05K152', 'GHM', 9), +('D06', '05K153', 'GHM', 9), +('D06', '05K154', 'GHM', 9), +('D06', '05K15J', 'GHM', 9), +('D06', '05K191', 'GHM', 9), +('D06', '05K192', 'GHM', 9), +('D06', '05K193', 'GHM', 9), +('D06', '05K194', 'GHM', 9), +('D06', '05K201', 'GHM', 9), +('D06', '05K202', 'GHM', 9), +('D06', '05K203', 'GHM', 9), +('D06', '05K204', 'GHM', 9), +('D06', '05K20T', 'GHM', 9), +('D06', '05K211', 'GHM', 9), +('D06', '05K212', 'GHM', 9), +('D06', '05K213', 'GHM', 9), +('D06', '05K214', 'GHM', 9), +('D06', '05K221', 'GHM', 9), +('D06', '05K222', 'GHM', 9), +('D06', '05K223', 'GHM', 9), +('D06', '05K224', 'GHM', 9), +('D06', '05K231', 'GHM', 9), +('D06', '05K232', 'GHM', 9), +('D06', '05K233', 'GHM', 9), +('D06', '05K234', 'GHM', 9), +('D06', '05K23J', 'GHM', 9), +('D06', '05K241', 'GHM', 9), +('D06', '05K242', 'GHM', 9), +('D06', '05K243', 'GHM', 9), +('D06', '05K244', 'GHM', 9), +('D06', '05K24J', 'GHM', 9), +('D06', '05K251', 'GHM', 9), +('D06', '05K252', 'GHM', 9), +('D06', '05K253', 'GHM', 9), +('D06', '05K254', 'GHM', 9), +('D06', '05K25J', 'GHM', 9), +('D06', '05K261', 'GHM', 9), +('D06', '05K262', 'GHM', 9), +('D06', '05K263', 'GHM', 9), +('D06', '05K264', 'GHM', 9), +('D06', '05K26J', 'GHM', 9), +('D06', '05M02E', 'GHM', 9), +('D06', '05M03Z', 'GHM', 9), +('D07', '01C061', 'GHM', 9), +('D07', '01C062', 'GHM', 9), +('D07', '01C063', 'GHM', 9), +('D07', '01C064', 'GHM', 9), +('D07', '01C06V', 'GHM', 9), +('D07', '01C06W', 'GHM', 9), +('D07', '05C021', 'GHM', 9), +('D07', '05C022', 'GHM', 9), +('D07', '05C023', 'GHM', 9), +('D07', '05C024', 'GHM', 9), +('D07', '05C02Z', 'GHM', 9), +('D07', '05C031', 'GHM', 9), +('D07', '05C032', 'GHM', 9), +('D07', '05C033', 'GHM', 9), +('D07', '05C034', 'GHM', 9), +('D07', '05C03V', 'GHM', 9), +('D07', '05C03W', 'GHM', 9), +('D07', '05C041', 'GHM', 9), +('D07', '05C042', 'GHM', 9), +('D07', '05C043', 'GHM', 9), +('D07', '05C044', 'GHM', 9), +('D07', '05C04V', 'GHM', 9), +('D07', '05C04W', 'GHM', 9), +('D07', '05C051', 'GHM', 9), +('D07', '05C052', 'GHM', 9), +('D07', '05C053', 'GHM', 9), +('D07', '05C054', 'GHM', 9), +('D07', '05C05V', 'GHM', 9), +('D07', '05C05W', 'GHM', 9), +('D07', '05C061', 'GHM', 9), +('D07', '05C062', 'GHM', 9), +('D07', '05C063', 'GHM', 9), +('D07', '05C064', 'GHM', 9), +('D07', '05C06V', 'GHM', 9), +('D07', '05C06W', 'GHM', 9), +('D07', '05C071', 'GHM', 9), +('D07', '05C072', 'GHM', 9), +('D07', '05C073', 'GHM', 9), +('D07', '05C074', 'GHM', 9), +('D07', '05C07Z', 'GHM', 9), +('D07', '05C081', 'GHM', 9), +('D07', '05C082', 'GHM', 9), +('D07', '05C083', 'GHM', 9), +('D07', '05C084', 'GHM', 9), +('D07', '05C08T', 'GHM', 9), +('D07', '05C08V', 'GHM', 9), +('D07', '05C08W', 'GHM', 9), +('D07', '05C091', 'GHM', 9), +('D07', '05C092', 'GHM', 9), +('D07', '05C093', 'GHM', 9), +('D07', '05C094', 'GHM', 9), +('D07', '05C09Z', 'GHM', 9), +('D07', '05C101', 'GHM', 9), +('D07', '05C102', 'GHM', 9), +('D07', '05C103', 'GHM', 9), +('D07', '05C104', 'GHM', 9), +('D07', '05C10V', 'GHM', 9), +('D07', '05C10W', 'GHM', 9), +('D07', '05C111', 'GHM', 9), +('D07', '05C112', 'GHM', 9), +('D07', '05C113', 'GHM', 9), +('D07', '05C114', 'GHM', 9), +('D07', '05C11J', 'GHM', 9), +('D07', '05C11V', 'GHM', 9), +('D07', '05C11W', 'GHM', 9), +('D07', '05C141', 'GHM', 9), +('D07', '05C142', 'GHM', 9), +('D07', '05C143', 'GHM', 9), +('D07', '05C144', 'GHM', 9), +('D07', '05C14J', 'GHM', 9), +('D07', '05C14Z', 'GHM', 9), +('D07', '05C151', 'GHM', 9), +('D07', '05C152', 'GHM', 9), +('D07', '05C153', 'GHM', 9), +('D07', '05C154', 'GHM', 9), +('D07', '05C15T', 'GHM', 9), +('D07', '05C15Z', 'GHM', 9), +('D07', '05C16Z', 'GHM', 9), +('D07', '05C171', 'GHM', 9), +('D07', '05C172', 'GHM', 9), +('D07', '05C173', 'GHM', 9), +('D07', '05C174', 'GHM', 9), +('D07', '05C17J', 'GHM', 9), +('D07', '05C17V', 'GHM', 9), +('D07', '05C17W', 'GHM', 9), +('D07', '05C191', 'GHM', 9), +('D07', '05C192', 'GHM', 9), +('D07', '05C193', 'GHM', 9), +('D07', '05C194', 'GHM', 9), +('D07', '05C19T', 'GHM', 9), +('D07', '05C19Z', 'GHM', 9), +('D07', '05C201', 'GHM', 9), +('D07', '05C202', 'GHM', 9), +('D07', '05C203', 'GHM', 9), +('D07', '05C204', 'GHM', 9), +('D07', '05C20Z', 'GHM', 9), +('D07', '05C211', 'GHM', 9), +('D07', '05C212', 'GHM', 9), +('D07', '05C213', 'GHM', 9), +('D07', '05C214', 'GHM', 9), +('D07', '05C21J', 'GHM', 9), +('D07', '05C221', 'GHM', 9), +('D07', '05C222', 'GHM', 9), +('D07', '05C223', 'GHM', 9), +('D07', '05C224', 'GHM', 9), +('D07', '05C22T', 'GHM', 9), +('D07', '05K14Z', 'GHM', 9), +('D07', '05K17J', 'GHM', 9), +('D07', '05K18J', 'GHM', 9), +('D07', '05M041', 'GHM', 9), +('D07', '05M042', 'GHM', 9), +('D07', '05M043', 'GHM', 9), +('D07', '05M044', 'GHM', 9), +('D07', '05M04T', 'GHM', 9), +('D07', '05M04V', 'GHM', 9), +('D07', '05M04W', 'GHM', 9), +('D07', '05M051', 'GHM', 9), +('D07', '05M052', 'GHM', 9), +('D07', '05M053', 'GHM', 9), +('D07', '05M054', 'GHM', 9), +('D07', '05M05T', 'GHM', 9), +('D07', '05M05V', 'GHM', 9), +('D07', '05M05W', 'GHM', 9), +('D07', '05M061', 'GHM', 9), +('D07', '05M062', 'GHM', 9), +('D07', '05M063', 'GHM', 9), +('D07', '05M064', 'GHM', 9), +('D07', '05M06T', 'GHM', 9), +('D07', '05M06V', 'GHM', 9), +('D07', '05M06W', 'GHM', 9), +('D07', '05M071', 'GHM', 9), +('D07', '05M072', 'GHM', 9), +('D07', '05M073', 'GHM', 9), +('D07', '05M074', 'GHM', 9), +('D07', '05M07T', 'GHM', 9), +('D07', '05M07V', 'GHM', 9), +('D07', '05M07W', 'GHM', 9), +('D07', '05M081', 'GHM', 9), +('D07', '05M082', 'GHM', 9), +('D07', '05M083', 'GHM', 9), +('D07', '05M084', 'GHM', 9), +('D07', '05M08T', 'GHM', 9), +('D07', '05M08V', 'GHM', 9), +('D07', '05M08W', 'GHM', 9), +('D07', '05M091', 'GHM', 9), +('D07', '05M092', 'GHM', 9), +('D07', '05M093', 'GHM', 9), +('D07', '05M094', 'GHM', 9), +('D07', '05M09T', 'GHM', 9), +('D07', '05M09V', 'GHM', 9), +('D07', '05M09W', 'GHM', 9), +('D07', '05M101', 'GHM', 9), +('D07', '05M102', 'GHM', 9), +('D07', '05M103', 'GHM', 9), +('D07', '05M104', 'GHM', 9), +('D07', '05M10T', 'GHM', 9), +('D07', '05M10Z', 'GHM', 9), +('D07', '05M111', 'GHM', 9), +('D07', '05M112', 'GHM', 9), +('D07', '05M113', 'GHM', 9), +('D07', '05M114', 'GHM', 9), +('D07', '05M11T', 'GHM', 9), +('D07', '05M11V', 'GHM', 9), +('D07', '05M11W', 'GHM', 9), +('D07', '05M121', 'GHM', 9), +('D07', '05M122', 'GHM', 9), +('D07', '05M123', 'GHM', 9), +('D07', '05M124', 'GHM', 9), +('D07', '05M12T', 'GHM', 9), +('D07', '05M12V', 'GHM', 9), +('D07', '05M12W', 'GHM', 9), +('D07', '05M131', 'GHM', 9), +('D07', '05M132', 'GHM', 9), +('D07', '05M133', 'GHM', 9), +('D07', '05M134', 'GHM', 9), +('D07', '05M13T', 'GHM', 9), +('D07', '05M13Z', 'GHM', 9), +('D07', '05M141', 'GHM', 9), +('D07', '05M142', 'GHM', 9), +('D07', '05M143', 'GHM', 9), +('D07', '05M144', 'GHM', 9), +('D07', '05M14Z', 'GHM', 9), +('D07', '05M151', 'GHM', 9), +('D07', '05M152', 'GHM', 9), +('D07', '05M153', 'GHM', 9), +('D07', '05M154', 'GHM', 9), +('D07', '05M15T', 'GHM', 9), +('D07', '05M15Z', 'GHM', 9), +('D07', '05M161', 'GHM', 9), +('D07', '05M162', 'GHM', 9), +('D07', '05M163', 'GHM', 9), +('D07', '05M164', 'GHM', 9), +('D07', '05M16T', 'GHM', 9), +('D07', '05M16V', 'GHM', 9), +('D07', '05M16W', 'GHM', 9), +('D07', '05M171', 'GHM', 9), +('D07', '05M172', 'GHM', 9), +('D07', '05M173', 'GHM', 9), +('D07', '05M174', 'GHM', 9), +('D07', '05M17T', 'GHM', 9), +('D07', '05M17V', 'GHM', 9), +('D07', '05M17W', 'GHM', 9), +('D07', '05M181', 'GHM', 9), +('D07', '05M182', 'GHM', 9), +('D07', '05M183', 'GHM', 9), +('D07', '05M184', 'GHM', 9), +('D07', '05M18T', 'GHM', 9), +('D07', '05M18Z', 'GHM', 9), +('D07', '05M191', 'GHM', 9), +('D07', '05M192', 'GHM', 9), +('D07', '05M193', 'GHM', 9), +('D07', '05M194', 'GHM', 9), +('D07', '05M20Z', 'GHM', 9), +('D07', '05M21E', 'GHM', 9), +('D07', '05M23T', 'GHM', 9), +('D07', '05M23Z', 'GHM', 9), +('D07', '11C091', 'GHM', 9), +('D07', '11C092', 'GHM', 9), +('D07', '11C093', 'GHM', 9), +('D07', '11C094', 'GHM', 9), +('D07', '11C09J', 'GHM', 9), +('D07', '11K07Z', 'GHM', 9), +('D09', '04C021', 'GHM', 9), +('D09', '04C022', 'GHM', 9), +('D09', '04C023', 'GHM', 9), +('D09', '04C024', 'GHM', 9), +('D09', '04C02V', 'GHM', 9), +('D09', '04C02W', 'GHM', 9), +('D09', '04C031', 'GHM', 9), +('D09', '04C032', 'GHM', 9), +('D09', '04C033', 'GHM', 9), +('D09', '04C034', 'GHM', 9), +('D09', '04C03V', 'GHM', 9), +('D09', '04C03W', 'GHM', 9), +('D09', '04C041', 'GHM', 9), +('D09', '04C042', 'GHM', 9), +('D09', '04C043', 'GHM', 9), +('D09', '04C044', 'GHM', 9), +('D09', '04K02J', 'GHM', 9), +('D09', '04M021', 'GHM', 9), +('D09', '04M022', 'GHM', 9), +('D09', '04M023', 'GHM', 9), +('D09', '04M024', 'GHM', 9), +('D09', '04M02T', 'GHM', 9), +('D09', '04M02V', 'GHM', 9), +('D09', '04M02W', 'GHM', 9), +('D09', '04M031', 'GHM', 9), +('D09', '04M032', 'GHM', 9), +('D09', '04M033', 'GHM', 9), +('D09', '04M034', 'GHM', 9), +('D09', '04M03T', 'GHM', 9), +('D09', '04M03V', 'GHM', 9), +('D09', '04M03W', 'GHM', 9), +('D09', '04M041', 'GHM', 9), +('D09', '04M042', 'GHM', 9), +('D09', '04M043', 'GHM', 9), +('D09', '04M044', 'GHM', 9), +('D09', '04M04Z', 'GHM', 9), +('D09', '04M051', 'GHM', 9), +('D09', '04M052', 'GHM', 9), +('D09', '04M053', 'GHM', 9), +('D09', '04M054', 'GHM', 9), +('D09', '04M05T', 'GHM', 9), +('D09', '04M05V', 'GHM', 9), +('D09', '04M05W', 'GHM', 9), +('D09', '04M061', 'GHM', 9), +('D09', '04M062', 'GHM', 9), +('D09', '04M063', 'GHM', 9), +('D09', '04M064', 'GHM', 9), +('D09', '04M06T', 'GHM', 9), +('D09', '04M06Z', 'GHM', 9), +('D09', '04M071', 'GHM', 9), +('D09', '04M072', 'GHM', 9), +('D09', '04M073', 'GHM', 9), +('D09', '04M074', 'GHM', 9), +('D09', '04M07T', 'GHM', 9), +('D09', '04M07V', 'GHM', 9), +('D09', '04M07W', 'GHM', 9), +('D09', '04M081', 'GHM', 9), +('D09', '04M082', 'GHM', 9), +('D09', '04M083', 'GHM', 9), +('D09', '04M084', 'GHM', 9), +('D09', '04M08T', 'GHM', 9), +('D09', '04M08V', 'GHM', 9), +('D09', '04M08W', 'GHM', 9), +('D09', '04M091', 'GHM', 9), +('D09', '04M092', 'GHM', 9), +('D09', '04M093', 'GHM', 9), +('D09', '04M094', 'GHM', 9), +('D09', '04M09T', 'GHM', 9), +('D09', '04M09V', 'GHM', 9), +('D09', '04M09W', 'GHM', 9), +('D09', '04M101', 'GHM', 9), +('D09', '04M102', 'GHM', 9), +('D09', '04M103', 'GHM', 9), +('D09', '04M104', 'GHM', 9), +('D09', '04M10T', 'GHM', 9), +('D09', '04M10V', 'GHM', 9), +('D09', '04M10W', 'GHM', 9), +('D09', '04M111', 'GHM', 9), +('D09', '04M112', 'GHM', 9), +('D09', '04M113', 'GHM', 9), +('D09', '04M114', 'GHM', 9), +('D09', '04M11V', 'GHM', 9), +('D09', '04M11W', 'GHM', 9), +('D09', '04M121', 'GHM', 9), +('D09', '04M122', 'GHM', 9), +('D09', '04M123', 'GHM', 9), +('D09', '04M124', 'GHM', 9), +('D09', '04M12T', 'GHM', 9), +('D09', '04M12V', 'GHM', 9), +('D09', '04M12W', 'GHM', 9), +('D09', '04M131', 'GHM', 9), +('D09', '04M132', 'GHM', 9), +('D09', '04M133', 'GHM', 9), +('D09', '04M134', 'GHM', 9), +('D09', '04M13T', 'GHM', 9), +('D09', '04M13Z', 'GHM', 9), +('D09', '04M141', 'GHM', 9), +('D09', '04M142', 'GHM', 9), +('D09', '04M143', 'GHM', 9), +('D09', '04M144', 'GHM', 9), +('D09', '04M14T', 'GHM', 9), +('D09', '04M14V', 'GHM', 9), +('D09', '04M14W', 'GHM', 9), +('D09', '04M151', 'GHM', 9), +('D09', '04M152', 'GHM', 9), +('D09', '04M153', 'GHM', 9), +('D09', '04M154', 'GHM', 9), +('D09', '04M15T', 'GHM', 9), +('D09', '04M15V', 'GHM', 9), +('D09', '04M15W', 'GHM', 9), +('D09', '04M161', 'GHM', 9), +('D09', '04M162', 'GHM', 9), +('D09', '04M163', 'GHM', 9), +('D09', '04M164', 'GHM', 9), +('D09', '04M16T', 'GHM', 9), +('D09', '04M16V', 'GHM', 9), +('D09', '04M16W', 'GHM', 9), +('D09', '04M171', 'GHM', 9), +('D09', '04M172', 'GHM', 9), +('D09', '04M173', 'GHM', 9), +('D09', '04M174', 'GHM', 9), +('D09', '04M17T', 'GHM', 9), +('D09', '04M17V', 'GHM', 9), +('D09', '04M17W', 'GHM', 9), +('D09', '04M181', 'GHM', 9), +('D09', '04M182', 'GHM', 9), +('D09', '04M183', 'GHM', 9), +('D09', '04M184', 'GHM', 9), +('D09', '04M18T', 'GHM', 9), +('D09', '04M191', 'GHM', 9), +('D09', '04M192', 'GHM', 9), +('D09', '04M193', 'GHM', 9), +('D09', '04M194', 'GHM', 9), +('D09', '04M19T', 'GHM', 9), +('D09', '04M201', 'GHM', 9), +('D09', '04M202', 'GHM', 9), +('D09', '04M203', 'GHM', 9), +('D09', '04M204', 'GHM', 9), +('D09', '04M20T', 'GHM', 9), +('D09', '04M211', 'GHM', 9), +('D09', '04M212', 'GHM', 9), +('D09', '04M213', 'GHM', 9), +('D09', '04M214', 'GHM', 9), +('D09', '04M22Z', 'GHM', 9), +('D09', '04M23T', 'GHM', 9), +('D09', '04M23Z', 'GHM', 9), +('D09', '04M24E', 'GHM', 9), +('D09', '04M251', 'GHM', 9), +('D09', '04M252', 'GHM', 9), +('D09', '04M253', 'GHM', 9), +('D09', '04M254', 'GHM', 9), +('D09', '04M25T', 'GHM', 9), +('D09', '04M261', 'GHM', 9), +('D09', '04M262', 'GHM', 9), +('D09', '04M263', 'GHM', 9), +('D09', '04M264', 'GHM', 9), +('D09', '04M26T', 'GHM', 9), +('D09', '04M271', 'GHM', 9), +('D09', '04M272', 'GHM', 9), +('D09', '04M273', 'GHM', 9), +('D09', '04M274', 'GHM', 9), +('D10', '03C03Z', 'GHM', 9), +('D10', '03C04Z', 'GHM', 9), +('D10', '03C051', 'GHM', 9), +('D10', '03C052', 'GHM', 9), +('D10', '03C053', 'GHM', 9), +('D10', '03C054', 'GHM', 9), +('D10', '03C05T', 'GHM', 9), +('D10', '03C05Z', 'GHM', 9), +('D10', '03C061', 'GHM', 9), +('D10', '03C062', 'GHM', 9), +('D10', '03C063', 'GHM', 9), +('D10', '03C064', 'GHM', 9), +('D10', '03C06J', 'GHM', 9), +('D10', '03C06Z', 'GHM', 9), +('D10', '03C071', 'GHM', 9), +('D10', '03C072', 'GHM', 9), +('D10', '03C073', 'GHM', 9), +('D10', '03C074', 'GHM', 9), +('D10', '03C07J', 'GHM', 9), +('D10', '03C07V', 'GHM', 9), +('D10', '03C07W', 'GHM', 9), +('D10', '03C091', 'GHM', 9), +('D10', '03C092', 'GHM', 9), +('D10', '03C093', 'GHM', 9), +('D10', '03C094', 'GHM', 9), +('D10', '03C09J', 'GHM', 9), +('D10', '03C09Z', 'GHM', 9), +('D10', '03C101', 'GHM', 9), +('D10', '03C102', 'GHM', 9), +('D10', '03C103', 'GHM', 9), +('D10', '03C104', 'GHM', 9), +('D10', '03C10Z', 'GHM', 9), +('D10', '03C111', 'GHM', 9), +('D10', '03C112', 'GHM', 9), +('D10', '03C113', 'GHM', 9), +('D10', '03C114', 'GHM', 9), +('D10', '03C11Z', 'GHM', 9), +('D10', '03C121', 'GHM', 9), +('D10', '03C122', 'GHM', 9), +('D10', '03C123', 'GHM', 9), +('D10', '03C124', 'GHM', 9), +('D10', '03C12Z', 'GHM', 9), +('D10', '03C131', 'GHM', 9), +('D10', '03C132', 'GHM', 9), +('D10', '03C133', 'GHM', 9), +('D10', '03C134', 'GHM', 9), +('D10', '03C13Z', 'GHM', 9), +('D10', '03C141', 'GHM', 9), +('D10', '03C142', 'GHM', 9), +('D10', '03C143', 'GHM', 9), +('D10', '03C144', 'GHM', 9), +('D10', '03C14J', 'GHM', 9), +('D10', '03C14Z', 'GHM', 9), +('D10', '03C151', 'GHM', 9), +('D10', '03C152', 'GHM', 9), +('D10', '03C153', 'GHM', 9), +('D10', '03C154', 'GHM', 9), +('D10', '03C15J', 'GHM', 9), +('D10', '03C15Z', 'GHM', 9), +('D10', '03C161', 'GHM', 9), +('D10', '03C162', 'GHM', 9), +('D10', '03C163', 'GHM', 9), +('D10', '03C164', 'GHM', 9), +('D10', '03C16J', 'GHM', 9), +('D10', '03C16V', 'GHM', 9), +('D10', '03C16W', 'GHM', 9), +('D10', '03C171', 'GHM', 9), +('D10', '03C172', 'GHM', 9), +('D10', '03C173', 'GHM', 9), +('D10', '03C174', 'GHM', 9), +('D10', '03C17J', 'GHM', 9), +('D10', '03C17Z', 'GHM', 9), +('D10', '03C181', 'GHM', 9), +('D10', '03C182', 'GHM', 9), +('D10', '03C183', 'GHM', 9), +('D10', '03C184', 'GHM', 9), +('D10', '03C18Z', 'GHM', 9), +('D10', '03C191', 'GHM', 9), +('D10', '03C192', 'GHM', 9), +('D10', '03C193', 'GHM', 9), +('D10', '03C194', 'GHM', 9), +('D10', '03C19J', 'GHM', 9), +('D10', '03C19Z', 'GHM', 9), +('D10', '03C201', 'GHM', 9), +('D10', '03C202', 'GHM', 9), +('D10', '03C203', 'GHM', 9), +('D10', '03C204', 'GHM', 9), +('D10', '03C20J', 'GHM', 9), +('D10', '03C20Z', 'GHM', 9), +('D10', '03C211', 'GHM', 9), +('D10', '03C212', 'GHM', 9), +('D10', '03C213', 'GHM', 9), +('D10', '03C214', 'GHM', 9), +('D10', '03C21J', 'GHM', 9), +('D10', '03C21Z', 'GHM', 9), +('D10', '03C22J', 'GHM', 9), +('D10', '03C241', 'GHM', 9), +('D10', '03C242', 'GHM', 9), +('D10', '03C243', 'GHM', 9), +('D10', '03C244', 'GHM', 9), +('D10', '03C24J', 'GHM', 9), +('D10', '03C251', 'GHM', 9), +('D10', '03C252', 'GHM', 9), +('D10', '03C253', 'GHM', 9), +('D10', '03C254', 'GHM', 9), +('D10', '03C261', 'GHM', 9), +('D10', '03C262', 'GHM', 9), +('D10', '03C263', 'GHM', 9), +('D10', '03C264', 'GHM', 9), +('D10', '03C27J', 'GHM', 9), +('D10', '03C28J', 'GHM', 9), +('D10', '03C291', 'GHM', 9), +('D10', '03C292', 'GHM', 9), +('D10', '03C293', 'GHM', 9), +('D10', '03C294', 'GHM', 9), +('D10', '03C29J', 'GHM', 9), +('D10', '03C301', 'GHM', 9), +('D10', '03C302', 'GHM', 9), +('D10', '03C303', 'GHM', 9), +('D10', '03C304', 'GHM', 9), +('D10', '03C30J', 'GHM', 9), +('D10', '03K021', 'GHM', 9), +('D10', '03K022', 'GHM', 9), +('D10', '03K023', 'GHM', 9), +('D10', '03K024', 'GHM', 9), +('D10', '03K02J', 'GHM', 9), +('D10', '03K02Z', 'GHM', 9), +('D10', '03K03J', 'GHM', 9), +('D10', '03K04J', 'GHM', 9), +('D10', '03M021', 'GHM', 9), +('D10', '03M022', 'GHM', 9), +('D10', '03M023', 'GHM', 9), +('D10', '03M024', 'GHM', 9), +('D10', '03M02T', 'GHM', 9), +('D10', '03M02Z', 'GHM', 9), +('D10', '03M031', 'GHM', 9), +('D10', '03M032', 'GHM', 9), +('D10', '03M033', 'GHM', 9), +('D10', '03M034', 'GHM', 9), +('D10', '03M03T', 'GHM', 9), +('D10', '03M03Z', 'GHM', 9), +('D10', '03M041', 'GHM', 9), +('D10', '03M042', 'GHM', 9), +('D10', '03M043', 'GHM', 9), +('D10', '03M044', 'GHM', 9), +('D10', '03M04T', 'GHM', 9), +('D10', '03M04V', 'GHM', 9), +('D10', '03M04W', 'GHM', 9), +('D10', '03M051', 'GHM', 9), +('D10', '03M052', 'GHM', 9), +('D10', '03M053', 'GHM', 9), +('D10', '03M054', 'GHM', 9), +('D10', '03M05T', 'GHM', 9), +('D10', '03M05Z', 'GHM', 9), +('D10', '03M061', 'GHM', 9), +('D10', '03M062', 'GHM', 9), +('D10', '03M063', 'GHM', 9), +('D10', '03M064', 'GHM', 9), +('D10', '03M06T', 'GHM', 9), +('D10', '03M06Z', 'GHM', 9), +('D10', '03M071', 'GHM', 9), +('D10', '03M072', 'GHM', 9), +('D10', '03M073', 'GHM', 9), +('D10', '03M074', 'GHM', 9), +('D10', '03M07T', 'GHM', 9), +('D10', '03M07V', 'GHM', 9), +('D10', '03M07W', 'GHM', 9), +('D10', '03M081', 'GHM', 9), +('D10', '03M082', 'GHM', 9), +('D10', '03M083', 'GHM', 9), +('D10', '03M084', 'GHM', 9), +('D10', '03M08T', 'GHM', 9), +('D10', '03M08Z', 'GHM', 9), +('D10', '03M091', 'GHM', 9), +('D10', '03M092', 'GHM', 9), +('D10', '03M093', 'GHM', 9), +('D10', '03M094', 'GHM', 9), +('D10', '03M09T', 'GHM', 9), +('D10', '03M09V', 'GHM', 9), +('D10', '03M09W', 'GHM', 9), +('D10', '03M101', 'GHM', 9), +('D10', '03M102', 'GHM', 9), +('D10', '03M103', 'GHM', 9), +('D10', '03M104', 'GHM', 9), +('D10', '03M10T', 'GHM', 9), +('D10', '03M10Z', 'GHM', 9), +('D10', '03M111', 'GHM', 9), +('D10', '03M112', 'GHM', 9), +('D10', '03M113', 'GHM', 9), +('D10', '03M114', 'GHM', 9), +('D10', '03M11T', 'GHM', 9), +('D10', '03M11V', 'GHM', 9), +('D10', '03M11W', 'GHM', 9), +('D10', '03M121', 'GHM', 9), +('D10', '03M122', 'GHM', 9), +('D10', '03M123', 'GHM', 9), +('D10', '03M124', 'GHM', 9), +('D10', '03M131', 'GHM', 9), +('D10', '03M132', 'GHM', 9), +('D10', '03M133', 'GHM', 9), +('D10', '03M134', 'GHM', 9), +('D10', '03M14Z', 'GHM', 9), +('D10', '03M15T', 'GHM', 9), +('D10', '03M15Z', 'GHM', 9), +('D10', '08C281', 'GHM', 9), +('D10', '08C282', 'GHM', 9), +('D10', '08C283', 'GHM', 9), +('D10', '08C284', 'GHM', 9), +('D10', '08C28J', 'GHM', 9), +('D10', '08C28Z', 'GHM', 9), +('D11', '02C021', 'GHM', 9), +('D11', '02C022', 'GHM', 9), +('D11', '02C023', 'GHM', 9), +('D11', '02C024', 'GHM', 9), +('D11', '02C02J', 'GHM', 9), +('D11', '02C02V', 'GHM', 9), +('D11', '02C02W', 'GHM', 9), +('D11', '02C031', 'GHM', 9), +('D11', '02C032', 'GHM', 9), +('D11', '02C033', 'GHM', 9), +('D11', '02C034', 'GHM', 9), +('D11', '02C03J', 'GHM', 9), +('D11', '02C03Z', 'GHM', 9), +('D11', '02C04Z', 'GHM', 9), +('D11', '02C051', 'GHM', 9), +('D11', '02C052', 'GHM', 9), +('D11', '02C053', 'GHM', 9), +('D11', '02C054', 'GHM', 9), +('D11', '02C05J', 'GHM', 9), +('D11', '02C05Z', 'GHM', 9), +('D11', '02C061', 'GHM', 9), +('D11', '02C062', 'GHM', 9), +('D11', '02C063', 'GHM', 9), +('D11', '02C064', 'GHM', 9), +('D11', '02C06J', 'GHM', 9), +('D11', '02C06Z', 'GHM', 9), +('D11', '02C071', 'GHM', 9), +('D11', '02C072', 'GHM', 9), +('D11', '02C073', 'GHM', 9), +('D11', '02C074', 'GHM', 9), +('D11', '02C07J', 'GHM', 9), +('D11', '02C07Z', 'GHM', 9), +('D11', '02C081', 'GHM', 9), +('D11', '02C082', 'GHM', 9), +('D11', '02C083', 'GHM', 9), +('D11', '02C084', 'GHM', 9), +('D11', '02C08J', 'GHM', 9), +('D11', '02C08V', 'GHM', 9), +('D11', '02C08W', 'GHM', 9), +('D11', '02C091', 'GHM', 9), +('D11', '02C092', 'GHM', 9), +('D11', '02C093', 'GHM', 9), +('D11', '02C094', 'GHM', 9), +('D11', '02C09J', 'GHM', 9), +('D11', '02C09Z', 'GHM', 9), +('D11', '02C101', 'GHM', 9), +('D11', '02C102', 'GHM', 9), +('D11', '02C103', 'GHM', 9), +('D11', '02C104', 'GHM', 9), +('D11', '02C10J', 'GHM', 9), +('D11', '02C111', 'GHM', 9), +('D11', '02C112', 'GHM', 9), +('D11', '02C113', 'GHM', 9), +('D11', '02C114', 'GHM', 9), +('D11', '02C11J', 'GHM', 9), +('D11', '02C121', 'GHM', 9), +('D11', '02C122', 'GHM', 9), +('D11', '02C123', 'GHM', 9), +('D11', '02C124', 'GHM', 9), +('D11', '02C12J', 'GHM', 9), +('D11', '02C131', 'GHM', 9), +('D11', '02C132', 'GHM', 9), +('D11', '02C133', 'GHM', 9), +('D11', '02C134', 'GHM', 9), +('D11', '02C13J', 'GHM', 9), +('D11', '02M021', 'GHM', 9), +('D11', '02M022', 'GHM', 9), +('D11', '02M023', 'GHM', 9), +('D11', '02M024', 'GHM', 9), +('D11', '02M02Z', 'GHM', 9), +('D11', '02M031', 'GHM', 9), +('D11', '02M032', 'GHM', 9), +('D11', '02M033', 'GHM', 9), +('D11', '02M034', 'GHM', 9), +('D11', '02M03Z', 'GHM', 9), +('D11', '02M041', 'GHM', 9), +('D11', '02M042', 'GHM', 9), +('D11', '02M043', 'GHM', 9), +('D11', '02M044', 'GHM', 9), +('D11', '02M04T', 'GHM', 9), +('D11', '02M04Z', 'GHM', 9), +('D11', '02M051', 'GHM', 9), +('D11', '02M052', 'GHM', 9), +('D11', '02M053', 'GHM', 9), +('D11', '02M054', 'GHM', 9), +('D11', '02M05T', 'GHM', 9), +('D11', '02M05Z', 'GHM', 9), +('D11', '02M071', 'GHM', 9), +('D11', '02M072', 'GHM', 9), +('D11', '02M073', 'GHM', 9), +('D11', '02M074', 'GHM', 9), +('D11', '02M07T', 'GHM', 9), +('D11', '02M081', 'GHM', 9), +('D11', '02M082', 'GHM', 9), +('D11', '02M083', 'GHM', 9), +('D11', '02M084', 'GHM', 9), +('D11', '02M08T', 'GHM', 9), +('D11', '02M09Z', 'GHM', 9), +('D11', '02M10T', 'GHM', 9), +('D11', '02M10Z', 'GHM', 9), +('D12', '09C041', 'GHM', 9), +('D12', '09C042', 'GHM', 9), +('D12', '09C043', 'GHM', 9), +('D12', '09C044', 'GHM', 9), +('D12', '09C04V', 'GHM', 9), +('D12', '09C04W', 'GHM', 9), +('D12', '09C051', 'GHM', 9), +('D12', '09C052', 'GHM', 9), +('D12', '09C053', 'GHM', 9), +('D12', '09C054', 'GHM', 9), +('D12', '09C05J', 'GHM', 9), +('D12', '09C05V', 'GHM', 9), +('D12', '09C05W', 'GHM', 9), +('D12', '09C061', 'GHM', 9), +('D12', '09C062', 'GHM', 9), +('D12', '09C063', 'GHM', 9), +('D12', '09C064', 'GHM', 9), +('D12', '09C06T', 'GHM', 9), +('D12', '09C06Z', 'GHM', 9), +('D12', '09C071', 'GHM', 9), +('D12', '09C072', 'GHM', 9), +('D12', '09C073', 'GHM', 9), +('D12', '09C074', 'GHM', 9), +('D12', '09C07J', 'GHM', 9), +('D12', '09C07Z', 'GHM', 9), +('D12', '09C111', 'GHM', 9), +('D12', '09C112', 'GHM', 9), +('D12', '09C113', 'GHM', 9), +('D12', '09C114', 'GHM', 9), +('D12', '09M091', 'GHM', 9), +('D12', '09M092', 'GHM', 9), +('D12', '09M093', 'GHM', 9), +('D12', '09M094', 'GHM', 9), +('D12', '09M09T', 'GHM', 9), +('D12', '09M09Z', 'GHM', 9), +('D12', '09M101', 'GHM', 9), +('D12', '09M102', 'GHM', 9), +('D12', '09M103', 'GHM', 9), +('D12', '09M104', 'GHM', 9), +('D12', '09M10T', 'GHM', 9), +('D12', '09M10V', 'GHM', 9), +('D12', '09M10W', 'GHM', 9), +('D12', '09M13Z', 'GHM', 9), +('D12', '09M15Z', 'GHM', 9), +('D12', '13C031', 'GHM', 9), +('D12', '13C032', 'GHM', 9), +('D12', '13C033', 'GHM', 9), +('D12', '13C034', 'GHM', 9), +('D12', '13C03V', 'GHM', 9), +('D12', '13C03W', 'GHM', 9), +('D12', '13C041', 'GHM', 9), +('D12', '13C042', 'GHM', 9), +('D12', '13C043', 'GHM', 9), +('D12', '13C044', 'GHM', 9), +('D12', '13C04J', 'GHM', 9), +('D12', '13C04V', 'GHM', 9), +('D12', '13C04W', 'GHM', 9), +('D12', '13C051', 'GHM', 9), +('D12', '13C052', 'GHM', 9), +('D12', '13C053', 'GHM', 9), +('D12', '13C054', 'GHM', 9), +('D12', '13C05Z', 'GHM', 9), +('D12', '13C061', 'GHM', 9), +('D12', '13C062', 'GHM', 9), +('D12', '13C063', 'GHM', 9), +('D12', '13C064', 'GHM', 9), +('D12', '13C06J', 'GHM', 9), +('D12', '13C06Z', 'GHM', 9), +('D12', '13C071', 'GHM', 9), +('D12', '13C072', 'GHM', 9), +('D12', '13C073', 'GHM', 9), +('D12', '13C074', 'GHM', 9), +('D12', '13C07J', 'GHM', 9), +('D12', '13C07V', 'GHM', 9), +('D12', '13C07W', 'GHM', 9), +('D12', '13C081', 'GHM', 9), +('D12', '13C082', 'GHM', 9), +('D12', '13C083', 'GHM', 9), +('D12', '13C084', 'GHM', 9), +('D12', '13C08J', 'GHM', 9), +('D12', '13C08V', 'GHM', 9), +('D12', '13C08W', 'GHM', 9), +('D12', '13C091', 'GHM', 9), +('D12', '13C092', 'GHM', 9), +('D12', '13C093', 'GHM', 9), +('D12', '13C094', 'GHM', 9), +('D12', '13C09J', 'GHM', 9), +('D12', '13C09T', 'GHM', 9), +('D12', '13C09Z', 'GHM', 9), +('D12', '13C101', 'GHM', 9), +('D12', '13C102', 'GHM', 9), +('D12', '13C103', 'GHM', 9), +('D12', '13C104', 'GHM', 9), +('D12', '13C10J', 'GHM', 9), +('D12', '13C10T', 'GHM', 9), +('D12', '13C10Z', 'GHM', 9), +('D12', '13C111', 'GHM', 9), +('D12', '13C112', 'GHM', 9), +('D12', '13C113', 'GHM', 9), +('D12', '13C114', 'GHM', 9), +('D12', '13C11J', 'GHM', 9), +('D12', '13C11Z', 'GHM', 9), +('D12', '13C121', 'GHM', 9), +('D12', '13C122', 'GHM', 9), +('D12', '13C123', 'GHM', 9), +('D12', '13C124', 'GHM', 9), +('D12', '13C12J', 'GHM', 9), +('D12', '13C12Z', 'GHM', 9), +('D12', '13C131', 'GHM', 9), +('D12', '13C132', 'GHM', 9), +('D12', '13C133', 'GHM', 9), +('D12', '13C134', 'GHM', 9), +('D12', '13C13T', 'GHM', 9), +('D12', '13C13Z', 'GHM', 9), +('D12', '13C141', 'GHM', 9), +('D12', '13C142', 'GHM', 9), +('D12', '13C143', 'GHM', 9), +('D12', '13C144', 'GHM', 9), +('D12', '13C14V', 'GHM', 9), +('D12', '13C14W', 'GHM', 9), +('D12', '13C151', 'GHM', 9), +('D12', '13C152', 'GHM', 9), +('D12', '13C153', 'GHM', 9), +('D12', '13C154', 'GHM', 9), +('D12', '13C15V', 'GHM', 9), +('D12', '13C15W', 'GHM', 9), +('D12', '13C16J', 'GHM', 9), +('D12', '13C171', 'GHM', 9), +('D12', '13C172', 'GHM', 9), +('D12', '13C173', 'GHM', 9), +('D12', '13C174', 'GHM', 9), +('D12', '13C17J', 'GHM', 9), +('D12', '13C181', 'GHM', 9), +('D12', '13C182', 'GHM', 9), +('D12', '13C183', 'GHM', 9), +('D12', '13C184', 'GHM', 9), +('D12', '13C191', 'GHM', 9), +('D12', '13C192', 'GHM', 9), +('D12', '13C193', 'GHM', 9), +('D12', '13C194', 'GHM', 9), +('D12', '13C19J', 'GHM', 9), +('D12', '13C201', 'GHM', 9), +('D12', '13C202', 'GHM', 9), +('D12', '13C203', 'GHM', 9), +('D12', '13C204', 'GHM', 9), +('D12', '13C20J', 'GHM', 9), +('D12', '13M02Z', 'GHM', 9), +('D12', '13M031', 'GHM', 9), +('D12', '13M032', 'GHM', 9), +('D12', '13M033', 'GHM', 9), +('D12', '13M034', 'GHM', 9), +('D12', '13M03T', 'GHM', 9), +('D12', '13M03V', 'GHM', 9), +('D12', '13M03W', 'GHM', 9), +('D12', '13M041', 'GHM', 9), +('D12', '13M042', 'GHM', 9), +('D12', '13M043', 'GHM', 9), +('D12', '13M044', 'GHM', 9), +('D12', '13M04T', 'GHM', 9), +('D12', '13M04V', 'GHM', 9), +('D12', '13M04W', 'GHM', 9), +('D12', '13M051', 'GHM', 9), +('D12', '13M052', 'GHM', 9), +('D12', '13M053', 'GHM', 9), +('D12', '13M054', 'GHM', 9), +('D12', '13M061', 'GHM', 9), +('D12', '13M062', 'GHM', 9), +('D12', '13M063', 'GHM', 9), +('D12', '13M064', 'GHM', 9), +('D12', '13M06T', 'GHM', 9), +('D12', '13M071', 'GHM', 9), +('D12', '13M072', 'GHM', 9), +('D12', '13M073', 'GHM', 9), +('D12', '13M074', 'GHM', 9), +('D12', '13M081', 'GHM', 9), +('D12', '13M082', 'GHM', 9), +('D12', '13M083', 'GHM', 9), +('D12', '13M084', 'GHM', 9), +('D12', '13M09Z', 'GHM', 9), +('D12', '13M10Z', 'GHM', 9), +('D13', '14C02A', 'GHM', 9), +('D13', '14C02B', 'GHM', 9), +('D13', '14C02C', 'GHM', 9), +('D13', '14C03A', 'GHM', 9), +('D13', '14C03B', 'GHM', 9), +('D13', '14C03C', 'GHM', 9), +('D13', '14C03D', 'GHM', 9), +('D13', '14C03Z', 'GHM', 9), +('D13', '14C04T', 'GHM', 9), +('D13', '14C04Z', 'GHM', 9), +('D13', '14C05J', 'GHM', 9), +('D13', '14C05Z', 'GHM', 9), +('D13', '14C06A', 'GHM', 9), +('D13', '14C06B', 'GHM', 9), +('D13', '14C06C', 'GHM', 9), +('D13', '14C06D', 'GHM', 9), +('D13', '14C07A', 'GHM', 9), +('D13', '14C07B', 'GHM', 9), +('D13', '14C07C', 'GHM', 9), +('D13', '14C07D', 'GHM', 9), +('D13', '14C08A', 'GHM', 9), +('D13', '14C08B', 'GHM', 9), +('D13', '14C08C', 'GHM', 9), +('D13', '14C08D', 'GHM', 9), +('D13', '14C09A', 'GHM', 9), +('D13', '14C09B', 'GHM', 9), +('D13', '14C10T', 'GHM', 9), +('D13', '14C10Z', 'GHM', 9), +('D13', '14M02A', 'GHM', 9), +('D13', '14M02B', 'GHM', 9), +('D13', '14M02T', 'GHM', 9), +('D13', '14M02Z', 'GHM', 9), +('D13', '14M03A', 'GHM', 9), +('D13', '14M03B', 'GHM', 9), +('D13', '14M03C', 'GHM', 9), +('D13', '14M03D', 'GHM', 9), +('D13', '14M03T', 'GHM', 9), +('D13', '14Z02A', 'GHM', 9), +('D13', '14Z02B', 'GHM', 9), +('D13', '14Z02C', 'GHM', 9), +('D13', '14Z02T', 'GHM', 9), +('D13', '14Z03A', 'GHM', 9), +('D13', '14Z03B', 'GHM', 9), +('D13', '14Z03T', 'GHM', 9), +('D13', '14Z04T', 'GHM', 9), +('D13', '14Z04Z', 'GHM', 9), +('D13', '14Z05Z', 'GHM', 9), +('D13', '14Z06T', 'GHM', 9), +('D13', '14Z06Z', 'GHM', 9), +('D13', '14Z07Z', 'GHM', 9), +('D13', '14Z08Z', 'GHM', 9), +('D13', '14Z09Z', 'GHM', 9), +('D13', '14Z10A', 'GHM', 9), +('D13', '14Z10B', 'GHM', 9), +('D13', '14Z10T', 'GHM', 9), +('D13', '14Z11A', 'GHM', 9), +('D13', '14Z11B', 'GHM', 9), +('D13', '14Z12A', 'GHM', 9), +('D13', '14Z12B', 'GHM', 9), +('D13', '14Z13A', 'GHM', 9), +('D13', '14Z13B', 'GHM', 9), +('D13', '14Z13C', 'GHM', 9), +('D13', '14Z13D', 'GHM', 9), +('D13', '14Z13T', 'GHM', 9), +('D13', '14Z14A', 'GHM', 9), +('D13', '14Z14B', 'GHM', 9), +('D13', '14Z14C', 'GHM', 9), +('D13', '14Z14D', 'GHM', 9), +('D13', '14Z14T', 'GHM', 9), +('D13', '14Z15Z', 'GHM', 9), +('D13', '14Z16T', 'GHM', 9), +('D13', '14Z16Z', 'GHM', 9), +('D14', '15C02A', 'GHM', 9), +('D14', '15C02B', 'GHM', 9), +('D14', '15C02Z', 'GHM', 9), +('D14', '15C03A', 'GHM', 9), +('D14', '15C03B', 'GHM', 9), +('D14', '15C03Z', 'GHM', 9), +('D14', '15C04A', 'GHM', 9), +('D14', '15C04B', 'GHM', 9), +('D14', '15C04Z', 'GHM', 9), +('D14', '15C05A', 'GHM', 9), +('D14', '15C05B', 'GHM', 9), +('D14', '15C05Z', 'GHM', 9), +('D14', '15C06A', 'GHM', 9), +('D14', '15C06B', 'GHM', 9), +('D14', '15C06Z', 'GHM', 9), +('D14', '15M02Z', 'GHM', 9), +('D14', '15M03E', 'GHM', 9), +('D14', '15M04E', 'GHM', 9), +('D14', '15M05A', 'GHM', 9), +('D14', '15M05B', 'GHM', 9), +('D14', '15M05C', 'GHM', 9), +('D14', '15M05D', 'GHM', 9), +('D14', '15M06A', 'GHM', 9), +('D14', '15M06B', 'GHM', 9), +('D14', '15M06C', 'GHM', 9), +('D14', '15M06D', 'GHM', 9), +('D14', '15M07A', 'GHM', 9), +('D14', '15M07B', 'GHM', 9), +('D14', '15M07C', 'GHM', 9), +('D14', '15M08A', 'GHM', 9), +('D14', '15M08B', 'GHM', 9), +('D14', '15M08C', 'GHM', 9), +('D14', '15M09A', 'GHM', 9), +('D14', '15M09B', 'GHM', 9), +('D14', '15M09C', 'GHM', 9), +('D14', '15M10A', 'GHM', 9), +('D14', '15M10B', 'GHM', 9), +('D14', '15M10C', 'GHM', 9), +('D14', '15M11A', 'GHM', 9), +('D14', '15M11B', 'GHM', 9), +('D14', '15M11C', 'GHM', 9), +('D14', '15M12A', 'GHM', 9), +('D14', '15M12B', 'GHM', 9), +('D14', '15M13A', 'GHM', 9), +('D14', '15M13B', 'GHM', 9), +('D14', '15M14A', 'GHM', 9), +('D14', '15M14B', 'GHM', 9), +('D14', '15Z02T', 'GHM', 9), +('D14', '15Z02Z', 'GHM', 9), +('D14', '15Z03Z', 'GHM', 9), +('D14', '15Z04E', 'GHM', 9), +('D14', '15Z05A', 'GHM', 9), +('D14', '15Z05B', 'GHM', 9), +('D14', '15Z05C', 'GHM', 9), +('D14', '15Z05D', 'GHM', 9), +('D14', '15Z06A', 'GHM', 9), +('D14', '15Z06B', 'GHM', 9), +('D14', '15Z06C', 'GHM', 9), +('D14', '15Z06D', 'GHM', 9), +('D14', '15Z07A', 'GHM', 9), +('D14', '15Z07B', 'GHM', 9), +('D14', '15Z07C', 'GHM', 9), +('D14', '15Z08A', 'GHM', 9), +('D14', '15Z08E', 'GHM', 9), +('D14', '15Z08Z', 'GHM', 9), +('D14', '15Z09A', 'GHM', 9), +('D14', '15Z09E', 'GHM', 9), +('D14', '15Z09Z', 'GHM', 9), +('D14', '15Z10E', 'GHM', 9), +('D15', '10C031', 'GHM', 9), +('D15', '10C032', 'GHM', 9), +('D15', '10C033', 'GHM', 9), +('D15', '10C034', 'GHM', 9), +('D15', '10C03Z', 'GHM', 9), +('D15', '11C021', 'GHM', 9), +('D15', '11C022', 'GHM', 9), +('D15', '11C023', 'GHM', 9), +('D15', '11C024', 'GHM', 9), +('D15', '11C02V', 'GHM', 9), +('D15', '11C02W', 'GHM', 9), +('D15', '11C031', 'GHM', 9), +('D15', '11C032', 'GHM', 9), +('D15', '11C033', 'GHM', 9), +('D15', '11C034', 'GHM', 9), +('D15', '11C03V', 'GHM', 9), +('D15', '11C03W', 'GHM', 9), +('D15', '11C041', 'GHM', 9), +('D15', '11C042', 'GHM', 9), +('D15', '11C043', 'GHM', 9), +('D15', '11C044', 'GHM', 9), +('D15', '11C04J', 'GHM', 9), +('D15', '11C04Z', 'GHM', 9), +('D15', '11C051', 'GHM', 9), +('D15', '11C052', 'GHM', 9), +('D15', '11C053', 'GHM', 9), +('D15', '11C054', 'GHM', 9), +('D15', '11C05J', 'GHM', 9), +('D15', '11C05V', 'GHM', 9), +('D15', '11C05W', 'GHM', 9), +('D15', '11C061', 'GHM', 9), +('D15', '11C062', 'GHM', 9), +('D15', '11C063', 'GHM', 9), +('D15', '11C064', 'GHM', 9), +('D15', '11C06Z', 'GHM', 9), +('D15', '11C071', 'GHM', 9), +('D15', '11C072', 'GHM', 9), +('D15', '11C073', 'GHM', 9), +('D15', '11C074', 'GHM', 9), +('D15', '11C07J', 'GHM', 9), +('D15', '11C07Z', 'GHM', 9), +('D15', '11C081', 'GHM', 9), +('D15', '11C082', 'GHM', 9), +('D15', '11C083', 'GHM', 9), +('D15', '11C084', 'GHM', 9), +('D15', '11C08T', 'GHM', 9), +('D15', '11C08V', 'GHM', 9), +('D15', '11C08W', 'GHM', 9), +('D15', '11C101', 'GHM', 9), +('D15', '11C102', 'GHM', 9), +('D15', '11C103', 'GHM', 9), +('D15', '11C104', 'GHM', 9), +('D15', '11C10J', 'GHM', 9), +('D15', '11C111', 'GHM', 9), +('D15', '11C112', 'GHM', 9), +('D15', '11C113', 'GHM', 9), +('D15', '11C114', 'GHM', 9), +('D15', '11C11J', 'GHM', 9), +('D15', '11C121', 'GHM', 9), +('D15', '11C122', 'GHM', 9), +('D15', '11C123', 'GHM', 9), +('D15', '11C124', 'GHM', 9), +('D15', '11C12J', 'GHM', 9), +('D15', '11C131', 'GHM', 9), +('D15', '11C132', 'GHM', 9), +('D15', '11C133', 'GHM', 9), +('D15', '11C134', 'GHM', 9), +('D15', '11C13J', 'GHM', 9), +('D15', '11K021', 'GHM', 9), +('D15', '11K022', 'GHM', 9), +('D15', '11K023', 'GHM', 9), +('D15', '11K024', 'GHM', 9), +('D15', '11K02J', 'GHM', 9), +('D15', '11K02V', 'GHM', 9), +('D15', '11K02W', 'GHM', 9), +('D15', '11K03Z', 'GHM', 9), +('D15', '11K04Z', 'GHM', 9), +('D15', '11K05Z', 'GHM', 9), +('D15', '11K06Z', 'GHM', 9), +('D15', '11K08J', 'GHM', 9), +('D15', '11M021', 'GHM', 9), +('D15', '11M022', 'GHM', 9), +('D15', '11M023', 'GHM', 9), +('D15', '11M024', 'GHM', 9), +('D15', '11M02T', 'GHM', 9), +('D15', '11M02V', 'GHM', 9), +('D15', '11M02W', 'GHM', 9), +('D15', '11M031', 'GHM', 9), +('D15', '11M032', 'GHM', 9), +('D15', '11M033', 'GHM', 9), +('D15', '11M034', 'GHM', 9), +('D15', '11M03T', 'GHM', 9), +('D15', '11M03V', 'GHM', 9), +('D15', '11M03W', 'GHM', 9), +('D15', '11M041', 'GHM', 9), +('D15', '11M042', 'GHM', 9), +('D15', '11M043', 'GHM', 9), +('D15', '11M044', 'GHM', 9), +('D15', '11M04T', 'GHM', 9), +('D15', '11M04V', 'GHM', 9), +('D15', '11M04W', 'GHM', 9), +('D15', '11M061', 'GHM', 9), +('D15', '11M062', 'GHM', 9), +('D15', '11M063', 'GHM', 9), +('D15', '11M064', 'GHM', 9), +('D15', '11M06T', 'GHM', 9), +('D15', '11M06V', 'GHM', 9), +('D15', '11M06W', 'GHM', 9), +('D15', '11M071', 'GHM', 9), +('D15', '11M072', 'GHM', 9), +('D15', '11M073', 'GHM', 9), +('D15', '11M074', 'GHM', 9), +('D15', '11M07T', 'GHM', 9), +('D15', '11M07V', 'GHM', 9), +('D15', '11M07W', 'GHM', 9), +('D15', '11M081', 'GHM', 9), +('D15', '11M082', 'GHM', 9), +('D15', '11M083', 'GHM', 9), +('D15', '11M084', 'GHM', 9), +('D15', '11M08T', 'GHM', 9), +('D15', '11M08Z', 'GHM', 9), +('D15', '11M101', 'GHM', 9), +('D15', '11M102', 'GHM', 9), +('D15', '11M103', 'GHM', 9), +('D15', '11M104', 'GHM', 9), +('D15', '11M10T', 'GHM', 9), +('D15', '11M10V', 'GHM', 9), +('D15', '11M10W', 'GHM', 9), +('D15', '11M111', 'GHM', 9), +('D15', '11M112', 'GHM', 9), +('D15', '11M113', 'GHM', 9), +('D15', '11M114', 'GHM', 9), +('D15', '11M11Z', 'GHM', 9), +('D15', '11M121', 'GHM', 9), +('D15', '11M122', 'GHM', 9), +('D15', '11M123', 'GHM', 9), +('D15', '11M124', 'GHM', 9), +('D15', '11M12T', 'GHM', 9), +('D15', '11M12V', 'GHM', 9), +('D15', '11M12W', 'GHM', 9), +('D15', '11M151', 'GHM', 9), +('D15', '11M152', 'GHM', 9), +('D15', '11M153', 'GHM', 9), +('D15', '11M154', 'GHM', 9), +('D15', '11M15T', 'GHM', 9), +('D15', '11M161', 'GHM', 9), +('D15', '11M162', 'GHM', 9), +('D15', '11M163', 'GHM', 9), +('D15', '11M164', 'GHM', 9), +('D15', '11M16T', 'GHM', 9), +('D15', '11M171', 'GHM', 9), +('D15', '11M172', 'GHM', 9), +('D15', '11M173', 'GHM', 9), +('D15', '11M174', 'GHM', 9), +('D15', '11M18Z', 'GHM', 9), +('D15', '11M19T', 'GHM', 9), +('D15', '11M19Z', 'GHM', 9), +('D15', '11M201', 'GHM', 9), +('D15', '11M202', 'GHM', 9), +('D15', '11M203', 'GHM', 9), +('D15', '11M204', 'GHM', 9), +('D15', '12C02Z', 'GHM', 9), +('D15', '12C031', 'GHM', 9), +('D15', '12C032', 'GHM', 9), +('D15', '12C033', 'GHM', 9), +('D15', '12C034', 'GHM', 9), +('D15', '12C03J', 'GHM', 9), +('D15', '12C03Z', 'GHM', 9), +('D15', '12C041', 'GHM', 9), +('D15', '12C042', 'GHM', 9), +('D15', '12C043', 'GHM', 9), +('D15', '12C044', 'GHM', 9), +('D15', '12C04J', 'GHM', 9), +('D15', '12C04V', 'GHM', 9), +('D15', '12C04W', 'GHM', 9), +('D15', '12C051', 'GHM', 9), +('D15', '12C052', 'GHM', 9), +('D15', '12C053', 'GHM', 9), +('D15', '12C054', 'GHM', 9), +('D15', '12C05Z', 'GHM', 9), +('D15', '12C061', 'GHM', 9), +('D15', '12C062', 'GHM', 9), +('D15', '12C063', 'GHM', 9), +('D15', '12C064', 'GHM', 9), +('D15', '12C06J', 'GHM', 9), +('D15', '12C06Z', 'GHM', 9), +('D15', '12C071', 'GHM', 9), +('D15', '12C072', 'GHM', 9), +('D15', '12C073', 'GHM', 9), +('D15', '12C074', 'GHM', 9), +('D15', '12C07J', 'GHM', 9), +('D15', '12C07Z', 'GHM', 9), +('D15', '12C081', 'GHM', 9), +('D15', '12C082', 'GHM', 9), +('D15', '12C083', 'GHM', 9), +('D15', '12C084', 'GHM', 9), +('D15', '12C08J', 'GHM', 9), +('D15', '12C08Z', 'GHM', 9), +('D15', '12C091', 'GHM', 9), +('D15', '12C092', 'GHM', 9), +('D15', '12C093', 'GHM', 9), +('D15', '12C094', 'GHM', 9), +('D15', '12C09Z', 'GHM', 9), +('D15', '12C101', 'GHM', 9), +('D15', '12C102', 'GHM', 9), +('D15', '12C103', 'GHM', 9), +('D15', '12C104', 'GHM', 9), +('D15', '12C10Z', 'GHM', 9), +('D15', '12C111', 'GHM', 9), +('D15', '12C112', 'GHM', 9), +('D15', '12C113', 'GHM', 9), +('D15', '12C114', 'GHM', 9), +('D15', '12C11Z', 'GHM', 9), +('D15', '12C121', 'GHM', 9), +('D15', '12C122', 'GHM', 9), +('D15', '12C123', 'GHM', 9), +('D15', '12C124', 'GHM', 9), +('D15', '12C12Z', 'GHM', 9), +('D15', '12C131', 'GHM', 9), +('D15', '12C132', 'GHM', 9), +('D15', '12C133', 'GHM', 9), +('D15', '12C134', 'GHM', 9), +('D15', '12C13J', 'GHM', 9), +('D15', '12K02Z', 'GHM', 9), +('D15', '12K03Z', 'GHM', 9), +('D15', '12K06J', 'GHM', 9), +('D15', '12M031', 'GHM', 9), +('D15', '12M032', 'GHM', 9), +('D15', '12M033', 'GHM', 9), +('D15', '12M034', 'GHM', 9), +('D15', '12M03T', 'GHM', 9), +('D15', '12M03V', 'GHM', 9), +('D15', '12M03W', 'GHM', 9), +('D15', '12M041', 'GHM', 9), +('D15', '12M042', 'GHM', 9), +('D15', '12M043', 'GHM', 9), +('D15', '12M044', 'GHM', 9), +('D15', '12M04T', 'GHM', 9), +('D15', '12M04V', 'GHM', 9), +('D15', '12M04W', 'GHM', 9), +('D15', '12M051', 'GHM', 9), +('D15', '12M052', 'GHM', 9), +('D15', '12M053', 'GHM', 9), +('D15', '12M054', 'GHM', 9), +('D15', '12M05T', 'GHM', 9), +('D15', '12M05Z', 'GHM', 9), +('D15', '12M061', 'GHM', 9), +('D15', '12M062', 'GHM', 9), +('D15', '12M063', 'GHM', 9), +('D15', '12M064', 'GHM', 9), +('D15', '12M06T', 'GHM', 9), +('D15', '12M071', 'GHM', 9), +('D15', '12M072', 'GHM', 9), +('D15', '12M073', 'GHM', 9), +('D15', '12M074', 'GHM', 9), +('D15', '12M07T', 'GHM', 9), +('D15', '12M08Z', 'GHM', 9), +('D15', '12M09Z', 'GHM', 9), +('D15', '13K02Z', 'GHM', 9), +('D15', '13K03Z', 'GHM', 9), +('D15', '13K04Z', 'GHM', 9), +('D15', '13K05Z', 'GHM', 9), +('D15', '13K06J', 'GHM', 9), +('D16', '16C031', 'GHM', 9), +('D16', '16C032', 'GHM', 9), +('D16', '16C033', 'GHM', 9), +('D16', '16C034', 'GHM', 9), +('D16', '16C03J', 'GHM', 9), +('D16', '16C03V', 'GHM', 9), +('D16', '16C03W', 'GHM', 9), +('D16', '16M061', 'GHM', 9), +('D16', '16M062', 'GHM', 9), +('D16', '16M063', 'GHM', 9), +('D16', '16M064', 'GHM', 9), +('D16', '16M06T', 'GHM', 9), +('D16', '16M071', 'GHM', 9), +('D16', '16M072', 'GHM', 9), +('D16', '16M073', 'GHM', 9), +('D16', '16M074', 'GHM', 9), +('D16', '16M081', 'GHM', 9), +('D16', '16M082', 'GHM', 9), +('D16', '16M083', 'GHM', 9), +('D16', '16M084', 'GHM', 9), +('D16', '16M091', 'GHM', 9), +('D16', '16M092', 'GHM', 9), +('D16', '16M093', 'GHM', 9), +('D16', '16M094', 'GHM', 9), +('D16', '16M09T', 'GHM', 9), +('D16', '16M101', 'GHM', 9), +('D16', '16M102', 'GHM', 9), +('D16', '16M103', 'GHM', 9), +('D16', '16M104', 'GHM', 9), +('D16', '16M10T', 'GHM', 9), +('D16', '16M111', 'GHM', 9), +('D16', '16M112', 'GHM', 9), +('D16', '16M113', 'GHM', 9), +('D16', '16M114', 'GHM', 9), +('D16', '16M11T', 'GHM', 9), +('D16', '16M121', 'GHM', 9), +('D16', '16M122', 'GHM', 9), +('D16', '16M123', 'GHM', 9), +('D16', '16M124', 'GHM', 9), +('D16', '16M12T', 'GHM', 9), +('D16', '16M131', 'GHM', 9), +('D16', '16M132', 'GHM', 9), +('D16', '16M133', 'GHM', 9), +('D16', '16M134', 'GHM', 9), +('D16', '16M13T', 'GHM', 9), +('D16', '16M14Z', 'GHM', 9), +('D16', '16M15T', 'GHM', 9), +('D16', '16M15Z', 'GHM', 9), +('D16', '16M161', 'GHM', 9), +('D16', '16M162', 'GHM', 9), +('D16', '16M163', 'GHM', 9), +('D16', '16M164', 'GHM', 9), +('D16', '16M16T', 'GHM', 9), +('D16', '16M171', 'GHM', 9), +('D16', '16M172', 'GHM', 9), +('D16', '16M173', 'GHM', 9), +('D16', '16M174', 'GHM', 9), +('D16', '16M17T', 'GHM', 9), +('D16', '16M181', 'GHM', 9), +('D16', '16M182', 'GHM', 9), +('D16', '16M183', 'GHM', 9), +('D16', '16M184', 'GHM', 9), +('D16', '17C021', 'GHM', 9), +('D16', '17C022', 'GHM', 9), +('D16', '17C023', 'GHM', 9), +('D16', '17C024', 'GHM', 9), +('D16', '17C02V', 'GHM', 9), +('D16', '17C02W', 'GHM', 9), +('D16', '17C031', 'GHM', 9), +('D16', '17C032', 'GHM', 9), +('D16', '17C033', 'GHM', 9), +('D16', '17C034', 'GHM', 9), +('D16', '17C03J', 'GHM', 9), +('D16', '17C03V', 'GHM', 9), +('D16', '17C03W', 'GHM', 9), +('D16', '17C041', 'GHM', 9), +('D16', '17C042', 'GHM', 9), +('D16', '17C043', 'GHM', 9), +('D16', '17C044', 'GHM', 9), +('D16', '17C04V', 'GHM', 9), +('D16', '17C04W', 'GHM', 9), +('D16', '17C051', 'GHM', 9), +('D16', '17C052', 'GHM', 9), +('D16', '17C053', 'GHM', 9), +('D16', '17C054', 'GHM', 9), +('D16', '17C05J', 'GHM', 9), +('D16', '17C05V', 'GHM', 9), +('D16', '17C05W', 'GHM', 9), +('D16', '17C061', 'GHM', 9), +('D16', '17C062', 'GHM', 9), +('D16', '17C063', 'GHM', 9), +('D16', '17C064', 'GHM', 9), +('D16', '17C071', 'GHM', 9), +('D16', '17C072', 'GHM', 9), +('D16', '17C073', 'GHM', 9), +('D16', '17C074', 'GHM', 9), +('D16', '17C081', 'GHM', 9), +('D16', '17C082', 'GHM', 9), +('D16', '17C083', 'GHM', 9), +('D16', '17C084', 'GHM', 9), +('D16', '17C08J', 'GHM', 9), +('D16', '17M071', 'GHM', 9), +('D16', '17M072', 'GHM', 9), +('D16', '17M073', 'GHM', 9), +('D16', '17M074', 'GHM', 9), +('D16', '17M07T', 'GHM', 9), +('D16', '17M07V', 'GHM', 9), +('D16', '17M07W', 'GHM', 9), +('D16', '17M081', 'GHM', 9), +('D16', '17M082', 'GHM', 9), +('D16', '17M083', 'GHM', 9), +('D16', '17M084', 'GHM', 9), +('D16', '17M08T', 'GHM', 9), +('D16', '17M08Z', 'GHM', 9), +('D16', '17M091', 'GHM', 9), +('D16', '17M092', 'GHM', 9), +('D16', '17M093', 'GHM', 9), +('D16', '17M094', 'GHM', 9), +('D16', '17M09T', 'GHM', 9), +('D16', '17M09V', 'GHM', 9), +('D16', '17M09W', 'GHM', 9), +('D16', '17M111', 'GHM', 9), +('D16', '17M112', 'GHM', 9), +('D16', '17M113', 'GHM', 9), +('D16', '17M114', 'GHM', 9), +('D16', '17M11T', 'GHM', 9), +('D16', '17M121', 'GHM', 9), +('D16', '17M122', 'GHM', 9), +('D16', '17M123', 'GHM', 9), +('D16', '17M124', 'GHM', 9), +('D16', '17M12T', 'GHM', 9), +('D16', '17M131', 'GHM', 9), +('D16', '17M132', 'GHM', 9), +('D16', '17M133', 'GHM', 9), +('D16', '17M134', 'GHM', 9), +('D16', '17M13T', 'GHM', 9), +('D16', '17M14Z', 'GHM', 9), +('D16', '17M151', 'GHM', 9), +('D16', '17M152', 'GHM', 9), +('D16', '17M153', 'GHM', 9), +('D16', '17M154', 'GHM', 9), +('D16', '17M15T', 'GHM', 9), +('D16', '17M161', 'GHM', 9), +('D16', '17M162', 'GHM', 9), +('D16', '17M163', 'GHM', 9), +('D16', '17M164', 'GHM', 9), +('D16', '17M16T', 'GHM', 9), +('D16', '17M171', 'GHM', 9), +('D16', '17M172', 'GHM', 9), +('D16', '17M173', 'GHM', 9), +('D16', '17M174', 'GHM', 9), +('D16', '17M17T', 'GHM', 9), +('D16', '27Z021', 'GHM', 9), +('D16', '27Z022', 'GHM', 9), +('D16', '27Z023', 'GHM', 9), +('D16', '27Z024', 'GHM', 9), +('D16', '27Z02Z', 'GHM', 9), +('D16', '27Z03Z', 'GHM', 9), +('D16', '27Z04J', 'GHM', 9), +('D17', '17K02Z', 'GHM', 9), +('D17', '17K03Z', 'GHM', 9), +('D17', '17K041', 'GHM', 9), +('D17', '17K042', 'GHM', 9), +('D17', '17K043', 'GHM', 9), +('D17', '17K044', 'GHM', 9), +('D17', '17K04Z', 'GHM', 9), +('D17', '17K051', 'GHM', 9), +('D17', '17K052', 'GHM', 9), +('D17', '17K053', 'GHM', 9), +('D17', '17K054', 'GHM', 9), +('D17', '17K05Z', 'GHM', 9), +('D17', '17K061', 'GHM', 9), +('D17', '17K062', 'GHM', 9), +('D17', '17K063', 'GHM', 9), +('D17', '17K064', 'GHM', 9), +('D17', '17K06Z', 'GHM', 9), +('D17', '17K081', 'GHM', 9), +('D17', '17K082', 'GHM', 9), +('D17', '17K083', 'GHM', 9), +('D17', '17K084', 'GHM', 9), +('D17', '17K091', 'GHM', 9), +('D17', '17K092', 'GHM', 9), +('D17', '17K093', 'GHM', 9), +('D17', '17K094', 'GHM', 9), +('D17', '17M02Z', 'GHM', 9), +('D17', '17M04Z', 'GHM', 9), +('D17', '17M051', 'GHM', 9), +('D17', '17M052', 'GHM', 9), +('D17', '17M053', 'GHM', 9), +('D17', '17M054', 'GHM', 9), +('D17', '17M05Z', 'GHM', 9), +('D17', '17M061', 'GHM', 9), +('D17', '17M062', 'GHM', 9), +('D17', '17M063', 'GHM', 9), +('D17', '17M064', 'GHM', 9), +('D17', '17M06T', 'GHM', 9), +('D17', '17M06V', 'GHM', 9), +('D17', '17M06W', 'GHM', 9), +('D17', '23M091', 'GHM', 9), +('D17', '23M092', 'GHM', 9), +('D17', '23M093', 'GHM', 9), +('D17', '23M094', 'GHM', 9), +('D18', '18M021', 'GHM', 9), +('D18', '18M022', 'GHM', 9), +('D18', '18M023', 'GHM', 9), +('D18', '18M024', 'GHM', 9), +('D18', '18M02V', 'GHM', 9), +('D18', '18M02W', 'GHM', 9), +('D18', '18M031', 'GHM', 9), +('D18', '18M032', 'GHM', 9), +('D18', '18M033', 'GHM', 9), +('D18', '18M034', 'GHM', 9), +('D18', '18M03T', 'GHM', 9), +('D18', '18M03Z', 'GHM', 9), +('D18', '18M041', 'GHM', 9), +('D18', '18M042', 'GHM', 9), +('D18', '18M043', 'GHM', 9), +('D18', '18M044', 'GHM', 9), +('D18', '18M04T', 'GHM', 9), +('D18', '18M04V', 'GHM', 9), +('D18', '18M04W', 'GHM', 9), +('D18', '18M061', 'GHM', 9), +('D18', '18M062', 'GHM', 9), +('D18', '18M063', 'GHM', 9), +('D18', '18M064', 'GHM', 9), +('D18', '18M06Z', 'GHM', 9), +('D18', '18M071', 'GHM', 9), +('D18', '18M072', 'GHM', 9), +('D18', '18M073', 'GHM', 9), +('D18', '18M074', 'GHM', 9), +('D18', '18M07T', 'GHM', 9), +('D18', '18M07V', 'GHM', 9), +('D18', '18M07W', 'GHM', 9), +('D18', '18M091', 'GHM', 9), +('D18', '18M092', 'GHM', 9), +('D18', '18M093', 'GHM', 9), +('D18', '18M094', 'GHM', 9), +('D18', '18M09T', 'GHM', 9), +('D18', '18M101', 'GHM', 9), +('D18', '18M102', 'GHM', 9), +('D18', '18M103', 'GHM', 9), +('D18', '18M104', 'GHM', 9), +('D18', '18M10T', 'GHM', 9), +('D18', '18M111', 'GHM', 9), +('D18', '18M112', 'GHM', 9), +('D18', '18M113', 'GHM', 9), +('D18', '18M114', 'GHM', 9), +('D18', '18M11T', 'GHM', 9), +('D18', '18M12Z', 'GHM', 9), +('D18', '18M13E', 'GHM', 9), +('D18', '18M14T', 'GHM', 9), +('D18', '18M14Z', 'GHM', 9), +('D18', '18M151', 'GHM', 9), +('D18', '18M152', 'GHM', 9), +('D18', '18M153', 'GHM', 9), +('D18', '18M154', 'GHM', 9), +('D18', '23M07J', 'GHM', 9), +('D18', '25M02A', 'GHM', 9), +('D18', '25M02B', 'GHM', 9), +('D18', '25M02C', 'GHM', 9), +('D18', '25M02T', 'GHM', 9), +('D18', '25Z02E', 'GHM', 9), +('D18', '25Z031', 'GHM', 9), +('D18', '25Z032', 'GHM', 9), +('D18', '25Z033', 'GHM', 9), +('D18', '25Z034', 'GHM', 9), +('D18', '25Z03Z', 'GHM', 9), +('D19', '10C051', 'GHM', 9), +('D19', '10C052', 'GHM', 9), +('D19', '10C053', 'GHM', 9), +('D19', '10C054', 'GHM', 9), +('D19', '10C05Z', 'GHM', 9), +('D19', '10C071', 'GHM', 9), +('D19', '10C072', 'GHM', 9), +('D19', '10C073', 'GHM', 9), +('D19', '10C074', 'GHM', 9), +('D19', '10C07Z', 'GHM', 9), +('D19', '10C101', 'GHM', 9), +('D19', '10C102', 'GHM', 9), +('D19', '10C103', 'GHM', 9), +('D19', '10C104', 'GHM', 9), +('D19', '10C10Z', 'GHM', 9), +('D19', '10C111', 'GHM', 9), +('D19', '10C112', 'GHM', 9), +('D19', '10C113', 'GHM', 9), +('D19', '10C114', 'GHM', 9), +('D19', '10C11V', 'GHM', 9), +('D19', '10C11W', 'GHM', 9), +('D19', '10C121', 'GHM', 9), +('D19', '10C122', 'GHM', 9), +('D19', '10C123', 'GHM', 9), +('D19', '10C124', 'GHM', 9), +('D19', '10C12V', 'GHM', 9), +('D19', '10C12W', 'GHM', 9), +('D19', '10M021', 'GHM', 9), +('D19', '10M022', 'GHM', 9), +('D19', '10M023', 'GHM', 9), +('D19', '10M024', 'GHM', 9), +('D19', '10M02T', 'GHM', 9), +('D19', '10M02V', 'GHM', 9), +('D19', '10M02W', 'GHM', 9), +('D19', '10M031', 'GHM', 9), +('D19', '10M032', 'GHM', 9), +('D19', '10M033', 'GHM', 9), +('D19', '10M034', 'GHM', 9), +('D19', '10M03T', 'GHM', 9), +('D19', '10M03Z', 'GHM', 9), +('D19', '10M06Z', 'GHM', 9), +('D19', '10M071', 'GHM', 9), +('D19', '10M072', 'GHM', 9), +('D19', '10M073', 'GHM', 9), +('D19', '10M074', 'GHM', 9), +('D19', '10M07T', 'GHM', 9), +('D19', '10M07V', 'GHM', 9), +('D19', '10M07W', 'GHM', 9), +('D19', '10M081', 'GHM', 9), +('D19', '10M082', 'GHM', 9), +('D19', '10M083', 'GHM', 9), +('D19', '10M084', 'GHM', 9), +('D19', '10M08T', 'GHM', 9), +('D19', '10M091', 'GHM', 9), +('D19', '10M092', 'GHM', 9), +('D19', '10M093', 'GHM', 9), +('D19', '10M094', 'GHM', 9), +('D19', '10M09T', 'GHM', 9), +('D19', '10M101', 'GHM', 9), +('D19', '10M102', 'GHM', 9), +('D19', '10M103', 'GHM', 9), +('D19', '10M104', 'GHM', 9), +('D19', '10M10T', 'GHM', 9), +('D19', '10M111', 'GHM', 9), +('D19', '10M112', 'GHM', 9), +('D19', '10M113', 'GHM', 9), +('D19', '10M114', 'GHM', 9), +('D19', '10M11T', 'GHM', 9), +('D19', '10M121', 'GHM', 9), +('D19', '10M122', 'GHM', 9), +('D19', '10M123', 'GHM', 9), +('D19', '10M124', 'GHM', 9), +('D19', '10M12T', 'GHM', 9), +('D19', '10M13T', 'GHM', 9), +('D19', '10M13Z', 'GHM', 9), +('D19', '10M14T', 'GHM', 9), +('D19', '10M14Z', 'GHM', 9), +('D19', '10M151', 'GHM', 9), +('D19', '10M152', 'GHM', 9), +('D19', '10M153', 'GHM', 9), +('D19', '10M154', 'GHM', 9), +('D19', '10M15T', 'GHM', 9), +('D19', '10M161', 'GHM', 9), +('D19', '10M162', 'GHM', 9), +('D19', '10M163', 'GHM', 9), +('D19', '10M164', 'GHM', 9), +('D19', '10M16T', 'GHM', 9), +('D19', '10M171', 'GHM', 9), +('D19', '10M172', 'GHM', 9), +('D19', '10M173', 'GHM', 9), +('D19', '10M174', 'GHM', 9), +('D19', '10M17T', 'GHM', 9), +('D19', '10M181', 'GHM', 9), +('D19', '10M182', 'GHM', 9), +('D19', '10M183', 'GHM', 9), +('D19', '10M184', 'GHM', 9), +('D19', '10M18T', 'GHM', 9), +('D19', '10M191', 'GHM', 9), +('D19', '10M192', 'GHM', 9), +('D19', '10M193', 'GHM', 9), +('D19', '10M194', 'GHM', 9), +('D19', '10M201', 'GHM', 9), +('D19', '10M202', 'GHM', 9), +('D19', '10M203', 'GHM', 9), +('D19', '10M204', 'GHM', 9), +('D19', '23M08J', 'GHM', 9), +('D20', '08C201', 'GHM', 9), +('D20', '08C202', 'GHM', 9), +('D20', '08C203', 'GHM', 9), +('D20', '08C204', 'GHM', 9), +('D20', '08C20J', 'GHM', 9), +('D20', '08C20Z', 'GHM', 9), +('D20', '09C021', 'GHM', 9), +('D20', '09C022', 'GHM', 9), +('D20', '09C023', 'GHM', 9), +('D20', '09C024', 'GHM', 9), +('D20', '09C02J', 'GHM', 9), +('D20', '09C02V', 'GHM', 9), +('D20', '09C02W', 'GHM', 9), +('D20', '09C031', 'GHM', 9), +('D20', '09C032', 'GHM', 9), +('D20', '09C033', 'GHM', 9), +('D20', '09C034', 'GHM', 9), +('D20', '09C03J', 'GHM', 9), +('D20', '09C03V', 'GHM', 9), +('D20', '09C03W', 'GHM', 9), +('D20', '09C091', 'GHM', 9), +('D20', '09C092', 'GHM', 9), +('D20', '09C093', 'GHM', 9), +('D20', '09C094', 'GHM', 9), +('D20', '09C09J', 'GHM', 9), +('D20', '09C09Z', 'GHM', 9), +('D20', '09C121', 'GHM', 9), +('D20', '09C122', 'GHM', 9), +('D20', '09C123', 'GHM', 9), +('D20', '09C124', 'GHM', 9), +('D20', '09C12J', 'GHM', 9), +('D20', '09M021', 'GHM', 9), +('D20', '09M022', 'GHM', 9), +('D20', '09M023', 'GHM', 9), +('D20', '09M024', 'GHM', 9), +('D20', '09M02T', 'GHM', 9), +('D20', '09M02Z', 'GHM', 9), +('D20', '09M031', 'GHM', 9), +('D20', '09M032', 'GHM', 9), +('D20', '09M033', 'GHM', 9), +('D20', '09M034', 'GHM', 9), +('D20', '09M03T', 'GHM', 9), +('D20', '09M03V', 'GHM', 9), +('D20', '09M03W', 'GHM', 9), +('D20', '09M041', 'GHM', 9), +('D20', '09M042', 'GHM', 9), +('D20', '09M043', 'GHM', 9), +('D20', '09M044', 'GHM', 9), +('D20', '09M04T', 'GHM', 9), +('D20', '09M04Z', 'GHM', 9), +('D20', '09M051', 'GHM', 9), +('D20', '09M052', 'GHM', 9), +('D20', '09M053', 'GHM', 9), +('D20', '09M054', 'GHM', 9), +('D20', '09M05T', 'GHM', 9), +('D20', '09M05V', 'GHM', 9), +('D20', '09M05W', 'GHM', 9), +('D20', '09M061', 'GHM', 9), +('D20', '09M062', 'GHM', 9), +('D20', '09M063', 'GHM', 9), +('D20', '09M064', 'GHM', 9), +('D20', '09M06T', 'GHM', 9), +('D20', '09M06Z', 'GHM', 9), +('D20', '09M071', 'GHM', 9), +('D20', '09M072', 'GHM', 9), +('D20', '09M073', 'GHM', 9), +('D20', '09M074', 'GHM', 9), +('D20', '09M07T', 'GHM', 9), +('D20', '09M07V', 'GHM', 9), +('D20', '09M07W', 'GHM', 9), +('D20', '09M081', 'GHM', 9), +('D20', '09M082', 'GHM', 9), +('D20', '09M083', 'GHM', 9), +('D20', '09M084', 'GHM', 9), +('D20', '09M08T', 'GHM', 9), +('D20', '09M08V', 'GHM', 9), +('D20', '09M08W', 'GHM', 9), +('D20', '09M111', 'GHM', 9), +('D20', '09M112', 'GHM', 9), +('D20', '09M113', 'GHM', 9), +('D20', '09M114', 'GHM', 9), +('D20', '09M11T', 'GHM', 9), +('D20', '09M12Z', 'GHM', 9), +('D20', '09M14T', 'GHM', 9), +('D20', '09M14Z', 'GHM', 9), +('D20', '21C021', 'GHM', 9), +('D20', '21C022', 'GHM', 9), +('D20', '21C023', 'GHM', 9), +('D20', '21C024', 'GHM', 9), +('D20', '21C02J', 'GHM', 9), +('D20', '21C02Z', 'GHM', 9), +('D20', '21C031', 'GHM', 9), +('D20', '21C032', 'GHM', 9), +('D20', '21C033', 'GHM', 9), +('D20', '21C034', 'GHM', 9), +('D20', '21C03J', 'GHM', 9), +('D20', '21C03Z', 'GHM', 9), +('D20', '21C061', 'GHM', 9), +('D20', '21C062', 'GHM', 9), +('D20', '21C063', 'GHM', 9), +('D20', '21C064', 'GHM', 9), +('D20', '21C06J', 'GHM', 9), +('D21', '22C021', 'GHM', 9), +('D21', '22C022', 'GHM', 9), +('D21', '22C023', 'GHM', 9), +('D21', '22C024', 'GHM', 9), +('D21', '22C02J', 'GHM', 9), +('D21', '22C02Z', 'GHM', 9), +('D21', '22C031', 'GHM', 9), +('D21', '22C032', 'GHM', 9), +('D21', '22C033', 'GHM', 9), +('D21', '22C034', 'GHM', 9), +('D21', '22C03Z', 'GHM', 9), +('D21', '22K02J', 'GHM', 9), +('D21', '22M021', 'GHM', 9), +('D21', '22M022', 'GHM', 9), +('D21', '22M023', 'GHM', 9), +('D21', '22M024', 'GHM', 9), +('D21', '22M02T', 'GHM', 9), +('D21', '22M02Z', 'GHM', 9), +('D21', '22Z021', 'GHM', 9), +('D21', '22Z022', 'GHM', 9), +('D21', '22Z023', 'GHM', 9), +('D21', '22Z024', 'GHM', 9), +('D21', '22Z02Z', 'GHM', 9), +('D21', '22Z03Z', 'GHM', 9), +('D22', '19M021', 'GHM', 9), +('D22', '19M022', 'GHM', 9), +('D22', '19M023', 'GHM', 9), +('D22', '19M024', 'GHM', 9), +('D22', '19M02T', 'GHM', 9), +('D22', '19M02V', 'GHM', 9), +('D22', '19M02W', 'GHM', 9), +('D22', '19M03Z', 'GHM', 9), +('D22', '19M04Z', 'GHM', 9), +('D22', '19M05Z', 'GHM', 9), +('D22', '19M061', 'GHM', 9), +('D22', '19M062', 'GHM', 9), +('D22', '19M063', 'GHM', 9), +('D22', '19M064', 'GHM', 9), +('D22', '19M06T', 'GHM', 9), +('D22', '19M06V', 'GHM', 9), +('D22', '19M06W', 'GHM', 9), +('D22', '19M071', 'GHM', 9), +('D22', '19M072', 'GHM', 9), +('D22', '19M073', 'GHM', 9), +('D22', '19M074', 'GHM', 9), +('D22', '19M07T', 'GHM', 9), +('D22', '19M07V', 'GHM', 9), +('D22', '19M07W', 'GHM', 9), +('D22', '19M08Z', 'GHM', 9), +('D22', '19M09Z', 'GHM', 9), +('D22', '19M101', 'GHM', 9), +('D22', '19M102', 'GHM', 9), +('D22', '19M103', 'GHM', 9), +('D22', '19M104', 'GHM', 9), +('D22', '19M10T', 'GHM', 9), +('D22', '19M10Z', 'GHM', 9), +('D22', '19M111', 'GHM', 9), +('D22', '19M112', 'GHM', 9), +('D22', '19M113', 'GHM', 9), +('D22', '19M114', 'GHM', 9), +('D22', '19M11T', 'GHM', 9), +('D22', '19M11V', 'GHM', 9), +('D22', '19M11W', 'GHM', 9), +('D22', '19M121', 'GHM', 9), +('D22', '19M122', 'GHM', 9), +('D22', '19M123', 'GHM', 9), +('D22', '19M124', 'GHM', 9), +('D22', '19M12T', 'GHM', 9), +('D22', '19M131', 'GHM', 9), +('D22', '19M132', 'GHM', 9), +('D22', '19M133', 'GHM', 9), +('D22', '19M134', 'GHM', 9), +('D22', '19M13T', 'GHM', 9), +('D22', '19M141', 'GHM', 9), +('D22', '19M142', 'GHM', 9), +('D22', '19M143', 'GHM', 9), +('D22', '19M144', 'GHM', 9), +('D22', '19M14T', 'GHM', 9), +('D22', '19M151', 'GHM', 9), +('D22', '19M152', 'GHM', 9), +('D22', '19M153', 'GHM', 9), +('D22', '19M154', 'GHM', 9), +('D22', '19M15T', 'GHM', 9), +('D22', '19M161', 'GHM', 9), +('D22', '19M162', 'GHM', 9), +('D22', '19M163', 'GHM', 9), +('D22', '19M164', 'GHM', 9), +('D22', '19M16T', 'GHM', 9), +('D22', '19M171', 'GHM', 9), +('D22', '19M172', 'GHM', 9), +('D22', '19M173', 'GHM', 9), +('D22', '19M174', 'GHM', 9), +('D22', '19M181', 'GHM', 9), +('D22', '19M182', 'GHM', 9), +('D22', '19M183', 'GHM', 9), +('D22', '19M184', 'GHM', 9), +('D22', '19M18T', 'GHM', 9), +('D22', '19M191', 'GHM', 9), +('D22', '19M192', 'GHM', 9), +('D22', '19M193', 'GHM', 9), +('D22', '19M194', 'GHM', 9), +('D22', '19M19T', 'GHM', 9), +('D22', '19M201', 'GHM', 9), +('D22', '19M202', 'GHM', 9), +('D22', '19M203', 'GHM', 9), +('D22', '19M204', 'GHM', 9), +('D22', '19M20T', 'GHM', 9), +('D22', '19M21Z', 'GHM', 9), +('D22', '19M22T', 'GHM', 9), +('D22', '19M22Z', 'GHM', 9), +('D23', '20Z021', 'GHM', 9), +('D23', '20Z022', 'GHM', 9), +('D23', '20Z023', 'GHM', 9), +('D23', '20Z024', 'GHM', 9), +('D23', '20Z02T', 'GHM', 9), +('D23', '20Z02Z', 'GHM', 9), +('D23', '20Z031', 'GHM', 9), +('D23', '20Z032', 'GHM', 9), +('D23', '20Z033', 'GHM', 9), +('D23', '20Z034', 'GHM', 9), +('D23', '20Z03Z', 'GHM', 9), +('D23', '20Z041', 'GHM', 9), +('D23', '20Z042', 'GHM', 9), +('D23', '20Z043', 'GHM', 9), +('D23', '20Z044', 'GHM', 9), +('D23', '20Z04T', 'GHM', 9), +('D23', '20Z04Z', 'GHM', 9), +('D23', '20Z051', 'GHM', 9), +('D23', '20Z052', 'GHM', 9), +('D23', '20Z053', 'GHM', 9), +('D23', '20Z054', 'GHM', 9), +('D23', '20Z05Z', 'GHM', 9), +('D23', '20Z061', 'GHM', 9), +('D23', '20Z062', 'GHM', 9), +('D23', '20Z063', 'GHM', 9), +('D23', '20Z064', 'GHM', 9), +('D23', '20Z06T', 'GHM', 9), +('D23', '20Z06V', 'GHM', 9), +('D23', '20Z06W', 'GHM', 9), +('D23', '21M021', 'GHM', 9), +('D23', '21M022', 'GHM', 9), +('D23', '21M023', 'GHM', 9), +('D23', '21M024', 'GHM', 9), +('D23', '21M02T', 'GHM', 9), +('D23', '21M02Z', 'GHM', 9), +('D23', '21M041', 'GHM', 9), +('D23', '21M042', 'GHM', 9), +('D23', '21M043', 'GHM', 9), +('D23', '21M044', 'GHM', 9), +('D23', '21M04T', 'GHM', 9), +('D23', '21M04Z', 'GHM', 9), +('D23', '21M051', 'GHM', 9), +('D23', '21M052', 'GHM', 9), +('D23', '21M053', 'GHM', 9), +('D23', '21M054', 'GHM', 9), +('D23', '21M05T', 'GHM', 9), +('D23', '21M05Z', 'GHM', 9), +('D23', '21M101', 'GHM', 9), +('D23', '21M102', 'GHM', 9), +('D23', '21M103', 'GHM', 9), +('D23', '21M104', 'GHM', 9), +('D23', '21M10T', 'GHM', 9), +('D23', '21M111', 'GHM', 9), +('D23', '21M112', 'GHM', 9), +('D23', '21M113', 'GHM', 9), +('D23', '21M114', 'GHM', 9), +('D23', '21M11T', 'GHM', 9), +('D23', '21M121', 'GHM', 9), +('D23', '21M122', 'GHM', 9), +('D23', '21M123', 'GHM', 9), +('D23', '21M124', 'GHM', 9), +('D23', '21M141', 'GHM', 9), +('D23', '21M142', 'GHM', 9), +('D23', '21M143', 'GHM', 9), +('D23', '21M144', 'GHM', 9), +('D23', '21M14T', 'GHM', 9), +('D23', '21M161', 'GHM', 9), +('D23', '21M162', 'GHM', 9), +('D23', '21M163', 'GHM', 9), +('D23', '21M164', 'GHM', 9), +('D23', '21M16T', 'GHM', 9), +('D24', '01K05J', 'GHM', 9), +('D24', '01M211', 'GHM', 9), +('D24', '01M212', 'GHM', 9), +('D24', '01M213', 'GHM', 9), +('D24', '01M214', 'GHM', 9), +('D24', '01M21T', 'GHM', 9), +('D24', '01M21Z', 'GHM', 9), +('D24', '23Z02T', 'GHM', 9), +('D24', '23Z02Z', 'GHM', 9), +('D25', '27C021', 'GHM', 9), +('D25', '27C022', 'GHM', 9), +('D25', '27C023', 'GHM', 9), +('D25', '27C024', 'GHM', 9), +('D25', '27C02Z', 'GHM', 9), +('D25', '27C031', 'GHM', 9), +('D25', '27C032', 'GHM', 9), +('D25', '27C033', 'GHM', 9), +('D25', '27C034', 'GHM', 9), +('D25', '27C03Z', 'GHM', 9), +('D25', '27C041', 'GHM', 9), +('D25', '27C042', 'GHM', 9), +('D25', '27C043', 'GHM', 9), +('D25', '27C044', 'GHM', 9), +('D25', '27C04Z', 'GHM', 9), +('D25', '27C051', 'GHM', 9), +('D25', '27C052', 'GHM', 9), +('D25', '27C053', 'GHM', 9), +('D25', '27C054', 'GHM', 9), +('D25', '27C05Z', 'GHM', 9), +('D25', '27C061', 'GHM', 9), +('D25', '27C062', 'GHM', 9), +('D25', '27C063', 'GHM', 9), +('D25', '27C064', 'GHM', 9), +('D25', '27C06Z', 'GHM', 9), +('D25', '27C071', 'GHM', 9), +('D25', '27C072', 'GHM', 9), +('D25', '27C073', 'GHM', 9), +('D25', '27C074', 'GHM', 9), +('D25', '27C07Z', 'GHM', 9), +('D26', '01C081', 'GHM', 9), +('D26', '01C082', 'GHM', 9), +('D26', '01C083', 'GHM', 9), +('D26', '01C084', 'GHM', 9), +('D26', '01C08J', 'GHM', 9), +('D26', '01C08V', 'GHM', 9), +('D26', '01C08W', 'GHM', 9), +('D26', '01M37E', 'GHM', 9), +('D26', '05C181', 'GHM', 9), +('D26', '05C182', 'GHM', 9), +('D26', '05C183', 'GHM', 9), +('D26', '05C184', 'GHM', 9), +('D26', '05C18J', 'GHM', 9), +('D26', '05C18Z', 'GHM', 9), +('D26', '05M22E', 'GHM', 9), +('D26', '08C211', 'GHM', 9), +('D26', '08C212', 'GHM', 9), +('D26', '08C213', 'GHM', 9), +('D26', '08C214', 'GHM', 9), +('D26', '08C21J', 'GHM', 9), +('D26', '08C21V', 'GHM', 9), +('D26', '08C21W', 'GHM', 9), +('D26', '08M01S', 'GHM', 9), +('D26', '09C101', 'GHM', 9), +('D26', '09C102', 'GHM', 9), +('D26', '09C103', 'GHM', 9), +('D26', '09C104', 'GHM', 9), +('D26', '09C10J', 'GHM', 9), +('D26', '09C10V', 'GHM', 9), +('D26', '09C10W', 'GHM', 9), +('D26', '09C141', 'GHM', 9), +('D26', '09C142', 'GHM', 9), +('D26', '09C143', 'GHM', 9), +('D26', '09C144', 'GHM', 9), +('D26', '09C14J', 'GHM', 9), +('D26', '09C151', 'GHM', 9), +('D26', '09C152', 'GHM', 9), +('D26', '09C153', 'GHM', 9), +('D26', '09C154', 'GHM', 9), +('D26', '09C15J', 'GHM', 9), +('D26', '09C161', 'GHM', 9), +('D26', '09C162', 'GHM', 9), +('D26', '09C163', 'GHM', 9), +('D26', '09C164', 'GHM', 9), +('D26', '09C171', 'GHM', 9), +('D26', '09C172', 'GHM', 9), +('D26', '09C173', 'GHM', 9), +('D26', '09C174', 'GHM', 9), +('D26', '09C181', 'GHM', 9), +('D26', '09C182', 'GHM', 9), +('D26', '09C183', 'GHM', 9), +('D26', '09C184', 'GHM', 9), +('D26', '09C191', 'GHM', 9), +('D26', '09C192', 'GHM', 9), +('D26', '09C193', 'GHM', 9), +('D26', '09C194', 'GHM', 9), +('D26', '09C201', 'GHM', 9), +('D26', '09C202', 'GHM', 9), +('D26', '09C203', 'GHM', 9), +('D26', '09C204', 'GHM', 9), +('D26', '09C20J', 'GHM', 9), +('D26', '09C211', 'GHM', 9), +('D26', '09C212', 'GHM', 9), +('D26', '09C213', 'GHM', 9), +('D26', '09C214', 'GHM', 9), +('D26', '09C221', 'GHM', 9), +('D26', '09C222', 'GHM', 9), +('D26', '09C223', 'GHM', 9), +('D26', '09C224', 'GHM', 9), +('D26', '09C22J', 'GHM', 9), +('D26', '09C231', 'GHM', 9), +('D26', '09C232', 'GHM', 9), +('D26', '09C233', 'GHM', 9), +('D26', '09C234', 'GHM', 9), +('D26', '09C23J', 'GHM', 9), +('D26', '09C241', 'GHM', 9), +('D26', '09C242', 'GHM', 9), +('D26', '09C243', 'GHM', 9), +('D26', '09C244', 'GHM', 9), +('D26', '09C24J', 'GHM', 9), +('D26', '09C251', 'GHM', 9), +('D26', '09C252', 'GHM', 9), +('D26', '09C253', 'GHM', 9), +('D26', '09C254', 'GHM', 9), +('D26', '09C25J', 'GHM', 9), +('D26', '09C261', 'GHM', 9), +('D26', '09C262', 'GHM', 9), +('D26', '09C263', 'GHM', 9), +('D26', '09C264', 'GHM', 9), +('D26', '09C26J', 'GHM', 9), +('D26', '09C271', 'GHM', 9), +('D26', '09C272', 'GHM', 9), +('D26', '09C273', 'GHM', 9), +('D26', '09C274', 'GHM', 9), +('D26', '09C281', 'GHM', 9), +('D26', '09C282', 'GHM', 9), +('D26', '09C283', 'GHM', 9), +('D26', '09C284', 'GHM', 9), +('D26', '09C28J', 'GHM', 9), +('D26', '09C291', 'GHM', 9), +('D26', '09C292', 'GHM', 9), +('D26', '09C293', 'GHM', 9), +('D26', '09C294', 'GHM', 9), +('D26', '09C29J', 'GHM', 9), +('D26', '09C301', 'GHM', 9), +('D26', '09C302', 'GHM', 9), +('D26', '09C303', 'GHM', 9), +('D26', '09C304', 'GHM', 9), +('D26', '09C30J', 'GHM', 9), +('D26', '09C311', 'GHM', 9), +('D26', '09C312', 'GHM', 9), +('D26', '09C313', 'GHM', 9), +('D26', '09C314', 'GHM', 9), +('D26', '09C31J', 'GHM', 9), +('D26', '09C321', 'GHM', 9), +('D26', '09C322', 'GHM', 9), +('D26', '09C323', 'GHM', 9), +('D26', '09C324', 'GHM', 9), +('D26', '09C32J', 'GHM', 9), +('D26', '09C331', 'GHM', 9), +('D26', '09C332', 'GHM', 9), +('D26', '09C333', 'GHM', 9), +('D26', '09C334', 'GHM', 9), +('D26', '09C341', 'GHM', 9), +('D26', '09C342', 'GHM', 9), +('D26', '09C343', 'GHM', 9), +('D26', '09C344', 'GHM', 9), +('D26', '09C34J', 'GHM', 9), +('D26', '09K02J', 'GHM', 9), +('D26', '09Z02A', 'GHM', 9), +('D26', '09Z02B', 'GHM', 9), +('D26', '09Z02Z', 'GHM', 9), +('D26', '10C081', 'GHM', 9), +('D26', '10C082', 'GHM', 9), +('D26', '10C083', 'GHM', 9), +('D26', '10C084', 'GHM', 9), +('D26', '10C08J', 'GHM', 9), +('D26', '10C08Z', 'GHM', 9), +('D26', '17K07J', 'GHM', 9), +('D26', '18C021', 'GHM', 9), +('D26', '18C022', 'GHM', 9), +('D26', '18C023', 'GHM', 9), +('D26', '18C024', 'GHM', 9), +('D26', '18C02J', 'GHM', 9), +('D26', '18C02V', 'GHM', 9), +('D26', '18C02W', 'GHM', 9), +('D26', '19C021', 'GHM', 9), +('D26', '19C022', 'GHM', 9), +('D26', '19C023', 'GHM', 9), +('D26', '19C024', 'GHM', 9), +('D26', '19C02Z', 'GHM', 9), +('D26', '21C051', 'GHM', 9), +('D26', '21C052', 'GHM', 9), +('D26', '21C053', 'GHM', 9), +('D26', '21C054', 'GHM', 9), +('D26', '21C05J', 'GHM', 9), +('D26', '21C05V', 'GHM', 9), +('D26', '21C05W', 'GHM', 9), +('D26', '21K02J', 'GHM', 9), +('D26', '21M131', 'GHM', 9), +('D26', '21M132', 'GHM', 9), +('D26', '21M133', 'GHM', 9), +('D26', '21M134', 'GHM', 9), +('D26', '21M151', 'GHM', 9), +('D26', '21M152', 'GHM', 9), +('D26', '21M153', 'GHM', 9), +('D26', '21M154', 'GHM', 9), +('D26', '21M15T', 'GHM', 9), +('D26', '23C021', 'GHM', 9), +('D26', '23C022', 'GHM', 9), +('D26', '23C023', 'GHM', 9), +('D26', '23C024', 'GHM', 9), +('D26', '23C02J', 'GHM', 9), +('D26', '23C02Z', 'GHM', 9), +('D26', '23K02Z', 'GHM', 9), +('D26', '23K03J', 'GHM', 9), +('D26', '23M02T', 'GHM', 9), +('D26', '23M02Z', 'GHM', 9), +('D26', '23M04Z', 'GHM', 9), +('D26', '23M05Z', 'GHM', 9), +('D26', '23M061', 'GHM', 9), +('D26', '23M062', 'GHM', 9), +('D26', '23M063', 'GHM', 9), +('D26', '23M064', 'GHM', 9), +('D26', '23M06T', 'GHM', 9), +('D26', '23M06Z', 'GHM', 9), +('D26', '23M101', 'GHM', 9), +('D26', '23M102', 'GHM', 9), +('D26', '23M103', 'GHM', 9), +('D26', '23M104', 'GHM', 9), +('D26', '23M10T', 'GHM', 9), +('D26', '23M111', 'GHM', 9), +('D26', '23M112', 'GHM', 9), +('D26', '23M113', 'GHM', 9), +('D26', '23M114', 'GHM', 9), +('D26', '23M11T', 'GHM', 9), +('D26', '23M13Z', 'GHM', 9), +('D26', '23M14Z', 'GHM', 9), +('D26', '23M15Z', 'GHM', 9), +('D26', '23M16T', 'GHM', 9), +('D26', '23M16Z', 'GHM', 9), +('D26', '23M18Z', 'GHM', 9), +('D26', '23M19Z', 'GHM', 9), +('D26', '23M20T', 'GHM', 9), +('D26', '23M20Z', 'GHM', 9), +('D26', '23M21T', 'GHM', 9), +('D26', '23M21Z', 'GHM', 9), +('D26', '23Z03Z', 'GHM', 9), +('D26', '25C021', 'GHM', 9), +('D26', '25C022', 'GHM', 9), +('D26', '25C023', 'GHM', 9), +('D26', '25C024', 'GHM', 9), +('D26', '25C02Z', 'GHM', 9), +('D27', '28Z01Z', 'GHM', 9), +('D27', '28Z02Z', 'GHM', 9), +('D27', '28Z03Z', 'GHM', 9), +('D27', '28Z04Z', 'GHM', 9), +('D27', '28Z05Z', 'GHM', 9), +('D27', '28Z06Z', 'GHM', 9), +('D27', '28Z07Z', 'GHM', 9), +('D27', '28Z08Z', 'GHM', 9), +('D27', '28Z09Z', 'GHM', 9), +('D27', '28Z10Z', 'GHM', 9), +('D27', '28Z11Z', 'GHM', 9), +('D27', '28Z12Z', 'GHM', 9), +('D27', '28Z13Z', 'GHM', 9), +('D27', '28Z14Z', 'GHM', 9), +('D27', '28Z15Z', 'GHM', 9), +('D27', '28Z16Z', 'GHM', 9), +('D27', '28Z17Z', 'GHM', 9), +('D27', '28Z18Z', 'GHM', 9), +('D27', '28Z19Z', 'GHM', 9), +('D27', '28Z20Z', 'GHM', 9), +('D27', '28Z21Z', 'GHM', 9), +('D27', '28Z22Z', 'GHM', 9), +('D27', '28Z23Z', 'GHM', 9), +('D27', '28Z24Z', 'GHM', 9), +('D27', '28Z25Z', 'GHM', 9), +('D90', '90C01Z', 'GHM', 9), +('D90', '90H01Z', 'GHM', 9), +('D90', '90H02Z', 'GHM', 9), +('D90', '90H03Z', 'GHM', 9), +('D90', '90Z00Z', 'GHM', 9), +('D90', '90Z01Z', 'GHM', 9), +('D90', '90Z02Z', 'GHM', 9), +('D90', '90Z03Z', 'GHM', 9), +('D90', '999999', 'GHM', 9), +('D90', 'ZZZZZZ', 'GHM', 9) +; + +-- 3/3 : Màj de la table iCTI +INSERT INTO activite.t_classes_sections_elements(section_id, to_id) +SELECT t_classes_sections.oid, t_ghm.oid +FROM w_dbsetup, activite.t_listes_tables, activite.t_classes, activite.t_classes_sections, base.t_ghm +WHERE + w_dbsetup.table_code = t_listes_tables.code + AND t_classes.table_id = t_listes_tables.oid + AND t_classes_sections.classe_id = t_classes.oid + AND w_dbsetup.section_code = t_classes_sections.code + AND w_dbsetup.classe_sequence = t_classes.sequence + AND w_dbsetup.to_code = t_ghm.code + AND t_classes_sections.oid::text || '-' || t_ghm.oid::text NOT IN (SELECT section_id::text || '-' || to_id::text FROM activite.t_classes_sections_elements); + + +SELECT * FROM activite.cti_update_schema_classes('GHM'); \ No newline at end of file diff --git a/db/data/dbdata_activite_t_classes_sections_elements_prestations_c.SQL b/db/data/dbdata_activite_t_classes_sections_elements_prestations_c.SQL new file mode 100644 index 0000000..22df3ad --- /dev/null +++ b/db/data/dbdata_activite_t_classes_sections_elements_prestations_c.SQL @@ -0,0 +1,182 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + t_classes_sections.code AS section_code, + t_prestations.code as to_code, + t_listes_tables.code as table_code, + t_classes.sequence as classe_sequence + FROM + activite.t_classes_sections_elements, + activite.t_classes_sections, + activite.t_classes, + activite.t_listes_tables, + activite.t_prestations + WHERE + t_classes_sections_elements.section_id = t_classes_sections.oid + AND t_classes_sections.classe_id = t_classes.oid + AND t_classes.is_cti = '1' + AND table_id = t_listes_tables.oid + AND t_listes_tables.code = 'PRESTA_C' + AND t_classes_sections_elements.to_id = t_prestations.oid + ORDER BY t_classes.sequence, t_classes_sections.code, t_prestations.code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + section_code, + to_code, + table_code, + classe_sequence +) +VALUES +('S11', 'GHS', 'PRESTA_C', 9), +('S12', 'EXH', 'PRESTA_C', 9), +('S13', 'ANT', 'PRESTA_C', 9), +('S13', 'APE', 'PRESTA_C', 9), +('S13', 'ATU', 'PRESTA_C', 9), +('S13', 'D01', 'PRESTA_C', 9), +('S13', 'D02', 'PRESTA_C', 9), +('S13', 'D03', 'PRESTA_C', 9), +('S13', 'D04', 'PRESTA_C', 9), +('S13', 'D05', 'PRESTA_C', 9), +('S13', 'D06', 'PRESTA_C', 9), +('S13', 'D07', 'PRESTA_C', 9), +('S13', 'D08', 'PRESTA_C', 9), +('S13', 'D09', 'PRESTA_C', 9), +('S13', 'D10', 'PRESTA_C', 9), +('S13', 'D11', 'PRESTA_C', 9), +('S13', 'D12', 'PRESTA_C', 9), +('S13', 'D13', 'PRESTA_C', 9), +('S13', 'D14', 'PRESTA_C', 9), +('S13', 'D15', 'PRESTA_C', 9), +('S13', 'D16', 'PRESTA_C', 9), +('S13', 'D17', 'PRESTA_C', 9), +('S13', 'D18', 'PRESTA_C', 9), +('S13', 'D19', 'PRESTA_C', 9), +('S13', 'D20', 'PRESTA_C', 9), +('S13', 'D21', 'PRESTA_C', 9), +('S13', 'D22', 'PRESTA_C', 9), +('S13', 'D23', 'PRESTA_C', 9), +('S13', 'D24', 'PRESTA_C', 9), +('S13', 'DIP', 'PRESTA_C', 9), +('S13', 'DTP', 'PRESTA_C', 9), +('S13', 'ENT', 'PRESTA_C', 9), +('S13', 'FFM', 'PRESTA_C', 9), +('S13', 'FPU', 'PRESTA_C', 9), +('S13', 'NN1', 'PRESTA_C', 9), +('S13', 'NN2', 'PRESTA_C', 9), +('S13', 'NN3', 'PRESTA_C', 9), +('S13', 'PO1', 'PRESTA_C', 9), +('S13', 'PO2', 'PRESTA_C', 9), +('S13', 'PO3', 'PRESTA_C', 9), +('S13', 'PO4', 'PRESTA_C', 9), +('S13', 'PO5', 'PRESTA_C', 9), +('S13', 'PO6', 'PRESTA_C', 9), +('S13', 'PO7', 'PRESTA_C', 9), +('S13', 'PO8', 'PRESTA_C', 9), +('S13', 'PO9', 'PRESTA_C', 9), +('S13', 'RAP', 'PRESTA_C', 9), +('S13', 'REA', 'PRESTA_C', 9), +('S13', 'REP', 'PRESTA_C', 9), +('S13', 'SE1', 'PRESTA_C', 9), +('S13', 'SE2', 'PRESTA_C', 9), +('S13', 'SE3', 'PRESTA_C', 9), +('S13', 'SE4', 'PRESTA_C', 9), +('S13', 'SE5', 'PRESTA_C', 9), +('S13', 'SE6', 'PRESTA_C', 9), +('S13', 'SE7', 'PRESTA_C', 9), +('S13', 'SFC', 'PRESTA_C', 9), +('S13', 'SNS', 'PRESTA_C', 9), +('S13', 'SRA', 'PRESTA_C', 9), +('S13', 'SRC', 'PRESTA_C', 9), +('S13', 'SSC', 'PRESTA_C', 9), +('S13', 'STF', 'PRESTA_C', 9), +('S19', 'FJA', 'PRESTA_C', 9), +('S19', 'FJC', 'PRESTA_C', 9), +('S19', 'FJL', 'PRESTA_C', 9), +('S19', 'FJR', 'PRESTA_C', 9), +('S19', 'FR2', 'PRESTA_C', 9), +('S19', 'FR3', 'PRESTA_C', 9), +('S19', 'FRL', 'PRESTA_C', 9), +('S19', 'FSD', 'PRESTA_C', 9), +('S19', 'FTG', 'PRESTA_C', 9), +('S19', 'FTN', 'PRESTA_C', 9), +('S19', 'FTR', 'PRESTA_C', 9), +('S19', 'GHT', 'PRESTA_C', 9), +('S19', 'PHJ', 'PRESTA_C', 9), +('S19', 'PJ', 'PRESTA_C', 9), +('S19', 'PMH', 'PRESTA_C', 9), +('S19', 'PY0', 'PRESTA_C', 9), +('S19', 'PY1', 'PRESTA_C', 9), +('S19', 'PY2', 'PRESTA_C', 9), +('S19', 'PY3', 'PRESTA_C', 9), +('S19', 'PY4', 'PRESTA_C', 9), +('S19', 'PY5', 'PRESTA_C', 9), +('S19', 'PY6', 'PRESTA_C', 9), +('S19', 'PY7', 'PRESTA_C', 9), +('S19', 'PY8', 'PRESTA_C', 9), +('S19', 'PY9', 'PRESTA_C', 9), +('S19', 'VDE', 'PRESTA_C', 9), +('S2', 'ETI', 'PRESTA_C', 9), +('S2', 'GLU', 'PRESTA_C', 9), +('S2', 'LEN', 'PRESTA_C', 9), +('S2', 'LUN', 'PRESTA_C', 9), +('S2', 'MAC', 'PRESTA_C', 9), +('S2', 'MAD', 'PRESTA_C', 9), +('S2', 'MAR', 'PRESTA_C', 9), +('S2', 'OP1', 'PRESTA_C', 9), +('S2', 'OP2', 'PRESTA_C', 9), +('S2', 'OP3', 'PRESTA_C', 9), +('S2', 'OP4', 'PRESTA_C', 9), +('S2', 'OP5', 'PRESTA_C', 9), +('S2', 'OP6', 'PRESTA_C', 9), +('S2', 'OPM', 'PRESTA_C', 9), +('S2', 'OPT', 'PRESTA_C', 9), +('S2', 'ORP', 'PRESTA_C', 9), +('S2', 'P', 'PRESTA_C', 9), +('S2', 'PA', 'PRESTA_C', 9), +('S2', 'PAN', 'PRESTA_C', 9), +('S2', 'PAU', 'PRESTA_C', 9), +('S2', 'PEX', 'PRESTA_C', 9), +('S2', 'PII', 'PRESTA_C', 9), +('S2', 'PME', 'PRESTA_C', 9), +('S2', 'POC', 'PRESTA_C', 9), +('S2', 'VEH', 'PRESTA_C', 9), +('S2', 'VER', 'PRESTA_C', 9), +('S3', 'EMI', 'PRESTA_C', 9), +('S3', 'PH1', 'PRESTA_C', 9), +('S3', 'PH4', 'PRESTA_C', 9), +('S3', 'PH7', 'PRESTA_C', 9), +('S3', 'PH8', 'PRESTA_C', 9), +('S3', 'PHH', 'PRESTA_C', 9), +('S3', 'PHP', 'PRESTA_C', 9), +('S3', 'PHQ', 'PRESTA_C', 9), +('S3', 'PHS', 'PRESTA_C', 9), +('S3', 'PHU', 'PRESTA_C', 9), +('S3', 'PMR', 'PRESTA_C', 9) +; + +-- 3/3 : Màj de la table iCTI +INSERT INTO activite.t_classes_sections_elements(section_id, to_id) +SELECT + t_classes_sections.oid, + t_prestations.oid +FROM + w_dbsetup, + activite.t_listes_tables, + activite.t_classes, + activite.t_classes_sections, + activite.t_prestations +WHERE + w_dbsetup.table_code = t_listes_tables.code + AND t_classes.table_id = t_listes_tables.oid + AND t_classes_sections.classe_id = t_classes.oid + AND w_dbsetup.section_code = t_classes_sections.code + AND w_dbsetup.classe_sequence = t_classes.sequence + AND w_dbsetup.to_code = t_prestations.code + AND t_classes_sections.oid::text || '-'::text || t_prestations.oid::text NOT IN (SELECT section_id::text || '-'::text || to_id::text FROM activite.t_classes_sections_elements); + +SELECT * FROM activite.cti_update_schema_classes('PRESTA_C'); \ No newline at end of file diff --git a/db/data/dbdata_activite_t_divers.SQL b/db/data/dbdata_activite_t_divers.SQL new file mode 100644 index 0000000..81fba4a --- /dev/null +++ b/db/data/dbdata_activite_t_divers.SQL @@ -0,0 +1,52 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + t_divers.code, + t_divers.description, + t_divers.show_info_module, + t_divers.texte, + t_divers.valeur, + t_divers.valeur_date::text + FROM + activite.t_divers + ORDER BY code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + code, + description, + show_info_module, + texte, + valeur, + valeur_date +) +VALUES +('DATEFERMETURE', 'Date de fermeture (AAAAMMJJ). Vide si ouvert ', 'f', 'Date fermeture établissement', '', '1970-01-01'), +('EMCHCSSRPSY', '0=1 EMC par séjour, 1=1 EMC par semaine', 'f', 'Mode génération EMC HC SSR ou PSY', '0', '1970-01-01'), +('ETALITCSVFILE', 'Emplacement du fichier CSV qui contient l''historique des places', 'f', 'Emplacement du fichier CSV qui contient l''historique des places', '', '1970-01-01'), +('NOW', 'Date non modifiable', 't', 'Date des derniers mouvements', '', '1970-01-01'), +('NOWCLOTURE', 'Date non modifiable', 't', 'Date clôture', '', '1970-01-01'), +('OPTADM_DAYOUT', '0=JS non inclus sauf DE=DS | 1=JS non inclus | 2=JS inclus', 'f', 'Activite : Comptabilisation du jour de sortie', '0', '1970-01-01'), +('PLACESREF', '', 'f', '', 'ETA', '1970-01-01'), +('SEANCEHOSPIT', '1=Conserver les séances en hospit, 2=Ne conserver que les séances de dialyse, 0=Pas de séance en hospit', 'f', 'Traitement des séances en hospit', '1', '1970-01-01'), +('SIGEMS_CHPDOX', 'Préfixe pour demande CP (separateur virgule et chaque préfixe avec %)', 'f', 'Préfixe pour demande CP', 'P%', '1970-01-01'), +('TAUXSORAVANT', 'par default taux de sortie avant 12hh00', 'f', 'Taux de sortie avant hh:mm', '120000', '1970-01-01') +; + +-- 3/3 : Màj de la table iCTI +INSERT INTO activite.t_divers(code, description, show_info_module, texte, valeur, valeur_date) + SELECT + w_dbsetup.code, + w_dbsetup.description, + w_dbsetup.show_info_module, + w_dbsetup.texte, + w_dbsetup.valeur, + CASE WHEN w_dbsetup.valeur_date = '' THEN '19700101'::date ELSE w_dbsetup.valeur_date::date END AS valeur_date + FROM + w_dbsetup + WHERE w_dbsetup.code NOT IN (SELECT code from activite.t_divers) +; \ No newline at end of file diff --git a/db/data/dbdata_activite_t_etat_sejour.SQL b/db/data/dbdata_activite_t_etat_sejour.SQL new file mode 100644 index 0000000..dad7562 --- /dev/null +++ b/db/data/dbdata_activite_t_etat_sejour.SQL @@ -0,0 +1,66 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + CASE WHEN oid = 0 THEN oid ELSE 1 END AS oid, + code, + texte + FROM activite.t_etat_sejour + ORDER BY code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + oid, + code, + texte +) +VALUES +(0, '0', 'Prévu(s)'), +(1, '1', 'Présent(s)'), +(1, '2', 'Présent(s) avec facturation partielle'), +(1, '3', 'Sorti(s) non groupé(s)'), +(1, '4', 'Sorti(s) facturable(s)'), +(1, '5', 'Sorti(s) non facturé(s) avec facturation partielle'), +(1, '6', 'Facturé(s) non soldé(s)'), +(1, '7', 'Soldé(s)'), +(1, '8', 'Non facturable(s) ou récusé(s)'), +(1, '9', 'Fictif(s)'), +(1, '?', '???'), +(1, 'A', 'Annulé(s)'), +(1, 'C', 'Suspendu(s)'), +(1, 'R', 'Récusé(s)') +; + +-- 3/3 : Màj de la table iCTI +UPDATE activite.t_etat_sejour SET + code = w_dbsetup.code, + texte = w_dbsetup.texte +FROM w_dbsetup +WHERE w_dbsetup.oid = t_etat_sejour.oid AND w_dbsetup.oid = 0; + +UPDATE activite.t_etat_sejour SET + texte = w_dbsetup.texte +FROM w_dbsetup +WHERE 1=1 + AND activite.t_etat_sejour.code = w_dbsetup.code + AND activite.t_etat_sejour.texte IS DISTINCT FROM w_dbsetup.texte +; + +INSERT INTO activite.t_etat_sejour(oid, code, texte) + SELECT oid, code, texte + FROM w_dbsetup + WHERE 1=1 + AND oid = 0 + AND oid NOT IN (SELECT oid FROM activite.t_etat_sejour) +; + +INSERT INTO activite.t_etat_sejour(code, texte) + SELECT code, texte + FROM w_dbsetup + WHERE 1=1 + AND oid <> 0 + AND code NOT IN (SELECT code FROM activite.t_etat_sejour) +; \ No newline at end of file diff --git a/db/data/dbdata_activite_t_expert_controle.SQL b/db/data/dbdata_activite_t_expert_controle.SQL new file mode 100644 index 0000000..2e70712 --- /dev/null +++ b/db/data/dbdata_activite_t_expert_controle.SQL @@ -0,0 +1,137 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + CASE WHEN t_expert_controle.oid = 0 THEN t_expert_controle.oid ELSE 1 END AS controle_id, + t_expert_controle.code as controle_code, + t_expert_controle.texte as controle_texte, + t_expert_controle.texte_court as controle_texte_court, + t_expert_controle.texte_abrege as controle_texte_abrege, + t_expert_controle.description as controle_description, + t_expert_controle.is_cti as controle_is_cti, + t_expert_controle.etat_cible as controle_etat_cible, + t_prestataires.code as prestataire_code + FROM activite.t_expert_controle + LEFT JOIN base.t_prestataires ON t_prestataires.oid = t_expert_controle.prestataire_id + WHERE t_expert_controle.is_cti = '1' AND t_expert_controle.code <> '' + ORDER BY t_expert_controle.code + LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + controle_id, + controle_code, + controle_texte, + controle_texte_court, + controle_texte_abrege, + controle_description, + controle_is_cti, + controle_etat_cible, + prestataire_code +) +VALUES +(1, 'CTI_0ETS', 'Dossiers sortis sans prestations (Aucune facture ni valorisation)', 'Dossiers sortis sans prestations (Aucune facture ni valorisation)', 'Dossiers sortis sans prestations (Aucune facture ni valorisation)', '', '1', 0, ''), +(1, 'CTI_AMB_DE_X_DS', 'Ambulatoires avec date d''entrée différente de date de sortie', 'Ambulatoires avec date d''entrée différente de date de sortie', 'Ambulatoires avec date d''entrée différente de date de sortie', '', '1', 0, ''), +(1, 'CTI_DEL_FAC_30', 'Séjours non facturés avec délai de facture supérieur à 30 jours', 'Séjours non facturés avec délai de facture supérieur à 30 jours', 'Séjours non facturés avec délai de facture supérieur à 30 jours', '', '1', 0, ''), +(1, 'CTI_DTEXP_DTFAC', 'Date d''expédion antérieure à la date de facturation', 'Date d''expédion antérieure à la date de facturation', 'Date d''expédion antérieure à la date de facturation', '', '1', 0, ''), +(1, 'CTI_DTFAC_DTSOR', 'Date de facturation antérieure à la date de sortie', 'Date de facturation antérieure à la date de sortie', 'Date de facturation antérieure à la date de sortie', '', '1', 0, ''), +(1, 'CTI_DTVEN_DTFAC', 'Date de vente antérieure à la date de facturation', 'Date de vente antérieure à la date de facturation', 'Date de vente antérieure à la date de facturation', '', '1', 0, ''), +(1, 'CTI_DUR_SUP_60', 'Dossiers MCO durée supérieur à 2 mois', 'Dossiers MCO durée supérieur à 2 mois', 'Dossiers MCO durée supérieur à 2 mois', '', '1', 0, ''), +(1, 'CTI_EXT_DE_X_DS', 'Externes avec date d''entrée différente de date de sortie', 'Externes avec date d''entrée différente de date de sortie', 'Externes avec date d''entrée différente de date de sortie', '_c_eNptkMFqwzAMhl9FeFDaU9Pl0EOTgOs6IdR1guuNsZtpNAg4SbGd0cefMwa9DCT4fiE+kDLNP3TZqAvVUMsTlzonrwQEp6daVgsXWQtU1JXMieCljrlspIaSMp6Td3SdGQ2Ba/0Z4y4hwBrRqJy8JMc0Tdmi0pqra0vZrzBunLmSf1wIhK/eBofgZwcWYZg6hFjBmT7ggGOAZA9rNo1+tsGEPgJgAD/1CzwCuhH9Bu7ohjjuVuY++QM+bnaOUovPHTDfePvPv0tg/aYqLhnfZNvluiLbtrGfvyl+AFhcWe0=', '1', 0, ''), +(1, 'CTI_LPP_INC_80', 'LPP inclus dans le GHS dont la consommation est séprieure à 80% du GHS', 'LPP inclus sup. à 80% du GHS', 'LPP inclus sup. à 80% du GHS', '', '1', 0, ''), +(1, 'CTI_LPP_NON_FAC', 'LPP en SUS non facturé', 'LPP en SUS non facturé', 'LPP en SUS non facturé', '', '1', 0, ''), +(1, 'CTI_MULTI_TYPES', 'Séjous avec plus d''un type de séjour (ambu, hospit, seances, externe)', 'Séjous avec plus d''un type de séjour (ambu, hospit, seances, externe)', 'Séjous avec plus d''un type de séjour (ambu, hospit, seances, externe)', '', '1', 0, ''), +(1, 'CTI_MVT_ETA_KO', 'Etages inappropriés', 'Etages inappropriés', 'Etages inappropriés', '_c_eNrFkMFOhDAQhl9lUq/G3XWvQIJs2ZBFIGxjjJdNA8MGU0rTFp/Xo3j2AWzJqvHg2UPTmb/NN/P/AaOPLC3r+5hBVuxowUJySyCn8S4r9r6OggriPNsXIclpylyflgWDNE5oSB5Qt1xyAsfsybWbNYGkzMs6JFfru+12m3gUY7Q+VnGyAN2PA62Lpd6QKO+NRWjRgJmfx0kbaEdpYZKLNozTCw4orQE0FnjXYWNneP16ny0/u6tFEBzEN+oi95IrpUel+9ncBCu/dhSsKnd+TEfBPwdQcQ3t3PHJXoNAaMYWf/nxvhOWnSiLT4cSBt47YwIUThberUbQOCjBmxmUI7lcHMmpbinjIS6ORvfK9qO8YPXbWSwjGj9NWv0h8M90PgEtl6i+', '1', 0, ''), +(1, 'CTI_MVT_ETA_NULL', 'Etage non renseigné', 'Etage non renseigné', 'Etage non renseigné', '_c_eNpFT1ELgjAY/CsfC3rV8jEVlk4Z2ZQ1Inob+CGGTNnWf85/kVbQw8HdcRx3sWI3VdTyTBVwkTOhErInUDGac1GuPI0boBUvRUIqVqhFF7VQUNCMJeSKttVGE7jw+yJ3IYGsrmqZkE14jKIoW6uUYvLS0OxTuCROTIofTyVOL4swoAM3P8anddCOxsOw1dPoDrPXHUKL4EbrewTztdF5mLQDi8Zh35k5DtZRaRw0C/6X0jdJb0M4', '1', 0, ''), +(1, 'CTI_MVT_SER_EXT', 'Services Externes : FSEH - SEUR et Mode de traitement 04', 'Services Externes : FSEH - SEUR et Mode de traitement 04', 'Services Externes : FSEH - SEUR et Mode de traitement 04', '', '1', 0, 'SIGEMS'), +(1, 'CTI_MVT_SER_KO', 'Incompatibilité type de séjour (ESPIC - Ex OQN) et code service', 'Incompatibilité type de séjour (ESPIC - Ex OQN) et code service', 'Incompatibilité type de séjour (ESPIC - Ex OQN) et code service', '_c_eNrFkMFqhDAQhl9lSK+lu9u9qmDduMhaFTeU0ssSdCwpMYYk7vP2WHvuAzRKl6WHnnsI/DMTvpn/Dxh9ZmlZP8YMsmJHCxaSewI5jXdZsZ91FFQQ59m+CElOU+brtCwYpHFCQ/KEpuWKEzhmL77crAkkZV7WIblZP2y322RGMUbrYxUnC9D/ONC6WPSGRLmwDqFFC3Z6G0ZjoR2Ug1EtvX4Yz9ijchbQOuBdh42b4P0yt2jOovGiRZAc5BV2GQjFtTaDNmKyd8FqPj0KVpV/V+NR8M8hVNxAO3V8dLcgEZqhxV+OZu8Jy05HWp8OJfRceGMSNI4OPp1BMNhryZsJtCf5bDzJd/1Rdob4QBojtBOD+sGaj1e5rGjmbcqZL4l/pvMNPfepnA==', '1', 0, ''), +(1, 'CTI_MVT_SER_NULL', 'Service non renseigné', 'Service non renseigné', 'Service non renseigné', '', '1', 0, ''), +(1, 'CTI_PRE_SUP_30', 'Présent depuis plus de 30 jours', 'Présent depuis plus de 30 jours', 'Présent depuis plus de 30 jours', '', '1', 0, ''), +(1, 'CTI_SEJSMR_SUPP90', 'Séjours SMR de plus de 90 jours', 'Séjours SMR de plus de 90 jours', 'Séjours SMR de plus de 90 jours', '', '1', 0, ''), +(1, 'CTI_SEJ_AMB_03', 'Ambulatoires avec Mode de Traitement Hospit complète (03)', 'Ambulatoires avec Mode de Traitement Hospit complète (03)', 'Ambulatoires avec Mode de Traitement Hospit complète (03)', '_c_eNrNU1FPgzAQ/isXTMz2NCZvE0iAwSQyWFhnjMY0HdySmlIIFH+vj+5fWJxxzhhf3UPTu971u7vv7mwS3pMoy5cegTidhylxjCsDktCbx+likF17BV4SL1LHSMKIaD3KUgKRF4SOcYdtySQzYB0/aHVqGhBkSZY7xoXpW5YVDFCEhPl65QUfgNrjNszTT9ld75/rvu2AVdteMFXzFjvQkB30EmETfTfASPBOIZSXrKm7615yte9gV8tC8VpKFEL/fYUG+0ZgC6yHpt0zwbYCx1AxrqO8YKGBoapLDYOgWsYVVigVmBaMbuqu4YrpKGxAhKKuGvGmcGxPhppde7LS58iYa/8ze+eaV/dbV2e274Lc0pNHB6b2xD/bQn4M4AwO6F8uUx3PdwXHnra4wxZlgXQYTKQnc0l5qfOHxySeBSSmm4h6S3/zdFL6GTKgy1v+uioDE747rBE9Gmgx+DpwWE/TOtx/tfcdZyxNqw==', '1', 0, ''), +(1, 'CTI_SEJ_DUR_30', 'Séjours sortis non facturés avec durée de séjour supérieure à 30 jours', 'Séjours sortis non facturés avec durée de séjour supérieure à 30 jours', 'Séjours sortis non facturés avec durée de séjour supérieure à 30 jours', '_c_eNpFjtEKwiAYhV/lxx5gK29VMNMhmY5NIrobzIsitnDzfbvdW+RG0MWBc+DjnEO8vHnlmgv3oO1JWk/RAYGR/KRttXpGauBGV5YiI5XPWTnrQXEhKbqG2HdDh6DV9xz3JQLhjGso2pVHjLFYq7yXTVtzsRVm4iwb+/OsXZ5jihP04zDDq4M+xSVAmGaY0nuJj5BigA/gEjaOFOs4I0Wd9b/Ovjb2OgQ=', '1', 2, ''), +(1, 'CTI_SEJ_DUR_NEG', 'Séjours avec date de sortie antérieure à la date d''entrée', 'Séjours avec date de sortie antérieure à la date d''entrée', 'date sortie < date_entree', '', '1', 0, ''), +(1, 'CTI_SEJ_MED_KO', 'Médecins responsables de séjours inappropriés', 'Médecins responsables de séjours inappropriés', 'Médecins responsables de séjours inappropriés', '_c_eNrFkMFOhDAQhl9lUq/G3ZUrkCCUDVkWCNsY42XTlGJquqVpy/t6tJ59AAsxazx49tBk/k77zfx/TPATKdv+mBGomgI3JEH3CGqcFVWzX+o07iCrq32ToBqXJOiybQiUWY4T9MjNQBVFcKqeg9xtEeRt3fYJutk+RFGULyhCcH/qsnwFhhcH3DdrvUNpLazjMHAL1r9Os7FAx5Ez5y28wazWzsUPnAllgwBJQV6/XBtCUa3NpI3w9i7eLAum8aYL58deGv+z1Y4aGPxIZ3cLkgObBv7LEbcOclKdj7g4H1q4UBGMSdB8dvDhDAfDL1pS5kEHUsgmkMJtWMoukBAIM0I7MalvrHl/kesItkxTznxK/mc6X6nfoLg=', '1', 0, ''), +(1, 'CTI_SEJ_MED_NULL', 'Médecin responsable de séjour non renseigné', 'Médecin responsable de séjour non renseigné', 'Médecin responsable de séjour non renseigné', '_c_eNpFj9EKwjAMRX8lVPB16h7dBnXrZDi7UYuIb9UFUWZXF/1n9xd2IviQcO5NuCSRFgedV2rLNRQyE1LHbMGgFDwr5HrkJKqBl8VaxqwUufY6r6SGnKciZnvsG2MNg11x9HI+Y5BWZaViNpmtwjBMxyithdrVPP0G+o2NUPLHiUL37hFaJKDh1r16Auf7aDxe2JIHuA8Nnq8WeiTXWTIn79mpcR0tkZ7gDPmRJbxe7BAF43VJFNS+/r8lH/HxRzY=', '1', 0, ''), +(1, 'CTI_SEJ_SER_FINESS', 'Service non associé à un établissement', 'Service non associé à un établissement', 'Service non associé à un établissement', '_c_eNpFj8FOhEAQRH+lMiZGT7srNwWSkR02KA5kmBjjbWTbZMwKSIPf61H+wmEvHjqpqnS/VMdWvdi8Mk/SotB7pW0ibgRKJfeFPqw6jWvIsjjoRJQqt8HnlbbIZaYS8Uzj0XVOoCleg91tBbKqrEwiLrb3URRlK8paZZpaZmdg2HhURp/1TqSGht+RcCIGLx/9PDKOfTeFAEzjt28J3aUber4jnjA4hmPuW7/gB3OHZXJvJ89MnxSOrpphaf27/5oJt3iYV2po2NF1vFlLp/GmDvP/cvoH089PUA==', '1', 0, ''), +(1, 'CTI_UCD_INC_80', 'UCD inclus dans GHS dont la consommation est supérieure à 80% du GHS', 'UCD Inclus sup à 80% du GHS', 'UCD Inclus sup à 80% du GHS', '', '1', 0, ''), +(1, 'CTI_UCD_NON_FACT', 'UCD en SUS non facturé', 'UCD en SUS non facturé', 'UCD en SUS non facturé', '', '1', 0, ''), +(1, 'CTI_VAL_SUP_20K', 'Dossiers valorisés > 20 000', 'Dossiers valorisés > 20 000', 'Dossiers valorisés > 20 000', '', '1', 0, '') +; + +-- 3/3 : Màj de la table iCTI +UPDATE activite.t_expert_controle SET + texte = w_dbsetup.controle_texte, + texte_court = w_dbsetup.controle_texte_court, + texte_abrege = w_dbsetup.controle_texte_abrege, + description = w_dbsetup.controle_description, + is_cti = w_dbsetup.controle_is_cti, + etat_cible = w_dbsetup.controle_etat_cible, + prestataire_id = COALESCE(t_prestataires.oid, -1) +FROM w_dbsetup + LEFT JOIN base.t_prestataires ON t_prestataires.code = w_dbsetup.prestataire_code +WHERE t_expert_controle.code = w_dbsetup.controle_code +AND ( + t_expert_controle.texte IS DISTINCT FROM w_dbsetup.controle_texte OR + t_expert_controle.texte_court IS DISTINCT FROM w_dbsetup.controle_texte_court OR + t_expert_controle.texte_abrege IS DISTINCT FROM w_dbsetup.controle_texte_abrege OR + t_expert_controle.description IS DISTINCT FROM w_dbsetup.controle_description OR + t_expert_controle.is_cti IS DISTINCT FROM w_dbsetup.controle_is_cti OR + t_expert_controle.etat_cible IS DISTINCT FROM w_dbsetup.controle_etat_cible OR + t_prestataires.code != w_dbsetup.prestataire_code +); + +UPDATE activite.t_expert_controle +SET gravite_id = 5 +WHERE gravite_id IS NULL OR gravite_id NOT IN (0,5,9); + +UPDATE activite.t_expert_controle +SET is_hide = '0' +WHERE is_hide IS NULL OR is_hide NOT IN ('0','1'); + +UPDATE activite.t_expert_controle +SET etat_cible = 0 +WHERE etat_cible IS NULL; + +UPDATE activite.t_expert_controle +SET prestataire_id = -1 +WHERE prestataire_id IS NULL; + +UPDATE activite.t_expert_controle +SET is_active = '1' +WHERE is_active IS NULL; + + +INSERT INTO activite.t_expert_controle( + code, + texte, + texte_court, + texte_abrege, + description, + is_cti, + gravite_id, + is_hide, + etat_cible, + prestataire_id, + is_active + ) +SELECT + w_dbsetup.controle_code, + w_dbsetup.controle_texte, + w_dbsetup.controle_texte_court, + w_dbsetup.controle_texte_abrege, + w_dbsetup.controle_description, + w_dbsetup.controle_is_cti, + 5, + '0', + w_dbsetup.controle_etat_cible, + COALESCE(t_prestataires.oid, -1), + '1' +FROM w_dbsetup + LEFT JOIN base.t_prestataires ON t_prestataires.code = w_dbsetup.prestataire_code +WHERE + w_dbsetup.controle_id <> 0 + AND w_dbsetup.controle_code NOT IN (SELECT code FROM activite.t_expert_controle WHERE code IS NOT NULL); \ No newline at end of file diff --git a/db/data/dbdata_activite_t_expert_controle_rule.SQL b/db/data/dbdata_activite_t_expert_controle_rule.SQL new file mode 100644 index 0000000..528b744 --- /dev/null +++ b/db/data/dbdata_activite_t_expert_controle_rule.SQL @@ -0,0 +1,192 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + CASE WHEN t_expert_controle_rule.oid = 0 THEN t_expert_controle_rule.oid ELSE 1 END AS oid, + t_expert_controle.code AS controle_code, + t_expert_controle_rule.numero, + t_expert_controle_rule.sqlcmd_where, + t_expert_controle_rule.sqlcmd_justificatif, + t_expert_controle_rule.table_id as tab + FROM activite.t_expert_controle_rule + JOIN activite.t_expert_controle ON controle_id = t_expert_controle.oid + WHERE t_expert_controle.is_cti = '1' AND + t_expert_controle.code <> '' + ORDER BY t_expert_controle.code, t_expert_controle_rule.numero + LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + oid, + controle_code, + numero, + sqlcmd_where, + sqlcmd_justificatif, + tab +) +VALUES +(1, 'CTI_0ETS', 1, 'code_sorti = 1 AND nb_rubriques_c = 0 AND nb_rubriques_h = 0 AND type_sejour<>3 ', '', 2), +(1, 'CTI_0ETS', 2, '', '', 0), +(1, 'CTI_0ETS', 3, '', '', 0), +(1, 'CTI_AMB_DE_X_DS', 1, 'nb_ambulatoires = 1 AND date != date_sortie', '', 1), +(1, 'CTI_AMB_DE_X_DS', 2, '', '', 0), +(1, 'CTI_AMB_DE_X_DS', 3, '', '', 0), +(1, 'CTI_DEL_FAC_30', 1, 'SELECT v_sejours_1.sejour_id, v_sejours_1.no_sejour, v_sejours_1.date_sortie, v_mouvements_sejour_2.est_facture FROM activite.v_sejours_1 JOIN activite.v_mouvements_sejour_2 on v_mouvements_sejour_2.sejour_id=v_sejours_1.sejour_id WHERE ((select valeur_date from activite.t_divers where code=''NOW'')- v_sejours_1.date_sortie) >30 AND v_mouvements_sejour_2.est_facture=''0''', '', 99), +(1, 'CTI_DEL_FAC_30', 2, '', '', 0), +(1, 'CTI_DEL_FAC_30', 3, '', '', 0), +(1, 'CTI_DTEXP_DTFAC', 1, 'date_expedition < date_facture', 'date_expedition, date_facture', 0), +(1, 'CTI_DTEXP_DTFAC', 2, '', '', 0), +(1, 'CTI_DTEXP_DTFAC', 3, '', '', 0), +(1, 'CTI_DTFAC_DTSOR', 1, 'date_facture < date_sortie and date_sortie is distinct from null', 'date_facture', 0), +(1, 'CTI_DTFAC_DTSOR', 2, '', '', 0), +(1, 'CTI_DTFAC_DTSOR', 3, '', '', 0), +(1, 'CTI_DTVEN_DTFAC', 1, 'date_vente < date_facture', 'date_vente, date_facture', 2), +(1, 'CTI_DTVEN_DTFAC', 2, '', '', 0), +(1, 'CTI_DTVEN_DTFAC', 3, '', '', 0), +(1, 'CTI_DUR_SUP_60', 1, 'type_t2a <> 2 and type_t2a <> 3 and duree>60', '', 2), +(1, 'CTI_DUR_SUP_60', 2, '', '', 0), +(1, 'CTI_DUR_SUP_60', 3, '', '', 0), +(1, 'CTI_EXT_DE_X_DS', 1, 'nb_externes = 1 +AND date != date_sortie +AND mode_traitement_code = ''07''', '', 1), +(1, 'CTI_EXT_DE_X_DS', 2, '', '', 0), +(1, 'CTI_EXT_DE_X_DS', 3, '', '', 0), +(1, 'CTI_LPP_INC_80', 1, 'DROP TABLE IF EXISTS w_res; CREATE TEMP TABLE w_res AS SELECT v_sejours_1.sejour_id ,v_sejours_1.no_sejour ,v_sejours_1.date_sortie ,type_sejour ,code_prevu ,v_factures_lignes_c_1.montant_facture ,array_to_string(array_agg(DISTINCT t_lpp.code),'','') AS lpp_codes ,sum(sortie_montant - entree_montant) AS sortie_montant ,round(100*base.cti_division(sum(sortie_montant - entree_montant), v_factures_lignes_c_1.montant_facture),2) AS rapport FROM eco.p_sejours JOIN eco.p_mouvements_articles ON mouvement_id = p_mouvements_articles.oid JOIN activite.v_sejours_1 ON p_sejours.sejour_id = v_sejours_1.sejour_id LEFT JOIN base.t_finess ON v_sejours_1.finess = t_finess.code JOIN eco.t_lpp_c ON lpp_id = t_lpp_c.oid JOIN base.t_lpp ON t_lpp_c.code = t_lpp.code JOIN (SELECT no_sejour ,sum(montant_facture) AS montant_facture FROM activite.v_factures_lignes_c_1 WHERE prestation_code = ''GHS'' GROUP BY 1 ) v_factures_lignes_c_1 ON v_factures_lignes_c_1.no_sejour = p_sejours.no_sejour LEFT JOIN (SELECT no_sejour ,lpp_id ,rubrique_facturation_id ,sum(montant_facture) AS montant_facture FROM activite.v_factures_lignes_c_5 GROUP BY 1,2,3 ) v_factures_lignes_c_5 ON p_sejours.no_sejour = v_factures_lignes_c_5.no_sejour AND ( rubrique_facturation_id IN ( SELECT to_id FROM activite.t_listes LEFT JOIN activite.t_listes_contenu ON liste_id = t_listes.oid WHERE t_listes.code = ''CTI_PROTHESE_R'' ) OR t_lpp_c.oid = v_factures_lignes_c_5.lpp_id ) WHERE p_mouvements_articles.lpp_id != 0 AND type_mouvement_id IN ( SELECT to_id FROM eco.t_classes JOIN eco.t_classes_sections ON classe_id = t_classes.oid JOIN eco.t_classes_sections_elements ON section_id = t_classes_sections.oid WHERE t_classes.code = ''CTI_TYPMVT'' AND t_classes_sections.code = ''01'' ) AND sortie_montant != 0 AND v_factures_lignes_c_1.montant_facture > 0 AND v_factures_lignes_c_5.montant_facture IS NULL GROUP BY 1,2,3,4,5,6 HAVING base.cti_division(sum(sortie_montant), v_factures_lignes_c_1.montant_facture) > 0.8; SELECT sejour_id, no_sejour, date_sortie, lpp_codes, montant_facture, sortie_montant, rapport FROM w_res WHERE 1 = 1', 'montant_facture, sortie_montant, rapport', 99), +(1, 'CTI_LPP_INC_80', 2, '', '', 0), +(1, 'CTI_LPP_INC_80', 3, '', '', 0), +(1, 'CTI_LPP_NON_FAC', 1, 'SELECT v_sejours_1.sejour_id, v_sejours_1.no_sejour, v_sejours_1.date_sortie, t_lpp.code as lpp_code, t_lpp_sus.date_debut as date_debut_lpp, t_lpp_sus.date_fin as date_fin_lpp, sortie_montant-entree_montant AS sortie_montant, montant_facture FROM eco.p_sejours JOIN eco.p_mouvements_articles ON mouvement_id = p_mouvements_articles.oid JOIN activite.v_sejours_1 ON p_sejours.sejour_id = v_sejours_1.sejour_id JOIN base.t_finess ON v_sejours_1.finess = t_finess.code JOIN eco.t_lpp_c on lpp_id = t_lpp_c.oid JOIN pmsi.t_lpp on t_lpp.code = t_lpp_c.code LEFT JOIN base.t_lpp_sus on t_lpp_sus.lpp_id = t_lpp_c.oid AND date BETWEEN t_lpp_sus.date_debut AND t_lpp_sus.date_fin LEFT JOIN activite.v_factures_lignes_c_5 on p_sejours.no_sejour = v_factures_lignes_c_5.no_sejour AND (rubrique_facturation_id IN ( SELECT to_id FROM activite.t_listes LEFT JOIN activite.t_listes_contenu ON liste_id = t_listes.oid WHERE t_listes.code = ''CTI_PROTHESE_R'') OR v_factures_lignes_c_5.lpp_id = t_lpp_c.oid) WHERE p_mouvements_articles.lpp_id != 0 AND type_mouvement_id IN (SELECT to_id FROM eco.t_classes JOIN eco.t_classes_sections ON classe_id = t_classes.oid JOIN eco.t_classes_sections_elements ON section_id = t_classes_sections.oid WHERE t_classes.code = ''CTI_TYPMVT'' and t_classes_sections.code = ''01'') AND t_lpp_sus.date_debut IS NOT NULL AND (sortie_montant-entree_montant) > 0 AND v_factures_lignes_c_5.montant_facture IS NULL AND v_sejours_1.type_sejour = ''1''', 'lpp_code, date_debut_lpp, date_fin_lpp, sortie_montant', 99), +(1, 'CTI_LPP_NON_FAC', 2, '', '', 0), +(1, 'CTI_LPP_NON_FAC', 3, '', '', 0), +(1, 'CTI_MULTI_TYPES', 1, 'SELECT v_sejours_1.sejour_id, v_sejours_1.no_sejour, v_sejours_1.date_sortie, nb_ambulatoires, nb_entrees_directes, nb_seances, nb_externes FROM activite.v_mouvements_sejour_2 JOIN activite.v_sejours_1 using (no_sejour) WHERE nb_ambulatoires + nb_entrees_directes + nb_seances + nb_externes > 1', 'nb_ambulatoires, nb_entrees_directes, nb_seances, nb_externes', 99), +(1, 'CTI_MULTI_TYPES', 2, '', '', 0), +(1, 'CTI_MULTI_TYPES', 3, '', '', 0), +(1, 'CTI_MVT_ETA_KO', 1, 'lieu_etage_id IN [LI:CTI_ETA_KO]', 'lieu_etage_code', 1), +(1, 'CTI_MVT_ETA_KO', 2, '', '', 0), +(1, 'CTI_MVT_ETA_KO', 3, '', '', 0), +(1, 'CTI_MVT_ETA_NULL', 1, 'lieu_etage_id = 0 OR lieu_etage_id is null', '', 1), +(1, 'CTI_MVT_ETA_NULL', 2, '', '', 0), +(1, 'CTI_MVT_ETA_NULL', 3, '', '', 0), +(1, 'CTI_MVT_SER_EXT', 1, 'lieu_service_code = ''FSEH_04'' OR lieu_service_code = ''SEUR_04''', 'lieu_service_code', 1), +(1, 'CTI_MVT_SER_EXT', 2, '', '', 0), +(1, 'CTI_MVT_SER_EXT', 3, '', '', 0), +(1, 'CTI_MVT_SER_KO', 1, 'lieu_service_id IN [LI:CTI_SER_KO]', 'lieu_service_code', 1), +(1, 'CTI_MVT_SER_KO', 2, '', '', 0), +(1, 'CTI_MVT_SER_KO', 3, '', '', 0), +(1, 'CTI_MVT_SER_NULL', 1, 'lieu_service_id = 0 OR lieu_service_id is null', '', 1), +(1, 'CTI_MVT_SER_NULL', 2, '', '', 0), +(1, 'CTI_MVT_SER_NULL', 3, '', '', 0), +(1, 'CTI_PRE_SUP_30', 1, 'SELECT v_sejours_1.sejour_id, v_sejours_1.no_sejour, v_sejours_1.date_sortie, v_sejours_1.date_entree, v_sejours_1.code_sorti FROM activite.v_sejours_1 WHERE ((select valeur_date from activite.t_divers where code=''NOW'')- v_sejours_1.date_entree) >30 AND v_sejours_1.code_sorti<>''1'' AND v_sejours_1.type_sejour <> ''9'' ', '', 99), +(1, 'CTI_PRE_SUP_30', 2, '', '', 0), +(1, 'CTI_PRE_SUP_30', 3, '', '', 0), +(1, 'CTI_SEJSMR_SUPP90', 1, 'SELECT + v_sejours_1.sejour_id, + v_sejours_1.no_sejour, + v_sejours_1.date_sortie, + v_sejours_1.date_entree, + v_sejours_1.code_sorti +FROM + activite.v_sejours_1 + JOIN activite.t_lieux_c on lieu_sortie_id = t_lieux_c.oid +WHERE + date(now()) - v_sejours_1.date_entree > 90 + AND v_sejours_1.code_sorti <> ''1'' + AND v_sejours_1.type_sejour <> ''9'' + AND t_lieux_c.type_t2a = ''2'' + AND v_sejours_1.mode_traitement_code <> ''04'' + AND NOT EXISTS ( + SELECT + v_sejours_1.no_sejour + FROM + activite.p_factures + WHERE + code_facture = ''1'' + AND v_sejours_1.no_sejour = p_factures.no_sejour + ) +', '', 99), +(1, 'CTI_SEJSMR_SUPP90', 2, '', '', 0), +(1, 'CTI_SEJSMR_SUPP90', 3, '', '', 0), +(1, 'CTI_SEJ_AMB_03', 1, 'mode_traitement_code = ''03'' AND lieu_reference_unite_fonctionnelle_id IN [LI:CTI_UF_AMBU] AND nb_ambulatoires = 1', 'lieu_reference_service_code', 1), +(1, 'CTI_SEJ_AMB_03', 2, '', '', 0), +(1, 'CTI_SEJ_AMB_03', 3, '', '', 0), +(1, 'CTI_SEJ_DUR_30', 1, 'duree > 30', 'duree', 0), +(1, 'CTI_SEJ_DUR_30', 2, '', '', 0), +(1, 'CTI_SEJ_DUR_30', 3, '', '', 0), +(1, 'CTI_SEJ_DUR_NEG', 1, 'date_sortie < date_entree', 'duree', 0), +(1, 'CTI_SEJ_DUR_NEG', 2, '', '', 0), +(1, 'CTI_SEJ_DUR_NEG', 3, '', '', 0), +(1, 'CTI_SEJ_MED_KO', 1, 'medecin_adm_sejour_id IN [LI:CTI_MED_KO]', 'medecin_adm_sejour_code', 0), +(1, 'CTI_SEJ_MED_KO', 2, '', '', 0), +(1, 'CTI_SEJ_MED_KO', 3, '', '', 0), +(1, 'CTI_SEJ_MED_NULL', 1, '((medecin_adm_sejour_id = 0 OR medecin_adm_sejour_id is null)AND (type_sejour<>9))', '', 0), +(1, 'CTI_SEJ_MED_NULL', 2, '', '', 0), +(1, 'CTI_SEJ_MED_NULL', 3, '', '', 0), +(1, 'CTI_SEJ_SER_FINESS', 1, 'SELECT + v_sejours_1.sejour_id, + v_sejours_1.no_sejour, + v_sejours_1.date_sortie, + service_facturation_code +FROM + activite.v_sejours_1 + JOIN + ( + SELECT t_services_facturation.oid, t_services_facturation.code as service_facturation_code, t_finess.code AS finess_code + FROM activite.t_services_facturation + LEFT JOIN base.t_finess on t_finess.oid = t_services_facturation.finess_id + ) subview ON subview.oid = v_sejours_1.lieu_sortie_service_id +WHERE + subview.finess_code is null', 'service_facturation_code', 99), +(1, 'CTI_SEJ_SER_FINESS', 2, '', '', 0), +(1, 'CTI_SEJ_SER_FINESS', 3, '', '', 0), +(1, 'CTI_UCD_INC_80', 1, 'DROP TABLE IF EXISTS w_res; CREATE TEMP TABLE w_res AS SELECT v_sejours_1.sejour_id ,v_sejours_1.no_sejour ,v_sejours_1.date_sortie ,type_sejour ,code_prevu ,v_factures_lignes_c_1.montant_facture ,array_to_string(array_agg(DISTINCT t_ucd.code),'','') AS ucd_codes ,sum(sortie_montant - entree_montant) AS sortie_montant ,round(100*base.cti_division(sum(sortie_montant - entree_montant), v_factures_lignes_c_1.montant_facture),2) AS rapport FROM eco.p_sejours JOIN eco.p_mouvements_articles ON mouvement_id = p_mouvements_articles.oid JOIN activite.v_sejours_1 ON p_sejours.sejour_id = v_sejours_1.sejour_id LEFT JOIN base.t_finess ON v_sejours_1.finess = t_finess.code JOIN eco.t_ucd_c ON ucd_id = t_ucd_c.oid JOIN pmsi.t_ucd ON t_ucd_c.code = t_ucd.code LEFT JOIN pmsi.t_prestations ON t_ucd.prestation_defaut_id = t_prestations.oid LEFT JOIN pmsi.t_ucd_tarifs ON t_ucd_tarifs.ucd_id = t_ucd.oid AND DATE BETWEEN t_ucd_tarifs.date_debut AND LEAST(t_ucd_tarifs.date_fin, top_taa_date_fin) JOIN ( SELECT no_sejour ,sum(montant_facture) AS montant_facture FROM activite.v_factures_lignes_c_1 WHERE prestation_code = ''GHS'' GROUP BY 1 ) v_factures_lignes_c_1 ON v_factures_lignes_c_1.no_sejour = p_sejours.no_sejour LEFT JOIN ( SELECT no_sejour ,ucd_id ,rubrique_facturation_id ,sum(montant_facture) AS montant_facture FROM activite.v_factures_lignes_c_5 GROUP BY 1,2,3 ) v_factures_lignes_c_5 ON p_sejours.no_sejour = v_factures_lignes_c_5.no_sejour AND ( rubrique_facturation_id IN ( SELECT to_id FROM activite.t_listes LEFT JOIN activite.t_listes_contenu ON liste_id = t_listes.oid WHERE t_listes.code = ''CTI_UCD_R'' ) OR t_ucd_c.oid = v_factures_lignes_c_5.ucd_id ) WHERE p_mouvements_articles.ucd_id != 0 AND type_mouvement_id IN ( SELECT to_id FROM eco.t_classes JOIN eco.t_classes_sections ON classe_id = t_classes.oid JOIN eco.t_classes_sections_elements ON section_id = t_classes_sections.oid WHERE t_classes.code = ''CTI_TYPMVT'' AND t_classes_sections.code = ''01'' ) AND (sortie_montant - entree_montant) != 0 AND v_factures_lignes_c_1.montant_facture > 0 AND v_factures_lignes_c_5.montant_facture IS NULL GROUP BY 1,2,3,4,5,6 HAVING base.cti_division(sum(sortie_montant), v_factures_lignes_c_1.montant_facture) > 0.8; SELECT sejour_id, no_sejour, date_sortie,ucd_codes, montant_facture, sortie_montant, rapport FROM w_res WHERE 1 = 1', 'ucd_codes, montant_facture, sortie_montant, rapport', 99), +(1, 'CTI_UCD_INC_80', 2, '', '', 0), +(1, 'CTI_UCD_INC_80', 3, '', '', 0), +(1, 'CTI_UCD_NON_FACT', 1, 'SELECT v_sejours_1.sejour_id, v_sejours_1.no_sejour, v_sejours_1.date_sortie, t_ucd.code AS ucd_code, t_ucd_tarifs.date_debut AS date_debut_ucd, t_ucd_tarifs.date_fin AS date_fin_ucd, sortie_montant-entree_montant AS sortie_montant FROM eco.p_sejours JOIN eco.p_mouvements_articles ON mouvement_id = p_mouvements_articles.oid JOIN activite.v_sejours_1 ON p_sejours.sejour_id = v_sejours_1.sejour_id JOIN eco.t_ucd_c on ucd_id = t_ucd_c.oid JOIN pmsi.t_ucd on t_ucd_c.code = t_ucd.code JOIN pmsi.t_ucd_tarifs on t_ucd_tarifs.ucd_id = t_ucd.oid AND date BETWEEN t_ucd_tarifs.date_debut AND LEAST(t_ucd_tarifs.date_fin,top_taa_date_fin) LEFT JOIN activite.v_factures_lignes_c_5 on p_sejours.sejour_id = v_factures_lignes_c_5.sejour_id AND (rubrique_facturation_id IN (SELECT to_id FROM activite.t_listes JOIN activite.t_listes_contenu ON t_listes.oid = liste_id WHERE t_listes.code = ''CTI_UCD_R'') OR v_factures_lignes_c_5.lpp_id = t_ucd_c.oid) WHERE p_mouvements_articles.ucd_id != 0 AND sortie_montant != 0 AND v_sejours_1.type_sejour = ''1'' AND v_factures_lignes_c_5.montant_facture is null', 'ucd_code, date_debut_ucd, date_fin_ucd, sortie_montant', 99), +(1, 'CTI_UCD_NON_FACT', 2, '', '', 0), +(1, 'CTI_UCD_NON_FACT', 3, '', '', 0), +(1, 'CTI_VAL_SUP_20K', 1, 'montant_encours>20000', '', 2), +(1, 'CTI_VAL_SUP_20K', 2, '', '', 0), +(1, 'CTI_VAL_SUP_20K', 3, '', '', 0) +; + +-- 3/3 : Màj de la table iCTI +UPDATE activite.t_expert_controle_rule +SET numero = 1 +WHERE numero IS NULL or NUMERO NOT IN (1,2,3); + +UPDATE activite.t_expert_controle_rule +SET + sqlcmd_where = w_dbsetup.sqlcmd_where, + sqlcmd_justificatif = w_dbsetup.sqlcmd_justificatif, + table_id = w_dbsetup.tab +FROM w_dbsetup + JOIN activite.t_expert_controle ON t_expert_controle.code = w_dbsetup.controle_code +WHERE t_expert_controle_rule.controle_id = t_expert_controle.oid AND + t_expert_controle_rule.numero = w_dbsetup.numero AND + ( + t_expert_controle_rule.sqlcmd_where IS DISTINCT FROM w_dbsetup.sqlcmd_where OR + t_expert_controle_rule.table_id IS DISTINCT FROM w_dbsetup.tab OR + t_expert_controle_rule.sqlcmd_justificatif IS DISTINCT FROM w_dbsetup.sqlcmd_justificatif + ); + +INSERT INTO activite.t_expert_controle_rule ( + controle_id, + numero, + sqlcmd_where, + sqlcmd_justificatif, + table_id +) +SELECT + t_expert_controle.oid, + w_dbsetup.numero, + w_dbsetup.sqlcmd_where, + w_dbsetup.sqlcmd_justificatif, + w_dbsetup.tab +FROM w_dbsetup + JOIN activite.t_expert_controle ON t_expert_controle.code = w_dbsetup.controle_code + LEFT JOIN activite.t_expert_controle_rule ON + t_expert_controle_rule.controle_id = t_expert_controle.oid AND + t_expert_controle_rule.numero = w_dbsetup.numero +WHERE t_expert_controle_rule.oid IS NULL; \ No newline at end of file diff --git a/db/data/dbdata_activite_t_forme_activite.SQL b/db/data/dbdata_activite_t_forme_activite.SQL new file mode 100644 index 0000000..c1ff2d1 --- /dev/null +++ b/db/data/dbdata_activite_t_forme_activite.SQL @@ -0,0 +1,102 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + CASE WHEN oid = 0 THEN oid ELSE 1 END AS oid, + code, + texte, + texte_court + FROM activite.t_forme_activite + ORDER BY code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + oid, + code, + texte, + texte_court +) +VALUES +(0, '***', 'Non renseignée', 'Non renseignée'), +(1, '111', 'Hospitalisation complète MCO Médecine', 'Hospitalisation complète MCO Médecine'), +(1, '112', 'Hospitalisation complète MCO Chirurgie', 'Hospitalisation complète MCO Chirurgie'), +(1, '113', 'Hospitalisation complète MCO Obstétrique', 'Hospitalisation complète MCO Obstétrique'), +(1, '114', 'Hospitalisation complète MCO Esthétique', 'Hospitalisation complète MCO Esthétique'), +(1, '117', 'Hospitalisation complète MCO A préciser', 'Hospitalisation complète MCO A préciser'), +(1, '118', 'Hospitalisation complète MCO A préciser', 'Hospitalisation complète MCO A préciser'), +(1, '119', 'Hospitalisation complète MCO Autre', 'Hospitalisation complète MCO Autre'), +(1, '121', 'Hospitalisation de jour MCO Médecine', 'Hospitalisation de jour MCO Médecine'), +(1, '122', 'Hospitalisation de jour MCO Chirurgie', 'Hospitalisation de jour MCO Chirurgie'), +(1, '123', 'Hospitalisation de jour MCO Obstétrique', 'Hospitalisation de jour MCO Obstétrique'), +(1, '124', 'Hospitalisation de jour MCO Esthétique', 'Hospitalisation de jour MCO Esthétique'), +(1, '127', 'Hospitalisation de jour MCO A préciser', 'Hospitalisation de jour MCO A préciser'), +(1, '128', 'Hospitalisation de jour MCO A préciser', 'Hospitalisation de jour MCO A préciser'), +(1, '129', 'Hospitalisation de jour MCO Autre', 'Hospitalisation de jour MCO Autre'), +(1, '131', 'Séances de dialyse', 'Séances de dialyse'), +(1, '132', 'Séances de chimiothérapie', 'Séances de chimiothérapie'), +(1, '133', 'Séances de transfusion', 'Séances de transfusion'), +(1, '139', 'Autres séances', 'Autres séances'), +(1, '211', 'Hospitalisation complète SSR Soins de Suite Médicalisés', 'Hospitalisation complète SSR Soins de Suite Médicalisés'), +(1, '212', 'Hospitalisation complète SSR Rééducation Fonctionnelle', 'Hospitalisation complète SSR Rééducation Fonctionnelle'), +(1, '217', 'Hospitalisation complète SSR A préciser', 'Hospitalisation complète SSR A préciser'), +(1, '218', 'Hospitalisation complète SSR A préciser', 'Hospitalisation complète SSR A préciser'), +(1, '219', 'Hospitalisation complète SSR Autre', 'Hospitalisation complète SSR Autre'), +(1, '221', 'Hospitalisation de jour SSR Soins de Suite Médicalisés', 'Hospitalisation de jour SSR Soins de Suite Médicalisés'), +(1, '222', 'Hospitalisation de jour SSR Rééducation Fonctionnelle', 'Hospitalisation de jour SSR Rééducation Fonctionnelle'), +(1, '227', 'Hospitalisation de jour SSR A préciser', 'Hospitalisation de jour SSR A préciser'), +(1, '228', 'Hospitalisation de jour SSR A préciser', 'Hospitalisation de jour SSR A préciser'), +(1, '229', 'Hospitalisation de jour SSR Autre', 'Hospitalisation de jour SSR Autre'), +(1, '311', 'Hospitalisation complète PSY', 'Hospitalisation complète PSY'), +(1, '317', 'Hospitalisation complète PSY A préciser', 'Hospitalisation complète PSY A préciser'), +(1, '318', 'Hospitalisation complète PSY A préciser', 'Hospitalisation complète PSY A préciser'), +(1, '319', 'Hospitalisation complète PSY Autre', 'Hospitalisation complète PSY Autre'), +(1, '321', 'Hospitalisation de jour PSY', 'Hospitalisation de jour PSY'), +(1, '327', 'Hospitalisation de jour PSY A préciser', 'Hospitalisation de jour PSY A préciser'), +(1, '328', 'Hospitalisation de jour PSY A préciser', 'Hospitalisation de jour PSY A préciser'), +(1, '329', 'Hospitalisation de jour PSY Autre', 'Hospitalisation de jour PSY Autre'), +(1, '401', 'Hospitalisation à Domicile', 'Hospitalisation à Domicile'), +(1, '501', 'EHPAD', 'EHPAD'), +(1, '502', 'USLD', 'USLD'), +(1, '503', 'Foyer de vie', 'Foyer de vie'), +(1, '701', 'Activité SE', 'Activité SE'), +(1, '702', 'Urgences Externes', 'Urgences Externes'), +(1, '709', 'Autres externes', 'Autres externes'), +(1, '999', 'Autres formes d''activité', 'Autres formes d''activité') +; + +-- 3/3 : Màj de la table iCTI +UPDATE activite.t_forme_activite SET + code = w_dbsetup.code, + texte = w_dbsetup.texte, texte_court = w_dbsetup.texte_court +FROM w_dbsetup +WHERE w_dbsetup.oid = t_forme_activite.oid AND w_dbsetup.oid = 0; + +UPDATE activite.t_forme_activite SET + texte = w_dbsetup.texte, + texte_court = w_dbsetup.texte +FROM w_dbsetup +WHERE activite.t_forme_activite.code = w_dbsetup.code AND + ( + activite.t_forme_activite.texte IS DISTINCT FROM w_dbsetup.texte OR + activite.t_forme_activite.texte_court IS DISTINCT FROM w_dbsetup.texte_court + ) +; + +INSERT INTO activite.t_forme_activite(oid, code, texte, texte_court) + SELECT oid, code, texte, texte_court + FROM w_dbsetup + WHERE oid = 0 AND + oid NOT IN (SELECT oid FROM activite.t_forme_activite) +; + +INSERT INTO activite.t_forme_activite(code, texte, texte_court) + SELECT code, texte, texte_court + FROM w_dbsetup + WHERE oid <> 0 AND + code NOT IN (SELECT code FROM activite.t_forme_activite WHERE code IS NOT NULL) +; + +SELECT activite.cti_update_schema_classes('FORMEACTIVITE'); \ No newline at end of file diff --git a/db/data/dbdata_activite_t_indicateur_theme.SQL b/db/data/dbdata_activite_t_indicateur_theme.SQL new file mode 100644 index 0000000..192be60 --- /dev/null +++ b/db/data/dbdata_activite_t_indicateur_theme.SQL @@ -0,0 +1,100 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + CASE WHEN t_indicateur_theme.oid = 0 THEN t_indicateur_theme.oid ELSE 1 END AS oid, + t_indicateur_theme.code, + t_indicateur_theme.texte, + t_indicateur_theme.level, + COALESCE(t_indicateur_parent_theme.code,'') AS parent_code + FROM activite.t_indicateur_theme + LEFT JOIN activite.t_indicateur_theme t_indicateur_parent_theme ON t_indicateur_theme.parent_id = t_indicateur_parent_theme.oid + ORDER BY 2 LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + oid, + code, + texte, + level, + parent_code +) +VALUES +(1, '--0', 'Source', 1, ''), +(1, '--1', 'Thèmes principaux', 1, ''), +(1, '--2', 'Période', 1, ''), +(1, '--3', 'Rapports et essentiels', 1, ''), +(1, '--4', 'Type de donnée', 1, ''), +(1, '--DACTE', 'Date acte', 2, '--2'), +(1, '--DCOMPTABLE', 'Date comptable', 2, '--2'), +(1, '--DFACTURE', 'Date facture', 2, '--2'), +(1, '--DGROUPAGE', 'Date groupage', 2, '--2'), +(1, '--DINTERVENTION', 'Date intervention', 2, '--2'), +(1, '--DJOUR', 'Date jour', 2, '--2'), +(1, '--DMOUVEMENT', 'Date mouvement', 2, '--2'), +(1, '--DSORTIE', 'Date sortie', 2, '--2'), +(1, '--DVENTES', 'Date ventes', 2, '--2'), +(1, '--R1', 'Rapports CTI', 2, '--3'), +(1, '--R3', 'Rapports Etablissement', 2, '--3'), +(1, '--S1', 'Indicateurs CTI', 2, '--0'), +(1, '--S2', 'Indicateurs Groupe', 2, '--0'), +(1, '--S3', 'Indicateurs spécifiques Etablissement', 2, '--0'), +(1, '--T0001', 'Superviseur d''activité', 2, '--1'), +(1, '--T0002', 'Occupation', 2, '--1'), +(1, '--T0003', 'Places', 2, '--1'), +(1, '--T0004', 'Facturation Clinique', 2, '--1'), +(1, '--T0005', 'Clients Clinique', 2, '--1'), +(1, '--T0006', 'Facturation Honoraires', 2, '--1'), +(1, '--T0007', 'Clients Honoraire', 2, '--1'), +(1, '--T0008', 'En-cours', 2, '--1'), +(1, '--T0011', 'Occupation bloc', 2, '--1'), +(1, '--T0097', 'Calendrier', 2, '--1'), +(1, '-TS', 'Type de séjour', 1, ''), +(1, '-TS1', 'Hospitalisé', 2, '-TS'), +(1, '-TS2', 'Ambulatoires', 2, '-TS'), +(1, '-TS3', 'Externes', 2, '-TS'), +(1, '-TS5', 'Séances', 2, '-TS'), +(1, 'CA', 'Chiffre d''affaire', 2, '--4'), +(1, 'CACP', 'C.A. Comptabilisé', 3, 'CA'), +(1, 'CAF', 'C.A. Facturé', 3, 'CA'), +(1, 'CAHON', 'C.A. Honoraire', 3, 'CA'), +(1, 'CARG', 'C.A. Réglé', 3, 'CA'), +(1, 'CASL', 'C.A. Solde', 3, 'CA'), +(1, 'CAV', 'C.A. Valorisé', 3, 'CA'), +(1, 'CAVF', 'C.A. Facturé et Valorisé', 3, 'CA'), +(1, 'NBENT', 'Nombre Entrées', 3, 'NOMBRE'), +(1, 'NBJOU', 'Nombre Jours', 3, 'NOMBRE'), +(1, 'NBRUB', 'Nombre Rubriques', 3, 'NOMBRE'), +(1, 'NBSEJ', 'Nombre Séjours', 3, 'NOMBRE'), +(1, 'NBSOR', 'Nombre Sorties', 3, 'NOMBRE'), +(1, 'NOMBRE', 'Nombre', 2, '--4'), +(1, 'TAUX', 'Taux', 2, '--4') +; + +-- 3/3 : Màj de la table iCTI +INSERT INTO activite.t_indicateur_theme (code, texte, level) +SELECT code, texte, level +FROM w_dbsetup +WHERE code NOT IN (SELECT code FROM activite.t_indicateur_theme WHERE t_indicateur_theme.code IS NOT NULL) +; + +UPDATE activite.t_indicateur_theme SET + texte = w_dbsetup.texte, + level = w_dbsetup.level, + parent_id = COALESCE(t_indicateur_parent_theme.oid,0) +FROM w_dbsetup +LEFT JOIN activite.t_indicateur_theme t_indicateur_parent_theme ON w_dbsetup.parent_code = t_indicateur_parent_theme.code +WHERE t_indicateur_theme.code = w_dbsetup.code AND + ( + t_indicateur_theme.texte IS DISTINCT FROM w_dbsetup.texte OR + t_indicateur_theme.level IS DISTINCT FROM w_dbsetup.level OR + t_indicateur_theme.parent_id IS DISTINCT FROM COALESCE(t_indicateur_parent_theme.oid,0) + ) +; + + +SELECT base.cti_reorganize_indicateur_theme('activite') +; \ No newline at end of file diff --git a/db/data/dbdata_activite_t_indicateurs.SQL b/db/data/dbdata_activite_t_indicateurs.SQL new file mode 100755 index 0000000..9236032 --- /dev/null +++ b/db/data/dbdata_activite_t_indicateurs.SQL @@ -0,0 +1,856 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + CASE WHEN t_indicateurs.oid = 0 THEN t_indicateurs.oid ELSE 1 END AS oid, + t_indicateurs.code, + t_indicateurs.table_name, + t_indicateurs.texte, + t_indicateurs.entete_etendue, + t_indicateurs.entete, + t_indicateurs.column_name, + t_indicateurs.is_cti, + t_indicateurs.total_function, + t_indicateurs.output_format, + t_indicateurs.width, + t_indicateurs.dimension_date_1, + t_indicateurs.dimension_date_2, + t_indicateurs.dimension_date_3, + t_indicateurs.dimension_date_4, + t_indicateurs.dimension_date_5, + t_indicateurs.dimension_date, + t_indicateurs_1.code as indicateur_associe_1_code, + t_indicateurs_2.code as indicateur_associe_2_code, + t_indicateurs_3.code as indicateur_associe_3_code, + t_indicateurs_4.code as indicateur_associe_4_code, + t_indicateurs_5.code as indicateur_associe_5_code, + t_indicateurs_6.code as indicateur_associe_6_code, + t_indicateurs_7.code as indicateur_associe_7_code, + t_indicateurs_8.code as indicateur_associe_8_code, + t_indicateurs_9.code as indicateur_associe_9_code, + t_indicateurs_10.code as indicateur_associe_10_code, + t_indicateurs_11.code as indicateur_associe_11_code, + t_indicateurs_12.code as indicateur_associe_12_code, + t_indicateurs_13.code as indicateur_associe_13_code, + t_indicateurs_14.code as indicateur_associe_14_code, + t_indicateurs_15.code as indicateur_associe_15_code, + t_indicateurs_16.code as indicateur_associe_16_code, + t_indicateurs_17.code as indicateur_associe_17_code, + t_indicateurs_18.code as indicateur_associe_18_code, + t_indicateurs_19.code as indicateur_associe_19_code, + t_indicateurs_20.code as indicateur_associe_20_code, + t_indicateurs_reference.code as indicateur_reference_code, + t_indicateurs.is_template, + t_indicateurs_template.code as indicateur_template_code, + COALESCE(t_indicateurs.variable_definition[1],'') AS variable_definition_1, + COALESCE(t_indicateurs.variable_definition[2],'') AS variable_definition_2, + COALESCE(t_indicateurs.variable_definition[3],'') AS variable_definition_3, + COALESCE(t_indicateurs.variable_value[1],'') AS variable_value_1, + COALESCE(t_indicateurs.variable_value[2],'') AS variable_value_2, + COALESCE(t_indicateurs.variable_value[3],'') AS variable_value_3, + COALESCE(t_indicateurs.variable_value_text[1],'') AS variable_value_text_1, + COALESCE(t_indicateurs.variable_value_text[2],'') AS variable_value_text_2, + COALESCE(t_indicateurs.variable_value_text[3],'') AS variable_value_text_3, + t_indicateurs.description, + COALESCE(t_indicateur_theme_1.code,'') AS theme_1_code, + COALESCE(t_indicateur_theme_2.code,'') AS theme_2_code, + COALESCE(t_indicateur_theme_3.code,'') AS theme_3_code, + COALESCE(t_indicateur_theme_4.code,'') AS theme_4_code, + COALESCE(t_indicateur_theme_5.code,'') AS theme_5_code, + COALESCE(t_indicateur_theme_6.code,'') AS theme_6_code, + COALESCE(t_indicateur_theme_7.code,'') AS theme_7_code, + COALESCE(t_indicateur_theme_8.code,'') AS theme_8_code, + COALESCE(t_indicateur_theme_9.code,'') AS theme_9_code + FROM activite.t_indicateurs + LEFT JOIN activite.t_indicateurs t_indicateurs_1 ON (t_indicateurs.indicateur_associe_1_id = t_indicateurs_1.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_2 ON (t_indicateurs.indicateur_associe_2_id = t_indicateurs_2.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_3 ON (t_indicateurs.indicateur_associe_3_id = t_indicateurs_3.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_4 ON (t_indicateurs.indicateur_associe_4_id = t_indicateurs_4.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_5 ON (t_indicateurs.indicateur_associe_5_id = t_indicateurs_5.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_6 ON (t_indicateurs.indicateur_associe_6_id = t_indicateurs_6.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_7 ON (t_indicateurs.indicateur_associe_7_id = t_indicateurs_7.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_8 ON (t_indicateurs.indicateur_associe_8_id = t_indicateurs_8.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_9 ON (t_indicateurs.indicateur_associe_9_id = t_indicateurs_9.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_10 ON (t_indicateurs.indicateur_associe_10_id = t_indicateurs_10.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_11 ON (t_indicateurs.indicateur_associe_11_id = t_indicateurs_11.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_12 ON (t_indicateurs.indicateur_associe_12_id = t_indicateurs_12.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_13 ON (t_indicateurs.indicateur_associe_13_id = t_indicateurs_13.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_14 ON (t_indicateurs.indicateur_associe_14_id = t_indicateurs_14.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_15 ON (t_indicateurs.indicateur_associe_15_id = t_indicateurs_15.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_16 ON (t_indicateurs.indicateur_associe_16_id = t_indicateurs_16.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_17 ON (t_indicateurs.indicateur_associe_17_id = t_indicateurs_17.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_18 ON (t_indicateurs.indicateur_associe_18_id = t_indicateurs_18.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_19 ON (t_indicateurs.indicateur_associe_19_id = t_indicateurs_19.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_20 ON (t_indicateurs.indicateur_associe_20_id = t_indicateurs_20.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_reference ON (t_indicateurs.indicateur_reference_id = t_indicateurs_reference.oid) + LEFT JOIN activite.t_indicateurs t_indicateurs_template ON (t_indicateurs.indicateur_template_id = t_indicateurs_template.oid) + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_1 ON t_indicateur_theme_1.oid = t_indicateurs.theme_id[1] + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_2 ON t_indicateur_theme_2.oid = t_indicateurs.theme_id[2] + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_3 ON t_indicateur_theme_3.oid = t_indicateurs.theme_id[3] + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_4 ON t_indicateur_theme_4.oid = t_indicateurs.theme_id[4] + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_5 ON t_indicateur_theme_5.oid = t_indicateurs.theme_id[5] + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_6 ON t_indicateur_theme_6.oid = t_indicateurs.theme_id[6] + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_7 ON t_indicateur_theme_6.oid = t_indicateurs.theme_id[7] + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_8 ON t_indicateur_theme_6.oid = t_indicateurs.theme_id[8] + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_9 ON t_indicateur_theme_6.oid = t_indicateurs.theme_id[9] + WHERE t_indicateurs.is_cti = '1' AND + t_indicateurs.code LIKE 'CTI%' AND + t_indicateurs.indicateur_reference_id = 0 + ORDER BY t_indicateurs.code + LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + oid, + code, + table_name, + texte, + entete_etendue, + entete, + column_name, + is_cti, + total_function, + output_format, + width, + dimension_date_1, + dimension_date_2, + dimension_date_3, + dimension_date_4, + dimension_date_5, + dimension_date, + indicateur_associe_1_code, + indicateur_associe_2_code, + indicateur_associe_3_code, + indicateur_associe_4_code, + indicateur_associe_5_code, + indicateur_associe_6_code, + indicateur_associe_7_code, + indicateur_associe_8_code, + indicateur_associe_9_code, + indicateur_associe_10_code, + indicateur_associe_11_code, + indicateur_associe_12_code, + indicateur_associe_13_code, + indicateur_associe_14_code, + indicateur_associe_15_code, + indicateur_associe_16_code, + indicateur_associe_17_code, + indicateur_associe_18_code, + indicateur_associe_19_code, + indicateur_associe_20_code, + indicateur_reference_code, + is_template, + indicateur_template_code, + variable_definition_1, + variable_definition_2, + variable_definition_3, + variable_value_1, + variable_value_2, + variable_value_3, + variable_value_text_1, + variable_value_text_2, + variable_value_text_3, + description, + theme_1_code, + theme_2_code, + theme_3_code, + theme_4_code, + theme_5_code, + theme_6_code, + theme_7_code, + theme_8_code, + theme_9_code +) +VALUES +(1, 'CTIAGEMOY', '*CALC', 'Age moyen Hospit et Ambu', 'Age moyen Hospit et Ambu', 'Age moy', 'base.cti_division([1], [2])', '1', '*CALC', '#,0', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTIAGESUM', 'CTI_NB_SEJ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Age moyen des patients ayant effectués des séjours dans l''établissement (hors séances)', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTIAGESUM', 'SEJOURS', 'Somme des ages', 'Somme des ages', 'Somme Ages', 'CASE WHEN type_sejour = ''1'' OR type_sejour = ''2'' THEN age ELSE null END', '1', 'SUM', '#', 0, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Somme les o/ooges des patients des séjours en sévérité de type ''1'' et ''2''', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_ADM', 'OCCUPATION', 'NB Admissions sur la période', 'Admissions sur la période', 'Adm Per', 'nb_ambulatoires + CASE WHEN type_sejour = ''5'' THEN 0 ELSE nb_seances END + nb_externes + nb_entrees_directes', '1', 'SUM', '#', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''admissions de patients sur la période choisie', 'NBENT', '', '', '', '', '', '', '', ''), +(1, 'CTI_ADMHCP', 'OCCUPATION', 'SSR - Admissions sur la période (Hospitalisaiton complète)', 'SSR - Admissions sur la période (Hospitalisaiton complète)', 'SSR Adm Per HCOMP', 'CASE WHEN mode_traitement_id = ''3'' THEN GREATEST(nb_ambulatoires, nb_seances, nb_externes, nb_entrees_directes) ELSE 0 END', '1', 'SUM', '#', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''admissions de patients sur la période choisie en Hospitalisation Complète', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_ADMHDJ', 'OCCUPATION', 'SSR - Admissions sur la période (Hospitalisaiton de jour)', 'SSR - Admissions sur la période (Hospitalisaiton de jour)', 'SSR Adm Per HDJ', 'CASE WHEN mode_traitement_id = ''4'' THEN GREATEST(nb_ambulatoires, nb_seances, nb_externes, nb_entrees_directes) ELSE 0 END', '1', 'SUM', '#', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''admissions de patients sur la période choisie en Hospitalisation de Jour', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_ADMPREHCP', '*CALC', 'SSR - Admissions avant période (Hospitalisation complète)', 'SSR - Admissions avant période (Hospitalisation complète)', 'SSR Adm Pre H COMP', '[1] - [2]', '1', '*CALC', '#', 60, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBSEJCP', 'CTI_ADMHCP', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''admissions de patients avant la période choisie en Hospitalisation Complète', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_ADMPREHDJ', '*CALC', 'SSR - Admissions avant période (Hospitalisation de jour)', 'SSR - Admissions avant période (Hospitalisation de jour)', 'SSR Adm Pre HDJ', '[1] - [2]', '1', '*CALC', '#', 60, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBSEJHDJ', 'CTI_ADMHDJ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''admissions de patients avant la période choisie en Hospitalisation de Jour', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_ADM_PRE', '*CALC', 'NB Admissions avant période', 'Admissions avant période', 'Adm Pre', '[1] - [2]', '1', '*CALC', '#', 60, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBSEJO', 'CTI_ADM', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''admissions de patients avant la période choisie', 'NBENT', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_ADM_PRE_PER', '*CALC', 'NB Admissions avant période', 'Admissions avant période', 'Adm < Per', '[1] - [2]', '1', '*CALC', '#', 60, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBSEJO', 'CTI_NBENT_SAES', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''admissions de patients avant la période choisie', '-TS1', '-TS2', '-TS3', '-TS5', 'NBENT', 'NBSEJ', '', '', ''), +(1, 'CTI_ATU_MT_ENC', 'FACTURATION_CLINIQUE', 'CA ATU Valorisé Clinique', 'Montant ATU Valorisé Clinique', 'Montant ATU Valorisé Clinique', 'CASE WHEN prestation_code IN (''ATU'',''FPU'') THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des ATU valorisés', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_ATU_MT_FAC', 'FACTURATION_CLINIQUE', 'CA ATU Facturé', 'Montant ATU facturé', 'Montant ATU facturé', 'CASE WHEN prestation_code IN(''ATU'') THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des ATU facturés', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_ATU_MT_TOT', 'FACTURATION_CLINIQUE', 'CA ATU Facturé + Valorisé', 'Montant ATU Facturé + Valorisé', 'Montant ATU Facturé + Valorisé', 'CASE WHEN prestation_code IN (''ATU'',''FPU'') THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des ATU facturés et valorisés', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_ATU_NB_ENC', 'FACTURATION_CLINIQUE', 'NB Rubriques ATU Valorisés', 'Nombre ATU Valorisés', 'Nombre ATU Valorisés', 'CASE WHEN prestation_code IN (''ATU'',''FPU'') THEN nb_rubrique_encours ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''ATU valorisés', 'NBRUB', '', '', '', '', '', '', '', ''), +(1, 'CTI_ATU_NB_FAC', 'FACTURATION_CLINIQUE', 'NB Rubriques ATU facturés', 'Nombre ATU facturés', 'Nombre ATU facturés', 'CASE WHEN prestation_code IN (''ATU'',''FPU'') THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''ATU facturés', 'NBRUB', '', '', '', '', '', '', '', ''), +(1, 'CTI_ATU_NB_TOT', 'FACTURATION_CLINIQUE', 'NB Rubriques ATU Facturés + Valorisés', 'Nombre ATU Facturé + Valorisé', 'Nombre ATU Facturé + Valorisé', 'CASE WHEN prestation_code IN (''ATU'',''FPU'') THEN nb_rubrique_facture + nb_rubrique_encours ELSE 0 END', '1', 'SUM', '#', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''ATU facturés et valorisés', 'NBRUB', '', '', '', '', '', '', '', ''), +(1, 'CTI_AUT_MT_ENC', 'FACTURATION_CLINIQUE', 'CA AUTRE Valorisé Clinique', 'Montant "Autres" Valorisé Clinique', 'Montant "Autres" Valorisé Clinique', 'CASE WHEN type_sejour NOT IN(''1'', ''2'', ''3'', ''5'') THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des ''autres'' valorisés', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_AUT_MT_FAC', 'FACTURATION_CLINIQUE', 'CA AUTRE Facturé', 'Montant "Autres" Facturé', 'Montant "Autres" Facturé', 'CASE WHEN type_sejour NOT IN(''1'', ''2'', ''3'', ''5'') THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des ''autres'' facturés', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_AUT_MT_TOT', 'FACTURATION_CLINIQUE', 'CA AUTRE Facturé + Valorisé', 'Montant "Autres" Facturé + Valorisé', 'Montant "Autres" Facturé + Valorisé', 'CASE WHEN type_sejour NOT IN(''1'', ''2'', ''3'', ''5'') THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des ''autres'' facturés et valorisés', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_AUT_NBAUT', 'OCCUPATION', 'NB Séjours "Autres" (occupation)', 'Nombres de séjours "Autres"', 'Nombres de séjours "Autres"', 'DISTINCT CASE WHEN (code_prevu = 0 and type_sejour NOT IN(''1'', ''2'', ''3'', ''5'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours ''autres'' de l''établissement', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_AUT_NB_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA AUTRE Valorisés Clinique', 'Nombre séjours "Autres" Valorisés', 'Nombre séjours "Autres" Valorisés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and type_sejour NOT IN(''1'', ''2'', ''3'', ''5'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours ''autres'' valorisés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_AUT_NB_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA AUTRE facturés Clinique', 'Séjours "Autres" facturés', 'Séjours "Autres" facturés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and type_sejour NOT IN(''1'', ''2'', ''3'', ''5'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours ''autres'' facturés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_AUT_NB_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA AUTRE Facturés + Valorisés Clinique', 'Nombre de séjours "Autres" Facturés + Valorisés', 'Nombre de séjours "Autres" Facturés + Valorisés', 'DISTINCT CASE WHEN ( type_sejour NOT IN(''1'', ''2'', ''3'', ''5'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours ''autres'' facturés et valorisés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_CACPTENC_C_12M', '*CALC', 'CA Activité comptable moyen mensuel 12 derniers mois (encours CTI)', 'CA moyen activité comptable', 'CA moyen activite comptable', '[1]+[2]', '1', '*CALC', '0E', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_CCAENCVAR_C_12M', 'CTI_MTCPTCLI_C_12M', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires mensuel moyen de l''encours des 12 derniers mois', 'CACP', 'CAV', '', '', '', '', '', '', ''), +(1, 'CTI_CALNBJ_OUVRE', 'CALENDRIER', 'Nombre de jours ouvrés', 'Nombre de jours ouvrés', 'Jours ouvrés', 'nb_jour_ouvre', '1', 'SUM', '#', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de jours ouvré de la période', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_CAMFAC1_DC', '*CALC', 'CA TOTAL Moyen Facturé [HOSP] (date sortie)', 'CA Moyen Total facturé (Hospitalisés) (date sortie)', 'CA Moyen Total facturé (Hospitalisés) (date sortie)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séjours hospitalisés (1 nuit minimum) facturés (date sortie)', '-TS1', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAMFAC2_DC', '*CALC', 'CA TOTAL Moyen Facturé [AMBU] (date sortie)', 'CA Moyen Total facturé (Ambulatoire) (date sortie)', 'CA Moyen Total facturé (Ambulatoire) (date sortie)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séjours ambulatoires (0 nuits) facturés (date sortie)', '-TS2', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAMFAC3_DC', '*CALC', 'CA TOTAL Moyen Facturé [EXT] (date sortie)', 'CA Moyen Total facturé (Externe) (date sortie)', 'CA Moyen Total facturé (Externe) (date sortie)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séjours externes facturés (date sortie)', '-TS3', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAMFAC5_DC', '*CALC', 'CA TOTAL Moyen Facturé [SEANCE] (date sortie)', 'CA Moyen Total facturé (Séances) (date sortie)', 'CA Moyen Total facturé (Séances) (date sortie)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séances facturés (date sortie)', '-TS5', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAMFAC_CS', '*CALC', 'CA TOTAL Moyen Facturé (date sortie)', 'CA Moyen facturé (date sortie)', 'CA Moyen facturé (date sortie)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séjours facturés (date sortie)', 'CAF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_CAMFAC_DC', '*CALC', 'CA TOTAL Moyen Facturé (date vente)', 'CA Moyen facturé (date_ventes)', 'CA Moyen facturé (date_ventes)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séjours facturés (date vente)', 'CAF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_CAM_FACT', '*CALC', 'CA moyen Facturé etablissement', 'CA moyen facturé etablissement', 'CA moyen facturé', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_CA_FAC_ETAB', 'CTI_NBSEJO', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé moyen', 'CAF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_CAM_MT1_FAC', '*CALC', 'CA SEJOUR moyen [HOSP]', 'CA moyen SEJOUR', 'CA moyen SEJOUR', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séjours hospitalisés (1 nuit minimum)', '-TS1', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MT2_FAC', '*CALC', 'CA SEJOUR moyen [AMBU]', 'CA moyen SEJOUR', 'CA moyen SEJOUR', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séjours ambulatoires (0 nuits)', '-TS2', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MT5_FAC', '*CALC', 'CA SEJOUR moyen [SEANCE]', 'CA moyen', 'CA moyen', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séances', '-TS5', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDA1_FAC', '*CALC', 'CA SEJOUR moyen [HOSP] (date acte)', 'CA moyen SEJOUR', 'CA moyen SEJOUR', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séjours hospitalisés (1 nuit minimum) (date acte)', '-TS1', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDA1_TOT', '*CALC', 'CA SEJOUR Moyen Facturé + Valorisé [HOSP] (date acte)', 'CA moyen SEJOUR Facturé + Valorisé', 'CA moyen SEJOUR Facturé + Valorisé', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen facturé et valorisé des séjours hospitalisés (1 nuit minimum) (date acte)', '-TS1', 'CAVF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDA2_FAC', '*CALC', 'CA SEJOUR moyen [AMBU] (date acte)', 'CA moyen SEJOUR (date acte)', 'CA moyen SEJOUR (date acte)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séjours ambulatoires (0 nuits) (date acte)', '-TS2', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDA2_TOT', '*CALC', 'CA SEJOUR Moyen Facturé + Valorisé [AMBU] (date acte)', 'CA moyen SEJOUR Facturé + Valorisé (date acte)', 'CA moyen SEJOUR Facturé + Valorisé (date acte)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen facturé et valorisé des séjours ambulatoires (0 nuits) (date acte)', '-TS2', 'CAVF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDA5_FAC', '*CALC', 'CA SEJOUR moyen [SEANCE] (date acte)', 'CA moyen', 'CA moyen', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séances (date acte)', '-TS5', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDA5_TOT', '*CALC', 'CA SEJOUR Moyen Facturé + Valorisé [SEANCE] (date acte)', 'CA moyen SEJOUR Facturé + Valorisé (Séances)', 'CA moyen SEJOUR Facturé + Valorisé (Séances)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen facturé et valorisé des séances (date acte)', '-TS5', 'CAVF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDA8_FAC', '*CALC', 'CA SEJOUR moyen (date acte)', 'CA moyen SEJOUR (date acte)', 'CA moyen SEJOUR (date acte)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séjours (date acte)', 'CAF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDA8_TOT', '*CALC', 'CA SEJOUR Moyen Facturé + Valorisé (date acte)', 'CA moyen SEJOUR Facturé + Valorisé (date acte)', 'CA moyen SEJOUR Facturé + Valorisé (date acte)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen facturé et valorisé des séjours (date acte)', 'CAVF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDS1_FAC', '*CALC', 'CA SEJOUR moyen [HOSP] (date sortie)', 'CA moyen SEJOUR', 'CA moyen SEJOUR', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen facturé des séjours hospitalisés (1 nuit minimum) (date sortie)', '-TS1', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDS1_TOT', '*CALC', 'CA SEJOUR Moyen Facturé + Valorisé [HOSP] (date sortie)', 'CA moyen SEJOUR Facturé + Valorisé', 'CA moyen SEJOUR Facturé + Valorisé', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen facturé et valorisé des séjours hospitalisés (1 nuit minimum) (date sortie)', '-TS1', 'CAVF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDS2_FAC', '*CALC', 'CA SEJOUR moyen [AMBU] (date sortie)', 'CA moyen SEJOUR (date sortie)', 'CA moyen SEJOUR (date sortie)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séjours ambulatoires (0 nuits) (date sortie)', '-TS2', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDS2_TOT', '*CALC', 'CA SEJOUR Moyen Facturé + Valorisé [AMBU] (date sortie)', 'CA moyen SEJOUR Facturé + Valorisé (date sortie)', 'CA moyen SEJOUR Facturé + Valorisé (date sortie)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen facturé et valorisé des séjours ambulatoires (0 nuits) (date sortie)', '-TS2', 'CAVF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDS5_FAC', '*CALC', 'CA SEJOUR moyen [SEANCE] (date sortie)', 'CA moyen', 'CA moyen', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séances (date sortie)', '-TS5', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDS5_TOT', '*CALC', 'CA SEJOUR Moyen Facturé + Valorisé [SEANCE] (date sortie)', 'CA moyen SEJOUR Facturé + Valorisé (Séances)', 'CA moyen SEJOUR Facturé + Valorisé (Séances)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen facturé et valorisé des séances (date sortie)', '-TS5', 'CAVF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDS8_FAC', '*CALC', 'CA SEJOUR moyen (date sortie)', 'CA moyen SEJOUR (date sortie)', 'CA moyen SEJOUR (date sortie)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séjours (date sortie)', 'CAF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDS8_TOT', '*CALC', 'CA SEJOUR Moyen Facturé + Valorisé (date sortie)', 'CA moyen SEJOUR Facturé + Valorisé (date sortie)', 'CA moyen SEJOUR Facturé + Valorisé (date sortie)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen facturé et valorisé des séjours (date sortie)', 'CAVF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDV1_FAC', '*CALC', 'CA SEJOUR moyen [HOSP] (date vente)', 'CA moyen SEJOUR', 'CA moyen SEJOUR', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen facturé des séjours hospitalisés (1 nuit minimum) (date vente)', '-TS1', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDV1_TOT', '*CALC', 'CA SEJOUR Moyen Facturé + Valorisé [HOSP] (date vente)', 'CA moyen SEJOUR Facturé + Valorisé', 'CA moyen SEJOUR Facturé + Valorisé', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen facturé et valorisé des séjours hospitalisés (1 nuit minimum) (date vente)', '-TS1', 'CAVF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDV2_FAC', '*CALC', 'CA SEJOUR moyen [AMBU] (date vente)', 'CA moyen SEJOUR (date vente)', 'CA moyen SEJOUR (date vente)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séjours ambulatoires (0 nuits) (date vente)', '-TS2', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDV2_TOT', '*CALC', 'CA SEJOUR Moyen Facturé + Valorisé [AMBU] (date vente)', 'CA moyen SEJOUR Facturé + Valorisé (date vente)', 'CA moyen SEJOUR Facturé + Valorisé (date vente)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen facturé et valorisé des séjours ambulatoires (0 nuits) (date vente)', '-TS2', 'CAVF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDV5_FAC', '*CALC', 'CA SEJOUR moyen [SEANCE] (date vente)', 'CA moyen', 'CA moyen', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séances (date vente)', '-TS5', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDV5_TOT', '*CALC', 'CA SEJOUR Moyen Facturé + Valorisé [SEANCE] (date vente)', 'CA moyen SEJOUR Facturé + Valorisé (Séances)', 'CA moyen SEJOUR Facturé + Valorisé (Séances)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen facturé et valorisé des séances (date vente)', '-TS5', 'CAVF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDV8_FAC', '*CALC', 'CA SEJOUR moyen (date vente)', 'CA moyen SEJOUR (date vente)', 'CA moyen SEJOUR (date vente)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des séjours (date vente)', 'CAF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_CAM_MTDV8_TOT', '*CALC', 'CA SEJOUR Moyen Facturé + Valorisé (date vente)', 'CA moyen SEJOUR Facturé + Valorisé (date vente)', 'CA moyen SEJOUR Facturé + Valorisé (date vente)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen facturé et valorisé des séjours (date vente)', 'CAVF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_CAM_SOINS_CPT', '*CALC', 'CA SOINS Moyen comptabilisé (date vente)', 'CA moyen Soins (date acte)', 'CA moyen Soins (date acte)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_CA_T2A_CPT', 'CTI_NBSEJ_SOINS_CPT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires comptabilisé moyen des soins (date vente)', 'CACP', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_CAM_SOINS_FACVAL#2', '*CALC', 'CA SOINS Moyen Facturé + Valorisé (date sortie)', 'CA moyen Soins (date sortie)', 'CA moyen Soins (date sortie)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé moyen des soins (date sortie)', 'CAVF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_CAT_MT1_FAC', '*CALC', 'CA SOINS Moyen [HOSP]', 'CA moyen Soins', 'CA moyen Soins', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des soins effectués lors des séjours hospitalisés (1 nuit minimum)', '-TS1', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAT_MT2_FAC', '*CALC', 'CA SOINS Moyen [AMBU]', 'CA moyen Soins', 'CA moyen Soins', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des soins effectués lors des séjours ambulatoires (0 nuits)', '-TS2', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAT_MT5_FAC', '*CALC', 'CA SOINS Moyen [SEANCE]', 'CA moyen', 'CA moyen', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des soins effectués lors des séances', '-TS5', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_CAT_MTD18_FACVAL', '*CALC', 'CA SOINS Moyen Facturé + Valorisé (date acte)', 'CA moyen Soins (date acte)', 'CA moyen Soins (date acte)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_T2A_MT_TOT', 'CTI_EMC', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé moyen des soins (date acte)', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_CAT_MTDA2_FAC', '*CALC', 'CA SOINS Moyen [AMBU] (date acte)', 'CA moyen Soins (date acte)', 'CA moyen Soins (date acte)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des soins réalisés lors des séjours ambulatoires (0 nuits) (date acte)', '-TS2', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAT_MTDA5_FAC', '*CALC', 'CA SOINS Moyen [SEANCE] (date acte)', 'CA moyen', 'CA moyen', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des soins réalisés lors des séances (date acte)', '-TS5', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAT_MTDA8_FAC', '*CALC', 'CA SOINS Moyen (date acte)', 'CA moyen Soins (date acte)', 'CA moyen Soins (date acte)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des soins (date acte)', 'CAF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_CAT_MTDA_FAC', '*CALC', 'CA SOINS Moyen [HOSP] (date acte)', 'CA moyen Soins', 'CA moyen Soins', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '-TS1', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAT_MTDS1_FAC', '*CALC', 'CA SOINS Moyen [HOSP] (date sortie)', 'CA moyen Soins', 'CA moyen Soins', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des soins réalisés lors des séjours hospitalisés (1 nuit minimum) (date sortie)', '-TS1', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAT_MTDS2_FAC', '*CALC', 'CA SOINS Moyen [AMBU] (date sortie)', 'CA moyen Soins (date sortie)', 'CA moyen Soins (date sortie)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des soins réalisés lors des séjours ambulatoires (0 nuits) (date sortie)', '-TS2', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAT_MTDS5_FAC', '*CALC', 'CA SOINS Moyen [SEANCE] (date sortie)', 'CA moyen', 'CA moyen', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des soins réalisés lors des séances (date sortie)', '-TS5', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAT_MTDS8_FAC', '*CALC', 'CA SOINS Moyen (date sortie)', 'CA moyen Soins (date sortie)', 'CA moyen Soins (date sortie)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des soins (date sortie)', 'CAF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_CAT_MTDV1_FAC', '*CALC', 'CA SOINS Moyen [HOSP] (date vente)', 'CA moyen Soins', 'CA moyen Soins', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des soins réalisés lors des séjours hospitalisés (1 nuit minimum) (date vente)', '-TS1', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAT_MTDV2_FAC', '*CALC', 'CA SOINS Moyen [AMBU] (date vente)', 'CA moyen Soins (date vente)', 'CA moyen Soins (date vente)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des soins réalisés lors des séjours ambulatoires (0 nuits) (date vente)', '-TS2', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAT_MTDV5_FAC', '*CALC', 'CA SOINS Moyen [SEANCE] (date vente)', 'CA moyen', 'CA moyen', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des soins réalisés lors des séances (date vente)', '-TS5', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CAT_MTDV8_FAC', '*CALC', 'CA SOINS Moyen (date vente)', 'CA moyen Soins (date vente)', 'CA moyen Soins (date vente)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des soins (date vente)', 'CAF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_CA_COMPT', 'SEJOURS', 'CA comptabilisé total', 'CA comptabilisé etablissement', 'CA Comptabilisé', 'montant_comptabilise', '1', 'SUM', '#E', 80, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires comptabilisé total', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_COMPT_EXT', 'SEJOURS', 'CA comptabilisé (Autres- Externes)', 'CA comptabilisé (Autres- Externes)', 'CA comptabilisé (Autres)', 'CASE WHEN type_sejour = ''3'' THEN montant_comptabilise ELSE NULL END', '1', 'SUM', '#E', 70, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires comptabilisé des séjours Autres et Externes', '-TS3', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_COMPT_HC', 'SEJOURS', 'CA comptabilis?ospitalisation complète', 'CA comptabilisé hospitalisation complète', 'CA comptabilisé (HC)', 'CASE WHEN type_sejour = ''1'' THEN montant_comptabilise ELSE NULL END', '1', 'SUM', '#E', 80, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires comptabilisé des séjours en Hospitalisation Complète (1 nuit minimum)', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_COMP_HJ', 'SEJOURS', 'CA comptrabilisé (Hospitalisation de jour)', 'CA comptrabilisé (Hospitalisation de jour)', 'CA comptrabilisé (HJ)', 'CASE WHEN type_sejour = ''2'' OR type_sejour = ''5'' THEN montant_comptabilise ELSE NULL END', '1', 'SUM', '#E', 70, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_EXP_ETAB', 'SEJOURS', 'CA expédié', 'CA expédié établissement ', 'CA expédié', 'CASE WHEN nb_non_expedie <> 1 THEN montant_facture ELSE NULL END', '1', 'SUM', '#E', 80, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des factures expédiées', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_EXP_EXT', 'SEJOURS', 'CA expédié (Autres-externes)', 'CA expédié (Autres-externes)', 'CA expédié (Autres)', 'CASE WHEN type_sejour = ''3'' AND nb_non_expedie <> 1 THEN montant_facture ELSE NULL END', '1', 'SUM', '#E', 80, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des factures expédiées en Autres et Externes', '-TS3', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_CA_EXP_HC', 'SEJOURS', 'CA expédié (hospitalisation complète)', 'CA expédié (hospitalisation complète)', 'CA expédié (HC)', 'CASE WHEN type_sejour = ''1'' AND nb_non_expedie <> 1 THEN montant_facture ELSE NULL END', '1', 'SUM', '#E', 70, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des factures expédiées pour des séjours en Hospitalisation Complète (1 nuit minimum)', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_EXP_HJ', 'SEJOURS', 'CA expédié (Hospitalisation de jour)', 'CA expédié (Hospitalisation de jour)', 'CA expédié (HJ)', 'CASE WHEN (type_sejour = ''2'' OR type_sejour = ''5'') AND nb_non_expedie <> 1 THEN montant_facture ELSE NULL END', '1', 'SUM', '#E', 70, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des factures expédiées pour des séjours en Hospitalisation de Jour (0 nuits)', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_FACT_EXT', 'SEJOURS', 'CA Facturé (Autres = externes)', 'CA facturé (Autres = externes)', 'CA facturé (Autres)', 'CASE WHEN type_sejour = ''3'' THEN montant_facture ELSE NULL END', '1', 'SUM', '#E', 80, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé en Autres et Externes', '-TS3', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_CA_FACT_HC', 'SEJOURS', 'CA Facturé hospitalisation complète', 'CA facturé hospitalisation complète', 'CA facturé (HC)', 'CASE WHEN type_sejour = ''1'' THEN montant_facture ELSE NULL END', '1', 'SUM', '#E', 80, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé en Hospitalisation Complète (1 nuit minimum)', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_FACT_HJ', 'SEJOURS', 'CA Facturé (Hospitalisation de jour)', 'CA facturé (Hospitalisation de jour)', 'CA facturé (hj)', 'CASE WHEN type_sejour = ''2'' OR type_sejour = ''5'' THEN montant_facture ELSE NULL END', '1', 'SUM', '#E', 80, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé en Hospitalisation de Jour (0 nuits)', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_FACT_VAL', 'SEJOURS', 'CA Total', 'CA Total (Facturé + valorisé)', 'CA Total', 'montant_facture_c + montant_encours_c', '1', 'SUM', '#E', 80, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_FACT_VAL_HC', 'SEJOURS', 'CA Facturé + Ca Valorisé (hospitalisation complète)', 'CA facturé + Ca valorisé (hospitalisation complète)', 'CA facturé + Ca valorisé (hc)', 'CASE WHEN type_sejour = ''1'' THEN montant_facture + montant_encours ELSE NULL END', '1', 'SUM', '#E', 80, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des séjours en Hospitalisation Complète (1 nuit minimum)', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_FAC_ETAB', 'SEJOURS', 'CA Facturé Etablissement', 'CA facturé etablissement', 'CA facturé', 'montant_facture_c', '1', 'SUM', '#E', 80, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_FAC_VAL_EXT', '*CALC', 'CA Facturé + Valorisé (Autres-Externes)', 'CA facturé + valorisé (Autres-Externes)', 'CA facturé + valorisé (Autres)', '[1]+[2]', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_CA_FACT_EXT', 'CTI_CA_VAL_EXT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des séjours Externes', '-TS3', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_CA_FAC_VAL_EXT-2', '*CALC', 'CA facturé + valorisé (Autres-Externes)', 'CA facturé + valorisé (Autres-Externes)', 'CA facturé + valorisé (Autres)', '[1] + [2]', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_CA_FACT_EXT', 'CTI_CA_VAL_EXT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des séjours Externes', '-TS3', 'CAF', 'CAV', '', '', '', '', '', ''), +(1, 'CTI_CA_FAC_VAL_HJ', 'SEJOURS', 'CA Facturé + Valorisé (Hospitalisation de jour)', 'CA facturé + valorisé (Hospitalisation de jour)', 'CA facturé + valorisé (HJ)', 'CASE WHEN type_sejour = ''2'' OR type_sejour = ''5'' THEN montant_facture + montant_encours ELSE NULL END ', '1', 'SUM', '#E', 80, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des séjours en Hospitalisation de jour (0 nuits)', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_MOY_FACT_HC', '*CALC', 'CA moyen Facturé hospitalisation complète', 'CA moyen facturé hospitalisation complète', 'CA moyen facturé (HC)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 60, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_CA_FACT_HC', 'CTI_NBSEJ_HC', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé moyen des séjours en Hospitalisation Complète', 'CAF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_CA_MOY_FACT_VAL_ETAB', '*CALC', 'CA moyen Facturé + Valorisé (Etablissement)', 'CA moyen facturé + valorisé (Etablissement)', 'CA moyen facturé + valorisé', 'base.cti_division([1]+[2],[3])', '1', '*CALC', '#E', 60, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_CA_FAC_ETAB', 'CTI_CA_VAL_ETAB', 'CTI_NBSEJO', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé moyen de l''établissement', 'CAF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_CA_MOY_FAC_EXT', '*CALC', 'CA moyen Facturé (Autres = externes)', 'CA moyen facturé (Autres = externes)', 'CA moyen facturé (Autres)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 60, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_CA_FACT_EXT', 'CTI_NBSEJ_EXT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé moyens des séjours Externes', '-TS3', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CA_MOY_FAC_HJ', '*CALC', 'CA moyen Facturé (Hospitalisation de jour)', 'CA moyen facturé (Hospitalisation de jour)', 'CA moyen facturé (HJ)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 60, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_CA_FACT_HJ', 'CTI_NBSEJ_HJ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé moyen des séjours en Hospitalisation de Jour', 'CAF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_CA_MOY_FAC_VAL_EXT', '*CALC', 'CA moyen Facturé + Valorisé (Autres-Externes)', '', '', 'base.cti_division([1] + [2],[3])', '1', '*CALC', '', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_CA_FACT_EXT', 'CTI_CA_VAL_EXT', 'CTI_NBSEJ_EXT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des séjours Externes', '-TS3', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_CA_MOY_FAC_VAL_HJ', '*CALC', 'CA moyen Facturé + Valorisé (Hospitalisation de jour)', 'CA moyen facturé + valorisé (Hospitalisation de jour)', 'CA moyen facturé + valorisé (HJ)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 60, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_CA_FAC_VAL_HJ', 'CTI_NBSEJ_HJ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des séjours en Hospitalisation de Jour', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_MOY_FCT_VAL_HC', '*CALC', 'CA moyen Facturé + Valorisé (hospitalisation complète)', 'CA moyen facturé + valorisé (hospitalisation complète)', 'CA moyen facturé + valorisé (HC)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 70, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_CA_FACT_VAL_HC', 'CTI_NBSEJ_HC', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_NON_EXP_ETAB', 'SEJOURS', 'CA restant à expédier', 'CA restant à expédier', 'CA restant à expédier', 'montant_non_expedie_c', '1', 'SUM', '#E', 0, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des factures non expédiées', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_NON_EXP_EXT', 'SEJOURS', 'CA restant à expédier (Autres-Externes)', 'CA restant à expédier (Autres-Externes)', 'CA non expédier (Autres)', 'CASE WHEN type_sejour = ''3'' THEN montant_non_expedie ELSE NULL END', '1', 'SUM', '#E', 70, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des factures non expédiées des séjours Externes', '-TS3', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_NON_EXP_HC', 'SEJOURS', 'CA restant à expédier (hospitalisation complète)', 'CA restant à expédier (hospitalisation complète)', 'CA restant à expédier (HC)', 'CASE WHEN type_sejour = ''1'' THEN montant_non_expedie ELSE NULL END', '1', 'SUM', '#E', 70, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des factures non expédiées des séjours en Hospitalisation Complète', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_NON_EXP_HJ', 'SEJOURS', 'CA restant à expédier (Hospitalisation de jour)', 'CA restant à expédier (Hospitalisation de jour)', 'CA restant à expédier (HJ)', 'CASE WHEN (type_sejour = ''2'' OR type_sejour = ''5'') THEN montant_non_expedie ELSE NULL END', '1', 'SUM', '#E', 80, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des factures non expédiées des séjours en Hospitalisation de Jour', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_NON_SOL', 'SEJOURS', 'CA restant à solder', 'CA restant à solder', 'CA restant à solder', 'CASE WHEN nb_non_solde_0_c <> 0 THEN montant_solde_0_c ELSE 0 END + CASE WHEN nb_non_solde_1_c <> 0 THEN montant_solde_1_c ELSE 0 END + CASE WHEN nb_non_solde_2_c <> 0 THEN montant_solde_2_c ELSE 0 END', '1', 'SUM', '#E', 80, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'CASL', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_NON_SOL_ETAB', 'SEJOURS', 'CA restant à solder établissement', 'CA restant à solder établissement', 'CA restant à solder', 'CASE WHEN nb_non_solde = 1 THEN montant_solde ELSE NULL END', '1', 'SUM', '#E', 70, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des factures non soldées', 'CASL', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_NON_SOL_EXT', 'SEJOURS', 'CA restant à solder (Autres-Externes)', 'CA restant à solder (Autres-Externes)', 'CA non solder (Autres)', 'CASE WHEN type_sejour = ''3'' AND nb_non_solde = 1 THEN montant_solde ELSE NULL END', '1', 'SUM', '#E', 70, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des factures non soldées des séjours Externes', '-TS3', 'CASL', '', '', '', '', '', '', ''), +(1, 'CTI_CA_NON_SOL_HC', 'SEJOURS', 'CA restant à solder (hospitalisation complète)', 'CA restant à solder (hospitalisation complète)', 'CA restant à solder (HC)', 'CASE WHEN type_sejour = ''1'' AND nb_non_solde = 1 THEN montant_solde ELSE NULL END', '1', 'SUM', '#E', 70, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des factures non soldées des séjours en Hospitalisation complète', 'CASL', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_NON_SOL_HJ', 'SEJOURS', 'CA restant à solder (Hospitalisation de jour)', 'CA restant à solder (Hospitalisation de jour)', 'CA restant à solder (HJ)', 'CASE WHEN (type_sejour = ''2'' OR type_sejour = ''5'') AND nb_non_solde = 1 THEN montant_solde ELSE NULL END', '1', 'SUM', '#E', 70, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des factures non soldées des séjours en Hospitalisation de Jour', 'CASL', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_RUBMED_MT_CPT', 'FACTURATION_CLINIQUE', 'CA SEJOUR comptabilisé', 'Montant CA SEJOUR comptabilisé', 'Montant CA SEJOUR comptabilisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] THEN montant_comptabilise ELSE 0 END', '1', 'SUM', '#E', 80, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires comptabilisé pour les séjours dans l''établissement', 'CACP', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_SOL_ETAB', 'SEJOURS', 'CA soldé établissement', 'CA soldé établissement', 'CA soldé ', 'CASE WHEN nb_non_solde<> 1 THEN montant_facture ELSE NULL END', '1', 'SUM', '#E', 60, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des factures soldées', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_SOL_EXT', 'SEJOURS', 'CA soldé (Autres-Externes)', 'CA soldé (Autres-Externes)', 'CA soldé (Autres)', 'CASE WHEN type_sejour = ''3'' AND nb_non_solde <> 1 THEN montant_facture ELSE NULL END', '1', 'SUM', '#E', 70, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des factures soldées des séjours Externes', '-TS3', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_CA_SOL_HC', 'SEJOURS', 'CA soldé (hospitalisation complète)', 'CA soldé (hospitalisation complète)', 'CA soldé (HC)', 'CASE WHEN type_sejour = ''1'' AND nb_non_solde <> 1 THEN montant_facture ELSE NULL END', '1', 'SUM', '#E', 70, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des factures soldées des séjours en Hospitalisation complète (1 nuit minimum)', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_SOL_HJ', 'SEJOURS', 'CA soldé (Hospitalisation de jour)', 'CA soldé (Hospitalisation de jour)', 'CA soldé (HJ)', 'CASE WHEN (type_sejour = ''2'' OR type_sejour = ''5'') AND nb_non_solde <> 1 THEN montant_facture ELSE NULL END', '1', 'SUM', '#E', 80, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des factures soldées des séjours en Hospitalisation de Jour (0 nuits)', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_T2A_CPT', 'FACTURATION_CLINIQUE', 'CA SOINS comptabilisé', 'Montant CA SOINS comptabilisé', 'Montant CA SOINS comptabilisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] THEN montant_comptabilise ELSE 0 END', '1', 'SUM', '#E', 80, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires comptabilisé des soins', 'CACP', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_VAL_ETAB', 'SEJOURS', 'CA Valorisé établissement', 'CA valorisé établissement', 'CA valorisé', 'montant_encours', '1', 'SUM', '#E', 80, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des séjours de l''établissement', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_VAL_EXT', 'SEJOURS', 'CA Valorisé (Autres-Externes)', 'CA valorisé (Autres-Externes)', 'CA valorisé (Autres)', 'CASE WHEN type_sejour = ''3'' THEN montant_encours ELSE NULL END', '1', 'SUM', '', 0, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des séjours externes', '-TS3', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_VAL_HC', 'SEJOURS', 'CA Valorisé hospitalisation complète', 'CA valorisé hospitalisation complète', 'CA valorisé (HC)', 'CASE WHEN type_sejour = ''1'' THEN montant_encours ELSE NULL END', '1', 'SUM', '#E', 80, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des séjours en Hospitalisation Complète', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_CA_VAL_HJ', 'SEJOURS', 'CA Valorisé (Hospitalisation de jour)', 'CA valorisé (Hospitalisation de jour)', 'CA valorisé (HJ)', 'CASE WHEN type_sejour = ''2'' OR type_sejour = ''5'' THEN montant_encours ELSE NULL END', '1', 'SUM', '#E', 70, '3', ' ', ' ', ' ', ' ', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des séjours en Hospitalisation de Jour', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_CCAACTCOMPTA_C', '*CALC', 'CA Activité comptable (Encours CTI)', 'Montant activité comptable', 'Montant activité comptable', '[1]+[2]', '1', '*CALC', '0E', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MTCPTCLI_C', 'CTI_CCAENCVAR_C', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires de l''activité comptable (encours)', 'CACP', 'CAV', '', '', '', '', '', '', ''), +(1, 'CTI_CCAACTCOMPTA_SEJOUR_C', '*CALC', 'CA SEJOUR Activité comptable (Encours CTI)', 'CA activité comptable Séjour', 'CA activité comptable Séjour', '[1]+[2]', '1', '*CALC', '0E', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_CA_RUBMED_MT_CPT', 'CTI_CCAENCVAR_SEJOUR_C', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires de l''activité comptable des séjours (encours)', 'CACP', 'CAV', '', '', '', '', '', '', ''), +(1, 'CTI_CCAACTCOMPTA_SOINS_C', '*CALC', 'CA SOINS Activité comptable (Encours CTI)', 'CA activité comptable Soins', 'CA activité comptable Soins', '[1]+[2]', '1', '*CALC', '0E', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_CA_T2A_CPT', 'CTI_CCAENCVAR_SOINS_C', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires de l''activité comptable des soins (encours)', 'CACP', 'CAV', '', '', '', '', '', '', ''), +(1, 'CTI_CCAENCDER_C', 'EN_COURS', 'CA encours dernier mois CTI', 'Montant encours', 'Montant encours', 'CASE WHEN code_origine = ''C'' THEN montant_encours ELSE 0 END', '1', 'SUMLASTMONTH', '0E', 0, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires de l''encours du mois précédent', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_CCAENCRECPRE_C', 'EN_COURS', 'CA report encours CTI premier mois', 'Montant report encours', 'Montant report encours', 'CASE WHEN code_origine = ''C'' THEN montant_report_encours ELSE 0 END', '1', 'SUMFIRSTMONTH', '0E', 0, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires du report de l''encours du mois précédent', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_CCAENCREP_C', 'EN_COURS', 'CA report encours CTI', 'Montant report encours', 'Montant report encours', 'CASE WHEN code_origine = ''C'' THEN montant_report_encours ELSE 0 END', '1', 'SUM', '0E', 0, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires du report de l''encours', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_CCAENCVAR_C', 'EN_COURS', 'CA variation encours CTI', 'CA variation encours', 'CA variation encours', 'CASE WHEN code_origine = ''C'' THEN montant_variation_encours ELSE 0 END', '1', 'SUM', '0E', 0, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires de la variation de l''encours', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_CCAENCVAR_C_12M', 'EN_COURS', 'CA variation encours CTI moyen (12 derniers mois)', 'Montant variation encours moyen', 'Montant variation encours moyen', 'CASE WHEN code_origine = ''C'' THEN montant_variation_encours ELSE 0 END', '1', 'AVG12M', '0E', 0, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen de la variation de l''encours sur les 12 derniers mois', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_CCAENCVAR_SEJOUR_C', 'EN_COURS', 'CA SEJOUR variation en-cours', 'Variation en-cours Séjour', 'Variation en-cours Séjour', 'CASE WHEN code_origine = ''C'' AND rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] THEN montant_variation_encours ELSE 0 END', '1', 'SUM', '#E', 80, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires de la variation de l''encours des séjours', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_CCAENCVAR_SOINS_C', 'EN_COURS', 'CA SOINS variation en-cours', 'Variation en-cours Soins', 'Variation en-cours Soins', 'CASE WHEN code_origine = ''C'' AND rubrique_facturation_id IN [LISTE:CTI_T2A_R] THEN montant_variation_encours ELSE 0 END', '1', 'SUM', '#E', 80, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires de la variation de l''encours des soins', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_CCAENC_C', 'EN_COURS', 'CA encours CTI', 'Montant encours', 'Montant encours', 'CASE WHEN code_origine = ''C'' THEN montant_encours ELSE 0 END', '1', 'SUM', '0E', 0, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires de l''encours', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_CDELSOLCA_C', '*CALC', 'Délai de solde selon CA (encours CTI)', 'Délai de solde selon CA', 'Délai de solde selon CA', 'base.cti_division(([1]+[2])*365,([3]+[4])*12)', '1', '*CALC', '0j', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MTSOLCLI_C', 'CTI_CCAENCDER_C', 'CTI_MTCPTCLI_C_12M', 'CTI_CCAENCVAR_C_12M', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Délai de solde selon le Chiffre d''Affaires', 'CACP', 'CASL', 'CAV', '', '', '', '', '', ''), +(1, 'CTI_CPC_MT_CPT', 'FACTURATION_CLINIQUE', 'CA CPC comptabilisé', 'CA chambre particulière comptabilisé', 'CA chambre particulière comptabilisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SHO_R] THEN montant_comptabilise ELSE 0 END', '1', 'SUM', '#E', 80, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires comptabilisé des chambres particulières', 'CACP', '', '', '', '', '', '', '', ''), +(1, 'CTI_DELAIFAC', '*CALC', 'Délai de facturation', 'Délai de facturation', 'Délai de facturation', 'base.cti_division([1] , [2])', '1', '*CALC', '0,0j', 60, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_SUM_DEL_FACTURE', 'CTI_SUM_NB_CALCULES', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Délai de facturation', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_DELAIG', 'SEJOURS', 'Délai de groupage', 'Délai de groupage', 'Délai groupage', 'delai_groupage', '1', 'AVG', '0,0', 0, '2', '5', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Délai de groupage', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_DELAISOL', '*CALC', 'Délai de solde', 'Délai de solde', 'Délai de solde', 'base.cti_division([1] , [2])', '1', '*CALC', '#,0j', 40, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_SUM_DEL_SOLD', 'CTI_NB_SOLDER', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Délai de solde', 'NBJOU', 'NOMBRE', '', '', '', '', '', '', ''), +(1, 'CTI_DEL_GROUPAGE', '*CALC', 'Délai de groupage', 'Délai de groupage', 'Délai de groupage', 'base.cti_division([1] , [2])', '1', '*CALC', '0,0j', 60, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_SUM_DEL_GRP', 'CTI_SUM_NB_GROUPE', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NBJOU', 'NOMBRE', '', '', '', '', '', '', ''), +(1, 'CTI_DEP', 'OCCUPATION', 'NB Départs sur la période', 'Départs sur la période', 'Sor Per', 'nb_ambulatoires + CASE WHEN type_sejour = ''5'' THEN 0 ELSE nb_seances END + nb_externes + nb_sorties_directes', '1', 'SUM', '#', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de sorties de patients sur la période', 'NBSOR', '', '', '', '', '', '', '', ''), +(1, 'CTI_DEPCOMP', 'OCCUPATION', 'SSR - Départs sur la période (Hospitalisation complète)', 'SSR- Départs sur la période (Hospitalisation complète)', 'SSR Sor Per H COMP', 'CASE WHEN mode_traitement_id = ''3'' THEN (nb_ambulatoires + CASE WHEN nb_entrees_directes = 1 THEN 0 ELSE nb_seances END + nb_externes + nb_sorties_directes) ELSE 0 END', '1', 'SUM', '#', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de sorties des séjours en Hospitalisation Complète', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_DIA_MT_FAC', 'FACTURATION_CLINIQUE', 'CA DIALYSE Facturé', 'Montant Dialyse Facturé', 'Montant Dialyse Facturé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_DIA_R] THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des dialyses', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_DIVERS_MT_ENC', 'FACTURATION_CLINIQUE', 'CA DIVERS Valorisé', 'CA [DIVERS] Valorisé', 'CA [DIVERS] Valorisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_DIVERS_R] THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des divers', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_DIVERS_MT_FAC', 'FACTURATION_CLINIQUE', 'CA DIVERS Facturé', 'CA [DIVERS] facturé', 'CA [DIVERS] facturé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_DIVERS_R] THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des divers', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_DIVERS_MT_TOT', 'FACTURATION_CLINIQUE', 'CA DIVERS Facturé + Valorisé', 'CA [DIVERS] facturé + Valorisé', 'CA [DIVERS] facturé + Valorisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_DIVERS_R] THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des divers', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_DIVERS_RUB_ENC', 'FACTURATION_CLINIQUE', 'NB Rubriques DIVERS Valorisées', 'Nombre rubriques [DIVERS] Valorisées', 'Nombre rubriques [DIVERS] Valorisées', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_DIVERS_R] THEN nb_rubrique_encours ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de rubriques valorisées en divers', 'NBRUB', '', '', '', '', '', '', '', ''), +(1, 'CTI_DIVERS_RUB_FAC', 'FACTURATION_CLINIQUE', 'NB Rubriques DIVERS facturées', 'Nombre rubriques [DIVERS] facturées', 'Nombre rubriques [DIVERS] facturées', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_DIVERS_R] THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de rubriques facturées en divers', 'NBRUB', '', '', '', '', '', '', '', ''), +(1, 'CTI_DIVERS_RUB_TOT', 'FACTURATION_CLINIQUE', 'NB Rubriques DIVERS Facturées + Valorisées', 'Nombre rubriques [DIVERS] Facturées + Valorisées', 'Nombre rubriques [DIVERS] Facturées + Valorisées', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_DIVERS_R] THEN nb_rubrique_facture + nb_rubrique_encours ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de rubriques facturées et valorisées en divers', 'NBRUB', '', '', '', '', '', '', '', ''), +(1, 'CTI_DMSCP', '*CALC', 'SSR - DMS totale (Nb de Jours + Ambulatoire JSN/Nb Sorties directes + Ambulatoire JSN)', 'DMS totale (Nb de journées + Ambulatoire JSN/Nb Sorties directes + Ambulatoire JSN)', 'DMS totale (Nb de journées + Ambulatoire JSN/Nb Sorties directes + Ambulatoire JSN)', 'CASE WHEN [2] <> 0 THEN [1] / [2] ELSE 0 END', '1', '*CALC', '#,00', 80, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_JRSORCP', 'CTI_SORDIRCOM', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'DMS totale de l''établissement', '-TS1', '-TS2', '-TS5', '', '', '', '', '', ''), +(1, 'CTI_DMSHOS', 'SEJOURS', 'DMS Hospitalisés', 'DMS Hospitalisés', 'DMS Hospitalisés', 'CASE WHEN type_sejour = ''1'' AND code_sorti = ''1'' AND date_sortie > date_entree THEN date_sortie - date_entree ELSE NULL END', '1', 'AVG', '', 0, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'DMS des séjours hospitalisés (1 nuit minimum)', '-TS1', '', '', '', '', '', '', '', ''), +(1, 'CTI_DMSR', '*CALC', 'DMS Hospitalisés', 'DMS Hospitalisés', 'DMS Hospitalisés', 'CASE WHEN [2] <> 0 THEN [1] / [2] ELSE 0 END', '1', '*CALC', '#,00', 80, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBJSN', 'CTI_NBSORDIR', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'DMS des séjours hospitalisés (1 nuit minimum)', '-TS1', 'NBJOU', 'NBSOR', '', '', '', '', '', ''), +(1, 'CTI_DMSTOT', '*CALC', 'DMS Hospitalisation', 'DMS Hospitalisation', 'DMS Hospitalisation', 'CASE WHEN [2] <> 0 THEN [1] / [2] ELSE 0 END', '1', '*CALC', '#,00', 80, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NB2_JSN', 'CTI_NBSOR_SA', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'DMS des séjours d''hospitalisation (hors séances)', '-TS1', '-TS2', 'NBJOU', 'NBSOR', '', '', '', '', ''), +(1, 'CTI_EMC', 'OCCUPATION', 'EMC', 'EMC', 'EMC', 'equivalent_malade_complet', '1', 'SUM', '', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Equivalent Malade Complet', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_EMI_MT_FAC', 'FACTURATION_CLINIQUE', 'CA EMI Facturé', 'CA EMI Facturé', 'CA EMI Facturé', 'CASE WHEN prestation_code IN (''EMI'') THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des prestations de type ''EMI''', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_ENTDIRCOM', 'OCCUPATION', 'SSR - Entrées directes (Hospitalisés COMPLETE)', 'Entrées directes (Hospitalisés COMPLETE)', 'Entrées directes (Hospitalisés COMPETE)', 'CASE WHEN mode_traitement_id = ''3'' THEN nb_entrees_directes ELSE 0 END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''entrées directes en Hospitalisation Complète', '-TS1', '', '', '', '', '', '', '', ''), +(1, 'CTI_ENTDIRJR', 'OCCUPATION', 'SSR - Entrées directes (Hospitalisés DE JOUR)', 'Entrées directes (Hospitalisés DE JOUR)', 'Entrées directes (Hospitalisés DE JOUR)', 'CASE WHEN mode_traitement_id = ''4'' THEN nb_entrees_directes ELSE 0 END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''entrées directes en Hospitalisation de Jour', '-TS1', '', '', '', '', '', '', '', ''), +(1, 'CTI_EXB_NB_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA EXH Valorisés', 'Nombre séjours EXH Valorisés', 'Nombre séjours EXH Valorisés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and prestation_code IN (''EXH'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours contenant des prestations de type ''EXH'' valorisées', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_EXH_JOU_ENC', 'FACTURATION_CLINIQUE', 'NB Jours EXH Valorisées', 'Nombre journées EXH Valorisées', 'Nombre journées EXH Valorisées', 'CASE WHEN prestation_code IN (''EXH'') THEN nb_rubrique_encours ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de jours des séjours contenant des prestations de type ''EXH'' valorisées', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_EXH_JOU_FAC', 'FACTURATION_CLINIQUE', 'NB Jours EXH facturées', 'Nombre journées EXH facturées', 'Nombre journées EXH facturées', 'CASE WHEN prestation_code IN (''EXH'') THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de jours des séjours contenant des prestations de type ''EXH'' facturées', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_EXH_JOU_TOT', 'FACTURATION_CLINIQUE', 'NB Jours EXH Facturées + Valorisées', 'Total journées EXH Facturées + Valorisées', 'Total journées EXH Facturées + Valorisées', 'CASE WHEN prestation_code IN (''EXH'') THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de jours des séjours contenant des prestations de type ''EXH'' facturées et valorisées', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_EXH_MT_ENC', 'FACTURATION_CLINIQUE', 'CA EXH Valorisé', 'Montant EXH Valorisé', 'Montant EXH Valorisé', 'CASE WHEN prestation_code IN (''EXH'') THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des prestations de type ''EXH''', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_EXH_MT_FAC', 'FACTURATION_CLINIQUE', 'CA EXH Facturé', 'Montant EXH facturé', 'Montant EXH facturé', 'CASE WHEN prestation_code IN (''EXH'') THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des prestations de type ''EXH''', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_EXH_MT_TOT', 'FACTURATION_CLINIQUE', 'CA EXH Facturé + Valorisé', 'Montant EXH facturé + Valorisé', 'Montant EXH facturé + Valorisé', 'CASE WHEN prestation_code IN(''EXH'') THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des prestations de type ''EXH''', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_EXH_NB_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA EXH facturés', 'Nombre séjours EXH facturés', 'Nombre séjours EXH facturés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and prestation_code IN (''EXH'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours facturés comportant des prestations de type ''EXH''', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_EXH_NB_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA EXH Facturés + Valorisés', 'Nombre séjours EXH Facturés + Valorisés', 'Nombre séjours EXH Facturés + Valorisés', 'DISTINCT CASE WHEN ( prestation_code IN (''EXH'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours facturés et valorisés comportant des prestations de type ''EXH''', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_EXT_MT_ENC', 'FACTURATION_CLINIQUE', 'CA Externes Valorisé Clinique', 'Montant externe Valorisé Clinique', 'Montant externe Valorisé Clinique', 'CASE WHEN type_sejour = ''3'' THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '-TS3', 'CAV', '', '', '', '', '', '', ''), +(1, 'CTI_EXT_MT_FAC', 'FACTURATION_CLINIQUE', 'CA Externes Facturé', 'Montant externe facturé', 'Montant externe facturé', 'CASE WHEN type_sejour = ''3'' THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '-TS3', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_EXT_MT_TOT', 'FACTURATION_CLINIQUE', 'CA Externes Facturé + Valorisé', 'Montant externe Facturé + Valorisé', 'Montant externe Facturé + Valorisé', 'CASE WHEN type_sejour = ''3'' THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '-TS3', 'CAVF', '', '', '', '', '', '', ''), +(1, 'CTI_EXT_NB_ENC', 'FACTURATION_CLINIQUE', 'NB externes Valorisés Clinique', 'Nombre externes Valorisés', 'Nombre externes Valorisés', 'DISTINCT CASE WHEN nb_rubrique_encours <> 0 and type_sejour = ''3'' THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '-TS3', 'NBENT', '', '', '', '', '', '', ''), +(1, 'CTI_EXT_NB_FAC', 'FACTURATION_CLINIQUE', 'NB externes facturés Clinique', 'Nombre externes facturés', 'Nombre externes facturés', 'DISTINCT CASE WHEN (nb_rubrique_facture <> 0 and type_sejour = ''3'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '-TS3', 'NBENT', '', '', '', '', '', '', ''), +(1, 'CTI_EXT_NB_TOT', 'FACTURATION_CLINIQUE', 'NB externes Facturés + Valorisés Clinique', 'Nombre d''externes Facturés + Valorisés', 'Nombre d''externes Facturés + Valorisés', 'DISTINCT CASE WHEN (nb_rubrique_facture <> 0 or nb_rubrique_encours <> 0) and type_sejour = ''3'' THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '-TS3', 'NBENT', '', '', '', '', '', '', ''), +(1, 'CTI_E_1_01', 'OCCUPATION', 'NB Entrees avant période', 'Ent pre periode', 'Ent pre per', 'DISTINCT CASE WHEN date_entree < date_trunc(''year'', date_reference)::date THEN no_sejour ELSE NULL END', '1', 'COUNT', '#', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''entrées avant le début de la période d''analyse', 'NBENT', '', '', '', '', '', '', '', ''), +(1, 'CTI_FFM_MT_ENC', 'FACTURATION_CLINIQUE', 'CA FFM Valorisé', 'Montant FFM Valorisé Clinique', 'Montant FFM Valorisé Clinique', 'CASE WHEN prestation_code IN (''FFM'') THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des prestations de type ''FFM''', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_FFM_MT_TOT', 'FACTURATION_CLINIQUE', 'CA FFM Facturé + Valorisé', 'Montant FFM Facturé + Valorisé', 'Montant FFM Facturé + Valorisé', 'CASE WHEN prestation_code IN (''FFM'') THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des prestations de type ''FFM''', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_FFM_NB_ENC', 'FACTURATION_CLINIQUE', 'NB Rubriques FFM Valorisés', 'Nombre FFM Valorisés', 'Nombre FFM Valorisés', 'CASE WHEN prestation_code IN (''FFM'') THEN nb_rubrique_encours ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de prestations FFM valorisées', 'NBRUB', '', '', '', '', '', '', '', ''), +(1, 'CTI_FFM_NB_FAC', 'FACTURATION_CLINIQUE', 'NB Rubriques FFM facturés', 'Nombre FFM facturés', 'Nombre FFM facturés', 'CASE WHEN prestation_code IN (''FFM'') THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de prestations FFM facturées', 'NBRUB', '', '', '', '', '', '', '', ''), +(1, 'CTI_FFM_NB_TOT', 'FACTURATION_CLINIQUE', 'NB Rubriques FFM Facturés + Valorisés', 'Nombre FFM Facturé + Valorisé', 'Nombre FFM Facturé + Valorisé', 'CASE WHEN prestation_code IN (''FFM'') THEN nb_rubrique_facture + nb_rubrique_encours ELSE 0 END', '1', 'SUM', '#', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de prestations FFM facturées et valorisées', 'NBRUB', '', '', '', '', '', '', '', ''), +(1, 'CTI_GHSM_MTDA1_FAC', '*CALC', 'CA GHS Moyen [HOSP] (date acte)', 'CA moyen GHS (Hospitalisés) (date acte)', 'CA moyen GHS (Hospitalisés) (date acte)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des GHS des séjours hospitalisés (1 nuit minimum) (date acte)', '-TS1', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_GHSM_MTDA2_FAC', '*CALC', 'CA GHS Moyen [AMBU] (date acte)', 'CA moyen GHS (Ambulatoire) (date acte)', 'CA moyen GHS (Ambulatoire) (date acte)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des GHS des séjours ambulatoires (0 nuits) (date acte)', '-TS2', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_GHSM_MTDA_FAC', '*CALC', 'CA GHS Moyen (date acte)', 'CA moyen GHS (date acte)', 'CA moyen GHS (date acte)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des GHS (date acte)', 'CAF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_GHSM_MTDS1_FAC', '*CALC', 'CA GHS Moyen [HOSP] (date sortie)', 'CA moyen GHS (Hospitalisés) (date sortie)', 'CA moyen GHS (Hospitalisés) (date sortie)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des GHS des séjours hospitalisés (1 nuit minimum) (date sortie)', '-TS1', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_GHSM_MTDS2_FAC', '*CALC', 'CA GHS Moyen [AMBU] (date sortie)', 'CA moyen GHS Ambulatoire (date sortie)', 'CA moyen GHS Ambulatoire (date sortie)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des GHS des séjours ambulatoires (0 nuits) (date sortie)', '-TS2', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_GHSM_MTDS_FAC', '*CALC', 'CA GHS Moyen (date sortie)', 'CA moyen GHS (date sortie)', 'CA moyen GHS (date sortie)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des GHS (date sortie)', 'CAF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_GHSM_MTDV1_FAC', '*CALC', 'CA GHS Moyen [HOSP] (date vente)', 'CA moyen GHS (Hospitalisés) (date vente)', 'CA moyen GHS (Hospitalisés) (date vente)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des GHS des séjours hospitalisés (1 nuit minimum) (date vente)', '-TS1', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_GHSM_MTDV2_FAC', '*CALC', 'CA GHS Moyen [AMBU] (date vente)', 'CA moyen GHS Ambulatoire (date vente)', 'CA moyen GHS Ambulatoire (date vente)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des GHS des séjours ambulatoires (0 nuits) (date vente)', '-TS2', 'CAF', 'NBSEJ', '', '', '', '', '', ''), +(1, 'CTI_GHSM_MTDV_FAC', '*CALC', 'CA GHS Moyen (date vente)', 'CA moyen GHS (date vente)', 'CA moyen GHS (date vente)', 'base.cti_division([1] , [2])', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen des GHS (date vente)', 'CAF', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_MT1_ENC', 'FACTURATION_CLINIQUE', 'CA GHS Valorisé [HOSP]', 'Montant GHS Valorisé (hospitalisés)', 'Montant GHS Valorisé (hospitalisés)', 'CASE WHEN prestation_code IN (''GHS'') and type_sejour = ''1'' THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des GHS des séjours hospitalisés (1 nuit minimum)', '-TS1', 'CAV', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_MT1_FAC', 'FACTURATION_CLINIQUE', 'CA GHS Facturé [HOSP]', 'Montant GHS facturé (hospitalisés)', 'Montant GHS facturé (hospitalisés)', 'CASE WHEN prestation_code IN (''GHS'') and type_sejour = ''1'' THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des GHS des séjours hospitalisés (1 nuit minimum)', '-TS1', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_MT1_TOT', 'FACTURATION_CLINIQUE', 'CA GHS Facturé + Valorisé [HOSP]', 'Montant GHS facturé + Valorisé (hospitalisés)', 'Montant GHS facturé + Valorisé (hospitalisés)', 'CASE WHEN prestation_code IN (''GHS'') and type_sejour = ''1'' THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des GHS des séjours hospitalisés (1 nuit minimum)', '-TS1', 'CAVF', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_MT2_ENC', 'FACTURATION_CLINIQUE', 'CA GHS Valorisé [AMBU]', 'Montant GHS Valorisé (ambulatoire)', 'Montant GHS Valorisé (ambulatoire)', 'CASE WHEN prestation_code IN (''GHS'') and type_sejour = ''2'' THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des GHS des séjours ambulatoires (0 nuits)', '-TS2', 'CAV', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_MT2_FAC', 'FACTURATION_CLINIQUE', 'CA GHS Facturé [AMBU]', 'Montant GHS facturé (ambulatoire)', 'Montant GHS facturé (ambulatoire)', 'CASE WHEN prestation_code IN (''GHS'') and type_sejour = ''2'' THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des GHS des séjours ambulatoires (0 nuits)', '-TS2', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_MT2_TOT', 'FACTURATION_CLINIQUE', 'CA GHS Facturé + Valorisé [AMBU]', 'Montant GHS facturé + Valorisé (ambulatoire)', 'Montant GHS facturé + Valorisé (ambulatoire)', 'CASE WHEN prestation_code IN (''GHS'') and type_sejour = ''2'' THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des GHS des séjours ambulatoires (0 nuits)', '-TS2', 'CAVF', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_MT5_ENC', 'FACTURATION_CLINIQUE', 'CA GHS Valorisé [SEANCE]', 'Montant GHS Valorisé (séances)', 'Montant GHS Valorisé (séances)', 'CASE WHEN prestation_code IN (''GHS'') and type_sejour = ''5'' THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des GHS des séances', '-TS5', 'CAV', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_MT5_FAC', 'FACTURATION_CLINIQUE', 'CA GHS Facturé [SEANCE]', 'Montant GHS facturé (séances)', 'Montant GHS facturé (séances)', 'CASE WHEN prestation_code IN (''GHS'') and type_sejour = ''5'' THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des GHS des séances', '-TS5', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_MT5_TOT', 'FACTURATION_CLINIQUE', 'CA GHS Facturé + Valorisé [SEANCE]', 'Montant GHS facturé + Valorisé (séances)', 'Montant GHS facturé + Valorisé (séances)', 'CASE WHEN prestation_code IN (''GHS'') and type_sejour = ''5'' THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des GHS des séances', '-TS5', 'CAVF', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_MT_ENC', 'FACTURATION_CLINIQUE', 'CA GHS Valorisé', 'Montant GHS Valorisé', 'Montant GHS Valorisé', 'CASE WHEN prestation_code IN (''GHS'') THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des GHS', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_MT_FAC', 'FACTURATION_CLINIQUE', 'CA GHS Facturé', 'Montant GHS facturé', 'Montant GHS facturé', 'CASE WHEN prestation_code IN (''GHS'') THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des GHS', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_MT_TOT', 'FACTURATION_CLINIQUE', 'CA GHS Facturé + Valorisé', 'Montant GHS facturé + Valorisé', 'Montant GHS facturé + Valorisé', 'CASE WHEN prestation_code IN (''GHS'') THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des GHS', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_NB1_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA GHS Valorisés [HOSP]', 'Nombre séjours GHS Valorisés (hospitalisés)', 'Nombre séjours GHS Valorisés (hospitalisés)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and prestation_code IN (''GHS'') and type_sejour = ''1'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours hospitalisés (1 nuit minimum) comportant des prestations de type ''GHS'' valorisées', '-TS1', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_NB1_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA GHS facturés [HOSP]', 'Nombre séjours GHS facturés (hospitalisés)', 'Nombre séjours GHS facturés (hospitalisés)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and prestation_code IN (''GHS'') and type_sejour = ''1'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours hospitalisés (1 nuit minimum) comportant des prestations de type ''GHS'' facturées', '-TS1', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_NB1_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA GHS Facturés + Valorisés [HOSP]', 'Nombre séjours GHS Facturés + Valorisés (hospitalisés)', 'Nombre séjours GHS Facturés + Valorisés (hospitalisés)', 'DISTINCT CASE WHEN ( prestation_code IN (''GHS'') and type_sejour = ''1'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours hospitalisés (1 nuit minimum) comportant des prestations de type ''GHS'' facturées et valorisées', '-TS1', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_NB2_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA GHS Valorisés [AMBU]', 'Nombre séjours GHS Valorisés (ambulatoire)', 'Nombre séjours GHS Valorisé s(ambulatoire)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and prestation_code IN (''GHS'') and type_sejour = ''2'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours ambulatoires (0 nuits) comportant des prestations de type ''GHS'' valorisées', '-TS2', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_NB2_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA GHS facturés [AMBU]', 'Nombre séjours GHS facturés (ambulatoire)', 'Nombre séjours GHS facturés (ambulatoire)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and prestation_code IN (''GHS'') and type_sejour = ''2'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours ambulatoires (0 nuits) comportant des prestations de type ''GHS'' facturées', '-TS2', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_NB2_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA GHS Facturés + Valorisés [AMBU]', 'Nombre séjours GHS Facturés + Valorisés (ambulatoire)', 'Nombre séjours GHS Facturés + Valorisés (ambulatoire)', 'DISTINCT CASE WHEN ( prestation_code IN (''GHS'') and type_sejour = ''2'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours ambulatoires (0 nuits) comportant des prestations de type ''GHS'' facturées et valorisées', '-TS2', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_NB5_ENC', 'FACTURATION_CLINIQUE', 'NB séances GHS Valorisées [SEANCE]', 'Séances GHS Valorisées (séances)', 'Séances GHS Valorisées (séances)', 'CASE WHEN prestation_code IN (''GHS'') and type_sejour = ''5'' THEN nb_rubrique_encours ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séances comportant des prestations de type ''GHS'' valorisées', '-TS5', '', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_NB5_FAC', 'FACTURATION_CLINIQUE', 'NB séances GHS facturés [SEANCE]', 'Séances GHS facturés (séances)', 'Séances GHS facturés (séances)', 'CASE WHEN prestation_code IN (''GHS'') and type_sejour = ''5'' THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séances comportant des prestations de type ''GHS'' facturées', '-TS5', '', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_NB5_TOT', 'FACTURATION_CLINIQUE', 'NB séances GHS Facturés + Valorisés [SEANCE]', 'Nombre séances GHS Facturés + Valorisés (séances)', 'Nombre séances GHS Facturés + Valorisés (séances)', 'CASE WHEN prestation_code IN (''GHS'') and type_sejour = ''5'' THEN nb_rubrique_facture + nb_rubrique_encours ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séances comportant des prestations de type ''GHS'' facturées et valorisées', '-TS5', '', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_NB_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA GHS Valorisés', 'Nombre séjours GHS Valorisés', 'Nombre séjours GHS Valorisés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and prestation_code IN (''GHS'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de prestations de type ''GHS'' valorisées', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_NB_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA GHS facturés', 'Nombre séjours GHS facturés', 'Nombre séjours GHS facturés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and prestation_code IN (''GHS'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de prestations de type ''GHS'' facturées', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_GHS_NB_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA GHS Facturés + Valorisés', 'Nombre séjours GHS Facturés + Valorisés', 'Nombre séjours GHS Facturés + Valorisés', 'DISTINCT CASE WHEN ( prestation_code IN (''GHS'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de prestations de type ''GHS'' facturées et valorisées', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_JOUR_FAC', 'OCCUPATION', 'NB Jours facturées', 'Nombre journées facturées', 'Jour Fac', 'CASE WHEN date_sortie <= ''[TOPERIODE]'' AND nb_non_facture = 0 THEN nb_jours_f ELSE null END', '1', 'SUM', '#', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées facturées', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_JRSORCP', 'OCCUPATION', 'SSR - Nombres de Jours séjours sortis(Hospitalisés COMPLETE) + Ambulatoires + Séances', 'Nombres de journées séjours sortis (Hospitalisés COMPLETE) + Ambulatoires + Séances', 'Nombres de journées séjours sortis (Hospitalisés COMPLETE) + Ambulatoires + Séances', 'CASE WHEN date_sortie <= ''[TOPERIODE]'' AND mode_traitement_id = ''3'' THEN 1 ELSE 0 END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de jours des séjours sortis en Hospitalisation Complète, ambulatoires et séances', '-TS1', '-TS2', '-TS5', '', '', '', '', '', ''), +(1, 'CTI_JRSORJR', 'OCCUPATION', 'SSR - Nombres de Jours séjours sortis(Hospitalisés DE JOUR) + Ambulatoires + Séances', 'Nombres de journées séjours sortis (Hospitalisés DE JOUR) + Ambulatoires + Séances', 'Nombres de journées séjours sortis (Hospitalisés DE JOUR) + Ambulatoires + Séances', 'CASE WHEN date_sortie <= ''[TOPERIODE]'' AND code_sorti = ''1'' AND mode_traitement_id = ''4'' THEN (nb_jours_f + nb_ambulatoires + nb_seances) ELSE 0 END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de jours des séjours sortis en Hospitalisation de Jour, ambulatoires et séances', '-TS1', '-TS2', '-TS5', '', '', '', '', '', ''), +(1, 'CTI_MTCOM_H', 'FACTURATION_HONORAIRE', 'CA HONORAIRES comptabilisé', 'Montant comptabilisé Hononoraire', 'Montant comptabilisé Hononoraire', 'montant_comptabilise', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires comptabilisé des honoraires', 'CACP', 'CAHON', '', '', '', '', '', '', ''), +(1, 'CTI_MTCPTCLI_C', 'CLIENTS_CLINIQUE', 'CA Comptabilisé Clinique', 'Montant comptabilisé Clinique', 'Montant comptabilisé Clinique', 'montant_comptabilise', '1', 'SUM', '#E', 0, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires comptabilisé clinique', 'CACP', '', '', '', '', '', '', '', ''), +(1, 'CTI_MTCPTCLI_C_12M', 'CLIENTS_CLINIQUE', 'CA Comptabilisé Moyen Clinique (12 derniers mois)', 'Montant comptabilisé Moyen Clinique (Moyenne 12 derniers mois)', 'Montant comptabilisé Moyen Clinique (Moyenne 12 derniers mois)', 'montant_comptabilise', '1', 'AVG12M', '#E', 0, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires moyen comptabilisé clinique sur les 12 derniers mois', 'CACP', '', '', '', '', '', '', '', ''), +(1, 'CTI_MTC_CHDS_FAC', '*CALC', 'CA CLINIQUE + HONORAIRES Comptabilisé (Date sortie)', 'Montant Comptabilisé Clinique + Honoraire', 'Montant Comptabilisé Clinique + Honoraire', '[1] + [2]', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires comptabilisé clinique et honoraires (date sortie)', 'CACP', 'CAHON', '', '', '', '', '', '', ''), +(1, 'CTI_MTC_CHDV_FAC', '*CALC', 'CA CLINIQUE + HONORAIRES Comptabilisé (Date vente)', 'Montant Comptabilisé Clinique + Honoraire', 'Montant Comptabilisé Clinique + Honoraire', '[1] + [2]', '1', '*CALC', '#E', 80, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires comptabilisé clinique et honoraires (date vente)', 'CACP', 'CAHON', '', '', '', '', '', '', ''), +(1, 'CTI_MTENC_C', 'FACTURATION_CLINIQUE', 'CA TOTAL Etablissement Valorisé', 'Montant Total Clinique Valorisé', 'Montant Total Clinique Valorisé', 'montant_encours', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé total de l''établissement', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_MTFAC1_C', 'FACTURATION_CLINIQUE', 'CA TOTAL Etablissement Facturé [HOSP]', 'Montant Total Clinique Facturé (Hospitalisés)', 'Montant Total Clinique Facturé (Hospitalisés)', 'CASE WHEN type_sejour = ''1'' THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des séjours hospitalisés (1 nuit minimum)', '-TS1', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_MTFAC2_C', 'FACTURATION_CLINIQUE', 'CA TOTAL Etablissement Facturé [AMBU]', 'Montant Total Clinique Facturé (Ambulatoire)', 'Montant Total Clinique Facturé (Ambulatoire)', 'CASE WHEN type_sejour = ''2'' THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des séjours ambulatoires (0 nuits)', '-TS2', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_MTFAC3_C', 'FACTURATION_CLINIQUE', 'CA TOTAL Etablissement Facturé [EXT]', 'Montant Total Clinique Facturé (Externe)', 'Montant Total Clinique Facturé (Externe)', 'CASE WHEN type_sejour = ''3'' THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des séjours externes', '-TS3', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_MTFAC5_C', 'FACTURATION_CLINIQUE', 'CA TOTAL Etablissement Facturé (Séance)', 'Montant Total Clinique Facturé (Séance)', 'Montant Total Clinique Facturé (Séance)', 'CASE WHEN type_sejour = ''5'' THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des séances', '-TS5', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_MTFAC_C', 'FACTURATION_CLINIQUE', 'CA TOTAL Etablissement Facturé', 'Montant Total Clinique facturé', 'Montant Total Clinique facturé', 'montant_facture', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé total de l''établissement', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_MTFAC_CS', 'FACTURATION_CLINIQUE', 'CA Facturé Clinique (date sortie)', 'Montant facturé Clinique', 'Facturé C', 'montant_facture', '1', 'SUM', '', 0, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé ^ la clinique (date sortie)', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_MTFAC_CV', 'FACTURATION_CLINIQUE', 'CA Facturé Clinique (date ventes)', 'Montant facturé Clinique', 'Facturé C', 'montant_facture', '1', 'SUM', '', 0, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé ^ la clinique (date vente)', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_MTFAC_H', 'FACTURATION_HONORAIRE', 'CA HONORAIRES Facturé', 'Montant facturé Hononoraire', 'Montant facturé Hononoraire', 'montant_facture', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des honoraires', 'CAF', 'CAHON', '', '', '', '', '', '', ''), +(1, 'CTI_MTREG_C', 'CLIENTS_CLINIQUE', 'CA Encaissé Clinique', 'Montant encaissé Clinique', 'Montant encaissé Clinique', 'montant_regle', '1', 'SUM', '#E', 80, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires encaissé clinique', 'CARG', '', '', '', '', '', '', '', ''), +(1, 'CTI_MTSOLCLI_C', 'CLIENTS_CLINIQUE', 'CA Solde client', 'Montant solde Clinique', 'Montant solde Clinique', 'montant_solde', '1', 'SUM', '#E', 80, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires du solde clients', 'CASL', '', '', '', '', '', '', '', ''), +(1, 'CTI_MTVEN_C', 'FACTURATION_CLINIQUE', 'CA comptabilisé TOTAL', 'Montant comptabilisé Clinique', 'Montant comptabilisé Clinique', 'montant_comptabilise', '1', 'SUM', '#E', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires comptabilisé total', 'CACP', '', '', '', '', '', '', '', ''), +(1, 'CTI_MT_FAC_TOT', 'FACTURATION_CLINIQUE', 'CA TOTAL Etablissement Facturé + Valorisé', 'Montant Total Clinique Facturé + Valorisé', 'Montant Total Clinique Facturé + Valorisé', 'montant_facture + montant_encours', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé total', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB2_JSN', 'OCCUPATION', 'NB Jours Hospitalisés + Ambulatoires', 'Nombres de journées (Hospitalisés) + Ambulatoire', 'Nombres de journées (Hospitalisés) + Ambulatoire JS non inclus', 'nb_jours_f + nb_ambulatoires', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées passées en séjours hospitalisés ou ambulatoires', '-TS1', '-TS2', 'NBJOU', '', '', '', '', '', ''), +(1, 'CTI_NB4_JSN', 'OCCUPATION', 'NB Jours Hospitalisés + Ambulatoires + Externes', 'Nombres de journées (Hospitalisés) + Ambulatoires + Externes', 'Nombres de journées (Hospitalisés) + Ambulatoires + Externes JS non inclus', 'nb_jours_f + nb_ambulatoires + nb_externes', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées passées en séjours hospitalisés, ambulatoires ou externes', '-TS1', '-TS2', '-TS3', 'NBJOU', '', '', '', '', ''), +(1, 'CTI_NB4_JSNCP', 'OCCUPATION', 'SSR - Nombres de Jours (Hospitalisés COMPLETE) + Ambulatoires + Séances', 'Nombres de journées (Hospitalisés COMPLETE)) + Ambulatoires + Séances', 'Nombres de journées (Hospitalisés COMPLETE)) + Ambulatoires + Externes + Séances JS non inclus', 'CASE WHEN mode_traitement_id = ''3'' THEN (nb_jours_f + nb_ambulatoires + nb_seances) ELSE 0 END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées passées en séjours en Hospitalisation Complète ou ambulatoires ou externes ou séances', '-TS1', '-TS2', '-TS5', '', '', '', '', '', ''), +(1, 'CTI_NB4_JSNJR', 'OCCUPATION', 'SSR - Nombres de Jours (Hospitalisés DE JOUR) + Ambulatoires + Séances', 'Nombres de journées (Hospitalisés DE JOUR) + Ambulatoires + Séances', 'Nombres de journées (Hospitalisés DE JOUR) + Ambulatoires + Externes + Séances JS non inclus', 'CASE WHEN mode_traitement_id = ''4'' THEN (nb_jours_f + nb_ambulatoires + nb_seances) ELSE 0 END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées passées en séjours en Hospitalisation de Jour ou ambulatoires ou externes ou séances', '-TS1', '-TS2', '-TS5', '', '', '', '', '', ''), +(1, 'CTI_NB5_JSN', 'OCCUPATION', 'NB Jours Hospitalisés + Ambulatoires + Externes + Séances', 'Nombres de journées (Hospitalisés) + Ambulatoires + Externes + Séances', 'Nombres de journées (Hospitalisés) + Ambulatoires + Externes + Séances JS non inclus', 'nb_jours_f + nb_ambulatoires + nb_externes + nb_seances', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées passées en séjours hospitalisés, ambulatoires, externes ou séances', '-TS1', '-TS2', '-TS3', '-TS5', 'NBJOU', '', '', '', ''), +(1, 'CTI_NB6_JFSN', 'OCCUPATION', 'NB Jours facturées (Hospitalisés sortis) + Ambulatoires + Séances', 'Nombres de journées facturées (Hospitalisés sortis) + Ambulatoires + Séances', 'Nombres de journées facturées (Hospitalisés sortis) + Ambulatoires + Externes + Séances JS non inclus', 'CASE WHEN est_facture = ''1'' AND date_sortie <= ''[TOPERIODE]'' THEN nb_jours_f + nb_ambulatoires + nb_seances ELSE 0 END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées facturées passées en séjours hospitalisés ou ambulatoires ou externes ou séances', '-TS2', 'NBJOU', '', '', '', '', '', '', ''), +(1, 'CTI_NB6_JNFSN', 'OCCUPATION', 'NB Jours valorisées Hospitalisés + Ambulatoires + Séances', 'Nombres de journées valorisées (Hospitalisés) + Ambulatoires + Séances', 'Nombres de journées valorisées (Hospitalisés) + Ambulatoires + Externes + Séances JS non inclus', 'CASE WHEN est_facture = ''0'' THEN nb_jours_f + nb_ambulatoires + nb_seances ELSE 0 END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées valorisées passées en séjours hospitalisés ou ambulatoires ou externes ou séances', '-TS1', '-TS2', '-TS5', 'NBJOU', '', '', '', '', ''), +(1, 'CTI_NB6_JSN', 'OCCUPATION', 'NB Jours (Hospitalisés) + Ambulatoires + Séances', 'Nombres de journées (Hospitalisés) + Ambulatoires + Séances', 'Nombres de journées (Hospitalisés) + Ambulatoires + Séances', 'nb_jours_f + nb_ambulatoires + nb_seances', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées passées en séjours hospitalisés ou ambulatoires ou séances', '-TS2', 'NBJOU', '', '', '', '', '', '', ''), +(1, 'CTI_NBAMB', 'OCCUPATION', 'NB ambulatoires', 'Nombres d''ambulatoires', 'Nombres d''ambulatoires', 'nb_ambulatoires', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours en ambulatoires', '-TS2', 'NBENT', '', '', '', '', '', '', ''), +(1, 'CTI_NBAMBFOR', 'OCCUPATION', 'NB ambulatoires forains', 'Nombres d''ambulatoires forains', 'Ambulatoires forains', 'CASE WHEN nb_ambulatoires <> 0 AND lieu_reference_etage_id IN (SELECT etage_id FROM activite.t_etages_historique WHERE nb_lits_theoriques <> 0) THEN nb_ambulatoires ELSE 0 END', '1', 'SUM', '#', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''ambulatoires forains', '-TS2', 'NBENT', '', '', '', '', '', '', ''), +(1, 'CTI_NBAMBHFOR', 'OCCUPATION', 'Nombre d''ambulatoires en service ambulatoire', 'Nombres d''ambulatoires en service ambulatoire', 'Ambulatoires', 'CASE WHEN nb_ambulatoires <> 0 AND lieu_reference_etage_id IN (SELECT etage_id FROM activite.t_etages_historique WHERE nb_box_ambulatoires_theoriques <> 0) THEN nb_ambulatoires ELSE 0 END', '1', 'SUM', '#', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''ambulatoires', '-TS2', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBAMBSEA', 'OCCUPATION', 'NB Ambulatoires et séances', 'Ambulatoires + séances', 'Ambulatoires + séances', 'nb_ambulatoires + nb_seances', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''ambulatoires et de séances', '-TS2', 'NBENT', '', '', '', '', '', '', ''), +(1, 'CTI_NBCHPO', 'OCCUPATION', 'NB Jours en CPC', 'Chambres particulières occup?', 'Chambres particulières occup?', 'nb_chambres_particulieres_js_non_inclus_f', '1', 'SUM', '', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées passées en chambre particulière', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBDEAD', 'OCCUPATION', 'NB décès', 'Nombre de décès', 'NB décès', 'nb_deces', '1', 'SUM', '', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de décès', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBENTDIR', 'OCCUPATION', 'NB Entrées directes Hospitalisés', 'Entrées directes (Hospitalisés)', 'Entrées directes (Hospitalisés)', 'nb_entrees_directes', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''entrées directes des séjours hospitalisés', '-TS1', 'NBENT', '', '', '', '', '', '', ''), +(1, 'CTI_NBENTTE', 'OCCUPATION', 'NB Entrées totales directes et mutations Hospitalisés', 'Entrées totales directes et mutations (Hospitalisés)', 'Entrées totales directes et mutations (Hospitalisés)', 'nb_entrees_directes + nb_entrees_mutation_etage', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''entrées directes et de mutations d''étage des séjours hospitalisés', '-TS1', 'NBENT', '', '', '', '', '', '', ''), +(1, 'CTI_NBENTTOTS', 'OCCUPATION', 'NB Entrées directes et mutations service Hospitalisés', 'Entrées directes et mutations (Hospitalisés)', 'Entrées directes et mutations (Hospitalisés)', 'nb_entrees_directes + nb_entrees_mutation_service', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''entrées directes et de mutations de services des séjours hospitalisés', '-TS1', 'NBENT', '', '', '', '', '', '', ''), +(1, 'CTI_NBENT_SA', 'OCCUPATION', 'NB Entrées directes Hospitalisés + Ambulatoires', 'Entrées directes + Ambulatoires', 'Entrées directes + Ambulatoires', 'nb_ambulatoires + nb_entrees_directes', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''entrées directes des séjours hospitalisés et ambulatoires', '-TS1', '-TS2', 'NBENT', '', '', '', '', '', ''), +(1, 'CTI_NBENT_SAE', 'OCCUPATION', 'NB Entrées directes Hospitalisés + Ambulatoires + Externes', 'Entrées directes + Ambulatoires + Externes', 'Entrées directes + Ambulatoires + Externes', 'nb_ambulatoires + nb_externes + nb_entrees_directes', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''entrées directes des séjours hospitalisés, ambulatoires et externes', '-TS1', '-TS2', '-TS3', 'NBENT', '', '', '', '', ''), +(1, 'CTI_NBENT_SAES', 'OCCUPATION', 'NB Entrées directes Hospitalisés + Ambulatoires + Externes + Séances', 'Entrées directes + Ambulatoires + Externes + Séances', 'Entrées directes + Ambulatoires + Externes + Séances', 'nb_ambulatoires + nb_externes + nb_entrees_directes + nb_seances', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''entrées directes des séjours hospitalisés, ambulatoires, externes et séances', '-TS1', '-TS2', '-TS3', '-TS5', 'NBENT', '', '', '', ''), +(1, 'CTI_NBEXT', 'OCCUPATION', 'NB externes (occupation)', 'Nombres d''externes', 'Nombres d''externes', 'nb_externes', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours en externes', '-TS3', 'NBENT', '', '', '', '', '', '', ''), +(1, 'CTI_NBFACREF', 'SEJOURS', 'NB sorties directes et intermédiaires', 'Nombre de sorties directes et intermédiaires', 'Nombre de sorties directes et interemédiaires', 'no_facture_reference', '1', 'COUNT', '', 0, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de sorties directes ou intermédiaires', 'NBSOR', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBFACREF_F', 'SEJOURS', 'NB sorties directes et intermédiaires facturées', 'Nombre de sorties directes et intermédiaires facturées', 'Nombre de sorties directes et intermédiaires facturées', 'CASE WHEN code_facture = ''1'' THEN no_facture_reference ELSE NULL END', '1', 'COUNT', '', 0, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de sorties directes ou intermédiaires facturées', 'NBSOR', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBFACREF_NF', 'SEJOURS', 'NB sorties directes et intermédiaires non facturées', 'Nombre de sorties directes et intermédiaires non facturées', 'Nombre de sorties directes et intermédiaires non facturées', 'CASE WHEN code_facture <> ''1'' THEN no_facture_reference ELSE NULL END', '1', 'COUNT', '', 0, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de sorties directes ou intermédiaires non facturées', 'NBSOR', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBJAS_FAC', 'OCCUPATION', 'NB Jours facturées (Hospitalisation)', 'Nombres de journées facturées (Hospitalisés) + Ambulatoires + Séances', 'Nombres de journées facturées (Hospitalisés) + Ambulatoires + Externes + Séances JS non inclus', 'CASE WHEN est_facture = ''1'' THEN nb_jours_f + nb_ambulatoires + nb_seances ELSE 0 END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées facturées des séjours hospitalisés, ambulatoires, externes et séances', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBJAS_JFSN', 'OCCUPATION', 'NB Jours (Hospitalisés sortis) + Ambulatoires + Seances', 'Nombres de journées (Hospitalisés sortis) + Ambulatoires + Seances', 'Nb J Sor', 'CASE WHEN date_sortie <= ''[TOPERIODE]'' THEN nb_jours_f + nb_ambulatoires + nb_seances ELSE NULL END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de jours sortis des séjours hospitalisés, ambulatoires et séances', '-TS1', '-TS2', '-TS5', 'NBJOU', '', '', '', '', ''), +(1, 'CTI_NBJAS_NFAC', 'OCCUPATION', 'NB Jours non facturées (Hospitalisation)', 'Nombres de journées non facturées (Hospitalisés) + Ambulatoires + Séances', 'Nombres de journées non facturées (Hospitalisés) + Ambulatoires + Externes + Séances JS non inclus', 'CASE WHEN est_facture = ''0'' THEN nb_jours_f + nb_ambulatoires + nb_seances ELSE 0 END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées non facturées des séjours hospitalisés, ambulatoires, externes et séances', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBJCPSN', 'OCCUPATION', 'NB Jours CPC Hospitalisés', 'Nombres de journées CP (Hospitalisés)', 'Nombres de journées CP (Hospitalisés)', 'nb_jours_cp_f', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées en chambre particulière des séjours hospitalisés', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBJFSN', 'OCCUPATION', 'NB Jours facturées (Hospitalisés sortis)', 'Nombres de journées facturées (Hospitalisés)', 'Nombres de journées facturées (Hospitalisés) JS non inclus', 'CASE WHEN est_facture = ''1'' AND date_sortie <= ''[TOPERIODE]'' THEN nb_jours_f ELSE 0 END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées facturées des séjours hospitalisés (JS non inclus)', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBJS', 'OCCUPATION', 'NB Jours Hospitalisés JS inclus', 'Nombres de journées (JS inclus) (Hospitalisés)', 'Nombres de journées (JS inclus) (Hospitalisés)', 'nb_jours_js_inclus', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées facturées des séjours hospitalisés (JS inclus)', '-TS1', 'NBJOU', '', '', '', '', '', '', ''), +(1, 'CTI_NBJSAM', 'OCCUPATION', 'NB Jours Hospitalisés + Ambulatoires JS Inclus', 'Nombre Journées + Ambulatoire (JS Inclus)', 'Nombre Journées + Ambulatoire (JS Inclus)', 'nb_jours_js_inclus + nb_ambulatoires', '1', 'SUM', '', 0, '1', ' ', ' ', ' ', ' ', '1', 'CTI_NBJSN', 'CTI_NBAMB', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées des séjours hospitalisés et ambulatoires (JS non inclus)', '-TS1', '-TS2', 'NBJOU', '', '', '', '', '', ''), +(1, 'CTI_NBJSN', 'OCCUPATION', 'NB Jours Hospitalisés', 'Nombres de journées (Hospitalisés)', 'Nombres de journées (Hospitalisés) JS non inclus', 'nb_jours_f', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées des séjours hospitalisés (JS non inclus)', '-TS1', 'NBJOU', '', '', '', '', '', '', ''), +(1, 'CTI_NBJSNS', 'OCCUPATION', 'NB Jours (Hospitalisés sortis)', 'Nombres de journées (Hospitalisés sortis)', 'Nb J Sor', 'CASE WHEN date_sortie <= ''[TOPERIODE]'' THEN nb_jours_f ELSE NULL END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées des séjours hospitalisés', '-TS1', 'NBJOU', '', '', '', '', '', '', ''), +(1, 'CTI_NBJSSNSSR', 'OCCUPATION', 'SSR - Nombres de Jours facturées Hospitalisés', 'Nombres de journées facturées (Hospitalisés)', 'Nombres de journées facturées (Hospitalisés) JS non inclus', 'CASE WHEN date_sortie <= ''[TOPERIODE]'' THEN 1 ELSE 0 END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées facturées des séjours hospitalisés (JS non inclus)', '-TS1', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBJ_FAC', 'OCCUPATION', 'NB Jours facturées (Hospitalisés)', 'Nombres de journées facturées (Hospitalisés)', 'Nombres de journées facturées (Hospitalisés) JS non inclus', 'CASE WHEN est_facture = ''1'' THEN nb_jours_f ELSE 0 END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées facturées des séjours hospitalisés (JS non inclus)', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBJ_NFAC', 'OCCUPATION', 'NB Jours non facturées (Hospitalisés)', 'Nombres de journées non facturées (Hospitalisés)', 'Nombres de journées non facturées (Hospitalisés)', 'CASE WHEN est_facture = ''0'' THEN nb_jours_f ELSE 0 END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées non facturées des séjours hospitalisés', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBLITS', 'PLACES', 'NB places disponibles', 'Nombre de places disponibles', 'Places', 'CASE WHEN est_ouvert = ''1'' THEN nb_lits_ouverts ELSE NULL END', '1', 'SUM', '#', 50, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de places disponibles', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBPLACES', 'PLACES', 'NB lits et places disponibles ', 'Nombre de lits et places disponibles ', 'Nombre de lits et places disponibles ', 'CASE WHEN est_ouvert = ''1'' THEN nb_lits_ouverts ELSE NULL END', '1', 'SUM', '#', 50, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de lits et des places disponibles', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBPLACES_A', 'PLACES', 'NB lits et places disponibles [AMBU]', 'Nombre de lits et places disponibles (Ambulatoires)', 'Nombre de lits et places disponibles (Ambulatoires)', 'CASE WHEN est_ouvert = ''1'' and type_sejour_id = 2 THEN nb_lits_ouverts ELSE NULL END', '1', 'SUM', '#', 50, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de lits et de places disponibles pour les séjours Ambulatoires', '-TS1', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBPLACES_CP_H', 'PLACES', 'NB lits et places CP disponibles [HOSP]', 'Nombre de lits et places CP disponibles (Hospitalisés)', 'Nombre de lits et places CP disponibles (Hospitalisés)', 'CASE WHEN est_ouvert = ''1'' and type_sejour_id = 1 THEN nb_lits_cp_ouverts ELSE NULL END', '1', 'SUM', '#', 50, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de lits et de places en chambre particulière disponibles pour les séjours hospitalisés', '-TS1', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBPLACES_H', 'PLACES', 'NB lits et places disponibles [HOSP]', 'Nombre de lits et places disponibles (Hospitalisés)', 'Nombre de lits et places disponibles (Hospitalisés)', 'CASE WHEN est_ouvert = ''1'' and type_sejour_id = 1 THEN nb_lits_ouverts ELSE NULL END', '1', 'SUM', '#', 50, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de lits et de places disponibles pour les séjours hospitalisés', '-TS1', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBPLACES_HA', 'PLACES', 'NB lits et places disponibles (Hosp+Ambu)', 'Nombre de lits et places disponibles (Hosp+Ambu)', 'Nombre de lits et places disponibles (Hosp+Ambu)', 'CASE WHEN est_ouvert = ''1'' and type_sejour_id IN (''1'',''2'') THEN nb_lits_ouverts ELSE NULL END', '1', 'SUM', '', 0, '1', ' ', ' ', ' ', ' ', '1', 'CTI_NBPLACES_H', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de lits et de places disponibles pour les séjours hospitalisés et ambulatoires', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBPLACES_THEOJ', 'PLACES', 'Nombre jours pour calcul moyenne place théorique', 'Nombre jours pour calcul moyenne place théorique ', 'Nb jours pour calcul moyenne place théorique', 'DISTINCT NOFINESS NOPOLE date_reference', '1', 'COUNT', '#', 50, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de jours pour calcul moyenne des places théoriques', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBPLACES_THEOM', '*CALC', 'Nombres lits et places théoriques moyen', 'Nombres lits et places théoriques moyen', 'Nb places théoriques', 'base.cti_division([1],[2])', '1', '*CALC', '#', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBPLACES_THEOT', 'CTI_NBPLACES_THEOJ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de lits et des places théoriques moyen', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBPLACES_THEOT', 'PLACES', 'Nombre lits et places théoriques total', 'Nombre de lits et places théoriques total', 'Nb places théoriques total', 'nb_lits_theoriques', '1', 'SUM', '#', 50, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de lits et des places théoriques (total des journées)', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBPRESHCOMP', 'OCCUPATION', 'SSR - Nombre de présents (Date du Jour / Hospitalisation complète)', 'SSR Nombres de présents (Date du Jour / Hospitalisation complète)', 'SSR Nombres de présents (Date du Jour / H COMP)', 'DISTINCT(CASE WHEN (code_sorti= 0 AND code_prevu = 0 AND mode_traitement_id = ''3'' ) THEN no_sejour ELSE NULL END)', '1', 'COUNT', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de patients encore présents en Hospitalisation Complète', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBPRESHDJ', 'OCCUPATION', 'SSR - Nombre de présents (Date du Jour / Hospitalisation de jour)', 'SSR Nombres de présents (Date du Jour / Hospitalisation de jour)', 'SSR Nombres de présents (Date du Jour / HDJ)', 'DISTINCT(CASE WHEN (code_sorti= 0 AND code_prevu = 0 AND mode_traitement_id = ''4'' ) THEN no_sejour ELSE NULL END)', '1', 'COUNT', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de patients encore présents en Hospitalisation de Jour', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBSCE', 'OCCUPATION', 'NB séances', 'Nombres de séances', 'Nombres de séances', 'nb_seances', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séances', '-TS5', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBSCE_CHM', 'OCCUPATION', 'NB séances Chimio', 'Nombres de séances Chimio', 'Nombres de séances Chimio', 'nb_seances_chimio', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séances Chimio', '-TS5', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBSCE_DIA', 'OCCUPATION', 'NB séances Dialyse', 'Nombres de séances Dialyse', 'Nombres de séances Dialyse', 'nb_seances_dialyse', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séances Dialyse', '-TS5', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBSCE_DIV', 'OCCUPATION', 'NB séances Autres', 'Nombres de séances Autres', 'Nombres de séances Autres', 'nb_seances_autre', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séances Autres', '-TS5', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBSEJCP', 'OCCUPATION', 'SSR - Nombres de séjours - Hospitalisation complète', 'Nombres de séjours - Hospitalisation complète', 'Nombre de séjours - Hospitalisation complète', 'DISTINCT CASE WHEN mode_traitement_id = ''3'' THEN no_sejour ELSE NULL END', '1', 'COUNT', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours en Hospitalisation Complète', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBSEJFEM', 'OCCUPATION', 'NB séjours de femmes', 'Nombre de séjours de femmes', 'Nb sej fem', 'DISTINCT CASE WHEN code_sexe = ''2'' THEN no_sejour ELSE null END', '1', 'COUNT', '#', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours de patients féminins', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBSEJHDJ', 'OCCUPATION', 'SSR - Nombres de séjours - Hospitalisation de jour', 'Nombres de séjours - Hospitalisation de jour', 'Nombre de séjours - Hospitalisation de jour', 'DISTINCT CASE WHEN mode_traitement_id = ''4'' THEN no_sejour ELSE NULL END', '1', 'COUNT', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours en Hospitalisation de Jour', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBSEJO', 'OCCUPATION', 'NB séjours', 'Nombres de séjours', 'Nombres de séjours', 'DISTINCT no_sejour', '1', 'COUNT', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBSEJ_EXT', 'SEJOURS', 'NB Séjours [EXT]', 'Nombre séjours (Externes)', 'Nombre séjours (Externes)', 'DISTINCT CASE WHEN type_sejour = ''3'' THEN no_sejour ELSE NULL END', '1', 'SUM', '#', 60, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours externes', '-TS3', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_NBSEJ_HC', 'SEJOURS', 'NB Séjours hospitalisation complète', 'Nombre séjours hospitalisation complète', 'Nombre séjours (hc)', 'DISTINCT CASE WHEN type_sejour = ''1'' THEN no_sejour', '1', 'COUNT', '#', 60, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours en hospitalisation complète', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBSEJ_HJ', 'SEJOURS', 'NB Séjours (hospitalisation de jour)', 'Nombre séjours (hospitalisation de jour, type de séjours = Ambulatoire/Séances) ', 'Nombre séjours (hj)', 'DISTINCT CASE WHEN type_sejour = ''2'' OR type_sejour = ''5'' THEN no_sejour', '1', 'SUM', '#', 60, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours en Hospitalisation de Jour', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBSEJ_SOINS_CPT', 'FACTURATION_CLINIQUE', 'NB Séjours CA SOINS comptabilisé', 'Nombre de séjours comptabilisés CA SOINS', 'Nombre de séjours comptabilisés CA SOINS', 'DISTINCT CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] THEN no_sejour ELSE NULL END', '1', 'COUNT', '#E', 80, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours comptabilisé dans le Chiffre d''Affaires des soins', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBSEJ_SOR', 'SEJOURS', 'NB séjours', 'Nombre de séjours', 'Nombre de séjours', 'DISTINCT no_sejour', '1', 'COUNT', '#', 60, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_NBSORDIR', 'OCCUPATION', 'NB Sorties directes Hospitalisés', 'Sorties directes (Hospitalisés)', 'Sorties directes (Hospitalisés)', 'nb_sorties_directes', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de sorties directes des séjours hospitalisés', '-TS1', 'NBSOR', '', '', '', '', '', '', ''), +(1, 'CTI_NBSOR_SA', 'OCCUPATION', 'NB Sorties directes Hospitalisés + Ambulatoires', 'Sorties directes + Ambulatoires', 'Sorties directes + Ambulatoires', 'nb_ambulatoires + nb_sorties_directes', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de sorties directes des séjours hospitalisés et ambulatoires', '-TS1', '-TS2', 'NBSOR', '', '', '', '', '', ''), +(1, 'CTI_NBSOR_SAE', 'OCCUPATION', 'NB Sorties directes Hospitalisés + Ambulatoires + Externes', 'Sorties directes + Ambulatoires + Externes', 'Sorties directes + Ambulatoires + Externes', 'nb_ambulatoires + nb_externes + nb_sorties_directes', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de sorties directes des séjours hospitalisés, ambulatoires et externes', '-TS1', '-TS2', '-TS3', 'NBSOR', '', '', '', '', ''), +(1, 'CTI_NBSOR_SAES', 'OCCUPATION', 'NB Sorties directes Hospitalisés + Ambulatoires + Externes + Séances', 'Sorties directes + Ambulatoires + Externes + Séances', 'Sorties directes + Ambulatoires + Externes + Séances', 'nb_ambulatoires + nb_externes + nb_sorties_directes + nb_seances', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de sorties directes des séjours hospitalisés, ambulatoires, externes et séances', '-TS1', '-TS2', '-TS3', '-TS5', 'NBSOR', '', '', '', ''), +(1, 'CTI_NBURG', 'OCCUPATION', 'NB urgences', 'Nombres d''urgences', 'Nombres d''urgences', 'nb_urgences', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''urgences', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_ANNULES', 'ANNULATIONS', 'Nombre de séjours annulés ', 'Nombre séjours annulés', '', 'DISTINCT CASE WHEN etat_sejour_code = ''A'' THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_BEBE', 'OCCUPATION', 'NB Bébés', 'Nombre de Bébés', 'Nombre de Bébés', 'nb_bebes', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de bébés', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_FAC', 'SEJOURS', 'NB sorties Facturées', 'Nombre de sorties Facturées', 'Nombre de sorties Facturées', 'DISTINCT CASE WHEN code_sorti = ''1'' AND date_facture != ''2099-12-31'' THEN no_sejour ELSE NULL END', '1', 'COUNT', '#', 60, '2', '5', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours sortis facturés', 'NBSOR', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_FACTURES', 'SEJOURS', 'Nombre de factures', 'Factures', 'Factures', 'nb_factures', '1', 'SUM', '#', 60, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NOMBRE', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_GP_NFAC', 'SEJOURS', 'À facturer', 'À facturer', 'À facturer', 'nb_non_calcules_groupes', '1', 'SUM', '#', 60, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_GROU', 'SEJOURS', 'NB sorties Groupées non facturées', 'Nombre de sorties Groupées non facturées', 'Nombre de sorties Groupées non facturées', 'CASE WHEN date_facture = ''2099-12-31'' THEN nb_groupe ELSE NULL END', '1', 'SUM', '#', 60, '2', '5', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours groupés sortis non facturés', 'NBSOR', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_GROUT', 'SEJOURS', 'NB sorties groupées', 'Nombre de sorties groupées', 'Sorties groupées', 'nb_groupe', '1', 'SUM', '#', 0, '2', '5', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours groupés sortis', 'NBSOR', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_NFAC', 'SEJOURS', 'NB sorties non Facturées', 'Nombre de sorties non Facturées', 'Nombre de sorties non Facturées', 'DISTINCT CASE WHEN montant_facture = 0 THEN no_sejour ELSE NULL END', '1', 'COUNT', '#', 60, '2', '4', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours sortis non facturés', 'NBSOR', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_NGROU', 'SEJOURS', 'NB sorties Non Groupées', 'Nombre de sorties Non Groupées', 'Nombre de sorties Non Groupées', 'nb_non_groupe', '1', 'SUM', '#', 60, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours sortis non groupés', 'NBSOR', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_NGR_SOR', 'SEJOURS', 'Reste à grouper', 'Reste à grouper', 'Reste à grouper', 'nb_non_groupe', '1', 'SUM', '#', 60, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_NONFAC', 'SEJOURS', 'Reste à facturer', 'Reste à facturer', 'Reste à facturer', 'nb_non_calcules', '1', 'SUM', '#', 60, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NOMBRE', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_NON_EXP', 'SEJOURS', 'Reste à expédier', 'Reste à expédier', 'Reste à expédier', 'nb_non_expedie_c', '1', 'SUM', '#', 60, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NOMBRE', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_NON_SOLD', 'SEJOURS', 'Reste à solder', 'Reste à solder', 'Reste à solder', 'nb_non_solde_c', '1', 'SUM', '#', 60, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_PREADM', 'OCCUPATION', 'Nombre de séjours avec préadmission validée', 'Nombre séjours avec préadmission', '', 'nb_preadmission_validee', '1', 'SUM', '', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_PREADM_J1', 'OCCUPATION', 'Nombre de séjours avec préadmission validée à   J-1', 'Nombre séjours avec préadmission J-1', '', 'nb_preadmission_validee_j1', '1', 'SUM', '', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_PREADM_J2', 'OCCUPATION', 'Nombre de séjours avec préadmission validée à    J-2', 'Nombre séjours avec préadmission J-2', '', 'nb_preadmission_validee_j2', '1', 'SUM', '', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_PRESENT', 'OCCUPATION', 'NB présents (Date du Jour)', 'Nombres de présents (Date du Jour)', 'Nombres de présents (Date du Jour)', 'DISTINCT(CASE WHEN (code_sorti= 0 AND code_prevu = 0) THEN no_sejour ELSE NULL END)', '1', 'COUNT', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de patients présents dans l''établissement', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_RECUSES', 'ANNULATIONS', 'Nombre de séjours récusés', 'Nombre séjours récusés', '', 'DISTINCT CASE WHEN etat_sejour_code = ''R'' THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_SAB', '*CALC', 'NB Sorties directes + Ambulatoires + bébés', 'Sorties directes + Ambulatoires + bébés', 'Sorties Ambu Bb', '[1] + [2] + [3]', '1', '*CALC', '#', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBSORDIR', 'CTI_NBAMB', 'CTI_NB_BEBE', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de sorties directes, ambulatoires et de bébés', '-TS1', '-TS2', 'NBENT', 'NBSOR', '', '', '', '', ''), +(1, 'CTI_NB_SABS', '*CALC', 'NB Sorties directes + Ambulatoires + bébés + séances', 'Sorties directes + Ambulatoires + bébés+ séances', 'Sorties Ambu Bb Sc', '[1] + [2] + [3] + [4]', '1', '*CALC', '#', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBSORDIR', 'CTI_NBAMB', 'CTI_NB_BEBE', 'CTI_NBSCE', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de sorties directes, ambulatoires, de séances et de bébés', '-TS1', '-TS2', '-TS5', 'NBENT', 'NBSOR', '', '', '', ''), +(1, 'CTI_NB_SAE', 'OCCUPATION', 'NB Sorties directes + Ambulatoires + Externes', 'Sorties directes + Ambulatoires + Externes', 'Sorties directes + Ambulatoires + Externes', 'nb_ambulatoires + nb_externes + nb_sorties_directes', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de sorties directes, ambulatoires et externes', '-TS2', '-TS3', 'NBSOR', '', '', '', '', '', ''), +(1, 'CTI_NB_SEJ', 'SEJOURS', 'NB séjours hospit et ambu', 'Nombre de séjours hospit et ambu', 'Nb sej Hosp Amb', 'DISTINCT CASE WHEN type_sejour = ''1'' OR type_sejour = ''2'' THEN no_sejour ELSE null END', '1', 'COUNT', '#', 0, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours hospitalisés et ambulatoires', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_SEJ_FAEN', 'FACTURATION_CLINIQUE', 'NB Séjours Facturés + Valorisés', 'Séjours Facturés + Valorisés', 'Séjours Facturés + Valorisés', 'DISTINCT no_sejour ', '1', 'COUNT', '#', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours facturés et valorisés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_SEJ_VAL', 'FACTURATION_CLINIQUE', 'NB Séjours Valorisés', 'Séjours Valorisés', 'Séjours Valorisés', 'DISTINCT CASE WHEN est_ligne_facturee = ''0'' THEN no_sejour ELSE NULL END', '1', 'COUNT', '#', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours valorisés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_SOLDER', 'SEJOURS', 'NB Séjours Soldés', 'NB_SOLDE', 'NB_SOLDE', 'CASE WHEN nb_non_solde_0_c <> 0 or nb_non_solde_1_c <> 0 or nb_non_solde_2_c <> 0 THEN 0 ELSE 1 END', '1', 'SUM', '0,0', 40, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NOMBRE', '', '', '', '', '', '', '', ''), +(1, 'CTI_NB_SORTOT', 'OCCUPATION', 'NB Sorties totales directes et mutations Hospitalisés', 'Sorties totales directes et mutations (Hospitalisés)', 'Sorties totales directes et mutations (Hospitalisés)', 'nb_sorties_directes + nb_sorties_mutation_etage', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de sorties directes et de mutations des séjours hospitalisés', '-TS1', 'NBSOR', '', '', '', '', '', '', ''), +(1, 'CTI_NB_SUSPENDUS', 'ANNULATIONS', 'Nombre de séjours suspendus', 'Nombre séjours suspendus', '', 'DISTINCT CASE WHEN etat_sejour_code = ''C'' THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN1_JOU_ENC', 'FACTURATION_CLINIQUE', 'NB Jours NN1 Valorisées', 'Nombre journées NN1 Valorisées', 'Nombre journées NN1 Valorisées', 'CASE WHEN prestation_code IN (''NN1'') THEN nb_rubrique_encours ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées NN1 valorisées', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN1_JOU_FAC', 'FACTURATION_CLINIQUE', 'NB Jours NN1 facturées', 'Nombre journées NN1 facturées', 'Nombre journées NN1 facturées', 'CASE WHEN prestation_code IN (''NN1'') THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées NN1 facturées', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN1_JOU_TOT', 'FACTURATION_CLINIQUE', 'NB Jours NN1 Facturées + Valorisées', 'Total journées NN1 Facturées + Valorisées', 'Total journées NN1 Facturées + Valorisées', 'CASE WHEN prestation_code IN (''NN1'') THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées NN1 facturées et valorisées', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN1_MT_ENC', 'FACTURATION_CLINIQUE', 'CA NN1 Valorisé', 'Montant NN1 Valorisé', 'Montant NN1 Valorisé', 'CASE WHEN prestation_code IN (''NN1'') THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires NN1 Valorisé', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN1_MT_FAC', 'FACTURATION_CLINIQUE', 'CA NN1 Facturé', 'Montant NN1 facturé', 'Montant NN1 facturé', 'CASE WHEN prestation_code IN (''NN1'') THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires NN1 Facturé', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN1_MT_TOT', 'FACTURATION_CLINIQUE', 'CA NN1 Facturé + Valorisé', 'Montant NN1 facturé + Valorisé', 'Montant NN1 facturé + Valorisé', 'CASE WHEN prestation_code IN(''NN1'') THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires NN1 Facturé + Valorisé', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN1_NB_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA NN1 Valorisés', 'Nombre séjours NN1 Valorisés', 'Nombre séjours NN1 Valorisés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and prestation_code IN (''NN1'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours NN1 Valorisés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN1_NB_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA NN1 facturés', 'Nombre séjours NN1 facturés', 'Nombre séjours NN1 facturés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and prestation_code IN (''NN1'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours NN1 Facturés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN1_NB_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA NN1 Facturés + Valorisés', 'Nombre séjours NN1 Facturés + Valorisés', 'Nombre séjours NN1 Facturés + Valorisés', 'DISTINCT CASE WHEN ( prestation_code IN (''NN1'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours NN1 Facturés + Valorisés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN2_JOU_ENC', 'FACTURATION_CLINIQUE', 'NB Jours NN2 Valorisées', 'Nombre journées NN2 Valorisées', 'Nombre journées NN2 Valorisées', 'CASE WHEN prestation_code IN (''NN2'') THEN nb_rubrique_encours ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées NN2 valorisées', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN2_JOU_FAC', 'FACTURATION_CLINIQUE', 'NB Jours NN2 facturées', 'Nombre journées NN2 facturées', 'Nombre journées NN2 facturées', 'CASE WHEN prestation_code IN (''NN2'') THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées NN2 facturées', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN2_JOU_TOT', 'FACTURATION_CLINIQUE', 'NB Jours NN2 Facturées + Valorisées', 'Total journées NN2 Facturées + Valorisées', 'Total journées NN2 Facturées + Valorisées', 'CASE WHEN prestation_code IN (''NN2'') THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées NN2 facturées et valorisées', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN2_MT_ENC', 'FACTURATION_CLINIQUE', 'CA NN2 Valorisé', 'Montant NN2 Valorisé', 'Montant NN2 Valorisé', 'CASE WHEN prestation_code IN (''NN2'') THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires NN2 Valorisé', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN2_MT_FAC', 'FACTURATION_CLINIQUE', 'CA NN2 Facturé', 'Montant NN2 facturé', 'Montant NN2 facturé', 'CASE WHEN prestation_code IN (''NN2'') THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires NN2 Facturé', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN2_MT_TOT', 'FACTURATION_CLINIQUE', 'CA NN2 Facturé + Valorisé', 'Montant NN2 facturé + Valorisé', 'Montant NN2 facturé + Valorisé', 'CASE WHEN prestation_code IN(''NN2'') THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires NN2 Facturé + Valorisé', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN2_NB_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA NN2 Valorisés', 'Nombre séjours NN2 Valorisés', 'Nombre séjours NN2 Valorisés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and prestation_code IN (''NN2'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours NN2 Valorisés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN2_NB_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA NN2 facturés', 'Nombre séjours NN2 facturés', 'Nombre séjours NN2 facturés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and prestation_code IN (''NN2'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours NN2 Facturés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN2_NB_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA NN2 Facturés + Valorisés', 'Nombre séjours NN2 Facturés + Valorisés', 'Nombre séjours NN2 Facturés + Valorisés', 'DISTINCT CASE WHEN ( prestation_code IN (''NN2'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours NN2 Facturés + Valorisés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN3_JOU_ENC', 'FACTURATION_CLINIQUE', 'NB Jours NN3 Valorisées', 'Nombre journées NN3 Valorisées', 'Nombre journées NN3 Valorisées', 'CASE WHEN prestation_code IN (''NN3'') THEN nb_rubrique_encours ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées NN3 valorisées', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN3_JOU_FAC', 'FACTURATION_CLINIQUE', 'NB Jours NN3 facturées', 'Nombre journées NN3 facturées', 'Nombre journées NN3 facturées', 'CASE WHEN prestation_code IN (''NN3'') THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées NN3 facturées', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN3_JOU_TOT', 'FACTURATION_CLINIQUE', 'NB Jours NN3 Facturées + Valorisées', 'Total journées NN3 Facturées + Valorisées', 'Total journées NN3 Facturées + Valorisées', 'CASE WHEN prestation_code IN (''NN3'') THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées NN3 facturées et valorisées', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN3_MT_ENC', 'FACTURATION_CLINIQUE', 'CA NN3 Valorisé', 'Montant NN3 Valorisé', 'Montant NN3 Valorisé', 'CASE WHEN prestation_code IN (''NN3'') THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires NN3 Valorisé', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN3_MT_FAC', 'FACTURATION_CLINIQUE', 'CA NN3 Facturé', 'Montant NN3 facturé', 'Montant NN3 facturé', 'CASE WHEN prestation_code IN (''NN3'') THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires NN3 Facturé', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN3_MT_TOT', 'FACTURATION_CLINIQUE', 'CA NN3 Facturé + Valorisé', 'Montant NN3 facturé + Valorisé', 'Montant NN3 facturé + Valorisé', 'CASE WHEN prestation_code IN(''NN3'') THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires NN3 Facturé + Valorisé', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN3_NB_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA NN3 Valorisés', 'Nombre séjours NN3 Valorisés', 'Nombre séjours NN3 Valorisés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and prestation_code IN (''NN3'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours NN3 Valorisés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN3_NB_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA NN3 facturés', 'Nombre séjours NN3 facturés', 'Nombre séjours NN3 facturés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and prestation_code IN (''NN3'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours NN3 Facturés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NN3_NB_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA NN3 Facturés + Valorisés', 'Nombre séjours NN3 Facturés + Valorisés', 'Nombre séjours NN3 Facturés + Valorisés', 'DISTINCT CASE WHEN ( prestation_code IN (''NN3'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours NN3 Facturés + Valorisés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NSCPT_C', 'FACTURATION_CLINIQUE', 'NB Séjours Comptabilisés', 'Séjours comptabilisés', 'Séjours comptabilisés', 'DISTINCT CASE WHEN montant_comptabilise <> 0 THEN no_sejour ELSE NULL END', '1', 'COUNT', '#', 0, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours comptabilisés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NSFAC1_CS', 'FACTURATION_CLINIQUE', 'NB Séjours facturés [HOSP]', 'Nombre séjours Total facturés (Hospitalisés)', 'Nombre séjours Total facturés (Hospitalisés)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and type_sejour = ''1'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours hospitalisés (1 nuit minimum) facturés', '-TS1', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_NSFAC2_CS', 'FACTURATION_CLINIQUE', 'NB Séjours facturés [AMBU]', 'Nombre séjours Total facturés (Ambulatoire)', 'Nombre séjours Total facturés (Ambulatoire)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and type_sejour = ''2'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours ambulatoires (0 nuits) facturés', '-TS2', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_NSFAC3_CS', 'FACTURATION_CLINIQUE', 'NB Séjours facturés [EXT]', 'Nombre séjours Total facturés (Externe)', 'Nombre séjours Total facturés (Externe)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and type_sejour = ''3'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours externes facturés', '-TS3', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_NSFAC5_CS', 'FACTURATION_CLINIQUE', 'NB Séjours facturés [SEANCE]', 'Nombre séjours Total facturés (Séances)', 'Nombre séjours Total facturés (Séances)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and type_sejour = ''5'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séances facturées', '-TS5', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_NSFACT_CS', 'FACTURATION_CLINIQUE', 'NB séjours facturés', 'Nombre séjours avec facturation', 'Nombre séjours avec facturation', 'DISTINCT CASE WHEN est_ligne_facturee = ''1'' THEN no_sejour ELSE NULL END', '1', 'COUNT', '#', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours comportant une facturation', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NSFAC_C', 'FACTURATION_CLINIQUE', 'NB Séjours Facturés', 'Séjours facturés', 'Séjours facturés', 'DISTINCT CASE WHEN est_ligne_facturee = ''1'' THEN no_sejour ELSE NULL END', '1', 'COUNT', '#', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours facturés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_NSFAC_CS', 'FACTURATION_CLINIQUE', 'NB séjours facturés', 'Nombre séjours Total facturés', 'Nombre séjours Total facturés', 'DISTINCT CASE WHEN est_ligne_facturee = ''1'' THEN no_sejour ELSE NULL END', '1', 'COUNT', '#', 0, '1', '2', '3', '4', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours facturés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_PORTFOLIO_NEW', '*CALC', 'Portfolio', '', '', '', '1', '*CALC', '#,0', 0, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_PROTH_MT_CPT', 'FACTURATION_CLINIQUE', 'CA PROTHESE Comptabilisé', 'Montant prothèses Facturé', 'Montant prothèses Facturé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_PROTHESE_R] THEN montant_comptabilise ELSE 0 END', '1', 'SUM', '#E', 80, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires comptabilisé des prothèses', 'CACP', '', '', '', '', '', '', '', ''), +(1, 'CTI_PROTH_MT_ENC', 'FACTURATION_CLINIQUE', 'CA PROTHESE Valorisé', 'Montant prothèses Valorisé', 'Montant prothèses Valorisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_PROTHESE_R] THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des prothèses', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_PROTH_MT_FAC', 'FACTURATION_CLINIQUE', 'CA PROTHESE Facturé', 'Montant prothèses Facturé', 'Montant prothèses Facturé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_PROTHESE_R] THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des prothèses', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_PROTH_MT_TOT', 'FACTURATION_CLINIQUE', 'CA PROTHESE Facturé + Valorisé', 'Montant prothèses Facturé + Valorisé', 'Montant prothèses Fact + Val', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_PROTHESE_R] THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des prothèses', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_PROTH_RUB_FAC', 'FACTURATION_CLINIQUE', 'NB Rubriques PROTHESE', 'Nombre rubriques prothèses', 'Nombre rubriques prothèses', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_PROTHESE_R] THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '#', 60, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de rubriques de prothèses', 'NBRUB', '', '', '', '', '', '', '', ''), +(1, 'CTI_PSEJFEM', '*CALC', 'Pourcentage de femmes', 'Pourcentage de femmes', 'Pourcentage de femmes', 'base.cti_division([1], [2]) * 100.0', '1', '*CALC', '#,0%', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBSEJFEM', 'CTI_NBSEJO', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Part des femmes dans la patientèle', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_RAPPORTCALC', '*RAPPORTCALC', 'Calcul d''indicateurs dans le rapport', '', '', '', '1', 'sum', '#', 0, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Pour calculer directement dans la définition du rapport', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_RAT_AMB1_CAT', '*CALC', 'Ratio CA Hospitalisés / CA Total Clinique', 'Ratio CA Hospitalisés / CA Total Clinique', 'Ratio CA Hospitalisés / CA Total Clinique', '(base.cti_division([1] , [2]) * 100)', '1', '*CALC', '#,00%', 0, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Part du Chiffre d''Affaires des séjours hospitalisés (1 nuit minimum) facturés dans le Chiffre d''Affaires total des séjours facturés', '-TS1', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_RAT_AMB2_CAT', '*CALC', 'Ratio CA Ambulatoire / CA Total Clinique', 'Ratio CA Ambulatoire / CA Total Clinique', 'Ratio CA Ambulatoire / CA Total Clinique', '(base.cti_division([1] , [2]) * 100)', '1', '*CALC', '#,00%', 0, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Part du Chiffre d''Affaires des séjours ambulatoires (0 nuits) facturés dans le Chiffre d''Affaires total des séjours facturés', '-TS2', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_RAT_AMB5_CAT', '*CALC', 'Ratio CA Séances / CA Total Clinique', 'Ratio CA Séances / CA Total Clinique', 'Ratio CA Séances / CA Total Clinique', '(base.cti_division([1] , [2]) * 100)', '1', '*CALC', '#,00%', 0, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Part du Chiffre d''Affaires des séances facturées dans le Chiffre d''Affaires total des séjours facturés', '-TS5', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_RAT_AMB_END', '*CALC', 'Ratio nb Ambulatoires / nb sorties Hospitalisés + Ambulatoire', 'Ratio nb Ambulatoires / nb sorties Hospitalisés + Ambulatoire', 'Ratio nb Ambulatoires / nb sorties Hospitalisés + Ambulatoire', '(base.cti_division([1] , [2]) * 100)', '1', '*CALC', '#,00%', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBAMB', 'CTI_NBSOR_SA', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Part du nombre de séjours ambulatoires (0 nuits) sur le nombre total de sorties directes des séjours hospitalisés et ambulatoires', '-TS1', '-TS2', 'NBENT', 'NBSOR', '', '', '', '', ''), +(1, 'CTI_RAT_CAH_CAL', '*CALC', 'Ratio CA Honoraire / Clinique', 'Ratio CA Honoraire / Clinique', 'Ratio CA Hon', '(base.cti_division([1] , [2]) * 100)', '1', '*CALC', '#,00%', 0, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Part du Chiffre d''Affaires comptabilisé pour les honoraires sur la Chiffre d''Affaires comptabilisé total', 'CACP', 'CAHON', '', '', '', '', '', '', ''), +(1, 'CTI_REA_JOU_ENC', 'FACTURATION_CLINIQUE', 'NB Jours REA Valorisées', 'Nombre journées REA Valorisées', 'Nombre journées REA Valorisées', 'CASE WHEN prestation_code IN (''REA'') THEN nb_rubrique_encours ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées valorisées en REA', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_REA_JOU_FAC', 'FACTURATION_CLINIQUE', 'NB Jours REA facturées', 'Nombre journées REA facturées', 'Nombre journées REA facturées', 'CASE WHEN prestation_code IN (''REA'') THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées facturées en REA', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_REA_JOU_TOT', 'FACTURATION_CLINIQUE', 'NB Jours REA Facturées + Valorisées', 'Total journées REA Facturées + Valorisées', 'Total journées REA Facturées + Valorisées', 'CASE WHEN prestation_code IN (''REA'') THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées facturées et valorisées en REA', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_REA_MT_ENC', 'FACTURATION_CLINIQUE', 'CA REA Valorisé', 'Montant REA Valorisé', 'Montant REA Valorisé', 'CASE WHEN prestation_code IN (''REA'') THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé en REA', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_REA_MT_FAC', 'FACTURATION_CLINIQUE', 'CA REA Facturé', 'Montant REA facturé', 'Montant REA facturé', 'CASE WHEN prestation_code IN (''REA'') THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé en REA', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_REA_MT_TOT', 'FACTURATION_CLINIQUE', 'CA REA Facturé + Valorisé', 'Montant REA facturé + Valorisé', 'Montant REA facturé + Valorisé', 'CASE WHEN prestation_code IN (''REA'') THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé en REA', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_REA_NB_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA REA Valorisés', 'Nombre séjours REA Valorisés', 'Nombre séjours REA Valorisés', 'DISTINCT CASE WHEN est_ligne_facturee = ''0'' and prestation_code IN (''REA'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires valorisé en REA', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_REA_NB_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA REA facturés', 'Nombre séjours REA facturés', 'Nombre séjours REA facturés', 'DISTINCT CASE WHEN est_ligne_facturee = ''1'' and prestation_code IN (''REA'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires facturé en REA', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_REA_NB_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA REA Facturés + Valorisés', 'Nombre séjours REA Facturés + Valorisés', 'Nombre séjours REA Facturés + Valorisés', 'DISTINCT CASE WHEN ( prestation_code IN (''REA'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires facturé et valorisé en REA', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_MT1_ENC', 'FACTURATION_CLINIQUE', 'CA SEJOUR Valorisé [HOSP]', 'Montant CA SEJOUR Valorisé (hospitalisés)', 'Montant CA SEJOUR Valorisé (hospitalisés)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''1'' THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des séjours hospitalisés (1 nuit minimum)', '-TS1', 'CAV', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_MT1_FAC', 'FACTURATION_CLINIQUE', 'CA SEJOUR Facturé [HOSP]', 'Montant CA SEJOUR factur (hospitalisés)', 'Montant CA SEJOUR factur (hospitalisés)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''1'' THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des séjours hospitalisés (1 nuit minimum)', '-TS1', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_MT1_TOT', 'FACTURATION_CLINIQUE', 'CA SEJOUR Facturé + Valorisé [HOSP]', 'Montant CA SEJOUR facturé + enc. (hospitalisés)', 'Montant CA SEJOUR facturé + enc. (hospitalisés)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''1'' THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des séjours hospitalisés (1 nuit minimum)', '-TS1', 'CAVF', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_MT2_ENC', 'FACTURATION_CLINIQUE', 'CA SEJOUR Valorisé [AMBU]', 'Montant CA Séjour Valorisé (ambulatoire)', 'Montant CA Séjour Valorisé (ambulatoire)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''2'' THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des séjours ambulatoires (0 nuits)', '-TS2', 'CAV', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_MT2_FAC', 'FACTURATION_CLINIQUE', 'CA SEJOUR Facturé [AMBU]', 'Montant CA SEJOUR facturé (ambulatoire)', 'Montant CA SEJOUR facturé (ambulatoire)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''2'' THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des séjours ambulatoires (0 nuits)', '-TS2', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_MT2_TOT', 'FACTURATION_CLINIQUE', 'CA SEJOUR Facturé + Valorisé [AMBU]', 'Montant CA SEJOUR facturé + enc. (ambulatoire)', 'Montant CA SEJOUR facturé + enc. (ambulatoire)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''2'' THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des séjours ambulatoires (0 nuits)', '-TS2', 'CAVF', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_MT3_ENC', 'FACTURATION_CLINIQUE', 'CA SEJOUR Valorisé [EXT]', 'Montant CA SEJOUR Valorisé (Externes)', 'Montant CA SEJOUR Valorisé (Externes)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''3'' THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des séjours externes', '-TS3', 'CAV', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_MT3_FAC', 'FACTURATION_CLINIQUE', 'CA SEJOUR Facturé [EXT]', 'Montant CA SEJOUR facturé (Externe)', 'Montant CA SEJOUR facturé (Externe)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''3'' THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des séjours externes', '-TS3', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_MT3_TOT', 'FACTURATION_CLINIQUE', 'CA SEJOUR Facturé + Valorisé [EXT]', 'Montant CA SEJOUR facturé + enc. (Externe)', 'Montant CA SEJOUR facturé + enc. (Externe)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''3'' THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des séjours externes', '-TS3', 'CAVF', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_MT5_ENC', 'FACTURATION_CLINIQUE', 'CA SEJOUR Valorisé [SEANCE]', 'Montant CA SEJOUR Valorisé (séances)', 'Montant CA SEJOUR Valorisé (séances)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''5'' THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des séances', '-TS5', 'CAV', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_MT5_FAC', 'FACTURATION_CLINIQUE', 'CA SEJOUR Facturé [SEANCE]', 'Montant CA SEJOUR facturé (séances)', 'Montant CA SEJOUR facturé (séances)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''5'' THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des séances', '-TS5', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_MT5_TOT', 'FACTURATION_CLINIQUE', 'CA SEJOUR Facturé + Valorisé [SEANCE]', 'Montant CA SEJOUR facturé + enc. (séances)', 'Montant CA SEJOUR facturé + enc. (séances)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''5'' THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des séances', '-TS5', 'CAVF', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_MT_ENC', 'FACTURATION_CLINIQUE', 'CA SEJOUR Valorisé', 'Montant CA SEJOUR Valorisé', 'Montant CA SEJOUR Valorisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des séjours', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_MT_FAC', 'FACTURATION_CLINIQUE', 'CA SEJOUR Facturé', 'Montant CA SEJOUR facturé', 'Montant CA SEJOUR facturé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des séjours', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_MT_TOT', 'FACTURATION_CLINIQUE', 'CA SEJOUR Facturé + Valorisé', 'Montant CA SEJOUR facturé + Valorisé', 'Montant CA SEJOUR facturé + Valorisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des séjours', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_NB1_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SEJOUR Valorisés [HOSP]', 'Nombre séjours Valorisés (hospitalisés)', 'Nombre séjours Valorisés (hospitalisés)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''1'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours hospitalisés (1 nuit minimum) valorisés', '-TS1', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_NB1_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SEJOUR facturés [HOSP]', 'Nombre séjours facturés (hospitalisés)', 'Nombre séjours facturés (hospitalisés)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''1'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours hospitalisés (1 nuit minimum) facturés', '-TS1', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_NB1_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA SEJOUR Facturés + Valorisés [HOSP]', 'Nombre SEJOURS Facturés + Valorisés (hospitalisés', 'Nombre SEJOURS Facturés + Valorisés (hospitalisés', 'DISTINCT CASE WHEN ( rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''1'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours hospitalisés (1 nuit minimum) facturés et valorisés', '-TS1', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_NB2_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SEJOUR Valorisés [AMBU]', 'Nombre séjours Valorisés (ambulatoire)', 'Nombre séjours Valorisé s (ambulatoire)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''2'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours ambulatoires (0 nuits) valorisés', '-TS2', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_NB2_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SEJOUR facturés [AMBU]', 'Nombre séjours facturés (ambulatoire)', 'Nombre séjours facturés (ambulatoire)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''2'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours ambulatoires (0 nuits) facturés', '-TS2', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_NB2_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA SEJOUR Facturés + Valorisés [AMBU]', 'Nombre séjours Facturés + Valorisés (ambulatoire)', 'Nombre séjours Facturés + Valorisés (ambulatoire)', 'DISTINCT CASE WHEN ( rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''2'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours ambulatoires (0 nuits) facturés et valorisés', '-TS2', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_NB3_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SEJOUR Valorisés [EXT]', 'Nombre séjours Valorisés (Externe)', 'Nombre séjours Valorisés (Externe)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''3'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours externes valorisés', '-TS3', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_NB3_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SEJOUR facturés [EXT]', 'Nombre séjours facturés (Externe)', 'Nombre séjours facturés (Externe)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''3'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours externes facturés', '-TS3', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_NB3_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA SEJOUR Facturés + Valorisés [EXT]', 'Nombre séjours Facturés + Valorisés (Externe)', 'Nombre séjours Facturés + Valorisés (Externe)', 'DISTINCT CASE WHEN ( rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''3'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours externes facturés et valorisés', '-TS3', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_NB5_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SEJOUR Valorisés [SEANCE]', 'Nombre séances Valorisés (séances)', 'Nombre séances Valorisés (séances)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''5'' and est_ligne_facturee = ''0'' THEN nb_rubrique_encours ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séances valorisées', '-TS5', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_NB5_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SEJOUR facturés [SEANCE]', 'Nombre séances facturées (séances)', 'Nombre séances facturées (séances)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''5'' and est_ligne_facturee = ''1'' THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séances facturées', '-TS5', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_NB5_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA SEJOUR Facturés + Valorisés [SEANCE]', 'Nombre séances Facturées + Valorisées (séances)', 'Nombre séances Facturées + Valorisées (séances)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = ''5'' THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séances facturées et valorisées', '-TS5', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_NB_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SEJOUR Valorisés', 'Nombre séjours Valorisés', 'Nombre séjours Valorisés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and rubrique_facturation_id IN [LISTE:CTI_RUBMED_R]) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours valorisés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_NB_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SEJOUR facturés', 'Nombre séjours facturés', 'Nombre séjours facturés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and rubrique_facturation_id IN [LISTE:CTI_RUBMED_R]) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours facturés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_RUBMED_NB_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA SEJOUR Facturés + Valorisés', 'Nombre séjours Facturés + Valorisés', 'Nombre séjours Facturés + Valorisés', 'DISTINCT CASE WHEN ( rubrique_facturation_id IN [LISTE:CTI_RUBMED_R]) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours facturés et valorisés', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_SEH_MT_CPT', 'FACTURATION_CLINIQUE', 'CA SE comptabilisé', 'Montant SE comptabilisé', 'Montant SE comptabilisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SE_R] THEN montant_comptabilise ELSE 0 END', '1', 'SUM', '#E', 80, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires SE comptabilisé', 'CACP', '', '', '', '', '', '', '', ''), +(1, 'CTI_SEH_MT_ENC', 'FACTURATION_CLINIQUE', 'CA SE Valorisé Clinique', 'Montant SE Valorisé Clinique', 'Montant SE Valorisé Clinique', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SE_R] THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires SE valorisé', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_SEH_MT_FAC', 'FACTURATION_CLINIQUE', 'CA SE Facturé Clinique', 'Montant SE facturés Clinique', 'Montant SE facturés Clinique', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SE_R] THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires SE facturé', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_SEH_MT_TOT', 'FACTURATION_CLINIQUE', 'CA SE Facturé + Valorisé', 'Montant SE Facturé + Valorisé', 'Montant SE Facturé + Valorisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SE_R] THEN montant_facture + montant_encours ELSE NULL END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires SE facturé et valorisé', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_SEH_NB_ENC', 'FACTURATION_CLINIQUE', 'NB Rubriques SE Valorisés', 'Nombre SE Valorisés', 'Nombre SE Valorisés', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SE_R] THEN nb_rubrique_encours ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de rubriques SE valorisées', 'NBRUB', '', '', '', '', '', '', '', ''), +(1, 'CTI_SEH_NB_FAC', 'FACTURATION_CLINIQUE', 'NB Rubriques SE facturés', 'Nombre SE facturés', 'Nombre SE facturés', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SE_R] THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de rubriques SE facturées', 'NBRUB', '', '', '', '', '', '', '', ''), +(1, 'CTI_SEH_NB_TOT', 'FACTURATION_CLINIQUE', 'NB Rubriques SE Facturés + Valorisés', 'Nombre SE Facturés + Valorisés', 'Nombre SE Facturés + Valorisés', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SE_R] THEN nb_rubrique_facture + nb_rubrique_encours ELSE NULL END', '1', 'SUM', '#', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de rubriques SE facturées et valorisées', 'NBRUB', '', '', '', '', '', '', '', ''), +(1, 'CTI_SEP', 'SEP', 'Séparateur', '', '', '', '1', 'SEP', '', 0, ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_SHO_JOU_ENC', 'FACTURATION_CLINIQUE', 'NB Jours CPC Valorisées', 'Nombre journées CP Valorisées', 'Nombre journées CP Valorisées', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SHO_R] THEN nb_rubrique_encours ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées valorisées en chambre particulière', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_SHO_JOU_FAC', 'FACTURATION_CLINIQUE', 'NB Jours CPC facturées', 'Nombre journées CP facturées', 'Nombre journées CP facturées', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SHO_R] THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées facturées en chambre particulière', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_SHO_JOU_TOT', 'FACTURATION_CLINIQUE', 'NB Jours CPC fact. + val.', 'Nombre journées CP Facturées + Valorisées', 'Nombre journées CP Facturées + Valorisées', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SHO_R] THEN (nb_rubrique_encours * coefficient) + nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées facturées et valorisées en chambre particulière', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_SHO_MT_ENC', 'FACTURATION_CLINIQUE', 'CA CPC Valorisé', 'CA chambre particulière Valorisé', 'CA chambre particulière Valorisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SHO_R] THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé en chambre particulière', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_SHO_MT_FAC', 'FACTURATION_CLINIQUE', 'CA CPC Facturé', 'CA chambre particulière facturée', 'CA chambre particulière facturée', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SHO_R] THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé en chambre particulière', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_SHO_MT_TOT', 'FACTURATION_CLINIQUE', 'CA CPC Facturé + Valorisé', 'CA chambre particulière facturée + Valorisé', 'CA chambre particulière facturée + Valorisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SHO_R] THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé en chambre particulière', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_SNS_NB_FACVAL', 'FACTURATION_CLINIQUE', 'NB Rubriques SNS Facturés + Valorisés', 'Nombre SNS Facturé + Valorisé', 'Nombre SNS Facturé + Valorisé', 'CASE WHEN prestation_code in (''SNS'') THEN nb_rubrique_facture + nb_rubrique_encours ELSE 0 END', '1', 'SUM', '#', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NBRUB', '', '', '', '', '', '', '', ''), +(1, 'CTI_SORDIRCOM', 'OCCUPATION', 'SSR - Sorties directes (Hospitalisés COMPLETE)', 'Sorties directes (Hospitalisés COMPLETE)', 'Sorties directes (Hospitalisés COMPLETE)', 'CASE WHEN mode_traitement_id = ''3'' THEN nb_sorties_directes ELSE 0 END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de sorties directes des séjours en Hospitalisation Complète', '-TS1', '', '', '', '', '', '', '', ''), +(1, 'CTI_SORDIRJR', 'OCCUPATION', 'SSR - Sorties directes (Hospitalisés DE JOUR)', 'Sorties directes (Hospitalisés DE JOUR)', 'Sorties directes (Hospitalisés DE JOUR)', 'CASE WHEN mode_traitement_id = ''4'' THEN nb_sorties_directes ELSE 0 END', '1', 'SUM', '#', 60, '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de sorties directes des séjours en Hospitalisation de Jour', '-TS1', '', '', '', '', '', '', '', ''), +(1, 'CTI_SOR_POST_PER', '*CALC', 'NB Sorties après période', 'Sorties après période', 'Sor > Per', '[1] - [2]', '1', '*CALC', '', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBSEJO', 'CTI_DEP', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de sorties apr', 'NBSEJ', 'NBSOR', '', '', '', '', '', '', ''), +(1, 'CTI_SRC_JOU_ENC', 'FACTURATION_CLINIQUE', 'NB Jours SRC Valorisées', 'Nombre journées SRC Valorisées', 'Nombre journées SRC Valorisées', 'CASE WHEN prestation_code IN (''SRC'', ''SSC'') THEN nb_rubrique_encours ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées valorisées en SRC', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_SRC_JOU_FAC', 'FACTURATION_CLINIQUE', 'NB Jours SRC facturées', 'Nombre journées SRC facturées', 'Nombre journées SRC facturées', 'CASE WHEN prestation_code IN (''SRC'', ''SSC'') THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées facturées en SRC', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_SRC_JOU_TOT', 'FACTURATION_CLINIQUE', 'NB Jours SRC Facturées + Valorisées', 'Total journées SRC Facturées + Valorisées', 'Total journées SRC Facturées + Valorisées', 'CASE WHEN prestation_code IN (''SRC'', ''SSC'') THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées facturées et valorisées en SRC', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_SRC_MT_ENC', 'FACTURATION_CLINIQUE', 'CA SRC Valorisé', 'Montant SRC Valorisé', 'Montant SRC Valorisé', 'CASE WHEN prestation_code IN (''SRC'', ''SSC'') THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé SRC', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_SRC_MT_FAC', 'FACTURATION_CLINIQUE', 'CA SRC Facturé', 'Montant SRC facturé', 'Montant SRC facturé', 'CASE WHEN prestation_code IN (''SRC'', ''SSC'') THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé SRC', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_SRC_MT_TOT', 'FACTURATION_CLINIQUE', 'CA SRC Facturé + Valorisé', 'Montant SRC facturé + Valorisé', 'Montant SRC facturé + Valorisé', 'CASE WHEN prestation_code IN (''SRC'', ''SSC'') THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé SRC', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_SRC_NB_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SRC Valorisés', 'Nombre séjours SRC Valorisés', 'Nombre séjours SRC Valorisés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and prestation_code IN (''SRC'', ''SSC'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires valorisé en SRC', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_SRC_NB_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SRC facturés', 'Nombre séjours SRC facturés', 'Nombre séjours SRC facturés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and prestation_code IN (''SRC'', ''SSC'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires facturé en SRC', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_SRC_NB_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA SRC Facturés + Valorisés', 'Nombre séjours SRC Facturés + Valorisés', 'Nombre séjours SRC Facturés + Valorisés', 'DISTINCT CASE WHEN ( prestation_code IN (''SRC'', ''SSC'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires facturé et valorisé en SRC', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_SRUBMED_MT_FAC', 'FACTURATION_CLINIQUE', 'CA SEJOUR sauf Facturé', 'Montant CA SEJOUR facturé', 'Montant CA SEJOUR facturé', 'CASE WHEN rubrique_facturation_id NOT IN [LISTE:CTI_RUBMED_R] THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des séjours non facturés', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_SRUBMED_MT_TOT', 'FACTURATION_CLINIQUE', 'CA SEJOUR sauf Facturé + Valorisé', 'Montant sauf CA SEJOUR facturé + Valorisé', 'Montant sauf CA SEJOUR facturé + Valorisé', 'CASE WHEN rubrique_facturation_id NOT IN [LISTE:CTI_RUBMED_R] THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des séjours non facturés non valorisés', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_ST2A_MT_TOT', 'FACTURATION_CLINIQUE', 'CA SOINS sauf Facturé + Valorisé', 'Montant sauf CA Soins facturé + Valorisé', 'Montant sauf CA Soins facturé + Valorisé', 'CASE WHEN rubrique_facturation_id NOT IN [LISTE:CTI_T2A_R] THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des soins non facturés non valorisés', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_ST2A_NB_FAC', 'FACTURATION_CLINIQUE', 'CA SOINS sauf Facturé', 'Montant sauf CA Soins facturé', 'Montant sauf CA Soins facturé', 'CASE WHEN rubrique_facturation_id NOT IN [LISTE:CTI_T2A_R] THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires des soins non facturés', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_STF_JOU_ENC', 'FACTURATION_CLINIQUE', 'NB Jours STF Valorisées', 'Nombre journées STF Valorisées', 'Nombre journées STF Valorisées', 'CASE WHEN prestation_code IN (''STF'') THEN nb_rubrique_encours ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées valorisées en STF', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_STF_JOU_FAC', 'FACTURATION_CLINIQUE', 'NB Jours STF facturées', 'Nombre journées STF facturées', 'Nombre journées STF facturées', 'CASE WHEN prestation_code IN (''STF'') THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées facturées en STF', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_STF_JOU_TOT', 'FACTURATION_CLINIQUE', 'NB Jours STF Facturées + Valorisées', 'Total journées STF Facturées + Valorisées', 'Total journées STF Facturées + Valorisées', 'CASE WHEN prestation_code IN (''STF'') THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de journées facturées et valorisées en STF', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_STF_MT_ENC', 'FACTURATION_CLINIQUE', 'CA STF Valorisé', 'Montant STF Valorisé', 'Montant STF Valorisé', 'CASE WHEN prestation_code IN (''STF'') THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé STF', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_STF_MT_FAC', 'FACTURATION_CLINIQUE', 'CA STF Facturé', 'Montant STF facturé', 'Montant STF facturé', 'CASE WHEN prestation_code IN (''STF'') THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé STF', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_STF_MT_TOT', 'FACTURATION_CLINIQUE', 'CA STF Facturé + Valorisé', 'Montant STFfacturé + Valorisé', 'Montant STFfacturé + Valorisé', 'CASE WHEN prestation_code IN (''STF'') THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé STF', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_STF_NB_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA STF Valorisés', 'Nombre séjours STF Valorisés', 'Nombre séjours STF Valorisés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and prestation_code IN (''STF'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires valorisé en STF', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_STF_NB_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA STF facturés', 'Nombre séjours STF facturés', 'Nombre séjours STF facturés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and prestation_code IN (''STF'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires facturé en STF', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_STF_NB_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA STF Facturés + Valorisés', 'Nombre séjours STF Facturés + Valorisés', 'Nombre séjours STF Facturés + Valorisés', 'DISTINCT CASE WHEN ( prestation_code IN (''STF'')) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires facturé et valorisé en STF', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_SUM_DEL_FACTURE', 'SEJOURS', 'SUM delai facturé', 'SUM_DEL_FACTURE', 'SUM_DEL_FACTURE', 'delai_facture', '1', 'SUM', '0,0', 60, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_SUM_DEL_GRP', 'SEJOURS', 'SUM delai groupage', 'Sum delai groupage', 'Sum delai groupage', 'delai_groupage', '1', 'SUM', '#,0', 40, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NOMBRE', '', '', '', '', '', '', '', ''), +(1, 'CTI_SUM_DEL_SOLD', 'SEJOURS', 'SUM delai Soldé', 'SUM_DEL_SOLD', 'SUM_DEL_SOLD', 'delai_solde_c', '1', 'SUM', '0,0', 60, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NBJOU', '', '', '', '', '', '', '', ''), +(1, 'CTI_SUM_NB_CALCULES', 'SEJOURS', 'SUM NB facturé', 'SUM_NB_CALCULES', 'SUM_NB_CALCULES', 'nb_calcules', '1', 'SUM', '0,0', 60, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''), +(1, 'CTI_SUM_NB_GROUPE', 'SEJOURS', 'SUM NB groupé', 'SUM NB groupé', 'SUM NB groupé', 'nb_groupe', '1', 'SUM', '#,0', 40, '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NOMBRE', '', '', '', '', '', '', '', ''), +(1, 'CTI_SUPHOT_CA_CPT', 'FACTURATION_CLINIQUE', 'CA comptabilisé Suppléments', 'Montant Comptabilisé Suppléments Hoteliers', 'Montant Comptabilisé Suppléments Hoteliers', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SUPHOT_R] THEN montant_comptabilise ELSE 0 END', '1', 'SUM', '#E', 80, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires comptabilisé en suppléments hôteliers', 'CACP', '', '', '', '', '', '', '', ''), +(1, 'CTI_SUPHOT_ENC', 'FACTURATION_CLINIQUE', 'CA HOTELLERIE Valorisé', 'Montant Suppléments hoteliers Valorisé', 'Montant Suppléments hoteliers Valorisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SUPHOT_R] THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé en suppléments hôteliers', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_SUPHOT_FAC', 'FACTURATION_CLINIQUE', 'CA HOTELLERIE Facturé', 'Montant Suppléments hoteliers facturés', 'Montant Suppléments hoteliers facturés', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SUPHOT_R] THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé en suppléments hôteliers', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_SUPHOT_TOT', 'FACTURATION_CLINIQUE', 'CA HOTELLERIE Facturé + Valorisé', 'Montant Suppléments hoteliers Facturés + Valorisés', 'Montant Suppléments hoteliers Facturés + Valorisés', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SUPHOT_R] THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé en suppléments hôteliers', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_MT1_ENC', 'FACTURATION_CLINIQUE', 'CA SOINS Valorisé [HOSP]', 'Montant CA Soins Valorisé (hospitalisés)', 'Montant CA Soins Valorisé (hospitalisés)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''1'' THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des soins des séjours hospitalisés', '-TS1', 'CAV', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_MT1_FAC', 'FACTURATION_CLINIQUE', 'CA SOINS Facturé [HOSP]', 'Montant CA Soins facturé (hospitalisés)', 'Montant CA Soins facturé (hospitalisés)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''1'' THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des soins des séjours hospitalisés (1 nuit minimum)', '-TS1', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_MT1_TOT', 'FACTURATION_CLINIQUE', 'CA SOINS Facturé + Valorisé [HOSP]', 'Montant CA Soins facturé + enc. (hospitalisés)', 'Montant CA Soins facturé + enc. (hospitalisés)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''1'' THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des soins des séjours hospitalisés (1 nuit minimum)', '-TS1', 'CAVF', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_MT2_ENC', 'FACTURATION_CLINIQUE', 'CA SOINS Valorisé [AMBU]', 'Montant CA Soins Valorisé (ambulatoire)', 'Montant CA Soins Valorisé (ambulatoire)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''2'' THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des soins des séjours ambulatoires', '-TS2', 'CAV', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_MT2_FAC', 'FACTURATION_CLINIQUE', 'CA SOINS Facturé [AMBU]', 'Montant CA Soins facturé (ambulatoire)', 'Montant CA Soins facturé (ambulatoire)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''2'' THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des soins des séjours ambulatoires (0 nuits)', '-TS2', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_MT2_TOT', 'FACTURATION_CLINIQUE', 'CA SOINS Facturé + Valorisé [AMBU]', 'Montant CA Soins facturé + enc. (ambulatoire)', 'Montant CA Soins facturé + enc. (ambulatoire)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''2'' THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des soins des séjours ambulatoires (0 nuits)', '-TS2', 'CAVF', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_MT3_ENC', 'FACTURATION_CLINIQUE', 'CA SOINS Valorisé [EXT]', 'Montant CA Soins Valorisé (Externe)', 'Montant CA Soins Valorisé (Externe)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''3'' THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des soins des séjours externes', '-TS3', 'CAV', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_MT3_FAC', 'FACTURATION_CLINIQUE', 'CA SOINS Facturé [EXT]', 'Montant CA Soins facturé (Externe)', 'Montant CA Soins facturé (Externe)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''3'' THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des soins des séjours externes', '-TS3', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_MT3_TOT', 'FACTURATION_CLINIQUE', 'CA SOINS Facturé + Valorisé [EXT]', 'Montant CA Soins facturé + enc. (Externe)', 'Montant CA Soins facturé + enc. (Externe)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''3'' THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des soins des séjours externes', '-TS3', 'CAVF', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_MT5_ENC', 'FACTURATION_CLINIQUE', 'CA SOINS Valorisé [SEANCE]', 'Montant CA Soins Valorisé (séances)', 'Montant CA Soins Valorisé (séances)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''5'' THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des soins des séances', '-TS5', 'CAV', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_MT5_FAC', 'FACTURATION_CLINIQUE', 'CA SOINS Facturé [SEANCE]', 'Montant CA Soins facturé (séances)', 'Montant CA Soins facturé (séances)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''5'' THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des soins des séances', '-TS5', 'CAF', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_MT5_TOT', 'FACTURATION_CLINIQUE', 'CA SOINS Facturé + Valorisé [SEANCE]', 'Montant CA Soins facturé + enc. (séances)', 'Montant CA Soins facturé + enc. (séances)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''5'' THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des soins des séances', '-TS5', 'CAVF', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_MT_ENC', 'FACTURATION_CLINIQUE', 'CA SOINS Valorisé', 'Montant CA Soins Valorisé', 'Montant CA Soins Valorisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des soins des séjours', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_MT_FAC', 'FACTURATION_CLINIQUE', 'CA SOINS Facturé', 'Montant CA Soins facturé', 'Montant CA Soins facturé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des soins des séjours', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_MT_TOT', 'FACTURATION_CLINIQUE', 'CA SOINS Facturé + Valorisé', 'Montant CA Soins facturé + Valorisé', 'Montant CA Soins facturé + Valorisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des soins des séjours', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_NB1_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SOINS Valorisés [HOSP]', 'Nombre séjours Soins Valorisés (hospitalisés)', 'Nombre séjours Soins Valorisés (hospitalisés)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''1'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires valorisé en soins des séjours hospitalisés (1 nuit minimum)', '-TS1', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_NB1_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SOINS facturés [HOSP]', 'Nombre séjours Soins facturés (hospitalisés)', 'Nombre séjours Soins facturés (hospitalisés)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''1'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires facturé en soins des séjours hospitalisés (1 nuit minimum)', '-TS1', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_NB1_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA SOINS Facturés + Valorisés [HOSP]', 'Nombre SEJOURS Facturés + Valorisés (hospitalisés', 'Nombre SEJOURS Facturés + Valorisés (hospitalisés', 'DISTINCT CASE WHEN ( rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''1'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires facturé et valorisé en soins des séjours hospitalisés (1 nuit minimum)', '-TS1', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_NB2_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SOINS Valorisés [AMBU]', 'Nombre séjours Soins Valorisés (ambulatoire)', 'Nombre séjours Soins Valorisés (ambulatoire)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''2'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires valorisé en soins des séjours ambulatoires (0 nuits)', '-TS2', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_NB2_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SOINS facturés [AMBU]', 'Nombre séjours Soins facturés (ambulatoire)', 'Nombre séjours Soins facturés (ambulatoire)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''2'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires facturé en soins des séjours ambulatoires (0 nuits)', '-TS2', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_NB2_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA SOINS Facturés + Valorisés [AMBU]', 'Nombre séjours Soins Facturés + Valorisés (ambulatoire)', 'Nombre séjours Soins Facturés + Valorisés (ambulatoire)', 'DISTINCT CASE WHEN ( rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''2'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires facturé et valorisé en soins des séjours ambulatoires (0 nuits)', '-TS2', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_NB3_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SOINS Valorisés [EXT]', 'Nombre séjours Soins Valorisés (Externe)', 'Nombre séjours Soins Valorisés (Externe)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''3'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires valorisé en soins des séjours externes', '-TS3', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_NB3_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SOINS facturés [EXT]', 'Nombre séjours Soins facturés (Externe)', 'Nombre séjours Soins facturés (Externe)', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''3'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires facturé en soins des séjours externes', '-TS3', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_NB3_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA SOINS Facturés + Valorisés [EXT]', 'Nombre séjours Soins Facturés + Valorisés (Externe)', 'Nombre séjours Soins Facturés + Valorisés (Externe)', 'DISTINCT CASE WHEN ( rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''3'') THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires facturé et valorisé en soins des séjours externes', '-TS3', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_NB5_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SOINS Valorisés [SEANCE]', 'Nombre séances Valorisés (séances)', 'Nombre séances Valorisés (séances)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''5'' and est_ligne_facturee = ''0'' THEN nb_rubrique_encours ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires valorisé en soins des séances', '-TS5', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_NB5_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SOINS facturés [SEANCE]', 'Nombre séances facturées (séances)', 'Nombre séances facturées (séances)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''5'' and est_ligne_facturee = ''1'' THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires facturé en soins des séances', '-TS5', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_NB5_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA SOINS Facturés + Valorisés [SEANCE]', 'Nombre séances Facturées + Valorisées (séances)', 'Nombre séances Facturées + Valorisées (séances)', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = ''5'' THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END', '1', 'SUM', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires facturé et valorisé en soins des séances', '-TS5', 'NBSEJ', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_NB_ENC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SOINS Valorisés', 'Nombre séjours Soins Valorisés', 'Nombre séjours Soins Valorisés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''0'' and rubrique_facturation_id IN [LISTE:CTI_T2A_R]) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires valorisé en soins des séjours', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_NB_FAC', 'FACTURATION_CLINIQUE', 'NB Séjours CA SOINS facturés', 'Nombre séjours Soins facturés', 'Nombre séjours Soins facturés', 'DISTINCT CASE WHEN (est_ligne_facturee = ''1'' and rubrique_facturation_id IN [LISTE:CTI_T2A_R]) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires facturé en soins des séjours', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_T2A_NB_TOT', 'FACTURATION_CLINIQUE', 'NB Séjours CA SOINS Facturés + Valorisés', 'Nombre séjours Soins Facturés + Valorisés', 'Nombre séjours Soins Facturés + Valorisés', 'DISTINCT CASE WHEN ( rubrique_facturation_id IN [LISTE:CTI_T2A_R]) THEN no_sejour ELSE NULL END', '1', 'COUNT', '', 0, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de séjours du Chiffre d''Affaires facturé et valorisé en soins des séjours', 'NBSEJ', '', '', '', '', '', '', '', ''), +(1, 'CTI_TXAMBFOR', '*CALC', 'Taux ambulatoires forains', 'Taux ambulatoires forains', 'Taux ambulatoires forains', '(base.cti_division([2] , [1]) * 100)', '1', '*CALC', '#,00%', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBAMB', 'CTI_NBAMBFOR', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Taux ambulatoires forains', '-TS2', 'NBENT', 'TAUX', '', '', '', '', '', ''), +(1, 'CTI_TXCHP_NBJ', '*CALC', 'Ratio CPC', 'Ratio Chambre particulière', 'Ratio Chambre particulière', '(base.cti_division([1] , [2]) * 100)', '1', '*CALC', '#,00%', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBCHPO', 'CTI_NBJSN', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Part du nombre de journées en chambre particulière dans le nombre de journées hospitalisées', '-TS1', 'NBJOU', '', '', '', '', '', '', ''), +(1, 'CTI_TXFAC_SEJ', '*CALC', 'Taux facturation des séjours', 'Taux de facturation des séjours', 'Tx sej fac', 'base.cti_division([2], [1]) * 100.0', '1', '*CALC', '#,00%', 60, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBSEJO', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Part du nombre de séjours facturés dans le nombre de séjours', 'NBSEJ', 'TAUX', '', '', '', '', '', '', ''), +(1, 'CTI_TX_AM', '*CALC', 'Taux occupation [AMBU]', 'Taux D''occupation (Ambulatoire)', 'Taux D''occupation (Ambulatoire)', '(base.cti_division([1] , [2]) * 100)', '1', '*CALC', '#,00%', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBAMB', 'CTI_NBPLACES_A', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Taux d''occupation des places des séjours ambulatoires (0 nuits)', '-TS2', 'NBENT', 'TAUX', '-TS1', '', '', '', '', ''), +(1, 'CTI_TX_CP_HO', '*CALC', 'Taux occupation CPC [HOSP]', 'Taux D''occupation CP (Hospitalisés)', 'Taux D''occupation CP (Hospitalisés)', '(base.cti_division([1] , [2]) * 100)', '1', '*CALC', '#,00%', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBJCPSN', 'CTI_NBPLACES_CP_H', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Taux d''occupation des places en chambre particulière des séjours hospitalisés (1 nuit minimum)', '-TS1', 'NBJOU', 'TAUX', '', '', '', '', '', ''), +(1, 'CTI_TX_FAC', '*CALC', 'Taux facturation des sorties', 'Taux de facturation des sorties', 'Tx fac', 'base.cti_division([1], [2]) * 100.0', '1', '*CALC', '#,00%', 60, ' ', ' ', ' ', ' ', ' ', ' ', '', 'CTI_NBSOR_SAES', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Taux des sorties facturées sur toutes les sorties', '-TS1', '-TS2', '-TS3', '-TS5', 'NBSOR', '', '', '', ''), +(1, 'CTI_TX_HO', '*CALC', 'Taux occupation [HOSP]', 'Taux D''occupation (Hospitalisés)', 'Taux D''occupation (Hospitalisés)', '(base.cti_division([1] , [2]) * 100)', '1', '*CALC', '#,00%', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBJSN', 'CTI_NBPLACES_H', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Taux d''occupation des places des séjours hospitalisés (1 nuit minimum)', '-TS1', 'NBJOU', 'TAUX', '', '', '', '', '', ''), +(1, 'CTI_TX_HOAM', '*CALC', 'Taux occupation (Hospitalisés - Ambulatoire)', 'Taux D''occupation (Hospitalisés - Ambulatoire)', 'Taux D''occupation (Hospitalisés - Ambulatoire)', '(base.cti_division([1] , [2]) * 100)', '1', '*CALC', '#,00%', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NB2_JSN', 'CTI_NBPLACES_HA', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Taux d''occupation des places des séjours hospitalisés et ambulatoires', '-TS1', '-TS2', 'NBJOU', 'TAUX', '', '', '', '', ''), +(1, 'CTI_TX_HOCOMP', '*CALC', 'SSR - Taux occupation [HOSP]', 'Taux D''occupation (Hospitalisés)', 'Taux D''occupation (Hospitalisés)', '(base.cti_division([1] , [2]) * 100)', '1', '*CALC', '#,00%', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NB4_JSNCP', 'CTI_NBPLACES_H', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Taux d''occupation des places des séjours hospitalisés (1 nuit minimum)', '-TS1', '-TS2', '-TS5', '', '', '', '', '', ''), +(1, 'CTI_TX_JOUR_FAC', '*CALC', 'Taux Jours facturées (jour de sortie non inclus)', 'Taux de journées facturées (jour de sortie non inclus)', 'Tx Jour Fac', 'base.cti_division([1], [2]) * 100.0', '1', '*CALC', '#,0%', 0, ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_JOUR_FAC', 'CTI_NBJSNS', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Taux du nombre de journées facturées sur le nombre de journées des séjours hospitalisés sortis', '-TS1', 'NBJOU', 'TAUX', '', '', '', '', '', ''), +(1, 'CTI_UCD_MT_CPT', 'FACTURATION_CLINIQUE', 'CA MEDICAMENTS Comptabilisé', 'Montant Médicaments Comptabilisé', 'Montant Médicaments Comptabilisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_UCD_R] THEN montant_comptabilise ELSE 0 END', '1', 'SUM', '#E', 80, '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires comptabilisé des médicaments', 'CACP', '', '', '', '', '', '', '', ''), +(1, 'CTI_UCD_MT_ENC', 'FACTURATION_CLINIQUE', 'CA MEDICAMENTS Valorisé', 'Montant Médicaments Valorisé', 'Montant Médicaments Valorisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_UCD_R] THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des médicaments', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_UCD_MT_FAC', 'FACTURATION_CLINIQUE', 'CA MEDICAMENTS Facturé', 'Montant Médicaments Facturé', 'Montant Médicaments Facturé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_UCD_R] THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des médicaments', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_UCD_MT_TOT', 'FACTURATION_CLINIQUE', 'CA MEDICAMENTS Facturé + Valorisé', 'Montant Médicaments Facturé + Valorisé', 'Montant Médicaments Fac + Val', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_UCD_R] THEN montant_encours + montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des médicaments', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_UCD_RUB_FAC', 'FACTURATION_CLINIQUE', 'NB Rubriques MEDICAMENT', 'Nombre de médicaments [UCD]', 'Nombre de médicaments [UCD]', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_UCD_R] THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '#', 60, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de rubriques de médicaments présentes sur la période', 'NBRUB', '', '', '', '', '', '', '', ''), +(1, 'CTI_URG_MT_ENC', 'FACTURATION_CLINIQUE', 'CA URGENCES Valorisé', 'Montant urgences Valorisé', 'Montant urgences Valorisé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_URG_R] THEN montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires valorisé des urgences', 'CAV', '', '', '', '', '', '', '', ''), +(1, 'CTI_URG_MT_FAC', 'FACTURATION_CLINIQUE', 'CA URGENCES Facturé', 'Montant urgences Facturé', 'Montant urgences Facturé', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_URG_R] THEN montant_facture ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé des urgences', 'CAF', '', '', '', '', '', '', '', ''), +(1, 'CTI_URG_MT_TOT', 'FACTURATION_CLINIQUE', 'CA URGENCES Facturé + Valorisé', 'Montant urgences Facturé + Valorisé', 'Montant urgences Fact + Val', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_URG_R] THEN montant_facture + montant_encours ELSE 0 END', '1', 'SUM', '#E', 80, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Chiffre d''Affaires facturé et valorisé des urgences', 'CAVF', '', '', '', '', '', '', '', ''), +(1, 'CTI_URG_RUB_FAC', 'FACTURATION_CLINIQUE', 'NB Rubriques URGENCES', 'Nombre rubriques urgences', 'Nombre rubriques urgences', 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_URG_R] THEN nb_rubrique_facture ELSE 0 END', '1', 'SUM', '#', 60, '1', '2', '3', '4', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', 'NBRUB', '', '', '', '', '', '', '', '') +; + +-- 3/3 : Màj de la table iCTI +-- Suppression des indicateurs en double +DELETE FROM activite.t_indicateurs +USING +( +SELECT code, MIN(oid) AS minoid FROM activite.t_indicateurs WHERE code <> '' GROUP BY 1 HAVING count(*) > 1 +) subview +WHERE t_indicateurs.code = subview.code AND t_indicateurs.oid <> subview.minoid; + +-- Mise à jour indicateurs déjà présents +UPDATE activite.t_indicateurs SET + texte = w_dbsetup.texte, + table_name = w_dbsetup.table_name, + column_name = w_dbsetup.column_name, + is_cti = w_dbsetup.is_cti, + entete = w_dbsetup.entete, + entete_etendue = w_dbsetup.entete_etendue, + total_function = w_dbsetup.total_function, + output_format = w_dbsetup.output_format, + width = w_dbsetup.width, + dimension_date_1 = w_dbsetup.dimension_date_1, + dimension_date_2 = w_dbsetup.dimension_date_2, + dimension_date_3 = w_dbsetup.dimension_date_3, + dimension_date_4 = w_dbsetup.dimension_date_4, + dimension_date_5 = w_dbsetup.dimension_date_5, + dimension_date = w_dbsetup.dimension_date, + is_template = w_dbsetup.is_template, + variable_definition = ARRAY[variable_definition_1,variable_definition_2,variable_definition_3] , + variable_value = ARRAY[variable_value_1,variable_value_2,variable_value_3], + variable_value_text = ARRAY[variable_value_text_1,variable_value_text_2,variable_value_text_3], + description = w_dbsetup.description +FROM w_dbsetup +WHERE t_indicateurs.code = w_dbsetup.code; + +-- Ajout des indicateurs +INSERT INTO activite.t_indicateurs(texte, + table_name, + column_name, + is_cti, + entete, + entete_etendue, + code, + total_function, + output_format, + width, + dimension_date_1, + dimension_date_2, + dimension_date_3, + dimension_date_4, + dimension_date_5, + dimension_date, + is_template, + variable_definition, + variable_value, + variable_value_text, + description +) +SELECT texte, + table_name, + column_name, + is_cti, + entete, + entete_etendue, + code, + total_function, + output_format, + width, + dimension_date_1, + dimension_date_2, + dimension_date_3, + dimension_date_4, + dimension_date_5, + dimension_date, + is_template, + ARRAY[variable_definition_1,variable_definition_2,variable_definition_3] , + ARRAY[variable_value_1,variable_value_2,variable_value_3], + ARRAY[variable_value_text_1,variable_value_text_2,variable_value_text_3], + description +FROM w_dbsetup WHERE oid <> 0 AND code NOT IN (SELECT code FROM activite.t_indicateurs WHERE code IS NOT NULL) +; + +CREATE INDEX i_w_dbsetup +ON w_dbsetup +USING btree +(code) +; + +ANALYZE w_dbsetup +; + +-- Mise à jour des références +UPDATE activite.t_indicateurs SET + indicateur_associe_1_id = COALESCE(t_indicateurs_1.oid,0), + indicateur_associe_2_id = COALESCE(t_indicateurs_2.oid,0), + indicateur_associe_3_id = COALESCE(t_indicateurs_3.oid,0), + indicateur_associe_4_id = COALESCE(t_indicateurs_4.oid,0), + indicateur_associe_5_id = COALESCE(t_indicateurs_5.oid,0), + indicateur_associe_6_id = COALESCE(t_indicateurs_6.oid,0), + indicateur_associe_7_id = COALESCE(t_indicateurs_7.oid,0), + indicateur_associe_8_id = COALESCE(t_indicateurs_8.oid,0), + indicateur_associe_9_id = COALESCE(t_indicateurs_9.oid,0), + indicateur_associe_10_id = COALESCE(t_indicateurs_10.oid,0), + indicateur_associe_11_id = COALESCE(t_indicateurs_11.oid,0), + indicateur_associe_12_id = COALESCE(t_indicateurs_12.oid,0), + indicateur_associe_13_id = COALESCE(t_indicateurs_13.oid,0), + indicateur_associe_14_id = COALESCE(t_indicateurs_14.oid,0), + indicateur_associe_15_id = COALESCE(t_indicateurs_15.oid,0), + indicateur_associe_16_id = COALESCE(t_indicateurs_16.oid,0), + indicateur_associe_17_id = COALESCE(t_indicateurs_17.oid,0), + indicateur_associe_18_id = COALESCE(t_indicateurs_18.oid,0), + indicateur_associe_19_id = COALESCE(t_indicateurs_19.oid,0), + indicateur_associe_20_id = COALESCE(t_indicateurs_20.oid,0), + indicateur_reference_id = COALESCE(t_indicateurs_reference.oid,0), + indicateur_template_id = COALESCE(t_indicateurs_template.oid,0) +FROM w_dbsetup + LEFT JOIN activite.t_indicateurs t_indicateurs_1 ON (w_dbsetup.indicateur_associe_1_code = t_indicateurs_1.code AND w_dbsetup.indicateur_associe_1_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_2 ON (w_dbsetup.indicateur_associe_2_code = t_indicateurs_2.code AND w_dbsetup.indicateur_associe_2_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_3 ON (w_dbsetup.indicateur_associe_3_code = t_indicateurs_3.code AND w_dbsetup.indicateur_associe_3_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_4 ON (w_dbsetup.indicateur_associe_4_code = t_indicateurs_4.code AND w_dbsetup.indicateur_associe_4_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_5 ON (w_dbsetup.indicateur_associe_5_code = t_indicateurs_5.code AND w_dbsetup.indicateur_associe_5_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_6 ON (w_dbsetup.indicateur_associe_6_code = t_indicateurs_6.code AND w_dbsetup.indicateur_associe_6_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_7 ON (w_dbsetup.indicateur_associe_7_code = t_indicateurs_7.code AND w_dbsetup.indicateur_associe_7_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_8 ON (w_dbsetup.indicateur_associe_8_code = t_indicateurs_8.code AND w_dbsetup.indicateur_associe_8_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_9 ON (w_dbsetup.indicateur_associe_9_code = t_indicateurs_9.code AND w_dbsetup.indicateur_associe_9_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_10 ON (w_dbsetup.indicateur_associe_10_code = t_indicateurs_10.code AND w_dbsetup.indicateur_associe_10_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_11 ON (w_dbsetup.indicateur_associe_11_code = t_indicateurs_11.code AND w_dbsetup.indicateur_associe_11_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_12 ON (w_dbsetup.indicateur_associe_12_code = t_indicateurs_12.code AND w_dbsetup.indicateur_associe_12_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_13 ON (w_dbsetup.indicateur_associe_13_code = t_indicateurs_13.code AND w_dbsetup.indicateur_associe_13_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_14 ON (w_dbsetup.indicateur_associe_14_code = t_indicateurs_14.code AND w_dbsetup.indicateur_associe_14_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_15 ON (w_dbsetup.indicateur_associe_15_code = t_indicateurs_15.code AND w_dbsetup.indicateur_associe_15_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_16 ON (w_dbsetup.indicateur_associe_16_code = t_indicateurs_16.code AND w_dbsetup.indicateur_associe_16_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_17 ON (w_dbsetup.indicateur_associe_17_code = t_indicateurs_17.code AND w_dbsetup.indicateur_associe_17_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_18 ON (w_dbsetup.indicateur_associe_18_code = t_indicateurs_18.code AND w_dbsetup.indicateur_associe_18_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_19 ON (w_dbsetup.indicateur_associe_19_code = t_indicateurs_19.code AND w_dbsetup.indicateur_associe_19_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_20 ON (w_dbsetup.indicateur_associe_20_code = t_indicateurs_20.code AND w_dbsetup.indicateur_associe_20_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_reference ON (w_dbsetup.indicateur_reference_code = t_indicateurs_reference.code AND w_dbsetup.indicateur_reference_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_template ON (w_dbsetup.indicateur_template_code = t_indicateurs_template.code AND w_dbsetup.indicateur_template_code <> '') +WHERE t_indicateurs.code = w_dbsetup.code + AND (indicateur_associe_1_code <> '' OR + indicateur_associe_2_code <> '' OR + indicateur_associe_3_code <> '' OR + indicateur_reference_code <> ''); + +-- Thèmes +UPDATE activite.t_indicateurs SET + theme_id = ARRAY[ + t_indicateur_theme_1.oid, + t_indicateur_theme_2.oid, + t_indicateur_theme_3.oid, + t_indicateur_theme_4.oid, + t_indicateur_theme_5.oid, + t_indicateur_theme_6.oid, + t_indicateur_theme_7.oid, + t_indicateur_theme_8.oid, + t_indicateur_theme_9.oid + ] +FROM w_dbsetup +LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_1 ON w_dbsetup.theme_1_code = t_indicateur_theme_1.code +LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_2 ON w_dbsetup.theme_2_code = t_indicateur_theme_2.code +LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_3 ON w_dbsetup.theme_3_code = t_indicateur_theme_3.code +LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_4 ON w_dbsetup.theme_4_code = t_indicateur_theme_4.code +LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_5 ON w_dbsetup.theme_5_code = t_indicateur_theme_5.code +LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_6 ON w_dbsetup.theme_6_code = t_indicateur_theme_6.code +LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_7 ON w_dbsetup.theme_7_code = t_indicateur_theme_7.code +LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_8 ON w_dbsetup.theme_8_code = t_indicateur_theme_8.code +LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_9 ON w_dbsetup.theme_9_code = t_indicateur_theme_9.code +WHERE t_indicateurs.code = w_dbsetup.code AND + theme_id IS DISTINCT FROM ARRAY[ + t_indicateur_theme_1.oid, + t_indicateur_theme_2.oid, + t_indicateur_theme_3.oid, + t_indicateur_theme_4.oid, + t_indicateur_theme_5.oid, + t_indicateur_theme_6.oid, + t_indicateur_theme_7.oid, + t_indicateur_theme_8.oid, + t_indicateur_theme_9.oid + ] + ; + +-- Réorganisation des indicateurs +SELECT base.cti_reorganize_indicateurs('activite'); \ No newline at end of file diff --git a/db/data/dbdata_activite_t_kiwee_params.SQL b/db/data/dbdata_activite_t_kiwee_params.SQL new file mode 100644 index 0000000..d09e984 --- /dev/null +++ b/db/data/dbdata_activite_t_kiwee_params.SQL @@ -0,0 +1,37 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + t_kiwee_params.code, + t_kiwee_params.texte, + t_kiwee_params.valeur, + t_kiwee_params.description + FROM + activite.t_kiwee_params + ORDER BY code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + code, + texte, + valeur, + description +) +VALUES +('RELANCE_HONORAIRE_PAT', 'Relance souhaitée pour les dossiers patient avec solde honoraire positif', 't', 'Coché = Oui, on envoie vers kiwee les dossiers ayant un solde honoraire positif pour relance. Non coché = Non, on envoie que les dossiers avec solde établissement positif') +; + +-- 3/3 : Màj de la table iCTI +INSERT INTO activite.t_kiwee_params(code, texte, valeur, description) + SELECT + w_dbsetup.code, + w_dbsetup.texte, + w_dbsetup.valeur, + w_dbsetup.description + FROM + w_dbsetup + WHERE w_dbsetup.code NOT IN (SELECT code from activite.t_kiwee_params) +; \ No newline at end of file diff --git a/db/data/dbdata_activite_t_listes.SQL b/db/data/dbdata_activite_t_listes.SQL new file mode 100644 index 0000000..93f7141 --- /dev/null +++ b/db/data/dbdata_activite_t_listes.SQL @@ -0,0 +1,85 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + CASE WHEN t_listes.oid = 0 THEN t_listes.oid ELSE 1 END AS oid, + t_listes.texte, + t_listes.chapitre, + t_listes.code, + t_listes.is_cti, + t_listes.show_omit, + 'CTI'::text AS utilisateur_createur, + t_listes.est_partagee_modification, + t_listes_tables.name as table_name, + t_listes.contenu_by_code, + t_listes.exclude_code, + t_listes.include_code, + t_listes.contenu_non_replicable_ailleurs + FROM activite.t_listes, activite.t_listes_tables + WHERE (is_cti = '1' OR t_listes.code LIKE 'CTI_%') and table_id = t_listes_tables.oid + ORDER BY 4 + LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + oid, + texte, + chapitre, + code, + is_cti, + show_omit, + utilisateur_createur, + est_partagee_modification, + table_name, + contenu_by_code, + exclude_code, + include_code, + contenu_non_replicable_ailleurs +) +VALUES +(1, 'Portail Médecin - Actes à exclure de la liste pour le top 20 Actes CCAM', 'Portail', 'ACT_PORT_CCAM', '1', '1', 'CTI', '1', 't_actes', '0', '', '', '0'), +(1, 'Portail Médecin - Actes à exclure de la liste pour le top 20 Actes NGAP', 'Portail', 'ACT_PORT_NGAP', '1', '1', 'CTI', '1', 't_actes', '0', '', '', '0'), +(1, 'CTI : Dialyse', '', 'CTI_DIA_R', '0', '0', 'CTI', '1', 't_rubriques_facturation', '0', '', '', '1'), +(1, 'CTI : CA Divers', '', 'CTI_DIVERS_R', '0', '0', 'CTI', '1', 't_rubriques_facturation', '1', '', '[CLASSE:CTI_RUB_2:S06]', '1'), +(1, 'Etages inappropriés', '', 'CTI_ETA_KO', '0', '0', 'CTI', '1', 't_etages', '0', '', '', '1'), +(1, 'Médecins inappropriés', '', 'CTI_MED_KO', '0', '0', 'CTI', '1', 't_medecins_administratifs', '0', '', '', '1'), +(1, 'CTI : Prothèses', '', 'CTI_PROTHESE_R', '0', '0', 'CTI', '1', 't_rubriques_facturation', '1', '', '[CLASSE:CTI_RUB_2:S22]', '1'), +(1, 'CTI : CA Séjours', '', 'CTI_RUBMED_R', '0', '1', 'CTI', '1', 't_rubriques_facturation', '1', '', '[CLASSE:CTI_RUB_2:S01]', '1'), +(1, 'Services inappropriés', '', 'CTI_SER_KO', '0', '0', 'CTI', '1', 't_services_facturation', '0', '', '', '1'), +(1, 'CTI : Forfaits SE (SE à SE4)', '', 'CTI_SE_R', '0', '0', 'CTI', '1', 't_rubriques_facturation', '1', '', '[CLASSE:CTI_RUB_2:S03]', '1'), +(1, 'CTI : Chambre particulière.', '', 'CTI_SHO_R', '0', '0', 'CTI', '1', 't_rubriques_facturation', '1', '', '[CLASSE:CTI_RUB_2:S11]', '1'), +(1, 'CTI : Suppléments Hoteliers', '', 'CTI_SUPHOT_R', '0', '0', 'CTI', '1', 't_rubriques_facturation', '1', '', '[CLASSE:CTI_RUB_2:S12]', '1'), +(1, 'CTI : CA Soins', '', 'CTI_T2A_R', '0', '1', 'CTI', '1', 't_rubriques_facturation', '1', '', '[CLASSE:CTI_RUB_2:S01][CLASSE:CTI_RUB_2:S02][CLASSE:CTI_RUB_2:S03][CLASSE:CTI_RUB_2:S04][CLASSE:CTI_RUB_2:S05][CLASSE:CTI_RUB_2:S06]', '1'), +(1, 'CTI : Médicaments', '', 'CTI_UCD_R', '0', '0', 'CTI', '1', 't_rubriques_facturation', '1', '', '[CLASSE:CTI_RUB_2:S21]', '1'), +(1, 'Unités Fonctionnelles Ambulatoires', 'Expert', 'CTI_UF_AMBU', '1', '0', 'CTI', '1', 't_unites_fonctionnelles', '0', '', '', '1'), +(1, 'CTI : Urgences', '', 'CTI_URG_R', '0', '0', 'CTI', '1', 't_rubriques_facturation', '1', '', '[CLASSE:CTI_RUB_2:S04]', '1') +; + +-- 3/3 : Màj de la table iCTI +UPDATE activite.t_listes SET + texte = w_dbsetup.texte, + chapitre = w_dbsetup.chapitre, + table_id = t_listes_tables.oid, + is_cti = w_dbsetup.is_cti, + show_omit = w_dbsetup.show_omit, + -- contenu_by_code = w_dbsetup.contenu_by_code, + exclude_code = w_dbsetup.exclude_code, + include_code = w_dbsetup.include_code, + contenu_non_replicable_ailleurs = w_dbsetup.contenu_non_replicable_ailleurs +FROM w_dbsetup, activite.t_listes_tables +WHERE 1=1 + AND w_dbsetup.table_name = t_listes_tables.name + AND t_listes.code = w_dbsetup.code +; + +INSERT INTO activite.t_listes(code, texte, chapitre, table_id, is_cti, show_omit, contenu_by_code, exclude_code, include_code, contenu_non_replicable_ailleurs) + SELECT w_dbsetup.code, w_dbsetup.texte, w_dbsetup.chapitre, t_listes_tables.oid, w_dbsetup.is_cti, w_dbsetup.show_omit, w_dbsetup.contenu_by_code, w_dbsetup.exclude_code, w_dbsetup.include_code, w_dbsetup.contenu_non_replicable_ailleurs + FROM w_dbsetup, activite.t_listes_tables + WHERE w_dbsetup.table_name = t_listes_tables.name AND w_dbsetup.code NOT IN (SELECT code FROM activite.t_listes) AND w_dbsetup.texte NOT LIKE '*SUPPRIME%' +; + +DELETE FROM activite.t_listes WHERE texte like '*SUPPRIME%' AND is_cti = '1' +; \ No newline at end of file diff --git a/db/data/dbdata_activite_t_listes_tables.SQL b/db/data/dbdata_activite_t_listes_tables.SQL new file mode 100644 index 0000000..f2f4d3f --- /dev/null +++ b/db/data/dbdata_activite_t_listes_tables.SQL @@ -0,0 +1,155 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + CASE WHEN oid = 0 THEN oid ELSE 1 END AS oid, + name, + texte, + select_cmd, + code + FROM activite.t_listes_tables + ORDER BY code + LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + oid, + name, + texte, + select_cmd, + code +) +VALUES +(1, 't_actes', 'Actes', '(SELECT t_actes_c.oid, t_actes_c.code, t_actes_c.texte, ccam_regroupement_code_1 || CASE WHEN t_actes_c.classant = ''Y'' THEN '' (classant)'' ELSE '''' END as complement, ''O'' as utilise +FROM activite.t_actes_c +WHERE t_actes_c.oid > 0 AND nomenclature IN ( ''CCAM'', ''NGAP'') AND t_actes_c.oid in (SELECT oid FROM activite.p_oids WHERE code_table = ''acte_h'') ) +UNION +(SELECT t_actes_c.oid, t_actes_c.code, t_actes_c.texte, ccam_regroupement_code_1 || CASE WHEN t_actes_c.classant = ''Y'' THEN '' (classant)'' ELSE '''' END as complement, ''N'' as utilise +FROM activite.t_actes_c +WHERE t_actes_c.oid > 0 AND nomenclature IN ( ''CCAM'', ''NGAP'') AND t_actes_c.oid not in (SELECT oid FROM activite.p_oids WHERE code_table = ''acte_h'') ) +ORDER BY code', 'ACTE'), +(1, 't_activites', '[DICT.ACTI.ACTIVITE#3] +', '(SELECT oid, code, texte, ''''::text as complement, ''O'' as utilise FROM activite.t_activites WHERE oid > 0 AND oid in (SELECT oid FROM activite.p_oids WHERE code_table = ''activite'') UNION SELECT oid, code, texte, ''''::text as complement, ''N'' as utilise FROM activite.t_activites WHERE oid > 0 AND oid not in (SELECT oid FROM activite.p_oids WHERE code_table = ''activite'') )ORDER BY code', 'ACTIVITE'), +(1, 't_ages', 'Ages', 'SELECT oid, code, texte, ''''::text as complement, ''O''::text as utilise FROM base.t_ages ORDER BY code', 'AGE'), +(1, 't_budget_cle', 'Clés budgétaires', 'SELECT oid, code AS code, texte AS texte, +''''::text as complement, +''O'' as utilise +FROM activite.t_budget_cle +WHERE oid > 0 ', 'BUDGETCLE'), +(1, 't_codes_postaux', 'Codes postaux', '( +SELECT t_codes_postaux.oid, t_codes_postaux.code, t_codes_postaux.texte, '''' as complement, ''O'' as utilise +FROM base.t_codes_postaux +WHERE + t_codes_postaux.oid > 0 + AND t_codes_postaux.oid in (SELECT oid FROM activite.p_oids WHERE code_table=''c_postaux'') +UNION +SELECT t_codes_postaux.oid, t_codes_postaux.code, t_codes_postaux.texte, '''' as complement, ''N'' as utilise +FROM base.t_codes_postaux +WHERE + t_codes_postaux.oid > 0 + AND t_codes_postaux.oid not in (SELECT oid FROM activite.p_oids WHERE code_table=''c_postaux'') +) +ORDER BY code', 'CODEPOST'), +(1, 't_compte', 'Comptes produit', 'SELECT t_compte.oid AS oid, code AS code, texte AS texte, +''''::text as complement, +(CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END)::text as utilise +FROM activite.t_compte +LEFT JOIN activite.p_oids ON code_table=''compte'' AND t_compte.oid = p_oids.oid +WHERE t_compte.oid > 0 ', 'COMPTE'), +(1, 't_durees_sejour', 'Durées de séjour', 'SELECT oid, code, texte, ''''::text as complement, ''O''::text as utilise FROM base.t_durees_sejour ORDER BY code', 'DURSEJ'), +(1, 't_etages', '[DICT.ACTI.ETAGE#31]', '(SELECT oid, code, texte, ''''::text as complement, ''O'' as utilise FROM activite.t_etages WHERE oid in (SELECT oid FROM activite.p_oids WHERE code_table = ''etage'') UNION SELECT oid, code, texte, ''''::text as complement, ''N'' as utilise FROM activite.t_etages WHERE oid not in (SELECT oid FROM activite.p_oids WHERE code_table = ''etage'') )ORDER BY code', 'ETAGE'), +(1, 't_etat_sejour', 'Etat de séjour', 'SELECT oid, code, texte, ''''::text as complement, ''O''::text as utilise FROM activite.t_etat_sejour ORDER BY code', 'ETATSEJOUR'), +(1, 't_expert_controles', 'Controles Expert', 'SELECT oid, code, texte, ''''::text as complement, ''O''::text as utilise +FROM activite.t_expert_controle WHERE oid > 0 +ORDER BY code', 'EXPERTCTL'), +(1, 't_filiere_soin', 'Filières de soin', 'SELECT oid, code, texte, ''''::text as complement, + CASE WHEN oid in (SELECT oid FROM activite.p_oids WHERE code_table IN (''filiere_soin'')) THEN ''O'' ELSE ''N'' END as utilise + FROM activite.t_filiere_soin + ORDER BY 2', 'FILIERESOIN'), +(1, 't_finess', 'Finess', 'SELECT oid, code, texte, ''''::text as complement, ''O'' as utilise FROM activite.t_finess_c WHERE oid > 0 ORDER BY code, texte', 'FINESS'), +(1, 't_forme_activite', 'Formes d''activité', 'SELECT oid, code, texte, ''''::text as complement, + CASE WHEN oid in (SELECT oid FROM activite.p_oids WHERE code_table IN (''forme_activite'')) THEN ''O'' ELSE ''N'' END as utilise + FROM activite.t_forme_activite + ORDER BY 2', 'FORMEACTIVITE'), +(1, 't_ghm_c', 'GHM', 'SELECT t_ghm_c.ghm_id AS oid, ghm_code AS code, ghm_texte AS texte, +cas_text as complement, +(CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END)::text as utilise +FROM activite.t_ghm_c +LEFT JOIN activite.p_oids ON code_table=''ghm'' AND t_ghm_c.ghm_id = p_oids.oid +WHERE t_ghm_c.ghm_id > 0 ', 'GHM'), +(1, 't_ghs', 'GHS', '(SELECT oid, code, texte, ''''::text as complement, ''O'' as utilise FROM base.t_ghs WHERE oid > 0 AND oid in (SELECT oid FROM activite.p_oids WHERE code_table = ''ghs'') UNION SELECT oid, code, texte, ''''::text as complement, ''N'' as utilise FROM base.t_ghs WHERE oid > 0 AND code > 0 AND oid not in (SELECT oid FROM activite.p_oids WHERE code_table = ''ghs'') ) ORDER BY code', 'GHS'), +(1, 't_gme_c', 'GME', 'SELECT t_gme_c.gme_id AS oid, gme_code AS code, gme_texte AS texte,''''::text as complement , +(CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END)::text as utilise +FROM activite.t_gme_c +LEFT JOIN activite.p_oids ON code_table=''gme'' AND t_gme_c.gme_id = p_oids.oid +WHERE t_gme_c.gme_id > 0', 'GME'), +(1, 't_lits', 'Lits', '( +SELECT t_lits.oid, t_etages.code || ''-'' || t_lits.code AS code, t_etages.texte || '' lit '' || t_lits.texte AS texte, ''''::text as complement, ''O'' as utilise FROM activite.t_lits JOIN activite.t_etages ON etage_id = t_etages.oid WHERE t_lits.oid > 0 AND t_lits.oid in (SELECT oid FROM activite.p_oids WHERE code_table = ''lit'') + +UNION + +SELECT t_lits.oid, t_etages.code || ''-'' || t_lits.code AS code, t_etages.texte || '' lit '' || t_lits.texte AS texte, ''''::text as complement, ''N'' as utilise FROM activite.t_lits JOIN activite.t_etages ON etage_id = t_etages.oid WHERE t_lits.oid > 0 AND t_lits.oid NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = ''lit'') + +) ORDER BY code', 'LIT'), +(1, 't_medecins_administratifs', 'Médecins', 'SELECT t_medecins_administratifs.oid + ,t_medecins_administratifs.code + ,t_medecins_administratifs.nom || '' '' || t_medecins_administratifs.prenom AS texte + ,COALESCE(t_specialites_medecin.code || '' '' || t_specialites_medecin.texte,'''')::text AS complement + ,CASE WHEN t_medecins_administratifs.oid IN (SELECT p_oids.oid FROM activite.p_oids WHERE code_table IN (''medecin_s'',''medecin_x'') ) THEN ''O'' ELSE ''N'' END AS utilise + FROM activite.t_medecins_administratifs + LEFT JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid + LEFT JOIN base.t_specialites_medecin ON t_medecins.specialite_id = t_specialites_medecin.oid + ORDER BY t_medecins_administratifs.code', 'MEDECIN'), +(1, 't_medecins_traitants_administratifs', 'Médecins traitants', 'SELECT t_medecins_traitants_administratifs.oid + ,t_medecins_traitants_administratifs.code + ,t_medecins_traitants_administratifs.nom || '' '' || t_medecins_traitants_administratifs.prenom AS texte + ,COALESCE(t_medecins_traitants_administratifs.code || '' '' || t_medecins_traitants_administratifs.no_rpps,'''')::text AS complement + ,CASE WHEN t_medecins_traitants_administratifs.oid IN (SELECT p_oids.oid FROM activite.p_oids WHERE code_table IN (''medecin_t'') ) THEN ''O'' ELSE ''N'' END AS utilise + FROM activite.t_medecins_traitants_administratifs + LEFT JOIN base.t_medecins ON t_medecins_traitants_administratifs.medecin_id = t_medecins.oid + LEFT JOIN base.t_specialites_medecin ON t_medecins.specialite_id = t_specialites_medecin.oid + ORDER BY t_medecins_traitants_administratifs.code', 'MEDECIN_TRAITANT'), +(1, 't_prestations', 'Prestations Cliniques', '(SELECT oid, code, texte, norme as complement, ''O'' as utilise FROM activite.t_prestations WHERE oid in (SELECT oid FROM activite.p_oids WHERE code_table = ''prestation_c'') UNION SELECT oid, code, texte, norme as complement, ''N'' as utilise FROM activite.t_prestations WHERE oid not in (SELECT oid FROM activite.p_oids WHERE code_table = ''prestation_c'') ) ORDER BY code', 'PRESTA_C'), +(1, 't_prestations', 'Prestations Honoraires', '(SELECT oid, code, texte, norme as complement, ''O'' as utilise FROM activite.t_prestations WHERE oid > 0 AND clinique_honoraire IN (''H'', '''') AND oid in (SELECT oid FROM activite.p_oids WHERE code_table = ''prestation_h'') UNION SELECT oid, code, texte, norme as complement, ''N'' as utilise FROM activite.t_prestations WHERE oid > 0 AND clinique_honoraire IN (''H'', '''') AND oid not in (SELECT oid FROM activite.p_oids WHERE code_table = ''prestation_h'') )ORDER BY code', 'PRESTA_H'), +(1, 't_rejets_noemie', 'Rejets NOEMIE', 'SELECT oid, code, texte, ''''::text as complement, ''O'' as utilise FROM activite.t_rejets_noemie WHERE oid > 0 ORDER BY code, texte', 'REJETNOEMI'), +(1, 't_rubriques_facturation', 'Rubriques de facturation', '(SELECT oid, code, texte, ''''::text as complement, ''O'' as utilise FROM activite.t_rubriques_facturation WHERE oid > 0 AND oid in (SELECT oid FROM activite.p_oids WHERE code_table = ''rubrique_c'') UNION SELECT oid, code, texte, ''''::text as complement, ''N'' as utilise FROM activite.t_rubriques_facturation WHERE oid > 0 AND oid not in (SELECT oid FROM activite.p_oids WHERE code_table = ''rubrique_c'') ) ORDER BY code', 'RUBRIQUE'), +(1, 't_services_facturation', '[DICT.ACTI.SERVICE#31]', '(SELECT oid, code, texte, ''''::text as complement, ''O'' as utilise FROM activite.t_services_facturation WHERE oid > 0 AND oid in (SELECT oid FROM activite.p_oids WHERE code_table = ''service'') UNION SELECT oid, code, texte, ''''::text as complement, ''N'' as utilise FROM activite.t_services_facturation WHERE oid > 0 AND oid not in (SELECT oid FROM activite.p_oids WHERE code_table = ''service'') )ORDER BY code', 'SERVICE_F'), +(1, 't_tiers_payant', 'Tiers payant', '(SELECT t_tiers_payant.oid, t_tiers_payant.code, t_tiers_payant.texte as texte, t_types_tiers_payant.texte as complement, ''O'' as utilise +FROM activite.t_tiers_payant, activite.t_types_tiers_payant +WHERE t_tiers_payant.oid > 0 AND t_tiers_payant.type_tiers_payant = t_types_tiers_payant.code + AND t_tiers_payant.oid in (SELECT oid FROM activite.p_oids WHERE code_table = ''tiers_payant'' ) +UNION +SELECT t_tiers_payant.oid, t_tiers_payant.code, t_tiers_payant.texte as texte, t_types_tiers_payant.texte , ''N'' as utilise +FROM activite.t_tiers_payant , activite.t_types_tiers_payant +WHERE t_tiers_payant.oid > 0 AND t_tiers_payant.type_tiers_payant = t_types_tiers_payant.code AND (t_tiers_payant.oid not in (SELECT oid FROM activite.p_oids WHERE code_table = ''tiers_payant''))) ORDER BY code', 'TIERSP'), +(1, 't_type_sejour', 'Types de séjour', 'SELECT oid, code, texte, ''''::text as complement, ''O''::text as utilise FROM activite.t_type_sejour ORDER BY code', 'TYPESEJOUR'), +(1, 't_unites_fonctionnelles', '[DICT.ACTI.UF#31]', '(SELECT oid, code, texte, ''''::text as complement, ''O'' as utilise FROM activite.t_unites_fonctionnelles WHERE oid > 0 AND oid in (SELECT oid FROM activite.p_oids WHERE code_table = ''unite_fonctionnelle'') UNION SELECT oid, code, texte, ''''::text as complement, ''N'' as utilise FROM activite.t_unites_fonctionnelles WHERE oid > 0 AND oid not in (SELECT oid FROM activite.p_oids WHERE code_table = ''unite_fonctionnelle'') ) ORDER BY code', 'UF'), +(1, 't_unites_medicales', '[DICT.ACTI.UM#31]', '(SELECT oid, code, texte, ''''::text as complement, ''O'' as utilise FROM activite.t_unites_medicales WHERE oid > 0 AND oid in (SELECT oid FROM activite.p_oids WHERE code_table = ''unite_medicale'') UNION SELECT oid, code, texte, ''''::text as complement, ''N'' as utilise FROM activite.t_unites_medicales WHERE oid > 0 AND oid not in (SELECT oid FROM activite.p_oids WHERE code_table = ''unite_medicale'') ) ORDER BY code', 'UM') +; + +-- 3/3 : Màj de la table iCTI +UPDATE activite.t_listes_tables SET code = 'PRESTA_C_B' WHERE oid = +(SELECT MIN(oid) FROM activite.t_listes_tables WHERE code = 'PRESTA_C') +AND (SELECT count(*) FROM activite.t_listes_tables WHERE code = 'PRESTA_C') > 1; + +UPDATE activite.t_listes SET table_id = (SELECT oid FROM activite.t_listes_tables WHERE code = 'PRESTA_C') +WHERE table_id IN (SELECT oid FROM activite.t_listes_tables WHERE code = 'PRESTA_C_B'); + +DELETE FROM activite.t_listes_tables WHERE code = 'PRESTA_C_B'; + +UPDATE activite.t_listes_tables SET + code = w_dbsetup.code, + texte = w_dbsetup.texte, + select_cmd = w_dbsetup.select_cmd, + name = w_dbsetup.name +FROM w_dbsetup +WHERE t_listes_tables.code = w_dbsetup.code; + +INSERT INTO activite.t_listes_tables(oid, code, name, texte, select_cmd) + SELECT oid, code, name, texte, select_cmd FROM w_dbsetup WHERE oid = 0 AND oid NOT IN (SELECT oid FROM activite.t_listes_tables); + +INSERT INTO activite.t_listes_tables(code, name, texte, select_cmd) + SELECT code, name, texte, select_cmd FROM w_dbsetup WHERE oid <> 0 AND code NOT IN (SELECT code FROM activite.t_listes_tables); \ No newline at end of file diff --git a/db/data/dbdata_activite_t_prestations.SQL b/db/data/dbdata_activite_t_prestations.SQL new file mode 100644 index 0000000..616dc00 --- /dev/null +++ b/db/data/dbdata_activite_t_prestations.SQL @@ -0,0 +1,569 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + CASE WHEN oid = 0 THEN oid ELSE 1 END AS oid, + code, + texte, + texte_court, + norme + FROM activite.t_prestations + WHERE norme = 'B2' OR oid = 0 + ORDER BY code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + oid, + code, + texte, + texte_court, + norme +) +VALUES +(0, '***', 'Non renseignee', 'Non renseignee', ''), +(1, 'AAD', 'Autres accessoires traitement a domicile', 'Autres accessoires traitement a domicile', 'B2'), +(1, 'AAR', 'Appareillage assistance respiratoire', 'Appareillage assistance respiratoire', 'B2'), +(1, 'ABA', 'Transport par ambulances agrees', 'Transport par ambulances agrees', 'B2'), +(1, 'ABG', 'Ambulance agree de garde', 'Ambulance agree de garde', 'B2'), +(1, 'ACO', 'Actes d''obstetrique', 'Actes d''obstetrique', 'B2'), +(1, 'ACR', 'Prime accreditation specialiste', 'Prime accreditation specialiste', 'B2'), +(1, 'ADA', 'Actes d''anesthesie', 'Actes d''anesthesie', 'B2'), +(1, 'ADC', 'Actes de chirurgie', 'Actes de chirurgie', 'B2'), +(1, 'ADE', 'Actes d''echographie', 'Actes d''echographie', 'B2'), +(1, 'ADI', 'Actes d''imagerie', 'Actes d''imagerie', 'B2'), +(1, 'ADT', 'Aide au demarrage teletransmission', 'Aide au demarrage teletransmission', 'B2'), +(1, 'AIS', 'Actes infirmiers de soins', 'Actes infirmiers de soins', 'B2'), +(1, 'AMC', 'Actes de kinesitherapie en etablissement', 'Actes de kinesitherapie en etablissement', 'B2'), +(1, 'AMD', 'Intervention+anesthesie duree < ou = 12', 'Intervention+anesthesie duree < ou = 12', 'B2'), +(1, 'AMF', 'Forfait public ivg medicamenteuse', 'Forfait public ivg medicamenteuse', 'B2'), +(1, 'AMI', 'Soins infirmiers', 'Soins infirmiers', 'B2'), +(1, 'AMK', 'Actes de kinesitherapie', 'Actes de kinesitherapie', 'B2'), +(1, 'AMO', 'Seances d''orthophonie', 'Seances d''orthophonie', 'B2'), +(1, 'AMP', 'Soins de pedicurie', 'Soins de pedicurie', 'B2'), +(1, 'AMS', 'Suivi des actes de kinesitherapie', 'Suivi des actes de kinesitherapie', 'B2'), +(1, 'AMT', 'Aide a la maintenance teletransmission', 'Aide a la maintenance teletransmission', 'B2'), +(1, 'AMY', 'Seances d''orthoptie', 'Seances d''orthoptie', 'B2'), +(1, 'ANP', 'Forfait activite non programmee', 'Forfait activite non programmee', 'B2'), +(1, 'ANT', 'Supplement antepartum', 'Supplement antepartum', 'B2'), +(1, 'APD', 'Intervention+anesthesie,24 > duree > 12', 'Intervention+anesthesie,24 > duree > 12', 'B2'), +(1, 'APE', 'Administration de produits et prestations en environnement hospitalier', 'Administration de produits et prestations en environnement hospitalier', 'B2'), +(1, 'APT', 'Aide portable teletransmission', 'Aide portable teletransmission', 'B2'), +(1, 'ARD', 'Aide adhesion rapide au dispositif', 'Aide adhesion rapide au dispositif', 'B2'), +(1, 'ARE', 'Frais d''anesthesie et de reanimation', 'Frais d''anesthesie et de reanimation', 'B2'), +(1, 'ARO', 'Generateur d''aerosol', 'Generateur d''aerosol', 'B2'), +(1, 'AS1', 'Forfait hospitalisation a temps partiel groupe 1', 'Forfait hospitalisation a temps partiel groupe 1', 'B2'), +(1, 'AS2', 'Forfait hospitalisation a temps partiel groupe 2', 'Forfait hospitalisation a temps partiel groupe 2', 'B2'), +(1, 'AS3', 'Forfait hospitalisation a temps partiel 15 %', 'Forfait hospitalisation a temps partiel 15 %', 'B2'), +(1, 'AS4', 'Forfait hospitalisation a temps partiel groupe 2 + fas1', 'Forfait hospitalisation a temps partiel groupe 2 + fas1', 'B2'), +(1, 'AS5', 'Forfait hospitalisation a temps partiel groupe 2 + fas2', 'Forfait hospitalisation a temps partiel groupe 2 + fas2', 'B2'), +(1, 'ASR', 'Astreinte', 'Astreinte', 'B2'), +(1, 'ATD', 'Complement at 150% dentaire', 'Complement at 150% dentaire', 'B2'), +(1, 'ATL', 'Complement at 150% lpp', 'Complement at 150% lpp', 'B2'), +(1, 'ATM', 'Actes techniques medicaux', 'Actes techniques medicaux', 'B2'), +(1, 'ATP', 'Autre moyen de transport', 'Autre moyen de transport', 'B2'), +(1, 'ATU', 'Forfait d''accueil et de traitement des urgences', 'Forfait d''accueil et de traitement des urgences', 'B2'), +(1, 'AXI', 'Actes de prophylaxie et prevention', 'Actes de prophylaxie et prevention', 'B2'), +(1, 'B', 'Actes de biologie', 'Actes de biologie', 'B2'), +(1, 'BDC', 'Consultation de prevention bucco-dentaire', 'Consultation de prevention bucco-dentaire', 'B2'), +(1, 'BR2', 'Consultation et radio 2 cliches de prevention bucco-dentaire', 'Consultation et radio 2 cliches de prevention bucco-dentaire', 'B2'), +(1, 'BR4', 'Consultation et radio 4 cliches de prevention bucco-dentaire', 'Consultation et radio 4 cliches de prevention bucco-dentaire', 'B2'), +(1, 'C', 'Consultation', 'Consultation', 'B2'), +(1, 'CA', 'Consultation approfondie', 'Consultation approfondie', 'B2'), +(1, 'CBM', 'Contrat de bonnes pratiques en zone de montagne', 'Contrat de bonnes pratiques en zone de montagne', 'B2'), +(1, 'CBP', 'Forfait contrat de bonnes pratiques', 'Forfait contrat de bonnes pratiques', 'B2'), +(1, 'CBR', 'Contrat de bonnes pratiques en zone rurale', 'Contrat de bonnes pratiques en zone rurale', 'B2'), +(1, 'CBU', 'Contrat de bonnes pratiques en zone urbaine', 'Contrat de bonnes pratiques en zone urbaine', 'B2'), +(1, 'CDE', 'Consultation specifique de depistage', 'Consultation specifique de depistage', 'B2'), +(1, 'CDF', 'Centre sante dentaire optant - forfait fin', 'Centre sante dentaire optant - forfait fin', 'B2'), +(1, 'CDI', 'Centre sante dentaire optant - forfait debut', 'Centre sante dentaire optant - forfait debut', 'B2'), +(1, 'CDS', 'Centre sante dentaire optant - forfait suivi', 'Centre sante dentaire optant - forfait suivi', 'B2'), +(1, 'CG', 'Consultation suivi de grossesse', 'Consultation suivi de grossesse', 'B2'), +(1, 'CID', 'Centre sante infirmier optant - forfait debut', 'Centre sante infirmier optant - forfait debut', 'B2'), +(1, 'CIF', 'Centre sante infirmier optant - forfait fin', 'Centre sante infirmier optant - forfait fin', 'B2'), +(1, 'CMD', 'Centre sante medical optant - forfait debut', 'Centre sante medical optant - forfait debut', 'B2'), +(1, 'CMF', 'Centre sante medical optant - forfait fin', 'Centre sante medical optant - forfait fin', 'B2'), +(1, 'CMT', 'Centre sante medical optant - forfait tacite', 'Centre sante medical optant - forfait tacite', 'B2'), +(1, 'CNP', 'Consultation neuro-psychiatre', 'Consultation neuro-psychiatre', 'B2'), +(1, 'COR', 'Podo-ortheses', 'Podo-ortheses', 'B2'), +(1, 'CP1', 'Forfait contrat de bonnes pratiques 1', 'Forfait contrat de bonnes pratiques 1', 'B2'), +(1, 'CP2', 'Forfait contrat de bonnes pratiques 2', 'Forfait contrat de bonnes pratiques 2', 'B2'), +(1, 'CP3', 'Forfait contrat de bonnes pratiques 3', 'Forfait contrat de bonnes pratiques 3', 'B2'), +(1, 'CP6', 'Contrat de bonnes pratiques transporteurs 2006', 'Contrat de bonnes pratiques transporteurs 2006', 'B2'), +(1, 'CP7', 'Contrat de bonnes pratiques transporteurs 2007', 'Contrat de bonnes pratiques transporteurs 2007', 'B2'), +(1, 'CP8', 'Contrat de bonnes pratiques transporteurs 2008', 'Contrat de bonnes pratiques transporteurs 2008', 'B2'), +(1, 'CPC', 'Frais de chambre particuliere pour convenance personnelle', 'Frais de chambre particuliere pour convenance personnelle', 'B2'), +(1, 'CPH', 'Copie d''ordonnance', 'Copie d''ordonnance', 'B2'), +(1, 'CPL', 'Forfait contrat de bonnes pratiques laboratoire', 'Forfait contrat de bonnes pratiques laboratoire', 'B2'), +(1, 'CPO', 'Coordination prelevement organe', 'Coordination prelevement organe', 'B2'), +(1, 'CPU', 'Contrat pratique versement unique', 'Contrat pratique versement unique', 'B2'), +(1, 'CRC', 'Complement de remuneration chef de clinique', 'Complement de remuneration chef de clinique', 'B2'), +(1, 'CRD', 'Majoration consultation regulee dimanche et ferie', 'Majoration consultation regulee dimanche et ferie', 'B2'), +(1, 'CRM', 'Majoration consultation regulee milieu de nuit', 'Majoration consultation regulee milieu de nuit', 'B2'), +(1, 'CRN', 'Majoration consultation regulee de nuit', 'Majoration consultation regulee de nuit', 'B2'), +(1, 'CRS', 'Majoration consultation regulee du samedi apres-midi', 'Majoration consultation regulee du samedi apres-midi', 'B2'), +(1, 'CS', 'Consultation specialiste', 'Consultation specialiste', 'B2'), +(1, 'CSC', 'Consultation specifique au cabinet par un cardiologue ou un medecin specialiste en pathologie cardio-vasculaire', 'Consultation specifique au cabinet par un cardiologue ou un medecin specialiste en pathologie cardio-vasculaire', 'B2'), +(1, 'CSI', 'Forfait contrat de sante publique infirmier', 'Forfait contrat de sante publique infirmier', 'B2'), +(1, 'CSL', 'Forfait contrat de sante publique laboratoire', 'Forfait contrat de sante publique laboratoire', 'B2'), +(1, 'CST', 'Contrat de surveillance thermal', 'Contrat de surveillance thermal', 'B2'), +(1, 'D', 'Actes dentaires', 'Actes dentaires', 'B2'), +(1, 'D01', 'Hemodialyse en centre', 'Hemodialyse en centre', 'B2'), +(1, 'D02', 'Autodialyse simple ou assistee', 'Autodialyse simple ou assistee', 'B2'), +(1, 'D03', 'Entrainement hemodialyse a domicile et a l''autodialyse', 'Entrainement hemodialyse a domicile et a l''autodialyse', 'B2'), +(1, 'D04', 'Entrainement a la dpa', 'Entrainement a la dpa', 'B2'), +(1, 'D05', 'Entrainement a la dpca', 'Entrainement a la dpca', 'B2'), +(1, 'D06', 'Hemodialyse a domicile', 'Hemodialyse a domicile', 'B2'), +(1, 'D07', 'Dialyse peritoneale automatisee (dpa)', 'Dialyse peritoneale automatisee (dpa)', 'B2'), +(1, 'D08', 'Dialyse peritoneale continue ambulatoire (dpca)', 'Dialyse peritoneale continue ambulatoire (dpca)', 'B2'), +(1, 'D09', 'Forfait hemodialyse en centre', 'Forfait hemodialyse en centre', 'B2'), +(1, 'D10', 'Forfait hemodialyse en centre pour enfant', 'Forfait hemodialyse en centre pour enfant', 'B2'), +(1, 'D11', 'Forfait hemodialyse en centre', 'Forfait hemodialyse en centre', 'B2'), +(1, 'D12', 'Forfait d''autodialyse simple', 'Forfait d''autodialyse simple', 'B2'), +(1, 'D13', 'Forfait d''autodialyse assistee', 'Forfait d''autodialyse assistee', 'B2'), +(1, 'D14', 'Forfait d''hemodialyse a domicile', 'Forfait d''hemodialyse a domicile', 'B2'), +(1, 'D15', 'Forfait de dialyse peritoneale automatisee (dpa)', 'Forfait de dialyse peritoneale automatisee (dpa)', 'B2'), +(1, 'D16', 'Forfait de dialyse peritoneale continue ambulatoire (dpca)', 'Forfait de dialyse peritoneale continue ambulatoire (dpca)', 'B2'), +(1, 'D17', 'Forfait entrainement hemodialyse a domicile et a l''autodialyse', 'Forfait entrainement hemodialyse a domicile et a l''autodialyse', 'B2'), +(1, 'D18', 'Forfait entrainement a la dpa', 'Forfait entrainement a la dpa', 'B2'), +(1, 'D19', 'Forfait entrainement a la dpa', 'Forfait entrainement a la dpa', 'B2'), +(1, 'D20', 'Forfait d''entrainement a la dialyse peritoneale automatisee a domicile', 'Forfait d''entrainement a la dialyse peritoneale automatisee a domicile', 'B2'), +(1, 'D21', 'Forfait d''entrainement a la dialyse peritoneale continue ambulatoire a domicile', 'Forfait d''entrainement a la dialyse peritoneale continue ambulatoire a domicile', 'B2'), +(1, 'D22', 'Forfait de dialyse peritoneale automatisee pour hospitalisation de 3 a 6 jours', 'Forfait de dialyse peritoneale automatisee pour hospitalisation de 3 a 6 jours', 'B2'), +(1, 'D23', 'Forfait de dialyse peritoneale continue ambulatoire pour hospitalisation de 3 a 6 jours', 'Forfait de dialyse peritoneale continue ambulatoire pour hospitalisation de 3 a 6 jours', 'B2'), +(1, 'D24', 'Forfait d''''entrainement a l''''hemodialyse en unite de dialyse medicalisee', 'Forfait d''''entrainement a l''''hemodialyse en unite de dialyse medicalisee', 'B2'), +(1, 'DC', 'Actes de chirurgie dentaire', 'Actes de chirurgie dentaire', 'B2'), +(1, 'DCC', 'Acte de depistage du cancer colorectal', 'Acte de depistage du cancer colorectal', 'B2'), +(1, 'DEN', 'Acte dentaire ccam', 'Acte dentaire ccam', 'B2'), +(1, 'DI', 'Demarche de soins infirmiers', 'Demarche de soins infirmiers', 'B2'), +(1, 'DIP', 'Supplement journalier dialyse peritoneale', 'Supplement journalier dialyse peritoneale', 'B2'), +(1, 'DPH', 'Deplacement comite regional reconnaissance mp', 'Deplacement comite regional reconnaissance mp', 'B2'), +(1, 'DRT', 'Differentiel referent traitant', 'Differentiel referent traitant', 'B2'), +(1, 'DTP', 'Dialyse tierce personne', 'Dialyse tierce personne', 'B2'), +(1, 'DVO', 'Divers orthese', 'Divers orthese', 'B2'), +(1, 'ECP', 'Examen complementaire crmpp', 'Examen complementaire crmpp', 'B2'), +(1, 'EMI', 'Ecart medicament indemnisable', 'Ecart medicament indemnisable', 'B2'), +(1, 'END', 'Actes d''endodontie', 'Actes d''endodontie', 'B2'), +(1, 'ENT', 'Forfait d''entree', 'Forfait d''entree', 'B2'), +(1, 'ERI', 'Ecart indemnisable retrocession', 'Ecart indemnisable retrocession', 'B2'), +(1, 'ETI', 'Ecart tarif indemnisable', 'Ecart tarif indemnisable', 'B2'), +(1, 'EXH', 'Sejour extreme > seuil haut', 'Sejour extreme > seuil haut', 'B2'), +(1, 'EXS', 'Examen special', 'Examen special', 'B2'), +(1, 'FA1', 'Forfait d''accueil (chirurgie ambulatoire)', 'Forfait d''accueil (chirurgie ambulatoire)', 'B2'), +(1, 'FA2', 'Forfait d''accueil (chirurgie ambulatoire)', 'Forfait d''accueil (chirurgie ambulatoire)', 'B2'), +(1, 'FAE', 'Frais d''accompagnement pour enfant hospitalise', 'Frais d''accompagnement pour enfant hospitalise', 'B2'), +(1, 'FAT', 'Forfait de seance d''aerosol therapie', 'Forfait de seance d''aerosol therapie', 'B2'), +(1, 'FAU', 'Forfait annuel urgence', 'Forfait annuel urgence', 'B2'), +(1, 'FAZ', 'Forfait adhesion zone deficitaire', 'Forfait adhesion zone deficitaire', 'B2'), +(1, 'FCO', 'Forfait consommables onereux (cardiologie)', 'Forfait consommables onereux (cardiologie)', 'B2'), +(1, 'FCS', 'Forfait structure centre de sante', 'Forfait structure centre de sante', 'B2'), +(1, 'FDA', 'Forfait dentaire cmu : protheses adjointes', 'Forfait dentaire cmu : protheses adjointes', 'B2'), +(1, 'FDC', 'Forfait dentaire cmu : protheses conjointes', 'Forfait dentaire cmu : protheses conjointes', 'B2'), +(1, 'FDO', 'Forfait dentaire cmu : protheses orthodontiques', 'Forfait dentaire cmu : protheses orthodontiques', 'B2'), +(1, 'FDR', 'Forfait dentaire cmu : reparation protheses', 'Forfait dentaire cmu : reparation protheses', 'B2'), +(1, 'FE', 'Frais d''environnement', 'Frais d''environnement', 'B2'), +(1, 'FEN', 'Forfait entretien', 'Forfait entretien', 'B2'), +(1, 'FFM', 'Forfait frais de materiel', 'Forfait frais de materiel', 'B2'), +(1, 'FFN', 'Aide a la transmission des flux non securises', 'Aide a la transmission des flux non securises', 'B2'), +(1, 'FFS', 'Aide perenne (facturation feuilles de soins)', 'Aide perenne (facturation feuilles de soins)', 'B2'), +(1, 'FGA', 'Frais de gestion pour centre de grand appareillage', 'Frais de gestion pour centre de grand appareillage', 'B2'), +(1, 'FGP', 'Frais de garde particuliere', 'Frais de garde particuliere', 'B2'), +(1, 'FHT', 'Forfait haute technicite', 'Forfait haute technicite', 'B2'), +(1, 'FHV', 'Forfait honoraires de ville', 'Forfait honoraires de ville', 'B2'), +(1, 'FI1', 'Forfait pdses publique', 'Forfait pdses publique', 'B2'), +(1, 'FI2', 'Forfait centre de depistage anonyme et gratuit', 'Forfait centre de depistage anonyme et gratuit', 'B2'), +(1, 'FI3', 'Forfait perinataux de proximite', 'Forfait perinataux de proximite', 'B2'), +(1, 'FI4', 'Forfait education therapeutique', 'Forfait education therapeutique', 'B2'), +(1, 'FJA', 'Forfait journalier de sortie a la charge de l''assure', 'Forfait journalier de sortie a la charge de l''assure', 'B2'), +(1, 'FJC', 'Forfait journalier seul (du par un organisme complementaire)', 'Forfait journalier seul (du par un organisme complementaire)', 'B2'), +(1, 'FJL', 'Forfait journalier seul (du par le regime local alsacemoselle)', 'Forfait journalier seul (du par le regime local alsacemoselle)', 'B2'), +(1, 'FJR', 'Forfait journalier de sortie a la charge du regime obligatoire', 'Forfait journalier de sortie a la charge du regime obligatoire', 'B2'), +(1, 'FJS', 'Hebergement > 24h', 'Hebergement > 24h', 'B2'), +(1, 'FMC', 'Forfait mensuel de coordinnation', 'Forfait mensuel de coordinnation', 'B2'), +(1, 'FMP', 'Forfait mensuel de participation', 'Forfait mensuel de participation', 'B2'), +(1, 'FMS', 'Forfait mensuel de soins', 'Forfait mensuel de soins', 'B2'), +(1, 'FMV', 'Forfait medicament de ville', 'Forfait medicament de ville', 'B2'), +(1, 'FNN', 'Forfait nouveau ne', 'Forfait nouveau ne', 'B2'), +(1, 'FPA', 'Forfait d''astreinte nuit et ferie en etablissement prive', 'Forfait d''astreinte nuit et ferie en etablissement prive', 'B2'), +(1, 'FPC', 'Forfait prothese conjointe (cmu hors panier de soins)', 'Forfait prothese conjointe (cmu hors panier de soins)', 'B2'), +(1, 'FPE', 'Forfait pediatrique', 'Forfait pediatrique', 'B2'), +(1, 'FPG', 'Forfait de garde nuit et ferie en etablisssement prive', 'Forfait de garde nuit et ferie en etablisssement prive', 'B2'), +(1, 'FPO', 'Forfait orthodontique (cmu hors panier de soins)', 'Forfait orthodontique (cmu hors panier de soins)', 'B2'), +(1, 'FPS', 'Forfait ps - centre de sante', 'Forfait ps - centre de sante', 'B2'), +(1, 'FPU', 'Forfait patient urgences', 'Forfait patient urgences', 'B2'), +(1, 'FR2', 'Forfait technique tarif reduit n°2', 'Forfait technique tarif reduit n°2', 'B2'), +(1, 'FR3', 'Forfait technique tarif reduit n°3', 'Forfait technique tarif reduit n°3', 'B2'), +(1, 'FRL', 'Forfait journalier de sortie a la charge du regime alsacemoselle', 'Forfait journalier de sortie a la charge du regime alsacemoselle', 'B2'), +(1, 'FS', 'Frais de soins', 'Frais de soins', 'B2'), +(1, 'FSD', 'Forfait de securite dermatologique', 'Forfait de securite dermatologique', 'B2'), +(1, 'FSG', 'Frais salle travail accouchement gemellaire ou dystocie', 'Frais salle travail accouchement gemellaire ou dystocie', 'B2'), +(1, 'FSJ', 'Forfait de soins journalier', 'Forfait de soins journalier', 'B2'), +(1, 'FSO', 'Frais de salle d''operation', 'Frais de salle d''operation', 'B2'), +(1, 'FST', 'Frais salle travail accouchement simple', 'Frais salle travail accouchement simple', 'B2'), +(1, 'FSY', 'Frais de salle d''operation en psychiatrie', 'Frais de salle d''operation en psychiatrie', 'B2'), +(1, 'FTG', 'Forfait technique global', 'Forfait technique global', 'B2'), +(1, 'FTN', 'Forfait technique normal', 'Forfait technique normal', 'B2'), +(1, 'FTR', 'Forfait technique reduit', 'Forfait technique reduit', 'B2'), +(1, 'FTS', 'Forfait technique scanner', 'Forfait technique scanner', 'B2'), +(1, 'GHS', 'Groupe homogene de sejour', 'Groupe homogene de sejour', 'B2'), +(1, 'GHT', 'Groupe homogene de tarif', 'Groupe homogene de tarif', 'B2'), +(1, 'GLU', 'Nutriments pour intolerants au gluten', 'Nutriments pour intolerants au gluten', 'B2'), +(1, 'GMT', 'Groupe Medico-Tarifaire', 'Groupe Medico-Tarifaire', 'B2'), +(1, 'GPD', 'Garde pharmacie de dimanche', 'Garde pharmacie de dimanche', 'B2'), +(1, 'GPF', 'Garde pharmacie de ferie', 'Garde pharmacie de ferie', 'B2'), +(1, 'GPN', 'Garde pharmacie de nuit', 'Garde pharmacie de nuit', 'B2'), +(1, 'GS1', 'Vaccin anti grippe hemisphere sud vaxigrip hs', 'Vaccin anti grippe hemisphere sud vaxigrip hs', 'B2'), +(1, 'GS2', 'Vaccin anti grippe hemisphere sud fluarix hs', 'Vaccin anti grippe hemisphere sud fluarix hs', 'B2'), +(1, 'HC', 'Honoraire complexe', 'Honoraire complexe', 'B2'), +(1, 'HCS', 'Acces libre hors coordination des soins', 'Acces libre hors coordination des soins', 'B2'), +(1, 'HD1', 'Honoraires de dispensiation a 100%', 'Honoraires de dispensiation a 100%', 'B2'), +(1, 'HD2', 'Honoraires de dispensiation a 15%', 'Honoraires de dispensiation a 15%', 'B2'), +(1, 'HD4', 'Honoraires de dispensiation a 30%', 'Honoraires de dispensiation a 30%', 'B2'), +(1, 'HD7', 'Honoraires de dispensiation a 65%', 'Honoraires de dispensiation a 65%', 'B2'), +(1, 'HDS', 'Honoraires de dispensation specifique vaccins anti grippaux hemisphere sud', 'Honoraires de dispensation specifique vaccins anti grippaux hemisphere sud', 'B2'), +(1, 'HG1', 'Honoraires de dispensiation grand conditionnement a 100%', 'Honoraires de dispensiation grand conditionnement a 100%', 'B2'), +(1, 'HG2', 'Honoraires de dispensiation grand conditionnement a 15%', 'Honoraires de dispensiation grand conditionnement a 15%', 'B2'), +(1, 'HG4', 'Honoraires de dispensiation grand conditionnement a 30%', 'Honoraires de dispensiation grand conditionnement a 30%', 'B2'), +(1, 'HG7', 'Honoraires de dispensiation grand conditionnement a 65%', 'Honoraires de dispensiation grand conditionnement a 65%', 'B2'), +(1, 'HMP', 'Honoraire comite regionalreconnaissance mp', 'Honoraire comite regionalreconnaissance mp', 'B2'), +(1, 'HN', 'Hors nomenclature', 'Hors nomenclature', 'B2'), +(1, 'HS', 'Honoraires de surveillance', 'Honoraires de surveillance', 'B2'), +(1, 'HTH', 'Forfait hebergement cure thermale', 'Forfait hebergement cure thermale', 'B2'), +(1, 'HUM', 'Produits origine humaine', 'Produits origine humaine', 'B2'), +(1, 'IC', 'Consultation generaliste ivg', 'Consultation generaliste ivg', 'B2'), +(1, 'ICO', 'Actes inlay-core', 'Actes inlay-core', 'B2'), +(1, 'ICS', 'Consultation specialiste ivg', 'Consultation specialiste ivg', 'B2'), +(1, 'ID', 'Indemnite de deplacement', 'Indemnite de deplacement', 'B2'), +(1, 'IF', 'Indemnite forfaitaire de deplacement', 'Indemnite forfaitaire de deplacement', 'B2'), +(1, 'IFA', 'Indemnite forfaitaire de deplacement pour auxiliaires medicaux', 'Indemnite forfaitaire de deplacement pour auxiliaires medicaux', 'B2'), +(1, 'IFN', 'Indemnite forfaitaire deplacement mk neurologique', 'Indemnite forfaitaire deplacement mk neurologique', 'B2'), +(1, 'IFO', 'Indemnite forfaitaire deplacement mk orthopedique et rhumatologique', 'Indemnite forfaitaire deplacement mk orthopedique et rhumatologique', 'B2'), +(1, 'IFP', 'Indemnite forfaitaire deplacement mk pneumologie', 'Indemnite forfaitaire deplacement mk pneumologie', 'B2'), +(1, 'IFR', 'Indemnite forfaitaire deplacement mk rhumatismale', 'Indemnite forfaitaire deplacement mk rhumatismale', 'B2'), +(1, 'IFS', 'Indemnite forfaitaire deplacement mk de sortie', 'Indemnite forfaitaire deplacement mk de sortie', 'B2'), +(1, 'IG', 'Intervention ivg', 'Intervention ivg', 'B2'), +(1, 'IGA', 'Anesthesie ivg', 'Anesthesie ivg', 'B2'), +(1, 'IGB', 'Investigations biologiques', 'Investigations biologiques', 'B2'), +(1, 'IGM', 'Mifegyne - pharmacie ivg', 'Mifegyne - pharmacie ivg', 'B2'), +(1, 'IGP', 'Prostaglandines - pharmacie ivg', 'Prostaglandines - pharmacie ivg', 'B2'), +(1, 'IK', 'Indemnites kilometriques', 'Indemnites kilometriques', 'B2'), +(1, 'IKG', 'Frais de deplacement vacations', 'Frais de deplacement vacations', 'B2'), +(1, 'IKM', 'Indemnite kilometrique montagne', 'Indemnite kilometrique montagne', 'B2'), +(1, 'IKS', 'Indemnite kilometrique speciale (ski-pied-bac)', 'Indemnite kilometrique speciale (ski-pied-bac)', 'B2'), +(1, 'IMD', 'Forfait intervention duree < ou = 12h', 'Forfait intervention duree < ou = 12h', 'B2'), +(1, 'IMI', 'Forfait intervention duree < ou = 12h prive medic', 'Forfait intervention duree < ou = 12h prive medic', 'B2'), +(1, 'IMP', 'Implantologie', 'Implantologie', 'B2'), +(1, 'ING', 'Garde ambulanciere', 'Garde ambulanciere', 'B2'), +(1, 'INO', 'Actes inlay-onlay', 'Actes inlay-onlay', 'B2'), +(1, 'IPD', 'Forfait intervention, 24h > duree > 12h', 'Forfait intervention, 24h > duree > 12h', 'B2'), +(1, 'IVB', 'Verification biologique - ivg', 'Verification biologique - ivg', 'B2'), +(1, 'IVE', 'Verification echographique - ivg', 'Verification echographique - ivg', 'B2'), +(1, 'K', 'Actes de specialite', 'Actes de specialite', 'B2'), +(1, 'KA', 'Actes de chirurgie d''urgence', 'Actes de chirurgie d''urgence', 'B2'), +(1, 'KB', 'Prelevement directeur de laboratoire', 'Prelevement directeur de laboratoire', 'B2'), +(1, 'KC', 'Actes de chirurgie dentaire par stomatologue', 'Actes de chirurgie dentaire par stomatologue', 'B2'), +(1, 'KCC', 'Actes specifiques des chirurgiens', 'Actes specifiques des chirurgiens', 'B2'), +(1, 'KE', 'Actes d''echographie, ecotomographie ou doppler', 'Actes d''echographie, ecotomographie ou doppler', 'B2'), +(1, 'KGP', 'Kit anti grippe', 'Kit anti grippe', 'B2'), +(1, 'KMB', 'Prelevement par ponction veineuse directe pour un medecin biologiste', 'Prelevement par ponction veineuse directe pour un medecin biologiste', 'B2'), +(1, 'KMO', 'Acte en k pour phoniatre', 'Acte en k pour phoniatre', 'B2'), +(1, 'KTH', 'Pratiques medicales complementaires en cure thermale', 'Pratiques medicales complementaires en cure thermale', 'B2'), +(1, 'LAI', 'Lait humain', 'Lait humain', 'B2'), +(1, 'LEN', 'Lentilles optiques', 'Lentilles optiques', 'B2'), +(1, 'LTD', 'Location ligne telephonique dediee', 'Location ligne telephonique dediee', 'B2'), +(1, 'LUN', 'Monture optique (titre ii - chapitre 2 de la lpp)', 'Monture optique (titre ii - chapitre 2 de la lpp)', 'B2'), +(1, 'MA', 'Majoration pour astreinte actes techniques', 'Majoration pour astreinte actes techniques', 'B2'), +(1, 'MAC', 'Materiels et appareils de contention', 'Materiels et appareils de contention', 'B2'), +(1, 'MAD', 'Materiels et appareils de traitements divers', 'Materiels et appareils de traitements divers', 'B2'), +(1, 'MAF', 'Majoration annuelle famille', 'Majoration annuelle famille', 'B2'), +(1, 'MAP', 'Majoration anatomo-cyto-pathologie', 'Majoration anatomo-cyto-pathologie', 'B2'), +(1, 'MAR', 'Marge forfaitaire', 'Marge forfaitaire', 'B2'), +(1, 'MAS', 'Majoration annuelle de synthese', 'Majoration annuelle de synthese', 'B2'), +(1, 'MAU', 'Majoration pour acte unique', 'Majoration pour acte unique', 'B2'), +(1, 'MBB', 'Majoration nourrisson avant 8 jours', 'Majoration nourrisson avant 8 jours', 'B2'), +(1, 'MCC', 'Majoration coordination cardiologue', 'Majoration coordination cardiologue', 'B2'), +(1, 'MCD', 'Majoration specifique pds cliniques dentistes', 'Majoration specifique pds cliniques dentistes', 'B2'), +(1, 'MCE', 'Majoration consultation endocrino', 'Majoration consultation endocrino', 'B2'), +(1, 'MCG', 'Majoration coordination generaliste', 'Majoration coordination generaliste', 'B2'), +(1, 'MCI', 'Majoration de coordination et d''environnement de soins infirmier', 'Majoration de coordination et d''environnement de soins infirmier', 'B2'), +(1, 'MCS', 'Majoration coordination specialiste', 'Majoration coordination specialiste', 'B2'), +(1, 'MD', 'Majoration de deplacement', 'Majoration de deplacement', 'B2'), +(1, 'MDD', 'Majoration de deplacement de dimanche et ferie', 'Majoration de deplacement de dimanche et ferie', 'B2'), +(1, 'MDE', 'Majoration de deplacement pour environnement', 'Majoration de deplacement pour environnement', 'B2'), +(1, 'MDI', 'Majoration de deplacement de mi-nuit 0 a 6 h', 'Majoration de deplacement de mi-nuit 0 a 6 h', 'B2'), +(1, 'MDN', 'Majoration de deplacement de nuit', 'Majoration de deplacement de nuit', 'B2'), +(1, 'MG', 'Majoration pour garde', 'Majoration pour garde', 'B2'), +(1, 'MGC', 'Forfait annuel migac', 'Forfait annuel migac', 'B2'), +(1, 'MGE', 'Majoration generaliste enfant', 'Majoration generaliste enfant', 'B2'), +(1, 'MHU', 'Medicament homeopathique unitaire (a 35 %)', 'Medicament homeopathique unitaire (a 35 %)', 'B2'), +(1, 'MIC', 'Majoration consultation longue et complexe par mt d''un patient insuffisant cardiaque apres hospitalisation pour decompensation', 'Majoration consultation longue et complexe par mt d''un patient insuffisant cardiaque apres hospitalisation pour decompensation', 'B2'), +(1, 'MK1', 'Cures thermales forfait kine 18 seances collectives', 'Cures thermales forfait kine 18 seances collectives', 'B2'), +(1, 'MK2', 'Cures thermales forfait kine 18 seances individuelles', 'Cures thermales forfait kine 18 seances individuelles', 'B2'), +(1, 'MK3', 'Cures thermales forfait kine 9 seances collectives', 'Cures thermales forfait kine 9 seances collectives', 'B2'), +(1, 'MK4', 'Cures thermales forfait kine (9 seances individuelles)', 'Cures thermales forfait kine (9 seances individuelles)', 'B2'), +(1, 'MM', 'Majoration milieu de nuit', 'Majoration milieu de nuit', 'B2'), +(1, 'MNO', 'Majoration nourisson generaliste', 'Majoration nourisson generaliste', 'B2'), +(1, 'MNP', 'Majoration nourisson pediatre', 'Majoration nourisson pediatre', 'B2'), +(1, 'MPC', 'Majoration provisoire cliniciens', 'Majoration provisoire cliniciens', 'B2'), +(1, 'MPE', 'Majoration pediatre enfant', 'Majoration pediatre enfant', 'B2'), +(1, 'MPF', 'Majoration premiere consultation famille', 'Majoration premiere consultation famille', 'B2'), +(1, 'MPI', 'Majoration pharmacie des iles', 'Majoration pharmacie des iles', 'B2'), +(1, 'MPJ', 'Majoration provisoire cliniciens pour - 16ans', 'Majoration provisoire cliniciens pour - 16ans', 'B2'), +(1, 'MPP', 'Majoration de suivi des enfants grands prematures ou atteints de pathologie congenitale grave', 'Majoration grands prema ou patho congenitale', 'B2'), +(1, 'MRD', 'Medecin referent debut', 'Medecin referent debut', 'B2'), +(1, 'MRF', 'Medecin referent fin', 'Medecin referent fin', 'B2'), +(1, 'MSH', 'Majoration de suivi des enfants grands prematures ou atteints de pathologie congenitale grave', 'Majoration grands prema ou patho congenitale', 'B2'), +(1, 'MTA', 'Majoration consultation appareillage', 'Majoration consultation appareillage', 'B2'), +(1, 'MTC', 'Majoration transitoire chirurgiens', 'Majoration transitoire chirurgiens', 'B2'), +(1, 'MTD', 'Acces direct specifique (medecin traitant)', 'Acces direct specifique (medecin traitant)', 'B2'), +(1, 'MTH', 'Hors residence habituel (medecin traitant)', 'Hors residence habituel (medecin traitant)', 'B2'), +(1, 'MTN', 'Nouveau medecin traitant', 'Nouveau medecin traitant', 'B2'), +(1, 'MTO', 'Patient oriente par le medecin traitant', 'Patient oriente par le medecin traitant', 'B2'), +(1, 'MTR', 'Medecin traitant remplace', 'Medecin traitant remplace', 'B2'), +(1, 'MTU', 'Urgence (medecin traitant)', 'Urgence (medecin traitant)', 'B2'), +(1, 'MU', 'Majoration d''urgence', 'Majoration d''urgence', 'B2'), +(1, 'NN1', 'Supplement neonatologie 1', 'Supplement neonatologie 1', 'B2'), +(1, 'NN2', 'Supplement neonatologie 2', 'Supplement neonatologie 2', 'B2'), +(1, 'NN3', 'Supplement neonatologie 3', 'Supplement neonatologie 3', 'B2'), +(1, 'NUT', 'Aliment dietetique', 'Aliment dietetique', 'B2'), +(1, 'OMJ', 'Aide outil de mise a jour vitale', 'Aide outil de mise a jour vitale', 'B2'), +(1, 'OP1', 'Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu', 'Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu', 'B2'), +(1, 'OP2', 'Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu', 'Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu', 'B2'), +(1, 'OP3', 'Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu', 'Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu', 'B2'), +(1, 'OP4', 'Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu', 'Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu', 'B2'), +(1, 'OP5', 'Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu', 'Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu', 'B2'), +(1, 'OP6', 'Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu', 'Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu', 'B2'), +(1, 'OP7', 'Forfait optique no7 multifocaux cmu', 'Forfait optique no7 multifocaux cmu', 'B2'), +(1, 'OPM', 'Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu', 'Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu', 'B2'), +(1, 'OPT', 'Optique (titre ii - chapitre 2 de la lpp) hors verres et montures', 'Optique (titre ii - chapitre 2 de la lpp) hors verres et montures', 'B2'), +(1, 'ORP', 'Orthoprotheses (titre ii - chapitre 7 de la lpp)', 'Orthoprotheses (titre ii - chapitre 7 de la lpp)', 'B2'), +(1, 'ORT', 'Orthopedie dento-faciale par stomatologue', 'Orthopedie dento-faciale par stomatologue', 'B2'), +(1, 'OV1', 'Forfait optique enfant no1 unifocaux (cmu)', 'Forfait optique enfant no1 unifocaux (cmu)', 'B2'), +(1, 'OV2', 'Forfait optique enfant no2 unifocaux (cmu)', 'Forfait optique enfant no2 unifocaux (cmu)', 'B2'), +(1, 'OV3', 'Forfait optique enfant no3 unifocaux (cmu)', 'Forfait optique enfant no3 unifocaux (cmu)', 'B2'), +(1, 'OV4', 'Forfait optique enfant no4 unifocaux (cmu)', 'Forfait optique enfant no4 unifocaux (cmu)', 'B2'), +(1, 'OV5', 'Forfait optique enfant no5 unifocaux (cmu)', 'Forfait optique enfant no5 unifocaux (cmu)', 'B2'), +(1, 'OV6', 'Forfait optique enfant no6 unifocaux (cmu)', 'Forfait optique enfant no6 unifocaux (cmu)', 'B2'), +(1, 'OV7', 'Forfait optique enfant no7 unifocaux (cmu)', 'Forfait optique enfant no7 unifocaux (cmu)', 'B2'), +(1, 'OV8', 'Forfait optique enfant no8 unifocaux (cmu)', 'Forfait optique enfant no7 multifocaux (cmu)', 'B2'), +(1, 'OV9', 'Forfait optique enfant no9 unifocaux (cmu)', 'Forfait optique enfant no7 multifocaux (cmu)', 'B2'), +(1, 'OVA', 'Forfait optique enfant a unifocaux (cmu)', 'Forfait optique enfant a multifocaux (cmu)', 'B2'), +(1, 'OVB', 'Forfait optique enfant b unifocaux (cmu)', 'Forfait optique enfant b multifocaux (cmu)', 'B2'), +(1, 'P', 'Actes anatomo-cyto-pathologie', 'Actes anatomo-cyto-pathologie', 'B2'), +(1, 'PA', 'Ortheses (titre ii - chapitre 1 de la lpp)', 'Ortheses (titre ii - chapitre 1 de la lpp)', 'B2'), +(1, 'PAE', 'Participation assure pour soins externes en etablissement ex dg', 'Participation assure pour soins externes en etablissement ex dg', 'B2'), +(1, 'PAH', 'Participation assure pour hospitalisation en etablissement ex dg', 'Participation assure pour hospitalisation en etablissement ex dg', 'B2'), +(1, 'PAJ', 'Participation assure pour hospitalisation pour benef alsace moselle', 'Participation assure pour hospitalisation pour benef alsace moselle', 'B2'), +(1, 'PAL', 'Participation assure pour soins externes pour benef alsace moselle', 'Participation assure pour soins externes pour benef alsace moselle', 'B2'), +(1, 'PAM', 'Protheses amovibles definitives metalliques', 'Protheses amovibles definitives metalliques', 'B2'), +(1, 'PAN', 'Pansements (titre i - chapitre 4 de la lpp)', 'Pansements (titre i - chapitre 4 de la lpp)', 'B2'), +(1, 'PAP', 'Participation assure', 'Participation assure', 'B2'), +(1, 'PAR', 'Protheses amovibles definitives resine', 'Protheses amovibles definitives resine', 'B2'), +(1, 'PAS', 'Participation assure sejour', 'Participation assure sejour', 'B2'), +(1, 'PAT', 'Participation assure transitoire', 'Participation assure transitoire', 'B2'), +(1, 'PAU', 'Prothese auditive (titre ii - chapitre 3 de la lpp)', 'Prothese auditive (titre ii - chapitre 3 de la lpp)', 'B2'), +(1, 'PAV', 'Participation assure pour soins de ville et soins externes', 'Participation assure pour soins de ville et soins externes', 'B2'), +(1, 'PB', 'Prelevement sanguin par directeur de laboratoire non medecin', 'Prelevement sanguin par directeur de laboratoire non medecin', 'B2'), +(1, 'PDM', 'Dispositif medical', 'Dispositif medical', 'B2'), +(1, 'PDT', 'Protheses dentaires provisoires', 'Protheses dentaires provisoires', 'B2'), +(1, 'PEX', 'Prothese externe non orthopedique (titre ii - chapitre 4 de la lpp)', 'Prothese externe non orthopedique (titre ii - chapitre 4 de la lpp)', 'B2'), +(1, 'PFC', 'Protheses fixes ceramiques', 'Protheses fixes ceramiques', 'B2'), +(1, 'PFM', 'Protheses fixes metalliques', 'Protheses fixes metalliques', 'B2'), +(1, 'PGE', 'Pratique de geolocalisation par dispositif embarque', 'Pratique de geolocalisation par dispositif embarque', 'B2'), +(1, 'PH1', 'Pharmacie 100%', 'Pharmacie 100%', 'B2'), +(1, 'PH2', 'Pharmacie vignette orange 15%', 'Pharmacie vignette orange 15%', 'B2'), +(1, 'PH4', 'Pharmacie vignette bleue 35%', 'Pharmacie vignette bleue 35%', 'B2'), +(1, 'PH7', 'Pharmacie vignette blanche 65%', 'Pharmacie vignette blanche 65%', 'B2'), +(1, 'PH8', 'Pharmacie facturee en sus du ghs', 'Pharmacie facturee en sus du ghs', 'B2'), +(1, 'PH9', 'Pharmacie facturee en sus', 'Pharmacie facturee en sus', 'B2'), +(1, 'PHA', 'Forfait pharmacie accouchement a domicile', 'Forfait pharmacie accouchement a domicile', 'B2'), +(1, 'PHD', 'Pharmacie hospitaliere derogatoire', 'Pharmacie hospitaliere derogatoire', 'B2'), +(1, 'PHH', 'Pharmacie hospitaliere retrocedee (taux 100%)', 'Pharmacie hospitaliere retrocedee (taux 100%)', 'B2'), +(1, 'PHI', 'Medicament avec autorisation d''importation', 'Medicament avec autorisation d''importation', 'B2'), +(1, 'PHJ', 'Forfait pharmaceutique journalier', 'Forfait pharmaceutique journalier', 'B2'), +(1, 'PHM', 'Preparation hospitaliere magistrale', 'Preparation hospitaliere magistrale', 'B2'), +(1, 'PHN', 'Pharmacie non remboursable', 'Pharmacie non remboursable', 'B2'), +(1, 'PHP', 'Preparation hospitaliere', 'Preparation hospitaliere', 'B2'), +(1, 'PHQ', 'Pharmacie hospitaliere retrocedee (taux 35%)', 'Pharmacie hospitaliere retrocedee (taux 35%)', 'B2'), +(1, 'PHS', 'Pharmacie hospitaliere retrocedee (taux 65%)', 'Pharmacie hospitaliere retrocedee (taux 65%)', 'B2'), +(1, 'PHT', 'Pharmacie hospitaliere mmh', 'Pharmacie hospitaliere mmh', 'B2'), +(1, 'PHU', 'Medicament avec autorisation temporaire d''utilisation nominative', 'Medicament avec autorisation temporaire d''utilisation nominative', 'B2'), +(1, 'PHY', 'Medicament AP AC', 'Medicament AP AC', 'B2'), +(1, 'PII', 'Implant inerte (titre iii - chapitres 1, 2 et 3 de la lpp)', 'Implant inerte (titre iii - chapitres 1, 2 et 3 de la lpp)', 'B2'), +(1, 'PIO', 'Processeur pour implant osteo-integre', 'Processeur pour implant osteo-integre', 'B2'), +(1, 'PJ', 'Frais de sejour', 'Frais de sejour', 'B2'), +(1, 'PJC', 'Ticket moderateur relatif aux frais de sejour', 'Ticket moderateur relatif aux frais de sejour', 'B2'), +(1, 'PJE', 'Frais de sejour ime', 'Frais de sejour ime', 'B2'), +(1, 'PM2', 'Preparation magistrale allopathique 15%', 'Preparation magistrale allopathique 15%', 'B2'), +(1, 'PM4', 'Preparation magistrale allopathique 35%', 'Preparation magistrale allopathique 35%', 'B2'), +(1, 'PME', 'Implant mu par electricite (titre iii - chapitre 4 de la lpp)', 'Implant mu par electricite (titre iii - chapitre 4 de la lpp)', 'B2'), +(1, 'PMH', 'Preparation magistrale homeopathique', 'Preparation magistrale homeopathique', 'B2'), +(1, 'PMO', 'Prescription etablie par medecin correspondant dans le parcours de soins', 'Prescription etablie par medecin correspondant dans le parcours de soins', 'B2'), +(1, 'PMP', 'Prescription etablie dans une autre situation du parcours de soins', 'Prescription etablie dans une autre situation du parcours de soins', 'B2'), +(1, 'PMR', 'Preparation magistrale', 'Preparation magistrale', 'B2'), +(1, 'PMS', 'Majoration pmsi', 'Majoration pmsi', 'B2'), +(1, 'PMT', 'Prescription etablie par le medecin traitant', 'Prescription etablie par le medecin traitant', 'B2'), +(1, 'PO1', 'Prelevement organe 1', 'Prelevement organe 1', 'B2'), +(1, 'PO2', 'Prelevement organe 2', 'Prelevement organe 2', 'B2'), +(1, 'PO3', 'Prelevement organe 3', 'Prelevement organe 3', 'B2'), +(1, 'PO4', 'Prelevement organe 4', 'Prelevement organe 4', 'B2'), +(1, 'PO5', 'Prelevement organe 5', 'Prelevement organe 5', 'B2'), +(1, 'PO6', 'Prelevement organe 6', 'Prelevement organe 6', 'B2'), +(1, 'PO7', 'Prelevement organe 7', 'Prelevement organe 7', 'B2'), +(1, 'PO8', 'Prelevement organe 8', 'Prelevement organe 8', 'B2'), +(1, 'PO9', 'Prelevement organe 9', 'Prelevement organe 9', 'B2'), +(1, 'POA', 'Prelevement d''organe a', 'Prelevement d''organe a', 'B2'), +(1, 'POC', 'Prothese oculaire et faciale (titre ii - chapitre 5 de la lpp)', 'Prothese oculaire et faciale (titre ii - chapitre 5 de la lpp)', 'B2'), +(1, 'POD', 'Acte de pedicure-podologue ( diabetique)', 'Acte de pedicure-podologue ( diabetique)', 'B2'), +(1, 'PPH', 'Plan personnalise de sante pharmacie', 'Plan personnalise de sante pharmacie', 'B2'), +(1, 'PPI', 'Preparation pharmaceutique individualisee (allergenes)', 'Preparation pharmaceutique individualisee (allergenes)', 'B2'), +(1, 'PPP', 'Prestation particuliere et pandemie', 'Prestation particuliere et pandemie', 'B2'), +(1, 'PPS', 'Plan personnalise de sante', 'Plan personnalise de sante', 'B2'), +(1, 'PRD', 'Permanence remuneration dimanche et ferie', 'Permanence remuneration dimanche et ferie', 'B2'), +(1, 'PRM', 'Permanence remuneration milieu de nuit', 'Permanence remuneration milieu de nuit', 'B2'), +(1, 'PRN', 'Permanence remuneration de nuit', 'Permanence remuneration de nuit', 'B2'), +(1, 'PRO', 'Prothese dentaire par stomatologue', 'Prothese dentaire par stomatologue', 'B2'), +(1, 'PRS', 'Prime responsabilite professionnelle specialiste', 'Prime responsabilite professionnelle specialiste', 'B2'), +(1, 'PRT', 'Permanence remuneration totale', 'Permanence remuneration totale', 'B2'), +(1, 'PSC', 'Prescription etablie hors parcours de soins', 'Prescription etablie hors parcours de soins', 'B2'), +(1, 'PSM', 'Pied support materiel', 'Pied support materiel', 'B2'), +(1, 'PY0', 'Forfait psychiatrie seance collective 1 intervenant', 'Forfait psychiatrie seance collective 1 intervenant', 'B2'), +(1, 'PY1', 'Forfait psychiatrie seance individuelle', 'Forfait psychiatrie seance individuelle', 'B2'), +(1, 'PY2', 'Forfait psychiatrie seance collective 2 intervenants', 'Forfait psychiatrie seance collective 2 intervenants', 'B2'), +(1, 'PY3', 'Forfait psychiatrie seance individuelle 2 intervenants', 'Forfait psychiatrie seance individuelle 2 intervenants', 'B2'), +(1, 'PY4', 'Forfait psychiatrie seance collective 1 intervenant - 6 a 8 h', 'Forfait psychiatrie seance collective 1 intervenant - 6 a 8 h', 'B2'), +(1, 'PY5', 'Forfait psychiatrie seance individuelle 1 intervenant - 6 a 8 h', 'Forfait psychiatrie seance individuelle 1 intervenant - 6 a 8 h', 'B2'), +(1, 'PY6', 'Forfait psychiatrie seance collective 2 intervenants - 6 a 8 h', 'Forfait psychiatrie seance collective 2 intervenants - 6 a 8 h', 'B2'), +(1, 'PY7', 'Forfait psychiatrie seance individuelle 2 intervenants - 6 a 8 h', 'Forfait psychiatrie seance individuelle 2 intervenants - 6 a 8 h', 'B2'), +(1, 'PY8', 'Forfait psychiatrie de securite sans hebergement', 'Forfait psychiatrie de securite sans hebergement', 'B2'), +(1, 'PY9', 'Forfait psychiatrie d''accueil et de suivi de nuit', 'Forfait psychiatrie d''accueil et de suivi de nuit', 'B2'), +(1, 'RAA', 'Remuneration additionnelle capi', 'Remuneration additionnelle capi', 'B2'), +(1, 'RAC', 'Remuneration des adherents au capi', 'Remuneration des adherents au capi', 'B2'), +(1, 'RAG', 'Forfait pour astreinte de nuit ou samedi matin en etablissement prive', 'Forfait pour astreinte de nuit ou samedi matin en etablissement prive', 'B2'), +(1, 'RAN', 'Forfait pour astreinte de debut de nuit en etablissement prive', 'Forfait pour astreinte de debut de nuit en etablissement prive', 'B2'), +(1, 'RAP', 'Supplement radiotherapie pediatrique', 'Supplement radiotherapie pediatrique', 'B2'), +(1, 'RC1', 'Responsabilite civile chirurgie 1', 'Responsabilite civile chirurgie 1', 'B2'), +(1, 'RC2', 'Responsabilite civile chirurgie 2', 'Responsabilite civile chirurgie 2', 'B2'), +(1, 'RCA', 'Responsabilite civile anesthesie reanimation', 'Responsabilite civile anesthesie reanimation', 'B2'), +(1, 'RCC', 'Redevance chef de clinique', 'Redevance chef de clinique', 'B2'), +(1, 'RCO', 'Responsabilite civile echographie obstetricale', 'Responsabilite civile echographie obstetricale', 'B2'), +(1, 'RCP', 'Responsabilite civile professionnelle', 'Responsabilite civile professionnelle', 'B2'), +(1, 'REA', 'Supplement reanimation', 'Supplement reanimation', 'B2'), +(1, 'REG', 'Forfait regulation', 'Forfait regulation', 'B2'), +(1, 'REP', 'Reanimation pediatrique', 'Reanimation pediatrique', 'B2'), +(1, 'RGD', 'Forfait pour garde de debut de nuit en etablissement prive', 'Forfait pour garde de debut de nuit en etablissement prive', 'B2'), +(1, 'RGN', 'Forfait pour garde de nuit ou samedi matin en etablissement prive', 'Forfait pour garde de nuit ou samedi matin en etablissement prive', 'B2'), +(1, 'RMT', 'Remuneration medecin traitant', 'Remuneration medecin traitant', 'B2'), +(1, 'RNO', 'Renouvellement d''optique', 'Renouvellement d''optique', 'B2'), +(1, 'RPA', 'Remuneration pour astreinte en etablissement prive', 'Remuneration pour astreinte en etablissement prive', 'B2'), +(1, 'RPG', 'Remuneration pour garde en etablissement prive', 'Remuneration pour garde en etablissement prive', 'B2'), +(1, 'RPN', 'Reparations sur prothese', 'Reparations sur prothese', 'B2'), +(1, 'SC', 'Soins conservateurs par dentiste', 'Soins conservateurs par dentiste', 'B2'), +(1, 'SCM', 'Soins conservateurs par medecin', 'Soins conservateurs par medecin', 'B2'), +(1, 'SD', 'Seances de diagnostic', 'Seances de diagnostic', 'B2'), +(1, 'SDE', 'Soins dentaires', 'Soins dentaires', 'B2'), +(1, 'SE1', 'Forfait environnement hospitalier 1', 'Forfait environnement hospitalier 1', 'B2'), +(1, 'SE2', 'Forfait environnement hospitalier 2', 'Forfait environnement hospitalier 2', 'B2'), +(1, 'SE3', 'Forfait environnement hospitalier 3', 'Forfait environnement hospitalier 3', 'B2'), +(1, 'SE4', 'Forfait environnement hospitalier 4', 'Forfait environnement hospitalier 4', 'B2'), +(1, 'SE5', 'Forfait environnement hospitalier 5', 'Forfait environnement hospitalier 5', 'B2'), +(1, 'SE6', 'Forfait environnement hospitalier 6', 'Forfait environnement hospitalier 6', 'B2'), +(1, 'SE6', 'Forfait environnement hospitalier 6', 'Forfait environnement hospitalier 6', 'B2'), +(1, 'SE7', 'Forfait environnement hospitalier 7', 'Forfait environnement hospitalier 7', 'B2'), +(1, 'SES', 'Suite examen de sante', 'Suite examen de sante', 'B2'), +(1, 'SF', 'Actes de sage-femme', 'Actes de sage-femme', 'B2'), +(1, 'SFC', 'Supplement forfait chimiotherapie', 'Supplement forfait chimiotherapie', 'B2'), +(1, 'SFI', 'Soins infirmiers par sage-femme', 'Soins infirmiers par sage-femme', 'B2'), +(1, 'SHO', 'Supplement chambre particuliere pour raison therapeutique', 'Supplement chambre particuliere pour raison therapeutique', 'B2'), +(1, 'SMU', 'Transport par smur', 'Transport par smur', 'B2'), +(1, 'SNG', 'Sang plasma et derives', 'Sang plasma et derives', 'B2'), +(1, 'SNS', 'Frais de seance de soins', 'Frais de seance de soins', 'B2'), +(1, 'SOD', 'Outils de mise a jour pharmaciens specificites dom', 'Outils de mise a jour pharmaciens specificites dom', 'B2'), +(1, 'SP', 'Examen de suivi postnatal', 'Examen de suivi postnatal', 'B2'), +(1, 'SPR', 'Actes de prothese dentaire par chirurgien dentiste', 'Actes de prothese dentaire par chirurgien dentiste', 'B2'), +(1, 'SRA', 'Supplement reanimation', 'Supplement reanimation', 'B2'), +(1, 'SRC', 'Supplement surveillance continue', 'Supplement surveillance continue', 'B2'), +(1, 'SSC', 'Supplement soins continus', 'Supplement soins continus', 'B2'), +(1, 'SSM', 'Supplement pour surveillance malade', 'Supplement pour surveillance malade', 'B2'), +(1, 'STF', 'Forfait soins intensifs', 'Forfait soins intensifs', 'B2'), +(1, 'STH', 'Forfait surveillance medicale thermale', 'Forfait surveillance medicale thermale', 'B2'), +(1, 'SZH', 'Supplement Zone Haute', 'Supplement Zone Haute', 'B2'), +(1, 'TB', 'Prelevement sanguin par technicien de laboratoire', 'Prelevement sanguin par technicien de laboratoire', 'B2'), +(1, 'TCP', 'Acte de tele consultation', 'Acte de tele consultation', 'B2'), +(1, 'TDR', 'Test de diagnostic rapide (acte gratuit)', 'Test de diagnostic rapide (acte gratuit)', 'B2'), +(1, 'TEP', 'Acte de tele expertise', 'Acte de tele expertise', 'B2'), +(1, 'TH1', 'Cures thermales forfait global', 'Cures thermales forfait global', 'B2'), +(1, 'TH2', 'Cures thermales forfait global + kine', 'Cures thermales forfait global + kine', 'B2'), +(1, 'TH3', 'Cures thermales forfait 2eme orientation', 'Cures thermales forfait 2eme orientation', 'B2'), +(1, 'TH4', 'Cures thermales forfait global + kine', 'Cures thermales forfait global + kine', 'B2'), +(1, 'TH5', 'Cures thermales forfait 72 seances hydro', 'Cures thermales forfait 72 seances hydro', 'B2'), +(1, 'THR', 'Forfait surveillance medicale reduit 2eme orientation', 'Forfait surveillance medicale reduit 2eme orientation', 'B2'), +(1, 'TJC', 'Tarif journalier complementaire', 'Tarif journalier complementaire', 'B2'), +(1, 'TNS', 'Traitement nicotinique de substitution', 'Traitement nicotinique de substitution', 'B2'), +(1, 'TO', 'Traitements d''orthopedie dentofaciale par chirurgien dentiste', 'Traitements d''orthopedie dentofaciale par chirurgien dentiste', 'B2'), +(1, 'TSG', 'Frais transport produits sanguins', 'Frais transport produits sanguins', 'B2'), +(1, 'TTH', 'Frais de transport pour cure thermale', 'Frais de transport pour cure thermale', 'B2'), +(1, 'TXA', 'Taxi tarif a', 'Taxi tarif a', 'B2'), +(1, 'TXB', 'Taxi tarif b', 'Taxi tarif b', 'B2'), +(1, 'TXC', 'Taxi tarif c', 'Taxi tarif c', 'B2'), +(1, 'TXD', 'Taxi tarif d', 'Taxi tarif d', 'B2'), +(1, 'TXF', 'Taxi tarif f', 'Taxi tarif f', 'B2'), +(1, 'TXI', 'Transport par taxi', 'Transport par taxi', 'B2'), +(1, 'UPH', 'Urgence pharmacie', 'Urgence pharmacie', 'B2'), +(1, 'V', 'Visite', 'Visite', 'B2'), +(1, 'VA', 'Visite d''urgence (sur site experimental)', 'Visite d''urgence (sur site experimental)', 'B2'), +(1, 'VAC', 'Acte de vaccination grippe h1n1', 'Acte de vaccination grippe h1n1', 'B2'), +(1, 'VDC', 'Videocapsule en cabinet de ville', 'Videocapsule en cabinet de ville', 'B2'), +(1, 'VDE', 'Videocapsule en etablissement', 'Videocapsule en etablissement', 'B2'), +(1, 'VEH', 'Vehicule pour handicapes physiques (titre iv de la lpp)', 'Vehicule pour handicapes physiques (titre iv de la lpp)', 'B2'), +(1, 'VER', 'Verres optiques (titre ii - chapitre 2 de la lpp)', 'Verres optiques (titre ii - chapitre 2 de la lpp)', 'B2'), +(1, 'VGI', 'Remuneration vaccination grippe a infirmiers liberaux', 'Remuneration vaccination grippe a infirmiers liberaux', 'B2'), +(1, 'VGM', 'Remuneration vaccination grippe a medecin', 'Remuneration vaccination grippe a medecin', 'B2'), +(1, 'VL', 'Visite longue et complexe', 'Visite longue et complexe', 'B2'), +(1, 'VNP', 'Visite neuropsychiatre', 'Visite neuropsychiatre', 'B2'), +(1, 'VRD', 'Majoration visite regulee ferie et dimanche', 'Majoration visite regulee ferie et dimanche', 'B2'), +(1, 'VRM', 'Majoration visite regulee milieu de nuit', 'Majoration visite regulee milieu de nuit', 'B2'), +(1, 'VRN', 'Majoration visite regulee nuit', 'Majoration visite regulee nuit', 'B2'), +(1, 'VRS', 'Majoration visite regulee du samedi apres-midi', 'Majoration visite regulee du samedi apres-midi', 'B2'), +(1, 'VS', 'Visite specialiste', 'Visite specialiste', 'B2'), +(1, 'VSL', 'Transport par vehicule sanitaire leger', 'Transport par vehicule sanitaire leger', 'B2'), +(1, 'Z', 'Actes de radiologie dentaire', 'Actes de radiologie dentaire', 'B2'), +(1, 'ZFU', 'Contrat de bonnes pratiques en zone franche urbaine ', 'Contrat de bonnes pratiques en zone franche urbaine ', 'B2') +; + +-- 3/3 : Màj de la table iCTI +UPDATE activite.t_prestations SET + code = w_dbsetup.code, + texte = w_dbsetup.texte, texte_court = w_dbsetup.texte_court +FROM w_dbsetup +WHERE w_dbsetup.oid = t_prestations.oid AND w_dbsetup.oid = 0; + +UPDATE activite.t_prestations SET + texte = w_dbsetup.texte, + texte_court = w_dbsetup.texte, + norme = 'B2' +FROM w_dbsetup +WHERE 1=1 + AND activite.t_prestations.code = w_dbsetup.code + AND activite.t_prestations.texte IS DISTINCT FROM w_dbsetup.texte +; + +INSERT INTO activite.t_prestations(oid, code, texte, texte_court, norme) + SELECT oid, code, texte, texte_court, norme + FROM w_dbsetup + WHERE 1=1 + AND oid = 0 + AND oid NOT IN (SELECT oid FROM activite.t_prestations) +; + +INSERT INTO activite.t_prestations(code, texte, texte_court, norme) + SELECT code, texte, texte_court, norme + FROM w_dbsetup + WHERE 1=1 + AND oid <> 0 + AND code NOT IN (SELECT code FROM activite.t_prestations) +; + +SELECT activite.cti_update_schema_classes('PRESTA_C'); \ No newline at end of file diff --git a/db/data/dbdata_activite_t_rapports.SQL b/db/data/dbdata_activite_t_rapports.SQL new file mode 100644 index 0000000..8a48ef4 --- /dev/null +++ b/db/data/dbdata_activite_t_rapports.SQL @@ -0,0 +1,150 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + CASE WHEN t_rapports.oid = 0 THEN t_rapports.oid ELSE 1 END AS oid, + t_rapports.code, + t_rapports.texte, + t_rapports.is_cti, + t_rapports.is_essentiel, + t_rapports.essentiel_date_level, + t_rapports.colonnes_essentiel, + t_rapports.entete, + t_rapports.entete_2, + CASE WHEN t_rapports.group_id = 0 THEN t_rapports.group_id ELSE 1 END AS group_id, + t_rapports.is_hide, + array_to_string( + ARRAY[ + COALESCE(t_indicateur_condition_1.external_code::text,''), + COALESCE(t_indicateur_condition_2.external_code::text,''), + COALESCE(t_indicateur_condition_3.external_code::text,''), + COALESCE(t_indicateur_condition_4.external_code::text,'') + ] + ,'||') AS rapport_indicateur_condition_code, + t_rapports.label, + array_to_string(serie_entete,'||') AS serie_entete, + t_rapports.colonnes_essentiel_style + FROM activite.t_rapports + LEFT JOIN activite.t_indicateur_condition t_indicateur_condition_1 ON t_rapports.rapport_indicateur_condition_id[1] = t_indicateur_condition_1.oid + LEFT JOIN activite.t_indicateur_condition t_indicateur_condition_2 ON t_rapports.rapport_indicateur_condition_id[2] = t_indicateur_condition_2.oid + LEFT JOIN activite.t_indicateur_condition t_indicateur_condition_3 ON t_rapports.rapport_indicateur_condition_id[3] = t_indicateur_condition_3.oid + LEFT JOIN activite.t_indicateur_condition t_indicateur_condition_4 ON t_rapports.rapport_indicateur_condition_id[4] = t_indicateur_condition_4.oid + WHERE (t_rapports.is_cti = '1' OR t_rapports.code LIKE 'CTI_%') AND + t_rapports.code <> 'CTI_PORTFO' + ORDER BY t_rapports.code + LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + oid, + code, + texte, + is_cti, + is_essentiel, + essentiel_date_level, + colonnes_essentiel, + entete, + entete_2, + group_id, + is_hide, + rapport_indicateur_condition_code, + label, + serie_entete, + colonnes_essentiel_style +) +VALUES +(1, 'ACTI_ESS_1', 'CTI Essentiels Occupation (ne plus utiliser)', '1', '1', 'M', '', '', '', 1, '1', '||||||', '', '||', ''), +(1, 'ACTI_ESS_2', 'CTI Essentiels Activité DAF (ne plus utiliser)', '1', '1', 'M', '', '', '', 1, '1', '||||||', '', '||', ''), +(1, 'ACTI_ESS_3', 'CTI Essentiels Activité DIM (ne plus utiliser)', '1', '1', 'M', '', '', '', 1, '1', '||||||', '', '||', ''), +(1, 'ACTI_ESS_4', 'CTI Essentiels Activité Direction (ne plus utiliser)', '1', '1', 'M', '', '', '', 1, '1', '||||||', '', '||', ''), +(1, 'ACTI_ESS_5', 'CTI Essentiels Occupation SSR (ne plus utiliser)', '1', '1', 'M', '', '', '', 1, '1', '||||||', '', '||', ''), +(1, 'CTI_ESS_001', 'Occupation', '1', '1', 'M', '', '', '', 1, '0', '||||||', '', '||||||||||||||||', ''), +(1, 'CTI_ESS_002', 'Activité Direction (Date activité)', '1', '1', 'M', '', '', '', 1, '0', '||||||', '', '||', ''), +(1, 'CTI_ESS_003', 'Activité Direction (Date sortie)', '1', '1', 'M', '', '', '', 1, '0', '||||||', '', '||', ''), +(1, 'CTI_ESS_004', 'Activité Comptable (Date ventes)', '1', '1', 'M', '', '', '', 1, '0', '||||||', '', '||', ''), +(1, 'CTI_ESS_006', 'Séjours', '1', '1', 'M', 'ENTETE_ETENDUE|VAP100|DAM100|', '', '', 1, '0', '||||||', '', '||||||||||||||||', ''), +(1, 'CTI_EX1', 'CTI Exemple 1. Activité', '1', '0', 'M', '', '', '', 0, '0', '||||||', '', '||', ''), +(1, 'CTI_EX2', 'CTI Exemple 2. Occupation', '1', '0', 'M', '', '', '', 0, '0', '||||||', '', '||', ''), +(1, 'CTI_EX3', 'CTI Exemple 3. Activité', '1', '0', 'M', '', '', '', 0, '0', '||||||', '', '||', ''), +(1, 'CTI_EX4', 'CTI Exemple 4. Activité', '1', '0', 'M', '', '', '', 0, '0', '||||||', '', '||', ''), +(1, 'CTI_PF_AGG', 'CTI Portfolio', '1', '1', 'M', '', '', '', 1, '1', '||||||', '', '||', '') +; + +-- 3/3 : Màj de la table iCTI +ALTER TABLE w_dbsetup ADD COLUMN to_serie_entete text[]; +UPDATE w_dbsetup SET to_serie_entete = string_to_array(serie_entete,'||'); + + +ALTER TABLE w_dbsetup ADD COLUMN to_rapport_indicateur_condition_code text[]; +UPDATE w_dbsetup SET to_rapport_indicateur_condition_code = string_to_array(rapport_indicateur_condition_code,'||'); + +ALTER TABLE w_dbsetup ADD COLUMN to_rapport_indicateur_condition_id bigint[]; +UPDATE w_dbsetup SET to_rapport_indicateur_condition_id[1] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE t_indicateur_condition.code = to_rapport_indicateur_condition_code[1] AND to_rapport_indicateur_condition_code[1] <> ''; +UPDATE w_dbsetup SET to_rapport_indicateur_condition_id[2] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE t_indicateur_condition.code = to_rapport_indicateur_condition_code[2] AND to_rapport_indicateur_condition_code[2] <> ''; +UPDATE w_dbsetup SET to_rapport_indicateur_condition_id[3] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE t_indicateur_condition.code = to_rapport_indicateur_condition_code[3] AND to_rapport_indicateur_condition_code[3] <> ''; +UPDATE w_dbsetup SET to_rapport_indicateur_condition_id[4] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE t_indicateur_condition.code = to_rapport_indicateur_condition_code[4] AND to_rapport_indicateur_condition_code[4] <> ''; +UPDATE w_dbsetup SET to_rapport_indicateur_condition_id = array_remove(to_rapport_indicateur_condition_id,NULL); + +UPDATE activite.t_rapports SET + texte = w_dbsetup.texte, + is_cti = w_dbsetup.is_cti, + is_essentiel = w_dbsetup.is_essentiel, + essentiel_date_level = w_dbsetup.essentiel_date_level, + colonnes_essentiel = w_dbsetup.colonnes_essentiel, + entete = w_dbsetup.entete, + entete_2 = w_dbsetup.entete_2, + group_id = w_dbsetup.group_id, + rapport_indicateur_condition_id = to_rapport_indicateur_condition_id, + label = w_dbsetup.label, + serie_entete = to_serie_entete, + colonnes_essentiel_style = w_dbsetup.colonnes_essentiel_style +FROM w_dbsetup +WHERE t_rapports.code = w_dbsetup.code; + + +INSERT INTO activite.t_rapports(oid, code, texte, is_cti, is_essentiel) +SELECT oid, code, texte, is_cti, is_essentiel +FROM w_dbsetup +WHERE + oid = 0 AND + oid NOT IN (SELECT oid FROM activite.t_rapports); + + +INSERT INTO activite.t_rapports( + code, + texte, + is_cti, + is_essentiel, + essentiel_date_level, + colonnes_essentiel, + entete, + entete_2, + group_id, + is_hide, + rapport_indicateur_condition_id, + label, + serie_entete, + colonnes_essentiel_style + ) +SELECT + code, + texte, + is_cti, + is_essentiel, + essentiel_date_level, + colonnes_essentiel, + entete, + entete_2, + group_id, + is_hide, + to_rapport_indicateur_condition_id, + label, + to_serie_entete, + colonnes_essentiel_style +FROM w_dbsetup +WHERE + oid <> 0 AND + code NOT IN (SELECT code FROM activite.t_rapports); \ No newline at end of file diff --git a/db/data/dbdata_activite_t_rapports_rubriques.SQL b/db/data/dbdata_activite_t_rapports_rubriques.SQL new file mode 100644 index 0000000..9e3bd22 --- /dev/null +++ b/db/data/dbdata_activite_t_rapports_rubriques.SQL @@ -0,0 +1,1225 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + t_rapports.code AS rapport_code, + t_rapports_rubriques.numero_rubrique, + t_indicateurs.code AS indicateur_code, + COALESCE(t_indicateurs_associes.code, '') as indicateur_associe_code, + t_rapports_rubriques.entete, + t_rapports_rubriques.entete_etendue, + t_rapports_rubriques.output_format, + t_rapports_rubriques.width, + t_rapports_rubriques.row_height, + t_rapports_rubriques.padding, + t_rapports_rubriques.font_size, + t_rapports_rubriques.font_weight, + t_rapports_rubriques.border_thickness, + t_rapports_rubriques.color, + t_rapports_rubriques.background_color, + t_rapports_rubriques.base_nationale, + t_rapports_rubriques.base_nationale_qualifiee, + t_rapports_rubriques.viewlink, + t_rapports_rubriques.viewlink_label, + t_rapports_rubriques.viewlink_param, + t_rapports_rubriques.picto_enabled, + t_rapports_rubriques.positif_is_good, + t_rapports_rubriques.description, + t_rapports_rubriques.description_2, + t_rapports_rubriques.entete_etendue_2, + t_rapports_rubriques.output_format_2, + t_rapports_rubriques.picto_enabled_2, + t_rapports_rubriques.positif_is_good_2, + t_rapports_rubriques.is_hide, + t_rapports_rubriques.specific_viewlink, + t_rapports_rubriques.specific_viewlink_label, + t_rapports_rubriques.specific_viewlink_param, + array_to_string( + ARRAY[ + COALESCE(t_indicateur_condition_1.external_code::text,''), + COALESCE(t_indicateur_condition_2.external_code::text,''), + COALESCE(t_indicateur_condition_3.external_code::text,''), + COALESCE(t_indicateur_condition_4.external_code::text,'') + ],'||')::text AS indicateur_condition_external_code, + t_rapports_rubriques.erase_rapport_indicateur_condition, + t_rapports_rubriques.calc_formula, + t_rapports_rubriques.hide_on_zero_field, + t_rapports_rubriques.field_tag, + array_to_string( + ARRAY[ + COALESCE(t_indicateurs_serie_1.code,''), + COALESCE(t_indicateurs_serie_2.code,''), + COALESCE(t_indicateurs_serie_3.code,''), + COALESCE(t_indicateurs_serie_4.code,''), + COALESCE(t_indicateurs_serie_5.code,''), + COALESCE(t_indicateurs_serie_6.code,''), + COALESCE(t_indicateurs_serie_7.code,''), + COALESCE(t_indicateurs_serie_8.code,''), + COALESCE(t_indicateurs_serie_9.code,'') + ],'||')::text AS serie_indicateur_code, + array_to_string( + ARRAY[ + COALESCE(t_indicateurs_serie_1.table_name,''), + COALESCE(t_indicateurs_serie_2.table_name,''), + COALESCE(t_indicateurs_serie_3.table_name,''), + COALESCE(t_indicateurs_serie_4.table_name,''), + COALESCE(t_indicateurs_serie_5.table_name,''), + COALESCE(t_indicateurs_serie_6.table_name,''), + COALESCE(t_indicateurs_serie_7.table_name,''), + COALESCE(t_indicateurs_serie_8.table_name,''), + COALESCE(t_indicateurs_serie_9.table_name,'') + ],'||')::text AS serie_indicateur_table_name, + array_to_string(t_rapports_rubriques.serie_entete_etendue,'||')::text AS serie_entete_etendue, + array_to_string(t_rapports_rubriques.serie_description,'||')::text AS serie_description, + array_to_string(t_rapports_rubriques.serie_output_format,'||')::text AS serie_output_format, + array_to_string(t_rapports_rubriques.serie_picto_enabled,'||')::text AS serie_picto_enabled, + array_to_string(t_rapports_rubriques.serie_positif_is_good,'||')::text AS serie_positif_is_good + FROM + activite.t_rapports_rubriques + JOIN activite.t_rapports ON t_rapports_rubriques.rapport_id = t_rapports.oid + JOIN activite.t_indicateurs t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid + LEFT JOIN activite.t_indicateurs t_indicateurs_associes ON t_rapports_rubriques.indicateur_associe_id = t_indicateurs_associes.oid AND + t_indicateurs_associes.is_cti IS DISTINCT FROM '0' + LEFT JOIN activite.t_indicateur_condition t_indicateur_condition_1 ON t_rapports_rubriques.indicateur_condition_id[1] = t_indicateur_condition_1.oid + LEFT JOIN activite.t_indicateur_condition t_indicateur_condition_2 ON t_rapports_rubriques.indicateur_condition_id[2] = t_indicateur_condition_2.oid + LEFT JOIN activite.t_indicateur_condition t_indicateur_condition_3 ON t_rapports_rubriques.indicateur_condition_id[3] = t_indicateur_condition_3.oid + LEFT JOIN activite.t_indicateur_condition t_indicateur_condition_4 ON t_rapports_rubriques.indicateur_condition_id[4] = t_indicateur_condition_4.oid + LEFT JOIN activite.t_indicateurs t_indicateurs_serie_1 ON t_rapports_rubriques.serie_indicateur_id[1] = t_indicateurs_serie_1.oid + LEFT JOIN activite.t_indicateurs t_indicateurs_serie_2 ON t_rapports_rubriques.serie_indicateur_id[2] = t_indicateurs_serie_2.oid + LEFT JOIN activite.t_indicateurs t_indicateurs_serie_3 ON t_rapports_rubriques.serie_indicateur_id[3] = t_indicateurs_serie_3.oid + LEFT JOIN activite.t_indicateurs t_indicateurs_serie_4 ON t_rapports_rubriques.serie_indicateur_id[4] = t_indicateurs_serie_4.oid + LEFT JOIN activite.t_indicateurs t_indicateurs_serie_5 ON t_rapports_rubriques.serie_indicateur_id[5] = t_indicateurs_serie_5.oid + LEFT JOIN activite.t_indicateurs t_indicateurs_serie_6 ON t_rapports_rubriques.serie_indicateur_id[6] = t_indicateurs_serie_6.oid + LEFT JOIN activite.t_indicateurs t_indicateurs_serie_7 ON t_rapports_rubriques.serie_indicateur_id[7] = t_indicateurs_serie_7.oid + LEFT JOIN activite.t_indicateurs t_indicateurs_serie_8 ON t_rapports_rubriques.serie_indicateur_id[8] = t_indicateurs_serie_8.oid + LEFT JOIN activite.t_indicateurs t_indicateurs_serie_9 ON t_rapports_rubriques.serie_indicateur_id[9] = t_indicateurs_serie_9.oid + WHERE 1=1 + AND t_rapports.is_cti = '1' + AND t_rapports.code <> 'CTI_PORTFO' + AND t_indicateurs.is_cti = '1' + AND t_indicateurs.code <> '' + ORDER BY + t_rapports.code, + t_indicateurs.code, + t_rapports_rubriques.numero_rubrique + LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + rapport_code, + numero_rubrique, + indicateur_code, + indicateur_associe_code, + entete, + entete_etendue, + output_format, + width, + row_height, + padding, + font_size, + font_weight, + border_thickness, + color, + background_color, + base_nationale, + base_nationale_qualifiee, + viewlink, + viewlink_label, + viewlink_param, + picto_enabled, + positif_is_good, + description, + description_2, + entete_etendue_2, + output_format_2, + picto_enabled_2, + positif_is_good_2, + is_hide, + specific_viewlink, + specific_viewlink_label, + specific_viewlink_param, + indicateur_condition_external_code, + erase_rapport_indicateur_condition, + calc_formula, + hide_on_zero_field, + field_tag, + serie_indicateur_code, + serie_indicateur_table_name, + serie_entete_etendue, + serie_description, + serie_output_format, + serie_picto_enabled, + serie_positif_is_good +) +VALUES +('ACTI_ESS_1', 4, 'CTI_ADM', '', '', 'Admissions période', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par étage', 'GROUPBY=ETA&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_ADM||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Admissions période||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 3, 'CTI_ADM_PRE', '', '', 'Admissions avant période', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par unité fonctionnelle', 'GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_ADM_PRE||||||||||||||||', '*CALC||||||||||||||||', 'Admissions avant période||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 5, 'CTI_DEP', '', '', 'Sorties période', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par médecin séjour', 'GROUPBY=MED&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DEP||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Sorties période||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 19, 'CTI_DEP', '', '', 'Sorties période', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Facturation par service de sortie', 'GROUPBY=SOR&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DEP||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Sorties période||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 28, 'CTI_DMSR', '', '', 'DMS hospitalisés', '#,0j', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par unité fonctionnelle', 'GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&JSI=2&VIEWTAB=1', '1', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DMSR||||||||||||||||', '*CALC||||||||||||||||', 'DMS hospitalisés||', '||', '#,0j||', '1||', '0||'), +('ACTI_ESS_1', 27, 'CTI_DMSTOT', '', '', 'DMS établissement (Ambulatoires + Hospit jour de sortie non inclus)', '#,0j', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par services', 'GROUPBY=SER&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1', '1', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DMSTOT||||||||||||||||', '*CALC||||||||||||||||', 'DMS établissement (Ambulatoires + Hospit jour de sortie non inclus)||', '||', '#,0j||', '1||', '0||'), +('ACTI_ESS_1', 25, 'CTI_NB6_JFSN', '', '', 'Journées hospitalisation facturées', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Facturation par mois', 'GROUPBY=NUMEROMOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB6_JFSN||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées hospitalisation facturées||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 15, 'CTI_NB6_JSN', '', '', 'Journées d''hospitalisation (jour sortie non inclus)', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Ocucpation par clé budgétaire', 'GROUPBY=ETA&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB6_JSN||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées d''hospitalisation (jour sortie non inclus)||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 10, 'CTI_NBAMB', '', '', 'Ambulatoires', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par étage de mouvement', 'GROUPBY=ETA&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBAMB||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Ambulatoires||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 31, 'CTI_NBDEAD', '', '', 'Nombre de décès', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par mode de sortie', 'GROUPBY=MODE_SORTIE&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&VIEWTAB=0', '1', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBDEAD||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Nombre de décès||', '||', '||', '1||', '0||'), +('ACTI_ESS_1', 8, 'CTI_NBENTDIR', '', '', 'Entrées hospitalisés', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par service de mouvement', 'GROUPBY=SER&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBENTDIR||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Entrées hospitalisés||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 12, 'CTI_NBEXT', '', '', 'Externes', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par mois', 'GROUPBY=NUMEROMOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=3', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBEXT||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Externes||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 24, 'CTI_NBJAS_JFSN', '', '', 'Journées hospitalisation', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', '', 'GROUPBY=ETA&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBJAS_JFSN||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées hospitalisation||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 23, 'CTI_NBJFSN', '', '', 'Journées hospitalisées facturées', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Facturation par domaine d''activité ATIH et par groupe d''activité ATIH', 'GROUPBY=GHMCLS09&GROUPBY_2=GHMCLS07&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBJFSN||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées hospitalisées facturées||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 14, 'CTI_NBJSN', '', '', 'Journées hospitalisés (jour sortie non inclus)', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par domaine d''activité ATIH et par groupe d''activité ATIH', 'GROUPBY=GHMCLS09&GROUPBY_2=GHMCLS07&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBJSN||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées hospitalisés (jour sortie non inclus)||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 22, 'CTI_NBJSNS', '', '', 'Journées hospitalisées', '#j', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Facturation par médecin séjour et par groupe d''activité ATIH', 'GROUPBY=MED&GROUPBY_2=GHMCLS07&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBJSNS||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées hospitalisées||', '||', '#j||', '0||', '0||'), +('ACTI_ESS_1', 11, 'CTI_NBSCE', '', '', 'Séances', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par médecin séjour', 'GROUPBY=MED&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSCE||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Séances||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 2, 'CTI_NBSEJO', '', '', 'Séjours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par services', 'GROUPBY=SER&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSEJO||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Séjours||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 9, 'CTI_NBSORDIR', '', '', 'Sorties hospitalisés', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par unité fonctionnelle de mouvement', 'GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSORDIR||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Sorties hospitalisés||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 13, 'CTI_NB_BEBE', '', '', 'Bébés', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par CMD', 'GROUPBY=CMD&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=3', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_BEBE||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Bébés||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 20, 'CTI_NB_FAC#2', '', '', 'Sorties période facturées', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Facturation par unité fonctionnelle', 'GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_FAC#2||||||||||||||||', 'SEJOURS||||||||||||||||', 'Sorties période facturées||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 30, 'CTI_PSEJFEM', '', '', 'Pourcentage de femmes', '#,0%', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000132', 'Population par âges', 'GROUPBY=AGE&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_PSEJFEM||||||||||||||||', '*CALC||||||||||||||||', 'Pourcentage de femmes||', '||', '#,0%||', '0||', '0||'), +('ACTI_ESS_1', 1, 'CTI_SEP', '', '', 'Séjours', '', 0, 26, 0, 14, 'bold', 2, '0x3399', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Séjours||', '||', '||', '||', '||'), +('ACTI_ESS_1', 7, 'CTI_SEP', '', '', 'Occupation', '', 0, 26, 0, 14, 'bold', 2, '0x3399', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Occupation||', '||', '||', '||', '||'), +('ACTI_ESS_1', 16, 'CTI_SEP', '', '', 'Taux d''occupation', '', 0, 26, 0, 14, 'bold', 2, '0x3399', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Taux d''occupation||', '||', '||', '||', '||'), +('ACTI_ESS_1', 18, 'CTI_SEP', '', '', 'Facturation', '', 0, 26, 0, 14, 'bold', 2, '0x3399', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Facturation||', '||', '||', '||', '||'), +('ACTI_ESS_1', 26, 'CTI_SEP', '', '', 'Durée moyenne de séjours', '', 0, 26, 0, 14, 'bold', 2, '0x3399', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Durée moyenne de séjours||', '||', '||', '||', '||'), +('ACTI_ESS_1', 29, 'CTI_SEP', '', '', 'Population', '', 0, 26, 0, 14, 'bold', 2, '0x3399', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Population||', '||', '||', '||', '||'), +('ACTI_ESS_1', 6, 'CTI_SOR_POST_PER', '', '', '', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par mois', 'GROUPBY=NUMEROMOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SOR_POST_PER||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '1||', '1||'), +('ACTI_ESS_1', 17, 'CTI_TX_HO', '', '', '', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000124', 'Localisation par etage et jour calendaire', 'GROUPBY=ETRA&GROUPBY_2=JOUR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_TOMOIS&TOPERIODE=VIEW.CURRENT_TOMOIS&JSI=2', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_TX_HO||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '1||', '1||'), +('ACTI_ESS_2', 4, 'CTI_MTFAC_C#4', '', '', 'C.A. Total', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par type de séjour et unité fonctionnelle', 'GROUPBY=TSE&GROUPBY_2=UF&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=4&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTFAC_C#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Total||', '||', '||', '1||', '1||'), +('ACTI_ESS_2', 2, 'CTI_NSFACT_CS#4', '', '', 'Séjours facturés', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par type de séjour et unité fonctionnelle', 'GROUPBY=TSE&GROUPBY_2=UF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=4&QUELMONTANT=1&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFACT_CS#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours facturés||', '||', '||', '1||', '1||'), +('ACTI_ESS_2', 6, 'CTI_PROTH_MT_FAC#4', '', '', 'C.A. prothèses', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation', 'GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=4&RUBRIQUE=#LICTI_PROTHESE_R&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_PROTH_MT_FAC#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. prothèses||', '||', '||', '1||', '1||'), +('ACTI_ESS_2', 8, 'CTI_SEH_MT_FAC#4', '', '', 'C.A. forfaits SE', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation', 'GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=4&RUBRIQUE=#LICTI_SE_R&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEH_MT_FAC#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. forfaits SE||', '||', '||', '1||', '1||'), +('ACTI_ESS_2', 1, 'CTI_SEP', '', '', 'Séjours', '', 0, 26, 0, 14, 'bold', 2, '0x3399', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Séjours||', '||', '||', '||', '||'), +('ACTI_ESS_2', 3, 'CTI_SEP', '', '', 'Chiffre d''affaires facturé', '', 0, 26, 0, 14, 'bold', 2, '0x3399', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Chiffre d''affaires facturé||', '||', '||', '||', '||'), +('ACTI_ESS_2', 9, 'CTI_SHO_MT_FAC#4', '', '', 'C.A. chambres particulières', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation', 'GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=4&RUBRIQUE=#LICTI_SHO_R&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SHO_MT_FAC#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. chambres particulières||', '||', '||', '1||', '1||'), +('ACTI_ESS_2', 10, 'CTI_SUPHOT_FAC#4', '', '', 'C.A. suppléments hôteliers', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation', 'GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=4&RUBRIQUE=#LICTI_SUPHOT_R&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SUPHOT_FAC#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. suppléments hôteliers||', '||', '||', '1||', '1||'), +('ACTI_ESS_2', 5, 'CTI_T2A_MT_FAC#4', '', '', 'C.A. T2A', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par spécilité médicale et médecin séjour', 'GROUPBY=SPM&GROUPBY_2=MED&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=4&RUBRIQUE=#LICTI_T2A_R&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_T2A_MT_FAC#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. T2A||', '||', '||', '1||', '1||'), +('ACTI_ESS_2', 7, 'CTI_UCD_MT_FAC#4', '', '', 'C.A. médicaments', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation', 'GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=4&RUBRIQUE=#LICTI_UCD_R&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_UCD_MT_FAC#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. médicaments||', '||', '||', '1||', '1||'), +('ACTI_ESS_2', 11, 'CTI_URG_MT_FAC#4', '', '', 'C.A. Urgences', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité du dernier mois par mois de sortie', 'GROUPBY=RUF&GROUPBY_2=MOISS&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_TOMOIS&TOPERIODE=VIEW.CURRENT_TOMOIS&QUELMONTANT=1&QUELLEDATE=4&RUBRIQUE=#LICTI_URG_R&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_URG_MT_FAC#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Urgences||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 21, 'CTI_MTENC_C#2', '', '', 'C.A. total', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par service de sortie CTI', 'GROUPBY=SOR&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=2', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTENC_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. total||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 11, 'CTI_MTFAC_C#2', '', '', 'C.A. total', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par service de sortie CTI et par service de sortie', 'GROUPBY=SORCLS04&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=2', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTFAC_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. total||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 30, 'CTI_MT_FAC_TOT#2', '', '', 'C.A. total', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par mois de sortie', 'GROUPBY=MOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MT_FAC_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. total||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 8, 'CTI_NB6_JFSN', '', '', 'Journées hospitalisation facturées', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', '', 'GROUPBY=MSOR&GROUPBY_2=MED&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB6_JFSN||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées hospitalisation facturées||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 7, 'CTI_NB6_JSN', '', '', 'Journées hospitalisation', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', '', 'GROUPBY=SORCLS04&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB6_JSN||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées hospitalisation||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 6, 'CTI_NBJFSN', '', '', 'Journées hospitalisées facturées', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', '', 'GROUPBY=GHMCLS09&GROUPBY_2=GHMCLS08&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBJFSN||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées hospitalisées facturées||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 5, 'CTI_NBJSN', '', '', 'Journées hospitalisées', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', '', 'GROUPBY=MED&GROUPBY_2=GHMCLS08&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBJSN||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées hospitalisées||', '||', '||', '0||', '0||'), +('ACTI_ESS_3', 4, 'CTI_NB_NFAC#2', '', '', 'Séjours non facturés', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par unité fonctionnelle', 'GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=2&QUELMONTANT=ENF', '1', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_NFAC#2||||||||||||||||', 'SEJOURS||||||||||||||||', 'Séjours non facturés||', '||', '||', '1||', '0||'), +('ACTI_ESS_3', 2, 'CTI_NB_SEJ_FAEN#2', '', '', 'Séjours sortis', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par type de séjour et par service de sortie', 'GROUPBY=TSE&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=2&QUELMONTANT=MF-ENF', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_FAEN#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours sortis||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 29, 'CTI_NB_SEJ_FAEN#2', '', '', 'Séjours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par type de séjour et par service de sortie', 'GROUPBY=TSE&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_FAEN#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 20, 'CTI_NB_SEJ_VAL#2', '', '', 'Séjours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par type de séjour et par service de sortie', 'GROUPBY=TSE&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=2', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_VAL#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours||', '||', '||', '0||', '0||'), +('ACTI_ESS_3', 10, 'CTI_NSFAC_C#2', '', '', 'Séjours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par domaine d''activité ATIH', 'GROUPBY=GHMCLS09&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=2', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 3, 'CTI_NSFAC_CS#2', '', '', 'Séjours facturés', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par type de séjour CTI et service de sortie', 'GROUPBY=SORCLS04&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=2', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC_CS#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours facturés||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 22, 'CTI_PROTH_MT_ENC#2', '', '', 'C.A. prothèses', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation CTI et par rubrique de facturation', 'GROUPBY=RUFCLS04&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_PROTHESE_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_PROTH_MT_ENC#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. prothèses||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 13, 'CTI_PROTH_MT_FAC#2', '', '', 'C.A. prothèses', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation CTI et par médecin séjour', 'GROUPBY=RUFCLS04&GROUPBY_2=MED&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=2&RUBRIQUE=#LICTI_PROTHESE_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_PROTH_MT_FAC#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. prothèses||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 32, 'CTI_PROTH_MT_TOT#2', '', '', 'C.A. prothèses', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation CTI et par médecin séjour', 'GROUPBY=RUFCLS04&GROUPBY_2=MED&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_PROTHESE_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_PROTH_MT_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. prothèses||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 24, 'CTI_SEH_MT_ENC#2', '', '', 'C.A. forfaits SE', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation', 'GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_SE_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEH_MT_ENC#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. forfaits SE||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 15, 'CTI_SEH_MT_FAC#2', '', '', 'C.A. forfaits SE', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation', 'GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=2&RUBRIQUE=#LICTI_SE_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEH_MT_FAC#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. forfaits SE||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 34, 'CTI_SEH_MT_TOT#2', '', '', 'C.A. forfaits SE', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation', 'GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_SE_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEH_MT_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. forfaits SE||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 1, 'CTI_SEP', '', '', 'Séjours', '', 0, 26, 0, 14, 'bold', 2, '0x3399', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Séjours||', '||', '||', '||', '||'), +('ACTI_ESS_3', 9, 'CTI_SEP', '', '', 'Chiffre d''affaires facturé', '', 0, 26, 0, 14, 'bold', 2, '0x3399', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Chiffre d''affaires facturé||', '||', '||', '||', '||'), +('ACTI_ESS_3', 19, 'CTI_SEP', '', '', 'Chiffre d''affaires valorisé', '', 0, 26, 0, 14, 'bold', 2, '0x3399', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Chiffre d''affaires valorisé||', '||', '||', '||', '||'), +('ACTI_ESS_3', 28, 'CTI_SEP', '', '', 'Chiffre d''affaires facturé et valorisé', '', 0, 26, 0, 14, 'bold', 2, '0x3399', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Chiffre d''affaires facturé et valorisé||', '||', '||', '||', '||'), +('ACTI_ESS_3', 25, 'CTI_SHO_MT_ENC#2', '', '', 'C.A. chambres particulières', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par service de sortie et par rubrique de facturation', 'GROUPBY=SOR&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_SHO_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SHO_MT_ENC#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. chambres particulières||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 16, 'CTI_SHO_MT_FAC#2', '', '', 'C.A. chambres particulières', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par service de sortie et par rubrique de facturation', 'GROUPBY=SOR&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=2&RUBRIQUE=#LICTI_SHO_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SHO_MT_FAC#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. chambres particulières||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 35, 'CTI_SHO_MT_TOT#2', '', '', 'C.A. chambres particulières', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par service de sortie et rubrique de facturation', 'GROUPBY=SOR&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_SHO_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SHO_MT_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. chambres particulières||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 26, 'CTI_SUPHOT_ENC#2', '', '', 'C.A. suppléments hôteliers', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par service de sortie et par rubrique de facturation CTI', 'GROUPBY=SOR&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_SUPHOT_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SUPHOT_ENC#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. suppléments hôteliers||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 17, 'CTI_SUPHOT_FAC#2', '', '', 'C.A. suppléments hôteliers', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par service de sortie CTI et par rubrique de facturation CTI', 'GROUPBY=SORCLS04&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=2&RUBRIQUE=#LICTI_SUPHOT_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SUPHOT_FAC#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. suppléments hôteliers||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 36, 'CTI_SUPHOT_TOT#2', '', '', 'C.A. suppléments hôteliers', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par service de sortie et rubrique de facturation CTI', 'GROUPBY=SOR&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_SUPHOT_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SUPHOT_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. suppléments hôteliers||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 12, 'CTI_T2A_MT_FAC#2', '', '', 'C.A. T2A', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation CTI et par rubrique de facturation', 'GROUPBY=RUFCLS04&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=2&RUBRIQUE=#LICTI_T2A_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_T2A_MT_FAC#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. T2A||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 31, 'CTI_T2A_MT_TOT#2', '', '', 'C.A. T2A', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation CTI et par rubrique de facturation', 'GROUPBY=RUFCLS04&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_T2A_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_T2A_MT_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. T2A||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 23, 'CTI_UCD_MT_ENC#2', '', '', 'C.A. médicaments', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par service de sortie et par rubrique de facturation CTI', 'GROUPBY=SOR&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_UCD_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_UCD_MT_ENC#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. médicaments||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 14, 'CTI_UCD_MT_FAC#2', '', '', 'C.A. médicaments', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par compte et par rubrique de facturation', 'GROUPBY=CPT&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=2&RUBRIQUE=#LICTI_UCD_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_UCD_MT_FAC#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. médicaments||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 33, 'CTI_UCD_MT_TOT#2', '', '', 'C.A. médicaments', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par compte et par rubrique de facturation', 'GROUPBY=CPT&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_UCD_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_UCD_MT_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. médicaments||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 27, 'CTI_URG_MT_ENC#2', '', '', 'C.A. urgences', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation', 'GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&VIEWTAB=1&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_URG_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_URG_MT_ENC#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. urgences||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 18, 'CTI_URG_MT_FAC#2', '', '', 'C.A. urgences', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation', 'GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&VIEWTAB=0&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=2&RUBRIQUE=#LICTI_URG_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_URG_MT_FAC#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. urgences||', '||', '||', '1||', '1||'), +('ACTI_ESS_3', 37, 'CTI_URG_MT_TOT#2', '', '', 'C.A. urgences', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation', 'GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&VIEWTAB=2&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_URG_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_URG_MT_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. urgences||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 17, 'CTI_MTENC_C#1', '', '', 'C.A. total', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par mois de sortie', 'GROUPBY=MOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=1', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTENC_C#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. total||', '||', '||', '0||', '0||'), +('ACTI_ESS_4', 6, 'CTI_MTFAC_C#1', '', '', 'C.A. total', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par classe de service de sortie CTI et par service de sortie', 'GROUPBY=SORCLS04&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTFAC_C#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. total||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 26, 'CTI_MT_FAC_TOT#1', '', '', 'C.A. total', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par mois de sortie', 'GROUPBY=MOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MT_FAC_TOT#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. total||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 2, 'CTI_NB_SEJ_FAEN#1', '', '', 'Séjours sortis', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par type de séjour et par service de sortie', 'GROUPBY=TSE&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=1&QUELMONTANT=MF-ENF', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_FAEN#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours sortis||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 25, 'CTI_NB_SEJ_FAEN#1', '', '', 'Séjours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par type de séjour et par service de sortie', 'GROUPBY=TSE&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_FAEN#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 16, 'CTI_NB_SEJ_VAL#1', '', '', 'Séjours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par type de séjour et par service de sortie', 'GROUPBY=TSE&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=1', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_VAL#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours||', '||', '||', '0||', '0||'), +('ACTI_ESS_4', 5, 'CTI_NSFAC_C#1', '', '', 'Séjours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par mois d''activité', 'GROUPBY=MOIA&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=1', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC_C#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours||', '||', '||', '0||', '0||'), +('ACTI_ESS_4', 3, 'CTI_NSFAC_CS#1', '', '', 'Séjours facturés', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par type de séjour CTI et par service de sortie', 'GROUPBY=SORCLS04&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC_CS#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours facturés||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 18, 'CTI_PROTH_MT_ENC#1', '', '', 'C.A. prothèses', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par rubrique de facturation CTI et par rubrique de facturation', 'GROUPBY=RUFCLS04&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_PROTHESE_R', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_PROTH_MT_ENC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. prothèses||', '||', '||', '0||', '0||'), +('ACTI_ESS_4', 9, 'CTI_PROTH_MT_FAC#1', '', '', 'C.A. prothèses', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par rubrique de facturation CTI et par médecin séjour', 'GROUPBY=RUFCLS04&GROUPBY_2=MED&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=1&RUBRIQUE=#LICTI_PROTHESE_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_PROTH_MT_FAC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. prothèses||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 29, 'CTI_PROTH_MT_TOT#1', '', '', 'C.A. prothèses', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par rubrique de facturation CTI et par médecin séjour', 'GROUPBY=RUFCLS04&GROUPBY_2=MED&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_PROTHESE_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_PROTH_MT_TOT#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. prothèses||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 7, 'CTI_RUBMED_MT_FAC#1', '', '', 'C.A. T2A', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par rubrique de facturation CTI et par rubrique de facturation', 'GROUPBY=RUFCLS04&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=1&RUBRIQUE=#LICTI_RUBMED_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_RUBMED_MT_FAC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. T2A||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 27, 'CTI_RUBMED_MT_TOT#1', '', '', 'C.A. T2A', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par rubrique de facturation CTI et par rubrique de facturation', 'GROUPBY=RUFCLS04&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_RUBMED_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_RUBMED_MT_TOT#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. T2A||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 20, 'CTI_SEH_MT_ENC#1', '', '', 'C.A. forfaits SE', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par rubrique de facturation', 'GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_SE_R', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEH_MT_ENC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. forfaits SE||', '||', '||', '0||', '0||'), +('ACTI_ESS_4', 11, 'CTI_SEH_MT_FAC#1', '', '', 'C.A. forfaits SE', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par rubrique de facturation', 'GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=1&RUBRIQUE=#LICTI_SE_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEH_MT_FAC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. forfaits SE||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 31, 'CTI_SEH_MT_TOT#1', '', '', 'C.A. forfaits SE', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par rubrique de facturation', 'GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_SE_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEH_MT_TOT#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. forfaits SE||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 1, 'CTI_SEP', '', '', 'Séjours', '', 0, 26, 0, 14, 'bold', 2, '0x3399', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Séjours||', '||', '||', '||', '||'), +('ACTI_ESS_4', 4, 'CTI_SEP', '', '', 'Chiffre d''affaires facturé', '', 0, 26, 0, 14, 'bold', 2, '0x3399', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Chiffre d''affaires facturé||', '||', '||', '||', '||'), +('ACTI_ESS_4', 15, 'CTI_SEP', '', '', 'Chiffre d''affaires valorisé', '', 0, 26, 0, 14, 'bold', 2, '0x3399', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Chiffre d''affaires valorisé||', '||', '||', '||', '||'), +('ACTI_ESS_4', 24, 'CTI_SEP', '', '', 'Chiffre d''affaires facturé et valorisé', '', 0, 26, 0, 14, 'bold', 2, '0x3399', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Chiffre d''affaires facturé et valorisé||', '||', '||', '||', '||'), +('ACTI_ESS_4', 21, 'CTI_SHO_MT_ENC#1', '', '', 'C.A. chambres particulières', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par service de sortie et par rubrique de facturation', 'GROUPBY=SOR&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_SHO_R', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SHO_MT_ENC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. chambres particulières||', '||', '||', '0||', '0||'), +('ACTI_ESS_4', 12, 'CTI_SHO_MT_FAC#1', '', '', 'C.A. chambres particulières', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par service de sortie et par rubrique de facturation', 'GROUPBY=SOR&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=1&RUBRIQUE=#LICTI_SHO_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SHO_MT_FAC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. chambres particulières||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 32, 'CTI_SHO_MT_TOT#1', '', '', 'C.A. chambres particulières', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par service de sortie et rubrique de facturation', 'GROUPBY=SOR&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_SHO_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SHO_MT_TOT#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. chambres particulières||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 8, 'CTI_SRUBMED_MT_FAC#1', '', '', 'C.A. rubriques non prises en compte', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par rubrique de facturation CTI et par rubrique de facturation', 'GROUPBY=RUFCLS04&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=1&RUBRIQUE=#SLCTI_RUBMED_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SRUBMED_MT_FAC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. rubriques non prises en compte||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 28, 'CTI_SRUBMED_MT_TOT#1', '', '', 'C.A. rubriques non prises en compte', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par rubrique de facturation CTI et par rubrique de facturation', 'GROUPBY=RUFCLS04&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1&RUBRIQUE=#SLCTI_RUBMED_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SRUBMED_MT_TOT#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. rubriques non prises en compte||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 22, 'CTI_SUPHOT_ENC#1', '', '', 'C.A. suppléments hôteliers', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par service de sortie et rubrique de facturation CTI', 'GROUPBY=SOR&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_SUPHOT_R', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SUPHOT_ENC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. suppléments hôteliers||', '||', '||', '0||', '0||'), +('ACTI_ESS_4', 13, 'CTI_SUPHOT_FAC#1', '', '', 'C.A. suppléments hôteliers', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par service de sortie CTI et par rubrique de facturation CTI', 'GROUPBY=SORCLS04&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=1&RUBRIQUE=#LICTI_SUPHOT_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SUPHOT_FAC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. suppléments hôteliers||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 33, 'CTI_SUPHOT_TOT#1', '', '', 'C.A. suppléments hôteliers', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par service de sortie et rubrique de facturation CTI', 'GROUPBY=SOR&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_SUPHOT_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SUPHOT_TOT#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. suppléments hôteliers||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 19, 'CTI_UCD_MT_ENC#1', '', '', 'C.A. médicaments', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par service de sortie et par rubrique de facturation CTI', 'GROUPBY=SOR&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_UCD_R', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_UCD_MT_ENC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. médicaments||', '||', '||', '0||', '0||'), +('ACTI_ESS_4', 10, 'CTI_UCD_MT_FAC#1', '', '', 'C.A. médicaments', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par compte et par rubrique de facturation', 'GROUPBY=CPT&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=1&RUBRIQUE=#LICTI_UCD_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_UCD_MT_FAC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. médicaments||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 30, 'CTI_UCD_MT_TOT#1', '', '', 'C.A. médicaments', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par compte et par rubrique de facturation', 'GROUPBY=CPT&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_UCD_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_UCD_MT_TOT#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. médicaments||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 23, 'CTI_URG_MT_ENC#1', '', '', 'C.A. urgences', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation', 'GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&VIEWTAB=1&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_URG_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_URG_MT_ENC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. urgences||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 14, 'CTI_URG_MT_FAC#1', '', '', 'C.A. urgences', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation', 'GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&VIEWTAB=0&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=1&RUBRIQUE=#LICTI_URG_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_URG_MT_FAC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. urgences||', '||', '||', '1||', '1||'), +('ACTI_ESS_4', 34, 'CTI_URG_MT_TOT#1', '', '', 'C.A. urgences', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par rubrique de facturation', 'GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&VIEWTAB=2&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_URG_R', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_URG_MT_TOT#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. urgences||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 5, 'CTI_ADM', '', '', 'Admissions période', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par étage', 'GROUPBY=ETACLS01&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_ADM||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Admissions période||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 11, 'CTI_ADMHCP', '', '', 'Admissions période', '', 0, 22, 16, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par étage', 'GROUPBY=ETACLS01&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT=''MT3''&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_ADMHCP||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Admissions période||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 18, 'CTI_ADMHDJ', '', '', 'Admissions période', '', 0, 22, 16, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par étage', 'GROUPBY=ETACLS01&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT=''MT4''&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_ADMHDJ||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Admissions période||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 10, 'CTI_ADMPREHCP', '', '', 'Admissions avant période', '', 0, 22, 16, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par unité fonctionnelle', 'GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT=''MT3''&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_ADMPREHCP||||||||||||||||', '*CALC||||||||||||||||', 'Admissions avant période||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 17, 'CTI_ADMPREHDJ', '', '', 'Admissions avant période', '', 0, 22, 16, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par unité fonctionnelle', 'GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT=''MT4''&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_ADMPREHDJ||||||||||||||||', '*CALC||||||||||||||||', 'Admissions avant période||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 4, 'CTI_ADM_PRE', '', '', 'Admissions avant période', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par unité fonctionnelle', 'GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_ADM_PRE||||||||||||||||', '*CALC||||||||||||||||', 'Admissions avant période||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 6, 'CTI_DEP', '', '', 'Sorties période', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par médecin séjour', 'GROUPBY=MED&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DEP||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Sorties période||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 12, 'CTI_DEPCOMP', '', '', 'Sorties période', '', 0, 22, 16, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par médecin séjour', 'GROUPBY=MED&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT=''MT3''&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DEPCOMP||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Sorties période||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 14, 'CTI_DMSCP', '', '', 'DMS (journées hospitalisés séjours sortis / séjours sortis)', '#,0j', 0, 22, 16, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par services', 'GROUPBY=SERCLS02&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1&MODETRAITEMENT=''MT3''', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DMSCP||||||||||||||||', '*CALC||||||||||||||||', 'DMS (journées hospitalisés séjours sortis / séjours sortis)||', '||', '#,0j||', '1||', '1||'), +('ACTI_ESS_5', 26, 'CTI_ENTDIRCOM', '', '', 'Entrées directes', '', 0, 22, 16, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par service', 'GROUPBY=SERCLS02&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT=''MT3''&VIEWTAB=3', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_ENTDIRCOM||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Entrées directes||', '||', '||', '0||', '0||'), +('ACTI_ESS_5', 31, 'CTI_ENTDIRJR', '', '', 'Entrées directes', '', 0, 22, 16, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par service', 'GROUPBY=SERCLS02&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT=''MT4''&VIEWTAB=3', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_ENTDIRJR||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Entrées directes||', '||', '||', '0||', '0||'), +('ACTI_ESS_5', 28, 'CTI_NB4_JSNCP', '', '', 'Nombre de journées hospitalisés', '', 0, 22, 16, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par étage', 'GROUPBY=ETACLS01&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT=''MT3''&VIEWTAB=3', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB4_JSNCP||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Nombre de journées hospitalisés||', '||', '||', '0||', '0||'), +('ACTI_ESS_5', 33, 'CTI_NB4_JSNJR', '', '', 'Nombre de journées hospitalisés', '', 0, 22, 16, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par étage', 'GROUPBY=ETACLS01&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT=''MT4''&VIEWTAB=3', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB4_JSNJR||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Nombre de journées hospitalisés||', '||', '||', '0||', '0||'), +('ACTI_ESS_5', 24, 'CTI_NB6_JSN', '', '', 'Journées d''hospitalisation', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par clé budgétaire', 'GROUPBY=ETACLS01&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB6_JSN||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées d''hospitalisation||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 35, 'CTI_NB6_JSN', '', '', 'Journées hospitalisation', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Facturation par étage', 'GROUPBY=ETACLS01&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB6_JSN||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées hospitalisation||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 38, 'CTI_NBDEAD', '', '', 'Nombre de décès', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par mode de sortie', 'GROUPBY=MODE_SORTIE&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&VIEWTAB=0', '1', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBDEAD||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Nombre de décès||', '||', '||', '1||', '0||'), +('ACTI_ESS_5', 22, 'CTI_NBENTDIR', '', '', 'Entrées hospitalisés', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par service de mouvement', 'GROUPBY=SERCLS02&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBENTDIR||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Entrées hospitalisés||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 36, 'CTI_NBJFSN', '', '', 'Journées hospitalisation facturées', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Facturation par mois', 'GROUPBY=NUMEROMOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBJFSN||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées hospitalisation facturées||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 13, 'CTI_NBPRESHCOMP', '', '', 'Séjours non sortis', '', 0, 22, 16, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par jour calendaire (dernier mois)', 'GROUPBY=JOUR&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_MONTH_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT=''MT3''&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBPRESHCOMP||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Séjours non sortis||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 19, 'CTI_NBPRESHDJ', '', '', 'Séjours non sortis', '', 0, 22, 16, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par jour calendaire (dernier mois)', 'GROUPBY=JOUR&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_MONTH_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT=''MT4''&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBPRESHDJ||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Séjours non sortis||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 9, 'CTI_NBSEJCP', '', '', 'Séjours', '', 0, 22, 16, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par services', 'GROUPBY=SERCLS02&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT=''MT3''&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSEJCP||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Séjours||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 16, 'CTI_NBSEJHDJ', '', '', 'Séjours', '', 0, 22, 16, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par service', 'GROUPBY=SERCLS02&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT=''MT4''&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSEJHDJ||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Séjours||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 3, 'CTI_NBSEJO', '', '', 'Séjours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par services', 'GROUPBY=SERCLS02&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSEJO||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Séjours||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 23, 'CTI_NBSORDIR', '', '', 'Sorties hospitalisés', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par unité fonctionnelle de mouvement', 'GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSORDIR||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Sorties hospitalisés||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 7, 'CTI_NB_PRESENT', '', '', 'Séjours non sortis', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par jours calendaires (dernier mois)', 'GROUPBY=JOUR&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_MONTH_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1', '1', '1', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_PRESENT||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Séjours non sortis||', '||', '||', '1||', '1||'), +('ACTI_ESS_5', 1, 'CTI_SEP', '', '', 'Séjours', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Séjours||', '||', '||', '||', '||'), +('ACTI_ESS_5', 2, 'CTI_SEP', '', '', 'Synthèse', '', 0, 22, 6, 13, 'bold', 2, '0x0', '0xdddddd', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Synthèse||', '||', '||', '||', '||'), +('ACTI_ESS_5', 8, 'CTI_SEP', '', '', 'Hospitalisation complète', '', 0, 22, 6, 13, 'bold', 2, '0x0', '0xdddddd', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Hospitalisation complète||', '||', '||', '||', '||'), +('ACTI_ESS_5', 15, 'CTI_SEP', '', '', 'Hospitalisation de jour', '', 0, 22, 6, 13, 'bold', 2, '0x0', '0xdddddd', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Hospitalisation de jour||', '||', '||', '||', '||'), +('ACTI_ESS_5', 20, 'CTI_SEP', '', '', 'Occupation', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Occupation||', '||', '||', '||', '||'), +('ACTI_ESS_5', 21, 'CTI_SEP', '', '', 'Synthése', '', 0, 22, 6, 13, 'bold', 2, '0x0', '0xdddddd', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Synthése||', '||', '||', '||', '||'), +('ACTI_ESS_5', 25, 'CTI_SEP', '', '', 'Hospitalisation complète', '', 0, 22, 6, 13, 'bold', 0, '0x0', '0xdddddd', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Hospitalisation complète||', '||', '||', '||', '||'), +('ACTI_ESS_5', 30, 'CTI_SEP', '', '', 'Hospitalisation de jour', '', 0, 22, 6, 13, 'bold', 0, '0x0', '0xdddddd', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Hospitalisation de jour||', '||', '||', '||', '||'), +('ACTI_ESS_5', 34, 'CTI_SEP', '', '', 'Facturation', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Facturation||', '||', '||', '||', '||'), +('ACTI_ESS_5', 37, 'CTI_SEP', '', '', 'Population', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Population||', '||', '||', '||', '||'), +('ACTI_ESS_5', 27, 'CTI_SORDIRCOM', '', '', 'Sorties directes', '', 0, 22, 16, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par unité fonctionelle', 'GROUPBY=UF&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT=''MT3''&VIEWTAB=3', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SORDIRCOM||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Sorties directes||', '||', '||', '0||', '0||'), +('ACTI_ESS_5', 32, 'CTI_SORDIRJR', '', '', 'Sorties directes', '', 0, 22, 16, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par unité fonctionelle', 'GROUPBY=UF&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT=''MT4''&VIEWTAB=3', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SORDIRJR||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Sorties directes||', '||', '||', '0||', '0||'), +('ACTI_ESS_5', 29, 'CTI_TX_HOCOMP', '', '', 'Taux d''occupation', '', 0, 22, 16, 12, '', 0, '', '', '0', '0', 'ACTI000124', 'Localisation par étage et jour calendaire', 'GROUPBY=JOUR&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_MONTH_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT=''MT3''', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_TX_HOCOMP||||||||||||||||', '*CALC||||||||||||||||', 'Taux d''occupation||', '||', '||', '0||', '0||'), +('CTI_ESS_001', 3, 'CTI_ADM', '', '', 'Admissions', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par étage d''occupation', 'GROUPBY=ETA&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_ADM||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Admissions||', '||', '||', '1||0||0||0||0||0||0||0||0', '1||0||0||0||0||0||0||0||0'), +('CTI_ESS_001', 4, 'CTI_DEP', '', '', 'Départs', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000056', 'Occupation par médecin séjour', 'GROUPBY=MED&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DEP||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Départs||', '||', '||', '1||0||0||0||0||0||0||0||0', '1||0||0||0||0||0||0||0||0'), +('CTI_ESS_001', 24, 'CTI_DMSR', '', '', 'DMS hospitalisés', '#,0j', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par UF d''occupation', 'GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&JSI=2&VIEWTAB=1', '1', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DMSR||||||||||||||||', '*CALC||||||||||||||||', 'DMS hospitalisés||', '||', '#,0j||', '1||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_001', 23, 'CTI_DMSTOT', '', '', 'DMS hospitalisation', '#,0j', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par Service d''occupation', 'GROUPBY=SER&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1', '1', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DMSTOT||||||||||||||||', '*CALC||||||||||||||||', 'DMS hospitalisation||', '||', '#,0j||', '1||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_001', 13, 'CTI_NB6_JSN', '', '', 'Journées d''hospitalisation', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Ocucpation par Spécialité et Médecin', 'PERIODE=VIEW.CURRENT_PERIODE & TOPERIODE=VIEW.CURRENT_TOPERIODE & GROUPBY=SPM & GROUPBY_TAB=TREE', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB6_JSN||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées d''hospitalisation||', '||', '||', '1||0||0||0||0||0||0||0||0', '1||0||0||0||0||0||0||0||0'), +('CTI_ESS_001', 8, 'CTI_NBAMB', '', '', 'Ambulatoires', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par étage d''occupation', 'GROUPBY=ETA&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBAMB||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Ambulatoires||', '||', '||', '1||0||0||0||0||0||0||0||0', '1||0||0||0||0||0||0||0||0'), +('CTI_ESS_001', 27, 'CTI_NBDEAD', '', '', 'Nombre de décès', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Séjours par Mode de sortie', 'PERIODE=VIEW.CURRENT_PERIODE & TOPERIODE=VIEW.CURRENT_TOPERIODE & GROUPBY=MODE_SORTIE & GROUPBY_TAB=TAB & _ONGLET_O1_VISIBLE=false & _ONGLET_O2_VISIBLE=false & _ONGLET_O3_VISIBLE=false', '1', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBDEAD||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Nombre de décès||', '||', '||', '1||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_001', 6, 'CTI_NBENTDIR', '', '', 'Entrées hospitalisés', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par service d''occupation', 'GROUPBY=SER&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBENTDIR||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Entrées hospitalisés||', '||', '||', '1||0||0||0||0||0||0||0||0', '1||0||0||0||0||0||0||0||0'), +('CTI_ESS_001', 10, 'CTI_NBEXT', '', '', 'Externes', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par mois', 'GROUPBY=NUMEROMOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=3', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBEXT||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Externes||', '||', '||', '1||0||0||0||0||0||0||0||0', '1||0||0||0||0||0||0||0||0'), +('CTI_ESS_001', 17, 'CTI_NBFACREF', '', '', 'Sorties directes et facturations intermédiaires', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation facturée par service de sortie', 'PERIODE=VIEW.CURRENT_PERIODE & TOPERIODE=VIEW.CURRENT_TOPERIODE & GROUPBY=SOR & GROUPBY_TAB=TAB', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBFACREF||||||||||||||||', 'SEJOURS||||||||||||||||', 'Sorties directes et facturations intermédiaires||', '||', '||', '1||0||||||||||||||', '1||0||||||||||||||'), +('CTI_ESS_001', 18, 'CTI_NBFACREF_F', '', '', 'Dont Facturées', '', 0, 22, 20, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation facturée par unité fonctionnelle', 'GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBFACREF_F||||||||||||||||', 'SEJOURS||||||||||||||||', 'Dont Facturées||', '||', '||', '1||0||||||||||||||', '1||0||||||||||||||'), +('CTI_ESS_001', 19, 'CTI_NBFACREF_NF', '', '', 'Dont non facturées', '', 0, 22, 20, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Facturation par étage', 'GROUPBY=ETA&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBFACREF_NF||||||||||||||||', 'SEJOURS||||||||||||||||', 'Dont non facturées||', '||', '||', '1||0||||||||||||||', '1||0||||||||||||||'), +('CTI_ESS_001', 21, 'CTI_NBJAS_FAC', '', '', 'Journées hospitalisation facturées', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Facturation par mois', 'GROUPBY=NUMEROMOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBJAS_FAC||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées hospitalisation facturées||', '||', '||', '1||0||||||||||||||', '1||0||||||||||||||'), +('CTI_ESS_001', 12, 'CTI_NBJSN', '', '', 'Journées des hospitalisés', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par domaine d''activité ATIH et par groupe d''activité ATIH', 'GROUPBY=GHMCLS09&GROUPBY_2=GHMCLS07&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBJSN||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées des hospitalisés||', '||', '||', '1||0||0||0||0||0||0||0||0', '1||0||0||0||0||0||0||0||0'), +('CTI_ESS_001', 20, 'CTI_NBJ_FAC', '', '', 'Journées hospitalisées facturées', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Facturation par domaine d''activité ATIH et par groupe d''activité ATIH', 'GROUPBY=GHMCLS09&GROUPBY_2=GHMCLS07&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBJ_FAC||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées hospitalisées facturées||', '||', '||', '1||0||||||||||||||', '1||0||||||||||||||'), +('CTI_ESS_001', 9, 'CTI_NBSCE', '', '', 'Séances', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par médecin séjour', 'GROUPBY=MED&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSCE||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Séances||', '||', '||', '1||0||0||0||0||0||0||0||0', '1||0||0||0||0||0||0||0||0'), +('CTI_ESS_001', 2, 'CTI_NBSEJO', '', '', 'Séjours', '', 0, 22, 10, 12, '0', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par Forme d''activité et UF d''occupation', 'PERIODE=VIEW.CURRENT_PERIODE & TOPERIODE=VIEW.CURRENT_TOPERIODE & GROUPBY=FOA & GROUPBY_TAB=TAB & GROUPBY_2=UF', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSEJO||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Séjours||', '||', '||', '1||0||0||0||0||0||0||0||0', '1||0||0||0||0||0||0||0||0'), +('CTI_ESS_001', 7, 'CTI_NBSORDIR', '', '', 'Sorties hospitalisés', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par UF d''occupation', 'GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSORDIR||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Sorties hospitalisés||', '||', '||', '1||0||0||0||0||0||0||0||0', '1||0||0||0||0||0||0||0||0'), +('CTI_ESS_001', 11, 'CTI_NB_BEBE', '', '', 'Bébés', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par CMD', 'GROUPBY=CMD&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=3', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_BEBE||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Bébés||', '||', '||', '1||0||0||0||0||0||0||0||0', '1||0||0||0||0||0||0||0||0'), +('CTI_ESS_001', 26, 'CTI_PSEJFEM', '', '', 'Pourcentage de femmes', '#,0%', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000132', 'Pyramide des ages', 'GROUPBY=AGE&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_PSEJFEM||||||||||||||||', '*CALC||||||||||||||||', 'Pourcentage de femmes||', '||', '#,0%||', '0||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_001', 1, 'CTI_SEP', '', '', 'File active Séjours', '', 0, 26, 0, 14, 'bold', 2, '#c0392b', '#cccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', 'PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'File active Séjours||', '||', '||', '||||||||||||||||', '||||||||||||||||'), +('CTI_ESS_001', 5, 'CTI_SEP', '', '', 'Occupation', '', 0, 26, 0, 14, 'bold', 2, '#c0392b', '#cccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', 'PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Occupation||', '||', '||', '||||||||||||||||', '||||||||||||||||'), +('CTI_ESS_001', 14, 'CTI_SEP', '', '', 'Taux d''occupation', '', 0, 26, 0, 14, 'bold', 2, '#c0392b', '#cccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Taux d''occupation||', '||', '||', '||||||||||||||||', '||||||||||||||||'), +('CTI_ESS_001', 16, 'CTI_SEP', '', '', 'Facturation', '', 0, 26, 0, 14, 'bold', 2, '#c0392b', '#cccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Facturation||', '||', '||', '||||||||||||||||', '||||||||||||||||'), +('CTI_ESS_001', 22, 'CTI_SEP', '', '', 'Durée moyenne de séjours', '', 0, 26, 0, 14, 'bold', 2, '#c0392b', '#cccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Durée moyenne de séjours||', '||', '||', '||||||||||||||||', '||||||||||||||||'), +('CTI_ESS_001', 25, 'CTI_SEP', '', '', 'Population', '', 0, 26, 0, 14, 'bold', 2, '#c0392b', '#cccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Population||', '||', '||', '||||||||||||||||', '||||||||||||||||'), +('CTI_ESS_001', 15, 'CTI_TX_HO', '', '', 'Taux d''occupation (Hospitalisés)', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000124', 'Localisation par etage d''occupation et jour calendaire', 'GROUPBY=ETA&GROUPBY_2=JOUR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_TOMOIS&TOPERIODE=VIEW.CURRENT_TOMOIS&JSI=2', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_TX_HO||||||||||||||||', '*CALC||||||||||||||||', 'Taux d''occupation (Hospitalisés)||', '||', '||', '1||0||||||||||||||', '1||0||||||||||||||'), +('CTI_ESS_002', 22, 'CTI_CAT_MTD18_FACVAL', '', '', 'C.A. Soins Moyen', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par Spécialité et Médecin', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=SPM & +GROUPBY_TAB=TAB & +GROUPBY_2=MED & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CAT_MTD18_FACVAL||||||||||||||||', '*CALC||||||||||||||||', 'C.A. Soins Moyen||', '||', '||', '0||0', '0||0'), +('CTI_ESS_002', 17, 'CTI_EMC', '', '', 'EMC', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par Spécialité médecin et Médecin', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=SPM & +GROUPBY_TAB=TAB & +GROUPBY_2=MED & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_EMC||||||||||||||||', 'OCCUPATION||||||||||||||||', 'EMC||', '||', '||', '0||0', '0||0'), +('CTI_ESS_002', 12, 'CTI_MTENC_C#1', '', '', 'C.A. Total', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Valorisation par Forme d''activité et UF', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=TSE & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTENC_C#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Total||', '||', '||', '0||0', '0||0'), +('CTI_ESS_002', 7, 'CTI_MTFAC_C#1', '', '', 'C.A. Total', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Facturation par Forme d''activité et UF', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTFAC_C#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Total||', '||', '||', '1||0', '1||0'), +('CTI_ESS_002', 19, 'CTI_MT_FAC_TOT#1', '', '', 'C.A. Total', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par Domaine et Groupe d''activité', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=GHMCLS09 & +GROUPBY_TAB=TAB & +GROUPBY_2=GHMCLS07 & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MT_FAC_TOT#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Total||', '||', '||', '1||0', '1||0'), +('CTI_ESS_002', 18, 'CTI_NB6_JSN', '', '', 'Journées', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par Rubrique CTI et rubrique', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUFCLS04 & +GROUPBY_TAB=TAB & +GROUPBY_2=RUFCLS31 & +GROUPBY_3=RUF & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB6_JSN||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées||', '||', '||', '0||0', '0||0'), +('CTI_ESS_002', 2, 'CTI_NBSEJO', '', '', 'Séjours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par forme d''activité et UF', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSEJO||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Séjours||', '||', '||', '1||0', '1||0'), +('CTI_ESS_002', 16, 'CTI_NB_SEJ_FAEN#1', '', '', 'Séjours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par Forme d''activité et UF', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_FAEN#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours||', '||', '||', '1||0', '1||0'), +('CTI_ESS_002', 4, 'CTI_NB_SEJ_VAL#1', '', '', '', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Valorisation par mois', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MOISA & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_VAL#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '0||', '0||'), +('CTI_ESS_002', 11, 'CTI_NB_SEJ_VAL#1', '', '', 'Séjours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Valorisation par Rubrique CTI et Rubrique', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUFCLS04 & +GROUPBY_TAB=TAB & +GROUPBY_2=RUF & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_VAL#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours||', '||', '||', '0||0', '0||0'), +('CTI_ESS_002', 3, 'CTI_NSFAC_C#1', '', '', 'Séjours Facturés', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Facturation par mois', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MOISA & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC_C#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours Facturés||', '||', '||', '1||0', '1||0'), +('CTI_ESS_002', 6, 'CTI_NSFAC_C#1', '', '', 'Séjours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Facturation par Rubrique CTI et Rubrique', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUFCLS04 & +GROUPBY_TAB=TAB & +GROUPBY_2=RUFCLS31 & +GROUPBY_3=RUF & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC_C#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours||', '||', '||', '0||0', '0||0'), +('CTI_ESS_002', 24, 'CTI_PROTH_MT_TOT#1', '', '', 'C.A. Prothèses', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité Prothèses par Médecin', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LICTI_PROTHESE_R', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_PROTH_MT_TOT#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Prothèses||', '||', '||', '1||0', '1||0'), +('CTI_ESS_002', 13, 'CTI_RUBMED_MT_ENC#1', '', '', 'C.A. Séjour', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Valorisation par Forme d''activité et UF', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_RUBMED_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_RUBMED_MT_ENC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Séjour||', '||', '||', '0||0', '0||0'), +('CTI_ESS_002', 8, 'CTI_RUBMED_MT_FAC#1', '', '', 'C.A. Séjour', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Facturation par Forme d''activité et UF', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_RUBMED_R & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_RUBMED_MT_FAC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Séjour||', '||', '||', '1||0', '1||0'), +('CTI_ESS_002', 20, 'CTI_RUBMED_MT_TOT#1', '', '', 'C.A. Séjour', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par Forme d''activité et UF', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_RUBMED_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_RUBMED_MT_TOT#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Séjour||', '||', '||', '0||0', '0||0'), +('CTI_ESS_002', 26, 'CTI_SEH_MT_TOT#1', '', '', 'C.A. Forfaits SE', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité SEh par Médecin', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LICTI_SE_R', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEH_MT_TOT#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Forfaits SE||', '||', '||', '1||0', '1||0'), +('CTI_ESS_002', 1, 'CTI_SEP', '', '', 'File active facturation', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'File active facturation||', '||', '||', '||', '||'), +('CTI_ESS_002', 5, 'CTI_SEP', '', '', 'Chiffre d''affaires facturé', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Chiffre d''affaires facturé||', '||', '||', '||', '||'), +('CTI_ESS_002', 10, 'CTI_SEP', '', '', 'Chiffre d''affaires valorisé', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Chiffre d''affaires valorisé||', '||', '||', '||', '||'), +('CTI_ESS_002', 15, 'CTI_SEP', '', '', 'Chiffre d''affaires facturé et valorisé', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Chiffre d''affaires facturé et valorisé||', '||', '||', '||', '||'), +('CTI_ESS_002', 23, 'CTI_SEP', '', '', 'Chiffre d''affaires autres prestations', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Chiffre d''affaires autres prestations||', '||', '||', '||', '||'), +('CTI_ESS_002', 27, 'CTI_SHO_MT_TOT#1', '', '', 'C.A. Chambres particulières', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite C.P. par Rubrique', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUF & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LICTI_SHO_R', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SHO_MT_TOT#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Chambres particulières||', '||', '||', '1||0', '1||0'), +('CTI_ESS_002', 28, 'CTI_SUPHOT_TOT#1', '', '', 'C.A. Suppléments hôteliers', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité Hotellerie par Rubrique', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUF & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LICTI_SUPHOT_R', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SUPHOT_TOT#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Suppléments hôteliers||', '||', '||', '1||0', '1||0'), +('CTI_ESS_002', 14, 'CTI_T2A_MT_ENC#1', '', '', 'C.A. Soins', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Valorisation par Forme d''activité et UF', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_T2A_MT_ENC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Soins||', '||', '||', '0||0', '0||0'), +('CTI_ESS_002', 9, 'CTI_T2A_MT_FAC#1', '', '', 'C.A. Soins', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Facturation par Forme d''activité et UF', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_T2A_MT_FAC#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Soins||', '||', '||', '1||0', '1||0'), +('CTI_ESS_002', 21, 'CTI_T2A_MT_TOT#1', '', '', 'C.A. Soins', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par Forme d''activité et UF', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_T2A_MT_TOT#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Soins||', '||', '||', '1||0', '1||0'), +('CTI_ESS_002', 25, 'CTI_UCD_MT_TOT#1', '', '', 'C.A. Médicaments', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité Médicaments par Médecin', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LICTI_UCD_R', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_UCD_MT_TOT#1||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Médicaments||', '||', '||', '1||0', '1||0'), +('CTI_ESS_003', 22, 'CTI_CAM_SOINS_FACVAL#2', '', '', 'C.A. Soins Moyen', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par Spécialité et Médecin', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=SPM & +GROUPBY_TAB=TAB & +GROUPBY_2=MED & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CAM_SOINS_FACVAL#2||||||||||||||||', '*CALC||||||||||||||||', 'C.A. Soins Moyen||', '||', '||', '0||0', '0||0'), +('CTI_ESS_003', 17, 'CTI_EMC', '', '', 'EMC', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par Spécialité médecin et Médecin', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=SPM & +GROUPBY_TAB=TAB & +GROUPBY_2=MED & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_EMC||||||||||||||||', 'OCCUPATION||||||||||||||||', 'EMC||', '||', '||', '0||0', '0||0'), +('CTI_ESS_003', 12, 'CTI_MTENC_C#2', '', '', 'C.A. Total', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Valorisation par Forme d''activité et UF', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=TSE & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTENC_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Total||', '||', '||', '0||0', '0||0'), +('CTI_ESS_003', 7, 'CTI_MTFAC_C#2', '', '', 'C.A. Total', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Facturation par Forme d''activité et UF', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTFAC_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Total||', '||', '||', '1||0', '1||0'), +('CTI_ESS_003', 19, 'CTI_MT_FAC_TOT#2', '', '', 'C.A. Total', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par Domaine et Groupe d''activité', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=GHMCLS09 & +GROUPBY_TAB=TAB & +GROUPBY_2=GHMCLS07 & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MT_FAC_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Total||', '||', '||', '1||0', '1||0'), +('CTI_ESS_003', 18, 'CTI_NB6_JSN', '', '', 'Journées', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par Rubrique CTI et rubrique', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUFCLS04 & +GROUPBY_TAB=TAB & +GROUPBY_2=RUFCLS31 & +GROUPBY_3=RUF & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB6_JSN||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Journées||', '||', '||', '0||0', '0||0'), +('CTI_ESS_003', 2, 'CTI_NBSEJO', '', '', 'Séjours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000123', 'Occupation par forme d''activité et UF', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSEJO||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Séjours||', '||', '||', '1||0', '1||0'), +('CTI_ESS_003', 16, 'CTI_NB_SEJ_FAEN#2', '', '', 'Séjours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par Forme d''activité et UF', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_FAEN#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours||', '||', '||', '1||0', '1||0'), +('CTI_ESS_003', 4, 'CTI_NB_SEJ_VAL#2', '', '', '', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Valorisation par mois', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MOISA & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_VAL#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '0||', '0||'), +('CTI_ESS_003', 11, 'CTI_NB_SEJ_VAL#2', '', '', 'Séjours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Valorisation par Rubrique CTI et Rubrique', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUFCLS04 & +GROUPBY_TAB=TAB & +GROUPBY_2=RUF & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_VAL#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours||', '||', '||', '0||0', '0||0'), +('CTI_ESS_003', 3, 'CTI_NSFAC_C#2', '', '', 'Séjours Facturés', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Facturation par mois', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MOISA & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours Facturés||', '||', '||', '1||0', '1||0'), +('CTI_ESS_003', 6, 'CTI_NSFAC_C#2', '', '', 'Séjours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Facturation par Rubrique CTI et Rubrique', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUFCLS04 & +GROUPBY_TAB=TAB & +GROUPBY_2=RUFCLS31 & +GROUPBY_3=RUF & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours||', '||', '||', '0||0', '0||0'), +('CTI_ESS_003', 24, 'CTI_PROTH_MT_TOT#2', '', '', 'C.A. Prothèses', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité Prothèses par Médecin', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S22', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_PROTH_MT_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Prothèses||', '||', '||', '1||0', '1||0'), +('CTI_ESS_003', 13, 'CTI_RUBMED_MT_ENC#2', '', '', 'C.A. Séjour', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Valorisation par Forme d''activité et UF', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_RUBMED_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_RUBMED_MT_ENC#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Séjour||', '||', '||', '0||0', '0||0'), +('CTI_ESS_003', 8, 'CTI_RUBMED_MT_FAC#2', '', '', 'C.A. Séjour', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Facturation par Forme d''activité et UF', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_RUBMED_R & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_RUBMED_MT_FAC#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Séjour||', '||', '||', '1||0', '1||0'), +('CTI_ESS_003', 20, 'CTI_RUBMED_MT_TOT#2', '', '', 'C.A. Séjour', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité par Forme d''activité et UF', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_RUBMED_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_RUBMED_MT_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Séjour||', '||', '||', '0||0', '0||0'), +('CTI_ESS_003', 26, 'CTI_SEH_MT_TOT#2', '', '', 'C.A. Forfaits SE', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité SEh par Médecin', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S03', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEH_MT_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Forfaits SE||', '||', '||', '1||0', '1||0'), +('CTI_ESS_003', 1, 'CTI_SEP', '', '', 'File active facturation', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'File active facturation||', '||', '||', '||', '||'), +('CTI_ESS_003', 5, 'CTI_SEP', '', '', 'Chiffre d''affaires facturé', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Chiffre d''affaires facturé||', '||', '||', '||', '||'), +('CTI_ESS_003', 10, 'CTI_SEP', '', '', 'Chiffre d''affaires valorisé', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Chiffre d''affaires valorisé||', '||', '||', '||', '||'), +('CTI_ESS_003', 15, 'CTI_SEP', '', '', 'Chiffre d''affaires facturé et valorisé', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Chiffre d''affaires facturé et valorisé||', '||', '||', '||', '||'), +('CTI_ESS_003', 23, 'CTI_SEP', '', '', 'Chiffre d''affaires autres prestations', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Chiffre d''affaires autres prestations||', '||', '||', '||', '||'), +('CTI_ESS_003', 27, 'CTI_SHO_MT_TOT#2', '', '', 'C.A. Chambres particulières', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite C.P. par Rubrique', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUF & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S11', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SHO_MT_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Chambres particulières||', '||', '||', '1||0', '1||0'), +('CTI_ESS_003', 28, 'CTI_SUPHOT_TOT#2', '', '', 'C.A. Suppléments hôteliers', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité Hotellerie par Rubrique', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUF & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S12', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SUPHOT_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Suppléments hôteliers||', '||', '||', '1||0', '1||0'), +('CTI_ESS_003', 14, 'CTI_T2A_MT_ENC#2', '', '', 'C.A. Soins', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Valorisation par Forme d''activité et UF', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_T2A_MT_ENC#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Soins||', '||', '||', '0||0', '0||0'), +('CTI_ESS_003', 9, 'CTI_T2A_MT_FAC#2', '', '', 'C.A. Soins', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Facturation par Forme d''activité et UF', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_T2A_MT_FAC#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Soins||', '||', '||', '1||0', '1||0'), +('CTI_ESS_003', 21, 'CTI_T2A_MT_TOT#2', '', '', 'C.A. Soins', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activite par Forme d''activité et UF', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_T2A_MT_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Soins||', '||', '||', '1||0', '1||0'), +('CTI_ESS_003', 25, 'CTI_UCD_MT_TOT#2', '', '', 'C.A. Médicaments', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Activité Médicaments par Médecin', 'QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S21', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_UCD_MT_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Médicaments||', '||', '||', '1||0', '1||0'), +('CTI_ESS_004', 23, 'CTI_CACPTENC_C_12M', '', '', 'C.A. mensuel moyen (12 derniers mois)', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', '', '', '', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CACPTENC_C_12M||||||||||||||||', '*CALC||||||||||||||||', 'C.A. mensuel moyen (12 derniers mois)||', '||', '||', '1||0', '1||0'), +('CTI_ESS_004', 7, 'CTI_CAM_SOINS_CPT', '', '', 'C.A. Soins Moyen', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Comptabilisation par Spécialité et Médecin', 'QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=SPM & +GROUPBY_TAB=TAB & +GROUPBY_2=MED & +QUELMONTANT=2 & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CAM_SOINS_CPT||||||||||||||||', '*CALC||||||||||||||||', 'C.A. Soins Moyen||', '||', '||', '1||0', '1||0'), +('CTI_ESS_004', 5, 'CTI_CA_RUBMED_MT_CPT', '', '', 'C.A. Séjour', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Comptabilisation par Forme d''activité et UF', 'QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +QUELMONTANT=2 & +RUBRIQUE_CA=#LICTI_RUBMED_R & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CA_RUBMED_MT_CPT||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Séjour||', '||', '||', '1||0', '1||0'), +('CTI_ESS_004', 6, 'CTI_CA_T2A_CPT', '', '', 'C.A. Soins', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Comptabilisation par Forme d''activité et UF', 'QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +QUELMONTANT=2 & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CA_T2A_CPT||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Soins||', '||', '||', '1||0', '1||0'), +('CTI_ESS_004', 19, 'CTI_CCAACTCOMPTA_C', '', '', 'C.A. Total Activité Comptable', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', '', '', '', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CCAACTCOMPTA_C||||||||||||||||', '*CALC||||||||||||||||', 'C.A. Total Activité Comptable||', '||', '||', '1||0', '1||0'), +('CTI_ESS_004', 20, 'CTI_CCAACTCOMPTA_SEJOUR_C', '', '', 'C.A. Séjours Activité comptable', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000104', 'Activite comptable par Forme d''activité et UF', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +OPTION1=MNT & +_ONGLET_O2_VISIBLE=false & +_ONGLET_O3_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S01', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CCAACTCOMPTA_SEJOUR_C||||||||||||||||', '*CALC||||||||||||||||', 'C.A. Séjours Activité comptable||', '||', '||', '0||0', '0||0'), +('CTI_ESS_004', 21, 'CTI_CCAACTCOMPTA_SOINS_C', '', '', 'C.A. Soins Activité comptable', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000104', 'Activité comptable par Forme d''activité et UF', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +OPTION1=MNT & +_ONGLET_O2_VISIBLE=false & +_ONGLET_O3_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_1:S1', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CCAACTCOMPTA_SOINS_C||||||||||||||||', '*CALC||||||||||||||||', 'C.A. Soins Activité comptable||', '||', '||', '0||0', '0||0'), +('CTI_ESS_004', 17, 'CTI_CCAENCDER_C', '', '', 'En-cours du dernier mois', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000104', 'Ecarts d''estimation par Rubrique', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUCCLS04 & +GROUPBY_TAB=TREE & +GROUPBY_2=RUFCLS31 & +OPTION1=MNT', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CCAENCDER_C||||||||||||||||', 'EN_COURS||||||||||||||||', 'En-cours du dernier mois||', '||', '||', '0||0', '0||0'), +('CTI_ESS_004', 25, 'CTI_CCAENCDER_C', '', '', 'En-cours du dernier mois', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', '', '', '', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CCAENCDER_C||||||||||||||||', 'EN_COURS||||||||||||||||', 'En-cours du dernier mois||', '||', '||', '0||0', '0||0'), +('CTI_ESS_004', 15, 'CTI_CCAENCRECPRE_C', '', '', 'Report En-cours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000104', 'Activite comptable par Rubrique', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUFCLS31 & +GROUPBY_TAB=TAB & +GROUPBY_2=RUF & +OPTION1=MNT & +_ONGLET_O2_VISIBLE=false & +_ONGLET_O3_VISIBLE=false', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CCAENCRECPRE_C||||||||||||||||', 'EN_COURS||||||||||||||||', 'Report En-cours||', '||', '||', '0||0', '0||0'), +('CTI_ESS_004', 18, 'CTI_CCAENCVAR_C', '', '', 'Variation En-cours', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', '', '', '', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CCAENCVAR_C||||||||||||||||', 'EN_COURS||||||||||||||||', 'Variation En-cours||', '||', '||', '0||0', '0||0'), +('CTI_ESS_004', 26, 'CTI_CDELSOLCA_C', '', '', 'D.M.R.', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', '', '', '', '1', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CDELSOLCA_C||||||||||||||||', '*CALC||||||||||||||||', 'D.M.R.||', '||', '||', '1||0', '0||0'), +('CTI_ESS_004', 12, 'CTI_CPC_MT_CPT', '', '', 'C.A. Chambres particulières', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Comptabilisation C.P. par Rubrique', 'QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUF & +GROUPBY_TAB=TAB & +QUELMONTANT=2 & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S11', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CPC_MT_CPT||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Chambres particulières||', '||', '||', '1||0', '1||0'), +('CTI_ESS_004', 24, 'CTI_MTSOLCLI_C', '', '', 'Solde Compte client', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000022', 'Compte client par Tiers payant', 'PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=TTP & +GROUPBY_TAB=TAB & +GROUPBY_2=TPY & +QSD=0 & +QMC=0 & +QMR=0', '1', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTSOLCLI_C||||||||||||||||', 'CLIENTS_CLINIQUE||||||||||||||||', 'Solde Compte client||', '||', '||', '1||0', '0||0'), +('CTI_ESS_004', 4, 'CTI_MTVEN_C#4', '', '', 'C.A. Total', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Comptabilisation par Compte', 'QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=CPT & +GROUPBY_TAB=TAB & +QUELMONTANT=2 & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTVEN_C#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Total||', '||', '||', '1||0', '1||0'), +('CTI_ESS_004', 16, 'CTI_MTVEN_C#4', '', '', 'C.A. Ventes', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', '', '', '', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTVEN_C#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Ventes||', '||', '||', '1||0', '1||0'), +('CTI_ESS_004', 2, 'CTI_NSCPT_C', '', '', 'Séjours comptabilisés', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Comptabilisation par Forme d''activité et UF', 'QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +QUELMONTANT=2 & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSCPT_C||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Séjours comptabilisés||', '||', '||', '1||0', '1||0'), +('CTI_ESS_004', 9, 'CTI_PROTH_MT_CPT', '', '', 'C.A. Prothèses', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Comptabilisation Prothèses par Médecin', 'QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +QUELMONTANT=2 & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S22', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_PROTH_MT_CPT||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Prothèses||', '||', '||', '1||0', '1||0'), +('CTI_ESS_004', 11, 'CTI_SEH_MT_CPT', '', '', 'C.A. Forfaits SE', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Comptabilisation SEh par Médecin', 'QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +QUELMONTANT=2 & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S03', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEH_MT_CPT||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Forfaits SE||', '||', '||', '1||0', '1||0'), +('CTI_ESS_004', 1, 'CTI_SEP', '', '', 'Séjours', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Séjours||', '||', '||', '||', '||'), +('CTI_ESS_004', 3, 'CTI_SEP', '', '', 'Chiffre d''affaires comptabilisé', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Chiffre d''affaires comptabilisé||', '||', '||', '||', '||'), +('CTI_ESS_004', 8, 'CTI_SEP', '', '', 'Chiffre d''affaires autres prestations', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Chiffre d''affaires autres prestations||', '||', '||', '||', '||'), +('CTI_ESS_004', 14, 'CTI_SEP', '', '', 'Comptabilisation et En-cours', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Comptabilisation et En-cours||', '||', '||', '||', '||'), +('CTI_ESS_004', 22, 'CTI_SEP', '', '', 'Délai Moyen de Règlement', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Délai Moyen de Règlement||', '||', '||', '||', '||'), +('CTI_ESS_004', 13, 'CTI_SUPHOT_CA_CPT', '', '', 'C.A. Suppléments hôteliers', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Comptabilisation Hotellerie par Rubrique', 'QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUF & +GROUPBY_TAB=TAB & +QUELMONTANT=2 & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S12', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SUPHOT_CA_CPT||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Suppléments hôteliers||', '||', '||', '1||0', '1||0'), +('CTI_ESS_004', 10, 'CTI_UCD_MT_CPT', '', '', 'C.A. Médicaments', '', 0, 22, 10, 12, '', 0, '', '', '0', '0', 'ACTI000018', 'Comptabilisation Médicaments par Médecin', 'QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +QUELMONTANT=2 & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S21', '1', '1', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_UCD_MT_CPT||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'C.A. Médicaments||', '||', '||', '1||0', '1||0'), +('CTI_ESS_006', 10, 'CTI_CA_FACT_VAL', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', 'ACTI000057', 'Suivi par Médecin (Cumul dernière semaine)', 'ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=MED & VIEWTAB = 1', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CA_FACT_VAL||||||||||||||||', 'SEJOURS||||||||||||||||', '||', '||', '||', '0||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_006', 9, 'CTI_CA_FAC_ETAB', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', 'ACTI000057', 'Suivi par Domaine et groupe d''activité (Cumul dernière semaine)', 'ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=GHMCLS09 & GROUPBY_2 = GHMCLS07 & VIEWTAB=1', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CA_FAC_ETAB||||||||||||||||', 'SEJOURS||||||||||||||||', '||', '||', '||', '0||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_006', 13, 'CTI_CA_NON_EXP_ETAB', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', 'ACTI000057', 'Suivi par niveau de forme d''activité (Niveau 1) (Cumul dernière semaine)', 'ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=FOACLS01 & VIEWTAB=3', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CA_NON_EXP_ETAB||||||||||||||||', 'SEJOURS||||||||||||||||', '||', '||', '||', '0||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_006', 16, 'CTI_CA_NON_SOL', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', 'ACTI000057', 'Suivi des délais par mois (Cumul dernier mois)', 'ALIAS_PERIODE=CUM_LAST_MONTH& +GROUPBY=NUMEROMOIS & VIEWTAB=4', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CA_NON_SOL||||||||||||||||', 'SEJOURS||||||||||||||||', '||', '||', '||', '0||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_006', 5, 'CTI_CA_VAL_ETAB', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', 'ACTI000057', 'Suivi des délai par mois (Cumul dernière semaine)', 'ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=NUMEROMOIS & VIEWTAB=2', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CA_VAL_ETAB||||||||||||||||', 'SEJOURS||||||||||||||||', '||', '||', '||', '0||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_006', 19, 'CTI_DELAIFAC', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', 'ACTI000057', 'Suivi des délais par mois (Cumul dernière semaine)', 'ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=NUMEROMOIS', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DELAIFAC||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '0||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_006', 20, 'CTI_DELAISOL', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', 'ACTI000057', 'Suivi des délais par médecin (Cumul dernière semaine)', 'ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=MED', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DELAISOL||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '0||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_006', 18, 'CTI_DEL_GROUPAGE', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', 'ACTI000057', 'Suivi des délais par mois (Cumul dernier mois)', 'ALIAS_PERIODE=CUM_LAST_MONTH& +GROUPBY=NUMEROMOIS', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DEL_GROUPAGE||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '0||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_006', 7, 'CTI_NBSEJ_SOR', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', 'ACTI000057', 'Suivi des délai par UF (Cumul dernière semaine)', 'ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=UFS&VIEWTAB = 1', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSEJ_SOR||||||||||||||||', 'SEJOURS||||||||||||||||', '||', '||', '||', '0||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_006', 8, 'CTI_NB_FACTURES', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', 'ACTI000057', 'Suivi des délais par Forme d''activité et UF (Cumul dernière semaine)', 'ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=FOA&GROUPBY_2=UFS & VIEWTAB = 1', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_FACTURES||||||||||||||||', 'SEJOURS||||||||||||||||', '||', '||', '||', '0||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_006', 3, 'CTI_NB_GP_NFAC', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', 'ACTI000057', 'Suivi des délais par médecin (Cumul dernière semaine)', 'ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=MED', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_GP_NFAC||||||||||||||||', 'SEJOURS||||||||||||||||', '||', '||', '||', '0||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_006', 2, 'CTI_NB_NGR_SOR', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', 'ACTI000057', 'Suivi des délais par mois (Cumul dernier jour)', 'ALIAS_PERIODE=CUM_NOW& +GROUPBY=NUMEROMOIS', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_NGR_SOR||||||||||||||||', 'SEJOURS||||||||||||||||', '||', '||', '||', '0||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_006', 4, 'CTI_NB_NONFAC', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', 'ACTI000057', 'Suivi des délais par mois (Cumul dernière semaine)', 'ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=NUMEROMOIS', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_NONFAC||||||||||||||||', 'SEJOURS||||||||||||||||', '||', '||', '||', '0||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_006', 12, 'CTI_NB_NON_EXP', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', 'ACTI000057', 'Suivi par niveau de forme d''activité (Niveau 2) (Cumul dernière semaine)', 'ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=FOACLS02 & VIEWTAB =3', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_NON_EXP||||||||||||||||', 'SEJOURS||||||||||||||||', '||', '||', '||', '0||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_006', 15, 'CTI_NB_NON_SOLD', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', 'ACTI000057', 'Suivi des délais par Tiers payant (Cumul dernière semaine)', 'ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=TPY & VIEWTAB = 4', '0', '0', '', '', '', '', '0', '0', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_NON_SOLD||||||||||||||||', 'SEJOURS||||||||||||||||', '||', '||', '||', '0||0||||||||||||||', '0||0||||||||||||||'), +('CTI_ESS_006', 1, 'CTI_SEP', '', '', 'Reste a facturer', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Reste a facturer||', '||', '||', '||||||||||||||||', '||||||||||||||||'), +('CTI_ESS_006', 6, 'CTI_SEP', '', '', 'Facturation', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Facturation||', '||', '||', '||||||||||||||||', '||||||||||||||||'), +('CTI_ESS_006', 11, 'CTI_SEP', '', '', 'Expédition', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Expédition||', '||', '||', '||||||||||||||||', '||||||||||||||||'), +('CTI_ESS_006', 14, 'CTI_SEP', '', '', 'Solde', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Solde||', '||', '||', '||||||||||||||||', '||||||||||||||||'), +('CTI_ESS_006', 17, 'CTI_SEP', '', '', 'Délai de traitement', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Délai de traitement||', '||', '||', '||||||||||||||||', '||||||||||||||||'), +('CTI_EX1', 17, 'CTI_MTCOM_H#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTCOM_H#4||||||||||||||||', 'FACTURATION_HONORAIRE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 22, 'CTI_MTENC_C#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTENC_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 20, 'CTI_MTFAC_C#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTFAC_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 16, 'CTI_MTVEN_C#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTVEN_C#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 24, 'CTI_MT_FAC_TOT#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MT_FAC_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 6, 'CTI_NBAMB', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBAMB||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 3, 'CTI_NBENTDIR', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBENTDIR||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 7, 'CTI_NBEXT', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBEXT||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 5, 'CTI_NBJSN', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBJSN||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 8, 'CTI_NBSCE', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSCE||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 2, 'CTI_NBSEJO', '', '', 'Nombre de séjours Période', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSEJO||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Nombre de séjours Période||', '||', '||', '||', '||'), +('CTI_EX1', 4, 'CTI_NBSORDIR', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSORDIR||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 13, 'CTI_NB_GROU#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_GROU#2||||||||||||||||', 'SEJOURS||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 12, 'CTI_NB_NGROU', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_NGROU||||||||||||||||', 'SEJOURS||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 11, 'CTI_NB_SEJ_FAEN#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_FAEN#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 23, 'CTI_NB_SEJ_FAEN#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_FAEN#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 21, 'CTI_NB_SEJ_VAL#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_VAL#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 19, 'CTI_NSFAC_C#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 15, 'CTI_NSFAC_CS#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC_CS#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX1', 1, 'CTI_SEP', '', '', 'Occupation', '', 0, 0, 10, 14, 'bold', 0, '', '0xffcc00', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Occupation||', '||', '||', '||', '||'), +('CTI_EX1', 10, 'CTI_SEP', '', '', 'Etat des dossiers', '', 0, 0, 10, 14, 'bold', 0, '', '0xffcc00', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Etat des dossiers||', '||', '||', '||', '||'), +('CTI_EX1', 14, 'CTI_SEP', '', '', 'Activité Etablissement Date de Vente', '', 0, 0, 10, 14, 'bold', 0, '', '0xffcc00', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Activité Etablissement Date de Vente||', '||', '||', '||', '||'), +('CTI_EX1', 18, 'CTI_SEP', '', '', 'Activité Clinique', '', 0, 0, 10, 14, 'bold', 0, '', '0xffcc00', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Activité Clinique||', '||', '||', '||', '||'), +('CTI_EX1', 9, 'CTI_TX_HOAM', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_TX_HOAM||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 40, 'CTI_DMSR', '', '', '', '', 0, 0, 0, 0, 'normal', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DMSR||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 41, 'CTI_DMSTOT', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DMSTOT||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 25, 'CTI_NB2_JSN', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB2_JSN||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 30, 'CTI_NB2_JSN', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB2_JSN||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 26, 'CTI_NB5_JSN', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB5_JSN||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 3, 'CTI_NBAMB', '', '', '', '', 0, 0, 0, 0, 'normal', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBAMB||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 11, 'CTI_NBAMB', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBAMB||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 24, 'CTI_NBAMB', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBAMB||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 36, 'CTI_NBAMB', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBAMB||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 27, 'CTI_NBCHPO', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBCHPO||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 2, 'CTI_NBENTDIR', '', '', '', '', 0, 0, 0, 0, 'normal', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBENTDIR||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 6, 'CTI_NBENT_SA', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBENT_SA||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 7, 'CTI_NBENT_SAE', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBENT_SAE||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 8, 'CTI_NBENT_SAES', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBENT_SAES||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 4, 'CTI_NBEXT', '', '', '', '', 0, 0, 0, 0, 'normal', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBEXT||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 12, 'CTI_NBEXT', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBEXT||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 23, 'CTI_NBJSN', '', '', '', '', 0, 0, 0, 0, 'normal', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBJSN||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 33, 'CTI_NBJSN', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBJSN||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 31, 'CTI_NBPLACES', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBPLACES||||||||||||||||', 'PLACES||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 34, 'CTI_NBPLACES_H', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBPLACES_H||||||||||||||||', 'PLACES||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 5, 'CTI_NBSCE', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSCE||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 13, 'CTI_NBSCE', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSCE||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 22, 'CTI_NBSEJO', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSEJO||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 10, 'CTI_NBSORDIR', '', '', '', '', 0, 0, 0, 0, 'normal', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSORDIR||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 14, 'CTI_NBSOR_SA', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSOR_SA||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 16, 'CTI_NBSOR_SAE', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSOR_SAE||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 17, 'CTI_NBSOR_SAES', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSOR_SAES||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 20, 'CTI_NBURG', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBURG||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 19, 'CTI_NB_BEBE', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_BEBE||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 15, 'CTI_RAT_AMB_END', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_RAT_AMB_END||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 1, 'CTI_SEP', '', '', 'Entrées', '', 0, 0, 0, 14, 'bold', 0, '', '0xffcc33', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Entrées||', '||', '||', '||', '||'), +('CTI_EX2', 9, 'CTI_SEP', '', '', 'Sorties', '', 0, 0, 0, 14, 'bold', 0, '', '0xffcc33', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Sorties||', '||', '||', '||', '||'), +('CTI_EX2', 18, 'CTI_SEP', '', '', 'Compteurs Divers', '', 0, 0, 0, 14, 'bold', 0, '', '0xffcc33', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Compteurs Divers||', '||', '||', '||', '||'), +('CTI_EX2', 21, 'CTI_SEP', '', '', 'Journées', '', 0, 0, 0, 14, 'bold', 0, '', '0xffcc33', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Journées||', '||', '||', '||', '||'), +('CTI_EX2', 29, 'CTI_SEP', '', '', 'Taux d''occupation', '', 0, 0, 0, 14, 'bold', 0, '', '0xffcc33', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Taux d''occupation||', '||', '||', '||', '||'), +('CTI_EX2', 39, 'CTI_SEP', '', '', 'DMS', '', 0, 0, 0, 14, 'bold', 0, '', '0xffcc33', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'DMS||', '||', '||', '||', '||'), +('CTI_EX2', 28, 'CTI_TXCHP_NBJ', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_TXCHP_NBJ||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 38, 'CTI_TX_AM', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_TX_AM||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 35, 'CTI_TX_HO', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_TX_HO||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX2', 32, 'CTI_TX_HOAM', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_TX_HOAM||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 28, 'CTI_CAMFAC_CS', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CAMFAC_CS||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 13, 'CTI_CAMFAC_DC', '', '', 'CA Moyen Facturé', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CAMFAC_DC||||||||||||||||', '*CALC||||||||||||||||', 'CA Moyen Facturé||', '||', '||', '||', '||'), +('CTI_EX3', 14, 'CTI_MTCOM_H#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTCOM_H#4||||||||||||||||', 'FACTURATION_HONORAIRE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 16, 'CTI_MTC_CHDV_FAC', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTC_CHDV_FAC||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 30, 'CTI_MTENC_C#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTENC_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 19, 'CTI_MTFAC1_C#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTFAC1_C#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 23, 'CTI_MTFAC2_C#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTFAC2_C#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 27, 'CTI_MTFAC_C#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTFAC_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 12, 'CTI_MTVEN_C#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTVEN_C#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 32, 'CTI_MT_FAC_TOT#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MT_FAC_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 6, 'CTI_NBAMB', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBAMB||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 3, 'CTI_NBENTDIR', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBENTDIR||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 7, 'CTI_NBEXT', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBEXT||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 5, 'CTI_NBJSN', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBJSN||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 8, 'CTI_NBSCE', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSCE||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 2, 'CTI_NBSEJO', '', '', 'Nombre de séjours Période', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSEJO||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Nombre de séjours Période||', '||', '||', '||', '||'), +('CTI_EX3', 4, 'CTI_NBSORDIR', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSORDIR||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 31, 'CTI_NB_SEJ_FAEN#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_FAEN#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 29, 'CTI_NB_SEJ_VAL#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_VAL#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 18, 'CTI_NSFAC1_CS#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC1_CS#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 22, 'CTI_NSFAC2_CS#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC2_CS#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 26, 'CTI_NSFAC_C#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 11, 'CTI_NSFAC_CS#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC_CS#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 20, 'CTI_RAT_AMB1_CAT', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_RAT_AMB1_CAT||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 24, 'CTI_RAT_AMB2_CAT', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_RAT_AMB2_CAT||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 15, 'CTI_RAT_CAH_CAL', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_RAT_CAH_CAL||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX3', 1, 'CTI_SEP', '', '', 'Occupation', '', 0, 0, 0, 14, 'bold', 0, '', '0xffcc00', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Occupation||', '||', '||', '||', '||'), +('CTI_EX3', 10, 'CTI_SEP', '', '', 'Activité Etablissement Date de Vente', '', 0, 0, 0, 14, 'bold', 0, '', '0xffcc00', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Activité Etablissement Date de Vente||', '||', '||', '||', '||'), +('CTI_EX3', 17, 'CTI_SEP', '', '', 'Activité Hospitalisés : Date de Vente', '', 0, 0, 0, 14, 'bold', 0, '', '0xffcc33', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Activité Hospitalisés : Date de Vente||', '||', '||', '||', '||'), +('CTI_EX3', 21, 'CTI_SEP', '', '', 'Activité Ambulatoire : Date de Vente', '', 0, 0, 0, 14, 'bold', 0, '', '0xffcc33', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Activité Ambulatoire : Date de Vente||', '||', '||', '||', '||'), +('CTI_EX3', 25, 'CTI_SEP', '', '', 'Activité Clinique Facturée et Valorisée : Date de Sortie', '', 0, 0, 0, 14, 'bold', 0, '', '0xffcc00', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Activité Clinique Facturée et Valorisée : Date de Sortie||', '||', '||', '||', '||'), +('CTI_EX3', 9, 'CTI_TX_HOAM', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_TX_HOAM||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 47, 'CTI_CAMFAC1_DC', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CAMFAC1_DC||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 51, 'CTI_CAMFAC2_DC', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CAMFAC2_DC||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 55, 'CTI_CAMFAC5_DC', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CAMFAC5_DC||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 39, 'CTI_CAMFAC_CS', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CAMFAC_CS||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 19, 'CTI_CAMFAC_DC', '', '', 'CA Moyen Facturé', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_CAMFAC_DC||||||||||||||||', '*CALC||||||||||||||||', 'CA Moyen Facturé||', '||', '||', '||', '||'), +('CTI_EX4', 56, 'CTI_DIA_MT_FAC#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DIA_MT_FAC#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 14, 'CTI_DMSR', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DMSR||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 15, 'CTI_DMSTOT', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_DMSTOT||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 21, 'CTI_MTCOM_H#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTCOM_H#4||||||||||||||||', 'FACTURATION_HONORAIRE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 23, 'CTI_MTC_CHDV_FAC', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTC_CHDV_FAC||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 41, 'CTI_MTENC_C#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTENC_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 46, 'CTI_MTFAC1_C#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTFAC1_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 26, 'CTI_MTFAC1_C#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTFAC1_C#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 50, 'CTI_MTFAC2_C#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTFAC2_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 30, 'CTI_MTFAC2_C#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTFAC2_C#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 54, 'CTI_MTFAC5_C#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTFAC5_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 34, 'CTI_MTFAC5_C#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTFAC5_C#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 38, 'CTI_MTFAC_C#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTFAC_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 18, 'CTI_MTVEN_C#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MTVEN_C#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 43, 'CTI_MT_FAC_TOT#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_MT_FAC_TOT#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 10, 'CTI_NB2_JSN', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB2_JSN||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 6, 'CTI_NBAMB', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBAMB||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 3, 'CTI_NBENTDIR', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBENTDIR||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 7, 'CTI_NBEXT', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBEXT||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 5, 'CTI_NBJSN', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBJSN||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 11, 'CTI_NBPLACES', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBPLACES||||||||||||||||', 'PLACES||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 8, 'CTI_NBSCE', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSCE||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 2, 'CTI_NBSEJO', '', '', 'Nombre de séjours Période', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSEJO||||||||||||||||', 'OCCUPATION||||||||||||||||', 'Nombre de séjours Période||', '||', '||', '||', '||'), +('CTI_EX4', 4, 'CTI_NBSORDIR', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NBSORDIR||||||||||||||||', 'OCCUPATION||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 42, 'CTI_NB_SEJ_FAEN#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_FAEN#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 40, 'CTI_NB_SEJ_VAL#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NB_SEJ_VAL#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 45, 'CTI_NSFAC1_CS#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC1_CS#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 25, 'CTI_NSFAC1_CS#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC1_CS#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 49, 'CTI_NSFAC2_CS#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC2_CS#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 29, 'CTI_NSFAC2_CS#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC2_CS#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 53, 'CTI_NSFAC5_CS#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC5_CS#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 33, 'CTI_NSFAC5_CS#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC5_CS#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 37, 'CTI_NSFAC_C#2', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC_C#2||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 17, 'CTI_NSFAC_CS#4', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_NSFAC_CS#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 27, 'CTI_RAT_AMB1_CAT', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_RAT_AMB1_CAT||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 31, 'CTI_RAT_AMB2_CAT', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_RAT_AMB2_CAT||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 35, 'CTI_RAT_AMB5_CAT', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_RAT_AMB5_CAT||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 22, 'CTI_RAT_CAH_CAL', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_RAT_CAH_CAL||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_EX4', 20, 'CTI_RUBMED_MT_FAC#4', '', 'Montant CA (Hors Pdts refac.)', 'Montant CA (Hors Produits refacturables)', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_RUBMED_MT_FAC#4||||||||||||||||', 'FACTURATION_CLINIQUE||||||||||||||||', 'Montant CA (Hors Produits refacturables)||', '||', '||', '||', '||'), +('CTI_EX4', 1, 'CTI_SEP', '', '', 'Occupation.', '', 0, 0, 0, 14, 'bold', 0, '', '0xffcc00', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Occupation.||', '||', '||', '||', '||'), +('CTI_EX4', 9, 'CTI_SEP', '', '', 'Taux d''occupation', '', 0, 0, 10, 10, 'bold', 0, '', '0xffff66', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Taux d''occupation||', '||', '||', '||', '||'), +('CTI_EX4', 13, 'CTI_SEP', '', '', 'DMS', '', 0, 0, 10, 10, 'bold', 0, '', '0xffff66', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'DMS||', '||', '||', '||', '||'), +('CTI_EX4', 16, 'CTI_SEP', '', '', 'Activité Etablissement Date de Vente', '', 0, 0, 0, 14, 'bold', 0, '', '0xffcc00', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Activité Etablissement Date de Vente||', '||', '||', '||', '||'), +('CTI_EX4', 24, 'CTI_SEP', '', '', 'Activité Hospitalisés : Date de Vente', '', 0, 0, 10, 10, 'bold', 0, '', '0xffff66', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Activité Hospitalisés : Date de Vente||', '||', '||', '||', '||'), +('CTI_EX4', 28, 'CTI_SEP', '', '', 'Activité Ambulatoire : Date de Vente', '', 0, 0, 10, 10, 'bold', 0, '', '0xffff66', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Activité Ambulatoire : Date de Vente||', '||', '||', '||', '||'), +('CTI_EX4', 32, 'CTI_SEP', '', '', 'Activité Séances : Date de vente', '', 0, 0, 10, 10, 'bold', 0, '', '0xffff66', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Activité Séances : Date de vente||', '||', '||', '||', '||'), +('CTI_EX4', 36, 'CTI_SEP', '', '', 'Activité Clinique Facturée et Valorisée : Date de Sortie.', '', 0, 0, 0, 14, 'bold', 0, '', '0xffcc00', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Activité Clinique Facturée et Valorisée : Date de Sortie.||', '||', '||', '||', '||'), +('CTI_EX4', 44, 'CTI_SEP', '', '', 'Activité Hospitalisés : Date de Sortie', '', 0, 0, 10, 10, 'bold', 0, '', '0xffff66', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Activité Hospitalisés : Date de Sortie||', '||', '||', '||', '||'), +('CTI_EX4', 48, 'CTI_SEP', '', '', 'Activité Ambulatoire : Date de sortie', '', 0, 0, 10, 10, 'bold', 0, '', '0xffff66', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Activité Ambulatoire : Date de sortie||', '||', '||', '||', '||'), +('CTI_EX4', 52, 'CTI_SEP', '', '', 'Actvité Séances : Date de sortie', '', 0, 0, 10, 10, 'bold', 0, '', '0xffff66', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Actvité Séances : Date de sortie||', '||', '||', '||', '||'), +('CTI_EX4', 12, 'CTI_TX_HOAM', '', '', '', '', 0, 0, 0, 0, '', 0, '', '', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_TX_HOAM||||||||||||||||', '*CALC||||||||||||||||', '||', '||', '||', '||', '||'), +('CTI_PF_AGG', 1, 'CTI_SEP', '', '', 'Portfolio CTI', '', 0, 26, 0, 14, 'bold', 2, '0xc0392b', '0xcccccc', '0', '0', '', '', '', ' ', ' ', '', '', '', '', '', '', '0', '', '', '', '||||||', '0', '', '', '', 'CTI_SEP||||||||||||||||', 'SEP||||||||||||||||', 'Portfolio CTI||', '||', '||', '||', '||') +; + +-- 3/3 : Màj de la table iCTI +-- Sauvegarder les données sources pour rejouer le spécifique +SELECT base.cti_verify_table_encoding('activite','t_rapports_rubriques') +; +DROP TABLE IF EXISTS w_specific_rapports_rubriques ; +CREATE TEMP TABLE w_specific_rapports_rubriques AS +SELECT t_rapports_rubriques.* +FROM activite.t_rapports_rubriques +JOIN activite.t_rapports ON t_rapports_rubriques.rapport_id = t_rapports.oid +WHERE t_rapports.is_essentiel = '1' +; + +ALTER TABLE w_dbsetup ADD COLUMN to_rapport_id bigint DEFAULT 0; +UPDATE w_dbsetup SET to_rapport_id = t_rapports.oid FROM activite.t_rapports WHERE rapport_code = t_rapports.code; + +ALTER TABLE w_dbsetup ADD COLUMN to_indicateur_id bigint DEFAULT 0; +UPDATE w_dbsetup SET to_indicateur_id = t_indicateurs.oid FROM activite.t_indicateurs WHERE indicateur_code = t_indicateurs.code AND t_indicateurs.code <> ''; + +ALTER TABLE w_dbsetup ADD COLUMN to_indicateur_associe_id bigint DEFAULT 0; +UPDATE w_dbsetup SET to_indicateur_associe_id = t_indicateurs.oid FROM activite.t_indicateurs WHERE indicateur_associe_code = t_indicateurs.code AND t_indicateurs.code <> ''; + +ALTER TABLE w_dbsetup ADD COLUMN to_serie_indicateur_code text[]; +UPDATE w_dbsetup SET to_serie_indicateur_code = string_to_array(serie_indicateur_code,'||'); + +ALTER TABLE w_dbsetup ADD COLUMN to_serie_indicateur_id bigint[]; +UPDATE w_dbsetup SET to_serie_indicateur_id[1] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[1] = t_indicateurs.code AND t_indicateurs.code <> ''; +UPDATE w_dbsetup SET to_serie_indicateur_id[2] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[2] = t_indicateurs.code AND t_indicateurs.code <> ''; +UPDATE w_dbsetup SET to_serie_indicateur_id[3] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[3] = t_indicateurs.code AND t_indicateurs.code <> ''; +UPDATE w_dbsetup SET to_serie_indicateur_id[4] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[4] = t_indicateurs.code AND t_indicateurs.code <> ''; +UPDATE w_dbsetup SET to_serie_indicateur_id[5] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[5] = t_indicateurs.code AND t_indicateurs.code <> ''; +UPDATE w_dbsetup SET to_serie_indicateur_id[6] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[6] = t_indicateurs.code AND t_indicateurs.code <> ''; +UPDATE w_dbsetup SET to_serie_indicateur_id[7] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[7] = t_indicateurs.code AND t_indicateurs.code <> ''; +UPDATE w_dbsetup SET to_serie_indicateur_id[8] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[8] = t_indicateurs.code AND t_indicateurs.code <> ''; +UPDATE w_dbsetup SET to_serie_indicateur_id[9] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[9] = t_indicateurs.code AND t_indicateurs.code <> ''; + + +ALTER TABLE w_dbsetup ADD COLUMN to_indicateur_condition_external_code text[]; +UPDATE w_dbsetup SET to_indicateur_condition_external_code = string_to_array(indicateur_condition_external_code,'||'); + + +ALTER TABLE w_dbsetup ADD COLUMN to_indicateur_condition_id bigint[]; +UPDATE w_dbsetup SET to_indicateur_condition_id[1] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[1] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; +UPDATE w_dbsetup SET to_indicateur_condition_id[2] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[2] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; +UPDATE w_dbsetup SET to_indicateur_condition_id[3] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[3] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; +UPDATE w_dbsetup SET to_indicateur_condition_id[4] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[4] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; +UPDATE w_dbsetup SET to_indicateur_condition_id[5] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[5] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; +UPDATE w_dbsetup SET to_indicateur_condition_id[6] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[6] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; +UPDATE w_dbsetup SET to_indicateur_condition_id[7] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[7] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; +UPDATE w_dbsetup SET to_indicateur_condition_id[8] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[8] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; +UPDATE w_dbsetup SET to_indicateur_condition_id[9] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[9] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; + + +-- Installer les données CTI +DELETE FROM activite.t_rapports_rubriques +WHERE 1=1 + AND rapport_id IN (SELECT to_rapport_id FROM w_dbsetup) +; + +INSERT INTO activite.t_rapports_rubriques( + rapport_id, + numero_rubrique, + indicateur_id, + indicateur_associe_id, + entete, + entete_etendue, + output_format, + width, + row_height, + padding, + font_size, + font_weight, + border_thickness, + color, + background_color, + base_nationale, + base_nationale_qualifiee, + viewlink, + viewlink_label, + viewlink_param, + picto_enabled, + positif_is_good, + description, + description_2, + entete_etendue_2, + output_format_2, + picto_enabled_2, + positif_is_good_2, + is_hide, + specific_viewlink, + specific_viewlink_label, + specific_viewlink_param, + indicateur_condition_id, + erase_rapport_indicateur_condition, + calc_formula, + hide_on_zero_field, + field_tag, + serie_indicateur_id, + serie_entete_etendue, + serie_description, + serie_output_format, + serie_picto_enabled, + serie_positif_is_good + ) +SELECT + to_rapport_id, + numero_rubrique, + to_indicateur_id, + to_indicateur_associe_id, + entete, + entete_etendue, + output_format, + width, + row_height, + padding, + font_size, + font_weight, + border_thickness, + color, + background_color, + base_nationale, + base_nationale_qualifiee, + viewlink, + viewlink_label, + viewlink_param, + picto_enabled, + positif_is_good, + description, + description_2, + entete_etendue_2, + output_format_2, + picto_enabled_2, + positif_is_good_2, + is_hide, + specific_viewlink, + specific_viewlink_label, + specific_viewlink_param, + to_indicateur_condition_id, + erase_rapport_indicateur_condition, + calc_formula, + hide_on_zero_field, + field_tag, + to_serie_indicateur_id, + string_to_array(serie_entete_etendue,'||'), + string_to_array(serie_description,'||'), + string_to_array(serie_output_format,'||'), + string_to_array(serie_picto_enabled,'||'), + string_to_array(serie_positif_is_good,'||') +FROM w_dbsetup +WHERE to_rapport_id <> 0 AND to_indicateur_id <> 0 +; + +-- Rejouer le spécifique +UPDATE activite.t_rapports_rubriques SET + is_hide = w_specific_rapports_rubriques.is_hide, + specific_viewlink = CASE WHEN w_specific_rapports_rubriques.specific_viewlink IN ('1', '2') THEN '' ELSE w_specific_rapports_rubriques.specific_viewlink END, + specific_viewlink_label = w_specific_rapports_rubriques.specific_viewlink_label, + specific_viewlink_param = w_specific_rapports_rubriques.specific_viewlink_param +FROM w_specific_rapports_rubriques +WHERE w_specific_rapports_rubriques.rapport_id = t_rapports_rubriques.rapport_id AND + w_specific_rapports_rubriques.indicateur_id = t_rapports_rubriques.indicateur_id AND + w_specific_rapports_rubriques.entete_etendue = t_rapports_rubriques.entete_etendue AND + ( + w_specific_rapports_rubriques.is_hide = '1' OR + w_specific_rapports_rubriques.specific_viewlink <> '' OR + w_specific_rapports_rubriques.specific_viewlink_label <> '' OR + w_specific_rapports_rubriques.specific_viewlink_param <> '' + ) +; \ No newline at end of file diff --git a/db/data/dbdata_activite_t_severites_cti.SQL b/db/data/dbdata_activite_t_severites_cti.SQL new file mode 100644 index 0000000..10d471d --- /dev/null +++ b/db/data/dbdata_activite_t_severites_cti.SQL @@ -0,0 +1,52 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + severite_id as keepoid, + severite_code, + severite_texte + FROM activite.t_severites_cti + ORDER BY severite_code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + keepoid, + severite_code, + severite_texte +) +VALUES +('0', '**', 'Non renseignee'), +('1', '1', 'Sévérité 1'), +('8', '8', 'Non PMSI'), +('2', 'ABCDE', 'Sévérité ABCDE'), +('3', 'J', 'Sévérité J'), +('4', 'S', 'séances'), +('5', 'T', 'Sévérité T'), +('6', 'Z', 'Sévérité Z'), +('7', 's', 'DS > 2 nuits') +; + +-- 3/3 : Màj de la table iCTI +UPDATE activite.t_severites_cti SET + severite_code = w_dbsetup.severite_code, + severite_texte = w_dbsetup.severite_code +FROM w_dbsetup +WHERE w_dbsetup.keepoid = t_severites_cti.severite_id AND w_dbsetup.keepoid = 0; + +UPDATE activite.t_severites_cti SET + severite_texte = w_dbsetup.severite_texte +FROM w_dbsetup +WHERE 1=1 + AND activite.t_severites_cti.severite_code = w_dbsetup.severite_code + AND activite.t_severites_cti.severite_texte IS DISTINCT FROM w_dbsetup.severite_texte +; + +INSERT INTO activite.t_severites_cti(severite_id, severite_code, severite_texte) + SELECT keepoid, severite_code, severite_texte + FROM w_dbsetup + WHERE 1=1 + AND keepoid NOT IN (SELECT severite_id FROM activite.t_severites_cti) +; \ No newline at end of file diff --git a/db/data/dbdata_activite_t_traitement_epmsi.SQL b/db/data/dbdata_activite_t_traitement_epmsi.SQL new file mode 100644 index 0000000..d1f04db --- /dev/null +++ b/db/data/dbdata_activite_t_traitement_epmsi.SQL @@ -0,0 +1,62 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + oid as keepoid, + code, + texte + FROM activite.t_traitement_epmsi + ORDER BY code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + keepoid, + code, + texte +) +VALUES +(0, '**', 'Non renseigné'), +(41, 'EXHAD', 'PMSI HAD Transmis'), +(11, 'EXMCO', 'PMSI MCO Transmis'), +(31, 'EXPSY', 'PMSI PSY Transmis'), +(21, 'EXSSR', 'PMSI SSR Transmis'), +(5, 'HPMSI', 'HORS PMSI'), +(40, 'NEXHAD', 'PMSI HAD Non Transmis'), +(10, 'NEXMCO', 'PMSI MCO Non Transmis'), +(30, 'NEXPSY', 'PMSI PSY Non Transmis'), +(20, 'NEXSSR', 'PMSI SSR Non Transmis') +; + +-- 3/3 : Màj de la table iCTI +UPDATE activite.t_traitement_epmsi SET + code = w_dbsetup.code, + texte = w_dbsetup.texte +FROM w_dbsetup +WHERE w_dbsetup.keepoid = t_traitement_epmsi.oid AND w_dbsetup.keepoid = 0; + +UPDATE activite.t_traitement_epmsi SET + texte = w_dbsetup.texte +FROM w_dbsetup +WHERE 1=1 + AND activite.t_traitement_epmsi.code = w_dbsetup.code + AND activite.t_traitement_epmsi.texte IS DISTINCT FROM w_dbsetup.texte +; + +INSERT INTO activite.t_traitement_epmsi(oid, code, texte) + SELECT keepoid, code, texte + FROM w_dbsetup + WHERE 1=1 + AND keepoid = 0 + AND keepoid NOT IN (SELECT oid FROM activite.t_traitement_epmsi) +; + +INSERT INTO activite.t_traitement_epmsi(oid,code,texte) + SELECT keepoid, code, texte + FROM w_dbsetup + WHERE 1=1 + AND keepoid <> 0 + AND code NOT IN (SELECT code FROM activite.t_traitement_epmsi) +; \ No newline at end of file diff --git a/db/data/dbdata_activite_t_type_hospi_pmsi.SQL b/db/data/dbdata_activite_t_type_hospi_pmsi.SQL new file mode 100644 index 0000000..0ddf97e --- /dev/null +++ b/db/data/dbdata_activite_t_type_hospi_pmsi.SQL @@ -0,0 +1,57 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + CASE WHEN oid = 0 THEN oid ELSE 1 END AS oid, + code, + texte + FROM activite.t_type_hospi_pmsi + ORDER BY code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + oid, + code, + texte +) +VALUES +(1, '11', 'MCO hospitalisés'), +(1, '12', 'MCO Ambulatoires'), +(1, '15', 'MCO Séances'), +(1, '21', 'SSR hospitalisation complète'), +(1, '22', 'SSR hospitalisation partiel'), +(1, '24', 'SSR Autres'), +(1, '30', 'Externes'), +(1, '31', 'PSY hospitalisation complète'), +(1, '32', 'PSY hospitalisation partiel'), +(1, '41', 'HAD') +; + +-- 3/3 : Màj de la table iCTI +UPDATE w_dbsetup SET + oid = w_dbsetup.code::bigint; + +UPDATE activite.t_type_hospi_pmsi SET + oid = w_dbsetup.oid, + code = w_dbsetup.code, + texte = w_dbsetup.texte +FROM w_dbsetup +WHERE w_dbsetup.oid = t_type_hospi_pmsi.oid AND w_dbsetup.oid = 0; + +UPDATE activite.t_type_hospi_pmsi SET + texte = w_dbsetup.texte +FROM w_dbsetup +WHERE 1=1 + AND activite.t_type_hospi_pmsi.code = w_dbsetup.code + AND activite.t_type_hospi_pmsi.texte IS DISTINCT FROM w_dbsetup.texte +; + +INSERT INTO activite.t_type_hospi_pmsi(oid,code,texte) + SELECT oid, code, texte + FROM w_dbsetup + WHERE 1=1 + AND oid NOT IN (SELECT oid FROM activite.t_type_hospi_pmsi) +; \ No newline at end of file diff --git a/db/data/dbdata_activite_t_type_sejour.SQL b/db/data/dbdata_activite_t_type_sejour.SQL new file mode 100644 index 0000000..a44c7b5 --- /dev/null +++ b/db/data/dbdata_activite_t_type_sejour.SQL @@ -0,0 +1,53 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + CASE WHEN oid = 0 THEN oid ELSE 1 END AS oid, + code, + texte + FROM activite.t_type_sejour + ORDER BY code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + oid, + code, + texte +) +VALUES +(1, '0', 'Non renseigné'), +(1, '1', 'Hospitalisé'), +(1, '2', 'Ambulatoires'), +(1, '3', 'Externes'), +(1, '5', 'Séances'), +(1, '9', 'Fictifs') +; + +-- 3/3 : Màj de la table iCTI +UPDATE w_dbsetup SET + oid = w_dbsetup.code::bigint; + +UPDATE activite.t_type_sejour SET + oid = w_dbsetup.oid, + code = w_dbsetup.code, + texte = w_dbsetup.texte +FROM w_dbsetup +WHERE w_dbsetup.oid = t_type_sejour.oid AND w_dbsetup.oid = 0; + +UPDATE activite.t_type_sejour SET + texte = w_dbsetup.texte +FROM w_dbsetup +WHERE 1=1 + AND activite.t_type_sejour.code = w_dbsetup.code + AND activite.t_type_sejour.texte IS DISTINCT FROM w_dbsetup.texte +; + +INSERT INTO activite.t_type_sejour(oid,code,texte) + SELECT oid, code, texte + FROM w_dbsetup + WHERE 1=1 + AND oid NOT IN (SELECT oid FROM activite.t_type_sejour) +; \ No newline at end of file diff --git a/db/data/dbdata_activite_t_types_gmt.SQL b/db/data/dbdata_activite_t_types_gmt.SQL new file mode 100644 index 0000000..e4e4f11 --- /dev/null +++ b/db/data/dbdata_activite_t_types_gmt.SQL @@ -0,0 +1,37 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + t_types_gmt.code, + t_types_gmt.label, + t_types_gmt.description + FROM + activite.t_types_gmt + ORDER BY code LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + code, + label, + description +) +VALUES +('hc_forfaitisable', 'GMT forfaitisable (Hospitalisation complète)', 'Au moins 50% des séjours d''un même GME (Groupe Médico-Économique) se répartissent sur une période continue de 3 semaines.'), +('hc_non_forfaitisable', 'GMT non forfaitisable (Hospitalisation complète)', 'Le GME ne respecte pas la règle de la forfaitisation (voir description du type_gmt ''hc_forfaitisable'').'), +('hc_sans_zf', 'GMT sans zone forfaitaire (Hospitalisation Complète) ', 'GMT où DZF = FZF = 7 (GMT en 7XXX des séjours en HC post 90 jours, en 8XXX des séjours < 8j avec transfert, décès ou mutation) ou DZF = FZF = 90 (GMT pédiatrie ou soins palliatifs)'), +('hp_hebdomadaire', 'GMT hebdomadaire hospitalisation partielle', 'GMT récupéré des RHA des séjours en hospitalisation partielle.') +; + +-- 3/3 : Màj de la table iCTI +INSERT INTO activite.t_types_gmt(code, label, description) + SELECT + w_dbsetup.code, + w_dbsetup.label, + w_dbsetup.description + FROM + w_dbsetup + WHERE w_dbsetup.code NOT IN (SELECT code from activite.t_types_gmt) +; \ No newline at end of file diff --git a/db/data/dbdata_activite_t_vue_parametre.SQL b/db/data/dbdata_activite_t_vue_parametre.SQL new file mode 100644 index 0000000..2d10664 --- /dev/null +++ b/db/data/dbdata_activite_t_vue_parametre.SQL @@ -0,0 +1,77 @@ +-- 1/3 : Création de la table temporaire +DROP TABLE IF EXISTS w_dbsetup +; + +CREATE TEMP TABLE w_dbsetup AS + SELECT + CASE WHEN oid = 0 THEN oid ELSE 1 END AS oid, + code, + texte, + array_to_string(data_code, '@') as data_code, + array_to_string(data_entete, '@') as data_entete, + array_to_string(data_format, '@') as data_format, + array_to_string(data_description, '@') as data_description, + position_ratio, + rang + FROM activite.t_vue_parametre + ORDER BY 1 LIMIT 0 +; + +-- 2/3 : Peuplement de la table temporaire +INSERT INTO w_dbsetup( + oid, + code, + texte, + data_code, + data_entete, + data_format, + data_description, + position_ratio, + rang +) +VALUES +(1, 'L_DATA_101', 'CTI : Séjours - C.A Total', 'FAVNBS@MTFACENC@MMTFACENC@0@0@0@0@0@0@0@0@0@0@0@0', 'Séjours total@C.A total@C.A moyen total', '#@#E@#E', 'Séjours facturés et valorisés@C.A facturé et valorisé@C.A Moyen Facturé et valorisé@0@0@0@0@0@0@0@0@0@0@0@0', '000000000000000', 0), +(1, 'L_DATA_1', 'CTI : EMC - C.A Total ', 'FAVEMC@MTFACENC@MMFPVEMC@0@0@0@0@0@0@0@0@0@0@0@0', 'EMC total@C.A total@C.A moyen total EMC', '#@#E@#E', 'Equivalent Malade Complet Facturé ou Valorisé
Calculé d''après l''occupation des dossiers facturés ou Valorisés sur la base de
- 1 EMC par séjour en Hospitalisation Complète MCO
- 1 EMC par jour en Hospitalisation de jour MCO
- 1 EMC par séance en Hospitalisation séance MCO
- 1 EMC par semaine en Hospitalisation Complète SSR ou PSY
- 1 EMC par jour en Hospitalisation de jour SSR ou PSY
- 1 EMC par séjour pour les autres cas (Externes)
Cet indicateur n''est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d''activité ou date de sortie@C.A facturé et valorisé@C.A Moyen EMC Facturé et valorisé@0@0@0@0@0@0@0@0@0@0@0@0', '000000000000000', 0), +(1, 'L_DATA_2', 'CTI : EMC - C.A Total - Journées', 'FAVEMC@MTFACENC@MMFPVEMC@FAVNBJ@0@0@0@0@0@0@0@0@0@0@0', 'EMC total@C.A total@C.A moyen total EMC@Nombre journées total', '#@#E@#E@#', 'Equivalent Malade Complet Facturé ou Valorisé
Calculé d''après l''occupation des dossiers facturés ou Valorisés sur la base de
- 1 EMC par séjour en Hospitalisation Complète MCO
- 1 EMC par jour en Hospitalisation de jour MCO
- 1 EMC par séance en Hospitalisation séance MCO
- 1 EMC par semaine en Hospitalisation Complète SSR ou PSY
- 1 EMC par jour en Hospitalisation de jour SSR ou PSY
- 1 EMC par séjour pour les autres cas (Externes)
Cet indicateur n''est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d''activité ou date de sortie@C.A facturé et valorisé@C.A Moyen EMC Facturé et valorisé@Nombre de journées Facturées ou Valorisées
Calculé d''après l''occupation des dossiers facturés ou valorisés sur la base de
- Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO
- Nombre de jours de présence en Hospitalisation de jour MCO
- Nombre de séances en Hospitalisation séance MCO
- Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SSR ou PSY
- Nombre de jours de présence en Hospitalisation de jour SSR ou PSY
- 0 pour les autres cas (Externes)
Cet indicateur n''est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d''activité ou date de sortie@0@0@0@0@0@0@0@0@0@0@0', '000000000000000', 0), +(1, 'L_DATA_3', 'CTI : EMC - C.A Total - Journées - C.A ( HC & HJ )', 'FAVEMC@MTFACENC@MMFPVEMC@FAVNBJ@FAVNBEMCHC@FAVMTTHC@FAVCAMHC@FAVNBSHJ@FAVMTTHJ@FAVCAMHJ@0@0@0@0@0', 'EMC total@C.A total@C.A moyen total EMC@Nombre journées total@Nombre EMC HC@C.A total HC@C.A moyen total HC@Séjours HJ@C.A total HJ@C.A moyen total HJ@0@0@0@0@0', '#@#E@#E@#@#@#E@#E@#@#E@#E', 'Equivalent Malade Complet Facturé ou Valorisé
Calculé d''après l''occupation des dossiers facturés ou Valorisés sur la base de
- + 1 EMC par séjour en Hospitalisation Complète MCO
- 1 EMC par jour en Hospitalisation de jour MCO
- 1 EMC par séance en Hospitalisation séance MCO
- + 1 EMC par semaine en Hospitalisation Complète SSR ou PSY
- 1 EMC par jour en Hospitalisation de jour SSR ou PSY
- + 1 EMC par séjour pour les autres cas (Externes)
Cet indicateur n''est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d''activité ou date de sortie@C.A facturé et valorisé@C.A Moyen EMC Facturé et valorisé@Nombre de journées Facturées ou Valorisées
Calculé d''après l''occupation des dossiers facturés ou valorisés sur la base de
- +Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO
- Nombre de jours de présence en Hospitalisation de jour MCO
- + Nombre de séances en Hospitalisation séance MCO
- Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SSR ou PSY
- + Nombre de jours de présence en Hospitalisation de jour SSR ou PSY
- 0 pour les autres cas (Externes)
Cet indicateur n''est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d''activité ou date de sortie@Nombre EMC en Hospitalisation complète HC@C.A facturé et valorisé en Hospitalisation complète HC@CA Moyen EMC facturé et valorisé en Hospitalisation complète HC@Nombre de séjours en Hospitalisation de jour HJ@C.A facturé et valorisé en Hospitalisation de jour HJ@CA moyen facturé et valorisé en Hospitalisation de jour HJ@0@0@0@0@0', '000000000000000', 0), +(1, 'L_DATA_3_OCC', 'CTI : Facturation : Nombre Patients/ Séjour/EMC - Sorties factuées - Journées facturées', 'NBP@NSEJ@EMC@NSFAC@NSNFAC@NJNS@JRNSORFAC@NJNAS@JRNSORHONFAC@0@0@0@0@0@0', 'Nombre patients@Nombre séjours@EMC@Sor fac@Sor non fac@Journées sortis hospi@Journées fac@Jou+A+S@Jou+A+S fac', '#@#@#@#@#@#j@#j@#j@#j', 'Nombre patients@Nombre séjours@Equivalent malade complet@Nombre sorties facturées@Nombre sorties non facturées@Durée séjours sortis (hospitalisés)@Nombre journées hospitalisés facturées@Nombre journées + ambulatoires + séances (hospitalisation)@Nombre journées d''hospitalisation facturées', '000000000000000', 3), +(1, 'L_DATA_4', 'CTI : EMC - C.A Total - Journées - C.A ( HC & HJ & Autres)', 'FAVEMC@MTFACENC@MMFPVEMC@FAVNBJ@FAVNBEMCHC@FAVMTTHC@FAVCAMHC@FAVNBSHJ@FAVMTTHJ@FAVCAMHJ@FAVNBSHA@FAVMTTHA@FAVCAMAU@0@0', 'EMC total@C.A total@C.A moyen total EMC@Nombre journées total@Nombre EMC HC@C.A total HC@C.A moyen total HC@Séjours HJ@C.A total HJ@C.A moyen total HJ@Séjours AUTRES@C.A total Autres@C.A moyen total Autres@0@0', '#@#E@#E@#@#@#E@#E@#@#E@#E@#@#E@#E', 'Equivalent Malade Complet Facturé ou Valorisé
Calculé d''après l''occupation des dossiers facturés ou Valorisés sur la base de
- 1 EMC par séjour en Hospitalisation Complète MCO
- 1 EMC par jour en Hospitalisation de jour MCO
- 1 EMC par séance en Hospitalisation séance MCO
- 1 EMC par semaine en Hospitalisation Complète SSR ou PSY
- 1 EMC par jour en Hospitalisation de jour SSR ou PSY
- 1 EMC par séjour pour les autres cas (Externes)
Cet indicateur n''est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d''activité ou date de sortie@C.A facturé et valorisé@C.A Moyen EMC Facturé et valorisé@Nombre de journées Facturées ou Valorisées
Calculé d''après l''occupation des dossiers facturés ou valorisés sur la base de
- +Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO
- Nombre de jours de présence en Hospitalisation de jour MCO
- + Nombre de séances en Hospitalisation séance MCO
- Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SSR ou PSY
- + Nombre de jours de présence en Hospitalisation de jour SSR ou PSY
- 0 pour les autres cas (Externes)
Cet indicateur n''est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d''activité ou date de sortie@Nombre EMC en Hospitalisation complète HC@C.A facturé et valorisé en Hospitalisation complète HC@CA Moyen EMC facturé et valorisé en Hospitalisation complète HC@Nombre de séjours en Hospitalisation de jour HJ@C.A facturé et valorisé en Hospitalisation de jour HJ@CA moyen facturé et valorisé en Hospitalisation de jour HJ@Nombre de séjours en Hospitalisation autre que HC ou HJ@Chiffre d''affaires par Séjour en Hospitalisation autre que HC ou HJ
Hospitalisation autre que HC ou HJ = Types séjour CTI Externes@Chiffre d''affaires Moyen par Séjour en Hospitalisation autre que HC ou HJ
Hospitalisation autre que HC ou HJ = Types séjour CTI Externes@0@0', '000000000000000', 0), +(1, 'L_DATA_5', 'CTI : EMC - C.A Total - Journées - C.A ( HC & HJ & Autres) - DMS', 'FAVEMC@MTFACENC@MMFPVEMC@FAVNBJ@FAVNBEMCHC@FAVMTTHC@FAVCAMHC@FAVNBSHJ@FAVMTTHJ@FAVCAMHJ@FAVNBSHA@FAVMTTHA@FAVCAMAU@FAVDMS@0', 'EMC total@C.A total@C.A moyen total EMC@Nb journées total@Nombre EMC HC@C.A total HC@C.A moyen total HC@Séjours HJ@C.A total HJ@C.A moyen total HJ@Séjours AUTRES@C.A total Autres@C.A moyen total Autres@DMS hospitalisés', '#@#E@#E@#@#@#E@#E@#@#E@#E@#@#E@#E@#,00j', 'Equivalent Malade Complet Facturé ou Valorisé
Calculé d''après l''occupation des dossiers facturés ou Valorisés sur la base de
- 1 EMC par séjour en Hospitalisation Complète MCO
- 1 EMC par jour en Hospitalisation de jour MCO
- 1 EMC par séance en Hospitalisation séance MCO
- 1 EMC par semaine en Hospitalisation Complète SSR ou PSY
- 1 EMC par jour en Hospitalisation de jour SSR ou PSY
- 1 EMC par séjour pour les autres cas (Externes)
Cet indicateur n''est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d''activité ou date de sortie@C.A facturé et valorisé@C.A Moyen EMC Facturé et valorisé@Nombre de journées Facturées ou Valorisées
Calculé d''après l''occupation des dossiers comptabilisés ou valorisés sur la base de
- Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO
- Nombre de jours de présence en Hospitalisation de jour MCO
- Nombre de séances en Hospitalisation séance MCO
- Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SSR ou PSY
- Nombre de jours de présence en Hospitalisation de jour SSR ou PSY
- 0 pour les autres cas (Externes)
Cet indicateur n''est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d''activité ou date de sortie@Nombre EMC en Hospitalisation complète HC@C.A facturé et valorisé en Hospitalisation complète HC@CA Moyen EMC facturé et valorisé en Hospitalisation complète HC@Nombre de séjours en Hospitalisation de jour HJ@C.A facturé et valorisé en Hospitalisation de jour HJ@CA moyen facturé et valorisé en Hospitalisation de jour HJ@Nombre de séjours en Hospitalisation autre que HC ou HJ@Chiffre d''affaires par Séjour en Hospitalisation autre que HC ou HJ
Hospitalisation autre que HC ou HJ = Types séjour CTI Externes@Chiffre d''affaires Moyen par Séjour en Hospitalisation autre que HC ou HJ
Hospitalisation autre que HC ou HJ = Types séjour CTI Externes@Rapport entre le nombre de journées de présence des séjours hospitalisés sortis et le nombre de séjours hospitalisés sortis@0', '000000000000000', 0), +(1, 'L_DATA_6', 'CTI : EMC - C.A Total - Journées - Tiers payant', 'EMC@MTFAC@MMTFAC@FACNBJ@NBSEJ@FACNS1@MTFAC1@FACNS2@MTFAC2@FACNS0@MTFAC0@0@0@0@0@0', 'EMC Facturé@C.A facturé@C.A moyen facturé@Nb journées facturée@Séjours Facturé@Séjours AMO@C.A facturé AMO@Séjours AMC@C.A facturé AMC@Séjours Patient@C.A facturé Pat', '#@#E@#E@#@#@#@#E@#@#E@#@#E@#@#E', 'Nombre EMC facturés@C.A facturé@C.A moyen facturé@Nb journées facturée@Séjours Facturé@Séjours AMO@C.A facturé AMO@Séjours AMC@C.A facturé AMC@Séjours Patient@C.A facturé Patient', '000000000000000', 0), +(1, 'L_DATA_7', 'CTI : EMC ( Total - HC - HJ - Autres) - C.A ( Total - HC - HJ - Autres)', 'FAVEMC@MTFACENC@FAVNBEMCHC@FAVNBSHJ@FAVNBSHA@MTENC@FAVMTTHC@FAVMTTHJ@FAVMTTHA@0@0@0@0@0@0@0', 'EMC total@C.A Total@Nb EMC HC@Séjours HJ@Séjours Autres@Dont valorisé@C.A total HC@C.A total HJ@C.A total Autres', '#@#E@#@#@#@#E@#E@#E@#E', 'Equivalent Malade Complet Facturé ou Valorisé
Calculé d''après l''occupation des dossiers facturés ou Valorisés sur la base de
- 1 EMC par séjour en Hospitalisation Complète MCO
- 1 EMC par jour en Hospitalisation de jour MCO
- 1 EMC par séance en Hospitalisation séance MCO
- 1 EMC par semaine en Hospitalisation Complète SSR ou PSY
- 1 EMC par jour en Hospitalisation de jour SSR ou PSY
- 1 EMC par séjour pour les autres cas (Externes)
Cet indicateur n''est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d''activité ou date de sortie@C.A facturé et valorisé@Nombre EMC en Hospitalisation complète HC@Nombre de séjours en Hospitalisation de jour HJ@Nombre de séjours en Hospitalisation autre que HC ou HJ@C.A valorisé@C.A facturé et valorisé en Hospitalisation complète HC@C.A facturé et valorisé en Hospitalisation de jour HJ@C.A facturé et valorisé en Hospitalisation autre que HC ou HJ@0@0@0@0@0@0', '000000000000000', 0), +(1, 'L_DATA_8', 'CTI : EMC - C.A : Facturé - valorisé - total ( HJ - HC ) - C.A Autres', 'FAVEMC@MTFACENC@FACMTTHJ@FACMTTHC@VALMTHJT@VALMTHCT@FAVMTTHJ@FAVMTTHC@FAVMTTHA@0@0@0@0@0@0@0', 'EMC total@C.A total@CA facturé HJ@CA facturé HC@C.A Val HJ total@C.A Val HC total@C.A total HJ@C.A total HC@C.A total Autres', '#@#E@#E@#E@#E@#E@#E@#E@#E', 'Equivalent Malade Complet Facturé ou Valorisé
Calculé d''après l''occupation des dossiers facturés ou Valorisés sur la base de
- 1 EMC par séjour en Hospitalisation Complète MCO
- 1 EMC par jour en Hospitalisation de jour MCO
- 1 EMC par séance en Hospitalisation séance MCO
- 1 EMC par semaine en Hospitalisation Complète SSR ou PSY
- 1 EMC par jour en Hospitalisation de jour SSR ou PSY
- 1 EMC par séjour pour les autres cas (Externes)
Cet indicateur n''est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d''activité ou date de sortie@C.A facturé et valorisé@C.A facturé en Hospitalisation de jour HJ@C.A facturé en Hospitalisation complète HC@C.A total valorisé en Hospitalisation de jour HJ ( groupés + Non groupés )@C.A total valorisé en Hospitalisation complète HC ( groupés + Non groupés )@C.A facturé et valorisé en Hospitalisation de jour HJ@C.A facturé et valorisé en Hospitalisation complète HC@C.A facturé et valorisé en Hospitalisation autre que HC ou HJ@0@0@0@0@0@0@0', '000000000000000', 0), +(1, 'L_DATA_102', 'x', 'FAVNBS@MTFACENC@MMTFACENC@FAVNBJ@0@0@0@0@0@0@0@0@0@0@0', 'Séjours total@C.A total@C.A moyen total@Nombre journées total', '#@#E@#E@#', 'Séjours facturés et valorisés@C.A facturé et valorisé@C.A Moyen Facturé et valorisé@Nombre de journées Facturées ou Valorisées
Calculé d''après l''occupation des dossiers facturés ou valorisés sur la base de
- Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO
- Nombre de jours de présence en Hospitalisation de jour MCO
- Nombre de séances en Hospitalisation séance MCO
- Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SSR ou PSY
- Nombre de jours de présence en Hospitalisation de jour SSR ou PSY
- 0 pour les autres cas (Externes)
Cet indicateur n''est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d''activité ou date de sortie@0@0@0@0@0@0@0@0@0@0@0', '000000000000000', 0), +(1, 'L_DATA_103', 'CTI : Séjours - C.A Total - Journées - C.A ( HC & HJ )', 'FAVNBS@MTFACENC@MMTFACENC@FAVNBJ@FAVNBSHC@FAVMTTHC@FAVCAMHC@FAVNBSHJ@FAVMTTHJ@FAVCAMHJ@0@0@0@0@0', 'Séjours total@C.A total@C.A moyen total@Nombre journées total@Séjours total HC@C.A total HC@C.A Moyen total HC@Séjours total HJ@C.A total HJ@C.A Moyen total HJ', '#@#E@#E@#@#@#E@#E@#@#E@#E', 'Séjours Facturé et Valorise@C.A Facturé et Valorise@C.A moyen Facturé et Valorise@Nombre journées Facturé et Valorise@Séjours Facturé et Valorise en Hospitalisation complète HC@C.A Facturé et Valorise en Hospitalisation complète HC@C.A Moyen Facturé et Valorise en Hospitalisation complète HC@Séjours Facturé et Valorise en Hospitalisation de jour HJ@C.A Facturé et Valorise en Hospitalisation de jour HJ@C.A Moyen Facturé et Valorise en Hospitalisation de jour HJ', '000000000000000', 0), +(1, 'L_DATA_104', 'CTI : Séjours - C.A Total - Journées - C.A ( HC & HJ & Autres)', 'FAVNBS@MTFACENC@MMTFACENC@FAVNBJ@FAVNBSHC@FAVMTTHC@FAVCAMHC@FAVNBSHJ@FAVMTTHJ@FAVCAMHJ@FAVNBSHA@FAVMTTHA@FAVCAMAU@0@0', 'Séjours total@C.A total@C.A moyen total@Nombre journées total@Séjours total HC@C.A total HC@C.A Moyen total HC@Séjours total HJ@C.A total HJ@C.A Moyen total HJ@Séjours total Autres@C.A total Autres@C.A Moyen total Autres', '#@#E@#E@#@#@#E@#E@#@#E@#E@#@#E@#E', 'Séjours Facturé et Valorise@C.A Facturé et Valorise@C.A moyen Facturé et Valorise@Nombre journées Facturé et Valorise@Séjours Facturé et Valorise en Hospitalisation complète HC@C.A Facturé et Valorise en Hospitalisation complète HC@C.A Moyen Facturé et Valorise en Hospitalisation complète HC@Séjours Facturé et Valorise en Hospitalisation de jour HJ@C.A Facturé et Valorise en Hospitalisation de jour HJ@C.A Moyen Facturé et Valorise en Hospitalisation de jour HJ@Séjours Facturé et Valorise en Hospitalisation autre que HC ou HJ@C.A Facturé et Valorise en Hospitalisation autre que HC ou HJ@C.A Moyen Facturé et Valorise en Hospitalisation autre que HC ou HJ', '000000000000000', 0), +(1, 'L_DATA_105', 'CTI : Séjours - C.A Total - Journées - C.A ( HC & HJ & Autres) - DMS', 'FAVNBS@MTFACENC@MMTFACENC@FAVNBJ@FAVNBSHC@FAVMTTHC@FAVCAMHC@FAVNBSHJ@FAVMTTHJ@FAVCAMHJ@FAVNBSHA@FAVMTTHA@FAVCAMAU@FAVDMS@0', 'Séjours total@C.A total@C.A moyen total@Nombre journées total@Séjours total HC@C.A total HC@C.A Moyen total HC@Séjours total HJ@C.A total HJ@C.A Moyen total HJ@Séjours total Autres@C.A total Autres@C.A Moyen total Autres@DMS hospitalisés', '#@#E@#E@#@#@#E@#E@#@#E@#E@#@#E@#E@#,00j', 'Séjours Facturé et Valorise@C.A Facturé et Valorise@C.A moyen Facturé et Valorise@Nombre journées Facturé et Valorise@Séjours Facturé et Valorise en Hospitalisation complète HC@C.A Facturé et Valorise en Hospitalisation complète HC@C.A Moyen Facturé et Valorise en Hospitalisation complète HC@Séjours Facturé et Valorise en Hospitalisation de jour HJ@C.A Facturé et Valorise en Hospitalisation de jour HJ@C.A Moyen Facturé et Valorise en Hospitalisation de jour HJ@Séjours Facturé et Valorise en Hospitalisation autre que HC ou HJ@C.A Facturé et Valorise en Hospitalisation autre que HC ou HJ@C.A Moyen Facturé et Valorise en Hospitalisation autre que HC ou HJ@Rapport entre le nombre de journées de présence des séjours hospitalisés sortis et le nombre de séjours hospitalisés sortis', '000000000000000', 0), +(1, 'L_DATA_106', 'CTI : Séjours - C.A Total - Journées - Tiers payant', 'NBSEJ@MTFAC@MMTFAC@FACNBJ@NBSEJ@FACNS1@MTFAC1@FACNS2@MTFAC2@FACNS0@MTFAC0@0@0@0@0@0', 'Séjours Facturé@C.A facturé@C.A moyen facturé@Nb journées facturée@Séjours Facturé@Séjours AMO@C.A facturé AMO@Séjours AMC@C.A facturé AMC@Séjours Patient@C.A facturé Pat', '#@#E@#E@#@#@#@#E@#@#E@#@#E@#@#E', 'Séjours Facturé@C.A facturé@C.A moyen facturé@Nombre journées facturée@Séjours Facturé@Séjours AMO@C.A facturé AMO@Séjours AMC@C.A facturé AMC@Séjours Patient@C.A facturé Patient', '000000000000000', 0), +(1, 'L_DATA_107', 'CTI : Séjours ( Total - HC - HJ - Autres) - C.A ( Total - HC - HJ - Autres)', 'FAVNBS@MTFACENC@FAVNBSHC@FAVNBSHJ@FAVNBSHA@MTENC@FAVMTTHC@FAVMTTHJ@FAVMTTHA@0@0@0@0@0@0@0', 'Séjours total@C.A Total@Séjours Total HC@Séjours total HJ@Séjours total Autres@Dont valorisé@C.A total HC@C.A total HJ@C.A total Autres', '#@#E@#@#@#@#E@#E@#E@#E', 'Séjours Facturé et Valorise@C.A Facturé et Valorise@Séjours Facturé et Valorise en Hospitalisation complète HC@Séjours en Hospitalisation de jour HJ@Séjours en Hospitalisation autre que HC ou HJ@Dont valorisé@C.A Facturé et Valorise en Hospitalisation complète HC@C.A Facturé et Valorise en Hospitalisation de jour HJ@C.A Facturé et Valorise en Hospitalisation autre que HC ou HJ', '000000000000000', 0), +(1, 'L_DATA_108', 'CTI : Séjours - C.A : Facturé - valorisé - total ( HJ - HC ) - C.A Autres', 'FAVNBS@MTFACENC@FACMTTHJ@FACMTTHC@VALMTHJT@VALMTHCT@FAVMTTHJ@FAVMTTHC@FAVMTTHA@0@0@0@0@0@0@0', 'Séjours total@C.A Total@CA facturé HJ@CA facturé HC@C.A Val HJ total@C.A Val HC total@C.A total HJ@C.A total HC@C.A total Autres', '#@#E@#E@#E@#E@#E@#E@#E@#E', 'Séjours Facturé et valorisé@C.A Facturé et Valorise@C.A facturé en Hospitalisation de jour HJ@C.A facturé en Hospitalisation complète HC@C.A total valorisé en Hospitalisation de jour HJ ( groupés + Non groupés )@C.A total valorisé en Hospitalisation complète HC ( groupés + Non groupés )@C.A facturé et valorisé en Hospitalisation de jour HJ@C.A facturé et valorisé en Hospitalisation complète HC@C.A facturé et valorisé en Hospitalisation autre que HC ou HJ@0@0@0@0@0@0@0', '000000000000000', 0), +(1, 'L_DATA_1_OCC', 'CTI : Occupation : Nombre Patients/ Séjour/EMC - Entrées/Sorties - Ambulatoire/ Séances - Journées', 'NBP@NSEJ@EMC@NED@NEM@NSD@NSM@NAM@NSE@NSEDIA@NSECHM@NSEDIV@NJN@NJNXA@0', 'Nombre patients@Nombre Séjours@EMC@Entrées (hospi)@Entrées + mutations@Sorties (Hospi)@Sorties + Mutations@Nombre Ambulatoire@Nombre séances@séances Dialyse@Séances Chimio@Séances Autres@Journées hospi@Jou+Ext+Ambu', '#@#@#@#@#@#@#@#@#@#@#@#@#j@#j', 'Nombre patients@Nombre Séjours@Equivalent Malade complet@Entrées directes (hospitalisés)@Entrées directes + mutations@Sorties directes (hospitalisés)@Sorties directes (hospitalisés) + Mutations@Nombre Ambulatoire@Nombre séances total@séances Dialyse@Séances Chimio@Séances Autres@Nombre journées hospitalisés@Nombre journées + ambulatoires + externes', '000000000000000', 1), +(1, 'L_DATA_2_OCC', 'CTI : Séjours : Nombre Patients/ Séjour/EMC - Admissions/Sorties - Journées - DMS', 'NBP@NSEJ@EMC@NADPRE@NAD@NSHP@NSDXASSH@NNONSOR@NFULL@NJN@NJNXAS@DMSHES@DMSHON@0@0', 'Nombre patients@Nombre séjours@EMC@Adm < per.@Admissions@Sor Post@Sor+X+A+S-Hors hospi@Séj non sortis@Séj entiers@Journées hospi@Jou+X+A+S@DMS Hospi@DMS HOS+A+S', '#@#@#@#@#@#@#@#@#@#j@#j@#,00j@#,00j', 'Nombre patients@Nombre Séjours@Equivalent Malade complet@Nombre admissions < période@Nombre admissions période@Nombre sorties hors période@Nombre sorties + ambulatoires + externes + séances (hors hospit)@Nombre séjours non sortis@Nombre séjours entiers sur période@Nombre journées (hospitalisés)@Nombre journées + ambulatoires + externes + séances@DMS hospitalisés@DMS hospitalisation (Hospit. + séances + ambulatoires)', '000000000000000', 2), +(1, 'L_DATA_4_OCC', 'CTI : Récapitulatif : Séjour/EMC - Entrées/Sorties(Hospi) - Ambulatoires/séances/externes/Bébés/urgences', 'NBP@NSEJ@EMC@NED@NSD@NAM@NSE@NEX@NPX@NBB@URG@0@0@0@0', 'Nombre patients@Nombre séjours@Equivalent malade complet@Entrées directes (hospi)@Sorties directes (hospi)@Nombre Ambulatoire@Nombre séances@Nombre externes@Passages Ext@Nombre bébés@Urgences', '#@#@#@#@#@#@#@#@#@#', 'Nombre patients@Nombre séjours@Equivalent malade complet@Nombre entrées directes (hospitalisés)@Nombre sorties directes (hospitalisés)@Nombre Ambulatoire@Nombre séances@Nombre externes@Nombre passages externes@Nombre bébés@Urgences', '000000000000000', 4) +; + +-- 3/3 : Màj de la table iCTI +INSERT INTO activite.t_vue_parametre(code, texte, data_code, data_entete, data_format, data_description,position_ratio,rang) + SELECT code, + texte, + string_to_array(data_code, '@') as data_code, + string_to_array(data_entete, '@') as data_entete, + string_to_array(data_format, '@') as data_format, + string_to_array(data_description, '@') as data_description, + position_ratio, + rang + FROM w_dbsetup + WHERE 1=1 + AND code NOT IN (SELECT code FROM activite.t_vue_parametre) +; \ No newline at end of file diff --git a/db/data2/dbdata_activite_t_classes.csv b/db/data2/dbdata_activite_t_classes.csv new file mode 100644 index 0000000..d0669ca --- /dev/null +++ b/db/data2/dbdata_activite_t_classes.csv @@ -0,0 +1,19 @@ +oid|code|texte|is_cti|sequence|table_code|contenu_by_code|contenu_non_replicable_ailleurs +1|CTIGFA1|Formes d'activité CTI niveau 1|1|1|FORMEACTIVITE|0|0 +1|CTIGFA2|Formes d'activité CTI niveau 2|1|2|FORMEACTIVITE|0|0 +1|CTIGFA3|Champ satisfaction|1|3|FORMEACTIVITE|0|0 +1|CTI_DURSEJ|Tranches séjours CTI|1|9|DURSEJ|0|0 +1|CTI_ETA_1|Etages CTI|0|4|ETAGE|0|1 +1|CTI_GHMDA|Domaines d'activité ATIH|1|9|GHM|0|0 +1|CTI_GHMGA|Groupes d'activité ATIH|1|7|GHM|0|0 +1|CTI_GHMGP|Groupes de planification ATIH|1|8|GHM|0|0 +1|CTI_MEDLIBSAL|Conditions d'exercice|1|1|MEDECIN|0|1 +1|CTI_PRC_1|Prestations CTI|0|4|PRESTA_C|0|0 +1|CTI_PREDCA|Décomposition CA (CTI)|1|9|PRESTA_C|0|0 +1|CTI_RUB_1|Rubriques CTI|0|4|RUBRIQUE|1|1 +1|CTI_RUB_2|Rubriques détaillées CTI.|0|31|RUBRIQUE|0|1 +1|CTI_SER_1|Services CTI|0|4|SERVICE_F|0|1 +1|CTI_TAGE|Tranches d'âge|1|9|AGE|0|0 +1|CTI_UF_1|Unités Fonctionnelles CTI|0|4|UF|0|1 +1|ETATSEJN1|Etat de séjour CTI niveau 1|1|11|ETATSEJOUR|0|0 +1|ETATSEJN2|Etat de séjour CTI niveau 2|1|10|ETATSEJOUR|0|0 diff --git a/db/data2/dbdata_activite_t_classes_sections.csv b/db/data2/dbdata_activite_t_classes_sections.csv new file mode 100644 index 0000000..1599077 --- /dev/null +++ b/db/data2/dbdata_activite_t_classes_sections.csv @@ -0,0 +1,413 @@ +oid|code|texte|table_code|classe_sequence|condition|exclude_code|include_code +1|T01|Nouveaux-nés|AGE|9||| +1|T02|1 - 5 ans|AGE|9||| +1|T03|6 - 12 ans|AGE|9||| +1|T04|13 - 20 ans|AGE|9||| +1|T05|21 - 30 ans|AGE|9||| +1|T06|31 - 40 ans|AGE|9||| +1|T07|41 - 50 ans|AGE|9||| +1|T08|51 - 60 ans|AGE|9||| +1|T09|61 - 70 ans|AGE|9||| +1|T10|71 - 80 ans|AGE|9||| +1|T11|81 ans et plus|AGE|9||| +1|S1|0 nuit|DURSEJ|9||| +1|S2|1 nuit|DURSEJ|9||| +1|S3|de 2 à 5 nuits|DURSEJ|9||| +1|S4|de 6 à 10 nuits|DURSEJ|9||| +1|S5|de 11 à 20 nuits|DURSEJ|9||| +1|S6|de 21 à 30 nuits|DURSEJ|9||| +1|S7|de 31 à 100 nuits|DURSEJ|9||| +1|S8|de 101 à 1000 nuits|DURSEJ|9||| +1|S9|plus de 1000 nuits|DURSEJ|9||| +1|S1|Prévu(s)|ETATSEJOUR|10||| +1|S2|Présent(s)|ETATSEJOUR|10||| +1|S3|Sorti(s) non groupé(s)|ETATSEJOUR|10||| +1|S4|Sorti(s) facturable(s)|ETATSEJOUR|10||| +1|S5|Facturé(s) non soldé(s)|ETATSEJOUR|10||| +1|S6|Soldé(s)|ETATSEJOUR|10||| +1|S7|Fictif(s)|ETATSEJOUR|10||| +1|S8|Annulé(s)|ETATSEJOUR|10||| +1|S1|Prévu(s)|ETATSEJOUR|11||| +1|S2|Présent(s)|ETATSEJOUR|11||| +1|S3|Sorti(s) non facturé(s)|ETATSEJOUR|11||| +1|S4|Facturé(s) non soldé(s)|ETATSEJOUR|11||| +1|S5|Soldé(s)|ETATSEJOUR|11||| +1|S6|Annulé(s)|ETATSEJOUR|11||| +1|1|MCO|FORMEACTIVITE|1||| +1|2|SSR|FORMEACTIVITE|1||| +1|3|PSY|FORMEACTIVITE|1||| +1|4|HAD|FORMEACTIVITE|1||| +1|5|EHPAD et assimilés|FORMEACTIVITE|1||| +1|7|Externes|FORMEACTIVITE|1||| +1|9|Autres|FORMEACTIVITE|1||| +1|11|MCO Médecine|FORMEACTIVITE|2||| +1|12|MCO Chirurgie|FORMEACTIVITE|2||| +1|13|MCO Obstétrique|FORMEACTIVITE|2||| +1|14|MCO Esthétique|FORMEACTIVITE|2||| +1|15|MCO Séances|FORMEACTIVITE|2||| +1|19|MCO Autres|FORMEACTIVITE|2||| +1|20|SSR|FORMEACTIVITE|2||| +1|30|PSY|FORMEACTIVITE|2||| +1|40|HAD|FORMEACTIVITE|2||| +1|50|EHPAD et assimilés|FORMEACTIVITE|2||| +1|70|Externes|FORMEACTIVITE|2||| +1|99|Autres|FORMEACTIVITE|2||| +1|11|MCOCA|FORMEACTIVITE|3||| +1|12|MCO48H|FORMEACTIVITE|3||| +1|2|SSR|FORMEACTIVITE|3||| +1|3|PSY|FORMEACTIVITE|3||| +1|4|HAD|FORMEACTIVITE|3||| +1|9|Autres|FORMEACTIVITE|3||| +1|G001|Chirurgies digestives hautes|GHM|7||| +1|G002|Chirurgie digestive majeure|GHM|7||| +1|G003|Appendicectomies|GHM|7||| +1|G004|Hernies|GHM|7||| +1|G005|Occlusions, sub-occlusions digestives|GHM|7||| +1|G006|Chirurgie mineure grêle/colon|GHM|7||| +1|G007|Chirurgies rectum/anus (hors résections)|GHM|7||| +1|G008|Autres chirurgies digestives|GHM|7||| +1|G009|Cholécystectomies|GHM|7||| +1|G010|Autres chirurgies foie, pancréas, voies biliaires|GHM|7||| +1|G011|Prise en charge médicale des tumeurs malignes du tube digestif|GHM|7||| +1|G012|Ulcères, hémorragies digestives|GHM|7||| +1|G013|Suivi de greffes digestives|GHM|7||| +1|G014|Maladies inflammatoires de l'intestin|GHM|7||| +1|G015|Gastro-entérites et affections du tube digestif|GHM|7||| +1|G016|Autres gastroentérites et maladies diverses du tube digestif|GHM|7||| +1|G017|Autres affections digestives|GHM|7||| +1|G018|Hépatites, cirrhoses|GHM|7||| +1|G019|Affections hépatiques sévères et affections du pancréas|GHM|7||| +1|G020|Autres affections hépatiques, voies biliaires|GHM|7||| +1|G021|Symptômes digestifs|GHM|7||| +1|G022|Endoscopies digestives avec ou sans anesthésie|GHM|7||| +1|G023|Explorations et surveillance pour affections de l'appareil digestif, du système hépatobiliaire et du pancréas|GHM|7||| +1|G024|Chirurgies majeures orthopédiques (dont hanche et fémur genou)|GHM|7||| +1|G025|Arthroscopies, Biopsies ostéo-articulaires|GHM|7||| +1|G026|Chirurgie Fractures, entorses, luxations, tractions|GHM|7||| +1|G027|Ablations matériel|GHM|7||| +1|G028|Amputations|GHM|7||| +1|G029|Chirurgies main, poignet|GHM|7||| +1|G030|Chirurgie pour Ostéomyélites aigües (y compris vertébrales) et arthrites septiques|GHM|7||| +1|G031|Chirurgie de la jambe|GHM|7||| +1|G032|Chirurgie de la cheville ou du pied|GHM|7||| +1|G033|Chirurgie du membre supérieur (hors prothèses)|GHM|7||| +1|G034|Chirurgie des tissus mous|GHM|7||| +1|G035|Interventions sur le tissu mou pour tumeurs malignes|GHM|7||| +1|G036|Traumatismes du bassin et des membres|GHM|7||| +1|G037|Polytraumatismes graves|GHM|7||| +1|G038|Prise en charge médicale des tumeurs de l'appareil musculosquelettique, du tissu conjonctif et fractures pathologiques|GHM|7||| +1|G039|Maladies osseuses et arthropathies|GHM|7||| +1|G040|Autres affections rhumatologiques|GHM|7||| +1|G041|Chirurgies rachis/moelle|GHM|7||| +1|G042|Explorations et surveillance de l'appareil musculosquelettique et du tissu conjonctif|GHM|7||| +1|G043|Chirurgies SNC trauma|GHM|7||| +1|G044|Chirurgies SNC hors trauma (rachis et moelle exceptés)|GHM|7||| +1|G045|Pose stimulateur cérébral / médullaire|GHM|7||| +1|G046|Trauma crâniens|GHM|7||| +1|G047|Affections dégénératives du système nerveux|GHM|7||| +1|G048|Affections nerfs crâniens / moëlle|GHM|7||| +1|G049|AVC|GHM|7||| +1|G050|Comas non traumatiques|GHM|7||| +1|G051|Migraines et céphalées|GHM|7||| +1|G052|Convulsions, épilepsie|GHM|7||| +1|G053|Infections SNC|GHM|7||| +1|G054|Prise en charge médicale des tumeurs système nerveux|GHM|7||| +1|G055|Autres affections du système nerveux|GHM|7||| +1|G056|Explorations et surveillance pour affections du système nerveux|GHM|7||| +1|G057|Cathétérismes thérapeutiques vasculaires et coronariens avec endoprothèse ou prothèses cardiaques|GHM|7||| +1|G058|Cathétérismes thérapeutiques vasculaires et coronariens sans endoprothèse|GHM|7||| +1|G059|Cathéthérismes diagnostiques vasculaires et coronariens|GHM|7||| +1|G060|Cathétérisme thérapeutiques vasculaires du système nerveux|GHM|7||| +1|G061|Chirurgies valvulaires|GHM|7||| +1|G062|Pontages coronaires|GHM|7||| +1|G063|Chirurgie cardiaque, autres|GHM|7||| +1|G064|Stimulateurs / défibrillateurs cardiaques|GHM|7||| +1|G065|Cardiopathies, valvulopathies|GHM|7||| +1|G066|Coronaropathies|GHM|7||| +1|G067|Endocardites|GHM|7||| +1|G068|Hypertension artérielle|GHM|7||| +1|G069|Troubles du rythme/conduction|GHM|7||| +1|G070|Cardiologie autres|GHM|7||| +1|G071|Explorations et surveillance pour affections de l'appareil circulatoire|GHM|7||| +1|G072|Chirurgies majeures revascularisation|GHM|7||| +1|G073|Ligatures veines|GHM|7||| +1|G074|Autres chirurgies vasculaires|GHM|7||| +1|G075|Phlébites, varices et autres troubles vasculaires d'origine veineuse|GHM|7||| +1|G076|Chirurgies thoraciques majeures|GHM|7||| +1|G077|Autres chirurgies thoraciques|GHM|7||| +1|G078|Bronchites, bronchiolites et asthme|GHM|7||| +1|G079|Embolies pulmonaires et détresses respiratoires|GHM|7||| +1|G080|Infections respiratoires|GHM|7||| +1|G081|Prise en charge médicale des tumeurs de l'appareil respiratoire|GHM|7||| +1|G082|Affections respiratoires, autres|GHM|7||| +1|G083|Explorations et surveillance pour affections de l'appareil respiratoire|GHM|7||| +1|G084|Endoscopies bronchiques, avec ou sans anesthésie|GHM|7||| +1|G085|Chirurgies ORL majeures|GHM|7||| +1|G086|Chirurgie de l'oreille|GHM|7||| +1|G087|Amygdalectomies, VG, drains transT|GHM|7||| +1|G088|Autres chirurgies ORL|GHM|7||| +1|G089|Chirurgie de la bouche|GHM|7||| +1|G090|Affections Cavité buccale et dents|GHM|7||| +1|G091|Infections ORL|GHM|7||| +1|G092|Prise en charge médicale des tumeurs malignes ORL, Stomato|GHM|7||| +1|G093|Pathologies ORL et Stomato autres|GHM|7||| +1|G094|Explorations et surveillance pour affections ORL|GHM|7||| +1|G095|Endoscopies ORL, avec ou sans anesthésie|GHM|7||| +1|G096|Chirurgies ophtalmo lourdes|GHM|7||| +1|G097|Cataractes|GHM|7||| +1|G098|Allogreffes de cornées|GHM|7||| +1|G099|Autres chirurgies ophtalmo|GHM|7||| +1|G100|Affections oeil|GHM|7||| +1|G101|Infections oeil|GHM|7||| +1|G102|Explorations et surveillance pour affections de l'oeil|GHM|7||| +1|G103|Chirurgie pour tumeurs malignes (app génital fem)|GHM|7||| +1|G104|Chirurgies pelviennes majeures (app gen feminin)|GHM|7||| +1|G105|Chirurgies utérus / annexes|GHM|7||| +1|G106|Autres chirurgies gynécologiques autres que le sein|GHM|7||| +1|G107|Chirurgie pour tumeurs malignes sein|GHM|7||| +1|G108|Chirurgie du sein hors TM|GHM|7||| +1|G109|Prise en charge médicale des tumeurs de l'appareil génital féminin|GHM|7||| +1|G110|Autres affections appareil génital féminin|GHM|7||| +1|G111|AMP|GHM|7||| +1|G112|Infections gynécologiques d'organes autres que le sein|GHM|7||| +1|G113|Affections des seins|GHM|7||| +1|G114|Prise en charge médicale des tumeurs des seins|GHM|7||| +1|G115|Explorations et surveillance gynécologiques et des affections des seins|GHM|7||| +1|G116|Accouchements par voie basse|GHM|7||| +1|G117|Césariennes|GHM|7||| +1|G118|IVG|GHM|7||| +1|G119|Affections de ante partum|GHM|7||| +1|G120|Affections du post partum|GHM|7||| +1|G121|Interruptions médicale de grossesse|GHM|7||| +1|G122|Chirurgie du nouveau né|GHM|7||| +1|G123|Transferts précoces de nouveau nés|GHM|7||| +1|G124|Afections médicales du nouveau né|GHM|7||| +1|G125|Décès de nouveau nés|GHM|7||| +1|G126|Chirurgies reins, uretères, vessie, glandes surrénales|GHM|7||| +1|G127|Chirurgies transurétrales, autres|GHM|7||| +1|G128|Chirurgies appareil génital masculin|GHM|7||| +1|G129|Circoncisions|GHM|7||| +1|G130|Chirurgies pelviennes majeures (urologie)|GHM|7||| +1|G131|Chirurgie des tumeurs appareil génital masculin|GHM|7||| +1|G132|Prise en charge médicale des tumeurs reins et voies urinaires|GHM|7||| +1|G133|Infections reins et voies urinaires, lithiases|GHM|7||| +1|G134|Autres affections reins, voies urinaires|GHM|7||| +1|G135|Explorations et surveillance pour affections du rein et des voies urinaires|GHM|7||| +1|G136|Infections appareil génital masculin|GHM|7||| +1|G137|Prise en charge médicale des tumeurs de l'appareil génital masculin|GHM|7||| +1|G138|Autres affections appareil génital masculin|GHM|7||| +1|G139|Explorations et surveillance des affections de l'appareil génital masculin|GHM|7||| +1|G140|Endoscopies génito-urinaires, avec ou sans anesthésie|GHM|7||| +1|G141|Chirurgie au cours des tumeurs malignes (hématologie)|GHM|7||| +1|G142|Greffes de cellules souches hématopoïétiques|GHM|7||| +1|G143|Donneurs de moëlle|GHM|7||| +1|G144|Affections hématologiques malignes|GHM|7||| +1|G145|Autres Maladies immunitaires, du Sang, des Organes hématopoïétiques, Tumeurs siège imprécis ou diffus|GHM|7||| +1|G146|Explorations et surveillance pour affections du sang et des organes hématopoïétiques|GHM|7||| +1|G147|Explorations et surveillance pour affections myéloprolifératives et tumeurs de siège imprécis ou diffus|GHM|7||| +1|G148|Chimiothérapie hors séances|GHM|7||| +1|G149|Radiothérapie hors séances|GHM|7||| +1|G150|Chimiothérapie non tumorale hors séances|GHM|7||| +1|G151|Maladies virales et fièvres d'origine inconnue|GHM|7||| +1|G152|Septicémies|GHM|7||| +1|G153|Maladies infectieuses ou parasitaires hors septicémies et maladies virales|GHM|7||| +1|G154|Décès secondaire à une maladie infectieuse: séjours de moins de 2 jours|GHM|7||| +1|G155|Explorations et surveillance pour maladies infectieuses ou parasitaires|GHM|7||| +1|G156|Maladies VIH|GHM|7||| +1|G157|Chirurgie des parathyroides, du tractus thyréoglosse, endocrinologie|GHM|7||| +1|G158|Chirurgie de la thyroide|GHM|7||| +1|G159|Diabète|GHM|7||| +1|G160|Maladies endocriniennes hors diabète|GHM|7||| +1|G161|Troubles métaboliques, nutritionnels et obésité|GHM|7||| +1|G162|Explorations et surveillance pour affections endocriniennes, troubles métaboliques, nutritionnels et obésité|GHM|7||| +1|G163|Greffes peau / parages hors brûlures|GHM|7||| +1|G164|Intervention peau et tissu sous-cutané|GHM|7||| +1|G165|Affections peau et tissu sous-cutané|GHM|7||| +1|G166|Infections peau et tissu sous-cutané|GHM|7||| +1|G167|Prise en charge médicale des tumeurs de la peau et tissu sous-cutané|GHM|7||| +1|G168|Explorations et surveillance des affections de la peau|GHM|7||| +1|G169|Brûlures sans acte opératoire classant|GHM|7||| +1|G170|Troubles mentaux d'origine organique et retards mentaux|GHM|7||| +1|G171|Névroses, psychoses et autres troubles mentaux|GHM|7||| +1|G172|Explorations et surveillance pour maladies et troubles mentaux|GHM|7||| +1|G173|Toxicomanies et alcoolisme|GHM|7||| +1|G174|Allergies|GHM|7||| +1|G175|Iatrogénie, intox médicamenteuses et chimiques|GHM|7||| +1|G176|Soins palliatifs|GHM|7||| +1|G177|Douleurs chroniques|GHM|7||| +1|G178|Transplantations d'organes|GHM|7||| +1|G179|Chirurgie inter spécialités|GHM|7||| +1|G180|Chirurgie esthétique et de confort|GHM|7||| +1|G181|Médecine inter spécialités|GHM|7||| +1|G182|Allergologie|GHM|7||| +1|G183|Explorations nocturnes et apparentées|GHM|7||| +1|G184|Suivi thérap.d'affections connues|GHM|7||| +1|G185|Explorations et surveillance pour autres motifs de recours aux soins|GHM|7||| +1|G186|Rééducation - Convalescence|GHM|7||| +1|G187|Séances : dialyse|GHM|7||| +1|G188|Séances : transfusion|GHM|7||| +1|G189|Séances : radiothérapie|GHM|7||| +1|G190|Séances : chimiothérapie|GHM|7||| +1|G191|Séances : chimiothérapie non tumorale|GHM|7||| +1|G192|Séances : caisson hyperbare|GHM|7||| +1|G193|Séances : aphérèse sanguine|GHM|7||| +1|G194|Signes et symptômes|GHM|7||| +1|G195|Mort-nés|GHM|7||| +1|G196|Injections de toxine botulique, en ambulatoire|GHM|7||| +1|G197|Affections du système nerveux sans acte opératoire avec anesthésie, en ambulatoire|GHM|7||| +1|G198|Affections cardiovasculaires sans acte opératoire de la CMD 05, avec anesthésie, en ambulatoire|GHM|7||| +1|G199|Mise en place d'accès vasculaire|GHM|7||| +1|G200|Varices avec acte autre que ligature et éveinage, en ambulatoire|GHM|7||| +1|G201|Affections de l'appareil génital féminin sans acte opératoire de la CMD 13, avec anesthésie, en ambulatoire|GHM|7||| +1|G202|Insuffisance rénale, avec dialyse|GHM|7||| +1|G203|Autres séj. sans acte, avec anesthésie, en ambulatoire (Aff. myéloP., peau, sein..)|GHM|7||| +1|G204|Brûlures chirurgie|GHM|7||| +1|G205|Séjours pour douleurs chroniques rebelles comprenant un bloc ou une infiltration, en ambulatoire|GHM|7||| +1|G206|Traumatismes, allergies et empoisonnements sans acte opératoire, avec anesthésie, en ambulatoire|GHM|7||| +1|G207|Actes ORL et stomato divers|GHM|7||| +1|G208|Lithotritie extracorporelle de l'appareil urinaire, en ambulatoire|GHM|7||| +1|G209|Séjours comprenant une biopsie prostatique, en ambulatoire|GHM|7||| +1|G210|Traumatismes du rachis|GHM|7||| +1|G211|Ostéomyélites aigües (y compris vertébrales) et arthrites septiques|GHM|7||| +1|G212|Affections endocriniennes et problèmes alimentaires du nouveau né et du nourisson|GHM|7||| +1|G213|Endoscopies digestives thérapeutiques et anesthésie : séjours de moins de 2 jours|GHM|7||| +1|G214|Affections digestives sans acte opératoire de la CMD 06, avec anesthésie, en ambulatoire|GHM|7||| +1|G215|Brûlures sans acte opératoire, avec anesthésie, en ambulatoire|GHM|7||| +1|G216|Polytraumatismes graves|GHM|7||| +1|G217|Activité interventionnelle en Hépato-Gastro-Entérologie|GHM|7||| +1|G999|Séjours en Erreur|GHM|7||| +1|C01|Transplant. d'organes (hors greffes de moelle & cornée)|GHM|8||| +1|C02|Chirurgie du rachis, Neuro-chirurgie|GHM|8||| +1|C03|Neurostimulateurs|GHM|8||| +1|C04|Chir. cardio-thoracique (hors transplant. d'organe), Pontages aorto-coronariens|GHM|8||| +1|C05|Chir. majeure sur le thorax, l'app. respiratoire, interventions sous thoracoscopie|GHM|8||| +1|C06|Chir. Digestive majeure : oesophage, estomac, grêle, côlon, rectum|GHM|8||| +1|C07|Chir. Viscérale autre : rate, grêle, colon, proctologie, hernies|GHM|8||| +1|C08|Chir. hépato-biliaire et pancréatique|GHM|8||| +1|C09|Chir. majeure de l'app. Locomoteur: hanche, fémur, genou, épaule|GHM|8||| +1|C10|Arthroscopies, Biopsies ostéo-articulaires|GHM|8||| +1|C11|Chirurgies autres de l'appareil locomoteur, amputations|GHM|8||| +1|C12|Traumatismes multiples graves|GHM|8||| +1|C13|Stimulateurs, Défibrillateurs cardiaques|GHM|8||| +1|C14|Chirurgie vasculaire|GHM|8||| +1|C15|Chirurgie ORL stomato|GHM|8||| +1|C16|Chirurgie Ophtalmologique et greffe de cornée|GHM|8||| +1|C17|Chirurgie Gynécologique|GHM|8||| +1|C18|Chirurgie du sein|GHM|8||| +1|C19|Chirurgie Urologique|GHM|8||| +1|C20|Chirurgie de l'appareil génital masculin|GHM|8||| +1|C21|Chir. pour Aff. des Org. Hématopoiétiques, Lymphomes, Leucémies, Tumeurs SID|GHM|8||| +1|C22|Chirurgie de la Thyroide, Parathyroide, du Tractus Thyréoglosse, endocrinologie|GHM|8||| +1|C23|Parages de plaies, Greffes de peau, des Tissus S/C|GHM|8||| +1|C24|Chirurgie pour brûlures|GHM|8||| +1|C25|Chirurgie inter spécialités|GHM|8||| +1|K01|Hépato-Gastro-Entérologie, sans acte opératoire, avec anesthésie|GHM|8||| +1|K02|Endoscopies digestives et biliaires avec ou sans anesthésie|GHM|8||| +1|K03|Neurologie médicale avec Acte classant non opératoire, ou anesthésie|GHM|8||| +1|K04|Aff. Cardio-vasculaire avec Acte classant non opératoire, ou anesthésie|GHM|8||| +1|K05|Cathétérismes vasculaires diagnostiques et interventionnels|GHM|8||| +1|K06|Mise en place d'accès vasculaire|GHM|8||| +1|K07|Endoscopies bronchiques, avec ou sans anesthésie|GHM|8||| +1|K08|Traumatologie avec acte classant non opératoire ou anesthésie|GHM|8||| +1|K09|ORL Stomato avec Acte classant non opératoire et endoscopies|GHM|8||| +1|K10|Aff. génito-urinaires avec Acte classant non opératoire et endoscopies|GHM|8||| +1|K11|Douleur chroniques, avec bloc ou infiltration, en ambulatoire|GHM|8||| +1|K12|Explorations nocturnes, séjours de moins de 2 jours|GHM|8||| +1|K13|Dialyse (hors Séances)|GHM|8||| +1|K14|Radiothérapie (hors séances)|GHM|8||| +1|K15|Autres séj. sans acte, avec anesthésie, en ambulatoire (Aff. myéloP., peau, sein...)|GHM|8||| +1|K16|Brûlures sans acte opératoire, avec anesthésie, en ambulatoire|GHM|8||| +1|K17|Traumatologie avec acte classant non opératoire ou anesthésie|GHM|8||| +1|N01|Chirurgie des nouveau-nés, prématurés et de la période périnatale|GHM|8||| +1|N02|Aff. médicales des nouveau-nés, prématurés et de la période périnatale|GHM|8||| +1|N03|Mort-nés, décès et transferts précoces de nouveau-nés|GHM|8||| +1|O01|Accouchements par voie basse|GHM|8||| +1|O02|Césariennes|GHM|8||| +1|O03|IVG|GHM|8||| +1|O04|Obstétrique autre|GHM|8||| +1|S01|Dialyse|GHM|8||| +1|S02|Chimiothérapie pour tumeur|GHM|8||| +1|S03|Chimiothérapie pour aff. Non tumorale|GHM|8||| +1|S04|Radiothérapie|GHM|8||| +1|S05|Transfusion|GHM|8||| +1|S06|Aphérèse|GHM|8||| +1|S07|Oxygénothérapie hyperbare, en séances|GHM|8||| +1|X01|Greffe de moelle, Auto et Allogreffes de cellules souches|GHM|8||| +1|X02|Hépato-Gastro-Entérologie|GHM|8||| +1|X03|Neurologie médicale|GHM|8||| +1|X04|Commotions cérébrales, Traumatismes crâniens|GHM|8||| +1|X05|Traumatologie et ablation de matériel de l'appareil locomoteur|GHM|8||| +1|X06|Rhumatologie|GHM|8||| +1|X07|Affections Cardio-vasculaires|GHM|8||| +1|X08|Pneumologie|GHM|8||| +1|X09|ORL, Stomato|GHM|8||| +1|X10|Ophtalmologie|GHM|8||| +1|X11|Gynécologie, Sénologie (hors Obstétrique)|GHM|8||| +1|X12|Uro-Néphrologie médicale (hors Séances)|GHM|8||| +1|X13|Appareil génital masculin|GHM|8||| +1|X14|Maladies immunitaires, du Sang, des Organes hématopoïétiques, Tumeurs SID|GHM|8||| +1|X15|Diabète, Maladies métaboliques, Endocrinologie (hors complications)|GHM|8||| +1|X16|Affections et traumatismes de la peau, gelures|GHM|8||| +1|X17|Brûlures|GHM|8||| +1|X18|Suivi thérap. d'affections connues, Allergologie, Rééducation, Convalescence|GHM|8||| +1|X19|Fièvre, Infection, Septicémie, VIH|GHM|8||| +1|X20|Psychiatrie|GHM|8||| +1|X21|Effets nocifs, alcool, toxicologie, allergies|GHM|8||| +1|X22|Douleur et soins palliatifs|GHM|8||| +1|X23|Chimiothérapie (hors séances)|GHM|8||| +1|X24|Médecine inter spécialités, Autres symptômes ou motifs médicaux|GHM|8||| +1|X25|Traumatismes multiples graves|GHM|8||| +1|X26|Chirurgie esthétique et de confort|GHM|8||| +1|Z99|Séjours en Erreur|GHM|8||| +1|D01|Digestif|GHM|9||| +1|D02|Orthopédie traumatologie|GHM|9||| +1|D03|Traumatismes multiples ou complexes graves|GHM|9||| +1|D04|Rhumatologie|GHM|9||| +1|D05|Système nerveux (hors cathétérismes vasculaires diagnostiques et interventionnels)|GHM|9||| +1|D06|Cathétérismes vasculaires diagnostiques et interventionnels|GHM|9||| +1|D07|Cardio-vasculaire (hors cathétérismes vasculaires diagnostiques et interventionnels)|GHM|9||| +1|D09|Pneumologie|GHM|9||| +1|D10|ORL, Stomatologie|GHM|9||| +1|D11|Ophtalmologie|GHM|9||| +1|D12|Gynécologie - sein|GHM|9||| +1|D13|Obstétrique|GHM|9||| +1|D14|Nouveau-nés et période périnatale|GHM|9||| +1|D15|Uro-néphrologie et génital|GHM|9||| +1|D16|Hématologie|GHM|9||| +1|D17|Chimiothérapie, radiothérapie, hors séances|GHM|9||| +1|D18|Maladies infectieuses (dont VIH)|GHM|9||| +1|D19|Endocrinologie|GHM|9||| +1|D20|Tissu cutané et tissu sous-cutané|GHM|9||| +1|D21|Brûlures|GHM|9||| +1|D22|Psychiatrie|GHM|9||| +1|D23|Toxicologie, Intoxications, Alcool|GHM|9||| +1|D24|Douleurs chroniques, Soins palliatifs|GHM|9||| +1|D25|Transplant. d'organes|GHM|9||| +1|D26|Activités inter spécialités, suivi thérapeutique d'affections connues|GHM|9||| +1|D27|Séances|GHM|9||| +1|D90|Séjours en erreur|GHM|9||| +1|1|Libéraux|MEDECIN|1||| +1|2|Salariés|MEDECIN|1||| +1|S11|T2A. GHS|PRESTA_C|9||| +1|S12|T2A. EXH|PRESTA_C|9||| +1|S13|T2A. Forfaits et suppléments|PRESTA_C|9||| +1|S19|T2A. Autres|PRESTA_C|9||| +1|S2|DMI|PRESTA_C|9||| +1|S3|PHC|PRESTA_C|9||| +1|S1|CA Soins.|RUBRIQUE|4|||[CLASSE:CTI_RUB_2:S01][CLASSE:CTI_RUB_2:S02][CLASSE:CTI_RUB_2:S03][CLASSE:CTI_RUB_2:S04][CLASSE:CTI_RUB_2:S05][CLASSE:CTI_RUB_2:S06] +1|S2|CA Hotellerie|RUBRIQUE|4|||[CLASSE:CTI_RUB_2:S11][CLASSE:CTI_RUB_2:S12] +1|S3|CA UCD / DMI|RUBRIQUE|4|||[CLASSE:CTI_RUB_2:S21][CLASSE:CTI_RUB_2:S22] +1|S8|Médecins salariés|RUBRIQUE|4|||[CLASSE:CTI_RUB_2:S81] +1|S9|Aucune facturation clinique|RUBRIQUE|4|||[CLASSE:CTI_RUB_2:S91] +1|S01|Séjours|RUBRIQUE|31||| +1|S02|Forfaits : Suppléments|RUBRIQUE|31||| +1|S03|Forfaits : SE|RUBRIQUE|31||| +1|S04|Forfaits : ATU|RUBRIQUE|31||| +1|S05|Forfaits : Esthétique|RUBRIQUE|31||| +1|S06|Forfaits : Externes et divers|RUBRIQUE|31||| +1|S11|Chambres particulières|RUBRIQUE|31||| +1|S12|Suppléments hoteliers|RUBRIQUE|31||| +1|S21|UCD|RUBRIQUE|31||| +1|S22|DMI|RUBRIQUE|31||| +1|S81|Médecins salariés|RUBRIQUE|31||| +1|S91|Aucune facturation clinique|RUBRIQUE|31||| diff --git a/db/data2/dbdata_activite_t_classes_sections_elements_ages.csv b/db/data2/dbdata_activite_t_classes_sections_elements_ages.csv new file mode 100644 index 0000000..88ebdc9 --- /dev/null +++ b/db/data2/dbdata_activite_t_classes_sections_elements_ages.csv @@ -0,0 +1,122 @@ +section_code|to_code|table_code|classe_sequence +T01|000|AGE|9 +T02|001|AGE|9 +T02|002|AGE|9 +T02|003|AGE|9 +T02|004|AGE|9 +T02|005|AGE|9 +T03|006|AGE|9 +T03|007|AGE|9 +T03|008|AGE|9 +T03|009|AGE|9 +T03|010|AGE|9 +T03|011|AGE|9 +T03|012|AGE|9 +T04|013|AGE|9 +T04|014|AGE|9 +T04|015|AGE|9 +T04|016|AGE|9 +T04|017|AGE|9 +T04|018|AGE|9 +T04|019|AGE|9 +T04|020|AGE|9 +T05|021|AGE|9 +T05|022|AGE|9 +T05|023|AGE|9 +T05|024|AGE|9 +T05|025|AGE|9 +T05|026|AGE|9 +T05|027|AGE|9 +T05|028|AGE|9 +T05|029|AGE|9 +T05|030|AGE|9 +T06|031|AGE|9 +T06|032|AGE|9 +T06|033|AGE|9 +T06|034|AGE|9 +T06|035|AGE|9 +T06|036|AGE|9 +T06|037|AGE|9 +T06|038|AGE|9 +T06|039|AGE|9 +T06|040|AGE|9 +T07|041|AGE|9 +T07|042|AGE|9 +T07|043|AGE|9 +T07|044|AGE|9 +T07|045|AGE|9 +T07|046|AGE|9 +T07|047|AGE|9 +T07|048|AGE|9 +T07|049|AGE|9 +T07|050|AGE|9 +T08|051|AGE|9 +T08|052|AGE|9 +T08|053|AGE|9 +T08|054|AGE|9 +T08|055|AGE|9 +T08|056|AGE|9 +T08|057|AGE|9 +T08|058|AGE|9 +T08|059|AGE|9 +T08|060|AGE|9 +T09|061|AGE|9 +T09|062|AGE|9 +T09|063|AGE|9 +T09|064|AGE|9 +T09|065|AGE|9 +T09|066|AGE|9 +T09|067|AGE|9 +T09|068|AGE|9 +T09|069|AGE|9 +T09|070|AGE|9 +T10|071|AGE|9 +T10|072|AGE|9 +T10|073|AGE|9 +T10|074|AGE|9 +T10|075|AGE|9 +T10|076|AGE|9 +T10|077|AGE|9 +T10|078|AGE|9 +T10|079|AGE|9 +T10|080|AGE|9 +T11|081|AGE|9 +T11|082|AGE|9 +T11|083|AGE|9 +T11|084|AGE|9 +T11|085|AGE|9 +T11|086|AGE|9 +T11|087|AGE|9 +T11|088|AGE|9 +T11|089|AGE|9 +T11|090|AGE|9 +T11|091|AGE|9 +T11|092|AGE|9 +T11|093|AGE|9 +T11|094|AGE|9 +T11|095|AGE|9 +T11|096|AGE|9 +T11|097|AGE|9 +T11|098|AGE|9 +T11|099|AGE|9 +T11|100|AGE|9 +T11|101|AGE|9 +T11|102|AGE|9 +T11|103|AGE|9 +T11|104|AGE|9 +T11|105|AGE|9 +T11|106|AGE|9 +T11|107|AGE|9 +T11|108|AGE|9 +T11|109|AGE|9 +T11|110|AGE|9 +T11|111|AGE|9 +T11|112|AGE|9 +T11|113|AGE|9 +T11|114|AGE|9 +T11|115|AGE|9 +T11|116|AGE|9 +T11|117|AGE|9 +T11|118|AGE|9 +T11|119|AGE|9 +T11|120|AGE|9 diff --git a/db/data2/dbdata_activite_t_classes_sections_elements_duree_sejour.csv b/db/data2/dbdata_activite_t_classes_sections_elements_duree_sejour.csv new file mode 100644 index 0000000..c9f132a --- /dev/null +++ b/db/data2/dbdata_activite_t_classes_sections_elements_duree_sejour.csv @@ -0,0 +1,10001 @@ +section_code|to_code|table_code|classe_sequence +S1|0000|DURSEJ|9 +S2|0001|DURSEJ|9 +S3|0002|DURSEJ|9 +S3|0003|DURSEJ|9 +S3|0004|DURSEJ|9 +S3|0005|DURSEJ|9 +S4|0006|DURSEJ|9 +S4|0007|DURSEJ|9 +S4|0008|DURSEJ|9 +S4|0009|DURSEJ|9 +S4|0010|DURSEJ|9 +S5|0011|DURSEJ|9 +S5|0012|DURSEJ|9 +S5|0013|DURSEJ|9 +S5|0014|DURSEJ|9 +S5|0015|DURSEJ|9 +S5|0016|DURSEJ|9 +S5|0017|DURSEJ|9 +S5|0018|DURSEJ|9 +S5|0019|DURSEJ|9 +S5|0020|DURSEJ|9 +S6|0021|DURSEJ|9 +S6|0022|DURSEJ|9 +S6|0023|DURSEJ|9 +S6|0024|DURSEJ|9 +S6|0025|DURSEJ|9 +S6|0026|DURSEJ|9 +S6|0027|DURSEJ|9 +S6|0028|DURSEJ|9 +S6|0029|DURSEJ|9 +S6|0030|DURSEJ|9 +S7|0031|DURSEJ|9 +S7|0032|DURSEJ|9 +S7|0033|DURSEJ|9 +S7|0034|DURSEJ|9 +S7|0035|DURSEJ|9 +S7|0036|DURSEJ|9 +S7|0037|DURSEJ|9 +S7|0038|DURSEJ|9 +S7|0039|DURSEJ|9 +S7|0040|DURSEJ|9 +S7|0041|DURSEJ|9 +S7|0042|DURSEJ|9 +S7|0043|DURSEJ|9 +S7|0044|DURSEJ|9 +S7|0045|DURSEJ|9 +S7|0046|DURSEJ|9 +S7|0047|DURSEJ|9 +S7|0048|DURSEJ|9 +S7|0049|DURSEJ|9 +S7|0050|DURSEJ|9 +S7|0051|DURSEJ|9 +S7|0052|DURSEJ|9 +S7|0053|DURSEJ|9 +S7|0054|DURSEJ|9 +S7|0055|DURSEJ|9 +S7|0056|DURSEJ|9 +S7|0057|DURSEJ|9 +S7|0058|DURSEJ|9 +S7|0059|DURSEJ|9 +S7|0060|DURSEJ|9 +S7|0061|DURSEJ|9 +S7|0062|DURSEJ|9 +S7|0063|DURSEJ|9 +S7|0064|DURSEJ|9 +S7|0065|DURSEJ|9 +S7|0066|DURSEJ|9 +S7|0067|DURSEJ|9 +S7|0068|DURSEJ|9 +S7|0069|DURSEJ|9 +S7|0070|DURSEJ|9 +S7|0071|DURSEJ|9 +S7|0072|DURSEJ|9 +S7|0073|DURSEJ|9 +S7|0074|DURSEJ|9 +S7|0075|DURSEJ|9 +S7|0076|DURSEJ|9 +S7|0077|DURSEJ|9 +S7|0078|DURSEJ|9 +S7|0079|DURSEJ|9 +S7|0080|DURSEJ|9 +S7|0081|DURSEJ|9 +S7|0082|DURSEJ|9 +S7|0083|DURSEJ|9 +S7|0084|DURSEJ|9 +S7|0085|DURSEJ|9 +S7|0086|DURSEJ|9 +S7|0087|DURSEJ|9 +S7|0088|DURSEJ|9 +S7|0089|DURSEJ|9 +S7|0090|DURSEJ|9 +S7|0091|DURSEJ|9 +S7|0092|DURSEJ|9 +S7|0093|DURSEJ|9 +S7|0094|DURSEJ|9 +S7|0095|DURSEJ|9 +S7|0096|DURSEJ|9 +S7|0097|DURSEJ|9 +S7|0098|DURSEJ|9 +S7|0099|DURSEJ|9 +S7|0100|DURSEJ|9 +S8|0101|DURSEJ|9 +S8|0102|DURSEJ|9 +S8|0103|DURSEJ|9 +S8|0104|DURSEJ|9 +S8|0105|DURSEJ|9 +S8|0106|DURSEJ|9 +S8|0107|DURSEJ|9 +S8|0108|DURSEJ|9 +S8|0109|DURSEJ|9 +S8|0110|DURSEJ|9 +S8|0111|DURSEJ|9 +S8|0112|DURSEJ|9 +S8|0113|DURSEJ|9 +S8|0114|DURSEJ|9 +S8|0115|DURSEJ|9 +S8|0116|DURSEJ|9 +S8|0117|DURSEJ|9 +S8|0118|DURSEJ|9 +S8|0119|DURSEJ|9 +S8|0120|DURSEJ|9 +S8|0121|DURSEJ|9 +S8|0122|DURSEJ|9 +S8|0123|DURSEJ|9 +S8|0124|DURSEJ|9 +S8|0125|DURSEJ|9 +S8|0126|DURSEJ|9 +S8|0127|DURSEJ|9 +S8|0128|DURSEJ|9 +S8|0129|DURSEJ|9 +S8|0130|DURSEJ|9 +S8|0131|DURSEJ|9 +S8|0132|DURSEJ|9 +S8|0133|DURSEJ|9 +S8|0134|DURSEJ|9 +S8|0135|DURSEJ|9 +S8|0136|DURSEJ|9 +S8|0137|DURSEJ|9 +S8|0138|DURSEJ|9 +S8|0139|DURSEJ|9 +S8|0140|DURSEJ|9 +S8|0141|DURSEJ|9 +S8|0142|DURSEJ|9 +S8|0143|DURSEJ|9 +S8|0144|DURSEJ|9 +S8|0145|DURSEJ|9 +S8|0146|DURSEJ|9 +S8|0147|DURSEJ|9 +S8|0148|DURSEJ|9 +S8|0149|DURSEJ|9 +S8|0150|DURSEJ|9 +S8|0151|DURSEJ|9 +S8|0152|DURSEJ|9 +S8|0153|DURSEJ|9 +S8|0154|DURSEJ|9 +S8|0155|DURSEJ|9 +S8|0156|DURSEJ|9 +S8|0157|DURSEJ|9 +S8|0158|DURSEJ|9 +S8|0159|DURSEJ|9 +S8|0160|DURSEJ|9 +S8|0161|DURSEJ|9 +S8|0162|DURSEJ|9 +S8|0163|DURSEJ|9 +S8|0164|DURSEJ|9 +S8|0165|DURSEJ|9 +S8|0166|DURSEJ|9 +S8|0167|DURSEJ|9 +S8|0168|DURSEJ|9 +S8|0169|DURSEJ|9 +S8|0170|DURSEJ|9 +S8|0171|DURSEJ|9 +S8|0172|DURSEJ|9 +S8|0173|DURSEJ|9 +S8|0174|DURSEJ|9 +S8|0175|DURSEJ|9 +S8|0176|DURSEJ|9 +S8|0177|DURSEJ|9 +S8|0178|DURSEJ|9 +S8|0179|DURSEJ|9 +S8|0180|DURSEJ|9 +S8|0181|DURSEJ|9 +S8|0182|DURSEJ|9 +S8|0183|DURSEJ|9 +S8|0184|DURSEJ|9 +S8|0185|DURSEJ|9 +S8|0186|DURSEJ|9 +S8|0187|DURSEJ|9 +S8|0188|DURSEJ|9 +S8|0189|DURSEJ|9 +S8|0190|DURSEJ|9 +S8|0191|DURSEJ|9 +S8|0192|DURSEJ|9 +S8|0193|DURSEJ|9 +S8|0194|DURSEJ|9 +S8|0195|DURSEJ|9 +S8|0196|DURSEJ|9 +S8|0197|DURSEJ|9 +S8|0198|DURSEJ|9 +S8|0199|DURSEJ|9 +S8|0200|DURSEJ|9 +S8|0201|DURSEJ|9 +S8|0202|DURSEJ|9 +S8|0203|DURSEJ|9 +S8|0204|DURSEJ|9 +S8|0205|DURSEJ|9 +S8|0206|DURSEJ|9 +S8|0207|DURSEJ|9 +S8|0208|DURSEJ|9 +S8|0209|DURSEJ|9 +S8|0210|DURSEJ|9 +S8|0211|DURSEJ|9 +S8|0212|DURSEJ|9 +S8|0213|DURSEJ|9 +S8|0214|DURSEJ|9 +S8|0215|DURSEJ|9 +S8|0216|DURSEJ|9 +S8|0217|DURSEJ|9 +S8|0218|DURSEJ|9 +S8|0219|DURSEJ|9 +S8|0220|DURSEJ|9 +S8|0221|DURSEJ|9 +S8|0222|DURSEJ|9 +S8|0223|DURSEJ|9 +S8|0224|DURSEJ|9 +S8|0225|DURSEJ|9 +S8|0226|DURSEJ|9 +S8|0227|DURSEJ|9 +S8|0228|DURSEJ|9 +S8|0229|DURSEJ|9 +S8|0230|DURSEJ|9 +S8|0231|DURSEJ|9 +S8|0232|DURSEJ|9 +S8|0233|DURSEJ|9 +S8|0234|DURSEJ|9 +S8|0235|DURSEJ|9 +S8|0236|DURSEJ|9 +S8|0237|DURSEJ|9 +S8|0238|DURSEJ|9 +S8|0239|DURSEJ|9 +S8|0240|DURSEJ|9 +S8|0241|DURSEJ|9 +S8|0242|DURSEJ|9 +S8|0243|DURSEJ|9 +S8|0244|DURSEJ|9 +S8|0245|DURSEJ|9 +S8|0246|DURSEJ|9 +S8|0247|DURSEJ|9 +S8|0248|DURSEJ|9 +S8|0249|DURSEJ|9 +S8|0250|DURSEJ|9 +S8|0251|DURSEJ|9 +S8|0252|DURSEJ|9 +S8|0253|DURSEJ|9 +S8|0254|DURSEJ|9 +S8|0255|DURSEJ|9 +S8|0256|DURSEJ|9 +S8|0257|DURSEJ|9 +S8|0258|DURSEJ|9 +S8|0259|DURSEJ|9 +S8|0260|DURSEJ|9 +S8|0261|DURSEJ|9 +S8|0262|DURSEJ|9 +S8|0263|DURSEJ|9 +S8|0264|DURSEJ|9 +S8|0265|DURSEJ|9 +S8|0266|DURSEJ|9 +S8|0267|DURSEJ|9 +S8|0268|DURSEJ|9 +S8|0269|DURSEJ|9 +S8|0270|DURSEJ|9 +S8|0271|DURSEJ|9 +S8|0272|DURSEJ|9 +S8|0273|DURSEJ|9 +S8|0274|DURSEJ|9 +S8|0275|DURSEJ|9 +S8|0276|DURSEJ|9 +S8|0277|DURSEJ|9 +S8|0278|DURSEJ|9 +S8|0279|DURSEJ|9 +S8|0280|DURSEJ|9 +S8|0281|DURSEJ|9 +S8|0282|DURSEJ|9 +S8|0283|DURSEJ|9 +S8|0284|DURSEJ|9 +S8|0285|DURSEJ|9 +S8|0286|DURSEJ|9 +S8|0287|DURSEJ|9 +S8|0288|DURSEJ|9 +S8|0289|DURSEJ|9 +S8|0290|DURSEJ|9 +S8|0291|DURSEJ|9 +S8|0292|DURSEJ|9 +S8|0293|DURSEJ|9 +S8|0294|DURSEJ|9 +S8|0295|DURSEJ|9 +S8|0296|DURSEJ|9 +S8|0297|DURSEJ|9 +S8|0298|DURSEJ|9 +S8|0299|DURSEJ|9 +S8|0300|DURSEJ|9 +S8|0301|DURSEJ|9 +S8|0302|DURSEJ|9 +S8|0303|DURSEJ|9 +S8|0304|DURSEJ|9 +S8|0305|DURSEJ|9 +S8|0306|DURSEJ|9 +S8|0307|DURSEJ|9 +S8|0308|DURSEJ|9 +S8|0309|DURSEJ|9 +S8|0310|DURSEJ|9 +S8|0311|DURSEJ|9 +S8|0312|DURSEJ|9 +S8|0313|DURSEJ|9 +S8|0314|DURSEJ|9 +S8|0315|DURSEJ|9 +S8|0316|DURSEJ|9 +S8|0317|DURSEJ|9 +S8|0318|DURSEJ|9 +S8|0319|DURSEJ|9 +S8|0320|DURSEJ|9 +S8|0321|DURSEJ|9 +S8|0322|DURSEJ|9 +S8|0323|DURSEJ|9 +S8|0324|DURSEJ|9 +S8|0325|DURSEJ|9 +S8|0326|DURSEJ|9 +S8|0327|DURSEJ|9 +S8|0328|DURSEJ|9 +S8|0329|DURSEJ|9 +S8|0330|DURSEJ|9 +S8|0331|DURSEJ|9 +S8|0332|DURSEJ|9 +S8|0333|DURSEJ|9 +S8|0334|DURSEJ|9 +S8|0335|DURSEJ|9 +S8|0336|DURSEJ|9 +S8|0337|DURSEJ|9 +S8|0338|DURSEJ|9 +S8|0339|DURSEJ|9 +S8|0340|DURSEJ|9 +S8|0341|DURSEJ|9 +S8|0342|DURSEJ|9 +S8|0343|DURSEJ|9 +S8|0344|DURSEJ|9 +S8|0345|DURSEJ|9 +S8|0346|DURSEJ|9 +S8|0347|DURSEJ|9 +S8|0348|DURSEJ|9 +S8|0349|DURSEJ|9 +S8|0350|DURSEJ|9 +S8|0351|DURSEJ|9 +S8|0352|DURSEJ|9 +S8|0353|DURSEJ|9 +S8|0354|DURSEJ|9 +S8|0355|DURSEJ|9 +S8|0356|DURSEJ|9 +S8|0357|DURSEJ|9 +S8|0358|DURSEJ|9 +S8|0359|DURSEJ|9 +S8|0360|DURSEJ|9 +S8|0361|DURSEJ|9 +S8|0362|DURSEJ|9 +S8|0363|DURSEJ|9 +S8|0364|DURSEJ|9 +S8|0365|DURSEJ|9 +S8|0366|DURSEJ|9 +S8|0367|DURSEJ|9 +S8|0368|DURSEJ|9 +S8|0369|DURSEJ|9 +S8|0370|DURSEJ|9 +S8|0371|DURSEJ|9 +S8|0372|DURSEJ|9 +S8|0373|DURSEJ|9 +S8|0374|DURSEJ|9 +S8|0375|DURSEJ|9 +S8|0376|DURSEJ|9 +S8|0377|DURSEJ|9 +S8|0378|DURSEJ|9 +S8|0379|DURSEJ|9 +S8|0380|DURSEJ|9 +S8|0381|DURSEJ|9 +S8|0382|DURSEJ|9 +S8|0383|DURSEJ|9 +S8|0384|DURSEJ|9 +S8|0385|DURSEJ|9 +S8|0386|DURSEJ|9 +S8|0387|DURSEJ|9 +S8|0388|DURSEJ|9 +S8|0389|DURSEJ|9 +S8|0390|DURSEJ|9 +S8|0391|DURSEJ|9 +S8|0392|DURSEJ|9 +S8|0393|DURSEJ|9 +S8|0394|DURSEJ|9 +S8|0395|DURSEJ|9 +S8|0396|DURSEJ|9 +S8|0397|DURSEJ|9 +S8|0398|DURSEJ|9 +S8|0399|DURSEJ|9 +S8|0400|DURSEJ|9 +S8|0401|DURSEJ|9 +S8|0402|DURSEJ|9 +S8|0403|DURSEJ|9 +S8|0404|DURSEJ|9 +S8|0405|DURSEJ|9 +S8|0406|DURSEJ|9 +S8|0407|DURSEJ|9 +S8|0408|DURSEJ|9 +S8|0409|DURSEJ|9 +S8|0410|DURSEJ|9 +S8|0411|DURSEJ|9 +S8|0412|DURSEJ|9 +S8|0413|DURSEJ|9 +S8|0414|DURSEJ|9 +S8|0415|DURSEJ|9 +S8|0416|DURSEJ|9 +S8|0417|DURSEJ|9 +S8|0418|DURSEJ|9 +S8|0419|DURSEJ|9 +S8|0420|DURSEJ|9 +S8|0421|DURSEJ|9 +S8|0422|DURSEJ|9 +S8|0423|DURSEJ|9 +S8|0424|DURSEJ|9 +S8|0425|DURSEJ|9 +S8|0426|DURSEJ|9 +S8|0427|DURSEJ|9 +S8|0428|DURSEJ|9 +S8|0429|DURSEJ|9 +S8|0430|DURSEJ|9 +S8|0431|DURSEJ|9 +S8|0432|DURSEJ|9 +S8|0433|DURSEJ|9 +S8|0434|DURSEJ|9 +S8|0435|DURSEJ|9 +S8|0436|DURSEJ|9 +S8|0437|DURSEJ|9 +S8|0438|DURSEJ|9 +S8|0439|DURSEJ|9 +S8|0440|DURSEJ|9 +S8|0441|DURSEJ|9 +S8|0442|DURSEJ|9 +S8|0443|DURSEJ|9 +S8|0444|DURSEJ|9 +S8|0445|DURSEJ|9 +S8|0446|DURSEJ|9 +S8|0447|DURSEJ|9 +S8|0448|DURSEJ|9 +S8|0449|DURSEJ|9 +S8|0450|DURSEJ|9 +S8|0451|DURSEJ|9 +S8|0452|DURSEJ|9 +S8|0453|DURSEJ|9 +S8|0454|DURSEJ|9 +S8|0455|DURSEJ|9 +S8|0456|DURSEJ|9 +S8|0457|DURSEJ|9 +S8|0458|DURSEJ|9 +S8|0459|DURSEJ|9 +S8|0460|DURSEJ|9 +S8|0461|DURSEJ|9 +S8|0462|DURSEJ|9 +S8|0463|DURSEJ|9 +S8|0464|DURSEJ|9 +S8|0465|DURSEJ|9 +S8|0466|DURSEJ|9 +S8|0467|DURSEJ|9 +S8|0468|DURSEJ|9 +S8|0469|DURSEJ|9 +S8|0470|DURSEJ|9 +S8|0471|DURSEJ|9 +S8|0472|DURSEJ|9 +S8|0473|DURSEJ|9 +S8|0474|DURSEJ|9 +S8|0475|DURSEJ|9 +S8|0476|DURSEJ|9 +S8|0477|DURSEJ|9 +S8|0478|DURSEJ|9 +S8|0479|DURSEJ|9 +S8|0480|DURSEJ|9 +S8|0481|DURSEJ|9 +S8|0482|DURSEJ|9 +S8|0483|DURSEJ|9 +S8|0484|DURSEJ|9 +S8|0485|DURSEJ|9 +S8|0486|DURSEJ|9 +S8|0487|DURSEJ|9 +S8|0488|DURSEJ|9 +S8|0489|DURSEJ|9 +S8|0490|DURSEJ|9 +S8|0491|DURSEJ|9 +S8|0492|DURSEJ|9 +S8|0493|DURSEJ|9 +S8|0494|DURSEJ|9 +S8|0495|DURSEJ|9 +S8|0496|DURSEJ|9 +S8|0497|DURSEJ|9 +S8|0498|DURSEJ|9 +S8|0499|DURSEJ|9 +S8|0500|DURSEJ|9 +S8|0501|DURSEJ|9 +S8|0502|DURSEJ|9 +S8|0503|DURSEJ|9 +S8|0504|DURSEJ|9 +S8|0505|DURSEJ|9 +S8|0506|DURSEJ|9 +S8|0507|DURSEJ|9 +S8|0508|DURSEJ|9 +S8|0509|DURSEJ|9 +S8|0510|DURSEJ|9 +S8|0511|DURSEJ|9 +S8|0512|DURSEJ|9 +S8|0513|DURSEJ|9 +S8|0514|DURSEJ|9 +S8|0515|DURSEJ|9 +S8|0516|DURSEJ|9 +S8|0517|DURSEJ|9 +S8|0518|DURSEJ|9 +S8|0519|DURSEJ|9 +S8|0520|DURSEJ|9 +S8|0521|DURSEJ|9 +S8|0522|DURSEJ|9 +S8|0523|DURSEJ|9 +S8|0524|DURSEJ|9 +S8|0525|DURSEJ|9 +S8|0526|DURSEJ|9 +S8|0527|DURSEJ|9 +S8|0528|DURSEJ|9 +S8|0529|DURSEJ|9 +S8|0530|DURSEJ|9 +S8|0531|DURSEJ|9 +S8|0532|DURSEJ|9 +S8|0533|DURSEJ|9 +S8|0534|DURSEJ|9 +S8|0535|DURSEJ|9 +S8|0536|DURSEJ|9 +S8|0537|DURSEJ|9 +S8|0538|DURSEJ|9 +S8|0539|DURSEJ|9 +S8|0540|DURSEJ|9 +S8|0541|DURSEJ|9 +S8|0542|DURSEJ|9 +S8|0543|DURSEJ|9 +S8|0544|DURSEJ|9 +S8|0545|DURSEJ|9 +S8|0546|DURSEJ|9 +S8|0547|DURSEJ|9 +S8|0548|DURSEJ|9 +S8|0549|DURSEJ|9 +S8|0550|DURSEJ|9 +S8|0551|DURSEJ|9 +S8|0552|DURSEJ|9 +S8|0553|DURSEJ|9 +S8|0554|DURSEJ|9 +S8|0555|DURSEJ|9 +S8|0556|DURSEJ|9 +S8|0557|DURSEJ|9 +S8|0558|DURSEJ|9 +S8|0559|DURSEJ|9 +S8|0560|DURSEJ|9 +S8|0561|DURSEJ|9 +S8|0562|DURSEJ|9 +S8|0563|DURSEJ|9 +S8|0564|DURSEJ|9 +S8|0565|DURSEJ|9 +S8|0566|DURSEJ|9 +S8|0567|DURSEJ|9 +S8|0568|DURSEJ|9 +S8|0569|DURSEJ|9 +S8|0570|DURSEJ|9 +S8|0571|DURSEJ|9 +S8|0572|DURSEJ|9 +S8|0573|DURSEJ|9 +S8|0574|DURSEJ|9 +S8|0575|DURSEJ|9 +S8|0576|DURSEJ|9 +S8|0577|DURSEJ|9 +S8|0578|DURSEJ|9 +S8|0579|DURSEJ|9 +S8|0580|DURSEJ|9 +S8|0581|DURSEJ|9 +S8|0582|DURSEJ|9 +S8|0583|DURSEJ|9 +S8|0584|DURSEJ|9 +S8|0585|DURSEJ|9 +S8|0586|DURSEJ|9 +S8|0587|DURSEJ|9 +S8|0588|DURSEJ|9 +S8|0589|DURSEJ|9 +S8|0590|DURSEJ|9 +S8|0591|DURSEJ|9 +S8|0592|DURSEJ|9 +S8|0593|DURSEJ|9 +S8|0594|DURSEJ|9 +S8|0595|DURSEJ|9 +S8|0596|DURSEJ|9 +S8|0597|DURSEJ|9 +S8|0598|DURSEJ|9 +S8|0599|DURSEJ|9 +S8|0600|DURSEJ|9 +S8|0601|DURSEJ|9 +S8|0602|DURSEJ|9 +S8|0603|DURSEJ|9 +S8|0604|DURSEJ|9 +S8|0605|DURSEJ|9 +S8|0606|DURSEJ|9 +S8|0607|DURSEJ|9 +S8|0608|DURSEJ|9 +S8|0609|DURSEJ|9 +S8|0610|DURSEJ|9 +S8|0611|DURSEJ|9 +S8|0612|DURSEJ|9 +S8|0613|DURSEJ|9 +S8|0614|DURSEJ|9 +S8|0615|DURSEJ|9 +S8|0616|DURSEJ|9 +S8|0617|DURSEJ|9 +S8|0618|DURSEJ|9 +S8|0619|DURSEJ|9 +S8|0620|DURSEJ|9 +S8|0621|DURSEJ|9 +S8|0622|DURSEJ|9 +S8|0623|DURSEJ|9 +S8|0624|DURSEJ|9 +S8|0625|DURSEJ|9 +S8|0626|DURSEJ|9 +S8|0627|DURSEJ|9 +S8|0628|DURSEJ|9 +S8|0629|DURSEJ|9 +S8|0630|DURSEJ|9 +S8|0631|DURSEJ|9 +S8|0632|DURSEJ|9 +S8|0633|DURSEJ|9 +S8|0634|DURSEJ|9 +S8|0635|DURSEJ|9 +S8|0636|DURSEJ|9 +S8|0637|DURSEJ|9 +S8|0638|DURSEJ|9 +S8|0639|DURSEJ|9 +S8|0640|DURSEJ|9 +S8|0641|DURSEJ|9 +S8|0642|DURSEJ|9 +S8|0643|DURSEJ|9 +S8|0644|DURSEJ|9 +S8|0645|DURSEJ|9 +S8|0646|DURSEJ|9 +S8|0647|DURSEJ|9 +S8|0648|DURSEJ|9 +S8|0649|DURSEJ|9 +S8|0650|DURSEJ|9 +S8|0651|DURSEJ|9 +S8|0652|DURSEJ|9 +S8|0653|DURSEJ|9 +S8|0654|DURSEJ|9 +S8|0655|DURSEJ|9 +S8|0656|DURSEJ|9 +S8|0657|DURSEJ|9 +S8|0658|DURSEJ|9 +S8|0659|DURSEJ|9 +S8|0660|DURSEJ|9 +S8|0661|DURSEJ|9 +S8|0662|DURSEJ|9 +S8|0663|DURSEJ|9 +S8|0664|DURSEJ|9 +S8|0665|DURSEJ|9 +S8|0666|DURSEJ|9 +S8|0667|DURSEJ|9 +S8|0668|DURSEJ|9 +S8|0669|DURSEJ|9 +S8|0670|DURSEJ|9 +S8|0671|DURSEJ|9 +S8|0672|DURSEJ|9 +S8|0673|DURSEJ|9 +S8|0674|DURSEJ|9 +S8|0675|DURSEJ|9 +S8|0676|DURSEJ|9 +S8|0677|DURSEJ|9 +S8|0678|DURSEJ|9 +S8|0679|DURSEJ|9 +S8|0680|DURSEJ|9 +S8|0681|DURSEJ|9 +S8|0682|DURSEJ|9 +S8|0683|DURSEJ|9 +S8|0684|DURSEJ|9 +S8|0685|DURSEJ|9 +S8|0686|DURSEJ|9 +S8|0687|DURSEJ|9 +S8|0688|DURSEJ|9 +S8|0689|DURSEJ|9 +S8|0690|DURSEJ|9 +S8|0691|DURSEJ|9 +S8|0692|DURSEJ|9 +S8|0693|DURSEJ|9 +S8|0694|DURSEJ|9 +S8|0695|DURSEJ|9 +S8|0696|DURSEJ|9 +S8|0697|DURSEJ|9 +S8|0698|DURSEJ|9 +S8|0699|DURSEJ|9 +S8|0700|DURSEJ|9 +S8|0701|DURSEJ|9 +S8|0702|DURSEJ|9 +S8|0703|DURSEJ|9 +S8|0704|DURSEJ|9 +S8|0705|DURSEJ|9 +S8|0706|DURSEJ|9 +S8|0707|DURSEJ|9 +S8|0708|DURSEJ|9 +S8|0709|DURSEJ|9 +S8|0710|DURSEJ|9 +S8|0711|DURSEJ|9 +S8|0712|DURSEJ|9 +S8|0713|DURSEJ|9 +S8|0714|DURSEJ|9 +S8|0715|DURSEJ|9 +S8|0716|DURSEJ|9 +S8|0717|DURSEJ|9 +S8|0718|DURSEJ|9 +S8|0719|DURSEJ|9 +S8|0720|DURSEJ|9 +S8|0721|DURSEJ|9 +S8|0722|DURSEJ|9 +S8|0723|DURSEJ|9 +S8|0724|DURSEJ|9 +S8|0725|DURSEJ|9 +S8|0726|DURSEJ|9 +S8|0727|DURSEJ|9 +S8|0728|DURSEJ|9 +S8|0729|DURSEJ|9 +S8|0730|DURSEJ|9 +S8|0731|DURSEJ|9 +S8|0732|DURSEJ|9 +S8|0733|DURSEJ|9 +S8|0734|DURSEJ|9 +S8|0735|DURSEJ|9 +S8|0736|DURSEJ|9 +S8|0737|DURSEJ|9 +S8|0738|DURSEJ|9 +S8|0739|DURSEJ|9 +S8|0740|DURSEJ|9 +S8|0741|DURSEJ|9 +S8|0742|DURSEJ|9 +S8|0743|DURSEJ|9 +S8|0744|DURSEJ|9 +S8|0745|DURSEJ|9 +S8|0746|DURSEJ|9 +S8|0747|DURSEJ|9 +S8|0748|DURSEJ|9 +S8|0749|DURSEJ|9 +S8|0750|DURSEJ|9 +S8|0751|DURSEJ|9 +S8|0752|DURSEJ|9 +S8|0753|DURSEJ|9 +S8|0754|DURSEJ|9 +S8|0755|DURSEJ|9 +S8|0756|DURSEJ|9 +S8|0757|DURSEJ|9 +S8|0758|DURSEJ|9 +S8|0759|DURSEJ|9 +S8|0760|DURSEJ|9 +S8|0761|DURSEJ|9 +S8|0762|DURSEJ|9 +S8|0763|DURSEJ|9 +S8|0764|DURSEJ|9 +S8|0765|DURSEJ|9 +S8|0766|DURSEJ|9 +S8|0767|DURSEJ|9 +S8|0768|DURSEJ|9 +S8|0769|DURSEJ|9 +S8|0770|DURSEJ|9 +S8|0771|DURSEJ|9 +S8|0772|DURSEJ|9 +S8|0773|DURSEJ|9 +S8|0774|DURSEJ|9 +S8|0775|DURSEJ|9 +S8|0776|DURSEJ|9 +S8|0777|DURSEJ|9 +S8|0778|DURSEJ|9 +S8|0779|DURSEJ|9 +S8|0780|DURSEJ|9 +S8|0781|DURSEJ|9 +S8|0782|DURSEJ|9 +S8|0783|DURSEJ|9 +S8|0784|DURSEJ|9 +S8|0785|DURSEJ|9 +S8|0786|DURSEJ|9 +S8|0787|DURSEJ|9 +S8|0788|DURSEJ|9 +S8|0789|DURSEJ|9 +S8|0790|DURSEJ|9 +S8|0791|DURSEJ|9 +S8|0792|DURSEJ|9 +S8|0793|DURSEJ|9 +S8|0794|DURSEJ|9 +S8|0795|DURSEJ|9 +S8|0796|DURSEJ|9 +S8|0797|DURSEJ|9 +S8|0798|DURSEJ|9 +S8|0799|DURSEJ|9 +S8|0800|DURSEJ|9 +S8|0801|DURSEJ|9 +S8|0802|DURSEJ|9 +S8|0803|DURSEJ|9 +S8|0804|DURSEJ|9 +S8|0805|DURSEJ|9 +S8|0806|DURSEJ|9 +S8|0807|DURSEJ|9 +S8|0808|DURSEJ|9 +S8|0809|DURSEJ|9 +S8|0810|DURSEJ|9 +S8|0811|DURSEJ|9 +S8|0812|DURSEJ|9 +S8|0813|DURSEJ|9 +S8|0814|DURSEJ|9 +S8|0815|DURSEJ|9 +S8|0816|DURSEJ|9 +S8|0817|DURSEJ|9 +S8|0818|DURSEJ|9 +S8|0819|DURSEJ|9 +S8|0820|DURSEJ|9 +S8|0821|DURSEJ|9 +S8|0822|DURSEJ|9 +S8|0823|DURSEJ|9 +S8|0824|DURSEJ|9 +S8|0825|DURSEJ|9 +S8|0826|DURSEJ|9 +S8|0827|DURSEJ|9 +S8|0828|DURSEJ|9 +S8|0829|DURSEJ|9 +S8|0830|DURSEJ|9 +S8|0831|DURSEJ|9 +S8|0832|DURSEJ|9 +S8|0833|DURSEJ|9 +S8|0834|DURSEJ|9 +S8|0835|DURSEJ|9 +S8|0836|DURSEJ|9 +S8|0837|DURSEJ|9 +S8|0838|DURSEJ|9 +S8|0839|DURSEJ|9 +S8|0840|DURSEJ|9 +S8|0841|DURSEJ|9 +S8|0842|DURSEJ|9 +S8|0843|DURSEJ|9 +S8|0844|DURSEJ|9 +S8|0845|DURSEJ|9 +S8|0846|DURSEJ|9 +S8|0847|DURSEJ|9 +S8|0848|DURSEJ|9 +S8|0849|DURSEJ|9 +S8|0850|DURSEJ|9 +S8|0851|DURSEJ|9 +S8|0852|DURSEJ|9 +S8|0853|DURSEJ|9 +S8|0854|DURSEJ|9 +S8|0855|DURSEJ|9 +S8|0856|DURSEJ|9 +S8|0857|DURSEJ|9 +S8|0858|DURSEJ|9 +S8|0859|DURSEJ|9 +S8|0860|DURSEJ|9 +S8|0861|DURSEJ|9 +S8|0862|DURSEJ|9 +S8|0863|DURSEJ|9 +S8|0864|DURSEJ|9 +S8|0865|DURSEJ|9 +S8|0866|DURSEJ|9 +S8|0867|DURSEJ|9 +S8|0868|DURSEJ|9 +S8|0869|DURSEJ|9 +S8|0870|DURSEJ|9 +S8|0871|DURSEJ|9 +S8|0872|DURSEJ|9 +S8|0873|DURSEJ|9 +S8|0874|DURSEJ|9 +S8|0875|DURSEJ|9 +S8|0876|DURSEJ|9 +S8|0877|DURSEJ|9 +S8|0878|DURSEJ|9 +S8|0879|DURSEJ|9 +S8|0880|DURSEJ|9 +S8|0881|DURSEJ|9 +S8|0882|DURSEJ|9 +S8|0883|DURSEJ|9 +S8|0884|DURSEJ|9 +S8|0885|DURSEJ|9 +S8|0886|DURSEJ|9 +S8|0887|DURSEJ|9 +S8|0888|DURSEJ|9 +S8|0889|DURSEJ|9 +S8|0890|DURSEJ|9 +S8|0891|DURSEJ|9 +S8|0892|DURSEJ|9 +S8|0893|DURSEJ|9 +S8|0894|DURSEJ|9 +S8|0895|DURSEJ|9 +S8|0896|DURSEJ|9 +S8|0897|DURSEJ|9 +S8|0898|DURSEJ|9 +S8|0899|DURSEJ|9 +S8|0900|DURSEJ|9 +S8|0901|DURSEJ|9 +S8|0902|DURSEJ|9 +S8|0903|DURSEJ|9 +S8|0904|DURSEJ|9 +S8|0905|DURSEJ|9 +S8|0906|DURSEJ|9 +S8|0907|DURSEJ|9 +S8|0908|DURSEJ|9 +S8|0909|DURSEJ|9 +S8|0910|DURSEJ|9 +S8|0911|DURSEJ|9 +S8|0912|DURSEJ|9 +S8|0913|DURSEJ|9 +S8|0914|DURSEJ|9 +S8|0915|DURSEJ|9 +S8|0916|DURSEJ|9 +S8|0917|DURSEJ|9 +S8|0918|DURSEJ|9 +S8|0919|DURSEJ|9 +S8|0920|DURSEJ|9 +S8|0921|DURSEJ|9 +S8|0922|DURSEJ|9 +S8|0923|DURSEJ|9 +S8|0924|DURSEJ|9 +S8|0925|DURSEJ|9 +S8|0926|DURSEJ|9 +S8|0927|DURSEJ|9 +S8|0928|DURSEJ|9 +S8|0929|DURSEJ|9 +S8|0930|DURSEJ|9 +S8|0931|DURSEJ|9 +S8|0932|DURSEJ|9 +S8|0933|DURSEJ|9 +S8|0934|DURSEJ|9 +S8|0935|DURSEJ|9 +S8|0936|DURSEJ|9 +S8|0937|DURSEJ|9 +S8|0938|DURSEJ|9 +S8|0939|DURSEJ|9 +S8|0940|DURSEJ|9 +S8|0941|DURSEJ|9 +S8|0942|DURSEJ|9 +S8|0943|DURSEJ|9 +S8|0944|DURSEJ|9 +S8|0945|DURSEJ|9 +S8|0946|DURSEJ|9 +S8|0947|DURSEJ|9 +S8|0948|DURSEJ|9 +S8|0949|DURSEJ|9 +S8|0950|DURSEJ|9 +S8|0951|DURSEJ|9 +S8|0952|DURSEJ|9 +S8|0953|DURSEJ|9 +S8|0954|DURSEJ|9 +S8|0955|DURSEJ|9 +S8|0956|DURSEJ|9 +S8|0957|DURSEJ|9 +S8|0958|DURSEJ|9 +S8|0959|DURSEJ|9 +S8|0960|DURSEJ|9 +S8|0961|DURSEJ|9 +S8|0962|DURSEJ|9 +S8|0963|DURSEJ|9 +S8|0964|DURSEJ|9 +S8|0965|DURSEJ|9 +S8|0966|DURSEJ|9 +S8|0967|DURSEJ|9 +S8|0968|DURSEJ|9 +S8|0969|DURSEJ|9 +S8|0970|DURSEJ|9 +S8|0971|DURSEJ|9 +S8|0972|DURSEJ|9 +S8|0973|DURSEJ|9 +S8|0974|DURSEJ|9 +S8|0975|DURSEJ|9 +S8|0976|DURSEJ|9 +S8|0977|DURSEJ|9 +S8|0978|DURSEJ|9 +S8|0979|DURSEJ|9 +S8|0980|DURSEJ|9 +S8|0981|DURSEJ|9 +S8|0982|DURSEJ|9 +S8|0983|DURSEJ|9 +S8|0984|DURSEJ|9 +S8|0985|DURSEJ|9 +S8|0986|DURSEJ|9 +S8|0987|DURSEJ|9 +S8|0988|DURSEJ|9 +S8|0989|DURSEJ|9 +S8|0990|DURSEJ|9 +S8|0991|DURSEJ|9 +S8|0992|DURSEJ|9 +S8|0993|DURSEJ|9 +S8|0994|DURSEJ|9 +S8|0995|DURSEJ|9 +S8|0996|DURSEJ|9 +S8|0997|DURSEJ|9 +S8|0998|DURSEJ|9 +S8|0999|DURSEJ|9 +S8|1000|DURSEJ|9 +S9|1001|DURSEJ|9 +S9|1002|DURSEJ|9 +S9|1003|DURSEJ|9 +S9|1004|DURSEJ|9 +S9|1005|DURSEJ|9 +S9|1006|DURSEJ|9 +S9|1007|DURSEJ|9 +S9|1008|DURSEJ|9 +S9|1009|DURSEJ|9 +S9|1010|DURSEJ|9 +S9|1011|DURSEJ|9 +S9|1012|DURSEJ|9 +S9|1013|DURSEJ|9 +S9|1014|DURSEJ|9 +S9|1015|DURSEJ|9 +S9|1016|DURSEJ|9 +S9|1017|DURSEJ|9 +S9|1018|DURSEJ|9 +S9|1019|DURSEJ|9 +S9|1020|DURSEJ|9 +S9|1021|DURSEJ|9 +S9|1022|DURSEJ|9 +S9|1023|DURSEJ|9 +S9|1024|DURSEJ|9 +S9|1025|DURSEJ|9 +S9|1026|DURSEJ|9 +S9|1027|DURSEJ|9 +S9|1028|DURSEJ|9 +S9|1029|DURSEJ|9 +S9|1030|DURSEJ|9 +S9|1031|DURSEJ|9 +S9|1032|DURSEJ|9 +S9|1033|DURSEJ|9 +S9|1034|DURSEJ|9 +S9|1035|DURSEJ|9 +S9|1036|DURSEJ|9 +S9|1037|DURSEJ|9 +S9|1038|DURSEJ|9 +S9|1039|DURSEJ|9 +S9|1040|DURSEJ|9 +S9|1041|DURSEJ|9 +S9|1042|DURSEJ|9 +S9|1043|DURSEJ|9 +S9|1044|DURSEJ|9 +S9|1045|DURSEJ|9 +S9|1046|DURSEJ|9 +S9|1047|DURSEJ|9 +S9|1048|DURSEJ|9 +S9|1049|DURSEJ|9 +S9|1050|DURSEJ|9 +S9|1051|DURSEJ|9 +S9|1052|DURSEJ|9 +S9|1053|DURSEJ|9 +S9|1054|DURSEJ|9 +S9|1055|DURSEJ|9 +S9|1056|DURSEJ|9 +S9|1057|DURSEJ|9 +S9|1058|DURSEJ|9 +S9|1059|DURSEJ|9 +S9|1060|DURSEJ|9 +S9|1061|DURSEJ|9 +S9|1062|DURSEJ|9 +S9|1063|DURSEJ|9 +S9|1064|DURSEJ|9 +S9|1065|DURSEJ|9 +S9|1066|DURSEJ|9 +S9|1067|DURSEJ|9 +S9|1068|DURSEJ|9 +S9|1069|DURSEJ|9 +S9|1070|DURSEJ|9 +S9|1071|DURSEJ|9 +S9|1072|DURSEJ|9 +S9|1073|DURSEJ|9 +S9|1074|DURSEJ|9 +S9|1075|DURSEJ|9 +S9|1076|DURSEJ|9 +S9|1077|DURSEJ|9 +S9|1078|DURSEJ|9 +S9|1079|DURSEJ|9 +S9|1080|DURSEJ|9 +S9|1081|DURSEJ|9 +S9|1082|DURSEJ|9 +S9|1083|DURSEJ|9 +S9|1084|DURSEJ|9 +S9|1085|DURSEJ|9 +S9|1086|DURSEJ|9 +S9|1087|DURSEJ|9 +S9|1088|DURSEJ|9 +S9|1089|DURSEJ|9 +S9|1090|DURSEJ|9 +S9|1091|DURSEJ|9 +S9|1092|DURSEJ|9 +S9|1093|DURSEJ|9 +S9|1094|DURSEJ|9 +S9|1095|DURSEJ|9 +S9|1096|DURSEJ|9 +S9|1097|DURSEJ|9 +S9|1098|DURSEJ|9 +S9|1099|DURSEJ|9 +S9|1100|DURSEJ|9 +S9|1101|DURSEJ|9 +S9|1102|DURSEJ|9 +S9|1103|DURSEJ|9 +S9|1104|DURSEJ|9 +S9|1105|DURSEJ|9 +S9|1106|DURSEJ|9 +S9|1107|DURSEJ|9 +S9|1108|DURSEJ|9 +S9|1109|DURSEJ|9 +S9|1110|DURSEJ|9 +S9|1111|DURSEJ|9 +S9|1112|DURSEJ|9 +S9|1113|DURSEJ|9 +S9|1114|DURSEJ|9 +S9|1115|DURSEJ|9 +S9|1116|DURSEJ|9 +S9|1117|DURSEJ|9 +S9|1118|DURSEJ|9 +S9|1119|DURSEJ|9 +S9|1120|DURSEJ|9 +S9|1121|DURSEJ|9 +S9|1122|DURSEJ|9 +S9|1123|DURSEJ|9 +S9|1124|DURSEJ|9 +S9|1125|DURSEJ|9 +S9|1126|DURSEJ|9 +S9|1127|DURSEJ|9 +S9|1128|DURSEJ|9 +S9|1129|DURSEJ|9 +S9|1130|DURSEJ|9 +S9|1131|DURSEJ|9 +S9|1132|DURSEJ|9 +S9|1133|DURSEJ|9 +S9|1134|DURSEJ|9 +S9|1135|DURSEJ|9 +S9|1136|DURSEJ|9 +S9|1137|DURSEJ|9 +S9|1138|DURSEJ|9 +S9|1139|DURSEJ|9 +S9|1140|DURSEJ|9 +S9|1141|DURSEJ|9 +S9|1142|DURSEJ|9 +S9|1143|DURSEJ|9 +S9|1144|DURSEJ|9 +S9|1145|DURSEJ|9 +S9|1146|DURSEJ|9 +S9|1147|DURSEJ|9 +S9|1148|DURSEJ|9 +S9|1149|DURSEJ|9 +S9|1150|DURSEJ|9 +S9|1151|DURSEJ|9 +S9|1152|DURSEJ|9 +S9|1153|DURSEJ|9 +S9|1154|DURSEJ|9 +S9|1155|DURSEJ|9 +S9|1156|DURSEJ|9 +S9|1157|DURSEJ|9 +S9|1158|DURSEJ|9 +S9|1159|DURSEJ|9 +S9|1160|DURSEJ|9 +S9|1161|DURSEJ|9 +S9|1162|DURSEJ|9 +S9|1163|DURSEJ|9 +S9|1164|DURSEJ|9 +S9|1165|DURSEJ|9 +S9|1166|DURSEJ|9 +S9|1167|DURSEJ|9 +S9|1168|DURSEJ|9 +S9|1169|DURSEJ|9 +S9|1170|DURSEJ|9 +S9|1171|DURSEJ|9 +S9|1172|DURSEJ|9 +S9|1173|DURSEJ|9 +S9|1174|DURSEJ|9 +S9|1175|DURSEJ|9 +S9|1176|DURSEJ|9 +S9|1177|DURSEJ|9 +S9|1178|DURSEJ|9 +S9|1179|DURSEJ|9 +S9|1180|DURSEJ|9 +S9|1181|DURSEJ|9 +S9|1182|DURSEJ|9 +S9|1183|DURSEJ|9 +S9|1184|DURSEJ|9 +S9|1185|DURSEJ|9 +S9|1186|DURSEJ|9 +S9|1187|DURSEJ|9 +S9|1188|DURSEJ|9 +S9|1189|DURSEJ|9 +S9|1190|DURSEJ|9 +S9|1191|DURSEJ|9 +S9|1192|DURSEJ|9 +S9|1193|DURSEJ|9 +S9|1194|DURSEJ|9 +S9|1195|DURSEJ|9 +S9|1196|DURSEJ|9 +S9|1197|DURSEJ|9 +S9|1198|DURSEJ|9 +S9|1199|DURSEJ|9 +S9|1200|DURSEJ|9 +S9|1201|DURSEJ|9 +S9|1202|DURSEJ|9 +S9|1203|DURSEJ|9 +S9|1204|DURSEJ|9 +S9|1205|DURSEJ|9 +S9|1206|DURSEJ|9 +S9|1207|DURSEJ|9 +S9|1208|DURSEJ|9 +S9|1209|DURSEJ|9 +S9|1210|DURSEJ|9 +S9|1211|DURSEJ|9 +S9|1212|DURSEJ|9 +S9|1213|DURSEJ|9 +S9|1214|DURSEJ|9 +S9|1215|DURSEJ|9 +S9|1216|DURSEJ|9 +S9|1217|DURSEJ|9 +S9|1218|DURSEJ|9 +S9|1219|DURSEJ|9 +S9|1220|DURSEJ|9 +S9|1221|DURSEJ|9 +S9|1222|DURSEJ|9 +S9|1223|DURSEJ|9 +S9|1224|DURSEJ|9 +S9|1225|DURSEJ|9 +S9|1226|DURSEJ|9 +S9|1227|DURSEJ|9 +S9|1228|DURSEJ|9 +S9|1229|DURSEJ|9 +S9|1230|DURSEJ|9 +S9|1231|DURSEJ|9 +S9|1232|DURSEJ|9 +S9|1233|DURSEJ|9 +S9|1234|DURSEJ|9 +S9|1235|DURSEJ|9 +S9|1236|DURSEJ|9 +S9|1237|DURSEJ|9 +S9|1238|DURSEJ|9 +S9|1239|DURSEJ|9 +S9|1240|DURSEJ|9 +S9|1241|DURSEJ|9 +S9|1242|DURSEJ|9 +S9|1243|DURSEJ|9 +S9|1244|DURSEJ|9 +S9|1245|DURSEJ|9 +S9|1246|DURSEJ|9 +S9|1247|DURSEJ|9 +S9|1248|DURSEJ|9 +S9|1249|DURSEJ|9 +S9|1250|DURSEJ|9 +S9|1251|DURSEJ|9 +S9|1252|DURSEJ|9 +S9|1253|DURSEJ|9 +S9|1254|DURSEJ|9 +S9|1255|DURSEJ|9 +S9|1256|DURSEJ|9 +S9|1257|DURSEJ|9 +S9|1258|DURSEJ|9 +S9|1259|DURSEJ|9 +S9|1260|DURSEJ|9 +S9|1261|DURSEJ|9 +S9|1262|DURSEJ|9 +S9|1263|DURSEJ|9 +S9|1264|DURSEJ|9 +S9|1265|DURSEJ|9 +S9|1266|DURSEJ|9 +S9|1267|DURSEJ|9 +S9|1268|DURSEJ|9 +S9|1269|DURSEJ|9 +S9|1270|DURSEJ|9 +S9|1271|DURSEJ|9 +S9|1272|DURSEJ|9 +S9|1273|DURSEJ|9 +S9|1274|DURSEJ|9 +S9|1275|DURSEJ|9 +S9|1276|DURSEJ|9 +S9|1277|DURSEJ|9 +S9|1278|DURSEJ|9 +S9|1279|DURSEJ|9 +S9|1280|DURSEJ|9 +S9|1281|DURSEJ|9 +S9|1282|DURSEJ|9 +S9|1283|DURSEJ|9 +S9|1284|DURSEJ|9 +S9|1285|DURSEJ|9 +S9|1286|DURSEJ|9 +S9|1287|DURSEJ|9 +S9|1288|DURSEJ|9 +S9|1289|DURSEJ|9 +S9|1290|DURSEJ|9 +S9|1291|DURSEJ|9 +S9|1292|DURSEJ|9 +S9|1293|DURSEJ|9 +S9|1294|DURSEJ|9 +S9|1295|DURSEJ|9 +S9|1296|DURSEJ|9 +S9|1297|DURSEJ|9 +S9|1298|DURSEJ|9 +S9|1299|DURSEJ|9 +S9|1300|DURSEJ|9 +S9|1301|DURSEJ|9 +S9|1302|DURSEJ|9 +S9|1303|DURSEJ|9 +S9|1304|DURSEJ|9 +S9|1305|DURSEJ|9 +S9|1306|DURSEJ|9 +S9|1307|DURSEJ|9 +S9|1308|DURSEJ|9 +S9|1309|DURSEJ|9 +S9|1310|DURSEJ|9 +S9|1311|DURSEJ|9 +S9|1312|DURSEJ|9 +S9|1313|DURSEJ|9 +S9|1314|DURSEJ|9 +S9|1315|DURSEJ|9 +S9|1316|DURSEJ|9 +S9|1317|DURSEJ|9 +S9|1318|DURSEJ|9 +S9|1319|DURSEJ|9 +S9|1320|DURSEJ|9 +S9|1321|DURSEJ|9 +S9|1322|DURSEJ|9 +S9|1323|DURSEJ|9 +S9|1324|DURSEJ|9 +S9|1325|DURSEJ|9 +S9|1326|DURSEJ|9 +S9|1327|DURSEJ|9 +S9|1328|DURSEJ|9 +S9|1329|DURSEJ|9 +S9|1330|DURSEJ|9 +S9|1331|DURSEJ|9 +S9|1332|DURSEJ|9 +S9|1333|DURSEJ|9 +S9|1334|DURSEJ|9 +S9|1335|DURSEJ|9 +S9|1336|DURSEJ|9 +S9|1337|DURSEJ|9 +S9|1338|DURSEJ|9 +S9|1339|DURSEJ|9 +S9|1340|DURSEJ|9 +S9|1341|DURSEJ|9 +S9|1342|DURSEJ|9 +S9|1343|DURSEJ|9 +S9|1344|DURSEJ|9 +S9|1345|DURSEJ|9 +S9|1346|DURSEJ|9 +S9|1347|DURSEJ|9 +S9|1348|DURSEJ|9 +S9|1349|DURSEJ|9 +S9|1350|DURSEJ|9 +S9|1351|DURSEJ|9 +S9|1352|DURSEJ|9 +S9|1353|DURSEJ|9 +S9|1354|DURSEJ|9 +S9|1355|DURSEJ|9 +S9|1356|DURSEJ|9 +S9|1357|DURSEJ|9 +S9|1358|DURSEJ|9 +S9|1359|DURSEJ|9 +S9|1360|DURSEJ|9 +S9|1361|DURSEJ|9 +S9|1362|DURSEJ|9 +S9|1363|DURSEJ|9 +S9|1364|DURSEJ|9 +S9|1365|DURSEJ|9 +S9|1366|DURSEJ|9 +S9|1367|DURSEJ|9 +S9|1368|DURSEJ|9 +S9|1369|DURSEJ|9 +S9|1370|DURSEJ|9 +S9|1371|DURSEJ|9 +S9|1372|DURSEJ|9 +S9|1373|DURSEJ|9 +S9|1374|DURSEJ|9 +S9|1375|DURSEJ|9 +S9|1376|DURSEJ|9 +S9|1377|DURSEJ|9 +S9|1378|DURSEJ|9 +S9|1379|DURSEJ|9 +S9|1380|DURSEJ|9 +S9|1381|DURSEJ|9 +S9|1382|DURSEJ|9 +S9|1383|DURSEJ|9 +S9|1384|DURSEJ|9 +S9|1385|DURSEJ|9 +S9|1386|DURSEJ|9 +S9|1387|DURSEJ|9 +S9|1388|DURSEJ|9 +S9|1389|DURSEJ|9 +S9|1390|DURSEJ|9 +S9|1391|DURSEJ|9 +S9|1392|DURSEJ|9 +S9|1393|DURSEJ|9 +S9|1394|DURSEJ|9 +S9|1395|DURSEJ|9 +S9|1396|DURSEJ|9 +S9|1397|DURSEJ|9 +S9|1398|DURSEJ|9 +S9|1399|DURSEJ|9 +S9|1400|DURSEJ|9 +S9|1401|DURSEJ|9 +S9|1402|DURSEJ|9 +S9|1403|DURSEJ|9 +S9|1404|DURSEJ|9 +S9|1405|DURSEJ|9 +S9|1406|DURSEJ|9 +S9|1407|DURSEJ|9 +S9|1408|DURSEJ|9 +S9|1409|DURSEJ|9 +S9|1410|DURSEJ|9 +S9|1411|DURSEJ|9 +S9|1412|DURSEJ|9 +S9|1413|DURSEJ|9 +S9|1414|DURSEJ|9 +S9|1415|DURSEJ|9 +S9|1416|DURSEJ|9 +S9|1417|DURSEJ|9 +S9|1418|DURSEJ|9 +S9|1419|DURSEJ|9 +S9|1420|DURSEJ|9 +S9|1421|DURSEJ|9 +S9|1422|DURSEJ|9 +S9|1423|DURSEJ|9 +S9|1424|DURSEJ|9 +S9|1425|DURSEJ|9 +S9|1426|DURSEJ|9 +S9|1427|DURSEJ|9 +S9|1428|DURSEJ|9 +S9|1429|DURSEJ|9 +S9|1430|DURSEJ|9 +S9|1431|DURSEJ|9 +S9|1432|DURSEJ|9 +S9|1433|DURSEJ|9 +S9|1434|DURSEJ|9 +S9|1435|DURSEJ|9 +S9|1436|DURSEJ|9 +S9|1437|DURSEJ|9 +S9|1438|DURSEJ|9 +S9|1439|DURSEJ|9 +S9|1440|DURSEJ|9 +S9|1441|DURSEJ|9 +S9|1442|DURSEJ|9 +S9|1443|DURSEJ|9 +S9|1444|DURSEJ|9 +S9|1445|DURSEJ|9 +S9|1446|DURSEJ|9 +S9|1447|DURSEJ|9 +S9|1448|DURSEJ|9 +S9|1449|DURSEJ|9 +S9|1450|DURSEJ|9 +S9|1451|DURSEJ|9 +S9|1452|DURSEJ|9 +S9|1453|DURSEJ|9 +S9|1454|DURSEJ|9 +S9|1455|DURSEJ|9 +S9|1456|DURSEJ|9 +S9|1457|DURSEJ|9 +S9|1458|DURSEJ|9 +S9|1459|DURSEJ|9 +S9|1460|DURSEJ|9 +S9|1461|DURSEJ|9 +S9|1462|DURSEJ|9 +S9|1463|DURSEJ|9 +S9|1464|DURSEJ|9 +S9|1465|DURSEJ|9 +S9|1466|DURSEJ|9 +S9|1467|DURSEJ|9 +S9|1468|DURSEJ|9 +S9|1469|DURSEJ|9 +S9|1470|DURSEJ|9 +S9|1471|DURSEJ|9 +S9|1472|DURSEJ|9 +S9|1473|DURSEJ|9 +S9|1474|DURSEJ|9 +S9|1475|DURSEJ|9 +S9|1476|DURSEJ|9 +S9|1477|DURSEJ|9 +S9|1478|DURSEJ|9 +S9|1479|DURSEJ|9 +S9|1480|DURSEJ|9 +S9|1481|DURSEJ|9 +S9|1482|DURSEJ|9 +S9|1483|DURSEJ|9 +S9|1484|DURSEJ|9 +S9|1485|DURSEJ|9 +S9|1486|DURSEJ|9 +S9|1487|DURSEJ|9 +S9|1488|DURSEJ|9 +S9|1489|DURSEJ|9 +S9|1490|DURSEJ|9 +S9|1491|DURSEJ|9 +S9|1492|DURSEJ|9 +S9|1493|DURSEJ|9 +S9|1494|DURSEJ|9 +S9|1495|DURSEJ|9 +S9|1496|DURSEJ|9 +S9|1497|DURSEJ|9 +S9|1498|DURSEJ|9 +S9|1499|DURSEJ|9 +S9|1500|DURSEJ|9 +S9|1501|DURSEJ|9 +S9|1502|DURSEJ|9 +S9|1503|DURSEJ|9 +S9|1504|DURSEJ|9 +S9|1505|DURSEJ|9 +S9|1506|DURSEJ|9 +S9|1507|DURSEJ|9 +S9|1508|DURSEJ|9 +S9|1509|DURSEJ|9 +S9|1510|DURSEJ|9 +S9|1511|DURSEJ|9 +S9|1512|DURSEJ|9 +S9|1513|DURSEJ|9 +S9|1514|DURSEJ|9 +S9|1515|DURSEJ|9 +S9|1516|DURSEJ|9 +S9|1517|DURSEJ|9 +S9|1518|DURSEJ|9 +S9|1519|DURSEJ|9 +S9|1520|DURSEJ|9 +S9|1521|DURSEJ|9 +S9|1522|DURSEJ|9 +S9|1523|DURSEJ|9 +S9|1524|DURSEJ|9 +S9|1525|DURSEJ|9 +S9|1526|DURSEJ|9 +S9|1527|DURSEJ|9 +S9|1528|DURSEJ|9 +S9|1529|DURSEJ|9 +S9|1530|DURSEJ|9 +S9|1531|DURSEJ|9 +S9|1532|DURSEJ|9 +S9|1533|DURSEJ|9 +S9|1534|DURSEJ|9 +S9|1535|DURSEJ|9 +S9|1536|DURSEJ|9 +S9|1537|DURSEJ|9 +S9|1538|DURSEJ|9 +S9|1539|DURSEJ|9 +S9|1540|DURSEJ|9 +S9|1541|DURSEJ|9 +S9|1542|DURSEJ|9 +S9|1543|DURSEJ|9 +S9|1544|DURSEJ|9 +S9|1545|DURSEJ|9 +S9|1546|DURSEJ|9 +S9|1547|DURSEJ|9 +S9|1548|DURSEJ|9 +S9|1549|DURSEJ|9 +S9|1550|DURSEJ|9 +S9|1551|DURSEJ|9 +S9|1552|DURSEJ|9 +S9|1553|DURSEJ|9 +S9|1554|DURSEJ|9 +S9|1555|DURSEJ|9 +S9|1556|DURSEJ|9 +S9|1557|DURSEJ|9 +S9|1558|DURSEJ|9 +S9|1559|DURSEJ|9 +S9|1560|DURSEJ|9 +S9|1561|DURSEJ|9 +S9|1562|DURSEJ|9 +S9|1563|DURSEJ|9 +S9|1564|DURSEJ|9 +S9|1565|DURSEJ|9 +S9|1566|DURSEJ|9 +S9|1567|DURSEJ|9 +S9|1568|DURSEJ|9 +S9|1569|DURSEJ|9 +S9|1570|DURSEJ|9 +S9|1571|DURSEJ|9 +S9|1572|DURSEJ|9 +S9|1573|DURSEJ|9 +S9|1574|DURSEJ|9 +S9|1575|DURSEJ|9 +S9|1576|DURSEJ|9 +S9|1577|DURSEJ|9 +S9|1578|DURSEJ|9 +S9|1579|DURSEJ|9 +S9|1580|DURSEJ|9 +S9|1581|DURSEJ|9 +S9|1582|DURSEJ|9 +S9|1583|DURSEJ|9 +S9|1584|DURSEJ|9 +S9|1585|DURSEJ|9 +S9|1586|DURSEJ|9 +S9|1587|DURSEJ|9 +S9|1588|DURSEJ|9 +S9|1589|DURSEJ|9 +S9|1590|DURSEJ|9 +S9|1591|DURSEJ|9 +S9|1592|DURSEJ|9 +S9|1593|DURSEJ|9 +S9|1594|DURSEJ|9 +S9|1595|DURSEJ|9 +S9|1596|DURSEJ|9 +S9|1597|DURSEJ|9 +S9|1598|DURSEJ|9 +S9|1599|DURSEJ|9 +S9|1600|DURSEJ|9 +S9|1601|DURSEJ|9 +S9|1602|DURSEJ|9 +S9|1603|DURSEJ|9 +S9|1604|DURSEJ|9 +S9|1605|DURSEJ|9 +S9|1606|DURSEJ|9 +S9|1607|DURSEJ|9 +S9|1608|DURSEJ|9 +S9|1609|DURSEJ|9 +S9|1610|DURSEJ|9 +S9|1611|DURSEJ|9 +S9|1612|DURSEJ|9 +S9|1613|DURSEJ|9 +S9|1614|DURSEJ|9 +S9|1615|DURSEJ|9 +S9|1616|DURSEJ|9 +S9|1617|DURSEJ|9 +S9|1618|DURSEJ|9 +S9|1619|DURSEJ|9 +S9|1620|DURSEJ|9 +S9|1621|DURSEJ|9 +S9|1622|DURSEJ|9 +S9|1623|DURSEJ|9 +S9|1624|DURSEJ|9 +S9|1625|DURSEJ|9 +S9|1626|DURSEJ|9 +S9|1627|DURSEJ|9 +S9|1628|DURSEJ|9 +S9|1629|DURSEJ|9 +S9|1630|DURSEJ|9 +S9|1631|DURSEJ|9 +S9|1632|DURSEJ|9 +S9|1633|DURSEJ|9 +S9|1634|DURSEJ|9 +S9|1635|DURSEJ|9 +S9|1636|DURSEJ|9 +S9|1637|DURSEJ|9 +S9|1638|DURSEJ|9 +S9|1639|DURSEJ|9 +S9|1640|DURSEJ|9 +S9|1641|DURSEJ|9 +S9|1642|DURSEJ|9 +S9|1643|DURSEJ|9 +S9|1644|DURSEJ|9 +S9|1645|DURSEJ|9 +S9|1646|DURSEJ|9 +S9|1647|DURSEJ|9 +S9|1648|DURSEJ|9 +S9|1649|DURSEJ|9 +S9|1650|DURSEJ|9 +S9|1651|DURSEJ|9 +S9|1652|DURSEJ|9 +S9|1653|DURSEJ|9 +S9|1654|DURSEJ|9 +S9|1655|DURSEJ|9 +S9|1656|DURSEJ|9 +S9|1657|DURSEJ|9 +S9|1658|DURSEJ|9 +S9|1659|DURSEJ|9 +S9|1660|DURSEJ|9 +S9|1661|DURSEJ|9 +S9|1662|DURSEJ|9 +S9|1663|DURSEJ|9 +S9|1664|DURSEJ|9 +S9|1665|DURSEJ|9 +S9|1666|DURSEJ|9 +S9|1667|DURSEJ|9 +S9|1668|DURSEJ|9 +S9|1669|DURSEJ|9 +S9|1670|DURSEJ|9 +S9|1671|DURSEJ|9 +S9|1672|DURSEJ|9 +S9|1673|DURSEJ|9 +S9|1674|DURSEJ|9 +S9|1675|DURSEJ|9 +S9|1676|DURSEJ|9 +S9|1677|DURSEJ|9 +S9|1678|DURSEJ|9 +S9|1679|DURSEJ|9 +S9|1680|DURSEJ|9 +S9|1681|DURSEJ|9 +S9|1682|DURSEJ|9 +S9|1683|DURSEJ|9 +S9|1684|DURSEJ|9 +S9|1685|DURSEJ|9 +S9|1686|DURSEJ|9 +S9|1687|DURSEJ|9 +S9|1688|DURSEJ|9 +S9|1689|DURSEJ|9 +S9|1690|DURSEJ|9 +S9|1691|DURSEJ|9 +S9|1692|DURSEJ|9 +S9|1693|DURSEJ|9 +S9|1694|DURSEJ|9 +S9|1695|DURSEJ|9 +S9|1696|DURSEJ|9 +S9|1697|DURSEJ|9 +S9|1698|DURSEJ|9 +S9|1699|DURSEJ|9 +S9|1700|DURSEJ|9 +S9|1701|DURSEJ|9 +S9|1702|DURSEJ|9 +S9|1703|DURSEJ|9 +S9|1704|DURSEJ|9 +S9|1705|DURSEJ|9 +S9|1706|DURSEJ|9 +S9|1707|DURSEJ|9 +S9|1708|DURSEJ|9 +S9|1709|DURSEJ|9 +S9|1710|DURSEJ|9 +S9|1711|DURSEJ|9 +S9|1712|DURSEJ|9 +S9|1713|DURSEJ|9 +S9|1714|DURSEJ|9 +S9|1715|DURSEJ|9 +S9|1716|DURSEJ|9 +S9|1717|DURSEJ|9 +S9|1718|DURSEJ|9 +S9|1719|DURSEJ|9 +S9|1720|DURSEJ|9 +S9|1721|DURSEJ|9 +S9|1722|DURSEJ|9 +S9|1723|DURSEJ|9 +S9|1724|DURSEJ|9 +S9|1725|DURSEJ|9 +S9|1726|DURSEJ|9 +S9|1727|DURSEJ|9 +S9|1728|DURSEJ|9 +S9|1729|DURSEJ|9 +S9|1730|DURSEJ|9 +S9|1731|DURSEJ|9 +S9|1732|DURSEJ|9 +S9|1733|DURSEJ|9 +S9|1734|DURSEJ|9 +S9|1735|DURSEJ|9 +S9|1736|DURSEJ|9 +S9|1737|DURSEJ|9 +S9|1738|DURSEJ|9 +S9|1739|DURSEJ|9 +S9|1740|DURSEJ|9 +S9|1741|DURSEJ|9 +S9|1742|DURSEJ|9 +S9|1743|DURSEJ|9 +S9|1744|DURSEJ|9 +S9|1745|DURSEJ|9 +S9|1746|DURSEJ|9 +S9|1747|DURSEJ|9 +S9|1748|DURSEJ|9 +S9|1749|DURSEJ|9 +S9|1750|DURSEJ|9 +S9|1751|DURSEJ|9 +S9|1752|DURSEJ|9 +S9|1753|DURSEJ|9 +S9|1754|DURSEJ|9 +S9|1755|DURSEJ|9 +S9|1756|DURSEJ|9 +S9|1757|DURSEJ|9 +S9|1758|DURSEJ|9 +S9|1759|DURSEJ|9 +S9|1760|DURSEJ|9 +S9|1761|DURSEJ|9 +S9|1762|DURSEJ|9 +S9|1763|DURSEJ|9 +S9|1764|DURSEJ|9 +S9|1765|DURSEJ|9 +S9|1766|DURSEJ|9 +S9|1767|DURSEJ|9 +S9|1768|DURSEJ|9 +S9|1769|DURSEJ|9 +S9|1770|DURSEJ|9 +S9|1771|DURSEJ|9 +S9|1772|DURSEJ|9 +S9|1773|DURSEJ|9 +S9|1774|DURSEJ|9 +S9|1775|DURSEJ|9 +S9|1776|DURSEJ|9 +S9|1777|DURSEJ|9 +S9|1778|DURSEJ|9 +S9|1779|DURSEJ|9 +S9|1780|DURSEJ|9 +S9|1781|DURSEJ|9 +S9|1782|DURSEJ|9 +S9|1783|DURSEJ|9 +S9|1784|DURSEJ|9 +S9|1785|DURSEJ|9 +S9|1786|DURSEJ|9 +S9|1787|DURSEJ|9 +S9|1788|DURSEJ|9 +S9|1789|DURSEJ|9 +S9|1790|DURSEJ|9 +S9|1791|DURSEJ|9 +S9|1792|DURSEJ|9 +S9|1793|DURSEJ|9 +S9|1794|DURSEJ|9 +S9|1795|DURSEJ|9 +S9|1796|DURSEJ|9 +S9|1797|DURSEJ|9 +S9|1798|DURSEJ|9 +S9|1799|DURSEJ|9 +S9|1800|DURSEJ|9 +S9|1801|DURSEJ|9 +S9|1802|DURSEJ|9 +S9|1803|DURSEJ|9 +S9|1804|DURSEJ|9 +S9|1805|DURSEJ|9 +S9|1806|DURSEJ|9 +S9|1807|DURSEJ|9 +S9|1808|DURSEJ|9 +S9|1809|DURSEJ|9 +S9|1810|DURSEJ|9 +S9|1811|DURSEJ|9 +S9|1812|DURSEJ|9 +S9|1813|DURSEJ|9 +S9|1814|DURSEJ|9 +S9|1815|DURSEJ|9 +S9|1816|DURSEJ|9 +S9|1817|DURSEJ|9 +S9|1818|DURSEJ|9 +S9|1819|DURSEJ|9 +S9|1820|DURSEJ|9 +S9|1821|DURSEJ|9 +S9|1822|DURSEJ|9 +S9|1823|DURSEJ|9 +S9|1824|DURSEJ|9 +S9|1825|DURSEJ|9 +S9|1826|DURSEJ|9 +S9|1827|DURSEJ|9 +S9|1828|DURSEJ|9 +S9|1829|DURSEJ|9 +S9|1830|DURSEJ|9 +S9|1831|DURSEJ|9 +S9|1832|DURSEJ|9 +S9|1833|DURSEJ|9 +S9|1834|DURSEJ|9 +S9|1835|DURSEJ|9 +S9|1836|DURSEJ|9 +S9|1837|DURSEJ|9 +S9|1838|DURSEJ|9 +S9|1839|DURSEJ|9 +S9|1840|DURSEJ|9 +S9|1841|DURSEJ|9 +S9|1842|DURSEJ|9 +S9|1843|DURSEJ|9 +S9|1844|DURSEJ|9 +S9|1845|DURSEJ|9 +S9|1846|DURSEJ|9 +S9|1847|DURSEJ|9 +S9|1848|DURSEJ|9 +S9|1849|DURSEJ|9 +S9|1850|DURSEJ|9 +S9|1851|DURSEJ|9 +S9|1852|DURSEJ|9 +S9|1853|DURSEJ|9 +S9|1854|DURSEJ|9 +S9|1855|DURSEJ|9 +S9|1856|DURSEJ|9 +S9|1857|DURSEJ|9 +S9|1858|DURSEJ|9 +S9|1859|DURSEJ|9 +S9|1860|DURSEJ|9 +S9|1861|DURSEJ|9 +S9|1862|DURSEJ|9 +S9|1863|DURSEJ|9 +S9|1864|DURSEJ|9 +S9|1865|DURSEJ|9 +S9|1866|DURSEJ|9 +S9|1867|DURSEJ|9 +S9|1868|DURSEJ|9 +S9|1869|DURSEJ|9 +S9|1870|DURSEJ|9 +S9|1871|DURSEJ|9 +S9|1872|DURSEJ|9 +S9|1873|DURSEJ|9 +S9|1874|DURSEJ|9 +S9|1875|DURSEJ|9 +S9|1876|DURSEJ|9 +S9|1877|DURSEJ|9 +S9|1878|DURSEJ|9 +S9|1879|DURSEJ|9 +S9|1880|DURSEJ|9 +S9|1881|DURSEJ|9 +S9|1882|DURSEJ|9 +S9|1883|DURSEJ|9 +S9|1884|DURSEJ|9 +S9|1885|DURSEJ|9 +S9|1886|DURSEJ|9 +S9|1887|DURSEJ|9 +S9|1888|DURSEJ|9 +S9|1889|DURSEJ|9 +S9|1890|DURSEJ|9 +S9|1891|DURSEJ|9 +S9|1892|DURSEJ|9 +S9|1893|DURSEJ|9 +S9|1894|DURSEJ|9 +S9|1895|DURSEJ|9 +S9|1896|DURSEJ|9 +S9|1897|DURSEJ|9 +S9|1898|DURSEJ|9 +S9|1899|DURSEJ|9 +S9|1900|DURSEJ|9 +S9|1901|DURSEJ|9 +S9|1902|DURSEJ|9 +S9|1903|DURSEJ|9 +S9|1904|DURSEJ|9 +S9|1905|DURSEJ|9 +S9|1906|DURSEJ|9 +S9|1907|DURSEJ|9 +S9|1908|DURSEJ|9 +S9|1909|DURSEJ|9 +S9|1910|DURSEJ|9 +S9|1911|DURSEJ|9 +S9|1912|DURSEJ|9 +S9|1913|DURSEJ|9 +S9|1914|DURSEJ|9 +S9|1915|DURSEJ|9 +S9|1916|DURSEJ|9 +S9|1917|DURSEJ|9 +S9|1918|DURSEJ|9 +S9|1919|DURSEJ|9 +S9|1920|DURSEJ|9 +S9|1921|DURSEJ|9 +S9|1922|DURSEJ|9 +S9|1923|DURSEJ|9 +S9|1924|DURSEJ|9 +S9|1925|DURSEJ|9 +S9|1926|DURSEJ|9 +S9|1927|DURSEJ|9 +S9|1928|DURSEJ|9 +S9|1929|DURSEJ|9 +S9|1930|DURSEJ|9 +S9|1931|DURSEJ|9 +S9|1932|DURSEJ|9 +S9|1933|DURSEJ|9 +S9|1934|DURSEJ|9 +S9|1935|DURSEJ|9 +S9|1936|DURSEJ|9 +S9|1937|DURSEJ|9 +S9|1938|DURSEJ|9 +S9|1939|DURSEJ|9 +S9|1940|DURSEJ|9 +S9|1941|DURSEJ|9 +S9|1942|DURSEJ|9 +S9|1943|DURSEJ|9 +S9|1944|DURSEJ|9 +S9|1945|DURSEJ|9 +S9|1946|DURSEJ|9 +S9|1947|DURSEJ|9 +S9|1948|DURSEJ|9 +S9|1949|DURSEJ|9 +S9|1950|DURSEJ|9 +S9|1951|DURSEJ|9 +S9|1952|DURSEJ|9 +S9|1953|DURSEJ|9 +S9|1954|DURSEJ|9 +S9|1955|DURSEJ|9 +S9|1956|DURSEJ|9 +S9|1957|DURSEJ|9 +S9|1958|DURSEJ|9 +S9|1959|DURSEJ|9 +S9|1960|DURSEJ|9 +S9|1961|DURSEJ|9 +S9|1962|DURSEJ|9 +S9|1963|DURSEJ|9 +S9|1964|DURSEJ|9 +S9|1965|DURSEJ|9 +S9|1966|DURSEJ|9 +S9|1967|DURSEJ|9 +S9|1968|DURSEJ|9 +S9|1969|DURSEJ|9 +S9|1970|DURSEJ|9 +S9|1971|DURSEJ|9 +S9|1972|DURSEJ|9 +S9|1973|DURSEJ|9 +S9|1974|DURSEJ|9 +S9|1975|DURSEJ|9 +S9|1976|DURSEJ|9 +S9|1977|DURSEJ|9 +S9|1978|DURSEJ|9 +S9|1979|DURSEJ|9 +S9|1980|DURSEJ|9 +S9|1981|DURSEJ|9 +S9|1982|DURSEJ|9 +S9|1983|DURSEJ|9 +S9|1984|DURSEJ|9 +S9|1985|DURSEJ|9 +S9|1986|DURSEJ|9 +S9|1987|DURSEJ|9 +S9|1988|DURSEJ|9 +S9|1989|DURSEJ|9 +S9|1990|DURSEJ|9 +S9|1991|DURSEJ|9 +S9|1992|DURSEJ|9 +S9|1993|DURSEJ|9 +S9|1994|DURSEJ|9 +S9|1995|DURSEJ|9 +S9|1996|DURSEJ|9 +S9|1997|DURSEJ|9 +S9|1998|DURSEJ|9 +S9|1999|DURSEJ|9 +S9|2000|DURSEJ|9 +S9|2001|DURSEJ|9 +S9|2002|DURSEJ|9 +S9|2003|DURSEJ|9 +S9|2004|DURSEJ|9 +S9|2005|DURSEJ|9 +S9|2006|DURSEJ|9 +S9|2007|DURSEJ|9 +S9|2008|DURSEJ|9 +S9|2009|DURSEJ|9 +S9|2010|DURSEJ|9 +S9|2011|DURSEJ|9 +S9|2012|DURSEJ|9 +S9|2013|DURSEJ|9 +S9|2014|DURSEJ|9 +S9|2015|DURSEJ|9 +S9|2016|DURSEJ|9 +S9|2017|DURSEJ|9 +S9|2018|DURSEJ|9 +S9|2019|DURSEJ|9 +S9|2020|DURSEJ|9 +S9|2021|DURSEJ|9 +S9|2022|DURSEJ|9 +S9|2023|DURSEJ|9 +S9|2024|DURSEJ|9 +S9|2025|DURSEJ|9 +S9|2026|DURSEJ|9 +S9|2027|DURSEJ|9 +S9|2028|DURSEJ|9 +S9|2029|DURSEJ|9 +S9|2030|DURSEJ|9 +S9|2031|DURSEJ|9 +S9|2032|DURSEJ|9 +S9|2033|DURSEJ|9 +S9|2034|DURSEJ|9 +S9|2035|DURSEJ|9 +S9|2036|DURSEJ|9 +S9|2037|DURSEJ|9 +S9|2038|DURSEJ|9 +S9|2039|DURSEJ|9 +S9|2040|DURSEJ|9 +S9|2041|DURSEJ|9 +S9|2042|DURSEJ|9 +S9|2043|DURSEJ|9 +S9|2044|DURSEJ|9 +S9|2045|DURSEJ|9 +S9|2046|DURSEJ|9 +S9|2047|DURSEJ|9 +S9|2048|DURSEJ|9 +S9|2049|DURSEJ|9 +S9|2050|DURSEJ|9 +S9|2051|DURSEJ|9 +S9|2052|DURSEJ|9 +S9|2053|DURSEJ|9 +S9|2054|DURSEJ|9 +S9|2055|DURSEJ|9 +S9|2056|DURSEJ|9 +S9|2057|DURSEJ|9 +S9|2058|DURSEJ|9 +S9|2059|DURSEJ|9 +S9|2060|DURSEJ|9 +S9|2061|DURSEJ|9 +S9|2062|DURSEJ|9 +S9|2063|DURSEJ|9 +S9|2064|DURSEJ|9 +S9|2065|DURSEJ|9 +S9|2066|DURSEJ|9 +S9|2067|DURSEJ|9 +S9|2068|DURSEJ|9 +S9|2069|DURSEJ|9 +S9|2070|DURSEJ|9 +S9|2071|DURSEJ|9 +S9|2072|DURSEJ|9 +S9|2073|DURSEJ|9 +S9|2074|DURSEJ|9 +S9|2075|DURSEJ|9 +S9|2076|DURSEJ|9 +S9|2077|DURSEJ|9 +S9|2078|DURSEJ|9 +S9|2079|DURSEJ|9 +S9|2080|DURSEJ|9 +S9|2081|DURSEJ|9 +S9|2082|DURSEJ|9 +S9|2083|DURSEJ|9 +S9|2084|DURSEJ|9 +S9|2085|DURSEJ|9 +S9|2086|DURSEJ|9 +S9|2087|DURSEJ|9 +S9|2088|DURSEJ|9 +S9|2089|DURSEJ|9 +S9|2090|DURSEJ|9 +S9|2091|DURSEJ|9 +S9|2092|DURSEJ|9 +S9|2093|DURSEJ|9 +S9|2094|DURSEJ|9 +S9|2095|DURSEJ|9 +S9|2096|DURSEJ|9 +S9|2097|DURSEJ|9 +S9|2098|DURSEJ|9 +S9|2099|DURSEJ|9 +S9|2100|DURSEJ|9 +S9|2101|DURSEJ|9 +S9|2102|DURSEJ|9 +S9|2103|DURSEJ|9 +S9|2104|DURSEJ|9 +S9|2105|DURSEJ|9 +S9|2106|DURSEJ|9 +S9|2107|DURSEJ|9 +S9|2108|DURSEJ|9 +S9|2109|DURSEJ|9 +S9|2110|DURSEJ|9 +S9|2111|DURSEJ|9 +S9|2112|DURSEJ|9 +S9|2113|DURSEJ|9 +S9|2114|DURSEJ|9 +S9|2115|DURSEJ|9 +S9|2116|DURSEJ|9 +S9|2117|DURSEJ|9 +S9|2118|DURSEJ|9 +S9|2119|DURSEJ|9 +S9|2120|DURSEJ|9 +S9|2121|DURSEJ|9 +S9|2122|DURSEJ|9 +S9|2123|DURSEJ|9 +S9|2124|DURSEJ|9 +S9|2125|DURSEJ|9 +S9|2126|DURSEJ|9 +S9|2127|DURSEJ|9 +S9|2128|DURSEJ|9 +S9|2129|DURSEJ|9 +S9|2130|DURSEJ|9 +S9|2131|DURSEJ|9 +S9|2132|DURSEJ|9 +S9|2133|DURSEJ|9 +S9|2134|DURSEJ|9 +S9|2135|DURSEJ|9 +S9|2136|DURSEJ|9 +S9|2137|DURSEJ|9 +S9|2138|DURSEJ|9 +S9|2139|DURSEJ|9 +S9|2140|DURSEJ|9 +S9|2141|DURSEJ|9 +S9|2142|DURSEJ|9 +S9|2143|DURSEJ|9 +S9|2144|DURSEJ|9 +S9|2145|DURSEJ|9 +S9|2146|DURSEJ|9 +S9|2147|DURSEJ|9 +S9|2148|DURSEJ|9 +S9|2149|DURSEJ|9 +S9|2150|DURSEJ|9 +S9|2151|DURSEJ|9 +S9|2152|DURSEJ|9 +S9|2153|DURSEJ|9 +S9|2154|DURSEJ|9 +S9|2155|DURSEJ|9 +S9|2156|DURSEJ|9 +S9|2157|DURSEJ|9 +S9|2158|DURSEJ|9 +S9|2159|DURSEJ|9 +S9|2160|DURSEJ|9 +S9|2161|DURSEJ|9 +S9|2162|DURSEJ|9 +S9|2163|DURSEJ|9 +S9|2164|DURSEJ|9 +S9|2165|DURSEJ|9 +S9|2166|DURSEJ|9 +S9|2167|DURSEJ|9 +S9|2168|DURSEJ|9 +S9|2169|DURSEJ|9 +S9|2170|DURSEJ|9 +S9|2171|DURSEJ|9 +S9|2172|DURSEJ|9 +S9|2173|DURSEJ|9 +S9|2174|DURSEJ|9 +S9|2175|DURSEJ|9 +S9|2176|DURSEJ|9 +S9|2177|DURSEJ|9 +S9|2178|DURSEJ|9 +S9|2179|DURSEJ|9 +S9|2180|DURSEJ|9 +S9|2181|DURSEJ|9 +S9|2182|DURSEJ|9 +S9|2183|DURSEJ|9 +S9|2184|DURSEJ|9 +S9|2185|DURSEJ|9 +S9|2186|DURSEJ|9 +S9|2187|DURSEJ|9 +S9|2188|DURSEJ|9 +S9|2189|DURSEJ|9 +S9|2190|DURSEJ|9 +S9|2191|DURSEJ|9 +S9|2192|DURSEJ|9 +S9|2193|DURSEJ|9 +S9|2194|DURSEJ|9 +S9|2195|DURSEJ|9 +S9|2196|DURSEJ|9 +S9|2197|DURSEJ|9 +S9|2198|DURSEJ|9 +S9|2199|DURSEJ|9 +S9|2200|DURSEJ|9 +S9|2201|DURSEJ|9 +S9|2202|DURSEJ|9 +S9|2203|DURSEJ|9 +S9|2204|DURSEJ|9 +S9|2205|DURSEJ|9 +S9|2206|DURSEJ|9 +S9|2207|DURSEJ|9 +S9|2208|DURSEJ|9 +S9|2209|DURSEJ|9 +S9|2210|DURSEJ|9 +S9|2211|DURSEJ|9 +S9|2212|DURSEJ|9 +S9|2213|DURSEJ|9 +S9|2214|DURSEJ|9 +S9|2215|DURSEJ|9 +S9|2216|DURSEJ|9 +S9|2217|DURSEJ|9 +S9|2218|DURSEJ|9 +S9|2219|DURSEJ|9 +S9|2220|DURSEJ|9 +S9|2221|DURSEJ|9 +S9|2222|DURSEJ|9 +S9|2223|DURSEJ|9 +S9|2224|DURSEJ|9 +S9|2225|DURSEJ|9 +S9|2226|DURSEJ|9 +S9|2227|DURSEJ|9 +S9|2228|DURSEJ|9 +S9|2229|DURSEJ|9 +S9|2230|DURSEJ|9 +S9|2231|DURSEJ|9 +S9|2232|DURSEJ|9 +S9|2233|DURSEJ|9 +S9|2234|DURSEJ|9 +S9|2235|DURSEJ|9 +S9|2236|DURSEJ|9 +S9|2237|DURSEJ|9 +S9|2238|DURSEJ|9 +S9|2239|DURSEJ|9 +S9|2240|DURSEJ|9 +S9|2241|DURSEJ|9 +S9|2242|DURSEJ|9 +S9|2243|DURSEJ|9 +S9|2244|DURSEJ|9 +S9|2245|DURSEJ|9 +S9|2246|DURSEJ|9 +S9|2247|DURSEJ|9 +S9|2248|DURSEJ|9 +S9|2249|DURSEJ|9 +S9|2250|DURSEJ|9 +S9|2251|DURSEJ|9 +S9|2252|DURSEJ|9 +S9|2253|DURSEJ|9 +S9|2254|DURSEJ|9 +S9|2255|DURSEJ|9 +S9|2256|DURSEJ|9 +S9|2257|DURSEJ|9 +S9|2258|DURSEJ|9 +S9|2259|DURSEJ|9 +S9|2260|DURSEJ|9 +S9|2261|DURSEJ|9 +S9|2262|DURSEJ|9 +S9|2263|DURSEJ|9 +S9|2264|DURSEJ|9 +S9|2265|DURSEJ|9 +S9|2266|DURSEJ|9 +S9|2267|DURSEJ|9 +S9|2268|DURSEJ|9 +S9|2269|DURSEJ|9 +S9|2270|DURSEJ|9 +S9|2271|DURSEJ|9 +S9|2272|DURSEJ|9 +S9|2273|DURSEJ|9 +S9|2274|DURSEJ|9 +S9|2275|DURSEJ|9 +S9|2276|DURSEJ|9 +S9|2277|DURSEJ|9 +S9|2278|DURSEJ|9 +S9|2279|DURSEJ|9 +S9|2280|DURSEJ|9 +S9|2281|DURSEJ|9 +S9|2282|DURSEJ|9 +S9|2283|DURSEJ|9 +S9|2284|DURSEJ|9 +S9|2285|DURSEJ|9 +S9|2286|DURSEJ|9 +S9|2287|DURSEJ|9 +S9|2288|DURSEJ|9 +S9|2289|DURSEJ|9 +S9|2290|DURSEJ|9 +S9|2291|DURSEJ|9 +S9|2292|DURSEJ|9 +S9|2293|DURSEJ|9 +S9|2294|DURSEJ|9 +S9|2295|DURSEJ|9 +S9|2296|DURSEJ|9 +S9|2297|DURSEJ|9 +S9|2298|DURSEJ|9 +S9|2299|DURSEJ|9 +S9|2300|DURSEJ|9 +S9|2301|DURSEJ|9 +S9|2302|DURSEJ|9 +S9|2303|DURSEJ|9 +S9|2304|DURSEJ|9 +S9|2305|DURSEJ|9 +S9|2306|DURSEJ|9 +S9|2307|DURSEJ|9 +S9|2308|DURSEJ|9 +S9|2309|DURSEJ|9 +S9|2310|DURSEJ|9 +S9|2311|DURSEJ|9 +S9|2312|DURSEJ|9 +S9|2313|DURSEJ|9 +S9|2314|DURSEJ|9 +S9|2315|DURSEJ|9 +S9|2316|DURSEJ|9 +S9|2317|DURSEJ|9 +S9|2318|DURSEJ|9 +S9|2319|DURSEJ|9 +S9|2320|DURSEJ|9 +S9|2321|DURSEJ|9 +S9|2322|DURSEJ|9 +S9|2323|DURSEJ|9 +S9|2324|DURSEJ|9 +S9|2325|DURSEJ|9 +S9|2326|DURSEJ|9 +S9|2327|DURSEJ|9 +S9|2328|DURSEJ|9 +S9|2329|DURSEJ|9 +S9|2330|DURSEJ|9 +S9|2331|DURSEJ|9 +S9|2332|DURSEJ|9 +S9|2333|DURSEJ|9 +S9|2334|DURSEJ|9 +S9|2335|DURSEJ|9 +S9|2336|DURSEJ|9 +S9|2337|DURSEJ|9 +S9|2338|DURSEJ|9 +S9|2339|DURSEJ|9 +S9|2340|DURSEJ|9 +S9|2341|DURSEJ|9 +S9|2342|DURSEJ|9 +S9|2343|DURSEJ|9 +S9|2344|DURSEJ|9 +S9|2345|DURSEJ|9 +S9|2346|DURSEJ|9 +S9|2347|DURSEJ|9 +S9|2348|DURSEJ|9 +S9|2349|DURSEJ|9 +S9|2350|DURSEJ|9 +S9|2351|DURSEJ|9 +S9|2352|DURSEJ|9 +S9|2353|DURSEJ|9 +S9|2354|DURSEJ|9 +S9|2355|DURSEJ|9 +S9|2356|DURSEJ|9 +S9|2357|DURSEJ|9 +S9|2358|DURSEJ|9 +S9|2359|DURSEJ|9 +S9|2360|DURSEJ|9 +S9|2361|DURSEJ|9 +S9|2362|DURSEJ|9 +S9|2363|DURSEJ|9 +S9|2364|DURSEJ|9 +S9|2365|DURSEJ|9 +S9|2366|DURSEJ|9 +S9|2367|DURSEJ|9 +S9|2368|DURSEJ|9 +S9|2369|DURSEJ|9 +S9|2370|DURSEJ|9 +S9|2371|DURSEJ|9 +S9|2372|DURSEJ|9 +S9|2373|DURSEJ|9 +S9|2374|DURSEJ|9 +S9|2375|DURSEJ|9 +S9|2376|DURSEJ|9 +S9|2377|DURSEJ|9 +S9|2378|DURSEJ|9 +S9|2379|DURSEJ|9 +S9|2380|DURSEJ|9 +S9|2381|DURSEJ|9 +S9|2382|DURSEJ|9 +S9|2383|DURSEJ|9 +S9|2384|DURSEJ|9 +S9|2385|DURSEJ|9 +S9|2386|DURSEJ|9 +S9|2387|DURSEJ|9 +S9|2388|DURSEJ|9 +S9|2389|DURSEJ|9 +S9|2390|DURSEJ|9 +S9|2391|DURSEJ|9 +S9|2392|DURSEJ|9 +S9|2393|DURSEJ|9 +S9|2394|DURSEJ|9 +S9|2395|DURSEJ|9 +S9|2396|DURSEJ|9 +S9|2397|DURSEJ|9 +S9|2398|DURSEJ|9 +S9|2399|DURSEJ|9 +S9|2400|DURSEJ|9 +S9|2401|DURSEJ|9 +S9|2402|DURSEJ|9 +S9|2403|DURSEJ|9 +S9|2404|DURSEJ|9 +S9|2405|DURSEJ|9 +S9|2406|DURSEJ|9 +S9|2407|DURSEJ|9 +S9|2408|DURSEJ|9 +S9|2409|DURSEJ|9 +S9|2410|DURSEJ|9 +S9|2411|DURSEJ|9 +S9|2412|DURSEJ|9 +S9|2413|DURSEJ|9 +S9|2414|DURSEJ|9 +S9|2415|DURSEJ|9 +S9|2416|DURSEJ|9 +S9|2417|DURSEJ|9 +S9|2418|DURSEJ|9 +S9|2419|DURSEJ|9 +S9|2420|DURSEJ|9 +S9|2421|DURSEJ|9 +S9|2422|DURSEJ|9 +S9|2423|DURSEJ|9 +S9|2424|DURSEJ|9 +S9|2425|DURSEJ|9 +S9|2426|DURSEJ|9 +S9|2427|DURSEJ|9 +S9|2428|DURSEJ|9 +S9|2429|DURSEJ|9 +S9|2430|DURSEJ|9 +S9|2431|DURSEJ|9 +S9|2432|DURSEJ|9 +S9|2433|DURSEJ|9 +S9|2434|DURSEJ|9 +S9|2435|DURSEJ|9 +S9|2436|DURSEJ|9 +S9|2437|DURSEJ|9 +S9|2438|DURSEJ|9 +S9|2439|DURSEJ|9 +S9|2440|DURSEJ|9 +S9|2441|DURSEJ|9 +S9|2442|DURSEJ|9 +S9|2443|DURSEJ|9 +S9|2444|DURSEJ|9 +S9|2445|DURSEJ|9 +S9|2446|DURSEJ|9 +S9|2447|DURSEJ|9 +S9|2448|DURSEJ|9 +S9|2449|DURSEJ|9 +S9|2450|DURSEJ|9 +S9|2451|DURSEJ|9 +S9|2452|DURSEJ|9 +S9|2453|DURSEJ|9 +S9|2454|DURSEJ|9 +S9|2455|DURSEJ|9 +S9|2456|DURSEJ|9 +S9|2457|DURSEJ|9 +S9|2458|DURSEJ|9 +S9|2459|DURSEJ|9 +S9|2460|DURSEJ|9 +S9|2461|DURSEJ|9 +S9|2462|DURSEJ|9 +S9|2463|DURSEJ|9 +S9|2464|DURSEJ|9 +S9|2465|DURSEJ|9 +S9|2466|DURSEJ|9 +S9|2467|DURSEJ|9 +S9|2468|DURSEJ|9 +S9|2469|DURSEJ|9 +S9|2470|DURSEJ|9 +S9|2471|DURSEJ|9 +S9|2472|DURSEJ|9 +S9|2473|DURSEJ|9 +S9|2474|DURSEJ|9 +S9|2475|DURSEJ|9 +S9|2476|DURSEJ|9 +S9|2477|DURSEJ|9 +S9|2478|DURSEJ|9 +S9|2479|DURSEJ|9 +S9|2480|DURSEJ|9 +S9|2481|DURSEJ|9 +S9|2482|DURSEJ|9 +S9|2483|DURSEJ|9 +S9|2484|DURSEJ|9 +S9|2485|DURSEJ|9 +S9|2486|DURSEJ|9 +S9|2487|DURSEJ|9 +S9|2488|DURSEJ|9 +S9|2489|DURSEJ|9 +S9|2490|DURSEJ|9 +S9|2491|DURSEJ|9 +S9|2492|DURSEJ|9 +S9|2493|DURSEJ|9 +S9|2494|DURSEJ|9 +S9|2495|DURSEJ|9 +S9|2496|DURSEJ|9 +S9|2497|DURSEJ|9 +S9|2498|DURSEJ|9 +S9|2499|DURSEJ|9 +S9|2500|DURSEJ|9 +S9|2501|DURSEJ|9 +S9|2502|DURSEJ|9 +S9|2503|DURSEJ|9 +S9|2504|DURSEJ|9 +S9|2505|DURSEJ|9 +S9|2506|DURSEJ|9 +S9|2507|DURSEJ|9 +S9|2508|DURSEJ|9 +S9|2509|DURSEJ|9 +S9|2510|DURSEJ|9 +S9|2511|DURSEJ|9 +S9|2512|DURSEJ|9 +S9|2513|DURSEJ|9 +S9|2514|DURSEJ|9 +S9|2515|DURSEJ|9 +S9|2516|DURSEJ|9 +S9|2517|DURSEJ|9 +S9|2518|DURSEJ|9 +S9|2519|DURSEJ|9 +S9|2520|DURSEJ|9 +S9|2521|DURSEJ|9 +S9|2522|DURSEJ|9 +S9|2523|DURSEJ|9 +S9|2524|DURSEJ|9 +S9|2525|DURSEJ|9 +S9|2526|DURSEJ|9 +S9|2527|DURSEJ|9 +S9|2528|DURSEJ|9 +S9|2529|DURSEJ|9 +S9|2530|DURSEJ|9 +S9|2531|DURSEJ|9 +S9|2532|DURSEJ|9 +S9|2533|DURSEJ|9 +S9|2534|DURSEJ|9 +S9|2535|DURSEJ|9 +S9|2536|DURSEJ|9 +S9|2537|DURSEJ|9 +S9|2538|DURSEJ|9 +S9|2539|DURSEJ|9 +S9|2540|DURSEJ|9 +S9|2541|DURSEJ|9 +S9|2542|DURSEJ|9 +S9|2543|DURSEJ|9 +S9|2544|DURSEJ|9 +S9|2545|DURSEJ|9 +S9|2546|DURSEJ|9 +S9|2547|DURSEJ|9 +S9|2548|DURSEJ|9 +S9|2549|DURSEJ|9 +S9|2550|DURSEJ|9 +S9|2551|DURSEJ|9 +S9|2552|DURSEJ|9 +S9|2553|DURSEJ|9 +S9|2554|DURSEJ|9 +S9|2555|DURSEJ|9 +S9|2556|DURSEJ|9 +S9|2557|DURSEJ|9 +S9|2558|DURSEJ|9 +S9|2559|DURSEJ|9 +S9|2560|DURSEJ|9 +S9|2561|DURSEJ|9 +S9|2562|DURSEJ|9 +S9|2563|DURSEJ|9 +S9|2564|DURSEJ|9 +S9|2565|DURSEJ|9 +S9|2566|DURSEJ|9 +S9|2567|DURSEJ|9 +S9|2568|DURSEJ|9 +S9|2569|DURSEJ|9 +S9|2570|DURSEJ|9 +S9|2571|DURSEJ|9 +S9|2572|DURSEJ|9 +S9|2573|DURSEJ|9 +S9|2574|DURSEJ|9 +S9|2575|DURSEJ|9 +S9|2576|DURSEJ|9 +S9|2577|DURSEJ|9 +S9|2578|DURSEJ|9 +S9|2579|DURSEJ|9 +S9|2580|DURSEJ|9 +S9|2581|DURSEJ|9 +S9|2582|DURSEJ|9 +S9|2583|DURSEJ|9 +S9|2584|DURSEJ|9 +S9|2585|DURSEJ|9 +S9|2586|DURSEJ|9 +S9|2587|DURSEJ|9 +S9|2588|DURSEJ|9 +S9|2589|DURSEJ|9 +S9|2590|DURSEJ|9 +S9|2591|DURSEJ|9 +S9|2592|DURSEJ|9 +S9|2593|DURSEJ|9 +S9|2594|DURSEJ|9 +S9|2595|DURSEJ|9 +S9|2596|DURSEJ|9 +S9|2597|DURSEJ|9 +S9|2598|DURSEJ|9 +S9|2599|DURSEJ|9 +S9|2600|DURSEJ|9 +S9|2601|DURSEJ|9 +S9|2602|DURSEJ|9 +S9|2603|DURSEJ|9 +S9|2604|DURSEJ|9 +S9|2605|DURSEJ|9 +S9|2606|DURSEJ|9 +S9|2607|DURSEJ|9 +S9|2608|DURSEJ|9 +S9|2609|DURSEJ|9 +S9|2610|DURSEJ|9 +S9|2611|DURSEJ|9 +S9|2612|DURSEJ|9 +S9|2613|DURSEJ|9 +S9|2614|DURSEJ|9 +S9|2615|DURSEJ|9 +S9|2616|DURSEJ|9 +S9|2617|DURSEJ|9 +S9|2618|DURSEJ|9 +S9|2619|DURSEJ|9 +S9|2620|DURSEJ|9 +S9|2621|DURSEJ|9 +S9|2622|DURSEJ|9 +S9|2623|DURSEJ|9 +S9|2624|DURSEJ|9 +S9|2625|DURSEJ|9 +S9|2626|DURSEJ|9 +S9|2627|DURSEJ|9 +S9|2628|DURSEJ|9 +S9|2629|DURSEJ|9 +S9|2630|DURSEJ|9 +S9|2631|DURSEJ|9 +S9|2632|DURSEJ|9 +S9|2633|DURSEJ|9 +S9|2634|DURSEJ|9 +S9|2635|DURSEJ|9 +S9|2636|DURSEJ|9 +S9|2637|DURSEJ|9 +S9|2638|DURSEJ|9 +S9|2639|DURSEJ|9 +S9|2640|DURSEJ|9 +S9|2641|DURSEJ|9 +S9|2642|DURSEJ|9 +S9|2643|DURSEJ|9 +S9|2644|DURSEJ|9 +S9|2645|DURSEJ|9 +S9|2646|DURSEJ|9 +S9|2647|DURSEJ|9 +S9|2648|DURSEJ|9 +S9|2649|DURSEJ|9 +S9|2650|DURSEJ|9 +S9|2651|DURSEJ|9 +S9|2652|DURSEJ|9 +S9|2653|DURSEJ|9 +S9|2654|DURSEJ|9 +S9|2655|DURSEJ|9 +S9|2656|DURSEJ|9 +S9|2657|DURSEJ|9 +S9|2658|DURSEJ|9 +S9|2659|DURSEJ|9 +S9|2660|DURSEJ|9 +S9|2661|DURSEJ|9 +S9|2662|DURSEJ|9 +S9|2663|DURSEJ|9 +S9|2664|DURSEJ|9 +S9|2665|DURSEJ|9 +S9|2666|DURSEJ|9 +S9|2667|DURSEJ|9 +S9|2668|DURSEJ|9 +S9|2669|DURSEJ|9 +S9|2670|DURSEJ|9 +S9|2671|DURSEJ|9 +S9|2672|DURSEJ|9 +S9|2673|DURSEJ|9 +S9|2674|DURSEJ|9 +S9|2675|DURSEJ|9 +S9|2676|DURSEJ|9 +S9|2677|DURSEJ|9 +S9|2678|DURSEJ|9 +S9|2679|DURSEJ|9 +S9|2680|DURSEJ|9 +S9|2681|DURSEJ|9 +S9|2682|DURSEJ|9 +S9|2683|DURSEJ|9 +S9|2684|DURSEJ|9 +S9|2685|DURSEJ|9 +S9|2686|DURSEJ|9 +S9|2687|DURSEJ|9 +S9|2688|DURSEJ|9 +S9|2689|DURSEJ|9 +S9|2690|DURSEJ|9 +S9|2691|DURSEJ|9 +S9|2692|DURSEJ|9 +S9|2693|DURSEJ|9 +S9|2694|DURSEJ|9 +S9|2695|DURSEJ|9 +S9|2696|DURSEJ|9 +S9|2697|DURSEJ|9 +S9|2698|DURSEJ|9 +S9|2699|DURSEJ|9 +S9|2700|DURSEJ|9 +S9|2701|DURSEJ|9 +S9|2702|DURSEJ|9 +S9|2703|DURSEJ|9 +S9|2704|DURSEJ|9 +S9|2705|DURSEJ|9 +S9|2706|DURSEJ|9 +S9|2707|DURSEJ|9 +S9|2708|DURSEJ|9 +S9|2709|DURSEJ|9 +S9|2710|DURSEJ|9 +S9|2711|DURSEJ|9 +S9|2712|DURSEJ|9 +S9|2713|DURSEJ|9 +S9|2714|DURSEJ|9 +S9|2715|DURSEJ|9 +S9|2716|DURSEJ|9 +S9|2717|DURSEJ|9 +S9|2718|DURSEJ|9 +S9|2719|DURSEJ|9 +S9|2720|DURSEJ|9 +S9|2721|DURSEJ|9 +S9|2722|DURSEJ|9 +S9|2723|DURSEJ|9 +S9|2724|DURSEJ|9 +S9|2725|DURSEJ|9 +S9|2726|DURSEJ|9 +S9|2727|DURSEJ|9 +S9|2728|DURSEJ|9 +S9|2729|DURSEJ|9 +S9|2730|DURSEJ|9 +S9|2731|DURSEJ|9 +S9|2732|DURSEJ|9 +S9|2733|DURSEJ|9 +S9|2734|DURSEJ|9 +S9|2735|DURSEJ|9 +S9|2736|DURSEJ|9 +S9|2737|DURSEJ|9 +S9|2738|DURSEJ|9 +S9|2739|DURSEJ|9 +S9|2740|DURSEJ|9 +S9|2741|DURSEJ|9 +S9|2742|DURSEJ|9 +S9|2743|DURSEJ|9 +S9|2744|DURSEJ|9 +S9|2745|DURSEJ|9 +S9|2746|DURSEJ|9 +S9|2747|DURSEJ|9 +S9|2748|DURSEJ|9 +S9|2749|DURSEJ|9 +S9|2750|DURSEJ|9 +S9|2751|DURSEJ|9 +S9|2752|DURSEJ|9 +S9|2753|DURSEJ|9 +S9|2754|DURSEJ|9 +S9|2755|DURSEJ|9 +S9|2756|DURSEJ|9 +S9|2757|DURSEJ|9 +S9|2758|DURSEJ|9 +S9|2759|DURSEJ|9 +S9|2760|DURSEJ|9 +S9|2761|DURSEJ|9 +S9|2762|DURSEJ|9 +S9|2763|DURSEJ|9 +S9|2764|DURSEJ|9 +S9|2765|DURSEJ|9 +S9|2766|DURSEJ|9 +S9|2767|DURSEJ|9 +S9|2768|DURSEJ|9 +S9|2769|DURSEJ|9 +S9|2770|DURSEJ|9 +S9|2771|DURSEJ|9 +S9|2772|DURSEJ|9 +S9|2773|DURSEJ|9 +S9|2774|DURSEJ|9 +S9|2775|DURSEJ|9 +S9|2776|DURSEJ|9 +S9|2777|DURSEJ|9 +S9|2778|DURSEJ|9 +S9|2779|DURSEJ|9 +S9|2780|DURSEJ|9 +S9|2781|DURSEJ|9 +S9|2782|DURSEJ|9 +S9|2783|DURSEJ|9 +S9|2784|DURSEJ|9 +S9|2785|DURSEJ|9 +S9|2786|DURSEJ|9 +S9|2787|DURSEJ|9 +S9|2788|DURSEJ|9 +S9|2789|DURSEJ|9 +S9|2790|DURSEJ|9 +S9|2791|DURSEJ|9 +S9|2792|DURSEJ|9 +S9|2793|DURSEJ|9 +S9|2794|DURSEJ|9 +S9|2795|DURSEJ|9 +S9|2796|DURSEJ|9 +S9|2797|DURSEJ|9 +S9|2798|DURSEJ|9 +S9|2799|DURSEJ|9 +S9|2800|DURSEJ|9 +S9|2801|DURSEJ|9 +S9|2802|DURSEJ|9 +S9|2803|DURSEJ|9 +S9|2804|DURSEJ|9 +S9|2805|DURSEJ|9 +S9|2806|DURSEJ|9 +S9|2807|DURSEJ|9 +S9|2808|DURSEJ|9 +S9|2809|DURSEJ|9 +S9|2810|DURSEJ|9 +S9|2811|DURSEJ|9 +S9|2812|DURSEJ|9 +S9|2813|DURSEJ|9 +S9|2814|DURSEJ|9 +S9|2815|DURSEJ|9 +S9|2816|DURSEJ|9 +S9|2817|DURSEJ|9 +S9|2818|DURSEJ|9 +S9|2819|DURSEJ|9 +S9|2820|DURSEJ|9 +S9|2821|DURSEJ|9 +S9|2822|DURSEJ|9 +S9|2823|DURSEJ|9 +S9|2824|DURSEJ|9 +S9|2825|DURSEJ|9 +S9|2826|DURSEJ|9 +S9|2827|DURSEJ|9 +S9|2828|DURSEJ|9 +S9|2829|DURSEJ|9 +S9|2830|DURSEJ|9 +S9|2831|DURSEJ|9 +S9|2832|DURSEJ|9 +S9|2833|DURSEJ|9 +S9|2834|DURSEJ|9 +S9|2835|DURSEJ|9 +S9|2836|DURSEJ|9 +S9|2837|DURSEJ|9 +S9|2838|DURSEJ|9 +S9|2839|DURSEJ|9 +S9|2840|DURSEJ|9 +S9|2841|DURSEJ|9 +S9|2842|DURSEJ|9 +S9|2843|DURSEJ|9 +S9|2844|DURSEJ|9 +S9|2845|DURSEJ|9 +S9|2846|DURSEJ|9 +S9|2847|DURSEJ|9 +S9|2848|DURSEJ|9 +S9|2849|DURSEJ|9 +S9|2850|DURSEJ|9 +S9|2851|DURSEJ|9 +S9|2852|DURSEJ|9 +S9|2853|DURSEJ|9 +S9|2854|DURSEJ|9 +S9|2855|DURSEJ|9 +S9|2856|DURSEJ|9 +S9|2857|DURSEJ|9 +S9|2858|DURSEJ|9 +S9|2859|DURSEJ|9 +S9|2860|DURSEJ|9 +S9|2861|DURSEJ|9 +S9|2862|DURSEJ|9 +S9|2863|DURSEJ|9 +S9|2864|DURSEJ|9 +S9|2865|DURSEJ|9 +S9|2866|DURSEJ|9 +S9|2867|DURSEJ|9 +S9|2868|DURSEJ|9 +S9|2869|DURSEJ|9 +S9|2870|DURSEJ|9 +S9|2871|DURSEJ|9 +S9|2872|DURSEJ|9 +S9|2873|DURSEJ|9 +S9|2874|DURSEJ|9 +S9|2875|DURSEJ|9 +S9|2876|DURSEJ|9 +S9|2877|DURSEJ|9 +S9|2878|DURSEJ|9 +S9|2879|DURSEJ|9 +S9|2880|DURSEJ|9 +S9|2881|DURSEJ|9 +S9|2882|DURSEJ|9 +S9|2883|DURSEJ|9 +S9|2884|DURSEJ|9 +S9|2885|DURSEJ|9 +S9|2886|DURSEJ|9 +S9|2887|DURSEJ|9 +S9|2888|DURSEJ|9 +S9|2889|DURSEJ|9 +S9|2890|DURSEJ|9 +S9|2891|DURSEJ|9 +S9|2892|DURSEJ|9 +S9|2893|DURSEJ|9 +S9|2894|DURSEJ|9 +S9|2895|DURSEJ|9 +S9|2896|DURSEJ|9 +S9|2897|DURSEJ|9 +S9|2898|DURSEJ|9 +S9|2899|DURSEJ|9 +S9|2900|DURSEJ|9 +S9|2901|DURSEJ|9 +S9|2902|DURSEJ|9 +S9|2903|DURSEJ|9 +S9|2904|DURSEJ|9 +S9|2905|DURSEJ|9 +S9|2906|DURSEJ|9 +S9|2907|DURSEJ|9 +S9|2908|DURSEJ|9 +S9|2909|DURSEJ|9 +S9|2910|DURSEJ|9 +S9|2911|DURSEJ|9 +S9|2912|DURSEJ|9 +S9|2913|DURSEJ|9 +S9|2914|DURSEJ|9 +S9|2915|DURSEJ|9 +S9|2916|DURSEJ|9 +S9|2917|DURSEJ|9 +S9|2918|DURSEJ|9 +S9|2919|DURSEJ|9 +S9|2920|DURSEJ|9 +S9|2921|DURSEJ|9 +S9|2922|DURSEJ|9 +S9|2923|DURSEJ|9 +S9|2924|DURSEJ|9 +S9|2925|DURSEJ|9 +S9|2926|DURSEJ|9 +S9|2927|DURSEJ|9 +S9|2928|DURSEJ|9 +S9|2929|DURSEJ|9 +S9|2930|DURSEJ|9 +S9|2931|DURSEJ|9 +S9|2932|DURSEJ|9 +S9|2933|DURSEJ|9 +S9|2934|DURSEJ|9 +S9|2935|DURSEJ|9 +S9|2936|DURSEJ|9 +S9|2937|DURSEJ|9 +S9|2938|DURSEJ|9 +S9|2939|DURSEJ|9 +S9|2940|DURSEJ|9 +S9|2941|DURSEJ|9 +S9|2942|DURSEJ|9 +S9|2943|DURSEJ|9 +S9|2944|DURSEJ|9 +S9|2945|DURSEJ|9 +S9|2946|DURSEJ|9 +S9|2947|DURSEJ|9 +S9|2948|DURSEJ|9 +S9|2949|DURSEJ|9 +S9|2950|DURSEJ|9 +S9|2951|DURSEJ|9 +S9|2952|DURSEJ|9 +S9|2953|DURSEJ|9 +S9|2954|DURSEJ|9 +S9|2955|DURSEJ|9 +S9|2956|DURSEJ|9 +S9|2957|DURSEJ|9 +S9|2958|DURSEJ|9 +S9|2959|DURSEJ|9 +S9|2960|DURSEJ|9 +S9|2961|DURSEJ|9 +S9|2962|DURSEJ|9 +S9|2963|DURSEJ|9 +S9|2964|DURSEJ|9 +S9|2965|DURSEJ|9 +S9|2966|DURSEJ|9 +S9|2967|DURSEJ|9 +S9|2968|DURSEJ|9 +S9|2969|DURSEJ|9 +S9|2970|DURSEJ|9 +S9|2971|DURSEJ|9 +S9|2972|DURSEJ|9 +S9|2973|DURSEJ|9 +S9|2974|DURSEJ|9 +S9|2975|DURSEJ|9 +S9|2976|DURSEJ|9 +S9|2977|DURSEJ|9 +S9|2978|DURSEJ|9 +S9|2979|DURSEJ|9 +S9|2980|DURSEJ|9 +S9|2981|DURSEJ|9 +S9|2982|DURSEJ|9 +S9|2983|DURSEJ|9 +S9|2984|DURSEJ|9 +S9|2985|DURSEJ|9 +S9|2986|DURSEJ|9 +S9|2987|DURSEJ|9 +S9|2988|DURSEJ|9 +S9|2989|DURSEJ|9 +S9|2990|DURSEJ|9 +S9|2991|DURSEJ|9 +S9|2992|DURSEJ|9 +S9|2993|DURSEJ|9 +S9|2994|DURSEJ|9 +S9|2995|DURSEJ|9 +S9|2996|DURSEJ|9 +S9|2997|DURSEJ|9 +S9|2998|DURSEJ|9 +S9|2999|DURSEJ|9 +S9|3000|DURSEJ|9 +S9|3001|DURSEJ|9 +S9|3002|DURSEJ|9 +S9|3003|DURSEJ|9 +S9|3004|DURSEJ|9 +S9|3005|DURSEJ|9 +S9|3006|DURSEJ|9 +S9|3007|DURSEJ|9 +S9|3008|DURSEJ|9 +S9|3009|DURSEJ|9 +S9|3010|DURSEJ|9 +S9|3011|DURSEJ|9 +S9|3012|DURSEJ|9 +S9|3013|DURSEJ|9 +S9|3014|DURSEJ|9 +S9|3015|DURSEJ|9 +S9|3016|DURSEJ|9 +S9|3017|DURSEJ|9 +S9|3018|DURSEJ|9 +S9|3019|DURSEJ|9 +S9|3020|DURSEJ|9 +S9|3021|DURSEJ|9 +S9|3022|DURSEJ|9 +S9|3023|DURSEJ|9 +S9|3024|DURSEJ|9 +S9|3025|DURSEJ|9 +S9|3026|DURSEJ|9 +S9|3027|DURSEJ|9 +S9|3028|DURSEJ|9 +S9|3029|DURSEJ|9 +S9|3030|DURSEJ|9 +S9|3031|DURSEJ|9 +S9|3032|DURSEJ|9 +S9|3033|DURSEJ|9 +S9|3034|DURSEJ|9 +S9|3035|DURSEJ|9 +S9|3036|DURSEJ|9 +S9|3037|DURSEJ|9 +S9|3038|DURSEJ|9 +S9|3039|DURSEJ|9 +S9|3040|DURSEJ|9 +S9|3041|DURSEJ|9 +S9|3042|DURSEJ|9 +S9|3043|DURSEJ|9 +S9|3044|DURSEJ|9 +S9|3045|DURSEJ|9 +S9|3046|DURSEJ|9 +S9|3047|DURSEJ|9 +S9|3048|DURSEJ|9 +S9|3049|DURSEJ|9 +S9|3050|DURSEJ|9 +S9|3051|DURSEJ|9 +S9|3052|DURSEJ|9 +S9|3053|DURSEJ|9 +S9|3054|DURSEJ|9 +S9|3055|DURSEJ|9 +S9|3056|DURSEJ|9 +S9|3057|DURSEJ|9 +S9|3058|DURSEJ|9 +S9|3059|DURSEJ|9 +S9|3060|DURSEJ|9 +S9|3061|DURSEJ|9 +S9|3062|DURSEJ|9 +S9|3063|DURSEJ|9 +S9|3064|DURSEJ|9 +S9|3065|DURSEJ|9 +S9|3066|DURSEJ|9 +S9|3067|DURSEJ|9 +S9|3068|DURSEJ|9 +S9|3069|DURSEJ|9 +S9|3070|DURSEJ|9 +S9|3071|DURSEJ|9 +S9|3072|DURSEJ|9 +S9|3073|DURSEJ|9 +S9|3074|DURSEJ|9 +S9|3075|DURSEJ|9 +S9|3076|DURSEJ|9 +S9|3077|DURSEJ|9 +S9|3078|DURSEJ|9 +S9|3079|DURSEJ|9 +S9|3080|DURSEJ|9 +S9|3081|DURSEJ|9 +S9|3082|DURSEJ|9 +S9|3083|DURSEJ|9 +S9|3084|DURSEJ|9 +S9|3085|DURSEJ|9 +S9|3086|DURSEJ|9 +S9|3087|DURSEJ|9 +S9|3088|DURSEJ|9 +S9|3089|DURSEJ|9 +S9|3090|DURSEJ|9 +S9|3091|DURSEJ|9 +S9|3092|DURSEJ|9 +S9|3093|DURSEJ|9 +S9|3094|DURSEJ|9 +S9|3095|DURSEJ|9 +S9|3096|DURSEJ|9 +S9|3097|DURSEJ|9 +S9|3098|DURSEJ|9 +S9|3099|DURSEJ|9 +S9|3100|DURSEJ|9 +S9|3101|DURSEJ|9 +S9|3102|DURSEJ|9 +S9|3103|DURSEJ|9 +S9|3104|DURSEJ|9 +S9|3105|DURSEJ|9 +S9|3106|DURSEJ|9 +S9|3107|DURSEJ|9 +S9|3108|DURSEJ|9 +S9|3109|DURSEJ|9 +S9|3110|DURSEJ|9 +S9|3111|DURSEJ|9 +S9|3112|DURSEJ|9 +S9|3113|DURSEJ|9 +S9|3114|DURSEJ|9 +S9|3115|DURSEJ|9 +S9|3116|DURSEJ|9 +S9|3117|DURSEJ|9 +S9|3118|DURSEJ|9 +S9|3119|DURSEJ|9 +S9|3120|DURSEJ|9 +S9|3121|DURSEJ|9 +S9|3122|DURSEJ|9 +S9|3123|DURSEJ|9 +S9|3124|DURSEJ|9 +S9|3125|DURSEJ|9 +S9|3126|DURSEJ|9 +S9|3127|DURSEJ|9 +S9|3128|DURSEJ|9 +S9|3129|DURSEJ|9 +S9|3130|DURSEJ|9 +S9|3131|DURSEJ|9 +S9|3132|DURSEJ|9 +S9|3133|DURSEJ|9 +S9|3134|DURSEJ|9 +S9|3135|DURSEJ|9 +S9|3136|DURSEJ|9 +S9|3137|DURSEJ|9 +S9|3138|DURSEJ|9 +S9|3139|DURSEJ|9 +S9|3140|DURSEJ|9 +S9|3141|DURSEJ|9 +S9|3142|DURSEJ|9 +S9|3143|DURSEJ|9 +S9|3144|DURSEJ|9 +S9|3145|DURSEJ|9 +S9|3146|DURSEJ|9 +S9|3147|DURSEJ|9 +S9|3148|DURSEJ|9 +S9|3149|DURSEJ|9 +S9|3150|DURSEJ|9 +S9|3151|DURSEJ|9 +S9|3152|DURSEJ|9 +S9|3153|DURSEJ|9 +S9|3154|DURSEJ|9 +S9|3155|DURSEJ|9 +S9|3156|DURSEJ|9 +S9|3157|DURSEJ|9 +S9|3158|DURSEJ|9 +S9|3159|DURSEJ|9 +S9|3160|DURSEJ|9 +S9|3161|DURSEJ|9 +S9|3162|DURSEJ|9 +S9|3163|DURSEJ|9 +S9|3164|DURSEJ|9 +S9|3165|DURSEJ|9 +S9|3166|DURSEJ|9 +S9|3167|DURSEJ|9 +S9|3168|DURSEJ|9 +S9|3169|DURSEJ|9 +S9|3170|DURSEJ|9 +S9|3171|DURSEJ|9 +S9|3172|DURSEJ|9 +S9|3173|DURSEJ|9 +S9|3174|DURSEJ|9 +S9|3175|DURSEJ|9 +S9|3176|DURSEJ|9 +S9|3177|DURSEJ|9 +S9|3178|DURSEJ|9 +S9|3179|DURSEJ|9 +S9|3180|DURSEJ|9 +S9|3181|DURSEJ|9 +S9|3182|DURSEJ|9 +S9|3183|DURSEJ|9 +S9|3184|DURSEJ|9 +S9|3185|DURSEJ|9 +S9|3186|DURSEJ|9 +S9|3187|DURSEJ|9 +S9|3188|DURSEJ|9 +S9|3189|DURSEJ|9 +S9|3190|DURSEJ|9 +S9|3191|DURSEJ|9 +S9|3192|DURSEJ|9 +S9|3193|DURSEJ|9 +S9|3194|DURSEJ|9 +S9|3195|DURSEJ|9 +S9|3196|DURSEJ|9 +S9|3197|DURSEJ|9 +S9|3198|DURSEJ|9 +S9|3199|DURSEJ|9 +S9|3200|DURSEJ|9 +S9|3201|DURSEJ|9 +S9|3202|DURSEJ|9 +S9|3203|DURSEJ|9 +S9|3204|DURSEJ|9 +S9|3205|DURSEJ|9 +S9|3206|DURSEJ|9 +S9|3207|DURSEJ|9 +S9|3208|DURSEJ|9 +S9|3209|DURSEJ|9 +S9|3210|DURSEJ|9 +S9|3211|DURSEJ|9 +S9|3212|DURSEJ|9 +S9|3213|DURSEJ|9 +S9|3214|DURSEJ|9 +S9|3215|DURSEJ|9 +S9|3216|DURSEJ|9 +S9|3217|DURSEJ|9 +S9|3218|DURSEJ|9 +S9|3219|DURSEJ|9 +S9|3220|DURSEJ|9 +S9|3221|DURSEJ|9 +S9|3222|DURSEJ|9 +S9|3223|DURSEJ|9 +S9|3224|DURSEJ|9 +S9|3225|DURSEJ|9 +S9|3226|DURSEJ|9 +S9|3227|DURSEJ|9 +S9|3228|DURSEJ|9 +S9|3229|DURSEJ|9 +S9|3230|DURSEJ|9 +S9|3231|DURSEJ|9 +S9|3232|DURSEJ|9 +S9|3233|DURSEJ|9 +S9|3234|DURSEJ|9 +S9|3235|DURSEJ|9 +S9|3236|DURSEJ|9 +S9|3237|DURSEJ|9 +S9|3238|DURSEJ|9 +S9|3239|DURSEJ|9 +S9|3240|DURSEJ|9 +S9|3241|DURSEJ|9 +S9|3242|DURSEJ|9 +S9|3243|DURSEJ|9 +S9|3244|DURSEJ|9 +S9|3245|DURSEJ|9 +S9|3246|DURSEJ|9 +S9|3247|DURSEJ|9 +S9|3248|DURSEJ|9 +S9|3249|DURSEJ|9 +S9|3250|DURSEJ|9 +S9|3251|DURSEJ|9 +S9|3252|DURSEJ|9 +S9|3253|DURSEJ|9 +S9|3254|DURSEJ|9 +S9|3255|DURSEJ|9 +S9|3256|DURSEJ|9 +S9|3257|DURSEJ|9 +S9|3258|DURSEJ|9 +S9|3259|DURSEJ|9 +S9|3260|DURSEJ|9 +S9|3261|DURSEJ|9 +S9|3262|DURSEJ|9 +S9|3263|DURSEJ|9 +S9|3264|DURSEJ|9 +S9|3265|DURSEJ|9 +S9|3266|DURSEJ|9 +S9|3267|DURSEJ|9 +S9|3268|DURSEJ|9 +S9|3269|DURSEJ|9 +S9|3270|DURSEJ|9 +S9|3271|DURSEJ|9 +S9|3272|DURSEJ|9 +S9|3273|DURSEJ|9 +S9|3274|DURSEJ|9 +S9|3275|DURSEJ|9 +S9|3276|DURSEJ|9 +S9|3277|DURSEJ|9 +S9|3278|DURSEJ|9 +S9|3279|DURSEJ|9 +S9|3280|DURSEJ|9 +S9|3281|DURSEJ|9 +S9|3282|DURSEJ|9 +S9|3283|DURSEJ|9 +S9|3284|DURSEJ|9 +S9|3285|DURSEJ|9 +S9|3286|DURSEJ|9 +S9|3287|DURSEJ|9 +S9|3288|DURSEJ|9 +S9|3289|DURSEJ|9 +S9|3290|DURSEJ|9 +S9|3291|DURSEJ|9 +S9|3292|DURSEJ|9 +S9|3293|DURSEJ|9 +S9|3294|DURSEJ|9 +S9|3295|DURSEJ|9 +S9|3296|DURSEJ|9 +S9|3297|DURSEJ|9 +S9|3298|DURSEJ|9 +S9|3299|DURSEJ|9 +S9|3300|DURSEJ|9 +S9|3301|DURSEJ|9 +S9|3302|DURSEJ|9 +S9|3303|DURSEJ|9 +S9|3304|DURSEJ|9 +S9|3305|DURSEJ|9 +S9|3306|DURSEJ|9 +S9|3307|DURSEJ|9 +S9|3308|DURSEJ|9 +S9|3309|DURSEJ|9 +S9|3310|DURSEJ|9 +S9|3311|DURSEJ|9 +S9|3312|DURSEJ|9 +S9|3313|DURSEJ|9 +S9|3314|DURSEJ|9 +S9|3315|DURSEJ|9 +S9|3316|DURSEJ|9 +S9|3317|DURSEJ|9 +S9|3318|DURSEJ|9 +S9|3319|DURSEJ|9 +S9|3320|DURSEJ|9 +S9|3321|DURSEJ|9 +S9|3322|DURSEJ|9 +S9|3323|DURSEJ|9 +S9|3324|DURSEJ|9 +S9|3325|DURSEJ|9 +S9|3326|DURSEJ|9 +S9|3327|DURSEJ|9 +S9|3328|DURSEJ|9 +S9|3329|DURSEJ|9 +S9|3330|DURSEJ|9 +S9|3331|DURSEJ|9 +S9|3332|DURSEJ|9 +S9|3333|DURSEJ|9 +S9|3334|DURSEJ|9 +S9|3335|DURSEJ|9 +S9|3336|DURSEJ|9 +S9|3337|DURSEJ|9 +S9|3338|DURSEJ|9 +S9|3339|DURSEJ|9 +S9|3340|DURSEJ|9 +S9|3341|DURSEJ|9 +S9|3342|DURSEJ|9 +S9|3343|DURSEJ|9 +S9|3344|DURSEJ|9 +S9|3345|DURSEJ|9 +S9|3346|DURSEJ|9 +S9|3347|DURSEJ|9 +S9|3348|DURSEJ|9 +S9|3349|DURSEJ|9 +S9|3350|DURSEJ|9 +S9|3351|DURSEJ|9 +S9|3352|DURSEJ|9 +S9|3353|DURSEJ|9 +S9|3354|DURSEJ|9 +S9|3355|DURSEJ|9 +S9|3356|DURSEJ|9 +S9|3357|DURSEJ|9 +S9|3358|DURSEJ|9 +S9|3359|DURSEJ|9 +S9|3360|DURSEJ|9 +S9|3361|DURSEJ|9 +S9|3362|DURSEJ|9 +S9|3363|DURSEJ|9 +S9|3364|DURSEJ|9 +S9|3365|DURSEJ|9 +S9|3366|DURSEJ|9 +S9|3367|DURSEJ|9 +S9|3368|DURSEJ|9 +S9|3369|DURSEJ|9 +S9|3370|DURSEJ|9 +S9|3371|DURSEJ|9 +S9|3372|DURSEJ|9 +S9|3373|DURSEJ|9 +S9|3374|DURSEJ|9 +S9|3375|DURSEJ|9 +S9|3376|DURSEJ|9 +S9|3377|DURSEJ|9 +S9|3378|DURSEJ|9 +S9|3379|DURSEJ|9 +S9|3380|DURSEJ|9 +S9|3381|DURSEJ|9 +S9|3382|DURSEJ|9 +S9|3383|DURSEJ|9 +S9|3384|DURSEJ|9 +S9|3385|DURSEJ|9 +S9|3386|DURSEJ|9 +S9|3387|DURSEJ|9 +S9|3388|DURSEJ|9 +S9|3389|DURSEJ|9 +S9|3390|DURSEJ|9 +S9|3391|DURSEJ|9 +S9|3392|DURSEJ|9 +S9|3393|DURSEJ|9 +S9|3394|DURSEJ|9 +S9|3395|DURSEJ|9 +S9|3396|DURSEJ|9 +S9|3397|DURSEJ|9 +S9|3398|DURSEJ|9 +S9|3399|DURSEJ|9 +S9|3400|DURSEJ|9 +S9|3401|DURSEJ|9 +S9|3402|DURSEJ|9 +S9|3403|DURSEJ|9 +S9|3404|DURSEJ|9 +S9|3405|DURSEJ|9 +S9|3406|DURSEJ|9 +S9|3407|DURSEJ|9 +S9|3408|DURSEJ|9 +S9|3409|DURSEJ|9 +S9|3410|DURSEJ|9 +S9|3411|DURSEJ|9 +S9|3412|DURSEJ|9 +S9|3413|DURSEJ|9 +S9|3414|DURSEJ|9 +S9|3415|DURSEJ|9 +S9|3416|DURSEJ|9 +S9|3417|DURSEJ|9 +S9|3418|DURSEJ|9 +S9|3419|DURSEJ|9 +S9|3420|DURSEJ|9 +S9|3421|DURSEJ|9 +S9|3422|DURSEJ|9 +S9|3423|DURSEJ|9 +S9|3424|DURSEJ|9 +S9|3425|DURSEJ|9 +S9|3426|DURSEJ|9 +S9|3427|DURSEJ|9 +S9|3428|DURSEJ|9 +S9|3429|DURSEJ|9 +S9|3430|DURSEJ|9 +S9|3431|DURSEJ|9 +S9|3432|DURSEJ|9 +S9|3433|DURSEJ|9 +S9|3434|DURSEJ|9 +S9|3435|DURSEJ|9 +S9|3436|DURSEJ|9 +S9|3437|DURSEJ|9 +S9|3438|DURSEJ|9 +S9|3439|DURSEJ|9 +S9|3440|DURSEJ|9 +S9|3441|DURSEJ|9 +S9|3442|DURSEJ|9 +S9|3443|DURSEJ|9 +S9|3444|DURSEJ|9 +S9|3445|DURSEJ|9 +S9|3446|DURSEJ|9 +S9|3447|DURSEJ|9 +S9|3448|DURSEJ|9 +S9|3449|DURSEJ|9 +S9|3450|DURSEJ|9 +S9|3451|DURSEJ|9 +S9|3452|DURSEJ|9 +S9|3453|DURSEJ|9 +S9|3454|DURSEJ|9 +S9|3455|DURSEJ|9 +S9|3456|DURSEJ|9 +S9|3457|DURSEJ|9 +S9|3458|DURSEJ|9 +S9|3459|DURSEJ|9 +S9|3460|DURSEJ|9 +S9|3461|DURSEJ|9 +S9|3462|DURSEJ|9 +S9|3463|DURSEJ|9 +S9|3464|DURSEJ|9 +S9|3465|DURSEJ|9 +S9|3466|DURSEJ|9 +S9|3467|DURSEJ|9 +S9|3468|DURSEJ|9 +S9|3469|DURSEJ|9 +S9|3470|DURSEJ|9 +S9|3471|DURSEJ|9 +S9|3472|DURSEJ|9 +S9|3473|DURSEJ|9 +S9|3474|DURSEJ|9 +S9|3475|DURSEJ|9 +S9|3476|DURSEJ|9 +S9|3477|DURSEJ|9 +S9|3478|DURSEJ|9 +S9|3479|DURSEJ|9 +S9|3480|DURSEJ|9 +S9|3481|DURSEJ|9 +S9|3482|DURSEJ|9 +S9|3483|DURSEJ|9 +S9|3484|DURSEJ|9 +S9|3485|DURSEJ|9 +S9|3486|DURSEJ|9 +S9|3487|DURSEJ|9 +S9|3488|DURSEJ|9 +S9|3489|DURSEJ|9 +S9|3490|DURSEJ|9 +S9|3491|DURSEJ|9 +S9|3492|DURSEJ|9 +S9|3493|DURSEJ|9 +S9|3494|DURSEJ|9 +S9|3495|DURSEJ|9 +S9|3496|DURSEJ|9 +S9|3497|DURSEJ|9 +S9|3498|DURSEJ|9 +S9|3499|DURSEJ|9 +S9|3500|DURSEJ|9 +S9|3501|DURSEJ|9 +S9|3502|DURSEJ|9 +S9|3503|DURSEJ|9 +S9|3504|DURSEJ|9 +S9|3505|DURSEJ|9 +S9|3506|DURSEJ|9 +S9|3507|DURSEJ|9 +S9|3508|DURSEJ|9 +S9|3509|DURSEJ|9 +S9|3510|DURSEJ|9 +S9|3511|DURSEJ|9 +S9|3512|DURSEJ|9 +S9|3513|DURSEJ|9 +S9|3514|DURSEJ|9 +S9|3515|DURSEJ|9 +S9|3516|DURSEJ|9 +S9|3517|DURSEJ|9 +S9|3518|DURSEJ|9 +S9|3519|DURSEJ|9 +S9|3520|DURSEJ|9 +S9|3521|DURSEJ|9 +S9|3522|DURSEJ|9 +S9|3523|DURSEJ|9 +S9|3524|DURSEJ|9 +S9|3525|DURSEJ|9 +S9|3526|DURSEJ|9 +S9|3527|DURSEJ|9 +S9|3528|DURSEJ|9 +S9|3529|DURSEJ|9 +S9|3530|DURSEJ|9 +S9|3531|DURSEJ|9 +S9|3532|DURSEJ|9 +S9|3533|DURSEJ|9 +S9|3534|DURSEJ|9 +S9|3535|DURSEJ|9 +S9|3536|DURSEJ|9 +S9|3537|DURSEJ|9 +S9|3538|DURSEJ|9 +S9|3539|DURSEJ|9 +S9|3540|DURSEJ|9 +S9|3541|DURSEJ|9 +S9|3542|DURSEJ|9 +S9|3543|DURSEJ|9 +S9|3544|DURSEJ|9 +S9|3545|DURSEJ|9 +S9|3546|DURSEJ|9 +S9|3547|DURSEJ|9 +S9|3548|DURSEJ|9 +S9|3549|DURSEJ|9 +S9|3550|DURSEJ|9 +S9|3551|DURSEJ|9 +S9|3552|DURSEJ|9 +S9|3553|DURSEJ|9 +S9|3554|DURSEJ|9 +S9|3555|DURSEJ|9 +S9|3556|DURSEJ|9 +S9|3557|DURSEJ|9 +S9|3558|DURSEJ|9 +S9|3559|DURSEJ|9 +S9|3560|DURSEJ|9 +S9|3561|DURSEJ|9 +S9|3562|DURSEJ|9 +S9|3563|DURSEJ|9 +S9|3564|DURSEJ|9 +S9|3565|DURSEJ|9 +S9|3566|DURSEJ|9 +S9|3567|DURSEJ|9 +S9|3568|DURSEJ|9 +S9|3569|DURSEJ|9 +S9|3570|DURSEJ|9 +S9|3571|DURSEJ|9 +S9|3572|DURSEJ|9 +S9|3573|DURSEJ|9 +S9|3574|DURSEJ|9 +S9|3575|DURSEJ|9 +S9|3576|DURSEJ|9 +S9|3577|DURSEJ|9 +S9|3578|DURSEJ|9 +S9|3579|DURSEJ|9 +S9|3580|DURSEJ|9 +S9|3581|DURSEJ|9 +S9|3582|DURSEJ|9 +S9|3583|DURSEJ|9 +S9|3584|DURSEJ|9 +S9|3585|DURSEJ|9 +S9|3586|DURSEJ|9 +S9|3587|DURSEJ|9 +S9|3588|DURSEJ|9 +S9|3589|DURSEJ|9 +S9|3590|DURSEJ|9 +S9|3591|DURSEJ|9 +S9|3592|DURSEJ|9 +S9|3593|DURSEJ|9 +S9|3594|DURSEJ|9 +S9|3595|DURSEJ|9 +S9|3596|DURSEJ|9 +S9|3597|DURSEJ|9 +S9|3598|DURSEJ|9 +S9|3599|DURSEJ|9 +S9|3600|DURSEJ|9 +S9|3601|DURSEJ|9 +S9|3602|DURSEJ|9 +S9|3603|DURSEJ|9 +S9|3604|DURSEJ|9 +S9|3605|DURSEJ|9 +S9|3606|DURSEJ|9 +S9|3607|DURSEJ|9 +S9|3608|DURSEJ|9 +S9|3609|DURSEJ|9 +S9|3610|DURSEJ|9 +S9|3611|DURSEJ|9 +S9|3612|DURSEJ|9 +S9|3613|DURSEJ|9 +S9|3614|DURSEJ|9 +S9|3615|DURSEJ|9 +S9|3616|DURSEJ|9 +S9|3617|DURSEJ|9 +S9|3618|DURSEJ|9 +S9|3619|DURSEJ|9 +S9|3620|DURSEJ|9 +S9|3621|DURSEJ|9 +S9|3622|DURSEJ|9 +S9|3623|DURSEJ|9 +S9|3624|DURSEJ|9 +S9|3625|DURSEJ|9 +S9|3626|DURSEJ|9 +S9|3627|DURSEJ|9 +S9|3628|DURSEJ|9 +S9|3629|DURSEJ|9 +S9|3630|DURSEJ|9 +S9|3631|DURSEJ|9 +S9|3632|DURSEJ|9 +S9|3633|DURSEJ|9 +S9|3634|DURSEJ|9 +S9|3635|DURSEJ|9 +S9|3636|DURSEJ|9 +S9|3637|DURSEJ|9 +S9|3638|DURSEJ|9 +S9|3639|DURSEJ|9 +S9|3640|DURSEJ|9 +S9|3641|DURSEJ|9 +S9|3642|DURSEJ|9 +S9|3643|DURSEJ|9 +S9|3644|DURSEJ|9 +S9|3645|DURSEJ|9 +S9|3646|DURSEJ|9 +S9|3647|DURSEJ|9 +S9|3648|DURSEJ|9 +S9|3649|DURSEJ|9 +S9|3650|DURSEJ|9 +S9|3651|DURSEJ|9 +S9|3652|DURSEJ|9 +S9|3653|DURSEJ|9 +S9|3654|DURSEJ|9 +S9|3655|DURSEJ|9 +S9|3656|DURSEJ|9 +S9|3657|DURSEJ|9 +S9|3658|DURSEJ|9 +S9|3659|DURSEJ|9 +S9|3660|DURSEJ|9 +S9|3661|DURSEJ|9 +S9|3662|DURSEJ|9 +S9|3663|DURSEJ|9 +S9|3664|DURSEJ|9 +S9|3665|DURSEJ|9 +S9|3666|DURSEJ|9 +S9|3667|DURSEJ|9 +S9|3668|DURSEJ|9 +S9|3669|DURSEJ|9 +S9|3670|DURSEJ|9 +S9|3671|DURSEJ|9 +S9|3672|DURSEJ|9 +S9|3673|DURSEJ|9 +S9|3674|DURSEJ|9 +S9|3675|DURSEJ|9 +S9|3676|DURSEJ|9 +S9|3677|DURSEJ|9 +S9|3678|DURSEJ|9 +S9|3679|DURSEJ|9 +S9|3680|DURSEJ|9 +S9|3681|DURSEJ|9 +S9|3682|DURSEJ|9 +S9|3683|DURSEJ|9 +S9|3684|DURSEJ|9 +S9|3685|DURSEJ|9 +S9|3686|DURSEJ|9 +S9|3687|DURSEJ|9 +S9|3688|DURSEJ|9 +S9|3689|DURSEJ|9 +S9|3690|DURSEJ|9 +S9|3691|DURSEJ|9 +S9|3692|DURSEJ|9 +S9|3693|DURSEJ|9 +S9|3694|DURSEJ|9 +S9|3695|DURSEJ|9 +S9|3696|DURSEJ|9 +S9|3697|DURSEJ|9 +S9|3698|DURSEJ|9 +S9|3699|DURSEJ|9 +S9|3700|DURSEJ|9 +S9|3701|DURSEJ|9 +S9|3702|DURSEJ|9 +S9|3703|DURSEJ|9 +S9|3704|DURSEJ|9 +S9|3705|DURSEJ|9 +S9|3706|DURSEJ|9 +S9|3707|DURSEJ|9 +S9|3708|DURSEJ|9 +S9|3709|DURSEJ|9 +S9|3710|DURSEJ|9 +S9|3711|DURSEJ|9 +S9|3712|DURSEJ|9 +S9|3713|DURSEJ|9 +S9|3714|DURSEJ|9 +S9|3715|DURSEJ|9 +S9|3716|DURSEJ|9 +S9|3717|DURSEJ|9 +S9|3718|DURSEJ|9 +S9|3719|DURSEJ|9 +S9|3720|DURSEJ|9 +S9|3721|DURSEJ|9 +S9|3722|DURSEJ|9 +S9|3723|DURSEJ|9 +S9|3724|DURSEJ|9 +S9|3725|DURSEJ|9 +S9|3726|DURSEJ|9 +S9|3727|DURSEJ|9 +S9|3728|DURSEJ|9 +S9|3729|DURSEJ|9 +S9|3730|DURSEJ|9 +S9|3731|DURSEJ|9 +S9|3732|DURSEJ|9 +S9|3733|DURSEJ|9 +S9|3734|DURSEJ|9 +S9|3735|DURSEJ|9 +S9|3736|DURSEJ|9 +S9|3737|DURSEJ|9 +S9|3738|DURSEJ|9 +S9|3739|DURSEJ|9 +S9|3740|DURSEJ|9 +S9|3741|DURSEJ|9 +S9|3742|DURSEJ|9 +S9|3743|DURSEJ|9 +S9|3744|DURSEJ|9 +S9|3745|DURSEJ|9 +S9|3746|DURSEJ|9 +S9|3747|DURSEJ|9 +S9|3748|DURSEJ|9 +S9|3749|DURSEJ|9 +S9|3750|DURSEJ|9 +S9|3751|DURSEJ|9 +S9|3752|DURSEJ|9 +S9|3753|DURSEJ|9 +S9|3754|DURSEJ|9 +S9|3755|DURSEJ|9 +S9|3756|DURSEJ|9 +S9|3757|DURSEJ|9 +S9|3758|DURSEJ|9 +S9|3759|DURSEJ|9 +S9|3760|DURSEJ|9 +S9|3761|DURSEJ|9 +S9|3762|DURSEJ|9 +S9|3763|DURSEJ|9 +S9|3764|DURSEJ|9 +S9|3765|DURSEJ|9 +S9|3766|DURSEJ|9 +S9|3767|DURSEJ|9 +S9|3768|DURSEJ|9 +S9|3769|DURSEJ|9 +S9|3770|DURSEJ|9 +S9|3771|DURSEJ|9 +S9|3772|DURSEJ|9 +S9|3773|DURSEJ|9 +S9|3774|DURSEJ|9 +S9|3775|DURSEJ|9 +S9|3776|DURSEJ|9 +S9|3777|DURSEJ|9 +S9|3778|DURSEJ|9 +S9|3779|DURSEJ|9 +S9|3780|DURSEJ|9 +S9|3781|DURSEJ|9 +S9|3782|DURSEJ|9 +S9|3783|DURSEJ|9 +S9|3784|DURSEJ|9 +S9|3785|DURSEJ|9 +S9|3786|DURSEJ|9 +S9|3787|DURSEJ|9 +S9|3788|DURSEJ|9 +S9|3789|DURSEJ|9 +S9|3790|DURSEJ|9 +S9|3791|DURSEJ|9 +S9|3792|DURSEJ|9 +S9|3793|DURSEJ|9 +S9|3794|DURSEJ|9 +S9|3795|DURSEJ|9 +S9|3796|DURSEJ|9 +S9|3797|DURSEJ|9 +S9|3798|DURSEJ|9 +S9|3799|DURSEJ|9 +S9|3800|DURSEJ|9 +S9|3801|DURSEJ|9 +S9|3802|DURSEJ|9 +S9|3803|DURSEJ|9 +S9|3804|DURSEJ|9 +S9|3805|DURSEJ|9 +S9|3806|DURSEJ|9 +S9|3807|DURSEJ|9 +S9|3808|DURSEJ|9 +S9|3809|DURSEJ|9 +S9|3810|DURSEJ|9 +S9|3811|DURSEJ|9 +S9|3812|DURSEJ|9 +S9|3813|DURSEJ|9 +S9|3814|DURSEJ|9 +S9|3815|DURSEJ|9 +S9|3816|DURSEJ|9 +S9|3817|DURSEJ|9 +S9|3818|DURSEJ|9 +S9|3819|DURSEJ|9 +S9|3820|DURSEJ|9 +S9|3821|DURSEJ|9 +S9|3822|DURSEJ|9 +S9|3823|DURSEJ|9 +S9|3824|DURSEJ|9 +S9|3825|DURSEJ|9 +S9|3826|DURSEJ|9 +S9|3827|DURSEJ|9 +S9|3828|DURSEJ|9 +S9|3829|DURSEJ|9 +S9|3830|DURSEJ|9 +S9|3831|DURSEJ|9 +S9|3832|DURSEJ|9 +S9|3833|DURSEJ|9 +S9|3834|DURSEJ|9 +S9|3835|DURSEJ|9 +S9|3836|DURSEJ|9 +S9|3837|DURSEJ|9 +S9|3838|DURSEJ|9 +S9|3839|DURSEJ|9 +S9|3840|DURSEJ|9 +S9|3841|DURSEJ|9 +S9|3842|DURSEJ|9 +S9|3843|DURSEJ|9 +S9|3844|DURSEJ|9 +S9|3845|DURSEJ|9 +S9|3846|DURSEJ|9 +S9|3847|DURSEJ|9 +S9|3848|DURSEJ|9 +S9|3849|DURSEJ|9 +S9|3850|DURSEJ|9 +S9|3851|DURSEJ|9 +S9|3852|DURSEJ|9 +S9|3853|DURSEJ|9 +S9|3854|DURSEJ|9 +S9|3855|DURSEJ|9 +S9|3856|DURSEJ|9 +S9|3857|DURSEJ|9 +S9|3858|DURSEJ|9 +S9|3859|DURSEJ|9 +S9|3860|DURSEJ|9 +S9|3861|DURSEJ|9 +S9|3862|DURSEJ|9 +S9|3863|DURSEJ|9 +S9|3864|DURSEJ|9 +S9|3865|DURSEJ|9 +S9|3866|DURSEJ|9 +S9|3867|DURSEJ|9 +S9|3868|DURSEJ|9 +S9|3869|DURSEJ|9 +S9|3870|DURSEJ|9 +S9|3871|DURSEJ|9 +S9|3872|DURSEJ|9 +S9|3873|DURSEJ|9 +S9|3874|DURSEJ|9 +S9|3875|DURSEJ|9 +S9|3876|DURSEJ|9 +S9|3877|DURSEJ|9 +S9|3878|DURSEJ|9 +S9|3879|DURSEJ|9 +S9|3880|DURSEJ|9 +S9|3881|DURSEJ|9 +S9|3882|DURSEJ|9 +S9|3883|DURSEJ|9 +S9|3884|DURSEJ|9 +S9|3885|DURSEJ|9 +S9|3886|DURSEJ|9 +S9|3887|DURSEJ|9 +S9|3888|DURSEJ|9 +S9|3889|DURSEJ|9 +S9|3890|DURSEJ|9 +S9|3891|DURSEJ|9 +S9|3892|DURSEJ|9 +S9|3893|DURSEJ|9 +S9|3894|DURSEJ|9 +S9|3895|DURSEJ|9 +S9|3896|DURSEJ|9 +S9|3897|DURSEJ|9 +S9|3898|DURSEJ|9 +S9|3899|DURSEJ|9 +S9|3900|DURSEJ|9 +S9|3901|DURSEJ|9 +S9|3902|DURSEJ|9 +S9|3903|DURSEJ|9 +S9|3904|DURSEJ|9 +S9|3905|DURSEJ|9 +S9|3906|DURSEJ|9 +S9|3907|DURSEJ|9 +S9|3908|DURSEJ|9 +S9|3909|DURSEJ|9 +S9|3910|DURSEJ|9 +S9|3911|DURSEJ|9 +S9|3912|DURSEJ|9 +S9|3913|DURSEJ|9 +S9|3914|DURSEJ|9 +S9|3915|DURSEJ|9 +S9|3916|DURSEJ|9 +S9|3917|DURSEJ|9 +S9|3918|DURSEJ|9 +S9|3919|DURSEJ|9 +S9|3920|DURSEJ|9 +S9|3921|DURSEJ|9 +S9|3922|DURSEJ|9 +S9|3923|DURSEJ|9 +S9|3924|DURSEJ|9 +S9|3925|DURSEJ|9 +S9|3926|DURSEJ|9 +S9|3927|DURSEJ|9 +S9|3928|DURSEJ|9 +S9|3929|DURSEJ|9 +S9|3930|DURSEJ|9 +S9|3931|DURSEJ|9 +S9|3932|DURSEJ|9 +S9|3933|DURSEJ|9 +S9|3934|DURSEJ|9 +S9|3935|DURSEJ|9 +S9|3936|DURSEJ|9 +S9|3937|DURSEJ|9 +S9|3938|DURSEJ|9 +S9|3939|DURSEJ|9 +S9|3940|DURSEJ|9 +S9|3941|DURSEJ|9 +S9|3942|DURSEJ|9 +S9|3943|DURSEJ|9 +S9|3944|DURSEJ|9 +S9|3945|DURSEJ|9 +S9|3946|DURSEJ|9 +S9|3947|DURSEJ|9 +S9|3948|DURSEJ|9 +S9|3949|DURSEJ|9 +S9|3950|DURSEJ|9 +S9|3951|DURSEJ|9 +S9|3952|DURSEJ|9 +S9|3953|DURSEJ|9 +S9|3954|DURSEJ|9 +S9|3955|DURSEJ|9 +S9|3956|DURSEJ|9 +S9|3957|DURSEJ|9 +S9|3958|DURSEJ|9 +S9|3959|DURSEJ|9 +S9|3960|DURSEJ|9 +S9|3961|DURSEJ|9 +S9|3962|DURSEJ|9 +S9|3963|DURSEJ|9 +S9|3964|DURSEJ|9 +S9|3965|DURSEJ|9 +S9|3966|DURSEJ|9 +S9|3967|DURSEJ|9 +S9|3968|DURSEJ|9 +S9|3969|DURSEJ|9 +S9|3970|DURSEJ|9 +S9|3971|DURSEJ|9 +S9|3972|DURSEJ|9 +S9|3973|DURSEJ|9 +S9|3974|DURSEJ|9 +S9|3975|DURSEJ|9 +S9|3976|DURSEJ|9 +S9|3977|DURSEJ|9 +S9|3978|DURSEJ|9 +S9|3979|DURSEJ|9 +S9|3980|DURSEJ|9 +S9|3981|DURSEJ|9 +S9|3982|DURSEJ|9 +S9|3983|DURSEJ|9 +S9|3984|DURSEJ|9 +S9|3985|DURSEJ|9 +S9|3986|DURSEJ|9 +S9|3987|DURSEJ|9 +S9|3988|DURSEJ|9 +S9|3989|DURSEJ|9 +S9|3990|DURSEJ|9 +S9|3991|DURSEJ|9 +S9|3992|DURSEJ|9 +S9|3993|DURSEJ|9 +S9|3994|DURSEJ|9 +S9|3995|DURSEJ|9 +S9|3996|DURSEJ|9 +S9|3997|DURSEJ|9 +S9|3998|DURSEJ|9 +S9|3999|DURSEJ|9 +S9|4000|DURSEJ|9 +S9|4001|DURSEJ|9 +S9|4002|DURSEJ|9 +S9|4003|DURSEJ|9 +S9|4004|DURSEJ|9 +S9|4005|DURSEJ|9 +S9|4006|DURSEJ|9 +S9|4007|DURSEJ|9 +S9|4008|DURSEJ|9 +S9|4009|DURSEJ|9 +S9|4010|DURSEJ|9 +S9|4011|DURSEJ|9 +S9|4012|DURSEJ|9 +S9|4013|DURSEJ|9 +S9|4014|DURSEJ|9 +S9|4015|DURSEJ|9 +S9|4016|DURSEJ|9 +S9|4017|DURSEJ|9 +S9|4018|DURSEJ|9 +S9|4019|DURSEJ|9 +S9|4020|DURSEJ|9 +S9|4021|DURSEJ|9 +S9|4022|DURSEJ|9 +S9|4023|DURSEJ|9 +S9|4024|DURSEJ|9 +S9|4025|DURSEJ|9 +S9|4026|DURSEJ|9 +S9|4027|DURSEJ|9 +S9|4028|DURSEJ|9 +S9|4029|DURSEJ|9 +S9|4030|DURSEJ|9 +S9|4031|DURSEJ|9 +S9|4032|DURSEJ|9 +S9|4033|DURSEJ|9 +S9|4034|DURSEJ|9 +S9|4035|DURSEJ|9 +S9|4036|DURSEJ|9 +S9|4037|DURSEJ|9 +S9|4038|DURSEJ|9 +S9|4039|DURSEJ|9 +S9|4040|DURSEJ|9 +S9|4041|DURSEJ|9 +S9|4042|DURSEJ|9 +S9|4043|DURSEJ|9 +S9|4044|DURSEJ|9 +S9|4045|DURSEJ|9 +S9|4046|DURSEJ|9 +S9|4047|DURSEJ|9 +S9|4048|DURSEJ|9 +S9|4049|DURSEJ|9 +S9|4050|DURSEJ|9 +S9|4051|DURSEJ|9 +S9|4052|DURSEJ|9 +S9|4053|DURSEJ|9 +S9|4054|DURSEJ|9 +S9|4055|DURSEJ|9 +S9|4056|DURSEJ|9 +S9|4057|DURSEJ|9 +S9|4058|DURSEJ|9 +S9|4059|DURSEJ|9 +S9|4060|DURSEJ|9 +S9|4061|DURSEJ|9 +S9|4062|DURSEJ|9 +S9|4063|DURSEJ|9 +S9|4064|DURSEJ|9 +S9|4065|DURSEJ|9 +S9|4066|DURSEJ|9 +S9|4067|DURSEJ|9 +S9|4068|DURSEJ|9 +S9|4069|DURSEJ|9 +S9|4070|DURSEJ|9 +S9|4071|DURSEJ|9 +S9|4072|DURSEJ|9 +S9|4073|DURSEJ|9 +S9|4074|DURSEJ|9 +S9|4075|DURSEJ|9 +S9|4076|DURSEJ|9 +S9|4077|DURSEJ|9 +S9|4078|DURSEJ|9 +S9|4079|DURSEJ|9 +S9|4080|DURSEJ|9 +S9|4081|DURSEJ|9 +S9|4082|DURSEJ|9 +S9|4083|DURSEJ|9 +S9|4084|DURSEJ|9 +S9|4085|DURSEJ|9 +S9|4086|DURSEJ|9 +S9|4087|DURSEJ|9 +S9|4088|DURSEJ|9 +S9|4089|DURSEJ|9 +S9|4090|DURSEJ|9 +S9|4091|DURSEJ|9 +S9|4092|DURSEJ|9 +S9|4093|DURSEJ|9 +S9|4094|DURSEJ|9 +S9|4095|DURSEJ|9 +S9|4096|DURSEJ|9 +S9|4097|DURSEJ|9 +S9|4098|DURSEJ|9 +S9|4099|DURSEJ|9 +S9|4100|DURSEJ|9 +S9|4101|DURSEJ|9 +S9|4102|DURSEJ|9 +S9|4103|DURSEJ|9 +S9|4104|DURSEJ|9 +S9|4105|DURSEJ|9 +S9|4106|DURSEJ|9 +S9|4107|DURSEJ|9 +S9|4108|DURSEJ|9 +S9|4109|DURSEJ|9 +S9|4110|DURSEJ|9 +S9|4111|DURSEJ|9 +S9|4112|DURSEJ|9 +S9|4113|DURSEJ|9 +S9|4114|DURSEJ|9 +S9|4115|DURSEJ|9 +S9|4116|DURSEJ|9 +S9|4117|DURSEJ|9 +S9|4118|DURSEJ|9 +S9|4119|DURSEJ|9 +S9|4120|DURSEJ|9 +S9|4121|DURSEJ|9 +S9|4122|DURSEJ|9 +S9|4123|DURSEJ|9 +S9|4124|DURSEJ|9 +S9|4125|DURSEJ|9 +S9|4126|DURSEJ|9 +S9|4127|DURSEJ|9 +S9|4128|DURSEJ|9 +S9|4129|DURSEJ|9 +S9|4130|DURSEJ|9 +S9|4131|DURSEJ|9 +S9|4132|DURSEJ|9 +S9|4133|DURSEJ|9 +S9|4134|DURSEJ|9 +S9|4135|DURSEJ|9 +S9|4136|DURSEJ|9 +S9|4137|DURSEJ|9 +S9|4138|DURSEJ|9 +S9|4139|DURSEJ|9 +S9|4140|DURSEJ|9 +S9|4141|DURSEJ|9 +S9|4142|DURSEJ|9 +S9|4143|DURSEJ|9 +S9|4144|DURSEJ|9 +S9|4145|DURSEJ|9 +S9|4146|DURSEJ|9 +S9|4147|DURSEJ|9 +S9|4148|DURSEJ|9 +S9|4149|DURSEJ|9 +S9|4150|DURSEJ|9 +S9|4151|DURSEJ|9 +S9|4152|DURSEJ|9 +S9|4153|DURSEJ|9 +S9|4154|DURSEJ|9 +S9|4155|DURSEJ|9 +S9|4156|DURSEJ|9 +S9|4157|DURSEJ|9 +S9|4158|DURSEJ|9 +S9|4159|DURSEJ|9 +S9|4160|DURSEJ|9 +S9|4161|DURSEJ|9 +S9|4162|DURSEJ|9 +S9|4163|DURSEJ|9 +S9|4164|DURSEJ|9 +S9|4165|DURSEJ|9 +S9|4166|DURSEJ|9 +S9|4167|DURSEJ|9 +S9|4168|DURSEJ|9 +S9|4169|DURSEJ|9 +S9|4170|DURSEJ|9 +S9|4171|DURSEJ|9 +S9|4172|DURSEJ|9 +S9|4173|DURSEJ|9 +S9|4174|DURSEJ|9 +S9|4175|DURSEJ|9 +S9|4176|DURSEJ|9 +S9|4177|DURSEJ|9 +S9|4178|DURSEJ|9 +S9|4179|DURSEJ|9 +S9|4180|DURSEJ|9 +S9|4181|DURSEJ|9 +S9|4182|DURSEJ|9 +S9|4183|DURSEJ|9 +S9|4184|DURSEJ|9 +S9|4185|DURSEJ|9 +S9|4186|DURSEJ|9 +S9|4187|DURSEJ|9 +S9|4188|DURSEJ|9 +S9|4189|DURSEJ|9 +S9|4190|DURSEJ|9 +S9|4191|DURSEJ|9 +S9|4192|DURSEJ|9 +S9|4193|DURSEJ|9 +S9|4194|DURSEJ|9 +S9|4195|DURSEJ|9 +S9|4196|DURSEJ|9 +S9|4197|DURSEJ|9 +S9|4198|DURSEJ|9 +S9|4199|DURSEJ|9 +S9|4200|DURSEJ|9 +S9|4201|DURSEJ|9 +S9|4202|DURSEJ|9 +S9|4203|DURSEJ|9 +S9|4204|DURSEJ|9 +S9|4205|DURSEJ|9 +S9|4206|DURSEJ|9 +S9|4207|DURSEJ|9 +S9|4208|DURSEJ|9 +S9|4209|DURSEJ|9 +S9|4210|DURSEJ|9 +S9|4211|DURSEJ|9 +S9|4212|DURSEJ|9 +S9|4213|DURSEJ|9 +S9|4214|DURSEJ|9 +S9|4215|DURSEJ|9 +S9|4216|DURSEJ|9 +S9|4217|DURSEJ|9 +S9|4218|DURSEJ|9 +S9|4219|DURSEJ|9 +S9|4220|DURSEJ|9 +S9|4221|DURSEJ|9 +S9|4222|DURSEJ|9 +S9|4223|DURSEJ|9 +S9|4224|DURSEJ|9 +S9|4225|DURSEJ|9 +S9|4226|DURSEJ|9 +S9|4227|DURSEJ|9 +S9|4228|DURSEJ|9 +S9|4229|DURSEJ|9 +S9|4230|DURSEJ|9 +S9|4231|DURSEJ|9 +S9|4232|DURSEJ|9 +S9|4233|DURSEJ|9 +S9|4234|DURSEJ|9 +S9|4235|DURSEJ|9 +S9|4236|DURSEJ|9 +S9|4237|DURSEJ|9 +S9|4238|DURSEJ|9 +S9|4239|DURSEJ|9 +S9|4240|DURSEJ|9 +S9|4241|DURSEJ|9 +S9|4242|DURSEJ|9 +S9|4243|DURSEJ|9 +S9|4244|DURSEJ|9 +S9|4245|DURSEJ|9 +S9|4246|DURSEJ|9 +S9|4247|DURSEJ|9 +S9|4248|DURSEJ|9 +S9|4249|DURSEJ|9 +S9|4250|DURSEJ|9 +S9|4251|DURSEJ|9 +S9|4252|DURSEJ|9 +S9|4253|DURSEJ|9 +S9|4254|DURSEJ|9 +S9|4255|DURSEJ|9 +S9|4256|DURSEJ|9 +S9|4257|DURSEJ|9 +S9|4258|DURSEJ|9 +S9|4259|DURSEJ|9 +S9|4260|DURSEJ|9 +S9|4261|DURSEJ|9 +S9|4262|DURSEJ|9 +S9|4263|DURSEJ|9 +S9|4264|DURSEJ|9 +S9|4265|DURSEJ|9 +S9|4266|DURSEJ|9 +S9|4267|DURSEJ|9 +S9|4268|DURSEJ|9 +S9|4269|DURSEJ|9 +S9|4270|DURSEJ|9 +S9|4271|DURSEJ|9 +S9|4272|DURSEJ|9 +S9|4273|DURSEJ|9 +S9|4274|DURSEJ|9 +S9|4275|DURSEJ|9 +S9|4276|DURSEJ|9 +S9|4277|DURSEJ|9 +S9|4278|DURSEJ|9 +S9|4279|DURSEJ|9 +S9|4280|DURSEJ|9 +S9|4281|DURSEJ|9 +S9|4282|DURSEJ|9 +S9|4283|DURSEJ|9 +S9|4284|DURSEJ|9 +S9|4285|DURSEJ|9 +S9|4286|DURSEJ|9 +S9|4287|DURSEJ|9 +S9|4288|DURSEJ|9 +S9|4289|DURSEJ|9 +S9|4290|DURSEJ|9 +S9|4291|DURSEJ|9 +S9|4292|DURSEJ|9 +S9|4293|DURSEJ|9 +S9|4294|DURSEJ|9 +S9|4295|DURSEJ|9 +S9|4296|DURSEJ|9 +S9|4297|DURSEJ|9 +S9|4298|DURSEJ|9 +S9|4299|DURSEJ|9 +S9|4300|DURSEJ|9 +S9|4301|DURSEJ|9 +S9|4302|DURSEJ|9 +S9|4303|DURSEJ|9 +S9|4304|DURSEJ|9 +S9|4305|DURSEJ|9 +S9|4306|DURSEJ|9 +S9|4307|DURSEJ|9 +S9|4308|DURSEJ|9 +S9|4309|DURSEJ|9 +S9|4310|DURSEJ|9 +S9|4311|DURSEJ|9 +S9|4312|DURSEJ|9 +S9|4313|DURSEJ|9 +S9|4314|DURSEJ|9 +S9|4315|DURSEJ|9 +S9|4316|DURSEJ|9 +S9|4317|DURSEJ|9 +S9|4318|DURSEJ|9 +S9|4319|DURSEJ|9 +S9|4320|DURSEJ|9 +S9|4321|DURSEJ|9 +S9|4322|DURSEJ|9 +S9|4323|DURSEJ|9 +S9|4324|DURSEJ|9 +S9|4325|DURSEJ|9 +S9|4326|DURSEJ|9 +S9|4327|DURSEJ|9 +S9|4328|DURSEJ|9 +S9|4329|DURSEJ|9 +S9|4330|DURSEJ|9 +S9|4331|DURSEJ|9 +S9|4332|DURSEJ|9 +S9|4333|DURSEJ|9 +S9|4334|DURSEJ|9 +S9|4335|DURSEJ|9 +S9|4336|DURSEJ|9 +S9|4337|DURSEJ|9 +S9|4338|DURSEJ|9 +S9|4339|DURSEJ|9 +S9|4340|DURSEJ|9 +S9|4341|DURSEJ|9 +S9|4342|DURSEJ|9 +S9|4343|DURSEJ|9 +S9|4344|DURSEJ|9 +S9|4345|DURSEJ|9 +S9|4346|DURSEJ|9 +S9|4347|DURSEJ|9 +S9|4348|DURSEJ|9 +S9|4349|DURSEJ|9 +S9|4350|DURSEJ|9 +S9|4351|DURSEJ|9 +S9|4352|DURSEJ|9 +S9|4353|DURSEJ|9 +S9|4354|DURSEJ|9 +S9|4355|DURSEJ|9 +S9|4356|DURSEJ|9 +S9|4357|DURSEJ|9 +S9|4358|DURSEJ|9 +S9|4359|DURSEJ|9 +S9|4360|DURSEJ|9 +S9|4361|DURSEJ|9 +S9|4362|DURSEJ|9 +S9|4363|DURSEJ|9 +S9|4364|DURSEJ|9 +S9|4365|DURSEJ|9 +S9|4366|DURSEJ|9 +S9|4367|DURSEJ|9 +S9|4368|DURSEJ|9 +S9|4369|DURSEJ|9 +S9|4370|DURSEJ|9 +S9|4371|DURSEJ|9 +S9|4372|DURSEJ|9 +S9|4373|DURSEJ|9 +S9|4374|DURSEJ|9 +S9|4375|DURSEJ|9 +S9|4376|DURSEJ|9 +S9|4377|DURSEJ|9 +S9|4378|DURSEJ|9 +S9|4379|DURSEJ|9 +S9|4380|DURSEJ|9 +S9|4381|DURSEJ|9 +S9|4382|DURSEJ|9 +S9|4383|DURSEJ|9 +S9|4384|DURSEJ|9 +S9|4385|DURSEJ|9 +S9|4386|DURSEJ|9 +S9|4387|DURSEJ|9 +S9|4388|DURSEJ|9 +S9|4389|DURSEJ|9 +S9|4390|DURSEJ|9 +S9|4391|DURSEJ|9 +S9|4392|DURSEJ|9 +S9|4393|DURSEJ|9 +S9|4394|DURSEJ|9 +S9|4395|DURSEJ|9 +S9|4396|DURSEJ|9 +S9|4397|DURSEJ|9 +S9|4398|DURSEJ|9 +S9|4399|DURSEJ|9 +S9|4400|DURSEJ|9 +S9|4401|DURSEJ|9 +S9|4402|DURSEJ|9 +S9|4403|DURSEJ|9 +S9|4404|DURSEJ|9 +S9|4405|DURSEJ|9 +S9|4406|DURSEJ|9 +S9|4407|DURSEJ|9 +S9|4408|DURSEJ|9 +S9|4409|DURSEJ|9 +S9|4410|DURSEJ|9 +S9|4411|DURSEJ|9 +S9|4412|DURSEJ|9 +S9|4413|DURSEJ|9 +S9|4414|DURSEJ|9 +S9|4415|DURSEJ|9 +S9|4416|DURSEJ|9 +S9|4417|DURSEJ|9 +S9|4418|DURSEJ|9 +S9|4419|DURSEJ|9 +S9|4420|DURSEJ|9 +S9|4421|DURSEJ|9 +S9|4422|DURSEJ|9 +S9|4423|DURSEJ|9 +S9|4424|DURSEJ|9 +S9|4425|DURSEJ|9 +S9|4426|DURSEJ|9 +S9|4427|DURSEJ|9 +S9|4428|DURSEJ|9 +S9|4429|DURSEJ|9 +S9|4430|DURSEJ|9 +S9|4431|DURSEJ|9 +S9|4432|DURSEJ|9 +S9|4433|DURSEJ|9 +S9|4434|DURSEJ|9 +S9|4435|DURSEJ|9 +S9|4436|DURSEJ|9 +S9|4437|DURSEJ|9 +S9|4438|DURSEJ|9 +S9|4439|DURSEJ|9 +S9|4440|DURSEJ|9 +S9|4441|DURSEJ|9 +S9|4442|DURSEJ|9 +S9|4443|DURSEJ|9 +S9|4444|DURSEJ|9 +S9|4445|DURSEJ|9 +S9|4446|DURSEJ|9 +S9|4447|DURSEJ|9 +S9|4448|DURSEJ|9 +S9|4449|DURSEJ|9 +S9|4450|DURSEJ|9 +S9|4451|DURSEJ|9 +S9|4452|DURSEJ|9 +S9|4453|DURSEJ|9 +S9|4454|DURSEJ|9 +S9|4455|DURSEJ|9 +S9|4456|DURSEJ|9 +S9|4457|DURSEJ|9 +S9|4458|DURSEJ|9 +S9|4459|DURSEJ|9 +S9|4460|DURSEJ|9 +S9|4461|DURSEJ|9 +S9|4462|DURSEJ|9 +S9|4463|DURSEJ|9 +S9|4464|DURSEJ|9 +S9|4465|DURSEJ|9 +S9|4466|DURSEJ|9 +S9|4467|DURSEJ|9 +S9|4468|DURSEJ|9 +S9|4469|DURSEJ|9 +S9|4470|DURSEJ|9 +S9|4471|DURSEJ|9 +S9|4472|DURSEJ|9 +S9|4473|DURSEJ|9 +S9|4474|DURSEJ|9 +S9|4475|DURSEJ|9 +S9|4476|DURSEJ|9 +S9|4477|DURSEJ|9 +S9|4478|DURSEJ|9 +S9|4479|DURSEJ|9 +S9|4480|DURSEJ|9 +S9|4481|DURSEJ|9 +S9|4482|DURSEJ|9 +S9|4483|DURSEJ|9 +S9|4484|DURSEJ|9 +S9|4485|DURSEJ|9 +S9|4486|DURSEJ|9 +S9|4487|DURSEJ|9 +S9|4488|DURSEJ|9 +S9|4489|DURSEJ|9 +S9|4490|DURSEJ|9 +S9|4491|DURSEJ|9 +S9|4492|DURSEJ|9 +S9|4493|DURSEJ|9 +S9|4494|DURSEJ|9 +S9|4495|DURSEJ|9 +S9|4496|DURSEJ|9 +S9|4497|DURSEJ|9 +S9|4498|DURSEJ|9 +S9|4499|DURSEJ|9 +S9|4500|DURSEJ|9 +S9|4501|DURSEJ|9 +S9|4502|DURSEJ|9 +S9|4503|DURSEJ|9 +S9|4504|DURSEJ|9 +S9|4505|DURSEJ|9 +S9|4506|DURSEJ|9 +S9|4507|DURSEJ|9 +S9|4508|DURSEJ|9 +S9|4509|DURSEJ|9 +S9|4510|DURSEJ|9 +S9|4511|DURSEJ|9 +S9|4512|DURSEJ|9 +S9|4513|DURSEJ|9 +S9|4514|DURSEJ|9 +S9|4515|DURSEJ|9 +S9|4516|DURSEJ|9 +S9|4517|DURSEJ|9 +S9|4518|DURSEJ|9 +S9|4519|DURSEJ|9 +S9|4520|DURSEJ|9 +S9|4521|DURSEJ|9 +S9|4522|DURSEJ|9 +S9|4523|DURSEJ|9 +S9|4524|DURSEJ|9 +S9|4525|DURSEJ|9 +S9|4526|DURSEJ|9 +S9|4527|DURSEJ|9 +S9|4528|DURSEJ|9 +S9|4529|DURSEJ|9 +S9|4530|DURSEJ|9 +S9|4531|DURSEJ|9 +S9|4532|DURSEJ|9 +S9|4533|DURSEJ|9 +S9|4534|DURSEJ|9 +S9|4535|DURSEJ|9 +S9|4536|DURSEJ|9 +S9|4537|DURSEJ|9 +S9|4538|DURSEJ|9 +S9|4539|DURSEJ|9 +S9|4540|DURSEJ|9 +S9|4541|DURSEJ|9 +S9|4542|DURSEJ|9 +S9|4543|DURSEJ|9 +S9|4544|DURSEJ|9 +S9|4545|DURSEJ|9 +S9|4546|DURSEJ|9 +S9|4547|DURSEJ|9 +S9|4548|DURSEJ|9 +S9|4549|DURSEJ|9 +S9|4550|DURSEJ|9 +S9|4551|DURSEJ|9 +S9|4552|DURSEJ|9 +S9|4553|DURSEJ|9 +S9|4554|DURSEJ|9 +S9|4555|DURSEJ|9 +S9|4556|DURSEJ|9 +S9|4557|DURSEJ|9 +S9|4558|DURSEJ|9 +S9|4559|DURSEJ|9 +S9|4560|DURSEJ|9 +S9|4561|DURSEJ|9 +S9|4562|DURSEJ|9 +S9|4563|DURSEJ|9 +S9|4564|DURSEJ|9 +S9|4565|DURSEJ|9 +S9|4566|DURSEJ|9 +S9|4567|DURSEJ|9 +S9|4568|DURSEJ|9 +S9|4569|DURSEJ|9 +S9|4570|DURSEJ|9 +S9|4571|DURSEJ|9 +S9|4572|DURSEJ|9 +S9|4573|DURSEJ|9 +S9|4574|DURSEJ|9 +S9|4575|DURSEJ|9 +S9|4576|DURSEJ|9 +S9|4577|DURSEJ|9 +S9|4578|DURSEJ|9 +S9|4579|DURSEJ|9 +S9|4580|DURSEJ|9 +S9|4581|DURSEJ|9 +S9|4582|DURSEJ|9 +S9|4583|DURSEJ|9 +S9|4584|DURSEJ|9 +S9|4585|DURSEJ|9 +S9|4586|DURSEJ|9 +S9|4587|DURSEJ|9 +S9|4588|DURSEJ|9 +S9|4589|DURSEJ|9 +S9|4590|DURSEJ|9 +S9|4591|DURSEJ|9 +S9|4592|DURSEJ|9 +S9|4593|DURSEJ|9 +S9|4594|DURSEJ|9 +S9|4595|DURSEJ|9 +S9|4596|DURSEJ|9 +S9|4597|DURSEJ|9 +S9|4598|DURSEJ|9 +S9|4599|DURSEJ|9 +S9|4600|DURSEJ|9 +S9|4601|DURSEJ|9 +S9|4602|DURSEJ|9 +S9|4603|DURSEJ|9 +S9|4604|DURSEJ|9 +S9|4605|DURSEJ|9 +S9|4606|DURSEJ|9 +S9|4607|DURSEJ|9 +S9|4608|DURSEJ|9 +S9|4609|DURSEJ|9 +S9|4610|DURSEJ|9 +S9|4611|DURSEJ|9 +S9|4612|DURSEJ|9 +S9|4613|DURSEJ|9 +S9|4614|DURSEJ|9 +S9|4615|DURSEJ|9 +S9|4616|DURSEJ|9 +S9|4617|DURSEJ|9 +S9|4618|DURSEJ|9 +S9|4619|DURSEJ|9 +S9|4620|DURSEJ|9 +S9|4621|DURSEJ|9 +S9|4622|DURSEJ|9 +S9|4623|DURSEJ|9 +S9|4624|DURSEJ|9 +S9|4625|DURSEJ|9 +S9|4626|DURSEJ|9 +S9|4627|DURSEJ|9 +S9|4628|DURSEJ|9 +S9|4629|DURSEJ|9 +S9|4630|DURSEJ|9 +S9|4631|DURSEJ|9 +S9|4632|DURSEJ|9 +S9|4633|DURSEJ|9 +S9|4634|DURSEJ|9 +S9|4635|DURSEJ|9 +S9|4636|DURSEJ|9 +S9|4637|DURSEJ|9 +S9|4638|DURSEJ|9 +S9|4639|DURSEJ|9 +S9|4640|DURSEJ|9 +S9|4641|DURSEJ|9 +S9|4642|DURSEJ|9 +S9|4643|DURSEJ|9 +S9|4644|DURSEJ|9 +S9|4645|DURSEJ|9 +S9|4646|DURSEJ|9 +S9|4647|DURSEJ|9 +S9|4648|DURSEJ|9 +S9|4649|DURSEJ|9 +S9|4650|DURSEJ|9 +S9|4651|DURSEJ|9 +S9|4652|DURSEJ|9 +S9|4653|DURSEJ|9 +S9|4654|DURSEJ|9 +S9|4655|DURSEJ|9 +S9|4656|DURSEJ|9 +S9|4657|DURSEJ|9 +S9|4658|DURSEJ|9 +S9|4659|DURSEJ|9 +S9|4660|DURSEJ|9 +S9|4661|DURSEJ|9 +S9|4662|DURSEJ|9 +S9|4663|DURSEJ|9 +S9|4664|DURSEJ|9 +S9|4665|DURSEJ|9 +S9|4666|DURSEJ|9 +S9|4667|DURSEJ|9 +S9|4668|DURSEJ|9 +S9|4669|DURSEJ|9 +S9|4670|DURSEJ|9 +S9|4671|DURSEJ|9 +S9|4672|DURSEJ|9 +S9|4673|DURSEJ|9 +S9|4674|DURSEJ|9 +S9|4675|DURSEJ|9 +S9|4676|DURSEJ|9 +S9|4677|DURSEJ|9 +S9|4678|DURSEJ|9 +S9|4679|DURSEJ|9 +S9|4680|DURSEJ|9 +S9|4681|DURSEJ|9 +S9|4682|DURSEJ|9 +S9|4683|DURSEJ|9 +S9|4684|DURSEJ|9 +S9|4685|DURSEJ|9 +S9|4686|DURSEJ|9 +S9|4687|DURSEJ|9 +S9|4688|DURSEJ|9 +S9|4689|DURSEJ|9 +S9|4690|DURSEJ|9 +S9|4691|DURSEJ|9 +S9|4692|DURSEJ|9 +S9|4693|DURSEJ|9 +S9|4694|DURSEJ|9 +S9|4695|DURSEJ|9 +S9|4696|DURSEJ|9 +S9|4697|DURSEJ|9 +S9|4698|DURSEJ|9 +S9|4699|DURSEJ|9 +S9|4700|DURSEJ|9 +S9|4701|DURSEJ|9 +S9|4702|DURSEJ|9 +S9|4703|DURSEJ|9 +S9|4704|DURSEJ|9 +S9|4705|DURSEJ|9 +S9|4706|DURSEJ|9 +S9|4707|DURSEJ|9 +S9|4708|DURSEJ|9 +S9|4709|DURSEJ|9 +S9|4710|DURSEJ|9 +S9|4711|DURSEJ|9 +S9|4712|DURSEJ|9 +S9|4713|DURSEJ|9 +S9|4714|DURSEJ|9 +S9|4715|DURSEJ|9 +S9|4716|DURSEJ|9 +S9|4717|DURSEJ|9 +S9|4718|DURSEJ|9 +S9|4719|DURSEJ|9 +S9|4720|DURSEJ|9 +S9|4721|DURSEJ|9 +S9|4722|DURSEJ|9 +S9|4723|DURSEJ|9 +S9|4724|DURSEJ|9 +S9|4725|DURSEJ|9 +S9|4726|DURSEJ|9 +S9|4727|DURSEJ|9 +S9|4728|DURSEJ|9 +S9|4729|DURSEJ|9 +S9|4730|DURSEJ|9 +S9|4731|DURSEJ|9 +S9|4732|DURSEJ|9 +S9|4733|DURSEJ|9 +S9|4734|DURSEJ|9 +S9|4735|DURSEJ|9 +S9|4736|DURSEJ|9 +S9|4737|DURSEJ|9 +S9|4738|DURSEJ|9 +S9|4739|DURSEJ|9 +S9|4740|DURSEJ|9 +S9|4741|DURSEJ|9 +S9|4742|DURSEJ|9 +S9|4743|DURSEJ|9 +S9|4744|DURSEJ|9 +S9|4745|DURSEJ|9 +S9|4746|DURSEJ|9 +S9|4747|DURSEJ|9 +S9|4748|DURSEJ|9 +S9|4749|DURSEJ|9 +S9|4750|DURSEJ|9 +S9|4751|DURSEJ|9 +S9|4752|DURSEJ|9 +S9|4753|DURSEJ|9 +S9|4754|DURSEJ|9 +S9|4755|DURSEJ|9 +S9|4756|DURSEJ|9 +S9|4757|DURSEJ|9 +S9|4758|DURSEJ|9 +S9|4759|DURSEJ|9 +S9|4760|DURSEJ|9 +S9|4761|DURSEJ|9 +S9|4762|DURSEJ|9 +S9|4763|DURSEJ|9 +S9|4764|DURSEJ|9 +S9|4765|DURSEJ|9 +S9|4766|DURSEJ|9 +S9|4767|DURSEJ|9 +S9|4768|DURSEJ|9 +S9|4769|DURSEJ|9 +S9|4770|DURSEJ|9 +S9|4771|DURSEJ|9 +S9|4772|DURSEJ|9 +S9|4773|DURSEJ|9 +S9|4774|DURSEJ|9 +S9|4775|DURSEJ|9 +S9|4776|DURSEJ|9 +S9|4777|DURSEJ|9 +S9|4778|DURSEJ|9 +S9|4779|DURSEJ|9 +S9|4780|DURSEJ|9 +S9|4781|DURSEJ|9 +S9|4782|DURSEJ|9 +S9|4783|DURSEJ|9 +S9|4784|DURSEJ|9 +S9|4785|DURSEJ|9 +S9|4786|DURSEJ|9 +S9|4787|DURSEJ|9 +S9|4788|DURSEJ|9 +S9|4789|DURSEJ|9 +S9|4790|DURSEJ|9 +S9|4791|DURSEJ|9 +S9|4792|DURSEJ|9 +S9|4793|DURSEJ|9 +S9|4794|DURSEJ|9 +S9|4795|DURSEJ|9 +S9|4796|DURSEJ|9 +S9|4797|DURSEJ|9 +S9|4798|DURSEJ|9 +S9|4799|DURSEJ|9 +S9|4800|DURSEJ|9 +S9|4801|DURSEJ|9 +S9|4802|DURSEJ|9 +S9|4803|DURSEJ|9 +S9|4804|DURSEJ|9 +S9|4805|DURSEJ|9 +S9|4806|DURSEJ|9 +S9|4807|DURSEJ|9 +S9|4808|DURSEJ|9 +S9|4809|DURSEJ|9 +S9|4810|DURSEJ|9 +S9|4811|DURSEJ|9 +S9|4812|DURSEJ|9 +S9|4813|DURSEJ|9 +S9|4814|DURSEJ|9 +S9|4815|DURSEJ|9 +S9|4816|DURSEJ|9 +S9|4817|DURSEJ|9 +S9|4818|DURSEJ|9 +S9|4819|DURSEJ|9 +S9|4820|DURSEJ|9 +S9|4821|DURSEJ|9 +S9|4822|DURSEJ|9 +S9|4823|DURSEJ|9 +S9|4824|DURSEJ|9 +S9|4825|DURSEJ|9 +S9|4826|DURSEJ|9 +S9|4827|DURSEJ|9 +S9|4828|DURSEJ|9 +S9|4829|DURSEJ|9 +S9|4830|DURSEJ|9 +S9|4831|DURSEJ|9 +S9|4832|DURSEJ|9 +S9|4833|DURSEJ|9 +S9|4834|DURSEJ|9 +S9|4835|DURSEJ|9 +S9|4836|DURSEJ|9 +S9|4837|DURSEJ|9 +S9|4838|DURSEJ|9 +S9|4839|DURSEJ|9 +S9|4840|DURSEJ|9 +S9|4841|DURSEJ|9 +S9|4842|DURSEJ|9 +S9|4843|DURSEJ|9 +S9|4844|DURSEJ|9 +S9|4845|DURSEJ|9 +S9|4846|DURSEJ|9 +S9|4847|DURSEJ|9 +S9|4848|DURSEJ|9 +S9|4849|DURSEJ|9 +S9|4850|DURSEJ|9 +S9|4851|DURSEJ|9 +S9|4852|DURSEJ|9 +S9|4853|DURSEJ|9 +S9|4854|DURSEJ|9 +S9|4855|DURSEJ|9 +S9|4856|DURSEJ|9 +S9|4857|DURSEJ|9 +S9|4858|DURSEJ|9 +S9|4859|DURSEJ|9 +S9|4860|DURSEJ|9 +S9|4861|DURSEJ|9 +S9|4862|DURSEJ|9 +S9|4863|DURSEJ|9 +S9|4864|DURSEJ|9 +S9|4865|DURSEJ|9 +S9|4866|DURSEJ|9 +S9|4867|DURSEJ|9 +S9|4868|DURSEJ|9 +S9|4869|DURSEJ|9 +S9|4870|DURSEJ|9 +S9|4871|DURSEJ|9 +S9|4872|DURSEJ|9 +S9|4873|DURSEJ|9 +S9|4874|DURSEJ|9 +S9|4875|DURSEJ|9 +S9|4876|DURSEJ|9 +S9|4877|DURSEJ|9 +S9|4878|DURSEJ|9 +S9|4879|DURSEJ|9 +S9|4880|DURSEJ|9 +S9|4881|DURSEJ|9 +S9|4882|DURSEJ|9 +S9|4883|DURSEJ|9 +S9|4884|DURSEJ|9 +S9|4885|DURSEJ|9 +S9|4886|DURSEJ|9 +S9|4887|DURSEJ|9 +S9|4888|DURSEJ|9 +S9|4889|DURSEJ|9 +S9|4890|DURSEJ|9 +S9|4891|DURSEJ|9 +S9|4892|DURSEJ|9 +S9|4893|DURSEJ|9 +S9|4894|DURSEJ|9 +S9|4895|DURSEJ|9 +S9|4896|DURSEJ|9 +S9|4897|DURSEJ|9 +S9|4898|DURSEJ|9 +S9|4899|DURSEJ|9 +S9|4900|DURSEJ|9 +S9|4901|DURSEJ|9 +S9|4902|DURSEJ|9 +S9|4903|DURSEJ|9 +S9|4904|DURSEJ|9 +S9|4905|DURSEJ|9 +S9|4906|DURSEJ|9 +S9|4907|DURSEJ|9 +S9|4908|DURSEJ|9 +S9|4909|DURSEJ|9 +S9|4910|DURSEJ|9 +S9|4911|DURSEJ|9 +S9|4912|DURSEJ|9 +S9|4913|DURSEJ|9 +S9|4914|DURSEJ|9 +S9|4915|DURSEJ|9 +S9|4916|DURSEJ|9 +S9|4917|DURSEJ|9 +S9|4918|DURSEJ|9 +S9|4919|DURSEJ|9 +S9|4920|DURSEJ|9 +S9|4921|DURSEJ|9 +S9|4922|DURSEJ|9 +S9|4923|DURSEJ|9 +S9|4924|DURSEJ|9 +S9|4925|DURSEJ|9 +S9|4926|DURSEJ|9 +S9|4927|DURSEJ|9 +S9|4928|DURSEJ|9 +S9|4929|DURSEJ|9 +S9|4930|DURSEJ|9 +S9|4931|DURSEJ|9 +S9|4932|DURSEJ|9 +S9|4933|DURSEJ|9 +S9|4934|DURSEJ|9 +S9|4935|DURSEJ|9 +S9|4936|DURSEJ|9 +S9|4937|DURSEJ|9 +S9|4938|DURSEJ|9 +S9|4939|DURSEJ|9 +S9|4940|DURSEJ|9 +S9|4941|DURSEJ|9 +S9|4942|DURSEJ|9 +S9|4943|DURSEJ|9 +S9|4944|DURSEJ|9 +S9|4945|DURSEJ|9 +S9|4946|DURSEJ|9 +S9|4947|DURSEJ|9 +S9|4948|DURSEJ|9 +S9|4949|DURSEJ|9 +S9|4950|DURSEJ|9 +S9|4951|DURSEJ|9 +S9|4952|DURSEJ|9 +S9|4953|DURSEJ|9 +S9|4954|DURSEJ|9 +S9|4955|DURSEJ|9 +S9|4956|DURSEJ|9 +S9|4957|DURSEJ|9 +S9|4958|DURSEJ|9 +S9|4959|DURSEJ|9 +S9|4960|DURSEJ|9 +S9|4961|DURSEJ|9 +S9|4962|DURSEJ|9 +S9|4963|DURSEJ|9 +S9|4964|DURSEJ|9 +S9|4965|DURSEJ|9 +S9|4966|DURSEJ|9 +S9|4967|DURSEJ|9 +S9|4968|DURSEJ|9 +S9|4969|DURSEJ|9 +S9|4970|DURSEJ|9 +S9|4971|DURSEJ|9 +S9|4972|DURSEJ|9 +S9|4973|DURSEJ|9 +S9|4974|DURSEJ|9 +S9|4975|DURSEJ|9 +S9|4976|DURSEJ|9 +S9|4977|DURSEJ|9 +S9|4978|DURSEJ|9 +S9|4979|DURSEJ|9 +S9|4980|DURSEJ|9 +S9|4981|DURSEJ|9 +S9|4982|DURSEJ|9 +S9|4983|DURSEJ|9 +S9|4984|DURSEJ|9 +S9|4985|DURSEJ|9 +S9|4986|DURSEJ|9 +S9|4987|DURSEJ|9 +S9|4988|DURSEJ|9 +S9|4989|DURSEJ|9 +S9|4990|DURSEJ|9 +S9|4991|DURSEJ|9 +S9|4992|DURSEJ|9 +S9|4993|DURSEJ|9 +S9|4994|DURSEJ|9 +S9|4995|DURSEJ|9 +S9|4996|DURSEJ|9 +S9|4997|DURSEJ|9 +S9|4998|DURSEJ|9 +S9|4999|DURSEJ|9 +S9|5000|DURSEJ|9 +S9|5001|DURSEJ|9 +S9|5002|DURSEJ|9 +S9|5003|DURSEJ|9 +S9|5004|DURSEJ|9 +S9|5005|DURSEJ|9 +S9|5006|DURSEJ|9 +S9|5007|DURSEJ|9 +S9|5008|DURSEJ|9 +S9|5009|DURSEJ|9 +S9|5010|DURSEJ|9 +S9|5011|DURSEJ|9 +S9|5012|DURSEJ|9 +S9|5013|DURSEJ|9 +S9|5014|DURSEJ|9 +S9|5015|DURSEJ|9 +S9|5016|DURSEJ|9 +S9|5017|DURSEJ|9 +S9|5018|DURSEJ|9 +S9|5019|DURSEJ|9 +S9|5020|DURSEJ|9 +S9|5021|DURSEJ|9 +S9|5022|DURSEJ|9 +S9|5023|DURSEJ|9 +S9|5024|DURSEJ|9 +S9|5025|DURSEJ|9 +S9|5026|DURSEJ|9 +S9|5027|DURSEJ|9 +S9|5028|DURSEJ|9 +S9|5029|DURSEJ|9 +S9|5030|DURSEJ|9 +S9|5031|DURSEJ|9 +S9|5032|DURSEJ|9 +S9|5033|DURSEJ|9 +S9|5034|DURSEJ|9 +S9|5035|DURSEJ|9 +S9|5036|DURSEJ|9 +S9|5037|DURSEJ|9 +S9|5038|DURSEJ|9 +S9|5039|DURSEJ|9 +S9|5040|DURSEJ|9 +S9|5041|DURSEJ|9 +S9|5042|DURSEJ|9 +S9|5043|DURSEJ|9 +S9|5044|DURSEJ|9 +S9|5045|DURSEJ|9 +S9|5046|DURSEJ|9 +S9|5047|DURSEJ|9 +S9|5048|DURSEJ|9 +S9|5049|DURSEJ|9 +S9|5050|DURSEJ|9 +S9|5051|DURSEJ|9 +S9|5052|DURSEJ|9 +S9|5053|DURSEJ|9 +S9|5054|DURSEJ|9 +S9|5055|DURSEJ|9 +S9|5056|DURSEJ|9 +S9|5057|DURSEJ|9 +S9|5058|DURSEJ|9 +S9|5059|DURSEJ|9 +S9|5060|DURSEJ|9 +S9|5061|DURSEJ|9 +S9|5062|DURSEJ|9 +S9|5063|DURSEJ|9 +S9|5064|DURSEJ|9 +S9|5065|DURSEJ|9 +S9|5066|DURSEJ|9 +S9|5067|DURSEJ|9 +S9|5068|DURSEJ|9 +S9|5069|DURSEJ|9 +S9|5070|DURSEJ|9 +S9|5071|DURSEJ|9 +S9|5072|DURSEJ|9 +S9|5073|DURSEJ|9 +S9|5074|DURSEJ|9 +S9|5075|DURSEJ|9 +S9|5076|DURSEJ|9 +S9|5077|DURSEJ|9 +S9|5078|DURSEJ|9 +S9|5079|DURSEJ|9 +S9|5080|DURSEJ|9 +S9|5081|DURSEJ|9 +S9|5082|DURSEJ|9 +S9|5083|DURSEJ|9 +S9|5084|DURSEJ|9 +S9|5085|DURSEJ|9 +S9|5086|DURSEJ|9 +S9|5087|DURSEJ|9 +S9|5088|DURSEJ|9 +S9|5089|DURSEJ|9 +S9|5090|DURSEJ|9 +S9|5091|DURSEJ|9 +S9|5092|DURSEJ|9 +S9|5093|DURSEJ|9 +S9|5094|DURSEJ|9 +S9|5095|DURSEJ|9 +S9|5096|DURSEJ|9 +S9|5097|DURSEJ|9 +S9|5098|DURSEJ|9 +S9|5099|DURSEJ|9 +S9|5100|DURSEJ|9 +S9|5101|DURSEJ|9 +S9|5102|DURSEJ|9 +S9|5103|DURSEJ|9 +S9|5104|DURSEJ|9 +S9|5105|DURSEJ|9 +S9|5106|DURSEJ|9 +S9|5107|DURSEJ|9 +S9|5108|DURSEJ|9 +S9|5109|DURSEJ|9 +S9|5110|DURSEJ|9 +S9|5111|DURSEJ|9 +S9|5112|DURSEJ|9 +S9|5113|DURSEJ|9 +S9|5114|DURSEJ|9 +S9|5115|DURSEJ|9 +S9|5116|DURSEJ|9 +S9|5117|DURSEJ|9 +S9|5118|DURSEJ|9 +S9|5119|DURSEJ|9 +S9|5120|DURSEJ|9 +S9|5121|DURSEJ|9 +S9|5122|DURSEJ|9 +S9|5123|DURSEJ|9 +S9|5124|DURSEJ|9 +S9|5125|DURSEJ|9 +S9|5126|DURSEJ|9 +S9|5127|DURSEJ|9 +S9|5128|DURSEJ|9 +S9|5129|DURSEJ|9 +S9|5130|DURSEJ|9 +S9|5131|DURSEJ|9 +S9|5132|DURSEJ|9 +S9|5133|DURSEJ|9 +S9|5134|DURSEJ|9 +S9|5135|DURSEJ|9 +S9|5136|DURSEJ|9 +S9|5137|DURSEJ|9 +S9|5138|DURSEJ|9 +S9|5139|DURSEJ|9 +S9|5140|DURSEJ|9 +S9|5141|DURSEJ|9 +S9|5142|DURSEJ|9 +S9|5143|DURSEJ|9 +S9|5144|DURSEJ|9 +S9|5145|DURSEJ|9 +S9|5146|DURSEJ|9 +S9|5147|DURSEJ|9 +S9|5148|DURSEJ|9 +S9|5149|DURSEJ|9 +S9|5150|DURSEJ|9 +S9|5151|DURSEJ|9 +S9|5152|DURSEJ|9 +S9|5153|DURSEJ|9 +S9|5154|DURSEJ|9 +S9|5155|DURSEJ|9 +S9|5156|DURSEJ|9 +S9|5157|DURSEJ|9 +S9|5158|DURSEJ|9 +S9|5159|DURSEJ|9 +S9|5160|DURSEJ|9 +S9|5161|DURSEJ|9 +S9|5162|DURSEJ|9 +S9|5163|DURSEJ|9 +S9|5164|DURSEJ|9 +S9|5165|DURSEJ|9 +S9|5166|DURSEJ|9 +S9|5167|DURSEJ|9 +S9|5168|DURSEJ|9 +S9|5169|DURSEJ|9 +S9|5170|DURSEJ|9 +S9|5171|DURSEJ|9 +S9|5172|DURSEJ|9 +S9|5173|DURSEJ|9 +S9|5174|DURSEJ|9 +S9|5175|DURSEJ|9 +S9|5176|DURSEJ|9 +S9|5177|DURSEJ|9 +S9|5178|DURSEJ|9 +S9|5179|DURSEJ|9 +S9|5180|DURSEJ|9 +S9|5181|DURSEJ|9 +S9|5182|DURSEJ|9 +S9|5183|DURSEJ|9 +S9|5184|DURSEJ|9 +S9|5185|DURSEJ|9 +S9|5186|DURSEJ|9 +S9|5187|DURSEJ|9 +S9|5188|DURSEJ|9 +S9|5189|DURSEJ|9 +S9|5190|DURSEJ|9 +S9|5191|DURSEJ|9 +S9|5192|DURSEJ|9 +S9|5193|DURSEJ|9 +S9|5194|DURSEJ|9 +S9|5195|DURSEJ|9 +S9|5196|DURSEJ|9 +S9|5197|DURSEJ|9 +S9|5198|DURSEJ|9 +S9|5199|DURSEJ|9 +S9|5200|DURSEJ|9 +S9|5201|DURSEJ|9 +S9|5202|DURSEJ|9 +S9|5203|DURSEJ|9 +S9|5204|DURSEJ|9 +S9|5205|DURSEJ|9 +S9|5206|DURSEJ|9 +S9|5207|DURSEJ|9 +S9|5208|DURSEJ|9 +S9|5209|DURSEJ|9 +S9|5210|DURSEJ|9 +S9|5211|DURSEJ|9 +S9|5212|DURSEJ|9 +S9|5213|DURSEJ|9 +S9|5214|DURSEJ|9 +S9|5215|DURSEJ|9 +S9|5216|DURSEJ|9 +S9|5217|DURSEJ|9 +S9|5218|DURSEJ|9 +S9|5219|DURSEJ|9 +S9|5220|DURSEJ|9 +S9|5221|DURSEJ|9 +S9|5222|DURSEJ|9 +S9|5223|DURSEJ|9 +S9|5224|DURSEJ|9 +S9|5225|DURSEJ|9 +S9|5226|DURSEJ|9 +S9|5227|DURSEJ|9 +S9|5228|DURSEJ|9 +S9|5229|DURSEJ|9 +S9|5230|DURSEJ|9 +S9|5231|DURSEJ|9 +S9|5232|DURSEJ|9 +S9|5233|DURSEJ|9 +S9|5234|DURSEJ|9 +S9|5235|DURSEJ|9 +S9|5236|DURSEJ|9 +S9|5237|DURSEJ|9 +S9|5238|DURSEJ|9 +S9|5239|DURSEJ|9 +S9|5240|DURSEJ|9 +S9|5241|DURSEJ|9 +S9|5242|DURSEJ|9 +S9|5243|DURSEJ|9 +S9|5244|DURSEJ|9 +S9|5245|DURSEJ|9 +S9|5246|DURSEJ|9 +S9|5247|DURSEJ|9 +S9|5248|DURSEJ|9 +S9|5249|DURSEJ|9 +S9|5250|DURSEJ|9 +S9|5251|DURSEJ|9 +S9|5252|DURSEJ|9 +S9|5253|DURSEJ|9 +S9|5254|DURSEJ|9 +S9|5255|DURSEJ|9 +S9|5256|DURSEJ|9 +S9|5257|DURSEJ|9 +S9|5258|DURSEJ|9 +S9|5259|DURSEJ|9 +S9|5260|DURSEJ|9 +S9|5261|DURSEJ|9 +S9|5262|DURSEJ|9 +S9|5263|DURSEJ|9 +S9|5264|DURSEJ|9 +S9|5265|DURSEJ|9 +S9|5266|DURSEJ|9 +S9|5267|DURSEJ|9 +S9|5268|DURSEJ|9 +S9|5269|DURSEJ|9 +S9|5270|DURSEJ|9 +S9|5271|DURSEJ|9 +S9|5272|DURSEJ|9 +S9|5273|DURSEJ|9 +S9|5274|DURSEJ|9 +S9|5275|DURSEJ|9 +S9|5276|DURSEJ|9 +S9|5277|DURSEJ|9 +S9|5278|DURSEJ|9 +S9|5279|DURSEJ|9 +S9|5280|DURSEJ|9 +S9|5281|DURSEJ|9 +S9|5282|DURSEJ|9 +S9|5283|DURSEJ|9 +S9|5284|DURSEJ|9 +S9|5285|DURSEJ|9 +S9|5286|DURSEJ|9 +S9|5287|DURSEJ|9 +S9|5288|DURSEJ|9 +S9|5289|DURSEJ|9 +S9|5290|DURSEJ|9 +S9|5291|DURSEJ|9 +S9|5292|DURSEJ|9 +S9|5293|DURSEJ|9 +S9|5294|DURSEJ|9 +S9|5295|DURSEJ|9 +S9|5296|DURSEJ|9 +S9|5297|DURSEJ|9 +S9|5298|DURSEJ|9 +S9|5299|DURSEJ|9 +S9|5300|DURSEJ|9 +S9|5301|DURSEJ|9 +S9|5302|DURSEJ|9 +S9|5303|DURSEJ|9 +S9|5304|DURSEJ|9 +S9|5305|DURSEJ|9 +S9|5306|DURSEJ|9 +S9|5307|DURSEJ|9 +S9|5308|DURSEJ|9 +S9|5309|DURSEJ|9 +S9|5310|DURSEJ|9 +S9|5311|DURSEJ|9 +S9|5312|DURSEJ|9 +S9|5313|DURSEJ|9 +S9|5314|DURSEJ|9 +S9|5315|DURSEJ|9 +S9|5316|DURSEJ|9 +S9|5317|DURSEJ|9 +S9|5318|DURSEJ|9 +S9|5319|DURSEJ|9 +S9|5320|DURSEJ|9 +S9|5321|DURSEJ|9 +S9|5322|DURSEJ|9 +S9|5323|DURSEJ|9 +S9|5324|DURSEJ|9 +S9|5325|DURSEJ|9 +S9|5326|DURSEJ|9 +S9|5327|DURSEJ|9 +S9|5328|DURSEJ|9 +S9|5329|DURSEJ|9 +S9|5330|DURSEJ|9 +S9|5331|DURSEJ|9 +S9|5332|DURSEJ|9 +S9|5333|DURSEJ|9 +S9|5334|DURSEJ|9 +S9|5335|DURSEJ|9 +S9|5336|DURSEJ|9 +S9|5337|DURSEJ|9 +S9|5338|DURSEJ|9 +S9|5339|DURSEJ|9 +S9|5340|DURSEJ|9 +S9|5341|DURSEJ|9 +S9|5342|DURSEJ|9 +S9|5343|DURSEJ|9 +S9|5344|DURSEJ|9 +S9|5345|DURSEJ|9 +S9|5346|DURSEJ|9 +S9|5347|DURSEJ|9 +S9|5348|DURSEJ|9 +S9|5349|DURSEJ|9 +S9|5350|DURSEJ|9 +S9|5351|DURSEJ|9 +S9|5352|DURSEJ|9 +S9|5353|DURSEJ|9 +S9|5354|DURSEJ|9 +S9|5355|DURSEJ|9 +S9|5356|DURSEJ|9 +S9|5357|DURSEJ|9 +S9|5358|DURSEJ|9 +S9|5359|DURSEJ|9 +S9|5360|DURSEJ|9 +S9|5361|DURSEJ|9 +S9|5362|DURSEJ|9 +S9|5363|DURSEJ|9 +S9|5364|DURSEJ|9 +S9|5365|DURSEJ|9 +S9|5366|DURSEJ|9 +S9|5367|DURSEJ|9 +S9|5368|DURSEJ|9 +S9|5369|DURSEJ|9 +S9|5370|DURSEJ|9 +S9|5371|DURSEJ|9 +S9|5372|DURSEJ|9 +S9|5373|DURSEJ|9 +S9|5374|DURSEJ|9 +S9|5375|DURSEJ|9 +S9|5376|DURSEJ|9 +S9|5377|DURSEJ|9 +S9|5378|DURSEJ|9 +S9|5379|DURSEJ|9 +S9|5380|DURSEJ|9 +S9|5381|DURSEJ|9 +S9|5382|DURSEJ|9 +S9|5383|DURSEJ|9 +S9|5384|DURSEJ|9 +S9|5385|DURSEJ|9 +S9|5386|DURSEJ|9 +S9|5387|DURSEJ|9 +S9|5388|DURSEJ|9 +S9|5389|DURSEJ|9 +S9|5390|DURSEJ|9 +S9|5391|DURSEJ|9 +S9|5392|DURSEJ|9 +S9|5393|DURSEJ|9 +S9|5394|DURSEJ|9 +S9|5395|DURSEJ|9 +S9|5396|DURSEJ|9 +S9|5397|DURSEJ|9 +S9|5398|DURSEJ|9 +S9|5399|DURSEJ|9 +S9|5400|DURSEJ|9 +S9|5401|DURSEJ|9 +S9|5402|DURSEJ|9 +S9|5403|DURSEJ|9 +S9|5404|DURSEJ|9 +S9|5405|DURSEJ|9 +S9|5406|DURSEJ|9 +S9|5407|DURSEJ|9 +S9|5408|DURSEJ|9 +S9|5409|DURSEJ|9 +S9|5410|DURSEJ|9 +S9|5411|DURSEJ|9 +S9|5412|DURSEJ|9 +S9|5413|DURSEJ|9 +S9|5414|DURSEJ|9 +S9|5415|DURSEJ|9 +S9|5416|DURSEJ|9 +S9|5417|DURSEJ|9 +S9|5418|DURSEJ|9 +S9|5419|DURSEJ|9 +S9|5420|DURSEJ|9 +S9|5421|DURSEJ|9 +S9|5422|DURSEJ|9 +S9|5423|DURSEJ|9 +S9|5424|DURSEJ|9 +S9|5425|DURSEJ|9 +S9|5426|DURSEJ|9 +S9|5427|DURSEJ|9 +S9|5428|DURSEJ|9 +S9|5429|DURSEJ|9 +S9|5430|DURSEJ|9 +S9|5431|DURSEJ|9 +S9|5432|DURSEJ|9 +S9|5433|DURSEJ|9 +S9|5434|DURSEJ|9 +S9|5435|DURSEJ|9 +S9|5436|DURSEJ|9 +S9|5437|DURSEJ|9 +S9|5438|DURSEJ|9 +S9|5439|DURSEJ|9 +S9|5440|DURSEJ|9 +S9|5441|DURSEJ|9 +S9|5442|DURSEJ|9 +S9|5443|DURSEJ|9 +S9|5444|DURSEJ|9 +S9|5445|DURSEJ|9 +S9|5446|DURSEJ|9 +S9|5447|DURSEJ|9 +S9|5448|DURSEJ|9 +S9|5449|DURSEJ|9 +S9|5450|DURSEJ|9 +S9|5451|DURSEJ|9 +S9|5452|DURSEJ|9 +S9|5453|DURSEJ|9 +S9|5454|DURSEJ|9 +S9|5455|DURSEJ|9 +S9|5456|DURSEJ|9 +S9|5457|DURSEJ|9 +S9|5458|DURSEJ|9 +S9|5459|DURSEJ|9 +S9|5460|DURSEJ|9 +S9|5461|DURSEJ|9 +S9|5462|DURSEJ|9 +S9|5463|DURSEJ|9 +S9|5464|DURSEJ|9 +S9|5465|DURSEJ|9 +S9|5466|DURSEJ|9 +S9|5467|DURSEJ|9 +S9|5468|DURSEJ|9 +S9|5469|DURSEJ|9 +S9|5470|DURSEJ|9 +S9|5471|DURSEJ|9 +S9|5472|DURSEJ|9 +S9|5473|DURSEJ|9 +S9|5474|DURSEJ|9 +S9|5475|DURSEJ|9 +S9|5476|DURSEJ|9 +S9|5477|DURSEJ|9 +S9|5478|DURSEJ|9 +S9|5479|DURSEJ|9 +S9|5480|DURSEJ|9 +S9|5481|DURSEJ|9 +S9|5482|DURSEJ|9 +S9|5483|DURSEJ|9 +S9|5484|DURSEJ|9 +S9|5485|DURSEJ|9 +S9|5486|DURSEJ|9 +S9|5487|DURSEJ|9 +S9|5488|DURSEJ|9 +S9|5489|DURSEJ|9 +S9|5490|DURSEJ|9 +S9|5491|DURSEJ|9 +S9|5492|DURSEJ|9 +S9|5493|DURSEJ|9 +S9|5494|DURSEJ|9 +S9|5495|DURSEJ|9 +S9|5496|DURSEJ|9 +S9|5497|DURSEJ|9 +S9|5498|DURSEJ|9 +S9|5499|DURSEJ|9 +S9|5500|DURSEJ|9 +S9|5501|DURSEJ|9 +S9|5502|DURSEJ|9 +S9|5503|DURSEJ|9 +S9|5504|DURSEJ|9 +S9|5505|DURSEJ|9 +S9|5506|DURSEJ|9 +S9|5507|DURSEJ|9 +S9|5508|DURSEJ|9 +S9|5509|DURSEJ|9 +S9|5510|DURSEJ|9 +S9|5511|DURSEJ|9 +S9|5512|DURSEJ|9 +S9|5513|DURSEJ|9 +S9|5514|DURSEJ|9 +S9|5515|DURSEJ|9 +S9|5516|DURSEJ|9 +S9|5517|DURSEJ|9 +S9|5518|DURSEJ|9 +S9|5519|DURSEJ|9 +S9|5520|DURSEJ|9 +S9|5521|DURSEJ|9 +S9|5522|DURSEJ|9 +S9|5523|DURSEJ|9 +S9|5524|DURSEJ|9 +S9|5525|DURSEJ|9 +S9|5526|DURSEJ|9 +S9|5527|DURSEJ|9 +S9|5528|DURSEJ|9 +S9|5529|DURSEJ|9 +S9|5530|DURSEJ|9 +S9|5531|DURSEJ|9 +S9|5532|DURSEJ|9 +S9|5533|DURSEJ|9 +S9|5534|DURSEJ|9 +S9|5535|DURSEJ|9 +S9|5536|DURSEJ|9 +S9|5537|DURSEJ|9 +S9|5538|DURSEJ|9 +S9|5539|DURSEJ|9 +S9|5540|DURSEJ|9 +S9|5541|DURSEJ|9 +S9|5542|DURSEJ|9 +S9|5543|DURSEJ|9 +S9|5544|DURSEJ|9 +S9|5545|DURSEJ|9 +S9|5546|DURSEJ|9 +S9|5547|DURSEJ|9 +S9|5548|DURSEJ|9 +S9|5549|DURSEJ|9 +S9|5550|DURSEJ|9 +S9|5551|DURSEJ|9 +S9|5552|DURSEJ|9 +S9|5553|DURSEJ|9 +S9|5554|DURSEJ|9 +S9|5555|DURSEJ|9 +S9|5556|DURSEJ|9 +S9|5557|DURSEJ|9 +S9|5558|DURSEJ|9 +S9|5559|DURSEJ|9 +S9|5560|DURSEJ|9 +S9|5561|DURSEJ|9 +S9|5562|DURSEJ|9 +S9|5563|DURSEJ|9 +S9|5564|DURSEJ|9 +S9|5565|DURSEJ|9 +S9|5566|DURSEJ|9 +S9|5567|DURSEJ|9 +S9|5568|DURSEJ|9 +S9|5569|DURSEJ|9 +S9|5570|DURSEJ|9 +S9|5571|DURSEJ|9 +S9|5572|DURSEJ|9 +S9|5573|DURSEJ|9 +S9|5574|DURSEJ|9 +S9|5575|DURSEJ|9 +S9|5576|DURSEJ|9 +S9|5577|DURSEJ|9 +S9|5578|DURSEJ|9 +S9|5579|DURSEJ|9 +S9|5580|DURSEJ|9 +S9|5581|DURSEJ|9 +S9|5582|DURSEJ|9 +S9|5583|DURSEJ|9 +S9|5584|DURSEJ|9 +S9|5585|DURSEJ|9 +S9|5586|DURSEJ|9 +S9|5587|DURSEJ|9 +S9|5588|DURSEJ|9 +S9|5589|DURSEJ|9 +S9|5590|DURSEJ|9 +S9|5591|DURSEJ|9 +S9|5592|DURSEJ|9 +S9|5593|DURSEJ|9 +S9|5594|DURSEJ|9 +S9|5595|DURSEJ|9 +S9|5596|DURSEJ|9 +S9|5597|DURSEJ|9 +S9|5598|DURSEJ|9 +S9|5599|DURSEJ|9 +S9|5600|DURSEJ|9 +S9|5601|DURSEJ|9 +S9|5602|DURSEJ|9 +S9|5603|DURSEJ|9 +S9|5604|DURSEJ|9 +S9|5605|DURSEJ|9 +S9|5606|DURSEJ|9 +S9|5607|DURSEJ|9 +S9|5608|DURSEJ|9 +S9|5609|DURSEJ|9 +S9|5610|DURSEJ|9 +S9|5611|DURSEJ|9 +S9|5612|DURSEJ|9 +S9|5613|DURSEJ|9 +S9|5614|DURSEJ|9 +S9|5615|DURSEJ|9 +S9|5616|DURSEJ|9 +S9|5617|DURSEJ|9 +S9|5618|DURSEJ|9 +S9|5619|DURSEJ|9 +S9|5620|DURSEJ|9 +S9|5621|DURSEJ|9 +S9|5622|DURSEJ|9 +S9|5623|DURSEJ|9 +S9|5624|DURSEJ|9 +S9|5625|DURSEJ|9 +S9|5626|DURSEJ|9 +S9|5627|DURSEJ|9 +S9|5628|DURSEJ|9 +S9|5629|DURSEJ|9 +S9|5630|DURSEJ|9 +S9|5631|DURSEJ|9 +S9|5632|DURSEJ|9 +S9|5633|DURSEJ|9 +S9|5634|DURSEJ|9 +S9|5635|DURSEJ|9 +S9|5636|DURSEJ|9 +S9|5637|DURSEJ|9 +S9|5638|DURSEJ|9 +S9|5639|DURSEJ|9 +S9|5640|DURSEJ|9 +S9|5641|DURSEJ|9 +S9|5642|DURSEJ|9 +S9|5643|DURSEJ|9 +S9|5644|DURSEJ|9 +S9|5645|DURSEJ|9 +S9|5646|DURSEJ|9 +S9|5647|DURSEJ|9 +S9|5648|DURSEJ|9 +S9|5649|DURSEJ|9 +S9|5650|DURSEJ|9 +S9|5651|DURSEJ|9 +S9|5652|DURSEJ|9 +S9|5653|DURSEJ|9 +S9|5654|DURSEJ|9 +S9|5655|DURSEJ|9 +S9|5656|DURSEJ|9 +S9|5657|DURSEJ|9 +S9|5658|DURSEJ|9 +S9|5659|DURSEJ|9 +S9|5660|DURSEJ|9 +S9|5661|DURSEJ|9 +S9|5662|DURSEJ|9 +S9|5663|DURSEJ|9 +S9|5664|DURSEJ|9 +S9|5665|DURSEJ|9 +S9|5666|DURSEJ|9 +S9|5667|DURSEJ|9 +S9|5668|DURSEJ|9 +S9|5669|DURSEJ|9 +S9|5670|DURSEJ|9 +S9|5671|DURSEJ|9 +S9|5672|DURSEJ|9 +S9|5673|DURSEJ|9 +S9|5674|DURSEJ|9 +S9|5675|DURSEJ|9 +S9|5676|DURSEJ|9 +S9|5677|DURSEJ|9 +S9|5678|DURSEJ|9 +S9|5679|DURSEJ|9 +S9|5680|DURSEJ|9 +S9|5681|DURSEJ|9 +S9|5682|DURSEJ|9 +S9|5683|DURSEJ|9 +S9|5684|DURSEJ|9 +S9|5685|DURSEJ|9 +S9|5686|DURSEJ|9 +S9|5687|DURSEJ|9 +S9|5688|DURSEJ|9 +S9|5689|DURSEJ|9 +S9|5690|DURSEJ|9 +S9|5691|DURSEJ|9 +S9|5692|DURSEJ|9 +S9|5693|DURSEJ|9 +S9|5694|DURSEJ|9 +S9|5695|DURSEJ|9 +S9|5696|DURSEJ|9 +S9|5697|DURSEJ|9 +S9|5698|DURSEJ|9 +S9|5699|DURSEJ|9 +S9|5700|DURSEJ|9 +S9|5701|DURSEJ|9 +S9|5702|DURSEJ|9 +S9|5703|DURSEJ|9 +S9|5704|DURSEJ|9 +S9|5705|DURSEJ|9 +S9|5706|DURSEJ|9 +S9|5707|DURSEJ|9 +S9|5708|DURSEJ|9 +S9|5709|DURSEJ|9 +S9|5710|DURSEJ|9 +S9|5711|DURSEJ|9 +S9|5712|DURSEJ|9 +S9|5713|DURSEJ|9 +S9|5714|DURSEJ|9 +S9|5715|DURSEJ|9 +S9|5716|DURSEJ|9 +S9|5717|DURSEJ|9 +S9|5718|DURSEJ|9 +S9|5719|DURSEJ|9 +S9|5720|DURSEJ|9 +S9|5721|DURSEJ|9 +S9|5722|DURSEJ|9 +S9|5723|DURSEJ|9 +S9|5724|DURSEJ|9 +S9|5725|DURSEJ|9 +S9|5726|DURSEJ|9 +S9|5727|DURSEJ|9 +S9|5728|DURSEJ|9 +S9|5729|DURSEJ|9 +S9|5730|DURSEJ|9 +S9|5731|DURSEJ|9 +S9|5732|DURSEJ|9 +S9|5733|DURSEJ|9 +S9|5734|DURSEJ|9 +S9|5735|DURSEJ|9 +S9|5736|DURSEJ|9 +S9|5737|DURSEJ|9 +S9|5738|DURSEJ|9 +S9|5739|DURSEJ|9 +S9|5740|DURSEJ|9 +S9|5741|DURSEJ|9 +S9|5742|DURSEJ|9 +S9|5743|DURSEJ|9 +S9|5744|DURSEJ|9 +S9|5745|DURSEJ|9 +S9|5746|DURSEJ|9 +S9|5747|DURSEJ|9 +S9|5748|DURSEJ|9 +S9|5749|DURSEJ|9 +S9|5750|DURSEJ|9 +S9|5751|DURSEJ|9 +S9|5752|DURSEJ|9 +S9|5753|DURSEJ|9 +S9|5754|DURSEJ|9 +S9|5755|DURSEJ|9 +S9|5756|DURSEJ|9 +S9|5757|DURSEJ|9 +S9|5758|DURSEJ|9 +S9|5759|DURSEJ|9 +S9|5760|DURSEJ|9 +S9|5761|DURSEJ|9 +S9|5762|DURSEJ|9 +S9|5763|DURSEJ|9 +S9|5764|DURSEJ|9 +S9|5765|DURSEJ|9 +S9|5766|DURSEJ|9 +S9|5767|DURSEJ|9 +S9|5768|DURSEJ|9 +S9|5769|DURSEJ|9 +S9|5770|DURSEJ|9 +S9|5771|DURSEJ|9 +S9|5772|DURSEJ|9 +S9|5773|DURSEJ|9 +S9|5774|DURSEJ|9 +S9|5775|DURSEJ|9 +S9|5776|DURSEJ|9 +S9|5777|DURSEJ|9 +S9|5778|DURSEJ|9 +S9|5779|DURSEJ|9 +S9|5780|DURSEJ|9 +S9|5781|DURSEJ|9 +S9|5782|DURSEJ|9 +S9|5783|DURSEJ|9 +S9|5784|DURSEJ|9 +S9|5785|DURSEJ|9 +S9|5786|DURSEJ|9 +S9|5787|DURSEJ|9 +S9|5788|DURSEJ|9 +S9|5789|DURSEJ|9 +S9|5790|DURSEJ|9 +S9|5791|DURSEJ|9 +S9|5792|DURSEJ|9 +S9|5793|DURSEJ|9 +S9|5794|DURSEJ|9 +S9|5795|DURSEJ|9 +S9|5796|DURSEJ|9 +S9|5797|DURSEJ|9 +S9|5798|DURSEJ|9 +S9|5799|DURSEJ|9 +S9|5800|DURSEJ|9 +S9|5801|DURSEJ|9 +S9|5802|DURSEJ|9 +S9|5803|DURSEJ|9 +S9|5804|DURSEJ|9 +S9|5805|DURSEJ|9 +S9|5806|DURSEJ|9 +S9|5807|DURSEJ|9 +S9|5808|DURSEJ|9 +S9|5809|DURSEJ|9 +S9|5810|DURSEJ|9 +S9|5811|DURSEJ|9 +S9|5812|DURSEJ|9 +S9|5813|DURSEJ|9 +S9|5814|DURSEJ|9 +S9|5815|DURSEJ|9 +S9|5816|DURSEJ|9 +S9|5817|DURSEJ|9 +S9|5818|DURSEJ|9 +S9|5819|DURSEJ|9 +S9|5820|DURSEJ|9 +S9|5821|DURSEJ|9 +S9|5822|DURSEJ|9 +S9|5823|DURSEJ|9 +S9|5824|DURSEJ|9 +S9|5825|DURSEJ|9 +S9|5826|DURSEJ|9 +S9|5827|DURSEJ|9 +S9|5828|DURSEJ|9 +S9|5829|DURSEJ|9 +S9|5830|DURSEJ|9 +S9|5831|DURSEJ|9 +S9|5832|DURSEJ|9 +S9|5833|DURSEJ|9 +S9|5834|DURSEJ|9 +S9|5835|DURSEJ|9 +S9|5836|DURSEJ|9 +S9|5837|DURSEJ|9 +S9|5838|DURSEJ|9 +S9|5839|DURSEJ|9 +S9|5840|DURSEJ|9 +S9|5841|DURSEJ|9 +S9|5842|DURSEJ|9 +S9|5843|DURSEJ|9 +S9|5844|DURSEJ|9 +S9|5845|DURSEJ|9 +S9|5846|DURSEJ|9 +S9|5847|DURSEJ|9 +S9|5848|DURSEJ|9 +S9|5849|DURSEJ|9 +S9|5850|DURSEJ|9 +S9|5851|DURSEJ|9 +S9|5852|DURSEJ|9 +S9|5853|DURSEJ|9 +S9|5854|DURSEJ|9 +S9|5855|DURSEJ|9 +S9|5856|DURSEJ|9 +S9|5857|DURSEJ|9 +S9|5858|DURSEJ|9 +S9|5859|DURSEJ|9 +S9|5860|DURSEJ|9 +S9|5861|DURSEJ|9 +S9|5862|DURSEJ|9 +S9|5863|DURSEJ|9 +S9|5864|DURSEJ|9 +S9|5865|DURSEJ|9 +S9|5866|DURSEJ|9 +S9|5867|DURSEJ|9 +S9|5868|DURSEJ|9 +S9|5869|DURSEJ|9 +S9|5870|DURSEJ|9 +S9|5871|DURSEJ|9 +S9|5872|DURSEJ|9 +S9|5873|DURSEJ|9 +S9|5874|DURSEJ|9 +S9|5875|DURSEJ|9 +S9|5876|DURSEJ|9 +S9|5877|DURSEJ|9 +S9|5878|DURSEJ|9 +S9|5879|DURSEJ|9 +S9|5880|DURSEJ|9 +S9|5881|DURSEJ|9 +S9|5882|DURSEJ|9 +S9|5883|DURSEJ|9 +S9|5884|DURSEJ|9 +S9|5885|DURSEJ|9 +S9|5886|DURSEJ|9 +S9|5887|DURSEJ|9 +S9|5888|DURSEJ|9 +S9|5889|DURSEJ|9 +S9|5890|DURSEJ|9 +S9|5891|DURSEJ|9 +S9|5892|DURSEJ|9 +S9|5893|DURSEJ|9 +S9|5894|DURSEJ|9 +S9|5895|DURSEJ|9 +S9|5896|DURSEJ|9 +S9|5897|DURSEJ|9 +S9|5898|DURSEJ|9 +S9|5899|DURSEJ|9 +S9|5900|DURSEJ|9 +S9|5901|DURSEJ|9 +S9|5902|DURSEJ|9 +S9|5903|DURSEJ|9 +S9|5904|DURSEJ|9 +S9|5905|DURSEJ|9 +S9|5906|DURSEJ|9 +S9|5907|DURSEJ|9 +S9|5908|DURSEJ|9 +S9|5909|DURSEJ|9 +S9|5910|DURSEJ|9 +S9|5911|DURSEJ|9 +S9|5912|DURSEJ|9 +S9|5913|DURSEJ|9 +S9|5914|DURSEJ|9 +S9|5915|DURSEJ|9 +S9|5916|DURSEJ|9 +S9|5917|DURSEJ|9 +S9|5918|DURSEJ|9 +S9|5919|DURSEJ|9 +S9|5920|DURSEJ|9 +S9|5921|DURSEJ|9 +S9|5922|DURSEJ|9 +S9|5923|DURSEJ|9 +S9|5924|DURSEJ|9 +S9|5925|DURSEJ|9 +S9|5926|DURSEJ|9 +S9|5927|DURSEJ|9 +S9|5928|DURSEJ|9 +S9|5929|DURSEJ|9 +S9|5930|DURSEJ|9 +S9|5931|DURSEJ|9 +S9|5932|DURSEJ|9 +S9|5933|DURSEJ|9 +S9|5934|DURSEJ|9 +S9|5935|DURSEJ|9 +S9|5936|DURSEJ|9 +S9|5937|DURSEJ|9 +S9|5938|DURSEJ|9 +S9|5939|DURSEJ|9 +S9|5940|DURSEJ|9 +S9|5941|DURSEJ|9 +S9|5942|DURSEJ|9 +S9|5943|DURSEJ|9 +S9|5944|DURSEJ|9 +S9|5945|DURSEJ|9 +S9|5946|DURSEJ|9 +S9|5947|DURSEJ|9 +S9|5948|DURSEJ|9 +S9|5949|DURSEJ|9 +S9|5950|DURSEJ|9 +S9|5951|DURSEJ|9 +S9|5952|DURSEJ|9 +S9|5953|DURSEJ|9 +S9|5954|DURSEJ|9 +S9|5955|DURSEJ|9 +S9|5956|DURSEJ|9 +S9|5957|DURSEJ|9 +S9|5958|DURSEJ|9 +S9|5959|DURSEJ|9 +S9|5960|DURSEJ|9 +S9|5961|DURSEJ|9 +S9|5962|DURSEJ|9 +S9|5963|DURSEJ|9 +S9|5964|DURSEJ|9 +S9|5965|DURSEJ|9 +S9|5966|DURSEJ|9 +S9|5967|DURSEJ|9 +S9|5968|DURSEJ|9 +S9|5969|DURSEJ|9 +S9|5970|DURSEJ|9 +S9|5971|DURSEJ|9 +S9|5972|DURSEJ|9 +S9|5973|DURSEJ|9 +S9|5974|DURSEJ|9 +S9|5975|DURSEJ|9 +S9|5976|DURSEJ|9 +S9|5977|DURSEJ|9 +S9|5978|DURSEJ|9 +S9|5979|DURSEJ|9 +S9|5980|DURSEJ|9 +S9|5981|DURSEJ|9 +S9|5982|DURSEJ|9 +S9|5983|DURSEJ|9 +S9|5984|DURSEJ|9 +S9|5985|DURSEJ|9 +S9|5986|DURSEJ|9 +S9|5987|DURSEJ|9 +S9|5988|DURSEJ|9 +S9|5989|DURSEJ|9 +S9|5990|DURSEJ|9 +S9|5991|DURSEJ|9 +S9|5992|DURSEJ|9 +S9|5993|DURSEJ|9 +S9|5994|DURSEJ|9 +S9|5995|DURSEJ|9 +S9|5996|DURSEJ|9 +S9|5997|DURSEJ|9 +S9|5998|DURSEJ|9 +S9|5999|DURSEJ|9 +S9|6000|DURSEJ|9 +S9|6001|DURSEJ|9 +S9|6002|DURSEJ|9 +S9|6003|DURSEJ|9 +S9|6004|DURSEJ|9 +S9|6005|DURSEJ|9 +S9|6006|DURSEJ|9 +S9|6007|DURSEJ|9 +S9|6008|DURSEJ|9 +S9|6009|DURSEJ|9 +S9|6010|DURSEJ|9 +S9|6011|DURSEJ|9 +S9|6012|DURSEJ|9 +S9|6013|DURSEJ|9 +S9|6014|DURSEJ|9 +S9|6015|DURSEJ|9 +S9|6016|DURSEJ|9 +S9|6017|DURSEJ|9 +S9|6018|DURSEJ|9 +S9|6019|DURSEJ|9 +S9|6020|DURSEJ|9 +S9|6021|DURSEJ|9 +S9|6022|DURSEJ|9 +S9|6023|DURSEJ|9 +S9|6024|DURSEJ|9 +S9|6025|DURSEJ|9 +S9|6026|DURSEJ|9 +S9|6027|DURSEJ|9 +S9|6028|DURSEJ|9 +S9|6029|DURSEJ|9 +S9|6030|DURSEJ|9 +S9|6031|DURSEJ|9 +S9|6032|DURSEJ|9 +S9|6033|DURSEJ|9 +S9|6034|DURSEJ|9 +S9|6035|DURSEJ|9 +S9|6036|DURSEJ|9 +S9|6037|DURSEJ|9 +S9|6038|DURSEJ|9 +S9|6039|DURSEJ|9 +S9|6040|DURSEJ|9 +S9|6041|DURSEJ|9 +S9|6042|DURSEJ|9 +S9|6043|DURSEJ|9 +S9|6044|DURSEJ|9 +S9|6045|DURSEJ|9 +S9|6046|DURSEJ|9 +S9|6047|DURSEJ|9 +S9|6048|DURSEJ|9 +S9|6049|DURSEJ|9 +S9|6050|DURSEJ|9 +S9|6051|DURSEJ|9 +S9|6052|DURSEJ|9 +S9|6053|DURSEJ|9 +S9|6054|DURSEJ|9 +S9|6055|DURSEJ|9 +S9|6056|DURSEJ|9 +S9|6057|DURSEJ|9 +S9|6058|DURSEJ|9 +S9|6059|DURSEJ|9 +S9|6060|DURSEJ|9 +S9|6061|DURSEJ|9 +S9|6062|DURSEJ|9 +S9|6063|DURSEJ|9 +S9|6064|DURSEJ|9 +S9|6065|DURSEJ|9 +S9|6066|DURSEJ|9 +S9|6067|DURSEJ|9 +S9|6068|DURSEJ|9 +S9|6069|DURSEJ|9 +S9|6070|DURSEJ|9 +S9|6071|DURSEJ|9 +S9|6072|DURSEJ|9 +S9|6073|DURSEJ|9 +S9|6074|DURSEJ|9 +S9|6075|DURSEJ|9 +S9|6076|DURSEJ|9 +S9|6077|DURSEJ|9 +S9|6078|DURSEJ|9 +S9|6079|DURSEJ|9 +S9|6080|DURSEJ|9 +S9|6081|DURSEJ|9 +S9|6082|DURSEJ|9 +S9|6083|DURSEJ|9 +S9|6084|DURSEJ|9 +S9|6085|DURSEJ|9 +S9|6086|DURSEJ|9 +S9|6087|DURSEJ|9 +S9|6088|DURSEJ|9 +S9|6089|DURSEJ|9 +S9|6090|DURSEJ|9 +S9|6091|DURSEJ|9 +S9|6092|DURSEJ|9 +S9|6093|DURSEJ|9 +S9|6094|DURSEJ|9 +S9|6095|DURSEJ|9 +S9|6096|DURSEJ|9 +S9|6097|DURSEJ|9 +S9|6098|DURSEJ|9 +S9|6099|DURSEJ|9 +S9|6100|DURSEJ|9 +S9|6101|DURSEJ|9 +S9|6102|DURSEJ|9 +S9|6103|DURSEJ|9 +S9|6104|DURSEJ|9 +S9|6105|DURSEJ|9 +S9|6106|DURSEJ|9 +S9|6107|DURSEJ|9 +S9|6108|DURSEJ|9 +S9|6109|DURSEJ|9 +S9|6110|DURSEJ|9 +S9|6111|DURSEJ|9 +S9|6112|DURSEJ|9 +S9|6113|DURSEJ|9 +S9|6114|DURSEJ|9 +S9|6115|DURSEJ|9 +S9|6116|DURSEJ|9 +S9|6117|DURSEJ|9 +S9|6118|DURSEJ|9 +S9|6119|DURSEJ|9 +S9|6120|DURSEJ|9 +S9|6121|DURSEJ|9 +S9|6122|DURSEJ|9 +S9|6123|DURSEJ|9 +S9|6124|DURSEJ|9 +S9|6125|DURSEJ|9 +S9|6126|DURSEJ|9 +S9|6127|DURSEJ|9 +S9|6128|DURSEJ|9 +S9|6129|DURSEJ|9 +S9|6130|DURSEJ|9 +S9|6131|DURSEJ|9 +S9|6132|DURSEJ|9 +S9|6133|DURSEJ|9 +S9|6134|DURSEJ|9 +S9|6135|DURSEJ|9 +S9|6136|DURSEJ|9 +S9|6137|DURSEJ|9 +S9|6138|DURSEJ|9 +S9|6139|DURSEJ|9 +S9|6140|DURSEJ|9 +S9|6141|DURSEJ|9 +S9|6142|DURSEJ|9 +S9|6143|DURSEJ|9 +S9|6144|DURSEJ|9 +S9|6145|DURSEJ|9 +S9|6146|DURSEJ|9 +S9|6147|DURSEJ|9 +S9|6148|DURSEJ|9 +S9|6149|DURSEJ|9 +S9|6150|DURSEJ|9 +S9|6151|DURSEJ|9 +S9|6152|DURSEJ|9 +S9|6153|DURSEJ|9 +S9|6154|DURSEJ|9 +S9|6155|DURSEJ|9 +S9|6156|DURSEJ|9 +S9|6157|DURSEJ|9 +S9|6158|DURSEJ|9 +S9|6159|DURSEJ|9 +S9|6160|DURSEJ|9 +S9|6161|DURSEJ|9 +S9|6162|DURSEJ|9 +S9|6163|DURSEJ|9 +S9|6164|DURSEJ|9 +S9|6165|DURSEJ|9 +S9|6166|DURSEJ|9 +S9|6167|DURSEJ|9 +S9|6168|DURSEJ|9 +S9|6169|DURSEJ|9 +S9|6170|DURSEJ|9 +S9|6171|DURSEJ|9 +S9|6172|DURSEJ|9 +S9|6173|DURSEJ|9 +S9|6174|DURSEJ|9 +S9|6175|DURSEJ|9 +S9|6176|DURSEJ|9 +S9|6177|DURSEJ|9 +S9|6178|DURSEJ|9 +S9|6179|DURSEJ|9 +S9|6180|DURSEJ|9 +S9|6181|DURSEJ|9 +S9|6182|DURSEJ|9 +S9|6183|DURSEJ|9 +S9|6184|DURSEJ|9 +S9|6185|DURSEJ|9 +S9|6186|DURSEJ|9 +S9|6187|DURSEJ|9 +S9|6188|DURSEJ|9 +S9|6189|DURSEJ|9 +S9|6190|DURSEJ|9 +S9|6191|DURSEJ|9 +S9|6192|DURSEJ|9 +S9|6193|DURSEJ|9 +S9|6194|DURSEJ|9 +S9|6195|DURSEJ|9 +S9|6196|DURSEJ|9 +S9|6197|DURSEJ|9 +S9|6198|DURSEJ|9 +S9|6199|DURSEJ|9 +S9|6200|DURSEJ|9 +S9|6201|DURSEJ|9 +S9|6202|DURSEJ|9 +S9|6203|DURSEJ|9 +S9|6204|DURSEJ|9 +S9|6205|DURSEJ|9 +S9|6206|DURSEJ|9 +S9|6207|DURSEJ|9 +S9|6208|DURSEJ|9 +S9|6209|DURSEJ|9 +S9|6210|DURSEJ|9 +S9|6211|DURSEJ|9 +S9|6212|DURSEJ|9 +S9|6213|DURSEJ|9 +S9|6214|DURSEJ|9 +S9|6215|DURSEJ|9 +S9|6216|DURSEJ|9 +S9|6217|DURSEJ|9 +S9|6218|DURSEJ|9 +S9|6219|DURSEJ|9 +S9|6220|DURSEJ|9 +S9|6221|DURSEJ|9 +S9|6222|DURSEJ|9 +S9|6223|DURSEJ|9 +S9|6224|DURSEJ|9 +S9|6225|DURSEJ|9 +S9|6226|DURSEJ|9 +S9|6227|DURSEJ|9 +S9|6228|DURSEJ|9 +S9|6229|DURSEJ|9 +S9|6230|DURSEJ|9 +S9|6231|DURSEJ|9 +S9|6232|DURSEJ|9 +S9|6233|DURSEJ|9 +S9|6234|DURSEJ|9 +S9|6235|DURSEJ|9 +S9|6236|DURSEJ|9 +S9|6237|DURSEJ|9 +S9|6238|DURSEJ|9 +S9|6239|DURSEJ|9 +S9|6240|DURSEJ|9 +S9|6241|DURSEJ|9 +S9|6242|DURSEJ|9 +S9|6243|DURSEJ|9 +S9|6244|DURSEJ|9 +S9|6245|DURSEJ|9 +S9|6246|DURSEJ|9 +S9|6247|DURSEJ|9 +S9|6248|DURSEJ|9 +S9|6249|DURSEJ|9 +S9|6250|DURSEJ|9 +S9|6251|DURSEJ|9 +S9|6252|DURSEJ|9 +S9|6253|DURSEJ|9 +S9|6254|DURSEJ|9 +S9|6255|DURSEJ|9 +S9|6256|DURSEJ|9 +S9|6257|DURSEJ|9 +S9|6258|DURSEJ|9 +S9|6259|DURSEJ|9 +S9|6260|DURSEJ|9 +S9|6261|DURSEJ|9 +S9|6262|DURSEJ|9 +S9|6263|DURSEJ|9 +S9|6264|DURSEJ|9 +S9|6265|DURSEJ|9 +S9|6266|DURSEJ|9 +S9|6267|DURSEJ|9 +S9|6268|DURSEJ|9 +S9|6269|DURSEJ|9 +S9|6270|DURSEJ|9 +S9|6271|DURSEJ|9 +S9|6272|DURSEJ|9 +S9|6273|DURSEJ|9 +S9|6274|DURSEJ|9 +S9|6275|DURSEJ|9 +S9|6276|DURSEJ|9 +S9|6277|DURSEJ|9 +S9|6278|DURSEJ|9 +S9|6279|DURSEJ|9 +S9|6280|DURSEJ|9 +S9|6281|DURSEJ|9 +S9|6282|DURSEJ|9 +S9|6283|DURSEJ|9 +S9|6284|DURSEJ|9 +S9|6285|DURSEJ|9 +S9|6286|DURSEJ|9 +S9|6287|DURSEJ|9 +S9|6288|DURSEJ|9 +S9|6289|DURSEJ|9 +S9|6290|DURSEJ|9 +S9|6291|DURSEJ|9 +S9|6292|DURSEJ|9 +S9|6293|DURSEJ|9 +S9|6294|DURSEJ|9 +S9|6295|DURSEJ|9 +S9|6296|DURSEJ|9 +S9|6297|DURSEJ|9 +S9|6298|DURSEJ|9 +S9|6299|DURSEJ|9 +S9|6300|DURSEJ|9 +S9|6301|DURSEJ|9 +S9|6302|DURSEJ|9 +S9|6303|DURSEJ|9 +S9|6304|DURSEJ|9 +S9|6305|DURSEJ|9 +S9|6306|DURSEJ|9 +S9|6307|DURSEJ|9 +S9|6308|DURSEJ|9 +S9|6309|DURSEJ|9 +S9|6310|DURSEJ|9 +S9|6311|DURSEJ|9 +S9|6312|DURSEJ|9 +S9|6313|DURSEJ|9 +S9|6314|DURSEJ|9 +S9|6315|DURSEJ|9 +S9|6316|DURSEJ|9 +S9|6317|DURSEJ|9 +S9|6318|DURSEJ|9 +S9|6319|DURSEJ|9 +S9|6320|DURSEJ|9 +S9|6321|DURSEJ|9 +S9|6322|DURSEJ|9 +S9|6323|DURSEJ|9 +S9|6324|DURSEJ|9 +S9|6325|DURSEJ|9 +S9|6326|DURSEJ|9 +S9|6327|DURSEJ|9 +S9|6328|DURSEJ|9 +S9|6329|DURSEJ|9 +S9|6330|DURSEJ|9 +S9|6331|DURSEJ|9 +S9|6332|DURSEJ|9 +S9|6333|DURSEJ|9 +S9|6334|DURSEJ|9 +S9|6335|DURSEJ|9 +S9|6336|DURSEJ|9 +S9|6337|DURSEJ|9 +S9|6338|DURSEJ|9 +S9|6339|DURSEJ|9 +S9|6340|DURSEJ|9 +S9|6341|DURSEJ|9 +S9|6342|DURSEJ|9 +S9|6343|DURSEJ|9 +S9|6344|DURSEJ|9 +S9|6345|DURSEJ|9 +S9|6346|DURSEJ|9 +S9|6347|DURSEJ|9 +S9|6348|DURSEJ|9 +S9|6349|DURSEJ|9 +S9|6350|DURSEJ|9 +S9|6351|DURSEJ|9 +S9|6352|DURSEJ|9 +S9|6353|DURSEJ|9 +S9|6354|DURSEJ|9 +S9|6355|DURSEJ|9 +S9|6356|DURSEJ|9 +S9|6357|DURSEJ|9 +S9|6358|DURSEJ|9 +S9|6359|DURSEJ|9 +S9|6360|DURSEJ|9 +S9|6361|DURSEJ|9 +S9|6362|DURSEJ|9 +S9|6363|DURSEJ|9 +S9|6364|DURSEJ|9 +S9|6365|DURSEJ|9 +S9|6366|DURSEJ|9 +S9|6367|DURSEJ|9 +S9|6368|DURSEJ|9 +S9|6369|DURSEJ|9 +S9|6370|DURSEJ|9 +S9|6371|DURSEJ|9 +S9|6372|DURSEJ|9 +S9|6373|DURSEJ|9 +S9|6374|DURSEJ|9 +S9|6375|DURSEJ|9 +S9|6376|DURSEJ|9 +S9|6377|DURSEJ|9 +S9|6378|DURSEJ|9 +S9|6379|DURSEJ|9 +S9|6380|DURSEJ|9 +S9|6381|DURSEJ|9 +S9|6382|DURSEJ|9 +S9|6383|DURSEJ|9 +S9|6384|DURSEJ|9 +S9|6385|DURSEJ|9 +S9|6386|DURSEJ|9 +S9|6387|DURSEJ|9 +S9|6388|DURSEJ|9 +S9|6389|DURSEJ|9 +S9|6390|DURSEJ|9 +S9|6391|DURSEJ|9 +S9|6392|DURSEJ|9 +S9|6393|DURSEJ|9 +S9|6394|DURSEJ|9 +S9|6395|DURSEJ|9 +S9|6396|DURSEJ|9 +S9|6397|DURSEJ|9 +S9|6398|DURSEJ|9 +S9|6399|DURSEJ|9 +S9|6400|DURSEJ|9 +S9|6401|DURSEJ|9 +S9|6402|DURSEJ|9 +S9|6403|DURSEJ|9 +S9|6404|DURSEJ|9 +S9|6405|DURSEJ|9 +S9|6406|DURSEJ|9 +S9|6407|DURSEJ|9 +S9|6408|DURSEJ|9 +S9|6409|DURSEJ|9 +S9|6410|DURSEJ|9 +S9|6411|DURSEJ|9 +S9|6412|DURSEJ|9 +S9|6413|DURSEJ|9 +S9|6414|DURSEJ|9 +S9|6415|DURSEJ|9 +S9|6416|DURSEJ|9 +S9|6417|DURSEJ|9 +S9|6418|DURSEJ|9 +S9|6419|DURSEJ|9 +S9|6420|DURSEJ|9 +S9|6421|DURSEJ|9 +S9|6422|DURSEJ|9 +S9|6423|DURSEJ|9 +S9|6424|DURSEJ|9 +S9|6425|DURSEJ|9 +S9|6426|DURSEJ|9 +S9|6427|DURSEJ|9 +S9|6428|DURSEJ|9 +S9|6429|DURSEJ|9 +S9|6430|DURSEJ|9 +S9|6431|DURSEJ|9 +S9|6432|DURSEJ|9 +S9|6433|DURSEJ|9 +S9|6434|DURSEJ|9 +S9|6435|DURSEJ|9 +S9|6436|DURSEJ|9 +S9|6437|DURSEJ|9 +S9|6438|DURSEJ|9 +S9|6439|DURSEJ|9 +S9|6440|DURSEJ|9 +S9|6441|DURSEJ|9 +S9|6442|DURSEJ|9 +S9|6443|DURSEJ|9 +S9|6444|DURSEJ|9 +S9|6445|DURSEJ|9 +S9|6446|DURSEJ|9 +S9|6447|DURSEJ|9 +S9|6448|DURSEJ|9 +S9|6449|DURSEJ|9 +S9|6450|DURSEJ|9 +S9|6451|DURSEJ|9 +S9|6452|DURSEJ|9 +S9|6453|DURSEJ|9 +S9|6454|DURSEJ|9 +S9|6455|DURSEJ|9 +S9|6456|DURSEJ|9 +S9|6457|DURSEJ|9 +S9|6458|DURSEJ|9 +S9|6459|DURSEJ|9 +S9|6460|DURSEJ|9 +S9|6461|DURSEJ|9 +S9|6462|DURSEJ|9 +S9|6463|DURSEJ|9 +S9|6464|DURSEJ|9 +S9|6465|DURSEJ|9 +S9|6466|DURSEJ|9 +S9|6467|DURSEJ|9 +S9|6468|DURSEJ|9 +S9|6469|DURSEJ|9 +S9|6470|DURSEJ|9 +S9|6471|DURSEJ|9 +S9|6472|DURSEJ|9 +S9|6473|DURSEJ|9 +S9|6474|DURSEJ|9 +S9|6475|DURSEJ|9 +S9|6476|DURSEJ|9 +S9|6477|DURSEJ|9 +S9|6478|DURSEJ|9 +S9|6479|DURSEJ|9 +S9|6480|DURSEJ|9 +S9|6481|DURSEJ|9 +S9|6482|DURSEJ|9 +S9|6483|DURSEJ|9 +S9|6484|DURSEJ|9 +S9|6485|DURSEJ|9 +S9|6486|DURSEJ|9 +S9|6487|DURSEJ|9 +S9|6488|DURSEJ|9 +S9|6489|DURSEJ|9 +S9|6490|DURSEJ|9 +S9|6491|DURSEJ|9 +S9|6492|DURSEJ|9 +S9|6493|DURSEJ|9 +S9|6494|DURSEJ|9 +S9|6495|DURSEJ|9 +S9|6496|DURSEJ|9 +S9|6497|DURSEJ|9 +S9|6498|DURSEJ|9 +S9|6499|DURSEJ|9 +S9|6500|DURSEJ|9 +S9|6501|DURSEJ|9 +S9|6502|DURSEJ|9 +S9|6503|DURSEJ|9 +S9|6504|DURSEJ|9 +S9|6505|DURSEJ|9 +S9|6506|DURSEJ|9 +S9|6507|DURSEJ|9 +S9|6508|DURSEJ|9 +S9|6509|DURSEJ|9 +S9|6510|DURSEJ|9 +S9|6511|DURSEJ|9 +S9|6512|DURSEJ|9 +S9|6513|DURSEJ|9 +S9|6514|DURSEJ|9 +S9|6515|DURSEJ|9 +S9|6516|DURSEJ|9 +S9|6517|DURSEJ|9 +S9|6518|DURSEJ|9 +S9|6519|DURSEJ|9 +S9|6520|DURSEJ|9 +S9|6521|DURSEJ|9 +S9|6522|DURSEJ|9 +S9|6523|DURSEJ|9 +S9|6524|DURSEJ|9 +S9|6525|DURSEJ|9 +S9|6526|DURSEJ|9 +S9|6527|DURSEJ|9 +S9|6528|DURSEJ|9 +S9|6529|DURSEJ|9 +S9|6530|DURSEJ|9 +S9|6531|DURSEJ|9 +S9|6532|DURSEJ|9 +S9|6533|DURSEJ|9 +S9|6534|DURSEJ|9 +S9|6535|DURSEJ|9 +S9|6536|DURSEJ|9 +S9|6537|DURSEJ|9 +S9|6538|DURSEJ|9 +S9|6539|DURSEJ|9 +S9|6540|DURSEJ|9 +S9|6541|DURSEJ|9 +S9|6542|DURSEJ|9 +S9|6543|DURSEJ|9 +S9|6544|DURSEJ|9 +S9|6545|DURSEJ|9 +S9|6546|DURSEJ|9 +S9|6547|DURSEJ|9 +S9|6548|DURSEJ|9 +S9|6549|DURSEJ|9 +S9|6550|DURSEJ|9 +S9|6551|DURSEJ|9 +S9|6552|DURSEJ|9 +S9|6553|DURSEJ|9 +S9|6554|DURSEJ|9 +S9|6555|DURSEJ|9 +S9|6556|DURSEJ|9 +S9|6557|DURSEJ|9 +S9|6558|DURSEJ|9 +S9|6559|DURSEJ|9 +S9|6560|DURSEJ|9 +S9|6561|DURSEJ|9 +S9|6562|DURSEJ|9 +S9|6563|DURSEJ|9 +S9|6564|DURSEJ|9 +S9|6565|DURSEJ|9 +S9|6566|DURSEJ|9 +S9|6567|DURSEJ|9 +S9|6568|DURSEJ|9 +S9|6569|DURSEJ|9 +S9|6570|DURSEJ|9 +S9|6571|DURSEJ|9 +S9|6572|DURSEJ|9 +S9|6573|DURSEJ|9 +S9|6574|DURSEJ|9 +S9|6575|DURSEJ|9 +S9|6576|DURSEJ|9 +S9|6577|DURSEJ|9 +S9|6578|DURSEJ|9 +S9|6579|DURSEJ|9 +S9|6580|DURSEJ|9 +S9|6581|DURSEJ|9 +S9|6582|DURSEJ|9 +S9|6583|DURSEJ|9 +S9|6584|DURSEJ|9 +S9|6585|DURSEJ|9 +S9|6586|DURSEJ|9 +S9|6587|DURSEJ|9 +S9|6588|DURSEJ|9 +S9|6589|DURSEJ|9 +S9|6590|DURSEJ|9 +S9|6591|DURSEJ|9 +S9|6592|DURSEJ|9 +S9|6593|DURSEJ|9 +S9|6594|DURSEJ|9 +S9|6595|DURSEJ|9 +S9|6596|DURSEJ|9 +S9|6597|DURSEJ|9 +S9|6598|DURSEJ|9 +S9|6599|DURSEJ|9 +S9|6600|DURSEJ|9 +S9|6601|DURSEJ|9 +S9|6602|DURSEJ|9 +S9|6603|DURSEJ|9 +S9|6604|DURSEJ|9 +S9|6605|DURSEJ|9 +S9|6606|DURSEJ|9 +S9|6607|DURSEJ|9 +S9|6608|DURSEJ|9 +S9|6609|DURSEJ|9 +S9|6610|DURSEJ|9 +S9|6611|DURSEJ|9 +S9|6612|DURSEJ|9 +S9|6613|DURSEJ|9 +S9|6614|DURSEJ|9 +S9|6615|DURSEJ|9 +S9|6616|DURSEJ|9 +S9|6617|DURSEJ|9 +S9|6618|DURSEJ|9 +S9|6619|DURSEJ|9 +S9|6620|DURSEJ|9 +S9|6621|DURSEJ|9 +S9|6622|DURSEJ|9 +S9|6623|DURSEJ|9 +S9|6624|DURSEJ|9 +S9|6625|DURSEJ|9 +S9|6626|DURSEJ|9 +S9|6627|DURSEJ|9 +S9|6628|DURSEJ|9 +S9|6629|DURSEJ|9 +S9|6630|DURSEJ|9 +S9|6631|DURSEJ|9 +S9|6632|DURSEJ|9 +S9|6633|DURSEJ|9 +S9|6634|DURSEJ|9 +S9|6635|DURSEJ|9 +S9|6636|DURSEJ|9 +S9|6637|DURSEJ|9 +S9|6638|DURSEJ|9 +S9|6639|DURSEJ|9 +S9|6640|DURSEJ|9 +S9|6641|DURSEJ|9 +S9|6642|DURSEJ|9 +S9|6643|DURSEJ|9 +S9|6644|DURSEJ|9 +S9|6645|DURSEJ|9 +S9|6646|DURSEJ|9 +S9|6647|DURSEJ|9 +S9|6648|DURSEJ|9 +S9|6649|DURSEJ|9 +S9|6650|DURSEJ|9 +S9|6651|DURSEJ|9 +S9|6652|DURSEJ|9 +S9|6653|DURSEJ|9 +S9|6654|DURSEJ|9 +S9|6655|DURSEJ|9 +S9|6656|DURSEJ|9 +S9|6657|DURSEJ|9 +S9|6658|DURSEJ|9 +S9|6659|DURSEJ|9 +S9|6660|DURSEJ|9 +S9|6661|DURSEJ|9 +S9|6662|DURSEJ|9 +S9|6663|DURSEJ|9 +S9|6664|DURSEJ|9 +S9|6665|DURSEJ|9 +S9|6666|DURSEJ|9 +S9|6667|DURSEJ|9 +S9|6668|DURSEJ|9 +S9|6669|DURSEJ|9 +S9|6670|DURSEJ|9 +S9|6671|DURSEJ|9 +S9|6672|DURSEJ|9 +S9|6673|DURSEJ|9 +S9|6674|DURSEJ|9 +S9|6675|DURSEJ|9 +S9|6676|DURSEJ|9 +S9|6677|DURSEJ|9 +S9|6678|DURSEJ|9 +S9|6679|DURSEJ|9 +S9|6680|DURSEJ|9 +S9|6681|DURSEJ|9 +S9|6682|DURSEJ|9 +S9|6683|DURSEJ|9 +S9|6684|DURSEJ|9 +S9|6685|DURSEJ|9 +S9|6686|DURSEJ|9 +S9|6687|DURSEJ|9 +S9|6688|DURSEJ|9 +S9|6689|DURSEJ|9 +S9|6690|DURSEJ|9 +S9|6691|DURSEJ|9 +S9|6692|DURSEJ|9 +S9|6693|DURSEJ|9 +S9|6694|DURSEJ|9 +S9|6695|DURSEJ|9 +S9|6696|DURSEJ|9 +S9|6697|DURSEJ|9 +S9|6698|DURSEJ|9 +S9|6699|DURSEJ|9 +S9|6700|DURSEJ|9 +S9|6701|DURSEJ|9 +S9|6702|DURSEJ|9 +S9|6703|DURSEJ|9 +S9|6704|DURSEJ|9 +S9|6705|DURSEJ|9 +S9|6706|DURSEJ|9 +S9|6707|DURSEJ|9 +S9|6708|DURSEJ|9 +S9|6709|DURSEJ|9 +S9|6710|DURSEJ|9 +S9|6711|DURSEJ|9 +S9|6712|DURSEJ|9 +S9|6713|DURSEJ|9 +S9|6714|DURSEJ|9 +S9|6715|DURSEJ|9 +S9|6716|DURSEJ|9 +S9|6717|DURSEJ|9 +S9|6718|DURSEJ|9 +S9|6719|DURSEJ|9 +S9|6720|DURSEJ|9 +S9|6721|DURSEJ|9 +S9|6722|DURSEJ|9 +S9|6723|DURSEJ|9 +S9|6724|DURSEJ|9 +S9|6725|DURSEJ|9 +S9|6726|DURSEJ|9 +S9|6727|DURSEJ|9 +S9|6728|DURSEJ|9 +S9|6729|DURSEJ|9 +S9|6730|DURSEJ|9 +S9|6731|DURSEJ|9 +S9|6732|DURSEJ|9 +S9|6733|DURSEJ|9 +S9|6734|DURSEJ|9 +S9|6735|DURSEJ|9 +S9|6736|DURSEJ|9 +S9|6737|DURSEJ|9 +S9|6738|DURSEJ|9 +S9|6739|DURSEJ|9 +S9|6740|DURSEJ|9 +S9|6741|DURSEJ|9 +S9|6742|DURSEJ|9 +S9|6743|DURSEJ|9 +S9|6744|DURSEJ|9 +S9|6745|DURSEJ|9 +S9|6746|DURSEJ|9 +S9|6747|DURSEJ|9 +S9|6748|DURSEJ|9 +S9|6749|DURSEJ|9 +S9|6750|DURSEJ|9 +S9|6751|DURSEJ|9 +S9|6752|DURSEJ|9 +S9|6753|DURSEJ|9 +S9|6754|DURSEJ|9 +S9|6755|DURSEJ|9 +S9|6756|DURSEJ|9 +S9|6757|DURSEJ|9 +S9|6758|DURSEJ|9 +S9|6759|DURSEJ|9 +S9|6760|DURSEJ|9 +S9|6761|DURSEJ|9 +S9|6762|DURSEJ|9 +S9|6763|DURSEJ|9 +S9|6764|DURSEJ|9 +S9|6765|DURSEJ|9 +S9|6766|DURSEJ|9 +S9|6767|DURSEJ|9 +S9|6768|DURSEJ|9 +S9|6769|DURSEJ|9 +S9|6770|DURSEJ|9 +S9|6771|DURSEJ|9 +S9|6772|DURSEJ|9 +S9|6773|DURSEJ|9 +S9|6774|DURSEJ|9 +S9|6775|DURSEJ|9 +S9|6776|DURSEJ|9 +S9|6777|DURSEJ|9 +S9|6778|DURSEJ|9 +S9|6779|DURSEJ|9 +S9|6780|DURSEJ|9 +S9|6781|DURSEJ|9 +S9|6782|DURSEJ|9 +S9|6783|DURSEJ|9 +S9|6784|DURSEJ|9 +S9|6785|DURSEJ|9 +S9|6786|DURSEJ|9 +S9|6787|DURSEJ|9 +S9|6788|DURSEJ|9 +S9|6789|DURSEJ|9 +S9|6790|DURSEJ|9 +S9|6791|DURSEJ|9 +S9|6792|DURSEJ|9 +S9|6793|DURSEJ|9 +S9|6794|DURSEJ|9 +S9|6795|DURSEJ|9 +S9|6796|DURSEJ|9 +S9|6797|DURSEJ|9 +S9|6798|DURSEJ|9 +S9|6799|DURSEJ|9 +S9|6800|DURSEJ|9 +S9|6801|DURSEJ|9 +S9|6802|DURSEJ|9 +S9|6803|DURSEJ|9 +S9|6804|DURSEJ|9 +S9|6805|DURSEJ|9 +S9|6806|DURSEJ|9 +S9|6807|DURSEJ|9 +S9|6808|DURSEJ|9 +S9|6809|DURSEJ|9 +S9|6810|DURSEJ|9 +S9|6811|DURSEJ|9 +S9|6812|DURSEJ|9 +S9|6813|DURSEJ|9 +S9|6814|DURSEJ|9 +S9|6815|DURSEJ|9 +S9|6816|DURSEJ|9 +S9|6817|DURSEJ|9 +S9|6818|DURSEJ|9 +S9|6819|DURSEJ|9 +S9|6820|DURSEJ|9 +S9|6821|DURSEJ|9 +S9|6822|DURSEJ|9 +S9|6823|DURSEJ|9 +S9|6824|DURSEJ|9 +S9|6825|DURSEJ|9 +S9|6826|DURSEJ|9 +S9|6827|DURSEJ|9 +S9|6828|DURSEJ|9 +S9|6829|DURSEJ|9 +S9|6830|DURSEJ|9 +S9|6831|DURSEJ|9 +S9|6832|DURSEJ|9 +S9|6833|DURSEJ|9 +S9|6834|DURSEJ|9 +S9|6835|DURSEJ|9 +S9|6836|DURSEJ|9 +S9|6837|DURSEJ|9 +S9|6838|DURSEJ|9 +S9|6839|DURSEJ|9 +S9|6840|DURSEJ|9 +S9|6841|DURSEJ|9 +S9|6842|DURSEJ|9 +S9|6843|DURSEJ|9 +S9|6844|DURSEJ|9 +S9|6845|DURSEJ|9 +S9|6846|DURSEJ|9 +S9|6847|DURSEJ|9 +S9|6848|DURSEJ|9 +S9|6849|DURSEJ|9 +S9|6850|DURSEJ|9 +S9|6851|DURSEJ|9 +S9|6852|DURSEJ|9 +S9|6853|DURSEJ|9 +S9|6854|DURSEJ|9 +S9|6855|DURSEJ|9 +S9|6856|DURSEJ|9 +S9|6857|DURSEJ|9 +S9|6858|DURSEJ|9 +S9|6859|DURSEJ|9 +S9|6860|DURSEJ|9 +S9|6861|DURSEJ|9 +S9|6862|DURSEJ|9 +S9|6863|DURSEJ|9 +S9|6864|DURSEJ|9 +S9|6865|DURSEJ|9 +S9|6866|DURSEJ|9 +S9|6867|DURSEJ|9 +S9|6868|DURSEJ|9 +S9|6869|DURSEJ|9 +S9|6870|DURSEJ|9 +S9|6871|DURSEJ|9 +S9|6872|DURSEJ|9 +S9|6873|DURSEJ|9 +S9|6874|DURSEJ|9 +S9|6875|DURSEJ|9 +S9|6876|DURSEJ|9 +S9|6877|DURSEJ|9 +S9|6878|DURSEJ|9 +S9|6879|DURSEJ|9 +S9|6880|DURSEJ|9 +S9|6881|DURSEJ|9 +S9|6882|DURSEJ|9 +S9|6883|DURSEJ|9 +S9|6884|DURSEJ|9 +S9|6885|DURSEJ|9 +S9|6886|DURSEJ|9 +S9|6887|DURSEJ|9 +S9|6888|DURSEJ|9 +S9|6889|DURSEJ|9 +S9|6890|DURSEJ|9 +S9|6891|DURSEJ|9 +S9|6892|DURSEJ|9 +S9|6893|DURSEJ|9 +S9|6894|DURSEJ|9 +S9|6895|DURSEJ|9 +S9|6896|DURSEJ|9 +S9|6897|DURSEJ|9 +S9|6898|DURSEJ|9 +S9|6899|DURSEJ|9 +S9|6900|DURSEJ|9 +S9|6901|DURSEJ|9 +S9|6902|DURSEJ|9 +S9|6903|DURSEJ|9 +S9|6904|DURSEJ|9 +S9|6905|DURSEJ|9 +S9|6906|DURSEJ|9 +S9|6907|DURSEJ|9 +S9|6908|DURSEJ|9 +S9|6909|DURSEJ|9 +S9|6910|DURSEJ|9 +S9|6911|DURSEJ|9 +S9|6912|DURSEJ|9 +S9|6913|DURSEJ|9 +S9|6914|DURSEJ|9 +S9|6915|DURSEJ|9 +S9|6916|DURSEJ|9 +S9|6917|DURSEJ|9 +S9|6918|DURSEJ|9 +S9|6919|DURSEJ|9 +S9|6920|DURSEJ|9 +S9|6921|DURSEJ|9 +S9|6922|DURSEJ|9 +S9|6923|DURSEJ|9 +S9|6924|DURSEJ|9 +S9|6925|DURSEJ|9 +S9|6926|DURSEJ|9 +S9|6927|DURSEJ|9 +S9|6928|DURSEJ|9 +S9|6929|DURSEJ|9 +S9|6930|DURSEJ|9 +S9|6931|DURSEJ|9 +S9|6932|DURSEJ|9 +S9|6933|DURSEJ|9 +S9|6934|DURSEJ|9 +S9|6935|DURSEJ|9 +S9|6936|DURSEJ|9 +S9|6937|DURSEJ|9 +S9|6938|DURSEJ|9 +S9|6939|DURSEJ|9 +S9|6940|DURSEJ|9 +S9|6941|DURSEJ|9 +S9|6942|DURSEJ|9 +S9|6943|DURSEJ|9 +S9|6944|DURSEJ|9 +S9|6945|DURSEJ|9 +S9|6946|DURSEJ|9 +S9|6947|DURSEJ|9 +S9|6948|DURSEJ|9 +S9|6949|DURSEJ|9 +S9|6950|DURSEJ|9 +S9|6951|DURSEJ|9 +S9|6952|DURSEJ|9 +S9|6953|DURSEJ|9 +S9|6954|DURSEJ|9 +S9|6955|DURSEJ|9 +S9|6956|DURSEJ|9 +S9|6957|DURSEJ|9 +S9|6958|DURSEJ|9 +S9|6959|DURSEJ|9 +S9|6960|DURSEJ|9 +S9|6961|DURSEJ|9 +S9|6962|DURSEJ|9 +S9|6963|DURSEJ|9 +S9|6964|DURSEJ|9 +S9|6965|DURSEJ|9 +S9|6966|DURSEJ|9 +S9|6967|DURSEJ|9 +S9|6968|DURSEJ|9 +S9|6969|DURSEJ|9 +S9|6970|DURSEJ|9 +S9|6971|DURSEJ|9 +S9|6972|DURSEJ|9 +S9|6973|DURSEJ|9 +S9|6974|DURSEJ|9 +S9|6975|DURSEJ|9 +S9|6976|DURSEJ|9 +S9|6977|DURSEJ|9 +S9|6978|DURSEJ|9 +S9|6979|DURSEJ|9 +S9|6980|DURSEJ|9 +S9|6981|DURSEJ|9 +S9|6982|DURSEJ|9 +S9|6983|DURSEJ|9 +S9|6984|DURSEJ|9 +S9|6985|DURSEJ|9 +S9|6986|DURSEJ|9 +S9|6987|DURSEJ|9 +S9|6988|DURSEJ|9 +S9|6989|DURSEJ|9 +S9|6990|DURSEJ|9 +S9|6991|DURSEJ|9 +S9|6992|DURSEJ|9 +S9|6993|DURSEJ|9 +S9|6994|DURSEJ|9 +S9|6995|DURSEJ|9 +S9|6996|DURSEJ|9 +S9|6997|DURSEJ|9 +S9|6998|DURSEJ|9 +S9|6999|DURSEJ|9 +S9|7000|DURSEJ|9 +S9|7001|DURSEJ|9 +S9|7002|DURSEJ|9 +S9|7003|DURSEJ|9 +S9|7004|DURSEJ|9 +S9|7005|DURSEJ|9 +S9|7006|DURSEJ|9 +S9|7007|DURSEJ|9 +S9|7008|DURSEJ|9 +S9|7009|DURSEJ|9 +S9|7010|DURSEJ|9 +S9|7011|DURSEJ|9 +S9|7012|DURSEJ|9 +S9|7013|DURSEJ|9 +S9|7014|DURSEJ|9 +S9|7015|DURSEJ|9 +S9|7016|DURSEJ|9 +S9|7017|DURSEJ|9 +S9|7018|DURSEJ|9 +S9|7019|DURSEJ|9 +S9|7020|DURSEJ|9 +S9|7021|DURSEJ|9 +S9|7022|DURSEJ|9 +S9|7023|DURSEJ|9 +S9|7024|DURSEJ|9 +S9|7025|DURSEJ|9 +S9|7026|DURSEJ|9 +S9|7027|DURSEJ|9 +S9|7028|DURSEJ|9 +S9|7029|DURSEJ|9 +S9|7030|DURSEJ|9 +S9|7031|DURSEJ|9 +S9|7032|DURSEJ|9 +S9|7033|DURSEJ|9 +S9|7034|DURSEJ|9 +S9|7035|DURSEJ|9 +S9|7036|DURSEJ|9 +S9|7037|DURSEJ|9 +S9|7038|DURSEJ|9 +S9|7039|DURSEJ|9 +S9|7040|DURSEJ|9 +S9|7041|DURSEJ|9 +S9|7042|DURSEJ|9 +S9|7043|DURSEJ|9 +S9|7044|DURSEJ|9 +S9|7045|DURSEJ|9 +S9|7046|DURSEJ|9 +S9|7047|DURSEJ|9 +S9|7048|DURSEJ|9 +S9|7049|DURSEJ|9 +S9|7050|DURSEJ|9 +S9|7051|DURSEJ|9 +S9|7052|DURSEJ|9 +S9|7053|DURSEJ|9 +S9|7054|DURSEJ|9 +S9|7055|DURSEJ|9 +S9|7056|DURSEJ|9 +S9|7057|DURSEJ|9 +S9|7058|DURSEJ|9 +S9|7059|DURSEJ|9 +S9|7060|DURSEJ|9 +S9|7061|DURSEJ|9 +S9|7062|DURSEJ|9 +S9|7063|DURSEJ|9 +S9|7064|DURSEJ|9 +S9|7065|DURSEJ|9 +S9|7066|DURSEJ|9 +S9|7067|DURSEJ|9 +S9|7068|DURSEJ|9 +S9|7069|DURSEJ|9 +S9|7070|DURSEJ|9 +S9|7071|DURSEJ|9 +S9|7072|DURSEJ|9 +S9|7073|DURSEJ|9 +S9|7074|DURSEJ|9 +S9|7075|DURSEJ|9 +S9|7076|DURSEJ|9 +S9|7077|DURSEJ|9 +S9|7078|DURSEJ|9 +S9|7079|DURSEJ|9 +S9|7080|DURSEJ|9 +S9|7081|DURSEJ|9 +S9|7082|DURSEJ|9 +S9|7083|DURSEJ|9 +S9|7084|DURSEJ|9 +S9|7085|DURSEJ|9 +S9|7086|DURSEJ|9 +S9|7087|DURSEJ|9 +S9|7088|DURSEJ|9 +S9|7089|DURSEJ|9 +S9|7090|DURSEJ|9 +S9|7091|DURSEJ|9 +S9|7092|DURSEJ|9 +S9|7093|DURSEJ|9 +S9|7094|DURSEJ|9 +S9|7095|DURSEJ|9 +S9|7096|DURSEJ|9 +S9|7097|DURSEJ|9 +S9|7098|DURSEJ|9 +S9|7099|DURSEJ|9 +S9|7100|DURSEJ|9 +S9|7101|DURSEJ|9 +S9|7102|DURSEJ|9 +S9|7103|DURSEJ|9 +S9|7104|DURSEJ|9 +S9|7105|DURSEJ|9 +S9|7106|DURSEJ|9 +S9|7107|DURSEJ|9 +S9|7108|DURSEJ|9 +S9|7109|DURSEJ|9 +S9|7110|DURSEJ|9 +S9|7111|DURSEJ|9 +S9|7112|DURSEJ|9 +S9|7113|DURSEJ|9 +S9|7114|DURSEJ|9 +S9|7115|DURSEJ|9 +S9|7116|DURSEJ|9 +S9|7117|DURSEJ|9 +S9|7118|DURSEJ|9 +S9|7119|DURSEJ|9 +S9|7120|DURSEJ|9 +S9|7121|DURSEJ|9 +S9|7122|DURSEJ|9 +S9|7123|DURSEJ|9 +S9|7124|DURSEJ|9 +S9|7125|DURSEJ|9 +S9|7126|DURSEJ|9 +S9|7127|DURSEJ|9 +S9|7128|DURSEJ|9 +S9|7129|DURSEJ|9 +S9|7130|DURSEJ|9 +S9|7131|DURSEJ|9 +S9|7132|DURSEJ|9 +S9|7133|DURSEJ|9 +S9|7134|DURSEJ|9 +S9|7135|DURSEJ|9 +S9|7136|DURSEJ|9 +S9|7137|DURSEJ|9 +S9|7138|DURSEJ|9 +S9|7139|DURSEJ|9 +S9|7140|DURSEJ|9 +S9|7141|DURSEJ|9 +S9|7142|DURSEJ|9 +S9|7143|DURSEJ|9 +S9|7144|DURSEJ|9 +S9|7145|DURSEJ|9 +S9|7146|DURSEJ|9 +S9|7147|DURSEJ|9 +S9|7148|DURSEJ|9 +S9|7149|DURSEJ|9 +S9|7150|DURSEJ|9 +S9|7151|DURSEJ|9 +S9|7152|DURSEJ|9 +S9|7153|DURSEJ|9 +S9|7154|DURSEJ|9 +S9|7155|DURSEJ|9 +S9|7156|DURSEJ|9 +S9|7157|DURSEJ|9 +S9|7158|DURSEJ|9 +S9|7159|DURSEJ|9 +S9|7160|DURSEJ|9 +S9|7161|DURSEJ|9 +S9|7162|DURSEJ|9 +S9|7163|DURSEJ|9 +S9|7164|DURSEJ|9 +S9|7165|DURSEJ|9 +S9|7166|DURSEJ|9 +S9|7167|DURSEJ|9 +S9|7168|DURSEJ|9 +S9|7169|DURSEJ|9 +S9|7170|DURSEJ|9 +S9|7171|DURSEJ|9 +S9|7172|DURSEJ|9 +S9|7173|DURSEJ|9 +S9|7174|DURSEJ|9 +S9|7175|DURSEJ|9 +S9|7176|DURSEJ|9 +S9|7177|DURSEJ|9 +S9|7178|DURSEJ|9 +S9|7179|DURSEJ|9 +S9|7180|DURSEJ|9 +S9|7181|DURSEJ|9 +S9|7182|DURSEJ|9 +S9|7183|DURSEJ|9 +S9|7184|DURSEJ|9 +S9|7185|DURSEJ|9 +S9|7186|DURSEJ|9 +S9|7187|DURSEJ|9 +S9|7188|DURSEJ|9 +S9|7189|DURSEJ|9 +S9|7190|DURSEJ|9 +S9|7191|DURSEJ|9 +S9|7192|DURSEJ|9 +S9|7193|DURSEJ|9 +S9|7194|DURSEJ|9 +S9|7195|DURSEJ|9 +S9|7196|DURSEJ|9 +S9|7197|DURSEJ|9 +S9|7198|DURSEJ|9 +S9|7199|DURSEJ|9 +S9|7200|DURSEJ|9 +S9|7201|DURSEJ|9 +S9|7202|DURSEJ|9 +S9|7203|DURSEJ|9 +S9|7204|DURSEJ|9 +S9|7205|DURSEJ|9 +S9|7206|DURSEJ|9 +S9|7207|DURSEJ|9 +S9|7208|DURSEJ|9 +S9|7209|DURSEJ|9 +S9|7210|DURSEJ|9 +S9|7211|DURSEJ|9 +S9|7212|DURSEJ|9 +S9|7213|DURSEJ|9 +S9|7214|DURSEJ|9 +S9|7215|DURSEJ|9 +S9|7216|DURSEJ|9 +S9|7217|DURSEJ|9 +S9|7218|DURSEJ|9 +S9|7219|DURSEJ|9 +S9|7220|DURSEJ|9 +S9|7221|DURSEJ|9 +S9|7222|DURSEJ|9 +S9|7223|DURSEJ|9 +S9|7224|DURSEJ|9 +S9|7225|DURSEJ|9 +S9|7226|DURSEJ|9 +S9|7227|DURSEJ|9 +S9|7228|DURSEJ|9 +S9|7229|DURSEJ|9 +S9|7230|DURSEJ|9 +S9|7231|DURSEJ|9 +S9|7232|DURSEJ|9 +S9|7233|DURSEJ|9 +S9|7234|DURSEJ|9 +S9|7235|DURSEJ|9 +S9|7236|DURSEJ|9 +S9|7237|DURSEJ|9 +S9|7238|DURSEJ|9 +S9|7239|DURSEJ|9 +S9|7240|DURSEJ|9 +S9|7241|DURSEJ|9 +S9|7242|DURSEJ|9 +S9|7243|DURSEJ|9 +S9|7244|DURSEJ|9 +S9|7245|DURSEJ|9 +S9|7246|DURSEJ|9 +S9|7247|DURSEJ|9 +S9|7248|DURSEJ|9 +S9|7249|DURSEJ|9 +S9|7250|DURSEJ|9 +S9|7251|DURSEJ|9 +S9|7252|DURSEJ|9 +S9|7253|DURSEJ|9 +S9|7254|DURSEJ|9 +S9|7255|DURSEJ|9 +S9|7256|DURSEJ|9 +S9|7257|DURSEJ|9 +S9|7258|DURSEJ|9 +S9|7259|DURSEJ|9 +S9|7260|DURSEJ|9 +S9|7261|DURSEJ|9 +S9|7262|DURSEJ|9 +S9|7263|DURSEJ|9 +S9|7264|DURSEJ|9 +S9|7265|DURSEJ|9 +S9|7266|DURSEJ|9 +S9|7267|DURSEJ|9 +S9|7268|DURSEJ|9 +S9|7269|DURSEJ|9 +S9|7270|DURSEJ|9 +S9|7271|DURSEJ|9 +S9|7272|DURSEJ|9 +S9|7273|DURSEJ|9 +S9|7274|DURSEJ|9 +S9|7275|DURSEJ|9 +S9|7276|DURSEJ|9 +S9|7277|DURSEJ|9 +S9|7278|DURSEJ|9 +S9|7279|DURSEJ|9 +S9|7280|DURSEJ|9 +S9|7281|DURSEJ|9 +S9|7282|DURSEJ|9 +S9|7283|DURSEJ|9 +S9|7284|DURSEJ|9 +S9|7285|DURSEJ|9 +S9|7286|DURSEJ|9 +S9|7287|DURSEJ|9 +S9|7288|DURSEJ|9 +S9|7289|DURSEJ|9 +S9|7290|DURSEJ|9 +S9|7291|DURSEJ|9 +S9|7292|DURSEJ|9 +S9|7293|DURSEJ|9 +S9|7294|DURSEJ|9 +S9|7295|DURSEJ|9 +S9|7296|DURSEJ|9 +S9|7297|DURSEJ|9 +S9|7298|DURSEJ|9 +S9|7299|DURSEJ|9 +S9|7300|DURSEJ|9 +S9|7301|DURSEJ|9 +S9|7302|DURSEJ|9 +S9|7303|DURSEJ|9 +S9|7304|DURSEJ|9 +S9|7305|DURSEJ|9 +S9|7306|DURSEJ|9 +S9|7307|DURSEJ|9 +S9|7308|DURSEJ|9 +S9|7309|DURSEJ|9 +S9|7310|DURSEJ|9 +S9|7311|DURSEJ|9 +S9|7312|DURSEJ|9 +S9|7313|DURSEJ|9 +S9|7314|DURSEJ|9 +S9|7315|DURSEJ|9 +S9|7316|DURSEJ|9 +S9|7317|DURSEJ|9 +S9|7318|DURSEJ|9 +S9|7319|DURSEJ|9 +S9|7320|DURSEJ|9 +S9|7321|DURSEJ|9 +S9|7322|DURSEJ|9 +S9|7323|DURSEJ|9 +S9|7324|DURSEJ|9 +S9|7325|DURSEJ|9 +S9|7326|DURSEJ|9 +S9|7327|DURSEJ|9 +S9|7328|DURSEJ|9 +S9|7329|DURSEJ|9 +S9|7330|DURSEJ|9 +S9|7331|DURSEJ|9 +S9|7332|DURSEJ|9 +S9|7333|DURSEJ|9 +S9|7334|DURSEJ|9 +S9|7335|DURSEJ|9 +S9|7336|DURSEJ|9 +S9|7337|DURSEJ|9 +S9|7338|DURSEJ|9 +S9|7339|DURSEJ|9 +S9|7340|DURSEJ|9 +S9|7341|DURSEJ|9 +S9|7342|DURSEJ|9 +S9|7343|DURSEJ|9 +S9|7344|DURSEJ|9 +S9|7345|DURSEJ|9 +S9|7346|DURSEJ|9 +S9|7347|DURSEJ|9 +S9|7348|DURSEJ|9 +S9|7349|DURSEJ|9 +S9|7350|DURSEJ|9 +S9|7351|DURSEJ|9 +S9|7352|DURSEJ|9 +S9|7353|DURSEJ|9 +S9|7354|DURSEJ|9 +S9|7355|DURSEJ|9 +S9|7356|DURSEJ|9 +S9|7357|DURSEJ|9 +S9|7358|DURSEJ|9 +S9|7359|DURSEJ|9 +S9|7360|DURSEJ|9 +S9|7361|DURSEJ|9 +S9|7362|DURSEJ|9 +S9|7363|DURSEJ|9 +S9|7364|DURSEJ|9 +S9|7365|DURSEJ|9 +S9|7366|DURSEJ|9 +S9|7367|DURSEJ|9 +S9|7368|DURSEJ|9 +S9|7369|DURSEJ|9 +S9|7370|DURSEJ|9 +S9|7371|DURSEJ|9 +S9|7372|DURSEJ|9 +S9|7373|DURSEJ|9 +S9|7374|DURSEJ|9 +S9|7375|DURSEJ|9 +S9|7376|DURSEJ|9 +S9|7377|DURSEJ|9 +S9|7378|DURSEJ|9 +S9|7379|DURSEJ|9 +S9|7380|DURSEJ|9 +S9|7381|DURSEJ|9 +S9|7382|DURSEJ|9 +S9|7383|DURSEJ|9 +S9|7384|DURSEJ|9 +S9|7385|DURSEJ|9 +S9|7386|DURSEJ|9 +S9|7387|DURSEJ|9 +S9|7388|DURSEJ|9 +S9|7389|DURSEJ|9 +S9|7390|DURSEJ|9 +S9|7391|DURSEJ|9 +S9|7392|DURSEJ|9 +S9|7393|DURSEJ|9 +S9|7394|DURSEJ|9 +S9|7395|DURSEJ|9 +S9|7396|DURSEJ|9 +S9|7397|DURSEJ|9 +S9|7398|DURSEJ|9 +S9|7399|DURSEJ|9 +S9|7400|DURSEJ|9 +S9|7401|DURSEJ|9 +S9|7402|DURSEJ|9 +S9|7403|DURSEJ|9 +S9|7404|DURSEJ|9 +S9|7405|DURSEJ|9 +S9|7406|DURSEJ|9 +S9|7407|DURSEJ|9 +S9|7408|DURSEJ|9 +S9|7409|DURSEJ|9 +S9|7410|DURSEJ|9 +S9|7411|DURSEJ|9 +S9|7412|DURSEJ|9 +S9|7413|DURSEJ|9 +S9|7414|DURSEJ|9 +S9|7415|DURSEJ|9 +S9|7416|DURSEJ|9 +S9|7417|DURSEJ|9 +S9|7418|DURSEJ|9 +S9|7419|DURSEJ|9 +S9|7420|DURSEJ|9 +S9|7421|DURSEJ|9 +S9|7422|DURSEJ|9 +S9|7423|DURSEJ|9 +S9|7424|DURSEJ|9 +S9|7425|DURSEJ|9 +S9|7426|DURSEJ|9 +S9|7427|DURSEJ|9 +S9|7428|DURSEJ|9 +S9|7429|DURSEJ|9 +S9|7430|DURSEJ|9 +S9|7431|DURSEJ|9 +S9|7432|DURSEJ|9 +S9|7433|DURSEJ|9 +S9|7434|DURSEJ|9 +S9|7435|DURSEJ|9 +S9|7436|DURSEJ|9 +S9|7437|DURSEJ|9 +S9|7438|DURSEJ|9 +S9|7439|DURSEJ|9 +S9|7440|DURSEJ|9 +S9|7441|DURSEJ|9 +S9|7442|DURSEJ|9 +S9|7443|DURSEJ|9 +S9|7444|DURSEJ|9 +S9|7445|DURSEJ|9 +S9|7446|DURSEJ|9 +S9|7447|DURSEJ|9 +S9|7448|DURSEJ|9 +S9|7449|DURSEJ|9 +S9|7450|DURSEJ|9 +S9|7451|DURSEJ|9 +S9|7452|DURSEJ|9 +S9|7453|DURSEJ|9 +S9|7454|DURSEJ|9 +S9|7455|DURSEJ|9 +S9|7456|DURSEJ|9 +S9|7457|DURSEJ|9 +S9|7458|DURSEJ|9 +S9|7459|DURSEJ|9 +S9|7460|DURSEJ|9 +S9|7461|DURSEJ|9 +S9|7462|DURSEJ|9 +S9|7463|DURSEJ|9 +S9|7464|DURSEJ|9 +S9|7465|DURSEJ|9 +S9|7466|DURSEJ|9 +S9|7467|DURSEJ|9 +S9|7468|DURSEJ|9 +S9|7469|DURSEJ|9 +S9|7470|DURSEJ|9 +S9|7471|DURSEJ|9 +S9|7472|DURSEJ|9 +S9|7473|DURSEJ|9 +S9|7474|DURSEJ|9 +S9|7475|DURSEJ|9 +S9|7476|DURSEJ|9 +S9|7477|DURSEJ|9 +S9|7478|DURSEJ|9 +S9|7479|DURSEJ|9 +S9|7480|DURSEJ|9 +S9|7481|DURSEJ|9 +S9|7482|DURSEJ|9 +S9|7483|DURSEJ|9 +S9|7484|DURSEJ|9 +S9|7485|DURSEJ|9 +S9|7486|DURSEJ|9 +S9|7487|DURSEJ|9 +S9|7488|DURSEJ|9 +S9|7489|DURSEJ|9 +S9|7490|DURSEJ|9 +S9|7491|DURSEJ|9 +S9|7492|DURSEJ|9 +S9|7493|DURSEJ|9 +S9|7494|DURSEJ|9 +S9|7495|DURSEJ|9 +S9|7496|DURSEJ|9 +S9|7497|DURSEJ|9 +S9|7498|DURSEJ|9 +S9|7499|DURSEJ|9 +S9|7500|DURSEJ|9 +S9|7501|DURSEJ|9 +S9|7502|DURSEJ|9 +S9|7503|DURSEJ|9 +S9|7504|DURSEJ|9 +S9|7505|DURSEJ|9 +S9|7506|DURSEJ|9 +S9|7507|DURSEJ|9 +S9|7508|DURSEJ|9 +S9|7509|DURSEJ|9 +S9|7510|DURSEJ|9 +S9|7511|DURSEJ|9 +S9|7512|DURSEJ|9 +S9|7513|DURSEJ|9 +S9|7514|DURSEJ|9 +S9|7515|DURSEJ|9 +S9|7516|DURSEJ|9 +S9|7517|DURSEJ|9 +S9|7518|DURSEJ|9 +S9|7519|DURSEJ|9 +S9|7520|DURSEJ|9 +S9|7521|DURSEJ|9 +S9|7522|DURSEJ|9 +S9|7523|DURSEJ|9 +S9|7524|DURSEJ|9 +S9|7525|DURSEJ|9 +S9|7526|DURSEJ|9 +S9|7527|DURSEJ|9 +S9|7528|DURSEJ|9 +S9|7529|DURSEJ|9 +S9|7530|DURSEJ|9 +S9|7531|DURSEJ|9 +S9|7532|DURSEJ|9 +S9|7533|DURSEJ|9 +S9|7534|DURSEJ|9 +S9|7535|DURSEJ|9 +S9|7536|DURSEJ|9 +S9|7537|DURSEJ|9 +S9|7538|DURSEJ|9 +S9|7539|DURSEJ|9 +S9|7540|DURSEJ|9 +S9|7541|DURSEJ|9 +S9|7542|DURSEJ|9 +S9|7543|DURSEJ|9 +S9|7544|DURSEJ|9 +S9|7545|DURSEJ|9 +S9|7546|DURSEJ|9 +S9|7547|DURSEJ|9 +S9|7548|DURSEJ|9 +S9|7549|DURSEJ|9 +S9|7550|DURSEJ|9 +S9|7551|DURSEJ|9 +S9|7552|DURSEJ|9 +S9|7553|DURSEJ|9 +S9|7554|DURSEJ|9 +S9|7555|DURSEJ|9 +S9|7556|DURSEJ|9 +S9|7557|DURSEJ|9 +S9|7558|DURSEJ|9 +S9|7559|DURSEJ|9 +S9|7560|DURSEJ|9 +S9|7561|DURSEJ|9 +S9|7562|DURSEJ|9 +S9|7563|DURSEJ|9 +S9|7564|DURSEJ|9 +S9|7565|DURSEJ|9 +S9|7566|DURSEJ|9 +S9|7567|DURSEJ|9 +S9|7568|DURSEJ|9 +S9|7569|DURSEJ|9 +S9|7570|DURSEJ|9 +S9|7571|DURSEJ|9 +S9|7572|DURSEJ|9 +S9|7573|DURSEJ|9 +S9|7574|DURSEJ|9 +S9|7575|DURSEJ|9 +S9|7576|DURSEJ|9 +S9|7577|DURSEJ|9 +S9|7578|DURSEJ|9 +S9|7579|DURSEJ|9 +S9|7580|DURSEJ|9 +S9|7581|DURSEJ|9 +S9|7582|DURSEJ|9 +S9|7583|DURSEJ|9 +S9|7584|DURSEJ|9 +S9|7585|DURSEJ|9 +S9|7586|DURSEJ|9 +S9|7587|DURSEJ|9 +S9|7588|DURSEJ|9 +S9|7589|DURSEJ|9 +S9|7590|DURSEJ|9 +S9|7591|DURSEJ|9 +S9|7592|DURSEJ|9 +S9|7593|DURSEJ|9 +S9|7594|DURSEJ|9 +S9|7595|DURSEJ|9 +S9|7596|DURSEJ|9 +S9|7597|DURSEJ|9 +S9|7598|DURSEJ|9 +S9|7599|DURSEJ|9 +S9|7600|DURSEJ|9 +S9|7601|DURSEJ|9 +S9|7602|DURSEJ|9 +S9|7603|DURSEJ|9 +S9|7604|DURSEJ|9 +S9|7605|DURSEJ|9 +S9|7606|DURSEJ|9 +S9|7607|DURSEJ|9 +S9|7608|DURSEJ|9 +S9|7609|DURSEJ|9 +S9|7610|DURSEJ|9 +S9|7611|DURSEJ|9 +S9|7612|DURSEJ|9 +S9|7613|DURSEJ|9 +S9|7614|DURSEJ|9 +S9|7615|DURSEJ|9 +S9|7616|DURSEJ|9 +S9|7617|DURSEJ|9 +S9|7618|DURSEJ|9 +S9|7619|DURSEJ|9 +S9|7620|DURSEJ|9 +S9|7621|DURSEJ|9 +S9|7622|DURSEJ|9 +S9|7623|DURSEJ|9 +S9|7624|DURSEJ|9 +S9|7625|DURSEJ|9 +S9|7626|DURSEJ|9 +S9|7627|DURSEJ|9 +S9|7628|DURSEJ|9 +S9|7629|DURSEJ|9 +S9|7630|DURSEJ|9 +S9|7631|DURSEJ|9 +S9|7632|DURSEJ|9 +S9|7633|DURSEJ|9 +S9|7634|DURSEJ|9 +S9|7635|DURSEJ|9 +S9|7636|DURSEJ|9 +S9|7637|DURSEJ|9 +S9|7638|DURSEJ|9 +S9|7639|DURSEJ|9 +S9|7640|DURSEJ|9 +S9|7641|DURSEJ|9 +S9|7642|DURSEJ|9 +S9|7643|DURSEJ|9 +S9|7644|DURSEJ|9 +S9|7645|DURSEJ|9 +S9|7646|DURSEJ|9 +S9|7647|DURSEJ|9 +S9|7648|DURSEJ|9 +S9|7649|DURSEJ|9 +S9|7650|DURSEJ|9 +S9|7651|DURSEJ|9 +S9|7652|DURSEJ|9 +S9|7653|DURSEJ|9 +S9|7654|DURSEJ|9 +S9|7655|DURSEJ|9 +S9|7656|DURSEJ|9 +S9|7657|DURSEJ|9 +S9|7658|DURSEJ|9 +S9|7659|DURSEJ|9 +S9|7660|DURSEJ|9 +S9|7661|DURSEJ|9 +S9|7662|DURSEJ|9 +S9|7663|DURSEJ|9 +S9|7664|DURSEJ|9 +S9|7665|DURSEJ|9 +S9|7666|DURSEJ|9 +S9|7667|DURSEJ|9 +S9|7668|DURSEJ|9 +S9|7669|DURSEJ|9 +S9|7670|DURSEJ|9 +S9|7671|DURSEJ|9 +S9|7672|DURSEJ|9 +S9|7673|DURSEJ|9 +S9|7674|DURSEJ|9 +S9|7675|DURSEJ|9 +S9|7676|DURSEJ|9 +S9|7677|DURSEJ|9 +S9|7678|DURSEJ|9 +S9|7679|DURSEJ|9 +S9|7680|DURSEJ|9 +S9|7681|DURSEJ|9 +S9|7682|DURSEJ|9 +S9|7683|DURSEJ|9 +S9|7684|DURSEJ|9 +S9|7685|DURSEJ|9 +S9|7686|DURSEJ|9 +S9|7687|DURSEJ|9 +S9|7688|DURSEJ|9 +S9|7689|DURSEJ|9 +S9|7690|DURSEJ|9 +S9|7691|DURSEJ|9 +S9|7692|DURSEJ|9 +S9|7693|DURSEJ|9 +S9|7694|DURSEJ|9 +S9|7695|DURSEJ|9 +S9|7696|DURSEJ|9 +S9|7697|DURSEJ|9 +S9|7698|DURSEJ|9 +S9|7699|DURSEJ|9 +S9|7700|DURSEJ|9 +S9|7701|DURSEJ|9 +S9|7702|DURSEJ|9 +S9|7703|DURSEJ|9 +S9|7704|DURSEJ|9 +S9|7705|DURSEJ|9 +S9|7706|DURSEJ|9 +S9|7707|DURSEJ|9 +S9|7708|DURSEJ|9 +S9|7709|DURSEJ|9 +S9|7710|DURSEJ|9 +S9|7711|DURSEJ|9 +S9|7712|DURSEJ|9 +S9|7713|DURSEJ|9 +S9|7714|DURSEJ|9 +S9|7715|DURSEJ|9 +S9|7716|DURSEJ|9 +S9|7717|DURSEJ|9 +S9|7718|DURSEJ|9 +S9|7719|DURSEJ|9 +S9|7720|DURSEJ|9 +S9|7721|DURSEJ|9 +S9|7722|DURSEJ|9 +S9|7723|DURSEJ|9 +S9|7724|DURSEJ|9 +S9|7725|DURSEJ|9 +S9|7726|DURSEJ|9 +S9|7727|DURSEJ|9 +S9|7728|DURSEJ|9 +S9|7729|DURSEJ|9 +S9|7730|DURSEJ|9 +S9|7731|DURSEJ|9 +S9|7732|DURSEJ|9 +S9|7733|DURSEJ|9 +S9|7734|DURSEJ|9 +S9|7735|DURSEJ|9 +S9|7736|DURSEJ|9 +S9|7737|DURSEJ|9 +S9|7738|DURSEJ|9 +S9|7739|DURSEJ|9 +S9|7740|DURSEJ|9 +S9|7741|DURSEJ|9 +S9|7742|DURSEJ|9 +S9|7743|DURSEJ|9 +S9|7744|DURSEJ|9 +S9|7745|DURSEJ|9 +S9|7746|DURSEJ|9 +S9|7747|DURSEJ|9 +S9|7748|DURSEJ|9 +S9|7749|DURSEJ|9 +S9|7750|DURSEJ|9 +S9|7751|DURSEJ|9 +S9|7752|DURSEJ|9 +S9|7753|DURSEJ|9 +S9|7754|DURSEJ|9 +S9|7755|DURSEJ|9 +S9|7756|DURSEJ|9 +S9|7757|DURSEJ|9 +S9|7758|DURSEJ|9 +S9|7759|DURSEJ|9 +S9|7760|DURSEJ|9 +S9|7761|DURSEJ|9 +S9|7762|DURSEJ|9 +S9|7763|DURSEJ|9 +S9|7764|DURSEJ|9 +S9|7765|DURSEJ|9 +S9|7766|DURSEJ|9 +S9|7767|DURSEJ|9 +S9|7768|DURSEJ|9 +S9|7769|DURSEJ|9 +S9|7770|DURSEJ|9 +S9|7771|DURSEJ|9 +S9|7772|DURSEJ|9 +S9|7773|DURSEJ|9 +S9|7774|DURSEJ|9 +S9|7775|DURSEJ|9 +S9|7776|DURSEJ|9 +S9|7777|DURSEJ|9 +S9|7778|DURSEJ|9 +S9|7779|DURSEJ|9 +S9|7780|DURSEJ|9 +S9|7781|DURSEJ|9 +S9|7782|DURSEJ|9 +S9|7783|DURSEJ|9 +S9|7784|DURSEJ|9 +S9|7785|DURSEJ|9 +S9|7786|DURSEJ|9 +S9|7787|DURSEJ|9 +S9|7788|DURSEJ|9 +S9|7789|DURSEJ|9 +S9|7790|DURSEJ|9 +S9|7791|DURSEJ|9 +S9|7792|DURSEJ|9 +S9|7793|DURSEJ|9 +S9|7794|DURSEJ|9 +S9|7795|DURSEJ|9 +S9|7796|DURSEJ|9 +S9|7797|DURSEJ|9 +S9|7798|DURSEJ|9 +S9|7799|DURSEJ|9 +S9|7800|DURSEJ|9 +S9|7801|DURSEJ|9 +S9|7802|DURSEJ|9 +S9|7803|DURSEJ|9 +S9|7804|DURSEJ|9 +S9|7805|DURSEJ|9 +S9|7806|DURSEJ|9 +S9|7807|DURSEJ|9 +S9|7808|DURSEJ|9 +S9|7809|DURSEJ|9 +S9|7810|DURSEJ|9 +S9|7811|DURSEJ|9 +S9|7812|DURSEJ|9 +S9|7813|DURSEJ|9 +S9|7814|DURSEJ|9 +S9|7815|DURSEJ|9 +S9|7816|DURSEJ|9 +S9|7817|DURSEJ|9 +S9|7818|DURSEJ|9 +S9|7819|DURSEJ|9 +S9|7820|DURSEJ|9 +S9|7821|DURSEJ|9 +S9|7822|DURSEJ|9 +S9|7823|DURSEJ|9 +S9|7824|DURSEJ|9 +S9|7825|DURSEJ|9 +S9|7826|DURSEJ|9 +S9|7827|DURSEJ|9 +S9|7828|DURSEJ|9 +S9|7829|DURSEJ|9 +S9|7830|DURSEJ|9 +S9|7831|DURSEJ|9 +S9|7832|DURSEJ|9 +S9|7833|DURSEJ|9 +S9|7834|DURSEJ|9 +S9|7835|DURSEJ|9 +S9|7836|DURSEJ|9 +S9|7837|DURSEJ|9 +S9|7838|DURSEJ|9 +S9|7839|DURSEJ|9 +S9|7840|DURSEJ|9 +S9|7841|DURSEJ|9 +S9|7842|DURSEJ|9 +S9|7843|DURSEJ|9 +S9|7844|DURSEJ|9 +S9|7845|DURSEJ|9 +S9|7846|DURSEJ|9 +S9|7847|DURSEJ|9 +S9|7848|DURSEJ|9 +S9|7849|DURSEJ|9 +S9|7850|DURSEJ|9 +S9|7851|DURSEJ|9 +S9|7852|DURSEJ|9 +S9|7853|DURSEJ|9 +S9|7854|DURSEJ|9 +S9|7855|DURSEJ|9 +S9|7856|DURSEJ|9 +S9|7857|DURSEJ|9 +S9|7858|DURSEJ|9 +S9|7859|DURSEJ|9 +S9|7860|DURSEJ|9 +S9|7861|DURSEJ|9 +S9|7862|DURSEJ|9 +S9|7863|DURSEJ|9 +S9|7864|DURSEJ|9 +S9|7865|DURSEJ|9 +S9|7866|DURSEJ|9 +S9|7867|DURSEJ|9 +S9|7868|DURSEJ|9 +S9|7869|DURSEJ|9 +S9|7870|DURSEJ|9 +S9|7871|DURSEJ|9 +S9|7872|DURSEJ|9 +S9|7873|DURSEJ|9 +S9|7874|DURSEJ|9 +S9|7875|DURSEJ|9 +S9|7876|DURSEJ|9 +S9|7877|DURSEJ|9 +S9|7878|DURSEJ|9 +S9|7879|DURSEJ|9 +S9|7880|DURSEJ|9 +S9|7881|DURSEJ|9 +S9|7882|DURSEJ|9 +S9|7883|DURSEJ|9 +S9|7884|DURSEJ|9 +S9|7885|DURSEJ|9 +S9|7886|DURSEJ|9 +S9|7887|DURSEJ|9 +S9|7888|DURSEJ|9 +S9|7889|DURSEJ|9 +S9|7890|DURSEJ|9 +S9|7891|DURSEJ|9 +S9|7892|DURSEJ|9 +S9|7893|DURSEJ|9 +S9|7894|DURSEJ|9 +S9|7895|DURSEJ|9 +S9|7896|DURSEJ|9 +S9|7897|DURSEJ|9 +S9|7898|DURSEJ|9 +S9|7899|DURSEJ|9 +S9|7900|DURSEJ|9 +S9|7901|DURSEJ|9 +S9|7902|DURSEJ|9 +S9|7903|DURSEJ|9 +S9|7904|DURSEJ|9 +S9|7905|DURSEJ|9 +S9|7906|DURSEJ|9 +S9|7907|DURSEJ|9 +S9|7908|DURSEJ|9 +S9|7909|DURSEJ|9 +S9|7910|DURSEJ|9 +S9|7911|DURSEJ|9 +S9|7912|DURSEJ|9 +S9|7913|DURSEJ|9 +S9|7914|DURSEJ|9 +S9|7915|DURSEJ|9 +S9|7916|DURSEJ|9 +S9|7917|DURSEJ|9 +S9|7918|DURSEJ|9 +S9|7919|DURSEJ|9 +S9|7920|DURSEJ|9 +S9|7921|DURSEJ|9 +S9|7922|DURSEJ|9 +S9|7923|DURSEJ|9 +S9|7924|DURSEJ|9 +S9|7925|DURSEJ|9 +S9|7926|DURSEJ|9 +S9|7927|DURSEJ|9 +S9|7928|DURSEJ|9 +S9|7929|DURSEJ|9 +S9|7930|DURSEJ|9 +S9|7931|DURSEJ|9 +S9|7932|DURSEJ|9 +S9|7933|DURSEJ|9 +S9|7934|DURSEJ|9 +S9|7935|DURSEJ|9 +S9|7936|DURSEJ|9 +S9|7937|DURSEJ|9 +S9|7938|DURSEJ|9 +S9|7939|DURSEJ|9 +S9|7940|DURSEJ|9 +S9|7941|DURSEJ|9 +S9|7942|DURSEJ|9 +S9|7943|DURSEJ|9 +S9|7944|DURSEJ|9 +S9|7945|DURSEJ|9 +S9|7946|DURSEJ|9 +S9|7947|DURSEJ|9 +S9|7948|DURSEJ|9 +S9|7949|DURSEJ|9 +S9|7950|DURSEJ|9 +S9|7951|DURSEJ|9 +S9|7952|DURSEJ|9 +S9|7953|DURSEJ|9 +S9|7954|DURSEJ|9 +S9|7955|DURSEJ|9 +S9|7956|DURSEJ|9 +S9|7957|DURSEJ|9 +S9|7958|DURSEJ|9 +S9|7959|DURSEJ|9 +S9|7960|DURSEJ|9 +S9|7961|DURSEJ|9 +S9|7962|DURSEJ|9 +S9|7963|DURSEJ|9 +S9|7964|DURSEJ|9 +S9|7965|DURSEJ|9 +S9|7966|DURSEJ|9 +S9|7967|DURSEJ|9 +S9|7968|DURSEJ|9 +S9|7969|DURSEJ|9 +S9|7970|DURSEJ|9 +S9|7971|DURSEJ|9 +S9|7972|DURSEJ|9 +S9|7973|DURSEJ|9 +S9|7974|DURSEJ|9 +S9|7975|DURSEJ|9 +S9|7976|DURSEJ|9 +S9|7977|DURSEJ|9 +S9|7978|DURSEJ|9 +S9|7979|DURSEJ|9 +S9|7980|DURSEJ|9 +S9|7981|DURSEJ|9 +S9|7982|DURSEJ|9 +S9|7983|DURSEJ|9 +S9|7984|DURSEJ|9 +S9|7985|DURSEJ|9 +S9|7986|DURSEJ|9 +S9|7987|DURSEJ|9 +S9|7988|DURSEJ|9 +S9|7989|DURSEJ|9 +S9|7990|DURSEJ|9 +S9|7991|DURSEJ|9 +S9|7992|DURSEJ|9 +S9|7993|DURSEJ|9 +S9|7994|DURSEJ|9 +S9|7995|DURSEJ|9 +S9|7996|DURSEJ|9 +S9|7997|DURSEJ|9 +S9|7998|DURSEJ|9 +S9|7999|DURSEJ|9 +S9|8000|DURSEJ|9 +S9|8001|DURSEJ|9 +S9|8002|DURSEJ|9 +S9|8003|DURSEJ|9 +S9|8004|DURSEJ|9 +S9|8005|DURSEJ|9 +S9|8006|DURSEJ|9 +S9|8007|DURSEJ|9 +S9|8008|DURSEJ|9 +S9|8009|DURSEJ|9 +S9|8010|DURSEJ|9 +S9|8011|DURSEJ|9 +S9|8012|DURSEJ|9 +S9|8013|DURSEJ|9 +S9|8014|DURSEJ|9 +S9|8015|DURSEJ|9 +S9|8016|DURSEJ|9 +S9|8017|DURSEJ|9 +S9|8018|DURSEJ|9 +S9|8019|DURSEJ|9 +S9|8020|DURSEJ|9 +S9|8021|DURSEJ|9 +S9|8022|DURSEJ|9 +S9|8023|DURSEJ|9 +S9|8024|DURSEJ|9 +S9|8025|DURSEJ|9 +S9|8026|DURSEJ|9 +S9|8027|DURSEJ|9 +S9|8028|DURSEJ|9 +S9|8029|DURSEJ|9 +S9|8030|DURSEJ|9 +S9|8031|DURSEJ|9 +S9|8032|DURSEJ|9 +S9|8033|DURSEJ|9 +S9|8034|DURSEJ|9 +S9|8035|DURSEJ|9 +S9|8036|DURSEJ|9 +S9|8037|DURSEJ|9 +S9|8038|DURSEJ|9 +S9|8039|DURSEJ|9 +S9|8040|DURSEJ|9 +S9|8041|DURSEJ|9 +S9|8042|DURSEJ|9 +S9|8043|DURSEJ|9 +S9|8044|DURSEJ|9 +S9|8045|DURSEJ|9 +S9|8046|DURSEJ|9 +S9|8047|DURSEJ|9 +S9|8048|DURSEJ|9 +S9|8049|DURSEJ|9 +S9|8050|DURSEJ|9 +S9|8051|DURSEJ|9 +S9|8052|DURSEJ|9 +S9|8053|DURSEJ|9 +S9|8054|DURSEJ|9 +S9|8055|DURSEJ|9 +S9|8056|DURSEJ|9 +S9|8057|DURSEJ|9 +S9|8058|DURSEJ|9 +S9|8059|DURSEJ|9 +S9|8060|DURSEJ|9 +S9|8061|DURSEJ|9 +S9|8062|DURSEJ|9 +S9|8063|DURSEJ|9 +S9|8064|DURSEJ|9 +S9|8065|DURSEJ|9 +S9|8066|DURSEJ|9 +S9|8067|DURSEJ|9 +S9|8068|DURSEJ|9 +S9|8069|DURSEJ|9 +S9|8070|DURSEJ|9 +S9|8071|DURSEJ|9 +S9|8072|DURSEJ|9 +S9|8073|DURSEJ|9 +S9|8074|DURSEJ|9 +S9|8075|DURSEJ|9 +S9|8076|DURSEJ|9 +S9|8077|DURSEJ|9 +S9|8078|DURSEJ|9 +S9|8079|DURSEJ|9 +S9|8080|DURSEJ|9 +S9|8081|DURSEJ|9 +S9|8082|DURSEJ|9 +S9|8083|DURSEJ|9 +S9|8084|DURSEJ|9 +S9|8085|DURSEJ|9 +S9|8086|DURSEJ|9 +S9|8087|DURSEJ|9 +S9|8088|DURSEJ|9 +S9|8089|DURSEJ|9 +S9|8090|DURSEJ|9 +S9|8091|DURSEJ|9 +S9|8092|DURSEJ|9 +S9|8093|DURSEJ|9 +S9|8094|DURSEJ|9 +S9|8095|DURSEJ|9 +S9|8096|DURSEJ|9 +S9|8097|DURSEJ|9 +S9|8098|DURSEJ|9 +S9|8099|DURSEJ|9 +S9|8100|DURSEJ|9 +S9|8101|DURSEJ|9 +S9|8102|DURSEJ|9 +S9|8103|DURSEJ|9 +S9|8104|DURSEJ|9 +S9|8105|DURSEJ|9 +S9|8106|DURSEJ|9 +S9|8107|DURSEJ|9 +S9|8108|DURSEJ|9 +S9|8109|DURSEJ|9 +S9|8110|DURSEJ|9 +S9|8111|DURSEJ|9 +S9|8112|DURSEJ|9 +S9|8113|DURSEJ|9 +S9|8114|DURSEJ|9 +S9|8115|DURSEJ|9 +S9|8116|DURSEJ|9 +S9|8117|DURSEJ|9 +S9|8118|DURSEJ|9 +S9|8119|DURSEJ|9 +S9|8120|DURSEJ|9 +S9|8121|DURSEJ|9 +S9|8122|DURSEJ|9 +S9|8123|DURSEJ|9 +S9|8124|DURSEJ|9 +S9|8125|DURSEJ|9 +S9|8126|DURSEJ|9 +S9|8127|DURSEJ|9 +S9|8128|DURSEJ|9 +S9|8129|DURSEJ|9 +S9|8130|DURSEJ|9 +S9|8131|DURSEJ|9 +S9|8132|DURSEJ|9 +S9|8133|DURSEJ|9 +S9|8134|DURSEJ|9 +S9|8135|DURSEJ|9 +S9|8136|DURSEJ|9 +S9|8137|DURSEJ|9 +S9|8138|DURSEJ|9 +S9|8139|DURSEJ|9 +S9|8140|DURSEJ|9 +S9|8141|DURSEJ|9 +S9|8142|DURSEJ|9 +S9|8143|DURSEJ|9 +S9|8144|DURSEJ|9 +S9|8145|DURSEJ|9 +S9|8146|DURSEJ|9 +S9|8147|DURSEJ|9 +S9|8148|DURSEJ|9 +S9|8149|DURSEJ|9 +S9|8150|DURSEJ|9 +S9|8151|DURSEJ|9 +S9|8152|DURSEJ|9 +S9|8153|DURSEJ|9 +S9|8154|DURSEJ|9 +S9|8155|DURSEJ|9 +S9|8156|DURSEJ|9 +S9|8157|DURSEJ|9 +S9|8158|DURSEJ|9 +S9|8159|DURSEJ|9 +S9|8160|DURSEJ|9 +S9|8161|DURSEJ|9 +S9|8162|DURSEJ|9 +S9|8163|DURSEJ|9 +S9|8164|DURSEJ|9 +S9|8165|DURSEJ|9 +S9|8166|DURSEJ|9 +S9|8167|DURSEJ|9 +S9|8168|DURSEJ|9 +S9|8169|DURSEJ|9 +S9|8170|DURSEJ|9 +S9|8171|DURSEJ|9 +S9|8172|DURSEJ|9 +S9|8173|DURSEJ|9 +S9|8174|DURSEJ|9 +S9|8175|DURSEJ|9 +S9|8176|DURSEJ|9 +S9|8177|DURSEJ|9 +S9|8178|DURSEJ|9 +S9|8179|DURSEJ|9 +S9|8180|DURSEJ|9 +S9|8181|DURSEJ|9 +S9|8182|DURSEJ|9 +S9|8183|DURSEJ|9 +S9|8184|DURSEJ|9 +S9|8185|DURSEJ|9 +S9|8186|DURSEJ|9 +S9|8187|DURSEJ|9 +S9|8188|DURSEJ|9 +S9|8189|DURSEJ|9 +S9|8190|DURSEJ|9 +S9|8191|DURSEJ|9 +S9|8192|DURSEJ|9 +S9|8193|DURSEJ|9 +S9|8194|DURSEJ|9 +S9|8195|DURSEJ|9 +S9|8196|DURSEJ|9 +S9|8197|DURSEJ|9 +S9|8198|DURSEJ|9 +S9|8199|DURSEJ|9 +S9|8200|DURSEJ|9 +S9|8201|DURSEJ|9 +S9|8202|DURSEJ|9 +S9|8203|DURSEJ|9 +S9|8204|DURSEJ|9 +S9|8205|DURSEJ|9 +S9|8206|DURSEJ|9 +S9|8207|DURSEJ|9 +S9|8208|DURSEJ|9 +S9|8209|DURSEJ|9 +S9|8210|DURSEJ|9 +S9|8211|DURSEJ|9 +S9|8212|DURSEJ|9 +S9|8213|DURSEJ|9 +S9|8214|DURSEJ|9 +S9|8215|DURSEJ|9 +S9|8216|DURSEJ|9 +S9|8217|DURSEJ|9 +S9|8218|DURSEJ|9 +S9|8219|DURSEJ|9 +S9|8220|DURSEJ|9 +S9|8221|DURSEJ|9 +S9|8222|DURSEJ|9 +S9|8223|DURSEJ|9 +S9|8224|DURSEJ|9 +S9|8225|DURSEJ|9 +S9|8226|DURSEJ|9 +S9|8227|DURSEJ|9 +S9|8228|DURSEJ|9 +S9|8229|DURSEJ|9 +S9|8230|DURSEJ|9 +S9|8231|DURSEJ|9 +S9|8232|DURSEJ|9 +S9|8233|DURSEJ|9 +S9|8234|DURSEJ|9 +S9|8235|DURSEJ|9 +S9|8236|DURSEJ|9 +S9|8237|DURSEJ|9 +S9|8238|DURSEJ|9 +S9|8239|DURSEJ|9 +S9|8240|DURSEJ|9 +S9|8241|DURSEJ|9 +S9|8242|DURSEJ|9 +S9|8243|DURSEJ|9 +S9|8244|DURSEJ|9 +S9|8245|DURSEJ|9 +S9|8246|DURSEJ|9 +S9|8247|DURSEJ|9 +S9|8248|DURSEJ|9 +S9|8249|DURSEJ|9 +S9|8250|DURSEJ|9 +S9|8251|DURSEJ|9 +S9|8252|DURSEJ|9 +S9|8253|DURSEJ|9 +S9|8254|DURSEJ|9 +S9|8255|DURSEJ|9 +S9|8256|DURSEJ|9 +S9|8257|DURSEJ|9 +S9|8258|DURSEJ|9 +S9|8259|DURSEJ|9 +S9|8260|DURSEJ|9 +S9|8261|DURSEJ|9 +S9|8262|DURSEJ|9 +S9|8263|DURSEJ|9 +S9|8264|DURSEJ|9 +S9|8265|DURSEJ|9 +S9|8266|DURSEJ|9 +S9|8267|DURSEJ|9 +S9|8268|DURSEJ|9 +S9|8269|DURSEJ|9 +S9|8270|DURSEJ|9 +S9|8271|DURSEJ|9 +S9|8272|DURSEJ|9 +S9|8273|DURSEJ|9 +S9|8274|DURSEJ|9 +S9|8275|DURSEJ|9 +S9|8276|DURSEJ|9 +S9|8277|DURSEJ|9 +S9|8278|DURSEJ|9 +S9|8279|DURSEJ|9 +S9|8280|DURSEJ|9 +S9|8281|DURSEJ|9 +S9|8282|DURSEJ|9 +S9|8283|DURSEJ|9 +S9|8284|DURSEJ|9 +S9|8285|DURSEJ|9 +S9|8286|DURSEJ|9 +S9|8287|DURSEJ|9 +S9|8288|DURSEJ|9 +S9|8289|DURSEJ|9 +S9|8290|DURSEJ|9 +S9|8291|DURSEJ|9 +S9|8292|DURSEJ|9 +S9|8293|DURSEJ|9 +S9|8294|DURSEJ|9 +S9|8295|DURSEJ|9 +S9|8296|DURSEJ|9 +S9|8297|DURSEJ|9 +S9|8298|DURSEJ|9 +S9|8299|DURSEJ|9 +S9|8300|DURSEJ|9 +S9|8301|DURSEJ|9 +S9|8302|DURSEJ|9 +S9|8303|DURSEJ|9 +S9|8304|DURSEJ|9 +S9|8305|DURSEJ|9 +S9|8306|DURSEJ|9 +S9|8307|DURSEJ|9 +S9|8308|DURSEJ|9 +S9|8309|DURSEJ|9 +S9|8310|DURSEJ|9 +S9|8311|DURSEJ|9 +S9|8312|DURSEJ|9 +S9|8313|DURSEJ|9 +S9|8314|DURSEJ|9 +S9|8315|DURSEJ|9 +S9|8316|DURSEJ|9 +S9|8317|DURSEJ|9 +S9|8318|DURSEJ|9 +S9|8319|DURSEJ|9 +S9|8320|DURSEJ|9 +S9|8321|DURSEJ|9 +S9|8322|DURSEJ|9 +S9|8323|DURSEJ|9 +S9|8324|DURSEJ|9 +S9|8325|DURSEJ|9 +S9|8326|DURSEJ|9 +S9|8327|DURSEJ|9 +S9|8328|DURSEJ|9 +S9|8329|DURSEJ|9 +S9|8330|DURSEJ|9 +S9|8331|DURSEJ|9 +S9|8332|DURSEJ|9 +S9|8333|DURSEJ|9 +S9|8334|DURSEJ|9 +S9|8335|DURSEJ|9 +S9|8336|DURSEJ|9 +S9|8337|DURSEJ|9 +S9|8338|DURSEJ|9 +S9|8339|DURSEJ|9 +S9|8340|DURSEJ|9 +S9|8341|DURSEJ|9 +S9|8342|DURSEJ|9 +S9|8343|DURSEJ|9 +S9|8344|DURSEJ|9 +S9|8345|DURSEJ|9 +S9|8346|DURSEJ|9 +S9|8347|DURSEJ|9 +S9|8348|DURSEJ|9 +S9|8349|DURSEJ|9 +S9|8350|DURSEJ|9 +S9|8351|DURSEJ|9 +S9|8352|DURSEJ|9 +S9|8353|DURSEJ|9 +S9|8354|DURSEJ|9 +S9|8355|DURSEJ|9 +S9|8356|DURSEJ|9 +S9|8357|DURSEJ|9 +S9|8358|DURSEJ|9 +S9|8359|DURSEJ|9 +S9|8360|DURSEJ|9 +S9|8361|DURSEJ|9 +S9|8362|DURSEJ|9 +S9|8363|DURSEJ|9 +S9|8364|DURSEJ|9 +S9|8365|DURSEJ|9 +S9|8366|DURSEJ|9 +S9|8367|DURSEJ|9 +S9|8368|DURSEJ|9 +S9|8369|DURSEJ|9 +S9|8370|DURSEJ|9 +S9|8371|DURSEJ|9 +S9|8372|DURSEJ|9 +S9|8373|DURSEJ|9 +S9|8374|DURSEJ|9 +S9|8375|DURSEJ|9 +S9|8376|DURSEJ|9 +S9|8377|DURSEJ|9 +S9|8378|DURSEJ|9 +S9|8379|DURSEJ|9 +S9|8380|DURSEJ|9 +S9|8381|DURSEJ|9 +S9|8382|DURSEJ|9 +S9|8383|DURSEJ|9 +S9|8384|DURSEJ|9 +S9|8385|DURSEJ|9 +S9|8386|DURSEJ|9 +S9|8387|DURSEJ|9 +S9|8388|DURSEJ|9 +S9|8389|DURSEJ|9 +S9|8390|DURSEJ|9 +S9|8391|DURSEJ|9 +S9|8392|DURSEJ|9 +S9|8393|DURSEJ|9 +S9|8394|DURSEJ|9 +S9|8395|DURSEJ|9 +S9|8396|DURSEJ|9 +S9|8397|DURSEJ|9 +S9|8398|DURSEJ|9 +S9|8399|DURSEJ|9 +S9|8400|DURSEJ|9 +S9|8401|DURSEJ|9 +S9|8402|DURSEJ|9 +S9|8403|DURSEJ|9 +S9|8404|DURSEJ|9 +S9|8405|DURSEJ|9 +S9|8406|DURSEJ|9 +S9|8407|DURSEJ|9 +S9|8408|DURSEJ|9 +S9|8409|DURSEJ|9 +S9|8410|DURSEJ|9 +S9|8411|DURSEJ|9 +S9|8412|DURSEJ|9 +S9|8413|DURSEJ|9 +S9|8414|DURSEJ|9 +S9|8415|DURSEJ|9 +S9|8416|DURSEJ|9 +S9|8417|DURSEJ|9 +S9|8418|DURSEJ|9 +S9|8419|DURSEJ|9 +S9|8420|DURSEJ|9 +S9|8421|DURSEJ|9 +S9|8422|DURSEJ|9 +S9|8423|DURSEJ|9 +S9|8424|DURSEJ|9 +S9|8425|DURSEJ|9 +S9|8426|DURSEJ|9 +S9|8427|DURSEJ|9 +S9|8428|DURSEJ|9 +S9|8429|DURSEJ|9 +S9|8430|DURSEJ|9 +S9|8431|DURSEJ|9 +S9|8432|DURSEJ|9 +S9|8433|DURSEJ|9 +S9|8434|DURSEJ|9 +S9|8435|DURSEJ|9 +S9|8436|DURSEJ|9 +S9|8437|DURSEJ|9 +S9|8438|DURSEJ|9 +S9|8439|DURSEJ|9 +S9|8440|DURSEJ|9 +S9|8441|DURSEJ|9 +S9|8442|DURSEJ|9 +S9|8443|DURSEJ|9 +S9|8444|DURSEJ|9 +S9|8445|DURSEJ|9 +S9|8446|DURSEJ|9 +S9|8447|DURSEJ|9 +S9|8448|DURSEJ|9 +S9|8449|DURSEJ|9 +S9|8450|DURSEJ|9 +S9|8451|DURSEJ|9 +S9|8452|DURSEJ|9 +S9|8453|DURSEJ|9 +S9|8454|DURSEJ|9 +S9|8455|DURSEJ|9 +S9|8456|DURSEJ|9 +S9|8457|DURSEJ|9 +S9|8458|DURSEJ|9 +S9|8459|DURSEJ|9 +S9|8460|DURSEJ|9 +S9|8461|DURSEJ|9 +S9|8462|DURSEJ|9 +S9|8463|DURSEJ|9 +S9|8464|DURSEJ|9 +S9|8465|DURSEJ|9 +S9|8466|DURSEJ|9 +S9|8467|DURSEJ|9 +S9|8468|DURSEJ|9 +S9|8469|DURSEJ|9 +S9|8470|DURSEJ|9 +S9|8471|DURSEJ|9 +S9|8472|DURSEJ|9 +S9|8473|DURSEJ|9 +S9|8474|DURSEJ|9 +S9|8475|DURSEJ|9 +S9|8476|DURSEJ|9 +S9|8477|DURSEJ|9 +S9|8478|DURSEJ|9 +S9|8479|DURSEJ|9 +S9|8480|DURSEJ|9 +S9|8481|DURSEJ|9 +S9|8482|DURSEJ|9 +S9|8483|DURSEJ|9 +S9|8484|DURSEJ|9 +S9|8485|DURSEJ|9 +S9|8486|DURSEJ|9 +S9|8487|DURSEJ|9 +S9|8488|DURSEJ|9 +S9|8489|DURSEJ|9 +S9|8490|DURSEJ|9 +S9|8491|DURSEJ|9 +S9|8492|DURSEJ|9 +S9|8493|DURSEJ|9 +S9|8494|DURSEJ|9 +S9|8495|DURSEJ|9 +S9|8496|DURSEJ|9 +S9|8497|DURSEJ|9 +S9|8498|DURSEJ|9 +S9|8499|DURSEJ|9 +S9|8500|DURSEJ|9 +S9|8501|DURSEJ|9 +S9|8502|DURSEJ|9 +S9|8503|DURSEJ|9 +S9|8504|DURSEJ|9 +S9|8505|DURSEJ|9 +S9|8506|DURSEJ|9 +S9|8507|DURSEJ|9 +S9|8508|DURSEJ|9 +S9|8509|DURSEJ|9 +S9|8510|DURSEJ|9 +S9|8511|DURSEJ|9 +S9|8512|DURSEJ|9 +S9|8513|DURSEJ|9 +S9|8514|DURSEJ|9 +S9|8515|DURSEJ|9 +S9|8516|DURSEJ|9 +S9|8517|DURSEJ|9 +S9|8518|DURSEJ|9 +S9|8519|DURSEJ|9 +S9|8520|DURSEJ|9 +S9|8521|DURSEJ|9 +S9|8522|DURSEJ|9 +S9|8523|DURSEJ|9 +S9|8524|DURSEJ|9 +S9|8525|DURSEJ|9 +S9|8526|DURSEJ|9 +S9|8527|DURSEJ|9 +S9|8528|DURSEJ|9 +S9|8529|DURSEJ|9 +S9|8530|DURSEJ|9 +S9|8531|DURSEJ|9 +S9|8532|DURSEJ|9 +S9|8533|DURSEJ|9 +S9|8534|DURSEJ|9 +S9|8535|DURSEJ|9 +S9|8536|DURSEJ|9 +S9|8537|DURSEJ|9 +S9|8538|DURSEJ|9 +S9|8539|DURSEJ|9 +S9|8540|DURSEJ|9 +S9|8541|DURSEJ|9 +S9|8542|DURSEJ|9 +S9|8543|DURSEJ|9 +S9|8544|DURSEJ|9 +S9|8545|DURSEJ|9 +S9|8546|DURSEJ|9 +S9|8547|DURSEJ|9 +S9|8548|DURSEJ|9 +S9|8549|DURSEJ|9 +S9|8550|DURSEJ|9 +S9|8551|DURSEJ|9 +S9|8552|DURSEJ|9 +S9|8553|DURSEJ|9 +S9|8554|DURSEJ|9 +S9|8555|DURSEJ|9 +S9|8556|DURSEJ|9 +S9|8557|DURSEJ|9 +S9|8558|DURSEJ|9 +S9|8559|DURSEJ|9 +S9|8560|DURSEJ|9 +S9|8561|DURSEJ|9 +S9|8562|DURSEJ|9 +S9|8563|DURSEJ|9 +S9|8564|DURSEJ|9 +S9|8565|DURSEJ|9 +S9|8566|DURSEJ|9 +S9|8567|DURSEJ|9 +S9|8568|DURSEJ|9 +S9|8569|DURSEJ|9 +S9|8570|DURSEJ|9 +S9|8571|DURSEJ|9 +S9|8572|DURSEJ|9 +S9|8573|DURSEJ|9 +S9|8574|DURSEJ|9 +S9|8575|DURSEJ|9 +S9|8576|DURSEJ|9 +S9|8577|DURSEJ|9 +S9|8578|DURSEJ|9 +S9|8579|DURSEJ|9 +S9|8580|DURSEJ|9 +S9|8581|DURSEJ|9 +S9|8582|DURSEJ|9 +S9|8583|DURSEJ|9 +S9|8584|DURSEJ|9 +S9|8585|DURSEJ|9 +S9|8586|DURSEJ|9 +S9|8587|DURSEJ|9 +S9|8588|DURSEJ|9 +S9|8589|DURSEJ|9 +S9|8590|DURSEJ|9 +S9|8591|DURSEJ|9 +S9|8592|DURSEJ|9 +S9|8593|DURSEJ|9 +S9|8594|DURSEJ|9 +S9|8595|DURSEJ|9 +S9|8596|DURSEJ|9 +S9|8597|DURSEJ|9 +S9|8598|DURSEJ|9 +S9|8599|DURSEJ|9 +S9|8600|DURSEJ|9 +S9|8601|DURSEJ|9 +S9|8602|DURSEJ|9 +S9|8603|DURSEJ|9 +S9|8604|DURSEJ|9 +S9|8605|DURSEJ|9 +S9|8606|DURSEJ|9 +S9|8607|DURSEJ|9 +S9|8608|DURSEJ|9 +S9|8609|DURSEJ|9 +S9|8610|DURSEJ|9 +S9|8611|DURSEJ|9 +S9|8612|DURSEJ|9 +S9|8613|DURSEJ|9 +S9|8614|DURSEJ|9 +S9|8615|DURSEJ|9 +S9|8616|DURSEJ|9 +S9|8617|DURSEJ|9 +S9|8618|DURSEJ|9 +S9|8619|DURSEJ|9 +S9|8620|DURSEJ|9 +S9|8621|DURSEJ|9 +S9|8622|DURSEJ|9 +S9|8623|DURSEJ|9 +S9|8624|DURSEJ|9 +S9|8625|DURSEJ|9 +S9|8626|DURSEJ|9 +S9|8627|DURSEJ|9 +S9|8628|DURSEJ|9 +S9|8629|DURSEJ|9 +S9|8630|DURSEJ|9 +S9|8631|DURSEJ|9 +S9|8632|DURSEJ|9 +S9|8633|DURSEJ|9 +S9|8634|DURSEJ|9 +S9|8635|DURSEJ|9 +S9|8636|DURSEJ|9 +S9|8637|DURSEJ|9 +S9|8638|DURSEJ|9 +S9|8639|DURSEJ|9 +S9|8640|DURSEJ|9 +S9|8641|DURSEJ|9 +S9|8642|DURSEJ|9 +S9|8643|DURSEJ|9 +S9|8644|DURSEJ|9 +S9|8645|DURSEJ|9 +S9|8646|DURSEJ|9 +S9|8647|DURSEJ|9 +S9|8648|DURSEJ|9 +S9|8649|DURSEJ|9 +S9|8650|DURSEJ|9 +S9|8651|DURSEJ|9 +S9|8652|DURSEJ|9 +S9|8653|DURSEJ|9 +S9|8654|DURSEJ|9 +S9|8655|DURSEJ|9 +S9|8656|DURSEJ|9 +S9|8657|DURSEJ|9 +S9|8658|DURSEJ|9 +S9|8659|DURSEJ|9 +S9|8660|DURSEJ|9 +S9|8661|DURSEJ|9 +S9|8662|DURSEJ|9 +S9|8663|DURSEJ|9 +S9|8664|DURSEJ|9 +S9|8665|DURSEJ|9 +S9|8666|DURSEJ|9 +S9|8667|DURSEJ|9 +S9|8668|DURSEJ|9 +S9|8669|DURSEJ|9 +S9|8670|DURSEJ|9 +S9|8671|DURSEJ|9 +S9|8672|DURSEJ|9 +S9|8673|DURSEJ|9 +S9|8674|DURSEJ|9 +S9|8675|DURSEJ|9 +S9|8676|DURSEJ|9 +S9|8677|DURSEJ|9 +S9|8678|DURSEJ|9 +S9|8679|DURSEJ|9 +S9|8680|DURSEJ|9 +S9|8681|DURSEJ|9 +S9|8682|DURSEJ|9 +S9|8683|DURSEJ|9 +S9|8684|DURSEJ|9 +S9|8685|DURSEJ|9 +S9|8686|DURSEJ|9 +S9|8687|DURSEJ|9 +S9|8688|DURSEJ|9 +S9|8689|DURSEJ|9 +S9|8690|DURSEJ|9 +S9|8691|DURSEJ|9 +S9|8692|DURSEJ|9 +S9|8693|DURSEJ|9 +S9|8694|DURSEJ|9 +S9|8695|DURSEJ|9 +S9|8696|DURSEJ|9 +S9|8697|DURSEJ|9 +S9|8698|DURSEJ|9 +S9|8699|DURSEJ|9 +S9|8700|DURSEJ|9 +S9|8701|DURSEJ|9 +S9|8702|DURSEJ|9 +S9|8703|DURSEJ|9 +S9|8704|DURSEJ|9 +S9|8705|DURSEJ|9 +S9|8706|DURSEJ|9 +S9|8707|DURSEJ|9 +S9|8708|DURSEJ|9 +S9|8709|DURSEJ|9 +S9|8710|DURSEJ|9 +S9|8711|DURSEJ|9 +S9|8712|DURSEJ|9 +S9|8713|DURSEJ|9 +S9|8714|DURSEJ|9 +S9|8715|DURSEJ|9 +S9|8716|DURSEJ|9 +S9|8717|DURSEJ|9 +S9|8718|DURSEJ|9 +S9|8719|DURSEJ|9 +S9|8720|DURSEJ|9 +S9|8721|DURSEJ|9 +S9|8722|DURSEJ|9 +S9|8723|DURSEJ|9 +S9|8724|DURSEJ|9 +S9|8725|DURSEJ|9 +S9|8726|DURSEJ|9 +S9|8727|DURSEJ|9 +S9|8728|DURSEJ|9 +S9|8729|DURSEJ|9 +S9|8730|DURSEJ|9 +S9|8731|DURSEJ|9 +S9|8732|DURSEJ|9 +S9|8733|DURSEJ|9 +S9|8734|DURSEJ|9 +S9|8735|DURSEJ|9 +S9|8736|DURSEJ|9 +S9|8737|DURSEJ|9 +S9|8738|DURSEJ|9 +S9|8739|DURSEJ|9 +S9|8740|DURSEJ|9 +S9|8741|DURSEJ|9 +S9|8742|DURSEJ|9 +S9|8743|DURSEJ|9 +S9|8744|DURSEJ|9 +S9|8745|DURSEJ|9 +S9|8746|DURSEJ|9 +S9|8747|DURSEJ|9 +S9|8748|DURSEJ|9 +S9|8749|DURSEJ|9 +S9|8750|DURSEJ|9 +S9|8751|DURSEJ|9 +S9|8752|DURSEJ|9 +S9|8753|DURSEJ|9 +S9|8754|DURSEJ|9 +S9|8755|DURSEJ|9 +S9|8756|DURSEJ|9 +S9|8757|DURSEJ|9 +S9|8758|DURSEJ|9 +S9|8759|DURSEJ|9 +S9|8760|DURSEJ|9 +S9|8761|DURSEJ|9 +S9|8762|DURSEJ|9 +S9|8763|DURSEJ|9 +S9|8764|DURSEJ|9 +S9|8765|DURSEJ|9 +S9|8766|DURSEJ|9 +S9|8767|DURSEJ|9 +S9|8768|DURSEJ|9 +S9|8769|DURSEJ|9 +S9|8770|DURSEJ|9 +S9|8771|DURSEJ|9 +S9|8772|DURSEJ|9 +S9|8773|DURSEJ|9 +S9|8774|DURSEJ|9 +S9|8775|DURSEJ|9 +S9|8776|DURSEJ|9 +S9|8777|DURSEJ|9 +S9|8778|DURSEJ|9 +S9|8779|DURSEJ|9 +S9|8780|DURSEJ|9 +S9|8781|DURSEJ|9 +S9|8782|DURSEJ|9 +S9|8783|DURSEJ|9 +S9|8784|DURSEJ|9 +S9|8785|DURSEJ|9 +S9|8786|DURSEJ|9 +S9|8787|DURSEJ|9 +S9|8788|DURSEJ|9 +S9|8789|DURSEJ|9 +S9|8790|DURSEJ|9 +S9|8791|DURSEJ|9 +S9|8792|DURSEJ|9 +S9|8793|DURSEJ|9 +S9|8794|DURSEJ|9 +S9|8795|DURSEJ|9 +S9|8796|DURSEJ|9 +S9|8797|DURSEJ|9 +S9|8798|DURSEJ|9 +S9|8799|DURSEJ|9 +S9|8800|DURSEJ|9 +S9|8801|DURSEJ|9 +S9|8802|DURSEJ|9 +S9|8803|DURSEJ|9 +S9|8804|DURSEJ|9 +S9|8805|DURSEJ|9 +S9|8806|DURSEJ|9 +S9|8807|DURSEJ|9 +S9|8808|DURSEJ|9 +S9|8809|DURSEJ|9 +S9|8810|DURSEJ|9 +S9|8811|DURSEJ|9 +S9|8812|DURSEJ|9 +S9|8813|DURSEJ|9 +S9|8814|DURSEJ|9 +S9|8815|DURSEJ|9 +S9|8816|DURSEJ|9 +S9|8817|DURSEJ|9 +S9|8818|DURSEJ|9 +S9|8819|DURSEJ|9 +S9|8820|DURSEJ|9 +S9|8821|DURSEJ|9 +S9|8822|DURSEJ|9 +S9|8823|DURSEJ|9 +S9|8824|DURSEJ|9 +S9|8825|DURSEJ|9 +S9|8826|DURSEJ|9 +S9|8827|DURSEJ|9 +S9|8828|DURSEJ|9 +S9|8829|DURSEJ|9 +S9|8830|DURSEJ|9 +S9|8831|DURSEJ|9 +S9|8832|DURSEJ|9 +S9|8833|DURSEJ|9 +S9|8834|DURSEJ|9 +S9|8835|DURSEJ|9 +S9|8836|DURSEJ|9 +S9|8837|DURSEJ|9 +S9|8838|DURSEJ|9 +S9|8839|DURSEJ|9 +S9|8840|DURSEJ|9 +S9|8841|DURSEJ|9 +S9|8842|DURSEJ|9 +S9|8843|DURSEJ|9 +S9|8844|DURSEJ|9 +S9|8845|DURSEJ|9 +S9|8846|DURSEJ|9 +S9|8847|DURSEJ|9 +S9|8848|DURSEJ|9 +S9|8849|DURSEJ|9 +S9|8850|DURSEJ|9 +S9|8851|DURSEJ|9 +S9|8852|DURSEJ|9 +S9|8853|DURSEJ|9 +S9|8854|DURSEJ|9 +S9|8855|DURSEJ|9 +S9|8856|DURSEJ|9 +S9|8857|DURSEJ|9 +S9|8858|DURSEJ|9 +S9|8859|DURSEJ|9 +S9|8860|DURSEJ|9 +S9|8861|DURSEJ|9 +S9|8862|DURSEJ|9 +S9|8863|DURSEJ|9 +S9|8864|DURSEJ|9 +S9|8865|DURSEJ|9 +S9|8866|DURSEJ|9 +S9|8867|DURSEJ|9 +S9|8868|DURSEJ|9 +S9|8869|DURSEJ|9 +S9|8870|DURSEJ|9 +S9|8871|DURSEJ|9 +S9|8872|DURSEJ|9 +S9|8873|DURSEJ|9 +S9|8874|DURSEJ|9 +S9|8875|DURSEJ|9 +S9|8876|DURSEJ|9 +S9|8877|DURSEJ|9 +S9|8878|DURSEJ|9 +S9|8879|DURSEJ|9 +S9|8880|DURSEJ|9 +S9|8881|DURSEJ|9 +S9|8882|DURSEJ|9 +S9|8883|DURSEJ|9 +S9|8884|DURSEJ|9 +S9|8885|DURSEJ|9 +S9|8886|DURSEJ|9 +S9|8887|DURSEJ|9 +S9|8888|DURSEJ|9 +S9|8889|DURSEJ|9 +S9|8890|DURSEJ|9 +S9|8891|DURSEJ|9 +S9|8892|DURSEJ|9 +S9|8893|DURSEJ|9 +S9|8894|DURSEJ|9 +S9|8895|DURSEJ|9 +S9|8896|DURSEJ|9 +S9|8897|DURSEJ|9 +S9|8898|DURSEJ|9 +S9|8899|DURSEJ|9 +S9|8900|DURSEJ|9 +S9|8901|DURSEJ|9 +S9|8902|DURSEJ|9 +S9|8903|DURSEJ|9 +S9|8904|DURSEJ|9 +S9|8905|DURSEJ|9 +S9|8906|DURSEJ|9 +S9|8907|DURSEJ|9 +S9|8908|DURSEJ|9 +S9|8909|DURSEJ|9 +S9|8910|DURSEJ|9 +S9|8911|DURSEJ|9 +S9|8912|DURSEJ|9 +S9|8913|DURSEJ|9 +S9|8914|DURSEJ|9 +S9|8915|DURSEJ|9 +S9|8916|DURSEJ|9 +S9|8917|DURSEJ|9 +S9|8918|DURSEJ|9 +S9|8919|DURSEJ|9 +S9|8920|DURSEJ|9 +S9|8921|DURSEJ|9 +S9|8922|DURSEJ|9 +S9|8923|DURSEJ|9 +S9|8924|DURSEJ|9 +S9|8925|DURSEJ|9 +S9|8926|DURSEJ|9 +S9|8927|DURSEJ|9 +S9|8928|DURSEJ|9 +S9|8929|DURSEJ|9 +S9|8930|DURSEJ|9 +S9|8931|DURSEJ|9 +S9|8932|DURSEJ|9 +S9|8933|DURSEJ|9 +S9|8934|DURSEJ|9 +S9|8935|DURSEJ|9 +S9|8936|DURSEJ|9 +S9|8937|DURSEJ|9 +S9|8938|DURSEJ|9 +S9|8939|DURSEJ|9 +S9|8940|DURSEJ|9 +S9|8941|DURSEJ|9 +S9|8942|DURSEJ|9 +S9|8943|DURSEJ|9 +S9|8944|DURSEJ|9 +S9|8945|DURSEJ|9 +S9|8946|DURSEJ|9 +S9|8947|DURSEJ|9 +S9|8948|DURSEJ|9 +S9|8949|DURSEJ|9 +S9|8950|DURSEJ|9 +S9|8951|DURSEJ|9 +S9|8952|DURSEJ|9 +S9|8953|DURSEJ|9 +S9|8954|DURSEJ|9 +S9|8955|DURSEJ|9 +S9|8956|DURSEJ|9 +S9|8957|DURSEJ|9 +S9|8958|DURSEJ|9 +S9|8959|DURSEJ|9 +S9|8960|DURSEJ|9 +S9|8961|DURSEJ|9 +S9|8962|DURSEJ|9 +S9|8963|DURSEJ|9 +S9|8964|DURSEJ|9 +S9|8965|DURSEJ|9 +S9|8966|DURSEJ|9 +S9|8967|DURSEJ|9 +S9|8968|DURSEJ|9 +S9|8969|DURSEJ|9 +S9|8970|DURSEJ|9 +S9|8971|DURSEJ|9 +S9|8972|DURSEJ|9 +S9|8973|DURSEJ|9 +S9|8974|DURSEJ|9 +S9|8975|DURSEJ|9 +S9|8976|DURSEJ|9 +S9|8977|DURSEJ|9 +S9|8978|DURSEJ|9 +S9|8979|DURSEJ|9 +S9|8980|DURSEJ|9 +S9|8981|DURSEJ|9 +S9|8982|DURSEJ|9 +S9|8983|DURSEJ|9 +S9|8984|DURSEJ|9 +S9|8985|DURSEJ|9 +S9|8986|DURSEJ|9 +S9|8987|DURSEJ|9 +S9|8988|DURSEJ|9 +S9|8989|DURSEJ|9 +S9|8990|DURSEJ|9 +S9|8991|DURSEJ|9 +S9|8992|DURSEJ|9 +S9|8993|DURSEJ|9 +S9|8994|DURSEJ|9 +S9|8995|DURSEJ|9 +S9|8996|DURSEJ|9 +S9|8997|DURSEJ|9 +S9|8998|DURSEJ|9 +S9|8999|DURSEJ|9 +S9|9000|DURSEJ|9 +S9|9001|DURSEJ|9 +S9|9002|DURSEJ|9 +S9|9003|DURSEJ|9 +S9|9004|DURSEJ|9 +S9|9005|DURSEJ|9 +S9|9006|DURSEJ|9 +S9|9007|DURSEJ|9 +S9|9008|DURSEJ|9 +S9|9009|DURSEJ|9 +S9|9010|DURSEJ|9 +S9|9011|DURSEJ|9 +S9|9012|DURSEJ|9 +S9|9013|DURSEJ|9 +S9|9014|DURSEJ|9 +S9|9015|DURSEJ|9 +S9|9016|DURSEJ|9 +S9|9017|DURSEJ|9 +S9|9018|DURSEJ|9 +S9|9019|DURSEJ|9 +S9|9020|DURSEJ|9 +S9|9021|DURSEJ|9 +S9|9022|DURSEJ|9 +S9|9023|DURSEJ|9 +S9|9024|DURSEJ|9 +S9|9025|DURSEJ|9 +S9|9026|DURSEJ|9 +S9|9027|DURSEJ|9 +S9|9028|DURSEJ|9 +S9|9029|DURSEJ|9 +S9|9030|DURSEJ|9 +S9|9031|DURSEJ|9 +S9|9032|DURSEJ|9 +S9|9033|DURSEJ|9 +S9|9034|DURSEJ|9 +S9|9035|DURSEJ|9 +S9|9036|DURSEJ|9 +S9|9037|DURSEJ|9 +S9|9038|DURSEJ|9 +S9|9039|DURSEJ|9 +S9|9040|DURSEJ|9 +S9|9041|DURSEJ|9 +S9|9042|DURSEJ|9 +S9|9043|DURSEJ|9 +S9|9044|DURSEJ|9 +S9|9045|DURSEJ|9 +S9|9046|DURSEJ|9 +S9|9047|DURSEJ|9 +S9|9048|DURSEJ|9 +S9|9049|DURSEJ|9 +S9|9050|DURSEJ|9 +S9|9051|DURSEJ|9 +S9|9052|DURSEJ|9 +S9|9053|DURSEJ|9 +S9|9054|DURSEJ|9 +S9|9055|DURSEJ|9 +S9|9056|DURSEJ|9 +S9|9057|DURSEJ|9 +S9|9058|DURSEJ|9 +S9|9059|DURSEJ|9 +S9|9060|DURSEJ|9 +S9|9061|DURSEJ|9 +S9|9062|DURSEJ|9 +S9|9063|DURSEJ|9 +S9|9064|DURSEJ|9 +S9|9065|DURSEJ|9 +S9|9066|DURSEJ|9 +S9|9067|DURSEJ|9 +S9|9068|DURSEJ|9 +S9|9069|DURSEJ|9 +S9|9070|DURSEJ|9 +S9|9071|DURSEJ|9 +S9|9072|DURSEJ|9 +S9|9073|DURSEJ|9 +S9|9074|DURSEJ|9 +S9|9075|DURSEJ|9 +S9|9076|DURSEJ|9 +S9|9077|DURSEJ|9 +S9|9078|DURSEJ|9 +S9|9079|DURSEJ|9 +S9|9080|DURSEJ|9 +S9|9081|DURSEJ|9 +S9|9082|DURSEJ|9 +S9|9083|DURSEJ|9 +S9|9084|DURSEJ|9 +S9|9085|DURSEJ|9 +S9|9086|DURSEJ|9 +S9|9087|DURSEJ|9 +S9|9088|DURSEJ|9 +S9|9089|DURSEJ|9 +S9|9090|DURSEJ|9 +S9|9091|DURSEJ|9 +S9|9092|DURSEJ|9 +S9|9093|DURSEJ|9 +S9|9094|DURSEJ|9 +S9|9095|DURSEJ|9 +S9|9096|DURSEJ|9 +S9|9097|DURSEJ|9 +S9|9098|DURSEJ|9 +S9|9099|DURSEJ|9 +S9|9100|DURSEJ|9 +S9|9101|DURSEJ|9 +S9|9102|DURSEJ|9 +S9|9103|DURSEJ|9 +S9|9104|DURSEJ|9 +S9|9105|DURSEJ|9 +S9|9106|DURSEJ|9 +S9|9107|DURSEJ|9 +S9|9108|DURSEJ|9 +S9|9109|DURSEJ|9 +S9|9110|DURSEJ|9 +S9|9111|DURSEJ|9 +S9|9112|DURSEJ|9 +S9|9113|DURSEJ|9 +S9|9114|DURSEJ|9 +S9|9115|DURSEJ|9 +S9|9116|DURSEJ|9 +S9|9117|DURSEJ|9 +S9|9118|DURSEJ|9 +S9|9119|DURSEJ|9 +S9|9120|DURSEJ|9 +S9|9121|DURSEJ|9 +S9|9122|DURSEJ|9 +S9|9123|DURSEJ|9 +S9|9124|DURSEJ|9 +S9|9125|DURSEJ|9 +S9|9126|DURSEJ|9 +S9|9127|DURSEJ|9 +S9|9128|DURSEJ|9 +S9|9129|DURSEJ|9 +S9|9130|DURSEJ|9 +S9|9131|DURSEJ|9 +S9|9132|DURSEJ|9 +S9|9133|DURSEJ|9 +S9|9134|DURSEJ|9 +S9|9135|DURSEJ|9 +S9|9136|DURSEJ|9 +S9|9137|DURSEJ|9 +S9|9138|DURSEJ|9 +S9|9139|DURSEJ|9 +S9|9140|DURSEJ|9 +S9|9141|DURSEJ|9 +S9|9142|DURSEJ|9 +S9|9143|DURSEJ|9 +S9|9144|DURSEJ|9 +S9|9145|DURSEJ|9 +S9|9146|DURSEJ|9 +S9|9147|DURSEJ|9 +S9|9148|DURSEJ|9 +S9|9149|DURSEJ|9 +S9|9150|DURSEJ|9 +S9|9151|DURSEJ|9 +S9|9152|DURSEJ|9 +S9|9153|DURSEJ|9 +S9|9154|DURSEJ|9 +S9|9155|DURSEJ|9 +S9|9156|DURSEJ|9 +S9|9157|DURSEJ|9 +S9|9158|DURSEJ|9 +S9|9159|DURSEJ|9 +S9|9160|DURSEJ|9 +S9|9161|DURSEJ|9 +S9|9162|DURSEJ|9 +S9|9163|DURSEJ|9 +S9|9164|DURSEJ|9 +S9|9165|DURSEJ|9 +S9|9166|DURSEJ|9 +S9|9167|DURSEJ|9 +S9|9168|DURSEJ|9 +S9|9169|DURSEJ|9 +S9|9170|DURSEJ|9 +S9|9171|DURSEJ|9 +S9|9172|DURSEJ|9 +S9|9173|DURSEJ|9 +S9|9174|DURSEJ|9 +S9|9175|DURSEJ|9 +S9|9176|DURSEJ|9 +S9|9177|DURSEJ|9 +S9|9178|DURSEJ|9 +S9|9179|DURSEJ|9 +S9|9180|DURSEJ|9 +S9|9181|DURSEJ|9 +S9|9182|DURSEJ|9 +S9|9183|DURSEJ|9 +S9|9184|DURSEJ|9 +S9|9185|DURSEJ|9 +S9|9186|DURSEJ|9 +S9|9187|DURSEJ|9 +S9|9188|DURSEJ|9 +S9|9189|DURSEJ|9 +S9|9190|DURSEJ|9 +S9|9191|DURSEJ|9 +S9|9192|DURSEJ|9 +S9|9193|DURSEJ|9 +S9|9194|DURSEJ|9 +S9|9195|DURSEJ|9 +S9|9196|DURSEJ|9 +S9|9197|DURSEJ|9 +S9|9198|DURSEJ|9 +S9|9199|DURSEJ|9 +S9|9200|DURSEJ|9 +S9|9201|DURSEJ|9 +S9|9202|DURSEJ|9 +S9|9203|DURSEJ|9 +S9|9204|DURSEJ|9 +S9|9205|DURSEJ|9 +S9|9206|DURSEJ|9 +S9|9207|DURSEJ|9 +S9|9208|DURSEJ|9 +S9|9209|DURSEJ|9 +S9|9210|DURSEJ|9 +S9|9211|DURSEJ|9 +S9|9212|DURSEJ|9 +S9|9213|DURSEJ|9 +S9|9214|DURSEJ|9 +S9|9215|DURSEJ|9 +S9|9216|DURSEJ|9 +S9|9217|DURSEJ|9 +S9|9218|DURSEJ|9 +S9|9219|DURSEJ|9 +S9|9220|DURSEJ|9 +S9|9221|DURSEJ|9 +S9|9222|DURSEJ|9 +S9|9223|DURSEJ|9 +S9|9224|DURSEJ|9 +S9|9225|DURSEJ|9 +S9|9226|DURSEJ|9 +S9|9227|DURSEJ|9 +S9|9228|DURSEJ|9 +S9|9229|DURSEJ|9 +S9|9230|DURSEJ|9 +S9|9231|DURSEJ|9 +S9|9232|DURSEJ|9 +S9|9233|DURSEJ|9 +S9|9234|DURSEJ|9 +S9|9235|DURSEJ|9 +S9|9236|DURSEJ|9 +S9|9237|DURSEJ|9 +S9|9238|DURSEJ|9 +S9|9239|DURSEJ|9 +S9|9240|DURSEJ|9 +S9|9241|DURSEJ|9 +S9|9242|DURSEJ|9 +S9|9243|DURSEJ|9 +S9|9244|DURSEJ|9 +S9|9245|DURSEJ|9 +S9|9246|DURSEJ|9 +S9|9247|DURSEJ|9 +S9|9248|DURSEJ|9 +S9|9249|DURSEJ|9 +S9|9250|DURSEJ|9 +S9|9251|DURSEJ|9 +S9|9252|DURSEJ|9 +S9|9253|DURSEJ|9 +S9|9254|DURSEJ|9 +S9|9255|DURSEJ|9 +S9|9256|DURSEJ|9 +S9|9257|DURSEJ|9 +S9|9258|DURSEJ|9 +S9|9259|DURSEJ|9 +S9|9260|DURSEJ|9 +S9|9261|DURSEJ|9 +S9|9262|DURSEJ|9 +S9|9263|DURSEJ|9 +S9|9264|DURSEJ|9 +S9|9265|DURSEJ|9 +S9|9266|DURSEJ|9 +S9|9267|DURSEJ|9 +S9|9268|DURSEJ|9 +S9|9269|DURSEJ|9 +S9|9270|DURSEJ|9 +S9|9271|DURSEJ|9 +S9|9272|DURSEJ|9 +S9|9273|DURSEJ|9 +S9|9274|DURSEJ|9 +S9|9275|DURSEJ|9 +S9|9276|DURSEJ|9 +S9|9277|DURSEJ|9 +S9|9278|DURSEJ|9 +S9|9279|DURSEJ|9 +S9|9280|DURSEJ|9 +S9|9281|DURSEJ|9 +S9|9282|DURSEJ|9 +S9|9283|DURSEJ|9 +S9|9284|DURSEJ|9 +S9|9285|DURSEJ|9 +S9|9286|DURSEJ|9 +S9|9287|DURSEJ|9 +S9|9288|DURSEJ|9 +S9|9289|DURSEJ|9 +S9|9290|DURSEJ|9 +S9|9291|DURSEJ|9 +S9|9292|DURSEJ|9 +S9|9293|DURSEJ|9 +S9|9294|DURSEJ|9 +S9|9295|DURSEJ|9 +S9|9296|DURSEJ|9 +S9|9297|DURSEJ|9 +S9|9298|DURSEJ|9 +S9|9299|DURSEJ|9 +S9|9300|DURSEJ|9 +S9|9301|DURSEJ|9 +S9|9302|DURSEJ|9 +S9|9303|DURSEJ|9 +S9|9304|DURSEJ|9 +S9|9305|DURSEJ|9 +S9|9306|DURSEJ|9 +S9|9307|DURSEJ|9 +S9|9308|DURSEJ|9 +S9|9309|DURSEJ|9 +S9|9310|DURSEJ|9 +S9|9311|DURSEJ|9 +S9|9312|DURSEJ|9 +S9|9313|DURSEJ|9 +S9|9314|DURSEJ|9 +S9|9315|DURSEJ|9 +S9|9316|DURSEJ|9 +S9|9317|DURSEJ|9 +S9|9318|DURSEJ|9 +S9|9319|DURSEJ|9 +S9|9320|DURSEJ|9 +S9|9321|DURSEJ|9 +S9|9322|DURSEJ|9 +S9|9323|DURSEJ|9 +S9|9324|DURSEJ|9 +S9|9325|DURSEJ|9 +S9|9326|DURSEJ|9 +S9|9327|DURSEJ|9 +S9|9328|DURSEJ|9 +S9|9329|DURSEJ|9 +S9|9330|DURSEJ|9 +S9|9331|DURSEJ|9 +S9|9332|DURSEJ|9 +S9|9333|DURSEJ|9 +S9|9334|DURSEJ|9 +S9|9335|DURSEJ|9 +S9|9336|DURSEJ|9 +S9|9337|DURSEJ|9 +S9|9338|DURSEJ|9 +S9|9339|DURSEJ|9 +S9|9340|DURSEJ|9 +S9|9341|DURSEJ|9 +S9|9342|DURSEJ|9 +S9|9343|DURSEJ|9 +S9|9344|DURSEJ|9 +S9|9345|DURSEJ|9 +S9|9346|DURSEJ|9 +S9|9347|DURSEJ|9 +S9|9348|DURSEJ|9 +S9|9349|DURSEJ|9 +S9|9350|DURSEJ|9 +S9|9351|DURSEJ|9 +S9|9352|DURSEJ|9 +S9|9353|DURSEJ|9 +S9|9354|DURSEJ|9 +S9|9355|DURSEJ|9 +S9|9356|DURSEJ|9 +S9|9357|DURSEJ|9 +S9|9358|DURSEJ|9 +S9|9359|DURSEJ|9 +S9|9360|DURSEJ|9 +S9|9361|DURSEJ|9 +S9|9362|DURSEJ|9 +S9|9363|DURSEJ|9 +S9|9364|DURSEJ|9 +S9|9365|DURSEJ|9 +S9|9366|DURSEJ|9 +S9|9367|DURSEJ|9 +S9|9368|DURSEJ|9 +S9|9369|DURSEJ|9 +S9|9370|DURSEJ|9 +S9|9371|DURSEJ|9 +S9|9372|DURSEJ|9 +S9|9373|DURSEJ|9 +S9|9374|DURSEJ|9 +S9|9375|DURSEJ|9 +S9|9376|DURSEJ|9 +S9|9377|DURSEJ|9 +S9|9378|DURSEJ|9 +S9|9379|DURSEJ|9 +S9|9380|DURSEJ|9 +S9|9381|DURSEJ|9 +S9|9382|DURSEJ|9 +S9|9383|DURSEJ|9 +S9|9384|DURSEJ|9 +S9|9385|DURSEJ|9 +S9|9386|DURSEJ|9 +S9|9387|DURSEJ|9 +S9|9388|DURSEJ|9 +S9|9389|DURSEJ|9 +S9|9390|DURSEJ|9 +S9|9391|DURSEJ|9 +S9|9392|DURSEJ|9 +S9|9393|DURSEJ|9 +S9|9394|DURSEJ|9 +S9|9395|DURSEJ|9 +S9|9396|DURSEJ|9 +S9|9397|DURSEJ|9 +S9|9398|DURSEJ|9 +S9|9399|DURSEJ|9 +S9|9400|DURSEJ|9 +S9|9401|DURSEJ|9 +S9|9402|DURSEJ|9 +S9|9403|DURSEJ|9 +S9|9404|DURSEJ|9 +S9|9405|DURSEJ|9 +S9|9406|DURSEJ|9 +S9|9407|DURSEJ|9 +S9|9408|DURSEJ|9 +S9|9409|DURSEJ|9 +S9|9410|DURSEJ|9 +S9|9411|DURSEJ|9 +S9|9412|DURSEJ|9 +S9|9413|DURSEJ|9 +S9|9414|DURSEJ|9 +S9|9415|DURSEJ|9 +S9|9416|DURSEJ|9 +S9|9417|DURSEJ|9 +S9|9418|DURSEJ|9 +S9|9419|DURSEJ|9 +S9|9420|DURSEJ|9 +S9|9421|DURSEJ|9 +S9|9422|DURSEJ|9 +S9|9423|DURSEJ|9 +S9|9424|DURSEJ|9 +S9|9425|DURSEJ|9 +S9|9426|DURSEJ|9 +S9|9427|DURSEJ|9 +S9|9428|DURSEJ|9 +S9|9429|DURSEJ|9 +S9|9430|DURSEJ|9 +S9|9431|DURSEJ|9 +S9|9432|DURSEJ|9 +S9|9433|DURSEJ|9 +S9|9434|DURSEJ|9 +S9|9435|DURSEJ|9 +S9|9436|DURSEJ|9 +S9|9437|DURSEJ|9 +S9|9438|DURSEJ|9 +S9|9439|DURSEJ|9 +S9|9440|DURSEJ|9 +S9|9441|DURSEJ|9 +S9|9442|DURSEJ|9 +S9|9443|DURSEJ|9 +S9|9444|DURSEJ|9 +S9|9445|DURSEJ|9 +S9|9446|DURSEJ|9 +S9|9447|DURSEJ|9 +S9|9448|DURSEJ|9 +S9|9449|DURSEJ|9 +S9|9450|DURSEJ|9 +S9|9451|DURSEJ|9 +S9|9452|DURSEJ|9 +S9|9453|DURSEJ|9 +S9|9454|DURSEJ|9 +S9|9455|DURSEJ|9 +S9|9456|DURSEJ|9 +S9|9457|DURSEJ|9 +S9|9458|DURSEJ|9 +S9|9459|DURSEJ|9 +S9|9460|DURSEJ|9 +S9|9461|DURSEJ|9 +S9|9462|DURSEJ|9 +S9|9463|DURSEJ|9 +S9|9464|DURSEJ|9 +S9|9465|DURSEJ|9 +S9|9466|DURSEJ|9 +S9|9467|DURSEJ|9 +S9|9468|DURSEJ|9 +S9|9469|DURSEJ|9 +S9|9470|DURSEJ|9 +S9|9471|DURSEJ|9 +S9|9472|DURSEJ|9 +S9|9473|DURSEJ|9 +S9|9474|DURSEJ|9 +S9|9475|DURSEJ|9 +S9|9476|DURSEJ|9 +S9|9477|DURSEJ|9 +S9|9478|DURSEJ|9 +S9|9479|DURSEJ|9 +S9|9480|DURSEJ|9 +S9|9481|DURSEJ|9 +S9|9482|DURSEJ|9 +S9|9483|DURSEJ|9 +S9|9484|DURSEJ|9 +S9|9485|DURSEJ|9 +S9|9486|DURSEJ|9 +S9|9487|DURSEJ|9 +S9|9488|DURSEJ|9 +S9|9489|DURSEJ|9 +S9|9490|DURSEJ|9 +S9|9491|DURSEJ|9 +S9|9492|DURSEJ|9 +S9|9493|DURSEJ|9 +S9|9494|DURSEJ|9 +S9|9495|DURSEJ|9 +S9|9496|DURSEJ|9 +S9|9497|DURSEJ|9 +S9|9498|DURSEJ|9 +S9|9499|DURSEJ|9 +S9|9500|DURSEJ|9 +S9|9501|DURSEJ|9 +S9|9502|DURSEJ|9 +S9|9503|DURSEJ|9 +S9|9504|DURSEJ|9 +S9|9505|DURSEJ|9 +S9|9506|DURSEJ|9 +S9|9507|DURSEJ|9 +S9|9508|DURSEJ|9 +S9|9509|DURSEJ|9 +S9|9510|DURSEJ|9 +S9|9511|DURSEJ|9 +S9|9512|DURSEJ|9 +S9|9513|DURSEJ|9 +S9|9514|DURSEJ|9 +S9|9515|DURSEJ|9 +S9|9516|DURSEJ|9 +S9|9517|DURSEJ|9 +S9|9518|DURSEJ|9 +S9|9519|DURSEJ|9 +S9|9520|DURSEJ|9 +S9|9521|DURSEJ|9 +S9|9522|DURSEJ|9 +S9|9523|DURSEJ|9 +S9|9524|DURSEJ|9 +S9|9525|DURSEJ|9 +S9|9526|DURSEJ|9 +S9|9527|DURSEJ|9 +S9|9528|DURSEJ|9 +S9|9529|DURSEJ|9 +S9|9530|DURSEJ|9 +S9|9531|DURSEJ|9 +S9|9532|DURSEJ|9 +S9|9533|DURSEJ|9 +S9|9534|DURSEJ|9 +S9|9535|DURSEJ|9 +S9|9536|DURSEJ|9 +S9|9537|DURSEJ|9 +S9|9538|DURSEJ|9 +S9|9539|DURSEJ|9 +S9|9540|DURSEJ|9 +S9|9541|DURSEJ|9 +S9|9542|DURSEJ|9 +S9|9543|DURSEJ|9 +S9|9544|DURSEJ|9 +S9|9545|DURSEJ|9 +S9|9546|DURSEJ|9 +S9|9547|DURSEJ|9 +S9|9548|DURSEJ|9 +S9|9549|DURSEJ|9 +S9|9550|DURSEJ|9 +S9|9551|DURSEJ|9 +S9|9552|DURSEJ|9 +S9|9553|DURSEJ|9 +S9|9554|DURSEJ|9 +S9|9555|DURSEJ|9 +S9|9556|DURSEJ|9 +S9|9557|DURSEJ|9 +S9|9558|DURSEJ|9 +S9|9559|DURSEJ|9 +S9|9560|DURSEJ|9 +S9|9561|DURSEJ|9 +S9|9562|DURSEJ|9 +S9|9563|DURSEJ|9 +S9|9564|DURSEJ|9 +S9|9565|DURSEJ|9 +S9|9566|DURSEJ|9 +S9|9567|DURSEJ|9 +S9|9568|DURSEJ|9 +S9|9569|DURSEJ|9 +S9|9570|DURSEJ|9 +S9|9571|DURSEJ|9 +S9|9572|DURSEJ|9 +S9|9573|DURSEJ|9 +S9|9574|DURSEJ|9 +S9|9575|DURSEJ|9 +S9|9576|DURSEJ|9 +S9|9577|DURSEJ|9 +S9|9578|DURSEJ|9 +S9|9579|DURSEJ|9 +S9|9580|DURSEJ|9 +S9|9581|DURSEJ|9 +S9|9582|DURSEJ|9 +S9|9583|DURSEJ|9 +S9|9584|DURSEJ|9 +S9|9585|DURSEJ|9 +S9|9586|DURSEJ|9 +S9|9587|DURSEJ|9 +S9|9588|DURSEJ|9 +S9|9589|DURSEJ|9 +S9|9590|DURSEJ|9 +S9|9591|DURSEJ|9 +S9|9592|DURSEJ|9 +S9|9593|DURSEJ|9 +S9|9594|DURSEJ|9 +S9|9595|DURSEJ|9 +S9|9596|DURSEJ|9 +S9|9597|DURSEJ|9 +S9|9598|DURSEJ|9 +S9|9599|DURSEJ|9 +S9|9600|DURSEJ|9 +S9|9601|DURSEJ|9 +S9|9602|DURSEJ|9 +S9|9603|DURSEJ|9 +S9|9604|DURSEJ|9 +S9|9605|DURSEJ|9 +S9|9606|DURSEJ|9 +S9|9607|DURSEJ|9 +S9|9608|DURSEJ|9 +S9|9609|DURSEJ|9 +S9|9610|DURSEJ|9 +S9|9611|DURSEJ|9 +S9|9612|DURSEJ|9 +S9|9613|DURSEJ|9 +S9|9614|DURSEJ|9 +S9|9615|DURSEJ|9 +S9|9616|DURSEJ|9 +S9|9617|DURSEJ|9 +S9|9618|DURSEJ|9 +S9|9619|DURSEJ|9 +S9|9620|DURSEJ|9 +S9|9621|DURSEJ|9 +S9|9622|DURSEJ|9 +S9|9623|DURSEJ|9 +S9|9624|DURSEJ|9 +S9|9625|DURSEJ|9 +S9|9626|DURSEJ|9 +S9|9627|DURSEJ|9 +S9|9628|DURSEJ|9 +S9|9629|DURSEJ|9 +S9|9630|DURSEJ|9 +S9|9631|DURSEJ|9 +S9|9632|DURSEJ|9 +S9|9633|DURSEJ|9 +S9|9634|DURSEJ|9 +S9|9635|DURSEJ|9 +S9|9636|DURSEJ|9 +S9|9637|DURSEJ|9 +S9|9638|DURSEJ|9 +S9|9639|DURSEJ|9 +S9|9640|DURSEJ|9 +S9|9641|DURSEJ|9 +S9|9642|DURSEJ|9 +S9|9643|DURSEJ|9 +S9|9644|DURSEJ|9 +S9|9645|DURSEJ|9 +S9|9646|DURSEJ|9 +S9|9647|DURSEJ|9 +S9|9648|DURSEJ|9 +S9|9649|DURSEJ|9 +S9|9650|DURSEJ|9 +S9|9651|DURSEJ|9 +S9|9652|DURSEJ|9 +S9|9653|DURSEJ|9 +S9|9654|DURSEJ|9 +S9|9655|DURSEJ|9 +S9|9656|DURSEJ|9 +S9|9657|DURSEJ|9 +S9|9658|DURSEJ|9 +S9|9659|DURSEJ|9 +S9|9660|DURSEJ|9 +S9|9661|DURSEJ|9 +S9|9662|DURSEJ|9 +S9|9663|DURSEJ|9 +S9|9664|DURSEJ|9 +S9|9665|DURSEJ|9 +S9|9666|DURSEJ|9 +S9|9667|DURSEJ|9 +S9|9668|DURSEJ|9 +S9|9669|DURSEJ|9 +S9|9670|DURSEJ|9 +S9|9671|DURSEJ|9 +S9|9672|DURSEJ|9 +S9|9673|DURSEJ|9 +S9|9674|DURSEJ|9 +S9|9675|DURSEJ|9 +S9|9676|DURSEJ|9 +S9|9677|DURSEJ|9 +S9|9678|DURSEJ|9 +S9|9679|DURSEJ|9 +S9|9680|DURSEJ|9 +S9|9681|DURSEJ|9 +S9|9682|DURSEJ|9 +S9|9683|DURSEJ|9 +S9|9684|DURSEJ|9 +S9|9685|DURSEJ|9 +S9|9686|DURSEJ|9 +S9|9687|DURSEJ|9 +S9|9688|DURSEJ|9 +S9|9689|DURSEJ|9 +S9|9690|DURSEJ|9 +S9|9691|DURSEJ|9 +S9|9692|DURSEJ|9 +S9|9693|DURSEJ|9 +S9|9694|DURSEJ|9 +S9|9695|DURSEJ|9 +S9|9696|DURSEJ|9 +S9|9697|DURSEJ|9 +S9|9698|DURSEJ|9 +S9|9699|DURSEJ|9 +S9|9700|DURSEJ|9 +S9|9701|DURSEJ|9 +S9|9702|DURSEJ|9 +S9|9703|DURSEJ|9 +S9|9704|DURSEJ|9 +S9|9705|DURSEJ|9 +S9|9706|DURSEJ|9 +S9|9707|DURSEJ|9 +S9|9708|DURSEJ|9 +S9|9709|DURSEJ|9 +S9|9710|DURSEJ|9 +S9|9711|DURSEJ|9 +S9|9712|DURSEJ|9 +S9|9713|DURSEJ|9 +S9|9714|DURSEJ|9 +S9|9715|DURSEJ|9 +S9|9716|DURSEJ|9 +S9|9717|DURSEJ|9 +S9|9718|DURSEJ|9 +S9|9719|DURSEJ|9 +S9|9720|DURSEJ|9 +S9|9721|DURSEJ|9 +S9|9722|DURSEJ|9 +S9|9723|DURSEJ|9 +S9|9724|DURSEJ|9 +S9|9725|DURSEJ|9 +S9|9726|DURSEJ|9 +S9|9727|DURSEJ|9 +S9|9728|DURSEJ|9 +S9|9729|DURSEJ|9 +S9|9730|DURSEJ|9 +S9|9731|DURSEJ|9 +S9|9732|DURSEJ|9 +S9|9733|DURSEJ|9 +S9|9734|DURSEJ|9 +S9|9735|DURSEJ|9 +S9|9736|DURSEJ|9 +S9|9737|DURSEJ|9 +S9|9738|DURSEJ|9 +S9|9739|DURSEJ|9 +S9|9740|DURSEJ|9 +S9|9741|DURSEJ|9 +S9|9742|DURSEJ|9 +S9|9743|DURSEJ|9 +S9|9744|DURSEJ|9 +S9|9745|DURSEJ|9 +S9|9746|DURSEJ|9 +S9|9747|DURSEJ|9 +S9|9748|DURSEJ|9 +S9|9749|DURSEJ|9 +S9|9750|DURSEJ|9 +S9|9751|DURSEJ|9 +S9|9752|DURSEJ|9 +S9|9753|DURSEJ|9 +S9|9754|DURSEJ|9 +S9|9755|DURSEJ|9 +S9|9756|DURSEJ|9 +S9|9757|DURSEJ|9 +S9|9758|DURSEJ|9 +S9|9759|DURSEJ|9 +S9|9760|DURSEJ|9 +S9|9761|DURSEJ|9 +S9|9762|DURSEJ|9 +S9|9763|DURSEJ|9 +S9|9764|DURSEJ|9 +S9|9765|DURSEJ|9 +S9|9766|DURSEJ|9 +S9|9767|DURSEJ|9 +S9|9768|DURSEJ|9 +S9|9769|DURSEJ|9 +S9|9770|DURSEJ|9 +S9|9771|DURSEJ|9 +S9|9772|DURSEJ|9 +S9|9773|DURSEJ|9 +S9|9774|DURSEJ|9 +S9|9775|DURSEJ|9 +S9|9776|DURSEJ|9 +S9|9777|DURSEJ|9 +S9|9778|DURSEJ|9 +S9|9779|DURSEJ|9 +S9|9780|DURSEJ|9 +S9|9781|DURSEJ|9 +S9|9782|DURSEJ|9 +S9|9783|DURSEJ|9 +S9|9784|DURSEJ|9 +S9|9785|DURSEJ|9 +S9|9786|DURSEJ|9 +S9|9787|DURSEJ|9 +S9|9788|DURSEJ|9 +S9|9789|DURSEJ|9 +S9|9790|DURSEJ|9 +S9|9791|DURSEJ|9 +S9|9792|DURSEJ|9 +S9|9793|DURSEJ|9 +S9|9794|DURSEJ|9 +S9|9795|DURSEJ|9 +S9|9796|DURSEJ|9 +S9|9797|DURSEJ|9 +S9|9798|DURSEJ|9 +S9|9799|DURSEJ|9 +S9|9800|DURSEJ|9 +S9|9801|DURSEJ|9 +S9|9802|DURSEJ|9 +S9|9803|DURSEJ|9 +S9|9804|DURSEJ|9 +S9|9805|DURSEJ|9 +S9|9806|DURSEJ|9 +S9|9807|DURSEJ|9 +S9|9808|DURSEJ|9 +S9|9809|DURSEJ|9 +S9|9810|DURSEJ|9 +S9|9811|DURSEJ|9 +S9|9812|DURSEJ|9 +S9|9813|DURSEJ|9 +S9|9814|DURSEJ|9 +S9|9815|DURSEJ|9 +S9|9816|DURSEJ|9 +S9|9817|DURSEJ|9 +S9|9818|DURSEJ|9 +S9|9819|DURSEJ|9 +S9|9820|DURSEJ|9 +S9|9821|DURSEJ|9 +S9|9822|DURSEJ|9 +S9|9823|DURSEJ|9 +S9|9824|DURSEJ|9 +S9|9825|DURSEJ|9 +S9|9826|DURSEJ|9 +S9|9827|DURSEJ|9 +S9|9828|DURSEJ|9 +S9|9829|DURSEJ|9 +S9|9830|DURSEJ|9 +S9|9831|DURSEJ|9 +S9|9832|DURSEJ|9 +S9|9833|DURSEJ|9 +S9|9834|DURSEJ|9 +S9|9835|DURSEJ|9 +S9|9836|DURSEJ|9 +S9|9837|DURSEJ|9 +S9|9838|DURSEJ|9 +S9|9839|DURSEJ|9 +S9|9840|DURSEJ|9 +S9|9841|DURSEJ|9 +S9|9842|DURSEJ|9 +S9|9843|DURSEJ|9 +S9|9844|DURSEJ|9 +S9|9845|DURSEJ|9 +S9|9846|DURSEJ|9 +S9|9847|DURSEJ|9 +S9|9848|DURSEJ|9 +S9|9849|DURSEJ|9 +S9|9850|DURSEJ|9 +S9|9851|DURSEJ|9 +S9|9852|DURSEJ|9 +S9|9853|DURSEJ|9 +S9|9854|DURSEJ|9 +S9|9855|DURSEJ|9 +S9|9856|DURSEJ|9 +S9|9857|DURSEJ|9 +S9|9858|DURSEJ|9 +S9|9859|DURSEJ|9 +S9|9860|DURSEJ|9 +S9|9861|DURSEJ|9 +S9|9862|DURSEJ|9 +S9|9863|DURSEJ|9 +S9|9864|DURSEJ|9 +S9|9865|DURSEJ|9 +S9|9866|DURSEJ|9 +S9|9867|DURSEJ|9 +S9|9868|DURSEJ|9 +S9|9869|DURSEJ|9 +S9|9870|DURSEJ|9 +S9|9871|DURSEJ|9 +S9|9872|DURSEJ|9 +S9|9873|DURSEJ|9 +S9|9874|DURSEJ|9 +S9|9875|DURSEJ|9 +S9|9876|DURSEJ|9 +S9|9877|DURSEJ|9 +S9|9878|DURSEJ|9 +S9|9879|DURSEJ|9 +S9|9880|DURSEJ|9 +S9|9881|DURSEJ|9 +S9|9882|DURSEJ|9 +S9|9883|DURSEJ|9 +S9|9884|DURSEJ|9 +S9|9885|DURSEJ|9 +S9|9886|DURSEJ|9 +S9|9887|DURSEJ|9 +S9|9888|DURSEJ|9 +S9|9889|DURSEJ|9 +S9|9890|DURSEJ|9 +S9|9891|DURSEJ|9 +S9|9892|DURSEJ|9 +S9|9893|DURSEJ|9 +S9|9894|DURSEJ|9 +S9|9895|DURSEJ|9 +S9|9896|DURSEJ|9 +S9|9897|DURSEJ|9 +S9|9898|DURSEJ|9 +S9|9899|DURSEJ|9 +S9|9900|DURSEJ|9 +S9|9901|DURSEJ|9 +S9|9902|DURSEJ|9 +S9|9903|DURSEJ|9 +S9|9904|DURSEJ|9 +S9|9905|DURSEJ|9 +S9|9906|DURSEJ|9 +S9|9907|DURSEJ|9 +S9|9908|DURSEJ|9 +S9|9909|DURSEJ|9 +S9|9910|DURSEJ|9 +S9|9911|DURSEJ|9 +S9|9912|DURSEJ|9 +S9|9913|DURSEJ|9 +S9|9914|DURSEJ|9 +S9|9915|DURSEJ|9 +S9|9916|DURSEJ|9 +S9|9917|DURSEJ|9 +S9|9918|DURSEJ|9 +S9|9919|DURSEJ|9 +S9|9920|DURSEJ|9 +S9|9921|DURSEJ|9 +S9|9922|DURSEJ|9 +S9|9923|DURSEJ|9 +S9|9924|DURSEJ|9 +S9|9925|DURSEJ|9 +S9|9926|DURSEJ|9 +S9|9927|DURSEJ|9 +S9|9928|DURSEJ|9 +S9|9929|DURSEJ|9 +S9|9930|DURSEJ|9 +S9|9931|DURSEJ|9 +S9|9932|DURSEJ|9 +S9|9933|DURSEJ|9 +S9|9934|DURSEJ|9 +S9|9935|DURSEJ|9 +S9|9936|DURSEJ|9 +S9|9937|DURSEJ|9 +S9|9938|DURSEJ|9 +S9|9939|DURSEJ|9 +S9|9940|DURSEJ|9 +S9|9941|DURSEJ|9 +S9|9942|DURSEJ|9 +S9|9943|DURSEJ|9 +S9|9944|DURSEJ|9 +S9|9945|DURSEJ|9 +S9|9946|DURSEJ|9 +S9|9947|DURSEJ|9 +S9|9948|DURSEJ|9 +S9|9949|DURSEJ|9 +S9|9950|DURSEJ|9 +S9|9951|DURSEJ|9 +S9|9952|DURSEJ|9 +S9|9953|DURSEJ|9 +S9|9954|DURSEJ|9 +S9|9955|DURSEJ|9 +S9|9956|DURSEJ|9 +S9|9957|DURSEJ|9 +S9|9958|DURSEJ|9 +S9|9959|DURSEJ|9 +S9|9960|DURSEJ|9 +S9|9961|DURSEJ|9 +S9|9962|DURSEJ|9 +S9|9963|DURSEJ|9 +S9|9964|DURSEJ|9 +S9|9965|DURSEJ|9 +S9|9966|DURSEJ|9 +S9|9967|DURSEJ|9 +S9|9968|DURSEJ|9 +S9|9969|DURSEJ|9 +S9|9970|DURSEJ|9 +S9|9971|DURSEJ|9 +S9|9972|DURSEJ|9 +S9|9973|DURSEJ|9 +S9|9974|DURSEJ|9 +S9|9975|DURSEJ|9 +S9|9976|DURSEJ|9 +S9|9977|DURSEJ|9 +S9|9978|DURSEJ|9 +S9|9979|DURSEJ|9 +S9|9980|DURSEJ|9 +S9|9981|DURSEJ|9 +S9|9982|DURSEJ|9 +S9|9983|DURSEJ|9 +S9|9984|DURSEJ|9 +S9|9985|DURSEJ|9 +S9|9986|DURSEJ|9 +S9|9987|DURSEJ|9 +S9|9988|DURSEJ|9 +S9|9989|DURSEJ|9 +S9|9990|DURSEJ|9 +S9|9991|DURSEJ|9 +S9|9992|DURSEJ|9 +S9|9993|DURSEJ|9 +S9|9994|DURSEJ|9 +S9|9995|DURSEJ|9 +S9|9996|DURSEJ|9 +S9|9997|DURSEJ|9 +S9|9998|DURSEJ|9 +S9|9999|DURSEJ|9 diff --git a/db/data2/dbdata_activite_t_classes_sections_elements_etat_sejour.csv b/db/data2/dbdata_activite_t_classes_sections_elements_etat_sejour.csv new file mode 100644 index 0000000..67a04a6 --- /dev/null +++ b/db/data2/dbdata_activite_t_classes_sections_elements_etat_sejour.csv @@ -0,0 +1,27 @@ +section_code|to_code|table_code|classe_sequence +S1|0|ETATSEJOUR|10 +S2|1|ETATSEJOUR|10 +S2|2|ETATSEJOUR|10 +S3|3|ETATSEJOUR|10 +S4|4|ETATSEJOUR|10 +S4|5|ETATSEJOUR|10 +S5|6|ETATSEJOUR|10 +S6|7|ETATSEJOUR|10 +S6|8|ETATSEJOUR|10 +S7|9|ETATSEJOUR|10 +S8|A|ETATSEJOUR|10 +S8|C|ETATSEJOUR|10 +S8|R|ETATSEJOUR|10 +S1|0|ETATSEJOUR|11 +S1|9|ETATSEJOUR|11 +S2|1|ETATSEJOUR|11 +S2|2|ETATSEJOUR|11 +S3|3|ETATSEJOUR|11 +S3|4|ETATSEJOUR|11 +S3|5|ETATSEJOUR|11 +S4|6|ETATSEJOUR|11 +S5|7|ETATSEJOUR|11 +S5|8|ETATSEJOUR|11 +S6|A|ETATSEJOUR|11 +S6|C|ETATSEJOUR|11 +S6|R|ETATSEJOUR|11 diff --git a/db/data2/dbdata_activite_t_classes_sections_elements_forme_activite.csv b/db/data2/dbdata_activite_t_classes_sections_elements_forme_activite.csv new file mode 100644 index 0000000..7dff08b --- /dev/null +++ b/db/data2/dbdata_activite_t_classes_sections_elements_forme_activite.csv @@ -0,0 +1,136 @@ +section_code|to_code|table_code|classe_sequence +1|111|FORMEACTIVITE|1 +1|112|FORMEACTIVITE|1 +1|113|FORMEACTIVITE|1 +1|114|FORMEACTIVITE|1 +1|117|FORMEACTIVITE|1 +1|118|FORMEACTIVITE|1 +1|119|FORMEACTIVITE|1 +1|121|FORMEACTIVITE|1 +1|122|FORMEACTIVITE|1 +1|123|FORMEACTIVITE|1 +1|124|FORMEACTIVITE|1 +1|127|FORMEACTIVITE|1 +1|128|FORMEACTIVITE|1 +1|129|FORMEACTIVITE|1 +1|131|FORMEACTIVITE|1 +1|132|FORMEACTIVITE|1 +1|133|FORMEACTIVITE|1 +1|139|FORMEACTIVITE|1 +2|211|FORMEACTIVITE|1 +2|212|FORMEACTIVITE|1 +2|217|FORMEACTIVITE|1 +2|218|FORMEACTIVITE|1 +2|219|FORMEACTIVITE|1 +2|221|FORMEACTIVITE|1 +2|222|FORMEACTIVITE|1 +2|227|FORMEACTIVITE|1 +2|228|FORMEACTIVITE|1 +2|229|FORMEACTIVITE|1 +3|311|FORMEACTIVITE|1 +3|317|FORMEACTIVITE|1 +3|318|FORMEACTIVITE|1 +3|319|FORMEACTIVITE|1 +3|321|FORMEACTIVITE|1 +3|327|FORMEACTIVITE|1 +3|328|FORMEACTIVITE|1 +3|329|FORMEACTIVITE|1 +4|401|FORMEACTIVITE|1 +5|501|FORMEACTIVITE|1 +5|502|FORMEACTIVITE|1 +5|503|FORMEACTIVITE|1 +7|701|FORMEACTIVITE|1 +7|702|FORMEACTIVITE|1 +7|709|FORMEACTIVITE|1 +9|***|FORMEACTIVITE|1 +9|999|FORMEACTIVITE|1 +11|111|FORMEACTIVITE|2 +11|121|FORMEACTIVITE|2 +12|112|FORMEACTIVITE|2 +12|122|FORMEACTIVITE|2 +13|113|FORMEACTIVITE|2 +13|123|FORMEACTIVITE|2 +14|114|FORMEACTIVITE|2 +14|124|FORMEACTIVITE|2 +15|131|FORMEACTIVITE|2 +15|132|FORMEACTIVITE|2 +15|133|FORMEACTIVITE|2 +15|139|FORMEACTIVITE|2 +19|117|FORMEACTIVITE|2 +19|118|FORMEACTIVITE|2 +19|119|FORMEACTIVITE|2 +19|127|FORMEACTIVITE|2 +19|128|FORMEACTIVITE|2 +19|129|FORMEACTIVITE|2 +20|211|FORMEACTIVITE|2 +20|212|FORMEACTIVITE|2 +20|217|FORMEACTIVITE|2 +20|218|FORMEACTIVITE|2 +20|219|FORMEACTIVITE|2 +20|221|FORMEACTIVITE|2 +20|222|FORMEACTIVITE|2 +20|227|FORMEACTIVITE|2 +20|228|FORMEACTIVITE|2 +20|229|FORMEACTIVITE|2 +30|311|FORMEACTIVITE|2 +30|317|FORMEACTIVITE|2 +30|318|FORMEACTIVITE|2 +30|319|FORMEACTIVITE|2 +30|321|FORMEACTIVITE|2 +30|327|FORMEACTIVITE|2 +30|328|FORMEACTIVITE|2 +30|329|FORMEACTIVITE|2 +40|401|FORMEACTIVITE|2 +50|501|FORMEACTIVITE|2 +50|502|FORMEACTIVITE|2 +50|503|FORMEACTIVITE|2 +70|701|FORMEACTIVITE|2 +70|702|FORMEACTIVITE|2 +70|709|FORMEACTIVITE|2 +99|***|FORMEACTIVITE|2 +99|999|FORMEACTIVITE|2 +11|121|FORMEACTIVITE|3 +11|122|FORMEACTIVITE|3 +11|123|FORMEACTIVITE|3 +11|124|FORMEACTIVITE|3 +11|127|FORMEACTIVITE|3 +11|128|FORMEACTIVITE|3 +11|129|FORMEACTIVITE|3 +12|111|FORMEACTIVITE|3 +12|112|FORMEACTIVITE|3 +12|113|FORMEACTIVITE|3 +12|114|FORMEACTIVITE|3 +12|117|FORMEACTIVITE|3 +12|118|FORMEACTIVITE|3 +12|119|FORMEACTIVITE|3 +2|211|FORMEACTIVITE|3 +2|212|FORMEACTIVITE|3 +2|217|FORMEACTIVITE|3 +2|218|FORMEACTIVITE|3 +2|219|FORMEACTIVITE|3 +2|221|FORMEACTIVITE|3 +2|222|FORMEACTIVITE|3 +2|227|FORMEACTIVITE|3 +2|228|FORMEACTIVITE|3 +2|229|FORMEACTIVITE|3 +3|311|FORMEACTIVITE|3 +3|317|FORMEACTIVITE|3 +3|318|FORMEACTIVITE|3 +3|319|FORMEACTIVITE|3 +3|321|FORMEACTIVITE|3 +3|327|FORMEACTIVITE|3 +3|328|FORMEACTIVITE|3 +3|329|FORMEACTIVITE|3 +4|401|FORMEACTIVITE|3 +9|***|FORMEACTIVITE|3 +9|131|FORMEACTIVITE|3 +9|132|FORMEACTIVITE|3 +9|133|FORMEACTIVITE|3 +9|139|FORMEACTIVITE|3 +9|501|FORMEACTIVITE|3 +9|502|FORMEACTIVITE|3 +9|503|FORMEACTIVITE|3 +9|701|FORMEACTIVITE|3 +9|702|FORMEACTIVITE|3 +9|709|FORMEACTIVITE|3 +9|999|FORMEACTIVITE|3 diff --git a/db/data2/dbdata_activite_t_classes_sections_elements_ghm.csv b/db/data2/dbdata_activite_t_classes_sections_elements_ghm.csv new file mode 100644 index 0000000..c83f6e9 --- /dev/null +++ b/db/data2/dbdata_activite_t_classes_sections_elements_ghm.csv @@ -0,0 +1,10036 @@ +section_code|to_code|table_code|classe_sequence +G001|06C02Z|GHM|7 +G001|06C051|GHM|7 +G001|06C052|GHM|7 +G001|06C053|GHM|7 +G001|06C054|GHM|7 +G001|06C05Z|GHM|7 +G001|06C161|GHM|7 +G001|06C162|GHM|7 +G001|06C163|GHM|7 +G001|06C164|GHM|7 +G001|06C16V|GHM|7 +G001|06C16W|GHM|7 +G001|06C201|GHM|7 +G001|06C202|GHM|7 +G001|06C203|GHM|7 +G001|06C204|GHM|7 +G001|06C221|GHM|7 +G001|06C222|GHM|7 +G001|06C223|GHM|7 +G001|06C224|GHM|7 +G001|10C04Z|GHM|7 +G001|10C091|GHM|7 +G001|10C092|GHM|7 +G001|10C093|GHM|7 +G001|10C094|GHM|7 +G001|10C09Z|GHM|7 +G002|06C021|GHM|7 +G002|06C022|GHM|7 +G002|06C023|GHM|7 +G002|06C024|GHM|7 +G002|06C031|GHM|7 +G002|06C032|GHM|7 +G002|06C033|GHM|7 +G002|06C034|GHM|7 +G002|06C03V|GHM|7 +G002|06C03W|GHM|7 +G002|06C041|GHM|7 +G002|06C042|GHM|7 +G002|06C043|GHM|7 +G002|06C044|GHM|7 +G002|06C04V|GHM|7 +G002|06C04W|GHM|7 +G003|06C081|GHM|7 +G003|06C082|GHM|7 +G003|06C083|GHM|7 +G003|06C084|GHM|7 +G003|06C08V|GHM|7 +G003|06C08W|GHM|7 +G003|06C091|GHM|7 +G003|06C092|GHM|7 +G003|06C093|GHM|7 +G003|06C094|GHM|7 +G003|06C09V|GHM|7 +G003|06C09W|GHM|7 +G004|06C101|GHM|7 +G004|06C102|GHM|7 +G004|06C103|GHM|7 +G004|06C104|GHM|7 +G004|06C10J|GHM|7 +G004|06C10Z|GHM|7 +G004|06C111|GHM|7 +G004|06C112|GHM|7 +G004|06C113|GHM|7 +G004|06C114|GHM|7 +G004|06C11J|GHM|7 +G004|06C11V|GHM|7 +G004|06C11W|GHM|7 +G004|06C121|GHM|7 +G004|06C122|GHM|7 +G004|06C123|GHM|7 +G004|06C124|GHM|7 +G004|06C12J|GHM|7 +G004|06C12V|GHM|7 +G004|06C12W|GHM|7 +G004|06C241|GHM|7 +G004|06C242|GHM|7 +G004|06C243|GHM|7 +G004|06C244|GHM|7 +G004|06C24J|GHM|7 +G004|06C251|GHM|7 +G004|06C252|GHM|7 +G004|06C253|GHM|7 +G004|06C254|GHM|7 +G004|06C25J|GHM|7 +G005|06M061|GHM|7 +G005|06M062|GHM|7 +G005|06M063|GHM|7 +G005|06M064|GHM|7 +G005|06M06T|GHM|7 +G005|06M06V|GHM|7 +G005|06M06W|GHM|7 +G006|06C071|GHM|7 +G006|06C072|GHM|7 +G006|06C073|GHM|7 +G006|06C074|GHM|7 +G006|06C07V|GHM|7 +G006|06C07W|GHM|7 +G007|06C141|GHM|7 +G007|06C142|GHM|7 +G007|06C143|GHM|7 +G007|06C144|GHM|7 +G007|06C14J|GHM|7 +G007|06C14V|GHM|7 +G007|06C14W|GHM|7 +G007|06C191|GHM|7 +G007|06C192|GHM|7 +G007|06C193|GHM|7 +G007|06C194|GHM|7 +G007|06C19J|GHM|7 +G007|09C081|GHM|7 +G007|09C082|GHM|7 +G007|09C083|GHM|7 +G007|09C084|GHM|7 +G007|09C08J|GHM|7 +G007|09C08Z|GHM|7 +G007|09C131|GHM|7 +G007|09C132|GHM|7 +G007|09C133|GHM|7 +G007|09C134|GHM|7 +G007|09C13J|GHM|7 +G008|06C131|GHM|7 +G008|06C132|GHM|7 +G008|06C133|GHM|7 +G008|06C134|GHM|7 +G008|06C13V|GHM|7 +G008|06C13W|GHM|7 +G008|06C151|GHM|7 +G008|06C152|GHM|7 +G008|06C153|GHM|7 +G008|06C154|GHM|7 +G008|06C15V|GHM|7 +G008|06C15W|GHM|7 +G008|06C211|GHM|7 +G008|06C212|GHM|7 +G008|06C213|GHM|7 +G008|06C214|GHM|7 +G008|06C231|GHM|7 +G008|06C232|GHM|7 +G008|06C233|GHM|7 +G008|06C234|GHM|7 +G008|06C23J|GHM|7 +G008|10C131|GHM|7 +G008|10C132|GHM|7 +G008|10C133|GHM|7 +G008|10C134|GHM|7 +G008|10C13Z|GHM|7 +G008|16C021|GHM|7 +G008|16C022|GHM|7 +G008|16C023|GHM|7 +G008|16C024|GHM|7 +G008|16C02Z|GHM|7 +G009|07C131|GHM|7 +G009|07C132|GHM|7 +G009|07C133|GHM|7 +G009|07C134|GHM|7 +G009|07C141|GHM|7 +G009|07C142|GHM|7 +G009|07C143|GHM|7 +G009|07C144|GHM|7 +G009|07C14J|GHM|7 +G010|07C061|GHM|7 +G010|07C062|GHM|7 +G010|07C063|GHM|7 +G010|07C064|GHM|7 +G010|07C06Z|GHM|7 +G010|07C071|GHM|7 +G010|07C072|GHM|7 +G010|07C073|GHM|7 +G010|07C074|GHM|7 +G010|07C07Z|GHM|7 +G010|07C081|GHM|7 +G010|07C082|GHM|7 +G010|07C083|GHM|7 +G010|07C084|GHM|7 +G010|07C08Z|GHM|7 +G010|07C091|GHM|7 +G010|07C092|GHM|7 +G010|07C093|GHM|7 +G010|07C094|GHM|7 +G010|07C09V|GHM|7 +G010|07C09W|GHM|7 +G010|07C101|GHM|7 +G010|07C102|GHM|7 +G010|07C103|GHM|7 +G010|07C104|GHM|7 +G010|07C10V|GHM|7 +G010|07C10W|GHM|7 +G010|07C111|GHM|7 +G010|07C112|GHM|7 +G010|07C113|GHM|7 +G010|07C114|GHM|7 +G010|07C11V|GHM|7 +G010|07C11W|GHM|7 +G010|07C121|GHM|7 +G010|07C122|GHM|7 +G010|07C123|GHM|7 +G010|07C124|GHM|7 +G010|07C12V|GHM|7 +G010|07C12W|GHM|7 +G011|06M051|GHM|7 +G011|06M052|GHM|7 +G011|06M053|GHM|7 +G011|06M054|GHM|7 +G011|06M05T|GHM|7 +G011|06M05V|GHM|7 +G011|06M05W|GHM|7 +G011|06M131|GHM|7 +G011|06M132|GHM|7 +G011|06M133|GHM|7 +G011|06M134|GHM|7 +G011|06M13T|GHM|7 +G012|06M041|GHM|7 +G012|06M042|GHM|7 +G012|06M043|GHM|7 +G012|06M044|GHM|7 +G012|06M04T|GHM|7 +G012|06M04V|GHM|7 +G012|06M04W|GHM|7 +G012|06M101|GHM|7 +G012|06M102|GHM|7 +G012|06M103|GHM|7 +G012|06M104|GHM|7 +G012|06M10Z|GHM|7 +G012|06M111|GHM|7 +G012|06M112|GHM|7 +G012|06M113|GHM|7 +G012|06M114|GHM|7 +G012|06M11T|GHM|7 +G012|06M11V|GHM|7 +G012|06M11W|GHM|7 +G013|06M15Z|GHM|7 +G013|07M121|GHM|7 +G013|07M122|GHM|7 +G013|07M123|GHM|7 +G013|07M124|GHM|7 +G014|06M071|GHM|7 +G014|06M072|GHM|7 +G014|06M073|GHM|7 +G014|06M074|GHM|7 +G014|06M07T|GHM|7 +G014|06M07V|GHM|7 +G014|06M07W|GHM|7 +G015|06M141|GHM|7 +G015|06M142|GHM|7 +G015|06M143|GHM|7 +G015|06M144|GHM|7 +G015|06M17T|GHM|7 +G015|06M17Z|GHM|7 +G015|06M191|GHM|7 +G015|06M192|GHM|7 +G015|06M193|GHM|7 +G015|06M194|GHM|7 +G015|06M201|GHM|7 +G015|06M202|GHM|7 +G015|06M203|GHM|7 +G015|06M204|GHM|7 +G015|06M20T|GHM|7 +G016|06M021|GHM|7 +G016|06M022|GHM|7 +G016|06M023|GHM|7 +G016|06M024|GHM|7 +G016|06M02T|GHM|7 +G016|06M02V|GHM|7 +G016|06M02W|GHM|7 +G016|06M031|GHM|7 +G016|06M032|GHM|7 +G016|06M033|GHM|7 +G016|06M034|GHM|7 +G016|06M03T|GHM|7 +G016|06M03V|GHM|7 +G016|06M03W|GHM|7 +G017|06M081|GHM|7 +G017|06M082|GHM|7 +G017|06M083|GHM|7 +G017|06M084|GHM|7 +G017|06M08T|GHM|7 +G017|06M08Z|GHM|7 +G017|06M091|GHM|7 +G017|06M092|GHM|7 +G017|06M093|GHM|7 +G017|06M094|GHM|7 +G017|06M09T|GHM|7 +G017|06M09V|GHM|7 +G017|06M09W|GHM|7 +G017|06M211|GHM|7 +G017|06M212|GHM|7 +G017|06M213|GHM|7 +G017|06M214|GHM|7 +G018|07M071|GHM|7 +G018|07M072|GHM|7 +G018|07M073|GHM|7 +G018|07M074|GHM|7 +G018|07M07T|GHM|7 +G018|07M081|GHM|7 +G018|07M082|GHM|7 +G018|07M083|GHM|7 +G018|07M084|GHM|7 +G018|07M08T|GHM|7 +G018|07M091|GHM|7 +G018|07M092|GHM|7 +G018|07M093|GHM|7 +G018|07M094|GHM|7 +G018|07M09T|GHM|7 +G019|07M061|GHM|7 +G019|07M062|GHM|7 +G019|07M063|GHM|7 +G019|07M064|GHM|7 +G019|07M06T|GHM|7 +G019|07M06V|GHM|7 +G019|07M06W|GHM|7 +G019|07M101|GHM|7 +G019|07M102|GHM|7 +G019|07M103|GHM|7 +G019|07M104|GHM|7 +G019|07M10T|GHM|7 +G019|07M111|GHM|7 +G019|07M112|GHM|7 +G019|07M113|GHM|7 +G019|07M114|GHM|7 +G019|07M11T|GHM|7 +G019|07M151|GHM|7 +G019|07M152|GHM|7 +G019|07M153|GHM|7 +G019|07M154|GHM|7 +G019|07M15T|GHM|7 +G020|07M021|GHM|7 +G020|07M022|GHM|7 +G020|07M023|GHM|7 +G020|07M024|GHM|7 +G020|07M02T|GHM|7 +G020|07M02V|GHM|7 +G020|07M02W|GHM|7 +G020|07M041|GHM|7 +G020|07M042|GHM|7 +G020|07M043|GHM|7 +G020|07M044|GHM|7 +G020|07M04T|GHM|7 +G020|07M04V|GHM|7 +G020|07M04W|GHM|7 +G020|07M161|GHM|7 +G020|07M162|GHM|7 +G020|07M163|GHM|7 +G020|07M164|GHM|7 +G021|06M121|GHM|7 +G021|06M122|GHM|7 +G021|06M123|GHM|7 +G021|06M124|GHM|7 +G021|06M12T|GHM|7 +G021|06M18T|GHM|7 +G021|06M18Z|GHM|7 +G021|07M14T|GHM|7 +G021|07M14Z|GHM|7 +G022|06K03J|GHM|7 +G022|06K04J|GHM|7 +G022|06K05J|GHM|7 +G022|07K02Z|GHM|7 +G022|07K04J|GHM|7 +G022|07K05J|GHM|7 +G023|06M16Z|GHM|7 +G023|07M13Z|GHM|7 +G024|08C021|GHM|7 +G024|08C022|GHM|7 +G024|08C023|GHM|7 +G024|08C024|GHM|7 +G024|08C02Z|GHM|7 +G024|08C041|GHM|7 +G024|08C042|GHM|7 +G024|08C043|GHM|7 +G024|08C044|GHM|7 +G024|08C04Z|GHM|7 +G024|08C221|GHM|7 +G024|08C222|GHM|7 +G024|08C223|GHM|7 +G024|08C224|GHM|7 +G024|08C22Z|GHM|7 +G024|08C241|GHM|7 +G024|08C242|GHM|7 +G024|08C243|GHM|7 +G024|08C244|GHM|7 +G024|08C24Z|GHM|7 +G024|08C251|GHM|7 +G024|08C252|GHM|7 +G024|08C253|GHM|7 +G024|08C254|GHM|7 +G024|08C25Z|GHM|7 +G024|08C471|GHM|7 +G024|08C472|GHM|7 +G024|08C473|GHM|7 +G024|08C474|GHM|7 +G024|08C481|GHM|7 +G024|08C482|GHM|7 +G024|08C483|GHM|7 +G024|08C484|GHM|7 +G024|08C491|GHM|7 +G024|08C492|GHM|7 +G024|08C493|GHM|7 +G024|08C494|GHM|7 +G024|08C501|GHM|7 +G024|08C502|GHM|7 +G024|08C503|GHM|7 +G024|08C504|GHM|7 +G025|08C121|GHM|7 +G025|08C122|GHM|7 +G025|08C123|GHM|7 +G025|08C124|GHM|7 +G025|08C12J|GHM|7 +G025|08C12Z|GHM|7 +G025|08C19Z|GHM|7 +G025|08C341|GHM|7 +G025|08C342|GHM|7 +G025|08C343|GHM|7 +G025|08C344|GHM|7 +G025|08C34J|GHM|7 +G025|08C381|GHM|7 +G025|08C382|GHM|7 +G025|08C383|GHM|7 +G025|08C384|GHM|7 +G025|08C38J|GHM|7 +G025|08C401|GHM|7 +G025|08C402|GHM|7 +G025|08C403|GHM|7 +G025|08C404|GHM|7 +G025|08C40J|GHM|7 +G025|08C451|GHM|7 +G025|08C452|GHM|7 +G025|08C453|GHM|7 +G025|08C454|GHM|7 +G025|08C45J|GHM|7 +G025|08C581|GHM|7 +G025|08C582|GHM|7 +G025|08C583|GHM|7 +G025|08C584|GHM|7 +G025|08C58J|GHM|7 +G026|08K02J|GHM|7 +G026|08K031|GHM|7 +G026|08K032|GHM|7 +G026|08K033|GHM|7 +G026|08K034|GHM|7 +G026|08K041|GHM|7 +G026|08K042|GHM|7 +G026|08K043|GHM|7 +G026|08K044|GHM|7 +G026|08K051|GHM|7 +G026|08K052|GHM|7 +G026|08K053|GHM|7 +G026|08K054|GHM|7 +G026|08K05J|GHM|7 +G026|08K06Z|GHM|7 +G026|08M13Z|GHM|7 +G027|08C131|GHM|7 +G027|08C132|GHM|7 +G027|08C133|GHM|7 +G027|08C134|GHM|7 +G027|08C13J|GHM|7 +G027|08C13Z|GHM|7 +G027|08C141|GHM|7 +G027|08C142|GHM|7 +G027|08C143|GHM|7 +G027|08C144|GHM|7 +G027|08C14J|GHM|7 +G027|08C14Z|GHM|7 +G028|05C121|GHM|7 +G028|05C122|GHM|7 +G028|05C123|GHM|7 +G028|05C124|GHM|7 +G028|05C12V|GHM|7 +G028|05C12W|GHM|7 +G028|05C131|GHM|7 +G028|05C132|GHM|7 +G028|05C133|GHM|7 +G028|05C134|GHM|7 +G028|05C13J|GHM|7 +G028|05C13V|GHM|7 +G028|05C13W|GHM|7 +G028|08C061|GHM|7 +G028|08C062|GHM|7 +G028|08C063|GHM|7 +G028|08C064|GHM|7 +G028|08C06Z|GHM|7 +G029|01C07Z|GHM|7 +G029|01C131|GHM|7 +G029|01C132|GHM|7 +G029|01C133|GHM|7 +G029|01C134|GHM|7 +G029|01C13J|GHM|7 +G029|01C13Z|GHM|7 +G029|01C141|GHM|7 +G029|01C142|GHM|7 +G029|01C143|GHM|7 +G029|01C144|GHM|7 +G029|01C14J|GHM|7 +G029|01C151|GHM|7 +G029|01C152|GHM|7 +G029|01C153|GHM|7 +G029|01C154|GHM|7 +G029|01C15J|GHM|7 +G029|08C17Z|GHM|7 +G029|08C411|GHM|7 +G029|08C412|GHM|7 +G029|08C413|GHM|7 +G029|08C414|GHM|7 +G029|08C41J|GHM|7 +G029|08C431|GHM|7 +G029|08C432|GHM|7 +G029|08C433|GHM|7 +G029|08C434|GHM|7 +G029|08C43J|GHM|7 +G029|08C441|GHM|7 +G029|08C442|GHM|7 +G029|08C443|GHM|7 +G029|08C444|GHM|7 +G029|08C44J|GHM|7 +G029|08C591|GHM|7 +G029|08C592|GHM|7 +G029|08C593|GHM|7 +G029|08C594|GHM|7 +G029|08C59J|GHM|7 +G029|08C601|GHM|7 +G029|08C602|GHM|7 +G029|08C603|GHM|7 +G029|08C604|GHM|7 +G029|08C60J|GHM|7 +G029|21C041|GHM|7 +G029|21C042|GHM|7 +G029|21C043|GHM|7 +G029|21C044|GHM|7 +G029|21C04J|GHM|7 +G029|21C04Z|GHM|7 +G030|08C561|GHM|7 +G030|08C562|GHM|7 +G030|08C563|GHM|7 +G030|08C564|GHM|7 +G030|08C611|GHM|7 +G030|08C612|GHM|7 +G030|08C613|GHM|7 +G030|08C614|GHM|7 +G030|08C621|GHM|7 +G030|08C622|GHM|7 +G030|08C623|GHM|7 +G030|08C624|GHM|7 +G030|08C62J|GHM|7 +G031|08C08Z|GHM|7 +G031|08C311|GHM|7 +G031|08C312|GHM|7 +G031|08C313|GHM|7 +G031|08C314|GHM|7 +G031|08C321|GHM|7 +G031|08C322|GHM|7 +G031|08C323|GHM|7 +G031|08C324|GHM|7 +G031|08C32J|GHM|7 +G031|08C531|GHM|7 +G031|08C532|GHM|7 +G031|08C533|GHM|7 +G031|08C534|GHM|7 +G031|08C541|GHM|7 +G031|08C542|GHM|7 +G031|08C543|GHM|7 +G031|08C544|GHM|7 +G031|08C54J|GHM|7 +G031|08C571|GHM|7 +G031|08C572|GHM|7 +G031|08C573|GHM|7 +G031|08C574|GHM|7 +G031|08C57J|GHM|7 +G032|08C331|GHM|7 +G032|08C332|GHM|7 +G032|08C333|GHM|7 +G032|08C334|GHM|7 +G032|08C361|GHM|7 +G032|08C362|GHM|7 +G032|08C363|GHM|7 +G032|08C364|GHM|7 +G032|08C36J|GHM|7 +G032|08C371|GHM|7 +G032|08C372|GHM|7 +G032|08C373|GHM|7 +G032|08C374|GHM|7 +G032|08C37J|GHM|7 +G032|08C551|GHM|7 +G032|08C552|GHM|7 +G032|08C553|GHM|7 +G032|08C554|GHM|7 +G033|08C351|GHM|7 +G033|08C352|GHM|7 +G033|08C353|GHM|7 +G033|08C354|GHM|7 +G033|08C35J|GHM|7 +G033|08C391|GHM|7 +G033|08C392|GHM|7 +G033|08C393|GHM|7 +G033|08C394|GHM|7 +G033|08C39J|GHM|7 +G034|08C421|GHM|7 +G034|08C422|GHM|7 +G034|08C423|GHM|7 +G034|08C424|GHM|7 +G034|08C42J|GHM|7 +G034|08C461|GHM|7 +G034|08C462|GHM|7 +G034|08C463|GHM|7 +G034|08C464|GHM|7 +G034|08C46J|GHM|7 +G035|08C291|GHM|7 +G035|08C292|GHM|7 +G035|08C293|GHM|7 +G035|08C294|GHM|7 +G035|08C29J|GHM|7 +G035|08C29Z|GHM|7 +G036|08M02Z|GHM|7 +G036|08M041|GHM|7 +G036|08M042|GHM|7 +G036|08M043|GHM|7 +G036|08M044|GHM|7 +G036|08M04T|GHM|7 +G036|08M04V|GHM|7 +G036|08M04W|GHM|7 +G036|08M051|GHM|7 +G036|08M052|GHM|7 +G036|08M053|GHM|7 +G036|08M054|GHM|7 +G036|08M05T|GHM|7 +G036|08M05Z|GHM|7 +G036|08M061|GHM|7 +G036|08M062|GHM|7 +G036|08M063|GHM|7 +G036|08M064|GHM|7 +G036|08M06T|GHM|7 +G036|08M06Z|GHM|7 +G036|08M071|GHM|7 +G036|08M072|GHM|7 +G036|08M073|GHM|7 +G036|08M074|GHM|7 +G036|08M07T|GHM|7 +G036|08M07V|GHM|7 +G036|08M07W|GHM|7 +G036|08M081|GHM|7 +G036|08M082|GHM|7 +G036|08M083|GHM|7 +G036|08M084|GHM|7 +G036|08M08T|GHM|7 +G036|08M08Z|GHM|7 +G036|08M201|GHM|7 +G036|08M202|GHM|7 +G036|08M203|GHM|7 +G036|08M204|GHM|7 +G036|08M211|GHM|7 +G036|08M212|GHM|7 +G036|08M213|GHM|7 +G036|08M214|GHM|7 +G036|08M221|GHM|7 +G036|08M222|GHM|7 +G036|08M223|GHM|7 +G036|08M224|GHM|7 +G036|08M231|GHM|7 +G036|08M232|GHM|7 +G036|08M233|GHM|7 +G036|08M234|GHM|7 +G036|08M331|GHM|7 +G036|08M332|GHM|7 +G036|08M333|GHM|7 +G036|08M334|GHM|7 +G036|08M33T|GHM|7 +G036|08M371|GHM|7 +G036|08M372|GHM|7 +G036|08M373|GHM|7 +G036|08M374|GHM|7 +G036|08M37T|GHM|7 +G036|21M061|GHM|7 +G036|21M062|GHM|7 +G036|21M063|GHM|7 +G036|21M064|GHM|7 +G036|21M06Z|GHM|7 +G036|21M071|GHM|7 +G036|21M072|GHM|7 +G036|21M073|GHM|7 +G036|21M074|GHM|7 +G036|21M07T|GHM|7 +G036|21M07V|GHM|7 +G036|21M07W|GHM|7 +G037|26C021|GHM|7 +G037|26C022|GHM|7 +G037|26C023|GHM|7 +G037|26C024|GHM|7 +G037|26C02Z|GHM|7 +G038|08M241|GHM|7 +G038|08M242|GHM|7 +G038|08M243|GHM|7 +G038|08M244|GHM|7 +G038|08M24T|GHM|7 +G038|08M251|GHM|7 +G038|08M252|GHM|7 +G038|08M253|GHM|7 +G038|08M254|GHM|7 +G038|08M25T|GHM|7 +G039|08M091|GHM|7 +G039|08M092|GHM|7 +G039|08M093|GHM|7 +G039|08M094|GHM|7 +G039|08M09T|GHM|7 +G039|08M09Z|GHM|7 +G039|08M101|GHM|7 +G039|08M102|GHM|7 +G039|08M103|GHM|7 +G039|08M104|GHM|7 +G039|08M10T|GHM|7 +G039|08M10V|GHM|7 +G039|08M10W|GHM|7 +G039|08M271|GHM|7 +G039|08M272|GHM|7 +G039|08M273|GHM|7 +G039|08M274|GHM|7 +G039|08M27T|GHM|7 +G039|08M281|GHM|7 +G039|08M282|GHM|7 +G039|08M283|GHM|7 +G039|08M284|GHM|7 +G039|08M28T|GHM|7 +G039|08M291|GHM|7 +G039|08M292|GHM|7 +G039|08M293|GHM|7 +G039|08M294|GHM|7 +G039|08M29T|GHM|7 +G039|08M301|GHM|7 +G039|08M302|GHM|7 +G039|08M303|GHM|7 +G039|08M304|GHM|7 +G039|08M30T|GHM|7 +G039|08M321|GHM|7 +G039|08M322|GHM|7 +G039|08M323|GHM|7 +G039|08M324|GHM|7 +G039|08M32T|GHM|7 +G039|08M341|GHM|7 +G039|08M342|GHM|7 +G039|08M343|GHM|7 +G039|08M344|GHM|7 +G039|08M34T|GHM|7 +G039|08M36T|GHM|7 +G039|08M36Z|GHM|7 +G040|08M141|GHM|7 +G040|08M142|GHM|7 +G040|08M143|GHM|7 +G040|08M144|GHM|7 +G040|08M14T|GHM|7 +G040|08M14V|GHM|7 +G040|08M14W|GHM|7 +G040|08M151|GHM|7 +G040|08M152|GHM|7 +G040|08M153|GHM|7 +G040|08M154|GHM|7 +G040|08M15T|GHM|7 +G040|08M15V|GHM|7 +G040|08M15W|GHM|7 +G040|08M181|GHM|7 +G040|08M182|GHM|7 +G040|08M183|GHM|7 +G040|08M184|GHM|7 +G040|08M18T|GHM|7 +G040|08M18Z|GHM|7 +G040|08M191|GHM|7 +G040|08M192|GHM|7 +G040|08M193|GHM|7 +G040|08M194|GHM|7 +G040|08M19T|GHM|7 +G040|08M19V|GHM|7 +G040|08M19W|GHM|7 +G041|01C051|GHM|7 +G041|01C052|GHM|7 +G041|01C053|GHM|7 +G041|01C054|GHM|7 +G041|01C05V|GHM|7 +G041|01C05W|GHM|7 +G041|08C26Z|GHM|7 +G041|08C271|GHM|7 +G041|08C272|GHM|7 +G041|08C273|GHM|7 +G041|08C274|GHM|7 +G041|08C27V|GHM|7 +G041|08C27W|GHM|7 +G041|08C511|GHM|7 +G041|08C512|GHM|7 +G041|08C513|GHM|7 +G041|08C514|GHM|7 +G041|08C521|GHM|7 +G041|08C522|GHM|7 +G041|08C523|GHM|7 +G041|08C524|GHM|7 +G042|08M35Z|GHM|7 +G043|01C031|GHM|7 +G043|01C032|GHM|7 +G043|01C033|GHM|7 +G043|01C034|GHM|7 +G043|01C03V|GHM|7 +G043|01C03W|GHM|7 +G044|01C02Z|GHM|7 +G044|01C041|GHM|7 +G044|01C042|GHM|7 +G044|01C043|GHM|7 +G044|01C044|GHM|7 +G044|01C04V|GHM|7 +G044|01C04W|GHM|7 +G044|01C111|GHM|7 +G044|01C112|GHM|7 +G044|01C113|GHM|7 +G044|01C114|GHM|7 +G044|01C11Z|GHM|7 +G044|01C121|GHM|7 +G044|01C122|GHM|7 +G044|01C123|GHM|7 +G044|01C124|GHM|7 +G044|01C12Z|GHM|7 +G044|10C021|GHM|7 +G044|10C022|GHM|7 +G044|10C023|GHM|7 +G044|10C024|GHM|7 +G044|10C02Z|GHM|7 +G045|01C091|GHM|7 +G045|01C092|GHM|7 +G045|01C093|GHM|7 +G045|01C094|GHM|7 +G045|01C09Z|GHM|7 +G045|01C101|GHM|7 +G045|01C102|GHM|7 +G045|01C103|GHM|7 +G045|01C104|GHM|7 +G045|01C10J|GHM|7 +G045|01C10Z|GHM|7 +G046|01M181|GHM|7 +G046|01M182|GHM|7 +G046|01M183|GHM|7 +G046|01M184|GHM|7 +G046|01M18T|GHM|7 +G046|01M18V|GHM|7 +G046|01M18W|GHM|7 +G046|01M191|GHM|7 +G046|01M192|GHM|7 +G046|01M193|GHM|7 +G046|01M194|GHM|7 +G046|01M19V|GHM|7 +G046|01M19W|GHM|7 +G046|01M201|GHM|7 +G046|01M202|GHM|7 +G046|01M203|GHM|7 +G046|01M204|GHM|7 +G046|01M20V|GHM|7 +G046|01M20W|GHM|7 +G047|01M071|GHM|7 +G047|01M072|GHM|7 +G047|01M073|GHM|7 +G047|01M074|GHM|7 +G047|01M07T|GHM|7 +G047|01M07Z|GHM|7 +G047|01M081|GHM|7 +G047|01M082|GHM|7 +G047|01M083|GHM|7 +G047|01M084|GHM|7 +G047|01M08T|GHM|7 +G047|01M08V|GHM|7 +G047|01M08W|GHM|7 +G047|01M171|GHM|7 +G047|01M172|GHM|7 +G047|01M173|GHM|7 +G047|01M174|GHM|7 +G047|01M17T|GHM|7 +G047|01M17V|GHM|7 +G047|01M17W|GHM|7 +G048|01M091|GHM|7 +G048|01M092|GHM|7 +G048|01M093|GHM|7 +G048|01M094|GHM|7 +G048|01M09T|GHM|7 +G048|01M09Z|GHM|7 +G048|01M111|GHM|7 +G048|01M112|GHM|7 +G048|01M113|GHM|7 +G048|01M114|GHM|7 +G048|01M11T|GHM|7 +G048|01M11V|GHM|7 +G048|01M11W|GHM|7 +G049|01M101|GHM|7 +G049|01M102|GHM|7 +G049|01M103|GHM|7 +G049|01M104|GHM|7 +G049|01M10T|GHM|7 +G049|01M10V|GHM|7 +G049|01M10W|GHM|7 +G049|01M151|GHM|7 +G049|01M152|GHM|7 +G049|01M153|GHM|7 +G049|01M154|GHM|7 +G049|01M15T|GHM|7 +G049|01M15Z|GHM|7 +G049|01M161|GHM|7 +G049|01M162|GHM|7 +G049|01M163|GHM|7 +G049|01M164|GHM|7 +G049|01M16T|GHM|7 +G049|01M16Z|GHM|7 +G049|01M301|GHM|7 +G049|01M302|GHM|7 +G049|01M303|GHM|7 +G049|01M304|GHM|7 +G049|01M30T|GHM|7 +G049|01M311|GHM|7 +G049|01M312|GHM|7 +G049|01M313|GHM|7 +G049|01M314|GHM|7 +G049|01M31T|GHM|7 +G049|01M36E|GHM|7 +G050|01M131|GHM|7 +G050|01M132|GHM|7 +G050|01M133|GHM|7 +G050|01M134|GHM|7 +G050|01M13Z|GHM|7 +G051|01M221|GHM|7 +G051|01M222|GHM|7 +G051|01M223|GHM|7 +G051|01M224|GHM|7 +G051|01M22T|GHM|7 +G051|01M22Z|GHM|7 +G052|01M02Z|GHM|7 +G052|01M231|GHM|7 +G052|01M232|GHM|7 +G052|01M233|GHM|7 +G052|01M234|GHM|7 +G052|01M23Z|GHM|7 +G052|01M241|GHM|7 +G052|01M242|GHM|7 +G052|01M243|GHM|7 +G052|01M244|GHM|7 +G052|01M24T|GHM|7 +G052|01M24V|GHM|7 +G052|01M24W|GHM|7 +G052|01M251|GHM|7 +G052|01M252|GHM|7 +G052|01M253|GHM|7 +G052|01M254|GHM|7 +G052|01M25T|GHM|7 +G052|01M25V|GHM|7 +G052|01M25W|GHM|7 +G053|01M041|GHM|7 +G053|01M042|GHM|7 +G053|01M043|GHM|7 +G053|01M044|GHM|7 +G053|01M04T|GHM|7 +G053|01M04Z|GHM|7 +G053|01M051|GHM|7 +G053|01M052|GHM|7 +G053|01M053|GHM|7 +G053|01M054|GHM|7 +G053|01M05T|GHM|7 +G053|01M05V|GHM|7 +G053|01M05W|GHM|7 +G054|01M261|GHM|7 +G054|01M262|GHM|7 +G054|01M263|GHM|7 +G054|01M264|GHM|7 +G054|01M26T|GHM|7 +G054|01M271|GHM|7 +G054|01M272|GHM|7 +G054|01M273|GHM|7 +G054|01M274|GHM|7 +G054|01M27T|GHM|7 +G055|01M121|GHM|7 +G055|01M122|GHM|7 +G055|01M123|GHM|7 +G055|01M124|GHM|7 +G055|01M12T|GHM|7 +G055|01M12V|GHM|7 +G055|01M12W|GHM|7 +G055|01M281|GHM|7 +G055|01M282|GHM|7 +G055|01M283|GHM|7 +G055|01M284|GHM|7 +G055|01M28T|GHM|7 +G055|01M291|GHM|7 +G055|01M292|GHM|7 +G055|01M293|GHM|7 +G055|01M294|GHM|7 +G055|01M331|GHM|7 +G055|01M332|GHM|7 +G055|01M333|GHM|7 +G055|01M334|GHM|7 +G055|01M34T|GHM|7 +G055|01M34Z|GHM|7 +G055|01M35T|GHM|7 +G055|01M35Z|GHM|7 +G055|01M381|GHM|7 +G055|01M382|GHM|7 +G055|01M383|GHM|7 +G055|01M384|GHM|7 +G055|01M391|GHM|7 +G055|01M392|GHM|7 +G055|01M393|GHM|7 +G055|01M394|GHM|7 +G056|01M32Z|GHM|7 +G057|05K03Z|GHM|7 +G057|05K04Z|GHM|7 +G057|05K051|GHM|7 +G057|05K052|GHM|7 +G057|05K053|GHM|7 +G057|05K054|GHM|7 +G057|05K05V|GHM|7 +G057|05K05W|GHM|7 +G057|05K061|GHM|7 +G057|05K062|GHM|7 +G057|05K063|GHM|7 +G057|05K064|GHM|7 +G057|05K06T|GHM|7 +G057|05K06V|GHM|7 +G057|05K06W|GHM|7 +G057|05K211|GHM|7 +G057|05K212|GHM|7 +G057|05K213|GHM|7 +G057|05K214|GHM|7 +G058|05K07Z|GHM|7 +G058|05K08Z|GHM|7 +G058|05K111|GHM|7 +G058|05K112|GHM|7 +G058|05K113|GHM|7 +G058|05K114|GHM|7 +G058|05K11T|GHM|7 +G058|05K11Z|GHM|7 +G058|05K121|GHM|7 +G058|05K122|GHM|7 +G058|05K123|GHM|7 +G058|05K124|GHM|7 +G058|05K12Z|GHM|7 +G058|05K131|GHM|7 +G058|05K132|GHM|7 +G058|05K133|GHM|7 +G058|05K134|GHM|7 +G058|05K13J|GHM|7 +G058|05K13Z|GHM|7 +G058|05K191|GHM|7 +G058|05K192|GHM|7 +G058|05K193|GHM|7 +G058|05K194|GHM|7 +G058|05K201|GHM|7 +G058|05K202|GHM|7 +G058|05K203|GHM|7 +G058|05K204|GHM|7 +G058|05K20T|GHM|7 +G058|05K221|GHM|7 +G058|05K222|GHM|7 +G058|05K223|GHM|7 +G058|05K224|GHM|7 +G058|05K231|GHM|7 +G058|05K232|GHM|7 +G058|05K233|GHM|7 +G058|05K234|GHM|7 +G058|05K23J|GHM|7 +G058|05K241|GHM|7 +G058|05K242|GHM|7 +G058|05K243|GHM|7 +G058|05K244|GHM|7 +G058|05K24J|GHM|7 +G058|05K251|GHM|7 +G058|05K252|GHM|7 +G058|05K253|GHM|7 +G058|05K254|GHM|7 +G058|05K25J|GHM|7 +G058|05K261|GHM|7 +G058|05K262|GHM|7 +G058|05K263|GHM|7 +G058|05K264|GHM|7 +G058|05K26J|GHM|7 +G059|05K09Z|GHM|7 +G059|05K101|GHM|7 +G059|05K102|GHM|7 +G059|05K103|GHM|7 +G059|05K104|GHM|7 +G059|05K10J|GHM|7 +G059|05K10Z|GHM|7 +G059|05K151|GHM|7 +G059|05K152|GHM|7 +G059|05K153|GHM|7 +G059|05K154|GHM|7 +G059|05K15J|GHM|7 +G060|01K021|GHM|7 +G060|01K022|GHM|7 +G060|01K023|GHM|7 +G060|01K024|GHM|7 +G060|01K02Z|GHM|7 +G060|01K031|GHM|7 +G060|01K032|GHM|7 +G060|01K033|GHM|7 +G060|01K034|GHM|7 +G060|01K03Z|GHM|7 +G060|01K071|GHM|7 +G060|01K072|GHM|7 +G060|01K073|GHM|7 +G060|01K074|GHM|7 +G061|05C021|GHM|7 +G061|05C022|GHM|7 +G061|05C023|GHM|7 +G061|05C024|GHM|7 +G061|05C02Z|GHM|7 +G061|05C031|GHM|7 +G061|05C032|GHM|7 +G061|05C033|GHM|7 +G061|05C034|GHM|7 +G061|05C03V|GHM|7 +G061|05C03W|GHM|7 +G062|05C041|GHM|7 +G062|05C042|GHM|7 +G062|05C043|GHM|7 +G062|05C044|GHM|7 +G062|05C04V|GHM|7 +G062|05C04W|GHM|7 +G062|05C051|GHM|7 +G062|05C052|GHM|7 +G062|05C053|GHM|7 +G062|05C054|GHM|7 +G062|05C05V|GHM|7 +G062|05C05W|GHM|7 +G063|05C061|GHM|7 +G063|05C062|GHM|7 +G063|05C063|GHM|7 +G063|05C064|GHM|7 +G063|05C06V|GHM|7 +G063|05C06W|GHM|7 +G063|05C071|GHM|7 +G063|05C072|GHM|7 +G063|05C073|GHM|7 +G063|05C074|GHM|7 +G063|05C07Z|GHM|7 +G063|05C081|GHM|7 +G063|05C082|GHM|7 +G063|05C083|GHM|7 +G063|05C084|GHM|7 +G063|05C08T|GHM|7 +G063|05C08V|GHM|7 +G063|05C08W|GHM|7 +G063|05C091|GHM|7 +G063|05C092|GHM|7 +G063|05C093|GHM|7 +G063|05C094|GHM|7 +G063|05C09Z|GHM|7 +G064|05C141|GHM|7 +G064|05C142|GHM|7 +G064|05C143|GHM|7 +G064|05C144|GHM|7 +G064|05C14J|GHM|7 +G064|05C14Z|GHM|7 +G064|05C151|GHM|7 +G064|05C152|GHM|7 +G064|05C153|GHM|7 +G064|05C154|GHM|7 +G064|05C15T|GHM|7 +G064|05C15Z|GHM|7 +G064|05C16Z|GHM|7 +G064|05C191|GHM|7 +G064|05C192|GHM|7 +G064|05C193|GHM|7 +G064|05C194|GHM|7 +G064|05C19T|GHM|7 +G064|05C19Z|GHM|7 +G064|05C201|GHM|7 +G064|05C202|GHM|7 +G064|05C203|GHM|7 +G064|05C204|GHM|7 +G064|05C20Z|GHM|7 +G064|05C221|GHM|7 +G064|05C222|GHM|7 +G064|05C223|GHM|7 +G064|05C224|GHM|7 +G064|05C22T|GHM|7 +G065|05M091|GHM|7 +G065|05M092|GHM|7 +G065|05M093|GHM|7 +G065|05M094|GHM|7 +G065|05M09T|GHM|7 +G065|05M09V|GHM|7 +G065|05M09W|GHM|7 +G065|05M101|GHM|7 +G065|05M102|GHM|7 +G065|05M103|GHM|7 +G065|05M104|GHM|7 +G065|05M10T|GHM|7 +G065|05M10Z|GHM|7 +G065|05M111|GHM|7 +G065|05M112|GHM|7 +G065|05M113|GHM|7 +G065|05M114|GHM|7 +G065|05M11T|GHM|7 +G065|05M11V|GHM|7 +G065|05M11W|GHM|7 +G065|05M141|GHM|7 +G065|05M142|GHM|7 +G065|05M143|GHM|7 +G065|05M144|GHM|7 +G065|05M14Z|GHM|7 +G066|05M02E|GHM|7 +G066|05M03Z|GHM|7 +G066|05M041|GHM|7 +G066|05M042|GHM|7 +G066|05M043|GHM|7 +G066|05M044|GHM|7 +G066|05M04T|GHM|7 +G066|05M04V|GHM|7 +G066|05M04W|GHM|7 +G066|05M061|GHM|7 +G066|05M062|GHM|7 +G066|05M063|GHM|7 +G066|05M064|GHM|7 +G066|05M06T|GHM|7 +G066|05M06V|GHM|7 +G066|05M06W|GHM|7 +G066|05M161|GHM|7 +G066|05M162|GHM|7 +G066|05M163|GHM|7 +G066|05M164|GHM|7 +G066|05M16T|GHM|7 +G066|05M16V|GHM|7 +G066|05M16W|GHM|7 +G066|05M21E|GHM|7 +G067|05M181|GHM|7 +G067|05M182|GHM|7 +G067|05M183|GHM|7 +G067|05M184|GHM|7 +G067|05M18T|GHM|7 +G067|05M18Z|GHM|7 +G068|05M151|GHM|7 +G068|05M152|GHM|7 +G068|05M153|GHM|7 +G068|05M154|GHM|7 +G068|05M15T|GHM|7 +G068|05M15Z|GHM|7 +G069|05M081|GHM|7 +G069|05M082|GHM|7 +G069|05M083|GHM|7 +G069|05M084|GHM|7 +G069|05M08T|GHM|7 +G069|05M08V|GHM|7 +G069|05M08W|GHM|7 +G070|05M051|GHM|7 +G070|05M052|GHM|7 +G070|05M053|GHM|7 +G070|05M054|GHM|7 +G070|05M05T|GHM|7 +G070|05M05V|GHM|7 +G070|05M05W|GHM|7 +G070|05M131|GHM|7 +G070|05M132|GHM|7 +G070|05M133|GHM|7 +G070|05M134|GHM|7 +G070|05M13T|GHM|7 +G070|05M13Z|GHM|7 +G070|05M171|GHM|7 +G070|05M172|GHM|7 +G070|05M173|GHM|7 +G070|05M174|GHM|7 +G070|05M17T|GHM|7 +G070|05M17V|GHM|7 +G070|05M17W|GHM|7 +G070|05M191|GHM|7 +G070|05M192|GHM|7 +G070|05M193|GHM|7 +G070|05M194|GHM|7 +G070|05M23T|GHM|7 +G070|05M23Z|GHM|7 +G071|05M20Z|GHM|7 +G072|05C101|GHM|7 +G072|05C102|GHM|7 +G072|05C103|GHM|7 +G072|05C104|GHM|7 +G072|05C10V|GHM|7 +G072|05C10W|GHM|7 +G073|05C171|GHM|7 +G073|05C172|GHM|7 +G073|05C173|GHM|7 +G073|05C174|GHM|7 +G073|05C17J|GHM|7 +G073|05C17V|GHM|7 +G073|05C17W|GHM|7 +G074|01C061|GHM|7 +G074|01C062|GHM|7 +G074|01C063|GHM|7 +G074|01C064|GHM|7 +G074|01C06V|GHM|7 +G074|01C06W|GHM|7 +G074|05C111|GHM|7 +G074|05C112|GHM|7 +G074|05C113|GHM|7 +G074|05C114|GHM|7 +G074|05C11J|GHM|7 +G074|05C11V|GHM|7 +G074|05C11W|GHM|7 +G074|05C211|GHM|7 +G074|05C212|GHM|7 +G074|05C213|GHM|7 +G074|05C214|GHM|7 +G074|05C21J|GHM|7 +G074|11C091|GHM|7 +G074|11C092|GHM|7 +G074|11C093|GHM|7 +G074|11C094|GHM|7 +G074|11C09J|GHM|7 +G075|05M071|GHM|7 +G075|05M072|GHM|7 +G075|05M073|GHM|7 +G075|05M074|GHM|7 +G075|05M07T|GHM|7 +G075|05M07V|GHM|7 +G075|05M07W|GHM|7 +G075|05M121|GHM|7 +G075|05M122|GHM|7 +G075|05M123|GHM|7 +G075|05M124|GHM|7 +G075|05M12T|GHM|7 +G075|05M12V|GHM|7 +G075|05M12W|GHM|7 +G076|04C021|GHM|7 +G076|04C022|GHM|7 +G076|04C023|GHM|7 +G076|04C024|GHM|7 +G076|04C02V|GHM|7 +G076|04C02W|GHM|7 +G076|04C041|GHM|7 +G076|04C042|GHM|7 +G076|04C043|GHM|7 +G076|04C044|GHM|7 +G077|04C031|GHM|7 +G077|04C032|GHM|7 +G077|04C033|GHM|7 +G077|04C034|GHM|7 +G077|04C03V|GHM|7 +G077|04C03W|GHM|7 +G078|04M021|GHM|7 +G078|04M022|GHM|7 +G078|04M023|GHM|7 +G078|04M024|GHM|7 +G078|04M02T|GHM|7 +G078|04M02V|GHM|7 +G078|04M02W|GHM|7 +G078|04M031|GHM|7 +G078|04M032|GHM|7 +G078|04M033|GHM|7 +G078|04M034|GHM|7 +G078|04M03T|GHM|7 +G078|04M03V|GHM|7 +G078|04M03W|GHM|7 +G078|04M081|GHM|7 +G078|04M082|GHM|7 +G078|04M083|GHM|7 +G078|04M084|GHM|7 +G078|04M08T|GHM|7 +G078|04M08V|GHM|7 +G078|04M08W|GHM|7 +G078|04M161|GHM|7 +G078|04M162|GHM|7 +G078|04M163|GHM|7 +G078|04M164|GHM|7 +G078|04M16T|GHM|7 +G078|04M16V|GHM|7 +G078|04M16W|GHM|7 +G078|04M181|GHM|7 +G078|04M182|GHM|7 +G078|04M183|GHM|7 +G078|04M184|GHM|7 +G078|04M18T|GHM|7 +G079|04M101|GHM|7 +G079|04M102|GHM|7 +G079|04M103|GHM|7 +G079|04M104|GHM|7 +G079|04M10T|GHM|7 +G079|04M10V|GHM|7 +G079|04M10W|GHM|7 +G079|04M131|GHM|7 +G079|04M132|GHM|7 +G079|04M133|GHM|7 +G079|04M134|GHM|7 +G079|04M13T|GHM|7 +G079|04M13Z|GHM|7 +G080|04M041|GHM|7 +G080|04M042|GHM|7 +G080|04M043|GHM|7 +G080|04M044|GHM|7 +G080|04M04Z|GHM|7 +G080|04M051|GHM|7 +G080|04M052|GHM|7 +G080|04M053|GHM|7 +G080|04M054|GHM|7 +G080|04M05T|GHM|7 +G080|04M05V|GHM|7 +G080|04M05W|GHM|7 +G080|04M061|GHM|7 +G080|04M062|GHM|7 +G080|04M063|GHM|7 +G080|04M064|GHM|7 +G080|04M06T|GHM|7 +G080|04M06Z|GHM|7 +G080|04M071|GHM|7 +G080|04M072|GHM|7 +G080|04M073|GHM|7 +G080|04M074|GHM|7 +G080|04M07T|GHM|7 +G080|04M07V|GHM|7 +G080|04M07W|GHM|7 +G080|04M191|GHM|7 +G080|04M192|GHM|7 +G080|04M193|GHM|7 +G080|04M194|GHM|7 +G080|04M19T|GHM|7 +G080|04M201|GHM|7 +G080|04M202|GHM|7 +G080|04M203|GHM|7 +G080|04M204|GHM|7 +G080|04M20T|GHM|7 +G080|04M251|GHM|7 +G080|04M252|GHM|7 +G080|04M253|GHM|7 +G080|04M254|GHM|7 +G080|04M25T|GHM|7 +G081|04M091|GHM|7 +G081|04M092|GHM|7 +G081|04M093|GHM|7 +G081|04M094|GHM|7 +G081|04M09T|GHM|7 +G081|04M09V|GHM|7 +G081|04M09W|GHM|7 +G082|04M111|GHM|7 +G082|04M112|GHM|7 +G082|04M113|GHM|7 +G082|04M114|GHM|7 +G082|04M11V|GHM|7 +G082|04M11W|GHM|7 +G082|04M121|GHM|7 +G082|04M122|GHM|7 +G082|04M123|GHM|7 +G082|04M124|GHM|7 +G082|04M12T|GHM|7 +G082|04M12V|GHM|7 +G082|04M12W|GHM|7 +G082|04M141|GHM|7 +G082|04M142|GHM|7 +G082|04M143|GHM|7 +G082|04M144|GHM|7 +G082|04M14T|GHM|7 +G082|04M14V|GHM|7 +G082|04M14W|GHM|7 +G082|04M151|GHM|7 +G082|04M152|GHM|7 +G082|04M153|GHM|7 +G082|04M154|GHM|7 +G082|04M15T|GHM|7 +G082|04M15V|GHM|7 +G082|04M15W|GHM|7 +G082|04M171|GHM|7 +G082|04M172|GHM|7 +G082|04M173|GHM|7 +G082|04M174|GHM|7 +G082|04M17T|GHM|7 +G082|04M17V|GHM|7 +G082|04M17W|GHM|7 +G082|04M211|GHM|7 +G082|04M212|GHM|7 +G082|04M213|GHM|7 +G082|04M214|GHM|7 +G082|04M23T|GHM|7 +G082|04M23Z|GHM|7 +G082|04M24E|GHM|7 +G082|04M261|GHM|7 +G082|04M262|GHM|7 +G082|04M263|GHM|7 +G082|04M264|GHM|7 +G082|04M26T|GHM|7 +G082|04M271|GHM|7 +G082|04M272|GHM|7 +G082|04M273|GHM|7 +G082|04M274|GHM|7 +G083|04M22Z|GHM|7 +G084|04K02J|GHM|7 +G085|03C191|GHM|7 +G085|03C192|GHM|7 +G085|03C193|GHM|7 +G085|03C194|GHM|7 +G085|03C19J|GHM|7 +G085|03C19Z|GHM|7 +G085|03C251|GHM|7 +G085|03C252|GHM|7 +G085|03C253|GHM|7 +G085|03C254|GHM|7 +G085|03C261|GHM|7 +G085|03C262|GHM|7 +G085|03C263|GHM|7 +G085|03C264|GHM|7 +G085|08C281|GHM|7 +G085|08C282|GHM|7 +G085|08C283|GHM|7 +G085|08C284|GHM|7 +G085|08C28J|GHM|7 +G085|08C28Z|GHM|7 +G086|03C181|GHM|7 +G086|03C182|GHM|7 +G086|03C183|GHM|7 +G086|03C184|GHM|7 +G086|03C18Z|GHM|7 +G086|03C201|GHM|7 +G086|03C202|GHM|7 +G086|03C203|GHM|7 +G086|03C204|GHM|7 +G086|03C20J|GHM|7 +G086|03C20Z|GHM|7 +G086|03C211|GHM|7 +G086|03C212|GHM|7 +G086|03C213|GHM|7 +G086|03C214|GHM|7 +G086|03C21J|GHM|7 +G086|03C21Z|GHM|7 +G086|03C301|GHM|7 +G086|03C302|GHM|7 +G086|03C303|GHM|7 +G086|03C304|GHM|7 +G086|03C30J|GHM|7 +G087|03C101|GHM|7 +G087|03C102|GHM|7 +G087|03C103|GHM|7 +G087|03C104|GHM|7 +G087|03C10Z|GHM|7 +G087|03C111|GHM|7 +G087|03C112|GHM|7 +G087|03C113|GHM|7 +G087|03C114|GHM|7 +G087|03C11Z|GHM|7 +G087|03C121|GHM|7 +G087|03C122|GHM|7 +G087|03C123|GHM|7 +G087|03C124|GHM|7 +G087|03C12Z|GHM|7 +G087|03C131|GHM|7 +G087|03C132|GHM|7 +G087|03C133|GHM|7 +G087|03C134|GHM|7 +G087|03C13Z|GHM|7 +G087|03C141|GHM|7 +G087|03C142|GHM|7 +G087|03C143|GHM|7 +G087|03C144|GHM|7 +G087|03C14J|GHM|7 +G087|03C14Z|GHM|7 +G087|03C151|GHM|7 +G087|03C152|GHM|7 +G087|03C153|GHM|7 +G087|03C154|GHM|7 +G087|03C15J|GHM|7 +G087|03C15Z|GHM|7 +G087|03C22J|GHM|7 +G087|03C27J|GHM|7 +G087|03C28J|GHM|7 +G088|03C03Z|GHM|7 +G088|03C04Z|GHM|7 +G088|03C051|GHM|7 +G088|03C052|GHM|7 +G088|03C053|GHM|7 +G088|03C054|GHM|7 +G088|03C05T|GHM|7 +G088|03C05Z|GHM|7 +G088|03C061|GHM|7 +G088|03C062|GHM|7 +G088|03C063|GHM|7 +G088|03C064|GHM|7 +G088|03C06J|GHM|7 +G088|03C06Z|GHM|7 +G088|03C071|GHM|7 +G088|03C072|GHM|7 +G088|03C073|GHM|7 +G088|03C074|GHM|7 +G088|03C07J|GHM|7 +G088|03C07V|GHM|7 +G088|03C07W|GHM|7 +G088|03C091|GHM|7 +G088|03C092|GHM|7 +G088|03C093|GHM|7 +G088|03C094|GHM|7 +G088|03C09J|GHM|7 +G088|03C09Z|GHM|7 +G088|03C161|GHM|7 +G088|03C162|GHM|7 +G088|03C163|GHM|7 +G088|03C164|GHM|7 +G088|03C16J|GHM|7 +G088|03C16V|GHM|7 +G088|03C16W|GHM|7 +G088|03C241|GHM|7 +G088|03C242|GHM|7 +G088|03C243|GHM|7 +G088|03C244|GHM|7 +G088|03C24J|GHM|7 +G088|03C291|GHM|7 +G088|03C292|GHM|7 +G088|03C293|GHM|7 +G088|03C294|GHM|7 +G088|03C29J|GHM|7 +G089|03C171|GHM|7 +G089|03C172|GHM|7 +G089|03C173|GHM|7 +G089|03C174|GHM|7 +G089|03C17J|GHM|7 +G089|03C17Z|GHM|7 +G090|03M101|GHM|7 +G090|03M102|GHM|7 +G090|03M103|GHM|7 +G090|03M104|GHM|7 +G090|03M10T|GHM|7 +G090|03M10Z|GHM|7 +G090|03M111|GHM|7 +G090|03M112|GHM|7 +G090|03M113|GHM|7 +G090|03M114|GHM|7 +G090|03M11T|GHM|7 +G090|03M11V|GHM|7 +G090|03M11W|GHM|7 +G091|03M031|GHM|7 +G091|03M032|GHM|7 +G091|03M033|GHM|7 +G091|03M034|GHM|7 +G091|03M03T|GHM|7 +G091|03M03Z|GHM|7 +G091|03M041|GHM|7 +G091|03M042|GHM|7 +G091|03M043|GHM|7 +G091|03M044|GHM|7 +G091|03M04T|GHM|7 +G091|03M04V|GHM|7 +G091|03M04W|GHM|7 +G091|03M121|GHM|7 +G091|03M122|GHM|7 +G091|03M123|GHM|7 +G091|03M124|GHM|7 +G091|03M131|GHM|7 +G091|03M132|GHM|7 +G091|03M133|GHM|7 +G091|03M134|GHM|7 +G092|03M071|GHM|7 +G092|03M072|GHM|7 +G092|03M073|GHM|7 +G092|03M074|GHM|7 +G092|03M07T|GHM|7 +G092|03M07V|GHM|7 +G092|03M07W|GHM|7 +G093|03M021|GHM|7 +G093|03M022|GHM|7 +G093|03M023|GHM|7 +G093|03M024|GHM|7 +G093|03M02T|GHM|7 +G093|03M02Z|GHM|7 +G093|03M051|GHM|7 +G093|03M052|GHM|7 +G093|03M053|GHM|7 +G093|03M054|GHM|7 +G093|03M05T|GHM|7 +G093|03M05Z|GHM|7 +G093|03M061|GHM|7 +G093|03M062|GHM|7 +G093|03M063|GHM|7 +G093|03M064|GHM|7 +G093|03M06T|GHM|7 +G093|03M06Z|GHM|7 +G093|03M081|GHM|7 +G093|03M082|GHM|7 +G093|03M083|GHM|7 +G093|03M084|GHM|7 +G093|03M08T|GHM|7 +G093|03M08Z|GHM|7 +G093|03M091|GHM|7 +G093|03M092|GHM|7 +G093|03M093|GHM|7 +G093|03M094|GHM|7 +G093|03M09T|GHM|7 +G093|03M09V|GHM|7 +G093|03M09W|GHM|7 +G093|03M15T|GHM|7 +G093|03M15Z|GHM|7 +G094|03M14Z|GHM|7 +G095|03K03J|GHM|7 +G096|02C021|GHM|7 +G096|02C022|GHM|7 +G096|02C023|GHM|7 +G096|02C024|GHM|7 +G096|02C02J|GHM|7 +G096|02C02V|GHM|7 +G096|02C02W|GHM|7 +G096|02C031|GHM|7 +G096|02C032|GHM|7 +G096|02C033|GHM|7 +G096|02C034|GHM|7 +G096|02C03J|GHM|7 +G096|02C03Z|GHM|7 +G096|02C101|GHM|7 +G096|02C102|GHM|7 +G096|02C103|GHM|7 +G096|02C104|GHM|7 +G096|02C10J|GHM|7 +G096|02C111|GHM|7 +G096|02C112|GHM|7 +G096|02C113|GHM|7 +G096|02C114|GHM|7 +G096|02C11J|GHM|7 +G097|02C051|GHM|7 +G097|02C052|GHM|7 +G097|02C053|GHM|7 +G097|02C054|GHM|7 +G097|02C05J|GHM|7 +G097|02C05Z|GHM|7 +G097|02C121|GHM|7 +G097|02C122|GHM|7 +G097|02C123|GHM|7 +G097|02C124|GHM|7 +G097|02C12J|GHM|7 +G098|02C091|GHM|7 +G098|02C092|GHM|7 +G098|02C093|GHM|7 +G098|02C094|GHM|7 +G098|02C09J|GHM|7 +G098|02C09Z|GHM|7 +G099|02C04Z|GHM|7 +G099|02C061|GHM|7 +G099|02C062|GHM|7 +G099|02C063|GHM|7 +G099|02C064|GHM|7 +G099|02C06J|GHM|7 +G099|02C06Z|GHM|7 +G099|02C071|GHM|7 +G099|02C072|GHM|7 +G099|02C073|GHM|7 +G099|02C074|GHM|7 +G099|02C07J|GHM|7 +G099|02C07Z|GHM|7 +G099|02C081|GHM|7 +G099|02C082|GHM|7 +G099|02C083|GHM|7 +G099|02C084|GHM|7 +G099|02C08J|GHM|7 +G099|02C08V|GHM|7 +G099|02C08W|GHM|7 +G099|02C131|GHM|7 +G099|02C132|GHM|7 +G099|02C133|GHM|7 +G099|02C134|GHM|7 +G099|02C13J|GHM|7 +G100|02M021|GHM|7 +G100|02M022|GHM|7 +G100|02M023|GHM|7 +G100|02M024|GHM|7 +G100|02M02Z|GHM|7 +G100|02M041|GHM|7 +G100|02M042|GHM|7 +G100|02M043|GHM|7 +G100|02M044|GHM|7 +G100|02M04T|GHM|7 +G100|02M04Z|GHM|7 +G100|02M051|GHM|7 +G100|02M052|GHM|7 +G100|02M053|GHM|7 +G100|02M054|GHM|7 +G100|02M05T|GHM|7 +G100|02M05Z|GHM|7 +G100|02M071|GHM|7 +G100|02M072|GHM|7 +G100|02M073|GHM|7 +G100|02M074|GHM|7 +G100|02M07T|GHM|7 +G100|02M081|GHM|7 +G100|02M082|GHM|7 +G100|02M083|GHM|7 +G100|02M084|GHM|7 +G100|02M08T|GHM|7 +G100|02M10T|GHM|7 +G100|02M10Z|GHM|7 +G101|02M031|GHM|7 +G101|02M032|GHM|7 +G101|02M033|GHM|7 +G101|02M034|GHM|7 +G101|02M03Z|GHM|7 +G102|02M09Z|GHM|7 +G103|13C051|GHM|7 +G103|13C052|GHM|7 +G103|13C053|GHM|7 +G103|13C054|GHM|7 +G103|13C05Z|GHM|7 +G103|13C111|GHM|7 +G103|13C112|GHM|7 +G103|13C113|GHM|7 +G103|13C114|GHM|7 +G103|13C11J|GHM|7 +G103|13C11Z|GHM|7 +G103|13C141|GHM|7 +G103|13C142|GHM|7 +G103|13C143|GHM|7 +G103|13C144|GHM|7 +G103|13C14V|GHM|7 +G103|13C14W|GHM|7 +G104|13C151|GHM|7 +G104|13C152|GHM|7 +G104|13C153|GHM|7 +G104|13C154|GHM|7 +G104|13C15V|GHM|7 +G104|13C15W|GHM|7 +G105|13C031|GHM|7 +G105|13C032|GHM|7 +G105|13C033|GHM|7 +G105|13C034|GHM|7 +G105|13C03V|GHM|7 +G105|13C03W|GHM|7 +G105|13C061|GHM|7 +G105|13C062|GHM|7 +G105|13C063|GHM|7 +G105|13C064|GHM|7 +G105|13C06J|GHM|7 +G105|13C06Z|GHM|7 +G105|13C071|GHM|7 +G105|13C072|GHM|7 +G105|13C073|GHM|7 +G105|13C074|GHM|7 +G105|13C07J|GHM|7 +G105|13C07V|GHM|7 +G105|13C07W|GHM|7 +G105|13C091|GHM|7 +G105|13C092|GHM|7 +G105|13C093|GHM|7 +G105|13C094|GHM|7 +G105|13C09J|GHM|7 +G105|13C09T|GHM|7 +G105|13C09Z|GHM|7 +G105|13C101|GHM|7 +G105|13C102|GHM|7 +G105|13C103|GHM|7 +G105|13C104|GHM|7 +G105|13C10J|GHM|7 +G105|13C10T|GHM|7 +G105|13C10Z|GHM|7 +G105|13C121|GHM|7 +G105|13C122|GHM|7 +G105|13C123|GHM|7 +G105|13C124|GHM|7 +G105|13C12J|GHM|7 +G105|13C12Z|GHM|7 +G105|13C181|GHM|7 +G105|13C182|GHM|7 +G105|13C183|GHM|7 +G105|13C184|GHM|7 +G105|13C191|GHM|7 +G105|13C192|GHM|7 +G105|13C193|GHM|7 +G105|13C194|GHM|7 +G105|13C19J|GHM|7 +G105|13C201|GHM|7 +G105|13C202|GHM|7 +G105|13C203|GHM|7 +G105|13C204|GHM|7 +G105|13C20J|GHM|7 +G106|13C041|GHM|7 +G106|13C042|GHM|7 +G106|13C043|GHM|7 +G106|13C044|GHM|7 +G106|13C04J|GHM|7 +G106|13C04V|GHM|7 +G106|13C04W|GHM|7 +G106|13C081|GHM|7 +G106|13C082|GHM|7 +G106|13C083|GHM|7 +G106|13C084|GHM|7 +G106|13C08J|GHM|7 +G106|13C08V|GHM|7 +G106|13C08W|GHM|7 +G106|13C131|GHM|7 +G106|13C132|GHM|7 +G106|13C133|GHM|7 +G106|13C134|GHM|7 +G106|13C13T|GHM|7 +G106|13C13Z|GHM|7 +G106|13C16J|GHM|7 +G106|13C171|GHM|7 +G106|13C172|GHM|7 +G106|13C173|GHM|7 +G106|13C174|GHM|7 +G106|13C17J|GHM|7 +G107|09C041|GHM|7 +G107|09C042|GHM|7 +G107|09C043|GHM|7 +G107|09C044|GHM|7 +G107|09C04V|GHM|7 +G107|09C04W|GHM|7 +G107|09C051|GHM|7 +G107|09C052|GHM|7 +G107|09C053|GHM|7 +G107|09C054|GHM|7 +G107|09C05J|GHM|7 +G107|09C05V|GHM|7 +G107|09C05W|GHM|7 +G107|09C111|GHM|7 +G107|09C112|GHM|7 +G107|09C113|GHM|7 +G107|09C114|GHM|7 +G108|09C061|GHM|7 +G108|09C062|GHM|7 +G108|09C063|GHM|7 +G108|09C064|GHM|7 +G108|09C06T|GHM|7 +G108|09C06Z|GHM|7 +G108|09C071|GHM|7 +G108|09C072|GHM|7 +G108|09C073|GHM|7 +G108|09C074|GHM|7 +G108|09C07J|GHM|7 +G108|09C07Z|GHM|7 +G109|13M031|GHM|7 +G109|13M032|GHM|7 +G109|13M033|GHM|7 +G109|13M034|GHM|7 +G109|13M03T|GHM|7 +G109|13M03V|GHM|7 +G109|13M03W|GHM|7 +G109|13M071|GHM|7 +G109|13M072|GHM|7 +G109|13M073|GHM|7 +G109|13M074|GHM|7 +G110|13M041|GHM|7 +G110|13M042|GHM|7 +G110|13M043|GHM|7 +G110|13M044|GHM|7 +G110|13M04T|GHM|7 +G110|13M04V|GHM|7 +G110|13M04W|GHM|7 +G110|13M10Z|GHM|7 +G111|13M081|GHM|7 +G111|13M082|GHM|7 +G111|13M083|GHM|7 +G111|13M084|GHM|7 +G112|13M02Z|GHM|7 +G112|13M051|GHM|7 +G112|13M052|GHM|7 +G112|13M053|GHM|7 +G112|13M054|GHM|7 +G112|13M061|GHM|7 +G112|13M062|GHM|7 +G112|13M063|GHM|7 +G112|13M064|GHM|7 +G112|13M06T|GHM|7 +G113|09M091|GHM|7 +G113|09M092|GHM|7 +G113|09M093|GHM|7 +G113|09M094|GHM|7 +G113|09M09T|GHM|7 +G113|09M09Z|GHM|7 +G113|09M15Z|GHM|7 +G114|09M101|GHM|7 +G114|09M102|GHM|7 +G114|09M103|GHM|7 +G114|09M104|GHM|7 +G114|09M10T|GHM|7 +G114|09M10V|GHM|7 +G114|09M10W|GHM|7 +G115|09M13Z|GHM|7 +G115|13M09Z|GHM|7 +G116|14C03A|GHM|7 +G116|14C03B|GHM|7 +G116|14C03C|GHM|7 +G116|14C03D|GHM|7 +G116|14C03Z|GHM|7 +G116|14Z02A|GHM|7 +G116|14Z02B|GHM|7 +G116|14Z02C|GHM|7 +G116|14Z02T|GHM|7 +G116|14Z09Z|GHM|7 +G116|14Z10A|GHM|7 +G116|14Z10B|GHM|7 +G116|14Z10T|GHM|7 +G116|14Z11A|GHM|7 +G116|14Z11B|GHM|7 +G116|14Z12A|GHM|7 +G116|14Z12B|GHM|7 +G116|14Z13A|GHM|7 +G116|14Z13B|GHM|7 +G116|14Z13C|GHM|7 +G116|14Z13D|GHM|7 +G116|14Z13T|GHM|7 +G116|14Z14A|GHM|7 +G116|14Z14B|GHM|7 +G116|14Z14C|GHM|7 +G116|14Z14D|GHM|7 +G116|14Z14T|GHM|7 +G117|14C02A|GHM|7 +G117|14C02B|GHM|7 +G117|14C02C|GHM|7 +G117|14C06A|GHM|7 +G117|14C06B|GHM|7 +G117|14C06C|GHM|7 +G117|14C06D|GHM|7 +G117|14C07A|GHM|7 +G117|14C07B|GHM|7 +G117|14C07C|GHM|7 +G117|14C07D|GHM|7 +G117|14C08A|GHM|7 +G117|14C08B|GHM|7 +G117|14C08C|GHM|7 +G117|14C08D|GHM|7 +G118|14Z08Z|GHM|7 +G119|14C09A|GHM|7 +G119|14C09B|GHM|7 +G119|14C10T|GHM|7 +G119|14C10Z|GHM|7 +G119|14M03A|GHM|7 +G119|14M03B|GHM|7 +G119|14M03C|GHM|7 +G119|14M03D|GHM|7 +G119|14M03T|GHM|7 +G119|14Z03A|GHM|7 +G119|14Z03B|GHM|7 +G119|14Z03T|GHM|7 +G119|14Z05Z|GHM|7 +G119|14Z06T|GHM|7 +G119|14Z06Z|GHM|7 +G119|14Z07Z|GHM|7 +G119|14Z15Z|GHM|7 +G119|14Z16T|GHM|7 +G119|14Z16Z|GHM|7 +G120|14C04T|GHM|7 +G120|14C04Z|GHM|7 +G120|14M02A|GHM|7 +G120|14M02B|GHM|7 +G120|14M02T|GHM|7 +G120|14M02Z|GHM|7 +G121|14C05J|GHM|7 +G121|14C05Z|GHM|7 +G121|14Z04T|GHM|7 +G121|14Z04Z|GHM|7 +G122|15C02A|GHM|7 +G122|15C02B|GHM|7 +G122|15C02Z|GHM|7 +G122|15C03A|GHM|7 +G122|15C03B|GHM|7 +G122|15C03Z|GHM|7 +G122|15C04A|GHM|7 +G122|15C04B|GHM|7 +G122|15C04Z|GHM|7 +G122|15C05A|GHM|7 +G122|15C05B|GHM|7 +G122|15C05Z|GHM|7 +G122|15C06A|GHM|7 +G122|15C06B|GHM|7 +G122|15C06Z|GHM|7 +G123|15M02Z|GHM|7 +G123|15Z03Z|GHM|7 +G124|15M05A|GHM|7 +G124|15M05B|GHM|7 +G124|15M05C|GHM|7 +G124|15M05D|GHM|7 +G124|15M06A|GHM|7 +G124|15M06B|GHM|7 +G124|15M06C|GHM|7 +G124|15M06D|GHM|7 +G124|15M07A|GHM|7 +G124|15M07B|GHM|7 +G124|15M07C|GHM|7 +G124|15M08A|GHM|7 +G124|15M08B|GHM|7 +G124|15M08C|GHM|7 +G124|15M09A|GHM|7 +G124|15M09B|GHM|7 +G124|15M09C|GHM|7 +G124|15M10A|GHM|7 +G124|15M10B|GHM|7 +G124|15M10C|GHM|7 +G124|15M11A|GHM|7 +G124|15M11B|GHM|7 +G124|15M11C|GHM|7 +G124|15M12A|GHM|7 +G124|15M12B|GHM|7 +G124|15M13A|GHM|7 +G124|15M13B|GHM|7 +G124|15M14A|GHM|7 +G124|15M14B|GHM|7 +G124|15Z02T|GHM|7 +G124|15Z02Z|GHM|7 +G124|15Z04E|GHM|7 +G124|15Z05A|GHM|7 +G124|15Z05B|GHM|7 +G124|15Z05C|GHM|7 +G124|15Z05D|GHM|7 +G124|15Z06A|GHM|7 +G124|15Z06B|GHM|7 +G124|15Z06C|GHM|7 +G124|15Z06D|GHM|7 +G124|15Z07A|GHM|7 +G124|15Z07B|GHM|7 +G124|15Z07C|GHM|7 +G124|15Z08A|GHM|7 +G124|15Z08E|GHM|7 +G124|15Z08Z|GHM|7 +G124|15Z09A|GHM|7 +G124|15Z09Z|GHM|7 +G125|15M03E|GHM|7 +G125|15M04E|GHM|7 +G125|15Z09E|GHM|7 +G126|10C031|GHM|7 +G126|10C032|GHM|7 +G126|10C033|GHM|7 +G126|10C034|GHM|7 +G126|10C03Z|GHM|7 +G126|11C021|GHM|7 +G126|11C022|GHM|7 +G126|11C023|GHM|7 +G126|11C024|GHM|7 +G126|11C02V|GHM|7 +G126|11C02W|GHM|7 +G126|11C031|GHM|7 +G126|11C032|GHM|7 +G126|11C033|GHM|7 +G126|11C034|GHM|7 +G126|11C03V|GHM|7 +G126|11C03W|GHM|7 +G126|11C041|GHM|7 +G126|11C042|GHM|7 +G126|11C043|GHM|7 +G126|11C044|GHM|7 +G126|11C04J|GHM|7 +G126|11C04Z|GHM|7 +G126|11C081|GHM|7 +G126|11C082|GHM|7 +G126|11C083|GHM|7 +G126|11C084|GHM|7 +G126|11C08T|GHM|7 +G126|11C08V|GHM|7 +G126|11C08W|GHM|7 +G126|11C101|GHM|7 +G126|11C102|GHM|7 +G126|11C103|GHM|7 +G126|11C104|GHM|7 +G126|11C10J|GHM|7 +G127|11C051|GHM|7 +G127|11C052|GHM|7 +G127|11C053|GHM|7 +G127|11C054|GHM|7 +G127|11C05J|GHM|7 +G127|11C05V|GHM|7 +G127|11C05W|GHM|7 +G127|11C061|GHM|7 +G127|11C062|GHM|7 +G127|11C063|GHM|7 +G127|11C064|GHM|7 +G127|11C06Z|GHM|7 +G127|11C071|GHM|7 +G127|11C072|GHM|7 +G127|11C073|GHM|7 +G127|11C074|GHM|7 +G127|11C07J|GHM|7 +G127|11C07Z|GHM|7 +G127|11C111|GHM|7 +G127|11C112|GHM|7 +G127|11C113|GHM|7 +G127|11C114|GHM|7 +G127|11C11J|GHM|7 +G127|11C121|GHM|7 +G127|11C122|GHM|7 +G127|11C123|GHM|7 +G127|11C124|GHM|7 +G127|11C12J|GHM|7 +G127|11C131|GHM|7 +G127|11C132|GHM|7 +G127|11C133|GHM|7 +G127|11C134|GHM|7 +G127|11C13J|GHM|7 +G128|12C031|GHM|7 +G128|12C032|GHM|7 +G128|12C033|GHM|7 +G128|12C034|GHM|7 +G128|12C03J|GHM|7 +G128|12C03Z|GHM|7 +G128|12C041|GHM|7 +G128|12C042|GHM|7 +G128|12C043|GHM|7 +G128|12C044|GHM|7 +G128|12C04J|GHM|7 +G128|12C04V|GHM|7 +G128|12C04W|GHM|7 +G128|12C061|GHM|7 +G128|12C062|GHM|7 +G128|12C063|GHM|7 +G128|12C064|GHM|7 +G128|12C06J|GHM|7 +G128|12C06Z|GHM|7 +G128|12C071|GHM|7 +G128|12C072|GHM|7 +G128|12C073|GHM|7 +G128|12C074|GHM|7 +G128|12C07J|GHM|7 +G128|12C07Z|GHM|7 +G128|12C101|GHM|7 +G128|12C102|GHM|7 +G128|12C103|GHM|7 +G128|12C104|GHM|7 +G128|12C10Z|GHM|7 +G128|12C131|GHM|7 +G128|12C132|GHM|7 +G128|12C133|GHM|7 +G128|12C134|GHM|7 +G128|12C13J|GHM|7 +G129|12C081|GHM|7 +G129|12C082|GHM|7 +G129|12C083|GHM|7 +G129|12C084|GHM|7 +G129|12C08J|GHM|7 +G129|12C08Z|GHM|7 +G130|12C02Z|GHM|7 +G130|12C111|GHM|7 +G130|12C112|GHM|7 +G130|12C113|GHM|7 +G130|12C114|GHM|7 +G130|12C11Z|GHM|7 +G130|12C121|GHM|7 +G130|12C122|GHM|7 +G130|12C123|GHM|7 +G130|12C124|GHM|7 +G130|12C12Z|GHM|7 +G131|12C051|GHM|7 +G131|12C052|GHM|7 +G131|12C053|GHM|7 +G131|12C054|GHM|7 +G131|12C05Z|GHM|7 +G131|12C091|GHM|7 +G131|12C092|GHM|7 +G131|12C093|GHM|7 +G131|12C094|GHM|7 +G131|12C09Z|GHM|7 +G132|11M071|GHM|7 +G132|11M072|GHM|7 +G132|11M073|GHM|7 +G132|11M074|GHM|7 +G132|11M07T|GHM|7 +G132|11M07V|GHM|7 +G132|11M07W|GHM|7 +G133|11M021|GHM|7 +G133|11M022|GHM|7 +G133|11M023|GHM|7 +G133|11M024|GHM|7 +G133|11M02T|GHM|7 +G133|11M02V|GHM|7 +G133|11M02W|GHM|7 +G133|11M031|GHM|7 +G133|11M032|GHM|7 +G133|11M033|GHM|7 +G133|11M034|GHM|7 +G133|11M03T|GHM|7 +G133|11M03V|GHM|7 +G133|11M03W|GHM|7 +G133|11M041|GHM|7 +G133|11M042|GHM|7 +G133|11M043|GHM|7 +G133|11M044|GHM|7 +G133|11M04T|GHM|7 +G133|11M04V|GHM|7 +G133|11M04W|GHM|7 +G134|11M061|GHM|7 +G134|11M062|GHM|7 +G134|11M063|GHM|7 +G134|11M064|GHM|7 +G134|11M06T|GHM|7 +G134|11M06V|GHM|7 +G134|11M06W|GHM|7 +G134|11M081|GHM|7 +G134|11M082|GHM|7 +G134|11M083|GHM|7 +G134|11M084|GHM|7 +G134|11M08T|GHM|7 +G134|11M08Z|GHM|7 +G134|11M101|GHM|7 +G134|11M102|GHM|7 +G134|11M103|GHM|7 +G134|11M104|GHM|7 +G134|11M10T|GHM|7 +G134|11M10V|GHM|7 +G134|11M10W|GHM|7 +G134|11M111|GHM|7 +G134|11M112|GHM|7 +G134|11M113|GHM|7 +G134|11M114|GHM|7 +G134|11M11Z|GHM|7 +G134|11M121|GHM|7 +G134|11M122|GHM|7 +G134|11M123|GHM|7 +G134|11M124|GHM|7 +G134|11M12T|GHM|7 +G134|11M12V|GHM|7 +G134|11M12W|GHM|7 +G134|11M151|GHM|7 +G134|11M152|GHM|7 +G134|11M153|GHM|7 +G134|11M154|GHM|7 +G134|11M15T|GHM|7 +G134|11M161|GHM|7 +G134|11M162|GHM|7 +G134|11M163|GHM|7 +G134|11M164|GHM|7 +G134|11M16T|GHM|7 +G134|11M19T|GHM|7 +G134|11M19Z|GHM|7 +G134|11M201|GHM|7 +G134|11M202|GHM|7 +G134|11M203|GHM|7 +G134|11M204|GHM|7 +G135|11M171|GHM|7 +G135|11M172|GHM|7 +G135|11M173|GHM|7 +G135|11M174|GHM|7 +G135|11M18Z|GHM|7 +G136|12M061|GHM|7 +G136|12M062|GHM|7 +G136|12M063|GHM|7 +G136|12M064|GHM|7 +G136|12M06T|GHM|7 +G136|12M071|GHM|7 +G136|12M072|GHM|7 +G136|12M073|GHM|7 +G136|12M074|GHM|7 +G136|12M07T|GHM|7 +G137|12M031|GHM|7 +G137|12M032|GHM|7 +G137|12M033|GHM|7 +G137|12M034|GHM|7 +G137|12M03T|GHM|7 +G137|12M03V|GHM|7 +G137|12M03W|GHM|7 +G138|12M041|GHM|7 +G138|12M042|GHM|7 +G138|12M043|GHM|7 +G138|12M044|GHM|7 +G138|12M04T|GHM|7 +G138|12M04V|GHM|7 +G138|12M04W|GHM|7 +G138|12M051|GHM|7 +G138|12M052|GHM|7 +G138|12M053|GHM|7 +G138|12M054|GHM|7 +G138|12M05T|GHM|7 +G138|12M05Z|GHM|7 +G138|12M09Z|GHM|7 +G139|12M08Z|GHM|7 +G140|11K03Z|GHM|7 +G140|11K04Z|GHM|7 +G140|11K05Z|GHM|7 +G140|11K06Z|GHM|7 +G140|12K02Z|GHM|7 +G140|12K03Z|GHM|7 +G140|13K02Z|GHM|7 +G140|13K03Z|GHM|7 +G140|13K04Z|GHM|7 +G140|13K05Z|GHM|7 +G141|16C031|GHM|7 +G141|16C032|GHM|7 +G141|16C033|GHM|7 +G141|16C034|GHM|7 +G141|16C03J|GHM|7 +G141|16C03V|GHM|7 +G141|16C03W|GHM|7 +G141|17C021|GHM|7 +G141|17C022|GHM|7 +G141|17C023|GHM|7 +G141|17C024|GHM|7 +G141|17C02V|GHM|7 +G141|17C02W|GHM|7 +G141|17C031|GHM|7 +G141|17C032|GHM|7 +G141|17C033|GHM|7 +G141|17C034|GHM|7 +G141|17C03J|GHM|7 +G141|17C03V|GHM|7 +G141|17C03W|GHM|7 +G141|17C041|GHM|7 +G141|17C042|GHM|7 +G141|17C043|GHM|7 +G141|17C044|GHM|7 +G141|17C04V|GHM|7 +G141|17C04W|GHM|7 +G141|17C051|GHM|7 +G141|17C052|GHM|7 +G141|17C053|GHM|7 +G141|17C054|GHM|7 +G141|17C05J|GHM|7 +G141|17C05V|GHM|7 +G141|17C05W|GHM|7 +G141|17C061|GHM|7 +G141|17C062|GHM|7 +G141|17C063|GHM|7 +G141|17C064|GHM|7 +G141|17C071|GHM|7 +G141|17C072|GHM|7 +G141|17C073|GHM|7 +G141|17C074|GHM|7 +G141|17C081|GHM|7 +G141|17C082|GHM|7 +G141|17C083|GHM|7 +G141|17C084|GHM|7 +G141|17C08J|GHM|7 +G141|17M02Z|GHM|7 +G141|17M03V|GHM|7 +G142|27Z021|GHM|7 +G142|27Z022|GHM|7 +G142|27Z023|GHM|7 +G142|27Z024|GHM|7 +G142|27Z02Z|GHM|7 +G142|27Z03Z|GHM|7 +G142|27Z04J|GHM|7 +G143|16M071|GHM|7 +G143|16M072|GHM|7 +G143|16M073|GHM|7 +G143|16M074|GHM|7 +G144|17M081|GHM|7 +G144|17M082|GHM|7 +G144|17M083|GHM|7 +G144|17M084|GHM|7 +G144|17M08T|GHM|7 +G144|17M08Z|GHM|7 +G144|17M091|GHM|7 +G144|17M092|GHM|7 +G144|17M093|GHM|7 +G144|17M094|GHM|7 +G144|17M09T|GHM|7 +G144|17M09V|GHM|7 +G144|17M09W|GHM|7 +G144|17M111|GHM|7 +G144|17M112|GHM|7 +G144|17M113|GHM|7 +G144|17M114|GHM|7 +G144|17M11T|GHM|7 +G144|17M121|GHM|7 +G144|17M122|GHM|7 +G144|17M123|GHM|7 +G144|17M124|GHM|7 +G144|17M12T|GHM|7 +G144|17M151|GHM|7 +G144|17M152|GHM|7 +G144|17M153|GHM|7 +G144|17M154|GHM|7 +G144|17M15T|GHM|7 +G145|16M061|GHM|7 +G145|16M062|GHM|7 +G145|16M063|GHM|7 +G145|16M064|GHM|7 +G145|16M06T|GHM|7 +G145|16M081|GHM|7 +G145|16M082|GHM|7 +G145|16M083|GHM|7 +G145|16M084|GHM|7 +G145|16M091|GHM|7 +G145|16M092|GHM|7 +G145|16M093|GHM|7 +G145|16M094|GHM|7 +G145|16M09T|GHM|7 +G145|16M101|GHM|7 +G145|16M102|GHM|7 +G145|16M103|GHM|7 +G145|16M104|GHM|7 +G145|16M10T|GHM|7 +G145|16M111|GHM|7 +G145|16M112|GHM|7 +G145|16M113|GHM|7 +G145|16M114|GHM|7 +G145|16M11T|GHM|7 +G145|16M121|GHM|7 +G145|16M122|GHM|7 +G145|16M123|GHM|7 +G145|16M124|GHM|7 +G145|16M12T|GHM|7 +G145|16M131|GHM|7 +G145|16M132|GHM|7 +G145|16M133|GHM|7 +G145|16M134|GHM|7 +G145|16M13T|GHM|7 +G145|16M15T|GHM|7 +G145|16M15Z|GHM|7 +G145|16M161|GHM|7 +G145|16M162|GHM|7 +G145|16M163|GHM|7 +G145|16M164|GHM|7 +G145|16M16T|GHM|7 +G145|16M171|GHM|7 +G145|16M172|GHM|7 +G145|16M173|GHM|7 +G145|16M174|GHM|7 +G145|16M17T|GHM|7 +G145|16M181|GHM|7 +G145|16M182|GHM|7 +G145|16M183|GHM|7 +G145|16M184|GHM|7 +G145|17M071|GHM|7 +G145|17M072|GHM|7 +G145|17M073|GHM|7 +G145|17M074|GHM|7 +G145|17M07T|GHM|7 +G145|17M07V|GHM|7 +G145|17M07W|GHM|7 +G145|17M131|GHM|7 +G145|17M132|GHM|7 +G145|17M133|GHM|7 +G145|17M134|GHM|7 +G145|17M13T|GHM|7 +G145|17M161|GHM|7 +G145|17M162|GHM|7 +G145|17M163|GHM|7 +G145|17M164|GHM|7 +G145|17M16T|GHM|7 +G145|17M171|GHM|7 +G145|17M172|GHM|7 +G145|17M173|GHM|7 +G145|17M174|GHM|7 +G145|17M17T|GHM|7 +G146|16M14Z|GHM|7 +G147|17K02Z|GHM|7 +G147|17M04Z|GHM|7 +G147|17M14Z|GHM|7 +G148|17M051|GHM|7 +G148|17M052|GHM|7 +G148|17M053|GHM|7 +G148|17M054|GHM|7 +G148|17M05Z|GHM|7 +G148|17M061|GHM|7 +G148|17M062|GHM|7 +G148|17M063|GHM|7 +G148|17M064|GHM|7 +G148|17M06T|GHM|7 +G148|17M06V|GHM|7 +G148|17M06W|GHM|7 +G149|17K03Z|GHM|7 +G149|17K041|GHM|7 +G149|17K042|GHM|7 +G149|17K043|GHM|7 +G149|17K044|GHM|7 +G149|17K04Z|GHM|7 +G149|17K051|GHM|7 +G149|17K052|GHM|7 +G149|17K053|GHM|7 +G149|17K054|GHM|7 +G149|17K05Z|GHM|7 +G149|17K061|GHM|7 +G149|17K062|GHM|7 +G149|17K063|GHM|7 +G149|17K064|GHM|7 +G149|17K06Z|GHM|7 +G149|17K081|GHM|7 +G149|17K082|GHM|7 +G149|17K083|GHM|7 +G149|17K084|GHM|7 +G149|17K091|GHM|7 +G149|17K092|GHM|7 +G149|17K093|GHM|7 +G149|17K094|GHM|7 +G150|23M091|GHM|7 +G150|23M092|GHM|7 +G150|23M093|GHM|7 +G150|23M094|GHM|7 +G151|18M021|GHM|7 +G151|18M022|GHM|7 +G151|18M023|GHM|7 +G151|18M024|GHM|7 +G151|18M02V|GHM|7 +G151|18M02W|GHM|7 +G151|18M031|GHM|7 +G151|18M032|GHM|7 +G151|18M033|GHM|7 +G151|18M034|GHM|7 +G151|18M03T|GHM|7 +G151|18M03Z|GHM|7 +G151|18M041|GHM|7 +G151|18M042|GHM|7 +G151|18M043|GHM|7 +G151|18M044|GHM|7 +G151|18M04T|GHM|7 +G151|18M04V|GHM|7 +G151|18M04W|GHM|7 +G152|18M061|GHM|7 +G152|18M062|GHM|7 +G152|18M063|GHM|7 +G152|18M064|GHM|7 +G152|18M06Z|GHM|7 +G152|18M071|GHM|7 +G152|18M072|GHM|7 +G152|18M073|GHM|7 +G152|18M074|GHM|7 +G152|18M07T|GHM|7 +G152|18M07V|GHM|7 +G152|18M07W|GHM|7 +G153|18M091|GHM|7 +G153|18M092|GHM|7 +G153|18M093|GHM|7 +G153|18M094|GHM|7 +G153|18M09T|GHM|7 +G153|18M101|GHM|7 +G153|18M102|GHM|7 +G153|18M103|GHM|7 +G153|18M104|GHM|7 +G153|18M10T|GHM|7 +G153|18M111|GHM|7 +G153|18M112|GHM|7 +G153|18M113|GHM|7 +G153|18M114|GHM|7 +G153|18M11T|GHM|7 +G153|18M14T|GHM|7 +G153|18M14Z|GHM|7 +G153|18M151|GHM|7 +G153|18M152|GHM|7 +G153|18M153|GHM|7 +G153|18M154|GHM|7 +G154|18M13E|GHM|7 +G155|18M12Z|GHM|7 +G156|23M07J|GHM|7 +G156|25M02A|GHM|7 +G156|25M02B|GHM|7 +G156|25M02C|GHM|7 +G156|25M02T|GHM|7 +G156|25Z02E|GHM|7 +G156|25Z031|GHM|7 +G156|25Z032|GHM|7 +G156|25Z033|GHM|7 +G156|25Z034|GHM|7 +G156|25Z03Z|GHM|7 +G157|10C051|GHM|7 +G157|10C052|GHM|7 +G157|10C053|GHM|7 +G157|10C054|GHM|7 +G157|10C05Z|GHM|7 +G157|10C071|GHM|7 +G157|10C072|GHM|7 +G157|10C073|GHM|7 +G157|10C074|GHM|7 +G157|10C07Z|GHM|7 +G157|10C101|GHM|7 +G157|10C102|GHM|7 +G157|10C103|GHM|7 +G157|10C104|GHM|7 +G157|10C10Z|GHM|7 +G158|10C111|GHM|7 +G158|10C112|GHM|7 +G158|10C113|GHM|7 +G158|10C114|GHM|7 +G158|10C11V|GHM|7 +G158|10C11W|GHM|7 +G158|10C121|GHM|7 +G158|10C122|GHM|7 +G158|10C123|GHM|7 +G158|10C124|GHM|7 +G158|10C12V|GHM|7 +G158|10C12W|GHM|7 +G159|10M021|GHM|7 +G159|10M022|GHM|7 +G159|10M023|GHM|7 +G159|10M024|GHM|7 +G159|10M02T|GHM|7 +G159|10M02V|GHM|7 +G159|10M02W|GHM|7 +G159|10M031|GHM|7 +G159|10M032|GHM|7 +G159|10M033|GHM|7 +G159|10M034|GHM|7 +G159|10M03T|GHM|7 +G159|10M03Z|GHM|7 +G159|10M081|GHM|7 +G159|10M082|GHM|7 +G159|10M083|GHM|7 +G159|10M084|GHM|7 +G159|10M08T|GHM|7 +G159|23M08J|GHM|7 +G160|10M071|GHM|7 +G160|10M072|GHM|7 +G160|10M073|GHM|7 +G160|10M074|GHM|7 +G160|10M07T|GHM|7 +G160|10M07V|GHM|7 +G160|10M07W|GHM|7 +G160|10M121|GHM|7 +G160|10M122|GHM|7 +G160|10M123|GHM|7 +G160|10M124|GHM|7 +G160|10M12T|GHM|7 +G160|10M14T|GHM|7 +G160|10M14Z|GHM|7 +G161|10M06Z|GHM|7 +G161|10M091|GHM|7 +G161|10M092|GHM|7 +G161|10M093|GHM|7 +G161|10M094|GHM|7 +G161|10M09T|GHM|7 +G161|10M101|GHM|7 +G161|10M102|GHM|7 +G161|10M103|GHM|7 +G161|10M104|GHM|7 +G161|10M10T|GHM|7 +G161|10M111|GHM|7 +G161|10M112|GHM|7 +G161|10M113|GHM|7 +G161|10M114|GHM|7 +G161|10M11T|GHM|7 +G161|10M151|GHM|7 +G161|10M152|GHM|7 +G161|10M153|GHM|7 +G161|10M154|GHM|7 +G161|10M15T|GHM|7 +G161|10M161|GHM|7 +G161|10M162|GHM|7 +G161|10M163|GHM|7 +G161|10M164|GHM|7 +G161|10M16T|GHM|7 +G161|10M171|GHM|7 +G161|10M172|GHM|7 +G161|10M173|GHM|7 +G161|10M174|GHM|7 +G161|10M17T|GHM|7 +G161|10M181|GHM|7 +G161|10M182|GHM|7 +G161|10M183|GHM|7 +G161|10M184|GHM|7 +G161|10M18T|GHM|7 +G162|10M13T|GHM|7 +G162|10M13Z|GHM|7 +G163|08C201|GHM|7 +G163|08C202|GHM|7 +G163|08C203|GHM|7 +G163|08C204|GHM|7 +G163|08C20J|GHM|7 +G163|08C20Z|GHM|7 +G163|09C021|GHM|7 +G163|09C022|GHM|7 +G163|09C023|GHM|7 +G163|09C024|GHM|7 +G163|09C02J|GHM|7 +G163|09C02V|GHM|7 +G163|09C02W|GHM|7 +G163|09C031|GHM|7 +G163|09C032|GHM|7 +G163|09C033|GHM|7 +G163|09C034|GHM|7 +G163|09C03J|GHM|7 +G163|09C03V|GHM|7 +G163|09C03W|GHM|7 +G163|09C091|GHM|7 +G163|09C092|GHM|7 +G163|09C093|GHM|7 +G163|09C094|GHM|7 +G163|09C09J|GHM|7 +G163|09C09Z|GHM|7 +G163|09C121|GHM|7 +G163|09C122|GHM|7 +G163|09C123|GHM|7 +G163|09C124|GHM|7 +G163|09C12J|GHM|7 +G163|21C021|GHM|7 +G163|21C022|GHM|7 +G163|21C023|GHM|7 +G163|21C024|GHM|7 +G163|21C02J|GHM|7 +G163|21C02Z|GHM|7 +G163|21C031|GHM|7 +G163|21C032|GHM|7 +G163|21C033|GHM|7 +G163|21C034|GHM|7 +G163|21C03J|GHM|7 +G163|21C03Z|GHM|7 +G163|21C061|GHM|7 +G163|21C062|GHM|7 +G163|21C063|GHM|7 +G163|21C064|GHM|7 +G163|21C06J|GHM|7 +G164|09M021|GHM|7 +G164|09M022|GHM|7 +G164|09M023|GHM|7 +G164|09M024|GHM|7 +G164|09M02T|GHM|7 +G164|09M02Z|GHM|7 +G164|09M031|GHM|7 +G164|09M032|GHM|7 +G164|09M033|GHM|7 +G164|09M034|GHM|7 +G164|09M03T|GHM|7 +G164|09M03V|GHM|7 +G164|09M03W|GHM|7 +G165|09M061|GHM|7 +G165|09M062|GHM|7 +G165|09M063|GHM|7 +G165|09M064|GHM|7 +G165|09M06T|GHM|7 +G165|09M06Z|GHM|7 +G165|09M071|GHM|7 +G165|09M072|GHM|7 +G165|09M073|GHM|7 +G165|09M074|GHM|7 +G165|09M07T|GHM|7 +G165|09M07V|GHM|7 +G165|09M07W|GHM|7 +G165|09M081|GHM|7 +G165|09M082|GHM|7 +G165|09M083|GHM|7 +G165|09M084|GHM|7 +G165|09M08T|GHM|7 +G165|09M08V|GHM|7 +G165|09M08W|GHM|7 +G165|09M14T|GHM|7 +G165|09M14Z|GHM|7 +G166|09M041|GHM|7 +G166|09M042|GHM|7 +G166|09M043|GHM|7 +G166|09M044|GHM|7 +G166|09M04T|GHM|7 +G166|09M04Z|GHM|7 +G166|09M051|GHM|7 +G166|09M052|GHM|7 +G166|09M053|GHM|7 +G166|09M054|GHM|7 +G166|09M05T|GHM|7 +G166|09M05V|GHM|7 +G166|09M05W|GHM|7 +G167|09M111|GHM|7 +G167|09M112|GHM|7 +G167|09M113|GHM|7 +G167|09M114|GHM|7 +G167|09M11T|GHM|7 +G168|09M12Z|GHM|7 +G169|22M021|GHM|7 +G169|22M022|GHM|7 +G169|22M023|GHM|7 +G169|22M024|GHM|7 +G169|22M02T|GHM|7 +G169|22M02Z|GHM|7 +G169|22Z021|GHM|7 +G169|22Z022|GHM|7 +G169|22Z023|GHM|7 +G169|22Z024|GHM|7 +G169|22Z02Z|GHM|7 +G169|22Z03Z|GHM|7 +G170|19M061|GHM|7 +G170|19M062|GHM|7 +G170|19M063|GHM|7 +G170|19M064|GHM|7 +G170|19M06T|GHM|7 +G170|19M06V|GHM|7 +G170|19M06W|GHM|7 +G170|19M071|GHM|7 +G170|19M072|GHM|7 +G170|19M073|GHM|7 +G170|19M074|GHM|7 +G170|19M07T|GHM|7 +G170|19M07V|GHM|7 +G170|19M07W|GHM|7 +G171|19M021|GHM|7 +G171|19M022|GHM|7 +G171|19M023|GHM|7 +G171|19M024|GHM|7 +G171|19M02T|GHM|7 +G171|19M02V|GHM|7 +G171|19M02W|GHM|7 +G171|19M03Z|GHM|7 +G171|19M04Z|GHM|7 +G171|19M05Z|GHM|7 +G171|19M08Z|GHM|7 +G171|19M09Z|GHM|7 +G171|19M101|GHM|7 +G171|19M102|GHM|7 +G171|19M103|GHM|7 +G171|19M104|GHM|7 +G171|19M10T|GHM|7 +G171|19M10Z|GHM|7 +G171|19M111|GHM|7 +G171|19M112|GHM|7 +G171|19M113|GHM|7 +G171|19M114|GHM|7 +G171|19M11T|GHM|7 +G171|19M11V|GHM|7 +G171|19M11W|GHM|7 +G171|19M121|GHM|7 +G171|19M122|GHM|7 +G171|19M123|GHM|7 +G171|19M124|GHM|7 +G171|19M12T|GHM|7 +G171|19M131|GHM|7 +G171|19M132|GHM|7 +G171|19M133|GHM|7 +G171|19M134|GHM|7 +G171|19M13T|GHM|7 +G171|19M141|GHM|7 +G171|19M142|GHM|7 +G171|19M143|GHM|7 +G171|19M144|GHM|7 +G171|19M14T|GHM|7 +G171|19M151|GHM|7 +G171|19M152|GHM|7 +G171|19M153|GHM|7 +G171|19M154|GHM|7 +G171|19M15T|GHM|7 +G171|19M161|GHM|7 +G171|19M162|GHM|7 +G171|19M163|GHM|7 +G171|19M164|GHM|7 +G171|19M16T|GHM|7 +G171|19M171|GHM|7 +G171|19M172|GHM|7 +G171|19M173|GHM|7 +G171|19M174|GHM|7 +G171|19M181|GHM|7 +G171|19M182|GHM|7 +G171|19M183|GHM|7 +G171|19M184|GHM|7 +G171|19M18T|GHM|7 +G171|19M191|GHM|7 +G171|19M192|GHM|7 +G171|19M193|GHM|7 +G171|19M194|GHM|7 +G171|19M19T|GHM|7 +G171|19M201|GHM|7 +G171|19M202|GHM|7 +G171|19M203|GHM|7 +G171|19M204|GHM|7 +G171|19M20T|GHM|7 +G171|19M22T|GHM|7 +G171|19M22Z|GHM|7 +G172|19M21Z|GHM|7 +G173|20Z021|GHM|7 +G173|20Z022|GHM|7 +G173|20Z023|GHM|7 +G173|20Z024|GHM|7 +G173|20Z02T|GHM|7 +G173|20Z02Z|GHM|7 +G173|20Z031|GHM|7 +G173|20Z032|GHM|7 +G173|20Z033|GHM|7 +G173|20Z034|GHM|7 +G173|20Z03Z|GHM|7 +G173|20Z041|GHM|7 +G173|20Z042|GHM|7 +G173|20Z043|GHM|7 +G173|20Z044|GHM|7 +G173|20Z04T|GHM|7 +G173|20Z04Z|GHM|7 +G173|20Z051|GHM|7 +G173|20Z052|GHM|7 +G173|20Z053|GHM|7 +G173|20Z054|GHM|7 +G173|20Z05Z|GHM|7 +G173|20Z061|GHM|7 +G173|20Z062|GHM|7 +G173|20Z063|GHM|7 +G173|20Z064|GHM|7 +G173|20Z06T|GHM|7 +G173|20Z06V|GHM|7 +G173|20Z06W|GHM|7 +G174|21M041|GHM|7 +G174|21M042|GHM|7 +G174|21M043|GHM|7 +G174|21M044|GHM|7 +G174|21M04T|GHM|7 +G174|21M04Z|GHM|7 +G174|21M051|GHM|7 +G174|21M052|GHM|7 +G174|21M053|GHM|7 +G174|21M054|GHM|7 +G174|21M05T|GHM|7 +G174|21M05Z|GHM|7 +G175|21M021|GHM|7 +G175|21M022|GHM|7 +G175|21M023|GHM|7 +G175|21M024|GHM|7 +G175|21M02T|GHM|7 +G175|21M02Z|GHM|7 +G175|21M101|GHM|7 +G175|21M102|GHM|7 +G175|21M103|GHM|7 +G175|21M104|GHM|7 +G175|21M10T|GHM|7 +G175|21M111|GHM|7 +G175|21M112|GHM|7 +G175|21M113|GHM|7 +G175|21M114|GHM|7 +G175|21M11T|GHM|7 +G175|21M121|GHM|7 +G175|21M122|GHM|7 +G175|21M123|GHM|7 +G175|21M124|GHM|7 +G175|21M141|GHM|7 +G175|21M142|GHM|7 +G175|21M143|GHM|7 +G175|21M144|GHM|7 +G175|21M14T|GHM|7 +G175|21M161|GHM|7 +G175|21M162|GHM|7 +G175|21M163|GHM|7 +G175|21M164|GHM|7 +G175|21M16T|GHM|7 +G176|23Z02T|GHM|7 +G176|23Z02Z|GHM|7 +G177|01M211|GHM|7 +G177|01M212|GHM|7 +G177|01M213|GHM|7 +G177|01M214|GHM|7 +G177|01M21T|GHM|7 +G177|01M21Z|GHM|7 +G178|27C021|GHM|7 +G178|27C022|GHM|7 +G178|27C023|GHM|7 +G178|27C024|GHM|7 +G178|27C02Z|GHM|7 +G178|27C031|GHM|7 +G178|27C032|GHM|7 +G178|27C033|GHM|7 +G178|27C034|GHM|7 +G178|27C03Z|GHM|7 +G178|27C041|GHM|7 +G178|27C042|GHM|7 +G178|27C043|GHM|7 +G178|27C044|GHM|7 +G178|27C04Z|GHM|7 +G178|27C051|GHM|7 +G178|27C052|GHM|7 +G178|27C053|GHM|7 +G178|27C054|GHM|7 +G178|27C05Z|GHM|7 +G178|27C061|GHM|7 +G178|27C062|GHM|7 +G178|27C063|GHM|7 +G178|27C064|GHM|7 +G178|27C06Z|GHM|7 +G178|27C071|GHM|7 +G178|27C072|GHM|7 +G178|27C073|GHM|7 +G178|27C074|GHM|7 +G178|27C07Z|GHM|7 +G179|01C081|GHM|7 +G179|01C082|GHM|7 +G179|01C083|GHM|7 +G179|01C084|GHM|7 +G179|01C08J|GHM|7 +G179|01C08V|GHM|7 +G179|01C08W|GHM|7 +G179|05C181|GHM|7 +G179|05C182|GHM|7 +G179|05C183|GHM|7 +G179|05C184|GHM|7 +G179|05C18J|GHM|7 +G179|05C18Z|GHM|7 +G179|08C211|GHM|7 +G179|08C212|GHM|7 +G179|08C213|GHM|7 +G179|08C214|GHM|7 +G179|08C21J|GHM|7 +G179|08C21V|GHM|7 +G179|08C21W|GHM|7 +G179|09C101|GHM|7 +G179|09C102|GHM|7 +G179|09C103|GHM|7 +G179|09C104|GHM|7 +G179|09C10J|GHM|7 +G179|09C10V|GHM|7 +G179|09C10W|GHM|7 +G179|09C141|GHM|7 +G179|09C142|GHM|7 +G179|09C143|GHM|7 +G179|09C144|GHM|7 +G179|09C14J|GHM|7 +G179|09C151|GHM|7 +G179|09C152|GHM|7 +G179|09C153|GHM|7 +G179|09C154|GHM|7 +G179|09C15J|GHM|7 +G179|09C161|GHM|7 +G179|09C162|GHM|7 +G179|09C163|GHM|7 +G179|09C164|GHM|7 +G179|09C171|GHM|7 +G179|09C172|GHM|7 +G179|09C173|GHM|7 +G179|09C174|GHM|7 +G179|09C181|GHM|7 +G179|09C182|GHM|7 +G179|09C183|GHM|7 +G179|09C184|GHM|7 +G179|09C191|GHM|7 +G179|09C192|GHM|7 +G179|09C193|GHM|7 +G179|09C194|GHM|7 +G179|09C201|GHM|7 +G179|09C202|GHM|7 +G179|09C203|GHM|7 +G179|09C204|GHM|7 +G179|09C20J|GHM|7 +G179|09C211|GHM|7 +G179|09C212|GHM|7 +G179|09C213|GHM|7 +G179|09C214|GHM|7 +G179|09C221|GHM|7 +G179|09C222|GHM|7 +G179|09C223|GHM|7 +G179|09C224|GHM|7 +G179|09C22J|GHM|7 +G179|09C231|GHM|7 +G179|09C232|GHM|7 +G179|09C233|GHM|7 +G179|09C234|GHM|7 +G179|09C23J|GHM|7 +G179|09C241|GHM|7 +G179|09C242|GHM|7 +G179|09C243|GHM|7 +G179|09C244|GHM|7 +G179|09C24J|GHM|7 +G179|09C251|GHM|7 +G179|09C252|GHM|7 +G179|09C253|GHM|7 +G179|09C254|GHM|7 +G179|09C25J|GHM|7 +G179|09C261|GHM|7 +G179|09C262|GHM|7 +G179|09C263|GHM|7 +G179|09C264|GHM|7 +G179|09C26J|GHM|7 +G179|09C271|GHM|7 +G179|09C272|GHM|7 +G179|09C273|GHM|7 +G179|09C274|GHM|7 +G179|09C281|GHM|7 +G179|09C282|GHM|7 +G179|09C283|GHM|7 +G179|09C284|GHM|7 +G179|09C28J|GHM|7 +G179|09C291|GHM|7 +G179|09C292|GHM|7 +G179|09C293|GHM|7 +G179|09C294|GHM|7 +G179|09C29J|GHM|7 +G179|09C301|GHM|7 +G179|09C302|GHM|7 +G179|09C303|GHM|7 +G179|09C304|GHM|7 +G179|09C30J|GHM|7 +G179|09C311|GHM|7 +G179|09C312|GHM|7 +G179|09C313|GHM|7 +G179|09C314|GHM|7 +G179|09C31J|GHM|7 +G179|09C321|GHM|7 +G179|09C322|GHM|7 +G179|09C323|GHM|7 +G179|09C324|GHM|7 +G179|09C32J|GHM|7 +G179|09C331|GHM|7 +G179|09C332|GHM|7 +G179|09C333|GHM|7 +G179|09C334|GHM|7 +G179|09C341|GHM|7 +G179|09C342|GHM|7 +G179|09C343|GHM|7 +G179|09C344|GHM|7 +G179|09C34J|GHM|7 +G179|10C081|GHM|7 +G179|10C082|GHM|7 +G179|10C083|GHM|7 +G179|10C084|GHM|7 +G179|10C08J|GHM|7 +G179|10C08Z|GHM|7 +G179|18C021|GHM|7 +G179|18C022|GHM|7 +G179|18C023|GHM|7 +G179|18C024|GHM|7 +G179|18C02J|GHM|7 +G179|18C02V|GHM|7 +G179|18C02W|GHM|7 +G179|19C021|GHM|7 +G179|19C022|GHM|7 +G179|19C023|GHM|7 +G179|19C024|GHM|7 +G179|19C02Z|GHM|7 +G179|21C051|GHM|7 +G179|21C052|GHM|7 +G179|21C053|GHM|7 +G179|21C054|GHM|7 +G179|21C05J|GHM|7 +G179|21C05V|GHM|7 +G179|21C05W|GHM|7 +G179|23C021|GHM|7 +G179|23C022|GHM|7 +G179|23C023|GHM|7 +G179|23C024|GHM|7 +G179|23C02J|GHM|7 +G179|23C02Z|GHM|7 +G179|25C021|GHM|7 +G179|25C022|GHM|7 +G179|25C023|GHM|7 +G179|25C024|GHM|7 +G179|25C02Z|GHM|7 +G180|09Z02A|GHM|7 +G180|09Z02B|GHM|7 +G180|09Z02Z|GHM|7 +G180|23Z03Z|GHM|7 +G181|01M37E|GHM|7 +G181|05M22E|GHM|7 +G181|21M131|GHM|7 +G181|21M132|GHM|7 +G181|21M133|GHM|7 +G181|21M134|GHM|7 +G181|21M151|GHM|7 +G181|21M152|GHM|7 +G181|21M153|GHM|7 +G181|21M154|GHM|7 +G181|21M15T|GHM|7 +G181|23M111|GHM|7 +G181|23M112|GHM|7 +G181|23M113|GHM|7 +G181|23M114|GHM|7 +G181|23M11T|GHM|7 +G181|23M15Z|GHM|7 +G182|23M13Z|GHM|7 +G182|23M18Z|GHM|7 +G182|23M21T|GHM|7 +G182|23M21Z|GHM|7 +G183|23K02Z|GHM|7 +G184|23M101|GHM|7 +G184|23M102|GHM|7 +G184|23M103|GHM|7 +G184|23M104|GHM|7 +G184|23M10T|GHM|7 +G184|23M14Z|GHM|7 +G185|23M19Z|GHM|7 +G186|23M02T|GHM|7 +G186|23M02Z|GHM|7 +G186|23M16T|GHM|7 +G186|23M16Z|GHM|7 +G187|28Z01Z|GHM|7 +G187|28Z02Z|GHM|7 +G187|28Z03Z|GHM|7 +G187|28Z04Z|GHM|7 +G187|28Z05Z|GHM|7 +G187|28Z06Z|GHM|7 +G188|28Z14Z|GHM|7 +G189|28Z08Z|GHM|7 +G189|28Z09Z|GHM|7 +G189|28Z10Z|GHM|7 +G189|28Z11Z|GHM|7 +G189|28Z12Z|GHM|7 +G189|28Z13Z|GHM|7 +G189|28Z18Z|GHM|7 +G189|28Z19Z|GHM|7 +G189|28Z20Z|GHM|7 +G189|28Z21Z|GHM|7 +G189|28Z22Z|GHM|7 +G189|28Z23Z|GHM|7 +G189|28Z24Z|GHM|7 +G189|28Z25Z|GHM|7 +G190|28Z07Z|GHM|7 +G191|28Z17Z|GHM|7 +G192|28Z15Z|GHM|7 +G193|28Z16Z|GHM|7 +G194|23M04Z|GHM|7 +G194|23M05Z|GHM|7 +G194|23M061|GHM|7 +G194|23M062|GHM|7 +G194|23M063|GHM|7 +G194|23M064|GHM|7 +G194|23M06T|GHM|7 +G194|23M06Z|GHM|7 +G194|23M20T|GHM|7 +G194|23M20Z|GHM|7 +G195|15Z10E|GHM|7 +G196|01K04J|GHM|7 +G197|01K06J|GHM|7 +G198|05K17J|GHM|7 +G199|05K14Z|GHM|7 +G199|11K07Z|GHM|7 +G200|05K18J|GHM|7 +G201|13K06J|GHM|7 +G202|11K021|GHM|7 +G202|11K022|GHM|7 +G202|11K023|GHM|7 +G202|11K024|GHM|7 +G202|11K02J|GHM|7 +G202|11K02V|GHM|7 +G202|11K02W|GHM|7 +G203|09K02J|GHM|7 +G203|17K07J|GHM|7 +G203|23K03J|GHM|7 +G204|22C021|GHM|7 +G204|22C022|GHM|7 +G204|22C023|GHM|7 +G204|22C024|GHM|7 +G204|22C02J|GHM|7 +G204|22C02Z|GHM|7 +G204|22C031|GHM|7 +G204|22C032|GHM|7 +G204|22C033|GHM|7 +G204|22C034|GHM|7 +G204|22C03Z|GHM|7 +G205|01K05J|GHM|7 +G206|21K02J|GHM|7 +G207|03K021|GHM|7 +G207|03K022|GHM|7 +G207|03K023|GHM|7 +G207|03K024|GHM|7 +G207|03K02J|GHM|7 +G207|03K02Z|GHM|7 +G207|03K04J|GHM|7 +G208|11K08J|GHM|7 +G209|12K06J|GHM|7 +G210|08M261|GHM|7 +G210|08M262|GHM|7 +G210|08M263|GHM|7 +G210|08M264|GHM|7 +G210|08M381|GHM|7 +G210|08M382|GHM|7 +G210|08M383|GHM|7 +G210|08M384|GHM|7 +G210|08M38T|GHM|7 +G211|08M16Z|GHM|7 +G211|08M17Z|GHM|7 +G211|08M311|GHM|7 +G211|08M312|GHM|7 +G211|08M313|GHM|7 +G211|08M314|GHM|7 +G211|08M31T|GHM|7 +G212|10M191|GHM|7 +G212|10M192|GHM|7 +G212|10M193|GHM|7 +G212|10M194|GHM|7 +G212|10M201|GHM|7 +G212|10M202|GHM|7 +G212|10M203|GHM|7 +G212|10M204|GHM|7 +G213|06K02Z|GHM|7 +G214|06K06J|GHM|7 +G215|22K02J|GHM|7 +G216|26M021|GHM|7 +G216|26M022|GHM|7 +G216|26M023|GHM|7 +G216|26M024|GHM|7 +G216|26M02Z|GHM|7 +G217|07K061|GHM|7 +G217|07K062|GHM|7 +G217|07K063|GHM|7 +G217|07K064|GHM|7 +G999|90C01Z|GHM|7 +G999|90H01Z|GHM|7 +G999|90H02Z|GHM|7 +G999|90H03Z|GHM|7 +G999|90Z00Z|GHM|7 +G999|90Z01Z|GHM|7 +G999|90Z02Z|GHM|7 +G999|90Z03Z|GHM|7 +G999|999999|GHM|7 +G999|ZZZZZZ|GHM|7 +C01|27C021|GHM|8 +C01|27C022|GHM|8 +C01|27C023|GHM|8 +C01|27C024|GHM|8 +C01|27C02Z|GHM|8 +C01|27C031|GHM|8 +C01|27C032|GHM|8 +C01|27C033|GHM|8 +C01|27C034|GHM|8 +C01|27C03Z|GHM|8 +C01|27C041|GHM|8 +C01|27C042|GHM|8 +C01|27C043|GHM|8 +C01|27C044|GHM|8 +C01|27C04Z|GHM|8 +C01|27C051|GHM|8 +C01|27C052|GHM|8 +C01|27C053|GHM|8 +C01|27C054|GHM|8 +C01|27C05Z|GHM|8 +C01|27C061|GHM|8 +C01|27C062|GHM|8 +C01|27C063|GHM|8 +C01|27C064|GHM|8 +C01|27C06Z|GHM|8 +C01|27C071|GHM|8 +C01|27C072|GHM|8 +C01|27C073|GHM|8 +C01|27C074|GHM|8 +C01|27C07Z|GHM|8 +C02|01C02Z|GHM|8 +C02|01C031|GHM|8 +C02|01C032|GHM|8 +C02|01C033|GHM|8 +C02|01C034|GHM|8 +C02|01C03V|GHM|8 +C02|01C03W|GHM|8 +C02|01C041|GHM|8 +C02|01C042|GHM|8 +C02|01C043|GHM|8 +C02|01C044|GHM|8 +C02|01C04V|GHM|8 +C02|01C04W|GHM|8 +C02|01C051|GHM|8 +C02|01C052|GHM|8 +C02|01C053|GHM|8 +C02|01C054|GHM|8 +C02|01C05V|GHM|8 +C02|01C05W|GHM|8 +C02|01C111|GHM|8 +C02|01C112|GHM|8 +C02|01C113|GHM|8 +C02|01C114|GHM|8 +C02|01C11Z|GHM|8 +C02|01C121|GHM|8 +C02|01C122|GHM|8 +C02|01C123|GHM|8 +C02|01C124|GHM|8 +C02|01C12Z|GHM|8 +C02|08C26Z|GHM|8 +C02|08C271|GHM|8 +C02|08C272|GHM|8 +C02|08C273|GHM|8 +C02|08C274|GHM|8 +C02|08C27V|GHM|8 +C02|08C27W|GHM|8 +C02|08C511|GHM|8 +C02|08C512|GHM|8 +C02|08C513|GHM|8 +C02|08C514|GHM|8 +C02|08C521|GHM|8 +C02|08C522|GHM|8 +C02|08C523|GHM|8 +C02|08C524|GHM|8 +C02|10C021|GHM|8 +C02|10C022|GHM|8 +C02|10C023|GHM|8 +C02|10C024|GHM|8 +C02|10C02Z|GHM|8 +C03|01C091|GHM|8 +C03|01C092|GHM|8 +C03|01C093|GHM|8 +C03|01C094|GHM|8 +C03|01C09Z|GHM|8 +C03|01C101|GHM|8 +C03|01C102|GHM|8 +C03|01C103|GHM|8 +C03|01C104|GHM|8 +C03|01C10J|GHM|8 +C03|01C10Z|GHM|8 +C04|05C021|GHM|8 +C04|05C022|GHM|8 +C04|05C023|GHM|8 +C04|05C024|GHM|8 +C04|05C02Z|GHM|8 +C04|05C031|GHM|8 +C04|05C032|GHM|8 +C04|05C033|GHM|8 +C04|05C034|GHM|8 +C04|05C03V|GHM|8 +C04|05C03W|GHM|8 +C04|05C041|GHM|8 +C04|05C042|GHM|8 +C04|05C043|GHM|8 +C04|05C044|GHM|8 +C04|05C04V|GHM|8 +C04|05C04W|GHM|8 +C04|05C051|GHM|8 +C04|05C052|GHM|8 +C04|05C053|GHM|8 +C04|05C054|GHM|8 +C04|05C05V|GHM|8 +C04|05C05W|GHM|8 +C04|05C061|GHM|8 +C04|05C062|GHM|8 +C04|05C063|GHM|8 +C04|05C064|GHM|8 +C04|05C06V|GHM|8 +C04|05C06W|GHM|8 +C04|05C071|GHM|8 +C04|05C072|GHM|8 +C04|05C073|GHM|8 +C04|05C074|GHM|8 +C04|05C07Z|GHM|8 +C04|05C081|GHM|8 +C04|05C082|GHM|8 +C04|05C083|GHM|8 +C04|05C084|GHM|8 +C04|05C08T|GHM|8 +C04|05C08V|GHM|8 +C04|05C08W|GHM|8 +C04|05C091|GHM|8 +C04|05C092|GHM|8 +C04|05C093|GHM|8 +C04|05C094|GHM|8 +C04|05C09Z|GHM|8 +C05|04C021|GHM|8 +C05|04C022|GHM|8 +C05|04C023|GHM|8 +C05|04C024|GHM|8 +C05|04C02V|GHM|8 +C05|04C02W|GHM|8 +C05|04C031|GHM|8 +C05|04C032|GHM|8 +C05|04C033|GHM|8 +C05|04C034|GHM|8 +C05|04C03V|GHM|8 +C05|04C03W|GHM|8 +C05|04C041|GHM|8 +C05|04C042|GHM|8 +C05|04C043|GHM|8 +C05|04C044|GHM|8 +C06|06C021|GHM|8 +C06|06C022|GHM|8 +C06|06C023|GHM|8 +C06|06C024|GHM|8 +C06|06C02Z|GHM|8 +C06|06C031|GHM|8 +C06|06C032|GHM|8 +C06|06C033|GHM|8 +C06|06C034|GHM|8 +C06|06C03V|GHM|8 +C06|06C03W|GHM|8 +C06|06C041|GHM|8 +C06|06C042|GHM|8 +C06|06C043|GHM|8 +C06|06C044|GHM|8 +C06|06C04V|GHM|8 +C06|06C04W|GHM|8 +C06|06C051|GHM|8 +C06|06C052|GHM|8 +C06|06C053|GHM|8 +C06|06C054|GHM|8 +C06|06C05Z|GHM|8 +C06|06C161|GHM|8 +C06|06C162|GHM|8 +C06|06C163|GHM|8 +C06|06C164|GHM|8 +C06|06C16V|GHM|8 +C06|06C16W|GHM|8 +C06|06C201|GHM|8 +C06|06C202|GHM|8 +C06|06C203|GHM|8 +C06|06C204|GHM|8 +C06|06C221|GHM|8 +C06|06C222|GHM|8 +C06|06C223|GHM|8 +C06|06C224|GHM|8 +C06|10C04Z|GHM|8 +C06|10C091|GHM|8 +C06|10C092|GHM|8 +C06|10C093|GHM|8 +C06|10C094|GHM|8 +C06|10C09Z|GHM|8 +C07|06C071|GHM|8 +C07|06C072|GHM|8 +C07|06C073|GHM|8 +C07|06C074|GHM|8 +C07|06C07V|GHM|8 +C07|06C07W|GHM|8 +C07|06C081|GHM|8 +C07|06C082|GHM|8 +C07|06C083|GHM|8 +C07|06C084|GHM|8 +C07|06C08V|GHM|8 +C07|06C08W|GHM|8 +C07|06C091|GHM|8 +C07|06C092|GHM|8 +C07|06C093|GHM|8 +C07|06C094|GHM|8 +C07|06C09V|GHM|8 +C07|06C09W|GHM|8 +C07|06C101|GHM|8 +C07|06C102|GHM|8 +C07|06C103|GHM|8 +C07|06C104|GHM|8 +C07|06C10J|GHM|8 +C07|06C10Z|GHM|8 +C07|06C111|GHM|8 +C07|06C112|GHM|8 +C07|06C113|GHM|8 +C07|06C114|GHM|8 +C07|06C11J|GHM|8 +C07|06C11V|GHM|8 +C07|06C11W|GHM|8 +C07|06C121|GHM|8 +C07|06C122|GHM|8 +C07|06C123|GHM|8 +C07|06C124|GHM|8 +C07|06C12J|GHM|8 +C07|06C12V|GHM|8 +C07|06C12W|GHM|8 +C07|06C131|GHM|8 +C07|06C132|GHM|8 +C07|06C133|GHM|8 +C07|06C134|GHM|8 +C07|06C13V|GHM|8 +C07|06C13W|GHM|8 +C07|06C141|GHM|8 +C07|06C142|GHM|8 +C07|06C143|GHM|8 +C07|06C144|GHM|8 +C07|06C14J|GHM|8 +C07|06C14V|GHM|8 +C07|06C14W|GHM|8 +C07|06C151|GHM|8 +C07|06C152|GHM|8 +C07|06C153|GHM|8 +C07|06C154|GHM|8 +C07|06C15V|GHM|8 +C07|06C15W|GHM|8 +C07|06C191|GHM|8 +C07|06C192|GHM|8 +C07|06C193|GHM|8 +C07|06C194|GHM|8 +C07|06C19J|GHM|8 +C07|06C211|GHM|8 +C07|06C212|GHM|8 +C07|06C213|GHM|8 +C07|06C214|GHM|8 +C07|06C231|GHM|8 +C07|06C232|GHM|8 +C07|06C233|GHM|8 +C07|06C234|GHM|8 +C07|06C23J|GHM|8 +C07|06C241|GHM|8 +C07|06C242|GHM|8 +C07|06C243|GHM|8 +C07|06C244|GHM|8 +C07|06C24J|GHM|8 +C07|06C251|GHM|8 +C07|06C252|GHM|8 +C07|06C253|GHM|8 +C07|06C254|GHM|8 +C07|06C25J|GHM|8 +C07|09C081|GHM|8 +C07|09C082|GHM|8 +C07|09C083|GHM|8 +C07|09C084|GHM|8 +C07|09C08J|GHM|8 +C07|09C08Z|GHM|8 +C07|09C131|GHM|8 +C07|09C132|GHM|8 +C07|09C133|GHM|8 +C07|09C134|GHM|8 +C07|09C13J|GHM|8 +C07|10C131|GHM|8 +C07|10C132|GHM|8 +C07|10C133|GHM|8 +C07|10C134|GHM|8 +C07|10C13Z|GHM|8 +C07|16C021|GHM|8 +C07|16C022|GHM|8 +C07|16C023|GHM|8 +C07|16C024|GHM|8 +C07|16C02Z|GHM|8 +C08|07C061|GHM|8 +C08|07C062|GHM|8 +C08|07C063|GHM|8 +C08|07C064|GHM|8 +C08|07C06Z|GHM|8 +C08|07C071|GHM|8 +C08|07C072|GHM|8 +C08|07C073|GHM|8 +C08|07C074|GHM|8 +C08|07C07Z|GHM|8 +C08|07C081|GHM|8 +C08|07C082|GHM|8 +C08|07C083|GHM|8 +C08|07C084|GHM|8 +C08|07C08Z|GHM|8 +C08|07C091|GHM|8 +C08|07C092|GHM|8 +C08|07C093|GHM|8 +C08|07C094|GHM|8 +C08|07C09V|GHM|8 +C08|07C09W|GHM|8 +C08|07C101|GHM|8 +C08|07C102|GHM|8 +C08|07C103|GHM|8 +C08|07C104|GHM|8 +C08|07C10V|GHM|8 +C08|07C10W|GHM|8 +C08|07C111|GHM|8 +C08|07C112|GHM|8 +C08|07C113|GHM|8 +C08|07C114|GHM|8 +C08|07C11V|GHM|8 +C08|07C11W|GHM|8 +C08|07C121|GHM|8 +C08|07C122|GHM|8 +C08|07C123|GHM|8 +C08|07C124|GHM|8 +C08|07C12V|GHM|8 +C08|07C12W|GHM|8 +C08|07C131|GHM|8 +C08|07C132|GHM|8 +C08|07C133|GHM|8 +C08|07C134|GHM|8 +C08|07C141|GHM|8 +C08|07C142|GHM|8 +C08|07C143|GHM|8 +C08|07C144|GHM|8 +C08|07C14J|GHM|8 +C09|08C021|GHM|8 +C09|08C022|GHM|8 +C09|08C023|GHM|8 +C09|08C024|GHM|8 +C09|08C02Z|GHM|8 +C09|08C041|GHM|8 +C09|08C042|GHM|8 +C09|08C043|GHM|8 +C09|08C044|GHM|8 +C09|08C04Z|GHM|8 +C09|08C221|GHM|8 +C09|08C222|GHM|8 +C09|08C223|GHM|8 +C09|08C224|GHM|8 +C09|08C22Z|GHM|8 +C09|08C241|GHM|8 +C09|08C242|GHM|8 +C09|08C243|GHM|8 +C09|08C244|GHM|8 +C09|08C24Z|GHM|8 +C09|08C251|GHM|8 +C09|08C252|GHM|8 +C09|08C253|GHM|8 +C09|08C254|GHM|8 +C09|08C25Z|GHM|8 +C09|08C471|GHM|8 +C09|08C472|GHM|8 +C09|08C473|GHM|8 +C09|08C474|GHM|8 +C09|08C481|GHM|8 +C09|08C482|GHM|8 +C09|08C483|GHM|8 +C09|08C484|GHM|8 +C09|08C491|GHM|8 +C09|08C492|GHM|8 +C09|08C493|GHM|8 +C09|08C494|GHM|8 +C09|08C501|GHM|8 +C09|08C502|GHM|8 +C09|08C503|GHM|8 +C09|08C504|GHM|8 +C10|08C121|GHM|8 +C10|08C122|GHM|8 +C10|08C123|GHM|8 +C10|08C124|GHM|8 +C10|08C12J|GHM|8 +C10|08C12Z|GHM|8 +C10|08C19Z|GHM|8 +C10|08C341|GHM|8 +C10|08C342|GHM|8 +C10|08C343|GHM|8 +C10|08C344|GHM|8 +C10|08C34J|GHM|8 +C10|08C381|GHM|8 +C10|08C382|GHM|8 +C10|08C383|GHM|8 +C10|08C384|GHM|8 +C10|08C38J|GHM|8 +C10|08C401|GHM|8 +C10|08C402|GHM|8 +C10|08C403|GHM|8 +C10|08C404|GHM|8 +C10|08C40J|GHM|8 +C10|08C451|GHM|8 +C10|08C452|GHM|8 +C10|08C453|GHM|8 +C10|08C454|GHM|8 +C10|08C45J|GHM|8 +C10|08C581|GHM|8 +C10|08C582|GHM|8 +C10|08C583|GHM|8 +C10|08C584|GHM|8 +C10|08C58J|GHM|8 +C11|01C07Z|GHM|8 +C11|01C131|GHM|8 +C11|01C132|GHM|8 +C11|01C133|GHM|8 +C11|01C134|GHM|8 +C11|01C13J|GHM|8 +C11|01C13Z|GHM|8 +C11|01C141|GHM|8 +C11|01C142|GHM|8 +C11|01C143|GHM|8 +C11|01C144|GHM|8 +C11|01C14J|GHM|8 +C11|01C151|GHM|8 +C11|01C152|GHM|8 +C11|01C153|GHM|8 +C11|01C154|GHM|8 +C11|01C15J|GHM|8 +C11|05C121|GHM|8 +C11|05C122|GHM|8 +C11|05C123|GHM|8 +C11|05C124|GHM|8 +C11|05C12V|GHM|8 +C11|05C12W|GHM|8 +C11|05C131|GHM|8 +C11|05C132|GHM|8 +C11|05C133|GHM|8 +C11|05C134|GHM|8 +C11|05C13J|GHM|8 +C11|05C13V|GHM|8 +C11|05C13W|GHM|8 +C11|08C061|GHM|8 +C11|08C062|GHM|8 +C11|08C063|GHM|8 +C11|08C064|GHM|8 +C11|08C06Z|GHM|8 +C11|08C08Z|GHM|8 +C11|08C131|GHM|8 +C11|08C132|GHM|8 +C11|08C133|GHM|8 +C11|08C134|GHM|8 +C11|08C13J|GHM|8 +C11|08C13Z|GHM|8 +C11|08C141|GHM|8 +C11|08C142|GHM|8 +C11|08C143|GHM|8 +C11|08C144|GHM|8 +C11|08C14J|GHM|8 +C11|08C14Z|GHM|8 +C11|08C17Z|GHM|8 +C11|08C291|GHM|8 +C11|08C292|GHM|8 +C11|08C293|GHM|8 +C11|08C294|GHM|8 +C11|08C29J|GHM|8 +C11|08C29Z|GHM|8 +C11|08C311|GHM|8 +C11|08C312|GHM|8 +C11|08C313|GHM|8 +C11|08C314|GHM|8 +C11|08C321|GHM|8 +C11|08C322|GHM|8 +C11|08C323|GHM|8 +C11|08C324|GHM|8 +C11|08C32J|GHM|8 +C11|08C331|GHM|8 +C11|08C332|GHM|8 +C11|08C333|GHM|8 +C11|08C334|GHM|8 +C11|08C351|GHM|8 +C11|08C352|GHM|8 +C11|08C353|GHM|8 +C11|08C354|GHM|8 +C11|08C35J|GHM|8 +C11|08C361|GHM|8 +C11|08C362|GHM|8 +C11|08C363|GHM|8 +C11|08C364|GHM|8 +C11|08C36J|GHM|8 +C11|08C371|GHM|8 +C11|08C372|GHM|8 +C11|08C373|GHM|8 +C11|08C374|GHM|8 +C11|08C37J|GHM|8 +C11|08C391|GHM|8 +C11|08C392|GHM|8 +C11|08C393|GHM|8 +C11|08C394|GHM|8 +C11|08C39J|GHM|8 +C11|08C411|GHM|8 +C11|08C412|GHM|8 +C11|08C413|GHM|8 +C11|08C414|GHM|8 +C11|08C41J|GHM|8 +C11|08C421|GHM|8 +C11|08C422|GHM|8 +C11|08C423|GHM|8 +C11|08C424|GHM|8 +C11|08C42J|GHM|8 +C11|08C431|GHM|8 +C11|08C432|GHM|8 +C11|08C433|GHM|8 +C11|08C434|GHM|8 +C11|08C43J|GHM|8 +C11|08C441|GHM|8 +C11|08C442|GHM|8 +C11|08C443|GHM|8 +C11|08C444|GHM|8 +C11|08C44J|GHM|8 +C11|08C461|GHM|8 +C11|08C462|GHM|8 +C11|08C463|GHM|8 +C11|08C464|GHM|8 +C11|08C46J|GHM|8 +C11|08C531|GHM|8 +C11|08C532|GHM|8 +C11|08C533|GHM|8 +C11|08C534|GHM|8 +C11|08C541|GHM|8 +C11|08C542|GHM|8 +C11|08C543|GHM|8 +C11|08C544|GHM|8 +C11|08C54J|GHM|8 +C11|08C551|GHM|8 +C11|08C552|GHM|8 +C11|08C553|GHM|8 +C11|08C554|GHM|8 +C11|08C561|GHM|8 +C11|08C562|GHM|8 +C11|08C563|GHM|8 +C11|08C564|GHM|8 +C11|08C571|GHM|8 +C11|08C572|GHM|8 +C11|08C573|GHM|8 +C11|08C574|GHM|8 +C11|08C57J|GHM|8 +C11|08C591|GHM|8 +C11|08C592|GHM|8 +C11|08C593|GHM|8 +C11|08C594|GHM|8 +C11|08C59J|GHM|8 +C11|08C601|GHM|8 +C11|08C602|GHM|8 +C11|08C603|GHM|8 +C11|08C604|GHM|8 +C11|08C60J|GHM|8 +C11|08C611|GHM|8 +C11|08C612|GHM|8 +C11|08C613|GHM|8 +C11|08C614|GHM|8 +C11|08C621|GHM|8 +C11|08C622|GHM|8 +C11|08C623|GHM|8 +C11|08C624|GHM|8 +C11|08C62J|GHM|8 +C11|21C041|GHM|8 +C11|21C042|GHM|8 +C11|21C043|GHM|8 +C11|21C044|GHM|8 +C11|21C04J|GHM|8 +C11|21C04Z|GHM|8 +C12|26C021|GHM|8 +C12|26C022|GHM|8 +C12|26C023|GHM|8 +C12|26C024|GHM|8 +C12|26C02Z|GHM|8 +C13|05C141|GHM|8 +C13|05C142|GHM|8 +C13|05C143|GHM|8 +C13|05C144|GHM|8 +C13|05C14J|GHM|8 +C13|05C14Z|GHM|8 +C13|05C151|GHM|8 +C13|05C152|GHM|8 +C13|05C153|GHM|8 +C13|05C154|GHM|8 +C13|05C15T|GHM|8 +C13|05C15Z|GHM|8 +C13|05C191|GHM|8 +C13|05C192|GHM|8 +C13|05C193|GHM|8 +C13|05C194|GHM|8 +C13|05C19T|GHM|8 +C13|05C19Z|GHM|8 +C13|05C201|GHM|8 +C13|05C202|GHM|8 +C13|05C203|GHM|8 +C13|05C204|GHM|8 +C13|05C20Z|GHM|8 +C13|05C221|GHM|8 +C13|05C222|GHM|8 +C13|05C223|GHM|8 +C13|05C224|GHM|8 +C13|05C22T|GHM|8 +C14|01C061|GHM|8 +C14|01C062|GHM|8 +C14|01C063|GHM|8 +C14|01C064|GHM|8 +C14|01C06V|GHM|8 +C14|01C06W|GHM|8 +C14|05C101|GHM|8 +C14|05C102|GHM|8 +C14|05C103|GHM|8 +C14|05C104|GHM|8 +C14|05C10V|GHM|8 +C14|05C10W|GHM|8 +C14|05C111|GHM|8 +C14|05C112|GHM|8 +C14|05C113|GHM|8 +C14|05C114|GHM|8 +C14|05C11J|GHM|8 +C14|05C11V|GHM|8 +C14|05C11W|GHM|8 +C14|05C171|GHM|8 +C14|05C172|GHM|8 +C14|05C173|GHM|8 +C14|05C174|GHM|8 +C14|05C17J|GHM|8 +C14|05C17V|GHM|8 +C14|05C17W|GHM|8 +C14|05C211|GHM|8 +C14|05C212|GHM|8 +C14|05C213|GHM|8 +C14|05C214|GHM|8 +C14|05C21J|GHM|8 +C14|11C091|GHM|8 +C14|11C092|GHM|8 +C14|11C093|GHM|8 +C14|11C094|GHM|8 +C14|11C09J|GHM|8 +C15|03C03Z|GHM|8 +C15|03C04Z|GHM|8 +C15|03C051|GHM|8 +C15|03C052|GHM|8 +C15|03C053|GHM|8 +C15|03C054|GHM|8 +C15|03C05T|GHM|8 +C15|03C05Z|GHM|8 +C15|03C061|GHM|8 +C15|03C062|GHM|8 +C15|03C063|GHM|8 +C15|03C064|GHM|8 +C15|03C06J|GHM|8 +C15|03C06Z|GHM|8 +C15|03C071|GHM|8 +C15|03C072|GHM|8 +C15|03C073|GHM|8 +C15|03C074|GHM|8 +C15|03C07J|GHM|8 +C15|03C07V|GHM|8 +C15|03C07W|GHM|8 +C15|03C091|GHM|8 +C15|03C092|GHM|8 +C15|03C093|GHM|8 +C15|03C094|GHM|8 +C15|03C09J|GHM|8 +C15|03C09Z|GHM|8 +C15|03C101|GHM|8 +C15|03C102|GHM|8 +C15|03C103|GHM|8 +C15|03C104|GHM|8 +C15|03C10Z|GHM|8 +C15|03C111|GHM|8 +C15|03C112|GHM|8 +C15|03C113|GHM|8 +C15|03C114|GHM|8 +C15|03C11Z|GHM|8 +C15|03C121|GHM|8 +C15|03C122|GHM|8 +C15|03C123|GHM|8 +C15|03C124|GHM|8 +C15|03C12Z|GHM|8 +C15|03C131|GHM|8 +C15|03C132|GHM|8 +C15|03C133|GHM|8 +C15|03C134|GHM|8 +C15|03C13Z|GHM|8 +C15|03C141|GHM|8 +C15|03C142|GHM|8 +C15|03C143|GHM|8 +C15|03C144|GHM|8 +C15|03C14J|GHM|8 +C15|03C14Z|GHM|8 +C15|03C151|GHM|8 +C15|03C152|GHM|8 +C15|03C153|GHM|8 +C15|03C154|GHM|8 +C15|03C15J|GHM|8 +C15|03C15Z|GHM|8 +C15|03C161|GHM|8 +C15|03C162|GHM|8 +C15|03C163|GHM|8 +C15|03C164|GHM|8 +C15|03C16J|GHM|8 +C15|03C16V|GHM|8 +C15|03C16W|GHM|8 +C15|03C171|GHM|8 +C15|03C172|GHM|8 +C15|03C173|GHM|8 +C15|03C174|GHM|8 +C15|03C17J|GHM|8 +C15|03C17Z|GHM|8 +C15|03C181|GHM|8 +C15|03C182|GHM|8 +C15|03C183|GHM|8 +C15|03C184|GHM|8 +C15|03C18Z|GHM|8 +C15|03C191|GHM|8 +C15|03C192|GHM|8 +C15|03C193|GHM|8 +C15|03C194|GHM|8 +C15|03C19J|GHM|8 +C15|03C19Z|GHM|8 +C15|03C201|GHM|8 +C15|03C202|GHM|8 +C15|03C203|GHM|8 +C15|03C204|GHM|8 +C15|03C20J|GHM|8 +C15|03C20Z|GHM|8 +C15|03C211|GHM|8 +C15|03C212|GHM|8 +C15|03C213|GHM|8 +C15|03C214|GHM|8 +C15|03C21J|GHM|8 +C15|03C21Z|GHM|8 +C15|03C22J|GHM|8 +C15|03C241|GHM|8 +C15|03C242|GHM|8 +C15|03C243|GHM|8 +C15|03C244|GHM|8 +C15|03C24J|GHM|8 +C15|03C251|GHM|8 +C15|03C252|GHM|8 +C15|03C253|GHM|8 +C15|03C254|GHM|8 +C15|03C261|GHM|8 +C15|03C262|GHM|8 +C15|03C263|GHM|8 +C15|03C264|GHM|8 +C15|03C27J|GHM|8 +C15|03C28J|GHM|8 +C15|03C291|GHM|8 +C15|03C292|GHM|8 +C15|03C293|GHM|8 +C15|03C294|GHM|8 +C15|03C29J|GHM|8 +C15|03C301|GHM|8 +C15|03C302|GHM|8 +C15|03C303|GHM|8 +C15|03C304|GHM|8 +C15|03C30J|GHM|8 +C15|08C281|GHM|8 +C15|08C282|GHM|8 +C15|08C283|GHM|8 +C15|08C284|GHM|8 +C15|08C28J|GHM|8 +C15|08C28Z|GHM|8 +C16|02C021|GHM|8 +C16|02C022|GHM|8 +C16|02C023|GHM|8 +C16|02C024|GHM|8 +C16|02C02J|GHM|8 +C16|02C02V|GHM|8 +C16|02C02W|GHM|8 +C16|02C031|GHM|8 +C16|02C032|GHM|8 +C16|02C033|GHM|8 +C16|02C034|GHM|8 +C16|02C03J|GHM|8 +C16|02C03Z|GHM|8 +C16|02C04Z|GHM|8 +C16|02C051|GHM|8 +C16|02C052|GHM|8 +C16|02C053|GHM|8 +C16|02C054|GHM|8 +C16|02C05J|GHM|8 +C16|02C05Z|GHM|8 +C16|02C061|GHM|8 +C16|02C062|GHM|8 +C16|02C063|GHM|8 +C16|02C064|GHM|8 +C16|02C06J|GHM|8 +C16|02C06Z|GHM|8 +C16|02C071|GHM|8 +C16|02C072|GHM|8 +C16|02C073|GHM|8 +C16|02C074|GHM|8 +C16|02C07J|GHM|8 +C16|02C07Z|GHM|8 +C16|02C081|GHM|8 +C16|02C082|GHM|8 +C16|02C083|GHM|8 +C16|02C084|GHM|8 +C16|02C08J|GHM|8 +C16|02C08V|GHM|8 +C16|02C08W|GHM|8 +C16|02C091|GHM|8 +C16|02C092|GHM|8 +C16|02C093|GHM|8 +C16|02C094|GHM|8 +C16|02C09J|GHM|8 +C16|02C09Z|GHM|8 +C16|02C101|GHM|8 +C16|02C102|GHM|8 +C16|02C103|GHM|8 +C16|02C104|GHM|8 +C16|02C10J|GHM|8 +C16|02C111|GHM|8 +C16|02C112|GHM|8 +C16|02C113|GHM|8 +C16|02C114|GHM|8 +C16|02C11J|GHM|8 +C16|02C121|GHM|8 +C16|02C122|GHM|8 +C16|02C123|GHM|8 +C16|02C124|GHM|8 +C16|02C12J|GHM|8 +C16|02C131|GHM|8 +C16|02C132|GHM|8 +C16|02C133|GHM|8 +C16|02C134|GHM|8 +C16|02C13J|GHM|8 +C17|13C031|GHM|8 +C17|13C032|GHM|8 +C17|13C033|GHM|8 +C17|13C034|GHM|8 +C17|13C03V|GHM|8 +C17|13C03W|GHM|8 +C17|13C041|GHM|8 +C17|13C042|GHM|8 +C17|13C043|GHM|8 +C17|13C044|GHM|8 +C17|13C04J|GHM|8 +C17|13C04V|GHM|8 +C17|13C04W|GHM|8 +C17|13C051|GHM|8 +C17|13C052|GHM|8 +C17|13C053|GHM|8 +C17|13C054|GHM|8 +C17|13C05Z|GHM|8 +C17|13C061|GHM|8 +C17|13C062|GHM|8 +C17|13C063|GHM|8 +C17|13C064|GHM|8 +C17|13C06J|GHM|8 +C17|13C06Z|GHM|8 +C17|13C071|GHM|8 +C17|13C072|GHM|8 +C17|13C073|GHM|8 +C17|13C074|GHM|8 +C17|13C07J|GHM|8 +C17|13C07V|GHM|8 +C17|13C07W|GHM|8 +C17|13C081|GHM|8 +C17|13C082|GHM|8 +C17|13C083|GHM|8 +C17|13C084|GHM|8 +C17|13C08J|GHM|8 +C17|13C08V|GHM|8 +C17|13C08W|GHM|8 +C17|13C091|GHM|8 +C17|13C092|GHM|8 +C17|13C093|GHM|8 +C17|13C094|GHM|8 +C17|13C09J|GHM|8 +C17|13C09T|GHM|8 +C17|13C09Z|GHM|8 +C17|13C101|GHM|8 +C17|13C102|GHM|8 +C17|13C103|GHM|8 +C17|13C104|GHM|8 +C17|13C10J|GHM|8 +C17|13C10T|GHM|8 +C17|13C10Z|GHM|8 +C17|13C111|GHM|8 +C17|13C112|GHM|8 +C17|13C113|GHM|8 +C17|13C114|GHM|8 +C17|13C11J|GHM|8 +C17|13C11Z|GHM|8 +C17|13C121|GHM|8 +C17|13C122|GHM|8 +C17|13C123|GHM|8 +C17|13C124|GHM|8 +C17|13C12J|GHM|8 +C17|13C12Z|GHM|8 +C17|13C131|GHM|8 +C17|13C132|GHM|8 +C17|13C133|GHM|8 +C17|13C134|GHM|8 +C17|13C13T|GHM|8 +C17|13C13Z|GHM|8 +C17|13C141|GHM|8 +C17|13C142|GHM|8 +C17|13C143|GHM|8 +C17|13C144|GHM|8 +C17|13C14V|GHM|8 +C17|13C14W|GHM|8 +C17|13C151|GHM|8 +C17|13C152|GHM|8 +C17|13C153|GHM|8 +C17|13C154|GHM|8 +C17|13C15V|GHM|8 +C17|13C15W|GHM|8 +C17|13C16J|GHM|8 +C17|13C171|GHM|8 +C17|13C172|GHM|8 +C17|13C173|GHM|8 +C17|13C174|GHM|8 +C17|13C17J|GHM|8 +C17|13C181|GHM|8 +C17|13C182|GHM|8 +C17|13C183|GHM|8 +C17|13C184|GHM|8 +C17|13C191|GHM|8 +C17|13C192|GHM|8 +C17|13C193|GHM|8 +C17|13C194|GHM|8 +C17|13C19J|GHM|8 +C17|13C201|GHM|8 +C17|13C202|GHM|8 +C17|13C203|GHM|8 +C17|13C204|GHM|8 +C17|13C20J|GHM|8 +C18|09C041|GHM|8 +C18|09C042|GHM|8 +C18|09C043|GHM|8 +C18|09C044|GHM|8 +C18|09C04V|GHM|8 +C18|09C04W|GHM|8 +C18|09C051|GHM|8 +C18|09C052|GHM|8 +C18|09C053|GHM|8 +C18|09C054|GHM|8 +C18|09C05J|GHM|8 +C18|09C05V|GHM|8 +C18|09C05W|GHM|8 +C18|09C061|GHM|8 +C18|09C062|GHM|8 +C18|09C063|GHM|8 +C18|09C064|GHM|8 +C18|09C06T|GHM|8 +C18|09C06Z|GHM|8 +C18|09C071|GHM|8 +C18|09C072|GHM|8 +C18|09C073|GHM|8 +C18|09C074|GHM|8 +C18|09C07J|GHM|8 +C18|09C07Z|GHM|8 +C18|09C111|GHM|8 +C18|09C112|GHM|8 +C18|09C113|GHM|8 +C18|09C114|GHM|8 +C19|10C031|GHM|8 +C19|10C032|GHM|8 +C19|10C033|GHM|8 +C19|10C034|GHM|8 +C19|10C03Z|GHM|8 +C19|11C021|GHM|8 +C19|11C022|GHM|8 +C19|11C023|GHM|8 +C19|11C024|GHM|8 +C19|11C02V|GHM|8 +C19|11C02W|GHM|8 +C19|11C031|GHM|8 +C19|11C032|GHM|8 +C19|11C033|GHM|8 +C19|11C034|GHM|8 +C19|11C03V|GHM|8 +C19|11C03W|GHM|8 +C19|11C041|GHM|8 +C19|11C042|GHM|8 +C19|11C043|GHM|8 +C19|11C044|GHM|8 +C19|11C04J|GHM|8 +C19|11C04Z|GHM|8 +C19|11C051|GHM|8 +C19|11C052|GHM|8 +C19|11C053|GHM|8 +C19|11C054|GHM|8 +C19|11C05J|GHM|8 +C19|11C05V|GHM|8 +C19|11C05W|GHM|8 +C19|11C061|GHM|8 +C19|11C062|GHM|8 +C19|11C063|GHM|8 +C19|11C064|GHM|8 +C19|11C06Z|GHM|8 +C19|11C071|GHM|8 +C19|11C072|GHM|8 +C19|11C073|GHM|8 +C19|11C074|GHM|8 +C19|11C07J|GHM|8 +C19|11C07Z|GHM|8 +C19|11C081|GHM|8 +C19|11C082|GHM|8 +C19|11C083|GHM|8 +C19|11C084|GHM|8 +C19|11C08T|GHM|8 +C19|11C08V|GHM|8 +C19|11C08W|GHM|8 +C19|11C101|GHM|8 +C19|11C102|GHM|8 +C19|11C103|GHM|8 +C19|11C104|GHM|8 +C19|11C10J|GHM|8 +C19|11C111|GHM|8 +C19|11C112|GHM|8 +C19|11C113|GHM|8 +C19|11C114|GHM|8 +C19|11C11J|GHM|8 +C19|11C121|GHM|8 +C19|11C122|GHM|8 +C19|11C123|GHM|8 +C19|11C124|GHM|8 +C19|11C12J|GHM|8 +C19|11C131|GHM|8 +C19|11C132|GHM|8 +C19|11C133|GHM|8 +C19|11C134|GHM|8 +C19|11C13J|GHM|8 +C20|12C02Z|GHM|8 +C20|12C031|GHM|8 +C20|12C032|GHM|8 +C20|12C033|GHM|8 +C20|12C034|GHM|8 +C20|12C03J|GHM|8 +C20|12C03Z|GHM|8 +C20|12C041|GHM|8 +C20|12C042|GHM|8 +C20|12C043|GHM|8 +C20|12C044|GHM|8 +C20|12C04J|GHM|8 +C20|12C04V|GHM|8 +C20|12C04W|GHM|8 +C20|12C051|GHM|8 +C20|12C052|GHM|8 +C20|12C053|GHM|8 +C20|12C054|GHM|8 +C20|12C05Z|GHM|8 +C20|12C061|GHM|8 +C20|12C062|GHM|8 +C20|12C063|GHM|8 +C20|12C064|GHM|8 +C20|12C06J|GHM|8 +C20|12C06Z|GHM|8 +C20|12C071|GHM|8 +C20|12C072|GHM|8 +C20|12C073|GHM|8 +C20|12C074|GHM|8 +C20|12C07J|GHM|8 +C20|12C07Z|GHM|8 +C20|12C081|GHM|8 +C20|12C082|GHM|8 +C20|12C083|GHM|8 +C20|12C084|GHM|8 +C20|12C08J|GHM|8 +C20|12C08Z|GHM|8 +C20|12C091|GHM|8 +C20|12C092|GHM|8 +C20|12C093|GHM|8 +C20|12C094|GHM|8 +C20|12C09Z|GHM|8 +C20|12C101|GHM|8 +C20|12C102|GHM|8 +C20|12C103|GHM|8 +C20|12C104|GHM|8 +C20|12C10Z|GHM|8 +C20|12C111|GHM|8 +C20|12C112|GHM|8 +C20|12C113|GHM|8 +C20|12C114|GHM|8 +C20|12C11Z|GHM|8 +C20|12C121|GHM|8 +C20|12C122|GHM|8 +C20|12C123|GHM|8 +C20|12C124|GHM|8 +C20|12C12Z|GHM|8 +C20|12C131|GHM|8 +C20|12C132|GHM|8 +C20|12C133|GHM|8 +C20|12C134|GHM|8 +C20|12C13J|GHM|8 +C21|16C031|GHM|8 +C21|16C032|GHM|8 +C21|16C033|GHM|8 +C21|16C034|GHM|8 +C21|16C03J|GHM|8 +C21|16C03V|GHM|8 +C21|16C03W|GHM|8 +C21|17C021|GHM|8 +C21|17C022|GHM|8 +C21|17C023|GHM|8 +C21|17C024|GHM|8 +C21|17C02V|GHM|8 +C21|17C02W|GHM|8 +C21|17C031|GHM|8 +C21|17C032|GHM|8 +C21|17C033|GHM|8 +C21|17C034|GHM|8 +C21|17C03J|GHM|8 +C21|17C03V|GHM|8 +C21|17C03W|GHM|8 +C21|17C041|GHM|8 +C21|17C042|GHM|8 +C21|17C043|GHM|8 +C21|17C044|GHM|8 +C21|17C04V|GHM|8 +C21|17C04W|GHM|8 +C21|17C051|GHM|8 +C21|17C052|GHM|8 +C21|17C053|GHM|8 +C21|17C054|GHM|8 +C21|17C05J|GHM|8 +C21|17C05V|GHM|8 +C21|17C05W|GHM|8 +C21|17C061|GHM|8 +C21|17C062|GHM|8 +C21|17C063|GHM|8 +C21|17C064|GHM|8 +C21|17C071|GHM|8 +C21|17C072|GHM|8 +C21|17C073|GHM|8 +C21|17C074|GHM|8 +C21|17C081|GHM|8 +C21|17C082|GHM|8 +C21|17C083|GHM|8 +C21|17C084|GHM|8 +C21|17C08J|GHM|8 +C22|10C051|GHM|8 +C22|10C052|GHM|8 +C22|10C053|GHM|8 +C22|10C054|GHM|8 +C22|10C05Z|GHM|8 +C22|10C071|GHM|8 +C22|10C072|GHM|8 +C22|10C073|GHM|8 +C22|10C074|GHM|8 +C22|10C07Z|GHM|8 +C22|10C101|GHM|8 +C22|10C102|GHM|8 +C22|10C103|GHM|8 +C22|10C104|GHM|8 +C22|10C10Z|GHM|8 +C22|10C111|GHM|8 +C22|10C112|GHM|8 +C22|10C113|GHM|8 +C22|10C114|GHM|8 +C22|10C11V|GHM|8 +C22|10C11W|GHM|8 +C22|10C121|GHM|8 +C22|10C122|GHM|8 +C22|10C123|GHM|8 +C22|10C124|GHM|8 +C22|10C12V|GHM|8 +C22|10C12W|GHM|8 +C23|08C201|GHM|8 +C23|08C202|GHM|8 +C23|08C203|GHM|8 +C23|08C204|GHM|8 +C23|08C20J|GHM|8 +C23|08C20Z|GHM|8 +C23|09C021|GHM|8 +C23|09C022|GHM|8 +C23|09C023|GHM|8 +C23|09C024|GHM|8 +C23|09C02J|GHM|8 +C23|09C02V|GHM|8 +C23|09C02W|GHM|8 +C23|09C031|GHM|8 +C23|09C032|GHM|8 +C23|09C033|GHM|8 +C23|09C034|GHM|8 +C23|09C03J|GHM|8 +C23|09C03V|GHM|8 +C23|09C03W|GHM|8 +C23|09C091|GHM|8 +C23|09C092|GHM|8 +C23|09C093|GHM|8 +C23|09C094|GHM|8 +C23|09C09J|GHM|8 +C23|09C09Z|GHM|8 +C23|09C121|GHM|8 +C23|09C122|GHM|8 +C23|09C123|GHM|8 +C23|09C124|GHM|8 +C23|09C12J|GHM|8 +C23|21C021|GHM|8 +C23|21C022|GHM|8 +C23|21C023|GHM|8 +C23|21C024|GHM|8 +C23|21C02J|GHM|8 +C23|21C02Z|GHM|8 +C23|21C031|GHM|8 +C23|21C032|GHM|8 +C23|21C033|GHM|8 +C23|21C034|GHM|8 +C23|21C03J|GHM|8 +C23|21C03Z|GHM|8 +C23|21C061|GHM|8 +C23|21C062|GHM|8 +C23|21C063|GHM|8 +C23|21C064|GHM|8 +C23|21C06J|GHM|8 +C24|22C021|GHM|8 +C24|22C022|GHM|8 +C24|22C023|GHM|8 +C24|22C024|GHM|8 +C24|22C02J|GHM|8 +C24|22C02Z|GHM|8 +C24|22C031|GHM|8 +C24|22C032|GHM|8 +C24|22C033|GHM|8 +C24|22C034|GHM|8 +C24|22C03Z|GHM|8 +C25|01C081|GHM|8 +C25|01C082|GHM|8 +C25|01C083|GHM|8 +C25|01C084|GHM|8 +C25|01C08J|GHM|8 +C25|01C08V|GHM|8 +C25|01C08W|GHM|8 +C25|05C181|GHM|8 +C25|05C182|GHM|8 +C25|05C183|GHM|8 +C25|05C184|GHM|8 +C25|05C18J|GHM|8 +C25|05C18Z|GHM|8 +C25|08C211|GHM|8 +C25|08C212|GHM|8 +C25|08C213|GHM|8 +C25|08C214|GHM|8 +C25|08C21J|GHM|8 +C25|08C21V|GHM|8 +C25|08C21W|GHM|8 +C25|09C101|GHM|8 +C25|09C102|GHM|8 +C25|09C103|GHM|8 +C25|09C104|GHM|8 +C25|09C10J|GHM|8 +C25|09C10V|GHM|8 +C25|09C10W|GHM|8 +C25|09C141|GHM|8 +C25|09C142|GHM|8 +C25|09C143|GHM|8 +C25|09C144|GHM|8 +C25|09C14J|GHM|8 +C25|09C151|GHM|8 +C25|09C152|GHM|8 +C25|09C153|GHM|8 +C25|09C154|GHM|8 +C25|09C15J|GHM|8 +C25|09C161|GHM|8 +C25|09C162|GHM|8 +C25|09C163|GHM|8 +C25|09C164|GHM|8 +C25|09C171|GHM|8 +C25|09C172|GHM|8 +C25|09C173|GHM|8 +C25|09C174|GHM|8 +C25|09C181|GHM|8 +C25|09C182|GHM|8 +C25|09C183|GHM|8 +C25|09C184|GHM|8 +C25|09C191|GHM|8 +C25|09C192|GHM|8 +C25|09C193|GHM|8 +C25|09C194|GHM|8 +C25|09C201|GHM|8 +C25|09C202|GHM|8 +C25|09C203|GHM|8 +C25|09C204|GHM|8 +C25|09C20J|GHM|8 +C25|09C211|GHM|8 +C25|09C212|GHM|8 +C25|09C213|GHM|8 +C25|09C214|GHM|8 +C25|09C221|GHM|8 +C25|09C222|GHM|8 +C25|09C223|GHM|8 +C25|09C224|GHM|8 +C25|09C22J|GHM|8 +C25|09C231|GHM|8 +C25|09C232|GHM|8 +C25|09C233|GHM|8 +C25|09C234|GHM|8 +C25|09C23J|GHM|8 +C25|09C241|GHM|8 +C25|09C242|GHM|8 +C25|09C243|GHM|8 +C25|09C244|GHM|8 +C25|09C24J|GHM|8 +C25|09C251|GHM|8 +C25|09C252|GHM|8 +C25|09C253|GHM|8 +C25|09C254|GHM|8 +C25|09C25J|GHM|8 +C25|09C261|GHM|8 +C25|09C262|GHM|8 +C25|09C263|GHM|8 +C25|09C264|GHM|8 +C25|09C26J|GHM|8 +C25|09C271|GHM|8 +C25|09C272|GHM|8 +C25|09C273|GHM|8 +C25|09C274|GHM|8 +C25|09C281|GHM|8 +C25|09C282|GHM|8 +C25|09C283|GHM|8 +C25|09C284|GHM|8 +C25|09C28J|GHM|8 +C25|09C291|GHM|8 +C25|09C292|GHM|8 +C25|09C293|GHM|8 +C25|09C294|GHM|8 +C25|09C29J|GHM|8 +C25|09C301|GHM|8 +C25|09C302|GHM|8 +C25|09C303|GHM|8 +C25|09C304|GHM|8 +C25|09C30J|GHM|8 +C25|09C311|GHM|8 +C25|09C312|GHM|8 +C25|09C313|GHM|8 +C25|09C314|GHM|8 +C25|09C31J|GHM|8 +C25|09C321|GHM|8 +C25|09C322|GHM|8 +C25|09C323|GHM|8 +C25|09C324|GHM|8 +C25|09C32J|GHM|8 +C25|09C331|GHM|8 +C25|09C332|GHM|8 +C25|09C333|GHM|8 +C25|09C334|GHM|8 +C25|09C341|GHM|8 +C25|09C342|GHM|8 +C25|09C343|GHM|8 +C25|09C344|GHM|8 +C25|09C34J|GHM|8 +C25|10C081|GHM|8 +C25|10C082|GHM|8 +C25|10C083|GHM|8 +C25|10C084|GHM|8 +C25|10C08J|GHM|8 +C25|10C08Z|GHM|8 +C25|18C021|GHM|8 +C25|18C022|GHM|8 +C25|18C023|GHM|8 +C25|18C024|GHM|8 +C25|18C02J|GHM|8 +C25|18C02V|GHM|8 +C25|18C02W|GHM|8 +C25|19C021|GHM|8 +C25|19C022|GHM|8 +C25|19C023|GHM|8 +C25|19C024|GHM|8 +C25|19C02Z|GHM|8 +C25|21C051|GHM|8 +C25|21C052|GHM|8 +C25|21C053|GHM|8 +C25|21C054|GHM|8 +C25|21C05J|GHM|8 +C25|21C05V|GHM|8 +C25|21C05W|GHM|8 +C25|23C021|GHM|8 +C25|23C022|GHM|8 +C25|23C023|GHM|8 +C25|23C024|GHM|8 +C25|23C02J|GHM|8 +C25|23C02Z|GHM|8 +C25|25C021|GHM|8 +C25|25C022|GHM|8 +C25|25C023|GHM|8 +C25|25C024|GHM|8 +C25|25C02Z|GHM|8 +K01|06K06J|GHM|8 +K01|07K061|GHM|8 +K01|07K062|GHM|8 +K01|07K063|GHM|8 +K01|07K064|GHM|8 +K02|06K02Z|GHM|8 +K02|06K03J|GHM|8 +K02|06K04J|GHM|8 +K02|06K05J|GHM|8 +K02|07K02Z|GHM|8 +K02|07K04J|GHM|8 +K02|07K05J|GHM|8 +K03|01K04J|GHM|8 +K03|01K06J|GHM|8 +K04|05K17J|GHM|8 +K04|05K18J|GHM|8 +K05|01K021|GHM|8 +K05|01K022|GHM|8 +K05|01K023|GHM|8 +K05|01K024|GHM|8 +K05|01K02Z|GHM|8 +K05|01K031|GHM|8 +K05|01K032|GHM|8 +K05|01K033|GHM|8 +K05|01K034|GHM|8 +K05|01K03Z|GHM|8 +K05|01K071|GHM|8 +K05|01K072|GHM|8 +K05|01K073|GHM|8 +K05|01K074|GHM|8 +K05|05C16Z|GHM|8 +K05|05K03Z|GHM|8 +K05|05K04Z|GHM|8 +K05|05K051|GHM|8 +K05|05K052|GHM|8 +K05|05K053|GHM|8 +K05|05K054|GHM|8 +K05|05K05V|GHM|8 +K05|05K05W|GHM|8 +K05|05K061|GHM|8 +K05|05K062|GHM|8 +K05|05K063|GHM|8 +K05|05K064|GHM|8 +K05|05K06T|GHM|8 +K05|05K06V|GHM|8 +K05|05K06W|GHM|8 +K05|05K07Z|GHM|8 +K05|05K08Z|GHM|8 +K05|05K09Z|GHM|8 +K05|05K101|GHM|8 +K05|05K102|GHM|8 +K05|05K103|GHM|8 +K05|05K104|GHM|8 +K05|05K10J|GHM|8 +K05|05K10Z|GHM|8 +K05|05K111|GHM|8 +K05|05K112|GHM|8 +K05|05K113|GHM|8 +K05|05K114|GHM|8 +K05|05K11T|GHM|8 +K05|05K11Z|GHM|8 +K05|05K121|GHM|8 +K05|05K122|GHM|8 +K05|05K123|GHM|8 +K05|05K124|GHM|8 +K05|05K12Z|GHM|8 +K05|05K131|GHM|8 +K05|05K132|GHM|8 +K05|05K133|GHM|8 +K05|05K134|GHM|8 +K05|05K13J|GHM|8 +K05|05K13Z|GHM|8 +K05|05K151|GHM|8 +K05|05K152|GHM|8 +K05|05K153|GHM|8 +K05|05K154|GHM|8 +K05|05K15J|GHM|8 +K05|05K191|GHM|8 +K05|05K192|GHM|8 +K05|05K193|GHM|8 +K05|05K194|GHM|8 +K05|05K201|GHM|8 +K05|05K202|GHM|8 +K05|05K203|GHM|8 +K05|05K204|GHM|8 +K05|05K20T|GHM|8 +K05|05K211|GHM|8 +K05|05K212|GHM|8 +K05|05K213|GHM|8 +K05|05K214|GHM|8 +K05|05K221|GHM|8 +K05|05K222|GHM|8 +K05|05K223|GHM|8 +K05|05K224|GHM|8 +K05|05K231|GHM|8 +K05|05K232|GHM|8 +K05|05K233|GHM|8 +K05|05K234|GHM|8 +K05|05K23J|GHM|8 +K05|05K241|GHM|8 +K05|05K242|GHM|8 +K05|05K243|GHM|8 +K05|05K244|GHM|8 +K05|05K24J|GHM|8 +K05|05K251|GHM|8 +K05|05K252|GHM|8 +K05|05K253|GHM|8 +K05|05K254|GHM|8 +K05|05K25J|GHM|8 +K05|05K261|GHM|8 +K05|05K262|GHM|8 +K05|05K263|GHM|8 +K05|05K264|GHM|8 +K05|05K26J|GHM|8 +K05|05M02E|GHM|8 +K05|05M03Z|GHM|8 +K06|05K14Z|GHM|8 +K06|11K07Z|GHM|8 +K07|04K02J|GHM|8 +K08|08K02J|GHM|8 +K08|08K031|GHM|8 +K08|08K032|GHM|8 +K08|08K033|GHM|8 +K08|08K034|GHM|8 +K08|08K041|GHM|8 +K08|08K042|GHM|8 +K08|08K043|GHM|8 +K08|08K044|GHM|8 +K08|08K051|GHM|8 +K08|08K052|GHM|8 +K08|08K053|GHM|8 +K08|08K054|GHM|8 +K08|08K05J|GHM|8 +K08|08K06Z|GHM|8 +K09|03K021|GHM|8 +K09|03K022|GHM|8 +K09|03K023|GHM|8 +K09|03K024|GHM|8 +K09|03K02J|GHM|8 +K09|03K02Z|GHM|8 +K09|03K03J|GHM|8 +K09|03K04J|GHM|8 +K10|11K03Z|GHM|8 +K10|11K04Z|GHM|8 +K10|11K05Z|GHM|8 +K10|11K06Z|GHM|8 +K10|11K08J|GHM|8 +K10|12K02Z|GHM|8 +K10|12K03Z|GHM|8 +K10|12K06J|GHM|8 +K10|13K02Z|GHM|8 +K10|13K03Z|GHM|8 +K10|13K04Z|GHM|8 +K10|13K05Z|GHM|8 +K10|13K06J|GHM|8 +K11|01K05J|GHM|8 +K12|23K02Z|GHM|8 +K13|11K021|GHM|8 +K13|11K022|GHM|8 +K13|11K023|GHM|8 +K13|11K024|GHM|8 +K13|11K02J|GHM|8 +K13|11K02V|GHM|8 +K13|11K02W|GHM|8 +K14|17K02Z|GHM|8 +K14|17K03Z|GHM|8 +K14|17K041|GHM|8 +K14|17K042|GHM|8 +K14|17K043|GHM|8 +K14|17K044|GHM|8 +K14|17K04Z|GHM|8 +K14|17K051|GHM|8 +K14|17K052|GHM|8 +K14|17K053|GHM|8 +K14|17K054|GHM|8 +K14|17K05Z|GHM|8 +K14|17K061|GHM|8 +K14|17K062|GHM|8 +K14|17K063|GHM|8 +K14|17K064|GHM|8 +K14|17K06Z|GHM|8 +K14|17K081|GHM|8 +K14|17K082|GHM|8 +K14|17K083|GHM|8 +K14|17K084|GHM|8 +K14|17K091|GHM|8 +K14|17K092|GHM|8 +K14|17K093|GHM|8 +K14|17K094|GHM|8 +K15|09K02J|GHM|8 +K15|17K07J|GHM|8 +K15|23K03J|GHM|8 +K16|22K02J|GHM|8 +K17|21K02J|GHM|8 +N01|15C02A|GHM|8 +N01|15C02B|GHM|8 +N01|15C02Z|GHM|8 +N01|15C03A|GHM|8 +N01|15C03B|GHM|8 +N01|15C03Z|GHM|8 +N01|15C04A|GHM|8 +N01|15C04B|GHM|8 +N01|15C04Z|GHM|8 +N01|15C05A|GHM|8 +N01|15C05B|GHM|8 +N01|15C05Z|GHM|8 +N01|15C06A|GHM|8 +N01|15C06B|GHM|8 +N01|15C06Z|GHM|8 +N02|15M05A|GHM|8 +N02|15M05B|GHM|8 +N02|15M05C|GHM|8 +N02|15M05D|GHM|8 +N02|15M06A|GHM|8 +N02|15M06B|GHM|8 +N02|15M06C|GHM|8 +N02|15M06D|GHM|8 +N02|15M07A|GHM|8 +N02|15M07B|GHM|8 +N02|15M07C|GHM|8 +N02|15M08A|GHM|8 +N02|15M08B|GHM|8 +N02|15M08C|GHM|8 +N02|15M09A|GHM|8 +N02|15M09B|GHM|8 +N02|15M09C|GHM|8 +N02|15M10A|GHM|8 +N02|15M10B|GHM|8 +N02|15M10C|GHM|8 +N02|15M11A|GHM|8 +N02|15M11B|GHM|8 +N02|15M11C|GHM|8 +N02|15M12A|GHM|8 +N02|15M12B|GHM|8 +N02|15M13A|GHM|8 +N02|15M13B|GHM|8 +N02|15M14A|GHM|8 +N02|15M14B|GHM|8 +N02|15Z02T|GHM|8 +N02|15Z02Z|GHM|8 +N02|15Z05A|GHM|8 +N02|15Z05B|GHM|8 +N02|15Z05C|GHM|8 +N02|15Z05D|GHM|8 +N02|15Z06A|GHM|8 +N02|15Z06B|GHM|8 +N02|15Z06C|GHM|8 +N02|15Z06D|GHM|8 +N02|15Z07A|GHM|8 +N02|15Z07B|GHM|8 +N02|15Z07C|GHM|8 +N02|15Z08A|GHM|8 +N02|15Z08Z|GHM|8 +N02|15Z09A|GHM|8 +N02|15Z09Z|GHM|8 +N03|15M02Z|GHM|8 +N03|15M03E|GHM|8 +N03|15M04E|GHM|8 +N03|15Z03Z|GHM|8 +N03|15Z04E|GHM|8 +N03|15Z08E|GHM|8 +N03|15Z09E|GHM|8 +N03|15Z10E|GHM|8 +O01|14C03A|GHM|8 +O01|14C03B|GHM|8 +O01|14C03C|GHM|8 +O01|14C03D|GHM|8 +O01|14C03Z|GHM|8 +O01|14Z02A|GHM|8 +O01|14Z02B|GHM|8 +O01|14Z02C|GHM|8 +O01|14Z02T|GHM|8 +O01|14Z09Z|GHM|8 +O01|14Z10A|GHM|8 +O01|14Z10B|GHM|8 +O01|14Z10T|GHM|8 +O01|14Z11A|GHM|8 +O01|14Z11B|GHM|8 +O01|14Z12A|GHM|8 +O01|14Z12B|GHM|8 +O01|14Z13A|GHM|8 +O01|14Z13B|GHM|8 +O01|14Z13C|GHM|8 +O01|14Z13D|GHM|8 +O01|14Z13T|GHM|8 +O01|14Z14A|GHM|8 +O01|14Z14B|GHM|8 +O01|14Z14C|GHM|8 +O01|14Z14D|GHM|8 +O01|14Z14T|GHM|8 +O02|14C02A|GHM|8 +O02|14C02B|GHM|8 +O02|14C02C|GHM|8 +O02|14C06A|GHM|8 +O02|14C06B|GHM|8 +O02|14C06C|GHM|8 +O02|14C06D|GHM|8 +O02|14C07A|GHM|8 +O02|14C07B|GHM|8 +O02|14C07C|GHM|8 +O02|14C07D|GHM|8 +O02|14C08A|GHM|8 +O02|14C08B|GHM|8 +O02|14C08C|GHM|8 +O02|14C08D|GHM|8 +O03|14Z08Z|GHM|8 +O04|14C04T|GHM|8 +O04|14C04Z|GHM|8 +O04|14C05J|GHM|8 +O04|14C05Z|GHM|8 +O04|14C09A|GHM|8 +O04|14C09B|GHM|8 +O04|14C10T|GHM|8 +O04|14C10Z|GHM|8 +O04|14M02A|GHM|8 +O04|14M02B|GHM|8 +O04|14M02T|GHM|8 +O04|14M02Z|GHM|8 +O04|14M03A|GHM|8 +O04|14M03B|GHM|8 +O04|14M03C|GHM|8 +O04|14M03D|GHM|8 +O04|14M03T|GHM|8 +O04|14Z03A|GHM|8 +O04|14Z03B|GHM|8 +O04|14Z03T|GHM|8 +O04|14Z04T|GHM|8 +O04|14Z04Z|GHM|8 +O04|14Z05Z|GHM|8 +O04|14Z06T|GHM|8 +O04|14Z06Z|GHM|8 +O04|14Z07Z|GHM|8 +O04|14Z15Z|GHM|8 +O04|14Z16T|GHM|8 +O04|14Z16Z|GHM|8 +S01|28Z01Z|GHM|8 +S01|28Z02Z|GHM|8 +S01|28Z03Z|GHM|8 +S01|28Z04Z|GHM|8 +S01|28Z05Z|GHM|8 +S01|28Z06Z|GHM|8 +S02|28Z07Z|GHM|8 +S03|28Z17Z|GHM|8 +S04|28Z08Z|GHM|8 +S04|28Z09Z|GHM|8 +S04|28Z10Z|GHM|8 +S04|28Z11Z|GHM|8 +S04|28Z12Z|GHM|8 +S04|28Z13Z|GHM|8 +S04|28Z18Z|GHM|8 +S04|28Z19Z|GHM|8 +S04|28Z20Z|GHM|8 +S04|28Z21Z|GHM|8 +S04|28Z22Z|GHM|8 +S04|28Z23Z|GHM|8 +S04|28Z24Z|GHM|8 +S04|28Z25Z|GHM|8 +S05|28Z14Z|GHM|8 +S06|28Z16Z|GHM|8 +S07|28Z15Z|GHM|8 +X01|27Z021|GHM|8 +X01|27Z022|GHM|8 +X01|27Z023|GHM|8 +X01|27Z024|GHM|8 +X01|27Z02Z|GHM|8 +X01|27Z03Z|GHM|8 +X01|27Z04J|GHM|8 +X02|06M021|GHM|8 +X02|06M022|GHM|8 +X02|06M023|GHM|8 +X02|06M024|GHM|8 +X02|06M02T|GHM|8 +X02|06M02V|GHM|8 +X02|06M02W|GHM|8 +X02|06M031|GHM|8 +X02|06M032|GHM|8 +X02|06M033|GHM|8 +X02|06M034|GHM|8 +X02|06M03T|GHM|8 +X02|06M03V|GHM|8 +X02|06M03W|GHM|8 +X02|06M041|GHM|8 +X02|06M042|GHM|8 +X02|06M043|GHM|8 +X02|06M044|GHM|8 +X02|06M04T|GHM|8 +X02|06M04V|GHM|8 +X02|06M04W|GHM|8 +X02|06M051|GHM|8 +X02|06M052|GHM|8 +X02|06M053|GHM|8 +X02|06M054|GHM|8 +X02|06M05T|GHM|8 +X02|06M05V|GHM|8 +X02|06M05W|GHM|8 +X02|06M061|GHM|8 +X02|06M062|GHM|8 +X02|06M063|GHM|8 +X02|06M064|GHM|8 +X02|06M06T|GHM|8 +X02|06M06V|GHM|8 +X02|06M06W|GHM|8 +X02|06M071|GHM|8 +X02|06M072|GHM|8 +X02|06M073|GHM|8 +X02|06M074|GHM|8 +X02|06M07T|GHM|8 +X02|06M07V|GHM|8 +X02|06M07W|GHM|8 +X02|06M081|GHM|8 +X02|06M082|GHM|8 +X02|06M083|GHM|8 +X02|06M084|GHM|8 +X02|06M08T|GHM|8 +X02|06M08Z|GHM|8 +X02|06M091|GHM|8 +X02|06M092|GHM|8 +X02|06M093|GHM|8 +X02|06M094|GHM|8 +X02|06M09T|GHM|8 +X02|06M09V|GHM|8 +X02|06M09W|GHM|8 +X02|06M101|GHM|8 +X02|06M102|GHM|8 +X02|06M103|GHM|8 +X02|06M104|GHM|8 +X02|06M10Z|GHM|8 +X02|06M111|GHM|8 +X02|06M112|GHM|8 +X02|06M113|GHM|8 +X02|06M114|GHM|8 +X02|06M11T|GHM|8 +X02|06M11V|GHM|8 +X02|06M11W|GHM|8 +X02|06M121|GHM|8 +X02|06M122|GHM|8 +X02|06M123|GHM|8 +X02|06M124|GHM|8 +X02|06M12T|GHM|8 +X02|06M131|GHM|8 +X02|06M132|GHM|8 +X02|06M133|GHM|8 +X02|06M134|GHM|8 +X02|06M13T|GHM|8 +X02|06M141|GHM|8 +X02|06M142|GHM|8 +X02|06M143|GHM|8 +X02|06M144|GHM|8 +X02|06M15Z|GHM|8 +X02|06M16Z|GHM|8 +X02|06M17T|GHM|8 +X02|06M17Z|GHM|8 +X02|06M18T|GHM|8 +X02|06M18Z|GHM|8 +X02|06M191|GHM|8 +X02|06M192|GHM|8 +X02|06M193|GHM|8 +X02|06M194|GHM|8 +X02|06M201|GHM|8 +X02|06M202|GHM|8 +X02|06M203|GHM|8 +X02|06M204|GHM|8 +X02|06M20T|GHM|8 +X02|06M211|GHM|8 +X02|06M212|GHM|8 +X02|06M213|GHM|8 +X02|06M214|GHM|8 +X02|07M021|GHM|8 +X02|07M022|GHM|8 +X02|07M023|GHM|8 +X02|07M024|GHM|8 +X02|07M02T|GHM|8 +X02|07M02V|GHM|8 +X02|07M02W|GHM|8 +X02|07M041|GHM|8 +X02|07M042|GHM|8 +X02|07M043|GHM|8 +X02|07M044|GHM|8 +X02|07M04T|GHM|8 +X02|07M04V|GHM|8 +X02|07M04W|GHM|8 +X02|07M061|GHM|8 +X02|07M062|GHM|8 +X02|07M063|GHM|8 +X02|07M064|GHM|8 +X02|07M06T|GHM|8 +X02|07M06V|GHM|8 +X02|07M06W|GHM|8 +X02|07M071|GHM|8 +X02|07M072|GHM|8 +X02|07M073|GHM|8 +X02|07M074|GHM|8 +X02|07M07T|GHM|8 +X02|07M081|GHM|8 +X02|07M082|GHM|8 +X02|07M083|GHM|8 +X02|07M084|GHM|8 +X02|07M08T|GHM|8 +X02|07M091|GHM|8 +X02|07M092|GHM|8 +X02|07M093|GHM|8 +X02|07M094|GHM|8 +X02|07M09T|GHM|8 +X02|07M101|GHM|8 +X02|07M102|GHM|8 +X02|07M103|GHM|8 +X02|07M104|GHM|8 +X02|07M10T|GHM|8 +X02|07M111|GHM|8 +X02|07M112|GHM|8 +X02|07M113|GHM|8 +X02|07M114|GHM|8 +X02|07M11T|GHM|8 +X02|07M121|GHM|8 +X02|07M122|GHM|8 +X02|07M123|GHM|8 +X02|07M124|GHM|8 +X02|07M13Z|GHM|8 +X02|07M14T|GHM|8 +X02|07M14Z|GHM|8 +X02|07M151|GHM|8 +X02|07M152|GHM|8 +X02|07M153|GHM|8 +X02|07M154|GHM|8 +X02|07M15T|GHM|8 +X02|07M161|GHM|8 +X02|07M162|GHM|8 +X02|07M163|GHM|8 +X02|07M164|GHM|8 +X03|01M02Z|GHM|8 +X03|01M041|GHM|8 +X03|01M042|GHM|8 +X03|01M043|GHM|8 +X03|01M044|GHM|8 +X03|01M04T|GHM|8 +X03|01M04Z|GHM|8 +X03|01M051|GHM|8 +X03|01M052|GHM|8 +X03|01M053|GHM|8 +X03|01M054|GHM|8 +X03|01M05T|GHM|8 +X03|01M05V|GHM|8 +X03|01M05W|GHM|8 +X03|01M071|GHM|8 +X03|01M072|GHM|8 +X03|01M073|GHM|8 +X03|01M074|GHM|8 +X03|01M07T|GHM|8 +X03|01M07Z|GHM|8 +X03|01M081|GHM|8 +X03|01M082|GHM|8 +X03|01M083|GHM|8 +X03|01M084|GHM|8 +X03|01M08T|GHM|8 +X03|01M08V|GHM|8 +X03|01M08W|GHM|8 +X03|01M091|GHM|8 +X03|01M092|GHM|8 +X03|01M093|GHM|8 +X03|01M094|GHM|8 +X03|01M09T|GHM|8 +X03|01M09Z|GHM|8 +X03|01M101|GHM|8 +X03|01M102|GHM|8 +X03|01M103|GHM|8 +X03|01M104|GHM|8 +X03|01M10T|GHM|8 +X03|01M10V|GHM|8 +X03|01M10W|GHM|8 +X03|01M111|GHM|8 +X03|01M112|GHM|8 +X03|01M113|GHM|8 +X03|01M114|GHM|8 +X03|01M11T|GHM|8 +X03|01M11V|GHM|8 +X03|01M11W|GHM|8 +X03|01M121|GHM|8 +X03|01M122|GHM|8 +X03|01M123|GHM|8 +X03|01M124|GHM|8 +X03|01M12T|GHM|8 +X03|01M12V|GHM|8 +X03|01M12W|GHM|8 +X03|01M131|GHM|8 +X03|01M132|GHM|8 +X03|01M133|GHM|8 +X03|01M134|GHM|8 +X03|01M13Z|GHM|8 +X03|01M151|GHM|8 +X03|01M152|GHM|8 +X03|01M153|GHM|8 +X03|01M154|GHM|8 +X03|01M15T|GHM|8 +X03|01M15Z|GHM|8 +X03|01M161|GHM|8 +X03|01M162|GHM|8 +X03|01M163|GHM|8 +X03|01M164|GHM|8 +X03|01M16T|GHM|8 +X03|01M16Z|GHM|8 +X03|01M171|GHM|8 +X03|01M172|GHM|8 +X03|01M173|GHM|8 +X03|01M174|GHM|8 +X03|01M17T|GHM|8 +X03|01M17V|GHM|8 +X03|01M17W|GHM|8 +X03|01M221|GHM|8 +X03|01M222|GHM|8 +X03|01M223|GHM|8 +X03|01M224|GHM|8 +X03|01M22T|GHM|8 +X03|01M22Z|GHM|8 +X03|01M231|GHM|8 +X03|01M232|GHM|8 +X03|01M233|GHM|8 +X03|01M234|GHM|8 +X03|01M23Z|GHM|8 +X03|01M241|GHM|8 +X03|01M242|GHM|8 +X03|01M243|GHM|8 +X03|01M244|GHM|8 +X03|01M24T|GHM|8 +X03|01M24V|GHM|8 +X03|01M24W|GHM|8 +X03|01M251|GHM|8 +X03|01M252|GHM|8 +X03|01M253|GHM|8 +X03|01M254|GHM|8 +X03|01M25T|GHM|8 +X03|01M25V|GHM|8 +X03|01M25W|GHM|8 +X03|01M261|GHM|8 +X03|01M262|GHM|8 +X03|01M263|GHM|8 +X03|01M264|GHM|8 +X03|01M26T|GHM|8 +X03|01M271|GHM|8 +X03|01M272|GHM|8 +X03|01M273|GHM|8 +X03|01M274|GHM|8 +X03|01M27T|GHM|8 +X03|01M281|GHM|8 +X03|01M282|GHM|8 +X03|01M283|GHM|8 +X03|01M284|GHM|8 +X03|01M28T|GHM|8 +X03|01M291|GHM|8 +X03|01M292|GHM|8 +X03|01M293|GHM|8 +X03|01M294|GHM|8 +X03|01M301|GHM|8 +X03|01M302|GHM|8 +X03|01M303|GHM|8 +X03|01M304|GHM|8 +X03|01M30T|GHM|8 +X03|01M311|GHM|8 +X03|01M312|GHM|8 +X03|01M313|GHM|8 +X03|01M314|GHM|8 +X03|01M31T|GHM|8 +X03|01M32Z|GHM|8 +X03|01M331|GHM|8 +X03|01M332|GHM|8 +X03|01M333|GHM|8 +X03|01M334|GHM|8 +X03|01M34T|GHM|8 +X03|01M34Z|GHM|8 +X03|01M35T|GHM|8 +X03|01M35Z|GHM|8 +X03|01M36E|GHM|8 +X03|01M381|GHM|8 +X03|01M382|GHM|8 +X03|01M383|GHM|8 +X03|01M384|GHM|8 +X03|01M391|GHM|8 +X03|01M392|GHM|8 +X03|01M393|GHM|8 +X03|01M394|GHM|8 +X04|01M181|GHM|8 +X04|01M182|GHM|8 +X04|01M183|GHM|8 +X04|01M184|GHM|8 +X04|01M18T|GHM|8 +X04|01M18V|GHM|8 +X04|01M18W|GHM|8 +X04|01M191|GHM|8 +X04|01M192|GHM|8 +X04|01M193|GHM|8 +X04|01M194|GHM|8 +X04|01M19V|GHM|8 +X04|01M19W|GHM|8 +X04|01M201|GHM|8 +X04|01M202|GHM|8 +X04|01M203|GHM|8 +X04|01M204|GHM|8 +X04|01M20V|GHM|8 +X04|01M20W|GHM|8 +X05|08M02Z|GHM|8 +X05|08M041|GHM|8 +X05|08M042|GHM|8 +X05|08M043|GHM|8 +X05|08M044|GHM|8 +X05|08M04T|GHM|8 +X05|08M04V|GHM|8 +X05|08M04W|GHM|8 +X05|08M051|GHM|8 +X05|08M052|GHM|8 +X05|08M053|GHM|8 +X05|08M054|GHM|8 +X05|08M05T|GHM|8 +X05|08M05Z|GHM|8 +X05|08M061|GHM|8 +X05|08M062|GHM|8 +X05|08M063|GHM|8 +X05|08M064|GHM|8 +X05|08M06T|GHM|8 +X05|08M06Z|GHM|8 +X05|08M071|GHM|8 +X05|08M072|GHM|8 +X05|08M073|GHM|8 +X05|08M074|GHM|8 +X05|08M07T|GHM|8 +X05|08M07V|GHM|8 +X05|08M07W|GHM|8 +X05|08M081|GHM|8 +X05|08M082|GHM|8 +X05|08M083|GHM|8 +X05|08M084|GHM|8 +X05|08M08T|GHM|8 +X05|08M08Z|GHM|8 +X05|08M201|GHM|8 +X05|08M202|GHM|8 +X05|08M203|GHM|8 +X05|08M204|GHM|8 +X05|08M211|GHM|8 +X05|08M212|GHM|8 +X05|08M213|GHM|8 +X05|08M214|GHM|8 +X05|08M221|GHM|8 +X05|08M222|GHM|8 +X05|08M223|GHM|8 +X05|08M224|GHM|8 +X05|08M231|GHM|8 +X05|08M232|GHM|8 +X05|08M233|GHM|8 +X05|08M234|GHM|8 +X05|08M261|GHM|8 +X05|08M262|GHM|8 +X05|08M263|GHM|8 +X05|08M264|GHM|8 +X05|08M331|GHM|8 +X05|08M332|GHM|8 +X05|08M333|GHM|8 +X05|08M334|GHM|8 +X05|08M33T|GHM|8 +X05|08M371|GHM|8 +X05|08M372|GHM|8 +X05|08M373|GHM|8 +X05|08M374|GHM|8 +X05|08M37T|GHM|8 +X05|08M381|GHM|8 +X05|08M382|GHM|8 +X05|08M383|GHM|8 +X05|08M384|GHM|8 +X05|08M38T|GHM|8 +X05|21M061|GHM|8 +X05|21M062|GHM|8 +X05|21M063|GHM|8 +X05|21M064|GHM|8 +X05|21M06Z|GHM|8 +X05|21M071|GHM|8 +X05|21M072|GHM|8 +X05|21M073|GHM|8 +X05|21M074|GHM|8 +X05|21M07T|GHM|8 +X05|21M07V|GHM|8 +X05|21M07W|GHM|8 +X06|08M01S|GHM|8 +X06|08M091|GHM|8 +X06|08M092|GHM|8 +X06|08M093|GHM|8 +X06|08M094|GHM|8 +X06|08M09T|GHM|8 +X06|08M09Z|GHM|8 +X06|08M101|GHM|8 +X06|08M102|GHM|8 +X06|08M103|GHM|8 +X06|08M104|GHM|8 +X06|08M10T|GHM|8 +X06|08M10V|GHM|8 +X06|08M10W|GHM|8 +X06|08M13Z|GHM|8 +X06|08M141|GHM|8 +X06|08M142|GHM|8 +X06|08M143|GHM|8 +X06|08M144|GHM|8 +X06|08M14T|GHM|8 +X06|08M14V|GHM|8 +X06|08M14W|GHM|8 +X06|08M151|GHM|8 +X06|08M152|GHM|8 +X06|08M153|GHM|8 +X06|08M154|GHM|8 +X06|08M15T|GHM|8 +X06|08M15V|GHM|8 +X06|08M15W|GHM|8 +X06|08M16Z|GHM|8 +X06|08M17Z|GHM|8 +X06|08M181|GHM|8 +X06|08M182|GHM|8 +X06|08M183|GHM|8 +X06|08M184|GHM|8 +X06|08M18T|GHM|8 +X06|08M18Z|GHM|8 +X06|08M191|GHM|8 +X06|08M192|GHM|8 +X06|08M193|GHM|8 +X06|08M194|GHM|8 +X06|08M19T|GHM|8 +X06|08M19V|GHM|8 +X06|08M19W|GHM|8 +X06|08M241|GHM|8 +X06|08M242|GHM|8 +X06|08M243|GHM|8 +X06|08M244|GHM|8 +X06|08M24T|GHM|8 +X06|08M251|GHM|8 +X06|08M252|GHM|8 +X06|08M253|GHM|8 +X06|08M254|GHM|8 +X06|08M25T|GHM|8 +X06|08M271|GHM|8 +X06|08M272|GHM|8 +X06|08M273|GHM|8 +X06|08M274|GHM|8 +X06|08M27T|GHM|8 +X06|08M281|GHM|8 +X06|08M282|GHM|8 +X06|08M283|GHM|8 +X06|08M284|GHM|8 +X06|08M28T|GHM|8 +X06|08M291|GHM|8 +X06|08M292|GHM|8 +X06|08M293|GHM|8 +X06|08M294|GHM|8 +X06|08M29T|GHM|8 +X06|08M301|GHM|8 +X06|08M302|GHM|8 +X06|08M303|GHM|8 +X06|08M304|GHM|8 +X06|08M30T|GHM|8 +X06|08M311|GHM|8 +X06|08M312|GHM|8 +X06|08M313|GHM|8 +X06|08M314|GHM|8 +X06|08M31T|GHM|8 +X06|08M321|GHM|8 +X06|08M322|GHM|8 +X06|08M323|GHM|8 +X06|08M324|GHM|8 +X06|08M32T|GHM|8 +X06|08M341|GHM|8 +X06|08M342|GHM|8 +X06|08M343|GHM|8 +X06|08M344|GHM|8 +X06|08M34T|GHM|8 +X06|08M35Z|GHM|8 +X06|08M36T|GHM|8 +X06|08M36Z|GHM|8 +X07|05M041|GHM|8 +X07|05M042|GHM|8 +X07|05M043|GHM|8 +X07|05M044|GHM|8 +X07|05M04T|GHM|8 +X07|05M04V|GHM|8 +X07|05M04W|GHM|8 +X07|05M051|GHM|8 +X07|05M052|GHM|8 +X07|05M053|GHM|8 +X07|05M054|GHM|8 +X07|05M05T|GHM|8 +X07|05M05V|GHM|8 +X07|05M05W|GHM|8 +X07|05M061|GHM|8 +X07|05M062|GHM|8 +X07|05M063|GHM|8 +X07|05M064|GHM|8 +X07|05M06T|GHM|8 +X07|05M06V|GHM|8 +X07|05M06W|GHM|8 +X07|05M071|GHM|8 +X07|05M072|GHM|8 +X07|05M073|GHM|8 +X07|05M074|GHM|8 +X07|05M07T|GHM|8 +X07|05M07V|GHM|8 +X07|05M07W|GHM|8 +X07|05M081|GHM|8 +X07|05M082|GHM|8 +X07|05M083|GHM|8 +X07|05M084|GHM|8 +X07|05M08T|GHM|8 +X07|05M08V|GHM|8 +X07|05M08W|GHM|8 +X07|05M091|GHM|8 +X07|05M092|GHM|8 +X07|05M093|GHM|8 +X07|05M094|GHM|8 +X07|05M09T|GHM|8 +X07|05M09V|GHM|8 +X07|05M09W|GHM|8 +X07|05M101|GHM|8 +X07|05M102|GHM|8 +X07|05M103|GHM|8 +X07|05M104|GHM|8 +X07|05M10T|GHM|8 +X07|05M10Z|GHM|8 +X07|05M111|GHM|8 +X07|05M112|GHM|8 +X07|05M113|GHM|8 +X07|05M114|GHM|8 +X07|05M11T|GHM|8 +X07|05M11V|GHM|8 +X07|05M11W|GHM|8 +X07|05M121|GHM|8 +X07|05M122|GHM|8 +X07|05M123|GHM|8 +X07|05M124|GHM|8 +X07|05M12T|GHM|8 +X07|05M12V|GHM|8 +X07|05M12W|GHM|8 +X07|05M131|GHM|8 +X07|05M132|GHM|8 +X07|05M133|GHM|8 +X07|05M134|GHM|8 +X07|05M13T|GHM|8 +X07|05M13Z|GHM|8 +X07|05M141|GHM|8 +X07|05M142|GHM|8 +X07|05M143|GHM|8 +X07|05M144|GHM|8 +X07|05M14Z|GHM|8 +X07|05M151|GHM|8 +X07|05M152|GHM|8 +X07|05M153|GHM|8 +X07|05M154|GHM|8 +X07|05M15T|GHM|8 +X07|05M15Z|GHM|8 +X07|05M161|GHM|8 +X07|05M162|GHM|8 +X07|05M163|GHM|8 +X07|05M164|GHM|8 +X07|05M16T|GHM|8 +X07|05M16V|GHM|8 +X07|05M16W|GHM|8 +X07|05M171|GHM|8 +X07|05M172|GHM|8 +X07|05M173|GHM|8 +X07|05M174|GHM|8 +X07|05M17T|GHM|8 +X07|05M17V|GHM|8 +X07|05M17W|GHM|8 +X07|05M181|GHM|8 +X07|05M182|GHM|8 +X07|05M183|GHM|8 +X07|05M184|GHM|8 +X07|05M18T|GHM|8 +X07|05M18Z|GHM|8 +X07|05M191|GHM|8 +X07|05M192|GHM|8 +X07|05M193|GHM|8 +X07|05M194|GHM|8 +X07|05M20Z|GHM|8 +X07|05M21E|GHM|8 +X07|05M23T|GHM|8 +X07|05M23Z|GHM|8 +X08|04M021|GHM|8 +X08|04M022|GHM|8 +X08|04M023|GHM|8 +X08|04M024|GHM|8 +X08|04M02T|GHM|8 +X08|04M02V|GHM|8 +X08|04M02W|GHM|8 +X08|04M031|GHM|8 +X08|04M032|GHM|8 +X08|04M033|GHM|8 +X08|04M034|GHM|8 +X08|04M03T|GHM|8 +X08|04M03V|GHM|8 +X08|04M03W|GHM|8 +X08|04M041|GHM|8 +X08|04M042|GHM|8 +X08|04M043|GHM|8 +X08|04M044|GHM|8 +X08|04M04Z|GHM|8 +X08|04M051|GHM|8 +X08|04M052|GHM|8 +X08|04M053|GHM|8 +X08|04M054|GHM|8 +X08|04M05T|GHM|8 +X08|04M05V|GHM|8 +X08|04M05W|GHM|8 +X08|04M061|GHM|8 +X08|04M062|GHM|8 +X08|04M063|GHM|8 +X08|04M064|GHM|8 +X08|04M06T|GHM|8 +X08|04M06Z|GHM|8 +X08|04M071|GHM|8 +X08|04M072|GHM|8 +X08|04M073|GHM|8 +X08|04M074|GHM|8 +X08|04M07T|GHM|8 +X08|04M07V|GHM|8 +X08|04M07W|GHM|8 +X08|04M081|GHM|8 +X08|04M082|GHM|8 +X08|04M083|GHM|8 +X08|04M084|GHM|8 +X08|04M08T|GHM|8 +X08|04M08V|GHM|8 +X08|04M08W|GHM|8 +X08|04M091|GHM|8 +X08|04M092|GHM|8 +X08|04M093|GHM|8 +X08|04M094|GHM|8 +X08|04M09T|GHM|8 +X08|04M09V|GHM|8 +X08|04M09W|GHM|8 +X08|04M101|GHM|8 +X08|04M102|GHM|8 +X08|04M103|GHM|8 +X08|04M104|GHM|8 +X08|04M10T|GHM|8 +X08|04M10V|GHM|8 +X08|04M10W|GHM|8 +X08|04M111|GHM|8 +X08|04M112|GHM|8 +X08|04M113|GHM|8 +X08|04M114|GHM|8 +X08|04M11V|GHM|8 +X08|04M11W|GHM|8 +X08|04M121|GHM|8 +X08|04M122|GHM|8 +X08|04M123|GHM|8 +X08|04M124|GHM|8 +X08|04M12T|GHM|8 +X08|04M12V|GHM|8 +X08|04M12W|GHM|8 +X08|04M131|GHM|8 +X08|04M132|GHM|8 +X08|04M133|GHM|8 +X08|04M134|GHM|8 +X08|04M13T|GHM|8 +X08|04M13Z|GHM|8 +X08|04M141|GHM|8 +X08|04M142|GHM|8 +X08|04M143|GHM|8 +X08|04M144|GHM|8 +X08|04M14T|GHM|8 +X08|04M14V|GHM|8 +X08|04M14W|GHM|8 +X08|04M151|GHM|8 +X08|04M152|GHM|8 +X08|04M153|GHM|8 +X08|04M154|GHM|8 +X08|04M15T|GHM|8 +X08|04M15V|GHM|8 +X08|04M15W|GHM|8 +X08|04M161|GHM|8 +X08|04M162|GHM|8 +X08|04M163|GHM|8 +X08|04M164|GHM|8 +X08|04M16T|GHM|8 +X08|04M16V|GHM|8 +X08|04M16W|GHM|8 +X08|04M171|GHM|8 +X08|04M172|GHM|8 +X08|04M173|GHM|8 +X08|04M174|GHM|8 +X08|04M17T|GHM|8 +X08|04M17V|GHM|8 +X08|04M17W|GHM|8 +X08|04M181|GHM|8 +X08|04M182|GHM|8 +X08|04M183|GHM|8 +X08|04M184|GHM|8 +X08|04M18T|GHM|8 +X08|04M191|GHM|8 +X08|04M192|GHM|8 +X08|04M193|GHM|8 +X08|04M194|GHM|8 +X08|04M19T|GHM|8 +X08|04M201|GHM|8 +X08|04M202|GHM|8 +X08|04M203|GHM|8 +X08|04M204|GHM|8 +X08|04M20T|GHM|8 +X08|04M211|GHM|8 +X08|04M212|GHM|8 +X08|04M213|GHM|8 +X08|04M214|GHM|8 +X08|04M22Z|GHM|8 +X08|04M23T|GHM|8 +X08|04M23Z|GHM|8 +X08|04M24E|GHM|8 +X08|04M251|GHM|8 +X08|04M252|GHM|8 +X08|04M253|GHM|8 +X08|04M254|GHM|8 +X08|04M25T|GHM|8 +X08|04M261|GHM|8 +X08|04M262|GHM|8 +X08|04M263|GHM|8 +X08|04M264|GHM|8 +X08|04M26T|GHM|8 +X08|04M271|GHM|8 +X08|04M272|GHM|8 +X08|04M273|GHM|8 +X08|04M274|GHM|8 +X09|03M021|GHM|8 +X09|03M022|GHM|8 +X09|03M023|GHM|8 +X09|03M024|GHM|8 +X09|03M02T|GHM|8 +X09|03M02Z|GHM|8 +X09|03M031|GHM|8 +X09|03M032|GHM|8 +X09|03M033|GHM|8 +X09|03M034|GHM|8 +X09|03M03T|GHM|8 +X09|03M03Z|GHM|8 +X09|03M041|GHM|8 +X09|03M042|GHM|8 +X09|03M043|GHM|8 +X09|03M044|GHM|8 +X09|03M04T|GHM|8 +X09|03M04V|GHM|8 +X09|03M04W|GHM|8 +X09|03M051|GHM|8 +X09|03M052|GHM|8 +X09|03M053|GHM|8 +X09|03M054|GHM|8 +X09|03M05T|GHM|8 +X09|03M05Z|GHM|8 +X09|03M061|GHM|8 +X09|03M062|GHM|8 +X09|03M063|GHM|8 +X09|03M064|GHM|8 +X09|03M06T|GHM|8 +X09|03M06Z|GHM|8 +X09|03M071|GHM|8 +X09|03M072|GHM|8 +X09|03M073|GHM|8 +X09|03M074|GHM|8 +X09|03M07T|GHM|8 +X09|03M07V|GHM|8 +X09|03M07W|GHM|8 +X09|03M081|GHM|8 +X09|03M082|GHM|8 +X09|03M083|GHM|8 +X09|03M084|GHM|8 +X09|03M08T|GHM|8 +X09|03M08Z|GHM|8 +X09|03M091|GHM|8 +X09|03M092|GHM|8 +X09|03M093|GHM|8 +X09|03M094|GHM|8 +X09|03M09T|GHM|8 +X09|03M09V|GHM|8 +X09|03M09W|GHM|8 +X09|03M101|GHM|8 +X09|03M102|GHM|8 +X09|03M103|GHM|8 +X09|03M104|GHM|8 +X09|03M10T|GHM|8 +X09|03M10Z|GHM|8 +X09|03M111|GHM|8 +X09|03M112|GHM|8 +X09|03M113|GHM|8 +X09|03M114|GHM|8 +X09|03M11T|GHM|8 +X09|03M11V|GHM|8 +X09|03M11W|GHM|8 +X09|03M121|GHM|8 +X09|03M122|GHM|8 +X09|03M123|GHM|8 +X09|03M124|GHM|8 +X09|03M131|GHM|8 +X09|03M132|GHM|8 +X09|03M133|GHM|8 +X09|03M134|GHM|8 +X09|03M14Z|GHM|8 +X09|03M15T|GHM|8 +X09|03M15Z|GHM|8 +X10|02M021|GHM|8 +X10|02M022|GHM|8 +X10|02M023|GHM|8 +X10|02M024|GHM|8 +X10|02M02Z|GHM|8 +X10|02M031|GHM|8 +X10|02M032|GHM|8 +X10|02M033|GHM|8 +X10|02M034|GHM|8 +X10|02M03Z|GHM|8 +X10|02M041|GHM|8 +X10|02M042|GHM|8 +X10|02M043|GHM|8 +X10|02M044|GHM|8 +X10|02M04T|GHM|8 +X10|02M04Z|GHM|8 +X10|02M051|GHM|8 +X10|02M052|GHM|8 +X10|02M053|GHM|8 +X10|02M054|GHM|8 +X10|02M05T|GHM|8 +X10|02M05Z|GHM|8 +X10|02M071|GHM|8 +X10|02M072|GHM|8 +X10|02M073|GHM|8 +X10|02M074|GHM|8 +X10|02M07T|GHM|8 +X10|02M081|GHM|8 +X10|02M082|GHM|8 +X10|02M083|GHM|8 +X10|02M084|GHM|8 +X10|02M08T|GHM|8 +X10|02M09Z|GHM|8 +X10|02M10T|GHM|8 +X10|02M10Z|GHM|8 +X11|09M091|GHM|8 +X11|09M092|GHM|8 +X11|09M093|GHM|8 +X11|09M094|GHM|8 +X11|09M09T|GHM|8 +X11|09M09Z|GHM|8 +X11|09M101|GHM|8 +X11|09M102|GHM|8 +X11|09M103|GHM|8 +X11|09M104|GHM|8 +X11|09M10T|GHM|8 +X11|09M10V|GHM|8 +X11|09M10W|GHM|8 +X11|09M13Z|GHM|8 +X11|09M15Z|GHM|8 +X11|13M02Z|GHM|8 +X11|13M031|GHM|8 +X11|13M032|GHM|8 +X11|13M033|GHM|8 +X11|13M034|GHM|8 +X11|13M03T|GHM|8 +X11|13M03V|GHM|8 +X11|13M03W|GHM|8 +X11|13M041|GHM|8 +X11|13M042|GHM|8 +X11|13M043|GHM|8 +X11|13M044|GHM|8 +X11|13M04T|GHM|8 +X11|13M04V|GHM|8 +X11|13M04W|GHM|8 +X11|13M051|GHM|8 +X11|13M052|GHM|8 +X11|13M053|GHM|8 +X11|13M054|GHM|8 +X11|13M061|GHM|8 +X11|13M062|GHM|8 +X11|13M063|GHM|8 +X11|13M064|GHM|8 +X11|13M06T|GHM|8 +X11|13M071|GHM|8 +X11|13M072|GHM|8 +X11|13M073|GHM|8 +X11|13M074|GHM|8 +X11|13M081|GHM|8 +X11|13M082|GHM|8 +X11|13M083|GHM|8 +X11|13M084|GHM|8 +X11|13M09Z|GHM|8 +X11|13M10Z|GHM|8 +X12|11M021|GHM|8 +X12|11M022|GHM|8 +X12|11M023|GHM|8 +X12|11M024|GHM|8 +X12|11M02T|GHM|8 +X12|11M02V|GHM|8 +X12|11M02W|GHM|8 +X12|11M031|GHM|8 +X12|11M032|GHM|8 +X12|11M033|GHM|8 +X12|11M034|GHM|8 +X12|11M03T|GHM|8 +X12|11M03V|GHM|8 +X12|11M03W|GHM|8 +X12|11M041|GHM|8 +X12|11M042|GHM|8 +X12|11M043|GHM|8 +X12|11M044|GHM|8 +X12|11M04T|GHM|8 +X12|11M04V|GHM|8 +X12|11M04W|GHM|8 +X12|11M061|GHM|8 +X12|11M062|GHM|8 +X12|11M063|GHM|8 +X12|11M064|GHM|8 +X12|11M06T|GHM|8 +X12|11M06V|GHM|8 +X12|11M06W|GHM|8 +X12|11M071|GHM|8 +X12|11M072|GHM|8 +X12|11M073|GHM|8 +X12|11M074|GHM|8 +X12|11M07T|GHM|8 +X12|11M07V|GHM|8 +X12|11M07W|GHM|8 +X12|11M081|GHM|8 +X12|11M082|GHM|8 +X12|11M083|GHM|8 +X12|11M084|GHM|8 +X12|11M08T|GHM|8 +X12|11M08Z|GHM|8 +X12|11M101|GHM|8 +X12|11M102|GHM|8 +X12|11M103|GHM|8 +X12|11M104|GHM|8 +X12|11M10T|GHM|8 +X12|11M10V|GHM|8 +X12|11M10W|GHM|8 +X12|11M111|GHM|8 +X12|11M112|GHM|8 +X12|11M113|GHM|8 +X12|11M114|GHM|8 +X12|11M11Z|GHM|8 +X12|11M121|GHM|8 +X12|11M122|GHM|8 +X12|11M123|GHM|8 +X12|11M124|GHM|8 +X12|11M12T|GHM|8 +X12|11M12V|GHM|8 +X12|11M12W|GHM|8 +X12|11M151|GHM|8 +X12|11M152|GHM|8 +X12|11M153|GHM|8 +X12|11M154|GHM|8 +X12|11M15T|GHM|8 +X12|11M161|GHM|8 +X12|11M162|GHM|8 +X12|11M163|GHM|8 +X12|11M164|GHM|8 +X12|11M16T|GHM|8 +X12|11M171|GHM|8 +X12|11M172|GHM|8 +X12|11M173|GHM|8 +X12|11M174|GHM|8 +X12|11M18Z|GHM|8 +X12|11M19T|GHM|8 +X12|11M19Z|GHM|8 +X12|11M201|GHM|8 +X12|11M202|GHM|8 +X12|11M203|GHM|8 +X12|11M204|GHM|8 +X13|12M031|GHM|8 +X13|12M032|GHM|8 +X13|12M033|GHM|8 +X13|12M034|GHM|8 +X13|12M03T|GHM|8 +X13|12M03V|GHM|8 +X13|12M03W|GHM|8 +X13|12M041|GHM|8 +X13|12M042|GHM|8 +X13|12M043|GHM|8 +X13|12M044|GHM|8 +X13|12M04T|GHM|8 +X13|12M04V|GHM|8 +X13|12M04W|GHM|8 +X13|12M051|GHM|8 +X13|12M052|GHM|8 +X13|12M053|GHM|8 +X13|12M054|GHM|8 +X13|12M05T|GHM|8 +X13|12M05Z|GHM|8 +X13|12M061|GHM|8 +X13|12M062|GHM|8 +X13|12M063|GHM|8 +X13|12M064|GHM|8 +X13|12M06T|GHM|8 +X13|12M071|GHM|8 +X13|12M072|GHM|8 +X13|12M073|GHM|8 +X13|12M074|GHM|8 +X13|12M07T|GHM|8 +X13|12M08Z|GHM|8 +X13|12M09Z|GHM|8 +X14|16M061|GHM|8 +X14|16M062|GHM|8 +X14|16M063|GHM|8 +X14|16M064|GHM|8 +X14|16M06T|GHM|8 +X14|16M071|GHM|8 +X14|16M072|GHM|8 +X14|16M073|GHM|8 +X14|16M074|GHM|8 +X14|16M081|GHM|8 +X14|16M082|GHM|8 +X14|16M083|GHM|8 +X14|16M084|GHM|8 +X14|16M091|GHM|8 +X14|16M092|GHM|8 +X14|16M093|GHM|8 +X14|16M094|GHM|8 +X14|16M09T|GHM|8 +X14|16M101|GHM|8 +X14|16M102|GHM|8 +X14|16M103|GHM|8 +X14|16M104|GHM|8 +X14|16M10T|GHM|8 +X14|16M111|GHM|8 +X14|16M112|GHM|8 +X14|16M113|GHM|8 +X14|16M114|GHM|8 +X14|16M11T|GHM|8 +X14|16M121|GHM|8 +X14|16M122|GHM|8 +X14|16M123|GHM|8 +X14|16M124|GHM|8 +X14|16M12T|GHM|8 +X14|16M131|GHM|8 +X14|16M132|GHM|8 +X14|16M133|GHM|8 +X14|16M134|GHM|8 +X14|16M13T|GHM|8 +X14|16M14Z|GHM|8 +X14|16M15T|GHM|8 +X14|16M15Z|GHM|8 +X14|16M161|GHM|8 +X14|16M162|GHM|8 +X14|16M163|GHM|8 +X14|16M164|GHM|8 +X14|16M16T|GHM|8 +X14|16M171|GHM|8 +X14|16M172|GHM|8 +X14|16M173|GHM|8 +X14|16M174|GHM|8 +X14|16M17T|GHM|8 +X14|16M181|GHM|8 +X14|16M182|GHM|8 +X14|16M183|GHM|8 +X14|16M184|GHM|8 +X14|17M02Z|GHM|8 +X14|17M04Z|GHM|8 +X14|17M071|GHM|8 +X14|17M072|GHM|8 +X14|17M073|GHM|8 +X14|17M074|GHM|8 +X14|17M07T|GHM|8 +X14|17M07V|GHM|8 +X14|17M07W|GHM|8 +X14|17M081|GHM|8 +X14|17M082|GHM|8 +X14|17M083|GHM|8 +X14|17M084|GHM|8 +X14|17M08T|GHM|8 +X14|17M08Z|GHM|8 +X14|17M091|GHM|8 +X14|17M092|GHM|8 +X14|17M093|GHM|8 +X14|17M094|GHM|8 +X14|17M09T|GHM|8 +X14|17M09V|GHM|8 +X14|17M09W|GHM|8 +X14|17M111|GHM|8 +X14|17M112|GHM|8 +X14|17M113|GHM|8 +X14|17M114|GHM|8 +X14|17M11T|GHM|8 +X14|17M121|GHM|8 +X14|17M122|GHM|8 +X14|17M123|GHM|8 +X14|17M124|GHM|8 +X14|17M12T|GHM|8 +X14|17M131|GHM|8 +X14|17M132|GHM|8 +X14|17M133|GHM|8 +X14|17M134|GHM|8 +X14|17M13T|GHM|8 +X14|17M14Z|GHM|8 +X14|17M151|GHM|8 +X14|17M152|GHM|8 +X14|17M153|GHM|8 +X14|17M154|GHM|8 +X14|17M15T|GHM|8 +X14|17M161|GHM|8 +X14|17M162|GHM|8 +X14|17M163|GHM|8 +X14|17M164|GHM|8 +X14|17M16T|GHM|8 +X14|17M171|GHM|8 +X14|17M172|GHM|8 +X14|17M173|GHM|8 +X14|17M174|GHM|8 +X14|17M17T|GHM|8 +X15|10M021|GHM|8 +X15|10M022|GHM|8 +X15|10M023|GHM|8 +X15|10M024|GHM|8 +X15|10M02T|GHM|8 +X15|10M02V|GHM|8 +X15|10M02W|GHM|8 +X15|10M031|GHM|8 +X15|10M032|GHM|8 +X15|10M033|GHM|8 +X15|10M034|GHM|8 +X15|10M03T|GHM|8 +X15|10M03Z|GHM|8 +X15|10M06Z|GHM|8 +X15|10M071|GHM|8 +X15|10M072|GHM|8 +X15|10M073|GHM|8 +X15|10M074|GHM|8 +X15|10M07T|GHM|8 +X15|10M07V|GHM|8 +X15|10M07W|GHM|8 +X15|10M081|GHM|8 +X15|10M082|GHM|8 +X15|10M083|GHM|8 +X15|10M084|GHM|8 +X15|10M08T|GHM|8 +X15|10M091|GHM|8 +X15|10M092|GHM|8 +X15|10M093|GHM|8 +X15|10M094|GHM|8 +X15|10M09T|GHM|8 +X15|10M101|GHM|8 +X15|10M102|GHM|8 +X15|10M103|GHM|8 +X15|10M104|GHM|8 +X15|10M10T|GHM|8 +X15|10M111|GHM|8 +X15|10M112|GHM|8 +X15|10M113|GHM|8 +X15|10M114|GHM|8 +X15|10M11T|GHM|8 +X15|10M121|GHM|8 +X15|10M122|GHM|8 +X15|10M123|GHM|8 +X15|10M124|GHM|8 +X15|10M12T|GHM|8 +X15|10M13T|GHM|8 +X15|10M13Z|GHM|8 +X15|10M14T|GHM|8 +X15|10M14Z|GHM|8 +X15|10M151|GHM|8 +X15|10M152|GHM|8 +X15|10M153|GHM|8 +X15|10M154|GHM|8 +X15|10M15T|GHM|8 +X15|10M161|GHM|8 +X15|10M162|GHM|8 +X15|10M163|GHM|8 +X15|10M164|GHM|8 +X15|10M16T|GHM|8 +X15|10M171|GHM|8 +X15|10M172|GHM|8 +X15|10M173|GHM|8 +X15|10M174|GHM|8 +X15|10M17T|GHM|8 +X15|10M181|GHM|8 +X15|10M182|GHM|8 +X15|10M183|GHM|8 +X15|10M184|GHM|8 +X15|10M18T|GHM|8 +X15|10M191|GHM|8 +X15|10M192|GHM|8 +X15|10M193|GHM|8 +X15|10M194|GHM|8 +X15|10M201|GHM|8 +X15|10M202|GHM|8 +X15|10M203|GHM|8 +X15|10M204|GHM|8 +X15|23M08J|GHM|8 +X16|09M021|GHM|8 +X16|09M022|GHM|8 +X16|09M023|GHM|8 +X16|09M024|GHM|8 +X16|09M02T|GHM|8 +X16|09M02Z|GHM|8 +X16|09M031|GHM|8 +X16|09M032|GHM|8 +X16|09M033|GHM|8 +X16|09M034|GHM|8 +X16|09M03T|GHM|8 +X16|09M03V|GHM|8 +X16|09M03W|GHM|8 +X16|09M041|GHM|8 +X16|09M042|GHM|8 +X16|09M043|GHM|8 +X16|09M044|GHM|8 +X16|09M04T|GHM|8 +X16|09M04Z|GHM|8 +X16|09M051|GHM|8 +X16|09M052|GHM|8 +X16|09M053|GHM|8 +X16|09M054|GHM|8 +X16|09M05T|GHM|8 +X16|09M05V|GHM|8 +X16|09M05W|GHM|8 +X16|09M061|GHM|8 +X16|09M062|GHM|8 +X16|09M063|GHM|8 +X16|09M064|GHM|8 +X16|09M06T|GHM|8 +X16|09M06Z|GHM|8 +X16|09M071|GHM|8 +X16|09M072|GHM|8 +X16|09M073|GHM|8 +X16|09M074|GHM|8 +X16|09M07T|GHM|8 +X16|09M07V|GHM|8 +X16|09M07W|GHM|8 +X16|09M081|GHM|8 +X16|09M082|GHM|8 +X16|09M083|GHM|8 +X16|09M084|GHM|8 +X16|09M08T|GHM|8 +X16|09M08V|GHM|8 +X16|09M08W|GHM|8 +X16|09M111|GHM|8 +X16|09M112|GHM|8 +X16|09M113|GHM|8 +X16|09M114|GHM|8 +X16|09M11T|GHM|8 +X16|09M12Z|GHM|8 +X16|09M14T|GHM|8 +X16|09M14Z|GHM|8 +X17|22M021|GHM|8 +X17|22M022|GHM|8 +X17|22M023|GHM|8 +X17|22M024|GHM|8 +X17|22M02T|GHM|8 +X17|22M02Z|GHM|8 +X17|22Z021|GHM|8 +X17|22Z022|GHM|8 +X17|22Z023|GHM|8 +X17|22Z024|GHM|8 +X17|22Z02Z|GHM|8 +X17|22Z03Z|GHM|8 +X18|23M02T|GHM|8 +X18|23M02Z|GHM|8 +X18|23M04Z|GHM|8 +X18|23M05Z|GHM|8 +X18|23M101|GHM|8 +X18|23M102|GHM|8 +X18|23M103|GHM|8 +X18|23M104|GHM|8 +X18|23M10T|GHM|8 +X18|23M13Z|GHM|8 +X18|23M14Z|GHM|8 +X18|23M16T|GHM|8 +X18|23M16Z|GHM|8 +X18|23M18Z|GHM|8 +X18|23M19Z|GHM|8 +X18|23M21T|GHM|8 +X18|23M21Z|GHM|8 +X19|18M021|GHM|8 +X19|18M022|GHM|8 +X19|18M023|GHM|8 +X19|18M024|GHM|8 +X19|18M02V|GHM|8 +X19|18M02W|GHM|8 +X19|18M031|GHM|8 +X19|18M032|GHM|8 +X19|18M033|GHM|8 +X19|18M034|GHM|8 +X19|18M03T|GHM|8 +X19|18M03Z|GHM|8 +X19|18M041|GHM|8 +X19|18M042|GHM|8 +X19|18M043|GHM|8 +X19|18M044|GHM|8 +X19|18M04T|GHM|8 +X19|18M04V|GHM|8 +X19|18M04W|GHM|8 +X19|18M061|GHM|8 +X19|18M062|GHM|8 +X19|18M063|GHM|8 +X19|18M064|GHM|8 +X19|18M06Z|GHM|8 +X19|18M071|GHM|8 +X19|18M072|GHM|8 +X19|18M073|GHM|8 +X19|18M074|GHM|8 +X19|18M07T|GHM|8 +X19|18M07V|GHM|8 +X19|18M07W|GHM|8 +X19|18M091|GHM|8 +X19|18M092|GHM|8 +X19|18M093|GHM|8 +X19|18M094|GHM|8 +X19|18M09T|GHM|8 +X19|18M101|GHM|8 +X19|18M102|GHM|8 +X19|18M103|GHM|8 +X19|18M104|GHM|8 +X19|18M10T|GHM|8 +X19|18M111|GHM|8 +X19|18M112|GHM|8 +X19|18M113|GHM|8 +X19|18M114|GHM|8 +X19|18M11T|GHM|8 +X19|18M12Z|GHM|8 +X19|18M13E|GHM|8 +X19|18M14T|GHM|8 +X19|18M14Z|GHM|8 +X19|18M151|GHM|8 +X19|18M152|GHM|8 +X19|18M153|GHM|8 +X19|18M154|GHM|8 +X19|23M07J|GHM|8 +X19|25M02A|GHM|8 +X19|25M02B|GHM|8 +X19|25M02C|GHM|8 +X19|25M02T|GHM|8 +X19|25Z02E|GHM|8 +X19|25Z031|GHM|8 +X19|25Z032|GHM|8 +X19|25Z033|GHM|8 +X19|25Z034|GHM|8 +X19|25Z03Z|GHM|8 +X20|19M021|GHM|8 +X20|19M022|GHM|8 +X20|19M023|GHM|8 +X20|19M024|GHM|8 +X20|19M02T|GHM|8 +X20|19M02V|GHM|8 +X20|19M02W|GHM|8 +X20|19M03Z|GHM|8 +X20|19M04Z|GHM|8 +X20|19M05Z|GHM|8 +X20|19M061|GHM|8 +X20|19M062|GHM|8 +X20|19M063|GHM|8 +X20|19M064|GHM|8 +X20|19M06T|GHM|8 +X20|19M06V|GHM|8 +X20|19M06W|GHM|8 +X20|19M071|GHM|8 +X20|19M072|GHM|8 +X20|19M073|GHM|8 +X20|19M074|GHM|8 +X20|19M07T|GHM|8 +X20|19M07V|GHM|8 +X20|19M07W|GHM|8 +X20|19M08Z|GHM|8 +X20|19M09Z|GHM|8 +X20|19M101|GHM|8 +X20|19M102|GHM|8 +X20|19M103|GHM|8 +X20|19M104|GHM|8 +X20|19M10T|GHM|8 +X20|19M10Z|GHM|8 +X20|19M111|GHM|8 +X20|19M112|GHM|8 +X20|19M113|GHM|8 +X20|19M114|GHM|8 +X20|19M11T|GHM|8 +X20|19M11V|GHM|8 +X20|19M11W|GHM|8 +X20|19M121|GHM|8 +X20|19M122|GHM|8 +X20|19M123|GHM|8 +X20|19M124|GHM|8 +X20|19M12T|GHM|8 +X20|19M131|GHM|8 +X20|19M132|GHM|8 +X20|19M133|GHM|8 +X20|19M134|GHM|8 +X20|19M13T|GHM|8 +X20|19M141|GHM|8 +X20|19M142|GHM|8 +X20|19M143|GHM|8 +X20|19M144|GHM|8 +X20|19M14T|GHM|8 +X20|19M151|GHM|8 +X20|19M152|GHM|8 +X20|19M153|GHM|8 +X20|19M154|GHM|8 +X20|19M15T|GHM|8 +X20|19M161|GHM|8 +X20|19M162|GHM|8 +X20|19M163|GHM|8 +X20|19M164|GHM|8 +X20|19M16T|GHM|8 +X20|19M171|GHM|8 +X20|19M172|GHM|8 +X20|19M173|GHM|8 +X20|19M174|GHM|8 +X20|19M181|GHM|8 +X20|19M182|GHM|8 +X20|19M183|GHM|8 +X20|19M184|GHM|8 +X20|19M18T|GHM|8 +X20|19M191|GHM|8 +X20|19M192|GHM|8 +X20|19M193|GHM|8 +X20|19M194|GHM|8 +X20|19M19T|GHM|8 +X20|19M201|GHM|8 +X20|19M202|GHM|8 +X20|19M203|GHM|8 +X20|19M204|GHM|8 +X20|19M20T|GHM|8 +X20|19M21Z|GHM|8 +X20|19M22T|GHM|8 +X20|19M22Z|GHM|8 +X21|20Z021|GHM|8 +X21|20Z022|GHM|8 +X21|20Z023|GHM|8 +X21|20Z024|GHM|8 +X21|20Z02T|GHM|8 +X21|20Z02Z|GHM|8 +X21|20Z031|GHM|8 +X21|20Z032|GHM|8 +X21|20Z033|GHM|8 +X21|20Z034|GHM|8 +X21|20Z03Z|GHM|8 +X21|20Z041|GHM|8 +X21|20Z042|GHM|8 +X21|20Z043|GHM|8 +X21|20Z044|GHM|8 +X21|20Z04T|GHM|8 +X21|20Z04Z|GHM|8 +X21|20Z051|GHM|8 +X21|20Z052|GHM|8 +X21|20Z053|GHM|8 +X21|20Z054|GHM|8 +X21|20Z05Z|GHM|8 +X21|20Z061|GHM|8 +X21|20Z062|GHM|8 +X21|20Z063|GHM|8 +X21|20Z064|GHM|8 +X21|20Z06T|GHM|8 +X21|20Z06V|GHM|8 +X21|20Z06W|GHM|8 +X21|21M021|GHM|8 +X21|21M022|GHM|8 +X21|21M023|GHM|8 +X21|21M024|GHM|8 +X21|21M02T|GHM|8 +X21|21M02Z|GHM|8 +X21|21M041|GHM|8 +X21|21M042|GHM|8 +X21|21M043|GHM|8 +X21|21M044|GHM|8 +X21|21M04T|GHM|8 +X21|21M04Z|GHM|8 +X21|21M051|GHM|8 +X21|21M052|GHM|8 +X21|21M053|GHM|8 +X21|21M054|GHM|8 +X21|21M05T|GHM|8 +X21|21M05Z|GHM|8 +X21|21M101|GHM|8 +X21|21M102|GHM|8 +X21|21M103|GHM|8 +X21|21M104|GHM|8 +X21|21M10T|GHM|8 +X21|21M111|GHM|8 +X21|21M112|GHM|8 +X21|21M113|GHM|8 +X21|21M114|GHM|8 +X21|21M11T|GHM|8 +X21|21M121|GHM|8 +X21|21M122|GHM|8 +X21|21M123|GHM|8 +X21|21M124|GHM|8 +X21|21M141|GHM|8 +X21|21M142|GHM|8 +X21|21M143|GHM|8 +X21|21M144|GHM|8 +X21|21M14T|GHM|8 +X21|21M161|GHM|8 +X21|21M162|GHM|8 +X21|21M163|GHM|8 +X21|21M164|GHM|8 +X21|21M16T|GHM|8 +X22|01M211|GHM|8 +X22|01M212|GHM|8 +X22|01M213|GHM|8 +X22|01M214|GHM|8 +X22|01M21T|GHM|8 +X22|01M21Z|GHM|8 +X22|23Z02T|GHM|8 +X22|23Z02Z|GHM|8 +X23|17M051|GHM|8 +X23|17M052|GHM|8 +X23|17M053|GHM|8 +X23|17M054|GHM|8 +X23|17M05Z|GHM|8 +X23|17M061|GHM|8 +X23|17M062|GHM|8 +X23|17M063|GHM|8 +X23|17M064|GHM|8 +X23|17M06T|GHM|8 +X23|17M06V|GHM|8 +X23|17M06W|GHM|8 +X23|23M091|GHM|8 +X23|23M092|GHM|8 +X23|23M093|GHM|8 +X23|23M094|GHM|8 +X24|01M37E|GHM|8 +X24|05M22E|GHM|8 +X24|21M131|GHM|8 +X24|21M132|GHM|8 +X24|21M133|GHM|8 +X24|21M134|GHM|8 +X24|21M151|GHM|8 +X24|21M152|GHM|8 +X24|21M153|GHM|8 +X24|21M154|GHM|8 +X24|21M15T|GHM|8 +X24|23M061|GHM|8 +X24|23M062|GHM|8 +X24|23M063|GHM|8 +X24|23M064|GHM|8 +X24|23M06T|GHM|8 +X24|23M06Z|GHM|8 +X24|23M111|GHM|8 +X24|23M112|GHM|8 +X24|23M113|GHM|8 +X24|23M114|GHM|8 +X24|23M11T|GHM|8 +X24|23M15Z|GHM|8 +X24|23M20T|GHM|8 +X24|23M20Z|GHM|8 +X25|26M021|GHM|8 +X25|26M022|GHM|8 +X25|26M023|GHM|8 +X25|26M024|GHM|8 +X25|26M02Z|GHM|8 +X26|09Z02A|GHM|8 +X26|09Z02B|GHM|8 +X26|09Z02Z|GHM|8 +X26|23Z03Z|GHM|8 +Z99|90C01Z|GHM|8 +Z99|90H01Z|GHM|8 +Z99|90H02Z|GHM|8 +Z99|90H03Z|GHM|8 +Z99|90Z00Z|GHM|8 +Z99|90Z01Z|GHM|8 +Z99|90Z02Z|GHM|8 +Z99|90Z03Z|GHM|8 +Z99|999999|GHM|8 +Z99|ZZZZZZ|GHM|8 +D01|06C021|GHM|9 +D01|06C022|GHM|9 +D01|06C023|GHM|9 +D01|06C024|GHM|9 +D01|06C02Z|GHM|9 +D01|06C031|GHM|9 +D01|06C032|GHM|9 +D01|06C033|GHM|9 +D01|06C034|GHM|9 +D01|06C03V|GHM|9 +D01|06C03W|GHM|9 +D01|06C041|GHM|9 +D01|06C042|GHM|9 +D01|06C043|GHM|9 +D01|06C044|GHM|9 +D01|06C04V|GHM|9 +D01|06C04W|GHM|9 +D01|06C051|GHM|9 +D01|06C052|GHM|9 +D01|06C053|GHM|9 +D01|06C054|GHM|9 +D01|06C05Z|GHM|9 +D01|06C071|GHM|9 +D01|06C072|GHM|9 +D01|06C073|GHM|9 +D01|06C074|GHM|9 +D01|06C07V|GHM|9 +D01|06C07W|GHM|9 +D01|06C081|GHM|9 +D01|06C082|GHM|9 +D01|06C083|GHM|9 +D01|06C084|GHM|9 +D01|06C08V|GHM|9 +D01|06C08W|GHM|9 +D01|06C091|GHM|9 +D01|06C092|GHM|9 +D01|06C093|GHM|9 +D01|06C094|GHM|9 +D01|06C09V|GHM|9 +D01|06C09W|GHM|9 +D01|06C101|GHM|9 +D01|06C102|GHM|9 +D01|06C103|GHM|9 +D01|06C104|GHM|9 +D01|06C10J|GHM|9 +D01|06C10Z|GHM|9 +D01|06C111|GHM|9 +D01|06C112|GHM|9 +D01|06C113|GHM|9 +D01|06C114|GHM|9 +D01|06C11J|GHM|9 +D01|06C11V|GHM|9 +D01|06C11W|GHM|9 +D01|06C121|GHM|9 +D01|06C122|GHM|9 +D01|06C123|GHM|9 +D01|06C124|GHM|9 +D01|06C12J|GHM|9 +D01|06C12V|GHM|9 +D01|06C12W|GHM|9 +D01|06C131|GHM|9 +D01|06C132|GHM|9 +D01|06C133|GHM|9 +D01|06C134|GHM|9 +D01|06C13V|GHM|9 +D01|06C13W|GHM|9 +D01|06C141|GHM|9 +D01|06C142|GHM|9 +D01|06C143|GHM|9 +D01|06C144|GHM|9 +D01|06C14J|GHM|9 +D01|06C14V|GHM|9 +D01|06C14W|GHM|9 +D01|06C151|GHM|9 +D01|06C152|GHM|9 +D01|06C153|GHM|9 +D01|06C154|GHM|9 +D01|06C15V|GHM|9 +D01|06C15W|GHM|9 +D01|06C161|GHM|9 +D01|06C162|GHM|9 +D01|06C163|GHM|9 +D01|06C164|GHM|9 +D01|06C16V|GHM|9 +D01|06C16W|GHM|9 +D01|06C191|GHM|9 +D01|06C192|GHM|9 +D01|06C193|GHM|9 +D01|06C194|GHM|9 +D01|06C19J|GHM|9 +D01|06C201|GHM|9 +D01|06C202|GHM|9 +D01|06C203|GHM|9 +D01|06C204|GHM|9 +D01|06C211|GHM|9 +D01|06C212|GHM|9 +D01|06C213|GHM|9 +D01|06C214|GHM|9 +D01|06C221|GHM|9 +D01|06C222|GHM|9 +D01|06C223|GHM|9 +D01|06C224|GHM|9 +D01|06C231|GHM|9 +D01|06C232|GHM|9 +D01|06C233|GHM|9 +D01|06C234|GHM|9 +D01|06C23J|GHM|9 +D01|06C241|GHM|9 +D01|06C242|GHM|9 +D01|06C243|GHM|9 +D01|06C244|GHM|9 +D01|06C24J|GHM|9 +D01|06C251|GHM|9 +D01|06C252|GHM|9 +D01|06C253|GHM|9 +D01|06C254|GHM|9 +D01|06C25J|GHM|9 +D01|06K02Z|GHM|9 +D01|06K03J|GHM|9 +D01|06K04J|GHM|9 +D01|06K05J|GHM|9 +D01|06K06J|GHM|9 +D01|06M021|GHM|9 +D01|06M022|GHM|9 +D01|06M023|GHM|9 +D01|06M024|GHM|9 +D01|06M02T|GHM|9 +D01|06M02V|GHM|9 +D01|06M02W|GHM|9 +D01|06M031|GHM|9 +D01|06M032|GHM|9 +D01|06M033|GHM|9 +D01|06M034|GHM|9 +D01|06M03T|GHM|9 +D01|06M03V|GHM|9 +D01|06M03W|GHM|9 +D01|06M041|GHM|9 +D01|06M042|GHM|9 +D01|06M043|GHM|9 +D01|06M044|GHM|9 +D01|06M04T|GHM|9 +D01|06M04V|GHM|9 +D01|06M04W|GHM|9 +D01|06M051|GHM|9 +D01|06M052|GHM|9 +D01|06M053|GHM|9 +D01|06M054|GHM|9 +D01|06M05T|GHM|9 +D01|06M05V|GHM|9 +D01|06M05W|GHM|9 +D01|06M061|GHM|9 +D01|06M062|GHM|9 +D01|06M063|GHM|9 +D01|06M064|GHM|9 +D01|06M06T|GHM|9 +D01|06M06V|GHM|9 +D01|06M06W|GHM|9 +D01|06M071|GHM|9 +D01|06M072|GHM|9 +D01|06M073|GHM|9 +D01|06M074|GHM|9 +D01|06M07T|GHM|9 +D01|06M07V|GHM|9 +D01|06M07W|GHM|9 +D01|06M081|GHM|9 +D01|06M082|GHM|9 +D01|06M083|GHM|9 +D01|06M084|GHM|9 +D01|06M08T|GHM|9 +D01|06M08Z|GHM|9 +D01|06M091|GHM|9 +D01|06M092|GHM|9 +D01|06M093|GHM|9 +D01|06M094|GHM|9 +D01|06M09T|GHM|9 +D01|06M09V|GHM|9 +D01|06M09W|GHM|9 +D01|06M101|GHM|9 +D01|06M102|GHM|9 +D01|06M103|GHM|9 +D01|06M104|GHM|9 +D01|06M10Z|GHM|9 +D01|06M111|GHM|9 +D01|06M112|GHM|9 +D01|06M113|GHM|9 +D01|06M114|GHM|9 +D01|06M11T|GHM|9 +D01|06M11V|GHM|9 +D01|06M11W|GHM|9 +D01|06M121|GHM|9 +D01|06M122|GHM|9 +D01|06M123|GHM|9 +D01|06M124|GHM|9 +D01|06M12T|GHM|9 +D01|06M131|GHM|9 +D01|06M132|GHM|9 +D01|06M133|GHM|9 +D01|06M134|GHM|9 +D01|06M13T|GHM|9 +D01|06M141|GHM|9 +D01|06M142|GHM|9 +D01|06M143|GHM|9 +D01|06M144|GHM|9 +D01|06M15Z|GHM|9 +D01|06M16Z|GHM|9 +D01|06M17T|GHM|9 +D01|06M17Z|GHM|9 +D01|06M18T|GHM|9 +D01|06M18Z|GHM|9 +D01|06M191|GHM|9 +D01|06M192|GHM|9 +D01|06M193|GHM|9 +D01|06M194|GHM|9 +D01|06M201|GHM|9 +D01|06M202|GHM|9 +D01|06M203|GHM|9 +D01|06M204|GHM|9 +D01|06M20T|GHM|9 +D01|06M211|GHM|9 +D01|06M212|GHM|9 +D01|06M213|GHM|9 +D01|06M214|GHM|9 +D01|07C061|GHM|9 +D01|07C062|GHM|9 +D01|07C063|GHM|9 +D01|07C064|GHM|9 +D01|07C06Z|GHM|9 +D01|07C071|GHM|9 +D01|07C072|GHM|9 +D01|07C073|GHM|9 +D01|07C074|GHM|9 +D01|07C07Z|GHM|9 +D01|07C081|GHM|9 +D01|07C082|GHM|9 +D01|07C083|GHM|9 +D01|07C084|GHM|9 +D01|07C08Z|GHM|9 +D01|07C091|GHM|9 +D01|07C092|GHM|9 +D01|07C093|GHM|9 +D01|07C094|GHM|9 +D01|07C09V|GHM|9 +D01|07C09W|GHM|9 +D01|07C101|GHM|9 +D01|07C102|GHM|9 +D01|07C103|GHM|9 +D01|07C104|GHM|9 +D01|07C10V|GHM|9 +D01|07C10W|GHM|9 +D01|07C111|GHM|9 +D01|07C112|GHM|9 +D01|07C113|GHM|9 +D01|07C114|GHM|9 +D01|07C11V|GHM|9 +D01|07C11W|GHM|9 +D01|07C121|GHM|9 +D01|07C122|GHM|9 +D01|07C123|GHM|9 +D01|07C124|GHM|9 +D01|07C12V|GHM|9 +D01|07C12W|GHM|9 +D01|07C131|GHM|9 +D01|07C132|GHM|9 +D01|07C133|GHM|9 +D01|07C134|GHM|9 +D01|07C141|GHM|9 +D01|07C142|GHM|9 +D01|07C143|GHM|9 +D01|07C144|GHM|9 +D01|07C14J|GHM|9 +D01|07K02Z|GHM|9 +D01|07K04J|GHM|9 +D01|07K05J|GHM|9 +D01|07K061|GHM|9 +D01|07K062|GHM|9 +D01|07K063|GHM|9 +D01|07K064|GHM|9 +D01|07M021|GHM|9 +D01|07M022|GHM|9 +D01|07M023|GHM|9 +D01|07M024|GHM|9 +D01|07M02T|GHM|9 +D01|07M02V|GHM|9 +D01|07M02W|GHM|9 +D01|07M041|GHM|9 +D01|07M042|GHM|9 +D01|07M043|GHM|9 +D01|07M044|GHM|9 +D01|07M04T|GHM|9 +D01|07M04V|GHM|9 +D01|07M04W|GHM|9 +D01|07M061|GHM|9 +D01|07M062|GHM|9 +D01|07M063|GHM|9 +D01|07M064|GHM|9 +D01|07M06T|GHM|9 +D01|07M06V|GHM|9 +D01|07M06W|GHM|9 +D01|07M071|GHM|9 +D01|07M072|GHM|9 +D01|07M073|GHM|9 +D01|07M074|GHM|9 +D01|07M07T|GHM|9 +D01|07M081|GHM|9 +D01|07M082|GHM|9 +D01|07M083|GHM|9 +D01|07M084|GHM|9 +D01|07M08T|GHM|9 +D01|07M091|GHM|9 +D01|07M092|GHM|9 +D01|07M093|GHM|9 +D01|07M094|GHM|9 +D01|07M09T|GHM|9 +D01|07M101|GHM|9 +D01|07M102|GHM|9 +D01|07M103|GHM|9 +D01|07M104|GHM|9 +D01|07M10T|GHM|9 +D01|07M111|GHM|9 +D01|07M112|GHM|9 +D01|07M113|GHM|9 +D01|07M114|GHM|9 +D01|07M11T|GHM|9 +D01|07M121|GHM|9 +D01|07M122|GHM|9 +D01|07M123|GHM|9 +D01|07M124|GHM|9 +D01|07M13Z|GHM|9 +D01|07M14T|GHM|9 +D01|07M14Z|GHM|9 +D01|07M151|GHM|9 +D01|07M152|GHM|9 +D01|07M153|GHM|9 +D01|07M154|GHM|9 +D01|07M15T|GHM|9 +D01|07M161|GHM|9 +D01|07M162|GHM|9 +D01|07M163|GHM|9 +D01|07M164|GHM|9 +D01|09C081|GHM|9 +D01|09C082|GHM|9 +D01|09C083|GHM|9 +D01|09C084|GHM|9 +D01|09C08J|GHM|9 +D01|09C08Z|GHM|9 +D01|09C131|GHM|9 +D01|09C132|GHM|9 +D01|09C133|GHM|9 +D01|09C134|GHM|9 +D01|09C13J|GHM|9 +D01|10C04Z|GHM|9 +D01|10C091|GHM|9 +D01|10C092|GHM|9 +D01|10C093|GHM|9 +D01|10C094|GHM|9 +D01|10C09Z|GHM|9 +D01|10C131|GHM|9 +D01|10C132|GHM|9 +D01|10C133|GHM|9 +D01|10C134|GHM|9 +D01|10C13Z|GHM|9 +D01|16C021|GHM|9 +D01|16C022|GHM|9 +D01|16C023|GHM|9 +D01|16C024|GHM|9 +D01|16C02Z|GHM|9 +D02|01C07Z|GHM|9 +D02|01C131|GHM|9 +D02|01C132|GHM|9 +D02|01C133|GHM|9 +D02|01C134|GHM|9 +D02|01C13J|GHM|9 +D02|01C13Z|GHM|9 +D02|01C141|GHM|9 +D02|01C142|GHM|9 +D02|01C143|GHM|9 +D02|01C144|GHM|9 +D02|01C14J|GHM|9 +D02|01C151|GHM|9 +D02|01C152|GHM|9 +D02|01C153|GHM|9 +D02|01C154|GHM|9 +D02|01C15J|GHM|9 +D02|05C121|GHM|9 +D02|05C122|GHM|9 +D02|05C123|GHM|9 +D02|05C124|GHM|9 +D02|05C12V|GHM|9 +D02|05C12W|GHM|9 +D02|05C131|GHM|9 +D02|05C132|GHM|9 +D02|05C133|GHM|9 +D02|05C134|GHM|9 +D02|05C13J|GHM|9 +D02|05C13V|GHM|9 +D02|05C13W|GHM|9 +D02|08C021|GHM|9 +D02|08C022|GHM|9 +D02|08C023|GHM|9 +D02|08C024|GHM|9 +D02|08C02Z|GHM|9 +D02|08C041|GHM|9 +D02|08C042|GHM|9 +D02|08C043|GHM|9 +D02|08C044|GHM|9 +D02|08C04Z|GHM|9 +D02|08C061|GHM|9 +D02|08C062|GHM|9 +D02|08C063|GHM|9 +D02|08C064|GHM|9 +D02|08C06Z|GHM|9 +D02|08C08Z|GHM|9 +D02|08C121|GHM|9 +D02|08C122|GHM|9 +D02|08C123|GHM|9 +D02|08C124|GHM|9 +D02|08C12J|GHM|9 +D02|08C12Z|GHM|9 +D02|08C131|GHM|9 +D02|08C132|GHM|9 +D02|08C133|GHM|9 +D02|08C134|GHM|9 +D02|08C13J|GHM|9 +D02|08C13Z|GHM|9 +D02|08C141|GHM|9 +D02|08C142|GHM|9 +D02|08C143|GHM|9 +D02|08C144|GHM|9 +D02|08C14J|GHM|9 +D02|08C14Z|GHM|9 +D02|08C17Z|GHM|9 +D02|08C19Z|GHM|9 +D02|08C221|GHM|9 +D02|08C222|GHM|9 +D02|08C223|GHM|9 +D02|08C224|GHM|9 +D02|08C22Z|GHM|9 +D02|08C241|GHM|9 +D02|08C242|GHM|9 +D02|08C243|GHM|9 +D02|08C244|GHM|9 +D02|08C24Z|GHM|9 +D02|08C251|GHM|9 +D02|08C252|GHM|9 +D02|08C253|GHM|9 +D02|08C254|GHM|9 +D02|08C25Z|GHM|9 +D02|08C26Z|GHM|9 +D02|08C291|GHM|9 +D02|08C292|GHM|9 +D02|08C293|GHM|9 +D02|08C294|GHM|9 +D02|08C29J|GHM|9 +D02|08C29Z|GHM|9 +D02|08C311|GHM|9 +D02|08C312|GHM|9 +D02|08C313|GHM|9 +D02|08C314|GHM|9 +D02|08C321|GHM|9 +D02|08C322|GHM|9 +D02|08C323|GHM|9 +D02|08C324|GHM|9 +D02|08C32J|GHM|9 +D02|08C331|GHM|9 +D02|08C332|GHM|9 +D02|08C333|GHM|9 +D02|08C334|GHM|9 +D02|08C341|GHM|9 +D02|08C342|GHM|9 +D02|08C343|GHM|9 +D02|08C344|GHM|9 +D02|08C34J|GHM|9 +D02|08C351|GHM|9 +D02|08C352|GHM|9 +D02|08C353|GHM|9 +D02|08C354|GHM|9 +D02|08C35J|GHM|9 +D02|08C361|GHM|9 +D02|08C362|GHM|9 +D02|08C363|GHM|9 +D02|08C364|GHM|9 +D02|08C36J|GHM|9 +D02|08C371|GHM|9 +D02|08C372|GHM|9 +D02|08C373|GHM|9 +D02|08C374|GHM|9 +D02|08C37J|GHM|9 +D02|08C381|GHM|9 +D02|08C382|GHM|9 +D02|08C383|GHM|9 +D02|08C384|GHM|9 +D02|08C38J|GHM|9 +D02|08C391|GHM|9 +D02|08C392|GHM|9 +D02|08C393|GHM|9 +D02|08C394|GHM|9 +D02|08C39J|GHM|9 +D02|08C401|GHM|9 +D02|08C402|GHM|9 +D02|08C403|GHM|9 +D02|08C404|GHM|9 +D02|08C40J|GHM|9 +D02|08C411|GHM|9 +D02|08C412|GHM|9 +D02|08C413|GHM|9 +D02|08C414|GHM|9 +D02|08C41J|GHM|9 +D02|08C421|GHM|9 +D02|08C422|GHM|9 +D02|08C423|GHM|9 +D02|08C424|GHM|9 +D02|08C42J|GHM|9 +D02|08C431|GHM|9 +D02|08C432|GHM|9 +D02|08C433|GHM|9 +D02|08C434|GHM|9 +D02|08C43J|GHM|9 +D02|08C441|GHM|9 +D02|08C442|GHM|9 +D02|08C443|GHM|9 +D02|08C444|GHM|9 +D02|08C44J|GHM|9 +D02|08C451|GHM|9 +D02|08C452|GHM|9 +D02|08C453|GHM|9 +D02|08C454|GHM|9 +D02|08C45J|GHM|9 +D02|08C461|GHM|9 +D02|08C462|GHM|9 +D02|08C463|GHM|9 +D02|08C464|GHM|9 +D02|08C46J|GHM|9 +D02|08C471|GHM|9 +D02|08C472|GHM|9 +D02|08C473|GHM|9 +D02|08C474|GHM|9 +D02|08C481|GHM|9 +D02|08C482|GHM|9 +D02|08C483|GHM|9 +D02|08C484|GHM|9 +D02|08C491|GHM|9 +D02|08C492|GHM|9 +D02|08C493|GHM|9 +D02|08C494|GHM|9 +D02|08C501|GHM|9 +D02|08C502|GHM|9 +D02|08C503|GHM|9 +D02|08C504|GHM|9 +D02|08C531|GHM|9 +D02|08C532|GHM|9 +D02|08C533|GHM|9 +D02|08C534|GHM|9 +D02|08C541|GHM|9 +D02|08C542|GHM|9 +D02|08C543|GHM|9 +D02|08C544|GHM|9 +D02|08C54J|GHM|9 +D02|08C551|GHM|9 +D02|08C552|GHM|9 +D02|08C553|GHM|9 +D02|08C554|GHM|9 +D02|08C561|GHM|9 +D02|08C562|GHM|9 +D02|08C563|GHM|9 +D02|08C564|GHM|9 +D02|08C571|GHM|9 +D02|08C572|GHM|9 +D02|08C573|GHM|9 +D02|08C574|GHM|9 +D02|08C57J|GHM|9 +D02|08C581|GHM|9 +D02|08C582|GHM|9 +D02|08C583|GHM|9 +D02|08C584|GHM|9 +D02|08C58J|GHM|9 +D02|08C591|GHM|9 +D02|08C592|GHM|9 +D02|08C593|GHM|9 +D02|08C594|GHM|9 +D02|08C59J|GHM|9 +D02|08C601|GHM|9 +D02|08C602|GHM|9 +D02|08C603|GHM|9 +D02|08C604|GHM|9 +D02|08C60J|GHM|9 +D02|08C611|GHM|9 +D02|08C612|GHM|9 +D02|08C613|GHM|9 +D02|08C614|GHM|9 +D02|08C621|GHM|9 +D02|08C622|GHM|9 +D02|08C623|GHM|9 +D02|08C624|GHM|9 +D02|08C62J|GHM|9 +D02|08K02J|GHM|9 +D02|08K031|GHM|9 +D02|08K032|GHM|9 +D02|08K033|GHM|9 +D02|08K034|GHM|9 +D02|08K041|GHM|9 +D02|08K042|GHM|9 +D02|08K043|GHM|9 +D02|08K044|GHM|9 +D02|08K051|GHM|9 +D02|08K052|GHM|9 +D02|08K053|GHM|9 +D02|08K054|GHM|9 +D02|08K05J|GHM|9 +D02|08K06Z|GHM|9 +D02|08M02Z|GHM|9 +D02|08M041|GHM|9 +D02|08M042|GHM|9 +D02|08M043|GHM|9 +D02|08M044|GHM|9 +D02|08M04T|GHM|9 +D02|08M04V|GHM|9 +D02|08M04W|GHM|9 +D02|08M051|GHM|9 +D02|08M052|GHM|9 +D02|08M053|GHM|9 +D02|08M054|GHM|9 +D02|08M05T|GHM|9 +D02|08M05Z|GHM|9 +D02|08M061|GHM|9 +D02|08M062|GHM|9 +D02|08M063|GHM|9 +D02|08M064|GHM|9 +D02|08M06T|GHM|9 +D02|08M06Z|GHM|9 +D02|08M071|GHM|9 +D02|08M072|GHM|9 +D02|08M073|GHM|9 +D02|08M074|GHM|9 +D02|08M07T|GHM|9 +D02|08M07V|GHM|9 +D02|08M07W|GHM|9 +D02|08M081|GHM|9 +D02|08M082|GHM|9 +D02|08M083|GHM|9 +D02|08M084|GHM|9 +D02|08M08T|GHM|9 +D02|08M08Z|GHM|9 +D02|08M13Z|GHM|9 +D02|08M16Z|GHM|9 +D02|08M17Z|GHM|9 +D02|08M201|GHM|9 +D02|08M202|GHM|9 +D02|08M203|GHM|9 +D02|08M204|GHM|9 +D02|08M211|GHM|9 +D02|08M212|GHM|9 +D02|08M213|GHM|9 +D02|08M214|GHM|9 +D02|08M221|GHM|9 +D02|08M222|GHM|9 +D02|08M223|GHM|9 +D02|08M224|GHM|9 +D02|08M231|GHM|9 +D02|08M232|GHM|9 +D02|08M233|GHM|9 +D02|08M234|GHM|9 +D02|08M261|GHM|9 +D02|08M262|GHM|9 +D02|08M263|GHM|9 +D02|08M264|GHM|9 +D02|08M331|GHM|9 +D02|08M332|GHM|9 +D02|08M333|GHM|9 +D02|08M334|GHM|9 +D02|08M33T|GHM|9 +D02|08M371|GHM|9 +D02|08M372|GHM|9 +D02|08M373|GHM|9 +D02|08M374|GHM|9 +D02|08M37T|GHM|9 +D02|08M381|GHM|9 +D02|08M382|GHM|9 +D02|08M383|GHM|9 +D02|08M384|GHM|9 +D02|08M38T|GHM|9 +D02|21C041|GHM|9 +D02|21C042|GHM|9 +D02|21C043|GHM|9 +D02|21C044|GHM|9 +D02|21C04J|GHM|9 +D02|21C04Z|GHM|9 +D02|21M061|GHM|9 +D02|21M062|GHM|9 +D02|21M063|GHM|9 +D02|21M064|GHM|9 +D02|21M06Z|GHM|9 +D02|21M071|GHM|9 +D02|21M072|GHM|9 +D02|21M073|GHM|9 +D02|21M074|GHM|9 +D02|21M07T|GHM|9 +D02|21M07V|GHM|9 +D02|21M07W|GHM|9 +D03|26C021|GHM|9 +D03|26C022|GHM|9 +D03|26C023|GHM|9 +D03|26C024|GHM|9 +D03|26C02Z|GHM|9 +D03|26M021|GHM|9 +D03|26M022|GHM|9 +D03|26M023|GHM|9 +D03|26M024|GHM|9 +D03|26M02Z|GHM|9 +D04|08M091|GHM|9 +D04|08M092|GHM|9 +D04|08M093|GHM|9 +D04|08M094|GHM|9 +D04|08M09T|GHM|9 +D04|08M09Z|GHM|9 +D04|08M101|GHM|9 +D04|08M102|GHM|9 +D04|08M103|GHM|9 +D04|08M104|GHM|9 +D04|08M10T|GHM|9 +D04|08M10V|GHM|9 +D04|08M10W|GHM|9 +D04|08M141|GHM|9 +D04|08M142|GHM|9 +D04|08M143|GHM|9 +D04|08M144|GHM|9 +D04|08M14T|GHM|9 +D04|08M14V|GHM|9 +D04|08M14W|GHM|9 +D04|08M151|GHM|9 +D04|08M152|GHM|9 +D04|08M153|GHM|9 +D04|08M154|GHM|9 +D04|08M15T|GHM|9 +D04|08M15V|GHM|9 +D04|08M15W|GHM|9 +D04|08M181|GHM|9 +D04|08M182|GHM|9 +D04|08M183|GHM|9 +D04|08M184|GHM|9 +D04|08M18T|GHM|9 +D04|08M18Z|GHM|9 +D04|08M191|GHM|9 +D04|08M192|GHM|9 +D04|08M193|GHM|9 +D04|08M194|GHM|9 +D04|08M19T|GHM|9 +D04|08M19V|GHM|9 +D04|08M19W|GHM|9 +D04|08M241|GHM|9 +D04|08M242|GHM|9 +D04|08M243|GHM|9 +D04|08M244|GHM|9 +D04|08M24T|GHM|9 +D04|08M251|GHM|9 +D04|08M252|GHM|9 +D04|08M253|GHM|9 +D04|08M254|GHM|9 +D04|08M25T|GHM|9 +D04|08M271|GHM|9 +D04|08M272|GHM|9 +D04|08M273|GHM|9 +D04|08M274|GHM|9 +D04|08M27T|GHM|9 +D04|08M281|GHM|9 +D04|08M282|GHM|9 +D04|08M283|GHM|9 +D04|08M284|GHM|9 +D04|08M28T|GHM|9 +D04|08M291|GHM|9 +D04|08M292|GHM|9 +D04|08M293|GHM|9 +D04|08M294|GHM|9 +D04|08M29T|GHM|9 +D04|08M301|GHM|9 +D04|08M302|GHM|9 +D04|08M303|GHM|9 +D04|08M304|GHM|9 +D04|08M30T|GHM|9 +D04|08M311|GHM|9 +D04|08M312|GHM|9 +D04|08M313|GHM|9 +D04|08M314|GHM|9 +D04|08M31T|GHM|9 +D04|08M321|GHM|9 +D04|08M322|GHM|9 +D04|08M323|GHM|9 +D04|08M324|GHM|9 +D04|08M32T|GHM|9 +D04|08M341|GHM|9 +D04|08M342|GHM|9 +D04|08M343|GHM|9 +D04|08M344|GHM|9 +D04|08M34T|GHM|9 +D04|08M35Z|GHM|9 +D04|08M36T|GHM|9 +D04|08M36Z|GHM|9 +D05|01C02Z|GHM|9 +D05|01C031|GHM|9 +D05|01C032|GHM|9 +D05|01C033|GHM|9 +D05|01C034|GHM|9 +D05|01C03V|GHM|9 +D05|01C03W|GHM|9 +D05|01C041|GHM|9 +D05|01C042|GHM|9 +D05|01C043|GHM|9 +D05|01C044|GHM|9 +D05|01C04V|GHM|9 +D05|01C04W|GHM|9 +D05|01C051|GHM|9 +D05|01C052|GHM|9 +D05|01C053|GHM|9 +D05|01C054|GHM|9 +D05|01C05V|GHM|9 +D05|01C05W|GHM|9 +D05|01C091|GHM|9 +D05|01C092|GHM|9 +D05|01C093|GHM|9 +D05|01C094|GHM|9 +D05|01C09Z|GHM|9 +D05|01C101|GHM|9 +D05|01C102|GHM|9 +D05|01C103|GHM|9 +D05|01C104|GHM|9 +D05|01C10J|GHM|9 +D05|01C10Z|GHM|9 +D05|01C111|GHM|9 +D05|01C112|GHM|9 +D05|01C113|GHM|9 +D05|01C114|GHM|9 +D05|01C11Z|GHM|9 +D05|01C121|GHM|9 +D05|01C122|GHM|9 +D05|01C123|GHM|9 +D05|01C124|GHM|9 +D05|01C12Z|GHM|9 +D05|01K04J|GHM|9 +D05|01K06J|GHM|9 +D05|01M02Z|GHM|9 +D05|01M041|GHM|9 +D05|01M042|GHM|9 +D05|01M043|GHM|9 +D05|01M044|GHM|9 +D05|01M04T|GHM|9 +D05|01M04Z|GHM|9 +D05|01M051|GHM|9 +D05|01M052|GHM|9 +D05|01M053|GHM|9 +D05|01M054|GHM|9 +D05|01M05T|GHM|9 +D05|01M05V|GHM|9 +D05|01M05W|GHM|9 +D05|01M071|GHM|9 +D05|01M072|GHM|9 +D05|01M073|GHM|9 +D05|01M074|GHM|9 +D05|01M07T|GHM|9 +D05|01M07Z|GHM|9 +D05|01M081|GHM|9 +D05|01M082|GHM|9 +D05|01M083|GHM|9 +D05|01M084|GHM|9 +D05|01M08T|GHM|9 +D05|01M08V|GHM|9 +D05|01M08W|GHM|9 +D05|01M091|GHM|9 +D05|01M092|GHM|9 +D05|01M093|GHM|9 +D05|01M094|GHM|9 +D05|01M09T|GHM|9 +D05|01M09Z|GHM|9 +D05|01M101|GHM|9 +D05|01M102|GHM|9 +D05|01M103|GHM|9 +D05|01M104|GHM|9 +D05|01M10T|GHM|9 +D05|01M10V|GHM|9 +D05|01M10W|GHM|9 +D05|01M111|GHM|9 +D05|01M112|GHM|9 +D05|01M113|GHM|9 +D05|01M114|GHM|9 +D05|01M11T|GHM|9 +D05|01M11V|GHM|9 +D05|01M11W|GHM|9 +D05|01M121|GHM|9 +D05|01M122|GHM|9 +D05|01M123|GHM|9 +D05|01M124|GHM|9 +D05|01M12T|GHM|9 +D05|01M12V|GHM|9 +D05|01M12W|GHM|9 +D05|01M131|GHM|9 +D05|01M132|GHM|9 +D05|01M133|GHM|9 +D05|01M134|GHM|9 +D05|01M13Z|GHM|9 +D05|01M151|GHM|9 +D05|01M152|GHM|9 +D05|01M153|GHM|9 +D05|01M154|GHM|9 +D05|01M15T|GHM|9 +D05|01M15Z|GHM|9 +D05|01M161|GHM|9 +D05|01M162|GHM|9 +D05|01M163|GHM|9 +D05|01M164|GHM|9 +D05|01M16T|GHM|9 +D05|01M16Z|GHM|9 +D05|01M171|GHM|9 +D05|01M172|GHM|9 +D05|01M173|GHM|9 +D05|01M174|GHM|9 +D05|01M17T|GHM|9 +D05|01M17V|GHM|9 +D05|01M17W|GHM|9 +D05|01M181|GHM|9 +D05|01M182|GHM|9 +D05|01M183|GHM|9 +D05|01M184|GHM|9 +D05|01M18T|GHM|9 +D05|01M18V|GHM|9 +D05|01M18W|GHM|9 +D05|01M191|GHM|9 +D05|01M192|GHM|9 +D05|01M193|GHM|9 +D05|01M194|GHM|9 +D05|01M19V|GHM|9 +D05|01M19W|GHM|9 +D05|01M201|GHM|9 +D05|01M202|GHM|9 +D05|01M203|GHM|9 +D05|01M204|GHM|9 +D05|01M20V|GHM|9 +D05|01M20W|GHM|9 +D05|01M221|GHM|9 +D05|01M222|GHM|9 +D05|01M223|GHM|9 +D05|01M224|GHM|9 +D05|01M22T|GHM|9 +D05|01M22Z|GHM|9 +D05|01M231|GHM|9 +D05|01M232|GHM|9 +D05|01M233|GHM|9 +D05|01M234|GHM|9 +D05|01M23Z|GHM|9 +D05|01M241|GHM|9 +D05|01M242|GHM|9 +D05|01M243|GHM|9 +D05|01M244|GHM|9 +D05|01M24T|GHM|9 +D05|01M24V|GHM|9 +D05|01M24W|GHM|9 +D05|01M251|GHM|9 +D05|01M252|GHM|9 +D05|01M253|GHM|9 +D05|01M254|GHM|9 +D05|01M25T|GHM|9 +D05|01M25V|GHM|9 +D05|01M25W|GHM|9 +D05|01M261|GHM|9 +D05|01M262|GHM|9 +D05|01M263|GHM|9 +D05|01M264|GHM|9 +D05|01M26T|GHM|9 +D05|01M271|GHM|9 +D05|01M272|GHM|9 +D05|01M273|GHM|9 +D05|01M274|GHM|9 +D05|01M27T|GHM|9 +D05|01M281|GHM|9 +D05|01M282|GHM|9 +D05|01M283|GHM|9 +D05|01M284|GHM|9 +D05|01M28T|GHM|9 +D05|01M291|GHM|9 +D05|01M292|GHM|9 +D05|01M293|GHM|9 +D05|01M294|GHM|9 +D05|01M301|GHM|9 +D05|01M302|GHM|9 +D05|01M303|GHM|9 +D05|01M304|GHM|9 +D05|01M30T|GHM|9 +D05|01M311|GHM|9 +D05|01M312|GHM|9 +D05|01M313|GHM|9 +D05|01M314|GHM|9 +D05|01M31T|GHM|9 +D05|01M32Z|GHM|9 +D05|01M331|GHM|9 +D05|01M332|GHM|9 +D05|01M333|GHM|9 +D05|01M334|GHM|9 +D05|01M34T|GHM|9 +D05|01M34Z|GHM|9 +D05|01M35T|GHM|9 +D05|01M35Z|GHM|9 +D05|01M36E|GHM|9 +D05|01M381|GHM|9 +D05|01M382|GHM|9 +D05|01M383|GHM|9 +D05|01M384|GHM|9 +D05|01M391|GHM|9 +D05|01M392|GHM|9 +D05|01M393|GHM|9 +D05|01M394|GHM|9 +D05|08C271|GHM|9 +D05|08C272|GHM|9 +D05|08C273|GHM|9 +D05|08C274|GHM|9 +D05|08C27V|GHM|9 +D05|08C27W|GHM|9 +D05|08C511|GHM|9 +D05|08C512|GHM|9 +D05|08C513|GHM|9 +D05|08C514|GHM|9 +D05|08C521|GHM|9 +D05|08C522|GHM|9 +D05|08C523|GHM|9 +D05|08C524|GHM|9 +D05|10C021|GHM|9 +D05|10C022|GHM|9 +D05|10C023|GHM|9 +D05|10C024|GHM|9 +D05|10C02Z|GHM|9 +D06|01K021|GHM|9 +D06|01K022|GHM|9 +D06|01K023|GHM|9 +D06|01K024|GHM|9 +D06|01K02Z|GHM|9 +D06|01K031|GHM|9 +D06|01K032|GHM|9 +D06|01K033|GHM|9 +D06|01K034|GHM|9 +D06|01K03Z|GHM|9 +D06|01K071|GHM|9 +D06|01K072|GHM|9 +D06|01K073|GHM|9 +D06|01K074|GHM|9 +D06|05K03Z|GHM|9 +D06|05K04Z|GHM|9 +D06|05K051|GHM|9 +D06|05K052|GHM|9 +D06|05K053|GHM|9 +D06|05K054|GHM|9 +D06|05K05V|GHM|9 +D06|05K05W|GHM|9 +D06|05K061|GHM|9 +D06|05K062|GHM|9 +D06|05K063|GHM|9 +D06|05K064|GHM|9 +D06|05K06T|GHM|9 +D06|05K06V|GHM|9 +D06|05K06W|GHM|9 +D06|05K07Z|GHM|9 +D06|05K08Z|GHM|9 +D06|05K09Z|GHM|9 +D06|05K101|GHM|9 +D06|05K102|GHM|9 +D06|05K103|GHM|9 +D06|05K104|GHM|9 +D06|05K10J|GHM|9 +D06|05K10Z|GHM|9 +D06|05K111|GHM|9 +D06|05K112|GHM|9 +D06|05K113|GHM|9 +D06|05K114|GHM|9 +D06|05K11T|GHM|9 +D06|05K11Z|GHM|9 +D06|05K121|GHM|9 +D06|05K122|GHM|9 +D06|05K123|GHM|9 +D06|05K124|GHM|9 +D06|05K12Z|GHM|9 +D06|05K131|GHM|9 +D06|05K132|GHM|9 +D06|05K133|GHM|9 +D06|05K134|GHM|9 +D06|05K13J|GHM|9 +D06|05K13Z|GHM|9 +D06|05K151|GHM|9 +D06|05K152|GHM|9 +D06|05K153|GHM|9 +D06|05K154|GHM|9 +D06|05K15J|GHM|9 +D06|05K191|GHM|9 +D06|05K192|GHM|9 +D06|05K193|GHM|9 +D06|05K194|GHM|9 +D06|05K201|GHM|9 +D06|05K202|GHM|9 +D06|05K203|GHM|9 +D06|05K204|GHM|9 +D06|05K20T|GHM|9 +D06|05K211|GHM|9 +D06|05K212|GHM|9 +D06|05K213|GHM|9 +D06|05K214|GHM|9 +D06|05K221|GHM|9 +D06|05K222|GHM|9 +D06|05K223|GHM|9 +D06|05K224|GHM|9 +D06|05K231|GHM|9 +D06|05K232|GHM|9 +D06|05K233|GHM|9 +D06|05K234|GHM|9 +D06|05K23J|GHM|9 +D06|05K241|GHM|9 +D06|05K242|GHM|9 +D06|05K243|GHM|9 +D06|05K244|GHM|9 +D06|05K24J|GHM|9 +D06|05K251|GHM|9 +D06|05K252|GHM|9 +D06|05K253|GHM|9 +D06|05K254|GHM|9 +D06|05K25J|GHM|9 +D06|05K261|GHM|9 +D06|05K262|GHM|9 +D06|05K263|GHM|9 +D06|05K264|GHM|9 +D06|05K26J|GHM|9 +D06|05M02E|GHM|9 +D06|05M03Z|GHM|9 +D07|01C061|GHM|9 +D07|01C062|GHM|9 +D07|01C063|GHM|9 +D07|01C064|GHM|9 +D07|01C06V|GHM|9 +D07|01C06W|GHM|9 +D07|05C021|GHM|9 +D07|05C022|GHM|9 +D07|05C023|GHM|9 +D07|05C024|GHM|9 +D07|05C02Z|GHM|9 +D07|05C031|GHM|9 +D07|05C032|GHM|9 +D07|05C033|GHM|9 +D07|05C034|GHM|9 +D07|05C03V|GHM|9 +D07|05C03W|GHM|9 +D07|05C041|GHM|9 +D07|05C042|GHM|9 +D07|05C043|GHM|9 +D07|05C044|GHM|9 +D07|05C04V|GHM|9 +D07|05C04W|GHM|9 +D07|05C051|GHM|9 +D07|05C052|GHM|9 +D07|05C053|GHM|9 +D07|05C054|GHM|9 +D07|05C05V|GHM|9 +D07|05C05W|GHM|9 +D07|05C061|GHM|9 +D07|05C062|GHM|9 +D07|05C063|GHM|9 +D07|05C064|GHM|9 +D07|05C06V|GHM|9 +D07|05C06W|GHM|9 +D07|05C071|GHM|9 +D07|05C072|GHM|9 +D07|05C073|GHM|9 +D07|05C074|GHM|9 +D07|05C07Z|GHM|9 +D07|05C081|GHM|9 +D07|05C082|GHM|9 +D07|05C083|GHM|9 +D07|05C084|GHM|9 +D07|05C08T|GHM|9 +D07|05C08V|GHM|9 +D07|05C08W|GHM|9 +D07|05C091|GHM|9 +D07|05C092|GHM|9 +D07|05C093|GHM|9 +D07|05C094|GHM|9 +D07|05C09Z|GHM|9 +D07|05C101|GHM|9 +D07|05C102|GHM|9 +D07|05C103|GHM|9 +D07|05C104|GHM|9 +D07|05C10V|GHM|9 +D07|05C10W|GHM|9 +D07|05C111|GHM|9 +D07|05C112|GHM|9 +D07|05C113|GHM|9 +D07|05C114|GHM|9 +D07|05C11J|GHM|9 +D07|05C11V|GHM|9 +D07|05C11W|GHM|9 +D07|05C141|GHM|9 +D07|05C142|GHM|9 +D07|05C143|GHM|9 +D07|05C144|GHM|9 +D07|05C14J|GHM|9 +D07|05C14Z|GHM|9 +D07|05C151|GHM|9 +D07|05C152|GHM|9 +D07|05C153|GHM|9 +D07|05C154|GHM|9 +D07|05C15T|GHM|9 +D07|05C15Z|GHM|9 +D07|05C16Z|GHM|9 +D07|05C171|GHM|9 +D07|05C172|GHM|9 +D07|05C173|GHM|9 +D07|05C174|GHM|9 +D07|05C17J|GHM|9 +D07|05C17V|GHM|9 +D07|05C17W|GHM|9 +D07|05C191|GHM|9 +D07|05C192|GHM|9 +D07|05C193|GHM|9 +D07|05C194|GHM|9 +D07|05C19T|GHM|9 +D07|05C19Z|GHM|9 +D07|05C201|GHM|9 +D07|05C202|GHM|9 +D07|05C203|GHM|9 +D07|05C204|GHM|9 +D07|05C20Z|GHM|9 +D07|05C211|GHM|9 +D07|05C212|GHM|9 +D07|05C213|GHM|9 +D07|05C214|GHM|9 +D07|05C21J|GHM|9 +D07|05C221|GHM|9 +D07|05C222|GHM|9 +D07|05C223|GHM|9 +D07|05C224|GHM|9 +D07|05C22T|GHM|9 +D07|05K14Z|GHM|9 +D07|05K17J|GHM|9 +D07|05K18J|GHM|9 +D07|05M041|GHM|9 +D07|05M042|GHM|9 +D07|05M043|GHM|9 +D07|05M044|GHM|9 +D07|05M04T|GHM|9 +D07|05M04V|GHM|9 +D07|05M04W|GHM|9 +D07|05M051|GHM|9 +D07|05M052|GHM|9 +D07|05M053|GHM|9 +D07|05M054|GHM|9 +D07|05M05T|GHM|9 +D07|05M05V|GHM|9 +D07|05M05W|GHM|9 +D07|05M061|GHM|9 +D07|05M062|GHM|9 +D07|05M063|GHM|9 +D07|05M064|GHM|9 +D07|05M06T|GHM|9 +D07|05M06V|GHM|9 +D07|05M06W|GHM|9 +D07|05M071|GHM|9 +D07|05M072|GHM|9 +D07|05M073|GHM|9 +D07|05M074|GHM|9 +D07|05M07T|GHM|9 +D07|05M07V|GHM|9 +D07|05M07W|GHM|9 +D07|05M081|GHM|9 +D07|05M082|GHM|9 +D07|05M083|GHM|9 +D07|05M084|GHM|9 +D07|05M08T|GHM|9 +D07|05M08V|GHM|9 +D07|05M08W|GHM|9 +D07|05M091|GHM|9 +D07|05M092|GHM|9 +D07|05M093|GHM|9 +D07|05M094|GHM|9 +D07|05M09T|GHM|9 +D07|05M09V|GHM|9 +D07|05M09W|GHM|9 +D07|05M101|GHM|9 +D07|05M102|GHM|9 +D07|05M103|GHM|9 +D07|05M104|GHM|9 +D07|05M10T|GHM|9 +D07|05M10Z|GHM|9 +D07|05M111|GHM|9 +D07|05M112|GHM|9 +D07|05M113|GHM|9 +D07|05M114|GHM|9 +D07|05M11T|GHM|9 +D07|05M11V|GHM|9 +D07|05M11W|GHM|9 +D07|05M121|GHM|9 +D07|05M122|GHM|9 +D07|05M123|GHM|9 +D07|05M124|GHM|9 +D07|05M12T|GHM|9 +D07|05M12V|GHM|9 +D07|05M12W|GHM|9 +D07|05M131|GHM|9 +D07|05M132|GHM|9 +D07|05M133|GHM|9 +D07|05M134|GHM|9 +D07|05M13T|GHM|9 +D07|05M13Z|GHM|9 +D07|05M141|GHM|9 +D07|05M142|GHM|9 +D07|05M143|GHM|9 +D07|05M144|GHM|9 +D07|05M14Z|GHM|9 +D07|05M151|GHM|9 +D07|05M152|GHM|9 +D07|05M153|GHM|9 +D07|05M154|GHM|9 +D07|05M15T|GHM|9 +D07|05M15Z|GHM|9 +D07|05M161|GHM|9 +D07|05M162|GHM|9 +D07|05M163|GHM|9 +D07|05M164|GHM|9 +D07|05M16T|GHM|9 +D07|05M16V|GHM|9 +D07|05M16W|GHM|9 +D07|05M171|GHM|9 +D07|05M172|GHM|9 +D07|05M173|GHM|9 +D07|05M174|GHM|9 +D07|05M17T|GHM|9 +D07|05M17V|GHM|9 +D07|05M17W|GHM|9 +D07|05M181|GHM|9 +D07|05M182|GHM|9 +D07|05M183|GHM|9 +D07|05M184|GHM|9 +D07|05M18T|GHM|9 +D07|05M18Z|GHM|9 +D07|05M191|GHM|9 +D07|05M192|GHM|9 +D07|05M193|GHM|9 +D07|05M194|GHM|9 +D07|05M20Z|GHM|9 +D07|05M21E|GHM|9 +D07|05M23T|GHM|9 +D07|05M23Z|GHM|9 +D07|11C091|GHM|9 +D07|11C092|GHM|9 +D07|11C093|GHM|9 +D07|11C094|GHM|9 +D07|11C09J|GHM|9 +D07|11K07Z|GHM|9 +D09|04C021|GHM|9 +D09|04C022|GHM|9 +D09|04C023|GHM|9 +D09|04C024|GHM|9 +D09|04C02V|GHM|9 +D09|04C02W|GHM|9 +D09|04C031|GHM|9 +D09|04C032|GHM|9 +D09|04C033|GHM|9 +D09|04C034|GHM|9 +D09|04C03V|GHM|9 +D09|04C03W|GHM|9 +D09|04C041|GHM|9 +D09|04C042|GHM|9 +D09|04C043|GHM|9 +D09|04C044|GHM|9 +D09|04K02J|GHM|9 +D09|04M021|GHM|9 +D09|04M022|GHM|9 +D09|04M023|GHM|9 +D09|04M024|GHM|9 +D09|04M02T|GHM|9 +D09|04M02V|GHM|9 +D09|04M02W|GHM|9 +D09|04M031|GHM|9 +D09|04M032|GHM|9 +D09|04M033|GHM|9 +D09|04M034|GHM|9 +D09|04M03T|GHM|9 +D09|04M03V|GHM|9 +D09|04M03W|GHM|9 +D09|04M041|GHM|9 +D09|04M042|GHM|9 +D09|04M043|GHM|9 +D09|04M044|GHM|9 +D09|04M04Z|GHM|9 +D09|04M051|GHM|9 +D09|04M052|GHM|9 +D09|04M053|GHM|9 +D09|04M054|GHM|9 +D09|04M05T|GHM|9 +D09|04M05V|GHM|9 +D09|04M05W|GHM|9 +D09|04M061|GHM|9 +D09|04M062|GHM|9 +D09|04M063|GHM|9 +D09|04M064|GHM|9 +D09|04M06T|GHM|9 +D09|04M06Z|GHM|9 +D09|04M071|GHM|9 +D09|04M072|GHM|9 +D09|04M073|GHM|9 +D09|04M074|GHM|9 +D09|04M07T|GHM|9 +D09|04M07V|GHM|9 +D09|04M07W|GHM|9 +D09|04M081|GHM|9 +D09|04M082|GHM|9 +D09|04M083|GHM|9 +D09|04M084|GHM|9 +D09|04M08T|GHM|9 +D09|04M08V|GHM|9 +D09|04M08W|GHM|9 +D09|04M091|GHM|9 +D09|04M092|GHM|9 +D09|04M093|GHM|9 +D09|04M094|GHM|9 +D09|04M09T|GHM|9 +D09|04M09V|GHM|9 +D09|04M09W|GHM|9 +D09|04M101|GHM|9 +D09|04M102|GHM|9 +D09|04M103|GHM|9 +D09|04M104|GHM|9 +D09|04M10T|GHM|9 +D09|04M10V|GHM|9 +D09|04M10W|GHM|9 +D09|04M111|GHM|9 +D09|04M112|GHM|9 +D09|04M113|GHM|9 +D09|04M114|GHM|9 +D09|04M11V|GHM|9 +D09|04M11W|GHM|9 +D09|04M121|GHM|9 +D09|04M122|GHM|9 +D09|04M123|GHM|9 +D09|04M124|GHM|9 +D09|04M12T|GHM|9 +D09|04M12V|GHM|9 +D09|04M12W|GHM|9 +D09|04M131|GHM|9 +D09|04M132|GHM|9 +D09|04M133|GHM|9 +D09|04M134|GHM|9 +D09|04M13T|GHM|9 +D09|04M13Z|GHM|9 +D09|04M141|GHM|9 +D09|04M142|GHM|9 +D09|04M143|GHM|9 +D09|04M144|GHM|9 +D09|04M14T|GHM|9 +D09|04M14V|GHM|9 +D09|04M14W|GHM|9 +D09|04M151|GHM|9 +D09|04M152|GHM|9 +D09|04M153|GHM|9 +D09|04M154|GHM|9 +D09|04M15T|GHM|9 +D09|04M15V|GHM|9 +D09|04M15W|GHM|9 +D09|04M161|GHM|9 +D09|04M162|GHM|9 +D09|04M163|GHM|9 +D09|04M164|GHM|9 +D09|04M16T|GHM|9 +D09|04M16V|GHM|9 +D09|04M16W|GHM|9 +D09|04M171|GHM|9 +D09|04M172|GHM|9 +D09|04M173|GHM|9 +D09|04M174|GHM|9 +D09|04M17T|GHM|9 +D09|04M17V|GHM|9 +D09|04M17W|GHM|9 +D09|04M181|GHM|9 +D09|04M182|GHM|9 +D09|04M183|GHM|9 +D09|04M184|GHM|9 +D09|04M18T|GHM|9 +D09|04M191|GHM|9 +D09|04M192|GHM|9 +D09|04M193|GHM|9 +D09|04M194|GHM|9 +D09|04M19T|GHM|9 +D09|04M201|GHM|9 +D09|04M202|GHM|9 +D09|04M203|GHM|9 +D09|04M204|GHM|9 +D09|04M20T|GHM|9 +D09|04M211|GHM|9 +D09|04M212|GHM|9 +D09|04M213|GHM|9 +D09|04M214|GHM|9 +D09|04M22Z|GHM|9 +D09|04M23T|GHM|9 +D09|04M23Z|GHM|9 +D09|04M24E|GHM|9 +D09|04M251|GHM|9 +D09|04M252|GHM|9 +D09|04M253|GHM|9 +D09|04M254|GHM|9 +D09|04M25T|GHM|9 +D09|04M261|GHM|9 +D09|04M262|GHM|9 +D09|04M263|GHM|9 +D09|04M264|GHM|9 +D09|04M26T|GHM|9 +D09|04M271|GHM|9 +D09|04M272|GHM|9 +D09|04M273|GHM|9 +D09|04M274|GHM|9 +D10|03C03Z|GHM|9 +D10|03C04Z|GHM|9 +D10|03C051|GHM|9 +D10|03C052|GHM|9 +D10|03C053|GHM|9 +D10|03C054|GHM|9 +D10|03C05T|GHM|9 +D10|03C05Z|GHM|9 +D10|03C061|GHM|9 +D10|03C062|GHM|9 +D10|03C063|GHM|9 +D10|03C064|GHM|9 +D10|03C06J|GHM|9 +D10|03C06Z|GHM|9 +D10|03C071|GHM|9 +D10|03C072|GHM|9 +D10|03C073|GHM|9 +D10|03C074|GHM|9 +D10|03C07J|GHM|9 +D10|03C07V|GHM|9 +D10|03C07W|GHM|9 +D10|03C091|GHM|9 +D10|03C092|GHM|9 +D10|03C093|GHM|9 +D10|03C094|GHM|9 +D10|03C09J|GHM|9 +D10|03C09Z|GHM|9 +D10|03C101|GHM|9 +D10|03C102|GHM|9 +D10|03C103|GHM|9 +D10|03C104|GHM|9 +D10|03C10Z|GHM|9 +D10|03C111|GHM|9 +D10|03C112|GHM|9 +D10|03C113|GHM|9 +D10|03C114|GHM|9 +D10|03C11Z|GHM|9 +D10|03C121|GHM|9 +D10|03C122|GHM|9 +D10|03C123|GHM|9 +D10|03C124|GHM|9 +D10|03C12Z|GHM|9 +D10|03C131|GHM|9 +D10|03C132|GHM|9 +D10|03C133|GHM|9 +D10|03C134|GHM|9 +D10|03C13Z|GHM|9 +D10|03C141|GHM|9 +D10|03C142|GHM|9 +D10|03C143|GHM|9 +D10|03C144|GHM|9 +D10|03C14J|GHM|9 +D10|03C14Z|GHM|9 +D10|03C151|GHM|9 +D10|03C152|GHM|9 +D10|03C153|GHM|9 +D10|03C154|GHM|9 +D10|03C15J|GHM|9 +D10|03C15Z|GHM|9 +D10|03C161|GHM|9 +D10|03C162|GHM|9 +D10|03C163|GHM|9 +D10|03C164|GHM|9 +D10|03C16J|GHM|9 +D10|03C16V|GHM|9 +D10|03C16W|GHM|9 +D10|03C171|GHM|9 +D10|03C172|GHM|9 +D10|03C173|GHM|9 +D10|03C174|GHM|9 +D10|03C17J|GHM|9 +D10|03C17Z|GHM|9 +D10|03C181|GHM|9 +D10|03C182|GHM|9 +D10|03C183|GHM|9 +D10|03C184|GHM|9 +D10|03C18Z|GHM|9 +D10|03C191|GHM|9 +D10|03C192|GHM|9 +D10|03C193|GHM|9 +D10|03C194|GHM|9 +D10|03C19J|GHM|9 +D10|03C19Z|GHM|9 +D10|03C201|GHM|9 +D10|03C202|GHM|9 +D10|03C203|GHM|9 +D10|03C204|GHM|9 +D10|03C20J|GHM|9 +D10|03C20Z|GHM|9 +D10|03C211|GHM|9 +D10|03C212|GHM|9 +D10|03C213|GHM|9 +D10|03C214|GHM|9 +D10|03C21J|GHM|9 +D10|03C21Z|GHM|9 +D10|03C22J|GHM|9 +D10|03C241|GHM|9 +D10|03C242|GHM|9 +D10|03C243|GHM|9 +D10|03C244|GHM|9 +D10|03C24J|GHM|9 +D10|03C251|GHM|9 +D10|03C252|GHM|9 +D10|03C253|GHM|9 +D10|03C254|GHM|9 +D10|03C261|GHM|9 +D10|03C262|GHM|9 +D10|03C263|GHM|9 +D10|03C264|GHM|9 +D10|03C27J|GHM|9 +D10|03C28J|GHM|9 +D10|03C291|GHM|9 +D10|03C292|GHM|9 +D10|03C293|GHM|9 +D10|03C294|GHM|9 +D10|03C29J|GHM|9 +D10|03C301|GHM|9 +D10|03C302|GHM|9 +D10|03C303|GHM|9 +D10|03C304|GHM|9 +D10|03C30J|GHM|9 +D10|03K021|GHM|9 +D10|03K022|GHM|9 +D10|03K023|GHM|9 +D10|03K024|GHM|9 +D10|03K02J|GHM|9 +D10|03K02Z|GHM|9 +D10|03K03J|GHM|9 +D10|03K04J|GHM|9 +D10|03M021|GHM|9 +D10|03M022|GHM|9 +D10|03M023|GHM|9 +D10|03M024|GHM|9 +D10|03M02T|GHM|9 +D10|03M02Z|GHM|9 +D10|03M031|GHM|9 +D10|03M032|GHM|9 +D10|03M033|GHM|9 +D10|03M034|GHM|9 +D10|03M03T|GHM|9 +D10|03M03Z|GHM|9 +D10|03M041|GHM|9 +D10|03M042|GHM|9 +D10|03M043|GHM|9 +D10|03M044|GHM|9 +D10|03M04T|GHM|9 +D10|03M04V|GHM|9 +D10|03M04W|GHM|9 +D10|03M051|GHM|9 +D10|03M052|GHM|9 +D10|03M053|GHM|9 +D10|03M054|GHM|9 +D10|03M05T|GHM|9 +D10|03M05Z|GHM|9 +D10|03M061|GHM|9 +D10|03M062|GHM|9 +D10|03M063|GHM|9 +D10|03M064|GHM|9 +D10|03M06T|GHM|9 +D10|03M06Z|GHM|9 +D10|03M071|GHM|9 +D10|03M072|GHM|9 +D10|03M073|GHM|9 +D10|03M074|GHM|9 +D10|03M07T|GHM|9 +D10|03M07V|GHM|9 +D10|03M07W|GHM|9 +D10|03M081|GHM|9 +D10|03M082|GHM|9 +D10|03M083|GHM|9 +D10|03M084|GHM|9 +D10|03M08T|GHM|9 +D10|03M08Z|GHM|9 +D10|03M091|GHM|9 +D10|03M092|GHM|9 +D10|03M093|GHM|9 +D10|03M094|GHM|9 +D10|03M09T|GHM|9 +D10|03M09V|GHM|9 +D10|03M09W|GHM|9 +D10|03M101|GHM|9 +D10|03M102|GHM|9 +D10|03M103|GHM|9 +D10|03M104|GHM|9 +D10|03M10T|GHM|9 +D10|03M10Z|GHM|9 +D10|03M111|GHM|9 +D10|03M112|GHM|9 +D10|03M113|GHM|9 +D10|03M114|GHM|9 +D10|03M11T|GHM|9 +D10|03M11V|GHM|9 +D10|03M11W|GHM|9 +D10|03M121|GHM|9 +D10|03M122|GHM|9 +D10|03M123|GHM|9 +D10|03M124|GHM|9 +D10|03M131|GHM|9 +D10|03M132|GHM|9 +D10|03M133|GHM|9 +D10|03M134|GHM|9 +D10|03M14Z|GHM|9 +D10|03M15T|GHM|9 +D10|03M15Z|GHM|9 +D10|08C281|GHM|9 +D10|08C282|GHM|9 +D10|08C283|GHM|9 +D10|08C284|GHM|9 +D10|08C28J|GHM|9 +D10|08C28Z|GHM|9 +D11|02C021|GHM|9 +D11|02C022|GHM|9 +D11|02C023|GHM|9 +D11|02C024|GHM|9 +D11|02C02J|GHM|9 +D11|02C02V|GHM|9 +D11|02C02W|GHM|9 +D11|02C031|GHM|9 +D11|02C032|GHM|9 +D11|02C033|GHM|9 +D11|02C034|GHM|9 +D11|02C03J|GHM|9 +D11|02C03Z|GHM|9 +D11|02C04Z|GHM|9 +D11|02C051|GHM|9 +D11|02C052|GHM|9 +D11|02C053|GHM|9 +D11|02C054|GHM|9 +D11|02C05J|GHM|9 +D11|02C05Z|GHM|9 +D11|02C061|GHM|9 +D11|02C062|GHM|9 +D11|02C063|GHM|9 +D11|02C064|GHM|9 +D11|02C06J|GHM|9 +D11|02C06Z|GHM|9 +D11|02C071|GHM|9 +D11|02C072|GHM|9 +D11|02C073|GHM|9 +D11|02C074|GHM|9 +D11|02C07J|GHM|9 +D11|02C07Z|GHM|9 +D11|02C081|GHM|9 +D11|02C082|GHM|9 +D11|02C083|GHM|9 +D11|02C084|GHM|9 +D11|02C08J|GHM|9 +D11|02C08V|GHM|9 +D11|02C08W|GHM|9 +D11|02C091|GHM|9 +D11|02C092|GHM|9 +D11|02C093|GHM|9 +D11|02C094|GHM|9 +D11|02C09J|GHM|9 +D11|02C09Z|GHM|9 +D11|02C101|GHM|9 +D11|02C102|GHM|9 +D11|02C103|GHM|9 +D11|02C104|GHM|9 +D11|02C10J|GHM|9 +D11|02C111|GHM|9 +D11|02C112|GHM|9 +D11|02C113|GHM|9 +D11|02C114|GHM|9 +D11|02C11J|GHM|9 +D11|02C121|GHM|9 +D11|02C122|GHM|9 +D11|02C123|GHM|9 +D11|02C124|GHM|9 +D11|02C12J|GHM|9 +D11|02C131|GHM|9 +D11|02C132|GHM|9 +D11|02C133|GHM|9 +D11|02C134|GHM|9 +D11|02C13J|GHM|9 +D11|02M021|GHM|9 +D11|02M022|GHM|9 +D11|02M023|GHM|9 +D11|02M024|GHM|9 +D11|02M02Z|GHM|9 +D11|02M031|GHM|9 +D11|02M032|GHM|9 +D11|02M033|GHM|9 +D11|02M034|GHM|9 +D11|02M03Z|GHM|9 +D11|02M041|GHM|9 +D11|02M042|GHM|9 +D11|02M043|GHM|9 +D11|02M044|GHM|9 +D11|02M04T|GHM|9 +D11|02M04Z|GHM|9 +D11|02M051|GHM|9 +D11|02M052|GHM|9 +D11|02M053|GHM|9 +D11|02M054|GHM|9 +D11|02M05T|GHM|9 +D11|02M05Z|GHM|9 +D11|02M071|GHM|9 +D11|02M072|GHM|9 +D11|02M073|GHM|9 +D11|02M074|GHM|9 +D11|02M07T|GHM|9 +D11|02M081|GHM|9 +D11|02M082|GHM|9 +D11|02M083|GHM|9 +D11|02M084|GHM|9 +D11|02M08T|GHM|9 +D11|02M09Z|GHM|9 +D11|02M10T|GHM|9 +D11|02M10Z|GHM|9 +D12|09C041|GHM|9 +D12|09C042|GHM|9 +D12|09C043|GHM|9 +D12|09C044|GHM|9 +D12|09C04V|GHM|9 +D12|09C04W|GHM|9 +D12|09C051|GHM|9 +D12|09C052|GHM|9 +D12|09C053|GHM|9 +D12|09C054|GHM|9 +D12|09C05J|GHM|9 +D12|09C05V|GHM|9 +D12|09C05W|GHM|9 +D12|09C061|GHM|9 +D12|09C062|GHM|9 +D12|09C063|GHM|9 +D12|09C064|GHM|9 +D12|09C06T|GHM|9 +D12|09C06Z|GHM|9 +D12|09C071|GHM|9 +D12|09C072|GHM|9 +D12|09C073|GHM|9 +D12|09C074|GHM|9 +D12|09C07J|GHM|9 +D12|09C07Z|GHM|9 +D12|09C111|GHM|9 +D12|09C112|GHM|9 +D12|09C113|GHM|9 +D12|09C114|GHM|9 +D12|09M091|GHM|9 +D12|09M092|GHM|9 +D12|09M093|GHM|9 +D12|09M094|GHM|9 +D12|09M09T|GHM|9 +D12|09M09Z|GHM|9 +D12|09M101|GHM|9 +D12|09M102|GHM|9 +D12|09M103|GHM|9 +D12|09M104|GHM|9 +D12|09M10T|GHM|9 +D12|09M10V|GHM|9 +D12|09M10W|GHM|9 +D12|09M13Z|GHM|9 +D12|09M15Z|GHM|9 +D12|13C031|GHM|9 +D12|13C032|GHM|9 +D12|13C033|GHM|9 +D12|13C034|GHM|9 +D12|13C03V|GHM|9 +D12|13C03W|GHM|9 +D12|13C041|GHM|9 +D12|13C042|GHM|9 +D12|13C043|GHM|9 +D12|13C044|GHM|9 +D12|13C04J|GHM|9 +D12|13C04V|GHM|9 +D12|13C04W|GHM|9 +D12|13C051|GHM|9 +D12|13C052|GHM|9 +D12|13C053|GHM|9 +D12|13C054|GHM|9 +D12|13C05Z|GHM|9 +D12|13C061|GHM|9 +D12|13C062|GHM|9 +D12|13C063|GHM|9 +D12|13C064|GHM|9 +D12|13C06J|GHM|9 +D12|13C06Z|GHM|9 +D12|13C071|GHM|9 +D12|13C072|GHM|9 +D12|13C073|GHM|9 +D12|13C074|GHM|9 +D12|13C07J|GHM|9 +D12|13C07V|GHM|9 +D12|13C07W|GHM|9 +D12|13C081|GHM|9 +D12|13C082|GHM|9 +D12|13C083|GHM|9 +D12|13C084|GHM|9 +D12|13C08J|GHM|9 +D12|13C08V|GHM|9 +D12|13C08W|GHM|9 +D12|13C091|GHM|9 +D12|13C092|GHM|9 +D12|13C093|GHM|9 +D12|13C094|GHM|9 +D12|13C09J|GHM|9 +D12|13C09T|GHM|9 +D12|13C09Z|GHM|9 +D12|13C101|GHM|9 +D12|13C102|GHM|9 +D12|13C103|GHM|9 +D12|13C104|GHM|9 +D12|13C10J|GHM|9 +D12|13C10T|GHM|9 +D12|13C10Z|GHM|9 +D12|13C111|GHM|9 +D12|13C112|GHM|9 +D12|13C113|GHM|9 +D12|13C114|GHM|9 +D12|13C11J|GHM|9 +D12|13C11Z|GHM|9 +D12|13C121|GHM|9 +D12|13C122|GHM|9 +D12|13C123|GHM|9 +D12|13C124|GHM|9 +D12|13C12J|GHM|9 +D12|13C12Z|GHM|9 +D12|13C131|GHM|9 +D12|13C132|GHM|9 +D12|13C133|GHM|9 +D12|13C134|GHM|9 +D12|13C13T|GHM|9 +D12|13C13Z|GHM|9 +D12|13C141|GHM|9 +D12|13C142|GHM|9 +D12|13C143|GHM|9 +D12|13C144|GHM|9 +D12|13C14V|GHM|9 +D12|13C14W|GHM|9 +D12|13C151|GHM|9 +D12|13C152|GHM|9 +D12|13C153|GHM|9 +D12|13C154|GHM|9 +D12|13C15V|GHM|9 +D12|13C15W|GHM|9 +D12|13C16J|GHM|9 +D12|13C171|GHM|9 +D12|13C172|GHM|9 +D12|13C173|GHM|9 +D12|13C174|GHM|9 +D12|13C17J|GHM|9 +D12|13C181|GHM|9 +D12|13C182|GHM|9 +D12|13C183|GHM|9 +D12|13C184|GHM|9 +D12|13C191|GHM|9 +D12|13C192|GHM|9 +D12|13C193|GHM|9 +D12|13C194|GHM|9 +D12|13C19J|GHM|9 +D12|13C201|GHM|9 +D12|13C202|GHM|9 +D12|13C203|GHM|9 +D12|13C204|GHM|9 +D12|13C20J|GHM|9 +D12|13M02Z|GHM|9 +D12|13M031|GHM|9 +D12|13M032|GHM|9 +D12|13M033|GHM|9 +D12|13M034|GHM|9 +D12|13M03T|GHM|9 +D12|13M03V|GHM|9 +D12|13M03W|GHM|9 +D12|13M041|GHM|9 +D12|13M042|GHM|9 +D12|13M043|GHM|9 +D12|13M044|GHM|9 +D12|13M04T|GHM|9 +D12|13M04V|GHM|9 +D12|13M04W|GHM|9 +D12|13M051|GHM|9 +D12|13M052|GHM|9 +D12|13M053|GHM|9 +D12|13M054|GHM|9 +D12|13M061|GHM|9 +D12|13M062|GHM|9 +D12|13M063|GHM|9 +D12|13M064|GHM|9 +D12|13M06T|GHM|9 +D12|13M071|GHM|9 +D12|13M072|GHM|9 +D12|13M073|GHM|9 +D12|13M074|GHM|9 +D12|13M081|GHM|9 +D12|13M082|GHM|9 +D12|13M083|GHM|9 +D12|13M084|GHM|9 +D12|13M09Z|GHM|9 +D12|13M10Z|GHM|9 +D13|14C02A|GHM|9 +D13|14C02B|GHM|9 +D13|14C02C|GHM|9 +D13|14C03A|GHM|9 +D13|14C03B|GHM|9 +D13|14C03C|GHM|9 +D13|14C03D|GHM|9 +D13|14C03Z|GHM|9 +D13|14C04T|GHM|9 +D13|14C04Z|GHM|9 +D13|14C05J|GHM|9 +D13|14C05Z|GHM|9 +D13|14C06A|GHM|9 +D13|14C06B|GHM|9 +D13|14C06C|GHM|9 +D13|14C06D|GHM|9 +D13|14C07A|GHM|9 +D13|14C07B|GHM|9 +D13|14C07C|GHM|9 +D13|14C07D|GHM|9 +D13|14C08A|GHM|9 +D13|14C08B|GHM|9 +D13|14C08C|GHM|9 +D13|14C08D|GHM|9 +D13|14C09A|GHM|9 +D13|14C09B|GHM|9 +D13|14C10T|GHM|9 +D13|14C10Z|GHM|9 +D13|14M02A|GHM|9 +D13|14M02B|GHM|9 +D13|14M02T|GHM|9 +D13|14M02Z|GHM|9 +D13|14M03A|GHM|9 +D13|14M03B|GHM|9 +D13|14M03C|GHM|9 +D13|14M03D|GHM|9 +D13|14M03T|GHM|9 +D13|14Z02A|GHM|9 +D13|14Z02B|GHM|9 +D13|14Z02C|GHM|9 +D13|14Z02T|GHM|9 +D13|14Z03A|GHM|9 +D13|14Z03B|GHM|9 +D13|14Z03T|GHM|9 +D13|14Z04T|GHM|9 +D13|14Z04Z|GHM|9 +D13|14Z05Z|GHM|9 +D13|14Z06T|GHM|9 +D13|14Z06Z|GHM|9 +D13|14Z07Z|GHM|9 +D13|14Z08Z|GHM|9 +D13|14Z09Z|GHM|9 +D13|14Z10A|GHM|9 +D13|14Z10B|GHM|9 +D13|14Z10T|GHM|9 +D13|14Z11A|GHM|9 +D13|14Z11B|GHM|9 +D13|14Z12A|GHM|9 +D13|14Z12B|GHM|9 +D13|14Z13A|GHM|9 +D13|14Z13B|GHM|9 +D13|14Z13C|GHM|9 +D13|14Z13D|GHM|9 +D13|14Z13T|GHM|9 +D13|14Z14A|GHM|9 +D13|14Z14B|GHM|9 +D13|14Z14C|GHM|9 +D13|14Z14D|GHM|9 +D13|14Z14T|GHM|9 +D13|14Z15Z|GHM|9 +D13|14Z16T|GHM|9 +D13|14Z16Z|GHM|9 +D14|15C02A|GHM|9 +D14|15C02B|GHM|9 +D14|15C02Z|GHM|9 +D14|15C03A|GHM|9 +D14|15C03B|GHM|9 +D14|15C03Z|GHM|9 +D14|15C04A|GHM|9 +D14|15C04B|GHM|9 +D14|15C04Z|GHM|9 +D14|15C05A|GHM|9 +D14|15C05B|GHM|9 +D14|15C05Z|GHM|9 +D14|15C06A|GHM|9 +D14|15C06B|GHM|9 +D14|15C06Z|GHM|9 +D14|15M02Z|GHM|9 +D14|15M03E|GHM|9 +D14|15M04E|GHM|9 +D14|15M05A|GHM|9 +D14|15M05B|GHM|9 +D14|15M05C|GHM|9 +D14|15M05D|GHM|9 +D14|15M06A|GHM|9 +D14|15M06B|GHM|9 +D14|15M06C|GHM|9 +D14|15M06D|GHM|9 +D14|15M07A|GHM|9 +D14|15M07B|GHM|9 +D14|15M07C|GHM|9 +D14|15M08A|GHM|9 +D14|15M08B|GHM|9 +D14|15M08C|GHM|9 +D14|15M09A|GHM|9 +D14|15M09B|GHM|9 +D14|15M09C|GHM|9 +D14|15M10A|GHM|9 +D14|15M10B|GHM|9 +D14|15M10C|GHM|9 +D14|15M11A|GHM|9 +D14|15M11B|GHM|9 +D14|15M11C|GHM|9 +D14|15M12A|GHM|9 +D14|15M12B|GHM|9 +D14|15M13A|GHM|9 +D14|15M13B|GHM|9 +D14|15M14A|GHM|9 +D14|15M14B|GHM|9 +D14|15Z02T|GHM|9 +D14|15Z02Z|GHM|9 +D14|15Z03Z|GHM|9 +D14|15Z04E|GHM|9 +D14|15Z05A|GHM|9 +D14|15Z05B|GHM|9 +D14|15Z05C|GHM|9 +D14|15Z05D|GHM|9 +D14|15Z06A|GHM|9 +D14|15Z06B|GHM|9 +D14|15Z06C|GHM|9 +D14|15Z06D|GHM|9 +D14|15Z07A|GHM|9 +D14|15Z07B|GHM|9 +D14|15Z07C|GHM|9 +D14|15Z08A|GHM|9 +D14|15Z08E|GHM|9 +D14|15Z08Z|GHM|9 +D14|15Z09A|GHM|9 +D14|15Z09E|GHM|9 +D14|15Z09Z|GHM|9 +D14|15Z10E|GHM|9 +D15|10C031|GHM|9 +D15|10C032|GHM|9 +D15|10C033|GHM|9 +D15|10C034|GHM|9 +D15|10C03Z|GHM|9 +D15|11C021|GHM|9 +D15|11C022|GHM|9 +D15|11C023|GHM|9 +D15|11C024|GHM|9 +D15|11C02V|GHM|9 +D15|11C02W|GHM|9 +D15|11C031|GHM|9 +D15|11C032|GHM|9 +D15|11C033|GHM|9 +D15|11C034|GHM|9 +D15|11C03V|GHM|9 +D15|11C03W|GHM|9 +D15|11C041|GHM|9 +D15|11C042|GHM|9 +D15|11C043|GHM|9 +D15|11C044|GHM|9 +D15|11C04J|GHM|9 +D15|11C04Z|GHM|9 +D15|11C051|GHM|9 +D15|11C052|GHM|9 +D15|11C053|GHM|9 +D15|11C054|GHM|9 +D15|11C05J|GHM|9 +D15|11C05V|GHM|9 +D15|11C05W|GHM|9 +D15|11C061|GHM|9 +D15|11C062|GHM|9 +D15|11C063|GHM|9 +D15|11C064|GHM|9 +D15|11C06Z|GHM|9 +D15|11C071|GHM|9 +D15|11C072|GHM|9 +D15|11C073|GHM|9 +D15|11C074|GHM|9 +D15|11C07J|GHM|9 +D15|11C07Z|GHM|9 +D15|11C081|GHM|9 +D15|11C082|GHM|9 +D15|11C083|GHM|9 +D15|11C084|GHM|9 +D15|11C08T|GHM|9 +D15|11C08V|GHM|9 +D15|11C08W|GHM|9 +D15|11C101|GHM|9 +D15|11C102|GHM|9 +D15|11C103|GHM|9 +D15|11C104|GHM|9 +D15|11C10J|GHM|9 +D15|11C111|GHM|9 +D15|11C112|GHM|9 +D15|11C113|GHM|9 +D15|11C114|GHM|9 +D15|11C11J|GHM|9 +D15|11C121|GHM|9 +D15|11C122|GHM|9 +D15|11C123|GHM|9 +D15|11C124|GHM|9 +D15|11C12J|GHM|9 +D15|11C131|GHM|9 +D15|11C132|GHM|9 +D15|11C133|GHM|9 +D15|11C134|GHM|9 +D15|11C13J|GHM|9 +D15|11K021|GHM|9 +D15|11K022|GHM|9 +D15|11K023|GHM|9 +D15|11K024|GHM|9 +D15|11K02J|GHM|9 +D15|11K02V|GHM|9 +D15|11K02W|GHM|9 +D15|11K03Z|GHM|9 +D15|11K04Z|GHM|9 +D15|11K05Z|GHM|9 +D15|11K06Z|GHM|9 +D15|11K08J|GHM|9 +D15|11M021|GHM|9 +D15|11M022|GHM|9 +D15|11M023|GHM|9 +D15|11M024|GHM|9 +D15|11M02T|GHM|9 +D15|11M02V|GHM|9 +D15|11M02W|GHM|9 +D15|11M031|GHM|9 +D15|11M032|GHM|9 +D15|11M033|GHM|9 +D15|11M034|GHM|9 +D15|11M03T|GHM|9 +D15|11M03V|GHM|9 +D15|11M03W|GHM|9 +D15|11M041|GHM|9 +D15|11M042|GHM|9 +D15|11M043|GHM|9 +D15|11M044|GHM|9 +D15|11M04T|GHM|9 +D15|11M04V|GHM|9 +D15|11M04W|GHM|9 +D15|11M061|GHM|9 +D15|11M062|GHM|9 +D15|11M063|GHM|9 +D15|11M064|GHM|9 +D15|11M06T|GHM|9 +D15|11M06V|GHM|9 +D15|11M06W|GHM|9 +D15|11M071|GHM|9 +D15|11M072|GHM|9 +D15|11M073|GHM|9 +D15|11M074|GHM|9 +D15|11M07T|GHM|9 +D15|11M07V|GHM|9 +D15|11M07W|GHM|9 +D15|11M081|GHM|9 +D15|11M082|GHM|9 +D15|11M083|GHM|9 +D15|11M084|GHM|9 +D15|11M08T|GHM|9 +D15|11M08Z|GHM|9 +D15|11M101|GHM|9 +D15|11M102|GHM|9 +D15|11M103|GHM|9 +D15|11M104|GHM|9 +D15|11M10T|GHM|9 +D15|11M10V|GHM|9 +D15|11M10W|GHM|9 +D15|11M111|GHM|9 +D15|11M112|GHM|9 +D15|11M113|GHM|9 +D15|11M114|GHM|9 +D15|11M11Z|GHM|9 +D15|11M121|GHM|9 +D15|11M122|GHM|9 +D15|11M123|GHM|9 +D15|11M124|GHM|9 +D15|11M12T|GHM|9 +D15|11M12V|GHM|9 +D15|11M12W|GHM|9 +D15|11M151|GHM|9 +D15|11M152|GHM|9 +D15|11M153|GHM|9 +D15|11M154|GHM|9 +D15|11M15T|GHM|9 +D15|11M161|GHM|9 +D15|11M162|GHM|9 +D15|11M163|GHM|9 +D15|11M164|GHM|9 +D15|11M16T|GHM|9 +D15|11M171|GHM|9 +D15|11M172|GHM|9 +D15|11M173|GHM|9 +D15|11M174|GHM|9 +D15|11M18Z|GHM|9 +D15|11M19T|GHM|9 +D15|11M19Z|GHM|9 +D15|11M201|GHM|9 +D15|11M202|GHM|9 +D15|11M203|GHM|9 +D15|11M204|GHM|9 +D15|12C02Z|GHM|9 +D15|12C031|GHM|9 +D15|12C032|GHM|9 +D15|12C033|GHM|9 +D15|12C034|GHM|9 +D15|12C03J|GHM|9 +D15|12C03Z|GHM|9 +D15|12C041|GHM|9 +D15|12C042|GHM|9 +D15|12C043|GHM|9 +D15|12C044|GHM|9 +D15|12C04J|GHM|9 +D15|12C04V|GHM|9 +D15|12C04W|GHM|9 +D15|12C051|GHM|9 +D15|12C052|GHM|9 +D15|12C053|GHM|9 +D15|12C054|GHM|9 +D15|12C05Z|GHM|9 +D15|12C061|GHM|9 +D15|12C062|GHM|9 +D15|12C063|GHM|9 +D15|12C064|GHM|9 +D15|12C06J|GHM|9 +D15|12C06Z|GHM|9 +D15|12C071|GHM|9 +D15|12C072|GHM|9 +D15|12C073|GHM|9 +D15|12C074|GHM|9 +D15|12C07J|GHM|9 +D15|12C07Z|GHM|9 +D15|12C081|GHM|9 +D15|12C082|GHM|9 +D15|12C083|GHM|9 +D15|12C084|GHM|9 +D15|12C08J|GHM|9 +D15|12C08Z|GHM|9 +D15|12C091|GHM|9 +D15|12C092|GHM|9 +D15|12C093|GHM|9 +D15|12C094|GHM|9 +D15|12C09Z|GHM|9 +D15|12C101|GHM|9 +D15|12C102|GHM|9 +D15|12C103|GHM|9 +D15|12C104|GHM|9 +D15|12C10Z|GHM|9 +D15|12C111|GHM|9 +D15|12C112|GHM|9 +D15|12C113|GHM|9 +D15|12C114|GHM|9 +D15|12C11Z|GHM|9 +D15|12C121|GHM|9 +D15|12C122|GHM|9 +D15|12C123|GHM|9 +D15|12C124|GHM|9 +D15|12C12Z|GHM|9 +D15|12C131|GHM|9 +D15|12C132|GHM|9 +D15|12C133|GHM|9 +D15|12C134|GHM|9 +D15|12C13J|GHM|9 +D15|12K02Z|GHM|9 +D15|12K03Z|GHM|9 +D15|12K06J|GHM|9 +D15|12M031|GHM|9 +D15|12M032|GHM|9 +D15|12M033|GHM|9 +D15|12M034|GHM|9 +D15|12M03T|GHM|9 +D15|12M03V|GHM|9 +D15|12M03W|GHM|9 +D15|12M041|GHM|9 +D15|12M042|GHM|9 +D15|12M043|GHM|9 +D15|12M044|GHM|9 +D15|12M04T|GHM|9 +D15|12M04V|GHM|9 +D15|12M04W|GHM|9 +D15|12M051|GHM|9 +D15|12M052|GHM|9 +D15|12M053|GHM|9 +D15|12M054|GHM|9 +D15|12M05T|GHM|9 +D15|12M05Z|GHM|9 +D15|12M061|GHM|9 +D15|12M062|GHM|9 +D15|12M063|GHM|9 +D15|12M064|GHM|9 +D15|12M06T|GHM|9 +D15|12M071|GHM|9 +D15|12M072|GHM|9 +D15|12M073|GHM|9 +D15|12M074|GHM|9 +D15|12M07T|GHM|9 +D15|12M08Z|GHM|9 +D15|12M09Z|GHM|9 +D15|13K02Z|GHM|9 +D15|13K03Z|GHM|9 +D15|13K04Z|GHM|9 +D15|13K05Z|GHM|9 +D15|13K06J|GHM|9 +D16|16C031|GHM|9 +D16|16C032|GHM|9 +D16|16C033|GHM|9 +D16|16C034|GHM|9 +D16|16C03J|GHM|9 +D16|16C03V|GHM|9 +D16|16C03W|GHM|9 +D16|16M061|GHM|9 +D16|16M062|GHM|9 +D16|16M063|GHM|9 +D16|16M064|GHM|9 +D16|16M06T|GHM|9 +D16|16M071|GHM|9 +D16|16M072|GHM|9 +D16|16M073|GHM|9 +D16|16M074|GHM|9 +D16|16M081|GHM|9 +D16|16M082|GHM|9 +D16|16M083|GHM|9 +D16|16M084|GHM|9 +D16|16M091|GHM|9 +D16|16M092|GHM|9 +D16|16M093|GHM|9 +D16|16M094|GHM|9 +D16|16M09T|GHM|9 +D16|16M101|GHM|9 +D16|16M102|GHM|9 +D16|16M103|GHM|9 +D16|16M104|GHM|9 +D16|16M10T|GHM|9 +D16|16M111|GHM|9 +D16|16M112|GHM|9 +D16|16M113|GHM|9 +D16|16M114|GHM|9 +D16|16M11T|GHM|9 +D16|16M121|GHM|9 +D16|16M122|GHM|9 +D16|16M123|GHM|9 +D16|16M124|GHM|9 +D16|16M12T|GHM|9 +D16|16M131|GHM|9 +D16|16M132|GHM|9 +D16|16M133|GHM|9 +D16|16M134|GHM|9 +D16|16M13T|GHM|9 +D16|16M14Z|GHM|9 +D16|16M15T|GHM|9 +D16|16M15Z|GHM|9 +D16|16M161|GHM|9 +D16|16M162|GHM|9 +D16|16M163|GHM|9 +D16|16M164|GHM|9 +D16|16M16T|GHM|9 +D16|16M171|GHM|9 +D16|16M172|GHM|9 +D16|16M173|GHM|9 +D16|16M174|GHM|9 +D16|16M17T|GHM|9 +D16|16M181|GHM|9 +D16|16M182|GHM|9 +D16|16M183|GHM|9 +D16|16M184|GHM|9 +D16|17C021|GHM|9 +D16|17C022|GHM|9 +D16|17C023|GHM|9 +D16|17C024|GHM|9 +D16|17C02V|GHM|9 +D16|17C02W|GHM|9 +D16|17C031|GHM|9 +D16|17C032|GHM|9 +D16|17C033|GHM|9 +D16|17C034|GHM|9 +D16|17C03J|GHM|9 +D16|17C03V|GHM|9 +D16|17C03W|GHM|9 +D16|17C041|GHM|9 +D16|17C042|GHM|9 +D16|17C043|GHM|9 +D16|17C044|GHM|9 +D16|17C04V|GHM|9 +D16|17C04W|GHM|9 +D16|17C051|GHM|9 +D16|17C052|GHM|9 +D16|17C053|GHM|9 +D16|17C054|GHM|9 +D16|17C05J|GHM|9 +D16|17C05V|GHM|9 +D16|17C05W|GHM|9 +D16|17C061|GHM|9 +D16|17C062|GHM|9 +D16|17C063|GHM|9 +D16|17C064|GHM|9 +D16|17C071|GHM|9 +D16|17C072|GHM|9 +D16|17C073|GHM|9 +D16|17C074|GHM|9 +D16|17C081|GHM|9 +D16|17C082|GHM|9 +D16|17C083|GHM|9 +D16|17C084|GHM|9 +D16|17C08J|GHM|9 +D16|17M071|GHM|9 +D16|17M072|GHM|9 +D16|17M073|GHM|9 +D16|17M074|GHM|9 +D16|17M07T|GHM|9 +D16|17M07V|GHM|9 +D16|17M07W|GHM|9 +D16|17M081|GHM|9 +D16|17M082|GHM|9 +D16|17M083|GHM|9 +D16|17M084|GHM|9 +D16|17M08T|GHM|9 +D16|17M08Z|GHM|9 +D16|17M091|GHM|9 +D16|17M092|GHM|9 +D16|17M093|GHM|9 +D16|17M094|GHM|9 +D16|17M09T|GHM|9 +D16|17M09V|GHM|9 +D16|17M09W|GHM|9 +D16|17M111|GHM|9 +D16|17M112|GHM|9 +D16|17M113|GHM|9 +D16|17M114|GHM|9 +D16|17M11T|GHM|9 +D16|17M121|GHM|9 +D16|17M122|GHM|9 +D16|17M123|GHM|9 +D16|17M124|GHM|9 +D16|17M12T|GHM|9 +D16|17M131|GHM|9 +D16|17M132|GHM|9 +D16|17M133|GHM|9 +D16|17M134|GHM|9 +D16|17M13T|GHM|9 +D16|17M14Z|GHM|9 +D16|17M151|GHM|9 +D16|17M152|GHM|9 +D16|17M153|GHM|9 +D16|17M154|GHM|9 +D16|17M15T|GHM|9 +D16|17M161|GHM|9 +D16|17M162|GHM|9 +D16|17M163|GHM|9 +D16|17M164|GHM|9 +D16|17M16T|GHM|9 +D16|17M171|GHM|9 +D16|17M172|GHM|9 +D16|17M173|GHM|9 +D16|17M174|GHM|9 +D16|17M17T|GHM|9 +D16|27Z021|GHM|9 +D16|27Z022|GHM|9 +D16|27Z023|GHM|9 +D16|27Z024|GHM|9 +D16|27Z02Z|GHM|9 +D16|27Z03Z|GHM|9 +D16|27Z04J|GHM|9 +D17|17K02Z|GHM|9 +D17|17K03Z|GHM|9 +D17|17K041|GHM|9 +D17|17K042|GHM|9 +D17|17K043|GHM|9 +D17|17K044|GHM|9 +D17|17K04Z|GHM|9 +D17|17K051|GHM|9 +D17|17K052|GHM|9 +D17|17K053|GHM|9 +D17|17K054|GHM|9 +D17|17K05Z|GHM|9 +D17|17K061|GHM|9 +D17|17K062|GHM|9 +D17|17K063|GHM|9 +D17|17K064|GHM|9 +D17|17K06Z|GHM|9 +D17|17K081|GHM|9 +D17|17K082|GHM|9 +D17|17K083|GHM|9 +D17|17K084|GHM|9 +D17|17K091|GHM|9 +D17|17K092|GHM|9 +D17|17K093|GHM|9 +D17|17K094|GHM|9 +D17|17M02Z|GHM|9 +D17|17M04Z|GHM|9 +D17|17M051|GHM|9 +D17|17M052|GHM|9 +D17|17M053|GHM|9 +D17|17M054|GHM|9 +D17|17M05Z|GHM|9 +D17|17M061|GHM|9 +D17|17M062|GHM|9 +D17|17M063|GHM|9 +D17|17M064|GHM|9 +D17|17M06T|GHM|9 +D17|17M06V|GHM|9 +D17|17M06W|GHM|9 +D17|23M091|GHM|9 +D17|23M092|GHM|9 +D17|23M093|GHM|9 +D17|23M094|GHM|9 +D18|18M021|GHM|9 +D18|18M022|GHM|9 +D18|18M023|GHM|9 +D18|18M024|GHM|9 +D18|18M02V|GHM|9 +D18|18M02W|GHM|9 +D18|18M031|GHM|9 +D18|18M032|GHM|9 +D18|18M033|GHM|9 +D18|18M034|GHM|9 +D18|18M03T|GHM|9 +D18|18M03Z|GHM|9 +D18|18M041|GHM|9 +D18|18M042|GHM|9 +D18|18M043|GHM|9 +D18|18M044|GHM|9 +D18|18M04T|GHM|9 +D18|18M04V|GHM|9 +D18|18M04W|GHM|9 +D18|18M061|GHM|9 +D18|18M062|GHM|9 +D18|18M063|GHM|9 +D18|18M064|GHM|9 +D18|18M06Z|GHM|9 +D18|18M071|GHM|9 +D18|18M072|GHM|9 +D18|18M073|GHM|9 +D18|18M074|GHM|9 +D18|18M07T|GHM|9 +D18|18M07V|GHM|9 +D18|18M07W|GHM|9 +D18|18M091|GHM|9 +D18|18M092|GHM|9 +D18|18M093|GHM|9 +D18|18M094|GHM|9 +D18|18M09T|GHM|9 +D18|18M101|GHM|9 +D18|18M102|GHM|9 +D18|18M103|GHM|9 +D18|18M104|GHM|9 +D18|18M10T|GHM|9 +D18|18M111|GHM|9 +D18|18M112|GHM|9 +D18|18M113|GHM|9 +D18|18M114|GHM|9 +D18|18M11T|GHM|9 +D18|18M12Z|GHM|9 +D18|18M13E|GHM|9 +D18|18M14T|GHM|9 +D18|18M14Z|GHM|9 +D18|18M151|GHM|9 +D18|18M152|GHM|9 +D18|18M153|GHM|9 +D18|18M154|GHM|9 +D18|23M07J|GHM|9 +D18|25M02A|GHM|9 +D18|25M02B|GHM|9 +D18|25M02C|GHM|9 +D18|25M02T|GHM|9 +D18|25Z02E|GHM|9 +D18|25Z031|GHM|9 +D18|25Z032|GHM|9 +D18|25Z033|GHM|9 +D18|25Z034|GHM|9 +D18|25Z03Z|GHM|9 +D19|10C051|GHM|9 +D19|10C052|GHM|9 +D19|10C053|GHM|9 +D19|10C054|GHM|9 +D19|10C05Z|GHM|9 +D19|10C071|GHM|9 +D19|10C072|GHM|9 +D19|10C073|GHM|9 +D19|10C074|GHM|9 +D19|10C07Z|GHM|9 +D19|10C101|GHM|9 +D19|10C102|GHM|9 +D19|10C103|GHM|9 +D19|10C104|GHM|9 +D19|10C10Z|GHM|9 +D19|10C111|GHM|9 +D19|10C112|GHM|9 +D19|10C113|GHM|9 +D19|10C114|GHM|9 +D19|10C11V|GHM|9 +D19|10C11W|GHM|9 +D19|10C121|GHM|9 +D19|10C122|GHM|9 +D19|10C123|GHM|9 +D19|10C124|GHM|9 +D19|10C12V|GHM|9 +D19|10C12W|GHM|9 +D19|10M021|GHM|9 +D19|10M022|GHM|9 +D19|10M023|GHM|9 +D19|10M024|GHM|9 +D19|10M02T|GHM|9 +D19|10M02V|GHM|9 +D19|10M02W|GHM|9 +D19|10M031|GHM|9 +D19|10M032|GHM|9 +D19|10M033|GHM|9 +D19|10M034|GHM|9 +D19|10M03T|GHM|9 +D19|10M03Z|GHM|9 +D19|10M06Z|GHM|9 +D19|10M071|GHM|9 +D19|10M072|GHM|9 +D19|10M073|GHM|9 +D19|10M074|GHM|9 +D19|10M07T|GHM|9 +D19|10M07V|GHM|9 +D19|10M07W|GHM|9 +D19|10M081|GHM|9 +D19|10M082|GHM|9 +D19|10M083|GHM|9 +D19|10M084|GHM|9 +D19|10M08T|GHM|9 +D19|10M091|GHM|9 +D19|10M092|GHM|9 +D19|10M093|GHM|9 +D19|10M094|GHM|9 +D19|10M09T|GHM|9 +D19|10M101|GHM|9 +D19|10M102|GHM|9 +D19|10M103|GHM|9 +D19|10M104|GHM|9 +D19|10M10T|GHM|9 +D19|10M111|GHM|9 +D19|10M112|GHM|9 +D19|10M113|GHM|9 +D19|10M114|GHM|9 +D19|10M11T|GHM|9 +D19|10M121|GHM|9 +D19|10M122|GHM|9 +D19|10M123|GHM|9 +D19|10M124|GHM|9 +D19|10M12T|GHM|9 +D19|10M13T|GHM|9 +D19|10M13Z|GHM|9 +D19|10M14T|GHM|9 +D19|10M14Z|GHM|9 +D19|10M151|GHM|9 +D19|10M152|GHM|9 +D19|10M153|GHM|9 +D19|10M154|GHM|9 +D19|10M15T|GHM|9 +D19|10M161|GHM|9 +D19|10M162|GHM|9 +D19|10M163|GHM|9 +D19|10M164|GHM|9 +D19|10M16T|GHM|9 +D19|10M171|GHM|9 +D19|10M172|GHM|9 +D19|10M173|GHM|9 +D19|10M174|GHM|9 +D19|10M17T|GHM|9 +D19|10M181|GHM|9 +D19|10M182|GHM|9 +D19|10M183|GHM|9 +D19|10M184|GHM|9 +D19|10M18T|GHM|9 +D19|10M191|GHM|9 +D19|10M192|GHM|9 +D19|10M193|GHM|9 +D19|10M194|GHM|9 +D19|10M201|GHM|9 +D19|10M202|GHM|9 +D19|10M203|GHM|9 +D19|10M204|GHM|9 +D19|23M08J|GHM|9 +D20|08C201|GHM|9 +D20|08C202|GHM|9 +D20|08C203|GHM|9 +D20|08C204|GHM|9 +D20|08C20J|GHM|9 +D20|08C20Z|GHM|9 +D20|09C021|GHM|9 +D20|09C022|GHM|9 +D20|09C023|GHM|9 +D20|09C024|GHM|9 +D20|09C02J|GHM|9 +D20|09C02V|GHM|9 +D20|09C02W|GHM|9 +D20|09C031|GHM|9 +D20|09C032|GHM|9 +D20|09C033|GHM|9 +D20|09C034|GHM|9 +D20|09C03J|GHM|9 +D20|09C03V|GHM|9 +D20|09C03W|GHM|9 +D20|09C091|GHM|9 +D20|09C092|GHM|9 +D20|09C093|GHM|9 +D20|09C094|GHM|9 +D20|09C09J|GHM|9 +D20|09C09Z|GHM|9 +D20|09C121|GHM|9 +D20|09C122|GHM|9 +D20|09C123|GHM|9 +D20|09C124|GHM|9 +D20|09C12J|GHM|9 +D20|09M021|GHM|9 +D20|09M022|GHM|9 +D20|09M023|GHM|9 +D20|09M024|GHM|9 +D20|09M02T|GHM|9 +D20|09M02Z|GHM|9 +D20|09M031|GHM|9 +D20|09M032|GHM|9 +D20|09M033|GHM|9 +D20|09M034|GHM|9 +D20|09M03T|GHM|9 +D20|09M03V|GHM|9 +D20|09M03W|GHM|9 +D20|09M041|GHM|9 +D20|09M042|GHM|9 +D20|09M043|GHM|9 +D20|09M044|GHM|9 +D20|09M04T|GHM|9 +D20|09M04Z|GHM|9 +D20|09M051|GHM|9 +D20|09M052|GHM|9 +D20|09M053|GHM|9 +D20|09M054|GHM|9 +D20|09M05T|GHM|9 +D20|09M05V|GHM|9 +D20|09M05W|GHM|9 +D20|09M061|GHM|9 +D20|09M062|GHM|9 +D20|09M063|GHM|9 +D20|09M064|GHM|9 +D20|09M06T|GHM|9 +D20|09M06Z|GHM|9 +D20|09M071|GHM|9 +D20|09M072|GHM|9 +D20|09M073|GHM|9 +D20|09M074|GHM|9 +D20|09M07T|GHM|9 +D20|09M07V|GHM|9 +D20|09M07W|GHM|9 +D20|09M081|GHM|9 +D20|09M082|GHM|9 +D20|09M083|GHM|9 +D20|09M084|GHM|9 +D20|09M08T|GHM|9 +D20|09M08V|GHM|9 +D20|09M08W|GHM|9 +D20|09M111|GHM|9 +D20|09M112|GHM|9 +D20|09M113|GHM|9 +D20|09M114|GHM|9 +D20|09M11T|GHM|9 +D20|09M12Z|GHM|9 +D20|09M14T|GHM|9 +D20|09M14Z|GHM|9 +D20|21C021|GHM|9 +D20|21C022|GHM|9 +D20|21C023|GHM|9 +D20|21C024|GHM|9 +D20|21C02J|GHM|9 +D20|21C02Z|GHM|9 +D20|21C031|GHM|9 +D20|21C032|GHM|9 +D20|21C033|GHM|9 +D20|21C034|GHM|9 +D20|21C03J|GHM|9 +D20|21C03Z|GHM|9 +D20|21C061|GHM|9 +D20|21C062|GHM|9 +D20|21C063|GHM|9 +D20|21C064|GHM|9 +D20|21C06J|GHM|9 +D21|22C021|GHM|9 +D21|22C022|GHM|9 +D21|22C023|GHM|9 +D21|22C024|GHM|9 +D21|22C02J|GHM|9 +D21|22C02Z|GHM|9 +D21|22C031|GHM|9 +D21|22C032|GHM|9 +D21|22C033|GHM|9 +D21|22C034|GHM|9 +D21|22C03Z|GHM|9 +D21|22K02J|GHM|9 +D21|22M021|GHM|9 +D21|22M022|GHM|9 +D21|22M023|GHM|9 +D21|22M024|GHM|9 +D21|22M02T|GHM|9 +D21|22M02Z|GHM|9 +D21|22Z021|GHM|9 +D21|22Z022|GHM|9 +D21|22Z023|GHM|9 +D21|22Z024|GHM|9 +D21|22Z02Z|GHM|9 +D21|22Z03Z|GHM|9 +D22|19M021|GHM|9 +D22|19M022|GHM|9 +D22|19M023|GHM|9 +D22|19M024|GHM|9 +D22|19M02T|GHM|9 +D22|19M02V|GHM|9 +D22|19M02W|GHM|9 +D22|19M03Z|GHM|9 +D22|19M04Z|GHM|9 +D22|19M05Z|GHM|9 +D22|19M061|GHM|9 +D22|19M062|GHM|9 +D22|19M063|GHM|9 +D22|19M064|GHM|9 +D22|19M06T|GHM|9 +D22|19M06V|GHM|9 +D22|19M06W|GHM|9 +D22|19M071|GHM|9 +D22|19M072|GHM|9 +D22|19M073|GHM|9 +D22|19M074|GHM|9 +D22|19M07T|GHM|9 +D22|19M07V|GHM|9 +D22|19M07W|GHM|9 +D22|19M08Z|GHM|9 +D22|19M09Z|GHM|9 +D22|19M101|GHM|9 +D22|19M102|GHM|9 +D22|19M103|GHM|9 +D22|19M104|GHM|9 +D22|19M10T|GHM|9 +D22|19M10Z|GHM|9 +D22|19M111|GHM|9 +D22|19M112|GHM|9 +D22|19M113|GHM|9 +D22|19M114|GHM|9 +D22|19M11T|GHM|9 +D22|19M11V|GHM|9 +D22|19M11W|GHM|9 +D22|19M121|GHM|9 +D22|19M122|GHM|9 +D22|19M123|GHM|9 +D22|19M124|GHM|9 +D22|19M12T|GHM|9 +D22|19M131|GHM|9 +D22|19M132|GHM|9 +D22|19M133|GHM|9 +D22|19M134|GHM|9 +D22|19M13T|GHM|9 +D22|19M141|GHM|9 +D22|19M142|GHM|9 +D22|19M143|GHM|9 +D22|19M144|GHM|9 +D22|19M14T|GHM|9 +D22|19M151|GHM|9 +D22|19M152|GHM|9 +D22|19M153|GHM|9 +D22|19M154|GHM|9 +D22|19M15T|GHM|9 +D22|19M161|GHM|9 +D22|19M162|GHM|9 +D22|19M163|GHM|9 +D22|19M164|GHM|9 +D22|19M16T|GHM|9 +D22|19M171|GHM|9 +D22|19M172|GHM|9 +D22|19M173|GHM|9 +D22|19M174|GHM|9 +D22|19M181|GHM|9 +D22|19M182|GHM|9 +D22|19M183|GHM|9 +D22|19M184|GHM|9 +D22|19M18T|GHM|9 +D22|19M191|GHM|9 +D22|19M192|GHM|9 +D22|19M193|GHM|9 +D22|19M194|GHM|9 +D22|19M19T|GHM|9 +D22|19M201|GHM|9 +D22|19M202|GHM|9 +D22|19M203|GHM|9 +D22|19M204|GHM|9 +D22|19M20T|GHM|9 +D22|19M21Z|GHM|9 +D22|19M22T|GHM|9 +D22|19M22Z|GHM|9 +D23|20Z021|GHM|9 +D23|20Z022|GHM|9 +D23|20Z023|GHM|9 +D23|20Z024|GHM|9 +D23|20Z02T|GHM|9 +D23|20Z02Z|GHM|9 +D23|20Z031|GHM|9 +D23|20Z032|GHM|9 +D23|20Z033|GHM|9 +D23|20Z034|GHM|9 +D23|20Z03Z|GHM|9 +D23|20Z041|GHM|9 +D23|20Z042|GHM|9 +D23|20Z043|GHM|9 +D23|20Z044|GHM|9 +D23|20Z04T|GHM|9 +D23|20Z04Z|GHM|9 +D23|20Z051|GHM|9 +D23|20Z052|GHM|9 +D23|20Z053|GHM|9 +D23|20Z054|GHM|9 +D23|20Z05Z|GHM|9 +D23|20Z061|GHM|9 +D23|20Z062|GHM|9 +D23|20Z063|GHM|9 +D23|20Z064|GHM|9 +D23|20Z06T|GHM|9 +D23|20Z06V|GHM|9 +D23|20Z06W|GHM|9 +D23|21M021|GHM|9 +D23|21M022|GHM|9 +D23|21M023|GHM|9 +D23|21M024|GHM|9 +D23|21M02T|GHM|9 +D23|21M02Z|GHM|9 +D23|21M041|GHM|9 +D23|21M042|GHM|9 +D23|21M043|GHM|9 +D23|21M044|GHM|9 +D23|21M04T|GHM|9 +D23|21M04Z|GHM|9 +D23|21M051|GHM|9 +D23|21M052|GHM|9 +D23|21M053|GHM|9 +D23|21M054|GHM|9 +D23|21M05T|GHM|9 +D23|21M05Z|GHM|9 +D23|21M101|GHM|9 +D23|21M102|GHM|9 +D23|21M103|GHM|9 +D23|21M104|GHM|9 +D23|21M10T|GHM|9 +D23|21M111|GHM|9 +D23|21M112|GHM|9 +D23|21M113|GHM|9 +D23|21M114|GHM|9 +D23|21M11T|GHM|9 +D23|21M121|GHM|9 +D23|21M122|GHM|9 +D23|21M123|GHM|9 +D23|21M124|GHM|9 +D23|21M141|GHM|9 +D23|21M142|GHM|9 +D23|21M143|GHM|9 +D23|21M144|GHM|9 +D23|21M14T|GHM|9 +D23|21M161|GHM|9 +D23|21M162|GHM|9 +D23|21M163|GHM|9 +D23|21M164|GHM|9 +D23|21M16T|GHM|9 +D24|01K05J|GHM|9 +D24|01M211|GHM|9 +D24|01M212|GHM|9 +D24|01M213|GHM|9 +D24|01M214|GHM|9 +D24|01M21T|GHM|9 +D24|01M21Z|GHM|9 +D24|23Z02T|GHM|9 +D24|23Z02Z|GHM|9 +D25|27C021|GHM|9 +D25|27C022|GHM|9 +D25|27C023|GHM|9 +D25|27C024|GHM|9 +D25|27C02Z|GHM|9 +D25|27C031|GHM|9 +D25|27C032|GHM|9 +D25|27C033|GHM|9 +D25|27C034|GHM|9 +D25|27C03Z|GHM|9 +D25|27C041|GHM|9 +D25|27C042|GHM|9 +D25|27C043|GHM|9 +D25|27C044|GHM|9 +D25|27C04Z|GHM|9 +D25|27C051|GHM|9 +D25|27C052|GHM|9 +D25|27C053|GHM|9 +D25|27C054|GHM|9 +D25|27C05Z|GHM|9 +D25|27C061|GHM|9 +D25|27C062|GHM|9 +D25|27C063|GHM|9 +D25|27C064|GHM|9 +D25|27C06Z|GHM|9 +D25|27C071|GHM|9 +D25|27C072|GHM|9 +D25|27C073|GHM|9 +D25|27C074|GHM|9 +D25|27C07Z|GHM|9 +D26|01C081|GHM|9 +D26|01C082|GHM|9 +D26|01C083|GHM|9 +D26|01C084|GHM|9 +D26|01C08J|GHM|9 +D26|01C08V|GHM|9 +D26|01C08W|GHM|9 +D26|01M37E|GHM|9 +D26|05C181|GHM|9 +D26|05C182|GHM|9 +D26|05C183|GHM|9 +D26|05C184|GHM|9 +D26|05C18J|GHM|9 +D26|05C18Z|GHM|9 +D26|05M22E|GHM|9 +D26|08C211|GHM|9 +D26|08C212|GHM|9 +D26|08C213|GHM|9 +D26|08C214|GHM|9 +D26|08C21J|GHM|9 +D26|08C21V|GHM|9 +D26|08C21W|GHM|9 +D26|08M01S|GHM|9 +D26|09C101|GHM|9 +D26|09C102|GHM|9 +D26|09C103|GHM|9 +D26|09C104|GHM|9 +D26|09C10J|GHM|9 +D26|09C10V|GHM|9 +D26|09C10W|GHM|9 +D26|09C141|GHM|9 +D26|09C142|GHM|9 +D26|09C143|GHM|9 +D26|09C144|GHM|9 +D26|09C14J|GHM|9 +D26|09C151|GHM|9 +D26|09C152|GHM|9 +D26|09C153|GHM|9 +D26|09C154|GHM|9 +D26|09C15J|GHM|9 +D26|09C161|GHM|9 +D26|09C162|GHM|9 +D26|09C163|GHM|9 +D26|09C164|GHM|9 +D26|09C171|GHM|9 +D26|09C172|GHM|9 +D26|09C173|GHM|9 +D26|09C174|GHM|9 +D26|09C181|GHM|9 +D26|09C182|GHM|9 +D26|09C183|GHM|9 +D26|09C184|GHM|9 +D26|09C191|GHM|9 +D26|09C192|GHM|9 +D26|09C193|GHM|9 +D26|09C194|GHM|9 +D26|09C201|GHM|9 +D26|09C202|GHM|9 +D26|09C203|GHM|9 +D26|09C204|GHM|9 +D26|09C20J|GHM|9 +D26|09C211|GHM|9 +D26|09C212|GHM|9 +D26|09C213|GHM|9 +D26|09C214|GHM|9 +D26|09C221|GHM|9 +D26|09C222|GHM|9 +D26|09C223|GHM|9 +D26|09C224|GHM|9 +D26|09C22J|GHM|9 +D26|09C231|GHM|9 +D26|09C232|GHM|9 +D26|09C233|GHM|9 +D26|09C234|GHM|9 +D26|09C23J|GHM|9 +D26|09C241|GHM|9 +D26|09C242|GHM|9 +D26|09C243|GHM|9 +D26|09C244|GHM|9 +D26|09C24J|GHM|9 +D26|09C251|GHM|9 +D26|09C252|GHM|9 +D26|09C253|GHM|9 +D26|09C254|GHM|9 +D26|09C25J|GHM|9 +D26|09C261|GHM|9 +D26|09C262|GHM|9 +D26|09C263|GHM|9 +D26|09C264|GHM|9 +D26|09C26J|GHM|9 +D26|09C271|GHM|9 +D26|09C272|GHM|9 +D26|09C273|GHM|9 +D26|09C274|GHM|9 +D26|09C281|GHM|9 +D26|09C282|GHM|9 +D26|09C283|GHM|9 +D26|09C284|GHM|9 +D26|09C28J|GHM|9 +D26|09C291|GHM|9 +D26|09C292|GHM|9 +D26|09C293|GHM|9 +D26|09C294|GHM|9 +D26|09C29J|GHM|9 +D26|09C301|GHM|9 +D26|09C302|GHM|9 +D26|09C303|GHM|9 +D26|09C304|GHM|9 +D26|09C30J|GHM|9 +D26|09C311|GHM|9 +D26|09C312|GHM|9 +D26|09C313|GHM|9 +D26|09C314|GHM|9 +D26|09C31J|GHM|9 +D26|09C321|GHM|9 +D26|09C322|GHM|9 +D26|09C323|GHM|9 +D26|09C324|GHM|9 +D26|09C32J|GHM|9 +D26|09C331|GHM|9 +D26|09C332|GHM|9 +D26|09C333|GHM|9 +D26|09C334|GHM|9 +D26|09C341|GHM|9 +D26|09C342|GHM|9 +D26|09C343|GHM|9 +D26|09C344|GHM|9 +D26|09C34J|GHM|9 +D26|09K02J|GHM|9 +D26|09Z02A|GHM|9 +D26|09Z02B|GHM|9 +D26|09Z02Z|GHM|9 +D26|10C081|GHM|9 +D26|10C082|GHM|9 +D26|10C083|GHM|9 +D26|10C084|GHM|9 +D26|10C08J|GHM|9 +D26|10C08Z|GHM|9 +D26|17K07J|GHM|9 +D26|18C021|GHM|9 +D26|18C022|GHM|9 +D26|18C023|GHM|9 +D26|18C024|GHM|9 +D26|18C02J|GHM|9 +D26|18C02V|GHM|9 +D26|18C02W|GHM|9 +D26|19C021|GHM|9 +D26|19C022|GHM|9 +D26|19C023|GHM|9 +D26|19C024|GHM|9 +D26|19C02Z|GHM|9 +D26|21C051|GHM|9 +D26|21C052|GHM|9 +D26|21C053|GHM|9 +D26|21C054|GHM|9 +D26|21C05J|GHM|9 +D26|21C05V|GHM|9 +D26|21C05W|GHM|9 +D26|21K02J|GHM|9 +D26|21M131|GHM|9 +D26|21M132|GHM|9 +D26|21M133|GHM|9 +D26|21M134|GHM|9 +D26|21M151|GHM|9 +D26|21M152|GHM|9 +D26|21M153|GHM|9 +D26|21M154|GHM|9 +D26|21M15T|GHM|9 +D26|23C021|GHM|9 +D26|23C022|GHM|9 +D26|23C023|GHM|9 +D26|23C024|GHM|9 +D26|23C02J|GHM|9 +D26|23C02Z|GHM|9 +D26|23K02Z|GHM|9 +D26|23K03J|GHM|9 +D26|23M02T|GHM|9 +D26|23M02Z|GHM|9 +D26|23M04Z|GHM|9 +D26|23M05Z|GHM|9 +D26|23M061|GHM|9 +D26|23M062|GHM|9 +D26|23M063|GHM|9 +D26|23M064|GHM|9 +D26|23M06T|GHM|9 +D26|23M06Z|GHM|9 +D26|23M101|GHM|9 +D26|23M102|GHM|9 +D26|23M103|GHM|9 +D26|23M104|GHM|9 +D26|23M10T|GHM|9 +D26|23M111|GHM|9 +D26|23M112|GHM|9 +D26|23M113|GHM|9 +D26|23M114|GHM|9 +D26|23M11T|GHM|9 +D26|23M13Z|GHM|9 +D26|23M14Z|GHM|9 +D26|23M15Z|GHM|9 +D26|23M16T|GHM|9 +D26|23M16Z|GHM|9 +D26|23M18Z|GHM|9 +D26|23M19Z|GHM|9 +D26|23M20T|GHM|9 +D26|23M20Z|GHM|9 +D26|23M21T|GHM|9 +D26|23M21Z|GHM|9 +D26|23Z03Z|GHM|9 +D26|25C021|GHM|9 +D26|25C022|GHM|9 +D26|25C023|GHM|9 +D26|25C024|GHM|9 +D26|25C02Z|GHM|9 +D27|28Z01Z|GHM|9 +D27|28Z02Z|GHM|9 +D27|28Z03Z|GHM|9 +D27|28Z04Z|GHM|9 +D27|28Z05Z|GHM|9 +D27|28Z06Z|GHM|9 +D27|28Z07Z|GHM|9 +D27|28Z08Z|GHM|9 +D27|28Z09Z|GHM|9 +D27|28Z10Z|GHM|9 +D27|28Z11Z|GHM|9 +D27|28Z12Z|GHM|9 +D27|28Z13Z|GHM|9 +D27|28Z14Z|GHM|9 +D27|28Z15Z|GHM|9 +D27|28Z16Z|GHM|9 +D27|28Z17Z|GHM|9 +D27|28Z18Z|GHM|9 +D27|28Z19Z|GHM|9 +D27|28Z20Z|GHM|9 +D27|28Z21Z|GHM|9 +D27|28Z22Z|GHM|9 +D27|28Z23Z|GHM|9 +D27|28Z24Z|GHM|9 +D27|28Z25Z|GHM|9 +D90|90C01Z|GHM|9 +D90|90H01Z|GHM|9 +D90|90H02Z|GHM|9 +D90|90H03Z|GHM|9 +D90|90Z00Z|GHM|9 +D90|90Z01Z|GHM|9 +D90|90Z02Z|GHM|9 +D90|90Z03Z|GHM|9 +D90|999999|GHM|9 +D90|ZZZZZZ|GHM|9 diff --git a/db/data2/dbdata_activite_t_classes_sections_elements_prestations_c.csv b/db/data2/dbdata_activite_t_classes_sections_elements_prestations_c.csv new file mode 100644 index 0000000..63d1af9 --- /dev/null +++ b/db/data2/dbdata_activite_t_classes_sections_elements_prestations_c.csv @@ -0,0 +1,126 @@ +section_code|to_code|table_code|classe_sequence +S11|GHS|PRESTA_C|9 +S12|EXH|PRESTA_C|9 +S13|ANT|PRESTA_C|9 +S13|APE|PRESTA_C|9 +S13|ATU|PRESTA_C|9 +S13|D01|PRESTA_C|9 +S13|D02|PRESTA_C|9 +S13|D03|PRESTA_C|9 +S13|D04|PRESTA_C|9 +S13|D05|PRESTA_C|9 +S13|D06|PRESTA_C|9 +S13|D07|PRESTA_C|9 +S13|D08|PRESTA_C|9 +S13|D09|PRESTA_C|9 +S13|D10|PRESTA_C|9 +S13|D11|PRESTA_C|9 +S13|D12|PRESTA_C|9 +S13|D13|PRESTA_C|9 +S13|D14|PRESTA_C|9 +S13|D15|PRESTA_C|9 +S13|D16|PRESTA_C|9 +S13|D17|PRESTA_C|9 +S13|D18|PRESTA_C|9 +S13|D19|PRESTA_C|9 +S13|D20|PRESTA_C|9 +S13|D21|PRESTA_C|9 +S13|D22|PRESTA_C|9 +S13|D23|PRESTA_C|9 +S13|D24|PRESTA_C|9 +S13|DIP|PRESTA_C|9 +S13|DTP|PRESTA_C|9 +S13|ENT|PRESTA_C|9 +S13|FFM|PRESTA_C|9 +S13|FPU|PRESTA_C|9 +S13|NN1|PRESTA_C|9 +S13|NN2|PRESTA_C|9 +S13|NN3|PRESTA_C|9 +S13|PO1|PRESTA_C|9 +S13|PO2|PRESTA_C|9 +S13|PO3|PRESTA_C|9 +S13|PO4|PRESTA_C|9 +S13|PO5|PRESTA_C|9 +S13|PO6|PRESTA_C|9 +S13|PO7|PRESTA_C|9 +S13|PO8|PRESTA_C|9 +S13|PO9|PRESTA_C|9 +S13|RAP|PRESTA_C|9 +S13|REA|PRESTA_C|9 +S13|REP|PRESTA_C|9 +S13|SE1|PRESTA_C|9 +S13|SE2|PRESTA_C|9 +S13|SE3|PRESTA_C|9 +S13|SE4|PRESTA_C|9 +S13|SE5|PRESTA_C|9 +S13|SE6|PRESTA_C|9 +S13|SE7|PRESTA_C|9 +S13|SFC|PRESTA_C|9 +S13|SNS|PRESTA_C|9 +S13|SRA|PRESTA_C|9 +S13|SRC|PRESTA_C|9 +S13|SSC|PRESTA_C|9 +S13|STF|PRESTA_C|9 +S19|FJA|PRESTA_C|9 +S19|FJC|PRESTA_C|9 +S19|FJL|PRESTA_C|9 +S19|FJR|PRESTA_C|9 +S19|FR2|PRESTA_C|9 +S19|FR3|PRESTA_C|9 +S19|FRL|PRESTA_C|9 +S19|FSD|PRESTA_C|9 +S19|FTG|PRESTA_C|9 +S19|FTN|PRESTA_C|9 +S19|FTR|PRESTA_C|9 +S19|GHT|PRESTA_C|9 +S19|PHJ|PRESTA_C|9 +S19|PJ|PRESTA_C|9 +S19|PMH|PRESTA_C|9 +S19|PY0|PRESTA_C|9 +S19|PY1|PRESTA_C|9 +S19|PY2|PRESTA_C|9 +S19|PY3|PRESTA_C|9 +S19|PY4|PRESTA_C|9 +S19|PY5|PRESTA_C|9 +S19|PY6|PRESTA_C|9 +S19|PY7|PRESTA_C|9 +S19|PY8|PRESTA_C|9 +S19|PY9|PRESTA_C|9 +S19|VDE|PRESTA_C|9 +S2|ETI|PRESTA_C|9 +S2|GLU|PRESTA_C|9 +S2|LEN|PRESTA_C|9 +S2|LUN|PRESTA_C|9 +S2|MAC|PRESTA_C|9 +S2|MAD|PRESTA_C|9 +S2|MAR|PRESTA_C|9 +S2|OP1|PRESTA_C|9 +S2|OP2|PRESTA_C|9 +S2|OP3|PRESTA_C|9 +S2|OP4|PRESTA_C|9 +S2|OP5|PRESTA_C|9 +S2|OP6|PRESTA_C|9 +S2|OPM|PRESTA_C|9 +S2|OPT|PRESTA_C|9 +S2|ORP|PRESTA_C|9 +S2|P|PRESTA_C|9 +S2|PA|PRESTA_C|9 +S2|PAN|PRESTA_C|9 +S2|PAU|PRESTA_C|9 +S2|PEX|PRESTA_C|9 +S2|PII|PRESTA_C|9 +S2|PME|PRESTA_C|9 +S2|POC|PRESTA_C|9 +S2|VEH|PRESTA_C|9 +S2|VER|PRESTA_C|9 +S3|EMI|PRESTA_C|9 +S3|PH1|PRESTA_C|9 +S3|PH4|PRESTA_C|9 +S3|PH7|PRESTA_C|9 +S3|PH8|PRESTA_C|9 +S3|PHH|PRESTA_C|9 +S3|PHP|PRESTA_C|9 +S3|PHQ|PRESTA_C|9 +S3|PHS|PRESTA_C|9 +S3|PHU|PRESTA_C|9 +S3|PMR|PRESTA_C|9 diff --git a/db/data2/dbdata_activite_t_divers.csv b/db/data2/dbdata_activite_t_divers.csv new file mode 100644 index 0000000..9f10d77 --- /dev/null +++ b/db/data2/dbdata_activite_t_divers.csv @@ -0,0 +1,11 @@ +code|description|show_info_module|texte|valeur|valeur_date +DATEFERMETURE|Date de fermeture (AAAAMMJJ). Vide si ouvert |f|Date fermeture établissement||1970-01-01 +EMCHCSSRPSY|0=1 EMC par séjour, 1=1 EMC par semaine|f|Mode génération EMC HC SSR ou PSY|0|1970-01-01 +ETALITCSVFILE|Emplacement du fichier CSV qui contient l'historique des places|f|Emplacement du fichier CSV qui contient l'historique des places||1970-01-01 +NOW|Date non modifiable|t|Date des derniers mouvements||1970-01-01 +NOWCLOTURE|Date non modifiable|t|Date clôture||1970-01-01 +OPTADM_DAYOUT|"0=JS non inclus sauf DE=DS | 1=JS non inclus | 2=JS inclus"|f|Activite : Comptabilisation du jour de sortie|0|1970-01-01 +PLACESREF||f||ETA|1970-01-01 +SEANCEHOSPIT|1=Conserver les séances en hospit, 2=Ne conserver que les séances de dialyse, 0=Pas de séance en hospit|f|Traitement des séances en hospit|1|1970-01-01 +SIGEMS_CHPDOX|Préfixe pour demande CP (separateur virgule et chaque préfixe avec %)|f|Préfixe pour demande CP|P%|1970-01-01 +TAUXSORAVANT|par default taux de sortie avant 12hh00|f|Taux de sortie avant hh:mm|120000|1970-01-01 diff --git a/db/data2/dbdata_activite_t_etat_sejour.csv b/db/data2/dbdata_activite_t_etat_sejour.csv new file mode 100644 index 0000000..a37b65e --- /dev/null +++ b/db/data2/dbdata_activite_t_etat_sejour.csv @@ -0,0 +1,15 @@ +oid|code|texte +0|0|Prévu(s) +1|1|Présent(s) +1|2|Présent(s) avec facturation partielle +1|3|Sorti(s) non groupé(s) +1|4|Sorti(s) facturable(s) +1|5|Sorti(s) non facturé(s) avec facturation partielle +1|6|Facturé(s) non soldé(s) +1|7|Soldé(s) +1|8|Non facturable(s) ou récusé(s) +1|9|Fictif(s) +1|?|??? +1|A|Annulé(s) +1|C|Suspendu(s) +1|R|Récusé(s) diff --git a/db/data2/dbdata_activite_t_expert_controle.csv b/db/data2/dbdata_activite_t_expert_controle.csv new file mode 100644 index 0000000..b477ba4 --- /dev/null +++ b/db/data2/dbdata_activite_t_expert_controle.csv @@ -0,0 +1,28 @@ +controle_id|controle_code|controle_texte|controle_texte_court|controle_texte_abrege|controle_description|controle_is_cti|controle_etat_cible|prestataire_code +1|CTI_0ETS|Dossiers sortis sans prestations (Aucune facture ni valorisation)|Dossiers sortis sans prestations (Aucune facture ni valorisation)|Dossiers sortis sans prestations (Aucune facture ni valorisation)||1|0| +1|CTI_AMB_DE_X_DS|Ambulatoires avec date d'entrée différente de date de sortie|Ambulatoires avec date d'entrée différente de date de sortie|Ambulatoires avec date d'entrée différente de date de sortie||1|0| +1|CTI_DEL_FAC_30|Séjours non facturés avec délai de facture supérieur à 30 jours|Séjours non facturés avec délai de facture supérieur à 30 jours|Séjours non facturés avec délai de facture supérieur à 30 jours||1|0| +1|CTI_DTEXP_DTFAC|Date d'expédion antérieure à la date de facturation|Date d'expédion antérieure à la date de facturation|Date d'expédion antérieure à la date de facturation||1|0| +1|CTI_DTFAC_DTSOR|Date de facturation antérieure à la date de sortie|Date de facturation antérieure à la date de sortie|Date de facturation antérieure à la date de sortie||1|0| +1|CTI_DTVEN_DTFAC|Date de vente antérieure à la date de facturation|Date de vente antérieure à la date de facturation|Date de vente antérieure à la date de facturation||1|0| +1|CTI_DUR_SUP_60|Dossiers MCO durée supérieur à 2 mois|Dossiers MCO durée supérieur à 2 mois|Dossiers MCO durée supérieur à 2 mois||1|0| +1|CTI_EXT_DE_X_DS|Externes avec date d'entrée différente de date de sortie|Externes avec date d'entrée différente de date de sortie|Externes avec date d'entrée différente de date de sortie|_c_eNptkMFqwzAMhl9FeFDaU9Pl0EOTgOs6IdR1guuNsZtpNAg4SbGd0cefMwa9DCT4fiE+kDLNP3TZqAvVUMsTlzonrwQEp6daVgsXWQtU1JXMieCljrlspIaSMp6Td3SdGQ2Ba/0Z4y4hwBrRqJy8JMc0Tdmi0pqra0vZrzBunLmSf1wIhK/eBofgZwcWYZg6hFjBmT7ggGOAZA9rNo1+tsGEPgJgAD/1CzwCuhH9Bu7ohjjuVuY++QM+bnaOUovPHTDfePvPv0tg/aYqLhnfZNvluiLbtrGfvyl+AFhcWe0=|1|0| +1|CTI_LPP_INC_80|LPP inclus dans le GHS dont la consommation est séprieure à 80% du GHS|LPP inclus sup. à 80% du GHS|LPP inclus sup. à 80% du GHS||1|0| +1|CTI_LPP_NON_FAC|LPP en SUS non facturé|LPP en SUS non facturé|LPP en SUS non facturé||1|0| +1|CTI_MULTI_TYPES|Séjous avec plus d'un type de séjour (ambu, hospit, seances, externe)|Séjous avec plus d'un type de séjour (ambu, hospit, seances, externe)|Séjous avec plus d'un type de séjour (ambu, hospit, seances, externe)||1|0| +1|CTI_MVT_ETA_KO|Etages inappropriés|Etages inappropriés|Etages inappropriés|_c_eNrFkMFOhDAQhl9lUq/G3XWvQIJs2ZBFIGxjjJdNA8MGU0rTFp/Xo3j2AWzJqvHg2UPTmb/NN/P/AaOPLC3r+5hBVuxowUJySyCn8S4r9r6OggriPNsXIclpylyflgWDNE5oSB5Qt1xyAsfsybWbNYGkzMs6JFfru+12m3gUY7Q+VnGyAN2PA62Lpd6QKO+NRWjRgJmfx0kbaEdpYZKLNozTCw4orQE0FnjXYWNneP16ny0/u6tFEBzEN+oi95IrpUel+9ncBCu/dhSsKnd+TEfBPwdQcQ3t3PHJXoNAaMYWf/nxvhOWnSiLT4cSBt47YwIUThberUbQOCjBmxmUI7lcHMmpbinjIS6ORvfK9qO8YPXbWSwjGj9NWv0h8M90PgEtl6i+|1|0| +1|CTI_MVT_ETA_NULL|Etage non renseigné|Etage non renseigné|Etage non renseigné|_c_eNpFT1ELgjAY/CsfC3rV8jEVlk4Z2ZQ1Inob+CGGTNnWf85/kVbQw8HdcRx3sWI3VdTyTBVwkTOhErInUDGac1GuPI0boBUvRUIqVqhFF7VQUNCMJeSKttVGE7jw+yJ3IYGsrmqZkE14jKIoW6uUYvLS0OxTuCROTIofTyVOL4swoAM3P8anddCOxsOw1dPoDrPXHUKL4EbrewTztdF5mLQDi8Zh35k5DtZRaRw0C/6X0jdJb0M4|1|0| +1|CTI_MVT_SER_EXT|Services Externes : FSEH - SEUR et Mode de traitement 04|Services Externes : FSEH - SEUR et Mode de traitement 04|Services Externes : FSEH - SEUR et Mode de traitement 04||1|0|SIGEMS +1|CTI_MVT_SER_KO|Incompatibilité type de séjour (ESPIC - Ex OQN) et code service|Incompatibilité type de séjour (ESPIC - Ex OQN) et code service|Incompatibilité type de séjour (ESPIC - Ex OQN) et code service|_c_eNrFkMFqhDAQhl9lSK+lu9u9qmDduMhaFTeU0ssSdCwpMYYk7vP2WHvuAzRKl6WHnnsI/DMTvpn/Dxh9ZmlZP8YMsmJHCxaSewI5jXdZsZ91FFQQ59m+CElOU+brtCwYpHFCQ/KEpuWKEzhmL77crAkkZV7WIblZP2y322RGMUbrYxUnC9D/ONC6WPSGRLmwDqFFC3Z6G0ZjoR2Ug1EtvX4Yz9ijchbQOuBdh42b4P0yt2jOovGiRZAc5BV2GQjFtTaDNmKyd8FqPj0KVpV/V+NR8M8hVNxAO3V8dLcgEZqhxV+OZu8Jy05HWp8OJfRceGMSNI4OPp1BMNhryZsJtCf5bDzJd/1Rdob4QBojtBOD+sGaj1e5rGjmbcqZL4l/pvMNPfepnA==|1|0| +1|CTI_MVT_SER_NULL|Service non renseigné|Service non renseigné|Service non renseigné||1|0| +1|CTI_PRE_SUP_30|Présent depuis plus de 30 jours|Présent depuis plus de 30 jours|Présent depuis plus de 30 jours||1|0| +1|CTI_SEJSMR_SUPP90|Séjours SMR de plus de 90 jours|Séjours SMR de plus de 90 jours|Séjours SMR de plus de 90 jours||1|0| +1|CTI_SEJ_AMB_03|Ambulatoires avec Mode de Traitement Hospit complète (03)|Ambulatoires avec Mode de Traitement Hospit complète (03)|Ambulatoires avec Mode de Traitement Hospit complète (03)|_c_eNrNU1FPgzAQ/isXTMz2NCZvE0iAwSQyWFhnjMY0HdySmlIIFH+vj+5fWJxxzhhf3UPTu971u7vv7mwS3pMoy5cegTidhylxjCsDktCbx+likF17BV4SL1LHSMKIaD3KUgKRF4SOcYdtySQzYB0/aHVqGhBkSZY7xoXpW5YVDFCEhPl65QUfgNrjNszTT9ld75/rvu2AVdteMFXzFjvQkB30EmETfTfASPBOIZSXrKm7615yte9gV8tC8VpKFEL/fYUG+0ZgC6yHpt0zwbYCx1AxrqO8YKGBoapLDYOgWsYVVigVmBaMbuqu4YrpKGxAhKKuGvGmcGxPhppde7LS58iYa/8ze+eaV/dbV2e274Lc0pNHB6b2xD/bQn4M4AwO6F8uUx3PdwXHnra4wxZlgXQYTKQnc0l5qfOHxySeBSSmm4h6S3/zdFL6GTKgy1v+uioDE747rBE9Gmgx+DpwWE/TOtx/tfcdZyxNqw==|1|0| +1|CTI_SEJ_DUR_30|Séjours sortis non facturés avec durée de séjour supérieure à 30 jours|Séjours sortis non facturés avec durée de séjour supérieure à 30 jours|Séjours sortis non facturés avec durée de séjour supérieure à 30 jours|_c_eNpFjtEKwiAYhV/lxx5gK29VMNMhmY5NIrobzIsitnDzfbvdW+RG0MWBc+DjnEO8vHnlmgv3oO1JWk/RAYGR/KRttXpGauBGV5YiI5XPWTnrQXEhKbqG2HdDh6DV9xz3JQLhjGso2pVHjLFYq7yXTVtzsRVm4iwb+/OsXZ5jihP04zDDq4M+xSVAmGaY0nuJj5BigA/gEjaOFOs4I0Wd9b/Ovjb2OgQ=|1|2| +1|CTI_SEJ_DUR_NEG|Séjours avec date de sortie antérieure à la date d'entrée|Séjours avec date de sortie antérieure à la date d'entrée|date sortie < date_entree||1|0| +1|CTI_SEJ_MED_KO|Médecins responsables de séjours inappropriés|Médecins responsables de séjours inappropriés|Médecins responsables de séjours inappropriés|_c_eNrFkMFOhDAQhl9lUq/G3ZUrkCCUDVkWCNsY42XTlGJquqVpy/t6tJ59AAsxazx49tBk/k77zfx/TPATKdv+mBGomgI3JEH3CGqcFVWzX+o07iCrq32ToBqXJOiybQiUWY4T9MjNQBVFcKqeg9xtEeRt3fYJutk+RFGULyhCcH/qsnwFhhcH3DdrvUNpLazjMHAL1r9Os7FAx5Ez5y28wazWzsUPnAllgwBJQV6/XBtCUa3NpI3w9i7eLAum8aYL58deGv+z1Y4aGPxIZ3cLkgObBv7LEbcOclKdj7g4H1q4UBGMSdB8dvDhDAfDL1pS5kEHUsgmkMJtWMoukBAIM0I7MalvrHl/kesItkxTznxK/mc6X6nfoLg=|1|0| +1|CTI_SEJ_MED_NULL|Médecin responsable de séjour non renseigné|Médecin responsable de séjour non renseigné|Médecin responsable de séjour non renseigné|_c_eNpFj9EKwjAMRX8lVPB16h7dBnXrZDi7UYuIb9UFUWZXF/1n9xd2IviQcO5NuCSRFgedV2rLNRQyE1LHbMGgFDwr5HrkJKqBl8VaxqwUufY6r6SGnKciZnvsG2MNg11x9HI+Y5BWZaViNpmtwjBMxyithdrVPP0G+o2NUPLHiUL37hFaJKDh1r16Auf7aDxe2JIHuA8Nnq8WeiTXWTIn79mpcR0tkZ7gDPmRJbxe7BAF43VJFNS+/r8lH/HxRzY=|1|0| +1|CTI_SEJ_SER_FINESS|Service non associé à un établissement|Service non associé à un établissement|Service non associé à un établissement|_c_eNpFj8FOhEAQRH+lMiZGT7srNwWSkR02KA5kmBjjbWTbZMwKSIPf61H+wmEvHjqpqnS/VMdWvdi8Mk/SotB7pW0ibgRKJfeFPqw6jWvIsjjoRJQqt8HnlbbIZaYS8Uzj0XVOoCleg91tBbKqrEwiLrb3URRlK8paZZpaZmdg2HhURp/1TqSGht+RcCIGLx/9PDKOfTeFAEzjt28J3aUber4jnjA4hmPuW7/gB3OHZXJvJ89MnxSOrpphaf27/5oJt3iYV2po2NF1vFlLp/GmDvP/cvoH089PUA==|1|0| +1|CTI_UCD_INC_80|UCD inclus dans GHS dont la consommation est supérieure à 80% du GHS|UCD Inclus sup à 80% du GHS|UCD Inclus sup à 80% du GHS||1|0| +1|CTI_UCD_NON_FACT|UCD en SUS non facturé|UCD en SUS non facturé|UCD en SUS non facturé||1|0| +1|CTI_VAL_SUP_20K|Dossiers valorisés > 20 000|Dossiers valorisés > 20 000|Dossiers valorisés > 20 000||1|0| diff --git a/db/data2/dbdata_activite_t_expert_controle_rule.csv b/db/data2/dbdata_activite_t_expert_controle_rule.csv new file mode 100644 index 0000000..7daff45 --- /dev/null +++ b/db/data2/dbdata_activite_t_expert_controle_rule.csv @@ -0,0 +1,122 @@ +oid|controle_code|numero|sqlcmd_where|sqlcmd_justificatif|tab +1|CTI_0ETS|1|"code_sorti = 1 AND nb_rubriques_c = 0 AND nb_rubriques_h = 0 AND type_sejour<>3 "||2 +1|CTI_0ETS|2|||0 +1|CTI_0ETS|3|||0 +1|CTI_AMB_DE_X_DS|1|nb_ambulatoires = 1 AND date != date_sortie||1 +1|CTI_AMB_DE_X_DS|2|||0 +1|CTI_AMB_DE_X_DS|3|||0 +1|CTI_DEL_FAC_30|1|"SELECT v_sejours_1.sejour_id, v_sejours_1.no_sejour, v_sejours_1.date_sortie, v_mouvements_sejour_2.est_facture FROM activite.v_sejours_1 JOIN activite.v_mouvements_sejour_2 on v_mouvements_sejour_2.sejour_id=v_sejours_1.sejour_id WHERE ((select valeur_date from activite.t_divers where code='NOW')- v_sejours_1.date_sortie) >30 AND v_mouvements_sejour_2.est_facture='0'"||99 +1|CTI_DEL_FAC_30|2|||0 +1|CTI_DEL_FAC_30|3|||0 +1|CTI_DTEXP_DTFAC|1|date_expedition < date_facture|date_expedition, date_facture|0 +1|CTI_DTEXP_DTFAC|2|||0 +1|CTI_DTEXP_DTFAC|3|||0 +1|CTI_DTFAC_DTSOR|1|date_facture < date_sortie and date_sortie is distinct from null|date_facture|0 +1|CTI_DTFAC_DTSOR|2|||0 +1|CTI_DTFAC_DTSOR|3|||0 +1|CTI_DTVEN_DTFAC|1|date_vente < date_facture|date_vente, date_facture|2 +1|CTI_DTVEN_DTFAC|2|||0 +1|CTI_DTVEN_DTFAC|3|||0 +1|CTI_DUR_SUP_60|1|type_t2a <> 2 and type_t2a <> 3 and duree>60||2 +1|CTI_DUR_SUP_60|2|||0 +1|CTI_DUR_SUP_60|3|||0 +1|CTI_EXT_DE_X_DS|1|"nb_externes = 1 +AND date != date_sortie +AND mode_traitement_code = '07'"||1 +1|CTI_EXT_DE_X_DS|2|||0 +1|CTI_EXT_DE_X_DS|3|||0 +1|CTI_LPP_INC_80|1|"DROP TABLE IF EXISTS w_res; CREATE TEMP TABLE w_res AS SELECT v_sejours_1.sejour_id ,v_sejours_1.no_sejour ,v_sejours_1.date_sortie ,type_sejour ,code_prevu ,v_factures_lignes_c_1.montant_facture ,array_to_string(array_agg(DISTINCT t_lpp.code),',') AS lpp_codes ,sum(sortie_montant - entree_montant) AS sortie_montant ,round(100*base.cti_division(sum(sortie_montant - entree_montant), v_factures_lignes_c_1.montant_facture),2) AS rapport FROM eco.p_sejours JOIN eco.p_mouvements_articles ON mouvement_id = p_mouvements_articles.oid JOIN activite.v_sejours_1 ON p_sejours.sejour_id = v_sejours_1.sejour_id LEFT JOIN base.t_finess ON v_sejours_1.finess = t_finess.code JOIN eco.t_lpp_c ON lpp_id = t_lpp_c.oid JOIN base.t_lpp ON t_lpp_c.code = t_lpp.code JOIN (SELECT no_sejour ,sum(montant_facture) AS montant_facture FROM activite.v_factures_lignes_c_1 WHERE prestation_code = 'GHS' GROUP BY 1 ) v_factures_lignes_c_1 ON v_factures_lignes_c_1.no_sejour = p_sejours.no_sejour LEFT JOIN (SELECT no_sejour ,lpp_id ,rubrique_facturation_id ,sum(montant_facture) AS montant_facture FROM activite.v_factures_lignes_c_5 GROUP BY 1,2,3 ) v_factures_lignes_c_5 ON p_sejours.no_sejour = v_factures_lignes_c_5.no_sejour AND ( rubrique_facturation_id IN ( SELECT to_id FROM activite.t_listes LEFT JOIN activite.t_listes_contenu ON liste_id = t_listes.oid WHERE t_listes.code = 'CTI_PROTHESE_R' ) OR t_lpp_c.oid = v_factures_lignes_c_5.lpp_id ) WHERE p_mouvements_articles.lpp_id != 0 AND type_mouvement_id IN ( SELECT to_id FROM eco.t_classes JOIN eco.t_classes_sections ON classe_id = t_classes.oid JOIN eco.t_classes_sections_elements ON section_id = t_classes_sections.oid WHERE t_classes.code = 'CTI_TYPMVT' AND t_classes_sections.code = '01' ) AND sortie_montant != 0 AND v_factures_lignes_c_1.montant_facture > 0 AND v_factures_lignes_c_5.montant_facture IS NULL GROUP BY 1,2,3,4,5,6 HAVING base.cti_division(sum(sortie_montant), v_factures_lignes_c_1.montant_facture) > 0.8; SELECT sejour_id, no_sejour, date_sortie, lpp_codes, montant_facture, sortie_montant, rapport FROM w_res WHERE 1 = 1"|montant_facture, sortie_montant, rapport|99 +1|CTI_LPP_INC_80|2|||0 +1|CTI_LPP_INC_80|3|||0 +1|CTI_LPP_NON_FAC|1|"SELECT v_sejours_1.sejour_id, v_sejours_1.no_sejour, v_sejours_1.date_sortie, t_lpp.code as lpp_code, t_lpp_sus.date_debut as date_debut_lpp, t_lpp_sus.date_fin as date_fin_lpp, sortie_montant-entree_montant AS sortie_montant, montant_facture FROM eco.p_sejours JOIN eco.p_mouvements_articles ON mouvement_id = p_mouvements_articles.oid JOIN activite.v_sejours_1 ON p_sejours.sejour_id = v_sejours_1.sejour_id JOIN base.t_finess ON v_sejours_1.finess = t_finess.code JOIN eco.t_lpp_c on lpp_id = t_lpp_c.oid JOIN pmsi.t_lpp on t_lpp.code = t_lpp_c.code LEFT JOIN base.t_lpp_sus on t_lpp_sus.lpp_id = t_lpp_c.oid AND date BETWEEN t_lpp_sus.date_debut AND t_lpp_sus.date_fin LEFT JOIN activite.v_factures_lignes_c_5 on p_sejours.no_sejour = v_factures_lignes_c_5.no_sejour AND (rubrique_facturation_id IN ( SELECT to_id FROM activite.t_listes LEFT JOIN activite.t_listes_contenu ON liste_id = t_listes.oid WHERE t_listes.code = 'CTI_PROTHESE_R') OR v_factures_lignes_c_5.lpp_id = t_lpp_c.oid) WHERE p_mouvements_articles.lpp_id != 0 AND type_mouvement_id IN (SELECT to_id FROM eco.t_classes JOIN eco.t_classes_sections ON classe_id = t_classes.oid JOIN eco.t_classes_sections_elements ON section_id = t_classes_sections.oid WHERE t_classes.code = 'CTI_TYPMVT' and t_classes_sections.code = '01') AND t_lpp_sus.date_debut IS NOT NULL AND (sortie_montant-entree_montant) > 0 AND v_factures_lignes_c_5.montant_facture IS NULL AND v_sejours_1.type_sejour = '1'"|lpp_code, date_debut_lpp, date_fin_lpp, sortie_montant|99 +1|CTI_LPP_NON_FAC|2|||0 +1|CTI_LPP_NON_FAC|3|||0 +1|CTI_MULTI_TYPES|1|"SELECT v_sejours_1.sejour_id, v_sejours_1.no_sejour, v_sejours_1.date_sortie, nb_ambulatoires, nb_entrees_directes, nb_seances, nb_externes FROM activite.v_mouvements_sejour_2 JOIN activite.v_sejours_1 using (no_sejour) WHERE nb_ambulatoires + nb_entrees_directes + nb_seances + nb_externes > 1"|nb_ambulatoires, nb_entrees_directes, nb_seances, nb_externes|99 +1|CTI_MULTI_TYPES|2|||0 +1|CTI_MULTI_TYPES|3|||0 +1|CTI_MVT_ETA_KO|1|lieu_etage_id IN [LI:CTI_ETA_KO]|lieu_etage_code|1 +1|CTI_MVT_ETA_KO|2|||0 +1|CTI_MVT_ETA_KO|3|||0 +1|CTI_MVT_ETA_NULL|1|lieu_etage_id = 0 OR lieu_etage_id is null||1 +1|CTI_MVT_ETA_NULL|2|||0 +1|CTI_MVT_ETA_NULL|3|||0 +1|CTI_MVT_SER_EXT|1|lieu_service_code = 'FSEH_04' OR lieu_service_code = 'SEUR_04'|lieu_service_code|1 +1|CTI_MVT_SER_EXT|2|||0 +1|CTI_MVT_SER_EXT|3|||0 +1|CTI_MVT_SER_KO|1|lieu_service_id IN [LI:CTI_SER_KO]|lieu_service_code|1 +1|CTI_MVT_SER_KO|2|||0 +1|CTI_MVT_SER_KO|3|||0 +1|CTI_MVT_SER_NULL|1|lieu_service_id = 0 OR lieu_service_id is null||1 +1|CTI_MVT_SER_NULL|2|||0 +1|CTI_MVT_SER_NULL|3|||0 +1|CTI_PRE_SUP_30|1|"SELECT v_sejours_1.sejour_id, v_sejours_1.no_sejour, v_sejours_1.date_sortie, v_sejours_1.date_entree, v_sejours_1.code_sorti FROM activite.v_sejours_1 WHERE ((select valeur_date from activite.t_divers where code='NOW')- v_sejours_1.date_entree) >30 AND v_sejours_1.code_sorti<>'1' AND v_sejours_1.type_sejour <> '9' "||99 +1|CTI_PRE_SUP_30|2|||0 +1|CTI_PRE_SUP_30|3|||0 +1|CTI_SEJSMR_SUPP90|1|"SELECT + v_sejours_1.sejour_id, + v_sejours_1.no_sejour, + v_sejours_1.date_sortie, + v_sejours_1.date_entree, + v_sejours_1.code_sorti +FROM + activite.v_sejours_1 + JOIN activite.t_lieux_c on lieu_sortie_id = t_lieux_c.oid +WHERE + date(now()) - v_sejours_1.date_entree > 90 + AND v_sejours_1.code_sorti <> '1' + AND v_sejours_1.type_sejour <> '9' + AND t_lieux_c.type_t2a = '2' + AND v_sejours_1.mode_traitement_code <> '04' + AND NOT EXISTS ( + SELECT + v_sejours_1.no_sejour + FROM + activite.p_factures + WHERE + code_facture = '1' + AND v_sejours_1.no_sejour = p_factures.no_sejour + ) +"||99 +1|CTI_SEJSMR_SUPP90|2|||0 +1|CTI_SEJSMR_SUPP90|3|||0 +1|CTI_SEJ_AMB_03|1|"mode_traitement_code = '03' AND lieu_reference_unite_fonctionnelle_id IN [LI:CTI_UF_AMBU] AND nb_ambulatoires = 1"|lieu_reference_service_code|1 +1|CTI_SEJ_AMB_03|2|||0 +1|CTI_SEJ_AMB_03|3|||0 +1|CTI_SEJ_DUR_30|1|duree > 30|duree|0 +1|CTI_SEJ_DUR_30|2|||0 +1|CTI_SEJ_DUR_30|3|||0 +1|CTI_SEJ_DUR_NEG|1|date_sortie < date_entree|duree|0 +1|CTI_SEJ_DUR_NEG|2|||0 +1|CTI_SEJ_DUR_NEG|3|||0 +1|CTI_SEJ_MED_KO|1|medecin_adm_sejour_id IN [LI:CTI_MED_KO]|medecin_adm_sejour_code|0 +1|CTI_SEJ_MED_KO|2|||0 +1|CTI_SEJ_MED_KO|3|||0 +1|CTI_SEJ_MED_NULL|1|((medecin_adm_sejour_id = 0 OR medecin_adm_sejour_id is null)AND (type_sejour<>9))||0 +1|CTI_SEJ_MED_NULL|2|||0 +1|CTI_SEJ_MED_NULL|3|||0 +1|CTI_SEJ_SER_FINESS|1|"SELECT + v_sejours_1.sejour_id, + v_sejours_1.no_sejour, + v_sejours_1.date_sortie, + service_facturation_code +FROM + activite.v_sejours_1 + JOIN + ( + SELECT t_services_facturation.oid, t_services_facturation.code as service_facturation_code, t_finess.code AS finess_code + FROM activite.t_services_facturation + LEFT JOIN base.t_finess on t_finess.oid = t_services_facturation.finess_id + ) subview ON subview.oid = v_sejours_1.lieu_sortie_service_id +WHERE + subview.finess_code is null"|service_facturation_code|99 +1|CTI_SEJ_SER_FINESS|2|||0 +1|CTI_SEJ_SER_FINESS|3|||0 +1|CTI_UCD_INC_80|1|"DROP TABLE IF EXISTS w_res; CREATE TEMP TABLE w_res AS SELECT v_sejours_1.sejour_id ,v_sejours_1.no_sejour ,v_sejours_1.date_sortie ,type_sejour ,code_prevu ,v_factures_lignes_c_1.montant_facture ,array_to_string(array_agg(DISTINCT t_ucd.code),',') AS ucd_codes ,sum(sortie_montant - entree_montant) AS sortie_montant ,round(100*base.cti_division(sum(sortie_montant - entree_montant), v_factures_lignes_c_1.montant_facture),2) AS rapport FROM eco.p_sejours JOIN eco.p_mouvements_articles ON mouvement_id = p_mouvements_articles.oid JOIN activite.v_sejours_1 ON p_sejours.sejour_id = v_sejours_1.sejour_id LEFT JOIN base.t_finess ON v_sejours_1.finess = t_finess.code JOIN eco.t_ucd_c ON ucd_id = t_ucd_c.oid JOIN pmsi.t_ucd ON t_ucd_c.code = t_ucd.code LEFT JOIN pmsi.t_prestations ON t_ucd.prestation_defaut_id = t_prestations.oid LEFT JOIN pmsi.t_ucd_tarifs ON t_ucd_tarifs.ucd_id = t_ucd.oid AND DATE BETWEEN t_ucd_tarifs.date_debut AND LEAST(t_ucd_tarifs.date_fin, top_taa_date_fin) JOIN ( SELECT no_sejour ,sum(montant_facture) AS montant_facture FROM activite.v_factures_lignes_c_1 WHERE prestation_code = 'GHS' GROUP BY 1 ) v_factures_lignes_c_1 ON v_factures_lignes_c_1.no_sejour = p_sejours.no_sejour LEFT JOIN ( SELECT no_sejour ,ucd_id ,rubrique_facturation_id ,sum(montant_facture) AS montant_facture FROM activite.v_factures_lignes_c_5 GROUP BY 1,2,3 ) v_factures_lignes_c_5 ON p_sejours.no_sejour = v_factures_lignes_c_5.no_sejour AND ( rubrique_facturation_id IN ( SELECT to_id FROM activite.t_listes LEFT JOIN activite.t_listes_contenu ON liste_id = t_listes.oid WHERE t_listes.code = 'CTI_UCD_R' ) OR t_ucd_c.oid = v_factures_lignes_c_5.ucd_id ) WHERE p_mouvements_articles.ucd_id != 0 AND type_mouvement_id IN ( SELECT to_id FROM eco.t_classes JOIN eco.t_classes_sections ON classe_id = t_classes.oid JOIN eco.t_classes_sections_elements ON section_id = t_classes_sections.oid WHERE t_classes.code = 'CTI_TYPMVT' AND t_classes_sections.code = '01' ) AND (sortie_montant - entree_montant) != 0 AND v_factures_lignes_c_1.montant_facture > 0 AND v_factures_lignes_c_5.montant_facture IS NULL GROUP BY 1,2,3,4,5,6 HAVING base.cti_division(sum(sortie_montant), v_factures_lignes_c_1.montant_facture) > 0.8; SELECT sejour_id, no_sejour, date_sortie,ucd_codes, montant_facture, sortie_montant, rapport FROM w_res WHERE 1 = 1"|ucd_codes, montant_facture, sortie_montant, rapport|99 +1|CTI_UCD_INC_80|2|||0 +1|CTI_UCD_INC_80|3|||0 +1|CTI_UCD_NON_FACT|1|"SELECT v_sejours_1.sejour_id, v_sejours_1.no_sejour, v_sejours_1.date_sortie, t_ucd.code AS ucd_code, t_ucd_tarifs.date_debut AS date_debut_ucd, t_ucd_tarifs.date_fin AS date_fin_ucd, sortie_montant-entree_montant AS sortie_montant FROM eco.p_sejours JOIN eco.p_mouvements_articles ON mouvement_id = p_mouvements_articles.oid JOIN activite.v_sejours_1 ON p_sejours.sejour_id = v_sejours_1.sejour_id JOIN eco.t_ucd_c on ucd_id = t_ucd_c.oid JOIN pmsi.t_ucd on t_ucd_c.code = t_ucd.code JOIN pmsi.t_ucd_tarifs on t_ucd_tarifs.ucd_id = t_ucd.oid AND date BETWEEN t_ucd_tarifs.date_debut AND LEAST(t_ucd_tarifs.date_fin,top_taa_date_fin) LEFT JOIN activite.v_factures_lignes_c_5 on p_sejours.sejour_id = v_factures_lignes_c_5.sejour_id AND (rubrique_facturation_id IN (SELECT to_id FROM activite.t_listes JOIN activite.t_listes_contenu ON t_listes.oid = liste_id WHERE t_listes.code = 'CTI_UCD_R') OR v_factures_lignes_c_5.lpp_id = t_ucd_c.oid) WHERE p_mouvements_articles.ucd_id != 0 AND sortie_montant != 0 AND v_sejours_1.type_sejour = '1' AND v_factures_lignes_c_5.montant_facture is null"|ucd_code, date_debut_ucd, date_fin_ucd, sortie_montant|99 +1|CTI_UCD_NON_FACT|2|||0 +1|CTI_UCD_NON_FACT|3|||0 +1|CTI_VAL_SUP_20K|1|montant_encours>20000||2 +1|CTI_VAL_SUP_20K|2|||0 +1|CTI_VAL_SUP_20K|3|||0 diff --git a/db/data2/dbdata_activite_t_forme_activite.csv b/db/data2/dbdata_activite_t_forme_activite.csv new file mode 100644 index 0000000..805a910 --- /dev/null +++ b/db/data2/dbdata_activite_t_forme_activite.csv @@ -0,0 +1,46 @@ +oid|code|texte|texte_court +0|***|Non renseignée|Non renseignée +1|111|Hospitalisation complète MCO Médecine|Hospitalisation complète MCO Médecine +1|112|Hospitalisation complète MCO Chirurgie|Hospitalisation complète MCO Chirurgie +1|113|Hospitalisation complète MCO Obstétrique|Hospitalisation complète MCO Obstétrique +1|114|Hospitalisation complète MCO Esthétique|Hospitalisation complète MCO Esthétique +1|117|Hospitalisation complète MCO A préciser|Hospitalisation complète MCO A préciser +1|118|Hospitalisation complète MCO A préciser|Hospitalisation complète MCO A préciser +1|119|Hospitalisation complète MCO Autre|Hospitalisation complète MCO Autre +1|121|Hospitalisation de jour MCO Médecine|Hospitalisation de jour MCO Médecine +1|122|Hospitalisation de jour MCO Chirurgie|Hospitalisation de jour MCO Chirurgie +1|123|Hospitalisation de jour MCO Obstétrique|Hospitalisation de jour MCO Obstétrique +1|124|Hospitalisation de jour MCO Esthétique|Hospitalisation de jour MCO Esthétique +1|127|Hospitalisation de jour MCO A préciser|Hospitalisation de jour MCO A préciser +1|128|Hospitalisation de jour MCO A préciser|Hospitalisation de jour MCO A préciser +1|129|Hospitalisation de jour MCO Autre|Hospitalisation de jour MCO Autre +1|131|Séances de dialyse|Séances de dialyse +1|132|Séances de chimiothérapie|Séances de chimiothérapie +1|133|Séances de transfusion|Séances de transfusion +1|139|Autres séances|Autres séances +1|211|Hospitalisation complète SSR Soins de Suite Médicalisés|Hospitalisation complète SSR Soins de Suite Médicalisés +1|212|Hospitalisation complète SSR Rééducation Fonctionnelle|Hospitalisation complète SSR Rééducation Fonctionnelle +1|217|Hospitalisation complète SSR A préciser|Hospitalisation complète SSR A préciser +1|218|Hospitalisation complète SSR A préciser|Hospitalisation complète SSR A préciser +1|219|Hospitalisation complète SSR Autre|Hospitalisation complète SSR Autre +1|221|Hospitalisation de jour SSR Soins de Suite Médicalisés|Hospitalisation de jour SSR Soins de Suite Médicalisés +1|222|Hospitalisation de jour SSR Rééducation Fonctionnelle|Hospitalisation de jour SSR Rééducation Fonctionnelle +1|227|Hospitalisation de jour SSR A préciser|Hospitalisation de jour SSR A préciser +1|228|Hospitalisation de jour SSR A préciser|Hospitalisation de jour SSR A préciser +1|229|Hospitalisation de jour SSR Autre|Hospitalisation de jour SSR Autre +1|311|Hospitalisation complète PSY|Hospitalisation complète PSY +1|317|Hospitalisation complète PSY A préciser|Hospitalisation complète PSY A préciser +1|318|Hospitalisation complète PSY A préciser|Hospitalisation complète PSY A préciser +1|319|Hospitalisation complète PSY Autre|Hospitalisation complète PSY Autre +1|321|Hospitalisation de jour PSY|Hospitalisation de jour PSY +1|327|Hospitalisation de jour PSY A préciser|Hospitalisation de jour PSY A préciser +1|328|Hospitalisation de jour PSY A préciser|Hospitalisation de jour PSY A préciser +1|329|Hospitalisation de jour PSY Autre|Hospitalisation de jour PSY Autre +1|401|Hospitalisation à Domicile|Hospitalisation à Domicile +1|501|EHPAD|EHPAD +1|502|USLD|USLD +1|503|Foyer de vie|Foyer de vie +1|701|Activité SE|Activité SE +1|702|Urgences Externes|Urgences Externes +1|709|Autres externes|Autres externes +1|999|Autres formes d'activité|Autres formes d'activité diff --git a/db/data2/dbdata_activite_t_indicateur_theme.csv b/db/data2/dbdata_activite_t_indicateur_theme.csv new file mode 100644 index 0000000..c69b5ff --- /dev/null +++ b/db/data2/dbdata_activite_t_indicateur_theme.csv @@ -0,0 +1,50 @@ +oid|code|texte|level|parent_code +1|--0|Source|1| +1|--1|Thèmes principaux|1| +1|--2|Période|1| +1|--3|Rapports et essentiels|1| +1|--4|Type de donnée|1| +1|--DACTE|Date acte|2|--2 +1|--DCOMPTABLE|Date comptable|2|--2 +1|--DFACTURE|Date facture|2|--2 +1|--DGROUPAGE|Date groupage|2|--2 +1|--DINTERVENTION|Date intervention|2|--2 +1|--DJOUR|Date jour|2|--2 +1|--DMOUVEMENT|Date mouvement|2|--2 +1|--DSORTIE|Date sortie|2|--2 +1|--DVENTES|Date ventes|2|--2 +1|--R1|Rapports CTI|2|--3 +1|--R3|Rapports Etablissement|2|--3 +1|--S1|Indicateurs CTI|2|--0 +1|--S2|Indicateurs Groupe|2|--0 +1|--S3|Indicateurs spécifiques Etablissement|2|--0 +1|--T0001|Superviseur d'activité|2|--1 +1|--T0002|Occupation|2|--1 +1|--T0003|Places|2|--1 +1|--T0004|Facturation Clinique|2|--1 +1|--T0005|Clients Clinique|2|--1 +1|--T0006|Facturation Honoraires|2|--1 +1|--T0007|Clients Honoraire|2|--1 +1|--T0008|En-cours|2|--1 +1|--T0011|Occupation bloc|2|--1 +1|--T0097|Calendrier|2|--1 +1|-TS|Type de séjour|1| +1|-TS1|Hospitalisé|2|-TS +1|-TS2|Ambulatoires|2|-TS +1|-TS3|Externes|2|-TS +1|-TS5|Séances|2|-TS +1|CA|Chiffre d'affaire|2|--4 +1|CACP|C.A. Comptabilisé|3|CA +1|CAF|C.A. Facturé|3|CA +1|CAHON|C.A. Honoraire|3|CA +1|CARG|C.A. Réglé|3|CA +1|CASL|C.A. Solde|3|CA +1|CAV|C.A. Valorisé|3|CA +1|CAVF|C.A. Facturé et Valorisé|3|CA +1|NBENT|Nombre Entrées|3|NOMBRE +1|NBJOU|Nombre Jours|3|NOMBRE +1|NBRUB|Nombre Rubriques|3|NOMBRE +1|NBSEJ|Nombre Séjours|3|NOMBRE +1|NBSOR|Nombre Sorties|3|NOMBRE +1|NOMBRE|Nombre|2|--4 +1|TAUX|Taux|2|--4 diff --git a/db/data2/dbdata_activite_t_indicateurs.csv b/db/data2/dbdata_activite_t_indicateurs.csv new file mode 100644 index 0000000..affc3c6 --- /dev/null +++ b/db/data2/dbdata_activite_t_indicateurs.csv @@ -0,0 +1,506 @@ +oid|code|table_name|texte|entete_etendue|entete|column_name|is_cti|total_function|output_format|width|dimension_date_1|dimension_date_2|dimension_date_3|dimension_date_4|dimension_date_5|dimension_date|indicateur_associe_1_code|indicateur_associe_2_code|indicateur_associe_3_code|indicateur_associe_4_code|indicateur_associe_5_code|indicateur_associe_6_code|indicateur_associe_7_code|indicateur_associe_8_code|indicateur_associe_9_code|indicateur_associe_10_code|indicateur_associe_11_code|indicateur_associe_12_code|indicateur_associe_13_code|indicateur_associe_14_code|indicateur_associe_15_code|indicateur_associe_16_code|indicateur_associe_17_code|indicateur_associe_18_code|indicateur_associe_19_code|indicateur_associe_20_code|indicateur_reference_code|is_template|indicateur_template_code|variable_definition_1|variable_definition_2|variable_definition_3|variable_value_1|variable_value_2|variable_value_3|variable_value_text_1|variable_value_text_2|variable_value_text_3|description|theme_1_code|theme_2_code|theme_3_code|theme_4_code|theme_5_code|theme_6_code|theme_7_code|theme_8_code|theme_9_code +1|CTIAGEMOY|*CALC|Age moyen Hospit et Ambu|Age moyen Hospit et Ambu|Age moy|base.cti_division([1], [2])|1|*CALC|#,0|0| | | | | | |CTIAGESUM|CTI_NB_SEJ||||||||||||||||||||0|||||||||||Age moyen des patients ayant effectués des séjours dans l'établissement (hors séances)|NBSEJ|||||||| +1|CTIAGESUM|SEJOURS|Somme des ages|Somme des ages|Somme Ages|CASE WHEN type_sejour = '1' OR type_sejour = '2' THEN age ELSE null END|1|SUM|#|0|2| | | | |2||||||||||||||||||||||0|||||||||||Somme les o/ooges des patients des séjours en sévérité de type '1' et '2'||||||||| +1|CTI_ADM|OCCUPATION|NB Admissions sur la période|Admissions sur la période|Adm Per|nb_ambulatoires + CASE WHEN type_sejour = '5' THEN 0 ELSE nb_seances END + nb_externes + nb_entrees_directes|1|SUM|#|0|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre d'admissions de patients sur la période choisie|NBENT|||||||| +1|CTI_ADMHCP|OCCUPATION|SSR - Admissions sur la période (Hospitalisaiton complète)|SSR - Admissions sur la période (Hospitalisaiton complète)|SSR Adm Per HCOMP|CASE WHEN mode_traitement_id = '3' THEN GREATEST(nb_ambulatoires, nb_seances, nb_externes, nb_entrees_directes) ELSE 0 END|1|SUM|#|0|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre d'admissions de patients sur la période choisie en Hospitalisation Complète||||||||| +1|CTI_ADMHDJ|OCCUPATION|SSR - Admissions sur la période (Hospitalisaiton de jour)|SSR - Admissions sur la période (Hospitalisaiton de jour)|SSR Adm Per HDJ|CASE WHEN mode_traitement_id = '4' THEN GREATEST(nb_ambulatoires, nb_seances, nb_externes, nb_entrees_directes) ELSE 0 END|1|SUM|#|0|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre d'admissions de patients sur la période choisie en Hospitalisation de Jour||||||||| +1|CTI_ADMPREHCP|*CALC|SSR - Admissions avant période (Hospitalisation complète)|SSR - Admissions avant période (Hospitalisation complète)|SSR Adm Pre H COMP|[1] - [2]|1|*CALC|#|60| | | | | | |CTI_NBSEJCP|CTI_ADMHCP||||||||||||||||||||0|||||||||||Nombre d'admissions de patients avant la période choisie en Hospitalisation Complète||||||||| +1|CTI_ADMPREHDJ|*CALC|SSR - Admissions avant période (Hospitalisation de jour)|SSR - Admissions avant période (Hospitalisation de jour)|SSR Adm Pre HDJ|[1] - [2]|1|*CALC|#|60| | | | | | |CTI_NBSEJHDJ|CTI_ADMHDJ||||||||||||||||||||0|||||||||||Nombre d'admissions de patients avant la période choisie en Hospitalisation de Jour||||||||| +1|CTI_ADM_PRE|*CALC|NB Admissions avant période|Admissions avant période|Adm Pre|[1] - [2]|1|*CALC|#|60| | | | | | |CTI_NBSEJO|CTI_ADM||||||||||||||||||||0|||||||||||Nombre d'admissions de patients avant la période choisie|NBENT|NBSEJ||||||| +1|CTI_ADM_PRE_PER|*CALC|NB Admissions avant période|Admissions avant période|Adm < Per|[1] - [2]|1|*CALC|#|60| | | | | | |CTI_NBSEJO|CTI_NBENT_SAES||||||||||||||||||||0|||||||||||Nombre d'admissions de patients avant la période choisie|-TS1|-TS2|-TS3|-TS5|NBENT|NBSEJ||| +1|CTI_ATU_MT_ENC|FACTURATION_CLINIQUE|CA ATU Valorisé Clinique|Montant ATU Valorisé Clinique|Montant ATU Valorisé Clinique|CASE WHEN prestation_code IN ('ATU','FPU') THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des ATU valorisés|CAV|||||||| +1|CTI_ATU_MT_FAC|FACTURATION_CLINIQUE|CA ATU Facturé|Montant ATU facturé|Montant ATU facturé|CASE WHEN prestation_code IN('ATU') THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des ATU facturés|CAF|||||||| +1|CTI_ATU_MT_TOT|FACTURATION_CLINIQUE|CA ATU Facturé + Valorisé|Montant ATU Facturé + Valorisé|Montant ATU Facturé + Valorisé|CASE WHEN prestation_code IN ('ATU','FPU') THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des ATU facturés et valorisés|CAVF|||||||| +1|CTI_ATU_NB_ENC|FACTURATION_CLINIQUE|NB Rubriques ATU Valorisés|Nombre ATU Valorisés|Nombre ATU Valorisés|CASE WHEN prestation_code IN ('ATU','FPU') THEN nb_rubrique_encours ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre d'ATU valorisés|NBRUB|||||||| +1|CTI_ATU_NB_FAC|FACTURATION_CLINIQUE|NB Rubriques ATU facturés|Nombre ATU facturés|Nombre ATU facturés|CASE WHEN prestation_code IN ('ATU','FPU') THEN nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre d'ATU facturés|NBRUB|||||||| +1|CTI_ATU_NB_TOT|FACTURATION_CLINIQUE|NB Rubriques ATU Facturés + Valorisés|Nombre ATU Facturé + Valorisé|Nombre ATU Facturé + Valorisé|CASE WHEN prestation_code IN ('ATU','FPU') THEN nb_rubrique_facture + nb_rubrique_encours ELSE 0 END|1|SUM|#|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre d'ATU facturés et valorisés|NBRUB|||||||| +1|CTI_AUT_MT_ENC|FACTURATION_CLINIQUE|CA AUTRE Valorisé Clinique|"Montant ""Autres"" Valorisé Clinique"|"Montant ""Autres"" Valorisé Clinique"|CASE WHEN type_sejour NOT IN('1', '2', '3', '5') THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des 'autres' valorisés|CAV|||||||| +1|CTI_AUT_MT_FAC|FACTURATION_CLINIQUE|CA AUTRE Facturé|"Montant ""Autres"" Facturé"|"Montant ""Autres"" Facturé"|CASE WHEN type_sejour NOT IN('1', '2', '3', '5') THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des 'autres' facturés|CAF|||||||| +1|CTI_AUT_MT_TOT|FACTURATION_CLINIQUE|CA AUTRE Facturé + Valorisé|"Montant ""Autres"" Facturé + Valorisé"|"Montant ""Autres"" Facturé + Valorisé"|CASE WHEN type_sejour NOT IN('1', '2', '3', '5') THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des 'autres' facturés et valorisés|CAVF|||||||| +1|CTI_AUT_NBAUT|OCCUPATION|"NB Séjours ""Autres"" (occupation)"|"Nombres de séjours ""Autres"""|"Nombres de séjours ""Autres"""|DISTINCT CASE WHEN (code_prevu = 0 and type_sejour NOT IN('1', '2', '3', '5')) THEN no_sejour ELSE NULL END|1|COUNT|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de séjours 'autres' de l'établissement|NBSEJ|||||||| +1|CTI_AUT_NB_ENC|FACTURATION_CLINIQUE|NB Séjours CA AUTRE Valorisés Clinique|"Nombre séjours ""Autres"" Valorisés"|"Nombre séjours ""Autres"" Valorisés"|DISTINCT CASE WHEN (est_ligne_facturee = '0' and type_sejour NOT IN('1', '2', '3', '5')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours 'autres' valorisés|NBSEJ|||||||| +1|CTI_AUT_NB_FAC|FACTURATION_CLINIQUE|NB Séjours CA AUTRE facturés Clinique|"Séjours ""Autres"" facturés"|"Séjours ""Autres"" facturés"|DISTINCT CASE WHEN (est_ligne_facturee = '1' and type_sejour NOT IN('1', '2', '3', '5')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours 'autres' facturés|NBSEJ|||||||| +1|CTI_AUT_NB_TOT|FACTURATION_CLINIQUE|NB Séjours CA AUTRE Facturés + Valorisés Clinique|"Nombre de séjours ""Autres"" Facturés + Valorisés"|"Nombre de séjours ""Autres"" Facturés + Valorisés"|DISTINCT CASE WHEN ( type_sejour NOT IN('1', '2', '3', '5')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours 'autres' facturés et valorisés|NBSEJ|||||||| +1|CTI_CACPTENC_C_12M|*CALC|CA Activité comptable moyen mensuel 12 derniers mois (encours CTI)|CA moyen activité comptable|CA moyen activite comptable|[1]+[2]|1|*CALC|0E|0| | | | | | |CTI_CCAENCVAR_C_12M|CTI_MTCPTCLI_C_12M||||||||||||||||||||0|||||||||||Chiffre d'Affaires mensuel moyen de l'encours des 12 derniers mois|CACP|CAV||||||| +1|CTI_CALNBJ_OUVRE|CALENDRIER|Nombre de jours ouvrés|Nombre de jours ouvrés|Jours ouvrés|nb_jour_ouvre|1|SUM|#|0|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de jours ouvré de la période||||||||| +1|CTI_CAMFAC1_DC|*CALC|CA TOTAL Moyen Facturé [HOSP] (date sortie)|CA Moyen Total facturé (Hospitalisés) (date sortie)|CA Moyen Total facturé (Hospitalisés) (date sortie)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séjours hospitalisés (1 nuit minimum) facturés (date sortie)|-TS1|CAF|NBSEJ|||||| +1|CTI_CAMFAC2_DC|*CALC|CA TOTAL Moyen Facturé [AMBU] (date sortie)|CA Moyen Total facturé (Ambulatoire) (date sortie)|CA Moyen Total facturé (Ambulatoire) (date sortie)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séjours ambulatoires (0 nuits) facturés (date sortie)|-TS2|CAF|NBSEJ|||||| +1|CTI_CAMFAC3_DC|*CALC|CA TOTAL Moyen Facturé [EXT] (date sortie)|CA Moyen Total facturé (Externe) (date sortie)|CA Moyen Total facturé (Externe) (date sortie)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séjours externes facturés (date sortie)|-TS3|CAF|NBSEJ|||||| +1|CTI_CAMFAC5_DC|*CALC|CA TOTAL Moyen Facturé [SEANCE] (date sortie)|CA Moyen Total facturé (Séances) (date sortie)|CA Moyen Total facturé (Séances) (date sortie)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séances facturés (date sortie)|-TS5|CAF|NBSEJ|||||| +1|CTI_CAMFAC_CS|*CALC|CA TOTAL Moyen Facturé (date sortie)|CA Moyen facturé (date sortie)|CA Moyen facturé (date sortie)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séjours facturés (date sortie)|CAF|NBSEJ||||||| +1|CTI_CAMFAC_DC|*CALC|CA TOTAL Moyen Facturé (date vente)|CA Moyen facturé (date_ventes)|CA Moyen facturé (date_ventes)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séjours facturés (date vente)|CAF|NBSEJ||||||| +1|CTI_CAM_FACT|*CALC|CA moyen Facturé etablissement|CA moyen facturé etablissement|CA moyen facturé|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | |CTI_CA_FAC_ETAB|CTI_NBSEJO||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé moyen|CAF|NBSEJ||||||| +1|CTI_CAM_MT1_FAC|*CALC|CA SEJOUR moyen [HOSP]|CA moyen SEJOUR|CA moyen SEJOUR|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séjours hospitalisés (1 nuit minimum)|-TS1|CAF|NBSEJ|||||| +1|CTI_CAM_MT2_FAC|*CALC|CA SEJOUR moyen [AMBU]|CA moyen SEJOUR|CA moyen SEJOUR|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séjours ambulatoires (0 nuits)|-TS2|CAF|NBSEJ|||||| +1|CTI_CAM_MT5_FAC|*CALC|CA SEJOUR moyen [SEANCE]|CA moyen|CA moyen|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séances|-TS5|CAF||||||| +1|CTI_CAM_MTDA1_FAC|*CALC|CA SEJOUR moyen [HOSP] (date acte)|CA moyen SEJOUR|CA moyen SEJOUR|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séjours hospitalisés (1 nuit minimum) (date acte)|-TS1|CAF|NBSEJ|||||| +1|CTI_CAM_MTDA1_TOT|*CALC|CA SEJOUR Moyen Facturé + Valorisé [HOSP] (date acte)|CA moyen SEJOUR Facturé + Valorisé|CA moyen SEJOUR Facturé + Valorisé|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen facturé et valorisé des séjours hospitalisés (1 nuit minimum) (date acte)|-TS1|CAVF|NBSEJ|||||| +1|CTI_CAM_MTDA2_FAC|*CALC|CA SEJOUR moyen [AMBU] (date acte)|CA moyen SEJOUR (date acte)|CA moyen SEJOUR (date acte)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séjours ambulatoires (0 nuits) (date acte)|-TS2|CAF|NBSEJ|||||| +1|CTI_CAM_MTDA2_TOT|*CALC|CA SEJOUR Moyen Facturé + Valorisé [AMBU] (date acte)|CA moyen SEJOUR Facturé + Valorisé (date acte)|CA moyen SEJOUR Facturé + Valorisé (date acte)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen facturé et valorisé des séjours ambulatoires (0 nuits) (date acte)|-TS2|CAVF|NBSEJ|||||| +1|CTI_CAM_MTDA5_FAC|*CALC|CA SEJOUR moyen [SEANCE] (date acte)|CA moyen|CA moyen|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séances (date acte)|-TS5|CAF|NBSEJ|||||| +1|CTI_CAM_MTDA5_TOT|*CALC|CA SEJOUR Moyen Facturé + Valorisé [SEANCE] (date acte)|CA moyen SEJOUR Facturé + Valorisé (Séances)|CA moyen SEJOUR Facturé + Valorisé (Séances)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen facturé et valorisé des séances (date acte)|-TS5|CAVF|NBSEJ|||||| +1|CTI_CAM_MTDA8_FAC|*CALC|CA SEJOUR moyen (date acte)|CA moyen SEJOUR (date acte)|CA moyen SEJOUR (date acte)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séjours (date acte)|CAF|NBSEJ||||||| +1|CTI_CAM_MTDA8_TOT|*CALC|CA SEJOUR Moyen Facturé + Valorisé (date acte)|CA moyen SEJOUR Facturé + Valorisé (date acte)|CA moyen SEJOUR Facturé + Valorisé (date acte)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen facturé et valorisé des séjours (date acte)|CAVF|NBSEJ||||||| +1|CTI_CAM_MTDS1_FAC|*CALC|CA SEJOUR moyen [HOSP] (date sortie)|CA moyen SEJOUR|CA moyen SEJOUR|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen facturé des séjours hospitalisés (1 nuit minimum) (date sortie)|-TS1|CAF|NBSEJ|||||| +1|CTI_CAM_MTDS1_TOT|*CALC|CA SEJOUR Moyen Facturé + Valorisé [HOSP] (date sortie)|CA moyen SEJOUR Facturé + Valorisé|CA moyen SEJOUR Facturé + Valorisé|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen facturé et valorisé des séjours hospitalisés (1 nuit minimum) (date sortie)|-TS1|CAVF|NBSEJ|||||| +1|CTI_CAM_MTDS2_FAC|*CALC|CA SEJOUR moyen [AMBU] (date sortie)|CA moyen SEJOUR (date sortie)|CA moyen SEJOUR (date sortie)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séjours ambulatoires (0 nuits) (date sortie)|-TS2|CAF|NBSEJ|||||| +1|CTI_CAM_MTDS2_TOT|*CALC|CA SEJOUR Moyen Facturé + Valorisé [AMBU] (date sortie)|CA moyen SEJOUR Facturé + Valorisé (date sortie)|CA moyen SEJOUR Facturé + Valorisé (date sortie)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen facturé et valorisé des séjours ambulatoires (0 nuits) (date sortie)|-TS2|CAVF|NBSEJ|||||| +1|CTI_CAM_MTDS5_FAC|*CALC|CA SEJOUR moyen [SEANCE] (date sortie)|CA moyen|CA moyen|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séances (date sortie)|-TS5|CAF|NBSEJ|||||| +1|CTI_CAM_MTDS5_TOT|*CALC|CA SEJOUR Moyen Facturé + Valorisé [SEANCE] (date sortie)|CA moyen SEJOUR Facturé + Valorisé (Séances)|CA moyen SEJOUR Facturé + Valorisé (Séances)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen facturé et valorisé des séances (date sortie)|-TS5|CAVF|NBSEJ|||||| +1|CTI_CAM_MTDS8_FAC|*CALC|CA SEJOUR moyen (date sortie)|CA moyen SEJOUR (date sortie)|CA moyen SEJOUR (date sortie)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séjours (date sortie)|CAF|NBSEJ||||||| +1|CTI_CAM_MTDS8_TOT|*CALC|CA SEJOUR Moyen Facturé + Valorisé (date sortie)|CA moyen SEJOUR Facturé + Valorisé (date sortie)|CA moyen SEJOUR Facturé + Valorisé (date sortie)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen facturé et valorisé des séjours (date sortie)|CAVF|NBSEJ||||||| +1|CTI_CAM_MTDV1_FAC|*CALC|CA SEJOUR moyen [HOSP] (date vente)|CA moyen SEJOUR|CA moyen SEJOUR|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen facturé des séjours hospitalisés (1 nuit minimum) (date vente)|-TS1|CAF|NBSEJ|||||| +1|CTI_CAM_MTDV1_TOT|*CALC|CA SEJOUR Moyen Facturé + Valorisé [HOSP] (date vente)|CA moyen SEJOUR Facturé + Valorisé|CA moyen SEJOUR Facturé + Valorisé|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen facturé et valorisé des séjours hospitalisés (1 nuit minimum) (date vente)|-TS1|CAVF|NBSEJ|||||| +1|CTI_CAM_MTDV2_FAC|*CALC|CA SEJOUR moyen [AMBU] (date vente)|CA moyen SEJOUR (date vente)|CA moyen SEJOUR (date vente)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séjours ambulatoires (0 nuits) (date vente)|-TS2|CAF|NBSEJ|||||| +1|CTI_CAM_MTDV2_TOT|*CALC|CA SEJOUR Moyen Facturé + Valorisé [AMBU] (date vente)|CA moyen SEJOUR Facturé + Valorisé (date vente)|CA moyen SEJOUR Facturé + Valorisé (date vente)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen facturé et valorisé des séjours ambulatoires (0 nuits) (date vente)|-TS2|CAVF|NBSEJ|||||| +1|CTI_CAM_MTDV5_FAC|*CALC|CA SEJOUR moyen [SEANCE] (date vente)|CA moyen|CA moyen|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séances (date vente)|-TS5|CAF|NBSEJ|||||| +1|CTI_CAM_MTDV5_TOT|*CALC|CA SEJOUR Moyen Facturé + Valorisé [SEANCE] (date vente)|CA moyen SEJOUR Facturé + Valorisé (Séances)|CA moyen SEJOUR Facturé + Valorisé (Séances)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen facturé et valorisé des séances (date vente)|-TS5|CAVF|NBSEJ|||||| +1|CTI_CAM_MTDV8_FAC|*CALC|CA SEJOUR moyen (date vente)|CA moyen SEJOUR (date vente)|CA moyen SEJOUR (date vente)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des séjours (date vente)|CAF|NBSEJ||||||| +1|CTI_CAM_MTDV8_TOT|*CALC|CA SEJOUR Moyen Facturé + Valorisé (date vente)|CA moyen SEJOUR Facturé + Valorisé (date vente)|CA moyen SEJOUR Facturé + Valorisé (date vente)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen facturé et valorisé des séjours (date vente)|CAVF|NBSEJ||||||| +1|CTI_CAM_SOINS_CPT|*CALC|CA SOINS Moyen comptabilisé (date vente)|CA moyen Soins (date acte)|CA moyen Soins (date acte)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | |CTI_CA_T2A_CPT|CTI_NBSEJ_SOINS_CPT||||||||||||||||||||0|||||||||||Chiffre d'Affaires comptabilisé moyen des soins (date vente)|CACP|NBSEJ||||||| +1|CTI_CAM_SOINS_FACVAL#2|*CALC|CA SOINS Moyen Facturé + Valorisé (date sortie)|CA moyen Soins (date sortie)|CA moyen Soins (date sortie)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé moyen des soins (date sortie)|CAVF|NBSEJ||||||| +1|CTI_CAT_MT1_FAC|*CALC|CA SOINS Moyen [HOSP]|CA moyen Soins|CA moyen Soins|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des soins effectués lors des séjours hospitalisés (1 nuit minimum)|-TS1|CAF|NBSEJ|||||| +1|CTI_CAT_MT2_FAC|*CALC|CA SOINS Moyen [AMBU]|CA moyen Soins|CA moyen Soins|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des soins effectués lors des séjours ambulatoires (0 nuits)|-TS2|CAF|NBSEJ|||||| +1|CTI_CAT_MT5_FAC|*CALC|CA SOINS Moyen [SEANCE]|CA moyen|CA moyen|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des soins effectués lors des séances|-TS5|CAF||||||| +1|CTI_CAT_MTD18_FACVAL|*CALC|CA SOINS Moyen Facturé + Valorisé (date acte)|CA moyen Soins (date acte)|CA moyen Soins (date acte)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | |CTI_T2A_MT_TOT|CTI_EMC||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé moyen des soins (date acte)|CAVF|||||||| +1|CTI_CAT_MTDA2_FAC|*CALC|CA SOINS Moyen [AMBU] (date acte)|CA moyen Soins (date acte)|CA moyen Soins (date acte)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des soins réalisés lors des séjours ambulatoires (0 nuits) (date acte)|-TS2|CAF|NBSEJ|||||| +1|CTI_CAT_MTDA5_FAC|*CALC|CA SOINS Moyen [SEANCE] (date acte)|CA moyen|CA moyen|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des soins réalisés lors des séances (date acte)|-TS5|CAF|NBSEJ|||||| +1|CTI_CAT_MTDA8_FAC|*CALC|CA SOINS Moyen (date acte)|CA moyen Soins (date acte)|CA moyen Soins (date acte)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des soins (date acte)|CAF|NBSEJ||||||| +1|CTI_CAT_MTDA_FAC|*CALC|CA SOINS Moyen [HOSP] (date acte)|CA moyen Soins|CA moyen Soins|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0||||||||||||-TS1|CAF|NBSEJ|||||| +1|CTI_CAT_MTDS1_FAC|*CALC|CA SOINS Moyen [HOSP] (date sortie)|CA moyen Soins|CA moyen Soins|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des soins réalisés lors des séjours hospitalisés (1 nuit minimum) (date sortie)|-TS1|CAF|NBSEJ|||||| +1|CTI_CAT_MTDS2_FAC|*CALC|CA SOINS Moyen [AMBU] (date sortie)|CA moyen Soins (date sortie)|CA moyen Soins (date sortie)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des soins réalisés lors des séjours ambulatoires (0 nuits) (date sortie)|-TS2|CAF|NBSEJ|||||| +1|CTI_CAT_MTDS5_FAC|*CALC|CA SOINS Moyen [SEANCE] (date sortie)|CA moyen|CA moyen|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des soins réalisés lors des séances (date sortie)|-TS5|CAF|NBSEJ|||||| +1|CTI_CAT_MTDS8_FAC|*CALC|CA SOINS Moyen (date sortie)|CA moyen Soins (date sortie)|CA moyen Soins (date sortie)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des soins (date sortie)|CAF|NBSEJ||||||| +1|CTI_CAT_MTDV1_FAC|*CALC|CA SOINS Moyen [HOSP] (date vente)|CA moyen Soins|CA moyen Soins|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des soins réalisés lors des séjours hospitalisés (1 nuit minimum) (date vente)|-TS1|CAF|NBSEJ|||||| +1|CTI_CAT_MTDV2_FAC|*CALC|CA SOINS Moyen [AMBU] (date vente)|CA moyen Soins (date vente)|CA moyen Soins (date vente)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des soins réalisés lors des séjours ambulatoires (0 nuits) (date vente)|-TS2|CAF|NBSEJ|||||| +1|CTI_CAT_MTDV5_FAC|*CALC|CA SOINS Moyen [SEANCE] (date vente)|CA moyen|CA moyen|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des soins réalisés lors des séances (date vente)|-TS5|CAF|NBSEJ|||||| +1|CTI_CAT_MTDV8_FAC|*CALC|CA SOINS Moyen (date vente)|CA moyen Soins (date vente)|CA moyen Soins (date vente)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des soins (date vente)|CAF|NBSEJ||||||| +1|CTI_CA_COMPT|SEJOURS|CA comptabilisé total|CA comptabilisé etablissement|CA Comptabilisé|montant_comptabilise|1|SUM|#E|80|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires comptabilisé total||||||||| +1|CTI_CA_COMPT_EXT|SEJOURS|CA comptabilisé (Autres- Externes)|CA comptabilisé (Autres- Externes)|CA comptabilisé (Autres)|CASE WHEN type_sejour = '3' THEN montant_comptabilise ELSE NULL END|1|SUM|#E|70|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires comptabilisé des séjours Autres et Externes|-TS3|||||||| +1|CTI_CA_COMPT_HC|SEJOURS|CA comptabilis?ospitalisation complète|CA comptabilisé hospitalisation complète|CA comptabilisé (HC)|CASE WHEN type_sejour = '1' THEN montant_comptabilise ELSE NULL END|1|SUM|#E|80|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires comptabilisé des séjours en Hospitalisation Complète (1 nuit minimum)||||||||| +1|CTI_CA_COMP_HJ|SEJOURS|CA comptrabilisé (Hospitalisation de jour)|CA comptrabilisé (Hospitalisation de jour)|CA comptrabilisé (HJ)|CASE WHEN type_sejour = '2' OR type_sejour = '5' THEN montant_comptabilise ELSE NULL END|1|SUM|#E|70|4| | | | |4||||||||||||||||||||||0|||||||||||||||||||| +1|CTI_CA_EXP_ETAB|SEJOURS|CA expédié|CA expédié établissement |CA expédié|CASE WHEN nb_non_expedie <> 1 THEN montant_facture ELSE NULL END|1|SUM|#E|80|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des factures expédiées|CAF|||||||| +1|CTI_CA_EXP_EXT|SEJOURS|CA expédié (Autres-externes)|CA expédié (Autres-externes)|CA expédié (Autres)|CASE WHEN type_sejour = '3' AND nb_non_expedie <> 1 THEN montant_facture ELSE NULL END|1|SUM|#E|80|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des factures expédiées en Autres et Externes|-TS3|CAF||||||| +1|CTI_CA_EXP_HC|SEJOURS|CA expédié (hospitalisation complète)|CA expédié (hospitalisation complète)|CA expédié (HC)|CASE WHEN type_sejour = '1' AND nb_non_expedie <> 1 THEN montant_facture ELSE NULL END|1|SUM|#E|70|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des factures expédiées pour des séjours en Hospitalisation Complète (1 nuit minimum)|CAF|||||||| +1|CTI_CA_EXP_HJ|SEJOURS|CA expédié (Hospitalisation de jour)|CA expédié (Hospitalisation de jour)|CA expédié (HJ)|CASE WHEN (type_sejour = '2' OR type_sejour = '5') AND nb_non_expedie <> 1 THEN montant_facture ELSE NULL END|1|SUM|#E|70|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des factures expédiées pour des séjours en Hospitalisation de Jour (0 nuits)|CAF|||||||| +1|CTI_CA_FACT_EXT|SEJOURS|CA Facturé (Autres = externes)|CA facturé (Autres = externes)|CA facturé (Autres)|CASE WHEN type_sejour = '3' THEN montant_facture ELSE NULL END|1|SUM|#E|80|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé en Autres et Externes|-TS3|CAF||||||| +1|CTI_CA_FACT_HC|SEJOURS|CA Facturé hospitalisation complète|CA facturé hospitalisation complète|CA facturé (HC)|CASE WHEN type_sejour = '1' THEN montant_facture ELSE NULL END|1|SUM|#E|80|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé en Hospitalisation Complète (1 nuit minimum)|CAF|||||||| +1|CTI_CA_FACT_HJ|SEJOURS|CA Facturé (Hospitalisation de jour)|CA facturé (Hospitalisation de jour)|CA facturé (hj)|CASE WHEN type_sejour = '2' OR type_sejour = '5' THEN montant_facture ELSE NULL END|1|SUM|#E|80|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé en Hospitalisation de Jour (0 nuits)|CAF|||||||| +1|CTI_CA_FACT_VAL|SEJOURS|CA Total|CA Total (Facturé + valorisé)|CA Total|montant_facture_c + montant_encours_c|1|SUM|#E|80|2| | | | |2||||||||||||||||||||||0||||||||||||CAVF|||||||| +1|CTI_CA_FACT_VAL_HC|SEJOURS|CA Facturé + Ca Valorisé (hospitalisation complète)|CA facturé + Ca valorisé (hospitalisation complète)|CA facturé + Ca valorisé (hc)|CASE WHEN type_sejour = '1' THEN montant_facture + montant_encours ELSE NULL END|1|SUM|#E|80|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des séjours en Hospitalisation Complète (1 nuit minimum)||||||||| +1|CTI_CA_FAC_ETAB|SEJOURS|CA Facturé Etablissement|CA facturé etablissement|CA facturé|montant_facture_c|1|SUM|#E|80|2| | | | |2||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé|CAF|||||||| +1|CTI_CA_FAC_VAL_EXT|*CALC|CA Facturé + Valorisé (Autres-Externes)|CA facturé + valorisé (Autres-Externes)|CA facturé + valorisé (Autres)|[1]+[2]|1|*CALC|#E|80| | | | | | |CTI_CA_FACT_EXT|CTI_CA_VAL_EXT||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des séjours Externes|-TS3|CAF||||||| +1|CTI_CA_FAC_VAL_EXT-2|*CALC|CA facturé + valorisé (Autres-Externes)|CA facturé + valorisé (Autres-Externes)|CA facturé + valorisé (Autres)|[1] + [2]|1|*CALC|#E|80| | | | | | |CTI_CA_FACT_EXT|CTI_CA_VAL_EXT||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des séjours Externes|-TS3|CAF|CAV|||||| +1|CTI_CA_FAC_VAL_HJ|SEJOURS|CA Facturé + Valorisé (Hospitalisation de jour)|CA facturé + valorisé (Hospitalisation de jour)|CA facturé + valorisé (HJ)|CASE WHEN type_sejour = '2' OR type_sejour = '5' THEN montant_facture + montant_encours ELSE NULL END |1|SUM|#E|80|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des séjours en Hospitalisation de jour (0 nuits)||||||||| +1|CTI_CA_MOY_FACT_HC|*CALC|CA moyen Facturé hospitalisation complète|CA moyen facturé hospitalisation complète|CA moyen facturé (HC)|base.cti_division([1] , [2])|1|*CALC|#E|60| | | | | | |CTI_CA_FACT_HC|CTI_NBSEJ_HC||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé moyen des séjours en Hospitalisation Complète|CAF|NBSEJ||||||| +1|CTI_CA_MOY_FACT_VAL_ETAB|*CALC|CA moyen Facturé + Valorisé (Etablissement)|CA moyen facturé + valorisé (Etablissement)|CA moyen facturé + valorisé|base.cti_division([1]+[2],[3])|1|*CALC|#E|60| | | | | | |CTI_CA_FAC_ETAB|CTI_CA_VAL_ETAB|CTI_NBSEJO|||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé moyen de l'établissement|CAF|NBSEJ||||||| +1|CTI_CA_MOY_FAC_EXT|*CALC|CA moyen Facturé (Autres = externes)|CA moyen facturé (Autres = externes)|CA moyen facturé (Autres)|base.cti_division([1] , [2])|1|*CALC|#E|60| | | | | | |CTI_CA_FACT_EXT|CTI_NBSEJ_EXT||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé moyens des séjours Externes|-TS3|CAF|NBSEJ|||||| +1|CTI_CA_MOY_FAC_HJ|*CALC|CA moyen Facturé (Hospitalisation de jour)|CA moyen facturé (Hospitalisation de jour)|CA moyen facturé (HJ)|base.cti_division([1] , [2])|1|*CALC|#E|60| | | | | | |CTI_CA_FACT_HJ|CTI_NBSEJ_HJ||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé moyen des séjours en Hospitalisation de Jour|CAF|NBSEJ||||||| +1|CTI_CA_MOY_FAC_VAL_EXT|*CALC|CA moyen Facturé + Valorisé (Autres-Externes)|||base.cti_division([1] + [2],[3])|1|*CALC||0| | | | | | |CTI_CA_FACT_EXT|CTI_CA_VAL_EXT|CTI_NBSEJ_EXT|||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des séjours Externes|-TS3|CAF|NBSEJ|||||| +1|CTI_CA_MOY_FAC_VAL_HJ|*CALC|CA moyen Facturé + Valorisé (Hospitalisation de jour)|CA moyen facturé + valorisé (Hospitalisation de jour)|CA moyen facturé + valorisé (HJ)|base.cti_division([1] , [2])|1|*CALC|#E|60| | | | | | |CTI_CA_FAC_VAL_HJ|CTI_NBSEJ_HJ||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des séjours en Hospitalisation de Jour|NBSEJ|||||||| +1|CTI_CA_MOY_FCT_VAL_HC|*CALC|CA moyen Facturé + Valorisé (hospitalisation complète)|CA moyen facturé + valorisé (hospitalisation complète)|CA moyen facturé + valorisé (HC)|base.cti_division([1] , [2])|1|*CALC|#E|70| | | | | | |CTI_CA_FACT_VAL_HC|CTI_NBSEJ_HC||||||||||||||||||||0||||||||||||NBSEJ|||||||| +1|CTI_CA_NON_EXP_ETAB|SEJOURS|CA restant à expédier|CA restant à expédier|CA restant à expédier|montant_non_expedie_c|1|SUM|#E|0|2| | | | |2||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des factures non expédiées||||||||| +1|CTI_CA_NON_EXP_EXT|SEJOURS|CA restant à expédier (Autres-Externes)|CA restant à expédier (Autres-Externes)|CA non expédier (Autres)|CASE WHEN type_sejour = '3' THEN montant_non_expedie ELSE NULL END|1|SUM|#E|70|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des factures non expédiées des séjours Externes|-TS3|||||||| +1|CTI_CA_NON_EXP_HC|SEJOURS|CA restant à expédier (hospitalisation complète)|CA restant à expédier (hospitalisation complète)|CA restant à expédier (HC)|CASE WHEN type_sejour = '1' THEN montant_non_expedie ELSE NULL END|1|SUM|#E|70|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des factures non expédiées des séjours en Hospitalisation Complète||||||||| +1|CTI_CA_NON_EXP_HJ|SEJOURS|CA restant à expédier (Hospitalisation de jour)|CA restant à expédier (Hospitalisation de jour)|CA restant à expédier (HJ)|CASE WHEN (type_sejour = '2' OR type_sejour = '5') THEN montant_non_expedie ELSE NULL END|1|SUM|#E|80|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des factures non expédiées des séjours en Hospitalisation de Jour||||||||| +1|CTI_CA_NON_SOL|SEJOURS|CA restant à solder|CA restant à solder|CA restant à solder|CASE WHEN nb_non_solde_0_c <> 0 THEN montant_solde_0_c ELSE 0 END + CASE WHEN nb_non_solde_1_c <> 0 THEN montant_solde_1_c ELSE 0 END + CASE WHEN nb_non_solde_2_c <> 0 THEN montant_solde_2_c ELSE 0 END|1|SUM|#E|80|2| | | | |2||||||||||||||||||||||0||||||||||||CASL|||||||| +1|CTI_CA_NON_SOL_ETAB|SEJOURS|CA restant à solder établissement|CA restant à solder établissement|CA restant à solder|CASE WHEN nb_non_solde = 1 THEN montant_solde ELSE NULL END|1|SUM|#E|70|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des factures non soldées|CASL|||||||| +1|CTI_CA_NON_SOL_EXT|SEJOURS|CA restant à solder (Autres-Externes)|CA restant à solder (Autres-Externes)|CA non solder (Autres)|CASE WHEN type_sejour = '3' AND nb_non_solde = 1 THEN montant_solde ELSE NULL END|1|SUM|#E|70|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des factures non soldées des séjours Externes|-TS3|CASL||||||| +1|CTI_CA_NON_SOL_HC|SEJOURS|CA restant à solder (hospitalisation complète)|CA restant à solder (hospitalisation complète)|CA restant à solder (HC)|CASE WHEN type_sejour = '1' AND nb_non_solde = 1 THEN montant_solde ELSE NULL END|1|SUM|#E|70|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des factures non soldées des séjours en Hospitalisation complète|CASL|||||||| +1|CTI_CA_NON_SOL_HJ|SEJOURS|CA restant à solder (Hospitalisation de jour)|CA restant à solder (Hospitalisation de jour)|CA restant à solder (HJ)|CASE WHEN (type_sejour = '2' OR type_sejour = '5') AND nb_non_solde = 1 THEN montant_solde ELSE NULL END|1|SUM|#E|70|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des factures non soldées des séjours en Hospitalisation de Jour|CASL|||||||| +1|CTI_CA_RUBMED_MT_CPT|FACTURATION_CLINIQUE|CA SEJOUR comptabilisé|Montant CA SEJOUR comptabilisé|Montant CA SEJOUR comptabilisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] THEN montant_comptabilise ELSE 0 END|1|SUM|#E|80|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires comptabilisé pour les séjours dans l'établissement|CACP|||||||| +1|CTI_CA_SOL_ETAB|SEJOURS|CA soldé établissement|CA soldé établissement|CA soldé |CASE WHEN nb_non_solde<> 1 THEN montant_facture ELSE NULL END|1|SUM|#E|60|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des factures soldées|CAF|||||||| +1|CTI_CA_SOL_EXT|SEJOURS|CA soldé (Autres-Externes)|CA soldé (Autres-Externes)|CA soldé (Autres)|CASE WHEN type_sejour = '3' AND nb_non_solde <> 1 THEN montant_facture ELSE NULL END|1|SUM|#E|70|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des factures soldées des séjours Externes|-TS3|CAF||||||| +1|CTI_CA_SOL_HC|SEJOURS|CA soldé (hospitalisation complète)|CA soldé (hospitalisation complète)|CA soldé (HC)|CASE WHEN type_sejour = '1' AND nb_non_solde <> 1 THEN montant_facture ELSE NULL END|1|SUM|#E|70|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des factures soldées des séjours en Hospitalisation complète (1 nuit minimum)|CAF|||||||| +1|CTI_CA_SOL_HJ|SEJOURS|CA soldé (Hospitalisation de jour)|CA soldé (Hospitalisation de jour)|CA soldé (HJ)|CASE WHEN (type_sejour = '2' OR type_sejour = '5') AND nb_non_solde <> 1 THEN montant_facture ELSE NULL END|1|SUM|#E|80|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des factures soldées des séjours en Hospitalisation de Jour (0 nuits)|CAF|||||||| +1|CTI_CA_T2A_CPT|FACTURATION_CLINIQUE|CA SOINS comptabilisé|Montant CA SOINS comptabilisé|Montant CA SOINS comptabilisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] THEN montant_comptabilise ELSE 0 END|1|SUM|#E|80|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires comptabilisé des soins|CACP|||||||| +1|CTI_CA_VAL_ETAB|SEJOURS|CA Valorisé établissement|CA valorisé établissement|CA valorisé|montant_encours|1|SUM|#E|80|2| | | | |2||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des séjours de l'établissement||||||||| +1|CTI_CA_VAL_EXT|SEJOURS|CA Valorisé (Autres-Externes)|CA valorisé (Autres-Externes)|CA valorisé (Autres)|CASE WHEN type_sejour = '3' THEN montant_encours ELSE NULL END|1|SUM||0|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des séjours externes|-TS3|||||||| +1|CTI_CA_VAL_HC|SEJOURS|CA Valorisé hospitalisation complète|CA valorisé hospitalisation complète|CA valorisé (HC)|CASE WHEN type_sejour = '1' THEN montant_encours ELSE NULL END|1|SUM|#E|80|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des séjours en Hospitalisation Complète||||||||| +1|CTI_CA_VAL_HJ|SEJOURS|CA Valorisé (Hospitalisation de jour)|CA valorisé (Hospitalisation de jour)|CA valorisé (HJ)|CASE WHEN type_sejour = '2' OR type_sejour = '5' THEN montant_encours ELSE NULL END|1|SUM|#E|70|3| | | | |3||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des séjours en Hospitalisation de Jour||||||||| +1|CTI_CCAACTCOMPTA_C|*CALC|CA Activité comptable (Encours CTI)|Montant activité comptable|Montant activité comptable|[1]+[2]|1|*CALC|0E|0| | | | | | |CTI_MTCPTCLI_C|CTI_CCAENCVAR_C||||||||||||||||||||0|||||||||||Chiffre d'Affaires de l'activité comptable (encours)|CACP|CAV||||||| +1|CTI_CCAACTCOMPTA_SEJOUR_C|*CALC|CA SEJOUR Activité comptable (Encours CTI)|CA activité comptable Séjour|CA activité comptable Séjour|[1]+[2]|1|*CALC|0E|0| | | | | | |CTI_CA_RUBMED_MT_CPT|CTI_CCAENCVAR_SEJOUR_C||||||||||||||||||||0|||||||||||Chiffre d'Affaires de l'activité comptable des séjours (encours)|CACP|CAV||||||| +1|CTI_CCAACTCOMPTA_SOINS_C|*CALC|CA SOINS Activité comptable (Encours CTI)|CA activité comptable Soins|CA activité comptable Soins|[1]+[2]|1|*CALC|0E|0| | | | | | |CTI_CA_T2A_CPT|CTI_CCAENCVAR_SOINS_C||||||||||||||||||||0|||||||||||Chiffre d'Affaires de l'activité comptable des soins (encours)|CACP|CAV||||||| +1|CTI_CCAENCDER_C|EN_COURS|CA encours dernier mois CTI|Montant encours|Montant encours|CASE WHEN code_origine = 'C' THEN montant_encours ELSE 0 END|1|SUMLASTMONTH|0E|0|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires de l'encours du mois précédent|CAV|||||||| +1|CTI_CCAENCRECPRE_C|EN_COURS|CA report encours CTI premier mois|Montant report encours|Montant report encours|CASE WHEN code_origine = 'C' THEN montant_report_encours ELSE 0 END|1|SUMFIRSTMONTH|0E|0|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires du report de l'encours du mois précédent|CAV|||||||| +1|CTI_CCAENCREP_C|EN_COURS|CA report encours CTI|Montant report encours|Montant report encours|CASE WHEN code_origine = 'C' THEN montant_report_encours ELSE 0 END|1|SUM|0E|0|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires du report de l'encours|CAV|||||||| +1|CTI_CCAENCVAR_C|EN_COURS|CA variation encours CTI|CA variation encours|CA variation encours|CASE WHEN code_origine = 'C' THEN montant_variation_encours ELSE 0 END|1|SUM|0E|0|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires de la variation de l'encours|CAV|||||||| +1|CTI_CCAENCVAR_C_12M|EN_COURS|CA variation encours CTI moyen (12 derniers mois)|Montant variation encours moyen|Montant variation encours moyen|CASE WHEN code_origine = 'C' THEN montant_variation_encours ELSE 0 END|1|AVG12M|0E|0|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen de la variation de l'encours sur les 12 derniers mois|CAV|||||||| +1|CTI_CCAENCVAR_SEJOUR_C|EN_COURS|CA SEJOUR variation en-cours|Variation en-cours Séjour|Variation en-cours Séjour|CASE WHEN code_origine = 'C' AND rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] THEN montant_variation_encours ELSE 0 END|1|SUM|#E|80|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires de la variation de l'encours des séjours|CAV|||||||| +1|CTI_CCAENCVAR_SOINS_C|EN_COURS|CA SOINS variation en-cours|Variation en-cours Soins|Variation en-cours Soins|CASE WHEN code_origine = 'C' AND rubrique_facturation_id IN [LISTE:CTI_T2A_R] THEN montant_variation_encours ELSE 0 END|1|SUM|#E|80|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires de la variation de l'encours des soins|CAV|||||||| +1|CTI_CCAENC_C|EN_COURS|CA encours CTI|Montant encours|Montant encours|CASE WHEN code_origine = 'C' THEN montant_encours ELSE 0 END|1|SUM|0E|0|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires de l'encours|CAV|||||||| +1|CTI_CDELSOLCA_C|*CALC|Délai de solde selon CA (encours CTI)|Délai de solde selon CA|Délai de solde selon CA|base.cti_division(([1]+[2])*365,([3]+[4])*12)|1|*CALC|0j|0| | | | | | |CTI_MTSOLCLI_C|CTI_CCAENCDER_C|CTI_MTCPTCLI_C_12M|CTI_CCAENCVAR_C_12M||||||||||||||||||0|||||||||||Délai de solde selon le Chiffre d'Affaires|CACP|CASL|CAV|||||| +1|CTI_CPC_MT_CPT|FACTURATION_CLINIQUE|CA CPC comptabilisé|CA chambre particulière comptabilisé|CA chambre particulière comptabilisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SHO_R] THEN montant_comptabilise ELSE 0 END|1|SUM|#E|80|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires comptabilisé des chambres particulières|CACP|||||||| +1|CTI_DELAIFAC|*CALC|Délai de facturation|Délai de facturation|Délai de facturation|base.cti_division([1] , [2])|1|*CALC|0,0j|60| | | | | | |CTI_SUM_DEL_FACTURE|CTI_SUM_NB_CALCULES||||||||||||||||||||0|||||||||||Délai de facturation||||||||| +1|CTI_DELAIG|SEJOURS|Délai de groupage|Délai de groupage|Délai groupage|delai_groupage|1|AVG|0,0|0|2|5| | | | ||||||||||||||||||||||0|||||||||||Délai de groupage||||||||| +1|CTI_DELAISOL|*CALC|Délai de solde|Délai de solde|Délai de solde|base.cti_division([1] , [2])|1|*CALC|#,0j|40| | | | | | |CTI_SUM_DEL_SOLD|CTI_NB_SOLDER||||||||||||||||||||0|||||||||||Délai de solde|NBJOU|NOMBRE||||||| +1|CTI_DEL_GROUPAGE|*CALC|Délai de groupage|Délai de groupage|Délai de groupage|base.cti_division([1] , [2])|1|*CALC|0,0j|60| | | | | | |CTI_SUM_DEL_GRP|CTI_SUM_NB_GROUPE||||||||||||||||||||0||||||||||||NBJOU|NOMBRE||||||| +1|CTI_DEP|OCCUPATION|NB Départs sur la période|Départs sur la période|Sor Per|nb_ambulatoires + CASE WHEN type_sejour = '5' THEN 0 ELSE nb_seances END + nb_externes + nb_sorties_directes|1|SUM|#|0|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de sorties de patients sur la période|NBSOR|||||||| +1|CTI_DEPCOMP|OCCUPATION|SSR - Départs sur la période (Hospitalisation complète)|SSR- Départs sur la période (Hospitalisation complète)|SSR Sor Per H COMP|CASE WHEN mode_traitement_id = '3' THEN (nb_ambulatoires + CASE WHEN nb_entrees_directes = 1 THEN 0 ELSE nb_seances END + nb_externes + nb_sorties_directes) ELSE 0 END|1|SUM|#|0|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de sorties des séjours en Hospitalisation Complète||||||||| +1|CTI_DIA_MT_FAC|FACTURATION_CLINIQUE|CA DIALYSE Facturé|Montant Dialyse Facturé|Montant Dialyse Facturé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_DIA_R] THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des dialyses|CAF|||||||| +1|CTI_DIVERS_MT_ENC|FACTURATION_CLINIQUE|CA DIVERS Valorisé|CA [DIVERS] Valorisé|CA [DIVERS] Valorisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_DIVERS_R] THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des divers|CAV|||||||| +1|CTI_DIVERS_MT_FAC|FACTURATION_CLINIQUE|CA DIVERS Facturé|CA [DIVERS] facturé|CA [DIVERS] facturé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_DIVERS_R] THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des divers|CAF|||||||| +1|CTI_DIVERS_MT_TOT|FACTURATION_CLINIQUE|CA DIVERS Facturé + Valorisé|CA [DIVERS] facturé + Valorisé|CA [DIVERS] facturé + Valorisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_DIVERS_R] THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des divers|CAVF|||||||| +1|CTI_DIVERS_RUB_ENC|FACTURATION_CLINIQUE|NB Rubriques DIVERS Valorisées|Nombre rubriques [DIVERS] Valorisées|Nombre rubriques [DIVERS] Valorisées|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_DIVERS_R] THEN nb_rubrique_encours ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de rubriques valorisées en divers|NBRUB|||||||| +1|CTI_DIVERS_RUB_FAC|FACTURATION_CLINIQUE|NB Rubriques DIVERS facturées|Nombre rubriques [DIVERS] facturées|Nombre rubriques [DIVERS] facturées|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_DIVERS_R] THEN nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de rubriques facturées en divers|NBRUB|||||||| +1|CTI_DIVERS_RUB_TOT|FACTURATION_CLINIQUE|NB Rubriques DIVERS Facturées + Valorisées|Nombre rubriques [DIVERS] Facturées + Valorisées|Nombre rubriques [DIVERS] Facturées + Valorisées|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_DIVERS_R] THEN nb_rubrique_facture + nb_rubrique_encours ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de rubriques facturées et valorisées en divers|NBRUB|||||||| +1|CTI_DMSCP|*CALC|SSR - DMS totale (Nb de Jours + Ambulatoire JSN/Nb Sorties directes + Ambulatoire JSN)|DMS totale (Nb de journées + Ambulatoire JSN/Nb Sorties directes + Ambulatoire JSN)|DMS totale (Nb de journées + Ambulatoire JSN/Nb Sorties directes + Ambulatoire JSN)|CASE WHEN [2] <> 0 THEN [1] / [2] ELSE 0 END|1|*CALC|#,00|80| | | | | | |CTI_JRSORCP|CTI_SORDIRCOM||||||||||||||||||||0|||||||||||DMS totale de l'établissement|-TS1|-TS2|-TS5|||||| +1|CTI_DMSHOS|SEJOURS|DMS Hospitalisés|DMS Hospitalisés|DMS Hospitalisés|CASE WHEN type_sejour = '1' AND code_sorti = '1' AND date_sortie > date_entree THEN date_sortie - date_entree ELSE NULL END|1|AVG||0|2| | | | |2||||||||||||||||||||||0|||||||||||DMS des séjours hospitalisés (1 nuit minimum)|-TS1|||||||| +1|CTI_DMSR|*CALC|DMS Hospitalisés|DMS Hospitalisés|DMS Hospitalisés|CASE WHEN [2] <> 0 THEN [1] / [2] ELSE 0 END|1|*CALC|#,00|80| | | | | | |CTI_NBJSN|CTI_NBSORDIR||||||||||||||||||||0|||||||||||DMS des séjours hospitalisés (1 nuit minimum)|-TS1|NBJOU|NBSOR|||||| +1|CTI_DMSTOT|*CALC|DMS Hospitalisation|DMS Hospitalisation|DMS Hospitalisation|CASE WHEN [2] <> 0 THEN [1] / [2] ELSE 0 END|1|*CALC|#,00|80| | | | | | |CTI_NB2_JSN|CTI_NBSOR_SA||||||||||||||||||||0|||||||||||DMS des séjours d'hospitalisation (hors séances)|-TS1|-TS2|NBJOU|NBSOR||||| +1|CTI_EMC|OCCUPATION|EMC|EMC|EMC|equivalent_malade_complet|1|SUM||0|1| | | | |1||||||||||||||||||||||0|||||||||||Equivalent Malade Complet||||||||| +1|CTI_EMI_MT_FAC|FACTURATION_CLINIQUE|CA EMI Facturé|CA EMI Facturé|CA EMI Facturé|CASE WHEN prestation_code IN ('EMI') THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des prestations de type 'EMI'|CAF|||||||| +1|CTI_ENTDIRCOM|OCCUPATION|SSR - Entrées directes (Hospitalisés COMPLETE)|Entrées directes (Hospitalisés COMPLETE)|Entrées directes (Hospitalisés COMPETE)|CASE WHEN mode_traitement_id = '3' THEN nb_entrees_directes ELSE 0 END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre d'entrées directes en Hospitalisation Complète|-TS1|||||||| +1|CTI_ENTDIRJR|OCCUPATION|SSR - Entrées directes (Hospitalisés DE JOUR)|Entrées directes (Hospitalisés DE JOUR)|Entrées directes (Hospitalisés DE JOUR)|CASE WHEN mode_traitement_id = '4' THEN nb_entrees_directes ELSE 0 END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre d'entrées directes en Hospitalisation de Jour|-TS1|||||||| +1|CTI_EXB_NB_ENC|FACTURATION_CLINIQUE|NB Séjours CA EXH Valorisés|Nombre séjours EXH Valorisés|Nombre séjours EXH Valorisés|DISTINCT CASE WHEN (est_ligne_facturee = '0' and prestation_code IN ('EXH')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours contenant des prestations de type 'EXH' valorisées|NBSEJ|||||||| +1|CTI_EXH_JOU_ENC|FACTURATION_CLINIQUE|NB Jours EXH Valorisées|Nombre journées EXH Valorisées|Nombre journées EXH Valorisées|CASE WHEN prestation_code IN ('EXH') THEN nb_rubrique_encours ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de jours des séjours contenant des prestations de type 'EXH' valorisées|NBJOU|||||||| +1|CTI_EXH_JOU_FAC|FACTURATION_CLINIQUE|NB Jours EXH facturées|Nombre journées EXH facturées|Nombre journées EXH facturées|CASE WHEN prestation_code IN ('EXH') THEN nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de jours des séjours contenant des prestations de type 'EXH' facturées|NBJOU|||||||| +1|CTI_EXH_JOU_TOT|FACTURATION_CLINIQUE|NB Jours EXH Facturées + Valorisées|Total journées EXH Facturées + Valorisées|Total journées EXH Facturées + Valorisées|CASE WHEN prestation_code IN ('EXH') THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de jours des séjours contenant des prestations de type 'EXH' facturées et valorisées|NBJOU|||||||| +1|CTI_EXH_MT_ENC|FACTURATION_CLINIQUE|CA EXH Valorisé|Montant EXH Valorisé|Montant EXH Valorisé|CASE WHEN prestation_code IN ('EXH') THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des prestations de type 'EXH'|CAV|||||||| +1|CTI_EXH_MT_FAC|FACTURATION_CLINIQUE|CA EXH Facturé|Montant EXH facturé|Montant EXH facturé|CASE WHEN prestation_code IN ('EXH') THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des prestations de type 'EXH'|CAF|||||||| +1|CTI_EXH_MT_TOT|FACTURATION_CLINIQUE|CA EXH Facturé + Valorisé|Montant EXH facturé + Valorisé|Montant EXH facturé + Valorisé|CASE WHEN prestation_code IN('EXH') THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des prestations de type 'EXH'|CAVF|||||||| +1|CTI_EXH_NB_FAC|FACTURATION_CLINIQUE|NB Séjours CA EXH facturés|Nombre séjours EXH facturés|Nombre séjours EXH facturés|DISTINCT CASE WHEN (est_ligne_facturee = '1' and prestation_code IN ('EXH')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours facturés comportant des prestations de type 'EXH'|NBSEJ|||||||| +1|CTI_EXH_NB_TOT|FACTURATION_CLINIQUE|NB Séjours CA EXH Facturés + Valorisés|Nombre séjours EXH Facturés + Valorisés|Nombre séjours EXH Facturés + Valorisés|DISTINCT CASE WHEN ( prestation_code IN ('EXH')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours facturés et valorisés comportant des prestations de type 'EXH'|NBSEJ|||||||| +1|CTI_EXT_MT_ENC|FACTURATION_CLINIQUE|CA Externes Valorisé Clinique|Montant externe Valorisé Clinique|Montant externe Valorisé Clinique|CASE WHEN type_sejour = '3' THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0||||||||||||-TS3|CAV||||||| +1|CTI_EXT_MT_FAC|FACTURATION_CLINIQUE|CA Externes Facturé|Montant externe facturé|Montant externe facturé|CASE WHEN type_sejour = '3' THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0||||||||||||-TS3|CAF||||||| +1|CTI_EXT_MT_TOT|FACTURATION_CLINIQUE|CA Externes Facturé + Valorisé|Montant externe Facturé + Valorisé|Montant externe Facturé + Valorisé|CASE WHEN type_sejour = '3' THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0||||||||||||-TS3|CAVF||||||| +1|CTI_EXT_NB_ENC|FACTURATION_CLINIQUE|NB externes Valorisés Clinique|Nombre externes Valorisés|Nombre externes Valorisés|DISTINCT CASE WHEN nb_rubrique_encours <> 0 and type_sejour = '3' THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0||||||||||||-TS3|NBENT||||||| +1|CTI_EXT_NB_FAC|FACTURATION_CLINIQUE|NB externes facturés Clinique|Nombre externes facturés|Nombre externes facturés|DISTINCT CASE WHEN (nb_rubrique_facture <> 0 and type_sejour = '3') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0||||||||||||-TS3|NBENT||||||| +1|CTI_EXT_NB_TOT|FACTURATION_CLINIQUE|NB externes Facturés + Valorisés Clinique|Nombre d'externes Facturés + Valorisés|Nombre d'externes Facturés + Valorisés|DISTINCT CASE WHEN (nb_rubrique_facture <> 0 or nb_rubrique_encours <> 0) and type_sejour = '3' THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0||||||||||||-TS3|NBENT||||||| +1|CTI_E_1_01|OCCUPATION|NB Entrees avant période|Ent pre periode|Ent pre per|DISTINCT CASE WHEN date_entree < date_trunc('year', date_reference)::date THEN no_sejour ELSE NULL END|1|COUNT|#|0|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre d'entrées avant le début de la période d'analyse|NBENT|||||||| +1|CTI_FFM_MT_ENC|FACTURATION_CLINIQUE|CA FFM Valorisé|Montant FFM Valorisé Clinique|Montant FFM Valorisé Clinique|CASE WHEN prestation_code IN ('FFM') THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des prestations de type 'FFM'|CAV|||||||| +1|CTI_FFM_MT_TOT|FACTURATION_CLINIQUE|CA FFM Facturé + Valorisé|Montant FFM Facturé + Valorisé|Montant FFM Facturé + Valorisé|CASE WHEN prestation_code IN ('FFM') THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des prestations de type 'FFM'|CAVF|||||||| +1|CTI_FFM_NB_ENC|FACTURATION_CLINIQUE|NB Rubriques FFM Valorisés|Nombre FFM Valorisés|Nombre FFM Valorisés|CASE WHEN prestation_code IN ('FFM') THEN nb_rubrique_encours ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de prestations FFM valorisées|NBRUB|||||||| +1|CTI_FFM_NB_FAC|FACTURATION_CLINIQUE|NB Rubriques FFM facturés|Nombre FFM facturés|Nombre FFM facturés|CASE WHEN prestation_code IN ('FFM') THEN nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de prestations FFM facturées|NBRUB|||||||| +1|CTI_FFM_NB_TOT|FACTURATION_CLINIQUE|NB Rubriques FFM Facturés + Valorisés|Nombre FFM Facturé + Valorisé|Nombre FFM Facturé + Valorisé|CASE WHEN prestation_code IN ('FFM') THEN nb_rubrique_facture + nb_rubrique_encours ELSE 0 END|1|SUM|#|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de prestations FFM facturées et valorisées|NBRUB|||||||| +1|CTI_GHSM_MTDA1_FAC|*CALC|CA GHS Moyen [HOSP] (date acte)|CA moyen GHS (Hospitalisés) (date acte)|CA moyen GHS (Hospitalisés) (date acte)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des GHS des séjours hospitalisés (1 nuit minimum) (date acte)|-TS1|CAF|NBSEJ|||||| +1|CTI_GHSM_MTDA2_FAC|*CALC|CA GHS Moyen [AMBU] (date acte)|CA moyen GHS (Ambulatoire) (date acte)|CA moyen GHS (Ambulatoire) (date acte)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des GHS des séjours ambulatoires (0 nuits) (date acte)|-TS2|CAF|NBSEJ|||||| +1|CTI_GHSM_MTDA_FAC|*CALC|CA GHS Moyen (date acte)|CA moyen GHS (date acte)|CA moyen GHS (date acte)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des GHS (date acte)|CAF|NBSEJ||||||| +1|CTI_GHSM_MTDS1_FAC|*CALC|CA GHS Moyen [HOSP] (date sortie)|CA moyen GHS (Hospitalisés) (date sortie)|CA moyen GHS (Hospitalisés) (date sortie)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des GHS des séjours hospitalisés (1 nuit minimum) (date sortie)|-TS1|CAF|NBSEJ|||||| +1|CTI_GHSM_MTDS2_FAC|*CALC|CA GHS Moyen [AMBU] (date sortie)|CA moyen GHS Ambulatoire (date sortie)|CA moyen GHS Ambulatoire (date sortie)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des GHS des séjours ambulatoires (0 nuits) (date sortie)|-TS2|CAF|NBSEJ|||||| +1|CTI_GHSM_MTDS_FAC|*CALC|CA GHS Moyen (date sortie)|CA moyen GHS (date sortie)|CA moyen GHS (date sortie)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des GHS (date sortie)|CAF|NBSEJ||||||| +1|CTI_GHSM_MTDV1_FAC|*CALC|CA GHS Moyen [HOSP] (date vente)|CA moyen GHS (Hospitalisés) (date vente)|CA moyen GHS (Hospitalisés) (date vente)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des GHS des séjours hospitalisés (1 nuit minimum) (date vente)|-TS1|CAF|NBSEJ|||||| +1|CTI_GHSM_MTDV2_FAC|*CALC|CA GHS Moyen [AMBU] (date vente)|CA moyen GHS Ambulatoire (date vente)|CA moyen GHS Ambulatoire (date vente)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des GHS des séjours ambulatoires (0 nuits) (date vente)|-TS2|CAF|NBSEJ|||||| +1|CTI_GHSM_MTDV_FAC|*CALC|CA GHS Moyen (date vente)|CA moyen GHS (date vente)|CA moyen GHS (date vente)|base.cti_division([1] , [2])|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen des GHS (date vente)|CAF|NBSEJ||||||| +1|CTI_GHS_MT1_ENC|FACTURATION_CLINIQUE|CA GHS Valorisé [HOSP]|Montant GHS Valorisé (hospitalisés)|Montant GHS Valorisé (hospitalisés)|CASE WHEN prestation_code IN ('GHS') and type_sejour = '1' THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des GHS des séjours hospitalisés (1 nuit minimum)|-TS1|CAV||||||| +1|CTI_GHS_MT1_FAC|FACTURATION_CLINIQUE|CA GHS Facturé [HOSP]|Montant GHS facturé (hospitalisés)|Montant GHS facturé (hospitalisés)|CASE WHEN prestation_code IN ('GHS') and type_sejour = '1' THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des GHS des séjours hospitalisés (1 nuit minimum)|-TS1|CAF||||||| +1|CTI_GHS_MT1_TOT|FACTURATION_CLINIQUE|CA GHS Facturé + Valorisé [HOSP]|Montant GHS facturé + Valorisé (hospitalisés)|Montant GHS facturé + Valorisé (hospitalisés)|CASE WHEN prestation_code IN ('GHS') and type_sejour = '1' THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des GHS des séjours hospitalisés (1 nuit minimum)|-TS1|CAVF||||||| +1|CTI_GHS_MT2_ENC|FACTURATION_CLINIQUE|CA GHS Valorisé [AMBU]|Montant GHS Valorisé (ambulatoire)|Montant GHS Valorisé (ambulatoire)|CASE WHEN prestation_code IN ('GHS') and type_sejour = '2' THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des GHS des séjours ambulatoires (0 nuits)|-TS2|CAV||||||| +1|CTI_GHS_MT2_FAC|FACTURATION_CLINIQUE|CA GHS Facturé [AMBU]|Montant GHS facturé (ambulatoire)|Montant GHS facturé (ambulatoire)|CASE WHEN prestation_code IN ('GHS') and type_sejour = '2' THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des GHS des séjours ambulatoires (0 nuits)|-TS2|CAF||||||| +1|CTI_GHS_MT2_TOT|FACTURATION_CLINIQUE|CA GHS Facturé + Valorisé [AMBU]|Montant GHS facturé + Valorisé (ambulatoire)|Montant GHS facturé + Valorisé (ambulatoire)|CASE WHEN prestation_code IN ('GHS') and type_sejour = '2' THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des GHS des séjours ambulatoires (0 nuits)|-TS2|CAVF||||||| +1|CTI_GHS_MT5_ENC|FACTURATION_CLINIQUE|CA GHS Valorisé [SEANCE]|Montant GHS Valorisé (séances)|Montant GHS Valorisé (séances)|CASE WHEN prestation_code IN ('GHS') and type_sejour = '5' THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des GHS des séances|-TS5|CAV||||||| +1|CTI_GHS_MT5_FAC|FACTURATION_CLINIQUE|CA GHS Facturé [SEANCE]|Montant GHS facturé (séances)|Montant GHS facturé (séances)|CASE WHEN prestation_code IN ('GHS') and type_sejour = '5' THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des GHS des séances|-TS5|CAF||||||| +1|CTI_GHS_MT5_TOT|FACTURATION_CLINIQUE|CA GHS Facturé + Valorisé [SEANCE]|Montant GHS facturé + Valorisé (séances)|Montant GHS facturé + Valorisé (séances)|CASE WHEN prestation_code IN ('GHS') and type_sejour = '5' THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des GHS des séances|-TS5|CAVF||||||| +1|CTI_GHS_MT_ENC|FACTURATION_CLINIQUE|CA GHS Valorisé|Montant GHS Valorisé|Montant GHS Valorisé|CASE WHEN prestation_code IN ('GHS') THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des GHS|CAV|||||||| +1|CTI_GHS_MT_FAC|FACTURATION_CLINIQUE|CA GHS Facturé|Montant GHS facturé|Montant GHS facturé|CASE WHEN prestation_code IN ('GHS') THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des GHS|CAF|||||||| +1|CTI_GHS_MT_TOT|FACTURATION_CLINIQUE|CA GHS Facturé + Valorisé|Montant GHS facturé + Valorisé|Montant GHS facturé + Valorisé|CASE WHEN prestation_code IN ('GHS') THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des GHS|CAVF|||||||| +1|CTI_GHS_NB1_ENC|FACTURATION_CLINIQUE|NB Séjours CA GHS Valorisés [HOSP]|Nombre séjours GHS Valorisés (hospitalisés)|Nombre séjours GHS Valorisés (hospitalisés)|DISTINCT CASE WHEN (est_ligne_facturee = '0' and prestation_code IN ('GHS') and type_sejour = '1') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours hospitalisés (1 nuit minimum) comportant des prestations de type 'GHS' valorisées|-TS1|NBSEJ||||||| +1|CTI_GHS_NB1_FAC|FACTURATION_CLINIQUE|NB Séjours CA GHS facturés [HOSP]|Nombre séjours GHS facturés (hospitalisés)|Nombre séjours GHS facturés (hospitalisés)|DISTINCT CASE WHEN (est_ligne_facturee = '1' and prestation_code IN ('GHS') and type_sejour = '1') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours hospitalisés (1 nuit minimum) comportant des prestations de type 'GHS' facturées|-TS1|NBSEJ||||||| +1|CTI_GHS_NB1_TOT|FACTURATION_CLINIQUE|NB Séjours CA GHS Facturés + Valorisés [HOSP]|Nombre séjours GHS Facturés + Valorisés (hospitalisés)|Nombre séjours GHS Facturés + Valorisés (hospitalisés)|DISTINCT CASE WHEN ( prestation_code IN ('GHS') and type_sejour = '1') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours hospitalisés (1 nuit minimum) comportant des prestations de type 'GHS' facturées et valorisées|-TS1|NBSEJ||||||| +1|CTI_GHS_NB2_ENC|FACTURATION_CLINIQUE|NB Séjours CA GHS Valorisés [AMBU]|Nombre séjours GHS Valorisés (ambulatoire)|Nombre séjours GHS Valorisé s(ambulatoire)|DISTINCT CASE WHEN (est_ligne_facturee = '0' and prestation_code IN ('GHS') and type_sejour = '2') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours ambulatoires (0 nuits) comportant des prestations de type 'GHS' valorisées|-TS2|NBSEJ||||||| +1|CTI_GHS_NB2_FAC|FACTURATION_CLINIQUE|NB Séjours CA GHS facturés [AMBU]|Nombre séjours GHS facturés (ambulatoire)|Nombre séjours GHS facturés (ambulatoire)|DISTINCT CASE WHEN (est_ligne_facturee = '1' and prestation_code IN ('GHS') and type_sejour = '2') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours ambulatoires (0 nuits) comportant des prestations de type 'GHS' facturées|-TS2|NBSEJ||||||| +1|CTI_GHS_NB2_TOT|FACTURATION_CLINIQUE|NB Séjours CA GHS Facturés + Valorisés [AMBU]|Nombre séjours GHS Facturés + Valorisés (ambulatoire)|Nombre séjours GHS Facturés + Valorisés (ambulatoire)|DISTINCT CASE WHEN ( prestation_code IN ('GHS') and type_sejour = '2') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours ambulatoires (0 nuits) comportant des prestations de type 'GHS' facturées et valorisées|-TS2|NBSEJ||||||| +1|CTI_GHS_NB5_ENC|FACTURATION_CLINIQUE|NB séances GHS Valorisées [SEANCE]|Séances GHS Valorisées (séances)|Séances GHS Valorisées (séances)|CASE WHEN prestation_code IN ('GHS') and type_sejour = '5' THEN nb_rubrique_encours ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séances comportant des prestations de type 'GHS' valorisées|-TS5|||||||| +1|CTI_GHS_NB5_FAC|FACTURATION_CLINIQUE|NB séances GHS facturés [SEANCE]|Séances GHS facturés (séances)|Séances GHS facturés (séances)|CASE WHEN prestation_code IN ('GHS') and type_sejour = '5' THEN nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séances comportant des prestations de type 'GHS' facturées|-TS5|||||||| +1|CTI_GHS_NB5_TOT|FACTURATION_CLINIQUE|NB séances GHS Facturés + Valorisés [SEANCE]|Nombre séances GHS Facturés + Valorisés (séances)|Nombre séances GHS Facturés + Valorisés (séances)|CASE WHEN prestation_code IN ('GHS') and type_sejour = '5' THEN nb_rubrique_facture + nb_rubrique_encours ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séances comportant des prestations de type 'GHS' facturées et valorisées|-TS5|||||||| +1|CTI_GHS_NB_ENC|FACTURATION_CLINIQUE|NB Séjours CA GHS Valorisés|Nombre séjours GHS Valorisés|Nombre séjours GHS Valorisés|DISTINCT CASE WHEN (est_ligne_facturee = '0' and prestation_code IN ('GHS')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de prestations de type 'GHS' valorisées|NBSEJ|||||||| +1|CTI_GHS_NB_FAC|FACTURATION_CLINIQUE|NB Séjours CA GHS facturés|Nombre séjours GHS facturés|Nombre séjours GHS facturés|DISTINCT CASE WHEN (est_ligne_facturee = '1' and prestation_code IN ('GHS')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de prestations de type 'GHS' facturées|NBSEJ|||||||| +1|CTI_GHS_NB_TOT|FACTURATION_CLINIQUE|NB Séjours CA GHS Facturés + Valorisés|Nombre séjours GHS Facturés + Valorisés|Nombre séjours GHS Facturés + Valorisés|DISTINCT CASE WHEN ( prestation_code IN ('GHS')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de prestations de type 'GHS' facturées et valorisées|NBSEJ|||||||| +1|CTI_JOUR_FAC|OCCUPATION|NB Jours facturées|Nombre journées facturées|Jour Fac|CASE WHEN date_sortie <= '[TOPERIODE]' AND nb_non_facture = 0 THEN nb_jours_f ELSE null END|1|SUM|#|0|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées facturées|NBJOU|||||||| +1|CTI_JRSORCP|OCCUPATION|SSR - Nombres de Jours séjours sortis(Hospitalisés COMPLETE) + Ambulatoires + Séances|Nombres de journées séjours sortis (Hospitalisés COMPLETE) + Ambulatoires + Séances|Nombres de journées séjours sortis (Hospitalisés COMPLETE) + Ambulatoires + Séances|CASE WHEN date_sortie <= '[TOPERIODE]' AND mode_traitement_id = '3' THEN 1 ELSE 0 END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de jours des séjours sortis en Hospitalisation Complète, ambulatoires et séances|-TS1|-TS2|-TS5|||||| +1|CTI_JRSORJR|OCCUPATION|SSR - Nombres de Jours séjours sortis(Hospitalisés DE JOUR) + Ambulatoires + Séances|Nombres de journées séjours sortis (Hospitalisés DE JOUR) + Ambulatoires + Séances|Nombres de journées séjours sortis (Hospitalisés DE JOUR) + Ambulatoires + Séances|CASE WHEN date_sortie <= '[TOPERIODE]' AND code_sorti = '1' AND mode_traitement_id = '4' THEN (nb_jours_f + nb_ambulatoires + nb_seances) ELSE 0 END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de jours des séjours sortis en Hospitalisation de Jour, ambulatoires et séances|-TS1|-TS2|-TS5|||||| +1|CTI_MTCOM_H|FACTURATION_HONORAIRE|CA HONORAIRES comptabilisé|Montant comptabilisé Hononoraire|Montant comptabilisé Hononoraire|montant_comptabilise|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires comptabilisé des honoraires|CACP|CAHON||||||| +1|CTI_MTCPTCLI_C|CLIENTS_CLINIQUE|CA Comptabilisé Clinique|Montant comptabilisé Clinique|Montant comptabilisé Clinique|montant_comptabilise|1|SUM|#E|0|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires comptabilisé clinique|CACP|||||||| +1|CTI_MTCPTCLI_C_12M|CLIENTS_CLINIQUE|CA Comptabilisé Moyen Clinique (12 derniers mois)|Montant comptabilisé Moyen Clinique (Moyenne 12 derniers mois)|Montant comptabilisé Moyen Clinique (Moyenne 12 derniers mois)|montant_comptabilise|1|AVG12M|#E|0|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires moyen comptabilisé clinique sur les 12 derniers mois|CACP|||||||| +1|CTI_MTC_CHDS_FAC|*CALC|CA CLINIQUE + HONORAIRES Comptabilisé (Date sortie)|Montant Comptabilisé Clinique + Honoraire|Montant Comptabilisé Clinique + Honoraire|[1] + [2]|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires comptabilisé clinique et honoraires (date sortie)|CACP|CAHON||||||| +1|CTI_MTC_CHDV_FAC|*CALC|CA CLINIQUE + HONORAIRES Comptabilisé (Date vente)|Montant Comptabilisé Clinique + Honoraire|Montant Comptabilisé Clinique + Honoraire|[1] + [2]|1|*CALC|#E|80| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires comptabilisé clinique et honoraires (date vente)|CACP|CAHON||||||| +1|CTI_MTENC_C|FACTURATION_CLINIQUE|CA TOTAL Etablissement Valorisé|Montant Total Clinique Valorisé|Montant Total Clinique Valorisé|montant_encours|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé total de l'établissement|CAV|||||||| +1|CTI_MTFAC1_C|FACTURATION_CLINIQUE|CA TOTAL Etablissement Facturé [HOSP]|Montant Total Clinique Facturé (Hospitalisés)|Montant Total Clinique Facturé (Hospitalisés)|CASE WHEN type_sejour = '1' THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des séjours hospitalisés (1 nuit minimum)|-TS1|CAF||||||| +1|CTI_MTFAC2_C|FACTURATION_CLINIQUE|CA TOTAL Etablissement Facturé [AMBU]|Montant Total Clinique Facturé (Ambulatoire)|Montant Total Clinique Facturé (Ambulatoire)|CASE WHEN type_sejour = '2' THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des séjours ambulatoires (0 nuits)|-TS2|CAF||||||| +1|CTI_MTFAC3_C|FACTURATION_CLINIQUE|CA TOTAL Etablissement Facturé [EXT]|Montant Total Clinique Facturé (Externe)|Montant Total Clinique Facturé (Externe)|CASE WHEN type_sejour = '3' THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des séjours externes|-TS3|CAF||||||| +1|CTI_MTFAC5_C|FACTURATION_CLINIQUE|CA TOTAL Etablissement Facturé (Séance)|Montant Total Clinique Facturé (Séance)|Montant Total Clinique Facturé (Séance)|CASE WHEN type_sejour = '5' THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des séances|-TS5|CAF||||||| +1|CTI_MTFAC_C|FACTURATION_CLINIQUE|CA TOTAL Etablissement Facturé|Montant Total Clinique facturé|Montant Total Clinique facturé|montant_facture|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé total de l'établissement|CAF|||||||| +1|CTI_MTFAC_CS|FACTURATION_CLINIQUE|CA Facturé Clinique (date sortie)|Montant facturé Clinique|Facturé C|montant_facture|1|SUM||0| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé ^ la clinique (date sortie)|CAF|||||||| +1|CTI_MTFAC_CV|FACTURATION_CLINIQUE|CA Facturé Clinique (date ventes)|Montant facturé Clinique|Facturé C|montant_facture|1|SUM||0| | | | | | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé ^ la clinique (date vente)|CAF|||||||| +1|CTI_MTFAC_H|FACTURATION_HONORAIRE|CA HONORAIRES Facturé|Montant facturé Hononoraire|Montant facturé Hononoraire|montant_facture|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des honoraires|CAF|CAHON||||||| +1|CTI_MTREG_C|CLIENTS_CLINIQUE|CA Encaissé Clinique|Montant encaissé Clinique|Montant encaissé Clinique|montant_regle|1|SUM|#E|80|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires encaissé clinique|CARG|||||||| +1|CTI_MTSOLCLI_C|CLIENTS_CLINIQUE|CA Solde client|Montant solde Clinique|Montant solde Clinique|montant_solde|1|SUM|#E|80|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires du solde clients|CASL|||||||| +1|CTI_MTVEN_C|FACTURATION_CLINIQUE|CA comptabilisé TOTAL|Montant comptabilisé Clinique|Montant comptabilisé Clinique|montant_comptabilise|1|SUM|#E|0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires comptabilisé total|CACP|||||||| +1|CTI_MT_FAC_TOT|FACTURATION_CLINIQUE|CA TOTAL Etablissement Facturé + Valorisé|Montant Total Clinique Facturé + Valorisé|Montant Total Clinique Facturé + Valorisé|montant_facture + montant_encours|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé total|CAVF|||||||| +1|CTI_NB2_JSN|OCCUPATION|NB Jours Hospitalisés + Ambulatoires|Nombres de journées (Hospitalisés) + Ambulatoire|Nombres de journées (Hospitalisés) + Ambulatoire JS non inclus|nb_jours_f + nb_ambulatoires|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées passées en séjours hospitalisés ou ambulatoires|-TS1|-TS2|NBJOU|||||| +1|CTI_NB4_JSN|OCCUPATION|NB Jours Hospitalisés + Ambulatoires + Externes|Nombres de journées (Hospitalisés) + Ambulatoires + Externes|Nombres de journées (Hospitalisés) + Ambulatoires + Externes JS non inclus|nb_jours_f + nb_ambulatoires + nb_externes|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées passées en séjours hospitalisés, ambulatoires ou externes|-TS1|-TS2|-TS3|NBJOU||||| +1|CTI_NB4_JSNCP|OCCUPATION|SSR - Nombres de Jours (Hospitalisés COMPLETE) + Ambulatoires + Séances|Nombres de journées (Hospitalisés COMPLETE)) + Ambulatoires + Séances|Nombres de journées (Hospitalisés COMPLETE)) + Ambulatoires + Externes + Séances JS non inclus|CASE WHEN mode_traitement_id = '3' THEN (nb_jours_f + nb_ambulatoires + nb_seances) ELSE 0 END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées passées en séjours en Hospitalisation Complète ou ambulatoires ou externes ou séances|-TS1|-TS2|-TS5|||||| +1|CTI_NB4_JSNJR|OCCUPATION|SSR - Nombres de Jours (Hospitalisés DE JOUR) + Ambulatoires + Séances|Nombres de journées (Hospitalisés DE JOUR) + Ambulatoires + Séances|Nombres de journées (Hospitalisés DE JOUR) + Ambulatoires + Externes + Séances JS non inclus|CASE WHEN mode_traitement_id = '4' THEN (nb_jours_f + nb_ambulatoires + nb_seances) ELSE 0 END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées passées en séjours en Hospitalisation de Jour ou ambulatoires ou externes ou séances|-TS1|-TS2|-TS5|||||| +1|CTI_NB5_JSN|OCCUPATION|NB Jours Hospitalisés + Ambulatoires + Externes + Séances|Nombres de journées (Hospitalisés) + Ambulatoires + Externes + Séances|Nombres de journées (Hospitalisés) + Ambulatoires + Externes + Séances JS non inclus|nb_jours_f + nb_ambulatoires + nb_externes + nb_seances|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées passées en séjours hospitalisés, ambulatoires, externes ou séances|-TS1|-TS2|-TS3|-TS5|NBJOU|||| +1|CTI_NB6_JFSN|OCCUPATION|NB Jours facturées (Hospitalisés sortis) + Ambulatoires + Séances|Nombres de journées facturées (Hospitalisés sortis) + Ambulatoires + Séances|Nombres de journées facturées (Hospitalisés sortis) + Ambulatoires + Externes + Séances JS non inclus|CASE WHEN est_facture = '1' AND date_sortie <= '[TOPERIODE]' THEN nb_jours_f + nb_ambulatoires + nb_seances ELSE 0 END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées facturées passées en séjours hospitalisés ou ambulatoires ou externes ou séances|-TS2|NBJOU||||||| +1|CTI_NB6_JNFSN|OCCUPATION|NB Jours valorisées Hospitalisés + Ambulatoires + Séances|Nombres de journées valorisées (Hospitalisés) + Ambulatoires + Séances|Nombres de journées valorisées (Hospitalisés) + Ambulatoires + Externes + Séances JS non inclus|CASE WHEN est_facture = '0' THEN nb_jours_f + nb_ambulatoires + nb_seances ELSE 0 END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées valorisées passées en séjours hospitalisés ou ambulatoires ou externes ou séances|-TS1|-TS2|-TS5|NBJOU||||| +1|CTI_NB6_JSN|OCCUPATION|NB Jours (Hospitalisés) + Ambulatoires + Séances|Nombres de journées (Hospitalisés) + Ambulatoires + Séances|Nombres de journées (Hospitalisés) + Ambulatoires + Séances|nb_jours_f + nb_ambulatoires + nb_seances|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées passées en séjours hospitalisés ou ambulatoires ou séances|-TS2|NBJOU||||||| +1|CTI_NBAMB|OCCUPATION|NB ambulatoires|Nombres d'ambulatoires|Nombres d'ambulatoires|nb_ambulatoires|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de séjours en ambulatoires|-TS2|NBENT||||||| +1|CTI_NBAMBFOR|OCCUPATION|NB ambulatoires forains|Nombres d'ambulatoires forains|Ambulatoires forains|CASE WHEN nb_ambulatoires <> 0 AND lieu_reference_etage_id IN (SELECT etage_id FROM activite.t_etages_historique WHERE nb_lits_theoriques <> 0) THEN nb_ambulatoires ELSE 0 END|1|SUM|#|0|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre d'ambulatoires forains|-TS2|NBENT||||||| +1|CTI_NBAMBHFOR|OCCUPATION|Nombre d'ambulatoires en service ambulatoire|Nombres d'ambulatoires en service ambulatoire|Ambulatoires|CASE WHEN nb_ambulatoires <> 0 AND lieu_reference_etage_id IN (SELECT etage_id FROM activite.t_etages_historique WHERE nb_box_ambulatoires_theoriques <> 0) THEN nb_ambulatoires ELSE 0 END|1|SUM|#|0|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre d'ambulatoires|-TS2|||||||| +1|CTI_NBAMBSEA|OCCUPATION|NB Ambulatoires et séances|Ambulatoires + séances|Ambulatoires + séances|nb_ambulatoires + nb_seances|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre d'ambulatoires et de séances|-TS2|NBENT||||||| +1|CTI_NBCHPO|OCCUPATION|NB Jours en CPC|Chambres particulières occup?|Chambres particulières occup?|nb_chambres_particulieres_js_non_inclus_f|1|SUM||60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées passées en chambre particulière|NBJOU|||||||| +1|CTI_NBDEAD|OCCUPATION|NB décès|Nombre de décès|NB décès|nb_deces|1|SUM||0|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de décès||||||||| +1|CTI_NBENTDIR|OCCUPATION|NB Entrées directes Hospitalisés|Entrées directes (Hospitalisés)|Entrées directes (Hospitalisés)|nb_entrees_directes|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre d'entrées directes des séjours hospitalisés|-TS1|NBENT||||||| +1|CTI_NBENTTE|OCCUPATION|NB Entrées totales directes et mutations Hospitalisés|Entrées totales directes et mutations (Hospitalisés)|Entrées totales directes et mutations (Hospitalisés)|nb_entrees_directes + nb_entrees_mutation_etage|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre d'entrées directes et de mutations d'étage des séjours hospitalisés|-TS1|NBENT||||||| +1|CTI_NBENTTOTS|OCCUPATION|NB Entrées directes et mutations service Hospitalisés|Entrées directes et mutations (Hospitalisés)|Entrées directes et mutations (Hospitalisés)|nb_entrees_directes + nb_entrees_mutation_service|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre d'entrées directes et de mutations de services des séjours hospitalisés|-TS1|NBENT||||||| +1|CTI_NBENT_SA|OCCUPATION|NB Entrées directes Hospitalisés + Ambulatoires|Entrées directes + Ambulatoires|Entrées directes + Ambulatoires|nb_ambulatoires + nb_entrees_directes|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre d'entrées directes des séjours hospitalisés et ambulatoires|-TS1|-TS2|NBENT|||||| +1|CTI_NBENT_SAE|OCCUPATION|NB Entrées directes Hospitalisés + Ambulatoires + Externes|Entrées directes + Ambulatoires + Externes|Entrées directes + Ambulatoires + Externes|nb_ambulatoires + nb_externes + nb_entrees_directes|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre d'entrées directes des séjours hospitalisés, ambulatoires et externes|-TS1|-TS2|-TS3|NBENT||||| +1|CTI_NBENT_SAES|OCCUPATION|NB Entrées directes Hospitalisés + Ambulatoires + Externes + Séances|Entrées directes + Ambulatoires + Externes + Séances|Entrées directes + Ambulatoires + Externes + Séances|nb_ambulatoires + nb_externes + nb_entrees_directes + nb_seances|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre d'entrées directes des séjours hospitalisés, ambulatoires, externes et séances|-TS1|-TS2|-TS3|-TS5|NBENT|||| +1|CTI_NBEXT|OCCUPATION|NB externes (occupation)|Nombres d'externes|Nombres d'externes|nb_externes|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de séjours en externes|-TS3|NBENT||||||| +1|CTI_NBFACREF|SEJOURS|NB sorties directes et intermédiaires|Nombre de sorties directes et intermédiaires|Nombre de sorties directes et interemédiaires|no_facture_reference|1|COUNT||0|2| | | | |2||||||||||||||||||||||0|||||||||||Nombre de sorties directes ou intermédiaires|NBSOR|||||||| +1|CTI_NBFACREF_F|SEJOURS|NB sorties directes et intermédiaires facturées|Nombre de sorties directes et intermédiaires facturées|Nombre de sorties directes et intermédiaires facturées|CASE WHEN code_facture = '1' THEN no_facture_reference ELSE NULL END|1|COUNT||0|2| | | | |2||||||||||||||||||||||0|||||||||||Nombre de sorties directes ou intermédiaires facturées|NBSOR|||||||| +1|CTI_NBFACREF_NF|SEJOURS|NB sorties directes et intermédiaires non facturées|Nombre de sorties directes et intermédiaires non facturées|Nombre de sorties directes et intermédiaires non facturées|CASE WHEN code_facture <> '1' THEN no_facture_reference ELSE NULL END|1|COUNT||0|2| | | | |2||||||||||||||||||||||0|||||||||||Nombre de sorties directes ou intermédiaires non facturées|NBSOR|||||||| +1|CTI_NBJAS_FAC|OCCUPATION|NB Jours facturées (Hospitalisation)|Nombres de journées facturées (Hospitalisés) + Ambulatoires + Séances|Nombres de journées facturées (Hospitalisés) + Ambulatoires + Externes + Séances JS non inclus|CASE WHEN est_facture = '1' THEN nb_jours_f + nb_ambulatoires + nb_seances ELSE 0 END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées facturées des séjours hospitalisés, ambulatoires, externes et séances|NBJOU|||||||| +1|CTI_NBJAS_JFSN|OCCUPATION|NB Jours (Hospitalisés sortis) + Ambulatoires + Seances|Nombres de journées (Hospitalisés sortis) + Ambulatoires + Seances|Nb J Sor|CASE WHEN date_sortie <= '[TOPERIODE]' THEN nb_jours_f + nb_ambulatoires + nb_seances ELSE NULL END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de jours sortis des séjours hospitalisés, ambulatoires et séances|-TS1|-TS2|-TS5|NBJOU||||| +1|CTI_NBJAS_NFAC|OCCUPATION|NB Jours non facturées (Hospitalisation)|Nombres de journées non facturées (Hospitalisés) + Ambulatoires + Séances|Nombres de journées non facturées (Hospitalisés) + Ambulatoires + Externes + Séances JS non inclus|CASE WHEN est_facture = '0' THEN nb_jours_f + nb_ambulatoires + nb_seances ELSE 0 END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées non facturées des séjours hospitalisés, ambulatoires, externes et séances|NBJOU|||||||| +1|CTI_NBJCPSN|OCCUPATION|NB Jours CPC Hospitalisés|Nombres de journées CP (Hospitalisés)|Nombres de journées CP (Hospitalisés)|nb_jours_cp_f|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées en chambre particulière des séjours hospitalisés|NBJOU|||||||| +1|CTI_NBJFSN|OCCUPATION|NB Jours facturées (Hospitalisés sortis)|Nombres de journées facturées (Hospitalisés)|Nombres de journées facturées (Hospitalisés) JS non inclus|CASE WHEN est_facture = '1' AND date_sortie <= '[TOPERIODE]' THEN nb_jours_f ELSE 0 END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées facturées des séjours hospitalisés (JS non inclus)|NBJOU|||||||| +1|CTI_NBJS|OCCUPATION|NB Jours Hospitalisés JS inclus|Nombres de journées (JS inclus) (Hospitalisés)|Nombres de journées (JS inclus) (Hospitalisés)|nb_jours_js_inclus|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées facturées des séjours hospitalisés (JS inclus)|-TS1|NBJOU||||||| +1|CTI_NBJSAM|OCCUPATION|NB Jours Hospitalisés + Ambulatoires JS Inclus|Nombre Journées + Ambulatoire (JS Inclus)|Nombre Journées + Ambulatoire (JS Inclus)|nb_jours_js_inclus + nb_ambulatoires|1|SUM||0|1| | | | |1|CTI_NBJSN|CTI_NBAMB||||||||||||||||||||0|||||||||||Nombre de journées des séjours hospitalisés et ambulatoires (JS non inclus)|-TS1|-TS2|NBJOU|||||| +1|CTI_NBJSN|OCCUPATION|NB Jours Hospitalisés|Nombres de journées (Hospitalisés)|Nombres de journées (Hospitalisés) JS non inclus|nb_jours_f|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées des séjours hospitalisés (JS non inclus)|-TS1|NBJOU||||||| +1|CTI_NBJSNS|OCCUPATION|NB Jours (Hospitalisés sortis)|Nombres de journées (Hospitalisés sortis)|Nb J Sor|CASE WHEN date_sortie <= '[TOPERIODE]' THEN nb_jours_f ELSE NULL END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées des séjours hospitalisés|-TS1|NBJOU||||||| +1|CTI_NBJSSNSSR|OCCUPATION|SSR - Nombres de Jours facturées Hospitalisés|Nombres de journées facturées (Hospitalisés)|Nombres de journées facturées (Hospitalisés) JS non inclus|CASE WHEN date_sortie <= '[TOPERIODE]' THEN 1 ELSE 0 END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées facturées des séjours hospitalisés (JS non inclus)|-TS1|||||||| +1|CTI_NBJ_FAC|OCCUPATION|NB Jours facturées (Hospitalisés)|Nombres de journées facturées (Hospitalisés)|Nombres de journées facturées (Hospitalisés) JS non inclus|CASE WHEN est_facture = '1' THEN nb_jours_f ELSE 0 END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées facturées des séjours hospitalisés (JS non inclus)|NBJOU|||||||| +1|CTI_NBJ_NFAC|OCCUPATION|NB Jours non facturées (Hospitalisés)|Nombres de journées non facturées (Hospitalisés)|Nombres de journées non facturées (Hospitalisés)|CASE WHEN est_facture = '0' THEN nb_jours_f ELSE 0 END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de journées non facturées des séjours hospitalisés|NBJOU|||||||| +1|CTI_NBLITS|PLACES|NB places disponibles|Nombre de places disponibles|Places|CASE WHEN est_ouvert = '1' THEN nb_lits_ouverts ELSE NULL END|1|SUM|#|50|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de places disponibles||||||||| +1|CTI_NBPLACES|PLACES|NB lits et places disponibles |Nombre de lits et places disponibles |Nombre de lits et places disponibles |CASE WHEN est_ouvert = '1' THEN nb_lits_ouverts ELSE NULL END|1|SUM|#|50|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de lits et des places disponibles||||||||| +1|CTI_NBPLACES_A|PLACES|NB lits et places disponibles [AMBU]|Nombre de lits et places disponibles (Ambulatoires)|Nombre de lits et places disponibles (Ambulatoires)|CASE WHEN est_ouvert = '1' and type_sejour_id = 2 THEN nb_lits_ouverts ELSE NULL END|1|SUM|#|50|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de lits et de places disponibles pour les séjours Ambulatoires|-TS1|||||||| +1|CTI_NBPLACES_CP_H|PLACES|NB lits et places CP disponibles [HOSP]|Nombre de lits et places CP disponibles (Hospitalisés)|Nombre de lits et places CP disponibles (Hospitalisés)|CASE WHEN est_ouvert = '1' and type_sejour_id = 1 THEN nb_lits_cp_ouverts ELSE NULL END|1|SUM|#|50|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de lits et de places en chambre particulière disponibles pour les séjours hospitalisés|-TS1|||||||| +1|CTI_NBPLACES_H|PLACES|NB lits et places disponibles [HOSP]|Nombre de lits et places disponibles (Hospitalisés)|Nombre de lits et places disponibles (Hospitalisés)|CASE WHEN est_ouvert = '1' and type_sejour_id = 1 THEN nb_lits_ouverts ELSE NULL END|1|SUM|#|50|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de lits et de places disponibles pour les séjours hospitalisés|-TS1|||||||| +1|CTI_NBPLACES_HA|PLACES|NB lits et places disponibles (Hosp+Ambu)|Nombre de lits et places disponibles (Hosp+Ambu)|Nombre de lits et places disponibles (Hosp+Ambu)|CASE WHEN est_ouvert = '1' and type_sejour_id IN ('1','2') THEN nb_lits_ouverts ELSE NULL END|1|SUM||0|1| | | | |1|CTI_NBPLACES_H|||||||||||||||||||||0|||||||||||Nombre de lits et de places disponibles pour les séjours hospitalisés et ambulatoires||||||||| +1|CTI_NBPLACES_THEOJ|PLACES|Nombre jours pour calcul moyenne place théorique|Nombre jours pour calcul moyenne place théorique |Nb jours pour calcul moyenne place théorique|DISTINCT NOFINESS NOPOLE date_reference|1|COUNT|#|50|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de jours pour calcul moyenne des places théoriques||||||||| +1|CTI_NBPLACES_THEOM|*CALC|Nombres lits et places théoriques moyen|Nombres lits et places théoriques moyen|Nb places théoriques|base.cti_division([1],[2])|1|*CALC|#|0| | | | | | |CTI_NBPLACES_THEOT|CTI_NBPLACES_THEOJ||||||||||||||||||||0|||||||||||Nombre de lits et des places théoriques moyen||||||||| +1|CTI_NBPLACES_THEOT|PLACES|Nombre lits et places théoriques total|Nombre de lits et places théoriques total|Nb places théoriques total|nb_lits_theoriques|1|SUM|#|50|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de lits et des places théoriques (total des journées)||||||||| +1|CTI_NBPRESHCOMP|OCCUPATION|SSR - Nombre de présents (Date du Jour / Hospitalisation complète)|SSR Nombres de présents (Date du Jour / Hospitalisation complète)|SSR Nombres de présents (Date du Jour / H COMP)|DISTINCT(CASE WHEN (code_sorti= 0 AND code_prevu = 0 AND mode_traitement_id = '3' ) THEN no_sejour ELSE NULL END)|1|COUNT|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de patients encore présents en Hospitalisation Complète||||||||| +1|CTI_NBPRESHDJ|OCCUPATION|SSR - Nombre de présents (Date du Jour / Hospitalisation de jour)|SSR Nombres de présents (Date du Jour / Hospitalisation de jour)|SSR Nombres de présents (Date du Jour / HDJ)|DISTINCT(CASE WHEN (code_sorti= 0 AND code_prevu = 0 AND mode_traitement_id = '4' ) THEN no_sejour ELSE NULL END)|1|COUNT|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de patients encore présents en Hospitalisation de Jour||||||||| +1|CTI_NBSCE|OCCUPATION|NB séances|Nombres de séances|Nombres de séances|nb_seances|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de séances|-TS5|||||||| +1|CTI_NBSCE_CHM|OCCUPATION|NB séances Chimio|Nombres de séances Chimio|Nombres de séances Chimio|nb_seances_chimio|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de séances Chimio|-TS5|||||||| +1|CTI_NBSCE_DIA|OCCUPATION|NB séances Dialyse|Nombres de séances Dialyse|Nombres de séances Dialyse|nb_seances_dialyse|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de séances Dialyse|-TS5|||||||| +1|CTI_NBSCE_DIV|OCCUPATION|NB séances Autres|Nombres de séances Autres|Nombres de séances Autres|nb_seances_autre|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de séances Autres|-TS5|||||||| +1|CTI_NBSEJCP|OCCUPATION|SSR - Nombres de séjours - Hospitalisation complète|Nombres de séjours - Hospitalisation complète|Nombre de séjours - Hospitalisation complète|DISTINCT CASE WHEN mode_traitement_id = '3' THEN no_sejour ELSE NULL END|1|COUNT|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de séjours en Hospitalisation Complète||||||||| +1|CTI_NBSEJFEM|OCCUPATION|NB séjours de femmes|Nombre de séjours de femmes|Nb sej fem|DISTINCT CASE WHEN code_sexe = '2' THEN no_sejour ELSE null END|1|COUNT|#|0|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de séjours de patients féminins|NBSEJ|||||||| +1|CTI_NBSEJHDJ|OCCUPATION|SSR - Nombres de séjours - Hospitalisation de jour|Nombres de séjours - Hospitalisation de jour|Nombre de séjours - Hospitalisation de jour|DISTINCT CASE WHEN mode_traitement_id = '4' THEN no_sejour ELSE NULL END|1|COUNT|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de séjours en Hospitalisation de Jour||||||||| +1|CTI_NBSEJO|OCCUPATION|NB séjours|Nombres de séjours|Nombres de séjours|DISTINCT no_sejour|1|COUNT|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de séjours|NBSEJ|||||||| +1|CTI_NBSEJ_EXT|SEJOURS|NB Séjours [EXT]|Nombre séjours (Externes)|Nombre séjours (Externes)|DISTINCT CASE WHEN type_sejour = '3' THEN no_sejour ELSE NULL END|1|SUM|#|60| | | | | | ||||||||||||||||||||||0|||||||||||Nombre de séjours externes|-TS3|NBSEJ||||||| +1|CTI_NBSEJ_HC|SEJOURS|NB Séjours hospitalisation complète|Nombre séjours hospitalisation complète|Nombre séjours (hc)|DISTINCT CASE WHEN type_sejour = '1' THEN no_sejour|1|COUNT|#|60| | | | | | ||||||||||||||||||||||0|||||||||||Nombre de séjours en hospitalisation complète|NBSEJ|||||||| +1|CTI_NBSEJ_HJ|SEJOURS|NB Séjours (hospitalisation de jour)|Nombre séjours (hospitalisation de jour, type de séjours = Ambulatoire/Séances) |Nombre séjours (hj)|DISTINCT CASE WHEN type_sejour = '2' OR type_sejour = '5' THEN no_sejour|1|SUM|#|60| | | | | | ||||||||||||||||||||||0|||||||||||Nombre de séjours en Hospitalisation de Jour|NBSEJ|||||||| +1|CTI_NBSEJ_SOINS_CPT|FACTURATION_CLINIQUE|NB Séjours CA SOINS comptabilisé|Nombre de séjours comptabilisés CA SOINS|Nombre de séjours comptabilisés CA SOINS|DISTINCT CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] THEN no_sejour ELSE NULL END|1|COUNT|#E|80|4| | | | |4||||||||||||||||||||||0|||||||||||Nombre de séjours comptabilisé dans le Chiffre d'Affaires des soins|NBSEJ|||||||| +1|CTI_NBSEJ_SOR|SEJOURS|NB séjours|Nombre de séjours|Nombre de séjours|DISTINCT no_sejour|1|COUNT|#|60|2| | | | |2||||||||||||||||||||||0|||||||||||||||||||| +1|CTI_NBSORDIR|OCCUPATION|NB Sorties directes Hospitalisés|Sorties directes (Hospitalisés)|Sorties directes (Hospitalisés)|nb_sorties_directes|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de sorties directes des séjours hospitalisés|-TS1|NBSOR||||||| +1|CTI_NBSOR_SA|OCCUPATION|NB Sorties directes Hospitalisés + Ambulatoires|Sorties directes + Ambulatoires|Sorties directes + Ambulatoires|nb_ambulatoires + nb_sorties_directes|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de sorties directes des séjours hospitalisés et ambulatoires|-TS1|-TS2|NBSOR|||||| +1|CTI_NBSOR_SAE|OCCUPATION|NB Sorties directes Hospitalisés + Ambulatoires + Externes|Sorties directes + Ambulatoires + Externes|Sorties directes + Ambulatoires + Externes|nb_ambulatoires + nb_externes + nb_sorties_directes|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de sorties directes des séjours hospitalisés, ambulatoires et externes|-TS1|-TS2|-TS3|NBSOR||||| +1|CTI_NBSOR_SAES|OCCUPATION|NB Sorties directes Hospitalisés + Ambulatoires + Externes + Séances|Sorties directes + Ambulatoires + Externes + Séances|Sorties directes + Ambulatoires + Externes + Séances|nb_ambulatoires + nb_externes + nb_sorties_directes + nb_seances|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de sorties directes des séjours hospitalisés, ambulatoires, externes et séances|-TS1|-TS2|-TS3|-TS5|NBSOR|||| +1|CTI_NBURG|OCCUPATION|NB urgences|Nombres d'urgences|Nombres d'urgences|nb_urgences|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre d'urgences||||||||| +1|CTI_NB_ANNULES|ANNULATIONS|Nombre de séjours annulés |Nombre séjours annulés||DISTINCT CASE WHEN etat_sejour_code = 'A' THEN no_sejour ELSE NULL END|1|COUNT||0|1| | | | |1||||||||||||||||||||||0||||||||||||NBSEJ|||||||| +1|CTI_NB_BEBE|OCCUPATION|NB Bébés|Nombre de Bébés|Nombre de Bébés|nb_bebes|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de bébés||||||||| +1|CTI_NB_FAC|SEJOURS|NB sorties Facturées|Nombre de sorties Facturées|Nombre de sorties Facturées|DISTINCT CASE WHEN code_sorti = '1' AND date_facture != '2099-12-31' THEN no_sejour ELSE NULL END|1|COUNT|#|60|2|5| | | |2||||||||||||||||||||||0|||||||||||Nombre de séjours sortis facturés|NBSOR|||||||| +1|CTI_NB_FACTURES|SEJOURS|Nombre de factures|Factures|Factures|nb_factures|1|SUM|#|60|2| | | | |2||||||||||||||||||||||0||||||||||||NOMBRE|||||||| +1|CTI_NB_GP_NFAC|SEJOURS|À facturer|À facturer|À facturer|nb_non_calcules_groupes|1|SUM|#|60|2| | | | |2||||||||||||||||||||||0||||||||||||NBSEJ|||||||| +1|CTI_NB_GROU|SEJOURS|NB sorties Groupées non facturées|Nombre de sorties Groupées non facturées|Nombre de sorties Groupées non facturées|CASE WHEN date_facture = '2099-12-31' THEN nb_groupe ELSE NULL END|1|SUM|#|60|2|5| | | |2||||||||||||||||||||||0|||||||||||Nombre de séjours groupés sortis non facturés|NBSOR|||||||| +1|CTI_NB_GROUT|SEJOURS|NB sorties groupées|Nombre de sorties groupées|Sorties groupées|nb_groupe|1|SUM|#|0|2|5| | | | ||||||||||||||||||||||0|||||||||||Nombre de séjours groupés sortis|NBSOR|||||||| +1|CTI_NB_NFAC|SEJOURS|NB sorties non Facturées|Nombre de sorties non Facturées|Nombre de sorties non Facturées|DISTINCT CASE WHEN montant_facture = 0 THEN no_sejour ELSE NULL END|1|COUNT|#|60|2|4| | | | ||||||||||||||||||||||0|||||||||||Nombre de séjours sortis non facturés|NBSOR|||||||| +1|CTI_NB_NGROU|SEJOURS|NB sorties Non Groupées|Nombre de sorties Non Groupées|Nombre de sorties Non Groupées|nb_non_groupe|1|SUM|#|60|2| | | | |2||||||||||||||||||||||0|||||||||||Nombre de séjours sortis non groupés|NBSOR|||||||| +1|CTI_NB_NGR_SOR|SEJOURS|Reste à grouper|Reste à grouper|Reste à grouper|nb_non_groupe|1|SUM|#|60|2| | | | |2||||||||||||||||||||||0||||||||||||NBSEJ|||||||| +1|CTI_NB_NONFAC|SEJOURS|Reste à facturer|Reste à facturer|Reste à facturer|nb_non_calcules|1|SUM|#|60|2| | | | |2||||||||||||||||||||||0||||||||||||NOMBRE|||||||| +1|CTI_NB_NON_EXP|SEJOURS|Reste à expédier|Reste à expédier|Reste à expédier|nb_non_expedie_c|1|SUM|#|60|2| | | | |2||||||||||||||||||||||0||||||||||||NOMBRE|||||||| +1|CTI_NB_NON_SOLD|SEJOURS|Reste à solder|Reste à solder|Reste à solder|nb_non_solde_c|1|SUM|#|60|2| | | | |2||||||||||||||||||||||0|||||||||||||||||||| +1|CTI_NB_PREADM|OCCUPATION|Nombre de séjours avec préadmission validée|Nombre séjours avec préadmission||nb_preadmission_validee|1|SUM||0|1| | | | |1||||||||||||||||||||||0||||||||||||NBSEJ|||||||| +1|CTI_NB_PREADM_J1|OCCUPATION|Nombre de séjours avec préadmission validée à   J-1|Nombre séjours avec préadmission J-1||nb_preadmission_validee_j1|1|SUM||0|1| | | | |1||||||||||||||||||||||0||||||||||||NBSEJ|||||||| +1|CTI_NB_PREADM_J2|OCCUPATION|Nombre de séjours avec préadmission validée à    J-2|Nombre séjours avec préadmission J-2||nb_preadmission_validee_j2|1|SUM||0|1| | | | |1||||||||||||||||||||||0||||||||||||NBSEJ|||||||| +1|CTI_NB_PRESENT|OCCUPATION|NB présents (Date du Jour)|Nombres de présents (Date du Jour)|Nombres de présents (Date du Jour)|DISTINCT(CASE WHEN (code_sorti= 0 AND code_prevu = 0) THEN no_sejour ELSE NULL END)|1|COUNT|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de patients présents dans l'établissement||||||||| +1|CTI_NB_RECUSES|ANNULATIONS|Nombre de séjours récusés|Nombre séjours récusés||DISTINCT CASE WHEN etat_sejour_code = 'R' THEN no_sejour ELSE NULL END|1|COUNT||0|1| | | | |1||||||||||||||||||||||0||||||||||||NBSEJ|||||||| +1|CTI_NB_SAB|*CALC|NB Sorties directes + Ambulatoires + bébés|Sorties directes + Ambulatoires + bébés|Sorties Ambu Bb|[1] + [2] + [3]|1|*CALC|#|0| | | | | | |CTI_NBSORDIR|CTI_NBAMB|CTI_NB_BEBE|||||||||||||||||||0|||||||||||Nombre de sorties directes, ambulatoires et de bébés|-TS1|-TS2|NBENT|NBSOR||||| +1|CTI_NB_SABS|*CALC|NB Sorties directes + Ambulatoires + bébés + séances|Sorties directes + Ambulatoires + bébés+ séances|Sorties Ambu Bb Sc|[1] + [2] + [3] + [4]|1|*CALC|#|0| | | | | | |CTI_NBSORDIR|CTI_NBAMB|CTI_NB_BEBE|CTI_NBSCE||||||||||||||||||0|||||||||||Nombre de sorties directes, ambulatoires, de séances et de bébés|-TS1|-TS2|-TS5|NBENT|NBSOR|||| +1|CTI_NB_SAE|OCCUPATION|NB Sorties directes + Ambulatoires + Externes|Sorties directes + Ambulatoires + Externes|Sorties directes + Ambulatoires + Externes|nb_ambulatoires + nb_externes + nb_sorties_directes|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de sorties directes, ambulatoires et externes|-TS2|-TS3|NBSOR|||||| +1|CTI_NB_SEJ|SEJOURS|NB séjours hospit et ambu|Nombre de séjours hospit et ambu|Nb sej Hosp Amb|DISTINCT CASE WHEN type_sejour = '1' OR type_sejour = '2' THEN no_sejour ELSE null END|1|COUNT|#|0|2| | | | |2||||||||||||||||||||||0|||||||||||Nombre de séjours hospitalisés et ambulatoires|NBSEJ|||||||| +1|CTI_NB_SEJ_FAEN|FACTURATION_CLINIQUE|NB Séjours Facturés + Valorisés|Séjours Facturés + Valorisés|Séjours Facturés + Valorisés|DISTINCT no_sejour |1|COUNT|#|0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours facturés et valorisés|NBSEJ|||||||| +1|CTI_NB_SEJ_VAL|FACTURATION_CLINIQUE|NB Séjours Valorisés|Séjours Valorisés|Séjours Valorisés|DISTINCT CASE WHEN est_ligne_facturee = '0' THEN no_sejour ELSE NULL END|1|COUNT|#|0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours valorisés|NBSEJ|||||||| +1|CTI_NB_SOLDER|SEJOURS|NB Séjours Soldés|NB_SOLDE|NB_SOLDE|CASE WHEN nb_non_solde_0_c <> 0 or nb_non_solde_1_c <> 0 or nb_non_solde_2_c <> 0 THEN 0 ELSE 1 END|1|SUM|0,0|40|2| | | | |2||||||||||||||||||||||0||||||||||||NOMBRE|||||||| +1|CTI_NB_SORTOT|OCCUPATION|NB Sorties totales directes et mutations Hospitalisés|Sorties totales directes et mutations (Hospitalisés)|Sorties totales directes et mutations (Hospitalisés)|nb_sorties_directes + nb_sorties_mutation_etage|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de sorties directes et de mutations des séjours hospitalisés|-TS1|NBSOR||||||| +1|CTI_NB_SUSPENDUS|ANNULATIONS|Nombre de séjours suspendus|Nombre séjours suspendus||DISTINCT CASE WHEN etat_sejour_code = 'C' THEN no_sejour ELSE NULL END|1|COUNT||0|1| | | | |1||||||||||||||||||||||0||||||||||||NBSEJ|||||||| +1|CTI_NN1_JOU_ENC|FACTURATION_CLINIQUE|NB Jours NN1 Valorisées|Nombre journées NN1 Valorisées|Nombre journées NN1 Valorisées|CASE WHEN prestation_code IN ('NN1') THEN nb_rubrique_encours ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées NN1 valorisées|NBJOU|||||||| +1|CTI_NN1_JOU_FAC|FACTURATION_CLINIQUE|NB Jours NN1 facturées|Nombre journées NN1 facturées|Nombre journées NN1 facturées|CASE WHEN prestation_code IN ('NN1') THEN nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées NN1 facturées|NBJOU|||||||| +1|CTI_NN1_JOU_TOT|FACTURATION_CLINIQUE|NB Jours NN1 Facturées + Valorisées|Total journées NN1 Facturées + Valorisées|Total journées NN1 Facturées + Valorisées|CASE WHEN prestation_code IN ('NN1') THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées NN1 facturées et valorisées|NBJOU|||||||| +1|CTI_NN1_MT_ENC|FACTURATION_CLINIQUE|CA NN1 Valorisé|Montant NN1 Valorisé|Montant NN1 Valorisé|CASE WHEN prestation_code IN ('NN1') THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires NN1 Valorisé|CAV|||||||| +1|CTI_NN1_MT_FAC|FACTURATION_CLINIQUE|CA NN1 Facturé|Montant NN1 facturé|Montant NN1 facturé|CASE WHEN prestation_code IN ('NN1') THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires NN1 Facturé|CAF|||||||| +1|CTI_NN1_MT_TOT|FACTURATION_CLINIQUE|CA NN1 Facturé + Valorisé|Montant NN1 facturé + Valorisé|Montant NN1 facturé + Valorisé|CASE WHEN prestation_code IN('NN1') THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires NN1 Facturé + Valorisé|CAVF|||||||| +1|CTI_NN1_NB_ENC|FACTURATION_CLINIQUE|NB Séjours CA NN1 Valorisés|Nombre séjours NN1 Valorisés|Nombre séjours NN1 Valorisés|DISTINCT CASE WHEN (est_ligne_facturee = '0' and prestation_code IN ('NN1')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours NN1 Valorisés|NBSEJ|||||||| +1|CTI_NN1_NB_FAC|FACTURATION_CLINIQUE|NB Séjours CA NN1 facturés|Nombre séjours NN1 facturés|Nombre séjours NN1 facturés|DISTINCT CASE WHEN (est_ligne_facturee = '1' and prestation_code IN ('NN1')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours NN1 Facturés|NBSEJ|||||||| +1|CTI_NN1_NB_TOT|FACTURATION_CLINIQUE|NB Séjours CA NN1 Facturés + Valorisés|Nombre séjours NN1 Facturés + Valorisés|Nombre séjours NN1 Facturés + Valorisés|DISTINCT CASE WHEN ( prestation_code IN ('NN1')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours NN1 Facturés + Valorisés|NBSEJ|||||||| +1|CTI_NN2_JOU_ENC|FACTURATION_CLINIQUE|NB Jours NN2 Valorisées|Nombre journées NN2 Valorisées|Nombre journées NN2 Valorisées|CASE WHEN prestation_code IN ('NN2') THEN nb_rubrique_encours ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées NN2 valorisées|NBJOU|||||||| +1|CTI_NN2_JOU_FAC|FACTURATION_CLINIQUE|NB Jours NN2 facturées|Nombre journées NN2 facturées|Nombre journées NN2 facturées|CASE WHEN prestation_code IN ('NN2') THEN nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées NN2 facturées|NBJOU|||||||| +1|CTI_NN2_JOU_TOT|FACTURATION_CLINIQUE|NB Jours NN2 Facturées + Valorisées|Total journées NN2 Facturées + Valorisées|Total journées NN2 Facturées + Valorisées|CASE WHEN prestation_code IN ('NN2') THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées NN2 facturées et valorisées|NBJOU|||||||| +1|CTI_NN2_MT_ENC|FACTURATION_CLINIQUE|CA NN2 Valorisé|Montant NN2 Valorisé|Montant NN2 Valorisé|CASE WHEN prestation_code IN ('NN2') THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires NN2 Valorisé|CAV|||||||| +1|CTI_NN2_MT_FAC|FACTURATION_CLINIQUE|CA NN2 Facturé|Montant NN2 facturé|Montant NN2 facturé|CASE WHEN prestation_code IN ('NN2') THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires NN2 Facturé|CAF|||||||| +1|CTI_NN2_MT_TOT|FACTURATION_CLINIQUE|CA NN2 Facturé + Valorisé|Montant NN2 facturé + Valorisé|Montant NN2 facturé + Valorisé|CASE WHEN prestation_code IN('NN2') THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires NN2 Facturé + Valorisé|CAVF|||||||| +1|CTI_NN2_NB_ENC|FACTURATION_CLINIQUE|NB Séjours CA NN2 Valorisés|Nombre séjours NN2 Valorisés|Nombre séjours NN2 Valorisés|DISTINCT CASE WHEN (est_ligne_facturee = '0' and prestation_code IN ('NN2')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours NN2 Valorisés|NBSEJ|||||||| +1|CTI_NN2_NB_FAC|FACTURATION_CLINIQUE|NB Séjours CA NN2 facturés|Nombre séjours NN2 facturés|Nombre séjours NN2 facturés|DISTINCT CASE WHEN (est_ligne_facturee = '1' and prestation_code IN ('NN2')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours NN2 Facturés|NBSEJ|||||||| +1|CTI_NN2_NB_TOT|FACTURATION_CLINIQUE|NB Séjours CA NN2 Facturés + Valorisés|Nombre séjours NN2 Facturés + Valorisés|Nombre séjours NN2 Facturés + Valorisés|DISTINCT CASE WHEN ( prestation_code IN ('NN2')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours NN2 Facturés + Valorisés|NBSEJ|||||||| +1|CTI_NN3_JOU_ENC|FACTURATION_CLINIQUE|NB Jours NN3 Valorisées|Nombre journées NN3 Valorisées|Nombre journées NN3 Valorisées|CASE WHEN prestation_code IN ('NN3') THEN nb_rubrique_encours ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées NN3 valorisées|NBJOU|||||||| +1|CTI_NN3_JOU_FAC|FACTURATION_CLINIQUE|NB Jours NN3 facturées|Nombre journées NN3 facturées|Nombre journées NN3 facturées|CASE WHEN prestation_code IN ('NN3') THEN nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées NN3 facturées|NBJOU|||||||| +1|CTI_NN3_JOU_TOT|FACTURATION_CLINIQUE|NB Jours NN3 Facturées + Valorisées|Total journées NN3 Facturées + Valorisées|Total journées NN3 Facturées + Valorisées|CASE WHEN prestation_code IN ('NN3') THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées NN3 facturées et valorisées|NBJOU|||||||| +1|CTI_NN3_MT_ENC|FACTURATION_CLINIQUE|CA NN3 Valorisé|Montant NN3 Valorisé|Montant NN3 Valorisé|CASE WHEN prestation_code IN ('NN3') THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires NN3 Valorisé|CAV|||||||| +1|CTI_NN3_MT_FAC|FACTURATION_CLINIQUE|CA NN3 Facturé|Montant NN3 facturé|Montant NN3 facturé|CASE WHEN prestation_code IN ('NN3') THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires NN3 Facturé|CAF|||||||| +1|CTI_NN3_MT_TOT|FACTURATION_CLINIQUE|CA NN3 Facturé + Valorisé|Montant NN3 facturé + Valorisé|Montant NN3 facturé + Valorisé|CASE WHEN prestation_code IN('NN3') THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires NN3 Facturé + Valorisé|CAVF|||||||| +1|CTI_NN3_NB_ENC|FACTURATION_CLINIQUE|NB Séjours CA NN3 Valorisés|Nombre séjours NN3 Valorisés|Nombre séjours NN3 Valorisés|DISTINCT CASE WHEN (est_ligne_facturee = '0' and prestation_code IN ('NN3')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours NN3 Valorisés|NBSEJ|||||||| +1|CTI_NN3_NB_FAC|FACTURATION_CLINIQUE|NB Séjours CA NN3 facturés|Nombre séjours NN3 facturés|Nombre séjours NN3 facturés|DISTINCT CASE WHEN (est_ligne_facturee = '1' and prestation_code IN ('NN3')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours NN3 Facturés|NBSEJ|||||||| +1|CTI_NN3_NB_TOT|FACTURATION_CLINIQUE|NB Séjours CA NN3 Facturés + Valorisés|Nombre séjours NN3 Facturés + Valorisés|Nombre séjours NN3 Facturés + Valorisés|DISTINCT CASE WHEN ( prestation_code IN ('NN3')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours NN3 Facturés + Valorisés|NBSEJ|||||||| +1|CTI_NSCPT_C|FACTURATION_CLINIQUE|NB Séjours Comptabilisés|Séjours comptabilisés|Séjours comptabilisés|DISTINCT CASE WHEN montant_comptabilise <> 0 THEN no_sejour ELSE NULL END|1|COUNT|#|0|4| | | | |4||||||||||||||||||||||0|||||||||||Nombre de séjours comptabilisés|NBSEJ|||||||| +1|CTI_NSFAC1_CS|FACTURATION_CLINIQUE|NB Séjours facturés [HOSP]|Nombre séjours Total facturés (Hospitalisés)|Nombre séjours Total facturés (Hospitalisés)|DISTINCT CASE WHEN (est_ligne_facturee = '1' and type_sejour = '1') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours hospitalisés (1 nuit minimum) facturés|-TS1|NBSEJ||||||| +1|CTI_NSFAC2_CS|FACTURATION_CLINIQUE|NB Séjours facturés [AMBU]|Nombre séjours Total facturés (Ambulatoire)|Nombre séjours Total facturés (Ambulatoire)|DISTINCT CASE WHEN (est_ligne_facturee = '1' and type_sejour = '2') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours ambulatoires (0 nuits) facturés|-TS2|NBSEJ||||||| +1|CTI_NSFAC3_CS|FACTURATION_CLINIQUE|NB Séjours facturés [EXT]|Nombre séjours Total facturés (Externe)|Nombre séjours Total facturés (Externe)|DISTINCT CASE WHEN (est_ligne_facturee = '1' and type_sejour = '3') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours externes facturés|-TS3|NBSEJ||||||| +1|CTI_NSFAC5_CS|FACTURATION_CLINIQUE|NB Séjours facturés [SEANCE]|Nombre séjours Total facturés (Séances)|Nombre séjours Total facturés (Séances)|DISTINCT CASE WHEN (est_ligne_facturee = '1' and type_sejour = '5') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séances facturées|-TS5|NBSEJ||||||| +1|CTI_NSFACT_CS|FACTURATION_CLINIQUE|NB séjours facturés|Nombre séjours avec facturation|Nombre séjours avec facturation|DISTINCT CASE WHEN est_ligne_facturee = '1' THEN no_sejour ELSE NULL END|1|COUNT|#|0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours comportant une facturation|NBSEJ|||||||| +1|CTI_NSFAC_C|FACTURATION_CLINIQUE|NB Séjours Facturés|Séjours facturés|Séjours facturés|DISTINCT CASE WHEN est_ligne_facturee = '1' THEN no_sejour ELSE NULL END|1|COUNT|#|0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours facturés|NBSEJ|||||||| +1|CTI_NSFAC_CS|FACTURATION_CLINIQUE|NB séjours facturés|Nombre séjours Total facturés|Nombre séjours Total facturés|DISTINCT CASE WHEN est_ligne_facturee = '1' THEN no_sejour ELSE NULL END|1|COUNT|#|0|1|2|3|4| |1||||||||||||||||||||||0|||||||||||Nombre de séjours facturés|NBSEJ|||||||| +1|CTI_PORTFOLIO_NEW|*CALC|Portfolio||||1|*CALC|#,0|0| | | | | | ||||||||||||||||||||||0|||||||||||||||||||| +1|CTI_PROTH_MT_CPT|FACTURATION_CLINIQUE|CA PROTHESE Comptabilisé|Montant prothèses Facturé|Montant prothèses Facturé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_PROTHESE_R] THEN montant_comptabilise ELSE 0 END|1|SUM|#E|80|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires comptabilisé des prothèses|CACP|||||||| +1|CTI_PROTH_MT_ENC|FACTURATION_CLINIQUE|CA PROTHESE Valorisé|Montant prothèses Valorisé|Montant prothèses Valorisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_PROTHESE_R] THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des prothèses|CAV|||||||| +1|CTI_PROTH_MT_FAC|FACTURATION_CLINIQUE|CA PROTHESE Facturé|Montant prothèses Facturé|Montant prothèses Facturé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_PROTHESE_R] THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des prothèses|CAF|||||||| +1|CTI_PROTH_MT_TOT|FACTURATION_CLINIQUE|CA PROTHESE Facturé + Valorisé|Montant prothèses Facturé + Valorisé|Montant prothèses Fact + Val|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_PROTHESE_R] THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des prothèses|CAVF|||||||| +1|CTI_PROTH_RUB_FAC|FACTURATION_CLINIQUE|NB Rubriques PROTHESE|Nombre rubriques prothèses|Nombre rubriques prothèses|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_PROTHESE_R] THEN nb_rubrique_facture ELSE 0 END|1|SUM|#|60|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de rubriques de prothèses|NBRUB|||||||| +1|CTI_PSEJFEM|*CALC|Pourcentage de femmes|Pourcentage de femmes|Pourcentage de femmes|base.cti_division([1], [2]) * 100.0|1|*CALC|#,0%|0| | | | | | |CTI_NBSEJFEM|CTI_NBSEJO||||||||||||||||||||0|||||||||||Part des femmes dans la patientèle|NBSEJ|||||||| +1|CTI_RAPPORTCALC|*RAPPORTCALC|Calcul d'indicateurs dans le rapport||||1|sum|#|0| | | | | | ||||||||||||||||||||||0|||||||||||Pour calculer directement dans la définition du rapport||||||||| +1|CTI_RAT_AMB1_CAT|*CALC|Ratio CA Hospitalisés / CA Total Clinique|Ratio CA Hospitalisés / CA Total Clinique|Ratio CA Hospitalisés / CA Total Clinique|(base.cti_division([1] , [2]) * 100)|1|*CALC|#,00%|0| | | | | | ||||||||||||||||||||||0|||||||||||Part du Chiffre d'Affaires des séjours hospitalisés (1 nuit minimum) facturés dans le Chiffre d'Affaires total des séjours facturés|-TS1|CAF||||||| +1|CTI_RAT_AMB2_CAT|*CALC|Ratio CA Ambulatoire / CA Total Clinique|Ratio CA Ambulatoire / CA Total Clinique|Ratio CA Ambulatoire / CA Total Clinique|(base.cti_division([1] , [2]) * 100)|1|*CALC|#,00%|0| | | | | | ||||||||||||||||||||||0|||||||||||Part du Chiffre d'Affaires des séjours ambulatoires (0 nuits) facturés dans le Chiffre d'Affaires total des séjours facturés|-TS2|CAF||||||| +1|CTI_RAT_AMB5_CAT|*CALC|Ratio CA Séances / CA Total Clinique|Ratio CA Séances / CA Total Clinique|Ratio CA Séances / CA Total Clinique|(base.cti_division([1] , [2]) * 100)|1|*CALC|#,00%|0| | | | | | ||||||||||||||||||||||0|||||||||||Part du Chiffre d'Affaires des séances facturées dans le Chiffre d'Affaires total des séjours facturés|-TS5|CAF||||||| +1|CTI_RAT_AMB_END|*CALC|Ratio nb Ambulatoires / nb sorties Hospitalisés + Ambulatoire|Ratio nb Ambulatoires / nb sorties Hospitalisés + Ambulatoire|Ratio nb Ambulatoires / nb sorties Hospitalisés + Ambulatoire|(base.cti_division([1] , [2]) * 100)|1|*CALC|#,00%|0| | | | | | |CTI_NBAMB|CTI_NBSOR_SA||||||||||||||||||||0|||||||||||Part du nombre de séjours ambulatoires (0 nuits) sur le nombre total de sorties directes des séjours hospitalisés et ambulatoires|-TS1|-TS2|NBENT|NBSOR||||| +1|CTI_RAT_CAH_CAL|*CALC|Ratio CA Honoraire / Clinique|Ratio CA Honoraire / Clinique|Ratio CA Hon|(base.cti_division([1] , [2]) * 100)|1|*CALC|#,00%|0| | | | | | ||||||||||||||||||||||0|||||||||||Part du Chiffre d'Affaires comptabilisé pour les honoraires sur la Chiffre d'Affaires comptabilisé total|CACP|CAHON||||||| +1|CTI_REA_JOU_ENC|FACTURATION_CLINIQUE|NB Jours REA Valorisées|Nombre journées REA Valorisées|Nombre journées REA Valorisées|CASE WHEN prestation_code IN ('REA') THEN nb_rubrique_encours ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées valorisées en REA|NBJOU|||||||| +1|CTI_REA_JOU_FAC|FACTURATION_CLINIQUE|NB Jours REA facturées|Nombre journées REA facturées|Nombre journées REA facturées|CASE WHEN prestation_code IN ('REA') THEN nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées facturées en REA|NBJOU|||||||| +1|CTI_REA_JOU_TOT|FACTURATION_CLINIQUE|NB Jours REA Facturées + Valorisées|Total journées REA Facturées + Valorisées|Total journées REA Facturées + Valorisées|CASE WHEN prestation_code IN ('REA') THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées facturées et valorisées en REA|NBJOU|||||||| +1|CTI_REA_MT_ENC|FACTURATION_CLINIQUE|CA REA Valorisé|Montant REA Valorisé|Montant REA Valorisé|CASE WHEN prestation_code IN ('REA') THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé en REA|CAV|||||||| +1|CTI_REA_MT_FAC|FACTURATION_CLINIQUE|CA REA Facturé|Montant REA facturé|Montant REA facturé|CASE WHEN prestation_code IN ('REA') THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé en REA|CAF|||||||| +1|CTI_REA_MT_TOT|FACTURATION_CLINIQUE|CA REA Facturé + Valorisé|Montant REA facturé + Valorisé|Montant REA facturé + Valorisé|CASE WHEN prestation_code IN ('REA') THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé en REA|CAVF|||||||| +1|CTI_REA_NB_ENC|FACTURATION_CLINIQUE|NB Séjours CA REA Valorisés|Nombre séjours REA Valorisés|Nombre séjours REA Valorisés|DISTINCT CASE WHEN est_ligne_facturee = '0' and prestation_code IN ('REA') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires valorisé en REA|NBSEJ|||||||| +1|CTI_REA_NB_FAC|FACTURATION_CLINIQUE|NB Séjours CA REA facturés|Nombre séjours REA facturés|Nombre séjours REA facturés|DISTINCT CASE WHEN est_ligne_facturee = '1' and prestation_code IN ('REA') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires facturé en REA|NBSEJ|||||||| +1|CTI_REA_NB_TOT|FACTURATION_CLINIQUE|NB Séjours CA REA Facturés + Valorisés|Nombre séjours REA Facturés + Valorisés|Nombre séjours REA Facturés + Valorisés|DISTINCT CASE WHEN ( prestation_code IN ('REA')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires facturé et valorisé en REA|NBSEJ|||||||| +1|CTI_RUBMED_MT1_ENC|FACTURATION_CLINIQUE|CA SEJOUR Valorisé [HOSP]|Montant CA SEJOUR Valorisé (hospitalisés)|Montant CA SEJOUR Valorisé (hospitalisés)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '1' THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des séjours hospitalisés (1 nuit minimum)|-TS1|CAV||||||| +1|CTI_RUBMED_MT1_FAC|FACTURATION_CLINIQUE|CA SEJOUR Facturé [HOSP]|Montant CA SEJOUR factur (hospitalisés)|Montant CA SEJOUR factur (hospitalisés)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '1' THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des séjours hospitalisés (1 nuit minimum)|-TS1|CAF||||||| +1|CTI_RUBMED_MT1_TOT|FACTURATION_CLINIQUE|CA SEJOUR Facturé + Valorisé [HOSP]|Montant CA SEJOUR facturé + enc. (hospitalisés)|Montant CA SEJOUR facturé + enc. (hospitalisés)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '1' THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des séjours hospitalisés (1 nuit minimum)|-TS1|CAVF||||||| +1|CTI_RUBMED_MT2_ENC|FACTURATION_CLINIQUE|CA SEJOUR Valorisé [AMBU]|Montant CA Séjour Valorisé (ambulatoire)|Montant CA Séjour Valorisé (ambulatoire)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '2' THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des séjours ambulatoires (0 nuits)|-TS2|CAV||||||| +1|CTI_RUBMED_MT2_FAC|FACTURATION_CLINIQUE|CA SEJOUR Facturé [AMBU]|Montant CA SEJOUR facturé (ambulatoire)|Montant CA SEJOUR facturé (ambulatoire)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '2' THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des séjours ambulatoires (0 nuits)|-TS2|CAF||||||| +1|CTI_RUBMED_MT2_TOT|FACTURATION_CLINIQUE|CA SEJOUR Facturé + Valorisé [AMBU]|Montant CA SEJOUR facturé + enc. (ambulatoire)|Montant CA SEJOUR facturé + enc. (ambulatoire)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '2' THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des séjours ambulatoires (0 nuits)|-TS2|CAVF||||||| +1|CTI_RUBMED_MT3_ENC|FACTURATION_CLINIQUE|CA SEJOUR Valorisé [EXT]|Montant CA SEJOUR Valorisé (Externes)|Montant CA SEJOUR Valorisé (Externes)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '3' THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des séjours externes|-TS3|CAV||||||| +1|CTI_RUBMED_MT3_FAC|FACTURATION_CLINIQUE|CA SEJOUR Facturé [EXT]|Montant CA SEJOUR facturé (Externe)|Montant CA SEJOUR facturé (Externe)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '3' THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des séjours externes|-TS3|CAF||||||| +1|CTI_RUBMED_MT3_TOT|FACTURATION_CLINIQUE|CA SEJOUR Facturé + Valorisé [EXT]|Montant CA SEJOUR facturé + enc. (Externe)|Montant CA SEJOUR facturé + enc. (Externe)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '3' THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des séjours externes|-TS3|CAVF||||||| +1|CTI_RUBMED_MT5_ENC|FACTURATION_CLINIQUE|CA SEJOUR Valorisé [SEANCE]|Montant CA SEJOUR Valorisé (séances)|Montant CA SEJOUR Valorisé (séances)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '5' THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des séances|-TS5|CAV||||||| +1|CTI_RUBMED_MT5_FAC|FACTURATION_CLINIQUE|CA SEJOUR Facturé [SEANCE]|Montant CA SEJOUR facturé (séances)|Montant CA SEJOUR facturé (séances)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '5' THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des séances|-TS5|CAF||||||| +1|CTI_RUBMED_MT5_TOT|FACTURATION_CLINIQUE|CA SEJOUR Facturé + Valorisé [SEANCE]|Montant CA SEJOUR facturé + enc. (séances)|Montant CA SEJOUR facturé + enc. (séances)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '5' THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des séances|-TS5|CAVF||||||| +1|CTI_RUBMED_MT_ENC|FACTURATION_CLINIQUE|CA SEJOUR Valorisé|Montant CA SEJOUR Valorisé|Montant CA SEJOUR Valorisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des séjours|CAV|||||||| +1|CTI_RUBMED_MT_FAC|FACTURATION_CLINIQUE|CA SEJOUR Facturé|Montant CA SEJOUR facturé|Montant CA SEJOUR facturé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des séjours|CAF|||||||| +1|CTI_RUBMED_MT_TOT|FACTURATION_CLINIQUE|CA SEJOUR Facturé + Valorisé|Montant CA SEJOUR facturé + Valorisé|Montant CA SEJOUR facturé + Valorisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des séjours|CAVF|||||||| +1|CTI_RUBMED_NB1_ENC|FACTURATION_CLINIQUE|NB Séjours CA SEJOUR Valorisés [HOSP]|Nombre séjours Valorisés (hospitalisés)|Nombre séjours Valorisés (hospitalisés)|DISTINCT CASE WHEN (est_ligne_facturee = '0' and rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '1') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours hospitalisés (1 nuit minimum) valorisés|-TS1|NBSEJ||||||| +1|CTI_RUBMED_NB1_FAC|FACTURATION_CLINIQUE|NB Séjours CA SEJOUR facturés [HOSP]|Nombre séjours facturés (hospitalisés)|Nombre séjours facturés (hospitalisés)|DISTINCT CASE WHEN (est_ligne_facturee = '1' and rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '1') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours hospitalisés (1 nuit minimum) facturés|-TS1|NBSEJ||||||| +1|CTI_RUBMED_NB1_TOT|FACTURATION_CLINIQUE|NB Séjours CA SEJOUR Facturés + Valorisés [HOSP]|Nombre SEJOURS Facturés + Valorisés (hospitalisés|Nombre SEJOURS Facturés + Valorisés (hospitalisés|DISTINCT CASE WHEN ( rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '1') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours hospitalisés (1 nuit minimum) facturés et valorisés|-TS1|NBSEJ||||||| +1|CTI_RUBMED_NB2_ENC|FACTURATION_CLINIQUE|NB Séjours CA SEJOUR Valorisés [AMBU]|Nombre séjours Valorisés (ambulatoire)|Nombre séjours Valorisé s (ambulatoire)|DISTINCT CASE WHEN (est_ligne_facturee = '0' and rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '2') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours ambulatoires (0 nuits) valorisés|-TS2|NBSEJ||||||| +1|CTI_RUBMED_NB2_FAC|FACTURATION_CLINIQUE|NB Séjours CA SEJOUR facturés [AMBU]|Nombre séjours facturés (ambulatoire)|Nombre séjours facturés (ambulatoire)|DISTINCT CASE WHEN (est_ligne_facturee = '1' and rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '2') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours ambulatoires (0 nuits) facturés|-TS2|NBSEJ||||||| +1|CTI_RUBMED_NB2_TOT|FACTURATION_CLINIQUE|NB Séjours CA SEJOUR Facturés + Valorisés [AMBU]|Nombre séjours Facturés + Valorisés (ambulatoire)|Nombre séjours Facturés + Valorisés (ambulatoire)|DISTINCT CASE WHEN ( rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '2') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours ambulatoires (0 nuits) facturés et valorisés|-TS2|NBSEJ||||||| +1|CTI_RUBMED_NB3_ENC|FACTURATION_CLINIQUE|NB Séjours CA SEJOUR Valorisés [EXT]|Nombre séjours Valorisés (Externe)|Nombre séjours Valorisés (Externe)|DISTINCT CASE WHEN (est_ligne_facturee = '0' and rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '3') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours externes valorisés|-TS3|NBSEJ||||||| +1|CTI_RUBMED_NB3_FAC|FACTURATION_CLINIQUE|NB Séjours CA SEJOUR facturés [EXT]|Nombre séjours facturés (Externe)|Nombre séjours facturés (Externe)|DISTINCT CASE WHEN (est_ligne_facturee = '1' and rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '3') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours externes facturés|-TS3|NBSEJ||||||| +1|CTI_RUBMED_NB3_TOT|FACTURATION_CLINIQUE|NB Séjours CA SEJOUR Facturés + Valorisés [EXT]|Nombre séjours Facturés + Valorisés (Externe)|Nombre séjours Facturés + Valorisés (Externe)|DISTINCT CASE WHEN ( rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '3') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours externes facturés et valorisés|-TS3|NBSEJ||||||| +1|CTI_RUBMED_NB5_ENC|FACTURATION_CLINIQUE|NB Séjours CA SEJOUR Valorisés [SEANCE]|Nombre séances Valorisés (séances)|Nombre séances Valorisés (séances)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '5' and est_ligne_facturee = '0' THEN nb_rubrique_encours ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séances valorisées|-TS5|NBSEJ||||||| +1|CTI_RUBMED_NB5_FAC|FACTURATION_CLINIQUE|NB Séjours CA SEJOUR facturés [SEANCE]|Nombre séances facturées (séances)|Nombre séances facturées (séances)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '5' and est_ligne_facturee = '1' THEN nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séances facturées|-TS5|NBSEJ||||||| +1|CTI_RUBMED_NB5_TOT|FACTURATION_CLINIQUE|NB Séjours CA SEJOUR Facturés + Valorisés [SEANCE]|Nombre séances Facturées + Valorisées (séances)|Nombre séances Facturées + Valorisées (séances)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] and type_sejour = '5' THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séances facturées et valorisées|-TS5|NBSEJ||||||| +1|CTI_RUBMED_NB_ENC|FACTURATION_CLINIQUE|NB Séjours CA SEJOUR Valorisés|Nombre séjours Valorisés|Nombre séjours Valorisés|DISTINCT CASE WHEN (est_ligne_facturee = '0' and rubrique_facturation_id IN [LISTE:CTI_RUBMED_R]) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours valorisés|NBSEJ|||||||| +1|CTI_RUBMED_NB_FAC|FACTURATION_CLINIQUE|NB Séjours CA SEJOUR facturés|Nombre séjours facturés|Nombre séjours facturés|DISTINCT CASE WHEN (est_ligne_facturee = '1' and rubrique_facturation_id IN [LISTE:CTI_RUBMED_R]) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours facturés|NBSEJ|||||||| +1|CTI_RUBMED_NB_TOT|FACTURATION_CLINIQUE|NB Séjours CA SEJOUR Facturés + Valorisés|Nombre séjours Facturés + Valorisés|Nombre séjours Facturés + Valorisés|DISTINCT CASE WHEN ( rubrique_facturation_id IN [LISTE:CTI_RUBMED_R]) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours facturés et valorisés|NBSEJ|||||||| +1|CTI_SEH_MT_CPT|FACTURATION_CLINIQUE|CA SE comptabilisé|Montant SE comptabilisé|Montant SE comptabilisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SE_R] THEN montant_comptabilise ELSE 0 END|1|SUM|#E|80|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires SE comptabilisé|CACP|||||||| +1|CTI_SEH_MT_ENC|FACTURATION_CLINIQUE|CA SE Valorisé Clinique|Montant SE Valorisé Clinique|Montant SE Valorisé Clinique|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SE_R] THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires SE valorisé|CAV|||||||| +1|CTI_SEH_MT_FAC|FACTURATION_CLINIQUE|CA SE Facturé Clinique|Montant SE facturés Clinique|Montant SE facturés Clinique|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SE_R] THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires SE facturé|CAF|||||||| +1|CTI_SEH_MT_TOT|FACTURATION_CLINIQUE|CA SE Facturé + Valorisé|Montant SE Facturé + Valorisé|Montant SE Facturé + Valorisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SE_R] THEN montant_facture + montant_encours ELSE NULL END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires SE facturé et valorisé|CAVF|||||||| +1|CTI_SEH_NB_ENC|FACTURATION_CLINIQUE|NB Rubriques SE Valorisés|Nombre SE Valorisés|Nombre SE Valorisés|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SE_R] THEN nb_rubrique_encours ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de rubriques SE valorisées|NBRUB|||||||| +1|CTI_SEH_NB_FAC|FACTURATION_CLINIQUE|NB Rubriques SE facturés|Nombre SE facturés|Nombre SE facturés|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SE_R] THEN nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de rubriques SE facturées|NBRUB|||||||| +1|CTI_SEH_NB_TOT|FACTURATION_CLINIQUE|NB Rubriques SE Facturés + Valorisés|Nombre SE Facturés + Valorisés|Nombre SE Facturés + Valorisés|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SE_R] THEN nb_rubrique_facture + nb_rubrique_encours ELSE NULL END|1|SUM|#|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de rubriques SE facturées et valorisées|NBRUB|||||||| +1|CTI_SEP|SEP|Séparateur||||1|SEP||0| | | | | | ||||||||||||||||||||||0|||||||||||||||||||| +1|CTI_SHO_JOU_ENC|FACTURATION_CLINIQUE|NB Jours CPC Valorisées|Nombre journées CP Valorisées|Nombre journées CP Valorisées|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SHO_R] THEN nb_rubrique_encours ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées valorisées en chambre particulière|NBJOU|||||||| +1|CTI_SHO_JOU_FAC|FACTURATION_CLINIQUE|NB Jours CPC facturées|Nombre journées CP facturées|Nombre journées CP facturées|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SHO_R] THEN nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées facturées en chambre particulière|NBJOU|||||||| +1|CTI_SHO_JOU_TOT|FACTURATION_CLINIQUE|NB Jours CPC fact. + val.|Nombre journées CP Facturées + Valorisées|Nombre journées CP Facturées + Valorisées|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SHO_R] THEN (nb_rubrique_encours * coefficient) + nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées facturées et valorisées en chambre particulière|NBJOU|||||||| +1|CTI_SHO_MT_ENC|FACTURATION_CLINIQUE|CA CPC Valorisé|CA chambre particulière Valorisé|CA chambre particulière Valorisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SHO_R] THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé en chambre particulière|CAV|||||||| +1|CTI_SHO_MT_FAC|FACTURATION_CLINIQUE|CA CPC Facturé|CA chambre particulière facturée|CA chambre particulière facturée|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SHO_R] THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé en chambre particulière|CAF|||||||| +1|CTI_SHO_MT_TOT|FACTURATION_CLINIQUE|CA CPC Facturé + Valorisé|CA chambre particulière facturée + Valorisé|CA chambre particulière facturée + Valorisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SHO_R] THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé en chambre particulière|CAVF|||||||| +1|CTI_SNS_NB_FACVAL|FACTURATION_CLINIQUE|NB Rubriques SNS Facturés + Valorisés|Nombre SNS Facturé + Valorisé|Nombre SNS Facturé + Valorisé|CASE WHEN prestation_code in ('SNS') THEN nb_rubrique_facture + nb_rubrique_encours ELSE 0 END|1|SUM|#|80|1|2|3|4| | ||||||||||||||||||||||0||||||||||||NBRUB|||||||| +1|CTI_SORDIRCOM|OCCUPATION|SSR - Sorties directes (Hospitalisés COMPLETE)|Sorties directes (Hospitalisés COMPLETE)|Sorties directes (Hospitalisés COMPLETE)|CASE WHEN mode_traitement_id = '3' THEN nb_sorties_directes ELSE 0 END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de sorties directes des séjours en Hospitalisation Complète|-TS1|||||||| +1|CTI_SORDIRJR|OCCUPATION|SSR - Sorties directes (Hospitalisés DE JOUR)|Sorties directes (Hospitalisés DE JOUR)|Sorties directes (Hospitalisés DE JOUR)|CASE WHEN mode_traitement_id = '4' THEN nb_sorties_directes ELSE 0 END|1|SUM|#|60|1| | | | |1||||||||||||||||||||||0|||||||||||Nombre de sorties directes des séjours en Hospitalisation de Jour|-TS1|||||||| +1|CTI_SOR_POST_PER|*CALC|NB Sorties après période|Sorties après période|Sor > Per|[1] - [2]|1|*CALC||0| | | | | | |CTI_NBSEJO|CTI_DEP||||||||||||||||||||0|||||||||||Nombre de sorties apr|NBSEJ|NBSOR||||||| +1|CTI_SRC_JOU_ENC|FACTURATION_CLINIQUE|NB Jours SRC Valorisées|Nombre journées SRC Valorisées|Nombre journées SRC Valorisées|CASE WHEN prestation_code IN ('SRC', 'SSC') THEN nb_rubrique_encours ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées valorisées en SRC|NBJOU|||||||| +1|CTI_SRC_JOU_FAC|FACTURATION_CLINIQUE|NB Jours SRC facturées|Nombre journées SRC facturées|Nombre journées SRC facturées|CASE WHEN prestation_code IN ('SRC', 'SSC') THEN nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées facturées en SRC|NBJOU|||||||| +1|CTI_SRC_JOU_TOT|FACTURATION_CLINIQUE|NB Jours SRC Facturées + Valorisées|Total journées SRC Facturées + Valorisées|Total journées SRC Facturées + Valorisées|CASE WHEN prestation_code IN ('SRC', 'SSC') THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées facturées et valorisées en SRC|NBJOU|||||||| +1|CTI_SRC_MT_ENC|FACTURATION_CLINIQUE|CA SRC Valorisé|Montant SRC Valorisé|Montant SRC Valorisé|CASE WHEN prestation_code IN ('SRC', 'SSC') THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé SRC|CAV|||||||| +1|CTI_SRC_MT_FAC|FACTURATION_CLINIQUE|CA SRC Facturé|Montant SRC facturé|Montant SRC facturé|CASE WHEN prestation_code IN ('SRC', 'SSC') THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé SRC|CAF|||||||| +1|CTI_SRC_MT_TOT|FACTURATION_CLINIQUE|CA SRC Facturé + Valorisé|Montant SRC facturé + Valorisé|Montant SRC facturé + Valorisé|CASE WHEN prestation_code IN ('SRC', 'SSC') THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé SRC|CAVF|||||||| +1|CTI_SRC_NB_ENC|FACTURATION_CLINIQUE|NB Séjours CA SRC Valorisés|Nombre séjours SRC Valorisés|Nombre séjours SRC Valorisés|DISTINCT CASE WHEN (est_ligne_facturee = '0' and prestation_code IN ('SRC', 'SSC')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires valorisé en SRC|NBSEJ|||||||| +1|CTI_SRC_NB_FAC|FACTURATION_CLINIQUE|NB Séjours CA SRC facturés|Nombre séjours SRC facturés|Nombre séjours SRC facturés|DISTINCT CASE WHEN (est_ligne_facturee = '1' and prestation_code IN ('SRC', 'SSC')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires facturé en SRC|NBSEJ|||||||| +1|CTI_SRC_NB_TOT|FACTURATION_CLINIQUE|NB Séjours CA SRC Facturés + Valorisés|Nombre séjours SRC Facturés + Valorisés|Nombre séjours SRC Facturés + Valorisés|DISTINCT CASE WHEN ( prestation_code IN ('SRC', 'SSC')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires facturé et valorisé en SRC|NBSEJ|||||||| +1|CTI_SRUBMED_MT_FAC|FACTURATION_CLINIQUE|CA SEJOUR sauf Facturé|Montant CA SEJOUR facturé|Montant CA SEJOUR facturé|CASE WHEN rubrique_facturation_id NOT IN [LISTE:CTI_RUBMED_R] THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des séjours non facturés|CAF|||||||| +1|CTI_SRUBMED_MT_TOT|FACTURATION_CLINIQUE|CA SEJOUR sauf Facturé + Valorisé|Montant sauf CA SEJOUR facturé + Valorisé|Montant sauf CA SEJOUR facturé + Valorisé|CASE WHEN rubrique_facturation_id NOT IN [LISTE:CTI_RUBMED_R] THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des séjours non facturés non valorisés|CAVF|||||||| +1|CTI_ST2A_MT_TOT|FACTURATION_CLINIQUE|CA SOINS sauf Facturé + Valorisé|Montant sauf CA Soins facturé + Valorisé|Montant sauf CA Soins facturé + Valorisé|CASE WHEN rubrique_facturation_id NOT IN [LISTE:CTI_T2A_R] THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des soins non facturés non valorisés|CAVF|||||||| +1|CTI_ST2A_NB_FAC|FACTURATION_CLINIQUE|CA SOINS sauf Facturé|Montant sauf CA Soins facturé|Montant sauf CA Soins facturé|CASE WHEN rubrique_facturation_id NOT IN [LISTE:CTI_T2A_R] THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires des soins non facturés|CAF|||||||| +1|CTI_STF_JOU_ENC|FACTURATION_CLINIQUE|NB Jours STF Valorisées|Nombre journées STF Valorisées|Nombre journées STF Valorisées|CASE WHEN prestation_code IN ('STF') THEN nb_rubrique_encours ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées valorisées en STF|NBJOU|||||||| +1|CTI_STF_JOU_FAC|FACTURATION_CLINIQUE|NB Jours STF facturées|Nombre journées STF facturées|Nombre journées STF facturées|CASE WHEN prestation_code IN ('STF') THEN nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées facturées en STF|NBJOU|||||||| +1|CTI_STF_JOU_TOT|FACTURATION_CLINIQUE|NB Jours STF Facturées + Valorisées|Total journées STF Facturées + Valorisées|Total journées STF Facturées + Valorisées|CASE WHEN prestation_code IN ('STF') THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de journées facturées et valorisées en STF|NBJOU|||||||| +1|CTI_STF_MT_ENC|FACTURATION_CLINIQUE|CA STF Valorisé|Montant STF Valorisé|Montant STF Valorisé|CASE WHEN prestation_code IN ('STF') THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé STF|CAV|||||||| +1|CTI_STF_MT_FAC|FACTURATION_CLINIQUE|CA STF Facturé|Montant STF facturé|Montant STF facturé|CASE WHEN prestation_code IN ('STF') THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé STF|CAF|||||||| +1|CTI_STF_MT_TOT|FACTURATION_CLINIQUE|CA STF Facturé + Valorisé|Montant STFfacturé + Valorisé|Montant STFfacturé + Valorisé|CASE WHEN prestation_code IN ('STF') THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé STF|CAVF|||||||| +1|CTI_STF_NB_ENC|FACTURATION_CLINIQUE|NB Séjours CA STF Valorisés|Nombre séjours STF Valorisés|Nombre séjours STF Valorisés|DISTINCT CASE WHEN (est_ligne_facturee = '0' and prestation_code IN ('STF')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires valorisé en STF|NBSEJ|||||||| +1|CTI_STF_NB_FAC|FACTURATION_CLINIQUE|NB Séjours CA STF facturés|Nombre séjours STF facturés|Nombre séjours STF facturés|DISTINCT CASE WHEN (est_ligne_facturee = '1' and prestation_code IN ('STF')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires facturé en STF|NBSEJ|||||||| +1|CTI_STF_NB_TOT|FACTURATION_CLINIQUE|NB Séjours CA STF Facturés + Valorisés|Nombre séjours STF Facturés + Valorisés|Nombre séjours STF Facturés + Valorisés|DISTINCT CASE WHEN ( prestation_code IN ('STF')) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires facturé et valorisé en STF|NBSEJ|||||||| +1|CTI_SUM_DEL_FACTURE|SEJOURS|SUM delai facturé|SUM_DEL_FACTURE|SUM_DEL_FACTURE|delai_facture|1|SUM|0,0|60|2| | | | |2||||||||||||||||||||||0|||||||||||||||||||| +1|CTI_SUM_DEL_GRP|SEJOURS|SUM delai groupage|Sum delai groupage|Sum delai groupage|delai_groupage|1|SUM|#,0|40|2| | | | |2||||||||||||||||||||||0||||||||||||NOMBRE|||||||| +1|CTI_SUM_DEL_SOLD|SEJOURS|SUM delai Soldé|SUM_DEL_SOLD|SUM_DEL_SOLD|delai_solde_c|1|SUM|0,0|60|2| | | | |2||||||||||||||||||||||0||||||||||||NBJOU|||||||| +1|CTI_SUM_NB_CALCULES|SEJOURS|SUM NB facturé|SUM_NB_CALCULES|SUM_NB_CALCULES|nb_calcules|1|SUM|0,0|60|2| | | | |2||||||||||||||||||||||0|||||||||||||||||||| +1|CTI_SUM_NB_GROUPE|SEJOURS|SUM NB groupé|SUM NB groupé|SUM NB groupé|nb_groupe|1|SUM|#,0|40|2| | | | |2||||||||||||||||||||||0||||||||||||NOMBRE|||||||| +1|CTI_SUPHOT_CA_CPT|FACTURATION_CLINIQUE|CA comptabilisé Suppléments|Montant Comptabilisé Suppléments Hoteliers|Montant Comptabilisé Suppléments Hoteliers|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SUPHOT_R] THEN montant_comptabilise ELSE 0 END|1|SUM|#E|80|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires comptabilisé en suppléments hôteliers|CACP|||||||| +1|CTI_SUPHOT_ENC|FACTURATION_CLINIQUE|CA HOTELLERIE Valorisé|Montant Suppléments hoteliers Valorisé|Montant Suppléments hoteliers Valorisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SUPHOT_R] THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé en suppléments hôteliers|CAV|||||||| +1|CTI_SUPHOT_FAC|FACTURATION_CLINIQUE|CA HOTELLERIE Facturé|Montant Suppléments hoteliers facturés|Montant Suppléments hoteliers facturés|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SUPHOT_R] THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé en suppléments hôteliers|CAF|||||||| +1|CTI_SUPHOT_TOT|FACTURATION_CLINIQUE|CA HOTELLERIE Facturé + Valorisé|Montant Suppléments hoteliers Facturés + Valorisés|Montant Suppléments hoteliers Facturés + Valorisés|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SUPHOT_R] THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé en suppléments hôteliers|CAVF|||||||| +1|CTI_T2A_MT1_ENC|FACTURATION_CLINIQUE|CA SOINS Valorisé [HOSP]|Montant CA Soins Valorisé (hospitalisés)|Montant CA Soins Valorisé (hospitalisés)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '1' THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des soins des séjours hospitalisés|-TS1|CAV||||||| +1|CTI_T2A_MT1_FAC|FACTURATION_CLINIQUE|CA SOINS Facturé [HOSP]|Montant CA Soins facturé (hospitalisés)|Montant CA Soins facturé (hospitalisés)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '1' THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des soins des séjours hospitalisés (1 nuit minimum)|-TS1|CAF||||||| +1|CTI_T2A_MT1_TOT|FACTURATION_CLINIQUE|CA SOINS Facturé + Valorisé [HOSP]|Montant CA Soins facturé + enc. (hospitalisés)|Montant CA Soins facturé + enc. (hospitalisés)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '1' THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des soins des séjours hospitalisés (1 nuit minimum)|-TS1|CAVF||||||| +1|CTI_T2A_MT2_ENC|FACTURATION_CLINIQUE|CA SOINS Valorisé [AMBU]|Montant CA Soins Valorisé (ambulatoire)|Montant CA Soins Valorisé (ambulatoire)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '2' THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des soins des séjours ambulatoires|-TS2|CAV||||||| +1|CTI_T2A_MT2_FAC|FACTURATION_CLINIQUE|CA SOINS Facturé [AMBU]|Montant CA Soins facturé (ambulatoire)|Montant CA Soins facturé (ambulatoire)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '2' THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des soins des séjours ambulatoires (0 nuits)|-TS2|CAF||||||| +1|CTI_T2A_MT2_TOT|FACTURATION_CLINIQUE|CA SOINS Facturé + Valorisé [AMBU]|Montant CA Soins facturé + enc. (ambulatoire)|Montant CA Soins facturé + enc. (ambulatoire)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '2' THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des soins des séjours ambulatoires (0 nuits)|-TS2|CAVF||||||| +1|CTI_T2A_MT3_ENC|FACTURATION_CLINIQUE|CA SOINS Valorisé [EXT]|Montant CA Soins Valorisé (Externe)|Montant CA Soins Valorisé (Externe)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '3' THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des soins des séjours externes|-TS3|CAV||||||| +1|CTI_T2A_MT3_FAC|FACTURATION_CLINIQUE|CA SOINS Facturé [EXT]|Montant CA Soins facturé (Externe)|Montant CA Soins facturé (Externe)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '3' THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des soins des séjours externes|-TS3|CAF||||||| +1|CTI_T2A_MT3_TOT|FACTURATION_CLINIQUE|CA SOINS Facturé + Valorisé [EXT]|Montant CA Soins facturé + enc. (Externe)|Montant CA Soins facturé + enc. (Externe)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '3' THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des soins des séjours externes|-TS3|CAVF||||||| +1|CTI_T2A_MT5_ENC|FACTURATION_CLINIQUE|CA SOINS Valorisé [SEANCE]|Montant CA Soins Valorisé (séances)|Montant CA Soins Valorisé (séances)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '5' THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des soins des séances|-TS5|CAV||||||| +1|CTI_T2A_MT5_FAC|FACTURATION_CLINIQUE|CA SOINS Facturé [SEANCE]|Montant CA Soins facturé (séances)|Montant CA Soins facturé (séances)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '5' THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des soins des séances|-TS5|CAF||||||| +1|CTI_T2A_MT5_TOT|FACTURATION_CLINIQUE|CA SOINS Facturé + Valorisé [SEANCE]|Montant CA Soins facturé + enc. (séances)|Montant CA Soins facturé + enc. (séances)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '5' THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des soins des séances|-TS5|CAVF||||||| +1|CTI_T2A_MT_ENC|FACTURATION_CLINIQUE|CA SOINS Valorisé|Montant CA Soins Valorisé|Montant CA Soins Valorisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des soins des séjours|CAV|||||||| +1|CTI_T2A_MT_FAC|FACTURATION_CLINIQUE|CA SOINS Facturé|Montant CA Soins facturé|Montant CA Soins facturé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des soins des séjours|CAF|||||||| +1|CTI_T2A_MT_TOT|FACTURATION_CLINIQUE|CA SOINS Facturé + Valorisé|Montant CA Soins facturé + Valorisé|Montant CA Soins facturé + Valorisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des soins des séjours|CAVF|||||||| +1|CTI_T2A_NB1_ENC|FACTURATION_CLINIQUE|NB Séjours CA SOINS Valorisés [HOSP]|Nombre séjours Soins Valorisés (hospitalisés)|Nombre séjours Soins Valorisés (hospitalisés)|DISTINCT CASE WHEN (est_ligne_facturee = '0' and rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '1') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires valorisé en soins des séjours hospitalisés (1 nuit minimum)|-TS1|NBSEJ||||||| +1|CTI_T2A_NB1_FAC|FACTURATION_CLINIQUE|NB Séjours CA SOINS facturés [HOSP]|Nombre séjours Soins facturés (hospitalisés)|Nombre séjours Soins facturés (hospitalisés)|DISTINCT CASE WHEN (est_ligne_facturee = '1' and rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '1') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires facturé en soins des séjours hospitalisés (1 nuit minimum)|-TS1|NBSEJ||||||| +1|CTI_T2A_NB1_TOT|FACTURATION_CLINIQUE|NB Séjours CA SOINS Facturés + Valorisés [HOSP]|Nombre SEJOURS Facturés + Valorisés (hospitalisés|Nombre SEJOURS Facturés + Valorisés (hospitalisés|DISTINCT CASE WHEN ( rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '1') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires facturé et valorisé en soins des séjours hospitalisés (1 nuit minimum)|-TS1|NBSEJ||||||| +1|CTI_T2A_NB2_ENC|FACTURATION_CLINIQUE|NB Séjours CA SOINS Valorisés [AMBU]|Nombre séjours Soins Valorisés (ambulatoire)|Nombre séjours Soins Valorisés (ambulatoire)|DISTINCT CASE WHEN (est_ligne_facturee = '0' and rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '2') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires valorisé en soins des séjours ambulatoires (0 nuits)|-TS2|NBSEJ||||||| +1|CTI_T2A_NB2_FAC|FACTURATION_CLINIQUE|NB Séjours CA SOINS facturés [AMBU]|Nombre séjours Soins facturés (ambulatoire)|Nombre séjours Soins facturés (ambulatoire)|DISTINCT CASE WHEN (est_ligne_facturee = '1' and rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '2') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires facturé en soins des séjours ambulatoires (0 nuits)|-TS2|NBSEJ||||||| +1|CTI_T2A_NB2_TOT|FACTURATION_CLINIQUE|NB Séjours CA SOINS Facturés + Valorisés [AMBU]|Nombre séjours Soins Facturés + Valorisés (ambulatoire)|Nombre séjours Soins Facturés + Valorisés (ambulatoire)|DISTINCT CASE WHEN ( rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '2') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires facturé et valorisé en soins des séjours ambulatoires (0 nuits)|-TS2|NBSEJ||||||| +1|CTI_T2A_NB3_ENC|FACTURATION_CLINIQUE|NB Séjours CA SOINS Valorisés [EXT]|Nombre séjours Soins Valorisés (Externe)|Nombre séjours Soins Valorisés (Externe)|DISTINCT CASE WHEN (est_ligne_facturee = '0' and rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '3') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires valorisé en soins des séjours externes|-TS3|NBSEJ||||||| +1|CTI_T2A_NB3_FAC|FACTURATION_CLINIQUE|NB Séjours CA SOINS facturés [EXT]|Nombre séjours Soins facturés (Externe)|Nombre séjours Soins facturés (Externe)|DISTINCT CASE WHEN (est_ligne_facturee = '1' and rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '3') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires facturé en soins des séjours externes|-TS3|NBSEJ||||||| +1|CTI_T2A_NB3_TOT|FACTURATION_CLINIQUE|NB Séjours CA SOINS Facturés + Valorisés [EXT]|Nombre séjours Soins Facturés + Valorisés (Externe)|Nombre séjours Soins Facturés + Valorisés (Externe)|DISTINCT CASE WHEN ( rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '3') THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires facturé et valorisé en soins des séjours externes|-TS3|NBSEJ||||||| +1|CTI_T2A_NB5_ENC|FACTURATION_CLINIQUE|NB Séjours CA SOINS Valorisés [SEANCE]|Nombre séances Valorisés (séances)|Nombre séances Valorisés (séances)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '5' and est_ligne_facturee = '0' THEN nb_rubrique_encours ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires valorisé en soins des séances|-TS5|NBSEJ||||||| +1|CTI_T2A_NB5_FAC|FACTURATION_CLINIQUE|NB Séjours CA SOINS facturés [SEANCE]|Nombre séances facturées (séances)|Nombre séances facturées (séances)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '5' and est_ligne_facturee = '1' THEN nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires facturé en soins des séances|-TS5|NBSEJ||||||| +1|CTI_T2A_NB5_TOT|FACTURATION_CLINIQUE|NB Séjours CA SOINS Facturés + Valorisés [SEANCE]|Nombre séances Facturées + Valorisées (séances)|Nombre séances Facturées + Valorisées (séances)|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] and type_sejour = '5' THEN nb_rubrique_encours + nb_rubrique_facture ELSE 0 END|1|SUM||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires facturé et valorisé en soins des séances|-TS5|NBSEJ||||||| +1|CTI_T2A_NB_ENC|FACTURATION_CLINIQUE|NB Séjours CA SOINS Valorisés|Nombre séjours Soins Valorisés|Nombre séjours Soins Valorisés|DISTINCT CASE WHEN (est_ligne_facturee = '0' and rubrique_facturation_id IN [LISTE:CTI_T2A_R]) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires valorisé en soins des séjours|NBSEJ|||||||| +1|CTI_T2A_NB_FAC|FACTURATION_CLINIQUE|NB Séjours CA SOINS facturés|Nombre séjours Soins facturés|Nombre séjours Soins facturés|DISTINCT CASE WHEN (est_ligne_facturee = '1' and rubrique_facturation_id IN [LISTE:CTI_T2A_R]) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires facturé en soins des séjours|NBSEJ|||||||| +1|CTI_T2A_NB_TOT|FACTURATION_CLINIQUE|NB Séjours CA SOINS Facturés + Valorisés|Nombre séjours Soins Facturés + Valorisés|Nombre séjours Soins Facturés + Valorisés|DISTINCT CASE WHEN ( rubrique_facturation_id IN [LISTE:CTI_T2A_R]) THEN no_sejour ELSE NULL END|1|COUNT||0|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de séjours du Chiffre d'Affaires facturé et valorisé en soins des séjours|NBSEJ|||||||| +1|CTI_TXAMBFOR|*CALC|Taux ambulatoires forains|Taux ambulatoires forains|Taux ambulatoires forains|(base.cti_division([2] , [1]) * 100)|1|*CALC|#,00%|0| | | | | | |CTI_NBAMB|CTI_NBAMBFOR||||||||||||||||||||0|||||||||||Taux ambulatoires forains|-TS2|NBENT|TAUX|||||| +1|CTI_TXCHP_NBJ|*CALC|Ratio CPC|Ratio Chambre particulière|Ratio Chambre particulière|(base.cti_division([1] , [2]) * 100)|1|*CALC|#,00%|0| | | | | | |CTI_NBCHPO|CTI_NBJSN||||||||||||||||||||0|||||||||||Part du nombre de journées en chambre particulière dans le nombre de journées hospitalisées|-TS1|NBJOU||||||| +1|CTI_TXFAC_SEJ|*CALC|Taux facturation des séjours|Taux de facturation des séjours|Tx sej fac|base.cti_division([2], [1]) * 100.0|1|*CALC|#,00%|60| | | | | | |CTI_NBSEJO|||||||||||||||||||||0|||||||||||Part du nombre de séjours facturés dans le nombre de séjours|NBSEJ|TAUX||||||| +1|CTI_TX_AM|*CALC|Taux occupation [AMBU]|Taux D'occupation (Ambulatoire)|Taux D'occupation (Ambulatoire)|(base.cti_division([1] , [2]) * 100)|1|*CALC|#,00%|0| | | | | | |CTI_NBAMB|CTI_NBPLACES_A||||||||||||||||||||0|||||||||||Taux d'occupation des places des séjours ambulatoires (0 nuits)|-TS2|NBENT|TAUX|-TS1||||| +1|CTI_TX_CP_HO|*CALC|Taux occupation CPC [HOSP]|Taux D'occupation CP (Hospitalisés)|Taux D'occupation CP (Hospitalisés)|(base.cti_division([1] , [2]) * 100)|1|*CALC|#,00%|0| | | | | | |CTI_NBJCPSN|CTI_NBPLACES_CP_H||||||||||||||||||||0|||||||||||Taux d'occupation des places en chambre particulière des séjours hospitalisés (1 nuit minimum)|-TS1|NBJOU|TAUX|||||| +1|CTI_TX_FAC|*CALC|Taux facturation des sorties|Taux de facturation des sorties|Tx fac|base.cti_division([1], [2]) * 100.0|1|*CALC|#,00%|60| | | | | | ||CTI_NBSOR_SAES||||||||||||||||||||0|||||||||||Taux des sorties facturées sur toutes les sorties|-TS1|-TS2|-TS3|-TS5|NBSOR|||| +1|CTI_TX_HO|*CALC|Taux occupation [HOSP]|Taux D'occupation (Hospitalisés)|Taux D'occupation (Hospitalisés)|(base.cti_division([1] , [2]) * 100)|1|*CALC|#,00%|0| | | | | | |CTI_NBJSN|CTI_NBPLACES_H||||||||||||||||||||0|||||||||||Taux d'occupation des places des séjours hospitalisés (1 nuit minimum)|-TS1|NBJOU|TAUX|||||| +1|CTI_TX_HOAM|*CALC|Taux occupation (Hospitalisés - Ambulatoire)|Taux D'occupation (Hospitalisés - Ambulatoire)|Taux D'occupation (Hospitalisés - Ambulatoire)|(base.cti_division([1] , [2]) * 100)|1|*CALC|#,00%|0| | | | | | |CTI_NB2_JSN|CTI_NBPLACES_HA||||||||||||||||||||0|||||||||||Taux d'occupation des places des séjours hospitalisés et ambulatoires|-TS1|-TS2|NBJOU|TAUX||||| +1|CTI_TX_HOCOMP|*CALC|SSR - Taux occupation [HOSP]|Taux D'occupation (Hospitalisés)|Taux D'occupation (Hospitalisés)|(base.cti_division([1] , [2]) * 100)|1|*CALC|#,00%|0| | | | | | |CTI_NB4_JSNCP|CTI_NBPLACES_H||||||||||||||||||||0|||||||||||Taux d'occupation des places des séjours hospitalisés (1 nuit minimum)|-TS1|-TS2|-TS5|||||| +1|CTI_TX_JOUR_FAC|*CALC|Taux Jours facturées (jour de sortie non inclus)|Taux de journées facturées (jour de sortie non inclus)|Tx Jour Fac|base.cti_division([1], [2]) * 100.0|1|*CALC|#,0%|0| | | | | | |CTI_JOUR_FAC|CTI_NBJSNS||||||||||||||||||||0|||||||||||Taux du nombre de journées facturées sur le nombre de journées des séjours hospitalisés sortis|-TS1|NBJOU|TAUX|||||| +1|CTI_UCD_MT_CPT|FACTURATION_CLINIQUE|CA MEDICAMENTS Comptabilisé|Montant Médicaments Comptabilisé|Montant Médicaments Comptabilisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_UCD_R] THEN montant_comptabilise ELSE 0 END|1|SUM|#E|80|4| | | | |4||||||||||||||||||||||0|||||||||||Chiffre d'Affaires comptabilisé des médicaments|CACP|||||||| +1|CTI_UCD_MT_ENC|FACTURATION_CLINIQUE|CA MEDICAMENTS Valorisé|Montant Médicaments Valorisé|Montant Médicaments Valorisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_UCD_R] THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des médicaments|CAV|||||||| +1|CTI_UCD_MT_FAC|FACTURATION_CLINIQUE|CA MEDICAMENTS Facturé|Montant Médicaments Facturé|Montant Médicaments Facturé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_UCD_R] THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des médicaments|CAF|||||||| +1|CTI_UCD_MT_TOT|FACTURATION_CLINIQUE|CA MEDICAMENTS Facturé + Valorisé|Montant Médicaments Facturé + Valorisé|Montant Médicaments Fac + Val|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_UCD_R] THEN montant_encours + montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des médicaments|CAVF|||||||| +1|CTI_UCD_RUB_FAC|FACTURATION_CLINIQUE|NB Rubriques MEDICAMENT|Nombre de médicaments [UCD]|Nombre de médicaments [UCD]|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_UCD_R] THEN nb_rubrique_facture ELSE 0 END|1|SUM|#|60|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Nombre de rubriques de médicaments présentes sur la période|NBRUB|||||||| +1|CTI_URG_MT_ENC|FACTURATION_CLINIQUE|CA URGENCES Valorisé|Montant urgences Valorisé|Montant urgences Valorisé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_URG_R] THEN montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires valorisé des urgences|CAV|||||||| +1|CTI_URG_MT_FAC|FACTURATION_CLINIQUE|CA URGENCES Facturé|Montant urgences Facturé|Montant urgences Facturé|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_URG_R] THEN montant_facture ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé des urgences|CAF|||||||| +1|CTI_URG_MT_TOT|FACTURATION_CLINIQUE|CA URGENCES Facturé + Valorisé|Montant urgences Facturé + Valorisé|Montant urgences Fact + Val|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_URG_R] THEN montant_facture + montant_encours ELSE 0 END|1|SUM|#E|80|1|2|3|4| | ||||||||||||||||||||||0|||||||||||Chiffre d'Affaires facturé et valorisé des urgences|CAVF|||||||| +1|CTI_URG_RUB_FAC|FACTURATION_CLINIQUE|NB Rubriques URGENCES|Nombre rubriques urgences|Nombre rubriques urgences|CASE WHEN rubrique_facturation_id IN [LISTE:CTI_URG_R] THEN nb_rubrique_facture ELSE 0 END|1|SUM|#|60|1|2|3|4| | ||||||||||||||||||||||0||||||||||||NBRUB|||||||| diff --git a/db/data2/dbdata_activite_t_kiwee_params.csv b/db/data2/dbdata_activite_t_kiwee_params.csv new file mode 100644 index 0000000..43e32fc --- /dev/null +++ b/db/data2/dbdata_activite_t_kiwee_params.csv @@ -0,0 +1,2 @@ +code|texte|valeur|description +RELANCE_HONORAIRE_PAT|Relance souhaitée pour les dossiers patient avec solde honoraire positif|t|Coché = Oui, on envoie vers kiwee les dossiers ayant un solde honoraire positif pour relance. Non coché = Non, on envoie que les dossiers avec solde établissement positif diff --git a/db/data2/dbdata_activite_t_listes.csv b/db/data2/dbdata_activite_t_listes.csv new file mode 100644 index 0000000..e38f945 --- /dev/null +++ b/db/data2/dbdata_activite_t_listes.csv @@ -0,0 +1,17 @@ +oid|texte|chapitre|code|is_cti|show_omit|utilisateur_createur|est_partagee_modification|table_name|contenu_by_code|exclude_code|include_code|contenu_non_replicable_ailleurs +1|Portail Médecin - Actes à exclure de la liste pour le top 20 Actes CCAM|Portail|ACT_PORT_CCAM|1|1|CTI|1|t_actes|0|||0 +1|Portail Médecin - Actes à exclure de la liste pour le top 20 Actes NGAP|Portail|ACT_PORT_NGAP|1|1|CTI|1|t_actes|0|||0 +1|CTI : Dialyse||CTI_DIA_R|0|0|CTI|1|t_rubriques_facturation|0|||1 +1|CTI : CA Divers||CTI_DIVERS_R|0|0|CTI|1|t_rubriques_facturation|1||[CLASSE:CTI_RUB_2:S06]|1 +1|Etages inappropriés||CTI_ETA_KO|0|0|CTI|1|t_etages|0|||1 +1|Médecins inappropriés||CTI_MED_KO|0|0|CTI|1|t_medecins_administratifs|0|||1 +1|CTI : Prothèses||CTI_PROTHESE_R|0|0|CTI|1|t_rubriques_facturation|1||[CLASSE:CTI_RUB_2:S22]|1 +1|CTI : CA Séjours||CTI_RUBMED_R|0|1|CTI|1|t_rubriques_facturation|1||[CLASSE:CTI_RUB_2:S01]|1 +1|Services inappropriés||CTI_SER_KO|0|0|CTI|1|t_services_facturation|0|||1 +1|CTI : Forfaits SE (SE à SE4)||CTI_SE_R|0|0|CTI|1|t_rubriques_facturation|1||[CLASSE:CTI_RUB_2:S03]|1 +1|CTI : Chambre particulière.||CTI_SHO_R|0|0|CTI|1|t_rubriques_facturation|1||[CLASSE:CTI_RUB_2:S11]|1 +1|CTI : Suppléments Hoteliers||CTI_SUPHOT_R|0|0|CTI|1|t_rubriques_facturation|1||[CLASSE:CTI_RUB_2:S12]|1 +1|CTI : CA Soins||CTI_T2A_R|0|1|CTI|1|t_rubriques_facturation|1||[CLASSE:CTI_RUB_2:S01][CLASSE:CTI_RUB_2:S02][CLASSE:CTI_RUB_2:S03][CLASSE:CTI_RUB_2:S04][CLASSE:CTI_RUB_2:S05][CLASSE:CTI_RUB_2:S06]|1 +1|CTI : Médicaments||CTI_UCD_R|0|0|CTI|1|t_rubriques_facturation|1||[CLASSE:CTI_RUB_2:S21]|1 +1|Unités Fonctionnelles Ambulatoires|Expert|CTI_UF_AMBU|1|0|CTI|1|t_unites_fonctionnelles|0|||1 +1|CTI : Urgences||CTI_URG_R|0|0|CTI|1|t_rubriques_facturation|1||[CLASSE:CTI_RUB_2:S04]|1 diff --git a/db/data2/dbdata_activite_t_listes_tables.csv b/db/data2/dbdata_activite_t_listes_tables.csv new file mode 100644 index 0000000..741c779 --- /dev/null +++ b/db/data2/dbdata_activite_t_listes_tables.csv @@ -0,0 +1,106 @@ +oid|name|texte|select_cmd|code +1|t_actes|Actes|"(SELECT t_actes_c.oid, t_actes_c.code, t_actes_c.texte, ccam_regroupement_code_1 || CASE WHEN t_actes_c.classant = 'Y' THEN ' (classant)' ELSE '' END as complement, 'O' as utilise +FROM activite.t_actes_c +WHERE t_actes_c.oid > 0 AND nomenclature IN ( 'CCAM', 'NGAP') AND t_actes_c.oid in (SELECT oid FROM activite.p_oids WHERE code_table = 'acte_h') ) +UNION +(SELECT t_actes_c.oid, t_actes_c.code, t_actes_c.texte, ccam_regroupement_code_1 || CASE WHEN t_actes_c.classant = 'Y' THEN ' (classant)' ELSE '' END as complement, 'N' as utilise +FROM activite.t_actes_c +WHERE t_actes_c.oid > 0 AND nomenclature IN ( 'CCAM', 'NGAP') AND t_actes_c.oid not in (SELECT oid FROM activite.p_oids WHERE code_table = 'acte_h') ) +ORDER BY code"|ACTE +1|t_activites|"[DICT.ACTI.ACTIVITE#3] +"|(SELECT oid, code, texte, ''::text as complement, 'O' as utilise FROM activite.t_activites WHERE oid > 0 AND oid in (SELECT oid FROM activite.p_oids WHERE code_table = 'activite') UNION SELECT oid, code, texte, ''::text as complement, 'N' as utilise FROM activite.t_activites WHERE oid > 0 AND oid not in (SELECT oid FROM activite.p_oids WHERE code_table = 'activite') )ORDER BY code|ACTIVITE +1|t_ages|Ages|SELECT oid, code, texte, ''::text as complement, 'O'::text as utilise FROM base.t_ages ORDER BY code|AGE +1|t_budget_cle|Clés budgétaires|"SELECT oid, code AS code, texte AS texte, +''::text as complement, +'O' as utilise +FROM activite.t_budget_cle +WHERE oid > 0 "|BUDGETCLE +1|t_codes_postaux|Codes postaux|"( +SELECT t_codes_postaux.oid, t_codes_postaux.code, t_codes_postaux.texte, '' as complement, 'O' as utilise +FROM base.t_codes_postaux +WHERE + t_codes_postaux.oid > 0 + AND t_codes_postaux.oid in (SELECT oid FROM activite.p_oids WHERE code_table='c_postaux') +UNION +SELECT t_codes_postaux.oid, t_codes_postaux.code, t_codes_postaux.texte, '' as complement, 'N' as utilise +FROM base.t_codes_postaux +WHERE + t_codes_postaux.oid > 0 + AND t_codes_postaux.oid not in (SELECT oid FROM activite.p_oids WHERE code_table='c_postaux') +) +ORDER BY code"|CODEPOST +1|t_compte|Comptes produit|"SELECT t_compte.oid AS oid, code AS code, texte AS texte, +''::text as complement, +(CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END)::text as utilise +FROM activite.t_compte +LEFT JOIN activite.p_oids ON code_table='compte' AND t_compte.oid = p_oids.oid +WHERE t_compte.oid > 0 "|COMPTE +1|t_durees_sejour|Durées de séjour|SELECT oid, code, texte, ''::text as complement, 'O'::text as utilise FROM base.t_durees_sejour ORDER BY code|DURSEJ +1|t_etages|[DICT.ACTI.ETAGE#31]|(SELECT oid, code, texte, ''::text as complement, 'O' as utilise FROM activite.t_etages WHERE oid in (SELECT oid FROM activite.p_oids WHERE code_table = 'etage') UNION SELECT oid, code, texte, ''::text as complement, 'N' as utilise FROM activite.t_etages WHERE oid not in (SELECT oid FROM activite.p_oids WHERE code_table = 'etage') )ORDER BY code|ETAGE +1|t_etat_sejour|Etat de séjour|SELECT oid, code, texte, ''::text as complement, 'O'::text as utilise FROM activite.t_etat_sejour ORDER BY code|ETATSEJOUR +1|t_expert_controles|Controles Expert|"SELECT oid, code, texte, ''::text as complement, 'O'::text as utilise +FROM activite.t_expert_controle WHERE oid > 0 +ORDER BY code"|EXPERTCTL +1|t_filiere_soin|Filières de soin|"SELECT oid, code, texte, ''::text as complement, + CASE WHEN oid in (SELECT oid FROM activite.p_oids WHERE code_table IN ('filiere_soin')) THEN 'O' ELSE 'N' END as utilise + FROM activite.t_filiere_soin + ORDER BY 2"|FILIERESOIN +1|t_finess|Finess|SELECT oid, code, texte, ''::text as complement, 'O' as utilise FROM activite.t_finess_c WHERE oid > 0 ORDER BY code, texte|FINESS +1|t_forme_activite|Formes d'activité|"SELECT oid, code, texte, ''::text as complement, + CASE WHEN oid in (SELECT oid FROM activite.p_oids WHERE code_table IN ('forme_activite')) THEN 'O' ELSE 'N' END as utilise + FROM activite.t_forme_activite + ORDER BY 2"|FORMEACTIVITE +1|t_ghm_c|GHM|"SELECT t_ghm_c.ghm_id AS oid, ghm_code AS code, ghm_texte AS texte, +cas_texte as complement, +(CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END)::text as utilise +FROM activite.t_ghm_c +LEFT JOIN activite.p_oids ON code_table='ghm' AND t_ghm_c.ghm_id = p_oids.oid +WHERE t_ghm_c.ghm_id > 0 "|GHM +1|t_ghs|GHS|(SELECT oid, code, texte, ''::text as complement, 'O' as utilise FROM base.t_ghs WHERE oid > 0 AND oid in (SELECT oid FROM activite.p_oids WHERE code_table = 'ghs') UNION SELECT oid, code, texte, ''::text as complement, 'N' as utilise FROM base.t_ghs WHERE oid > 0 AND code > 0 AND oid not in (SELECT oid FROM activite.p_oids WHERE code_table = 'ghs') ) ORDER BY code|GHS +1|t_gme_c|GME|"SELECT t_gme_c.gme_id AS oid, gme_code AS code, gme_texte AS texte,''::text as complement , +(CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END)::text as utilise +FROM activite.t_gme_c +LEFT JOIN activite.p_oids ON code_table='gme' AND t_gme_c.gme_id = p_oids.oid +WHERE t_gme_c.gme_id > 0"|GME +1|t_lits|Lits|"( +SELECT t_lits.oid, t_etages.code || '-' || t_lits.code AS code, t_etages.texte || ' lit ' || t_lits.texte AS texte, ''::text as complement, 'O' as utilise FROM activite.t_lits JOIN activite.t_etages ON etage_id = t_etages.oid WHERE t_lits.oid > 0 AND t_lits.oid in (SELECT oid FROM activite.p_oids WHERE code_table = 'lit') + +UNION + +SELECT t_lits.oid, t_etages.code || '-' || t_lits.code AS code, t_etages.texte || ' lit ' || t_lits.texte AS texte, ''::text as complement, 'N' as utilise FROM activite.t_lits JOIN activite.t_etages ON etage_id = t_etages.oid WHERE t_lits.oid > 0 AND t_lits.oid NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'lit') + +) ORDER BY code"|LIT +1|t_medecins_administratifs|Médecins|"SELECT t_medecins_administratifs.oid + ,t_medecins_administratifs.code + ,t_medecins_administratifs.nom || ' ' || t_medecins_administratifs.prenom AS texte + ,COALESCE(t_specialites_medecin.code || ' ' || t_specialites_medecin.texte,'')::text AS complement + ,CASE WHEN t_medecins_administratifs.oid IN (SELECT p_oids.oid FROM activite.p_oids WHERE code_table IN ('medecin_s','medecin_x') ) THEN 'O' ELSE 'N' END AS utilise + FROM activite.t_medecins_administratifs + LEFT JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid + LEFT JOIN base.t_specialites_medecin ON t_medecins.specialite_id = t_specialites_medecin.oid + ORDER BY t_medecins_administratifs.code"|MEDECIN +1|t_medecins_traitants_administratifs|Médecins traitants|"SELECT t_medecins_traitants_administratifs.oid + ,t_medecins_traitants_administratifs.code + ,t_medecins_traitants_administratifs.nom || ' ' || t_medecins_traitants_administratifs.prenom AS texte + ,COALESCE(t_medecins_traitants_administratifs.code || ' ' || t_medecins_traitants_administratifs.no_rpps,'')::text AS complement + ,CASE WHEN t_medecins_traitants_administratifs.oid IN (SELECT p_oids.oid FROM activite.p_oids WHERE code_table IN ('medecin_t') ) THEN 'O' ELSE 'N' END AS utilise + FROM activite.t_medecins_traitants_administratifs + LEFT JOIN base.t_medecins ON t_medecins_traitants_administratifs.medecin_id = t_medecins.oid + LEFT JOIN base.t_specialites_medecin ON t_medecins.specialite_id = t_specialites_medecin.oid + ORDER BY t_medecins_traitants_administratifs.code"|MEDECIN_TRAITANT +1|t_prestations|Prestations Cliniques|(SELECT oid, code, texte, norme as complement, 'O' as utilise FROM activite.t_prestations WHERE oid in (SELECT oid FROM activite.p_oids WHERE code_table = 'prestation_c') UNION SELECT oid, code, texte, norme as complement, 'N' as utilise FROM activite.t_prestations WHERE oid not in (SELECT oid FROM activite.p_oids WHERE code_table = 'prestation_c') ) ORDER BY code|PRESTA_C +1|t_prestations|Prestations Honoraires|(SELECT oid, code, texte, norme as complement, 'O' as utilise FROM activite.t_prestations WHERE oid > 0 AND clinique_honoraire IN ('H', '') AND oid in (SELECT oid FROM activite.p_oids WHERE code_table = 'prestation_h') UNION SELECT oid, code, texte, norme as complement, 'N' as utilise FROM activite.t_prestations WHERE oid > 0 AND clinique_honoraire IN ('H', '') AND oid not in (SELECT oid FROM activite.p_oids WHERE code_table = 'prestation_h') )ORDER BY code|PRESTA_H +1|t_rejets_noemie|Rejets NOEMIE|SELECT oid, code, texte, ''::text as complement, 'O' as utilise FROM activite.t_rejets_noemie WHERE oid > 0 ORDER BY code, texte|REJETNOEMI +1|t_rubriques_facturation|Rubriques de facturation|(SELECT oid, code, texte, ''::text as complement, 'O' as utilise FROM activite.t_rubriques_facturation WHERE oid > 0 AND oid in (SELECT oid FROM activite.p_oids WHERE code_table = 'rubrique_c') UNION SELECT oid, code, texte, ''::text as complement, 'N' as utilise FROM activite.t_rubriques_facturation WHERE oid > 0 AND oid not in (SELECT oid FROM activite.p_oids WHERE code_table = 'rubrique_c') ) ORDER BY code|RUBRIQUE +1|t_services_facturation|[DICT.ACTI.SERVICE#31]|(SELECT oid, code, texte, ''::text as complement, 'O' as utilise FROM activite.t_services_facturation WHERE oid > 0 AND oid in (SELECT oid FROM activite.p_oids WHERE code_table = 'service') UNION SELECT oid, code, texte, ''::text as complement, 'N' as utilise FROM activite.t_services_facturation WHERE oid > 0 AND oid not in (SELECT oid FROM activite.p_oids WHERE code_table = 'service') )ORDER BY code|SERVICE_F +1|t_tiers_payant|Tiers payant|"(SELECT t_tiers_payant.oid, t_tiers_payant.code, t_tiers_payant.texte as texte, t_types_tiers_payant.texte as complement, 'O' as utilise +FROM activite.t_tiers_payant, activite.t_types_tiers_payant +WHERE t_tiers_payant.oid > 0 AND t_tiers_payant.type_tiers_payant = t_types_tiers_payant.code + AND t_tiers_payant.oid in (SELECT oid FROM activite.p_oids WHERE code_table = 'tiers_payant' ) +UNION +SELECT t_tiers_payant.oid, t_tiers_payant.code, t_tiers_payant.texte as texte, t_types_tiers_payant.texte , 'N' as utilise +FROM activite.t_tiers_payant , activite.t_types_tiers_payant +WHERE t_tiers_payant.oid > 0 AND t_tiers_payant.type_tiers_payant = t_types_tiers_payant.code AND (t_tiers_payant.oid not in (SELECT oid FROM activite.p_oids WHERE code_table = 'tiers_payant'))) ORDER BY code"|TIERSP +1|t_type_sejour|Types de séjour|SELECT oid, code, texte, ''::text as complement, 'O'::text as utilise FROM activite.t_type_sejour ORDER BY code|TYPESEJOUR +1|t_unites_fonctionnelles|[DICT.ACTI.UF#31]|(SELECT oid, code, texte, ''::text as complement, 'O' as utilise FROM activite.t_unites_fonctionnelles WHERE oid > 0 AND oid in (SELECT oid FROM activite.p_oids WHERE code_table = 'unite_fonctionnelle') UNION SELECT oid, code, texte, ''::text as complement, 'N' as utilise FROM activite.t_unites_fonctionnelles WHERE oid > 0 AND oid not in (SELECT oid FROM activite.p_oids WHERE code_table = 'unite_fonctionnelle') ) ORDER BY code|UF +1|t_unites_medicales|[DICT.ACTI.UM#31]|(SELECT oid, code, texte, ''::text as complement, 'O' as utilise FROM activite.t_unites_medicales WHERE oid > 0 AND oid in (SELECT oid FROM activite.p_oids WHERE code_table = 'unite_medicale') UNION SELECT oid, code, texte, ''::text as complement, 'N' as utilise FROM activite.t_unites_medicales WHERE oid > 0 AND oid not in (SELECT oid FROM activite.p_oids WHERE code_table = 'unite_medicale') ) ORDER BY code|UM diff --git a/db/data2/dbdata_activite_t_prestations.csv b/db/data2/dbdata_activite_t_prestations.csv new file mode 100644 index 0000000..e1cbfb7 --- /dev/null +++ b/db/data2/dbdata_activite_t_prestations.csv @@ -0,0 +1,508 @@ +oid|code|texte|texte_court|norme +0|***|Non renseignee|Non renseignee| +1|AAD|Autres accessoires traitement a domicile|Autres accessoires traitement a domicile|B2 +1|AAR|Appareillage assistance respiratoire|Appareillage assistance respiratoire|B2 +1|ABA|Transport par ambulances agrees|Transport par ambulances agrees|B2 +1|ABG|Ambulance agree de garde|Ambulance agree de garde|B2 +1|ACO|Actes d'obstetrique|Actes d'obstetrique|B2 +1|ACR|Prime accreditation specialiste|Prime accreditation specialiste|B2 +1|ADA|Actes d'anesthesie|Actes d'anesthesie|B2 +1|ADC|Actes de chirurgie|Actes de chirurgie|B2 +1|ADE|Actes d'echographie|Actes d'echographie|B2 +1|ADI|Actes d'imagerie|Actes d'imagerie|B2 +1|ADT|Aide au demarrage teletransmission|Aide au demarrage teletransmission|B2 +1|AIS|Actes infirmiers de soins|Actes infirmiers de soins|B2 +1|AMC|Actes de kinesitherapie en etablissement|Actes de kinesitherapie en etablissement|B2 +1|AMD|Intervention+anesthesie duree < ou = 12|Intervention+anesthesie duree < ou = 12|B2 +1|AMF|Forfait public ivg medicamenteuse|Forfait public ivg medicamenteuse|B2 +1|AMI|Soins infirmiers|Soins infirmiers|B2 +1|AMK|Actes de kinesitherapie|Actes de kinesitherapie|B2 +1|AMO|Seances d'orthophonie|Seances d'orthophonie|B2 +1|AMP|Soins de pedicurie|Soins de pedicurie|B2 +1|AMS|Suivi des actes de kinesitherapie|Suivi des actes de kinesitherapie|B2 +1|AMT|Aide a la maintenance teletransmission|Aide a la maintenance teletransmission|B2 +1|AMY|Seances d'orthoptie|Seances d'orthoptie|B2 +1|ANP|Forfait activite non programmee|Forfait activite non programmee|B2 +1|ANT|Supplement antepartum|Supplement antepartum|B2 +1|APD|Intervention+anesthesie,24 > duree > 12|Intervention+anesthesie,24 > duree > 12|B2 +1|APE|Administration de produits et prestations en environnement hospitalier|Administration de produits et prestations en environnement hospitalier|B2 +1|APT|Aide portable teletransmission|Aide portable teletransmission|B2 +1|ARD|Aide adhesion rapide au dispositif|Aide adhesion rapide au dispositif|B2 +1|ARE|Frais d'anesthesie et de reanimation|Frais d'anesthesie et de reanimation|B2 +1|ARO|Generateur d'aerosol|Generateur d'aerosol|B2 +1|AS1|Forfait hospitalisation a temps partiel groupe 1|Forfait hospitalisation a temps partiel groupe 1|B2 +1|AS2|Forfait hospitalisation a temps partiel groupe 2|Forfait hospitalisation a temps partiel groupe 2|B2 +1|AS3|Forfait hospitalisation a temps partiel 15 %|Forfait hospitalisation a temps partiel 15 %|B2 +1|AS4|Forfait hospitalisation a temps partiel groupe 2 + fas1|Forfait hospitalisation a temps partiel groupe 2 + fas1|B2 +1|AS5|Forfait hospitalisation a temps partiel groupe 2 + fas2|Forfait hospitalisation a temps partiel groupe 2 + fas2|B2 +1|ASR|Astreinte|Astreinte|B2 +1|ATD|Complement at 150% dentaire|Complement at 150% dentaire|B2 +1|ATL|Complement at 150% lpp|Complement at 150% lpp|B2 +1|ATM|Actes techniques medicaux|Actes techniques medicaux|B2 +1|ATP|Autre moyen de transport|Autre moyen de transport|B2 +1|ATU|Forfait d'accueil et de traitement des urgences|Forfait d'accueil et de traitement des urgences|B2 +1|AXI|Actes de prophylaxie et prevention|Actes de prophylaxie et prevention|B2 +1|B|Actes de biologie|Actes de biologie|B2 +1|BDC|Consultation de prevention bucco-dentaire|Consultation de prevention bucco-dentaire|B2 +1|BR2|Consultation et radio 2 cliches de prevention bucco-dentaire|Consultation et radio 2 cliches de prevention bucco-dentaire|B2 +1|BR4|Consultation et radio 4 cliches de prevention bucco-dentaire|Consultation et radio 4 cliches de prevention bucco-dentaire|B2 +1|C|Consultation|Consultation|B2 +1|CA|Consultation approfondie|Consultation approfondie|B2 +1|CBM|Contrat de bonnes pratiques en zone de montagne|Contrat de bonnes pratiques en zone de montagne|B2 +1|CBP|Forfait contrat de bonnes pratiques|Forfait contrat de bonnes pratiques|B2 +1|CBR|Contrat de bonnes pratiques en zone rurale|Contrat de bonnes pratiques en zone rurale|B2 +1|CBU|Contrat de bonnes pratiques en zone urbaine|Contrat de bonnes pratiques en zone urbaine|B2 +1|CDE|Consultation specifique de depistage|Consultation specifique de depistage|B2 +1|CDF|Centre sante dentaire optant - forfait fin|Centre sante dentaire optant - forfait fin|B2 +1|CDI|Centre sante dentaire optant - forfait debut|Centre sante dentaire optant - forfait debut|B2 +1|CDS|Centre sante dentaire optant - forfait suivi|Centre sante dentaire optant - forfait suivi|B2 +1|CG|Consultation suivi de grossesse|Consultation suivi de grossesse|B2 +1|CID|Centre sante infirmier optant - forfait debut|Centre sante infirmier optant - forfait debut|B2 +1|CIF|Centre sante infirmier optant - forfait fin|Centre sante infirmier optant - forfait fin|B2 +1|CMD|Centre sante medical optant - forfait debut|Centre sante medical optant - forfait debut|B2 +1|CMF|Centre sante medical optant - forfait fin|Centre sante medical optant - forfait fin|B2 +1|CMT|Centre sante medical optant - forfait tacite|Centre sante medical optant - forfait tacite|B2 +1|CNP|Consultation neuro-psychiatre|Consultation neuro-psychiatre|B2 +1|COR|Podo-ortheses|Podo-ortheses|B2 +1|CP1|Forfait contrat de bonnes pratiques 1|Forfait contrat de bonnes pratiques 1|B2 +1|CP2|Forfait contrat de bonnes pratiques 2|Forfait contrat de bonnes pratiques 2|B2 +1|CP3|Forfait contrat de bonnes pratiques 3|Forfait contrat de bonnes pratiques 3|B2 +1|CP6|Contrat de bonnes pratiques transporteurs 2006|Contrat de bonnes pratiques transporteurs 2006|B2 +1|CP7|Contrat de bonnes pratiques transporteurs 2007|Contrat de bonnes pratiques transporteurs 2007|B2 +1|CP8|Contrat de bonnes pratiques transporteurs 2008|Contrat de bonnes pratiques transporteurs 2008|B2 +1|CPC|Frais de chambre particuliere pour convenance personnelle|Frais de chambre particuliere pour convenance personnelle|B2 +1|CPH|Copie d'ordonnance|Copie d'ordonnance|B2 +1|CPL|Forfait contrat de bonnes pratiques laboratoire|Forfait contrat de bonnes pratiques laboratoire|B2 +1|CPO|Coordination prelevement organe|Coordination prelevement organe|B2 +1|CPU|Contrat pratique versement unique|Contrat pratique versement unique|B2 +1|CRC|Complement de remuneration chef de clinique|Complement de remuneration chef de clinique|B2 +1|CRD|Majoration consultation regulee dimanche et ferie|Majoration consultation regulee dimanche et ferie|B2 +1|CRM|Majoration consultation regulee milieu de nuit|Majoration consultation regulee milieu de nuit|B2 +1|CRN|Majoration consultation regulee de nuit|Majoration consultation regulee de nuit|B2 +1|CRS|Majoration consultation regulee du samedi apres-midi|Majoration consultation regulee du samedi apres-midi|B2 +1|CS|Consultation specialiste|Consultation specialiste|B2 +1|CSC|Consultation specifique au cabinet par un cardiologue ou un medecin specialiste en pathologie cardio-vasculaire|Consultation specifique au cabinet par un cardiologue ou un medecin specialiste en pathologie cardio-vasculaire|B2 +1|CSI|Forfait contrat de sante publique infirmier|Forfait contrat de sante publique infirmier|B2 +1|CSL|Forfait contrat de sante publique laboratoire|Forfait contrat de sante publique laboratoire|B2 +1|CST|Contrat de surveillance thermal|Contrat de surveillance thermal|B2 +1|D|Actes dentaires|Actes dentaires|B2 +1|D01|Hemodialyse en centre|Hemodialyse en centre|B2 +1|D02|Autodialyse simple ou assistee|Autodialyse simple ou assistee|B2 +1|D03|Entrainement hemodialyse a domicile et a l'autodialyse|Entrainement hemodialyse a domicile et a l'autodialyse|B2 +1|D04|Entrainement a la dpa|Entrainement a la dpa|B2 +1|D05|Entrainement a la dpca|Entrainement a la dpca|B2 +1|D06|Hemodialyse a domicile|Hemodialyse a domicile|B2 +1|D07|Dialyse peritoneale automatisee (dpa)|Dialyse peritoneale automatisee (dpa)|B2 +1|D08|Dialyse peritoneale continue ambulatoire (dpca)|Dialyse peritoneale continue ambulatoire (dpca)|B2 +1|D09|Forfait hemodialyse en centre|Forfait hemodialyse en centre|B2 +1|D10|Forfait hemodialyse en centre pour enfant|Forfait hemodialyse en centre pour enfant|B2 +1|D11|Forfait hemodialyse en centre|Forfait hemodialyse en centre|B2 +1|D12|Forfait d'autodialyse simple|Forfait d'autodialyse simple|B2 +1|D13|Forfait d'autodialyse assistee|Forfait d'autodialyse assistee|B2 +1|D14|Forfait d'hemodialyse a domicile|Forfait d'hemodialyse a domicile|B2 +1|D15|Forfait de dialyse peritoneale automatisee (dpa)|Forfait de dialyse peritoneale automatisee (dpa)|B2 +1|D16|Forfait de dialyse peritoneale continue ambulatoire (dpca)|Forfait de dialyse peritoneale continue ambulatoire (dpca)|B2 +1|D17|Forfait entrainement hemodialyse a domicile et a l'autodialyse|Forfait entrainement hemodialyse a domicile et a l'autodialyse|B2 +1|D18|Forfait entrainement a la dpa|Forfait entrainement a la dpa|B2 +1|D19|Forfait entrainement a la dpa|Forfait entrainement a la dpa|B2 +1|D20|Forfait d'entrainement a la dialyse peritoneale automatisee a domicile|Forfait d'entrainement a la dialyse peritoneale automatisee a domicile|B2 +1|D21|Forfait d'entrainement a la dialyse peritoneale continue ambulatoire a domicile|Forfait d'entrainement a la dialyse peritoneale continue ambulatoire a domicile|B2 +1|D22|Forfait de dialyse peritoneale automatisee pour hospitalisation de 3 a 6 jours|Forfait de dialyse peritoneale automatisee pour hospitalisation de 3 a 6 jours|B2 +1|D23|Forfait de dialyse peritoneale continue ambulatoire pour hospitalisation de 3 a 6 jours|Forfait de dialyse peritoneale continue ambulatoire pour hospitalisation de 3 a 6 jours|B2 +1|D24|Forfait d''entrainement a l''hemodialyse en unite de dialyse medicalisee|Forfait d''entrainement a l''hemodialyse en unite de dialyse medicalisee|B2 +1|DC|Actes de chirurgie dentaire|Actes de chirurgie dentaire|B2 +1|DCC|Acte de depistage du cancer colorectal|Acte de depistage du cancer colorectal|B2 +1|DEN|Acte dentaire ccam|Acte dentaire ccam|B2 +1|DI|Demarche de soins infirmiers|Demarche de soins infirmiers|B2 +1|DIP|Supplement journalier dialyse peritoneale|Supplement journalier dialyse peritoneale|B2 +1|DPH|Deplacement comite regional reconnaissance mp|Deplacement comite regional reconnaissance mp|B2 +1|DRT|Differentiel referent traitant|Differentiel referent traitant|B2 +1|DTP|Dialyse tierce personne|Dialyse tierce personne|B2 +1|DVO|Divers orthese|Divers orthese|B2 +1|ECP|Examen complementaire crmpp|Examen complementaire crmpp|B2 +1|EMI|Ecart medicament indemnisable|Ecart medicament indemnisable|B2 +1|END|Actes d'endodontie|Actes d'endodontie|B2 +1|ENT|Forfait d'entree|Forfait d'entree|B2 +1|ERI|Ecart indemnisable retrocession|Ecart indemnisable retrocession|B2 +1|ETI|Ecart tarif indemnisable|Ecart tarif indemnisable|B2 +1|EXH|Sejour extreme > seuil haut|Sejour extreme > seuil haut|B2 +1|EXS|Examen special|Examen special|B2 +1|FA1|Forfait d'accueil (chirurgie ambulatoire)|Forfait d'accueil (chirurgie ambulatoire)|B2 +1|FA2|Forfait d'accueil (chirurgie ambulatoire)|Forfait d'accueil (chirurgie ambulatoire)|B2 +1|FAE|Frais d'accompagnement pour enfant hospitalise|Frais d'accompagnement pour enfant hospitalise|B2 +1|FAT|Forfait de seance d'aerosol therapie|Forfait de seance d'aerosol therapie|B2 +1|FAU|Forfait annuel urgence|Forfait annuel urgence|B2 +1|FAZ|Forfait adhesion zone deficitaire|Forfait adhesion zone deficitaire|B2 +1|FCO|Forfait consommables onereux (cardiologie)|Forfait consommables onereux (cardiologie)|B2 +1|FCS|Forfait structure centre de sante|Forfait structure centre de sante|B2 +1|FDA|Forfait dentaire cmu : protheses adjointes|Forfait dentaire cmu : protheses adjointes|B2 +1|FDC|Forfait dentaire cmu : protheses conjointes|Forfait dentaire cmu : protheses conjointes|B2 +1|FDO|Forfait dentaire cmu : protheses orthodontiques|Forfait dentaire cmu : protheses orthodontiques|B2 +1|FDR|Forfait dentaire cmu : reparation protheses|Forfait dentaire cmu : reparation protheses|B2 +1|FE|Frais d'environnement|Frais d'environnement|B2 +1|FEN|Forfait entretien|Forfait entretien|B2 +1|FFM|Forfait frais de materiel|Forfait frais de materiel|B2 +1|FFN|Aide a la transmission des flux non securises|Aide a la transmission des flux non securises|B2 +1|FFS|Aide perenne (facturation feuilles de soins)|Aide perenne (facturation feuilles de soins)|B2 +1|FGA|Frais de gestion pour centre de grand appareillage|Frais de gestion pour centre de grand appareillage|B2 +1|FGP|Frais de garde particuliere|Frais de garde particuliere|B2 +1|FHT|Forfait haute technicite|Forfait haute technicite|B2 +1|FHV|Forfait honoraires de ville|Forfait honoraires de ville|B2 +1|FI1|Forfait pdses publique|Forfait pdses publique|B2 +1|FI2|Forfait centre de depistage anonyme et gratuit|Forfait centre de depistage anonyme et gratuit|B2 +1|FI3|Forfait perinataux de proximite|Forfait perinataux de proximite|B2 +1|FI4|Forfait education therapeutique|Forfait education therapeutique|B2 +1|FJA|Forfait journalier de sortie a la charge de l'assure|Forfait journalier de sortie a la charge de l'assure|B2 +1|FJC|Forfait journalier seul (du par un organisme complementaire)|Forfait journalier seul (du par un organisme complementaire)|B2 +1|FJL|Forfait journalier seul (du par le regime local alsacemoselle)|Forfait journalier seul (du par le regime local alsacemoselle)|B2 +1|FJR|Forfait journalier de sortie a la charge du regime obligatoire|Forfait journalier de sortie a la charge du regime obligatoire|B2 +1|FJS|Hebergement > 24h|Hebergement > 24h|B2 +1|FMC|Forfait mensuel de coordinnation|Forfait mensuel de coordinnation|B2 +1|FMP|Forfait mensuel de participation|Forfait mensuel de participation|B2 +1|FMS|Forfait mensuel de soins|Forfait mensuel de soins|B2 +1|FMV|Forfait medicament de ville|Forfait medicament de ville|B2 +1|FNN|Forfait nouveau ne|Forfait nouveau ne|B2 +1|FPA|Forfait d'astreinte nuit et ferie en etablissement prive|Forfait d'astreinte nuit et ferie en etablissement prive|B2 +1|FPC|Forfait prothese conjointe (cmu hors panier de soins)|Forfait prothese conjointe (cmu hors panier de soins)|B2 +1|FPE|Forfait pediatrique|Forfait pediatrique|B2 +1|FPG|Forfait de garde nuit et ferie en etablisssement prive|Forfait de garde nuit et ferie en etablisssement prive|B2 +1|FPO|Forfait orthodontique (cmu hors panier de soins)|Forfait orthodontique (cmu hors panier de soins)|B2 +1|FPS|Forfait ps - centre de sante|Forfait ps - centre de sante|B2 +1|FPU|Forfait patient urgences|Forfait patient urgences|B2 +1|FR2|Forfait technique tarif reduit n°2|Forfait technique tarif reduit n°2|B2 +1|FR3|Forfait technique tarif reduit n°3|Forfait technique tarif reduit n°3|B2 +1|FRL|Forfait journalier de sortie a la charge du regime alsacemoselle|Forfait journalier de sortie a la charge du regime alsacemoselle|B2 +1|FS|Frais de soins|Frais de soins|B2 +1|FSD|Forfait de securite dermatologique|Forfait de securite dermatologique|B2 +1|FSG|Frais salle travail accouchement gemellaire ou dystocie|Frais salle travail accouchement gemellaire ou dystocie|B2 +1|FSJ|Forfait de soins journalier|Forfait de soins journalier|B2 +1|FSO|Frais de salle d'operation|Frais de salle d'operation|B2 +1|FST|Frais salle travail accouchement simple|Frais salle travail accouchement simple|B2 +1|FSY|Frais de salle d'operation en psychiatrie|Frais de salle d'operation en psychiatrie|B2 +1|FTG|Forfait technique global|Forfait technique global|B2 +1|FTN|Forfait technique normal|Forfait technique normal|B2 +1|FTR|Forfait technique reduit|Forfait technique reduit|B2 +1|FTS|Forfait technique scanner|Forfait technique scanner|B2 +1|GHS|Groupe homogene de sejour|Groupe homogene de sejour|B2 +1|GHT|Groupe homogene de tarif|Groupe homogene de tarif|B2 +1|GLU|Nutriments pour intolerants au gluten|Nutriments pour intolerants au gluten|B2 +1|GMT|Groupe Medico-Tarifaire|Groupe Medico-Tarifaire|B2 +1|GPD|Garde pharmacie de dimanche|Garde pharmacie de dimanche|B2 +1|GPF|Garde pharmacie de ferie|Garde pharmacie de ferie|B2 +1|GPN|Garde pharmacie de nuit|Garde pharmacie de nuit|B2 +1|GS1|Vaccin anti grippe hemisphere sud vaxigrip hs|Vaccin anti grippe hemisphere sud vaxigrip hs|B2 +1|GS2|Vaccin anti grippe hemisphere sud fluarix hs|Vaccin anti grippe hemisphere sud fluarix hs|B2 +1|HC|Honoraire complexe|Honoraire complexe|B2 +1|HCS|Acces libre hors coordination des soins|Acces libre hors coordination des soins|B2 +1|HD1|Honoraires de dispensiation a 100%|Honoraires de dispensiation a 100%|B2 +1|HD2|Honoraires de dispensiation a 15%|Honoraires de dispensiation a 15%|B2 +1|HD4|Honoraires de dispensiation a 30%|Honoraires de dispensiation a 30%|B2 +1|HD7|Honoraires de dispensiation a 65%|Honoraires de dispensiation a 65%|B2 +1|HDS|Honoraires de dispensation specifique vaccins anti grippaux hemisphere sud|Honoraires de dispensation specifique vaccins anti grippaux hemisphere sud|B2 +1|HG1|Honoraires de dispensiation grand conditionnement a 100%|Honoraires de dispensiation grand conditionnement a 100%|B2 +1|HG2|Honoraires de dispensiation grand conditionnement a 15%|Honoraires de dispensiation grand conditionnement a 15%|B2 +1|HG4|Honoraires de dispensiation grand conditionnement a 30%|Honoraires de dispensiation grand conditionnement a 30%|B2 +1|HG7|Honoraires de dispensiation grand conditionnement a 65%|Honoraires de dispensiation grand conditionnement a 65%|B2 +1|HMP|Honoraire comite regionalreconnaissance mp|Honoraire comite regionalreconnaissance mp|B2 +1|HN|Hors nomenclature|Hors nomenclature|B2 +1|HS|Honoraires de surveillance|Honoraires de surveillance|B2 +1|HTH|Forfait hebergement cure thermale|Forfait hebergement cure thermale|B2 +1|HUM|Produits origine humaine|Produits origine humaine|B2 +1|IC|Consultation generaliste ivg|Consultation generaliste ivg|B2 +1|ICO|Actes inlay-core|Actes inlay-core|B2 +1|ICS|Consultation specialiste ivg|Consultation specialiste ivg|B2 +1|ID|Indemnite de deplacement|Indemnite de deplacement|B2 +1|IF|Indemnite forfaitaire de deplacement|Indemnite forfaitaire de deplacement|B2 +1|IFA|Indemnite forfaitaire de deplacement pour auxiliaires medicaux|Indemnite forfaitaire de deplacement pour auxiliaires medicaux|B2 +1|IFN|Indemnite forfaitaire deplacement mk neurologique|Indemnite forfaitaire deplacement mk neurologique|B2 +1|IFO|Indemnite forfaitaire deplacement mk orthopedique et rhumatologique|Indemnite forfaitaire deplacement mk orthopedique et rhumatologique|B2 +1|IFP|Indemnite forfaitaire deplacement mk pneumologie|Indemnite forfaitaire deplacement mk pneumologie|B2 +1|IFR|Indemnite forfaitaire deplacement mk rhumatismale|Indemnite forfaitaire deplacement mk rhumatismale|B2 +1|IFS|Indemnite forfaitaire deplacement mk de sortie|Indemnite forfaitaire deplacement mk de sortie|B2 +1|IG|Intervention ivg|Intervention ivg|B2 +1|IGA|Anesthesie ivg|Anesthesie ivg|B2 +1|IGB|Investigations biologiques|Investigations biologiques|B2 +1|IGM|Mifegyne - pharmacie ivg|Mifegyne - pharmacie ivg|B2 +1|IGP|Prostaglandines - pharmacie ivg|Prostaglandines - pharmacie ivg|B2 +1|IK|Indemnites kilometriques|Indemnites kilometriques|B2 +1|IKG|Frais de deplacement vacations|Frais de deplacement vacations|B2 +1|IKM|Indemnite kilometrique montagne|Indemnite kilometrique montagne|B2 +1|IKS|Indemnite kilometrique speciale (ski-pied-bac)|Indemnite kilometrique speciale (ski-pied-bac)|B2 +1|IMD|Forfait intervention duree < ou = 12h|Forfait intervention duree < ou = 12h|B2 +1|IMI|Forfait intervention duree < ou = 12h prive medic|Forfait intervention duree < ou = 12h prive medic|B2 +1|IMP|Implantologie|Implantologie|B2 +1|ING|Garde ambulanciere|Garde ambulanciere|B2 +1|INO|Actes inlay-onlay|Actes inlay-onlay|B2 +1|IPD|Forfait intervention, 24h > duree > 12h|Forfait intervention, 24h > duree > 12h|B2 +1|IVB|Verification biologique - ivg|Verification biologique - ivg|B2 +1|IVE|Verification echographique - ivg|Verification echographique - ivg|B2 +1|K|Actes de specialite|Actes de specialite|B2 +1|KA|Actes de chirurgie d'urgence|Actes de chirurgie d'urgence|B2 +1|KB|Prelevement directeur de laboratoire|Prelevement directeur de laboratoire|B2 +1|KC|Actes de chirurgie dentaire par stomatologue|Actes de chirurgie dentaire par stomatologue|B2 +1|KCC|Actes specifiques des chirurgiens|Actes specifiques des chirurgiens|B2 +1|KE|Actes d'echographie, ecotomographie ou doppler|Actes d'echographie, ecotomographie ou doppler|B2 +1|KGP|Kit anti grippe|Kit anti grippe|B2 +1|KMB|Prelevement par ponction veineuse directe pour un medecin biologiste|Prelevement par ponction veineuse directe pour un medecin biologiste|B2 +1|KMO|Acte en k pour phoniatre|Acte en k pour phoniatre|B2 +1|KTH|Pratiques medicales complementaires en cure thermale|Pratiques medicales complementaires en cure thermale|B2 +1|LAI|Lait humain|Lait humain|B2 +1|LEN|Lentilles optiques|Lentilles optiques|B2 +1|LTD|Location ligne telephonique dediee|Location ligne telephonique dediee|B2 +1|LUN|Monture optique (titre ii - chapitre 2 de la lpp)|Monture optique (titre ii - chapitre 2 de la lpp)|B2 +1|MA|Majoration pour astreinte actes techniques|Majoration pour astreinte actes techniques|B2 +1|MAC|Materiels et appareils de contention|Materiels et appareils de contention|B2 +1|MAD|Materiels et appareils de traitements divers|Materiels et appareils de traitements divers|B2 +1|MAF|Majoration annuelle famille|Majoration annuelle famille|B2 +1|MAP|Majoration anatomo-cyto-pathologie|Majoration anatomo-cyto-pathologie|B2 +1|MAR|Marge forfaitaire|Marge forfaitaire|B2 +1|MAS|Majoration annuelle de synthese|Majoration annuelle de synthese|B2 +1|MAU|Majoration pour acte unique|Majoration pour acte unique|B2 +1|MBB|Majoration nourrisson avant 8 jours|Majoration nourrisson avant 8 jours|B2 +1|MCC|Majoration coordination cardiologue|Majoration coordination cardiologue|B2 +1|MCD|Majoration specifique pds cliniques dentistes|Majoration specifique pds cliniques dentistes|B2 +1|MCE|Majoration consultation endocrino|Majoration consultation endocrino|B2 +1|MCG|Majoration coordination generaliste|Majoration coordination generaliste|B2 +1|MCI|Majoration de coordination et d'environnement de soins infirmier|Majoration de coordination et d'environnement de soins infirmier|B2 +1|MCS|Majoration coordination specialiste|Majoration coordination specialiste|B2 +1|MD|Majoration de deplacement|Majoration de deplacement|B2 +1|MDD|Majoration de deplacement de dimanche et ferie|Majoration de deplacement de dimanche et ferie|B2 +1|MDE|Majoration de deplacement pour environnement|Majoration de deplacement pour environnement|B2 +1|MDI|Majoration de deplacement de mi-nuit 0 a 6 h|Majoration de deplacement de mi-nuit 0 a 6 h|B2 +1|MDN|Majoration de deplacement de nuit|Majoration de deplacement de nuit|B2 +1|MG|Majoration pour garde|Majoration pour garde|B2 +1|MGC|Forfait annuel migac|Forfait annuel migac|B2 +1|MGE|Majoration generaliste enfant|Majoration generaliste enfant|B2 +1|MHU|Medicament homeopathique unitaire (a 35 %)|Medicament homeopathique unitaire (a 35 %)|B2 +1|MIC|Majoration consultation longue et complexe par mt d'un patient insuffisant cardiaque apres hospitalisation pour decompensation|Majoration consultation longue et complexe par mt d'un patient insuffisant cardiaque apres hospitalisation pour decompensation|B2 +1|MK1|Cures thermales forfait kine 18 seances collectives|Cures thermales forfait kine 18 seances collectives|B2 +1|MK2|Cures thermales forfait kine 18 seances individuelles|Cures thermales forfait kine 18 seances individuelles|B2 +1|MK3|Cures thermales forfait kine 9 seances collectives|Cures thermales forfait kine 9 seances collectives|B2 +1|MK4|Cures thermales forfait kine (9 seances individuelles)|Cures thermales forfait kine (9 seances individuelles)|B2 +1|MM|Majoration milieu de nuit|Majoration milieu de nuit|B2 +1|MNO|Majoration nourisson generaliste|Majoration nourisson generaliste|B2 +1|MNP|Majoration nourisson pediatre|Majoration nourisson pediatre|B2 +1|MPC|Majoration provisoire cliniciens|Majoration provisoire cliniciens|B2 +1|MPE|Majoration pediatre enfant|Majoration pediatre enfant|B2 +1|MPF|Majoration premiere consultation famille|Majoration premiere consultation famille|B2 +1|MPI|Majoration pharmacie des iles|Majoration pharmacie des iles|B2 +1|MPJ|Majoration provisoire cliniciens pour - 16ans|Majoration provisoire cliniciens pour - 16ans|B2 +1|MPP|Majoration de suivi des enfants grands prematures ou atteints de pathologie congenitale grave|Majoration grands prema ou patho congenitale|B2 +1|MRD|Medecin referent debut|Medecin referent debut|B2 +1|MRF|Medecin referent fin|Medecin referent fin|B2 +1|MSH|Majoration de suivi des enfants grands prematures ou atteints de pathologie congenitale grave|Majoration grands prema ou patho congenitale|B2 +1|MTA|Majoration consultation appareillage|Majoration consultation appareillage|B2 +1|MTC|Majoration transitoire chirurgiens|Majoration transitoire chirurgiens|B2 +1|MTD|Acces direct specifique (medecin traitant)|Acces direct specifique (medecin traitant)|B2 +1|MTH|Hors residence habituel (medecin traitant)|Hors residence habituel (medecin traitant)|B2 +1|MTN|Nouveau medecin traitant|Nouveau medecin traitant|B2 +1|MTO|Patient oriente par le medecin traitant|Patient oriente par le medecin traitant|B2 +1|MTR|Medecin traitant remplace|Medecin traitant remplace|B2 +1|MTU|Urgence (medecin traitant)|Urgence (medecin traitant)|B2 +1|MU|Majoration d'urgence|Majoration d'urgence|B2 +1|NN1|Supplement neonatologie 1|Supplement neonatologie 1|B2 +1|NN2|Supplement neonatologie 2|Supplement neonatologie 2|B2 +1|NN3|Supplement neonatologie 3|Supplement neonatologie 3|B2 +1|NUT|Aliment dietetique|Aliment dietetique|B2 +1|OMJ|Aide outil de mise a jour vitale|Aide outil de mise a jour vitale|B2 +1|OP1|Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu|Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu|B2 +1|OP2|Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu|Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu|B2 +1|OP3|Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu|Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu|B2 +1|OP4|Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu|Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu|B2 +1|OP5|Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu|Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu|B2 +1|OP6|Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu|Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu|B2 +1|OP7|Forfait optique no7 multifocaux cmu|Forfait optique no7 multifocaux cmu|B2 +1|OPM|Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu|Optique (titre ii - chapitre 2 de la lpp) avec forfait cmu|B2 +1|OPT|Optique (titre ii - chapitre 2 de la lpp) hors verres et montures|Optique (titre ii - chapitre 2 de la lpp) hors verres et montures|B2 +1|ORP|Orthoprotheses (titre ii - chapitre 7 de la lpp)|Orthoprotheses (titre ii - chapitre 7 de la lpp)|B2 +1|ORT|Orthopedie dento-faciale par stomatologue|Orthopedie dento-faciale par stomatologue|B2 +1|OV1|Forfait optique enfant no1 unifocaux (cmu)|Forfait optique enfant no1 unifocaux (cmu)|B2 +1|OV2|Forfait optique enfant no2 unifocaux (cmu)|Forfait optique enfant no2 unifocaux (cmu)|B2 +1|OV3|Forfait optique enfant no3 unifocaux (cmu)|Forfait optique enfant no3 unifocaux (cmu)|B2 +1|OV4|Forfait optique enfant no4 unifocaux (cmu)|Forfait optique enfant no4 unifocaux (cmu)|B2 +1|OV5|Forfait optique enfant no5 unifocaux (cmu)|Forfait optique enfant no5 unifocaux (cmu)|B2 +1|OV6|Forfait optique enfant no6 unifocaux (cmu)|Forfait optique enfant no6 unifocaux (cmu)|B2 +1|OV7|Forfait optique enfant no7 unifocaux (cmu)|Forfait optique enfant no7 unifocaux (cmu)|B2 +1|OV8|Forfait optique enfant no8 unifocaux (cmu)|Forfait optique enfant no7 multifocaux (cmu)|B2 +1|OV9|Forfait optique enfant no9 unifocaux (cmu)|Forfait optique enfant no7 multifocaux (cmu)|B2 +1|OVA|Forfait optique enfant a unifocaux (cmu)|Forfait optique enfant a multifocaux (cmu)|B2 +1|OVB|Forfait optique enfant b unifocaux (cmu)|Forfait optique enfant b multifocaux (cmu)|B2 +1|P|Actes anatomo-cyto-pathologie|Actes anatomo-cyto-pathologie|B2 +1|PA|Ortheses (titre ii - chapitre 1 de la lpp)|Ortheses (titre ii - chapitre 1 de la lpp)|B2 +1|PAE|Participation assure pour soins externes en etablissement ex dg|Participation assure pour soins externes en etablissement ex dg|B2 +1|PAH|Participation assure pour hospitalisation en etablissement ex dg|Participation assure pour hospitalisation en etablissement ex dg|B2 +1|PAJ|Participation assure pour hospitalisation pour benef alsace moselle|Participation assure pour hospitalisation pour benef alsace moselle|B2 +1|PAL|Participation assure pour soins externes pour benef alsace moselle|Participation assure pour soins externes pour benef alsace moselle|B2 +1|PAM|Protheses amovibles definitives metalliques|Protheses amovibles definitives metalliques|B2 +1|PAN|Pansements (titre i - chapitre 4 de la lpp)|Pansements (titre i - chapitre 4 de la lpp)|B2 +1|PAP|Participation assure|Participation assure|B2 +1|PAR|Protheses amovibles definitives resine|Protheses amovibles definitives resine|B2 +1|PAS|Participation assure sejour|Participation assure sejour|B2 +1|PAT|Participation assure transitoire|Participation assure transitoire|B2 +1|PAU|Prothese auditive (titre ii - chapitre 3 de la lpp)|Prothese auditive (titre ii - chapitre 3 de la lpp)|B2 +1|PAV|Participation assure pour soins de ville et soins externes|Participation assure pour soins de ville et soins externes|B2 +1|PB|Prelevement sanguin par directeur de laboratoire non medecin|Prelevement sanguin par directeur de laboratoire non medecin|B2 +1|PDM|Dispositif medical|Dispositif medical|B2 +1|PDT|Protheses dentaires provisoires|Protheses dentaires provisoires|B2 +1|PEX|Prothese externe non orthopedique (titre ii - chapitre 4 de la lpp)|Prothese externe non orthopedique (titre ii - chapitre 4 de la lpp)|B2 +1|PFC|Protheses fixes ceramiques|Protheses fixes ceramiques|B2 +1|PFM|Protheses fixes metalliques|Protheses fixes metalliques|B2 +1|PGE|Pratique de geolocalisation par dispositif embarque|Pratique de geolocalisation par dispositif embarque|B2 +1|PH1|Pharmacie 100%|Pharmacie 100%|B2 +1|PH2|Pharmacie vignette orange 15%|Pharmacie vignette orange 15%|B2 +1|PH4|Pharmacie vignette bleue 35%|Pharmacie vignette bleue 35%|B2 +1|PH7|Pharmacie vignette blanche 65%|Pharmacie vignette blanche 65%|B2 +1|PH8|Pharmacie facturee en sus du ghs|Pharmacie facturee en sus du ghs|B2 +1|PH9|Pharmacie facturee en sus|Pharmacie facturee en sus|B2 +1|PHA|Forfait pharmacie accouchement a domicile|Forfait pharmacie accouchement a domicile|B2 +1|PHD|Pharmacie hospitaliere derogatoire|Pharmacie hospitaliere derogatoire|B2 +1|PHH|Pharmacie hospitaliere retrocedee (taux 100%)|Pharmacie hospitaliere retrocedee (taux 100%)|B2 +1|PHI|Medicament avec autorisation d'importation|Medicament avec autorisation d'importation|B2 +1|PHJ|Forfait pharmaceutique journalier|Forfait pharmaceutique journalier|B2 +1|PHY|Medicament en sus|Medicament en sus|B2 +1|PHM|Preparation hospitaliere magistrale|Preparation hospitaliere magistrale|B2 +1|PHN|Pharmacie non remboursable|Pharmacie non remboursable|B2 +1|PHP|Preparation hospitaliere|Preparation hospitaliere|B2 +1|PHQ|Pharmacie hospitaliere retrocedee (taux 35%)|Pharmacie hospitaliere retrocedee (taux 35%)|B2 +1|PHS|Pharmacie hospitaliere retrocedee (taux 65%)|Pharmacie hospitaliere retrocedee (taux 65%)|B2 +1|PHT|Pharmacie hospitaliere mmh|Pharmacie hospitaliere mmh|B2 +1|PHU|Medicament avec autorisation temporaire d'utilisation nominative|Medicament avec autorisation temporaire d'utilisation nominative|B2 +1|PII|Implant inerte (titre iii - chapitres 1, 2 et 3 de la lpp)|Implant inerte (titre iii - chapitres 1, 2 et 3 de la lpp)|B2 +1|PIO|Processeur pour implant osteo-integre|Processeur pour implant osteo-integre|B2 +1|PJ|Frais de sejour|Frais de sejour|B2 +1|PJC|Ticket moderateur relatif aux frais de sejour|Ticket moderateur relatif aux frais de sejour|B2 +1|PJE|Frais de sejour ime|Frais de sejour ime|B2 +1|PM2|Preparation magistrale allopathique 15%|Preparation magistrale allopathique 15%|B2 +1|PM4|Preparation magistrale allopathique 35%|Preparation magistrale allopathique 35%|B2 +1|PME|Implant mu par electricite (titre iii - chapitre 4 de la lpp)|Implant mu par electricite (titre iii - chapitre 4 de la lpp)|B2 +1|PMH|Preparation magistrale homeopathique|Preparation magistrale homeopathique|B2 +1|PMO|Prescription etablie par medecin correspondant dans le parcours de soins|Prescription etablie par medecin correspondant dans le parcours de soins|B2 +1|PMP|Prescription etablie dans une autre situation du parcours de soins|Prescription etablie dans une autre situation du parcours de soins|B2 +1|PMR|Preparation magistrale|Preparation magistrale|B2 +1|PMS|Majoration pmsi|Majoration pmsi|B2 +1|PMT|Prescription etablie par le medecin traitant|Prescription etablie par le medecin traitant|B2 +1|PO1|Prelevement organe 1|Prelevement organe 1|B2 +1|PO2|Prelevement organe 2|Prelevement organe 2|B2 +1|PO3|Prelevement organe 3|Prelevement organe 3|B2 +1|PO4|Prelevement organe 4|Prelevement organe 4|B2 +1|PO5|Prelevement organe 5|Prelevement organe 5|B2 +1|PO6|Prelevement organe 6|Prelevement organe 6|B2 +1|PO7|Prelevement organe 7|Prelevement organe 7|B2 +1|PO8|Prelevement organe 8|Prelevement organe 8|B2 +1|PO9|Prelevement organe 9|Prelevement organe 9|B2 +1|POA|Prelevement d'organe a|Prelevement d'organe a|B2 +1|POC|Prothese oculaire et faciale (titre ii - chapitre 5 de la lpp)|Prothese oculaire et faciale (titre ii - chapitre 5 de la lpp)|B2 +1|POD|Acte de pedicure-podologue ( diabetique)|Acte de pedicure-podologue ( diabetique)|B2 +1|PPH|Plan personnalise de sante pharmacie|Plan personnalise de sante pharmacie|B2 +1|PPI|Preparation pharmaceutique individualisee (allergenes)|Preparation pharmaceutique individualisee (allergenes)|B2 +1|PPP|Prestation particuliere et pandemie|Prestation particuliere et pandemie|B2 +1|PPS|Plan personnalise de sante|Plan personnalise de sante|B2 +1|PRD|Permanence remuneration dimanche et ferie|Permanence remuneration dimanche et ferie|B2 +1|PRM|Permanence remuneration milieu de nuit|Permanence remuneration milieu de nuit|B2 +1|PRN|Permanence remuneration de nuit|Permanence remuneration de nuit|B2 +1|PRO|Prothese dentaire par stomatologue|Prothese dentaire par stomatologue|B2 +1|PRS|Prime responsabilite professionnelle specialiste|Prime responsabilite professionnelle specialiste|B2 +1|PRT|Permanence remuneration totale|Permanence remuneration totale|B2 +1|PSC|Prescription etablie hors parcours de soins|Prescription etablie hors parcours de soins|B2 +1|PSM|Pied support materiel|Pied support materiel|B2 +1|PY0|Forfait psychiatrie seance collective 1 intervenant|Forfait psychiatrie seance collective 1 intervenant|B2 +1|PY1|Forfait psychiatrie seance individuelle|Forfait psychiatrie seance individuelle|B2 +1|PY2|Forfait psychiatrie seance collective 2 intervenants|Forfait psychiatrie seance collective 2 intervenants|B2 +1|PY3|Forfait psychiatrie seance individuelle 2 intervenants|Forfait psychiatrie seance individuelle 2 intervenants|B2 +1|PY4|Forfait psychiatrie seance collective 1 intervenant - 6 a 8 h|Forfait psychiatrie seance collective 1 intervenant - 6 a 8 h|B2 +1|PY5|Forfait psychiatrie seance individuelle 1 intervenant - 6 a 8 h|Forfait psychiatrie seance individuelle 1 intervenant - 6 a 8 h|B2 +1|PY6|Forfait psychiatrie seance collective 2 intervenants - 6 a 8 h|Forfait psychiatrie seance collective 2 intervenants - 6 a 8 h|B2 +1|PY7|Forfait psychiatrie seance individuelle 2 intervenants - 6 a 8 h|Forfait psychiatrie seance individuelle 2 intervenants - 6 a 8 h|B2 +1|PY8|Forfait psychiatrie de securite sans hebergement|Forfait psychiatrie de securite sans hebergement|B2 +1|PY9|Forfait psychiatrie d'accueil et de suivi de nuit|Forfait psychiatrie d'accueil et de suivi de nuit|B2 +1|RAA|Remuneration additionnelle capi|Remuneration additionnelle capi|B2 +1|RAC|Remuneration des adherents au capi|Remuneration des adherents au capi|B2 +1|RAG|Forfait pour astreinte de nuit ou samedi matin en etablissement prive|Forfait pour astreinte de nuit ou samedi matin en etablissement prive|B2 +1|RAN|Forfait pour astreinte de debut de nuit en etablissement prive|Forfait pour astreinte de debut de nuit en etablissement prive|B2 +1|RAP|Supplement radiotherapie pediatrique|Supplement radiotherapie pediatrique|B2 +1|RC1|Responsabilite civile chirurgie 1|Responsabilite civile chirurgie 1|B2 +1|RC2|Responsabilite civile chirurgie 2|Responsabilite civile chirurgie 2|B2 +1|RCA|Responsabilite civile anesthesie reanimation|Responsabilite civile anesthesie reanimation|B2 +1|RCC|Redevance chef de clinique|Redevance chef de clinique|B2 +1|RCO|Responsabilite civile echographie obstetricale|Responsabilite civile echographie obstetricale|B2 +1|RCP|Responsabilite civile professionnelle|Responsabilite civile professionnelle|B2 +1|REA|Supplement reanimation|Supplement reanimation|B2 +1|REG|Forfait regulation|Forfait regulation|B2 +1|REP|Reanimation pediatrique|Reanimation pediatrique|B2 +1|RGD|Forfait pour garde de debut de nuit en etablissement prive|Forfait pour garde de debut de nuit en etablissement prive|B2 +1|RGN|Forfait pour garde de nuit ou samedi matin en etablissement prive|Forfait pour garde de nuit ou samedi matin en etablissement prive|B2 +1|RMT|Remuneration medecin traitant|Remuneration medecin traitant|B2 +1|RNO|Renouvellement d'optique|Renouvellement d'optique|B2 +1|RPA|Remuneration pour astreinte en etablissement prive|Remuneration pour astreinte en etablissement prive|B2 +1|RPG|Remuneration pour garde en etablissement prive|Remuneration pour garde en etablissement prive|B2 +1|RPN|Reparations sur prothese|Reparations sur prothese|B2 +1|SC|Soins conservateurs par dentiste|Soins conservateurs par dentiste|B2 +1|SCM|Soins conservateurs par medecin|Soins conservateurs par medecin|B2 +1|SD|Seances de diagnostic|Seances de diagnostic|B2 +1|SDE|Soins dentaires|Soins dentaires|B2 +1|SE1|Forfait environnement hospitalier 1|Forfait environnement hospitalier 1|B2 +1|SE2|Forfait environnement hospitalier 2|Forfait environnement hospitalier 2|B2 +1|SE3|Forfait environnement hospitalier 3|Forfait environnement hospitalier 3|B2 +1|SE4|Forfait environnement hospitalier 4|Forfait environnement hospitalier 4|B2 +1|SE5|Forfait environnement hospitalier 5|Forfait environnement hospitalier 5|B2 +1|SE6|Forfait environnement hospitalier 6|Forfait environnement hospitalier 6|B2 +1|SE7|Forfait environnement hospitalier 7|Forfait environnement hospitalier 7|B2 +1|SES|Suite examen de sante|Suite examen de sante|B2 +1|SF|Actes de sage-femme|Actes de sage-femme|B2 +1|SFC|Supplement forfait chimiotherapie|Supplement forfait chimiotherapie|B2 +1|SFI|Soins infirmiers par sage-femme|Soins infirmiers par sage-femme|B2 +1|SHO|Supplement chambre particuliere pour raison therapeutique|Supplement chambre particuliere pour raison therapeutique|B2 +1|SMU|Transport par smur|Transport par smur|B2 +1|SNG|Sang plasma et derives|Sang plasma et derives|B2 +1|SNS|Frais de seance de soins|Frais de seance de soins|B2 +1|SOD|Outils de mise a jour pharmaciens specificites dom|Outils de mise a jour pharmaciens specificites dom|B2 +1|SP|Examen de suivi postnatal|Examen de suivi postnatal|B2 +1|SPR|Actes de prothese dentaire par chirurgien dentiste|Actes de prothese dentaire par chirurgien dentiste|B2 +1|SRA|Supplement reanimation|Supplement reanimation|B2 +1|SRC|Supplement surveillance continue|Supplement surveillance continue|B2 +1|SSC|Supplement soins continus|Supplement soins continus|B2 +1|SSM|Supplement pour surveillance malade|Supplement pour surveillance malade|B2 +1|STF|Forfait soins intensifs|Forfait soins intensifs|B2 +1|STH|Forfait surveillance medicale thermale|Forfait surveillance medicale thermale|B2 +1|SZH|Supplement Zone Haute|Supplement Zone Haute|B2 +1|TB|Prelevement sanguin par technicien de laboratoire|Prelevement sanguin par technicien de laboratoire|B2 +1|TCP|Acte de tele consultation|Acte de tele consultation|B2 +1|TDR|Test de diagnostic rapide (acte gratuit)|Test de diagnostic rapide (acte gratuit)|B2 +1|TEP|Acte de tele expertise|Acte de tele expertise|B2 +1|TH1|Cures thermales forfait global|Cures thermales forfait global|B2 +1|TH2|Cures thermales forfait global + kine|Cures thermales forfait global + kine|B2 +1|TH3|Cures thermales forfait 2eme orientation|Cures thermales forfait 2eme orientation|B2 +1|TH4|Cures thermales forfait global + kine|Cures thermales forfait global + kine|B2 +1|TH5|Cures thermales forfait 72 seances hydro|Cures thermales forfait 72 seances hydro|B2 +1|THR|Forfait surveillance medicale reduit 2eme orientation|Forfait surveillance medicale reduit 2eme orientation|B2 +1|TJC|Tarif journalier complementaire|Tarif journalier complementaire|B2 +1|TNS|Traitement nicotinique de substitution|Traitement nicotinique de substitution|B2 +1|TO|Traitements d'orthopedie dentofaciale par chirurgien dentiste|Traitements d'orthopedie dentofaciale par chirurgien dentiste|B2 +1|TSG|Frais transport produits sanguins|Frais transport produits sanguins|B2 +1|TTH|Frais de transport pour cure thermale|Frais de transport pour cure thermale|B2 +1|TXA|Taxi tarif a|Taxi tarif a|B2 +1|TXB|Taxi tarif b|Taxi tarif b|B2 +1|TXC|Taxi tarif c|Taxi tarif c|B2 +1|TXD|Taxi tarif d|Taxi tarif d|B2 +1|TXF|Taxi tarif f|Taxi tarif f|B2 +1|TXI|Transport par taxi|Transport par taxi|B2 +1|UPH|Urgence pharmacie|Urgence pharmacie|B2 +1|V|Visite|Visite|B2 +1|VA|Visite d'urgence (sur site experimental)|Visite d'urgence (sur site experimental)|B2 +1|VAC|Acte de vaccination grippe h1n1|Acte de vaccination grippe h1n1|B2 +1|VDC|Videocapsule en cabinet de ville|Videocapsule en cabinet de ville|B2 +1|VDE|Videocapsule en etablissement|Videocapsule en etablissement|B2 +1|VEH|Vehicule pour handicapes physiques (titre iv de la lpp)|Vehicule pour handicapes physiques (titre iv de la lpp)|B2 +1|VER|Verres optiques (titre ii - chapitre 2 de la lpp)|Verres optiques (titre ii - chapitre 2 de la lpp)|B2 +1|VGI|Remuneration vaccination grippe a infirmiers liberaux|Remuneration vaccination grippe a infirmiers liberaux|B2 +1|VGM|Remuneration vaccination grippe a medecin|Remuneration vaccination grippe a medecin|B2 +1|VL|Visite longue et complexe|Visite longue et complexe|B2 +1|VNP|Visite neuropsychiatre|Visite neuropsychiatre|B2 +1|VRD|Majoration visite regulee ferie et dimanche|Majoration visite regulee ferie et dimanche|B2 +1|VRM|Majoration visite regulee milieu de nuit|Majoration visite regulee milieu de nuit|B2 +1|VRN|Majoration visite regulee nuit|Majoration visite regulee nuit|B2 +1|VRS|Majoration visite regulee du samedi apres-midi|Majoration visite regulee du samedi apres-midi|B2 +1|VS|Visite specialiste|Visite specialiste|B2 +1|VSL|Transport par vehicule sanitaire leger|Transport par vehicule sanitaire leger|B2 +1|Z|Actes de radiologie dentaire|Actes de radiologie dentaire|B2 +1|ZFU|Contrat de bonnes pratiques en zone franche urbaine |Contrat de bonnes pratiques en zone franche urbaine |B2 diff --git a/db/data2/dbdata_activite_t_rapports.csv b/db/data2/dbdata_activite_t_rapports.csv new file mode 100644 index 0000000..f5273e6 --- /dev/null +++ b/db/data2/dbdata_activite_t_rapports.csv @@ -0,0 +1,16 @@ +oid|code|texte|is_cti|is_essentiel|essentiel_date_level|colonnes_essentiel|entete|entete_2|group_id|is_hide|rapport_indicateur_condition_code|label|serie_entete|colonnes_essentiel_style +1|ACTI_ESS_1|CTI Essentiels Occupation (ne plus utiliser)|1|1|M||||1|1|"||||||"||"||"| +1|ACTI_ESS_2|CTI Essentiels Activité DAF (ne plus utiliser)|1|1|M||||1|1|"||||||"||"||"| +1|ACTI_ESS_3|CTI Essentiels Activité DIM (ne plus utiliser)|1|1|M||||1|1|"||||||"||"||"| +1|ACTI_ESS_4|CTI Essentiels Activité Direction (ne plus utiliser)|1|1|M||||1|1|"||||||"||"||"| +1|ACTI_ESS_5|CTI Essentiels Occupation SSR (ne plus utiliser)|1|1|M||||1|1|"||||||"||"||"| +1|CTI_ESS_001|Occupation|1|1|M||||1|0|"||||||"||"||||||||||||||||"| +1|CTI_ESS_002|Activité Direction (Date activité)|1|1|M||||1|0|"||||||"||"||"| +1|CTI_ESS_003|Activité Direction (Date sortie)|1|1|M||||1|0|"||||||"||"||"| +1|CTI_ESS_004|Activité Comptable (Date ventes)|1|1|M||||1|0|"||||||"||"||"| +1|CTI_ESS_006|Séjours|1|1|M|"ENTETE_ETENDUE|VAP100|DAM100|"|||1|0|"||||||"||"||||||||||||||||"| +1|CTI_EX1|CTI Exemple 1. Activité|1|0|M||||0|0|"||||||"||"||"| +1|CTI_EX2|CTI Exemple 2. Occupation|1|0|M||||0|0|"||||||"||"||"| +1|CTI_EX3|CTI Exemple 3. Activité|1|0|M||||0|0|"||||||"||"||"| +1|CTI_EX4|CTI Exemple 4. Activité|1|0|M||||0|0|"||||||"||"||"| +1|CTI_PF_AGG|CTI Portfolio|1|1|M||||1|1|"||||||"||"||"| diff --git a/db/data2/dbdata_activite_t_rapports_rubriques.csv b/db/data2/dbdata_activite_t_rapports_rubriques.csv new file mode 100644 index 0000000..15d4e82 --- /dev/null +++ b/db/data2/dbdata_activite_t_rapports_rubriques.csv @@ -0,0 +1,899 @@ +rapport_code|numero_rubrique|indicateur_code|indicateur_associe_code|entete|entete_etendue|output_format|width|row_height|padding|font_size|font_weight|border_thickness|color|background_color|base_nationale|base_nationale_qualifiee|viewlink|viewlink_label|viewlink_param|picto_enabled|positif_is_good|description|description_2|entete_etendue_2|output_format_2|picto_enabled_2|positif_is_good_2|is_hide|specific_viewlink|specific_viewlink_label|specific_viewlink_param|indicateur_condition_external_code|erase_rapport_indicateur_condition|calc_formula|hide_on_zero_field|field_tag|serie_indicateur_code|serie_indicateur_table_name|serie_entete_etendue|serie_description|serie_output_format|serie_picto_enabled|serie_positif_is_good +ACTI_ESS_1|4|CTI_ADM|||Admissions période||0|22|10|12||0|||0|0|ACTI000123|Séjours par étage|GROUPBY=ETA&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_ADM||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Admissions période||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|3|CTI_ADM_PRE|||Admissions avant période||0|22|10|12||0|||0|0|ACTI000123|Séjours par unité fonctionnelle|GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_ADM_PRE||||||||||||||||"|"*CALC||||||||||||||||"|"Admissions avant période||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|5|CTI_DEP|||Sorties période||0|22|10|12||0|||0|0|ACTI000123|Séjours par médecin séjour|GROUPBY=MED&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_DEP||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Sorties période||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|19|CTI_DEP|||Sorties période||0|22|10|12||0|||0|0|ACTI000123|Facturation par service de sortie|GROUPBY=SOR&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2|1|1|||||||0||||"||||||"|0||||"CTI_DEP||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Sorties période||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|28|CTI_DMSR|||DMS hospitalisés|#,0j|0|22|10|12||0|||0|0|ACTI000123|Séjours par unité fonctionnelle|GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&JSI=2&VIEWTAB=1|1|0|||||||0||||"||||||"|0||||"CTI_DMSR||||||||||||||||"|"*CALC||||||||||||||||"|"DMS hospitalisés||"|"||"|"#,0j||"|"1||"|"0||" +ACTI_ESS_1|27|CTI_DMSTOT|||DMS établissement (Ambulatoires + Hospit jour de sortie non inclus)|#,0j|0|22|10|12||0|||0|0|ACTI000123|Séjours par services|GROUPBY=SER&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1|1|0|||||||0||||"||||||"|0||||"CTI_DMSTOT||||||||||||||||"|"*CALC||||||||||||||||"|"DMS établissement (Ambulatoires + Hospit jour de sortie non inclus)||"|"||"|"#,0j||"|"1||"|"0||" +ACTI_ESS_1|25|CTI_NB6_JFSN|||Journées hospitalisation facturées||0|22|10|12||0|||0|0|ACTI000123|Facturation par mois|GROUPBY=NUMEROMOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2|1|1|||||||0||||"||||||"|0||||"CTI_NB6_JFSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées hospitalisation facturées||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|15|CTI_NB6_JSN|||Journées d'hospitalisation (jour sortie non inclus)||0|22|10|12||0|||0|0|ACTI000123|Ocucpation par clé budgétaire|GROUPBY=ETA&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0|1|1|||||||0||||"||||||"|0||||"CTI_NB6_JSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées d'hospitalisation (jour sortie non inclus)||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|10|CTI_NBAMB|||Ambulatoires||0|22|10|12||0|||0|0|ACTI000123|Occupation par étage de mouvement|GROUPBY=ETA&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0|1|1|||||||0||||"||||||"|0||||"CTI_NBAMB||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Ambulatoires||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|31|CTI_NBDEAD|||Nombre de décès||0|22|10|12||0|||0|0|ACTI000123|Séjours par mode de sortie|GROUPBY=MODE_SORTIE&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&VIEWTAB=0|1|0|||||||0||||"||||||"|0||||"CTI_NBDEAD||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Nombre de décès||"|"||"|"||"|"1||"|"0||" +ACTI_ESS_1|8|CTI_NBENTDIR|||Entrées hospitalisés||0|22|10|12||0|||0|0|ACTI000123|Occupation par service de mouvement|GROUPBY=SER&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0|1|1|||||||0||||"||||||"|0||||"CTI_NBENTDIR||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Entrées hospitalisés||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|12|CTI_NBEXT|||Externes||0|22|10|12||0|||0|0|ACTI000123|Occupation par mois|GROUPBY=NUMEROMOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=3|1|1|||||||0||||"||||||"|0||||"CTI_NBEXT||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Externes||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|24|CTI_NBJAS_JFSN|||Journées hospitalisation||0|22|10|12||0|||0|0|ACTI000123||GROUPBY=ETA&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2|1|1|||||||0||||"||||||"|0||||"CTI_NBJAS_JFSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées hospitalisation||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|23|CTI_NBJFSN|||Journées hospitalisées facturées||0|22|10|12||0|||0|0|ACTI000123|Facturation par domaine d'activité ATIH et par groupe d'activité ATIH|GROUPBY=GHMCLS09&GROUPBY_2=GHMCLS07&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2|1|1|||||||0||||"||||||"|0||||"CTI_NBJFSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées hospitalisées facturées||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|14|CTI_NBJSN|||Journées hospitalisés (jour sortie non inclus)||0|22|10|12||0|||0|0|ACTI000123|Occupation par domaine d'activité ATIH et par groupe d'activité ATIH|GROUPBY=GHMCLS09&GROUPBY_2=GHMCLS07&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0|1|1|||||||0||||"||||||"|0||||"CTI_NBJSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées hospitalisés (jour sortie non inclus)||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|22|CTI_NBJSNS|||Journées hospitalisées|#j|0|22|10|12||0|||0|0|ACTI000123|Facturation par médecin séjour et par groupe d'activité ATIH|GROUPBY=MED&GROUPBY_2=GHMCLS07&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2|0|0|||||||0||||"||||||"|0||||"CTI_NBJSNS||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées hospitalisées||"|"||"|"#j||"|"0||"|"0||" +ACTI_ESS_1|11|CTI_NBSCE|||Séances||0|22|10|12||0|||0|0|ACTI000123|Occupation par médecin séjour|GROUPBY=MED&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0|1|1|||||||0||||"||||||"|0||||"CTI_NBSCE||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Séances||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|2|CTI_NBSEJO|||Séjours||0|22|10|12||0|||0|0|ACTI000123|Séjours par services|GROUPBY=SER&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_NBSEJO||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Séjours||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|9|CTI_NBSORDIR|||Sorties hospitalisés||0|22|10|12||0|||0|0|ACTI000123|Occupation par unité fonctionnelle de mouvement|GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0|1|1|||||||0||||"||||||"|0||||"CTI_NBSORDIR||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Sorties hospitalisés||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|13|CTI_NB_BEBE|||Bébés||0|22|10|12||0|||0|0|ACTI000123|Occupation par CMD|GROUPBY=CMD&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=3|1|1|||||||0||||"||||||"|0||||"CTI_NB_BEBE||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Bébés||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|20|CTI_NB_FAC#2|||Sorties période facturées||0|22|10|12||0|||0|0|ACTI000123|Facturation par unité fonctionnelle|GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2|1|1|||||||0||||"||||||"|0||||"CTI_NB_FAC#2||||||||||||||||"|"SEJOURS||||||||||||||||"|"Sorties période facturées||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|30|CTI_PSEJFEM|||Pourcentage de femmes|#,0%|0|22|10|12||0|||0|0|ACTI000132|Population par âges|GROUPBY=AGE&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE|0|0|||||||0||||"||||||"|0||||"CTI_PSEJFEM||||||||||||||||"|"*CALC||||||||||||||||"|"Pourcentage de femmes||"|"||"|"#,0%||"|"0||"|"0||" +ACTI_ESS_1|1|CTI_SEP|||Séjours||0|26|0|14|bold|2|0x3399|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Séjours||"|"||"|"||"|"||"|"||" +ACTI_ESS_1|7|CTI_SEP|||Occupation||0|26|0|14|bold|2|0x3399|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Occupation||"|"||"|"||"|"||"|"||" +ACTI_ESS_1|16|CTI_SEP|||Taux d'occupation||0|26|0|14|bold|2|0x3399|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Taux d'occupation||"|"||"|"||"|"||"|"||" +ACTI_ESS_1|18|CTI_SEP|||Facturation||0|26|0|14|bold|2|0x3399|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Facturation||"|"||"|"||"|"||"|"||" +ACTI_ESS_1|26|CTI_SEP|||Durée moyenne de séjours||0|26|0|14|bold|2|0x3399|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Durée moyenne de séjours||"|"||"|"||"|"||"|"||" +ACTI_ESS_1|29|CTI_SEP|||Population||0|26|0|14|bold|2|0x3399|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Population||"|"||"|"||"|"||"|"||" +ACTI_ESS_1|6|CTI_SOR_POST_PER|||||0|22|10|12||0|||0|0|ACTI000123|Séjours par mois|GROUPBY=NUMEROMOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_SOR_POST_PER||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_1|17|CTI_TX_HO|||||0|22|10|12||0|||0|0|ACTI000124|Localisation par etage et jour calendaire|GROUPBY=ETRA&GROUPBY_2=JOUR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_TOMOIS&TOPERIODE=VIEW.CURRENT_TOMOIS&JSI=2|1|1|||||||0||||"||||||"|0||||"CTI_TX_HO||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_2|4|CTI_MTFAC_C#4|||C.A. Total||0|22|10|12||0|||0|0|ACTI000018|Activité par type de séjour et unité fonctionnelle|GROUPBY=TSE&GROUPBY_2=UF&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=4&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false|1|1|||||||0||||"||||||"|0||||"CTI_MTFAC_C#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Total||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_2|2|CTI_NSFACT_CS#4|||Séjours facturés||0|22|10|12||0|||0|0|ACTI000018|Activité par type de séjour et unité fonctionnelle|GROUPBY=TSE&GROUPBY_2=UF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=4&QUELMONTANT=1&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false|1|1|||||||0||||"||||||"|0||||"CTI_NSFACT_CS#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours facturés||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_2|6|CTI_PROTH_MT_FAC#4|||C.A. prothèses||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation|GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=4&RUBRIQUE=#LICTI_PROTHESE_R&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false|1|1|||||||0||||"||||||"|0||||"CTI_PROTH_MT_FAC#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. prothèses||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_2|8|CTI_SEH_MT_FAC#4|||C.A. forfaits SE||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation|GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=4&RUBRIQUE=#LICTI_SE_R&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false|1|1|||||||0||||"||||||"|0||||"CTI_SEH_MT_FAC#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. forfaits SE||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_2|1|CTI_SEP|||Séjours||0|26|0|14|bold|2|0x3399|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Séjours||"|"||"|"||"|"||"|"||" +ACTI_ESS_2|3|CTI_SEP|||Chiffre d'affaires facturé||0|26|0|14|bold|2|0x3399|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Chiffre d'affaires facturé||"|"||"|"||"|"||"|"||" +ACTI_ESS_2|9|CTI_SHO_MT_FAC#4|||C.A. chambres particulières||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation|GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=4&RUBRIQUE=#LICTI_SHO_R&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false|1|1|||||||0||||"||||||"|0||||"CTI_SHO_MT_FAC#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. chambres particulières||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_2|10|CTI_SUPHOT_FAC#4|||C.A. suppléments hôteliers||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation|GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=4&RUBRIQUE=#LICTI_SUPHOT_R&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false|1|1|||||||0||||"||||||"|0||||"CTI_SUPHOT_FAC#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. suppléments hôteliers||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_2|5|CTI_T2A_MT_FAC#4|||C.A. T2A||0|22|10|12||0|||0|0|ACTI000018|Activité par spécilité médicale et médecin séjour|GROUPBY=SPM&GROUPBY_2=MED&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=4&RUBRIQUE=#LICTI_T2A_R&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false|1|1|||||||0||||"||||||"|0||||"CTI_T2A_MT_FAC#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. T2A||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_2|7|CTI_UCD_MT_FAC#4|||C.A. médicaments||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation|GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=4&RUBRIQUE=#LICTI_UCD_R&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false|1|1|||||||0||||"||||||"|0||||"CTI_UCD_MT_FAC#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. médicaments||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_2|11|CTI_URG_MT_FAC#4|||C.A. Urgences||0|22|10|12||0|||0|0|ACTI000018|Activité du dernier mois par mois de sortie|GROUPBY=RUF&GROUPBY_2=MOISS&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_TOMOIS&TOPERIODE=VIEW.CURRENT_TOMOIS&QUELMONTANT=1&QUELLEDATE=4&RUBRIQUE=#LICTI_URG_R&_ONGLET_VAL_VISIBLE=false&_ONGLET_FAV_VISIBLE=false|1|1|||||||0||||"||||||"|0||||"CTI_URG_MT_FAC#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Urgences||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|21|CTI_MTENC_C#2|||C.A. total||0|22|10|12||0|||0|0|ACTI000018|Activité par service de sortie CTI|GROUPBY=SOR&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=2|1|1|||||||0||||"||||||"|0||||"CTI_MTENC_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. total||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|11|CTI_MTFAC_C#2|||C.A. total||0|22|10|12||0|||0|0|ACTI000018|Activité par service de sortie CTI et par service de sortie|GROUPBY=SORCLS04&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=2|1|1|||||||0||||"||||||"|0||||"CTI_MTFAC_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. total||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|30|CTI_MT_FAC_TOT#2|||C.A. total||0|22|10|12||0|||0|0|ACTI000018|Activité par mois de sortie|GROUPBY=MOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2|1|1|||||||0||||"||||||"|0||||"CTI_MT_FAC_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. total||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|8|CTI_NB6_JFSN|||Journées hospitalisation facturées||0|22|10|12||0|||0|0|ACTI000123||GROUPBY=MSOR&GROUPBY_2=MED&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE|1|1|||||||0||||"||||||"|0||||"CTI_NB6_JFSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées hospitalisation facturées||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|7|CTI_NB6_JSN|||Journées hospitalisation||0|22|10|12||0|||0|0|ACTI000123||GROUPBY=SORCLS04&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE|1|1|||||||0||||"||||||"|0||||"CTI_NB6_JSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées hospitalisation||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|6|CTI_NBJFSN|||Journées hospitalisées facturées||0|22|10|12||0|||0|0|ACTI000123||GROUPBY=GHMCLS09&GROUPBY_2=GHMCLS08&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE|1|1|||||||0||||"||||||"|0||||"CTI_NBJFSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées hospitalisées facturées||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|5|CTI_NBJSN|||Journées hospitalisées||0|22|10|12||0|||0|0|ACTI000123||GROUPBY=MED&GROUPBY_2=GHMCLS08&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE|0|0|||||||0||||"||||||"|0||||"CTI_NBJSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées hospitalisées||"|"||"|"||"|"0||"|"0||" +ACTI_ESS_3|4|CTI_NB_NFAC#2|||Séjours non facturés||0|22|10|12||0|||0|0|ACTI000018|Activité par unité fonctionnelle|GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=2&QUELMONTANT=ENF|1|0|||||||0||||"||||||"|0||||"CTI_NB_NFAC#2||||||||||||||||"|"SEJOURS||||||||||||||||"|"Séjours non facturés||"|"||"|"||"|"1||"|"0||" +ACTI_ESS_3|2|CTI_NB_SEJ_FAEN#2|||Séjours sortis||0|22|10|12||0|||0|0|ACTI000018|Activité par type de séjour et par service de sortie|GROUPBY=TSE&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=2&QUELMONTANT=MF-ENF|1|1|||||||0||||"||||||"|0||||"CTI_NB_SEJ_FAEN#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours sortis||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|29|CTI_NB_SEJ_FAEN#2|||Séjours||0|22|10|12||0|||0|0|ACTI000018|Activité par type de séjour et par service de sortie|GROUPBY=TSE&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2|1|1|||||||0||||"||||||"|0||||"CTI_NB_SEJ_FAEN#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|20|CTI_NB_SEJ_VAL#2|||Séjours||0|22|10|12||0|||0|0|ACTI000018|Activité par type de séjour et par service de sortie|GROUPBY=TSE&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=2|0|0|||||||0||||"||||||"|0||||"CTI_NB_SEJ_VAL#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours||"|"||"|"||"|"0||"|"0||" +ACTI_ESS_3|10|CTI_NSFAC_C#2|||Séjours||0|22|10|12||0|||0|0|ACTI000018|Activité par domaine d'activité ATIH|GROUPBY=GHMCLS09&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=2|1|1|||||||0||||"||||||"|0||||"CTI_NSFAC_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|3|CTI_NSFAC_CS#2|||Séjours facturés||0|22|10|12||0|||0|0|ACTI000018|Activité par type de séjour CTI et service de sortie|GROUPBY=SORCLS04&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=2|1|1|||||||0||||"||||||"|0||||"CTI_NSFAC_CS#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours facturés||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|22|CTI_PROTH_MT_ENC#2|||C.A. prothèses||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation CTI et par rubrique de facturation|GROUPBY=RUFCLS04&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_PROTHESE_R|1|1|||||||0||||"||||||"|0||||"CTI_PROTH_MT_ENC#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. prothèses||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|13|CTI_PROTH_MT_FAC#2|||C.A. prothèses||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation CTI et par médecin séjour|GROUPBY=RUFCLS04&GROUPBY_2=MED&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=2&RUBRIQUE=#LICTI_PROTHESE_R|1|1|||||||0||||"||||||"|0||||"CTI_PROTH_MT_FAC#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. prothèses||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|32|CTI_PROTH_MT_TOT#2|||C.A. prothèses||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation CTI et par médecin séjour|GROUPBY=RUFCLS04&GROUPBY_2=MED&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_PROTHESE_R|1|1|||||||0||||"||||||"|0||||"CTI_PROTH_MT_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. prothèses||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|24|CTI_SEH_MT_ENC#2|||C.A. forfaits SE||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation|GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_SE_R|1|1|||||||0||||"||||||"|0||||"CTI_SEH_MT_ENC#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. forfaits SE||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|15|CTI_SEH_MT_FAC#2|||C.A. forfaits SE||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation|GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=2&RUBRIQUE=#LICTI_SE_R|1|1|||||||0||||"||||||"|0||||"CTI_SEH_MT_FAC#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. forfaits SE||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|34|CTI_SEH_MT_TOT#2|||C.A. forfaits SE||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation|GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_SE_R|1|1|||||||0||||"||||||"|0||||"CTI_SEH_MT_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. forfaits SE||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|1|CTI_SEP|||Séjours||0|26|0|14|bold|2|0x3399|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Séjours||"|"||"|"||"|"||"|"||" +ACTI_ESS_3|9|CTI_SEP|||Chiffre d'affaires facturé||0|26|0|14|bold|2|0x3399|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Chiffre d'affaires facturé||"|"||"|"||"|"||"|"||" +ACTI_ESS_3|19|CTI_SEP|||Chiffre d'affaires valorisé||0|26|0|14|bold|2|0x3399|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Chiffre d'affaires valorisé||"|"||"|"||"|"||"|"||" +ACTI_ESS_3|28|CTI_SEP|||Chiffre d'affaires facturé et valorisé||0|26|0|14|bold|2|0x3399|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Chiffre d'affaires facturé et valorisé||"|"||"|"||"|"||"|"||" +ACTI_ESS_3|25|CTI_SHO_MT_ENC#2|||C.A. chambres particulières||0|22|10|12||0|||0|0|ACTI000018|Activité par service de sortie et par rubrique de facturation|GROUPBY=SOR&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_SHO_R|1|1|||||||0||||"||||||"|0||||"CTI_SHO_MT_ENC#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. chambres particulières||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|16|CTI_SHO_MT_FAC#2|||C.A. chambres particulières||0|22|10|12||0|||0|0|ACTI000018|Activité par service de sortie et par rubrique de facturation|GROUPBY=SOR&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=2&RUBRIQUE=#LICTI_SHO_R|1|1|||||||0||||"||||||"|0||||"CTI_SHO_MT_FAC#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. chambres particulières||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|35|CTI_SHO_MT_TOT#2|||C.A. chambres particulières||0|22|10|12||0|||0|0|ACTI000018|Activité par service de sortie et rubrique de facturation|GROUPBY=SOR&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_SHO_R|1|1|||||||0||||"||||||"|0||||"CTI_SHO_MT_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. chambres particulières||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|26|CTI_SUPHOT_ENC#2|||C.A. suppléments hôteliers||0|22|10|12||0|||0|0|ACTI000018|Activité par service de sortie et par rubrique de facturation CTI|GROUPBY=SOR&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_SUPHOT_R|1|1|||||||0||||"||||||"|0||||"CTI_SUPHOT_ENC#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. suppléments hôteliers||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|17|CTI_SUPHOT_FAC#2|||C.A. suppléments hôteliers||0|22|10|12||0|||0|0|ACTI000018|Activité par service de sortie CTI et par rubrique de facturation CTI|GROUPBY=SORCLS04&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=2&RUBRIQUE=#LICTI_SUPHOT_R|1|1|||||||0||||"||||||"|0||||"CTI_SUPHOT_FAC#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. suppléments hôteliers||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|36|CTI_SUPHOT_TOT#2|||C.A. suppléments hôteliers||0|22|10|12||0|||0|0|ACTI000018|Activité par service de sortie et rubrique de facturation CTI|GROUPBY=SOR&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_SUPHOT_R|1|1|||||||0||||"||||||"|0||||"CTI_SUPHOT_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. suppléments hôteliers||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|12|CTI_T2A_MT_FAC#2|||C.A. T2A||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation CTI et par rubrique de facturation|GROUPBY=RUFCLS04&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=2&RUBRIQUE=#LICTI_T2A_R|1|1|||||||0||||"||||||"|0||||"CTI_T2A_MT_FAC#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. T2A||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|31|CTI_T2A_MT_TOT#2|||C.A. T2A||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation CTI et par rubrique de facturation|GROUPBY=RUFCLS04&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_T2A_R|1|1|||||||0||||"||||||"|0||||"CTI_T2A_MT_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. T2A||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|23|CTI_UCD_MT_ENC#2|||C.A. médicaments||0|22|10|12||0|||0|0|ACTI000018|Activité par service de sortie et par rubrique de facturation CTI|GROUPBY=SOR&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_UCD_R|1|1|||||||0||||"||||||"|0||||"CTI_UCD_MT_ENC#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. médicaments||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|14|CTI_UCD_MT_FAC#2|||C.A. médicaments||0|22|10|12||0|||0|0|ACTI000018|Activité par compte et par rubrique de facturation|GROUPBY=CPT&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=2&RUBRIQUE=#LICTI_UCD_R|1|1|||||||0||||"||||||"|0||||"CTI_UCD_MT_FAC#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. médicaments||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|33|CTI_UCD_MT_TOT#2|||C.A. médicaments||0|22|10|12||0|||0|0|ACTI000018|Activité par compte et par rubrique de facturation|GROUPBY=CPT&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_UCD_R|1|1|||||||0||||"||||||"|0||||"CTI_UCD_MT_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. médicaments||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|27|CTI_URG_MT_ENC#2|||C.A. urgences||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation|GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&VIEWTAB=1&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_URG_R|1|1|||||||0||||"||||||"|0||||"CTI_URG_MT_ENC#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. urgences||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|18|CTI_URG_MT_FAC#2|||C.A. urgences||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation|GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&VIEWTAB=0&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=2&RUBRIQUE=#LICTI_URG_R|1|1|||||||0||||"||||||"|0||||"CTI_URG_MT_FAC#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. urgences||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_3|37|CTI_URG_MT_TOT#2|||C.A. urgences||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation|GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&VIEWTAB=2&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=2&RUBRIQUE=#LICTI_URG_R|1|1|||||||0||||"||||||"|0||||"CTI_URG_MT_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. urgences||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|17|CTI_MTENC_C#1|||C.A. total||0|22|10|12||0|||0|0|ACTI000018|Activite par mois de sortie|GROUPBY=MOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=1|0|0|||||||0||||"||||||"|0||||"CTI_MTENC_C#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. total||"|"||"|"||"|"0||"|"0||" +ACTI_ESS_4|6|CTI_MTFAC_C#1|||C.A. total||0|22|10|12||0|||0|0|ACTI000018|Activite par classe de service de sortie CTI et par service de sortie|GROUPBY=SORCLS04&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=1|1|1|||||||0||||"||||||"|0||||"CTI_MTFAC_C#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. total||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|26|CTI_MT_FAC_TOT#1|||C.A. total||0|22|10|12||0|||0|0|ACTI000018|Activite par mois de sortie|GROUPBY=MOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1|1|1|||||||0||||"||||||"|0||||"CTI_MT_FAC_TOT#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. total||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|2|CTI_NB_SEJ_FAEN#1|||Séjours sortis||0|22|10|12||0|||0|0|ACTI000018|Activité par type de séjour et par service de sortie|GROUPBY=TSE&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=1&QUELMONTANT=MF-ENF|1|1|||||||0||||"||||||"|0||||"CTI_NB_SEJ_FAEN#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours sortis||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|25|CTI_NB_SEJ_FAEN#1|||Séjours||0|22|10|12||0|||0|0|ACTI000018|Activite par type de séjour et par service de sortie|GROUPBY=TSE&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1|1|1|||||||0||||"||||||"|0||||"CTI_NB_SEJ_FAEN#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|16|CTI_NB_SEJ_VAL#1|||Séjours||0|22|10|12||0|||0|0|ACTI000018|Activite par type de séjour et par service de sortie|GROUPBY=TSE&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=1|0|0|||||||0||||"||||||"|0||||"CTI_NB_SEJ_VAL#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours||"|"||"|"||"|"0||"|"0||" +ACTI_ESS_4|5|CTI_NSFAC_C#1|||Séjours||0|22|10|12||0|||0|0|ACTI000018|Activité par mois d'activité|GROUPBY=MOIA&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=1|0|0|||||||0||||"||||||"|0||||"CTI_NSFAC_C#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours||"|"||"|"||"|"0||"|"0||" +ACTI_ESS_4|3|CTI_NSFAC_CS#1|||Séjours facturés||0|22|10|12||0|||0|0|ACTI000018|Activité par type de séjour CTI et par service de sortie|GROUPBY=SORCLS04&GROUPBY_2=SOR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELLEDATE=1|1|1|||||||0||||"||||||"|0||||"CTI_NSFAC_CS#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours facturés||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|18|CTI_PROTH_MT_ENC#1|||C.A. prothèses||0|22|10|12||0|||0|0|ACTI000018|Activite par rubrique de facturation CTI et par rubrique de facturation|GROUPBY=RUFCLS04&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_PROTHESE_R|0|0|||||||0||||"||||||"|0||||"CTI_PROTH_MT_ENC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. prothèses||"|"||"|"||"|"0||"|"0||" +ACTI_ESS_4|9|CTI_PROTH_MT_FAC#1|||C.A. prothèses||0|22|10|12||0|||0|0|ACTI000018|Activite par rubrique de facturation CTI et par médecin séjour|GROUPBY=RUFCLS04&GROUPBY_2=MED&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=1&RUBRIQUE=#LICTI_PROTHESE_R|1|1|||||||0||||"||||||"|0||||"CTI_PROTH_MT_FAC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. prothèses||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|29|CTI_PROTH_MT_TOT#1|||C.A. prothèses||0|22|10|12||0|||0|0|ACTI000018|Activite par rubrique de facturation CTI et par médecin séjour|GROUPBY=RUFCLS04&GROUPBY_2=MED&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_PROTHESE_R|1|1|||||||0||||"||||||"|0||||"CTI_PROTH_MT_TOT#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. prothèses||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|7|CTI_RUBMED_MT_FAC#1|||C.A. T2A||0|22|10|12||0|||0|0|ACTI000018|Activite par rubrique de facturation CTI et par rubrique de facturation|GROUPBY=RUFCLS04&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=1&RUBRIQUE=#LICTI_RUBMED_R|1|1|||||||0||||"||||||"|0||||"CTI_RUBMED_MT_FAC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. T2A||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|27|CTI_RUBMED_MT_TOT#1|||C.A. T2A||0|22|10|12||0|||0|0|ACTI000018|Activite par rubrique de facturation CTI et par rubrique de facturation|GROUPBY=RUFCLS04&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_RUBMED_R|1|1|||||||0||||"||||||"|0||||"CTI_RUBMED_MT_TOT#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. T2A||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|20|CTI_SEH_MT_ENC#1|||C.A. forfaits SE||0|22|10|12||0|||0|0|ACTI000018|Activite par rubrique de facturation|GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_SE_R|0|0|||||||0||||"||||||"|0||||"CTI_SEH_MT_ENC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. forfaits SE||"|"||"|"||"|"0||"|"0||" +ACTI_ESS_4|11|CTI_SEH_MT_FAC#1|||C.A. forfaits SE||0|22|10|12||0|||0|0|ACTI000018|Activite par rubrique de facturation|GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=1&RUBRIQUE=#LICTI_SE_R|1|1|||||||0||||"||||||"|0||||"CTI_SEH_MT_FAC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. forfaits SE||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|31|CTI_SEH_MT_TOT#1|||C.A. forfaits SE||0|22|10|12||0|||0|0|ACTI000018|Activite par rubrique de facturation|GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_SE_R|1|1|||||||0||||"||||||"|0||||"CTI_SEH_MT_TOT#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. forfaits SE||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|1|CTI_SEP|||Séjours||0|26|0|14|bold|2|0x3399|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Séjours||"|"||"|"||"|"||"|"||" +ACTI_ESS_4|4|CTI_SEP|||Chiffre d'affaires facturé||0|26|0|14|bold|2|0x3399|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Chiffre d'affaires facturé||"|"||"|"||"|"||"|"||" +ACTI_ESS_4|15|CTI_SEP|||Chiffre d'affaires valorisé||0|26|0|14|bold|2|0x3399|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Chiffre d'affaires valorisé||"|"||"|"||"|"||"|"||" +ACTI_ESS_4|24|CTI_SEP|||Chiffre d'affaires facturé et valorisé||0|26|0|14|bold|2|0x3399|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Chiffre d'affaires facturé et valorisé||"|"||"|"||"|"||"|"||" +ACTI_ESS_4|21|CTI_SHO_MT_ENC#1|||C.A. chambres particulières||0|22|10|12||0|||0|0|ACTI000018|Activite par service de sortie et par rubrique de facturation|GROUPBY=SOR&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_SHO_R|0|0|||||||0||||"||||||"|0||||"CTI_SHO_MT_ENC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. chambres particulières||"|"||"|"||"|"0||"|"0||" +ACTI_ESS_4|12|CTI_SHO_MT_FAC#1|||C.A. chambres particulières||0|22|10|12||0|||0|0|ACTI000018|Activite par service de sortie et par rubrique de facturation|GROUPBY=SOR&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=1&RUBRIQUE=#LICTI_SHO_R|1|1|||||||0||||"||||||"|0||||"CTI_SHO_MT_FAC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. chambres particulières||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|32|CTI_SHO_MT_TOT#1|||C.A. chambres particulières||0|22|10|12||0|||0|0|ACTI000018|Activite par service de sortie et rubrique de facturation|GROUPBY=SOR&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_SHO_R|1|1|||||||0||||"||||||"|0||||"CTI_SHO_MT_TOT#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. chambres particulières||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|8|CTI_SRUBMED_MT_FAC#1|||C.A. rubriques non prises en compte||0|22|10|12||0|||0|0|ACTI000018|Activite par rubrique de facturation CTI et par rubrique de facturation|GROUPBY=RUFCLS04&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=1&RUBRIQUE=#SLCTI_RUBMED_R|1|1|||||||0||||"||||||"|0||||"CTI_SRUBMED_MT_FAC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. rubriques non prises en compte||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|28|CTI_SRUBMED_MT_TOT#1|||C.A. rubriques non prises en compte||0|22|10|12||0|||0|0|ACTI000018|Activite par rubrique de facturation CTI et par rubrique de facturation|GROUPBY=RUFCLS04&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1&RUBRIQUE=#SLCTI_RUBMED_R|1|1|||||||0||||"||||||"|0||||"CTI_SRUBMED_MT_TOT#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. rubriques non prises en compte||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|22|CTI_SUPHOT_ENC#1|||C.A. suppléments hôteliers||0|22|10|12||0|||0|0|ACTI000018|Activite par service de sortie et rubrique de facturation CTI|GROUPBY=SOR&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_SUPHOT_R|0|0|||||||0||||"||||||"|0||||"CTI_SUPHOT_ENC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. suppléments hôteliers||"|"||"|"||"|"0||"|"0||" +ACTI_ESS_4|13|CTI_SUPHOT_FAC#1|||C.A. suppléments hôteliers||0|22|10|12||0|||0|0|ACTI000018|Activite par service de sortie CTI et par rubrique de facturation CTI|GROUPBY=SORCLS04&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=1&RUBRIQUE=#LICTI_SUPHOT_R|1|1|||||||0||||"||||||"|0||||"CTI_SUPHOT_FAC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. suppléments hôteliers||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|33|CTI_SUPHOT_TOT#1|||C.A. suppléments hôteliers||0|22|10|12||0|||0|0|ACTI000018|Activite par service de sortie et rubrique de facturation CTI|GROUPBY=SOR&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_SUPHOT_R|1|1|||||||0||||"||||||"|0||||"CTI_SUPHOT_TOT#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. suppléments hôteliers||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|19|CTI_UCD_MT_ENC#1|||C.A. médicaments||0|22|10|12||0|||0|0|ACTI000018|Activite par service de sortie et par rubrique de facturation CTI|GROUPBY=SOR&GROUPBY_2=RUFCLS04&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_UCD_R|0|0|||||||0||||"||||||"|0||||"CTI_UCD_MT_ENC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. médicaments||"|"||"|"||"|"0||"|"0||" +ACTI_ESS_4|10|CTI_UCD_MT_FAC#1|||C.A. médicaments||0|22|10|12||0|||0|0|ACTI000018|Activite par compte et par rubrique de facturation|GROUPBY=CPT&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=1&RUBRIQUE=#LICTI_UCD_R|1|1|||||||0||||"||||||"|0||||"CTI_UCD_MT_FAC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. médicaments||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|30|CTI_UCD_MT_TOT#1|||C.A. médicaments||0|22|10|12||0|||0|0|ACTI000018|Activite par compte et par rubrique de facturation|GROUPBY=CPT&GROUPBY_2=RUF&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_UCD_R|1|1|||||||0||||"||||||"|0||||"CTI_UCD_MT_TOT#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. médicaments||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|23|CTI_URG_MT_ENC#1|||C.A. urgences||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation|GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&VIEWTAB=1&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_URG_R|1|1|||||||0||||"||||||"|0||||"CTI_URG_MT_ENC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. urgences||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|14|CTI_URG_MT_FAC#1|||C.A. urgences||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation|GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&VIEWTAB=0&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=1&QUELLEDATE=1&RUBRIQUE=#LICTI_URG_R|1|1|||||||0||||"||||||"|0||||"CTI_URG_MT_FAC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. urgences||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_4|34|CTI_URG_MT_TOT#1|||C.A. urgences||0|22|10|12||0|||0|0|ACTI000018|Activité par rubrique de facturation|GROUPBY=RUF&GROUPBY_2=-1&GROUPBY_TAB=TREE&VIEWTAB=2&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&QUELMONTANT=MF-ENF&QUELLEDATE=1&RUBRIQUE=#LICTI_URG_R|1|1|||||||0||||"||||||"|0||||"CTI_URG_MT_TOT#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. urgences||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|5|CTI_ADM|||Admissions période||0|22|10|12||0|||0|0|ACTI000123|Séjours par étage|GROUPBY=ETACLS01&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_ADM||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Admissions période||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|11|CTI_ADMHCP|||Admissions période||0|22|16|12||0|||0|0|ACTI000123|Séjours par étage|GROUPBY=ETACLS01&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT='MT3'&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_ADMHCP||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Admissions période||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|18|CTI_ADMHDJ|||Admissions période||0|22|16|12||0|||0|0|ACTI000123|Séjours par étage|GROUPBY=ETACLS01&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT='MT4'&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_ADMHDJ||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Admissions période||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|10|CTI_ADMPREHCP|||Admissions avant période||0|22|16|12||0|||0|0|ACTI000123|Séjours par unité fonctionnelle|GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT='MT3'&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_ADMPREHCP||||||||||||||||"|"*CALC||||||||||||||||"|"Admissions avant période||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|17|CTI_ADMPREHDJ|||Admissions avant période||0|22|16|12||0|||0|0|ACTI000123|Séjours par unité fonctionnelle|GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT='MT4'&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_ADMPREHDJ||||||||||||||||"|"*CALC||||||||||||||||"|"Admissions avant période||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|4|CTI_ADM_PRE|||Admissions avant période||0|22|10|12||0|||0|0|ACTI000123|Séjours par unité fonctionnelle|GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_ADM_PRE||||||||||||||||"|"*CALC||||||||||||||||"|"Admissions avant période||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|6|CTI_DEP|||Sorties période||0|22|10|12||0|||0|0|ACTI000123|Séjours par médecin séjour|GROUPBY=MED&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_DEP||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Sorties période||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|12|CTI_DEPCOMP|||Sorties période||0|22|16|12||0|||0|0|ACTI000123|Séjours par médecin séjour|GROUPBY=MED&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT='MT3'&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_DEPCOMP||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Sorties période||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|14|CTI_DMSCP|||DMS (journées hospitalisés séjours sortis / séjours sortis)|#,0j|0|22|16|12||0|||0|0|ACTI000123|Séjours par services|GROUPBY=SERCLS02&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1&MODETRAITEMENT='MT3'|1|1|||||||0||||"||||||"|0||||"CTI_DMSCP||||||||||||||||"|"*CALC||||||||||||||||"|"DMS (journées hospitalisés séjours sortis / séjours sortis)||"|"||"|"#,0j||"|"1||"|"1||" +ACTI_ESS_5|26|CTI_ENTDIRCOM|||Entrées directes||0|22|16|12||0|||0|0|ACTI000123|Occupation par service|GROUPBY=SERCLS02&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT='MT3'&VIEWTAB=3|0|0|||||||0||||"||||||"|0||||"CTI_ENTDIRCOM||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Entrées directes||"|"||"|"||"|"0||"|"0||" +ACTI_ESS_5|31|CTI_ENTDIRJR|||Entrées directes||0|22|16|12||0|||0|0|ACTI000123|Occupation par service|GROUPBY=SERCLS02&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT='MT4'&VIEWTAB=3|0|0|||||||0||||"||||||"|0||||"CTI_ENTDIRJR||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Entrées directes||"|"||"|"||"|"0||"|"0||" +ACTI_ESS_5|28|CTI_NB4_JSNCP|||Nombre de journées hospitalisés||0|22|16|12||0|||0|0|ACTI000123|Occupation par étage|GROUPBY=ETACLS01&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT='MT3'&VIEWTAB=3|0|0|||||||0||||"||||||"|0||||"CTI_NB4_JSNCP||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Nombre de journées hospitalisés||"|"||"|"||"|"0||"|"0||" +ACTI_ESS_5|33|CTI_NB4_JSNJR|||Nombre de journées hospitalisés||0|22|16|12||0|||0|0|ACTI000123|Occupation par étage|GROUPBY=ETACLS01&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT='MT4'&VIEWTAB=3|0|0|||||||0||||"||||||"|0||||"CTI_NB4_JSNJR||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Nombre de journées hospitalisés||"|"||"|"||"|"0||"|"0||" +ACTI_ESS_5|24|CTI_NB6_JSN|||Journées d'hospitalisation||0|22|10|12||0|||0|0|ACTI000123|Occupation par clé budgétaire|GROUPBY=ETACLS01&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0|1|1|||||||0||||"||||||"|0||||"CTI_NB6_JSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées d'hospitalisation||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|35|CTI_NB6_JSN|||Journées hospitalisation||0|22|10|12||0|||0|0|ACTI000123|Facturation par étage|GROUPBY=ETACLS01&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2|1|1|||||||0||||"||||||"|0||||"CTI_NB6_JSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées hospitalisation||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|38|CTI_NBDEAD|||Nombre de décès||0|22|10|12||0|||0|0|ACTI000123|Séjours par mode de sortie|GROUPBY=MODE_SORTIE&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&VIEWTAB=0|1|0|||||||0||||"||||||"|0||||"CTI_NBDEAD||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Nombre de décès||"|"||"|"||"|"1||"|"0||" +ACTI_ESS_5|22|CTI_NBENTDIR|||Entrées hospitalisés||0|22|10|12||0|||0|0|ACTI000123|Occupation par service de mouvement|GROUPBY=SERCLS02&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0|1|1|||||||0||||"||||||"|0||||"CTI_NBENTDIR||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Entrées hospitalisés||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|36|CTI_NBJFSN|||Journées hospitalisation facturées||0|22|10|12||0|||0|0|ACTI000123|Facturation par mois|GROUPBY=NUMEROMOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2|1|1|||||||0||||"||||||"|0||||"CTI_NBJFSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées hospitalisation facturées||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|13|CTI_NBPRESHCOMP|||Séjours non sortis||0|22|16|12||0|||0|0|ACTI000123|Séjours par jour calendaire (dernier mois)|GROUPBY=JOUR&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_MONTH_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT='MT3'&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_NBPRESHCOMP||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Séjours non sortis||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|19|CTI_NBPRESHDJ|||Séjours non sortis||0|22|16|12||0|||0|0|ACTI000123|Séjours par jour calendaire (dernier mois)|GROUPBY=JOUR&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_MONTH_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT='MT4'&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_NBPRESHDJ||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Séjours non sortis||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|9|CTI_NBSEJCP|||Séjours||0|22|16|12||0|||0|0|ACTI000123|Séjours par services|GROUPBY=SERCLS02&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT='MT3'&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_NBSEJCP||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Séjours||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|16|CTI_NBSEJHDJ|||Séjours||0|22|16|12||0|||0|0|ACTI000123|Séjours par service|GROUPBY=SERCLS02&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT='MT4'&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_NBSEJHDJ||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Séjours||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|3|CTI_NBSEJO|||Séjours||0|22|10|12||0|||0|0|ACTI000123|Séjours par services|GROUPBY=SERCLS02&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_NBSEJO||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Séjours||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|23|CTI_NBSORDIR|||Sorties hospitalisés||0|22|10|12||0|||0|0|ACTI000123|Occupation par unité fonctionnelle de mouvement|GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0|1|1|||||||0||||"||||||"|0||||"CTI_NBSORDIR||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Sorties hospitalisés||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|7|CTI_NB_PRESENT|||Séjours non sortis||0|22|10|12||0|||0|0|ACTI000123|Séjours par jours calendaires (dernier mois)|GROUPBY=JOUR&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_MONTH_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1|1|1|||||||0||||"||||||"|0||||"CTI_NB_PRESENT||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Séjours non sortis||"|"||"|"||"|"1||"|"1||" +ACTI_ESS_5|1|CTI_SEP|||Séjours||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Séjours||"|"||"|"||"|"||"|"||" +ACTI_ESS_5|2|CTI_SEP|||Synthèse||0|22|6|13|bold|2|0x0|0xdddddd|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Synthèse||"|"||"|"||"|"||"|"||" +ACTI_ESS_5|8|CTI_SEP|||Hospitalisation complète||0|22|6|13|bold|2|0x0|0xdddddd|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Hospitalisation complète||"|"||"|"||"|"||"|"||" +ACTI_ESS_5|15|CTI_SEP|||Hospitalisation de jour||0|22|6|13|bold|2|0x0|0xdddddd|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Hospitalisation de jour||"|"||"|"||"|"||"|"||" +ACTI_ESS_5|20|CTI_SEP|||Occupation||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Occupation||"|"||"|"||"|"||"|"||" +ACTI_ESS_5|21|CTI_SEP|||Synthése||0|22|6|13|bold|2|0x0|0xdddddd|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Synthése||"|"||"|"||"|"||"|"||" +ACTI_ESS_5|25|CTI_SEP|||Hospitalisation complète||0|22|6|13|bold|0|0x0|0xdddddd|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Hospitalisation complète||"|"||"|"||"|"||"|"||" +ACTI_ESS_5|30|CTI_SEP|||Hospitalisation de jour||0|22|6|13|bold|0|0x0|0xdddddd|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Hospitalisation de jour||"|"||"|"||"|"||"|"||" +ACTI_ESS_5|34|CTI_SEP|||Facturation||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Facturation||"|"||"|"||"|"||"|"||" +ACTI_ESS_5|37|CTI_SEP|||Population||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Population||"|"||"|"||"|"||"|"||" +ACTI_ESS_5|27|CTI_SORDIRCOM|||Sorties directes||0|22|16|12||0|||0|0|ACTI000123|Occupation par unité fonctionelle|GROUPBY=UF&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT='MT3'&VIEWTAB=3|0|0|||||||0||||"||||||"|0||||"CTI_SORDIRCOM||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Sorties directes||"|"||"|"||"|"0||"|"0||" +ACTI_ESS_5|32|CTI_SORDIRJR|||Sorties directes||0|22|16|12||0|||0|0|ACTI000123|Occupation par unité fonctionelle|GROUPBY=UF&GROUPBY_2=ETA&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT='MT4'&VIEWTAB=3|0|0|||||||0||||"||||||"|0||||"CTI_SORDIRJR||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Sorties directes||"|"||"|"||"|"0||"|"0||" +ACTI_ESS_5|29|CTI_TX_HOCOMP|||Taux d'occupation||0|22|16|12||0|||0|0|ACTI000124|Localisation par étage et jour calendaire|GROUPBY=JOUR&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_MONTH_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&MODETRAITEMENT='MT3'|0|0|||||||0||||"||||||"|0||||"CTI_TX_HOCOMP||||||||||||||||"|"*CALC||||||||||||||||"|"Taux d'occupation||"|"||"|"||"|"0||"|"0||" +CTI_ESS_001|3|CTI_ADM|||Admissions||0|22|10|12||0|||0|0|ACTI000123|Occupation par étage d'occupation|GROUPBY=ETA&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1|1|1|||||0|0|0||||"||||||"|0||||"CTI_ADM||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Admissions||"|"||"|"||"|"1||0||0||0||0||0||0||0||0"|"1||0||0||0||0||0||0||0||0" +CTI_ESS_001|4|CTI_DEP|||Départs||0|22|10|12||0|||0|0|ACTI000056|Occupation par médecin séjour|GROUPBY=MED&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1|1|1|||||0|0|0||||"||||||"|0||||"CTI_DEP||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Départs||"|"||"|"||"|"1||0||0||0||0||0||0||0||0"|"1||0||0||0||0||0||0||0||0" +CTI_ESS_001|24|CTI_DMSR|||DMS hospitalisés|#,0j|0|22|10|12||0|||0|0|ACTI000123|Occupation par UF d'occupation|GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&JSI=2&VIEWTAB=1|1|0|||||0|0|0||||"||||||"|0||||"CTI_DMSR||||||||||||||||"|"*CALC||||||||||||||||"|"DMS hospitalisés||"|"||"|"#,0j||"|"1||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_001|23|CTI_DMSTOT|||DMS hospitalisation|#,0j|0|22|10|12||0|||0|0|ACTI000123|Occupation par Service d'occupation|GROUPBY=SER&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=1|1|0|||||0|0|0||||"||||||"|0||||"CTI_DMSTOT||||||||||||||||"|"*CALC||||||||||||||||"|"DMS hospitalisation||"|"||"|"#,0j||"|"1||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_001|13|CTI_NB6_JSN|||Journées d'hospitalisation||0|22|10|12||0|||0|0|ACTI000123|Ocucpation par Spécialité et Médecin|PERIODE=VIEW.CURRENT_PERIODE & TOPERIODE=VIEW.CURRENT_TOPERIODE & GROUPBY=SPM & GROUPBY_TAB=TREE|1|1|||||0|0|0||||"||||||"|0||||"CTI_NB6_JSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées d'hospitalisation||"|"||"|"||"|"1||0||0||0||0||0||0||0||0"|"1||0||0||0||0||0||0||0||0" +CTI_ESS_001|8|CTI_NBAMB|||Ambulatoires||0|22|10|12||0|||0|0|ACTI000123|Occupation par étage d'occupation|GROUPBY=ETA&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0|1|1|||||0|0|0||||"||||||"|0||||"CTI_NBAMB||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Ambulatoires||"|"||"|"||"|"1||0||0||0||0||0||0||0||0"|"1||0||0||0||0||0||0||0||0" +CTI_ESS_001|27|CTI_NBDEAD|||Nombre de décès||0|22|10|12||0|||0|0|ACTI000123|Séjours par Mode de sortie|PERIODE=VIEW.CURRENT_PERIODE & TOPERIODE=VIEW.CURRENT_TOPERIODE & GROUPBY=MODE_SORTIE & GROUPBY_TAB=TAB & _ONGLET_O1_VISIBLE=false & _ONGLET_O2_VISIBLE=false & _ONGLET_O3_VISIBLE=false|1|0|||||0|0|0||||"||||||"|0||||"CTI_NBDEAD||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Nombre de décès||"|"||"|"||"|"1||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_001|6|CTI_NBENTDIR|||Entrées hospitalisés||0|22|10|12||0|||0|0|ACTI000123|Occupation par service d'occupation|GROUPBY=SER&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0|1|1|||||0|0|0||||"||||||"|0||||"CTI_NBENTDIR||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Entrées hospitalisés||"|"||"|"||"|"1||0||0||0||0||0||0||0||0"|"1||0||0||0||0||0||0||0||0" +CTI_ESS_001|10|CTI_NBEXT|||Externes||0|22|10|12||0|||0|0|ACTI000123|Occupation par mois|GROUPBY=NUMEROMOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=3|1|1|||||0|0|0||||"||||||"|0||||"CTI_NBEXT||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Externes||"|"||"|"||"|"1||0||0||0||0||0||0||0||0"|"1||0||0||0||0||0||0||0||0" +CTI_ESS_001|17|CTI_NBFACREF|||Sorties directes et facturations intermédiaires||0|22|10|12||0|||0|0|ACTI000123|Occupation facturée par service de sortie|PERIODE=VIEW.CURRENT_PERIODE & TOPERIODE=VIEW.CURRENT_TOPERIODE & GROUPBY=SOR & GROUPBY_TAB=TAB|1|1|||||0|0|0||||"||||||"|0||||"CTI_NBFACREF||||||||||||||||"|"SEJOURS||||||||||||||||"|"Sorties directes et facturations intermédiaires||"|"||"|"||"|"1||0||||||||||||||"|"1||0||||||||||||||" +CTI_ESS_001|18|CTI_NBFACREF_F|||Dont Facturées||0|22|20|12||0|||0|0|ACTI000123|Occupation facturée par unité fonctionnelle|GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2|1|1|||||0|0|0||||"||||||"|0||||"CTI_NBFACREF_F||||||||||||||||"|"SEJOURS||||||||||||||||"|"Dont Facturées||"|"||"|"||"|"1||0||||||||||||||"|"1||0||||||||||||||" +CTI_ESS_001|19|CTI_NBFACREF_NF|||Dont non facturées||0|22|20|12||0|||0|0|ACTI000123|Facturation par étage|GROUPBY=ETA&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2|1|1|||||0|0|0||||"||||||"|0||||"CTI_NBFACREF_NF||||||||||||||||"|"SEJOURS||||||||||||||||"|"Dont non facturées||"|"||"|"||"|"1||0||||||||||||||"|"1||0||||||||||||||" +CTI_ESS_001|21|CTI_NBJAS_FAC|||Journées hospitalisation facturées||0|22|10|12||0|||0|0|ACTI000123|Facturation par mois|GROUPBY=NUMEROMOIS&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2|1|1|||||0|0|0||||"||||||"|0||||"CTI_NBJAS_FAC||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées hospitalisation facturées||"|"||"|"||"|"1||0||||||||||||||"|"1||0||||||||||||||" +CTI_ESS_001|12|CTI_NBJSN|||Journées des hospitalisés||0|22|10|12||0|||0|0|ACTI000123|Occupation par domaine d'activité ATIH et par groupe d'activité ATIH|GROUPBY=GHMCLS09&GROUPBY_2=GHMCLS07&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0|1|1|||||0|0|0||||"||||||"|0||||"CTI_NBJSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées des hospitalisés||"|"||"|"||"|"1||0||0||0||0||0||0||0||0"|"1||0||0||0||0||0||0||0||0" +CTI_ESS_001|20|CTI_NBJ_FAC|||Journées hospitalisées facturées||0|22|10|12||0|||0|0|ACTI000123|Facturation par domaine d'activité ATIH et par groupe d'activité ATIH|GROUPBY=GHMCLS09&GROUPBY_2=GHMCLS07&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=2|1|1|||||0|0|0||||"||||||"|0||||"CTI_NBJ_FAC||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées hospitalisées facturées||"|"||"|"||"|"1||0||||||||||||||"|"1||0||||||||||||||" +CTI_ESS_001|9|CTI_NBSCE|||Séances||0|22|10|12||0|||0|0|ACTI000123|Occupation par médecin séjour|GROUPBY=MED&GROUPBY_2=-1&GROUPBY_TAB=TREE&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0|1|1|||||0|0|0||||"||||||"|0||||"CTI_NBSCE||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Séances||"|"||"|"||"|"1||0||0||0||0||0||0||0||0"|"1||0||0||0||0||0||0||0||0" +CTI_ESS_001|2|CTI_NBSEJO|||Séjours||0|22|10|12|0|0|||0|0|ACTI000123|Occupation par Forme d'activité et UF d'occupation|PERIODE=VIEW.CURRENT_PERIODE & TOPERIODE=VIEW.CURRENT_TOPERIODE & GROUPBY=FOA & GROUPBY_TAB=TAB & GROUPBY_2=UF|1|1|||||0|0|0||||"||||||"|0||||"CTI_NBSEJO||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Séjours||"|"||"|"||"|"1||0||0||0||0||0||0||0||0"|"1||0||0||0||0||0||0||0||0" +CTI_ESS_001|7|CTI_NBSORDIR|||Sorties hospitalisés||0|22|10|12||0|||0|0|ACTI000123|Occupation par UF d'occupation|GROUPBY=UF&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=0|1|1|||||0|0|0||||"||||||"|0||||"CTI_NBSORDIR||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Sorties hospitalisés||"|"||"|"||"|"1||0||0||0||0||0||0||0||0"|"1||0||0||0||0||0||0||0||0" +CTI_ESS_001|11|CTI_NB_BEBE|||Bébés||0|22|10|12||0|||0|0|ACTI000123|Occupation par CMD|GROUPBY=CMD&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE&JSI=2&VIEWTAB=3|1|1|||||0|0|0||||"||||||"|0||||"CTI_NB_BEBE||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Bébés||"|"||"|"||"|"1||0||0||0||0||0||0||0||0"|"1||0||0||0||0||0||0||0||0" +CTI_ESS_001|26|CTI_PSEJFEM|||Pourcentage de femmes|#,0%|0|22|10|12||0|||0|0|ACTI000132|Pyramide des ages|GROUPBY=AGE&GROUPBY_2=-1&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE|0|0|||||0|0|0||||"||||||"|0||||"CTI_PSEJFEM||||||||||||||||"|"*CALC||||||||||||||||"|"Pourcentage de femmes||"|"||"|"#,0%||"|"0||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_001|1|CTI_SEP|||File active Séjours||0|26|0|14|bold|2|#c0392b|#cccccc|0|0|||| | |||||||0|||PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE|"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"File active Séjours||"|"||"|"||"|"||||||||||||||||"|"||||||||||||||||" +CTI_ESS_001|5|CTI_SEP|||Occupation||0|26|0|14|bold|2|#c0392b|#cccccc|0|0|||| | |||||||0|||PERIODE=VIEW.CURRENT_PERIODE&TOPERIODE=VIEW.CURRENT_TOPERIODE|"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Occupation||"|"||"|"||"|"||||||||||||||||"|"||||||||||||||||" +CTI_ESS_001|14|CTI_SEP|||Taux d'occupation||0|26|0|14|bold|2|#c0392b|#cccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Taux d'occupation||"|"||"|"||"|"||||||||||||||||"|"||||||||||||||||" +CTI_ESS_001|16|CTI_SEP|||Facturation||0|26|0|14|bold|2|#c0392b|#cccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Facturation||"|"||"|"||"|"||||||||||||||||"|"||||||||||||||||" +CTI_ESS_001|22|CTI_SEP|||Durée moyenne de séjours||0|26|0|14|bold|2|#c0392b|#cccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Durée moyenne de séjours||"|"||"|"||"|"||||||||||||||||"|"||||||||||||||||" +CTI_ESS_001|25|CTI_SEP|||Population||0|26|0|14|bold|2|#c0392b|#cccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Population||"|"||"|"||"|"||||||||||||||||"|"||||||||||||||||" +CTI_ESS_001|15|CTI_TX_HO|||Taux d'occupation (Hospitalisés)||0|22|10|12||0|||0|0|ACTI000124|Localisation par etage d'occupation et jour calendaire|GROUPBY=ETA&GROUPBY_2=JOUR&GROUPBY_TAB=TAB&PERIODE=VIEW.CURRENT_TOMOIS&TOPERIODE=VIEW.CURRENT_TOMOIS&JSI=2|1|1|||||0|0|0||||"||||||"|0||||"CTI_TX_HO||||||||||||||||"|"*CALC||||||||||||||||"|"Taux d'occupation (Hospitalisés)||"|"||"|"||"|"1||0||||||||||||||"|"1||0||||||||||||||" +CTI_ESS_002|22|CTI_CAT_MTD18_FACVAL|||C.A. Soins Moyen||0|22|10|12||0|||0|0|ACTI000018|Activité par Spécialité et Médecin|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=SPM & +GROUPBY_TAB=TAB & +GROUPBY_2=MED & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_CAT_MTD18_FACVAL||||||||||||||||"|"*CALC||||||||||||||||"|"C.A. Soins Moyen||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_002|17|CTI_EMC|||EMC||0|22|10|12||0|||0|0|ACTI000018|Activité par Spécialité médecin et Médecin|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=SPM & +GROUPBY_TAB=TAB & +GROUPBY_2=MED & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_EMC||||||||||||||||"|"OCCUPATION||||||||||||||||"|"EMC||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_002|12|CTI_MTENC_C#1|||C.A. Total||0|22|10|12||0|||0|0|ACTI000018|Valorisation par Forme d'activité et UF|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=TSE & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_MTENC_C#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Total||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_002|7|CTI_MTFAC_C#1|||C.A. Total||0|22|10|12||0|||0|0|ACTI000018|Facturation par Forme d'activité et UF|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_MTFAC_C#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Total||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_002|19|CTI_MT_FAC_TOT#1|||C.A. Total||0|22|10|12||0|||0|0|ACTI000018|Activité par Domaine et Groupe d'activité|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=GHMCLS09 & +GROUPBY_TAB=TAB & +GROUPBY_2=GHMCLS07 & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_MT_FAC_TOT#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Total||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_002|18|CTI_NB6_JSN|||Journées||0|22|10|12||0|||0|0|ACTI000018|Activité par Rubrique CTI et rubrique|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUFCLS04 & +GROUPBY_TAB=TAB & +GROUPBY_2=RUFCLS31 & +GROUPBY_3=RUF & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_NB6_JSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_002|2|CTI_NBSEJO|||Séjours||0|22|10|12||0|||0|0|ACTI000123|Occupation par forme d'activité et UF|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF"|1|1|||||0|0|0||||"||||||"|0||||"CTI_NBSEJO||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Séjours||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_002|16|CTI_NB_SEJ_FAEN#1|||Séjours||0|22|10|12||0|||0|0|ACTI000018|Activité par Forme d'activité et UF|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_NB_SEJ_FAEN#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_002|4|CTI_NB_SEJ_VAL#1|||||0|22|10|12||0|||0|0|ACTI000018|Valorisation par mois|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MOISA & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||||0||||"||||||"|0||||"CTI_NB_SEJ_VAL#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"0||"|"0||" +CTI_ESS_002|11|CTI_NB_SEJ_VAL#1|||Séjours||0|22|10|12||0|||0|0|ACTI000018|Valorisation par Rubrique CTI et Rubrique|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUFCLS04 & +GROUPBY_TAB=TAB & +GROUPBY_2=RUF & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_NB_SEJ_VAL#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_002|3|CTI_NSFAC_C#1|||Séjours Facturés||0|22|10|12||0|||0|0|ACTI000018|Facturation par mois|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MOISA & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_NSFAC_C#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours Facturés||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_002|6|CTI_NSFAC_C#1|||Séjours||0|22|10|12||0|||0|0|ACTI000018|Facturation par Rubrique CTI et Rubrique|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUFCLS04 & +GROUPBY_TAB=TAB & +GROUPBY_2=RUFCLS31 & +GROUPBY_3=RUF & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_NSFAC_C#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_002|24|CTI_PROTH_MT_TOT#1|||C.A. Prothèses||0|22|10|12||0|||0|0|ACTI000018|Activité Prothèses par Médecin|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LICTI_PROTHESE_R"|1|1|||||0|0|0||||"||||||"|0||||"CTI_PROTH_MT_TOT#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Prothèses||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_002|13|CTI_RUBMED_MT_ENC#1|||C.A. Séjour||0|22|10|12||0|||0|0|ACTI000018|Valorisation par Forme d'activité et UF|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_RUBMED_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_RUBMED_MT_ENC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Séjour||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_002|8|CTI_RUBMED_MT_FAC#1|||C.A. Séjour||0|22|10|12||0|||0|0|ACTI000018|Facturation par Forme d'activité et UF|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_RUBMED_R & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_RUBMED_MT_FAC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Séjour||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_002|20|CTI_RUBMED_MT_TOT#1|||C.A. Séjour||0|22|10|12||0|||0|0|ACTI000018|Activité par Forme d'activité et UF|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_RUBMED_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_RUBMED_MT_TOT#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Séjour||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_002|26|CTI_SEH_MT_TOT#1|||C.A. Forfaits SE||0|22|10|12||0|||0|0|ACTI000018|Activité SEh par Médecin|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LICTI_SE_R"|1|1|||||0|0|0||||"||||||"|0||||"CTI_SEH_MT_TOT#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Forfaits SE||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_002|1|CTI_SEP|||File active facturation||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"File active facturation||"|"||"|"||"|"||"|"||" +CTI_ESS_002|5|CTI_SEP|||Chiffre d'affaires facturé||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Chiffre d'affaires facturé||"|"||"|"||"|"||"|"||" +CTI_ESS_002|10|CTI_SEP|||Chiffre d'affaires valorisé||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Chiffre d'affaires valorisé||"|"||"|"||"|"||"|"||" +CTI_ESS_002|15|CTI_SEP|||Chiffre d'affaires facturé et valorisé||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Chiffre d'affaires facturé et valorisé||"|"||"|"||"|"||"|"||" +CTI_ESS_002|23|CTI_SEP|||Chiffre d'affaires autres prestations||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Chiffre d'affaires autres prestations||"|"||"|"||"|"||"|"||" +CTI_ESS_002|27|CTI_SHO_MT_TOT#1|||C.A. Chambres particulières||0|22|10|12||0|||0|0|ACTI000018|Activite C.P. par Rubrique|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUF & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LICTI_SHO_R"|1|1|||||0|0|0||||"||||||"|0||||"CTI_SHO_MT_TOT#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Chambres particulières||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_002|28|CTI_SUPHOT_TOT#1|||C.A. Suppléments hôteliers||0|22|10|12||0|||0|0|ACTI000018|Activité Hotellerie par Rubrique|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUF & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LICTI_SUPHOT_R"|1|1|||||0|0|0||||"||||||"|0||||"CTI_SUPHOT_TOT#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Suppléments hôteliers||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_002|14|CTI_T2A_MT_ENC#1|||C.A. Soins||0|22|10|12||0|||0|0|ACTI000018|Valorisation par Forme d'activité et UF|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_T2A_MT_ENC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Soins||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_002|9|CTI_T2A_MT_FAC#1|||C.A. Soins||0|22|10|12||0|||0|0|ACTI000018|Facturation par Forme d'activité et UF|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_T2A_MT_FAC#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Soins||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_002|21|CTI_T2A_MT_TOT#1|||C.A. Soins||0|22|10|12||0|||0|0|ACTI000018|Activite par Forme d'activité et UF|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_T2A_MT_TOT#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Soins||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_002|25|CTI_UCD_MT_TOT#1|||C.A. Médicaments||0|22|10|12||0|||0|0|ACTI000018|Activité Médicaments par Médecin|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LICTI_UCD_R"|1|1|||||0|0|0||||"||||||"|0||||"CTI_UCD_MT_TOT#1||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Médicaments||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_003|22|CTI_CAM_SOINS_FACVAL#2|||C.A. Soins Moyen||0|22|10|12||0|||0|0|ACTI000018|Activité par Spécialité et Médecin|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=SPM & +GROUPBY_TAB=TAB & +GROUPBY_2=MED & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_CAM_SOINS_FACVAL#2||||||||||||||||"|"*CALC||||||||||||||||"|"C.A. Soins Moyen||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_003|17|CTI_EMC|||EMC||0|22|10|12||0|||0|0|ACTI000018|Activité par Spécialité médecin et Médecin|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=SPM & +GROUPBY_TAB=TAB & +GROUPBY_2=MED & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_EMC||||||||||||||||"|"OCCUPATION||||||||||||||||"|"EMC||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_003|12|CTI_MTENC_C#2|||C.A. Total||0|22|10|12||0|||0|0|ACTI000018|Valorisation par Forme d'activité et UF|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=TSE & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_MTENC_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Total||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_003|7|CTI_MTFAC_C#2|||C.A. Total||0|22|10|12||0|||0|0|ACTI000018|Facturation par Forme d'activité et UF|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_MTFAC_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Total||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_003|19|CTI_MT_FAC_TOT#2|||C.A. Total||0|22|10|12||0|||0|0|ACTI000018|Activité par Domaine et Groupe d'activité|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=GHMCLS09 & +GROUPBY_TAB=TAB & +GROUPBY_2=GHMCLS07 & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_MT_FAC_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Total||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_003|18|CTI_NB6_JSN|||Journées||0|22|10|12||0|||0|0|ACTI000018|Activité par Rubrique CTI et rubrique|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUFCLS04 & +GROUPBY_TAB=TAB & +GROUPBY_2=RUFCLS31 & +GROUPBY_3=RUF & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_NB6_JSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Journées||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_003|2|CTI_NBSEJO|||Séjours||0|22|10|12||0|||0|0|ACTI000123|Occupation par forme d'activité et UF|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF"|1|1|||||0|0|0||||"||||||"|0||||"CTI_NBSEJO||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Séjours||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_003|16|CTI_NB_SEJ_FAEN#2|||Séjours||0|22|10|12||0|||0|0|ACTI000018|Activité par Forme d'activité et UF|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_NB_SEJ_FAEN#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_003|4|CTI_NB_SEJ_VAL#2|||||0|22|10|12||0|||0|0|ACTI000018|Valorisation par mois|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MOISA & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||||0||||"||||||"|0||||"CTI_NB_SEJ_VAL#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"0||"|"0||" +CTI_ESS_003|11|CTI_NB_SEJ_VAL#2|||Séjours||0|22|10|12||0|||0|0|ACTI000018|Valorisation par Rubrique CTI et Rubrique|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUFCLS04 & +GROUPBY_TAB=TAB & +GROUPBY_2=RUF & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_NB_SEJ_VAL#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_003|3|CTI_NSFAC_C#2|||Séjours Facturés||0|22|10|12||0|||0|0|ACTI000018|Facturation par mois|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MOISA & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_NSFAC_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours Facturés||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_003|6|CTI_NSFAC_C#2|||Séjours||0|22|10|12||0|||0|0|ACTI000018|Facturation par Rubrique CTI et Rubrique|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUFCLS04 & +GROUPBY_TAB=TAB & +GROUPBY_2=RUFCLS31 & +GROUPBY_3=RUF & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_NSFAC_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_003|24|CTI_PROTH_MT_TOT#2|||C.A. Prothèses||0|22|10|12||0|||0|0|ACTI000018|Activité Prothèses par Médecin|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S22"|1|1|||||0|0|0||||"||||||"|0||||"CTI_PROTH_MT_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Prothèses||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_003|13|CTI_RUBMED_MT_ENC#2|||C.A. Séjour||0|22|10|12||0|||0|0|ACTI000018|Valorisation par Forme d'activité et UF|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_RUBMED_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_RUBMED_MT_ENC#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Séjour||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_003|8|CTI_RUBMED_MT_FAC#2|||C.A. Séjour||0|22|10|12||0|||0|0|ACTI000018|Facturation par Forme d'activité et UF|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_RUBMED_R & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_RUBMED_MT_FAC#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Séjour||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_003|20|CTI_RUBMED_MT_TOT#2|||C.A. Séjour||0|22|10|12||0|||0|0|ACTI000018|Activité par Forme d'activité et UF|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_RUBMED_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_RUBMED_MT_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Séjour||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_003|26|CTI_SEH_MT_TOT#2|||C.A. Forfaits SE||0|22|10|12||0|||0|0|ACTI000018|Activité SEh par Médecin|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S03"|1|1|||||0|0|0||||"||||||"|0||||"CTI_SEH_MT_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Forfaits SE||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_003|1|CTI_SEP|||File active facturation||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"File active facturation||"|"||"|"||"|"||"|"||" +CTI_ESS_003|5|CTI_SEP|||Chiffre d'affaires facturé||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Chiffre d'affaires facturé||"|"||"|"||"|"||"|"||" +CTI_ESS_003|10|CTI_SEP|||Chiffre d'affaires valorisé||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Chiffre d'affaires valorisé||"|"||"|"||"|"||"|"||" +CTI_ESS_003|15|CTI_SEP|||Chiffre d'affaires facturé et valorisé||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Chiffre d'affaires facturé et valorisé||"|"||"|"||"|"||"|"||" +CTI_ESS_003|23|CTI_SEP|||Chiffre d'affaires autres prestations||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Chiffre d'affaires autres prestations||"|"||"|"||"|"||"|"||" +CTI_ESS_003|27|CTI_SHO_MT_TOT#2|||C.A. Chambres particulières||0|22|10|12||0|||0|0|ACTI000018|Activite C.P. par Rubrique|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUF & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S11"|1|1|||||0|0|0||||"||||||"|0||||"CTI_SHO_MT_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Chambres particulières||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_003|28|CTI_SUPHOT_TOT#2|||C.A. Suppléments hôteliers||0|22|10|12||0|||0|0|ACTI000018|Activité Hotellerie par Rubrique|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUF & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S12"|1|1|||||0|0|0||||"||||||"|0||||"CTI_SUPHOT_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Suppléments hôteliers||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_003|14|CTI_T2A_MT_ENC#2|||C.A. Soins||0|22|10|12||0|||0|0|ACTI000018|Valorisation par Forme d'activité et UF|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_T2A_MT_ENC#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Soins||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_003|9|CTI_T2A_MT_FAC#2|||C.A. Soins||0|22|10|12||0|||0|0|ACTI000018|Facturation par Forme d'activité et UF|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TREE & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_T2A_MT_FAC#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Soins||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_003|21|CTI_T2A_MT_TOT#2|||C.A. Soins||0|22|10|12||0|||0|0|ACTI000018|Activite par Forme d'activité et UF|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_T2A_MT_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Soins||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_003|25|CTI_UCD_MT_TOT#2|||C.A. Médicaments||0|22|10|12||0|||0|0|ACTI000018|Activité Médicaments par Médecin|"QUELLEDATE=2&PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +_ONGLET_FAC_VISIBLE=false & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S21"|1|1|||||0|0|0||||"||||||"|0||||"CTI_UCD_MT_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Médicaments||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_004|23|CTI_CACPTENC_C_12M|||C.A. mensuel moyen (12 derniers mois)||0|22|10|12||0|||0|0||||1|1|||||0|0|0||||"||||||"|0||||"CTI_CACPTENC_C_12M||||||||||||||||"|"*CALC||||||||||||||||"|"C.A. mensuel moyen (12 derniers mois)||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_004|7|CTI_CAM_SOINS_CPT|||C.A. Soins Moyen||0|22|10|12||0|||0|0|ACTI000018|Comptabilisation par Spécialité et Médecin|"QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=SPM & +GROUPBY_TAB=TAB & +GROUPBY_2=MED & +QUELMONTANT=2 & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_CAM_SOINS_CPT||||||||||||||||"|"*CALC||||||||||||||||"|"C.A. Soins Moyen||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_004|5|CTI_CA_RUBMED_MT_CPT|||C.A. Séjour||0|22|10|12||0|||0|0|ACTI000018|Comptabilisation par Forme d'activité et UF|"QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +QUELMONTANT=2 & +RUBRIQUE_CA=#LICTI_RUBMED_R & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_CA_RUBMED_MT_CPT||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Séjour||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_004|6|CTI_CA_T2A_CPT|||C.A. Soins||0|22|10|12||0|||0|0|ACTI000018|Comptabilisation par Forme d'activité et UF|"QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +QUELMONTANT=2 & +RUBRIQUE_CA=#LICTI_T2A_R & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_CA_T2A_CPT||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Soins||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_004|19|CTI_CCAACTCOMPTA_C|||C.A. Total Activité Comptable||0|22|10|12||0|||0|0||||1|1|||||0|0|0||||"||||||"|0||||"CTI_CCAACTCOMPTA_C||||||||||||||||"|"*CALC||||||||||||||||"|"C.A. Total Activité Comptable||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_004|20|CTI_CCAACTCOMPTA_SEJOUR_C|||C.A. Séjours Activité comptable||0|22|10|12||0|||0|0|ACTI000104|Activite comptable par Forme d'activité et UF|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +OPTION1=MNT & +_ONGLET_O2_VISIBLE=false & +_ONGLET_O3_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S01"|0|0|||||0|0|0||||"||||||"|0||||"CTI_CCAACTCOMPTA_SEJOUR_C||||||||||||||||"|"*CALC||||||||||||||||"|"C.A. Séjours Activité comptable||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_004|21|CTI_CCAACTCOMPTA_SOINS_C|||C.A. Soins Activité comptable||0|22|10|12||0|||0|0|ACTI000104|Activité comptable par Forme d'activité et UF|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +OPTION1=MNT & +_ONGLET_O2_VISIBLE=false & +_ONGLET_O3_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_1:S1"|0|0|||||0|0|0||||"||||||"|0||||"CTI_CCAACTCOMPTA_SOINS_C||||||||||||||||"|"*CALC||||||||||||||||"|"C.A. Soins Activité comptable||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_004|17|CTI_CCAENCDER_C|||En-cours du dernier mois||0|22|10|12||0|||0|0|ACTI000104|Ecarts d'estimation par Rubrique|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUCCLS04 & +GROUPBY_TAB=TREE & +GROUPBY_2=RUFCLS31 & +OPTION1=MNT"|0|0|||||0|0|0||||"||||||"|0||||"CTI_CCAENCDER_C||||||||||||||||"|"EN_COURS||||||||||||||||"|"En-cours du dernier mois||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_004|25|CTI_CCAENCDER_C|||En-cours du dernier mois||0|22|10|12||0|||0|0||||0|0|||||0|0|0||||"||||||"|0||||"CTI_CCAENCDER_C||||||||||||||||"|"EN_COURS||||||||||||||||"|"En-cours du dernier mois||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_004|15|CTI_CCAENCRECPRE_C|||Report En-cours||0|22|10|12||0|||0|0|ACTI000104|Activite comptable par Rubrique|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUFCLS31 & +GROUPBY_TAB=TAB & +GROUPBY_2=RUF & +OPTION1=MNT & +_ONGLET_O2_VISIBLE=false & +_ONGLET_O3_VISIBLE=false"|0|0|||||0|0|0||||"||||||"|0||||"CTI_CCAENCRECPRE_C||||||||||||||||"|"EN_COURS||||||||||||||||"|"Report En-cours||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_004|18|CTI_CCAENCVAR_C|||Variation En-cours||0|22|10|12||0|||0|0||||0|0|||||0|0|0||||"||||||"|0||||"CTI_CCAENCVAR_C||||||||||||||||"|"EN_COURS||||||||||||||||"|"Variation En-cours||"|"||"|"||"|"0||0"|"0||0" +CTI_ESS_004|26|CTI_CDELSOLCA_C|||D.M.R.||0|22|10|12||0|||0|0||||1|0|||||0|0|0||||"||||||"|0||||"CTI_CDELSOLCA_C||||||||||||||||"|"*CALC||||||||||||||||"|"D.M.R.||"|"||"|"||"|"1||0"|"0||0" +CTI_ESS_004|12|CTI_CPC_MT_CPT|||C.A. Chambres particulières||0|22|10|12||0|||0|0|ACTI000018|Comptabilisation C.P. par Rubrique|"QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUF & +GROUPBY_TAB=TAB & +QUELMONTANT=2 & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S11"|1|1|||||0|0|0||||"||||||"|0||||"CTI_CPC_MT_CPT||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Chambres particulières||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_004|24|CTI_MTSOLCLI_C|||Solde Compte client||0|22|10|12||0|||0|0|ACTI000022|Compte client par Tiers payant|"PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=TTP & +GROUPBY_TAB=TAB & +GROUPBY_2=TPY & +QSD=0 & +QMC=0 & +QMR=0"|1|0|||||0|0|0||||"||||||"|0||||"CTI_MTSOLCLI_C||||||||||||||||"|"CLIENTS_CLINIQUE||||||||||||||||"|"Solde Compte client||"|"||"|"||"|"1||0"|"0||0" +CTI_ESS_004|4|CTI_MTVEN_C#4|||C.A. Total||0|22|10|12||0|||0|0|ACTI000018|Comptabilisation par Compte|"QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=CPT & +GROUPBY_TAB=TAB & +QUELMONTANT=2 & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_MTVEN_C#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Total||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_004|16|CTI_MTVEN_C#4|||C.A. Ventes||0|22|10|12||0|||0|0||||1|1|||||0|0|0||||"||||||"|0||||"CTI_MTVEN_C#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Ventes||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_004|2|CTI_NSCPT_C|||Séjours comptabilisés||0|22|10|12||0|||0|0|ACTI000018|Comptabilisation par Forme d'activité et UF|"QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=FOA & +GROUPBY_TAB=TAB & +GROUPBY_2=UF & +QUELMONTANT=2 & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false"|1|1|||||0|0|0||||"||||||"|0||||"CTI_NSCPT_C||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Séjours comptabilisés||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_004|9|CTI_PROTH_MT_CPT|||C.A. Prothèses||0|22|10|12||0|||0|0|ACTI000018|Comptabilisation Prothèses par Médecin|"QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +QUELMONTANT=2 & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S22"|1|1|||||0|0|0||||"||||||"|0||||"CTI_PROTH_MT_CPT||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Prothèses||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_004|11|CTI_SEH_MT_CPT|||C.A. Forfaits SE||0|22|10|12||0|||0|0|ACTI000018|Comptabilisation SEh par Médecin|"QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +QUELMONTANT=2 & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S03"|1|1|||||0|0|0||||"||||||"|0||||"CTI_SEH_MT_CPT||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Forfaits SE||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_004|1|CTI_SEP|||Séjours||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Séjours||"|"||"|"||"|"||"|"||" +CTI_ESS_004|3|CTI_SEP|||Chiffre d'affaires comptabilisé||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Chiffre d'affaires comptabilisé||"|"||"|"||"|"||"|"||" +CTI_ESS_004|8|CTI_SEP|||Chiffre d'affaires autres prestations||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Chiffre d'affaires autres prestations||"|"||"|"||"|"||"|"||" +CTI_ESS_004|14|CTI_SEP|||Comptabilisation et En-cours||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Comptabilisation et En-cours||"|"||"|"||"|"||"|"||" +CTI_ESS_004|22|CTI_SEP|||Délai Moyen de Règlement||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Délai Moyen de Règlement||"|"||"|"||"|"||"|"||" +CTI_ESS_004|13|CTI_SUPHOT_CA_CPT|||C.A. Suppléments hôteliers||0|22|10|12||0|||0|0|ACTI000018|Comptabilisation Hotellerie par Rubrique|"QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=RUF & +GROUPBY_TAB=TAB & +QUELMONTANT=2 & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S12"|1|1|||||0|0|0||||"||||||"|0||||"CTI_SUPHOT_CA_CPT||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Suppléments hôteliers||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_004|10|CTI_UCD_MT_CPT|||C.A. Médicaments||0|22|10|12||0|||0|0|ACTI000018|Comptabilisation Médicaments par Médecin|"QUELLEDATE=4 & +PERIODE=VIEW.CURRENT_PERIODE & +TOPERIODE=VIEW.CURRENT_TOPERIODE & +GROUPBY=MED & +GROUPBY_TAB=TAB & +QUELMONTANT=2 & +_ONGLET_VAL_VISIBLE=false & +_ONGLET_FAV_VISIBLE=false & +_ONGLET_TIE_VISIBLE=false & +RUBRIQUE=#LSCTI_RUB_2:S21"|1|1|||||0|0|0||||"||||||"|0||||"CTI_UCD_MT_CPT||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"C.A. Médicaments||"|"||"|"||"|"1||0"|"1||0" +CTI_ESS_006|10|CTI_CA_FACT_VAL|||||0|0|0|0||0|||0|0|ACTI000057|Suivi par Médecin (Cumul dernière semaine)|"ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=MED & VIEWTAB = 1"|0|0|||||0|0|0||||"||||||"|0||||"CTI_CA_FACT_VAL||||||||||||||||"|"SEJOURS||||||||||||||||"|"||"|"||"|"||"|"0||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_006|9|CTI_CA_FAC_ETAB|||||0|0|0|0||0|||0|0|ACTI000057|Suivi par Domaine et groupe d'activité (Cumul dernière semaine)|"ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=GHMCLS09 & GROUPBY_2 = GHMCLS07 & VIEWTAB=1"|0|0|||||0|0|0||||"||||||"|0||||"CTI_CA_FAC_ETAB||||||||||||||||"|"SEJOURS||||||||||||||||"|"||"|"||"|"||"|"0||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_006|13|CTI_CA_NON_EXP_ETAB|||||0|0|0|0||0|||0|0|ACTI000057|Suivi par niveau de forme d'activité (Niveau 1) (Cumul dernière semaine)|"ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=FOACLS01 & VIEWTAB=3"|0|0|||||0|0|0||||"||||||"|0||||"CTI_CA_NON_EXP_ETAB||||||||||||||||"|"SEJOURS||||||||||||||||"|"||"|"||"|"||"|"0||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_006|16|CTI_CA_NON_SOL|||||0|0|0|0||0|||0|0|ACTI000057|Suivi des délais par mois (Cumul dernier mois)|"ALIAS_PERIODE=CUM_LAST_MONTH& +GROUPBY=NUMEROMOIS & VIEWTAB=4"|0|0|||||0|0|0||||"||||||"|0||||"CTI_CA_NON_SOL||||||||||||||||"|"SEJOURS||||||||||||||||"|"||"|"||"|"||"|"0||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_006|5|CTI_CA_VAL_ETAB|||||0|0|0|0||0|||0|0|ACTI000057|Suivi des délai par mois (Cumul dernière semaine)|"ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=NUMEROMOIS & VIEWTAB=2"|0|0|||||0|0|0||||"||||||"|0||||"CTI_CA_VAL_ETAB||||||||||||||||"|"SEJOURS||||||||||||||||"|"||"|"||"|"||"|"0||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_006|19|CTI_DELAIFAC|||||0|0|0|0||0|||0|0|ACTI000057|Suivi des délais par mois (Cumul dernière semaine)|"ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=NUMEROMOIS"|0|0|||||0|0|0||||"||||||"|0||||"CTI_DELAIFAC||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"0||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_006|20|CTI_DELAISOL|||||0|0|0|0||0|||0|0|ACTI000057|Suivi des délais par médecin (Cumul dernière semaine)|"ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=MED"|0|0|||||0|0|0||||"||||||"|0||||"CTI_DELAISOL||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"0||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_006|18|CTI_DEL_GROUPAGE|||||0|0|0|0||0|||0|0|ACTI000057|Suivi des délais par mois (Cumul dernier mois)|"ALIAS_PERIODE=CUM_LAST_MONTH& +GROUPBY=NUMEROMOIS"|0|0|||||0|0|0||||"||||||"|0||||"CTI_DEL_GROUPAGE||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"0||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_006|7|CTI_NBSEJ_SOR|||||0|0|0|0||0|||0|0|ACTI000057|Suivi des délai par UF (Cumul dernière semaine)|"ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=UFS&VIEWTAB = 1"|0|0|||||0|0|0||||"||||||"|0||||"CTI_NBSEJ_SOR||||||||||||||||"|"SEJOURS||||||||||||||||"|"||"|"||"|"||"|"0||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_006|8|CTI_NB_FACTURES|||||0|0|0|0||0|||0|0|ACTI000057|Suivi des délais par Forme d'activité et UF (Cumul dernière semaine)|"ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=FOA&GROUPBY_2=UFS & VIEWTAB = 1"|0|0|||||0|0|0||||"||||||"|0||||"CTI_NB_FACTURES||||||||||||||||"|"SEJOURS||||||||||||||||"|"||"|"||"|"||"|"0||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_006|3|CTI_NB_GP_NFAC|||||0|0|0|0||0|||0|0|ACTI000057|Suivi des délais par médecin (Cumul dernière semaine)|"ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=MED"|0|0|||||0|0|0||||"||||||"|0||||"CTI_NB_GP_NFAC||||||||||||||||"|"SEJOURS||||||||||||||||"|"||"|"||"|"||"|"0||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_006|2|CTI_NB_NGR_SOR|||||0|0|0|0||0|||0|0|ACTI000057|Suivi des délais par mois (Cumul dernier jour)|"ALIAS_PERIODE=CUM_NOW& +GROUPBY=NUMEROMOIS"|0|0|||||0|0|0||||"||||||"|0||||"CTI_NB_NGR_SOR||||||||||||||||"|"SEJOURS||||||||||||||||"|"||"|"||"|"||"|"0||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_006|4|CTI_NB_NONFAC|||||0|0|0|0||0|||0|0|ACTI000057|Suivi des délais par mois (Cumul dernière semaine)|"ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=NUMEROMOIS"|0|0|||||0|0|0||||"||||||"|0||||"CTI_NB_NONFAC||||||||||||||||"|"SEJOURS||||||||||||||||"|"||"|"||"|"||"|"0||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_006|12|CTI_NB_NON_EXP|||||0|0|0|0||0|||0|0|ACTI000057|Suivi par niveau de forme d'activité (Niveau 2) (Cumul dernière semaine)|"ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=FOACLS02 & VIEWTAB =3"|0|0|||||0|0|0||||"||||||"|0||||"CTI_NB_NON_EXP||||||||||||||||"|"SEJOURS||||||||||||||||"|"||"|"||"|"||"|"0||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_006|15|CTI_NB_NON_SOLD|||||0|0|0|0||0|||0|0|ACTI000057|Suivi des délais par Tiers payant (Cumul dernière semaine)|"ALIAS_PERIODE=CUM_LAST_WEEK & +GROUPBY=TPY & VIEWTAB = 4"|0|0|||||0|0|0||||"||||||"|0||||"CTI_NB_NON_SOLD||||||||||||||||"|"SEJOURS||||||||||||||||"|"||"|"||"|"||"|"0||0||||||||||||||"|"0||0||||||||||||||" +CTI_ESS_006|1|CTI_SEP|||Reste a facturer||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Reste a facturer||"|"||"|"||"|"||||||||||||||||"|"||||||||||||||||" +CTI_ESS_006|6|CTI_SEP|||Facturation||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Facturation||"|"||"|"||"|"||||||||||||||||"|"||||||||||||||||" +CTI_ESS_006|11|CTI_SEP|||Expédition||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Expédition||"|"||"|"||"|"||||||||||||||||"|"||||||||||||||||" +CTI_ESS_006|14|CTI_SEP|||Solde||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Solde||"|"||"|"||"|"||||||||||||||||"|"||||||||||||||||" +CTI_ESS_006|17|CTI_SEP|||Délai de traitement||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Délai de traitement||"|"||"|"||"|"||||||||||||||||"|"||||||||||||||||" +CTI_EX1|17|CTI_MTCOM_H#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTCOM_H#4||||||||||||||||"|"FACTURATION_HONORAIRE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|22|CTI_MTENC_C#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTENC_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|20|CTI_MTFAC_C#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTFAC_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|16|CTI_MTVEN_C#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTVEN_C#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|24|CTI_MT_FAC_TOT#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MT_FAC_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|6|CTI_NBAMB|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBAMB||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|3|CTI_NBENTDIR|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBENTDIR||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|7|CTI_NBEXT|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBEXT||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|5|CTI_NBJSN|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBJSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|8|CTI_NBSCE|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBSCE||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|2|CTI_NBSEJO|||Nombre de séjours Période||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBSEJO||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Nombre de séjours Période||"|"||"|"||"|"||"|"||" +CTI_EX1|4|CTI_NBSORDIR|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBSORDIR||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|13|CTI_NB_GROU#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NB_GROU#2||||||||||||||||"|"SEJOURS||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|12|CTI_NB_NGROU|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NB_NGROU||||||||||||||||"|"SEJOURS||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|11|CTI_NB_SEJ_FAEN#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NB_SEJ_FAEN#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|23|CTI_NB_SEJ_FAEN#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NB_SEJ_FAEN#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|21|CTI_NB_SEJ_VAL#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NB_SEJ_VAL#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|19|CTI_NSFAC_C#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NSFAC_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|15|CTI_NSFAC_CS#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NSFAC_CS#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX1|1|CTI_SEP|||Occupation||0|0|10|14|bold|0||0xffcc00|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Occupation||"|"||"|"||"|"||"|"||" +CTI_EX1|10|CTI_SEP|||Etat des dossiers||0|0|10|14|bold|0||0xffcc00|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Etat des dossiers||"|"||"|"||"|"||"|"||" +CTI_EX1|14|CTI_SEP|||Activité Etablissement Date de Vente||0|0|10|14|bold|0||0xffcc00|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Activité Etablissement Date de Vente||"|"||"|"||"|"||"|"||" +CTI_EX1|18|CTI_SEP|||Activité Clinique||0|0|10|14|bold|0||0xffcc00|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Activité Clinique||"|"||"|"||"|"||"|"||" +CTI_EX1|9|CTI_TX_HOAM|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_TX_HOAM||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|40|CTI_DMSR|||||0|0|0|0|normal|0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_DMSR||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|41|CTI_DMSTOT|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_DMSTOT||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|25|CTI_NB2_JSN|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NB2_JSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|30|CTI_NB2_JSN|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NB2_JSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|26|CTI_NB5_JSN|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NB5_JSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|3|CTI_NBAMB|||||0|0|0|0|normal|0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBAMB||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|11|CTI_NBAMB|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBAMB||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|24|CTI_NBAMB|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBAMB||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|36|CTI_NBAMB|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBAMB||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|27|CTI_NBCHPO|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBCHPO||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|2|CTI_NBENTDIR|||||0|0|0|0|normal|0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBENTDIR||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|6|CTI_NBENT_SA|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBENT_SA||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|7|CTI_NBENT_SAE|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBENT_SAE||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|8|CTI_NBENT_SAES|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBENT_SAES||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|4|CTI_NBEXT|||||0|0|0|0|normal|0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBEXT||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|12|CTI_NBEXT|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBEXT||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|23|CTI_NBJSN|||||0|0|0|0|normal|0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBJSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|33|CTI_NBJSN|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBJSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|31|CTI_NBPLACES|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBPLACES||||||||||||||||"|"PLACES||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|34|CTI_NBPLACES_H|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBPLACES_H||||||||||||||||"|"PLACES||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|5|CTI_NBSCE|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBSCE||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|13|CTI_NBSCE|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBSCE||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|22|CTI_NBSEJO|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBSEJO||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|10|CTI_NBSORDIR|||||0|0|0|0|normal|0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBSORDIR||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|14|CTI_NBSOR_SA|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBSOR_SA||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|16|CTI_NBSOR_SAE|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBSOR_SAE||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|17|CTI_NBSOR_SAES|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBSOR_SAES||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|20|CTI_NBURG|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBURG||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|19|CTI_NB_BEBE|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NB_BEBE||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|15|CTI_RAT_AMB_END|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_RAT_AMB_END||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|1|CTI_SEP|||Entrées||0|0|0|14|bold|0||0xffcc33|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Entrées||"|"||"|"||"|"||"|"||" +CTI_EX2|9|CTI_SEP|||Sorties||0|0|0|14|bold|0||0xffcc33|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Sorties||"|"||"|"||"|"||"|"||" +CTI_EX2|18|CTI_SEP|||Compteurs Divers||0|0|0|14|bold|0||0xffcc33|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Compteurs Divers||"|"||"|"||"|"||"|"||" +CTI_EX2|21|CTI_SEP|||Journées||0|0|0|14|bold|0||0xffcc33|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Journées||"|"||"|"||"|"||"|"||" +CTI_EX2|29|CTI_SEP|||Taux d'occupation||0|0|0|14|bold|0||0xffcc33|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Taux d'occupation||"|"||"|"||"|"||"|"||" +CTI_EX2|39|CTI_SEP|||DMS||0|0|0|14|bold|0||0xffcc33|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"DMS||"|"||"|"||"|"||"|"||" +CTI_EX2|28|CTI_TXCHP_NBJ|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_TXCHP_NBJ||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|38|CTI_TX_AM|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_TX_AM||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|35|CTI_TX_HO|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_TX_HO||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX2|32|CTI_TX_HOAM|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_TX_HOAM||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|28|CTI_CAMFAC_CS|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_CAMFAC_CS||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|13|CTI_CAMFAC_DC|||CA Moyen Facturé||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_CAMFAC_DC||||||||||||||||"|"*CALC||||||||||||||||"|"CA Moyen Facturé||"|"||"|"||"|"||"|"||" +CTI_EX3|14|CTI_MTCOM_H#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTCOM_H#4||||||||||||||||"|"FACTURATION_HONORAIRE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|16|CTI_MTC_CHDV_FAC|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTC_CHDV_FAC||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|30|CTI_MTENC_C#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTENC_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|19|CTI_MTFAC1_C#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTFAC1_C#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|23|CTI_MTFAC2_C#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTFAC2_C#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|27|CTI_MTFAC_C#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTFAC_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|12|CTI_MTVEN_C#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTVEN_C#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|32|CTI_MT_FAC_TOT#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MT_FAC_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|6|CTI_NBAMB|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBAMB||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|3|CTI_NBENTDIR|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBENTDIR||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|7|CTI_NBEXT|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBEXT||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|5|CTI_NBJSN|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBJSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|8|CTI_NBSCE|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBSCE||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|2|CTI_NBSEJO|||Nombre de séjours Période||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBSEJO||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Nombre de séjours Période||"|"||"|"||"|"||"|"||" +CTI_EX3|4|CTI_NBSORDIR|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBSORDIR||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|31|CTI_NB_SEJ_FAEN#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NB_SEJ_FAEN#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|29|CTI_NB_SEJ_VAL#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NB_SEJ_VAL#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|18|CTI_NSFAC1_CS#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NSFAC1_CS#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|22|CTI_NSFAC2_CS#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NSFAC2_CS#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|26|CTI_NSFAC_C#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NSFAC_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|11|CTI_NSFAC_CS#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NSFAC_CS#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|20|CTI_RAT_AMB1_CAT|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_RAT_AMB1_CAT||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|24|CTI_RAT_AMB2_CAT|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_RAT_AMB2_CAT||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|15|CTI_RAT_CAH_CAL|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_RAT_CAH_CAL||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX3|1|CTI_SEP|||Occupation||0|0|0|14|bold|0||0xffcc00|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Occupation||"|"||"|"||"|"||"|"||" +CTI_EX3|10|CTI_SEP|||Activité Etablissement Date de Vente||0|0|0|14|bold|0||0xffcc00|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Activité Etablissement Date de Vente||"|"||"|"||"|"||"|"||" +CTI_EX3|17|CTI_SEP|||Activité Hospitalisés : Date de Vente||0|0|0|14|bold|0||0xffcc33|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Activité Hospitalisés : Date de Vente||"|"||"|"||"|"||"|"||" +CTI_EX3|21|CTI_SEP|||Activité Ambulatoire : Date de Vente||0|0|0|14|bold|0||0xffcc33|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Activité Ambulatoire : Date de Vente||"|"||"|"||"|"||"|"||" +CTI_EX3|25|CTI_SEP|||Activité Clinique Facturée et Valorisée : Date de Sortie||0|0|0|14|bold|0||0xffcc00|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Activité Clinique Facturée et Valorisée : Date de Sortie||"|"||"|"||"|"||"|"||" +CTI_EX3|9|CTI_TX_HOAM|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_TX_HOAM||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|47|CTI_CAMFAC1_DC|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_CAMFAC1_DC||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|51|CTI_CAMFAC2_DC|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_CAMFAC2_DC||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|55|CTI_CAMFAC5_DC|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_CAMFAC5_DC||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|39|CTI_CAMFAC_CS|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_CAMFAC_CS||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|19|CTI_CAMFAC_DC|||CA Moyen Facturé||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_CAMFAC_DC||||||||||||||||"|"*CALC||||||||||||||||"|"CA Moyen Facturé||"|"||"|"||"|"||"|"||" +CTI_EX4|56|CTI_DIA_MT_FAC#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_DIA_MT_FAC#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|14|CTI_DMSR|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_DMSR||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|15|CTI_DMSTOT|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_DMSTOT||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|21|CTI_MTCOM_H#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTCOM_H#4||||||||||||||||"|"FACTURATION_HONORAIRE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|23|CTI_MTC_CHDV_FAC|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTC_CHDV_FAC||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|41|CTI_MTENC_C#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTENC_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|46|CTI_MTFAC1_C#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTFAC1_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|26|CTI_MTFAC1_C#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTFAC1_C#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|50|CTI_MTFAC2_C#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTFAC2_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|30|CTI_MTFAC2_C#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTFAC2_C#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|54|CTI_MTFAC5_C#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTFAC5_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|34|CTI_MTFAC5_C#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTFAC5_C#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|38|CTI_MTFAC_C#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTFAC_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|18|CTI_MTVEN_C#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MTVEN_C#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|43|CTI_MT_FAC_TOT#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_MT_FAC_TOT#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|10|CTI_NB2_JSN|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NB2_JSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|6|CTI_NBAMB|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBAMB||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|3|CTI_NBENTDIR|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBENTDIR||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|7|CTI_NBEXT|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBEXT||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|5|CTI_NBJSN|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBJSN||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|11|CTI_NBPLACES|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBPLACES||||||||||||||||"|"PLACES||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|8|CTI_NBSCE|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBSCE||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|2|CTI_NBSEJO|||Nombre de séjours Période||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBSEJO||||||||||||||||"|"OCCUPATION||||||||||||||||"|"Nombre de séjours Période||"|"||"|"||"|"||"|"||" +CTI_EX4|4|CTI_NBSORDIR|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NBSORDIR||||||||||||||||"|"OCCUPATION||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|42|CTI_NB_SEJ_FAEN#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NB_SEJ_FAEN#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|40|CTI_NB_SEJ_VAL#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NB_SEJ_VAL#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|45|CTI_NSFAC1_CS#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NSFAC1_CS#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|25|CTI_NSFAC1_CS#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NSFAC1_CS#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|49|CTI_NSFAC2_CS#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NSFAC2_CS#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|29|CTI_NSFAC2_CS#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NSFAC2_CS#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|53|CTI_NSFAC5_CS#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NSFAC5_CS#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|33|CTI_NSFAC5_CS#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NSFAC5_CS#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|37|CTI_NSFAC_C#2|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NSFAC_C#2||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|17|CTI_NSFAC_CS#4|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_NSFAC_CS#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|27|CTI_RAT_AMB1_CAT|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_RAT_AMB1_CAT||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|31|CTI_RAT_AMB2_CAT|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_RAT_AMB2_CAT||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|35|CTI_RAT_AMB5_CAT|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_RAT_AMB5_CAT||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|22|CTI_RAT_CAH_CAL|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_RAT_CAH_CAL||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_EX4|20|CTI_RUBMED_MT_FAC#4||Montant CA (Hors Pdts refac.)|Montant CA (Hors Produits refacturables)||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_RUBMED_MT_FAC#4||||||||||||||||"|"FACTURATION_CLINIQUE||||||||||||||||"|"Montant CA (Hors Produits refacturables)||"|"||"|"||"|"||"|"||" +CTI_EX4|1|CTI_SEP|||Occupation.||0|0|0|14|bold|0||0xffcc00|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Occupation.||"|"||"|"||"|"||"|"||" +CTI_EX4|9|CTI_SEP|||Taux d'occupation||0|0|10|10|bold|0||0xffff66|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Taux d'occupation||"|"||"|"||"|"||"|"||" +CTI_EX4|13|CTI_SEP|||DMS||0|0|10|10|bold|0||0xffff66|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"DMS||"|"||"|"||"|"||"|"||" +CTI_EX4|16|CTI_SEP|||Activité Etablissement Date de Vente||0|0|0|14|bold|0||0xffcc00|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Activité Etablissement Date de Vente||"|"||"|"||"|"||"|"||" +CTI_EX4|24|CTI_SEP|||Activité Hospitalisés : Date de Vente||0|0|10|10|bold|0||0xffff66|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Activité Hospitalisés : Date de Vente||"|"||"|"||"|"||"|"||" +CTI_EX4|28|CTI_SEP|||Activité Ambulatoire : Date de Vente||0|0|10|10|bold|0||0xffff66|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Activité Ambulatoire : Date de Vente||"|"||"|"||"|"||"|"||" +CTI_EX4|32|CTI_SEP|||Activité Séances : Date de vente||0|0|10|10|bold|0||0xffff66|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Activité Séances : Date de vente||"|"||"|"||"|"||"|"||" +CTI_EX4|36|CTI_SEP|||Activité Clinique Facturée et Valorisée : Date de Sortie.||0|0|0|14|bold|0||0xffcc00|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Activité Clinique Facturée et Valorisée : Date de Sortie.||"|"||"|"||"|"||"|"||" +CTI_EX4|44|CTI_SEP|||Activité Hospitalisés : Date de Sortie||0|0|10|10|bold|0||0xffff66|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Activité Hospitalisés : Date de Sortie||"|"||"|"||"|"||"|"||" +CTI_EX4|48|CTI_SEP|||Activité Ambulatoire : Date de sortie||0|0|10|10|bold|0||0xffff66|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Activité Ambulatoire : Date de sortie||"|"||"|"||"|"||"|"||" +CTI_EX4|52|CTI_SEP|||Actvité Séances : Date de sortie||0|0|10|10|bold|0||0xffff66|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Actvité Séances : Date de sortie||"|"||"|"||"|"||"|"||" +CTI_EX4|12|CTI_TX_HOAM|||||0|0|0|0||0|||0|0|||| | |||||||0||||"||||||"|0||||"CTI_TX_HOAM||||||||||||||||"|"*CALC||||||||||||||||"|"||"|"||"|"||"|"||"|"||" +CTI_PF_AGG|1|CTI_SEP|||Portfolio CTI||0|26|0|14|bold|2|0xc0392b|0xcccccc|0|0|||| | |||||||0||||"||||||"|0||||"CTI_SEP||||||||||||||||"|"SEP||||||||||||||||"|"Portfolio CTI||"|"||"|"||"|"||"|"||" diff --git a/db/data2/dbdata_activite_t_severites_cti.csv b/db/data2/dbdata_activite_t_severites_cti.csv new file mode 100644 index 0000000..48b12f9 --- /dev/null +++ b/db/data2/dbdata_activite_t_severites_cti.csv @@ -0,0 +1,10 @@ +keepoid|severite_code|severite_texte +0|**|Non renseignee +1|1|Sévérité 1 +8|8|Non PMSI +2|ABCDE|Sévérité ABCDE +3|J|Sévérité J +4|S|séances +5|T|Sévérité T +6|Z|Sévérité Z +7|s|DS > 2 nuits diff --git a/db/data2/dbdata_activite_t_traitement_epmsi.csv b/db/data2/dbdata_activite_t_traitement_epmsi.csv new file mode 100644 index 0000000..b70d5e4 --- /dev/null +++ b/db/data2/dbdata_activite_t_traitement_epmsi.csv @@ -0,0 +1,11 @@ +keepoid|code|texte +0|**|Non renseigné +41|EXHAD|PMSI HAD Transmis +11|EXMCO|PMSI MCO Transmis +31|EXPSY|PMSI PSY Transmis +21|EXSSR|PMSI SSR Transmis +5|HPMSI|HORS PMSI +40|NEXHAD|PMSI HAD Non Transmis +10|NEXMCO|PMSI MCO Non Transmis +30|NEXPSY|PMSI PSY Non Transmis +20|NEXSSR|PMSI SSR Non Transmis diff --git a/db/data2/dbdata_activite_t_type_hospi_pmsi.csv b/db/data2/dbdata_activite_t_type_hospi_pmsi.csv new file mode 100644 index 0000000..9fd09b0 --- /dev/null +++ b/db/data2/dbdata_activite_t_type_hospi_pmsi.csv @@ -0,0 +1,11 @@ +oid|code|texte +1|11|MCO hospitalisés +1|12|MCO Ambulatoires +1|15|MCO Séances +1|21|SSR hospitalisation complète +1|22|SSR hospitalisation partiel +1|24|SSR Autres +1|30|Externes +1|31|PSY hospitalisation complète +1|32|PSY hospitalisation partiel +1|41|HAD diff --git a/db/data2/dbdata_activite_t_type_sejour.csv b/db/data2/dbdata_activite_t_type_sejour.csv new file mode 100644 index 0000000..22970e9 --- /dev/null +++ b/db/data2/dbdata_activite_t_type_sejour.csv @@ -0,0 +1,7 @@ +oid|code|texte +1|0|Non renseigné +1|1|Hospitalisé +1|2|Ambulatoires +1|3|Externes +1|5|Séances +1|9|Fictifs diff --git a/db/data2/dbdata_activite_t_types_gmt.csv b/db/data2/dbdata_activite_t_types_gmt.csv new file mode 100644 index 0000000..a042953 --- /dev/null +++ b/db/data2/dbdata_activite_t_types_gmt.csv @@ -0,0 +1,5 @@ +code|label|description +hc_forfaitisable|GMT forfaitisable (Hospitalisation complète)|Au moins 50% des séjours d’un même GME (Groupe Médico-Économique) se répartissent sur une période continue de 3 semaines. +hc_non_forfaitisable|GMT non forfaitisable (Hospitalisation complète)|Le GME ne respecte pas la règle de la forfaitisation (voir description du type_gmt 'hc_forfaitisable'). +hc_sans_zf|GMT sans zone forfaitaire (Hospitalisation Complète) |GMT où DZF = FZF = 7 (GMT en 7XXX des séjours en HC post 90 jours, en 8XXX des séjours < 8j avec transfert, décès ou mutation) ou DZF = FZF = 90 (GMT pédiatrie ou soins palliatifs) +hp_hebdomadaire|GMT hebdomadaire hospitalisation partielle|GMT récupéré des RHA des séjours en hospitalisation partielle. diff --git a/db/data2/dbdata_activite_t_vue_parametre.csv b/db/data2/dbdata_activite_t_vue_parametre.csv new file mode 100644 index 0000000..414e68b --- /dev/null +++ b/db/data2/dbdata_activite_t_vue_parametre.csv @@ -0,0 +1,30 @@ +oid|code|texte|data_code|data_entete|data_format|data_description|position_ratio|rang +1|L_DATA_101|CTI : Séjours - C.A Total|FAVNBS@MTFACENC@MMTFACENC@0@0@0@0@0@0@0@0@0@0@0@0|Séjours total@C.A total@C.A moyen total|#@#E@#E|Séjours facturés et valorisés@C.A facturé et valorisé@C.A Moyen Facturé et valorisé@0@0@0@0@0@0@0@0@0@0@0@0|000000000000000|0 +1|L_DATA_1|CTI : EMC - C.A Total |FAVEMC@MTFACENC@MMFPVEMC@0@0@0@0@0@0@0@0@0@0@0@0|EMC total@C.A total@C.A moyen total EMC|#@#E@#E|Equivalent Malade Complet Facturé ou Valorisé
Calculé d'après l'occupation des dossiers facturés ou Valorisés sur la base de
- 1 EMC par séjour en Hospitalisation Complète MCO
- 1 EMC par jour en Hospitalisation de jour MCO
- 1 EMC par séance en Hospitalisation séance MCO
- 1 EMC par semaine en Hospitalisation Complète SSR ou PSY
- 1 EMC par jour en Hospitalisation de jour SSR ou PSY
- 1 EMC par séjour pour les autres cas (Externes)
Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d'activité ou date de sortie@C.A facturé et valorisé@C.A Moyen EMC Facturé et valorisé@0@0@0@0@0@0@0@0@0@0@0@0|000000000000000|0 +1|L_DATA_2|CTI : EMC - C.A Total - Journées|FAVEMC@MTFACENC@MMFPVEMC@FAVNBJ@0@0@0@0@0@0@0@0@0@0@0|EMC total@C.A total@C.A moyen total EMC@Nombre journées total|#@#E@#E@#|Equivalent Malade Complet Facturé ou Valorisé
Calculé d'après l'occupation des dossiers facturés ou Valorisés sur la base de
- 1 EMC par séjour en Hospitalisation Complète MCO
- 1 EMC par jour en Hospitalisation de jour MCO
- 1 EMC par séance en Hospitalisation séance MCO
- 1 EMC par semaine en Hospitalisation Complète SSR ou PSY
- 1 EMC par jour en Hospitalisation de jour SSR ou PSY
- 1 EMC par séjour pour les autres cas (Externes)
Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d'activité ou date de sortie@C.A facturé et valorisé@C.A Moyen EMC Facturé et valorisé@Nombre de journées Facturées ou Valorisées
Calculé d'après l'occupation des dossiers facturés ou valorisés sur la base de
- Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO
- Nombre de jours de présence en Hospitalisation de jour MCO
- Nombre de séances en Hospitalisation séance MCO
- Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SSR ou PSY
- Nombre de jours de présence en Hospitalisation de jour SSR ou PSY
- 0 pour les autres cas (Externes)
Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d'activité ou date de sortie@0@0@0@0@0@0@0@0@0@0@0|000000000000000|0 +1|L_DATA_3|CTI : EMC - C.A Total - Journées - C.A ( HC & HJ )|FAVEMC@MTFACENC@MMFPVEMC@FAVNBJ@FAVNBEMCHC@FAVMTTHC@FAVCAMHC@FAVNBSHJ@FAVMTTHJ@FAVCAMHJ@0@0@0@0@0|EMC total@C.A total@C.A moyen total EMC@Nombre journées total@Nombre EMC HC@C.A total HC@C.A moyen total HC@Séjours HJ@C.A total HJ@C.A moyen total HJ@0@0@0@0@0|#@#E@#E@#@#@#E@#E@#@#E@#E|"Equivalent Malade Complet Facturé ou Valorisé
Calculé d'après l'occupation des dossiers facturés ou Valorisés sur la base de
- + 1 EMC par séjour en Hospitalisation Complète MCO
- 1 EMC par jour en Hospitalisation de jour MCO
- 1 EMC par séance en Hospitalisation séance MCO
- + 1 EMC par semaine en Hospitalisation Complète SSR ou PSY
- 1 EMC par jour en Hospitalisation de jour SSR ou PSY
- + 1 EMC par séjour pour les autres cas (Externes)
Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d'activité ou date de sortie@C.A facturé et valorisé@C.A Moyen EMC Facturé et valorisé@Nombre de journées Facturées ou Valorisées
Calculé d'après l'occupation des dossiers facturés ou valorisés sur la base de
- +Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO
- Nombre de jours de présence en Hospitalisation de jour MCO
- + Nombre de séances en Hospitalisation séance MCO
- Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SSR ou PSY
- + Nombre de jours de présence en Hospitalisation de jour SSR ou PSY
- 0 pour les autres cas (Externes)
Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d'activité ou date de sortie@Nombre EMC en Hospitalisation complète HC@C.A facturé et valorisé en Hospitalisation complète HC@CA Moyen EMC facturé et valorisé en Hospitalisation complète HC@Nombre de séjours en Hospitalisation de jour HJ@C.A facturé et valorisé en Hospitalisation de jour HJ@CA moyen facturé et valorisé en Hospitalisation de jour HJ@0@0@0@0@0"|000000000000000|0 +1|L_DATA_3_OCC|CTI : Facturation : Nombre Patients/ Séjour/EMC - Sorties factuées - Journées facturées|NBP@NSEJ@EMC@NSFAC@NSNFAC@NJNS@JRNSORFAC@NJNAS@JRNSORHONFAC@0@0@0@0@0@0|Nombre patients@Nombre séjours@EMC@Sor fac@Sor non fac@Journées sortis hospi@Journées fac@Jou+A+S@Jou+A+S fac|#@#@#@#@#@#j@#j@#j@#j|Nombre patients@Nombre séjours@Equivalent malade complet@Nombre sorties facturées@Nombre sorties non facturées@Durée séjours sortis (hospitalisés)@Nombre journées hospitalisés facturées@Nombre journées + ambulatoires + séances (hospitalisation)@Nombre journées d'hospitalisation facturées|000000000000000|3 +1|L_DATA_4|CTI : EMC - C.A Total - Journées - C.A ( HC & HJ & Autres)|FAVEMC@MTFACENC@MMFPVEMC@FAVNBJ@FAVNBEMCHC@FAVMTTHC@FAVCAMHC@FAVNBSHJ@FAVMTTHJ@FAVCAMHJ@FAVNBSHA@FAVMTTHA@FAVCAMAU@0@0|EMC total@C.A total@C.A moyen total EMC@Nombre journées total@Nombre EMC HC@C.A total HC@C.A moyen total HC@Séjours HJ@C.A total HJ@C.A moyen total HJ@Séjours AUTRES@C.A total Autres@C.A moyen total Autres@0@0|#@#E@#E@#@#@#E@#E@#@#E@#E@#@#E@#E|"Equivalent Malade Complet Facturé ou Valorisé
Calculé d'après l'occupation des dossiers facturés ou Valorisés sur la base de
- 1 EMC par séjour en Hospitalisation Complète MCO
- 1 EMC par jour en Hospitalisation de jour MCO
- 1 EMC par séance en Hospitalisation séance MCO
- 1 EMC par semaine en Hospitalisation Complète SSR ou PSY
- 1 EMC par jour en Hospitalisation de jour SSR ou PSY
- 1 EMC par séjour pour les autres cas (Externes)
Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d'activité ou date de sortie@C.A facturé et valorisé@C.A Moyen EMC Facturé et valorisé@Nombre de journées Facturées ou Valorisées
Calculé d'après l'occupation des dossiers facturés ou valorisés sur la base de
- +Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO
- Nombre de jours de présence en Hospitalisation de jour MCO
- + Nombre de séances en Hospitalisation séance MCO
- Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SSR ou PSY
- + Nombre de jours de présence en Hospitalisation de jour SSR ou PSY
- 0 pour les autres cas (Externes)
Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d'activité ou date de sortie@Nombre EMC en Hospitalisation complète HC@C.A facturé et valorisé en Hospitalisation complète HC@CA Moyen EMC facturé et valorisé en Hospitalisation complète HC@Nombre de séjours en Hospitalisation de jour HJ@C.A facturé et valorisé en Hospitalisation de jour HJ@CA moyen facturé et valorisé en Hospitalisation de jour HJ@Nombre de séjours en Hospitalisation autre que HC ou HJ@Chiffre d'affaires par Séjour en Hospitalisation autre que HC ou HJ
Hospitalisation autre que HC ou HJ = Types séjour CTI Externes@Chiffre d'affaires Moyen par Séjour en Hospitalisation autre que HC ou HJ
Hospitalisation autre que HC ou HJ = Types séjour CTI Externes@0@0"|000000000000000|0 +1|L_DATA_5|CTI : EMC - C.A Total - Journées - C.A ( HC & HJ & Autres) - DMS|FAVEMC@MTFACENC@MMFPVEMC@FAVNBJ@FAVNBEMCHC@FAVMTTHC@FAVCAMHC@FAVNBSHJ@FAVMTTHJ@FAVCAMHJ@FAVNBSHA@FAVMTTHA@FAVCAMAU@FAVDMS@0|EMC total@C.A total@C.A moyen total EMC@Nb journées total@Nombre EMC HC@C.A total HC@C.A moyen total HC@Séjours HJ@C.A total HJ@C.A moyen total HJ@Séjours AUTRES@C.A total Autres@C.A moyen total Autres@DMS hospitalisés|#@#E@#E@#@#@#E@#E@#@#E@#E@#@#E@#E@#,00j|Equivalent Malade Complet Facturé ou Valorisé
Calculé d'après l'occupation des dossiers facturés ou Valorisés sur la base de
- 1 EMC par séjour en Hospitalisation Complète MCO
- 1 EMC par jour en Hospitalisation de jour MCO
- 1 EMC par séance en Hospitalisation séance MCO
- 1 EMC par semaine en Hospitalisation Complète SSR ou PSY
- 1 EMC par jour en Hospitalisation de jour SSR ou PSY
- 1 EMC par séjour pour les autres cas (Externes)
Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d'activité ou date de sortie@C.A facturé et valorisé@C.A Moyen EMC Facturé et valorisé@Nombre de journées Facturées ou Valorisées
Calculé d'après l'occupation des dossiers comptabilisés ou valorisés sur la base de
- Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO
- Nombre de jours de présence en Hospitalisation de jour MCO
- Nombre de séances en Hospitalisation séance MCO
- Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SSR ou PSY
- Nombre de jours de présence en Hospitalisation de jour SSR ou PSY
- 0 pour les autres cas (Externes)
Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d'activité ou date de sortie@Nombre EMC en Hospitalisation complète HC@C.A facturé et valorisé en Hospitalisation complète HC@CA Moyen EMC facturé et valorisé en Hospitalisation complète HC@Nombre de séjours en Hospitalisation de jour HJ@C.A facturé et valorisé en Hospitalisation de jour HJ@CA moyen facturé et valorisé en Hospitalisation de jour HJ@Nombre de séjours en Hospitalisation autre que HC ou HJ@Chiffre d'affaires par Séjour en Hospitalisation autre que HC ou HJ
Hospitalisation autre que HC ou HJ = Types séjour CTI Externes@Chiffre d'affaires Moyen par Séjour en Hospitalisation autre que HC ou HJ
Hospitalisation autre que HC ou HJ = Types séjour CTI Externes@Rapport entre le nombre de journées de présence des séjours hospitalisés sortis et le nombre de séjours hospitalisés sortis@0|000000000000000|0 +1|L_DATA_6|CTI : EMC - C.A Total - Journées - Tiers payant|EMC@MTFAC@MMTFAC@FACNBJ@NBSEJ@FACNS1@MTFAC1@FACNS2@MTFAC2@FACNS0@MTFAC0@0@0@0@0@0|EMC Facturé@C.A facturé@C.A moyen facturé@Nb journées facturée@Séjours Facturé@Séjours AMO@C.A facturé AMO@Séjours AMC@C.A facturé AMC@Séjours Patient@C.A facturé Pat|#@#E@#E@#@#@#@#E@#@#E@#@#E@#@#E|Nombre EMC facturés@C.A facturé@C.A moyen facturé@Nb journées facturée@Séjours Facturé@Séjours AMO@C.A facturé AMO@Séjours AMC@C.A facturé AMC@Séjours Patient@C.A facturé Patient|000000000000000|0 +1|L_DATA_7|CTI : EMC ( Total - HC - HJ - Autres) - C.A ( Total - HC - HJ - Autres)|FAVEMC@MTFACENC@FAVNBEMCHC@FAVNBSHJ@FAVNBSHA@MTENC@FAVMTTHC@FAVMTTHJ@FAVMTTHA@0@0@0@0@0@0@0|EMC total@C.A Total@Nb EMC HC@Séjours HJ@Séjours Autres@Dont valorisé@C.A total HC@C.A total HJ@C.A total Autres|#@#E@#@#@#@#E@#E@#E@#E|Equivalent Malade Complet Facturé ou Valorisé
Calculé d'après l'occupation des dossiers facturés ou Valorisés sur la base de
- 1 EMC par séjour en Hospitalisation Complète MCO
- 1 EMC par jour en Hospitalisation de jour MCO
- 1 EMC par séance en Hospitalisation séance MCO
- 1 EMC par semaine en Hospitalisation Complète SSR ou PSY
- 1 EMC par jour en Hospitalisation de jour SSR ou PSY
- 1 EMC par séjour pour les autres cas (Externes)
Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d'activité ou date de sortie@C.A facturé et valorisé@Nombre EMC en Hospitalisation complète HC@Nombre de séjours en Hospitalisation de jour HJ@Nombre de séjours en Hospitalisation autre que HC ou HJ@C.A valorisé@C.A facturé et valorisé en Hospitalisation complète HC@C.A facturé et valorisé en Hospitalisation de jour HJ@C.A facturé et valorisé en Hospitalisation autre que HC ou HJ@0@0@0@0@0@0|000000000000000|0 +1|L_DATA_8|CTI : EMC - C.A : Facturé - valorisé - total ( HJ - HC ) - C.A Autres|FAVEMC@MTFACENC@FACMTTHJ@FACMTTHC@VALMTHJT@VALMTHCT@FAVMTTHJ@FAVMTTHC@FAVMTTHA@0@0@0@0@0@0@0|EMC total@C.A total@CA facturé HJ@CA facturé HC@C.A Val HJ total@C.A Val HC total@C.A total HJ@C.A total HC@C.A total Autres|#@#E@#E@#E@#E@#E@#E@#E@#E|Equivalent Malade Complet Facturé ou Valorisé
Calculé d'après l'occupation des dossiers facturés ou Valorisés sur la base de
- 1 EMC par séjour en Hospitalisation Complète MCO
- 1 EMC par jour en Hospitalisation de jour MCO
- 1 EMC par séance en Hospitalisation séance MCO
- 1 EMC par semaine en Hospitalisation Complète SSR ou PSY
- 1 EMC par jour en Hospitalisation de jour SSR ou PSY
- 1 EMC par séjour pour les autres cas (Externes)
Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d'activité ou date de sortie@C.A facturé et valorisé@C.A facturé en Hospitalisation de jour HJ@C.A facturé en Hospitalisation complète HC@C.A total valorisé en Hospitalisation de jour HJ ( groupés + Non groupés )@C.A total valorisé en Hospitalisation complète HC ( groupés + Non groupés )@C.A facturé et valorisé en Hospitalisation de jour HJ@C.A facturé et valorisé en Hospitalisation complète HC@C.A facturé et valorisé en Hospitalisation autre que HC ou HJ@0@0@0@0@0@0@0|000000000000000|0 +1|L_DATA_102|x|FAVNBS@MTFACENC@MMTFACENC@FAVNBJ@0@0@0@0@0@0@0@0@0@0@0|Séjours total@C.A total@C.A moyen total@Nombre journées total|#@#E@#E@#|Séjours facturés et valorisés@C.A facturé et valorisé@C.A Moyen Facturé et valorisé@Nombre de journées Facturées ou Valorisées
Calculé d'après l'occupation des dossiers facturés ou valorisés sur la base de
- Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO
- Nombre de jours de présence en Hospitalisation de jour MCO
- Nombre de séances en Hospitalisation séance MCO
- Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SSR ou PSY
- Nombre de jours de présence en Hospitalisation de jour SSR ou PSY
- 0 pour les autres cas (Externes)
Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte
Visible que par date d'activité ou date de sortie@0@0@0@0@0@0@0@0@0@0@0|000000000000000|0 +1|L_DATA_103|CTI : Séjours - C.A Total - Journées - C.A ( HC & HJ )|FAVNBS@MTFACENC@MMTFACENC@FAVNBJ@FAVNBSHC@FAVMTTHC@FAVCAMHC@FAVNBSHJ@FAVMTTHJ@FAVCAMHJ@0@0@0@0@0|Séjours total@C.A total@C.A moyen total@Nombre journées total@Séjours total HC@C.A total HC@C.A Moyen total HC@Séjours total HJ@C.A total HJ@C.A Moyen total HJ|#@#E@#E@#@#@#E@#E@#@#E@#E|Séjours Facturé et Valorise@C.A Facturé et Valorise@C.A moyen Facturé et Valorise@Nombre journées Facturé et Valorise@Séjours Facturé et Valorise en Hospitalisation complète HC@C.A Facturé et Valorise en Hospitalisation complète HC@C.A Moyen Facturé et Valorise en Hospitalisation complète HC@Séjours Facturé et Valorise en Hospitalisation de jour HJ@C.A Facturé et Valorise en Hospitalisation de jour HJ@C.A Moyen Facturé et Valorise en Hospitalisation de jour HJ|000000000000000|0 +1|L_DATA_104|CTI : Séjours - C.A Total - Journées - C.A ( HC & HJ & Autres)|FAVNBS@MTFACENC@MMTFACENC@FAVNBJ@FAVNBSHC@FAVMTTHC@FAVCAMHC@FAVNBSHJ@FAVMTTHJ@FAVCAMHJ@FAVNBSHA@FAVMTTHA@FAVCAMAU@0@0|Séjours total@C.A total@C.A moyen total@Nombre journées total@Séjours total HC@C.A total HC@C.A Moyen total HC@Séjours total HJ@C.A total HJ@C.A Moyen total HJ@Séjours total Autres@C.A total Autres@C.A Moyen total Autres|#@#E@#E@#@#@#E@#E@#@#E@#E@#@#E@#E|Séjours Facturé et Valorise@C.A Facturé et Valorise@C.A moyen Facturé et Valorise@Nombre journées Facturé et Valorise@Séjours Facturé et Valorise en Hospitalisation complète HC@C.A Facturé et Valorise en Hospitalisation complète HC@C.A Moyen Facturé et Valorise en Hospitalisation complète HC@Séjours Facturé et Valorise en Hospitalisation de jour HJ@C.A Facturé et Valorise en Hospitalisation de jour HJ@C.A Moyen Facturé et Valorise en Hospitalisation de jour HJ@Séjours Facturé et Valorise en Hospitalisation autre que HC ou HJ@C.A Facturé et Valorise en Hospitalisation autre que HC ou HJ@C.A Moyen Facturé et Valorise en Hospitalisation autre que HC ou HJ|000000000000000|0 +1|L_DATA_105|CTI : Séjours - C.A Total - Journées - C.A ( HC & HJ & Autres) - DMS|FAVNBS@MTFACENC@MMTFACENC@FAVNBJ@FAVNBSHC@FAVMTTHC@FAVCAMHC@FAVNBSHJ@FAVMTTHJ@FAVCAMHJ@FAVNBSHA@FAVMTTHA@FAVCAMAU@FAVDMS@0|Séjours total@C.A total@C.A moyen total@Nombre journées total@Séjours total HC@C.A total HC@C.A Moyen total HC@Séjours total HJ@C.A total HJ@C.A Moyen total HJ@Séjours total Autres@C.A total Autres@C.A Moyen total Autres@DMS hospitalisés|#@#E@#E@#@#@#E@#E@#@#E@#E@#@#E@#E@#,00j|Séjours Facturé et Valorise@C.A Facturé et Valorise@C.A moyen Facturé et Valorise@Nombre journées Facturé et Valorise@Séjours Facturé et Valorise en Hospitalisation complète HC@C.A Facturé et Valorise en Hospitalisation complète HC@C.A Moyen Facturé et Valorise en Hospitalisation complète HC@Séjours Facturé et Valorise en Hospitalisation de jour HJ@C.A Facturé et Valorise en Hospitalisation de jour HJ@C.A Moyen Facturé et Valorise en Hospitalisation de jour HJ@Séjours Facturé et Valorise en Hospitalisation autre que HC ou HJ@C.A Facturé et Valorise en Hospitalisation autre que HC ou HJ@C.A Moyen Facturé et Valorise en Hospitalisation autre que HC ou HJ@Rapport entre le nombre de journées de présence des séjours hospitalisés sortis et le nombre de séjours hospitalisés sortis|000000000000000|0 +1|L_DATA_106|CTI : Séjours - C.A Total - Journées - Tiers payant|NBSEJ@MTFAC@MMTFAC@FACNBJ@NBSEJ@FACNS1@MTFAC1@FACNS2@MTFAC2@FACNS0@MTFAC0@0@0@0@0@0|Séjours Facturé@C.A facturé@C.A moyen facturé@Nb journées facturée@Séjours Facturé@Séjours AMO@C.A facturé AMO@Séjours AMC@C.A facturé AMC@Séjours Patient@C.A facturé Pat|#@#E@#E@#@#@#@#E@#@#E@#@#E@#@#E|Séjours Facturé@C.A facturé@C.A moyen facturé@Nombre journées facturée@Séjours Facturé@Séjours AMO@C.A facturé AMO@Séjours AMC@C.A facturé AMC@Séjours Patient@C.A facturé Patient|000000000000000|0 +1|L_DATA_107|CTI : Séjours ( Total - HC - HJ - Autres) - C.A ( Total - HC - HJ - Autres)|FAVNBS@MTFACENC@FAVNBSHC@FAVNBSHJ@FAVNBSHA@MTENC@FAVMTTHC@FAVMTTHJ@FAVMTTHA@0@0@0@0@0@0@0|Séjours total@C.A Total@Séjours Total HC@Séjours total HJ@Séjours total Autres@Dont valorisé@C.A total HC@C.A total HJ@C.A total Autres|#@#E@#@#@#@#E@#E@#E@#E|Séjours Facturé et Valorise@C.A Facturé et Valorise@Séjours Facturé et Valorise en Hospitalisation complète HC@Séjours en Hospitalisation de jour HJ@Séjours en Hospitalisation autre que HC ou HJ@Dont valorisé@C.A Facturé et Valorise en Hospitalisation complète HC@C.A Facturé et Valorise en Hospitalisation de jour HJ@C.A Facturé et Valorise en Hospitalisation autre que HC ou HJ|000000000000000|0 +1|L_DATA_108|CTI : Séjours - C.A : Facturé - valorisé - total ( HJ - HC ) - C.A Autres|FAVNBS@MTFACENC@FACMTTHJ@FACMTTHC@VALMTHJT@VALMTHCT@FAVMTTHJ@FAVMTTHC@FAVMTTHA@0@0@0@0@0@0@0|Séjours total@C.A Total@CA facturé HJ@CA facturé HC@C.A Val HJ total@C.A Val HC total@C.A total HJ@C.A total HC@C.A total Autres|#@#E@#E@#E@#E@#E@#E@#E@#E|Séjours Facturé et valorisé@C.A Facturé et Valorise@C.A facturé en Hospitalisation de jour HJ@C.A facturé en Hospitalisation complète HC@C.A total valorisé en Hospitalisation de jour HJ ( groupés + Non groupés )@C.A total valorisé en Hospitalisation complète HC ( groupés + Non groupés )@C.A facturé et valorisé en Hospitalisation de jour HJ@C.A facturé et valorisé en Hospitalisation complète HC@C.A facturé et valorisé en Hospitalisation autre que HC ou HJ@0@0@0@0@0@0@0|000000000000000|0 +1|L_DATA_1_OCC|CTI : Occupation : Nombre Patients/ Séjour/EMC - Entrées/Sorties - Ambulatoire/ Séances - Journées|NBP@NSEJ@EMC@NED@NEM@NSD@NSM@NAM@NSE@NSEDIA@NSECHM@NSEDIV@NJN@NJNXA@0|Nombre patients@Nombre Séjours@EMC@Entrées (hospi)@Entrées + mutations@Sorties (Hospi)@Sorties + Mutations@Nombre Ambulatoire@Nombre séances@séances Dialyse@Séances Chimio@Séances Autres@Journées hospi@Jou+Ext+Ambu|#@#@#@#@#@#@#@#@#@#@#@#@#j@#j|Nombre patients@Nombre Séjours@Equivalent Malade complet@Entrées directes (hospitalisés)@Entrées directes + mutations@Sorties directes (hospitalisés)@Sorties directes (hospitalisés) + Mutations@Nombre Ambulatoire@Nombre séances total@séances Dialyse@Séances Chimio@Séances Autres@Nombre journées hospitalisés@Nombre journées + ambulatoires + externes|000000000000000|1 +1|L_DATA_2_OCC|CTI : Séjours : Nombre Patients/ Séjour/EMC - Admissions/Sorties - Journées - DMS|NBP@NSEJ@EMC@NADPRE@NAD@NSHP@NSDXASSH@NNONSOR@NFULL@NJN@NJNXAS@DMSHES@DMSHON@0@0|Nombre patients@Nombre séjours@EMC@Adm < per.@Admissions@Sor Post@Sor+X+A+S-Hors hospi@Séj non sortis@Séj entiers@Journées hospi@Jou+X+A+S@DMS Hospi@DMS HOS+A+S|#@#@#@#@#@#@#@#@#@#j@#j@#,00j@#,00j|Nombre patients@Nombre Séjours@Equivalent Malade complet@Nombre admissions < période@Nombre admissions période@Nombre sorties hors période@Nombre sorties + ambulatoires + externes + séances (hors hospit)@Nombre séjours non sortis@Nombre séjours entiers sur période@Nombre journées (hospitalisés)@Nombre journées + ambulatoires + externes + séances@DMS hospitalisés@DMS hospitalisation (Hospit. + séances + ambulatoires)|000000000000000|2 +1|L_DATA_4_OCC|CTI : Récapitulatif : Séjour/EMC - Entrées/Sorties(Hospi) - Ambulatoires/séances/externes/Bébés/urgences|NBP@NSEJ@EMC@NED@NSD@NAM@NSE@NEX@NPX@NBB@URG@0@0@0@0|Nombre patients@Nombre séjours@Equivalent malade complet@Entrées directes (hospi)@Sorties directes (hospi)@Nombre Ambulatoire@Nombre séances@Nombre externes@Passages Ext@Nombre bébés@Urgences|#@#@#@#@#@#@#@#@#@#|Nombre patients@Nombre séjours@Equivalent malade complet@Nombre entrées directes (hospitalisés)@Nombre sorties directes (hospitalisés)@Nombre Ambulatoire@Nombre séances@Nombre externes@Nombre passages externes@Nombre bébés@Urgences|000000000000000|4 diff --git a/db/dbsetup_data_activite.XML b/db/dbsetup_data_activite.XML new file mode 100644 index 0000000..909cf7c --- /dev/null +++ b/db/dbsetup_data_activite.XML @@ -0,0 +1,1972 @@ + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+ + 0 AND + code NOT IN (SELECT code FROM activite.t_forme_activite WHERE code IS NOT NULL) + ; + + SELECT activite.cti_update_schema_classes('FORMEACTIVITE'); + + ]]> +
+ + + + 0 + AND code NOT IN (SELECT code FROM activite.t_etat_sejour) + ; + + + ]]> +
+ + + + 0 + AND code NOT IN (SELECT code FROM activite.t_prestations) + ; + + SELECT activite.cti_update_schema_classes('PRESTA_C'); + + ]]> +
+ + + + 1; + + UPDATE activite.t_listes SET table_id = (SELECT oid FROM activite.t_listes_tables WHERE code = 'PRESTA_C') + WHERE table_id IN (SELECT oid FROM activite.t_listes_tables WHERE code = 'PRESTA_C_B'); + + DELETE FROM activite.t_listes_tables WHERE code = 'PRESTA_C_B'; + + UPDATE activite.t_listes_tables SET + code = w_dbsetup.code, + texte = w_dbsetup.texte, + select_cmd = w_dbsetup.select_cmd, + name = w_dbsetup.name + FROM w_dbsetup + WHERE t_listes_tables.code = w_dbsetup.code; + + INSERT INTO activite.t_listes_tables(oid, code, name, texte, select_cmd) + SELECT oid, code, name, texte, select_cmd FROM w_dbsetup WHERE oid = 0 AND oid NOT IN (SELECT oid FROM activite.t_listes_tables); + + INSERT INTO activite.t_listes_tables(code, name, texte, select_cmd) + SELECT code, name, texte, select_cmd FROM w_dbsetup WHERE oid <> 0 AND code NOT IN (SELECT code FROM activite.t_listes_tables); + + ]]> +
+ + + + +
+ + + + +
+ + + + Sections CTI non-livrées + -- La classe CTI_SPE_BUDG est créée et aliméntée lors de l'import activité et n'est pas livrée + DROP TABLE IF EXISTS w_del_sections + ; + CREATE TEMP TABLE w_del_sections as ( + SELECT oid FROM activite.t_classes_sections + WHERE classe_id IN ( + SELECT + t_classes.oid + FROM activite.t_classes + WHERE 1=1 + AND is_cti = '1' + AND t_classes.code <> 'CTI_SPE_BUDG' + ) + ); + + DELETE FROM activite.t_classes_sections_elements + WHERE section_id IN (SELECT oid FROM w_del_sections); + + + DELETE FROM activite.t_classes_sections + USING + ( + SELECT t_classes_sections.classe_id, t_classes_sections.oid + FROM activite.t_classes_sections + LEFT JOIN w_dbsetup ON + w_dbsetup.classe_id = t_classes_sections.classe_id AND + w_dbsetup.code = t_classes_sections.code + WHERE w_dbsetup.oid IS NULL AND + t_classes_sections.classe_id IN (SELECT classe_id FROM w_dbsetup) AND + t_classes_sections.oid NOT IN (SELECT section_id FROM activite.t_classes_sections_elements) + ) subview + WHERE subview.classe_id = t_classes_sections.classe_id AND + subview.oid = t_classes_sections.oid + ; + + -- Mise à jour + UPDATE activite.t_classes_sections SET + texte = w_dbsetup.texte, + condition = w_dbsetup.condition, + exclude_code = w_dbsetup.exclude_code, + include_code = w_dbsetup.include_code + FROM w_dbsetup + WHERE w_dbsetup.classe_id = t_classes_sections.classe_id AND + w_dbsetup.code = t_classes_sections.code AND + ( + t_classes_sections.texte IS DISTINCT FROM w_dbsetup.texte OR + t_classes_sections.condition IS DISTINCT FROM w_dbsetup.condition OR + t_classes_sections.exclude_code IS DISTINCT FROM w_dbsetup.exclude_code OR + t_classes_sections.include_code IS DISTINCT FROM w_dbsetup.include_code + ) + ; + + INSERT INTO activite.t_classes_sections(code, texte, classe_id, condition, exclude_code, include_code) + SELECT + w_dbsetup.code, + w_dbsetup.texte, + w_dbsetup.classe_id, + w_dbsetup.condition, + w_dbsetup.exclude_code, + w_dbsetup.include_code + FROM w_dbsetup + WHERE w_dbsetup.classe_id > 0 AND + (w_dbsetup.code||'@'||w_dbsetup.classe_id::text) + NOT IN (SELECT t_classes_sections.code||'@'||t_classes_sections.classe_id FROM activite.t_classes_sections) + ; + + ]]> +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + +
+ + + + +
+ + + + '' GROUP BY 1 HAVING count(*) > 1 + ) subview + WHERE t_indicateurs.code = subview.code AND t_indicateurs.oid <> subview.minoid; + + -- Mise à jour indicateurs déjà présents + UPDATE activite.t_indicateurs SET + texte = w_dbsetup.texte, + table_name = w_dbsetup.table_name, + column_name = w_dbsetup.column_name, + is_cti = w_dbsetup.is_cti, + entete = w_dbsetup.entete, + entete_etendue = w_dbsetup.entete_etendue, + total_function = w_dbsetup.total_function, + output_format = w_dbsetup.output_format, + width = w_dbsetup.width, + dimension_date_1 = w_dbsetup.dimension_date_1, + dimension_date_2 = w_dbsetup.dimension_date_2, + dimension_date_3 = w_dbsetup.dimension_date_3, + dimension_date_4 = w_dbsetup.dimension_date_4, + dimension_date_5 = w_dbsetup.dimension_date_5, + dimension_date = w_dbsetup.dimension_date, + is_template = w_dbsetup.is_template, + variable_definition = ARRAY[variable_definition_1,variable_definition_2,variable_definition_3] , + variable_value = ARRAY[variable_value_1,variable_value_2,variable_value_3], + variable_value_text = ARRAY[variable_value_text_1,variable_value_text_2,variable_value_text_3], + description = w_dbsetup.description + FROM w_dbsetup + WHERE t_indicateurs.code = w_dbsetup.code; + + -- Ajout des indicateurs + INSERT INTO activite.t_indicateurs(texte, + table_name, + column_name, + is_cti, + entete, + entete_etendue, + code, + total_function, + output_format, + width, + dimension_date_1, + dimension_date_2, + dimension_date_3, + dimension_date_4, + dimension_date_5, + dimension_date, + is_template, + variable_definition, + variable_value, + variable_value_text, + description + ) + SELECT texte, + table_name, + column_name, + is_cti, + entete, + entete_etendue, + code, + total_function, + output_format, + width, + dimension_date_1, + dimension_date_2, + dimension_date_3, + dimension_date_4, + dimension_date_5, + dimension_date, + is_template, + ARRAY[variable_definition_1,variable_definition_2,variable_definition_3] , + ARRAY[variable_value_1,variable_value_2,variable_value_3], + ARRAY[variable_value_text_1,variable_value_text_2,variable_value_text_3], + description + FROM w_dbsetup WHERE oid <> 0 AND code NOT IN (SELECT code FROM activite.t_indicateurs WHERE code IS NOT NULL) + ; + + CREATE INDEX i_w_dbsetup + ON w_dbsetup + USING btree + (code) + ; + + ANALYZE w_dbsetup + ; + + -- Mise à jour des références + UPDATE activite.t_indicateurs SET + indicateur_associe_1_id = COALESCE(t_indicateurs_1.oid,0), + indicateur_associe_2_id = COALESCE(t_indicateurs_2.oid,0), + indicateur_associe_3_id = COALESCE(t_indicateurs_3.oid,0), + indicateur_associe_4_id = COALESCE(t_indicateurs_4.oid,0), + indicateur_associe_5_id = COALESCE(t_indicateurs_5.oid,0), + indicateur_associe_6_id = COALESCE(t_indicateurs_6.oid,0), + indicateur_associe_7_id = COALESCE(t_indicateurs_7.oid,0), + indicateur_associe_8_id = COALESCE(t_indicateurs_8.oid,0), + indicateur_associe_9_id = COALESCE(t_indicateurs_9.oid,0), + indicateur_associe_10_id = COALESCE(t_indicateurs_10.oid,0), + indicateur_associe_11_id = COALESCE(t_indicateurs_11.oid,0), + indicateur_associe_12_id = COALESCE(t_indicateurs_12.oid,0), + indicateur_associe_13_id = COALESCE(t_indicateurs_13.oid,0), + indicateur_associe_14_id = COALESCE(t_indicateurs_14.oid,0), + indicateur_associe_15_id = COALESCE(t_indicateurs_15.oid,0), + indicateur_associe_16_id = COALESCE(t_indicateurs_16.oid,0), + indicateur_associe_17_id = COALESCE(t_indicateurs_17.oid,0), + indicateur_associe_18_id = COALESCE(t_indicateurs_18.oid,0), + indicateur_associe_19_id = COALESCE(t_indicateurs_19.oid,0), + indicateur_associe_20_id = COALESCE(t_indicateurs_20.oid,0), + indicateur_reference_id = COALESCE(t_indicateurs_reference.oid,0), + indicateur_template_id = COALESCE(t_indicateurs_template.oid,0) + FROM w_dbsetup + LEFT JOIN activite.t_indicateurs t_indicateurs_1 ON (w_dbsetup.indicateur_associe_1_code = t_indicateurs_1.code AND w_dbsetup.indicateur_associe_1_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_2 ON (w_dbsetup.indicateur_associe_2_code = t_indicateurs_2.code AND w_dbsetup.indicateur_associe_2_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_3 ON (w_dbsetup.indicateur_associe_3_code = t_indicateurs_3.code AND w_dbsetup.indicateur_associe_3_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_4 ON (w_dbsetup.indicateur_associe_4_code = t_indicateurs_4.code AND w_dbsetup.indicateur_associe_4_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_5 ON (w_dbsetup.indicateur_associe_5_code = t_indicateurs_5.code AND w_dbsetup.indicateur_associe_5_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_6 ON (w_dbsetup.indicateur_associe_6_code = t_indicateurs_6.code AND w_dbsetup.indicateur_associe_6_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_7 ON (w_dbsetup.indicateur_associe_7_code = t_indicateurs_7.code AND w_dbsetup.indicateur_associe_7_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_8 ON (w_dbsetup.indicateur_associe_8_code = t_indicateurs_8.code AND w_dbsetup.indicateur_associe_8_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_9 ON (w_dbsetup.indicateur_associe_9_code = t_indicateurs_9.code AND w_dbsetup.indicateur_associe_9_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_10 ON (w_dbsetup.indicateur_associe_10_code = t_indicateurs_10.code AND w_dbsetup.indicateur_associe_10_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_11 ON (w_dbsetup.indicateur_associe_11_code = t_indicateurs_11.code AND w_dbsetup.indicateur_associe_11_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_12 ON (w_dbsetup.indicateur_associe_12_code = t_indicateurs_12.code AND w_dbsetup.indicateur_associe_12_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_13 ON (w_dbsetup.indicateur_associe_13_code = t_indicateurs_13.code AND w_dbsetup.indicateur_associe_13_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_14 ON (w_dbsetup.indicateur_associe_14_code = t_indicateurs_14.code AND w_dbsetup.indicateur_associe_14_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_15 ON (w_dbsetup.indicateur_associe_15_code = t_indicateurs_15.code AND w_dbsetup.indicateur_associe_15_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_16 ON (w_dbsetup.indicateur_associe_16_code = t_indicateurs_16.code AND w_dbsetup.indicateur_associe_16_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_17 ON (w_dbsetup.indicateur_associe_17_code = t_indicateurs_17.code AND w_dbsetup.indicateur_associe_17_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_18 ON (w_dbsetup.indicateur_associe_18_code = t_indicateurs_18.code AND w_dbsetup.indicateur_associe_18_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_19 ON (w_dbsetup.indicateur_associe_19_code = t_indicateurs_19.code AND w_dbsetup.indicateur_associe_19_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_20 ON (w_dbsetup.indicateur_associe_20_code = t_indicateurs_20.code AND w_dbsetup.indicateur_associe_20_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_reference ON (w_dbsetup.indicateur_reference_code = t_indicateurs_reference.code AND w_dbsetup.indicateur_reference_code <> '') + LEFT JOIN activite.t_indicateurs t_indicateurs_template ON (w_dbsetup.indicateur_template_code = t_indicateurs_template.code AND w_dbsetup.indicateur_template_code <> '') + WHERE t_indicateurs.code = w_dbsetup.code + AND (indicateur_associe_1_code <> '' OR + indicateur_associe_2_code <> '' OR + indicateur_associe_3_code <> '' OR + indicateur_reference_code <> ''); + + -- Thèmes + UPDATE activite.t_indicateurs SET + theme_id = ARRAY[ + t_indicateur_theme_1.oid, + t_indicateur_theme_2.oid, + t_indicateur_theme_3.oid, + t_indicateur_theme_4.oid, + t_indicateur_theme_5.oid, + t_indicateur_theme_6.oid, + t_indicateur_theme_7.oid, + t_indicateur_theme_8.oid, + t_indicateur_theme_9.oid + ] + FROM w_dbsetup + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_1 ON w_dbsetup.theme_1_code = t_indicateur_theme_1.code + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_2 ON w_dbsetup.theme_2_code = t_indicateur_theme_2.code + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_3 ON w_dbsetup.theme_3_code = t_indicateur_theme_3.code + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_4 ON w_dbsetup.theme_4_code = t_indicateur_theme_4.code + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_5 ON w_dbsetup.theme_5_code = t_indicateur_theme_5.code + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_6 ON w_dbsetup.theme_6_code = t_indicateur_theme_6.code + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_7 ON w_dbsetup.theme_7_code = t_indicateur_theme_7.code + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_8 ON w_dbsetup.theme_8_code = t_indicateur_theme_8.code + LEFT JOIN activite.t_indicateur_theme t_indicateur_theme_9 ON w_dbsetup.theme_9_code = t_indicateur_theme_9.code + WHERE t_indicateurs.code = w_dbsetup.code AND + theme_id IS DISTINCT FROM ARRAY[ + t_indicateur_theme_1.oid, + t_indicateur_theme_2.oid, + t_indicateur_theme_3.oid, + t_indicateur_theme_4.oid, + t_indicateur_theme_5.oid, + t_indicateur_theme_6.oid, + t_indicateur_theme_7.oid, + t_indicateur_theme_8.oid, + t_indicateur_theme_9.oid + ] + ; + + -- Réorganisation des indicateurs + SELECT base.cti_reorganize_indicateurs('activite'); + ]]> +
+ + + 'CTI_PORTFO' + ORDER BY t_rapports.code + ; + + ]]> + ''; + UPDATE w_dbsetup SET to_rapport_indicateur_condition_id[2] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE t_indicateur_condition.code = to_rapport_indicateur_condition_code[2] AND to_rapport_indicateur_condition_code[2] <> ''; + UPDATE w_dbsetup SET to_rapport_indicateur_condition_id[3] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE t_indicateur_condition.code = to_rapport_indicateur_condition_code[3] AND to_rapport_indicateur_condition_code[3] <> ''; + UPDATE w_dbsetup SET to_rapport_indicateur_condition_id[4] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE t_indicateur_condition.code = to_rapport_indicateur_condition_code[4] AND to_rapport_indicateur_condition_code[4] <> ''; + UPDATE w_dbsetup SET to_rapport_indicateur_condition_id = array_remove(to_rapport_indicateur_condition_id,NULL); + + UPDATE activite.t_rapports SET + texte = w_dbsetup.texte, + is_cti = w_dbsetup.is_cti, + is_essentiel = w_dbsetup.is_essentiel, + essentiel_date_level = w_dbsetup.essentiel_date_level, + colonnes_essentiel = w_dbsetup.colonnes_essentiel, + entete = w_dbsetup.entete, + entete_2 = w_dbsetup.entete_2, + group_id = w_dbsetup.group_id, + rapport_indicateur_condition_id = to_rapport_indicateur_condition_id, + label = w_dbsetup.label, + serie_entete = to_serie_entete, + colonnes_essentiel_style = w_dbsetup.colonnes_essentiel_style + FROM w_dbsetup + WHERE t_rapports.code = w_dbsetup.code; + + + INSERT INTO activite.t_rapports(oid, code, texte, is_cti, is_essentiel) + SELECT oid, code, texte, is_cti, is_essentiel + FROM w_dbsetup + WHERE + oid = 0 AND + oid NOT IN (SELECT oid FROM activite.t_rapports); + + + INSERT INTO activite.t_rapports( + code, + texte, + is_cti, + is_essentiel, + essentiel_date_level, + colonnes_essentiel, + entete, + entete_2, + group_id, + is_hide, + rapport_indicateur_condition_id, + label, + serie_entete, + colonnes_essentiel_style + ) + SELECT + code, + texte, + is_cti, + is_essentiel, + essentiel_date_level, + colonnes_essentiel, + entete, + entete_2, + group_id, + is_hide, + to_rapport_indicateur_condition_id, + label, + to_serie_entete, + colonnes_essentiel_style + FROM w_dbsetup + WHERE + oid <> 0 AND + code NOT IN (SELECT code FROM activite.t_rapports); + + + ]]> +
+ + + 'CTI_PORTFO' + AND t_indicateurs.is_cti = '1' + AND t_indicateurs.code <> '' + ORDER BY + t_rapports.code, + t_indicateurs.code, + t_rapports_rubriques.numero_rubrique + ; + + ]]> + ''; + + ALTER TABLE w_dbsetup ADD COLUMN to_indicateur_associe_id bigint DEFAULT 0; + UPDATE w_dbsetup SET to_indicateur_associe_id = t_indicateurs.oid FROM activite.t_indicateurs WHERE indicateur_associe_code = t_indicateurs.code AND t_indicateurs.code <> ''; + + ALTER TABLE w_dbsetup ADD COLUMN to_serie_indicateur_code text[]; + UPDATE w_dbsetup SET to_serie_indicateur_code = string_to_array(serie_indicateur_code,'||'); + + ALTER TABLE w_dbsetup ADD COLUMN to_serie_indicateur_id bigint[]; + UPDATE w_dbsetup SET to_serie_indicateur_id[1] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[1] = t_indicateurs.code AND t_indicateurs.code <> ''; + UPDATE w_dbsetup SET to_serie_indicateur_id[2] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[2] = t_indicateurs.code AND t_indicateurs.code <> ''; + UPDATE w_dbsetup SET to_serie_indicateur_id[3] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[3] = t_indicateurs.code AND t_indicateurs.code <> ''; + UPDATE w_dbsetup SET to_serie_indicateur_id[4] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[4] = t_indicateurs.code AND t_indicateurs.code <> ''; + UPDATE w_dbsetup SET to_serie_indicateur_id[5] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[5] = t_indicateurs.code AND t_indicateurs.code <> ''; + UPDATE w_dbsetup SET to_serie_indicateur_id[6] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[6] = t_indicateurs.code AND t_indicateurs.code <> ''; + UPDATE w_dbsetup SET to_serie_indicateur_id[7] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[7] = t_indicateurs.code AND t_indicateurs.code <> ''; + UPDATE w_dbsetup SET to_serie_indicateur_id[8] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[8] = t_indicateurs.code AND t_indicateurs.code <> ''; + UPDATE w_dbsetup SET to_serie_indicateur_id[9] = t_indicateurs.oid FROM activite.t_indicateurs WHERE to_serie_indicateur_code[9] = t_indicateurs.code AND t_indicateurs.code <> ''; + + + ALTER TABLE w_dbsetup ADD COLUMN to_indicateur_condition_external_code text[]; + UPDATE w_dbsetup SET to_indicateur_condition_external_code = string_to_array(indicateur_condition_external_code,'||'); + + + ALTER TABLE w_dbsetup ADD COLUMN to_indicateur_condition_id bigint[]; + UPDATE w_dbsetup SET to_indicateur_condition_id[1] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[1] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; + UPDATE w_dbsetup SET to_indicateur_condition_id[2] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[2] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; + UPDATE w_dbsetup SET to_indicateur_condition_id[3] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[3] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; + UPDATE w_dbsetup SET to_indicateur_condition_id[4] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[4] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; + UPDATE w_dbsetup SET to_indicateur_condition_id[5] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[5] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; + UPDATE w_dbsetup SET to_indicateur_condition_id[6] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[6] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; + UPDATE w_dbsetup SET to_indicateur_condition_id[7] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[7] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; + UPDATE w_dbsetup SET to_indicateur_condition_id[8] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[8] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; + UPDATE w_dbsetup SET to_indicateur_condition_id[9] = t_indicateur_condition.oid FROM activite.t_indicateur_condition WHERE to_indicateur_condition_external_code[9] = t_indicateur_condition.external_code AND t_indicateur_condition.external_code <> ''; + + + -- Installer les données CTI + DELETE FROM activite.t_rapports_rubriques + WHERE 1=1 + AND rapport_id IN (SELECT to_rapport_id FROM w_dbsetup) + ; + + INSERT INTO activite.t_rapports_rubriques( + rapport_id, + numero_rubrique, + indicateur_id, + indicateur_associe_id, + entete, + entete_etendue, + output_format, + width, + row_height, + padding, + font_size, + font_weight, + border_thickness, + color, + background_color, + base_nationale, + base_nationale_qualifiee, + viewlink, + viewlink_label, + viewlink_param, + picto_enabled, + positif_is_good, + description, + description_2, + entete_etendue_2, + output_format_2, + picto_enabled_2, + positif_is_good_2, + is_hide, + specific_viewlink, + specific_viewlink_label, + specific_viewlink_param, + indicateur_condition_id, + erase_rapport_indicateur_condition, + calc_formula, + hide_on_zero_field, + field_tag, + serie_indicateur_id, + serie_entete_etendue, + serie_description, + serie_output_format, + serie_picto_enabled, + serie_positif_is_good + ) + SELECT + to_rapport_id, + numero_rubrique, + to_indicateur_id, + to_indicateur_associe_id, + entete, + entete_etendue, + output_format, + width, + row_height, + padding, + font_size, + font_weight, + border_thickness, + color, + background_color, + base_nationale, + base_nationale_qualifiee, + viewlink, + viewlink_label, + viewlink_param, + picto_enabled, + positif_is_good, + description, + description_2, + entete_etendue_2, + output_format_2, + picto_enabled_2, + positif_is_good_2, + is_hide, + specific_viewlink, + specific_viewlink_label, + specific_viewlink_param, + to_indicateur_condition_id, + erase_rapport_indicateur_condition, + calc_formula, + hide_on_zero_field, + field_tag, + to_serie_indicateur_id, + string_to_array(serie_entete_etendue,'||'), + string_to_array(serie_description,'||'), + string_to_array(serie_output_format,'||'), + string_to_array(serie_picto_enabled,'||'), + string_to_array(serie_positif_is_good,'||') + FROM w_dbsetup + WHERE to_rapport_id <> 0 AND to_indicateur_id <> 0 + ; + + -- Rejouer le spécifique + UPDATE activite.t_rapports_rubriques SET + is_hide = w_specific_rapports_rubriques.is_hide, + specific_viewlink = CASE WHEN w_specific_rapports_rubriques.specific_viewlink IN ('1', '2') THEN '' ELSE w_specific_rapports_rubriques.specific_viewlink END, + specific_viewlink_label = w_specific_rapports_rubriques.specific_viewlink_label, + specific_viewlink_param = w_specific_rapports_rubriques.specific_viewlink_param + FROM w_specific_rapports_rubriques + WHERE w_specific_rapports_rubriques.rapport_id = t_rapports_rubriques.rapport_id AND + w_specific_rapports_rubriques.indicateur_id = t_rapports_rubriques.indicateur_id AND + w_specific_rapports_rubriques.entete_etendue = t_rapports_rubriques.entete_etendue AND + ( + w_specific_rapports_rubriques.is_hide = '1' OR + w_specific_rapports_rubriques.specific_viewlink <> '' OR + w_specific_rapports_rubriques.specific_viewlink_label <> '' OR + w_specific_rapports_rubriques.specific_viewlink_param <> '' + ) + ; + ]]> +
+ + + '' + ORDER BY t_expert_controle.code + ; + + ]]> + 0 + AND w_dbsetup.controle_code NOT IN (SELECT code FROM activite.t_expert_controle WHERE code IS NOT NULL); + + + ]]> +
+ + + '' + ORDER BY t_expert_controle.code, t_expert_controle_rule.numero + ; + + ]]> + +
+ + + + +
+ + + +
+ + + 0 + AND code NOT IN (SELECT code FROM activite.t_traitement_epmsi) + ; + + + ]]> +
+ + + +
+ + + +
+ + + + +
+ + + +
+ + + +
+ +
diff --git a/db/dvp_data_apply.bat b/db/dvp_data_apply.bat new file mode 100644 index 0000000..8a75640 --- /dev/null +++ b/db/dvp_data_apply.bat @@ -0,0 +1,4 @@ +@ECHO Off +ECHO /!\ VOUS ETES SUR LE POINT DE PERDRE LES DONNEES DE VOTRE BASE /!\ +PAUSE +..\..\..\Sources\db\data\iCTI_svn_data_apply.exe -m activite \ No newline at end of file diff --git a/db/dvp_data_extract.bat b/db/dvp_data_extract.bat new file mode 100644 index 0000000..2cc3ab2 --- /dev/null +++ b/db/dvp_data_extract.bat @@ -0,0 +1,2 @@ +@ECHO Off +..\..\..\Sources\db\data\iCTI_svn_data_extract.exe -m activite \ No newline at end of file diff --git a/db/hooks/install_db_last_jobs.sql b/db/hooks/install_db_last_jobs.sql new file mode 100644 index 0000000..86bc995 --- /dev/null +++ b/db/hooks/install_db_last_jobs.sql @@ -0,0 +1,5 @@ +-- ============================================================ +-- Derniers traitements +-- - Lancement de fonctions PGSQL +-- - Nettoyage installdb (éventuel) +-- ============================================================ \ No newline at end of file diff --git a/db/hooks/post_install_data.sql b/db/hooks/post_install_data.sql new file mode 100644 index 0000000..5e4e4f8 --- /dev/null +++ b/db/hooks/post_install_data.sql @@ -0,0 +1,3 @@ +-- ===================================================================== +-- Divers traitements sur les données après l'installation des données +-- ===================================================================== \ No newline at end of file diff --git a/db/hooks/pre_install_data.sql b/db/hooks/pre_install_data.sql new file mode 100644 index 0000000..48defa2 --- /dev/null +++ b/db/hooks/pre_install_data.sql @@ -0,0 +1,9 @@ +-- ===================================================================== +-- Divers traitements sur les données avant l'installation des données +-- ===================================================================== + +-- Si la valeur non renseigné est vide '', le tri fonctionne mal - A supprimer en septembre 2025 +UPDATE activite.t_services_facturation +SET code = '****' +WHERE oid = 0 +; \ No newline at end of file diff --git a/db/hooks/pre_install_schema.sql b/db/hooks/pre_install_schema.sql new file mode 100644 index 0000000..4e61b82 --- /dev/null +++ b/db/hooks/pre_install_schema.sql @@ -0,0 +1,136 @@ +-- ============================================= +-- Nettoyage de la BDD avant installation. +-- (Supprimer le contenu au bout de 3 mois) +-- - Suppression de tables +-- - Suppression de champs +-- - Suppression de vues/fonctions SQL +-- - Suppression ou modification de séquences +-- ============================================= + +DROP VIEW IF EXISTS activite.v_mouvements_sejour_3 CASCADE; + +DROP INDEX IF EXISTS i_expert_sejour_controle_4; + +SELECT base.cti_execute('ALTER TABLE ' || nspname || '.' || relname || ' DROP CONSTRAINT ' || conname, 1) +FROM pg_constraint + JOIN pg_namespace ON pg_namespace.oid = pg_constraint.connamespace + JOIN pg_catalog.pg_class ON pg_class.oid = pg_constraint.conrelid +WHERE conname = 't_lits_etage_id_key' AND + nspname like 'activite%' +; + +SELECT base.cti_execute('DROP INDEX IF EXISTS ' || nspname || '.' || pg_class.relname, 1) +FROM pg_class + JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid +WHERE + pg_namespace.nspname LIKE 'activite%' AND + pg_class.relname = 't_lits_etage_id_key' +; + +DROP TABLE IF EXISTS activite.t_sejours_ignores; + +ALTER TABLE activite.t_services_facturation + DROP COLUMN IF EXISTS unite_medicale_default_id + ,DROP COLUMN IF EXISTS unite_medicale_except1_etage_id + ,DROP COLUMN IF EXISTS unite_medicale_except1_id + ,DROP COLUMN IF EXISTS unite_medicale_except2_activite_id + ,DROP COLUMN IF EXISTS unite_medicale_except2_etage_id + ,DROP COLUMN IF EXISTS unite_medicale_except2_id + ,DROP COLUMN IF EXISTS unite_medicale_except3_activite_id + ,DROP COLUMN IF EXISTS unite_medicale_except1_activite_id + ,DROP COLUMN IF EXISTS unite_medicale_except3_etage_id + ,DROP COLUMN IF EXISTS unite_medicale_except3_id +; + +ALTER TABLE activite.t_lieux_c DROP COLUMN IF EXISTS etage_nb_cp CASCADE; +ALTER TABLE activite.t_lieux_c DROP COLUMN IF EXISTS etage_nb_lits CASCADE; +ALTER TABLE activite.t_lieux_c DROP COLUMN IF EXISTS service_facturation_nb_cp CASCADE; +ALTER TABLE activite.t_lieux_c DROP COLUMN IF EXISTS service_facturation_nb_lits CASCADE; +ALTER TABLE activite.t_lieux_c DROP COLUMN IF EXISTS etage_section_nb_cp CASCADE; +ALTER TABLE activite.t_lieux_c DROP COLUMN IF EXISTS etage_section_nb_lits CASCADE; + +ALTER TABLE activite.t_medecins_administratifs + DROP COLUMN IF EXISTS is_medecin_executant + ,DROP COLUMN IF EXISTS is_medecin_sejour + ,DROP COLUMN IF EXISTS statut +; + +ALTER TABLE activite.t_forme_activite_rule + DROP COLUMN IF EXISTS liste_activite + ,DROP COLUMN IF EXISTS liste_sauf_prestation + ,DROP COLUMN IF EXISTS liste_sauf_rubrique +; + +ALTER TABLE activite.p_factures_encours + DROP COLUMN IF EXISTS est_od +; + +ALTER TABLE activite.p_expert_sejour_controle + DROP COLUMN IF EXISTS borne_alerte + ,DROP COLUMN IF EXISTS code_groupe + ,DROP COLUMN IF EXISTS coefficient_attendu + ,DROP COLUMN IF EXISTS cumul_attendu + ,DROP COLUMN IF EXISTS cumul_base + ,DROP COLUMN IF EXISTS cumul_realise + ,DROP COLUMN IF EXISTS etat + ,DROP COLUMN IF EXISTS numero_editeur_activite +; + +ALTER TABLE activite.p_sejour_pmsi DROP COLUMN IF EXISTS rss_id_array +; + +DROP FUNCTION IF EXISTS activite.cti_reorganize_codes_postaux_c(); + +ALTER TABLE activite.p_sejours + DROP COLUMN IF EXISTS cm_id + ,DROP COLUMN IF EXISTS etab_destination_id + ,DROP COLUMN IF EXISTS etab_provenance_id + ,DROP COLUMN IF EXISTS gmd_id + ,DROP COLUMN IF EXISTS gn_id + ,DROP COLUMN IF EXISTS medecin_prescripteur_id + ,DROP COLUMN IF EXISTS rgme_id + ,DROP COLUMN IF EXISTS rss_id + ,DROP COLUMN IF EXISTS tiers_payant_12_id +; + +DROP VIEW IF EXISTS activite.v_lignes_oap_1 CASCADE +; + +DROP VIEW IF EXISTS activite.v_lignes_oap_2 CASCADE +; + +ALTER TABLE activite.t_ghm_c + DROP COLUMN IF EXISTS pole_oap_texte + ,DROP COLUMN IF EXISTS pole_oap_id + ,DROP COLUMN IF EXISTS pole_oap_code + ,DROP COLUMN IF EXISTS ligne_oap_id + ,DROP COLUMN IF EXISTS ligne_oap_texte + ,DROP COLUMN IF EXISTS ligne_oap_code +; +DROP TABLE IF EXISTS activite.p_sejours_checksum +; + +ALTER TABLE activite.t_ghs_c +DROP COLUMN IF EXISTS pole_oap_texte + ,DROP COLUMN IF EXISTS pole_oap_id + ,DROP COLUMN IF EXISTS pole_oap_code + ,DROP COLUMN IF EXISTS ligne_oap_id + ,DROP COLUMN IF EXISTS ligne_oap_texte + ,DROP COLUMN IF EXISTS ligne_oap_code +; + +SELECT base.cti_execute('DROP INDEX IF EXISTS ' || nspname || '.' || pg_class.relname, 1) +FROM pg_class +JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid +WHERE + pg_namespace.nspname LIKE 'activite_%' AND + pg_class.relname = 'p_sejours_groupes_smr_ukey' +; + +SELECT base.cti_execute('DROP INDEX IF EXISTS ' || nspname || '.' || pg_class.relname, 1) +FROM pg_class +JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid +WHERE + pg_namespace.nspname LIKE 'activite_%' AND + pg_class.relname = 'p_sejours_groupes_smr_pkey' +; \ No newline at end of file diff --git a/db/schema2/functions/calcul_encours~da,tx.yaml b/db/schema2/functions/calcul_encours~da,tx.yaml new file mode 100644 index 0000000..331a91c --- /dev/null +++ b/db/schema2/functions/calcul_encours~da,tx.yaml @@ -0,0 +1,6201 @@ +return: text +lang: plpgsql +parameters: + p0: + type: date + name: i_date_encours + p1: + type: text + name: i_option +src: | + DECLARE + w_NOW date; + w_date_traitement date; + w_date_encours_actuelle date; + w_date_encours_actuelle_shs date; + w_date_encours date; + w_date_encours_YYMM text; + w_date_histo_18 date; + w_date_histo_12 date; + w_date_histo_xx date; + w_date_sortie_max date; + w_date_histo_coeff_presta date; + w_OPTION_ENCOURSVALOCP text; + w_OPTION_ENCOURSMCOSUP text; + _DATEENCOURS numeric; + _DATESTARTENCOURS date; + _NBSEJMIN_HISTOGHS numeric; + _ENCOURSECARTGHSV numeric; + _ENCOURSRETROSUP text; + w_nbsejours_min text; + w_simul text; + + BEGIN + -- Date du jour = now sauf si date de fermeture + w_NOW = (SELECT + MIN(CASE WHEN code = 'DATEFERMETURE' AND + valeur <> '' AND + valeur < to_char(now(),'YYYYMMDD') THEN valeur::date + ELSE date(now()) END + ) + FROM activite.t_divers) + ; + RAISE NOTICE '%' , 'Parametres. Aujourd''hui : ' || w_NOW; + + -- Ne rien calculer sur etablissement fermé + + IF EXISTS ( + SELECT valeur + FROM activite.t_divers + WHERE code IN ('DATEFERMETURE','ACT_DAT_FIN') AND + valeur <> '' AND + ( + ( + valeur_date IS NOT NULL AND + valeur_date < date(now()) + ) OR + valeur::date < date(now()) + ) + LIMIT 1 + ) THEN + DELETE FROM activite.p_factures_lignes_c WHERE montant_encours <> 0; + DELETE FROM activite.p_factures_lignes_h WHERE montant_encours <> 0; + + DELETE + FROM activite.p_factures_lignes_c + USING activite.p_factures + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.montant_encours_c <> 0 + ; + DELETE + FROM activite.p_factures_lignes_h + USING activite.p_factures + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + (p_factures.montant_encours_c <> 0 OR p_factures.montant_encours_h) + ; + + UPDATE activite.p_factures SET + montant_encours_c = 0, + montant_encours_0_c = 0, + montant_encours_1_c = 0, + montant_encours_2_c = 0, + montant_encours_22_c = 0, + montant_encours_h = 0, + montant_encours_0_h = 0, + montant_encours_1_h = 0, + montant_encours_2_h = 0, + montant_encours_22_h = 0 + WHERE montant_encours_c <> 0 OR montant_encours_h <> 0; + + TRUNCATE activite.p_facture_ligne_valorise_c + ; + + return 'Valorisation désactivée car établissement fermé'; + + END IF; + + + -- Paramétrage + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'DATEENCOURS', + 'Date cloture encours', + '5', + 'Décalage pour cloture encours en nombre de jours ' + WHERE 'DATEENCOURS' NOT IN (SELECT code FROM activite.t_divers); + _DATEENCOURS = base.cti_to_number((SELECT valeur FROM activite.t_divers WHERE code = 'DATEENCOURS')); + IF _DATEENCOURS <= 0 THEN + _DATEENCOURS = 5; + END IF; + + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'DATESTARTENCOURS', + 'Date démarrage stockage encours encours', + '20110101', + 'Date démarrage stockage encours encours (AAAAMMJJ)' + WHERE 'DATESTARTENCOURS' NOT IN (SELECT code FROM activite.t_divers); + _DATESTARTENCOURS = (SELECT base.cti_to_date(valeur) FROM activite.t_divers WHERE code = 'DATESTARTENCOURS'); + IF _DATESTARTENCOURS < '20120101' OR _DATESTARTENCOURS IS NULL THEN + _DATESTARTENCOURS = '20120101'; + END IF; + RAISE NOTICE '%' , 'Parametres. Demarrage en-cours : ' || _DATESTARTENCOURS; + _DATESTARTENCOURS = date_trunc('month',_DATESTARTENCOURS) - interval '1 day'; + -- Paramètres pour génération fictive d'EXH + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'ENCOURSBORNEHAUTE', + 'Borne haute pour génération EXH en plus du GHS moyen', + '15', + 'Borne haute pour génération EXH en plus du GHS moyen sur encours dossiers non groupés (voir ENCOURSEXHMOYEN)' + WHERE 'ENCOURSBORNEHAUTE' NOT IN (SELECT code FROM activite.t_divers); + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'ENCOURSEXHMOYEN', + 'EXH moyen pour génération EXH en plus du GHS moyen', + '50', + 'Valeur EXH moyen pour génération EXH en plus du GHS moyen sur encours dossiers non groupés (voir ENCOURSBORNEHAUTE)' + WHERE 'ENCOURSEXHMOYEN' NOT IN (SELECT code FROM activite.t_divers); + -- Paramètres pour génération fictive GHS sur esthétique + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'ENCOURSGHMSANSGHS', + 'Pas de génération de GHS pour les GHM', + '14Z08Z', + 'Pas de génération de GHS pour les GHM' + WHERE 'ENCOURSGHMSANSGHS' NOT IN (SELECT code FROM activite.t_divers); + -- Paramètres pour génération fictive GHS sur esthétique + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'ENCOURSRETROSUP', + 'Nombre de mois pour calcul taux prestations', + '18', + '18 ou 12' + WHERE 'ENCOURSRETROSUP' NOT IN (SELECT code FROM activite.t_divers); + + _ENCOURSRETROSUP = (SELECT valeur FROM activite.t_divers WHERE code = 'ENCOURSRETROSUP'); + + -- Nombre de séjours minimum par catégorie (= par règle) d'historique de facturation du GHS + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'NBSEJMIN_HISTOGHS', + 'Histo factu GHS : nb séjours min', + '10', + 'Valorisation : nombre minimum de séjours par catégorie pour l''historique de facturation GHS (par défaut 10)' + WHERE 'NBSEJMIN_HISTOGHS' NOT IN (SELECT code FROM activite.t_divers); + _NBSEJMIN_HISTOGHS = base.cti_to_number((SELECT valeur FROM activite.t_divers WHERE code = 'NBSEJMIN_HISTOGHS')); + IF _NBSEJMIN_HISTOGHS <= 0 THEN + _NBSEJMIN_HISTOGHS = 10; + END IF; + w_nbsejours_min = to_char(_NBSEJMIN_HISTOGHS, 'FM999'); + + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'ENCOURSACTIVE', + 'Encours activés', + '0', + '1 = Stockage des encours activé' + WHERE 'ENCOURSACTIVE' NOT IN (SELECT code FROM activite.t_divers); + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'ENCOURSVALOCP', + 'Valorisation CP', + '0', + '1 = Ne pas tenir compte de la demande CP dans la valorisation' + WHERE 'ENCOURSVALOCP' NOT IN (SELECT code FROM activite.t_divers); + w_OPTION_ENCOURSVALOCP = (SELECT valeur FROM activite.t_divers WHERE code = 'ENCOURSVALOCP'); + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'ENCOURSGHSMBB', + 'GHS moyen des bébés sur encours', + '0', + 'Pour les séjours en maternité sans GHS bébé, PU du GHS bébé à générer' + WHERE 'ENCOURSGHSMBB' NOT IN (SELECT code FROM activite.t_divers); + + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'ENCOURSMCOSUP', + 'Valorisation Suppléments MCO', + '0', + '1 = Sur dossiers groupés validés, valoriser les suppléments (SRC,REA,NNx,STF) saisis (pour les autres utiliser la moyenne)' + WHERE 'ENCOURSMCOSUP' NOT IN (SELECT code FROM activite.t_divers); + w_OPTION_ENCOURSMCOSUP = (SELECT valeur FROM activite.t_divers WHERE code = 'ENCOURSMCOSUP'); + + -- Paramètres pour generation encours sur honoraires medecins salaries + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'ENCOURSMEDSAL', + 'Génération encours sur médecins salariés', + '0', + '1 = Génération encours sur médecins salariés' + WHERE 'ENCOURSMEDSAL' NOT IN (SELECT code FROM activite.t_divers); + + + + -- Paramètres pour comparer ghs valorisé avec moyenne / médecin -> Alerte expert + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'ENCOURSECARTGHSV', + 'Montant écart pour alerter si le GHS connu est sous valorisé / moyenne médecin', + '0', + 'Les GHS groupés sont valorisés aussi par la méthode des moyennes et les deux résultats sont comparés' + WHERE 'ENCOURSECARTGHSV' NOT IN (SELECT code FROM activite.t_divers); + + _ENCOURSECARTGHSV = base.cti_to_number(valeur) FROM activite.t_divers WHERE code = 'ENCOURSECARTGHSV'; + + -- Paramètre pour génération des en-cours SUR BG + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'ENCOURSACTIVEBG', + 'Encours activés sur BG', + '0', + '1 = Stockage des encours BG activé' + WHERE 'ENCOURSACTIVEBG' NOT IN (SELECT code FROM activite.t_divers); + + + + IF EXISTS (SELECT date_encours FROM activite.p_factures_encours LIMIT 1) THEN + UPDATE activite.t_divers + SET valeur = '1' + WHERE code = 'ENCOURSACTIVE'; + END IF; + _DATEENCOURS = base.cti_to_number((SELECT valeur FROM activite.t_divers WHERE code = 'DATEENCOURS')); + IF _DATEENCOURS <= 0 THEN + _DATEENCOURS = 5; + END IF; + -- Initialisations + -- Mise à jour factures externes pour affecter à la date d'entrée + UPDATE activite.p_factures + SET date_fin = date_debut + FROM activite.p_sejours + WHERE p_factures.no_sejour = p_sejours.no_sejour AND + type_sejour = '3' AND + ( + date_fin = date(date_debut + interval '1 day') OR + date_fin = '20991231' + ) + ; + -- Les GMT saisis en hospitalisation complète ne doivent pas être traités + DELETE FROM activite.p_factures_lignes_non_facturees_c + USING( + SELECT + no_facture + , prestation_id + FROM activite.p_factures_lignes_non_facturees_c + JOIN activite.t_prestations ON p_factures_lignes_non_facturees_c.prestation_id = t_prestations.oid + JOIN activite.t_lieux ON t_lieux.oid = p_factures_lignes_non_facturees_c.lieu_id + JOIN activite.t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + WHERE t_prestations.code = 'GMT' + AND t_modes_traitement.code = '03' + GROUP BY + no_facture + , prestation_id + ) subview + WHERE + p_factures_lignes_non_facturees_c.no_facture = subview.no_facture + AND p_factures_lignes_non_facturees_c.prestation_id = subview.prestation_id + ; + -- Initialisation des tiers payant sur les non facturés (cas de CEGI LOGHOS ou de SIGEMS, les tiers payant ne sont pas connu sur les non facturés + + + -- D'abord selon le tiers connu sur le patient + UPDATE activite.p_factures SET + tiers_payant_1_id = subview.tiers_payant_1_id, + tiers_payant_2_id = subview.tiers_payant_2_id + FROM + ( + SELECT p_factures.no_facture, subview.tiers_payant_1_id, subview.tiers_payant_2_id + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN + ( + SELECT no_patient, + (MAX(ARRAY[date_entree::text,p_factures.tiers_payant_1_id::text]))[2]::bigint AS tiers_payant_1_id, + (MAX(ARRAY[date_entree::text,p_factures.tiers_payant_2_id::text]))[2]::bigint AS tiers_payant_2_id + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_factures.tiers_payant_1_id <> 0 + GROUP BY 1 + ) subview ON p_sejours.no_patient = subview.no_patient + WHERE p_factures.code_facture = '0' AND + p_factures.tiers_payant_1_id = 0 + ) subview + WHERE p_factures.no_facture = subview.no_facture + ; + + -- Pour le reste, le code NR1 + UPDATE activite.p_factures + SET tiers_payant_1_id = t_tiers_payant.oid + FROM activite.t_tiers_payant + WHERE p_factures.code_facture = '0' AND + p_factures.tiers_payant_1_id = 0 AND + t_tiers_payant.code_original = '*CTINR1' + ; + + + -- désactivation index + RAISE NOTICE '%' , 'Initialisations. Desactivation index'; + PERFORM base.cti_disable_index('activite', 'i_factures_encours_2'); + PERFORM base.cti_disable_index('activite', 'i_factures_encours_4'); + PERFORM base.cti_disable_index('activite', 'i_factures_encours_5'); + PERFORM base.cti_disable_index('activite', 'i_factures_encours_6'); + PERFORM base.cti_disable_index('activite', 'i_factures_encours_7'); + PERFORM base.cti_disable_index('activite', 'i_factures_encours_8'); + PERFORM base.cti_disable_index('activite', 'i_factures_encours_9'); + PERFORM base.cti_disable_index('activite', 'i_factures_encours_10'); + PERFORM base.cti_disable_index('activite', 'i_factures_encours_11'); + PERFORM base.cti_disable_index('activite', 'i_factures_encours_lignes_c_2'); + PERFORM base.cti_disable_index('activite', 'i_factures_encours_lignes_c_3'); + PERFORM base.cti_disable_index('activite', 'i_factures_encours_lignes_c_4'); + PERFORM base.cti_disable_index('activite', 'i_factures_encours_lignes_c_5'); + PERFORM base.cti_disable_index('activite', 'i_factures_encours_lignes_c_6'); + PERFORM base.cti_disable_index('activite', 'i_factures_encours_lignes_c_7'); + PERFORM base.cti_disable_index('activite', 'i_factures_encours_lignes_c_8'); + RAISE NOTICE '%' , 'Initialisations. Creation tables de travail'; + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cti_encours_calcul_parametres') THEN + CREATE TEMP TABLE w_cti_encours_calcul_parametres + ( + date_encours date, + coefficient_mco numeric, + rubrique_facturation_ghs_id bigint, + rubrique_comptabilisation_ghs_id bigint, + prestation_ghs_id bigint, + rubrique_facturation_ghs_sea_id bigint, + rubrique_comptabilisation_ghs_sea_id bigint, + prestation_ghs_sea_id bigint, + rubrique_facturation_exh_id bigint, + rubrique_comptabilisation_exh_id bigint, + prestation_exh_id bigint, + rubrique_facturation_i01_id bigint, + rubrique_comptabilisation_i01_id bigint, + prestation_i01_id bigint + ) ; + END IF; + + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cti_encours_calcul_parametres_services') THEN + CREATE TEMP TABLE w_cti_encours_calcul_parametres_services + ( + service_facturation_id bigint, + type_sejour text, + rubrique_facturation_ghs_id bigint, + prestation_ghs_id bigint, + rubrique_facturation_exh_id bigint, + prestation_exh_id bigint + ); + END IF; + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cti_encours_calcul_parametres_services_prestations') THEN + CREATE TEMP TABLE w_cti_encours_calcul_parametres_services_prestations + ( + coefficient_mco numeric, + lieu_service_id bigint, + lieu_unite_fonctionnelle_id bigint, + nb_ambulatoires numeric, + nb_externes numeric, + nb_seances numeric, + nb_journees numeric, + nb_journees_cp numeric, + prestation_id bigint, + prestation_code text, + tranche_ght text, + prestation_type_valorisation text, + rubrique_facturation_id bigint, + prix_unitaire numeric, + nombre numeric, + coefficient numeric, + prix_unitaire_moyen_1 numeric, + nb_prix_unitaire_moyen_1 numeric, + prix_unitaire_moyen_3 numeric, + nb_prix_unitaire_moyen_3 numeric, + prix_unitaire_moyen numeric, + regle_prestation_texte text, + coefficient_calcule numeric DEFAULT 0, + prix_unitaire_calcule numeric DEFAULT 0, + coefficient_is_force text DEFAULT '0', + prix_unitaire_is_force text DEFAULT '0', + type_ligne text DEFAULT '', + prestation_10p_code text DEFAULT '', + rubrique_code text DEFAULT '', + rubrique_10p_code text DEFAULT '', + prestation_10p_id bigint DEFAULT 0, + rubrique_10p_id bigint DEFAULT 0 + ); + END IF; + + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cti_encours_calcul_parametres_services_journees') THEN + CREATE TEMP TABLE w_cti_encours_calcul_parametres_services_journees + ( + lieu_service_id bigint, + lieu_unite_fonctionnelle_id bigint, + nb_ambulatoires numeric, + nb_externes numeric, + nb_seances numeric, + nb_journees bigint, + nb_journees_cp bigint + ); + END IF; + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cti_encours_sejours') THEN + CREATE TEMP TABLE w_cti_encours_sejours + ( + sejour_id bigint NOT NULL, + no_sejour text NOT NULL, + type_sejour character(1), + est_budget_global text, + secteur_tarif text default '2', + medecin_sejour_id bigint, + specialite_medecin_sejour_id bigint, + lieu_sortie_service_id bigint, + lieu_sortie_unite_fonctionnelle_id bigint, + code_sorti numeric(1), + lieu_sortie_id bigint, + mode_sortie character(1), + date_groupage date, + tiers_payant_1_id bigint, + tiers_payant_2_id bigint, + nb_ghs numeric, + ghm_id bigint, + ghs_id bigint, + ghs_bebe1_id bigint, + ghs_bebe2_id bigint, + ghs_bebe3_id bigint, + particularites_encours_service text, + type_t2a text, + CONSTRAINT w_cti_encours_sejours_pkey PRIMARY KEY (no_sejour) + ) ; + END IF; + + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cti_encours_histo_sejour_facture') THEN + CREATE TEMP TABLE w_cti_encours_histo_sejour_facture + ( + no_sejour text, + date_fin date, + classe_ghm text default '', + medecin_sejour_id bigint, + specialite_medecin_sejour_id bigint, + lieu_sortie_service_id bigint, + lieu_sortie_unite_fonctionnelle_id bigint, + nb_ghs numeric, + tranche_sejour text, + duree_sejour integer, + montant_ghs numeric, + montant_ghs_original numeric, + taux_0 numeric, + taux_1 numeric, + taux_2 numeric + ) ; + END IF; + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cti_encours_histo_ghs') THEN + CREATE TEMP TABLE w_cti_encours_histo_ghs + ( + classe_ghm text, + regle text, + medecin_sejour_id bigint, + specialite_medecin_sejour_id bigint, + lieu_sortie_service_id bigint, + lieu_sortie_unite_fonctionnelle_id bigint, + tranche_sejour text, + duree_sejour integer, + nombre bigint, + montant_moyen_ghs numeric, + medecin_sejour_texte text default '', + specialite_medecin_sejour_texte text default '', + lieu_sortie_service_texte text default '', + lieu_sortie_unite_fonctionnelle_texte text default '', + tranche_sejour_texte text default '', + duree_sejour_texte text default '' + ) ; + CREATE INDEX w_cti_encours_histo_ghs_i1 + ON w_cti_encours_histo_ghs + USING btree + (medecin_sejour_id, lieu_sortie_service_id, lieu_sortie_unite_fonctionnelle_id) + ; + END IF; + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cti_encours_histo_dms_sejours') THEN + CREATE TEMP TABLE w_cti_encours_histo_dms_sejours + ( + no_sejour text, + medecin_sejour_id bigint, + specialite_medecin_sejour_id bigint, + lieu_sortie_service_id bigint, + lieu_sortie_unite_fonctionnelle_id bigint, + date_fin date, + date_debut date + ) ; + END IF; + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cti_encours_histo_dms') THEN + CREATE TEMP TABLE w_cti_encours_histo_dms + ( + regle text, + medecin_sejour_id bigint, + specialite_medecin_sejour_id bigint, + lieu_sortie_service_id bigint, + lieu_sortie_unite_fonctionnelle_id bigint, + dms numeric, + occurences bigint + ) ; + END IF; + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cti_encours_ghm_sans_ghs') THEN + CREATE TEMP TABLE w_cti_encours_ghm_sans_ghs + ( + ghm_id bigint + ) ; + END IF; + TRUNCATE w_cti_encours_ghm_sans_ghs; + INSERT INTO w_cti_encours_ghm_sans_ghs + SELECT oid + FROM base.t_ghm + WHERE code IN ('14Z08Z') + ; + INSERT INTO w_cti_encours_ghm_sans_ghs + SELECT oid + FROM base.t_ghm + JOIN activite.t_divers ON t_divers.code = 'ENCOURSGHMSANSGHS' + WHERE t_divers.valeur LIKE '%' || t_ghm.code || '%' AND + oid <> 0 AND + length(t_ghm.code) = 6 AND + t_ghm.code <> '14Z08Z' + ; + + CREATE TEMP TABLE IF NOT EXISTS w_cti_encours_factures + ( + oid bigint, + sejour_id bigint NOT NULL, + no_sejour text NOT NULL, + type_sejour text, + classe_ghm text, + no_facture text NOT NULL, + no_facture_encours text NOT NULL, + no_facture_reference text NOT NULL, + date_encours date, + date_debut date, + date_fin date, + lieu_sortie_id bigint, + mode_sortie text, + ghs_id bigint DEFAULT 0, + ghm_id bigint DEFAULT 0, + code_cp_demandee character(1) DEFAULT 0, + montant_valorise_c numeric(13,2) DEFAULT 0, + montant_valorise_0_c numeric(13,2) DEFAULT 0, + montant_valorise_1_c numeric(13,2) DEFAULT 0, + montant_valorise_2_c numeric(13,2) DEFAULT 0, + montant_encours_c numeric(13,2) DEFAULT 0, + montant_encours_0_c numeric(13,2) DEFAULT 0, + montant_encours_1_c numeric(13,2) DEFAULT 0, + montant_encours_2_c numeric(13,2) DEFAULT 0, + montant_valorise_h numeric(13,2) DEFAULT 0, + etat character(1) DEFAULT ''::bpchar, + type_t2a character(1) DEFAULT '0'::bpchar, + est_budget_global text, + secteur_tarif text default '2', + ghs_bebe1_id bigint DEFAULT 0, + ghs_bebe2_id bigint DEFAULT 0, + ghs_bebe3_id bigint DEFAULT 0, + code_sorti character(1) DEFAULT '0'::bpchar, + lieu_sortie_service_id bigint DEFAULT 0, + lieu_sortie_unite_fonctionnelle_id bigint DEFAULT 0, + medecin_sejour_id bigint DEFAULT 0, + specialite_medecin_sejour_id bigint, + duree_sejour integer DEFAULT 0, + tranche_sejour character(1) DEFAULT '0'::bpchar, + regle_ghs text DEFAULT ''::text, + regle_dms text DEFAULT '0'::text, + dms numeric default 0, + tiers_payant_1_id bigint, + tiers_payant_2_id bigint, + particularites_encours_service text, + uniquement_prestations_saisies text default '0', + ignorer text default '0', + CONSTRAINT w_cti_encours_factures_pkey PRIMARY KEY (no_facture) + ); + + CREATE INDEX IF NOT EXISTS w_cti_encours_factures_i1 + ON w_cti_encours_factures + USING btree + (no_sejour); + + CREATE TEMP TABLE IF NOT EXISTS w_cti_encours_factures_deja_cpc + ( + no_facture_reference text NOT NULL, + CONSTRAINT w_cti_encours_factures_deja_cpc_pkey PRIMARY KEY (no_facture_reference) + ); + + CREATE TEMP TABLE IF NOT EXISTS w_cti_encours_factures_histo_taux + ( + service_facturation_id bigint, + taux_ghs_1 numeric, + nb numeric, + regle_taux_texte text, + CONSTRAINT w_cti_encours_factures_histo_taux_pkey PRIMARY KEY (service_facturation_id) + ); + + CREATE TEMP SEQUENCE IF NOT EXISTS w_cti_encours_factures_lignes_c_sequence; + + CREATE TEMP TABLE IF NOT EXISTS w_cti_encours_factures_lignes_c + ( + oid bigint NOT NULL DEFAULT nextval('w_cti_encours_factures_lignes_c_sequence'::regclass), + no_sejour text NOT NULL, + no_facture text NOT NULL, + date_debut date, + date_fin date, + nb_rubrique numeric(5) DEFAULT 1, + coefficient numeric(7,2) DEFAULT 1, + coefficient_mco numeric(7,4) DEFAULT 1, + prestation_id bigint DEFAULT 0, + lpp_id bigint DEFAULT 0, + ucd_id bigint DEFAULT 0, + rubrique_facturation_id bigint DEFAULT 0, + rubrique_comptabilisation_id bigint DEFAULT 0, + ghs_id bigint DEFAULT 0, + prix_unitaire numeric(13,2) DEFAULT 0, + borne_basse numeric(5) DEFAULT 0, + borne_haute numeric(5) DEFAULT 0, + forfait_exb numeric(13,2) DEFAULT 0, + tarif_exb numeric(13,2) DEFAULT 0, + duree_sejour numeric(7) DEFAULT 0, + nb_prestation numeric(5) DEFAULT 1, + montant_encours numeric(13,2) DEFAULT 0, + montant_encours_0 numeric(13,2) DEFAULT 0, + montant_encours_1 numeric(13,2) DEFAULT 0, + montant_encours_2 numeric(13,2) DEFAULT 0, + montant_encours_22 numeric(13,2) DEFAULT 0, + type_ligne text DEFAULT ''::text, + regle_ghs text DEFAULT ''::text, + lieu_id bigint DEFAULT 0, + regle_coefficient numeric DEFAULT 0, + regle_texte text, + prix_unitaire_calcule numeric(13,2) DEFAULT 0, + coefficient_calcule numeric(13,2) DEFAULT 0, + ignorer text default '0' + ); + + CREATE INDEX IF NOT EXISTS w_cti_encours_factures_lignes_c_i1 + ON w_cti_encours_factures_lignes_c + USING btree + (no_facture); + + CREATE TEMP TABLE IF NOT EXISTS w_cti_factures_lignes_non_facturees_c + ( + no_sejour text, + no_facture text, + prestation_code character varying, + only_jour_sortie text, + type_valorisation_non_facture text + ); + + CREATE TEMP TABLE IF NOT EXISTS w_cti_encours_actes_se1234 + ( + oid bigint, + code text, + prestation_code text + ); + CREATE INDEX IF NOT EXISTS w_cti_encours_actes_se1234_i1 + ON w_cti_encours_actes_se1234 + USING btree + (oid); + + CREATE TEMP TABLE IF NOT EXISTS w_cti_encours_se1234 + ( + no_facture text, + acte_se text, + type_se text + ); + + CREATE INDEX IF NOT EXISTS w_cti_encours_se1234_i1 + ON w_cti_encours_se1234 + USING btree + (no_facture); + + CREATE TEMP TABLE IF NOT EXISTS w_cti_encours_factures_lignes_sup_c + ( + from_oid bigint, + prestation_code text, + date_debut_ghs date, + date_fin_ghs date, + nb_prestation_ghs integer, + oid bigint, + no_sejour text, + no_facture text, + date_debut date, + date_fin date, + nb_rubrique numeric(5), + coefficient numeric(7,2), + coefficient_mco numeric(7,4), + prestation_id bigint, + lpp_id bigint DEFAULT 0, + ucd_id bigint DEFAULT 0, + rubrique_facturation_id bigint, + rubrique_comptabilisation_id bigint, + ghs_id bigint, + prix_unitaire numeric(13,2), + borne_basse numeric(5), + borne_haute numeric(5), + forfait_exb numeric(13,2), + tarif_exb numeric(13,2), + duree_sejour numeric(7), + nb_prestation numeric(5), + montant_encours numeric(13,2), + montant_encours_0 numeric(13,2), + montant_encours_1 numeric(13,2), + montant_encours_2 numeric(13,2), + montant_encours_22 numeric(13,2), + type_ligne text, + regle_ghs text, + lieu_id bigint, + regle_coefficient numeric, + regle_texte text, + prix_unitaire_calcule numeric(13,2) DEFAULT 0, + coefficient_calcule numeric(13,2) DEFAULT 0, + ignorer text default '0' + ); + + CREATE TEMP TABLE IF NOT EXISTS w_cti_encours_factures_lignes_sup_c_gen + ( + from_oid bigint, + no_sejour text, + no_facture text, + date_debut date, + date_fin date, + lieu_id bigint, + rubrique_facturation_id bigint, + rubrique_comptabilisation_id bigint, + prestation_id bigint, + lpp_id bigint DEFAULT 0, + ucd_id bigint DEFAULT 0, + nb_rubrique integer, + nb_prestation integer, + coefficient numeric(7,2), + coefficient_mco numeric(7,4), + prix_unitaire numeric(13,2), + oid bigint, + montant_encours numeric, + type_ligne text, + regle_ghs text, + regle_coefficient numeric, + regle_texte text + ); + + CREATE TEMP TABLE IF NOT EXISTS w_cti_encours_factures_lignes_sup_c_gen_tot + ( + from_oid bigint, + nb_rubrique bigint, + nb_prestation bigint, + montant_encours numeric + ); + + CREATE TEMP TABLE IF NOT EXISTS w_cti_encours_repartition_tp + ( + rubrique_facturation_id bigint NOT NULL, + coeff_1 numeric, + coeff_2 numeric, + CONSTRAINT w_cti_encours_repartition_tp_pk PRIMARY KEY (rubrique_facturation_id) + ); + + RAISE NOTICE '%' , 'Initialisations. Repartition par tiers payant'; + + TRUNCATE w_cti_encours_repartition_tp; + + INSERT INTO w_cti_encours_repartition_tp + SELECT + rubrique_facturation_id, + base.cti_division(SUM(montant_facture_1) , SUM(montant_facture)) AS coeff_1, + base.cti_division(SUM(montant_facture_2 + montant_facture_22) , SUM(montant_facture)) AS coeff_2 + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + WHERE tiers_payant_1_id <> 0 ANd montant_facture <> 0 AND + p_factures_lignes_c.date_fin BETWEEN '20100301' AND w_NOW + GROUP BY 1; + UPDATE w_cti_encours_repartition_tp SET coeff_2 = 0 WHERE coeff_2 < 0.01; + UPDATE w_cti_encours_repartition_tp SET coeff_2 = 1 - coeff_1 WHERE coeff_2 >= 0.01 AND 1 - coeff_1 - coeff_2 < 0.01; + + -- Ménage selon paramétrage + IF i_option NOT ILIKE '%-nogen%' THEN + DELETE + FROM activite.p_factures_encours + WHERE code_origine = 'C' AND date_encours < (SELECT date(date_trunc('month',base.cti_to_date(valeur))) FROM activite.t_divers WHERE code = 'DATESTARTENCOURS') + ; + DELETE FROM activite.p_factures_encours_lignes_c + WHERE NOT EXISTS (SELECT 'NOT_TO_DELETE' FROM activite.p_factures_encours WHERE p_factures_encours.no_facture = p_factures_encours_lignes_c.no_facture) + AND p_factures_encours_lignes_c IS NOT NULL; + END IF; + -- Retraitement d'un mois + IF i_date_encours IS NOT NULL AND i_option NOT ILIKE '%-nogen%' THEN + DELETE FROM activite.p_factures_encours + USING w_cti_encours_calcul_parametres + WHERE date_trunc('month',p_factures_encours.date_encours) >= date_trunc('month',i_date_encours) AND + code_origine = 'C'; + + DELETE FROM activite.p_factures_encours_lignes_c + WHERE NOT EXISTS (SELECT 'NOT_TO_DELETE' FROM activite.p_factures_encours WHERE p_factures_encours.no_facture = p_factures_encours_lignes_c.no_facture) + AND p_factures_encours_lignes_c IS NOT NULL; + END IF; + -- Génération ou regénération des encours + RAISE NOTICE '%' , 'Generation encours'; + -- date encours actuelle spécial SHS + w_date_encours_actuelle_shs = + CASE WHEN EXISTS(SELECT nspname from pg_namespace where nspname = 'prod_shs') + THEN (SELECT date(date_trunc('month', MAX(date_vente)) + interval '2 month' - interval '1 day') + FROM activite.p_factures + JOIN activite.p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.t_rubriques_facturation ON rubrique_facturation_id = t_rubriques_facturation.oid AND t_rubriques_facturation.code_original = '111' + WHERE code_vente = '1') + ELSE '2099-12-31' END; + -- date encours actuelle standard + w_date_encours_actuelle = date(CASE WHEN EXTRACT('day' FROM w_NOW) <= _DATEENCOURS THEN date_trunc('month', w_NOW) - interval '1 day' ELSE date_trunc('month', w_NOW) + interval '1 month' - interval '1 day' END); + -- Pour SHS, Si date en cours < date standard (ventes pas faites) + IF w_date_encours_actuelle_shs < w_date_encours_actuelle THEN + w_date_encours_actuelle = w_date_encours_actuelle_shs; + END IF; + -- Stockage date encours active + INSERT INTO activite.t_divers (code, texte, valeur, description, valeur_date) + SELECT + 'ENCOURSNOW', + 'Date encours calculés', + w_date_encours_actuelle::text, + 'Date des encours actuellement calculés (non modifiable)', + w_date_encours_actuelle + WHERE 'ENCOURSNOW' NOT IN (SELECT code FROM activite.t_divers); + UPDATE activite.t_divers SET + valeur = w_date_encours_actuelle::text, + valeur_date = w_date_encours_actuelle + WHERE code = 'ENCOURSNOW' + ; + + w_date_encours = _DATESTARTENCOURS; + IF i_option ILIKE '%-nogen%' THEN + w_date_encours = date(date_trunc('month', w_date_encours_actuelle) - interval '1 day'); + END IF; + IF NOT EXISTS (SELECT valeur FROM activite.t_divers WHERE code = 'ENCOURSACTIVE' AND valeur = '1') THEN + w_date_encours = date(date_trunc('month', w_date_encours_actuelle) - interval '1 day'); + END IF; + LOOP + w_date_encours = date(date_trunc('month', w_date_encours) + interval '2 month' - interval '1 day'); + w_date_encours_YYMM = to_char(w_date_encours, 'MM YYYY'); + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Generation encours. Analyse.'; + IF w_date_encours > date(date_trunc('month',now())+interval '2 month') THEN + EXIT; + END IF; + IF w_date_encours > w_date_encours_actuelle THEN + EXIT; + END IF; + IF i_date_encours IS NOT NULL AND w_date_encours > i_date_encours THEN + EXIT; + END IF; + IF w_date_encours < w_date_encours_actuelle AND + EXISTS (SELECT date_encours FROM activite.p_factures_encours WHERE code_origine = 'C' AND date_trunc('month', date_encours) = date_trunc('month', w_date_encours) LIMIT 1) THEN + CONTINUE; + END IF; + IF w_date_encours < w_date_encours_actuelle AND + NOT EXISTS (SELECT date_vente FROM activite.p_factures WHERE code_vente = '1' AND date_trunc('month', date_vente) = date_trunc('month', w_date_encours) LIMIT 1) THEN + CONTINUE; + END IF; + + IF w_date_encours = w_date_encours_actuelle THEN + w_date_traitement = w_NOW; + w_date_sortie_max = w_NOW + CASE WHEN date_part('hour' ,w_NOW) > 18 THEN interval '1 day' ELSE interval '0 day' END; + ELSE + w_date_traitement = w_date_encours + interval '15 days'; + w_date_sortie_max = w_date_traitement; + END IF; + w_date_traitement = date(w_date_traitement); + + w_date_histo_18 = date(date_trunc('month',w_date_encours) - interval '18 month'); + w_date_histo_12 = date(date_trunc('month',w_date_encours) - interval '12 month'); + w_date_histo_xx = w_date_histo_18; + w_date_histo_coeff_presta = date(date_trunc('month',w_date_encours) - (_ENCOURSRETROSUP || 'month')::interval); + + RAISE NOTICE '%. %' , w_date_histo_coeff_presta, 'Date de calcul coefficient prestations ENCOURSRETROSUP'; + + w_date_sortie_max = date(w_date_sortie_max); + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Generation encours ' || w_date_encours_YYMM || ' ' || w_date_traitement::text; + -- Raz tables de travail + TRUNCATE w_cti_encours_calcul_parametres; + TRUNCATE w_cti_encours_calcul_parametres_services; + TRUNCATE w_cti_encours_calcul_parametres_services_prestations; + TRUNCATE w_cti_encours_calcul_parametres_services_journees; + TRUNCATE w_cti_encours_sejours; + TRUNCATE w_cti_encours_histo_sejour_facture; + TRUNCATE w_cti_encours_histo_ghs; + TRUNCATE w_cti_encours_histo_dms_sejours; + TRUNCATE w_cti_encours_histo_dms; + TRUNCATE w_cti_encours_factures_histo_taux; + TRUNCATE w_cti_encours_factures; + TRUNCATE w_cti_encours_factures_deja_cpc; + TRUNCATE w_cti_encours_factures_lignes_c; + TRUNCATE w_cti_factures_lignes_non_facturees_c; + TRUNCATE w_cti_encours_se1234; + TRUNCATE w_cti_encours_actes_se1234; + TRUNCATE w_cti_encours_factures_lignes_sup_c; + TRUNCATE w_cti_encours_factures_lignes_sup_c_gen; + TRUNCATE w_cti_encours_factures_lignes_sup_c_gen_tot; + -- Correction coefficient MCO + -- Initialisation du coefficient MCO non alimenté (exemple WEB100T) + UPDATE activite.p_factures_lignes_c + SET coefficient_mco = coefficient_mco_calcul + FROM activite.t_prestations, base.v_coefficient_mco + WHERE + prestation_id = t_prestations.oid AND + t_prestations.code IN ('GHS', 'EXH') AND + montant_facture <> 0 AND + coefficient_mco = 1 AND + date(p_factures_lignes_c.date_fin) BETWEEN v_coefficient_mco.date_debut AND v_coefficient_mco.date_fin + ; + + + -- Paramétrage des GHS + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Parametrage GHS'; + INSERT INTO w_cti_encours_calcul_parametres + SELECT + w_date_encours as date_encours, + (MAX(Array[date(p_factures_lignes_c.date_fin) - w_NOW, coefficient_mco]))[2] AS coefficient_mco, + (MAX(Array[CASE WHEN t_prestations.code = 'GHS' AND type_sejour <> '5' THEN date(p_factures_lignes_c.date_fin) - w_NOW ELSE -99999999 END, rubrique_facturation_id]))[2] AS rubrique_facturation_ghs_id, + (MAX(Array[CASE WHEN t_prestations.code = 'GHS' AND type_sejour <> '5' THEN date(p_factures_lignes_c.date_fin) - w_NOW ELSE -99999999 END, rubrique_comptabilisation_id]))[2] AS rubrique_comptabilisation_ghs_id, + (MAX(Array[CASE WHEN t_prestations.code = 'GHS' AND type_sejour <> '5' THEN date(p_factures_lignes_c.date_fin) - w_NOW ELSE -99999999 END, prestation_id]))[2] AS prestation_ghs_id, + (MAX(Array[CASE WHEN t_prestations.code = 'GHS' AND type_sejour = '5' THEN date(p_factures_lignes_c.date_fin) - w_NOW ELSE -99999999 END, rubrique_facturation_id]))[2] AS rubrique_facturation_ghs_sea_id, + (MAX(Array[CASE WHEN t_prestations.code = 'GHS' AND type_sejour = '5' THEN date(p_factures_lignes_c.date_fin) - w_NOW ELSE -99999999 END, rubrique_comptabilisation_id]))[2] AS rubrique_comptabilisation_ghs_sea_id, + (MAX(Array[CASE WHEN t_prestations.code = 'GHS' AND type_sejour = '5' THEN date(p_factures_lignes_c.date_fin) - w_NOW ELSE -99999999 END, prestation_id]))[2] AS prestation_ghs_sea_id, + (MAX(Array[CASE WHEN t_prestations.code = 'EXH' AND type_sejour <> '5' THEN date(p_factures_lignes_c.date_fin) - w_NOW ELSE -99999999 END, rubrique_facturation_id]))[2] AS rubrique_facturation_exh_id, + (MAX(Array[CASE WHEN t_prestations.code = 'EXH' AND type_sejour <> '5' THEN date(p_factures_lignes_c.date_fin) - w_NOW ELSE -99999999 END, rubrique_comptabilisation_id]))[2] AS rubrique_comptabilisation_exh_id, + (MAX(Array[CASE WHEN t_prestations.code = 'EXH' AND type_sejour <> '5' THEN date(p_factures_lignes_c.date_fin) - w_NOW ELSE -99999999 END, prestation_id]))[2] AS prestation_exh_id, + (MAX(Array[CASE WHEN t_prestations.code = 'I01' THEN date(p_factures_lignes_c.date_fin) - w_NOW ELSE -99999999 END, rubrique_facturation_id]))[2] AS rubrique_facturation_I01_id, + (MAX(Array[CASE WHEN t_prestations.code = 'I01' THEN date(p_factures_lignes_c.date_fin) - w_NOW ELSE -99999999 END, rubrique_comptabilisation_id]))[2] AS rubrique_comptabilisation_I01_id, + (MAX(Array[CASE WHEN t_prestations.code = 'I01' THEN date(p_factures_lignes_c.date_fin) - w_NOW ELSE -99999999 END, prestation_id]))[2] AS prestation_I01_id + FROM + activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture AND p_factures.date_fin >= w_date_histo_18 + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND t_prestations.code IN ('GHS', 'EXH', 'I01') + WHERE montant_facture <> 0 AND + p_factures_lignes_c.date_fin BETWEEN w_date_histo_18 AND w_date_traitement AND montant_facture > 0; + -- Prestations et rubriques par défaut + UPDATE w_cti_encours_calcul_parametres SET + coefficient_mco = COALESCE(coefficient_mco, 1), + prestation_ghs_id = COALESCE(prestation_ghs_id, (SELECT oid FROM activite.t_prestations WHERE code = 'GHS')), + rubrique_facturation_ghs_id = COALESCE(rubrique_facturation_ghs_id, (SELECT oid FROM activite.t_rubriques_facturation WHERE code = 'GHS')), + rubrique_comptabilisation_ghs_id = COALESCE(rubrique_comptabilisation_ghs_id, (SELECT oid FROM activite.t_rubriques_facturation WHERE code = 'GHS')), + prestation_ghs_sea_id = COALESCE(prestation_ghs_sea_id, (SELECT oid FROM activite.t_prestations WHERE code = 'GHS')), + rubrique_facturation_ghs_sea_id = COALESCE(rubrique_facturation_ghs_sea_id, (SELECT oid FROM activite.t_rubriques_facturation WHERE code = 'GHS')), + rubrique_comptabilisation_ghs_sea_id = COALESCE(rubrique_comptabilisation_ghs_sea_id, (SELECT oid FROM activite.t_rubriques_facturation WHERE code = 'GHS')), + prestation_exh_id = COALESCE(prestation_exh_id, (SELECT oid FROM activite.t_prestations WHERE code = 'EXH')), + rubrique_facturation_exh_id = COALESCE(rubrique_facturation_exh_id, (SELECT oid FROM activite.t_rubriques_facturation WHERE code = 'EXH')), + rubrique_comptabilisation_exh_id = COALESCE(rubrique_comptabilisation_exh_id, (SELECT oid FROM activite.t_rubriques_facturation WHERE code = 'EXH')), + prestation_i01_id = COALESCE(prestation_i01_id, (SELECT oid FROM activite.t_prestations WHERE code = 'I01')), + rubrique_facturation_i01_id = COALESCE(rubrique_facturation_i01_id, (SELECT oid FROM activite.t_rubriques_facturation WHERE code = 'I01')), + rubrique_comptabilisation_i01_id = COALESCE(rubrique_comptabilisation_i01_id, (SELECT oid FROM activite.t_rubriques_facturation WHERE code = 'I01')) + ; + -- forcage coefficient mco selon calcul et non plus depuis la facturation + UPDATE w_cti_encours_calcul_parametres + SET coefficient_mco = coefficient_mco_calcul + FROM base.v_coefficient_mco + WHERE date(now()) BETWEEN v_coefficient_mco.date_debut AND v_coefficient_mco.date_fin + ; + -- Par service + INSERT INTO w_cti_encours_calcul_parametres_services + SELECT + service_facturation_id, + type_sejour, + (MAX(CASE WHEN prestation_code = 'GHS' THEN ARRAY[to_char(nb,'FM0000000000'),rubrique_facturation_id::text] ELSE NULL END))[2]::bigint, + (MAX(CASE WHEN prestation_code = 'GHS' THEN ARRAY[to_char(nb,'FM0000000000'),prestation_id::text] ELSE NULL END))[2]::bigint, + (MAX(CASE WHEN prestation_code = 'EXH' THEN ARRAY[to_char(nb,'FM0000000000'),rubrique_facturation_id::text] ELSE NULL END))[2]::bigint, + (MAX(CASE WHEN prestation_code = 'EXH' THEN ARRAY[to_char(nb,'FM0000000000'),prestation_id::text] ELSE NULL END))[2]::bigint + FROM + ( + SELECT + type_sejour, + t_lieux.service_facturation_id, + t_prestations.code AS prestation_code, + prestation_id, + rubrique_facturation_id, + count(*) AS nb + FROM + activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND t_prestations.code IN ('GHS', 'EXH') + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + WHERE montant_facture <> 0 AND + p_factures_lignes_c.date_fin BETWEEN w_date_histo_18 AND w_date_traitement AND montant_facture > 0 + GROUP BY 1,2,3,4,5 + HAVING count(*) > 10 + ) subview + GROUP BY 1,2 + ; + + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Historique facturation prestations'; + + INSERT INTO w_cti_encours_calcul_parametres_services_prestations + SELECT w_cti_encours_calcul_parametres.coefficient_mco, + t_lieux.service_facturation_id AS lieu_service_id, + t_lieux.unite_fonctionnelle_id AS lieu_unite_fonctionnelle_id, + 0::numeric AS nb_ambulatoires, + 0::numeric AS nb_externes, + 0::numeric AS nb_seances, + 0::numeric AS nb_journees, + 0::numeric AS nb_journees_cp, + prestation_id, + t_prestations.code AS prestation_code, + CASE + WHEN t_prestations.code = 'GHT' AND p_factures_lignes_c.date_debut - p_sejours.date_entree <= 3 THEN '1' + WHEN t_prestations.code = 'GHT' AND p_factures_lignes_c.date_debut - p_sejours.date_entree BETWEEN 4 AND 8 THEN '2' + WHEN t_prestations.code = 'GHT' AND p_factures_lignes_c.date_debut - p_sejours.date_entree BETWEEN 9 AND 30 THEN '3' + WHEN t_prestations.code = 'GHT' AND p_factures_lignes_c.date_debut - p_sejours.date_entree > 30 THEN '9' + ELSE '' END AS tranche_ght, + COALESCE(t_prestations.type_valorisation_non_facture,'') AS prestation_type_valorisation, + rubrique_facturation_id, + COALESCE((MAX(Array[date(p_factures_lignes_c.date_fin) - w_NOW, prix_unitaire]))[2],0) as prix_unitaire, + SUM(nb_rubrique * CASE WHEN coefficient <> 0 THEN coefficient ELSE 1 END) - + SUM(CASE WHEN p_sejours.type_sejour = '1' AND p_factures_lignes_c.date_fin = p_sejours.date_sortie AND (t_prestations.code IN ('CPC', 'SHO', 'CP') OR t_prestations.type_valorisation_non_facture IN ('CP')) THEN 1 ELSE 0 END) as nombre, + 0::numeric AS coefficient, + base.cti_division( + SUM(CASE WHEN p_factures_lignes_c.date_debut >= date(date_trunc('month',w_cti_encours_calcul_parametres.date_encours)) THEN CASE WHEN taux_1+taux_2+taux_0 = 100 THEN montant_facture ELSE nb_rubrique * CASE WHEN coefficient <> 0 THEN coefficient ELSE 1 END * prix_unitaire END ELSE 0 END) , + SUM(CASE WHEN p_factures_lignes_c.date_debut >= date(date_trunc('month',w_cti_encours_calcul_parametres.date_encours)) THEN nb_rubrique * CASE WHEN coefficient <> 0 THEN coefficient ELSE 1 END ELSE 0 END) + ) AS prix_unitaire_moyen_1, + SUM(CASE WHEN p_factures_lignes_c.date_debut >= date(date_trunc('month',w_cti_encours_calcul_parametres.date_encours)) THEN nb_rubrique * CASE WHEN coefficient <> 0 THEN coefficient ELSE 1 END ELSE 0 END) AS nb_prix_unitaire_moyen_1, + base.cti_division( + SUM(CASE WHEN p_factures_lignes_c.date_debut >= w_cti_encours_calcul_parametres.date_encours - interval '3 month' THEN CASE WHEN taux_1+taux_2+taux_0 = 100 THEN montant_facture ELSE nb_rubrique * CASE WHEN coefficient <> 0 THEN coefficient ELSE 1 END * prix_unitaire END ELSE 0 END) , + SUM(CASE WHEN p_factures_lignes_c.date_debut >= w_cti_encours_calcul_parametres.date_encours - interval '3 month' THEN nb_rubrique * CASE WHEN coefficient <> 0 THEN coefficient ELSE 1 END ELSE 0 END) + ) AS prix_unitaire_moyen_3, + SUM(CASE WHEN p_factures_lignes_c.date_debut >= w_cti_encours_calcul_parametres.date_encours - interval '3 month' THEN nb_rubrique * CASE WHEN coefficient <> 0 THEN coefficient ELSE 1 END ELSE 0 END) AS nb_prix_unitaire_moyen_3, + base.cti_division( + SUM(CASE WHEN taux_1+taux_2+taux_0 = 100 THEN montant_facture ELSE nb_rubrique * CASE WHEN coefficient <> 0 THEN coefficient ELSE 1 END * prix_unitaire END), + SUM(nb_rubrique * CASE WHEN coefficient <> 0 THEN coefficient ELSE 1 END) + ) AS prix_unitaire_moyen, + ''::text AS regle_prestation_texte, + 0::numeric AS coefficient_calcule, + 0::numeric AS prix_unitaire_calcule, + '0'::text AS coefficient_is_force, + '0'::text AS prix_unitaire_is_force, + ''::text AS type_ligne, + ''::text AS prestation_10p_code, + ''::text AS rubrique_code, + ''::text AS rubrique_10p_code, + 0::bigint AS prestation_10p_id, + 0::bigint AS rubrique_10p_id + FROM w_cti_encours_calcul_parametres, activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture AND type_facture NOT IN ('E') AND code_facture >= '1' AND p_factures.date_fin >= w_date_histo_coeff_presta + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.p_sejours On p_factures.no_sejour = p_sejours.no_sejour + WHERE p_factures_lignes_c.montant_facture <> 0 AND p_factures_lignes_c.date_fin <= w_cti_encours_calcul_parametres.date_encours AND + (t_prestations.code IN ('GMT', 'PJ', 'FJ', 'ENT', 'I01', 'PMS', 'CPC', 'SHO', 'CP','SRC','STF','REA','FJA','ATU','FPU','SE1','SE2','SE3','SE4','SE5','SE6','SE7', 'IGM', 'IGP', 'APD', 'AMD', 'AMF', 'APD', 'IMD', 'IMI', 'IPD', 'IVG', 'GHT', 'NN1', 'NN2', 'NN3', 'D09', 'D11', 'D13', 'D15', 'D16', 'DTP', 'DMASSR') OR + t_prestations.type_valorisation_non_facture IN ('GMT', 'CP','PJ','ENT','*AVGJOUSER') + ) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13 + ORDER BY 1,2,3,4,5,6; + + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET rubrique_code = t_rubriques_facturation.code + FROM activite.t_rubriques_facturation + WHERE rubrique_facturation_id = t_rubriques_facturation.oid + ; + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET prestation_10p_code = t_prestations.code, + prestation_10p_id = t_prestations.oid + FROM activite.t_prestations + WHERE ('M'||w_cti_encours_calcul_parametres_services_prestations.prestation_code = t_prestations.code AND t_prestations.code <> 'MPJ' OR + w_cti_encours_calcul_parametres_services_prestations.prestation_code IN ('GMT', 'PJ') AND t_prestations.code = 'MPJS') + ; + + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET rubrique_10p_id = subview.rubrique_10p_id, rubrique_10p_code = subview.rubrique_10p_code + FROM + ( + SELECT prestation_10p_id, + (MAX(Array[date_debut::text,p_factures_lignes_c.rubrique_facturation_id::text]))[2]::bigint AS rubrique_10p_id, + (MAX(Array[date_debut::text,t_rubriques_facturation.code::text]))[2]::text AS rubrique_10p_code + FROM activite.p_factures_lignes_c + JOIN w_cti_encours_calcul_parametres_services_prestations ON p_factures_lignes_c.prestation_id = prestation_10p_id AND prestation_10p_id > 0 + JOIN activite.t_rubriques_facturation ON p_factures_lignes_c.rubrique_facturation_id = t_rubriques_facturation.oid + WHERE montant_facture <> 0 + group by 1 + ) subview + WHERE w_cti_encours_calcul_parametres_services_prestations.prestation_10p_id = subview.prestation_10p_id + ; + + + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET nombre = CASE WHEN w_cti_encours_calcul_parametres_services_prestations.rubrique_facturation_id = subview.rubrique_facturation_id + THEN w_cti_encours_calcul_parametres_services_prestations.nombre + ELSE 0 END + FROM + ( + SELECT lieu_service_id, + lieu_unite_fonctionnelle_id, + prestation_id, + count(*), + (MAX(Array[nombre, rubrique_facturation_id]))[2] AS rubrique_facturation_id + FROM w_cti_encours_calcul_parametres_services_prestations + WHERE prestation_code NOT IN ('CPC', 'SHO', 'CP') AND prestation_type_valorisation NOT IN ('CP') + GROUP BY 1,2,3 + HAVING count(*) > 1 + ) subview + WHERE w_cti_encours_calcul_parametres_services_prestations.lieu_service_id = subview.lieu_service_id AND + w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id = subview.lieu_unite_fonctionnelle_id AND + w_cti_encours_calcul_parametres_services_prestations.prestation_id = subview.prestation_id; + DELETE FROM w_cti_encours_calcul_parametres_services_prestations WHERE nombre = 0; + INSERT INTO w_cti_encours_calcul_parametres_services_prestations + SELECT + coefficient_mco, + lieu_service_id, + lieu_unite_fonctionnelle_id, + nb_ambulatoires, + nb_externes, + nb_seances, + nb_journees, + nb_journees_cp, + (SELECT oid FROM activite.t_prestations WHERE code = 'FJA') AS prestation_id, + 'FJA' AS prestation_code, + ''::text AS tranche_ght, + ''::text AS prestation_type_valorisation, + rubrique_facturation_id, + prix_unitaire, + nombre, + coefficient, + prix_unitaire_moyen_1, + nb_prix_unitaire_moyen_1, + prix_unitaire_moyen_3, + nb_prix_unitaire_moyen_3, + prix_unitaire_moyen, + ''::text AS regle_prestation_texte, + 0::numeric AS coefficient_calcule, + 0::numeric AS prix_unitaire_calcule, + '0'::text AS coefficient_is_force, + '0'::text AS prix_unitaire_is_force, + ''::text AS type_ligne + FROM w_cti_encours_calcul_parametres_services_prestations + WHERE prestation_code = 'FJ' AND + 'FJA' || '|' || lieu_service_id::text || '|' || lieu_unite_fonctionnelle_id::text NOT IN (SELECT prestation_code || '|' || lieu_service_id::text || '|' || lieu_unite_fonctionnelle_id::text FROM w_cti_encours_calcul_parametres_services_prestations); + + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET prix_unitaire = + CASE + WHEN prix_unitaire_moyen_1 <> 0 AND nb_prix_unitaire_moyen_1 > 100 THEN + CASE WHEN prix_unitaire - prix_unitaire_moyen_1 BETWEEN -2 AND 2 THEN prix_unitaire ELSE round(prix_unitaire_moyen_1,2) END + WHEN prix_unitaire_moyen_3 <> 0 AND nb_prix_unitaire_moyen_1 > 100 THEN + CASE WHEN prix_unitaire - prix_unitaire_moyen_3 BETWEEN -2 AND 2 THEN prix_unitaire ELSE round(prix_unitaire_moyen_3,2) END + WHEN prix_unitaire_moyen <> 0 THEN + CASE WHEN prix_unitaire - prix_unitaire_moyen BETWEEN -2 AND 2 THEN prix_unitaire ELSE round(prix_unitaire_moyen,2) END + ELSE prix_unitaire + END; + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Historique occupation ' || w_date_histo_coeff_presta::text; + INSERT INTO w_cti_encours_calcul_parametres_services_journees + SELECT t_lieux.service_facturation_id AS lieu_service_id, + t_lieux.unite_fonctionnelle_id AS lieu_unite_fonctionnelle_id, + SUM(nb_ambulatoires) AS nb_ambulatoires, + SUM(nb_externes) AS nb_externes, + SUM(nb_seances) AS nb_seances, + COUNT(DISTINCT CASE WHEN heure_fin = 240000 OR heure_debut > 0 AND heure_fin < 240000 THEN p_mouvements_sejour.no_sejour || p_mouvements_sejour.date::text ELSE NULL END) as nb_journees, + COUNT(DISTINCT CASE WHEN est_chambre_particuliere <> '1' THEN NULL + WHEN heure_fin = 240000 OR heure_debut > 0 AND heure_fin < 240000 THEN p_mouvements_sejour.no_sejour || p_mouvements_sejour.date::text + ELSE NULL END + ) as nb_journees_cp + FROM w_cti_encours_calcul_parametres, + activite.p_mouvements_sejour + JOIN activite.p_sejours ON p_mouvements_sejour.no_sejour = p_sejours.no_sejour + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + WHERE p_mouvements_sejour.date <= w_cti_encours_calcul_parametres.date_encours AND + p_mouvements_sejour.date >= w_date_histo_coeff_presta AND + p_mouvements_sejour.no_sejour IN (SELECT no_sejour FROM activite.p_factures WHERE type_facture NOT IN ('E') AND code_facture >= '1' AND p_factures.date_fin >= w_date_histo_18) + GROUP BY 1,2; + UPDATE w_cti_encours_calcul_parametres_services_prestations SET + nb_ambulatoires = w_cti_encours_calcul_parametres_services_journees.nb_ambulatoires, + nb_externes = w_cti_encours_calcul_parametres_services_journees.nb_externes, + nb_seances = w_cti_encours_calcul_parametres_services_journees.nb_seances, + nb_journees = w_cti_encours_calcul_parametres_services_journees.nb_journees, + nb_journees_cp = w_cti_encours_calcul_parametres_services_journees.nb_journees_cp + FROM w_cti_encours_calcul_parametres_services_journees + WHERE w_cti_encours_calcul_parametres_services_journees.lieu_service_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + w_cti_encours_calcul_parametres_services_journees.lieu_unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id; + + + + -- Récupération historique d'un autre environnement (saint gatien) + IF EXISTS ( + SELECT table_name + FROM information_schema.tables + WHERE table_schema || '.' || table_name = 'activite.t_encours_calcul_parametres_services_prestations_histo' ) THEN + + INSERT INTO w_cti_encours_calcul_parametres_services_prestations + ( + coefficient_mco, + lieu_service_id, + lieu_unite_fonctionnelle_id, + nb_ambulatoires, + nb_externes, + nb_seances, + nb_journees, + nb_journees_cp, + prestation_id, + prestation_code, + tranche_ght, + prestation_type_valorisation, + rubrique_facturation_id, + prix_unitaire, + nombre, + coefficient, + prix_unitaire_moyen_1, + nb_prix_unitaire_moyen_1, + prix_unitaire_moyen_3, + nb_prix_unitaire_moyen_3, + prix_unitaire_moyen, + regle_prestation_texte, + coefficient_calcule, + prix_unitaire_calcule, + coefficient_is_force, + prix_unitaire_is_force, + type_ligne, + prestation_10p_code, + rubrique_code, + rubrique_10p_code, + prestation_10p_id, + rubrique_10p_id + ) + SELECT + t_encours_calcul_parametres_services_prestations_histo.coefficient_mco, + t_encours_calcul_parametres_services_prestations_histo.lieu_service_id, + t_encours_calcul_parametres_services_prestations_histo.lieu_unite_fonctionnelle_id, + t_encours_calcul_parametres_services_prestations_histo.nb_ambulatoires, + t_encours_calcul_parametres_services_prestations_histo.nb_externes, + t_encours_calcul_parametres_services_prestations_histo.nb_seances, + t_encours_calcul_parametres_services_prestations_histo.nb_journees, + t_encours_calcul_parametres_services_prestations_histo.nb_journees_cp, + t_encours_calcul_parametres_services_prestations_histo.prestation_id, + t_encours_calcul_parametres_services_prestations_histo.prestation_code, + t_encours_calcul_parametres_services_prestations_histo.tranche_ght, + t_encours_calcul_parametres_services_prestations_histo.prestation_type_valorisation, + t_encours_calcul_parametres_services_prestations_histo.rubrique_facturation_id, + t_encours_calcul_parametres_services_prestations_histo.prix_unitaire, + t_encours_calcul_parametres_services_prestations_histo.nombre, + t_encours_calcul_parametres_services_prestations_histo.coefficient, + t_encours_calcul_parametres_services_prestations_histo.prix_unitaire_moyen_1, + t_encours_calcul_parametres_services_prestations_histo.nb_prix_unitaire_moyen_1, + t_encours_calcul_parametres_services_prestations_histo.prix_unitaire_moyen_3, + t_encours_calcul_parametres_services_prestations_histo.nb_prix_unitaire_moyen_3, + t_encours_calcul_parametres_services_prestations_histo.prix_unitaire_moyen, + t_encours_calcul_parametres_services_prestations_histo.regle_prestation_texte, + t_encours_calcul_parametres_services_prestations_histo.coefficient_calcule, + t_encours_calcul_parametres_services_prestations_histo.prix_unitaire_calcule, + t_encours_calcul_parametres_services_prestations_histo.coefficient_is_force, + t_encours_calcul_parametres_services_prestations_histo.prix_unitaire_is_force, + t_encours_calcul_parametres_services_prestations_histo.type_ligne, + t_encours_calcul_parametres_services_prestations_histo.prestation_10p_code, + t_encours_calcul_parametres_services_prestations_histo.rubrique_code, + t_encours_calcul_parametres_services_prestations_histo.rubrique_10p_code, + t_encours_calcul_parametres_services_prestations_histo.prestation_10p_id, + t_encours_calcul_parametres_services_prestations_histo.rubrique_10p_id + FROM activite.t_encours_calcul_parametres_services_prestations_histo + LEFT JOIN w_cti_encours_calcul_parametres_services_prestations ON + t_encours_calcul_parametres_services_prestations_histo.lieu_service_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_encours_calcul_parametres_services_prestations_histo.lieu_unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + t_encours_calcul_parametres_services_prestations_histo.prestation_id = w_cti_encours_calcul_parametres_services_prestations.prestation_id AND + t_encours_calcul_parametres_services_prestations_histo.rubrique_facturation_id = w_cti_encours_calcul_parametres_services_prestations.rubrique_facturation_id AND + t_encours_calcul_parametres_services_prestations_histo.tranche_ght = w_cti_encours_calcul_parametres_services_prestations.tranche_ght + WHERE w_cti_encours_calcul_parametres_services_prestations.lieu_service_id IS NULL + ; + + UPDATE w_cti_encours_calcul_parametres_services_prestations SET + nb_ambulatoires = w_cti_encours_calcul_parametres_services_prestations.nb_ambulatoires + t_encours_calcul_parametres_services_prestations_histo.nb_ambulatoires, + nb_externes = w_cti_encours_calcul_parametres_services_prestations.nb_externes + t_encours_calcul_parametres_services_prestations_histo.nb_externes, + nb_seances = w_cti_encours_calcul_parametres_services_prestations.nb_seances + t_encours_calcul_parametres_services_prestations_histo.nb_seances, + nb_journees = w_cti_encours_calcul_parametres_services_prestations.nb_journees + t_encours_calcul_parametres_services_prestations_histo.nb_journees, + nb_journees_cp = w_cti_encours_calcul_parametres_services_prestations.nb_journees_cp + t_encours_calcul_parametres_services_prestations_histo.nb_journees_cp, + nombre = w_cti_encours_calcul_parametres_services_prestations.nombre + t_encours_calcul_parametres_services_prestations_histo.nombre + FROM activite.t_encours_calcul_parametres_services_prestations_histo + WHERE t_encours_calcul_parametres_services_prestations_histo.lieu_service_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_encours_calcul_parametres_services_prestations_histo.lieu_unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + t_encours_calcul_parametres_services_prestations_histo.prestation_id = w_cti_encours_calcul_parametres_services_prestations.prestation_id AND + t_encours_calcul_parametres_services_prestations_histo.rubrique_facturation_id = w_cti_encours_calcul_parametres_services_prestations.rubrique_facturation_id AND + t_encours_calcul_parametres_services_prestations_histo.tranche_ght = w_cti_encours_calcul_parametres_services_prestations.tranche_ght + ; + + END IF; + + + -- + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET coefficient = + CASE + WHEN base.cti_division(nombre, nb_seances) < 0.1 THEN 0 + WHEN base.cti_division(nombre, nb_seances) > 0.4 THEN 1 + ELSE round(base.cti_division(nombre, nb_seances),2) + END + WHERE prestation_code IN ('D09', 'D11', 'D13', 'D13', 'D15', 'D16', 'DTP'); + + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET coefficient = + CASE + WHEN base.cti_division(nombre, nb_journees) < 0.05 THEN 0 + WHEN base.cti_division(nombre, nb_journees) < 0.1 AND nombre < 100 THEN 0 + WHEN base.cti_division(nombre, nb_journees) > 0.95 THEN 1 + ELSE round(base.cti_division(nombre, nb_journees),2) + END + WHERE prestation_code IN ('SRC', 'REA', 'STF'); + + + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET coefficient = + CASE + WHEN base.cti_division(nombre, nb_journees_cp) < 0.05 THEN 0 + WHEN base.cti_division(nombre, nb_journees_cp) > 1 THEN 1 + ELSE round(base.cti_division(nombre, nb_journees_cp),2) + END + WHERE prestation_code IN ('CPC', 'SHO', 'CP') OR prestation_type_valorisation IN ('CP'); + + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET nb_journees = w_cti_encours_calcul_parametres_services_prestations.nombre, + coefficient = + CASE + WHEN base.cti_division(nombre, nb_journees) < 0.1 THEN 0 + ELSE 1 + END + FROM + ( + SELECT lieu_service_id, lieu_unite_fonctionnelle_id, + base.cti_division(SUM(nombre), MAX(nb_journees)) + FROM w_cti_encours_calcul_parametres_services_prestations + WHERE prestation_code IN ('GHT') + GROUP BY 1,2 + ) subview + WHERE w_cti_encours_calcul_parametres_services_prestations.lieu_service_id = subview.lieu_service_id AND + w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id = subview.lieu_unite_fonctionnelle_id AND + prestation_code IN ('GHT'); + + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET coefficient = + CASE + WHEN base.cti_division(nombre, nb_ambulatoires + nb_externes) < 0.05 THEN 0 + WHEN base.cti_division(nombre, nb_ambulatoires + nb_externes) > 1 THEN 1 + ELSE round(base.cti_division(nombre, nb_ambulatoires + nb_externes),2) + END + WHERE prestation_code IN ('AMD', 'AMF', 'IGM', 'IGP', 'APD', 'IMD', 'IMI', 'IPD', 'IVG'); + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET coefficient = + CASE + WHEN base.cti_division(nombre, nb_journees) < 0.05 THEN 0 + WHEN base.cti_division(nombre, nb_journees) > 1 THEN 1 + ELSE round(base.cti_division(nombre, nb_journees),2) + END + WHERE prestation_code IN ('NN1', 'NN2', 'NN3'); + + -- FPU à compter de janvier 2022. Initialisation provisoire + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT 'FPU'::text, 'FPU'::text, 'Forfait patient urgences'::text, 'Forfait patient urgences'::text + WHERE 'FPU'::text NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL ) + ; + + INSERT INTO w_cti_encours_calcul_parametres_services_prestations + SELECT coefficient_mco, + lieu_service_id, + lieu_unite_fonctionnelle_id, + nb_ambulatoires, + nb_externes, + nb_seances, + nb_journees, + nb_journees_cp, + t_prestations.oid AS prestation_id, + t_prestations.code AS prestation_code, + ''::text AS tranche_ght, + prestation_type_valorisation, + rubrique_facturation_id, + 19.61::numeric as prix_unitaire, + 0::numeric as nombre, + 0::numeric AS coefficient, + 19.61::numeric as prix_unitaire_moyen_1, + 0::numeric as nb_prix_unitaire_moyen_1, + 19.61::numeric as prix_unitaire_moyen_3, + 0::numeric as nb_prix_unitaire_moyen_3, + 19.61::numeric as prix_unitaire_moyen, + regle_prestation_texte, + coefficient_calcule, + 19.61::numeric AS prix_unitaire_calcule, + coefficient_is_force, + prix_unitaire_is_force, + ''::text AS type_ligne + FROM w_cti_encours_calcul_parametres_services_prestations + JOIN activite.t_prestations ON t_prestations.code = 'FPU' + WHERE prestation_code = 'ATU' AND + (lieu_service_id::text||'-'||lieu_unite_fonctionnelle_id::text||'-'||t_prestations.code::text) NOT IN + ( + SELECT lieu_service_id::text||'-'||lieu_unite_fonctionnelle_id::text||'-'||prestation_code::text FROM w_cti_encours_calcul_parametres_services_prestations + ) + ; + + -- Le coefficient calculé est la somme des ATU FPU + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET coefficient = subview.coefficient + FROM + ( + SELECT lieu_service_id, lieu_unite_fonctionnelle_id, + CASE + WHEN base.cti_division(SUM(nombre), MAX(nb_externes)) < 0.05 THEN 0 + WHEN base.cti_division(SUM(nombre), MAX(nb_externes)) > 0.95 THEN 1 + ELSE round(base.cti_division(SUM(nombre), MAX(nb_externes)),2) + END AS coefficient + FROM w_cti_encours_calcul_parametres_services_prestations + WHERE prestation_code IN ('ATU','FPU') + GROUP BY 1,2 + ) subview + WHERE prestation_code IN ('ATU','FPU') AND + w_cti_encours_calcul_parametres_services_prestations.lieu_service_id = subview.lieu_service_id AND + w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id = subview.lieu_unite_fonctionnelle_id + ; + + -- Prix unitaire moyen par jour + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET prix_unitaire = base.cti_division(prix_unitaire_moyen * nombre , nb_journees + nb_ambulatoires) + WHERE prestation_type_valorisation = '*AVGJOUSER'; + + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET prix_unitaire = 0 + WHERE prestation_type_valorisation = '*AVGJOUSER' AND + (prix_unitaire < 20 AND base.cti_division(nombre,nb_journees + nb_ambulatoires) < 0.8 OR + prix_unitaire < 1 + ); + + -- pas de séjour si absence + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET prix_unitaire = 0 + WHERE lieu_service_id IN + ( + SELECT oid + FROM activite.t_services_facturation + WHERE est_absence = '1' + ) + ; + + -- Prestations comme séjour, seulement si significatif + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET prix_unitaire = 0 + WHERE (prestation_type_valorisation IN ('PJ', 'GMT') OR prestation_code IN ('PJ', 'GMT')) AND + (prix_unitaire < 20 AND base.cti_division(nombre,nb_journees + nb_ambulatoires) < 0.8 OR + prix_unitaire < 1 + ); + + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET prix_unitaire = 0 + WHERE (prestation_type_valorisation IN ('PJ', 'GMT') OR prestation_code IN ('PJ', 'GMT')) AND + (base.cti_division(nombre,nb_journees + nb_ambulatoires) < 0.2 + ); + + -- Sauvegarde des prix calcules + UPDATE w_cti_encours_calcul_parametres_services_prestations SET + coefficient_calcule = coefficient, + prix_unitaire_calcule = prix_unitaire + ; + + -- Paramètres qui ne sont pas dans l'historique + INSERT INTO w_cti_encours_calcul_parametres_services_prestations + SELECT + t_calcul_encours.coefficient_mco + , t_calcul_encours.lieu_service_id + , t_calcul_encours.lieu_unite_fonctionnelle_id + , 0::numeric AS nb_ambulatoires + , 0::numeric AS nb_externes + , 0::numeric AS nb_seances + , 0::numeric AS nb_journees + , 0::numeric AS nb_journees_cp + , t_calcul_encours.prestation_id + , t_prestations.code AS prestation_code + , ''::text AS tranche_ght + , COALESCE(t_prestations.type_valorisation_non_facture,'') AS prestation_type_valorisation + , rubrique_facturation_id + , 0::numeric AS prix_unitaire + , 0::numeric AS nombre + , 0::numeric AS coefficient + , 0::numeric AS prix_unitaire_moyen_1 + , 0::numeric AS nb_prix_unitaire_moyen_1 + , 0::numeric AS prix_unitaire_moyen_3 + , 0::numeric AS nb_prix_unitaire_moyen_3 + , 0::numeric AS prix_unitaire_moyen + , ''::text AS regle_prestation_texte + , 0::numeric AS coefficient_calcule + , 0::numeric AS prix_unitaire_calcule + , '0'::text AS coefficient_is_force + , '0'::text AS prix_unitaire_is_force + , ''::text AS type_ligne + FROM activite.t_calcul_encours + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE + type_ligne = 'PRESTA-PC' + AND ( + coefficient_is_force = '1' + OR prix_unitaire_is_force = '1' + ) + AND (lieu_service_id::text||'-'||lieu_unite_fonctionnelle_id::text||'-'||prestation_id::text||'-'||rubrique_facturation_id::text) NOT IN + ( + SELECT lieu_service_id::text||'-'||lieu_unite_fonctionnelle_id::text||'-'||prestation_id::text||'-'||rubrique_facturation_id::text + FROM w_cti_encours_calcul_parametres_services_prestations + ) + ; + + DELETE FROM activite.t_calcul_encours + WHERE type_ligne = 'PRESTA-PC' + AND NOT ( + coefficient_is_force = '1' + OR prix_unitaire_is_force = '1' + ) + AND (lieu_service_id::text||'-'||lieu_unite_fonctionnelle_id::text||'-'||prestation_id::text||'-'||rubrique_facturation_id::text) NOT IN + ( + SELECT lieu_service_id::text||'-'||lieu_unite_fonctionnelle_id::text||'-'||prestation_id::text||'-'||rubrique_facturation_id::text + FROM w_cti_encours_calcul_parametres_services_prestations + ) + ; + + -- Coefficients et prix unitaire force + UPDATE w_cti_encours_calcul_parametres_services_prestations SET + coefficient = t_calcul_encours.coefficient_force, + coefficient_is_force = '1' + FROM activite.t_calcul_encours + WHERE t_calcul_encours.lieu_service_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_calcul_encours.lieu_unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + t_calcul_encours.prestation_id = w_cti_encours_calcul_parametres_services_prestations.prestation_id AND + t_calcul_encours.rubrique_facturation_id = w_cti_encours_calcul_parametres_services_prestations.rubrique_facturation_id AND + t_calcul_encours.type_ligne LIKE 'PRESTA%' AND + t_calcul_encours.coefficient_is_force = '1' + ; + + UPDATE w_cti_encours_calcul_parametres_services_prestations SET + prix_unitaire = t_calcul_encours.prix_unitaire_force, + prix_unitaire_is_force = '1' + FROM activite.t_calcul_encours + WHERE t_calcul_encours.lieu_service_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_calcul_encours.lieu_unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + t_calcul_encours.prestation_id = w_cti_encours_calcul_parametres_services_prestations.prestation_id AND + t_calcul_encours.rubrique_facturation_id = w_cti_encours_calcul_parametres_services_prestations.rubrique_facturation_id AND + t_calcul_encours.type_ligne LIKE 'PRESTA%' AND + t_calcul_encours.prix_unitaire_is_force = '1' + ; + + -- Texte des règles appliquéées + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET regle_prestation_texte = + 'Coefficient ' || to_char(coefficient,'FM90D00') || + CASE WHEN coefficient_is_force <> '1' + THEN ' issu du taux de facturation de ' || prestation_code || ' (rubrique ' || t_rubriques_facturation.code || ')' || + ' : ' || to_char(nombre,'FM999999999999') || ' journées facturées sur ' || + to_char(nb_journees,'FM999999999999') || ' journées dans le service ' || + t_services_facturation.texte || ' (' || t_services_facturation.code || ') ' || + 'des séjours facturés sortis des ' || _ENCOURSRETROSUP || ' derniers mois (' || to_char(w_date_histo_coeff_presta,'DD/MM/YYYY') || ')' + ELSE ' forcé dans le paramétrage de la génération des encours ' END + FROM activite.t_services_facturation, activite.t_rubriques_facturation + WHERE lieu_service_id = t_services_facturation.oid AND + rubrique_facturation_id = t_rubriques_facturation.oid AND + w_cti_encours_calcul_parametres_services_prestations.coefficient > 0 AND + prestation_code IN ('SRC', 'REA', 'STF', 'AMD', 'AMF', 'IGM', 'IGP', 'APD', 'IMD', 'IMI', 'IPD', 'IVG', 'NN1', 'NN2', 'NN3'); + + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET regle_prestation_texte = + 'Coefficient ' || to_char(coefficient,'FM90D00') || + CASE WHEN coefficient_is_force <> '1' + THEN ' issu du taux de facturation de ' || prestation_code || ' (rubrique ' || t_rubriques_facturation.code || ')' || + ' : ' || to_char(nombre,'FM999999999999') || ' journées facturées sur ' || + to_char(nb_journees_cp,'FM999999999999') || ' journées en CP dans le service ' || + t_services_facturation.texte || ' (' || t_services_facturation.code || ') ' || + 'des séjours facturés sortis des ' || _ENCOURSRETROSUP || ' derniers mois (' || to_char(w_date_histo_coeff_presta,'DD/MM/YYYY') || ')' + ELSE ' forcé dans le paramétrage de la génération des encours ' END + FROM activite.t_services_facturation, activite.t_rubriques_facturation + WHERE lieu_service_id = t_services_facturation.oid AND + rubrique_facturation_id = t_rubriques_facturation.oid AND + w_cti_encours_calcul_parametres_services_prestations.coefficient > 0 AND + (prestation_code IN ('CPC', 'SHO', 'CP') OR prestation_type_valorisation IN ('CP')); + + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET regle_prestation_texte = + 'Coefficient ' || to_char(coefficient,'FM90D00') || + CASE WHEN coefficient_is_force <> '1' + THEN ' issu du taux de facturation de ' || prestation_code || ' (rubrique ' || t_rubriques_facturation.code || ')' || + ' : ' || to_char(nombre,'FM999999999999') || ' séances facturées sur ' || + to_char(nb_seances,'FM999999999999') || ' séances dans le service ' || + t_services_facturation.texte || ' (' || t_services_facturation.code || ') ' || + 'des séjours facturés sortis des ' || _ENCOURSRETROSUP || ' derniers mois (' || to_char(w_date_histo_coeff_presta,'DD/MM/YYYY') || ')' + ELSE ' forcé dans le paramétrage de la génération des encours ' END + FROM activite.t_services_facturation, activite.t_rubriques_facturation + WHERE lieu_service_id = t_services_facturation.oid AND + rubrique_facturation_id = t_rubriques_facturation.oid AND + w_cti_encours_calcul_parametres_services_prestations.coefficient > 0 AND + prestation_code IN ('D09','D11', 'D13', 'D13', 'D15', 'D16', 'DTP'); + + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET regle_prestation_texte = + 'P.U. ' || to_char(prix_unitaire,'FM99999999990D00') || + CASE WHEN prix_unitaire_is_force <> '1' + THEN ' issu du P.U. moyen quotidien ' || + CASE + WHEN tranche_ght = '1' THEN '(<= 4j)' + WHEN tranche_ght = '2' THEN '(5-9j)' + WHEN tranche_ght = '3' THEN '(10-30j)' + ELSE '(> 30j)' END || ' de ' || prestation_code || ' (rubrique ' || t_rubriques_facturation.code || ')' || + ' : ' || to_char(nb_journees + nb_ambulatoires,'FM999999999999') || ' journées facturées pour un montant de ' || + to_char(prix_unitaire_moyen * nombre,'FM999999999999') || ' euros dans le service ' || + t_services_facturation.texte || ' (' || t_services_facturation.code || ') ' || + 'des séjours facturés sortis des ' || _ENCOURSRETROSUP || ' derniers mois (' || to_char(w_date_histo_coeff_presta,'DD/MM/YYYY') || ')' + ELSE ' forcé dans le paramétrage de la génération des encours ' END + FROM activite.t_services_facturation, activite.t_rubriques_facturation + WHERE lieu_service_id = t_services_facturation.oid AND + rubrique_facturation_id = t_rubriques_facturation.oid AND + w_cti_encours_calcul_parametres_services_prestations.prix_unitaire > 0 AND + (prestation_code IN ('GHT')) + ; + + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET regle_prestation_texte = + 'P.U. ' || to_char(prix_unitaire,'FM99999999990D00') || + CASE WHEN prix_unitaire_is_force <> '1' + THEN ' issu du P.U. moyen quotidien de ' || prestation_code || ' (rubrique ' || t_rubriques_facturation.code || ')' || + ' : ' || to_char(nb_journees + nb_ambulatoires,'FM999999999999') || ' journées facturées pour un montant de ' || + to_char(prix_unitaire_moyen * nombre,'FM999999999999') || ' euros dans le service ' || + t_services_facturation.texte || ' (' || t_services_facturation.code || ') ' || + 'des séjours facturés sortis des ' || _ENCOURSRETROSUP || ' derniers mois (' || to_char(w_date_histo_coeff_presta,'DD/MM/YYYY') || ')' + ELSE ' forcé dans le paramétrage de la génération des encours ' END + FROM activite.t_services_facturation, activite.t_rubriques_facturation + WHERE lieu_service_id = t_services_facturation.oid AND + rubrique_facturation_id = t_rubriques_facturation.oid AND + w_cti_encours_calcul_parametres_services_prestations.prix_unitaire > 0 AND + (prestation_type_valorisation = '*AVGJOUSER' OR prestation_code IN ('GHT')) + ; + + + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Historique taux facturation AMO BG'; + DROP TABLE IF EXISTS w_actes_120; + CREATE TEMP TABLE w_actes_120 AS + SELECT p_factures.no_sejour + FROM activite.p_factures_lignes_h + JOIN activite.p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + WHERE p_factures_lignes_h.prix_unitaire >= 120 + GROUP BY 1; + INSERT INTO w_actes_120 + SELECT p_factures.no_sejour + FROM activite.p_factures_lignes_non_facturees_h + JOIN activite.p_factures ON p_factures_lignes_non_facturees_h.no_facture = p_factures.no_facture + WHERE p_factures_lignes_non_facturees_h.prix_unitaire >= 120 + GROUP BY 1; + + INSERT INTO w_cti_encours_factures_histo_taux + SELECT service_facturation_id, AVG(taux_ghs_1) AS taux_ghs_1, count(*) AS nb, ''::text AS regle_taux_texte + FROM + ( + SELECT p_factures.no_sejour, + MAX(t_lieux.service_facturation_id) AS service_facturation_id, + MAX(COALESCE(taux_1,0)) AS taux_ghs_1 + FROM activite.p_sejours + JOIN activite.p_factures ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite.t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid AND type_t2a = '1' + LEFT JOIN activite.p_factures_lignes_c ON p_factures_lignes_c.no_facture = p_factures.no_facture AND + prestation_id IN (SELECT oid FROM activite.t_prestations WHERE code = 'GHS') + WHERE p_sejours.est_budget_global = '1' AND + p_sejours.date_sortie BETWEEN w_date_histo_18 AND w_date_traitement AND + p_sejours.no_sejour NOT IN (SELECT no_sejour FROM w_actes_120) AND + (p_sejours.date_sortie - p_sejours.date_entree) <= 30 + GROUP BY 1 + HAVING MIN(p_factures.code_facture) >= '1' + ) subview + GROUP BY 1 + ; + + INSERT INTO w_cti_encours_factures_histo_taux + SELECT oid, 0, 0, ''::text AS regle_taux_texte + FROM activite.t_services_facturation + WHERE oid NOT IN (SELECT service_facturation_id FROM w_cti_encours_factures_histo_taux) AND + est_budget_global = '1' + ; + + UPDATE w_cti_encours_factures_histo_taux + SET taux_ghs_1 = + round(CASE + WHEN nb < 10 THEN (SELECT base.cti_division(SUM(taux_ghs_1*nb),SUM(nb)) FROM w_cti_encours_factures_histo_taux) + WHEN taux_ghs_1 > 99 THEN 100 + ELSE taux_ghs_1 + END,2), + nb = CASE + WHEN nb < 10 THEN (SELECT SUM(nb) FROM w_cti_encours_factures_histo_taux) + ELSE w_cti_encours_factures_histo_taux.nb END + ; + + UPDATE w_cti_encours_factures_histo_taux + SET regle_taux_texte = 'Ticket modérateur moyen ' || to_char(100-taux_ghs_1,'FM9990D00%') || ' des ' || + to_char(nb,'FM99999990') || ' séjours Budget Global MCO facturés sortis depuis 18 mois (' || to_char(w_date_histo_18,'DD/MM/YYYY') || ') pour le service ' || + t_services_facturation.texte || ' (' || t_services_facturation.code || ')' + FROM activite.t_services_facturation + WHERE service_facturation_id = t_services_facturation.oid AND + nb >= 10 + ; + + + UPDATE w_cti_encours_factures_histo_taux + SET regle_taux_texte = 'Ticket modérateur moyen ' || to_char(100-taux_ghs_1,'FM9990D00%') || ' des ' || + to_char(nb,'FM99999990') || ' séjours Budget Global MCO sortis depuis 18 mois (' || to_char(w_date_histo_18,'DD/MM/YYYY') || ') pour tous les services' + WHERE nb < 10 + ; + + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET coefficient = 0, prix_unitaire = 0, prix_unitaire_moyen_1 = 0, prix_unitaire_moyen_3 = 0 + FROM activite.t_services_facturation + WHERE lieu_service_id = t_services_facturation.oid AND + t_services_facturation.est_absence = '1' + ; + + + + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Sejours a traiter'; + INSERT INTO w_cti_encours_sejours + SELECT p_sejours.oid AS sejour_id, + p_sejours.no_sejour, + p_sejours.type_sejour, + p_sejours.est_budget_global, + CASE WHEN p_sejours.est_budget_global = '1' THEN '1' ELSE '2' END AS secteur_tarif, + t_medecins_administratifs.medecin_id AS medecin_sejour_id, + COALESCE(t_medecins.specialite_id,0) AS specialite_medecin_sejour_id, + t_lieux.service_facturation_id AS lieu_sortie_service_id, + t_lieux.unite_fonctionnelle_id AS lieu_sortie_unite_fonctionnelle_id, + code_sorti, + lieu_sortie_id, + mode_sortie, + date_groupage, + tiers_payant_1_id, + tiers_payant_2_id, + COALESCE(SUM(nb_seances),1) AS nb_ghs, + p_sejours.ghm_id, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id, + COALESCE(t_services_facturation.particularites_encours,''), + CASE WHEN p_sejours.type_sejour <> '3' THEN COALESCE(t_services_facturation.type_t2a,'0') ELSE '0' END + FROM w_cti_encours_calcul_parametres, + activite.p_sejours + JOIN activite.t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite.t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + JOIN activite.t_medecins_administratifs ON p_sejours.medecin_sejour_id = t_medecins_administratifs.oid + LEFT JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid + LEFT JOIN activite.p_mouvements_sejour ON + p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + p_sejours.type_sejour = '5' AND nb_seances > 0 + WHERE p_sejours.etat = '' AND + code_prevu = '0' AND + date_entree <= w_date_traitement AND + (code_sorti = '1' OR date_sortie >= w_date_histo_18) AND + p_sejours.type_sejour <> '9' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20,21,22,23 + ; + + UPDATE w_cti_encours_sejours + SET code_sorti = '1' + WHERE type_sejour = '5' AND + code_sorti <> '1' + ; + + ANALYSE w_cti_encours_sejours + ; + + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Prix unitaire honoraires non factures' ; + + UPDATE activite.p_factures_lignes_non_facturees_h + SET prix_unitaire = subview.prix_unitaire + FROM + ( + SELECT acte_id, activite_ccam, modificateur_ccam_1, modificateur_ccam_2, modificateur_ccam_3, modificateur_ccam_4, + base.cti_division(SUM(montant_facture_1),SUM(nb_prestation*coefficient)) AS prix_unitaire + FROM activite.p_factures_lignes_h + WHERE acte_id IN (SELECT acte_id FROM activite.p_factures_lignes_non_facturees_h WHERE prix_unitaire = 0) AND + montant_facture_1 > 0 + GROUP BY 1,2,3,4,5,6 + ) subview + WHERE p_factures_lignes_non_facturees_h.prix_unitaire = 0 AND + p_factures_lignes_non_facturees_h.acte_id = subview.acte_id AND + p_factures_lignes_non_facturees_h.activite_ccam = subview.activite_ccam AND + p_factures_lignes_non_facturees_h.modificateur_ccam_1 = subview.modificateur_ccam_1 AND + p_factures_lignes_non_facturees_h.modificateur_ccam_2 = subview.modificateur_ccam_2 AND + p_factures_lignes_non_facturees_h.modificateur_ccam_3 = subview.modificateur_ccam_3 AND + p_factures_lignes_non_facturees_h.modificateur_ccam_4 = subview.modificateur_ccam_4 AND + p_factures_lignes_non_facturees_h.prix_unitaire = 0 + ; + + UPDATE activite.p_factures_lignes_non_facturees_h + SET prix_unitaire = subview.prix_unitaire + FROM + ( + SELECT acte_id, activite_ccam, + base.Cti_division(SUM(montant_facture_1),SUM(nb_prestation*coefficient)) AS prix_unitaire + FROM activite.p_factures_lignes_h + WHERE acte_id IN (SELECT acte_id FROM activite.p_factures_lignes_non_facturees_h WHERE prix_unitaire = 0) AND + montant_facture_1 > 0 + GROUP BY 1,2 + ) subview + WHERE p_factures_lignes_non_facturees_h.prix_unitaire = 0 AND + p_factures_lignes_non_facturees_h.acte_id = subview.acte_id AND + p_factures_lignes_non_facturees_h.activite_ccam = subview.activite_ccam AND + p_factures_lignes_non_facturees_h.prix_unitaire = 0 + + ; + + UPDATE activite.p_factures_lignes_non_facturees_h + SET prix_unitaire = subview.prix_unitaire + FROM + ( + SELECT acte_id, prestation_id, (MAX(Array[date_debut::text,prix_unitaire::text]))[2]::numeric AS prix_unitaire + FROM activite.p_factures_lignes_h + WHERE prix_unitaire <> 0 AND + acte_id IN (SELECT acte_id FROM activite.p_factures_lignes_non_facturees_h WHERE prix_unitaire = 0) + GROUP BY 1,2 + ) subview + WHERE p_factures_lignes_non_facturees_h.prix_unitaire = 0 AND + p_factures_lignes_non_facturees_h.acte_id = subview.acte_id AND + p_factures_lignes_non_facturees_h.prestation_id = subview.prestation_id + ; + + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Historique facturation GHS' ; + + -- Sur HM, il y a un séjour spécifique pour bébé, il ne faut donc pas tenir compte du GHS bébé du prestataire précédent pour calculer les moyennes + -- Création d'une table de travail avec les GHS mères (cas de 2 prix unitaires GHS, on prend le plus grand) + DROP TABLE IF EXISTS w_cti_encours_calcul_ghs_hm_mat_mere; + CREATE TEMP TABLE w_cti_encours_calcul_ghs_hm_mat_mere AS + SELECT p_factures_lignes_c.no_facture AS no_facture_mat_mere, + p_factures_lignes_c.prestation_id AS prestation_id_mat_mere, + MAX(prix_unitaire) AS prix_unitaire_mat_mere + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN ( + SELECT 1::integer AS ok_hm + FROM activite.t_providers + HAVING MAX(CASE WHEN oid = 0 AND code ILIKE 'HM' THEN 1 ELSE 0 END) = 1 AND + MAX(CASE WHEN oid <> 0 AND code NOT ILIKE 'HM' THEN 1 ELSE 0 END) = 1 + ) subview ON ok_hm = 1 + WHERE t_prestations.code = 'GHS' AND p_factures.date_fin > '20170101' AND t_ghm.code LIKE '14%' AND + montant_facture > 0 + GROUP BY 1,2 + HAVING count(DISTINCT prix_unitaire) > 1 + ; + + INSERT INTO w_cti_encours_histo_sejour_facture + SELECT + w_cti_encours_sejours.no_sejour, + p_factures.date_fin, + CASE WHEN MAX(t_ghm.code) LIKE '05C19%' THEN '05C19' WHEN MAX(t_prestations.code) = 'I01' THEN 'I01' ELSE '' END AS classe_ghm, + w_cti_encours_sejours.medecin_sejour_id, + w_cti_encours_sejours.specialite_medecin_sejour_id, + w_cti_encours_sejours.lieu_sortie_service_id, + w_cti_encours_sejours.lieu_sortie_unite_fonctionnelle_id, + w_cti_encours_sejours.nb_ghs, + CASE WHEN w_cti_encours_sejours.type_sejour = '5' THEN 'S' + WHEN p_factures.date_fin - p_factures.date_debut <= 1 THEN '1' + WHEN p_factures.date_fin - p_factures.date_debut <= 3 THEN '2' + WHEN p_factures.date_fin - p_factures.date_debut <= 6 THEN '3' + WHEN p_factures.date_fin - p_factures.date_debut <= 10 THEN '4' + ELSE '5' END as tranche_sejour, + CASE WHEN w_cti_encours_sejours.type_sejour = '5' THEN 0 ELSE p_factures.date_fin - p_factures.date_debut END as duree_sejour, + SUM(CASE WHEN base.cti_division(t_ghs_tarifs.tarif_ghs,t_ghs_tarifs_a.tarif_ghs) > 0 THEN montant_facture * base.cti_division(t_ghs_tarifs.tarif_ghs,t_ghs_tarifs_a.tarif_ghs) ELSE montant_facture END) AS montant_ghs, + SUM(montant_facture) AS montant_ghs_original, + MAX(p_factures_lignes_c.taux_0), + MAX(p_factures_lignes_c.taux_1), + MAX(p_factures_lignes_c.taux_2+p_factures_lignes_c.taux_22) + FROM activite.p_factures_lignes_c + LEFT JOIN w_cti_encours_calcul_ghs_hm_mat_mere ON + w_cti_encours_calcul_ghs_hm_mat_mere.no_facture_mat_mere = p_factures_lignes_c.no_facture AND + w_cti_encours_calcul_ghs_hm_mat_mere.prestation_id_mat_mere = p_factures_lignes_c.prestation_id + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.date_fin BETWEEN w_date_histo_18 AND w_date_traitement AND + p_factures.type_facture IN ('0','H','G') AND + p_factures.code_facture >= '1' AND p_factures.ghs_id > 0 AND p_factures.no_facture = p_factures.no_facture_reference + JOIN w_cti_encours_sejours ON p_factures.no_sejour = w_cti_encours_sejours.no_sejour AND w_cti_encours_sejours.code_sorti = '1' + LEFT JOIN base.t_ghs_tarifs ON t_ghs_tarifs.ghs_id = p_factures.ghs_id AND + t_ghs_tarifs.secteur = w_cti_encours_sejours.secteur_tarif AND t_ghs_tarifs.tarif_ghs <> 0 AND + w_date_encours BETWEEN t_ghs_tarifs.date_debut AND t_ghs_tarifs.date_fin + LEFT JOIN base.t_ghs_tarifs t_ghs_tarifs_a ON t_ghs_tarifs_a.ghs_id = p_factures.ghs_id AND + t_ghs_tarifs_a.secteur = w_cti_encours_sejours.secteur_tarif AND t_ghs_tarifs_a.tarif_ghs <> 0 AND + p_factures.date_fin BETWEEN t_ghs_tarifs_a.date_debut AND t_ghs_tarifs_a.date_fin + LEFT JOIN base.t_ghm ON w_cti_encours_sejours.ghm_id = t_ghm.oid + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE prestation_id IN (SELECT oid FROM activite.t_prestations WHERE code IN ('GHS', 'EXH', 'I01')) AND + montant_facture <> 0 AND + ( + w_cti_encours_calcul_ghs_hm_mat_mere.no_facture_mat_mere IS NULL OR + w_cti_encours_calcul_ghs_hm_mat_mere.prix_unitaire_mat_mere = p_factures_lignes_c.prix_unitaire + ) + GROUP BY 1,2,4,5,6,7,8,9,10; + -- Ajustement pour QSP (plusieurs factures pour le GHS + UPDATE w_cti_encours_histo_sejour_facture SET + montant_ghs = montant_ghs / taux_1 * 100, + montant_ghs_original = montant_ghs_original / taux_1 * 100 + WHERE taux_1 BETWEEN 80 AND 90 AND + taux_0 = 0 AND + taux_2 = 0 + ; + + -- Récupération historique d'un autre environnement (saint gatien) + IF EXISTS ( + SELECT table_name + FROM information_schema.tables + WHERE table_schema || '.' || table_name = 'activite.t_encours_histo_sejour_facture_histo' ) THEN + + INSERT INTO w_cti_encours_histo_sejour_facture + ( + no_sejour, + date_fin, + classe_ghm, + medecin_sejour_id, + specialite_medecin_sejour_id, + lieu_sortie_service_id, + lieu_sortie_unite_fonctionnelle_id, + nb_ghs, + tranche_sejour, + duree_sejour, + montant_ghs, + montant_ghs_original, + taux_0, + taux_1, + taux_2 + ) + SELECT + no_sejour, + date_fin, + classe_ghm, + medecin_sejour_id, + specialite_medecin_sejour_id, + lieu_sortie_service_id, + lieu_sortie_unite_fonctionnelle_id, + nb_ghs, + tranche_sejour, + duree_sejour, + montant_ghs, + montant_ghs_original, + taux_0, + taux_1, + taux_2 + FROM activite.t_encours_histo_sejour_facture_histo + ; + + END IF; + + INSERT INTO w_cti_encours_histo_ghs ( + classe_ghm, + regle, + medecin_sejour_id, + specialite_medecin_sejour_id, + lieu_sortie_service_id, + lieu_sortie_unite_fonctionnelle_id, + tranche_sejour, + duree_sejour, + nombre, + montant_moyen_ghs + ) + (SELECT + classe_ghm,'01-MSD12'::text AS regle, medecin_sejour_id, specialite_medecin_sejour_id, lieu_sortie_service_id, lieu_sortie_unite_fonctionnelle_id, tranche_sejour::text, duree_sejour::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) as montant_moyen_ghs + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 AND date_fin >= w_date_histo_12 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT + classe_ghm,'02-MST12'::text AS regle, medecin_sejour_id, specialite_medecin_sejour_id, lieu_sortie_service_id, lieu_sortie_unite_fonctionnelle_id, tranche_sejour, null::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 AND date_fin >= w_date_histo_12 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT + classe_ghm,'03-MSD18'::text AS regle, medecin_sejour_id, specialite_medecin_sejour_id, lieu_sortie_service_id, lieu_sortie_unite_fonctionnelle_id, tranche_sejour::text, duree_sejour::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) as montant_moyen_ghs + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT + classe_ghm,'04-MST18'::text AS regle, medecin_sejour_id, specialite_medecin_sejour_id, lieu_sortie_service_id, lieu_sortie_unite_fonctionnelle_id, tranche_sejour, null::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT + classe_ghm,'05-PSD12'::text AS regle, NULL::bigint AS medecin_sejour_id, specialite_medecin_sejour_id, lieu_sortie_service_id, lieu_sortie_unite_fonctionnelle_id, tranche_sejour::text, duree_sejour::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) as montant_moyen_ghs + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 AND date_fin >= w_date_histo_12 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT + classe_ghm,'06-PST12'::text AS regle, NULL::bigint AS medecin_sejour_id, specialite_medecin_sejour_id, lieu_sortie_service_id, lieu_sortie_unite_fonctionnelle_id, tranche_sejour, null::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 AND date_fin >= w_date_histo_12 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT + classe_ghm,'07-MXD12'::text AS regle, medecin_sejour_id, specialite_medecin_sejour_id, NULL::bigint, NULL::bigint, tranche_sejour::text, duree_sejour::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) as montant_moyen_ghs + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 AND date_fin >= w_date_histo_12 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT + classe_ghm,'08-MXT12'::text AS regle, medecin_sejour_id, specialite_medecin_sejour_id, NULL::bigint, NULL::bigint, tranche_sejour, null::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 AND date_fin >= w_date_histo_12 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT + classe_ghm,'09-MXD18'::text AS regle, medecin_sejour_id, specialite_medecin_sejour_id, NULL::bigint, NULL::bigint, tranche_sejour::text, duree_sejour::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) as montant_moyen_ghs + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT + classe_ghm,'10-MXT18'::text AS regle, medecin_sejour_id, specialite_medecin_sejour_id, NULL::bigint, NULL::bigint, tranche_sejour, null::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT + classe_ghm,'11-PXD12'::text AS regle, NULL::bigint AS medecin_sejour_id, specialite_medecin_sejour_id, NULL::bigint, NULL::bigint, tranche_sejour::text, duree_sejour::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) as montant_moyen_ghs + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 AND date_fin >= w_date_histo_12 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT + classe_ghm,'12-PXT12'::text AS regle, NULL::bigint AS medecin_sejour_id, specialite_medecin_sejour_id, NULL::bigint, NULL::bigint, tranche_sejour, null::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 AND date_fin >= w_date_histo_12 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT + classe_ghm,'13-XSD18'::text AS regle, NULL::bigint, NULL::bigint, lieu_sortie_service_id, lieu_sortie_unite_fonctionnelle_id, tranche_sejour, duree_sejour::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 AND date_fin >= w_date_histo_12 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT + classe_ghm,'21-MSX12'::text AS regle, medecin_sejour_id, specialite_medecin_sejour_id, lieu_sortie_service_id, lieu_sortie_unite_fonctionnelle_id, null::text, null::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 AND date_fin >= w_date_histo_12 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT + classe_ghm,'22-MSX18'::text AS regle, medecin_sejour_id, specialite_medecin_sejour_id, lieu_sortie_service_id, lieu_sortie_unite_fonctionnelle_id, null::text, null::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT + classe_ghm,'51-MXX12'::text AS regle, medecin_sejour_id, specialite_medecin_sejour_id, null::bigint, null::bigint, null::text, null::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 AND date_fin >= w_date_histo_12 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT + classe_ghm,'52-MXX18'::text AS regle, medecin_sejour_id, specialite_medecin_sejour_id, null::bigint, null::bigint, null::text, null::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT + classe_ghm,'61-XSX18'::text AS regle, null::bigint, null::bigint, lieu_sortie_service_id, lieu_sortie_unite_fonctionnelle_id, null::text, null::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) >= _NBSEJMIN_HISTOGHS) + UNION + (SELECT classe_ghm,'99-XXX18'::text AS regle, null::bigint, null::bigint, null::bigint, null::bigint, null::text, null::integer, + count(*) as nombre, AVG(montant_ghs / nb_ghs) + FROM w_cti_encours_histo_sejour_facture + WHERE montant_ghs <> 0 + GROUP BY 1,2,3,4,5,6,7,8) + ORDER BY 1,2,3,4; + + -- Textes + UPDATE w_cti_encours_histo_ghs + SET medecin_sejour_texte = t_medecins.nom || ' ' || t_medecins.prenom || ' (' || t_medecins.code || ')' + FROM base.t_medecins + WHERE medecin_sejour_id = t_medecins.oid AND + medecin_sejour_id <> 0 AND + medecin_sejour_id IS NOT NULL + ; + UPDATE w_cti_encours_histo_ghs + SET specialite_medecin_sejour_texte = t_specialites_medecin.texte || ' (' || t_specialites_medecin.code || ')' + FROM base.t_specialites_medecin + WHERE specialite_medecin_sejour_id = t_specialites_medecin.oid AND + specialite_medecin_sejour_id <> 0 AND + specialite_medecin_sejour_id IS NOT NULL + ; + UPDATE w_cti_encours_histo_ghs + SET lieu_sortie_service_texte = t_services_facturation.texte || ' (' || t_services_facturation.code || ')' + FROM activite.t_services_facturation + WHERE lieu_sortie_service_id = t_services_facturation.oid AND + lieu_sortie_service_id <> 0 AND + lieu_sortie_service_id IS NOT NULL + ; + UPDATE w_cti_encours_histo_ghs + SET lieu_sortie_unite_fonctionnelle_texte = t_unites_fonctionnelles.texte || ' (' || t_unites_fonctionnelles.code || ')' + FROM activite.t_unites_fonctionnelles + WHERE lieu_sortie_unite_fonctionnelle_id = t_unites_fonctionnelles.oid AND + lieu_sortie_unite_fonctionnelle_id <> 0 AND + lieu_sortie_unite_fonctionnelle_id IS NOT NULL + ; + UPDATE w_cti_encours_histo_ghs + SET tranche_sejour_texte = + CASE tranche_sejour + WHEN 'S' THEN 'Séances' + WHEN '1' THEN '0 ou 1 nuit' + WHEN '2' THEN '2 ou 3 nuits' + WHEN '3' THEN '4,5 ou 6 nuits' + WHEN '4' THEN '7,8,9 ou 10 nuits' + WHEN '5' THEN '11 nuits et plus' + END + WHERE tranche_sejour IS NOT NULL + ; + UPDATE w_cti_encours_histo_ghs + SET duree_sejour_texte = + CASE duree_sejour + WHEN 0 THEN '0 nuit' + WHEN 1 THEN '1 nuit' + ELSE duree_sejour::text || ' nuits' + END + WHERE duree_sejour IS NOT NULL + ; + + -- Calcul moyennes DMS + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Historique DMS'; + + INSERT INTO w_cti_encours_histo_dms_sejours + SELECT w_cti_encours_sejours.no_sejour, w_cti_encours_sejours.medecin_sejour_id, w_cti_encours_sejours.specialite_medecin_sejour_id, w_cti_encours_sejours.lieu_sortie_service_id, w_cti_encours_sejours.lieu_sortie_unite_fonctionnelle_id, + p_factures.date_fin, p_factures.date_debut + FROM activite.p_factures + JOIN w_cti_encours_sejours ON p_factures.no_sejour = w_cti_encours_sejours.no_sejour AND code_sorti = '1' + WHERE p_factures.date_fin BETWEEN w_date_histo_18 AND w_date_traitement AND type_facture IN ('0','H','G') AND p_factures.no_facture = p_factures.no_facture_reference; + + INSERT INTO w_cti_encours_histo_dms + SELECT '1'::text AS regle, medecin_sejour_id, specialite_medecin_sejour_id, lieu_sortie_service_id, lieu_sortie_unite_fonctionnelle_id, round(AVG(date_fin - date_debut),0) AS dms, count(*) AS occurences + FROM w_cti_encours_histo_dms_sejours + GROUP BY 1,2,3,4,5 + HAVING count(*) >= _NBSEJMIN_HISTOGHS + UNION + SELECT '2'::text AS regle, medecin_sejour_id, specialite_medecin_sejour_id, null::bigint, null::bigint, round(AVG(date_fin - date_debut),0) AS dms, count(*) AS occurences + FROM w_cti_encours_histo_dms_sejours + GROUP BY 1,2,3,4,5 + HAVING count(*) >= _NBSEJMIN_HISTOGHS + UNION + SELECT '3'::text AS regle, null::bigint, null::bigint, lieu_sortie_service_id, lieu_sortie_unite_fonctionnelle_id, round(AVG(date_fin - date_debut),0) AS dms, count(*) AS occurences + FROM w_cti_encours_histo_dms_sejours + GROUP BY 1,2,3,4,5 + HAVING count(*) >= _NBSEJMIN_HISTOGHS + UNION + SELECT '9'::text AS regle, null::bigint, null::bigint, null::bigint, null::bigint, round(AVG(date_fin - date_debut),0) AS dms, count(*) AS occurences + FROM w_cti_encours_histo_dms_sejours + GROUP BY 1,2,3,4,5 + HAVING count(*) >= _NBSEJMIN_HISTOGHS; + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Extraction factures à valoriser'; + INSERT INTO w_cti_encours_factures( + oid, sejour_id, no_sejour, type_sejour, classe_ghm, no_facture, no_facture_encours, no_facture_reference, + etat, code_sorti, date_encours, date_debut, date_fin, lieu_sortie_id, mode_sortie, + ghs_id, ghm_id, ghs_bebe1_id, ghs_bebe2_id, ghs_bebe3_id, type_t2a, est_budget_global, secteur_tarif, code_cp_demandee, + lieu_sortie_service_id, lieu_sortie_unite_fonctionnelle_id, medecin_sejour_id, specialite_medecin_sejour_id, + tiers_payant_1_id, tiers_payant_2_id, particularites_encours_service, uniquement_prestations_saisies) + SELECT + p_factures.oid, w_cti_encours_sejours.sejour_id, p_factures.no_sejour, w_cti_encours_sejours.type_sejour, ''::text AS classe_ghm, p_factures.no_facture, + p_factures.no_facture || '.EC' || substr(to_char(date_part('year', w_cti_encours_calcul_parametres.date_encours),'FM0000'),3,2) || to_char(date_part('month', w_cti_encours_calcul_parametres.date_encours),'FM00'), + p_factures.no_facture_reference, + CASE WHEN code_sorti <> '1' THEN 'E' WHEN p_factures.date_fin > w_date_traitement THEN 'E' ELSE 'S' END AS etat, + CASE WHEN code_sorti <> '1' THEN '0' WHEN p_factures.date_fin > w_date_traitement THEN '0' ELSE '1' END AS code_sorti, + w_cti_encours_calcul_parametres.date_encours, + p_factures.date_debut, + CASE WHEN date_fin <= w_date_traitement + interval '10 days' THEN p_factures.date_fin ELSE '20991231' END AS date_fin, + lieu_sortie_id, + mode_sortie, + CASE WHEN code_sorti <> '1' THEN 0 WHEN date_groupage <= w_date_traitement OR date_groupage = '20991231' THEN w_cti_encours_sejours.ghs_id ELSE 0 END AS ghs_id, + CASE WHEN code_sorti <> '1' THEN 0 WHEN date_groupage <= w_date_traitement OR date_groupage = '20991231' THEN w_cti_encours_sejours.ghm_id ELSE 0 END AS ghm_id, + CASE WHEN code_sorti <> '1' THEN 0 WHEN date_groupage <= w_date_traitement OR date_groupage = '20991231' THEN w_cti_encours_sejours.ghs_bebe1_id ELSE 0 END AS ghs_bebe1_id, + CASE WHEN code_sorti <> '1' THEN 0 WHEN date_groupage <= w_date_traitement OR date_groupage = '20991231' THEN w_cti_encours_sejours.ghs_bebe2_id ELSE 0 END AS ghs_bebe2_id, + CASE WHEN code_sorti <> '1' THEN 0 WHEN date_groupage <= w_date_traitement OR date_groupage = '20991231' THEN w_cti_encours_sejours.ghs_bebe3_id ELSE 0 END AS ghs_bebe3_id, + w_cti_encours_sejours.type_t2a, + est_budget_global, + CASE WHEN est_budget_global = '1' THEN '1' ELSE '2' END AS secteur_tarif, + p_factures.code_cp_demandee, + lieu_sortie_service_id, + lieu_sortie_unite_fonctionnelle_id, + medecin_sejour_id, + specialite_medecin_sejour_id, + CASE WHEN p_factures.tiers_payant_1_id <> 0 THEN p_factures.tiers_payant_1_id ELSE w_cti_encours_sejours.tiers_payant_1_id END, + CASE WHEN p_factures.tiers_payant_1_id <> 0 THEN p_factures.tiers_payant_2_id ELSE w_cti_encours_sejours.tiers_payant_2_id END, + w_cti_encours_sejours.particularites_encours_service, + CASE + WHEN p_factures.type_facture IN ('0','E') AND p_factures.no_facture = p_factures.no_facture_reference THEN '0' + WHEN p_factures.code_facture = '0' AND p_factures.no_facture LIKE '%BG' THEN '0' + WHEN est_budget_global = '1' THEN '0' + ELSE '1' END AS uniquement_prestations_saisies + FROM w_cti_encours_calcul_parametres, + activite.p_factures + JOIN w_cti_encours_sejours ON w_cti_encours_sejours.no_sejour = p_factures.no_sejour + WHERE + p_factures.type_facture <> 'P' AND + ((p_factures.type_facture IN ('0','E') AND + p_factures.no_facture = p_factures.no_facture_reference) + OR + (p_factures.code_facture = '0' AND + p_factures.no_facture IN (SELECT no_facture FROM activite.p_factures_lignes_non_facturees_c)) + OR + (p_factures.code_facture = '0' AND + p_factures.no_facture LIKE '%BG' + ) + ) AND + p_factures.date_debut <= w_date_traitement AND + ( + (p_factures.code_facture = '0' AND p_factures.date_debut <= w_date_traitement) + OR + (p_factures.code_facture >= '1' AND date_facture > w_date_traitement AND date_facture <> '20991231' AND date_vente > w_date_encours) + ); + + + + UPDATE w_cti_encours_factures + SET date_fin = + GREATEST(date(date_debut + + COALESCE( + w_cti_encours_histo_dms_1.dms, + w_cti_encours_histo_dms_2.dms, + w_cti_encours_histo_dms_3.dms, + w_cti_encours_histo_dms_9.dms, + 0 + )::integer),w_date_sortie_max ), + dms = COALESCE( + w_cti_encours_histo_dms_1.dms, + w_cti_encours_histo_dms_2.dms, + w_cti_encours_histo_dms_3.dms, + w_cti_encours_histo_dms_9.dms, + 0 + ), + regle_dms = + COALESCE( + w_cti_encours_histo_dms_1.regle, + w_cti_encours_histo_dms_2.regle, + w_cti_encours_histo_dms_3.regle, + w_cti_encours_histo_dms_9.regle, + '0' + ) + FROM w_cti_encours_sejours + LEFT JOIN w_cti_encours_histo_dms w_cti_encours_histo_dms_1 ON + w_cti_encours_histo_dms_1.medecin_sejour_id = w_cti_encours_sejours.medecin_sejour_id AND + w_cti_encours_histo_dms_1.lieu_sortie_service_id = w_cti_encours_sejours.lieu_sortie_service_id AND + w_cti_encours_histo_dms_1.lieu_sortie_unite_fonctionnelle_id = w_cti_encours_sejours.lieu_sortie_unite_fonctionnelle_id + LEFT JOIN w_cti_encours_histo_dms w_cti_encours_histo_dms_2 ON + w_cti_encours_histo_dms_2.medecin_sejour_id = w_cti_encours_sejours.medecin_sejour_id AND + w_cti_encours_histo_dms_2.lieu_sortie_service_id IS NULL AND + w_cti_encours_histo_dms_2.lieu_sortie_unite_fonctionnelle_id IS NULL + LEFT JOIN w_cti_encours_histo_dms w_cti_encours_histo_dms_3 ON + w_cti_encours_histo_dms_3.medecin_sejour_id IS NULL AND + w_cti_encours_histo_dms_3.lieu_sortie_service_id = w_cti_encours_sejours.lieu_sortie_service_id AND + w_cti_encours_histo_dms_3.lieu_sortie_unite_fonctionnelle_id = w_cti_encours_sejours.lieu_sortie_unite_fonctionnelle_id + LEFT JOIN w_cti_encours_histo_dms w_cti_encours_histo_dms_9 ON + w_cti_encours_histo_dms_9.medecin_sejour_id IS NULL AND + w_cti_encours_histo_dms_9.lieu_sortie_service_id IS NULL AND + w_cti_encours_histo_dms_9.lieu_sortie_unite_fonctionnelle_id IS NULL + WHERE w_cti_encours_factures.no_sejour = w_cti_encours_sejours.no_sejour AND + w_cti_encours_factures.code_sorti = '0' AND + w_cti_encours_factures.type_sejour NOT IN ('2','3') AND + w_cti_encours_factures.date_fin = '20991231'; + UPDATE w_cti_encours_factures + SET date_fin = date_debut, + dms = 0, + regle_dms = '0' + FROM w_cti_encours_sejours + WHERE w_cti_encours_factures.no_sejour = w_cti_encours_sejours.no_sejour AND + w_cti_encours_factures.code_sorti = '0' AND + w_cti_encours_factures.type_sejour IN ('2','3') AND + w_cti_encours_factures.date_fin = '20991231'; + + UPDATE w_cti_encours_factures + SET duree_sejour = CASE WHEN type_sejour <> '5' THEN date_fin - date_debut ELSE 0 END, + tranche_sejour = + CASE + WHEN type_sejour = '5' THEN 'S' + WHEN date_fin - date_debut <= 1 THEN '1' + WHEN date_fin - date_debut <= 3 THEN '2' + WHEN date_fin - date_debut <= 6 THEN '3' + WHEN date_fin - date_debut <= 10 THEN '4' + ELSE '5' END; + + -- En ESPIC, les actes non factures sont peut être sur une autre facture que BG + UPDATE activite.p_factures_lignes_non_facturees_h + SET no_facture = subview.no_facture_bg + FROM + ( + SELECT p_factures_lignes_non_facturees_h.no_facture, MAX(w_cti_encours_factures.no_facture) AS no_facture_bg + FROM activite.p_factures_lignes_non_facturees_h + JOIN activite.p_factures ON p_factures_lignes_non_facturees_h.no_facture = p_factures.no_facture + JOIN w_cti_encours_factures ON + p_factures.no_sejour = w_cti_encours_factures.no_sejour AND + w_cti_encours_factures.no_facture LIKE '%BG' + WHERE p_factures_lignes_non_facturees_h.date_debut BETWEEN w_cti_encours_factures.date_debut AND w_cti_encours_factures.date_fin + GROUP BY 1 + HAVING p_factures_lignes_non_facturees_h.no_facture <> MAX(w_cti_encours_factures.no_facture) + ) subview + WHERE p_factures_lignes_non_facturees_h.no_facture = subview.no_facture + ; + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Extraction CPC deja facturee'; + INSERT INTO w_cti_encours_factures_deja_cpc( + no_facture_reference) + SELECT p_factures.no_facture_reference + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_factures_lignes_c.montant_facture <> 0 AND + p_factures.no_facture_reference IN (SELECT no_facture_reference FROM w_cti_encours_factures) AND + (t_prestations.code IN ('CPC', 'SHO', 'CP') OR + t_prestations.type_valorisation_non_facture IN ('CP') + ) + GROUP BY 1 + HAVING SUM(nb_prestation) > 0 + ; + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Forcage code GHS'; + --UPDATE w_cti_encours_factures + --SET ghs_id = t_ghs.oid + --FROM activite.t_forcage_encours_factures + --JOIN base.t_ghs ON t_ghs.code = t_forcage_encours_factures.ghs_code + --WHERE w_cti_encours_factures.no_sejour = t_forcage_encours_factures.no_sejour AND + -- t_forcage_encours_factures.etat_forcage_ghs = 'F' AND + -- t_forcage_encours_factures.ghs_code <> 0 AND + -- date_trunc('month',t_forcage_encours_factures.date_encours) = date_trunc('month',w_cti_encours_factures.date_encours) + --; + + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Generation des lignes valorisees'; + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'GHS'; + + + -- Deux passages pour la valorisation + -- premier passage sans tenir compte des GHS + -- second en en tenant compte + -- pour comparer les deux + + IF _ENCOURSECARTGHSV > 0 THEN + w_simul = ''; + ELSE + w_simul = '1'; + END IF; + WHILE w_simul <> '0' LOOP + w_simul = CASE WHEN w_simul = '' THEN '1' ELSE '0' END; + + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'GHS ' || w_simul; + TRUNCATE w_cti_encours_factures_lignes_c; + + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, nb_rubrique, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, ghs_id, + prix_unitaire, nb_prestation, montant_encours, lieu_id) + SELECT w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'GHS' AS type_ligne, date_debut, date_fin, GREATEST(date_fin - date_debut,1), 1, w_cti_encours_calcul_parametres.coefficient_mco, + COALESCE(w_cti_encours_calcul_parametres_services.prestation_ghs_id, w_cti_encours_calcul_parametres.prestation_ghs_id), + COALESCE(w_cti_encours_calcul_parametres_services.rubrique_facturation_ghs_id, w_cti_encours_calcul_parametres.rubrique_facturation_ghs_id), + COALESCE(w_cti_encours_calcul_parametres_services.rubrique_facturation_ghs_id, w_cti_encours_calcul_parametres.rubrique_facturation_ghs_id), + ghs_id, + 0, 1, 0, lieu_sortie_id + FROM w_cti_encours_calcul_parametres, + w_cti_encours_factures + LEFT JOIN w_cti_encours_calcul_parametres_services ON + lieu_sortie_service_id = w_cti_encours_calcul_parametres_services.service_facturation_id AND + w_cti_encours_factures.type_sejour = w_cti_encours_calcul_parametres_services.type_sejour + WHERE w_cti_encours_factures.type_t2a = '1' AND w_cti_encours_factures.type_sejour <> '5' AND + uniquement_prestations_saisies <> '1' AND + w_cti_encours_factures.ghm_id NOT IN (SELECT ghm_id FROM w_cti_encours_ghm_sans_ghs) AND + w_cti_encours_factures.particularites_encours_service NOT ILIKE '%IVG%' AND + COALESCE(w_cti_encours_calcul_parametres_services.prestation_ghs_id, w_cti_encours_calcul_parametres.prestation_ghs_id) <> 0 AND + COALESCE(w_cti_encours_calcul_parametres_services.rubrique_facturation_ghs_id, w_cti_encours_calcul_parametres.rubrique_facturation_ghs_id) <> 0 AND + (w_cti_encours_factures.est_budget_global <> '1' OR w_cti_encours_factures.no_facture LIKE '%BG') AND + w_cti_encours_factures.no_facture NOT IN ( + SELECT no_facture + FROM activite.p_factures_lignes_non_facturees_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE t_prestations.code IN ('I01') + ); + + + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, nb_rubrique, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, ghs_id, + prix_unitaire, nb_prestation, montant_encours, lieu_id) + SELECT w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'GHS' AS type_ligne, p_mouvements_sejour.date, p_mouvements_sejour.date, nb_seances, 1, w_cti_encours_calcul_parametres.coefficient_mco, + COALESCE(w_cti_encours_calcul_parametres_services.prestation_ghs_id, w_cti_encours_calcul_parametres.prestation_ghs_sea_id), + COALESCE(w_cti_encours_calcul_parametres_services.rubrique_facturation_ghs_id, w_cti_encours_calcul_parametres.rubrique_facturation_ghs_sea_id), + COALESCE(w_cti_encours_calcul_parametres_services.rubrique_facturation_ghs_id, w_cti_encours_calcul_parametres.rubrique_facturation_ghs_sea_id), + ghs_id, + 0, nb_seances, 0, lieu_sortie_id + FROM w_cti_encours_calcul_parametres, + w_cti_encours_factures + LEFT JOIN w_cti_encours_calcul_parametres_services ON + lieu_sortie_service_id = w_cti_encours_calcul_parametres_services.service_facturation_id AND + w_cti_encours_factures.type_sejour = w_cti_encours_calcul_parametres_services.type_sejour + JOIN activite.p_mouvements_sejour ON w_cti_encours_factures.no_sejour = p_mouvements_sejour.no_sejour AND nb_seances > 0 AND p_mouvements_sejour.date BETWEEN w_cti_encours_factures.Date_debut AND w_cti_encours_factures.date_fin + WHERE + w_cti_encours_factures.type_t2a = '1' AND w_cti_encours_factures.type_sejour = '5' AND + uniquement_prestations_saisies <> '1' AND + COALESCE(w_cti_encours_calcul_parametres_services.prestation_ghs_id, w_cti_encours_calcul_parametres.prestation_ghs_sea_id) <> 0 AND + COALESCE(w_cti_encours_calcul_parametres_services.rubrique_facturation_ghs_id, w_cti_encours_calcul_parametres.rubrique_facturation_ghs_sea_id) <> 0 AND + (w_cti_encours_factures.est_budget_global <> '1' OR w_cti_encours_factures.no_facture LIKE '%BG') AND + lieu_sortie_service_id NOT IN (select lieu_service_id FROM w_cti_encours_calcul_parametres_services_prestations where prestation_code IN ('D09','D11','D13', 'D13', 'D15', 'D16', 'DTP') AND coefficient = 1); + + -- GHS déjà connu + UPDATE w_cti_encours_factures_lignes_c SET + prix_unitaire = t_ghs_tarifs.tarif_ghs, + montant_encours = t_ghs_tarifs.tarif_ghs * w_cti_encours_factures_lignes_c.coefficient_mco, + borne_basse = t_ghs_tarifs.borne_basse, + borne_haute = t_ghs_tarifs.borne_haute, + forfait_exb = t_ghs_tarifs.forfait_exb, + tarif_exb = t_ghs_tarifs.tarif_exb, + duree_sejour = w_cti_encours_factures.date_fin - w_cti_encours_factures.date_debut, + regle_texte = 'GHS pour dossier groupé : ' || to_char(t_ghs.code,'FM0000') || ' (' || COALESCE(t_ghm.code || '-','') || COALESCE(t_ghm.texte,t_ghs.texte) || ')' + FROM w_cti_encours_factures + JOIN base.t_ghs ON t_ghs.oid = w_cti_encours_factures.ghs_id + JOIN base.t_ghs_tarifs ON t_ghs_tarifs.ghs_id = t_ghs.oid AND t_ghs_tarifs.secteur = w_cti_encours_factures.secteur_tarif AND w_cti_encours_factures.date_fin BETWEEN t_ghs_tarifs.date_debut AND t_ghs_tarifs.date_fin + LEFT JOIN base.t_ghm ON t_ghm.oid = w_cti_encours_factures.ghm_id + WHERE w_simul = '0' AND + w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + w_cti_encours_factures.ghs_id <> 0 AND + type_ligne = 'GHS' + ; + -- EXB sur GHS déjà connus + UPDATE w_cti_encours_factures_lignes_c + SET montant_encours = + CASE + WHEN forfait_exb > 0 THEN round(prix_unitaire - forfait_exb * w_cti_encours_factures_lignes_c.coefficient_mco,2) + WHEN forfait_exb = 0 AND tarif_exb > 0 AND duree_sejour = 0 THEN round(tarif_exb / 2 * coefficient_mco,2) + WHEN forfait_exb = 0 AND tarif_exb > 0 THEN round(prix_unitaire - (tarif_exb * (borne_basse-duree_sejour) * coefficient_mco),2) + ELSE montant_encours + END, + regle_texte = 'EXB pour dossier groupé' + WHERE w_simul = '0' AND + duree_sejour < borne_basse AND + prix_unitaire <> 0 AND + ghs_id <> 0 AND + type_ligne = 'GHS'; + + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'EXH'; + -- EXH + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, lieu_id, nb_rubrique, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, nb_prestation, montant_encours, regle_texte) + SELECT w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'EXH' AS type_ligne, date(w_cti_encours_factures.date_debut + (t_ghs_tarifs.borne_haute || ' day')::interval), + w_cti_encours_factures.date_fin, w_cti_encours_factures.lieu_sortie_id, w_cti_encours_factures.date_fin - w_cti_encours_factures.date_debut - t_ghs_tarifs.borne_haute, 1, w_cti_encours_calcul_parametres.coefficient_mco, + prestation_exh_id, rubrique_facturation_exh_id, rubrique_comptabilisation_ghs_id, + t_ghs_tarifs.tarif_exh, w_cti_encours_factures.date_fin - w_cti_encours_factures.date_debut - t_ghs_tarifs.borne_haute, round(t_ghs_tarifs.tarif_exh * (w_cti_encours_factures.date_fin - w_cti_encours_factures.date_debut - t_ghs_tarifs.borne_haute) * w_cti_encours_calcul_parametres.coefficient_mco,2), + 'EXH pour dossier groupé : Borne haute ' || t_ghs_tarifs.borne_haute || ' pour GHS ' || to_char(t_ghs.code,'FM0000') || ' (' || COALESCE(t_ghm.code || '-','') || COALESCE(t_ghm.texte,t_ghs.texte) || ')' + FROM w_cti_encours_calcul_parametres, w_cti_encours_factures + JOIN base.t_ghs ON t_ghs.oid = w_cti_encours_factures.ghs_id + LEFT JOIN base.t_ghm ON t_ghm.oid = w_cti_encours_factures.ghm_id + JOIN base.t_ghs_tarifs ON t_ghs_tarifs.ghs_id = t_ghs.oid AND + t_ghs_tarifs.secteur = w_cti_encours_factures.secteur_tarif AND + w_cti_encours_factures.date_fin BETWEEN t_ghs_tarifs.date_debut AND t_ghs_tarifs.date_fin + WHERE w_simul = '0' AND + w_cti_encours_factures.type_t2a = '1' AND type_sejour <> '5' AND + uniquement_prestations_saisies <> '1' AND + w_cti_encours_factures.ghs_id > 0 AND + t_ghs_tarifs.borne_haute > 0 AND + w_cti_encours_factures.date_fin - w_cti_encours_factures.date_debut > t_ghs_tarifs.borne_haute AND + COALESCE(rubrique_facturation_exh_id,0) <> 0 AND + COALESCE(prestation_exh_id,0) <> 0 AND + (w_cti_encours_factures.est_budget_global <> '1' OR w_cti_encours_factures.no_facture LIKE '%BG') ; + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'EXH (non groupes)'; + -- EXH + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, lieu_id, nb_rubrique, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, nb_prestation, montant_encours, regle_texte) + SELECT w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'EXHNG' AS type_ligne, date(w_cti_encours_factures.date_debut + (base.cti_to_number(t_divers_bh.valeur) || ' day')::interval), + w_cti_encours_factures.date_fin, w_cti_encours_factures.lieu_sortie_id, w_cti_encours_factures.date_fin - w_cti_encours_factures.date_debut - base.cti_to_number(t_divers_bh.valeur), 1, + w_cti_encours_calcul_parametres.coefficient_mco, + prestation_exh_id, rubrique_facturation_exh_id, rubrique_comptabilisation_ghs_id, + base.cti_to_number(t_divers_xh.valeur), w_cti_encours_factures.date_fin - w_cti_encours_factures.date_debut - base.cti_to_number(t_divers_bh.valeur), + round(base.cti_to_number(t_divers_xh.valeur) * (w_cti_encours_factures.date_fin - w_cti_encours_factures.date_debut - base.cti_to_number(t_divers_bh.valeur)) * w_cti_encours_calcul_parametres.coefficient_mco,2), + 'EXH fictif (pour dossiers non groupés) de ' || t_divers_xh.valeur || ' euros par journée au delà de ' || t_divers_bh.valeur || ' jours' + FROM w_cti_encours_calcul_parametres, w_cti_encours_factures + JOIN activite.t_divers t_divers_bh ON t_divers_bh.code = 'ENCOURSBORNEHAUTE' AND base.cti_to_number(t_divers_bh.valeur) > 0 + JOIN activite.t_divers t_divers_xh ON t_divers_xh.code = 'ENCOURSEXHMOYEN' AND base.cti_to_number(t_divers_xh.valeur) > 0 + WHERE + w_cti_encours_factures.type_t2a = '1' AND type_sejour <> '5' AND + uniquement_prestations_saisies <> '1' AND + (w_cti_encours_factures.ghs_id <= 0 OR w_simul = '1') AND + w_cti_encours_factures.date_fin - w_cti_encours_factures.date_debut > base.cti_to_number(t_divers_bh.valeur) AND + COALESCE(rubrique_facturation_exh_id,0) <> 0 AND + COALESCE(prestation_exh_id,0) <> 0 AND + (w_cti_encours_factures.est_budget_global <> '1' OR w_cti_encours_factures.no_facture LIKE '%BG') + ; + + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'GHS bebes'; + -- GHS bébés + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, nb_rubrique, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, nb_prestation, montant_encours, lieu_id, regle_texte) + SELECT w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'GHSBB' AS type_ligne, w_cti_encours_factures.date_debut, w_cti_encours_factures.date_fin, 1, 1, w_cti_encours_calcul_parametres.coefficient_mco, + prestation_ghs_id, rubrique_facturation_ghs_id, rubrique_comptabilisation_ghs_id, + t_ghs_tarifs.tarif_ghs, 1, t_ghs_tarifs.tarif_ghs * w_cti_encours_calcul_parametres.coefficient_mco, lieu_sortie_id, + 'GHS bébé pour dossier groupé : ' || to_char(t_ghs.code,'FM0000') || ' (' || t_ghs.texte || ')' + FROM w_cti_encours_calcul_parametres, w_cti_encours_factures + JOIN base.t_ghs ON t_ghs.oid = w_cti_encours_factures.ghs_bebe1_id + JOIN base.t_ghs_tarifs ON t_ghs.oid = w_cti_encours_factures.ghs_bebe1_id AND + t_ghs_tarifs.ghs_id = t_ghs.oid AND t_ghs_tarifs.secteur = w_cti_encours_factures.secteur_tarif AND w_cti_encours_factures.date_fin BETWEEN t_ghs_tarifs.date_debut AND t_ghs_tarifs.date_fin + WHERE w_simul = '0' AND + w_cti_encours_factures.type_t2a = '1' AND w_cti_encours_factures.ghs_bebe1_id > 0 AND + uniquement_prestations_saisies <> '1' AND + (w_cti_encours_factures.est_budget_global <> '1' OR w_cti_encours_factures.no_facture LIKE '%BG') + UNION + SELECT w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'GHSBB', w_cti_encours_factures.date_debut, w_cti_encours_factures.date_fin, 1, 1, w_cti_encours_calcul_parametres.coefficient_mco, + prestation_ghs_id, rubrique_facturation_ghs_id, rubrique_comptabilisation_ghs_id, + t_ghs_tarifs.tarif_ghs, 1, t_ghs_tarifs.tarif_ghs * w_cti_encours_calcul_parametres.coefficient_mco, lieu_sortie_id, + 'GHS bébé pour dossier groupé : ' || to_char(t_ghs.code,'FM0000') || ' (' || t_ghs.texte || ')' + FROM w_cti_encours_calcul_parametres, w_cti_encours_factures + JOIN base.t_ghs ON t_ghs.oid = w_cti_encours_factures.ghs_bebe2_id + JOIN base.t_ghs_tarifs ON t_ghs.oid = w_cti_encours_factures.ghs_bebe2_id AND + t_ghs_tarifs.ghs_id = t_ghs.oid AND t_ghs_tarifs.secteur = w_cti_encours_factures.secteur_tarif AND w_cti_encours_factures.date_fin BETWEEN t_ghs_tarifs.date_debut AND t_ghs_tarifs.date_fin + WHERE w_simul = '0' AND + w_cti_encours_factures.type_t2a = '1' AND w_cti_encours_factures.ghs_bebe2_id > 0 AND + uniquement_prestations_saisies <> '1' AND + (w_cti_encours_factures.est_budget_global <> '1' OR w_cti_encours_factures.no_facture LIKE '%BG') + UNION + SELECT w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'GHSBB', w_cti_encours_factures.date_debut, w_cti_encours_factures.date_fin, 1, 1, w_cti_encours_calcul_parametres.coefficient_mco, + prestation_ghs_id, rubrique_facturation_ghs_id, rubrique_comptabilisation_ghs_id, + t_ghs_tarifs.tarif_ghs, 1, t_ghs_tarifs.tarif_ghs * w_cti_encours_calcul_parametres.coefficient_mco, lieu_sortie_id, + 'GHS bébé pour dossier groupé : ' || to_char(t_ghs.code,'FM0000') || ' (' || t_ghs.texte || ')' + FROM w_cti_encours_calcul_parametres, w_cti_encours_factures + JOIN base.t_ghs ON t_ghs.oid = w_cti_encours_factures.ghs_bebe3_id + JOIN base.t_ghs_tarifs ON t_ghs.oid = w_cti_encours_factures.ghs_bebe3_id AND + t_ghs_tarifs.ghs_id = t_ghs.oid AND t_ghs_tarifs.secteur = w_cti_encours_factures.secteur_tarif AND w_cti_encours_factures.date_fin BETWEEN t_ghs_tarifs.date_debut AND t_ghs_tarifs.date_fin + WHERE w_simul = '0' AND + w_cti_encours_factures.type_t2a = '1' AND w_cti_encours_factures.ghs_bebe3_id > 0 AND + uniquement_prestations_saisies <> '1' AND + (w_cti_encours_factures.est_budget_global <> '1' OR w_cti_encours_factures.no_facture LIKE '%BG'); + -- Valorisation non groupes + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Valorisation GHS non groupes'; + + UPDATE w_cti_encours_factures + SET classe_ghm = '05C19' + WHERE EXISTS ( + SELECT no_sejour + FROM activite.p_factures_lignes_non_facturees_h + JOIN activite.p_factures ON p_factures_lignes_non_facturees_h.no_facture = p_factures.no_facture + JOIN base.t_actes ON acte_id = t_actes.oid + WHERE t_actes.code IN ('DELF013', 'DELF020', 'DELF014', 'DELF016', 'DELF086', 'DELA004','DEKA002') + AND w_cti_encours_factures.no_sejour = p_factures.no_sejour + ); + + UPDATE w_cti_encours_factures + SET classe_ghm = '05C19' + WHERE EXISTS ( + SELECT no_sejour + FROM activite.p_factures_lignes_h + JOIN activite.p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN base.t_actes ON acte_id = t_actes.oid + WHERE t_actes.code IN ('DELF013', 'DELF020', 'DELF014', 'DELF016', 'DELA004','DEKA002') + AND classe_ghm = '' + AND p_factures.no_sejour = w_cti_encours_factures.no_sejour + ) + ; + + UPDATE w_cti_encours_factures + SET classe_ghm = 'I01' + WHERE EXISTS ( + SELECT no_sejour + FROM activite.p_factures_lignes_non_facturees_h + JOIN activite.p_factures ON p_factures_lignes_non_facturees_h.no_facture = p_factures.no_facture + WHERE acte_id = ANY(SELECT oid FROM base.t_actes WHERE code IN('JGNJ900')) + AND w_cti_encours_factures.no_sejour = p_factures.no_sejour + ); + + UPDATE w_cti_encours_factures + SET classe_ghm = 'I01' + WHERE EXISTS ( + SELECT no_sejour + FROM activite.p_factures_lignes_h + JOIN activite.p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + WHERE acte_id = ANY(SELECT oid FROM base.t_actes WHERE code IN('JGNJ900')) + AND classe_ghm = '' + AND w_cti_encours_factures.no_sejour = p_factures.no_sejour + ) + ; + + UPDATE w_cti_encours_factures_lignes_c SET + rubrique_facturation_id = rubrique_facturation_I01_id, + rubrique_comptabilisation_id = rubrique_comptabilisation_I01_id, + prestation_id = prestation_I01_id + FROM activite.t_prestations, + w_cti_encours_factures + JOIN w_cti_encours_calcul_parametres ON + rubrique_facturation_I01_id IS NOT NULL AND + rubrique_facturation_I01_id <> 0 + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + w_cti_encours_factures_lignes_c.prestation_id = t_prestations.oid AND + classe_ghm = 'I01' AND + t_prestations.code = 'GHS' + ; + + + + + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 12 derniers mois (' || w_date_histo_12 || ') du médecin ' || medecin_sejour_texte || ' dans le service ' || lieu_sortie_service_texte || ' avec une durée de séjour de ' || duree_sejour_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.medecin_sejour_id = w_cti_encours_factures.medecin_sejour_id AND + w_cti_encours_histo_ghs.lieu_sortie_service_id = w_cti_encours_factures.lieu_sortie_service_id AND + w_cti_encours_histo_ghs.lieu_sortie_unite_fonctionnelle_id = w_cti_encours_factures.lieu_sortie_unite_fonctionnelle_id AND + w_cti_encours_histo_ghs.duree_sejour = w_cti_encours_factures.duree_sejour AND + w_cti_encours_histo_ghs.tranche_sejour = w_cti_encours_factures.tranche_sejour AND + regle = '01-MSD12' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 12 derniers mois (' || w_date_histo_12 || ') du médecin ' || medecin_sejour_texte || ' dans le service ' || lieu_sortie_service_texte || ' avec une durée de séjour de ' || tranche_sejour_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.medecin_sejour_id = w_cti_encours_factures.medecin_sejour_id AND + w_cti_encours_histo_ghs.lieu_sortie_service_id = w_cti_encours_factures.lieu_sortie_service_id AND + w_cti_encours_histo_ghs.lieu_sortie_unite_fonctionnelle_id = w_cti_encours_factures.lieu_sortie_unite_fonctionnelle_id AND + w_cti_encours_histo_ghs.tranche_sejour = w_cti_encours_factures.tranche_sejour AND + regle = '02-MST12' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 18 derniers mois (' || w_date_histo_18 || ') du médecin ' || medecin_sejour_texte || ' dans le service ' || lieu_sortie_service_texte || ' avec une durée de séjour de ' || duree_sejour_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.medecin_sejour_id = w_cti_encours_factures.medecin_sejour_id AND + w_cti_encours_histo_ghs.lieu_sortie_service_id = w_cti_encours_factures.lieu_sortie_service_id AND + w_cti_encours_histo_ghs.lieu_sortie_unite_fonctionnelle_id = w_cti_encours_factures.lieu_sortie_unite_fonctionnelle_id AND + w_cti_encours_histo_ghs.duree_sejour = w_cti_encours_factures.duree_sejour AND + w_cti_encours_histo_ghs.tranche_sejour = w_cti_encours_factures.tranche_sejour AND + regle = '03-MSD18' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 18 derniers mois (' || w_date_histo_18 || ') du médecin ' || medecin_sejour_texte || ' dans le service ' || lieu_sortie_service_texte || ' avec une durée de séjour de ' || tranche_sejour_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.medecin_sejour_id = w_cti_encours_factures.medecin_sejour_id AND + w_cti_encours_histo_ghs.lieu_sortie_service_id = w_cti_encours_factures.lieu_sortie_service_id AND + w_cti_encours_histo_ghs.lieu_sortie_unite_fonctionnelle_id = w_cti_encours_factures.lieu_sortie_unite_fonctionnelle_id AND + w_cti_encours_histo_ghs.tranche_sejour = w_cti_encours_factures.tranche_sejour AND + regle = '04-MST18' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 12 derniers mois (' || w_date_histo_12 || ') de la spécialité ' || specialite_medecin_sejour_texte || ' dans le service ' || lieu_sortie_service_texte || ' avec une durée de séjour de ' || duree_sejour_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.specialite_medecin_sejour_id = w_cti_encours_factures.specialite_medecin_sejour_id AND + w_cti_encours_histo_ghs.lieu_sortie_service_id = w_cti_encours_factures.lieu_sortie_service_id AND + w_cti_encours_histo_ghs.lieu_sortie_unite_fonctionnelle_id = w_cti_encours_factures.lieu_sortie_unite_fonctionnelle_id AND + w_cti_encours_histo_ghs.duree_sejour = w_cti_encours_factures.duree_sejour AND + w_cti_encours_histo_ghs.tranche_sejour = w_cti_encours_factures.tranche_sejour AND + regle = '05-PSD12' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 12 derniers mois (' || w_date_histo_12 || ') de la spécialité ' || specialite_medecin_sejour_texte || ' dans le service ' || lieu_sortie_service_texte || ' avec une durée de séjour de ' || tranche_sejour_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.specialite_medecin_sejour_id = w_cti_encours_factures.specialite_medecin_sejour_id AND + w_cti_encours_histo_ghs.lieu_sortie_service_id = w_cti_encours_factures.lieu_sortie_service_id AND + w_cti_encours_histo_ghs.lieu_sortie_unite_fonctionnelle_id = w_cti_encours_factures.lieu_sortie_unite_fonctionnelle_id AND + w_cti_encours_histo_ghs.tranche_sejour = w_cti_encours_factures.tranche_sejour AND + regle = '06-PST12' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 12 derniers mois (' || w_date_histo_12 || ') du médecin ' || medecin_sejour_texte || ' avec une durée de séjour de ' || duree_sejour_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.medecin_sejour_id = w_cti_encours_factures.medecin_sejour_id AND + w_cti_encours_histo_ghs.duree_sejour = w_cti_encours_factures.duree_sejour AND + w_cti_encours_histo_ghs.tranche_sejour = w_cti_encours_factures.tranche_sejour AND + regle = '07-MXD12' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 12 derniers mois (' || w_date_histo_12 || ') du médecin ' || medecin_sejour_texte || ' avec une durée de séjour de ' || tranche_sejour_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.medecin_sejour_id = w_cti_encours_factures.medecin_sejour_id AND + w_cti_encours_histo_ghs.tranche_sejour = w_cti_encours_factures.tranche_sejour AND + regle = '08-MXT12' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 18 derniers mois (' || w_date_histo_18 || ') du médecin ' || medecin_sejour_texte || ' avec une durée de séjour de ' || duree_sejour_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.medecin_sejour_id = w_cti_encours_factures.medecin_sejour_id AND + w_cti_encours_histo_ghs.duree_sejour = w_cti_encours_factures.duree_sejour AND + w_cti_encours_histo_ghs.tranche_sejour = w_cti_encours_factures.tranche_sejour AND + regle = '09-MXD18' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 18 derniers mois (' || w_date_histo_18 || ') du médecin ' || medecin_sejour_texte || ' avec une durée de séjour de ' || tranche_sejour_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.medecin_sejour_id = w_cti_encours_factures.medecin_sejour_id AND + w_cti_encours_histo_ghs.tranche_sejour = w_cti_encours_factures.tranche_sejour AND + regle = '10-MXT18' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 12 derniers mois (' || w_date_histo_12 || ') de la spécialité ' || specialite_medecin_sejour_texte || ' avec une durée de séjour de ' || duree_sejour_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.specialite_medecin_sejour_id = w_cti_encours_factures.specialite_medecin_sejour_id AND + w_cti_encours_histo_ghs.duree_sejour = w_cti_encours_factures.duree_sejour AND + w_cti_encours_histo_ghs.tranche_sejour = w_cti_encours_factures.tranche_sejour AND + regle = '11-PXD12' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 12 derniers mois (' || w_date_histo_12 || ') de la spécialité ' || specialite_medecin_sejour_texte || ' avec une durée de séjour de ' || tranche_sejour_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.specialite_medecin_sejour_id = w_cti_encours_factures.specialite_medecin_sejour_id AND + w_cti_encours_histo_ghs.tranche_sejour = w_cti_encours_factures.tranche_sejour AND + regle = '12-PXT12' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 18 derniers mois (' || w_date_histo_18 || ') dans le service ' || lieu_sortie_service_texte || ' avec une durée de séjour de ' || duree_sejour_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.lieu_sortie_service_id = w_cti_encours_factures.lieu_sortie_service_id AND + w_cti_encours_histo_ghs.lieu_sortie_unite_fonctionnelle_id = w_cti_encours_factures.lieu_sortie_unite_fonctionnelle_id AND + w_cti_encours_histo_ghs.duree_sejour = w_cti_encours_factures.duree_sejour AND + w_cti_encours_histo_ghs.tranche_sejour = w_cti_encours_factures.tranche_sejour AND + regle = '13-XSD18' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 12 derniers mois (' || w_date_histo_12 || ') du médecin ' || medecin_sejour_texte || ' dans le service ' || lieu_sortie_service_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.medecin_sejour_id = w_cti_encours_factures.medecin_sejour_id AND + w_cti_encours_histo_ghs.lieu_sortie_service_id = w_cti_encours_factures.lieu_sortie_service_id AND + w_cti_encours_histo_ghs.lieu_sortie_unite_fonctionnelle_id = w_cti_encours_factures.lieu_sortie_unite_fonctionnelle_id AND + regle = '21-MSX12' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 18 derniers mois (' || w_date_histo_18 || ') du médecin ' || medecin_sejour_texte || ' dans le service ' || lieu_sortie_service_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.medecin_sejour_id = w_cti_encours_factures.medecin_sejour_id AND + w_cti_encours_histo_ghs.lieu_sortie_service_id = w_cti_encours_factures.lieu_sortie_service_id AND + w_cti_encours_histo_ghs.lieu_sortie_unite_fonctionnelle_id = w_cti_encours_factures.lieu_sortie_unite_fonctionnelle_id AND + regle = '22-MSX18' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 12 derniers mois (' || w_date_histo_12 || ') du médecin ' || medecin_sejour_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.medecin_sejour_id = w_cti_encours_factures.medecin_sejour_id AND + regle = '51-MXX12' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 18 derniers mois (' || w_date_histo_18 || ') du médecin ' || medecin_sejour_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.medecin_sejour_id = w_cti_encours_factures.medecin_sejour_id AND + regle = '52-MXX18' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 18 derniers mois (' || w_date_histo_18 || ') dans le service ' || lieu_sortie_service_texte, + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + w_cti_encours_histo_ghs.lieu_sortie_service_id = w_cti_encours_factures.lieu_sortie_service_id AND + w_cti_encours_histo_ghs.lieu_sortie_unite_fonctionnelle_id = w_cti_encours_factures.lieu_sortie_unite_fonctionnelle_id AND + regle = '61-XSX18' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_moyen_ghs, + prix_unitaire = montant_moyen_ghs, + prix_unitaire_calcule = montant_moyen_ghs, + regle_ghs = regle, + regle_texte = 'P.U. Moyen GHS calculé sur les ' || nombre || ' séjours des 18 derniers mois (' || w_date_histo_18 || ')', + type_ligne = 'GHSNG' + FROM w_cti_encours_factures + JOIN w_cti_encours_histo_ghs ON + w_cti_encours_histo_ghs.classe_ghm = w_cti_encours_factures.classe_ghm AND + regle = '99-XXX18' + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + montant_encours = 0 AND + type_ligne = 'GHS'; + + -- Forcage prix GHS selon paramétrage dossier + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = prix_unitaire_force, + prix_unitaire = prix_unitaire_force, + regle_ghs = '00-FORCE', + regle_texte = 'P.U. Moyen GHS forcé', + type_ligne = 'GHSNG' + FROM activite.t_calcul_encours + WHERE w_cti_encours_factures_lignes_c.no_sejour = t_calcul_encours.no_sejour AND + t_calcul_encours.type_ligne = 'GHSNG' AND + t_calcul_encours.prix_unitaire_is_force = '1' AND + w_cti_encours_factures_lignes_c.type_ligne = 'GHSNG'; + + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'GHS bebe moyen'; + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, nb_rubrique, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, ghs_id, + prix_unitaire, nb_prestation, montant_encours, lieu_id, regle_texte) + SELECT w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'GHSBBM' AS type_ligne, date_debut, date_fin, GREATEST(date_fin - date_debut,1), 1, w_cti_encours_calcul_parametres.coefficient_mco, + prestation_ghs_id, rubrique_facturation_ghs_id, rubrique_comptabilisation_ghs_id, -9981, + base.cti_to_number(t_divers.valeur), 1, base.cti_to_number(t_divers.valeur), w_cti_encours_factures.lieu_sortie_id, + 'GHS Moyen paramétré pour les séjours bébés pour une maman dont le GHS est connu' AS regle_texte + FROM w_cti_encours_calcul_parametres, + w_cti_encours_factures + JOIN activite.t_divers ON t_divers.code = 'ENCOURSGHSMBB' AND base.cti_to_number(t_divers.valeur) <> 0 + WHERE w_cti_encours_factures.type_t2a = '1' AND w_cti_encours_factures.type_sejour = '1' AND + uniquement_prestations_saisies <> '1' AND + (w_cti_encours_factures.ghs_bebe1_id <= 0 OR w_simul = '1') AND + w_cti_encours_factures.ghm_id NOT IN (SELECT oid FROM base.t_ghm WHERE code IN ('14Z08Z')) AND + w_cti_encours_factures.ghm_id IN (SELECT oid FROM base.t_ghm WHERE code LIKE ('14%') AND (texte ILIKE '%sarienne%' OR texte ILIKE '%accouchement%') AND texte NOT ILIKE '%faux%') AND + COALESCE(rubrique_facturation_ghs_id,0) <> 0 AND + COALESCE(prestation_ghs_id,0) <> 0 AND + (w_cti_encours_factures.est_budget_global <> '1' OR w_cti_encours_factures.no_facture LIKE '%BG') ; + + -- A la fin du premier passage, conserver le résultat + IF _ENCOURSECARTGHSV > 0 AND w_simul = '1' THEN + DROP TABLE IF EXISTS w_cti_encours_factures_lignes_c_simul_ng; + CREATE TEMP TABLE w_cti_encours_factures_lignes_c_simul_ng AS + SELECT w_cti_encours_factures_lignes_c.* + FROM w_cti_encours_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE t_prestations.code IN ('GHS','EXH') + ; + END IF; + + IF _ENCOURSECARTGHSV > 0 AND w_simul = '0' THEN + INSERT INTO activite.t_prestations + (code_original, code, texte, texte_court, clinique_honoraire) + VALUES + ('*GHSECARTV', 'GHS-ECART', 'Alerte écart valorisation GHS groupé', 'Alerte écart valorisation GHS groupé', '') + ON CONFLICT ON CONSTRAINT t_prestations_code_key + DO UPDATE SET + code_original = EXCLUDED.code_original -- couvre le cas où code_original aurait été modifié (cf. import SIGEMS notamment) + , texte = EXCLUDED.texte + , texte_court = EXCLUDED.texte_court + , clinique_honoraire = EXCLUDED.clinique_honoraire + ; + + -- A la fin du second passage, enregistrer les écarts importants + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, + no_facture, + type_ligne, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + prestation_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + ghs_id, + prix_unitaire, + nb_prestation, + montant_encours, + lieu_id, + regle_texte) + + SELECT subview_simul.no_sejour, + subview_simul.no_facture, + 'GHSECART' AS type_ligne, + subview.date_debut, + subview.date_fin, + 0::numeric AS nb_rubrique, + 0::numeric AS coefficient, + 0::numeric AS coefficient_mco, + t_prestations.oid AS prestation_id, + 0::bigint AS rubrique_facturation_id, + 0::bigint AS rubrique_comptabilisation_id, + subview.ghs_id, + 0::numeric AS prix_unitaire, + 0::numeric AS nb_prestation, + 0::numeric AS montant_encours, + subview.lieu_id, + 'Montant GHS inférieur (-' || (montant_encours_simul-montant_encours)::text || 'E) / ' || subview_simul.regle_texte + FROM + ( + SELECT no_sejour, no_facture, + SUM(montant_encours) AS montant_encours_simul, + MAX(CASE WHEN t_prestations.code = 'GHS' THEN regle_texte ELSE '' END) AS regle_texte + FROM w_cti_encours_factures_lignes_c_simul_ng + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE t_prestations.code IN ('GHS','EXH') + GROUP BY 1,2 + ) subview_simul + JOIN + ( + SELECT no_sejour, + no_facture, + SUM(montant_encours) AS montant_encours, + MAX(ghs_id) AS ghs_id, + MIN(date_debut) AS date_debut, + MAX(date_fin) AS date_fin, + MAX(lieu_id) AS lieu_id + FROM w_cti_encours_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE t_prestations.code IN ('GHS','EXH') + GROUP BY 1,2 + ) subview ON + subview_simul.no_sejour = subview.no_sejour AND + subview_simul.no_facture = subview.no_facture + JOIN activite.t_prestations ON t_prestations.code_original = '*GHSECARTV' + left JOIN activite.t_rubriques_facturation ON t_rubriques_facturation.code_original = '*GHSECARTV' + WHERE subview_simul.montant_encours_simul - montant_encours >= _ENCOURSECARTGHSV + ; + END IF; + END LOOP; + + + -- Ne pas générer ce qui est deja saisi en non facturé + + INSERT INTO w_cti_factures_lignes_non_facturees_c + SELECT w_cti_encours_factures.no_sejour, + w_cti_encours_factures.no_facture, + CASE WHEN t_prestations.code IN ('FJA', 'FJR', 'FJS') THEN 'FJA' + WHEN t_prestations.code IN ('FJ') AND type_t2a = '1' THEN 'FJA' + ELSE t_prestations.code END AS prestation_code, + MIN(CASE WHEN code_sorti = '1' AND type_sejour = '1' AND (p_factures_lignes_non_facturees_c.date_debut = w_cti_encours_factures.date_fin OR p_factures_lignes_non_facturees_c.date_fin = w_cti_encours_factures.date_fin AND nb_rubrique = 1) THEN '1' ELSE '0' END), + MIN(COALESCE(t_prestations.type_valorisation_non_facture,'')) AS type_valorisation_non_facture + FROM w_cti_encours_factures + JOIN activite.p_factures_lignes_non_facturees_c ON w_cti_encours_factures.no_facture = p_factures_lignes_non_facturees_c.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE t_prestations.code NOT IN ('GHS', 'EXH', 'SRC', 'REA', 'STF') + OR + ( + t_prestations.code IN ('SRC', 'REA', 'STF') AND + w_cti_encours_factures.ghs_id > 0 AND + w_OPTION_ENCOURSMCOSUP = '1' + ) + GROUP BY 1,2,3 + UNION + SELECT w_cti_encours_factures.no_sejour, + w_cti_encours_factures.no_facture, + CASE WHEN t_prestations.code IN ('FJA', 'FJR', 'FJS') THEN 'FJA' + WHEN t_prestations.code IN ('FJ') AND type_t2a = '1' THEN 'FJA' + ELSE t_prestations.code END AS prestation_code, + MIN(CASE WHEN code_sorti = '1' AND type_sejour = '1' AND (p_factures_lignes_c.date_debut = w_cti_encours_factures.date_fin OR p_factures_lignes_c.date_fin = w_cti_encours_factures.date_fin AND nb_rubrique = 1) THEN '1' ELSE '0' END), + MIN(COALESCE(t_prestations.type_valorisation_non_facture,'')) AS type_valorisation_non_facture + FROM w_cti_encours_factures + JOIN activite.p_factures_lignes_c ON w_cti_encours_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE t_prestations.code NOT IN ('GHS', 'EXH', 'SRC', 'REA', 'STF', 'GMT') AND + w_cti_encours_factures.particularites_encours_service NOT ILIKE '%MAT%' AND + w_cti_encours_factures.particularites_encours_service NOT ILIKE '%PASDEFJA%' AND + montant_facture <> 0 AND + w_cti_encours_factures.date_fin <= w_date_traitement + GROUP BY 1,2,3 + ; + + -- Si PJ en saisi, il faut considérer que le FJ est inclus si le FJ n'est pas saisi + INSERT INTO w_cti_factures_lignes_non_facturees_c + SELECT + w_cti_factures_lignes_non_facturees_c.no_sejour, + w_cti_factures_lignes_non_facturees_c.no_facture, + 'FJ' AS prestation_code, + w_cti_factures_lignes_non_facturees_c.only_jour_sortie, + ''::text AS type_valorisation_non_facture + FROM w_cti_factures_lignes_non_facturees_c + LEFT JOIN w_cti_factures_lignes_non_facturees_c w_cti_factures_lignes_non_facturees_c_fj ON + w_cti_factures_lignes_non_facturees_c.no_sejour = w_cti_factures_lignes_non_facturees_c_fj.no_sejour AND + w_cti_factures_lignes_non_facturees_c.no_facture = w_cti_factures_lignes_non_facturees_c_fj.no_facture AND + w_cti_factures_lignes_non_facturees_c_fj.prestation_code = 'FJ' + WHERE w_cti_factures_lignes_non_facturees_c.prestation_code = 'PJ' AND + w_cti_factures_lignes_non_facturees_c_fj.no_facture IS NULL + ; + + -- PJ FJ ENT GMT + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'PJ FJ ENT GMT'; + INSERT INTO w_cti_encours_factures_lignes_c(no_sejour, no_facture, type_ligne, date_debut, date_fin, nb_rubrique, nb_prestation, coefficient, coefficient_mco, prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, prix_unitaire, montant_encours, lieu_id, regle_texte) + SELECT + w_cti_encours_factures.no_sejour + , w_cti_encours_factures.no_facture + , CASE + WHEN w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation IN ('PJ') THEN 'PJ' + WHEN w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation IN ('GMT') THEN 'GMT' + ELSE w_cti_encours_calcul_parametres_services_prestations.prestation_code END AS type_ligne + , p_mouvements_sejour.date + , p_mouvements_sejour.date + , 1 + , 1 + , 1 + , 1 + , prestation_id + , rubrique_facturation_id + , rubrique_facturation_id + , MAX(prix_unitaire) + , MAX(round(prix_unitaire,2)) + , MAX(p_mouvements_sejour.lieu_id) + , 'GMT et forfaits journaliers' + FROM w_cti_encours_factures + JOIN activite.p_sejours ON w_cti_encours_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_divers ON t_divers.code = 'OPTADM_DAYOUT' + JOIN activite.p_mouvements_sejour ON w_cti_encours_factures.no_sejour = p_mouvements_sejour.no_sejour + JOIN activite.t_lieux ON p_mouvements_sejour.lieu_id = t_lieux.oid + JOIN w_cti_encours_calcul_parametres_services_prestations ON t_lieux.service_facturation_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id + AND t_lieux.unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id + AND ( + prestation_code IN ('GMT', 'PJ', 'FJ', 'ENT', 'PMS') + OR w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation IN ('GMT', 'PJ','ENT') + ) + LEFT JOIN w_cti_factures_lignes_non_facturees_c ON w_cti_factures_lignes_non_facturees_c.no_facture = w_cti_encours_factures.no_facture + AND w_cti_factures_lignes_non_facturees_c.prestation_code = w_cti_encours_calcul_parametres_services_prestations.prestation_code + WHERE + type_t2a IN ('2','3') + AND uniquement_prestations_saisies <> '1' + AND (est_jour_hospitalisation = '1' + OR p_mouvements_sejour.nb_ambulatoires = 1) + AND w_cti_factures_lignes_non_facturees_c.no_facture IS NULL + AND ( + w_cti_encours_calcul_parametres_services_prestations.prestation_code IN ('PJ', 'FJ') AND type_t2a = 3 AND nb_sorties_directes = 0 AND p_mouvements_sejour.date <> p_sejours.date_sortie + OR w_cti_encours_calcul_parametres_services_prestations.prestation_code IN ('PJ', 'FJ') AND type_t2a = 3 AND nb_sorties_directes = 1 AND p_mouvements_sejour.date = p_sejours.date_sortie AND (p_mouvements_sejour.heure_fin > 130000 OR t_divers.valeur = '2') + OR w_cti_encours_calcul_parametres_services_prestations.prestation_code IN ('PJ', 'FJ') AND type_t2a = 3 AND p_mouvements_sejour.nb_ambulatoires = 1 + OR w_cti_encours_calcul_parametres_services_prestations.prestation_code IN ('GMT', 'FJ') AND type_t2a = 2 AND nb_sorties_directes = 0 AND p_mouvements_sejour.date <> p_sejours.date_sortie + OR w_cti_encours_calcul_parametres_services_prestations.prestation_code IN ('GMT', 'FJ') AND type_t2a = 2 AND nb_sorties_directes = 1 AND p_mouvements_sejour.date = p_sejours.date_sortie AND (p_mouvements_sejour.heure_fin > 130000 OR t_divers.valeur = '2') + OR w_cti_encours_calcul_parametres_services_prestations.prestation_code IN ('GMT', 'FJ') AND type_t2a = 2 AND p_mouvements_sejour.nb_ambulatoires = 1 + OR w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation IN ('PJ') AND nb_sorties_directes = 0 AND p_mouvements_sejour.date <> p_sejours.date_sortie + OR w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation IN ('PJ') AND nb_sorties_directes = 1 AND p_mouvements_sejour.date = p_sejours.date_sortie AND (p_mouvements_sejour.heure_fin > 130000 OR t_divers.valeur = '2') + OR w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation IN ('PJ') AND p_mouvements_sejour.nb_ambulatoires = 1 + OR w_cti_encours_calcul_parametres_services_prestations.prestation_code IN ('ENT') AND nb_entrees_directes = 1 + OR w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation IN ('ENT') AND nb_entrees_directes = 1 + OR w_cti_encours_calcul_parametres_services_prestations.prestation_code IN ('PMS') AND p_mouvements_sejour.jour_semaine = 7 + ) + AND COALESCE(rubrique_facturation_id,0) <> 0 + AND COALESCE(prestation_id,0) <> 0 + AND ( + p_mouvements_sejour.date BETWEEN w_cti_encours_factures.date_debut AND w_cti_encours_factures.date_fin + OR service_facturation_id NOT IN (SELECT oid FROM activite.t_services_facturation WHERE avec_facturation_intermediaire = '1' + ) + ) + GROUP BY + w_cti_encours_factures.no_sejour + , w_cti_encours_factures.no_facture + , 3 + , p_mouvements_sejour.date + , 6 + , 7 + , 8 + , 9 + , prestation_id + , rubrique_facturation_id + , 16 + ; + + UPDATE w_cti_encours_factures_lignes_c + SET + montant_encours = p_gmt_valorises.montant_valorise_par_jour + , prix_unitaire = p_gmt_valorises.montant_valorise_par_jour + FROM activite.p_gmt_valorises + WHERE 1 = 1 + AND w_cti_encours_factures_lignes_c.no_sejour = p_gmt_valorises.no_sejour + AND w_cti_encours_factures_lignes_c.type_ligne = 'GMT' + AND w_cti_encours_factures_lignes_c.date_debut BETWEEN p_gmt_valorises.date_debut_gmt::date AND p_gmt_valorises.date_fin_gmt::date + ; + + -- Sur budget global, il faut générer le Ticket modérateur + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'TM Budget Global MCO'; + + + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, nb_rubrique, nb_prestation, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, montant_encours, lieu_id, regle_texte) + SELECT w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'TMBG' AS type_ligne, p_mouvements_sejour.date, p_mouvements_sejour.date, 1, (100-taux_ghs_1)/100, 1, 1, + prestation_id, rubrique_facturation_id, rubrique_facturation_id, + prix_unitaire, round(prix_unitaire*(100-taux_ghs_1)/100), p_mouvements_sejour.lieu_id, + regle_taux_texte + FROM w_cti_encours_factures + JOIN activite.p_mouvements_sejour ON w_cti_encours_factures.no_sejour = p_mouvements_sejour.no_sejour + JOIN activite.t_lieux ON p_mouvements_sejour.lieu_id = t_lieux.oid + JOIN w_cti_encours_calcul_parametres_services_prestations ON t_lieux.service_facturation_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_lieux.unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + (prestation_code IN ('PJ') + ) + JOIN w_cti_encours_factures_histo_taux ON lieu_sortie_service_id = w_cti_encours_factures_histo_taux.service_facturation_id AND taux_ghs_1 < 100 + + WHERE + type_t2a = '1' AND + uniquement_prestations_saisies <> '1' AND + w_cti_encours_factures.no_facture NOT LIKE '%BG' AND + w_cti_encours_factures.no_sejour IN (SELECT no_sejour FROM w_cti_encours_factures_lignes_c WHERE prestation_id IN (SELECT oid FROM activite.t_prestations WHERE code = 'GHS')) AND + (est_jour_hospitalisation = '1' OR p_mouvements_sejour.nb_ambulatoires = 1) AND + ( + w_cti_encours_calcul_parametres_services_prestations.prestation_code IN ('PJ') AND nb_sorties_directes = 0 AND p_mouvements_sejour.date <> w_cti_encours_factures.date_fin OR + w_cti_encours_calcul_parametres_services_prestations.prestation_code IN ('PJ') AND nb_sorties_directes = 0 AND p_mouvements_sejour.date = w_cti_encours_factures.date_fin AND p_mouvements_sejour.heure_fin > 130000 OR + w_cti_encours_calcul_parametres_services_prestations.prestation_code IN ('PJ') AND p_mouvements_sejour.nb_ambulatoires = 1 + ) AND + COALESCE(rubrique_facturation_id,0) <> 0 AND + COALESCE(prestation_id,0) <> 0 AND + (p_mouvements_sejour.date BETWEEN w_cti_encours_factures.date_debut AND w_cti_encours_factures.date_fin ) AND + w_cti_encours_factures.duree_sejour <= 30 AND + w_cti_encours_factures.no_sejour NOT IN (SELECT no_sejour FROm w_actes_120) + ; + + -- Sur budget global, il faut générer éventuellement les suppléments irradiation + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Suppléments irradiation'; + + + + -- GHT (HAD) + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'GHT'; + + -- Tranche manquante + DROP TABLE IF EXISTS w_cti_encours_calcul_parametres_services_prestations_t; + CREATE TEMP TABLE w_cti_encours_calcul_parametres_services_prestations_t AS + SELECT w_cti_encours_calcul_parametres_services_prestations.*, + tranche_ght_req + FROM w_cti_encours_calcul_parametres_services_prestations + JOIN ( + SELECT tranche_ght_req, lieu_service_id, lieu_unite_fonctionnelle_id, MAX(tranche_ght) AS tranche_ght_sel + FROM w_cti_encours_calcul_parametres_services_prestations + JOIN + (SELECT '1'::text AS tranche_ght_req UNION SELECT '2'::text UNION SELECT '3' UNION SELECT '9') subview ON 1=1 + WHERE prestation_code = 'GHT' AND + (lieu_service_id || '-' || lieu_unite_fonctionnelle_id) NOT IN + (SELECT lieu_service_id || '-' || lieu_unite_fonctionnelle_id + FROM w_cti_encours_calcul_parametres_services_prestations + WHERE prestation_code = 'GHT' AND + tranche_ght = tranche_ght_req + ) + GROUP BY 1,2,3 + ) subview ON + w_cti_encours_calcul_parametres_services_prestations.lieu_service_id = subview.lieu_service_id AND + w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id = subview.lieu_unite_fonctionnelle_id AND + w_cti_encours_calcul_parametres_services_prestations.tranche_ght = tranche_ght_sel + ; + + UPDATE w_cti_encours_calcul_parametres_services_prestations_t + SET tranche_ght = tranche_ght_req + ; + + ALTER TABLE w_cti_encours_calcul_parametres_services_prestations_t DROP COLUMN tranche_ght_req + ; + + INSERT INTO w_cti_encours_calcul_parametres_services_prestations + SELECT * + FROM w_cti_encours_calcul_parametres_services_prestations_t + ; + + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, lieu_id, nb_rubrique, nb_prestation, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, montant_encours, regle_texte) + SELECT + w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'GHT' AS type_ligne, p_mouvements_sejour.date, p_mouvements_sejour.date, p_mouvements_sejour.lieu_id, 1, 1, coefficient, 1, + prestation_id, rubrique_facturation_id, rubrique_facturation_id, + prix_unitaire, round(prix_unitaire * coefficient,2), regle_prestation_texte + FROM w_cti_encours_factures + JOIN activite.p_mouvements_sejour ON w_cti_encours_factures.no_sejour = p_mouvements_sejour.no_sejour + JOIN activite.t_lieux ON p_mouvements_sejour.lieu_id = t_lieux.oid + JOIN activite.p_factures ON w_cti_encours_factures.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN w_cti_encours_calcul_parametres_services_prestations ON t_lieux.service_facturation_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_lieux.unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + w_cti_encours_calcul_parametres_services_prestations.prestation_code IN ('GHT') AND + CASE + WHEN p_mouvements_sejour.date - p_sejours.date_entree <= 3 THEN '1' + WHEN p_mouvements_sejour.date - p_sejours.date_entree BETWEEN 4 AND 8 THEN '2' + WHEN p_mouvements_sejour.date - p_sejours.date_entree BETWEEN 9 AND 30 THEN '3' + ELSE '9' END = tranche_ght + LEFT JOIN w_cti_factures_lignes_non_facturees_c ON w_cti_factures_lignes_non_facturees_c.no_facture = w_cti_encours_factures.no_facture AND + w_cti_factures_lignes_non_facturees_c.prestation_code = w_cti_encours_calcul_parametres_services_prestations.prestation_code + WHERE + type_t2a <> '1' AND + uniquement_prestations_saisies <> '1' AND + est_jour_hospitalisation = '1' AND + p_mouvements_sejour.date BETWEEN w_cti_encours_factures.date_debut AND w_cti_encours_factures.date_fin AND + (p_mouvements_sejour.date <> w_cti_encours_factures.date_fin OR p_mouvements_sejour.heure_fin > 130000 OR p_sejours.date_sortie = p_sejours.date_entree) AND + (nb_sorties_directes = 0 OR p_sejours.date_sortie = p_sejours.date_entree) AND + coefficient > 0 AND + w_cti_factures_lignes_non_facturees_c.no_facture IS NULL AND + COALESCE(rubrique_facturation_id,0) <> 0 AND + COALESCE(prestation_id,0) <> 0 + ORDER BY 1,4; + + -- Chambres particulières + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Chambres particulieres'; + + -- Si plusieurs factures de référence (SSR), essayer de trouver la bonne prestation + DROP TABLE IF EXISTS w_cti_encours_sejour_deja_cpc; + CREATE TEMP TABLE w_cti_encours_sejour_deja_cpc AS + SELECT p_factures.no_sejour, + prestation_id, + MAX(t_prestations.code) AS prestation_code, + MAX(rubrique_facturation_id) AS rubrique_facturation_id, + MAX(p_factures_lignes_c.date_debut) AS date_debut, + (MAX(Array[p_factures_lignes_c.date_debut::text, + to_char(prix_unitaire,'FM000000000.00')]))[2]::numeric AS prix_unitaire + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_factures_lignes_c.montant_facture <> 0 AND + p_factures.no_sejour IN (SELECT no_sejour FROM w_cti_encours_factures) AND + p_factures.no_sejour IN (SELECT no_sejour FROM activite.p_factures WHERE no_facture = no_facture_reference GROUP BY 1 HAVING count(*) > 1) AND + (t_prestations.code IN ('CPC', 'SHO', 'CP') OR + t_prestations.type_valorisation_non_facture IN ('CP') + ) + GROUP BY 1,2 + HAVING SUM(nb_prestation) > 0 + ; + + DELETE FROM w_cti_encours_sejour_deja_cpc + USING + ( + SELECT no_sejour, MAX(date_debut) AS date_debut + FROM w_cti_encours_sejour_deja_cpc + GROUP BY 1 + HAVING count(DISTINCT date_debut) > 1 + ) subview + WHERE w_cti_encours_sejour_deja_cpc.no_sejour = subview.no_sejour AND + w_cti_encours_sejour_deja_cpc.date_debut < subview.date_debut + ; + + -- Pas de CPC déjà facturées, prendre les moyennes + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, lieu_id, nb_rubrique, nb_prestation, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, montant_encours, regle_coefficient, regle_texte) + SELECT + w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'CPC' AS type_ligne, p_mouvements_sejour.date, p_mouvements_sejour.date, p_mouvements_sejour.lieu_id, 1, 1, coefficient, 1, + prestation_id, rubrique_facturation_id, rubrique_facturation_id, + prix_unitaire, round(prix_unitaire * coefficient,2), coefficient, + regle_prestation_texte + FROM w_cti_encours_factures + JOIN activite.p_mouvements_sejour ON w_cti_encours_factures.no_sejour = p_mouvements_sejour.no_sejour + JOIN activite.t_lieux ON p_mouvements_sejour.lieu_id = t_lieux.oid + JOIN activite.p_factures ON w_cti_encours_factures.no_facture = p_factures.no_facture + JOIN w_cti_encours_calcul_parametres_services_prestations ON t_lieux.service_facturation_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_lieux.unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation <> ('*SAISIE') AND + (w_cti_encours_calcul_parametres_services_prestations.prestation_code IN ('CPC', 'SHO', 'CP') OR + w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation IN ('CP') + ) + LEFT JOIN w_cti_factures_lignes_non_facturees_c ON w_cti_factures_lignes_non_facturees_c.no_facture = w_cti_encours_factures.no_facture AND + ( + w_cti_factures_lignes_non_facturees_c.prestation_code IN ('CPC', 'SHO', 'CP', 'FORAMB') OR + w_cti_factures_lignes_non_facturees_c.prestation_code = w_cti_encours_calcul_parametres_services_prestations.prestation_code OR + w_cti_factures_lignes_non_facturees_c.type_valorisation_non_facture IN ('CP') + ) AND + only_jour_sortie <> '1' + WHERE + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_ambulatoires = 1) AND + est_chambre_particuliere = '1' AND + coefficient <> 0 AND + uniquement_prestations_saisies <> '1' AND + (p_mouvements_sejour.date <> w_cti_encours_factures.date_fin OR p_mouvements_sejour.heure_fin > 130000 OR p_mouvements_sejour.nb_ambulatoires = 1) AND + p_mouvements_sejour.date <= w_cti_encours_factures.date_fin AND + (p_factures.code_cp_demandee = '1' OR w_OPTION_ENCOURSVALOCP = '1') AND + nb_sorties_directes = 0 AND + w_cti_factures_lignes_non_facturees_c.no_facture IS NULL AND + COALESCE(rubrique_facturation_id,0) <> 0 AND + COALESCE(prestation_id,0) <> 0 AND + w_cti_encours_factures.no_facture NOT LIKE '%BG' AND + w_cti_encours_factures.no_facture_reference NOT IN (SELECT no_facture_reference FROM w_cti_encours_factures_deja_cpc) AND + w_cti_encours_factures.no_sejour NOT IN (SELECT no_sejour FROM w_cti_encours_sejour_deja_cpc) AND + ( + p_mouvements_sejour.date BETWEEN w_cti_encours_factures.date_debut AND w_cti_encours_factures.date_fin OR + service_facturation_id NOT IN (SELECT oid FROM activite.t_services_facturation WHERE avec_facturation_intermediaire = '1') + ) + + ORDER BY 1,4; + + -- CPC déjà facturées, prendre le dernier PU + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, lieu_id, nb_rubrique, nb_prestation, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, montant_encours, regle_coefficient, regle_texte) + SELECT + w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'CPC' AS type_ligne, p_mouvements_sejour.date, p_mouvements_sejour.date, p_mouvements_sejour.lieu_id, 1, 1, 1::numeric AS coefficient, 1, + prestation_id, rubrique_facturation_id, rubrique_facturation_id, + w_cti_encours_sejour_deja_cpc.prix_unitaire, w_cti_encours_sejour_deja_cpc.prix_unitaire, 1::numeric AS coefficient, + 'Reconduite facturation antérieure ('||w_cti_encours_sejour_deja_cpc.date_debut::text||')' AS regle_prestation_texte + FROM w_cti_encours_factures + JOIN activite.p_mouvements_sejour ON w_cti_encours_factures.no_sejour = p_mouvements_sejour.no_sejour + JOIN activite.t_lieux ON p_mouvements_sejour.lieu_id = t_lieux.oid + JOIN activite.p_factures ON w_cti_encours_factures.no_facture = p_factures.no_facture + JOIN w_cti_encours_sejour_deja_cpc ON w_cti_encours_factures.no_sejour = w_cti_encours_sejour_deja_cpc.no_sejour + LEFT JOIN w_cti_factures_lignes_non_facturees_c ON w_cti_factures_lignes_non_facturees_c.no_facture = w_cti_encours_factures.no_facture AND + ( + w_cti_factures_lignes_non_facturees_c.prestation_code IN ('CPC', 'SHO', 'CP', 'FORAMB') OR + w_cti_factures_lignes_non_facturees_c.prestation_code = w_cti_encours_sejour_deja_cpc.prestation_code OR + w_cti_factures_lignes_non_facturees_c.type_valorisation_non_facture IN ('CP') + ) AND + only_jour_sortie <> '1' + WHERE + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_ambulatoires = 1) AND + est_chambre_particuliere = '1' AND + uniquement_prestations_saisies <> '1' AND + (p_mouvements_sejour.date <> w_cti_encours_factures.date_fin OR p_mouvements_sejour.heure_fin > 130000 OR p_mouvements_sejour.nb_ambulatoires = 1) AND + p_mouvements_sejour.date <= w_cti_encours_factures.date_fin AND + nb_sorties_directes = 0 AND + w_cti_factures_lignes_non_facturees_c.no_facture IS NULL AND + COALESCE(rubrique_facturation_id,0) <> 0 AND + COALESCE(prestation_id,0) <> 0 AND + w_cti_encours_factures.no_facture NOT LIKE '%BG' AND + w_cti_encours_factures.no_facture_reference NOT IN (SELECT no_facture_reference FROM w_cti_encours_factures_deja_cpc) AND + ( + p_mouvements_sejour.date BETWEEN w_cti_encours_factures.date_debut AND w_cti_encours_factures.date_fin OR + service_facturation_id NOT IN (SELECT oid FROM activite.t_services_facturation WHERE avec_facturation_intermediaire = '1') + ) + ORDER BY 1,4; + + -- SRC, REA, STF + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'SRC, REA, STF'; + + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, nb_rubrique, nb_prestation, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, montant_encours, lieu_id, regle_coefficient, regle_texte) + SELECT w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'SSS' AS type_ligne, p_mouvements_sejour.date, p_mouvements_sejour.date, 1, 1, coefficient, 1, + prestation_id, rubrique_facturation_id, rubrique_facturation_id, + prix_unitaire, round(prix_unitaire * coefficient * coefficient_mco), (MAX(Array[p_mouvements_sejour.heure_fin,p_mouvements_sejour.lieu_id]))[2], + coefficient, regle_prestation_texte + FROM w_cti_encours_factures + JOIN activite.p_mouvements_sejour ON w_cti_encours_factures.no_sejour = p_mouvements_sejour.no_sejour + JOIN activite.t_lieux ON p_mouvements_sejour.lieu_id = t_lieux.oid + JOIN w_cti_encours_calcul_parametres_services_prestations ON t_lieux.service_facturation_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_lieux.unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + prestation_code IN ('SRC', 'REA', 'STF') + WHERE + + type_t2a = '1' AND + uniquement_prestations_saisies <> '1' AND + w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation <> ('*SAISIE') AND + coefficient > 0 AND + COALESCE(rubrique_facturation_id,0) <> 0 AND + COALESCE(prestation_id,0) <> 0 AND + p_mouvements_sejour.date <= w_cti_encours_factures.date_fin AND + (w_cti_encours_factures.est_budget_global <> '1' OR w_cti_encours_factures.no_facture LIKE '%BG') AND + NOT ( + w_OPTION_ENCOURSMCOSUP = '1' AND + w_cti_encours_factures.ghs_id > 0 + ) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17 + HAVING + (MAX(p_mouvements_sejour.heure_fin) = 240000 OR MIN(p_mouvements_sejour.heure_debut) > 0 AND MAX(p_mouvements_sejour.heure_fin) < 240000 OR + MAX(nb_sorties_directes) = 1 AND MAX(mode_sortie) IN ('9')) + ; + -- IGM, IGP, IMD, IMI, IPD + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'AMD, AMF, APD, IGM, IGP, IMD, IMI, IPD, IVG'; + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, nb_rubrique, nb_prestation, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, montant_encours, lieu_id, regle_coefficient,regle_texte) + SELECT w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'IVG' AS type_ligne, p_mouvements_sejour.date, p_mouvements_sejour.date, 1, 1, coefficient, 1, + prestation_id, rubrique_facturation_id, rubrique_facturation_id, + prix_unitaire, round(prix_unitaire * coefficient * coefficient_mco), p_mouvements_sejour.lieu_id, + coefficient, regle_prestation_texte + FROM w_cti_encours_factures + JOIN activite.p_mouvements_sejour ON w_cti_encours_factures.no_sejour = p_mouvements_sejour.no_sejour + JOIN activite.t_lieux ON p_mouvements_sejour.lieu_id = t_lieux.oid + JOIN w_cti_encours_calcul_parametres_services_prestations ON t_lieux.service_facturation_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_lieux.unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + prestation_code IN ('AMD', 'AMF', 'APD', 'IGM', 'IGP', 'IMD', 'IMI', 'IPD', 'IVG') + LEFT JOIN w_cti_factures_lignes_non_facturees_c ON w_cti_factures_lignes_non_facturees_c.no_sejour = w_cti_encours_factures.no_sejour AND + w_cti_factures_lignes_non_facturees_c.prestation_code IN ('AMD', 'AMF', 'APD', 'IGM', 'IGP', 'IMD', 'IMI', 'IPD', 'IVG') + WHERE + ( + p_mouvements_sejour.nb_externes = 1 OR + p_mouvements_sejour.nb_ambulatoires = 1 AND type_t2a <> '1' OR + w_cti_encours_factures.particularites_encours_service ILIKE '%IVG%' OR + w_cti_encours_factures.ghm_id IN (SELECT oid FROM base.t_ghm WHERE code IN ('14Z08Z')) + ) AND + uniquement_prestations_saisies <> '1' AND + w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation <> ('*SAISIE') AND + (p_mouvements_sejour.nb_externes = 1 OR p_mouvements_sejour.nb_ambulatoires = 1 OR p_mouvements_sejour.nb_entrees_directes = 1) AND + coefficient > 0 AND + w_cti_factures_lignes_non_facturees_c.no_facture IS NULL AND + (w_cti_encours_factures.est_budget_global <> '1' OR w_cti_encours_factures.no_facture LIKE '%BG') AND + COALESCE(rubrique_facturation_id,0) <> 0 AND + COALESCE(prestation_id,0) <> 0; + -- NN1, NN2, NN3 + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'NN1, NN2, NN3'; + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, nb_rubrique, nb_prestation, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, montant_encours, lieu_id, regle_coefficient, regle_texte) + SELECT w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'NNX' AS type_ligne, p_mouvements_sejour.date, p_mouvements_sejour.date, 1, 1, coefficient, 1, + prestation_id, rubrique_facturation_id, rubrique_facturation_id, + (MAX(ARRAY[p_mouvements_sejour.heure_fin,prix_unitaire]))[2], + (MAX(ARRAY[p_mouvements_sejour.heure_fin,round(prix_unitaire * coefficient * coefficient_mco)]))[2], + (MAX(ARRAY[p_mouvements_sejour.heure_fin,p_mouvements_sejour.lieu_id]))[2], + (MAX(ARRAY[p_mouvements_sejour.heure_fin,coefficient]))[2], + (MAX(ARRAY[to_char(p_mouvements_sejour.heure_fin,'000000'),regle_prestation_texte]))[2] + FROM w_cti_encours_factures + JOIN activite.p_mouvements_sejour ON w_cti_encours_factures.no_sejour = p_mouvements_sejour.no_sejour AND + p_mouvements_sejour.date BETWEEN w_cti_encours_factures.date_debut AND w_cti_encours_factures.date_fin + JOIN activite.t_lieux ON p_mouvements_sejour.lieu_id = t_lieux.oid + JOIN w_cti_encours_calcul_parametres_services_prestations ON t_lieux.service_facturation_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_lieux.unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + prestation_code IN ('NN1', 'NN2', 'NN3') + LEFT JOIN w_cti_factures_lignes_non_facturees_c ON w_cti_factures_lignes_non_facturees_c.no_facture = w_cti_encours_factures.no_facture AND + w_cti_factures_lignes_non_facturees_c.prestation_code LIKE 'NN%' + WHERE + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.heure_debut > 0 AND p_mouvements_sejour.heure_fin < 240000) AND + type_t2a = '1' AND + uniquement_prestations_saisies <> '1' AND + w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation <> ('*SAISIE') AND + coefficient > 0 AND + w_cti_factures_lignes_non_facturees_c.no_facture IS NULL AND + COALESCE(rubrique_facturation_id,0) <> 0 AND + COALESCE(prestation_id,0) <> 0 AND + (w_cti_encours_factures.est_budget_global <> '1' OR w_cti_encours_factures.no_facture LIKE '%BG') + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12; + -- D09 D11 D13 + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Dxx'; + -- Seances de dialyse dans les actes non facturés + DROP TABLE IF EXISTS w_actes_seance_jvj; + CREATE TEMP TABLE w_actes_seance_jvj AS + SELECT p_factures.no_sejour, p_factures_lignes_non_facturees_h.date_debut AS date_seance + FROM activite.p_factures_lignes_non_facturees_h + JOIN activite.p_factures ON p_factures_lignes_non_facturees_h.no_facture = p_factures.no_facture + JOIN base.t_actes ON acte_id = t_actes.oid + WHERE t_actes.code LIKE 'JVJ%' AND t_actes.code NOT LIKE 'JVJF002%' + GROUP BY 1,2 + ; + -- Seances deja facturées + DROP TABLE IF EXISTS w_cti_factures_seances_deja_facturees; + CREATE TEMP TABLE w_cti_factures_seances_deja_facturees AS + SELECT p_sejours.no_sejour, p_factures_lignes_c.date_debut + FROM activite.p_factures + JOIN activite.p_sejours ON p_sejours.no_sejour = p_factures.no_sejour + JOIN activite.p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE type_sejour = '5' AND + montant_facture <> 0 AND + t_prestations.code IN ('D09','D11','D13', 'D13', 'D15', 'D16', 'DTP') AND + p_sejours.no_sejour IN (SElECT no_sejour FROM activite.p_factures WHERE code_facture = '0') + GROUP BY 1,2 + HAVING SUM(montant_facture) > 0 + ; + + CREATE INDEX i_w_cti_factures_seances_deja_facturees_1 + ON w_cti_factures_seances_deja_facturees + USING btree (no_sejour) + ; + + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, nb_rubrique, nb_prestation, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, montant_encours, lieu_id, regle_coefficient, regle_texte) + SELECT w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'DIA' AS type_ligne, p_mouvements_sejour.date, p_mouvements_sejour.date, 1, 1, coefficient, 1, + prestation_id, rubrique_facturation_id, rubrique_facturation_id, + prix_unitaire, round(prix_unitaire * coefficient * coefficient_mco), p_mouvements_sejour.lieu_id, + coefficient, regle_prestation_texte + FROM w_cti_encours_factures + JOIN activite.p_mouvements_sejour ON w_cti_encours_factures.no_sejour = p_mouvements_sejour.no_sejour AND p_mouvements_sejour.date BETWEEN w_cti_encours_factures.date_debut AND w_cti_encours_factures.date_fin + JOIN activite.t_lieux ON p_mouvements_sejour.lieu_id = t_lieux.oid + LEFT JOIN w_actes_seance_jvj ON w_actes_seance_jvj.no_sejour = w_cti_encours_factures.no_sejour AND + w_actes_seance_jvj.date_seance = p_mouvements_sejour.date + JOIN w_cti_encours_calcul_parametres_services_prestations ON t_lieux.service_facturation_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_lieux.unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + prestation_code IN ('D09','D11','D13', 'D13', 'D15', 'D16', 'DTP') + LEFT JOIN w_cti_factures_lignes_non_facturees_c ON w_cti_factures_lignes_non_facturees_c.no_facture = w_cti_encours_factures.no_facture AND + w_cti_factures_lignes_non_facturees_c.prestation_code = w_cti_encours_calcul_parametres_services_prestations.prestation_code + LEFT JOIN w_cti_factures_seances_deja_facturees ON + p_mouvements_sejour.no_sejour = w_cti_factures_seances_deja_facturees.no_sejour AND + p_mouvements_sejour.date = w_cti_factures_seances_deja_facturees.date_debut + + WHERE + (p_mouvements_sejour.nb_seances > 0) AND + coefficient > 0 AND + uniquement_prestations_saisies <> '1' AND + w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation <> ('*SAISIE') AND + w_cti_factures_lignes_non_facturees_c.no_facture IS NULL AND + w_cti_factures_seances_deja_facturees.no_sejour IS NULL AND + COALESCE(rubrique_facturation_id,0) <> 0 AND + COALESCE(prestation_id,0) <> 0 AND + (w_actes_seance_jvj.no_sejour IS NOT NULL OR w_cti_encours_factures.type_sejour = '5') AND + (w_cti_encours_factures.est_budget_global <> '1' OR w_cti_encours_factures.no_facture LIKE '%BG'); + -- FJA + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'FJA'; + + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, nb_rubrique, nb_prestation, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, montant_encours, lieu_id, regle_texte) + SELECT + w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'FJA' AS type_ligne, p_mouvements_sejour.date, p_mouvements_sejour.date, 1, 1, 1, 1, + prestation_id, rubrique_facturation_id, rubrique_facturation_id, + prix_unitaire, prix_unitaire, p_mouvements_sejour.lieu_id, 'Forfait jour de sortie (Sauf maternité) ' + FROM w_cti_encours_factures + JOIN activite.p_mouvements_sejour ON w_cti_encours_factures.no_sejour = p_mouvements_sejour.no_sejour + JOIN activite.t_lieux ON p_mouvements_sejour.lieu_id = t_lieux.oid + JOIN w_cti_encours_calcul_parametres_services_prestations ON t_lieux.service_facturation_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_lieux.unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + prestation_code IN ('FJA') + LEFT JOIN w_cti_factures_lignes_non_facturees_c ON w_cti_factures_lignes_non_facturees_c.no_facture = w_cti_encours_factures.no_facture AND + w_cti_factures_lignes_non_facturees_c.prestation_code = w_cti_encours_calcul_parametres_services_prestations.prestation_code + WHERE nb_sorties_directes = 1 AND + mode_sortie IN ('6', '8') AND + uniquement_prestations_saisies <> '1' AND + base.cti_division(w_cti_encours_calcul_parametres_services_prestations.nombre,w_cti_encours_calcul_parametres_services_prestations.nb_journees)*100 >= 1 AND + w_cti_encours_factures.particularites_encours_service NOT ILIKE '%MAT%' AND + w_cti_encours_factures.particularites_encours_service NOT ILIKE '%PASDEFJA%' AND + prix_unitaire > 0 AND + w_cti_encours_factures.duree_sejour > 0 AND + w_cti_factures_lignes_non_facturees_c.no_facture IS NULL AND + COALESCE(rubrique_facturation_id,0) <> 0 AND + COALESCE(prestation_id,0) <> 0 AND + w_cti_encours_factures.no_facture NOT LIKE '%BG' AND + (p_mouvements_sejour.date BETWEEN w_cti_encours_factures.date_debut AND w_cti_encours_factures.date_fin OR + service_facturation_id NOT IN (SELECT oid FROM activite.t_services_facturation WHERE avec_facturation_intermediaire = '1') + ); + -- ATU + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'ATU'; + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, nb_rubrique, nb_prestation, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, montant_encours, lieu_id, regle_coefficient) + SELECT w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'ATU' AS type_ligne, p_mouvements_sejour.date, p_mouvements_sejour.date, 1, 1, coefficient, 1, + prestation_id, rubrique_facturation_id, rubrique_facturation_id, + prix_unitaire, round(prix_unitaire * coefficient), p_mouvements_sejour.lieu_id, + coefficient + FROM w_cti_encours_factures + JOIN activite.p_mouvements_sejour ON w_cti_encours_factures.no_sejour = p_mouvements_sejour.no_sejour + JOIN activite.t_lieux ON p_mouvements_sejour.lieu_id = t_lieux.oid + JOIN w_cti_encours_calcul_parametres_services_prestations ON t_lieux.service_facturation_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_lieux.unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + ( + prestation_code = 'ATU' AND p_mouvements_sejour.date <= '20211231' OR + prestation_code = 'FPU' AND p_mouvements_sejour.date >= '20220101' + ) + LEFT JOIN w_cti_factures_lignes_non_facturees_c ON w_cti_factures_lignes_non_facturees_c.no_sejour = w_cti_encours_factures.no_sejour AND + w_cti_factures_lignes_non_facturees_c.prestation_code IN ('ATU','FPU') + WHERE + p_mouvements_sejour.nb_externes = 1 AND + p_mouvements_sejour.nb_externes = 1 AND + uniquement_prestations_saisies <> '1' AND + w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation <> ('*SAISIE') AND + coefficient > 0 AND + w_cti_factures_lignes_non_facturees_c.no_facture IS NULL AND + (w_cti_encours_factures.est_budget_global <> '1' OR w_cti_encours_factures.no_facture LIKE '%BG') AND + COALESCE(rubrique_facturation_id,0) <> 0 AND + COALESCE(prestation_id,0) <> 0; + + + -- Identification des SE pour ne pas générer de GHS + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'SE1, SE2, SE3, SE4'; + INSERT INTO w_cti_encours_actes_se1234 + SELECT t_actes.oid, t_actes.code, + CASE + WHEN t_actes.code IN ('FEJF003') + THEN 'SE4' + WHEN t_actes.code IN ('AGLB001', 'AHLB003', 'AHLB015', 'AHLB016', 'AHLH014', 'GGHB002', 'GGJB001', 'GGJB002', 'HPJB001', 'JGHB001', 'JGHB002', 'JGHD001', 'JGHJ001', 'JGHJ002', 'JPHJ001', 'JPHJ002') + THEN 'SE3' + WHEN t_actes.code IN ('AELB002', 'AHHA001', 'AHHA002', 'BAGA001', 'BBGA001', 'BDCA003', 'BEJB001', 'BEJB002', 'BELB001', 'BEPA001', 'BGHA001', 'BGJB001', 'BGLB001', 'BGLB002', 'BKLB001', 'CAEA002', 'CAFA006', 'CBLD001', 'CBLD003', 'EBGA001', 'EBHA001', 'EBNE002', 'EGFA007', 'FCFA012', 'FCFA028', 'GBJD002', 'JAHB001', 'JAHJ002', 'JAHJ006', 'JAKD001', 'JCKD001', 'JDLF001', 'JHSB001', 'LHNH001', 'MDGB001', 'MHDB001', 'NJAB001', 'NJMB001', 'PAGB002', 'PAGH001', 'PDFA001', 'QAGA004', 'QZFA001', 'QZFA002', 'QZFA005', 'QZFA007', 'QZGA003', 'QZGA006') + THEN 'SE2' + WHEN t_actes.code IN ('BBCE001', 'DZQJ001', 'DZQJ008', 'DZQJ010', 'DZQJ011', 'GBQA002', 'GDQE004', 'GEQE002', 'GEQE004', 'GEQE006', 'GEQE007', 'GEQE009', 'GEQE010', 'GEQH002', 'HEGE001', 'HEGE002', 'HEQE001', 'HEQE002', 'HEQE003', 'HEQE005', 'HGNE001', 'HGQE002', 'HJQE001', 'HMQH007', 'JCGE003', 'JCGE004', 'JDQE001', 'JDQE002', 'JDQE003', 'JEGE001', 'JEHE002') + THEN 'SE1' + ELSE '' + END AS prestation_code + FROM base.t_actes + WHERE t_actes.code IN ('FEJF003', + 'AGLB001', 'AHLB003', 'AHLB015', 'AHLB016', 'AHLH014', 'GGHB002', 'GGJB001', 'GGJB002', 'HPJB001', 'JGHB001', 'JGHB002', 'JGHD001', 'JGHJ001', 'JGHJ002', 'JPHJ001', 'JPHJ002', + 'AELB002', 'AHHA001', 'AHHA002', 'BAGA001', 'BBGA001', 'BDCA003', 'BEJB001', 'BEJB002', 'BELB001', 'BEPA001', 'BGHA001', 'BGJB001', 'BGLB001', 'BGLB002', 'BKLB001', 'CAEA002', 'CAFA006', 'CBLD001', 'CBLD003', 'EBGA001', 'EBHA001', 'EBNE002', 'EGFA007', 'FCFA012', 'FCFA028', 'GBJD002', 'JAHB001', 'JAHJ002', 'JAHJ006', 'JAKD001', 'JCKD001', 'JDLF001', 'JHSB001', 'LHNH001', 'MDGB001', 'MHDB001', 'NJAB001', 'NJMB001', 'PAGB002', 'PAGH001', 'PDFA001', 'QAGA004', 'QZFA001', 'QZFA002', 'QZFA005', 'QZFA007', 'QZGA003', 'QZGA006', + 'BBCE001', 'DZQJ001', 'DZQJ008', 'DZQJ010', 'DZQJ011', 'GBQA002', 'GDQE004', 'GEQE002', 'GEQE004', 'GEQE006', 'GEQE007', 'GEQE009', 'GEQE010', 'GEQH002', 'HEGE001', 'HEGE002', 'HEQE001', 'HEQE002', 'HEQE003', 'HEQE005', 'HGNE001', 'HGQE002', 'HJQE001', 'HMQH007', 'JCGE003', 'JCGE004', 'JDQE001', 'JDQE002', 'JDQE003', 'JEGE001', 'JEHE002' + ) + ; + INSERT INTO w_cti_encours_se1234 + SELECT p_factures_lignes_h.no_facture, + (MAX(ARRAY[w_cti_encours_actes_se1234.prestation_code,w_cti_encours_actes_se1234.code]))[2] AS acte_se, + (MAX(ARRAY[w_cti_encours_actes_se1234.prestation_code,w_cti_encours_actes_se1234.code]))[1] AS type_se + FROM activite.p_factures_lignes_h + JOIN w_cti_encours_factures ON p_factures_lignes_h.no_facture = w_cti_encours_factures.no_facture AND type_sejour IN ('3') + JOIN w_cti_encours_actes_se1234 ON acte_id = w_cti_encours_actes_se1234.oid + LEFT JOIN w_cti_factures_lignes_non_facturees_c ON w_cti_factures_lignes_non_facturees_c.no_facture = p_factures_lignes_h.no_facture AND + w_cti_factures_lignes_non_facturees_c.prestation_code IN ('SE1','SE2','SE3','SE4','SE5','SE6','SE7') + WHERE w_cti_factures_lignes_non_facturees_c.no_facture IS NULL + GROUP BY 1; + INSERT INTO w_cti_encours_se1234 + SELECT p_factures_lignes_non_facturees_h.no_facture, + (MAX(ARRAY[w_cti_encours_actes_se1234.prestation_code,w_cti_encours_actes_se1234.code]))[2] AS acte_se, + (MAX(ARRAY[w_cti_encours_actes_se1234.prestation_code,w_cti_encours_actes_se1234.code]))[1] AS type_se + FROM activite.p_factures_lignes_non_facturees_h + JOIN w_cti_encours_factures ON p_factures_lignes_non_facturees_h.no_facture = w_cti_encours_factures.no_facture AND type_sejour IN ('3') + JOIN w_cti_encours_actes_se1234 ON acte_id = w_cti_encours_actes_se1234.oid + LEFT JOIN w_cti_encours_se1234 ON p_factures_lignes_non_facturees_h.no_facture = w_cti_encours_se1234.no_facture + LEFT JOIN w_cti_factures_lignes_non_facturees_c ON w_cti_factures_lignes_non_facturees_c.no_facture = p_factures_lignes_non_facturees_h.no_facture AND + w_cti_factures_lignes_non_facturees_c.prestation_code IN ('SE1','SE2','SE3','SE4','SE5','SE6','SE7') + WHERE w_cti_encours_se1234.no_facture IS NULL AND w_cti_factures_lignes_non_facturees_c.no_facture IS NULL + GROUP BY 1; + + + + + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, nb_rubrique, nb_prestation, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, montant_encours, lieu_id, regle_texte) + SELECT + w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'SEH' AS type_ligne, p_mouvements_sejour.date, p_mouvements_sejour.date, 1, 1, 1, 1, + prestation_id, rubrique_facturation_id, rubrique_facturation_id, + prix_unitaire, prix_unitaire, p_mouvements_sejour.lieu_id, + 'Prestation générée par l''acte : '||acte_se AS regle_texte + FROM w_cti_encours_factures + JOIN activite.p_mouvements_sejour ON w_cti_encours_factures.no_sejour = p_mouvements_sejour.no_sejour AND nb_externes > 0 + JOIN activite.t_lieux ON p_mouvements_sejour.lieu_id = t_lieux.oid + JOIN w_cti_encours_se1234 ON w_cti_encours_factures.no_facture = w_cti_encours_se1234.no_facture + JOIN w_cti_encours_calcul_parametres_services_prestations ON t_lieux.service_facturation_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_lieux.unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id + WHERE + prix_unitaire > 0 AND + uniquement_prestations_saisies <> '1' AND + w_cti_encours_se1234.type_se = prestation_code AND + COALESCE(rubrique_facturation_id,0) <> 0 AND + COALESCE(prestation_id,0) <> 0 AND + (w_cti_encours_factures.est_budget_global <> '1' OR w_cti_encours_factures.no_facture LIKE '%BG'); + + -- Prestations valorisées selon prix unitaire moyen par jour de présence dans service + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Prestations selon PU moyen par jour'; + + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, lieu_id, nb_rubrique, nb_prestation, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, montant_encours, regle_texte) + SELECT + w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'PRESTAM' AS type_ligne, p_mouvements_sejour.date, p_mouvements_sejour.date, p_mouvements_sejour.lieu_id, 1, 1, 1, 1, + prestation_id, rubrique_facturation_id, rubrique_facturation_id, + prix_unitaire, round(prix_unitaire,2), regle_prestation_texte + FROM w_cti_encours_factures + JOIN activite.p_mouvements_sejour ON w_cti_encours_factures.no_sejour = p_mouvements_sejour.no_sejour + JOIN activite.t_lieux ON p_mouvements_sejour.lieu_id = t_lieux.oid + JOIN activite.p_factures ON w_cti_encours_factures.no_facture = p_factures.no_facture + JOIN w_cti_encours_calcul_parametres_services_prestations ON t_lieux.service_facturation_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_lieux.unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation = '*AVGJOUSER' + LEFT JOIN w_cti_factures_lignes_non_facturees_c ON w_cti_factures_lignes_non_facturees_c.no_facture = w_cti_encours_factures.no_facture AND + w_cti_factures_lignes_non_facturees_c.prestation_code = w_cti_encours_calcul_parametres_services_prestations.prestation_code + WHERE + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.heure_debut > 0 AND p_mouvements_sejour.heure_fin < 240000) AND + w_cti_factures_lignes_non_facturees_c.no_facture IS NULL AND + w_cti_encours_calcul_parametres_services_prestations.prix_unitaire > 0 AND + COALESCE(rubrique_facturation_id,0) <> 0 AND + COALESCE(prestation_id,0) <> 0 AND + uniquement_prestations_saisies <> '1' AND + (w_cti_encours_factures.est_budget_global <> '1' OR w_cti_encours_factures.no_facture LIKE '%BG') AND + (p_mouvements_sejour.date BETWEEN w_cti_encours_factures.date_debut AND w_cti_encours_factures.date_fin OR + service_facturation_id NOT IN (SELECT oid FROM activite.t_services_facturation WHERE avec_facturation_intermediaire = '1') + ) + ORDER BY 1,4; + -- Prestations saisies + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Prestations saisies'; + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, nb_rubrique, nb_prestation, coefficient, coefficient_mco, + prestation_id, lpp_id, ucd_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, montant_encours, regle_texte) + SELECT w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'SAISIE' AS type_ligne, p_factures_lignes_non_facturees_c.date_debut, p_factures_lignes_non_facturees_c.date_fin, nb_rubrique, nb_rubrique, coefficient, + COALESCE(p_factures_lignes_non_facturees_c.coefficient_mco,1) AS coefficient_mco, + prestation_id, COALESCE(p_factures_lignes_non_facturees_c.lpp_id,0) AS lpp_id, COALESCE(p_factures_lignes_non_facturees_c.ucd_id,0) AS ucd_id, rubrique_facturation_id, rubrique_facturation_id, + prix_unitaire, round(nb_rubrique * coefficient * COALESCE(p_factures_lignes_non_facturees_c.coefficient_mco,1) * prix_unitaire * CASE WHEN t_prestations.code IN ('PJ', 'GMT') AND taux_1_bg BETWEEN 1 AND 99 THEN 100-taux_1_bg ELSE 100 END / 100,2), 'Prestation saisie' + FROM w_cti_encours_factures + JOIN activite.p_factures_lignes_non_facturees_c ON w_cti_encours_factures.no_facture = p_factures_lignes_non_facturees_c.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + LEFT JOIN + ( + SELECT p_factures.no_sejour, MAX(taux_1) AS taux_1_bg + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN w_cti_encours_factures ON p_factures.no_sejour = w_cti_encours_factures.no_sejour + WHERE p_factures.no_facture LIKE '%BG' AND t_prestations.code = 'GHS' AND taux_1 > 0 + GROUP BY 1 + ) subview_fac_bg ON w_cti_encours_factures.no_sejour = subview_fac_bg.no_sejour + WHERE + ( + t_prestations.code NOT IN ('GHS', 'EXH', 'SRC', 'REA', 'STF') + OR w_OPTION_ENCOURSMCOSUP = '1' + AND w_cti_encours_factures.ghs_id > 0 + AND t_prestations.code IN ('SRC', 'REA', 'STF')) + AND ( + t_prestations.code NOT IN ('GMT', 'PJ','PII') + OR t_prestations.code IN ('PII') AND est_budget_global <> '1' + OR t_prestations.code IN ('GMT', 'PJ') AND type_t2a <> '1' + OR t_prestations.code IN ('GMT', 'PJ','PII') + AND est_budget_global = '1' + AND NOT EXISTS ( + SELECT no_sejour + FROM w_cti_encours_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE + t_prestations.code = 'GHS' + AND w_cti_encours_factures.no_sejour = w_cti_encours_factures_lignes_c.no_sejour + ) + AND taux_1_bg IS DISTINCT FROM 100 + OR t_prestations.code IN ('PII') + AND est_budget_global = '1' + AND w_cti_encours_factures.no_facture LIKE '%BG' + ) + ; + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, nb_rubrique, nb_prestation, coefficient, coefficient_mco, + prestation_id, lpp_id, ucd_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, montant_encours) + SELECT w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'SAISIE' AS type_ligne, p_factures_lignes_c.date_debut, p_factures_lignes_c.date_fin, nb_rubrique, nb_rubrique, coefficient, 1, + prestation_id, COALESCE(p_factures_lignes_c.lpp_id,0) AS lpp_id, COALESCE(p_factures_lignes_c.ucd_id,0) AS ucd_id, rubrique_facturation_id, rubrique_facturation_id, + prix_unitaire, montant_facture + FROM w_cti_encours_factures + JOIN activite.p_factures_lignes_c ON w_cti_encours_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE t_prestations.code NOT IN ('GHS', 'EXH', 'SRC', 'REA', 'STF') AND + montant_facture <> 0 AND + w_cti_encours_factures.date_fin <= w_date_traitement; + + -- En budget global, supprimer en cours GHS si 100% PJ facturé sur mutuelles ou patient ou tp1 + DELETE FROM w_cti_encours_factures_lignes_c + USING + ( + SELECT no_sejour, + MAX(no_facture_bg) AS no_facture_bg, + MAX(taux_mut) AS taux_mut + FROM + ( + SELECT p_factures.no_sejour, + NULL::text AS no_facture_bg, + MAX(taux_0+CASE WHEN montant_facture_1 <> 0 THEN taux_1 ELSE 0 END+taux_2) AS taux_mut + FROM activite.p_factures + JOIN activite.p_sejours on p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.t_prestations on prestation_id = t_prestations.oid + WHERE est_budget_global = '1' and t_prestations.code IN ('PJ') and + p_factures.no_facture NOT LIKE '%BG' AND + code_facture <> '0' AND + ( + montant_facture_0 <> 0 OR + montant_facture_1 <> 0 OR + montant_facture_2 <> 0 + ) + GROUP BY 1 + HAVING MAX(taux_0+CASE WHEN montant_facture_1 <> 0 THEN taux_1 ELSE 0 END+taux_2) = 100 AND + SUM(montant_facture_0+montant_facture_1+montant_facture_2) <> 0 + UNION + SELECT p_factures.no_sejour, + MAX(p_factures.no_facture) AS no_facture_bg, + 0 AS taux_mut + FROM activite.p_factures + JOIN activite.p_sejours on p_factures.no_sejour = p_sejours.no_sejour + JOIN w_cti_encours_factures_lignes_c ON p_factures.no_facture = w_cti_encours_factures_lignes_c.no_facture + JOIN activite.t_prestations on prestation_id = t_prestations.oid + WHERE est_budget_global = '1' and t_prestations.code IN ('GHS') and + p_factures.no_facture LIKE '%BG' AND + code_facture = '0' + GROUP BY 1 + ) subview + GROUP BY 1 + HAVING MAX(no_facture_bg) IS NOT NULL AND + MAX(taux_mut) = 100 + ) subview + WHERE w_cti_encours_factures_lignes_c.no_facture = subview.no_facture_bg + ; + + -- En budget global, diminuer en cours GHS si 20% PJ facturé sur mutuelles ou patient + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours = montant_encours*(100-LEAST(taux_mut,20))/100, + regle_texte = regle_texte || ' - TM facturé déduit' + FROM + ( + SELECT no_sejour, + MAX(no_facture_bg) AS no_facture_bg, + MAX(taux_mut) AS taux_mut + FROM + ( + SELECT p_factures.no_sejour, + NULL::text AS no_facture_bg, + MAX(taux_0+taux_2) AS taux_mut + FROM activite.p_factures + JOIN activite.p_sejours on p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.t_prestations on prestation_id = t_prestations.oid + WHERE est_budget_global = '1' and t_prestations.code IN ('PJ') and + p_factures.no_facture NOT LIKE '%BG' AND + code_facture <> '0' AND + ( + montant_facture_0 <> 0 OR + montant_facture_2 <> 0 + ) + GROUP BY 1 + HAVING MAX(taux_0+taux_2) <> 0 AND + SUM(montant_facture_0+montant_facture_2) <> 0 + UNION + SELECT p_factures.no_sejour, + MAX(p_factures.no_facture) AS no_facture_bg, + 0 AS taux_mut + FROM activite.p_factures + JOIN activite.p_sejours on p_factures.no_sejour = p_sejours.no_sejour + JOIN w_cti_encours_factures_lignes_c ON p_factures.no_facture = w_cti_encours_factures_lignes_c.no_facture + JOIN activite.t_prestations on prestation_id = t_prestations.oid + WHERE est_budget_global = '1' and t_prestations.code IN ('GHS') and + p_factures.no_facture LIKE '%BG' AND + code_facture = '0' + GROUP BY 1 + ) subview + GROUP BY 1 + HAVING MAX(no_facture_bg) IS NOT NULL AND + MAX(taux_mut) <> 0 + ) subview + WHERE w_cti_encours_factures_lignes_c.no_facture = subview.no_facture_bg + ; + + -- En budget global, diminuer en cours GHS de l'encours TM + UPDATE w_cti_encours_factures_lignes_c + SET montant_encours = montant_encours - montant_encours_tm, + regle_texte = regle_texte || ' - TM moyen déduit' + FROM + ( + SELECT w_cti_encours_factures_lignes_c.no_sejour, + SUM(montant_encours) AS montant_encours_tm + FROM w_cti_encours_factures_lignes_c + JOIN activite.p_sejours on w_cti_encours_factures_lignes_c.no_sejour = p_sejours.no_sejour + + JOIN activite.t_prestations on prestation_id = t_prestations.oid + WHERE est_budget_global = '1' and + prestation_id IN (SELECT oid FROM activite.t_prestations WHERE code IN ('PJ')) and + w_cti_encours_factures_lignes_c.no_facture NOT LIKE '%BG' + GROUP BY 1 + HAVING SUM(montant_encours) > 0 + ORDER BY 1 + ) subview + WHERE w_cti_encours_factures_lignes_c. no_sejour = subview.no_sejour AND + prestation_id IN (SELECT oid FROM activite.t_prestations WHERE code IN ('GHS')) AND + w_cti_encours_factures_lignes_c.no_facture LIKE '%BG' + ; + + -- Honoraires medecins salaries + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Honoraires medecins salaries'; + + IF EXISTS (SELECT valeur FROM activite.t_divers WHERE code = 'ENCOURSMEDSAL' AND valeur = '1') THEN + + DROP TABLE IF EXISTS w_cti_encours_prestation_rubrique + ; + CREATE TEMP TABLE w_cti_encours_prestation_rubrique AS + SELECT prestation_id, (MAX(Array[nb,rubrique_facturation_id]))[2]::bigint AS rubrique_facturation_id + FROM + ( + SELECT prestation_id, rubrique_facturation_id, count(*) AS nb + FROM activite.p_factures_lignes_c + WHERE montant_comptabilise > 0 + GROUP BY 1,2 + ORDER BY 1,2 + ) subview + GROUP BY 1 + ; + + UPDATE activite.p_factures_lignes_non_facturees_h + SET prix_unitaire = subview.prix_unitaire + FROM + ( + SELECT acte_id, activite_ccam, modificateur_ccam_1, modificateur_ccam_2, modificateur_ccam_3, modificateur_ccam_4, + base.Cti_division(SUM(montant_facture_1),SUM(nb_prestation*coefficient)) AS prix_unitaire + FROM activite.p_factures_lignes_h + WHERE acte_id IN (SELECT acte_id FROM activite.p_factures_lignes_non_facturees_h WHERE prix_unitaire = 0) AND + montant_facture_1 > 0 + GROUP BY 1,2,3,4,5,6 + ) subview + WHERE p_factures_lignes_non_facturees_h.acte_id = subview.acte_id AND + p_factures_lignes_non_facturees_h.activite_ccam = subview.activite_ccam AND + p_factures_lignes_non_facturees_h.modificateur_ccam_1 = subview.modificateur_ccam_1 AND + p_factures_lignes_non_facturees_h.modificateur_ccam_2 = subview.modificateur_ccam_2 AND + p_factures_lignes_non_facturees_h.modificateur_ccam_3 = subview.modificateur_ccam_3 AND + p_factures_lignes_non_facturees_h.modificateur_ccam_4 = subview.modificateur_ccam_4 AND + p_factures_lignes_non_facturees_h.prix_unitaire = 0 + ; + + UPDATE activite.p_factures_lignes_non_facturees_h + SET prix_unitaire = subview.prix_unitaire + FROM + ( + SELECT acte_id, activite_ccam, + base.Cti_division(SUM(montant_facture_1),SUM(nb_prestation*coefficient)) AS prix_unitaire + FROM activite.p_factures_lignes_h + WHERE acte_id IN (SELECT acte_id FROM activite.p_factures_lignes_non_facturees_h WHERE prix_unitaire = 0) AND + montant_facture_1 > 0 + GROUP BY 1,2 + ) subview + WHERE p_factures_lignes_non_facturees_h.acte_id = subview.acte_id AND + p_factures_lignes_non_facturees_h.activite_ccam = subview.activite_ccam AND + p_factures_lignes_non_facturees_h.prix_unitaire = 0 + + ; + + INSERT INTO w_cti_encours_factures_lignes_c( + no_sejour, no_facture, type_ligne, date_debut, date_fin, nb_rubrique, nb_prestation, coefficient, coefficient_mco, + prestation_id, rubrique_facturation_id, rubrique_comptabilisation_id, + prix_unitaire, montant_encours, regle_texte) + SELECT w_cti_encours_factures.no_sejour, w_cti_encours_factures.no_facture, 'SAISIE' AS type_ligne, p_factures_lignes_non_facturees_h.date_debut, p_factures_lignes_non_facturees_h.date_fin, nb_rubrique, nb_rubrique, coefficient, 1, + p_factures_lignes_non_facturees_h.prestation_id, w_cti_encours_prestation_rubrique.rubrique_facturation_id, w_cti_encours_prestation_rubrique.rubrique_facturation_id, + prix_unitaire, round(nb_rubrique * coefficient * prix_unitaire,2), 'Honoraire salarié saisi' + FROM w_cti_encours_factures + JOIN activite.p_factures_lignes_non_facturees_h ON w_cti_encours_factures.no_facture = p_factures_lignes_non_facturees_h.no_facture + JOIN activite.t_prestations ON p_factures_lignes_non_facturees_h.prestation_id = t_prestations.oid + JOIN activite.t_medecins_administratifs ON medecin_facture_id = t_medecins_administratifs.oid + JOIN w_cti_encours_prestation_rubrique ON p_factures_lignes_non_facturees_h.prestation_id = w_cti_encours_prestation_rubrique.prestation_id + WHERE t_medecins_administratifs.est_medecin_salarie = 1 + ; + + END IF; + + + -- Réaffectation forfait journalier sur GHS + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Deduction FJ du GHS'; + UPDATE w_cti_encours_factures_lignes_c + SET montant_encours = w_cti_encours_factures_lignes_c.montant_encours - mt_fjpas, + regle_texte = regle_texte || ' - FJ Déduit' + FROM + ( + SELECT w_cti_encours_factures.no_facture, + SUM(CASE WHEN t_prestations.code = 'GHS' THEN 1 ELSE 0 END) AS nb_ghs, + MAX(CASE WHEN t_prestations.code = 'GHS' THEN w_cti_encours_factures_lignes_c.CTID ELSE NULL END) AS CTID_ghs, + SUM(CASE WHEN t_prestations.code IN ('FJ','PAS') THEN montant_encours ELSE 0 END) AS mt_fjpas + FROM w_cti_encours_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN w_cti_encours_factures ON + w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture + WHERE w_cti_encours_factures.ghs_id > 0 AND + type_ligne <> 'GHSBB' AND + type_ligne <> 'GHSBBM' AND + w_cti_encours_factures.no_facture NOT LIKE '%BG' AND + t_prestations.code IN ('GHS','FJ', 'PAS') + GROUP BY 1 + HAVING SUM(CASE WHEN t_prestations.code IN ('FJ','PAS') THEN montant_encours ELSE 0 END) <> 0 AND + SUM(CASE WHEN t_prestations.code = 'GHS' THEN 1 ELSE 0 END) = 1 + ) subview + WHERE w_cti_encours_factures_lignes_c.no_facture = subview.no_facture AND + w_cti_encours_factures_lignes_c.CTID = subview.CTID_ghs + ; + + --Déduction du FJ du GHS dans le cas où le PJ facturé et valorisé est à 0 + DROP TABLE IF EXISTS w_montant_fj_par_sejour + ; + CREATE TEMP TABLE w_montant_fj_par_sejour AS + SELECT + p_sejours.no_sejour + ,SUM(CASE WHEN t_prestations.code LIKE 'FJ%' + THEN montant_facture_0 + montant_facture_2 + ELSE 0 + END) as montant_fj + FROM activite.p_sejours + JOIN activite.p_factures ON p_sejours.no_sejour = p_factures.no_sejour + JOIN activite.p_factures_lignes_c on p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.t_prestations on p_factures_lignes_c.prestation_id = t_prestations.oid + WHERE p_factures.no_facture NOT LIKE '%BG' + AND p_sejours.no_sejour IN ( + SELECT DISTINCT(no_sejour) FROM w_cti_encours_factures_lignes_c + ) + GROUP BY p_sejours.no_sejour + HAVING + SUM(CASE WHEN t_prestations.code LIKE 'PJ%' + THEN montant_facture_0 + montant_facture_2 + p_factures_lignes_c.montant_encours + ELSE 0 END) = 0 AND + SUM(CASE WHEN t_prestations.code LIKE 'FJ%' + THEN montant_facture_0 + montant_facture_2 + ELSE 0 END) <> 0 + ; + + UPDATE w_cti_encours_factures_lignes_c + SET + montant_encours = montant_encours - montant_fj + ,regle_texte = regle_texte || ' - FJ facturé déduit' + FROM w_montant_fj_par_sejour + WHERE w_cti_encours_factures_lignes_c.no_sejour = w_montant_fj_par_sejour.no_sejour + AND w_cti_encours_factures_lignes_c.no_facture LIKE '%BG' + AND prestation_id = ( + SELECT oid + FROM activite.t_prestations + WHERE code = 'GHS' + ) + ; + + -- Réaffectation forfait journalier sur GMT + WITH factures_smr_avec_fj AS ( + SELECT + w_cti_encours_factures.no_facture + , MAX(CASE WHEN t_prestations.code = 'GMT' AND type_ligne = 'GMT' THEN prestation_id ELSE 0 END) AS prestation_gmt_id + , SUM(CASE WHEN t_prestations.code = 'FJ' THEN montant_encours ELSE 0 END) AS montant_fj_total + , SUM(CASE WHEN t_prestations.code = 'GMT' AND type_ligne = 'GMT' THEN 1 ELSE 0 END) AS nb_lignes_gmt + FROM w_cti_encours_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN w_cti_encours_factures ON w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture + WHERE w_cti_encours_factures.no_facture NOT LIKE '%BG' + AND t_prestations.code IN ('GMT','FJ') + GROUP BY + w_cti_encours_factures.no_facture + HAVING SUM(CASE WHEN t_prestations.code = 'FJ' THEN montant_encours ELSE 0 END) <> 0 + AND SUM(CASE WHEN t_prestations.code = 'GMT' AND type_ligne = 'GMT' THEN 1 ELSE 0 END) > 0 + ), + montant_fj_ventile_par_jour AS ( + SELECT + no_facture + , prestation_gmt_id + , round(montant_fj_total / nb_lignes_gmt, 2) AS prix_unitaire_fj + FROM factures_smr_avec_fj + ) + UPDATE w_cti_encours_factures_lignes_c + SET + montant_encours = w_cti_encours_factures_lignes_c.montant_encours - prix_unitaire_fj, + regle_texte = regle_texte || ' - FJ Déduit' + FROM montant_fj_ventile_par_jour + WHERE w_cti_encours_factures_lignes_c.no_facture = montant_fj_ventile_par_jour.no_facture + AND w_cti_encours_factures_lignes_c.prestation_id = montant_fj_ventile_par_jour.prestation_gmt_id + AND w_cti_encours_factures_lignes_c.type_ligne = 'GMT' + ; + + -- Pour la valorisation SMR, les lignes de rubrique de facturation TJP ne doivent pas être valorisées + UPDATE w_cti_encours_factures_lignes_c + SET montant_encours = 0 + FROM activite.t_rubriques_facturation + WHERE w_cti_encours_factures_lignes_c.rubrique_facturation_id = t_rubriques_facturation.oid + AND t_rubriques_facturation.code ILIKE 'TJP%' + AND w_cti_encours_factures_lignes_c.montant_encours <> 0 + ; + + -- Factures à ignorer + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Factures ignorees'; + UPDATE w_cti_encours_factures + SET ignorer = '1' + FROM activite.t_calcul_encours + WHERE t_calcul_encours.no_facture = w_cti_encours_factures.no_facture AND + t_calcul_encours.type_ligne = 'FACTURE' AND + t_calcul_encours.ignorer = '1' + ; + + -- Forcage par dossier et prestation + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Lignes forcees ou ignorees'; + -- Paramètres de génération + UPDATE w_cti_encours_calcul_parametres_services_prestations + SET type_ligne = 'PRESTA-' || + CASE + WHEN prestation_code IN ('SRC', 'REA', 'STF', 'AMD', 'AMF', 'IGM', 'IGP', 'APD', 'IMD', 'IMI', 'IPD', 'IVG', 'NN1', 'NN2', 'NN3', 'GHT') THEN 'PC' + WHEN prestation_code IN ('CPC', 'SHO', 'CP') THEN 'PC' + WHEN prestation_code IN ('D09', 'D11', 'D13', 'D13', 'D15', 'D16', 'DTP') THEN 'PC' + WHEN prestation_code IN ('ATU','FPU') THEN 'PC' + WHEN prestation_type_valorisation IN ('CP') THEN 'PC' + WHEN prestation_code IN ('GMT', 'PJ', 'FJ', 'FJA', 'ENT', 'PMS') THEN 'PU' + WHEN prestation_type_valorisation IN ('ENT') THEN 'PU' + WHEN prestation_code IN ('SE1','SE2','SE3','SE4','SE5','SE6','SE7') THEN 'PU' + WHEN prestation_type_valorisation = '*AVGJOUSER' THEN 'PU' + ELSE '' END + ; + + -- Initialisation coefficient et prix unitaire calcule + UPDATE w_cti_encours_factures_lignes_c + SET coefficient_calcule = w_cti_encours_factures_lignes_c.coefficient + FROM activite.t_lieux, + w_cti_encours_calcul_parametres_services_prestations + WHERE + w_cti_encours_factures_lignes_c.lieu_id = t_lieux.oid AND + t_lieux.service_facturation_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_lieux.unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + w_cti_encours_factures_lignes_c.prestation_id = w_cti_encours_calcul_parametres_services_prestations.prestation_id AND + w_cti_encours_factures_lignes_c.rubrique_facturation_id = w_cti_encours_calcul_parametres_services_prestations.rubrique_facturation_id AND + w_cti_encours_calcul_parametres_services_prestations.type_ligne LIKE 'PRESTA%' AND + w_cti_encours_factures_lignes_c.coefficient_calcule = 0 + ; + + UPDATE w_cti_encours_factures_lignes_c + SET prix_unitaire_calcule = w_cti_encours_factures_lignes_c.prix_unitaire + FROM activite.t_lieux, + w_cti_encours_calcul_parametres_services_prestations + WHERE + w_cti_encours_factures_lignes_c.lieu_id = t_lieux.oid AND + t_lieux.service_facturation_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_lieux.unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + w_cti_encours_factures_lignes_c.prestation_id = w_cti_encours_calcul_parametres_services_prestations.prestation_id AND + w_cti_encours_factures_lignes_c.rubrique_facturation_id = w_cti_encours_calcul_parametres_services_prestations.rubrique_facturation_id AND + w_cti_encours_calcul_parametres_services_prestations.type_ligne LIKE 'PRESTA%' AND + w_cti_encours_factures_lignes_c.prix_unitaire_calcule = 0 + ; + + UPDATE w_cti_encours_factures_lignes_c SET + coefficient = CASE WHEN t_calcul_encours.coefficient_is_force = '1' THEN t_calcul_encours.coefficient_force ELSE w_cti_encours_factures_lignes_c.coefficient END, + prix_unitaire = CASE WHEN t_calcul_encours.prix_unitaire_is_force = '1' THEN t_calcul_encours.prix_unitaire_force ELSE w_cti_encours_factures_lignes_c.prix_unitaire END, + ignorer = CASE WHEN t_calcul_encours.ignorer = '1' THEN '1' ELSE '0' END, + regle_texte = CASE + WHEN t_calcul_encours.coefficient_is_force = '1' AND w_cti_encours_factures_lignes_c.regle_texte ILIKE 'COEFF%' THEN 'Coefficient forcé dans paramétrage facture : ' || t_calcul_encours.coefficient_force + WHEN t_calcul_encours.prix_unitaire_is_force = '1' AND w_cti_encours_factures_lignes_c.regle_texte ILIKE 'P.U.%' THEN 'P.U. forcé dans paramétrage facture : ' || t_calcul_encours.prix_unitaire_force + ELSE regle_texte END, + montant_encours = + CASE WHEN t_calcul_encours.ignorer IS DISTINCT from '1' THEN + CASE WHEN t_calcul_encours.coefficient_is_force = '1' THEN t_calcul_encours.coefficient_force ELSE w_cti_encours_factures_lignes_c.coefficient END * + CASE WHEN t_calcul_encours.prix_unitaire_is_force = '1' THEN t_calcul_encours.prix_unitaire_force ELSE w_cti_encours_factures_lignes_c.prix_unitaire END * + nb_prestation + ELSE 0 END + FROM activite.t_lieux, + w_cti_encours_calcul_parametres_services_prestations, + activite.t_calcul_encours + WHERE + w_cti_encours_factures_lignes_c.lieu_id = t_lieux.oid AND + t_lieux.service_facturation_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_lieux.unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + w_cti_encours_factures_lignes_c.prestation_id = w_cti_encours_calcul_parametres_services_prestations.prestation_id AND + w_cti_encours_factures_lignes_c.rubrique_facturation_id = w_cti_encours_calcul_parametres_services_prestations.rubrique_facturation_id AND + w_cti_encours_calcul_parametres_services_prestations.type_ligne LIKE 'PRESTA%' AND + + t_calcul_encours.no_facture = w_cti_encours_factures_lignes_c.no_facture AND + t_calcul_encours.lieu_service_id = t_lieux.service_facturation_id AND + t_calcul_encours.prestation_id = w_cti_encours_factures_lignes_c.prestation_id AND + t_calcul_encours.rubrique_facturation_id = w_cti_encours_factures_lignes_c.rubrique_facturation_id AND + t_calcul_encours.type_ligne LIKE 'PRESEJ%' AND + ( + t_calcul_encours.coefficient_is_force = '1' OR + t_calcul_encours.prix_unitaire_is_force = '1' OR + t_calcul_encours.ignorer = '1' + ) + ; + + -- Ecriture du justificatif + IF w_date_encours = w_date_encours_actuelle THEN + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Ecriture justificatif'; + TRUNCATE activite.p_facture_ligne_valorise_c; + + INSERT INTO activite.p_facture_ligne_valorise_c( + no_facture, facture_id, date_debut, date_fin, lieu_id, nb_rubrique, + nb_prestation, coefficient, coefficient_mco, rubrique_facturation_id, + prestation_id, lpp_id, ucd_id, prix_unitaire, montant_encours, type_ligne_code, mode_calcul_code, + mode_calcul_texte) + + SELECT + w_cti_encours_factures.no_facture, + w_cti_encours_factures.oid, + MIN(w_cti_encours_factures_lignes_c.date_debut), + MAX(w_cti_encours_factures_lignes_c.date_fin), + CASE WHEN t_prestations.code LIKE 'GHS%' THEN w_cti_encours_factures.lieu_sortie_id ELSE w_cti_encours_factures_lignes_c.lieu_id END, + SUM(nb_rubrique), + SUM(nb_prestation), + coefficient, + coefficient_mco, + w_cti_encours_factures_lignes_c.rubrique_facturation_id, + prestation_id, + lpp_id, + ucd_id, + prix_unitaire, + SUM(CASE WHEN w_cti_encours_factures.ignorer IS DISTINCT FROM '1' AND w_cti_encours_factures_lignes_c.ignorer IS DISTINCT FROM '1' THEN montant_encours ELSE 0 END), + w_cti_encours_factures_lignes_c.type_ligne, + CASE + WHEN w_cti_encours_factures.ignorer = '1' AND w_cti_encours_factures_lignes_c.regle_ghs <> '' THEN '00-FORCE' + WHEN w_cti_encours_factures_lignes_c.ignorer = '1' AND w_cti_encours_factures_lignes_c.regle_ghs <> '' THEN '00-FORCE' + ELSE w_cti_encours_factures_lignes_c.regle_ghs END, + CASE + WHEN w_cti_encours_factures.ignorer = '1' THEN 'FACTURE IGNOREE.' + WHEN w_cti_encours_factures_lignes_c.ignorer = '1' THEN 'LIGNE IGNOREE.' + ELSE w_cti_encours_factures_lignes_c.regle_texte END + FROM w_cti_encours_factures_lignes_c + JOIN w_cti_encours_factures ON w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE w_cti_encours_factures_lignes_c.rubrique_facturation_id IS NOT NULL AND + (montant_encours <> 0 OR + w_cti_encours_factures_lignes_c.ignorer = '1' OR + type_ligne = 'GHSECART' + ) + GROUP BY 1,2,5,8,9,10,11,12,13,14,16,17,18 + ORDER BY 1; + + + -- Stockage des paramètres de calcul + INSERT INTO activite.t_calcul_encours + ( + type_ligne, + coefficient_mco, + lieu_service_id, + lieu_unite_fonctionnelle_id, + nb_ambulatoires, + nb_externes, + nb_seances, + nb_journees, + nb_journees_cp, + prestation_id, + prestation_type_valorisation, + rubrique_facturation_id, + nb_prestations_facturees, + prix_unitaire_calcule, + coefficient_calcule + ) + SELECT + w_cti_encours_calcul_parametres_services_prestations.type_ligne, + w_cti_encours_calcul_parametres_services_prestations.coefficient_mco, + w_cti_encours_calcul_parametres_services_prestations.lieu_service_id, + w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id, + w_cti_encours_calcul_parametres_services_prestations.nb_ambulatoires, + w_cti_encours_calcul_parametres_services_prestations.nb_externes, + w_cti_encours_calcul_parametres_services_prestations.nb_seances, + w_cti_encours_calcul_parametres_services_prestations.nb_journees, + w_cti_encours_calcul_parametres_services_prestations.nb_journees_cp, + w_cti_encours_calcul_parametres_services_prestations.prestation_id, + w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation, + w_cti_encours_calcul_parametres_services_prestations.rubrique_facturation_id, + w_cti_encours_calcul_parametres_services_prestations.nombre AS nb_prestations_facturees, + w_cti_encours_calcul_parametres_services_prestations.prix_unitaire_calcule, + w_cti_encours_calcul_parametres_services_prestations.coefficient_calcule + FROM w_cti_encours_calcul_parametres_services_prestations + LEFT JOIN activite.t_calcul_encours ON + t_calcul_encours.lieu_service_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_calcul_encours.lieu_unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + t_calcul_encours.prestation_id = w_cti_encours_calcul_parametres_services_prestations.prestation_id AND + t_calcul_encours.rubrique_facturation_id = w_cti_encours_calcul_parametres_services_prestations.rubrique_facturation_id AND + t_calcul_encours.type_ligne LIKE 'PRESTA%' + WHERE t_calcul_encours.oid IS NULL + ; + + UPDATE activite.t_calcul_encours SET + type_ligne = w_cti_encours_calcul_parametres_services_prestations.type_ligne, + nb_ambulatoires = w_cti_encours_calcul_parametres_services_prestations.nb_ambulatoires, + nb_externes = w_cti_encours_calcul_parametres_services_prestations.nb_externes, + nb_seances = w_cti_encours_calcul_parametres_services_prestations.nb_seances, + nb_journees = w_cti_encours_calcul_parametres_services_prestations.nb_journees, + nb_journees_cp = w_cti_encours_calcul_parametres_services_prestations.nb_journees_cp, + prestation_type_valorisation = w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation, + nb_prestations_facturees = w_cti_encours_calcul_parametres_services_prestations.nombre, + prix_unitaire_calcule = w_cti_encours_calcul_parametres_services_prestations.prix_unitaire_calcule, + coefficient_calcule = w_cti_encours_calcul_parametres_services_prestations.coefficient_calcule + FROM w_cti_encours_calcul_parametres_services_prestations + WHERE t_calcul_encours.lieu_service_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_calcul_encours.lieu_unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + t_calcul_encours.prestation_id = w_cti_encours_calcul_parametres_services_prestations.prestation_id AND + t_calcul_encours.rubrique_facturation_id = w_cti_encours_calcul_parametres_services_prestations.rubrique_facturation_id AND + t_calcul_encours.type_ligne LIKE 'PRESTA%' AND + ( + t_calcul_encours.type_ligne IS DISTINCT FROM w_cti_encours_calcul_parametres_services_prestations.type_ligne OR + t_calcul_encours.nb_ambulatoires IS DISTINCT FROM w_cti_encours_calcul_parametres_services_prestations.nb_ambulatoires OR + t_calcul_encours.nb_externes IS DISTINCT FROM w_cti_encours_calcul_parametres_services_prestations.nb_externes OR + t_calcul_encours.nb_seances IS DISTINCT FROM w_cti_encours_calcul_parametres_services_prestations.nb_seances OR + t_calcul_encours.nb_journees IS DISTINCT FROM w_cti_encours_calcul_parametres_services_prestations.nb_journees OR + t_calcul_encours.nb_journees_cp IS DISTINCT FROM w_cti_encours_calcul_parametres_services_prestations.nb_journees_cp OR + t_calcul_encours.prestation_type_valorisation IS DISTINCT FROM w_cti_encours_calcul_parametres_services_prestations.prestation_type_valorisation OR + t_calcul_encours.nb_prestations_facturees IS DISTINCT FROM w_cti_encours_calcul_parametres_services_prestations.nombre OR + t_calcul_encours.prix_unitaire_calcule IS DISTINCT FROM w_cti_encours_calcul_parametres_services_prestations.prix_unitaire_calcule OR + t_calcul_encours.coefficient_calcule IS DISTINCT FROM w_cti_encours_calcul_parametres_services_prestations.coefficient_calcule + ) + ; + + -- Stockage des données de calcul par séjour (GHS) + + INSERT INTO activite.t_calcul_encours + ( + type_ligne, + no_sejour, + no_facture, + coefficient_mco, + lieu_service_id, + lieu_unite_fonctionnelle_id, + nb_ambulatoires, + nb_externes, + nb_seances, + nb_journees, + nb_journees_cp, + prestation_id, + prestation_type_valorisation, + rubrique_facturation_id, + nb_prestations_facturees, + prix_unitaire_calcule, + coefficient_calcule + ) + SELECT + w_cti_encours_factures_lignes_c.type_ligne, + w_cti_encours_factures_lignes_c.no_sejour, + w_cti_encours_factures_lignes_c.no_facture, + w_cti_encours_factures_lignes_c.coefficient_mco, + t_lieux.service_facturation_id AS lieu_service_id, + t_lieux.unite_fonctionnelle_id AS lieu_unite_fonctionnelle_id, + 0::numeric AS nb_ambulatoires, + 0::numeric AS nb_externes, + 0::numeric AS nb_seances, + 0::numeric AS nb_journees, + 0::numeric AS nb_journees_cp, + w_cti_encours_factures_lignes_c.prestation_id, + w_cti_encours_factures_lignes_c.regle_ghs AS prestation_type_valorisation, + w_cti_encours_factures_lignes_c.rubrique_facturation_id, + w_cti_encours_factures_lignes_c.nb_prestation AS nb_prestations_facturees, + w_cti_encours_factures_lignes_c.prix_unitaire_calcule, + 0::numeric AS coefficient_calcule + FROM w_cti_encours_factures_lignes_c + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + LEFT JOIN activite.t_calcul_encours ON + t_calcul_encours.no_facture = w_cti_encours_factures_lignes_c.no_facture AND + t_calcul_encours.prestation_id = w_cti_encours_factures_lignes_c.prestation_id AND + t_calcul_encours.rubrique_facturation_id = w_cti_encours_factures_lignes_c.rubrique_facturation_id AND + t_calcul_encours.type_ligne LIKE 'GHSNG%' + WHERE w_cti_encours_factures_lignes_c.type_ligne = 'GHSNG' AND + t_calcul_encours.no_facture IS NULL + ; + + UPDATE activite.t_calcul_encours SET + type_ligne = w_cti_encours_factures_lignes_c.type_ligne, + prix_unitaire_calcule = w_cti_encours_factures_lignes_c.prix_unitaire_calcule + FROM w_cti_encours_factures_lignes_c + WHERE t_calcul_encours.no_facture = w_cti_encours_factures_lignes_c.no_facture AND + t_calcul_encours.prestation_id = w_cti_encours_factures_lignes_c.prestation_id AND + t_calcul_encours.rubrique_facturation_id = w_cti_encours_factures_lignes_c.rubrique_facturation_id AND + t_calcul_encours.type_ligne LIKE 'GHSNG%' AND + ( + t_calcul_encours.type_ligne IS DISTINCT FROM w_cti_encours_factures_lignes_c.type_ligne OR + t_calcul_encours.prix_unitaire_calcule IS DISTINCT FROM w_cti_encours_factures_lignes_c.prix_unitaire_calcule + ) + ; + + DELETE FROM activite.t_calcul_encours + WHERE type_ligne = 'GHSNG' AND + no_facture NOT IN (SELECT no_facture FROM w_cti_encours_factures_lignes_c WHERE w_cti_encours_factures_lignes_c.type_ligne = 'GHSNG') + ; + + -- Stockage des séjours calculés (prestations) + + INSERT INTO activite.t_calcul_encours + ( + type_ligne, + no_sejour, + no_facture, + coefficient_mco, + lieu_service_id, + lieu_unite_fonctionnelle_id, + nb_ambulatoires, + nb_externes, + nb_seances, + nb_journees, + nb_journees_cp, + prestation_id, + prestation_type_valorisation, + rubrique_facturation_id, + nb_prestations_facturees, + prix_unitaire_calcule, + coefficient_calcule + ) + SELECT + replace(w_cti_encours_calcul_parametres_services_prestations.type_ligne,'PRESTA','PRESEJ') AS type_ligne, + w_cti_encours_factures_lignes_c.no_sejour, + w_cti_encours_factures_lignes_c.no_facture, + w_cti_encours_factures_lignes_c.coefficient_mco, + t_lieux.service_facturation_id AS lieu_service_id, + t_lieux.unite_fonctionnelle_id AS lieu_unite_fonctionnelle_id, + 0::numeric AS nb_ambulatoires, + 0::numeric AS nb_externes, + 0::numeric AS nb_seances, + 0::numeric AS nb_journees, + 0::numeric AS nb_journees_cp, + w_cti_encours_factures_lignes_c.prestation_id, + w_cti_encours_factures_lignes_c.regle_ghs AS prestation_type_valorisation, + w_cti_encours_factures_lignes_c.rubrique_facturation_id, + SUM(w_cti_encours_factures_lignes_c.nb_prestation) AS nb_prestations_facturees, + w_cti_encours_factures_lignes_c.prix_unitaire_calcule, + w_cti_encours_factures_lignes_c.coefficient_calcule + FROM w_cti_encours_factures_lignes_c + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN w_cti_encours_calcul_parametres_services_prestations ON + t_lieux.service_facturation_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_lieux.unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + w_cti_encours_factures_lignes_c.prestation_id = w_cti_encours_calcul_parametres_services_prestations.prestation_id AND + w_cti_encours_factures_lignes_c.rubrique_facturation_id = w_cti_encours_calcul_parametres_services_prestations.rubrique_facturation_id + LEFT JOIN activite.t_calcul_encours ON + t_calcul_encours.no_facture = w_cti_encours_factures_lignes_c.no_facture AND + t_calcul_encours.lieu_service_id = t_lieux.service_facturation_id AND + t_calcul_encours.prestation_id = w_cti_encours_factures_lignes_c.prestation_id AND + t_calcul_encours.rubrique_facturation_id = w_cti_encours_factures_lignes_c.rubrique_facturation_id AND + t_calcul_encours.type_ligne LIKE 'PRESEJ%' + WHERE w_cti_encours_factures_lignes_c.type_ligne <> 'SAISIE' AND + w_cti_encours_calcul_parametres_services_prestations.type_ligne LIKE 'PRESTA%' AND + t_calcul_encours.no_facture IS NULL + GROUP BY 1,2,3,4,5,6,12,13,14,16,17 + ; + + UPDATE activite.t_calcul_encours SET + coefficient_calcule = w_cti_encours_factures_lignes_c.coefficient_calcule, + prix_unitaire_calcule = w_cti_encours_factures_lignes_c.prix_unitaire_calcule + FROM w_cti_encours_factures_lignes_c + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + WHERE t_calcul_encours.no_facture = w_cti_encours_factures_lignes_c.no_facture AND + t_calcul_encours.lieu_service_id = t_lieux.service_facturation_id AND + t_calcul_encours.prestation_id = w_cti_encours_factures_lignes_c.prestation_id AND + t_calcul_encours.rubrique_facturation_id = w_cti_encours_factures_lignes_c.rubrique_facturation_id AND + t_calcul_encours.type_ligne LIKE 'PRESEJ%' AND + ( + t_calcul_encours.coefficient_calcule IS DISTINCT FROM w_cti_encours_factures_lignes_c.coefficient OR + t_calcul_encours.prix_unitaire_calcule IS DISTINCT FROM w_cti_encours_factures_lignes_c.prix_unitaire + ) + ; + + DELETE + FROM activite.t_calcul_encours + WHERE t_calcul_encours.type_ligne LIKE 'PRESEJ%' AND + ( + t_calcul_encours.no_facture || '-' || + t_calcul_encours.lieu_service_id || '-' || + t_calcul_encours.prestation_id || '-' || + t_calcul_encours.rubrique_facturation_id + ) NOT IN + (SELECT + w_cti_encours_factures_lignes_c.no_facture || '-' || + t_lieux.service_facturation_id || '-' || + w_cti_encours_factures_lignes_c.prestation_id || '-' || + w_cti_encours_factures_lignes_c.rubrique_facturation_id + FROM w_cti_encours_factures_lignes_c + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN w_cti_encours_calcul_parametres_services_prestations ON + t_lieux.service_facturation_id = w_cti_encours_calcul_parametres_services_prestations.lieu_service_id AND + t_lieux.unite_fonctionnelle_id = w_cti_encours_calcul_parametres_services_prestations.lieu_unite_fonctionnelle_id AND + w_cti_encours_factures_lignes_c.prestation_id = w_cti_encours_calcul_parametres_services_prestations.prestation_id AND + w_cti_encours_factures_lignes_c.rubrique_facturation_id = w_cti_encours_calcul_parametres_services_prestations.rubrique_facturation_id + WHERE w_cti_encours_factures_lignes_c.type_ligne <> 'SAISIE' AND + w_cti_encours_calcul_parametres_services_prestations.type_ligne LIKE 'PRESTA%' + ) + ; + + + -- Stockage des séjours calculés (pour paramétrer séjours à ne pas calculer) + INSERT INTO activite.t_calcul_encours + ( + type_ligne, + no_sejour, + no_facture, + coefficient_mco, + lieu_service_id, + lieu_unite_fonctionnelle_id, + nb_ambulatoires, + nb_externes, + nb_seances, + nb_journees, + nb_journees_cp, + prestation_id, + prestation_type_valorisation, + rubrique_facturation_id, + nb_prestations_facturees, + prix_unitaire_calcule, + coefficient_calcule + ) + SELECT + 'FACTURE'::text, + w_cti_encours_factures_lignes_c.no_sejour, + w_cti_encours_factures_lignes_c.no_facture, + 0::numeric AS coefficient_mco, + 0::bigint AS lieu_service_id, + 0::bigint AS lieu_unite_fonctionnelle_id, + 0::numeric AS nb_ambulatoires, + 0::numeric AS nb_externes, + 0::numeric AS nb_seances, + 0::numeric AS nb_journees, + 0::numeric AS nb_journees_cp, + 0::bigint AS prestation_id, + 0::bigint AS prestation_type_valorisation, + 0::bigint AS rubrique_facturation_id, + 0::bigint AS nb_prestation, + SUM(montant_encours) AS prix_unitaire_calcule, + 0::numeric AS coefficient_calcule + FROM w_cti_encours_factures_lignes_c + LEFT JOIN activite.t_calcul_encours ON + t_calcul_encours.no_facture = w_cti_encours_factures_lignes_c.no_facture AND + t_calcul_encours.type_ligne LIKE 'FACTURE%' + WHERE t_calcul_encours.no_facture IS NULL + GROUP BY 2,3 + ; + + DELETE FROM activite.t_calcul_encours + WHERE type_ligne = 'FACTURE' AND + no_facture NOT IN (SELECT no_facture FROM w_cti_encours_factures_lignes_c) + ; + + END IF; + -- Eclatement des prestations jour par jour + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Eclatement jour par jour'; + INSERT INTO w_cti_encours_factures_lignes_sup_c + SELECT + w_cti_encours_factures_lignes_c.oid AS from_oid, + t_prestations.code AS prestation_code, + date(p_sejours.date_entree) AS date_debut_ghs, + date(date_fin - interval '1 day') AS date_fin_ghs, + (date(date_fin) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + w_cti_encours_factures_lignes_c.* + FROM w_cti_encours_factures_lignes_c + JOIN activite.p_sejours ON w_cti_encours_factures_lignes_c.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code IN ('GMT', 'PJ', 'FJ', 'PHJ','SSM', 'GHS', 'GHT', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') + WHERE type_sejour = '1' AND (nb_prestation > 1 or nb_prestation < -1 OR (t_prestations.code = 'GHS' AND date(date_fin) - date(date_entree) > 1 )) ; + UPDATE w_cti_encours_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM w_cti_encours_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_cti_encours_factures_lignes_sup_c.no_facture = subview.no_facture ; + + INSERT INTO w_cti_encours_factures_lignes_sup_c_gen + SELECT + from_oid, + no_sejour, + no_facture, + date AS date_debut, + date AS date_fin, + lieu_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + lpp_id, + ucd_id, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs AND t_rubriques_facturation.code = '111' THEN 1 WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + prix_unitaire, + w_cti_encours_factures_lignes_sup_c.oid, + round(montant_encours / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_encours, + type_ligne, + regle_ghs, + regle_coefficient, + regle_texte + FROM w_cti_encours_factures_lignes_sup_c + JOIN base.p_calendrier ON date_debut BETWEEN p_calendrier.date - ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END)::integer + 1 AND p_calendrier.date AND + p_calendrier.date <> date_debut + JOIN activite.t_rubriques_facturation ON rubrique_facturation_id = t_rubriques_facturation.oid; + + + INSERT INTO w_cti_encours_factures_lignes_sup_c_gen_tot + SELECT from_oid, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_encours) AS montant_encours + FROM w_cti_encours_factures_lignes_sup_c_gen + GROUP BY 1; + UPDATE w_cti_encours_factures_lignes_c + SET + date_fin = w_cti_encours_factures_lignes_c.date_debut, + nb_rubrique = w_cti_encours_factures_lignes_c.nb_rubrique - w_cti_encours_factures_lignes_sup_c_gen_tot.nb_rubrique, + nb_prestation = w_cti_encours_factures_lignes_c.nb_prestation - w_cti_encours_factures_lignes_sup_c_gen_tot.nb_prestation, + montant_encours = w_cti_encours_factures_lignes_c.montant_encours - w_cti_encours_factures_lignes_sup_c_gen_tot.montant_encours + FROM w_cti_encours_factures_lignes_sup_c_gen_tot + WHERE w_cti_encours_factures_lignes_c.oid = from_oid; + UPDATE w_cti_encours_factures_lignes_c + SET + nb_rubrique = nb_prestation + FROM activite.t_rubriques_facturation, activite.t_prestations + WHERE w_cti_encours_factures_lignes_c.prestation_id = t_prestations.oid AND t_prestations.code = 'GHS' AND + w_cti_encours_factures_lignes_c.rubrique_facturation_id = t_rubriques_facturation.oid AND t_rubriques_facturation.code <> '111'; + INSERT INTO w_cti_encours_factures_lignes_c ( + no_sejour, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + prestation_id, + lpp_id, + ucd_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prix_unitaire, + nb_prestation, + montant_encours, + type_ligne, + regle_ghs, + lieu_id, + regle_coefficient, + regle_texte) + SELECT + no_sejour, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + prestation_id, + lpp_id, + ucd_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prix_unitaire, + nb_prestation, + montant_encours, + type_ligne, + regle_ghs, + lieu_id, + regle_coefficient, + regle_texte + FROM w_cti_encours_factures_lignes_sup_c_gen; + -- sur ambulatoires avec une nuit, + + UPDATE w_cti_encours_factures_lignes_c + SET date_fin = date_debut + WHERE prestation_id IN (SELECT oid FROM activite.t_prestations WHERE code = 'GHS') AND + nb_rubrique = 1 AND + date_fin - date_debut = 1; + + + -- Lieu + UPDATE w_cti_encours_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite.p_factures, + activite.p_mouvements_sejour + WHERE + w_cti_encours_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + w_cti_encours_factures_lignes_c.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + p_mouvements_sejour.lieu_id IS DISTINCT FROM w_cti_encours_factures_lignes_c.lieu_id; + + UPDATE w_cti_encours_factures_lignes_c + SET lieu_id = p_sejours.lieu_sortie_id + FROM activite.p_sejours + WHERE w_cti_encours_factures_lignes_c.no_sejour = p_sejours.no_sejour + AND (lieu_id = 0 OR lieu_id is null); + + -- Lieu des lignes de factures (en tenant compte des absences) + DROP TABLE IF EXISTS w_mouvements_sejour_lieu_jour; + CREATE TEMP TABLE w_mouvements_sejour_lieu_jour AS + SELECT no_sejour, + date, + (MAX(CASE WHEN est_absence <> '1' THEN Array[heure_fin, lieu_id] ELSE NULL END))[2] AS lieu_id, + (MAX(Array[heure_fin, lieu_id]))[2] AS lieu_id_avec_absence + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_services_facturation On service_facturation_id = t_services_facturation.oid + WHERE p_mouvements_sejour.no_sejour IN (SELECT no_sejour FROM w_cti_encours_factures_lignes_c ) + GROUP BY 1,2 + HAVING MAX(est_absence) = '1' + ; + + UPDATE w_cti_encours_factures_lignes_c + SET lieu_id = COALESCE(w_mouvements_sejour_lieu_jour.lieu_id,w_mouvements_sejour_lieu_jour.lieu_id_avec_absence) + FROM w_mouvements_sejour_lieu_jour + WHERE w_cti_encours_factures_lignes_c.no_sejour = w_mouvements_sejour_lieu_jour.no_sejour AND + w_cti_encours_factures_lignes_c.date_fin = w_mouvements_sejour_lieu_jour.date AND + w_cti_encours_factures_lignes_c.lieu_id <> COALESCE(w_mouvements_sejour_lieu_jour.lieu_id,w_mouvements_sejour_lieu_jour.lieu_id_avec_absence) + ; + + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Reaffectation prestation TDE sur budget global'; + DROP TABLE IF EXISTS w_factures_e; + CREATE TEMP TABLE w_factures_e AS + SELECT p_factures.no_sejour, + p_factures_bg.no_facture AS no_facture_bg, + p_factures.no_facture AS no_facture_nbg + FROM w_cti_encours_factures p_factures + JOIN w_cti_encours_factures p_factures_bg ON p_factures_bg.no_sejour = p_factures.no_sejour AND p_factures_bg.no_facture LIKE '%BG' + WHERE p_factures.no_facture NOT LIKE '%BG' + ; + + ANALYSE w_factures_e + ; + + UPDATE w_cti_encours_factures_lignes_c p_factures_lignes_c + SET no_facture = no_facture_bg + FROM w_factures_e, activite.t_prestations + WHERE p_factures_lignes_c.no_facture = no_facture_nbg AND + prestation_id = t_prestations.oid AND + t_prestations.code LIKE 'TDE%' + ; + + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Repartition par tiers payant'; + UPDATE w_cti_encours_factures_lignes_c SET + montant_encours_1 = CASE WHEN tiers_payant_1_id <> 0 THEN round(montant_encours * coeff_1,2) ELSE 0 END, + montant_encours_2 = CASE WHEN tiers_payant_2_id <> 0 THEN round(montant_encours * coeff_2,2) ELSE 0 END, + montant_encours_0 = montant_encours - CASE WHEN tiers_payant_1_id <> 0 THEN round(montant_encours * coeff_1,2) ELSE 0 END + - CASE WHEN tiers_payant_2_id <> 0 THEN round(montant_encours * coeff_2,2) ELSE 0 END + FROM w_cti_encours_factures, w_cti_encours_repartition_tp + WHERE w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + w_cti_encours_factures_lignes_c.rubrique_facturation_id = w_cti_encours_repartition_tp.rubrique_facturation_id; + UPDATE w_cti_encours_factures SET + regle_ghs = COALESCE(subview.regle_ghs,'0'), + montant_valorise_c = COALESCE(subview.montant_valorise,0), + montant_valorise_0_c = COALESCE(subview.montant_valorise_0,0), + montant_valorise_1_c = COALESCE(subview.montant_valorise_1,0), + montant_valorise_2_c = COALESCE(subview.montant_valorise_2,0), + montant_encours_c = COALESCE(subview.montant_encours,0), + montant_encours_0_c = COALESCE(subview.montant_encours_0,0), + montant_encours_1_c = COALESCE(subview.montant_encours_1,0), + montant_encours_2_c = COALESCE(subview.montant_encours_2,0), + etat = '' + FROM + (SELECT w_cti_encours_factures.no_facture, + MAX(w_cti_encours_factures_lignes_c.regle_ghs) AS regle_ghs, + SUM(montant_encours) AS montant_valorise, + SUM(montant_encours_0) AS montant_valorise_0, + SUM(montant_encours_1) AS montant_valorise_1, + SUM(montant_encours_2) AS montant_valorise_2, + SUM(CASE WHEN w_cti_encours_factures_lignes_c.date_fin <= w_cti_encours_factures.date_encours THEN montant_encours ELSE 0 END) AS montant_encours, + SUM(CASE WHEN w_cti_encours_factures_lignes_c.date_fin <= w_cti_encours_factures.date_encours THEN montant_encours_0 ELSE 0 END) AS montant_encours_0, + SUM(CASE WHEN w_cti_encours_factures_lignes_c.date_fin <= w_cti_encours_factures.date_encours THEN montant_encours_1 ELSE 0 END) AS montant_encours_1, + SUM(CASE WHEN w_cti_encours_factures_lignes_c.date_fin <= w_cti_encours_factures.date_encours THEN montant_encours_2 ELSE 0 END) AS montant_encours_2 + FROM w_cti_encours_factures + LEFT JOIN w_cti_encours_factures_lignes_c ON w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture AND + w_cti_encours_factures_lignes_c.ignorer IS DISTINCT FROM '1' + WHERE w_cti_encours_factures.ignorer IS DISTINCT FROM '1' + GROUP BY 1 + ) subview + WHERE subview.no_facture = w_cti_encours_factures.no_facture; + + -- Génération encours + + IF w_date_encours = w_date_encours_actuelle THEN + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Generation valorisation non factures'; + DELETE FROM activite.p_factures_lignes_c WHERE montant_encours <> 0; + DELETE FROM activite.p_factures_lignes_h WHERE montant_encours <> 0; + + DELETE + FROM activite.p_factures_lignes_c + WHERE montant_encours = 0 AND + montant_facture = 0 AND + montant_comptabilise = 0 AND + no_facture IN (SELECT no_facture FROM w_cti_encours_factures_lignes_c) + ; + + DELETE + FROM activite.p_factures_lignes_c + USING activite.p_factures + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.montant_encours_c <> 0 + ; + DELETE + FROM activite.p_factures_lignes_h + USING activite.p_factures + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + p_factures.montant_encours_c <> 0 + ; + + UPDATE activite.p_factures SET + montant_encours_c = 0, + montant_encours_0_c = 0, + montant_encours_1_c = 0, + montant_encours_2_c = 0, + montant_encours_22_c = 0, + montant_encours_h = 0, + montant_encours_0_h = 0, + montant_encours_1_h = 0, + montant_encours_2_h = 0, + montant_encours_22_h = 0 + WHERE montant_encours_c <> 0 OR montant_encours_h <> 0; + + INSERT INTO activite.p_factures_lignes_c( + facture_id, no_facture, date_debut, date_fin, nb_rubrique, nb_prestation, coefficient, coefficient_mco, prix_unitaire, + prestation_id, lpp_id, ucd_id, rubrique_facturation_id, rubrique_comptabilisation_id, lieu_id, + montant_facture, montant_facture_0, montant_facture_1, montant_facture_2, montant_facture_22, + taux_0, taux_1, taux_2, taux_22, + montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, montant_comptabilise_2, montant_comptabilise_22, + montant_encours, montant_encours_1, montant_encours_2, montant_encours_0) + SELECT + w_cti_encours_factures.oid, w_cti_encours_factures.no_facture, w_cti_encours_factures_lignes_c.date_debut, w_cti_encours_factures_lignes_c.date_fin, nb_rubrique, nb_prestation, coefficient, coefficient_mco, prix_unitaire, + prestation_id, lpp_id, ucd_id, w_cti_encours_factures_lignes_c.rubrique_facturation_id, rubrique_comptabilisation_id, lieu_id, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, 0, + montant_encours, + montant_encours_1, + montant_encours_2, + montant_encours_0 + FROM w_cti_encours_factures_lignes_c + JOIN w_cti_encours_factures ON w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture + WHERE w_cti_encours_factures_lignes_c.rubrique_facturation_id IS NOT NULL AND + w_cti_encours_factures.ignorer IS DISTINCT FROM '1' AND + w_cti_encours_factures_lignes_c.ignorer IS DISTINCT FROM '1' AND + type_ligne <> 'GHSECART'; + + UPDATE activite.p_factures SET + tiers_payant_1_id = w_cti_encours_factures.tiers_payant_1_id, + tiers_payant_2_id = w_cti_encours_factures.tiers_payant_2_id, + montant_encours_c = w_cti_encours_factures.montant_valorise_c, + montant_encours_1_c = w_cti_encours_factures.montant_valorise_1_c, + montant_encours_2_c = w_cti_encours_factures.montant_valorise_2_c, + montant_encours_0_c = w_cti_encours_factures.montant_valorise_0_c + FROM w_cti_encours_factures + WHERE w_cti_encours_factures.no_facture = p_factures.no_facture AND + w_cti_encours_factures.ignorer <> '1'; + + + UPDATE activite.p_factures_lignes_non_facturees_h + SET prix_unitaire = subview.prix_unitaire + FROM + ( + SELECT acte_id, activite_ccam, modificateur_ccam_1, modificateur_ccam_2, modificateur_ccam_3, modificateur_ccam_4, + base.Cti_division(SUM(montant_facture_1),SUM(nb_prestation*coefficient)) AS prix_unitaire + FROM activite.p_factures_lignes_h + WHERE acte_id IN (SELECT acte_id FROM activite.p_factures_lignes_non_facturees_h WHERE prix_unitaire = 0) AND + montant_facture_1 > 0 + GROUP BY 1,2,3,4,5,6 + ) subview + WHERE p_factures_lignes_non_facturees_h.acte_id = subview.acte_id AND + p_factures_lignes_non_facturees_h.activite_ccam = subview.activite_ccam AND + p_factures_lignes_non_facturees_h.modificateur_ccam_1 = subview.modificateur_ccam_1 AND + p_factures_lignes_non_facturees_h.modificateur_ccam_2 = subview.modificateur_ccam_2 AND + p_factures_lignes_non_facturees_h.modificateur_ccam_3 = subview.modificateur_ccam_3 AND + p_factures_lignes_non_facturees_h.modificateur_ccam_4 = subview.modificateur_ccam_4 AND + p_factures_lignes_non_facturees_h.prix_unitaire = 0 + ; + + UPDATE activite.p_factures_lignes_non_facturees_h + SET prix_unitaire = subview.prix_unitaire + FROM + ( + SELECT acte_id, activite_ccam, + base.Cti_division(SUM(montant_facture_1),SUM(nb_prestation*coefficient)) AS prix_unitaire + FROM activite.p_factures_lignes_h + WHERE acte_id IN (SELECT acte_id FROM activite.p_factures_lignes_non_facturees_h WHERE prix_unitaire = 0) AND + montant_facture_1 > 0 + GROUP BY 1,2 + ) subview + WHERE p_factures_lignes_non_facturees_h.acte_id = subview.acte_id AND + p_factures_lignes_non_facturees_h.activite_ccam = subview.activite_ccam AND + p_factures_lignes_non_facturees_h.prix_unitaire = 0 + + ; + + INSERT INTO activite.p_factures_lignes_h ( + no_facture, + facture_id, + date_debut, + heure_debut, + date_fin, + coefficient, + coefficient_mco, + lieu_id, + prestation_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + acte_id, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + medecin_facture_id, + medecin_comptabilise_id, + nb_rubrique, + nb_prestation, + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_depassement, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_non_facture + ) + SELECT + w_cti_encours_factures.no_facture, + w_cti_encours_factures.oid AS facture_id, + p_factures_lignes_non_facturees_h.date_debut, + p_factures_lignes_non_facturees_h.heure_debut, + p_factures_lignes_non_facturees_h.date_fin, + p_factures_lignes_non_facturees_h.coefficient, + 1::numeric AS coefficient_mco, + w_cti_encours_factures.lieu_sortie_id AS lieu_id, + p_factures_lignes_non_facturees_h.prestation_id, + 0::bigint AS rubrique_facturation_id, + 0::bigint AS rubrique_comptabilisation_id, + p_factures_lignes_non_facturees_h.acte_id, + p_factures_lignes_non_facturees_h.phase_ccam, + p_factures_lignes_non_facturees_h.activite_ccam, + p_factures_lignes_non_facturees_h.extension_ccam, + p_factures_lignes_non_facturees_h.modificateur_ccam_1, + p_factures_lignes_non_facturees_h.modificateur_ccam_2, + p_factures_lignes_non_facturees_h.modificateur_ccam_3, + p_factures_lignes_non_facturees_h.modificateur_ccam_4, + p_factures_lignes_non_facturees_h.medecin_facture_id, + p_factures_lignes_non_facturees_h.medecin_facture_id AS medecin_comptabilise_id, + p_factures_lignes_non_facturees_h.nb_rubrique, + p_factures_lignes_non_facturees_h.nb_rubrique AS nb_prestation, + p_factures_lignes_non_facturees_h.prix_unitaire, + 0::numeric AS taux_0, + 0::numeric AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_22, + 0::numeric AS montant_facture, + 0::numeric AS montant_facture_0, + 0::numeric AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS montant_depassement, + nb_rubrique * prix_unitaire * p_factures_lignes_non_facturees_h.coefficient AS montant_encours, + 0::numeric AS montant_encours_0, + nb_rubrique * prix_unitaire * p_factures_lignes_non_facturees_h.coefficient AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + nb_rubrique * prix_unitaire * p_factures_lignes_non_facturees_h.coefficient AS montant_non_facture + FROM activite.p_factures_lignes_non_facturees_h + JOIN w_cti_encours_factures ON p_factures_lignes_non_facturees_h.no_facture = w_cti_encours_factures.no_facture + WHERE w_cti_encours_factures.ignorer <> '1' + ; + + -- Total honoraires valorisés + UPDATE activite.p_factures SET + montant_encours_h = COALESCE(subview.montant_valorise,0) + FROM + (SELECT + w_cti_encours_factures.no_facture, + SUM(nb_rubrique * prix_unitaire * p_factures_lignes_non_facturees_h.coefficient) AS montant_valorise + FROM activite.p_factures_lignes_non_facturees_h + JOIN w_cti_encours_factures ON p_factures_lignes_non_facturees_h.no_facture = w_cti_encours_factures.no_facture + WHERE w_cti_encours_factures.ignorer <> '1' + GROUP BY 1 + ) subview + WHERE subview.no_facture = p_factures.no_facture; + + END IF; + -- Transformation factures non valorisées en en cours + UPDATE activite.p_factures_lignes_c SET + montant_encours = montant_facture, + montant_encours_0 = montant_facture_0, + montant_encours_1 = montant_facture_1, + montant_encours_2 = montant_facture_2, + montant_encours_22 = montant_facture_22, + montant_facture = 0, + montant_facture_0 = 0, + montant_facture_1 = 0, + montant_facture_2 = 0, + montant_facture_22 = 0 + FROM activite.p_factures + WHERE p_factures.no_facture = p_factures_lignes_c.no_facture AND + p_factures.code_facture = '3'; + UPDATE activite.p_factures_lignes_h SET + montant_encours = montant_facture, + montant_encours_0 = montant_facture_0, + montant_encours_1 = montant_facture_1, + montant_encours_2 = montant_facture_2, + montant_encours_22 = montant_facture_22, + montant_facture = 0, + montant_facture_0 = 0, + montant_facture_1 = 0, + montant_facture_2 = 0, + montant_facture_22 = 0 + FROM activite.p_factures + WHERE p_factures.no_facture = p_factures_lignes_h.no_facture AND + p_factures.code_facture = '3'; + UPDATE activite.p_factures SET + type_facture = 'E', + code_facture = '0', + montant_encours_c = montant_facture_c, + montant_encours_0_c = montant_facture_0_c, + montant_encours_1_c = montant_facture_1_c, + montant_encours_2_c = montant_facture_2_c, + montant_encours_22_c = montant_facture_22_c, + montant_facture_c = 0, + montant_facture_0_c = 0, + montant_facture_1_c = 0, + montant_facture_2_c = 0, + montant_facture_22_c = 0, + montant_encours_h = montant_facture_h, + montant_encours_0_h = montant_facture_0_h, + montant_encours_1_h = montant_facture_1_h, + montant_encours_2_h = montant_facture_2_h, + montant_encours_22_h = montant_facture_22_h, + montant_facture_h = 0, + montant_facture_0_h = 0, + montant_facture_1_h = 0, + montant_facture_2_h = 0, + montant_facture_22_h = 0 + WHERE code_facture = '3'; + -- Génération encours comptables + IF (i_option NOT ILIKE '%-nogen%') THEN + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Generation en-cours comptables'; + + IF EXISTS (SELECT valeur FROM activite.t_divers WHERE code = 'ENCOURSACTIVE' AND valeur = '1') THEN + + -- Effacer encours Budget Global + DELETE FROM activite.p_factures_encours + WHERE code_origine = 'C' AND no_facture LIKE '%BG%' AND + (SELECT valeur FROM activite.t_divers WHERE code = 'ENCOURSACTIVEBG') IS DISTINCT FROM '1'; + -- Effacer factures encours comptabilisées sur même mois + DELETE FROM activite.p_factures_encours + USING activite.p_factures + WHERE code_origine = 'C' AND + p_factures_encours.no_facture_reference = p_factures.no_facture AND + p_factures.code_vente = '1' AND p_factures_encours.date_encours >= p_factures.date_vente AND + date(date_trunc('month',p_factures_encours.date_encours)) >= + (SELECT date(date_trunc('month',t_divers.valeur_date)) FROM activite.t_divers WHERE t_divers.code = 'ENCOURSNOW'); + + + -- Effacer génération précédente + DELETE FROM activite.p_factures_encours + USING w_cti_encours_calcul_parametres + WHERE date_trunc('month',p_factures_encours.date_encours) = date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + code_origine = 'C'; + -- Lignes non référencées + DELETE FROM activite.p_factures_encours_lignes_c + WHERE NOT EXISTS (SELECT 'NOT_TO_DELETE' FROM activite.p_factures_encours WHERE p_factures_encours.no_facture = p_factures_encours_lignes_c.no_facture) + AND p_factures_encours_lignes_c IS NOT NULL; + DELETE FROM activite.p_facture_encours_ligne_valorise_c + WHERE NOT EXISTS (SELECT 'NOT_TO_DELETE' FROM activite.p_factures_encours WHERE p_factures_encours.no_facture = p_facture_encours_ligne_valorise_c.no_facture) + AND p_facture_encours_ligne_valorise_c IS NOT NULL; + + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Entetes (valorisees)'; + + -- Ajout encours + INSERT INTO activite.p_factures_encours( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + code_origine, + code_sorti, + date_encours, + date_calcul, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + type_sejour, + lieu_sortie_id, + date_groupage, + provider_id, + ghm_id, + filiere_soin_principale_id + ) + SELECT + w_cti_encours_factures.sejour_id, + w_cti_encours_factures.no_sejour, + w_cti_encours_factures.no_facture_encours, + p_factures.no_facture_reference, + w_cti_encours_factures.date_debut, + w_cti_encours_factures.date_fin, + 'C' AS code_origine, + CASE + WHEN p_sejours.code_sorti = '1' AND p_sejours.type_sejour <> '3' AND date_trunc('month',p_sejours.date_sortie) <= date_trunc('month',w_cti_encours_factures.date_encours) THEN '1' + WHEN p_sejours.type_sejour = '3' THEN '1' + ELSE '0' END AS code_sorti, + w_cti_encours_factures.date_encours AS date_encours, + w_NOW AS date_calcul, + w_cti_encours_factures.tiers_payant_1_id, + w_cti_encours_factures.tiers_payant_2_id, + 0 AS tiers_payant_22_id, + p_factures.tiers_payant_0_id, + w_cti_encours_factures.ghs_id, + w_cti_encours_factures.ghs_bebe1_id, + w_cti_encours_factures.ghs_bebe2_id, + w_cti_encours_factures.ghs_bebe3_id, + w_cti_encours_factures.code_cp_demandee, + w_cti_encours_factures.montant_encours_c, + w_cti_encours_factures.montant_encours_0_c, + w_cti_encours_factures.montant_encours_1_c, + w_cti_encours_factures.montant_encours_2_c, + 0 AS montant_encours_22_c, + 0 AS montant_encours_h, + 0 AS montant_encours_0_h, + 0 AS montant_encours_1_h, + 0 AS montant_encours_2_h, + 0 AS montant_encours_22_h, + p_sejours.date_entree, + p_sejours.heure_entree, + p_sejours.date_sortie, + p_sejours.heure_sortie, + p_sejours.type_sejour, + p_sejours.lieu_sortie_id, + p_sejours.date_groupage, + p_sejours.provider_id, + p_sejours.ghm_id, + p_sejours.filiere_soin_principale_id + FROM w_cti_encours_factures + JOIN activite.p_factures ON w_cti_encours_factures.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + LEFT JOIN activite.t_divers t_divers_encoreactivebg ON t_divers_encoreactivebg.code = 'ENCOURSACTIVEBG' + WHERE w_cti_encours_factures.montant_encours_c <> 0 AND + w_cti_encours_factures.date_debut <= w_cti_encours_factures.date_encours AND + ( + w_cti_encours_factures.no_facture NOT LIKE '%BG' OR + t_divers_encoreactivebg.valeur = '1' + ) AND + w_cti_encours_factures.ignorer <> '1'; + -- detail encours + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Lignes (valorisees)'; + + INSERT INTO activite.p_factures_encours_lignes_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + lpp_id, + ucd_id, + prix_unitaire, + lieu_id, + nb_prestation, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + ) + SELECT + p_factures_encours.oid AS facture_id, + w_cti_encours_factures.no_facture_encours, + MIN(w_cti_encours_factures_lignes_c.date_debut), + LEAST(MAX(w_cti_encours_factures_lignes_c.date_fin),MAX(p_factures_encours.date_encours)), + SUM(w_cti_encours_factures_lignes_c.nb_rubrique), + w_cti_encours_factures_lignes_c.coefficient, + w_cti_encours_factures_lignes_c.coefficient_mco, + w_cti_encours_factures_lignes_c.rubrique_facturation_id, + w_cti_encours_factures_lignes_c.prestation_id, + w_cti_encours_factures_lignes_c.lpp_id, + w_cti_encours_factures_lignes_c.ucd_id, + w_cti_encours_factures_lignes_c.prix_unitaire, + w_cti_encours_factures_lignes_c.lieu_id, + SUM(w_cti_encours_factures_lignes_c.nb_prestation), + w_cti_encours_factures_lignes_c.rubrique_comptabilisation_id, + SUM(w_cti_encours_factures_lignes_c.montant_encours), + SUM(w_cti_encours_factures_lignes_c.montant_encours_0), + SUM(w_cti_encours_factures_lignes_c.montant_encours_1), + SUM(w_cti_encours_factures_lignes_c.montant_encours_2), + SUM(w_cti_encours_factures_lignes_c.montant_encours_22) + FROM w_cti_encours_factures_lignes_c + JOIN w_cti_encours_factures ON w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture + JOIN activite.p_factures_encours ON w_cti_encours_factures.no_facture_encours = p_factures_encours.no_facture + LEFT JOIN activite.t_divers t_divers_encoreactivebg ON t_divers_encoreactivebg.code = 'ENCOURSACTIVEBG' + WHERE w_cti_encours_factures_lignes_c.montant_encours <> 0 AND + w_cti_encours_factures_lignes_c.date_debut <= w_cti_encours_factures.date_encours AND + w_cti_encours_factures_lignes_c.rubrique_facturation_id IS NOT NULL AND + ( + w_cti_encours_factures.no_facture NOT LIKE '%BG' OR + t_divers_encoreactivebg.valeur = '1' + ) AND + w_cti_encours_factures.ignorer <> '1' AND + w_cti_encours_factures_lignes_c.ignorer <> '1' + GROUP BY + p_factures_encours.oid, + date_trunc('month',w_cti_encours_factures_lignes_c.date_fin), + w_cti_encours_factures.no_facture_encours, + w_cti_encours_factures_lignes_c.coefficient, + w_cti_encours_factures_lignes_c.coefficient_mco, + w_cti_encours_factures_lignes_c.rubrique_facturation_id, + w_cti_encours_factures_lignes_c.prestation_id, + w_cti_encours_factures_lignes_c.lpp_id, + w_cti_encours_factures_lignes_c.ucd_id, + w_cti_encours_factures_lignes_c.prix_unitaire, + w_cti_encours_factures_lignes_c.lieu_id, + w_cti_encours_factures_lignes_c.rubrique_comptabilisation_id; + + -- Justificatif valorisation + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Justificatif (valorisees)'; + INSERT INTO activite.p_facture_encours_ligne_valorise_c( + no_facture, facture_id, date_debut, date_fin, lieu_id, nb_rubrique, + nb_prestation, coefficient, coefficient_mco, rubrique_facturation_id, + prestation_id, lpp_id, ucd_id, prix_unitaire, montant_valorise_total, montant_encours, type_ligne_code, mode_calcul_code, + mode_calcul_texte) + SELECT + w_cti_encours_factures.no_facture_encours, + p_factures_encours.oid AS facture_id, + MIN(w_cti_encours_factures_lignes_c.date_debut), + MAX(w_cti_encours_factures_lignes_c.date_fin), + CASE + WHEN t_prestations.code LIKE 'GHS%' THEN w_cti_encours_factures.lieu_sortie_id + WHEN w_cti_encours_factures_lignes_c.type_ligne = 'SAISIE' THEN 0 + ELSE w_cti_encours_factures_lignes_c.lieu_id END, + SUM(nb_rubrique), + SUM(nb_prestation), + coefficient, + coefficient_mco, + w_cti_encours_factures_lignes_c.rubrique_facturation_id, + prestation_id, + lpp_id, + ucd_id, + prix_unitaire, + SUM(CASE WHEN w_cti_encours_factures.ignorer IS DISTINCT FROM '1' AND w_cti_encours_factures_lignes_c.ignorer IS DISTINCT FROM '1' THEN montant_encours ELSE 0 END), + SUM(CASE WHEN w_cti_encours_factures.ignorer IS DISTINCT FROM '1' AND w_cti_encours_factures_lignes_c.ignorer IS DISTINCT FROM '1' AND w_cti_encours_factures_lignes_c.date_debut <= w_cti_encours_factures.date_encours THEN montant_encours ELSE 0 END), + w_cti_encours_factures_lignes_c.type_ligne, + CASE + WHEN w_cti_encours_factures.ignorer = '1' AND w_cti_encours_factures_lignes_c.regle_ghs <> '' THEN '00-FORCE' + WHEN w_cti_encours_factures_lignes_c.ignorer = '1' AND w_cti_encours_factures_lignes_c.regle_ghs <> '' THEN '00-FORCE' + ELSE w_cti_encours_factures_lignes_c.regle_ghs END, + CASE + WHEN w_cti_encours_factures.ignorer = '1' THEN 'FACTURE IGNOREE.' + WHEN w_cti_encours_factures_lignes_c.ignorer = '1' THEN 'LIGNE IGNOREE.' + ELSE w_cti_encours_factures_lignes_c.regle_texte END + FROM w_cti_encours_factures_lignes_c + JOIN w_cti_encours_factures ON w_cti_encours_factures_lignes_c.no_facture = w_cti_encours_factures.no_facture + JOIN activite.p_factures_encours ON w_cti_encours_factures.no_facture_encours = p_factures_encours.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE w_cti_encours_factures_lignes_c.rubrique_facturation_id IS NOT NULL AND + (montant_encours <> 0 OR + w_cti_encours_factures_lignes_c.ignorer = '1' + ) + GROUP BY 1,2,5,8,9,10,11,12,13,14,17,18,19 + ORDER BY 1; + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Entetes (facturees debut de mois)'; + + -- Ajout encours + INSERT INTO activite.p_factures_encours( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + code_origine, + code_sorti, + date_encours, + date_calcul, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + type_sejour, + lieu_sortie_id, + date_groupage, + provider_id, + ghm_id, + filiere_soin_principale_id + ) + SELECT + p_factures.sejour_id, + p_factures.no_sejour, + p_factures.no_facture || '.EV' || substr(to_char(date_part('year', w_cti_encours_calcul_parametres.date_encours),'FM0000'),3,2) || to_char(date_part('month', w_cti_encours_calcul_parametres.date_encours),'FM00') AS no_facture_encours, + p_factures.no_facture_reference, + p_factures.date_debut, + p_factures.date_fin, + 'C' AS code_origine, + CASE + WHEN p_sejours.code_sorti = '1' AND p_sejours.type_sejour <> '3' AND date_trunc('month',p_sejours.date_sortie) <= date_trunc('month',w_cti_encours_calcul_parametres.date_encours) THEN '1' + WHEN p_sejours.type_sejour = '3' THEN '1' + ELSE '0' END AS code_sorti, + w_cti_encours_calcul_parametres.date_encours AS date_encours, + w_NOW AS date_calcul, + p_factures.tiers_payant_1_id, + p_factures.tiers_payant_2_id, + 0 AS tiers_payant_22_id, + p_factures.tiers_payant_0_id, + p_factures.ghs_id, + p_factures.ghs_bebe1_id, + p_factures.ghs_bebe2_id, + p_factures.ghs_bebe3_id, + p_factures.code_cp_demandee, + p_factures.montant_comptabilise_c AS montant_encours_c, + p_factures.montant_comptabilise_0_c AS montant_encours_0_c, + p_factures.montant_comptabilise_1_c AS montant_encours_1_c, + p_factures.montant_comptabilise_2_c AS montant_encours_2_c, + 0 AS montant_encours_22_c, + 0 AS montant_encours_h, + 0 AS montant_encours_0_h, + 0 AS montant_encours_1_h, + 0 AS montant_encours_2_h, + 0 AS montant_encours_22_h, + p_sejours.date_entree, + p_sejours.heure_entree, + p_sejours.date_sortie, + p_sejours.heure_sortie, + p_sejours.type_sejour, + p_sejours.lieu_sortie_id, + p_sejours.date_groupage, + p_sejours.provider_id, + p_sejours.ghm_id, + p_sejours.filiere_soin_principale_id + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN w_cti_encours_calcul_parametres ON 1=1 + WHERE date_trunc('month',p_factures.date_fin) <= date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + p_factures.code_facture >= '1' AND + date_trunc('month',p_factures.date_vente) > date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + p_factures.no_facture NOT LIKE '%BG'; + + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Lignes (facturees debut de mois)'; + INSERT INTO activite.p_factures_encours_lignes_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id, + nb_prestation, + rubrique_comptabilisation_id, + compte_produit_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + ) + SELECT + p_factures_encours.oid AS facture_id, + p_factures_encours.no_facture AS no_facture_encours, + MIN(p_factures_lignes_c.date_debut), + MAX(p_factures_lignes_c.date_fin), + SUM(p_factures_lignes_c.nb_rubrique), + p_factures_lignes_c.coefficient, + p_factures_lignes_c.coefficient_mco, + p_factures_lignes_c.rubrique_facturation_id, + p_factures_lignes_c.prestation_id, + p_factures_lignes_c.prix_unitaire, + p_factures_lignes_c.lieu_id, + SUM(p_factures_lignes_c.nb_prestation), + p_factures_lignes_c.rubrique_comptabilisation_id, + p_factures_lignes_c.compte_produit_id, + SUM(p_factures_lignes_c.montant_comptabilise), + SUM(p_factures_lignes_c.montant_comptabilise_0), + SUM(p_factures_lignes_c.montant_comptabilise_1), + SUM(p_factures_lignes_c.montant_comptabilise_2), + SUM(p_factures_lignes_c.montant_comptabilise_22) + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN w_cti_encours_calcul_parametres ON 1=1 + JOIN activite.p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.p_factures_encours ON (p_factures.no_facture || '.EV' || substr(to_char(date_part('year', w_cti_encours_calcul_parametres.date_encours),'FM0000'),3,2) || to_char(date_part('month', w_cti_encours_calcul_parametres.date_encours),'FM00')) = p_factures_encours.no_facture + WHERE date_trunc('month',p_factures.date_fin) <= date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + p_factures.code_facture >= '1' AND + date_trunc('month',p_factures.date_vente) > date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + p_factures.no_facture NOT LIKE '%BG' AND + p_factures_lignes_c.montant_comptabilise <> 0 + GROUP BY + p_factures_encours.oid, + p_factures_encours.no_facture, + date_trunc('month',p_factures_lignes_c.date_fin), + p_factures_lignes_c.coefficient, + p_factures_lignes_c.coefficient_mco, + p_factures_lignes_c.rubrique_facturation_id, + p_factures_lignes_c.prestation_id, + p_factures_lignes_c.prix_unitaire, + p_factures_lignes_c.lieu_id, + p_factures_lignes_c.rubrique_comptabilisation_id, + p_factures_lignes_c.compte_produit_id + ; + -- Justificatif valorisation + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Justificatif (facturees debut de mois)'; + INSERT INTO activite.p_facture_encours_ligne_valorise_c( + no_facture, facture_id, date_debut, date_fin, lieu_id, nb_rubrique, + nb_prestation, coefficient, coefficient_mco, rubrique_facturation_id, + prestation_id, prix_unitaire, montant_valorise_total, montant_encours, type_ligne_code, mode_calcul_code, + mode_calcul_texte) + SELECT + p_factures_encours.no_facture, + p_factures_encours.oid AS facture_id, + MIN(p_factures_lignes_c.date_debut), + MAX(p_factures_lignes_c.date_fin), + CASE WHEN t_prestations.code LIKE 'GHS%' THEN p_sejours.lieu_sortie_id ELSE p_factures_lignes_c.lieu_id END, + SUM(p_factures_lignes_c.nb_rubrique), + SUM(p_factures_lignes_c.nb_prestation), + p_factures_lignes_c.coefficient, + p_factures_lignes_c.coefficient_mco, + p_factures_lignes_c.rubrique_facturation_id, + p_factures_lignes_c.prestation_id, + p_factures_lignes_c.prix_unitaire, + SUM(p_factures_lignes_c.montant_comptabilise), + SUM(p_factures_lignes_c.montant_comptabilise), + CASE + WHEN t_prestations.code = 'GHS' AND p_sejours.ghs_id > 0 THEN 'GHS' + WHEN t_prestations.code = 'GHS' AND p_sejours.ghs_id <= 0 THEN 'GHSNG' + WHEN t_prestations.code = 'EXH' AND p_sejours.ghs_id > 0 THEN 'EXH' + WHEN t_prestations.code = 'EXH' AND p_sejours.ghs_id <= 0 THEN 'EXHNG' + WHEN t_prestations.code = 'PJ' OR type_valorisation_non_facture = 'PJ' THEN 'PJ' + WHEN t_prestations.code = 'GMT' OR type_valorisation_non_facture = 'GMT' THEN 'GMT' + WHEN t_prestations.code = 'FJ' THEN 'FJ' + WHEN t_prestations.code = 'PMS' THEN 'PMS' + WHEN t_prestations.code = 'ENT' OR type_valorisation_non_facture = 'ENT' THEN 'ENT' + WHEN t_prestations.code IN ('SRC','STF','REA') THEN 'SSS' + WHEN t_prestations.code IN ('NN1','NN2','NN3') THEN 'NNX' + WHEN t_prestations.code IN ('FJA') THEN 'FJA' + WHEN t_prestations.code IN ('CPC') OR type_valorisation_non_facture = 'CP' THEN 'CPC' + WHEN t_prestations.code LIKE 'ATU' THEN 'ATU' + WHEN t_prestations.code LIKE 'FPU' THEN 'ATU' + WHEN t_prestations.code LIKE 'SE%' THEN 'SEH' + ELSE '' END AS type_ligne, + CASE + WHEN p_factures_encours.no_facture LIKE '%.EV%' AND p_factures_encours.code_sorti = '1' THEN 'FROMJVTSOR' + WHEN p_factures_encours.no_facture LIKE '%.EV%' AND p_factures_encours.code_sorti <> '1' THEN 'FROMJVTPRE' + ELSE 'NOJUSTIF'::text END AS mode_calcul_code, + CASE + WHEN p_factures_encours.no_facture LIKE '%.EV%' AND p_factures_encours.code_sorti = '1' THEN 'Encours depuis facturation (sorti)' + WHEN p_factures_encours.no_facture LIKE '%.EV%' AND p_factures_encours.code_sorti <> '1' THEN 'Encours depuis facturation (présent)' + ELSE 'Sans justificatif de valorisation'::text END AS mode_calcul_texte + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN w_cti_encours_calcul_parametres ON 1=1 + JOIN activite.p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN activite.p_factures_encours ON (p_factures.no_facture || '.EV' || substr(to_char(date_part('year', w_cti_encours_calcul_parametres.date_encours),'FM0000'),3,2) || to_char(date_part('month', w_cti_encours_calcul_parametres.date_encours),'FM00')) = p_factures_encours.no_facture + WHERE date_trunc('month',p_factures.date_fin) <= date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + p_factures.code_facture >= '1' AND + date_trunc('month',p_factures.date_vente) > date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + p_factures.no_facture NOT LIKE '%BG' AND + p_factures_lignes_c.montant_comptabilise <> 0 + GROUP BY 1,2,5,8,9,10,11,12,15,16,17 + ; + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Entetes (facturees debut de mois a cheval)'; + + -- Ajout encours + INSERT INTO activite.p_factures_encours( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + code_origine, + code_sorti, + date_encours, + date_calcul, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + type_sejour, + lieu_sortie_id, + date_groupage, + provider_id, + ghm_id, + filiere_soin_principale_id + ) + SELECT + p_factures.sejour_id, + p_factures.no_sejour, + p_factures.no_facture || '.EV' || substr(to_char(date_part('year', w_cti_encours_calcul_parametres.date_encours),'FM0000'),3,2) || to_char(date_part('month', w_cti_encours_calcul_parametres.date_encours),'FM00') AS no_facture_encours, + p_factures.no_facture_reference, + p_factures.date_debut, + p_factures.date_fin, + 'C' AS code_origine, + CASE + WHEN p_sejours.code_sorti = '1' AND p_sejours.type_sejour <> '3' AND date_trunc('month',p_sejours.date_sortie) <= date_trunc('month',w_cti_encours_calcul_parametres.date_encours) THEN '1' + WHEN p_sejours.type_sejour = '3' THEN '1' + ELSE '0' END AS code_sorti, + w_cti_encours_calcul_parametres.date_encours AS date_encours, + w_NOW AS date_calcul, + p_factures.tiers_payant_1_id, + p_factures.tiers_payant_2_id, + 0 AS tiers_payant_22_id, + p_factures.tiers_payant_0_id, + p_factures.ghs_id, + p_factures.ghs_bebe1_id, + p_factures.ghs_bebe2_id, + p_factures.ghs_bebe3_id, + p_factures.code_cp_demandee, + SUM(p_factures_lignes_c.montant_comptabilise) AS montant_encours_c, + SUM(p_factures_lignes_c.montant_comptabilise_0) AS montant_encours_0_c, + SUM(p_factures_lignes_c.montant_comptabilise_1) AS montant_encours_1_c, + SUM(p_factures_lignes_c.montant_comptabilise_2) AS montant_encours_2_c, + 0 AS montant_encours_22_c, + 0 AS montant_encours_h, + 0 AS montant_encours_0_h, + 0 AS montant_encours_1_h, + 0 AS montant_encours_2_h, + 0 AS montant_encours_22_h, + p_sejours.date_entree, + p_sejours.heure_entree, + p_sejours.date_sortie, + p_sejours.heure_sortie, + p_sejours.type_sejour, + p_sejours.lieu_sortie_id, + p_sejours.date_groupage, + p_sejours.provider_id, + p_sejours.ghm_id, + p_sejours.filiere_soin_principale_id + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN w_cti_encours_calcul_parametres ON 1=1 + JOIN activite.p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + WHERE date_trunc('month',p_factures.date_debut) <= date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + date_trunc('month',p_factures.date_fin) > date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + date_trunc('month',p_factures_lignes_c.date_debut) <= date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + p_factures.code_facture >= '1' AND + date_trunc('month',p_factures.date_vente) > date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + p_factures.no_facture NOT LIKE '%BG' AND + p_factures_lignes_c.montant_comptabilise <> 0 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,30,31,32,33,34,35,36,37,38,39 + ; + + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Lignes (facturees debut de mois a cheval)'; + INSERT INTO activite.p_factures_encours_lignes_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id, + nb_prestation, + rubrique_comptabilisation_id, + compte_produit_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + ) + SELECT + p_factures_encours.oid AS facture_id, + p_factures_encours.no_facture AS no_facture_encours, + MIN(p_factures_lignes_c.date_debut), + MAX(p_factures_lignes_c.date_fin), + SUM(p_factures_lignes_c.nb_rubrique), + p_factures_lignes_c.coefficient, + p_factures_lignes_c.coefficient_mco, + p_factures_lignes_c.rubrique_facturation_id, + p_factures_lignes_c.prestation_id, + p_factures_lignes_c.prix_unitaire, + p_factures_lignes_c.lieu_id, + SUM(p_factures_lignes_c.nb_prestation), + p_factures_lignes_c.rubrique_comptabilisation_id, + p_factures_lignes_c.compte_produit_id, + SUM(p_factures_lignes_c.montant_comptabilise), + SUM(p_factures_lignes_c.montant_comptabilise_0), + SUM(p_factures_lignes_c.montant_comptabilise_1), + SUM(p_factures_lignes_c.montant_comptabilise_2), + SUM(p_factures_lignes_c.montant_comptabilise_22) + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN w_cti_encours_calcul_parametres ON 1=1 + JOIN activite.p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.p_factures_encours ON (p_factures.no_facture || '.EV' || substr(to_char(date_part('year', w_cti_encours_calcul_parametres.date_encours),'FM0000'),3,2) || to_char(date_part('month', w_cti_encours_calcul_parametres.date_encours),'FM00')) = p_factures_encours.no_facture + WHERE date_trunc('month',p_factures.date_debut) <= date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + date_trunc('month',p_factures.date_fin) > date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + date_trunc('month',p_factures_lignes_c.date_debut) <= date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + p_factures.code_facture >= '1' AND + date_trunc('month',p_factures.date_vente) > date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + p_factures.no_facture NOT LIKE '%BG' AND + p_factures_lignes_c.montant_comptabilise <> 0 + GROUP BY + p_factures_encours.oid, + p_factures_encours.no_facture, + date_trunc('month',p_factures_lignes_c.date_fin), + p_factures_lignes_c.coefficient, + p_factures_lignes_c.coefficient_mco, + p_factures_lignes_c.rubrique_facturation_id, + p_factures_lignes_c.prestation_id, + p_factures_lignes_c.prix_unitaire, + p_factures_lignes_c.lieu_id, + p_factures_lignes_c.rubrique_comptabilisation_id, + p_factures_lignes_c.compte_produit_id + ; + + -- Justificatif valorisation + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Justificatif (facturees debut de mois a cheval)'; + INSERT INTO activite.p_facture_encours_ligne_valorise_c( + no_facture, facture_id, date_debut, date_fin, lieu_id, nb_rubrique, + nb_prestation, coefficient, coefficient_mco, rubrique_facturation_id, + prestation_id, prix_unitaire, montant_valorise_total, montant_encours, type_ligne_code, mode_calcul_code, + mode_calcul_texte) + SELECT + p_factures_encours.no_facture, + p_factures_encours.oid AS facture_id, + MIN(p_factures_lignes_c.date_debut), + MAX(p_factures_lignes_c.date_fin), + CASE WHEN t_prestations.code LIKE 'GHS%' THEN p_sejours.lieu_sortie_id ELSE p_factures_lignes_c.lieu_id END, + SUM(p_factures_lignes_c.nb_rubrique), + SUM(p_factures_lignes_c.nb_prestation), + p_factures_lignes_c.coefficient, + p_factures_lignes_c.coefficient_mco, + p_factures_lignes_c.rubrique_facturation_id, + p_factures_lignes_c.prestation_id, + p_factures_lignes_c.prix_unitaire, + SUM(p_factures_lignes_c.montant_comptabilise), + SUM(CASE WHEN date_trunc('month',p_factures_lignes_c.date_debut) <= date_trunc('month',w_cti_encours_calcul_parametres.date_encours) THEN p_factures_lignes_c.montant_comptabilise ELSE 0 END), + CASE + WHEN t_prestations.code = 'GHS' AND p_sejours.ghs_id > 0 THEN 'GHS' + WHEN t_prestations.code = 'GHS' AND p_sejours.ghs_id <= 0 THEN 'GHSNG' + WHEN t_prestations.code = 'EXH' AND p_sejours.ghs_id > 0 THEN 'EXH' + WHEN t_prestations.code = 'EXH' AND p_sejours.ghs_id <= 0 THEN 'EXHNG' + WHEN t_prestations.code = 'PJ' OR type_valorisation_non_facture = 'PJ' THEN 'PJ' + WHEN t_prestations.code = 'GMT' OR type_valorisation_non_facture = 'GMT' THEN 'GMT' + WHEN t_prestations.code = 'FJ' THEN 'FJ' + WHEN t_prestations.code = 'PMS' THEN 'PMS' + WHEN t_prestations.code = 'ENT' OR type_valorisation_non_facture = 'ENT' THEN 'ENT' + WHEN t_prestations.code IN ('SRC','STF','REA') THEN 'SSS' + WHEN t_prestations.code IN ('NN1','NN2','NN3') THEN 'NNX' + WHEN t_prestations.code IN ('FJA') THEN 'FJA' + WHEN t_prestations.code IN ('CPC') OR type_valorisation_non_facture = 'CP' THEN 'CPC' + WHEN t_prestations.code LIKE 'ATU' THEN 'ATU' + WHEN t_prestations.code LIKE 'FPU' THEN 'ATU' + WHEN t_prestations.code LIKE 'SE%' THEN 'SEH' + ELSE '' END AS type_ligne, + CASE + WHEN p_factures_encours.no_facture LIKE '%.EV%' AND p_factures_encours.code_sorti = '1' THEN 'FROMJVTSOR' + WHEN p_factures_encours.no_facture LIKE '%.EV%' AND p_factures_encours.code_sorti <> '1' THEN 'FROMJVTPRE' + ELSE 'NOJUSTIF'::text END AS mode_calcul_code, + CASE + WHEN p_factures_encours.no_facture LIKE '%.EV%' AND p_factures_encours.code_sorti = '1' THEN 'Encours depuis facturation (sorti)' + WHEN p_factures_encours.no_facture LIKE '%.EV%' AND p_factures_encours.code_sorti <> '1' THEN 'Encours depuis facturation (présent)' + ELSE 'Sans justificatif de valorisation'::text END AS mode_calcul_texte + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN w_cti_encours_calcul_parametres ON 1=1 + JOIN activite.p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN activite.p_factures_encours ON (p_factures.no_facture || '.EV' || substr(to_char(date_part('year', w_cti_encours_calcul_parametres.date_encours),'FM0000'),3,2) || to_char(date_part('month', w_cti_encours_calcul_parametres.date_encours),'FM00')) = p_factures_encours.no_facture + WHERE date_trunc('month',p_factures.date_debut) <= date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + date_trunc('month',p_factures.date_fin) > date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + p_factures.code_facture >= '1' AND + date_trunc('month',p_factures.date_vente) > date_trunc('month',w_cti_encours_calcul_parametres.date_encours) AND + p_factures.no_facture NOT LIKE '%BG' AND + p_factures_lignes_c.montant_comptabilise <> 0 + GROUP BY 1,2,5,8,9,10,11,12,15,16,17 + ; + END IF; + + END IF; + END LOOP; + -- Moulinettes sur encours déjà calculés + IF EXISTS (SELECT valeur FROM activite.t_divers WHERE code = 'ENCOURSACTIVE' AND valeur = '1') THEN + -- Réactualisation oid séjour + UPDATE activite.p_factures_encours + SET no_sejour = p_factures.no_sejour + FROM activite.p_factures + WHERE code_origine = 'C' AND + p_factures_encours.no_facture_reference = p_factures.no_facture AND + (p_factures_encours.no_sejour = '' OR p_factures_encours.no_sejour IS NULL); + UPDATE activite.p_factures_encours + SET no_sejour = p_sejours.no_sejour + FROM activite.p_sejours + WHERE code_origine = 'C' AND + split_part(p_factures_encours.no_facture,'.',1) = 'E' || p_sejours.no_sejour AND + (p_factures_encours.no_sejour = '' OR p_factures_encours.no_sejour IS NULL); + UPDATE activite.p_factures_encours + SET no_sejour = p_sejours.no_sejour + FROM activite.p_sejours + WHERE code_origine = 'C' AND + split_part(p_factures_encours.no_facture,'.',1) = p_sejours.no_sejour AND + (p_factures_encours.no_sejour = '' OR p_factures_encours.no_sejour IS NULL); + UPDATE activite.p_factures_encours + SET sejour_id = p_sejours.oid + FROM activite.p_sejours + WHERE p_factures_encours.no_sejour = p_sejours.no_sejour AND + sejour_id IS DISTINCT FROM p_sejours.oid; + + UPDATE activite.p_factures_encours + SET no_sejour = split_part(p_factures_encours.no_facture,'.',1), sejour_id = 0 + WHERE p_factures_encours.no_sejour IS NULL OR p_factures_encours.no_sejour = ''; + + UPDATE activite.p_factures_encours + SET sejour_id = 0 + WHERE no_sejour NOT IN (SELECT no_sejour FROM activite.p_sejours) AND + sejour_id <> 0; + + + UPDATE activite.p_factures_encours + SET lieu_sortie_id = p_sejours.lieu_sortie_id + FROM activite.p_sejours + WHERE p_sejours.no_sejour = p_factures_encours.no_sejour AND + p_sejours.lieu_sortie_id <> p_factures_encours.lieu_sortie_id + ; + -- Ajout factures du mois comptabilisées en début de mois suivant (avant date cloture encours) + + RAISE NOTICE '%. %' , w_date_encours_YYMM, 'Ajout factures comptabilisee debut du mois suivant'; + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cti_encours_vente') THEN + CREATE TEMP TABLE w_cti_encours_vente + ( + no_sejour text, + date_encours date, + no_facture text, + no_facture_encours text + ); + END IF; + TRUNCATE w_cti_encours_vente; + INSERT INTO w_cti_encours_vente + SELECT p_factures.no_sejour, + date(date_trunc('month', p_factures.date_fin) + interval '1 month' - interval '1 day') AS date_encours, + (MAX(ARRAY[p_factures.date_vente::text, p_factures.no_facture]))[2] AS no_facture, + (MAX(ARRAY[p_factures.date_vente::text, p_factures.no_facture]))[2] || '.EV' || to_char(p_factures.date_fin,'YYMM') AS no_facture_encours + FROM activite.p_factures + JOIN (SELECT + COALESCE( + MAX(CASE WHEN no_facture LIKE '%.EV%' THEN date(date_encours+interval '1 day') ELSE NULL END), + MIN(date(date_trunc('month',date_encours))) + ) AS date_encours_debut, + MAX(date_encours) AS date_encours_fin + FROM activite.p_factures_encours + WHERE date_encours >= '20140101' AND + code_origine = 'C') w_periode_encours ON 1=1 + JOIN activite.t_divers ON t_divers.code = 'DATEENCOURS' + LEFT JOIN activite.p_factures p_factures_vente ON + p_factures_vente.no_sejour = p_factures.no_sejour AND + p_factures_vente.date_vente BETWEEN date_trunc('month', p_factures.date_fin) AND date_trunc('month', p_factures.date_fin) + interval '1 month' - interval '1 day' + LEFT JOIN activite.p_factures_encours ON + p_factures_encours.no_sejour = p_factures.no_sejour AND + code_origine = 'C' AND + p_factures_encours.date_encours BETWEEN date_trunc('month', p_factures.date_fin) AND date_trunc('month', p_factures.date_fin) + interval '1 month' - interval '1 day' + WHERE p_factures.date_fin BETWEEN date_encours_debut AND date_encours_fin AND + p_factures.date_vente BETWEEN date_trunc('month', p_factures.date_fin) + interval '1 month' - interval '1 day' AND date_trunc('month', p_factures.date_fin) + interval '1 month' - interval '1 day' + (t_divers.valeur||' day')::INTERVAL AND + p_factures.montant_facture_c > 0 AND + p_factures.no_facture NOT LIKE '%BG' AND + p_factures.code_vente = '1' AND + p_factures_vente.no_facture IS NULL AND + p_factures_encours.no_facture IS NULL + GROUP BY 1,2,to_char(p_factures.date_fin,'YYMM') + ORDER BY 1,2 + ; + INSERT INTO activite.p_factures_encours( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + code_origine, + code_sorti, + date_encours, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + type_sejour, + lieu_sortie_id, + date_groupage, + provider_id, + ghm_id, + filiere_soin_principale_id + ) + SELECT + p_sejours.oid, + p_sejours.no_sejour, + w_cti_encours_vente.no_facture_encours, + p_factures.no_facture_reference, + p_factures.date_debut, + p_factures.date_fin, + 'C' AS code_origine, + '1' AS code_sorti, + w_cti_encours_vente.date_encours AS date_encours, + p_factures.tiers_payant_1_id, + p_factures.tiers_payant_2_id, + 0 AS tiers_payant_22_id, + p_factures.tiers_payant_0_id, + p_factures.ghs_id, + p_factures.ghs_bebe1_id, + p_factures.ghs_bebe2_id, + p_factures.ghs_bebe3_id, + p_factures.code_cp_demandee, + p_factures.montant_facture_c, + p_factures.montant_facture_0_c, + p_factures.montant_facture_1_c, + p_factures.montant_facture_2_c, + 0 AS montant_encours_22_c, + 0 AS montant_encours_h, + 0 AS montant_encours_0_h, + 0 AS montant_encours_1_h, + 0 AS montant_encours_2_h, + 0 AS montant_encours_22_h, + p_sejours.date_entree, + p_sejours.heure_entree, + p_sejours.date_sortie, + p_sejours.heure_sortie, + p_sejours.type_sejour, + p_sejours.lieu_sortie_id, + p_sejours.date_groupage, + p_sejours.provider_id, + p_sejours.ghm_id, + p_sejours.filiere_soin_principale_id + FROM w_cti_encours_vente + JOIN activite.p_factures ON w_cti_encours_vente.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + ; + INSERT INTO activite.p_factures_encours_lignes_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id, + nb_prestation, + rubrique_comptabilisation_id, + compte_produit_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + ) + SELECT + p_factures_encours.oid AS facture_id, + w_cti_encours_vente.no_facture_encours, + MIN(p_factures_lignes_c.date_debut), + MAX(p_factures_lignes_c.date_fin), + SUM(p_factures_lignes_c.nb_rubrique), + p_factures_lignes_c.coefficient, + p_factures_lignes_c.coefficient_mco, + p_factures_lignes_c.rubrique_facturation_id, + p_factures_lignes_c.prestation_id, + p_factures_lignes_c.prix_unitaire, + p_factures_lignes_c.lieu_id, + SUM(p_factures_lignes_c.nb_prestation), + p_factures_lignes_c.rubrique_comptabilisation_id, + p_factures_lignes_c.compte_produit_id, + SUM(p_factures_lignes_c.montant_facture), + SUM(p_factures_lignes_c.montant_facture_0), + SUM(p_factures_lignes_c.montant_facture_1), + SUM(p_factures_lignes_c.montant_facture_2), + SUM(p_factures_lignes_c.montant_facture_22) + FROM w_cti_encours_vente + JOIN activite.p_factures ON w_cti_encours_vente.no_facture = p_factures.no_facture + JOIN activite.p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.p_factures_encours ON w_cti_encours_vente.no_facture_encours = p_factures_encours.no_facture + WHERE p_factures_lignes_c.montant_facture <> 0 AND + p_factures_lignes_c.date_debut <= w_cti_encours_vente.date_encours AND + p_factures_lignes_c.rubrique_facturation_id IS NOT NULL + GROUP BY + p_factures_encours.oid, + w_cti_encours_vente.no_facture_encours, + p_factures_lignes_c.coefficient, + p_factures_lignes_c.coefficient_mco, + p_factures_lignes_c.rubrique_facturation_id, + p_factures_lignes_c.prestation_id, + p_factures_lignes_c.prix_unitaire, + p_factures_lignes_c.lieu_id, + p_factures_lignes_c.rubrique_comptabilisation_id, + p_factures_lignes_c.compte_produit_id + ; + END IF; + + -- désactivation index + RAISE NOTICE '%' , 'Finalisation. Reactivation index'; + PERFORM base.cti_enable_index('activite', 'i_factures_encours_2'); + PERFORM base.cti_enable_index('activite', 'i_factures_encours_4'); + PERFORM base.cti_enable_index('activite', 'i_factures_encours_5'); + PERFORM base.cti_enable_index('activite', 'i_factures_encours_6'); + PERFORM base.cti_enable_index('activite', 'i_factures_encours_7'); + PERFORM base.cti_enable_index('activite', 'i_factures_encours_8'); + PERFORM base.cti_enable_index('activite', 'i_factures_encours_9'); + PERFORM base.cti_enable_index('activite', 'i_factures_encours_10'); + PERFORM base.cti_enable_index('activite', 'i_factures_encours_11'); + PERFORM base.cti_enable_index('activite', 'i_factures_encours_lignes_c_2'); + PERFORM base.cti_enable_index('activite', 'i_factures_encours_lignes_c_3'); + PERFORM base.cti_enable_index('activite', 'i_factures_encours_lignes_c_4'); + PERFORM base.cti_enable_index('activite', 'i_factures_encours_lignes_c_5'); + PERFORM base.cti_enable_index('activite', 'i_factures_encours_lignes_c_6'); + PERFORM base.cti_enable_index('activite', 'i_factures_encours_lignes_c_7'); + PERFORM base.cti_enable_index('activite', 'i_factures_encours_lignes_c_8'); + + -- Reconstitution LPP et UCD sur encours + IF EXISTS (SELECT valeur FROM activite.t_divers WHERE code = 'ENCOURSACTIVE' AND valeur = '1') THEN + UPDATE activite.p_factures_encours_lignes_c + SET lpp_id = subview.lpp_id, ucd_id = subview.ucd_id + FROM activite.p_factures_encours, + ( + SELECT p_factures.no_sejour, + prestation_id, + ABS(montant_facture + montant_encours) AS montant, + COUNT(DISTINCT lpp_id::text||ucd_id::text), + MAX(lpp_id) AS lpp_id, + MAX(ucd_id) AS ucd_id + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + WHERE (montant_facture <> 0 OR montant_encours <> 0) AND + (ucd_id <> 0 OR lpp_id <> 0) + GROUP BY 1,2,3 + ) subview + WHERE p_factures_encours.no_facture = p_factures_encours_lignes_c.no_facture AND + p_factures_encours.no_sejour = subview.no_sejour AND + p_factures_encours_lignes_c.prestation_id = subview.prestation_id AND + p_factures_encours_lignes_c.montant_encours = subview.montant AND + COALESCE(p_factures_encours_lignes_c.lpp_id,0) = 0 AND + COALESCE(p_factures_encours_lignes_c.ucd_id,0) = 0 + ; + + UPDATE activite.p_facture_encours_ligne_valorise_c + SET lpp_id = subview.lpp_id, ucd_id = subview.ucd_id + FROM ( + SELECT p_factures_encours_lignes_c.no_facture, + prestation_id, + ABS(montant_encours) AS montant, + COUNT(DISTINCT lpp_id::text||ucd_id::text), + MAX(lpp_id) AS lpp_id, + MAX(ucd_id) AS ucd_id + FROM activite.p_factures_encours_lignes_c + WHERE montant_encours <> 0 AND + (ucd_id <> 0 OR lpp_id <> 0) + GROUP BY 1,2,3 + ) subview + WHERE p_facture_encours_ligne_valorise_c.no_facture = subview.no_facture AND + p_facture_encours_ligne_valorise_c.prestation_id = subview.prestation_id AND + p_facture_encours_ligne_valorise_c.montant_encours = subview.montant AND + COALESCE(p_facture_encours_ligne_valorise_c.lpp_id,0) = 0 AND + COALESCE(p_facture_encours_ligne_valorise_c.ucd_id,0) = 0 + ; + END IF; + + -- Récupérer le bon compte sur les ventes (WEB100T) car quelque fois, le compte des ventes est provisoire (02020000) au moment des en cours + IF EXISTS (SELECT valeur FROM activite.t_divers WHERE code = 'ENCOURSACTIVE' AND valeur = '1') THEN + IF (SELECT count(*) FROM activite.p_factures_encours_lignes_c JOIN activite.t_compte ON compte_produit_id = t_compte.oid WHERE t_compte.code LIKE '02%') > 0 THEN + UPDATE activite.p_factures_encours_lignes_c + SET compte_produit_id = subview.compte_produit_id + FROM + ( + SELECT p_factures_encours_lignes_c.no_facture, p_factures_encours_lignes_c.rubrique_facturation_id, p_factures_encours_lignes_c.CTID AS toCTID, MAX(subview.compte_produit_id) AS compte_produit_id + FROM activite.p_factures_encours_lignes_c + JOIN activite.t_compte ON compte_produit_id = t_compte.oid + JOIN (SELECT no_facture, rubrique_facturation_id, MAX(compte_produit_id) AS compte_produit_id FROM activite.p_factures_lignes_c GROUP BY 1,2) subview ON + subview.no_facture = split_part(p_factures_encours_lignes_c.no_facture,'.EV',1) AND + subview.rubrique_facturation_id = p_factures_encours_lignes_c.rubrique_facturation_id + WHERE p_factures_encours_lignes_c.no_facture LIKE '%EV%' AND + t_compte.code LIKE '02%' + GROUP BY 1,2,3 + ) subview + WHERE subview.no_facture = p_factures_encours_lignes_c.no_facture AND + subview.rubrique_facturation_id = p_factures_encours_lignes_c.rubrique_facturation_id AND + p_factures_encours_lignes_c.CTID = toCTID + ; + END IF; + END IF; + -- Initialiser les filieres de soin anterieurs a partir de la valeur courante + IF EXISTS (SELECT valeur FROM activite.t_divers WHERE code = 'ENCOURSACTIVE' AND valeur = '1') THEN + UPDATE activite.p_factures_encours + SET filiere_soin_principale_id = p_sejours.filiere_soin_principale_id + FROM activite.p_sejours + WHERE p_factures_encours.no_sejour = p_sejours.no_sejour AND + p_factures_encours.filiere_soin_principale_id = 0 AND + p_sejours.filiere_soin_principale_id <> 0 + ; + END IF; + RETURN 'OK' ; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_ajust_encours.yaml b/db/schema2/functions/cti_ajust_encours.yaml new file mode 100644 index 0000000..313b965 --- /dev/null +++ b/db/schema2/functions/cti_ajust_encours.yaml @@ -0,0 +1,356 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + BEGIN + -- Alimentation des nouveaux champs si pas remplis + IF EXISTS ( + SELECT no_facture + FROM activite.p_factures_encours + WHERE p_factures_encours.date_entree IS NULL OR + p_factures_encours.heure_entree IS NULL OR + p_factures_encours.date_sortie IS NULL OR + p_factures_encours.heure_sortie IS NULL OR + p_factures_encours.type_sejour IS NULL OR + p_factures_encours.date_groupage IS NULL OR + p_factures_encours.provider_id IS NULL OR + p_factures_encours.ghm_id IS NULL + ) THEN + RAISE NOTICE '%' , 'Initialisation nouveaux champs'; + + UPDATE activite.p_factures_encours SET + date_entree = COALESCE(p_factures_encours.date_entree,p_sejours.date_entree), + heure_entree = COALESCE(p_factures_encours.heure_entree,p_sejours.heure_entree), + date_sortie = COALESCE(p_factures_encours.date_sortie,p_sejours.date_sortie), + heure_sortie = COALESCE(p_factures_encours.heure_sortie,p_sejours.heure_sortie), + type_sejour = COALESCE(p_factures_encours.type_sejour,p_sejours.type_sejour), + date_groupage = COALESCE(p_factures_encours.date_groupage,p_sejours.date_groupage), + provider_id = COALESCE(p_factures_encours.provider_id,p_sejours.provider_id), + ghm_id = COALESCE(p_factures_encours.ghm_id,p_sejours.ghm_id) + FROM activite.p_sejours + WHERE p_factures_encours.code_origine = 'C' AND + p_factures_encours.no_sejour = p_sejours.no_sejour AND + ( + p_factures_encours.date_entree IS NULL OR + p_factures_encours.heure_entree IS NULL OR + p_factures_encours.date_sortie IS NULL OR + p_factures_encours.heure_sortie IS NULL OR + p_factures_encours.type_sejour IS NULL OR + p_factures_encours.date_groupage IS NULL OR + p_factures_encours.provider_id IS NULL OR + p_factures_encours.ghm_id IS NULL + ) + ; + -- Alimentation des nouveaux champs si pas remplis et séjour non trouvé + UPDATE activite.p_factures_encours SET + date_entree = COALESCE(p_factures_encours.date_entree,p_factures_encours.date_debut), + heure_entree = COALESCE(p_factures_encours.heure_entree,9), + date_sortie = COALESCE(p_factures_encours.date_sortie,p_factures_encours.date_fin), + heure_sortie = COALESCE(p_factures_encours.heure_sortie,1300), + type_sejour = COALESCE(p_factures_encours.type_sejour), + date_groupage = COALESCE(p_factures_encours.date_groupage,'20991231'), + provider_id = COALESCE(p_factures_encours.provider_id), + ghm_id = COALESCE(p_factures_encours.ghm_id,0) + WHERE p_factures_encours.code_origine = 'C' AND + ( + p_factures_encours.date_entree IS NULL OR + p_factures_encours.heure_entree IS NULL OR + p_factures_encours.date_sortie IS NULL OR + p_factures_encours.heure_sortie IS NULL OR + p_factures_encours.type_sejour IS NULL OR + p_factures_encours.date_groupage IS NULL OR + p_factures_encours.provider_id IS NULL OR + p_factures_encours.ghm_id IS NULL + ) + ; + -- Alimentation du nouveau champ type de séjour si séjour non trouvé selon prestations + UPDATE activite.p_factures_encours + SET type_sejour = '1' + WHERE type_sejour IS NULL AND + oid IN ( + SELECT p_factures_encours_lignes_c.facture_id + FROM activite.p_factures_encours_lignes_c + JOIN activite.p_factures_encours ON p_factures_encours.oid = p_factures_encours_lignes_c.facture_id + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_factures_encours.code_origine = 'C' AND + p_factures_encours.type_sejour IS NULL AND + t_prestations.code IN ('GHS', 'PJ') AND + (p_factures_encours.date_debut <> p_factures_encours.date_fin OR + code_sorti <> '1' + ) + ) + ; + UPDATE activite.p_factures_encours + SET type_sejour = '2' + WHERE type_sejour IS NULL AND + oid IN ( + SELECT p_factures_encours_lignes_c.facture_id + FROM activite.p_factures_encours_lignes_c + JOIN activite.p_factures_encours ON p_factures_encours.oid = p_factures_encours_lignes_c.facture_id + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_factures_encours.code_origine = 'C' AND + p_factures_encours.type_sejour IS NULL AND + t_prestations.code IN ('GHS', 'IGM', 'IGM', 'IGM', 'IMD', 'IMI') AND + p_factures_encours.date_debut = p_factures_encours.date_fin AND + p_factures_encours.code_sorti = '1' + ) + ; + UPDATE activite.p_factures_encours + SET type_sejour = '5' + WHERE type_sejour IS NULL AND + oid IN ( + SELECT p_factures_encours_lignes_c.facture_id + FROM activite.p_factures_encours_lignes_c + JOIN activite.p_factures_encours ON p_factures_encours.oid = p_factures_encours_lignes_c.facture_id + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_factures_encours.code_origine = 'C' AND + p_factures_encours.type_sejour IS NULL AND + t_prestations.code IN ('D09','D13') + ) + ; + UPDATE activite.p_factures_encours + SET type_sejour = '3' + WHERE type_sejour IS NULL AND + oid IN ( + SELECT p_factures_encours_lignes_c.facture_id + FROM activite.p_factures_encours_lignes_c + JOIN activite.p_factures_encours ON p_factures_encours.oid = p_factures_encours_lignes_c.facture_id + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_factures_encours.code_origine = 'C' AND + p_factures_encours.type_sejour IS NULL AND + t_prestations.code IN ('SE1', 'SE2', 'SE3', 'SE4', 'ATU', 'FPU', 'FFM') + ) + ; + UPDATE activite.p_factures_encours + SET type_sejour = '1' + WHERE type_sejour IS NULL AND + oid IN ( + SELECT p_factures_encours_lignes_c.facture_id + FROM activite.p_factures_encours_lignes_c + JOIN activite.p_factures_encours ON p_factures_encours.oid = p_factures_encours_lignes_c.facture_id + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_factures_encours.code_origine = 'C' AND + p_factures_encours.type_sejour IS NULL AND + t_prestations.code IN ('GHS', 'PJ') AND + p_factures_encours.date_debut <> p_factures_encours.date_fin AND + code_sorti = '1' + ); + UPDATE activite.p_factures_encours + SET type_sejour = '9' + WHERE p_factures_encours.code_origine = 'C' AND + type_sejour IS NULL; + + -- Cas où les GHM sont à null + UPDATE activite.p_factures_encours + SET ghm_id = 0 + WHERE ghm_id IS NULL; + END IF; + RAISE NOTICE '%' , 'Maintenance lieu des lignes encours'; + + -- Actualisation du lieu selon nouveaux mouvements + UPDATE activite.p_factures_encours_lignes_c + SET lieu_id = 0 + WHERE lieu_id NOT IN + (SELECT oid FROM activite.t_lieux) + ; + UPDATE activite.p_factures_encours_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite.p_factures_encours + JOIN activite.p_mouvements_sejour ON p_factures_encours.no_sejour = p_mouvements_sejour.no_sejour + JOIN activite.p_sejours ON p_sejours.no_sejour = p_factures_encours.no_sejour + WHERE p_factures_encours_lignes_c.facture_id = p_factures_encours.oid AND + activite.p_factures_encours_lignes_c.date_debut = p_mouvements_sejour.date AND + ( + p_mouvements_sejour.heure_fin = 240000 OR + p_mouvements_sejour.nb_sorties_directes = 1 OR + p_mouvements_sejour.nb_seances = 1 AND p_sejours.type_sejour = '5' OR + p_mouvements_sejour.nb_externes = 1 OR + p_mouvements_sejour.nb_ambulatoires = 1 + ) AND + p_factures_encours_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + -- Actualisation du lieu de sortie selon nouveaux mouvements + RAISE NOTICE '%' , 'Maintenance lieu de sortie facture encours'; + + UPDATE activite.p_factures_encours + SET lieu_sortie_id = subview.lieu_sortie_id + FROM ( + SELECT p_factures_encours_lignes_c.facture_id, + (MAX(array[p_factures_encours_lignes_c.date_fin::text, lieu_id::text]))[2]::bigint AS lieu_sortie_id + FROM activite.p_factures_encours_lignes_c + JOIN activite.p_factures_encours ON p_factures_encours.oid = p_factures_encours_lignes_c.facture_id + WHERE p_factures_encours.lieu_sortie_id IS NULL + GROUP BY 1 + ) subview + WHERE p_factures_encours.oid = subview.facture_id AND + p_factures_encours.lieu_sortie_id <> subview.lieu_sortie_id; + -- Création de séjours fictifs pour séjours supprimés depuis création en cours + RAISE NOTICE '%' , 'Creation sejours fictifs si supprimes depuis creation en cours'; + PERFORM setval('activite.s_sejours'::regclass, + (SELECT COALESCE(MAX(substr(to_char(oid, 'FM00000000000000000000'),11,10))::bigint,0::bigint)+1 FROm activite.p_sejours)); + + DROP TABLE IF EXISTS w_fac_enc_sej; + CREATE TEMP TABLE w_fac_enc_sej AS + SELECT p_factures_encours.no_sejour, + (MAX(ARRAY[date_encours::text,p_factures_encours.oid::text]))[2] AS oid + FROM activite.p_factures_encours + LEFT JOIN activite.p_sejours ON p_factures_encours.no_sejour = p_sejours.no_sejour + WHERE p_sejours.no_sejour IS NULL + GROUP BY 1; + + ANALYSE w_fac_enc_sej + ; + + INSERT INTO activite.p_sejours ( + oid, + finess, + no_sejour, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + lieu_sortie_id, + medecin_sejour_id, + ghs_id, + ghm_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + est_budget_global, + code_postal_id + ) + SELECT + (substr(to_char(p_factures_encours.oid, 'FM00000000000000000000'),1,10) || to_char(nextval('activite.s_sejours'::regclass),'FM0000000000'))::bigint AS oid, + p_factures_encours.finess, + p_factures_encours.no_sejour, + '*DEL*'||p_factures_encours.no_sejour AS code_original, + p_factures_encours.no_sejour no_patient, + p_factures_encours.date_entree, + p_factures_encours.heure_entree, + p_factures_encours.date_sortie, + p_factures_encours.heure_sortie, + '1'::text AS code_sexe, + 0::numeric AS age, + base.cti_to_number(p_factures_encours.code_sorti), + 0::numeric AS code_prevu, + '9'::text AS type_sejour, + 0::bigint AS lieu_sortie_id, + 0::bigint AS medecin_sejour_id, + p_factures_encours.ghs_id, + p_factures_encours.ghm_id, + 0::bigint AS ghs_bebe1_id, + 0::bigint AS ghs_bebe2_id, + 0::bigint AS ghs_bebe3_id, + p_factures_encours.date_groupage, + p_factures_encours.code_cp_demandee, + 0::bigint AS mode_traitement_id, + '8'::text AS mode_entree, + ''::text AS provenance, + '8'::text AS mode_sortie, + ''::text AS destination, + p_factures_encours.tiers_payant_0_id, + p_factures_encours.tiers_payant_1_id, + p_factures_encours.tiers_payant_2_id, + p_factures_encours.tiers_payant_22_id, + 0::numeric AS est_budget_global, + 0::bigint AS code_postal_id + FROM activite.p_factures_encours + JOIN w_fac_enc_sej ON p_factures_encours.oid = w_fac_enc_sej.oid + ; + + UPDATE activite.p_sejours + SET type_sejour = '9', etat = '' + FROM activite.p_factures_encours + WHERE p_factures_encours.no_sejour = p_sejours.no_sejour AND + p_sejours.etat = 'I' + ; + + -- Avec patients correspondant + INSERT INTO activite.p_patients(finess, no_patient, nom, prenom, date_naissance, code_sexe) + SELECT '', p_sejours.no_patient, 'Séjour supprimé : ' || p_sejours.no_sejour, '', NULL, '1' + FROM activite.p_sejours + LEFT JOIN activite.p_patients ON (p_sejours.no_patient = p_patients.no_patient) + WHERE p_sejours.code_original LIKE '*DEL%' AND + p_patients.no_patient IS NULL; + + -- Mise à jour des factures encours avec ces sejours + UPDATE activite.p_factures_encours + SET sejour_id = p_sejours.oid + FROM activite.p_sejours + WHERE p_factures_encours.no_sejour = p_sejours.no_sejour AND + sejour_id IS DISTINCT FROM p_sejours.oid; + + + + -- Correction des totaux encours + RAISE NOTICE '%' , 'Correction totaux encours'; + + UPDATE activite.p_factures_encours SET + montant_encours_c = subview.montant_encours, + montant_encours_0_c = subview.montant_encours_0, + montant_encours_1_c = subview.montant_encours_1, + montant_encours_2_c = subview.montant_encours_2, + montant_encours_22_c = subview.montant_encours_22 + FROM ( + SELECT facture_id, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22 + FROM activite.p_factures_encours_lignes_c + JOIN activite.p_factures_encours ON facture_id = oid + GROUP BY 1 + HAVING SUM(montant_encours) <> MAX(montant_encours_c) + ) subview + WHERE p_factures_encours.oid = subview.facture_id + ; + -- Correction facture reference + RAISE NOTICE '%' , 'Correction facture reference'; + UPDATE activite.p_factures_encours + SET no_facture_reference = p_factures.no_facture + FROM activite.p_factures + WHERE p_factures_encours.no_sejour = p_factures.no_sejour AND + p_factures_encours.date_debut BETWEEN p_factures.date_debut AND p_factures.date_fin AND + p_factures.no_facture = p_factures.no_facture_reference AND + p_factures_encours.no_facture_reference <> p_factures.no_facture; + + + UPDATE activite.p_factures_reference + SET + montant_encours = p_factures.montant_encours_c + p_factures.montant_encours_h, + montant_encours_c = p_factures.montant_encours_c, + montant_encours_h = p_factures.montant_encours_h, + montant_encours_0 = p_factures.montant_encours_0_c + p_factures.montant_encours_0_h, + montant_encours_0_c = p_factures.montant_encours_0_c, + montant_encours_0_h = p_factures.montant_encours_0_h, + montant_encours_1 = p_factures.montant_encours_1_c + p_factures.montant_encours_1_h, + montant_encours_1_c = p_factures.montant_encours_1_c, + montant_encours_1_h = p_factures.montant_encours_1_h, + montant_encours_2 = p_factures.montant_encours_2_c + p_factures.montant_encours_2_h, + montant_encours_2_c = p_factures.montant_encours_2_c, + montant_encours_2_h = p_factures.montant_encours_2_h + FROM activite.p_factures + WHERE p_factures_reference.no_facture_reference = p_factures.no_facture; + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_ajust_fildeleau.yaml b/db/schema2/functions/cti_ajust_fildeleau.yaml new file mode 100644 index 0000000..918de33 --- /dev/null +++ b/db/schema2/functions/cti_ajust_fildeleau.yaml @@ -0,0 +1,429 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + BEGIN + + + -- Pour initialiser l'identification des factures sans montant établissement + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'AJUSTFILDELEAU', + 'Ajustement données fil de l''eau PMSI', + '0', + '0=Non, 1=Oui ' + WHERE 'AJUSTFILDELEAU' NOT IN (SELECT code FROM activite.t_divers); + IF NOT EXISTS (SELECT * + FROM activite.t_divers + WHERE t_divers.code = 'AJUSTFILDELEAU' AND + t_divers.valeur = '1' + LIMIT 1) THEN + return 'Non paramétré'; + END IF; + IF NOT EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 'p_rss') THEN + return 'Pas de PMSI'; + END IF; + -- Mise à jour données + -- Séjours non groupés dans activité sans correspondance dans PMSI + DROP TABLE IF EXISTS w_rss_new; + CREATE TEMP TABLE w_rss_new AS + SELECT nextval('pmsi.s_rss'::regclass) AS rss_id, + no_sejour + FROM activite.p_factures_reference + WHERE nb_non_groupe = 1 AND + ltrim(no_sejour,'0') NOT IN (SELECT ltrim(no_sejour_administratif,'0') FROM pmsi.p_rss WHERE etat = '') AND + code_sorti = '1' AND + date_sortie >= '20150101' AND + date_sortie - date_entree < 300; + + INSERT INTO pmsi.p_rss ( + finess, + oid, + no_rss, + no_patient, + version_groupage, + date_naissance, + sexe, + date_entree, + date_sortie, + mode_entree, + provenance, + mode_sortie, + destination, + code_postal, + poids_bebe, + igs2, + cma, + groupe_ghm, + duree_sejour, + nb_rsa, + age, + supprime, + date_import, + nb_rum, + secteur, + no_sejour_administratif, + nb_seances, + ghm_fg9, + ghm_id, + medecin_rss_id, + ghs_id, + mois_sortie, + diagnostic_principal_id, + diagnostic_relie_id, + ghm_production_id, + no_rum_principal, + unite_medicale_principale_id, + import_id, + etat, + acte_principal_id, + code_postal_id, + patient_id, + prestation_principale_id, + severite_fg11_simulation_code, + en_cours, + en_cours_etat, + base_remboursement, + sejour_facture, + honoraires_factures, + t2a_facture, + dmi_facture, + phc_facture, + ca_ghs_theorique, + nb_ghs, + ca_ghs, + nb_exb, + ca_exb, + nb_exh, + ca_exh, + nb_si, + ca_si, + nb_sur, + ca_sur, + nb_rea, + ca_rea, + nb_neonat, + ca_neonat, + traitement_epmsi, + code_retour_groupage, + comite_medical_id, + rehosp_meme_ghm, + from_oid + ) + SELECT + (SELECt MAX(FINESS) FROM pmsi.p_rss WHERE en_cours = '1') AS finess, + w_rss_new.rss_id AS oid, + 0 AS no_rss, + 0 AS no_patient, + '*A' AS version_groupage, + date_naissance AS date_naissance, + p_patients.code_sexe AS sexe, + p_sejours.date_entree, + p_sejours.date_sortie, + p_sejours.mode_entree, + p_sejours.provenance, + p_sejours.mode_sortie, + p_sejours.destination, + '' AS code_postal, + 0 AS poids_bebe, + 0 AS igs2, + '' AS cma, + '' AS groupe_ghm, + CASE WHEN p_sejours.date_sortie > p_sejours.date_entree THEN date(p_sejours.date_sortie) - date(p_sejours.date_entree) ELSE 0 END AS duree_sejour, + 1 AS nb_rsa, + CASE WHEN p_sejours.date_sortie > date_naissance AND p_sejours.date_sortie - date_naissance BETWEEN 0 AND 50000 THEN trunc((date(p_sejours.date_entree) - date(date_naissance)) / 365.25,0) ELSE 0 END AS age, + '' AS supprime, + now() AS date_import, + 1 AS nb_rum, + '' AS secteur, + p_sejours.no_sejour AS no_sejour_administratif, + 0 AS nb_seances, + '' AS ghm_fg9, + COALESCE(t_ghm.oid, 0) AS ghm_id, + 0 AS medecin_rss_id, + 0 AS ghs_id, + date_part('year', p_sejours.date_sortie) * 100 + date_part('month', p_sejours.date_sortie) AS mois_sortie, + 0 AS diagnostic_principal_id, + 0 AS diagnostic_relie_id, + COALESCE(t_ghm.oid, 0) AS ghm_production_id, + 1 AS no_rum_principal, + 0 AS unite_medicale_principale_id, + -1 AS import_id, + '' AS etat, + 0 AS acte_principal_id, + 0 AS code_postal_id, + 0 AS patient_id, + 0 AS prestation_principale_id, + '' AS severite_fg11_simulation_code, + '1' AS en_cours, + 'S' AS en_cours_etat, + 0 AS base_remboursement, + 0 AS sejour_facture, + 0 AS honoraires_factures, + 0 AS t2a_facture, + 0 AS dmi_facture, + 0 AS phc_facture, + 0 AS ca_ghs_theorique, + 0 AS nb_ghs, + 0 AS ca_ghs, + 0 AS nb_exb, + 0 AS ca_exb, + 0 AS nb_exh, + 0 AS ca_exh, + 0 AS nb_si, + 0 AS ca_si, + 0 AS nb_sur, + 0 AS ca_sur, + 0 AS nb_rea, + 0 AS ca_rea, + 0 AS nb_neonat, + 0 AS ca_neonat, + '' AS traitement_epmsi, + '' AS code_retour_groupage, + 0 AS comite_medical_id, + '0' AS rehosp_meme_ghm, + 0 AS from_oid + FROM w_rss_new + JOIN activite.p_sejours ON p_sejours.no_sejour = w_rss_new.no_sejour + JOIN activite.p_patients On p_sejours.no_patient = p_patients.no_patient + LEFT JOIN pmsi.t_ghm ON t_ghm.code = '99Z99Z'; + INSERT INTO pmsi.p_identites( + rss_id, + no_rss, + nom, + prenom, + nom_naissance) + SELECT + w_rss_new.rss_id AS oid, + 0 AS no_rss, + nom, + prenom, + nom_naissance + FROM w_rss_new + JOIN activite.p_sejours ON p_sejours.no_sejour = w_rss_new.no_sejour + JOIN activite.p_patients On p_sejours.no_patient = p_patients.no_patient; + INSERT INTO pmsi.p_rss_rum( + rss_id, + no_rss, + no_rum, + date_entree, + date_sortie, + mode_entree, + provenance, + mode_sortie, + destination, + duree_sejour, + nb_seances, + unite_medicale, + diagnostic_principal_id, + diagnostic_relie_id, + unite_medicale_id, + type_autorisation, + igs2, + type_autorisation_lit_dedie, + supplement_code) + SELECT + w_rss_new.rss_id AS rss_id, + 0 AS no_rss, + 1 AS no_rum, + p_sejours.date_entree, + p_sejours.date_sortie, + p_sejours.mode_entree, + p_sejours.provenance, + p_sejours.mode_sortie, + p_sejours.destination, + CASE WHEN p_sejours.date_sortie > p_sejours.date_entree THEN date(p_sejours.date_sortie) - date(p_sejours.date_entree) ELSE 0 END AS duree_sejour, + 0 AS nb_seances, + t_unites_medicales_pmsi.code AS unite_medicale, + 0 AS diagnostic_principal_id, + 0 AS diagnostic_relie_id, + 0 AS unite_medicale_id, + '' AS type_autorisation, + 0 AS igs2, + '' AS type_autorisation_lit_dedie, + '' AS supplement_code + FROM w_rss_new + JOIN activite.p_sejours ON p_sejours.no_sejour = w_rss_new.no_sejour + JOIN activite.p_patients On p_sejours.no_patient = p_patients.no_patient + JOIN activite.t_lieux ON lieu_sortie_id = t_lieux.oid + LEFT JOIN activite.t_unites_medicales on t_lieux.unite_medicale_id = t_unites_medicales.oid + LEFT JOIN activite.t_unites_fonctionnelles on t_lieux.unite_fonctionnelle_id = t_unites_fonctionnelles.oid + LEFT JOIN pmsi.t_unites_medicales t_unites_medicales_pmsi On (CASE WHEN t_lieux.unite_medicale_id <> 0 THEN t_unites_medicales.code ELSE t_unites_fonctionnelles.code END) = t_unites_medicales_pmsi.code; + INSERT INTO pmsi.p_rsf_total( + finess, no_rss, code_pec, rang_beneficiaire, regime, nature_pec, + justificatif_exo, no_facture, code_regularisation, base_remboursement, + sejour_facture, sejour_remboursable, honoraires_factures, honoraires_remboursable, + t2a_facture, dmi_facture, phc_facture, participation_assure_avant_oc, + sejour_remboursable_2, honoraires_remboursable_2, montant_dmi_ghs2006, + nb_si, ca_si, nb_sur, ca_sur, nb_rea, ca_rea, nb_neonat, ca_neonat, + nb_exh, ca_exh, nb_exb, ca_exb, nb_ghs, ca_ghs, rss_id, ca_ghs_theorique) + SELECT + p_rss.finess, p_rss.no_rss, '', '', '', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, p_rss.oid, 0 + FROM pmsi.p_rss + LEFT JOIN pmsi.p_rsf_total ON (p_rsf_total.rss_id = p_rss.oid) + WHERE en_cours = '1' AND p_rsf_total.rss_id IS NULL; + INSERT INTO pmsi.p_rss_etat + ( + rss_id, + est_groupe, + est_valide, + date_groupage, + est_facture, + date_facture + ) + SELECT + w_rss_new.rss_id, + '0' AS est_groupe, + '0' AS est_valide, + '20991231' AS date_groupage, + '0' AS est_facture, + '20991231' AS date_facture + FROM w_rss_new + WHERE rss_id NOT IN (SELECT rss_id FROM pmsi.p_rss_etat); + -- Séjours externes dans PMSi sans facturation ets dans activité à supprimer + DROP TABLE IF EXISTS w_rss_to_delete; + CREATE TEMP TABLE w_rss_to_delete AS + SELECT p_rss.oid AS rss_id + FROM pmsi.p_rss + JOIN activite.p_factures_reference ON p_factures_reference.no_sejour = p_rss.no_sejour_administratif + WHERE p_rss.date_sortie >= '20140101' AND + p_rss.en_cours = '1' AND + p_factures_reference.montant_facture_c = 0 AND + nb_non_calcules = 0; + INSERT INTO w_rss_to_delete + SELECT p_rss.oid AS rss_id + FROM pmsi.p_rss + JOIN activite.p_factures_reference ON p_factures_reference.no_sejour = p_rss.no_sejour_administratif + WHERE p_rss.date_sortie >= '20140101' AND + p_rss.en_cours = '1' AND + nb_non_groupe = 0 AND + nb_groupe = 0 AND + en_cours_etat <> 'F'; + DELETE FROM pmsi.p_identites WHERE rss_id IN (SELECT rss_id FROM w_rss_to_delete); + DELETE FROM pmsi.p_rss_rum WHERE rss_id IN (SELECT rss_id FROM w_rss_to_delete); + DELETE FROM pmsi.p_rss_diagnostics WHERE rss_id IN (SELECT rss_id FROM w_rss_to_delete); + DELETE FROM pmsi.p_rss_actes WHERE rss_id IN (SELECT rss_id FROM w_rss_to_delete); + DELETE FROM pmsi.p_rss_lpp WHERE rss_id IN (SELECT rss_id FROM w_rss_to_delete); + DELETE FROM pmsi.p_rss_ucd WHERE rss_id IN (SELECT rss_id FROM w_rss_to_delete); + DELETE FROM pmsi.p_rsf_total WHERE rss_id IN (SELECT rss_id FROM w_rss_to_delete); + DELETE FROM pmsi.p_rsf_detail WHERE rss_id IN (SELECT rss_id FROM w_rss_to_delete); + DELETE FROM pmsi.p_rss_etat WHERE rss_id IN (SELECT rss_id FROM w_rss_to_delete); + DELETE FROM pmsi.p_rss WHERE oid IN (SELECT rss_id FROM w_rss_to_delete); + -- Séjours facturés donc forcément validés et facturés + UPDATE pmsi.p_rss + SET en_cours_etat = 'F' + FROM activite.p_factures_reference + WHERE en_cours = '1' AND + no_sejour = no_sejour_administratif AND + en_cours_etat IN ('G','V') AND + nb_groupe = 1 AND nb_non_groupe = 0 AND nb_non_calcules = 0; + -- Séjours PMSI non facturés dans activité + UPDATE pmsi.p_rss + SET en_cours_etat = 'V' + FROM activite.p_factures_reference + WHERE en_cours = '1' AND + no_sejour = no_sejour_administratif AND + en_cours_etat = 'F' AND + nb_groupe = 1 AND nb_non_groupe = 0 AND nb_non_calcules = 1; + + UPDATE pmsi.p_rss_etat + SET est_facture = '0' + FROM pmsi.p_rss + JOIN activite.p_factures_reference ON no_sejour = no_sejour_administratif + WHERE p_rss_etat.rss_id = p_rss.oid AND + en_cours = '1' AND + est_facture = '1' AND + nb_non_calcules = 1; + -- Séjours activité non validés dans PMSI + UPDATE activite.p_factures_reference + SET nb_non_groupe = 1 , nb_groupe = 0 + FROM pmsi.p_rss + JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid AND t_ghm.code NOT LIKE '15%' + WHERE no_sejour = no_sejour_administratif AND + en_cours = '1' AND + en_cours_etat = 'G' AND + nb_groupe = 1 AND nb_non_groupe = 0; + UPDATE activite.p_factures_reference_tiers p_factures_reference + SET nb_non_groupe = 1 , nb_groupe = 0 + FROM pmsi.p_rss + JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid AND t_ghm.code NOT LIKE '15%' + WHERE no_sejour = no_sejour_administratif AND + en_cours = '1' AND + en_cours_etat = 'G' AND + nb_groupe = 1 AND nb_non_groupe = 0; + UPDATE activite.p_factures_reference + SET nb_non_groupe = 1 , nb_groupe = 0 + FROM pmsi.p_rss + JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid AND t_ghm.code NOT LIKE '15%' + WHERE no_sejour = no_sejour_administratif AND + en_cours = '1' AND + en_cours_etat = 'S' AND + nb_groupe = 1 AND nb_non_groupe = 0; + UPDATE activite.p_factures_reference_tiers p_factures_reference + SET nb_non_groupe = 1 , nb_groupe = 0 + FROM pmsi.p_rss + JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid AND t_ghm.code NOT LIKE '15%' + WHERE no_sejour = no_sejour_administratif AND + en_cours = '1' AND + en_cours_etat = 'S' AND + nb_groupe = 1 AND nb_non_groupe = 0; + -- Mise à jour des séjours + UPDATE activite.p_sejours + SET ghs_id = 0 + FROM activite.p_factures_reference + WHERE p_factures_reference.no_sejour = p_sejours.no_sejour AND + p_sejours.ghs_id <> 0 AND + nb_non_groupe = 1; + UPDATE activite.p_sejours + SET date_facture = '20991231' + FROM activite.p_factures_reference + WHERE p_factures_reference.no_sejour = p_sejours.no_sejour AND + p_sejours.date_facture <> '20991231' AND + nb_non_calcules = 1; + UPDATE activite.p_factures + SET ghs_id = 0 + FROM activite.p_factures_reference + WHERE p_factures_reference.no_facture_reference = p_factures.no_facture_reference AND + p_factures.ghs_id <> 0 AND + nb_non_groupe = 1; + + -- Mise à jour ME/MS/PROV/DEST depuis PMSI si non renseigné dans Activité + + + WITH w_rss as ( + SELECT + no_sejour_administratif, + date_naissance, + lpad((MIN(ARRAY[to_char(date_entree, 'YYYYMMDD'), mode_entree]))[2], 1, '8') as mode_entree, + lpad((MIN(ARRAY[to_char(date_entree, 'YYYYMMDD'), provenance]))[2], 1, '0') as provenance, + lpad((MAX(ARRAY[to_char(date_sortie, 'YYYYMMDD'), mode_sortie]))[2], 1, '8') as mode_sortie, + lpad((MAX(ARRAY[to_char(date_sortie, 'YYYYMMDD'), destination]))[2], 1, '0') as destination + FROM + pmsi.p_rss + WHERE + p_rss.date_sortie >= date_trunc('year', now() - interval '2 year')::date + GROUP BY 1,2 + ) + UPDATE activite.p_sejours SET + mode_entree = w_rss.mode_entree, + mode_sortie = w_rss.mode_sortie, + provenance = w_rss.provenance, + destination = w_rss.destination + FROM + w_rss, activite.p_patients + WHERE + p_sejours.no_patient = p_patients.no_patient AND + w_rss.no_sejour_administratif = p_sejours.no_sejour AND + w_rss.date_naissance = p_patients.date_naissance AND + ( + 1!=1 + OR (p_sejours.mode_entree = '8' AND p_sejours.mode_entree != w_rss.mode_entree) + OR (p_sejours.mode_sortie = '8' AND p_sejours.mode_sortie != w_rss.mode_sortie) + OR (p_sejours.provenance = '0' AND p_sejours.provenance != w_rss.provenance) + OR (p_sejours.destination = '0' AND p_sejours.destination != w_rss.destination) + ); + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_ajust_fildeleau_rsf.yaml b/db/schema2/functions/cti_ajust_fildeleau_rsf.yaml new file mode 100644 index 0000000..3637ce7 --- /dev/null +++ b/db/schema2/functions/cti_ajust_fildeleau_rsf.yaml @@ -0,0 +1,231 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + BEGIN + + + -- remplacer Chiffre d'affaires fil de l'eau PMSI par celui d'activité + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'AJUSTFILDELEAU', + 'Ajustement données fil de l''eau PMSI', + '0', + '0=Non, 1=Oui ' + WHERE 'AJUSTFILDELEAU' NOT IN (SELECT code FROM activite.t_divers); + IF NOT EXISTS (SELECT * + FROM activite.t_divers + WHERE t_divers.code = 'AJUSTFILDELEAU' AND + t_divers.valeur = '1' + LIMIT 1) THEN + return 'Non paramétré'; + END IF; + IF NOT EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 'p_rss') THEN + return 'Pas de PMSI'; + END IF; + + -- CA à générer d'après lignes de factures ou d'encours + DROP TABLE IF EXISTS w_encours_pmsi_rsf_detail; + CREATE TEMP TABLE w_encours_pmsi_rsf_detail AS + SELECT + p_rss.finess AS finess, + p_rss.oid AS rss_id, + p_rss.no_rss AS no_rss, + '' AS nature, + '' AS mt, + '' AS dmt, + MIN(p_factures_lignes_c.date_debut) AS date_debut, + MAX(p_factures_lignes_c.date_fin) AS date_fin, + SUM(p_factures_lignes_c.nb_prestation) AS nombre, + p_factures_lignes_c.coefficient AS coefficient, + p_factures_lignes_c.prix_unitaire AS prix_unitaire, + SUM(montant_facture+montant_encours) AS base_remboursement, + taux_1 AS taux_remboursement, + SUM(montant_facture+montant_encours) AS sejour_facture, + SUM(montant_facture_1+montant_encours_1) AS sejour_remboursable, + 0::numeric AS compteur, + '' AS ligne_t2a, + '' AS pec_fj, + p_factures_lignes_c.coefficient_mco, + 0 AS sejour_remboursable_2, + p_rss.ghs_id, + 0 AS sejour_rembourse_noemie, + '' AS nature_noemie, + t_prestations_pmsi.oid AS prestation_id, + 'B' AS type, + 0 AS coefficient_geo, + '1'::text AS est_ligne_rss, + '0'::text AS est_ligne_rum, + t_prestations.code AS prestation_code, + CASE WHEN t_prestations.code IN ('D09','D13') THEN p_factures_lignes_c.date_debut ELSE NULL END AS date_debut_seance, + CASE WHEN t_prestations.code IN ('D09','D13') THEN p_factures_lignes_c.date_fin ELSE NULL END AS date_fin_seance + FROM activite.p_sejours + JOIN activite.t_lieux ON t_lieux.oid = lieu_sortie_id + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + JOIN activite.p_sejour_pmsi ON p_sejours.oid = p_sejour_pmsi.sejour_id + JOIN pmsi.p_rss ON p_sejour_pmsi.rss_id = p_rss.oid + JOIN activite.p_factures ON p_sejours.no_sejour = p_factures.no_sejour + JOIN activite.p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN pmsi.t_prestations t_prestations_pmsi ON t_prestations_pmsi.code = t_prestations.code + WHERE p_sejours.type_sejour IN ('1','2','5') AND + p_sejours.code_sorti = '1' AND + p_sejours.date_sortie >= date(date_trunc('year',now()-interval '18 month')) AND + ( + t_services_facturation.type_t2a = '1' OR + p_sejours.ghm_id > 0 + ) AND + p_rss.en_cours = '1' AND + ( + montant_facture_1 <> 0 OR + montant_encours_1 <> 0 + ) AND + p_factures_lignes_c.date_fin BETWEEN p_rss.date_entree AND p_rss.date_sortie + GROUP BY 1,2,3,10,11,13,19,21,24,29,30,31 + HAVING SUM(montant_facture+montant_encours) > 0 + ; + + DROP TABLE IF EXISTS w_encours_pmsi_rss; + CREATE TEMP TABLE w_encours_pmsi_rss AS + SELECT rss_id + FROM w_encours_pmsi_rsf_detail + GROUP BY 1 + ; + + ANALYSE w_encours_pmsi_rss + ; + + -- Suppression du CA déjà généré + + DELETE FROM pmsi.p_rsf_detail + WHERE p_rsf_detail.rss_id IN (SELECT w_encours_pmsi_rss.rss_id FROM w_encours_pmsi_rss) + ; + + -- Ajout des nouvelles lignes + INSERT INTO pmsi.p_rsf_detail( + finess, + rss_id, + no_rss, + nature, + mt, + dmt, + date_debut, + date_fin, + nombre, + coefficient, + prix_unitaire, + base_remboursement, + taux_remboursement, + sejour_facture, + sejour_remboursable, + compteur, + ligne_t2a, + pec_fj, + coefficient_mco, + sejour_remboursable_2, + ghs_id, + sejour_rembourse_noemie, + nature_noemie, + prestation_id, + type, + coefficient_geo, + est_ligne_rss, + est_ligne_rum + ) + SELECT + finess, + rss_id, + no_rss, + nature, + mt, + dmt, + date_debut, + date_fin, + nombre, + coefficient, + prix_unitaire, + base_remboursement, + taux_remboursement, + sejour_facture, + sejour_remboursable, + compteur, + ligne_t2a, + pec_fj, + coefficient_mco, + sejour_remboursable_2, + ghs_id, + sejour_rembourse_noemie, + nature_noemie, + prestation_id, + type, + coefficient_geo, + est_ligne_rss, + est_ligne_rum + FROM w_encours_pmsi_rsf_detail + ; + + + + -- Réplication cumuls + UPDATE pmsi.p_rsf_total SET + base_remboursement = COALESCE(subview.base_remboursement,0), + t2a_facture = COALESCE(subview.t2a_facture,0), + dmi_facture = COALESCE(subview.dmi_facture,0), + phc_facture = COALESCE(subview.phc_facture,0), + forfait_facture = COALESCE(subview.forfait_facture,0), + nb_exh = COALESCE(subview.nb_exh,0), + ca_exh = COALESCE(subview.ca_exh,0), + nb_exb = COALESCE(subview.nb_exb,0), + ca_exb = COALESCE(subview.ca_exb,0), + nb_ghs = COALESCE(subview.nb_ghs,0), + ca_ghs = COALESCE(subview.ca_ghs,0), + nb_ghsmin = COALESCE(subview.nb_ghsmin,0) + FROM pmsi.p_rss + LEFT JOIN ( + SELECT rss_id, + SUM(p_rsf_detail.base_remboursement) as base_remboursement, + SUM(CASE WHEN t_prestations.section_code[9] LIKE 'S1%' THEN p_rsf_detail.base_remboursement ELSE 0 END) as t2a_facture, + SUM(CASE WHEN t_prestations.section_code[9] LIKE 'S2%' THEN p_rsf_detail.base_remboursement ELSE 0 END) as dmi_facture, + SUM(CASE WHEN t_prestations.section_code[9] LIKE 'S3%' THEN p_rsf_detail.base_remboursement ELSE 0 END) as phc_facture, + + SUM(CASE WHEN t_prestations.code = 'EXH' THEN p_rsf_detail.nombre ELSE 0 END) as nb_exh, + SUM(CASE WHEN t_prestations.code = 'EXH' THEN p_rsf_detail.base_remboursement ELSE 0 END) as ca_exh, + SUM(CASE WHEN t_prestations.code = 'GHS' AND coefficient > 0 AND coefficient < 1 AND t_ghs.code NOT IN (9606,9616) THEN p_rsf_detail.nombre ELSE 0 END) as nb_exb, + SUM(CASE WHEN t_prestations.code = 'GHS' AND coefficient > 0 AND coefficient < 1 AND t_ghs.code NOT IN (9606,9616) THEN p_rsf_detail.base_remboursement ELSE 0 END) as ca_exb, + SUM(CASE WHEN t_prestations.code = 'GHS' AND coefficient > 0 AND coefficient < 1 AND t_ghs.code IN (9606,9616) THEN p_rsf_detail.nombre ELSE 0 END) as nb_ghsmin, + SUM(CASE WHEN t_prestations.code = 'GHS' THEN p_rsf_detail.nombre ELSE 0 END) as nb_ghs, + SUM(CASE WHEN t_prestations.code = 'GHS' THEN p_rsf_detail.base_remboursement ELSE 0 END) as ca_ghs, + SUM(CASE WHEN t_prestations.section_code[9] LIKE 'S13%' THEN p_rsf_detail.base_remboursement ELSE 0 END) as forfait_facture + FROM pmsi.p_rsf_detail + JOIN pmsi.t_prestations ON p_rsf_detail.prestation_id = t_prestations.oid JOIN pmsi.t_ghs ON t_ghs.oid = p_rsf_detail.ghs_id + WHERE p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1' AND + p_rsf_detail.rss_id IN (SELECT w_encours_pmsi_rss.rss_id FROM w_encours_pmsi_rss) + GROUP BY rss_id) subview ON p_rss.oid = subview.rss_id + WHERE p_rsf_total.rss_id = p_rss.oid AND + p_rsf_total.rss_id IN (SELECT w_encours_pmsi_rss.rss_id FROM w_encours_pmsi_rss); + -- total rss + UPDATE pmsi.p_rss + SET base_remboursement = p_rsf_total.base_remboursement, + sejour_facture = p_rsf_total.sejour_facture, + honoraires_factures = p_rsf_total.honoraires_factures, + t2a_facture = p_rsf_total.t2a_facture, + dmi_facture = p_rsf_total.dmi_facture, + phc_facture = p_rsf_total.phc_facture, + ca_ghs_theorique = p_rsf_total.ca_ghs_theorique, + nb_ghs = p_rsf_total.nb_ghs, + ca_ghs = p_rsf_total.ca_ghs, + nb_exb = p_rsf_total.nb_exb, + ca_exb = p_rsf_total.ca_exb, + nb_exh = p_rsf_total.nb_exh, + ca_exh = p_rsf_total.ca_exh, + nb_ghsmin = p_rsf_total.nb_ghsmin, + forfait_facture = p_rsf_total.forfait_facture + FROM pmsi.p_rsf_total + WHERE p_rss.oid = p_rsf_total.rss_id AND + p_rss.oid IN (SELECT w_encours_pmsi_rss.rss_id FROM w_encours_pmsi_rss) + ; + + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_budget_execute_rules.yaml b/db/schema2/functions/cti_budget_execute_rules.yaml new file mode 100644 index 0000000..4241cfa --- /dev/null +++ b/db/schema2/functions/cti_budget_execute_rules.yaml @@ -0,0 +1,591 @@ +return: text +lang: plpgsql +src: | + DECLARE + _module_pmsimco TEXT; + + BEGIN + -- règles ? + IF NOT EXISTS (SELECT * FROM activite.t_budget_cle_rule LIMIT 1) THEN + return 'Pas de règle'; + END IF; + + -- pmsi mco ? + IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 'p_rss') THEN + _module_pmsimco = '1'; + ELSE + _module_pmsimco = '0'; + END IF; + -- Réplication du paramétrage + -- INSERT INTO activite.t_budget_cle (oid,code_original,code,texte,texte_court) + -- SELECT oid,code_original,code,texte,texte_court + -- FROM base.t_budget_cle_activite + -- WHERE oid NOT IN (SELECT oid FROM activite.t_budget_cle); + -- UPDATE activite.t_budget_cle + -- SET code = t_budget_cle_activite.code, + -- texte = t_budget_cle_activite.texte, + -- texte_court = t_budget_cle_activite.texte_court + -- FROM base.t_budget_cle_activite + -- WHERE t_budget_cle_activite.oid = t_budget_cle.oid AND + -- ( + -- t_budget_cle.code IS DISTINCT FROM t_budget_cle_activite.code OR + -- t_budget_cle.texte IS DISTINCT FROM t_budget_cle_activite.texte OR + -- t_budget_cle.texte_court IS DISTINCT FROM t_budget_cle_activite.texte_court + -- ); + -- Ménage dans les règles + DELETE FROM activite.t_budget_cle_rule + WHERE budget_cle_id NOT IN (SELECT oid FROM activite.t_budget_cle) + ; + + -- Sejours et RSS à Traiter + + DROP SEQUENCE IF EXISTS w_sejours_rss_sequence; + CREATE SEQUENCE w_sejours_rss_sequence; + DROP TABLE IF EXISTS w_sejours_rss; + + DROP TABLE IF EXISTS w_sejour_lieu; + CREATE TEMP TABLE w_sejour_lieu AS + SELECT no_sejour, lieu_sortie_id AS lieu_id + FROM activite.p_sejours + GROUP BY 1,2 + ; + + INSERT INTO w_sejour_lieu + SELECT p_mouvements_sejour.no_sejour, lieu_id + FROM activite.p_mouvements_sejour + JOIN activite.p_sejours ON p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + lieu_id <> lieu_sortie_id + GROUP BY 1,2 + ; + + + IF _module_pmsimco = '1' THEN + -- si pmsi mco + CREATE TEMP TABLE w_sejours_rss AS + SELECT + nextval('w_sejours_rss_sequence'::regclass) AS oid, + COALESCE(t_finess.oid,0) AS finess_id, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour AS no_sejour, + p_sejours.lieu_sortie_id, + w_sejour_lieu.lieu_id, + COALESCE(p_rss.oid,0) AS rss_id, + diagnostic_principal_id, + diagnostic_relie_id, + NULL::bigint[] AS diagnostic_associe_liste_rule_id, + NULL::bigint[] AS acte_liste_rule_id, + NULL::bigint[] AS rubrique_liste_rule_id, + p_rss.ghm_id AS ghm_pmsi_id, + p_sejours.ghm_id AS ghm_activite_id, + COALESCE(medecin_rss_id,0) AS medecin_rss_id, + p_sejours.medecin_sejour_id, + COALESCE(t_medecins_pmsi.specialite_id,0) AS specialite_rss_id, + COALESCE(t_medecins_base.specialite_id,0) AS specialite_sejour_id, + type_sejour, + service_facturation_id, + unite_fonctionnelle_id AS uf_id, + activite_id, + 0::bigint AS budget_cle_id, + 0::bigint AS budget_cle_priorite + FROM activite.p_sejours + JOIN w_sejour_lieu ON p_sejours.no_sejour = w_sejour_lieu.no_sejour + JOIN activite.t_lieux ON w_sejour_lieu.lieu_id = t_lieux.oid + LEFT JOIN pmsi.p_rss ON no_sejour_administratif = p_sejours.no_sejour AND p_sejours.date_sortie = p_rss.date_sortie AND p_rss.etat = '' + LEFT JOIN pmsi.t_medecins t_medecins_pmsi ON medecin_rss_id = t_medecins_pmsi.oid + LEFT JOIN activite.t_medecins_administratifs ON p_sejours.medecin_sejour_id = t_medecins_administratifs.oid + LEFT JOIN base.t_medecins t_medecins_base ON t_medecins_administratifs.medecin_id = t_medecins_base.oid + LEFT JOIN base.t_finess ON p_rss.finess = t_finess.code; + INSERT INTO w_sejours_rss + SELECT + nextval('w_sejours_rss_sequence'::regclass) AS oid, + COALESCE(t_finess.oid,0) AS finess_id, + 0 AS sejour_id, + '' AS no_sejour, + 0::bigint AS lieu_sortie_id, + 0::bigint AS lieu_id, + p_rss.oid AS rss_id, + diagnostic_principal_id, + diagnostic_relie_id, + NULL::bigint[] AS diagnostic_associe_liste_rule_id, + NULL::bigint[] AS acte_liste_rule_id, + NULL::bigint[] AS rubrique_liste_rule_id, + p_rss.ghm_id AS ghm_pmsi_id, + 0 AS ghm_activite_id, + medecin_rss_id, + 0::bigint AS medecin_sejour_id, + COALESCE(t_medecins_pmsi.specialite_id,0) AS specialite_rss_id, + 0::bigint AS specialite_sejour_id, + ''::text AS type_sejour, + 0::bigint AS service_facturation_id, + 0::bigint AS uf_id, + 0::bigint AS activite_id, + 0::bigint AS budget_cle_id, + 0::bigint AS budget_cle_priorite + FROM pmsi.p_rss + LEFT JOIN pmsi.t_medecins t_medecins_pmsi ON medecin_rss_id = t_medecins_pmsi.oid + LEFT JOIN base.t_finess ON p_rss.finess = t_finess.code + WHERE date_sortie >= '20160101' AND p_rss.oid NOT IN (SELECt rss_id FROM w_sejours_rss); + UPDATE w_sejours_rss SET + medecin_rss_id = t_medecins.oid, + specialite_rss_id = t_medecins.specialite_id + FROM activite.t_medecins_administratifs_c + JOIN pmsi.t_medecins ON t_medecins_administratifs_c.adm_code = t_medecins.code + WHERE medecin_sejour_id = t_medecins_administratifs_c.oid AND + t_medecins.oid <> 0 AND + (t_medecins.oid IS DISTINCT FROM medecin_rss_id OR + specialite_rss_id IS DISTINCT FROM t_medecins.specialite_id) + ; + ELSE + -- si pas pmsi mco + CREATE TEMP TABLE w_sejours_rss AS + SELECT + nextval('w_sejours_rss_sequence'::regclass) AS oid, + 0 AS finess_id, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour AS no_sejour, + p_sejours.lieu_sortie_id, + w_sejour_lieu.lieu_id, + 0 AS rss_id, + 0::bigint AS diagnostic_principal_id, + 0::bigint AS diagnostic_relie_id, + NULL::bigint[] AS diagnostic_associe_liste_rule_id, + NULL::bigint[] AS acte_liste_rule_id, + NULL::bigint[] AS rubrique_liste_rule_id, + 0::bigint AS ghm_pmsi_id, + p_sejours.ghm_id AS ghm_activite_id, + 0 AS medecin_rss_id, + medecin_sejour_id, + 0 AS specialite_rss_id, + COALESCE(t_medecins_base.specialite_id,0) AS specialite_sejour_id, + type_sejour, + service_facturation_id, + unite_fonctionnelle_id AS uf_id, + activite_id, + 0::bigint AS budget_cle_id, + 0::bigint AS budget_cle_priorite + FROM activite.p_sejours + JOIN w_sejour_lieu ON p_sejours.no_sejour = w_sejour_lieu.no_sejour + JOIN activite.t_lieux ON w_sejour_lieu.lieu_id = t_lieux.oid + LEFT JOIN activite.t_medecins_administratifs ON p_sejours.medecin_sejour_id = t_medecins_administratifs.oid + LEFT JOIN base.t_medecins t_medecins_base ON t_medecins_administratifs.medecin_id = t_medecins_base.oid; + END IF; + UPDATE w_sejours_rss SET + medecin_rss_id = 0, + specialite_rss_id = 0 + WHERE medecin_sejour_id <> 0; + UPDATE w_sejours_rss + SET finess_id = (SELECT MAX(finess_id) FROM w_sejours_rss WHERE finess_id <> 0) + WHERE finess_id = 0 AND (SELECT MAX(finess_id) FROM w_sejours_rss WHERE finess_id <> 0) <> 0; + UPDATE w_sejours_rss + SET finess_id = (SELECT MAX(oid) FROM base.t_finess) + WHERE finess_id = 0; + CREATE INDEX w_sejours_rss_i0 ON w_sejours_rss USING btree (oid); + CREATE INDEX w_sejours_rss_i1 ON w_sejours_rss USING btree (rss_id); + CREATE INDEX w_sejours_rss_i2 ON w_sejours_rss USING btree (sejour_id); + CREATE INDEX w_sejours_rss_i3 ON w_sejours_rss USING btree (no_sejour); + + -- Traduction des règles en oid + DROP TABLE IF EXISTS w_budget_cle_rule; + CREATE TEMP TABLE w_budget_cle_rule AS + SELECT + t_budget_cle_rule.oid, + budget_cle_id, + CASE WHEN priorite <> 0 THEN priorite WHEN liste_diagnostic_principal <> '' THEN 90000 ELSE 999999 END AS priorite, + CASE WHEN liste_finess <> '' THEN '1' ELSE '0' END AS a_liste_finess, + string_to_array(replace(liste_finess,'*','%'),' ') AS liste_finess, + NULL::bigint[] AS liste_finess_id , + CASE WHEN liste_diagnostic_principal <> '' THEN '1' ELSE '0' END AS a_liste_diagnostic_principal, + string_to_array(replace(liste_diagnostic_principal,'*','%'),' ') AS liste_diagnostic_principal, + NULL::bigint[] AS liste_diagnostic_principal_id , + CASE WHEN liste_diagnostic_relie <> '' THEN '1' ELSE '0' END AS a_liste_diagnostic_relie, + string_to_array(replace(liste_diagnostic_relie,'*','%'),' ') AS liste_diagnostic_relie, + NULL::bigint[] AS liste_diagnostic_relie_id , + CASE WHEN liste_diagnostic_associe <> '' THEN '1' ELSE '0' END AS a_liste_diagnostic_associe, + string_to_array(replace(liste_diagnostic_associe,'*','%'),' ') AS liste_diagnostic_associe, + NULL::bigint[] AS liste_diagnostic_associe_id , + CASE WHEN liste_acte <> '' THEN '1' ELSE '0' END AS a_liste_acte, + string_to_array(replace(liste_acte,'*','%'),' ') AS liste_acte, + NULL::bigint[] AS liste_acte_pmsi_id , + NULL::bigint[] AS liste_acte_base_id , + CASE WHEN liste_ghm <> '' THEN '1' ELSE '0' END AS a_liste_ghm, + string_to_array(replace(liste_ghm,'*','%'),' ') AS liste_ghm, + NULL::bigint[] AS liste_ghm_pmsi_id, + NULL::bigint[] AS liste_ghm_activite_id, + liste_ghm AS liste_ghm_origine, + CASE WHEN liste_sauf_ghm <> '' THEN '1' ELSE '0' END AS a_liste_sauf_ghm, + string_to_array(replace(liste_sauf_ghm,'*','%'),' ') AS liste_sauf_ghm, + NULL::bigint[] AS liste_sauf_ghm_pmsi_id , + NULL::bigint[] AS liste_sauf_ghm_activite_id , + liste_sauf_ghm AS liste_sauf_ghm_origine, + CASE WHEN liste_type_sejour <> '' THEN '1' ELSE '0' END AS a_liste_type_sejour, + string_to_array(replace(liste_type_sejour,'*','%'),' ') AS liste_type_sejour, + NULL::text[] AS liste_type_sejour_id , + CASE WHEN liste_service <> '' THEN '1' ELSE '0' END AS a_liste_service, + string_to_array(replace(liste_service,'*','%'),' ') AS liste_service, + NULL::bigint[] AS liste_service_id , + CASE WHEN liste_uf <> '' THEN '1' ELSE '0' END AS a_liste_uf, + string_to_array(replace(liste_uf,'*','%'),' ') AS liste_uf, + NULL::bigint[] AS liste_uf_id , + CASE WHEN liste_activite <> '' THEN '1' ELSE '0' END AS a_liste_activite, + string_to_array(replace(liste_activite,'*','%'),' ') AS liste_activite, + NULL::bigint[] AS liste_activite_id , + CASE WHEN liste_medecin <> '' THEN '1' ELSE '0' END AS a_liste_medecin, + string_to_array(CASE WHEN liste_medecin NOT LIKE '%**%' THEN replace(liste_medecin,'*','%') ELSE liste_medecin END,' ') AS liste_medecin, + NULL::bigint[] AS liste_medecin_pmsi_id , + NULL::bigint[] AS liste_medecin_activite_id , + CASE WHEN liste_specialite <> '' THEN '1' ELSE '0' END AS a_liste_specialite, + string_to_array(replace(liste_specialite,'*','%'),' ') AS liste_specialite, + NULL::bigint[] AS liste_specialite_pmsi_id , + NULL::bigint[] AS liste_specialite_activite_id , + CASE WHEN liste_rubrique <> '' THEN '1' ELSE '0' END AS a_liste_rubrique, + string_to_array(replace(liste_rubrique,'*','%'),' ') AS liste_rubrique, + NULL::bigint[] AS liste_rubrique_id + FROM activite.t_budget_cle_rule + JOIN activite.t_budget_cle ON budget_cle_id = t_budget_cle.oid + ORDER BY priorite, budget_cle_id; + UPDATE w_budget_cle_rule + SET liste_finess_id = (SELECT base.cti_group_array3(oid) FROM base.t_finess WHERE code LIKE ANY (liste_finess)) + WHERE a_liste_finess = '1'; + + IF _module_pmsimco = '1' THEN + UPDATE w_budget_cle_rule + SET liste_diagnostic_principal_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_diagnostics WHERE code LIKE ANY (liste_diagnostic_principal)) + WHERE a_liste_diagnostic_principal = '1'; + UPDATE w_budget_cle_rule + SET liste_diagnostic_relie_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_diagnostics WHERE code LIKE ANY (liste_diagnostic_relie)) + WHERE a_liste_diagnostic_relie = '1'; + UPDATE w_budget_cle_rule + SET liste_diagnostic_associe_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_diagnostics WHERE code LIKE ANY (liste_diagnostic_associe)) + WHERE a_liste_diagnostic_associe = '1'; + UPDATE w_budget_cle_rule + SET liste_acte_pmsi_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_actes WHERE code LIKE ANY (liste_acte)) + WHERE a_liste_acte = '1'; + DROP TABLE IF EXISTS w_budget_cle_rule_actes_pmsi; + CREATE TEMP TABLE w_budget_cle_rule_actes_pmsi AS + SELECT t_actes.oid AS rule_acte_id, w_budget_cle_rule.oid AS rule_id + FROM pmsi.t_actes + JOIN w_budget_cle_rule ON code LIKE ANY (liste_acte); + CREATE INDEX w_budget_cle_rule_actes_pmsi_i1 ON w_budget_cle_rule_actes_pmsi USING btree (rule_acte_id); + END IF; + + + DROP TABLE IF EXISTS w_budget_cle_rule_actes_base; + CREATE TEMP TABLE w_budget_cle_rule_actes_base AS + SELECT t_actes.oid AS rule_acte_id, w_budget_cle_rule.oid AS rule_id + FROM base.t_actes + JOIN w_budget_cle_rule ON code LIKE ANY (liste_acte); + + CREATE INDEX w_budget_cle_rule_actes_base_i1 ON w_budget_cle_rule_actes_base USING btree (rule_acte_id); + DROP TABLE IF EXISTS w_budget_cle_rule_rubriques; + CREATE TEMP TABLE w_budget_cle_rule_rubriques AS + SELECT t_rubriques_facturation.oid AS rule_rubrique_id, w_budget_cle_rule.oid AS rule_id + FROM activite.t_rubriques_facturation + JOIN w_budget_cle_rule ON code LIKE ANY (liste_rubrique); + + CREATE INDEX w_budget_cle_rule_rubriques_i1 ON w_budget_cle_rule_rubriques USING btree (rule_rubrique_id); + + UPDATE w_budget_cle_rule + SET liste_acte_base_id = (SELECT base.cti_group_array3(oid) FROM base.t_actes WHERE code LIKE ANY (liste_acte)) + WHERE a_liste_acte = '1' + ; + + IF _module_pmsimco = '1' THEN + UPDATE w_budget_cle_rule + SET liste_ghm_pmsi_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_ghm WHERE code LIKE ANY (liste_ghm)) + WHERE a_liste_ghm = '1'; + END IF; + + UPDATE w_budget_cle_rule + SET liste_ghm_activite_id = (SELECT base.cti_group_array3(ghm_id) FROM activite.t_ghm_c WHERE ghm_code LIKE ANY (liste_ghm)) + WHERE a_liste_ghm = '1' + ; + IF _module_pmsimco = '1' THEN + UPDATE w_budget_cle_rule + SET liste_sauf_ghm_pmsi_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_ghm WHERE code LIKE ANY (liste_sauf_ghm)) + WHERE a_liste_sauf_ghm = '1'; + END IF; + + UPDATE w_budget_cle_rule + SET liste_sauf_ghm_activite_id = (SELECT base.cti_group_array3(ghm_id) FROM activite.t_ghm_c WHERE ghm_code LIKE ANY (liste_sauf_ghm)) + WHERE a_liste_sauf_ghm = '1' + ; + IF _module_pmsimco = '1' THEN + UPDATE w_budget_cle_rule + SET liste_medecin_pmsi_id = ( + SELECT base.cti_group_array3(t_medecins_pmsi.oid) + FROM pmsi.t_medecins t_medecins_pmsi + JOIN base.t_medecins ON t_medecins_pmsi.medecin_reference_id = t_medecins.oid + WHERE t_medecins_pmsi.oid <> 0 AND t_medecins_pmsi.code <> '' AND t_medecins_pmsi.code LIKE ANY (liste_medecin) AND liste_medecin[1] <> '(R)' OR + t_medecins.oid <> 0 AND t_medecins.code <> '' AND t_medecins.code LIKE ANY (liste_medecin) AND liste_medecin[1] = '(R)' + ) + WHERE a_liste_medecin = '1'; + END IF; + + UPDATE w_budget_cle_rule + SET liste_medecin_activite_id = ( + SELECT base.cti_group_array3(t_medecins_administratifs.oid) + FROM activite.t_medecins_administratifs + JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid + WHERE t_medecins_administratifs.oid <> 0 AND t_medecins_administratifs.code <> '' AND t_medecins_administratifs.code LIKE ANY (liste_medecin) AND liste_medecin[1] <> '(R)' OR + t_medecins.oid <> 0 AND t_medecins.code <> '' AND t_medecins.code LIKE ANY (liste_medecin) AND liste_medecin[1] = '(R)' + ) + WHERE a_liste_medecin = '1' + ; + IF _module_pmsimco = '1' THEN + UPDATE w_budget_cle_rule + SET liste_specialite_pmsi_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_specialites_medecin WHERE code LIKE ANY (liste_specialite)) + WHERE a_liste_specialite = '1'; + END IF; + + UPDATE w_budget_cle_rule + SET liste_specialite_activite_id = (SELECT base.cti_group_array3(oid) FROM base.t_specialites_medecin WHERE code LIKE ANY (liste_specialite)) + WHERE a_liste_specialite = '1' + ; + UPDATE w_budget_cle_rule + SET liste_type_sejour_id = (SELECT base.cti_group_array3(code) FROM activite.t_type_sejour WHERE code <> '' AND code LIKE ANY (liste_type_sejour)) + WHERE a_liste_type_sejour = '1' + ; + UPDATE w_budget_cle_rule + SET liste_service_id = (SELECT base.cti_group_array3(oid) FROM activite.t_services_facturation WHERE code LIKE ANY (liste_service)) + WHERE a_liste_service = '1' + ; + UPDATE w_budget_cle_rule + SET liste_uf_id = (SELECT base.cti_group_array3(oid) FROM activite.t_unites_fonctionnelles WHERE code LIKE ANY (liste_uf)) + WHERE a_liste_uf = '1' + ; + UPDATE w_budget_cle_rule + SET liste_activite_id = (SELECT base.cti_group_array3(oid) FROM activite.t_activites WHERE code LIKE ANY (liste_activite)) + WHERE a_liste_activite = '1' + ; + UPDATE w_budget_cle_rule + SET liste_rubrique_id = (SELECT base.cti_group_array3(oid) FROM activite.t_rubriques_facturation WHERE code LIKE ANY (liste_rubrique)) + WHERE a_liste_rubrique = '1' + ; + -- Association cles aux rubriques + + DROP TABLE IF EXISTS w_factures_rubriques; + CREATE TEMP TABLE w_factures_rubriques AS + SELECT + no_facture, rule_id + FROM activite.p_factures_lignes_c + JOIN w_budget_cle_rule_rubriques ON p_factures_lignes_c.rubrique_facturation_id = rule_rubrique_id + UNION + SELECT + no_facture, rule_id + FROM activite.p_factures_lignes_non_facturees_c + JOIN w_budget_cle_rule_rubriques ON p_factures_lignes_non_facturees_c.rubrique_facturation_id = rule_rubrique_id + ; + CREATE INDEX w_factures_rubriques_i1 ON w_factures_rubriques USING btree (no_facture); + + DROP TABLE IF EXISTS w_budget_cle_rubriques; + CREATE TEMP TABLE w_budget_cle_rubriques AS + + SELECT oid, base.cti_group_array3(rubrique_rule_id) AS rubrique_liste_rule_id + FROM + ( + SELECT + w_sejours_rss.oid, rule_id AS rubrique_rule_id + FROM w_factures_rubriques + JOIN activite.p_factures ON w_factures_rubriques.no_facture = p_factures.no_facture + JOIN w_sejours_rss ON p_factures.no_sejour = w_sejours_rss.no_sejour + ) subview + GROUP BY 1; + ALTER TABLE w_budget_cle_rubriques ADD CONSTRAINT w_budget_cle_rubriques_pkey PRIMARY KEY(oid); + UPDATE w_sejours_rss + SET rubrique_liste_rule_id = w_budget_cle_rubriques.rubrique_liste_rule_id + FROM w_budget_cle_rubriques + WHERE w_budget_cle_rubriques.oid = w_sejours_rss.oid; + + + -- Association cles aux actes + + DROP TABLE IF EXISTS w_factures_actes; + CREATE TEMP TABLE w_factures_actes AS + SELECT + no_facture, rule_id + FROM activite.p_factures_lignes_h + JOIN w_budget_cle_rule_actes_base ON p_factures_lignes_h.acte_id = rule_acte_id + WHERE activite_ccam <> '4' + UNION + SELECT + no_facture, rule_id + FROM activite.p_factures_lignes_non_facturees_h + JOIN w_budget_cle_rule_actes_base ON p_factures_lignes_non_facturees_h.acte_id = rule_acte_id + WHERE activite_ccam <> '4'; + CREATE INDEX w_factures_actes_i1 ON w_factures_actes USING btree (no_facture); + + DROP TABLE IF EXISTS w_budget_cle_actes; + IF _module_pmsimco = '1' THEN + CREATE TEMP TABLE w_budget_cle_actes AS + SELECT oid, base.cti_group_array3(acte_rule_id) AS acte_liste_rule_id + FROM + ( + SELECT + w_sejours_rss.oid, rule_id AS acte_rule_id + FROM pmsi.p_rss_actes + JOIN w_sejours_rss ON p_rss_actes.rss_id = w_sejours_rss.rss_id + JOIN w_budget_cle_rule_actes_pmsi ON p_rss_actes.acte_id = rule_acte_id + UNION + SELECT + w_sejours_rss.oid, rule_id AS acte_rule_id + FROM w_factures_actes + JOIN activite.p_factures ON w_factures_actes.no_facture = p_factures.no_facture + JOIN w_sejours_rss ON p_factures.no_sejour = w_sejours_rss.no_sejour + + ) subview + GROUP BY 1; + ELSE + CREATE TEMP TABLE w_budget_cle_actes AS + SELECT oid, base.cti_group_array3(acte_rule_id) AS acte_liste_rule_id + FROM + ( + SELECT + w_sejours_rss.oid, rule_id AS acte_rule_id + FROM w_factures_actes + JOIN activite.p_factures ON w_factures_actes.no_facture = p_factures.no_facture + JOIN w_sejours_rss ON p_factures.no_sejour = w_sejours_rss.no_sejour + + ) subview + GROUP BY 1; + END IF; + ALTER TABLE w_budget_cle_actes ADD CONSTRAINT w_budget_cle_actes_pkey PRIMARY KEY(oid); + UPDATE w_sejours_rss + SET acte_liste_rule_id = w_budget_cle_actes.acte_liste_rule_id + FROM w_budget_cle_actes + WHERE w_budget_cle_actes.oid = w_sejours_rss.oid; + + -- Diagnostics + IF _module_pmsimco = '1' THEN + DROP TABLE IF EXISTS w_budget_cle_diagnostics; + CREATE TEMP TABLE w_budget_cle_diagnostics AS + SELECT + w_sejours_rss.oid, base.cti_group_array3(w_budget_cle_rule.oid) AS diagnostic_associe_liste_rule_id + FROM pmsi.p_rss_diagnostics + JOIN w_budget_cle_rule ON type_diagnostic_rss IN ('DA', 'DS') AND diagnostic_id = ANY (liste_diagnostic_associe_id) + JOIN w_sejours_rss ON p_rss_diagnostics.rss_id = w_sejours_rss.rss_id + WHERE a_liste_diagnostic_associe <> '0' + GROUP BY 1; + ALTER TABLE w_budget_cle_diagnostics ADD CONSTRAINT w_budget_cle_diagnostics_pkey PRIMARY KEY(oid); + UPDATE w_sejours_rss + SET diagnostic_associe_liste_rule_id = w_budget_cle_diagnostics.diagnostic_associe_liste_rule_id + FROM w_budget_cle_diagnostics + WHERE w_budget_cle_diagnostics.oid = w_sejours_rss.oid; + END IF; + + -- Mise à jour des cles venant des données du PMSI + DROP TABLE IF EXISTS w_sejours_budget_cle; + CREATE TEMP TABLE w_sejours_budget_cle AS + SELECT w_sejours_rss.oid, + MIN(priorite)+1 AS budget_cle_priorite, + (MIN(ARRAY[priorite,w_budget_cle_rule.budget_cle_id]))[2] AS budget_cle_id + FROM w_sejours_rss + JOIN w_budget_cle_rule ON + (a_liste_finess = '0' OR finess_id = ANY (liste_finess_id)) AND + (a_liste_medecin = '0' OR medecin_rss_id = ANY (liste_medecin_pmsi_id)) AND + (a_liste_type_sejour = '0') AND + (a_liste_service = '0') AND + (a_liste_uf = '0') AND + (a_liste_activite = '0') AND + (a_liste_specialite = '0' OR specialite_rss_id = ANY (liste_specialite_pmsi_id)) AND + (a_liste_diagnostic_principal = '0' OR diagnostic_principal_id = ANY (liste_diagnostic_principal_id)) AND + (a_liste_diagnostic_relie = '0' OR diagnostic_relie_id = ANY (liste_diagnostic_relie_id)) AND + (a_liste_diagnostic_associe = '0' OR w_budget_cle_rule.oid = ANY(diagnostic_associe_liste_rule_id)) AND + (a_liste_acte = '0' OR w_budget_cle_rule.oid = ANY(acte_liste_rule_id)) AND + (a_liste_ghm = '0' OR ghm_pmsi_id = ANY (liste_ghm_pmsi_id)) AND + (a_liste_sauf_ghm = '0' OR ghm_pmsi_id <> ALL (liste_sauf_ghm_pmsi_id)) AND + (a_liste_rubrique = '0') + WHERE w_sejours_rss.rss_id <> 0 + GROUP BY 1 + ORDER BY 1; + UPDATE w_sejours_rss SET + budget_cle_id = w_sejours_budget_cle.budget_cle_id, + budget_cle_priorite = w_sejours_budget_cle.budget_cle_priorite + FROM w_sejours_budget_cle + WHERE w_sejours_rss.oid = w_sejours_budget_cle.oid; + -- Mise à jour des cles venant des données d'activite + DROP TABLE IF EXISTS w_sejours_budget_cle; + CREATE TEMP TABLE w_sejours_budget_cle AS + SELECT w_sejours_rss.oid, + MIN(priorite) AS budget_cle_priorite, + (MIN(ARRAY[priorite,w_budget_cle_rule.budget_cle_id]))[2] AS budget_cle_id + FROM w_sejours_rss + JOIN w_budget_cle_rule ON + (a_liste_finess = '0' OR finess_id = ANY (liste_finess_id)) AND + (a_liste_type_sejour = '0' OR type_sejour = ANY (liste_type_sejour_id)) AND + (a_liste_service = '0' OR service_facturation_id = ANY (liste_service_id)) AND + (a_liste_uf = '0' OR uf_id = ANY (liste_uf_id)) AND + (a_liste_activite = '0' OR activite_id = ANY (liste_activite_id)) AND + (a_liste_medecin = '0' OR medecin_sejour_id = ANY (liste_medecin_activite_id)) AND + (a_liste_specialite = '0' OR specialite_sejour_id = ANY (liste_specialite_activite_id)) AND + (a_liste_diagnostic_principal = '0' OR diagnostic_principal_id = ANY (liste_diagnostic_principal_id)) AND + (a_liste_diagnostic_relie = '0' OR diagnostic_relie_id = ANY (liste_diagnostic_relie_id)) AND + (a_liste_diagnostic_associe = '0' OR w_budget_cle_rule.oid = ANY(diagnostic_associe_liste_rule_id)) AND + (a_liste_acte = '0' OR w_budget_cle_rule.oid = ANY(acte_liste_rule_id)) AND + (a_liste_rubrique = '0' OR w_budget_cle_rule.oid = ANY(rubrique_liste_rule_id)) AND + (a_liste_ghm = '0' OR ghm_activite_id = ANY (liste_ghm_activite_id)) AND + (a_liste_sauf_ghm = '0' OR ghm_activite_id <> ALL (liste_sauf_ghm_activite_id)) + WHERE w_sejours_rss.sejour_id <> 0 + GROUP BY 1 + ORDER BY 1; + UPDATE w_sejours_rss SET + budget_cle_id = w_sejours_budget_cle.budget_cle_id, + budget_cle_priorite = w_sejours_budget_cle.budget_cle_priorite + FROM w_sejours_budget_cle + WHERE w_sejours_rss.oid = w_sejours_budget_cle.oid AND + (w_sejours_rss.budget_cle_priorite > w_sejours_budget_cle.budget_cle_priorite OR w_sejours_rss.budget_cle_priorite = 0); + + + TRUNCATE activite.p_sejours_budget_cle; + + UPDATE activite.p_sejours_budget_cle + SET + budget_cle_id = w_sejours_rss.budget_cle_id + FROM w_sejours_rss + WHERE p_sejours_budget_cle.sejour_id = w_sejours_rss.sejour_id AND + w_sejours_rss.lieu_id = w_sejours_rss.lieu_sortie_id AND + p_sejours_budget_cle.sejour_id <> 0 AND + ( + p_sejours_budget_cle.budget_cle_id IS DISTINCT FROM w_sejours_rss.budget_cle_id + ); + + + INSERT INTO activite.p_sejours_budget_cle (sejour_id, budget_cle_id) + SELECT sejour_id, MIN(budget_cle_id) + FROM w_sejours_rss + WHERE sejour_id <> 0 AND + w_sejours_rss.lieu_id = w_sejours_rss.lieu_sortie_id AND + sejour_id NOT IN (SELECT sejour_id FROM activite.p_sejours_budget_cle) + GROUP BY 1 + ; + + ANALYSE activite.p_sejours_budget_cle + ; + + UPDATE activite.p_mouvements_sejour + SET budget_cle_id = w_sejours_rss.budget_cle_id + FROM w_sejours_rss + WHERE p_mouvements_sejour.no_sejour = w_sejours_rss.no_sejour AND + p_mouvements_sejour.lieu_id = w_sejours_rss.lieu_id AND + p_mouvements_sejour.budget_cle_id IS DISTINCT FROM w_sejours_rss.budget_cle_id + ; + + ANALYSE activite.p_mouvements_sejour + ; + + + UPDATE activite.p_factures_lignes_c + SET budget_cle_id = w_sejours_rss.budget_cle_id + FROM w_sejours_rss + JOIN activite.p_factures ON w_sejours_rss.no_sejour = p_factures.no_sejour + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures_lignes_c.lieu_id = w_sejours_rss.lieu_id AND + p_factures_lignes_c.budget_cle_id IS DISTINCT FROM w_sejours_rss.budget_cle_id + ; + + ANALYSE activite.p_factures_lignes_c + ; + + + RETURN 'OK' ; + + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_budget_generate_keys.yaml b/db/schema2/functions/cti_budget_generate_keys.yaml new file mode 100644 index 0000000..b29b677 --- /dev/null +++ b/db/schema2/functions/cti_budget_generate_keys.yaml @@ -0,0 +1,2552 @@ +return: text +lang: plpgsql +src: | + DECLARE + + + BEGIN + + -- Oid 0 = Non renseigné + INSERT INTO activite.t_budget_cle (oid, code, texte, texte_court) + SELECT + 0, '*NR', 'N/R', 'N/R' + WHERE 0 NOT IN (SELECT oid FROM activite.t_budget_cle) + ; + + -- Clés automatiques ? + IF NOT EXISTS (SELECT * FROM base.t_budget WHERE cle_budgetaire_activite IN ('CTIMEDSEJ','MEDSEJ','CTICLSUF','CTIFILMEDSEJ') LIMIT 1) THEN + return 'Aucune génération automatique'; + END IF; + + DROP TABLE IF EXISTS w_budget_settings; + CREATE TEMP TABLE w_budget_settings AS + SELECT (MAX(ARRAY[date_fin::text,oid::text]))[2]::bigint AS current_budget_id, + (MAX(ARRAY[date_fin::text,cle_budgetaire_activite]))[2]::text AS cle_budgetaire_activite, + (MAX(ARRAY[date_fin::text,classe_code]))[2]::text AS classe_code, + MAX(date_fin) AS date_fin, + NULL::date AS date_debut + FROM base.t_budget + ; + UPDATE w_budget_settings + SET date_debut = t_budget.date_debut + FROM base.t_budget + WHERE t_budget.oid = current_budget_id + ; + + -- Génération des clés selon les médecins + IF EXISTS (SELECT * FROM w_budget_settings WHERE cle_budgetaire_activite IN ('CTIMEDSEJ','MEDSEJ')) THEN + + DROP TABLE IF EXISTS w_medecins_utilises; + CREATE TEMP TABLE w_medecins_utilises AS + SELECT t_medecins.code, t_medecins.nom, t_medecins.prenom, t_medecins.specialite_id + FROM base.t_medecins + JOIN activite.t_medecins_administratifs ON t_medecins.oid = t_medecins_administratifs.medecin_id + JOIN w_budget_settings t_budget ON t_budget.cle_budgetaire_activite IN ('CTIMEDSEJ','MEDSEJ') + JOIN activite.p_sejours ON t_medecins_administratifs.oid = medecin_sejour_id AND date_sortie >= date(t_budget.date_debut - interval '1 year') + WHERE t_medecins.oid <> 0 AND t_medecins.code <> '' + GROUP BY 1,2,3,4 + ; + + INSERT INTO w_medecins_utilises + SELECT t_medecins.code, t_medecins.nom, t_medecins.prenom, t_medecins.specialite_id + FROM base.t_medecins + JOIN w_budget_settings t_budget ON t_budget.cle_budgetaire_activite IN ('CTIMEDSEJ','MEDSEJ') + JOIN activite.t_budget_cle ON t_medecins.code = t_budget_cle.code + WHERE t_medecins.oid <> 0 AND t_medecins.code <> '' AND + t_medecins.code NOT IN (SELECT code FROM w_medecins_utilises) AND + t_medecins.specialite_id <> 0 + GROUP BY 1,2,3,4 + ; + + INSERT INTO w_medecins_utilises + SELECT t_medecins.code, t_medecins.nom, t_medecins.prenom, t_medecins.specialite_id + FROM base.t_medecins + JOIN w_budget_settings t_budget ON t_budget.cle_budgetaire_activite IN ('CTIMEDSEJ','MEDSEJ') + JOIN activite.t_budget_cle ON t_medecins.code = t_budget_cle.code + WHERE t_medecins.oid <> 0 AND t_medecins.code <> '' AND + t_medecins.code NOT IN (SELECT code FROM w_medecins_utilises) + GROUP BY 1,2,3,4 + ; + + -- divers 1 + INSERT INTO w_medecins_utilises(code, nom, prenom, specialite_id) + SELECT + '*SP'||t_specialites_medecin.code||'-1', + 'MEDECIN 1 EN '||t_specialites_medecin.texte|| ' ('||t_specialites_medecin.code|| ')', + '', + w_medecins_utilises.specialite_id + FROM w_medecins_utilises + JOIN base.t_specialites_medecin ON specialite_id = t_specialites_medecin.oid + JOIN w_budget_settings ON cle_budgetaire_activite = 'CTIMEDSEJ' + WHERE specialite_id <> 0 + GROUP BY 1,2,3,4 + ; + -- divers 2 + INSERT INTO w_medecins_utilises(code, nom, prenom, specialite_id) + SELECT + '*SP'||t_specialites_medecin.code||'-2', + 'MEDECIN 2 EN '||t_specialites_medecin.texte|| ' ('||t_specialites_medecin.code|| ')', + '', + w_medecins_utilises.specialite_id + FROM w_medecins_utilises + JOIN base.t_specialites_medecin ON specialite_id = t_specialites_medecin.oid + JOIN w_budget_settings ON cle_budgetaire_activite = 'CTIMEDSEJ' + WHERE specialite_id <> 0 + GROUP BY 1,2,3,4 + ; + -- clés globales + INSERT INTO w_medecins_utilises(code, nom, prenom, specialite_id) + SELECT + '*GLOBAL', + 'Budget Total', + '', + 0::bigint AS specialite_id + FROM w_budget_settings + WHERE cle_budgetaire_activite = 'CTIMEDSEJ' + ; + + + -- Clés = Médecins séjours + INSERT INTO activite.t_budget_cle (code, texte, texte_court) + SELECT + t_medecins.code, MAX(t_medecins.nom || ' ' || t_medecins.prenom), MAX(t_medecins.nom || ' ' || t_medecins.prenom) + FROM w_medecins_utilises t_medecins + WHERE t_medecins.code NOT IN (SELECT code FROM activite.t_budget_cle) + GROUP BY 1 + ; + + + UPDATE activite.t_budget_cle SET + texte = subview.texte, + texte_court = subview.texte + FROM + ( + SELECT code, MAX(nom || ' ' || prenom) AS texte + FROM w_medecins_utilises + GROUP BY 1 + ) subview + WHERE t_budget_cle.code = subview.code AND + t_budget_cle.texte IS DISTINCT FROM subview.texte + ; + + -- Règles standard Médecins séjours + INSERT INTO activite.t_budget_cle_rule (code, texte, budget_cle_id, priorite, liste_medecin) + SELECT + ''::text, + MAX(t_budget_cle.texte) || ' - Standard', + MAX(t_budget_cle.oid), + 5000, + '(R) ' || t_budget_cle.code + FROM activite.t_budget_cle + JOIN w_budget_settings t_budget ON t_budget.cle_budgetaire_activite IN ('CTIMEDSEJ','MEDSEJ') + JOIN base.t_medecins ON t_budget_cle.code = t_medecins.code + LEFT JOIN activite.t_budget_cle_rule ON + t_budget_cle.oid = budget_cle_id AND + priorite = 5000 + WHERE t_budget_cle.oid <> 0 AND + t_budget_cle.code NOT LIKE '*SP%' AND + t_budget_cle.code NOT LIKE '*GL%' AND + t_budget_cle_rule.oid IS NULL + GROUP BY 5; + + UPDATE activite.t_budget_cle_rule SET + texte = subview.texte, + liste_medecin = subview.liste_medecin + FROM + ( + SELECT + t_budget_cle_rule.oid, + MAX(t_budget_cle.texte) || ' - Standard' AS texte, + '(R) ' || MAX(t_budget_cle.code) AS liste_medecin + FROM activite.t_budget_cle + JOIN w_budget_settings t_budget ON t_budget.cle_budgetaire_activite IN ('CTIMEDSEJ','MEDSEJ') + JOIN activite.t_budget_cle_rule ON + t_budget_cle.oid = budget_cle_id AND + priorite = 5000 + GROUP BY 1 + HAVING + t_budget_cle_rule.texte <> (MAX(t_budget_cle.texte) || ' - Standard') OR + t_budget_cle_rule.liste_medecin <> ('(R) ' || MAX(t_budget_cle.code)) + ) subview + WHERE t_budget_cle_rule.oid = subview.oid + ; + + -- Suppression des clés pour des spécialités non utilisées (médecins réaffectés) + DELETE FROM activite.t_budget_cle + WHERE code LIKE '*SP%' AND + substr(code,4,length(code)-5) NOT IN + (SELECT t_specialites_medecin.code + FROM w_medecins_utilises + JOIN base.t_specialites_medecin ON specialite_id = t_specialites_medecin.oid + WHERE t_specialites_medecin.code IS NOT NULL) AND + t_budget_cle.oid NOT IN (SELECT budget_cle_id FROM activite.t_budget_cle_budget WHERE budget <> 0) + ; + + DELETE FROM activite.t_budget_cle_budget + WHERE budget = 0 AND budget_cle_id NOT IN (SELECT oid FROM activite.t_budget_cle) + ; + + -- Règles pour médecins divers (non prévus dans budget) + -- En attente + + -- Classes par spécialité + INSERT INTO activite.t_classes( + code, texte, table_id, is_cti, sequence + ) + SELECT 'CTI_SPE_BUDG', 'Spécialités budgétaires', t_listes_tables.oid, '1', 1 + FROM activite.t_listes_tables + JOIN w_budget_settings t_budget ON t_budget.cle_budgetaire_activite IN ('CTIMEDSEJ','MEDSEJ') + LEFT JOIN activite.t_classes ON t_classes.table_id = t_listes_tables.oid + LEFT JOIN activite.t_classes t_classes_s1 ON t_classes_s1.table_id = t_listes_tables.oid AND t_classes_s1.sequence = 1 + WHERE t_listes_tables.code = 'BUDGETCLE' AND + t_classes.oid IS NULL AND + t_classes_s1.oid IS NULL + GROUP BY 3 + ; + + -- Classe à alimenter + DROP TABLE IF EXISTS w_classes; + CREATE TEMP TABLE w_classes AS + SELECT + COALESCE((MIN(ARRAY[CASE WHEN t_classes.code = 'CTI_SPE_BUDG' THEN '1' WHEN t_classes.sequence = 1 THEN '2' ELSE '9' END, t_classes.oid::text]))[2]::bigint,0) AS oid + FROM activite.t_classes + JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid + WHERE t_listes_tables.code = 'BUDGETCLE' + ; + + DELETE FROM w_classes + WHERE oid = 0 + ; + + DROP TABLE IF EXISTS w_sections; + CREATE TEMP TABLE w_sections AS + SELECT + t_budget_cle.oid AS budget_cle_id, + (MAX(ARRAY[to_char(t_medecins.specialite_id,'FM0000000000000'),CASE WHEN t_medecins.specialite_id <> 0 THEN t_specialites_medecin.code ELSE '****' END]))[2]::text AS section_code, + (MAX(ARRAY[to_char(t_medecins.specialite_id,'FM0000000000000'),CASE WHEN t_medecins.specialite_id <> 0 THEN t_specialites_medecin.texte ELSE 'SANS SPECIALITE' END]))[2]::text AS section_texte, + 0::bigint AS section_id + FROM w_medecins_utilises t_medecins + JOIN base.t_specialites_medecin ON t_medecins.specialite_id = t_specialites_medecin.oid + JOIN w_budget_settings t_budget ON t_budget.cle_budgetaire_activite IN ('CTIMEDSEJ','MEDSEJ') + JOIN activite.t_budget_cle ON t_budget_cle.code = t_medecins.code + GROUP BY 1 + ; + + INSERT INTO activite.t_classes_sections (code, classe_id, texte) + SELECT section_code, w_classes.oid, MAX(section_texte) + FROM w_classes + JOIN w_sections ON 1=1 + LEFT JOIN activite.t_classes_sections ON classe_id = w_classes.oid AND + t_classes_sections.code = w_sections.section_code + WHERE w_classes.oid <> 0 AND t_classes_sections.oid IS NULL + GROUP BY 1,2 + ORDER BY 1 + ; + + + UPDATE w_sections + SET section_id = t_classes_sections.oid + FROM activite.t_classes_sections + JOIN w_classes ON t_classes_sections.classe_id = w_classes.oid + WHERE section_code = t_classes_sections.code + ; + + UPDATE activite.t_classes_sections + SET texte = subview.section_texte + FROM + ( + SELECT section_id, section_code, w_classes.oid, MAX(section_texte) AS section_texte + FROM w_classes + JOIN w_sections ON 1=1 + GROUP BY 1,2,3 + ORDER BY 1 + ) subview + WHERE t_classes_sections.oid = section_id AND + t_classes_sections.texte IS DISTINCT FROM subview.section_texte + ; + + WITH subview AS + (SELECT section_id, to_id + FROM activite.t_classes_sections_elements + JOIN activite.t_classes_sections ON t_classes_sections_elements.section_id = t_classes_sections.oid + JOIN w_classes ON t_classes_sections.classe_id = w_classes.oid + ) + INSERT INTO activite.t_classes_sections_elements + SELECT section_id, budget_cle_id + FROM w_sections + WHERE budget_cle_id NOT IN (SELECT to_id FROM subview) + ; + + WITH subview AS + (SELECT t_classes_sections_elements.section_id AS section_id, w_sections.section_id AS new_section_id, to_id + FROM activite.t_classes_sections_elements + JOIN activite.t_classes_sections ON t_classes_sections_elements.section_id = t_classes_sections.oid + JOIN w_classes ON t_classes_sections.classe_id = w_classes.oid + JOIN w_sections ON w_sections.budget_cle_id = t_classes_sections_elements.to_id + ) + UPDATE activite.t_classes_sections_elements + SET section_id = subview.new_section_id + FROM subview + WHERE subview.to_id = t_classes_sections_elements.to_id AND + subview.section_id = t_classes_sections_elements.section_id AND + t_classes_sections_elements.section_id <> subview.new_section_id + ; + + -- Suppression des enfants avec clé budgétaire supprimée + DELETE + FROM activite.t_classes_sections_elements + USING activite.t_classes_sections + JOIN w_classes ON classe_id = w_classes.oid + WHERE section_id = t_classes_sections.oid AND + to_id NOT IN (SELECT oid FROM activite.t_budget_cle) + ; + + -- Suppression des clés sans enfant + DELETE FROM activite.t_classes_sections + WHERE oid IN + ( + SELECT t_classes_sections.oid + FROM activite.t_classes_sections + JOIN w_classes ON classe_id = w_classes.oid + WHERE t_classes_sections.oid NOT IN (SELECT section_id FROM activite.t_classes_sections_elements) + ) + ; + + PERFORM base.cti_update_classes('activite', 't_budget_cle', 'BUDGETCLE',''); + PERFORM activite.cti_reorganize_indicateur_condition(); + + END IF; + + -- Génération selon classes d'UF + IF EXISTS (SELECT * FROM w_budget_settings WHERE cle_budgetaire_activite IN ('CTICLSUF')) THEN + + + + DROP TABLE IF EXISTS w_budget_cle; + CREATE TEMP TABLE w_budget_cle AS + SELECT cle_code, cle_texte, base.cti_group_concat_without_sep(uf_code || ' ') AS cle_rule + FROM + ( + SELECT t_classes_sections.code AS cle_code, t_classes_sections.texte AS cle_texte, t_unites_fonctionnelles.code AS uf_code + FROM activite.t_classes_sections_elements + JOIN activite.t_classes_sections ON t_classes_sections_elements.section_id = t_classes_sections.oid + JOIN activite.t_classes ON t_classes_sections.classe_id = t_classes.oid + JOIN activite.t_unites_fonctionnelles ON t_classes_sections_elements.to_id = t_unites_fonctionnelles.oid + JOIN w_budget_settings t_budget ON t_budget.cle_budgetaire_activite IN ('CTICLSUF') + WHERE t_classes.code = t_budget.classe_code + ORDER BY 1,2,3 + ) subview + GROUP BY 1,2 + ORDER BY 1 + ; + + INSERT INTO activite.t_budget_cle (code, texte, texte_court) + SELECT cle_code, cle_texte, cle_texte + FROM w_budget_cle + WHERE cle_code NOT IN (SELECT code FROM activite.t_budget_cle WHERE code IS NOT NULL) + ; + + + INSERT INTO activite.t_budget_cle_rule (code, texte, budget_cle_id, priorite, liste_uf) + SELECT + t_budget_cle.code || '-STD', + MAX(t_budget_cle.texte) || ' - Standard', + MAX(t_budget_cle.oid), + 5000, + cle_rule + FROM activite.t_budget_cle + JOIN w_budget_cle ON t_budget_cle.code = w_budget_cle.cle_code + LEFT JOIN activite.t_budget_cle_rule ON + t_budget_cle.oid = budget_cle_id AND + priorite = 5000 + WHERE t_budget_cle.oid <> 0 AND + t_budget_cle_rule.oid IS NULL + GROUP BY 1,5; + + UPDATE activite.t_budget_cle_rule SET + code = subview.code, + texte = subview.texte, + liste_uf = subview.cle_rule + FROM + ( + SELECT + t_budget_cle_rule.oid, + MAX(t_budget_cle.code) || '-STD' AS code, + MAX(t_budget_cle.texte) || ' - Standard' AS texte, + MAX(cle_rule) AS cle_rule + FROM activite.t_budget_cle + JOIN w_budget_cle ON t_budget_cle.code = w_budget_cle.cle_code + JOIN activite.t_budget_cle_rule ON + t_budget_cle.oid = budget_cle_id AND + priorite = 5000 + GROUP BY 1 + HAVING + t_budget_cle_rule.code <> (MAX(t_budget_cle.code) || '-STD') OR + t_budget_cle_rule.texte <> (MAX(t_budget_cle.texte) || ' - Standard') OR + t_budget_cle_rule.liste_uf <> MAX(cle_rule) + ) subview + WHERE t_budget_cle_rule.oid = subview.oid + ; + + DELETE + FROM activite.t_budget_cle_rule + WHERE priorite = 5000 AND + code NOT IN (SELECT cle_code || '-STD' FROM w_budget_cle) + ; + + + + + END IF; + + -- Génération des clés filiere et medecin + IF EXISTS (SELECT * FROM w_budget_settings WHERE cle_budgetaire_activite IN ('CTIFILMEDSEJ')) THEN + DROP TABLE IF EXISTS w_cle_utilise; + CREATE TEMP TABLE w_cle_utilise AS + SELECT + t_medecins_administratifs.medecin_id, + t_medecins.code AS medecin_code, + t_medecins.nom || ' ' || t_medecins.prenom AS medecin_texte, + t_medecins.specialite_id, + filiere_soin_principale_id AS filiere_soin_id, + t_filiere_soin.code AS filiere_soin_code, + t_filiere_soin.texte AS filiere_soin_texte, + replace(t_filiere_soin.code,'.','')||'#'||t_medecins.code AS cle_budget_code, + t_filiere_soin.code || ' ' || t_filiere_soin.texte||'. Medecin: '||t_medecins.nom || ' ' || t_medecins.prenom AS cle_budget_texte + FROM activite.p_sejours + JOIN activite.t_medecins_administratifs ON t_medecins_administratifs.oid = medecin_sejour_id + JOIN activite.t_filiere_soin ON filiere_soin_principale_id = t_filiere_soin.oid + JOIN base.t_medecins ON t_medecins.oid = t_medecins_administratifs.medecin_id + JOIN w_budget_settings t_budget ON t_budget.cle_budgetaire_activite IN ('CTIFILMEDSEJ') + WHERE p_sejours.date_sortie >= date(t_budget.date_debut - interval '1 year') AND + medecin_sejour_id > 0 AND + t_medecins_administratifs.medecin_id > 0 AND + t_medecins.code <> '' AND + filiere_soin_principale_id > 0 + GROUP BY 1,2,3,4,5,6,7,8,9 + ; + + + -- divers 1 + INSERT INTO w_cle_utilise(medecin_id, medecin_code, medecin_texte, filiere_soin_id, filiere_soin_code, filiere_soin_texte, cle_budget_code, cle_budget_texte) + SELECT + 0::bigint AS medecin_id, + '*FS'||filiere_soin_code||'-1', + 'MEDECIN 1 EN '||filiere_soin_texte|| ' ('||filiere_soin_code|| ')', + filiere_soin_id, + filiere_soin_code, + filiere_soin_texte, + replace(filiere_soin_code,'.','')||'#*DIV1' AS cle_budget_code, + filiere_soin_code || ' ' || filiere_soin_texte||'. Medecin: Divers 1' AS cle_budget_texte + FROM w_cle_utilise + JOIN w_budget_settings ON cle_budgetaire_activite = 'CTIFILMEDSEJ' + GROUP BY 1,2,3,4,5,6,7,8 + ; + -- divers 2 + INSERT INTO w_cle_utilise(medecin_id, medecin_code, medecin_texte, filiere_soin_id, filiere_soin_code, filiere_soin_texte, cle_budget_code, cle_budget_texte) + SELECT + 0::bigint AS medecin_id, + '*FS'||filiere_soin_code||'-1', + 'MEDECIN 1 EN '||filiere_soin_texte|| ' ('||filiere_soin_code|| ')', + filiere_soin_id, + filiere_soin_code, + filiere_soin_texte, + replace(filiere_soin_code,'.','')||'#*DIV2' AS cle_budget_code, + filiere_soin_code || ' ' || filiere_soin_texte||'. Medecin: Divers 2' AS cle_budget_texte + FROM w_cle_utilise + JOIN w_budget_settings ON cle_budgetaire_activite = 'CTIFILMEDSEJ' + GROUP BY 1,2,3,4,5,6,7,8 + ; + + INSERT INTO w_cle_utilise(medecin_id, medecin_code, medecin_texte, filiere_soin_id, filiere_soin_code, filiere_soin_texte, cle_budget_code, cle_budget_texte) + SELECT + 0::bigint AS medecin_id, + '*ZZ', + 'AUTRES', + 0::bigint AS filiere_soin_id, + ''::text AS filiere_soin_code, + ''::text AS filiere_soin_texte, + '*ZZ' AS cle_budget_code, + 'AUTRES' AS cle_budget_texte + FROM w_cle_utilise + JOIN w_budget_settings ON cle_budgetaire_activite = 'CTIFILMEDSEJ' + GROUP BY 1,2,3,4,5,6,7,8 + ; + -- clés globales + INSERT INTO w_cle_utilise(medecin_id, medecin_code, medecin_texte, filiere_soin_id, filiere_soin_code, filiere_soin_texte, cle_budget_code, cle_budget_texte) + SELECT + 0::bigint AS medecin_id, + '*GLOBAL', + 'Budget Total', + 0::bigint AS filiere_soin_id, + ''::text AS filiere_soin_code, + ''::text AS filiere_soin_texte, + '*GLOBAL'::text AS cle_budget_code, + 'Budget Total'::text AS cle_budget_texte + FROM w_budget_settings + WHERE cle_budgetaire_activite = 'CTIFILMEDSEJ' + ; + + + -- Clés = Médecins séjours + INSERT INTO activite.t_budget_cle (code, texte, texte_court) + SELECT + cle_budget_code, cle_budget_texte, cle_budget_texte + FROM w_cle_utilise + WHERE cle_budget_code NOT IN (SELECT code FROM activite.t_budget_cle) + ; + + + UPDATE activite.t_budget_cle SET + texte = w_cle_utilise.cle_budget_texte, + texte_court = w_cle_utilise.cle_budget_texte + FROM w_cle_utilise + WHERE t_budget_cle.code = w_cle_utilise.cle_budget_code AND + t_budget_cle.texte IS DISTINCT FROM w_cle_utilise.cle_budget_texte + ; + + + -- Règles standard Médecins séjours + DROP TABLE IF EXISTS w_filiere_soin_rule; + CREATE TEMP TABLE w_filiere_soin_rule AS + SELECT + t_filiere_soin_rule.oid AS filiere_soin_rule_id, + row_number() OVER (PARTITION BY filiere_soin_id ORDER BY priorite) AS rule_sequence, + filiere_soin_id, + CASE WHEN priorite <> 0 THEN priorite WHEN liste_diagnostic_principal <> '' THEN 90000 ELSE 999999 END AS priorite, + CASE WHEN liste_specialite <> '' THEN '1' ELSE '0' END AS a_liste_specialite, + string_to_array(translate(liste_specialite,'*,','% '),' ') AS liste_specialite, + NULL::bigint[] AS liste_specialite_id , + CASE WHEN liste_medecin <> '' THEN '1' ELSE '0' END AS a_liste_medecin, + string_to_array(CASE WHEN liste_medecin NOT LIKE '%**%' THEN translate(liste_medecin,'*,','% ') ELSE liste_medecin END,' ') AS liste_medecin, + NULL::bigint[] AS liste_medecin_id + FROM activite.t_filiere_soin_rule t_filiere_soin_rule + JOIN activite.t_filiere_soin t_filiere_soin ON filiere_soin_id = t_filiere_soin.oid + ORDER BY filiere_soin_id, priorite + ; + + UPDATE w_filiere_soin_rule + SET liste_specialite_id = (SELECT base.cti_group_array3(oid) FROM base.t_specialites_medecin WHERE code LIKE ANY (liste_specialite)) + WHERE a_liste_specialite = '1' + ; + + UPDATE w_filiere_soin_rule + SET liste_medecin_id = ( + SELECT base.cti_group_array3(t_medecins_administratifs.oid) + FROM activite.t_medecins_administratifs + LEFT JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid + WHERE ( + t_medecins_administratifs.oid <> 0 AND + t_medecins_administratifs.code <> '' AND + t_medecins_administratifs.code LIKE ANY (liste_medecin) AND liste_medecin[1] <> '(R)' + ) OR + ( + t_medecins_administratifs.oid IN + ( + SELECT + to_id + FROM activite.t_classes + JOIN activite.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid + JOIN activite.t_classes_sections_elements ON t_classes_sections_elements.section_id = t_classes_sections.oid + WHERE '[CLASSE:'||t_classes.code||':'||t_classes_sections.code||']' = ANY(liste_medecin) + ) + ) OR + ( + t_medecins.oid <> 0 AND + t_medecins.code <> '' AND + t_medecins.code LIKE ANY (liste_medecin) AND liste_medecin[1] = '(R)' + ) + ) + WHERE a_liste_medecin = '1' + ; + + DROP TABLE IF EXISTS w_budget_cle_rule; + CREATE TEMP TABLE w_budget_cle_rule AS + SELECT + t_budget_cle.code || '-' || rule_sequence::text AS code, + t_budget_cle.texte || ' (auto)' AS texte, + t_budget_cle.oid AS budget_cle_id, + t_filiere_soin_rule.priorite, + t_filiere_soin_rule.liste_diagnostic_principal, + t_filiere_soin_rule.liste_diagnostic_relie, + t_filiere_soin_rule.liste_diagnostic_associe, + t_filiere_soin_rule.liste_acte, + t_filiere_soin_rule.liste_ghm, + ''::text AS liste_specialite, + array_to_string(base.cti_array_accum(DISTINCT t_medecins_administratifs.code),' ') AS liste_medecin, + t_filiere_soin_rule.liste_finess, + t_filiere_soin_rule.liste_service, + t_filiere_soin_rule.liste_rubrique, + t_filiere_soin_rule.liste_sauf_ghm, + t_filiere_soin_rule.liste_activite, + t_filiere_soin_rule.liste_type_sejour, + GREATEST(liste_unite_fonctionnelle_entree,t_filiere_soin_rule.liste_unite_fonctionnelle) AS liste_uf + FROM activite.t_budget_cle + JOIN w_cle_utilise ON t_budget_cle.code = cle_budget_code + JOIN w_budget_settings t_budget ON t_budget.cle_budgetaire_activite IN ('CTIFILMEDSEJ') + JOIN activite.t_filiere_soin_rule ON w_cle_utilise.filiere_soin_id = t_filiere_soin_rule.filiere_soin_id + JOIN activite.t_medecins_administratifs ON + w_cle_utilise.medecin_id <> 0 AND + w_cle_utilise.medecin_id = t_medecins_administratifs.medecin_id + JOIN w_filiere_soin_rule ON + t_filiere_soin_rule.oid = w_filiere_soin_rule.filiere_soin_rule_id AND + (a_liste_medecin = '0' OR t_medecins_administratifs.oid = ANY (liste_medecin_id)) AND + (a_liste_specialite = '0' OR w_cle_utilise.specialite_id = ANY (liste_specialite_id)) + WHERE cle_budget_code NOT LIKE '%*DIV%' + GROUP BY 1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18 + ; + + + INSERT INTO w_budget_cle_rule + SELECT + t_budget_cle.code AS code, + t_budget_cle.texte || ' (auto)' AS texte, + t_budget_cle.oid AS budget_cle_id, + 99999 AS priorite, + ''::text AS liste_diagnostic_principal, + ''::text AS liste_diagnostic_relie, + ''::text AS liste_diagnostic_associe, + ''::text AS liste_acte, + ''::text AS liste_ghm, + ''::text AS liste_specialite, + ''::text AS liste_medecin, + ''::text AS liste_finess, + ''::text AS liste_service, + ''::text AS liste_rubrique, + ''::text AS liste_sauf_ghm, + ''::text AS liste_activite, + ''::text AS liste_type_sejour, + ''::text AS liste_uf + FROM activite.t_budget_cle + WHERE t_budget_cle.code = '*ZZ' + ; + DELETE FROM w_budget_cle_rule + USING + ( + SELECT + budget_cle_id, + liste_diagnostic_principal, + liste_diagnostic_relie, + liste_diagnostic_associe, + liste_acte, + liste_ghm, + liste_specialite, + liste_medecin, + liste_finess, + liste_service, + liste_rubrique, + liste_sauf_ghm, + liste_activite, + liste_type_sejour, + liste_uf, + (MIN(ARRAY[liste_specialite,priorite::text]))[2]::bigint AS keep_priorite + FROM w_budget_cle_rule + WHERE liste_medecin <> '' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 + HAVING count(*) > 1 + ) subview + WHERE + w_budget_cle_rule.budget_cle_id = subview.budget_cle_id AND + w_budget_cle_rule.liste_diagnostic_principal = subview.liste_diagnostic_principal AND + w_budget_cle_rule.liste_diagnostic_relie = subview.liste_diagnostic_relie AND + w_budget_cle_rule.liste_diagnostic_associe = subview.liste_diagnostic_associe AND + w_budget_cle_rule.liste_acte = subview.liste_acte AND + w_budget_cle_rule.liste_ghm = subview.liste_ghm AND + w_budget_cle_rule.liste_specialite = subview.liste_specialite AND + w_budget_cle_rule.liste_medecin = subview.liste_medecin AND + w_budget_cle_rule.liste_finess = subview.liste_finess AND + w_budget_cle_rule.liste_service = subview.liste_service AND + w_budget_cle_rule.liste_rubrique = subview.liste_rubrique AND + w_budget_cle_rule.liste_sauf_ghm = subview.liste_sauf_ghm AND + w_budget_cle_rule.liste_activite = subview.liste_activite AND + w_budget_cle_rule.liste_type_sejour = subview.liste_type_sejour AND + w_budget_cle_rule.liste_uf = subview.liste_uf AND + w_budget_cle_rule.priorite <> keep_priorite + ; + + + + INSERT INTO activite.t_budget_cle_rule ( + code, + texte, + budget_cle_id, + priorite, + liste_diagnostic_principal, + liste_diagnostic_relie, + liste_diagnostic_associe, + liste_acte, + liste_ghm, + liste_specialite, + liste_medecin, + liste_finess, + liste_service, + liste_rubrique, + liste_sauf_ghm, + liste_activite, + liste_type_sejour, + liste_uf + ) + SELECT + code, + texte, + budget_cle_id, + priorite, + liste_diagnostic_principal, + liste_diagnostic_relie, + liste_diagnostic_associe, + liste_acte, + liste_ghm, + liste_specialite, + liste_medecin, + liste_finess, + liste_service, + liste_rubrique, + liste_sauf_ghm, + liste_activite, + liste_type_sejour, + liste_uf + FROM w_budget_cle_rule + WHERE w_budget_cle_rule.code NOT IN (SELECT code FROM activite.t_budget_cle_rule) + ; + + UPDATE activite.t_budget_cle_rule SET + texte = w_budget_cle_rule.texte, + budget_cle_id = w_budget_cle_rule.budget_cle_id, + priorite = w_budget_cle_rule.priorite, + liste_diagnostic_principal = w_budget_cle_rule.liste_diagnostic_principal, + liste_diagnostic_relie = w_budget_cle_rule.liste_diagnostic_relie, + liste_diagnostic_associe = w_budget_cle_rule.liste_diagnostic_associe, + liste_acte = w_budget_cle_rule.liste_acte, + liste_ghm = w_budget_cle_rule.liste_ghm, + liste_specialite = w_budget_cle_rule.liste_specialite, + liste_medecin = w_budget_cle_rule.liste_medecin, + liste_finess = w_budget_cle_rule.liste_finess, + liste_service = w_budget_cle_rule.liste_service, + liste_rubrique = w_budget_cle_rule.liste_rubrique, + liste_sauf_ghm = w_budget_cle_rule.liste_sauf_ghm, + liste_activite = w_budget_cle_rule.liste_activite, + liste_type_sejour = w_budget_cle_rule.liste_type_sejour, + liste_uf = w_budget_cle_rule.liste_uf + FROM w_budget_cle_rule + WHERE t_budget_cle_rule.code = w_budget_cle_rule.code AND + ( + t_budget_cle_rule.texte IS DISTINCT FROM w_budget_cle_rule.texte OR + t_budget_cle_rule.budget_cle_id IS DISTINCT FROM w_budget_cle_rule.budget_cle_id OR + t_budget_cle_rule.priorite IS DISTINCT FROM w_budget_cle_rule.priorite OR + t_budget_cle_rule.liste_diagnostic_principal IS DISTINCT FROM w_budget_cle_rule.liste_diagnostic_principal OR + t_budget_cle_rule.liste_diagnostic_relie IS DISTINCT FROM w_budget_cle_rule.liste_diagnostic_relie OR + t_budget_cle_rule.liste_diagnostic_associe IS DISTINCT FROM w_budget_cle_rule.liste_diagnostic_associe OR + t_budget_cle_rule.liste_acte IS DISTINCT FROM w_budget_cle_rule.liste_acte OR + t_budget_cle_rule.liste_ghm IS DISTINCT FROM w_budget_cle_rule.liste_ghm OR + t_budget_cle_rule.liste_specialite IS DISTINCT FROM w_budget_cle_rule.liste_specialite OR + t_budget_cle_rule.liste_medecin IS DISTINCT FROM w_budget_cle_rule.liste_medecin OR + t_budget_cle_rule.liste_finess IS DISTINCT FROM w_budget_cle_rule.liste_finess OR + t_budget_cle_rule.liste_service IS DISTINCT FROM w_budget_cle_rule.liste_service OR + t_budget_cle_rule.liste_rubrique IS DISTINCT FROM w_budget_cle_rule.liste_rubrique OR + t_budget_cle_rule.liste_sauf_ghm IS DISTINCT FROM w_budget_cle_rule.liste_sauf_ghm OR + t_budget_cle_rule.liste_activite IS DISTINCT FROM w_budget_cle_rule.liste_activite OR + t_budget_cle_rule.liste_type_sejour IS DISTINCT FROM w_budget_cle_rule.liste_type_sejour OR + t_budget_cle_rule.liste_uf IS DISTINCT FROM w_budget_cle_rule.liste_uf + ) + ; + + DELETE FROM activite.t_budget_cle_rule + WHERE code <> '*ZZ' AND + code NOT IN (SELECT code FROM w_budget_cle_rule) AND + priorite IN (SELECT priorite FROM w_budget_cle_rule) + ; + + + + -- Classes par filière + INSERT INTO activite.t_classes( + code, texte, table_id, is_cti, sequence + ) + SELECT 'CTI_FIL_BUDG', 'Budget par filière', t_listes_tables.oid, '1', 1 + FROM activite.t_listes_tables + JOIN w_budget_settings t_budget ON t_budget.cle_budgetaire_activite IN ('CTIFILMEDSEJ') + LEFT JOIN activite.t_classes ON t_classes.table_id = t_listes_tables.oid + LEFT JOIN activite.t_classes t_classes_s1 ON t_classes_s1.table_id = t_listes_tables.oid AND t_classes_s1.sequence = 1 + WHERE t_listes_tables.code = 'BUDGETCLE' AND + t_classes.oid IS NULL AND + t_classes_s1.oid IS NULL + GROUP BY 3 + ; + + -- Classe à alimenter + DROP TABLE IF EXISTS w_classes; + CREATE TEMP TABLE w_classes AS + SELECT + COALESCE((MIN(ARRAY[CASE WHEN t_classes.code = 'CTI_FIL_BUDG' THEN '1' WHEN t_classes.sequence = 1 THEN '2' ELSE '9' END, t_classes.oid::text]))[2]::bigint,0) AS oid + FROM activite.t_classes + JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid + WHERE t_listes_tables.code = 'BUDGETCLE' + ; + + DELETE FROM w_classes + WHERE oid = 0 + ; + + DROP TABLE IF EXISTS w_sections; + CREATE TEMP TABLE w_sections AS + SELECT + t_budget_cle.oid AS budget_cle_id, + MAX(CASE WHEN filiere_soin_id <> 0 THEN filiere_soin_code ELSE '****' END) AS section_code, + MAX(CASE WHEN filiere_soin_id <> 0 THEN filiere_soin_texte ELSE 'SANS FILIERE' END) AS section_texte, + 0::bigint AS section_id + FROM w_cle_utilise + JOIN w_budget_settings t_budget ON t_budget.cle_budgetaire_activite IN ('CTIFILMEDSEJ') + JOIN activite.t_budget_cle ON t_budget_cle.code = w_cle_utilise.cle_budget_code + GROUP BY 1 + ; + + INSERT INTO activite.t_classes_sections (code, classe_id, texte) + SELECT section_code, w_classes.oid, MAX(section_texte) + FROM w_classes + JOIN w_sections ON 1=1 + LEFT JOIN activite.t_classes_sections ON classe_id = w_classes.oid AND + t_classes_sections.code = w_sections.section_code + WHERE w_classes.oid <> 0 AND t_classes_sections.oid IS NULL + GROUP BY 1,2 + ORDER BY 1 + ; + + + UPDATE w_sections + SET section_id = t_classes_sections.oid + FROM activite.t_classes_sections + JOIN w_classes ON t_classes_sections.classe_id = w_classes.oid + WHERE section_code = t_classes_sections.code + ; + + UPDATE activite.t_classes_sections + SET texte = subview.section_texte + FROM + ( + SELECT section_id, section_code, w_classes.oid, MAX(section_texte) AS section_texte + FROM w_classes + JOIN w_sections ON 1=1 + GROUP BY 1,2,3 + ORDER BY 1 + ) subview + WHERE t_classes_sections.oid = section_id AND + t_classes_sections.texte IS DISTINCT FROM subview.section_texte + ; + + WITH subview AS + (SELECT section_id, to_id + FROM activite.t_classes_sections_elements + JOIN activite.t_classes_sections ON t_classes_sections_elements.section_id = t_classes_sections.oid + JOIN w_classes ON t_classes_sections.classe_id = w_classes.oid + ) + INSERT INTO activite.t_classes_sections_elements + SELECT section_id, budget_cle_id + FROM w_sections + WHERE budget_cle_id NOT IN (SELECT to_id FROM subview) + ; + + WITH subview AS + (SELECT t_classes_sections_elements.section_id AS section_id, w_sections.section_id AS new_section_id, to_id + FROM activite.t_classes_sections_elements + JOIN activite.t_classes_sections ON t_classes_sections_elements.section_id = t_classes_sections.oid + JOIN w_classes ON t_classes_sections.classe_id = w_classes.oid + JOIN w_sections ON w_sections.budget_cle_id = t_classes_sections_elements.to_id + ) + UPDATE activite.t_classes_sections_elements + SET section_id = subview.new_section_id + FROM subview + WHERE subview.to_id = t_classes_sections_elements.to_id AND + subview.section_id = t_classes_sections_elements.section_id AND + t_classes_sections_elements.section_id <> subview.new_section_id + ; + + -- Suppression des enfants avec clé budgétaire supprimée + DELETE + FROM activite.t_classes_sections_elements + USING activite.t_classes_sections + JOIN w_classes ON classe_id = w_classes.oid + WHERE section_id = t_classes_sections.oid AND + to_id NOT IN (SELECT oid FROM activite.t_budget_cle) + ; + + -- Suppression des clés sans enfant + DELETE FROM activite.t_classes_sections + WHERE oid IN + ( + SELECT t_classes_sections.oid + FROM activite.t_classes_sections + JOIN w_classes ON classe_id = w_classes.oid + WHERE t_classes_sections.oid NOT IN (SELECT section_id FROM activite.t_classes_sections_elements) + ) + ; + + + + -- Classes par médecin + INSERT INTO activite.t_classes( + code, texte, table_id, is_cti, sequence + ) + SELECT 'CTI_MED_BUDG', 'Budget par médecin', t_listes_tables.oid, '1', 2 + FROM activite.t_listes_tables + JOIN w_budget_settings t_budget ON t_budget.cle_budgetaire_activite IN ('CTIFILMEDSEJ') + LEFT JOIN activite.t_classes ON t_classes.table_id = t_listes_tables.oid + LEFT JOIN activite.t_classes t_classes_s1 ON t_classes_s1.table_id = t_listes_tables.oid AND t_classes_s1.sequence = 2 + WHERE t_listes_tables.code = 'BUDGETCLE' AND + t_classes_s1.oid IS NULL + GROUP BY 3 + ; + + -- Classe à alimenter + DROP TABLE IF EXISTS w_classes; + CREATE TEMP TABLE w_classes AS + SELECT + COALESCE((MIN(ARRAY[CASE WHEN t_classes.code = 'CTI_MED_BUDG' THEN '1' WHEN t_classes.sequence = 2 THEN '2' ELSE '9' END, t_classes.oid::text]))[2]::bigint,0) AS oid + FROM activite.t_classes + JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid + WHERE t_listes_tables.code = 'BUDGETCLE' + ; + + DELETE FROM w_classes + WHERE oid = 0 + ; + + DROP TABLE IF EXISTS w_sections; + CREATE TEMP TABLE w_sections AS + SELECT + t_budget_cle.oid AS budget_cle_id, + MAX(CASE WHEN medecin_id <> 0 THEN medecin_code ELSE '****' END) AS section_code, + MAX(CASE WHEN medecin_id <> 0 THEN medecin_texte ELSE 'SANS FILIERE' END) AS section_texte, + 0::bigint AS section_id + FROM w_cle_utilise + JOIN w_budget_settings t_budget ON t_budget.cle_budgetaire_activite IN ('CTIFILMEDSEJ') + JOIN activite.t_budget_cle ON t_budget_cle.code = w_cle_utilise.cle_budget_code + WHERE medecin_id <> 0 + GROUP BY 1 + ; + + INSERT INTO activite.t_classes_sections (code, classe_id, texte) + SELECT section_code, w_classes.oid, MAX(section_texte) + FROM w_classes + JOIN w_sections ON 1=1 + LEFT JOIN activite.t_classes_sections ON classe_id = w_classes.oid AND + t_classes_sections.code = w_sections.section_code + WHERE w_classes.oid <> 0 AND t_classes_sections.oid IS NULL + GROUP BY 1,2 + ORDER BY 1 + ; + + + UPDATE w_sections + SET section_id = t_classes_sections.oid + FROM activite.t_classes_sections + JOIN w_classes ON t_classes_sections.classe_id = w_classes.oid + WHERE section_code = t_classes_sections.code + ; + + UPDATE activite.t_classes_sections + SET texte = subview.section_texte + FROM + ( + SELECT section_id, section_code, w_classes.oid, MAX(section_texte) AS section_texte + FROM w_classes + JOIN w_sections ON 1=1 + GROUP BY 1,2,3 + ORDER BY 1 + ) subview + WHERE t_classes_sections.oid = section_id AND + t_classes_sections.texte IS DISTINCT FROM subview.section_texte + ; + + WITH subview AS + (SELECT section_id, to_id + FROM activite.t_classes_sections_elements + JOIN activite.t_classes_sections ON t_classes_sections_elements.section_id = t_classes_sections.oid + JOIN w_classes ON t_classes_sections.classe_id = w_classes.oid + ) + INSERT INTO activite.t_classes_sections_elements + SELECT section_id, budget_cle_id + FROM w_sections + WHERE budget_cle_id NOT IN (SELECT to_id FROM subview) + ; + + WITH subview AS + (SELECT t_classes_sections_elements.section_id AS section_id, w_sections.section_id AS new_section_id, to_id + FROM activite.t_classes_sections_elements + JOIN activite.t_classes_sections ON t_classes_sections_elements.section_id = t_classes_sections.oid + JOIN w_classes ON t_classes_sections.classe_id = w_classes.oid + JOIN w_sections ON w_sections.budget_cle_id = t_classes_sections_elements.to_id + ) + UPDATE activite.t_classes_sections_elements + SET section_id = subview.new_section_id + FROM subview + WHERE subview.to_id = t_classes_sections_elements.to_id AND + subview.section_id = t_classes_sections_elements.section_id AND + t_classes_sections_elements.section_id <> subview.new_section_id + ; + + -- Suppression des enfants avec clé budgétaire supprimée + DELETE + FROM activite.t_classes_sections_elements + USING activite.t_classes_sections + JOIN w_classes ON classe_id = w_classes.oid + WHERE section_id = t_classes_sections.oid AND + to_id NOT IN (SELECT oid FROM activite.t_budget_cle) + ; + + -- Suppression des clés sans enfant + DELETE FROM activite.t_classes_sections + WHERE oid IN + ( + SELECT t_classes_sections.oid + FROM activite.t_classes_sections + JOIN w_classes ON classe_id = w_classes.oid + WHERE t_classes_sections.oid NOT IN (SELECT section_id FROM activite.t_classes_sections_elements) + ) + ; + + PERFORM base.cti_update_classes('activite', 't_budget_cle', 'BUDGETCLE',''); + PERFORM activite.cti_reorganize_indicateur_condition(); + + END IF; + + PERFORM activite.cti_reorganize_indicateur_condition() + ; + + -- Génération des indicateurs de budget (CTI) + IF EXISTS (SELECT * FROM w_budget_settings WHERE cle_budgetaire_activite IN ('CTIMEDSEJ')) THEN + DROP SEQUENCE IF EXISTS w_indicateur_budget_sequence; + CREATE TEMP SEQUENCE w_indicateur_budget_sequence; + + DROP TABLE IF EXISTS w_indicateurs_budget; + CREATE TEMP TABLE w_indicateurs_budget AS + SELECT + 'CTI_BUD_MT_RUBMED_HOAM_MCO_FAVA' AS code, 'Budget. CA Séjour Facturé + Valorisé MCO [HOSP + AMBU]' AS texte,'CA Séjour F+V [H+A]' AS entete, 'CA Séjour Facturé + Valorisé MCO [HOSP + AMBU]' AS entete_etendue, '#' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] AND type_sejour IN (''1'',''2'') AND forme_activite_section_code[2] in (''11'',''12'',''13'',''19'') THEN montant_facture + montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTSEJMCO'::text AS indicateur_budget_code, + 'CA Séjour MCO (HC+HJ)'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_RUBMED_HOAM_MCO_FAVA#1' AS indicateur_code, + '01'::text AS rapport_chapitre_code, + 'CA Séjour'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_EMC_HOAM_MCO' AS code, 'Budget. EMC [Hosp + ambu] MCO' AS texte,'EMC MCO' AS entete, 'EMC hosp et ambu MCO' AS entete_etendue, '#' AS output_format, + 'OCCUPATION' AS table_name, + 'CASE WHEN type_sejour IN (''1'',''2'') AND forme_activite_section_code[2] IN (''11'',''12'',''13'',''19'') THEN equivalent_malade_complet ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '' AS dimension_date_2, + '' AS dimension_date_3, + '' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'EMCMCO'::text AS indicateur_budget_code, + 'EMC MCO (HC+HJ)'::text AS indicateur_budget_texte, + 'CTI_BUD_EMC_HOAM_MCO' AS indicateur_code, + '01'::text AS rapport_chapitre_code, + 'CA Séjour'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_GHSM_HOAM_MCO' AS code, 'Budget. GHS Moyen [Hosp + ambu] MCO' AS texte,'GHS Moyen' AS entete, 'GHS Moyen hosp et ambu' AS entete_etendue, '#' AS output_format, + '*CALC' AS table_name, + 'base.cti_division([1], [2])' AS column_name, + 'SUM' AS total_function, + '' AS dimension_date_1, + '' AS dimension_date_2, + '' AS dimension_date_3, + '' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'GHSMMCO'::text AS indicateur_budget_code, + 'GHS Moyen MCO (HC+HJ)'::text AS indicateur_budget_texte, + 'CTI_BUD_GHSM_HOAM_MCO' AS indicateur_code, + '01'::text AS rapport_chapitre_code, + 'CA Séjour'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_JOU_HOAM_MCO' AS code, 'Budget. Nombre de jours [Hosp + ambu] MCO' AS texte,'Jours MCO' AS entete, 'Jours hosp et ambu MCO' AS entete_etendue, '#' AS output_format, + 'OCCUPATION' AS table_name, + 'CASE WHEN type_sejour IN (''1'',''2'') AND forme_activite_section_code[2] IN (''11'',''12'',''13'',''19'') THEN nb_jours_f + nb_ambulatoires ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '' AS dimension_date_2, + '' AS dimension_date_3, + '' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'JOUMCO'::text AS indicateur_budget_code, + 'Jours MCO (HC+HJ)'::text AS indicateur_budget_texte, + 'CTI_BUD_JOU_HOAM_MCO' AS indicateur_code, + '01'::text AS rapport_chapitre_code, + 'CA Séjour'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_REA_FAVA' AS code, 'Budget. CA REA Facturé + Valorisé' AS texte,'Montant REA F+V' AS entete, 'Montant REA facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN prestation_code IN (''REA'') THEN montant_facture+montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTREA'::text AS indicateur_budget_code, + 'CA REA'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_REA_FAVA#1' AS indicateur_code, + '02'::text AS rapport_chapitre_code, + 'CA Suppléments'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_STF_FAVA' AS code, 'Budget. CA STF Facturé + Valorisé' AS texte,'Montant STF F+V' AS entete, 'Montant STF facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN prestation_code IN (''STF'') THEN montant_facture+montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTSTF'::text AS indicateur_budget_code, + 'CA STF'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_STF_FAVA#1' AS indicateur_code, + '02'::text AS rapport_chapitre_code, + 'CA Suppléments'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_SRC_FAVA' AS code, 'Budget. CA SRC Facturé + Valorisé' AS texte,'Montant SRC F+V' AS entete, 'Montant SRC facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN prestation_code IN (''SRC'', ''SSC'') THEN montant_facture+montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTSRC'::text AS indicateur_budget_code, + 'CA SRC'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_SRC_FAVA#1' AS indicateur_code, + '02'::text AS rapport_chapitre_code, + 'CA Suppléments'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_NNN_FAVA' AS code, 'Budget. CA NNN Facturé + Valorisé' AS texte,'Montant NNN F+V' AS entete, 'Montant NNN facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN prestation_code IN (''NN1'',''NN3'',''NN2'') THEN montant_facture+montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTNNN'::text AS indicateur_budget_code, + 'CA NN'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_NNN_FAVA#1' AS indicateur_code, + '02'::text AS rapport_chapitre_code, + 'CA Suppléments'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_RUBMED_CHM_MCO_FAVA' AS code, 'Budget. CA Chimio Facturé + Valorisé' AS texte,'Montant CHM F+V' AS entete, 'Montant Chimio facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] AND type_sejour = ''5'' AND forme_activite_code = ''132'' THEN montant_facture + montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTSEJCHM'::text AS indicateur_budget_code, + 'CA Chimio'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_RUBMED_CHM_MCO_FAVA#1' AS indicateur_code, + '01'::text AS rapport_chapitre_code, + 'CA Séjour'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_RUBMED_DIA_MCO_FAVA' AS code, 'Budget. CA Dialyse Facturé + Valorisé' AS texte,'Montant DIA F+V' AS entete, 'Montant Dialyse facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] AND type_sejour = ''5'' AND forme_activite_code = ''131'' THEN montant_facture + montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTSEJDIA'::text AS indicateur_budget_code, + 'CA Dialyse'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_RUBMED_DIA_MCO_FAVA#1' AS indicateur_code, + '01'::text AS rapport_chapitre_code, + 'CA Séjour'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_EST_FAVA' AS code, 'Budget. CA Esthétique Facturé + Valorisé' AS texte,'Montant ESTH F+V' AS entete, 'Montant Esthétique facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_T2A_R] AND forme_activite_section_code[1] = ''1'' AND forme_activite_section_code[2] = ''14'' THEN montant_facture + montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTEST'::text AS indicateur_budget_code, + 'CA Esthétique'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_EST_FAVA#1' AS indicateur_code, + '01'::text AS rapport_chapitre_code, + 'CA Séjour'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_RUBMED_SSR_FAVA' AS code, 'Budget. CA SSR Facturé + Valorisé' AS texte,'Montant SSR F+V' AS entete, 'Montant SSR facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] AND forme_activite_section_code[1] = ''2'' THEN montant_facture + montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTSEJSSR'::text AS indicateur_budget_code, + 'CA SSR'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_RUBMED_SSR_FAVA#1' AS indicateur_code, + '01'::text AS rapport_chapitre_code, + 'CA Séjour'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_JOU_SSR' AS code, 'Budget. Nombre de jours SSR' AS texte,'Jours SSR' AS entete, 'Jours SSR' AS entete_etendue, '#' AS output_format, + 'OCCUPATION' AS table_name, + 'CASE WHEN forme_activite_section_code[1] = ''3'' THEN nb_jours_f + nb_ambulatoires ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '' AS dimension_date_2, + '' AS dimension_date_3, + '' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'JOUSSR'::text AS indicateur_budget_code, + 'Jours SSR'::text AS indicateur_budget_texte, + 'CTI_BUD_JOU_SSR' AS indicateur_code, + '01'::text AS rapport_chapitre_code, + 'CA Séjour'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_RUBMED_PSY_FAVA' AS code, 'Budget. CA PSY Facturé + Valorisé' AS texte,'Montant PSY F+V' AS entete, 'Montant PSY facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] AND forme_activite_section_code[1] = ''3'' THEN montant_facture + montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTSEJPSY'::text AS indicateur_budget_code, + 'CA PSY'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_RUBMED_PSY_FAVA#1' AS indicateur_code, + '01'::text AS rapport_chapitre_code, + 'CA Séjour'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_JOU_PSY' AS code, 'Budget. Nombre de jours PSY' AS texte,'Jours PSY' AS entete, 'Jours PSY' AS entete_etendue, '#' AS output_format, + 'OCCUPATION' AS table_name, + 'CASE WHEN forme_activite_section_code[1] = ''3'' THEN nb_jours_f + nb_ambulatoires ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '' AS dimension_date_2, + '' AS dimension_date_3, + '' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'JOUPSY'::text AS indicateur_budget_code, + 'Jours PSY'::text AS indicateur_budget_texte, + 'CTI_BUD_JOU_PSY' AS indicateur_code, + '01'::text AS rapport_chapitre_code, + 'CA Séjour'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_RUBMED_HAD_FAVA' AS code, 'Budget. CA HAD Facturé + Valorisé' AS texte,'Montant HAD F+V' AS entete, 'Montant HAD facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_RUBMED_R] AND forme_activite_section_code[1] = ''4'' THEN montant_facture + montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTHAD'::text AS indicateur_budget_code, + 'CA HAD'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_RUBMED_HAD_FAVA#1' AS indicateur_code, + '01'::text AS rapport_chapitre_code, + 'CA Séjour'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_IVG_FAVA' AS code, 'Budget. CA IVG Facturé + Valorisé' AS texte,'Montant IVG F+V' AS entete, 'Montant IVG facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_IVG_R] THEN montant_facture + montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTIVG'::text AS indicateur_budget_code, + 'CA IVG'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_IVG_FAVA#1' AS indicateur_code, + '01'::text AS rapport_chapitre_code, + 'CA Séjour'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_CPC_FAVA' AS code, 'Budget. CA CPC Facturé + Valorisé' AS texte,'Montant CPC F+V' AS entete, 'Montant CPC facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SHO_R] THEN montant_facture + montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTCPC'::text AS indicateur_budget_code, + 'CA CPC'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_CPC_FAVA#1' AS indicateur_code, + '03'::text AS rapport_chapitre_code, + 'CA Chambres particulières'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_FSE_FAVA' AS code, 'Budget. CA FSE Facturé + Valorisé' AS texte,'Montant FSE F+V' AS entete, 'Montant FSE facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN rubrique_facturation_id IN [LISTE:CTI_SE_R] THEN montant_facture + montant_encours ELSE NULL END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTFSE'::text AS indicateur_budget_code, + 'CA SE'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_FSE_FAVA#1' AS indicateur_code, + '04'::text AS rapport_chapitre_code, + 'Externes et divers'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_ATU_FAVA' AS code, 'Budget. CA ATU Facturé + Valorisé' AS texte,'Montant ATU F+V' AS entete, 'Montant ATU facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN prestation_code IN (''ATU'',''FPU'') THEN montant_facture+montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTATU'::text AS indicateur_budget_code, + 'CA ATU'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_ATU_FAVA#1' AS indicateur_code, + '04'::text AS rapport_chapitre_code, + 'Externes et divers'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_FFM_FAVA' AS code, 'Budget. CA FFM Facturé + Valorisé' AS texte,'Montant FFM F+V' AS entete, 'Montant FFM facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN prestation_code IN (''FFM'') THEN montant_facture+montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTFFM'::text AS indicateur_budget_code, + 'CA FFM'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_FFM_FAVA#1' AS indicateur_code, + '04'::text AS rapport_chapitre_code, + 'Externes et divers'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_FSD_FAVA' AS code, 'Budget. CA FSD Facturé + Valorisé' AS texte,'Montant FSD F+V' AS entete, 'Montant FSD facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN prestation_code IN (''FSD'') THEN montant_comptabilise+montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTFSD'::text AS indicateur_budget_code, + 'CA FSD'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_FSD_FAVA#1' AS indicateur_code, + '04'::text AS rapport_chapitre_code, + 'Externes et divers'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_ETI_FAVA' AS code, 'Budget. CA ETI Facturé + Valorisé' AS texte,'Montant ETI F+V' AS entete, 'Montant ETI facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN prestation_code IN (''ETI'') THEN montant_facture+montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTETI'::text AS indicateur_budget_code, + 'CA ETI'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_ETI_FAVA#1' AS indicateur_code, + '04'::text AS rapport_chapitre_code, + 'Externes et divers'::text AS rapport_chapitre_texte + UNION + SELECT + 'CTI_BUD_MT_EMI_FAVA' AS code, 'Budget. CA EMI Facturé + Valorisé' AS texte,'Montant EMI F+V' AS entete, 'Montant EMI facturé + valorisé' AS entete_etendue, '#E' AS output_format, + 'FACTURATION_CLINIQUE' AS table_name, + 'CASE WHEN prestation_code IN (''EMI'') THEN montant_facture+montant_encours ELSE 0 END' AS column_name, + 'SUM' AS total_function, + '1' AS dimension_date_1, + '2' AS dimension_date_2, + '3' AS dimension_date_3, + '4' AS dimension_date_4, + '' AS dimension_date_5, + '1' AS is_cti, + nextval('w_indicateur_budget_sequence'::regclass) AS numero, + 'MTEMI'::text AS indicateur_budget_code, + 'CA EMI'::text AS indicateur_budget_texte, + 'CTI_BUD_MT_EMI_FAVA#1' AS indicateur_code, + '04'::text AS rapport_chapitre_code, + 'Externes et divers'::text AS rapport_chapitre_texte + ; + + INSERT INTO activite.t_indicateurs ( + code, texte, entete, entete_etendue, output_format, + table_name, column_name, total_function, + dimension_date_1, dimension_date_2, dimension_date_3, dimension_date_4, dimension_date_5, + is_cti, is_hide + ) + SELECT code, texte, entete, entete_etendue, output_format, + table_name, column_name, total_function, + dimension_date_1, dimension_date_2, dimension_date_3, dimension_date_4, dimension_date_5, + is_cti, '0' AS is_hide + FROM w_indicateurs_budget + JOIN w_budget_settings t_budget ON t_budget.cle_budgetaire_activite IN ('CTIMEDSEJ') + WHERE code NOT IN (SELECT code FROM activite.t_indicateurs WHERE code IS NOT NULL) + ; + + UPDATE activite.t_indicateurs SET + texte = w_indicateurs_budget.texte, + entete = w_indicateurs_budget.entete, + entete_etendue = w_indicateurs_budget.entete_etendue, + table_name = w_indicateurs_budget.table_name, + column_name = w_indicateurs_budget.column_name, + dimension_date_1 = w_indicateurs_budget.dimension_date_1, + dimension_date_2 = w_indicateurs_budget.dimension_date_2, + dimension_date_3 = w_indicateurs_budget.dimension_date_3, + dimension_date_4 = w_indicateurs_budget.dimension_date_4, + dimension_date_5 = w_indicateurs_budget.dimension_date_5 + FROM w_indicateurs_budget + WHERE t_indicateurs.code = w_indicateurs_budget.code AND + ( + t_indicateurs.texte IS DISTINCT FROM w_indicateurs_budget.texte OR + t_indicateurs.entete IS DISTINCT FROM w_indicateurs_budget.entete OR + t_indicateurs.entete_etendue IS DISTINCT FROM w_indicateurs_budget.entete_etendue OR + t_indicateurs.table_name IS DISTINCT FROM w_indicateurs_budget.table_name OR + t_indicateurs.column_name IS DISTINCT FROM w_indicateurs_budget.column_name OR + t_indicateurs.dimension_date_1 IS DISTINCT FROM w_indicateurs_budget.dimension_date_1 OR + t_indicateurs.dimension_date_2 IS DISTINCT FROM w_indicateurs_budget.dimension_date_2 OR + t_indicateurs.dimension_date_3 IS DISTINCT FROM w_indicateurs_budget.dimension_date_3 OR + t_indicateurs.dimension_date_4 IS DISTINCT FROM w_indicateurs_budget.dimension_date_4 OR + t_indicateurs.dimension_date_5 IS DISTINCT FROM w_indicateurs_budget.dimension_date_5 + ) + ; + + + PERFORM base.cti_reorganize_indicateurs('activite') + ; + + -- Indicateurs calculés + UPDATE activite.t_indicateurs + SET indicateur_associe_1_id = t_indicateurs_associe.oid + FROM activite.t_indicateurs t_indicateurs_associe + WHERE t_indicateurs.code = 'CTI_BUD_GHSM_HOAM_MCO' AND + t_indicateurs_associe.code = 'CTI_BUD_MT_RUBMED_HOAM_MCO_FAVA#1' + ; + + UPDATE activite.t_indicateurs + SET indicateur_associe_2_id = t_indicateurs_associe.oid + FROM activite.t_indicateurs t_indicateurs_associe + WHERE t_indicateurs.code = 'CTI_BUD_GHSM_HOAM_MCO' AND + t_indicateurs_associe.code = 'CTI_BUD_EMC_HOAM_MCO' + ; + + UPDATE base.t_budget_indicateur SET + code = to_char(w_indicateurs_budget.numero,'FM00') || w_indicateurs_budget.indicateur_budget_code, + texte = w_indicateurs_budget.indicateur_budget_texte, + indicateur_id = t_indicateurs.oid + FROM w_budget_settings t_budget, w_indicateurs_budget + JOIN activite.t_indicateurs ON w_indicateurs_budget.indicateur_code = t_indicateurs.code + WHERE t_budget_indicateur.budget_id = current_budget_id AND + t_budget.cle_budgetaire_activite IN ('CTIMEDSEJ') AND + substr(t_budget_indicateur.code,3) = w_indicateurs_budget.indicateur_budget_code AND + ( + t_budget_indicateur.code <> (to_char(w_indicateurs_budget.numero,'FM00') || w_indicateurs_budget.indicateur_budget_code) OR + t_budget_indicateur.texte <> w_indicateurs_budget.indicateur_budget_texte OR + t_budget_indicateur.indicateur_id <> t_indicateurs.oid + ) + ; + + INSERT INTO base.t_budget_indicateur (code, texte, budget_id, indicateur_id, indicateur_module, actif) + SELECT to_char(w_indicateurs_budget.numero,'FM00') || w_indicateurs_budget.indicateur_budget_code, + w_indicateurs_budget.indicateur_budget_texte, + t_budget.current_budget_id AS budget_id, + t_indicateurs.oid AS indicateur_id, + 'activite' AS indicateur_module, + '1' AS actif + FROM w_indicateurs_budget + JOIN activite.t_indicateurs ON w_indicateurs_budget.indicateur_code = t_indicateurs.code + JOIN w_budget_settings t_budget ON t_budget.cle_budgetaire_activite = 'CTIMEDSEJ' + LEFT JOIN base.t_budget_indicateur ON + t_budget_indicateur.budget_id = t_budget.current_budget_id AND + t_budget_indicateur.code = to_char(w_indicateurs_budget.numero,'FM00') || w_indicateurs_budget.indicateur_budget_code + WHERE t_budget_indicateur.oid IS NULL + ; + END IF; + + + -- Rapports Global + IF EXISTS (SELECT * FROM w_budget_settings WHERE cle_budgetaire_activite IN ('CTIMEDSEJ')) THEN + + INSERT INTO activite.t_rapports(code, texte, is_cti, is_essentiel, group_id) + SELECT 'CTI_BUDG_1', 'Suivi Budget (total)', '1', '1', 4 + WHERE 'CTI_BUDG_1' NOT IN (SELECT code FROM activite.t_rapports WHERE code IS NOT NULL) + ; + + DELETE FROM activite.t_rapports_rubriques + WHERE rapport_id IN (SELECT oid FROM activite.t_rapports WHERE code = 'CTI_BUDG_1') + ; + + DROP SEQUENCE IF EXISTS w_rapport_rubrique_sequence; + CREATE TEMP SEQUENCE w_rapport_rubrique_sequence; + + INSERT INTO activite.t_rapports_rubriques( + rapport_id, numero_rubrique, indicateur_id, entete_etendue, + row_height, padding, font_size, font_weight, border_thickness, color, background_color, + viewlink, viewlink_label, viewlink_param + ) + SELECT + t_rapports.oid AS rapport_id, + nextval('w_indicateur_budget_sequence'::regclass) AS numero_rubrique, + indicateur_id, entete_etendue, + row_height, padding, font_size, font_weight, border_thickness, color, background_color, + viewlink, viewlink_label, viewlink_param + FROM activite.t_rapports + JOIN + ( + SELECT + rapport_chapitre_code, + 0::bigint AS indicateurs_budget_numero, + MAX(rapport_chapitre_texte) AS entete_etendue, + MAX(t_indicateurs.oid) AS indicateur_id, + 26::integer AS row_height, + 0::integer AS padding, + 14::integer AS font_size, + 'bold'::text AS font_weight, + 2::integer AS border_thickness, + '0xc0392b'::text AS color, + '0xcccccc'::text AS background_color, + ''::text AS viewlink, + ''::text AS viewlink_label, + ''::text AS viewlink_param + FROM w_indicateurs_budget + JOIN activite.t_indicateurs ON t_indicateurs.code = 'CTI_SEP' + JOIN w_budget_settings ON 1=1 + JOIN base.t_budget_indicateur ON + t_budget_indicateur.code = (to_char(w_indicateurs_budget.numero,'FM00') || w_indicateurs_budget.indicateur_budget_code) AND + t_budget_indicateur.budget_id = current_budget_id + WHERE t_budget_indicateur.actif IS DISTINCT FROM '0' + GROUP BY 1 + UNION + SELECT + rapport_chapitre_code, + w_indicateurs_budget.numero, + indicateur_budget_texte AS entete_etendue, + t_indicateurs.oid AS indicateur_id, + 22::integer AS row_height, + 10::integer AS padding, + 12::integer AS font_size, + ''::text AS font_weight, + 0::integer AS border_thickness, + ''::text AS color, + ''::text AS background_color, + ''::text AS viewlink, + ''::text AS viewlink_label, + ''::text AS viewlink_param + FROM w_indicateurs_budget + JOIN activite.t_indicateurs ON w_indicateurs_budget.indicateur_code = t_indicateurs.code + JOIN w_budget_settings ON 1=1 + JOIN base.t_budget_indicateur ON + t_budget_indicateur.code = (to_char(w_indicateurs_budget.numero,'FM00') || w_indicateurs_budget.indicateur_budget_code) AND + t_budget_indicateur.budget_id = current_budget_id + WHERE t_budget_indicateur.actif IS DISTINCT FROM '0' + ORDER BY 1,2 + ) subview ON 1=1 + WHERE code = 'CTI_BUDG_1' + ; + + -- Détail par spécialité et médecin + + -- initialisation entete + DROP TABLE IF EXISTS w_rapports_detail; + CREATE TEMP TABLE w_rapports_detail AS + SELECT 'CTI_BUDG_2MCOD1'::text AS code, + 'Suivi Budget (détail MCO par spécialité)'::text AS texte, + 'Suivi Budget (détail MCO / spécialité)'::text AS label, + '1'::text AS is_cti, + '1'::text AS is_essentiel, + 4::bigint AS group_id, + 'ENTETE_ETENDUE|VAP101|VAP100|TDP100|BUP100|BTP100|VAP201|VAP200|TDP200|BUP200|BTP200|VAP301|VAP300|TDP300|BUP300|BTP300|VAP401|VAP400|TDP400|BUP400|BTP400'::text AS colonnes_essentiel, + 'VAP201:backgroundColor=0xdddddd|VAP200:backgroundColor=0xdddddd|TDP200:backgroundColor=0xdddddd|BUP200:backgroundColor=0xdddddd|BTP200:backgroundColor=0xdddddd|VAP401:backgroundColor=0xdddddd|VAP400:backgroundColor=0xdddddd|TDP400:backgroundColor=0xdddddd|BUP400:backgroundColor=0xdddddd|BTP400:backgroundColor=0xdddddd|'::text AS colonnes_essentiel_style, + Array['CA Séjour','EMC','GHS Moyen','Jours'] AS serie_entete, + 'CA Séjour'::text AS entete, + 'EMC'::text AS entete_2 + UNION + SELECT 'CTI_BUDG_2MCOD2'::text AS code, + 'Suivi Budget (détail MCO par médecin)'::text AS texte, + 'Suivi Budget (détail MCO / médecin)'::text AS label, + '1'::text AS is_cti, + '1'::text AS is_essentiel, + 4::bigint AS group_id, + 'ENTETE_ETENDUE|VAP101|VAP100|TDP100|BUP100|BTP100|VAP201|VAP200|TDP200|BUP200|BTP200|VAP301|VAP300|TDP300|BUP300|BTP300|VAP401|VAP400|TDP400|BUP400|BTP400'::text AS colonnes_essentiel, + 'VAP201:backgroundColor=0xdddddd|VAP200:backgroundColor=0xdddddd|TDP200:backgroundColor=0xdddddd|BUP200:backgroundColor=0xdddddd|BTP200:backgroundColor=0xdddddd|VAP401:backgroundColor=0xdddddd|VAP400:backgroundColor=0xdddddd|TDP400:backgroundColor=0xdddddd|BUP400:backgroundColor=0xdddddd|BTP400:backgroundColor=0xdddddd|'::text AS colonnes_essentiel_style, + Array['CA Séjour','EMC','GHS Moyen','Jours'] AS serie_entete, + 'CA Séjour'::text AS entete, + 'EMC'::text AS entete_2 + ; + + INSERT INTO activite.t_rapports( + code, + texte, + label, + is_cti, + is_essentiel, + group_id, + colonnes_essentiel, + colonnes_essentiel_style, + serie_entete, + entete, + entete_2) + SELECT code, + texte, + label, + is_cti, + is_essentiel, + group_id, + colonnes_essentiel, + colonnes_essentiel_style, + serie_entete, + entete, + entete_2 + FROM w_rapports_detail + WHERE code NOT IN (SELECT code FROM activite.t_rapports WHERE code IS NOT NULL) + ; + + UPDATE activite.t_rapports SET + texte = w_rapports_detail.texte, + label = w_rapports_detail.label, + is_cti = w_rapports_detail.is_cti, + is_essentiel = w_rapports_detail.is_essentiel, + group_id = w_rapports_detail.group_id, + colonnes_essentiel = w_rapports_detail.colonnes_essentiel, + colonnes_essentiel_style = w_rapports_detail.colonnes_essentiel_style, + serie_entete = w_rapports_detail.serie_entete, + entete = w_rapports_detail.entete, + entete_2 = w_rapports_detail.entete_2 + FROM w_rapports_detail + WHERE t_rapports.code = w_rapports_detail.code AND + ( + t_rapports.texte IS DISTINCT FROM w_rapports_detail.texte OR + t_rapports.label IS DISTINCT FROM w_rapports_detail.label OR + t_rapports.is_cti IS DISTINCT FROM w_rapports_detail.is_cti OR + t_rapports.is_essentiel IS DISTINCT FROM w_rapports_detail.is_essentiel OR + t_rapports.group_id IS DISTINCT FROM w_rapports_detail.group_id OR + t_rapports.colonnes_essentiel IS DISTINCT FROM w_rapports_detail.colonnes_essentiel OR + t_rapports.colonnes_essentiel_style IS DISTINCT FROM w_rapports_detail.colonnes_essentiel_style OR + t_rapports.serie_entete IS DISTINCT FROM w_rapports_detail.serie_entete OR + t_rapports.entete IS DISTINCT FROM w_rapports_detail.entete OR + t_rapports.entete_2 IS DISTINCT FROM w_rapports_detail.entete_2 + ) + ; + + DELETE FROM activite.t_rapports_rubriques + WHERE rapport_id IN ( + SELECT t_rapports.oid + FROM activite.t_rapports + JOIN w_rapports_detail ON t_rapports.code = w_rapports_detail.code + ) + ; + + + DROP SEQUENCE IF EXISTS w_rapport_rubrique_sequence; + CREATE TEMP SEQUENCE w_rapport_rubrique_sequence; + + + INSERT INTO activite.t_rapports_rubriques( + rapport_id, numero_rubrique, + indicateur_id, indicateur_associe_id, serie_indicateur_id, + picto_enabled, + picto_enabled_2, + positif_is_good, + positif_is_good_2, + serie_picto_enabled, + serie_positif_is_good, + indicateur_condition_id, + entete_etendue, + serie_entete_etendue, + row_height, padding, font_size, font_weight, border_thickness, color, background_color, + hide_on_zero_field, + viewlink, viewlink_label, viewlink_param + ) + SELECT + rapport_id, nextval('w_indicateur_budget_sequence'::regclass) AS numero_rubrique, + indicateur_id, indicateur_associe_id, serie_indicateur_id, + '1'::text AS picto_enabled, + '1'::text AS picto_enabled_2, + '1'::text AS positif_is_good, + '1'::text AS positif_is_good_2, + Array['1','1','1','1'] AS serie_picto_enabled, + Array['1','1','1','1'] AS serie_positif_is_good, + indicateur_condition_id, + entete_etendue, + array[entete_etendue] AS serie_entete_etendue, + row_height, padding, font_size, font_weight, border_thickness, color, background_color, + CASE WHEN level <> '1' THEN '*SELF' ELSE '' END AS hide_on_zero_field, + viewlink, viewlink_label, viewlink_param + FROM + ( + SELECT + t_rapports.oid AS rapport_id, + MAX(t_indicateurs_1.oid) AS indicateur_id, + MAX(t_indicateurs_2.oid) AS indicateur_associe_id, + Array[MAX(t_indicateurs_1.oid),MAX(t_indicateurs_2.oid),MAX(t_indicateurs_3.oid),MAX(t_indicateurs_4.oid)] AS serie_indicateur_id, + CASE WHEN level <> '1' THEN Array[t_indicateur_condition.oid] ELSE NULL END AS indicateur_condition_id, + MAX(rubrique_texte) AS entete_etendue, + MAX(CASE WHEN level = '1' THEN 20 ELSE 18 END) AS row_height, + MAX(CASE WHEN level = '1' THEN 0 ELSE 10 END) AS padding, + MAX(CASE WHEN level = '1' THEN 12 ELSE 10 END) AS font_size, + MAX(CASE WHEN level = '1' THEN 'bold' ELSE '' END) AS font_weight, + MAX(CASE WHEN level = '1' THEN 2 ELSE 0 END) AS border_thickness, + MAX(CASE WHEN level = '1' THEN '0xc0392b' ELSE '' END) AS color, + MAX(CASE WHEN level = '1' THEN '0xcccccc' ELSE '' END) AS background_color, + MAX(''::text) AS viewlink, + MAX(''::text) AS viewlink_label, + MAX(''::text) AS viewlink_param, + section_code, + level, + cle_code + FROM w_indicateurs_budget + JOIN activite.t_rapports ON t_rapports.code = 'CTI_BUDG_2MCOD1' + LEFT JOIN activite.t_indicateurs t_indicateurs_1 ON w_indicateurs_budget.indicateur_code = t_indicateurs_1.code AND t_indicateurs_1.code = 'CTI_BUD_MT_RUBMED_HOAM_MCO_FAVA#1' + LEFT JOIN activite.t_indicateurs t_indicateurs_2 ON w_indicateurs_budget.indicateur_code = t_indicateurs_2.code AND t_indicateurs_2.code = 'CTI_BUD_EMC_HOAM_MCO' + LEFT JOIN activite.t_indicateurs t_indicateurs_3 ON w_indicateurs_budget.indicateur_code = t_indicateurs_3.code AND t_indicateurs_3.code = 'CTI_BUD_GHSM_HOAM_MCO' + LEFT JOIN activite.t_indicateurs t_indicateurs_4 ON w_indicateurs_budget.indicateur_code = t_indicateurs_4.code AND t_indicateurs_4.code = 'CTI_BUD_JOU_HOAM_MCO' + + JOIN + ( + SELECT + chr(1)::text AS section_code, + '1'::text AS level, + NULL::text AS cle_code, + 'TOTAL BUDGET MCO'::text AS rubrique_texte, + NULL::text AS condition_code + UNION + SELECT + t_classes_sections.code AS section_code, + '2'::text AS level, + NULL::text AS cle_code, + t_classes_sections.code || ' ' || t_classes_sections.texte AS rubrique_texte, + 'CTI_BUDGETCLE#LS'||to_char(t_classes.sequence,'FM00')||t_classes_sections.oid AS condition_code + FROM activite.t_classes_sections + JOIN activite.t_classes ON classe_id = t_classes.oid AND t_classes.code = 'CTI_SPE_BUDG' + WHERE t_classes_sections.code <> '****' + + UNION + SELECT + chr(255) AS section_code, + '2'::text AS level, + NULL::text AS cle_code, + 'SANS SPECIALITE' AS rubrique_texte, + 'CTI_BUDGETCLE#LS'||to_char(t_classes.sequence,'FM00')||t_classes_sections.oid AS condition_code + FROM activite.t_classes_sections + JOIN activite.t_classes ON classe_id = t_classes.oid AND t_classes.code = 'CTI_SPE_BUDG' + WHERE t_classes_sections.code = '****' + + ORDER BY 1,2,3 + ) subview ON 1=1 + LEFT JOIN activite.t_indicateur_condition ON t_indicateur_condition.code = subview.condition_code + GROUP BY + t_rapports.oid, + t_indicateur_condition.oid, + section_code, + level, + cle_code + ORDER BY section_code, + level, + cle_code + ) subview + ; + + + + DROP SEQUENCE IF EXISTS w_rapport_rubrique_sequence; + CREATE TEMP SEQUENCE w_rapport_rubrique_sequence; + + + INSERT INTO activite.t_rapports_rubriques( + rapport_id, numero_rubrique, + indicateur_id, indicateur_associe_id, serie_indicateur_id, + picto_enabled, + picto_enabled_2, + positif_is_good, + positif_is_good_2, + serie_picto_enabled, + serie_positif_is_good, + indicateur_condition_id, entete_etendue, + row_height, padding, font_size, font_weight, border_thickness, color, background_color, + hide_on_zero_field, + viewlink, viewlink_label, viewlink_param + ) + SELECT + rapport_id, nextval('w_indicateur_budget_sequence'::regclass) AS numero_rubrique, + indicateur_id, indicateur_associe_id, serie_indicateur_id, + '1'::text AS picto_enabled, + '1'::text AS picto_enabled_2, + '1'::text AS positif_is_good, + '1'::text AS positif_is_good_2, + Array['1','1','1','1'] AS serie_picto_enabled, + Array['1','1','1','1'] AS serie_positif_is_good, + indicateur_condition_id, entete_etendue, + row_height, padding, font_size, font_weight, border_thickness, color, background_color, + '*SELF' AS hide_on_zero_field, + viewlink, viewlink_label, viewlink_param + FROM + ( + SELECT + t_rapports.oid AS rapport_id, + MAX(t_indicateurs_1.oid) AS indicateur_id, + MAX(t_indicateurs_2.oid) AS indicateur_associe_id, + Array[MAX(t_indicateurs_1.oid),MAX(t_indicateurs_2.oid),MAX(t_indicateurs_3.oid),MAX(t_indicateurs_4.oid)] AS serie_indicateur_id, + Array[t_indicateur_condition.oid] AS indicateur_condition_id, + MAX(rubrique_texte) AS entete_etendue, + MAX(CASE WHEN level = '1' THEN 20 ELSE 18 END) AS row_height, + MAX(CASE WHEN level = '1' THEN 0 ELSE 10 END) AS padding, + MAX(CASE WHEN level = '1' THEN 12 ELSE 10 END) AS font_size, + MAX(CASE WHEN level = '1' THEN 'bold' ELSE '' END) AS font_weight, + MAX(CASE WHEN level = '1' THEN 2 ELSE 0 END) AS border_thickness, + MAX(CASE WHEN level = '1' THEN '0xc0392b' ELSE '' END) AS color, + MAX(CASE WHEN level = '1' THEN '0xcccccc' ELSE '' END) AS background_color, + MAX(''::text) AS viewlink, + MAX(''::text) AS viewlink_label, + MAX(''::text) AS viewlink_param, + section_code, + level, + cle_code + FROM w_indicateurs_budget + JOIN activite.t_rapports ON t_rapports.code = 'CTI_BUDG_2MCOD2' + LEFT JOIN activite.t_indicateurs t_indicateurs_1 ON w_indicateurs_budget.indicateur_code = t_indicateurs_1.code AND t_indicateurs_1.code = 'CTI_BUD_MT_RUBMED_HOAM_MCO_FAVA#1' + LEFT JOIN activite.t_indicateurs t_indicateurs_2 ON w_indicateurs_budget.indicateur_code = t_indicateurs_2.code AND t_indicateurs_2.code = 'CTI_BUD_EMC_HOAM_MCO' + LEFT JOIN activite.t_indicateurs t_indicateurs_3 ON w_indicateurs_budget.indicateur_code = t_indicateurs_3.code AND t_indicateurs_3.code = 'CTI_BUD_GHSM_HOAM_MCO' + LEFT JOIN activite.t_indicateurs t_indicateurs_4 ON w_indicateurs_budget.indicateur_code = t_indicateurs_4.code AND t_indicateurs_4.code = 'CTI_BUD_JOU_HOAM_MCO' + + JOIN + ( + SELECT + t_classes_sections.code AS section_code, + '1'::text AS level, + NULL::text AS cle_code, + t_classes_sections.code || ' ' || t_classes_sections.texte AS rubrique_texte, + 'CTI_BUDGETCLE#LS'||to_char(t_classes.sequence,'FM00')||t_classes_sections.oid AS condition_code + FROM activite.t_classes_sections + JOIN activite.t_classes ON classe_id = t_classes.oid AND t_classes.code = 'CTI_SPE_BUDG' + WHERE t_classes_sections.code <> '****' + UNION + SELECT + t_classes_sections.code AS section_code, + '2'::text AS level, + t_budget_cle.code AS cle_code, + t_budget_cle.code || ' ' || t_budget_cle.texte AS rubrique_texte, + 'CTI_BUDGETCLE#DT'||t_budget_cle.oid AS condition_code + FROM activite.t_classes_sections + JOIN activite.t_classes ON classe_id = t_classes.oid AND t_classes.code = 'CTI_SPE_BUDG' + JOIN activite.t_classes_sections_elements ON t_classes_sections_elements.section_id = t_classes_sections.oid + JOIN activite.t_budget_cle ON to_id = t_budget_cle.oid + WHERE t_classes_sections.code <> '****' AND t_budget_cle.code NOT LIKE '*SP%' + UNION + SELECT + t_classes_sections.code AS section_code, + '3'::text AS level, + t_budget_cle.code AS cle_code, + t_budget_cle.texte AS rubrique_texte, + 'CTI_BUDGETCLE#DT'||t_budget_cle.oid AS condition_code + FROM activite.t_classes_sections + JOIN activite.t_classes ON classe_id = t_classes.oid AND t_classes.code = 'CTI_SPE_BUDG' + JOIN activite.t_classes_sections_elements ON t_classes_sections_elements.section_id = t_classes_sections.oid + JOIN activite.t_budget_cle ON to_id = t_budget_cle.oid + WHERE t_classes_sections.code <> '****' AND t_budget_cle.code LIKE '*SP%' + UNION + SELECT + chr(255) AS section_code, + '1'::text AS level, + NULL::text AS cle_code, + 'SANS SPECIALITE' AS rubrique_texte, + 'CTI_BUDGETCLE#LS'||to_char(t_classes.sequence,'FM00')||t_classes_sections.oid AS condition_code + FROM activite.t_classes_sections + JOIN activite.t_classes ON classe_id = t_classes.oid AND t_classes.code = 'CTI_SPE_BUDG' + WHERE t_classes_sections.code = '****' + UNION + SELECT + chr(255) AS section_code, + '2'::text AS level, + t_budget_cle.code AS cle_code, + t_budget_cle.texte AS rubrique_texte, + 'CTI_BUDGETCLE#DT'||t_budget_cle.oid AS condition_code + FROM activite.t_classes_sections + JOIN activite.t_classes ON classe_id = t_classes.oid AND t_classes.code = 'CTI_SPE_BUDG' + JOIN activite.t_classes_sections_elements ON t_classes_sections_elements.section_id = t_classes_sections.oid + JOIN activite.t_budget_cle ON to_id = t_budget_cle.oid + WHERE t_classes_sections.code = '****' + ORDER BY 1,2,3 + ) subview ON 1=1 + JOIN activite.t_indicateur_condition ON t_indicateur_condition.code = subview.condition_code + GROUP BY + t_rapports.oid, + t_indicateur_condition.oid, + section_code, + level, + cle_code + ORDER BY section_code, + level, + cle_code + ) subview + ; + + -- Avec template + DROP TABLE IF EXISTS w_sections; + CREATE TEMP TABLE w_sections AS + SELECT + t_budget_cle.oid AS cle_id, + t_budget_cle.code AS cle_code, + t_budget_cle.texte AS cle_texte, + 'CTI_BUDGETCLE#DT'||t_budget_cle.oid::text AS cle_condition_code, + COALESCE(CASE WHEN subview_spg.section_code NOT LIKE '**%' THEN subview_spg.section_code ELSE '**' END,'**') AS spg_section_code, + COALESCE(CASE WHEN subview_spg.section_code NOT LIKE '**%' THEN subview_spg.section_texte ELSE 'SANS CHAPITRE' END,'SANS CHAPITRE') AS spg_section_texte, + MAX('CTI_BUDGETCLE#LS'||to_char(COALESCE(subview_spg.sequence,0),'FM00')||COALESCE(subview_spg.section_id,0)) AS spg_condition_code, + COALESCE(CASE WHEN subview_spe.section_code NOT LIKE '**%' THEN subview_spe.section_code ELSE '****' END,'****') AS spe_section_code, + COALESCE(CASE WHEN subview_spe.section_code NOT LIKE '**%' THEN subview_spe.section_texte ELSE 'SANS SPECIALITE' END,'SANS SPECIALITE') AS spe_section_texte, + MAX('CTI_BUDGETCLE#LS'||to_char(COALESCE(subview_spe.sequence,0),'FM00')||COALESCE(subview_spe.section_id,0)) AS spe_condition_code, + 4::numeric AS level, + t_budget_cle.code AS rubrique_code, + t_budget_cle.texte AS rubrique_texte, + NULL::text[] AS sortkey + FROM activite.t_budget_cle + LEFT JOIN + ( + SELECT t_classes_sections_elements.to_id, + MAX(t_classes.sequence) AS sequence, + MAX(t_classes_sections.oid) AS section_id, + MAX(t_classes_sections.code) AS section_code, + MAX(t_classes_sections.texte) AS section_texte + FROM activite.t_classes_sections + JOIN activite.t_classes ON classe_id = t_classes.oid AND t_classes.code = 'CTI_SPG_BUDG' + JOIN activite.t_classes_sections_elements ON t_classes_sections_elements.section_id = t_classes_sections.oid + GROUP BY 1 + ) subview_spg ON t_budget_cle.oid = subview_spg.to_id + LEFT JOIN + ( + SELECT t_classes_sections_elements.to_id, + MAX(t_classes.sequence) AS sequence, + MAX(t_classes_sections.oid) AS section_id, + MAX(t_classes_sections.code) AS section_code, + MAX(t_classes_sections.texte) AS section_texte + FROM activite.t_classes_sections + JOIN activite.t_classes ON classe_id = t_classes.oid AND t_classes.code = 'CTI_SPE_BUDG' + JOIN activite.t_classes_sections_elements ON t_classes_sections_elements.section_id = t_classes_sections.oid + GROUP BY 1 + ) subview_spe ON t_budget_cle.oid = subview_spe.to_id + GROUP BY 1,2,3,4,5,6,8,9,11,12,13,14 + ; + INSERT INTO w_sections + SELECT + 0 AS cle_id, + '' AS cle_code, + '' AS cle_texte, + ''::text AS cle_condition_code, + spg_section_code, + spg_section_texte, + MAX(spg_condition_code), + spe_section_code, + spe_section_texte, + MAX(spe_condition_code), + 3::numeric AS level, + spe_section_code, + spe_section_texte, + NULL::text[] AS sortkey + FROM w_sections + WHERE level = 4 + GROUP BY 1,2,3,4,5,6,8,9,11,12,13,14 + ; + INSERT INTO w_sections + SELECT + 0 AS cle_id, + '' AS cle_code, + '' AS cle_texte, + ''::text AS cle_condition_code, + spg_section_code, + spg_section_texte, + spg_condition_code, + '' AS spe_section_code, + '' AS spe_section_texte, + '' AS spe_condition_code, + 2::numeric AS level, + spg_section_code, + spg_section_texte, + NULL::text[] AS sortkey + FROM w_sections + WHERE level = 4 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13 + ; + INSERT INTO w_sections + SELECT + 0 AS cle_id, + '' AS cle_code, + '' AS cle_texte, + ''::text AS cle_condition_code, + 0 AS spg_section_code, + '' AS spg_section_texte, + '' AS spg_condition_code, + '' AS spe_section_code, + '' AS spe_section_texte, + '' AS spe_condition_code, + 1::numeric AS level, + '****', + 'TOTAL MCO', + NULL::text[] AS sortkey + FROM w_sections + WHERE level = 4 + GROUP BY 1,2,3,4,5,6,8,9,11,12,13,14 + ; + + UPDATE w_sections + SET sortkey[1] = CASE WHEN level = 1 THEN '' WHEN spg_section_code <> '**' THEN spg_section_code ELSE chr(255) END + ; + UPDATE w_sections + SET sortkey[2] = CASE WHEN level <= 2 THEN '' WHEN spe_section_code <> '****' THEN spe_section_code ELSE chr(255) END + ; + UPDATE w_sections + SET sortkey[3] = CASE WHEN level <= 3 THEN '' ELSE cle_texte END + ; + + -- Présentation rapports selon template + UPDATE activite.t_rapports SET + label = t_rapports_template.label, + group_id = t_rapports_template.group_id, + colonnes_essentiel = t_rapports_template.colonnes_essentiel, + entete = t_rapports_template.entete, + entete_2 = t_rapports_template.entete_2, + serie_entete = t_rapports_template.serie_entete, + colonnes_essentiel_style = t_rapports_template.colonnes_essentiel_style + FROM activite.t_rapports t_rapports_template + WHERE (t_rapports.code || '_TEMPLATE') = t_rapports_template.code AND + ( + t_rapports.label IS DISTINCT FROM t_rapports_template.label OR + t_rapports.group_id IS DISTINCT FROM t_rapports_template.group_id OR + t_rapports.colonnes_essentiel IS DISTINCT FROM t_rapports_template.colonnes_essentiel OR + t_rapports.entete IS DISTINCT FROM t_rapports_template.entete OR + t_rapports.entete_2 IS DISTINCT FROM t_rapports_template.entete_2 OR + t_rapports.serie_entete IS DISTINCT FROM t_rapports_template.serie_entete OR + t_rapports.colonnes_essentiel_style IS DISTINCT FROM t_rapports_template.colonnes_essentiel_style + ) + ; + + DELETE FROM activite.t_rapports_rubriques + USING + ( + SELECT t_rapports.oid + FROM activite.t_rapports + JOIN activite.t_rapports t_rapports_template ON t_rapports_template.code = t_rapports.code || '_TEMPLATE' + WHERE t_rapports.code LIKE '%BUD%' + ) subview + WHERE rapport_id = subview.oid + ; + + + -- Rubriques par spécialité selon rubriques + INSERT INTO activite.t_rapports_rubriques( + rapport_id, + numero_rubrique, + indicateur_id, + indicateur_associe_id, + serie_indicateur_id, + indicateur_condition_id, + entete_etendue, + serie_entete_etendue, + row_height, + padding, + font_size, + font_weight, + border_thickness, + color, + background_color, + serie_description, + serie_output_format, + serie_picto_enabled, + serie_positif_is_good, + hide_on_zero_field, + viewlink, + viewlink_label, + viewlink_param + ) + SELECT + rapport_id, + row_number() OVER (PARTITION BY rapport_id ORDER BY sortkey, numero_rubrique) AS numero_rubrique, + indicateur_id, + indicateur_associe_id, + serie_indicateur_id, + indicateur_condition_id, + entete_etendue, + Array[entete_etendue] AS serie_entete_etendue, + row_height, + padding, + font_size, + font_weight, + border_thickness, + color, + background_color, + serie_description, + serie_output_format, + serie_picto_enabled, + serie_positif_is_good, + hide_on_zero_field, + viewlink, + viewlink_label, + viewlink_param + FROM + ( + SELECT + t_rapports.oid AS rapport_id, + MAX(t_rapports_rubriques_template.numero_rubrique) AS numero_rubrique, + MAX(t_rapports_rubriques_template.indicateur_id) AS indicateur_id, + MAX(t_rapports_rubriques_template.indicateur_associe_id) AS indicateur_associe_id, + MAX(t_rapports_rubriques_template.serie_indicateur_id) AS serie_indicateur_id, + CASE WHEN level <> '1' THEN Array[t_indicateur_condition.oid] ELSE NULL END AS indicateur_condition_id, + MAX(CASE + WHEN t_rapports_rubriques_template.entete_etendue LIKE '%[LIB=SPG]%' THEN spg_section_texte + WHEN t_rapports_rubriques_template.entete_etendue LIKE '%[LIB=SPE]%' THEN spe_section_texte + WHEN t_rapports_rubriques_template.entete_etendue LIKE '%[LIB=CLE]%' THEN cle_texte + ELSE t_rapports_rubriques_template.entete_etendue END) AS entete_etendue, + MAX(t_rapports_rubriques_template.row_height) AS row_height, + MAX(t_rapports_rubriques_template.padding) AS padding, + MAX(t_rapports_rubriques_template.font_size) AS font_size, + MAX(t_rapports_rubriques_template.font_weight) AS font_weight, + MAX(t_rapports_rubriques_template.border_thickness) AS border_thickness, + MAX(t_rapports_rubriques_template.color) AS color, + MAX(t_rapports_rubriques_template.background_color) AS background_color, + MAX(t_rapports_rubriques_template.serie_description) AS serie_description, + MAX(t_rapports_rubriques_template.serie_output_format) AS serie_output_format, + MAX(t_rapports_rubriques_template.serie_picto_enabled) AS serie_picto_enabled, + MAX(t_rapports_rubriques_template.serie_positif_is_good) AS serie_positif_is_good, + MAX(t_rapports_rubriques_template.hide_on_zero_field) AS hide_on_zero_field, + MAX(''::text) AS viewlink, + MAX(''::text) AS viewlink_label, + MAX(''::text) AS viewlink_param, + MAX(t_indicateurs.code) AS indicateur_code, + sortkey, + level + FROM activite.t_rapports t_rapports_template + JOIN activite.t_rapports_rubriques t_rapports_rubriques_template ON t_rapports_rubriques_template.rapport_id = t_rapports_template.oid + JOIN activite.t_indicateurs ON t_rapports_rubriques_template.indicateur_id = t_indicateurs.oid + JOIN activite.t_rapports ON t_rapports_template.code = t_rapports.code || '_TEMPLATE' AND t_rapports.code LIKE '%BUD%' + JOIN w_sections ON 1=1 + LEFT JOIN activite.t_indicateur_condition ON + t_indicateur_condition.code = w_sections.spg_condition_code AND level = 2 OR + t_indicateur_condition.code = w_sections.spe_condition_code AND level = 3 OR + t_indicateur_condition.code = w_sections.cle_condition_code AND level = 4 + WHERE + ( + level = 1 AND t_rapports_rubriques_template.option LIKE '%[LVL=TOT]%' OR + level = 2 AND t_rapports_rubriques_template.option LIKE '%[LVL=SPG]%' OR + level = 3 AND t_rapports_rubriques_template.option LIKE '%[LVL=SPE]%' OR + level = 4 AND t_rapports_rubriques_template.option LIKE '%[LVL=CLE]%' + ) + GROUP BY + t_rapports.oid, + t_rapports_rubriques_template.rapport_id, + t_rapports_rubriques_template.numero_rubrique, + t_indicateur_condition.oid, + sortkey, + level + ORDER BY + t_rapports_rubriques_template.rapport_id, + sortkey, + level, + t_rapports_rubriques_template.numero_rubrique + ) subview + ; + + + + END IF; + + -- Rapports + IF EXISTS (SELECT * FROM w_budget_settings WHERE cle_budgetaire_activite IN ('CTIFILMEDSEJ')) THEN + + DROP TABLE IF EXISTS w_sections_2; + CREATE TEMP TABLE w_sections_2 AS + SELECT + t_budget_cle.oid AS cle_id, + t_budget_cle.code AS cle_code, + t_budget_cle.texte AS cle_texte, + 'CTI_BUDGETCLE#DT'||t_budget_cle.oid::text AS cle_condition_code, + COALESCE(CASE WHEN subview_fil.section_code NOT LIKE '**%' THEN subview_fil.section_code ELSE '**' END,'**') AS fil_section_code, + COALESCE(CASE WHEN subview_fil.section_code NOT LIKE '**%' THEN subview_fil.section_texte ELSE 'SANS FILIERE' END,'SANS FILIERE') AS fil_section_texte, + MAX('CTI_BUDGETCLE#LS'||to_char(COALESCE(subview_fil.sequence,0),'FM00')||COALESCE(subview_fil.section_id,0)) AS fil_condition_code, + COALESCE(CASE WHEN subview_med.section_code NOT LIKE '**%' THEN subview_med.section_code ELSE '****' END,'****') AS med_section_code, + COALESCE(CASE WHEN subview_med.section_code NOT LIKE '**%' THEN subview_med.section_texte ELSE 'SANS MEDECIN' END,'MEDECIN') AS med_section_texte, + MAX('CTI_BUDGETCLE#LS'||to_char(COALESCE(subview_med.sequence,0),'FM00')||COALESCE(subview_med.section_id,0)) AS med_condition_code, + 4::numeric AS level, + t_budget_cle.code AS rubrique_code, + t_budget_cle.texte AS rubrique_texte, + NULL::text[] AS sortkey + FROM activite.t_budget_cle + LEFT JOIN + ( + SELECT t_classes_sections_elements.to_id, + MAX(t_classes.sequence) AS sequence, + MAX(t_classes_sections.oid) AS section_id, + MAX(t_classes_sections.code) AS section_code, + MAX(t_classes_sections.texte) AS section_texte + FROM activite.t_classes_sections + JOIN activite.t_classes ON classe_id = t_classes.oid AND t_classes.code = 'CTI_FIL_BUDG' + JOIN activite.t_classes_sections_elements ON t_classes_sections_elements.section_id = t_classes_sections.oid + GROUP BY 1 + ) subview_fil ON t_budget_cle.oid = subview_fil.to_id + LEFT JOIN + ( + SELECT t_classes_sections_elements.to_id, + MAX(t_classes.sequence) AS sequence, + MAX(t_classes_sections.oid) AS section_id, + MAX(t_classes_sections.code) AS section_code, + MAX(t_classes_sections.texte) AS section_texte + FROM activite.t_classes_sections + JOIN activite.t_classes ON classe_id = t_classes.oid AND t_classes.code = 'CTI_MED_BUDG' + JOIN activite.t_classes_sections_elements ON t_classes_sections_elements.section_id = t_classes_sections.oid + GROUP BY 1 + ) subview_med ON t_budget_cle.oid = subview_med.to_id + GROUP BY 1,2,3,4,5,6,8,9,11,12,13,14 + ; + + + + DROP TABLE IF EXISTS w_sections; + CREATE TEMP TABLE w_sections AS + SELECT + 'FILMED'::text AS lvl_code, + fil_section_code AS lv1_section_code, + fil_section_code || ' ' || fil_section_texte AS lv1_section_texte, + MAX(fil_condition_code) AS lv1_condition_code, + med_section_code AS lv2_section_code, + med_section_texte AS lv2_section_texte, + MAX(med_condition_code) AS lv2_condition_code, + 3::numeric AS level, + med_section_code AS ent_code, + med_section_texte AS ent_texte, + NULL::text[] AS sortkey + FROM w_sections_2 + WHERE level = 4 AND + fil_section_code NOT LIKE '**%' AND + med_section_code NOT LIKE '**%' + GROUP BY 1,2,3,5,6,9,10,11 + ; + INSERT INTO w_sections + SELECT + 'MEDFIL'::text AS lvl_code, + med_section_code AS lv1_section_code, + med_section_texte AS lv1_section_texte, + MAX(med_condition_code) AS lv1_condition_code, + fil_section_code AS lv2_section_code, + fil_section_code || ' ' || fil_section_texte AS lv2_section_texte, + MAX(fil_condition_code) AS lv2_condition_code, + 3::numeric AS level, + fil_section_code AS code, + fil_section_code || ' ' || fil_section_texte AS texte, + NULL::text[] AS sortkey + FROM w_sections_2 + WHERE level = 4 AND + fil_section_code NOT LIKE '**%' AND + med_section_code NOT LIKE '**%' + GROUP BY 1,2,3,5,6,9,10,11 + ; + INSERT INTO w_sections + SELECT + 'FIL'::text AS lvl_code, + fil_section_code, + fil_section_code || ' ' || fil_section_texte, + MAX(fil_condition_code), + '' AS lv2_section_code, + '' AS lv2_section_texte, + '' AS lv2_condition_code, + 2::numeric AS level, + fil_section_code, + fil_section_code || ' ' || fil_section_texte, + NULL::text[] AS sortkey + FROM w_sections_2 + WHERE level = 4 AND + fil_section_code NOT LIKE '**%' + GROUP BY 1,2,3,5,6,9,10,11 + ; + INSERT INTO w_sections + SELECT + 'MED'::text AS lvl_code, + med_section_code, + med_section_texte, + MAX(med_condition_code), + '' AS lv2_section_code, + '' AS lv2_section_texte, + '' AS lv2_condition_code, + 2::numeric AS level, + med_section_code, + med_section_texte, + NULL::text[] AS sortkey + FROM w_sections_2 + WHERE level = 4 AND + med_section_code NOT LIKE '**%' + GROUP BY 1,2,3,5,6,9,10,11 + ; + INSERT INTO w_sections + SELECT + 'TOT'::text AS lvl_code, + '' AS lv1_section_code, + '' AS lv1_section_texte, + '' AS lv1_condition_code, + '' AS lv2_section_code, + '' AS lv2_section_texte, + '' AS lv2_condition_code, + 1::numeric AS level, + '****', + 'TOTAL', + NULL::text[] AS sortkey + FROM w_sections_2 + WHERE level = 4 + GROUP BY 1,2,3,5,6,9,10,11 + ; + + UPDATE w_sections + SET sortkey[1] = CASE WHEN level = 1 THEN '' WHEN lv1_section_code <> '**' THEN lv1_section_texte ELSE chr(255) END + ; + UPDATE w_sections + SET sortkey[2] = CASE WHEN level <= 2 THEN '' WHEN lv2_section_code <> '****' THEN lv2_section_texte ELSE chr(255) END + ; + + UPDATE activite.t_rapports SET + label = t_rapports_template.label, + group_id = t_rapports_template.group_id, + colonnes_essentiel = t_rapports_template.colonnes_essentiel, + entete = t_rapports_template.entete, + entete_2 = t_rapports_template.entete_2, + serie_entete = t_rapports_template.serie_entete, + colonnes_essentiel_style = t_rapports_template.colonnes_essentiel_style + FROM activite.t_rapports t_rapports_template + WHERE (t_rapports.code || '_TEMPLATE') = t_rapports_template.code AND + ( + t_rapports.label IS DISTINCT FROM t_rapports_template.label OR + t_rapports.group_id IS DISTINCT FROM t_rapports_template.group_id OR + t_rapports.colonnes_essentiel IS DISTINCT FROM t_rapports_template.colonnes_essentiel OR + t_rapports.entete IS DISTINCT FROM t_rapports_template.entete OR + t_rapports.entete_2 IS DISTINCT FROM t_rapports_template.entete_2 OR + t_rapports.serie_entete IS DISTINCT FROM t_rapports_template.serie_entete OR + t_rapports.colonnes_essentiel_style IS DISTINCT FROM t_rapports_template.colonnes_essentiel_style + ) + ; + + + DELETE FROM activite.t_rapports_rubriques + USING + ( + SELECT t_rapports.oid + FROM activite.t_rapports + JOIN activite.t_rapports t_rapports_template ON t_rapports_template.code = t_rapports.code || '_TEMPLATE' + WHERE t_rapports.code LIKE '%BUD%' + ) subview + WHERE rapport_id = subview.oid + ; + + + -- Rubriques par spécialité selon rubriques + INSERT INTO activite.t_rapports_rubriques( + rapport_id, + numero_rubrique, + indicateur_id, + indicateur_associe_id, + serie_indicateur_id, + indicateur_condition_id, + entete_etendue, + serie_entete_etendue, + row_height, + padding, + font_size, + font_weight, + border_thickness, + color, + background_color, + serie_description, + serie_output_format, + serie_picto_enabled, + serie_positif_is_good, + hide_on_zero_field, + viewlink, + viewlink_label, + viewlink_param, + option + ) + SELECT + rapport_id, + row_number() OVER (PARTITION BY rapport_id ORDER BY numero_rubrique_chapitre, sortkey, numero_rubrique) AS numero_rubrique, + indicateur_id, + indicateur_associe_id, + serie_indicateur_id, + indicateur_condition_id, + entete_etendue, + Array[entete_etendue] AS serie_entete_etendue, + row_height, + padding, + font_size, + font_weight, + border_thickness, + color, + background_color, + serie_description, + serie_output_format, + serie_picto_enabled, + serie_positif_is_good, + hide_on_zero_field, + viewlink, + viewlink_label, + viewlink_param, + option + FROM + ( + SELECT + t_rapports.oid AS rapport_id, + numero_rubrique_chapitre, + MAX(t_rapports_rubriques_template.numero_rubrique) AS numero_rubrique, + MAX(t_rapports_rubriques_template.indicateur_id) AS indicateur_id, + MAX(t_rapports_rubriques_template.indicateur_associe_id) AS indicateur_associe_id, + MAX(t_rapports_rubriques_template.serie_indicateur_id) AS serie_indicateur_id, + CASE WHEN level <> '1' THEN Array[t_indicateur_condition_2.oid,t_indicateur_condition_3.oid] ELSE NULL END AS indicateur_condition_id, + MAX(CASE + WHEN t_rapports_rubriques_template.entete_etendue LIKE '%[LIB=FIL]%' THEN ent_texte + WHEN t_rapports_rubriques_template.entete_etendue LIKE '%[LIB=MED]%' THEN ent_texte + ELSE t_rapports_rubriques_template.entete_etendue END) AS entete_etendue, + MAX(t_rapports_rubriques_template.row_height) AS row_height, + MAX(t_rapports_rubriques_template.padding) AS padding, + MAX(t_rapports_rubriques_template.font_size) AS font_size, + MAX(t_rapports_rubriques_template.font_weight) AS font_weight, + MAX(t_rapports_rubriques_template.border_thickness) AS border_thickness, + MAX(t_rapports_rubriques_template.color) AS color, + MAX(t_rapports_rubriques_template.background_color) AS background_color, + MAX(t_rapports_rubriques_template.serie_description) AS serie_description, + MAX(t_rapports_rubriques_template.serie_output_format) AS serie_output_format, + MAX(t_rapports_rubriques_template.serie_picto_enabled) AS serie_picto_enabled, + MAX(t_rapports_rubriques_template.serie_positif_is_good) AS serie_positif_is_good, + MAX(t_rapports_rubriques_template.hide_on_zero_field) AS hide_on_zero_field, + MAX(''::text) AS viewlink, + MAX(''::text) AS viewlink_label, + MAX(''::text) AS viewlink_param, + MAX(t_indicateurs.code) AS indicateur_code, + MAX(t_rapports_rubriques_template.option) AS option, + sortkey, + level + FROM activite.t_rapports t_rapports_template + JOIN activite.t_rapports_rubriques t_rapports_rubriques_template ON t_rapports_rubriques_template.rapport_id = t_rapports_template.oid + JOIN activite.t_indicateurs ON t_rapports_rubriques_template.indicateur_id = t_indicateurs.oid + JOIN activite.t_rapports ON t_rapports_template.code = t_rapports.code || '_TEMPLATE' AND t_rapports.code LIKE '%BUD%' + JOIN ( + SELECT rapport_id, + numero_rubrique AS numero_rubrique_chapitre, + COALESCE(LEAD(numero_rubrique) OVER (PARTITION BY rapport_id oRDER BY numero_rubrique) -1,999999) AS numero_rubrique_chapitre_fin + FROM activite.t_rapports_rubriques + JOIN activite.t_rapports ON rapport_id = t_rapports.oid + WHERE t_rapports.code LIKE '%TEMPLATE' AND + option LIKE '%[TREELVL=1]%' + ) subview ON + t_rapports_template.oid = subview.rapport_id AND + t_rapports_rubriques_template.numero_rubrique BETWEEN numero_rubrique_chapitre AND numero_rubrique_chapitre_fin + JOIN w_sections ON 1=1 + LEFT JOIN activite.t_indicateur_condition t_indicateur_condition_2 ON + t_indicateur_condition_2.code = w_sections.lv1_condition_code AND level >= 2 + LEFT JOIN activite.t_indicateur_condition t_indicateur_condition_3 ON + t_indicateur_condition_3.code = w_sections.lv2_condition_code AND level = 3 + WHERE + ( + level = 1 AND t_rapports_rubriques_template.option LIKE '%[LVL='||w_sections.lvl_code||']%' OR + level = 2 AND t_rapports_rubriques_template.option LIKE '%[LVL='||w_sections.lvl_code||']%' OR + level = 3 AND t_rapports_rubriques_template.option LIKE '%[LVL='||w_sections.lvl_code||']%' + ) + GROUP BY + t_rapports.oid, + t_rapports_rubriques_template.rapport_id, + numero_rubrique_chapitre, + t_rapports_rubriques_template.numero_rubrique, + t_indicateur_condition_2.oid, + t_indicateur_condition_3.oid, + sortkey, + level + ORDER BY + t_rapports_rubriques_template.rapport_id, + numero_rubrique_chapitre, + sortkey, + level, + t_rapports_rubriques_template.numero_rubrique + ) subview + ; + + + + END IF; + + + RETURN 'OK' ; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_budget_translate_list~tx.yaml b/db/schema2/functions/cti_budget_translate_list~tx.yaml new file mode 100644 index 0000000..28e3d4f --- /dev/null +++ b/db/schema2/functions/cti_budget_translate_list~tx.yaml @@ -0,0 +1,23 @@ +return: text +lang: plpgsql +parameters: + p0: + type: text + name: i_liste +src: | + DECLARE + _liste text; + + BEGIN + _liste = i_liste; + _liste = trim(translate(COALESCE(_liste,''),'"' || chr(9) || chr(10) || chr(13),' ')); + _liste = replace(_liste,' ',' '); + _liste = replace(_liste,' ',' '); + _liste = replace(_liste,' ',' '); + _liste = replace(_liste,' ',' '); + _liste = (SELECT base.cti_group_concat_without_sep(code || ' ') + FROM + (SELECT code FROM base.cti_unnest(string_to_array(_liste,' ')) AS code ORDER BY 1) subview + ); + RETURN _liste ; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_calc_duree_occupation.yaml b/db/schema2/functions/cti_calc_duree_occupation.yaml new file mode 100644 index 0000000..7e0b195 --- /dev/null +++ b/db/schema2/functions/cti_calc_duree_occupation.yaml @@ -0,0 +1,83 @@ +return: text +lang: plpgsql +src: | + DECLARE + + BEGIN + -- Identification des journées selon lignes facturées + DROP TABLE IF EXISTS w_duree_occupation; + CREATE TEMP TABLE w_duree_occupation AS + SELECT + no_sejour, + + t_lieux_c.etage_id AS lieu_etage_id, + t_lieux_c.etage_code AS lieu_etage_code, + t_lieux_c.etage_texte AS lieu_etage_texte, + t_lieux_c.etage_section_id AS lieu_etage_section_id, + t_lieux_c.etage_section_code AS lieu_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_etage_section_texte, + + t_lieux_c.lit_id AS lieu_lit_id, + t_lieux_c.lit_code AS lieu_lit_code, + t_lieux_c.lit_texte AS lieu_lit_texte, + t_lieux_c.lit_section_id AS lieu_lit_section_id, + t_lieux_c.lit_section_code AS lieu_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_lit_section_texte, + + t_lieux_c.unite_medicale_id AS lieu_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_unite_medicale_section_texte, + + t_lieux_c.unite_fonctionnelle_id AS lieu_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_unite_fonctionnelle_section_texte, + sum(nb_jours_f) AS duree_occ_eta + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux_c ON p_mouvements_sejour.lieu_id = t_lieux_c.oid + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25; + + CREATE INDEX w_duree_occupation_i1 ON w_duree_occupation USING btree (no_sejour); + DROP TABLE IF EXISTS activite.p_duree_occupation; + CREATE TABLE activite.p_duree_occupation AS + SELECT + no_sejour::text, + lieu_etage_id::bigint as v_lieu_etage_id, + lieu_etage_code::text as v_lieu_etage_code, + lieu_etage_texte::text as v_lieu_etage_texte, + lieu_etage_section_id::bigint[] as v_lieu_etage_section_id, + lieu_etage_section_code::text[] as v_lieu_etage_section_code, + lieu_etage_section_texte::text[] as v_lieu_etage_section_texte, + lieu_lit_id::bigint as v_lieu_lit_id, + lieu_lit_code::text as v_lieu_lit_code, + lieu_lit_texte::text as v_lieu_lit_texte, + lieu_lit_section_id::bigint[] as v_lieu_lit_section_id, + lieu_lit_section_code::text[] as v_lieu_lit_section_code, + lieu_lit_section_texte::text[] as v_lieu_lit_section_texte, + lieu_unite_medicale_id::bigint as v_lieu_unite_medicale_id, + lieu_unite_medicale_code::text as v_lieu_unite_medicale_code, + lieu_unite_medicale_texte::text as v_lieu_unite_medicale_texte, + lieu_unite_medicale_section_id::bigint[] as v_lieu_unite_medicale_section_id, + lieu_unite_medicale_section_code::text[] as v_lieu_unite_medicale_section_code, + lieu_unite_medicale_section_texte::text[] as v_lieu_unite_medicale_section_texte, + lieu_unite_fonctionnelle_id::bigint as v_lieu_unite_fonctionnelle_id, + lieu_unite_fonctionnelle_code::text as v_lieu_unite_fonctionnelle_code, + lieu_unite_fonctionnelle_texte::text as v_lieu_unite_fonctionnelle_texte, + lieu_unite_fonctionnelle_section_id::bigint[] as v_lieu_unite_fonctionnelle_section_id, + lieu_unite_fonctionnelle_section_code::text[] as v_lieu_unite_fonctionnelle_section_code, + lieu_unite_fonctionnelle_section_texte::text[] as v_lieu_unite_fonctionnelle_section_texte, + duree_occ_eta::bigint + FROM w_duree_occupation; + + -- Détection nouvelles journées pour les services concernés + RAISE NOTICE '%' , 'Fin calcule durée occupation'; + + ANALYZE activite.p_duree_occupation; + + RETURN 'OK' ; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_calcul_hdj_mouvements.yaml b/db/schema2/functions/cti_calcul_hdj_mouvements.yaml new file mode 100644 index 0000000..5906c72 --- /dev/null +++ b/db/schema2/functions/cti_calcul_hdj_mouvements.yaml @@ -0,0 +1,116 @@ +return: text +lang: plpgsql +src: | + DECLARE + + BEGIN + -- Ne faire que si un service est concerné + IF NOT EXISTS (SELECT * FROM activite.t_services_facturation WHERE COALESCE(prestations_presence,'') <> '') THEN + RETURN 'OK. Non concerné' ; + END IF; + RAISE NOTICE '%' , 'Initialisations. identification journees'; + + -- Identification des journées selon lignes facturées + DROP TABLE IF EXISTS w_mouvements_seances; + CREATE TEMP TABLE w_mouvements_seances AS + SELECT no_sejour, p_factures_lignes_c.date_debut + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE + t_prestations.code <> '' AND + t_services_facturation.prestations_presence <> '' AND + t_prestations.code ILIKE ANY (string_to_array(translate(prestations_presence,'*,','% '),' ')) + GROUP BY 1,2; + CREATE INDEX w_mouvements_seances_i1 ON w_mouvements_seances USING btree (no_sejour); + -- Identification des journées selon lignes non facturées + INSERT INTO w_mouvements_seances + SELECT p_factures.no_sejour, p_factures_lignes_c.date_debut + FROM activite.p_factures_lignes_non_facturees_c p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + LEFT JOIN w_mouvements_seances ON + w_mouvements_seances.no_sejour = p_factures.no_sejour AND + w_mouvements_seances.date_debut = p_factures_lignes_c.date_debut + WHERE + t_prestations.code <> '' AND + w_mouvements_seances.no_sejour IS NULL AND + t_services_facturation.prestations_presence <> '' AND + (t_prestations.code ILIKE ANY (string_to_array(translate(prestations_presence,'*,','% '),' '))) + GROUP BY 1,2; + + -- Détection nouvelles journées pour les services concernés + RAISE NOTICE '%' , 'Initialisations. Preparation mouvements'; + + DROP TABLE IF EXISTS w_mouvements_nouveaux; + CREATE TEMP TABLE w_mouvements_nouveaux AS + SELECT + p_mouvements_sejour.no_sejour, + p_mouvements_sejour.date, + p_mouvements_sejour.heure_debut, + CASE WHEN w_mouvements_seances.no_sejour IS NOT NULL THEN p_mouvements_sejour.nb_jours_js_non_inclus ELSE 0 END AS nb_jours_js_non_inclus, + CASE WHEN w_mouvements_seances.no_sejour IS NOT NULL THEN p_mouvements_sejour.nb_jours_js_inclus ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN w_mouvements_seances.no_sejour IS NOT NULL THEN p_mouvements_sejour.est_jour_hospitalisation ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN w_mouvements_seances.no_sejour IS NOT NULL THEN p_mouvements_sejour.est_chambre_particuliere ELSE '0' END AS est_chambre_particuliere, + CASE WHEN w_mouvements_seances.no_sejour IS NOT NULL THEN p_mouvements_sejour.est_chambre_particuliere_facturee ELSE '0' END AS est_chambre_particuliere_facturee, + CASE WHEN w_mouvements_seances.no_sejour IS NOT NULL THEN p_mouvements_sejour.est_facture ELSE '0' END AS est_facture, + CASE WHEN w_mouvements_seances.no_sejour IS NOT NULL THEN p_mouvements_sejour.nb_jours_d ELSE 0 END AS nb_jours_d, + CASE WHEN w_mouvements_seances.no_sejour IS NOT NULL THEN p_mouvements_sejour.nb_jours_f ELSE 0 END AS nb_jours_f, + CASE WHEN w_mouvements_seances.no_sejour IS NOT NULL THEN p_mouvements_sejour.nb_jours_12 ELSE 0 END AS nb_jours_12, + CASE WHEN w_mouvements_seances.no_sejour IS NOT NULL THEN p_mouvements_sejour.nb_jours_prorata ELSE 0 END AS nb_jours_prorata, + CASE WHEN w_mouvements_seances.no_sejour IS NOT NULL THEN p_mouvements_sejour.nb_jours_cp_d ELSE 0 END AS nb_jours_cp_d, + CASE WHEN w_mouvements_seances.no_sejour IS NOT NULL THEN p_mouvements_sejour.nb_jours_cp_f ELSE 0 END AS nb_jours_cp_f, + CASE WHEN w_mouvements_seances.no_sejour IS NOT NULL THEN p_mouvements_sejour.nb_jours_cp_12 ELSE 0 END AS nb_jours_cp_12 + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + LEFT JOIN w_mouvements_seances ON p_mouvements_sejour.no_sejour = w_mouvements_seances.no_sejour AND + p_mouvements_sejour.date = w_mouvements_seances.date_debut + WHERE t_services_facturation.prestations_presence <> '' AND + w_mouvements_seances.no_sejour IS NULL; + CREATE INDEX w_mouvements_nouveaux_i1 ON w_mouvements_nouveaux USING btree (no_sejour); + + -- Modification table des mouvements de séjour + RAISE NOTICE '%' , 'Initialisations. Modification mouvements'; + UPDATE activite.p_mouvements_sejour SET + nb_jours_js_non_inclus = w_mouvements_nouveaux.nb_jours_js_non_inclus, + nb_jours_js_inclus = w_mouvements_nouveaux.nb_jours_js_inclus, + est_jour_hospitalisation = w_mouvements_nouveaux.est_jour_hospitalisation, + est_chambre_particuliere = w_mouvements_nouveaux.est_chambre_particuliere, + est_chambre_particuliere_facturee = w_mouvements_nouveaux.est_chambre_particuliere_facturee, + est_facture = w_mouvements_nouveaux.est_facture, + nb_jours_d = w_mouvements_nouveaux.nb_jours_d , + nb_jours_f = w_mouvements_nouveaux.nb_jours_f , + nb_jours_12 = w_mouvements_nouveaux.nb_jours_12, + nb_jours_prorata = w_mouvements_nouveaux.nb_jours_prorata, + nb_jours_cp_d = w_mouvements_nouveaux.nb_jours_cp_d, + nb_jours_cp_f = w_mouvements_nouveaux.nb_jours_cp_f, + nb_jours_cp_12 = w_mouvements_nouveaux.nb_jours_cp_12 + FROM w_mouvements_nouveaux + WHERE p_mouvements_sejour.no_sejour = w_mouvements_nouveaux.no_sejour AND + p_mouvements_sejour.date = w_mouvements_nouveaux.date AND + p_mouvements_sejour.heure_debut = w_mouvements_nouveaux.heure_debut AND + ( + p_mouvements_sejour.nb_jours_js_non_inclus IS DISTINCT FROM w_mouvements_nouveaux.nb_jours_js_non_inclus OR + p_mouvements_sejour.nb_jours_js_inclus IS DISTINCT FROM w_mouvements_nouveaux.nb_jours_js_inclus OR + p_mouvements_sejour.est_jour_hospitalisation IS DISTINCT FROM w_mouvements_nouveaux.est_jour_hospitalisation OR + p_mouvements_sejour.est_chambre_particuliere IS DISTINCT FROM w_mouvements_nouveaux.est_chambre_particuliere OR + p_mouvements_sejour.est_chambre_particuliere_facturee IS DISTINCT FROM w_mouvements_nouveaux.est_chambre_particuliere_facturee OR + p_mouvements_sejour.est_facture IS DISTINCT FROM w_mouvements_nouveaux.est_facture OR + p_mouvements_sejour.nb_jours_d IS DISTINCT FROM w_mouvements_nouveaux.nb_jours_d OR + p_mouvements_sejour.nb_jours_f IS DISTINCT FROM w_mouvements_nouveaux.nb_jours_f OR + p_mouvements_sejour.nb_jours_12 IS DISTINCT FROM w_mouvements_nouveaux.nb_jours_12 OR + p_mouvements_sejour.nb_jours_prorata IS DISTINCT FROM w_mouvements_nouveaux.nb_jours_prorata OR + p_mouvements_sejour.nb_jours_cp_d IS DISTINCT FROM w_mouvements_nouveaux.nb_jours_cp_d OR + p_mouvements_sejour.nb_jours_cp_f IS DISTINCT FROM w_mouvements_nouveaux.nb_jours_cp_f OR + p_mouvements_sejour.nb_jours_cp_12 IS DISTINCT FROM w_mouvements_nouveaux.nb_jours_cp_12 + ); + + ANALYZE activite.p_mouvements_sejour; + + RETURN 'OK' ; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_calcul_journees_mouvements.yaml b/db/schema2/functions/cti_calcul_journees_mouvements.yaml new file mode 100644 index 0000000..ad419fe --- /dev/null +++ b/db/schema2/functions/cti_calcul_journees_mouvements.yaml @@ -0,0 +1,1328 @@ +return: text +lang: plpgsql +src: | + DECLARE + _nb_services_absence numeric; + BEGIN + -- Ajout de colonnes dans les tables pour compatibilite descendante + IF NOT EXISTS ( + SELECT column_name + FROM information_schema.columns + WHERE table_schema || '.' || table_name = 'activite.p_mouvements_sejour' AND + column_name = 'equivalent_malade_complet') THEN + ALTER TABLE activite.p_mouvements_sejour ADD COLUMN equivalent_malade_complet numeric DEFAULT 0; + END IF; + IF NOT EXISTS ( + SELECT column_name + FROM information_schema.columns + WHERE table_schema || '.' || table_name = 'activite.p_mouvements_sejour' AND + column_name = 'nb_jour_sejour_sorti') THEN + ALTER TABLE activite.p_mouvements_sejour ADD COLUMN nb_jour_sejour_sorti integer DEFAULT 0; + END IF; + IF NOT EXISTS ( + SELECT column_name + FROM information_schema.columns + WHERE table_schema || '.' || table_name = 'activite.p_mouvements_sejour' AND + column_name = 'nb_seances_chimio') THEN + ALTER TABLE activite.p_mouvements_sejour ADD COLUMN nb_seances_chimio integer DEFAULT 0; + END IF; + IF NOT EXISTS ( + SELECT column_name + FROM information_schema.columns + WHERE table_schema || '.' || table_name = 'activite.p_mouvements_sejour' AND + column_name = 'nb_seances_dialyse') THEN + ALTER TABLE activite.p_mouvements_sejour ADD COLUMN nb_seances_dialyse integer DEFAULT 0; + END IF; + IF NOT EXISTS ( + SELECT column_name + FROM information_schema.columns + WHERE table_schema || '.' || table_name = 'activite.p_mouvements_sejour' AND + column_name = 'nb_seances_autre') THEN + ALTER TABLE activite.p_mouvements_sejour ADD COLUMN nb_seances_autre integer DEFAULT 0; + END IF; + IF NOT EXISTS ( + SELECT column_name + FROM information_schema.columns + WHERE table_schema || '.' || table_name = 'activite.p_mouvements_sejour' AND + column_name = 'nb_seances_chimio') THEN + ALTER TABLE activite.p_mouvements_sejour ADD COLUMN nb_seances_chimio integer DEFAULT 0; + END IF; + IF NOT EXISTS ( + SELECT column_name + FROM information_schema.columns + WHERE table_schema || '.' || table_name = 'activite.p_mouvements_sejour' AND + column_name = 'nb_deces') THEN + ALTER TABLE activite.p_mouvements_sejour ADD COLUMN nb_deces integer DEFAULT 0; + END IF; + + IF NOT EXISTS ( + SELECT column_name + FROM information_schema.columns + WHERE table_schema || '.' || table_name = 'activite.t_etages' AND + column_name = 'est_urgence') THEN + ALTER TABLE activite.t_etages ADD COLUMN est_urgence text DEFAULT ''; + END IF; + + IF NOT EXISTS ( + SELECT column_name + FROM information_schema.columns + WHERE table_schema || '.' || table_name = 'activite.t_services_facturation' AND + column_name = 'mode_calcul_journees') THEN + ALTER TABLE activite.t_services_facturation ADD COLUMN mode_calcul_journees text DEFAULT ''; + END IF; + + -- Paramétrage + -- Par défaut, On ne compte pas le jour de sortie sauf les hospits où DE = DS + INSERT INTO activite.t_divers (code, texte, valeur, description, valeur2) + SELECT + 'OPTADM_DAYOUT'::text, + 'Activite : Comptabilisation du jour de sortie'::text, + '0'::text, + '0=JS non inclus sauf DE=DS | 1=JS non inclus | 2=JS inclus'::text, + 'Jour de sortie non inclus sauf hospitalisés avec DE=DS'::text + WHERE + 'OPTADM_DAYOUT'::text NOT IN (SELECT code FROM activite.t_divers) ; + + -- Par défaut, l'hospit complète génère un EMC par séjour + INSERT INTO activite.t_divers (code, texte, valeur, description, valeur2) + SELECT + 'EMCHCSSRPSY'::text, + 'Mode génération EMC HC SSR ou PSY'::text, + '0'::text, + '0=1 EMC par séjour, 1=1 EMC par semaine'::text, + 'Jour de sortie non inclus sauf hospitalisés avec DE=DS'::text + WHERE + 'EMCHCSSRPSY'::text NOT IN (SELECT code FROM activite.t_divers) ; + + -- Par défaut, On conserve les séances en hospit + INSERT INTO activite.t_divers (code, texte, valeur, description, valeur2) + SELECT + 'SEANCEHOSPIT'::text, + 'Traitement des séances en hospit'::text, + '1'::text, + '1=Conserver les séances en hospit, 2=Ne conserver que les séances de dialyse, 0=Pas de séance en hospit'::text, + ''::text + WHERE + 'SEANCEHOSPIT'::text NOT IN (SELECT code FROM activite.t_divers) ; + UPDATE activite.t_divers + SET description = '1=Conserver les séances en hospit, 2=Ne conserver que les séances de dialyse, 0=Pas de séance en hospit' + WHERE code = 'SEANCEHOSPIT' AND + description <> '1=Conserver les séances en hospit, 2=Ne conserver que les séances de dialyse, 0=Pas de séance en hospit' + ; + + -- Désactivation index + RAISE NOTICE '%' , 'Desactivation index'; + PERFORM base.cti_stash_table_indexes('activite.p_mouvements_sejour'); + RAISE NOTICE '%' , 'Extraction des mouvements'; + DROP TABLE IF EXISTS w_mvt; + CREATE TEMP TABLE w_mvt AS SELECT * FROM activite.p_mouvements_sejour; + + CREATE INDEX w_mvt_i1 + ON w_mvt + USING btree + (no_sejour); + + + CREATE INDEX w_mvt_i2 + ON w_mvt + USING btree + (lieu_id); + + + + -- Table des services associéss aux lieux + DROP TABLE IF EXISTS w_lieux_etendus; + CREATE TEMP TABLE w_lieux_etendus AS + SELECT t_lieux.*, + t_lits.etage_id, + CASE WHEN COALESCE(t_services_facturation.mode_calcul_journees,'') <> '' THEN t_services_facturation.mode_calcul_journees ELSE t_divers_dayout.valeur END AS service_mode_calcul_journees, + t_services_facturation.est_absence AS service_est_absence, + t_services_facturation.type_sejour AS service_type_sejour, + t_services_facturation.type_t2a AS service_type_t2a, + t_lits.chambre_particuliere AS lit_chambre_particuliere, + t_etages.est_urgence AS etage_est_urgence, + t_modes_traitement.code AS mode_traitement_code, + t_dmt.code AS dmt_code + FROM activite.t_lieux + JOIN activite.t_services_facturation On service_facturation_id = t_services_facturation.oid + JOIN activite.t_lits ON lit_id = t_lits.oid + JOIN activite.t_etages ON t_lits.etage_id = t_etages.oid + JOIN base.t_modes_traitement ON t_modes_traitement.oid = t_services_facturation.mode_traitement_id + JOIN base.t_dmt on dmt_id = t_dmt.oid + JOIN activite.t_divers t_divers_dayout ON t_divers_dayout.code = 'OPTADM_DAYOUT' + ; + CREATE INDEX w_lieux_etendus_i1 + ON w_lieux_etendus + USING btree + (oid); + ANALYSE w_lieux_etendus + ; + + -- Correction heure sortie dans mouvements + UPDATE activite.p_sejours + SET heure_sortie = (substr(to_char(heure_sortie,'FM000000'),1,2) || '59' || substr(to_char(heure_sortie,'FM000000'),5,2))::numeric + WHERE substr(to_char(heure_sortie,'FM000000'),3,2) > '59' + ; + + UPDATE activite.p_sejours + SET heure_sortie = 240000 + WHERE heure_sortie > 240000 + ; + + UPDATE w_mvt p_mouvements_sejour + SET heure_fin = p_sejours.heure_sortie + FROM activite.p_sejours + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + p_mouvements_sejour.nb_sorties_directes = 1 AND + p_mouvements_sejour.date = p_sejours.date_sortie AND + p_mouvements_sejour.heure_fin <> p_sejours.heure_sortie AND + p_sejours.code_sorti = '1' AND + p_sejours.type_sejour = '1' AND + p_sejours.heure_sortie >= p_mouvements_sejour.heure_debut + ; + UPDATE w_mvt p_mouvements_sejour + SET heure_fin = p_sejours.heure_sortie + FROM activite.p_sejours + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + p_mouvements_sejour.nb_ambulatoires = 1 AND + p_mouvements_sejour.date = p_sejours.date_sortie AND + p_mouvements_sejour.heure_fin <> p_sejours.heure_sortie AND + p_sejours.code_sorti = '1' AND + p_sejours.type_sejour IN ('2') AND + p_sejours.heure_sortie >= p_mouvements_sejour.heure_debut + ; + + UPDATE w_mvt p_mouvements_sejour + SET heure_fin = p_sejours.heure_sortie + FROM activite.p_sejours + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + p_mouvements_sejour.nb_externes = 1 AND + p_mouvements_sejour.date = p_sejours.date_sortie AND + p_mouvements_sejour.heure_fin <> p_sejours.heure_sortie AND + p_sejours.code_sorti = '1' AND + p_sejours.type_sejour IN ('3') AND + p_sejours.heure_sortie >= p_mouvements_sejour.heure_debut + ; + + -- Correction mouvements pour jour de sortie HDJ HM + UPDATE w_mvt p_mouvements_sejour + SET est_jour_sortie = '1' + FROM activite.p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.code_sorti = '1' AND + p_sejours.type_sejour = '1' AND + p_mouvements_sejour.date = p_sejours.date_sortie AND + p_mouvements_sejour.est_jour_sortie <> '1' + ; + + DROP TABLE IF EXISTS w_correction_hdj; + CREATE TEMP TABLE w_correction_hdj AS + SELECT + p_mouvements_sejour.no_sejour, + p_mouvements_sejour.date, + p_mouvements_sejour.heure_debut, + p_mouvements_sejour.heure_fin, + MAX(p_mouvements_sejour2.heure_debut) AS heure_debut2, + (MAX(Array[p_mouvements_sejour2.heure_debut, p_mouvements_sejour2.lieu_id]))[2]::bigint AS lieu_id2 + FROM w_mvt p_mouvements_sejour + JOIN w_mvt p_mouvements_sejour2 ON + p_mouvements_sejour.no_sejour = p_mouvements_sejour2.no_sejour AND + p_mouvements_sejour.date = p_mouvements_sejour2.date AND + p_mouvements_sejour.heure_debut > p_mouvements_sejour2.heure_fin + WHERE p_mouvements_sejour.est_jour_hospitalisation = '0' AND + p_mouvements_sejour2.est_jour_hospitalisation = '1' AND + p_mouvements_sejour.nb_sorties_directes = 1 AND + p_mouvements_sejour2.nb_sorties_directes = 0 + GROUP BY 1,2,3,4 + HAVING (MAX(Array[p_mouvements_sejour2.heure_debut,p_mouvements_sejour2.lieu_id]))[2]::bigint = MAX(p_mouvements_sejour.lieu_id) ; + + UPDATE w_mvt p_mouvements_sejour + SET est_jour_hospitalisation = '1', est_dernier_mouvement_jour = '1' + FROM w_correction_hdj + WHERE p_mouvements_sejour.no_sejour = w_correction_hdj.no_sejour AND + p_mouvements_sejour.date = w_correction_hdj.date AND + p_mouvements_sejour.heure_debut = w_correction_hdj.heure_debut + ; + + UPDATE w_mvt p_mouvements_sejour + SET est_dernier_mouvement_jour = '0' + FROM w_correction_hdj + WHERE p_mouvements_sejour.no_sejour = w_correction_hdj.no_sejour AND + p_mouvements_sejour.date = w_correction_hdj.date AND + p_mouvements_sejour.heure_debut = w_correction_hdj.heure_debut2 AND + est_dernier_mouvement_jour = '1' + ; + + -- Stockage des décés + UPDATE w_mvt p_mouvements_sejour + SET nb_deces = 1 + FROM activite.p_sejours + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + p_sejours.date_sortie = p_mouvements_sejour.date AND + p_sejours.heure_sortie = p_mouvements_sejour.heure_fin AND + p_sejours.code_sorti = '1' AND + p_sejours.mode_sortie = '9' + ; + + + + -- Traitement des séances qui n'en sont pas (cas du mode generation service = 0sauf5 + UPDATE w_mvt p_mouvements_sejour + SET nb_seances = 0, + nb_ambulatoires = 1 + FROM activite.p_sejours, + w_lieux_etendus t_lieux + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + date_entree = date_sortie AND + lieu_id = t_lieux.oid AND + p_sejours.type_sejour = '5' AND + service_type_sejour = '0sauf5' AND + nb_seances <> 0 + ; + + UPDATE activite.p_sejours + SET type_sejour = '2' + FROM w_lieux_etendus t_lieux + WHERE lieu_sortie_id = t_lieux.oid AND + date_entree = date_sortie AND + p_sejours.type_sejour = '5' AND + service_type_sejour = '0sauf5' + ; + + -- Normalement, une seule séance par jour + UPDATE w_mvt p_mouvements_sejour + SET nb_seances = 1 + WHERE nb_seances > 1; + + + UPDATE w_mvt p_mouvements_sejour + SET nb_seances = 0 + FROM + ( + SELECT w_mvt.no_sejour, w_mvt.date, min(w_mvt.heure_debut) AS heure_seance + FROM w_mvt + JOIN activite.p_sejours ON w_mvt.no_sejour = p_sejours.no_sejour + JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid + WHERE nb_seances > 0 AND + t_ghm.code <> '28Z04Z' + GROUP BY 1,2 + HAVING SUM(nb_seances) > 1 + ) subview + WHERE p_mouvements_sejour.no_sejour = subview.no_sejour AND + p_mouvements_sejour.date = subview.date AND + p_mouvements_sejour.heure_debut <> heure_seance + ; + + -- Deux séances de dialyse le même jour, modif selon facturation + UPDATE w_mvt p_mouvements_sejour + SET nb_seances = 2 + FROM + ( + SELECT no_sejour, p_factures_lignes_h.date_debut, SUM(nb_prestation) + FROM activite.p_factures_lignes_h + JOIN activite.p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN base.t_actes ON acte_id = t_actes.oid + WHERE code_facture = '1' AND t_actes.code LIKE 'JVJF%' AND p_factures_lignes_h.date_debut = p_factures_lignes_h.date_fin + GROUP BY 1,2 + HAVING SUM(nb_prestation) > 1 + ) subview + WHERE p_mouvements_sejour.no_sejour = subview.no_sejour AND + p_mouvements_sejour.date = subview.date_debut AND + p_mouvements_sejour.nb_seances = 1 + ; + + -- Correction pour mouvements CEGI qui finissent à 235959 et redémarrent le lendemain à 0h -> Dans ce cas il manque une journée + UPDATE w_mvt + SET heure_fin = 240000 + WHERE heure_fin = 235959 + ; + -- Recherche date fin journée pour journées avec absence démarrant après midi (dans ce cas la journée doit être imputée) + _nb_services_absence = (SELECT count(*) FROM activite.t_services_facturation WHERE est_absence = '1'); + IF _nb_services_absence > 0 THEN + RAISE NOTICE '%' , 'Traitement special absences'; + DROP TABLE IF EXISTS w_absences; + CREATE TEMP TABLE w_absences AS + SELECT no_sejour, + date, + MIN(CASE WHEN service_est_absence <> '1' THEN heure_debut ELSE 999999 END) AS heure_debut_journee, + MAX(CASE WHEN service_est_absence <> '1' THEN heure_fin ELSE 0 END) AS heure_fin_journee, + MIN(CASE WHEN service_est_absence = '1' THEN heure_debut ELSE 999999 END) AS heure_debut_absence, + MAX(CASE WHEN service_est_absence = '1' THEN heure_fin ELSE 0 END) AS heure_fin_absence + FROM w_mvt + JOIN w_lieux_etendus t_lieux ON lieu_id = t_lieux.oid + GROUP BY 1,2 + HAVING MAX(service_est_absence) = '1' AND + MIN(service_est_absence) <> '1' + ORDER BY 1,2; + UPDATE w_mvt SET + est_premier_mouvement_jour = + CASE + WHEN 120000 BETWEEN heure_debut_journee AND heure_fin_journee AND heure_debut = heure_debut_journee THEN '1' + WHEN 120000 BETWEEN heure_debut_absence AND heure_fin_absence AND heure_debut = heure_debut_absence THEN '1' + ELSE '9' END, + est_dernier_mouvement_jour = + CASE + WHEN 120000 BETWEEN heure_debut_journee AND heure_fin_journee AND heure_debut = heure_debut_journee THEN '1' + WHEN 120000 BETWEEN heure_debut_absence AND heure_fin_absence AND heure_debut = heure_debut_absence THEN '1' + ELSE '9' END + FROM w_absences + WHERE w_absences.no_sejour = w_mvt.no_sejour AND + w_absences.date = w_mvt.date ; + + UPDATE w_mvt SET + nb_chambres_particulieres = 0, + nb_entrees_mutation_service = 0, + nb_entrees_mutation_etage = 0, + nb_sorties_mutation_service = 0, + nb_sorties_mutation_etage = 0 + FROM w_lieux_etendus t_lieux + WHERE lieu_id = t_lieux.oid AND + service_est_absence = '1' AND + ( + nb_chambres_particulieres <> 0 OR + nb_entrees_mutation_service <> 0 OR + nb_entrees_mutation_etage <> 0 OR + nb_sorties_mutation_service <> 0 OR + nb_sorties_mutation_etage <> 0 + ) + ; + + -- enlever mutations absences + DROP TABLE IF EXISTS w_mvt_for_mutations; + CREATE TEMP TABLE w_mvt_for_mutations AS + SELECT no_sejour, date, heure_debut, + ROW_NUMBER() OVER (PARTITION BY no_sejour + ORDER BY no_sejour, date, heure_debut + ) AS rang_mvt, + service_facturation_id, etage_id, unite_fonctionnelle_id, unite_medicale_id, + nb_entrees_directes, + nb_entrees_mutation_service, + nb_entrees_mutation_etage, + nb_sorties_directes, + nb_sorties_mutation_service, + nb_sorties_mutation_etage + FROM w_mvt p_mouvements_sejour + JOIN w_lieux_etendus t_lieux ON lieu_id = t_lieux.oid + WHERE service_est_absence <> '1' + ORDER BY 1,2,3 + ; + + UPDATE w_mvt p_mouvements_sejour SET + nb_entrees_mutation_service = subview.nb_entrees_mutation_service, + nb_entrees_mutation_etage = subview.nb_entrees_mutation_etage + FROM + ( + SELECT w_mvt_for_mutations.no_sejour, w_mvt_for_mutations.date, w_mvt_for_mutations.heure_debut, + CASE WHEN w_mvt_for_mutations.service_facturation_id = w_mvt_for_mutations_2.service_facturation_id THEN 0 ELSE 1 END AS nb_entrees_mutation_service, + CASE WHEN w_mvt_for_mutations.etage_id = w_mvt_for_mutations_2.etage_id THEN 0 ELSE 1 END AS nb_entrees_mutation_etage + FROM w_mvt_for_mutations + JOIN w_mvt_for_mutations w_mvt_for_mutations_2 ON + w_mvt_for_mutations.no_sejour = w_mvt_for_mutations_2.no_sejour AND + w_mvt_for_mutations.rang_mvt = w_mvt_for_mutations_2.rang_mvt+ 1 + WHERE ( + w_mvt_for_mutations.nb_entrees_mutation_service = 1 AND w_mvt_for_mutations.service_facturation_id = w_mvt_for_mutations_2.service_facturation_id OR + w_mvt_for_mutations.nb_entrees_mutation_etage = 1 AND w_mvt_for_mutations.etage_id = w_mvt_for_mutations_2.etage_id + ) + ) subview + WHERE p_mouvements_sejour.no_sejour = subview.no_sejour AND + p_mouvements_sejour.date = subview.date AND + p_mouvements_sejour.heure_debut = subview.heure_debut + ; + + UPDATE w_mvt p_mouvements_sejour SET + nb_sorties_mutation_service = subview.nb_sorties_mutation_service, + nb_sorties_mutation_etage = subview.nb_sorties_mutation_etage + FROM + ( + SELECT w_mvt_for_mutations.no_sejour, w_mvt_for_mutations.date, w_mvt_for_mutations.heure_debut, + CASE WHEN w_mvt_for_mutations.service_facturation_id = w_mvt_for_mutations_2.service_facturation_id AND w_mvt_for_mutations.nb_sorties_directes <> 1 THEN 0 ELSE 1 END AS nb_sorties_mutation_service, + CASE WHEN w_mvt_for_mutations.etage_id = w_mvt_for_mutations_2.etage_id AND w_mvt_for_mutations.nb_sorties_directes <> 1 THEN 0 ELSE 1 END AS nb_sorties_mutation_etage + FROM w_mvt_for_mutations + JOIN w_mvt_for_mutations w_mvt_for_mutations_2 ON + w_mvt_for_mutations.no_sejour = w_mvt_for_mutations_2.no_sejour AND + w_mvt_for_mutations.rang_mvt = w_mvt_for_mutations_2.rang_mvt- 1 + WHERE ( + w_mvt_for_mutations.nb_sorties_mutation_service = 1 AND w_mvt_for_mutations.service_facturation_id = w_mvt_for_mutations_2.service_facturation_id OR + w_mvt_for_mutations.nb_sorties_mutation_etage = 1 AND w_mvt_for_mutations.etage_id = w_mvt_for_mutations_2.etage_id + ) + ) subview + WHERE p_mouvements_sejour.no_sejour = subview.no_sejour AND + p_mouvements_sejour.date = subview.date AND + p_mouvements_sejour.heure_debut = subview.heure_debut + ; + END IF; + + + + RAISE NOTICE '%' , 'Seances dans taux occupation'; + UPDATE w_mvt p_mouvements_sejour + SET nb_seances_dans_taux = CASE WHEN p_sejours.type_sejour = '5' THEN p_mouvements_sejour.nb_seances ELSE 0 END + FROM activite.p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_mouvements_sejour.nb_seances > 0 AND + p_mouvements_sejour.nb_seances_dans_taux <> CASE WHEN p_sejours.type_sejour = '5' THEN p_mouvements_sejour.nb_seances ELSE 0 END + ; + RAISE NOTICE '%' , 'Chambres particulieres des ambulatoires'; + UPDATE w_mvt + SET est_chambre_particuliere = '1' + WHERE lieu_id = ANY + ( + SELECT t_lieux.oid + FROM w_lieux_etendus t_lieux + WHERE lit_id <> 0 AND lit_chambre_particuliere = 'O' + ) AND + nb_ambulatoires > 0 AND + est_chambre_particuliere <> '1' + ; + RAISE NOTICE '%' , 'Chambres particulieres des hospitalisés'; + UPDATE w_mvt + SET est_chambre_particuliere = '1' + WHERE lieu_id = ANY + ( + SELECT t_lieux.oid + FROM w_lieux_etendus t_lieux + WHERE lit_id <> 0 AND lit_chambre_particuliere = 'O' + ) AND + est_jour_hospitalisation = '1' AND + est_chambre_particuliere <> '1' + ; + + RAISE NOTICE '%' , 'Precalcul EMC'; + DROP TABLE IF EXISTS w_mvt_emc; + CREATE TEMP TABLE w_mvt_emc AS + SELECT no_sejour, + CASE + WHEN service_type_t2a IN ('2','3') AND mode_traitement_code IN ('04','06','19','20','22') THEN to_char(date,'YYYYMMDD') + WHEN service_type_t2a IN ('2','3') AND t_divers.valeur = '1' THEN to_char(date,'YYYYIW') + ELSE '' END AS week, + SUM( + CASE WHEN est_jour_hospitalisation = '1' + THEN EXTRACT(EPOCH FROM (to_char(heure_fin,'FM000000')::time without time zone - to_char(heure_debut,'FM000000')::time without time zone)) + ELSE 0 END + )::numeric AS totseconds + FROM w_mvt + JOIN w_lieux_etendus t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_divers ON t_divers.code = 'EMCHCSSRPSY' + GROUP BY 1,2 + ; + CREATE INDEX w_mvt_emc_i1 + ON w_mvt_emc + USING btree + (no_sejour); + RAISE NOTICE '%' , 'Calcul des journees'; + UPDATE w_mvt SET + nb_jours_d = + CASE + WHEN service_mode_calcul_journees = '1'::text THEN + CASE + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.est_jour_hospitalisation = '1'::bpchar + AND (1!=1 + OR w_mvt.est_jour_sortie <> '1'::bpchar + ) + AND (1!=1 + OR w_mvt.nb_entrees_directes = 1::NUMERIC + OR w_mvt.heure_debut = 0::NUMERIC AND w_mvt.est_premier_mouvement_jour IS DISTINCT FROM '9' + OR w_mvt.est_premier_mouvement_jour = '1'::bpchar AND w_mvt.heure_debut <= p_sejours.heure_entree + ) + THEN 1::INTEGER + ELSE 0::INTEGER + END + + WHEN service_mode_calcul_journees = '2'::text THEN + CASE + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.est_jour_hospitalisation = '1'::bpchar + AND (1!=1 + OR w_mvt.nb_entrees_directes = 1::NUMERIC + OR w_mvt.heure_debut = 0::NUMERIC AND w_mvt.est_premier_mouvement_jour IS DISTINCT FROM '9' + OR w_mvt.est_premier_mouvement_jour = '1'::bpchar + ) + THEN 1::INTEGER + ELSE 0::INTEGER + END + + ELSE + CASE + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.est_jour_hospitalisation = '1'::bpchar + AND (1!=1 + OR w_mvt.est_jour_sortie <> '1'::bpchar + OR (mode_traitement_code = ANY (ARRAY ['04'::text, '06'::text, '19'::text, '20'::text, '22'::text])) AND w_mvt.nb_sorties_directes = 1::NUMERIC + OR w_mvt.est_jour_entree = '1'::bpchar AND w_mvt.est_jour_sortie = '1'::bpchar + ) + AND (1!=1 + OR w_mvt.nb_entrees_directes = 1::NUMERIC + OR w_mvt.heure_debut = 0::NUMERIC AND w_mvt.est_premier_mouvement_jour IS DISTINCT FROM '9' + OR w_mvt.est_premier_mouvement_jour = '1'::bpchar + ) + THEN 1::INTEGER + ELSE 0::INTEGER + END + END + , + + nb_jours_f = + CASE + WHEN service_mode_calcul_journees = '1' THEN + CASE + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.est_jour_hospitalisation = '1'::bpchar + AND (1!=1 + OR w_mvt.est_jour_sortie <> '1'::bpchar + ) + AND (1!=1 + OR w_mvt.heure_fin = 240000::NUMERIC AND w_mvt.est_dernier_mouvement_jour IS DISTINCT FROM '9' + OR w_mvt.est_dernier_mouvement_jour = '1'::bpchar + ) + THEN 1::INTEGER + ELSE 0::INTEGER + END + + WHEN service_mode_calcul_journees = '2' THEN + CASE + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.est_jour_hospitalisation = '1'::bpchar + AND (1!=1 + OR w_mvt.heure_fin = 240000::NUMERIC AND w_mvt.est_dernier_mouvement_jour IS DISTINCT FROM '9' + OR w_mvt.est_dernier_mouvement_jour = '1'::bpchar + OR w_mvt.nb_sorties_directes = 1::NUMERIC + ) + THEN 1::INTEGER + ELSE 0::INTEGER + END + + ELSE + CASE + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.est_jour_hospitalisation = '1'::bpchar + AND (1!=1 + OR w_mvt.est_jour_sortie <> '1'::bpchar + OR (mode_traitement_code = ANY (ARRAY ['04'::text, '06'::text, '19'::text, '20'::text, '22'::text])) AND w_mvt.nb_sorties_directes = 1::NUMERIC + OR w_mvt.est_jour_entree = '1'::bpchar AND w_mvt.est_jour_sortie = '1'::bpchar + ) + AND (1!=1 + OR w_mvt.heure_fin = 240000::NUMERIC AND w_mvt.est_dernier_mouvement_jour IS DISTINCT FROM '9' + OR w_mvt.est_dernier_mouvement_jour = '1'::bpchar + OR w_mvt.nb_sorties_directes = 1::NUMERIC + ) + THEN 1::INTEGER + ELSE 0::INTEGER + END + END + , + + nb_jours_12 = + CASE + WHEN service_est_absence <> '1'::bpchar AND + w_mvt.est_jour_hospitalisation = '1'::bpchar AND + 120000::numeric BETWEEN w_mvt.heure_debut AND w_mvt.heure_fin THEN 1::integer + WHEN service_est_absence <> '1'::bpchar AND + w_mvt.nb_entrees_directes = 1 AND + w_mvt.heure_debut > 120000 THEN 1::integer + WHEN service_est_absence <> '1'::bpchar AND + service_mode_calcul_journees = '2' AND + w_mvt.nb_sorties_directes = 1 AND + w_mvt.heure_fin < 120000 THEN 1::integer + else 0 ::integer + + + END + , + + nb_jours_prorata = + CASE + WHEN service_est_absence <> '1'::bpchar + THEN (( + CASE + WHEN heure_debut <> 240000 THEN substr(to_char(heure_fin,'FM000000'),1,2)::numeric * 3600 + substr(to_char(heure_fin,'FM000000'),3,2)::numeric * 60 + substr(to_char(heure_fin,'FM000000'),5,2)::numeric + ELSE 86400 END + - + CASE + WHEN heure_debut <> 0 THEN substr(to_char(heure_debut,'FM000000'),1,2)::numeric * 3600 + substr(to_char(heure_debut,'FM000000'),3,2)::numeric * 60 + substr(to_char(heure_debut,'FM000000'),5,2)::numeric + ELSE 0 END + ) / 86400)::NUMERIC + ELSE 0::NUMERIC + END + + , + + nb_jours_cp_d = + CASE + WHEN service_mode_calcul_journees = '1' THEN + CASE + WHEN + service_est_absence <> '1'::bpchar + AND w_mvt.est_jour_hospitalisation = '1'::bpchar + AND w_mvt.est_jour_sortie <> '1'::bpchar + AND w_mvt.est_chambre_particuliere = '1'::bpchar + AND (1!=1 + OR w_mvt.nb_entrees_directes = 1::NUMERIC + OR w_mvt.heure_debut = 0::NUMERIC AND w_mvt.est_premier_mouvement_jour IS DISTINCT FROM '9' + OR w_mvt.est_premier_mouvement_jour = '1'::bpchar + ) + THEN 1::INTEGER + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.nb_ambulatoires = 1::NUMERIC + AND w_mvt.est_chambre_particuliere = '1'::bpchar + THEN 1::INTEGER + ELSE 0::INTEGER + END + + WHEN service_mode_calcul_journees = '2' THEN + CASE + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.est_jour_hospitalisation = '1'::bpchar + AND w_mvt.est_chambre_particuliere = '1'::bpchar + AND (1!=1 + OR w_mvt.nb_entrees_directes = 1::NUMERIC + OR w_mvt.heure_debut = 0::NUMERIC AND w_mvt.est_premier_mouvement_jour IS DISTINCT FROM '9' + OR w_mvt.est_premier_mouvement_jour = '1'::bpchar + ) + THEN 1::INTEGER + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.nb_ambulatoires = 1::NUMERIC + AND w_mvt.est_chambre_particuliere = '1'::bpchar + THEN 1::INTEGER + ELSE 0::INTEGER + END + ELSE + CASE + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.est_jour_hospitalisation = '1'::bpchar + AND (1!=1 + OR w_mvt.est_jour_sortie <> '1'::bpchar + OR w_mvt.est_jour_entree = '1'::bpchar AND w_mvt.est_jour_sortie = '1'::bpchar + ) + AND w_mvt.est_chambre_particuliere = '1'::bpchar + AND (1!=1 + OR w_mvt.nb_entrees_directes = 1::NUMERIC + OR w_mvt.heure_debut = 0::NUMERIC AND w_mvt.est_premier_mouvement_jour IS DISTINCT FROM '9' + OR w_mvt.est_premier_mouvement_jour = '1'::bpchar + ) + THEN 1::INTEGER + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.nb_ambulatoires = 1::NUMERIC + AND w_mvt.est_chambre_particuliere = '1'::bpchar + THEN 1::INTEGER + ELSE 0::INTEGER + END + END + , + + nb_jours_cp_f = + CASE + WHEN service_mode_calcul_journees = '1' THEN + CASE + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.est_jour_hospitalisation = '1'::bpchar + AND w_mvt.est_jour_sortie <> '1'::bpchar + AND w_mvt.est_chambre_particuliere = '1'::bpchar + AND (1!=1 + OR w_mvt.heure_fin = 240000::NUMERIC AND w_mvt.est_dernier_mouvement_jour IS DISTINCT FROM '9' + OR w_mvt.est_dernier_mouvement_jour = '1'::bpchar + OR w_mvt.nb_sorties_directes = 1::NUMERIC + ) + THEN 1::INTEGER + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.nb_ambulatoires = 1::NUMERIC + AND w_mvt.est_chambre_particuliere = '1'::bpchar + THEN 1::INTEGER + ELSE 0::INTEGER + END + WHEN service_mode_calcul_journees = '2' THEN + CASE + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.est_jour_hospitalisation = '1'::bpchar + AND w_mvt.est_chambre_particuliere = '1'::bpchar + AND (1!=1 + OR w_mvt.heure_fin = 240000::NUMERIC AND w_mvt.est_dernier_mouvement_jour IS DISTINCT FROM '9' + OR w_mvt.est_dernier_mouvement_jour = '1'::bpchar + OR w_mvt.nb_sorties_directes = 1::NUMERIC + ) + THEN 1::INTEGER + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.nb_ambulatoires = 1::NUMERIC + AND w_mvt.est_chambre_particuliere = '1'::bpchar + THEN 1::INTEGER + ELSE 0::INTEGER + END + ELSE + CASE + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.est_jour_hospitalisation = '1'::bpchar + AND (1!=1 + OR w_mvt.est_jour_sortie <> '1'::bpchar + OR w_mvt.est_jour_entree = '1'::bpchar AND w_mvt.est_jour_sortie = '1'::bpchar + ) + AND w_mvt.est_chambre_particuliere = '1'::bpchar + AND (1!=1 + OR w_mvt.heure_fin = 240000::NUMERIC AND w_mvt.est_dernier_mouvement_jour IS DISTINCT FROM '9' + OR w_mvt.est_dernier_mouvement_jour = '1'::bpchar + OR w_mvt.nb_sorties_directes = 1::NUMERIC + ) + THEN 1::INTEGER + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.nb_ambulatoires = 1::NUMERIC + AND w_mvt.est_chambre_particuliere = '1'::bpchar + THEN 1::INTEGER + ELSE 0::INTEGER + END + END + , + + nb_jours_cp_12 = + CASE + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.est_jour_hospitalisation = '1'::bpchar + AND w_mvt.est_chambre_particuliere = '1'::bpchar + AND 120000::NUMERIC >= w_mvt.heure_debut + AND 120000::NUMERIC <= w_mvt.heure_fin + THEN 1::INTEGER + WHEN 1=1 + AND service_est_absence <> '1'::bpchar + AND w_mvt.nb_ambulatoires = 1::NUMERIC + AND w_mvt.est_chambre_particuliere = '1'::bpchar + AND 120000::NUMERIC >= w_mvt.heure_debut + AND 120000::NUMERIC <= w_mvt.heure_fin + THEN 1::INTEGER + WHEN service_est_absence <> '1'::bpchar AND + w_mvt.est_chambre_particuliere = '1'::bpchar AND + w_mvt.nb_entrees_directes = 1 AND + w_mvt.heure_debut > 120000 THEN 1::integer + WHEN service_est_absence <> '1'::bpchar AND + w_mvt.est_chambre_particuliere = '1'::bpchar AND + service_mode_calcul_journees = '2' AND + w_mvt.nb_sorties_directes = 1 AND + w_mvt.heure_fin < 120000 THEN 1::integer + ELSE 0::INTEGER + + END, + equivalent_malade_complet = + CASE + WHEN p_sejours.type_sejour = '1' AND est_jour_hospitalisation = '1' + THEN base.cti_division + (EXTRACT(EPOCH FROM (to_char(heure_fin,'FM000000')::time without time zone - to_char(heure_debut,'FM000000')::time without time zone))::numeric, + totseconds + ) + WHEN p_sejours.type_sejour = '2' AND nb_ambulatoires = 1 THEN 1 + WHEN p_sejours.type_sejour = '3' AND nb_externes = 1 THEN 1 + WHEN p_sejours.type_sejour = '5' AND nb_seances >= 1 THEN 1 + ELSE 0 + END + + FROM + w_lieux_etendus t_lieux, + activite.p_sejours, + w_mvt_emc, + activite.t_divers t_divers_emchcssrpsy + WHERE 1=1 + AND w_mvt.lieu_id = t_lieux.oid + AND w_mvt.no_sejour = p_sejours.no_sejour + AND w_mvt.no_sejour = w_mvt_emc.no_sejour + AND (CASE + WHEN service_type_t2a IN ('2','3') AND mode_traitement_code IN ('04','06','19','20','22') THEN to_char(date,'YYYYMMDD') + WHEN service_type_t2a IN ('2','3') AND t_divers_emchcssrpsy.valeur = '1' THEN to_char(date,'YYYYIW') + ELSE '' END) = w_mvt_emc.week + AND t_divers_emchcssrpsy.code = 'EMCHCSSRPSY'; + -- remise en place jours d'absence + IF _nb_services_absence > 0 THEN + RAISE NOTICE '%' , 'Traitement special absences (2)'; + UPDATE w_mvt SET + est_premier_mouvement_jour = '0', + est_dernier_mouvement_jour = '0' + FROM w_absences + WHERE w_absences.no_sejour = w_mvt.no_sejour AND + w_absences.date = w_mvt.date ; + END IF; + + RAISE NOTICE '%' , 'Entrees en urgence'; + + -- entrées en urgence selon etage + UPDATE w_mvt p_mouvements_sejour + SET nb_urgences = 1 + FROM w_lieux_etendus t_lieux + WHERE lieu_id = t_lieux.oid AND + etage_est_urgence = '1' AND + nb_urgences = 0 AND + (nb_entrees_directes = 1 OR + nb_ambulatoires = 1 OR + nb_externes = 1 + ) + ; + + + UPDATE activite.p_sejours + SET provenance = '5' + FROM w_mvt p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + p_mouvements_sejour.nb_urgences = 1 AND + p_sejours.provenance <> '5' + ; + + -- entrées en urgence selon dmt + UPDATE w_mvt + SET nb_urgences = 1 + FROM w_lieux_etendus t_lieux + WHERE lieu_id = t_lieux.oid AND + dmt_code = ANY(ARRAY['303', '307', '308', '401', '402', '403', '404', '405', '406', '407', '408', '409']) AND + nb_urgences <> 1 AND + ( + nb_entrees_directes = 1 OR + nb_ambulatoires = 1 OR + nb_externes = 1 + ) + ; + UPDATE w_mvt + SET nb_urgences = 1 + FROM activite.p_sejours + WHERE w_mvt.no_sejour = p_sejours.no_sejour AND + nb_urgences <> 1 AND + provenance = '5' AND + ( + nb_entrees_directes = 1 OR + nb_ambulatoires = 1 OR + nb_externes = 1) + ; + + -- Enlever les séances en hospit si paramétrage + UPDATE w_mvt + SET nb_seances = 0 + FROM activite.p_sejours + JOIN activite.t_divers ON t_divers.code = 'SEANCEHOSPIT' AND t_divers.valeur = '0' + WHERE w_mvt.no_sejour = p_sejours.no_sejour AND + type_sejour <> '5' AND + nb_seances <> 0 + ; + + -- Enlever les séances (sauf dialyse) en hospit si paramétrage + DROP TABLE IF EXISTS w_seances_all; + CREATE TEMP TABLE w_seances_all AS + SELECT p_sejours.no_sejour, date, '0'::text AS dialyse + FROM w_mvt + JOIN activite.p_sejours ON w_mvt.no_sejour = p_sejours.no_sejour + JOIN activite.t_divers ON t_divers.code = 'SEANCEHOSPIT' AND t_divers.valeur = '2' + WHERE type_sejour <> '5' AND + nb_seances <> 0 + ; + + UPDATE w_seances_all + SET dialyse = '1' + FROM activite.p_factures_lignes_h p_factures_lignes + JOIN base.t_actes ON acte_id = t_actes.oid AND t_actes.code LIKE 'JVJF%' + JOIN activite.p_factures ON p_factures_lignes.no_facture = p_factures.no_facture + WHERE p_factures.no_sejour = w_seances_all.no_sejour AND + p_factures_lignes.date_debut = w_seances_all.date + ; + + UPDATE w_seances_all + SET dialyse = '1' + FROM activite.p_factures_lignes_non_facturees_h p_factures_lignes + JOIN base.t_actes ON acte_id = t_actes.oid AND t_actes.code LIKE 'JVJF%' + JOIN activite.p_factures ON p_factures_lignes.no_facture = p_factures.no_facture + WHERE p_factures.no_sejour = w_seances_all.no_sejour AND + p_factures_lignes.date_debut = w_seances_all.date + ; + + UPDATE w_seances_all + SET dialyse = '1' + FROM activite.p_factures_lignes_c p_factures_lignes + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND (t_prestations.code LIKE 'D0%' OR t_prestations.code LIKE 'D1%' ) + JOIN activite.p_factures ON p_factures_lignes.no_facture = p_factures.no_facture + WHERE p_factures.no_sejour = w_seances_all.no_sejour AND + p_factures_lignes.date_debut = w_seances_all.date + ; + + UPDATE w_seances_all + SET dialyse = '1' + FROM activite.p_factures_lignes_non_facturees_c p_factures_lignes + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND (t_prestations.code LIKE 'D0%' OR t_prestations.code LIKE 'D1%' ) + JOIN activite.p_factures ON p_factures_lignes.no_facture = p_factures.no_facture + WHERE p_factures.no_sejour = w_seances_all.no_sejour AND + p_factures_lignes.date_debut = w_seances_all.date + ; + + UPDATE w_mvt + SET nb_seances = 0 + FROM w_seances_all + WHERE w_mvt.no_sejour = w_seances_all.no_sejour AND + w_mvt.date = w_seances_all.date AND + dialyse = '0' + ; + + -- Nb jours des sortis pour calcul DMS + UPDATE w_mvt + SET nb_jour_sejour_sorti = subview.nb_jour_sejour_sorti + FROM + (SELECT no_sejour, + SUM(nb_jours_f) AS nb_jour_sejour_sorti, + MAX(CASE WHEN nb_sorties_directes > 0 THEN date ELSE NULL END) AS date, + MAX(CASE WHEN nb_sorties_directes > 0 THEN heure_fin ELSE NULL END) AS heure_fin + FROM w_mvt + WHERE est_mouvement_previsionnel <> '1' + GROUP BY 1 + HAVING SUM(nb_sorties_directes) > 0 + ) subview + WHERE w_mvt.no_sejour = subview.no_sejour AND + w_mvt.date = subview.date AND + w_mvt.heure_fin = subview.heure_fin AND + nb_sorties_directes > 0 + ; + + UPDATE w_mvt + SET nb_jour_sejour_sorti = nb_ambulatoires + WHERE est_mouvement_previsionnel <> '1' AND + nb_ambulatoires <> 0 + ; + + UPDATE w_mvt + SET nb_jour_sejour_sorti = nb_seances + FROM activite.p_sejours + WHERE w_mvt.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + est_mouvement_previsionnel <> '1' AND + nb_seances <> 0 + ; + + -- Distinction des types de séances + UPDATE w_mvt p_mouvements_sejour + SET nb_seances_dialyse = nb_seances + FROM activite.p_sejours + JOIN base.t_ghm ON ghm_id = t_ghm.oid + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + nb_seances <> 0 AND + t_ghm.code = ANY(Array['28Z01Z','28Z02Z','28Z03Z','28Z04Z','28Z05Z','28Z06Z']) AND + nb_seances_dialyse IS DISTINCT FROM nb_seances + ; + + UPDATE w_mvt p_mouvements_sejour + SET nb_seances_chimio = nb_seances + FROM activite.p_sejours + JOIN base.t_ghm ON ghm_id = t_ghm.oid + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + nb_seances <> 0 AND + t_ghm.code = ANY(Array['28Z07Z','28Z17Z']) AND + nb_seances_dialyse IS DISTINCT FROM nb_seances + ; + + UPDATE w_mvt p_mouvements_sejour + SET nb_seances_chimio = nb_seances + FROM activite.p_sejours + JOIN base.t_ghs ON ghs_id = t_ghs.oid + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + nb_seances <> 0 AND + t_ghs.code = ANY(Array[9606]) AND + nb_seances_chimio = 0 + ; + + DROP TABLE IF EXISTS w_seances_hospit_fac; + CREATE TEMP TABLE w_seances_hospit_fac AS + SELECT p_factures.no_sejour + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_sejours.type_sejour <> '5' AND + t_prestations.code = ANY(Array['D09','D11','D15','D16','DTP']) + GROUP BY 1 + ; + + UPDATE w_mvt p_mouvements_sejour + SET nb_seances_dialyse = nb_seances + WHERE nb_seances <> 0 AND + nb_seances_dialyse IS DISTINCT FROM nb_seances AND + no_sejour IN (SELECT no_sejour FROM w_seances_hospit_fac) + ; + + DROP TABLE IF EXISTS w_seances_hospit_nfac; + CREATE TEMP TABLE w_seances_hospit_nfac AS + SELECT p_factures.no_sejour + FROM activite.p_factures_lignes_non_facturees_c p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_sejours.type_sejour <> '5' AND + t_prestations.code = ANY(Array['D09','D11','D15','D16','DTP']) + GROUP BY 1 + ; + + UPDATE w_mvt p_mouvements_sejour + SET nb_seances_dialyse = nb_seances + WHERE nb_seances <> 0 AND + nb_seances_dialyse IS DISTINCT FROM nb_seances AND + no_sejour IN (SELECT no_sejour FROM w_seances_hospit_nfac) + ; + + DROP TABLE IF EXISTS w_seances_dialyse_dmt; + CREATE TEMP TABLE w_seances_dialyse_dmt AS + SELECT no_sejour + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + JOIN base.t_dmt ON dmt_id = t_dmt.oid + WHERE nb_seances_autre > 0 AND + t_dmt.texte ILIKE '%dialyse%' + GROUP BY 1 + ; + + UPDATE w_mvt p_mouvements_sejour + SET nb_seances_dialyse = nb_seances + WHERE nb_seances <> 0 AND + nb_seances_dialyse IS DISTINCT FROM nb_seances AND + no_sejour IN (SELECT no_sejour FROM w_seances_dialyse_dmt) + ; + + UPDATE w_mvt p_mouvements_sejour + SET nb_seances_autre = nb_seances - nb_seances_dialyse - nb_seances_chimio + WHERE nb_seances <> 0 AND + nb_seances_autre IS DISTINCT FROM (nb_seances - nb_seances_dialyse - nb_seances_chimio) + ; + + UPDATE w_mvt p_mouvements_sejour SET + nb_preadmission_validee = 1, + nb_preadmission_validee_j1 = subview.preadmission_j1, + nb_preadmission_validee_j2 = subview.preadmission_j2 + FROM + ( + SELECT p_sejours_preadmission.no_sejour, + p_mouvements_sejour.date, + preadmission_j1, + preadmission_j2 + FROM activite.p_sejours_preadmission + JOIN activite.p_sejours on p_sejours_preadmission.no_sejour = p_sejours.no_sejour + JOIN w_mvt p_mouvements_sejour on + p_sejours_preadmission.no_sejour = p_mouvements_sejour.no_sejour AND + date(p_sejours_preadmission.date_entree) = p_mouvements_sejour.date AND + ( + nb_entrees_directes = 1 OR + nb_ambulatoires = 1 OR + nb_externes = 1 OR + nb_seances > 0 + ) + WHERE date_validation_preadmission IS NOT NULL AND + code_prevu = '0' + ) subview + WHERE p_mouvements_sejour.no_sejour = subview.no_sejour AND + p_mouvements_sejour.date = subview.date AND + ( + nb_entrees_directes = 1 OR + nb_ambulatoires = 1 OR + nb_externes = 1 OR + nb_seances > 0 + ) + ; + + -- Enlever les journées pour les bébés (type séjour 6 - MEDSPHERE, HM) + UPDATE w_mvt p_mouvements_sejour + SET + nb_ambulatoires = 0, + nb_chambres_particulieres = 0, + nb_entrees_directes = 0, + nb_entrees_mutation_activite = 0, + nb_entrees_mutation_etage = 0, + nb_entrees_mutation_service = 0, + nb_entrees_mutation_unite_medicale = 0, + nb_entrees_mutations = 0, + nb_externes = 0, + nb_jour_sejour_sorti = 0, + nb_jours_12 = 0, + nb_jours_cp_12 = 0, + nb_jours_cp_d = 0, + nb_jours_cp_f = 0, + nb_jours_d = 0, + nb_jours_f = 0, + nb_jours_js_inclus = 0, + nb_jours_js_non_inclus = 0, + nb_jours_prorata = 0, + nb_passage_externe = 0, + nb_seances = 0, + nb_seances_autre = 0, + nb_seances_chimio = 0, + nb_seances_dans_taux = 0, + nb_seances_dialyse = 0, + nb_sorties_directes = 0, + nb_sorties_mutation_activite = 0, + nb_sorties_mutation_etage = 0, + nb_sorties_mutation_service = 0, + nb_sorties_mutation_unite_medicale = 0, + nb_sorties_mutations = 0, + nb_urgences = 0 + FROM activite.p_sejours + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + p_sejours.type_sejour IN ('6') + ; + + RAISE NOTICE '%' , 'Décomposition par type pmsi'; + + --Décomposition par type_pmsi et type_sejour + DROP TABLE IF EXISTS w_mvt_pmsi; + CREATE TEMP TABLE w_mvt_pmsi AS + SELECT w_mvt.*, + p_sejours.type_pmsi, + p_sejours.mode_traitement_id , + p_sejours.type_sejour, + p_sejours.forme_activite_id + FROM w_mvt + JOIN activite.p_sejours ON p_sejours.no_sejour = w_mvt.no_sejour + JOIN w_lieux_etendus ON w_lieux_etendus.oid = w_mvt.lieu_id; + + + -- MAJ MCO hospi + UPDATE activite.p_sejours + SET type_hospi_pmsi_id = 11 + FROM w_mvt_pmsi + WHERE 1=1 + AND p_sejours.no_sejour = w_mvt_pmsi.no_sejour + AND w_mvt_pmsi.type_pmsi = 1 AND w_mvt_pmsi.type_sejour = 1; + + -- MAJ MCO ambu + UPDATE activite.p_sejours + SET type_hospi_pmsi_id = 12 + FROM w_mvt_pmsi + WHERE 1=1 + AND p_sejours.no_sejour = w_mvt_pmsi.no_sejour + AND w_mvt_pmsi.type_pmsi = 1 AND w_mvt_pmsi.type_sejour = 2; + + -- MAJ MCO seances + UPDATE activite.p_sejours + SET type_hospi_pmsi_id = 15 + FROM w_mvt_pmsi + WHERE 1=1 + AND p_sejours.no_sejour = w_mvt_pmsi.no_sejour + AND w_mvt_pmsi.type_pmsi = 1 AND w_mvt_pmsi.type_sejour = 5; + + + -- MAJ SSR hospitalisation complète + UPDATE activite.p_sejours + SET type_hospi_pmsi_id = 21 + FROM w_mvt_pmsi + WHERE 1=1 + AND p_sejours.no_sejour = w_mvt_pmsi.no_sejour + AND w_mvt_pmsi.type_pmsi = 2 AND w_mvt_pmsi.type_sejour = 1; + + -- MAJ SSR hospitalisation partiel ou HDJ + UPDATE activite.p_sejours + SET type_hospi_pmsi_id = 22 + FROM w_mvt_pmsi + WHERE 1=1 + AND p_sejours.no_sejour = w_mvt_pmsi.no_sejour + AND w_mvt_pmsi.type_pmsi = 2 AND w_mvt_pmsi.type_sejour = 2; + + -- MAJ SSR Autres + UPDATE activite.p_sejours + SET type_hospi_pmsi_id = 24 + FROM w_mvt_pmsi + WHERE 1=1 + AND p_sejours.no_sejour = w_mvt_pmsi.no_sejour + AND w_mvt_pmsi.type_pmsi = 2 AND w_mvt_pmsi.type_sejour not in ('1','2'); + + -- MAJ SSR Autres + UPDATE activite.p_sejours + SET type_hospi_pmsi_id = 24 + FROM w_mvt_pmsi + WHERE 1=1 + AND p_sejours.no_sejour = w_mvt_pmsi.no_sejour + AND w_mvt_pmsi.type_pmsi = 2 AND w_mvt_pmsi.type_sejour not in ('1','2'); + + -- MAJ PSY HC + UPDATE activite.p_sejours + SET type_hospi_pmsi_id = 31 + FROM w_mvt_pmsi + WHERE 1=1 + AND p_sejours.no_sejour = w_mvt_pmsi.no_sejour + AND w_mvt_pmsi.type_pmsi = 3 AND w_mvt_pmsi.type_sejour = 1; + + -- MAJ PSY HP (HDJ) + UPDATE activite.p_sejours + SET type_hospi_pmsi_id = 32 + FROM w_mvt_pmsi + WHERE 1=1 + AND p_sejours.no_sejour = w_mvt_pmsi.no_sejour + AND w_mvt_pmsi.type_pmsi = 3 AND w_mvt_pmsi.type_sejour = 2; + + -- MAJ PSY Autres + UPDATE activite.p_sejours + SET type_hospi_pmsi_id = 33 + FROM w_mvt_pmsi + WHERE 1=1 + AND p_sejours.no_sejour = w_mvt_pmsi.no_sejour + AND w_mvt_pmsi.type_pmsi = 3 AND w_mvt_pmsi.type_sejour not in ('1','2'); + + -- MAJ HAD Hospi + UPDATE activite.p_sejours + SET type_hospi_pmsi_id = 41 + FROM w_mvt_pmsi + WHERE 1=1 + AND p_sejours.no_sejour = w_mvt_pmsi.no_sejour + AND w_mvt_pmsi.type_pmsi = 4 AND w_mvt_pmsi.type_sejour = 1; + + -- MAJ Externes + UPDATE activite.p_sejours + SET type_hospi_pmsi_id = 30 + FROM w_mvt_pmsi + WHERE 1=1 + AND p_sejours.no_sejour = w_mvt_pmsi.no_sejour + AND w_mvt_pmsi.type_sejour = 3; + + RAISE NOTICE '%' , 'sequence de changement du lieu'; + + with clustering as ( + select + sejour_id, + lieu_id, + date, + case when lag(lieu_id) over w = coalesce(lieu_id) then null else true end as new_cluster + from w_mvt + window w as (partition by sejour_id order by date, nb_jours_js_non_inclus) + ) + ,assigned_clustering as ( + select + sejour_id, + lieu_id, + date, + count(new_cluster) over (order by sejour_id, date rows unbounded preceding) as cluster_id + from clustering) + UPDATE w_mvt + SET sequences = assigned_clustering.cluster_id + FROM assigned_clustering + WHERE w_mvt.sejour_id = assigned_clustering.sejour_id + AND w_mvt.lieu_id = assigned_clustering.lieu_id + AND w_mvt.date = assigned_clustering.date + ; + + -- Réécriture des données dans la table de production + RAISE NOTICE '%' , 'Ecriture des donnees dans la table de production'; + TRUNCATE activite.p_mouvements_sejour; + + INSERT INTO activite.p_mouvements_sejour + SELECT * FROM w_mvt; + + -- Activation index + RAISE NOTICE '%' , 'Reactivation index'; + PERFORM base.cti_stash_pop_table_indexes('activite.p_mouvements_sejour'); + + ANALYZE activite.p_mouvements_sejour; + + RETURN 'OK' ; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_cegi_signe_reglement~nu,bia,nua.yaml b/db/schema2/functions/cti_cegi_signe_reglement~nu,bia,nua.yaml new file mode 100644 index 0000000..4985f1d --- /dev/null +++ b/db/schema2/functions/cti_cegi_signe_reglement~nu,bia,nua.yaml @@ -0,0 +1,248 @@ +return: 'numeric[]' +lang: plpgsql +parameters: + p0: + type: numeric + name: montant_fact + p1: + type: 'bigint[]' + name: oid_array + p2: + type: 'numeric[]' + name: montant_reglement_array +strict: STRICT +src: | + DECLARE + i integer; + i1 integer; + i2 integer; + i3 integer; + l integer; + n integer; + new_montant_fact numeric; + new_montant_reglement_array numeric[500][3]; + signe_array_1 numeric[]; + signe_array_2 numeric[]; + signe_array_3 numeric[]; + BEGIN + i = 1; + l = split_part(split_part(split_part(array_dims(oid_array),':',2),'[',1),']',1)::int; + FOR i IN 1..l LOOP + signe_array_1[i] = 1; + signe_array_2[i] = 1; + signe_array_3[i] = 1; + END LOOP; + FOR i1 IN 1..l LOOP + signe_array_1[l - i1 + 1] = 0 - signe_array_1[l - i1 + 1]; + new_montant_fact = 0; + new_montant_reglement_array = array[array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0]]; + n = 0; + FOR i IN 1..l LOOP + IF signe_array_1[i] * signe_array_2[i] * signe_array_3[i] <> 1 THEN + n = n + 1; + new_montant_reglement_array[n][1] = oid_array[i]::numeric; + new_montant_reglement_array[n][2] = montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END IF; + new_montant_fact = new_montant_fact + montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END LOOP; + + IF new_montant_fact = montant_fact THEN + return new_montant_reglement_array; + END IF; + FOR i2 IN 1..l LOOP + signe_array_2[l - i2 + 1] = 0 - signe_array_2[l - i2 + 1]; + new_montant_fact = 0; + new_montant_reglement_array = array[array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0]]; + n = 0; + FOR i IN 1..l LOOP + IF signe_array_1[i] * signe_array_2[i] * signe_array_3[i] <> 1 THEN + n = n + 1; + new_montant_reglement_array[n][1] = oid_array[i]::numeric; + new_montant_reglement_array[n][2] = montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END IF; + new_montant_fact = new_montant_fact + montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END LOOP; + + IF new_montant_fact = montant_fact THEN + return new_montant_reglement_array; + END IF; + + FOR i3 IN 1..l LOOP + signe_array_2[l - i3 + 1] = 0 - signe_array_2[l - i3 + 1]; + new_montant_fact = 0; + new_montant_reglement_array = array[array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0]]; + n = 0; + FOR i IN 1..l LOOP + IF signe_array_1[i] * signe_array_2[i] * signe_array_3[i] <> 1 THEN + n = n + 1; + new_montant_reglement_array[n][1] = oid_array[i]::numeric; + new_montant_reglement_array[n][2] = montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END IF; + new_montant_fact = new_montant_fact + montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END LOOP; + + IF new_montant_fact = montant_fact THEN + return new_montant_reglement_array; + END IF; + + END LOOP; + + END LOOP; + + END LOOP; + FOR i IN 1..l LOOP + signe_array_1[i] = 1; + signe_array_2[i] = 1; + signe_array_3[i] = 1; + END LOOP; + FOR i1 IN 1..l LOOP + FOR i IN 1..l LOOP + signe_array_1[i] = 1; + END LOOP; + signe_array_1[l - i1 + 1] = 0; + new_montant_fact = 0; + new_montant_reglement_array = array[array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0]]; + n = 0; + FOR i IN 1..l LOOP + IF signe_array_1[i] * signe_array_2[i] * signe_array_3[i] <> 1 THEN + n = n + 1; + new_montant_reglement_array[n][1] = oid_array[i]::numeric; + new_montant_reglement_array[n][2] = montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END IF; + new_montant_fact = new_montant_fact + montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END LOOP; + + IF new_montant_fact = montant_fact THEN + return new_montant_reglement_array; + END IF; + FOR i2 IN 1..l LOOP + + FOR i IN 1..l LOOP + signe_array_2[i] = 1; + END LOOP; + signe_array_2[l - i2 + 1] = 0; + new_montant_fact = 0; + new_montant_reglement_array = array[array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0]]; + n = 0; + FOR i IN 1..l LOOP + IF signe_array_1[i] * signe_array_2[i] * signe_array_3[i] <> 1 THEN + n = n + 1; + new_montant_reglement_array[n][1] = oid_array[i]::numeric; + new_montant_reglement_array[n][2] = montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END IF; + new_montant_fact = new_montant_fact + montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END LOOP; + + IF new_montant_fact = montant_fact THEN + return new_montant_reglement_array; + END IF; + + FOR i3 IN 1..l LOOP + FOR i IN 1..l LOOP + signe_array_3[i] = 1; + END LOOP; + signe_array_3[l - i3 + 1] = 0; + new_montant_fact = 0; + new_montant_reglement_array = array[array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0]]; + n = 0; + FOR i IN 1..l LOOP + IF signe_array_1[i] * signe_array_2[i] * signe_array_3[i] <> 1 THEN + n = n + 1; + new_montant_reglement_array[n][1] = oid_array[i]::numeric; + new_montant_reglement_array[n][2] = montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END IF; + new_montant_fact = new_montant_fact + montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END LOOP; + + IF new_montant_fact = montant_fact THEN + return new_montant_reglement_array; + END IF; + + END LOOP; + + END LOOP; + + END LOOP; + FOR i IN 1..l LOOP + signe_array_1[i] = 1; + signe_array_2[i] = 1; + signe_array_3[i] = 1; + END LOOP; + FOR i1 IN 1..l LOOP + signe_array_1[l - i1 + 1] = 0 - signe_array_1[l - i1 + 1]; + new_montant_fact = 0; + new_montant_reglement_array = array[array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0]]; + n = 0; + FOR i IN 1..l LOOP + IF signe_array_1[i] * signe_array_2[i] * signe_array_3[i] <> 1 THEN + n = n + 1; + new_montant_reglement_array[n][1] = oid_array[i]::numeric; + new_montant_reglement_array[n][2] = montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END IF; + new_montant_fact = new_montant_fact + montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END LOOP; + + IF new_montant_fact = 0 THEN + return new_montant_reglement_array; + END IF; + FOR i2 IN 1..l LOOP + signe_array_2[l - i2 + 1] = 0 - signe_array_2[l - i2 + 1]; + new_montant_fact = 0; + new_montant_reglement_array = array[array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0]]; + n = 0; + FOR i IN 1..l LOOP + IF signe_array_1[i] * signe_array_2[i] * signe_array_3[i] <> 1 THEN + n = n + 1; + new_montant_reglement_array[n][1] = oid_array[i]::numeric; + new_montant_reglement_array[n][2] = montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END IF; + new_montant_fact = new_montant_fact + montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END LOOP; + + IF new_montant_fact = 0 THEN + return new_montant_reglement_array; + END IF; + + FOR i3 IN 1..l LOOP + signe_array_2[l - i3 + 1] = 0 - signe_array_2[l - i3 + 1]; + new_montant_fact = 0; + new_montant_reglement_array = array[array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0],array[0,0], + array[0,0]]; + n = 0; + FOR i IN 1..l LOOP + IF signe_array_1[i] * signe_array_2[i] * signe_array_3[i] <> 1 THEN + n = n + 1; + new_montant_reglement_array[n][1] = oid_array[i]::numeric; + new_montant_reglement_array[n][2] = montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END IF; + new_montant_fact = new_montant_fact + montant_reglement_array[i] * signe_array_1[i] * signe_array_2[i] * signe_array_3[i]; + END LOOP; + + IF new_montant_fact = 0 THEN + return new_montant_reglement_array; + END IF; + + END LOOP; + + END LOOP; + + END LOOP; + return null; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_execute_compte_produit_analytique_rule.yaml b/db/schema2/functions/cti_execute_compte_produit_analytique_rule.yaml new file mode 100644 index 0000000..a5d6bcd --- /dev/null +++ b/db/schema2/functions/cti_execute_compte_produit_analytique_rule.yaml @@ -0,0 +1,502 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + _module_pmsimco TEXT; + _with_acte TEXT; + BEGIN + + RAISE NOTICE '%' , 'Initialisation'; + + IF (SELECT count(*) FROM activite.t_compte_produit_analytique_rule) = 0 THEN + RETURN 'OK. Aucune regle'; + END IF; + + RAISE NOTICE '%' , 'Application des regles'; + + -- pmsi mco ? + _module_pmsimco = '0'; + IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 'p_rss') THEN + IF (SELECT count(*) + FROM activite.t_compte_produit_analytique_rule + WHERE + COALESCE(liste_diagnostic_principal,'') <> '' OR + COALESCE(liste_diagnostic_relie,'') <> '' OR + COALESCE(liste_diagnostic_associe,'') <> '') > 1 THEN + _module_pmsimco = '1'; + RAISE NOTICE '%' , 'Application des regles. Avec PMSI MCO'; + END IF; + END IF; + + -- Rubriques ? + _with_acte = '0'; + IF (SELECT count(*) + FROM activite.t_compte_produit_analytique_rule + WHERE COALESCE(liste_acte,'') <> '' + ) > 0 THEN + _with_acte = '1'; + END IF; + + -- Sejours et RSS à Traiter + + RAISE NOTICE '%' , 'Application des regles. Identification des sejours'; + DROP SEQUENCE IF EXISTS w_factures_sequence; + CREATE SEQUENCE w_factures_sequence; + + DROP TABLE IF EXISTS w_factures; + CREATE TEMP TABLE w_factures AS + SELECT + nextval('w_factures_sequence'::regclass) AS oid, + COALESCE(t_finess.oid,0) AS finess_id, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour AS no_sejour, + p_factures.no_facture AS no_facture, + 0::bigint AS diagnostic_principal_id, + 0::bigint AS diagnostic_relie_id, + NULL::bigint[] AS diagnostic_associe_liste_rule_id, + NULL::bigint[] AS acte_liste_rule_id, + p_sejours.ghm_id AS ghm_id, + medecin_sejour_id, + COALESCE(t_medecins_base.specialite_id,0) AS specialite_sejour_id, + p_sejours.type_sejour, + p_sejours.lieu_sortie_id, + t_lieux.unite_fonctionnelle_id AS unite_fonctionnelle_sortie_id, + t_lieux.service_facturation_id AS service_facturation_sortie_id, + t_lits.etage_id AS etage_sortie_id, + t_lieux.activite_id AS activite_sortie + FROM activite.p_sejours + JOIN activite.p_factures ON p_sejours.no_sejour = p_factures.no_sejour + JOIN activite.t_lieux ON p_sejours.lieu_sortie_id = t_lieux.oid + JOIN activite.t_lits ON lit_id =t_lits.oid + LEFT JOIN activite.t_medecins_administratifs ON medecin_sejour_id = t_medecins_administratifs.oid + LEFT JOIN base.t_medecins t_medecins_base ON t_medecins_administratifs.medecin_id = t_medecins_base.oid + LEFT JOIN base.t_finess ON p_sejours.finess = t_finess.code + ; + + + UPDATE w_factures + SET finess_id = (SELECT MAX(finess_id) FROM w_factures WHERE finess_id <> 0) + WHERE finess_id = 0 AND (SELECT MAX(finess_id) FROM w_factures WHERE finess_id <> 0) <> 0; + UPDATE w_factures + SET finess_id = (SELECT MAX(oid) FROM base.t_finess) + WHERE finess_id = 0; + CREATE INDEX w_factures_i0 ON w_factures USING btree (oid); + CREATE INDEX w_factures_i1 ON w_factures USING btree (sejour_id); + CREATE INDEX w_factures_i2 ON w_factures USING btree (no_sejour); + CREATE INDEX w_factures_i3 ON w_factures USING btree (no_facture); + + ANALYSE w_factures + ; + + + + + DROP TABLE IF EXISTS w_factures_encours; + CREATE TEMP TABLE w_factures_encours AS + SELECT + nextval('w_factures_sequence'::regclass) AS oid, + COALESCE(t_finess.oid,0) AS finess_id, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour AS no_sejour, + p_factures_encours.no_facture AS no_facture, + 0::bigint AS diagnostic_principal_id, + 0::bigint AS diagnostic_relie_id, + NULL::bigint[] AS diagnostic_associe_liste_rule_id, + NULL::bigint[] AS acte_liste_rule_id, + p_factures_encours.ghm_id AS ghm_id, + p_sejours.medecin_sejour_id, + COALESCE(t_medecins_base.specialite_id,0) AS specialite_sejour_id, + p_factures_encours.type_sejour, + p_factures_encours.lieu_sortie_id, + t_lieux.unite_fonctionnelle_id AS unite_fonctionnelle_sortie_id, + t_lieux.service_facturation_id AS service_facturation_sortie_id, + t_lits.etage_id AS etage_sortie_id, + t_lieux.activite_id AS activite_sortie + FROM activite.p_sejours + JOIN activite.p_factures_encours ON p_sejours.no_sejour = p_factures_encours.no_sejour + JOIN activite.t_lieux ON p_factures_encours.lieu_sortie_id = t_lieux.oid + JOIN activite.t_lits ON lit_id = t_lits.oid + LEFT JOIN activite.t_medecins_administratifs ON p_sejours.medecin_sejour_id = t_medecins_administratifs.oid + LEFT JOIN base.t_medecins t_medecins_base ON t_medecins_administratifs.medecin_id = t_medecins_base.oid + LEFT JOIN base.t_finess ON p_sejours.finess = t_finess.code + ; + + + UPDATE w_factures_encours + SET finess_id = (SELECT MAX(finess_id) FROM w_factures WHERE finess_id <> 0) + WHERE finess_id = 0 AND (SELECT MAX(finess_id) FROM w_factures WHERE finess_id <> 0) <> 0; + UPDATE w_factures_encours + SET finess_id = (SELECT MAX(oid) FROM base.t_finess) + WHERE finess_id = 0; + CREATE INDEX w_factures_encours_i0 ON w_factures_encours USING btree (oid); + CREATE INDEX w_factures_encours_i1 ON w_factures_encours USING btree (sejour_id); + CREATE INDEX w_factures_encours_i2 ON w_factures_encours USING btree (no_sejour); + CREATE INDEX w_factures_encours_i3 ON w_factures_encours USING btree (no_facture); + + ANALYSE w_factures_encours + ; + + -- Traduction des règles en oid + RAISE NOTICE '%' , 'Application des regles. Traduction en oid'; + DROP TABLE IF EXISTS w_execute_compte_produit_analytique_rule; + CREATE TEMP TABLE w_execute_compte_produit_analytique_rule AS + SELECT + t_compte_produit_analytique_rule.oid, + compte_produit_analytique_id, + CASE WHEN priorite <> 0 THEN priorite WHEN liste_diagnostic_principal <> '' THEN 90000 ELSE 999999 END AS priorite, + CASE WHEN liste_finess <> '' THEN '1' ELSE '0' END AS a_liste_finess, + string_to_array(translate(liste_finess,'*,','% '),' ') AS liste_finess, + NULL::bigint[] AS liste_finess_id , + CASE WHEN liste_diagnostic_principal <> '' THEN '1' ELSE '0' END AS a_liste_diagnostic_principal, + string_to_array(translate(liste_diagnostic_principal,'*,','% '),' ') AS liste_diagnostic_principal, + NULL::bigint[] AS liste_diagnostic_principal_id , + CASE WHEN liste_diagnostic_relie <> '' THEN '1' ELSE '0' END AS a_liste_diagnostic_relie, + string_to_array(translate(liste_diagnostic_relie,'*,','% '),' ') AS liste_diagnostic_relie, + NULL::bigint[] AS liste_diagnostic_relie_id , + CASE WHEN liste_diagnostic_associe <> '' THEN '1' ELSE '0' END AS a_liste_diagnostic_associe, + string_to_array(translate(liste_diagnostic_associe,'*,','% '),' ') AS liste_diagnostic_associe, + NULL::bigint[] AS liste_diagnostic_associe_id , + CASE WHEN liste_acte <> '' THEN '1' ELSE '0' END AS a_liste_acte, + string_to_array(translate(liste_acte,'*,','% '),' ') AS liste_acte, + NULL::bigint[] AS liste_acte_base_id , + CASE WHEN liste_ghm <> '' THEN '1' ELSE '0' END AS a_liste_ghm, + string_to_array(translate(liste_ghm,'*,','% '),' ') AS liste_ghm, + NULL::bigint[] AS liste_ghm_id, + liste_ghm AS liste_ghm_origine, + CASE WHEN liste_sauf_ghm <> '' THEN '1' ELSE '0' END AS a_liste_sauf_ghm, + string_to_array(translate(liste_sauf_ghm,'*,','% '),' ') AS liste_sauf_ghm, + NULL::bigint[] AS liste_sauf_ghm_id , + liste_sauf_ghm AS liste_sauf_ghm_origine, + CASE WHEN liste_type_sejour <> '' THEN '1' ELSE '0' END AS a_liste_type_sejour, + string_to_array(translate(liste_type_sejour,'*,','% '),' ') AS liste_type_sejour, + NULL::text[] AS liste_type_sejour_id , + CASE WHEN liste_unite_fonctionnelle <> '' THEN '1' ELSE '0' END AS a_liste_unite_fonctionnelle, + string_to_array(translate(liste_unite_fonctionnelle,'*,','% '),' ') AS liste_unite_fonctionnelle, + NULL::bigint[] AS liste_unite_fonctionnelle_id , + CASE WHEN liste_service <> '' THEN '1' ELSE '0' END AS a_liste_service, + string_to_array(translate(liste_service,'*,','% '),' ') AS liste_service, + NULL::bigint[] AS liste_service_id , + CASE WHEN liste_etage <> '' THEN '1' ELSE '0' END AS a_liste_etage, + string_to_array(translate(liste_etage,'*,','% '),' ') AS liste_etage, + NULL::bigint[] AS liste_etage_id , + CASE WHEN liste_activite <> '' THEN '1' ELSE '0' END AS a_liste_activite, + string_to_array(translate(liste_activite,'*,','% '),' ') AS liste_activite, + NULL::bigint[] AS liste_activite_id , + CASE WHEN liste_medecin <> '' THEN '1' ELSE '0' END AS a_liste_medecin, + string_to_array(CASE WHEN liste_medecin NOT LIKE '%**%' THEN translate(liste_medecin,'*,','% ') ELSE liste_medecin END,' ') AS liste_medecin, + NULL::bigint[] AS liste_medecin_activite_id , + CASE WHEN liste_specialite <> '' THEN '1' ELSE '0' END AS a_liste_specialite, + string_to_array(translate(liste_specialite,'*,','% '),' ') AS liste_specialite, + NULL::bigint[] AS liste_specialite_activite_id , + CASE WHEN liste_compte_produit <> '' THEN '1' ELSE '0' END AS a_liste_compte_produit, + string_to_array(translate(liste_compte_produit,'*,','% '),' ') AS liste_compte_produit, + NULL::bigint[] AS liste_compte_produit_id, + CASE WHEN liste_rubrique <> '' THEN '1' ELSE '0' END AS a_liste_rubrique, + string_to_array(translate(liste_rubrique,'*,','% '),' ') AS liste_rubrique, + NULL::bigint[] AS liste_rubrique_id, + CASE WHEN liste_prestation <> '' THEN '1' ELSE '0' END AS a_liste_prestation, + string_to_array(translate(liste_prestation,'*,','% '),' ') AS liste_prestation, + NULL::bigint[] AS liste_prestation_id + FROM activite.t_compte_produit_analytique_rule + JOIN activite.t_compte ON compte_produit_analytique_id = t_compte.oid + ORDER BY priorite, compte_produit_analytique_id; + + + + UPDATE w_execute_compte_produit_analytique_rule + SET liste_finess_id = (SELECT base.cti_group_array3(oid) FROM base.t_finess WHERE code LIKE ANY (liste_finess)) + WHERE a_liste_finess = '1'; + + IF _module_pmsimco = '1' THEN + UPDATE w_execute_compte_produit_analytique_rule + SET liste_diagnostic_principal_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_diagnostics WHERE code LIKE ANY (liste_diagnostic_principal)) + WHERE a_liste_diagnostic_principal = '1'; + UPDATE w_execute_compte_produit_analytique_rule + SET liste_diagnostic_relie_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_diagnostics WHERE code LIKE ANY (liste_diagnostic_relie)) + WHERE a_liste_diagnostic_relie = '1'; + UPDATE w_execute_compte_produit_analytique_rule + SET liste_diagnostic_associe_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_diagnostics WHERE code LIKE ANY (liste_diagnostic_associe)) + WHERE a_liste_diagnostic_associe = '1'; + END IF; + + + DROP TABLE IF EXISTS w_execute_compte_produit_analytique_rule_actes_base; + CREATE TEMP TABLE w_execute_compte_produit_analytique_rule_actes_base AS + SELECT t_actes.oid AS rule_acte_id, w_execute_compte_produit_analytique_rule.oid AS rule_id + FROM base.t_actes + JOIN w_execute_compte_produit_analytique_rule ON code LIKE ANY (liste_acte); + CREATE INDEX w_execute_compte_produit_analytique_rule_actes_base_i1 ON w_execute_compte_produit_analytique_rule_actes_base USING btree (rule_acte_id); + + UPDATE w_execute_compte_produit_analytique_rule + SET liste_acte_base_id = (SELECT base.cti_group_array3(oid) FROM base.t_actes WHERE code LIKE ANY (liste_acte)) + WHERE a_liste_acte = '1' + ; + + UPDATE w_execute_compte_produit_analytique_rule + SET liste_ghm_id = (SELECT base.cti_group_array3(oid) FROM base.t_ghm WHERE code LIKE ANY (liste_ghm)) + WHERE a_liste_ghm = '1' + ; + UPDATE w_execute_compte_produit_analytique_rule + SET liste_ghm_id = + array_cat(liste_ghm_id, + (SELECT base.cti_group_array3(t_ghm.oid) FROM base.t_ghm JOIN base.t_cas ON cas_id = t_cas.oid WHERE '[CAS:'||t_cas.code||']' LIKE ANY (liste_ghm)) + ) + WHERE a_liste_ghm = '1' AND + liste_ghm_origine LIKE '%[CAS:%' + ; + + UPDATE w_execute_compte_produit_analytique_rule + SET liste_sauf_ghm_id = (SELECT base.cti_group_array3(oid) FROM base.t_ghm WHERE code LIKE ANY (liste_sauf_ghm)) + WHERE a_liste_sauf_ghm = '1' + ; + + UPDATE w_execute_compte_produit_analytique_rule + SET liste_medecin_activite_id = ( + SELECT base.cti_group_array3(t_medecins_administratifs.oid) + FROM activite.t_medecins_administratifs + LEFT JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid + WHERE ( + t_medecins_administratifs.oid <> 0 AND + t_medecins_administratifs.code <> '' AND + t_medecins_administratifs.code LIKE ANY (liste_medecin) AND liste_medecin[1] <> '(R)' + ) OR + ( + t_medecins_administratifs.oid IN + ( + SELECT + to_id + FROM activite.t_classes + JOIN activite.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid + JOIN activite.t_classes_sections_elements ON t_classes_sections_elements.section_id = t_classes_sections.oid + WHERE '[CLASSE:'||t_classes.code||':'||t_classes_sections.code||']' = ANY(liste_medecin) + ) + ) OR + ( + t_medecins.oid <> 0 AND + t_medecins.code <> '' AND + t_medecins.code LIKE ANY (liste_medecin) AND liste_medecin[1] = '(R)' + ) + ) + WHERE a_liste_medecin = '1' + ; + + UPDATE w_execute_compte_produit_analytique_rule + SET liste_specialite_activite_id = (SELECT base.cti_group_array3(oid) FROM base.t_specialites_medecin WHERE oid <> 0 AND code LIKE ANY (liste_specialite)) + WHERE a_liste_specialite = '1' + ; + UPDATE w_execute_compte_produit_analytique_rule + SET liste_type_sejour_id = (SELECT base.cti_group_array3(code) FROM activite.t_type_sejour WHERE oid <> 0 AND code <> '' AND code LIKE ANY (liste_type_sejour)) + WHERE a_liste_type_sejour = '1' + ; + UPDATE w_execute_compte_produit_analytique_rule + SET liste_unite_fonctionnelle_id = (SELECT base.cti_group_array3(oid) FROM activite.t_unites_fonctionnelles WHERE oid <> 0 AND code LIKE ANY (liste_unite_fonctionnelle)) + WHERE a_liste_unite_fonctionnelle = '1' + ; + UPDATE w_execute_compte_produit_analytique_rule + SET liste_service_id = (SELECT base.cti_group_array3(oid) FROM activite.t_services_facturation WHERE oid <> 0 AND code LIKE ANY (liste_service)) + WHERE a_liste_service = '1' + ; + UPDATE w_execute_compte_produit_analytique_rule + SET liste_etage_id = (SELECT base.cti_group_array3(oid) FROM activite.t_etages WHERE oid <> 0 AND code LIKE ANY (liste_etage)) + WHERE a_liste_etage = '1' + ; + UPDATE w_execute_compte_produit_analytique_rule + SET liste_activite_id = (SELECT base.cti_group_array3(oid) FROM activite.t_activites WHERE oid <> 0 AND code LIKE ANY (liste_activite)) + WHERE a_liste_activite = '1' + ; + UPDATE w_execute_compte_produit_analytique_rule + SET liste_rubrique_id = (SELECT base.cti_group_array3(oid) FROM activite.t_rubriques_facturation WHERE oid <> 0 AND code LIKE ANY (liste_rubrique)) + WHERE a_liste_rubrique = '1' + ; + UPDATE w_execute_compte_produit_analytique_rule + SET liste_prestation_id = (SELECT base.cti_group_array3(oid) FROM activite.t_prestations WHERE oid <> 0 AND code LIKE ANY (liste_prestation)) + WHERE a_liste_prestation = '1' + ; + UPDATE w_execute_compte_produit_analytique_rule + SET liste_compte_produit_id = (SELECT base.cti_group_array3(oid) FROM activite.t_compte WHERE oid <> 0 AND code LIKE ANY (liste_compte_produit)) + WHERE a_liste_compte_produit = '1' + ; + + + + -- Association cles aux actes + RAISE NOTICE '%' , 'Application des regles. Traitement des actes'; + DROP TABLE IF EXISTS w_factures_actes; + IF _with_acte = '1' THEN + CREATE TEMP TABLE w_factures_actes AS + SELECT + no_facture, rule_id + FROM activite.p_factures_lignes_h + JOIN w_execute_compte_produit_analytique_rule_actes_base ON p_factures_lignes_h.acte_id = rule_acte_id + WHERE activite_ccam <> '4' + UNION + SELECT + no_facture, rule_id + FROM activite.p_factures_lignes_non_facturees_h + JOIN w_execute_compte_produit_analytique_rule_actes_base ON p_factures_lignes_non_facturees_h.acte_id = rule_acte_id + WHERE activite_ccam <> '4'; + ELSE + CREATE TEMP TABLE w_factures_actes (no_facture text, rule_id bigint); + END IF; + CREATE INDEX w_factures_actes_i1 ON w_factures_actes USING btree (no_facture); + + DROP TABLE IF EXISTS w_compte_acte; + CREATE TEMP TABLE w_compte_acte AS + SELECT oid, base.cti_group_array3(acte_rule_id) AS acte_liste_rule_id + FROM + ( + SELECT + w_factures.oid, rule_id AS acte_rule_id + FROM w_factures_actes + JOIN activite.p_factures ON w_factures_actes.no_facture = p_factures.no_facture + JOIN w_factures ON p_factures.no_sejour = w_factures.no_sejour + + ) subview + GROUP BY 1; + + ALTER TABLE w_compte_acte ADD CONSTRAINT w_compte_acte_pkey PRIMARY KEY(oid); + UPDATE w_factures + SET acte_liste_rule_id = w_compte_acte.acte_liste_rule_id + FROM w_compte_acte + WHERE w_compte_acte.oid = w_factures.oid; + + -- Diagnostics + IF _module_pmsimco = '1' THEN + RAISE NOTICE '%' , 'Application des regles. Traitement des diagnostics'; + DROP TABLE IF EXISTS w_compte_diagnostic; + CREATE TEMP TABLE w_compte_diagnostic AS + SELECT + w_factures.oid, base.cti_group_array3(w_execute_compte_produit_analytique_rule.oid) AS diagnostic_associe_liste_rule_id + FROM pmsi.p_rss_diagnostics + JOIN w_execute_compte_produit_analytique_rule ON type_diagnostic_rss IN ('DA', 'DS') AND diagnostic_id = ANY (liste_diagnostic_associe_id) + JOIN w_factures ON p_rss_diagnostics.rss_id = w_factures.rss_id + WHERE a_liste_diagnostic_associe <> '0' + GROUP BY 1; + ALTER TABLE w_compte_diagnostic ADD CONSTRAINT w_compte_diagnostic_pkey PRIMARY KEY(oid); + UPDATE w_factures + SET diagnostic_associe_liste_rule_id = w_compte_diagnostic.diagnostic_associe_liste_rule_id + FROM w_compte_diagnostic + WHERE w_compte_diagnostic.oid = w_factures.oid; + END IF; + + + + RAISE NOTICE '%' , 'Application des regles. Validation des regles'; + + -- Réplication dans tables de prod + RAISE NOTICE '%' , 'Application des regles. Validation des regles. p_factures_lignes_c'; + DROP TABLE IF EXISTS w_factures_lignes_c_compte; + CREATE TEMP TABLE w_factures_lignes_c_compte AS + SELECT p_factures_lignes_c.no_facture, + p_factures_lignes_c.CTID AS fromCTID, + COALESCE( + (MIN(ARRAY[w_execute_compte_produit_analytique_rule.priorite,w_execute_compte_produit_analytique_rule.compte_produit_analytique_id]))[2], + MAX(p_factures_lignes_c.compte_produit_id)) AS compte_produit_analytique_id + FROM activite.p_factures_lignes_c + JOIN activite.t_lieux ON p_factures_lignes_c.lieu_id = t_lieux.oid + JOIN activite.t_lits ON lit_id = t_lits.oid + JOIN w_factures ON p_factures_lignes_c.no_facture = w_factures.no_facture + LEFT JOIN w_execute_compte_produit_analytique_rule ON + (a_liste_finess = '0' OR finess_id = ANY (liste_finess_id)) AND + (a_liste_type_sejour = '0' OR type_sejour = ANY (liste_type_sejour_id)) AND + (a_liste_unite_fonctionnelle = '0' OR t_lieux.unite_fonctionnelle_id = ANY (liste_unite_fonctionnelle_id)) AND + (a_liste_service = '0' OR t_lieux.service_facturation_id = ANY (liste_service_id)) AND + (a_liste_etage = '0' OR t_lits.etage_id = ANY (liste_etage_id)) AND + (a_liste_activite = '0' OR t_lieux.activite_id = ANY (liste_activite_id)) AND + (a_liste_medecin = '0' OR medecin_sejour_id = ANY (liste_medecin_activite_id)) AND + (a_liste_specialite = '0' OR specialite_sejour_id = ANY (liste_specialite_activite_id)) AND + (a_liste_ghm = '0' OR ghm_id = ANY (liste_ghm_id)) AND + (a_liste_diagnostic_principal = '0' OR diagnostic_principal_id = ANY (liste_diagnostic_principal_id)) AND + (a_liste_diagnostic_relie = '0' OR diagnostic_relie_id = ANY (liste_diagnostic_relie_id)) AND + (a_liste_diagnostic_associe = '0' OR w_execute_compte_produit_analytique_rule.oid = ANY(diagnostic_associe_liste_rule_id)) AND + (a_liste_acte = '0' OR w_execute_compte_produit_analytique_rule.oid = ANY(acte_liste_rule_id)) AND + (a_liste_compte_produit = '0' OR compte_produit_id = ANY (liste_compte_produit_id)) + GROUP BY 1,2 + ; + + ANALYSE w_factures_lignes_c_compte + ; + + CREATE INDEX w_factures_lignes_c_compte_i1 ON w_factures_lignes_c_compte USING btree (no_facture) + ; + + UPDATE activite.p_factures_lignes_c + SET compte_produit_analytique_id = w_factures_lignes_c_compte.compte_produit_analytique_id + FROM w_factures_lignes_c_compte + WHERE p_factures_lignes_c.no_facture = w_factures_lignes_c_compte.no_facture AND + p_factures_lignes_c.CTID = w_factures_lignes_c_compte.fromCTID AND + p_factures_lignes_c.compte_produit_analytique_id IS DISTINCT FROM w_factures_lignes_c_compte.compte_produit_analytique_id + ; + + ANALYSE activite.p_factures_lignes_c + ; + + RAISE NOTICE '%' , 'Application des regles. Validation des poles. p_factures_encours_lignes_c'; + + DROP TABLE IF EXISTS w_factures_encours_lignes_c_compte; + CREATE TEMP TABLE w_factures_encours_lignes_c_compte AS + SELECT p_factures_encours_lignes_c.no_facture, + p_factures_encours_lignes_c.CTID AS fromCTID, + COALESCE( + (MIN(ARRAY[w_execute_compte_produit_analytique_rule.priorite,w_execute_compte_produit_analytique_rule.compte_produit_analytique_id]))[2], + MAX(p_factures_encours_lignes_c.compte_produit_id)) AS compte_produit_analytique_id + FROM activite.p_factures_encours_lignes_c + JOIN activite.t_lieux ON p_factures_encours_lignes_c.lieu_id = t_lieux.oid + JOIN activite.t_lits ON lit_id = t_lits.oid + JOIN w_factures_encours ON p_factures_encours_lignes_c.no_facture = w_factures_encours.no_facture + LEFT JOIN w_execute_compte_produit_analytique_rule ON + (a_liste_finess = '0' OR finess_id = ANY (liste_finess_id)) AND + (a_liste_type_sejour = '0' OR type_sejour = ANY (liste_type_sejour_id)) AND + (a_liste_unite_fonctionnelle = '0' OR t_lieux.unite_fonctionnelle_id = ANY (liste_unite_fonctionnelle_id)) AND + (a_liste_service = '0' OR t_lieux.service_facturation_id = ANY (liste_service_id)) AND + (a_liste_etage = '0' OR t_lits.etage_id = ANY (liste_etage_id)) AND + (a_liste_activite = '0' OR t_lieux.activite_id = ANY (liste_activite_id)) AND + (a_liste_medecin = '0' OR medecin_sejour_id = ANY (liste_medecin_activite_id)) AND + (a_liste_specialite = '0' OR specialite_sejour_id = ANY (liste_specialite_activite_id)) AND + (a_liste_ghm = '0' OR ghm_id = ANY (liste_ghm_id)) AND + (a_liste_diagnostic_principal = '0' OR diagnostic_principal_id = ANY (liste_diagnostic_principal_id)) AND + (a_liste_diagnostic_relie = '0' OR diagnostic_relie_id = ANY (liste_diagnostic_relie_id)) AND + (a_liste_diagnostic_associe = '0' OR w_execute_compte_produit_analytique_rule.oid = ANY(diagnostic_associe_liste_rule_id)) AND + (a_liste_acte = '0' OR w_execute_compte_produit_analytique_rule.oid = ANY(acte_liste_rule_id)) AND + (a_liste_compte_produit = '0' OR compte_produit_id = ANY (liste_compte_produit_id)) + WHERE p_factures_encours_lignes_c.compte_produit_analytique_id = 0 + GROUP BY 1,2 + ; + + ANALYSE w_factures_encours_lignes_c_compte + ; + + CREATE INDEX w_factures_encours_lignes_c_compte_i1 ON w_factures_encours_lignes_c_compte USING btree (no_facture) + ; + + UPDATE activite.p_factures_encours_lignes_c + SET compte_produit_analytique_id = w_factures_encours_lignes_c_compte.compte_produit_analytique_id + FROM w_factures_encours_lignes_c_compte + WHERE p_factures_encours_lignes_c.no_facture = w_factures_encours_lignes_c_compte.no_facture AND + p_factures_encours_lignes_c.CTID = w_factures_encours_lignes_c_compte.fromCTID AND + p_factures_encours_lignes_c.compte_produit_analytique_id IS DISTINCT FROM w_factures_encours_lignes_c_compte.compte_produit_analytique_id + ; + + ANALYSE activite.p_factures_encours_lignes_c + ; + + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'compte', compte_produit_analytique_id + FROM activite.p_factures_lignes_c + WHERE compte_produit_analytique_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'compte') + GROUP BY 2; + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'compte', compte_produit_analytique_id + FROM activite.p_factures_encours_lignes_c + WHERE compte_produit_analytique_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'compte') + GROUP BY 2; + + + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_filiere_soin_execute_rule.yaml b/db/schema2/functions/cti_filiere_soin_execute_rule.yaml new file mode 100644 index 0000000..f191b8f --- /dev/null +++ b/db/schema2/functions/cti_filiere_soin_execute_rule.yaml @@ -0,0 +1,740 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + _module_pmsimco TEXT; + BEGIN + + RAISE NOTICE '%' , 'Initialisation filiere'; + -- Contenu table + INSERT INTO activite.t_filiere_soin (oid, code, texte, texte_court) + SELECT 0, '**', 'Non renseignée', 'Non renseignée' + WHERE 0 NOT IN (SELECT oid FROM activite.t_filiere_soin); + + IF (SELECT count(*) FROM activite.t_filiere_soin WHERE oid > 0) = 0 THEN + RETURN 'OK. Aucune filiere'; + END IF; + + + + RAISE NOTICE '%' , 'Application des regles'; + + -- pmsi mco ? + IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 'p_rss') THEN + _module_pmsimco = '1'; + RAISE NOTICE '%' , 'Application des regles. Avec PMSI MCO'; + ELSE + _module_pmsimco = '0'; + END IF; + + + -- Sejours et RSS à Traiter + + RAISE NOTICE '%' , 'Application des regles. Identification des sejours'; + DROP SEQUENCE IF EXISTS w_sejours_rss_sequence; + CREATE SEQUENCE w_sejours_rss_sequence; + DROP TABLE IF EXISTS w_sejours_rss; + + IF _module_pmsimco = '1' THEN + -- si pmsi mco + CREATE TEMP TABLE w_sejours_rss AS + SELECT + nextval('w_sejours_rss_sequence'::regclass) AS oid, + COALESCE(t_finess.oid,0) AS finess_id, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour AS no_sejour, + COALESCE(p_rss.oid,0) AS rss_id, + diagnostic_principal_id, + diagnostic_relie_id, + NULL::bigint[] AS diagnostic_associe_liste_rule_id, + NULL::bigint[] AS acte_liste_rule_id, + NULL::bigint[] AS prestation_liste_rule_id, + NULL::bigint[] AS rubrique_liste_rule_id, + p_rss.ghm_id AS ghm_pmsi_id, + p_sejours.ghm_id AS ghm_activite_id, + COALESCE(medecin_rss_id,0) AS medecin_rss_id, + medecin_sejour_id, + COALESCE(t_medecins_base.specialite_id,0) AS specialite_sejour_id, + p_sejours.type_sejour, + t_lieux.unite_fonctionnelle_id, + t_lieux.service_facturation_id, + t_lits.etage_id, + t_lieux.unite_fonctionnelle_id AS unite_fonctionnelle_entree_id, + t_lieux.service_facturation_id AS service_facturation_entree_id, + t_lits.etage_id AS etage_entree_id, + t_lieux.activite_id, + 0::bigint AS filiere_soin_id, + 0::bigint AS filiere_soin_priorite + FROM activite.p_sejours + JOIN activite.t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite.t_lits ON t_lieux.lit_id = t_lits.oid + LEFT JOIN pmsi.p_rss ON no_sejour_administratif = no_sejour AND p_sejours.date_sortie = p_rss.date_sortie AND p_rss.etat = '' + LEFT JOIN pmsi.t_medecins t_medecins_pmsi ON medecin_rss_id = t_medecins_pmsi.oid + LEFT JOIN activite.t_medecins_administratifs ON medecin_sejour_id = t_medecins_administratifs.oid + LEFT JOIN base.t_medecins t_medecins_base ON t_medecins_administratifs.medecin_id = t_medecins_base.oid + LEFT JOIN base.t_finess ON p_sejours.finess = t_finess.code + ; + INSERT INTO w_sejours_rss + SELECT + nextval('w_sejours_rss_sequence'::regclass) AS oid, + COALESCE(t_finess.oid,0) AS finess_id, + 0 AS sejour_id, + '' AS no_sejour, + p_rss.oid AS rss_id, + diagnostic_principal_id, + diagnostic_relie_id, + NULL::bigint[] AS diagnostic_associe_liste_rule_id, + NULL::bigint[] AS acte_liste_rule_id, + NULL::bigint[] AS prestation_liste_rule_id, + NULL::bigint[] AS rubrique_liste_rule_id, + p_rss.ghm_id AS ghm_pmsi_id, + 0 AS ghm_activite_id, + medecin_rss_id, + 0::bigint AS medecin_sejour_id, + COALESCE(t_medecins_base.specialite_id,0) AS specialite_sejour_id, + ''::text AS type_sejour, + 0::bigint AS unite_fonctionnelle_id, + 0::bigint AS service_facturation_id, + 0::bigint AS etage_id, + 0::bigint AS unite_fonctionnelle_entree_id, + 0::bigint AS service_facturation_entree_id, + 0::bigint AS etage_entree_id, + 0::bigint AS activite_id, + 0::bigint AS filiere_soin_id, + 0::bigint AS filiere_soin_priorite + FROM pmsi.p_rss + LEFT JOIN pmsi.t_medecins t_medecins_pmsi ON medecin_rss_id = t_medecins_pmsi.oid + LEFT JOIN base.t_medecins t_medecins_base ON t_medecins_pmsi.medecin_id = t_medecins_base.oid + LEFT JOIN base.t_finess ON p_rss.finess = t_finess.code + WHERE p_rss.oid NOT IN (SELECT rss_id FROM w_sejours_rss); + + ELSE + -- si pas pmsi mco + CREATE TEMP TABLE w_sejours_rss AS + SELECT + nextval('w_sejours_rss_sequence'::regclass) AS oid, + COALESCE(t_finess.oid,0) AS finess_id, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour AS no_sejour, + 0 AS rss_id, + 0::bigint AS diagnostic_principal_id, + 0::bigint AS diagnostic_relie_id, + NULL::bigint[] AS diagnostic_associe_liste_rule_id, + NULL::bigint[] AS acte_liste_rule_id, + NULL::bigint[] AS prestation_liste_rule_id, + NULL::bigint[] AS rubrique_liste_rule_id, + 0::bigint AS ghm_pmsi_id, + p_sejours.ghm_id AS ghm_activite_id, + 0 AS medecin_rss_id, + medecin_sejour_id, + COALESCE(t_medecins_base.specialite_id,0) AS specialite_sejour_id, + p_sejours.type_sejour, + t_lieux.unite_fonctionnelle_id, + t_lieux.service_facturation_id, + t_lits.etage_id, + t_lieux.unite_fonctionnelle_id AS unite_fonctionnelle_entree_id, + t_lieux.service_facturation_id AS service_facturation_entree_id, + t_lits.etage_id AS etage_entree_id, + t_lieux.activite_id, + 0::bigint AS filiere_soin_id, + 0::bigint AS filiere_soin_priorite + FROM activite.p_sejours + JOIN activite.t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite.t_lits ON t_lieux.lit_id = t_lits.oid + LEFT JOIN base.t_finess ON p_sejours.finess = t_finess.code + LEFT JOIN activite.t_medecins_administratifs ON medecin_sejour_id = t_medecins_administratifs.oid + LEFT JOIN base.t_medecins t_medecins_base ON t_medecins_administratifs.medecin_id = t_medecins_base.oid; + END IF; + + -- Unites d'entrées + UPDATE w_sejours_rss SET + unite_fonctionnelle_entree_id = t_lieux.unite_fonctionnelle_id, + service_facturation_entree_id = t_lieux.service_facturation_id, + etage_entree_id = t_lits.etage_id + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux ON p_mouvements_sejour.lieu_id = t_lieux.oid + JOIN activite.t_lits ON t_lieux.lit_id = t_lits.oid + WHERE w_sejours_rss.no_sejour = p_mouvements_sejour.no_sejour AND nb_entrees_directes = 1 AND + ( + t_lieux.unite_fonctionnelle_id <> unite_fonctionnelle_entree_id OR + t_lieux.service_facturation_id <> service_facturation_entree_id OR + t_lits.etage_id <> etage_entree_id + ) + ; + + + -- GHM sur services non MCO + -- Verrouillé pour l'instant (on verra par la suite) + -- UPDATE w_sejours_rss SET + -- ghm_pmsi_id = 0, + -- ghm_activite_id = 0 + -- FROM activite.t_services_facturation + -- WHERE service_facturation_id = t_services_facturation .oid AND + -- type_t2a <> '1' AND + -- service_facturation_id <> 0 AND + -- (ghm_pmsi_id > 0 OR + -- ghm_activite_id > 0) + -- ; + + -- + UPDATE w_sejours_rss SET + medecin_rss_id = 0 + WHERE medecin_sejour_id <> 0; + UPDATE w_sejours_rss + SET finess_id = (SELECT MAX(finess_id) FROM w_sejours_rss WHERE finess_id <> 0) + WHERE finess_id = 0 AND (SELECT MAX(finess_id) FROM w_sejours_rss WHERE finess_id <> 0) <> 0; + UPDATE w_sejours_rss + SET finess_id = (SELECT MAX(oid) FROM base.t_finess) + WHERE finess_id = 0; + CREATE INDEX w_sejours_rss_i0 ON w_sejours_rss USING btree (oid); + CREATE INDEX w_sejours_rss_i1 ON w_sejours_rss USING btree (rss_id); + CREATE INDEX w_sejours_rss_i2 ON w_sejours_rss USING btree (sejour_id); + CREATE INDEX w_sejours_rss_i3 ON w_sejours_rss USING btree (no_sejour); + + -- Traduction des règles en oid + RAISE NOTICE '%' , 'Application des regles. Traduction en oid'; + DROP TABLE IF EXISTS w_filiere_soin_rule; + CREATE TEMP TABLE w_filiere_soin_rule AS + SELECT + t_filiere_soin_rule.oid, + filiere_soin_id, + CASE WHEN priorite <> 0 THEN priorite WHEN liste_diagnostic_principal <> '' THEN 90000 ELSE 999999 END AS priorite, + CASE WHEN liste_finess <> '' THEN '1' ELSE '0' END AS a_liste_finess, + string_to_array(translate(liste_finess,'*,','% '),' ') AS liste_finess, + NULL::bigint[] AS liste_finess_id , + CASE WHEN liste_diagnostic_principal <> '' THEN '1' ELSE '0' END AS a_liste_diagnostic_principal, + string_to_array(translate(liste_diagnostic_principal,'*,','% '),' ') AS liste_diagnostic_principal, + NULL::bigint[] AS liste_diagnostic_principal_id , + CASE WHEN liste_diagnostic_relie <> '' THEN '1' ELSE '0' END AS a_liste_diagnostic_relie, + string_to_array(translate(liste_diagnostic_relie,'*,','% '),' ') AS liste_diagnostic_relie, + NULL::bigint[] AS liste_diagnostic_relie_id , + CASE WHEN liste_diagnostic_associe <> '' THEN '1' ELSE '0' END AS a_liste_diagnostic_associe, + string_to_array(translate(liste_diagnostic_associe,'*,','% '),' ') AS liste_diagnostic_associe, + NULL::bigint[] AS liste_diagnostic_associe_id , + CASE WHEN liste_acte <> '' THEN '1' ELSE '0' END AS a_liste_acte, + string_to_array(translate(liste_acte,'*,','% '),' ') AS liste_acte, + NULL::bigint[] AS liste_acte_pmsi_id , + NULL::bigint[] AS liste_acte_base_id , + CASE WHEN liste_ghm <> '' THEN '1' ELSE '0' END AS a_liste_ghm, + string_to_array(translate(liste_ghm,'*,','% '),' ') AS liste_ghm, + NULL::bigint[] AS liste_ghm_pmsi_id, + NULL::bigint[] AS liste_ghm_activite_id, + liste_ghm AS liste_ghm_origine, + CASE WHEN liste_sauf_ghm <> '' THEN '1' ELSE '0' END AS a_liste_sauf_ghm, + string_to_array(translate(liste_sauf_ghm,'*,','% '),' ') AS liste_sauf_ghm, + NULL::bigint[] AS liste_sauf_ghm_pmsi_id , + NULL::bigint[] AS liste_sauf_ghm_activite_id , + liste_sauf_ghm AS liste_sauf_ghm_origine, + CASE WHEN liste_type_sejour <> '' THEN '1' ELSE '0' END AS a_liste_type_sejour, + string_to_array(translate(liste_type_sejour,'*,','% '),' ') AS liste_type_sejour, + NULL::text[] AS liste_type_sejour_id , + CASE WHEN liste_unite_fonctionnelle <> '' THEN '1' ELSE '0' END AS a_liste_unite_fonctionnelle, + string_to_array(translate(liste_unite_fonctionnelle,'*,','% '),' ') AS liste_unite_fonctionnelle, + NULL::bigint[] AS liste_unite_fonctionnelle_id , + CASE WHEN liste_service <> '' THEN '1' ELSE '0' END AS a_liste_service, + string_to_array(translate(liste_service,'*,','% '),' ') AS liste_service, + NULL::bigint[] AS liste_service_id , + CASE WHEN liste_etage <> '' THEN '1' ELSE '0' END AS a_liste_etage, + string_to_array(translate(liste_etage,'*,','% '),' ') AS liste_etage, + NULL::bigint[] AS liste_etage_id , + CASE WHEN liste_unite_fonctionnelle_entree <> '' THEN '1' ELSE '0' END AS a_liste_unite_fonctionnelle_entree, + string_to_array(translate(liste_unite_fonctionnelle_entree,'*,','% '),' ') AS liste_unite_fonctionnelle_entree, + NULL::bigint[] AS liste_unite_fonctionnelle_entree_id , + CASE WHEN liste_service_entree <> '' THEN '1' ELSE '0' END AS a_liste_service_entree, + string_to_array(translate(liste_service_entree,'*,','% '),' ') AS liste_service_entree, + NULL::bigint[] AS liste_service_entree_id , + CASE WHEN liste_etage_entree <> '' THEN '1' ELSE '0' END AS a_liste_etage_entree, + string_to_array(translate(liste_etage_entree,'*,','% '),' ') AS liste_etage_entree, + NULL::bigint[] AS liste_etage_entree_id , + CASE WHEN liste_activite <> '' THEN '1' ELSE '0' END AS a_liste_activite, + string_to_array(translate(liste_activite,'*,','% '),' ') AS liste_activite, + NULL::bigint[] AS liste_activite_id , + CASE WHEN liste_medecin <> '' THEN '1' ELSE '0' END AS a_liste_medecin, + string_to_array(CASE WHEN liste_medecin NOT LIKE '%**%' THEN translate(liste_medecin,'*,','% ') ELSE liste_medecin END,' ') AS liste_medecin, + NULL::bigint[] AS liste_medecin_pmsi_id , + NULL::bigint[] AS liste_medecin_activite_id , + CASE WHEN liste_specialite <> '' THEN '1' ELSE '0' END AS a_liste_specialite, + string_to_array(translate(liste_specialite,'*,','% '),' ') AS liste_specialite, + NULL::bigint[] AS liste_specialite_activite_id , + CASE WHEN liste_rubrique <> '' THEN '1' ELSE '0' END AS a_liste_rubrique, + string_to_array(translate(liste_rubrique,'*,','% '),' ') AS liste_rubrique, + NULL::bigint[] AS liste_rubrique_id, + CASE WHEN liste_prestation <> '' THEN '1' ELSE '0' END AS a_liste_prestation, + string_to_array(translate(liste_prestation,'*,','% '),' ') AS liste_prestation, + NULL::bigint[] AS liste_prestation_id + FROM activite.t_filiere_soin_rule t_filiere_soin_rule + JOIN activite.t_filiere_soin t_filiere_soin ON filiere_soin_id = t_filiere_soin.oid + ORDER BY priorite, filiere_soin_id; + + + + UPDATE w_filiere_soin_rule + SET liste_finess_id = (SELECT base.cti_group_array3(oid) FROM base.t_finess WHERE code LIKE ANY (liste_finess)) + WHERE a_liste_finess = '1'; + + IF _module_pmsimco = '1' THEN + UPDATE w_filiere_soin_rule + SET liste_diagnostic_principal_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_diagnostics WHERE code LIKE ANY (liste_diagnostic_principal)) + WHERE a_liste_diagnostic_principal = '1'; + UPDATE w_filiere_soin_rule + SET liste_diagnostic_relie_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_diagnostics WHERE code LIKE ANY (liste_diagnostic_relie)) + WHERE a_liste_diagnostic_relie = '1'; + UPDATE w_filiere_soin_rule + SET liste_diagnostic_associe_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_diagnostics WHERE code LIKE ANY (liste_diagnostic_associe)) + WHERE a_liste_diagnostic_associe = '1'; + UPDATE w_filiere_soin_rule + SET liste_acte_pmsi_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_actes WHERE code LIKE ANY (liste_acte) AND code <> '') + WHERE a_liste_acte = '1'; + DROP TABLE IF EXISTS w_filiere_soin_rule_actes_pmsi; + CREATE TEMP TABLE w_filiere_soin_rule_actes_pmsi AS + SELECT t_actes.oid AS rule_acte_id, w_filiere_soin_rule.oid AS rule_id + FROM pmsi.t_actes + JOIN w_filiere_soin_rule ON code LIKE ANY (liste_acte); + CREATE INDEX w_filiere_soin_rule_actes_pmsi_i1 ON w_filiere_soin_rule_actes_pmsi USING btree (rule_acte_id); + END IF; + + + DROP TABLE IF EXISTS w_filiere_soin_rule_actes_base; + CREATE TEMP TABLE w_filiere_soin_rule_actes_base AS + SELECT t_actes.oid AS rule_acte_id, w_filiere_soin_rule.oid AS rule_id + FROM base.t_actes + JOIN w_filiere_soin_rule ON code LIKE ANY (liste_acte) AND code <> ''; + CREATE INDEX w_filiere_soin_rule_actes_base_i1 ON w_filiere_soin_rule_actes_base USING btree (rule_acte_id); + + DROP TABLE IF EXISTS w_filiere_soin_rule_rubriques; + CREATE TEMP TABLE w_filiere_soin_rule_rubriques AS + SELECT t_rubriques_facturation.oid AS rule_rubrique_id, w_filiere_soin_rule.oid AS rule_id + FROM activite.t_rubriques_facturation + JOIN w_filiere_soin_rule ON code LIKE ANY (liste_rubrique) AND code <> ''; + CREATE INDEX w_filiere_soin_rule_rubriques_i1 ON w_filiere_soin_rule_rubriques USING btree (rule_rubrique_id); + + DROP TABLE IF EXISTS w_filiere_soin_rule_prestations; + CREATE TEMP TABLE w_filiere_soin_rule_prestations AS + SELECT t_prestations.oid AS rule_prestation_id, w_filiere_soin_rule.oid AS rule_id + FROM activite.t_prestations + JOIN w_filiere_soin_rule ON code LIKE ANY (liste_prestation) AND code <> ''; + CREATE INDEX w_filiere_soin_rule_prestations_i1 ON w_filiere_soin_rule_prestations USING btree (rule_prestation_id); + + UPDATE w_filiere_soin_rule + SET liste_acte_base_id = (SELECT base.cti_group_array3(oid) FROM base.t_actes WHERE code LIKE ANY (liste_acte)) + WHERE a_liste_acte = '1' + ; + + IF _module_pmsimco = '1' THEN + UPDATE w_filiere_soin_rule + SET liste_ghm_pmsi_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_ghm WHERE code LIKE ANY (liste_ghm)) + WHERE a_liste_ghm = '1'; + UPDATE w_filiere_soin_rule + SET liste_ghm_pmsi_id = + array_cat(liste_ghm_pmsi_id, + (SELECT base.cti_group_array3(t_ghm.oid) FROM pmsi.t_ghm JOIN base.t_cas ON cas_id = t_cas.oid WHERE '[CAS:'||t_cas.code||']' LIKE ANY (liste_ghm)) + ) + WHERE a_liste_ghm = '1' AND + liste_ghm_origine LIKE '%[CAS:%' + ; + END IF; + + UPDATE w_filiere_soin_rule + SET liste_ghm_activite_id = (SELECT base.cti_group_array3(ghm_id) FROM activite.t_ghm_c WHERE ghm_code LIKE ANY (liste_ghm)) + WHERE a_liste_ghm = '1' + ; + UPDATE w_filiere_soin_rule + SET liste_ghm_activite_id = + array_cat(liste_ghm_activite_id, + (SELECT base.cti_group_array3(t_ghm.oid) FROM base.t_ghm JOIN base.t_cas ON cas_id = t_cas.oid WHERE '[CAS:'||t_cas.code||']' LIKE ANY (liste_ghm)) + ) + WHERE a_liste_ghm = '1' AND + liste_ghm_origine LIKE '%[CAS:%' + ; + IF _module_pmsimco = '1' THEN + UPDATE w_filiere_soin_rule + SET liste_sauf_ghm_pmsi_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_ghm WHERE code LIKE ANY (liste_sauf_ghm)) + WHERE a_liste_sauf_ghm = '1'; + END IF; + + UPDATE w_filiere_soin_rule + SET liste_sauf_ghm_activite_id = (SELECT base.cti_group_array3(ghm_id) FROM activite.t_ghm_c WHERE ghm_code LIKE ANY (liste_sauf_ghm)) + WHERE a_liste_sauf_ghm = '1' + ; + IF _module_pmsimco = '1' THEN + UPDATE w_filiere_soin_rule + SET liste_medecin_pmsi_id = ( + SELECT base.cti_group_array3(t_medecins_pmsi.oid) + FROM pmsi.t_medecins t_medecins_pmsi + LEFT JOIN base.t_medecins ON t_medecins_pmsi.medecin_reference_id = t_medecins.oid + WHERE t_medecins_pmsi.oid <> 0 AND t_medecins_pmsi.code <> '' AND t_medecins_pmsi.code LIKE ANY (liste_medecin) AND liste_medecin[1] <> '(R)' OR + t_medecins.oid <> 0 AND t_medecins.code <> '' AND t_medecins.code LIKE ANY (liste_medecin) AND liste_medecin[1] = '(R)' + ) + WHERE a_liste_medecin = '1'; + END IF; + + UPDATE w_filiere_soin_rule + SET liste_medecin_activite_id = ( + SELECT base.cti_group_array3(t_medecins_administratifs.oid) + FROM activite.t_medecins_administratifs + LEFT JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid + WHERE ( + t_medecins_administratifs.oid <> 0 AND + t_medecins_administratifs.code <> '' AND + t_medecins_administratifs.code LIKE ANY (liste_medecin) AND liste_medecin[1] <> '(R)' + ) OR + ( + t_medecins_administratifs.oid IN + ( + SELECT + to_id + FROM activite.t_classes + JOIN activite.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid + JOIN activite.t_classes_sections_elements ON t_classes_sections_elements.section_id = t_classes_sections.oid + WHERE '[CLASSE:'||t_classes.code||':'||t_classes_sections.code||']' = ANY(liste_medecin) + ) + ) OR + ( + t_medecins.oid <> 0 AND + t_medecins.code <> '' AND + t_medecins.code LIKE ANY (liste_medecin) AND liste_medecin[1] = '(R)' + ) + ) + WHERE a_liste_medecin = '1' + ; + + UPDATE w_filiere_soin_rule + SET liste_specialite_activite_id = (SELECT base.cti_group_array3(oid) FROM base.t_specialites_medecin WHERE code LIKE ANY (liste_specialite)) + WHERE a_liste_specialite = '1' + ; + UPDATE w_filiere_soin_rule + SET liste_type_sejour_id = (SELECT base.cti_group_array3(code) FROM activite.t_type_sejour WHERE code <> '' AND code LIKE ANY (liste_type_sejour)) + WHERE a_liste_type_sejour = '1' + ; + UPDATE w_filiere_soin_rule + SET liste_unite_fonctionnelle_id = (SELECT base.cti_group_array3(oid) FROM activite.t_unites_fonctionnelles WHERE code LIKE ANY (liste_unite_fonctionnelle)) + WHERE a_liste_unite_fonctionnelle = '1' + ; + UPDATE w_filiere_soin_rule + SET liste_service_id = (SELECT base.cti_group_array3(oid) FROM activite.t_services_facturation WHERE code LIKE ANY (liste_service)) + WHERE a_liste_service = '1' + ; + UPDATE w_filiere_soin_rule + SET liste_etage_id = (SELECT base.cti_group_array3(oid) FROM activite.t_etages WHERE code LIKE ANY (liste_etage)) + WHERE a_liste_etage = '1' + ; + UPDATE w_filiere_soin_rule + SET liste_unite_fonctionnelle_entree_id = (SELECT base.cti_group_array3(oid) FROM activite.t_unites_fonctionnelles WHERE code LIKE ANY (liste_unite_fonctionnelle_entree)) + WHERE a_liste_unite_fonctionnelle_entree = '1' + ; + UPDATE w_filiere_soin_rule + SET liste_service_entree_id = (SELECT base.cti_group_array3(oid) FROM activite.t_services_facturation WHERE code LIKE ANY (liste_service_entree)) + WHERE a_liste_service_entree = '1' + ; + UPDATE w_filiere_soin_rule + SET liste_etage_entree_id = (SELECT base.cti_group_array3(oid) FROM activite.t_etages WHERE code LIKE ANY (liste_etage_entree)) + WHERE a_liste_etage_entree = '1' + ; + UPDATE w_filiere_soin_rule + SET liste_activite_id = (SELECT base.cti_group_array3(oid) FROM activite.t_activites WHERE code LIKE ANY (liste_activite)) + WHERE a_liste_activite = '1' + ; + UPDATE w_filiere_soin_rule + SET liste_rubrique_id = (SELECT base.cti_group_array3(oid) FROM activite.t_rubriques_facturation WHERE code LIKE ANY (liste_rubrique)) + WHERE a_liste_rubrique = '1' + ; + UPDATE w_filiere_soin_rule + SET liste_prestation_id = (SELECT base.cti_group_array3(oid) FROM activite.t_prestations WHERE code LIKE ANY (liste_prestation)) + WHERE a_liste_prestation = '1' + ; + + + -- Association cles aux rubriques + RAISE NOTICE '%' , 'Application des regles. Traitement des rubriques'; + DROP TABLE IF EXISTS w_factures_rubriques; + CREATE TEMP TABLE w_factures_rubriques AS + SELECT + p_factures.no_sejour, rule_id + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN w_filiere_soin_rule_rubriques ON p_factures_lignes_c.rubrique_facturation_id = rule_rubrique_id + WHERE p_factures_lignes_c.montant_facture <> 0 + GROUP BY 1,2 + HAVING SUM(p_factures_lignes_c.montant_facture) > 0 + UNION + SELECT + p_factures.no_sejour, rule_id + FROM activite.p_factures_lignes_non_facturees_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_non_facturees_c.no_facture + JOIN w_filiere_soin_rule_rubriques ON p_factures_lignes_non_facturees_c.rubrique_facturation_id = rule_rubrique_id + ; + CREATE INDEX w_factures_rubriques_i1 ON w_factures_rubriques USING btree (no_sejour); + + DROP TABLE IF EXISTS w_filiere_soin_rubriques; + CREATE TEMP TABLE w_filiere_soin_rubriques AS + + SELECT oid, base.cti_group_array3(rubrique_rule_id) AS rubrique_liste_rule_id + FROM + ( + SELECT + w_sejours_rss.oid, rule_id AS rubrique_rule_id + FROM w_factures_rubriques + JOIN w_sejours_rss ON w_factures_rubriques.no_sejour = w_sejours_rss.no_sejour + ) subview + GROUP BY 1; + ALTER TABLE w_filiere_soin_rubriques ADD CONSTRAINT w_filiere_soin_rubriques_pkey PRIMARY KEY(oid); + UPDATE w_sejours_rss + SET rubrique_liste_rule_id = w_filiere_soin_rubriques.rubrique_liste_rule_id + FROM w_filiere_soin_rubriques + WHERE w_filiere_soin_rubriques.oid = w_sejours_rss.oid; + + + + -- Association cles aux prestations + RAISE NOTICE '%' , 'Application des regles. Traitement des prestations'; + DROP TABLE IF EXISTS w_factures_prestations; + CREATE TEMP TABLE w_factures_prestations AS + SELECT + p_factures.no_sejour, rule_id + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN w_filiere_soin_rule_prestations ON p_factures_lignes_c.prestation_id = rule_prestation_id + WHERE p_factures_lignes_c.montant_facture <> 0 + GROUP BY 1,2 + HAVING SUM(p_factures_lignes_c.montant_facture) > 0 + UNION + SELECT + p_factures.no_sejour, rule_id + FROM activite.p_factures_lignes_non_facturees_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_non_facturees_c.no_facture + JOIN w_filiere_soin_rule_prestations ON p_factures_lignes_non_facturees_c.prestation_id = rule_prestation_id + GROUP BY 1,2 + ; + CREATE INDEX w_factures_prestations_i1 ON w_factures_prestations USING btree (no_sejour); + + DROP TABLE IF EXISTS w_filiere_soin_prestations; + CREATE TEMP TABLE w_filiere_soin_prestations AS + + SELECT oid, base.cti_group_array3(prestation_rule_id) AS prestation_liste_rule_id + FROM + ( + SELECT + w_sejours_rss.oid, rule_id AS prestation_rule_id + FROM w_factures_prestations + JOIN w_sejours_rss ON w_factures_prestations.no_sejour = w_sejours_rss.no_sejour + ) subview + GROUP BY 1; + ALTER TABLE w_filiere_soin_prestations ADD CONSTRAINT w_filiere_soin_prestations_pkey PRIMARY KEY(oid); + UPDATE w_sejours_rss + SET prestation_liste_rule_id = w_filiere_soin_prestations.prestation_liste_rule_id + FROM w_filiere_soin_prestations + WHERE w_filiere_soin_prestations.oid = w_sejours_rss.oid; + + + -- Association cles aux actes + RAISE NOTICE '%' , 'Application des regles. Traitement des actes'; + DROP TABLE IF EXISTS w_factures_actes; + CREATE TEMP TABLE w_factures_actes AS + SELECT + no_facture, rule_id + FROM activite.p_factures_lignes_h + JOIN w_filiere_soin_rule_actes_base ON p_factures_lignes_h.acte_id = rule_acte_id + WHERE activite_ccam <> '4' + UNION + SELECT + no_facture, rule_id + FROM activite.p_factures_lignes_non_facturees_h + JOIN w_filiere_soin_rule_actes_base ON p_factures_lignes_non_facturees_h.acte_id = rule_acte_id + WHERE activite_ccam <> '4'; + CREATE INDEX w_factures_actes_i1 ON w_factures_actes USING btree (no_facture); + + DROP TABLE IF EXISTS w_filiere_soin_actes; + IF _module_pmsimco = '1' THEN + CREATE TEMP TABLE w_filiere_soin_actes AS + SELECT oid, base.cti_group_array3(acte_rule_id) AS acte_liste_rule_id + FROM + ( + SELECT + w_sejours_rss.oid, rule_id AS acte_rule_id + FROM pmsi.p_rss_actes + JOIN w_sejours_rss ON p_rss_actes.rss_id = w_sejours_rss.rss_id + JOIN w_filiere_soin_rule_actes_pmsi ON p_rss_actes.acte_id = rule_acte_id + UNION + SELECT + w_sejours_rss.oid, rule_id AS acte_rule_id + FROM w_factures_actes + JOIN activite.p_factures ON w_factures_actes.no_facture = p_factures.no_facture + JOIN w_sejours_rss ON p_factures.no_sejour = w_sejours_rss.no_sejour + + ) subview + GROUP BY 1; + ELSE + CREATE TEMP TABLE w_filiere_soin_actes AS + SELECT oid, base.cti_group_array3(acte_rule_id) AS acte_liste_rule_id + FROM + ( + SELECT + w_sejours_rss.oid, rule_id AS acte_rule_id + FROM w_factures_actes + JOIN activite.p_factures ON w_factures_actes.no_facture = p_factures.no_facture + JOIN w_sejours_rss ON p_factures.no_sejour = w_sejours_rss.no_sejour + + ) subview + GROUP BY 1; + END IF; + ALTER TABLE w_filiere_soin_actes ADD CONSTRAINT w_filiere_soin_actes_pkey PRIMARY KEY(oid); + UPDATE w_sejours_rss + SET acte_liste_rule_id = w_filiere_soin_actes.acte_liste_rule_id + FROM w_filiere_soin_actes + WHERE w_filiere_soin_actes.oid = w_sejours_rss.oid; + + -- Diagnostics + IF _module_pmsimco = '1' THEN + RAISE NOTICE '%' , 'Application des regles. Traitement des diagnostics'; + DROP TABLE IF EXISTS w_filiere_soin_diagnostics; + CREATE TEMP TABLE w_filiere_soin_diagnostics AS + SELECT + w_sejours_rss.oid, base.cti_group_array3(w_filiere_soin_rule.oid) AS diagnostic_associe_liste_rule_id + FROM pmsi.p_rss_diagnostics + JOIN w_filiere_soin_rule ON type_diagnostic_rss IN ('DA', 'DS') AND diagnostic_id = ANY (liste_diagnostic_associe_id) + JOIN w_sejours_rss ON p_rss_diagnostics.rss_id = w_sejours_rss.rss_id + WHERE a_liste_diagnostic_associe <> '0' + GROUP BY 1; + ALTER TABLE w_filiere_soin_diagnostics ADD CONSTRAINT w_filiere_soin_diagnostics_pkey PRIMARY KEY(oid); + UPDATE w_sejours_rss + SET diagnostic_associe_liste_rule_id = w_filiere_soin_diagnostics.diagnostic_associe_liste_rule_id + FROM w_filiere_soin_diagnostics + WHERE w_filiere_soin_diagnostics.oid = w_sejours_rss.oid; + END IF; + + -- Mise à jour des cles venant des données du PMSI + RAISE NOTICE '%' , 'Application des regles. Attribution des formes activite venant du pmsi'; + DROP TABLE IF EXISTS w_sejours_filiere_soin_rule; + CREATE TEMP TABLE w_sejours_filiere_soin_rule AS + SELECT w_sejours_rss.oid, + w_filiere_soin_rule.oid AS rule_id, + 'P'::text AS source, + priorite, + w_filiere_soin_rule.filiere_soin_id + FROM w_sejours_rss + JOIN w_filiere_soin_rule ON + (a_liste_finess = '0' OR finess_id = ANY (liste_finess_id)) AND + (a_liste_medecin = '0' OR medecin_rss_id = ANY (liste_medecin_pmsi_id)) AND + (a_liste_type_sejour = '0') AND + (a_liste_unite_fonctionnelle = '0') AND + (a_liste_service = '0') AND + (a_liste_etage = '0') AND + (a_liste_unite_fonctionnelle_entree = '0') AND + (a_liste_service_entree = '0') AND + (a_liste_etage_entree = '0') AND + (a_liste_activite = '0') AND + (a_liste_specialite = '0' OR specialite_sejour_id = ANY (liste_specialite_activite_id)) AND + (a_liste_diagnostic_principal = '0' OR diagnostic_principal_id = ANY (liste_diagnostic_principal_id)) AND + (a_liste_diagnostic_relie = '0' OR diagnostic_relie_id = ANY (liste_diagnostic_relie_id)) AND + (a_liste_diagnostic_associe = '0' OR w_filiere_soin_rule.oid = ANY(diagnostic_associe_liste_rule_id)) AND + (a_liste_acte = '0' OR w_filiere_soin_rule.oid = ANY(acte_liste_rule_id)) AND + (a_liste_ghm = '0' OR ghm_pmsi_id = ANY (liste_ghm_pmsi_id)) AND + (a_liste_sauf_ghm = '0' OR ghm_pmsi_id <> ALL (liste_sauf_ghm_pmsi_id)) AND + (a_liste_prestation = '0') AND + (a_liste_rubrique = '0') + WHERE w_sejours_rss.rss_id <> 0 + GROUP BY 1,2,3,4,5 + ORDER BY 1; + + -- Mise à jour des cles venant des données d'activite + RAISE NOTICE '%' , 'Application des regles. Attribution des formes activite venant de la GAP'; + INSERT INTO w_sejours_filiere_soin_rule + SELECT w_sejours_rss.oid, + w_filiere_soin_rule.oid AS rule_id, + 'A'::text AS source, + priorite, + w_filiere_soin_rule.filiere_soin_id + FROM w_sejours_rss + JOIN w_filiere_soin_rule ON + (a_liste_finess = '0' OR finess_id = ANY (liste_finess_id)) AND + (a_liste_type_sejour = '0' OR type_sejour = ANY (liste_type_sejour_id)) AND + (a_liste_unite_fonctionnelle = '0' OR unite_fonctionnelle_id = ANY (liste_unite_fonctionnelle_id)) AND + (a_liste_service = '0' OR service_facturation_id = ANY (liste_service_id)) AND + (a_liste_etage = '0' OR etage_id = ANY (liste_etage_id)) AND + (a_liste_unite_fonctionnelle_entree = '0' OR unite_fonctionnelle_entree_id = ANY (liste_unite_fonctionnelle_entree_id)) AND + (a_liste_service_entree = '0' OR service_facturation_entree_id = ANY (liste_service_entree_id)) AND + (a_liste_etage_entree = '0' OR etage_entree_id = ANY (liste_etage_entree_id)) AND + (a_liste_activite = '0' OR activite_id = ANY (liste_activite_id)) AND + (a_liste_medecin = '0' OR medecin_sejour_id = ANY (liste_medecin_activite_id)) AND + (a_liste_specialite = '0' OR specialite_sejour_id = ANY (liste_specialite_activite_id)) AND + (a_liste_diagnostic_principal = '0' OR diagnostic_principal_id = ANY (liste_diagnostic_principal_id)) AND + (a_liste_diagnostic_relie = '0' OR diagnostic_relie_id = ANY (liste_diagnostic_relie_id)) AND + (a_liste_diagnostic_associe = '0' OR w_filiere_soin_rule.oid = ANY(diagnostic_associe_liste_rule_id)) AND + (a_liste_acte = '0' OR w_filiere_soin_rule.oid = ANY(acte_liste_rule_id)) AND + (a_liste_rubrique = '0' OR w_filiere_soin_rule.oid = ANY(rubrique_liste_rule_id)) AND + (a_liste_prestation = '0' OR w_filiere_soin_rule.oid = ANY(prestation_liste_rule_id)) AND + (a_liste_ghm = '0' OR ghm_activite_id = ANY (liste_ghm_activite_id)) AND + (a_liste_sauf_ghm = '0' OR ghm_activite_id <> ALL (liste_sauf_ghm_activite_id)) + WHERE w_sejours_rss.sejour_id <> 0 + GROUP BY 1,2,3,4,5 + ORDER BY 1; + + + + + RAISE NOTICE '%' , 'Application des regles. Filiere principale'; + DROP TABLE IF EXISTS w_sejours_filiere_soin; + CREATE TEMP TABLE w_sejours_filiere_soin AS + SELECT w_sejours_filiere_soin_rule.oid, + MIN(priorite) AS filiere_soin_priorite, + ((MIN(ARRAY[to_char(priorite,'FM000000000000')||source,filiere_soin_id::text]))[2])::bigint AS filiere_soin_id + FROM w_sejours_filiere_soin_rule + GROUP BY 1 + ORDER BY 1; + + UPDATE w_sejours_rss SET + filiere_soin_id = w_sejours_filiere_soin.filiere_soin_id, + filiere_soin_priorite = w_sejours_filiere_soin.filiere_soin_priorite + FROM w_sejours_filiere_soin + WHERE w_sejours_rss.oid = w_sejours_filiere_soin.oid ; + + + + RAISE NOTICE '%' , 'Application des regles. Deductions depuis utilisation'; + + + + + RAISE NOTICE '%' , 'Application des regles. Validation des filieres'; + UPDATE activite.p_sejours + SET + filiere_soin_principale_id = w_sejours_rss.filiere_soin_id + FROM w_sejours_rss + WHERE p_sejours.oid = w_sejours_rss.sejour_id AND + p_sejours.oid <> 0 AND + ( + p_sejours.filiere_soin_principale_id IS DISTINCT FROM w_sejours_rss.filiere_soin_id + ); + + ANALYSE activite.p_sejours + ; + + TRUNCATE activite.p_sejour_filiere_soin + ; + + INSERT INTO activite.p_sejour_filiere_soin + (sejour_id, + filiere_soin_id + ) + SELECT + w_sejours_rss.oid, + COALESCE(w_sejours_filiere_soin_rule.filiere_soin_id,0) AS filiere_soin_id + FROM w_sejours_rss + LEFT JOIN w_sejours_filiere_soin_rule ON w_sejours_rss.oid = w_sejours_filiere_soin_rule.oid + GROUP BY 1,2 + ; + + ANALYSE activite.p_sejours + ; + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'filiere_soin', filiere_soin_id + FROM activite.p_sejour_filiere_soin + WHERE filiere_soin_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'filiere_soin') + GROUP BY 2; + + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_gen_0ets.yaml b/db/schema2/functions/cti_gen_0ets.yaml new file mode 100644 index 0000000..784d229 --- /dev/null +++ b/db/schema2/functions/cti_gen_0ets.yaml @@ -0,0 +1,194 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + BEGIN + + + -- Pour initialiser l'identification des factures sans montant établissement + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + '0ETS', + 'Génération ligne facture sans montant établissement', + '0', + 'Génération d''une rubrique fictive pour identifier les factures sans montant établissement. 0=Non, 1=Oui ' + WHERE '0ETS' NOT IN (SELECT code FROM activite.t_divers); + -- Mise à jour données + IF EXISTS (SELECT * + FROM activite.t_divers + WHERE t_divers.code = '0ETS' AND + t_divers.valeur = '1' + LIMIT 1) THEN + -- Codes Prestations. + INSERT INTO activite.t_prestations (code_original, code, texte, texte_court) + SELECT '*CTI_0ETS', '0ETS', 'Sans facturation établissement', 'Sans facturation établissement' + WHERE '*CTI_0ETS' NOT IN (SELECT code_original FROM activite.t_prestations WHERE code_original IS NOT NULL); + -- Codes Rubriques facturation. Attention à loid si fusion de plusieurs sources + IF NOT EXISTS (SELECT * + FROM activite.t_rubriques_facturation + WHERE t_rubriques_facturation.code_original = '*CTI_0ETS' + LIMIT 1) THEN + PERFORM + setval((sequence_schema||'.'||sequence_name)::regclass, + (SELECT (MAX(ARRAY[CASE WHEN sequence_schema = 'activite' then 0 ELSE 1 END, + nextval((sequence_schema||'.'||sequence_name)::regclass)]))[2] + FROM information_schema.sequences + WHERE sequence_name = 's_rubriques_facturation' AND + sequence_schema LIKE 'activite%' + )) + FROM information_schema.sequences + WHERE sequence_name = 's_rubriques_facturation' AND + sequence_schema LIKE 'activite%'; + + INSERT INTO activite.t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT '*CTI_0ETS', '0ETS', 'Sans facturation établissement', 'Sans facturation établissement' + WHERE '*CTI_0ETS' NOT IN (SELECT code_original FROM activite.t_rubriques_facturation WHERE code_original IS NOT NULL); + PERFORM + setval((sequence_schema||'.'||sequence_name)::regclass, + (SELECT MAX(oid) FROM activite.t_rubriques_facturation WHERE oid < 200000000)) + FROM information_schema.sequences + WHERE sequence_name = 's_rubriques_facturation' AND + sequence_schema LIKE 'activite%'; + END IF; + + RAISE NOTICE '%' , 'RAZ precedente generation'; + + -- Ajout des lignes + DELETE FROM activite.p_factures_lignes_c + WHERE origine_facturation_id IN (8,9); + + + -- Identification dates facturées par séjour + RAISE NOTICE '%' , 'Identification dates factures'; + DROP TABLE IF EXISTS w_factures_lignes_c_date; + CREATE TEMP TABLE w_factures_lignes_c_date AS + SELECT + p_factures.no_sejour, + p_factures_lignes_c.date_fin, + MIN(p_factures_lignes_c.date_debut) AS date_debut, + SUM(p_factures_lignes_c.montant_facture + p_factures_lignes_c.montant_encours) AS montant + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE type_sejour <> '9' AND + p_sejours.est_sans_facturation <> '1' + GROUP BY 1,2 + ; + + + -- Identification dates de mouvements + RAISE NOTICE '%' , 'Identification dates mouvements'; + DROP TABLE IF EXISTS w_mouvements_sejour_date; + CREATE TEMP TABLE w_mouvements_sejour_date AS + SELECT + p_mouvements_sejour.no_sejour, + p_mouvements_sejour.date, + p_factures_reference.no_facture_reference, + MAX(p_sejours.type_sejour) AS type_sejour, + MAX(p_sejours.code_sorti) AS code_sorti, + MAX(p_factures_reference.facture_reference_id) AS facture_reference_id, + MAX(p_factures_reference.date_debut_facture) AS date_debut_facture, + MAX(p_factures_reference.date_fin_facture) AS date_fin_facture, + MAX(p_factures_reference.code_facture) AS code_facture, + (MAX(Array[heure_fin,lieu_id]))[2]::bigint AS lieu_id + FROM activite.p_mouvements_sejour + JOIN activite.p_sejours ON p_mouvements_sejour.no_sejour = p_sejours.no_sejour + JOIN activite.p_factures_reference ON + p_mouvements_sejour.no_sejour = p_factures_reference.no_sejour AND + p_mouvements_sejour.date BETWEEN p_factures_reference.date_debut_facture AND p_factures_reference.date_fin_facture + WHERE p_sejours.type_sejour <> '9' AND + p_sejours.est_sans_facturation <> '1' AND + p_mouvements_sejour.date <= now() AND + p_factures_reference.no_facture_reference <> '' + GROUP BY 1,2,3 + ; + + ANALYSE w_mouvements_sejour_date; + ANALYSE w_factures_lignes_c_date; + + RAISE NOTICE '%' , 'Identification dates manquantes'; + DROP TABLE IF EXISTS w_factures_lignes_0ets; + CREATE TEMP TABLE w_factures_lignes_0ets AS + SELECT + w_mouvements_sejour_date.no_facture_reference, + w_mouvements_sejour_date.type_sejour, + w_mouvements_sejour_date.code_sorti, + w_mouvements_sejour_date.facture_reference_id, + w_mouvements_sejour_date.date, + 0 AS nb_rubrique, + 0 AS nb_prestation, + t_rubriques_facturation.oid AS rubrique_facturation_id, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + 100 AS taux_0, + w_mouvements_sejour_date.lieu_id, + 9::bigint AS origine_facturation_id, + CASE WHEN w_mouvements_sejour_date.code_facture = '1' THEN 0.0001 ELSE 0 END AS montant_facture, + CASE WHEN w_mouvements_sejour_date.code_facture <> '1' THEN 0.0001 ELSE 0 END AS montant_encours + FROM w_mouvements_sejour_date + LEFT JOIN w_factures_lignes_c_date ON + w_mouvements_sejour_date.no_sejour = w_factures_lignes_c_date.no_sejour AND + w_mouvements_sejour_date.date BETWEEN w_factures_lignes_c_date.date_debut AND w_factures_lignes_c_date.date_fin + JOIN activite.t_rubriques_facturation ON t_rubriques_facturation.code_original = '*CTI_0ETS' + JOIN activite.t_prestations ON t_prestations.code_original = '*CTI_0ETS' + WHERE w_factures_lignes_c_date.no_sejour IS NULL + ; + + -- Si la date de fin seule n'est pas facturée, ne pas générer + DELETE FROM w_factures_lignes_0ets + WHERE no_facture_reference IN + ( + SELECT w_factures_lignes_0ets.no_facture_reference + FROM w_factures_lignes_0ets + JOIN activite.p_factures_reference ON w_factures_lignes_0ets.no_facture_reference = p_factures_reference.no_facture_reference + WHERE p_factures_reference.date_fin_facture > p_factures_reference.date_debut_facture + GROUP BY 1 + having count(*) = SUM(CASE WHEN w_factures_lignes_0ets.date = p_factures_reference.date_fin_facture THEN 1 ELSE 0 END) + ) + ; + + + + + -- Ajout des lignes + RAISE NOTICE '%' , 'Ajout dates manquantes'; + INSERT INTO activite.p_factures_lignes_c( + no_facture, + facture_id, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + taux_0, + lieu_id, + origine_facturation_id, + montant_facture, + montant_encours + ) + SELECT + w_factures_lignes_0ets.no_facture_reference, + w_factures_lignes_0ets.facture_reference_id, + w_factures_lignes_0ets.date, + w_factures_lignes_0ets.date, + w_factures_lignes_0ets.nb_rubrique, + w_factures_lignes_0ets.nb_prestation, + w_factures_lignes_0ets.rubrique_facturation_id, + w_factures_lignes_0ets.rubrique_comptabilisation_id, + w_factures_lignes_0ets.prestation_id, + w_factures_lignes_0ets.taux_0, + w_factures_lignes_0ets.lieu_id, + w_factures_lignes_0ets.origine_facturation_id, + montant_facture, + montant_encours + FROM w_factures_lignes_0ets + + ; + + END IF; + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_gen_dma_ssr.yaml b/db/schema2/functions/cti_gen_dma_ssr.yaml new file mode 100644 index 0000000..0a6e482 --- /dev/null +++ b/db/schema2/functions/cti_gen_dma_ssr.yaml @@ -0,0 +1,577 @@ +return: text +lang: plpgsql +src: | + DECLARE + _module_pmsissr TEXT; + result TEXT; + BEGIN + IF NOT EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsissr' AND tablename = 'p_ssr') THEN + return 'Pas de SSR'; + END IF; + + IF NOT EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsissr' AND tablename = 'p_file_valo_ssr') THEN + return 'Pas de visual valo installé'; + END IF; + + -- Génération + + -- Création de la prestation DMA + INSERT INTO activite.t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT 'DMASSR', 'DMASSR', 'DMA SSR', 'DMA SSR' + WHERE 'DMASSR' NOT IN (SELECT code_original FROM activite.t_rubriques_facturation WHERE code_original IS NOT NULL); + + + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT 'DMASSR', 'DMASSR', 'DMA SSR', 'DMA SSR' + WHERE 'DMASSR' NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL); + + -- Création des listes + INSERT INTO activite.t_listes (code, texte, is_cti, contenu_non_replicable_ailleurs, utilisateur_createur, chapitre, table_id) + SELECT + 'DMAP_'||subview.code AS code, + subview.texte, + '1' AS is_cti, + '1' AS contenu_non_replicable_ailleurs, + 'cti'::text AS utilisateur_createur, + 'DMA SSR' AS chapitre, + t_listes_tables.oid AS table_id + FROM + ( + SELECT 'MFS'::text AS code, 'Prestations impactées par la minoration frais de séjour ' AS texte + UNION + SELECT 'MFSM'::text AS code, 'Prestations négatives de la minoration frais de séjour ' AS texte + + ) subview + JOIN activite.t_listes_tables ON t_listes_tables.code = 'PRESTA_C' + WHERE 'DMAP_'||subview.code NOT IN (SELECT code FROm activite.t_listes WHERE code IS NOT NULL) + ; + + INSERT INTO activite.t_listes_contenu (liste_id, to_id) + SELECT t_listes.oid, t_prestations.oid + FROM activite.t_prestations + JOIN activite.t_listes ON t_listes.code = 'DMAP_MFS' + LEFT JOIN activite.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid + WHERE t_prestations.code IN ('PJ', 'FJ', 'ENT', 'SSM', 'PHJ', 'PMS', 'SHO', 'SNS', 'FS', 'TSG') AND + t_listes_contenu.liste_id IS NULL + ; + + INSERT INTO activite.t_listes_contenu (liste_id, to_id) + SELECT t_listes.oid, t_prestations.oid + FROM activite.t_prestations + JOIN activite.t_listes ON t_listes.code = 'DMAP_MFSM' + LEFT JOIN activite.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid + WHERE ( + t_prestations.code IN ('MPJ', 'MPJS', 'MFJ', 'MENT', 'MSSM', 'MPHJ', 'MPMS', 'MSHO', 'MSNS', 'MFS', 'MTSG') OR + t_prestations.code LIKE ('DMAM%') + ) AND + t_listes_contenu.liste_id IS NULL + ; + + -- Forcer type de ventilation journalière dans le prochain import + UPDATE activite.t_prestations + SET type_ventilation_jour = '1' + FROM activite.t_listes_contenu + JOIN activite.t_listes ON liste_id = t_listes.oid + WHERE t_listes_contenu.to_id = t_prestations.oid AND + t_listes.code IN ('DMAP_MFS','DMAP_MFSM') AND + type_ventilation_jour IS DIStINCT FROM '1' + ; + + -- Suppression avant génération + DELETE FROM activite.p_factures_lignes_c WHERE no_facture LIKE '%.DMA'; + DELETE FROM activite.p_factures WHERE no_facture LIKE '%.DMA'; + + PERFORM setval('activite.s_factures', COALESCE(MAX(oid),0) + 1) FROM activite.p_factures; + + -- Cas de plusieurs SSR pour le même numéro de séjour, identification du bon pour l'année + DROP TABLE IF EXISTS w_ssr; + CREATE TEMP TABLE w_ssr AS + SELECT p_ssr.oid, + trim(num_admin_sejour) AS num_admin_sejour, + CASE WHEN trim(num_admin_sejour) IN ( + SELECT trim(num_admin_sejour) + FROM pmsissr.p_ssr + JOIN pmsissr.p_rhs ON ssr_id = p_ssr.oid + WHERE est_version_actuelle = '1' + GROUP BY 1 + HAVING count(DISTINCT ssr_id) > 1) THEN import_ref_year::numeric ELSE 0 END AS import_ref_year, + MAX(p_ssr.date_entree) AS date_entree, + MAX(p_ssr.date_sortie) AS date_sortie, + MAX(p_ssr.nb_jours) AS nb_jours + FROM pmsissr.p_ssr + JOIN pmsissr.p_rhs ON ssr_id = p_ssr.oid + JOIN pmsissr.p_imports ON import_id = p_imports.oid + WHERE import_ref_year >= 2017 AND + est_version_actuelle = '1' + GROUP BY 1,2,3 + ORDER BY 2 + ; + + ANALYSE w_ssr + ; + + + + -- Correction p_file_valo_ssr + UPDATE pmsissr.p_file_valo_ssr + SET numsemaine = subq.numsemaine + FROM + ( + SELECT + (MAX(Array[p_rhs.date_fin::text,LPAD(p_rhs.num_semaine, 2, '0') || p_rhs.annee::text]))[2] as numsemaine, + p_rhs.ssr_id, + trim(p_ssr.num_admin_sejour)::text as numadmin + FROM pmsissr.p_ssr + JOIN pmsissr.p_rhs ON p_rhs.ssr_id = p_ssr.oid + JOIN pmsissr.p_file_valo_ssr ON numadmin = num_admin_sejour + WHERE p_file_valo_ssr.numsemaine = '522016' AND file_name_annee_import = 2017 AND hosp = 'C' + GROUP BY 2,3 + ) subq + WHERE 1=1 AND + trim(p_file_valo_ssr.numadmin)::text = subq.numadmin AND + p_file_valo_ssr.numsemaine = '522016' AND + file_name_annee_import = 2017 AND + subq.numsemaine <> '522016' + ; + + UPDATE pmsissr.p_file_valo_ssr + SET numsemaine = lpad(numsemaine,6,'0') + WHERE length(numsemaine) = 5 + ; + + UPDATE pmsissr.p_file_valo_ssr + SET numadmin = trim(numadmin) + WHERE numadmin <> trim(numadmin) + ; + + DELETE FROM pmsissr.p_file_valo_ssr + USING + ( + SELECT finess, date_part('year',file_name_date_import) AS year, MAX(file_name_date_import) AS file_name_date_import_ok + FROM pmsissr.p_file_valo_ssr + GROUP BY 1,2 + ) subview + WHERE p_file_valo_ssr.finess = subview.finess AND + date_part('year',file_name_date_import) = subview.year AND + file_name_date_import <> file_name_date_import_ok + ; + + -- Identification reprise. Ajout champs pour comptabililité + PERFORM base.cti_execute('ALTER TABLE pmsissr.p_file_valo_ssr ADD COLUMN ' || new_column_name || ' numeric DEFAULT 0',1) + FROM + ( + SELECT 'avance_reprise_nbj'::text AS new_column_name + UNION + SELECT 'avance_reprise_dma_br' AS new_column_name + UNION + SELECT 'avance_reprise_dma_br_prud' AS new_column_name + UNION + SELECT 'avance_reprise_dma_am' AS new_column_name + ) subview + LEFT JOIN information_schema.columns ON + table_schema = 'pmsissr' AND + table_name = 'p_file_valo_ssr' AND + column_name = new_column_name + WHERE column_name IS NULL + ; + + + + + + -- semaines en double car même semaine sur plusieurs imports + DROP TABLE IF EXISTS w_file_valo_ssr; + CREATE TEMP TABLE w_file_valo_ssr AS + SELECT + file_name_annee_import, + numadmin, + numsemaine, + hosp, + MAX(txremb) AS txremb, + SUM(nbjp-avance_reprise_nbj) AS nbjp, + SUM(dma_am-avance_reprise_dma_am) AS dma_am, + count(*) + FROM pmsissr.p_file_valo_ssr + WHERE dma_am <> 0 + + GROUP BY 1,2,3,4 + ; + + + + ANALYSE w_file_valo_ssr + ; + + CREATE INDEX iw_file_valo_ssr_1 ON w_file_valo_ssr USING btree (numadmin) + ; + + + -- Identification des factures de référence pour génération sur dernière + DROP TABLE IF EXISTS w_gen_dma_facture_reference; + CREATE TEMP TABLE w_gen_dma_facture_reference AS + SELECT subview.no_sejour, + subview.sejour_id, + subview.no_facture_reference, + COALESCE(p_factures.facture_reference_id,0) AS facture_reference_id, + COALESCE(p_factures.date_facture,subview.date_sortie) AS date_facture, + COALESCE(p_factures.code_vente,'0') AS code_vente, + COALESCE(p_factures.mois_vente,209912) AS mois_vente, + COALESCE(p_factures.date_vente,'20991231') AS date_vente, + COALESCE(p_factures.tiers_payant_0_id,subview.tiers_payant_0_id) AS tiers_payant_0_id, + COALESCE(p_factures.tiers_payant_1_id,subview.tiers_payant_1_id) AS tiers_payant_1_id, + COALESCE(p_factures.tiers_payant_2_id,subview.tiers_payant_2_id) AS tiers_payant_2_id, + COALESCE(p_factures.tiers_payant_22_id,subview.tiers_payant_22_id) AS tiers_payant_22_id + FROM + ( + SELECT + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + MAX(p_sejours.date_sortie) AS date_sortie, + MAX(p_sejours.tiers_payant_0_id) AS tiers_payant_0_id, + MAX(p_sejours.tiers_payant_1_id) AS tiers_payant_1_id, + MAX(p_sejours.tiers_payant_2_id) AS tiers_payant_2_id, + MAX(p_sejours.tiers_payant_22_id) AS tiers_payant_22_id, + COALESCE((MAX(Array[p_factures_reference.date_facture::text,no_facture_reference]))[2],'NOSEJOUR'||MAX(p_sejours.no_sejour)) AS no_facture_reference + FROM activite.p_sejours + LEFT JOIN activite.p_factures_reference ON p_factures_reference.no_sejour = p_sejours.no_sejour + GROUP BY 1,2 + ) subview + LEFT JOIN activite.p_factures ON subview.no_facture_reference = p_factures.no_facture + ; + + + + + -- Factures DMA à partir de valo SSR + DROP TABLE IF EXISTS w_gen_dma_facture; + CREATE TEMP TABLE w_gen_dma_facture AS + SELECT + p_sejour_pmsi.no_sejour, + p_sejour_pmsi.sejour_id, + w_ssr.oid AS ssr_id, + w_ssr.date_entree AS date_debut_dma, + file_name_annee_import, + hosp, + CASE WHEN w_ssr.nb_jours = nbjp AND w_ssr.date_sortie <> '2099-12-31' THEN w_ssr.date_sortie ELSE COALESCE(p_calendrier.date,'2099-12-31') END AS date_fin_dma, + NULL::date AS date_fin_facture, + CASE WHEN numsemaine <> '' THEN COALESCE((substr(numsemaine,3,4) || substr(numsemaine,1,2))::numeric,209912) ELSE 0 END AS semaine_valo, + GREATEST(nbjp,1) AS nbjp_source, + GREATEST(nbjp,1) AS nbjp, + '0'::text AS est_suite, + txremb, + dma_am, + round(dma_am / GREATEST(nbjp,1),2) AS dma_pu, + 0::numeric AS dma_round, + ''::text AS no_facture_reference, + ''::text AS no_facture + + FROM w_file_valo_ssr p_file_valo_ssr + JOIN w_ssr ON w_ssr.num_admin_sejour = p_file_valo_ssr.numadmin AND (w_ssr.import_ref_year = file_name_annee_import OR w_ssr.import_ref_year = 0) + JOIN activite.p_sejour_pmsi ON w_ssr.oid = ANY(p_sejour_pmsi.ssr_id_array) + JOIN w_gen_dma_facture_reference ON p_sejour_pmsi.sejour_id = w_gen_dma_facture_reference.sejour_id + LEFT JOIN base.p_calendrier ON CASE WHEN numsemaine <> '' THEN COALESCE((substr(numsemaine,3,4) || substr(numsemaine,1,2))::numeric,209912) ELSE 0 END = p_calendrier.semaine AND + p_calendrier.jour_semaine = '7' + WHERE dma_am <> 0 + ; + + WITH w_set_date_fin_dma AS + ( + SELECT + sum( jour_1 + jour_2 +jour_3 +jour_4 +jour_5 +jour_6 + jour_7) over ( partition by ssr_id order by p_rhs.date_fin, p_rhs.oid) as nb_jours_cum_rhs, + date_fin, + ssr_id, + p_rhs.date_sortie + FROM pmsissr.p_ssr + JOIN pmsissr.p_rhs ON p_ssr.oid = ssr_id + WHERE p_rhs.est_version_actuelle = '1' AND p_rhs.date_debut >= '20170102' + ) + UPDATE w_gen_dma_facture + SET date_fin_dma = COALESCE(w_set_date_fin_dma.date_fin, w_set_date_fin_dma.date_sortie) + FROM w_set_date_fin_dma + WHERE true + AND w_gen_dma_facture.ssr_id = w_set_date_fin_dma.ssr_id + AND nb_jours_cum_rhs = nbjp + AND date_fin_dma = '2099-12-31' + ; + UPDATE w_gen_dma_facture + SET date_fin_dma = subview.date_fin_dma + FROM + ( + SELECT + w_gen_dma_facture.file_name_annee_import, + p_rhs.ssr_id, + w_gen_dma_facture.no_sejour, + w_gen_dma_facture.no_facture, + MAX(p_rhs.date_fin) AS date_fin_dma + FROM pmsissr.p_ssr + JOIN pmsissr.p_rhs ON p_ssr.oid = p_rhs.ssr_id + JOIN base.p_calendrier ON p_rhs.date_fin = p_calendrier.date + JOIN w_gen_dma_facture ON + w_gen_dma_facture.ssr_id = p_ssr.oid AND + w_gen_dma_facture.file_name_annee_import = substr(semaine::text,1,4)::numeric AND + (w_gen_dma_facture.date_fin_dma = '20991231' OR w_gen_dma_facture.hosp = 'C') + WHERE p_rhs.est_version_actuelle = '1' + GROUP BY 1,2,3,4 + ) subview + WHERE w_gen_dma_facture.ssr_id = subview.ssr_id AND + w_gen_dma_facture.file_name_annee_import = subview.file_name_annee_import AND + w_gen_dma_facture.no_sejour = subview.no_sejour AND + w_gen_dma_facture.no_facture = subview.no_facture AND + (w_gen_dma_facture.date_fin_dma = '20991231' OR w_gen_dma_facture.hosp = 'C') + ; + + UPDATE w_gen_dma_facture + SET date_debut_dma = w_gen_dma_facture2.date_fin_dma + interval '1 day', est_suite = '1' + FROM w_gen_dma_facture w_gen_dma_facture2 + WHERE + w_gen_dma_facture.no_sejour = w_gen_dma_facture2.no_sejour AND + w_gen_dma_facture.file_name_annee_import = w_gen_dma_facture2.file_name_annee_import + 1 + ; + + -- Sur hospit complète, le nombre de jours de nbjp n'est pas forcément égal aux rhs de l'année (cas des avances) + UPDATE w_gen_dma_facture + SET nbjp = subview.nb_jours_rhs, dma_pu = round(dma_am / subview.nb_jours_rhs,2) + FROM + ( + SELECT + p_ssr.num_admin_sejour, + p_rhs.ssr_id, + file_name_annee_import, + sum( jour_1 + jour_2 +jour_3 +jour_4 +jour_5 +jour_6 + jour_7) as nb_jours_rhs + FROM pmsissr.p_ssr + JOIN pmsissr.p_rhs ON p_ssr.oid = ssr_id + JOIN w_gen_dma_facture ON + p_ssr.oid = w_gen_dma_facture.ssr_id AND + p_rhs.date_fin BETWEEN date_debut_dma AND date_fin_dma + WHERE hosp = 'C' AND + p_rhs.est_version_actuelle = '1' AND + p_rhs.date_debut >= '20170102' AND + est_suite = '1' + GROUP BY 1,2,3 + HAVING sum( jour_1 + jour_2 +jour_3 +jour_4 +jour_5 +jour_6 + jour_7) <> MAX(nbjp_source) AND + sum( jour_1 + jour_2 +jour_3 +jour_4 +jour_5 +jour_6 + jour_7) > 0 + ORDER BY 1,3 + ) subview + WHERE w_gen_dma_facture.ssr_id = subview.ssr_id AND + w_gen_dma_facture.file_name_annee_import = subview.file_name_annee_import + ; + + UPDATE w_gen_dma_facture + SET semaine_valo = p_calendrier.semaine + FROM base.p_calendrier + WHERE date_fin_dma = p_calendrier.date AND + semaine_valo = 0 + ; + + UPDATE w_gen_dma_facture + SET dma_round = dma_am - (nbjp*dma_pu) + ; + + UPDATE w_gen_dma_facture SET + no_facture_reference = w_gen_dma_facture_reference.no_facture_reference, + no_facture = w_gen_dma_facture_reference.no_facture_reference || '.' || substr(file_name_annee_import::text,3,2) || '.DMA' + FROm w_gen_dma_facture_reference + WHERE w_gen_dma_facture.no_sejour = w_gen_dma_facture_reference.no_sejour + ; + + UPDATE w_gen_dma_facture + SET date_fin_facture = + CASE + WHEN date_fin_dma BETWEEN date_debut_ssr AND date_fin_ssr THEN date_fin_dma + WHEN date_fin_dma < date_debut_ssr THEN date_debut_ssr + WHEN date_fin_dma > date_fin_ssr THEN date_fin_ssr + ELSE NULL END + FROM + ( + SELECT date_part('year',date) AS annee_ssr, + MIN(date) AS date_debut_ssr, + MAX(date) AS date_fin_ssr + FROM base.p_calendrier + GROUP BY 1 + ORDER BY 1 + ) subview + WHERE w_gen_dma_facture.file_name_annee_import = annee_ssr + ; + + + DROP TABLE IF EXISTS w_gen_dma_calendrier; + CREATE TEMP TABLE w_gen_dma_calendrier AS + SELECT no_sejour, no_facture, semaine_valo, p_calendrier.date, p_rhs.date_fin_presence, nbjp + FROM w_gen_dma_facture + JOIN pmsissr.p_rhs ON w_gen_dma_facture.ssr_id = p_rhs.ssr_id + JOIN base.p_calendrier ON + ( + hosp = 'P' AND p_calendrier.semaine = semaine_valo OR + hosp = 'C' AND p_calendrier.semaine <= semaine_valo + ) + WHERE + p_rhs.est_version_actuelle = '1' AND + ( + p_rhs.date_debut = p_calendrier.date AND jour_1 = 1 OR + date(p_rhs.date_debut + interval '1 day') = p_calendrier.date AND jour_2 = 1 OR + date(p_rhs.date_debut + interval '2 day') = p_calendrier.date AND jour_3 = 1 OR + date(p_rhs.date_debut + interval '3 day') = p_calendrier.date AND jour_4 = 1 OR + date(p_rhs.date_debut + interval '4 day') = p_calendrier.date AND jour_5 = 1 OR + date(p_rhs.date_debut + interval '5 day') = p_calendrier.date AND jour_6 = 1 OR + date(p_rhs.date_debut + interval '6 day') = p_calendrier.date AND jour_7 = 1 + ) + ; + + INSERT INTO w_gen_dma_calendrier + SELECT no_sejour, no_facture, semaine_valo, p_calendrier.date, p_rhs.date_fin_presence, nbjp + FROM w_gen_dma_facture + JOIN pmsissr.p_rhs ON w_gen_dma_facture.ssr_id = p_rhs.ssr_id + JOIN base.p_calendrier ON + ( + hosp = 'P' AND p_calendrier.semaine = semaine_valo OR + hosp = 'C' AND p_calendrier.semaine <= semaine_valo + ) + WHERE + p_rhs.est_version_actuelle = '1' AND + hosp = 'C' AND + nbjp = 1 AND + p_rhs.date_debut = p_calendrier.date AND + jour_1 = 0 AND jour_2 = 0 AND jour_3 = 0 AND jour_4 = 0 AND jour_5 = 0 AND jour_6 = 0 AND jour_7 = 0 + ; + DELETE FROM w_gen_dma_calendrier + USING + ( + SELECT *, row_number() OVER (PARTITION BY no_facture, semaine_valo ORDER BY date DESC) AS nbjf + FROM w_gen_dma_calendrier + ) subview + WHERE w_gen_dma_calendrier.no_facture= subview.no_facture AND + w_gen_dma_calendrier.semaine_valo = subview.semaine_valo AND + w_gen_dma_calendrier.date = subview.date AND + subview.nbjf > subview.nbjp + ; + + + INSERT INTO activite.p_factures ( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + facture_reference_id, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + code_vente, + mois_vente, + date_vente, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + montant_facture_c, + montant_facture_1_c + ) + SELECT + w_gen_dma_facture.sejour_id, + w_gen_dma_facture.no_sejour, + w_gen_dma_facture.no_facture, + MAX(w_gen_dma_facture.no_facture_reference) AS no_facture_reference, + MAX(w_gen_dma_facture_reference.facture_reference_id) AS facture_reference_id, + MIN(w_gen_dma_facture.date_debut_dma), + MAX(w_gen_dma_facture.date_fin_facture), + MAX('2'::text) AS type_facture, + MAX('1'::text) AS code_facture, + MAX(w_gen_dma_facture_reference.date_facture), + MAX(w_gen_dma_facture_reference.code_vente), + MAX(w_gen_dma_facture_reference.mois_vente), + MAX(w_gen_dma_facture_reference.date_vente), + MAX(w_gen_dma_facture_reference.tiers_payant_0_id), + MAX(w_gen_dma_facture_reference.tiers_payant_1_id), + MAX(w_gen_dma_facture_reference.tiers_payant_2_id), + MAX(w_gen_dma_facture_reference.tiers_payant_22_id), + SUM(dma_am) AS montant_facture_c, + SUM(dma_am) AS montant_facture_1_c + FROM w_gen_dma_facture + JOIN w_gen_dma_facture_reference ON w_gen_dma_facture.no_sejour = w_gen_dma_facture_reference.no_sejour + GROUP BY 1,2,3 + ; + + + INSERT INTO activite.p_factures_lignes_c ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + montant_facture, + montant_facture_1, + taux_1, + prix_unitaire, + lieu_id + ) + SELECT + p_factures.oid AS facture_id, + w_gen_dma_facture.no_facture, + w_gen_dma_calendrier.date, + w_gen_dma_calendrier.date, + 1 AS nb_rubrique, + 1 AS nb_prestation, + 1 AS coefficient, + 1 AS coefficient_mco, + t_rubriques_facturation.oid AS rubrique_facturation_id, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + dma_pu + CASE WHEN w_gen_dma_calendrier.date = date_fin_presence AND to_char(w_gen_dma_calendrier.date, 'YYYYIW') = w_gen_dma_facture.semaine_valo THEN dma_round ELSE 0 END AS montant_facture, + dma_pu + CASE WHEN w_gen_dma_calendrier.date = date_fin_presence AND to_char(w_gen_dma_calendrier.date, 'YYYYIW') = w_gen_dma_facture.semaine_valo THEN dma_round ELSE 0 END AS montant_facture_1, + txremb AS taux_1, + dma_pu AS prix_unitaire, + 0::bigint AS lieu_id + FROM w_gen_dma_facture + JOIN activite.p_factures ON w_gen_dma_facture.no_facture = p_factures.no_facture + JOIN w_gen_dma_calendrier ON w_gen_dma_calendrier.no_facture = w_gen_dma_facture.no_facture AND w_gen_dma_calendrier.semaine_valo = w_gen_dma_facture.semaine_valo + JOIN activite.t_rubriques_facturation ON 'DMASSR' = t_rubriques_facturation.code_original + JOIN activite.t_prestations ON 'DMASSR' = t_prestations.code_original + ; + + + PERFORM activite.cti_reorganize_rubrique_facture_c('activite.p_factures_lignes_c'); + + + -- Lieu des lignes de factures (en tenant compte des absences) + DROP TABLE IF EXISTS w_mouvements_sejour_lieu_jour; + CREATE TEMP TABLE w_mouvements_sejour_lieu_jour AS + SELECT no_sejour, + date, + (MAX(CASE WHEN est_absence <> '1' THEN Array[heure_fin, lieu_id] ELSE NULL END))[2] AS lieu_id, + (MAX(Array[heure_fin, lieu_id]))[2] AS lieu_id_avec_absence + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_services_facturation On service_facturation_id = t_services_facturation.oid + GROUP BY 1,2 + ; + + UPDATE activite.p_factures_lignes_c + SET lieu_id = COALESCE(w_mouvements_sejour_lieu_jour.lieu_id,w_mouvements_sejour_lieu_jour.lieu_id_avec_absence) + FROM activite.p_factures, w_mouvements_sejour_lieu_jour + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = w_mouvements_sejour_lieu_jour.no_sejour AND + p_factures_lignes_c.date_debut = w_mouvements_sejour_lieu_jour.date AND + p_factures_lignes_c.lieu_id <> COALESCE(w_mouvements_sejour_lieu_jour.lieu_id,w_mouvements_sejour_lieu_jour.lieu_id_avec_absence) + ; + + UPDATE activite.p_factures_lignes_c + SET lieu_id = p_sejours.lieu_sortie_id + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures_lignes_c.lieu_id = 0 AND + p_factures.no_facture LIKE '%DMA' + ; + + + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_gen_dotation.yaml b/db/schema2/functions/cti_gen_dotation.yaml new file mode 100644 index 0000000..12248d3 --- /dev/null +++ b/db/schema2/functions/cti_gen_dotation.yaml @@ -0,0 +1,249 @@ +return: text +lang: plpgsql +src: | + DECLARE result TEXT; + BEGIN + IF NOT EXISTS (SELECT * FROM activite.t_service_rubrique_dotation) THEN + return 'Pas de dotation paramétrée'; + END IF; + + -- Calcul coefficient dotation/facture + DELETE FROM activite.p_factures_lignes_c + WHERE rubrique_facturation_id <> 0 AND + rubrique_facturation_id IN (SELECT to_rubrique_facturation_id FROM activite.t_service_rubrique_dotation WHERE to_rubrique_facturation_id <> 0) + ; + + DROP TABLE IF EXISTS w_apply_dotation_new; + CREATE TEMP TABLE w_apply_dotation_new AS + SELECT p_factures_lignes_c.*, + to_prestation_id, + to_rubrique_facturation_id + FROM activite.p_factures_lignes_c + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_service_rubrique_dotation ON + t_lieux.service_facturation_id = ANY(t_service_rubrique_dotation.service_facturation_id_array) AND + p_factures_lignes_c.rubrique_facturation_id = ANY(t_service_rubrique_dotation.rubrique_facturation_id_array) AND + date_part('year',p_factures_lignes_c.date_fin) = t_service_rubrique_dotation.annee + WHERE t_service_rubrique_dotation.to_prestation_id <> 0 + ; + + UPDATE w_apply_dotation_new SET + rubrique_facturation_id = to_rubrique_facturation_id, + rubrique_comptabilisation_id = to_rubrique_facturation_id, + prestation_id = to_prestation_id, + montant_facture_1 = montant_facture, + montant_facture_2 = 0, + montant_facture_22 = 0, + montant_facture_0 = 0, + montant_comptabilise = 0, + montant_comptabilise_1 = 0, + montant_comptabilise_2 = 0, + montant_comptabilise_22 = 0 + ; + + ALTER TABLE w_apply_dotation_new DROP COLUMN to_rubrique_facturation_id; + ALTER TABLE w_apply_dotation_new DROP COLUMN to_prestation_id; + + INSERT INTO activite.p_factures_lignes_c + SELECT * + FROM w_apply_dotation_new + ; + + DROP TABLE IF EXISTS w_apply_dotation; + CREATE TEMP TABLE w_apply_dotation AS + SELECT t_service_rubrique_dotation.oid AS dotation_id, + t_service_rubrique_dotation.service_facturation_id_array, + t_service_rubrique_dotation.rubrique_facturation_id_array, + annee, + SUM(nb_rubrique) AS nb_rubrique_tot, + SUM(CASE WHEN p_factures_lignes_c.montant_facture_1 <> 0 AND montant_comptabilise_1 = 0 THEN montant_facture_1 ELSE 0 END) + + SUM(CASE WHEN p_factures_lignes_c.montant_facture_2 <> 0 AND montant_comptabilise_1 = 0 THEN montant_facture_2 ELSE 0 END) + + SUM(CASE WHEN p_factures_lignes_c.montant_facture_22 <> 0 AND montant_comptabilise_1 = 0 THEN montant_facture_22 ELSE 0 END) + + SUM(p_factures_lignes_c.montant_encours) AS montant_fac_tot, + MAX(t_service_rubrique_dotation.montant_dotation*CASE WHEN date_part('year',now()) > annee THEN 1 ELSE (date(now()) - to_date(annee,'YYYY'))/365.00 END) As montant_dot, + 0::numeric AS coefficient_dot + FROM activite.p_factures_lignes_c + JOIN activite.t_rubriques_facturation ON + rubrique_facturation_id = t_rubriques_facturation.oid + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_service_rubrique_dotation ON + t_lieux.service_facturation_id = ANY(t_service_rubrique_dotation.service_facturation_id_array) AND + p_factures_lignes_c.rubrique_facturation_id = ANY(t_service_rubrique_dotation.rubrique_facturation_id_array) AND + date_part('year',p_factures_lignes_c.date_fin) = t_service_rubrique_dotation.annee + WHERE (p_factures_lignes_c.montant_facture_1 <> 0 AND montant_comptabilise_1 = 0 OR + p_factures_lignes_c.montant_facture_2 <> 0 AND montant_comptabilise_2 = 0 OR + p_factures_lignes_c.montant_facture_22 <> 0 AND montant_comptabilise_22 = 0 OR + p_factures_lignes_c.montant_encours <> 0 + + ) AND + t_service_rubrique_dotation.to_prestation_id = 0 + GROUP BY 1,2,3,4; + + INSERT INTO w_apply_dotation + SELECT t_service_rubrique_dotation.oid AS dotation_id, + t_service_rubrique_dotation.service_facturation_id_array, + ARRAY[to_rubrique_facturation_id], + annee, + SUM(nb_rubrique) AS nb_rubrique_tot, + SUM(CASE WHEN p_factures_lignes_c.montant_facture_1 <> 0 AND montant_comptabilise_1 = 0 THEN montant_facture_1 ELSE 0 END) + + SUM(CASE WHEN p_factures_lignes_c.montant_facture_2 <> 0 AND montant_comptabilise_1 = 0 THEN montant_facture_2 ELSE 0 END) + + SUM(CASE WHEN p_factures_lignes_c.montant_facture_22 <> 0 AND montant_comptabilise_1 = 0 THEN montant_facture_22 ELSE 0 END) + + SUM(p_factures_lignes_c.montant_encours) AS montant_fac_tot, + MAX(t_service_rubrique_dotation.montant_dotation*CASE WHEN date_part('year',now()) > annee THEN 1 ELSE (date(now()) - to_date(annee,'YYYY'))/365.00 END) As montant_dot, + 0::numeric AS coefficient_dot + FROM activite.p_factures_lignes_c + JOIN activite.t_rubriques_facturation ON + rubrique_facturation_id = t_rubriques_facturation.oid + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_service_rubrique_dotation ON + t_lieux.service_facturation_id = ANY(t_service_rubrique_dotation.service_facturation_id_array) AND + p_factures_lignes_c.rubrique_facturation_id = to_rubrique_facturation_id AND + date_part('year',p_factures_lignes_c.date_fin) = t_service_rubrique_dotation.annee + WHERE (p_factures_lignes_c.montant_facture_1 <> 0 AND montant_comptabilise_1 = 0 OR + p_factures_lignes_c.montant_facture_2 <> 0 AND montant_comptabilise_2 = 0 OR + p_factures_lignes_c.montant_facture_22 <> 0 AND montant_comptabilise_22 = 0 OR + p_factures_lignes_c.montant_encours <> 0 + + ) AND + t_service_rubrique_dotation.to_rubrique_facturation_id <> 0 + GROUP BY 1,2,3,4; + + UPDATE w_apply_dotation + SET coefficient_dot = base.cti_division(montant_dot,montant_fac_tot) + ; + + + -- Application coefficient + UPDATE activite.p_factures_lignes_c SET + montant_facture_1 = CASE WHEN p_factures_lignes_c.montant_facture_1 <> 0 AND p_factures_lignes_c.montant_comptabilise_1 = 0 THEN p_factures_lignes_c.montant_facture_1 * coefficient_dot ELSE 0 END , + montant_comptabilise_budget_global_1 = CASE WHEN p_factures_lignes_c.montant_facture_1 <> 0 AND p_factures_lignes_c.montant_comptabilise_1 = 0 THEN p_factures_lignes_c.montant_facture_1 * coefficient_dot ELSE 0 END , + montant_facture_2 = CASE WHEN p_factures_lignes_c.montant_facture_2 <> 0 AND p_factures_lignes_c.montant_comptabilise_2 = 0 THEN p_factures_lignes_c.montant_facture_2 * coefficient_dot ELSE 0 END , + montant_facture_22 = CASE WHEN p_factures_lignes_c.montant_facture_22 <> 0 AND p_factures_lignes_c.montant_comptabilise_22 = 0 THEN p_factures_lignes_c.montant_facture_22 * coefficient_dot ELSE 0 END , + montant_facture = montant_facture_0 + + CASE WHEN p_factures_lignes_c.montant_facture_1 <> 0 AND p_factures_lignes_c.montant_comptabilise_1 = 0 THEN p_factures_lignes_c.montant_facture_1 * coefficient_dot ELSE 0 END + + CASE WHEN p_factures_lignes_c.montant_facture_2 <> 0 AND p_factures_lignes_c.montant_comptabilise_2 = 0 THEN p_factures_lignes_c.montant_facture_2 * coefficient_dot ELSE 0 END + + CASE WHEN p_factures_lignes_c.montant_facture_22 <> 0 AND p_factures_lignes_c.montant_comptabilise_22 = 0 THEN p_factures_lignes_c.montant_facture_22 * coefficient_dot ELSE 0 END, + montant_encours = CASE WHEN p_factures_lignes_c.montant_encours <> 0 THEN p_factures_lignes_c.montant_encours * coefficient_dot ELSE 0 END, + prix_unitaire = + base.cti_division + ( + montant_facture_0 + + CASE WHEN p_factures_lignes_c.montant_facture_1 <> 0 AND p_factures_lignes_c.montant_comptabilise_1 = 0 THEN p_factures_lignes_c.montant_facture_1 * coefficient_dot ELSE 0 END + + CASE WHEN p_factures_lignes_c.montant_facture_2 <> 0 AND p_factures_lignes_c.montant_comptabilise_2 = 0 THEN p_factures_lignes_c.montant_facture_2 * coefficient_dot ELSE 0 END + + CASE WHEN p_factures_lignes_c.montant_facture_22 <> 0 AND p_factures_lignes_c.montant_comptabilise_22 = 0 THEN p_factures_lignes_c.montant_facture_22 * coefficient_dot ELSE 0 END + + CASE WHEN p_factures_lignes_c.montant_encours <> 0 THEN p_factures_lignes_c.montant_encours * coefficient_dot ELSE 0 END + , + nb_rubrique + ) + FROM w_apply_dotation, activite.t_lieux + WHERE p_factures_lignes_c.lieu_id = t_lieux.oid AND + t_lieux.service_facturation_id = ANY(w_apply_dotation.service_facturation_id_array) AND + p_factures_lignes_c.rubrique_facturation_id = ANY(w_apply_dotation.rubrique_facturation_id_array) AND + date_part('year',p_factures_lignes_c.date_fin) = w_apply_dotation.annee + ; + + -- Arrondi sur une ligne + UPDATE activite.p_factures_lignes_c SET + montant_facture = montant_facture + round_montant, + montant_facture_1 = CASE WHEN montant_facture_1 <> 0 AND montant_comptabilise_1 = 0 THEN montant_facture_1 + round_montant ELSE montant_facture_1 END, + montant_comptabilise_budget_global_1 = CASE WHEN montant_facture_1 <> 0 AND montant_comptabilise_1 = 0 THEN montant_facture_1 + round_montant ELSE montant_facture_1 END, + montant_facture_2 = CASE WHEN (montant_facture_1 = 0 OR montant_comptabilise_1 <> 0) AND montant_facture_2 <> 0 AND montant_comptabilise_2 = 0 THEN montant_facture_2 + round_montant ELSE montant_facture_2 END, + montant_facture_22 = CASE WHEN (montant_facture_1 = 0 OR montant_comptabilise_1 <> 0) AND (montant_facture_2 = 0 OR montant_comptabilise_2 <> 0) AND montant_facture_22 <> 0 AND montant_comptabilise_22 = 0 THEN montant_facture_22 + round_montant ELSE montant_facture_22 END + FROM + ( + SELECT dotation_id, + MAX(montant_dot) - + ( + SUM(CASE WHEN p_factures_lignes_c.montant_facture_1 <> 0 AND montant_comptabilise_1 = 0 THEN montant_facture_1 ELSE 0 END) + + SUM(CASE WHEN p_factures_lignes_c.montant_facture_2 <> 0 AND montant_comptabilise_1 = 0 THEN montant_facture_2 ELSE 0 END) + + SUM(CASE WHEN p_factures_lignes_c.montant_facture_22 <> 0 AND montant_comptabilise_1 = 0 THEN montant_facture_22 ELSE 0 END) + + SUM(p_factures_lignes_c.montant_encours) + ) AS round_montant, + MAX(CASE + WHEN p_factures_lignes_c.montant_facture_1 <> 0 AND montant_comptabilise_1 = 0 THEN p_factures_lignes_c.CTID + WHEN p_factures_lignes_c.montant_facture_2 <> 0 AND montant_comptabilise_2 = 0 THEN p_factures_lignes_c.CTID + WHEN p_factures_lignes_c.montant_facture_22 <> 0 AND montant_comptabilise_22 = 0 THEN p_factures_lignes_c.CTID + ELSE NULL END) AS round_ctid + FROM activite.p_factures_lignes_c + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN w_apply_dotation ON + t_lieux.service_facturation_id = ANY(w_apply_dotation.service_facturation_id_array) AND + p_factures_lignes_c.rubrique_facturation_id = ANY(w_apply_dotation.rubrique_facturation_id_array) AND + date_part('year',p_factures_lignes_c.date_fin) = w_apply_dotation.annee + WHERE (p_factures_lignes_c.montant_facture_1 <> 0 AND montant_comptabilise_1 = 0 OR + p_factures_lignes_c.montant_facture_2 <> 0 AND montant_comptabilise_2 = 0 OR + p_factures_lignes_c.montant_facture_22 <> 0 AND montant_comptabilise_22 = 0 OR + p_factures_lignes_c.montant_encours <> 0 + ) + GROUP BY 1 + ) subview + WHERE p_factures_lignes_c.CTID = subview.round_ctid; + + -- Mise a jour entetes + DROP TABLE IF EXISTS w_apply_dotation_factures; + CREATE TEMP TABLE w_apply_dotation_factures AS + SELECT p_factures.no_facture, + SUM(montant_facture) AS montant_facture_c, + SUM(montant_facture_1) AS montant_facture_1_c, + SUM(montant_facture_2) AS montant_facture_2_c, + SUM(montant_facture_22) AS montant_facture_22_c, + SUM(montant_encours) AS montant_encours_c + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN w_apply_dotation ON + p_factures_lignes_c.rubrique_facturation_id = ANY(w_apply_dotation.rubrique_facturation_id_array) AND + date_part('year',p_factures_lignes_c.date_fin) = w_apply_dotation.annee + GROUP BY 1 + ; + + UPDATE activite.p_factures SET + montant_facture_c = w_apply_dotation_factures.montant_facture_c, + montant_facture_1_c = w_apply_dotation_factures.montant_facture_1_c, + montant_comptabilise_budget_global_c = w_apply_dotation_factures.montant_facture_1_c, + montant_facture_2_c = w_apply_dotation_factures.montant_facture_2_c, + montant_facture_22_c = w_apply_dotation_factures.montant_facture_22_c, + montant_encours_c = w_apply_dotation_factures.montant_encours_c + FROM w_apply_dotation_factures + WHERE p_factures.no_facture = w_apply_dotation_factures.no_facture + ; + + DROP TABLE IF EXISTS w_apply_dotation_factures; + CREATE TEMP TABLE w_apply_dotation_factures AS + SELECT p_factures.no_facture_reference, + SUM(montant_facture) AS montant_facture_c, + SUM(montant_facture_1) AS montant_facture_1_c, + SUM(montant_facture_2) AS montant_facture_2_c, + SUM(montant_facture_22) AS montant_facture_22_c, + SUM(montant_encours) AS montant_encours_c + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN w_apply_dotation ON + p_factures_lignes_c.rubrique_facturation_id = ANY(w_apply_dotation.rubrique_facturation_id_array) AND + date_part('year',p_factures_lignes_c.date_fin) = w_apply_dotation.annee + GROUP BY 1 + ; + + + UPDATE activite.p_factures_reference SET + montant_facture = w_apply_dotation_factures.montant_facture_c + p_factures_reference.montant_facture_h, + montant_facture_c = w_apply_dotation_factures.montant_facture_c, + montant_facture_1 = w_apply_dotation_factures.montant_facture_1_c + p_factures_reference.montant_facture_1_h, + montant_facture_1_c = w_apply_dotation_factures.montant_facture_1_c, + montant_facture_2 = w_apply_dotation_factures.montant_facture_2_c + w_apply_dotation_factures.montant_facture_22_c + p_factures_reference.montant_facture_2_h, + montant_facture_2_c = w_apply_dotation_factures.montant_facture_2_c + w_apply_dotation_factures.montant_facture_22_c, + montant_encours = w_apply_dotation_factures.montant_encours_c + p_factures_reference.montant_encours_h, + montant_encours_c = w_apply_dotation_factures.montant_encours_c, + montant_comptabilise_budget_global_c = w_apply_dotation_factures.montant_facture_1_c + FROM w_apply_dotation_factures + WHERE p_factures_reference.no_facture_reference = w_apply_dotation_factures.no_facture_reference + ; + + UPDATE activite.p_factures_lignes_c + SET prix_unitaire = montant_facture / nb_rubrique + WHERE rubrique_facturation_id <> 0 AND + rubrique_facturation_id IN (SELECT to_rubrique_facturation_id FROM activite.t_service_rubrique_dotation WHERE to_rubrique_facturation_id <> 0) + ; + + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_gen_sejour_effet_tarif.yaml b/db/schema2/functions/cti_gen_sejour_effet_tarif.yaml new file mode 100644 index 0000000..25a0225 --- /dev/null +++ b/db/schema2/functions/cti_gen_sejour_effet_tarif.yaml @@ -0,0 +1,576 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + BEGIN + + + IF NOT EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 'p_rss') THEN + return 'Pas de PMSI'; + END IF; + + -- Calcul simulation + + -- Initialisation du coefficient MCO non alimenté (exemple WEB100T) + UPDATE activite.p_factures_lignes_c + SET coefficient_mco = + CASE + WHEN date(date_fin) >= '20170301' THEN 0.993 + WHEN date(date_fin) >= '20160301' THEN 0.995 + WHEN date(date_fin) >= '20140301' THEN 0.9965 + ELSE 1::numeric + END + FROM activite.t_prestations + WHERE + prestation_id = t_prestations.oid AND + t_prestations.code IN ('GHS', 'EXH') AND + coefficient_mco = 1 + ; + + + -- Initialisation des GHS bebes non alimentés depuis PMSI + UPDATE activite.p_sejours SET + ghs_bebe1_id = subview.ghs_bebe1_id, + ghs_bebe2_id = subview.ghs_bebe2_id, + ghs_bebe3_id = subview.ghs_bebe3_id + FROM + ( + SELECT p_sejours.no_sejour, + MAX(ghs_bebe1_id), + MAX(ghs_bebe2_id), + MAX(ghs_bebe3_id), + MAX(CASE WHEN row_number = 1 THEN ghs_bebe_id ELSE 0 END) AS ghs_bebe1_id, + MAX(CASE WHEN row_number = 2 THEN ghs_bebe_id ELSE 0 END) AS ghs_bebe2_id, + MAX(CASE WHEN row_number = 3 THEN ghs_bebe_id ELSE 0 END) AS ghs_bebe3_id + FROM activite.p_sejours + JOIN + ( + SELECT p_sejour_pmsi.no_sejour, + CASE WHEN p_rsf_detail.ghs_id <> p_rss.ghs_id THEN t_ghs_base.oid ELSE 0 END AS ghs_bebe_id, + row_number() OVER (PARTITION BY p_sejour_pmsi.no_sejour ORDER BY CASE WHEN p_rsf_detail.ghs_id <> p_rss.ghs_id THEN t_ghs_base.oid ELSE 999999999999 END) AS row_number + FROM pmsi.p_rsf_detail + JOIN pmsi.p_rss ON p_rsf_detail.rss_id = p_rss.oid + JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid + JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid + JOIN pmsi.t_ghs ON p_rsf_detail.ghs_id = t_ghs.oid + JOIN base.t_ghs t_ghs_base ON t_ghs_base.code = t_ghs.code + JOIN activite.p_sejour_pmsi ON p_sejour_pmsi.rss_id = p_rss.oid + WHERE t_prestations.code = 'GHS' AND + t_ghm.code LIKE '14%' AND + p_rss.en_cours = '0' AND + est_ligne_rss = '1' + order by 3 desc + ) subview ON p_sejours.no_sejour = subview.no_sejour + GROUP BY 1 + HAVING + ( + MAX(ghs_bebe1_id) <> MAX(CASE WHEN row_number = 1 THEN ghs_bebe_id ELSE 0 END) OR + MAX(ghs_bebe2_id) <> MAX(CASE WHEN row_number = 2 THEN ghs_bebe_id ELSE 0 END) OR + MAX(ghs_bebe3_id) <> MAX(CASE WHEN row_number = 3 THEN ghs_bebe_id ELSE 0 END) + ) + ) subview + WHERE p_sejours.no_sejour = subview.no_sejour + ; + + + -- Rechreche coefficient MCO par période pour simulation + DROP TABLE IF EXISTS w_coefficient; + CREATE TEMP TABLE w_coefficient AS + SELECT * + FROM + ( + SELECT date_debut, date_fin,coefficient_mco, nb, + row_number() OVER (PARTITION BY date_debut ORDER BY nb DESC) AS row_number + FROM + ( + SELECT date(date_trunc('month',p_factures.date_fin)) AS date_debut, + date(date_trunc('month',p_factures.date_fin)+interval '1 month'-interval '1 day') AS date_fin, + coefficient_mco, + count(*) AS nb + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE t_prestations.code = 'GHS' AND p_factures.date_fin >= '20140301' + GROUP BY 1,2,3 + ) subview + ) subview + WHERE row_number = 1 + ; + + + INSERT INTO w_coefficient + SELECT p_calendrier_mois.date_debut, + p_calendrier_mois.date_fin, + CASE + WHEN date(p_calendrier_mois.date_fin) >= '20170301' THEN 0.993 + WHEN date(p_calendrier_mois.date_fin) >= '20160301' THEN 0.995 + WHEN date(p_calendrier_mois.date_fin) >= '20140301' THEN 0.9965 + ELSE 1::numeric + END + AS coefficient_mco, + 1::numeric AS nb, + 1::bigint AS row_number + FROm base.p_calendrier_mois + LEFT JOIN w_coefficient ON p_calendrier_mois.date_fin = w_coefficient.date_fin + WHERE p_calendrier_mois.date_debut BETWEEN '20170101' AND now() AND w_coefficient IS NULL + ; + + + + -- Identification des séjours à traiter + DROP TABLE IF EXISTS w_simulation; + CREATE TEMP TABLE w_simulation AS + SELECT p_sejours.oid AS sejour_id, + p_sejours.no_sejour, + type_sejour, + date_entree, + date_sortie, + mode_sortie, + date_sortie - date_entree AS duree_sejour, + 1::numeric AS nb, + p_sejours.ghm_id, + t_ghm.code AS ghm_code, + t_ghm.texte As ghm_texte, + p_sejours.ghs_id, + t_ghs.code AS ghs_code, + 0::numeric AS coefficient_f, + '1'::numeric AS ok_ghs_f, + COALESCE(w_coefficient.coefficient_mco,0) AS coefficient_c, + CASE WHEN t_ghs_tarifs.tarif_ghs IS NOT NULL THEN '1' ELSE '0' END AS ok_ghs_c, + COALESCE(t_ghs_tarifs.tarif_ghs,0) AS tarif_ghs_c, + COALESCE(t_ghs_tarifs.tarif_exh,0) AS tarif_exh_c, + COALESCE(t_ghs_tarifs.tarif_exb,0) AS tarif_exb_c, + COALESCE(t_ghs_tarifs.forfait_exb,0) AS forfait_exb_c, + COALESCE(t_ghs_tarifs.borne_basse,0) AS borne_basse_c, + COALESCE(t_ghs_tarifs.borne_haute,0) AS borne_haute_c, + p_sejours.ghs_bebe1_id, + 0::numeric AS tarif_ghs_bb1_c, + p_sejours.ghs_bebe2_id, + 0::numeric AS tarif_ghs_bb2_c, + p_sejours.ghs_bebe3_id, + 0::numeric AS tarif_ghs_bb3_c, + COALESCE(w_coefficient_p.coefficient_mco,0) AS coefficient_p, + CASE WHEN t_ghs_tarifs_p.tarif_ghs IS NOT NULL THEN '1' ELSE '0' END AS ok_ghs_p, + COALESCE(t_ghs_tarifs_p.tarif_ghs,0) AS tarif_ghs_p, + COALESCE(t_ghs_tarifs_p.tarif_exh,0) AS tarif_exh_p, + COALESCE(t_ghs_tarifs_p.tarif_exb,0) AS tarif_exb_p, + COALESCE(t_ghs_tarifs_p.forfait_exb,0) AS forfait_exb_p, + COALESCE(t_ghs_tarifs_p.borne_basse,0) AS borne_basse_p, + COALESCE(t_ghs_tarifs_p.borne_haute,0) AS borne_haute_p, + 0::numeric AS tarif_ghs_bb1_p, + 0::numeric AS tarif_ghs_bb2_p, + 0::numeric AS tarif_ghs_bb3_p, + 0::numeric AS montant_ghs_f, + 0::numeric AS montant_exh_f, + 0::numeric AS montant_tot_f, + 0::numeric AS montant_ghs_c, + 0::numeric AS montant_exh_c, + 0::numeric AS montant_exb_c, + 0::numeric AS montant_ghs_bb1_c, + 0::numeric AS montant_ghs_bb2_c, + 0::numeric AS montant_ghs_bb3_c, + 0::numeric AS montant_tot_c, + 0::numeric AS montant_ghs_p, + 0::numeric AS montant_exh_p, + 0::numeric AS montant_exb_p, + 0::numeric AS montant_tot_p, + 0::numeric AS montant_ghs_bb1_p, + 0::numeric AS montant_ghs_bb2_p, + 0::numeric AS montant_ghs_bb3_p + FROM activite.p_sejours + JOIN base.t_ghs ON p_sejours.ghs_id = t_ghs.oid + JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid + LEFT JOIN base.t_ghs_tarifs ON t_ghs_tarifs.ghs_id = p_sejours.ghs_id AND + p_sejours.date_sortie BETWEEN t_ghs_tarifs.date_debut AND t_ghs_tarifs.date_fin AND + t_ghs_tarifs.secteur = '2' + LEFT JOIN w_coefficient ON p_sejours.date_sortie BETWEEN w_coefficient.date_debut AND w_coefficient.date_fin + LEFT JOIN base.t_ghs_tarifs t_ghs_tarifs_p ON t_ghs_tarifs_p.ghs_id = p_sejours.ghs_id AND + date(date_trunc('month',p_sejours.date_sortie)-interval '1 year') BETWEEN t_ghs_tarifs_p.date_debut AND t_ghs_tarifs_p.date_fin AND + t_ghs_tarifs_p.secteur = '2' + LEFT JOIN w_coefficient w_coefficient_p ON date(date_trunc('month',p_sejours.date_sortie)-interval '1 year') BETWEEN w_coefficient_p.date_debut AND w_coefficient_p.date_fin + WHERE date_sortie >= '20160301' AND + code_sorti = '1' AND + type_sejour IN ('1','2','5') AND + p_sejours.ghs_id > 0 AND + p_sejours.ghm_id > 0 AND + t_ghm.code <> ALL(Array['09Z02A','14Z08Z']) + ; + + -- Mise à jour des tarifs ghs bebes + UPDATE w_simulation SET + tarif_ghs_bb1_c = t_ghs_tarifs.tarif_ghs + FROM base.t_ghs_tarifs + WHERE ghs_bebe1_id = t_ghs_tarifs.ghs_id AND + ghs_bebe1_id <> 0 AND + ghm_code LIKE '14%' AND + date_sortie BETWEEN t_ghs_tarifs.date_debut AND t_ghs_tarifs.date_fin AND + secteur = '2' + ; + UPDATE w_simulation SET + tarif_ghs_bb2_c = t_ghs_tarifs.tarif_ghs + FROM base.t_ghs_tarifs + WHERE ghs_bebe1_id = t_ghs_tarifs.ghs_id AND + ghs_bebe2_id <> 0 AND + ghm_code LIKE '14%' AND + date_sortie BETWEEN t_ghs_tarifs.date_debut AND t_ghs_tarifs.date_fin AND + secteur = '2' + ; + UPDATE w_simulation SET + tarif_ghs_bb3_c = t_ghs_tarifs.tarif_ghs + FROM base.t_ghs_tarifs + WHERE ghs_bebe1_id = t_ghs_tarifs.ghs_id AND + ghs_bebe3_id <> 0 AND + ghm_code LIKE '14%' AND + date_sortie BETWEEN t_ghs_tarifs.date_debut AND t_ghs_tarifs.date_fin AND + secteur = '2' + ; + + + UPDATE w_simulation SET + tarif_ghs_bb1_p = t_ghs_tarifs.tarif_ghs + FROM base.t_ghs_tarifs + WHERE ghs_bebe1_id = t_ghs_tarifs.ghs_id AND + ghs_bebe1_id <> 0 AND + ghm_code LIKE '14%' AND + date(date_trunc('month',date_sortie)-interval '1 year') BETWEEN t_ghs_tarifs.date_debut AND t_ghs_tarifs.date_fin AND + secteur = '2' + ; + UPDATE w_simulation SET + tarif_ghs_bb2_p = t_ghs_tarifs.tarif_ghs + FROM base.t_ghs_tarifs + WHERE ghs_bebe1_id = t_ghs_tarifs.ghs_id AND + ghs_bebe2_id <> 0 AND + ghm_code LIKE '14%' AND + date(date_trunc('month',date_sortie)-interval '1 year') BETWEEN t_ghs_tarifs.date_debut AND t_ghs_tarifs.date_fin AND + secteur = '2' + ; + UPDATE w_simulation SET + tarif_ghs_bb3_p = t_ghs_tarifs.tarif_ghs + FROM base.t_ghs_tarifs + WHERE ghs_bebe1_id = t_ghs_tarifs.ghs_id AND + ghs_bebe3_id <> 0 AND + ghm_code LIKE '14%' AND + date(date_trunc('month',date_sortie)-interval '1 year') BETWEEN t_ghs_tarifs.date_debut AND t_ghs_tarifs.date_fin AND + secteur = '2' + ; + + -- Nombre de séances + UPDATE w_simulation + SET nb = subview.nb + FROM + ( + SELECT p_mouvements_sejour.no_sejour, COUNT(DISTINCT p_mouvements_sejour.date) AS nb + FROM activite.p_mouvements_sejour + JOIN w_simulation ON w_simulation.no_sejour = p_mouvements_sejour.no_sejour AND + w_simulation.type_sejour = '5' + WHERE nb_seances > 0 + GROUP BY 1 + ) subview + WHERE w_simulation.no_sejour = subview.no_sejour + ; + + -- Nombre de séances selon PMSI + UPDATE w_simulation + SET nb = subview.nb + FROM + ( + SELECT p_sejour_pmsi.no_sejour, COUNT(DISTINCT date_fin) AS nb + FROM pmsi.p_rsf_detail + JOIN pmsi.p_rss ON p_rsf_detail.rss_id = p_rss.oid AND en_cours = '0' + JOIN pmsi.t_ghs ON t_ghs.oid = p_rsf_detail.ghs_id AND t_ghs.code = ANY(Array[9606]) + JOIN pmsi.t_prestations ON t_prestations.oid = p_rsf_detail.prestation_id AND t_prestations.code = 'GHS' + JOIN activite.p_sejour_pmsi ON p_sejour_pmsi.rss_id = p_rss.oid + JOIN w_simulation ON p_sejour_pmsi.no_sejour = w_simulation.no_sejour + GROUP BY 1 + HAVING MAX(w_simulation.nb) <> COUNT(DISTINCT p_rsf_detail.date_fin) AND + MAX(ghm_code) LIKE '28%' + ) subview + WHERE w_simulation.no_sejour = subview.no_sejour + ; + -- Nombre de séances selon facturation + UPDATE w_simulation + SET nb= subview.nb + FROM + ( + SELECT p_factures.no_sejour, SUM(nb_prestation) AS nb + FROM activite.p_factures_lignes_c + JOIN activite.t_prestations ON t_prestations.oid = prestation_id AND t_prestations.code = 'GHS' + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN w_simulation ON p_factures.no_sejour = w_simulation.no_sejour + WHERE w_simulation.nb = 1 AND w_simulation.ghm_code LIKE '28%' + GROUP BY 1 + HAVING SUM(nb_prestation) > 1) subview + WHERE w_simulation.no_sejour = subview.no_sejour + ; + -- Recherche montant réellement facturé + UPDATE w_simulation + SET coefficient_f = subview.coefficient_f, + montant_ghs_f = subview.montant_ghs_f, + montant_exh_f = subview.montant_exh_f + FROM + ( + SELECT p_factures.no_sejour, + MAX(CASE WHEN t_prestations.code = 'GHS' THEN coefficient_mco ELSE 0 END) AS coefficient_f, + round(SUM(CASE WHEN t_prestations.code = ANY(Array['GHS','FJ','FJM','FRL']) THEN montant_facture ELSE 0 END),2) AS montant_ghs_f, + round(SUM(CASE WHEN t_prestations.code = 'EXH' THEN montant_facture ELSE 0 END),2) AS montant_exh_f + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN w_simulation ON w_simulation.no_sejour = p_factures.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + t_prestations.code = ANY(Array['GHS','EXH','FJ','FJM','FRL']) AND + ( + t_prestations.code NOT IN ('FJ','FJM') OR + p_factures_lignes_c.date_fin < w_simulation.date_sortie + ) + GROUP BY 1 + ) + subview + WHERE w_simulation.no_sejour = subview.no_sejour + ; + + -- Si tarif ghs précédent inexistant (nouveau ghs), prendre tarif en cours + UPDATE w_simulation SET + tarif_ghs_p = tarif_ghs_c, + tarif_exh_p = tarif_exh_c, + tarif_exb_p = tarif_exb_c, + forfait_exb_p = forfait_exb_c, + borne_basse_p = borne_basse_c, + borne_haute_p = borne_haute_c + WHERE ok_ghs_p = '0' + ; + + -- Simulation calcul + UPDATE w_simulation SET + montant_ghs_c = round( + tarif_ghs_c * coefficient_c * nb + ,2), + montant_exh_c = round( + CASE + WHEN duree_sejour + CASE WHEN mode_sortie IN ('6','7','9') THEN 1 ELSE 0 END > borne_haute_c AND borne_haute_c > 0 + THEN tarif_exh_c * (duree_sejour + CASE WHEN mode_sortie IN ('6','7','9') THEN 1 ELSE 0 END - borne_haute_c) * coefficient_c + ELSE 0 END + ,2), + montant_exb_c = round( + 0 - CASE + WHEN borne_basse_c = 0 OR duree_sejour >= borne_basse_c OR mode_sortie = '9' THEN 0 + WHEN forfait_exb_c > 0 THEN forfait_exb_c * coefficient_c + WHEN forfait_exb_c = 0 AND tarif_exb_c > 0 AND duree_sejour = 0 THEN (tarif_ghs_c * coefficient_c) - (tarif_exb_c / 2 * coefficient_c) + WHEN forfait_exb_c = 0 AND tarif_exb_c > 0 AND duree_sejour > 0 THEN (tarif_exb_c * (borne_basse_c-duree_sejour)) * coefficient_c + ELSE 0 END + ,2), + montant_ghs_bb1_c = round(tarif_ghs_bb1_c * coefficient_c ,2), + montant_ghs_bb2_c = round(tarif_ghs_bb2_c * coefficient_c ,2), + montant_ghs_bb3_c = round(tarif_ghs_bb3_c * coefficient_c ,2), + montant_ghs_p = round( + tarif_ghs_p * coefficient_p * nb + ,2), + montant_exh_p = round( + CASE + WHEN duree_sejour + CASE WHEN mode_sortie IN ('6','7','9') THEN 1 ELSE 0 END > borne_haute_p AND borne_haute_p > 0 + THEN tarif_exh_p * (duree_sejour + CASE WHEN mode_sortie IN ('6','7','9') THEN 1 ELSE 0 END - borne_haute_p) * coefficient_p + ELSE 0 END + ,2), + montant_exb_p = round( + 0 - CASE + WHEN borne_basse_p = 0 OR duree_sejour >= borne_basse_p OR mode_sortie = '9' THEN 0 + WHEN forfait_exb_p > 0 THEN forfait_exb_p * coefficient_p + WHEN forfait_exb_p = 0 AND tarif_exb_p > 0 AND duree_sejour = 0 THEN (tarif_ghs_p * coefficient_p) - (tarif_exb_p / 2 * coefficient_p) + WHEN forfait_exb_p = 0 AND tarif_exb_p > 0 AND duree_sejour > 0 THEN (tarif_exb_p * (borne_basse_p-duree_sejour)) * coefficient_p + ELSE 0 END + ,2), + montant_ghs_bb1_p = round(tarif_ghs_bb1_p * coefficient_p ,2), + montant_ghs_bb2_p = round(tarif_ghs_bb2_p * coefficient_p ,2), + montant_ghs_bb3_p = round(tarif_ghs_bb3_p * coefficient_p ,2) + + ; + + -- Sur séances avec ucd enlever 40 euros + UPDATE w_simulation + SET montant_ghs_c = round(montant_ghs_c - 40*nb_ph8*coefficient_c,2), + montant_ghs_p = round(montant_ghs_p - 40*nb_ph8*coefficient_p,2) + FROM + ( + SELECT no_sejour, + count(DISTINCT date_fin) AS nb_ph8 + FROM + ( + SELECT p_factures.no_sejour, + p_factures_lignes_c.date_fin, + SUM(montant_facture) + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN w_simulation ON w_simulation.no_sejour = p_factures.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + t_prestations.code = ANY(Array['PH8','UCD']) + WHERE w_simulation.ghm_code = ANY(Array['28Z07Z','28Z17Z']) + GROUP BY 1,2 + HAVING SUM(montant_facture) <> 0 + ) subview + GROUP BY 1 + ) subview + WHERE w_simulation.no_sejour = subview.no_sejour AND + ABS(montant_ghs_f - montant_ghs_c) > 2 + ; + + + -- total + UPDATE w_simulation SET + montant_tot_f = montant_ghs_f + montant_exh_f, + montant_tot_c = montant_ghs_c + montant_exb_c + montant_exh_c + montant_ghs_bb1_c + montant_ghs_bb2_c + montant_ghs_bb3_c, + montant_tot_p = montant_ghs_p + montant_exb_p + montant_exh_p + montant_ghs_bb1_p + montant_ghs_bb2_p + montant_ghs_bb3_p + ; + + -- Complement bebe si ghs_bebe non trouve + UPDATE w_simulation SET + ghs_bebe1_id = subview.ghs_bebe1_id, + tarif_ghs_bb1_c = subview.tarif_ghs_bb1_c, + montant_ghs_bb1_c = subview.montant_ghs_bb1_c, + montant_tot_c = montant_tot_c + subview.montant_ghs_bb1_c, + tarif_ghs_bb1_p = subview.tarif_ghs_bb1_p, + montant_ghs_bb1_p = subview.montant_ghs_bb1_p, + montant_tot_p = montant_tot_p + subview.montant_ghs_bb1_p + FROM + ( + SELECT montant_ghs_bb1_c, + (MAX(ARRAY[nb,ghs_bebe1_id]))[2] AS ghs_bebe1_id, + (MAX(ARRAY[nb,tarif_ghs_bb1_c]))[2] AS tarif_ghs_bb1_c, + (MAX(ARRAY[nb,tarif_ghs_bb1_p]))[2] AS tarif_ghs_bb1_p, + (MAX(ARRAY[nb,montant_ghs_bb1_p]))[2] AS montant_ghs_bb1_p + FROM + ( + SELECT montant_ghs_bb1_c, + ghs_bebe1_id, + MAX(tarif_ghs_bb1_c) AS tarif_ghs_bb1_c, + MAX(tarif_ghs_bb1_p) AS tarif_ghs_bb1_p, + MAX(montant_ghs_bb1_p) AS montant_ghs_bb1_p, + count(*) AS nb + FROM w_simulation + WHERE ghm_code LIKE '14%' AND ghs_bebe1_id <> 0 + GROUP BY 1,2 + ) subview + GROUP BY 1 + ) subview + WHERE w_simulation.ghm_code LIKE '14%' AND + w_simulation.ghs_bebe1_id = 0 AND + subview.montant_ghs_bb1_c BETWEEN (montant_tot_f - montant_tot_c) - 0.01 AND (montant_tot_f - montant_tot_c) + 0.01 + ; + + -- Ajustement montant facture Forfait journalier JS ? + UPDATE w_simulation + SET montant_tot_f = montant_tot_c, + montant_ghs_f = montant_ghs_c + montant_exb_c + montant_ghs_bb1_c + montant_ghs_bb2_c + montant_ghs_bb3_c, + montant_exh_f = montant_exh_c + WHERE ABS(montant_tot_f - montant_tot_c) BETWEEN 17.99 AND 18.01 + ; + + -- Ajustement montant facture Centimes ? + UPDATE w_simulation + SET montant_tot_f = montant_tot_c, + montant_ghs_f = montant_ghs_c + montant_exb_c + montant_ghs_bb1_c + montant_ghs_bb2_c + montant_ghs_bb3_c, + montant_exh_f = montant_exh_c + WHERE ABS(montant_tot_f - montant_tot_c) BETWEEN 0.01 AND 0.03 + ; + + -- Pointeur séjour facturé + UPDATE w_simulation SET + ok_ghs_f = '0' + WHERE montant_tot_f = 0 + ; + + --Ajout à la table + TRUNCATE activite.p_sejour_effet_tarif; + INSERT INTO activite.p_sejour_effet_tarif + ( + sejour_id, + no_sejour, + ok_ghs_f, + coefficient_c, + ok_ghs_c, + tarif_ghs_c, + tarif_exh_c, + tarif_exb_c, + forfait_exb_c, + borne_basse_c, + borne_haute_c, + tarif_ghs_bb1_c, + tarif_ghs_bb2_c, + tarif_ghs_bb3_c, + coefficient_p, + ok_ghs_p, + tarif_ghs_p, + tarif_exh_p, + tarif_exb_p, + forfait_exb_p, + borne_basse_p, + borne_haute_p, + tarif_ghs_bb1_p, + tarif_ghs_bb2_p, + tarif_ghs_bb3_p, + montant_ghs_f, + montant_exh_f, + montant_tot_f, + montant_ghs_c, + montant_exb_c, + montant_exh_c, + montant_ghs_bb1_c, + montant_ghs_bb2_c, + montant_ghs_bb3_c, + montant_tot_c, + montant_ghs_p, + montant_exh_p, + montant_exb_p, + montant_tot_p, + montant_ghs_bb1_p, + montant_ghs_bb2_p, + montant_ghs_bb3_p + ) + SELECT + sejour_id, + no_sejour, + ok_ghs_f, + coefficient_c, + ok_ghs_c, + tarif_ghs_c, + tarif_exh_c, + tarif_exb_c, + forfait_exb_c, + borne_basse_c, + borne_haute_c, + tarif_ghs_bb1_c, + tarif_ghs_bb2_c, + tarif_ghs_bb3_c, + coefficient_p, + ok_ghs_p, + tarif_ghs_p, + tarif_exh_p, + tarif_exb_p, + forfait_exb_p, + borne_basse_p, + borne_haute_p, + tarif_ghs_bb1_p, + tarif_ghs_bb2_p, + tarif_ghs_bb3_p, + montant_ghs_f, + montant_exh_f, + montant_tot_f, + montant_ghs_c, + montant_exb_c, + montant_exh_c, + montant_ghs_bb1_c, + montant_ghs_bb2_c, + montant_ghs_bb3_c, + montant_tot_c, + montant_ghs_p, + montant_exh_p, + montant_exb_p, + montant_tot_p, + montant_ghs_bb1_p, + montant_ghs_bb2_p, + montant_ghs_bb3_p + FROM w_simulation + ; + + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_initialize_tables.yaml b/db/schema2/functions/cti_initialize_tables.yaml new file mode 100644 index 0000000..49e963e --- /dev/null +++ b/db/schema2/functions/cti_initialize_tables.yaml @@ -0,0 +1,246 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + BEGIN + + + -- Géographie + INSERT INTO base.t_regions(oid, code, texte, texte_court) + SELECT 0, chr(127) || '**', 'Non renseigné', 'Non renseigné' + WHERE 0 NOT IN (SELECT oid FROM base.t_regions); + + INSERT INTO base.t_departements(oid, code, texte, texte_court) + SELECT 0, chr(127) || '**', 'Non renseigné', 'Non renseigné' + WHERE 0 NOT IN (SELECT oid FROM base.t_departements); + + INSERT INTO base.t_territoires_sante(oid, code, texte, texte_court) + SELECT 0, chr(127) || '*******', 'Non renseigné', 'Non renseigné' + WHERE 0 NOT IN (SELECT oid FROM base.t_territoires_sante); + + INSERT INTO base.t_codes_geographiques_pmsi(oid, code, texte, texte_court, population, departement_id, territoire_sante_id) + SELECT 0, chr(127) || '*****', 'Non renseigné', 'Non renseigné', 0, 0, 0 + WHERE 0 NOT IN (SELECT oid FROM base.t_codes_geographiques_pmsi WHERE oid = 0); + + INSERT INTO base.t_codes_postaux(oid, code, texte, texte_court, secteur_geographique_id, population, + code_geographique_pmsi, longitude, latitude, departement_id, territoire_sante_id) + SELECT 0, chr(127) || '*****', 'Non renseigné', 'Non renseigné', 0, 0, '', 0, 0, 0, 0 + WHERE 0 NOT IN (SELECT oid FROM base.t_codes_postaux); + + -- Médecins + INSERT INTO base.t_specialites_medecin (oid, code, texte) + SELECT 0, chr(127) || '**', 'Non saisie' + WHERE 0 NOT IN (SELECT oid FROM base.t_specialites_medecin); + + INSERT INTO base.t_medecins (oid, code, nom, specialite_id) + SELECT 0, chr(127) || '******', 'Non saisi', 0 + WHERE 0 NOT IN (SELECT oid FROM base.t_medecins); + + -- GHM + INSERT INTO base.t_cmd(oid, code, texte, texte_court) + SELECT 0, chr(127) || '*', 'Hors PMSI', 'Hors PMSI' + WHERE 0 NOT IN (SELECT oid FROM base.t_cmd); + + INSERT INTO base.t_poles_oap(oid, code, texte, texte_court) + SELECT 0, chr(127) || '**', 'Hors PMSI', 'Hors PMSI' + WHERE 0 NOT IN (SELECT oid FROM base.t_poles_oap); + + INSERT INTO base.t_lignes_oap(oid, code, texte, pole_oap_id, mco) + SELECT 0, chr(127) || '****', 'Hors PMSI', 0, '*' + WHERE 0 NOT IN (SELECT oid FROM base.t_lignes_oap); + + INSERT INTO base.t_cas(oid, code, texte, texte_court) + SELECT 0, chr(127), 'Non renseigné', 'Non renseigné' + WHERE 0 NOT IN (SELECT oid FROM base.t_cas); + + INSERT INTO base.t_ipa(oid, code, texte, texte_court, categorie_oid, categorie_code, categorie_texte, categorie_texte_court) + SELECT 0, chr(127) || '**', 'Non renseigné', 'Non renseigné', 0, chr(127), 'Non renseigné', 'Non renseigné' + WHERE 0 NOT IN (SELECT oid FROM base.t_ipa); + + INSERT INTO base.t_ghm5 (oid, code, texte) + SELECT 0, chr(127) || '****', 'Hors PMSI' + WHERE 0 NOT IN (SELECT oid FROM base.t_ghm5); + + INSERT INTO base.t_ghm (oid, code, texte, ghm3, mco, aso, severite, statut, cmd_id, groupe_activite_id, ghm5_id, ligne_oap_id, cas_id) + SELECT 0, chr(127) || '*****', 'Hors PMSI', '*', '*', '*', '*', 'I', 0, 0, 0, 0, (SELECT oid FROM base.t_cas WHERE code = '*') + WHERE 0 NOT IN (SELECT oid FROM base.t_ghm); + + INSERT INTO base.t_ghs (oid, code, texte, ghm_id, borne_basse, borne_haute, dms_nationale) + SELECT 0, 0, 'Sans GHS', 0, 0, 0, 0 + WHERE 0 NOT IN (SELECT oid FROM base.t_ghs); + + -- GME + INSERT INTO base.t_gn (oid, code, texte) + SELECT 0, chr(127) || '****'::text, 'Non renseigné'::text + WHERE 0 NOT IN (SELECT oid FROM base.t_gn); + + INSERT INTO base.t_cm (oid, code, texte) + SELECT 0, chr(127) || '**'::text, 'Non renseigné'::text + WHERE 0 NOT IN (SELECT oid FROM base.t_cm); + + INSERT INTO base.t_rgme (oid, code, texte) + SELECT 0, chr(127) || '*****'::text, 'Non renseigné'::text + WHERE 0 NOT IN (SELECT oid FROM base.t_rgme); + + INSERT INTO base.t_gme (oid, code, texte, cm_id, gn_id, rgme_id) + SELECT 0, chr(127) || '******'::text, 'Non renseigné'::text, 0, 0, 0 + WHERE 0 NOT IN (SELECT oid FROM base.t_gme); + + -- Actes + INSERT INTO base.t_actes (oid, code, texte, texte_court) + SELECT 0, '*******', 'Non renseigné', 'Non renseigné' + WHERE 0 NOT IN (SELECT oid FROM base.t_actes); + + -- Regroupements CCAM + INSERT INTO base.t_ccam_regroupements (oid) + SELECT 0 + WHERE 0 NOT IN (SELECT oid FROM base.t_ccam_regroupements); + + -- Modes de traitement + INSERT INTO base.t_modes_traitement (oid, code, code_original, texte, texte_court) + SELECT 0, '**', '', 'Non renseigné', 'Non renseigné' + WHERE 0 NOT IN (SELECT oid FROM base.t_modes_traitement); + + + + + -- Activités + INSERT INTO activite.t_activites(oid, code_original, texte, texte_court, code, etage_par_defaut_id, etage_force_id) + SELECT 0, '0', 'Non renseigné', 'Non renseigné', '', 0, 0 + WHERE 0 NOT IN (SELECT oid FROM activite.t_activites); + + -- Etages + INSERT INTO activite.t_etages(oid, code_original, texte, texte_court, nb_lits, code, + section_id, section_code, section_texte) + SELECT 0, '0', 'Non renseigné', 'Non renseigné', 0, '', + array[0::bigint, 0::bigint, 0::bigint], + array[chr(127) || '***'::text, chr(127) || '***'::text, chr(127) || '***'::text], + array['Autres'::text, 'Autres'::text, 'Autres'::text] + WHERE 0 NOT IN (SELECT oid FROM activite.t_etages); + + -- Lieux + INSERT INTO activite.t_lieux(oid) + SELECT 0 + WHERE 0 NOT IN (SELECT oid FROM activite.t_lieux); + + -- Lits + INSERT INTO activite.t_lits (oid, texte, texte_court, etage_id, code, chambre_particuliere) + SELECT 0, 'Non renseigné', 'Non renseigné', 0, '*', 'N' + WHERE 0 NOT IN (SELECT oid FROM activite.t_lits); + + -- Médecins administratifs + INSERT INTO activite.t_medecins_administratifs (oid, code, code_original, nom, prenom, specialite_id, medecin_id, est_medecin_salarie) + SELECT 0, '****', '0', 'Non renseigné', '', 0, 0, 0 + WHERE 0 NOT IN (SELECT oid FROM activite.t_medecins_administratifs); + + -- Places + INSERT INTO activite.t_places_parents (oid, parent_code, parent_texte, parent_type) + SELECT 0, '', 'Non renseigné', 'ETA' + WHERE 0 NOT IN (SELECT oid FROM activite.t_places_parents); + + -- Prestations + INSERT INTO activite.t_prestations (oid, code_original, texte, texte_court, code) + SELECT 0, '0', 'Non renseigné', 'Non renseigné', '***' + WHERE 0 NOT IN (SELECT oid FROM activite.t_prestations); + UPDATE activite.t_prestations + SET code = '***' + WHERE oid = 0 AND + '***' NOT IN (SELECT code FROM activite.t_prestations WHERE code = '***'); + + -- Protocoles + INSERT INTO activite.t_protocoles (oid, code_original, texte, texte_court, code) + SELECT 0, '0', 'Non renseigné', 'Non renseigné', '***' + WHERE 0 NOT IN (SELECT oid FROM activite.t_protocoles); + + -- Rubriques facturation + INSERT INTO activite.t_rubriques_facturation (oid, code_original, texte, texte_court, code, actes_inclus_public) + SELECT 0, '0', 'Non renseigné', 'Non renseigné', '', '0' + WHERE 0 NOT IN (SELECT oid FROM activite.t_rubriques_facturation); + + -- Services de facturation + INSERT INTO activite.t_services_facturation (oid, code_original, texte, texte_court, code, nb_lits) + SELECT 0, '0', 'Non renseigné', 'Non renseigné', '', 0 + WHERE 0 NOT IN (SELECT oid FROM activite.t_services_facturation); + + -- Spécialités médecin + INSERT INTO activite.t_specialites_medecin (oid, code_original, texte, texte_court, code) + SELECT 0, '0', 'Non saisie', 'Non saisie', '' + WHERE 0 NOT IN (SELECT oid FROM activite.t_specialites_medecin); + + -- Tiers payant + INSERT INTO activite.t_tiers_payant (oid, code, code_original, texte, texte_court, type_tiers_payant) + SELECT 0, '', '', 'Non saisi', 'Non saisi', '0' + WHERE 0 NOT IN (SELECT oid FROM activite.t_tiers_payant); + + -- Unités fonctionnelles + INSERT INTO activite.t_unites_fonctionnelles (oid, code, code_original, texte, texte_court) + SELECT 0, '', '0', 'Non renseignée', 'Non renseignée' + WHERE 0 NOT IN (SELECT oid FROM activite.t_unites_fonctionnelles); + + -- Unités médicales + INSERT INTO activite.t_unites_medicales (oid, code, code_original, texte, texte_court) + SELECT 0, '', '0', 'Non renseignée', 'Non renseignée' + WHERE 0 NOT IN (SELECT oid FROM activite.t_unites_medicales); + + + -- Formes d'activité + INSERT INTO activite.t_forme_activite (oid, code, texte, texte_court) + SELECT 0, '**', 'Non renseignée', 'Non renseignée' + WHERE 0 NOT IN (SELECT oid FROM activite.t_forme_activite); + + -- Codes risque + INSERT INTO activite.t_risque (oid, code, texte) + SELECT 0, '**', 'Non renseigné' + WHERE 0 NOT IN (SELECT oid FROM activite.t_risque); + + -- Motifs de non facturation + INSERT INTO activite.t_motif_non_facturation(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECt oid FROM activite.t_motif_non_facturation) + ; + INSERT INTO activite.t_motif_non_facturation(code_original, code, texte, texte_court) + SELECT '*CTIZZZ', '*AUTRES', 'Autres', 'Autres' WHERE '*CTIZZZ' NOT IN (SELECT code_original FROM activite.t_motif_non_facturation) + ; + INSERT INTO activite.t_motif_non_facturation(code_original, code, texte, texte_court) + SELECT '*CTING', '*NG', 'Non groupé', 'Non groupé' WHERE '*CTING' NOT IN (SELECT code_original FROM activite.t_motif_non_facturation) + ; + + + -- Liste des tables pour installation après version + INSERT INTO activite.t_listes_tables (code, name, texte, select_cmd) + SELECT + 'FORMEACTIVITE', + 't_forme_activite', + 'Formes d''activité', + 'SELECT oid, code, texte, ''''::text as complement, + CASE WHEN oid in (SELECT oid FROM activite.p_oids WHERE code_table IN (''forme_activite'')) THEN ''O'' ELSE ''N'' END as utilise + FROM activite.t_forme_activite + ORDER BY 2' + WHERE 'FORMEACTIVITE' NOT IN (SELECT code FROM activite.t_listes_tables WHERE code IS NOT NULL) + ; + WITH subview AS + (SELECT + 'FORMEACTIVITE'::text AS code, + 't_forme_activite'::text AS name, + 'Formes d''activité'::text AS texte, + 'SELECT oid, code, texte, ''''::text as complement, + CASE WHEN oid in (SELECT oid FROM activite.p_oids WHERE code_table IN (''forme_activite'')) THEN ''O'' ELSE ''N'' END as utilise + FROM activite.t_forme_activite + ORDER BY 2'::text AS select_cmd + ) + UPDATE activite.t_listes_tables SET + name = subview.name, + texte = subview.texte, + select_cmd = subview.select_cmd + FROM subview + WHERE t_listes_tables.code = subview.code AND + ( + t_listes_tables.name IS DISTINCT FROM subview.name OR + t_listes_tables.texte IS DISTINCT FROM subview.texte OR + t_listes_tables.select_cmd IS DISTINCT FROM subview.select_cmd + ) + ; + + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_kiwee_sigems_honpatcpt.yaml b/db/schema2/functions/cti_kiwee_sigems_honpatcpt.yaml new file mode 100644 index 0000000..ae70dd3 --- /dev/null +++ b/db/schema2/functions/cti_kiwee_sigems_honpatcpt.yaml @@ -0,0 +1,343 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + BEGIN + + -- Non comptabilisation des honoaraires / patients + + DROP TABLE IF EXISTS w_medecin_non_solde; + CREATE TEMP TABLE w_medecin_non_solde AS + SELECT no_facture, + facture_id, + medecin_comptabilise_id, + + rubrique_comptabilisee_id, + prestation_id, + MIN(date_comptable) AS date_comptable, + SUM(montant_comptabilise_0) - SUM(montant_regle_0) AS solde_0 + FROM activite.p_factures_soldes_h + JOIN activite.t_medecins_administratifs ON medecin_comptabilise_id = t_medecins_administratifs.oid + WHERE medecin_comptabilise_id <> 0 AND + KIWEE_SIGEMS_HONPATCPT = '0' + GROUP BY 1,2,3,4,5 + HAVING SUM(montant_comptabilise_0) <> SUM(montant_regle_0) + ; + + ANALYSE w_medecin_non_solde + ; + + -- Deduction du montant depassement dans les lignes comptables + INSERT INTO activite.p_factures_soldes_h( + facture_id, + no_facture, + date_comptable, + medecin_comptabilise_id, + prestation_id, + rubrique_comptabilisee_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + + ) + SELECT + facture_id, + no_facture, + date_comptable, + medecin_comptabilise_id, + prestation_id, + rubrique_comptabilisee_id, + 0::numeric - solde_0 AS montant_comptabilise, + 0::numeric - solde_0 AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS montant_regle, + 0::numeric AS montant_regle_0, + 0::numeric AS montant_regle_1, + 0::numeric AS montant_regle_2, + 0 AS montant_regle_22, + '1'::text AS od_non_comptabilise + FROM w_medecin_non_solde + ; + + + -- Modification montant comptabilise dans les lignes facturees + UPDATE activite.p_factures_lignes_h SET + montant_comptabilise = montant_comptabilise - montant_comptabilise_0, + montant_comptabilise_0 = 0 + FROM activite.t_medecins_administratifs + WHERE medecin_comptabilise_id = t_medecins_administratifs.oid AND + KIWEE_SIGEMS_HONPATCPT = '0' AND + montant_comptabilise_0 <> 0 + ; + + -- Correction des totaux factures (comptabilise) + DROP TABLE IF EXISTS w_depassement_non_compta_corr; + CREATE TEMP TABLE w_depassement_non_compta_corr AS + SELECT no_facture, SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0 + FROM activite.p_factures_lignes_h + WHERE no_facture IN (SELECT no_facture FROM w_medecin_non_solde) + GROUP BY 1 + ; + + ANALYSE w_depassement_non_compta_corr + ; + + UPDATE activite.p_factures SET + montant_comptabilise_h = w_depassement_non_compta_corr.montant_comptabilise, + montant_comptabilise_0_h = w_depassement_non_compta_corr.montant_comptabilise_0 + FROM w_depassement_non_compta_corr + WHERE w_depassement_non_compta_corr.no_facture = p_factures.no_facture AND + ( + montant_comptabilise_h IS DISTINCT FROM w_depassement_non_compta_corr.montant_comptabilise OR + montant_comptabilise_0_h IS DISTINCT FROM w_depassement_non_compta_corr.montant_comptabilise_0 + ) + ; + + + -- Non comptabilisation des dépassements / patients + + -- Reperage des factures honoraires non soldees (les soldees ne sont pas concernees) + DROP TABLE IF EXISTS w_medecin_non_solde; + CREATE TEMP TABLE w_medecin_non_solde AS + SELECT no_facture, + medecin_comptabilise_id, + rubrique_comptabilisee_id, + prestation_id + FROM activite.p_factures_soldes_h + JOIN activite.t_medecins_administratifs ON medecin_comptabilise_id = t_medecins_administratifs.oid + WHERE medecin_comptabilise_id <> 0 AND + KIWEE_SIGEMS_HONPATCPTDEP = '0' + GROUP BY 1,2,3,4 + HAVING SUM(montant_comptabilise_0) <> SUM(montant_regle_0) + ; + + ANALYSE w_medecin_non_solde + ; + + -- Lignes honoraires avec depassement honoraire patient (sauf les medecins parametres) + DROP TABLE IF EXISTS w_depassement_non_compta; + CREATE TEMP TABLE w_depassement_non_compta AS + SELECT p_factures_lignes_h.no_facture, + p_factures.oid AS facture_id, + p_factures.date_vente, + p_factures_lignes_h.medecin_facture_id, + t_medecins_administratifs.code, + p_factures_lignes_h.montant_comptabilise_0, + p_factures_lignes_h.montant_depassement, + p_factures_lignes_h.rubrique_facturation_id, + p_factures_lignes_h.prestation_id, + p_factures_lignes_h.CTID AS from_CTID + FROM activite.p_factures_lignes_h + JOIN activite.p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite.t_medecins_administratifs ON medecin_facture_id = t_medecins_administratifs.oid + JOIN w_medecin_non_solde ON + p_factures_lignes_h.no_facture = w_medecin_non_solde.no_facture AND + p_factures_lignes_h.medecin_facture_id = w_medecin_non_solde.medecin_comptabilise_id AND + p_factures_lignes_h.prestation_id = w_medecin_non_solde.prestation_id AND + p_factures_lignes_h.rubrique_facturation_id = w_medecin_non_solde.rubrique_comptabilisee_id + WHERE KIWEE_SIGEMS_HONPATCPTDEP = '0' AND + montant_depassement <> 0 AND + abs(montant_depassement) <= abs(montant_comptabilise_0) AND + montant_comptabilise_0 <> 0 + ; + + ANALYSE w_depassement_non_compta + ; + + -- Total par medecin et prestation + DROP TABLE IF EXISTS w_depassement_non_compta_ven; + CREATE TEMP TABLE w_depassement_non_compta_ven AS + SELECT no_facture, + facture_id, + date_vente, + medecin_facture_id, + prestation_id, + rubrique_facturation_id, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_depassement) AS montant_depassement + FROM w_depassement_non_compta + GROUP BY 1,2,3,4,5,6 + ; + + + ANALYSE w_depassement_non_compta_ven + ; + + -- Deduction du montant depassement dans les lignes comptables + INSERT INTO activite.p_factures_soldes_h( + facture_id, + no_facture, + date_comptable, + medecin_comptabilise_id, + prestation_id, + rubrique_comptabilisee_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + + ) + SELECT + facture_id, + no_facture, + date_vente, + medecin_facture_id, + prestation_id, + rubrique_facturation_id, + 0::numeric - montant_depassement AS montant_comptabilise, + 0::numeric - montant_depassement AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS montant_regle, + 0::numeric AS montant_regle_0, + 0::numeric AS montant_regle_1, + 0::numeric AS montant_regle_2, + 0 AS montant_regle_22, + '0'::text AS od_non_comptabilise + FROM w_depassement_non_compta_ven + ; + + -- Deduction des depassements dans les lignes de reglements regul + INSERT INTO activite.p_factures_soldes_h( + facture_id, + no_facture, + date_comptable, + medecin_comptabilise_id, + prestation_id, + rubrique_comptabilisee_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + + ) + SELECT + facture_id, + no_facture, + date_vente, + 0::bigint AS medecin_comptabilise_id, + 0::bigint AS prestation_id, + 0::bigint AS rubrique_comptabiliseen_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric - SUM(montant_depassement) AS montant_regle, + 0::numeric - SUM(montant_depassement) AS montant_regle_0, + 0::numeric AS montant_regle_1, + 0::numeric AS montant_regle_2, + 0 AS montant_regle_22, + '1'::text AS od_non_comptabilise + FROM w_depassement_non_compta_ven + WHERE no_facture IN (SELECT no_facture FROM activite.p_factures_soldes_h WHERE medecin_comptabilise_id = 0 AND montant_regle_0 <> 0) + GROUP BY 1,2,3 + ; + + -- Modification montant comptabilise dans les lignes facturees + UPDATE activite.p_factures_lignes_h SET + montant_comptabilise = p_factures_lignes_h.montant_comptabilise - w_depassement_non_compta.montant_depassement, + montant_comptabilise_0 = p_factures_lignes_h.montant_comptabilise_0 - w_depassement_non_compta.montant_depassement + FROM w_depassement_non_compta + WHERE p_factures_lignes_h.no_facture = w_depassement_non_compta.no_facture AND + p_factures_lignes_h.CTID = w_depassement_non_compta.from_CTID + ; + + -- Correction des totaux factures (comptabilise) + DROP TABLE IF EXISTS w_depassement_non_compta_corr; + CREATE TEMP TABLE w_depassement_non_compta_corr AS + SELECT no_facture, SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0 + FROM activite.p_factures_lignes_h + WHERE no_facture IN (SELECT no_facture FROM w_depassement_non_compta_ven) + GROUP BY 1 + ; + + ANALYSE w_depassement_non_compta_corr + ; + + UPDATE activite.p_factures SET + montant_comptabilise_h = w_depassement_non_compta_corr.montant_comptabilise, + montant_comptabilise_0_h = w_depassement_non_compta_corr.montant_comptabilise_0 + FROM w_depassement_non_compta_corr + WHERE w_depassement_non_compta_corr.no_facture = p_factures.no_facture + ; + + + -- Purge des montants OD regles (annules par negatif) + DROP TABLE IF EXISTS w_depassement_non_compta_corr_purge; + CREATE TEMP TABLE w_depassement_non_compta_corr_purge AS + SELECT p_factures_soldes_h.no_facture, + SUM(montant_regle_0) AS montant_regle_0, + SUM(montant_regle) AS montant_regle + FROM activite.p_factures_soldes_h + JOIN activite.p_factures On p_factures_soldes_h.no_facture = p_factures.no_facture + WHERE medecin_comptabilise_id = 0 AND + montant_regle_0 <> 0 + GROUP BY 1 + HAVING SUM(p_factures.montant_facture_h) >= 0 AND SUM(montant_regle_0) <= 0 OR + SUM(p_factures.montant_facture_h) < 0 AND SUM(montant_regle_0) > 0 + ; + + ANALYSE w_depassement_non_compta_corr_purge + ; + + DELETE FROM activite.p_factures_soldes_h + USING w_depassement_non_compta_corr_purge + WHERE p_factures_soldes_h.no_facture = w_depassement_non_compta_corr_purge.no_facture AND + p_factures_soldes_h.medecin_comptabilise_id = 0 AND + p_factures_soldes_h.montant_regle_0 <> 0 + ; + + -- Correction des totaux factures (regle) + DROP TABLE IF EXISTS w_depassement_non_compta_corr; + CREATE TEMP TABLE w_depassement_non_compta_corr AS + SELECT p_factures_soldes_h.no_facture, + SUM(p_factures_soldes_h.montant_regle) AS montant_regle, + SUM(p_factures_soldes_h.montant_regle_0) AS montant_regle_0 + FROM activite.p_factures_soldes_h + JOIN activite.p_factures ON p_factures_soldes_h.no_facture = p_factures.no_facture + GROUP BY 1 + HAVING SUM(p_factures_soldes_h.montant_regle_0) <> MAX(p_factures.montant_regle_0_h) + ; + + ANALYSE w_depassement_non_compta_corr + ; + + UPDATE activite.p_factures SET + montant_regle_h = w_depassement_non_compta_corr.montant_regle, + montant_regle_0_h = w_depassement_non_compta_corr.montant_regle_0 + FROM w_depassement_non_compta_corr + WHERE w_depassement_non_compta_corr.no_facture = p_factures.no_facture + ; + + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_now_activite~tx.yaml b/db/schema2/functions/cti_now_activite~tx.yaml new file mode 100644 index 0000000..019d482 --- /dev/null +++ b/db/schema2/functions/cti_now_activite~tx.yaml @@ -0,0 +1,36 @@ +return: date +lang: plpgsql +parameters: + p0: + type: text + name: i_option +src: | + DECLARE + + _now_activite date; + BEGIN + IF NOT EXISTS (SELECT * FROM activite.t_divers WHERE code = 'NOW') THEN + INSERT INTO activite.t_divers (code, texte, valeur, valeur_date, description, valeur2) + SELECT + 'NOW', + 'Date des derniers mouvements', + now_activite, + now_activite, + 'Date non modifiable', + '' + FROM (SELECT MAX(date) AS now_activite FROM activite.p_mouvements_sejour WHERE est_mouvement_previsionnel <> '1') subview + WHERE 'NOW' NOT IN (SELECT code FROM activite.t_divers); + END IF; + IF i_option = 'FORCE' THEN + UPDATE activite.t_divers + SET + valeur_date = now_activite, + valeur = now_activite + FROM (SELECT MAX(date) AS now_activite FROM activite.p_mouvements_sejour WHERE est_mouvement_previsionnel <> '1') subview + WHERE code = 'NOW'; + END IF; + + _now_activite = (SELECT valeur_date FROM activite.t_divers WHERE code = 'NOW'); + + RETURN _now_activite; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_now~tx,tx.yaml b/db/schema2/functions/cti_now~tx,tx.yaml new file mode 100644 index 0000000..2663a4a --- /dev/null +++ b/db/schema2/functions/cti_now~tx,tx.yaml @@ -0,0 +1,75 @@ +return: date +lang: plpgsql +parameters: + p0: + type: text + name: i_code + p1: + type: text + name: i_option +src: | + DECLARE + _code text; + _option text; + _now date; + BEGIN + _code = i_code; + IF _code NOT IN ('NOW', 'NOWCLOTURE') THEN + _code = 'NOW'; + END IF; + _option = i_option; + IF NOT EXISTS (SELECT * FROM activite.t_divers WHERE code = _code) THEN + _option = 'FORCE'; + END IF; + -- Nouveaux paramètres dans t_divers pour gestion date de fermeture + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'DATEFERMETURE', + 'Date fermeture établissement', + '', + 'Date de fermeture (AAAAMMJJ). Vide si ouvert ' + WHERE 'DATEFERMETURE' NOT IN (SELECT code FROM activite.t_divers); + + IF _option = 'FORCE' THEN + _now = + CASE _code + WHEN 'NOW' THEN + (SELECT MAX(date) FROM activite.p_mouvements_sejour WHERE date < now() AND est_mouvement_previsionnel <> '1') + WHEN 'NOWCLOTURE' THEN + (SELECT date(date_trunc('month',MAX(date_vente)) - interval '1 day') + FROM activite.p_factures + WHERE date_vente <= (SELECT MAX(date) FROM activite.p_mouvements_sejour WHERE date < now() AND est_mouvement_previsionnel <> '1') + ) + ELSE date(now()) + END; + + UPDATE activite.t_divers SET + texte = CASE _code + WHEN 'NOW' THEN 'Date des derniers mouvements' + WHEN 'NOWCLOTURE' THEN 'Date clôture' + ELSE 'Date des derniers mouvements' + END, + valeur = _now::text, + valeur_date = _now, + show_info_module = true + WHERE code = _code; + INSERT INTO activite.t_divers (code, texte, valeur, valeur_date, description, valeur2, show_info_module) + SELECT + _code, + CASE _code + WHEN 'NOW' THEN 'Date des derniers mouvements' + WHEN 'NOWCLOTURE' THEN 'Date clôture' + ELSE 'Date des derniers mouvements' + END, + _now::text, + _now, + 'Date non modifiable', + '', + true + WHERE _code NOT IN (SELECT code FROM activite.t_divers); + ELSE + _now = (SELECT valeur_date FROM activite.t_divers WHERE code = _code); + END IF; + + RETURN _now; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_prepare_rapport_calc_indicator~tx,tx,in,in,bi,bi,bi,bi,bi,bi,bi,bi.yaml b/db/schema2/functions/cti_prepare_rapport_calc_indicator~tx,tx,in,in,bi,bi,bi,bi,bi,bi,bi,bi.yaml new file mode 100644 index 0000000..b95e126 --- /dev/null +++ b/db/schema2/functions/cti_prepare_rapport_calc_indicator~tx,tx,in,in,bi,bi,bi,bi,bi,bi,bi,bi.yaml @@ -0,0 +1,76 @@ +return: text +lang: plpgsql +parameters: + p0: + type: text + name: i_column_name + p1: + type: text + name: i_table_name + p2: + type: integer + name: i_indicators_count + p3: + type: integer + name: i_array_index + p4: + type: bigint + name: i_indicateur_id + p5: + type: bigint + name: i_indicateur_associe_1_id + p6: + type: bigint + name: i_indicateur_associe_2_id + p7: + type: bigint + name: i_indicateur_associe_3_id + p8: + type: bigint + name: i_indicateur_associe_4_id + p9: + type: bigint + name: i_indicateur_associe_5_id + p10: + type: bigint + name: i_indicateur_associe_6_id + p11: + type: bigint + name: i_indicateur_associe_7_id +comment: Remplace la fonction cti_prepare_rapport_calc_indicator( 2x text, 2x integer, 6x bigint) +src: | + DECLARE + column_name text; + array_index text; + BEGIN + array_index = ''; + if i_array_index > 0 THEN + END IF; + if i_table_name <> '*CALC' THEN + column_name = 'SUM(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_id)::text || ']' ||')'; + ELSE + column_name = replace(i_column_name, '[1]', 'SUM(COALESCE(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_1_id)::text || '],0)' ||')'); + column_name = replace(column_name, '[2]', 'SUM(COALESCE(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_2_id)::text || '],0)' ||')'); + column_name = replace(column_name, '[3]', 'SUM(COALESCE(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_3_id)::text || '],0)' ||')'); + column_name = replace(column_name, '[4]', 'SUM(COALESCE(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_4_id)::text || '],0)' ||')'); + column_name = replace(column_name, '[5]', 'SUM(COALESCE(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_5_id)::text || '],0)' ||')'); + column_name = replace(column_name, '[6]', 'SUM(COALESCE(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_6_id)::text || '],0)' ||')'); + column_name = replace(column_name, '[7]', 'SUM(COALESCE(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_7_id)::text || '],0)' ||')'); + --column_name = replace(column_name, '[8]', 'SUM(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_8_id)::text || ']' ||')'); + --column_name = replace(column_name, '[9]', 'SUM(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_9_id)::text || ']' ||')'); + --column_name = replace(column_name, '[10]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_10_id)::text || ']' ||')'); + --column_name = replace(column_name, '[11]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_11_id)::text || ']' ||')'); + --column_name = replace(column_name, '[12]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_12_id)::text || ']' ||')'); + --column_name = replace(column_name, '[13]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_13_id)::text || ']' ||')'); + --column_name = replace(column_name, '[14]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_14_id)::text || ']' ||')'); + --column_name = replace(column_name, '[15]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_15_id)::text || ']' ||')'); + --column_name = replace(column_name, '[16]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_16_id)::text || ']' ||')'); + --column_name = replace(column_name, '[17]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_17_id)::text || ']' ||')'); + --column_name = replace(column_name, '[18]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_18_id)::text || ']' ||')'); + --column_name = replace(column_name, '[19]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_19_id)::text || ']' ||')'); + --column_name = replace(column_name, '[20]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_20_id)::text || ']' ||')'); + + END IF; + + RETURN column_name; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_prepare_rapport_calc_indicator~tx,tx,in,in,bi,bi,bi,bi,bi,bi.yaml b/db/schema2/functions/cti_prepare_rapport_calc_indicator~tx,tx,in,in,bi,bi,bi,bi,bi,bi.yaml new file mode 100644 index 0000000..234cb60 --- /dev/null +++ b/db/schema2/functions/cti_prepare_rapport_calc_indicator~tx,tx,in,in,bi,bi,bi,bi,bi,bi.yaml @@ -0,0 +1,72 @@ +return: text +lang: plpgsql +parameters: + p0: + type: text + name: i_column_name + p1: + type: text + name: i_table_name + p2: + type: integer + name: i_indicators_count + p3: + type: integer + name: i_array_index + p4: + type: bigint + name: i_indicateur_id + p5: + type: bigint + name: i_indicateur_associe_1_id + p6: + type: bigint + name: i_indicateur_associe_2_id + p7: + type: bigint + name: i_indicateur_associe_3_id + p8: + type: bigint + name: i_indicateur_associe_4_id + p9: + type: bigint + name: i_indicateur_associe_5_id +comment: | + Remplacée par la fonction cti_prepare_rapport_calc_indicator( 2x text, 2x integer, 8x bigint). + Elle est conservée pour la rétro-compatibilité +src: | + DECLARE + column_name text; + array_index text; + BEGIN + array_index = ''; + if i_array_index > 0 THEN + END IF; + if i_table_name <> '*CALC' THEN + column_name = 'SUM(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_id)::text || ']' ||')'; + ELSE + column_name = replace(i_column_name, '[1]', 'SUM(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_1_id)::text || ']' ||')'); + column_name = replace(column_name, '[2]', 'SUM(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_2_id)::text || ']' ||')'); + column_name = replace(column_name, '[3]', 'SUM(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_3_id)::text || ']' ||')'); + column_name = replace(column_name, '[4]', 'SUM(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_4_id)::text || ']' ||')'); + column_name = replace(column_name, '[5]', 'SUM(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_5_id)::text || ']' ||')'); + --column_name = replace(column_name, '[6]', 'SUM(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_6_id)::text || ']' ||')'); + --column_name = replace(column_name, '[7]', 'SUM(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_7_id)::text || ']' ||')'); + --column_name = replace(column_name, '[8]', 'SUM(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_8_id)::text || ']' ||')'); + --column_name = replace(column_name, '[9]', 'SUM(indicateurs[000' || (i_array_index * i_indicators_count + i_indicateur_associe_9_id)::text || ']' ||')'); + --column_name = replace(column_name, '[10]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_10_id)::text || ']' ||')'); + --column_name = replace(column_name, '[11]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_11_id)::text || ']' ||')'); + --column_name = replace(column_name, '[12]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_12_id)::text || ']' ||')'); + --column_name = replace(column_name, '[13]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_13_id)::text || ']' ||')'); + --column_name = replace(column_name, '[14]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_14_id)::text || ']' ||')'); + --column_name = replace(column_name, '[15]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_15_id)::text || ']' ||')'); + --column_name = replace(column_name, '[16]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_16_id)::text || ']' ||')'); + --column_name = replace(column_name, '[17]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_17_id)::text || ']' ||')'); + --column_name = replace(column_name, '[18]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_18_id)::text || ']' ||')'); + --column_name = replace(column_name, '[19]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_19_id)::text || ']' ||')'); + --column_name = replace(column_name, '[20]', 'SUM(indicateurs[00' || (i_array_index * i_indicators_count + i_indicateur_associe_20_id)::text || ']' ||')'); + + END IF; + + RETURN column_name; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_prepare_rapport_comp~bi,tx,tx.yaml b/db/schema2/functions/cti_prepare_rapport_comp~bi,tx,tx.yaml new file mode 100644 index 0000000..6eaf265 --- /dev/null +++ b/db/schema2/functions/cti_prepare_rapport_comp~bi,tx,tx.yaml @@ -0,0 +1,370 @@ +return: SETOF record +lang: plpgsql +parameters: + p0: + type: bigint + name: i_rapport_id + p1: + type: text + name: type_comp + p2: + type: text + name: mode_comp +src: | + DECLARE + + _maxind integer; + row RECORD; + + BEGIN + + -- Valeurs de type_comp + -- -1 : Pas de comparaison + -- 2 : Comparaison avec année précédente + -- 3 : Comparaison avec deux années précédentes + -- 4 : Comparaison avec trois années précédentes + -- S : Comparaison avec une période donnéeach + + -- Valeurs de mode_comp + -- PREC : Comparaison avec l'année directement précédente + -- FIRST : Comparaison avec la première période (la plus ancienne) + -- LAST : Comparaison avec la dernière période (la plus récente) + + -- Valeurs du quatrième paramètre (i_array_index) de la fonction activite.cti_prepare_rapport_calc_indicator(text, text, integer, integer, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint) : + -- 0 : valeur pour l'année n + -- 1 : valeur pour l'année n-1 + -- 2 : valeur pour l'année n-2 + -- 3 : valeur pour l'année n-3 + -- 4 : valeur du dernier mois de l'année n + -- 5 : valeur du dernier mois de l'année n-1 + -- 6 : valeur du dernier mois de l'année n-2 + -- 7 : valeur du dernier mois de l'année n-3 + + -- _maxind représente le plus grand identifiant des indicateurs présents dans le rapport dont l'id est passé en paramètre de la fonction + _maxind = activite.cti_prepare_rapport_maxoid(i_rapport_id); + + FOR row IN + SELECT * FROM activite.cti_prepare_rapport_indicateurs(i_rapport_id, 'COMP') AS (name text, value text) + UNION + SELECT 'RUBRIQUES_RAPPORT', + + + base.cti_group_concat( + 'ARRAY[' || + + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ', ' || + + CASE + WHEN mode_comp = 'PREC' AND type_comp <> '-1' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + WHEN mode_comp = 'FIRST' THEN + CASE + WHEN type_comp = '2' OR type_comp = 'S' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + WHEN type_comp = '3' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + WHEN type_comp = '4' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + ELSE '0::integer' END + ELSE '0::integer' END || ', ' || + + CASE + WHEN mode_comp = 'PREC' AND type_comp <> '-1' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + WHEN mode_comp = 'FIRST' THEN + CASE + WHEN type_comp = '2' OR type_comp = 'S' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + WHEN type_comp = '3' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + WHEN type_comp = '4' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + ELSE '0::integer' END + ELSE '0::integer' END || ', ' || + + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ', ' || + + CASE + WHEN mode_comp = 'PREC' AND type_comp IN ('3', '4') THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + WHEN mode_comp = 'FIRST' THEN + CASE + WHEN type_comp = '3' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + WHEN type_comp = '4' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + ELSE '0::integer' END + WHEN mode_comp = 'LAST' AND type_comp <> '-1' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + ELSE '0::integer' END || ', ' || + + CASE + WHEN mode_comp = 'PREC' AND type_comp IN ('3', '4') THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + WHEN mode_comp = 'FIRST' THEN + CASE + WHEN type_comp = '3' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + WHEN type_comp = '4' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + ELSE '0::integer' END + WHEN mode_comp = 'LAST' AND type_comp <> '-1' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + ELSE '0::integer' END || ', ' || + + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ', ' || + + CASE + WHEN (mode_comp = 'PREC' OR mode_comp = 'FIRST') AND type_comp = '4' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + WHEN mode_comp = 'LAST' AND type_comp IN ('3', '4') THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + ELSE '0::integer' END || ', ' || + CASE + WHEN (mode_comp = 'PREC' OR mode_comp = 'FIRST') AND type_comp = '4' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + WHEN mode_comp = 'LAST' AND type_comp IN ('3', '4') THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + ELSE '0::integer' END || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ', ' || + + CASE + WHEN mode_comp = 'LAST' AND type_comp = '4' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + ELSE '0::integer' END || ', ' || + CASE + WHEN mode_comp = 'LAST' AND type_comp = '4' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + ELSE '0::integer' END || ', ' || + + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ', ' || + + CASE + WHEN mode_comp = 'PREC' AND type_comp <> '-1' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + WHEN mode_comp = 'FIRST' THEN + CASE + WHEN type_comp = '2' OR type_comp = 'S' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + WHEN type_comp = '3' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + WHEN type_comp = '4' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + ELSE '0::integer' END + ELSE '0::integer' END || ', ' || + + CASE + WHEN mode_comp = 'PREC' AND type_comp <> '-1' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + WHEN mode_comp = 'FIRST' THEN + CASE + WHEN type_comp = '2' OR type_comp = 'S' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + WHEN type_comp = '3' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + WHEN type_comp = '4' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + ELSE '0::integer' END + ELSE '0::integer' END || ', ' || + + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ', ' || + + CASE + WHEN mode_comp = 'PREC' AND type_comp IN ('3', '4') THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + WHEN mode_comp = 'FIRST' THEN + CASE + WHEN type_comp = '3' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + WHEN type_comp = '4' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + ELSE '0::integer' END + WHEN mode_comp = 'LAST' AND type_comp <> '-1' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + ELSE '0::integer' END || ', ' || + + CASE + WHEN mode_comp = 'PREC' AND type_comp IN ('3', '4') THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + WHEN mode_comp = 'FIRST' THEN + CASE + WHEN type_comp = '3' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + WHEN type_comp = '4' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + ELSE '0::integer' END + WHEN mode_comp = 'LAST' AND type_comp <> '-1' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + ELSE '0::integer' END || ', ' || + + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ', ' || + + CASE + WHEN (mode_comp = 'PREC' OR mode_comp = 'FIRST') AND type_comp = '4' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + WHEN mode_comp = 'LAST' AND type_comp IN ('3', '4') THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + ELSE '0::integer' END || ', ' || + CASE + WHEN (mode_comp = 'PREC' OR mode_comp = 'FIRST') AND type_comp = '4' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + WHEN mode_comp = 'LAST' AND type_comp IN ('3', '4') THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + ELSE '0::integer' END || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ', ' || + + CASE + WHEN mode_comp = 'LAST' AND type_comp = '4' THEN + '((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')) ' + ELSE '0::integer' END || ', ' || + CASE + WHEN mode_comp = 'LAST' AND type_comp = '4' THEN + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ' > 0 THEN base.cti_division (((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') - (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ')), (' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || + ')) * 100 ELSE 0 END' + ELSE '0::integer' END + + || ']' + ) + + FROM (SELECT * FROM activite.t_rapports_rubriques + JOIN activite.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid + WHERE rapport_id = i_rapport_id ORDER BY numero_rubrique + ) subview + + LOOP + RETURN NEXT row; + END LOOP; + + RETURN ; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_prepare_rapport_comp~bi.yaml b/db/schema2/functions/cti_prepare_rapport_comp~bi.yaml new file mode 100644 index 0000000..d585633 --- /dev/null +++ b/db/schema2/functions/cti_prepare_rapport_comp~bi.yaml @@ -0,0 +1,96 @@ +return: SETOF record +lang: plpgsql +parameters: + p0: + type: bigint + name: i_rapport_id +comment: Fonction remplacée par activite.cti_prepare_rapport_comp(bigint, bigint) mais laissée pour des raisons de rétro-compatibilité +src: | + DECLARE + sqlcmd text; + + + temp_cursor refcursor; + _oid integer; + _maxind integer; + + row RECORD; + BEGIN + + _maxind = activite.cti_prepare_rapport_maxoid(i_rapport_id); + + FOR row IN + SELECT * FROM activite.cti_prepare_rapport_indicateurs(i_rapport_id, 'COMP') AS (name text, value text) + UNION + SELECT 'RUBRIQUES_RAPPORT', + + + base.cti_group_concat( + 'ARRAY[' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ', ' || + + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ', ' || + + '(' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' - ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') ' || + ', ' || + + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || '> 0 THEN ' || + 'base.cti_division((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' - ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || '), ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') * 100 ' || + 'ELSE 0 END, ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ', ' || + + '(' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' - ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') ' || + ', ' || + + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || '> 0 THEN ' || + 'base.cti_division((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' - ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || '), ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') * 100 ' || + 'ELSE 0 END , ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ', ' || + + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ', ' || + + '(' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' - ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') ' || + ', ' || + + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || '> 0 THEN ' || + 'base.cti_division((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' - ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || '), ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') * 100 ' || + 'ELSE 0 END, ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ', ' || + + '(' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' - ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') ' || + ', ' || + + 'CASE WHEN ' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' > 0 AND ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || '> 0 THEN ' || + 'base.cti_division((' || activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ' - ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || '), ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id ) || ') * 100 ' || + 'ELSE 0 END ' || + ']' + ) + + FROM (SELECT * FROM activite.t_rapports_rubriques + JOIN activite.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid + WHERE rapport_id = i_rapport_id ORDER BY numero_rubrique + ) subview + + LOOP + + + RETURN NEXT row; + END LOOP; + RETURN ; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_prepare_rapport_get_column~tx,tx.yaml b/db/schema2/functions/cti_prepare_rapport_get_column~tx,tx.yaml new file mode 100644 index 0000000..6a50142 --- /dev/null +++ b/db/schema2/functions/cti_prepare_rapport_get_column~tx,tx.yaml @@ -0,0 +1,109 @@ +return: text +lang: plpgsql +parameters: + p0: + type: text + name: i_column_name + p1: + type: text + name: i_option +src: | + DECLARE + to_column_name text; + listeString text; + listeCode text; + d int; + f int; + l int; + BEGIN + to_column_name = i_column_name; + IF (i_option = 'MONTH') THEN + IF to_column_name NOT ILIKE 'DISTINCT%' THEN + to_column_name = 'CASE WHEN COLUMNCHECKSEQUENCE THEN ' || to_column_name || ' ELSE NULL END'; + ELSE + to_column_name = 'DISTINCT CASE WHEN COLUMNCHECKSEQUENCE THEN ' || substr(to_column_name,9) || ' ELSE NULL END'; + END IF; + END IF; + d = strpos(to_column_name,'[LISTE:'); + IF (d > 0) THEN + f = strpos(to_column_name,']'); + IF (f > 0) THEN + l = f - d + 1; + listeString = substr(to_column_name, d, l); + listeCode = substr(listeString, 8, length(listeString) - 8); + to_column_name = replace(to_column_name, listeString, '(SELECT to_id FROM activite.t_listes JOIN activite.t_listes_contenu ON t_listes.oid = t_listes_contenu.liste_id WHERE t_listes.code = ''' || listeCode || ''')'); + END IF; + END IF; + d = strpos(to_column_name,'[LISTE:'); + IF (d > 0) THEN + f = strpos(to_column_name,']'); + IF (f > 0) THEN + l = f - d + 1; + listeString = substr(to_column_name, d, l); + listeCode = substr(listeString, 8, length(listeString) - 8); + to_column_name = replace(to_column_name, listeString, '(SELECT to_id FROM activite.t_listes JOIN activite.t_listes_contenu ON t_listes.oid = t_listes_contenu.liste_id WHERE t_listes.code = ''' || listeCode || ''')'); + END IF; + END IF; + d = strpos(to_column_name,'[LISTE:'); + IF (d > 0) THEN + f = strpos(to_column_name,']'); + IF (f > 0) THEN + l = f - d + 1; + listeString = substr(to_column_name, d, l); + listeCode = substr(listeString, 8, length(listeString) - 8); + to_column_name = replace(to_column_name, listeString, '(SELECT to_id FROM activite.t_listes JOIN activite.t_listes_contenu ON t_listes.oid = t_listes_contenu.liste_id WHERE t_listes.code = ''' || listeCode || ''')'); + END IF; + END IF; + d = strpos(to_column_name,'[LISTE:'); + IF (d > 0) THEN + f = strpos(to_column_name,']'); + IF (f > 0) THEN + l = f - d + 1; + listeString = substr(to_column_name, d, l); + listeCode = substr(listeString, 8, length(listeString) - 8); + to_column_name = replace(to_column_name, listeString, '(SELECT to_id FROM activite.t_listes JOIN activite.t_listes_contenu ON t_listes.oid = t_listes_contenu.liste_id WHERE t_listes.code = ''' || listeCode || ''')'); + END IF; + END IF; + d = strpos(to_column_name,'[LISTE:'); + IF (d > 0) THEN + f = strpos(to_column_name,']'); + IF (f > 0) THEN + l = f - d + 1; + listeString = substr(to_column_name, d, l); + listeCode = substr(listeString, 8, length(listeString) - 8); + to_column_name = replace(to_column_name, listeString, '(SELECT to_id FROM activite.t_listes JOIN activite.t_listes_contenu ON t_listes.oid = t_listes_contenu.liste_id WHERE t_listes.code = ''' || listeCode || ''')'); + END IF; + END IF; + d = strpos(to_column_name,'[CLASSE:'); + IF (d > 0) THEN + f = strpos(to_column_name,']'); + IF (f > 0) THEN + l = f - d + 1; + listeString = substr(to_column_name, d, l); + listeCode = substr(listeString, 9, length(listeString) - 9); + to_column_name = replace(to_column_name, listeString, '(SELECT to_id FROM activite.t_classes JOIN activite.t_classes_sections ON classe_id = t_classes.oid JOIN activite.t_classes_sections_elements ON section_id = t_classes_sections.oid WHERE t_classes.code || '':'' || t_classes_sections.code = ''' || listeCode || ''')'); + END IF; + END IF; + d = strpos(to_column_name,'[CLASSE:'); + IF (d > 0) THEN + f = strpos(to_column_name,']'); + IF (f > 0) THEN + l = f - d + 1; + listeString = substr(to_column_name, d, l); + listeCode = substr(listeString, 9, length(listeString) - 9); + to_column_name = replace(to_column_name, listeString, '(SELECT to_id FROM activite.t_classes JOIN activite.t_classes_sections ON classe_id = t_classes.oid JOIN activite.t_classes_sections_elements ON section_id = t_classes_sections.oid WHERE t_classes.code || '':'' || t_classes_sections.code = ''' || listeCode || ''')'); + END IF; + END IF; + d = strpos(to_column_name,'[CLASSE:'); + IF (d > 0) THEN + f = strpos(to_column_name,']'); + IF (f > 0) THEN + l = f - d + 1; + listeString = substr(to_column_name, d, l); + listeCode = substr(listeString, 9, length(listeString) - 9); + to_column_name = replace(to_column_name, listeString, '(SELECT to_id FROM activite.t_classes JOIN activite.t_classes_sections ON classe_id = t_classes.oid JOIN activite.t_classes_sections_elements ON section_id = t_classes_sections.oid WHERE t_classes.code || '':'' || t_classes_sections.code = ''' || listeCode || ''')'); + END IF; + END IF; + + RETURN to_column_name; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_prepare_rapport_indicateurs~bi,tx.yaml b/db/schema2/functions/cti_prepare_rapport_indicateurs~bi,tx.yaml new file mode 100644 index 0000000..f1d8e1a --- /dev/null +++ b/db/schema2/functions/cti_prepare_rapport_indicateurs~bi,tx.yaml @@ -0,0 +1,238 @@ +return: SETOF record +lang: plpgsql +parameters: + p0: + type: bigint + name: i_rapport_id + p1: + type: text + name: i_option +src: | + DECLARE + sqlcmd text; + + + _maxind integer; + + row RECORD; + BEGIN + + _maxind = activite.cti_prepare_rapport_maxoid(i_rapport_id); + + + IF (i_option <> 'COMP' AND i_rapport_id <> 0) THEN + FOR row IN + SELECT + 'INDICATEURS_' || subview_s.table_name || '#' || subview_s.dimension_date, + CASE WHEN SUM(subview.oid) > 0 + THEN base.cti_group_concat(CASE WHEN subview.oid IS NOT NULL THEN total_function || '(' || activite.cti_prepare_rapport_get_column(column_name,'') || ')' ELSE 'NULL::numeric' END) + ELSE '' END + FROM + (SELECT v_rapports_tables_indicateurs_1.code AS table_name, generate_series AS indicateur_id , dimension_date + FROM activite.v_rapports_tables_indicateurs_1, generate_series(1, _maxind), base.cti_unnest(Array['1','2','3','4','5']) AS dimension_date + WHERE dimensions_date LIKE '%' || dimension_date || '%') subview_s + LEFT JOIN + ( + + SELECT * + FROM activite.t_indicateurs + WHERE oid IN ( + SELECT base.cti_unnest(Array[indicateur_id, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id]) + FROM activite.t_rapports + JOIN activite.t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id + JOIN activite.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid) + ) subview ON subview_s.indicateur_id = subview.oid AND subview.table_name = subview_s.table_name AND subview.dimension_date = subview_s.dimension_date + GROUP BY 1 + UNION + SELECT + 'INDICATEURS_BUDGET'::text, + CASE WHEN SUM(subview.oid) > 0 + THEN base.cti_group_concat(CASE WHEN subview.oid IS NOT NULL THEN 'SUM' || '(' || activite.cti_prepare_rapport_get_column('CASE WHEN indicateur_id = ' || subview.oid::text || ' THEN budget ELSE 0 END','') || ')' ELSE 'NULL::numeric' END) + ELSE '' END + FROM + ( + SELECT * + FROM + (SELECT generate_series AS indicateur_id , ''::text AS dimension_date + FROM generate_series(1, _maxind) + ORDER BY 1) subview_s + LEFT JOIN + ( + + SELECT * + FROM activite.t_indicateurs + WHERE oid IN ( + SELECT base.cti_unnest(Array[indicateur_id, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id]) + FROM activite.t_rapports + JOIN activite.t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id + JOIN activite.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid) + AND oid IN (SELECT indicateur_id FROM activite.t_budget_cle_budget) + ) subview ON subview_s.indicateur_id = subview.oid + ORDER BY 1 + ) subview + GROUP BY 1 + + ORDER BY 1 + + + + LOOP + RETURN NEXT row; + END LOOP; + + END IF; + FOR row IN + SELECT + 'INDICATEURS_WHERE_' || subview_s.table_name || '#' || subview_s.dimension_date, + CASE WHEN SUM(subview.oid) > 0 + THEN + 'AND (1<>1 ' || base.cti_group_concat_without_sep( + CASE WHEN subview.oid IS NOT NULL + THEN ' OR ' || + CASE WHEN total_function <> 'COUNT' THEN 'COALESCE(' || activite.cti_prepare_rapport_get_column(column_name,'') || ',0) <> 0' + ELSE replace(activite.cti_prepare_rapport_get_column(column_name,''),'DISTINCT', '') || ' IS NOT NULL' END + ELSE '' END) || ')' + ELSE '' END + FROM + (SELECT v_rapports_tables_indicateurs_1.code AS table_name, generate_series AS indicateur_id , dimension_date + FROM activite.v_rapports_tables_indicateurs_1, generate_series(1,_maxind), base.cti_unnest(Array['1','2','3','4','5']) AS dimension_date + WHERE dimensions_date LIKE '%' || dimension_date || '%') subview_s + LEFT JOIN + ( + + SELECT * + FROM activite.t_indicateurs + WHERE oid IN ( + SELECT base.cti_unnest(Array[indicateur_id, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id]) + FROM activite.t_rapports + JOIN activite.t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id + JOIN activite.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid) + ) subview ON subview_s.indicateur_id = subview.oid AND subview.table_name = subview_s.table_name AND subview.dimension_date = subview_s.dimension_date + GROUP BY 1 + UNION + SELECT + 'INDICATEURS_WHERE_BUDGET'::text, + CASE WHEN SUM(subview.oid) > 0 + THEN + 'AND (1<>1 ' || base.cti_group_concat_without_sep( + CASE WHEN subview.oid IS NOT NULL + THEN ' OR ' || + 'COALESCE(' || activite.cti_prepare_rapport_get_column('CASE WHEN indicateur_id = ' || subview.oid || ' THEN budget ELSE 0 END','') || ',0) <> 0' + ELSE '' END) || ')' + ELSE '' END + FROM + (SELECT generate_series AS indicateur_id , ''::text AS dimension_date + FROM generate_series(1, _maxind) + GROUP BY 1 ORDER BY 1) subview_s + LEFT JOIN + ( + + SELECT * + FROM activite.t_indicateurs + WHERE oid IN ( + SELECT base.cti_unnest(Array[indicateur_id, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id]) + FROM activite.t_rapports + JOIN activite.t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id + JOIN activite.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid) + AND oid IN (SELECT indicateur_id FROM activite.t_budget_cle_budget) + ) subview ON subview_s.indicateur_id = subview.oid + GROUP BY 1 + ORDER BY 1 + + + + LOOP + RETURN NEXT row; + END LOOP; + IF (i_option = 'MONTH' OR i_option = 'COMP') AND i_rapport_id <> 0 THEN + FOR row IN + SELECT + 'INDICATEURS_COLUMNS_' || subview_s.table_name || '#' || subview_s.dimension_date, + CASE WHEN SUM(subview.oid) > 0 + THEN base.cti_group_concat(CASE WHEN subview.oid IS NOT NULL THEN total_function || '(' || activite.cti_prepare_rapport_get_column(column_name,'MONTH') || ')' ELSE 'NULL::numeric' END) + ELSE '' END + FROM + (SELECT v_rapports_tables_indicateurs_1.code AS table_name, generate_series AS indicateur_id , dimension_date + FROM activite.v_rapports_tables_indicateurs_1, generate_series(1, _maxind), base.cti_unnest(Array['1','2','3','4','5']) AS dimension_date + WHERE dimensions_date LIKE '%' || dimension_date || '%') subview_s + LEFT JOIN + ( + + SELECT * + FROM activite.t_indicateurs + WHERE oid IN ( + SELECT base.cti_unnest(Array[indicateur_id, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id]) + FROM activite.t_rapports + JOIN activite.t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id + JOIN activite.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid) + ) subview ON subview_s.indicateur_id = subview.oid AND subview.table_name = subview_s.table_name AND subview.dimension_date = subview_s.dimension_date + GROUP BY 1 + UNION + SELECT + 'INDICATEURS_COLUMNS_BUDGET'::text, + CASE WHEN SUM(subview.oid) > 0 + THEN base.cti_group_concat(CASE WHEN subview.oid IS NOT NULL THEN 'SUM' || '(' || activite.cti_prepare_rapport_get_column('CASE WHEN indicateur_id = ' || subview.oid::text || ' THEN budget ELSE 0 END','MONTH') || ')' ELSE 'NULL::numeric' END) + ELSE '' END + FROM + (SELECT subview_s.indicateur_id, subview_s.dimension_date, subview.oid + FROM + (SELECT generate_series AS indicateur_id , ''::text AS dimension_date + FROM generate_series(1, _maxind) + GROUP BY 1 ORDER BY 1) subview_s + LEFT JOIN + ( + + SELECT * + FROM activite.t_indicateurs + WHERE oid IN ( + SELECT base.cti_unnest(Array[indicateur_id, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id]) + FROM activite.t_rapports + JOIN activite.t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id + JOIN activite.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid) + AND oid IN (SELECT indicateur_id FROM activite.t_budget_cle_budget) + ) subview ON subview_s.indicateur_id = subview.oid + ORDER BY 1 + ) subview + GROUP BY 1 + ORDER BY 1 + + + + LOOP + RETURN NEXT row; + END LOOP; + + END IF; + IF (i_option = 'DASHBOARD') THEN + FOR row IN + SELECT + 'INDICATEURS_' || subview_s.table_name || '#' || subview_s.dimension_date, + CASE WHEN SUM(subview.oid) > 0 + THEN base.cti_group_concat(CASE WHEN subview.oid IS NOT NULL THEN total_function || '(' || activite.cti_prepare_rapport_get_column(column_name,'') || ')' ELSE 'NULL::numeric' END) + ELSE '' END + FROM + (SELECT v_rapports_tables_indicateurs_1.code AS table_name, generate_series AS indicateur_id , dimension_date + FROM activite.v_rapports_tables_indicateurs_1, generate_series(1, _maxind), base.cti_unnest(Array['1','2','3','4','5']) AS dimension_date + WHERE dimensions_date LIKE '%' || dimension_date || '%') subview_s + LEFT JOIN + ( + + SELECT * + FROM activite.t_indicateurs + WHERE oid IN ( + SELECT base.cti_unnest(Array[oid, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id]) + FROM activite.t_indicateurs WHERE code <> '' AND t_indicateurs.oid > 0 AND (indicateur_reference_id <> 0 OR COALESCE(dimension_date_2,'') = '')) + ) subview ON subview_s.indicateur_id = subview.oid AND subview.table_name = subview_s.table_name AND subview.dimension_date = subview_s.dimension_date + GROUP BY 1 + ORDER BY 1 + + + + LOOP + RETURN NEXT row; + END LOOP; + + END IF; + + RETURN ; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_prepare_rapport_maxoid~bi.yaml b/db/schema2/functions/cti_prepare_rapport_maxoid~bi.yaml new file mode 100644 index 0000000..77a2b8a --- /dev/null +++ b/db/schema2/functions/cti_prepare_rapport_maxoid~bi.yaml @@ -0,0 +1,41 @@ +return: integer +lang: plpgsql +parameters: + p0: + type: bigint + name: i_rapport_id +src: | + DECLARE + + + temp_cursor refcursor; + _oid integer; + _maxind integer; + BEGIN + + _maxind = 100; + IF i_rapport_id <> 0 THEN + + OPEN temp_cursor FOR + SELECT MAX(oid) + FROM activite.t_indicateurs + WHERE oid IN ( + SELECT base.cti_unnest(Array[indicateur_id, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id, indicateur_associe_6_id, indicateur_associe_7_id]) + FROM activite.t_rapports + JOIN activite.t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id + JOIN activite.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid); + ELSE + OPEN temp_cursor FOR + SELECT MAX(oid) + FROM activite.t_indicateurs; + END IF; + + FETCH temp_cursor INTO _oid; + WHILE FOUND LOOP + _maxind = _oid; + FETCH temp_cursor INTO _oid; + END LOOP; + CLOSE temp_cursor; + + RETURN _maxind; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_prepare_rapport_month~bi.yaml b/db/schema2/functions/cti_prepare_rapport_month~bi.yaml new file mode 100644 index 0000000..254ff68 --- /dev/null +++ b/db/schema2/functions/cti_prepare_rapport_month~bi.yaml @@ -0,0 +1,67 @@ +return: SETOF record +lang: plpgsql +parameters: + p0: + type: bigint + name: i_rapport_id +src: | + DECLARE + sqlcmd text; + + temp_cursor refcursor; + _oid integer; + _maxind integer; + + row RECORD; + BEGIN + + + _maxind = activite.cti_prepare_rapport_maxoid(i_rapport_id); + FOR row IN + SELECT * FROM activite.cti_prepare_rapport_indicateurs(i_rapport_id, 'MONTH') AS (name text, value text) + UNION + SELECT 'RUBRIQUES_RAPPORT', + + + base.cti_group_concat( + 'ARRAY[' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 8, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 9, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 10, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 11, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 12, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 13, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 14, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 15, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 16, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 17, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 18, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 19, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 20, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 21, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 22, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) || ', ' || + activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 23, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id ) + + || ']' + ) + + FROM (SELECT * FROM activite.t_rapports_rubriques + JOIN activite.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid + WHERE rapport_id = i_rapport_id ORDER BY numero_rubrique + ) subview + + LOOP + + + RETURN NEXT row; + END LOOP; + RETURN ; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_prepare_rapport~bi.yaml b/db/schema2/functions/cti_prepare_rapport~bi.yaml new file mode 100644 index 0000000..637859d --- /dev/null +++ b/db/schema2/functions/cti_prepare_rapport~bi.yaml @@ -0,0 +1,75 @@ +return: SETOF record +lang: plpgsql +parameters: + p0: + type: bigint + name: i_rapport_id +src: | + DECLARE + sqlcmd text; + + + temp_cursor refcursor; + _oid integer; + _maxind integer; + + row RECORD; + BEGIN + + _maxind = activite.cti_prepare_rapport_maxoid(i_rapport_id); + + FOR row IN + SELECT * FROM activite.cti_prepare_rapport_indicateurs(i_rapport_id, '') AS (name text, value text) + + UNION + + + SELECT 'RUBRIQUES_RAPPORT', + base.cti_group_concat(activite.cti_prepare_rapport_calc_indicator(column_name, table_name, _maxind, 0, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ,indicateur_associe_6_id ,indicateur_associe_7_id)) + FROM (SELECT * FROM activite.t_rapports_rubriques + JOIN activite.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid + WHERE rapport_id = i_rapport_id ORDER BY numero_rubrique + ) subview + UNION + + + SELECT 'IC' || numero_rubrique::text, t_indicateurs.oid::text FROM activite.t_rapports_rubriques, activite.t_indicateurs + WHERE t_rapports_rubriques.rapport_id = i_rapport_id AND t_rapports_rubriques.indicateur_id = t_indicateurs.oid + + UNION + + SELECT 'IH' || numero_rubrique::text, CASE WHEN t_rapports_rubriques.entete <> '' THEN t_rapports_rubriques.entete ELSE t_indicateurs.entete END FROM activite.t_rapports_rubriques, activite.t_indicateurs + WHERE t_rapports_rubriques.rapport_id = i_rapport_id AND t_rapports_rubriques.indicateur_id = t_indicateurs.oid + + UNION + + SELECT 'IW' || numero_rubrique::text, + CASE + WHEN t_indicateurs.table_name = 'SEP' THEN '2' + WHEN t_rapports_rubriques.width > 0 THEN t_rapports_rubriques.width::text + WHEN t_indicateurs.width > 0 THEN t_indicateurs.width::text + ELSE '80' + END + FROM activite.t_rapports_rubriques, activite.t_indicateurs + WHERE t_rapports_rubriques.rapport_id = i_rapport_id AND t_rapports_rubriques.indicateur_id = t_indicateurs.oid + + UNION + + SELECT 'IO' || numero_rubrique::text, + CASE WHEN t_rapports_rubriques.output_format <> '' THEN t_rapports_rubriques.output_format + WHEN t_indicateurs.output_format <> '' THEN t_indicateurs.output_format + ELSE '#' END + FROM activite.t_rapports_rubriques, activite.t_indicateurs + WHERE t_rapports_rubriques.rapport_id = i_rapport_id AND t_rapports_rubriques.indicateur_id = t_indicateurs.oid + + UNION + + SELECT 'IT' || numero_rubrique::text, t_indicateurs.table_name::text FROM activite.t_rapports_rubriques, activite.t_indicateurs + WHERE t_rapports_rubriques.rapport_id = i_rapport_id AND t_rapports_rubriques.indicateur_id = t_indicateurs.oid + LOOP + + + RETURN NEXT row; + END LOOP; + RETURN ; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_actes_c.yaml b/db/schema2/functions/cti_reorganize_actes_c.yaml new file mode 100644 index 0000000..912af83 --- /dev/null +++ b/db/schema2/functions/cti_reorganize_actes_c.yaml @@ -0,0 +1,197 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + BEGIN + DELETE FROM activite.t_actes_c + WHERE oid NOT IN (SELECT oid FROM base.t_actes); + + UPDATE activite.t_actes_c SET + code = t_actes.code, + texte = t_actes.texte, + texte_court = t_actes.texte_court, + nomenclature = t_actes.nomenclature, + classant = t_actes.classant, + ccam_regroupement_id_1 = t_actes.ccam_regroupement_id_1, + ccam_regroupement_code_1 = t_ccam_regroupements_1.code, + ccam_regroupement_texte_1 = t_ccam_regroupements_1.texte, + ccam_regroupement_id_4 = t_actes.ccam_regroupement_id_4, + ccam_regroupement_code_4 = t_ccam_regroupements_4.code, + ccam_regroupement_texte_4 = t_ccam_regroupements_4.code, + chapitre_1_id = t_actes.chapitre_1_id, + chapitre_1_code = t_actes.chapitre_1_code, + chapitre_1_texte = t_actes.chapitre_1_texte, + chapitre_2_id = t_actes.chapitre_2_id, + chapitre_2_code = t_actes.chapitre_2_code, + chapitre_2_texte = t_actes.chapitre_2_texte, + chapitre_3_id = CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END, + chapitre_3_code = CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END, + chapitre_3_texte = CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END, + chapitre_4_id = CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN + CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END + ELSE t_actes.chapitre_4_id END, + chapitre_4_code = CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN + CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END + ELSE t_actes.chapitre_4_code END, + chapitre_4_texte = CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN + CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END + ELSE t_actes.chapitre_4_texte END, + type_id = t_actes.type_id, + type_code = t_actes.type_code, + type_texte = t_actes.type_texte, + topographie_1_id = t_actes.topographie_1_id, + topographie_1_code = t_actes.topographie_1_code, + topographie_1_texte = t_actes.topographie_1_texte, + topographie_2_id = t_actes.topographie_2_id, + topographie_2_code = t_actes.topographie_2_code, + topographie_2_texte = t_actes.topographie_2_texte, + action_id = t_actes.action_id, + action_code = t_actes.action_code, + action_texte = t_actes.action_texte, + technique_id = t_actes.technique_id, + technique_code = t_actes.technique_code, + technique_texte = t_actes.technique_texte + FROM base.t_actes + JOIN base.t_ccam_regroupements t_ccam_regroupements_1 ON t_actes.ccam_regroupement_id_1 = t_ccam_regroupements_1.oid + JOIN base.t_ccam_regroupements t_ccam_regroupements_4 ON t_actes.ccam_regroupement_id_4 = t_ccam_regroupements_4.oid + WHERE t_actes_c.oid = t_actes.oid AND + ( + t_actes_c.code IS DISTINCT FROM t_actes.code OR + t_actes_c.texte IS DISTINCT FROM t_actes.texte OR + t_actes_c.texte_court IS DISTINCT FROM t_actes.texte_court OR + t_actes_c.nomenclature IS DISTINCT FROM t_actes.nomenclature OR + t_actes_c.classant IS DISTINCT FROM t_actes.classant OR + t_actes_c.ccam_regroupement_id_1 IS DISTINCT FROM t_actes.ccam_regroupement_id_1 OR + t_actes_c.ccam_regroupement_code_1 IS DISTINCT FROM t_ccam_regroupements_1.code OR + t_actes_c.ccam_regroupement_texte_1 IS DISTINCT FROM t_ccam_regroupements_1.texte OR + t_actes_c.ccam_regroupement_id_4 IS DISTINCT FROM t_actes.ccam_regroupement_id_4 OR + t_actes_c.ccam_regroupement_code_4 IS DISTINCT FROM t_ccam_regroupements_4.code OR + t_actes_c.ccam_regroupement_texte_4 IS DISTINCT FROM t_ccam_regroupements_4.code OR + t_actes_c.chapitre_1_id IS DISTINCT FROM t_actes.chapitre_1_id OR + t_actes_c.chapitre_1_code IS DISTINCT FROM t_actes.chapitre_1_code OR + t_actes_c.chapitre_1_texte IS DISTINCT FROM t_actes.chapitre_1_texte OR + t_actes_c.chapitre_2_id IS DISTINCT FROM t_actes.chapitre_2_id OR + t_actes_c.chapitre_2_code IS DISTINCT FROM t_actes.chapitre_2_code OR + t_actes_c.chapitre_2_texte IS DISTINCT FROM t_actes.chapitre_2_texte OR + t_actes_c.chapitre_3_id IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END OR + t_actes_c.chapitre_3_code IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END OR + t_actes_c.chapitre_3_texte IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END OR + t_actes_c.chapitre_4_id IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN + CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END + ELSE t_actes.chapitre_4_id END OR + t_actes_c.chapitre_4_code IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN + CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END + ELSE t_actes.chapitre_4_code END OR + t_actes_c.chapitre_4_texte IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN + CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END + ELSE t_actes.chapitre_4_texte END OR + t_actes_c.type_id IS DISTINCT FROM t_actes.type_id OR + t_actes_c.type_code IS DISTINCT FROM t_actes.type_code OR + t_actes_c.type_texte IS DISTINCT FROM t_actes.type_texte OR + t_actes_c.topographie_1_id IS DISTINCT FROM t_actes.topographie_1_id OR + t_actes_c.topographie_1_code IS DISTINCT FROM t_actes.topographie_1_code OR + t_actes_c.topographie_1_texte IS DISTINCT FROM t_actes.topographie_1_texte OR + t_actes_c.topographie_2_id IS DISTINCT FROM t_actes.topographie_2_id OR + t_actes_c.topographie_2_code IS DISTINCT FROM t_actes.topographie_2_code OR + t_actes_c.topographie_2_texte IS DISTINCT FROM t_actes.topographie_2_texte OR + t_actes_c.action_id IS DISTINCT FROM t_actes.action_id OR + t_actes_c.action_code IS DISTINCT FROM t_actes.action_code OR + t_actes_c.action_texte IS DISTINCT FROM t_actes.action_texte OR + t_actes_c.technique_id IS DISTINCT FROM t_actes.technique_id OR + t_actes_c.technique_code IS DISTINCT FROM t_actes.technique_code OR + t_actes_c.technique_texte IS DISTINCT FROM t_actes.technique_texte + ); + INSERT INTO activite.t_actes_c( + oid, + code, + texte, + texte_court, + nomenclature, + classant, + ccam_regroupement_id_1, + ccam_regroupement_code_1, + ccam_regroupement_texte_1, + ccam_regroupement_id_4, + ccam_regroupement_code_4, + ccam_regroupement_texte_4, + chapitre_1_id, + chapitre_1_code, + chapitre_1_texte, + chapitre_2_id, + chapitre_2_code, + chapitre_2_texte, + chapitre_3_id, + chapitre_3_code, + chapitre_3_texte, + chapitre_4_id, + chapitre_4_code, + chapitre_4_texte, + type_id, + type_code, + type_texte, + topographie_1_id, + topographie_1_code, + topographie_1_texte, + topographie_2_id, + topographie_2_code, + topographie_2_texte, + action_id, + action_code, + action_texte, + technique_id, + technique_code, + technique_texte) + SELECT + t_actes.oid, + t_actes.code, + t_actes.texte, + t_actes.texte_court, + t_actes.nomenclature, + t_actes.classant, + t_actes.ccam_regroupement_id_1, + t_ccam_regroupements_1.code AS ccam_regroupement_code_1, + t_ccam_regroupements_1.texte_court AS ccam_regroupement_texte_1, + t_actes.ccam_regroupement_id_4, + t_ccam_regroupements_4.code AS ccam_regroupement_code_4, + t_ccam_regroupements_4.texte_court AS ccam_regroupement_texte_4, + t_actes.chapitre_1_id AS ccam_chapitre_1_id, + t_actes.chapitre_1_code AS ccam_chapitre_1_code, + t_actes.chapitre_1_texte AS ccam_chapitre_1_texte, + t_actes.chapitre_2_id AS ccam_chapitre_2_id, + t_actes.chapitre_2_code AS ccam_chapitre_2_code, + t_actes.chapitre_2_texte AS ccam_chapitre_2_texte, + CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END AS ccam_chapitre_3_id, + CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END AS ccam_chapitre_3_code, + CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END AS ccam_chapitre_3_texte, + CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN + CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END + ELSE t_actes.chapitre_4_id END AS ccam_chapitre_4_id, + CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN + CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END + ELSE t_actes.chapitre_4_code END AS ccam_chapitre_4_code, + CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN + CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END + ELSE t_actes.chapitre_4_texte END AS ccam_chapitre_4_texte, + t_actes.type_id AS ccam_type_id, + t_actes.type_code AS ccam_type_code, + t_actes.type_texte AS ccam_type_texte, + t_actes.topographie_1_id AS ccam_topographie_1_id, + t_actes.topographie_1_code AS ccam_topographie_1_code, + t_actes.topographie_1_texte AS ccam_topographie_1_texte, + t_actes.topographie_2_id AS ccam_topographie_2_id, + t_actes.topographie_2_code AS ccam_topographie_2_code, + t_actes.topographie_2_texte AS ccam_topographie_2_texte, + t_actes.action_id AS ccam_action_id, + t_actes.action_code AS ccam_action_code, + t_actes.action_texte AS ccam_action_texte, + t_actes.technique_id AS ccam_technique_id, + t_actes.technique_code AS ccam_technique_code, + t_actes.technique_texte AS ccam_technique_texte + FROM base.t_actes + JOIN base.t_ccam_regroupements t_ccam_regroupements_1 ON t_actes.ccam_regroupement_id_1 = t_ccam_regroupements_1.oid + JOIN base.t_ccam_regroupements t_ccam_regroupements_4 ON t_actes.ccam_regroupement_id_4 = t_ccam_regroupements_4.oid + WHERE (t_actes.nomenclature IN ('CCAM', 'NGAP') OR t_actes.oid = 0) AND t_actes.oid NOT IN (SELECT oid FROM activite.t_actes_c); + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_ages_c.yaml b/db/schema2/functions/cti_reorganize_ages_c.yaml new file mode 100644 index 0000000..4f9b360 --- /dev/null +++ b/db/schema2/functions/cti_reorganize_ages_c.yaml @@ -0,0 +1,74 @@ +return: text +lang: plpgsql +src: | + DECLARE result TEXT; + BEGIN + -- Table des ages à créer + DROP TABLE IF EXISTS w_tmp; + + CREATE TEMP TABLE w_tmp AS + SELECT + t_ages.oid, + t_ages.code, + t_ages.texte + FROM base.t_ages + ORDER BY code; + + -- Remise bon oid (en deux étapes pour éviter clés en double) + UPDATE + activite.t_ages_c + SET + oid = 0 - w_tmp.oid + FROM + w_tmp + WHERE + t_ages_c.code = w_tmp.code + AND ( + t_ages_c.oid <> w_tmp.oid + ); + + UPDATE + activite.t_ages_c + SET + oid = w_tmp.oid + FROM + w_tmp + WHERE + t_ages_c.code = w_tmp.code + AND ( + t_ages_c.oid <> w_tmp.oid + ); + + -- Mise à jour codes selon base + UPDATE + activite.t_ages_c + SET + code = w_tmp.code, + texte = w_tmp.texte + FROM + w_tmp + WHERE + t_ages_c.oid = w_tmp.oid + AND ( + t_ages_c.code IS DISTINCT FROM w_tmp.code + OR t_ages_c.texte IS DISTINCT FROM w_tmp.texte + ); + + -- Ajout nouveaux codes + INSERT INTO activite.t_ages_c ( + oid, + code, + texte + ) + SELECT w_tmp.oid, + w_tmp.code, + w_tmp.texte + FROM w_tmp + WHERE w_tmp.oid NOT IN ( + SELECT oid + FROM activite.t_ages_c + ) + ORDER BY w_tmp.code; + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_controle_chiffrier.yaml b/db/schema2/functions/cti_reorganize_controle_chiffrier.yaml new file mode 100644 index 0000000..d73808c --- /dev/null +++ b/db/schema2/functions/cti_reorganize_controle_chiffrier.yaml @@ -0,0 +1,281 @@ +return: text +lang: plpgsql +src: | + DECLARE + _marge_erreur numeric; + _ignorer_reglements text; + result TEXT; + BEGIN + RAISE NOTICE 'Initialisations'; + -- marge de validation automatique + INSERT INTO activite.t_divers (code, texte, valeur, description, valeur2) + SELECT + 'CHIFERRMAX', + 'Marge d'' erreur pour validation automatique chiffrier', + '0', + 'Montant', + '' + WHERE 'CHIFERRMAX' NOT IN (SELECT code FROM activite.t_divers); + _marge_erreur = base.cti_to_number((SELECT valeur FROM activite.t_divers WHERE code = 'CHIFERRMAX')) ; + -- Controle des règlements ? + INSERT INTO activite.t_divers (code, texte, valeur, description, valeur2) + SELECT + 'CHIFERRREG', + 'Ignorer les règlements pour la validation automatique', + '0', + '0=Tenir compte des règlements, 1=Ignorer', + '' + WHERE 'CHIFERRREG' NOT IN (SELECT code FROM activite.t_divers); + _ignorer_reglements = (SELECT valeur FROM activite.t_divers WHERE code = 'CHIFERRREG') ; + + -- Ne pas controler le mois en cours; + UPDATE activite.p_chiffrier_comptable + SET montant_ventes_c = 0, + montant_ventes_h = 0, + montant_reglements_c = 0, + montant_reglements_h = 0 + WHERE date_comptable >= date(date_trunc('month', now())); + + -- table de travail + DROP TABLE IF EXISTS w_chiffrier_comptable; + CREATE TEMP TABLE w_chiffrier_comptable + ( + date_comptable date, + provider_id bigint, + montant_comptabilise_d_c numeric(13,2) DEFAULT 0, + montant_comptabilise_t_c numeric(13,2) DEFAULT 0, + montant_comptabilise_s_c numeric(13,2) DEFAULT 0, + montant_comptabilise_c_c numeric(13,2) DEFAULT 0, + montant_regle_s_c numeric(13,2) DEFAULT 0, + montant_regle_c_c numeric(13,2) DEFAULT 0, + montant_comptabilise_d_h numeric(13,2) DEFAULT 0, + montant_comptabilise_t_h numeric(13,2) DEFAULT 0, + montant_comptabilise_s_h numeric(13,2) DEFAULT 0, + montant_comptabilise_c_h numeric(13,2) DEFAULT 0, + montant_regle_s_h numeric(13,2) DEFAULT 0, + montant_regle_c_h numeric(13,2) DEFAULT 0 + ) ; + + + RAISE NOTICE 'Lignes facturées CLINIQUE'; + INSERT INTO w_chiffrier_comptable(date_comptable, provider_id, montant_comptabilise_d_c) + SELECT date_trunc('month',p_factures.date_vente) AS date_comptable, p_factures.provider_id, + SUM(p_factures_lignes_c.montant_comptabilise) AS montant_comptabilise_d_c + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.etat = '' + WHERE p_factures.date_vente BETWEEN '20090101' AND date(now()) AND + p_factures.code_vente = '1' + GROUP BY 1,2; + RAISE NOTICE 'Lignes facturées HONORAIRES'; + + INSERT INTO w_chiffrier_comptable(date_comptable, provider_id, montant_comptabilise_d_h) + SELECT date_trunc('month',p_factures.date_vente) AS date_comptable, p_factures.provider_id, + SUM(p_factures_lignes_h.montant_comptabilise) AS montant_comptabilise_d_h + FROM activite.p_factures_lignes_h + JOIN activite.p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.etat = '' + WHERE date_vente BETWEEN '20090101' AND date(now()) AND + p_factures.code_vente = '1' + GROUP BY 1,2; + RAISE NOTICE 'Factures'; + + INSERT INTO w_chiffrier_comptable(date_comptable, provider_id, montant_comptabilise_t_c, montant_comptabilise_t_h) + SELECT date_trunc('month',date_vente) AS date_comptable, p_factures.provider_id, + SUM(p_factures.montant_comptabilise_c) AS montant_comptabilise_t_c, + SUM(p_factures.montant_comptabilise_h) AS montant_comptabilise_t_h + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.etat = '' + WHERE date_vente BETWEEN '20090101' AND date(now()) AND + code_vente = '1' + GROUP BY 1,2; + RAISE NOTICE 'Comptabilisation CLINIQUE'; + + INSERT INTO w_chiffrier_comptable(date_comptable, provider_id, montant_comptabilise_s_c, montant_regle_s_c) + SELECT date_trunc('month',p_facture_solde_tiers_c.date_comptable) AS date_comptable, p_factures.provider_id, + SUM(CASE WHEN p_factures.code_vente = '1' THEN montant_comptabilise ELSE 0 END) AS montant_comptabilise_s_c, + SUM(CASE WHEN od_avoir <> '1' AND od_non_comptabilise IS DISTINCT FROM '1' THEN montant_regle ELSE 0 END) AS montant_regle_s_c + FROM activite.p_facture_solde_tiers_c + JOIN activite.p_factures ON p_facture_solde_tiers_c.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.etat = '' + WHERE date_comptable BETWEEN '20090101' AND date(now()) + GROUP BY 1,2 ; + RAISE NOTICE 'Comptabilisation HONORAIRE'; + + INSERT INTO w_chiffrier_comptable(date_comptable, provider_id, montant_comptabilise_s_h, montant_regle_s_h) + SELECT date_trunc('month',date_comptable) AS date_comptable, p_factures.provider_id, + SUM(CASE WHEN p_factures.code_vente = '1' THEN montant_comptabilise ELSE 0 END) AS montant_comptabilise_s_h, + SUM(CASE WHEN od_avoir <> '1' AND od_non_comptabilise IS DISTINCT FROM '1' THEN montant_regle ELSE 0 END) AS montant_regle_s_h + FROM activite.p_factures_soldes_h + JOIN activite.p_factures ON p_factures_soldes_h.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.etat = '' + WHERE date_comptable BETWEEN '20090101' AND date(now()) + GROUP BY 1,2 ; + RAISE NOTICE 'Chiffrier production'; + + INSERT INTO w_chiffrier_comptable(date_comptable, provider_id, montant_comptabilise_c_c, montant_comptabilise_c_h, montant_regle_c_c, montant_regle_c_h) + SELECT date_trunc('month',date_comptable) AS date_comptable, provider_id, + SUM(montant_ventes_c) AS montant_comptabilise_c_c, + SUM(montant_ventes_h) AS montant_comptabilise_c_h, + SUM(montant_reglements_c) AS montant_regle_c_c, + SUM(montant_reglements_h) AS montant_regle_c_h + FROM activite.p_chiffrier_comptable + WHERE date_comptable BETWEEN '20090101' AND date(now()) + GROUP BY 1,2 ; + RAISE NOTICE 'Controles'; + DROP TABLE IF EXISTS w_controle_chiffrier; + CREATE TEMP TABLE w_controle_chiffrier AS + SELECT + date_comptable AS w_date_comptable, + COALESCE(provider_id,0) AS w_provider_id, + SUM(montant_comptabilise_d_c) AS w_montant_comptabilise_d_c, + SUM(montant_comptabilise_t_c) AS w_montant_comptabilise_t_c, + SUM(montant_comptabilise_s_c) AS w_montant_comptabilise_s_c, + SUM(montant_comptabilise_c_c) AS w_montant_comptabilise_c_c, + SUM(montant_regle_s_c) AS w_montant_regle_s_c, + SUM(montant_regle_c_c) AS w_montant_regle_c_c, + SUM(montant_comptabilise_d_h) AS w_montant_comptabilise_d_h, + SUM(montant_comptabilise_t_h) AS w_montant_comptabilise_t_h, + SUM(montant_comptabilise_s_h) AS w_montant_comptabilise_s_h, + SUM(montant_comptabilise_c_h) AS w_montant_comptabilise_c_h, + SUM(montant_regle_s_h) AS w_montant_regle_s_h, + SUM(montant_regle_c_h) AS w_montant_regle_c_h + FROM w_chiffrier_comptable + GROUP BY 1,2; + -- Suppression lignes antérieures (si changement de date début) + DELETE + FROM activite.t_controle_chiffrier + WHERE date_comptable < (SELECT date(MIN(date_trunc('month',date_comptable))) FROM activite.p_chiffrier_comptable); + + -- Ajout nouvelles lignes + INSERT INTO activite.t_controle_chiffrier + (date_comptable, + provider_id, + montant_comptabilise_d_c, + montant_comptabilise_t_c, + montant_comptabilise_s_c, + montant_comptabilise_c_c, + montant_regle_s_c, + montant_regle_c_c, + montant_comptabilise_d_h, + montant_comptabilise_t_h, + montant_comptabilise_s_h, + montant_comptabilise_c_h, + montant_regle_s_h, + montant_regle_c_h, + valide + ) + SELECT + w_date_comptable, + w_provider_id, + w_montant_comptabilise_d_c, + w_montant_comptabilise_t_c, + w_montant_comptabilise_s_c, + w_montant_comptabilise_c_c, + w_montant_regle_s_c, + w_montant_regle_c_c, + w_montant_comptabilise_d_h, + w_montant_comptabilise_t_h, + w_montant_comptabilise_s_h, + w_montant_comptabilise_c_h, + w_montant_regle_s_h, + w_montant_regle_c_h, + CASE WHEN w_montant_comptabilise_d_c <> w_montant_comptabilise_t_c OR + w_montant_comptabilise_s_c <> w_montant_comptabilise_s_c OR + w_montant_comptabilise_d_c <> w_montant_comptabilise_c_c AND w_montant_comptabilise_c_c <> 0 OR + w_montant_regle_s_c <> w_montant_regle_c_c AND w_montant_regle_c_c <> 0 OR + w_montant_comptabilise_d_h <> w_montant_comptabilise_t_h OR + w_montant_comptabilise_s_h <> w_montant_comptabilise_s_h OR + w_montant_comptabilise_d_h <> w_montant_comptabilise_c_h AND w_montant_comptabilise_c_c <> 0 OR + w_montant_regle_s_h <> w_montant_regle_c_h AND w_montant_regle_c_h <> 0 THEN 0 ELSE 1 END + FROM w_controle_chiffrier + LEFT JOIN activite.t_controle_chiffrier ON w_date_comptable = date_comptable AND w_provider_id = provider_id + WHERE date_comptable IS NULL; + UPDATE activite.t_controle_chiffrier SET + montant_comptabilise_d_c = w_montant_comptabilise_d_c, + montant_comptabilise_t_c = w_montant_comptabilise_t_c, + montant_comptabilise_s_c = w_montant_comptabilise_s_c, + montant_comptabilise_c_c = w_montant_comptabilise_c_c, + montant_regle_s_c = w_montant_regle_s_c, + montant_regle_c_c = w_montant_regle_c_c, + montant_comptabilise_d_h = w_montant_comptabilise_d_h, + montant_comptabilise_t_h = w_montant_comptabilise_t_h, + montant_comptabilise_s_h = w_montant_comptabilise_s_h, + montant_comptabilise_c_h = w_montant_comptabilise_c_h, + montant_regle_s_h = w_montant_regle_s_h, + montant_regle_c_h = w_montant_regle_c_h, + valide = CASE WHEN w_montant_comptabilise_d_c <> w_montant_comptabilise_t_c OR + w_montant_comptabilise_s_c <> w_montant_comptabilise_s_c OR + w_montant_comptabilise_d_c <> w_montant_comptabilise_c_c AND w_montant_comptabilise_c_c <> 0 OR + w_montant_regle_s_c <> w_montant_regle_c_c AND w_montant_regle_c_c <> 0 OR + w_montant_comptabilise_d_h <> w_montant_comptabilise_t_h OR + w_montant_comptabilise_s_h <> w_montant_comptabilise_s_h OR + w_montant_comptabilise_d_h <> w_montant_comptabilise_c_h AND w_montant_comptabilise_c_c <> 0 OR + w_montant_regle_s_h <> w_montant_regle_c_h AND w_montant_regle_c_h <> 0 THEN 0 ELSE 1 END + FROM w_controle_chiffrier + WHERE w_date_comptable = date_comptable AND w_provider_id = provider_id + AND ( + montant_comptabilise_d_c IS DISTINCT FROM w_montant_comptabilise_d_c OR + montant_comptabilise_t_c IS DISTINCT FROM w_montant_comptabilise_t_c OR + montant_comptabilise_s_c IS DISTINCT FROM w_montant_comptabilise_s_c OR + montant_comptabilise_c_c IS DISTINCT FROM w_montant_comptabilise_c_c OR + montant_regle_s_c IS DISTINCT FROM w_montant_regle_s_c OR + montant_regle_c_c IS DISTINCT FROM w_montant_regle_c_c OR + montant_comptabilise_d_h IS DISTINCT FROM w_montant_comptabilise_d_h OR + montant_comptabilise_t_h IS DISTINCT FROM w_montant_comptabilise_t_h OR + montant_comptabilise_s_h IS DISTINCT FROM w_montant_comptabilise_s_h OR + montant_comptabilise_c_h IS DISTINCT FROM w_montant_comptabilise_c_h OR + montant_regle_s_h IS DISTINCT FROM w_montant_regle_s_h OR + montant_regle_c_h IS DISTINCT FROM w_montant_regle_c_h + ); + + + UPDATE activite.t_controle_chiffrier + SET valide = 1 + WHERE valide <> 1 AND + NOT + (montant_comptabilise_d_c IS DISTINCT FROM montant_comptabilise_c_c AND montant_comptabilise_c_c <> 0 OR + montant_comptabilise_t_c IS DISTINCT FROM montant_comptabilise_c_c AND montant_comptabilise_c_c <> 0 OR + montant_comptabilise_s_c IS DISTINCT FROM montant_comptabilise_c_c AND montant_comptabilise_c_c <> 0 OR + montant_comptabilise_c_c IS DISTINCT FROM montant_comptabilise_c_c AND montant_comptabilise_c_c <> 0 OR + montant_regle_s_c IS DISTINCT FROM montant_regle_c_c AND montant_regle_c_c <> 0 OR + montant_comptabilise_d_h IS DISTINCT FROM montant_comptabilise_c_h AND montant_comptabilise_c_h <> 0 OR + montant_comptabilise_t_h IS DISTINCT FROM montant_comptabilise_c_h AND montant_comptabilise_c_h <> 0 OR + montant_comptabilise_s_h IS DISTINCT FROM montant_comptabilise_c_h AND montant_comptabilise_c_h <> 0 OR + montant_comptabilise_c_h IS DISTINCT FROM montant_comptabilise_c_h AND montant_comptabilise_c_h <> 0 OR + montant_regle_s_h IS DISTINCT FROM montant_regle_c_h AND montant_regle_c_h <> 0 + ) OR + + (CASE WHEN montant_comptabilise_c_c <> 0 THEN + ABS(montant_comptabilise_d_c - montant_comptabilise_c_c) + + ABS(montant_comptabilise_t_c - montant_comptabilise_c_c) + + ABS(montant_comptabilise_s_c - montant_comptabilise_c_c) + ELSE + 0 + END + + + CASE WHEN montant_comptabilise_c_h <> 0 THEN + ABS(montant_comptabilise_d_h - montant_comptabilise_c_h) + + ABS(montant_comptabilise_t_h - montant_comptabilise_c_h) + + ABS(montant_comptabilise_s_h - montant_comptabilise_c_h) + ELSE + 0 + END + + + CASE WHEN montant_regle_c_c <> 0 AND _ignorer_reglements IS DISTINCT FROM '1' THEN + ABS(montant_regle_s_c - montant_regle_c_c) + ELSE + 0 + END + + + CASE WHEN montant_regle_c_h <> 0 AND _ignorer_reglements IS DISTINCT FROM '1' THEN + ABS(montant_regle_s_h - montant_regle_c_h) + ELSE + 0 + END + ) <= _marge_erreur + ; + + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_durees_sejour_c.yaml b/db/schema2/functions/cti_reorganize_durees_sejour_c.yaml new file mode 100644 index 0000000..b641186 --- /dev/null +++ b/db/schema2/functions/cti_reorganize_durees_sejour_c.yaml @@ -0,0 +1,46 @@ +return: text +lang: plpgsql +src: | + DECLARE result TEXT; + BEGIN + EXECUTE 'DROP TABLE IF EXISTS w_tmp;'; + EXECUTE ' + CREATE TEMP TABLE w_tmp AS + SELECT + t_durees_sejour.oid, + t_durees_sejour.code, + t_durees_sejour.texte + FROM base.t_durees_sejour + ORDER BY code;'; + EXECUTE ' + UPDATE + activite.t_durees_sejour_c + SET + code = w_tmp.code, + texte = w_tmp.texte + FROM + w_tmp + WHERE + t_durees_sejour_c.oid = w_tmp.oid + AND ( + t_durees_sejour_c.code IS DISTINCT FROM w_tmp.code + OR t_durees_sejour_c.texte IS DISTINCT FROM w_tmp.texte + );'; + EXECUTE ' + INSERT INTO activite.t_durees_sejour_c ( + oid, + code, + texte + ) + SELECT w_tmp.oid, + w_tmp.code, + w_tmp.texte + FROM w_tmp + WHERE w_tmp.oid NOT IN ( + SELECT oid + FROM activite.t_durees_sejour_c + ) + ORDER BY w_tmp.code;'; + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_etages_places.yaml b/db/schema2/functions/cti_reorganize_etages_places.yaml new file mode 100644 index 0000000..b506186 --- /dev/null +++ b/db/schema2/functions/cti_reorganize_etages_places.yaml @@ -0,0 +1,166 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + BEGIN + + EXECUTE 'INSERT INTO activite.t_etages_historique( + etage_id, + date, + nb_lits_theoriques, + nb_lits_cp_theoriques, + nb_lits_ouverts, + nb_lits_cp_ouverts, + est_ouvert_1, + est_ouvert_2, + est_ouvert_3, + est_ouvert_4, + est_ouvert_5, + est_ouvert_6, + est_ouvert_7) + SELECT + oid, + ''20070101'', + COALESCE(nb_lits,0), + COALESCE(nb_cp,0), + COALESCE(nb_lits,0), + COALESCE(nb_cp,0), + ''1'', + ''1'', + ''1'', + ''1'', + ''1'', + ''1'', + ''1'' + FROM activite.t_etages + LEFT JOIN activite.t_etages_historique ON t_etages_historique.etage_id = t_etages.oid AND t_etages_historique.date = ''20070101'' + WHERE t_etages_historique.etage_id IS NULL'; + EXECUTE 'UPDATE activite.t_etages_historique SET + date_fin = date(COALESCE((( + SELECT min(t_etages_historique_f.date) AS min + FROM activite.t_etages_historique t_etages_historique_f + WHERE t_etages_historique_f.etage_id = t_etages_historique.etage_id AND + t_etages_historique_f.date > t_etages_historique.date)) - interval ''1 day'', ''2099-12-31''::date)) '; + EXECUTE 'UPDATE activite.t_etages + SET nb_lits = t_etages_historique.nb_lits_theoriques + FROM activite.t_etages_historique + WHERE t_etages.oid = t_etages_historique.etage_id AND + date_fin = ''20991231'''; + EXECUTE 'UPDATE activite.t_etages_historique SET + heberge_hospitalises = ''0'', + heberge_ambulatoires = ''0'', + heberge_externes = ''0'', + heberge_urgences = ''0'', + heberge_bebes = ''0'''; + + EXECUTE 'UPDATE activite.t_etages_historique SET + heberge_hospitalises = subview.heberge_hospitalises, + heberge_ambulatoires = subview.heberge_ambulatoires, + heberge_externes = subview.heberge_externes, + heberge_urgences = subview.heberge_urgences, + heberge_bebes = subview.heberge_bebes + FROM ( + SELECT + t_lieux_c.etage_id, + t_etages_historique.date, + MAX(CASE WHEN est_jour_hospitalisation = ''1'' THEN ''1'' ELSE ''0'' END) AS heberge_hospitalises, + MAX(CASE WHEN nb_ambulatoires > 0 THEN ''1'' ELSE ''0'' END) AS heberge_ambulatoires, + MAX(CASE WHEN nb_externes > 0 THEN ''1'' ELSE ''0'' END) AS heberge_externes, + MAX(CASE WHEN nb_urgences > 0 THEN ''1'' ELSE ''0'' END) AS heberge_urgences, + MAX(CASE WHEN nb_bebes > 0 THEN ''1'' ELSE ''0'' END) AS heberge_bebes + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux_c ON lieu_id = t_lieux_c.oid + JOIN activite.t_etages_historique ON t_lieux_c.etage_id = t_etages_historique.etage_id AND p_mouvements_sejour.date BETWEEN t_etages_historique.date AND t_etages_historique.date_fin + GROUP BY 1,2 + ORDER BY 1,2 + ) subview + WHERE subview.etage_id = t_etages_historique.etage_id AND subview.date = t_etages_historique.date;'; + + EXECUTE 'DROP TABLE IF EXISTS w_etages_places; + DROP TYPE IF EXISTS w_etages_places;'; + EXECUTE 'CREATE TEMP TABLE w_etages_places AS + SELECT + t_etages.oid AS etage_id, + p_calendrier.date, + t_etages_historique.nb_lits_theoriques, + t_etages_historique.nb_lits_ouverts, + 0::numeric AS nb_lits_cp_theoriques, + 0::numeric AS nb_lits_cp_ouverts, + CASE WHEN date_part(''DOW'',p_calendrier.date) = 1 THEN est_ouvert_1 + WHEN date_part(''DOW'',p_calendrier.date) = 2 THEN est_ouvert_2 + WHEN date_part(''DOW'',p_calendrier.date) = 3 THEN est_ouvert_3 + WHEN date_part(''DOW'',p_calendrier.date) = 4 THEN est_ouvert_4 + WHEN date_part(''DOW'',p_calendrier.date) = 5 THEN est_ouvert_5 + WHEN date_part(''DOW'',p_calendrier.date) = 6 THEN est_ouvert_6 + WHEN date_part(''DOW'',p_calendrier.date) = 0 THEN est_ouvert_7 + ELSE ''0'' END AS est_ouvert, + heberge_hospitalises, + heberge_ambulatoires, + heberge_externes, + heberge_urgences, + heberge_bebes + FROM activite.t_etages + JOIN activite.t_etages_historique ON t_etages.oid = t_etages_historique.etage_id + JOIN base.p_calendrier ON p_calendrier.date BETWEEN t_etages_historique.date AND t_etages_historique.date_fin AND p_calendrier.date BETWEEN ''20070101'' AND now() + interval ''1 month'' + ORDER BY 1,2;'; + EXECUTE 'INSERT INTO activite.t_etages_places( + etage_id, + date, + nb_lits_theoriques, + nb_lits_ouverts, + nb_lits_cp_theoriques, + nb_lits_cp_ouverts, + est_ouvert, + heberge_hospitalises, + heberge_ambulatoires, + heberge_externes, + heberge_urgences, + heberge_bebes) + SELECT + w_etages_places.etage_id, + w_etages_places.date, + w_etages_places.nb_lits_theoriques, + w_etages_places.nb_lits_ouverts, + w_etages_places.nb_lits_cp_theoriques, + w_etages_places.nb_lits_cp_ouverts, + w_etages_places.est_ouvert, + w_etages_places.heberge_hospitalises, + w_etages_places.heberge_ambulatoires, + w_etages_places.heberge_externes, + w_etages_places.heberge_urgences, + w_etages_places.heberge_bebes + FROM w_etages_places + LEFT JOIN activite.t_etages_places t_etages_places_deja ON w_etages_places.etage_id = t_etages_places_deja.etage_id AND w_etages_places.date = t_etages_places_deja.date + WHERE t_etages_places_deja.etage_id IS NULL; '; + EXECUTE 'UPDATE activite.t_etages_places SET + nb_lits_theoriques = w_etages_places.nb_lits_theoriques, + nb_lits_ouverts = w_etages_places.nb_lits_ouverts, + nb_lits_cp_theoriques = w_etages_places.nb_lits_cp_theoriques, + nb_lits_cp_ouverts = w_etages_places.nb_lits_cp_ouverts, + est_ouvert = w_etages_places.est_ouvert, + heberge_hospitalises = w_etages_places.heberge_hospitalises, + heberge_ambulatoires = w_etages_places.heberge_ambulatoires, + heberge_externes = w_etages_places.heberge_externes, + heberge_urgences = w_etages_places.heberge_urgences, + heberge_bebes = w_etages_places.heberge_bebes + FROM w_etages_places + WHERE w_etages_places.etage_id = t_etages_places.etage_id AND w_etages_places.date = t_etages_places.date AND + ( + t_etages_places.nb_lits_theoriques IS DISTINCT FROM w_etages_places.nb_lits_theoriques OR + t_etages_places.nb_lits_ouverts IS DISTINCT FROM w_etages_places.nb_lits_ouverts OR + t_etages_places.nb_lits_cp_theoriques IS DISTINCT FROM w_etages_places.nb_lits_cp_theoriques OR + t_etages_places.nb_lits_cp_ouverts IS DISTINCT FROM w_etages_places.nb_lits_cp_ouverts OR + t_etages_places.est_ouvert IS DISTINCT FROM w_etages_places.est_ouvert OR + t_etages_places.heberge_hospitalises IS DISTINCT FROM w_etages_places.heberge_hospitalises OR + t_etages_places.heberge_ambulatoires IS DISTINCT FROM w_etages_places.heberge_ambulatoires OR + t_etages_places.heberge_externes IS DISTINCT FROM w_etages_places.heberge_externes OR + t_etages_places.heberge_urgences IS DISTINCT FROM w_etages_places.heberge_urgences OR + t_etages_places.heberge_bebes IS DISTINCT FROM w_etages_places.heberge_bebes + ); + + '; + EXECUTE 'DROP TABLE IF EXISTS w_etages_places; + DROP TYPE IF EXISTS w_etages_places;'; + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_finess_c.yaml b/db/schema2/functions/cti_reorganize_finess_c.yaml new file mode 100644 index 0000000..9c38c63 --- /dev/null +++ b/db/schema2/functions/cti_reorganize_finess_c.yaml @@ -0,0 +1,177 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + BEGIN + + + -- Recopie listes de FINESS de activité vers base + IF NOT EXISTS ( + SELECT t_listes.code + FROM base.t_listes + ) AND + EXISTS + (SELECT t_listes.code + FROM activite.t_listes + JOIN activite.t_listes_tables ON t_listes.table_id = t_listes_tables.oid + WHERE t_listes_tables.code = 'FINESS' + ) + THEN + DROP TABLE IF EXISTS w_listes_finess; + CREATE TEMP TABLE w_listes_finess AS + SELECT t_listes.* + FROM activite.t_listes + JOIN activite.t_listes_tables ON t_listes.table_id = t_listes_tables.oid + WHERE t_listes_tables.code = 'FINESS' AND + (SELECT count(*) FROM base.t_listes) = 0 + ; + + INSERT INTO base.t_listes( + chapitre, + code, + contenu_by_code, + contenu_non_replicable_ailleurs, + est_partagee_modification, + exclude_code, + include_code, + is_cti, + oid, + show_omit, + table_id, + texte, + utilisateur_createur) + SELECT + w_listes_finess.chapitre, + w_listes_finess.code, + w_listes_finess.contenu_by_code, + w_listes_finess.contenu_non_replicable_ailleurs, + w_listes_finess.est_partagee_modification, + w_listes_finess.exclude_code, + w_listes_finess.include_code, + w_listes_finess.is_cti, + w_listes_finess.oid, + w_listes_finess.show_omit, + t_listes_tables.oid AS table_id, + w_listes_finess.texte, + w_listes_finess.utilisateur_createur + FROM w_listes_finess + JOIN base.t_listes_tables ON t_listes_tables.code = 'FINESS' + ; + + INSERT INTO base.t_listes_contenu( + liste_id, + to_id) + SELECT liste_id, + to_id + FROM activite.t_listes_contenu + WHERE liste_id IN (SELECT oid FROM w_listes_finess) + ; + + END IF; + + -- Recopie classes de FINESS de activité vers base + IF NOT EXISTS ( + SELECT t_classes.code + FROM base.t_classes + ) AND + EXISTS + (SELECT t_classes.code + FROM activite.t_classes + JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid + WHERE t_listes_tables.code = 'FINESS' + ) + THEN + DROP TABLE IF EXISTS w_classes_finess; + CREATE TEMP TABLE w_classes_finess AS + SELECT t_classes.* + FROM activite.t_classes + JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid + WHERE t_listes_tables.code = 'FINESS' AND + (SELECT count(*) FROM base.t_classes) = 0 + ; + + + INSERT INTO base.t_classes( + oid, + sequence, + code, + contenu_by_code, + contenu_non_replicable_ailleurs, + is_cti, + table_id, + texte) + SELECT + w_classes_finess.oid, + w_classes_finess.sequence, + w_classes_finess.code, + w_classes_finess.contenu_by_code, + w_classes_finess.contenu_non_replicable_ailleurs, + w_classes_finess.is_cti, + t_listes_tables.oid AS table_id, + w_classes_finess.texte + FROM w_classes_finess + JOIN base.t_listes_tables ON t_listes_tables.code = 'FINESS' + ; + + INSERT INTO base.t_classes_sections( + oid, + classe_id, + code, + condition, + exclude_code, + include_code, + texte) + SELECT oid, + classe_id, + code, + condition, + exclude_code, + include_code, + texte + FROM activite.t_classes_sections + WHERE classe_id IN (SELECT oid FROM w_classes_finess) + ; + + INSERT INTO base.t_classes_sections_elements(section_id, to_id) + SELECT t_classes_sections_elements.section_id, t_classes_sections_elements.to_id + FROM activite.t_classes_sections_elements + JOIN activite.t_classes_sections ON section_id = t_classes_sections.oid + WHERE t_classes_sections.classe_id IN (SELECT oid FROM w_classes_finess) + ; + + PERFORM base.cti_update_classes('base', 't_finess', 'FINESS',''); + END IF; + + EXECUTE 'UPDATE activite.t_finess_c SET + code = t_finess.code, + texte = t_finess.texte, + texte_court = t_finess.texte_court, + type_etablissement = t_finess.type_etablissement, + secondaire = t_finess.secondaire, + section_id = t_finess.section_id, + section_code = t_finess.section_code, + section_texte = t_finess.section_texte + FROM base.t_finess + WHERE t_finess.oid = t_finess_c.oid AND + ( + t_finess_c.code IS DISTINCT FROM t_finess.code OR + t_finess_c.texte IS DISTINCT FROM t_finess.texte OR + t_finess_c.texte_court IS DISTINCT FROM t_finess.texte_court OR + t_finess_c.type_etablissement IS DISTINCT FROM t_finess.type_etablissement OR + t_finess_c.secondaire IS DISTINCT FROM t_finess.secondaire OR + t_finess_c.section_id IS DISTINCT FROM t_finess.section_id OR + t_finess_c.section_code IS DISTINCT FROM t_finess.section_code OR + t_finess_c.section_texte IS DISTINCT FROM t_finess.section_texte + )'; + EXECUTE 'INSERT INTO activite.t_finess_c(oid, code, texte, texte_court, type_etablissement, section_id, section_code, section_texte) + SELECT 0, ''000000000'', ''Non renseigné'', ''Non renseigné'', ''0'', NULL, NULL, NULL + WHERE 0 != ALL(ARRAY(SELECT oid FROM activite.t_finess_c)::bigint[])'; + EXECUTE 'INSERT INTO activite.t_finess_c(oid, code, texte, texte_court, type_etablissement, secondaire, section_id, section_code, section_texte) + SELECT oid, code, texte, texte_court, type_etablissement, secondaire, section_id, section_code, section_texte + FROM base.t_finess + WHERE t_finess.oid NOT IN (SELECT oid FROM activite.t_finess_c) + ORDER BY t_finess.oid;'; + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_forme_activite.yaml b/db/schema2/functions/cti_reorganize_forme_activite.yaml new file mode 100644 index 0000000..c6ce67f --- /dev/null +++ b/db/schema2/functions/cti_reorganize_forme_activite.yaml @@ -0,0 +1,1480 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + _module_pmsimco TEXT; + BEGIN + + RAISE NOTICE '%' , 'Initialisation formes d''activite'; + -- Contenu table + INSERT INTO activite.t_forme_activite (oid, code, texte, texte_court) + SELECT 0, '**', 'Non renseignée', 'Non renseignée' + WHERE 0 NOT IN (SELECT oid FROM activite.t_forme_activite); + + + -- MCO + INSERT INTO activite.t_forme_activite (code, texte, texte_court) + SELECT code, texte, texte + FROM ( + SELECT '111' AS code, 'Hospitalisation complète MCO Médecine' AS texte + UNION + SELECT '112' AS code, 'Hospitalisation complète MCO Chirurgie' AS texte + UNION + SELECT '113' AS code, 'Hospitalisation complète MCO Obstétrique' AS texte + UNION + SELECT '114' AS code, 'Hospitalisation complète MCO Esthétique' AS texte + UNION + SELECT '117' AS code, 'Hospitalisation complète MCO A préciser' AS texte + UNION + SELECT '118' AS code, 'Hospitalisation complète MCO A préciser' AS texte + UNION + SELECT '119' AS code, 'Hospitalisation complète MCO Autre' AS texte + UNION + SELECT '121' AS code, 'Hospitalisation de jour MCO Médecine' AS texte + UNION + SELECT '122' AS code, 'Hospitalisation de jour MCO Chirurgie' AS texte + UNION + SELECT '123' AS code, 'Hospitalisation de jour MCO Obstétrique' AS texte + UNION + SELECT '124' AS code, 'Hospitalisation de jour MCO Esthétique' AS texte + UNION + SELECT '127' AS code, 'Hospitalisation de jour MCO A préciser' AS texte + UNION + SELECT '128' AS code, 'Hospitalisation de jour MCO A préciser' AS texte + UNION + SELECT '129' AS code, 'Hospitalisation de jour MCO Autre' AS texte + UNION + SELECT '131' AS code, 'Séances de dialyse' AS texte + UNION + SELECT '132' AS code, 'Séances de chimiothérapie' AS texte + UNION + SELECT '133' AS code, 'Séances de transfusion' AS texte + UNION + SELECT '139' AS code, 'Autres séances' AS texte + UNION + SELECT '211' AS code, 'Hospitalisation complète SSR Soins de Suite Médicalisés' AS texte + UNION + SELECT '212' AS code, 'Hospitalisation complète SSR Rééducation Fonctionnelle' AS texte + UNION + SELECT '217' AS code, 'Hospitalisation complète SSR A préciser' AS texte + UNION + SELECT '218' AS code, 'Hospitalisation complète SSR A préciser' AS texte + UNION + SELECT '219' AS code, 'Hospitalisation complète SSR Autre' AS texte + UNION + SELECT '221' AS code, 'Hospitalisation de jour SSR Soins de Suite Médicalisés' AS texte + UNION + SELECT '222' AS code, 'Hospitalisation de jour SSR Rééducation Fonctionnelle' AS texte + UNION + SELECT '227' AS code, 'Hospitalisation de jour SSR A préciser' AS texte + UNION + SELECT '228' AS code, 'Hospitalisation de jour SSR A préciser' AS texte + UNION + SELECT '229' AS code, 'Hospitalisation de jour SSR Autre' AS texte + UNION + SELECT '317' AS code, 'Hospitalisation complète PSY A préciser' AS texte + UNION + SELECT '318' AS code, 'Hospitalisation complète PSY A préciser' AS texte + UNION + SELECT '319' AS code, 'Hospitalisation complète PSY Autre' AS texte + UNION + SELECT '327' AS code, 'Hospitalisation de jour PSY A préciser' AS texte + UNION + SELECT '328' AS code, 'Hospitalisation de jour PSY A préciser' AS texte + UNION + SELECT '329' AS code, 'Hospitalisation de jour PSY Autre' AS texte + UNION + SELECT '401' AS code, 'Hospitalisation à Domicile' AS texte + UNION + SELECT '501' AS code, 'EHPAD' AS texte + UNION + SELECT '502' AS code, 'USLD' AS texte + UNION + SELECT '503' AS code, 'Foyer de vie' AS texte + UNION + SELECT '701' AS code, 'Activité SE' AS texte + UNION + SELECT '702' AS code, 'Urgences' AS texte + UNION + SELECT '709' AS code, 'Activité externe' AS texte + UNION + SELECT '999' AS code, 'Autres formes d''activité' AS texte + ) subview + WHERE code NOT IN (SELECT code FROM activite.t_forme_activite WHERE code IS NOT NULL) + ORDER BY 1 + ; + + -- Si consolidation, pas de règle + IF EXISTS (SELECT * FROM activite.t_forme_activite_rule WHERE code = '*NORULE_CONSO') THEN + return 'Pas de règle en consolidation'; + END IF; + + + DELETE FROM activite.t_forme_activite_rule WHERE code LIKE 'CTI%' ; + DELETE FROM activite.t_forme_activite_rule WHERE COALESCE(forme_activite_id,0) = 0 OR + COALESCE(priorite,0) = 0; + + RAISE NOTICE '%' , 'Generation regles CTI'; + + DROP SEQUENCE IF EXISTS w_priorite; + CREATE TEMP SEQUENCE w_priorite; + + + + -- Associations possibles + + -- Identification des codes utilisés + DROP TABLE IF EXISTS cti_rfar_w_forme_activite_used; + CREATE TEMP TABLE cti_rfar_w_forme_activite_used AS + SELECT service_facturation_id, + t_services_facturation.code AS service_facturation_code, + t_services_facturation.texte AS service_facturation_texte, + t_services_facturation.dmt_id, + t_services_facturation.mode_traitement_id, + t_services_facturation.type_t2a, + p_sejours.type_sejour, + ''::text AS forme_activite_code + FROM activite.p_mouvements_sejour + JOIN activite.p_sejours ON p_mouvements_sejour.no_sejour = p_sejours.no_sejour + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE t_lieux.service_facturation_id <> 0 + GROUP BY 1,2,3,4,5,6,7 + ; + + INSERT INTO cti_rfar_w_forme_activite_used + SELECT 0::bigint AS service_facturation_id, + ''::text AS service_facturation_code, + ''::text AS service_facturation_texte, + 0::bigint AS dmt_id, + 0::bigint AS mode_traitement_id, + ''::text AS type_t2a, + type_sejour, + ''::text AS forme_activite_code + FROM cti_rfar_w_forme_activite_used + GROUP BY type_sejour + ; + + + + -- Valeurs par défaut par service + + + UPDATE cti_rfar_w_forme_activite_used + SET forme_activite_code = + CASE + WHEN service_facturation_id = 0 AND type_sejour = '1' THEN '119' + WHEN service_facturation_id = 0 AND type_sejour = '2' THEN '129' + WHEN service_facturation_id = 0 AND type_sejour = '3' THEN '709' + WHEN service_facturation_id = 0 AND type_sejour = '5' THEN '139' + WHEN service_facturation_id = 0 AND type_sejour = '6' THEN '113' + WHEN service_facturation_id = 0 AND type_sejour = '9' THEN '999' + + WHEN service_facturation_texte iLIKE '%esthetique%' AND type_sejour = '2' THEN '124' + WHEN service_facturation_texte iLIKE '%esthetique%' THEN '114' + WHEN service_facturation_texte iLIKE '%esthétique%' AND type_sejour = '2' THEN '124' + WHEN service_facturation_texte iLIKE '%esthétique%' THEN '114' + + WHEN t_dmt.code = '958' AND type_sejour = '3' THEN '701' + WHEN t_dmt.code = '924' THEN '501' + WHEN t_dmt.code = '657' THEN '501' + WHEN t_dmt.code = '273' THEN '502' + WHEN t_dmt.code = '936' THEN '503' + WHEN service_facturation_texte LIKE 'FSE%' AND type_sejour = '3' THEN '701' + WHEN service_facturation_texte LIKE 'SEH%' AND type_sejour = '3' THEN '701' + + WHEN t_modes_traitement.code = '10' THEN '702' + + WHEN t_dmt.code IN ('552','553','554','555','556','723','796','797','798') THEN '131' + WHEN t_modes_traitement.code = '19' AND t_dmt.code = '302' THEN '132' + + WHEN t_modes_traitement.code = '03' AND type_t2a = '2' THEN '219' + WHEN t_modes_traitement.code = '03' AND t_dmt.texte ILIKE '%SSR%' THEN '219' + WHEN t_modes_traitement.code = '04' AND type_t2a = '2' THEN '229' + WHEN t_modes_traitement.code = '04' AND t_dmt.texte ILIKE '%SSR%' THEN '229' + WHEN t_modes_traitement.code = '19' AND type_t2a = '2' THEN '229' + WHEN t_modes_traitement.code = '19' AND t_dmt.texte ILIKE '%SSR%' THEN '229' + WHEN t_modes_traitement.code = '22' AND type_t2a = '2' THEN '229' + WHEN t_modes_traitement.code = '22' AND t_dmt.texte ILIKE '%SSR%' THEN '229' + WHEN t_modes_traitement.code = '03' AND type_t2a = '3' THEN '319' + WHEN t_modes_traitement.code = '03' AND t_dmt.texte ILIKE '%PSY%' THEN '319' + WHEN t_modes_traitement.code = '04' AND type_t2a = '3' THEN '329' + WHEN t_modes_traitement.code = '04' AND t_dmt.texte ILIKE '%PSY%' THEN '329' + WHEN t_modes_traitement.code = '19' AND type_t2a = '3' THEN '329' + WHEN t_modes_traitement.code = '19' AND t_dmt.texte ILIKE '%PSY%' THEN '329' + WHEN t_modes_traitement.code = '22' AND type_t2a = '3' THEN '329' + WHEN t_modes_traitement.code = '22' AND t_dmt.texte ILIKE '%PSY%' THEN '329' + WHEN type_t2a = '4' THEN '401' + WHEN service_facturation_texte iLIKE '%EHPAD%' THEN '501' + WHEN service_facturation_texte iLIKE '%USLD%' THEN '502' + WHEN service_facturation_texte iLIKE '%FOVAH%' THEN '503' + WHEN t_modes_traitement.code = '06' THEN '401' + + ELSE '' + END + FROM base.t_modes_traitement,base.t_dmt + WHERE mode_traitement_id = t_modes_traitement.oid AND + dmt_id = t_dmt.oid + ; + + UPDATE cti_rfar_w_forme_activite_used + SET forme_activite_code = '212' + WHERE forme_activite_code = '219' AND + ( + service_facturation_code LIKE 'REE%' OR + service_facturation_texte ILIKE '%rééducation%' OR + service_facturation_texte ILIKE '%reeducation%' + ) + ; + + UPDATE cti_rfar_w_forme_activite_used + SET forme_activite_code = '222' + WHERE forme_activite_code = '229' AND + ( + service_facturation_code LIKE 'REE%' OR + service_facturation_texte ILIKE '%rééducation%' OR + service_facturation_texte ILIKE '%reeducation%' + ) + ; + + -- Les premiers 1000 oid sont réservés à CTI + PERFORM setval('activite.s_forme_activite_rule', (SELECT GREATEST(COALESCE(max(oid),0),1000) FROM activite.t_forme_activite_rule), true); + + UPDATE activite.t_forme_activite_rule + SET oid = nextval('activite.s_forme_activite_rule'::regclass) + WHERE oid < 1000; + + + PERFORM setval('w_priorite', 70000, true); + + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_service) + SELECT code, + texte, + forme_activite_id, + nextval('w_priorite'::regclass), + liste_type_sejour, + liste_service + FROM + ( + SELECT 'CTI#' || service_facturation_code || '#' || type_sejour AS code, + 'Valeur par défaut CTI ' || + service_facturation_texte || '(' || service_facturation_code || ')' || ' - ' || + CASE type_sejour + WHEN '1' THEN 'Hospitalisés' + WHEN '2' THEN 'Ambulatoires' + WHEN '3' THEn 'Externes' + WHEN '5' THEN 'Séances' + WHEN '6' THEN 'Bébés' + WHEN '9' THEN 'Séjours fictifs' + END AS texte + , + t_forme_activite.oid AS forme_activite_id, + type_sejour AS liste_type_sejour, + service_facturation_code AS liste_service + FROM cti_rfar_w_forme_activite_used + JOIN activite.t_forme_activite ON t_forme_activite.code = forme_activite_code AND forme_activite_code <> '' + WHERE service_facturation_id <> 0 + ORDER BY 1 + ) subview + ; + + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_service_entree) + SELECT code, + texte, + forme_activite_id, + nextval('w_priorite'::regclass), + liste_type_sejour, + liste_service + FROM + ( + SELECT 'CTI#' || service_facturation_code || '#' || type_sejour AS code, + 'Valeur par défaut CTI ' || + service_facturation_texte || '(' || service_facturation_code || ')' || ' - ' || + CASE type_sejour + WHEN '1' THEN 'Hospitalisés' + WHEN '2' THEN 'Ambulatoires' + WHEN '3' THEn 'Externes' + WHEN '5' THEN 'Séances' + WHEN '6' THEN 'Bébés' + WHEN '9' THEN 'Séjours fictifs' + END AS texte + , + t_forme_activite.oid AS forme_activite_id, + type_sejour AS liste_type_sejour, + service_facturation_code AS liste_service + FROM cti_rfar_w_forme_activite_used + JOIN activite.t_forme_activite ON t_forme_activite.code = forme_activite_code AND forme_activite_code <> '' + WHERE service_facturation_id <> 0 + ORDER BY 1 + ) subview + ; + + PERFORM setval('w_priorite', 99000, true); + + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour) + SELECT code, + texte, + forme_activite_id, + nextval('w_priorite'::regclass), + liste_type_sejour + FROM + ( + SELECT 'CTI#'||type_sejour AS code, + 'Valeur par défaut CTI ' || + CASE type_sejour + WHEN '1' THEN 'Hospitalisés' + WHEN '2' THEN 'Ambulatoires' + WHEN '3' THEn 'Externes' + WHEN '5' THEN 'Séances' + WHEN '6' THEN 'Bébés' + WHEN '9' THEN 'Séjours fictifs' + END AS texte + , + t_forme_activite.oid AS forme_activite_id, + type_sejour AS liste_type_sejour + FROM cti_rfar_w_forme_activite_used + JOIN activite.t_forme_activite ON t_forme_activite.code = forme_activite_code AND forme_activite_code <> '' + WHERE service_facturation_id = 0 + ORDER BY 1 + ) subview + ; + + + + -- Spécifique selon les GHM + PERFORM setval('w_priorite', 10000, true); + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_ghm) + SELECT 'CTI#GHM1415#1', + 'Valeur par défaut CTI CMD 14 et 15 - Hospitalisés', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '1', + '14* 15*' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '113' + ORDER BY 1 + ; + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_ghm) + SELECT 'CTI#GHM1415#2', + 'Valeur par défaut CTI CMD 14 et 15 - Ambulatoires', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '2', + '14* 15*' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '123' + ORDER BY 1 + ; + + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_ghm) + SELECT 'CTI#GHM09Z02#1', + 'Valeur par défaut CTI GHM 09Z02, 23Z03 - Hospitalisés', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '1', + '09Z02* 23Z03*' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '114' + ORDER BY 1 + ; + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_ghm) + SELECT 'CTI#GHM09Z02#2', + 'Valeur par défaut CTI GHM 09Z02, 23Z03 - Ambulatoires', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '2', + '09Z02* 23Z03*' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '124' + ORDER BY 1 + ; + + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_ghm) + SELECT 'CTI#GHM28DIA', + 'Valeur par défaut CTI GHM Dialyse - Séances', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '5', + '28Z01Z 28Z02Z 28Z03Z 28Z04Z 28Z05Z 28Z06Z' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '131' + ORDER BY 1 + ; + + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_ghm) + SELECT 'CTI#GHM28CHM', + 'Valeur par défaut CTI GHM Chimio - Séances', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '5', + '28Z07Z 28Z17Z' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '132' + ORDER BY 1 + ; + + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_ghm) + SELECT 'CTI#GHM28TRF', + 'Valeur par défaut CTI GHM Dialyse - Séances', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '5', + '28Z14Z' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '133' + ORDER BY 1 + ; + + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_ghm) + SELECT 'CTI#GHM28AUT', + 'Valeur par défaut CTI - Autres séances', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '5', + '28*' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '139' + ORDER BY 1 + ; + + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_ghm) + SELECT 'CTI#GHM28CHM1', + 'Valeur par défaut CTI GHM Chimio - Hospit = Médecine', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '1', + '28*' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '111' + ORDER BY 1 + ; + + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_ghm) + SELECT 'CTI#GHM28CHM1', + 'Valeur par défaut CTI GHM Chimio - Ambu = Médecine', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '2', + '28*' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '121' + ORDER BY 1 + ; + + -- Spécifique selon les classes de GHM + PERFORM setval('w_priorite', 50100, true); + + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_ghm) + SELECT 'CTI#CASC#1', + 'Valeur par défaut CTI CAS C - Hospitalisés', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '1', + '[CAS:C]' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '112' + ORDER BY 1 + ; + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_ghm) + SELECT 'CTI#CASC#1', + 'Valeur par défaut CTI CAS C - Ambulatoires', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '2', + '[CAS:C]' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '122' + ORDER BY 1 + ; + + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_ghm) + SELECT 'CTI#CASCKX#1', + 'Valeur par défaut CTI CAS KX - Hospitalisés', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '1', + '[CAS:K] [CAS:X]' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '111' + ORDER BY 1 + ; + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_ghm) + SELECT 'CTI#CASKX#1', + 'Valeur par défaut CTI CAS KX - Ambulatoires', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '2', + '[CAS:K] [CAS:X]' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '121' + ORDER BY 1 + ; + + + -- Spécifique selon les rubriques + PERFORM setval('w_priorite', 50200, true); + + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_prestation) + SELECT 'CTI#SEH#3', + 'Valeur par défaut CTI SEh - Externes', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '3', + 'SE1 SE2 SE3 SE4 SE5 SE6 SE7' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '701' + ORDER BY 1 + ; + + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_prestation) + SELECT 'CTI#GHS#1', + 'Valeur par défaut CTI GHS - Hospitalisés', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '1', + 'GHS' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '119' + ORDER BY 1 + ; + + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_prestation) + SELECT 'CTI#GHS#2', + 'Valeur par défaut CTI GHS - Ambulatoires', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '2', + 'GHS' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '129' + ORDER BY 1 + ; + + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite, liste_type_sejour, liste_prestation) + SELECT 'CTI#ATU#3', + 'Valeur par défaut CTI ATU - Externes', + t_forme_activite.oid, + nextval('w_priorite'::regclass), + '3', + 'ATU FPU FPV FPX FPL FPM' + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '702' + ORDER BY 1 + ; + + -- Autres + INSERT INTO activite.t_forme_activite_rule (code, texte, forme_activite_id, priorite) + SELECT 'CTI#999', + 'Autres formes', + t_forme_activite.oid, + 99999 + FROM activite.t_forme_activite + WHERE t_forme_activite.code = '999' + ORDER BY 1 + ; + + + PERFORM setval('activite.s_forme_activite_rule', (SELECT GREATEST(COALESCE(max(oid),0),1000) FROM activite.t_forme_activite_rule), true); + + UPDATE activite.t_forme_activite_rule + SET oid = nextval('activite.s_forme_activite_rule'::regclass) + WHERE oid < 1000; + + PERFORM setval('activite.s_forme_activite_rule', 1, true); + + + + RAISE NOTICE '%' , 'Application des regles'; + + -- pmsi mco ? + IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 'p_rss') THEN + _module_pmsimco = '1'; + RAISE NOTICE '%' , 'Application des regles. Avec PMSI MCO'; + ELSE + _module_pmsimco = '0'; + END IF; + + + -- Sejours et RSS à Traiter + + RAISE NOTICE '%' , 'Application des regles. Identification des sejours'; + DROP SEQUENCE IF EXISTS w_sejours_rss_sequence; + CREATE SEQUENCE w_sejours_rss_sequence; + DROP TABLE IF EXISTS w_sejours_rss; + + IF _module_pmsimco = '1' THEN + -- si pmsi mco + CREATE TEMP TABLE w_sejours_rss AS + SELECT + nextval('w_sejours_rss_sequence'::regclass) AS oid, + COALESCE(t_finess.oid,0) AS finess_id, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour AS no_sejour, + COALESCE(p_rss.oid,0) AS rss_id, + diagnostic_principal_id, + diagnostic_relie_id, + NULL::bigint[] AS diagnostic_associe_liste_rule_id, + NULL::bigint[] AS acte_liste_rule_id, + NULL::bigint[] AS prestation_liste_rule_id, + NULL::bigint[] AS rubrique_liste_rule_id, + p_rss.ghm_id AS ghm_pmsi_id, + p_sejours.ghm_id AS ghm_activite_id, + COALESCE(medecin_rss_id,0) AS medecin_rss_id, + medecin_sejour_id, + COALESCE(t_medecins_pmsi.specialite_id,0) AS specialite_rss_id, + COALESCE(t_medecins_base.specialite_id,0) AS specialite_sejour_id, + p_sejours.type_sejour, + t_lieux.unite_fonctionnelle_id, + t_lieux.service_facturation_id, + t_lits.etage_id, + t_lieux.unite_fonctionnelle_id AS unite_fonctionnelle_entree_id, + t_lieux.service_facturation_id AS service_facturation_entree_id, + t_lits.etage_id AS etage_entree_id, + t_lieux.activite_id, + 0::bigint AS forme_activite_id, + 0::bigint AS forme_activite_priorite + FROM activite.p_sejours + JOIN activite.t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite.t_lits ON t_lieux.lit_id = t_lits.oid + LEFT JOIN pmsi.p_rss ON no_sejour_administratif = no_sejour AND p_sejours.date_sortie = p_rss.date_sortie AND p_rss.etat = '' + LEFT JOIN pmsi.t_medecins t_medecins_pmsi ON medecin_rss_id = t_medecins_pmsi.oid + LEFT JOIN activite.t_medecins_administratifs ON medecin_sejour_id = t_medecins_administratifs.oid + LEFT JOIN base.t_medecins t_medecins_base ON t_medecins_administratifs.medecin_id = t_medecins_base.oid + LEFT JOIN base.t_finess ON p_sejours.finess = t_finess.code; + INSERT INTO w_sejours_rss + SELECT + nextval('w_sejours_rss_sequence'::regclass) AS oid, + COALESCE(t_finess.oid,0) AS finess_id, + 0 AS sejour_id, + '' AS no_sejour, + p_rss.oid AS rss_id, + diagnostic_principal_id, + diagnostic_relie_id, + NULL::bigint[] AS diagnostic_associe_liste_rule_id, + NULL::bigint[] AS acte_liste_rule_id, + NULL::bigint[] AS prestation_liste_rule_id, + NULL::bigint[] AS rubrique_liste_rule_id, + p_rss.ghm_id AS ghm_pmsi_id, + 0 AS ghm_activite_id, + medecin_rss_id, + 0::bigint AS medecin_sejour_id, + COALESCE(t_medecins_pmsi.specialite_id,0) AS specialite_rss_id, + 0::bigint AS specialite_sejour_id, + ''::text AS type_sejour, + 0::bigint AS unite_fonctionnelle_id, + 0::bigint AS service_facturation_id, + 0::bigint AS etage_id, + 0::bigint AS unite_fonctionnelle_entree_id, + 0::bigint AS service_facturation_entree_id, + 0::bigint AS etage_entree_id, + 0::bigint AS activite_id, + 0::bigint AS forme_activite_id, + 0::bigint AS forme_activite_priorite + FROM pmsi.p_rss + LEFT JOIN pmsi.t_medecins t_medecins_pmsi ON medecin_rss_id = t_medecins_pmsi.oid + LEFT JOIN base.t_finess ON p_rss.finess = t_finess.code + WHERE date_sortie >= '20100101' AND p_rss.oid NOT IN (SELECt rss_id FROM w_sejours_rss); + UPDATE w_sejours_rss SET + medecin_rss_id = t_medecins.oid, + specialite_rss_id = t_medecins.specialite_id + FROM activite.t_medecins_administratifs_c + JOIN pmsi.t_medecins ON t_medecins_administratifs_c.adm_code = t_medecins.code + WHERE medecin_sejour_id = t_medecins_administratifs_c.oid AND + t_medecins.oid <> 0 AND + (t_medecins.oid IS DISTINCT FROM medecin_rss_id OR + specialite_rss_id IS DISTINCT FROM t_medecins.specialite_id) + ; + ELSE + -- si pas pmsi mco + CREATE TEMP TABLE w_sejours_rss AS + SELECT + nextval('w_sejours_rss_sequence'::regclass) AS oid, + COALESCE(t_finess.oid,0) AS finess_id, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour AS no_sejour, + 0 AS rss_id, + 0::bigint AS diagnostic_principal_id, + 0::bigint AS diagnostic_relie_id, + NULL::bigint[] AS diagnostic_associe_liste_rule_id, + NULL::bigint[] AS acte_liste_rule_id, + NULL::bigint[] AS prestation_liste_rule_id, + NULL::bigint[] AS rubrique_liste_rule_id, + 0::bigint AS ghm_pmsi_id, + p_sejours.ghm_id AS ghm_activite_id, + 0 AS medecin_rss_id, + medecin_sejour_id, + 0 AS specialite_rss_id, + COALESCE(t_medecins_base.specialite_id,0) AS specialite_sejour_id, + p_sejours.type_sejour, + t_lieux.unite_fonctionnelle_id, + t_lieux.service_facturation_id, + t_lits.etage_id, + t_lieux.unite_fonctionnelle_id AS unite_fonctionnelle_entree_id, + t_lieux.service_facturation_id AS service_facturation_entree_id, + t_lits.etage_id AS etage_entree_id, + t_lieux.activite_id, + 0::bigint AS forme_activite_id, + 0::bigint AS forme_activite_priorite + FROM activite.p_sejours + JOIN activite.t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite.t_lits ON t_lieux.lit_id = t_lits.oid + LEFT JOIN base.t_finess ON p_sejours.finess = t_finess.code + LEFT JOIN activite.t_medecins_administratifs ON medecin_sejour_id = t_medecins_administratifs.oid + LEFT JOIN base.t_medecins t_medecins_base ON t_medecins_administratifs.medecin_id = t_medecins_base.oid; + END IF; + + -- Unites d'entrées + UPDATE w_sejours_rss SET + unite_fonctionnelle_entree_id = t_lieux.unite_fonctionnelle_id, + service_facturation_entree_id = t_lieux.service_facturation_id, + etage_entree_id = t_lits.etage_id + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux ON p_mouvements_sejour.lieu_id = t_lieux.oid + JOIN activite.t_lits ON t_lieux.lit_id = t_lits.oid + WHERE w_sejours_rss.no_sejour = p_mouvements_sejour.no_sejour AND nb_entrees_directes = 1 AND + ( + t_lieux.unite_fonctionnelle_id <> unite_fonctionnelle_entree_id OR + t_lieux.service_facturation_id <> service_facturation_entree_id OR + t_lits.etage_id <> etage_entree_id + ) + ; + + + -- GHM sur services non MCO + -- Verrouillé pour l'instant (on verra par la suite) + -- UPDATE w_sejours_rss SET + -- ghm_pmsi_id = 0, + -- ghm_activite_id = 0 + -- FROM activite.t_services_facturation + -- WHERE service_facturation_id = t_services_facturation .oid AND + -- type_t2a <> '1' AND + -- service_facturation_id <> 0 AND + -- (ghm_pmsi_id > 0 OR + -- ghm_activite_id > 0) + -- ; + + -- + UPDATE w_sejours_rss SET + medecin_rss_id = 0, + specialite_rss_id = 0 + WHERE medecin_sejour_id <> 0; + UPDATE w_sejours_rss + SET finess_id = (SELECT MAX(finess_id) FROM w_sejours_rss WHERE finess_id <> 0) + WHERE finess_id = 0 AND (SELECT MAX(finess_id) FROM w_sejours_rss WHERE finess_id <> 0) <> 0; + UPDATE w_sejours_rss + SET finess_id = (SELECT MAX(oid) FROM base.t_finess) + WHERE finess_id = 0; + CREATE INDEX w_sejours_rss_i0 ON w_sejours_rss USING btree (oid); + CREATE INDEX w_sejours_rss_i1 ON w_sejours_rss USING btree (rss_id); + CREATE INDEX w_sejours_rss_i2 ON w_sejours_rss USING btree (sejour_id); + CREATE INDEX w_sejours_rss_i3 ON w_sejours_rss USING btree (no_sejour); + + -- Traduction des règles en oid + RAISE NOTICE '%' , 'Application des regles. Traduction en oid'; + DROP TABLE IF EXISTS w_forme_activite_rule; + CREATE TEMP TABLE w_forme_activite_rule AS + SELECT + t_forme_activite_rule.oid, + forme_activite_id, + CASE WHEN priorite <> 0 THEN priorite WHEN liste_diagnostic_principal <> '' THEN 90000 ELSE 999999 END AS priorite, + CASE WHEN liste_finess <> '' THEN '1' ELSE '0' END AS a_liste_finess, + string_to_array(translate(liste_finess,'*,','% '),' ') AS liste_finess, + NULL::bigint[] AS liste_finess_id , + CASE WHEN liste_diagnostic_principal <> '' THEN '1' ELSE '0' END AS a_liste_diagnostic_principal, + string_to_array(translate(liste_diagnostic_principal,'*,','% '),' ') AS liste_diagnostic_principal, + NULL::bigint[] AS liste_diagnostic_principal_id , + CASE WHEN liste_diagnostic_relie <> '' THEN '1' ELSE '0' END AS a_liste_diagnostic_relie, + string_to_array(translate(liste_diagnostic_relie,'*,','% '),' ') AS liste_diagnostic_relie, + NULL::bigint[] AS liste_diagnostic_relie_id , + CASE WHEN liste_diagnostic_associe <> '' THEN '1' ELSE '0' END AS a_liste_diagnostic_associe, + string_to_array(translate(liste_diagnostic_associe,'*,','% '),' ') AS liste_diagnostic_associe, + NULL::bigint[] AS liste_diagnostic_associe_id , + CASE WHEN liste_acte <> '' THEN '1' ELSE '0' END AS a_liste_acte, + string_to_array(translate(liste_acte,'*,','% '),' ') AS liste_acte, + NULL::bigint[] AS liste_acte_pmsi_id , + NULL::bigint[] AS liste_acte_base_id , + CASE WHEN liste_ghm <> '' THEN '1' ELSE '0' END AS a_liste_ghm, + string_to_array(translate(liste_ghm,'*,','% '),' ') AS liste_ghm, + NULL::bigint[] AS liste_ghm_pmsi_id, + NULL::bigint[] AS liste_ghm_activite_id, + liste_ghm AS liste_ghm_origine, + CASE WHEN liste_sauf_ghm <> '' THEN '1' ELSE '0' END AS a_liste_sauf_ghm, + string_to_array(translate(liste_sauf_ghm,'*,','% '),' ') AS liste_sauf_ghm, + NULL::bigint[] AS liste_sauf_ghm_pmsi_id , + NULL::bigint[] AS liste_sauf_ghm_activite_id , + liste_sauf_ghm AS liste_sauf_ghm_origine, + CASE WHEN liste_type_sejour <> '' THEN '1' ELSE '0' END AS a_liste_type_sejour, + string_to_array(translate(liste_type_sejour,'*,','% '),' ') AS liste_type_sejour, + NULL::text[] AS liste_type_sejour_id , + CASE WHEN liste_unite_fonctionnelle <> '' THEN '1' ELSE '0' END AS a_liste_unite_fonctionnelle, + string_to_array(translate(liste_unite_fonctionnelle,'*,','% '),' ') AS liste_unite_fonctionnelle, + NULL::bigint[] AS liste_unite_fonctionnelle_id , + CASE WHEN liste_service <> '' THEN '1' ELSE '0' END AS a_liste_service, + string_to_array(translate(liste_service,'*,','% '),' ') AS liste_service, + NULL::bigint[] AS liste_service_id , + CASE WHEN liste_etage <> '' THEN '1' ELSE '0' END AS a_liste_etage, + string_to_array(translate(liste_etage,'*,','% '),' ') AS liste_etage, + NULL::bigint[] AS liste_etage_id , + CASE WHEN liste_unite_fonctionnelle_entree <> '' THEN '1' ELSE '0' END AS a_liste_unite_fonctionnelle_entree, + string_to_array(translate(liste_unite_fonctionnelle_entree,'*,','% '),' ') AS liste_unite_fonctionnelle_entree, + NULL::bigint[] AS liste_unite_fonctionnelle_entree_id , + CASE WHEN liste_service_entree <> '' THEN '1' ELSE '0' END AS a_liste_service_entree, + string_to_array(translate(liste_service_entree,'*,','% '),' ') AS liste_service_entree, + NULL::bigint[] AS liste_service_entree_id , + CASE WHEN liste_etage_entree <> '' THEN '1' ELSE '0' END AS a_liste_etage_entree, + string_to_array(translate(liste_etage_entree,'*,','% '),' ') AS liste_etage_entree, + NULL::bigint[] AS liste_etage_entree_id , + NULL::bigint[] AS liste_activite_id , + CASE WHEN liste_medecin <> '' THEN '1' ELSE '0' END AS a_liste_medecin, + string_to_array(CASE WHEN liste_medecin NOT LIKE '%**%' THEN translate(liste_medecin,'*,','% ') ELSE liste_medecin END,' ') AS liste_medecin, + NULL::bigint[] AS liste_medecin_pmsi_id , + NULL::bigint[] AS liste_medecin_activite_id , + CASE WHEN liste_specialite <> '' THEN '1' ELSE '0' END AS a_liste_specialite, + string_to_array(translate(liste_specialite,'*,','% '),' ') AS liste_specialite, + NULL::bigint[] AS liste_specialite_pmsi_id , + NULL::bigint[] AS liste_specialite_activite_id , + CASE WHEN liste_rubrique <> '' THEN '1' ELSE '0' END AS a_liste_rubrique, + string_to_array(translate(liste_rubrique,'*,','% '),' ') AS liste_rubrique, + NULL::bigint[] AS liste_rubrique_id, + CASE WHEN liste_prestation <> '' THEN '1' ELSE '0' END AS a_liste_prestation, + string_to_array(translate(liste_prestation,'*,','% '),' ') AS liste_prestation, + NULL::bigint[] AS liste_prestation_id + FROM activite.t_forme_activite_rule + JOIN activite.t_forme_activite ON forme_activite_id = t_forme_activite.oid + ORDER BY priorite, forme_activite_id; + + + + UPDATE w_forme_activite_rule + SET liste_finess_id = (SELECT base.cti_group_array3(oid) FROM base.t_finess WHERE code LIKE ANY (liste_finess)) + WHERE a_liste_finess = '1'; + + IF _module_pmsimco = '1' THEN + UPDATE w_forme_activite_rule + SET liste_diagnostic_principal_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_diagnostics WHERE code LIKE ANY (liste_diagnostic_principal)) + WHERE a_liste_diagnostic_principal = '1'; + UPDATE w_forme_activite_rule + SET liste_diagnostic_relie_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_diagnostics WHERE code LIKE ANY (liste_diagnostic_relie)) + WHERE a_liste_diagnostic_relie = '1'; + UPDATE w_forme_activite_rule + SET liste_diagnostic_associe_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_diagnostics WHERE code LIKE ANY (liste_diagnostic_associe)) + WHERE a_liste_diagnostic_associe = '1'; + UPDATE w_forme_activite_rule + SET liste_acte_pmsi_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_actes WHERE code LIKE ANY (liste_acte)) + WHERE a_liste_acte = '1'; + DROP TABLE IF EXISTS w_forme_activite_rule_actes_pmsi; + CREATE TEMP TABLE w_forme_activite_rule_actes_pmsi AS + SELECT t_actes.oid AS rule_acte_id, w_forme_activite_rule.oid AS rule_id + FROM pmsi.t_actes + JOIN w_forme_activite_rule ON code LIKE ANY (liste_acte); + CREATE INDEX w_forme_activite_rule_actes_pmsi_i1 ON w_forme_activite_rule_actes_pmsi USING btree (rule_acte_id); + END IF; + + + DROP TABLE IF EXISTS w_forme_activite_rule_actes_base; + CREATE TEMP TABLE w_forme_activite_rule_actes_base AS + SELECT t_actes.oid AS rule_acte_id, w_forme_activite_rule.oid AS rule_id + FROM base.t_actes + JOIN w_forme_activite_rule ON code LIKE ANY (liste_acte); + CREATE INDEX w_forme_activite_rule_actes_base_i1 ON w_forme_activite_rule_actes_base USING btree (rule_acte_id); + + DROP TABLE IF EXISTS w_forme_activite_rule_rubriques; + CREATE TEMP TABLE w_forme_activite_rule_rubriques AS + SELECT t_rubriques_facturation.oid AS rule_rubrique_id, w_forme_activite_rule.oid AS rule_id + FROM activite.t_rubriques_facturation + JOIN w_forme_activite_rule ON code LIKE ANY (liste_rubrique); + CREATE INDEX w_forme_activite_rule_rubriques_i1 ON w_forme_activite_rule_rubriques USING btree (rule_rubrique_id); + + DROP TABLE IF EXISTS w_forme_activite_rule_prestations; + CREATE TEMP TABLE w_forme_activite_rule_prestations AS + SELECT t_prestations.oid AS rule_prestation_id, w_forme_activite_rule.oid AS rule_id + FROM activite.t_prestations + JOIN w_forme_activite_rule ON code LIKE ANY (liste_prestation); + CREATE INDEX w_forme_activite_rule_prestations_i1 ON w_forme_activite_rule_prestations USING btree (rule_prestation_id); + + UPDATE w_forme_activite_rule + SET liste_acte_base_id = (SELECT base.cti_group_array3(oid) FROM base.t_actes WHERE code LIKE ANY (liste_acte)) + WHERE a_liste_acte = '1' + ; + + IF _module_pmsimco = '1' THEN + UPDATE w_forme_activite_rule + SET liste_ghm_pmsi_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_ghm WHERE code LIKE ANY (liste_ghm)) + WHERE a_liste_ghm = '1'; + UPDATE w_forme_activite_rule + SET liste_ghm_pmsi_id = + array_cat(liste_ghm_pmsi_id, + (SELECT base.cti_group_array3(t_ghm.oid) FROM pmsi.t_ghm JOIN base.t_cas ON cas_id = t_cas.oid WHERE '[CAS:'||t_cas.code||']' LIKE ANY (liste_ghm)) + ) + WHERE a_liste_ghm = '1' AND + liste_ghm_origine LIKE '%[CAS:%' + ; + END IF; + + UPDATE w_forme_activite_rule + SET liste_ghm_activite_id = (SELECT base.cti_group_array3(oid) FROM base.t_ghm WHERE code LIKE ANY (liste_ghm)) + WHERE a_liste_ghm = '1' + ; + UPDATE w_forme_activite_rule + SET liste_ghm_activite_id = + array_cat(liste_ghm_activite_id, + (SELECT base.cti_group_array3(t_ghm.oid) FROM base.t_ghm JOIN base.t_cas ON cas_id = t_cas.oid WHERE '[CAS:'||t_cas.code||']' LIKE ANY (liste_ghm)) + ) + WHERE a_liste_ghm = '1' AND + liste_ghm_origine LIKE '%[CAS:%' + ; + IF _module_pmsimco = '1' THEN + UPDATE w_forme_activite_rule + SET liste_sauf_ghm_pmsi_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_ghm WHERE code LIKE ANY (liste_sauf_ghm)) + WHERE a_liste_sauf_ghm = '1'; + END IF; + + UPDATE w_forme_activite_rule + SET liste_sauf_ghm_activite_id = (SELECT base.cti_group_array3(oid) FROM base.t_ghm WHERE code LIKE ANY (liste_sauf_ghm)) + WHERE a_liste_sauf_ghm = '1' + ; + IF _module_pmsimco = '1' THEN + UPDATE w_forme_activite_rule + SET liste_medecin_pmsi_id = ( + SELECT base.cti_group_array3(t_medecins_pmsi.oid) + FROM pmsi.t_medecins t_medecins_pmsi + JOIN base.t_medecins ON t_medecins_pmsi.medecin_reference_id = t_medecins.oid + WHERE t_medecins_pmsi.oid <> 0 AND t_medecins_pmsi.code <> '' AND t_medecins_pmsi.code LIKE ANY (liste_medecin) AND liste_medecin[1] <> '(R)' OR + t_medecins.oid <> 0 AND t_medecins.code <> '' AND t_medecins.code LIKE ANY (liste_medecin) AND liste_medecin[1] = '(R)' + ) + WHERE a_liste_medecin = '1'; + END IF; + + UPDATE w_forme_activite_rule + SET liste_medecin_activite_id = ( + SELECT base.cti_group_array3(t_medecins_administratifs.oid) + FROM activite.t_medecins_administratifs + JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid + WHERE t_medecins_administratifs.oid <> 0 AND t_medecins_administratifs.code <> '' AND t_medecins_administratifs.code LIKE ANY (liste_medecin) AND liste_medecin[1] <> '(R)' OR + t_medecins.oid <> 0 AND t_medecins.code <> '' AND t_medecins.code LIKE ANY (liste_medecin) AND liste_medecin[1] = '(R)' + ) + WHERE a_liste_medecin = '1' + ; + IF _module_pmsimco = '1' THEN + UPDATE w_forme_activite_rule + SET liste_specialite_pmsi_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_specialites_medecin WHERE code LIKE ANY (liste_specialite)) + WHERE a_liste_specialite = '1'; + END IF; + + UPDATE w_forme_activite_rule + SET liste_specialite_activite_id = (SELECT base.cti_group_array3(oid) FROM base.t_specialites_medecin WHERE code LIKE ANY (liste_specialite)) + WHERE a_liste_specialite = '1' + ; + UPDATE w_forme_activite_rule + SET liste_type_sejour_id = (SELECT base.cti_group_array3(code) FROM activite.t_type_sejour WHERE code <> '' AND code LIKE ANY (liste_type_sejour)) + WHERE a_liste_type_sejour = '1' + ; + UPDATE w_forme_activite_rule + SET liste_unite_fonctionnelle_id = (SELECT base.cti_group_array3(oid) FROM activite.t_unites_fonctionnelles WHERE code LIKE ANY (liste_unite_fonctionnelle)) + WHERE a_liste_unite_fonctionnelle = '1' + ; + UPDATE w_forme_activite_rule + SET liste_service_id = (SELECT base.cti_group_array3(oid) FROM activite.t_services_facturation WHERE code LIKE ANY (liste_service)) + WHERE a_liste_service = '1' + ; + UPDATE w_forme_activite_rule + SET liste_etage_id = (SELECT base.cti_group_array3(oid) FROM activite.t_etages WHERE code LIKE ANY (liste_etage)) + WHERE a_liste_etage = '1' + ; + UPDATE w_forme_activite_rule + SET liste_unite_fonctionnelle_entree_id = (SELECT base.cti_group_array3(oid) FROM activite.t_unites_fonctionnelles WHERE code LIKE ANY (liste_unite_fonctionnelle_entree)) + WHERE a_liste_unite_fonctionnelle_entree = '1' + ; + UPDATE w_forme_activite_rule + SET liste_service_entree_id = (SELECT base.cti_group_array3(oid) FROM activite.t_services_facturation WHERE code LIKE ANY (liste_service_entree)) + WHERE a_liste_service_entree = '1' + ; + UPDATE w_forme_activite_rule + SET liste_etage_entree_id = (SELECT base.cti_group_array3(oid) FROM activite.t_etages WHERE code LIKE ANY (liste_etage_entree)) + WHERE a_liste_etage_entree = '1' + ; + UPDATE w_forme_activite_rule + SET liste_rubrique_id = (SELECT base.cti_group_array3(oid) FROM activite.t_rubriques_facturation WHERE code LIKE ANY (liste_rubrique)) + WHERE a_liste_rubrique = '1' + ; + UPDATE w_forme_activite_rule + SET liste_prestation_id = (SELECT base.cti_group_array3(oid) FROM activite.t_prestations WHERE code LIKE ANY (liste_prestation)) + WHERE a_liste_prestation = '1' + ; + + + -- Association cles aux rubriques + RAISE NOTICE '%' , 'Application des regles. Traitement des rubriques'; + DROP TABLE IF EXISTS w_factures_rubriques; + CREATE TEMP TABLE w_factures_rubriques AS + SELECT + p_factures.no_sejour, rule_id + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN w_forme_activite_rule_rubriques ON p_factures_lignes_c.rubrique_facturation_id = rule_rubrique_id + WHERE p_factures_lignes_c.montant_facture <> 0 + GROUP BY 1,2 + HAVING SUM(p_factures_lignes_c.montant_facture) > 0 + UNION + SELECT + p_factures.no_sejour, rule_id + FROM activite.p_factures_lignes_non_facturees_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_non_facturees_c.no_facture + JOIN w_forme_activite_rule_rubriques ON p_factures_lignes_non_facturees_c.rubrique_facturation_id = rule_rubrique_id + ; + CREATE INDEX w_factures_rubriques_i1 ON w_factures_rubriques USING btree (no_sejour); + + DROP TABLE IF EXISTS w_forme_activite_rubriques; + CREATE TEMP TABLE w_forme_activite_rubriques AS + + SELECT oid, base.cti_group_array3(rubrique_rule_id) AS rubrique_liste_rule_id + FROM + ( + SELECT + w_sejours_rss.oid, rule_id AS rubrique_rule_id + FROM w_factures_rubriques + JOIN w_sejours_rss ON w_factures_rubriques.no_sejour = w_sejours_rss.no_sejour + ) subview + GROUP BY 1; + ALTER TABLE w_forme_activite_rubriques ADD CONSTRAINT w_forme_activite_rubriques_pkey PRIMARY KEY(oid); + UPDATE w_sejours_rss + SET rubrique_liste_rule_id = w_forme_activite_rubriques.rubrique_liste_rule_id + FROM w_forme_activite_rubriques + WHERE w_forme_activite_rubriques.oid = w_sejours_rss.oid; + + + + -- Association cles aux prestations + RAISE NOTICE '%' , 'Application des regles. Traitement des prestations'; + DROP TABLE IF EXISTS w_factures_prestations; + CREATE TEMP TABLE w_factures_prestations AS + SELECT + p_factures.no_sejour, rule_id + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN w_forme_activite_rule_prestations ON p_factures_lignes_c.prestation_id = rule_prestation_id + WHERE p_factures_lignes_c.montant_facture <> 0 + GROUP BY 1,2 + HAVING SUM(p_factures_lignes_c.montant_facture) > 0 + UNION + SELECT + p_factures.no_sejour, rule_id + FROM activite.p_factures_lignes_non_facturees_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_non_facturees_c.no_facture + JOIN w_forme_activite_rule_prestations ON p_factures_lignes_non_facturees_c.prestation_id = rule_prestation_id + GROUP BY 1,2 + ; + CREATE INDEX w_factures_prestations_i1 ON w_factures_prestations USING btree (no_sejour); + + DROP TABLE IF EXISTS w_forme_activite_prestations; + CREATE TEMP TABLE w_forme_activite_prestations AS + + SELECT oid, base.cti_group_array3(prestation_rule_id) AS prestation_liste_rule_id + FROM + ( + SELECT + w_sejours_rss.oid, rule_id AS prestation_rule_id + FROM w_factures_prestations + JOIN w_sejours_rss ON w_factures_prestations.no_sejour = w_sejours_rss.no_sejour + ) subview + GROUP BY 1; + ALTER TABLE w_forme_activite_prestations ADD CONSTRAINT w_forme_activite_prestations_pkey PRIMARY KEY(oid); + UPDATE w_sejours_rss + SET prestation_liste_rule_id = w_forme_activite_prestations.prestation_liste_rule_id + FROM w_forme_activite_prestations + WHERE w_forme_activite_prestations.oid = w_sejours_rss.oid; + + + -- Association cles aux actes + RAISE NOTICE '%' , 'Application des regles. Traitement des actes'; + DROP TABLE IF EXISTS w_factures_actes; + CREATE TEMP TABLE w_factures_actes AS + SELECT + no_facture, rule_id + FROM activite.p_factures_lignes_h + JOIN w_forme_activite_rule_actes_base ON p_factures_lignes_h.acte_id = rule_acte_id + WHERE activite_ccam <> '4' + UNION + SELECT + no_facture, rule_id + FROM activite.p_factures_lignes_non_facturees_h + JOIN w_forme_activite_rule_actes_base ON p_factures_lignes_non_facturees_h.acte_id = rule_acte_id + WHERE activite_ccam <> '4'; + CREATE INDEX w_factures_actes_i1 ON w_factures_actes USING btree (no_facture); + + DROP TABLE IF EXISTS w_forme_activite_actes; + IF _module_pmsimco = '1' THEN + CREATE TEMP TABLE w_forme_activite_actes AS + SELECT oid, base.cti_group_array3(acte_rule_id) AS acte_liste_rule_id + FROM + ( + SELECT + w_sejours_rss.oid, rule_id AS acte_rule_id + FROM pmsi.p_rss_actes + JOIN w_sejours_rss ON p_rss_actes.rss_id = w_sejours_rss.rss_id + JOIN w_forme_activite_rule_actes_pmsi ON p_rss_actes.acte_id = rule_acte_id + UNION + SELECT + w_sejours_rss.oid, rule_id AS acte_rule_id + FROM w_factures_actes + JOIN activite.p_factures ON w_factures_actes.no_facture = p_factures.no_facture + JOIN w_sejours_rss ON p_factures.no_sejour = w_sejours_rss.no_sejour + + ) subview + GROUP BY 1; + ELSE + CREATE TEMP TABLE w_forme_activite_actes AS + SELECT oid, base.cti_group_array3(acte_rule_id) AS acte_liste_rule_id + FROM + ( + SELECT + w_sejours_rss.oid, rule_id AS acte_rule_id + FROM w_factures_actes + JOIN activite.p_factures ON w_factures_actes.no_facture = p_factures.no_facture + JOIN w_sejours_rss ON p_factures.no_sejour = w_sejours_rss.no_sejour + + ) subview + GROUP BY 1; + END IF; + ALTER TABLE w_forme_activite_actes ADD CONSTRAINT w_forme_activite_actes_pkey PRIMARY KEY(oid); + UPDATE w_sejours_rss + SET acte_liste_rule_id = w_forme_activite_actes.acte_liste_rule_id + FROM w_forme_activite_actes + WHERE w_forme_activite_actes.oid = w_sejours_rss.oid; + + -- Diagnostics + IF _module_pmsimco = '1' THEN + RAISE NOTICE '%' , 'Application des regles. Traitement des diagnostics'; + DROP TABLE IF EXISTS w_forme_activite_diagnostics; + CREATE TEMP TABLE w_forme_activite_diagnostics AS + SELECT + w_sejours_rss.oid, base.cti_group_array3(w_forme_activite_rule.oid) AS diagnostic_associe_liste_rule_id + FROM pmsi.p_rss_diagnostics + JOIN w_forme_activite_rule ON type_diagnostic_rss IN ('DA', 'DS') AND diagnostic_id = ANY (liste_diagnostic_associe_id) + JOIN w_sejours_rss ON p_rss_diagnostics.rss_id = w_sejours_rss.rss_id + WHERE a_liste_diagnostic_associe <> '0' + GROUP BY 1; + ALTER TABLE w_forme_activite_diagnostics ADD CONSTRAINT w_forme_activite_diagnostics_pkey PRIMARY KEY(oid); + UPDATE w_sejours_rss + SET diagnostic_associe_liste_rule_id = w_forme_activite_diagnostics.diagnostic_associe_liste_rule_id + FROM w_forme_activite_diagnostics + WHERE w_forme_activite_diagnostics.oid = w_sejours_rss.oid; + END IF; + + -- Mise à jour des cles venant des données du PMSI + RAISE NOTICE '%' , 'Application des regles. Attribution des formes activite venant du pmsi'; + DROP TABLE IF EXISTS w_sejours_forme_activite; + CREATE TEMP TABLE w_sejours_forme_activite AS + SELECT w_sejours_rss.oid, + MIN(priorite)+1 AS forme_activite_priorite, + (MIN(ARRAY[priorite,w_forme_activite_rule.forme_activite_id]))[2] AS forme_activite_id + FROM w_sejours_rss + JOIN w_forme_activite_rule ON + (a_liste_finess = '0' OR finess_id = ANY (liste_finess_id)) AND + (a_liste_medecin = '0' OR medecin_rss_id = ANY (liste_medecin_pmsi_id)) AND + (a_liste_type_sejour = '0') AND + (a_liste_unite_fonctionnelle = '0') AND + (a_liste_service = '0') AND + (a_liste_etage = '0') AND + (a_liste_unite_fonctionnelle_entree = '0') AND + (a_liste_service_entree = '0') AND + (a_liste_etage_entree = '0') AND + (a_liste_specialite = '0' OR specialite_rss_id = ANY (liste_specialite_pmsi_id)) AND + (a_liste_diagnostic_principal = '0' OR diagnostic_principal_id = ANY (liste_diagnostic_principal_id)) AND + (a_liste_diagnostic_relie = '0' OR diagnostic_relie_id = ANY (liste_diagnostic_relie_id)) AND + (a_liste_diagnostic_associe = '0' OR w_forme_activite_rule.oid = ANY(diagnostic_associe_liste_rule_id)) AND + (a_liste_acte = '0' OR w_forme_activite_rule.oid = ANY(acte_liste_rule_id)) AND + (a_liste_ghm = '0' OR ghm_pmsi_id = ANY (liste_ghm_pmsi_id)) AND + (a_liste_sauf_ghm = '0' OR ghm_pmsi_id <> ALL (liste_sauf_ghm_pmsi_id)) AND + (a_liste_prestation = '0') AND + (a_liste_rubrique = '0') + WHERE w_sejours_rss.rss_id <> 0 + GROUP BY 1 + ORDER BY 1; + UPDATE w_sejours_rss SET + forme_activite_id = w_sejours_forme_activite.forme_activite_id, + forme_activite_priorite = w_sejours_forme_activite.forme_activite_priorite + FROM w_sejours_forme_activite + WHERE w_sejours_rss.oid = w_sejours_forme_activite.oid; + -- Mise à jour des cles venant des données d'activite + RAISE NOTICE '%' , 'Application des regles. Attribution des formes activite venant de la GAP'; + DROP TABLE IF EXISTS w_sejours_forme_activite; + CREATE TEMP TABLE w_sejours_forme_activite AS + SELECT w_sejours_rss.oid, + MIN(priorite) AS forme_activite_priorite, + (MIN(ARRAY[priorite,w_forme_activite_rule.forme_activite_id]))[2] AS forme_activite_id + FROM w_sejours_rss + JOIN w_forme_activite_rule ON + (a_liste_finess = '0' OR finess_id = ANY (liste_finess_id)) AND + (a_liste_type_sejour = '0' OR type_sejour = ANY (liste_type_sejour_id)) AND + (a_liste_unite_fonctionnelle = '0' OR unite_fonctionnelle_id = ANY (liste_unite_fonctionnelle_id)) AND + (a_liste_service = '0' OR service_facturation_id = ANY (liste_service_id)) AND + (a_liste_etage = '0' OR etage_id = ANY (liste_etage_id)) AND + (a_liste_unite_fonctionnelle_entree = '0' OR unite_fonctionnelle_entree_id = ANY (liste_unite_fonctionnelle_entree_id)) AND + (a_liste_service_entree = '0' OR service_facturation_entree_id = ANY (liste_service_entree_id)) AND + (a_liste_etage_entree = '0' OR etage_entree_id = ANY (liste_etage_entree_id)) AND + (a_liste_medecin = '0' OR medecin_sejour_id = ANY (liste_medecin_activite_id)) AND + (a_liste_specialite = '0' OR specialite_sejour_id = ANY (liste_specialite_activite_id)) AND + (a_liste_diagnostic_principal = '0' OR diagnostic_principal_id = ANY (liste_diagnostic_principal_id)) AND + (a_liste_diagnostic_relie = '0' OR diagnostic_relie_id = ANY (liste_diagnostic_relie_id)) AND + (a_liste_diagnostic_associe = '0' OR w_forme_activite_rule.oid = ANY(diagnostic_associe_liste_rule_id)) AND + (a_liste_acte = '0' OR w_forme_activite_rule.oid = ANY(acte_liste_rule_id)) AND + (a_liste_rubrique = '0' OR w_forme_activite_rule.oid = ANY(rubrique_liste_rule_id)) AND + (a_liste_prestation = '0' OR w_forme_activite_rule.oid = ANY(prestation_liste_rule_id)) AND + (a_liste_ghm = '0' OR ghm_activite_id = ANY (liste_ghm_activite_id)) AND + (a_liste_sauf_ghm = '0' OR ghm_activite_id <> ALL (liste_sauf_ghm_activite_id)) + WHERE w_sejours_rss.sejour_id <> 0 + GROUP BY 1 + ORDER BY 1; + UPDATE w_sejours_rss SET + forme_activite_id = w_sejours_forme_activite.forme_activite_id, + forme_activite_priorite = w_sejours_forme_activite.forme_activite_priorite + FROM w_sejours_forme_activite + WHERE w_sejours_rss.oid = w_sejours_forme_activite.oid AND + (w_sejours_rss.forme_activite_priorite > w_sejours_forme_activite.forme_activite_priorite OR w_sejours_rss.forme_activite_priorite = 0); + + + + RAISE NOTICE '%' , 'Application des regles. Deductions depuis utilisation'; + + -- Valeurs par defaut des médecins + DROP TABLE IF EXISTS w_dft; + CREATE TEMP TABLE w_dft AS + SELECT medecin_sejour_id, type_sejour, + (MAX(ARRAY[to_char(nb,'FM000000000000'),forme_activite_id::text]))[2]::bigint AS forme_activite_id, + MAX(forme_activite_div_id) AS forme_activite_div_id, + (MAX(CASE WHEN is_div <> '1' THEN nb ELSE 0 END) / SUM(CASE WHEN is_div <> '1' THEN nb ELSE 0 END)) AS pct + FROM + ( + SELECT medecin_sejour_id, type_sejour, forme_activite_id, count(*) AS nb, + MAX(CASE WHEN t_forme_activite.code LIKE '%9' THEN '1' ELSE '0' END) AS is_div, + MAX(CASE WHEN t_forme_activite.code LIKE '%9' THEN forme_activite_id ELSE 0 END) AS forme_activite_div_id + FROM w_sejours_rss + JOIN activite.t_forme_activite ON forme_activite_id = t_forme_activite.oid + WHERE type_sejour <> '9' AND medecin_sejour_id <> 0 AND sejour_id <> 0 + GROUP BY 1,2,3 + ) subview + GROUP BY 1,2 + HAVING MAX(is_div) = '1' AND + MIN(is_div) = '0' AND + (MAX(CASE WHEN is_div <> '1' THEN nb ELSE 0 END) / SUM(CASE WHEN is_div <> '1' THEN nb ELSE 0 END)) > 0.95 AND + SUM(CASE WHEN is_div <> '1' THEN nb ELSE 0 END) > 50 AND + (MAX(ARRAY[to_char(nb,'FM000000000000'),forme_activite_id::text]))[2]::bigint <> MAX(forme_activite_div_id) + ; + + DELETE FROM w_dft + USING + activite.t_forme_activite, + activite.t_forme_activite t_forme_activite_div + WHERE forme_activite_id = t_forme_activite.oid AND + forme_activite_div_id = t_forme_activite_div.oid AND + substr(t_forme_activite.code,1,2) <> substr(t_forme_activite_div.code,1,2) + ; + + UPDATE w_sejours_rss + SET forme_activite_id = w_dft.forme_activite_id + FROM w_dft + WHERE w_sejours_rss.medecin_sejour_id = w_dft.medecin_sejour_id AND + w_sejours_rss.type_sejour = w_dft.type_sejour AND + w_sejours_rss.forme_activite_id = w_dft.forme_activite_div_id + ; + + -- Defaut selon medecin et service de sortie + DROP TABLE IF EXISTS w_dft; + CREATE TEMP TABLE w_dft AS + SELECT service_facturation_id, medecin_sejour_id, type_sejour, + (MAX(ARRAY[to_char(nb,'FM000000000000'),forme_activite_id::text]))[2]::bigint AS forme_activite_id, + MAX(forme_activite_div_id) AS forme_activite_div_id, + (MAX(CASE WHEN is_div <> '1' THEN nb ELSE 0 END) / SUM(CASE WHEN is_div <> '1' THEN nb ELSE 0 END)) AS pct + FROM + ( + SELECT service_facturation_id,medecin_sejour_id, type_sejour, forme_activite_id, count(*) AS nb, + MAX(CASE WHEN t_forme_activite.code LIKE '%9' THEN '1' ELSE '0' END) AS is_div, + MAX(CASE WHEN t_forme_activite.code LIKE '%9' THEN forme_activite_id ELSE 0 END) AS forme_activite_div_id + FROM w_sejours_rss + JOIN activite.t_forme_activite ON forme_activite_id = t_forme_activite.oid + WHERE type_sejour <> '9' AND medecin_sejour_id <> 0 AND service_facturation_id <> 0 AND sejour_id <> 0 + GROUP BY 1,2,3,4 + ) subview + GROUP BY 1,2,3 + HAVING MAX(is_div) = '1' AND + MIN(is_div) = '0' AND + (MAX(CASE WHEN is_div <> '1' THEN nb ELSE 0 END) / SUM(CASE WHEN is_div <> '1' THEN nb ELSE 0 END)) > 0.90 AND + SUM(CASE WHEN is_div <> '1' THEN nb ELSE 0 END) > 50 AND + (MAX(ARRAY[to_char(nb,'FM000000000000'),forme_activite_id::text]))[2]::bigint <> MAX(forme_activite_div_id) + ; + + DELETE FROM w_dft + USING + activite.t_forme_activite, + activite.t_forme_activite t_forme_activite_div + WHERE forme_activite_id = t_forme_activite.oid AND + forme_activite_div_id = t_forme_activite_div.oid AND + substr(t_forme_activite.code,1,2) <> substr(t_forme_activite_div.code,1,2) + ; + + UPDATE w_sejours_rss + SET forme_activite_id = w_dft.forme_activite_id + FROM w_dft + WHERE w_sejours_rss.medecin_sejour_id = w_dft.medecin_sejour_id AND + w_sejours_rss.type_sejour = w_dft.type_sejour AND + w_sejours_rss.service_facturation_id = w_dft.service_facturation_id AND + w_sejours_rss.forme_activite_id = w_dft.forme_activite_div_id + ; + + -- Defaut selon service sortie + DROP TABLE IF EXISTS w_dft; + CREATE TEMP TABLE w_dft AS + SELECT service_facturation_id, type_sejour, + (MAX(ARRAY[to_char(nb,'FM000000000000'),forme_activite_id::text]))[2]::bigint AS forme_activite_id, + MAX(forme_activite_div_id) AS forme_activite_div_id, + (MAX(CASE WHEN is_div <> '1' THEN nb ELSE 0 END) / SUM(CASE WHEN is_div <> '1' THEN nb ELSE 0 END)) AS pct + FROM + ( + SELECT service_facturation_id,type_sejour, forme_activite_id, count(*) AS nb, + MAX(CASE WHEN t_forme_activite.code LIKE '%9' THEN '1' ELSE '0' END) AS is_div, + MAX(CASE WHEN t_forme_activite.code LIKE '%9' THEN forme_activite_id ELSE 0 END) AS forme_activite_div_id + FROM w_sejours_rss + JOIN activite.t_forme_activite ON forme_activite_id = t_forme_activite.oid + WHERE type_sejour <> '9' AND service_facturation_id <> 0 AND sejour_id <> 0 + GROUP BY 1,2,3 + ) subview + GROUP BY 1,2 + HAVING MAX(is_div) = '1' AND + MIN(is_div) = '0' AND + (MAX(CASE WHEN is_div <> '1' THEN nb ELSE 0 END) / SUM(CASE WHEN is_div <> '1' THEN nb ELSE 0 END)) > 0.95 AND + SUM(CASE WHEN is_div <> '1' THEN nb ELSE 0 END) > 50 AND + (MAX(ARRAY[to_char(nb,'FM000000000000'),forme_activite_id::text]))[2]::bigint <> MAX(forme_activite_div_id) + ; + + DELETE FROM w_dft + USING + activite.t_forme_activite, + activite.t_forme_activite t_forme_activite_div + WHERE forme_activite_id = t_forme_activite.oid AND + forme_activite_div_id = t_forme_activite_div.oid AND + substr(t_forme_activite.code,1,2) <> substr(t_forme_activite_div.code,1,2) + ; + + UPDATE w_sejours_rss + SET forme_activite_id = w_dft.forme_activite_id + FROM w_dft + WHERE w_sejours_rss.type_sejour = w_dft.type_sejour AND + w_sejours_rss.service_facturation_id = w_dft.service_facturation_id AND + w_sejours_rss.forme_activite_id = w_dft.forme_activite_div_id + ; + + -- Defaut selon medecin et service d'entree + DROP TABLE IF EXISTS w_dft; + CREATE TEMP TABLE w_dft AS + SELECT service_facturation_entree_id, medecin_sejour_id, type_sejour, + (MAX(ARRAY[to_char(nb,'FM000000000000'),forme_activite_id::text]))[2]::bigint AS forme_activite_id, + MAX(forme_activite_div_id) AS forme_activite_div_id, + (MAX(CASE WHEN is_div <> '1' THEN nb ELSE 0 END) / SUM(CASE WHEN is_div <> '1' THEN nb ELSE 0 END)) AS pct + FROM + ( + SELECT service_facturation_entree_id,medecin_sejour_id, type_sejour, forme_activite_id, count(*) AS nb, + MAX(CASE WHEN t_forme_activite.code LIKE '%9' THEN '1' ELSE '0' END) AS is_div, + MAX(CASE WHEN t_forme_activite.code LIKE '%9' THEN forme_activite_id ELSE 0 END) AS forme_activite_div_id + FROM w_sejours_rss + JOIN activite.t_forme_activite ON forme_activite_id = t_forme_activite.oid + WHERE type_sejour <> '9' AND medecin_sejour_id <> 0 AND service_facturation_entree_id <> 0 AND sejour_id <> 0 + GROUP BY 1,2,3,4 + ) subview + GROUP BY 1,2,3 + HAVING MAX(is_div) = '1' AND + MIN(is_div) = '0' AND + (MAX(CASE WHEN is_div <> '1' THEN nb ELSE 0 END) / SUM(CASE WHEN is_div <> '1' THEN nb ELSE 0 END)) > 0.90 AND + SUM(CASE WHEN is_div <> '1' THEN nb ELSE 0 END) > 50 AND + (MAX(ARRAY[to_char(nb,'FM000000000000'),forme_activite_id::text]))[2]::bigint <> MAX(forme_activite_div_id) + ; + + DELETE FROM w_dft + USING + activite.t_forme_activite, + activite.t_forme_activite t_forme_activite_div + WHERE forme_activite_id = t_forme_activite.oid AND + forme_activite_div_id = t_forme_activite_div.oid AND + substr(t_forme_activite.code,1,2) <> substr(t_forme_activite_div.code,1,2) + ; + + UPDATE w_sejours_rss + SET forme_activite_id = w_dft.forme_activite_id + FROM w_dft + WHERE w_sejours_rss.medecin_sejour_id = w_dft.medecin_sejour_id AND + w_sejours_rss.type_sejour = w_dft.type_sejour AND + w_sejours_rss.service_facturation_entree_id = w_dft.service_facturation_entree_id AND + w_sejours_rss.forme_activite_id = w_dft.forme_activite_div_id + ; + + + -- Defaut selon service entree + DROP TABLE IF EXISTS w_dft; + CREATE TEMP TABLE w_dft AS + SELECT service_facturation_entree_id, type_sejour, + (MAX(ARRAY[to_char(nb,'FM000000000000'),forme_activite_id::text]))[2]::bigint AS forme_activite_id, + MAX(forme_activite_div_id) AS forme_activite_div_id, + (MAX(CASE WHEN is_div <> '1' THEN nb ELSE 0 END) / SUM(CASE WHEN is_div <> '1' THEN nb ELSE 0 END)) AS pct + FROM + ( + SELECT service_facturation_entree_id,type_sejour, forme_activite_id, count(*) AS nb, + MAX(CASE WHEN t_forme_activite.code LIKE '%9' THEN '1' ELSE '0' END) AS is_div, + MAX(CASE WHEN t_forme_activite.code LIKE '%9' THEN forme_activite_id ELSE 0 END) AS forme_activite_div_id + FROM w_sejours_rss + JOIN activite.t_forme_activite ON forme_activite_id = t_forme_activite.oid + WHERE type_sejour <> '9' AND service_facturation_entree_id <> 0 AND sejour_id <> 0 + GROUP BY 1,2,3 + ) subview + GROUP BY 1,2 + HAVING MAX(is_div) = '1' AND + MIN(is_div) = '0' AND + (MAX(CASE WHEN is_div <> '1' THEN nb ELSE 0 END) / SUM(CASE WHEN is_div <> '1' THEN nb ELSE 0 END)) > 0.95 AND + SUM(CASE WHEN is_div <> '1' THEN nb ELSE 0 END) > 50 AND + (MAX(ARRAY[to_char(nb,'FM000000000000'),forme_activite_id::text]))[2]::bigint <> MAX(forme_activite_div_id) + ; + + DELETE FROM w_dft + USING + activite.t_forme_activite, + activite.t_forme_activite t_forme_activite_div + WHERE forme_activite_id = t_forme_activite.oid AND + forme_activite_div_id = t_forme_activite_div.oid AND + substr(t_forme_activite.code,1,2) <> substr(t_forme_activite_div.code,1,2) + ; + + UPDATE w_sejours_rss + SET forme_activite_id = w_dft.forme_activite_id + FROM w_dft + WHERE w_sejours_rss.type_sejour = w_dft.type_sejour AND + w_sejours_rss.service_facturation_entree_id = w_dft.service_facturation_entree_id AND + w_sejours_rss.forme_activite_id = w_dft.forme_activite_div_id + ; + + + + + RAISE NOTICE '%' , 'Application des regles. Validation des forme activite'; + UPDATE activite.p_sejours + SET + forme_activite_id = w_sejours_rss.forme_activite_id + FROM w_sejours_rss + WHERE p_sejours.oid = w_sejours_rss.sejour_id AND + p_sejours.oid <> 0 AND + ( + p_sejours.forme_activite_id IS DISTINCT FROM w_sejours_rss.forme_activite_id + ); + + ANALYSE activite.p_sejours + ; + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'forme_activite', forme_activite_id + FROM activite.p_sejours + WHERE forme_activite_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'forme_activite') + GROUP BY 2; + + REINDEX INDEX activite.i_sejours_forme_activite_id; + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_ghm_c.yaml b/db/schema2/functions/cti_reorganize_ghm_c.yaml new file mode 100644 index 0000000..7c3f585 --- /dev/null +++ b/db/schema2/functions/cti_reorganize_ghm_c.yaml @@ -0,0 +1,328 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + BEGIN + DELETE FROM activite.t_ghm_c + WHERE ghm_id NOT IN (SELECT oid FROM base.t_ghm) AND ghm_id > 0; + UPDATE base.t_ghm SET severite = substr(code,6,1) WHERE severite ='' AND oid <> 0; + -- Standard + + UPDATE activite.t_ghm_c SET + ghm_code = t_ghm.code, + ghm_texte = t_ghm.texte, + mco_id = t_mco.oid, + mco_code = t_mco.code, + mco_texte = t_mco.texte, + cas_id = t_ghm.cas_id, + cas_code = t_cas.code, + cas_texte = t_cas.texte, + severite_ghm_id = t_severites_ghm.oid, + severite_ghm_code = t_ghm.severite, + severite_ghm_texte = t_severites_ghm.texte, + cmd_id = t_ghm.cmd_id, + cmd_code = t_cmd.code, + cmd_texte = t_cmd.texte, + ghm5_id = t_ghm.ghm5_id, + ghm5_code = t_ghm5.code, + ghm5_texte = t_ghm5.texte + FROM base.t_ghm + JOIN base.t_cmd ON t_ghm.cmd_id = t_cmd.oid AND t_cmd.code <> '90' + JOIN base.t_mco ON t_mco.code::bpchar = CASE + WHEN t_cmd.code = '28'::bpchar THEN 'S' + WHEN t_ghm.mco = 'M'::bpchar THEN 'M' + WHEN t_ghm.mco = 'C'::bpchar THEN 'C' + WHEN t_ghm.mco = 'O'::bpchar THEN 'O' + ELSE '*' END + JOIN base.t_severites_ghm ON t_ghm.severite = t_severites_ghm.code + JOIN base.t_ghm5 ON t_ghm.ghm5_id = t_ghm5.oid + JOIN base.t_cas ON t_ghm.cas_id = t_cas.oid + WHERE t_ghm.oid = t_ghm_c.ghm_id AND + ( + t_ghm_c.ghm_code IS DISTINCT FROM t_ghm.code OR + t_ghm_c.ghm_texte IS DISTINCT FROM t_ghm.texte OR + t_ghm_c.mco_id IS DISTINCT FROM t_mco.oid OR + t_ghm_c.mco_code IS DISTINCT FROM t_mco.code OR + t_ghm_c.mco_texte IS DISTINCT FROM t_mco.texte OR + t_ghm_c.cas_id IS DISTINCT FROM t_ghm.cas_id OR + t_ghm_c.cas_code IS DISTINCT FROM t_cas.code OR + t_ghm_c.cas_texte IS DISTINCT FROM t_cas.texte OR + t_ghm_c.severite_ghm_id IS DISTINCT FROM t_severites_ghm.oid OR + t_ghm_c.severite_ghm_code IS DISTINCT FROM t_ghm.severite OR + t_ghm_c.severite_ghm_texte IS DISTINCT FROM t_severites_ghm.texte OR + t_ghm_c.cmd_id IS DISTINCT FROM t_ghm.cmd_id OR + t_ghm_c.cmd_code IS DISTINCT FROM t_cmd.code OR + t_ghm_c.cmd_texte IS DISTINCT FROM t_cmd.texte OR + t_ghm_c.ghm5_id IS DISTINCT FROM t_ghm.ghm5_id OR + t_ghm_c.ghm5_code IS DISTINCT FROM t_ghm5.code OR + t_ghm_c.ghm5_texte IS DISTINCT FROM t_ghm5.texte + ); + INSERT INTO activite.t_ghm_c( + ghm_id, + ghm_code, + ghm_texte, + mco_id, + mco_code, + mco_texte, + cas_id, + cas_code, + cas_texte, + severite_ghm_id, + severite_ghm_code, + severite_ghm_texte, + cmd_id, + cmd_code, + cmd_texte, + ghm5_id, + ghm5_code, + ghm5_texte) + SELECT + t_ghm.oid, + t_ghm.code AS ghm_code, + t_ghm.texte AS ghm_texte, + t_mco.oid AS mco_id, + t_mco.code AS mco_code, + t_mco.texte AS mco_texte, + t_ghm.cas_id, + t_cas.code AS cas_code, + t_cas.texte AS cas_texte, + t_severites_ghm.oid AS severite_ghm_id, + t_ghm.severite AS severite_ghm_code, + t_severites_ghm.texte AS severite_ghm_texte, + t_ghm.cmd_id, + t_cmd.code AS cmd_code, + t_cmd.texte_court AS cmd_texte, + t_ghm.ghm5_id AS ghm5_id, + t_ghm5.code AS ghm5_code, + t_ghm5.texte AS ghm5_texte + FROM base.t_ghm + JOIN base.t_cmd ON t_ghm.cmd_id = t_cmd.oid AND t_cmd.code <> '90' + JOIN base.t_mco ON t_mco.code::bpchar = CASE + WHEN t_cmd.code = '28'::bpchar THEN 'S' + WHEN t_ghm.mco = 'M'::bpchar THEN 'M' + WHEN t_ghm.mco = 'C'::bpchar THEN 'C' + WHEN t_ghm.mco = 'O'::bpchar THEN 'O' + ELSE '*' END + JOIN base.t_severites_ghm ON t_ghm.severite = t_severites_ghm.code + JOIN base.t_ghm5 ON t_ghm.ghm5_id = t_ghm5.oid + JOIN base.t_cas ON t_ghm.cas_id = t_cas.oid + WHERE t_ghm.oid NOT IN (SELECT ghm_id FROM activite.t_ghm_c); + -- Codes spéciaux + UPDATE activite.t_ghm_c SET + ghm_code = t_ghm.code, + ghm_texte = t_ghm.texte, + mco_id = t_mco.oid, + mco_code = t_mco.code, + mco_texte = t_mco.texte, + cas_id = t_cas.oid, + cas_code = t_cas.code, + cas_texte = t_cas.texte, + severite_ghm_id = t_severites_ghm.oid, + severite_ghm_code = t_severites_ghm.code, + severite_ghm_texte = t_severites_ghm.texte, + cmd_id = t_ghm.cmd_id, + cmd_code = t_ghm.cmd_code, + cmd_texte = t_ghm.cmd_texte, + ghm5_id = t_ghm.oid, + ghm5_code = t_ghm.code, + ghm5_texte = t_ghm.texte + FROM ( + SELECT -9991 AS oid, '99_SE1' AS code, 'Hors GHM. Forfaits SE1' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9992 AS oid, '99_SE2' AS code, 'Hors GHM. Forfaits SE2' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9993 AS oid, '99_SE3' AS code, 'Hors GHM. Forfaits SE3' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9994 AS oid, '99_SE4' AS code, 'Hors GHM. Forfaits SE4' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9995 AS oid, '99_ATU' AS code, 'Hors GHM. Forfaits ATU' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9996 AS oid, '99_FFM' AS code, 'Hors GHM. Forfaits FFM' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9990 AS oid, '99_ZZZ' AS code, 'Hors GHM. Divers' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9980 AS oid, '98_P' AS code, 'Champ GHM. Présents' AS texte, -9980 AS cmd_id, '98' AS cmd_code, 'Champ GHM. Non groupés' AS cmd_texte, -9980 AS groupe_id, 'ZY' AS groupe_code, 'Champ GHM. Non groupés' AS groupe_texte + UNION + SELECT -9981 AS oid, '98_NG' AS code, 'Champ GHM. Sortis non groupés' AS texte, -9980 AS cmd_id, '98' AS cmd_code, 'Champ GHM. Non groupés' AS cmd_texte, -9980 AS groupe_id, 'ZY' AS groupe_code, 'Champ GHM. Non groupés' AS groupe_texte) t_ghm + JOIN base.t_mco ON t_mco.code = '*' + JOIN base.t_severites_ghm ON t_severites_ghm.code = '*' + JOIN base.t_cas ON t_cas.code = '*' + WHERE t_ghm.oid = t_ghm_c.ghm_id AND + ( + t_ghm_c.ghm_code IS DISTINCT FROM t_ghm.code OR + t_ghm_c.ghm_texte IS DISTINCT FROM t_ghm.texte OR + t_ghm_c.mco_id IS DISTINCT FROM t_mco.oid OR + t_ghm_c.mco_code IS DISTINCT FROM t_mco.code OR + t_ghm_c.mco_texte IS DISTINCT FROM t_mco.texte OR + t_ghm_c.cas_id IS DISTINCT FROM t_cas.oid OR + t_ghm_c.cas_code IS DISTINCT FROM t_cas.code OR + t_ghm_c.cas_texte IS DISTINCT FROM t_cas.texte OR + t_ghm_c.severite_ghm_id IS DISTINCT FROM t_severites_ghm.oid OR + t_ghm_c.severite_ghm_code IS DISTINCT FROM t_severites_ghm.code OR + t_ghm_c.severite_ghm_texte IS DISTINCT FROM t_severites_ghm.texte OR + t_ghm_c.cmd_id IS DISTINCT FROM t_ghm.cmd_id OR + t_ghm_c.cmd_code IS DISTINCT FROM t_ghm.cmd_code OR + t_ghm_c.cmd_texte IS DISTINCT FROM t_ghm.cmd_texte OR + t_ghm_c.ghm5_id IS DISTINCT FROM t_ghm.oid OR + t_ghm_c.ghm5_code IS DISTINCT FROM t_ghm.code OR + t_ghm_c.ghm5_texte IS DISTINCT FROM t_ghm.texte + ); + INSERT INTO activite.t_ghm_c( + ghm_id, + ghm_code, + ghm_texte, + mco_id, + mco_code, + mco_texte, + cas_id, + cas_code, + cas_texte, + severite_ghm_id, + severite_ghm_code, + severite_ghm_texte, + cmd_id, + cmd_code, + cmd_texte, + ghm5_id, + ghm5_code, + ghm5_texte) + SELECT + t_ghm.oid AS oid, + t_ghm.code AS ghm_code, + t_ghm.texte AS ghm_texte, + t_mco.oid AS mco_id, + t_mco.code AS mco_code, + t_mco.texte AS mco_texte, + t_cas.oid AS cas_id, + t_cas.code AS cas_code, + t_cas.texte AS cas_texte, + t_severites_ghm.oid AS severite_ghm_id, + t_severites_ghm.code AS severite_ghm_code, + t_severites_ghm.texte AS severite_ghm_texte, + t_ghm.cmd_id AS cmd_id, + t_ghm.cmd_code AS cmd_code, + t_ghm.cmd_texte AS cmd_texte, + t_ghm.oid AS ghm5_id, + t_ghm.code AS ghm5_code, + t_ghm.texte AS ghm5_texte + FROM ( + SELECT -9991 AS oid, '99_SE1' AS code, 'Hors GHM. Forfaits SE1' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9992 AS oid, '99_SE2' AS code, 'Hors GHM. Forfaits SE2' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9993 AS oid, '99_SE3' AS code, 'Hors GHM. Forfaits SE3' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9994 AS oid, '99_SE4' AS code, 'Hors GHM. Forfaits SE4' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9997 AS oid, '99_SE5' AS code, 'Hors GHM. Forfaits SE5' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9998 AS oid, '99_SE6' AS code, 'Hors GHM. Forfaits SE6' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9995 AS oid, '99_ATU' AS code, 'Hors GHM. Forfaits ATU' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9996 AS oid, '99_FFM' AS code, 'Hors GHM. Forfaits FFM' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9990 AS oid, '99_ZZZ' AS code, 'Hors GHM. Divers' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9980 AS oid, '98_P' AS code, 'Champ GHM. Présents' AS texte, -9980 AS cmd_id, '98' AS cmd_code, 'Champ GHM. Non groupés' AS cmd_texte, -9980 AS groupe_id, 'ZY' AS groupe_code, 'Champ GHM. Non groupés' AS groupe_texte + UNION + SELECT -9981 AS oid, '98_NG' AS code, 'Champ GHM. Sortis non groupés' AS texte, -9980 AS cmd_id, '98' AS cmd_code, 'Champ GHM. Non groupés' AS cmd_texte, -9980 AS groupe_id, 'ZY' AS groupe_code, 'Champ GHM. Non groupés' AS groupe_texte) t_ghm + JOIN base.t_mco ON t_mco.code = '*' + JOIN base.t_severites_ghm ON t_severites_ghm.code = '*' + JOIN base.t_cas ON t_cas.code = '*' + WHERE t_ghm.oid NOT IN (SELECT ghm_id FROM activite.t_ghm_c); + -- Erreurs de groupage + UPDATE activite.t_ghm_c SET + ghm_code = t_ghm.code, + ghm_texte = t_ghm.texte, + mco_id = t_mco.oid, + mco_code = t_mco.code, + mco_texte = t_mco.texte, + cas_id = t_cas.oid, + cas_code = t_cas.code, + cas_texte = t_cas.texte, + severite_ghm_id = t_severites_ghm.oid, + severite_ghm_code = t_severites_ghm.code, + severite_ghm_texte = t_severites_ghm.texte, + cmd_id = t_ghm.cmd_id, + cmd_code = t_cmd.code, + cmd_texte = t_cmd.texte, + ghm5_id = t_ghm.ghm5_id, + ghm5_code = t_ghm5.code, + ghm5_texte = t_ghm5.texte + FROM base.t_ghm + JOIN base.t_cmd ON t_ghm.cmd_id = t_cmd.oid AND t_cmd.code = '90' + JOIN base.t_mco ON t_mco.code = '*' + JOIN base.t_severites_ghm ON t_severites_ghm.code = '*' + JOIN base.t_cas ON t_cas.code = '*' + JOIN base.t_ghm5 ON t_ghm.ghm5_id = t_ghm5.oid + WHERE t_ghm.oid = t_ghm_c.ghm_id AND + ( + t_ghm_c.ghm_code IS DISTINCT FROM t_ghm.code OR + t_ghm_c.ghm_texte IS DISTINCT FROM t_ghm.texte OR + t_ghm_c.mco_id IS DISTINCT FROM t_mco.oid OR + t_ghm_c.mco_code IS DISTINCT FROM t_mco.code OR + t_ghm_c.mco_texte IS DISTINCT FROM t_mco.texte OR + t_ghm_c.cas_id IS DISTINCT FROM t_cas.oid OR + t_ghm_c.cas_code IS DISTINCT FROM t_cas.code OR + t_ghm_c.cas_texte IS DISTINCT FROM t_cas.texte OR + t_ghm_c.severite_ghm_id IS DISTINCT FROM t_severites_ghm.oid OR + t_ghm_c.severite_ghm_code IS DISTINCT FROM t_severites_ghm.code OR + t_ghm_c.severite_ghm_texte IS DISTINCT FROM t_severites_ghm.texte OR + t_ghm_c.cmd_id IS DISTINCT FROM t_ghm.cmd_id OR + t_ghm_c.cmd_code IS DISTINCT FROM t_cmd.code OR + t_ghm_c.cmd_texte IS DISTINCT FROM t_cmd.texte OR + t_ghm_c.ghm5_id IS DISTINCT FROM t_ghm.ghm5_id OR + t_ghm_c.ghm5_code IS DISTINCT FROM t_ghm5.code OR + t_ghm_c.ghm5_texte IS DISTINCT FROM t_ghm5.texte + ); + INSERT INTO activite.t_ghm_c( + ghm_id, + ghm_code, + ghm_texte, + mco_id, + mco_code, + mco_texte, + cas_id, + cas_code, + cas_texte, + severite_ghm_id, + severite_ghm_code, + severite_ghm_texte, + cmd_id, + cmd_code, + cmd_texte, + ghm5_id, + ghm5_code, + ghm5_texte) + SELECT + t_ghm.oid AS oid, + t_ghm.code AS ghm_code, + t_ghm.texte AS ghm_texte, + t_mco.oid AS mco_id, + t_mco.code AS mco_code, + t_mco.texte AS mco_texte, + t_cas.oid AS cas_id, + t_cas.code AS cas_code, + t_cas.texte AS cas_texte, + t_severites_ghm.oid AS severite_ghm_id, + t_severites_ghm.code AS severite_ghm_code, + t_severites_ghm.texte AS severite_ghm_texte, + t_ghm.cmd_id AS cmd_id, + t_cmd.code AS cmd_code, + t_cmd.texte AS cmd_texte, + t_ghm.ghm5_id AS ghm5_id, + t_ghm5.code AS ghm5_code, + t_ghm5.texte AS ghm5_texte + FROM base.t_ghm + JOIN base.t_cmd ON t_ghm.cmd_id = t_cmd.oid AND t_cmd.code = '90' + JOIN base.t_mco ON t_mco.code = '*' + JOIN base.t_severites_ghm ON t_severites_ghm.code = '*' + JOIN base.t_cas ON t_cas.code = '*' + JOIN base.t_ghm5 ON t_ghm.ghm5_id = t_ghm5.oid + WHERE t_ghm.oid NOT IN (SELECT ghm_id FROM activite.t_ghm_c); + PERFORM base.cti_update_classes('activite', 't_ghm_c', 'GHM','ghm_section'); + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_ghmgme_c.yaml b/db/schema2/functions/cti_reorganize_ghmgme_c.yaml new file mode 100644 index 0000000..ded5055 --- /dev/null +++ b/db/schema2/functions/cti_reorganize_ghmgme_c.yaml @@ -0,0 +1,139 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + BEGIN + TRUNCATE activite.t_ghmgme_c + ; + INSERT INTO activite.t_ghmgme_c + ( ghmgme_id, ghmgme_code, ghmgme_texte,cm_id, cm_code, cm_texte, gn_id, gn_code, gn_texte,rgme_id,rgme_code,rgme_texte, gme_id, gme_code, gme_texte,ghm_id,ghm_code,ghm_texte, cmd_id, cmd_code, cmd_texte,ghm5_id,ghm5_code, ghm5_texte, type_pmsi) + VALUES + (0, 'Non renseigné', 'Non renseigné', 0, 'Non renseigné', 'Non renseigné', 0, 'Non renseigné', 'Non renseigné', 0, 'Non renseigné', 'Non renseigné', 0, 'Non renseigné', 'Non renseigné', 0, 'Non renseigné', 'Non renseigné', 0, 'Non renseigné', 'Non renseigné', 0, 'Non renseigné', 'Non renseigné', 'MCO/SSR'); + + /* + Insertion GHM sauf 99 + */ + INSERT INTO activite.t_ghmgme_c + ( + ghmgme_id, + ghmgme_code, + ghmgme_texte, + + ghm_id, + ghm_code, + ghm_texte, + + cmd_id, + cmd_code, + cmd_texte, + + ghm5_id, + ghm5_code, + ghm5_texte, + + type_pmsi) + SELECT + ghm_id, + ghm_code, + 'MCO: ' || ghm_texte, + + ghm_id, + ghm_code, + 'MCO: ' || ghm_texte, + + cmd_id, + cmd_code, + 'MCO: ' || cmd_texte, + + ghm5_id, + ghm5_code, + 'MCO: ' || ghm5_texte, + '1' + FROM activite.t_ghm_c + where ghm_id > 0 AND length(ghm_code) > 5 + order by ghm_id + ; + + /* + Insertion GME sauf 99 + */ + + INSERT INTO activite.t_ghmgme_c + ( + ghmgme_id, + ghmgme_code, + ghmgme_texte, + + cm_id, + cm_code, + cm_texte, + + gn_id, + gn_code, + gn_texte, + + rgme_id, + rgme_code, + rgme_texte, + + gme_id, + gme_code, + gme_texte, + + type_pmsi) + + SELECT + gme_id + 10000, + gme_code, + 'SSR: ' || gme_texte, + + cm_id, + cm_code, + 'SSR: ' || cm_texte, + + gn_id, + gn_code, + 'SSR: ' || gn_texte, + + rgme_id, + rgme_code, + 'SSR: ' || rgme_texte, + + gme_id, + gme_code, + 'SSR: ' || gme_texte, + '2' + FROM activite.t_gme_c + WHERE gme_id > 0 AND length(gme_code) > 5 + ; + + INSERT INTO activite.t_ghmgme_c + ( + ghmgme_id, + ghmgme_code, + ghmgme_texte, + type_pmsi ) + SELECT -9991 AS oid, '99_SE1' AS code, 'Hors GHM-GME. Forfaits SE1' AS texte, '12' + UNION + SELECT -9992 AS oid, '99_SE2' AS code, 'Hors GHM-GME. Forfaits SE2' AS texte, '12' + UNION + SELECT -9993 AS oid, '99_SE3' AS code, 'Hors GHM-GME. Forfaits SE3' AS texte, '12' + UNION + SELECT -9994 AS oid, '99_SE4' AS code, 'Hors GHM-GME. Forfaits SE4' AS texte, '12' + UNION + SELECT -9995 AS oid, '99_ATU' AS code, 'Hors GHM-GME. Forfaits ATU' AS texte, '12' + UNION + SELECT -9996 AS oid, '99_FFM' AS code, 'Hors GHM-GME. Forfaits FFM' AS texte, '12' + UNION + SELECT -9990 AS oid, '99_ZZZ' AS code, 'Hors GHM-GME. Divers' AS texte, '12' + UNION + SELECT -9980 AS oid, '98_P' AS code, 'Champ GHM-GME. Présents' AS texte, '12' + UNION + SELECT -9981 AS oid, '98_NG' AS code, 'Champ GHM-GME. Sortis non groupés' AS texte, '12'; + + /*PERFORM base.cti_update_classes + ('activite', 't_ghmgme_c', 'GHMGME','ghmgme_section');*/ + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_ghs_c.yaml b/db/schema2/functions/cti_reorganize_ghs_c.yaml new file mode 100644 index 0000000..b9c5564 --- /dev/null +++ b/db/schema2/functions/cti_reorganize_ghs_c.yaml @@ -0,0 +1,179 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + BEGIN + + -- Standard + UPDATE activite.t_ghs_c + SET + ghs_code = t_ghs.code, + ghs_code_text = CASE WHEN t_ghs.code_text IS NOT NULL AND t_ghs.code_text <> '' THEN t_ghs.code_text ELSE to_char(t_ghs.code,'FM0000') END , + ghs_texte = t_ghs.texte, + ghm_id=t_ghm.oid, + ghm_code=t_ghm.code, + ghm_texte=t_ghm.texte, + mco_id=t_mco.oid, + mco_code=t_mco.code, + mco_texte=t_mco.texte, + cmd_id=t_cmd.oid, + cmd_code=t_cmd.code, + cmd_texte=t_cmd.texte + FROM base.t_ghs, base.t_ghm, base.t_mco, base.t_cmd + WHERE + t_ghs_c.ghs_id = t_ghs.oid + AND t_ghs.oid > 0 + AND t_ghs.ghm_id = t_ghm.oid + AND t_mco.code = t_ghm.mco + AND t_cmd.oid = t_ghm.cmd_id + AND ( + t_ghs_c.ghs_code IS DISTINCT FROM t_ghs.code OR + t_ghs_c.ghs_code_text IS DISTINCT FROM CASE WHEN t_ghs.code_text IS NOT NULL AND t_ghs.code_text <> '' THEN t_ghs.code_text ELSE to_char(t_ghs.code,'FM0000') END OR + t_ghs_c.ghs_texte IS DISTINCT FROM t_ghs.texte OR + t_ghs_c.ghm_id IS DISTINCT FROM t_ghm.oid OR + t_ghs_c.ghm_code IS DISTINCT FROM t_ghm.code OR + t_ghs_c.ghm_texte IS DISTINCT FROM t_ghm.texte OR + t_ghs_c.mco_id IS DISTINCT FROM t_mco.oid OR + t_ghs_c.mco_code IS DISTINCT FROM t_mco.code OR + t_ghs_c.mco_texte IS DISTINCT FROM t_mco.texte OR + t_ghs_c.cmd_id IS DISTINCT FROM t_cmd.oid OR + t_ghs_c.cmd_code IS DISTINCT FROM t_cmd.code OR + t_ghs_c.cmd_texte IS DISTINCT FROM t_cmd.texte + ); + INSERT INTO activite.t_ghs_c( + ghs_id, ghs_code, ghs_code_text, ghs_texte, ghm_id, ghm_code, + ghm_texte, mco_id, mco_code, mco_texte, cmd_id, cmd_code, cmd_texte) + SELECT + t_ghs.oid, + t_ghs.code, + CASE WHEN t_ghs.code_text IS NOT NULL AND t_ghs.code_text <> '' THEN t_ghs.code_text ELSE to_char(t_ghs.code,'FM0000') END AS ghs_code_text, + t_ghs.texte, + t_ghm.oid, + t_ghm.code, + t_ghm.texte, + t_mco.oid, + t_mco.code, + t_mco.texte, + t_cmd.oid, + t_cmd.code, + t_cmd.texte + FROM base.t_ghs, base.t_ghm, base.t_mco, base.t_cmd + WHERE + t_ghs.ghm_id::text = t_ghm.oid::text + AND t_ghs.oid >= 0 + AND t_mco.code = t_ghm.mco + AND t_cmd.oid = t_ghm.cmd_id + AND t_ghs.oid NOT IN (SELECT ghs_id FROM activite.t_ghs_c) + ORDER BY t_ghs.oid; + -- Codes spéciaux + + UPDATE activite.t_ghs_c + SET + ghs_code = 0 - t_ghs.oid, + ghs_code_text = (0 - t_ghs.oid)::text, + ghs_texte = t_ghs.texte, + ghm_id = t_ghs.oid, + ghm_code = t_ghs.code, + ghm_texte = t_ghs.texte, + mco_id = t_mco.oid, + mco_code = t_mco.code, + mco_texte = t_mco.texte, + cmd_id = t_ghs.cmd_id, + cmd_code = t_ghs.cmd_code, + cmd_texte = t_ghs.cmd_texte + FROM ( + SELECT -9991 AS oid, '99_SE1' AS code, 'Hors GHM. Forfaits SE1' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9992 AS oid, '99_SE2' AS code, 'Hors GHM. Forfaits SE2' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9993 AS oid, '99_SE3' AS code, 'Hors GHM. Forfaits SE3' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9994 AS oid, '99_SE4' AS code, 'Hors GHM. Forfaits SE4' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9995 AS oid, '99_ATU' AS code, 'Hors GHM. Forfaits ATU' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9996 AS oid, '99_FFM' AS code, 'Hors GHM. Forfaits FFM' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9990 AS oid, '99_ZZZ' AS code, 'Hors GHM. Divers' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9980 AS oid, '98_P' AS code, 'Champ GHM. Présents' AS texte, -9980 AS cmd_id, '98' AS cmd_code, 'Champ GHM. Non groupés' AS cmd_texte, -9980 AS groupe_id, 'ZY' AS groupe_code, 'Champ GHM. Non groupés' AS groupe_texte + UNION + SELECT -9981 AS oid, '98_NG' AS code, 'Champ GHM. Sortis non groupés' AS texte, -9980 AS cmd_id, '98' AS cmd_code, 'Champ GHM. Non groupés' AS cmd_texte, -9980 AS groupe_id, 'ZY' AS groupe_code, 'Champ GHM. Non groupés' AS groupe_texte) t_ghs + JOIN base.t_mco ON t_mco.code = '*' + JOIN base.t_severites_ghm ON t_severites_ghm.code = '*' + JOIN base.t_cas ON t_cas.code = '*' + WHERE t_ghs_c.ghs_id = t_ghs.oid AND + ( + t_ghs_c.ghs_code IS DISTINCT FROM 0 - t_ghs.oid OR + t_ghs_c.ghs_code_text IS DISTINCT FROM (0 - t_ghs.oid)::text OR + t_ghs_c.ghs_texte IS DISTINCT FROM t_ghs.texte OR + t_ghs_c.ghm_id IS DISTINCT FROM t_ghs.oid OR + t_ghs_c.ghm_code IS DISTINCT FROM t_ghs.code OR + t_ghs_c.ghm_texte IS DISTINCT FROM t_ghs.texte OR + t_ghs_c.mco_id IS DISTINCT FROM t_mco.oid OR + t_ghs_c.mco_code IS DISTINCT FROM t_mco.code OR + t_ghs_c.mco_texte IS DISTINCT FROM t_mco.texte OR + t_ghs_c.cmd_id IS DISTINCT FROM t_ghs.cmd_id OR + t_ghs_c.cmd_code IS DISTINCT FROM t_ghs.cmd_code OR + t_ghs_c.cmd_texte IS DISTINCT FROM t_ghs.cmd_texte + + ); + INSERT INTO activite.t_ghs_c( + ghs_id, + ghs_code, + ghs_code_text, + ghs_texte, + ghm_id, + ghm_code, + ghm_texte, + mco_id, + mco_code, + mco_texte, + cmd_id, + cmd_code, + cmd_texte) + SELECT + t_ghs.oid, + 0 - t_ghs.oid, + (0 - t_ghs.oid)::text, + t_ghs.texte, + t_ghs.oid AS ghm_id, + t_ghs.code AS ghm_code, + t_ghs.texte AS ghm_texte, + t_mco.oid AS mco_id, + t_mco.code AS mco_code, + t_mco.texte AS mco_texte, + cmd_id, + cmd_code, + cmd_texte + FROM ( + SELECT -9991 AS oid, '99_SE1' AS code, 'Hors GHM. Forfaits SE1' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9992 AS oid, '99_SE2' AS code, 'Hors GHM. Forfaits SE2' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9993 AS oid, '99_SE3' AS code, 'Hors GHM. Forfaits SE3' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9994 AS oid, '99_SE4' AS code, 'Hors GHM. Forfaits SE4' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9997 AS oid, '99_SE5' AS code, 'Hors GHM. Forfaits SE5' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9998 AS oid, '99_SE6' AS code, 'Hors GHM. Forfaits SE6' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9995 AS oid, '99_ATU' AS code, 'Hors GHM. Forfaits ATU' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9996 AS oid, '99_FFM' AS code, 'Hors GHM. Forfaits FFM' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9990 AS oid, '99_ZZZ' AS code, 'Hors GHM. Divers' AS texte, -9990 AS cmd_id, '99' AS cmd_code, 'Hors GHM' AS cmd_texte, -9990 AS groupe_id, 'ZZ' AS groupe_code, 'Hors GHM' AS groupe_texte + UNION + SELECT -9980 AS oid, '98_P' AS code, 'Champ GHM. Présents' AS texte, -9980 AS cmd_id, '98' AS cmd_code, 'Champ GHM. Non groupés' AS cmd_texte, -9980 AS groupe_id, 'ZY' AS groupe_code, 'Champ GHM. Non groupés' AS groupe_texte + UNION + SELECT -9981 AS oid, '98_NG' AS code, 'Champ GHM. Sortis non groupés' AS texte, -9980 AS cmd_id, '98' AS cmd_code, 'Champ GHM. Non groupés' AS cmd_texte, -9980 AS groupe_id, 'ZY' AS groupe_code, 'Champ GHM. Non groupés' AS groupe_texte) t_ghs + JOIN base.t_mco ON t_mco.code = '*' + JOIN base.t_severites_ghm ON t_severites_ghm.code = '*' + JOIN base.t_cas ON t_cas.code = '*' + WHERE t_ghs.oid NOT IN (SELECT ghs_id FROM activite.t_ghs_c) + ORDER BY t_ghs.oid; + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_gme_c.yaml b/db/schema2/functions/cti_reorganize_gme_c.yaml new file mode 100644 index 0000000..28c7739 --- /dev/null +++ b/db/schema2/functions/cti_reorganize_gme_c.yaml @@ -0,0 +1,86 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + BEGIN + TRUNCATE activite.t_gme_c + ; + INSERT INTO activite.t_gme_c( + gme_id, gme_code, gme_texte, gme_section_id, gme_section_code, gme_section_texte, cm_id, + cm_code, cm_texte, cm_section_id, cm_section_code, cm_section_texte, + gn_id, gn_code, gn_texte, gn_section_id, gn_section_code, gn_section_texte, + rgme_id, rgme_code, rgme_texte, rgme_section_id, rgme_section_code, + rgme_section_texte) + SELECT + t_gme.oid, + t_gme.code, + t_gme.texte, + t_gme.section_id, + t_gme.section_code, + t_gme.section_texte, + t_cm.oid, + t_cm.code, + t_cm.texte, + t_cm.section_id, + t_cm.section_code, + t_cm.section_texte, + t_gn.oid, + t_gn.code, + t_gn.texte, + t_gn.section_id, + t_gn.section_code, + t_gn.section_texte, + t_rgme.oid, + t_rgme.code, + t_rgme.texte, + t_rgme.section_id, + t_rgme.section_code, + t_rgme.section_texte + FROM base.t_gme + JOIN base.t_cm ON t_cm.oid = t_gme.cm_id + JOIN base.t_gn ON t_gn.oid = t_gme.gn_id + JOIN base.t_rgme ON t_rgme.oid = t_gme.rgme_id + ; + INSERT INTO activite.t_gme_c( + gme_id, gme_code, gme_texte, + cm_id, cm_code, cm_texte, + gn_id, gn_code, gn_texte, + rgme_id, rgme_code, rgme_texte + ) + SELECT + oid, + code, + texte, + cm_id, + cm_code, + cm_texte, + gn_id, + gn_code, + gn_texte, + rgme_id, + rgme_code, + rgme_texte + FROM + ( + SELECT -9991 AS oid, '99_MCO' AS code, 'Hors SSR. MCO' AS texte, -9990 AS cm_id, '99' AS cm_code, 'Hors SSR' AS cm_texte, -9990 AS gn_id, 'ZZ' AS gn_code, 'Hors SSR' AS gn_texte, -9990 AS rgme_id, 'ZZ' AS rgme_code, 'Hors SSR' AS rgme_texte + UNION + SELECT -9990 AS oid, '99_ZZZ' AS code, 'Hors SSR. Divers' AS texte, -9990 AS cm_id, '99' AS cm_code, 'Hors SSR' AS cm_texte, -9990 AS gn_id, 'ZZ' AS gn_code, 'Hors SSR' AS gn_texte, -9990 AS rgme_id, 'ZZ' AS rgme_code, 'Hors SSR' AS rgme_texte + UNION + SELECT -9980 AS oid, '98_P' AS code, 'Champ SSR. Présents' AS texte, -9980 AS cm_id, '98' AS cm_code, 'Champ SSR. Non groupés' AS cm_texte, -9980 AS gn_id, 'ZY' AS gn_code, 'Champ SSR. Non groupés' AS gn_texte, -9980 AS rgme_id, 'ZY' AS rgme_code, 'Champ SSR. Non groupés' AS rgme_texte + UNION + SELECT -9981 AS oid, '98_NG' AS code, 'Champ SSR. Sortis non groupés' AS texte, -9980 AS cm_id, '98' AS cm_code, 'Champ SSR. Non groupés' AS cm_texte, -9980 AS gn_id, 'ZY' AS gn_code, 'Champ SSR. Non groupés' AS gn_texte, -9980 AS rgme_id, 'ZY' AS rgme_code, 'Champ SSR. Non groupés' AS rgme_texte + UNION + SELECT -9982 AS oid, '98_AX' AS code, 'Champ SSR. Sortis avant première expédition' AS texte, -9980 AS cm_id, '98' AS cm_code, 'Champ SSR. Non groupés' AS cm_texte, -9980 AS gn_id, 'ZY' AS gn_code, 'Champ SSR. Non groupés' AS gn_texte, -9980 AS rgme_id, 'ZY' AS rgme_code, 'Champ SSR. Non groupés' AS rgme_texte + + ) subview + WHERE oid NOT IN (SELECT gme_id FROM activite.t_gme_c) + ; + + ANALYSE activite.t_gme_c + ; + + + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_gmt_c.yaml b/db/schema2/functions/cti_reorganize_gmt_c.yaml new file mode 100644 index 0000000..cd206a5 --- /dev/null +++ b/db/schema2/functions/cti_reorganize_gmt_c.yaml @@ -0,0 +1,32 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + BEGIN + + -- Standard + UPDATE activite.t_gmt_c + SET + gmt_code = t_gmt.code, + gmt_texte = t_gmt.texte + FROM base.t_gmt + WHERE + t_gmt_c.gmt_id = t_gmt.oid + AND ( + t_gmt_c.gmt_code IS DISTINCT FROM t_gmt.code OR + t_gmt_c.gmt_texte IS DISTINCT FROM t_gmt.texte + ); + INSERT INTO activite.t_gmt_c( + gmt_id, gmt_code,gmt_texte) + SELECT + t_gmt.oid, + t_gmt.code, + t_gmt.texte + FROM base.t_gmt + WHERE t_gmt.oid NOT IN (SELECT gmt_id FROM activite.t_gmt_c) + ORDER BY t_gmt.oid; + + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_indicateur_condition.yaml b/db/schema2/functions/cti_reorganize_indicateur_condition.yaml new file mode 100644 index 0000000..0d6d7ef --- /dev/null +++ b/db/schema2/functions/cti_reorganize_indicateur_condition.yaml @@ -0,0 +1,1410 @@ +return: text +lang: plpgsql +src: | + DECLARE + + sqlcmd text; + def_cursor refcursor; + _schemaname text; + result TEXT; + BEGIN + + -- Etablissements + DROP TABLE IF EXISTS w_indicateur_condition; + CREATE TEMP TABLE w_indicateur_condition AS + SELECT + 'CTI_FINESS#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Etablissement ' || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + 'finess_id'::text AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'FINESS='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.code + ELSE v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte + ELSE v_source.texte END + + ] AS arbre_texte + FROM activite.v_finess_1 v_source + LEFT JOIN base.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN base.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN base.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN base.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + WHERE v_source.oid NOT LIKE 'LC%' AND + v_source.oid <> 'DT0' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' + ; + + -- Unités médicales + INSERT INTO w_indicateur_condition + SELECT + 'CTI_UMMOUVEMENT#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'UM ' || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + 'lieu_unite_medicale_id'::text AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'UM_MOUVEMENT='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'UM%' THEN COALESCE('UM#'||t_source.code,v_source.texte) + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + v_source.texte + ] AS arbre_texte + FROM activite.v_unites_medicales_2 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + LEFT JOIN activite.t_unites_medicales t_source ON v_source.oid LIKE 'UM%' AND t_source.oid = substr(v_source.oid,3) + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' AND + (v_source.oid LIKE 'UM%' OR v_source.oid LIKE 'LS%' OR v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%')AND + v_source.oid <> 'UM0' + ; + + -- Etablissements + INSERT INTO w_indicateur_condition + SELECT + 'CTI_POLE#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Pole ' || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + 'pole_id'::text AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'POLE='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.code + ELSE v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte + ELSE v_source.texte END + + ] AS arbre_texte + FROM activite.v_pole_2 v_source + LEFT JOIN base.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN base.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN base.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN base.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + WHERE v_source.oid NOT LIKE 'LC%' AND + v_source.oid <> 'DT0' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' + ; + + -- Formes d'activité + INSERT INTO w_indicateur_condition + SELECT + 'CTI_FORMEACTIVITE#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Forme d''activité ' || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + 'forme_activite_id'::text AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'FORMEACTIVITE='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'DT%' THEN COALESCE('DT#'||t_source.code,v_source.oid) + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte + ELSE v_source.texte END + + ] AS arbre_texte + FROM activite.v_forme_activite_2 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + LEFT JOIN activite.t_forme_activite t_source ON v_source.oid LIKE 'DT%' AND t_source.oid = substr(v_source.oid,3) + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' + ; + + -- Filières de soin + INSERT INTO w_indicateur_condition + SELECT + 'CTI_FILIERESOIN#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Filiere soins ' || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + 'filiere_soin_id'::text AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'FILIERESOINSEJOUR='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'DT%' THEN COALESCE('DT#'||t_source.code,v_source.oid) + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte + ELSE v_source.texte END + + ] AS arbre_texte + FROM activite.v_filiere_soin_2 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + LEFT JOIN activite.t_filiere_soin t_source ON v_source.oid LIKE 'DT%' AND t_source.oid = substr(v_source.oid,3) + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' + ; + + -- Types de séjour + INSERT INTO w_indicateur_condition + SELECT + 'CTI_TYPESEJOUR#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Type de séjour ' || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + 'type_sejour_id'::text AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'TYPESEJOUR='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'DT%' THEN v_source.oid + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte + ELSE v_source.texte END + ] AS arbre_texte + FROM activite.v_type_sejour_1 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' + ; + + -- Durée séjour + INSERT INTO w_indicateur_condition + SELECT + 'CTI_DUREESEJOUR#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Durée séjour ' || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + 'duree_sejour_id'::text AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'DUREESEJOUR='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'DT%' THEN v_source.oid + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes_sections.texte + ELSE v_source.texte END + ] AS arbre_texte + FROM activite.v_durees_sejour_2 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + WHERE v_source.oid NOT LIKE 'LC%' AND + v_source.oid NOT LIKE 'DU%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' + ; + + -- Etages + INSERT INTO w_indicateur_condition + SELECT + 'CTI_ETAGEMOUVEMENT#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Etage. ' || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + 'lieu_etage_id'::text AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'ETAGE_MOUVEMENT='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'ET%' THEN COALESCE('ET#'||t_source.code,v_source.oid) + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + v_source.texte + ] AS arbre_texte + FROM activite.v_etages_2 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + LEFT JOIN activite.t_etages t_source ON v_source.oid LIKE 'ET%' AND t_source.oid = substr(v_source.oid,3) + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' AND + v_source.oid <> 'ET0' + ; + + -- Services + INSERT INTO w_indicateur_condition + SELECT + 'CTI_SERVICEMOUVEMENT#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Service ' || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + 'lieu_service_id'::text AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'SERVICE_MOUVEMENT='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SF%' THEN COALESCE('SF#'||t_source.code,v_source.texte) + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + v_source.texte + ] AS arbre_texte + FROM activite.v_services_facturation_2 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + LEFT JOIN activite.t_services_facturation t_source ON v_source.oid LIKE 'SF%' AND t_source.oid = substr(v_source.oid,3) + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' AND + v_source.oid <> 'SF0' + ; + + -- Activités + INSERT INTO w_indicateur_condition + SELECT + 'CTI_ACTIVITEMOUVEMENT#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'Activite ' || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + 'lieu_activite_id'::text AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'ACTIVITE_MOUVEMENT='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SF%' THEN COALESCE('SF#'||t_source.code,v_source.texte) + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + v_source.texte + ] AS arbre_texte + FROM activite.v_activites_2 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + LEFT JOIN activite.t_activites t_source ON v_source.oid LIKE 'AC%' AND t_source.oid = substr(v_source.oid,3) + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' AND + v_source.oid <> 'AC0' + ; + + -- Unités fonctionnelles + INSERT INTO w_indicateur_condition + SELECT + 'CTI_UFMOUVEMENT#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'UF ' || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + 'lieu_unite_fonctionnelle_id'::text AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'UF_MOUVEMENT='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'UF%' THEN COALESCE('UF#'||t_source.code,v_source.texte) + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + v_source.texte + ] AS arbre_texte + FROM activite.v_unites_fonctionnelles_2 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + LEFT JOIN activite.t_unites_fonctionnelles t_source ON v_source.oid LIKE 'UF%' AND t_source.oid = substr(v_source.oid,3) + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' AND + v_source.oid <> 'UF0' + ; + + -- Médecins séjours + INSERT INTO w_indicateur_condition + SELECT + 'CTI_MEDECINSEJOUR#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte, + CASE WHEN v_source.oid LIKE 'SP%' THEN 'Spécialité ' ELSE 'Médecin ' END || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + CASE WHEN v_source.oid LIKE 'SP%' THEN 'medecin_sejour_specialite_id' ELSE 'medecin_adm_sejour_id' END AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'MEDECIN_SEJOUR='||v_source.oid||'&MEDECIN_MOUVEMENT='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SP%' THEN COALESCE('SP#'||t_source.code,v_source.texte) + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + v_source.texte + + ] AS arbre_texte + FROM activite.v_medecins_5 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + LEFT JOIN base.t_specialites_medecin t_source ON v_source.oid LIKE 'SP%' AND t_source.oid = substr(v_source.oid,3) + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' AND + v_source.oid NOT LIKE 'MD%' AND + v_source.oid NOT LIKE 'MA%' + ; + + + -- Médecins séjours + INSERT INTO w_indicateur_condition + SELECT + 'CTI_MEDECINFACTURE#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte, + CASE WHEN v_source.oid LIKE 'SP%' THEN 'Spécialité ' ELSE 'Médecin facturé ' END || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + CASE WHEN v_source.oid LIKE 'SP%' THEN 'medecin_facture_specialite_id' ELSE 'medecin_adm_facture_id' END AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'MEDECINEXECUTANT='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SP%' THEN COALESCE('SP#'||t_source.code,v_source.texte) + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + v_source.texte + + ] AS arbre_texte + FROM activite.v_medecins_6 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + LEFT JOIN base.t_specialites_medecin t_source ON v_source.oid LIKE 'SP%' AND t_source.oid = substr(v_source.oid,3) + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' AND + v_source.oid NOT LIKE 'MD%' AND + v_source.oid NOT LIKE 'MA%' + ; + + + + -- Modes entrees + INSERT INTO w_indicateur_condition + SELECT + 'CTI_MODEENTREE#' || v_source.code::text AS code, + 'Mode entree ' || v_source.texte::text AS texte, + v_source.texte AS texte_court, + 'mode_entree'::text AS column_name, + ''::text AS rule, + v_source.code::text AS value, + 'MODE_ENTREE='||v_source.code AS view_select_rule, + ARRAY[ + '9'::text, + 'ME#'||t_source.code + + ] AS arbre_code, + ARRAY[ + 'Valeurs'::text, + v_source.texte + ] AS arbre_texte + FROM activite.v_modes_entree_2 v_source + JOIN base.t_modes_entree t_source ON t_source.code = substr(v_source.code,3) + WHERE + v_source.code <> 'ME' + ; + + -- Modes sortie + INSERT INTO w_indicateur_condition + SELECT + 'CTI_MODESORTIE#' || v_source.code::text AS code, + 'Mode sortie ' || v_source.texte::text AS texte, + v_source.texte AS texte_court, + 'mode_sortie'::text AS column_name, + ''::text AS rule, + v_source.code::text AS value, + 'MODE_SORTIE='||v_source.code AS view_select_rule, + ARRAY[ + '9'::text, + 'MS#'||t_source.code + + ] AS arbre_code, + ARRAY[ + 'Valeurs'::text, + v_source.texte + ] AS arbre_texte + FROM activite.v_modes_sortie_2 v_source + JOIN base.t_modes_sortie t_source ON t_source.code = substr(v_source.code,3) + WHERE + v_source.code <> 'MS' + ; + + + + + -- codes postaux + INSERT INTO w_indicateur_condition + SELECT + 'CTI_CODEPOSTAL#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte, + CASE WHEN v_source.oid LIKE 'DP%' THEN 'Département ' ELSE 'Code postal ' END || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + CASE WHEN v_source.oid LIKE 'DP%' THEN 'departement_id' ELSE 'code_postal_id' END AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'ORIGINEGEO_PATIENT='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'DP%' THEN COALESCE('DP#'||t_source.code,v_source.texte) + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + v_source.texte + + ] AS arbre_texte + FROM activite.v_codes_postaux_3 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + LEFT JOIN base.t_departements t_source ON v_source.oid LIKE 'SP%' AND t_source.oid = substr(v_source.oid,3) + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' AND + v_source.oid <> 'DP0' AND + v_source.oid NOT LIKE 'CP%' AND + v_source.oid NOT LIKE 'DG%' AND + v_source.oid NOT LIKE 'GP%' AND + v_source.oid NOT LIKE 'TS%' AND + v_source.code <> '-1' AND + (trim(v_source.code) <> '' OR v_source.oid LIKE 'LS%' OR v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') + ; + + + -- codes postaux + INSERT INTO w_indicateur_condition + SELECT + 'CTI_GHM#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte, + CASE WHEN v_source.oid LIKE 'GM%' THEN 'GHM ' ELSE 'GHM ' END || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + CASE WHEN v_source.oid LIKE 'GM%' THEN 'ghm_id' ELSE 'ghm_id' END AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'GHM='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'DP%' THEN COALESCE('DP#'||t_source.code,v_source.texte) + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + v_source.texte + + ] AS arbre_texte + FROM activite.v_ghm_c_1 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + LEFT JOIN base.t_ghm t_source ON v_source.oid LIKE 'GM%' AND t_source.oid = substr(v_source.oid,3) + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' AND + (v_source.oid LIKE 'LS%' OR v_source.oid LIKE 'LI%') + ; + + -- Clés budgétaires + INSERT INTO w_indicateur_condition + SELECT + 'CTI_BUDGETCLE#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte, + 'Clé budgétaire ' || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + 'budget_cle_id' AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'BUDGET_CLE='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'DP%' THEN COALESCE('DP#'||t_source.code,v_source.texte) + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + v_source.texte + + ] AS arbre_texte + FROM activite.v_budget_cle_1 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + LEFT JOIN activite.t_budget_cle t_source ON v_source.oid LIKE 'GM%' AND t_source.oid = substr(v_source.oid,3) + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' AND + (v_source.oid LIKE 'LS%' OR v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%' OR v_source.oid LIKE 'DT%') + ; + + -- Rubrique facturée + INSERT INTO w_indicateur_condition + SELECT + 'CTI_RUBRIQUE#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'RUB ' || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + 'rubrique_facturation_id'::text AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'RUBRIQUE='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'UF%' THEN COALESCE('UF#'||t_source.code,v_source.texte) + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + v_source.texte + ] AS arbre_texte + FROM activite.v_rubriques_facturation_2 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + LEFT JOIN activite.t_rubriques_facturation t_source ON v_source.oid LIKE 'RU%' AND t_source.oid = substr(v_source.oid,3) + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' AND + v_source.oid <> 'RU0' + ; + + -- Prestation + INSERT INTO w_indicateur_condition + SELECT + 'CTI_PRESTA#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'PRESTATION ' || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + 'prestation_id'::text AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'PRESTATION='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'UF%' THEN COALESCE('UF#'||t_source.code,v_source.texte) + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + v_source.texte + ] AS arbre_texte + FROM activite.v_prestations_3 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + LEFT JOIN activite.t_prestations t_source ON v_source.oid LIKE 'PR%' AND t_source.oid = substr(v_source.oid,3) + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' AND + v_source.oid <> 'PR0' + UNION + SELECT + 'CTI_PRESTA#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'PRESTATION ' || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + 'prestation_id'::text AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'PRESTATION='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + + WHEN (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste ETS' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'UF%' THEN COALESCE('UF#'||t_source.code,v_source.texte) + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + v_source.texte + ] AS arbre_texte + FROM activite.v_prestations_4 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + LEFT JOIN activite.t_prestations t_source ON v_source.oid LIKE 'PR%' AND t_source.oid = substr(v_source.oid,3) + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' AND + v_source.oid <> 'PR0' + ORDER BY 1 + ; + + + -- Rubrique facturée + INSERT INTO w_indicateur_condition + SELECT + 'CTI_ACTE#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'ACTE ' || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + 'acte_id'::text AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'ACTE='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'UF%' THEN COALESCE('UF#'||t_source.code,v_source.texte) + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + v_source.texte + ] AS arbre_texte + FROM activite.v_actes_3 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + LEFT JOIN base.t_actes t_source ON v_source.oid LIKE 'RU%' AND t_source.oid = substr(v_source.oid,3) + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' AND + v_source.oid NOT LIKE 'AC%' AND + v_source.oid NOT LIKE 'NO%' AND + v_source.oid <> 'AC0' + ; + + -- Comptes + INSERT INTO w_indicateur_condition + SELECT + 'CTI_COMPTE#' || v_source.oid::text AS code, + COALESCE(t_classes.texte || '. ' || t_classes_sections.texte,'CPT ' || v_source.texte::text) AS texte, + v_source.texte AS texte_court, + 'compte_produit_id'::text AS column_name, + ''::text AS rule, + v_source.oid::text AS value, + 'COMPTE='||v_source.oid AS view_select_rule, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN '1-Classe' || substr(v_source.oid,3,2) + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '2-Liste CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN '3-Liste CTI' + ELSE '9' END, + CASE + WHEN v_source.oid LIKE 'LS%' THEN 'LS#'||t_listes_tables_classes.code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code + WHEN v_source.oid LIKE 'LI%' THEN 'LI#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'SL%' THEN 'SL#'||t_listes_tables_listes.code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*TXT:'||upper(t_listes.texte) END + WHEN v_source.oid LIKE 'UM%' THEN COALESCE('UM#'||t_source.code,v_source.texte) + ELSE '###'||v_source.oid END + + ] AS arbre_code, + ARRAY[ + CASE + WHEN v_source.oid LIKE 'LS%' THEN t_classes.texte + WHEN v_source.is_cti = '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes CTI' + WHEN v_source.is_cti <> '1' AND (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') THEN 'Listes Etablissement' + ELSE 'Valeurs' END, + v_source.texte + ] AS arbre_texte + FROM activite.v_compte_1 v_source + LEFT JOIN activite.t_classes_sections ON v_source.oid LIKE 'LS%' AND + t_classes_sections.oid::text = substr(v_source.oid,5) + LEFT JOIN activite.t_classes ON t_classes.oid = t_classes_sections.classe_id + LEFT JOIN activite.t_listes_tables t_listes_tables_classes ON t_classes.table_id = t_listes_tables_classes.oid + LEFT JOIN activite.t_listes ON (v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%') AND + t_listes.oid::text = substr(v_source.oid,3) AND + t_listes.code <> '' + LEFT JOIN activite.t_listes_tables t_listes_tables_listes ON t_listes.table_id = t_listes_tables_listes.oid + LEFT JOIN activite.t_unites_medicales t_source ON v_source.oid LIKE 'UM%' AND t_source.oid = substr(v_source.oid,3) + WHERE v_source.oid NOT LIKE 'LC%' AND + (v_source.oid NOT LIKE 'LS%' OR substr(v_source.oid,5) <> '0') AND + v_source.oid <> '-1' AND + (v_source.oid LIKE 'DT%' OR v_source.oid LIKE 'LS%' OR v_source.oid LIKE 'LI%' OR v_source.oid LIKE 'SL%')AND + v_source.oid <> 'DT0' + ; + + + INSERT INTO activite.t_indicateur_condition(code, texte,texte_court,column_name,rule,value,view_select_rule, arbre_code, arbre_texte) + SELECT code, texte,texte_court,column_name,rule,value,view_select_rule, arbre_code, arbre_texte + FROM w_indicateur_condition + WHERE code NOT IN (SELECT code FROM activite.t_indicateur_condition WHERE code IS NOT NULL) + ; + + UPDATE activite.t_indicateur_condition SET + texte = w_indicateur_condition.texte, + texte_court = w_indicateur_condition.texte_court, + column_name = w_indicateur_condition.column_name, + rule = w_indicateur_condition.rule, + value = w_indicateur_condition.value, + view_select_rule = w_indicateur_condition.view_select_rule, + arbre_code = w_indicateur_condition.arbre_code, + arbre_texte = w_indicateur_condition.arbre_texte + FROM w_indicateur_condition + WHERE w_indicateur_condition.code = t_indicateur_condition.code AND + ( + t_indicateur_condition.texte IS DISTINCT FROM w_indicateur_condition.texte OR + t_indicateur_condition.texte_court IS DISTINCT FROM w_indicateur_condition.texte_court OR + t_indicateur_condition.column_name IS DISTINCT FROM w_indicateur_condition.column_name OR + t_indicateur_condition.rule IS DISTINCT FROM w_indicateur_condition.rule OR + t_indicateur_condition.value IS DISTINCT FROM w_indicateur_condition.value OR + t_indicateur_condition.view_select_rule IS DISTINCT FROM w_indicateur_condition.view_select_rule OR + t_indicateur_condition.arbre_code IS DISTINCT FROM w_indicateur_condition.arbre_code OR + t_indicateur_condition.arbre_texte IS DISTINCT FROM w_indicateur_condition.arbre_texte + ) + ; + + DELETE FROM activite.t_indicateur_condition + WHERE code LIKE 'CTI%' AND + code NOT IN (SELECT code FROM w_indicateur_condition) + ; + + UPDATE activite.t_indicateur_condition SET + column_texte = CASE column_name + WHEN 'lieu_unite_medicale_id' THEN 'Unité médicale' + WHEN 'finess_id' THEN 'Etablissement' + WHEN 'forme_activite_id' THEN 'Forme d''activité' + WHEN 'type_sejour_id' THEN 'Type de séjour' + WHEN 'lieu_etage_id' THEN 'Etage Mouvement' + WHEN 'lieu_activite_id' THEN 'Activité Mouvement' + WHEN 'lieu_service_id' THEN 'Service Mouvement' + WHEN 'lieu_unite_fonctionnelle_id' THEN 'UF Mouvement' + WHEN 'medecin_sejour_specialite_id' THEN 'Spécialité Médecin' + WHEN 'medecin_adm_sejour_id' THEN 'Médecin séjour' + ELSE replace(Upper(substr(split_part(column_name,'_id',1),1,1)) || substr(split_part(column_name,'_id',1),2),'_',' ') END + WHERE + column_texte IS DISTINCT FROM + CASE column_name + WHEN 'lieu_unite_medicale_id' THEN 'Unité médicale' + WHEN 'finess_id' THEN 'Etablissement' + WHEN 'forme_activite_id' THEN 'Forme d''activité' + WHEN 'type_sejour_id' THEN 'Type de séjour' + WHEN 'lieu_etage_id' THEN 'Etage Mouvement' + WHEN 'lieu_activite_id' THEN 'Activité Mouvement' + WHEN 'lieu_service_id' THEN 'Service Mouvement' + WHEN 'lieu_unite_fonctionnelle_id' THEN 'UF Mouvement' + WHEN 'medecin_sejour_specialite_id' THEN 'Spécialité Médecin' + WHEN 'medecin_adm_sejour_id' THEN 'Médecin séjour' + ELSE replace(Upper(substr(split_part(column_name,'_id',1),1,1)) || substr(split_part(column_name,'_id',1),2),'_',' ') END + ; + + UPDATE activite.t_indicateur_condition + SET external_code = split_part(code,'#',1)||'#'||arbre_code[2] + WHERE external_code IS DISTINCT FROM (split_part(code,'#',1)||'#'||arbre_code[2]) + ; + + + DROP TABLE IF EXISTS w_indicateur_condition_table; + CREATE TEMP TABLE w_indicateur_condition_table AS + SELECT t_indicateur_condition.oid AS indicateur_condition_id, + ''::text As table_name, + t_indicateur_condition.column_name || ' ' || + CASE + WHEN t_indicateur_condition.value LIKE 'LS%' THEN '= ANY(ARRAY' + WHEN t_indicateur_condition.value LIKE 'LI%' THEN '= ANY(ARRAY' + WHEN t_indicateur_condition.value LIKE 'SL%' THEN '<> ALL(ARRAY' + WHEN t_indicateur_condition.value LIKE 'DT%' THEN '=' + ELSE '=' + END || ' ' || + CASE + WHEN t_indicateur_condition.value LIKE 'LS%' THEN + '(SELECT to_id FROM ' || CASE WHEN t_indicateur_condition.column_name <> 'finess_id' THEN 'activite' ELSE 'base' END ||'.t_classes_sections_elements WHERE section_id = ' || substr(value,5) || ')' + WHEN t_indicateur_condition.value LIKE 'LI%' THEN + '(SELECT to_id FROM ' || CASE WHEN t_indicateur_condition.column_name <> 'finess_id' THEN 'activite' ELSE 'base' END ||'.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')' + WHEN t_indicateur_condition.value LIKE 'SL%' THEN + '(SELECT to_id FROM ' || CASE WHEN t_indicateur_condition.column_name <> 'finess_id' THEN 'activite' ELSE 'base' END ||'.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')' + WHEN t_indicateur_condition.value LIKE 'DT%' THEN + substr(value,3) + ELSE substr(value,3) + END || ' ' || + CASE + WHEN t_indicateur_condition.value LIKE 'LS%' THEN ')' + WHEN t_indicateur_condition.value LIKE 'LI%' THEN ')' + WHEN t_indicateur_condition.value LIKE 'SL%' THEN ')' + ELSE '' + END AS check_where + FROM activite.t_indicateur_condition + WHERE t_indicateur_condition.code LIKE 'CTI%' + ; + + INSERT INTO w_indicateur_condition_table + SELECT t_indicateur_condition.oid AS indicateur_condition_id, + 'PLACES'::text As table_name, + ''::text AS check_where + FROM activite.t_indicateur_condition + LEFT JOIN activite.t_divers ON t_divers.code = 'PLACESREF' + WHERE t_indicateur_condition.code LIKE 'CTI%' AND + ( + column_name IN ('forme_activite_id', 'medecin_sejour_specialite_id','medecin_adm_sejour_id', 'lieu_unite_medicale_id') OR + column_name = 'lieu_service_id' AND t_divers.valeur NOT IN ('SER') OR + column_name = 'lieu_unite_fonctionnelle_id' AND t_divers.valeur NOT IN ('UF') OR + column_name = 'lieu_etage_id' AND t_divers.valeur IN ('SER','UF') OR + column_name = 'budget_cle_id' + ) + ; + INSERT INTO w_indicateur_condition_table + SELECT t_indicateur_condition.oid AS indicateur_condition_id, + 'PLACES'::text As table_name, + CASE t_divers.valeur + WHEN 'SER' THEN 'service_id' + WHEN 'UF' THEN 'uf_id' + ELSE 'etage_id' END + || ' '::text || + CASE + WHEN t_indicateur_condition.value LIKE 'LS%' THEN 'IN' + WHEN t_indicateur_condition.value LIKE 'LI%' THEN 'IN' + WHEN t_indicateur_condition.value LIKE 'SL%' THEN 'NOT IN' + WHEN t_indicateur_condition.value LIKE 'DT%' THEN '=' + ELSE '=' + END || ' ' || + CASE + WHEN t_indicateur_condition.value LIKE 'LS%' THEN + '(SELECT to_id FROM activite.t_classes_sections_elements WHERE section_id = ' || substr(value,5) || ')' + WHEN t_indicateur_condition.value LIKE 'LI%' THEN + '(SELECT to_id FROM activite.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')' + WHEN t_indicateur_condition.value LIKE 'SL%' THEN + '(SELECT to_id FROM activite.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')' + WHEN t_indicateur_condition.value LIKE 'DT%' THEN + substr(value,3) + ELSE substr(value,3) + END AS check_where + FROM activite.t_indicateur_condition + LEFT JOIN activite.t_divers ON t_divers.code = 'PLACESREF' + WHERE t_indicateur_condition.code LIKE 'CTI%' AND + ( + column_name = 'lieu_service_id' AND t_divers.valeur IN ('SER') OR + column_name = 'lieu_unite_fonctionnelle_id' AND t_divers.valeur IN ('UF') OR + column_name = 'lieu_etage_id' AND t_divers.valeur NOT IN ('SER','UF') + ) + ; + + INSERT INTO w_indicateur_condition_table + SELECT t_indicateur_condition.oid AS indicateur_condition_id, + 'FACTURATION_CLINIQUE'::text As table_name, + replace(column_name,'lieu_','lieu_ligne_') || ' ' || + CASE + WHEN t_indicateur_condition.value LIKE 'LS%' THEN 'IN' + WHEN t_indicateur_condition.value LIKE 'LI%' THEN 'IN' + WHEN t_indicateur_condition.value LIKE 'SL%' THEN 'NOT IN' + WHEN t_indicateur_condition.value LIKE 'DT%' THEN '=' + ELSE '=' + END || ' ' || + CASE + WHEN t_indicateur_condition.value LIKE 'LS%' THEN + '(SELECT to_id FROM activite.t_classes_sections_elements WHERE section_id = ' || substr(value,5) || ')' + WHEN t_indicateur_condition.value LIKE 'LI%' THEN + '(SELECT to_id FROM activite.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')' + WHEN t_indicateur_condition.value LIKE 'SL%' THEN + '(SELECT to_id FROM activite.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')' + WHEN t_indicateur_condition.value LIKE 'DT%' THEN + substr(value,3) + ELSE substr(value,3) + END AS check_where + FROM activite.t_indicateur_condition + WHERE t_indicateur_condition.code LIKE 'CTI%' AND + column_name IN ('lieu_etage_id', 'lieu_activite_id', 'lieu_service_id', 'lieu_unite_fonctionnelle_id', 'lieu_unite_medicale_id') + ; + + INSERT INTO w_indicateur_condition_table + SELECT t_indicateur_condition.oid AS indicateur_condition_id, + 'FACTURATION_HONORAIRE'::text As table_name, + replace(column_name,'lieu_','lieu_ligne_') || ' ' || + CASE + WHEN t_indicateur_condition.value LIKE 'LS%' THEN 'IN' + WHEN t_indicateur_condition.value LIKE 'LI%' THEN 'IN' + WHEN t_indicateur_condition.value LIKE 'SL%' THEN 'NOT IN' + WHEN t_indicateur_condition.value LIKE 'DT%' THEN '=' + ELSE '=' + END || ' ' || + CASE + WHEN t_indicateur_condition.value LIKE 'LS%' THEN + '(SELECT to_id FROM activite.t_classes_sections_elements WHERE section_id = ' || substr(value,5) || ')' + WHEN t_indicateur_condition.value LIKE 'LI%' THEN + '(SELECT to_id FROM activite.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')' + WHEN t_indicateur_condition.value LIKE 'SL%' THEN + '(SELECT to_id FROM activite.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')' + WHEN t_indicateur_condition.value LIKE 'DT%' THEN + substr(value,3) + ELSE substr(value,3) + END AS check_where + FROM activite.t_indicateur_condition + WHERE t_indicateur_condition.code LIKE 'CTI%' AND + column_name IN ('lieu_etage_id', 'lieu_activite_id', 'lieu_service_id', 'lieu_unite_fonctionnelle_id', 'lieu_unite_medicale_id') + ; + + INSERT INTO w_indicateur_condition_table + SELECT t_indicateur_condition.oid AS indicateur_condition_id, + 'EN_COURS'::text As table_name, + replace(column_name,'lieu_','lieu_reference_') || ' ' || + CASE + WHEN t_indicateur_condition.value LIKE 'LS%' THEN 'IN' + WHEN t_indicateur_condition.value LIKE 'LI%' THEN 'IN' + WHEN t_indicateur_condition.value LIKE 'SL%' THEN 'NOT IN' + WHEN t_indicateur_condition.value LIKE 'DT%' THEN '=' + ELSE '=' + END || ' ' || + CASE + WHEN t_indicateur_condition.value LIKE 'LS%' THEN + '(SELECT to_id FROM activite.t_classes_sections_elements WHERE section_id = ' || substr(value,5) || ')' + WHEN t_indicateur_condition.value LIKE 'LI%' THEN + '(SELECT to_id FROM activite.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')' + WHEN t_indicateur_condition.value LIKE 'SL%' THEN + '(SELECT to_id FROM activite.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')' + WHEN t_indicateur_condition.value LIKE 'DT%' THEN + substr(value,3) + ELSE substr(value,3) + END AS check_where + FROM activite.t_indicateur_condition + WHERE t_indicateur_condition.code LIKE 'CTI%' AND + column_name IN ('lieu_etage_id', 'lieu_activite_id', 'lieu_service_id', 'lieu_unite_fonctionnelle_id', 'lieu_unite_medicale_id') + ; + + INSERT INTO w_indicateur_condition_table + SELECT t_indicateur_condition.oid AS indicateur_condition_id, + 'SEJOURS'::text As table_name, + replace(column_name,'lieu_','lieu_sortie_') || ' ' || + CASE + WHEN t_indicateur_condition.value LIKE 'LS%' THEN 'IN' + WHEN t_indicateur_condition.value LIKE 'LI%' THEN 'IN' + WHEN t_indicateur_condition.value LIKE 'SL%' THEN 'NOT IN' + WHEN t_indicateur_condition.value LIKE 'DT%' THEN '=' + ELSE '=' + END || ' ' || + CASE + WHEN t_indicateur_condition.value LIKE 'LS%' THEN + '(SELECT to_id FROM activite.t_classes_sections_elements WHERE section_id = ' || substr(value,5) || ')' + WHEN t_indicateur_condition.value LIKE 'LI%' THEN + '(SELECT to_id FROM activite.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')' + WHEN t_indicateur_condition.value LIKE 'SL%' THEN + '(SELECT to_id FROM activite.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')' + WHEN t_indicateur_condition.value LIKE 'DT%' THEN + substr(value,3) + ELSE substr(value,3) + END AS check_where + FROM activite.t_indicateur_condition + WHERE t_indicateur_condition.code LIKE 'CTI%' AND + column_name IN ('lieu_etage_id', 'lieu_activite_id', 'lieu_service_id', 'lieu_unite_fonctionnelle_id', 'lieu_unite_medicale_id') + ; + + INSERT INTO w_indicateur_condition_table + SELECT t_indicateur_condition.oid AS indicateur_condition_id, + 'BUDGET_ACTIVITE'::text As table_name, + '1<>1' AS check_where + FROM activite.t_indicateur_condition + WHERE t_indicateur_condition.code LIKE 'CTI%' AND + column_name NOT IN ('budget_cle_id') + ; + + INSERT INTO activite.t_indicateur_condition_table(indicateur_condition_id, table_name, check_where) + SELECT indicateur_condition_id, table_name, check_where + FROM w_indicateur_condition_table + WHERE (indicateur_condition_id || '-' || table_name) NOT IN + (SELECT indicateur_condition_id || '-' || table_name FROM activite.t_indicateur_condition_table WHERE table_name IS NOT NULL) + ; + + UPDATE activite.t_indicateur_condition_table SET + check_where = w_indicateur_condition_table.check_where + FROM w_indicateur_condition_table + WHERE t_indicateur_condition_table.indicateur_condition_id = w_indicateur_condition_table.indicateur_condition_id AND + t_indicateur_condition_table.table_name = w_indicateur_condition_table.table_name AND + ( + t_indicateur_condition_table.check_where IS DISTINCT FROM w_indicateur_condition_table.check_where + ) + ; + + DELETE FROM activite.t_indicateur_condition_table + USING activite.t_indicateur_condition + WHERE t_indicateur_condition.oid = t_indicateur_condition_table.indicateur_condition_id AND + t_indicateur_condition.code LIKE 'CTI%' AND + (indicateur_condition_id || '-' || table_name) NOT IN + (SELECT indicateur_condition_id || '-' || table_name FROM w_indicateur_condition_table WHERE table_name IS NOT NULL) + ; + + UPDATE activite.t_indicateur_condition_table + SET check_where = 'type_sejour_id IN (1,2)' + WHERE check_where ilike '%type_sejour_id = 12%' + ; + + UPDATE activite.t_indicateur_condition_table + SET check_where = replace(check_where,'duree_sejour_id','duree') + WHERE check_where ilike '%duree_sejour_id%' + ; + + + RETURN 'OK'; + + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_lieux_c.yaml b/db/schema2/functions/cti_reorganize_lieux_c.yaml new file mode 100644 index 0000000..b2073b3 --- /dev/null +++ b/db/schema2/functions/cti_reorganize_lieux_c.yaml @@ -0,0 +1,940 @@ +return: text +lang: plpgsql +src: | + DECLARE + + + + result TEXT; + BEGIN + -- Nouvelles colonnes pour compatibilité descendante + IF NOT EXISTS ( + SELECT column_name + FROM information_schema.columns + WHERE table_schema || '.' || table_name = 'activite.t_services_facturation' AND + column_name = 'activite_par_defaut_id') THEN + ALTER TABLE activite.t_services_facturation ADD COLUMN activite_par_defaut_id bigint DEFAULT 0; + END IF; + IF NOT EXISTS ( + SELECT column_name + FROM information_schema.columns + WHERE table_schema || '.' || table_name = 'activite.t_services_facturation' AND + column_name = 'activite_force_id') THEN + ALTER TABLE activite.t_services_facturation ADD COLUMN activite_force_id bigint DEFAULT 0; + END IF; + + -- Import de l'historique des lits + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'ETALITCSVFILE', + 'Emplacement du fichier CSV qui contient l''historique des places', + '', + 'Emplacement du fichier CSV qui contient l''historique des places' + WHERE 'ETALITCSVFILE' NOT IN (SELECT code FROM activite.t_divers) + ; + + + IF EXISTS (SELECT valeur FROM activite.t_divers WHERE code = 'ETALITCSVFILE' AND valeur <> '' LIMIT 1) THEN + BEGIN + + DROP TABLE IF EXISTS w_data; + CREATE TEMP TABLE w_data ( + etage_code text DEFAULT '', + etage_id bigint DEFAULT 0, + date_debut date, + nb_lits_theoriques numeric DEFAULT 0, + nb_lits_ouverts numeric DEFAULT 0, + nb_box_ambulatoires_theoriques numeric DEFAULT 0, + nb_box_ambulatoires_ouverts numeric DEFAULT 0, + nb_box_seances_theoriques numeric DEFAULT 0, + nb_box_seances_ouverts numeric DEFAULT 0, + nb_lits_cp_theoriques numeric DEFAULT 0, + nb_lits_cp_ouverts numeric DEFAULT 0, + est_ouvert_1 text DEFAULT '1', + est_ouvert_2 text DEFAULT '1', + est_ouvert_3 text DEFAULT '1', + est_ouvert_4 text DEFAULT '1', + est_ouvert_5 text DEFAULT '1', + est_ouvert_6 text DEFAULT '1', + est_ouvert_7 text DEFAULT '1', + source text); + + PERFORM base.cti_execute(' + COPY w_data (source) FROM ''' || (SELECT valeur FROM activite.t_divers WHERE code = 'ETALITCSVFILE') || '''' ,1) + FROM activite.t_divers + WHERE code = 'ETALITCSVFILE' AND valeur <> '' + ; + + UPDATE w_data SET + etage_code = split_part(source,';',1), + etage_id = t_etages.oid, + date_debut = base.cti_to_date(split_part(source,';',3)), + nb_lits_theoriques = base.cti_to_number(split_part(source,';',4)), + nb_lits_ouverts = base.cti_to_number(split_part(source,';',5)), + nb_box_ambulatoires_theoriques = base.cti_to_number(split_part(source,';',6)), + nb_box_ambulatoires_ouverts = base.cti_to_number(split_part(source,';',7)), + nb_box_seances_theoriques = base.cti_to_number(split_part(source,';',8)), + nb_box_seances_ouverts = base.cti_to_number(split_part(source,';',9)), + nb_lits_cp_theoriques = base.cti_to_number(split_part(source,';',10)), + nb_lits_cp_ouverts = base.cti_to_number(split_part(source,';',11)), + est_ouvert_1 = CASE WHEN split_part(source,';',12) IN ('0','N') THEN '0' ELSE '1' END, + est_ouvert_2 = CASE WHEN split_part(source,';',13) IN ('0','N') THEN '0' ELSE '1' END, + est_ouvert_3 = CASE WHEN split_part(source,';',14) IN ('0','N') THEN '0' ELSE '1' END, + est_ouvert_4 = CASE WHEN split_part(source,';',15) IN ('0','N') THEN '0' ELSE '1' END, + est_ouvert_5 = CASE WHEN split_part(source,';',16) IN ('0','N') THEN '0' ELSE '1' END, + est_ouvert_6 = CASE WHEN split_part(source,';',17) IN ('0','N') THEN '0' ELSE '1' END, + est_ouvert_7 = CASE WHEN split_part(source,';',18) IN ('0','N') THEN '0' ELSE '1' END + FROM activite.t_etages + WHERE split_part(source,';',1) = t_etages.code + ; + + DELETE + FROM activite.t_etages_historique + USING + ( + SELECT etage_id, MIN(date_debut) AS date_debut + FROM w_data + WHERE etage_id <> 0 AND date_debut IS NOT NULL + GROUP BY 1 + ) subview + WHERE t_etages_historique.etage_id = subview.etage_id AND + t_etages_historique.date >= subview.date_debut + ; + + INSERT INTO activite.t_etages_historique ( + etage_id, + date, + nb_lits_theoriques, + nb_lits_ouverts, + nb_box_ambulatoires_theoriques, + nb_box_ambulatoires_ouverts, + nb_box_seances_theoriques, + nb_box_seances_ouverts, + nb_lits_cp_theoriques, + nb_lits_cp_ouverts, + est_ouvert_1, + est_ouvert_2, + est_ouvert_3, + est_ouvert_4, + est_ouvert_5, + est_ouvert_6, + est_ouvert_7 + ) + SELECT + etage_id, + date_debut, + nb_lits_theoriques, + nb_lits_ouverts, + nb_box_ambulatoires_theoriques, + nb_box_ambulatoires_ouverts, + nb_box_seances_theoriques, + nb_box_seances_ouverts, + nb_lits_cp_theoriques, + nb_lits_cp_ouverts, + est_ouvert_1, + est_ouvert_2, + est_ouvert_3, + est_ouvert_4, + est_ouvert_5, + est_ouvert_6, + est_ouvert_7 + FROM w_data + WHERE etage_id <> 0 AND date_debut IS NOT NULL + ; + + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' , 'Import historique des lits CSV'; + END; + END IF; + + -- Initialisation valeurs par défaut + UPDATE activite.t_services_facturation SET etage_par_defaut_id = 0 WHERE etage_par_defaut_id IS NULL; + UPDATE activite.t_services_facturation SET etage_force_id = 0 WHERE etage_force_id IS NULL; + UPDATE activite.t_services_facturation SET activite_par_defaut_id = 0 WHERE activite_par_defaut_id IS NULL; + UPDATE activite.t_services_facturation SET activite_force_id = 0 WHERE activite_force_id IS NULL; + UPDATE activite.t_etages SET service_force_id = 0 WHERE service_force_id IS NULL; + UPDATE activite.t_etages SET remplacer_par_valeur_par_defaut = '0' WHERE remplacer_par_valeur_par_defaut IS NULL; + UPDATE activite.t_unites_medicales SET etage_par_defaut_id = 0 WHERE etage_par_defaut_id IS NULL; + UPDATE activite.t_unites_medicales SET etage_force_id = 0 WHERE etage_force_id IS NULL; + + INSERT INTO activite.t_lits (oid, texte, texte_court, etage_id, code, chambre_particuliere) + SELECT 0, 'Non renseigné', 'Non renseigné', 0, '*', 'N' + WHERE 0 NOT IN (SELECT oid FROM activite.t_lits WHERE oid = 0) + ; + + INSERT INTO activite.t_lieux(oid) + SELECT 0 WHERE 0 NOT IN (SELECT oid FROM activite.t_lieux WHERE oid = 0) + ; + + WITH to_del AS ( + SELECT t_lieux_c.oid + FROM activite.t_lieux_c + LEFT JOIN activite.t_lieux on t_lieux.oid = t_lieux_c.oid + WHERE t_lieux.oid IS NULL + ) + DELETE FROM activite.t_lieux_c + USING to_del + WHERE t_lieux_c.oid = to_del.oid + ; + -- Coherence historique lits + + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_lit_historique') THEN + CREATE TEMP TABLE w_lit_historique (sequence bigint, lit_id bigint, date_debut date, date_fin date, oid bigint); + ELSE + TRUNCATE w_lit_historique; + END IF; + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_sequence') THEN + CREATE TEMP SEQUENCE w_sequence; + ELSE + END IF; + + DELETE FROM activite.t_lit_historique + USING + ( + SELECT lit_id, MIN(date_debut) AS keep_date + FROm activite.t_lit_historique + GROUP BY 1 + having count(*) > 1 AND + count(DISTINCT etage_id) = 1 + ) subview + where t_lit_historique.lit_id = subview.lit_id AND + date_debut <> keep_date + ; + + INSERT INTO w_lit_historique + SELECT nextval('w_sequence'::regclass) AS sequence, * + FROM ( + SELECT t_lit_historique.lit_id, date_debut, date_fin, t_lit_historique.oid + FROM activite.t_lit_historique + ORDER BY 1,2 + ) subview; + + UPDATE activite.t_lit_historique + SET date_debut = '00010101' + FROM w_lit_historique + LEFT JOIN w_lit_historique w_lit_historique_b + ON w_lit_historique.lit_id = w_lit_historique_b.lit_id AND + w_lit_historique.sequence = w_lit_historique_b.sequence +1 + WHERE t_lit_historique.oid = w_lit_historique.oid AND + t_lit_historique.date_debut IS DISTINCT FROM '00010101' AND + w_lit_historique_b.oid IS NULL; + UPDATE activite.t_lit_historique + SET date_fin = CASE WHEN w_lit_historique_p.oid IS NULL THEN '20991231' ELSE date(w_lit_historique_p.date_debut - interval '1 day') END + FROM w_lit_historique w_lit_historique_2 + LEFT JOIN w_lit_historique w_lit_historique_p + ON w_lit_historique_2.lit_id = w_lit_historique_p.lit_id AND + w_lit_historique_2.sequence = w_lit_historique_p.sequence -1 + WHERE t_lit_historique.oid = w_lit_historique_2.oid AND + t_lit_historique.date_fin IS DISTINCT FROM CASE WHEN w_lit_historique_p.oid IS NULL THEN '20991231' ELSE date(w_lit_historique_p.date_debut - interval '1 day') END; + DELETE FROM activite.t_lit_historique + WHERE date_fin < date_debut; + -- Forcage service selon etage + UPDATE activite.t_lieux + SET service_facturation_id = t_etages.service_force_id + FROM activite.t_lits + JOIN activite.t_etages ON etage_id = t_etages.oid + WHERE lit_id = t_lits.oid AND + service_force_id <> 0 AND + service_facturation_id IS DISTINCT FROM t_etages.service_force_id; + + -- Forcage activite selon service + UPDATE activite.t_lieux + SET activite_id = t_services_facturation.activite_par_defaut_id + FROM activite.t_services_facturation + WHERE service_facturation_id = t_services_facturation.oid AND + t_services_facturation.activite_par_defaut_id <> 0 AND + t_lieux.activite_id = 0; + + UPDATE activite.t_lieux + SET activite_id = t_services_facturation.activite_force_id + FROM activite.t_services_facturation + WHERE service_facturation_id = t_services_facturation.oid AND + t_services_facturation.activite_force_id <> 0 AND + t_lieux.activite_id IS DISTINCT FROM t_services_facturation.activite_force_id; + + -- Mise à jour t_lieux_c + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_lieux_c') THEN + CREATE TEMP TABLE w_lieux_c + ( + oid bigint, + date_debut date, + date_fin date, + from_oid bigint, + code_original_1 text, + code_original_2 text, + code_original_3 text, + code_original_4 text, + code_original_5 text, + code_original_6 text, + code_original_7 text, + unite_medicale_id bigint, + unite_medicale_code text, + unite_medicale_texte text, + unite_fonctionnelle_id bigint, + unite_fonctionnelle_code text, + unite_fonctionnelle_texte text, + mode_traitement_id bigint, + mode_traitement_code text, + mode_traitement_texte text, + type_t2a character(1), + service_facturation_est_sans_mouvement character(1), + service_facturation_est_absence character(1), + service_facturation_id bigint, + service_facturation_code text, + service_facturation_texte text, + activite_id bigint, + activite_code text, + activite_texte text, + etage_id bigint, + etage_code text, + etage_texte text, + lit_id bigint, + lit_code text, + lit_texte text, + gir_code_original text, + gir_id bigint, + gir_code text, + gir_texte text, + gir_coefficient numeric + ); + ELSE + TRUNCATE w_lieux_c; + END IF; + + INSERT INTO w_lieux_c ( + oid, + date_debut, + date_fin, + from_oid, + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + code_original_6, + code_original_7, + unite_medicale_id, + unite_medicale_code, + unite_medicale_texte, + unite_fonctionnelle_id, + unite_fonctionnelle_code, + unite_fonctionnelle_texte, + mode_traitement_id, + mode_traitement_code, + mode_traitement_texte, + service_facturation_id, + service_facturation_code, + service_facturation_texte, + type_t2a, + service_facturation_est_sans_mouvement, + service_facturation_est_absence, + activite_id, + activite_code, + activite_texte, + etage_id, + etage_code, + etage_texte, + lit_id, + lit_code, + lit_texte, + gir_code_original, + gir_id, + gir_code, + gir_texte, + gir_coefficient + ) + SELECT + t_lieux.oid, + COALESCE(t_lit_historique.date_debut,'00010101') AS date_debut, + COALESCE(t_lit_historique.date_fin,'20991231') AS date_fin, + t_lieux.oid, + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + code_original_6, + code_original_7, + t_lieux.unite_medicale_id, + t_unites_medicales.code AS unite_medicale_code, + t_unites_medicales.texte_court AS unite_medicale_texte, + t_lieux.unite_fonctionnelle_id, + t_unites_fonctionnelles.code AS unite_fonctionnelle_code, + t_unites_fonctionnelles.texte_court AS unite_fonctionnelle_texte, + t_services_facturation.mode_traitement_id, + t_modes_traitement.code AS mode_traitement_code, + t_modes_traitement.texte_court AS mode_traitement_texte, + t_lieux.service_facturation_id, + t_services_facturation.code AS service_facturation_code, + t_services_facturation.texte_court AS service_facturation_texte, + t_services_facturation.type_t2a, + COALESCE(t_services_facturation.est_sans_mouvement,'0') AS service_facturation_est_sans_mouvement, + COALESCE(t_services_facturation.est_absence,'0') AS service_facturation_est_absence, + t_lieux.activite_id, + t_activites.code AS activite_code, + t_activites.texte_court AS activite_texte, + CASE + WHEN COALESCE(t_services_facturation.etage_force_id,0) IS DISTINCT FROM 0 THEN t_etages_forces_service.oid + WHEN COALESCE(t_activites.etage_force_id,0) IS DISTINCT FROM 0 THEN t_etages_forces_activite.oid + WHEN COALESCE(t_unites_fonctionnelles.etage_force_id,0) IS DISTINCT FROM 0 AND t_lieux.unite_medicale_id = ANY(etage_force_um_id_array) THEN t_unites_fonctionnelles.etage_force_id + WHEN COALESCE(t_unites_fonctionnelles.etage_force2_id,0) IS DISTINCT FROM 0 AND t_lieux.unite_medicale_id = ANY(etage_force2_um_id_array) THEN t_unites_fonctionnelles.etage_force2_id + WHEN COALESCE(t_unites_fonctionnelles.etage_force3_id,0) IS DISTINCT FROM 0 AND t_lieux.unite_medicale_id = ANY(etage_force3_um_id_array) THEN t_unites_fonctionnelles.etage_force3_id + WHEN COALESCE(t_unites_medicales.etage_force_id,0) IS DISTINCT FROM 0 THEN t_unites_medicales.etage_force_id + WHEN COALESCE(t_services_facturation.etage_par_defaut_id,0) IS DISTINCT FROM 0 AND (t_lits.etage_id = 0 OR t_etages.remplacer_par_valeur_par_defaut = '1') AND COALESCE(t_lit_historique.etage_id,0) = 0 THEN t_etages_par_defaut_service.oid + WHEN COALESCE(t_activites.etage_par_defaut_id,0) IS DISTINCT FROM 0 AND (t_lits.etage_id = 0 OR t_etages.remplacer_par_valeur_par_defaut = '1') AND COALESCE(t_lit_historique.etage_id,0) = 0 THEN t_etages_par_defaut_activite.oid + WHEN COALESCE(t_unites_medicales.etage_par_defaut_id,0) IS DISTINCT FROM 0 AND (t_lits.etage_id = 0 OR t_etages.remplacer_par_valeur_par_defaut = '1') AND COALESCE(t_lit_historique.etage_id,0) = 0 THEN t_etages_par_defaut_um.oid + WHEN COALESCE(t_lit_historique.etage_id,0) IS DISTINCT FROM 0 THEN t_lit_historique.etage_id + ELSE t_lits.etage_id END AS etage_id, + CASE + WHEN COALESCE(t_services_facturation.etage_force_id,0) IS DISTINCT FROM 0 THEN t_etages_forces_service.code + WHEN COALESCE(t_activites.etage_force_id,0) IS DISTINCT FROM 0 THEN t_etages_forces_activite.code + WHEN COALESCE(t_unites_fonctionnelles.etage_force_id,0) IS DISTINCT FROM 0 AND t_lieux.unite_medicale_id = ANY(etage_force_um_id_array) THEN t_etages_forces_uf.code + WHEN COALESCE(t_unites_fonctionnelles.etage_force2_id,0) IS DISTINCT FROM 0 AND t_lieux.unite_medicale_id = ANY(etage_force2_um_id_array) THEN t_etages_forces2_uf.code + WHEN COALESCE(t_unites_fonctionnelles.etage_force3_id,0) IS DISTINCT FROM 0 AND t_lieux.unite_medicale_id = ANY(etage_force3_um_id_array) THEN t_etages_forces3_uf.code + WHEN COALESCE(t_unites_medicales.etage_force_id,0) IS DISTINCT FROM 0 THEN t_etages_forces_um.code + WHEN COALESCE(t_services_facturation.etage_par_defaut_id,0) IS DISTINCT FROM 0 AND (t_lits.etage_id = 0 OR t_etages.remplacer_par_valeur_par_defaut = '1') AND COALESCE(t_lit_historique.etage_id,0) = 0 THEN t_etages_par_defaut_service.code + WHEN COALESCE(t_activites.etage_par_defaut_id,0) IS DISTINCT FROM 0 AND (t_lits.etage_id = 0 OR t_etages.remplacer_par_valeur_par_defaut = '1') AND COALESCE(t_lit_historique.etage_id,0) = 0 THEN t_etages_par_defaut_activite.code + WHEN COALESCE(t_unites_medicales.etage_par_defaut_id,0) IS DISTINCT FROM 0 AND (t_lits.etage_id = 0 OR t_etages.remplacer_par_valeur_par_defaut = '1') AND COALESCE(t_lit_historique.etage_id,0) = 0 THEN t_etages_par_defaut_um.code + WHEN COALESCE(t_lit_historique.etage_id,0) IS DISTINCT FROM 0 THEN t_lit_historique_etage.code + ELSE t_etages.code END AS etage_code, + CASE + WHEN COALESCE(t_services_facturation.etage_force_id,0) IS DISTINCT FROM 0 THEN t_etages_forces_service.texte + WHEN COALESCE(t_activites.etage_force_id,0) IS DISTINCT FROM 0 THEN t_etages_forces_activite.texte + WHEN COALESCE(t_unites_fonctionnelles.etage_force_id,0) IS DISTINCT FROM 0 AND t_lieux.unite_medicale_id = ANY(etage_force_um_id_array) THEN t_etages_forces_uf.texte + WHEN COALESCE(t_unites_fonctionnelles.etage_force2_id,0) IS DISTINCT FROM 0 AND t_lieux.unite_medicale_id = ANY(etage_force2_um_id_array) THEN t_etages_forces2_uf.texte + WHEN COALESCE(t_unites_fonctionnelles.etage_force3_id,0) IS DISTINCT FROM 0 AND t_lieux.unite_medicale_id = ANY(etage_force3_um_id_array) THEN t_etages_forces3_uf.texte + WHEN COALESCE(t_unites_medicales.etage_force_id,0) IS DISTINCT FROM 0 THEN t_etages_forces_um.texte + WHEN COALESCE(t_services_facturation.etage_par_defaut_id,0) IS DISTINCT FROM 0 AND (t_lits.etage_id = 0 OR t_etages.remplacer_par_valeur_par_defaut = '1') AND COALESCE(t_lit_historique.etage_id,0) = 0 THEN t_etages_par_defaut_service.texte + WHEN COALESCE(t_activites.etage_par_defaut_id,0) IS DISTINCT FROM 0 AND (t_lits.etage_id = 0 OR t_etages.remplacer_par_valeur_par_defaut = '1') AND COALESCE(t_lit_historique.etage_id,0) = 0 THEN t_etages_par_defaut_activite.texte + WHEN COALESCE(t_unites_medicales.etage_par_defaut_id,0) IS DISTINCT FROM 0 AND (t_lits.etage_id = 0 OR t_etages.remplacer_par_valeur_par_defaut = '1') AND COALESCE(t_lit_historique.etage_id,0) = 0 THEN t_etages_par_defaut_um.texte + WHEN COALESCE(t_lit_historique.etage_id,0) IS DISTINCT FROM 0 THEN t_lit_historique_etage.texte + ELSE t_etages.texte END AS etage_texte, + t_lieux.lit_id, + t_lits.code AS lit_code, + t_lits.texte_court AS lit_texte, + COALESCE(gir_code_original,'') AS gir_code_original, + COALESCE(t_lieux.gir_id,0) AS gir_id, + COALESCE(t_gir.code,'') AS gir_code, + COALESCE(t_gir.texte_court,'') AS gir_texte, + CASE WHEN t_lieux.gir_id > 0 THEN t_gir.coefficient ELSE NULL END + FROM activite.t_lieux + JOIN activite.t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + JOIN activite.t_activites ON t_lieux.activite_id = t_activites.oid + JOIN activite.t_lits ON t_lieux.lit_id = t_lits.oid + JOIN activite.t_etages ON t_lits.etage_id = t_etages.oid + LEFT JOIN activite.t_lit_historique ON t_lieux.lit_id = t_lit_historique.lit_id + LEFT JOIN activite.t_etages t_lit_historique_etage ON t_lit_historique.etage_id = t_lit_historique_etage.oid + JOIN activite.t_unites_fonctionnelles ON t_lieux.unite_fonctionnelle_id = t_unites_fonctionnelles.oid + JOIN activite.t_unites_medicales ON t_lieux.unite_medicale_id = t_unites_medicales.oid + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + LEFT JOIN activite.t_etages t_etages_forces_service ON t_services_facturation.etage_force_id = t_etages_forces_service.oid + LEFT JOIN activite.t_etages t_etages_par_defaut_service ON t_services_facturation.etage_par_defaut_id = t_etages_par_defaut_service.oid + LEFT JOIN activite.t_etages t_etages_forces_activite ON COALESCE(t_activites.etage_force_id,0) = t_etages_forces_activite.oid + LEFT JOIN activite.t_etages t_etages_par_defaut_activite ON COALESCE(t_activites.etage_par_defaut_id,0) = t_etages_par_defaut_activite.oid + LEFT JOIN activite.t_etages t_etages_forces_uf ON t_unites_fonctionnelles.etage_force_id = t_etages_forces_uf.oid + LEFT JOIN activite.t_etages t_etages_forces2_uf ON t_unites_fonctionnelles.etage_force2_id = t_etages_forces2_uf.oid + LEFT JOIN activite.t_etages t_etages_forces3_uf ON t_unites_fonctionnelles.etage_force3_id = t_etages_forces3_uf.oid + LEFT JOIN activite.t_etages t_etages_forces_um ON t_unites_medicales.etage_force_id = t_etages_forces_um.oid + LEFT JOIN activite.t_etages t_etages_par_defaut_um ON t_unites_medicales.etage_par_defaut_id = t_etages_par_defaut_um.oid + LEFT JOIN base.t_gir ON t_lieux.gir_id = t_gir.oid + ; + + PERFORM setval('activite.s_lieux', (SELECT COALESCE(MAX(oid),0) + 1 FROM activite.t_lieux), true); + UPDATE w_lieux_c + SET oid = nextval('activite.s_lieux'::regclass) + WHERE date_debut > '00010101'; + UPDATE activite.t_lieux_c + SET date_debut = COALESCE(date_debut,'00010101'), + date_fin = COALESCE(date_fin,'20991231') + WHERE + date_debut IS DISTINCT FROM COALESCE(date_debut,'00010101') OR + date_fin IS DISTINCT FROM COALESCE(date_fin,'20991231'); + -- Forcage séjours + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_lieux_new') THEN + CREATE TEMP TABLE w_lieux_new + ( + no_sejour text, + lieu_sortie_id bigint, + oid bigint, + date_debut date, + date_fin date, + unite_medicale_id bigint, + unite_medicale_code text, + unite_medicale_texte text, + unite_fonctionnelle_id bigint, + unite_fonctionnelle_code text, + unite_fonctionnelle_texte text, + mode_traitement_id bigint, + mode_traitement_code text, + mode_traitement_texte text, + service_facturation_id bigint, + service_facturation_code text, + service_facturation_texte text, + type_t2a character(1), + service_facturation_est_sans_mouvement character(1), + service_facturation_est_absence character(1), + activite_id bigint, + activite_code text, + activite_texte text, + etage_id bigint, + etage_code text, + etage_texte text, + lit_id bigint, + lit_code text, + lit_texte text, + code_original_1 text, + code_original_2 text, + code_original_3 text, + code_original_4 text, + code_original_5 text, + code_original_6 text, + code_original_7 text, + gir_code_original text, + gir_id bigint, + gir_code text, + gir_texte text, + gir_coefficient numeric + ); + ELSE + TRUNCATE w_lieux_new; + END IF; + + INSERT INTO w_lieux_new + SELECT p_sejours.no_sejour, + lieu_sortie_id, + nextval('activite.s_lieux'::regclass) AS oid, + date_debut, + date_fin, + unite_medicale_id, + unite_medicale_code, + unite_medicale_texte, + unite_fonctionnelle_id, + unite_fonctionnelle_code, + unite_fonctionnelle_texte, + w_lieux_c.mode_traitement_id, + mode_traitement_code, + mode_traitement_texte, + CASE WHEN COALESCE(t_services_facturation.oid,0) <> 0 THEN t_services_facturation.oid ELSE w_lieux_c.service_facturation_id END AS service_facturation_id, + CASE WHEN COALESCE(t_services_facturation.oid,0) <> 0 THEN t_services_facturation.code ELSE w_lieux_c.service_facturation_code END AS service_facturation_code, + CASE WHEN COALESCE(t_services_facturation.oid,0) <> 0 THEN t_services_facturation.texte ELSE w_lieux_c.service_facturation_texte END AS service_facturation_texte, + w_lieux_c.type_t2a, + w_lieux_c.service_facturation_est_sans_mouvement, + w_lieux_c.service_facturation_est_absence, + w_lieux_c.activite_id, + activite_code, + activite_texte, + CASE WHEN COALESCE(t_etages.oid,0) <> 0 THEN t_etages.oid ELSE w_lieux_c.etage_id END AS etage_id, + CASE WHEN COALESCE(t_etages.oid,0) <> 0 THEN t_etages.code ELSE w_lieux_c.etage_code END etage_code, + CASE WHEN COALESCE(t_etages.oid,0) <> 0 THEN t_etages.texte ELSE w_lieux_c.etage_texte END etage_texte, + w_lieux_c.lit_id, + lit_code, + lit_texte, + CASE WHEN COALESCE(t_services_facturation.oid,0) <> 0 THEN t_services_facturation.code_original ELSE w_lieux_c.code_original_1 END AS code_original_1, + code_original_2, + CASE WHEN COALESCE(t_etages.oid,0) <> 0 THEN t_etages.code_original ELSE w_lieux_c.code_original_3 END AS code_original_3, + code_original_4, + code_original_5, + code_original_6, + code_original_7, + gir_code_original, + gir_id, + gir_code, + gir_texte, + gir_coefficient + FROM activite.p_sejours + JOIN activite.t_sejour ON t_sejour.no_sejour = p_sejours.no_sejour + JOIN w_lieux_c ON p_sejours.lieu_sortie_id = w_lieux_c.oid + LEFT JOIN activite.t_services_facturation ON t_sejour.service_facturation_id = t_services_facturation.oid + LEFT JOIN activite.t_etages ON t_sejour.etage_id = t_etages.oid + WHERE est_ignore <> '1' AND + ( + t_sejour.service_facturation_id <> 0 OR + t_sejour.etage_id <> 0 + ) + ; + INSERT INTO w_lieux_c( + oid, + date_debut, + date_fin, + unite_medicale_id, + unite_medicale_code, + unite_medicale_texte, + unite_fonctionnelle_id, + unite_fonctionnelle_code, + unite_fonctionnelle_texte, + mode_traitement_id, + mode_traitement_code, + mode_traitement_texte, + service_facturation_id, + service_facturation_code, + service_facturation_texte, + type_t2a, + service_facturation_est_sans_mouvement, + service_facturation_est_absence, + activite_id, + activite_code, + activite_texte, + etage_id, + etage_code, + etage_texte, + lit_id, + lit_code, + lit_texte, + gir_code_original, + gir_id, + gir_code, + gir_texte, + gir_coefficient) + SELECT w_lieux_c.oid, + w_lieux_c.date_debut, + w_lieux_c.date_fin, + w_lieux_c.unite_medicale_id, + w_lieux_c.unite_medicale_code, + w_lieux_c.unite_medicale_texte, + w_lieux_c.unite_fonctionnelle_id, + w_lieux_c.unite_fonctionnelle_code, + w_lieux_c.unite_fonctionnelle_texte, + w_lieux_c.mode_traitement_id, + w_lieux_c.mode_traitement_code, + w_lieux_c.mode_traitement_texte, + w_lieux_c.service_facturation_id, + w_lieux_c.service_facturation_code, + w_lieux_c.service_facturation_texte, + w_lieux_c.type_t2a, + w_lieux_c.service_facturation_est_sans_mouvement, + w_lieux_c.service_facturation_est_absence, + w_lieux_c.activite_id, + w_lieux_c.activite_code, + w_lieux_c.activite_texte, + w_lieux_c.etage_id, + w_lieux_c.etage_code, + w_lieux_c.etage_texte, + w_lieux_c.lit_id, + w_lieux_c.lit_code, + w_lieux_c.lit_texte, + w_lieux_c.gir_code_original, + w_lieux_c.gir_id, + w_lieux_c.gir_code, + w_lieux_c.gir_texte, + w_lieux_c.gir_coefficient + FROM w_lieux_new w_lieux_c + LEFT JOIN activite.t_lieux_c ON t_lieux_c.oid = w_lieux_c.oid AND + t_lieux_c.date_debut = w_lieux_c.date_debut AND + t_lieux_c.date_fin = w_lieux_c.date_fin + WHERE t_lieux_c.oid IS NULL; + INSERT INTO activite.t_lieux( + oid, + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + code_original_6, + code_original_7, + service_facturation_id, + activite_id, + lit_id, + unite_medicale_id, + unite_fonctionnelle_id, + mode_traitement_id, + gir_code_original, + gir_id) + SELECT + w_lieux_c.oid, + w_lieux_c.code_original_1, + w_lieux_c.code_original_2, + w_lieux_c.code_original_3, + w_lieux_c.code_original_4, + w_lieux_c.code_original_5, + w_lieux_c.code_original_6, + w_lieux_c.code_original_7, + w_lieux_c.service_facturation_id, + w_lieux_c.activite_id, + w_lieux_c.lit_id, + w_lieux_c.unite_medicale_id, + w_lieux_c.unite_fonctionnelle_id, + w_lieux_c.mode_traitement_id, + w_lieux_c.gir_code_original, + w_lieux_c.gir_id + FROM w_lieux_new as w_lieux_c + left join activite.t_lieux on t_lieux.oid = w_lieux_c.oid + WHERE t_lieux.oid is null + ; + + UPDATE activite.p_sejours + SET lieu_sortie_id = w_lieux_new.oid + FROM w_lieux_new + WHERE p_sejours.no_sejour = w_lieux_new.no_sejour; + UPDATE activite.p_mouvements_sejour + SET lieu_id = w_lieux_new.oid + FROM w_lieux_new + WHERE p_mouvements_sejour.no_sejour = w_lieux_new.no_sejour; + UPDATE activite.p_factures_lignes_c + SET lieu_id = w_lieux_new.oid + FROM activite.p_factures + JOIN w_lieux_new ON p_factures.no_sejour = w_lieux_new.no_sejour + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture; + UPDATE activite.p_factures_lignes_h + SET lieu_id = w_lieux_new.oid + FROM activite.p_factures + JOIN w_lieux_new ON p_factures.no_sejour = w_lieux_new.no_sejour + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture; + UPDATE activite.p_sejours + SET lieu_sortie_id = 0 + WHERE lieu_sortie_id IS NULL; + + REINDEX TABLE activite.t_lieux; + + -- Etage affecté selon date + + DELETE FROM activite.t_lieux_c + USING ( + SELECT t_lieux_c.oid + FROM activite.t_lieux_c + LEFT JOIN w_lieux_c ON t_lieux_c.oid = w_lieux_c.oid AND + t_lieux_c.date_debut = w_lieux_c.date_debut AND + t_lieux_c.date_fin = w_lieux_c.date_fin + WHERE w_lieux_c.oid IS NULL) subview + WHERE t_lieux_c.oid = subview.oid; + + UPDATE activite.t_lieux_c SET + unite_medicale_id = w_lieux_c.unite_medicale_id, + unite_medicale_code = w_lieux_c.unite_medicale_code, + unite_medicale_texte = w_lieux_c.unite_medicale_texte, + unite_fonctionnelle_id = w_lieux_c.unite_fonctionnelle_id, + unite_fonctionnelle_code = w_lieux_c.unite_fonctionnelle_code, + unite_fonctionnelle_texte = w_lieux_c.unite_fonctionnelle_texte, + mode_traitement_id = w_lieux_c.mode_traitement_id, + mode_traitement_code = w_lieux_c.mode_traitement_code, + mode_traitement_texte = w_lieux_c.mode_traitement_texte, + service_facturation_id = w_lieux_c.service_facturation_id, + service_facturation_code = w_lieux_c.service_facturation_code, + service_facturation_texte = w_lieux_c.service_facturation_texte, + type_t2a = w_lieux_c.type_t2a, + service_facturation_est_sans_mouvement = w_lieux_c.service_facturation_est_sans_mouvement, + service_facturation_est_absence = w_lieux_c.service_facturation_est_absence, + activite_id = w_lieux_c.activite_id, + activite_code = w_lieux_c.activite_code, + activite_texte = w_lieux_c.activite_texte, + etage_id = w_lieux_c.etage_id, + etage_code = w_lieux_c.etage_code, + etage_texte = w_lieux_c.etage_texte, + lit_id = w_lieux_c.lit_id, + lit_code = w_lieux_c.lit_code, + lit_texte = w_lieux_c.lit_texte, + gir_id = w_lieux_c.gir_id, + gir_code = w_lieux_c.gir_code, + gir_texte = w_lieux_c.gir_texte, + gir_coefficient = w_lieux_c.gir_coefficient + FROM w_lieux_c + WHERE w_lieux_c.oid = t_lieux_c.oid AND + w_lieux_c.date_debut = t_lieux_c.date_debut AND + w_lieux_c.date_fin = t_lieux_c.date_fin AND + ( + t_lieux_c.unite_medicale_id IS DISTINCT FROM w_lieux_c.unite_medicale_id OR + t_lieux_c.unite_medicale_code IS DISTINCT FROM w_lieux_c.unite_medicale_code OR + t_lieux_c.unite_medicale_texte IS DISTINCT FROM w_lieux_c.unite_medicale_texte OR + t_lieux_c.unite_fonctionnelle_id IS DISTINCT FROM w_lieux_c.unite_fonctionnelle_id OR + t_lieux_c.unite_fonctionnelle_code IS DISTINCT FROM w_lieux_c.unite_fonctionnelle_code OR + t_lieux_c.unite_fonctionnelle_texte IS DISTINCT FROM w_lieux_c.unite_fonctionnelle_texte OR + t_lieux_c.mode_traitement_id IS DISTINCT FROM w_lieux_c.mode_traitement_id OR + t_lieux_c.mode_traitement_code IS DISTINCT FROM w_lieux_c.mode_traitement_code OR + t_lieux_c.mode_traitement_texte IS DISTINCT FROM w_lieux_c.mode_traitement_texte OR + t_lieux_c.service_facturation_id IS DISTINCT FROM w_lieux_c.service_facturation_id OR + t_lieux_c.service_facturation_code IS DISTINCT FROM w_lieux_c.service_facturation_code OR + t_lieux_c.service_facturation_texte IS DISTINCT FROM w_lieux_c.service_facturation_texte OR + t_lieux_c.type_t2a IS DISTINCT FROM w_lieux_c.type_t2a OR + t_lieux_c.service_facturation_est_sans_mouvement IS DISTINCT FROM w_lieux_c.service_facturation_est_sans_mouvement OR + t_lieux_c.service_facturation_est_absence IS DISTINCT FROM w_lieux_c.service_facturation_est_absence OR + t_lieux_c.activite_id IS DISTINCT FROM w_lieux_c.activite_id OR + t_lieux_c.activite_code IS DISTINCT FROM w_lieux_c.activite_code OR + t_lieux_c.activite_texte IS DISTINCT FROM w_lieux_c.activite_texte OR + t_lieux_c.etage_id IS DISTINCT FROM w_lieux_c.etage_id OR + t_lieux_c.etage_code IS DISTINCT FROM w_lieux_c.etage_code OR + t_lieux_c.etage_texte IS DISTINCT FROM w_lieux_c.etage_texte OR + t_lieux_c.lit_id IS DISTINCT FROM w_lieux_c.lit_id OR + t_lieux_c.lit_code IS DISTINCT FROM w_lieux_c.lit_code OR + t_lieux_c.lit_texte IS DISTINCT FROM w_lieux_c.lit_texte OR + t_lieux_c.gir_id IS DISTINCT FROM w_lieux_c.gir_id OR + t_lieux_c.gir_code IS DISTINCT FROM w_lieux_c.gir_code OR + t_lieux_c.gir_texte IS DISTINCT FROM w_lieux_c.gir_texte OR + t_lieux_c.gir_coefficient IS DISTINCT FROM w_lieux_c.gir_coefficient + ); + INSERT INTO activite.t_lieux_c( + oid, + date_debut, + date_fin, + unite_medicale_id, + unite_medicale_code, + unite_medicale_texte, + unite_fonctionnelle_id, + unite_fonctionnelle_code, + unite_fonctionnelle_texte, + mode_traitement_id, + mode_traitement_code, + mode_traitement_texte, + service_facturation_id, + service_facturation_code, + service_facturation_texte, + type_t2a, + service_facturation_est_sans_mouvement, + service_facturation_est_absence, + activite_id, + activite_code, + activite_texte, + etage_id, + etage_code, + etage_texte, + lit_id, + lit_code, + lit_texte, + gir_id, + gir_code, + gir_texte, + gir_coefficient) + SELECT w_lieux_c.oid, + w_lieux_c.date_debut, + w_lieux_c.date_fin, + w_lieux_c.unite_medicale_id, + w_lieux_c.unite_medicale_code, + w_lieux_c.unite_medicale_texte, + w_lieux_c.unite_fonctionnelle_id, + w_lieux_c.unite_fonctionnelle_code, + w_lieux_c.unite_fonctionnelle_texte, + w_lieux_c.mode_traitement_id, + w_lieux_c.mode_traitement_code, + w_lieux_c.mode_traitement_texte, + w_lieux_c.service_facturation_id, + w_lieux_c.service_facturation_code, + w_lieux_c.service_facturation_texte, + w_lieux_c.type_t2a, + w_lieux_c.service_facturation_est_sans_mouvement, + w_lieux_c.service_facturation_est_absence, + w_lieux_c.activite_id, + w_lieux_c.activite_code, + w_lieux_c.activite_texte, + w_lieux_c.etage_id, + w_lieux_c.etage_code, + w_lieux_c.etage_texte, + w_lieux_c.lit_id, + w_lieux_c.lit_code, + w_lieux_c.lit_texte, + w_lieux_c.gir_id, + w_lieux_c.gir_code, + w_lieux_c.gir_texte, + w_lieux_c.gir_coefficient + FROM w_lieux_c + LEFT JOIN activite.t_lieux_c ON t_lieux_c.oid = w_lieux_c.oid AND + t_lieux_c.date_debut = w_lieux_c.date_debut AND + t_lieux_c.date_fin = w_lieux_c.date_fin + WHERE t_lieux_c.oid IS NULL; + + -- Ajout Lieux créés par changement de date lit + INSERT INTO activite.t_lieux( + oid, + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + code_original_6, + code_original_7, + service_facturation_id, + activite_id, + lit_id, + unite_medicale_id, + unite_fonctionnelle_id, + mode_traitement_id, + gir_code_original, + gir_id) + SELECT + w_lieux_c.oid, + w_lieux_c.code_original_1, + w_lieux_c.code_original_2, + w_lieux_c.code_original_3, + w_lieux_c.code_original_4, + w_lieux_c.code_original_5, + w_lieux_c.code_original_6, + w_lieux_c.code_original_7, + w_lieux_c.service_facturation_id, + w_lieux_c.activite_id, + w_lieux_c.lit_id, + w_lieux_c.unite_medicale_id, + w_lieux_c.unite_fonctionnelle_id, + w_lieux_c.mode_traitement_id, + w_lieux_c.gir_code_original, + w_lieux_c.gir_id + FROM w_lieux_c + left join activite.t_lieux on t_lieux.oid = w_lieux_c.oid + WHERE t_lieux.oid is null + ; + -- Mise à jour des lieux dans les tables + UPDATE activite.p_sejours + SET lieu_sortie_id = w_lieux_c.oid + FROM w_lieux_c + WHERE p_sejours.lieu_sortie_id = w_lieux_c.from_oid AND + w_lieux_c.oid <> w_lieux_c.from_oid AND + p_sejours.date_sortie BETWEEN w_lieux_c.date_debut AND w_lieux_c.date_fin; + UPDATE activite.p_mouvements_sejour + SET lieu_id = w_lieux_c.oid + FROM w_lieux_c + WHERE p_mouvements_sejour.lieu_id = w_lieux_c.from_oid AND + w_lieux_c.oid <> w_lieux_c.from_oid AND + p_mouvements_sejour.date BETWEEN w_lieux_c.date_debut AND w_lieux_c.date_fin; + UPDATE activite.p_factures_lignes_c + SET lieu_id = w_lieux_c.oid + FROM w_lieux_c + WHERE p_factures_lignes_c.lieu_id = w_lieux_c.from_oid AND + w_lieux_c.oid <> w_lieux_c.from_oid AND + p_factures_lignes_c.date_debut BETWEEN w_lieux_c.date_debut AND w_lieux_c.date_fin; + UPDATE activite.p_factures_encours_lignes_c + SET lieu_id = w_lieux_c.oid + FROM w_lieux_c + WHERE p_factures_encours_lignes_c.lieu_id = w_lieux_c.from_oid AND + w_lieux_c.oid <> w_lieux_c.from_oid AND + p_factures_encours_lignes_c.date_debut BETWEEN w_lieux_c.date_debut AND w_lieux_c.date_fin; + UPDATE activite.p_factures_lignes_h + SET lieu_id = w_lieux_c.oid + FROM w_lieux_c + WHERE p_factures_lignes_h.lieu_id = w_lieux_c.from_oid AND + w_lieux_c.oid <> w_lieux_c.from_oid AND + p_factures_lignes_h.date_debut BETWEEN w_lieux_c.date_debut AND w_lieux_c.date_fin; + + -- Types de séjour + INSERT INTO activite.t_type_sejour (oid, code, texte) + SELECT + base.cti_to_number(type_sejour), + type_sejour, + CASE + WHEN p_sejours.type_sejour = '1'::bpchar THEN 'Hospitalisé'::bpchar + WHEN p_sejours.type_sejour = '2'::bpchar THEN 'Ambulatoires'::bpchar + WHEN p_sejours.type_sejour = '3'::bpchar THEN 'Externes'::bpchar + WHEN p_sejours.type_sejour = '4'::bpchar THEN 'Long séjours'::bpchar + WHEN p_sejours.type_sejour = '5'::bpchar THEN 'Séances'::bpchar + WHEN p_sejours.type_sejour = '6'::bpchar THEN 'Bébés sans séjour'::bpchar + WHEN p_sejours.type_sejour = '9'::bpchar THEN 'Fictifs'::bpchar + ELSE p_sejours.type_sejour + END AS texte + FROM activite.p_sejours + WHERE type_sejour NOT IN (SELECT code FROM activite.t_type_sejour) + GROUP BY 1,2,3; + -- Si etage modifié, l'inclure dans les oids + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'etage', etage_id + FROM activite.t_lieux_c WHERE etage_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'etage') + GROUP BY 2; + + -- Classes + PERFORM base.cti_update_classes('activite', 't_lieux_c', 'SERVICE_F','service_facturation_section'); + PERFORM base.cti_update_classes('activite', 't_lieux_c', 'ETAGE','etage_section'); + PERFORM base.cti_update_classes('activite', 't_lieux_c', 'LIT','lit_section'); + PERFORM base.cti_update_classes('activite', 't_lieux_c', 'UM','unite_medicale_section'); + PERFORM base.cti_update_classes('activite', 't_lieux_c', 'UF','unite_fonctionnelle_section'); + PERFORM base.cti_update_classes('activite', 't_lieux_c', 'ACTIVITE','activite_section'); + PERFORM base.cti_update_classes('activite', 't_etages', 'ETAGE',''); + PERFORM base.cti_update_classes('activite', 't_unites_fonctionnelles', 'UF',''); + PERFORM base.cti_update_classes('activite', 't_type_sejour', 'TYPESEJOUR',''); + PERFORM activite.cti_reorganize_places(); + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_medecins_administratifs_c.yaml b/db/schema2/functions/cti_reorganize_medecins_administratifs_c.yaml new file mode 100644 index 0000000..5b77b13 --- /dev/null +++ b/db/schema2/functions/cti_reorganize_medecins_administratifs_c.yaml @@ -0,0 +1,313 @@ +return: text +lang: plpgsql +src: | + DECLARE + + + + result TEXT; + BEGIN + -- Réplication des médecins dans Base + IF EXISTS (SELECT * FROM activite.t_medecins_administratifs WHERE oid <> 0 AND COALESCE(medecin_id,0) = 0) THEN + BEGIN + PERFORM base.cti_initialize_medecins(); + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' , 'base.cti_initialize_medecins'; + END; + END IF; + + BEGIN + -- Mise à jour code médecin + UPDATE base.t_medecins + SET code = subview.code + FROM + ( + SELECT medecin_id, (MAX(Array[date_entree::text, t_medecins_administratifs.code]))[2] AS code + FROM activite.p_sejours + JOIN activite.t_medecins_administratifs ON medecin_sejour_id = t_medecins_administratifs.oid + JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid AND t_medecins.oid <> 0 AND (t_medecins.code = '' OR t_medecins.code IS NULL) + GROUP BY 1 + ) subview + WHERE t_medecins.oid = subview.medecin_id; + UPDATE base.t_medecins + SET code = subview.code + FROM + ( + SELECT medecin_id, (MAX(Array[date_debut::text, t_medecins_administratifs.code]))[2] AS code + FROM activite.p_factures_lignes_h + JOIN activite.t_medecins_administratifs ON p_factures_lignes_h.medecin_facture_id = t_medecins_administratifs.oid + JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid AND t_medecins.oid <> 0 AND (t_medecins.code = '' OR t_medecins.code IS NULL) + GROUP BY 1 + ) subview + WHERE t_medecins.oid = subview.medecin_id; + UPDATE base.t_medecins + SET code = subview.code + FROM + ( + SELECT medecin_id, (MAX(Array[date_debut::text, t_medecins_administratifs.code]))[2] AS code + FROM activite.p_factures_lignes_non_facturees_h + JOIN activite.t_medecins_administratifs ON p_factures_lignes_non_facturees_h.medecin_facture_id = t_medecins_administratifs.oid + JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid AND t_medecins.oid <> 0 AND (t_medecins.code = '' OR t_medecins.code IS NULL) + GROUP BY 1 + ) subview + WHERE t_medecins.oid = subview.medecin_id; + UPDATE base.t_medecins + SET code = subview.code + FROM + ( + SELECT medecin_id, (MIN(Array[to_char(t_medecins_administratifs.oid,'FM000000000000000000000000'), t_medecins_administratifs.code]))[2] AS code + FROM activite.t_medecins_administratifs + JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid AND t_medecins.oid <> 0 AND (t_medecins.code = '' OR t_medecins.code IS NULL) + GROUP BY 1 + ) subview + WHERE t_medecins.oid = subview.medecin_id; + UPDATE base.t_medecins + SET code = subview.code + FROM + ( + SELECT t_medecins_administratifs.medecin_id, MAX(t_medecins_administratifs.code) AS code + FROM activite.t_medecins_administratifs + JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid + LEFT JOIN activite.t_budget_cle_rule ON + t_medecins.code <> '' AND + t_budget_cle_rule.liste_medecin LIKE '(R)%' AND + t_budget_cle_rule.liste_medecin LIKE '%'||t_medecins.code||'%' + WHERE t_medecins_administratifs.oid <> 0 AND + t_medecins_administratifs.medecin_id <> 0 AND + t_budget_cle_rule.oid IS NULL + GROUP BY 1 + HAVING count(*) = 1 AND + MAX(t_medecins_administratifs.code) <> MAX(t_medecins.code) + ) subview + WHERE t_medecins.oid = subview.medecin_id + ; + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' , '1'; + END; + BEGIN + INSERT INTO base.t_specialites_medecin (code_original, code, texte, texte_court) + SELECT t_specialites_internes_pmsi.code, t_specialites_internes_pmsi.code, t_specialites_internes_pmsi.texte, t_specialites_internes_pmsi.texte + FROM base.t_medecins + JOIN activite.t_medecins_administratifs ON medecin_id = t_medecins.oid + JOIN pmsi.t_medecins t_medecins_pmsi ON t_medecins_administratifs.code = t_medecins_pmsi.code + JOIN pmsi.t_specialites_internes_medecin t_specialites_internes_pmsi ON t_medecins_pmsi.specialite_interne_id = t_specialites_internes_pmsi.oid + WHERE t_medecins.specialite_id = 0 AND + t_specialites_internes_pmsi.code NOT IN (SELECT code_original FROM base.t_specialites_medecin) + GROUP BY 1,2,3,4; + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' , '2'; + END; + + + BEGIN + UPDATE base.t_medecins + SET specialite_id = t_specialites_medecin.oid + FROM activite.t_medecins_administratifs + JOIN pmsi.t_medecins t_medecins_pmsi ON t_medecins_administratifs.code = t_medecins_pmsi.code + JOIN pmsi.t_specialites_internes_medecin t_specialites_internes_pmsi ON t_medecins_pmsi.specialite_interne_id = t_specialites_internes_pmsi.oid + JOIN base.t_specialites_medecin ON t_specialites_internes_pmsi.code = t_specialites_medecin.code_original + WHERE t_medecins_administratifs.medecin_id = t_medecins.oid AND + t_medecins.specialite_id = 0; + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' , '3'; + END; + + -- Mise à jour du code rpps médecin des médecins administratifs depuis les données du module base + BEGIN + UPDATE activite.t_medecins_administratifs + SET code_rpps = subview.code_rpps + FROM + ( + SELECT t_medecins.code_rpps, t_medecins.oid + FROM base.t_medecins + JOIN activite.t_medecins_administratifs ON t_medecins_administratifs.medecin_id = t_medecins.oid + WHERE t_medecins.code_rpps <> '' + AND medecin_id <> 0 + ) subview + WHERE t_medecins_administratifs.code_rpps = '' + AND t_medecins_administratifs.medecin_id = subview.oid + ; + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' , 'Mise à jour des code rpps médecins'; + END; + -- Conditions d'exercice, alimentation automatique d'une classe + BEGIN + INSERT INTO activite.t_classes( + code, + texte, + table_id, + is_cti, + sequence, + contenu_by_code, + contenu_non_replicable_ailleurs + ) + SELECT + 'CTI_MEDLIBSAL'::text AS code, + 'Conditions d''exercice'::text AS texte, + t_listes_tables.oid AS table_id, + '1'::text AS is_cti, + (SELECT COALESCE(MAX(sequence),0)+1 FROM activite.t_classes JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'MEDECIN' WHERE sequence < 30) AS sequence, + '0'::text AS contenu_by_code, + '1'::text AS contenu_non_replicable_ailleurs + FROM activite.t_listes_tables + WHERE t_listes_tables.Code = 'MEDECIN' AND + 'CTI_MEDLIBSAL'::text NOT IN (SELECT code FROM activite.t_classes) + ; + + INSERT INTO activite.t_classes_sections( + code, + texte, + classe_id, + condition, + include_code, + exclude_code + ) + SELECT + '1'::text AS code, + 'Libéraux'::text AS texte, + t_classes.oid AS classe_id, + ''::text AS condition, + ''::text AS include_code, + ''::text AS exclude_code + FROM activite.t_classes + WHERE t_classes.code = 'CTI_MEDLIBSAL' AND + (t_classes.oid::text||'-1') NOT IN (SELECT classe_id::text||'-'||code FROM activite.t_classes_sections WHERE code IS NOT NULL) + ; + + INSERT INTO activite.t_classes_sections( + code, + texte, + classe_id, + condition, + include_code, + exclude_code + ) + SELECT + '2'::text AS code, + 'Salariés'::text AS texte, + t_classes.oid AS classe_id, + ''::text AS condition, + ''::text AS include_code, + ''::text AS exclude_code + FROM activite.t_classes + WHERE t_classes.code = 'CTI_MEDLIBSAL' AND + (t_classes.oid::text||'-2') NOT IN (SELECT classe_id::text||'-'||code FROM activite.t_classes_sections WHERE code IS NOT NULL) + ; + + + DROP TABLE IF EXISTS w_classe_CTI_MEDLIBSAL; + CREATE TEMP TABLE w_classe_CTI_MEDLIBSAL AS + SELECT t_medecins_administratifs.oid AS to_id, + MIN(classe_id) AS classe_id, + MIN(section_id_1) AS section_id_1, + MIN(section_id_2) AS section_id_2, + MIN(CASE WHEN est_medecin_salarie = '1' OR t_medecins.numero_ordre = t_finess.code THEN section_id_2 ELSE section_id_1 END) AS section_id + FROM activite.t_medecins_administratifs + LEFT JOIN base.t_finess ON t_finess.secondaire = '0' + LEFT JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid + JOIN + ( + SELECT classe_id, + MAX(CASE WHEN t_classes_sections.code = '1' THEN t_classes_sections.oid ELSE 0 END) AS section_id_1, + MAX(CASE WHEN t_classes_sections.code = '2' THEN t_classes_sections.oid ELSE 0 END) AS section_id_2 + FROM activite.t_classes + JOIN activite.t_classes_sections ON classe_id = t_classes.oid + WHERE t_classes.code = 'CTI_MEDLIBSAL' + GROUP BY 1 + ) subview ON 1=1 + GROUP BY 1 + ; + + DELETE + FROM activite.t_classes_sections_elements + USING w_classe_CTI_MEDLIBSAL + WHERE t_classes_sections_elements.to_id = w_classe_CTI_MEDLIBSAL.to_id AND + t_classes_sections_elements.section_id = section_id_2 AND + w_classe_CTI_MEDLIBSAL.section_id = section_id_1 + ; + + DELETE + FROM activite.t_classes_sections_elements + USING w_classe_CTI_MEDLIBSAL + WHERE t_classes_sections_elements.to_id = w_classe_CTI_MEDLIBSAL.to_id AND + t_classes_sections_elements.section_id = section_id_1 AND + w_classe_CTI_MEDLIBSAL.section_id = section_id_2 + ; + + INSERT INTO activite.t_classes_sections_elements(section_id, to_id) + SELECT section_id, to_id + FROM w_classe_CTI_MEDLIBSAL + WHERE (section_id::text||to_id::text) NOT IN (SELECT (section_id::text||to_id::text) FROM activite.t_classes_sections_elements) + ; + + PERFORM activite.cti_update_schema_classes('MEDECIN') + ; + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' , '4'; + END; + + BEGIN + UPDATE activite.t_medecins_administratifs_c + SET + adm_code = t_medecins_administratifs.code, + adm_nom = t_medecins_administratifs.nom, + adm_prenom = t_medecins_administratifs.prenom, + adm_nom_prenom = (t_medecins_administratifs.nom || ' ') || t_medecins_administratifs.prenom, + medecin_id = t_medecins_administratifs.medecin_id, + medecin_code = COALESCE(t_medecins.code,''), + nom = t_medecins.nom, + prenom = t_medecins.prenom, + nom_prenom = (t_medecins.nom || ' ') || t_medecins.prenom, + specialite_id = t_medecins.specialite_id, + specialite_code = t_specialites_medecin.code, + specialite_texte = t_specialites_medecin.texte_court + FROM activite.t_medecins_administratifs, base.t_medecins, base.t_specialites_medecin + WHERE t_medecins_administratifs_c.oid = t_medecins_administratifs.oid + AND t_medecins_administratifs.medecin_id = t_medecins.oid + AND t_medecins.specialite_id = t_specialites_medecin.oid + AND ( + t_medecins_administratifs_c.adm_code IS DISTINCT FROM t_medecins_administratifs.code OR + t_medecins_administratifs_c.adm_nom IS DISTINCT FROM t_medecins_administratifs.nom OR + t_medecins_administratifs_c.adm_prenom IS DISTINCT FROM t_medecins_administratifs.prenom OR + t_medecins_administratifs_c.adm_nom_prenom IS DISTINCT FROM (t_medecins_administratifs.nom || ' ' || t_medecins_administratifs.prenom) OR + t_medecins_administratifs_c.medecin_id IS DISTINCT FROM t_medecins_administratifs.medecin_id OR + t_medecins_administratifs_c.medecin_code IS DISTINCT FROM COALESCE (t_medecins.code,'') OR + t_medecins_administratifs_c.nom IS DISTINCT FROM t_medecins.nom OR + t_medecins_administratifs_c.prenom IS DISTINCT FROM t_medecins.prenom OR + t_medecins_administratifs_c.nom_prenom IS DISTINCT FROM (t_medecins.nom || ' ' || t_medecins.prenom) OR + t_medecins_administratifs_c.specialite_id IS DISTINCT FROM t_medecins.specialite_id OR + t_medecins_administratifs_c.specialite_code IS DISTINCT FROM t_specialites_medecin.code OR + t_medecins_administratifs_c.specialite_texte IS DISTINCT FROM t_specialites_medecin.texte_court + ); + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' , '5'; + END; + BEGIN + INSERT INTO activite.t_medecins_administratifs_c( + oid, adm_code, adm_nom, adm_prenom, adm_nom_prenom, medecin_id, medecin_code, + nom, prenom, nom_prenom, specialite_id, specialite_code, specialite_texte) + SELECT + t_medecins_administratifs.oid, t_medecins_administratifs.code, t_medecins_administratifs.nom, t_medecins_administratifs.prenom, + (t_medecins_administratifs.nom::text || ' '::text) || t_medecins_administratifs.prenom::text, + t_medecins_administratifs.medecin_id, COALESCE(t_medecins.code,''), t_medecins.nom, t_medecins.prenom, + (t_medecins.nom::text || ' '::text) || t_medecins.prenom::text, + t_medecins.specialite_id, t_specialites_medecin.code, t_specialites_medecin.texte_court + FROM activite.t_medecins_administratifs, base.t_medecins, base.t_specialites_medecin + WHERE t_medecins_administratifs.medecin_id = t_medecins.oid + AND t_medecins.specialite_id = t_specialites_medecin.oid + AND t_medecins_administratifs.oid NOT IN (SELECT oid FROM activite.t_medecins_administratifs_c) + ORDER BY t_medecins_administratifs.oid; + UPDATE activite.t_medecins_administratifs_c + SET medecin_code = subview.code + FROM + (SELECT subview.medecin_id, t_medecins_administratifs.code + FROM activite.t_medecins_administratifs, + (SELECT medecin_id, min(oid) AS oid FROM activite.t_medecins_administratifs WHERE medecin_id <> 0 GROUP BY 1) subview + WHERE t_medecins_administratifs.oid = subview.oid) subview + WHERE t_medecins_administratifs_c.medecin_id = subview.medecin_id AND medecin_code = ''; + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' , '6'; + END; + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_places.yaml b/db/schema2/functions/cti_reorganize_places.yaml new file mode 100644 index 0000000..52a346d --- /dev/null +++ b/db/schema2/functions/cti_reorganize_places.yaml @@ -0,0 +1,939 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + BEGIN + + UPDATE activite.t_divers SET + valeur2 = CASE WHEN valeur = 'ETA' THEN 'ETAGE' + WHEN valeur = 'UF' THEN 'UF' + WHEN valeur = 'SER' THEN 'SERVICE_F' + WHEN valeur = 'UM' THEN 'UM' + ELSE '' END + where code = 'PLACESREF'; + + INSERT INTO activite.t_divers (code, valeur, valeur2) + SELECT 'PLACESREF', 'ETA', 'ETAGE' + WHERE 'PLACESREF' NOT IN (SELECT code FROM activite.t_divers); + + INSERT INTO activite.t_divers(code, texte, valeur, description) + SELECT 'TAUXSORAVANT', 'Taux de sortie avant hh:mm', '120000', 'par default taux de sortie avant 12hh00' + WHERE 'TAUXSORAVANT' NOT IN (SELECT code FROM activite.t_divers); + + INSERT INTO activite.t_etages_historique( + etage_id, + date, + nb_lits_theoriques, + nb_box_ambulatoires_theoriques, + nb_box_seances_theoriques, + nb_lits_cp_theoriques, + nb_lits_ouverts, + nb_box_ambulatoires_ouverts, + nb_box_seances_ouverts, + nb_lits_cp_ouverts, + est_ouvert_1, + est_ouvert_2, + est_ouvert_3, + est_ouvert_4, + est_ouvert_5, + est_ouvert_6, + est_ouvert_7) + SELECT + oid, + '20070101'::date, + COALESCE(nb_lits,0), + 0, + 0, + COALESCE(nb_cp,0), + COALESCE(nb_lits,0), + 0, + 0, + COALESCE(nb_cp,0), + '1', + '1', + '1', + '1', + '1', + '1', + '1' + FROM activite.t_etages + LEFT JOIN activite.t_etages_historique ON t_etages_historique.etage_id = t_etages.oid AND t_etages_historique.date = '20070101'::date + WHERE t_etages_historique.etage_id IS NULL; + + DROP TABLE IF EXISTS w_etages_historique + ; + CREATE TEMP TABLE w_etages_historique AS + SELECT + t_etages_historique.etage_id, + t_etages_historique.date, + COALESCE(LEAD(date - interval '1 day') OVER (PARTITION BY etage_id ORDER BY etage_id, date), '2099-12-31'::date)::date AS moins_un_jour + FROM activite.t_etages_historique + ORDER BY 1, 2 + ; + + UPDATE activite.t_etages_historique + SET date_fin = date_suivante.moins_un_jour + FROM ( + SELECT + w_etages_historique.* + FROM w_etages_historique + ) date_suivante + WHERE + t_etages_historique.etage_id = date_suivante.etage_id + AND t_etages_historique.date = date_suivante.date + ; + + UPDATE activite.t_etages + SET + nb_lits = t_etages_historique.nb_lits_theoriques + coalesce(t_etages_historique.nb_box_ambulatoires_theoriques) + coalesce(t_etages_historique.nb_box_seances_theoriques), + nb_cp = t_etages_historique.nb_lits_cp_theoriques + FROM activite.t_etages_historique + WHERE t_etages.oid = t_etages_historique.etage_id AND + date_fin = '20991231'; + + UPDATE activite.t_etages_historique SET + heberge_hospitalises = '0', + heberge_ambulatoires = '0', + heberge_seances = '0', + heberge_externes = '0', + heberge_urgences = '0', + heberge_bebes = '0'; + + UPDATE activite.t_etages_historique SET + heberge_hospitalises = subview.heberge_hospitalises, + heberge_ambulatoires = subview.heberge_ambulatoires, + heberge_seances = subview.heberge_seances, + heberge_externes = subview.heberge_externes, + heberge_urgences = subview.heberge_urgences, + heberge_bebes = subview.heberge_bebes + FROM ( + SELECT + t_lieux_c.etage_id, + t_etages_historique.date, + MAX(CASE WHEN est_jour_hospitalisation = '1' THEN '1' ELSE '0' END) AS heberge_hospitalises, + MAX(CASE WHEN nb_ambulatoires > 0 THEN '1' ELSE '0' END) AS heberge_ambulatoires, + MAX(CASE WHEN nb_seances > 0 AND nb_jours_js_inclus = 0 AND nb_ambulatoires = 0 THEN '1' ELSE '0' END) AS heberge_seances, + MAX(CASE WHEN nb_externes > 0 THEN '1' ELSE '0' END) AS heberge_externes, + MAX(CASE WHEN nb_urgences > 0 THEN '1' ELSE '0' END) AS heberge_urgences, + MAX(CASE WHEN nb_bebes > 0 THEN '1' ELSE '0' END) AS heberge_bebes + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux_c ON lieu_id = t_lieux_c.oid + JOIN activite.t_etages_historique ON t_lieux_c.etage_id = t_etages_historique.etage_id AND p_mouvements_sejour.date BETWEEN t_etages_historique.date AND t_etages_historique.date_fin + GROUP BY 1,2 + ORDER BY 1,2 + ) subview + WHERE subview.etage_id = t_etages_historique.etage_id AND subview.date = t_etages_historique.date; + + INSERT INTO activite.t_services_facturation_historique( + service_facturation_id, + date, + nb_lits_theoriques, + nb_box_ambulatoires_theoriques, + nb_box_seances_theoriques, + nb_lits_cp_theoriques, + nb_lits_ouverts, + nb_box_ambulatoires_ouverts, + nb_box_seances_ouverts, + nb_lits_cp_ouverts, + est_ouvert_1, + est_ouvert_2, + est_ouvert_3, + est_ouvert_4, + est_ouvert_5, + est_ouvert_6, + est_ouvert_7) + SELECT + oid, + '20070101'::date, + COALESCE(nb_lits,0), + 0, + 0, + COALESCE(nb_cp,0), + COALESCE(nb_lits,0), + 0, + 0, + COALESCE(nb_cp,0), + '1', + '1', + '1', + '1', + '1', + '1', + '1' + FROM activite.t_services_facturation + LEFT JOIN activite.t_services_facturation_historique ON t_services_facturation_historique.service_facturation_id = t_services_facturation.oid AND t_services_facturation_historique.date = '20070101'::date + WHERE t_services_facturation_historique.service_facturation_id IS NULL; + + DROP TABLE IF EXISTS w_services_facturation_historique + ; + CREATE TEMP TABLE w_services_facturation_historique AS + SELECT + t_services_facturation_historique.service_facturation_id, + t_services_facturation_historique.date, + COALESCE(LEAD(date - interval '1 day') OVER (PARTITION BY service_facturation_id ORDER BY service_facturation_id, date), '2099-12-31'::date)::date AS moins_un_jour + FROM activite.t_services_facturation_historique + ORDER BY 1, 2 + ; + + UPDATE activite.t_services_facturation_historique + SET date_fin = date_suivante.moins_un_jour + FROM ( + SELECT + w_services_facturation_historique.* + FROM w_services_facturation_historique + ) date_suivante + WHERE + t_services_facturation_historique.service_facturation_id = date_suivante.service_facturation_id + AND t_services_facturation_historique.date = date_suivante.date + ; + + UPDATE activite.t_services_facturation + SET + nb_lits = t_services_facturation_historique.nb_lits_theoriques + COALESCE(t_services_facturation_historique.nb_box_ambulatoires_theoriques,0) + coalesce(t_services_facturation_historique.nb_box_seances_theoriques), + nb_cp = t_services_facturation_historique.nb_lits_cp_theoriques + FROM activite.t_services_facturation_historique + WHERE t_services_facturation.oid = t_services_facturation_historique.service_facturation_id AND + date_fin = '20991231'; + + UPDATE activite.t_services_facturation_historique SET + heberge_hospitalises = '0', + heberge_ambulatoires = '0', + heberge_seances = '0', + heberge_externes = '0', + heberge_urgences = '0', + heberge_bebes = '0'; + + UPDATE activite.t_services_facturation_historique SET + heberge_hospitalises = subview.heberge_hospitalises, + heberge_ambulatoires = subview.heberge_ambulatoires, + heberge_seances = subview.heberge_seances, + heberge_externes = subview.heberge_externes, + heberge_urgences = subview.heberge_urgences, + heberge_bebes = subview.heberge_bebes + FROM ( + SELECT + t_lieux_c.service_facturation_id, + t_services_facturation_historique.date, + MAX(CASE WHEN est_jour_hospitalisation = '1' THEN '1' ELSE '0' END) AS heberge_hospitalises, + MAX(CASE WHEN nb_ambulatoires > 0 THEN '1' ELSE '0' END) AS heberge_ambulatoires, + MAX(CASE WHEN nb_seances > 0 AND nb_ambulatoires = 0 AND est_jour_hospitalisation <> '1' THEN '1' ELSE '0' END) AS heberge_seances, + MAX(CASE WHEN nb_externes > 0 THEN '1' ELSE '0' END) AS heberge_externes, + MAX(CASE WHEN nb_urgences > 0 THEN '1' ELSE '0' END) AS heberge_urgences, + MAX(CASE WHEN nb_bebes > 0 THEN '1' ELSE '0' END) AS heberge_bebes + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux_c ON lieu_id = t_lieux_c.oid + JOIN activite.t_services_facturation_historique ON t_lieux_c.service_facturation_id = t_services_facturation_historique.service_facturation_id AND p_mouvements_sejour.date BETWEEN t_services_facturation_historique.date AND t_services_facturation_historique.date_fin + GROUP BY 1,2 + ORDER BY 1,2 + ) subview + WHERE subview.service_facturation_id = t_services_facturation_historique.service_facturation_id AND subview.date = t_services_facturation_historique.date; + + INSERT INTO activite.t_unites_fonctionnelles_historique( + unite_fonctionnelle_id, + date, + nb_lits_theoriques, + nb_box_ambulatoires_theoriques, + nb_box_seances_theoriques, + nb_lits_cp_theoriques, + nb_lits_ouverts, + nb_box_ambulatoires_ouverts, + nb_box_seances_ouverts, + nb_lits_cp_ouverts, + est_ouvert_1, + est_ouvert_2, + est_ouvert_3, + est_ouvert_4, + est_ouvert_5, + est_ouvert_6, + est_ouvert_7) + SELECT + oid, + '20070101'::date, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + '1', + '1', + '1', + '1', + '1', + '1', + '1' + FROM activite.t_unites_fonctionnelles + LEFT JOIN activite.t_unites_fonctionnelles_historique ON t_unites_fonctionnelles_historique.unite_fonctionnelle_id = t_unites_fonctionnelles.oid AND t_unites_fonctionnelles_historique.date = '20070101'::date + WHERE t_unites_fonctionnelles_historique.unite_fonctionnelle_id IS NULL; + + DROP TABLE IF EXISTS w_unites_fonctionnelles_historique + ; + CREATE TEMP TABLE w_unites_fonctionnelles_historique AS + SELECT + t_unites_fonctionnelles_historique.unite_fonctionnelle_id, + t_unites_fonctionnelles_historique.date, + COALESCE(LEAD(date - interval '1 day') OVER (PARTITION BY unite_fonctionnelle_id ORDER BY unite_fonctionnelle_id, date), '2099-12-31'::date)::date AS moins_un_jour + FROM activite.t_unites_fonctionnelles_historique + ORDER BY 1, 2 + ; + + UPDATE activite.t_unites_fonctionnelles_historique + SET date_fin = date_suivante.moins_un_jour + FROM ( + SELECT + w_unites_fonctionnelles_historique.* + FROM w_unites_fonctionnelles_historique + ) date_suivante + WHERE + t_unites_fonctionnelles_historique.unite_fonctionnelle_id = date_suivante.unite_fonctionnelle_id + AND t_unites_fonctionnelles_historique.date = date_suivante.date + ; + + UPDATE activite.t_unites_fonctionnelles_historique SET + heberge_hospitalises = '0', + heberge_ambulatoires = '0', + heberge_seances = '0', + heberge_externes = '0', + heberge_urgences = '0', + heberge_bebes = '0'; + + UPDATE activite.t_unites_fonctionnelles_historique SET + heberge_hospitalises = subview.heberge_hospitalises, + heberge_ambulatoires = subview.heberge_ambulatoires, + heberge_seances = subview.heberge_seances, + heberge_externes = subview.heberge_externes, + heberge_urgences = subview.heberge_urgences, + heberge_bebes = subview.heberge_bebes + FROM ( + SELECT + t_lieux_c.unite_fonctionnelle_id, + t_unites_fonctionnelles_historique.date, + MAX(CASE WHEN est_jour_hospitalisation = '1' THEN '1' ELSE '0' END) AS heberge_hospitalises, + MAX(CASE WHEN nb_ambulatoires > 0 THEN '1' ELSE '0' END) AS heberge_ambulatoires, + MAX(CASE WHEN nb_seances > 0 AND est_jour_hospitalisation <> '1' AND nb_ambulatoires = 0 THEN '1' ELSE '0' END) AS heberge_seances, + MAX(CASE WHEN nb_externes > 0 THEN '1' ELSE '0' END) AS heberge_externes, + MAX(CASE WHEN nb_urgences > 0 THEN '1' ELSE '0' END) AS heberge_urgences, + MAX(CASE WHEN nb_bebes > 0 THEN '1' ELSE '0' END) AS heberge_bebes + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux_c ON lieu_id = t_lieux_c.oid + JOIN activite.t_unites_fonctionnelles_historique ON t_lieux_c.unite_fonctionnelle_id = t_unites_fonctionnelles_historique.unite_fonctionnelle_id AND p_mouvements_sejour.date BETWEEN t_unites_fonctionnelles_historique.date AND t_unites_fonctionnelles_historique.date_fin + GROUP BY 1,2 + ORDER BY 1,2 + ) subview + WHERE subview.unite_fonctionnelle_id = t_unites_fonctionnelles_historique.unite_fonctionnelle_id AND subview.date = t_unites_fonctionnelles_historique.date; + + INSERT INTO activite.t_unites_medicales_historique( + unite_medicale_id, + date, + nb_lits_theoriques, + nb_box_ambulatoires_theoriques, + nb_box_seances_theoriques, + nb_lits_cp_theoriques, + nb_lits_ouverts, + nb_box_ambulatoires_ouverts, + nb_box_seances_ouverts, + nb_lits_cp_ouverts, + est_ouvert_1, + est_ouvert_2, + est_ouvert_3, + est_ouvert_4, + est_ouvert_5, + est_ouvert_6, + est_ouvert_7) + SELECT + oid, + '20070101'::date, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + '1', + '1', + '1', + '1', + '1', + '1', + '1' + FROM activite.t_unites_medicales + LEFT JOIN activite.t_unites_medicales_historique ON t_unites_medicales_historique.unite_medicale_id = t_unites_medicales.oid AND t_unites_medicales_historique.date = '20070101'::date + WHERE t_unites_medicales_historique.unite_medicale_id IS NULL; + + DROP TABLE IF EXISTS w_unites_medicales_historique + ; + CREATE TEMP TABLE w_unites_medicales_historique AS + SELECT + t_unites_medicales_historique.unite_medicale_id, + t_unites_medicales_historique.date, + COALESCE(LEAD(date - interval '1 day') OVER (PARTITION BY unite_medicale_id ORDER BY unite_medicale_id, date), '2099-12-31'::date)::date AS moins_un_jour + FROM activite.t_unites_medicales_historique + ORDER BY 1, 2 + ; + + UPDATE activite.t_unites_medicales_historique + SET date_fin = date_suivante.moins_un_jour + FROM ( + SELECT + w_unites_medicales_historique.* + FROM w_unites_medicales_historique + ) date_suivante + WHERE + t_unites_medicales_historique.unite_medicale_id = date_suivante.unite_medicale_id + AND t_unites_medicales_historique.date = date_suivante.date + ; + + UPDATE activite.t_unites_medicales_historique SET + heberge_hospitalises = '0', + heberge_ambulatoires = '0', + heberge_seances = '0', + heberge_externes = '0', + heberge_urgences = '0', + heberge_bebes = '0'; + + UPDATE activite.t_unites_medicales_historique SET + heberge_hospitalises = subview.heberge_hospitalises, + heberge_ambulatoires = subview.heberge_ambulatoires, + heberge_seances = subview.heberge_seances, + heberge_externes = subview.heberge_externes, + heberge_urgences = subview.heberge_urgences, + heberge_bebes = subview.heberge_bebes + FROM ( + SELECT + t_lieux_c.unite_medicale_id, + t_unites_medicales_historique.date, + MAX(CASE WHEN est_jour_hospitalisation = '1' THEN '1' ELSE '0' END) AS heberge_hospitalises, + MAX(CASE WHEN nb_ambulatoires > 0 THEN '1' ELSE '0' END) AS heberge_ambulatoires, + MAX(CASE WHEN nb_seances > 0 AND est_jour_hospitalisation <> '1' AND nb_ambulatoires = 0 THEN '1' ELSE '0' END) AS heberge_seances, + MAX(CASE WHEN nb_externes > 0 THEN '1' ELSE '0' END) AS heberge_externes, + MAX(CASE WHEN nb_urgences > 0 THEN '1' ELSE '0' END) AS heberge_urgences, + MAX(CASE WHEN nb_bebes > 0 THEN '1' ELSE '0' END) AS heberge_bebes + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux_c ON lieu_id = t_lieux_c.oid + JOIN activite.t_unites_medicales_historique ON t_lieux_c.unite_medicale_id = t_unites_medicales_historique.unite_medicale_id AND p_mouvements_sejour.date BETWEEN t_unites_medicales_historique.date AND t_unites_medicales_historique.date_fin + GROUP BY 1,2 + ORDER BY 1,2 + ) subview + WHERE subview.unite_medicale_id = t_unites_medicales_historique.unite_medicale_id AND subview.date = t_unites_medicales_historique.date; + + DROP TABLE IF EXISTS w_places; + + CREATE TEMP TABLE w_places AS + SELECT + t_etages.oid AS parent_id, + t_type_sejour.oid AS type_sejour_id, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE + WHEN t_type_sejour.oid = 1 THEN t_etages_historique.nb_lits_theoriques + WHEN t_type_sejour.oid = 2 THEN t_etages_historique.nb_box_ambulatoires_theoriques + WHEN t_type_sejour.oid = 5 THEN t_etages_historique.nb_box_seances_theoriques + ELSE 0 END AS nb_lits_theoriques, + CASE + WHEN t_type_sejour.oid = 1 THEN t_etages_historique.nb_lits_ouverts + WHEN t_type_sejour.oid = 2 THEN t_etages_historique.nb_box_ambulatoires_ouverts + WHEN t_type_sejour.oid = 5 THEN t_etages_historique.nb_box_seances_ouverts + ELSE 0 END AS nb_lits_ouverts, + CASE + WHEN t_type_sejour.oid = 1 THEN t_etages_historique.nb_lits_cp_theoriques + ELSE 0 END AS nb_lits_cp_theoriques, + CASE + WHEN t_type_sejour.oid = 1 THEN t_etages_historique.nb_lits_cp_ouverts + ELSE 0 END AS nb_lits_cp_ouverts, + CASE + WHEN t_type_sejour.oid = 5 THEN t_etages_historique.nb_box_seances_theoriques + ELSE 0 END AS nb_box_seances_theoriques, + CASE + WHEN t_type_sejour.oid = 5 THEN t_etages_historique.nb_box_seances_ouverts + ELSE 0 END AS nb_box_seances_ouverts, + CASE WHEN date_part('DOW',p_calendrier.date) = 1 THEN est_ouvert_1 + WHEN date_part('DOW',p_calendrier.date) = 2 THEN est_ouvert_2 + WHEN date_part('DOW',p_calendrier.date) = 3 THEN est_ouvert_3 + WHEN date_part('DOW',p_calendrier.date) = 4 THEN est_ouvert_4 + WHEN date_part('DOW',p_calendrier.date) = 5 THEN est_ouvert_5 + WHEN date_part('DOW',p_calendrier.date) = 6 THEN est_ouvert_6 + WHEN date_part('DOW',p_calendrier.date) = 0 THEN est_ouvert_7 + ELSE '0' END AS est_ouvert, + heberge_hospitalises, + heberge_ambulatoires, + heberge_seances, + heberge_externes, + heberge_urgences, + heberge_bebes + FROM activite.t_etages + JOIN activite.t_etages_historique ON t_etages.oid = t_etages_historique.etage_id + JOIN base.p_calendrier ON p_calendrier.date BETWEEN t_etages_historique.date AND t_etages_historique.date_fin AND p_calendrier.date BETWEEN '20070101'::date AND now() + interval '1 month' + JOIN activite.p_chiffrier ON p_calendrier.mois = p_chiffrier.mois + LEFT JOIN activite.t_divers ON t_divers.code = 'PLACESREF' + JOIN activite.t_type_sejour ON t_type_sejour.oid IN (1,2,5) + WHERE t_divers.valeur = 'ETA' OR t_divers.valeur IS NULL + ORDER BY 1,2; + + INSERT INTO w_places + SELECT + t_services_facturation.oid AS service_facturation_id, + t_type_sejour.oid AS type_sejour_id, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE + WHEN t_type_sejour.oid = 1 THEN t_services_facturation_historique.nb_lits_theoriques + WHEN t_type_sejour.oid = 2 THEN t_services_facturation_historique.nb_box_ambulatoires_theoriques + WHEN t_type_sejour.oid = 5 THEN t_services_facturation_historique.nb_box_seances_theoriques + ELSE 0 END AS nb_lits_theoriques, + CASE + WHEN t_type_sejour.oid = 1 THEN t_services_facturation_historique.nb_lits_ouverts + WHEN t_type_sejour.oid = 2 THEN t_services_facturation_historique.nb_box_ambulatoires_ouverts + WHEN t_type_sejour.oid = 5 THEN t_services_facturation_historique.nb_box_seances_ouverts + ELSE 0 END AS nb_lits_ouverts, + CASE + WHEN t_type_sejour.oid = 1 THEN t_services_facturation_historique.nb_lits_cp_theoriques + ELSE 0 END AS nb_lits_cp_theoriques, + CASE + WHEN t_type_sejour.oid = 1 THEN t_services_facturation_historique.nb_lits_cp_ouverts + ELSE 0 END AS nb_lits_cp_ouverts, + CASE + WHEN t_type_sejour.oid = 5 THEN t_services_facturation_historique.nb_box_seances_theoriques + ELSE 0 END AS nb_box_seances_theoriques, + CASE + WHEN t_type_sejour.oid = 5 THEN t_services_facturation_historique.nb_box_seances_ouverts + ELSE 0 END AS nb_box_seances_ouverts, + CASE WHEN date_part('DOW',p_calendrier.date) = 1 THEN est_ouvert_1 + WHEN date_part('DOW',p_calendrier.date) = 2 THEN est_ouvert_2 + WHEN date_part('DOW',p_calendrier.date) = 3 THEN est_ouvert_3 + WHEN date_part('DOW',p_calendrier.date) = 4 THEN est_ouvert_4 + WHEN date_part('DOW',p_calendrier.date) = 5 THEN est_ouvert_5 + WHEN date_part('DOW',p_calendrier.date) = 6 THEN est_ouvert_6 + WHEN date_part('DOW',p_calendrier.date) = 0 THEN est_ouvert_7 + ELSE '0' END AS est_ouvert, + heberge_hospitalises, + heberge_ambulatoires, + heberge_seances, + heberge_externes, + heberge_urgences, + heberge_bebes + FROM activite.t_services_facturation + JOIN activite.t_services_facturation_historique ON t_services_facturation.oid = t_services_facturation_historique.service_facturation_id + JOIN base.p_calendrier ON p_calendrier.date BETWEEN t_services_facturation_historique.date AND t_services_facturation_historique.date_fin AND p_calendrier.date BETWEEN '20070101'::date AND now() + interval '1 month' + JOIN activite.p_chiffrier ON p_calendrier.mois = p_chiffrier.mois + JOIN activite.t_divers ON t_divers.code = 'PLACESREF' AND t_divers.valeur = 'SER' + JOIN activite.t_type_sejour ON t_type_sejour.oid IN (1,2,5) + ORDER BY 1,2; + + INSERT INTO w_places + SELECT + t_unites_fonctionnelles.oid AS unite_fonctionnelle_id, + t_type_sejour.oid AS type_sejour_id, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE + WHEN t_type_sejour.oid = 1 THEN t_unites_fonctionnelles_historique.nb_lits_theoriques + WHEN t_type_sejour.oid = 2 THEN t_unites_fonctionnelles_historique.nb_box_ambulatoires_theoriques + WHEN t_type_sejour.oid = 5 THEN t_unites_fonctionnelles_historique.nb_box_seances_theoriques + ELSE 0 END AS nb_lits_theoriques, + CASE + WHEN t_type_sejour.oid = 1 THEN t_unites_fonctionnelles_historique.nb_lits_ouverts + WHEN t_type_sejour.oid = 2 THEN t_unites_fonctionnelles_historique.nb_box_ambulatoires_ouverts + WHEN t_type_sejour.oid = 5 THEN t_unites_fonctionnelles_historique.nb_box_seances_ouverts + ELSE 0 END AS nb_lits_ouverts, + CASE + WHEN t_type_sejour.oid = 1 THEN t_unites_fonctionnelles_historique.nb_lits_cp_theoriques + ELSE 0 END AS nb_lits_cp_theoriques, + CASE + WHEN t_type_sejour.oid = 1 THEN t_unites_fonctionnelles_historique.nb_lits_cp_ouverts + ELSE 0 END AS nb_lits_cp_ouverts, + CASE + WHEN t_type_sejour.oid = 5 THEN t_unites_fonctionnelles_historique.nb_box_seances_theoriques + ELSE 0 END AS nb_box_seances_theoriques, + CASE + WHEN t_type_sejour.oid = 5 THEN t_unites_fonctionnelles_historique.nb_box_seances_ouverts + ELSE 0 END AS nb_box_seances_ouverts, + CASE WHEN date_part('DOW',p_calendrier.date) = 1 THEN est_ouvert_1 + WHEN date_part('DOW',p_calendrier.date) = 2 THEN est_ouvert_2 + WHEN date_part('DOW',p_calendrier.date) = 3 THEN est_ouvert_3 + WHEN date_part('DOW',p_calendrier.date) = 4 THEN est_ouvert_4 + WHEN date_part('DOW',p_calendrier.date) = 5 THEN est_ouvert_5 + WHEN date_part('DOW',p_calendrier.date) = 6 THEN est_ouvert_6 + WHEN date_part('DOW',p_calendrier.date) = 0 THEN est_ouvert_7 + ELSE '0' END AS est_ouvert, + heberge_hospitalises, + heberge_ambulatoires, + heberge_seances, + heberge_externes, + heberge_urgences, + heberge_bebes + FROM activite.t_unites_fonctionnelles + JOIN activite.t_unites_fonctionnelles_historique ON t_unites_fonctionnelles.oid = t_unites_fonctionnelles_historique.unite_fonctionnelle_id + JOIN base.p_calendrier ON p_calendrier.date BETWEEN t_unites_fonctionnelles_historique.date AND t_unites_fonctionnelles_historique.date_fin AND p_calendrier.date BETWEEN '20070101'::date AND now() + interval '1 month' + JOIN activite.p_chiffrier ON p_calendrier.mois = p_chiffrier.mois + JOIN activite.t_divers ON t_divers.code = 'PLACESREF' AND t_divers.valeur = 'UF' + JOIN activite.t_type_sejour ON t_type_sejour.oid IN (1,2,5) + ORDER BY 1,2; + + INSERT INTO w_places + SELECT + t_unites_medicales.oid AS unite_medicale_id, + t_type_sejour.oid AS type_sejour_id, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE + WHEN t_type_sejour.oid = 1 THEN t_unites_medicales_historique.nb_lits_theoriques + WHEN t_type_sejour.oid = 2 THEN t_unites_medicales_historique.nb_box_ambulatoires_theoriques + WHEN t_type_sejour.oid = 5 THEN t_unites_medicales_historique.nb_box_seances_theoriques + ELSE 0 END AS nb_lits_theoriques, + CASE + WHEN t_type_sejour.oid = 1 THEN t_unites_medicales_historique.nb_lits_ouverts + WHEN t_type_sejour.oid = 2 THEN t_unites_medicales_historique.nb_box_ambulatoires_ouverts + WHEN t_type_sejour.oid = 5 THEN t_unites_medicales_historique.nb_box_seances_ouverts + ELSE 0 END AS nb_lits_ouverts, + CASE + WHEN t_type_sejour.oid = 1 THEN t_unites_medicales_historique.nb_lits_cp_theoriques + ELSE 0 END AS nb_lits_cp_theoriques, + CASE + WHEN t_type_sejour.oid = 1 THEN t_unites_medicales_historique.nb_lits_cp_ouverts + ELSE 0 END AS nb_lits_cp_ouverts, + CASE + WHEN t_type_sejour.oid = 5 THEN t_unites_medicales_historique.nb_box_seances_theoriques + ELSE 0 END AS nb_box_seances_theoriques, + CASE + WHEN t_type_sejour.oid = 5 THEN t_unites_medicales_historique.nb_box_seances_ouverts + ELSE 0 END AS nb_box_seances_ouverts, + CASE WHEN date_part('DOW',p_calendrier.date) = 1 THEN est_ouvert_1 + WHEN date_part('DOW',p_calendrier.date) = 2 THEN est_ouvert_2 + WHEN date_part('DOW',p_calendrier.date) = 3 THEN est_ouvert_3 + WHEN date_part('DOW',p_calendrier.date) = 4 THEN est_ouvert_4 + WHEN date_part('DOW',p_calendrier.date) = 5 THEN est_ouvert_5 + WHEN date_part('DOW',p_calendrier.date) = 6 THEN est_ouvert_6 + WHEN date_part('DOW',p_calendrier.date) = 0 THEN est_ouvert_7 + ELSE '0' END AS est_ouvert, + heberge_hospitalises, + heberge_ambulatoires, + heberge_seances, + heberge_externes, + heberge_urgences, + heberge_bebes + FROM activite.t_unites_medicales + JOIN activite.t_unites_medicales_historique ON t_unites_medicales.oid = t_unites_medicales_historique.unite_medicale_id + JOIN base.p_calendrier ON p_calendrier.date BETWEEN t_unites_medicales_historique.date AND t_unites_medicales_historique.date_fin AND p_calendrier.date BETWEEN '20070101'::date AND now() + interval '1 month' + JOIN activite.p_chiffrier ON p_calendrier.mois = p_chiffrier.mois + JOIN activite.t_divers ON t_divers.code = 'PLACESREF' AND t_divers.valeur = 'UM' + JOIN activite.t_type_sejour ON t_type_sejour.oid IN (1,2,5) + ORDER BY 1,2; + + + -- Selon lits réellement occupés (ambulatoires) + DROP TABLE IF EXISTS w_etages_date; + + CREATE TEMP TABLE w_etages_date AS + SELECT t_etages_historique.etage_id, p_calendrier.date + FROM base.p_calendrier + JOIN activite.t_etages_historique ON nb_box_ambulatoires_ouverts < 0 AND + p_calendrier.date BETWEEN t_etages_historique.date AND t_etages_historique.date_fin + WHERE p_calendrier.date <= date(now()) + ; + + + DROP TABLE IF EXISTS w_places_lits_reels; + + CREATE TEMP TABLE w_places_lits_reels AS + SELECT w_etages_date.etage_id, w_etages_date.date, count(DISTINCT lit_id) AS nb_box_ambulatoires + FROM w_etages_date + LEFT JOIN (activite.p_mouvements_sejour + JOIN activite.t_lieux_c ON lieu_id = t_lieux_c.oid + JOIN activite.t_etages ON etage_id = t_etages.oid + ) ON w_etages_date.etage_id = t_lieux_c.etage_id AND + w_etages_date.date = p_mouvements_sejour.date + GROUP BY 1,2 + ; + + + UPDATE w_places SET + nb_lits_ouverts = nb_box_ambulatoires + FROM w_places_lits_reels + WHERE w_places.parent_id = w_places_lits_reels.etage_id AND + w_places.date = w_places_lits_reels.date AND + type_sejour_id = 2 + ; + + TRUNCATE activite.t_places; + + INSERT INTO activite.t_places( + parent_id, + type_sejour_id, + date, + jour_semaine, + is_weekend, + nb_lits_theoriques, + nb_lits_ouverts, + nb_lits_cp_theoriques, + nb_lits_cp_ouverts, + est_ouvert, + heberge_hospitalises, + heberge_ambulatoires, + heberge_seances, + heberge_externes, + heberge_urgences, + heberge_bebes, + nb_box_seances_theoriques, + nb_box_seances_ouverts + ) + SELECT + w_places.parent_id, + w_places.type_sejour_id, + w_places.date, + w_places.jour_semaine, + w_places.is_weekend, + w_places.nb_lits_theoriques, + w_places.nb_lits_ouverts, + w_places.nb_lits_cp_theoriques, + w_places.nb_lits_cp_ouverts, + w_places.est_ouvert, + w_places.heberge_hospitalises, + w_places.heberge_ambulatoires, + w_places.heberge_seances, + w_places.heberge_externes, + w_places.heberge_urgences, + w_places.heberge_bebes, + w_places.nb_box_seances_theoriques, + w_places.nb_box_seances_ouverts + FROM w_places + LEFT JOIN activite.t_places t_places_deja ON w_places.parent_id = t_places_deja.parent_id AND + w_places.date = t_places_deja.date AND + w_places.type_sejour_id = t_places_deja.type_sejour_id + WHERE t_places_deja.parent_id IS NULL; + + + ANALYSE activite.t_places; + + DROP TABLE IF EXISTS w_places; + + DROP TABLE IF EXISTS w_places_parents; + + CREATE TEMP TABLE w_places_parents AS + SELECT + t_etages.oid AS oid, + t_etages.code AS parent_code, + t_etages.texte AS parent_texte, + 'ETA'::text AS parent_type, + t_etages.section_id AS parent_section_id, + t_etages.section_code AS parent_section_code, + t_etages.section_texte AS parent_section_texte, + finess_id, t_finess_c.code AS finess_code, + t_finess_c.texte AS finess_texte, + t_finess_c.section_id AS finess_section_id, + t_finess_c.section_code AS finess_section_code, + t_finess_c.section_texte AS finess_section_texte, + -111::bigint AS mode_traitement_id, + ''::text AS mode_traitement_code, + ''::text AS mode_traitement_texte + FROM + activite.t_etages + LEFT JOIN activite.t_divers ON t_divers.code = 'PLACESREF' + LEFT JOIN activite.t_finess_c ON finess_id = t_finess_c.oid + WHERE + t_divers.valeur = 'ETA' OR t_divers.valeur IS NULL + UNION all + SELECT + t_services_facturation.oid AS oid, + t_services_facturation.code AS parent_code, + t_services_facturation.texte AS parent_texte, + 'SER'::text AS parent_type, + t_services_facturation.section_id AS parent_section_id, + t_services_facturation.section_code AS parent_section_code, + t_services_facturation.section_texte AS parent_section_texte, + finess_id, + t_finess_c.code AS finess_code, + t_finess_c.texte AS finess_texte, + t_finess_c.section_id AS finess_section_id, + t_finess_c.section_code AS finess_section_code, + t_finess_c.section_texte AS finess_section_texte, + t_services_facturation.mode_traitement_id, + COALESCE(t_modes_traitement.code,''::text)::text AS mode_traitement_code, + COALESCE(t_modes_traitement.texte_court,''::text)::text AS mode_traitement_texte + FROM + activite.t_services_facturation + JOIN activite.t_divers ON t_divers.code = 'PLACESREF' AND t_divers.valeur = 'SER' + LEFT JOIN activite.t_finess_c ON finess_id = t_finess_c.oid + LEFT JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + UNION All + SELECT + t_unites_fonctionnelles.oid AS oid, + t_unites_fonctionnelles.code AS parent_code, + t_unites_fonctionnelles.texte AS parent_texte, + 'UF'::text AS parent_type, + t_unites_fonctionnelles.section_id AS parent_section_id, + t_unites_fonctionnelles.section_code AS parent_section_code, + t_unites_fonctionnelles.section_texte AS parent_section_texte, + finess_id, + t_finess_c.code AS finess_code, + t_finess_c.texte AS finess_texte, + t_finess_c.section_id AS finess_section_id, + t_finess_c.section_code AS finess_section_code, + t_finess_c.section_texte AS finess_section_texte, + -111::bigint AS mode_traitement_id, + ''::text AS mode_traitement_code, + ''::text AS mode_traitement_texte + FROM + activite.t_unites_fonctionnelles + JOIN activite.t_divers ON t_divers.code = 'PLACESREF' AND t_divers.valeur = 'UF' + LEFT JOIN activite.t_finess_c ON finess_id = t_finess_c.oid + UNION All + SELECT + t_unites_medicales.oid AS oid, + t_unites_medicales.code AS parent_code, + t_unites_medicales.texte AS parent_texte, + 'UM'::text AS parent_type, + t_unites_medicales.section_id AS parent_section_id, + t_unites_medicales.section_code AS parent_section_code, + t_unites_medicales.section_texte AS parent_section_texte, + finess_id, + t_finess_c.code AS finess_code, + t_finess_c.texte AS finess_texte, + t_finess_c.section_id AS finess_section_id, + t_finess_c.section_code AS finess_section_code, + t_finess_c.section_texte AS finess_section_texte, + -111::bigint AS mode_traitement_id, + ''::text AS mode_traitement_code, + ''::text AS mode_traitement_texte + FROM + activite.t_unites_medicales + JOIN activite.t_divers ON t_divers.code = 'PLACESREF' AND t_divers.valeur = 'UM' + LEFT JOIN activite.t_finess_c ON finess_id = t_finess_c.oid; + + TRUNCATE activite.t_places_parents; + + INSERT INTO activite.t_places_parents ( + oid, + parent_code, + parent_texte, + parent_type, + parent_section_id, + parent_section_code, + parent_section_texte, + finess_id, + finess_code, + finess_texte, + finess_section_id, + finess_section_code, + finess_section_texte, + mode_traitement_id, + mode_traitement_code, + mode_traitement_texte + ) + SELECT + oid, + parent_code, + parent_texte, + parent_type, + parent_section_id, + parent_section_code, + parent_section_texte, + finess_id, + finess_code, + finess_texte, + finess_section_id, + finess_section_code, + finess_section_texte, + mode_traitement_id, + mode_traitement_code, + mode_traitement_texte + FROM w_places_parents + WHERE oid NOT IN (SELECT oid FROM activite.t_places_parents); + + ANALYSE activite.t_places_parents; + + -- Désactivation RAZ séances dans taux car géré dans cti_calcul_journees_mouvements + IF 1<>1 THEN + UPDATE activite.p_mouvements_sejour + SET nb_seances_dans_taux = + CASE + WHEN t_places.nb_box_seances_theoriques > 0 THEN nb_seances + WHEN nb_seances_dans_taux > 0 AND t_places.nb_box_seances_theoriques = 0 THEN 0 + ELSE nb_seances_dans_taux END + FROM activite.t_lieux + JOIN activite.t_lits ON lit_id = t_lits.oid + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + LEFT JOIN activite.t_etages t_etages_forces_service ON t_services_facturation.etage_force_id = t_etages_forces_service.oid + LEFT JOIN activite.t_etages t_etages_par_defaut_service ON t_services_facturation.etage_par_defaut_id = t_etages_par_defaut_service.oid + JOIN activite.t_divers ON t_divers.code = 'PLACESREF' AND t_divers.valeur = 'ETA' + JOIN activite.t_places ON + (t_lits.etage_id = t_places.parent_id AND t_services_facturation.etage_par_defaut_id = 0 AND t_services_facturation.etage_force_id = 0) OR + (t_lits.etage_id = t_places.parent_id AND t_services_facturation.etage_par_defaut_id <> 0 AND t_lits.etage_id <> 0 AND t_services_facturation.etage_force_id = 0) OR + (t_lits.etage_id = 0 AND t_services_facturation.etage_par_defaut_id <> 0 AND t_services_facturation.etage_par_defaut_id = t_places.parent_id) OR + (t_services_facturation.etage_force_id = t_places.parent_id AND t_services_facturation.etage_force_id <> 0) + WHERE lieu_id = t_lieux.oid AND nb_seances > 0 AND t_places.date = p_mouvements_sejour.date AND + nb_seances_dans_taux IS DISTINCT FROM + CASE + WHEN t_places.nb_box_seances_theoriques > 0 THEN nb_seances + WHEN nb_seances_dans_taux > 0 AND t_places.nb_box_seances_theoriques = 0 THEN 0 + ELSE nb_seances_dans_taux END; + + UPDATE activite.p_mouvements_sejour + SET nb_seances_dans_taux = + CASE + WHEN t_places.nb_box_seances_theoriques > 0 THEN nb_seances + WHEN nb_seances_dans_taux > 0 AND t_places.nb_box_seances_theoriques = 0 THEN 0 + ELSE nb_seances_dans_taux END + FROM activite.t_lieux + JOIN activite.t_divers ON t_divers.code = 'PLACESREF' AND t_divers.valeur = 'SER' + JOIN activite.t_places ON service_facturation_id = t_places.parent_id + WHERE lieu_id = t_lieux.oid AND nb_seances > 0 AND t_places.date = p_mouvements_sejour.date AND + nb_seances_dans_taux IS DISTINCT FROM + CASE + WHEN t_places.nb_box_seances_theoriques > 0 THEN nb_seances + WHEN nb_seances_dans_taux > 0 AND t_places.nb_box_seances_theoriques = 0 THEN 0 + ELSE nb_seances_dans_taux END; + + UPDATE activite.p_mouvements_sejour + SET nb_seances_dans_taux = + CASE + WHEN t_places.nb_box_seances_theoriques > 0 THEN nb_seances + WHEN nb_seances_dans_taux > 0 AND t_places.nb_box_seances_theoriques = 0 THEN 0 + ELSE nb_seances_dans_taux END + FROM activite.t_lieux + JOIN activite.t_divers ON t_divers.code = 'PLACESREF' AND t_divers.valeur = 'UF' + JOIN activite.t_places ON unite_fonctionnelle_id = t_places.parent_id + WHERE lieu_id = t_lieux.oid AND nb_seances > 0 AND t_places.date = p_mouvements_sejour.date AND + nb_seances_dans_taux IS DISTINCT FROM + CASE + WHEN t_places.nb_box_seances_theoriques > 0 THEN nb_seances + WHEN nb_seances_dans_taux > 0 AND t_places.nb_box_seances_theoriques = 0 THEN 0 + ELSE nb_seances_dans_taux END; + + UPDATE activite.p_mouvements_sejour + SET nb_seances_dans_taux = + CASE + WHEN t_places.nb_box_seances_theoriques > 0 THEN nb_seances + WHEN nb_seances_dans_taux > 0 AND t_places.nb_box_seances_theoriques = 0 THEN 0 + ELSE nb_seances_dans_taux END + FROM activite.t_lieux + JOIN activite.t_divers ON t_divers.code = 'PLACESREF' AND t_divers.valeur = 'UM' + JOIN activite.t_places ON unite_medicale_id = t_places.parent_id + WHERE lieu_id = t_lieux.oid AND nb_seances > 0 AND t_places.date = p_mouvements_sejour.date AND + nb_seances_dans_taux IS DISTINCT FROM + CASE + WHEN t_places.nb_box_seances_theoriques > 0 THEN nb_seances + WHEN nb_seances_dans_taux > 0 AND t_places.nb_box_seances_theoriques = 0 THEN 0 + ELSE nb_seances_dans_taux END; + END IF; + + -- Application des poles aux places + UPDATE activite.t_places + SET pole_id = pole_occupation_id + FROM activite.t_places_parents + JOIN activite.t_etages_historique ON t_places_parents.oid = t_etages_historique.etage_id + WHERE t_places.parent_id = t_places_parents.oid AND + parent_type = 'ETA' AND + t_places.date BETWEEN t_etages_historique.date AND t_etages_historique.date_fin + ; + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_pole.yaml b/db/schema2/functions/cti_reorganize_pole.yaml new file mode 100644 index 0000000..37ab298 --- /dev/null +++ b/db/schema2/functions/cti_reorganize_pole.yaml @@ -0,0 +1,1123 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + _module_pmsimco TEXT; + _with_rubrique TEXT; + _with_prestation TEXT; + _with_acte TEXT; + BEGIN + + RAISE NOTICE '%' , 'Initialisation poles'; + -- Contenu table + INSERT INTO base.t_pole (oid, code, texte, texte_court) + SELECT 0, '**', 'Non renseigné', 'Non renseigné' + WHERE 0 NOT IN (SELECT oid FROM base.t_pole); + + IF (SELECT count(*) FROM base.t_pole WHERE oid > 0) = 0 THEN + RETURN 'OK. Aucun pole'; + END IF; + + -- replication dans activite + TRUNCATE activite.t_pole; + INSERT INTO activite.t_pole (oid, code, texte, texte_court, section_id, section_code, section_texte) + SELECT oid, code, texte, texte_court, section_id, section_code, section_texte + FROM base.t_pole + ; + + + RAISE NOTICE '%' , 'Preparation mouvemennts'; + + DROP TABLE IF EXISTS w_sejour_lieu; + + CREATE TEMP TABLE w_sejour_lieu AS + SELECT p_mouvements_sejour.no_sejour, p_mouvements_sejour.lieu_id + FROM activite.p_mouvements_sejour + GROUP BY 1,2 + ; + + ANALYSE w_sejour_lieu + ; + + CREATE INDEX i_w_sejour_lieu_no_sejour + ON w_sejour_lieu + USING btree + (no_sejour COLLATE pg_catalog."default"); + + CREATE INDEX i_w_sejour_lieu_lieu_id + ON w_sejour_lieu + USING btree + (lieu_id); + + INSERT INTO w_sejour_lieu (no_sejour, lieu_id) + SELECT p_sejours.no_sejour, p_sejours.lieu_sortie_id + FROM activite.p_sejours + LEFT JOIN w_sejour_lieu ON + p_sejours.no_sejour = w_sejour_lieu.no_sejour AND + p_sejours.lieu_sortie_id = w_sejour_lieu.lieu_id + WHERE w_sejour_lieu.lieu_id IS NULL + GROUP BY 1,2 + ; + + INSERT INTO w_sejour_lieu (no_sejour, lieu_id) + SELECT p_factures.no_sejour, p_factures_lignes_c.lieu_id + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_c.no_facture + LEFT JOIN w_sejour_lieu ON + p_factures.no_sejour = w_sejour_lieu.no_sejour AND + p_factures_lignes_c.lieu_id = w_sejour_lieu.lieu_id + WHERE w_sejour_lieu.lieu_id IS NULL + GROUP BY 1,2 + ; + + + + + INSERT INTO w_sejour_lieu (no_sejour, lieu_id) + SELECT p_factures.no_sejour, p_factures_lignes_h.lieu_id + FROM activite.p_factures_lignes_h + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_h.no_facture + LEFT JOIN w_sejour_lieu ON + p_factures.no_sejour = w_sejour_lieu.no_sejour AND + p_factures_lignes_h.lieu_id = w_sejour_lieu.lieu_id + WHERE w_sejour_lieu.lieu_id IS NULL + GROUP BY 1,2 + ; + + + RAISE NOTICE '%' , 'Application des regles'; + + -- pmsi mco ? + _module_pmsimco = '0'; + IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 'p_rss') THEN + IF (SELECT count(*) + FROM activite.t_pole_rule + WHERE liste_ghm <> '' OR + COALESCE(liste_sauf_ghm,'') <> '' OR + COALESCE(liste_diagnostic_principal,'') <> '' OR + COALESCE(liste_diagnostic_relie,'') <> '' OR + COALESCE(liste_diagnostic_associe,'') <> '' OR + COALESCE(liste_acte,'') <> '') > 1 THEN + _module_pmsimco = '1'; + RAISE NOTICE '%' , 'Application des regles. Avec PMSI MCO'; + END IF; + END IF; + + -- Rubriques ? + _with_rubrique = '0'; + IF (SELECT count(*) + FROM activite.t_pole_rule + WHERE COALESCE(liste_rubrique,'') <> '' + ) > 1 THEN + _with_rubrique = '1'; + END IF; + _with_prestation = '0'; + IF (SELECT count(*) + FROM activite.t_pole_rule + WHERE COALESCE(liste_prestation,'') <> '' OR + COALESCE(liste_sauf_prestation,'') <> '' + ) > 1 THEN + _with_prestation = '1'; + END IF; + _with_acte = '0'; + IF (SELECT count(*) + FROM activite.t_pole_rule + WHERE COALESCE(liste_acte,'') <> '' + ) > 1 THEN + _with_acte = '1'; + END IF; + + -- Sejours et RSS à Traiter + + RAISE NOTICE '%' , 'Application des regles. Identification des sejours'; + DROP SEQUENCE IF EXISTS w_sejours_rss_sequence; + CREATE SEQUENCE w_sejours_rss_sequence; + DROP TABLE IF EXISTS w_sejours_rss; + + IF _module_pmsimco = '1' THEN + -- si pmsi mco + CREATE TEMP TABLE w_sejours_rss AS + SELECT + nextval('w_sejours_rss_sequence'::regclass) AS oid, + COALESCE(t_finess.oid,0) AS finess_id, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour AS no_sejour, + COALESCE(p_rss.oid,0) AS rss_id, + diagnostic_principal_id, + diagnostic_relie_id, + NULL::bigint[] AS diagnostic_associe_liste_rule_id, + NULL::bigint[] AS acte_liste_rule_id, + NULL::bigint[] AS prestation_liste_rule_id, + NULL::bigint[] AS rubrique_liste_rule_id, + p_rss.ghm_id AS ghm_pmsi_id, + p_sejours.ghm_id AS ghm_activite_id, + COALESCE(medecin_rss_id,0) AS medecin_rss_id, + medecin_sejour_id, + COALESCE(t_medecins_pmsi.specialite_id,0) AS specialite_rss_id, + COALESCE(t_medecins_base.specialite_id,0) AS specialite_sejour_id, + p_sejours.type_sejour, + w_sejour_lieu.lieu_id, + t_lieux_c.unite_fonctionnelle_id, + t_lieux_c.service_facturation_id, + t_lieux_c.etage_id, + t_lieux_c.activite_id, + 0::bigint AS pole_id, + 0::bigint AS pole_priorite + FROM activite.p_sejours + JOIN w_sejour_lieu ON p_sejours.no_sejour = w_sejour_lieu.no_sejour + JOIN activite.t_lieux_c ON w_sejour_lieu.lieu_id = t_lieux_c.oid + LEFT JOIN pmsi.p_rss ON no_sejour_administratif = p_sejours.no_sejour AND p_sejours.date_sortie = p_rss.date_sortie AND p_rss.etat = '' + LEFT JOIN pmsi.t_medecins t_medecins_pmsi ON medecin_rss_id = t_medecins_pmsi.oid + LEFT JOIN activite.t_medecins_administratifs ON medecin_sejour_id = t_medecins_administratifs.oid + LEFT JOIN base.t_medecins t_medecins_base ON t_medecins_administratifs.medecin_id = t_medecins_base.oid + LEFT JOIN base.t_finess ON p_sejours.finess = t_finess.code; + + UPDATE w_sejours_rss SET + medecin_rss_id = t_medecins.oid, + specialite_rss_id = t_medecins.specialite_id + FROM activite.t_medecins_administratifs_c + JOIN pmsi.t_medecins ON t_medecins_administratifs_c.adm_code = t_medecins.code + WHERE medecin_sejour_id = t_medecins_administratifs_c.oid AND + t_medecins.oid <> 0 AND + (t_medecins.oid IS DISTINCT FROM medecin_rss_id OR + specialite_rss_id IS DISTINCT FROM t_medecins.specialite_id) + ; + ELSE + -- si pas pmsi mco + CREATE TEMP TABLE w_sejours_rss AS + SELECT + nextval('w_sejours_rss_sequence'::regclass) AS oid, + COALESCE(t_finess.oid,0) AS finess_id, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour AS no_sejour, + 0 AS rss_id, + 0::bigint AS diagnostic_principal_id, + 0::bigint AS diagnostic_relie_id, + NULL::bigint[] AS diagnostic_associe_liste_rule_id, + NULL::bigint[] AS acte_liste_rule_id, + NULL::bigint[] AS prestation_liste_rule_id, + NULL::bigint[] AS rubrique_liste_rule_id, + 0::bigint AS ghm_pmsi_id, + p_sejours.ghm_id AS ghm_activite_id, + 0 AS medecin_rss_id, + medecin_sejour_id, + 0 AS specialite_rss_id, + COALESCE(t_medecins_base.specialite_id,0) AS specialite_sejour_id, + p_sejours.type_sejour, + w_sejour_lieu.lieu_id, + t_lieux_c.unite_fonctionnelle_id, + t_lieux_c.service_facturation_id, + t_lieux_c.etage_id, + t_lieux_c.activite_id, + 0::bigint AS pole_id, + 0::bigint AS pole_priorite + FROM activite.p_sejours + JOIN w_sejour_lieu ON p_sejours.no_sejour = w_sejour_lieu.no_sejour + JOIN activite.t_lieux_c ON w_sejour_lieu.lieu_id = t_lieux_c.oid + LEFT JOIN base.t_finess ON p_sejours.finess = t_finess.code + LEFT JOIN activite.t_medecins_administratifs ON medecin_sejour_id = t_medecins_administratifs.oid + LEFT JOIN base.t_medecins t_medecins_base ON t_medecins_administratifs.medecin_id = t_medecins_base.oid + ; + END IF; + -- GHM sur services non MCO + -- Verrouillé pour l'instant (on verra par la suite) + -- UPDATE w_sejours_rss SET + -- ghm_pmsi_id = 0, + -- ghm_activite_id = 0 + -- FROM activite.t_services_facturation + -- WHERE service_facturation_id = t_services_facturation .oid AND + -- type_t2a <> '1' AND + -- service_facturation_id <> 0 AND + -- (ghm_pmsi_id > 0 OR + -- ghm_activite_id > 0) + -- ; + + -- + UPDATE w_sejours_rss SET + medecin_rss_id = 0, + specialite_rss_id = 0 + WHERE medecin_sejour_id <> 0 AND + (medecin_rss_id <> 0 OR specialite_rss_id <> 0); + UPDATE w_sejours_rss + SET finess_id = (SELECT MAX(finess_id) FROM w_sejours_rss WHERE finess_id <> 0) + WHERE finess_id = 0 AND (SELECT MAX(finess_id) FROM w_sejours_rss WHERE finess_id <> 0) <> 0; + UPDATE w_sejours_rss + SET finess_id = (SELECT MAX(oid) FROM base.t_finess) + WHERE finess_id = 0; + CREATE INDEX w_sejours_rss_i0 ON w_sejours_rss USING btree (oid); + CREATE INDEX w_sejours_rss_i1 ON w_sejours_rss USING btree (rss_id); + CREATE INDEX w_sejours_rss_i2 ON w_sejours_rss USING btree (sejour_id); + CREATE INDEX w_sejours_rss_i3 ON w_sejours_rss USING btree (no_sejour); + + -- Traduction des règles en oid + RAISE NOTICE '%' , 'Application des regles. Traduction en oid'; + DROP TABLE IF EXISTS w_pole_rule; + CREATE TEMP TABLE w_pole_rule AS + SELECT + t_pole_rule.oid, + pole_id, + CASE WHEN priorite <> 0 THEN priorite WHEN liste_diagnostic_principal <> '' THEN 90000 ELSE 999999 END AS priorite, + CASE WHEN liste_finess <> '' THEN '1' ELSE '0' END AS a_liste_finess, + string_to_array(translate(liste_finess,'*,','% '),' ') AS liste_finess, + NULL::bigint[] AS liste_finess_id , + CASE WHEN liste_diagnostic_principal <> '' THEN '1' ELSE '0' END AS a_liste_diagnostic_principal, + string_to_array(translate(liste_diagnostic_principal,'*,','% '),' ') AS liste_diagnostic_principal, + NULL::bigint[] AS liste_diagnostic_principal_id , + CASE WHEN liste_diagnostic_relie <> '' THEN '1' ELSE '0' END AS a_liste_diagnostic_relie, + string_to_array(translate(liste_diagnostic_relie,'*,','% '),' ') AS liste_diagnostic_relie, + NULL::bigint[] AS liste_diagnostic_relie_id , + CASE WHEN liste_diagnostic_associe <> '' THEN '1' ELSE '0' END AS a_liste_diagnostic_associe, + string_to_array(translate(liste_diagnostic_associe,'*,','% '),' ') AS liste_diagnostic_associe, + NULL::bigint[] AS liste_diagnostic_associe_id , + CASE WHEN liste_acte <> '' THEN '1' ELSE '0' END AS a_liste_acte, + string_to_array(translate(liste_acte,'*,','% '),' ') AS liste_acte, + NULL::bigint[] AS liste_acte_pmsi_id , + NULL::bigint[] AS liste_acte_base_id , + CASE WHEN liste_ghm <> '' THEN '1' ELSE '0' END AS a_liste_ghm, + string_to_array(translate(liste_ghm,'*,','% '),' ') AS liste_ghm, + NULL::bigint[] AS liste_ghm_pmsi_id, + NULL::bigint[] AS liste_ghm_activite_id, + liste_ghm AS liste_ghm_origine, + CASE WHEN liste_sauf_ghm <> '' THEN '1' ELSE '0' END AS a_liste_sauf_ghm, + string_to_array(translate(liste_sauf_ghm,'*,','% '),' ') AS liste_sauf_ghm, + NULL::bigint[] AS liste_sauf_ghm_pmsi_id , + NULL::bigint[] AS liste_sauf_ghm_activite_id , + liste_sauf_ghm AS liste_sauf_ghm_origine, + CASE WHEN liste_type_sejour <> '' THEN '1' ELSE '0' END AS a_liste_type_sejour, + string_to_array(translate(liste_type_sejour,'*,','% '),' ') AS liste_type_sejour, + NULL::text[] AS liste_type_sejour_id , + CASE WHEN liste_unite_fonctionnelle <> '' THEN '1' ELSE '0' END AS a_liste_unite_fonctionnelle, + string_to_array(translate(liste_unite_fonctionnelle,'*,','% '),' ') AS liste_unite_fonctionnelle, + NULL::bigint[] AS liste_unite_fonctionnelle_id , + CASE WHEN liste_service <> '' THEN '1' ELSE '0' END AS a_liste_service, + string_to_array(translate(liste_service,'*,','% '),' ') AS liste_service, + NULL::bigint[] AS liste_service_id , + CASE WHEN liste_etage <> '' THEN '1' ELSE '0' END AS a_liste_etage, + string_to_array(translate(liste_etage,'*,','% '),' ') AS liste_etage, + NULL::bigint[] AS liste_etage_id , + CASE WHEN liste_activite <> '' THEN '1' ELSE '0' END AS a_liste_activite, + string_to_array(translate(liste_activite,'*,','% '),' ') AS liste_activite, + NULL::bigint[] AS liste_activite_id , + CASE WHEN liste_medecin <> '' THEN '1' ELSE '0' END AS a_liste_medecin, + string_to_array(CASE WHEN liste_medecin NOT LIKE '%**%' THEN translate(liste_medecin,'*,','% ') ELSE liste_medecin END,' ') AS liste_medecin, + NULL::bigint[] AS liste_medecin_pmsi_id , + NULL::bigint[] AS liste_medecin_activite_id , + CASE WHEN liste_specialite <> '' THEN '1' ELSE '0' END AS a_liste_specialite, + string_to_array(translate(liste_specialite,'*,','% '),' ') AS liste_specialite, + NULL::bigint[] AS liste_specialite_pmsi_id , + NULL::bigint[] AS liste_specialite_activite_id , + CASE WHEN liste_rubrique <> '' THEN '1' ELSE '0' END AS a_liste_rubrique, + string_to_array(translate(liste_rubrique,'*,','% '),' ') AS liste_rubrique, + NULL::bigint[] AS liste_rubrique_id, + CASE WHEN liste_prestation <> '' THEN '1' ELSE '0' END AS a_liste_prestation, + string_to_array(translate(liste_prestation,'*,','% '),' ') AS liste_prestation, + NULL::bigint[] AS liste_prestation_id + FROM activite.t_pole_rule + JOIN activite.t_pole ON pole_id = t_pole.oid + ORDER BY priorite, pole_id; + + + + UPDATE w_pole_rule + SET liste_finess_id = (SELECT base.cti_group_array3(oid) FROM base.t_finess WHERE code LIKE ANY (liste_finess)) + WHERE a_liste_finess = '1'; + + IF _module_pmsimco = '1' THEN + UPDATE w_pole_rule + SET liste_diagnostic_principal_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_diagnostics WHERE code LIKE ANY (liste_diagnostic_principal)) + WHERE a_liste_diagnostic_principal = '1'; + UPDATE w_pole_rule + SET liste_diagnostic_relie_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_diagnostics WHERE code LIKE ANY (liste_diagnostic_relie)) + WHERE a_liste_diagnostic_relie = '1'; + UPDATE w_pole_rule + SET liste_diagnostic_associe_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_diagnostics WHERE code LIKE ANY (liste_diagnostic_associe)) + WHERE a_liste_diagnostic_associe = '1'; + UPDATE w_pole_rule + SET liste_acte_pmsi_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_actes WHERE code LIKE ANY (liste_acte)) + WHERE a_liste_acte = '1'; + DROP TABLE IF EXISTS w_pole_rule_actes_pmsi; + CREATE TEMP TABLE w_pole_rule_actes_pmsi AS + SELECT t_actes.oid AS rule_acte_id, w_pole_rule.oid AS rule_id + FROM pmsi.t_actes + JOIN w_pole_rule ON code LIKE ANY (liste_acte); + CREATE INDEX w_pole_rule_actes_pmsi_i1 ON w_pole_rule_actes_pmsi USING btree (rule_acte_id); + END IF; + + + DROP TABLE IF EXISTS w_pole_rule_actes_base; + CREATE TEMP TABLE w_pole_rule_actes_base AS + SELECT t_actes.oid AS rule_acte_id, w_pole_rule.oid AS rule_id + FROM base.t_actes + JOIN w_pole_rule ON code LIKE ANY (liste_acte); + CREATE INDEX w_pole_rule_actes_base_i1 ON w_pole_rule_actes_base USING btree (rule_acte_id); + + DROP TABLE IF EXISTS w_pole_rule_rubriques; + CREATE TEMP TABLE w_pole_rule_rubriques AS + SELECT t_rubriques_facturation.oid AS rule_rubrique_id, w_pole_rule.oid AS rule_id + FROM activite.t_rubriques_facturation + JOIN w_pole_rule ON code LIKE ANY (liste_rubrique); + CREATE INDEX w_pole_rule_rubriques_i1 ON w_pole_rule_rubriques USING btree (rule_rubrique_id); + + DROP TABLE IF EXISTS w_pole_rule_prestations; + CREATE TEMP TABLE w_pole_rule_prestations AS + SELECT t_prestations.oid AS rule_prestation_id, w_pole_rule.oid AS rule_id + FROM activite.t_prestations + JOIN w_pole_rule ON code LIKE ANY (liste_prestation); + CREATE INDEX w_pole_rule_prestations_i1 ON w_pole_rule_prestations USING btree (rule_prestation_id); + + UPDATE w_pole_rule + SET liste_acte_base_id = (SELECT base.cti_group_array3(oid) FROM base.t_actes WHERE code LIKE ANY (liste_acte)) + WHERE a_liste_acte = '1' + ; + UPDATE w_pole_rule + SET liste_acte_base_id = + array_cat(liste_acte_base_id, + (SELECT base.cti_group_array3(t_actes.oid) + FROM base.t_actes + JOIN activite.t_listes_contenu ON to_id = t_actes.oid + JOIN activite.t_listes ON t_listes_contenu.liste_id = t_listes.oid + WHERE '[LISTE:'||t_listes.code||']' LIKE ANY (liste_acte)) + ) + WHERE a_liste_acte = '1' AND + array_to_string(liste_acte,' ') LIKE '%[LISTE:%' + ; + + + IF _module_pmsimco = '1' THEN + UPDATE w_pole_rule + SET liste_ghm_pmsi_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_ghm WHERE code LIKE ANY (liste_ghm)) + WHERE a_liste_ghm = '1'; + UPDATE w_pole_rule + SET liste_ghm_pmsi_id = + array_cat(liste_ghm_pmsi_id, + (SELECT base.cti_group_array3(t_ghm.oid) FROM pmsi.t_ghm JOIN base.t_cas ON cas_id = t_cas.oid WHERE '[CAS:'||t_cas.code||']' LIKE ANY (liste_ghm)) + ) + WHERE a_liste_ghm = '1' AND + liste_ghm_origine LIKE '%[CAS:%' + ; + END IF; + + UPDATE w_pole_rule + SET liste_ghm_activite_id = (SELECT base.cti_group_array3(oid) FROM base.t_ghm WHERE code LIKE ANY (liste_ghm)) + WHERE a_liste_ghm = '1' + ; + UPDATE w_pole_rule + SET liste_ghm_activite_id = + array_cat(liste_ghm_activite_id, + (SELECT base.cti_group_array3(t_ghm.oid) FROM base.t_ghm JOIN base.t_cas ON cas_id = t_cas.oid WHERE '[CAS:'||t_cas.code||']' LIKE ANY (liste_ghm)) + ) + WHERE a_liste_ghm = '1' AND + liste_ghm_origine LIKE '%[CAS:%' + ; + UPDATE w_pole_rule + SET liste_acte_base_id = + array_cat(liste_acte_base_id, + (SELECT base.cti_group_array3(t_actes.oid) + FROM base.t_actes + JOIN activite.t_listes_contenu ON to_id = t_actes.oid + JOIN activite.t_listes ON t_listes_contenu.liste_id = t_listes.oid + WHERE '[LISTE:'||t_listes.code||']' LIKE ANY (liste_acte)) + ) + WHERE a_liste_acte = '1' AND + array_to_string(liste_acte,' ') LIKE '%[LISTE:%' + ; + + + IF _module_pmsimco = '1' THEN + UPDATE w_pole_rule + SET liste_sauf_ghm_pmsi_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_ghm WHERE code LIKE ANY (liste_sauf_ghm)) + WHERE a_liste_sauf_ghm = '1'; + END IF; + + UPDATE w_pole_rule + SET liste_sauf_ghm_activite_id = (SELECT base.cti_group_array3(oid) FROM base.t_ghm WHERE code LIKE ANY (liste_sauf_ghm)) + WHERE a_liste_sauf_ghm = '1' + ; + UPDATE w_pole_rule + SET liste_sauf_ghm_activite_id = + array_cat(liste_sauf_ghm_activite_id, + (SELECT base.cti_group_array3(t_ghm.oid) + FROM base.t_ghm + JOIN activite.t_listes_contenu ON to_id = t_ghm.oid + JOIN activite.t_listes ON t_listes_contenu.liste_id = t_listes.oid + WHERE '[LISTE:'||t_listes.code||']' LIKE ANY (liste_sauf_ghm)) + ) + WHERE a_liste_sauf_ghm = '1' AND + liste_sauf_ghm_origine LIKE '%[LISTE:%' + ; + IF _module_pmsimco = '1' THEN + UPDATE w_pole_rule + SET liste_medecin_pmsi_id = ( + SELECT base.cti_group_array3(t_medecins_pmsi.oid) + FROM pmsi.t_medecins t_medecins_pmsi + JOIN base.t_medecins ON t_medecins_pmsi.medecin_reference_id = t_medecins.oid + WHERE t_medecins_pmsi.oid <> 0 AND t_medecins_pmsi.code <> '' AND t_medecins_pmsi.code LIKE ANY (liste_medecin) AND liste_medecin[1] <> '(R)' OR + t_medecins.oid <> 0 AND t_medecins.code <> '' AND t_medecins.code LIKE ANY (liste_medecin) AND liste_medecin[1] = '(R)' + ) + WHERE a_liste_medecin = '1'; + END IF; + + UPDATE w_pole_rule + SET liste_medecin_activite_id = ( + SELECT base.cti_group_array3(t_medecins_administratifs.oid) + FROM activite.t_medecins_administratifs + JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid + WHERE t_medecins_administratifs.oid <> 0 AND t_medecins_administratifs.code <> '' AND t_medecins_administratifs.code LIKE ANY (liste_medecin) AND liste_medecin[1] <> '(R)' OR + t_medecins.oid <> 0 AND t_medecins.code <> '' AND t_medecins.code LIKE ANY (liste_medecin) AND liste_medecin[1] = '(R)' + ) + WHERE a_liste_medecin = '1' + ; + IF _module_pmsimco = '1' THEN + UPDATE w_pole_rule + SET liste_specialite_pmsi_id = (SELECT base.cti_group_array3(oid) FROM pmsi.t_specialites_medecin WHERE oid <> 0 AND code LIKE ANY (liste_specialite)) + WHERE a_liste_specialite = '1'; + END IF; + + UPDATE w_pole_rule + SET liste_specialite_activite_id = (SELECT base.cti_group_array3(oid) FROM base.t_specialites_medecin WHERE oid <> 0 AND code LIKE ANY (liste_specialite)) + WHERE a_liste_specialite = '1' + ; + UPDATE w_pole_rule + SET liste_type_sejour_id = (SELECT base.cti_group_array3(code) FROM activite.t_type_sejour WHERE oid <> 0 AND code <> '' AND code LIKE ANY (liste_type_sejour)) + WHERE a_liste_type_sejour = '1' + ; + UPDATE w_pole_rule + SET liste_unite_fonctionnelle_id = (SELECT base.cti_group_array3(oid) FROM activite.t_unites_fonctionnelles WHERE oid <> 0 AND code LIKE ANY (liste_unite_fonctionnelle)) + WHERE a_liste_unite_fonctionnelle = '1' + ; + UPDATE w_pole_rule + SET liste_service_id = (SELECT base.cti_group_array3(oid) FROM activite.t_services_facturation WHERE oid <> 0 AND code LIKE ANY (liste_service)) + WHERE a_liste_service = '1' + ; + UPDATE w_pole_rule + SET liste_etage_id = (SELECT base.cti_group_array3(oid) FROM activite.t_etages WHERE oid <> 0 AND code LIKE ANY (liste_etage)) + WHERE a_liste_etage = '1' + ; + UPDATE w_pole_rule + SET liste_activite_id = (SELECT base.cti_group_array3(oid) FROM activite.t_activites WHERE oid <> 0 AND code LIKE ANY (liste_activite)) + WHERE a_liste_activite = '1' + ; + UPDATE w_pole_rule + SET liste_rubrique_id = (SELECT base.cti_group_array3(oid) FROM activite.t_rubriques_facturation WHERE oid <> 0 AND code LIKE ANY (liste_rubrique)) + WHERE a_liste_rubrique = '1' + ; + UPDATE w_pole_rule + SET liste_prestation_id = (SELECT base.cti_group_array3(oid) FROM activite.t_prestations WHERE oid <> 0 AND code LIKE ANY (liste_prestation)) + WHERE a_liste_prestation = '1' + ; + + + -- Association cles aux rubriques + RAISE NOTICE '%' , 'Application des regles. Traitement des rubriques'; + DROP TABLE IF EXISTS w_factures_rubriques; + IF _with_rubrique = '1' THEN + CREATE TEMP TABLE w_factures_rubriques AS + SELECT + p_factures.no_sejour, rule_id + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN w_pole_rule_rubriques ON p_factures_lignes_c.prestation_id = rule_rubrique_id + WHERE p_factures_lignes_c.montant_facture <> 0 + GROUP BY 1,2 + HAVING SUM(p_factures_lignes_c.montant_facture) > 0 + UNION + SELECT + p_factures.no_sejour, rule_id + FROM activite.p_factures_lignes_non_facturees_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_non_facturees_c.no_facture + JOIN w_pole_rule_rubriques ON p_factures_lignes_non_facturees_c.prestation_id = rule_rubrique_id + ; + CREATE INDEX w_factures_rubriques_i1 ON w_factures_rubriques USING btree (no_sejour); + ELSE + CREATE TEMP TABLE w_factures_rubriques (no_sejour text, rule_id bigint); + END IF; + + DROP TABLE IF EXISTS w_pole_rubriques; + CREATE TEMP TABLE w_pole_rubriques AS + + SELECT oid, base.cti_group_array3(rubrique_rule_id) AS rubrique_liste_rule_id + FROM + ( + SELECT + w_sejours_rss.oid, rule_id AS rubrique_rule_id + FROM w_factures_rubriques + JOIN w_sejours_rss ON w_factures_rubriques.no_sejour = w_sejours_rss.no_sejour + ) subview + GROUP BY 1; + ALTER TABLE w_pole_rubriques ADD CONSTRAINT w_pole_rubriques_pkey PRIMARY KEY(oid); + UPDATE w_sejours_rss + SET rubrique_liste_rule_id = w_pole_rubriques.rubrique_liste_rule_id + FROM w_pole_rubriques + WHERE w_pole_rubriques.oid = w_sejours_rss.oid; + + + + -- Association cles aux prestations + RAISE NOTICE '%' , 'Application des regles. Traitement des prestations'; + DROP TABLE IF EXISTS w_factures_prestations; + IF _with_prestation = '1' THEN + CREATE TEMP TABLE w_factures_prestations AS + SELECT + p_factures.no_sejour, rule_id + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN w_pole_rule_prestations ON p_factures_lignes_c.prestation_id = rule_prestation_id + WHERE p_factures_lignes_c.montant_facture <> 0 + GROUP BY 1,2 + HAVING SUM(p_factures_lignes_c.montant_facture) > 0 + UNION + SELECT + p_factures.no_sejour, rule_id + FROM activite.p_factures_lignes_non_facturees_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_non_facturees_c.no_facture + JOIN w_pole_rule_prestations ON p_factures_lignes_non_facturees_c.prestation_id = rule_prestation_id + GROUP BY 1,2 + ; + ELSE + CREATE TEMP TABLE w_factures_prestations (no_sejour text, rule_id bigint); + END IF; + CREATE INDEX w_factures_prestations_i1 ON w_factures_prestations USING btree (no_sejour); + + DROP TABLE IF EXISTS w_pole_prestations; + CREATE TEMP TABLE w_pole_prestations AS + + SELECT oid, base.cti_group_array3(prestation_rule_id) AS prestation_liste_rule_id + FROM + ( + SELECT + w_sejours_rss.oid, rule_id AS prestation_rule_id + FROM w_factures_prestations + JOIN w_sejours_rss ON w_factures_prestations.no_sejour = w_sejours_rss.no_sejour + ) subview + GROUP BY 1; + ALTER TABLE w_pole_prestations ADD CONSTRAINT w_pole_prestations_pkey PRIMARY KEY(oid); + UPDATE w_sejours_rss + SET prestation_liste_rule_id = w_pole_prestations.prestation_liste_rule_id + FROM w_pole_prestations + WHERE w_pole_prestations.oid = w_sejours_rss.oid; + + + -- Association cles aux actes + RAISE NOTICE '%' , 'Application des regles. Traitement des actes'; + DROP TABLE IF EXISTS w_factures_actes; + IF _with_acte = '1' THEN + CREATE TEMP TABLE w_factures_actes AS + SELECT + no_facture, rule_id + FROM activite.p_factures_lignes_h + JOIN w_pole_rule_actes_base ON p_factures_lignes_h.acte_id = rule_acte_id + WHERE activite_ccam <> '4' + UNION + SELECT + no_facture, rule_id + FROM activite.p_factures_lignes_non_facturees_h + JOIN w_pole_rule_actes_base ON p_factures_lignes_non_facturees_h.acte_id = rule_acte_id + WHERE activite_ccam <> '4'; + ELSE + CREATE TEMP TABLE w_factures_actes (no_facture text, rule_id bigint); + END IF; + CREATE INDEX w_factures_actes_i1 ON w_factures_actes USING btree (no_facture); + + DROP TABLE IF EXISTS w_pole_actes; + IF _module_pmsimco = '1' THEN + CREATE TEMP TABLE w_pole_actes AS + SELECT oid, base.cti_group_array3(acte_rule_id) AS acte_liste_rule_id + FROM + ( + SELECT + w_sejours_rss.oid, rule_id AS acte_rule_id + FROM pmsi.p_rss_actes + JOIN w_sejours_rss ON p_rss_actes.rss_id = w_sejours_rss.rss_id + JOIN w_pole_rule_actes_pmsi ON p_rss_actes.acte_id = rule_acte_id + UNION + SELECT + w_sejours_rss.oid, rule_id AS acte_rule_id + FROM w_factures_actes + JOIN activite.p_factures ON w_factures_actes.no_facture = p_factures.no_facture + JOIN w_sejours_rss ON p_factures.no_sejour = w_sejours_rss.no_sejour + + ) subview + GROUP BY 1; + ELSE + CREATE TEMP TABLE w_pole_actes AS + SELECT oid, base.cti_group_array3(acte_rule_id) AS acte_liste_rule_id + FROM + ( + SELECT + w_sejours_rss.oid, rule_id AS acte_rule_id + FROM w_factures_actes + JOIN activite.p_factures ON w_factures_actes.no_facture = p_factures.no_facture + JOIN w_sejours_rss ON p_factures.no_sejour = w_sejours_rss.no_sejour + + ) subview + GROUP BY 1; + END IF; + ALTER TABLE w_pole_actes ADD CONSTRAINT w_pole_actes_pkey PRIMARY KEY(oid); + UPDATE w_sejours_rss + SET acte_liste_rule_id = w_pole_actes.acte_liste_rule_id + FROM w_pole_actes + WHERE w_pole_actes.oid = w_sejours_rss.oid; + + -- Diagnostics + IF _module_pmsimco = '1' THEN + RAISE NOTICE '%' , 'Application des regles. Traitement des diagnostics'; + DROP TABLE IF EXISTS w_pole_diagnostics; + CREATE TEMP TABLE w_pole_diagnostics AS + SELECT + w_sejours_rss.oid, base.cti_group_array3(w_pole_rule.oid) AS diagnostic_associe_liste_rule_id + FROM pmsi.p_rss_diagnostics + JOIN w_pole_rule ON type_diagnostic_rss IN ('DA', 'DS') AND diagnostic_id = ANY (liste_diagnostic_associe_id) + JOIN w_sejours_rss ON p_rss_diagnostics.rss_id = w_sejours_rss.rss_id + WHERE a_liste_diagnostic_associe <> '0' + GROUP BY 1; + ALTER TABLE w_pole_diagnostics ADD CONSTRAINT w_pole_diagnostics_pkey PRIMARY KEY(oid); + UPDATE w_sejours_rss + SET diagnostic_associe_liste_rule_id = w_pole_diagnostics.diagnostic_associe_liste_rule_id + FROM w_pole_diagnostics + WHERE w_pole_diagnostics.oid = w_sejours_rss.oid; + END IF; + + -- Mise à jour des cles venant des données du PMSI + RAISE NOTICE '%' , 'Application des regles. Attribution des poles venant du pmsi'; + DROP TABLE IF EXISTS w_sejours_pole; + CREATE TEMP TABLE w_sejours_pole AS + SELECT w_sejours_rss.oid, + MIN(priorite)+1 AS pole_priorite, + (MIN(ARRAY[priorite,w_pole_rule.pole_id]))[2] AS pole_id + FROM w_sejours_rss + JOIN w_pole_rule ON + (a_liste_finess = '0' OR finess_id = ANY (liste_finess_id)) AND + (a_liste_medecin = '0' OR medecin_rss_id = ANY (liste_medecin_pmsi_id)) AND + (a_liste_type_sejour = '0') AND + (a_liste_unite_fonctionnelle = '0') AND + (a_liste_service = '0') AND + (a_liste_etage = '0') AND + (a_liste_activite = '0') AND + (a_liste_specialite = '0' OR specialite_rss_id = ANY (liste_specialite_pmsi_id)) AND + (a_liste_diagnostic_principal = '0' OR diagnostic_principal_id = ANY (liste_diagnostic_principal_id)) AND + (a_liste_diagnostic_relie = '0' OR diagnostic_relie_id = ANY (liste_diagnostic_relie_id)) AND + (a_liste_diagnostic_associe = '0' OR w_pole_rule.oid = ANY(diagnostic_associe_liste_rule_id)) AND + (a_liste_acte = '0' OR w_pole_rule.oid = ANY(acte_liste_rule_id)) AND + (a_liste_ghm = '0' OR ghm_pmsi_id = ANY (liste_ghm_pmsi_id)) AND + (a_liste_sauf_ghm = '0' OR ghm_pmsi_id <> ALL (liste_sauf_ghm_pmsi_id)) AND + (a_liste_prestation = '0') AND + (a_liste_rubrique = '0') + WHERE w_sejours_rss.rss_id <> 0 + GROUP BY 1 + ORDER BY 1; + UPDATE w_sejours_rss SET + pole_id = w_sejours_pole.pole_id, + pole_priorite = w_sejours_pole.pole_priorite + FROM w_sejours_pole + WHERE w_sejours_rss.oid = w_sejours_pole.oid; + -- Mise à jour des cles venant des données d'activite + RAISE NOTICE '%' , 'Application des regles. Attribution des poles venant de la GAP'; + DROP TABLE IF EXISTS w_sejours_pole; + CREATE TEMP TABLE w_sejours_pole AS + SELECT w_sejours_rss.oid, + MIN(priorite) AS pole_priorite, + (MIN(ARRAY[priorite,w_pole_rule.pole_id]))[2] AS pole_id + FROM w_sejours_rss + JOIN w_pole_rule ON + (a_liste_finess = '0' OR finess_id = ANY (liste_finess_id)) AND + (a_liste_type_sejour = '0' OR type_sejour = ANY (liste_type_sejour_id)) AND + (a_liste_unite_fonctionnelle = '0' OR unite_fonctionnelle_id = ANY (liste_unite_fonctionnelle_id)) AND + (a_liste_service = '0' OR service_facturation_id = ANY (liste_service_id)) AND + (a_liste_etage = '0' OR etage_id = ANY (liste_etage_id)) AND + (a_liste_activite = '0' OR activite_id = ANY (liste_activite_id)) AND + (a_liste_medecin = '0' OR medecin_sejour_id = ANY (liste_medecin_activite_id)) AND + (a_liste_specialite = '0' OR specialite_sejour_id = ANY (liste_specialite_activite_id)) AND + (a_liste_diagnostic_principal = '0' OR diagnostic_principal_id = ANY (liste_diagnostic_principal_id)) AND + (a_liste_diagnostic_relie = '0' OR diagnostic_relie_id = ANY (liste_diagnostic_relie_id)) AND + (a_liste_diagnostic_associe = '0' OR w_pole_rule.oid = ANY(diagnostic_associe_liste_rule_id)) AND + (a_liste_acte = '0' OR w_pole_rule.oid = ANY(acte_liste_rule_id)) AND + (a_liste_rubrique = '0' OR w_pole_rule.oid = ANY(rubrique_liste_rule_id)) AND + (a_liste_prestation = '0' OR w_pole_rule.oid = ANY(prestation_liste_rule_id)) AND + (a_liste_ghm = '0' OR ghm_activite_id = ANY (liste_ghm_activite_id)) AND + (a_liste_sauf_ghm = '0' OR ghm_activite_id <> ALL (liste_sauf_ghm_activite_id)) + WHERE w_sejours_rss.sejour_id <> 0 + GROUP BY 1 + ORDER BY 1; + UPDATE w_sejours_rss SET + pole_id = w_sejours_pole.pole_id, + pole_priorite = w_sejours_pole.pole_priorite + FROM w_sejours_pole + WHERE w_sejours_rss.oid = w_sejours_pole.oid AND + (w_sejours_rss.pole_priorite > w_sejours_pole.pole_priorite OR w_sejours_rss.pole_priorite = 0); + + RAISE NOTICE '%' , 'Application des regles. Validation des poles'; + + RAISE NOTICE '%' , 'Application des regles. Validation des poles. p_sejour_lieu'; + + TRUNCATE activite.p_sejour_lieu; + + INSERT INTO activite.p_sejour_lieu (no_sejour, sejour_id, lieu_id, pole_id) + SELECT no_sejour, sejour_id, lieu_id, MAX(pole_id) AS pole_id + FROM w_sejours_rss + GROUP BY 1,2,3 + ; + + ANALYSE activite.p_sejour_lieu + ; + + -- Réplication dans tables de prod + RAISE NOTICE '%' , 'Application des regles. Validation des poles. p_mouvements_sejour'; + + DROP TABLE IF EXISTS w_mouvement_pole; + CREATE TEMP TABLE w_mouvement_pole AS + SELECT p_mouvements_sejour.*, COALESCE(p_sejour_lieu.pole_id,0) AS new_pole_id + FROM activite.p_mouvements_sejour + LEFT JOIN activite.p_sejour_lieu ON + p_mouvements_sejour.no_sejour = p_sejour_lieu.no_sejour AND + p_mouvements_sejour.lieu_id = p_sejour_lieu.lieu_id + ; + UPDATE w_mouvement_pole + SET pole_id = new_pole_id + WHERE pole_id IS DISTINCT FROM new_pole_id + ; + ALTER TABLE w_mouvement_pole DROP COLUMN new_pole_id + ; + TRUNCATE activite.p_mouvements_sejour + ; + INSERT INTO activite.p_mouvements_sejour SELECT * FROM w_mouvement_pole + ; + ANALYSE activite.p_mouvements_sejour + ; + + RAISE NOTICE '%' , 'Application des regles. Validation des poles. p_factures_lignes_c'; + + DROP TABLE IF EXISTS w_ligne_pole_c; + CREATE TEMP TABLE w_ligne_pole_c AS + SELECT p_factures_lignes_c.*, COALESCE(p_sejour_lieu.pole_id,0) AS new_pole_id + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + LEFT JOIN activite.p_sejour_lieu ON + p_factures.no_sejour = p_sejour_lieu.no_sejour AND + p_factures_lignes_c.lieu_id = p_sejour_lieu.lieu_id + ; + UPDATE w_ligne_pole_c + SET pole_id = new_pole_id + WHERE pole_id IS DISTINCT FROM new_pole_id + ; + ALTER TABLE w_ligne_pole_c DROP COLUMN new_pole_id + ; + TRUNCATE activite.p_factures_lignes_c + ; + INSERT INTO activite.p_factures_lignes_c SELECT * FROM w_ligne_pole_c + ; + ANALYSE activite.p_factures_lignes_c + ; + + RAISE NOTICE '%' , 'Application des regles. Validation des poles. p_factures_encours_lignes_c'; + + DROP TABLE IF EXISTS w_encours_ligne_pole_c; + CREATE TEMP TABLE w_encours_ligne_pole_c AS + SELECT p_factures_encours_lignes_c.*, COALESCE(p_sejour_lieu.pole_id,0) AS new_pole_id + FROM activite.p_factures_encours_lignes_c + JOIN activite.p_factures_encours ON p_factures_encours_lignes_c.no_facture = p_factures_encours.no_facture + LEFT JOIN activite.p_sejour_lieu ON + p_factures_encours.no_sejour = p_sejour_lieu.no_sejour AND + p_factures_encours_lignes_c.lieu_id = p_sejour_lieu.lieu_id + ; + UPDATE w_encours_ligne_pole_c + SET pole_id = new_pole_id + WHERE pole_id IS DISTINCT FROM new_pole_id + ; + ALTER TABLE w_encours_ligne_pole_c DROP COLUMN new_pole_id + ; + TRUNCATE activite.p_factures_encours_lignes_c + ; + INSERT INTO activite.p_factures_encours_lignes_c SELECT * FROM w_encours_ligne_pole_c + ; + ANALYSE activite.p_factures_encours_lignes_c + ; + + RAISE NOTICE '%' , 'Application des regles. Validation des poles. p_factures_lignes_h'; + + DROP TABLE IF EXISTS w_ligne_pole_h; + CREATE TEMP TABLE w_ligne_pole_h AS + SELECT p_factures_lignes_h.*, COALESCE(p_sejour_lieu.pole_id,0) AS new_pole_id + FROM activite.p_factures_lignes_h + JOIN activite.p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + LEFT JOIN activite.p_sejour_lieu ON + p_factures.no_sejour = p_sejour_lieu.no_sejour AND + p_factures_lignes_h.lieu_id = p_sejour_lieu.lieu_id + ; + UPDATE w_ligne_pole_h + SET pole_id = new_pole_id + WHERE pole_id IS DISTINCT FROM new_pole_id + ; + ALTER TABLE w_ligne_pole_h DROP COLUMN new_pole_id + ; + TRUNCATE activite.p_factures_lignes_h + ; + INSERT INTO activite.p_factures_lignes_h SELECT * FROM w_ligne_pole_h + ; + ANALYSE activite.p_factures_lignes_h + ; + + RAISE NOTICE '%' , 'Application des regles. Validation des poles. p_factures_reference'; + + DROP TABLE IF EXISTS w_facture_pole; + CREATE TEMP TABLE w_facture_pole AS + SELECT no_facture_reference, + (MAX(ARRAY[p_mouvements_sejour.date::text, to_char(p_mouvements_sejour.heure_debut,'FM000000'), p_mouvements_sejour.pole_id::text]))[3]::bigint AS pole_sortie_id + FROM activite.p_factures_reference + JOIN activite.p_mouvements_sejour ON + p_mouvements_sejour.no_sejour = p_factures_reference.no_sejour AND + p_mouvements_sejour.date BETWEEN p_factures_reference.date_debut_facture AND date_fin_facture + GROUP BY 1 + ; + + UPDATE activite.p_factures_reference + SET pole_sortie_id = w_facture_pole.pole_sortie_id + FROM w_facture_pole + WHERE p_factures_reference.no_facture_reference = w_facture_pole.no_facture_reference AND + p_factures_reference.pole_sortie_id IS DISTINCT FROM w_facture_pole.pole_sortie_id + ; + + ANALYSE activite.p_factures_reference + ; + + RAISE NOTICE '%' , 'Application des regles. Validation des poles. p_factures_reference'; + + UPDATE activite.p_factures_reference_tiers + SET pole_sortie_id = w_facture_pole.pole_sortie_id + FROM w_facture_pole + WHERE p_factures_reference_tiers.no_facture_reference = w_facture_pole.no_facture_reference AND + p_factures_reference_tiers.pole_sortie_id IS DISTINCT FROM w_facture_pole.pole_sortie_id + ; + + ANALYSE activite.p_factures_reference_tiers + ; + + + -- Pole par defaut pour taux d'occupation + RAISE NOTICE '%' , 'Application des regles. Validation des poles. t_etages_historique'; + + UPDATE activite.t_etages_historique + SET pole_occupation_id = subview.pole_occupation_id + FROM + ( + SELECT etage_id, date_debut, (MAX(ARRAY[nb, pole_id]))[2] AS pole_occupation_id + FROM + ( + SELECT t_lieux_c.etage_id, t_etages_historique.date AS date_debut, t_etages_historique.date_fin, p_mouvements_sejour.pole_id, count(*) AS nb + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux_c ON p_mouvements_sejour.lieu_id = t_lieux_c.oid + JOIN activite.t_etages_historique ON t_lieux_c.etage_id = t_etages_historique.etage_id AND p_mouvements_sejour.date BETWEEN t_etages_historique.date AND t_etages_historique.date_fin + WHERE t_lieux_c.etage_id <> 0 + GROUP BY 1,2,3,4 + ORDER BY 1,2 + ) subview + GROUP BY 1,2 + ) subview + WHERE t_etages_historique.etage_id = subview.etage_id AND + t_etages_historique.date = subview.date_debut AND + t_etages_historique.pole_occupation_id IS DISTINCT FROM subview.pole_occupation_id + ; + + + RAISE NOTICE '%' , 'Application des regles. Validation des poles. t_services_facturation_historique'; + + UPDATE activite.t_services_facturation_historique + SET pole_occupation_id = subview.pole_occupation_id + FROM + ( + SELECT service_facturation_id, date_debut, (MAX(ARRAY[nb, pole_id]))[2] AS pole_occupation_id + FROM + ( + SELECT t_lieux_c.service_facturation_id, t_services_facturation_historique.date AS date_debut, t_services_facturation_historique.date_fin, p_mouvements_sejour.pole_id, count(*) AS nb + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux_c ON p_mouvements_sejour.lieu_id = t_lieux_c.oid + JOIN activite.t_services_facturation_historique ON t_lieux_c.service_facturation_id = t_services_facturation_historique.service_facturation_id AND p_mouvements_sejour.date BETWEEN t_services_facturation_historique.date AND t_services_facturation_historique.date_fin + WHERE t_lieux_c.service_facturation_id <> 0 + GROUP BY 1,2,3,4 + ORDER BY 1,2 + ) subview + GROUP BY 1,2 + ) subview + WHERE t_services_facturation_historique.service_facturation_id = subview.service_facturation_id AND + t_services_facturation_historique.date = subview.date_debut AND + t_services_facturation_historique.pole_occupation_id IS DISTINCT FROM subview.pole_occupation_id + ; + + RAISE NOTICE '%' , 'Application des regles. Validation des poles. t_unites_fonctionnelles_historique'; + + UPDATE activite.t_unites_fonctionnelles_historique + SET pole_occupation_id = subview.pole_occupation_id + FROM + ( + SELECT unite_fonctionnelle_id, date_debut, (MAX(ARRAY[nb, pole_id]))[2] AS pole_occupation_id + FROM + ( + SELECT t_lieux_c.unite_fonctionnelle_id, t_unites_fonctionnelles_historique.date AS date_debut, t_unites_fonctionnelles_historique.date_fin, p_mouvements_sejour.pole_id, count(*) AS nb + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux_c ON p_mouvements_sejour.lieu_id = t_lieux_c.oid + JOIN activite.t_unites_fonctionnelles_historique ON t_lieux_c.unite_fonctionnelle_id = t_unites_fonctionnelles_historique.unite_fonctionnelle_id AND p_mouvements_sejour.date BETWEEN t_unites_fonctionnelles_historique.date AND t_unites_fonctionnelles_historique.date_fin + WHERE t_lieux_c.unite_fonctionnelle_id <> 0 + GROUP BY 1,2,3,4 + ORDER BY 1,2 + ) subview + GROUP BY 1,2 + ) subview + WHERE t_unites_fonctionnelles_historique.unite_fonctionnelle_id = subview.unite_fonctionnelle_id AND + t_unites_fonctionnelles_historique.date = subview.date_debut AND + t_unites_fonctionnelles_historique.pole_occupation_id IS DISTINCT FROM subview.pole_occupation_id + ; + + RAISE NOTICE '%' , 'Application des regles. Validation des poles. t_places'; + + UPDATE activite.t_places + SET pole_id = pole_occupation_id + FROM activite.t_places_parents + JOIN activite.t_etages_historique ON t_places_parents.oid = t_etages_historique.etage_id + WHERE t_places.parent_id = t_places_parents.oid AND + parent_type = 'ETA' AND + t_places.date BETWEEN t_etages_historique.date AND t_etages_historique.date_fin + ; + + + ANALYSE activite.t_places + ; + + -- + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'pole', pole_id + FROM activite.p_sejour_lieu + WHERE pole_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'pole') + GROUP BY 2; + + + -- Replication Pole dans PMSI MCO + IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 'p_rss_rum') THEN + + TRUNCATE pmsi.t_pole; + INSERT INTO pmsi.t_pole (oid, code, texte, texte_court, section_id, section_code, section_texte) + SELECT oid, code, texte, texte_court, section_id, section_code, section_texte + FROM base.t_pole + ; + + RAISE NOTICE '%' , 'Application des regles PMSI MCO. Validation des poles. p_rss_rum'; + + DROP TABLE IF EXISTS w_rss_rum_pole; + CREATE TEMP TABLE w_rss_rum_pole AS + SELECT rss_id, no_rum, unite_medicale_id, (MAX(ARRAY[nb, pole_id]))[2] AS pole_id, COUNT(DISTINCT nb) AS nb_nb, count(*) AS nb + FROM + ( + SELECT p_rss_rum.rss_id, p_rss_rum.no_rum, unite_medicale_id, p_mouvements_sejour.pole_id, COUNT(DISTINCT(p_mouvements_sejour.date)) AS nb + FROM pmsi.p_rss_rum + JOIN activite.p_sejour_pmsi ON pmsi.p_rss_rum.rss_id = p_sejour_pmsi.rss_id + JOIN activite.p_mouvements_sejour ON + p_mouvements_sejour.sejour_id = p_sejour_pmsi.sejour_id AND + p_mouvements_sejour.date BETWEEN p_rss_rum.date_entree AND p_rss_rum.date_sortie + GROUP BY 1,2,3,4 + ) subview + GROUP BY 1,2,3 + ; + + + + UPDATE pmsi.p_rss_rum + SET pole_id = w_rss_rum_pole.pole_id + FROM w_rss_rum_pole + WHERE w_rss_rum_pole.rss_id = p_rss_rum.rss_id AND + w_rss_rum_pole.no_rum = p_rss_rum.no_rum AND + p_rss_rum.pole_id IS DISTINCT FROM w_rss_rum_pole.pole_id AND + nb = nb_nb + ; + + UPDATE pmsi.p_rss_rum + SET pole_id = 0 + WHERE pole_id <> 0 AND + rss_id::text||'-'||no_rum::text NOT IN (SELECT rss_id::text||'-'||no_rum::text FROM w_rss_rum_pole WHERE nb = nb_nb) + ; + + UPDATE pmsi.p_rss_rum + SET pole_id = subview.pole_id + FROM + ( + SELECT unite_medicale_id, (MAX(ARRAY[nb, pole_id]))[2] AS pole_id + FROM + ( + SELECT unite_medicale_id, pole_id, count(*) AS nb + FROM w_rss_rum_pole + WHERE pole_id <> 0 AND nb = nb_nb + GROUP BY 1,2 + ) subview + GROUP BY 1 + ) subview + WHERE p_rss_rum.pole_id = 0 AND + p_rss_rum.unite_medicale_id = subview.unite_medicale_id + ; + + ANALYSE pmsi.p_rss_rum + ; + + RAISE NOTICE '%' , 'Application des regles PMSI MCO. Validation des poles. p_rss_actes'; + + UPDATE pmsi.p_rss_actes + SET pole_id = p_rss_rum.pole_id + FROM pmsi.p_rss_rum + WHERE p_rss_rum.rss_id = p_rss_actes.rss_id AND + p_rss_rum.no_rum = p_rss_actes.no_rum AND + p_rss_actes.pole_id IS DISTINCT FROM p_rss_rum.pole_id + ; + + RAISE NOTICE '%' , 'Application des regles PMSI MCO. Validation des poles. p_rss_diagnostics'; + + UPDATE pmsi.p_rss_diagnostics + SET pole_id = p_rss_rum.pole_id + FROM pmsi.p_rss_rum + WHERE p_rss_rum.rss_id = p_rss_diagnostics.rss_id AND + p_rss_rum.no_rum = p_rss_diagnostics.no_rum AND + p_rss_diagnostics.pole_id IS DISTINCT FROM p_rss_rum.pole_id + ; + + RAISE NOTICE '%' , 'Application des regles PMSI MCO. Validation des poles. p_rss'; + + UPDATE pmsi.p_rss + SET pole_id = subview.pole_id + FROM + ( + SELECT p_rss_rum.rss_id, MAX(p_rss_rum.pole_id) AS pole_id + FROM pmsi.p_rss_rum + JOIN pmsi.p_rss ON p_rss_rum.rss_id = p_rss.oid AND + p_rss_rum.unite_medicale_id = p_rss.unite_medicale_principale_id + GROUP BY 1 + HAVING MAX(p_rss.pole_id) IS DISTINCT FROM MAX(p_rss_rum.pole_id) + ) subview + WHERE p_rss.oid = subview.rss_id + ; + + + INSERT INTO pmsi.p_oids (code_table, oid) + SELECT 'pole', pole_id + FROM pmsi.p_rss_rum + WHERE pole_id NOT IN (SELECT oid FROM pmsi.p_oids WHERE code_table = 'pole') + GROUP BY 2; + + END IF; + + IF EXISTS (SELECT * FROM information_schema.columns WHERE table_schema = 'pmsissr' AND table_name = 'p_ssr' AND column_name = 'pole_id') THEN + + UPDATE pmsissr.p_ssr + SET pole_id = subview.pole_id + FROM + ( + SELECT p_ssr.oid, (MAX(ARRAY[p_mouvements_sejour.date::text,p_mouvements_sejour.pole_id::text]))[2]::bigint AS pole_id + FROM activite.p_mouvements_sejour + JOIN activite.p_sejour_pmsi ON p_mouvements_sejour.no_sejour = p_sejour_pmsi.no_sejour + JOIN pmsissr.p_ssr ON p_ssr.oid = ANY(ssr_id_array) + GROUP BY 1 + ) subview + WHERE p_ssr.oid = subview.oid + ; + + END IF; + + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_rubrique_facture_c~tx.yaml b/db/schema2/functions/cti_reorganize_rubrique_facture_c~tx.yaml new file mode 100644 index 0000000..f63161d --- /dev/null +++ b/db/schema2/functions/cti_reorganize_rubrique_facture_c~tx.yaml @@ -0,0 +1,175 @@ +return: text +lang: plpgsql +parameters: + p0: + type: text + name: i_table +src: | + DECLARE + w_table TEXT; + result TEXT; + BEGIN + -- i_table = + -- Table à mettre à jour, si '*NONE', ne met à jour que les codes et libellés + + w_table = i_table; + IF w_table = '' THEN + w_table = 'activite.p_factures_lignes_c'; + END IF; + + IF w_table <> '*NONE' THEN + BEGIN + RAISE NOTICE '%' , 'Creation nouvelles rubriques'; + EXECUTE ' + INSERT INTO activite.t_rubrique_facture_c + (rubrique_facturation_id,rubrique_comptabilisation_id, prestation_id, compte_produit_id) + SELECT + p_factures_lignes_c.rubrique_facturation_id, + p_factures_lignes_c.rubrique_comptabilisation_id, + p_factures_lignes_c.prestation_id, + p_factures_lignes_c.compte_produit_id + FROM ' || w_table || ' p_factures_lignes_c + LEFT JOIN activite.t_rubrique_facture_c ON + (p_factures_lignes_c.rubrique_facturation_id = t_rubrique_facture_c.rubrique_facturation_id AND + p_factures_lignes_c.rubrique_comptabilisation_id = t_rubrique_facture_c.rubrique_comptabilisation_id AND + p_factures_lignes_c.prestation_id = t_rubrique_facture_c.prestation_id AND + p_factures_lignes_c.compte_produit_id = t_rubrique_facture_c.compte_produit_id) + WHERE t_rubrique_facture_c.oid IS NULL + GROUP BY 1,2,3,4 + ORDER BY 1,2,3,4'; + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' ,'1'; + END; + RAISE NOTICE '%' , 'Mise a jour lignes de factures'; + + -- Création colonne + BEGIN + IF NOT EXISTS (SELECT CASE WHEN table_schema NOT LIKE 'pg_temp%' THEN table_schema||'.' ELSE '' END ||table_name + FROM information_schema.columns + WHERE CASE WHEN table_schema NOT LIKE 'pg_temp%' THEN table_schema||'.' ELSE '' END ||table_name ILIKE w_table AND + column_name = 'rubrique_facture_id') THEN + + EXECUTE ' + ALTER TABLE ' || w_table || ' ADD COLUMN rubrique_facture_id bigint; + ALTER TABLE ' || w_table || ' ALTER COLUMN rubrique_facture_id SET DEFAULT 0'; + END IF; + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' ,'2'; + END; + + -- Création index + -- (REINDEX Désactivé) EXECUTE ' REINDEX TABLE ' || w_table; + BEGIN + IF NOT EXISTS (SELECT CASE WHEN schemaname NOT LIKE 'pg_temp%' THEN schemaname||'.' ELSE '' END ||tablename from pg_indexes + WHERE (CASE WHEN schemaname NOT LIKE 'pg_temp%' THEN schemaname||'.' ELSE '' END ||tablename) ILIKE w_table AND + indexdef ILIKE '%rubrique_facturation_id%') THEN + EXECUTE ' + CREATE INDEX i_' || w_table || '_rubrique_facturation_id + ON ' || w_table || ' + USING btree + (rubrique_facturation_id)'; + + END IF; + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' ,'3'; + END; + + -- Mise à jour nouvelle zone + BEGIN + EXECUTE ' + UPDATE ' || w_table || ' p_factures_lignes_c + SET rubrique_facture_id = t_rubrique_facture_c.oid + FROM activite.t_rubrique_facture_c + WHERE + p_factures_lignes_c.rubrique_facturation_id = t_rubrique_facture_c.rubrique_facturation_id AND + p_factures_lignes_c.rubrique_comptabilisation_id = t_rubrique_facture_c.rubrique_comptabilisation_id AND + p_factures_lignes_c.prestation_id = t_rubrique_facture_c.prestation_id AND + p_factures_lignes_c.compte_produit_id = t_rubrique_facture_c.compte_produit_id AND + rubrique_facture_id IS DISTINCT FROM t_rubrique_facture_c.oid'; + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' ,'4'; + END; + + EXECUTE ' + ANALYSE ' || w_table; + END IF; + RAISE NOTICE '%' , 'Mise a jour libelles'; + BEGIN + UPDATE activite.t_rubrique_facture_c SET + rubrique_facturation_code = t_rubriques_facturation.code, + rubrique_facturation_texte = t_rubriques_facturation.texte_court, + rubrique_facturation_section_id = t_rubriques_facturation.section_id, + rubrique_facturation_section_code = t_rubriques_facturation.section_code, + rubrique_facturation_section_texte = t_rubriques_facturation.section_texte + FROM activite.t_rubriques_facturation + WHERE rubrique_facturation_id = t_rubriques_facturation.oid AND + ( + rubrique_facturation_code::text IS DISTINCT FROM t_rubriques_facturation.code::text OR + rubrique_facturation_texte::text IS DISTINCT FROM t_rubriques_facturation.texte_court::text OR + rubrique_facturation_section_id::bigint[] IS DISTINCT FROM t_rubriques_facturation.section_id::bigint[] OR + rubrique_facturation_section_code::text[] IS DISTINCT FROM t_rubriques_facturation.section_code::text[] OR + rubrique_facturation_section_texte::text[] IS DISTINCT FROM t_rubriques_facturation.section_texte::text[] + ); + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' ,'5'; + END; + BEGIN + UPDATE activite.t_rubrique_facture_c SET + rubrique_comptabilisation_code = t_rubriques_facturation.code, + rubrique_comptabilisation_texte = t_rubriques_facturation.texte_court, + rubrique_comptabilisation_section_id = t_rubriques_facturation.section_id, + rubrique_comptabilisation_section_code = t_rubriques_facturation.section_code, + rubrique_comptabilisation_section_texte = t_rubriques_facturation.section_texte + FROM activite.t_rubriques_facturation + WHERE rubrique_comptabilisation_id = t_rubriques_facturation.oid AND + ( + rubrique_comptabilisation_code::text IS DISTINCT FROM t_rubriques_facturation.code::text OR + rubrique_comptabilisation_texte::text IS DISTINCT FROM t_rubriques_facturation.texte_court::text OR + rubrique_comptabilisation_section_id::bigint[] IS DISTINCT FROM t_rubriques_facturation.section_id::bigint[] OR + rubrique_comptabilisation_section_code::text[] IS DISTINCT FROM t_rubriques_facturation.section_code::text[] OR + rubrique_comptabilisation_section_texte::text[] IS DISTINCT FROM t_rubriques_facturation.section_texte::text[] + ); + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' ,'6'; + END; + BEGIN + UPDATE activite.t_rubrique_facture_c SET + prestation_code = t_prestations.code, + prestation_texte = t_prestations.texte_court, + prestation_section_id = t_prestations.section_id, + prestation_section_code = t_prestations.section_code, + prestation_section_texte = t_prestations.section_texte + FROM activite.t_prestations + WHERE prestation_id = t_prestations.oid AND + ( + prestation_code::text IS DISTINCT FROM t_prestations.code::text OR + prestation_texte::text IS DISTINCT FROM t_prestations.texte_court::text OR + prestation_section_id::bigint[] IS DISTINCT FROM t_prestations.section_id::bigint[] OR + prestation_section_code::text[] IS DISTINCT FROM t_prestations.section_code::text[] OR + prestation_section_texte::text[] IS DISTINCT FROM t_prestations.section_texte::text[] + ); + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' ,'7'; + END; + BEGIN + UPDATE activite.t_rubrique_facture_c SET + compte_produit_code = t_compte.code, + compte_produit_texte = t_compte.texte_court, + compte_produit_section_id = t_compte.section_id, + compte_produit_section_code = t_compte.section_code, + compte_produit_section_texte = t_compte.section_texte + FROM activite.t_compte + WHERE compte_produit_id = t_compte.oid AND + ( + compte_produit_code::text IS DISTINCT FROM t_compte.code::text OR + compte_produit_texte::text IS DISTINCT FROM t_compte.texte_court::text OR + compte_produit_section_id::bigint[] IS DISTINCT FROM t_compte.section_id::bigint[] OR + compte_produit_section_code::text[] IS DISTINCT FROM t_compte.section_code::text[] OR + compte_produit_section_texte::text[] IS DISTINCT FROM t_compte.section_texte::text[] + ); + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' ,'8'; + END; + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_sejour_pmsi.yaml b/db/schema2/functions/cti_reorganize_sejour_pmsi.yaml new file mode 100644 index 0000000..a9a8e56 --- /dev/null +++ b/db/schema2/functions/cti_reorganize_sejour_pmsi.yaml @@ -0,0 +1,966 @@ +return: text +lang: plpgsql +src: | + DECLARE + _module_pmsimco TEXT; + _module_pmsissr TEXT; + result TEXT; + BEGIN + IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 'p_rss') THEN + _module_pmsimco = '1'; + ELSE + _module_pmsimco = '0'; + END IF; + IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsissr' AND tablename = 'p_ssr') THEN + _module_pmsissr = '1'; + ELSE + _module_pmsissr = '0'; + END IF; + + IF NOT EXISTS ( + SELECT column_name + FROM information_schema.columns + WHERE table_schema || '.' || table_name = 'activite.p_sejour_pmsi' AND + column_name = 'ssr_id') THEN + ALTER TABLE activite.p_sejour_pmsi ADD COLUMN ssr_id bigint DEFAULT 0; + END IF; + IF NOT EXISTS ( + SELECT column_name + FROM information_schema.columns + WHERE table_schema || '.' || table_name = 'activite.p_sejour_pmsi' AND + column_name = 'ssr_id_array') THEN + ALTER TABLE activite.p_sejour_pmsi ADD COLUMN ssr_id_array bigint[] ; + END IF; + IF NOT EXISTS ( + SELECT column_name + FROM information_schema.columns + WHERE table_schema || '.' || table_name = 'activite.p_sejour_pmsi' AND + column_name = 'en_cours_pmsi') THEN + ALTER TABLE activite.p_sejour_pmsi ADD COLUMN en_cours_pmsi text; + END IF; + IF NOT EXISTS ( + SELECT column_name + FROM information_schema.columns + WHERE table_schema || '.' || table_name = 'activite.p_sejour_pmsi' AND + column_name = 'traitement_epmsi') THEN + ALTER TABLE activite.p_sejour_pmsi ADD COLUMN traitement_epmsi text; + END IF; + + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_rss_rsp') THEN + CREATE TEMP TABLE w_rss_rsp + ( + rss_id bigint, + no_rss bigint, + etat text, + matricule_assure text, + date_naissance date, + sexe text, + no_sejour_pmsi text, + date_entree date, + date_sortie date, + ghm_code text, + prestation_code text, + traitement_epmsi text, + en_cours_pmsi text, + no_sejour_activite text, + no_sejour_activite_reel text + ) ; + CREATE INDEX w_rss_rsp_i1 + ON w_rss_rsp + USING btree + (no_sejour_activite); + CREATE INDEX w_rss_rsp_i2 + ON w_rss_rsp + USING btree + (no_sejour_pmsi); + CREATE INDEX w_rss_rsp_i3 + ON w_rss_rsp + USING btree + (rss_id); + CREATE INDEX w_rss_rsp_i4 + ON w_rss_rsp + USING btree + (no_sejour_activite_reel); + CREATE INDEX w_rss_rsp_i5 + ON w_rss_rsp + USING btree + (traitement_epmsi); + CREATE INDEX w_rss_rsp_i6 + ON w_rss_rsp + USING btree + (en_cours_pmsi); + END IF; + TRUNCATE activite.p_sejour_pmsi; + TRUNCATE w_rss_rsp; + + -- Creation association rss pmsi mco - sejour activite + IF _module_pmsimco = '1' THEN + BEGIN + -- Pour les externes, il faut mettre en accord les dates sejours avec dates des actes + -- (special public rafael) + UPDATE pmsi.p_rss + SET date_entree = subview.date_debut + FROM + ( + SELECT rss_id, p_rss.no_rss, no_sejour_administratif, + MAX(date_entree), + MAX(date_sortie), + MIN(p_rsf_detail.date_debut) AS date_debut, + MAX(p_rsf_detail.date_fin) + FROM pmsi.p_rsf_detail + JOIN pmsi.p_rss ON rss_id = p_rss.oid + JOIN base.t_finess ON t_finess.code = p_rss.finess AND type_etablissement <> '1' + WHERE p_rss.en_cours = '0' AND + p_rss.etat = '' AND + p_rss.ghm_id = 0 + GROUP BY 1,2,3 + HAVING MAX(date_entree) <> MIN(p_rsf_detail.date_debut) AND MIN(p_rsf_detail.date_debut) <= MAX(date_sortie) + ) subview + WHERE p_rss.oid = subview.rss_id + ; + + INSERT INTO w_rss_rsp + SELECT p_rss.oid AS rss_id, + p_rss.no_rss, + p_rss.etat, + p_rsf_total.matricule_assure, + p_rss.date_naissance, + p_rss.sexe, + no_sejour_administratif AS no_sejour_pmsi, + p_rss.date_entree, + p_rss.date_sortie, + t_ghm.code AS ghm_code, + t_prestations.code AS prestation_code, + p_rss.traitement_epmsi, + p_rss.en_cours, + MAX(no_sejour) AS no_sejour_activite, + MAX(no_sejour) AS no_sejour_activite_reel + FROM pmsi.p_rss + LEFT JOIN pmsi.p_rsf_total ON p_rss.oid = p_rsf_total.rss_id + JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid + JOIN pmsi.t_prestations ON p_rss.prestation_principale_id = t_prestations.oid + JOIN activite.p_sejours ON no_sejour_administratif = no_sejour AND + (p_rss.date_entree BETWEEN p_sejours.date_entree AND p_sejours.date_sortie AND p_sejours.date_sortie <> '20991231' OR + p_rss.date_sortie BETWEEN p_sejours.date_entree AND p_sejours.date_sortie AND p_sejours.date_sortie <> '20991231' OR + p_rss.date_entree = p_sejours.date_entree) + WHERE p_rss.etat = '' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13; + + INSERT INTO w_rss_rsp + SELECT p_rss.oid AS rss_id, + p_rss.no_rss, + p_rss.etat, + p_rsf_total.matricule_assure, + p_rss.date_naissance, + p_rss.sexe, + no_sejour_administratif AS no_sejour_pmsi, + p_rss.date_entree, + p_rss.date_sortie, + t_ghm.code AS ghm_code, + t_prestations.code AS prestation_code, + p_rss.traitement_epmsi, + p_rss.en_cours, + MAX(no_sejour) AS no_sejour_activite, + MAX(no_sejour) AS no_sejour_activite_reel + FROM pmsi.p_rss + LEFT JOIN pmsi.p_rsf_total ON p_rss.oid = p_rsf_total.rss_id + JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid + JOIN pmsi.t_prestations ON p_rss.prestation_principale_id = t_prestations.oid + JOIN activite.p_sejours ON (substr(no_sejour_administratif,2,7) = no_sejour AND length(no_sejour) = 7) AND + (p_rss.date_entree BETWEEN p_sejours.date_entree AND p_sejours.date_sortie AND p_sejours.date_sortie <> '20991231' OR + p_rss.date_sortie BETWEEN p_sejours.date_entree AND p_sejours.date_sortie AND p_sejours.date_sortie <> '20991231' OR + p_rss.date_entree = p_sejours.date_entree) + WHERE p_rss.etat = '' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13; + + + INSERT INTO w_rss_rsp + SELECT p_rss.oid AS rss_id, + p_rss.no_rss, + p_rss.etat, + p_rsf_total.matricule_assure, + p_rss.date_naissance, + p_rss.sexe, + no_sejour_administratif AS no_sejour_pmsi, + p_rss.date_entree, + p_rss.date_sortie, + t_ghm.code AS ghm_code, + t_prestations.code AS prestation_code, + p_rss.traitement_epmsi, + p_rss.en_cours, + NULL AS no_sejour_activite, + NULL AS no_sejour_activite_reel + FROM pmsi.p_rss + LEFT JOIN pmsi.p_rsf_total ON p_rss.oid = p_rsf_total.rss_id + JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid + JOIN pmsi.t_prestations ON p_rss.prestation_principale_id = t_prestations.oid + WHERE p_rss.etat = '' AND p_rss.oid NOT IN (SELECT rss_id FROM w_rss_rsp) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13; + + -- Special CERNER avec les externes avec sejours multiples + UPDATE w_rss_rsp SET + no_sejour_activite = subview.no_sejour, + no_sejour_activite_reel = subview.no_sejour + FROM + ( + SELECT w_rss_rsp.rss_id, count(distinct p_sejours.no_sejour) , max(p_sejours.no_sejour) AS no_sejour + FROM w_rss_rsp + JOIN activite.p_sejours ON no_sejour_pmsi = split_part(p_sejours.no_sejour,'.',1) + WHERE no_sejour_activite is null AND + date(w_rss_rsp.date_entree) = date(p_sejours.date_entree) AND + date(w_rss_rsp.date_sortie) = date(p_sejours.date_sortie) AND + p_sejours.no_sejour NOT IN (SELECT no_sejour_activite FROM w_rss_rsp WHERE no_sejour_activite IS NOT NULL) + GROUP BY 1 + HAVING count(distinct p_sejours.no_sejour) = 1 + ) subview + WHERE w_rss_rsp.rss_id = subview.rss_id + ; + + + UPDATE w_rss_rsp SET + no_sejour_activite = subview.no_sejour, + no_sejour_activite_reel = subview.no_sejour + FROM + ( + SELECT w_rss_rsp.rss_id, count(distinct p_sejours.no_sejour) , max(p_sejours.no_sejour) AS no_sejour + FROM w_rss_rsp + JOIN activite.p_sejours ON no_sejour_pmsi = split_part(p_sejours.no_sejour,'.',1) + WHERE no_sejour_activite is null AND + date(w_rss_rsp.date_sortie) = date(p_sejours.date_sortie) AND + p_sejours.no_sejour NOT IN (SELECT no_sejour_activite FROM w_rss_rsp WHERE no_sejour_activite IS NOT NULL) + GROUP BY 1 + HAVING count(distinct p_sejours.no_sejour) = 1 + ) subview + WHERE w_rss_rsp.rss_id = subview.rss_id + ; + UPDATE w_rss_rsp SET + no_sejour_activite = subview.no_sejour, + no_sejour_activite_reel = subview.no_sejour + FROM + ( + SELECT w_rss_rsp.rss_id, count(distinct p_sejours.no_sejour) , max(p_sejours.no_sejour) AS no_sejour + FROM w_rss_rsp + JOIN activite.p_sejours ON no_sejour_pmsi = split_part(p_sejours.no_sejour,'.',1) + WHERE no_sejour_activite is null AND + date(p_sejours.date_entree) BETWEEN date(w_rss_rsp.date_entree) AND date(w_rss_rsp.date_sortie) AND + date(p_sejours.date_sortie) BETWEEN date(w_rss_rsp.date_entree) AND date(w_rss_rsp.date_sortie) AND + p_sejours.no_sejour NOT IN (SELECT no_sejour_activite FROM w_rss_rsp WHERE no_sejour_activite IS NOT NULL) + GROUP BY 1 + HAVING count(distinct p_sejours.no_sejour) = 1 + ) subview + WHERE w_rss_rsp.rss_id = subview.rss_id + ; + UPDATE w_rss_rsp SET + no_sejour_activite = subview.no_sejour, + no_sejour_activite_reel = subview.no_sejour + FROM + ( + SELECT w_rss_rsp.rss_id, count(distinct p_sejours.no_sejour) , max(p_sejours.no_sejour) AS no_sejour + FROM w_rss_rsp + JOIN activite.p_sejours ON no_sejour_pmsi = split_part(p_sejours.no_sejour,'.',1) + WHERE no_sejour_activite is null AND + date(p_sejours.date_sortie) BETWEEN date(w_rss_rsp.date_entree) AND date(w_rss_rsp.date_sortie) AND + p_sejours.no_sejour NOT IN (SELECT no_sejour_activite FROM w_rss_rsp WHERE no_sejour_activite IS NOT NULL) + GROUP BY 1 + ) subview + WHERE w_rss_rsp.rss_id = subview.rss_id + ; + DROP TABLE IF EXISTS w_doublons; + CREATE TEMP TABLE w_doublons AS + SELECT date_entree, date_sortie, date_naissance, sexe + FROM w_rss_rsp + GROUP BY 1,2,3,4 + HAVING count(*) > 1; + + UPDATE w_rss_rsp + SET no_sejour_activite = subview.no_sejour, no_sejour_activite_reel = subview.no_sejour_reel + FROM + (SELECT w_rss_rsp.rss_id, + MAX(CASE WHEN provider_id = 0 OR (provider_id = 2 AND (code is null OR code = 'LOGHOS')) THEN no_sejour ELSE substr(no_sejour,4) END) AS no_sejour, + MAX(no_sejour) AS no_sejour_reel + FROM w_rss_rsp, activite.p_sejours LEFT JOIN activite.t_providers ON provider_id = t_providers.oid + WHERE no_sejour_activite IS NULL AND + p_sejours.date_sortie = w_rss_rsp.date_sortie AND + p_sejours.no_sejour LIKE '%' || no_sejour_pmsi + GROUP BY 1 + HAVING count(DISTINCT no_sejour) = 1) subview + WHERE w_rss_rsp.rss_id = subview.rss_id; + + WITH fullSejours AS ( + SELECT + p_sejours.no_sejour, + p_sejours.date_sortie, + p_sejours.date_entree, + p_patients.date_naissance, + p_patients.code_sexe, + t_providers.code, + p_sejours.provider_id + FROM activite.p_sejours + JOIN activite.p_patients ON p_sejours.no_patient = p_patients.no_patient + LEFT JOIN activite.t_providers ON provider_id = t_providers.oid + ) + UPDATE w_rss_rsp + SET no_sejour_activite = subview.no_sejour, no_sejour_activite_reel = subview.no_sejour_reel + FROM + (SELECT w_rss_rsp.rss_id, no_sejour_pmsi, + MAX(CASE WHEN provider_id = 0 OR (provider_id = 2 AND (code is null OR code = 'LOGHOS')) THEN no_sejour ELSE substr(no_sejour,4) END) AS no_sejour, + MAX(no_sejour) AS no_sejour_reel + FROM w_rss_rsp + LEFT JOIN w_doublons ON + w_doublons.date_entree = w_rss_rsp.date_entree AND + w_doublons.date_sortie = w_rss_rsp.date_sortie AND + w_doublons.date_naissance = w_rss_rsp.date_naissance AND + w_doublons.sexe = w_rss_rsp.sexe + JOIN fullSejours ON + fullSejours.date_entree = w_rss_rsp.date_entree AND + fullSejours.date_sortie = w_rss_rsp.date_sortie AND + fullSejours.date_naissance = w_rss_rsp.date_naissance AND + fullSejours.code_sexe = w_rss_rsp.sexe + WHERE no_sejour_activite IS NULL + AND w_doublons IS NULL + GROUP BY 1,2 + HAVING count(DISTINCT no_sejour) = 1) subview + WHERE w_rss_rsp.rss_id = subview.rss_id; + + UPDATE w_rss_rsp + SET no_sejour_activite = subview.no_sejour_activite, no_sejour_activite_reel = subview.no_sejour_activite_reel + FROM + (SELECT w_rss_rsp.rss_id, + MAX(w_rss_rsp_mere.no_sejour_activite) AS no_sejour_activite, + MAX(w_rss_rsp_mere.no_sejour_activite_reel) AS no_sejour_activite_reel + FROM w_rss_rsp + JOIN w_rss_rsp w_rss_rsp_mere ON w_rss_rsp.matricule_assure = w_rss_rsp_mere.matricule_assure AND + w_rss_rsp.rss_id <> w_rss_rsp_mere.rss_id + WHERE w_rss_rsp.matricule_assure <> '' AND + (substr(w_rss_rsp.ghm_code,1,2) = '15' OR w_rss_rsp.ghm_code IN ('24Z23Z', '24Z24Z')) AND + (substr(w_rss_rsp_mere.ghm_code,1,2) = '14' OR w_rss_rsp_mere.ghm_code IN ('24Z20Z')) AND + w_rss_rsp.no_sejour_activite IS NULL AND + w_rss_rsp.date_entree BETWEEN w_rss_rsp_mere.date_entree AND w_rss_rsp_mere.date_sortie + GROUP BY 1 + HAVING count(DISTINCT w_rss_rsp_mere.no_sejour_activite) = 1) subview + WHERE w_rss_rsp.rss_id = subview.rss_id; + + UPDATE w_rss_rsp + SET no_sejour_activite = subviewa.no_sejour, no_sejour_activite_reel = subviewa.no_sejour_reel + FROM + (SELECT prestation_code, date_sortie, MAX(rss_id) AS rss_id + FROM w_rss_rsp + WHERE no_sejour_activite is null + GROUP BY 1,2 + HAVING count(*) = 1) subviewp, + (SELECT t_prestations.code AS prestation_code, + p_sejours.date_sortie, + MAX(CASE WHEN p_sejours.provider_id = 0 OR (p_sejours.provider_id = 2 AND (t_providers.code is null OR t_providers.code = 'LOGHOS')) THEN p_sejours.no_sejour ELSE substr(p_sejours.no_sejour,4) END) AS no_sejour, + MAX(p_sejours.no_sejour) AS no_sejour_reel + FROM activite.p_sejours LEFT JOIN activite.t_providers ON provider_id = t_providers.oid + JOIN activite.p_factures ON p_factures.no_sejour = p_sejours.no_sejour AND p_factures.no_facture_reference = p_factures.no_facture + JOIN activite.p_factures_lignes_c ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + LEFT JOIN w_rss_rsp ON p_sejours.no_sejour = no_sejour_activite_reel + WHERE p_sejours.code_sorti = '1' AND + p_factures.date_facture <> '20991231' AND + w_rss_rsp.rss_id IS NULL AND + t_prestations.code IN ('SE1', 'SE2', 'SE3', 'SE4', 'FFM', 'ATU', 'FPU', 'GHS') + GROUP BY 1,2 + HAVING count(DISTINCT p_sejours.no_sejour) = 1 + ORDER BY 1,2) subviewa + WHERE subviewa.prestation_code = subviewp.prestation_code AND + subviewa.date_sortie = subviewp.date_sortie AND + w_rss_rsp.rss_id = subviewp.rss_id; + UPDATE w_rss_rsp + SET no_sejour_activite = subview.no_sejour + FROM + (SELECT rss_id, MAX(no_sejour) AS no_sejour + FROM w_rss_rsp, activite.p_factures + WHERE no_sejour_activite IS NULL AND + p_factures.date_fin = w_rss_rsp.date_sortie AND + p_factures.no_facture LIKE '%' || no_sejour_pmsi + GROUP BY 1 + HAVING count(DISTINCT no_sejour) = 1 + ) subview + WHERE w_rss_rsp.rss_id = subview.rss_id; + + + UPDATE w_rss_rsp + SET no_sejour_activite = subview.no_sejour, no_sejour_activite_reel = subview.no_sejour + FROM + ( + SELECT w_rss_rsp.rss_id, count(distinct p_sejours.no_sejour) , max(p_sejours.no_sejour) AS no_sejour + FROM w_rss_rsp + JOIN activite.p_sejours ON no_sejour_pmsi = p_sejours.no_sejour + JOIN activite.p_patients On p_patients.no_patient = p_sejours.no_patient + WHERE no_sejour_activite is null AND + date_trunc('year',p_sejours.date_sortie) = date_trunc('year',w_rss_rsp.date_sortie) AND + w_rss_rsp.ghm_code LIKE '28%' AND + p_patients.date_naissance = w_rss_rsp.date_naissance + GROUP BY 1 + ) subview + WHERE w_rss_rsp.rss_id = subview.rss_id + ; + + UPDATE w_rss_rsp + SET no_sejour_activite = subview.no_sejour, no_sejour_activite_reel = subview.no_sejour + FROM + ( + SELECT w_rss_rsp.rss_id, + MAX(no_sejour) AS no_sejour, + MAX(no_sejour) AS no_sejour_reel + FROM w_rss_rsp, activite.p_sejours + WHERE no_sejour_activite IS NULL AND + date_trunc('month',p_sejours.date_sortie) = date_trunc('month',w_rss_rsp.date_sortie) AND + p_sejours.no_sejour LIKE '%' || no_sejour_pmsi + GROUP BY 1 + HAVING count(DISTINCT no_sejour) = 1 + ) subview + WHERE w_rss_rsp.rss_id = subview.rss_id + ; + + UPDATE pmsi.p_rss + SET no_sejour_administratif = w_rss_rsp.no_sejour_activite + FROM w_rss_rsp + WHERE w_rss_rsp.rss_id = p_rss.oid AND + no_sejour_administratif IS DISTINCT FROM w_rss_rsp.no_sejour_activite AND + w_rss_rsp.no_sejour_activite IS NOT NULL; + + + + INSERT INTO activite.p_sejour_pmsi ( + sejour_id, + no_sejour, + pmsi_type, + rss_id, + no_rss, + traitement_epmsi, + en_cours_pmsi + ) + SELECT p_sejours.oid AS sejour_id, + p_sejours.no_sejour AS no_sejour, + 'MCO' AS pmsi_type, + w_rss_rsp.rss_id, + w_rss_rsp.no_rss, + w_rss_rsp.traitement_epmsi, + w_rss_rsp.en_cours_pmsi + FROM activite.p_sejours + JOIN w_rss_rsp ON p_sejours.no_sejour = no_sejour_activite_reel + WHERE w_rss_rsp.no_sejour_activite_reel IS NOT NULL; + --EXCEPTION + --WHEN others THEN RAISE NOTICE 'Erreur %' , 'PMSI MCO'; + END; + END IF; + -- Sejours activite sans PMSi + BEGIN + INSERT INTO activite.p_sejour_pmsi ( + sejour_id, + no_sejour, + pmsi_type, + rss_id, + no_rss + ) + SELECT p_sejours.oid AS sejour_id, + p_sejours.no_sejour AS no_sejour, + '' AS pmsi_type, + 0, + 0 + FROM activite.p_sejours + WHERE no_sejour NOT IN (SELECT no_sejour FROM activite.p_sejour_pmsi); + + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' , 'FIN'; + END; + -- Mise e jour des medecins PMSI MCO / Activite + IF _module_pmsimco = '1' THEN + BEGIN + INSERT INTO activite.t_divers (code, texte, valeur, description, valeur2) + SELECT + 'PMSIMEDECIN', + 'Replication medecins Activite/PMSI', + '0', + '0=Pas de replication, 1=Remplacemet medecin PMSI par medecin Activite', + '' + WHERE 'PMSIMEDECIN' NOT IN (SELECT code FROM activite.t_divers); + IF EXISTS (SELECT * FROM activite.t_divers WHERE code = 'PMSIMEDECIN' AND valeur = '1') THEN + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_dif') THEN + CREATE TEMP TABLE w_dif ( + rss_id bigint, + no_rss bigint, + pmsi_medecin_id bigint, + pmsi_medecin_pmsi_id bigint, + no_sejour text, + adm_medecin_id bigint + ); + END IF; + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_adm_medecin') THEN + CREATE TEMP TABLE w_adm_medecin ( + adm_medecin_id bigint + ); + END IF; + IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_adm_medecin_pmsi') THEN + CREATE TEMP TABLE w_adm_medecin_pmsi ( + adm_medecin_id bigint, + pmsi_oid bigint + ); + END IF; + TRUNCATE w_dif; + TRUNCATE w_adm_medecin; + TRUNCATE w_adm_medecin_pmsi; + + INSERT INTO w_dif + SELECT + p_rss.oid AS rss_id, + p_rss.no_rss, + t_medecins_pmsi.medecin_id AS pmsi_medecin_id, + t_medecins_pmsi.oid AS pmsi_medecin_pmsi_id, + p_sejours.no_sejour, + t_medecins_administratifs.medecin_id AS adm_medecin_id + FROM activite.p_sejour_pmsi + JOIN activite.p_sejours ON p_sejour_pmsi.no_sejour = p_sejours.no_sejour + JOIN pmsi.p_rss ON p_sejour_pmsi.rss_id = p_rss.oid + LEFT JOIN activite.t_medecins_administratifs ON medecin_sejour_id = t_medecins_administratifs.oid + LEFT JOIN pmsi.t_medecins t_medecins_pmsi ON p_rss.medecin_rss_id = t_medecins_pmsi.oid + WHERE pmsi_type = 'MCO' AND + t_medecins_administratifs.medecin_id <> 0 AND + t_medecins_pmsi.medecin_id IS DISTINCT FROM t_medecins_administratifs.medecin_id; + INSERT INTO w_adm_medecin + SELECT adm_medecin_id + FROM w_dif + GROUP BY 1; + INSERT INTO w_adm_medecin_pmsi + SELECT adm_medecin_id, (MAX(Array[date_sortie::text,pmsi_oid::text]))[2]::bigint AS pmsi_oid + FROM ( + SELECT adm_medecin_id, t_medecins_pmsi.oid AS pmsi_oid, MAX(COALESCE(date_sortie,'00010101')) AS date_sortie + FROM w_adm_medecin + JOIN pmsi.t_medecins t_medecins_pmsi ON adm_medecin_id = t_medecins_pmsi.medecin_id + JOIN pmsi.p_rss ON t_medecins_pmsi.oid = p_rss.medecin_rss_id + GROUP BY 1,2 + ORDER BY 1,2,3 DESC + ) subview + GROUP BY 1; + INSERT INTO w_adm_medecin_pmsi + SELECT adm_medecin_id, (MAX(Array[date_sortie::text,pmsi_oid::text]))[2]::bigint AS pmsi_oid + FROM ( + SELECT adm_medecin_id, t_medecins_pmsi.oid AS pmsi_oid, MAX(COALESCE(date_acte,'00010101')) AS date_sortie + FROM w_adm_medecin + JOIN pmsi.t_medecins t_medecins_pmsi ON adm_medecin_id = t_medecins_pmsi.medecin_id + JOIN pmsi.p_rss_actes ON t_medecins_pmsi.oid = p_rss_actes.medecin_id + WHERE adm_medecin_id NOT IN (SELECT adm_medecin_id FROM w_adm_medecin_pmsi) + GROUP BY 1,2 + ORDER BY 1,2,3 DESC + ) subview + GROUP BY 1; + INSERT INTO pmsi.t_medecins( + code, + nom, + prenom, + specialite_id, + no_adeli, + statut, + medecin_reference_id, + specialite_interne_id, + identifiant_annuaire, + medecin_id) + SELECT + t_medecins.code, + t_medecins.nom, + t_medecins.prenom, + 0, + '', + '', + 0, + 0, + '', + adm_medecin_id + FROM w_adm_medecin + JOIN base.t_medecins ON adm_medecin_id = t_medecins.oid + WHERE adm_medecin_id NOT IN (SELECT adm_medecin_id FROM w_adm_medecin_pmsi) AND + code NOT IN (SELECT code FROM pmsi.t_medecins); + INSERT INTO w_adm_medecin_pmsi + SELECT adm_medecin_id, MAX(pmsi_oid) AS pmsi_oid + FROM ( + SELECT adm_medecin_id, t_medecins_pmsi.oid AS pmsi_oid + FROM w_adm_medecin + JOIN pmsi.t_medecins t_medecins_pmsi ON adm_medecin_id = t_medecins_pmsi.medecin_id + WHERE adm_medecin_id NOT IN (SELECT adm_medecin_id FROM w_adm_medecin_pmsi) + GROUP BY 1,2 + ) subview + GROUP BY 1; + PERFORM pmsi.cti_reorganize_medecins_c(); + UPDATE pmsi.p_rss + SET medecin_rss_id = pmsi_oid + FROM w_dif + JOIN w_adm_medecin_pmsi ON w_dif.adm_medecin_id = w_adm_medecin_pmsi.adm_medecin_id + WHERE p_rss.oid = w_dif.rss_id AND pmsi_medecin_pmsi_id = medecin_rss_id; + END IF; + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' , 'FIN'; + END; + END IF; + + -- Mise e jour des associations provenant du SSR + IF _module_pmsissr = '1' THEN + + -- Tables dans base + INSERT INTO base.t_gn (code, texte) + SELECT code, texte + FROM pmsissr.t_gn + WHERE oid <> 0 AND code NOT IN (SELECT code FROM base.t_gn) + ; + + INSERT INTO base.t_cm (code, texte) + SELECT code, texte + FROM pmsissr.t_cm + WHERE oid <> 0 AND code NOT IN (SELECT code FROM base.t_cm) + ; + + INSERT INTO base.t_rgme (code, texte) + SELECT code, texte + FROM pmsissr.t_rgme + WHERE oid <> 0 AND code NOT IN (SELECT code FROM base.t_rgme) + ; + + INSERT INTO base.t_gme (code, texte) + SELECT code, texte + FROM pmsissr.t_gme + WHERE oid <> 0 AND code NOT IN (SELECT code FROM base.t_gme) + ; + + UPDATE base.t_gme t_gme_base + SET gn_id = t_gn_base.oid + FROm pmsissr.t_gme + JOIN pmsissr.t_gn ON t_gme.gn_id = t_gn.oid + JOIN base.t_gn t_gn_base ON t_gn_base.code = t_gn.code + WHERE t_gme_base.code = t_gme.code AND + t_gme_base.gn_id IS DISTINCT FROM t_gn_base.oid + ; + + UPDATE base.t_gme t_gme_base + SET cm_id = t_cm_base.oid + FROm pmsissr.t_gme + JOIN pmsissr.t_cm ON t_gme.cm_id = t_cm.oid + JOIN base.t_cm t_cm_base ON t_cm_base.code = t_cm.code + WHERE t_gme_base.code = t_gme.code AND + t_gme_base.cm_id IS DISTINCT FROM t_cm_base.oid + ; + + UPDATE base.t_gme t_gme_base + SET rgme_id = t_rgme_base.oid + FROm pmsissr.t_gme + JOIN pmsissr.t_rgme ON t_gme.rgme_id = t_rgme.oid + JOIN base.t_rgme t_rgme_base ON t_rgme_base.code = t_rgme.code + WHERE t_gme_base.code = t_gme.code AND + t_gme_base.rgme_id IS DISTINCT FROM t_rgme_base.oid + ; + + DROP TABLE IF EXISTS w_ssr; + CREATE TEMP TABLE w_ssr AS + SELECT oid, + trim(num_admin_sejour ) AS num_admin_sejour , + CASE + WHEN substr(p_ssr.num_admin_sejour,1,1) = '0' THEN ltrim(trim(p_ssr.num_admin_sejour),'0') + WHEN substr(p_ssr.num_admin_sejour,1,1) BETWEEN 'A' AND 'Z' THEN trim(substr(p_ssr.num_admin_sejour,2)) + ELSE NULL END AS num_admin_sejour_2, + p_ssr.date_sortie, + ''::text AS no_sejour, + 0::bigint AS sejour_id + FROM pmsissr.p_ssr; + + ANALYSE w_ssr + ; + + CREATE INDEX w_ssr_i1 + ON w_ssr + USING btree + (num_admin_sejour); + + CREATE INDEX w_ssr_i2 + ON w_ssr + USING btree + (num_admin_sejour_2); + + DROP TABLE IF EXISTS w_sejours; + CREATE TEMP TABLE w_sejours AS + SELECT oid, + trim(no_sejour) AS no_sejour, + trim(no_sejour) AS no_sejour_secondaire, + trim(CASE WHEN substr(p_sejours.no_sejour,1) BETWEEN 'A' AND 'Z' THEN substr(no_sejour,2) ELSE NULL END) AS no_sejour_hm, + trim(CASE WHEN substr(p_sejours.no_sejour,1) BETWEEN 'A' AND 'Z' AND substr(no_sejour,3,1) = '_' THEN substr(no_sejour,4) ELSE NULL END) AS no_sejour_anterieur, + p_sejours.date_sortie, + NULL::text[] AS no_sejours_dependants + FROM activite.p_sejours; + + ANALYSE w_sejours + ; + + CREATE INDEX w_sejours_i1 + ON w_sejours + USING btree + (no_sejour); + + INSERT INTO w_sejours + SELECT w_sejours.oid, + w_sejours.no_sejour, + split_part(no_facture,'.',1) AS no_sejour_secondaire, + NULL::text AS no_sejour_hm, + trim(CASE WHEN substr(split_part(no_facture,'.',1),1) BETWEEN 'A' AND 'Z' AND substr(split_part(no_facture,'.',1),3,1) = '_' THEN substr(split_part(no_facture,'.',1),4) ELSE NULL END) AS no_sejour_anterieur + FROM w_sejours + JOIN activite.p_factures ON p_factures.no_sejour = w_sejours.no_sejour + WHERE no_facture LIKE '%.00' AND + split_part(no_facture,'.',1) <> w_sejours.no_sejour AND + trim(CASE WHEN substr(split_part(no_facture,'.',1),1) BETWEEN 'A' AND 'Z' AND substr(split_part(no_facture,'.',1),3,1) = '_' THEN substr(split_part(no_facture,'.',1),4) ELSE NULL END) <> w_sejours.no_sejour + ; + + + UPDATE w_ssr + SET no_sejour = w_sejours.no_sejour, sejour_id = w_sejours.oid + FROM w_sejours + WHERE + w_sejours.no_sejour_secondaire = w_ssr.num_admin_sejour OR + w_sejours.no_sejour_hm = w_ssr.num_admin_sejour OR + w_sejours.no_sejour_anterieur = w_ssr.num_admin_sejour + ; + + + + UPDATE w_ssr + SET no_sejour = w_sejours.no_sejour, sejour_id = w_sejours.oid + FROM w_sejours + WHERE + w_sejours.no_sejour_secondaire = w_ssr.num_admin_sejour_2 OR + w_sejours.no_sejour_hm = w_ssr.num_admin_sejour_2 OR + w_sejours.no_sejour_anterieur = w_ssr.num_admin_sejour_2 + ; + + UPDATE activite.p_sejour_pmsi SET + ssr_id = subview.ssr_id, + ssr_id_array = subview.ssr_id_array, + pmsi_type = 'SSR' + FROM + ( + SELECT no_sejour, + MAX(oid) AS ssr_id, + base.cti_array_accum(oid) As ssr_id_array , + count(*) + FROM w_ssr + GROUP BY 1 + ) subview + WHERE p_sejour_pmsi.no_sejour = subview.no_sejour + ; + + + -- Récupération des gme provenant des lots + UPDATE activite.p_sejours + SET gme_id = subview.gme_id + FROM + ( + SELECT p_sejour_pmsi.no_sejour, t_gme_base.oid AS gme_id + FROM pmsissr.p_ssr + JOIN activite.p_sejour_pmsi ON p_sejour_pmsi.ssr_id = p_ssr.oid AND p_ssr.oid <> 0 + JOIN pmsissr.t_gme On gme_id = t_gme.oid + JOIN base.t_gme t_gme_base ON t_gme.code = t_gme_base.code + ) subview + WHERE p_sejours.no_sejour = subview.no_sejour AND + p_sejours.gme_id IS DISTINCT FROM subview.gme_id + ; + + -- Récupération des gme provenant du fil de l'eau + -- On prend le GME de la dernière semaine des séjours + UPDATE activite.p_sejours + SET gme_id = subview.gme_id + FROM + ( + SELECT ssr_id, p_rhs_fil_eau.gme_id,p_ssr_fil_eau.num_admin_sejour, ROW_NUMBER() OVER (PARTITION BY ssr_id ORDER BY rang DESC) AS rn + FROM pmsissr.p_rhs_fil_eau + JOIN pmsissr.p_ssr_fil_eau ON ssr_id = p_ssr_fil_eau.oid + LEFT JOIN pmsissr.p_ssr ON p_ssr_fil_eau.num_admin_sejour = p_ssr.num_admin_sejour + WHERE p_ssr.num_admin_sejour IS NULL + ) subview + WHERE subview.num_admin_sejour = p_sejours.no_sejour + AND subview.rn = 1 + AND p_sejours.gme_id IS DISTINCT FROM subview.gme_id + ; + + -- Hors SSR. Divers + UPDATE activite.p_sejours + SET gme_id = -9990 + FROM activite.t_lieux + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + JOIN activite.t_gme_c ON t_gme_c.gme_id = -9990 + WHERE lieu_sortie_id = t_lieux.oid AND + p_sejours.gme_id = 0 AND + type_t2a NOT IN ('1','2') + ; + + -- Hors SSR. MCO + UPDATE activite.p_sejours + SET gme_id = -9991 + FROM activite.t_lieux + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + JOIN activite.t_gme_c ON t_gme_c.gme_id = -9991 + WHERE lieu_sortie_id = t_lieux.oid AND + p_sejours.gme_id = 0 AND + type_t2a = '1' + ; + + -- Champ SSR. Présents + UPDATE activite.p_sejours + SET gme_id = -9980 + FROM activite.t_lieux + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + JOIN activite.t_gme_c ON t_gme_c.gme_id = -9980 + WHERE lieu_sortie_id = t_lieux.oid AND + p_sejours.gme_id = 0 AND + type_t2a = '2' AND + code_sorti <> '1' + ; + + -- Champ SSR. Sortis non groupés + UPDATE activite.p_sejours + SET gme_id = -9981 + FROM activite.t_lieux + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + JOIN activite.t_gme_c ON t_gme_c.gme_id = -9981 + WHERE lieu_sortie_id = t_lieux.oid AND + p_sejours.gme_id = 0 AND + type_t2a = '2' AND + code_sorti = '1' + ; + + -- Calcul du délai de groupage + UPDATE activite.p_sejours + SET delai_groupage = date_groupage - date_sortie + WHERE code_sorti = '1' AND + date_groupage > date_sortie AND + date_groupage < '2099-12-31' AND + gme_id > 0 + ; + END IF; + + -- Mise e jour des modes entree sortie selon pmsi ssr + IF _module_pmsissr = '1' THEN + UPDATE activite.p_sejours SET + mode_entree = p_ssr.mode_entree, + provenance = CASE WHEN p_ssr.provenance <> '' THEN p_ssr.provenance ELSE '0' END + FROM pmsissr.p_ssr + WHERE p_sejours.no_sejour = p_ssr.num_admin_sejour AND + p_ssr.mode_entree <> '' AND + ( + p_sejours.mode_entree IS DISTINCT FROM p_ssr.mode_entree OR + p_sejours.provenance IS DISTINCT FROM CASE WHEN p_ssr.provenance <> '' THEN p_ssr.provenance ELSE '0' END + ) + ; + + UPDATE activite.p_sejours SET + mode_sortie = p_ssr.mode_sortie, + destination = CASE WHEN p_ssr.destination <> '' THEN p_ssr.destination ELSE '0' END + FROM pmsissr.p_ssr + WHERE p_sejours.no_sejour = p_ssr.num_admin_sejour AND + p_sejours.code_sorti = '1' AND + p_ssr.mode_sortie <> '' AND + ( + p_sejours.mode_sortie IS DISTINCT FROM p_ssr.mode_sortie OR + p_sejours.destination IS DISTINCT FROM CASE WHEN p_ssr.destination <> '' THEN p_ssr.destination ELSE '0' END + ) + ; + + -- Mise à jour Nom dans PMSI SSR (si pas fait par import SSR + UPDATE pmsissr.p_patients SET + nom = subview.nom, + prenom = subview.prenom, + num_patient = subview.no_patient + FROM + ( + SELECT p_patients.oid, p_patients_a.nom, p_patients_a.prenom, p_patients_a.nom_naissance, base.cti_to_number(p_patients_a.no_patient) AS no_patient + FROM pmsissr.p_patients + JOIN pmsissr.p_ssr ON p_ssr.patient_id = p_patients.oid + JOIN activite.p_sejour_pmsi ON p_ssr.oid = p_sejour_pmsi.ssr_id + JOIN activite.p_sejours ON p_sejour_pmsi.sejour_id = p_sejours.oid + JOIN activite.p_patients p_patients_a ON p_patients_a.no_patient = p_sejours.no_patient + WHERE p_patients.date_naissance = p_patients_a.date_naissance AND + p_patients.nom ilike '%non rens%' + ) subview + WHERE p_patients.oid = subview.oid + ; + + END IF ; + + -- Mise e jour matricule assure depuis pmsi mco + IF _module_pmsimco = '1' THEN + DROP TABLE IF EXISTS w_sejour_assurance; + CREATE TEMP TABLE w_sejour_assurance AS + SELECT + p_sejours.oid AS sejour_id, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + MAX(p_rsf_total.matricule_assure) AS matricule_assure + FROM activite.p_sejours + JOIN activite.p_sejour_pmsi ON p_sejours.oid = p_sejour_pmsi.sejour_id + JOIN pmsi.p_rsf_total ON p_sejour_pmsi.rss_id = p_rsf_total.rss_id + WHERE p_rsf_total.matricule_assure <> '' AND + substr(p_rsf_total.matricule_assure,1,5) <> '00000' AND + length(p_rsf_total.matricule_assure) = 13 + GROUP BY 1,2,3,4,5 + ; + + UPDATE activite.p_sejours_assurance + SET matricule_1 = w_sejour_assurance.matricule_assure + FROM w_sejour_assurance + WHERE w_sejour_assurance.sejour_id = p_sejours_assurance.sejour_id AND + w_sejour_assurance.matricule_assure IS DISTINCT FROM p_sejours_assurance.matricule_1 AND + w_sejour_assurance.matricule_assure IS DISTINCT FROM substr(p_sejours_assurance.matricule_1,1,13) AND + p_sejours_assurance.matricule_1 = '' + ; + + + INSERT INTO activite.p_sejours_assurance( + sejour_id, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + matricule_1, matricule_2, matricule_22) + SELECT + sejour_id, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + matricule_assure, '', '' + FROM w_sejour_assurance + WHERE sejour_id NOT IN (SELECT sejour_id FROM activite.p_sejours_assurance) + ; + + END IF; + + -- Mise e jour matricule assure depuis pmsi ssr + IF _module_pmsissr = '1' THEN + DROP TABLE IF EXISTS w_sejour_assurance; + CREATE TEMP TABLE w_sejour_assurance AS + SELECT + p_sejours.oid AS sejour_id, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + MAX(to_char(p_ssr.numero_matricule,'FM0000000000000')) AS matricule_assure + FROM activite.p_sejours + JOIN activite.p_sejour_pmsi ON p_sejours.oid = p_sejour_pmsi.sejour_id + JOIN pmsissr.p_ssr ON p_sejour_pmsi.ssr_id = p_ssr.oid + WHERE p_ssr.numero_matricule <> 0 + GROUP BY 1,2,3,4,5 + ; + + UPDATE activite.p_sejours_assurance + SET matricule_1 = w_sejour_assurance.matricule_assure + FROM w_sejour_assurance + WHERE w_sejour_assurance.sejour_id = p_sejours_assurance.sejour_id AND + w_sejour_assurance.matricule_assure IS DISTINCT FROM p_sejours_assurance.matricule_1 AND + w_sejour_assurance.matricule_assure IS DISTINCT FROM substr(p_sejours_assurance.matricule_1,1,13) AND + p_sejours_assurance.matricule_1 = '' + ; + + + INSERT INTO activite.p_sejours_assurance( + sejour_id, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + matricule_1, matricule_2, matricule_22) + SELECT + sejour_id, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + matricule_assure, '', '' + FROM w_sejour_assurance + WHERE sejour_id NOT IN (SELECT sejour_id FROM activite.p_sejours_assurance) + ; + + END IF; + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_sejours~tx.yaml b/db/schema2/functions/cti_reorganize_sejours~tx.yaml new file mode 100644 index 0000000..3b59071 --- /dev/null +++ b/db/schema2/functions/cti_reorganize_sejours~tx.yaml @@ -0,0 +1,53 @@ +return: text +lang: plpgsql +parameters: + p0: + type: text + name: i_table +src: | + DECLARE + w_table TEXT; + result TEXT; + BEGIN + -- i_table = + -- Table à mettre à jour, si '*NONE', ne met à jour que les codes et libellés + w_table = i_table; + IF w_table = '' THEN + w_table = 'activite.p_sejours'; + END IF; + -- Mise à jour nouvelle zone + BEGIN + EXECUTE ' + UPDATE ' || w_table || ' p_sejours + SET type_pmsi = COALESCE(t_services_facturation.type_t2a,''0'') + FROM activite.t_lieux + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE p_sejours.lieu_sortie_id = t_lieux.oid AND + p_sejours.type_pmsi IS DISTINCT FROM COALESCE(t_services_facturation.type_t2a,''0'')'; + + -- Initialisation des transferts non renseignés + IF w_table = 'activite.p_sejours' THEN + INSERT INTO activite.p_sejours_transferts(sejour_id, provenance_id, destination_id) + SELECT p_sejours.oid, 0::bigint AS provenance_id, 0::bigint AS destination_id + FROM activite.p_sejours + LEFT JOIN activite.p_sejours_transferts ON p_sejours.oid = p_sejours_transferts.sejour_id + WHERE p_sejours_transferts.sejour_id IS NULL + ; + UPDATE activite.p_sejours_transferts SET + provenance_id = COALESCE(provenance_id,0), + destination_id = COALESCE(destination_id,0) + WHERE provenance_id IS NULL OR destination_id IS NULL + ; + END IF; + + + EXCEPTION + WHEN others THEN RAISE NOTICE 'Erreur %' ,'1'; + END; + + EXECUTE ' + ANALYSE ' || w_table; + + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_tiers_payant.yaml b/db/schema2/functions/cti_reorganize_tiers_payant.yaml new file mode 100644 index 0000000..3413443 --- /dev/null +++ b/db/schema2/functions/cti_reorganize_tiers_payant.yaml @@ -0,0 +1,240 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + BEGIN + + -- Réaffectation des types selon l'utilisation + UPDATE activite.t_tiers_payant + SET type_tiers_payant = '1' + FROM + ( + SELECT t_tiers_payant.oid,t_tiers_payant.code, + SUM(CASE WHEN t_tiers_payant.oid = tiers_payant_1_id THEN 1 ELSE 0 END), + SUM(CASE WHEN t_tiers_payant.oid = tiers_payant_2_id AND tiers_payant_1_id <> tiers_payant_2_id THEN 1 ELSE 0 END) + FROM activite.t_tiers_payant + JOIN activite.p_factures ON + t_tiers_payant.oid = tiers_payant_1_id OR t_tiers_payant.oid = tiers_payant_2_id + WHERE type_tiers_payant = '2' + GROUP BY 1,2 + HAVING SUM(CASE WHEN t_tiers_payant.oid = tiers_payant_1_id THEN 1 ELSE 0 END) > 0 AND + SUM(CASE WHEN t_tiers_payant.oid = tiers_payant_2_id AND tiers_payant_1_id <> tiers_payant_2_id THEN 1 ELSE 0 END) = 0 + ) subview + WHERE t_tiers_payant.oid = subview.oid + ; + + + + UPDATE activite.t_tiers_payant + SET type_tiers_payant = '1' + FROM + ( + SELECT t_tiers_payant.oid,t_tiers_payant.code, + SUM(CASE WHEN t_tiers_payant.oid = tiers_payant_2_id THEN 1 ELSE 0 END), + SUM(CASE WHEN t_tiers_payant.oid = tiers_payant_1_id AND tiers_payant_1_id <> tiers_payant_2_id THEN 1 ELSE 0 END) + FROM activite.t_tiers_payant + JOIN activite.p_factures ON + t_tiers_payant.oid = tiers_payant_1_id OR t_tiers_payant.oid = tiers_payant_2_id + WHERE type_tiers_payant = '1' + GROUP BY 1,2 + HAVING SUM(CASE WHEN t_tiers_payant.oid = tiers_payant_2_id THEN 1 ELSE 0 END) > 0 AND + SUM(CASE WHEN t_tiers_payant.oid = tiers_payant_1_id AND tiers_payant_1_id <> tiers_payant_2_id THEN 1 ELSE 0 END) = 0 + ) subview + WHERE t_tiers_payant.oid = subview.oid + ; + + -- Grands régimes + UPDATE activite.t_tiers_payant + SET + grand_regime_id = 0 + WHERE grand_regime_id IS NULL; + UPDATE activite.t_tiers_payant + SET type_tiers_payant_texte = t_types_tiers_payant.texte_court, + type_tiers_payant_id = to_number('0' || type_tiers_payant,'00') + FROM activite.t_types_tiers_payant + WHERE type_tiers_payant = t_types_tiers_payant.code AND + ( + type_tiers_payant_texte IS DISTINCT FROM t_types_tiers_payant.texte_court OR + type_tiers_payant_id IS DISTINCT FROM to_number('0' || type_tiers_payant,'00') + ) + ; + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '01' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%CPAM%' OR t_tiers_payant.texte ILIKE '%C.P.A.M%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '02' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%MSA%' OR t_tiers_payant.texte ILIKE '%M.S.A%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '02' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%GAMEX%' OR t_tiers_payant.texte ILIKE '%GROUPAMA%' ); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '03' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%AMPI%' OR t_tiers_payant.texte ILIKE '%A.M.P.I%'); + + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '03' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%AGF %' OR t_tiers_payant.texte ILIKE '%A.G.F.%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '03' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE 'RAM %' OR t_tiers_payant.texte ILIKE '%R.A.M.%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '04' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%SNCF%' OR t_tiers_payant.texte ILIKE '%S.N.C.F%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '05' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%RATP%' OR t_tiers_payant.texte ILIKE '%R.A.T.P%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '06' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%ENIM%' OR t_tiers_payant.texte ILIKE '%E.N.I.M%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '07' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%MINEUR%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '08' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%MILITAIRE%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '09' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%BANQUE%' AND t_tiers_payant.texte ILIKE '%FRANCE%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '10' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%NOTAIRE%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '14' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%ASSEMBLEE%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '15' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%SENAT%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '17' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%FRANCAIS%' AND t_tiers_payant.texte ILIKE '%ETRANGER%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '80' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%COMBATTANT%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '91' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%MGEN%' OR t_tiers_payant.texte ILIKE '%M.G.E.N%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '92' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%PTT%' OR t_tiers_payant.texte ILIKE '%P.T.T%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '93' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%MGP%' OR t_tiers_payant.texte ILIKE '%M.G.P%' OR t_tiers_payant.texte ILIKE '%POLICE%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '93' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%POLICE%' OR t_tiers_payant.texte ILIKE '%M.G.P%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '94' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%MFP%' OR t_tiers_payant.texte ILIKE '%M.F.P.%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '95' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%MNH%' OR t_tiers_payant.texte ILIKE '%M.N.H%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '96' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%AVIATION%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '99' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE 'MMI %' OR t_tiers_payant.texte ILIKE '%M.M.I%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '99' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%LMDE%'); + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = '99' AND + (grand_regime_id IS NULL OR grand_regime_id = 0) AND + (t_tiers_payant.texte ILIKE '%VITTAVI%'); + + + UPDATE activite.t_tiers_payant SET + grand_regime_code = t_grands_regimes.code, + grand_regime_texte = t_grands_regimes.texte + FROM base.t_grands_regimes + WHERE grand_regime_id = t_grands_regimes.oid AND + ( + grand_regime_code IS DISTINCT FROM t_grands_regimes.code OR + grand_regime_texte IS DISTINCT FROM t_grands_regimes.texte + ); + + + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_reorganize_ucd_lpp_c.yaml b/db/schema2/functions/cti_reorganize_ucd_lpp_c.yaml new file mode 100644 index 0000000..adb75f3 --- /dev/null +++ b/db/schema2/functions/cti_reorganize_ucd_lpp_c.yaml @@ -0,0 +1,746 @@ +return: text +lang: plpgsql +src: | + DECLARE + _module_pmsimco TEXT; + result TEXT; + BEGIN + IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 't_lpp') THEN + _module_pmsimco = '1'; + ELSE + _module_pmsimco = '0'; + END IF; + + -- NOuvelle table dans base pour retro comptabilite + IF NOT EXISTS ( + SELECT table_name + FROM information_schema.tables + WHERE table_schema || '.' || table_name = 'base.t_classification_atc' ) THEN + CREATE TABLE base.t_classification_atc + ( + classification_atc_1_code text DEFAULT ''::text, + classification_atc_1_id bigint DEFAULT 0, + classification_atc_1_texte text DEFAULT ''::text, + classification_atc_2_code text DEFAULT ''::text, + classification_atc_2_id bigint DEFAULT 0, + classification_atc_2_texte text DEFAULT ''::text, + classification_atc_3_code text DEFAULT ''::text, + classification_atc_3_id bigint DEFAULT 0, + classification_atc_3_texte text DEFAULT ''::text, + classification_atc_4_code text DEFAULT ''::text, + classification_atc_4_id bigint DEFAULT 0, + classification_atc_4_texte text DEFAULT ''::text, + code text DEFAULT ''::text, + code_original text NOT NULL, + est_atc text DEFAULT ''::text, + est_cladimed text DEFAULT ''::text, + oid bigint NOT NULL DEFAULT nextval('base.s_classification_atc'::regclass), + section_code character varying(10)[], + section_id bigint[], + section_texte text[], + texte text, + texte_court text, + CONSTRAINT t_classification_atc_pkey PRIMARY KEY (oid), + CONSTRAINT t_classification_atc_ukey UNIQUE (code_original) + ) + WITH ( + OIDS=FALSE + ) + ; + INSERT INTO base.t_classification_atc( + oid, code_original, code, texte, texte_court, + classification_atc_1_code, classification_atc_1_id, classification_atc_1_texte, + classification_atc_2_code, classification_atc_2_id, classification_atc_2_texte, + classification_atc_3_code, classification_atc_3_id, classification_atc_3_texte, + classification_atc_4_code, classification_atc_4_id, classification_atc_4_texte, + est_atc, est_cladimed) + SELECT + 0::bigint AS oid, '*' AS code_original, chr(127) || '*********' AS code, 'Non renseignée' AS texte, 'Non renseignée' AS texte_court, + chr(127) || '*********' AS classification_atc_1_code, 0::bigint AS classification_atc_1_id, 'Non renseignée' AS classification_atc_1_texte, + chr(127) || '*********' AS classification_atc_2_code, 0::bigint AS classification_atc_2_id, 'Non renseignée' AS classification_atc_2_texte, + chr(127) || '*********' AS classification_atc_3_code, 0::bigint AS classification_atc_3_id, 'Non renseignée' AS classification_atc_3_texte, + chr(127) || '*********' AS classification_atc_4_code, 0::bigint AS classification_atc_4_id, 'Non renseignée' AS classification_atc_4_texte, + '0' AS est_atc, '0' AS est_cladimed + WHERE 0 NOT IN (SELECT oid FROM base.t_classification_atc) + ; + END IF; + + -- Nouvelle colonne dans base (retro comptabililité) + IF NOT EXISTS ( + SELECT column_name + FROM information_schema.columns + WHERE table_schema || '.' || table_name = 'base.t_ucd' AND + column_name = 'classification_atc_id') THEN + ALTER TABLE base.t_ucd ADD COLUMN classification_atc_id bigint default 0; + END IF; + + -- Si module pmsi, ajout des ucd pmsi + IF _module_pmsimco = '1' THEN + INSERT INTO base.t_ucd (code, texte, texte_court, atc_code) + SELECT code, texte, texte_court, atc_code + FROM pmsi.t_ucd + WHERE oid <> 0 AND + code NOT IN (SELECT code FROM base.t_ucd WHERE code IS NOT NULL) + ; + UPDATE base.t_ucd + SET atc_code = t_ucd_pmsi.atc_code + FROM pmsi.t_ucd t_ucd_pmsi + WHERE t_ucd.code = t_ucd_pmsi.code AND + t_ucd.atc_code IS DISTINCT FROM t_ucd_pmsi.atc_code + ; + END IF; + + + + INSERT INTO base.t_ucd(oid, code, texte, texte_court) + SELECT 0, chr(127) || '*******', chr(127) || 'Non renseigné', chr(127) || 'Non renseigné' + WHERE 0 NOT IN (SELECT oid FROM base.t_ucd); + + UPDATE base.t_ucd SET texte_court = texte WHERE COALESCE(texte_court,'') = ''; + + -- Initialisation arborescence ATC + INSERT INTO base.t_classification_atc (code, code_original, texte, texte_court) + SELECT + atc_code, MAX(atc_code), MAX(atc_texte), MAX(atc_texte) + FROm base.t_ucd + WHERE atc_code <> '' AND + length(atc_code) = 7 AND + atc_code NOT IN (SELECT code FROM base.t_classification_atc WHERE code IS NOT NULL) + GROUP BY 1 + ; + + INSERT INTO base.t_classification_atc (code, code_original, texte, texte_court) + SELECT substr(code,1,5), MAX(substr(code,1,5)), MAX(substr(code,1,5)), MAX(substr(code,1,5)) + FROM base.t_classification_atc + WHERE length(code) = 7 AND + substr(code,1,5) NOT IN (SELECT code FROM base.t_classification_atc WHERE code IS NOT NULL) + GROUP BY 1 + ; + + INSERT INTO base.t_classification_atc (code, code_original, texte, texte_court) + SELECT substr(code,1,4), MAX(substr(code,1,4)), MAX(substr(code,1,4)), MAX(substr(code,1,4)) + FROM base.t_classification_atc + WHERE length(code) = 7 AND + substr(code,1,4) NOT IN (SELECT code FROM base.t_classification_atc WHERE code IS NOT NULL) + GROUP BY 1 + ; + + INSERT INTO base.t_classification_atc (code, code_original, texte, texte_court) + SELECT substr(code,1,3), MAX(substr(code,1,3)), MAX(substr(code,1,3)), MAX(substr(code,1,3)) + FROM base.t_classification_atc + WHERE length(code) = 7 AND + substr(code,1,3) NOT IN (SELECT code FROM base.t_classification_atc WHERE code IS NOT NULL) + GROUP BY 1 + ; + + INSERT INTO base.t_classification_atc (code, code_original, texte, texte_court) + SELECT substr(code,1,2), MAX(substr(code,1,2)), MAX(substr(code,1,2)), MAX(substr(code,1,2)) + FROM base.t_classification_atc + WHERE length(code) = 7 AND + substr(code,1,2) NOT IN (SELECT code FROM base.t_classification_atc WHERE code IS NOT NULL) + GROUP BY 1 + ; + + + -- Standard ATC + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || '99XX99', code_original || '99XX99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 1 AND + code_original || '99XX99' NOT IN (SELECT code FROM base.t_classification_atc); + + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || '99', code_original || '99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 1 AND + code_original || '99' NOT IN (SELECT code FROM base.t_classification_atc); + + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || '99X', code_original || '99X', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 1 AND + code_original || '99X' NOT IN (SELECT code FROM base.t_classification_atc); + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || '99XX', code_original || '99XX', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 1 AND + code_original || '99XX' NOT IN (SELECT code FROM base.t_classification_atc); + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || 'XX99', code_original || 'XX99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 3 AND substr(code,2,1) BETWEEN '0' AND '9' AND + substr(code,1,1) IN (SELECT code FROM base.t_classification_atc) AND + code_original || 'XX99' NOT IN (SELECT code FROM base.t_classification_atc); + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || 'XX', code_original || 'XX', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 3 AND substr(code,2,1) BETWEEN '0' AND '9' AND + substr(code,1,1) IN (SELECT code FROM base.t_classification_atc) AND + code_original || 'XX' NOT IN (SELECT code FROM base.t_classification_atc); + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || 'X', code_original || 'X', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 3 AND substr(code,2,1) BETWEEN '0' AND '9' AND + substr(code,1,1) IN (SELECT code FROM base.t_classification_atc) AND + code_original || 'X' NOT IN (SELECT code FROM base.t_classification_atc); + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || 'X99', code_original || 'X99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 4 AND substr(code,2,1) BETWEEN '0' AND '9' AND + substr(code,1,3) IN (SELECT code FROM base.t_classification_atc) AND + code_original || 'X99' NOT IN (SELECT code FROM base.t_classification_atc); + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || 'X', code_original || 'X', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 4 AND substr(code,2,1) BETWEEN '0' AND '9' AND + substr(code,1,3) IN (SELECT code FROM base.t_classification_atc) AND + code_original || 'X' NOT IN (SELECT code FROM base.t_classification_atc); + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || '99', code_original || '99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 5 AND substr(code,2,1) BETWEEN '0' AND '9' AND + substr(code,1,4) IN (SELECT code FROM base.t_classification_atc) AND + code_original || '99' NOT IN (SELECT code FROM base.t_classification_atc); + + -- Spécial préfixe à deux caractères + + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || '99XX99', code_original || '99XX99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 2 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND + code_original || '99XX99' NOT IN (SELECT code FROM base.t_classification_atc); + + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || '99', code_original || '99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 2 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND + code_original || '99' NOT IN (SELECT code FROM base.t_classification_atc); + + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || '99X', code_original || '99X', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 2 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND + code_original || '99X' NOT IN (SELECT code FROM base.t_classification_atc); + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || '99XX', code_original || '99XX', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 2 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND + code_original || '99XX' NOT IN (SELECT code FROM base.t_classification_atc); + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || 'XX99', code_original || 'XX99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 4 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND + substr(code,1,2) IN (SELECT code FROM base.t_classification_atc) AND + code_original || 'XX99' NOT IN (SELECT code FROM base.t_classification_atc); + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || 'XX', code_original || 'XX', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 4 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND + substr(code,1,2) IN (SELECT code FROM base.t_classification_atc) AND + code_original || 'XX' NOT IN (SELECT code FROM base.t_classification_atc); + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || 'X', code_original || 'X', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 4 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND + substr(code,1,2) IN (SELECT code FROM base.t_classification_atc) AND + code_original || 'X' NOT IN (SELECT code FROM base.t_classification_atc); + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || 'X99', code_original || 'X99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 5 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND + substr(code,1,4) IN (SELECT code FROM base.t_classification_atc) AND + code_original || 'X99' NOT IN (SELECT code FROM base.t_classification_atc); + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || 'X', code_original || 'X', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 5 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND + substr(code,1,4) IN (SELECT code FROM base.t_classification_atc) AND + code_original || 'X' NOT IN (SELECT code FROM base.t_classification_atc); + INSERT INTO base.t_classification_atc(code_original, code, texte, texte_court ) + SELECT code_original || '99', code_original || '99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' + FROM base.t_classification_atc + WHERE oid <> 0 AND + length(code) = 6 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND + substr(code,1,5) IN (SELECT code FROM base.t_classification_atc) AND + code_original || '99' NOT IN (SELECT code FROM base.t_classification_atc); + -- compléments + UPDATE base.t_classification_atc SET + texte = trim(replace(texte,'(NON PRECISE)','')), + texte_court = trim(replace(texte,'(NON PRECISE)','')) + WHERE code like 'Z%' AND texte like '%(NON PRECISE)%'; + UPDATE base.t_classification_atc SET + classification_atc_1_id = t_classification_atc_1.oid, + classification_atc_1_code = t_classification_atc_1.code, + classification_atc_1_texte = t_classification_atc_1.texte + FROM base.t_classification_atc t_classification_atc_1 + WHERE t_classification_atc.oid <> 0 AND + substr(t_classification_atc.code,1,1) = t_classification_atc_1.code AND + substr(t_classification_atc.code,2,1) BETWEEN '0' AND '9' AND + ( + t_classification_atc.classification_atc_1_id IS DISTINCT FROM t_classification_atc_1.oid OR + t_classification_atc.classification_atc_1_code IS DISTINCT FROM t_classification_atc_1.code OR + t_classification_atc.classification_atc_1_texte IS DISTINCT FROM t_classification_atc_1.texte + ); + UPDATE base.t_classification_atc SET + classification_atc_1_id = t_classification_atc_1.oid, + classification_atc_1_code = t_classification_atc_1.code, + classification_atc_1_texte = t_classification_atc_1.texte + FROM base.t_classification_atc t_classification_atc_1 + WHERE t_classification_atc.oid <> 0 AND + substr(t_classification_atc.code,1,2) = t_classification_atc_1.code AND + substr(t_classification_atc.code,2,1) NOT BETWEEN '0' AND '9' AND + ( + t_classification_atc.classification_atc_1_id IS DISTINCT FROM t_classification_atc_1.oid OR + t_classification_atc.classification_atc_1_code IS DISTINCT FROM t_classification_atc_1.code OR + t_classification_atc.classification_atc_1_texte IS DISTINCT FROM t_classification_atc_1.texte + ); + UPDATE base.t_classification_atc SET + classification_atc_1_id = t_classification_atc_1.oid, + classification_atc_1_code = t_classification_atc_1.code, + classification_atc_1_texte = t_classification_atc_1.texte + FROM base.t_classification_atc t_classification_atc_1 + WHERE t_classification_atc.oid <> 0 AND + t_classification_atc_1.code = 'X' AND COALESCE(t_classification_atc.classification_atc_1_id,0) = 0 AND + ( + t_classification_atc.classification_atc_1_id IS DISTINCT FROM t_classification_atc_1.oid OR + t_classification_atc.classification_atc_1_code IS DISTINCT FROM t_classification_atc_1.code OR + t_classification_atc.classification_atc_1_texte IS DISTINCT FROM t_classification_atc_1.texte + ); + UPDATE base.t_classification_atc SET + classification_atc_1_code = t_classification_atc_1.code, + classification_atc_1_texte = t_classification_atc_1.texte + FROM base.t_classification_atc t_classification_atc_1 + WHERE t_classification_atc.classification_atc_1_id = t_classification_atc_1.oid AND + ( + t_classification_atc.classification_atc_1_code IS DISTINCT FROM t_classification_atc_1.code OR + t_classification_atc.classification_atc_1_texte IS DISTINCT FROM t_classification_atc_1.texte + ); + UPDATE base.t_classification_atc SET + classification_atc_2_id = t_classification_atc_1.oid, + classification_atc_2_code = t_classification_atc_1.code, + classification_atc_2_texte = t_classification_atc_1.texte + FROM base.t_classification_atc t_classification_atc_1 + WHERE t_classification_atc.oid <> 0 AND + substr(t_classification_atc.code,1,3) = t_classification_atc_1.code AND + substr(t_classification_atc.code,2,1) BETWEEN '0' AND '9' AND + length(t_classification_atc.code) >= 3 AND + ( + t_classification_atc.classification_atc_2_id IS DISTINCT FROM t_classification_atc_1.oid OR + t_classification_atc.classification_atc_2_code IS DISTINCT FROM t_classification_atc_1.code OR + t_classification_atc.classification_atc_2_texte IS DISTINCT FROM t_classification_atc_1.texte + ); + UPDATE base.t_classification_atc SET + classification_atc_2_id = t_classification_atc_1.oid, + classification_atc_2_code = t_classification_atc_1.code, + classification_atc_2_texte = t_classification_atc_1.texte + FROM base.t_classification_atc t_classification_atc_1 + WHERE t_classification_atc.oid <> 0 AND + substr(t_classification_atc.code,1,4) = t_classification_atc_1.code AND + substr(t_classification_atc.code,2,1) NOT BETWEEN '0' AND '9' AND + length(t_classification_atc.code) >= 4 AND + ( + t_classification_atc.classification_atc_2_id IS DISTINCT FROM t_classification_atc_1.oid OR + t_classification_atc.classification_atc_2_code IS DISTINCT FROM t_classification_atc_1.code OR + t_classification_atc.classification_atc_2_texte IS DISTINCT FROM t_classification_atc_1.texte + ); + UPDATE base.t_classification_atc SET + classification_atc_2_id = t_classification_atc_1.oid, + classification_atc_2_code = t_classification_atc_1.code, + classification_atc_2_texte = t_classification_atc_1.texte + FROM base.t_classification_atc t_classification_atc_1 + WHERE t_classification_atc.oid <> 0 AND + t_classification_atc_1.code = t_classification_atc.classification_atc_1_code || '99' AND COALESCE(t_classification_atc.classification_atc_2_id,0) = 0 AND + ( + t_classification_atc.classification_atc_2_id IS DISTINCT FROM t_classification_atc_1.oid OR + t_classification_atc.classification_atc_2_code IS DISTINCT FROM t_classification_atc_1.code OR + t_classification_atc.classification_atc_2_texte IS DISTINCT FROM t_classification_atc_1.texte + ); + UPDATE base.t_classification_atc SET + classification_atc_2_code = t_classification_atc_1.code, + classification_atc_2_texte = t_classification_atc_1.texte + FROM base.t_classification_atc t_classification_atc_1 + WHERE t_classification_atc.classification_atc_2_id = t_classification_atc_1.oid AND + ( + t_classification_atc.classification_atc_2_code IS DISTINCT FROM t_classification_atc_1.code OR + t_classification_atc.classification_atc_2_texte IS DISTINCT FROM t_classification_atc_1.texte + ); + UPDATE base.t_classification_atc SET + classification_atc_3_id = t_classification_atc_1.oid, + classification_atc_3_code = t_classification_atc_1.code, + classification_atc_3_texte = t_classification_atc_1.texte + FROM base.t_classification_atc t_classification_atc_1 + WHERE t_classification_atc.oid <> 0 AND + substr(t_classification_atc.code,1,4) = t_classification_atc_1.code AND + substr(t_classification_atc.code,2,1) BETWEEN '0' AND '9' AND + length(t_classification_atc.code) >= 4 AND + ( + t_classification_atc.classification_atc_3_id IS DISTINCT FROM t_classification_atc_1.oid OR + t_classification_atc.classification_atc_3_code IS DISTINCT FROM t_classification_atc_1.code OR + t_classification_atc.classification_atc_3_texte IS DISTINCT FROM t_classification_atc_1.texte + ); + UPDATE base.t_classification_atc SET + classification_atc_3_id = t_classification_atc_1.oid, + classification_atc_3_code = t_classification_atc_1.code, + classification_atc_3_texte = t_classification_atc_1.texte + FROM base.t_classification_atc t_classification_atc_1 + WHERE t_classification_atc.oid <> 0 AND + substr(t_classification_atc.code,1,5) = t_classification_atc_1.code AND + substr(t_classification_atc.code,2,1) NOT BETWEEN '0' AND '9' AND + length(t_classification_atc.code) >= 5 AND + ( + t_classification_atc.classification_atc_3_id IS DISTINCT FROM t_classification_atc_1.oid OR + t_classification_atc.classification_atc_3_code IS DISTINCT FROM t_classification_atc_1.code OR + t_classification_atc.classification_atc_3_texte IS DISTINCT FROM t_classification_atc_1.texte + ); + UPDATE base.t_classification_atc SET + classification_atc_3_id = t_classification_atc_1.oid, + classification_atc_3_code = t_classification_atc_1.code, + classification_atc_3_texte = t_classification_atc_1.texte + FROM base.t_classification_atc t_classification_atc_1 + WHERE t_classification_atc.oid <> 0 AND + t_classification_atc_1.code = t_classification_atc.classification_atc_2_code || 'X' AND COALESCE(t_classification_atc.classification_atc_3_id,0) = 0 AND + ( + t_classification_atc.classification_atc_3_id IS DISTINCT FROM t_classification_atc_1.oid OR + t_classification_atc.classification_atc_3_code IS DISTINCT FROM t_classification_atc_1.code OR + t_classification_atc.classification_atc_3_texte IS DISTINCT FROM t_classification_atc_1.texte + ); + UPDATE base.t_classification_atc SET + classification_atc_3_code = t_classification_atc_1.code, + classification_atc_3_texte = t_classification_atc_1.texte + FROM base.t_classification_atc t_classification_atc_1 + WHERE t_classification_atc.classification_atc_3_id = t_classification_atc_1.oid AND + ( + t_classification_atc.classification_atc_3_code IS DISTINCT FROM t_classification_atc_1.code OR + t_classification_atc.classification_atc_3_texte IS DISTINCT FROM t_classification_atc_1.texte + ); + UPDATE base.t_classification_atc SET + classification_atc_4_id = t_classification_atc_1.oid, + classification_atc_4_code = t_classification_atc_1.code, + classification_atc_4_texte = t_classification_atc_1.texte + FROM base.t_classification_atc t_classification_atc_1 + WHERE t_classification_atc.oid <> 0 AND + substr(t_classification_atc.code,2,1) BETWEEN '0' AND '9' AND + substr(t_classification_atc.code,1,5) = t_classification_atc_1.code AND + length(t_classification_atc.code) >= 5 AND + ( + t_classification_atc.classification_atc_4_id IS DISTINCT FROM t_classification_atc_1.oid OR + t_classification_atc.classification_atc_4_code IS DISTINCT FROM t_classification_atc_1.code OR + t_classification_atc.classification_atc_4_texte IS DISTINCT FROM t_classification_atc_1.texte + ); + UPDATE base.t_classification_atc SET + classification_atc_4_id = t_classification_atc_1.oid, + classification_atc_4_code = t_classification_atc_1.code, + classification_atc_4_texte = t_classification_atc_1.texte + FROM base.t_classification_atc t_classification_atc_1 + WHERE t_classification_atc.oid <> 0 AND + substr(t_classification_atc.code,2,1) NOT BETWEEN '0' AND '9' AND + substr(t_classification_atc.code,1,6) = t_classification_atc_1.code AND + length(t_classification_atc.code) >= 6 AND + ( + t_classification_atc.classification_atc_4_id IS DISTINCT FROM t_classification_atc_1.oid OR + t_classification_atc.classification_atc_4_code IS DISTINCT FROM t_classification_atc_1.code OR + t_classification_atc.classification_atc_4_texte IS DISTINCT FROM t_classification_atc_1.texte + ); + UPDATE base.t_classification_atc SET + classification_atc_4_id = t_classification_atc_1.oid, + classification_atc_4_code = t_classification_atc_1.code, + classification_atc_4_texte = t_classification_atc_1.texte + FROM base.t_classification_atc t_classification_atc_1 + WHERE t_classification_atc.oid <> 0 AND + t_classification_atc_1.code = t_classification_atc.classification_atc_3_code || 'X' AND COALESCE(t_classification_atc.classification_atc_4_id,0) = 0 AND + ( + t_classification_atc.classification_atc_4_id IS DISTINCT FROM t_classification_atc_1.oid OR + t_classification_atc.classification_atc_4_code IS DISTINCT FROM t_classification_atc_1.code OR + t_classification_atc.classification_atc_4_texte IS DISTINCT FROM t_classification_atc_1.texte + ); + UPDATE base.t_classification_atc SET + classification_atc_4_code = t_classification_atc_1.code, + classification_atc_4_texte = t_classification_atc_1.texte + FROM base.t_classification_atc t_classification_atc_1 + WHERE t_classification_atc.classification_atc_4_id = t_classification_atc_1.oid AND + ( + t_classification_atc.classification_atc_4_code IS DISTINCT FROM t_classification_atc_1.code OR + t_classification_atc.classification_atc_4_texte IS DISTINCT FROM t_classification_atc_1.texte + ); + UPDATE base.t_classification_atc SET + classification_atc_1_id = oid, + classification_atc_1_code = code, + classification_atc_1_texte = texte_court, + classification_atc_2_id = oid, + classification_atc_2_code = code, + classification_atc_2_texte = texte_court, + classification_atc_3_id = oid, + classification_atc_3_code = code, + classification_atc_3_texte = texte_court, + classification_atc_4_id = oid, + classification_atc_4_code = code, + classification_atc_4_texte = texte_court + WHERE + ( + classification_atc_1_code = 'X' AND code NOT LIKE 'X%' OR + classification_atc_1_id = 0 OR + classification_atc_1_id IS NULL + ) + AND + (classification_atc_1_id IS DISTINCT FROM oid OR + classification_atc_1_code IS DISTINCT FROM code OR + classification_atc_1_texte IS DISTINCT FROM texte_court OR + classification_atc_2_id IS DISTINCT FROM oid OR + classification_atc_2_code IS DISTINCT FROM code OR + classification_atc_2_texte IS DISTINCT FROM texte_court OR + classification_atc_3_id IS DISTINCT FROM oid OR + classification_atc_3_code IS DISTINCT FROM code OR + classification_atc_3_texte IS DISTINCT FROM texte_court OR + classification_atc_4_id IS DISTINCT FROM oid OR + classification_atc_4_code IS DISTINCT FROM code OR + classification_atc_4_texte IS DISTINCT FROM texte_court + ) + ; + -- Ventilation ATC/CLADIMED + UPDATE base.t_classification_atc SET + est_atc = subview.est_atc, + est_cladimed = subview.est_cladimed + FROM + (SELECT substr(t_classification_atc.code,1,1) AS code, MAX(est_atc) AS est_atc, MAX(est_cladimed) AS est_cladimed + FROM base.t_classification_atc + WHERE oid <> 0 + GROUP BY 1 + ORDER BY 1 + ) subview + WHERE substr(t_classification_atc.code,2,6) = '99' AND + substr(t_classification_atc.code,1,1) = subview.code AND + ( + t_classification_atc.est_atc IS DISTINCT FROM subview.est_atc OR + t_classification_atc.est_cladimed IS DISTINCT FROM subview.est_cladimed + ) + ; + UPDATE base.t_classification_atc SET + est_atc = subview.est_atc, + est_cladimed = subview.est_cladimed + FROM + (SELECT substr(t_classification_atc.code,1,3) AS code, MAX(est_atc) AS est_atc, MAX(est_cladimed) AS est_cladimed + FROM base.t_classification_atc + WHERE oid <> 0 + GROUP BY 1 + ORDER BY 1 + ) subview + WHERE substr(t_classification_atc.code,4,4) = 'X' AND + substr(t_classification_atc.code,1,3) = subview.code AND + ( + t_classification_atc.est_atc IS DISTINCT FROM subview.est_atc OR + t_classification_atc.est_cladimed IS DISTINCT FROM subview.est_cladimed + ) + ; + + UPDATE base.t_classification_atc SET + est_atc = subview.est_atc, + est_cladimed = subview.est_cladimed + FROM + (SELECT substr(t_classification_atc.code,1,4) AS code, MAX(est_atc) AS est_atc, MAX(est_cladimed) AS est_cladimed + FROM base.t_classification_atc + WHERE oid <> 0 + GROUP BY 1 + ORDER BY 1 + ) subview + WHERE substr(t_classification_atc.code,5,3) = 'X' AND + substr(t_classification_atc.code,1,4) = subview.code AND + ( + t_classification_atc.est_atc IS DISTINCT FROM subview.est_atc OR + t_classification_atc.est_cladimed IS DISTINCT FROM subview.est_cladimed + ) + ; + + UPDATE base.t_classification_atc SET + est_atc = subview.est_atc, + est_cladimed = subview.est_cladimed + FROM + (SELECT substr(t_classification_atc.code,1,5) AS code, MAX(est_atc) AS est_atc, MAX(est_cladimed) AS est_cladimed + FROM base.t_classification_atc + WHERE oid <> 0 + GROUP BY 1 + ORDER BY 1 + ) subview + WHERE substr(t_classification_atc.code,6,2) = 'XX' AND + substr(t_classification_atc.code,1,5) = subview.code AND + ( + t_classification_atc.est_atc IS DISTINCT FROM subview.est_atc OR + t_classification_atc.est_cladimed IS DISTINCT FROM subview.est_cladimed + ) + ; + + UPDATE base.t_ucd + SET classification_atc_id = t_classification_atc.oid + FROM base.t_classification_atc + WHERE t_classification_atc.code = atc_code AND + classification_atc_id IS DISTINCT FROM t_classification_atc.oid + ; + + -- Recopie dans activite + INSERT INTO activite.t_ucd_c (oid, code, texte, texte_court, classification_atc_id) + SELECT oid, code, texte, texte_court, classification_atc_id + FROM base.t_ucd + WHERE oid NOT IN (SELECT oid FROM activite.t_ucd_c); + + UPDATE activite.t_ucd_c SET + code = t_ucd.code, + texte = t_ucd.texte, + texte_court = t_ucd.texte_court, + classification_atc_id = t_ucd.classification_atc_id + FROM base.t_ucd + WHERE t_ucd.oid = t_ucd_c.oid AND + ( + t_ucd_c.code IS DISTINCT FROM t_ucd.code OR + t_ucd_c.texte IS DISTINCT FROM t_ucd.texte OR + t_ucd_c.texte_court IS DISTINCT FROM t_ucd.texte_court OR + t_ucd_c.classification_atc_id IS DISTINCT FROM t_ucd.classification_atc_id + ); + + UPDATE activite.t_ucd_c SET + classification_atc_code = t_classification_atc.code, + classification_atc_texte = t_classification_atc.texte_court, + classification_atc_section_id = t_classification_atc.section_id, + classification_atc_section_code = t_classification_atc.section_code, + classification_atc_section_texte = t_classification_atc.section_texte, + classification_atc_1_id = t_classification_atc.classification_atc_1_id, + classification_atc_1_code = t_classification_atc.classification_atc_1_code, + classification_atc_1_texte = t_classification_atc.classification_atc_1_texte, + classification_atc_2_id = t_classification_atc.classification_atc_2_id, + classification_atc_2_code = t_classification_atc.classification_atc_2_code, + classification_atc_2_texte = t_classification_atc.classification_atc_2_texte, + classification_atc_3_id = t_classification_atc.classification_atc_3_id, + classification_atc_3_code = t_classification_atc.classification_atc_3_code, + classification_atc_3_texte = t_classification_atc.classification_atc_3_texte, + classification_atc_4_id = t_classification_atc.classification_atc_4_id, + classification_atc_4_code = t_classification_atc.classification_atc_4_code, + classification_atc_4_texte = t_classification_atc.classification_atc_4_texte + FROM base.t_classification_atc + WHERE classification_atc_id = t_classification_atc.oid AND + ( + t_ucd_c.classification_atc_code IS DISTINCT FROM t_classification_atc.code OR + t_ucd_c.classification_atc_texte IS DISTINCT FROM t_classification_atc.texte_court OR + t_ucd_c.classification_atc_section_id IS DISTINCT FROM t_classification_atc.section_id OR + t_ucd_c.classification_atc_section_code::text[] IS DISTINCT FROM t_classification_atc.section_code::text[] OR + t_ucd_c.classification_atc_section_texte::text[] IS DISTINCT FROM t_classification_atc.section_texte::text[] OR + t_ucd_c.classification_atc_1_id IS DISTINCT FROM t_classification_atc.classification_atc_1_id OR + t_ucd_c.classification_atc_1_code IS DISTINCT FROM t_classification_atc.classification_atc_1_code OR + t_ucd_c.classification_atc_1_texte IS DISTINCT FROM t_classification_atc.classification_atc_1_texte OR + t_ucd_c.classification_atc_2_id IS DISTINCT FROM t_classification_atc.classification_atc_2_id OR + t_ucd_c.classification_atc_2_code IS DISTINCT FROM t_classification_atc.classification_atc_2_code OR + t_ucd_c.classification_atc_2_texte IS DISTINCT FROM t_classification_atc.classification_atc_2_texte OR + t_ucd_c.classification_atc_3_id IS DISTINCT FROM t_classification_atc.classification_atc_3_id OR + t_ucd_c.classification_atc_3_code IS DISTINCT FROM t_classification_atc.classification_atc_3_code OR + t_ucd_c.classification_atc_3_texte IS DISTINCT FROM t_classification_atc.classification_atc_3_texte OR + t_ucd_c.classification_atc_4_id IS DISTINCT FROM t_classification_atc.classification_atc_4_id OR + t_ucd_c.classification_atc_4_code IS DISTINCT FROM t_classification_atc.classification_atc_4_code OR + t_ucd_c.classification_atc_4_texte IS DISTINCT FROM t_classification_atc.classification_atc_4_texte + ) + ; + + + -- Nouvelle colonne dans base (retro comptabililité) + IF NOT EXISTS ( + SELECT column_name + FROM information_schema.columns + WHERE table_schema || '.' || table_name = 'base.t_lpp' AND + column_name = 'classification_atc_id') THEN + ALTER TABLE base.t_lpp ADD COLUMN classification_atc_id bigint default 0; + END IF; + + + INSERT INTO base.t_lpp(oid, code, texte, texte_court) + SELECT 0, chr(127) || '*******', chr(127) || 'Non renseigné', chr(127) || 'Non renseigné' + WHERE 0 NOT IN (SELECT oid FROM base.t_lpp); + + -- Si module pmsi, ajout des lpp pmsi + IF _module_pmsimco = '1' THEN + INSERT INTO base.t_lpp (code, texte, texte_court) + SELECT code, texte, texte_court + FROM pmsi.t_lpp + WHERE oid <> 0 AND + code NOT IN (SELECT code FROM base.t_lpp WHERE code IS NOT NULL) + ; + END IF; + + UPDATE base.t_lpp SET texte_court = texte WHERE COALESCE(texte_court,'') = ''; + + INSERT INTO activite.t_lpp_c (oid, code, texte, texte_court, classification_atc_id) + SELECT oid, code, texte, texte_court, classification_atc_id + FROM base.t_lpp + WHERE oid NOT IN (SELECT oid FROM activite.t_lpp_c); + + UPDATE activite.t_lpp_c SET + code = t_lpp.code, + texte = t_lpp.texte, + texte_court = t_lpp.texte_court, + classification_atc_id = t_lpp.classification_atc_id + FROM base.t_lpp + WHERE t_lpp.oid = t_lpp_c.oid AND + ( + t_lpp_c.code IS DISTINCT FROM t_lpp.code OR + t_lpp_c.texte IS DISTINCT FROM t_lpp.texte OR + t_lpp_c.texte_court IS DISTINCT FROM t_lpp.texte_court OR + t_lpp_c.classification_atc_id IS DISTINCT FROM t_lpp.classification_atc_id + ); + + UPDATE activite.t_lpp_c SET + classification_atc_code = t_classification_atc.code, + classification_atc_texte = t_classification_atc.texte_court, + classification_atc_section_id = t_classification_atc.section_id, + classification_atc_section_code = t_classification_atc.section_code, + classification_atc_section_texte = t_classification_atc.section_texte, + classification_atc_1_id = t_classification_atc.classification_atc_1_id, + classification_atc_1_code = t_classification_atc.classification_atc_1_code, + classification_atc_1_texte = t_classification_atc.classification_atc_1_texte, + classification_atc_2_id = t_classification_atc.classification_atc_2_id, + classification_atc_2_code = t_classification_atc.classification_atc_2_code, + classification_atc_2_texte = t_classification_atc.classification_atc_2_texte, + classification_atc_3_id = t_classification_atc.classification_atc_3_id, + classification_atc_3_code = t_classification_atc.classification_atc_3_code, + classification_atc_3_texte = t_classification_atc.classification_atc_3_texte, + classification_atc_4_id = t_classification_atc.classification_atc_4_id, + classification_atc_4_code = t_classification_atc.classification_atc_4_code, + classification_atc_4_texte = t_classification_atc.classification_atc_4_texte + FROM base.t_classification_atc + WHERE classification_atc_id = t_classification_atc.oid AND + ( + t_lpp_c.classification_atc_code IS DISTINCT FROM t_classification_atc.code OR + t_lpp_c.classification_atc_texte IS DISTINCT FROM t_classification_atc.texte_court OR + t_lpp_c.classification_atc_section_id IS DISTINCT FROM t_classification_atc.section_id OR + t_lpp_c.classification_atc_section_code::text[] IS DISTINCT FROM t_classification_atc.section_code::text[] OR + t_lpp_c.classification_atc_section_texte::text[] IS DISTINCT FROM t_classification_atc.section_texte::text[] OR + t_lpp_c.classification_atc_1_id IS DISTINCT FROM t_classification_atc.classification_atc_1_id OR + t_lpp_c.classification_atc_1_code IS DISTINCT FROM t_classification_atc.classification_atc_1_code OR + t_lpp_c.classification_atc_1_texte IS DISTINCT FROM t_classification_atc.classification_atc_1_texte OR + t_lpp_c.classification_atc_2_id IS DISTINCT FROM t_classification_atc.classification_atc_2_id OR + t_lpp_c.classification_atc_2_code IS DISTINCT FROM t_classification_atc.classification_atc_2_code OR + t_lpp_c.classification_atc_2_texte IS DISTINCT FROM t_classification_atc.classification_atc_2_texte OR + t_lpp_c.classification_atc_3_id IS DISTINCT FROM t_classification_atc.classification_atc_3_id OR + t_lpp_c.classification_atc_3_code IS DISTINCT FROM t_classification_atc.classification_atc_3_code OR + t_lpp_c.classification_atc_3_texte IS DISTINCT FROM t_classification_atc.classification_atc_3_texte OR + t_lpp_c.classification_atc_4_id IS DISTINCT FROM t_classification_atc.classification_atc_4_id OR + t_lpp_c.classification_atc_4_code IS DISTINCT FROM t_classification_atc.classification_atc_4_code OR + t_lpp_c.classification_atc_4_texte IS DISTINCT FROM t_classification_atc.classification_atc_4_texte + ) + ; + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_solde_auto.yaml b/db/schema2/functions/cti_solde_auto.yaml new file mode 100644 index 0000000..c059a05 --- /dev/null +++ b/db/schema2/functions/cti_solde_auto.yaml @@ -0,0 +1,632 @@ +return: text +lang: plpgsql +src: | + DECLARE + result TEXT; + _SOLDEAUTO_nb numeric; + BEGIN + + + -- Pour initialiser le paramétrage + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'SOLDEAUTO', + 'Nombre d''années pour solde automatique des factures', + '2', + 'Tout séjour non soldé sorti avant sera soldé (-1 si pas de solde auto)' + WHERE 'SOLDEAUTO' NOT IN (SELECT code FROM activite.t_divers); + + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'SOLDEAUTOHON', + 'Solde automatique des honoraires si solde etablissement à ', + '0', + 'Si la partie clinique est soldée, il faut solder les honoaires' + WHERE 'SOLDEAUTOHON' NOT IN (SELECT code FROM activite.t_divers); + + + _SOLDEAUTO_nb = (SELECT base.cti_to_number(valeur) + FROM activite.t_divers + WHERE t_divers.code = 'SOLDEAUTO' + LIMIT 1) + ; + + -- Solde des parts patient si solde total = 0 et solde cli/hon <> 0 + DROP TABLE IF EXISTS w_facture_solde_auto_0; + CREATE TEMP TABLE w_facture_solde_auto_0 AS + SELECT + no_facture, + date_fin, + date_vente AS date_solde + FROM activite.p_factures + WHERE + ( + ( + p_factures.montant_comptabilise_0_c + p_factures.montant_comptabilise_0_h + - p_factures.montant_regle_0_c - p_factures.montant_regle_0_h + ) = 0 + ) AND + p_factures.montant_comptabilise_0_c <> p_factures.montant_regle_0_c + ; + + + ANALYSE w_facture_solde_auto_0; + + UPDATE w_facture_solde_auto_0 + SET date_solde = subview.date_solde + FROM + ( + SELECT p_factures_soldes_c.no_facture, + MAX(date_comptable) AS date_solde + FROM activite.p_factures_soldes_c + JOIN w_facture_solde_auto_0 ON w_facture_solde_auto_0.no_facture = p_factures_soldes_c.no_facture + WHERE montant_regle_0 <> 0 + GROUP BY 1 + ) subview + WHERE w_facture_solde_auto_0.no_facture = subview.no_facture AND + subview.date_solde > w_facture_solde_auto_0.date_solde + ; + + UPDATE w_facture_solde_auto_0 + SET date_solde = subview.date_solde + FROM + ( + SELECT p_factures_soldes_h.no_facture, + MAX(date_comptable) AS date_solde + FROM activite.p_factures_soldes_h + JOIN w_facture_solde_auto_0 ON w_facture_solde_auto_0.no_facture = p_factures_soldes_h.no_facture + WHERE montant_regle_0 <> 0 + GROUP BY 1 + ) subview + WHERE w_facture_solde_auto_0.no_facture = subview.no_facture AND + subview.date_solde > w_facture_solde_auto_0.date_solde + ; + + + + INSERT INTO activite.p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + prestation_id, + rubrique_comptabilisee_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + facture_id, + p_factures_soldes_c.no_facture, + date_solde, + prestation_id, + rubrique_comptabilisee_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + + SUM(montant_comptabilise_0-montant_regle_0) AS montant_regle, + SUM(montant_comptabilise_0-montant_regle_0) AS montant_regle_0, + 0::numeric AS montant_regle_1, + 0::numeric AS montant_regle_2, + 0::numeric AS montant_regle_22, + '1' AS od_non_comptabilise + FROM activite.p_factures_soldes_c + JOIN w_facture_solde_auto_0 ON w_facture_solde_auto_0.no_facture = p_factures_soldes_c.no_facture + GROUP BY 1,2,3,4,5,6 + HAVING SUM(montant_comptabilise_0-montant_regle_0) <> 0 + ; + + INSERT INTO activite.p_factures_soldes_h( + facture_id, + no_facture, + date_comptable, + medecin_comptabilise_id, + prestation_id, + rubrique_comptabilisee_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + facture_id, + p_factures_soldes_h.no_facture, + date_solde, + medecin_comptabilise_id, + prestation_id, + rubrique_comptabilisee_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + + SUM(montant_comptabilise_0-montant_regle_0) AS montant_regle, + SUM(montant_comptabilise_0-montant_regle_0) AS montant_regle_0, + 0::numeric AS montant_regle_1, + 0::numeric AS montant_regle_2, + 0::numeric AS montant_regle_22, + '1' AS od_non_comptabilise + FROM activite.p_factures_soldes_h + JOIN w_facture_solde_auto_0 ON w_facture_solde_auto_0.no_facture = p_factures_soldes_h.no_facture + GROUP BY 1,2,3,4,5,6,7 + HAVING SUM(montant_comptabilise_0-montant_regle_0) <> 0 + ; + + + + UPDATE activite.p_factures SET + montant_regle_c = montant_comptabilise_0_c + montant_regle_1_c + montant_regle_2_c + montant_regle_22_c, + montant_regle_0_c = montant_comptabilise_0_c, + montant_regle_h = montant_comptabilise_0_h + montant_regle_1_h + montant_regle_2_h + montant_regle_22_h, + montant_regle_0_h = montant_comptabilise_0_h + FROM w_facture_solde_auto_0 + WHERE w_facture_solde_auto_0.no_facture = p_factures.no_facture + ; + + -- Solde automatique selon age solde + IF _SOLDEAUTO_nb >= 2 THEN + DROP TABLE IF EXISTS w_facture_solde_auto; + CREATE TEMP TABLE w_facture_solde_auto AS + SELECT + no_facture,date_fin, + date(date_trunc('year',now())-(t_divers.valeur||' years')::interval-interval '1 day') AS date_solde + FROM activite.p_factures + JOIN activite.t_divers ON t_divers.code = 'SOLDEAUTO' + WHERE date_fin < date(date_trunc('year',now())-(t_divers.valeur||' years')::interval) + ; + + + + INSERT INTO activite.p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + prestation_id, + rubrique_comptabilisee_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + facture_id, + p_factures_soldes_c.no_facture, + MAX(GREATEST(date_comptable,date_solde)), + prestation_id, + rubrique_comptabilisee_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + + SUM(montant_comptabilise_0-montant_regle_0)+ + SUM(montant_comptabilise_1-montant_regle_1)+ + SUM(montant_comptabilise_2-montant_regle_2)+ + SUM(montant_comptabilise_22-montant_regle_22) AS montant_regle, + SUM(montant_comptabilise_0-montant_regle_0) AS montant_regle_0, + SUM(montant_comptabilise_1-montant_regle_1) AS montant_regle_1, + SUM(montant_comptabilise_2-montant_regle_2) AS montant_regle_2, + SUM(montant_comptabilise_22-montant_regle_22) AS montant_regle_22, + '1' AS od_non_comptabilise + FROM activite.p_factures_soldes_c + JOIN w_facture_solde_auto ON w_facture_solde_auto.no_facture = p_factures_soldes_c.no_facture + GROUP BY 1,2,4,5,6 + HAVING SUM(montant_comptabilise-montant_regle) <> 0 OR + SUM(montant_comptabilise_1-montant_regle_1) <> 0 OR + SUM(montant_comptabilise_2-montant_regle_2) <> 0 OR + SUM(montant_comptabilise_22-montant_regle_22) <> 0 OR + SUM(montant_comptabilise_0-montant_regle_0) <> 0 + ; + + INSERT INTO activite.p_factures_soldes_h( + facture_id, + no_facture, + date_comptable, + medecin_comptabilise_id, + prestation_id, + rubrique_comptabilisee_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + facture_id, + p_factures_soldes_h.no_facture, + MAX(GREATEST(date_comptable,date_solde)), + medecin_comptabilise_id, + prestation_id, + rubrique_comptabilisee_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + + SUM(montant_comptabilise_0-montant_regle_0)+ + SUM(montant_comptabilise_1-montant_regle_1)+ + SUM(montant_comptabilise_2-montant_regle_2) AS montant_regle, + SUM(montant_comptabilise_0-montant_regle_0) AS montant_regle_0, + SUM(montant_comptabilise_1-montant_regle_1) AS montant_regle_1, + SUM(montant_comptabilise_2-montant_regle_2) AS montant_regle_2, + SUM(montant_comptabilise_22-montant_regle_22) AS montant_regle_22, + '1' AS od_non_comptabilise + FROM activite.p_factures_soldes_h + JOIN w_facture_solde_auto ON w_facture_solde_auto.no_facture = p_factures_soldes_h.no_facture + GROUP BY 1,2,4,5,6,7 + HAVING SUM(montant_comptabilise-montant_regle) <> 0 OR + SUM(montant_comptabilise_1-montant_regle_1) <> 0 OR + SUM(montant_comptabilise_2-montant_regle_2) <> 0 OR + SUM(montant_comptabilise_22-montant_regle_22) <> 0 OR + SUM(montant_comptabilise_0-montant_regle_0) <> 0 + ; + + + + UPDATE activite.p_factures SET + montant_regle_c = montant_comptabilise_c, + montant_regle_0_c = montant_comptabilise_0_c, + montant_regle_1_c = montant_comptabilise_1_c, + montant_regle_2_c = montant_comptabilise_2_c, + montant_regle_22_c = montant_comptabilise_22_c, + montant_regle_h = montant_comptabilise_h, + montant_regle_0_h = montant_comptabilise_0_h, + montant_regle_1_h = montant_comptabilise_1_h, + montant_regle_2_h = montant_comptabilise_2_h, + montant_regle_22_h = montant_comptabilise_22_h + FROM w_facture_solde_auto + WHERE w_facture_solde_auto.no_facture = p_factures.no_facture AND + ( + montant_regle_c <> montant_comptabilise_c OR + montant_regle_h <> montant_comptabilise_h + ) + ; + END IF; + + + -- Solde automatique honoraires si clinique soldé + IF (SELECT MAX(valeur) FROM activite.t_divers WHERE t_divers.code = 'SOLDEAUTOHON') = '1' THEN + DROP TABLE IF EXISTS w_facture_solde_auto_hon; + CREATE TEMP TABLE w_facture_solde_auto_hon AS + SELECT + no_facture, + '1'::text AS tiers_type, + SUM(montant_comptabilise_1) - SUM(montant_regle_1) AS montant_solde_h, + 0::numeric AS montant_solde_c, + NULL::date AS date_solde_c + FROM activite.p_factures_soldes_h + GROUP BY 1 + HAVING SUM(montant_comptabilise_1) <> SUM(montant_regle_1) + ; + INSERT INTO w_facture_solde_auto_hon + SELECT + no_facture, + '0'::text AS tiers_type, + SUM(montant_comptabilise_0) - SUM(montant_regle_0) AS montant_solde_h, + 0::numeric AS montant_solde_c, + NULL::date AS date_solde_c + FROM activite.p_factures_soldes_h + GROUP BY 1 + HAVING SUM(montant_comptabilise_0) <> SUM(montant_regle_0) + ; + INSERT INTO w_facture_solde_auto_hon + SELECT + no_facture, + '2'::text AS tiers_type, + SUM(montant_comptabilise_2) - SUM(montant_regle_2) AS montant_solde_h, + 0::numeric AS montant_solde_c, + NULL::date AS date_solde_c + FROM activite.p_factures_soldes_h + GROUP BY 1 + HAVING SUM(montant_comptabilise_2) <> SUM(montant_regle_2) + ; + INSERT INTO w_facture_solde_auto_hon + SELECT + no_facture, + '22'::text AS tiers_type, + SUM(montant_comptabilise_22) - SUM(montant_regle_22) AS montant_solde_h, + 0::numeric AS montant_solde_c, + NULL::date AS date_solde_c + FROM activite.p_factures_soldes_h + GROUP BY 1 + HAVING SUM(montant_comptabilise_22) <> SUM(montant_regle_22) + ; + + ANALYSE w_facture_solde_auto_hon + ; + + UPDATE w_facture_solde_auto_hon SET + montant_solde_c = subview.montant_solde_c, + date_solde_c = subview.date_solde_c + FROM + ( + SELECT w_facture_solde_auto_hon.no_facture, + w_facture_solde_auto_hon.tiers_type, + CASE WHEN SUM(montant_comptabilise_1) - SUM(montant_regle_1) = 0 THEN MAX(date_comptable) ELSE NULL END AS date_solde_c, + SUM(montant_comptabilise_1) - SUM(montant_regle_1) AS montant_solde_c + FROM activite.p_factures_soldes_c + JOIN w_facture_solde_auto_hon ON + activite.p_factures_soldes_c.no_facture = w_facture_solde_auto_hon.no_facture AND tiers_type = '1' + GROUP BY 1,2 + HAVING SUM(montant_comptabilise_1) <> 0 + ) subview + WHERE w_facture_solde_auto_hon.no_facture = subview.no_facture AND + w_facture_solde_auto_hon.tiers_type = subview.tiers_type + ; + + UPDATE w_facture_solde_auto_hon SET + montant_solde_c = subview.montant_solde_c, + date_solde_c = subview.date_solde_c + FROM + ( + SELECT w_facture_solde_auto_hon.no_facture, + w_facture_solde_auto_hon.tiers_type, + CASE WHEN SUM(montant_comptabilise_0) - SUM(montant_regle_0) = 0 THEN MAX(date_comptable) ELSE NULL END AS date_solde_c, + SUM(montant_comptabilise_0) - SUM(montant_regle_0) AS montant_solde_c + FROM activite.p_factures_soldes_c + JOIN w_facture_solde_auto_hon ON + activite.p_factures_soldes_c.no_facture = w_facture_solde_auto_hon.no_facture AND tiers_type = '0' + GROUP BY 1,2 + HAVING SUM(montant_comptabilise_0) <> 0 + ) subview + WHERE w_facture_solde_auto_hon.no_facture = subview.no_facture AND + w_facture_solde_auto_hon.tiers_type = subview.tiers_type + ; + + UPDATE w_facture_solde_auto_hon SET + montant_solde_c = subview.montant_solde_c, + date_solde_c = subview.date_solde_c + FROM + ( + SELECT w_facture_solde_auto_hon.no_facture, + w_facture_solde_auto_hon.tiers_type, + CASE WHEN SUM(montant_comptabilise_2) - SUM(montant_regle_2) = 0 THEN MAX(date_comptable) ELSE NULL END AS date_solde_c, + SUM(montant_comptabilise_2) - SUM(montant_regle_2) AS montant_solde_c + FROM activite.p_factures_soldes_c + JOIN w_facture_solde_auto_hon ON + activite.p_factures_soldes_c.no_facture = w_facture_solde_auto_hon.no_facture AND tiers_type = '2' + GROUP BY 1,2 + HAVING SUM(montant_comptabilise_2) <> 0 + ) subview + WHERE w_facture_solde_auto_hon.no_facture = subview.no_facture AND + w_facture_solde_auto_hon.tiers_type = subview.tiers_type + ; + + UPDATE w_facture_solde_auto_hon SET + montant_solde_c = subview.montant_solde_c, + date_solde_c = subview.date_solde_c + FROM + ( + SELECT w_facture_solde_auto_hon.no_facture, + w_facture_solde_auto_hon.tiers_type, + CASE WHEN SUM(montant_comptabilise_22) - SUM(montant_regle_22) = 0 THEN MAX(date_comptable) ELSE NULL END AS date_solde_c, + SUM(montant_comptabilise_22) - SUM(montant_regle_22) AS montant_solde_c + FROM activite.p_factures_soldes_c + JOIN w_facture_solde_auto_hon ON + activite.p_factures_soldes_c.no_facture = w_facture_solde_auto_hon.no_facture AND tiers_type = '22' + GROUP BY 1,2 + HAVING SUM(montant_comptabilise_22) <> 0 + ) subview + WHERE w_facture_solde_auto_hon.no_facture = subview.no_facture AND + w_facture_solde_auto_hon.tiers_type = subview.tiers_type + ; + + + INSERT INTO activite.p_factures_soldes_h( + facture_id, + no_facture, + date_comptable, + medecin_comptabilise_id, + prestation_id, + rubrique_comptabilisee_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + facture_id, + p_factures_soldes_h.no_facture, + MAX(GREATEST(date_comptable,date_solde_c)), + medecin_comptabilise_id, + prestation_id, + rubrique_comptabilisee_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + + SUM(CASE WHEN tiers_type = '0' THEN montant_comptabilise_0-montant_regle_0 ELSE 0 END)+ + SUM(CASE WHEN tiers_type = '1' THEN montant_comptabilise_1-montant_regle_1 ELSE 0 END)+ + SUM(CASE WHEN tiers_type = '2' THEN montant_comptabilise_2-montant_regle_2 ELSE 0 END)+ + SUM(CASE WHEN tiers_type = '22' THEN montant_comptabilise_22-montant_regle_22 ELSE 0 END) AS montant_regle, + SUM(CASE WHEN tiers_type = '0' THEN montant_comptabilise_0-montant_regle_0 ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN tiers_type = '1' THEN montant_comptabilise_1-montant_regle_1 ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN tiers_type = '2' THEN montant_comptabilise_2-montant_regle_2 ELSE 0 END) AS montant_regle_2, + SUM(CASE WHEN tiers_type = '22' THEN montant_comptabilise_22-montant_regle_22 ELSE 0 END) AS montant_regle_22, + '1' AS od_non_comptabilise + FROM activite.p_factures_soldes_h + JOIN w_facture_solde_auto_hon ON w_facture_solde_auto_hon.no_facture = p_factures_soldes_h.no_facture + WHERE date_solde_c IS NOT NULL + GROUP BY 1,2,4,5,6,7 + HAVING SUM(CASE WHEN tiers_type = '0' THEN montant_comptabilise_0-montant_regle_0 ELSE 0 END) <> 0 OR + SUM(CASE WHEN tiers_type = '1' THEN montant_comptabilise_1-montant_regle_1 ELSE 0 END) <> 0 OR + SUM(CASE WHEN tiers_type = '2' THEN montant_comptabilise_2-montant_regle_2 ELSE 0 END) <> 0 OR + SUM(CASE WHEN tiers_type = '22' THEN montant_comptabilise_22-montant_regle_22 ELSE 0 END) <> 0 + ; + + + + UPDATE activite.p_factures SET + montant_regle_h = montant_regle_0_h + montant_comptabilise_1_h + montant_regle_2_h + montant_regle_22_h, + montant_regle_1_h = montant_comptabilise_1_h + FROM w_facture_solde_auto_hon + WHERE w_facture_solde_auto_hon.no_facture = p_factures.no_facture AND + w_facture_solde_auto_hon.tiers_type = '1' AND + w_facture_solde_auto_hon.date_solde_c IS NOT NULL + ; + UPDATE activite.p_factures SET + montant_regle_h = montant_comptabilise_0_h + montant_regle_1_h + montant_regle_2_h + montant_regle_22_h, + montant_regle_0_h = montant_comptabilise_0_h + FROM w_facture_solde_auto_hon + WHERE w_facture_solde_auto_hon.no_facture = p_factures.no_facture AND + w_facture_solde_auto_hon.tiers_type = '0' AND + w_facture_solde_auto_hon.date_solde_c IS NOT NULL + ; + + UPDATE activite.p_factures SET + montant_regle_h = montant_regle_0_h + montant_regle_1_h + montant_comptabilise_2_h + montant_regle_22_h, + montant_regle_2_h = montant_comptabilise_2_h + FROM w_facture_solde_auto_hon + WHERE w_facture_solde_auto_hon.no_facture = p_factures.no_facture AND + w_facture_solde_auto_hon.tiers_type = '2' AND + w_facture_solde_auto_hon.date_solde_c IS NOT NULL + ; + + UPDATE activite.p_factures SET + montant_regle_h = montant_regle_0_h + montant_regle_1_h + montant_regle_2_h + montant_comptabilise_22_h, + montant_regle_22_h = montant_comptabilise_22_h + FROM w_facture_solde_auto_hon + WHERE w_facture_solde_auto_hon.no_facture = p_factures.no_facture AND + w_facture_solde_auto_hon.tiers_type = '22' AND + w_facture_solde_auto_hon.date_solde_c IS NOT NULL + ; + + + + + END IF; + + -- Ajustement des dates de solde après ces manipulations + DROP TABLE IF EXISTS w_correction_date_c; + CREATE TEMP TABLE w_correction_date_c AS + SELECT p_factures.no_facture, no_sejour, + MAX(p_factures.date_solde_0_c) AS date_solde_0_c_old, + MAX(p_factures.date_solde_1_c) AS date_solde_1_c_old, + MAX(p_factures.date_solde_2_c) AS date_solde_2_c_old, + MAX(p_factures.date_solde_22_c) AS date_solde_22_c_old, + MAX(CASE WHEN montant_comptabilise_0_c = 0 THEN '00010101' WHEN montant_comptabilise_0_c = montant_regle_0_c AND p_factures.date_solde_0_c = '20991231' AND montant_comptabilise_0_c <> 0 AND p_factures_soldes_c.montant_regle_0 <> 0 THEN date_comptable ELSE NULL END) AS date_solde_0_c_new, + MAX(CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c AND p_factures.date_solde_1_c = '20991231' AND montant_comptabilise_1_c <> 0 AND p_factures.date_solde_1_c = '20991231' AND p_factures_soldes_c.montant_regle_1 <> 0 THEN date_comptable ELSE NULL END) AS date_solde_1_c_new, + MAX(CASE WHEN montant_comptabilise_2_c = 0 THEN '00010101' WHEN montant_comptabilise_2_c = montant_regle_2_c AND p_factures.date_solde_2_c = '20991231' AND montant_comptabilise_2_c <> 0 AND p_factures.date_solde_2_c = '20991231' AND p_factures_soldes_c.montant_regle_2 <> 0 THEN date_comptable ELSE NULL END) AS date_solde_2_c_new, + MAX(CASE WHEN montant_comptabilise_22_c = 0 THEN '00010101' WHEN montant_comptabilise_22_c = montant_regle_22_c AND p_factures.date_solde_22_c = '20991231' AND montant_comptabilise_22_c <> 0 AND p_factures.date_solde_22_c = '20991231' AND p_factures_soldes_c.montant_regle_22 <> 0 THEN date_comptable ELSE NULL END) AS date_solde_22_c_new + FROM activite.p_factures + LEFT JOIN activite.p_factures_soldes_c ON p_factures.no_facture = p_factures_soldes_c.no_facture AND p_factures_soldes_c.montant_regle <> 0 + GROUP BY 1,2 + ; + + UPDATE activite.p_factures SET + date_solde_c = GREATEST( + COALESCE(date_solde_0_c_new,date_solde_0_c), + COALESCE(date_solde_1_c_new,date_solde_1_c), + COALESCE(date_solde_2_c_new,date_solde_2_c), + COALESCE(date_solde_22_c_new,date_solde_22_c) + ), + date_solde_0_c = COALESCE(date_solde_0_c_new,date_solde_0_c), + date_solde_1_c = COALESCE(date_solde_1_c_new,date_solde_1_c), + date_solde_2_c = COALESCE(date_solde_2_c_new,date_solde_2_c), + date_solde_22_c = COALESCE(date_solde_22_c_new,date_solde_22_c) + FROM w_correction_date_c + WHERE p_factures.no_facture = w_correction_date_c.no_facture AND + ( + date_solde_c <> GREATEST( + COALESCE(date_solde_0_c_new,date_solde_0_c), + COALESCE(date_solde_1_c_new,date_solde_1_c), + COALESCE(date_solde_2_c_new,date_solde_2_c), + COALESCE(date_solde_22_c_new,date_solde_22_c) + ) OR + date_solde_0_c <> COALESCE(date_solde_0_c_new,date_solde_0_c) OR + date_solde_1_c <> COALESCE(date_solde_1_c_new,date_solde_1_c) OR + date_solde_2_c <> COALESCE(date_solde_2_c_new,date_solde_2_c) OR + date_solde_22_c <> COALESCE(date_solde_22_c_new,date_solde_22_c) + ) + ; + + + DROP TABLE IF EXISTS w_correction_date_h; + CREATE TEMP TABLE w_correction_date_h AS + SELECT p_factures.no_facture, no_sejour, + MAX(p_factures.date_solde_0_h) AS date_solde_0_h_old, + MAX(p_factures.date_solde_1_h) AS date_solde_1_h_old, + MAX(p_factures.date_solde_2_h) AS date_solde_2_h_old, + MAX(p_factures.date_solde_22_h) AS date_solde_22_h_old, + MAX(CASE WHEN montant_comptabilise_0_h = 0 THEN '00010101' WHEN montant_comptabilise_0_h = montant_regle_0_h AND p_factures.date_solde_0_h = '20991231' AND montant_comptabilise_0_h <> 0 AND p_factures_soldes_h.montant_regle_0 <> 0 THEN date_comptable ELSE NULL END) AS date_solde_0_h_new, + MAX(CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h AND p_factures.date_solde_1_h = '20991231' AND montant_comptabilise_1_h <> 0 AND p_factures.date_solde_1_h = '20991231' AND p_factures_soldes_h.montant_regle_1 <> 0 THEN date_comptable ELSE NULL END) AS date_solde_1_h_new, + MAX(CASE WHEN montant_comptabilise_2_h = 0 THEN '00010101' WHEN montant_comptabilise_2_h = montant_regle_2_h AND p_factures.date_solde_2_h = '20991231' AND montant_comptabilise_2_h <> 0 AND p_factures.date_solde_2_h = '20991231' AND p_factures_soldes_h.montant_regle_2 <> 0 THEN date_comptable ELSE NULL END) AS date_solde_2_h_new, + MAX(CASE WHEN montant_comptabilise_22_h = 0 THEN '00010101' WHEN montant_comptabilise_22_h = montant_regle_22_h AND p_factures.date_solde_22_h = '20991231' AND montant_comptabilise_22_h <> 0 AND p_factures.date_solde_22_h = '20991231' AND p_factures_soldes_h.montant_regle_22 <> 0 THEN date_comptable ELSE NULL END) AS date_solde_22_h_new + FROM activite.p_factures + LEFT JOIN activite.p_factures_soldes_h ON p_factures.no_facture = p_factures_soldes_h.no_facture AND p_factures_soldes_h.montant_regle <> 0 + GROUP BY 1,2 + ; + + UPDATE activite.p_factures SET + date_solde_h = GREATEST( + COALESCE(date_solde_0_h_new,date_solde_0_h), + COALESCE(date_solde_1_h_new,date_solde_1_h), + COALESCE(date_solde_2_h_new,date_solde_2_h), + COALESCE(date_solde_22_h_new,date_solde_22_h) + ), + date_solde_0_h = COALESCE(date_solde_0_h_new,date_solde_0_h), + date_solde_1_h = COALESCE(date_solde_1_h_new,date_solde_1_h), + date_solde_2_h = COALESCE(date_solde_2_h_new,date_solde_2_h), + date_solde_22_h = COALESCE(date_solde_22_h_new,date_solde_22_h) + FROM w_correction_date_h + WHERE p_factures.no_facture = w_correction_date_h.no_facture AND + ( + date_solde_h <> GREATEST( + COALESCE(date_solde_0_h_new,date_solde_0_h), + COALESCE(date_solde_1_h_new,date_solde_1_h), + COALESCE(date_solde_2_h_new,date_solde_2_h), + COALESCE(date_solde_22_h_new,date_solde_22_h) + ) OR + date_solde_0_h <> COALESCE(date_solde_0_h_new,date_solde_0_h) OR + date_solde_1_h <> COALESCE(date_solde_1_h_new,date_solde_1_h) OR + date_solde_2_h <> COALESCE(date_solde_2_h_new,date_solde_2_h) OR + date_solde_22_h <> COALESCE(date_solde_22_h_new,date_solde_22_h) + ) + ; + + + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_transform_uf.yaml b/db/schema2/functions/cti_transform_uf.yaml new file mode 100644 index 0000000..f8b1f88 --- /dev/null +++ b/db/schema2/functions/cti_transform_uf.yaml @@ -0,0 +1,267 @@ +return: text +lang: plpgsql +src: | + DECLARE + + BEGIN + IF NOT EXISTS (SELECT *FROM information_schema.columns WHERE table_name = 't_unites_fonctionnelles' AND table_schema = 'activite' AND column_name = 'type_eclatement') THEN + RETURN 'KO. Pas de colonne type_eclatement'; + END IF; + PERFORM setval('activite.s_lieux', (SELECT COALESCE(MAX(oid),0) + 1 FROM activite.t_lieux), true); + -- Eclatement à la première UF (cas des soins continus) + IF EXISTS (SELECT * FROM activite.t_unites_fonctionnelles WHERE type_eclatement = '1') THEN + RAISE NOTICE '%' , 'Ventilation premiere UF. Recherche sejours'; + DROP TABLE IF EXISTS w_transform_uf_0; + CREATE TEMP TABLE w_transform_uf_0 AS + SELECT no_sejour, + (MIN(CASE WHEN type_eclatement IS DISTINCT FROM '1' THEN ARRAY[to_char(date,'YYYYMMDD')::text||to_char(heure_debut,'FM000000'),unite_fonctionnelle_id::text] ELSE ARRAY['20991231999999'::text,'0'::text] END))[2]::bigint AS first_unite_fonctionnelle_id, + ''::text AS first_unite_fonctionnelle_code, + ''::text AS first_unite_fonctionnelle_texte + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_unites_fonctionnelles ON unite_fonctionnelle_id = t_unites_fonctionnelles.oid + GROUP BY 1 + HAVING SUM(CASE WHEN type_eclatement = '1' THEN 1 ELSE 0 END)>0 + ; + -- Au moins un séjour concerné + IF EXISTS (SELECT * FROM w_transform_uf_0) THEN + UPDATE w_transform_uf_0 SET + first_unite_fonctionnelle_code = t_unites_fonctionnelles.code, + first_unite_fonctionnelle_texte = t_unites_fonctionnelles.texte + FROM activite.t_unites_fonctionnelles + WHERE first_unite_fonctionnelle_id = t_unites_fonctionnelles.oid AND + first_unite_fonctionnelle_id <> 0; + UPDATE w_transform_uf_0 SET + first_unite_fonctionnelle_code = 'MONO', + first_unite_fonctionnelle_texte = 'MonoRUM' + WHERE first_unite_fonctionnelle_id = 0; + RAISE NOTICE '%' , 'Ventilation premiere UF. Recherche lieux'; + DROP TABLE IF EXISTS w_transform_uf_1; + CREATE TEMP TABLE w_transform_uf_1 AS + SELECT p_mouvements_sejour.no_sejour, + lieu_id, + MAX(t_unites_fonctionnelles.code || '-' || first_unite_fonctionnelle_code) AS new_unite_fonctionnelle_code, + MAX(t_unites_fonctionnelles.texte || '-' || first_unite_fonctionnelle_texte) AS new_unite_fonctionnelle_texte, + MAX(service_facturation_id) AS service_facturation_id, + MAX(activite_id) AS activite_id, + MAX(lit_id) AS lit_id, + MAX(unite_medicale_id) AS unite_medicale_id, + MAX(unite_fonctionnelle_id) AS unite_fonctionnelle_id, + 0::bigint AS new_unite_fonctionnelle_id, + 0::bigint AS new_lieu_id + FROM activite.p_mouvements_sejour + JOIN w_transform_uf_0 ON w_transform_uf_0.no_sejour = p_mouvements_sejour.no_sejour + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_unites_fonctionnelles ON unite_fonctionnelle_id = t_unites_fonctionnelles.oid + WHERE type_eclatement = '1' + GROUP BY 1,2; + + RAISE NOTICE '%' , 'Ventilation premiere UF. Nouvelles UF'; + INSERT INTO activite.t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT '*'||new_unite_fonctionnelle_code, new_unite_fonctionnelle_code, new_unite_fonctionnelle_texte, new_unite_fonctionnelle_texte + FROM w_transform_uf_1 + WHERE ('*'||new_unite_fonctionnelle_code) NOT IN (SELECT code_original FROM activite.t_unites_fonctionnelles) + GROUP BY 1,2,3,4 + ORDER BY 1; + UPDATE w_transform_uf_1 + SET new_unite_fonctionnelle_id = t_unites_fonctionnelles.oid + FROM activite.t_unites_fonctionnelles + WHERE ('*'||new_unite_fonctionnelle_code) = code_original; + + INSERT INTO activite.t_lieux + ( + oid, + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + code_original_6, + code_original_7, + service_facturation_id, + activite_id, + lit_id, + unite_medicale_id, + unite_fonctionnelle_id, + mode_traitement_id + ) + SELECT + nextval('activite.s_lieux'::regclass) AS oid, + subview.* + FROM + ( + SELECT t_lieux.code_original_1, + t_lieux.code_original_2, + t_lieux.code_original_3, + t_lieux.code_original_4, + t_lieux.code_original_5, + ('*'||new_unite_fonctionnelle_code) AS code_original_6, + t_lieux.code_original_7, + t_lieux.service_facturation_id, + t_lieux.activite_id, + t_lieux.lit_id, + t_lieux.unite_medicale_id, + new_unite_fonctionnelle_id AS unite_fonctionnelle_id, + t_lieux.mode_traitement_id + FROM activite.t_lieux + JOIN w_transform_uf_1 ON t_lieux.oid = w_transform_uf_1.lieu_id + LEFT JOIN activite.t_lieux t_lieux_deja ON + t_lieux.service_facturation_id = t_lieux_deja.service_facturation_id AND + t_lieux.activite_id = t_lieux_deja.activite_id AND + t_lieux.lit_id = t_lieux_deja.lit_id AND + t_lieux.unite_medicale_id = t_lieux_deja.unite_medicale_id AND + new_unite_fonctionnelle_id = t_lieux_deja.unite_fonctionnelle_id + WHERE t_lieux_deja.oid IS NULL + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13 + ) subview; + UPDATE w_transform_uf_1 + SET new_lieu_id = t_lieux.oid + FROM activite.t_lieux + WHERE t_lieux.service_facturation_id = w_transform_uf_1.service_facturation_id AND + t_lieux.activite_id = w_transform_uf_1.activite_id AND + t_lieux.lit_id = w_transform_uf_1.lit_id AND + t_lieux.unite_medicale_id = w_transform_uf_1.unite_medicale_id AND + t_lieux.unite_fonctionnelle_id = w_transform_uf_1.new_unite_fonctionnelle_id; + RAISE NOTICE '%' , 'Ventilation premiere UF. Modification sejours'; + UPDATE activite.p_mouvements_sejour + SET lieu_id = new_lieu_id + FROM w_transform_uf_1 + WHERE w_transform_uf_1.no_sejour = p_mouvements_sejour.no_sejour AND + w_transform_uf_1.lieu_id = p_mouvements_sejour.lieu_id; + UPDATE activite.p_sejours + SET lieu_sortie_id = new_lieu_id + FROM w_transform_uf_1 + WHERE w_transform_uf_1.no_sejour = p_sejours.no_sejour AND + w_transform_uf_1.lieu_id = p_sejours.lieu_sortie_id; + UPDATE activite.p_factures_lignes_c + SET lieu_id = new_lieu_id + FROM w_transform_uf_1 + JOIN activite.p_factures on p_factures.no_sejour = w_transform_uf_1.no_sejour + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + w_transform_uf_1.lieu_id = p_factures_lignes_c.lieu_id; + UPDATE activite.p_factures_lignes_h + SET lieu_id = new_lieu_id + FROM w_transform_uf_1 + JOIN activite.p_factures on p_factures.no_sejour = w_transform_uf_1.no_sejour + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + w_transform_uf_1.lieu_id = p_factures_lignes_h.lieu_id; + END IF; + END IF; + -- Eclatement à la spécialité médecin (cas des externes) + IF EXISTS (SELECT * FROM activite.t_unites_fonctionnelles WHERE type_eclatement = '2') THEN + RAISE NOTICE '%' , 'Ventilation Specialite. Recherche sejours'; + DROP TABLE IF EXISTS w_transform_uf_2; + CREATE TEMP TABLE w_transform_uf_2 AS + SELECT no_sejour, + lieu_id, + MAX(specialite_code) AS specialite_code, + MAX(replace(t_unites_fonctionnelles.code,'-MONO','') || '-' || replace(specialite_code,'.','')) AS new_unite_fonctionnelle_code, + MAX(replace(t_unites_fonctionnelles.texte,'-MonoRUM','') || '-' || specialite_texte) AS new_unite_fonctionnelle_texte, + MAX(service_facturation_id) AS service_facturation_id, + MAX(activite_id) AS activite_id, + MAX(lit_id) AS lit_id, + MAX(unite_medicale_id) AS unite_medicale_id, + MAX(unite_fonctionnelle_id) AS unite_fonctionnelle_id, + 0::bigint AS new_unite_fonctionnelle_id, + 0::bigint AS new_lieu_id + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_unites_fonctionnelles ON unite_fonctionnelle_id = t_unites_fonctionnelles.oid + JOIN activite.t_medecins_administratifs_c ON medecin_sejour_id = t_medecins_administratifs_c.oid + WHERE type_eclatement = '2' AND specialite_id <> 0 + GROUP BY 1,2; + -- Au moins un séjour concerné + IF EXISTS (SELECT * FROM w_transform_uf_2) THEN + RAISE NOTICE '%' , 'Ventilation Specialite. Nouvelles UF'; + INSERT INTO activite.t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT '*'||new_unite_fonctionnelle_code, new_unite_fonctionnelle_code, new_unite_fonctionnelle_texte, new_unite_fonctionnelle_texte + FROM w_transform_uf_2 + WHERE ('*'||new_unite_fonctionnelle_code) NOT IN (SELECT code_original FROM activite.t_unites_fonctionnelles) + GROUP BY 1,2,3,4 + ORDER BY 1; + UPDATE w_transform_uf_2 + SET new_unite_fonctionnelle_id = t_unites_fonctionnelles.oid + FROM activite.t_unites_fonctionnelles + WHERE ('*'||new_unite_fonctionnelle_code) = code_original; + INSERT INTO activite.t_lieux + ( + oid, + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + code_original_6, + code_original_7, + service_facturation_id, + activite_id, + lit_id, + unite_medicale_id, + unite_fonctionnelle_id, + mode_traitement_id + ) + SELECT + nextval('activite.s_lieux'::regclass) AS oid, + subview.* + FROM + ( + SELECT t_lieux.code_original_1, + t_lieux.code_original_2, + t_lieux.code_original_3, + t_lieux.code_original_4, + t_lieux.code_original_5, + ('*'||new_unite_fonctionnelle_code) AS code_original_6, + t_lieux.code_original_7, + t_lieux.service_facturation_id, + t_lieux.activite_id, + t_lieux.lit_id, + t_lieux.unite_medicale_id, + new_unite_fonctionnelle_id AS unite_fonctionnelle_id, + t_lieux.mode_traitement_id + FROM activite.t_lieux + JOIN w_transform_uf_2 ON t_lieux.oid = w_transform_uf_2.lieu_id + LEFT JOIN activite.t_lieux t_lieux_deja ON + t_lieux.service_facturation_id = t_lieux_deja.service_facturation_id AND + t_lieux.activite_id = t_lieux_deja.activite_id AND + t_lieux.lit_id = t_lieux_deja.lit_id AND + t_lieux.unite_medicale_id = t_lieux_deja.unite_medicale_id AND + new_unite_fonctionnelle_id = t_lieux_deja.unite_fonctionnelle_id + WHERE t_lieux_deja.oid IS NULL + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13 + ) subview; + UPDATE w_transform_uf_2 + SET new_lieu_id = t_lieux.oid + FROM activite.t_lieux + WHERE t_lieux.service_facturation_id = w_transform_uf_2.service_facturation_id AND + t_lieux.activite_id = w_transform_uf_2.activite_id AND + t_lieux.lit_id = w_transform_uf_2.lit_id AND + t_lieux.unite_medicale_id = w_transform_uf_2.unite_medicale_id AND + t_lieux.unite_fonctionnelle_id = w_transform_uf_2.new_unite_fonctionnelle_id; + RAISE NOTICE '%' , 'Ventilation Specialite. Modification séjours'; + UPDATE activite.p_mouvements_sejour + SET lieu_id = new_lieu_id + FROM w_transform_uf_2 + WHERE w_transform_uf_2.no_sejour = p_mouvements_sejour.no_sejour AND + w_transform_uf_2.lieu_id = p_mouvements_sejour.lieu_id; + UPDATE activite.p_sejours + SET lieu_sortie_id = new_lieu_id + FROM w_transform_uf_2 + WHERE w_transform_uf_2.no_sejour = p_sejours.no_sejour AND + w_transform_uf_2.lieu_id = p_sejours.lieu_sortie_id; + UPDATE activite.p_factures_lignes_c + SET lieu_id = new_lieu_id + FROM w_transform_uf_2 + JOIN activite.p_factures on p_factures.no_sejour = w_transform_uf_2.no_sejour + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + w_transform_uf_2.lieu_id = p_factures_lignes_c.lieu_id; + UPDATE activite.p_factures_lignes_h + SET lieu_id = new_lieu_id + FROM w_transform_uf_2 + JOIN activite.p_factures on p_factures.no_sejour = w_transform_uf_2.no_sejour + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + w_transform_uf_2.lieu_id = p_factures_lignes_h.lieu_id; + END IF; + END IF; + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_transform_um.yaml b/db/schema2/functions/cti_transform_um.yaml new file mode 100644 index 0000000..1441803 --- /dev/null +++ b/db/schema2/functions/cti_transform_um.yaml @@ -0,0 +1,267 @@ +return: text +lang: plpgsql +src: | + DECLARE + + BEGIN + IF NOT EXISTS (SELECT *FROM information_schema.columns WHERE table_name = 't_unites_medicales' AND table_schema = 'activite' AND column_name = 'type_eclatement') THEN + RETURN 'KO. Pas de colonne type_eclatement'; + END IF; + PERFORM setval('activite.s_lieux', (SELECT COALESCE(MAX(oid),0) + 1 FROM activite.t_lieux), true); + -- Eclatement à la première um (cas des soins continus) + IF EXISTS (SELECT * FROM activite.t_unites_medicales WHERE type_eclatement = '1') THEN + RAISE NOTICE '%' , 'Ventilation premiere um. Recherche sejours'; + DROP TABLE IF EXISTS w_transform_um_0; + CREATE TEMP TABLE w_transform_um_0 AS + SELECT no_sejour, + (MIN(CASE WHEN type_eclatement IS DISTINCT FROM '1' THEN ARRAY[to_char(date,'YYYYMMDD')::text||to_char(heure_debut,'FM000000'),unite_medicale_id::text] ELSE ARRAY['20991231999999'::text,'0'::text] END))[2]::bigint AS first_unite_medicale_id, + ''::text AS first_unite_medicale_code, + ''::text AS first_unite_medicale_texte + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_unites_medicales ON unite_medicale_id = t_unites_medicales.oid + GROUP BY 1 + HAVING SUM(CASE WHEN type_eclatement = '1' THEN 1 ELSE 0 END)>0 + ; + -- Au moins un séjour concerné + IF EXISTS (SELECT * FROM w_transform_um_0) THEN + UPDATE w_transform_um_0 SET + first_unite_medicale_code = t_unites_medicales.code, + first_unite_medicale_texte = t_unites_medicales.texte + FROM activite.t_unites_medicales + WHERE first_unite_medicale_id = t_unites_medicales.oid AND + first_unite_medicale_id <> 0; + UPDATE w_transform_um_0 SET + first_unite_medicale_code = 'MONO', + first_unite_medicale_texte = 'MonoRUM' + WHERE first_unite_medicale_id = 0; + RAISE NOTICE '%' , 'Ventilation premiere um. Recherche lieux'; + DROP TABLE IF EXISTS w_transform_um_1; + CREATE TEMP TABLE w_transform_um_1 AS + SELECT p_mouvements_sejour.no_sejour, + lieu_id, + MAX(t_unites_medicales.code || '-' || first_unite_medicale_code) AS new_unite_medicale_code, + MAX(t_unites_medicales.texte || '-' || first_unite_medicale_texte) AS new_unite_medicale_texte, + MAX(service_facturation_id) AS service_facturation_id, + MAX(activite_id) AS activite_id, + MAX(lit_id) AS lit_id, + MAX(unite_medicale_id) AS unite_medicale_id, + MAX(unite_fonctionnelle_id) AS unite_fonctionnelle_id, + 0::bigint AS new_unite_medicale_id, + 0::bigint AS new_lieu_id + FROM activite.p_mouvements_sejour + JOIN w_transform_um_0 ON w_transform_um_0.no_sejour = p_mouvements_sejour.no_sejour + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_unites_medicales ON unite_medicale_id = t_unites_medicales.oid + WHERE type_eclatement = '1' + GROUP BY 1,2; + + RAISE NOTICE '%' , 'Ventilation premiere um. Nouvelles um'; + INSERT INTO activite.t_unites_medicales(code_original, code, texte, texte_court) + SELECT '*'||new_unite_medicale_code, new_unite_medicale_code, new_unite_medicale_texte, new_unite_medicale_texte + FROM w_transform_um_1 + WHERE ('*'||new_unite_medicale_code) NOT IN (SELECT code_original FROM activite.t_unites_medicales) + GROUP BY 1,2,3,4 + ORDER BY 1; + UPDATE w_transform_um_1 + SET new_unite_medicale_id = t_unites_medicales.oid + FROM activite.t_unites_medicales + WHERE ('*'||new_unite_medicale_code) = code_original; + + INSERT INTO activite.t_lieux + ( + oid, + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + code_original_6, + code_original_7, + service_facturation_id, + activite_id, + lit_id, + unite_medicale_id, + unite_fonctionnelle_id, + mode_traitement_id + ) + SELECT + nextval('activite.s_lieux'::regclass) AS oid, + subview.* + FROM + ( + SELECT t_lieux.code_original_1, + t_lieux.code_original_2, + t_lieux.code_original_3, + t_lieux.code_original_4, + ('*'||new_unite_medicale_code) AS code_original_5, + t_lieux.code_original_6, + t_lieux.code_original_7, + t_lieux.service_facturation_id, + t_lieux.activite_id, + t_lieux.lit_id, + new_unite_medicale_id AS unite_medicale_id, + t_lieux.unite_fonctionnelle_id, + t_lieux.mode_traitement_id + FROM activite.t_lieux + JOIN w_transform_um_1 ON t_lieux.oid = w_transform_um_1.lieu_id + LEFT JOIN activite.t_lieux t_lieux_deja ON + t_lieux.service_facturation_id = t_lieux_deja.service_facturation_id AND + t_lieux.activite_id = t_lieux_deja.activite_id AND + t_lieux.lit_id = t_lieux_deja.lit_id AND + t_lieux.unite_fonctionnelle_id = t_lieux_deja.unite_fonctionnelle_id AND + new_unite_medicale_id = t_lieux_deja.unite_medicale_id + WHERE t_lieux_deja.oid IS NULL + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13 + ) subview; + UPDATE w_transform_um_1 + SET new_lieu_id = t_lieux.oid + FROM activite.t_lieux + WHERE t_lieux.service_facturation_id = w_transform_um_1.service_facturation_id AND + t_lieux.activite_id = w_transform_um_1.activite_id AND + t_lieux.lit_id = w_transform_um_1.lit_id AND + t_lieux.unite_fonctionnelle_id = w_transform_um_1.unite_fonctionnelle_id AND + t_lieux.unite_medicale_id = w_transform_um_1.new_unite_medicale_id; + RAISE NOTICE '%' , 'Ventilation premiere um. Modification sejours'; + UPDATE activite.p_mouvements_sejour + SET lieu_id = new_lieu_id + FROM w_transform_um_1 + WHERE w_transform_um_1.no_sejour = p_mouvements_sejour.no_sejour AND + w_transform_um_1.lieu_id = p_mouvements_sejour.lieu_id; + UPDATE activite.p_sejours + SET lieu_sortie_id = new_lieu_id + FROM w_transform_um_1 + WHERE w_transform_um_1.no_sejour = p_sejours.no_sejour AND + w_transform_um_1.lieu_id = p_sejours.lieu_sortie_id; + UPDATE activite.p_factures_lignes_c + SET lieu_id = new_lieu_id + FROM w_transform_um_1 + JOIN activite.p_factures on p_factures.no_sejour = w_transform_um_1.no_sejour + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + w_transform_um_1.lieu_id = p_factures_lignes_c.lieu_id; + UPDATE activite.p_factures_lignes_h + SET lieu_id = new_lieu_id + FROM w_transform_um_1 + JOIN activite.p_factures on p_factures.no_sejour = w_transform_um_1.no_sejour + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + w_transform_um_1.lieu_id = p_factures_lignes_h.lieu_id; + END IF; + END IF; + -- Eclatement à la spécialité médecin (cas des externes) + IF EXISTS (SELECT * FROM activite.t_unites_medicales WHERE type_eclatement = '2') THEN + RAISE NOTICE '%' , 'Ventilation Specialite. Recherche sejours'; + DROP TABLE IF EXISTS w_transform_um_2; + CREATE TEMP TABLE w_transform_um_2 AS + SELECT no_sejour, + lieu_id, + MAX(specialite_code) AS specialite_code, + MAX(replace(t_unites_medicales.code,'-MONO','') || '-' || replace(specialite_code,'.','')) AS new_unite_medicale_code, + MAX(replace(t_unites_medicales.texte,'-MonoRUM','') || '-' || specialite_texte) AS new_unite_medicale_texte, + MAX(service_facturation_id) AS service_facturation_id, + MAX(activite_id) AS activite_id, + MAX(lit_id) AS lit_id, + MAX(unite_medicale_id) AS unite_medicale_id, + MAX(unite_fonctionnelle_id) AS unite_fonctionnelle_id, + 0::bigint AS new_unite_medicale_id, + 0::bigint AS new_lieu_id + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_unites_medicales ON unite_medicale_id = t_unites_medicales.oid + JOIN activite.t_medecins_administratifs_c ON medecin_sejour_id = t_medecins_administratifs_c.oid + WHERE type_eclatement = '2' AND specialite_id <> 0 + GROUP BY 1,2; + -- Au moins un séjour concerné + IF EXISTS (SELECT * FROM w_transform_um_2) THEN + RAISE NOTICE '%' , 'Ventilation Specialite. Nouvelles um'; + INSERT INTO activite.t_unites_medicales(code_original, code, texte, texte_court) + SELECT '*'||new_unite_medicale_code, new_unite_medicale_code, new_unite_medicale_texte, new_unite_medicale_texte + FROM w_transform_um_2 + WHERE ('*'||new_unite_medicale_code) NOT IN (SELECT code_original FROM activite.t_unites_medicales) + GROUP BY 1,2,3,4 + ORDER BY 1; + UPDATE w_transform_um_2 + SET new_unite_medicale_id = t_unites_medicales.oid + FROM activite.t_unites_medicales + WHERE ('*'||new_unite_medicale_code) = code_original; + INSERT INTO activite.t_lieux + ( + oid, + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + code_original_6, + code_original_7, + service_facturation_id, + activite_id, + lit_id, + unite_medicale_id, + unite_fonctionnelle_id, + mode_traitement_id + ) + SELECT + nextval('activite.s_lieux'::regclass) AS oid, + subview.* + FROM + ( + SELECT t_lieux.code_original_1, + t_lieux.code_original_2, + t_lieux.code_original_3, + t_lieux.code_original_4, + ('*'||new_unite_medicale_code) AS code_original_5, + t_lieux.code_original_6, + t_lieux.code_original_7, + t_lieux.service_facturation_id, + t_lieux.activite_id, + t_lieux.lit_id, + new_unite_medicale_id AS unite_medicale_id, + t_lieux.unite_fonctionnelle_id, + t_lieux.mode_traitement_id + FROM activite.t_lieux + JOIN w_transform_um_2 ON t_lieux.oid = w_transform_um_2.lieu_id + LEFT JOIN activite.t_lieux t_lieux_deja ON + t_lieux.service_facturation_id = t_lieux_deja.service_facturation_id AND + t_lieux.activite_id = t_lieux_deja.activite_id AND + t_lieux.lit_id = t_lieux_deja.lit_id AND + t_lieux.unite_fonctionnelle_id = t_lieux_deja.unite_fonctionnelle_id AND + new_unite_medicale_id = t_lieux_deja.unite_medicale_id + WHERE t_lieux_deja.oid IS NULL + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13 + ) subview; + UPDATE w_transform_um_2 + SET new_lieu_id = t_lieux.oid + FROM activite.t_lieux + WHERE t_lieux.service_facturation_id = w_transform_um_2.service_facturation_id AND + t_lieux.activite_id = w_transform_um_2.activite_id AND + t_lieux.lit_id = w_transform_um_2.lit_id AND + t_lieux.unite_fonctionnelle_id = w_transform_um_2.unite_fonctionnelle_id AND + t_lieux.unite_medicale_id = w_transform_um_2.new_unite_medicale_id; + RAISE NOTICE '%' , 'Ventilation Specialite. Modification séjours'; + UPDATE activite.p_mouvements_sejour + SET lieu_id = new_lieu_id + FROM w_transform_um_2 + WHERE w_transform_um_2.no_sejour = p_mouvements_sejour.no_sejour AND + w_transform_um_2.lieu_id = p_mouvements_sejour.lieu_id; + UPDATE activite.p_sejours + SET lieu_sortie_id = new_lieu_id + FROM w_transform_um_2 + WHERE w_transform_um_2.no_sejour = p_sejours.no_sejour AND + w_transform_um_2.lieu_id = p_sejours.lieu_sortie_id; + UPDATE activite.p_factures_lignes_c + SET lieu_id = new_lieu_id + FROM w_transform_um_2 + JOIN activite.p_factures on p_factures.no_sejour = w_transform_um_2.no_sejour + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + w_transform_um_2.lieu_id = p_factures_lignes_c.lieu_id; + UPDATE activite.p_factures_lignes_h + SET lieu_id = new_lieu_id + FROM w_transform_um_2 + JOIN activite.p_factures on p_factures.no_sejour = w_transform_um_2.no_sejour + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + w_transform_um_2.lieu_id = p_factures_lignes_h.lieu_id; + END IF; + END IF; + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_update_schema_classes~tx.yaml b/db/schema2/functions/cti_update_schema_classes~tx.yaml new file mode 100644 index 0000000..9267666 --- /dev/null +++ b/db/schema2/functions/cti_update_schema_classes~tx.yaml @@ -0,0 +1,311 @@ +return: text +lang: plpgsql +parameters: + p0: + type: text + name: i_table_code +src: | + DECLARE + result TEXT; + BEGIN + + -- Si public, réplication des classes de prestations PMSI + IF (i_table_code = 'PRESTA_C' OR i_table_code = '*ALL') THEN + IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 't_classes') THEN + IF EXISTS (SELECT * FROM activite.p_sejours WHERE est_budget_global = '1' LIMIT 1) THEN + UPDATE activite.t_classes + SET code = 'CTI_RAFA_P' + WHERE code LIKE 'CTI\_RAFA\_P%' AND + code <> 'CTI_RAFA_P' + ; + + DROP TABLE IF EXISTS w_classes_pmsi + ; + CREATE TEMP TABLE w_classes_pmsi AS + SELECT + t_listes_tables.oid AS table_id, + 0::bigint AS classe_id, + t_classes.code AS classe_code, + t_classes.texte AS classe_texte, + 0::bigint AS section_id, + t_classes_sections.code AS section_code, + t_classes_sections.texte AS section_texte, + t_prestations.code::text AS prestation_code, + t_prestations_activite.oid AS prestation_id + FROM pmsi.t_classes + JOIN pmsi.t_classes_sections ON classe_id = t_classes.oid + JOIN pmsi.t_classes_sections_elements ON section_id = t_classes_sections.oid + JOIN pmsi.t_prestations ON to_id = t_prestations.oid + JOIN activite.t_prestations t_prestations_activite ON t_prestations_activite.code = t_prestations.code + JOIN activite.t_listes_tables ON t_listes_tables.code = 'PRESTA_C' + WHERE t_classes.code IN ('CTI_RAFA_P','CTI_ARRETEVERS') + ; + + INSERT INTO activite.t_classes( + code, + texte, + table_id, + is_cti, + sequence, + contenu_by_code, + contenu_non_replicable_ailleurs + ) + SELECT w_classes_pmsi.classe_code, + w_classes_pmsi.classe_texte, + w_classes_pmsi.table_id, + '1'::text AS is_cti, + (SELECT MAX(t_classes.sequence) FROM activite.t_classes WHERE t_classes.table_id = w_classes_pmsi.table_id AND t_classes.sequence < 30) + row_number() OVER (ORDER BY w_classes_pmsi.classe_code) , + '0'::text AS contenu_by_code, + '0'::text AS contenu_non_replicable_ailleurs + FROM w_classes_pmsi + LEFT JOIN activite.t_classes ON + w_classes_pmsi.classe_code = t_classes.code AND + w_classes_pmsi.table_id = t_classes.table_id + WHERE t_classes.oid IS NULL + GROUP BY 1,2,3 + ; + + UPDATE w_classes_pmsi + SET classe_id = t_classes.oid + FROM activite.t_classes + WHERE t_classes.code = classe_code AND + t_classes.table_id = w_classes_pmsi.table_id + ; + + INSERT INTO w_classes_pmsi + SELECT + t_classes.table_id, + t_classes.oid AS classe_id, + t_classes.code AS classe_code, + t_classes.texte AS classe_texte, + 0::bigint AS section_id, + '99'::text AS section_code, + 'Autres prestations'::text AS section_texte, + t_prestations.code AS prestation_code, + t_prestations.oid AS prestation_id + FROM activite.t_prestations + JOIN activite.t_classes ON t_classes.oid IN (SELECT classe_id FROM w_classes_pmsi) + LEFT JOIn w_classes_pmsi ON + w_classes_pmsi.classe_id = t_classes.oid AND + w_classes_pmsi.prestation_id = t_prestations.oid + WHERE w_classes_pmsi.prestation_id IS NULL + ; + + INSERT INTO activite.t_classes_sections( + code, + texte, + classe_id, + condition, + include_code, + exclude_code + ) + SELECT + w_classes_pmsi.section_code, + w_classes_pmsi.section_texte, + w_classes_pmsi.classe_id, + ''::text AS condition, + ''::text AS include_code, + ''::text AS exclude_code + FROM w_classes_pmsi + LEFT JOIN activite.t_classes_sections ON + t_classes_sections.classe_id = w_classes_pmsi.classe_id AND + t_classes_sections.code = w_classes_pmsi.section_code + WHERE w_classes_pmsi.classe_id <> 0 AND + t_classes_sections IS NULL + GROUP BY 1,2,3 + ORDER BY 1 + ; + + UPDATE w_classes_pmsi + SET section_id = t_classes_sections.oid + FROM activite.t_classes_sections + WHERE t_classes_sections.classe_id = w_classes_pmsi.classe_id AND + t_classes_sections.code = w_classes_pmsi.section_code + ; + + DELETE + FROM activite.t_classes_sections + USING activite.t_classes + WHERE classe_id = t_classes.oid AND + t_classes.oid IN (SELECT classe_id FROM w_classes_pmsi) AND + t_classes.oid::text||'-'||t_classes_sections.oid::text NOT IN (SELECT classe_id::text||'-'||section_id::text FROm w_classes_pmsi) + ; + + UPDATE activite.t_classes_sections + SET texte = section_texte + FROM w_classes_pmsi + WHERE t_classes_sections.oid = section_id AND + t_classes_sections.texte IS DISTINCT FROM section_texte + ; + + DELETE FROM activite.t_classes_sections_elements + USING + ( + SELECT t_classes_sections_elements.section_id, to_id + FROM activite.t_classes_sections_elements + JOIN activite.t_classes_sections ON section_id = t_classes_sections.oid + JOIN w_classes_pmsi ON + t_classes_sections.classe_id = w_classes_pmsi.classe_id AND + t_classes_sections_elements.to_id = w_classes_pmsi.prestation_id AND + t_classes_sections.oid <> w_classes_pmsi.section_id + GROUP BY 1,2 + ) subview + WHERE t_classes_sections_elements.section_id = subview.section_id AND + t_classes_sections_elements.to_id = subview.to_id + ; + + INSERT INTO activite.t_classes_sections_elements ( + section_id, + to_id + ) + SELECT section_id, prestation_id AS to_id + FROM w_classes_pmsi + LEFT JOIN + ( + SELECT classe_id, to_id + FROM activite.t_classes_sections_elements + JOIN activite.t_classes_sections ON section_id = t_classes_sections.oid + GROUP BY 1,2 + ) subview ON w_classes_pmsi.classe_id = subview.classe_id AND + w_classes_pmsi.prestation_id = subview.to_id + WHERE w_classes_pmsi.classe_id <> 0 + AND w_classes_pmsi.section_id <> 0 AND + subview.to_id IS NULL + GROUP BY 1,2 + ; + + DELETE + FROM activite.t_classes_sections + USING activite.t_classes + WHERE classe_id = t_classes.oid AND + t_classes.oid IN (SELECT classe_id FROM w_classes_pmsi) AND + t_classes.oid::text||'-'||t_classes_sections.oid::text NOT IN (SELECT classe_id::text||'-'||section_id::text FROm w_classes_pmsi) + ; + + END IF; + END IF; + END IF; + + -- Si Toutes les tables, mettre à jour oid par codes + IF (i_table_code = '*ALL') THEN + PERFORM base.cti_initialize_classes_by_code('activite'); + PERFORM base.cti_initialize_listes_by_code('activite'); + END IF; + + IF (i_table_code = 'SERVICE_F' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_lieux_c', 'SERVICE_F','service_facturation_section'); + END IF; + IF (i_table_code = 'SERVICE_F' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_services_facturation', 'SERVICE_F',''); + END IF; + IF (i_table_code = 'ETAGE' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_lieux_c', 'ETAGE','etage_section'); + END IF; + IF (i_table_code = 'ETAGE' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_etages', 'ETAGE',''); + END IF; + IF (i_table_code = 'LIT' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_lits', 'LIT',''); + END IF; + IF (i_table_code = 'LIT' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_lieux_c', 'LIT','lit_section'); + END IF; + IF (i_table_code = 'UM' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_unites_medicales', 'UM',''); + END IF; + IF (i_table_code = 'UM' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_lieux_c', 'UM','unite_medicale_section'); + END IF; + IF (i_table_code = 'UF' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_lieux_c', 'UF','unite_fonctionnelle_section'); + END IF; + IF (i_table_code = 'UF' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_unites_fonctionnelles', 'UF',''); + END IF; + IF (i_table_code = 'MEDECIN' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_medecins_administratifs_c', 'MEDECIN',''); + END IF; + IF (i_table_code = 'PRESTA_C' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_prestations', 'PRESTA_C',''); + END IF; + IF (i_table_code = 'RUBRIQUE' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_rubriques_facturation', 'RUBRIQUE',''); + END IF; + IF (i_table_code = 'TIERSP' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_tiers_payant', 'TIERSP',''); + END IF; + IF (i_table_code = 'FINESS' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('base', 't_finess', 'FINESS',''); + UPDATE activite.t_finess_c SET + section_id = t_finess.section_id, + section_code = t_finess.section_code, + section_texte = t_finess.section_texte + FROM base.t_finess + WHERE t_finess.oid = t_finess_c.oid AND + ( + t_finess_c.section_id IS DISTINCT FROM t_finess.section_id OR + t_finess_c.section_code IS DISTINCT FROM t_finess.section_code OR + t_finess_c.section_texte IS DISTINCT FROM t_finess.section_texte + ) + ; + END IF; + IF (i_table_code = 'ACTE' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_actes_c', 'ACTE',''); + END IF; + IF (i_table_code = 'GHM' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_ghm_c', 'GHM','ghm_section'); + END IF; + IF (i_table_code = 'GME' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_gme_c', 'GME','gme_section'); + END IF; + IF (i_table_code = 'GHMGME' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_ghmgme_c', 'GHMGME','ghmgme_section'); + END IF; + IF (i_table_code = 'COMPTE' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_compte', 'COMPTE', ''); + END IF; + IF (i_table_code = 'DURSEJ' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_durees_sejour_c', 'DURSEJ',''); + END IF; + IF (i_table_code = 'AGE' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_ages_c', 'AGE',''); + END IF; + IF (i_table_code = 'CODEPOST' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_codes_postaux_c', 'CODEPOST',''); + END IF; + IF (i_table_code = 'REJETNOEMI' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_rejets_noemie', 'REJETNOEMI',''); + END IF; + IF (i_table_code = 'BUDGETCLE' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_budget_cle', 'BUDGETCLE',''); + END IF; + IF (i_table_code = 'FORMEACTIVITE' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_forme_activite', 'FORMEACTIVITE',''); + END IF; + IF (i_table_code = 'ETATSEJOUR' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_etat_sejour', 'ETATSEJOUR',''); + END IF; + IF (i_table_code = 'ACTIVITE' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_activites', 'ACTIVITE',''); + END IF; + IF (i_table_code = 'ACTIVITE' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('activite', 't_lieux_c', 'ACTIVITE','activite_section'); + END IF; + IF (i_table_code = 'POLE' OR i_table_code = '*ALL') THEN + PERFORM base.cti_update_classes('base', 't_pole', 'POLE',''); + UPDATE activite.t_pole SET + section_id = t_pole.section_id, + section_code = t_pole.section_code, + section_texte = t_pole.section_texte + FROM base.t_pole as t_pole_base + WHERE t_pole.oid = t_pole_base.oid AND + ( + t_pole.section_id IS DISTINCT FROM t_pole_base.section_id OR + t_pole.section_code IS DISTINCT FROM t_pole_base.section_code OR + t_pole.section_texte IS DISTINCT FROM t_pole_base.section_texte + ) + ; + END IF; + + RETURN 'OK'; + END; \ No newline at end of file diff --git a/db/schema2/functions/cti_ventilation_lignes~tx.yaml b/db/schema2/functions/cti_ventilation_lignes~tx.yaml new file mode 100644 index 0000000..993ac7b --- /dev/null +++ b/db/schema2/functions/cti_ventilation_lignes~tx.yaml @@ -0,0 +1,373 @@ +return: text +lang: plpgsql +parameters: + p0: + type: text + name: i_table +src: | + DECLARE + _taux_int1 numeric(5,2); + _taux_int0 numeric(5,2); + _sqlcmd text; + BEGIN + INSERT INTO activite.t_divers (code, texte, valeur, description, valeur2) + SELECT + 'VENTGHS', + 'Ventilation GHS', + '0', + '0=Prix moyen par jour, 1=Poids donné au jour de l''intervention', + '' + WHERE 'VENTGHS' NOT IN (SELECT code FROM activite.t_divers); + INSERT INTO activite.t_divers (code, texte, valeur, description, valeur2) + SELECT + 'VENTGHSPINT', + 'Ventilation GHS. Poids jour intervention', + '000', + 'Pourcentage', + '' + WHERE 'VENTGHSPINT' NOT IN (SELECT code FROM activite.t_divers); + -- Spécialite selon specialite pmsi + IF NOT EXISTS (SELECT * FROM activite.t_divers WHERE code = 'VENTGHS' AND valeur = '1') THEN + return 'Pas de ventilation à faire'; + END IF; + IF NOT EXISTS (SELECT * FROM activite.t_divers WHERE code = 'VENTGHSPINT') THEN + return 'Pas de taux paramétré'; + END IF; + _taux_int1 = base.cti_to_number((SELECT valeur FROM activite.t_divers WHERE code = 'VENTGHSPINT')) / 100.00; + IF _taux_int1 <= 0 THEN + return 'Pas de taux paramétré'; + END IF; + IF _taux_int1 > 1 THEN + return 'Taux incorrect'; + END IF; + _taux_int0 = 1 - _taux_int1; + + _sqlcmd = ' + DROP TABLE IF EXISTS w_ventilation_inter'; + + EXECUTE _sqlcmd; + IF (i_table NOT LIKE '%encours%') THEN + _sqlcmd = ' + CREATE TEMP TABLE w_ventilation_inter AS + SELECT + p_factures.sejour_id, + p_factures_lignes_c.no_facture, + p_factures_lignes_c.date_debut, + p_factures_lignes_c.nb_prestation, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + ''0''::text AS est_date_intervention, + p_factures_lignes_c.CTID AS from_ctid + FROM activite.p_factures_lignes_c p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture AND p_factures.date_fin > p_factures.date_debut + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND t_prestations.code = ''GHS'' + WHERE sejour_id IN (SELECT sejour_id FROM activite.p_intervention) + ORDER BY 1,2,3;'; + ELSE + _sqlcmd = ' + CREATE TEMP TABLE w_ventilation_inter AS + SELECT + p_factures.sejour_id, + p_factures_lignes_c.no_facture, + p_factures_lignes_c.date_debut, + p_factures_lignes_c.nb_prestation, + 0::numeric AS montant_facture, + 0::numeric AS montant_facture_0, + 0::numeric AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + ''0''::text AS est_date_intervention, + p_factures_lignes_c.CTID AS from_ctid + FROM activite.p_factures_lignes_c p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture AND p_factures.date_fin > p_factures.date_debut + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND t_prestations.code = ''GHS'' + WHERE sejour_id IN (SELECT sejour_id FROM activite.p_intervention) + ORDER BY 1,2,3;'; + END IF; + + _sqlcmd = replace(_sqlcmd,'activite.p_factures_lignes_c',i_table); + EXECUTE _sqlcmd; + _sqlcmd = ' + CREATE INDEX w_ventilation_inter_i1 ON w_ventilation_inter USING btree (sejour_id);'; + + EXECUTE _sqlcmd; + + _sqlcmd = ' + UPDATE w_ventilation_inter + SET est_date_intervention = ''1'' + FROM activite.p_intervention + WHERE p_intervention.sejour_id = w_ventilation_inter.sejour_id AND + p_intervention.date_debut = w_ventilation_inter.date_debut;'; + + EXECUTE _sqlcmd; + _sqlcmd = ' + DROP TABLE IF EXISTS w_ventilation_total_inter;'; + + EXECUTE _sqlcmd; + + _sqlcmd = ' + CREATE TEMP TABLE w_ventilation_total_inter AS + SELECT no_facture, + MAX(CASE WHEN est_date_intervention = ''0'' AND nb_prestation <> 0 THEN from_ctid ELSE NULL END) AS last_ctid, + MAX(CASE WHEN est_date_intervention = ''0'' THEN from_ctid ELSE NULL END) AS last_ctid_2, + count(*) AS nb, + SUM(CASE WHEN est_date_intervention = ''0'' THEN 1 ELSE 0 END) AS nb_int0, + SUM(CASE WHEN est_date_intervention = ''1'' THEN 1 ELSE 0 END) AS nb_int1, + SUM(montant_facture) AS total_facture, + SUM(montant_facture_0) AS total_facture_0, + SUM(montant_facture_1) AS total_facture_1, + SUM(montant_facture_2) AS total_facture_2, + SUM(montant_facture_22) AS total_facture_22, + SUM(montant_comptabilise) AS total_comptabilise, + SUM(montant_comptabilise_0) AS total_comptabilise_0, + SUM(montant_comptabilise_1) AS total_comptabilise_1, + SUM(montant_comptabilise_2) AS total_comptabilise_2, + SUM(montant_comptabilise_22) AS total_comptabilise_22, + SUM(montant_encours) AS total_encours, + SUM(montant_encours_0) AS total_encours_0, + SUM(montant_encours_1) AS total_encours_1, + SUM(montant_encours_2) AS total_encours_2, + SUM(montant_encours_22) AS total_encours_22, + 0::numeric(15,2) AS montant_facture_int0, + 0::numeric(15,2) AS montant_facture_int0_last, + 0::numeric(15,2) AS montant_facture_int1, + 0::numeric(15,2) AS montant_facture_0_int0, + 0::numeric(15,2) AS montant_facture_0_int0_last, + 0::numeric(15,2) AS montant_facture_0_int1, + 0::numeric(15,2) AS montant_facture_1_int0, + 0::numeric(15,2) AS montant_facture_1_int0_last, + 0::numeric(15,2) AS montant_facture_1_int1, + 0::numeric(15,2) AS montant_facture_2_int0, + 0::numeric(15,2) AS montant_facture_2_int0_last, + 0::numeric(15,2) AS montant_facture_2_int1, + 0::numeric(15,2) AS montant_facture_22_int0, + 0::numeric(15,2) AS montant_facture_22_int0_last, + 0::numeric(15,2) AS montant_facture_22_int1, + 0::numeric(15,2) AS montant_comptabilise_int0, + 0::numeric(15,2) AS montant_comptabilise_int0_last, + 0::numeric(15,2) AS montant_comptabilise_int1, + 0::numeric(15,2) AS montant_comptabilise_0_int0, + 0::numeric(15,2) AS montant_comptabilise_0_int0_last, + 0::numeric(15,2) AS montant_comptabilise_0_int1, + 0::numeric(15,2) AS montant_comptabilise_1_int0, + 0::numeric(15,2) AS montant_comptabilise_1_int0_last, + 0::numeric(15,2) AS montant_comptabilise_1_int1, + 0::numeric(15,2) AS montant_comptabilise_2_int0, + 0::numeric(15,2) AS montant_comptabilise_2_int0_last, + 0::numeric(15,2) AS montant_comptabilise_2_int1, + 0::numeric(15,2) AS montant_comptabilise_22_int0, + 0::numeric(15,2) AS montant_comptabilise_22_int0_last, + 0::numeric(15,2) AS montant_comptabilise_22_int1, + 0::numeric(15,2) AS montant_encours_int0, + 0::numeric(15,2) AS montant_encours_int0_last, + 0::numeric(15,2) AS montant_encours_int1, + 0::numeric(15,2) AS montant_encours_0_int0, + 0::numeric(15,2) AS montant_encours_0_int0_last, + 0::numeric(15,2) AS montant_encours_0_int1, + 0::numeric(15,2) AS montant_encours_1_int0, + 0::numeric(15,2) AS montant_encours_1_int0_last, + 0::numeric(15,2) AS montant_encours_1_int1, + 0::numeric(15,2) AS montant_encours_2_int0, + 0::numeric(15,2) AS montant_encours_2_int0_last, + 0::numeric(15,2) AS montant_encours_2_int1, + 0::numeric(15,2) AS montant_encours_22_int0, + 0::numeric(15,2) AS montant_encours_22_int0_last, + 0::numeric(15,2) AS montant_encours_22_int1 + FROM w_ventilation_inter + GROUP BY 1 + having count(*) > 1 AND + SUM(CASE WHEN est_date_intervention = ''1'' THEN 1 ELSE 0 END) > 0 AND + SUM(CASE WHEN est_date_intervention = ''0'' THEN 1 ELSE 0 END) > 0 AND + SUM(CASE WHEN nb_prestation <> 0 THEN 1 ELSE 0 END) = 1 + ORDER BY 1;'; + + EXECUTE _sqlcmd; + + _sqlcmd = ' + UPDATE w_ventilation_total_inter SET + last_ctid = last_ctid_2 + WHERE last_ctid IS NULL;'; + + EXECUTE _sqlcmd; + + _sqlcmd = ' + UPDATE w_ventilation_total_inter SET + montant_facture_int0 = round(total_facture * (0.4) / nb,2), + montant_facture_int1 = round(total_facture * (0.6) / nb_int1,2), + montant_facture_0_int0 = round(total_facture_0 * (0.4) / nb,2), + montant_facture_0_int1 = round(total_facture_0 * (0.6) / nb_int1,2), + montant_facture_1_int0 = round(total_facture_1 * (0.4) / nb,2), + montant_facture_1_int1 = round(total_facture_1 * (0.6) / nb_int1,2), + montant_facture_2_int0 = round(total_facture_2 * (0.4) / nb,2), + montant_facture_2_int1 = round(total_facture_2 * (0.6) / nb_int1,2), + montant_facture_22_int0 = round(total_facture_22 * (0.4) / nb,2), + montant_facture_22_int1 = round(total_facture_22 * (0.6) / nb_int1,2), + + montant_comptabilise_int0 = round(total_comptabilise * (0.4) / nb,2), + montant_comptabilise_int1 = round(total_comptabilise * (0.6) / nb_int1,2), + montant_comptabilise_0_int0 = round(total_comptabilise_0 * (0.4) / nb,2), + montant_comptabilise_0_int1 = round(total_comptabilise_0 * (0.6) / nb_int1,2), + montant_comptabilise_1_int0 = round(total_comptabilise_1 * (0.4) / nb,2), + montant_comptabilise_1_int1 = round(total_comptabilise_1 * (0.6) / nb_int1,2), + montant_comptabilise_2_int0 = round(total_comptabilise_2 * (0.4) / nb,2), + montant_comptabilise_2_int1 = round(total_comptabilise_2 * (0.6) / nb_int1,2), + montant_comptabilise_22_int0 = round(total_comptabilise_22 * (0.4) / nb,2), + montant_comptabilise_22_int1 = round(total_comptabilise_22 * (0.6) / nb_int1,2), + + montant_encours_int0 = round(total_encours * (0.4) / nb,2), + montant_encours_int1 = round(total_encours * (0.6) / nb_int1,2), + montant_encours_0_int0 = round(total_encours_0 * (0.4) / nb,2), + montant_encours_0_int1 = round(total_encours_0 * (0.6) / nb_int1,2), + montant_encours_1_int0 = round(total_encours_1 * (0.4) / nb,2), + montant_encours_1_int1 = round(total_encours_1 * (0.6) / nb_int1,2), + montant_encours_2_int0 = round(total_encours_2 * (0.4) / nb,2), + montant_encours_2_int1 = round(total_encours_2 * (0.6) / nb_int1,2), + montant_encours_22_int0 = round(total_encours_22 * (0.4) / nb,2), + montant_encours_22_int1 = round(total_encours_22 * (0.6) / nb_int1,2) + ;'; + + _sqlcmd = replace(_sqlcmd,'(0.6)',_taux_int1); + _sqlcmd = replace(_sqlcmd,'(0.4)',_taux_int0); + EXECUTE _sqlcmd; + + _sqlcmd = ' + UPDATE w_ventilation_total_inter SET + montant_facture_int0_last = total_facture - ((nb-1) * montant_facture_int0) - (nb_int1 * montant_facture_int1), + montant_facture_0_int0_last = total_facture_0 - ((nb-1) * montant_facture_0_int0) - (nb_int1 * montant_facture_0_int1), + montant_facture_1_int0_last = total_facture_1 - ((nb-1) * montant_facture_1_int0) - (nb_int1 * montant_facture_1_int1), + montant_facture_2_int0_last = total_facture_2 - ((nb-1) * montant_facture_2_int0) - (nb_int1 * montant_facture_2_int1), + montant_facture_22_int0_last = total_facture_22 - ((nb-1) * montant_facture_22_int0) - (nb_int1 * montant_facture_22_int1), + montant_comptabilise_int0_last = total_comptabilise - ((nb-1) * montant_comptabilise_int0) - (nb_int1 * montant_comptabilise_int1), + montant_comptabilise_0_int0_last = total_comptabilise_0 - ((nb-1) * montant_comptabilise_0_int0) - (nb_int1 * montant_comptabilise_0_int1), + montant_comptabilise_1_int0_last = total_comptabilise_1 - ((nb-1) * montant_comptabilise_1_int0) - (nb_int1 * montant_comptabilise_1_int1), + montant_comptabilise_2_int0_last = total_comptabilise_2 - ((nb-1) * montant_comptabilise_2_int0) - (nb_int1 * montant_comptabilise_2_int1), + montant_comptabilise_22_int0_last = total_comptabilise_22 - ((nb-1) * montant_comptabilise_22_int0) - (nb_int1 * montant_comptabilise_22_int1), + montant_encours_int0_last = total_encours - ((nb-1) * montant_encours_int0) - (nb_int1 * montant_encours_int1), + montant_encours_0_int0_last = total_encours_0 - ((nb-1) * montant_encours_0_int0) - (nb_int1 * montant_encours_0_int1), + montant_encours_1_int0_last = total_encours_1 - ((nb-1) * montant_encours_1_int0) - (nb_int1 * montant_encours_1_int1), + montant_encours_2_int0_last = total_encours_2 - ((nb-1) * montant_encours_2_int0) - (nb_int1 * montant_encours_2_int1), + montant_encours_22_int0_last = total_encours_22 - ((nb-1) * montant_encours_22_int0) - (nb_int1 * montant_encours_22_int1), + montant_facture_int1 = montant_facture_int0 + montant_facture_int1, + montant_facture_0_int1 = montant_facture_0_int0 + montant_facture_0_int1, + montant_facture_1_int1 = montant_facture_1_int0 + montant_facture_1_int1, + montant_facture_2_int1 = montant_facture_2_int0 + montant_facture_2_int1, + montant_facture_22_int1 = montant_facture_22_int0 + montant_facture_22_int1, + montant_comptabilise_int1 = montant_comptabilise_int0 + montant_comptabilise_int1, + montant_comptabilise_0_int1 = montant_comptabilise_0_int0 + montant_comptabilise_0_int1, + montant_comptabilise_1_int1 = montant_comptabilise_1_int0 + montant_comptabilise_1_int1, + montant_comptabilise_2_int1 = montant_comptabilise_2_int0 + montant_comptabilise_2_int1, + montant_comptabilise_22_int1 = montant_comptabilise_22_int0 + montant_comptabilise_22_int1, + montant_encours_int1 = montant_encours_int0 + montant_encours_int1, + montant_encours_0_int1 = montant_encours_0_int0 + montant_encours_0_int1, + montant_encours_1_int1 = montant_encours_1_int0 + montant_encours_1_int1, + montant_encours_2_int1 = montant_encours_2_int0 + montant_encours_2_int1, + montant_encours_22_int1 = montant_encours_22_int0 + montant_encours_22_int1 + ;'; + + EXECUTE _sqlcmd; + + _sqlcmd = ' + CREATE INDEX w_ventilation_total_inter_i1 ON w_ventilation_total_inter USING btree (no_facture);'; + + EXECUTE _sqlcmd; + + IF (i_table NOT LIKE '%encours%') THEN + _sqlcmd = ' + UPDATE activite.p_factures_lignes_c p_factures_lignes_c SET + montant_facture = CASE WHEN est_date_intervention = ''1'' THEN montant_facture_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_int0_last ELSE montant_facture_int0 END, + montant_facture_0 = CASE WHEN est_date_intervention = ''1'' THEN montant_facture_0_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_0_int0_last ELSE montant_facture_0_int0 END, + montant_facture_1 = CASE WHEN est_date_intervention = ''1'' THEN montant_facture_1_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_1_int0_last ELSE montant_facture_1_int0 END, + montant_facture_2 = CASE WHEN est_date_intervention = ''1'' THEN montant_facture_2_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_2_int0_last ELSE montant_facture_2_int0 END, + montant_facture_22 = CASE WHEN est_date_intervention = ''1'' THEN montant_facture_22_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_22_int0_last ELSE montant_facture_22_int0 END, + montant_comptabilise = CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_int0_last ELSE montant_comptabilise_int0 END, + montant_comptabilise_0 = CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_0_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_0_int0_last ELSE montant_comptabilise_0_int0 END, + montant_comptabilise_1 = CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_1_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_1_int0_last ELSE montant_comptabilise_1_int0 END, + montant_comptabilise_2 = CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_2_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_2_int0_last ELSE montant_comptabilise_2_int0 END, + montant_comptabilise_22 = CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_22_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_22_int0_last ELSE montant_comptabilise_22_int0 END, + montant_encours = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_int0_last ELSE montant_encours_int0 END, + montant_encours_0 = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_0_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_0_int0_last ELSE montant_encours_0_int0 END, + montant_encours_1 = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_1_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_1_int0_last ELSE montant_encours_1_int0 END, + montant_encours_2 = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_2_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_2_int0_last ELSE montant_encours_2_int0 END, + montant_encours_22 = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_22_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_22_int0_last ELSE montant_encours_22_int0 END + + FROM w_ventilation_total_inter, w_ventilation_inter + WHERE w_ventilation_inter.from_ctid = p_factures_lignes_c.CTID AND + w_ventilation_total_inter.no_facture = p_factures_lignes_c.no_facture AND + ( + p_factures_lignes_c.montant_facture IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_facture_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_int0_last ELSE montant_facture_int0 END OR + p_factures_lignes_c.montant_facture_0 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_facture_0_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_0_int0_last ELSE montant_facture_0_int0 END OR + p_factures_lignes_c.montant_facture_1 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_facture_1_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_1_int0_last ELSE montant_facture_1_int0 END OR + p_factures_lignes_c.montant_facture_2 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_facture_2_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_2_int0_last ELSE montant_facture_2_int0 END OR + p_factures_lignes_c.montant_facture_22 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_facture_22_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_22_int0_last ELSE montant_facture_22_int0 END OR + p_factures_lignes_c.montant_comptabilise IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_int0_last ELSE montant_comptabilise_int0 END OR + p_factures_lignes_c.montant_comptabilise_0 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_0_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_0_int0_last ELSE montant_comptabilise_0_int0 END OR + p_factures_lignes_c.montant_comptabilise_1 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_1_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_1_int0_last ELSE montant_comptabilise_1_int0 END OR + p_factures_lignes_c.montant_comptabilise_2 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_2_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_2_int0_last ELSE montant_comptabilise_2_int0 END OR + p_factures_lignes_c.montant_comptabilise_22 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_22_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_22_int0_last ELSE montant_comptabilise_22_int0 END OR + p_factures_lignes_c.montant_encours IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_int0_last ELSE montant_encours_int0 END OR + p_factures_lignes_c.montant_encours_0 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_0_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_0_int0_last ELSE montant_encours_0_int0 END OR + p_factures_lignes_c.montant_encours_1 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_1_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_1_int0_last ELSE montant_encours_1_int0 END OR + p_factures_lignes_c.montant_encours_2 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_2_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_2_int0_last ELSE montant_encours_2_int0 END OR + p_factures_lignes_c.montant_encours_22 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_22_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_22_int0_last ELSE montant_encours_22_int0 END + ) + ;'; + ELSE + _sqlcmd = ' + UPDATE activite.p_factures_lignes_c p_factures_lignes_c SET + montant_encours = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_int0_last ELSE montant_encours_int0 END, + montant_encours_0 = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_0_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_0_int0_last ELSE montant_encours_0_int0 END, + montant_encours_1 = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_1_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_1_int0_last ELSE montant_encours_1_int0 END, + montant_encours_2 = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_2_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_2_int0_last ELSE montant_encours_2_int0 END, + montant_encours_22 = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_22_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_22_int0_last ELSE montant_encours_22_int0 END + + FROM w_ventilation_total_inter, w_ventilation_inter + WHERE w_ventilation_inter.from_ctid = p_factures_lignes_c.CTID AND + w_ventilation_total_inter.no_facture = p_factures_lignes_c.no_facture AND + ( + p_factures_lignes_c.montant_encours IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_int0_last ELSE montant_encours_int0 END OR + p_factures_lignes_c.montant_encours_0 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_0_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_0_int0_last ELSE montant_encours_0_int0 END OR + p_factures_lignes_c.montant_encours_1 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_1_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_1_int0_last ELSE montant_encours_1_int0 END OR + p_factures_lignes_c.montant_encours_2 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_2_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_2_int0_last ELSE montant_encours_2_int0 END OR + p_factures_lignes_c.montant_encours_22 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_22_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_22_int0_last ELSE montant_encours_22_int0 END + ) + ;'; + END IF; + + _sqlcmd = replace(_sqlcmd,'activite.p_factures_lignes_c',i_table); + EXECUTE _sqlcmd; + _sqlcmd = ' + DROP TABLE IF EXISTS w_ventilation_inter'; + + + EXECUTE _sqlcmd; + _sqlcmd = ' + DROP TABLE IF EXISTS w_ventilation_total_inter;'; + + EXECUTE _sqlcmd; + + + RETURN 'OK' ; + END; \ No newline at end of file diff --git a/db/schema2/functions/get_montant_fj_valorise_par_sejour~tx.yaml b/db/schema2/functions/get_montant_fj_valorise_par_sejour~tx.yaml new file mode 100644 index 0000000..3d38b92 --- /dev/null +++ b/db/schema2/functions/get_montant_fj_valorise_par_sejour~tx.yaml @@ -0,0 +1,22 @@ +return: integer +lang: plpgsql +parameters: + p0: + type: text + name: _numero_sejour +src: | + DECLARE + _montant_fj integer; + BEGIN + + SELECT SUM(montant_encours) INTO _montant_fj + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.t_prestations ON t_prestations.oid = p_factures_lignes_c.prestation_id + WHERE p_factures.no_sejour = _numero_sejour + AND t_prestations.code = 'FJ' + ; + + RETURN _montant_fj + ; + END; \ No newline at end of file diff --git a/db/schema2/functions/get_oids_from_classement~tx,tx,tx,in,in,tx,tx,tx.yaml b/db/schema2/functions/get_oids_from_classement~tx,tx,tx,in,in,tx,tx,tx.yaml new file mode 100644 index 0000000..46b38aa --- /dev/null +++ b/db/schema2/functions/get_oids_from_classement~tx,tx,tx,in,in,tx,tx,tx.yaml @@ -0,0 +1,277 @@ +return: SETOF record +lang: plpgsql +parameters: + p0: + type: text + name: p_v_sejours_x + p1: + type: text + name: p_groupby + p2: + type: text + name: p_onfield + p3: + type: integer + name: p_onmaxpercent + p4: + type: integer + name: p_onmaxnumber + p5: + type: text + name: p_selections_date + p6: + type: text + name: p_selections + p7: + type: text + name: p_selections_context +src: | + DECLARE + oidField TEXT; + oidFieldComplete TEXT; + oidFieldText TEXT; + ch TEXT; + table_name TEXT; + sumField TEXT; + selectCmd TEXT; + selectCmdBase TEXT; + temp_cursor refcursor; + oids_array TEXT; + oids_array_bis TEXT; + oids_array_toapply TEXT; + oids_array_bis_toapply TEXT; + onmaxpercent integer; + onmaxnumber integer; + winteger integer; + select_percent integer; + other_percent integer; + onfield_text TEXT; + rec RECORD; + BEGIN + oidField = ''; + oidFieldComplete = '0'; + oidFieldText = '0'; + FOR i IN 1..length(p_groupby) LOOP + ch = substring(p_groupby,i,1); + IF (ch = ',') THEN + oidFieldComplete = '1'; + IF(oidField = 'v_sejours_1.no_oid') THEN + oidField = ''; + oidFieldComplete = '0'; + oidFieldText = '1'; + END IF; + ELSE + IF (oidFieldComplete = '0') THEN + oidField = oidField || ch; + END IF; + END IF; + END LOOP; + IF(oidField = '') THEN + oidField = 'v_sejours_1.ghs_id'; + END IF; + + sumField = p_onfield; + onfield_text = ''; + if (sumField = 'v_sejours_1.nb_sejours') THEN + onfield_text = 'des séjours'; + END IF; + if (sumField = 'v_mouvements_sejour_2.nb_journees_classement') THEN + onfield_text = 'des journées'; + END IF; + if (sumField = 'v_mouvements_sejour_2.nb_sejours') THEN + onfield_text = 'des séjours'; + END IF; + if (sumField = 'v_factures_lignes_c_4.montant_facture') THEN + onfield_text = 'du C.A.'; + END IF; + if (sumField = 'v_factures_lignes_c_4.nb_sejours') THEN + onfield_text = 'des séjours'; + END IF; + table_name = 'v_sejours_1'; + IF (oidField = 'v_sejours_1.tiers_payant_id') THEN + table_name = 'v_sejours_2'; + END IF; + IF (oidField = 'v_sejours_1.type_tiers_payant_id') THEN + table_name = 'v_sejours_3'; + END IF; + if (sumField = 'v_mouvements_sejour_2.nb_journees_classement') THEN + table_name = 'v_mouvements_sejour_2'; + END IF; + if (sumField = 'v_mouvements_sejour_2.nb_sejours') THEN + table_name = 'v_mouvements_sejour_2'; + END IF; + if (sumField = 'v_factures_lignes_c_4.montant_facture') THEN + table_name = 'v_factures_lignes_c_4'; + END IF; + if (sumField = 'v_factures_lignes_c_4.nb_sejours') THEN + table_name = 'v_factures_lignes_c_4'; + END IF; + + onmaxpercent = 0; + onmaxnumber = 0; + IF(p_onmaxpercent > 0) THEN + onmaxpercent = p_onmaxpercent; + ELSE + IF(p_onmaxnumber > 0) THEN + onmaxnumber = p_onmaxnumber; + END IF; + END IF; + + IF(onmaxpercent = 0 AND onmaxnumber = 0) THEN + onmaxpercent = 100; + END IF; + + IF(onmaxpercent < 100 AND oidfield != '*all') THEN + DROP SEQUENCE IF EXISTS temp_sequence; + CREATE TEMP SEQUENCE temp_sequence; + DROP TABLE IF EXISTS temp_sum_table; + + IF (table_name = 'v_sejours_1') THEN + selectCmdBase = 'SELECT ' || oidField || ' as oid, sum(' || sumField || ') as sum + FROM activite.v_sejours_1 + WHERE ' || p_selections_date || ' ' || p_selections || ' + GROUP BY ' || oidField || ' + ORDER BY sum(' || sumField || ') desc'; + END IF; + IF (table_name = 'v_sejours_2') THEN + selectCmdBase = 'SELECT ' || oidField || ' as oid, sum(' || sumField || ') as sum + FROM activite.v_sejours_2 v_sejours_1 + WHERE ' || p_selections_date || ' ' || p_selections || ' + GROUP BY ' || oidField || ' + ORDER BY sum(' || sumField || ') desc'; + END IF; + IF (table_name = 'v_sejours_3') THEN + selectCmdBase = 'SELECT ' || oidField || ' as oid, sum(' || sumField || ') as sum + FROM activite.v_sejours_3 v_sejours_1 + WHERE ' || p_selections_date || ' ' || p_selections || ' + GROUP BY ' || oidField || ' + ORDER BY sum(' || sumField || ') desc'; + END IF; + IF (table_name = 'v_mouvements_sejour_2') THEN + if (sumField = 'v_mouvements_sejour_2.nb_sejours') THEN + selectCmdBase = 'SELECT ' || oidField || ' as oid, count(DISTINCT v_mouvements_sejour_2.no_sejour) as sum + FROM activite.v_sejours_1, activite.v_mouvements_sejour_2 + WHERE ' || p_selections_date || ' ' || p_selections || ' + AND v_mouvements_sejour_2.no_sejour = v_sejours_1.no_sejour + GROUP BY ' || oidField || ' + ORDER BY count(DISTINCT v_mouvements_sejour_2.no_sejour) desc'; + ELSE + selectCmdBase = 'SELECT ' || oidField || ' as oid, sum(' || sumField || ') as sum + FROM activite.v_sejours_1, activite.v_mouvements_sejour_2 + WHERE ' || p_selections_date || ' ' || p_selections || ' + AND v_mouvements_sejour_2.no_sejour = v_sejours_1.no_sejour + GROUP BY ' || oidField || ' + ORDER BY sum(' || sumField || ') desc'; + END IF; + END IF; + IF (table_name = 'v_factures_lignes_c_4') THEN + if (sumField = 'v_factures_lignes_c_4.nb_sejours') THEN + selectCmdBase = 'SELECT ' || oidField || ' as oid, count(DISTINCT v_factures_lignes_c_4.no_sejour) as sum + FROM activite.v_sejours_1, activite.v_factures_lignes_c_4 + WHERE ' || p_selections_date || ' ' || p_selections || ' + AND v_factures_lignes_c_4.no_sejour = v_sejours_1.no_sejour + GROUP BY ' || oidField || ' + ORDER BY count(DISTINCT v_factures_lignes_c_4.no_sejour) desc'; + ELSE + selectCmdBase = 'SELECT ' || oidField || ' as oid, sum(' || sumField || ') as sum + FROM activite.v_sejours_1, activite.v_factures_lignes_c_4 + WHERE ' || p_selections_date || ' ' || p_selections || ' + AND v_factures_lignes_c_4.no_sejour = v_sejours_1.no_sejour + GROUP BY ' || oidField || ' + ORDER BY sum(' || sumField || ') desc'; + END IF; + END IF; + + selectCmd = 'CREATE TEMP TABLE temp_sum_table AS + SELECT *, 0.00 as temp_pourcentage from ( + SELECT nextval(''temp_sequence''::regclass) as temp_sequence, * from (' || selectCmdBase || ') subview ) subview2'; + EXECUTE selectCmd; + oids_array_toapply=''; + + -- Liste des oids + IF(onmaxpercent > 0) THEN + EXECUTE 'UPDATE temp_sum_table SET temp_pourcentage = (select sum(sum) FROM temp_sum_table temp_sum_table_t WHERE temp_sum_table.temp_sequence > temp_sum_table_t.temp_sequence) / (SELECT sum(sum) FROM temp_sum_table temp_sum_table_t) * 100 WHERE temp_sum_table.temp_sequence > 1'; + IF (oidFieldText = '0') THEN + selectCmd = 'SELECT array(SELECT oid FROM temp_sum_table where temp_pourcentage <= ' || onmaxpercent || '), array(SELECT oid FROM temp_sum_table where temp_pourcentage <= ' || onmaxpercent || ')'; + ELSE + selectCmd = 'SELECT array(SELECT '''''''''''' || oid || '''''''''''' FROM temp_sum_table where temp_pourcentage <= ' || onmaxpercent || '), array(SELECT '''''''' || oid || '''''''' FROM temp_sum_table where temp_pourcentage <= ' || onmaxpercent || ')'; + END IF; + + ELSE + + IF (oidFieldText = '0') THEN + selectCmd = 'SELECT array(SELECT oid FROM temp_sum_table where temp_sequence <= ' || onmaxnumber || '), array(SELECT oid FROM temp_sum_table where temp_sequence <= ' || onmaxnumber || ')'; + ELSE + selectCmd = 'SELECT array(SELECT '''''''''''' || oid || '''''''''''' FROM temp_sum_table where temp_sequence <= ' || onmaxnumber || '), array(SELECT '''''''' || oid || '''''''' FROM temp_sum_table where temp_sequence <= ' || onmaxnumber || ')'; + END IF; + END IF; + OPEN temp_cursor FOR + EXECUTE selectCmd; + FETCH temp_cursor INTO oids_array, oids_array_bis; + WHILE FOUND LOOP + IF(oids_array is null) THEN + IF (oidFieldText = '0') THEN + oids_array = '(-1)'; + oids_array_bis = '(-1)'; + ELSE + oids_array = '(''''-1'''')'; + oids_array_bis = '(''-1'')'; + END IF; + END IF; + oids_array_toapply = translate(oids_array,'{}','()'); + oids_array_bis_toapply = translate(oids_array_bis,'{}','()'); + FETCH temp_cursor INTO oids_array; + END LOOP; + CLOSE temp_cursor; + -- pourcentages retournés + select_percent = 0; + other_percent = 0; + + selectCmd = 'SELECT round(sum(CASE WHEN oid in ' || oids_array_bis_toapply || ' THEN sum ELSE 0 END) / sum(sum) * 100, 0) , sum(sum) FROM temp_sum_table '; + OPEN temp_cursor FOR + EXECUTE selectCmd; + FETCH temp_cursor INTO winteger; + WHILE FOUND LOOP + IF(winteger is null) THEN + winteger = 0; + END IF; + select_percent = winteger; + FETCH temp_cursor INTO oids_array; + END LOOP; + CLOSE temp_cursor; + other_percent = 100 - select_percent; + -- Retour des valeurs + FOR rec IN EXECUTE 'SELECT ''SOUSSELECT_OID_IN''::text, ''AND ' || oidField|| ' IN ' || oids_array_toapply || '''::text + UNION + SELECT ''SOUSSELECT_OID_WHENIN''::text, ''' || oidField || ' IN ' || oids_array_toapply || '''::text + UNION + SELECT ''SOUSSELECT_SELECT_PERCENT''::text, ''' || select_percent || '% ' || onfield_text || '''::text + UNION + SELECT ''SOUSSELECT_OTHER_PERCENT''::text, ''' || other_percent || '% ' || onfield_text || '''::text + UNION + SELECT ''SOUSSELECT_TODO''::text, ''AND ''''1'''' = ''''1''''''::text + ' + + LOOP + RETURN NEXT rec; + END LOOP; + + ELSE + + FOR rec IN EXECUTE 'SELECT ''SOUSSELECT_OID_IN''::text, ''''::text + UNION + SELECT ''SOUSSELECT_OID_WHENIN''::text, ''1 = 1''::text + UNION + SELECT ''SOUSSELECT_SELECT_PERCENT''::text, ''100% ' || onfield_text || '''::text + UNION + SELECT ''SOUSSELECT_OTHER_PERCENT''::text, ''''::text + UNION + SELECT ''SOUSSELECT_TODO''::text, ''AND ''''1'''' <> ''''1''''''::text + ' + + LOOP + RETURN NEXT rec; + END LOOP; + END IF; + RETURN; + END; \ No newline at end of file diff --git a/db/schema2/functions/get_parametre~tx.yaml b/db/schema2/functions/get_parametre~tx.yaml new file mode 100644 index 0000000..822befc --- /dev/null +++ b/db/schema2/functions/get_parametre~tx.yaml @@ -0,0 +1,27 @@ +return: text +lang: plpgsql +parameters: + p0: + type: text + name: i_parametre +strict: STRICT +src: | + DECLARE + _valeur TEXT; + _cursor refcursor; + _returnValue TEXT; + + BEGIN + _returnValue = ''; + OPEN _cursor FOR + SELECT valeur + FROM activite.t_divers + WHERE code = i_parametre; + FETCH _cursor INTO _valeur; + WHILE FOUND LOOP + _returnValue = _valeur; + FETCH _cursor INTO _valeur; + END LOOP; + CLOSE _cursor; + RETURN _returnValue ; + END; \ No newline at end of file diff --git a/db/schema2/functions/get_rapport_columns_case~in,tx.yaml b/db/schema2/functions/get_rapport_columns_case~in,tx.yaml new file mode 100644 index 0000000..a77e45e --- /dev/null +++ b/db/schema2/functions/get_rapport_columns_case~in,tx.yaml @@ -0,0 +1,36 @@ +return: text +lang: plpgsql +parameters: + p0: + type: integer + name: input_rapport_id + p1: + type: text + name: select_name +strict: STRICT +src: | + DECLARE + rapport_columns TEXT; + rapports_cursor refcursor; + numero_rubrique INTEGER; + table_name TEXT; + BEGIN + rapport_columns = 'CASE'; + OPEN rapports_cursor FOR + SELECT t_rapports_rubriques.numero_rubrique, t_indicateurs.table_name + FROM activite.t_rapports_rubriques, activite.t_indicateurs + WHERE rapport_id = $1 AND indicateur_id = t_indicateurs.oid + ORDER BY t_rapports_rubriques.numero_rubrique; + FETCH rapports_cursor INTO numero_rubrique, table_name; + WHILE FOUND LOOP + + IF (table_name != 'SEP') THEN + rapport_columns = rapport_columns || ' WHEN t_rapports_rubriques.numero_rubrique = ' || numero_rubrique || ' THEN ' || $2 || '.indicateur' || numero_rubrique; + END IF; + + FETCH rapports_cursor INTO numero_rubrique, table_name ; + END LOOP; + CLOSE rapports_cursor; + rapport_columns = rapport_columns || ' ELSE 0 END'; + RETURN rapport_columns ; + END; \ No newline at end of file diff --git a/db/schema2/functions/get_rapport_columns~in.yaml b/db/schema2/functions/get_rapport_columns~in.yaml new file mode 100644 index 0000000..d3b270e --- /dev/null +++ b/db/schema2/functions/get_rapport_columns~in.yaml @@ -0,0 +1,48 @@ +return: text +lang: plpgsql +parameters: + p0: + type: integer + name: input_rapport_id +strict: STRICT +src: | + DECLARE + rapport_columns TEXT; + rapports_cursor refcursor; + numero_rubrique INTEGER; + column_name TEXT; + rubrique_texte TEXT; + table_name TEXT; + total_function TEXT; + last_rubrique INTEGER; + BEGIN + rapport_columns = ''; + last_rubrique = 0; + OPEN rapports_cursor FOR + SELECT t_rapports_rubriques.numero_rubrique, t_indicateurs.column_name, t_indicateurs.table_name, t_indicateurs.total_function + FROM activite.t_rapports_rubriques, activite.t_indicateurs + WHERE rapport_id = $1 AND indicateur_id = t_indicateurs.oid ORDER BY t_rapports_rubriques.numero_rubrique; + FETCH rapports_cursor INTO numero_rubrique, column_name , table_name, total_function; + WHILE FOUND LOOP + last_rubrique = last_rubrique + 1; + FOR i IN last_rubrique..numero_rubrique - 1 LOOP + rapport_columns = rapport_columns || ', 0 ' ; + last_rubrique = last_rubrique + 1; + END LOOP; + IF (table_name != 'SEP') THEN + IF (table_name = 'v_rss_1') THEN + rapport_columns = rapport_columns || ', ' || total_function || '(' || column_name || ') ' ; + END IF; + IF (table_name != 'v_rss_1') THEN + rapport_columns = rapport_columns || ', ' || total_function || '(indicateur' || numero_rubrique || ') ' ; + END IF; + END IF; + IF (table_name = 'SEP') THEN + rapport_columns = rapport_columns || ', 0'; + END IF; + rapport_columns = rapport_columns || ' AS indicateur' || numero_rubrique; + FETCH rapports_cursor INTO numero_rubrique, column_name , table_name, total_function; + END LOOP; + CLOSE rapports_cursor; + RETURN rapport_columns ; + END; \ No newline at end of file diff --git a/db/schema2/functions/get_rapport_joins~in.yaml b/db/schema2/functions/get_rapport_joins~in.yaml new file mode 100644 index 0000000..ecc30d7 --- /dev/null +++ b/db/schema2/functions/get_rapport_joins~in.yaml @@ -0,0 +1,67 @@ +return: text +lang: plpgsql +parameters: + p0: + type: integer + name: input_rapport_id +strict: STRICT +src: | + DECLARE + rapport_joins TEXT; + rapport_joins_v_rsf_detail_1 TEXT; + rapport_joins_v_rss_lpp_1 TEXT; + rapport_joins_v_rss_actes_1 TEXT; + rapport_joins_v_rss_diagnostics_1 TEXT; + rapports_cursor refcursor; + numero_rubrique INTEGER; + column_name TEXT; + rubrique_texte TEXT; + table_name TEXT; + total_function TEXT; + last_rubrique INTEGER; + BEGIN + rapport_joins = ''; + rapport_joins_v_rsf_detail_1 = ''; + rapport_joins_v_rss_lpp_1 = ''; + rapport_joins_v_rss_actes_1 = ''; + rapport_joins_v_rss_diagnostics_1 = ''; + OPEN rapports_cursor FOR + SELECT t_rapports_rubriques.numero_rubrique, t_indicateurs.column_name, t_indicateurs.table_name, t_indicateurs.total_function + FROM activite.t_rapports_rubriques, activite.t_indicateurs + WHERE rapport_id = $1 AND indicateur_id = t_indicateurs.oid + ORDER BY numero_rubrique; + FETCH rapports_cursor INTO numero_rubrique, column_name, table_name, total_function; + WHILE FOUND LOOP + IF (table_name = 'v_rsf_detail_1') THEN + rapport_joins_v_rsf_detail_1 = rapport_joins_v_rsf_detail_1 || ', ' || total_function || '(' || column_name || ') AS indicateur' || numero_rubrique; + END IF; + IF (table_name = 'v_rss_lpp_1') THEN + rapport_joins_v_rss_lpp_1 = rapport_joins_v_rss_lpp_1 || ', ' || total_function || '(' || column_name || ') AS indicateur' || numero_rubrique; + END IF; + IF (table_name = 'v_rss_actes_1') THEN + rapport_joins_v_rss_actes_1 = rapport_joins_v_rss_actes_1 || ', ' || total_function || '(' || column_name || ') AS indicateur' || numero_rubrique; + END IF; + IF (table_name = 'v_rss_diagnostics_1') THEN + rapport_joins_v_rss_diagnostics_1 = rapport_joins_rss_diagnostics_1 || ', ' || total_function || '(' || column_name || ') AS indicateur' || numero_rubrique; + END IF; + FETCH rapports_cursor INTO numero_rubrique, column_name, table_name, total_function; + END LOOP; + CLOSE rapports_cursor; + IF (rapport_joins_v_rsf_detail_1 != '') THEN + rapport_joins_v_rsf_detail_1 = 'LEFT JOIN (SELECT v_rsf_detail_1.no_rss, v_rsf_detail_1.finess' || rapport_joins_v_rsf_detail_1 || ' FROM activite.v_rsf_detail_1, activite.v_rss_1 WHERE v_rsf_detail_1.no_rss = activite.v_rss_1.no_rss AND v_rsf_detail_1.finess = activite.v_rss_1.finess GROUP BY v_rsf_detail_1.no_rss, v_rsf_detail_1.finess) subview_v_rsf_detail_1 ON (v_rss_1.no_rss = subview_v_rsf_detail_1.no_rss AND v_rss_1.finess = subview_v_rsf_detail_1.finess) '; + rapport_joins = rapport_joins || rapport_joins_v_rsf_detail_1; + END IF; + IF (rapport_joins_v_rss_lpp_1 != '') THEN + rapport_joins_v_rss_lpp_1 = 'LEFT JOIN (SELECT v_rss_lpp_1.no_rss, v_rss_lpp_1.finess' || rapport_joins_v_rss_lpp_1 || ' FROM activite.v_rss_lpp_1, activite.v_rss_1 WHERE v_rss_lpp_1.no_rss = activite.v_rss_1.no_rss AND v_rss_lpp_1.finess = activite.v_rss_1.finess GROUP BY v_rss_lpp_1.no_rss, v_rss_lpp_1.finess) subview_v_rss_lpp_1 ON (v_rss_1.no_rss = subview_v_rss_lpp_1.no_rss AND v_rss_1.finess = subview_v_rss_lpp_1.finess) '; + rapport_joins = rapport_joins || rapport_joins_v_rss_lpp_1; + END IF; + IF (rapport_joins_v_rss_actes_1 != '') THEN + rapport_joins_v_rss_actes_1 = 'LEFT JOIN (SELECT v_rss_actes_1.no_rss, v_rss_actes_1.finess' || rapport_joins_v_rss_actes_1 || ' FROM activite.v_rss_actes_1, activite.v_rss_1 WHERE v_rss_actes_1.no_rss = activite.v_rss_1.no_rss AND v_rss_actes_1.finess = activite.v_rss_1.finess GROUP BY v_rss_actes_1.no_rss, v_rss_actes_1.finess) subview_v_rss_actes_1 ON (v_rss_1.no_rss = subview_v_rss_1.no_rss AND v_rss_actes_1.finess = subview_v_rss_actes_1.finess) '; + rapport_joins = rapport_joins || rapport_joins_v_rss_actes_1; + END IF; + IF (rapport_joins_v_rss_diagnostics_1 != '') THEN + rapport_joins_v_rss_diagnostics_1 = 'LEFT JOIN (SELECT v_rss_diagnostics_1.no_rss, v_rss_diagnostics_1.finess' || rapport_joins_v_rss_diagnostics_1 || ' FROM activite.v_rss_diagnostics_1, activite.v_rss_1 WHERE v_rss_diagnostics_1.no_rss = activite.v_rss_1.no_rss AND v_rss_diagnostics_1.finess = activite.v_rss_1.finess GROUP BY v_rss_diagnostics_1.no_rss, v_rss_diagnostics_1.finess) subview_v_rss_diagnostics_1 ON (v_rss_1.no_rss = subview_v_rss_diagnostics_1.no_rss AND v_rss_1.finess = subview_v_rss_diagnostics_1.finess) '; + rapport_joins = rapport_joins || rapport_joins_v_rss_diagnostics_1; + END IF; + RETURN rapport_joins; + END; \ No newline at end of file diff --git a/db/schema2/functions/get_valorisation_gmt_forfaitisables.yaml b/db/schema2/functions/get_valorisation_gmt_forfaitisables.yaml new file mode 100644 index 0000000..5f1ad6d --- /dev/null +++ b/db/schema2/functions/get_valorisation_gmt_forfaitisables.yaml @@ -0,0 +1,96 @@ +return: SETOF activite.p_gmt_valorises +lang: plpgsql +src: | + DECLARE + _nb_jours_presence int; + _dzf1 int; + _fzf1 int; + _dzf2 int; + _fzf2 int; + _dzf3 int; + _fzf3 int; + _zone_sejour int; + _montant_valorise int; + _montant_fj int; + _input_record RECORD; + _output_record activite.p_gmt_valorises%ROWTYPE; + BEGIN + FOR _input_record IN + SELECT + p_sejours_groupes_smr.no_sejour + , p_sejours_groupes_smr.nb_jours_presence + , p_sejours_groupes_smr.gme_code + , p_sejours_groupes_smr.gmt_code + , p_sejours_groupes_smr.date_debut_gmt + , p_sejours_groupes_smr.date_fin_gmt + , v_tarifs_prive_gmt_forfaitisables.texte + , v_tarifs_prive_gmt_forfaitisables.dzf + , v_tarifs_prive_gmt_forfaitisables.fzf + , v_tarifs_prive_gmt_forfaitisables.tzb + , v_tarifs_prive_gmt_forfaitisables.tzf1 + , v_tarifs_prive_gmt_forfaitisables.tzf2 + , v_tarifs_prive_gmt_forfaitisables.tzf3 + , v_tarifs_prive_gmt_forfaitisables.szb + , v_tarifs_prive_gmt_forfaitisables.szh + FROM activite.p_sejours_groupes_smr + JOIN base.v_tarifs_prive_gmt_forfaitisables ON p_sejours_groupes_smr.gmt_code = v_tarifs_prive_gmt_forfaitisables.code + AND p_sejours_groupes_smr.date_fin_gmt BETWEEN v_tarifs_prive_gmt_forfaitisables.date_debut AND v_tarifs_prive_gmt_forfaitisables.date_fin + AND p_sejours_groupes_smr.gme_code = v_tarifs_prive_gmt_forfaitisables.gme_code + WHERE p_sejours_groupes_smr.types_gmt_code = 'hc_forfaitisable' + LOOP + _nb_jours_presence := LEAST(_input_record.nb_jours_presence, 90); + SELECT COALESCE(activite.get_montant_fj_valorise_par_sejour(_input_record.no_sejour), 0) INTO _montant_fj; + + -- Une zone forfaitaire dure 3 semaines soit 21 jours + -- Nous ne disposons que des valeurs de début de zone forfaitaire (dzf) et de fin de zone forfaitaire (fzf) + -- Nous calculons donc les autres délimiteurs des trois zones différentes (dzf1, fzf1, dzf2, fzf2, dzf3, fzf3) + -- Chaque zone INCLUT ses propres délimiteurs de début et fin de zone (soit 7 jours complets) + + -- Le début des zones commence le lendemain de la fin de zone de la précédente (logique) (ex : dzf2 = fzf1 + 1) + -- Sauf pour dzf1 qui est égal au dzf déjà fourni par l'ATIH + -- La fin d'une zone est donc calculée comme étant début de la zone + 6 jours (ex : dzf1 = 8, fzf = 14) + -- Sauf pour fzf3 qui est égal à fzf déjà fourni par l'ATIH + _dzf1 := _input_record.dzf; + _fzf1 := _dzf1 + 6; + _dzf2 := _fzf1 + 1; + _fzf2 := _dzf2 + 6; + _dzf3 := _fzf2 + 1; + _fzf3 := _input_record.fzf; + + IF _nb_jours_presence > _fzf3 + THEN + _zone_sejour := 5; + ELSIF _nb_jours_presence >= _dzf3 + THEN + _zone_sejour := 4; + ELSIF _nb_jours_presence >= _dzf2 + THEN + _zone_sejour := 3; + ELSIF _nb_jours_presence >= _dzf1 + THEN + _zone_sejour := 2; + ELSE + _zone_sejour := 1; + END IF; + + CASE _zone_sejour + WHEN 1 THEN _montant_valorise := _input_record.tzb - (_input_record.dzf - _nb_jours_presence) * _input_record.szb; + WHEN 2 THEN _montant_valorise := _input_record.tzf1; + WHEN 3 THEN _montant_valorise := _input_record.tzf2; + WHEN 4 THEN _montant_valorise := _input_record.tzf3; + WHEN 5 THEN _montant_valorise := _input_record.tzf3 + (_nb_jours_presence - _input_record.fzf) * _input_record.szh; + END CASE; + + _output_record.no_sejour := _input_record.no_sejour; + _output_record.gme_code := _input_record.gme_code; + _output_record.gmt_code := _input_record.gmt_code; + _output_record.gmt_libelle := _input_record.texte; + _output_record.date_debut_gmt := _input_record.date_debut_gmt; + _output_record.date_fin_gmt := _input_record.date_fin_gmt; + _output_record.montant_valorise := _montant_valorise - _montant_fj; + _output_record.montant_valorise_par_jour := (_montant_valorise - _montant_fj) / _nb_jours_presence; + + RETURN NEXT _output_record; + END LOOP; + RETURN; + END; \ No newline at end of file diff --git a/db/schema2/functions/get_valorisation_gmt_hc_sans_zf.yaml b/db/schema2/functions/get_valorisation_gmt_hc_sans_zf.yaml new file mode 100644 index 0000000..b218dfe --- /dev/null +++ b/db/schema2/functions/get_valorisation_gmt_hc_sans_zf.yaml @@ -0,0 +1,80 @@ +return: SETOF activite.p_gmt_valorises +lang: plpgsql +src: | + DECLARE + _nb_jours_presence int; + _zone_sejour int; + _montant_valorise int; + _montant_fj int; + _input_record RECORD; + _output_record activite.p_gmt_valorises%ROWTYPE; + BEGIN + FOR _input_record IN + SELECT + p_sejours_groupes_smr.no_sejour, + p_sejours_groupes_smr.nb_jours_presence, + p_sejours_groupes_smr.gme_code, + p_sejours_groupes_smr.gmt_code, + p_sejours_groupes_smr.date_debut_gmt, + p_sejours_groupes_smr.date_fin_gmt, + COALESCE(v1.texte, v2.texte, v3.texte) AS texte, + COALESCE(v1.dzf, v2.dzf, v3.dzf) AS dzf, + COALESCE(v1.fzf, v2.fzf, v3.fzf) AS fzf, + COALESCE(v1.tzb, v2.tzb, v3.tzb) AS tzb, + COALESCE(v1.tzf1, v2.tzf1, v3.tzf1) AS tzf1, + COALESCE(v1.szb, v2.szb, v3.szb) AS szb, + COALESCE(v1.szh, v2.szh, v3.szh) AS szh + FROM activite.p_sejours_groupes_smr + LEFT JOIN base.v_tarifs_prive_gmt_en_7 v1 ON p_sejours_groupes_smr.gmt_code = v1.code + AND p_sejours_groupes_smr.date_fin_gmt BETWEEN v1.date_debut AND v1.date_fin + AND p_sejours_groupes_smr.gme_code = v1.gme_code + LEFT JOIN base.v_tarifs_prive_gmt_en_8 v2 ON p_sejours_groupes_smr.gmt_code = v2.code + AND p_sejours_groupes_smr.date_fin_gmt BETWEEN v2.date_debut AND v2.date_fin + AND p_sejours_groupes_smr.gme_code = v2.gme_code + LEFT JOIN base.v_tarifs_prive_gmt_dzf_90 v3 ON p_sejours_groupes_smr.gmt_code = v3.code + AND p_sejours_groupes_smr.date_fin_gmt BETWEEN v3.date_debut AND v3.date_fin + AND p_sejours_groupes_smr.gme_code = v3.gme_code + WHERE p_sejours_groupes_smr.types_gmt_code = 'hc_sans_zf' + LOOP + IF _input_record.gmt_code LIKE '7%' + THEN + _nb_jours_presence := _input_record.nb_jours_presence; + ELSE + _nb_jours_presence := LEAST(_input_record.nb_jours_presence, 90); + END IF; + SELECT COALESCE(activite.get_montant_fj_valorise_par_sejour(_input_record.no_sejour), 0) INTO _montant_fj; + + IF _nb_jours_presence >= _input_record.dzf + THEN + _zone_sejour := 2; + ELSE + _zone_sejour := 1; + END IF; + + CASE _zone_sejour + WHEN 1 THEN _montant_valorise := _input_record.tzb - (_input_record.dzf - _nb_jours_presence) * _input_record.szb ; + WHEN 2 THEN _montant_valorise := _input_record.tzf1; + END CASE + ; + + _output_record.no_sejour := _input_record.no_sejour; + _output_record.gme_code := _input_record.gme_code; + _output_record.gmt_code := _input_record.gmt_code; + _output_record.gmt_libelle := _input_record.texte; + _output_record.date_debut_gmt := _input_record.date_debut_gmt; + _output_record.date_fin_gmt := _input_record.date_fin_gmt; + + IF _input_record.gmt_code LIKE '7%' + THEN + _output_record.montant_valorise := (_montant_valorise * _nb_jours_presence/7) - _montant_fj; + _output_record.montant_valorise_par_jour := ((_montant_valorise * _nb_jours_presence/7) - _montant_fj) / _nb_jours_presence; + ELSE + _output_record.montant_valorise := _montant_valorise - _montant_fj; + _output_record.montant_valorise_par_jour := (_montant_valorise - _montant_fj) / _nb_jours_presence; + END IF; + + RETURN NEXT _output_record; + END LOOP; + + RETURN; + END; \ No newline at end of file diff --git a/db/schema2/functions/get_valorisation_gmt_hospitalisation_partielle.yaml b/db/schema2/functions/get_valorisation_gmt_hospitalisation_partielle.yaml new file mode 100644 index 0000000..d727a88 --- /dev/null +++ b/db/schema2/functions/get_valorisation_gmt_hospitalisation_partielle.yaml @@ -0,0 +1,40 @@ +return: SETOF activite.p_gmt_valorises +lang: plpgsql +src: | + DECLARE + _input_record RECORD; + _output_record activite.p_gmt_valorises%ROWTYPE; + BEGIN + FOR _input_record IN + SELECT + p_sejours_groupes_smr.no_sejour + , p_sejours_groupes_smr.nb_jours_presence + , p_sejours_groupes_smr.gme_code + , p_sejours_groupes_smr.gmt_code + , p_sejours_groupes_smr.date_debut_gmt + , p_sejours_groupes_smr.date_fin_gmt + , v_tarifs_prive_gmt_hospitalisation_partielle.texte + , v_tarifs_prive_gmt_hospitalisation_partielle.dzf + , v_tarifs_prive_gmt_hospitalisation_partielle.fzf + , v_tarifs_prive_gmt_hospitalisation_partielle.tzb + , v_tarifs_prive_gmt_hospitalisation_partielle.tzf1 + , v_tarifs_prive_gmt_hospitalisation_partielle.szb + , v_tarifs_prive_gmt_hospitalisation_partielle.szh + FROM activite.p_sejours_groupes_smr + JOIN base.v_tarifs_prive_gmt_hospitalisation_partielle ON p_sejours_groupes_smr.gmt_code = v_tarifs_prive_gmt_hospitalisation_partielle.code + AND p_sejours_groupes_smr.date_fin_gmt BETWEEN v_tarifs_prive_gmt_hospitalisation_partielle.date_debut AND v_tarifs_prive_gmt_hospitalisation_partielle.date_fin + AND p_sejours_groupes_smr.gme_code = v_tarifs_prive_gmt_hospitalisation_partielle.gme_code + WHERE p_sejours_groupes_smr.types_gmt_code = 'hp_hebdomadaire' + LOOP + _output_record.no_sejour := _input_record.no_sejour; + _output_record.gme_code := _input_record.gme_code; + _output_record.gmt_code := _input_record.gmt_code; + _output_record.gmt_libelle := _input_record.texte; + _output_record.date_debut_gmt := _input_record.date_debut_gmt; + _output_record.date_fin_gmt := _input_record.date_fin_gmt; + _output_record.montant_valorise := _input_record.tzf1 * _input_record.nb_jours_presence; + _output_record.montant_valorise_par_jour := _input_record.tzf1; + RETURN NEXT _output_record; + END LOOP; + RETURN; + END; \ No newline at end of file diff --git a/db/schema2/functions/get_valorisation_gmt_non_forfaitisables.yaml b/db/schema2/functions/get_valorisation_gmt_non_forfaitisables.yaml new file mode 100644 index 0000000..352d7b5 --- /dev/null +++ b/db/schema2/functions/get_valorisation_gmt_non_forfaitisables.yaml @@ -0,0 +1,65 @@ +return: SETOF activite.p_gmt_valorises +lang: plpgsql +src: | + DECLARE + _nb_jours_presence int; + _zone_sejour int; + _montant_valorise int; + _montant_fj int; + _input_record RECORD; + _output_record activite.p_gmt_valorises%ROWTYPE; + BEGIN + FOR _input_record IN + SELECT + p_sejours_groupes_smr.no_sejour + , p_sejours_groupes_smr.nb_jours_presence + , p_sejours_groupes_smr.gme_code + , p_sejours_groupes_smr.gmt_code + , p_sejours_groupes_smr.date_debut_gmt + , p_sejours_groupes_smr.date_fin_gmt + , v_tarifs_prive_gmt_non_forfaitisables.texte + , v_tarifs_prive_gmt_non_forfaitisables.dzf + , v_tarifs_prive_gmt_non_forfaitisables.fzf + , v_tarifs_prive_gmt_non_forfaitisables.tzb + , v_tarifs_prive_gmt_non_forfaitisables.tzf1 + , v_tarifs_prive_gmt_non_forfaitisables.szb + , v_tarifs_prive_gmt_non_forfaitisables.szh + FROM activite.p_sejours_groupes_smr + JOIN base.v_tarifs_prive_gmt_non_forfaitisables ON p_sejours_groupes_smr.gmt_code = v_tarifs_prive_gmt_non_forfaitisables.code + AND p_sejours_groupes_smr.date_fin_gmt BETWEEN v_tarifs_prive_gmt_non_forfaitisables.date_debut AND v_tarifs_prive_gmt_non_forfaitisables.date_fin + AND p_sejours_groupes_smr.gme_code = v_tarifs_prive_gmt_non_forfaitisables.gme_code + WHERE p_sejours_groupes_smr.types_gmt_code = 'hc_non_forfaitisable' + LOOP + _nb_jours_presence := LEAST(_input_record.nb_jours_presence, 90); + SELECT COALESCE(activite.get_montant_fj_valorise_par_sejour(_input_record.no_sejour), 0) INTO _montant_fj; + + IF _nb_jours_presence > _input_record.fzf + THEN + _zone_sejour := 3; + ELSIF _nb_jours_presence >= _input_record.dzf + THEN + _zone_sejour := 2; + ELSE + _zone_sejour := 1; + END IF; + + CASE _zone_sejour + WHEN 1 THEN _montant_valorise := _input_record.tzb - (_input_record.dzf - _nb_jours_presence) * _input_record.szb; + WHEN 2 THEN _montant_valorise := _input_record.tzf1; + WHEN 3 THEN _montant_valorise := _input_record.tzf1 + (_nb_jours_presence - _input_record.fzf) * _input_record.szh; + END CASE; + + _output_record.no_sejour := _input_record.no_sejour; + _output_record.gme_code := _input_record.gme_code; + _output_record.gmt_code := _input_record.gmt_code; + _output_record.gmt_libelle := _input_record.texte; + _output_record.date_debut_gmt := _input_record.date_debut_gmt; + _output_record.date_fin_gmt := _input_record.date_fin_gmt; + _output_record.montant_valorise := _montant_valorise - _montant_fj; + _output_record.montant_valorise_par_jour := (_montant_valorise - _montant_fj) / _nb_jours_presence; + + RETURN NEXT _output_record; + END LOOP; + RETURN; + + END; \ No newline at end of file diff --git a/db/schema2/functions/valoriser_sejours_groupes_smr.yaml b/db/schema2/functions/valoriser_sejours_groupes_smr.yaml new file mode 100644 index 0000000..5eb43e9 --- /dev/null +++ b/db/schema2/functions/valoriser_sejours_groupes_smr.yaml @@ -0,0 +1,100 @@ +return: void +lang: plpgsql +src: | + BEGIN + + -- Appeler les différentes fonctions de valorisation + -- Insérer les enregistrements renvoyés par ces fonctions dans la table finale p_gmt_valorises + -- TODO : Gestion des logs et des erreurs + -- TODO : Sous forme de transactions + + TRUNCATE activite.p_gmt_valorises; + + -- Insertion des montants calculés pour les séjours ayant des GMT forfaitisables + INSERT INTO activite.p_gmt_valorises( + no_sejour + , gme_code + , gmt_code + , gmt_libelle + , date_debut_gmt + , date_fin_gmt + , montant_valorise + , montant_valorise_par_jour + ) + SELECT + no_sejour + , gme_code + , gmt_code + , gmt_libelle + , date_debut_gmt + , date_fin_gmt + , montant_valorise + , montant_valorise_par_jour + FROM activite.get_valorisation_gmt_forfaitisables(); + + -- Insertion des montants calculés pour les séjours ayant des GMT non forfaitisables + INSERT INTO activite.p_gmt_valorises( + no_sejour + ,gme_code + ,gmt_code + ,gmt_libelle + ,date_debut_gmt + ,date_fin_gmt + ,montant_valorise + ,montant_valorise_par_jour + ) + SELECT + no_sejour + , gme_code + , gmt_code + , gmt_libelle + , date_debut_gmt + , date_fin_gmt + , montant_valorise + , montant_valorise_par_jour + FROM activite.get_valorisation_gmt_non_forfaitisables(); + + -- Insertion des montants calculés pour les séjours ayant des GMT sans zone forfaitaire (GMT en 8, GMT en 7, et GMT avec DZF = FZF = 90 ou 7) + INSERT INTO activite.p_gmt_valorises( + no_sejour + , gme_code + , gmt_code + , gmt_libelle + , date_debut_gmt + , date_fin_gmt + , montant_valorise + , montant_valorise_par_jour + ) + SELECT + no_sejour + , gme_code + , gmt_code + , gmt_libelle + , date_debut_gmt + , date_fin_gmt + , montant_valorise + , montant_valorise_par_jour + FROM activite.get_valorisation_gmt_hc_sans_zf(); + + -- Insertion des montants calculés pour les séjours ayant des GMT hospitalisation partielle + INSERT INTO activite.p_gmt_valorises( + no_sejour + , gme_code + , gmt_code + , gmt_libelle + , date_debut_gmt + , date_fin_gmt + , montant_valorise + , montant_valorise_par_jour + ) + SELECT + no_sejour + , gme_code + , gmt_code + , gmt_libelle + , date_debut_gmt + , date_fin_gmt + , montant_valorise + , montant_valorise_par_jour + FROM activite.get_valorisation_gmt_hospitalisation_partielle(); + END; \ No newline at end of file diff --git a/db/schema2/sequences/s_activites.yaml b/db/schema2/sequences/s_activites.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_activites.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_bloc.yaml b/db/schema2/sequences/s_bloc.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_bloc.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_bloc_motif_intervention.yaml b/db/schema2/sequences/s_bloc_motif_intervention.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_bloc_motif_intervention.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_bloc_occupation.yaml b/db/schema2/sequences/s_bloc_occupation.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_bloc_occupation.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_bloc_salle.yaml b/db/schema2/sequences/s_bloc_salle.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_bloc_salle.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_bloc_salle_disponibilite.yaml b/db/schema2/sequences/s_bloc_salle_disponibilite.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_bloc_salle_disponibilite.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_budget.yaml b/db/schema2/sequences/s_budget.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_budget.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_budget_cle.yaml b/db/schema2/sequences/s_budget_cle.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_budget_cle.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_budget_cle_rule.yaml b/db/schema2/sequences/s_budget_cle_rule.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_budget_cle_rule.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_budget_indicateur.yaml b/db/schema2/sequences/s_budget_indicateur.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_budget_indicateur.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_budgets.yaml b/db/schema2/sequences/s_budgets.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_budgets.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_budgets_saisis.yaml b/db/schema2/sequences/s_budgets_saisis.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_budgets_saisis.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_calcul_encours.yaml b/db/schema2/sequences/s_calcul_encours.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_calcul_encours.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_chart.yaml b/db/schema2/sequences/s_chart.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_chart.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_classes.yaml b/db/schema2/sequences/s_classes.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_classes.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_classes_sections.yaml b/db/schema2/sequences/s_classes_sections.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_classes_sections.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_compte.yaml b/db/schema2/sequences/s_compte.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_compte.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_compte_produit_analytique_rule.yaml b/db/schema2/sequences/s_compte_produit_analytique_rule.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_compte_produit_analytique_rule.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_dashboard.yaml b/db/schema2/sequences/s_dashboard.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_dashboard.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_dashboard_filter.yaml b/db/schema2/sequences/s_dashboard_filter.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_dashboard_filter.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_dashboard_onglet.yaml b/db/schema2/sequences/s_dashboard_onglet.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_dashboard_onglet.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_dashboard_widget.yaml b/db/schema2/sequences/s_dashboard_widget.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_dashboard_widget.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_etages.yaml b/db/schema2/sequences/s_etages.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_etages.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_etat_sejour.yaml b/db/schema2/sequences/s_etat_sejour.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_etat_sejour.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_expert_controle.yaml b/db/schema2/sequences/s_expert_controle.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_expert_controle.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_expert_controle_rule.yaml b/db/schema2/sequences/s_expert_controle_rule.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_expert_controle_rule.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_factures.yaml b/db/schema2/sequences/s_factures.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_factures.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_factures_encours.yaml b/db/schema2/sequences/s_factures_encours.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_factures_encours.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_filiere_soin.yaml b/db/schema2/sequences/s_filiere_soin.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_filiere_soin.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_filiere_soin_rule.yaml b/db/schema2/sequences/s_filiere_soin_rule.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_filiere_soin_rule.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_forme_activite.yaml b/db/schema2/sequences/s_forme_activite.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_forme_activite.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_forme_activite_rule.yaml b/db/schema2/sequences/s_forme_activite_rule.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_forme_activite_rule.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_indicateur_condition.yaml b/db/schema2/sequences/s_indicateur_condition.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_indicateur_condition.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_indicateur_condition_table.yaml b/db/schema2/sequences/s_indicateur_condition_table.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_indicateur_condition_table.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_indicateur_serie.yaml b/db/schema2/sequences/s_indicateur_serie.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_indicateur_serie.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_indicateur_theme.yaml b/db/schema2/sequences/s_indicateur_theme.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_indicateur_theme.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_indicateurs.yaml b/db/schema2/sequences/s_indicateurs.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_indicateurs.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_journal.yaml b/db/schema2/sequences/s_journal.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_journal.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_kiwee_params.yaml b/db/schema2/sequences/s_kiwee_params.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_kiwee_params.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_lieux.yaml b/db/schema2/sequences/s_lieux.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_lieux.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_listes.yaml b/db/schema2/sequences/s_listes.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_listes.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_listes_tables.yaml b/db/schema2/sequences/s_listes_tables.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_listes_tables.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_lit_historique.yaml b/db/schema2/sequences/s_lit_historique.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_lit_historique.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_lits.yaml b/db/schema2/sequences/s_lits.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_lits.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_medecins.yaml b/db/schema2/sequences/s_medecins.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_medecins.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_medecins_traitants_administratifs.yaml b/db/schema2/sequences/s_medecins_traitants_administratifs.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_medecins_traitants_administratifs.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_motif_non_facturation.yaml b/db/schema2/sequences/s_motif_non_facturation.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_motif_non_facturation.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_parametre_personnalise_sejour_1.yaml b/db/schema2/sequences/s_parametre_personnalise_sejour_1.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_parametre_personnalise_sejour_1.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_parametre_personnalise_sejour_2.yaml b/db/schema2/sequences/s_parametre_personnalise_sejour_2.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_parametre_personnalise_sejour_2.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_pole_rule.yaml b/db/schema2/sequences/s_pole_rule.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_pole_rule.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_prestations.yaml b/db/schema2/sequences/s_prestations.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_prestations.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_protocoles.yaml b/db/schema2/sequences/s_protocoles.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_protocoles.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_rapports.yaml b/db/schema2/sequences/s_rapports.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_rapports.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_rejets_noemie.yaml b/db/schema2/sequences/s_rejets_noemie.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_rejets_noemie.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_risque.yaml b/db/schema2/sequences/s_risque.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_risque.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_rubrique_facture_c.yaml b/db/schema2/sequences/s_rubrique_facture_c.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_rubrique_facture_c.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_rubriques_facturation.yaml b/db/schema2/sequences/s_rubriques_facturation.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_rubriques_facturation.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_sejour.yaml b/db/schema2/sequences/s_sejour.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_sejour.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_sejours.yaml b/db/schema2/sequences/s_sejours.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_sejours.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_service_rubrique.yaml b/db/schema2/sequences/s_service_rubrique.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_service_rubrique.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_service_rubrique_dotation.yaml b/db/schema2/sequences/s_service_rubrique_dotation.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_service_rubrique_dotation.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_services_facturation.yaml b/db/schema2/sequences/s_services_facturation.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_services_facturation.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_sigems_transformation_uf.yaml b/db/schema2/sequences/s_sigems_transformation_uf.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_sigems_transformation_uf.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_specialites_medecin.yaml b/db/schema2/sequences/s_specialites_medecin.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_specialites_medecin.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_tiers_payant.yaml b/db/schema2/sequences/s_tiers_payant.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_tiers_payant.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_transformation.yaml b/db/schema2/sequences/s_transformation.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_transformation.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_unites_fonctionnelles.yaml b/db/schema2/sequences/s_unites_fonctionnelles.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_unites_fonctionnelles.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_unites_medicales.yaml b/db/schema2/sequences/s_unites_medicales.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_unites_medicales.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_validation_parametre.yaml b/db/schema2/sequences/s_validation_parametre.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_validation_parametre.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_vue_parametre.yaml b/db/schema2/sequences/s_vue_parametre.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_vue_parametre.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/sequences/s_web100t_forcage_uf_soin.yaml b/db/schema2/sequences/s_web100t_forcage_uf_soin.yaml new file mode 100644 index 0000000..e63c2f9 --- /dev/null +++ b/db/schema2/sequences/s_web100t_forcage_uf_soin.yaml @@ -0,0 +1,5 @@ +min: NO MINVALUE +max: NO MAXVALUE +start: 1 +increment: 1 +cache: 1 \ No newline at end of file diff --git a/db/schema2/tables/p_bloc_occupation.yaml b/db/schema2/tables/p_bloc_occupation.yaml new file mode 100644 index 0000000..12f9ae5 --- /dev/null +++ b/db/schema2/tables/p_bloc_occupation.yaml @@ -0,0 +1,92 @@ +columns: + code_original: + type: text + date: + type: date + not_null: NOT NULL + date_programmation: + type: date + default: "'2099-12-31'::date" + duree_debordement: + type: numeric + default: "0" + duree_disponible: + type: numeric + default: "0" + duree_occupation: + type: numeric + default: "0" + duree_remise_en_etat: + type: numeric + default: "0" + duree_salle: + type: numeric + default: "0" + duree_total: + type: numeric + default: "0" + finess_id: + type: bigint + default: "0" + heure_debut_occupation: + type: timestamp without time zone + default: "'2099-12-31 00:00:00'::timestamp without time zone" + heure_debut_remise_en_etat: + type: timestamp without time zone + default: "'2099-12-31 00:00:00'::timestamp without time zone" + heure_entree_salle: + type: timestamp without time zone + default: "'2099-12-31 00:00:00'::timestamp without time zone" + heure_fin_occupation: + type: timestamp without time zone + default: "'2099-12-31 00:00:00'::timestamp without time zone" + heure_fin_remise_en_etat: + type: timestamp without time zone + default: "'2099-12-31 00:00:00'::timestamp without time zone" + heure_sortie_salle: + type: timestamp without time zone + default: "'2099-12-31 00:00:00'::timestamp without time zone" + medecin_chirurgien_id: + type: bigint + default: "0" + motif_intervention_id: + type: bigint + default: "0" + no_sejour: + type: text + not_null: NOT NULL + oid: + type: bigint + default: "nextval('s_bloc_occupation'::regclass)" + salle_id: + type: bigint + sejour_id: + type: bigint + type_mouvement: + type: text + default: "''::text" + type_programmation: + type: text + default: "''::text" + valide: + type: text + default: "''::text" +indexes: + i_bloc_occupation_date_key: + column: date + method: btree + i_bloc_occupation_medecin_chirurgien_id_key: + column: medecin_chirurgien_id + method: btree + i_bloc_occupation_motif_intervention_id_key: + column: motif_intervention_id + method: btree + i_bloc_occupation_no_sejour_id_key: + column: no_sejour + method: btree + i_bloc_occupation_salle_id_key: + column: salle_id + method: btree + i_bloc_occupation_sejour_id_key: + column: sejour_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_budgets_generes.yaml b/db/schema2/tables/p_budgets_generes.yaml new file mode 100644 index 0000000..9cf1362 --- /dev/null +++ b/db/schema2/tables/p_budgets_generes.yaml @@ -0,0 +1,34 @@ +columns: + budget_saisi_id: + type: bigint + not_null: NOT NULL + date: + type: date + nb_ambulatoires: + type: numeric(11,0) + default: "0" + nb_entrees_directes: + type: numeric(7,0) + default: "0" + nb_externes: + type: numeric(11,0) + default: "0" + nb_jours_js_non_inclus: + type: numeric(11,0) + default: "0" + nb_seances: + type: numeric(11,0) + default: "0" + nb_sorties_directes: + type: numeric(7,0) + default: "0" + parent_id: + type: bigint + not_null: NOT NULL +indexes: + i_budgets_generes_1: + column: budget_saisi_id + method: btree + i_budgets_generes_2: + column: date + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_chiffrier.yaml b/db/schema2/tables/p_chiffrier.yaml new file mode 100644 index 0000000..fede9bd --- /dev/null +++ b/db/schema2/tables/p_chiffrier.yaml @@ -0,0 +1,8 @@ +columns: + mois: + type: numeric(6,0) + not_null: NOT NULL +constraints: + p_chiffrier_pkey: + type: PRIMARY KEY + column: mois \ No newline at end of file diff --git a/db/schema2/tables/p_chiffrier_comptable.yaml b/db/schema2/tables/p_chiffrier_comptable.yaml new file mode 100644 index 0000000..fe6a3ff --- /dev/null +++ b/db/schema2/tables/p_chiffrier_comptable.yaml @@ -0,0 +1,35 @@ +columns: + date_comptable: + type: date + not_null: NOT NULL + default: "'2099-12-31'::date" + finess: + type: character(9) + not_null: NOT NULL + default: "''::bpchar" + montant_reglements_c: + type: numeric(13,2) + default: "0" + montant_reglements_h: + type: numeric(13,2) + default: "0" + montant_solde_client_c: + type: numeric(13,2) + default: "0" + montant_solde_client_h: + type: numeric(13,2) + default: "0" + montant_ventes_c: + type: numeric(13,2) + default: "0" + montant_ventes_h: + type: numeric(13,2) + default: "0" + provider_id: + type: bigint + not_null: NOT NULL + default: "0" +constraints: + p_chiffrier_comptable_ukey: + type: PRIMARY KEY + column: date_comptable, finess, provider_id \ No newline at end of file diff --git a/db/schema2/tables/p_chiffrier_data_calcule_gliss.yaml b/db/schema2/tables/p_chiffrier_data_calcule_gliss.yaml new file mode 100644 index 0000000..4c3d050 --- /dev/null +++ b/db/schema2/tables/p_chiffrier_data_calcule_gliss.yaml @@ -0,0 +1,37 @@ +columns: + date_comptable: + type: date + date_groupage: + type: date + date_occupation: + type: date + date_sortie: + type: date + montant_comptabilise: + type: numeric + montant_comptabilise_dt_grp: + type: numeric + montant_comptabilise_dt_occ: + type: numeric + montant_comptabilise_dt_sor: + type: numeric + montant_encours_cti: + type: numeric + montant_encours_prs: + type: numeric + montant_regle: + type: numeric + montant_report_encours_cti: + type: numeric + montant_report_encours_prs: + type: numeric + montant_solde: + type: numeric + nb_sejour: + type: bigint + nb_sejour_dt_grp: + type: bigint + nb_sejour_dt_occ: + type: bigint + nb_sejour_dt_sor: + type: bigint \ No newline at end of file diff --git a/db/schema2/tables/p_chiffrier_occupation.yaml b/db/schema2/tables/p_chiffrier_occupation.yaml new file mode 100644 index 0000000..f7838c1 --- /dev/null +++ b/db/schema2/tables/p_chiffrier_occupation.yaml @@ -0,0 +1,26 @@ +columns: + date: + type: date + not_null: NOT NULL + default: "'2099-12-31'::date" + finess: + type: character(9) + not_null: NOT NULL + default: "''::bpchar" + nb_entrees_directes: + type: numeric(13,0) + default: "0" + nb_sorties_directes: + type: numeric(13,0) + default: "0" + no_sejour: + type: text + not_null: NOT NULL + provider_id: + type: bigint + not_null: NOT NULL + default: "0" +constraints: + p_chiffrier_occupation_ukey: + type: PRIMARY KEY + column: date, finess, no_sejour, provider_id \ No newline at end of file diff --git a/db/schema2/tables/p_chiffrier_resultat_calcule_gliss.yaml b/db/schema2/tables/p_chiffrier_resultat_calcule_gliss.yaml new file mode 100644 index 0000000..7b5671e --- /dev/null +++ b/db/schema2/tables/p_chiffrier_resultat_calcule_gliss.yaml @@ -0,0 +1,51 @@ +columns: + date_comptable: + type: date + mt_act_cpt: + type: numeric + mt_act_cpt_j: + type: numeric + mt_cpt: + type: numeric + mt_cpt_grp: + type: numeric + mt_cpt_grp_j: + type: numeric + mt_cpt_j: + type: numeric + mt_cpt_occ: + type: numeric + mt_cpt_occ_j: + type: numeric + mt_cpt_sor: + type: numeric + mt_cpt_sor_j: + type: numeric + mt_reg: + type: numeric + mt_reg_j: + type: numeric + mt_sol: + type: numeric + mt_sol_j: + type: numeric + nb_sej: + type: numeric + nb_sej_dt_grp: + type: numeric + nb_sej_dt_grp_j: + type: numeric + nb_sej_dt_occ: + type: numeric + nb_sej_dt_occ_j: + type: numeric + nb_sej_dt_sor: + type: numeric + nb_sej_dt_sor_j: + type: numeric + nb_sej_j: + type: numeric + periode: + type: text + texte: + type: text \ No newline at end of file diff --git a/db/schema2/tables/p_chiffrier_shs.yaml b/db/schema2/tables/p_chiffrier_shs.yaml new file mode 100644 index 0000000..1a95cf9 --- /dev/null +++ b/db/schema2/tables/p_chiffrier_shs.yaml @@ -0,0 +1,27 @@ +columns: + date_comptable: + type: date + not_null: NOT NULL + default: "'2099-12-31'::date" + montant_reglements_c: + type: numeric(13,2) + default: "0" + montant_reglements_h: + type: numeric(13,2) + default: "0" + montant_solde_client_c: + type: numeric(13,2) + default: "0" + montant_solde_client_h: + type: numeric(13,2) + default: "0" + montant_ventes_c: + type: numeric(13,2) + default: "0" + montant_ventes_h: + type: numeric(13,2) + default: "0" +constraints: + p_chiffrier_ukey: + type: PRIMARY KEY + column: date_comptable \ No newline at end of file diff --git a/db/schema2/tables/p_consolidation_translation.yaml b/db/schema2/tables/p_consolidation_translation.yaml new file mode 100644 index 0000000..3ca5ada --- /dev/null +++ b/db/schema2/tables/p_consolidation_translation.yaml @@ -0,0 +1,30 @@ +columns: + from_code: + type: text + default: "''::text" + from_database: + type: text + from_id: + type: bigint + default: "0" + table_code: + type: text + to_code: + type: text + default: "''::text" + to_id: + type: bigint + default: "0" +indexes: + i_consolidation_translation_1: + column: from_database + method: btree + i_consolidation_translation_2: + column: table_code + method: btree + i_consolidation_translation_3: + column: from_id + method: btree + i_consolidation_translation_4: + column: to_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_coordonnees_patient.yaml b/db/schema2/tables/p_coordonnees_patient.yaml new file mode 100644 index 0000000..6b5e284 --- /dev/null +++ b/db/schema2/tables/p_coordonnees_patient.yaml @@ -0,0 +1,17 @@ +columns: + adresse: + type: text + code_postal_id: + type: bigint + default: "0" + commune: + type: text + default: "''::text" + email: + type: text + sejour_id: + type: bigint + telephone_fixe: + type: text + telephone_portable: + type: text \ No newline at end of file diff --git a/db/schema2/tables/p_duree_occupation.yaml b/db/schema2/tables/p_duree_occupation.yaml new file mode 100644 index 0000000..e40f6fb --- /dev/null +++ b/db/schema2/tables/p_duree_occupation.yaml @@ -0,0 +1,53 @@ +columns: + duree_occ_eta: + type: bigint + no_sejour: + type: text + v_lieu_etage_code: + type: text + v_lieu_etage_id: + type: bigint + v_lieu_etage_section_code: + type: 'text[]' + v_lieu_etage_section_id: + type: 'bigint[]' + v_lieu_etage_section_texte: + type: 'text[]' + v_lieu_etage_texte: + type: text + v_lieu_lit_code: + type: text + v_lieu_lit_id: + type: bigint + v_lieu_lit_section_code: + type: 'text[]' + v_lieu_lit_section_id: + type: 'bigint[]' + v_lieu_lit_section_texte: + type: 'text[]' + v_lieu_lit_texte: + type: text + v_lieu_unite_fonctionnelle_code: + type: text + v_lieu_unite_fonctionnelle_id: + type: bigint + v_lieu_unite_fonctionnelle_section_code: + type: 'text[]' + v_lieu_unite_fonctionnelle_section_id: + type: 'bigint[]' + v_lieu_unite_fonctionnelle_section_texte: + type: 'text[]' + v_lieu_unite_fonctionnelle_texte: + type: text + v_lieu_unite_medicale_code: + type: text + v_lieu_unite_medicale_id: + type: bigint + v_lieu_unite_medicale_section_code: + type: 'text[]' + v_lieu_unite_medicale_section_id: + type: 'bigint[]' + v_lieu_unite_medicale_section_texte: + type: 'text[]' + v_lieu_unite_medicale_texte: + type: text \ No newline at end of file diff --git a/db/schema2/tables/p_ecriture_comptable.yaml b/db/schema2/tables/p_ecriture_comptable.yaml new file mode 100644 index 0000000..5fbe801 --- /dev/null +++ b/db/schema2/tables/p_ecriture_comptable.yaml @@ -0,0 +1,75 @@ +columns: + clinique_honoraire: + type: text + code_erreur: + type: text + default: "''::text" + code_original: + type: text + default: "''::text" + compte_id: + type: bigint + default: "0" + date_comptable: + type: date + not_null: NOT NULL + default: "'2099-12-31'::date" + est_comptabilise: + type: text + default: "'1'::text" + facture_id: + type: bigint + default: "0" + journal_id: + type: bigint + default: "0" + medecin_id: + type: bigint + default: "0" + mode_reglement_code: + type: text + default: "''::text" + montant_credit: + type: numeric + default: "0" + montant_debit: + type: numeric + default: "0" + no_facture: + type: text + default: "''::text" + no_sejour: + type: text + default: "''::text" + piece: + type: text + default: "''::text" + provider_id: + type: bigint + not_null: NOT NULL + default: "0" + sejour_id: + type: bigint + default: "0" + taux_tva: + type: numeric + default: "0" + texte: + type: text + default: "''::text" + tiers_payant_id: + type: bigint + default: "0" + type_ecriture: + type: text + default: "''::text" + type_piece: + type: text + default: "''::text" +indexes: + i_ecriture_comptable_1: + column: code_original + method: btree + i_ecriture_comptable_2: + column: piece + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_expert_sejour_controle.yaml b/db/schema2/tables/p_expert_sejour_controle.yaml new file mode 100644 index 0000000..cd3c1d5 --- /dev/null +++ b/db/schema2/tables/p_expert_sejour_controle.yaml @@ -0,0 +1,34 @@ +columns: + code_justificatif: + type: text + default: "''::text" + controle_id: + type: bigint + default: "0" + date_correction: + type: date + default: "'2099-12-31'::date" + date_signalement: + type: date + date_sortie: + type: date + no_sejour: + type: text + sejour_id: + type: bigint +indexes: + i_expert_sejour_controle_1: + column: sejour_id + method: btree + i_expert_sejour_controle_2: + column: no_sejour + method: btree + i_expert_sejour_controle_3: + column: controle_id + method: btree + i_expert_sejour_controle_5: + column: date_signalement + method: btree + i_expert_sejour_controle_6: + column: date_correction + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_facture_encours_ligne_valorise_c.yaml b/db/schema2/tables/p_facture_encours_ligne_valorise_c.yaml new file mode 100644 index 0000000..486eabb --- /dev/null +++ b/db/schema2/tables/p_facture_encours_ligne_valorise_c.yaml @@ -0,0 +1,78 @@ +columns: + coefficient: + type: numeric(7,2) + default: "1" + coefficient_mco: + type: numeric(7,4) + default: "1" + date_debut: + type: date + date_fin: + type: date + facture_id: + type: bigint + default: "0" + lieu_id: + type: bigint + default: "0" + lpp_id: + type: bigint + default: "0" + mode_calcul_code: + type: text + default: "''::text" + mode_calcul_texte: + type: text + default: "''::text" + montant_encours: + type: numeric(13,2) + default: "0" + montant_valorise_total: + type: numeric(13,2) + default: "0" + nb_prestation: + type: numeric(5,0) + default: "1" + nb_rubrique: + type: numeric(5,0) + default: "1" + no_facture: + type: text + not_null: NOT NULL + prestation_id: + type: bigint + default: "0" + prix_unitaire: + type: numeric(13,2) + default: "0" + rubrique_facturation_id: + type: bigint + default: "0" + type_ligne_code: + type: text + default: "''::text" + ucd_id: + type: bigint + default: "0" +indexes: + i_facture_encours_ligne_valorise_c_1: + column: no_facture + method: btree + i_facture_encours_ligne_valorise_c_2: + column: prestation_id + method: btree + i_facture_encours_ligne_valorise_c_3: + column: rubrique_facturation_id + method: btree + i_facture_encours_ligne_valorise_c_4: + column: date_fin + method: btree + i_facture_encours_ligne_valorise_c_5: + column: date_debut + method: btree + i_facture_encours_ligne_valorise_c_6: + column: lieu_id + method: btree + i_facture_encours_ligne_valorise_c_8: + column: facture_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_facture_ligne_valorise_c.yaml b/db/schema2/tables/p_facture_ligne_valorise_c.yaml new file mode 100644 index 0000000..fe2c575 --- /dev/null +++ b/db/schema2/tables/p_facture_ligne_valorise_c.yaml @@ -0,0 +1,75 @@ +columns: + coefficient: + type: numeric(7,2) + default: "1" + coefficient_mco: + type: numeric(7,4) + default: "1" + date_debut: + type: date + date_fin: + type: date + facture_id: + type: bigint + default: "0" + lieu_id: + type: bigint + default: "0" + lpp_id: + type: bigint + default: "0" + mode_calcul_code: + type: text + default: "''::text" + mode_calcul_texte: + type: text + default: "''::text" + montant_encours: + type: numeric(13,2) + default: "0" + nb_prestation: + type: numeric(5,0) + default: "1" + nb_rubrique: + type: numeric(5,0) + default: "1" + no_facture: + type: text + not_null: NOT NULL + prestation_id: + type: bigint + default: "0" + prix_unitaire: + type: numeric(13,2) + default: "0" + rubrique_facturation_id: + type: bigint + default: "0" + type_ligne_code: + type: text + default: "''::text" + ucd_id: + type: bigint + default: "0" +indexes: + i_facture_ligne_valorise_c_1: + column: no_facture + method: btree + i_facture_ligne_valorise_c_2: + column: prestation_id + method: btree + i_facture_ligne_valorise_c_3: + column: rubrique_facturation_id + method: btree + i_facture_ligne_valorise_c_4: + column: date_fin + method: btree + i_facture_ligne_valorise_c_5: + column: date_debut + method: btree + i_facture_ligne_valorise_c_6: + column: lieu_id + method: btree + i_facture_ligne_valorise_c_8: + column: facture_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_facture_solde_tiers_c.yaml b/db/schema2/tables/p_facture_solde_tiers_c.yaml new file mode 100644 index 0000000..8fa7bc1 --- /dev/null +++ b/db/schema2/tables/p_facture_solde_tiers_c.yaml @@ -0,0 +1,66 @@ +columns: + date_comptable: + type: date + facture_id: + type: bigint + default: "0" + montant_comptabilise: + type: numeric(13,2) + default: "0" + montant_comptabilise_0: + type: numeric(13,2) + default: "0" + montant_comptabilise_1: + type: numeric(13,2) + default: "0" + montant_comptabilise_2: + type: numeric(13,2) + default: "0" + montant_regle: + type: numeric(13,2) + default: "0" + montant_regle_0: + type: numeric(13,2) + default: "0" + montant_regle_1: + type: numeric(13,2) + default: "0" + montant_regle_2: + type: numeric(13,2) + default: "0" + no_facture: + type: text + not_null: NOT NULL + od_avoir: + type: character(1) + default: "'0'::character varying" + od_non_comptabilise: + type: text + default: "'0'::text" + prestation_id: + type: bigint + default: "0" + rubrique_comptabilisation_id: + type: bigint + default: "0" + tiers_payant_id: + type: bigint +indexes: + i_facture_solde_tiers_c_1: + column: no_facture + method: btree + i_facture_solde_tiers_c_2: + column: prestation_id + method: btree + i_facture_solde_tiers_c_3: + column: rubrique_comptabilisation_id + method: btree + i_facture_solde_tiers_c_4: + column: date_comptable + method: btree + i_facture_solde_tiers_c_5: + column: tiers_payant_id + method: btree + i_facture_solde_tiers_c_8: + column: facture_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_facture_solde_tiers_h.yaml b/db/schema2/tables/p_facture_solde_tiers_h.yaml new file mode 100644 index 0000000..77e45b6 --- /dev/null +++ b/db/schema2/tables/p_facture_solde_tiers_h.yaml @@ -0,0 +1,66 @@ +columns: + date_comptable: + type: date + facture_id: + type: bigint + default: "0" + montant_comptabilise: + type: numeric(13,2) + default: "0" + montant_comptabilise_0: + type: numeric(13,2) + default: "0" + montant_comptabilise_1: + type: numeric(13,2) + default: "0" + montant_comptabilise_2: + type: numeric(13,2) + default: "0" + montant_regle: + type: numeric(13,2) + default: "0" + montant_regle_0: + type: numeric(13,2) + default: "0" + montant_regle_1: + type: numeric(13,2) + default: "0" + montant_regle_2: + type: numeric(13,2) + default: "0" + no_facture: + type: text + not_null: NOT NULL + od_avoir: + type: character(1) + default: "'0'::character varying" + od_non_comptabilise: + type: text + default: "'0'::text" + prestation_id: + type: bigint + default: "0" + rubrique_comptabilisation_id: + type: bigint + default: "0" + tiers_payant_id: + type: bigint +indexes: + i_facture_solde_tiers_h_1: + column: no_facture + method: btree + i_facture_solde_tiers_h_2: + column: prestation_id + method: btree + i_facture_solde_tiers_h_3: + column: rubrique_comptabilisation_id + method: btree + i_facture_solde_tiers_h_4: + column: date_comptable + method: btree + i_facture_solde_tiers_h_5: + column: tiers_payant_id + method: btree + i_facture_solde_tiers_h_8: + column: facture_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_factures.yaml b/db/schema2/tables/p_factures.yaml new file mode 100644 index 0000000..b219f9d --- /dev/null +++ b/db/schema2/tables/p_factures.yaml @@ -0,0 +1,438 @@ +columns: + code_cloture: + type: character(1) + default: "0" + code_cp_demandee: + type: character(1) + default: "0" + code_expedie_0: + type: character(1) + default: "''::bpchar" + code_expedie_1: + type: character(1) + default: "''::bpchar" + code_expedie_2: + type: character(1) + default: "''::bpchar" + code_expedie_22: + type: character(1) + default: "''::bpchar" + code_facture: + type: character(1) + default: "'0'::bpchar" + code_vente: + type: character(1) + default: "0" + date_debut: + type: date + date_encours: + type: date + default: "'2099-12-31'::date" + date_expedition: + type: date + default: "'2099-12-31'::date" + date_expedition_0: + type: date + default: "'2099-12-31'::date" + date_expedition_1: + type: date + default: "'2099-12-31'::date" + date_expedition_2: + type: date + default: "'2099-12-31'::date" + date_expedition_22: + type: date + default: "'2099-12-31'::date" + date_facture: + type: date + default: "'2099-12-31'::date" + date_fin: + type: date + date_solde: + type: date + default: "'2099-12-31'::date" + date_solde_0_c: + type: date + default: "'2099-12-31'::date" + date_solde_0_h: + type: date + default: "'2099-12-31'::date" + date_solde_1_c: + type: date + default: "'2099-12-31'::date" + date_solde_1_h: + type: date + default: "'2099-12-31'::date" + date_solde_22_c: + type: date + default: "'2099-12-31'::date" + date_solde_22_h: + type: date + default: "'2099-12-31'::date" + date_solde_2_c: + type: date + default: "'2099-12-31'::date" + date_solde_2_h: + type: date + default: "'2099-12-31'::date" + date_solde_c: + type: date + default: "'2099-12-31'::date" + date_solde_h: + type: date + default: "'2099-12-31'::date" + date_solde_reference: + type: date + default: "'2099-12-31'::date" + date_solde_reference_0_c: + type: date + default: "'2099-12-31'::date" + date_solde_reference_0_h: + type: date + default: "'2099-12-31'::date" + date_solde_reference_1_c: + type: date + default: "'2099-12-31'::date" + date_solde_reference_1_h: + type: date + default: "'2099-12-31'::date" + date_solde_reference_22_c: + type: date + default: "'2099-12-31'::date" + date_solde_reference_22_h: + type: date + default: "'2099-12-31'::date" + date_solde_reference_2_c: + type: date + default: "'2099-12-31'::date" + date_solde_reference_2_h: + type: date + default: "'2099-12-31'::date" + date_solde_reference_c: + type: date + default: "'2099-12-31'::date" + date_solde_reference_h: + type: date + default: "'2099-12-31'::date" + date_vente: + type: date + delai_expedition: + type: numeric(5,0) + default: "0" + delai_expedition_0: + type: numeric(5,0) + default: "0" + delai_expedition_1: + type: numeric(5,0) + default: "0" + delai_expedition_2: + type: numeric(5,0) + default: "0" + delai_expedition_22: + type: numeric(5,0) + default: "0" + delai_facture: + type: numeric(5,0) + default: "0" + delai_solde: + type: numeric(5,0) + default: "0" + delai_solde_0_c: + type: numeric(5,0) + default: "0" + delai_solde_0_h: + type: numeric(5,0) + default: "0" + delai_solde_1_c: + type: numeric(5,0) + default: "0" + delai_solde_1_h: + type: numeric(5,0) + default: "0" + delai_solde_22_c: + type: numeric(5,0) + default: "0" + delai_solde_22_h: + type: numeric(5,0) + default: "0" + delai_solde_2_c: + type: numeric(5,0) + default: "0" + delai_solde_2_h: + type: numeric(5,0) + default: "0" + facture_od_avoir_id: + type: bigint + default: "0" + facture_reference_id: + type: bigint + default: "0" + finess: + type: character(9) + not_null: NOT NULL + default: "''::bpchar" + ghm_id: + type: bigint + default: "0" + ghs_bebe1_id: + type: bigint + default: "0" + ghs_bebe2_id: + type: bigint + default: "0" + ghs_bebe3_id: + type: bigint + default: "0" + ghs_id: + type: bigint + default: "0" + gmt_id: + type: bigint + default: "0" + mois_vente: + type: numeric(6,0) + default: "0" + montant_comptabilise_0_c: + type: numeric(13,2) + default: "0" + montant_comptabilise_0_h: + type: numeric(13,2) + default: "0" + montant_comptabilise_1_c: + type: numeric(13,2) + default: "0" + montant_comptabilise_1_h: + type: numeric(13,2) + default: "0" + montant_comptabilise_22_c: + type: numeric(13,2) + default: "0" + montant_comptabilise_22_h: + type: numeric(13,2) + default: "0" + montant_comptabilise_2_c: + type: numeric(13,2) + default: "0" + montant_comptabilise_2_h: + type: numeric(13,2) + default: "0" + montant_comptabilise_budget_global_c: + type: numeric(13,2) + default: "0" + montant_comptabilise_c: + type: numeric(13,2) + default: "0" + montant_comptabilise_h: + type: numeric(13,2) + default: "0" + montant_encours_0_c: + type: numeric(13,2) + default: "0" + montant_encours_0_h: + type: numeric(13,2) + default: "0" + montant_encours_1_c: + type: numeric(13,2) + default: "0" + montant_encours_1_h: + type: numeric(13,2) + default: "0" + montant_encours_22_c: + type: numeric(13,2) + default: "0" + montant_encours_22_h: + type: numeric(13,2) + default: "0" + montant_encours_2_c: + type: numeric(13,2) + default: "0" + montant_encours_2_h: + type: numeric(13,2) + default: "0" + montant_encours_c: + type: numeric(13,2) + default: "0" + montant_encours_h: + type: numeric(13,2) + default: "0" + montant_facture_0_c: + type: numeric(13,2) + default: "0" + montant_facture_0_h: + type: numeric(13,2) + default: "0" + montant_facture_1_c: + type: numeric(13,2) + default: "0" + montant_facture_1_h: + type: numeric(13,2) + default: "0" + montant_facture_22_c: + type: numeric(13,2) + default: "0" + montant_facture_22_h: + type: numeric(13,2) + default: "0" + montant_facture_2_c: + type: numeric(13,2) + default: "0" + montant_facture_2_h: + type: numeric(13,2) + default: "0" + montant_facture_c: + type: numeric(13,2) + default: "0" + montant_facture_c_actes_inclus_dans_sejour: + type: numeric(13,2) + default: "0" + montant_facture_h: + type: numeric(13,2) + default: "0" + montant_facture_h_actes_inclus_dans_sejour: + type: numeric(13,2) + default: "0" + montant_regle_0_c: + type: numeric(13,2) + default: "0" + montant_regle_0_h: + type: numeric(13,2) + default: "0" + montant_regle_1_c: + type: numeric(13,2) + default: "0" + montant_regle_1_h: + type: numeric(13,2) + default: "0" + montant_regle_22_c: + type: numeric(13,2) + default: "0" + montant_regle_22_h: + type: numeric(13,2) + default: "0" + montant_regle_2_c: + type: numeric(13,2) + default: "0" + montant_regle_2_h: + type: numeric(13,2) + default: "0" + montant_regle_c: + type: numeric(13,2) + default: "0" + montant_regle_h: + type: numeric(13,2) + default: "0" + motif_non_facturation_comment: + type: text + default: "''::text" + motif_non_facturation_id: + type: bigint + default: "0" + nb_rejets: + type: numeric + default: "0" + no_bordereau_0: + type: text + default: "''::text" + no_bordereau_1: + type: text + default: "''::text" + no_bordereau_2: + type: text + default: "''::text" + no_bordereau_22: + type: text + default: "''::text" + no_facture: + type: text + not_null: NOT NULL + no_facture_od_avoir: + type: text + default: "''::text" + no_facture_reference: + type: text + default: "''::text" + no_sejour: + type: text + not_null: NOT NULL + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_factures'::regclass)" + particularite_t2a: + type: text + default: "''::text" + comment: | + SE1 = Forfait SE1 + SE2 = Forfait SE2 + SE3 = Forfait SE3 + provider_id: + type: bigint + default: "0" + sejour_id: + type: bigint + default: "0" + tiers_payant_0_id: + type: bigint + default: "0" + tiers_payant_1_id: + type: bigint + default: "0" + tiers_payant_22_id: + type: bigint + default: "0" + tiers_payant_2_id: + type: bigint + default: "0" + type_facture: + type: character(1) + default: "0" +constraints: + p_factures_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_factures_1: + column: no_facture, no_sejour + method: btree + i_factures_10: + column: date_vente + method: btree + i_factures_11: + column: no_facture_reference + method: btree + i_factures_12: + column: no_facture_od_avoir + method: btree + i_factures_13: + column: sejour_id + method: btree + i_factures_14: + column: facture_reference_id + method: btree + i_factures_15: + column: date_fin + method: btree + i_factures_2: + column: no_facture + method: btree + i_factures_3: + column: tiers_payant_1_id + method: btree + i_factures_4: + column: tiers_payant_2_id + method: btree + i_factures_5: + column: no_sejour + method: btree + i_factures_6: + column: tiers_payant_0_id + method: btree + i_factures_7: + column: tiers_payant_22_id + method: btree + i_factures_8: + column: ghs_id + method: btree + i_factures_9: + column: date_facture + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_factures_comptables.yaml b/db/schema2/tables/p_factures_comptables.yaml new file mode 100644 index 0000000..b10058c --- /dev/null +++ b/db/schema2/tables/p_factures_comptables.yaml @@ -0,0 +1,39 @@ +columns: + date_comptable: + type: date + not_null: NOT NULL + default: "'2099-12-31'::date" + facture_id: + type: bigint + default: "0" + finess: + type: character(9) + not_null: NOT NULL + default: "''::bpchar" + montant_reglements_c: + type: numeric(13,2) + default: "0" + montant_reglements_h: + type: numeric(13,2) + default: "0" + montant_ventes_c: + type: numeric(13,2) + default: "0" + montant_ventes_h: + type: numeric(13,2) + default: "0" + no_facture: + type: text + not_null: NOT NULL + provider_id: + type: bigint + not_null: NOT NULL + default: "0" +constraints: + p_factures_comptables_ukey: + type: PRIMARY KEY + column: date_comptable, no_facture +indexes: + i_factures_comptables_1: + column: facture_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_factures_encours.yaml b/db/schema2/tables/p_factures_encours.yaml new file mode 100644 index 0000000..40be769 --- /dev/null +++ b/db/schema2/tables/p_factures_encours.yaml @@ -0,0 +1,155 @@ +columns: + code_cp_demandee: + type: character(1) + default: "0" + code_origine: + type: character(1) + default: "'C'::bpchar" + code_sorti: + type: character(1) + default: "'0'::bpchar" + date_calcul: + type: date + default: "'2099-12-31'::date" + date_debut: + type: date + date_encours: + type: date + default: "'2099-12-31'::date" + date_entree: + type: date + date_fin: + type: date + date_groupage: + type: date + date_sortie: + type: date + finess: + type: character(9) + not_null: NOT NULL + default: "''::bpchar" + ghm_id: + type: bigint + ghs_bebe1_id: + type: bigint + default: "0" + ghs_bebe2_id: + type: bigint + default: "0" + ghs_bebe3_id: + type: bigint + default: "0" + ghs_id: + type: bigint + default: "0" + heure_entree: + type: numeric(6,0) + heure_sortie: + type: numeric(6,0) + lieu_sortie_id: + type: bigint + montant_encours_0_c: + type: numeric(13,2) + default: "0" + montant_encours_0_h: + type: numeric(13,2) + default: "0" + montant_encours_1_c: + type: numeric(13,2) + default: "0" + montant_encours_1_h: + type: numeric(13,2) + default: "0" + montant_encours_22_c: + type: numeric(13,2) + default: "0" + montant_encours_22_h: + type: numeric(13,2) + default: "0" + montant_encours_2_c: + type: numeric(13,2) + default: "0" + montant_encours_2_h: + type: numeric(13,2) + default: "0" + montant_encours_c: + type: numeric(13,2) + default: "0" + montant_encours_h: + type: numeric(13,2) + default: "0" + no_facture: + type: text + not_null: NOT NULL + no_facture_reference: + type: text + default: "''::text" + no_sejour: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_factures_encours'::regclass)" + provider_id: + type: bigint + sejour_id: + type: bigint + not_null: NOT NULL + tiers_payant_0_id: + type: bigint + default: "0" + tiers_payant_1_id: + type: bigint + default: "0" + tiers_payant_22_id: + type: bigint + default: "0" + tiers_payant_2_id: + type: bigint + default: "0" + type_sejour: + type: text + filiere_soin_principale_id: + type: bigint + default: "0" +constraints: + p_factures_encours_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_factures_encours_1: + column: no_facture + method: btree + i_factures_encours_10: + column: sejour_id + method: btree + i_factures_encours_11: + column: ghs_id + method: btree + i_factures_encours_12: + column: no_sejour + method: btree + i_factures_encours_13: + column: type_sejour + method: btree + i_factures_encours_2: + column: date_encours + method: btree + i_factures_encours_4: + column: no_facture_reference + method: btree + i_factures_encours_5: + column: date_fin + method: btree + i_factures_encours_6: + column: tiers_payant_1_id + method: btree + i_factures_encours_7: + column: tiers_payant_2_id + method: btree + i_factures_encours_8: + column: tiers_payant_0_id + method: btree + i_factures_encours_9: + column: tiers_payant_22_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_factures_encours_lignes_c.yaml b/db/schema2/tables/p_factures_encours_lignes_c.yaml new file mode 100644 index 0000000..bc8c998 --- /dev/null +++ b/db/schema2/tables/p_factures_encours_lignes_c.yaml @@ -0,0 +1,118 @@ +columns: + coefficient: + type: numeric(7,2) + default: "1" + coefficient_mco: + type: numeric(7,4) + default: "1" + compte_produit_analytique_id: + type: bigint + default: "0" + compte_produit_id: + type: bigint + default: "0" + date_debut: + type: date + date_fin: + type: date + facture_id: + type: bigint + default: "0" + finess: + type: character(9) + not_null: NOT NULL + default: "''::bpchar" + lieu_id: + type: bigint + default: "0" + lpp_id: + type: bigint + default: "0" + montant_encours: + type: numeric(13,2) + default: "0" + montant_encours_0: + type: numeric(13,2) + default: "0" + montant_encours_1: + type: numeric(13,2) + default: "0" + montant_encours_2: + type: numeric(13,2) + default: "0" + montant_encours_22: + type: numeric(13,2) + default: "0" + nb_prestation: + type: numeric(5,0) + default: "1" + nb_rubrique: + type: numeric(5,0) + default: "1" + no_facture: + type: text + not_null: NOT NULL + pole_id: + type: bigint + default: "0" + prestation_id: + type: bigint + default: "0" + prix_unitaire: + type: numeric(13,2) + default: "0" + rubrique_comptabilisation_id: + type: bigint + default: "0" + rubrique_facturation_id: + type: bigint + default: "0" + rubrique_facture_id: + type: bigint + default: "0" + taux_0: + type: numeric(5,2) + default: "0" + taux_1: + type: numeric(5,2) + default: "0" + taux_2: + type: numeric(5,2) + default: "0" + taux_22: + type: numeric(5,2) + default: "0" + ucd_id: + type: bigint + default: "0" +indexes: + i_factures_encours_lignes_c_1: + column: no_facture + method: btree + i_factures_encours_lignes_c_2: + column: prestation_id + method: btree + i_factures_encours_lignes_c_3: + column: rubrique_facturation_id + method: btree + i_factures_encours_lignes_c_4: + column: date_fin + method: btree + i_factures_encours_lignes_c_5: + column: date_debut + method: btree + i_factures_encours_lignes_c_6: + column: lieu_id + method: btree + i_factures_encours_lignes_c_7: + column: rubrique_comptabilisation_id + method: btree + i_factures_encours_lignes_c_8: + column: facture_id + method: btree + i_factures_encours_lignes_c_compte_produit_analytique_id: + column: compte_produit_analytique_id + method: btree + i_factures_encours_lignes_c_rubrique_facture_id: + column: rubrique_facture_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_factures_lignes_c.yaml b/db/schema2/tables/p_factures_lignes_c.yaml new file mode 100644 index 0000000..7eb9059 --- /dev/null +++ b/db/schema2/tables/p_factures_lignes_c.yaml @@ -0,0 +1,184 @@ +columns: + budget_cle_id: + type: bigint + default: "0" + coefficient: + type: numeric(7,2) + default: "1" + coefficient_mco: + type: numeric(7,4) + default: "1" + compte_produit_analytique_id: + type: bigint + default: "0" + compte_produit_id: + type: bigint + default: "0" + date_debut: + type: date + date_fin: + type: date + facture_id: + type: bigint + default: "0" + finess: + type: character(9) + not_null: NOT NULL + default: "''::bpchar" + lieu_id: + type: bigint + default: "0" + lpp_id: + type: bigint + default: "0" + montant_comptabilise: + type: numeric(13,2) + default: "0" + montant_comptabilise_0: + type: numeric(13,2) + default: "0" + montant_comptabilise_1: + type: numeric(13,2) + default: "0" + montant_comptabilise_2: + type: numeric(13,2) + default: "0" + montant_comptabilise_22: + type: numeric(13,2) + default: "0" + montant_comptabilise_budget_global_1: + type: numeric(13,2) + default: "0" + montant_encours: + type: numeric(13,2) + default: "0" + montant_encours_0: + type: numeric(13,2) + default: "0" + montant_encours_1: + type: numeric(13,2) + default: "0" + montant_encours_2: + type: numeric(13,2) + default: "0" + montant_encours_22: + type: numeric(13,2) + default: "0" + montant_facture: + type: numeric(13,2) + default: "0" + montant_facture_0: + type: numeric(13,2) + default: "0" + montant_facture_0_actes_inclus_dans_sejour: + type: numeric(13,2) + default: "0" + montant_facture_1: + type: numeric(13,2) + default: "0" + montant_facture_1_actes_inclus_dans_sejour: + type: numeric(13,2) + default: "0" + montant_facture_2: + type: numeric(13,2) + default: "0" + montant_facture_22: + type: numeric(13,2) + default: "0" + montant_facture_22_actes_inclus_dans_sejour: + type: numeric(13,2) + default: "0" + montant_facture_2_actes_inclus_dans_sejour: + type: numeric(13,2) + default: "0" + montant_facture_actes_inclus_dans_sejour: + type: numeric(13,2) + default: "0" + nb_prestation: + type: numeric(5,0) + default: "1" + nb_rubrique: + type: numeric(5,0) + default: "1" + no_facture: + type: text + not_null: NOT NULL + origine_facturation_id: + type: integer + default: "1" + pole_id: + type: bigint + default: "0" + prestation_id: + type: bigint + default: "0" + prix_unitaire: + type: numeric(13,2) + default: "0" + protocole_id: + type: bigint + default: "0" + rubrique_comptabilisation_id: + type: bigint + default: "0" + rubrique_facturation_id: + type: bigint + default: "0" + rubrique_facture_id: + type: bigint + default: "0" + taux_0: + type: numeric(5,2) + default: "0" + taux_1: + type: numeric(5,2) + default: "0" + taux_2: + type: numeric(5,2) + default: "0" + taux_22: + type: numeric(5,2) + default: "0" + taux_tva: + type: numeric + default: "0" + ucd_id: + type: bigint + default: "0" +indexes: + i_factures_lignes_c_1: + column: no_facture + method: btree + i_factures_lignes_c_2: + column: prestation_id + method: btree + i_factures_lignes_c_3: + column: rubrique_facturation_id + method: btree + i_factures_lignes_c_4: + column: date_fin + method: btree + i_factures_lignes_c_5: + column: date_debut + method: btree + i_factures_lignes_c_6: + column: lieu_id + method: btree + i_factures_lignes_c_7: + column: rubrique_comptabilisation_id + method: btree + i_factures_lignes_c_8: + column: facture_id + method: btree + i_factures_lignes_c_budget_cle_id: + column: budget_cle_id + method: btree + i_factures_lignes_c_compte_produit_analytique_id: + column: compte_produit_analytique_id + method: btree + i_factures_lignes_c_pole_id: + column: pole_id + method: btree + i_factures_lignes_c_rubrique_facture_id: + column: rubrique_facture_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_factures_lignes_h.yaml b/db/schema2/tables/p_factures_lignes_h.yaml new file mode 100644 index 0000000..b0b8386 --- /dev/null +++ b/db/schema2/tables/p_factures_lignes_h.yaml @@ -0,0 +1,185 @@ +columns: + acte_id: + type: bigint + default: "0" + activite_ccam: + type: character(1) + default: "''::bpchar" + coefficient: + type: numeric(9,2) + default: "1" + coefficient_mco: + type: numeric(7,4) + default: "1" + date_debut: + type: date + date_fin: + type: date + extension_ccam: + type: character(1) + default: "''::bpchar" + facture_id: + type: bigint + default: "0" + finess: + type: character(9) + not_null: NOT NULL + default: "''::bpchar" + heure_debut: + type: integer + default: "0" + lieu_id: + type: bigint + default: "0" + medecin_comptabilise_id: + type: bigint + default: "0" + medecin_facture_id: + type: bigint + default: "0" + modificateur_ccam_1: + type: character(1) + default: "''::bpchar" + modificateur_ccam_2: + type: character(1) + default: "''::bpchar" + modificateur_ccam_3: + type: character(1) + default: "''::bpchar" + modificateur_ccam_4: + type: character(1) + default: "''::bpchar" + montant_comptabilise: + type: numeric(13,2) + default: "0" + montant_comptabilise_0: + type: numeric(13,2) + default: "0" + montant_comptabilise_1: + type: numeric(13,2) + default: "0" + montant_comptabilise_2: + type: numeric(13,2) + default: "0" + montant_comptabilise_22: + type: numeric(13,2) + default: "0" + montant_depassement: + type: numeric(13,2) + default: "0" + montant_encours: + type: numeric(13,2) + default: "0" + montant_encours_0: + type: numeric(13,2) + default: "0" + montant_encours_1: + type: numeric(13,2) + default: "0" + montant_encours_2: + type: numeric(13,2) + default: "0" + montant_encours_22: + type: numeric(13,2) + default: "0" + montant_facture: + type: numeric(13,2) + default: "0" + montant_facture_0: + type: numeric(13,2) + default: "0" + montant_facture_0_actes_inclus_dans_sejour: + type: numeric(13,2) + montant_facture_1: + type: numeric(13,2) + default: "0" + montant_facture_1_actes_inclus_dans_sejour: + type: numeric(13,2) + montant_facture_2: + type: numeric(13,2) + default: "0" + montant_facture_22: + type: numeric(13,2) + default: "0" + montant_facture_22_actes_inclus_dans_sejour: + type: numeric(13,2) + montant_facture_2_actes_inclus_dans_sejour: + type: numeric(13,2) + montant_facture_actes_inclus_dans_sejour: + type: numeric(13,2) + montant_non_facture: + type: numeric(13,2) + default: "0" + nb_prestation: + type: numeric(5,0) + default: "1" + nb_rubrique: + type: numeric(5,0) + default: "1" + no_facture: + type: text + not_null: NOT NULL + phase_ccam: + type: character(1) + default: "''::bpchar" + pole_id: + type: bigint + default: "0" + prestation_id: + type: bigint + default: "0" + prix_unitaire: + type: numeric(13,2) + default: "0" + protocole_id: + type: bigint + default: "0" + rubrique_comptabilisation_id: + type: bigint + default: "0" + rubrique_facturation_id: + type: bigint + default: "0" + taux_0: + type: numeric(5,2) + default: "0" + taux_1: + type: numeric(5,2) + default: "0" + taux_2: + type: numeric(5,2) + default: "0" + taux_22: + type: numeric(5,2) + default: "0" +indexes: + i_factures_lignes_h_1: + column: no_facture + method: btree + i_factures_lignes_h_2: + column: prestation_id + method: btree + i_factures_lignes_h_3: + column: medecin_facture_id + method: btree + i_factures_lignes_h_4: + column: medecin_comptabilise_id + method: btree + i_factures_lignes_h_5: + column: date_fin + method: btree + i_factures_lignes_h_6: + column: date_debut + method: btree + i_factures_lignes_h_7: + column: lieu_id + method: btree + i_factures_lignes_h_8: + column: acte_id + method: btree + i_factures_lignes_h_9: + column: facture_id + method: btree + i_factures_lignes_h_pole_id: + column: pole_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_factures_lignes_non_facturees_c.yaml b/db/schema2/tables/p_factures_lignes_non_facturees_c.yaml new file mode 100644 index 0000000..62074cf --- /dev/null +++ b/db/schema2/tables/p_factures_lignes_non_facturees_c.yaml @@ -0,0 +1,63 @@ +columns: + coefficient: + type: numeric(7,2) + default: "1" + coefficient_mco: + type: numeric + default: "1" + date_debut: + type: date + date_fin: + type: date + facture_id: + type: bigint + default: "0" + lieu_id: + type: bigint + default: "0" + lpp_id: + type: bigint + default: "0" + montant_encours: + type: numeric(13,2) + default: "0" + nb_rubrique: + type: numeric(5,0) + default: "1" + no_facture: + type: text + not_null: NOT NULL + prestation_id: + type: bigint + default: "0" + prix_unitaire: + type: numeric(13,2) + default: "0" + rubrique_facturation_id: + type: bigint + default: "0" + ucd_id: + type: bigint + default: "0" +indexes: + i_factures_lignes_non_facturees_c_1: + column: no_facture + method: btree + i_factures_lignes_non_facturees_c_2: + column: prestation_id + method: btree + i_factures_lignes_non_facturees_c_3: + column: rubrique_facturation_id + method: btree + i_factures_lignes_non_facturees_c_4: + column: date_fin + method: btree + i_factures_lignes_non_facturees_c_5: + column: date_debut + method: btree + i_factures_lignes_non_facturees_c_6: + column: lieu_id + method: btree + i_factures_lignes_non_facturees_c_8: + column: facture_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_factures_lignes_non_facturees_h.yaml b/db/schema2/tables/p_factures_lignes_non_facturees_h.yaml new file mode 100644 index 0000000..3f6ce84 --- /dev/null +++ b/db/schema2/tables/p_factures_lignes_non_facturees_h.yaml @@ -0,0 +1,66 @@ +columns: + acte_id: + type: bigint + default: "0" + activite_ccam: + type: character(1) + default: "''::bpchar" + coefficient: + type: numeric(7,2) + default: "1" + date_debut: + type: date + date_fin: + type: date + extension_ccam: + type: character(1) + default: "''::bpchar" + facture_id: + type: bigint + default: "0" + heure_debut: + type: integer + default: "0" + lieu_id: + type: bigint + default: "0" + medecin_facture_id: + type: bigint + default: "0" + modificateur_ccam_1: + type: character(1) + default: "''::bpchar" + modificateur_ccam_2: + type: character(1) + default: "''::bpchar" + modificateur_ccam_3: + type: character(1) + default: "''::bpchar" + modificateur_ccam_4: + type: character(1) + default: "''::bpchar" + montant_depassement: + type: numeric(13,2) + default: "0" + nb_rubrique: + type: numeric(5,0) + default: "1" + no_facture: + type: text + not_null: NOT NULL + phase_ccam: + type: character(1) + default: "''::bpchar" + prestation_id: + type: bigint + default: "0" + prix_unitaire: + type: numeric(13,2) + default: "0" + rubrique_facturation_id: + type: bigint + default: "0" +indexes: + i_factures_lignes_non_facturees_h_8: + column: facture_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_factures_reference.yaml b/db/schema2/tables/p_factures_reference.yaml new file mode 100644 index 0000000..a38a7b5 --- /dev/null +++ b/db/schema2/tables/p_factures_reference.yaml @@ -0,0 +1,357 @@ +columns: + code_expedie_0: + type: text + code_expedie_1: + type: character(1) + code_expedie_2: + type: character(1) + code_facture: + type: text + code_sorti: + type: numeric(1,0) + code_vente: + type: character(1) + date_debut_facture: + type: date + date_entree: + type: date + date_expedition: + type: date + date_expedition_0: + type: date + date_expedition_1: + type: date + date_expedition_2: + type: date + date_facture: + type: date + date_fin_facture: + type: date + date_groupage: + type: date + date_solde: + type: date + date_solde_0: + type: date + date_solde_0_c: + type: date + date_solde_0_h: + type: date + date_solde_1: + type: date + date_solde_1_c: + type: date + date_solde_1_h: + type: date + date_solde_2: + type: date + date_solde_2_c: + type: date + date_solde_2_h: + type: date + date_solde_c: + type: date + date_solde_h: + type: date + date_sortie: + type: date + date_vente: + type: date + delai_expedition: + type: numeric + delai_expedition_0: + type: numeric + delai_expedition_1: + type: numeric + delai_expedition_2: + type: numeric + delai_facture: + type: numeric + delai_groupage: + type: numeric + delai_solde: + type: numeric + delai_solde_0: + type: numeric + delai_solde_0_c: + type: numeric + delai_solde_0_h: + type: numeric + delai_solde_1: + type: numeric + delai_solde_1_c: + type: numeric + delai_solde_1_h: + type: numeric + delai_solde_2: + type: numeric + delai_solde_2_c: + type: numeric + delai_solde_2_h: + type: numeric + delai_solde_c: + type: numeric + delai_solde_h: + type: numeric + facture_reference_id: + type: bigint + ghs_bebe1_id: + type: bigint + ghs_bebe2_id: + type: bigint + ghs_bebe3_id: + type: bigint + ghs_id: + type: bigint + gmt_id: + type: bigint + default: "0" + lieu_sortie_id: + type: bigint + default: "0" + montant_comptabilise: + type: numeric + montant_comptabilise_0: + type: numeric + montant_comptabilise_0_c: + type: numeric + montant_comptabilise_0_h: + type: numeric + montant_comptabilise_1: + type: numeric + montant_comptabilise_1_c: + type: numeric + montant_comptabilise_1_h: + type: numeric + montant_comptabilise_2: + type: numeric + montant_comptabilise_2_c: + type: numeric + montant_comptabilise_2_h: + type: numeric + montant_comptabilise_budget_global_c: + type: numeric + montant_comptabilise_c: + type: numeric + montant_comptabilise_h: + type: numeric + montant_encours: + type: numeric + montant_encours_0: + type: numeric + montant_encours_0_c: + type: numeric + montant_encours_0_h: + type: numeric + montant_encours_1: + type: numeric + montant_encours_1_c: + type: numeric + montant_encours_1_h: + type: numeric + montant_encours_2: + type: numeric + montant_encours_2_c: + type: numeric + montant_encours_2_h: + type: numeric + montant_encours_c: + type: numeric + montant_encours_h: + type: numeric + montant_facture: + type: numeric + montant_facture_0: + type: numeric + montant_facture_0_c: + type: numeric + montant_facture_0_h: + type: numeric + montant_facture_1: + type: numeric + montant_facture_1_c: + type: numeric + montant_facture_1_h: + type: numeric + montant_facture_2: + type: numeric + montant_facture_2_c: + type: numeric + montant_facture_2_h: + type: numeric + montant_facture_c: + type: numeric + montant_facture_c_actes_inclus_dans_sejour: + type: numeric + montant_facture_h: + type: numeric + montant_facture_h_actes_inclus_dans_sejour: + type: numeric + montant_regle: + type: numeric + montant_regle_0: + type: numeric + montant_regle_0_c: + type: numeric + montant_regle_0_h: + type: numeric + montant_regle_1: + type: numeric + montant_regle_1_c: + type: numeric + montant_regle_1_h: + type: numeric + montant_regle_2: + type: numeric + montant_regle_2_c: + type: numeric + montant_regle_2_h: + type: numeric + montant_regle_c: + type: numeric + montant_regle_h: + type: numeric + motif_non_facturation_comment: + type: text + default: "''::text" + motif_non_facturation_id: + type: bigint + default: "0" + nb_calculable: + type: numeric + nb_factures: + type: bigint + nb_factures_regularisation: + type: bigint + nb_groupe: + type: numeric + nb_non_calcules: + type: integer + nb_non_calcules_bg: + type: integer + nb_non_calcules_horsbg: + type: integer + nb_non_cloture: + type: integer + nb_non_cloture_0: + type: integer + nb_non_cloture_0_c: + type: integer + nb_non_cloture_0_h: + type: integer + nb_non_cloture_1: + type: integer + nb_non_cloture_1_c: + type: integer + nb_non_cloture_1_h: + type: integer + nb_non_cloture_2: + type: integer + nb_non_cloture_2_c: + type: integer + nb_non_cloture_2_h: + type: integer + nb_non_cloture_c: + type: integer + nb_non_cloture_h: + type: integer + nb_non_expedie: + type: numeric + nb_non_expedie_0: + type: numeric + nb_non_expedie_0_c: + type: numeric + nb_non_expedie_0_h: + type: numeric + nb_non_expedie_1: + type: numeric + nb_non_expedie_1_c: + type: numeric + nb_non_expedie_1_h: + type: numeric + nb_non_expedie_2: + type: numeric + nb_non_expedie_2_c: + type: numeric + nb_non_expedie_2_h: + type: numeric + nb_non_expedie_c: + type: numeric + nb_non_expedie_h: + type: numeric + nb_non_groupe: + type: numeric + nb_non_solde: + type: numeric + nb_non_solde_0: + type: numeric + nb_non_solde_0_c: + type: numeric + nb_non_solde_0_h: + type: numeric + nb_non_solde_1: + type: numeric + nb_non_solde_1_c: + type: numeric + nb_non_solde_1_h: + type: numeric + nb_non_solde_2: + type: numeric + nb_non_solde_2_c: + type: numeric + nb_non_solde_2_h: + type: numeric + nb_non_solde_c: + type: numeric + nb_non_solde_h: + type: numeric + nb_rejets: + type: numeric + nb_rubriques_c: + type: numeric + nb_rubriques_h: + type: numeric + no_bordereau_0: + type: text + no_bordereau_1: + type: text + no_bordereau_2: + type: text + no_facture_reference: + type: text + no_sejour: + type: text + pole_sortie_id: + type: bigint + default: "0" + retard_facture: + type: numeric + retard_groupage: + type: numeric + sejour_id: + type: bigint + tiers_payant_0_id: + type: bigint + tiers_payant_1_id: + type: bigint + tiers_payant_22_id: + type: bigint + tiers_payant_2_id: + type: bigint + type_facture: + type: character(1) + type_t2a: + type: character(1) +indexes: + i_factures_reference_1: + column: sejour_id + method: btree + i_factures_reference_2: + column: no_sejour + method: btree + i_factures_reference_3: + column: tiers_payant_1_id + method: btree + i_factures_reference_4: + column: date_fin_facture + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_factures_reference_tiers.yaml b/db/schema2/tables/p_factures_reference_tiers.yaml new file mode 100644 index 0000000..2145761 --- /dev/null +++ b/db/schema2/tables/p_factures_reference_tiers.yaml @@ -0,0 +1,347 @@ +columns: + code_expedie_0: + type: text + code_expedie_1: + type: character(1) + code_expedie_2: + type: character(1) + code_facture: + type: text + code_sorti: + type: numeric(1,0) + code_vente: + type: character(1) + date_debut_facture: + type: date + date_entree: + type: date + date_expedition: + type: date + date_expedition_0: + type: date + date_expedition_1: + type: date + date_expedition_2: + type: date + date_facture: + type: date + date_fin_facture: + type: date + date_groupage: + type: date + date_solde: + type: date + date_solde_0: + type: date + date_solde_0_c: + type: date + date_solde_0_h: + type: date + date_solde_1: + type: date + date_solde_1_c: + type: date + date_solde_1_h: + type: date + date_solde_2: + type: date + date_solde_2_c: + type: date + date_solde_2_h: + type: date + date_solde_c: + type: date + date_solde_h: + type: date + date_sortie: + type: date + date_vente: + type: date + delai_expedition: + type: numeric + delai_expedition_0: + type: numeric + delai_expedition_1: + type: numeric + delai_expedition_2: + type: numeric + delai_facture: + type: numeric + delai_groupage: + type: numeric + delai_solde: + type: numeric + delai_solde_0: + type: numeric + delai_solde_0_c: + type: numeric + delai_solde_0_h: + type: numeric + delai_solde_1: + type: numeric + delai_solde_1_c: + type: numeric + delai_solde_1_h: + type: numeric + delai_solde_2: + type: numeric + delai_solde_2_c: + type: numeric + delai_solde_2_h: + type: numeric + delai_solde_c: + type: numeric + delai_solde_h: + type: numeric + facture_reference_id: + type: bigint + ghs_bebe1_id: + type: bigint + ghs_bebe2_id: + type: bigint + ghs_bebe3_id: + type: bigint + ghs_id: + type: bigint + gmt_id: + type: bigint + default: "0" + lieu_sortie_id: + type: bigint + default: "0" + montant_comptabilise: + type: numeric + montant_comptabilise_0: + type: numeric + montant_comptabilise_0_c: + type: numeric + montant_comptabilise_0_h: + type: numeric + montant_comptabilise_1: + type: numeric + montant_comptabilise_1_c: + type: numeric + montant_comptabilise_1_h: + type: numeric + montant_comptabilise_2: + type: numeric + montant_comptabilise_2_c: + type: numeric + montant_comptabilise_2_h: + type: numeric + montant_comptabilise_budget_global_c: + type: numeric + montant_comptabilise_c: + type: numeric + montant_comptabilise_h: + type: numeric + montant_encours: + type: numeric + montant_encours_0: + type: numeric + montant_encours_0_c: + type: numeric + montant_encours_0_h: + type: numeric + montant_encours_1: + type: numeric + montant_encours_1_c: + type: numeric + montant_encours_1_h: + type: numeric + montant_encours_2: + type: numeric + montant_encours_2_c: + type: numeric + montant_encours_2_h: + type: numeric + montant_encours_c: + type: numeric + montant_encours_h: + type: numeric + montant_facture: + type: numeric + montant_facture_0: + type: numeric + montant_facture_0_c: + type: numeric + montant_facture_0_h: + type: numeric + montant_facture_1: + type: numeric + montant_facture_1_c: + type: numeric + montant_facture_1_h: + type: numeric + montant_facture_2: + type: numeric + montant_facture_2_c: + type: numeric + montant_facture_2_h: + type: numeric + montant_facture_c: + type: numeric + montant_facture_c_actes_inclus_dans_sejour: + type: numeric + montant_facture_h: + type: numeric + montant_facture_h_actes_inclus_dans_sejour: + type: numeric + montant_regle: + type: numeric + montant_regle_0: + type: numeric + montant_regle_0_c: + type: numeric + montant_regle_0_h: + type: numeric + montant_regle_1: + type: numeric + montant_regle_1_c: + type: numeric + montant_regle_1_h: + type: numeric + montant_regle_2: + type: numeric + montant_regle_2_c: + type: numeric + montant_regle_2_h: + type: numeric + montant_regle_c: + type: numeric + montant_regle_h: + type: numeric + motif_non_facturation_comment: + type: text + default: "''::text" + motif_non_facturation_id: + type: bigint + default: "0" + nb_calculable: + type: numeric + nb_factures: + type: bigint + nb_factures_regularisation: + type: bigint + nb_groupe: + type: numeric + nb_non_calcules: + type: integer + nb_non_calcules_bg: + type: integer + nb_non_calcules_horsbg: + type: integer + nb_non_cloture: + type: integer + nb_non_cloture_0: + type: integer + nb_non_cloture_0_c: + type: integer + nb_non_cloture_0_h: + type: integer + nb_non_cloture_1: + type: integer + nb_non_cloture_1_c: + type: integer + nb_non_cloture_1_h: + type: integer + nb_non_cloture_2: + type: integer + nb_non_cloture_2_c: + type: integer + nb_non_cloture_2_h: + type: integer + nb_non_cloture_c: + type: integer + nb_non_cloture_h: + type: integer + nb_non_expedie: + type: numeric + nb_non_expedie_0: + type: numeric + nb_non_expedie_0_c: + type: numeric + nb_non_expedie_0_h: + type: numeric + nb_non_expedie_1: + type: numeric + nb_non_expedie_1_c: + type: numeric + nb_non_expedie_1_h: + type: numeric + nb_non_expedie_2: + type: numeric + nb_non_expedie_2_c: + type: numeric + nb_non_expedie_2_h: + type: numeric + nb_non_expedie_c: + type: numeric + nb_non_expedie_h: + type: numeric + nb_non_groupe: + type: numeric + nb_non_solde: + type: numeric + nb_non_solde_0: + type: numeric + nb_non_solde_0_c: + type: numeric + nb_non_solde_0_h: + type: numeric + nb_non_solde_1: + type: numeric + nb_non_solde_1_c: + type: numeric + nb_non_solde_1_h: + type: numeric + nb_non_solde_2: + type: numeric + nb_non_solde_2_c: + type: numeric + nb_non_solde_2_h: + type: numeric + nb_non_solde_c: + type: numeric + nb_non_solde_h: + type: numeric + nb_rejets: + type: numeric + no_bordereau_0: + type: text + no_bordereau_1: + type: text + no_bordereau_2: + type: text + no_facture_reference: + type: text + no_sejour: + type: text + pole_sortie_id: + type: bigint + default: "0" + retard_facture: + type: numeric + retard_groupage: + type: numeric + sejour_id: + type: bigint + tiers_payant_id: + type: bigint + type_facture: + type: character(1) + type_t2a: + type: character(1) +indexes: + i_factures_reference_tiers_1: + column: sejour_id + method: btree + i_factures_reference_tiers_2: + column: no_sejour + method: btree + i_factures_reference_tiers_3: + column: tiers_payant_id + method: btree + i_factures_reference_tiers_4: + column: date_fin_facture + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_factures_rejets.yaml b/db/schema2/tables/p_factures_rejets.yaml new file mode 100644 index 0000000..1893659 --- /dev/null +++ b/db/schema2/tables/p_factures_rejets.yaml @@ -0,0 +1,28 @@ +columns: + date_rejet: + type: date + facture_id: + type: bigint + default: "0" + no_facture: + type: text + not_null: NOT NULL + rejet_code: + type: text + default: "''::text" + rejet_id: + type: bigint + default: "0" + rejet_texte: + type: text + default: "''::text" +indexes: + i_factures_rejets_1: + column: no_facture + method: btree + i_factures_rejets_2: + column: rejet_id + method: btree + i_factures_rejets_3: + column: facture_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_factures_soldes_c.yaml b/db/schema2/tables/p_factures_soldes_c.yaml new file mode 100644 index 0000000..ca642ee --- /dev/null +++ b/db/schema2/tables/p_factures_soldes_c.yaml @@ -0,0 +1,70 @@ +columns: + date_comptable: + type: date + facture_id: + type: bigint + default: "0" + finess: + type: character(9) + default: "''::bpchar" + montant_comptabilise: + type: numeric(13,2) + default: "0" + montant_comptabilise_0: + type: numeric(13,2) + default: "0" + montant_comptabilise_1: + type: numeric(13,2) + default: "0" + montant_comptabilise_2: + type: numeric(13,2) + default: "0" + montant_comptabilise_22: + type: numeric(13,2) + default: "0" + montant_regle: + type: numeric(13,2) + default: "0" + montant_regle_0: + type: numeric(13,2) + default: "0" + montant_regle_1: + type: numeric(13,2) + default: "0" + montant_regle_2: + type: numeric(13,2) + default: "0" + montant_regle_22: + type: numeric(13,2) + default: "0" + no_facture: + type: text + not_null: NOT NULL + od_avoir: + type: character(1) + default: "'0'::character varying" + od_non_comptabilise: + type: text + default: "'0'::text" + prestation_id: + type: bigint + default: "0" + rubrique_comptabilisee_id: + type: bigint + default: "0" +indexes: + i_factures_soldes_c_1: + column: no_facture + method: btree + i_factures_soldes_c_2: + column: prestation_id + method: btree + i_factures_soldes_c_3: + column: rubrique_comptabilisee_id + method: btree + i_factures_soldes_c_4: + column: date_comptable + method: btree + i_factures_soldes_c_8: + column: facture_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_factures_soldes_h.yaml b/db/schema2/tables/p_factures_soldes_h.yaml new file mode 100644 index 0000000..ebcb123 --- /dev/null +++ b/db/schema2/tables/p_factures_soldes_h.yaml @@ -0,0 +1,85 @@ +columns: + date_comptable: + type: date + facture_id: + type: bigint + default: "0" + finess: + type: character(9) + default: "''::bpchar" + medecin_comptabilise_id: + type: bigint + default: "0" + montant_comptabilise: + type: numeric(13,2) + default: "0" + montant_comptabilise_0: + type: numeric(13,2) + default: "0" + montant_comptabilise_1: + type: numeric(13,2) + default: "0" + montant_comptabilise_2: + type: numeric(13,2) + default: "0" + montant_comptabilise_22: + type: numeric(13,2) + default: "0" + montant_regle: + type: numeric(13,2) + default: "0" + montant_regle_0: + type: numeric(13,2) + default: "0" + montant_regle_1: + type: numeric(13,2) + default: "0" + montant_regle_2: + type: numeric(13,2) + default: "0" + montant_regle_22: + type: numeric(13,2) + default: "0" + montant_solde: + type: numeric(13,2) + default: "0" + montant_solde_0: + type: numeric(13,2) + default: "0" + montant_solde_1: + type: numeric(13,2) + default: "0" + montant_solde_2: + type: numeric(13,2) + default: "0" + montant_solde_22: + type: numeric(13,2) + default: "0" + no_facture: + type: text + not_null: NOT NULL + od_avoir: + type: character(1) + default: "'0'::character varying" + od_non_comptabilise: + type: text + default: "'0'::text" + prestation_id: + type: bigint + default: "0" + rubrique_comptabilisee_id: + type: bigint + default: "0" +indexes: + i_factures_soldes_h_1: + column: no_facture + method: btree + i_factures_soldes_h_3: + column: medecin_comptabilise_id + method: btree + i_factures_soldes_h_4: + column: date_comptable + method: btree + i_factures_soldes_h_8: + column: facture_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_gmt_valorises.yaml b/db/schema2/tables/p_gmt_valorises.yaml new file mode 100644 index 0000000..f475d54 --- /dev/null +++ b/db/schema2/tables/p_gmt_valorises.yaml @@ -0,0 +1,29 @@ +columns: + created_at: + type: timestamp without time zone + not_null: NOT NULL + default: now() + date_debut_gmt: + type: timestamp without time zone + not_null: NOT NULL + date_fin_gmt: + type: timestamp without time zone + not_null: NOT NULL + gme_code: + type: text + gmt_code: + type: text + not_null: NOT NULL + gmt_libelle: + type: text + montant_valorise: + type: integer + montant_valorise_par_jour: + type: numeric(13,2) + no_sejour: + type: text + not_null: NOT NULL +constraints: + p_gmt_valorises_pkey: + type: PRIMARY KEY + column: gmt_code, no_sejour \ No newline at end of file diff --git a/db/schema2/tables/p_indicateurs_cumules.yaml b/db/schema2/tables/p_indicateurs_cumules.yaml new file mode 100644 index 0000000..2c7b248 --- /dev/null +++ b/db/schema2/tables/p_indicateurs_cumules.yaml @@ -0,0 +1,40 @@ +columns: + date_reference: + type: date + finess_id: + type: bigint + default: "0" + indicateur_condition_id: + type: 'bigint[]' + indicateur_id: + type: bigint + periode_type: + type: text + pole_id: + type: bigint + default: "0" + value: + type: numeric + value_cum: + type: numeric + value_cum12: + type: numeric + value_cum4t: + type: numeric + default: "0" + value_exercice: + type: numeric + default: "0" + value_trimestre: + type: numeric + default: "0" +indexes: + i_indicateurs_cumules_1: + column: indicateur_id + method: btree + i_indicateurs_cumules_2: + column: date_reference + method: btree + i_indicateurs_cumules_3: + column: periode_type + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_intervention.yaml b/db/schema2/tables/p_intervention.yaml new file mode 100644 index 0000000..e7c3c80 --- /dev/null +++ b/db/schema2/tables/p_intervention.yaml @@ -0,0 +1,42 @@ +columns: + acte_id: + type: bigint + not_null: NOT NULL + date_debut: + type: date + not_null: NOT NULL + heure_debut: + type: numeric(6,0) + default: "0" + medecin_anesthesiste_id: + type: bigint + default: "0" + medecin_chirurgien_id: + type: bigint + default: "0" + salle_id: + type: bigint + default: "0" + sejour_id: + type: bigint + not_null: NOT NULL +constraints: + intervention_ukey: + type: UNIQUE + column: date_debut, heure_debut, sejour_id +indexes: + i_intervention_1: + column: sejour_id + method: btree + i_intervention_2: + column: date_debut + method: btree + i_intervention_3: + column: acte_id + method: btree + i_intervention_4: + column: medecin_chirurgien_id + method: btree + i_intervention_5: + column: medecin_anesthesiste_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_mouvements_sejour.yaml b/db/schema2/tables/p_mouvements_sejour.yaml new file mode 100644 index 0000000..739fb87 --- /dev/null +++ b/db/schema2/tables/p_mouvements_sejour.yaml @@ -0,0 +1,206 @@ +columns: + budget_cle_id: + type: bigint + default: "0" + date: + type: date + not_null: NOT NULL + equivalent_malade_complet: + type: numeric + default: "0" + est_chambre_particuliere: + type: character(1) + default: "'0'::bpchar" + est_chambre_particuliere_facturee: + type: character(1) + default: "'0'::bpchar" + est_dernier_mouvement_jour: + type: character(1) + est_facture: + type: character(1) + default: "'1'::bpchar" + est_jour_entree: + type: character(1) + default: "'0'::bpchar" + est_jour_hospitalisation: + type: character(1) + default: "'0'::bpchar" + est_jour_sortie: + type: character(1) + default: "'0'::bpchar" + est_mouvement_previsionnel: + type: character(1) + default: "'0'::bpchar" + est_premier_mouvement_jour: + type: character(1) + finess: + type: character(9) + not_null: NOT NULL + default: "''::bpchar" + heure_debut: + type: numeric(6,0) + default: "0" + heure_fin: + type: numeric(6,0) + default: "240000" + is_annulation: + type: smallint + default: "0" + is_weekend: + type: character(1) + jour_semaine: + type: numeric + lieu_id: + type: bigint + not_null: NOT NULL + medecin_sejour_id: + type: bigint + nb_ambulatoires: + type: numeric(5,0) + default: "0" + nb_bebes: + type: numeric(5,0) + default: "0" + nb_chambres_particulieres: + type: numeric(5,0) + default: "0" + nb_deces: + type: integer + default: "0" + nb_entrees_directes: + type: numeric(5,0) + default: "0" + nb_entrees_mutation_activite: + type: numeric(5,0) + default: "0" + nb_entrees_mutation_etage: + type: numeric(5,0) + default: "0" + nb_entrees_mutation_service: + type: numeric(5,0) + default: "0" + nb_entrees_mutation_unite_medicale: + type: numeric(5,0) + default: "0" + nb_entrees_mutations: + type: numeric(5,0) + default: "0" + nb_externes: + type: numeric(5,0) + default: "0" + nb_jour_sejour_sorti: + type: integer + default: "0" + nb_jours_12: + type: integer + default: "0" + nb_jours_cp_12: + type: integer + default: "0" + nb_jours_cp_d: + type: integer + default: "1" + nb_jours_cp_f: + type: integer + default: "0" + nb_jours_d: + type: integer + default: "1" + nb_jours_f: + type: integer + default: "0" + nb_jours_js_inclus: + type: numeric(5,0) + nb_jours_js_non_inclus: + type: numeric(5,0) + nb_jours_prorata: + type: numeric + default: "0" + nb_passage_externe: + type: integer + default: "0" + nb_preadmission_validee: + type: numeric + default: "0" + nb_preadmission_validee_j1: + type: numeric + default: "0" + nb_preadmission_validee_j2: + type: numeric + default: "0" + nb_seances: + type: numeric(5,0) + default: "0" + nb_seances_autre: + type: integer + default: "0" + nb_seances_chimio: + type: integer + default: "0" + nb_seances_dans_taux: + type: numeric(5,0) + default: "0" + nb_seances_dialyse: + type: integer + default: "0" + nb_sorties_directes: + type: numeric(5,0) + default: "0" + nb_sorties_mutation_activite: + type: numeric(5,0) + default: "0" + nb_sorties_mutation_etage: + type: numeric(5,0) + default: "0" + nb_sorties_mutation_service: + type: numeric(5,0) + default: "0" + nb_sorties_mutation_unite_medicale: + type: numeric(5,0) + default: "0" + nb_sorties_mutations: + type: numeric(5,0) + default: "0" + nb_urgences: + type: numeric(5,0) + default: "0" + no_sejour: + type: text + not_null: NOT NULL + pole_id: + type: bigint + default: "0" + sejour_id: + type: bigint + default: "0" + sequences: + type: bigint +constraints: + mouvements_sejour_ukey: + type: UNIQUE + column: date, heure_debut, no_sejour +indexes: + i_mouvements_sejour_1: + column: date, no_sejour + method: btree + i_mouvements_sejour_2: + column: date + method: btree + i_mouvements_sejour_3: + column: lieu_id + method: btree + i_mouvements_sejour_4: + column: medecin_sejour_id + method: btree + i_mouvements_sejour_5: + column: sejour_id + method: btree + i_mouvements_sejour_budget_cle_id: + column: budget_cle_id + method: btree + i_mouvements_sejour_no_sejour: + column: no_sejour + method: btree + i_mouvements_sejour_pole_id: + column: pole_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_oids.yaml b/db/schema2/tables/p_oids.yaml new file mode 100644 index 0000000..cd7e580 --- /dev/null +++ b/db/schema2/tables/p_oids.yaml @@ -0,0 +1,16 @@ +columns: + code_table: + type: text + oid: + type: bigint +constraints: + p_oids_code_table_key: + type: UNIQUE + column: code_table, oid +indexes: + i_oids_1: + column: code_table + method: btree + i_oids_2: + column: oid + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_patients.yaml b/db/schema2/tables/p_patients.yaml new file mode 100644 index 0000000..99cafc4 --- /dev/null +++ b/db/schema2/tables/p_patients.yaml @@ -0,0 +1,29 @@ +columns: + code_sexe: + type: character(1) + default: "'1'::bpchar" + date_naissance: + type: date + default: "'2099-12-31'::date" + finess: + type: character(9) + not_null: NOT NULL + default: "''::bpchar" + no_patient: + type: character(20) + not_null: NOT NULL + nom: + type: text + nom_naissance: + type: text + default: "''::text" + prenom: + type: text +constraints: + p_patients_pkey: + type: PRIMARY KEY + column: finess, no_patient +indexes: + i_patients_1: + column: no_patient + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_sejour_effet_tarif.yaml b/db/schema2/tables/p_sejour_effet_tarif.yaml new file mode 100644 index 0000000..8c236a7 --- /dev/null +++ b/db/schema2/tables/p_sejour_effet_tarif.yaml @@ -0,0 +1,134 @@ +columns: + borne_basse_c: + type: numeric + default: "0" + borne_basse_p: + type: numeric + default: "0" + borne_haute_c: + type: numeric + default: "0" + borne_haute_p: + type: numeric + default: "0" + coefficient_c: + type: numeric + default: "0" + coefficient_p: + type: numeric + default: "0" + forfait_exb_c: + type: numeric + default: "0" + forfait_exb_p: + type: numeric + default: "0" + montant_exb_c: + type: numeric + default: "0" + montant_exb_p: + type: numeric + default: "0" + montant_exh_c: + type: numeric + default: "0" + montant_exh_f: + type: numeric + default: "0" + montant_exh_p: + type: numeric + default: "0" + montant_ghs_bb1_c: + type: numeric + default: "0" + montant_ghs_bb1_p: + type: numeric + default: "0" + montant_ghs_bb2_c: + type: numeric + default: "0" + montant_ghs_bb2_p: + type: numeric + default: "0" + montant_ghs_bb3_c: + type: numeric + default: "0" + montant_ghs_bb3_p: + type: numeric + default: "0" + montant_ghs_c: + type: numeric + default: "0" + montant_ghs_f: + type: numeric + default: "0" + montant_ghs_p: + type: numeric + default: "0" + montant_tot_c: + type: numeric + default: "0" + montant_tot_f: + type: numeric + default: "0" + montant_tot_p: + type: numeric + default: "0" + no_sejour: + type: text + not_null: NOT NULL + ok_ghs_c: + type: text + default: "''::text" + ok_ghs_f: + type: text + default: "''::text" + ok_ghs_p: + type: text + default: "''::text" + sejour_id: + type: bigint + not_null: NOT NULL + tarif_exb_c: + type: numeric + default: "0" + tarif_exb_p: + type: numeric + default: "0" + tarif_exh_c: + type: numeric + default: "0" + tarif_exh_p: + type: numeric + default: "0" + tarif_ghs_bb1_c: + type: numeric + default: "0" + tarif_ghs_bb1_p: + type: numeric + default: "0" + tarif_ghs_bb2_c: + type: numeric + default: "0" + tarif_ghs_bb2_p: + type: numeric + default: "0" + tarif_ghs_bb3_c: + type: numeric + default: "0" + tarif_ghs_bb3_p: + type: numeric + default: "0" + tarif_ghs_c: + type: numeric + default: "0" + tarif_ghs_p: + type: numeric + default: "0" +indexes: + i_sejour_effet_tarif_no_sejour: + column: no_sejour + method: btree + i_sejour_effet_tarif_sejour_id: + column: sejour_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_sejour_filiere_soin.yaml b/db/schema2/tables/p_sejour_filiere_soin.yaml new file mode 100644 index 0000000..5e8e3f9 --- /dev/null +++ b/db/schema2/tables/p_sejour_filiere_soin.yaml @@ -0,0 +1,14 @@ +columns: + filiere_soin_id: + type: bigint + default: "0" + sejour_id: + type: bigint + not_null: NOT NULL +indexes: + i_sejour_filiere_soin_filiere_soin_id: + column: filiere_soin_id + method: btree + i_sejour_filiere_soin_sejour_id: + column: sejour_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_sejour_lieu.yaml b/db/schema2/tables/p_sejour_lieu.yaml new file mode 100644 index 0000000..60e9933 --- /dev/null +++ b/db/schema2/tables/p_sejour_lieu.yaml @@ -0,0 +1,26 @@ +columns: + lieu_id: + type: bigint + not_null: NOT NULL + no_sejour: + type: text + not_null: NOT NULL + pole_id: + type: bigint + default: "0" + sejour_id: + type: bigint + not_null: NOT NULL +indexes: + i_sejour_lieu_lieu_id: + column: lieu_id + method: btree + i_sejour_lieu_no_sejour: + column: no_sejour + method: btree + i_sejour_lieu_pole_id: + column: pole_id + method: btree + i_sejour_lieu_sejour_id: + column: sejour_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_sejour_pmsi.yaml b/db/schema2/tables/p_sejour_pmsi.yaml new file mode 100644 index 0000000..e75edfe --- /dev/null +++ b/db/schema2/tables/p_sejour_pmsi.yaml @@ -0,0 +1,35 @@ +columns: + en_cours_pmsi: + type: text + no_rss: + type: bigint + default: "0" + no_sejour: + type: text + not_null: NOT NULL + pmsi_type: + type: text + default: "''::text" + rss_id: + type: bigint + default: "0" + sejour_id: + type: bigint + not_null: NOT NULL + ssr_id: + type: bigint + default: "0" + ssr_id_array: + type: 'bigint[]' + traitement_epmsi: + type: text +indexes: + i_sejour_pmsi_1: + column: no_sejour + method: btree + i_sejour_pmsi_2: + column: rss_id + method: btree + i_sejour_pmsi_3: + column: sejour_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_sejours.yaml b/db/schema2/tables/p_sejours.yaml new file mode 100644 index 0000000..4c66b89 --- /dev/null +++ b/db/schema2/tables/p_sejours.yaml @@ -0,0 +1,406 @@ +columns: + age: + type: numeric(3,0) + code_cp_demandee: + type: character(1) + default: "0" + code_original: + type: text + default: "''::text" + code_postal_id: + type: bigint + default: "0" + code_prevu: + type: numeric(1,0) + default: "0" + code_sexe: + type: character(1) + code_sorti: + type: numeric(1,0) + default: "0" + date_entree: + type: date + date_etat: + type: timestamp without time zone + date_expedition: + type: date + default: "'2099-12-31'::date" + date_expedition_0: + type: date + default: "'2099-12-31'::date" + date_expedition_1: + type: date + default: "'2099-12-31'::date" + date_expedition_12: + type: date + default: "'2099-12-31'::date" + date_expedition_2: + type: date + default: "'2099-12-31'::date" + date_expedition_22: + type: date + default: "'2099-12-31'::date" + date_facture: + type: date + date_groupage: + type: date + default: "'2099-12-31'::date" + date_solde: + type: date + date_solde_0: + type: date + default: "'2099-12-31'::date" + date_solde_1: + type: date + default: "'2099-12-31'::date" + date_solde_12: + type: date + default: "'2099-12-31'::date" + date_solde_2: + type: date + default: "'2099-12-31'::date" + date_solde_22: + type: date + default: "'2099-12-31'::date" + date_sortie: + type: date + delai_expedition: + type: numeric(5,0) + default: "0" + delai_expedition_0: + type: numeric(5,0) + default: "0" + delai_expedition_1: + type: numeric(5,0) + default: "0" + delai_expedition_12: + type: numeric(5,0) + default: "0" + delai_expedition_2: + type: numeric(5,0) + default: "0" + delai_expedition_22: + type: numeric(5,0) + default: "0" + delai_facture: + type: numeric(5,0) + delai_groupage: + type: numeric(5,0) + default: "0" + delai_solde: + type: numeric(5,0) + delai_solde_0: + type: numeric(5,0) + default: "0" + delai_solde_1: + type: numeric(5,0) + default: "0" + delai_solde_12: + type: numeric(5,0) + default: "0" + delai_solde_2: + type: numeric(5,0) + default: "0" + delai_solde_22: + type: numeric(5,0) + default: "0" + destination: + type: character(1) + default: "''::bpchar" + est_budget_global: + type: numeric(1,0) + default: "0" + est_sans_facturation: + type: character(1) + default: "'0'::bpchar" + comment: 1=Pas de facturation pour ce séjour (services ou UF spéciaux) + etat: + type: character(1) + default: "''::bpchar" + comment: | + S = Supprimé + I = Ignoré + etat_sejour: + type: text + filiere_soin_principale_id: + type: bigint + default: "0" + finess: + type: text + not_null: NOT NULL + default: "''::bpchar" + forme_activite_id: + type: integer + default: "0" + ghm_id: + type: bigint + default: "0" + ghmgme_id: + type: integer + default: "0" + ghs_bebe1_id: + type: bigint + default: "0" + ghs_bebe2_id: + type: bigint + default: "0" + ghs_bebe3_id: + type: bigint + default: "0" + ghs_id: + type: bigint + default: "0" + gme_id: + type: integer + default: "0" + gmt_id: + type: bigint + default: "0" + heure_entree: + type: numeric(6,0) + default: "0" + heure_sortie: + type: numeric(6,0) + default: "0" + lieu_sortie_id: + type: bigint + default: "0" + medecin_sejour_id: + type: bigint + medecin_traitant_id: + type: bigint + default: "0" + mode_entree: + type: character(1) + default: "'8'::bpchar" + mode_sortie: + type: character(1) + mode_traitement_id: + type: bigint + default: "0" + montant_comptabilise_0_c: + type: numeric(13,2) + default: "0" + montant_comptabilise_0_h: + type: numeric(13,2) + default: "0" + montant_comptabilise_1_c: + type: numeric(13,2) + default: "0" + montant_comptabilise_1_h: + type: numeric(13,2) + default: "0" + montant_comptabilise_22_c: + type: numeric(13,2) + default: "0" + montant_comptabilise_22_h: + type: numeric(13,2) + default: "0" + montant_comptabilise_2_c: + type: numeric(13,2) + default: "0" + montant_comptabilise_2_h: + type: numeric(13,2) + default: "0" + montant_comptabilise_budget_global_c: + type: numeric(13,2) + default: "0" + montant_comptabilise_c: + type: numeric(13,2) + default: "0" + montant_comptabilise_h: + type: numeric(13,2) + default: "0" + montant_facture_0_c: + type: numeric(13,2) + default: "0" + montant_facture_0_h: + type: numeric(13,2) + default: "0" + montant_facture_12_c: + type: numeric(13,2) + default: "0" + montant_facture_12_h: + type: numeric(13,2) + default: "0" + montant_facture_1_c: + type: numeric(13,2) + default: "0" + montant_facture_1_h: + type: numeric(13,2) + default: "0" + montant_facture_22_c: + type: numeric(13,2) + default: "0" + montant_facture_22_h: + type: numeric(13,2) + default: "0" + montant_facture_2_c: + type: numeric(13,2) + default: "0" + montant_facture_2_h: + type: numeric(13,2) + default: "0" + montant_facture_c: + type: numeric(13,2) + default: "0" + montant_facture_c_actes_inclus_dans_sejour: + type: numeric(13,2) + montant_facture_h: + type: numeric(13,2) + default: "0" + montant_facture_h_actes_inclus_dans_sejour: + type: numeric(13,2) + montant_regle_0_c: + type: numeric(13,2) + default: "0" + montant_regle_0_h: + type: numeric(13,2) + default: "0" + montant_regle_12_c: + type: numeric(13,2) + default: "0" + montant_regle_12_h: + type: numeric(13,2) + default: "0" + montant_regle_1_c: + type: numeric(13,2) + default: "0" + montant_regle_1_h: + type: numeric(13,2) + default: "0" + montant_regle_22_c: + type: numeric(13,2) + default: "0" + montant_regle_22_h: + type: numeric(13,2) + default: "0" + montant_regle_2_c: + type: numeric(13,2) + default: "0" + montant_regle_2_h: + type: numeric(13,2) + default: "0" + montant_regle_c: + type: numeric(13,2) + montant_regle_h: + type: numeric(13,2) + nb_factures: + type: numeric(5,0) + nb_factures_regularisation: + type: numeric(5,0) + nb_factures_rejet: + type: numeric(5,0) + default: "0" + no_patient: + type: character(20) + no_sejour: + type: text + not_null: NOT NULL + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_sejours'::regclass)" + particularite_t2a: + type: text + default: "''::text" + comment: | + SE1 = Forfait SE1 + SE2 = Forfait SE2 + SE3 = Forfait SE3 + provenance: + type: character(1) + default: "''::bpchar" + provider_id: + type: bigint + default: "0" + risque_id: + type: integer + default: "0" + tiers_payant_0_id: + type: bigint + default: "0" + tiers_payant_1_id: + type: bigint + default: "0" + tiers_payant_22_id: + type: bigint + default: "0" + tiers_payant_2_id: + type: bigint + default: "0" + traitement_epmsi_id: + type: bigint + default: "0" + type_hospi_pmsi_id: + type: integer + default: "0" + type_pmsi: + type: character(1) + default: "'0'::bpchar" + comment: 'Type PMSI : 1=MCO, 2=SSR, 3=PSY' + type_sejour: + type: text + comment: | + 1=Hospitalisés + 2=Ambulatoires + 3=Externes +constraints: + p_sejours_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_sejours_1: + column: no_sejour + method: btree + i_sejours_10: + column: ghs_id + method: btree + i_sejours_11: + column: no_patient + method: btree + i_sejours_12: + column: type_sejour + method: btree + i_sejours_13: + column: code_original + method: btree + i_sejours_14: + column: ghm_id + method: btree + i_sejours_15: + column: medecin_sejour_id + method: btree + i_sejours_16: + column: age + method: btree + i_sejours_2: + column: lieu_sortie_id + method: btree + i_sejours_3: + column: date_sortie + method: btree + i_sejours_4: + column: tiers_payant_1_id + method: btree + i_sejours_5: + column: tiers_payant_2_id + method: btree + i_sejours_6: + column: date_facture + method: btree + i_sejours_7: + column: code_sorti + method: btree + i_sejours_8: + column: tiers_payant_0_id + method: btree + i_sejours_9: + column: tiers_payant_22_id + method: btree + i_sejours_forme_activite_id: + column: forme_activite_id + method: btree + i_sejours_gme_id: + column: gme_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_sejours_assurance.yaml b/db/schema2/tables/p_sejours_assurance.yaml new file mode 100644 index 0000000..6f05f15 --- /dev/null +++ b/db/schema2/tables/p_sejours_assurance.yaml @@ -0,0 +1,48 @@ +columns: + matricule_1: + type: text + default: "''::text" + matricule_2: + type: text + default: "''::text" + matricule_22: + type: text + default: "''::text" + nom_assure: + type: text + default: "''::text" + prenom_assure: + type: text + default: "''::text" + sejour_id: + type: bigint + not_null: NOT NULL + tiers_payant_0_id: + type: bigint + default: "0" + tiers_payant_1_id: + type: bigint + default: "0" + tiers_payant_22_id: + type: bigint + default: "0" + tiers_payant_2_id: + type: bigint + default: "0" +constraints: + p_sejours_assurance_pkey: + type: PRIMARY KEY + column: sejour_id +indexes: + i_sejours_assurance_1: + column: tiers_payant_0_id + method: btree + i_sejours_assurance_2: + column: tiers_payant_1_id + method: btree + i_sejours_assurance_3: + column: tiers_payant_2_id + method: btree + i_sejours_assurance_4: + column: tiers_payant_22_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_sejours_budget_cle.yaml b/db/schema2/tables/p_sejours_budget_cle.yaml new file mode 100644 index 0000000..16f217e --- /dev/null +++ b/db/schema2/tables/p_sejours_budget_cle.yaml @@ -0,0 +1,14 @@ +columns: + budget_cle_id: + type: bigint + default: "0" + sejour_id: + type: bigint + not_null: NOT NULL +indexes: + i_sejours_budget_cle_1: + column: sejour_id + method: btree + i_sejours_budget_cle_3: + column: budget_cle_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/p_sejours_groupes_smr.yaml b/db/schema2/tables/p_sejours_groupes_smr.yaml new file mode 100644 index 0000000..ed8c40f --- /dev/null +++ b/db/schema2/tables/p_sejours_groupes_smr.yaml @@ -0,0 +1,53 @@ +columns: + created_at: + type: timestamp without time zone + not_null: NOT NULL + default: now() + date_debut_gmt: + type: timestamp without time zone + not_null: NOT NULL + date_entree: + type: timestamp without time zone + not_null: NOT NULL + date_fin_gmt: + type: timestamp without time zone + not_null: NOT NULL + date_groupage: + type: timestamp without time zone + not_null: NOT NULL + date_sortie: + type: timestamp without time zone + gme_code: + type: text + not_null: NOT NULL + gme_id: + type: integer + not_null: NOT NULL + gmt_code: + type: text + not_null: NOT NULL + gmt_id: + type: integer + not_null: NOT NULL + nb_jours_presence: + type: integer + not_null: NOT NULL + no_sejour: + type: text + not_null: NOT NULL + types_gmt_code: + type: text + not_null: NOT NULL +constraints: + fk_types_gmt_code: + type: FOREIGN KEY + fk_references: FOREIGN KEY (types_gmt_code) REFERENCES activite.t_types_gmt(code) + column_name: types_gmt_code + foreign_schema_name: activite + foreign_table_name: t_types_gmt + foreign_column_name: code + on_update: no_action + on_delete: no_action + p_sejours_groupes_smr_pkey: + type: PRIMARY KEY + column: no_sejour, gmt_code \ No newline at end of file diff --git a/db/schema2/tables/p_sejours_parametres_personnalises.yaml b/db/schema2/tables/p_sejours_parametres_personnalises.yaml new file mode 100644 index 0000000..0eeca21 --- /dev/null +++ b/db/schema2/tables/p_sejours_parametres_personnalises.yaml @@ -0,0 +1,14 @@ +columns: + parametre_personnalise_1_id: + type: bigint + default: "0" + parametre_personnalise_2_id: + type: bigint + default: "0" + sejour_id: + type: bigint + not_null: NOT NULL +constraints: + p_sejours_parametres_personnalises_pkey: + type: PRIMARY KEY + column: sejour_id \ No newline at end of file diff --git a/db/schema2/tables/p_sejours_preadmission.yaml b/db/schema2/tables/p_sejours_preadmission.yaml new file mode 100644 index 0000000..b6c3429 --- /dev/null +++ b/db/schema2/tables/p_sejours_preadmission.yaml @@ -0,0 +1,18 @@ +columns: + date_entree: + type: timestamp without time zone + date_validation_preadmission: + type: timestamp without time zone + no_sejour: + type: text + not_null: NOT NULL + preadmission_j1: + type: smallint + default: "0" + preadmission_j2: + type: smallint + default: "0" +constraints: + p_sejours_preadmission_pkey: + type: PRIMARY KEY + column: no_sejour \ No newline at end of file diff --git a/db/schema2/tables/p_sejours_transferts.yaml b/db/schema2/tables/p_sejours_transferts.yaml new file mode 100644 index 0000000..c56e8bf --- /dev/null +++ b/db/schema2/tables/p_sejours_transferts.yaml @@ -0,0 +1,12 @@ +columns: + destination_id: + type: bigint + provenance_id: + type: bigint + sejour_id: + type: bigint + not_null: NOT NULL +constraints: + p_sejours_transferts_pkey: + type: PRIMARY KEY + column: sejour_id \ No newline at end of file diff --git a/db/schema2/tables/t_actes_c.yaml b/db/schema2/tables/t_actes_c.yaml new file mode 100644 index 0000000..7f198c0 --- /dev/null +++ b/db/schema2/tables/t_actes_c.yaml @@ -0,0 +1,110 @@ +columns: + action_code: + type: text + action_id: + type: bigint + default: "0" + action_texte: + type: text + ccam_regroupement_code_1: + type: text + ccam_regroupement_code_4: + type: text + ccam_regroupement_id_1: + type: bigint + ccam_regroupement_id_4: + type: bigint + ccam_regroupement_texte_1: + type: text + ccam_regroupement_texte_4: + type: text + chapitre_1_code: + type: text + default: "0" + chapitre_1_id: + type: bigint + default: "0" + chapitre_1_texte: + type: text + chapitre_2_code: + type: text + default: "0" + chapitre_2_id: + type: bigint + default: "0" + chapitre_2_texte: + type: text + chapitre_3_code: + type: text + default: "0" + chapitre_3_id: + type: bigint + default: "0" + chapitre_3_texte: + type: text + chapitre_4_code: + type: text + default: "0" + chapitre_4_id: + type: bigint + default: "0" + chapitre_4_texte: + type: text + classant: + type: character(1) + code: + type: text + nomenclature: + type: text + oid: + type: bigint + not_null: NOT NULL + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + technique_code: + type: text + technique_id: + type: bigint + default: "0" + technique_texte: + type: text + texte: + type: text + texte_court: + type: text + topographie_1_code: + type: text + topographie_1_id: + type: bigint + default: "0" + topographie_1_texte: + type: text + topographie_2_code: + type: text + topographie_2_id: + type: bigint + default: "0" + topographie_2_texte: + type: text + type_code: + type: text + type_id: + type: bigint + default: "0" + type_texte: + type: text +constraints: + t_actes_c_pkey: + type: PRIMARY KEY + column: oid + t_actes_c_ukey1: + type: UNIQUE + column: code +indexes: + i_actes_c_1: + column: code + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_activites.yaml b/db/schema2/tables/t_activites.yaml new file mode 100644 index 0000000..b2ad648 --- /dev/null +++ b/db/schema2/tables/t_activites.yaml @@ -0,0 +1,35 @@ +columns: + code: + type: text + code_original: + type: text + etage_force_id: + type: bigint + default: "0" + etage_par_defaut_id: + type: bigint + default: "0" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_activites'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + statut: + type: character(1) + texte: + type: text + texte_court: + type: text +constraints: + t_activites_pkey: + type: PRIMARY KEY + column: oid +indexes: + t_activites_code_key: + column: code + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_ages_c.yaml b/db/schema2/tables/t_ages_c.yaml new file mode 100644 index 0000000..7eb212a --- /dev/null +++ b/db/schema2/tables/t_ages_c.yaml @@ -0,0 +1,24 @@ +columns: + code: + type: text + default: "''::text" + oid: + type: bigint + not_null: NOT NULL + default: "0" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text + default: "''::text" +constraints: + t_ages_c_pkey: + type: PRIMARY KEY + column: oid + t_ages_c_code_key: + type: UNIQUE + column: code \ No newline at end of file diff --git a/db/schema2/tables/t_bloc.yaml b/db/schema2/tables/t_bloc.yaml new file mode 100644 index 0000000..cf3cab7 --- /dev/null +++ b/db/schema2/tables/t_bloc.yaml @@ -0,0 +1,21 @@ +columns: + code: + type: text + code_original: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_bloc'::regclass)" + texte: + type: text + texte_court: + type: text +constraints: + t_bloc_pkey: + type: PRIMARY KEY + column: oid +indexes: + t_bloc_code_key: + column: code + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_bloc_motif_intervention.yaml b/db/schema2/tables/t_bloc_motif_intervention.yaml new file mode 100644 index 0000000..97a92d9 --- /dev/null +++ b/db/schema2/tables/t_bloc_motif_intervention.yaml @@ -0,0 +1,27 @@ +columns: + code: + type: text + code_original: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_bloc_motif_intervention'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text + texte_court: + type: text +constraints: + t_bloc_motif_intervention_pkey: + type: PRIMARY KEY + column: oid +indexes: + t_bloc_motif_intervention_code_key: + column: code + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_bloc_salle.yaml b/db/schema2/tables/t_bloc_salle.yaml new file mode 100644 index 0000000..9ab0bab --- /dev/null +++ b/db/schema2/tables/t_bloc_salle.yaml @@ -0,0 +1,33 @@ +columns: + bloc_id: + type: bigint + default: "0" + code: + type: text + code_original: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_bloc_salle'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text + texte_court: + type: text +constraints: + t_bloc_salle_pkey: + type: PRIMARY KEY + column: oid +indexes: + t_bloc_salle_bloc_id_key: + column: bloc_id + method: btree + t_bloc_salle_code_key: + column: code + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_bloc_salle_disponibilite.yaml b/db/schema2/tables/t_bloc_salle_disponibilite.yaml new file mode 100644 index 0000000..186a8a0 --- /dev/null +++ b/db/schema2/tables/t_bloc_salle_disponibilite.yaml @@ -0,0 +1,27 @@ +columns: + date: + type: date + duree: + type: numeric + heure_debut: + type: 'timestamp without time zone[]' + heure_fin: + type: 'timestamp without time zone[]' + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_bloc_salle_disponibilite'::regclass)" + salle_id: + type: bigint + default: "0" +constraints: + t_bloc_salle_disponibilite_pkey: + type: PRIMARY KEY + column: oid +indexes: + t_bloc_salle_disponibilite_date_key: + column: date + method: btree + t_bloc_salle_disponibilite_salle_id_key: + column: salle_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_budget.yaml b/db/schema2/tables/t_budget.yaml new file mode 100644 index 0000000..b32dafc --- /dev/null +++ b/db/schema2/tables/t_budget.yaml @@ -0,0 +1,27 @@ +columns: + code: + type: text + date_debut: + type: date + date_fin: + type: date + indicateurs: + type: 'bigint[]' + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_budget'::regclass)" + reference_date_debut: + type: date + reference_date_fin: + type: date + texte: + type: text +constraints: + t_budget_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_budget_1: + column: code + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_budget_cle.yaml b/db/schema2/tables/t_budget_cle.yaml new file mode 100644 index 0000000..00aab6b --- /dev/null +++ b/db/schema2/tables/t_budget_cle.yaml @@ -0,0 +1,23 @@ +columns: + code: + type: text + code_original: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_budget_cle'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text + texte_court: + type: text +constraints: + t_budget_cle_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_budget_cle_budget.yaml b/db/schema2/tables/t_budget_cle_budget.yaml new file mode 100644 index 0000000..bf403a7 --- /dev/null +++ b/db/schema2/tables/t_budget_cle_budget.yaml @@ -0,0 +1,18 @@ +columns: + budget: + type: numeric + budget_cle_id: + type: bigint + not_null: NOT NULL + default: "0" + budget_id: + type: bigint + budget_indicateur_id: + type: bigint + date: + type: date + indicateur_id: + type: bigint + indicateur_module: + type: text + default: "'iCTI_activite'::text" \ No newline at end of file diff --git a/db/schema2/tables/t_budget_cle_rule.yaml b/db/schema2/tables/t_budget_cle_rule.yaml new file mode 100644 index 0000000..8d52501 --- /dev/null +++ b/db/schema2/tables/t_budget_cle_rule.yaml @@ -0,0 +1,52 @@ +columns: + budget_cle_id: + type: bigint + not_null: NOT NULL + default: "0" + budget_id: + type: bigint + not_null: NOT NULL + default: "0" + code: + type: text + liste_acte: + type: text + liste_activite: + type: text + liste_diagnostic_associe: + type: text + liste_diagnostic_principal: + type: text + liste_diagnostic_relie: + type: text + liste_finess: + type: text + liste_ghm: + type: text + liste_medecin: + type: text + liste_rubrique: + type: text + liste_sauf_ghm: + type: text + liste_service: + type: text + liste_specialite: + type: text + liste_type_sejour: + type: text + liste_uf: + type: text + default: "''::text" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_budget_cle_rule'::regclass)" + priorite: + type: numeric(5,0) + texte: + type: text +constraints: + t_budget_cle_rule_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_budget_indicateur.yaml b/db/schema2/tables/t_budget_indicateur.yaml new file mode 100644 index 0000000..148ea7b --- /dev/null +++ b/db/schema2/tables/t_budget_indicateur.yaml @@ -0,0 +1,23 @@ +columns: + budget_id: + type: bigint + not_null: NOT NULL + default: "0" + code: + type: text + indicateur_id: + type: bigint + default: "0" + indicateur_module: + type: text + default: "'iCTI_activite'::text" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_budget_indicateur'::regclass)" + texte: + type: text +constraints: + t_budget_indicateur_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_budgets.yaml b/db/schema2/tables/t_budgets.yaml new file mode 100644 index 0000000..afc395d --- /dev/null +++ b/db/schema2/tables/t_budgets.yaml @@ -0,0 +1,31 @@ +columns: + code: + type: text + date_debut: + type: date + date_fin: + type: date + dimension1: + type: text + default: "''::text" + dimension2: + type: text + default: "''::text" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_budgets'::regclass)" + reference_date_debut: + type: date + reference_date_fin: + type: date + texte: + type: text +constraints: + t_budgets_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_budgets_1: + column: code + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_budgets_saisis.yaml b/db/schema2/tables/t_budgets_saisis.yaml new file mode 100644 index 0000000..6a67ecc --- /dev/null +++ b/db/schema2/tables/t_budgets_saisis.yaml @@ -0,0 +1,111 @@ +columns: + budget_id: + type: bigint + not_null: NOT NULL + budget_nb_ambulatoires_mois: + type: 'numeric(7,0)[]' + budget_nb_ambulatoires_total: + type: numeric(11,0) + default: "0" + budget_nb_entrees_directes_mois: + type: 'numeric(7,0)[]' + budget_nb_entrees_directes_total: + type: numeric(7,0) + default: "0" + budget_nb_externes_mois: + type: 'numeric(7,0)[]' + budget_nb_externes_total: + type: numeric(11,0) + default: "0" + budget_nb_jours_js_non_inclus_mois: + type: 'numeric(7,0)[]' + budget_nb_jours_js_non_inclus_total: + type: numeric(11,0) + default: "0" + budget_nb_seances_mois: + type: 'numeric(7,0)[]' + budget_nb_seances_total: + type: numeric(11,0) + default: "0" + budget_nb_sorties_directes_mois: + type: 'numeric(7,0)[]' + budget_nb_sorties_directes_total: + type: numeric(7,0) + default: "0" + finess_code: + type: text + finess_id: + type: bigint + default: "0" + finess_section_code: + type: 'text[]' + finess_section_id: + type: 'bigint[]' + finess_section_texte: + type: 'text[]' + finess_texte: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_budgets_saisis'::regclass)" + parent_code: + type: text + parent_id: + type: bigint + not_null: NOT NULL + parent_section_code: + type: 'text[]' + parent_section_id: + type: 'bigint[]' + parent_section_texte: + type: 'text[]' + parent_texte: + type: text + parent_type: + type: text + default: "''::text" + reference_nb_ambulatoires_mois: + type: 'numeric(7,0)[]' + reference_nb_ambulatoires_total: + type: numeric(7,0) + default: "0" + reference_nb_entrees_directes_mois: + type: 'numeric(7,0)[]' + reference_nb_entrees_directes_total: + type: numeric(7,0) + default: "0" + reference_nb_externes_mois: + type: 'numeric(7,0)[]' + reference_nb_externes_total: + type: numeric(7,0) + default: "0" + reference_nb_jours_js_non_inclus_mois: + type: 'numeric(11,0)[]' + reference_nb_jours_js_non_inclus_total: + type: numeric(11,0) + default: "0" + reference_nb_seances_mois: + type: 'numeric(7,0)[]' + reference_nb_seances_total: + type: numeric(7,0) + default: "0" + reference_nb_sorties_directes_mois: + type: 'numeric(7,0)[]' + reference_nb_sorties_directes_total: + type: numeric(7,0) + default: "0" + repartition_type: + type: character(1) + default: "'0'::character varying" +constraints: + t_budgets_saisis_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_budgets_saisis_1: + column: parent_id + method: btree + i_budgets_saisis_2: + column: budget_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_calcul_encours.yaml b/db/schema2/tables/t_calcul_encours.yaml new file mode 100644 index 0000000..d8c9462 --- /dev/null +++ b/db/schema2/tables/t_calcul_encours.yaml @@ -0,0 +1,60 @@ +columns: + coefficient_calcule: + type: numeric + coefficient_force: + type: numeric + default: "0" + coefficient_is_force: + type: text + default: "'0'::text" + coefficient_mco: + type: numeric + ignorer: + type: text + default: "'0'::text" + lieu_service_id: + type: bigint + lieu_unite_fonctionnelle_id: + type: bigint + nb_ambulatoires: + type: numeric + nb_externes: + type: numeric + nb_journees: + type: numeric + nb_journees_cp: + type: numeric + nb_prestations_facturees: + type: numeric + nb_seances: + type: numeric + no_facture: + type: text + default: "''::text" + no_sejour: + type: text + default: "''::text" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_calcul_encours'::regclass)" + prestation_id: + type: bigint + prestation_type_valorisation: + type: text + prix_unitaire_calcule: + type: numeric + prix_unitaire_force: + type: numeric + default: "0" + prix_unitaire_is_force: + type: text + default: "'0'::text" + rubrique_facturation_id: + type: bigint + type_ligne: + type: text +constraints: + t_calcul_encours_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_chart.yaml b/db/schema2/tables/t_chart.yaml new file mode 100644 index 0000000..b4cfac5 --- /dev/null +++ b/db/schema2/tables/t_chart.yaml @@ -0,0 +1,26 @@ +columns: + category: + type: text + code: + type: text + default_time_calc: + type: text + drilldown: + type: jsonb + label_view_code: + type: numeric + default: "0" + name: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_chart'::regclass)" + serie_id: + type: 'bigint[]' + type: + type: text +constraints: + t_chart_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_classes.yaml b/db/schema2/tables/t_classes.yaml new file mode 100644 index 0000000..36ee41a --- /dev/null +++ b/db/schema2/tables/t_classes.yaml @@ -0,0 +1,36 @@ +columns: + code: + type: text + contenu_by_code: + type: text + default: "'0'::text" + contenu_non_replicable_ailleurs: + type: character(1) + default: "'0'::bpchar" + is_cti: + type: character(1) + default: "0" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_classes'::regclass)" + sequence: + type: integer + default: "1" + table_id: + type: bigint + not_null: NOT NULL + default: "0" + texte: + type: text +constraints: + t_classes_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_classes_1: + column: code + method: btree + i_classes_classes_1: + column: code + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_classes_sections.yaml b/db/schema2/tables/t_classes_sections.yaml new file mode 100644 index 0000000..d92b56c --- /dev/null +++ b/db/schema2/tables/t_classes_sections.yaml @@ -0,0 +1,26 @@ +columns: + classe_id: + type: bigint + not_null: NOT NULL + default: "0" + code: + type: text + condition: + type: text + default: "''::text" + exclude_code: + type: text + default: "''::text" + include_code: + type: text + default: "''::text" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_classes_sections'::regclass)" + texte: + type: text +constraints: + t_classes_sections_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_classes_sections_elements.yaml b/db/schema2/tables/t_classes_sections_elements.yaml new file mode 100644 index 0000000..f336934 --- /dev/null +++ b/db/schema2/tables/t_classes_sections_elements.yaml @@ -0,0 +1,20 @@ +columns: + section_id: + type: bigint + not_null: NOT NULL + default: "0" + to_id: + type: bigint + not_null: NOT NULL + default: "0" +constraints: + t_classes_sections_elements_ukey: + type: UNIQUE + column: section_id, to_id +indexes: + i_classes_sections_elements_1: + column: section_id + method: btree + i_classes_sections_elements_2: + column: to_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_codes_postaux_c.yaml b/db/schema2/tables/t_codes_postaux_c.yaml new file mode 100644 index 0000000..303b1c4 --- /dev/null +++ b/db/schema2/tables/t_codes_postaux_c.yaml @@ -0,0 +1,100 @@ +comment: Générée par base.cti_reorganize_codes_postaux_c(''activite'') +columns: + code: + type: text + code_geographique_pmsi: + type: text + default: "''::text" + code_geographique_pmsi_code: + type: text + default: "''::text" + code_geographique_pmsi_id: + type: bigint + default: "0" + code_geographique_pmsi_population: + type: numeric + default: "0" + code_geographique_pmsi_texte: + type: text + default: "''::text" + code_postal_rattache_code: + type: text + default: "''::text" + code_postal_rattache_id: + type: bigint + default: "0" + code_postal_rattache_texte: + type: text + default: "''::text" + departement_code: + type: text + default: "''::text" + departement_id: + type: bigint + default: "0" + departement_texte: + type: text + default: "''::text" + latitude: + type: double precision + default: "0" + longitude: + type: double precision + default: "0" + oid: + type: bigint + not_null: NOT NULL + population: + type: numeric + default: "0" + region_code: + type: text + default: "''::text" + region_id: + type: bigint + default: "0" + region_texte: + type: text + default: "''::text" + secteur_geographique_id: + type: bigint + default: "0" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + territoire_sante_code: + type: text + default: "''::text" + territoire_sante_id: + type: bigint + default: "0" + territoire_sante_texte: + type: text + default: "''::text" + texte: + type: text + texte_court: + type: text +constraints: + t_codes_postaux__c_pkey: + type: PRIMARY KEY + column: oid + t_codes_postaux_c_ukey: + type: UNIQUE + column: code +indexes: + i_codes_postaux_c_0: + column: oid + method: btree + i_codes_postaux_c_1: + column: code + method: btree + i_codes_postaux_c_2: + column: departement_id + method: btree + i_codes_postaux_c_3: + column: code_geographique_pmsi_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_compte.yaml b/db/schema2/tables/t_compte.yaml new file mode 100644 index 0000000..7057ba6 --- /dev/null +++ b/db/schema2/tables/t_compte.yaml @@ -0,0 +1,32 @@ +columns: + code: + type: text + code_original: + type: text + compte_tva_id: + type: bigint + default: "0" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_compte'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + taux_tva: + type: numeric + default: "0" + texte: + type: text + texte_court: + type: text +constraints: + t_compte_pkey: + type: PRIMARY KEY + column: oid + t_compte_ukey: + type: UNIQUE + column: code_original \ No newline at end of file diff --git a/db/schema2/tables/t_compte_produit_analytique_rule.yaml b/db/schema2/tables/t_compte_produit_analytique_rule.yaml new file mode 100644 index 0000000..046a3d1 --- /dev/null +++ b/db/schema2/tables/t_compte_produit_analytique_rule.yaml @@ -0,0 +1,79 @@ +columns: + code: + type: text + compte_produit_analytique_id: + type: bigint + not_null: NOT NULL + default: "0" + liste_acte: + type: text + default: "''::text" + liste_activite: + type: text + default: "''::text" + liste_compte_produit: + type: text + default: "''::text" + liste_diagnostic_associe: + type: text + default: "''::text" + liste_diagnostic_principal: + type: text + default: "''::text" + liste_diagnostic_relie: + type: text + default: "''::text" + liste_etage: + type: text + default: "''::text" + liste_finess: + type: text + default: "''::text" + liste_ghm: + type: text + default: "''::text" + liste_medecin: + type: text + default: "''::text" + liste_prestation: + type: text + default: "''::text" + liste_rubrique: + type: text + default: "''::text" + liste_sauf_compte_produit: + type: text + default: "''::text" + liste_sauf_ghm: + type: text + default: "''::text" + liste_sauf_prestation: + type: text + default: "''::text" + liste_sauf_rubrique: + type: text + default: "''::text" + liste_service: + type: text + default: "''::text" + liste_specialite: + type: text + default: "''::text" + liste_type_sejour: + type: text + default: "''::text" + liste_unite_fonctionnelle: + type: text + default: "''::text" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_compte_produit_analytique_rule'::regclass)" + priorite: + type: numeric(5,0) + texte: + type: text +constraints: + t_compte_produit_analytique_rule_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_controle_chiffrier.yaml b/db/schema2/tables/t_controle_chiffrier.yaml new file mode 100644 index 0000000..f882760 --- /dev/null +++ b/db/schema2/tables/t_controle_chiffrier.yaml @@ -0,0 +1,55 @@ +columns: + commentaire: + type: text + default: "''::text" + date_comptable: + type: date + not_null: NOT NULL + default: "'2099-12-31'::date" + montant_comptabilise_c_c: + type: numeric(13,2) + default: "0" + montant_comptabilise_c_h: + type: numeric(13,2) + default: "0" + montant_comptabilise_d_c: + type: numeric(13,2) + default: "0" + montant_comptabilise_d_h: + type: numeric(13,2) + default: "0" + montant_comptabilise_s_c: + type: numeric(13,2) + default: "0" + montant_comptabilise_s_h: + type: numeric(13,2) + default: "0" + montant_comptabilise_t_c: + type: numeric(13,2) + default: "0" + montant_comptabilise_t_h: + type: numeric(13,2) + default: "0" + montant_regle_c_c: + type: numeric(13,2) + default: "0" + montant_regle_c_h: + type: numeric(13,2) + default: "0" + montant_regle_s_c: + type: numeric(13,2) + default: "0" + montant_regle_s_h: + type: numeric(13,2) + default: "0" + provider_id: + type: bigint + not_null: NOT NULL + default: "0" + valide: + type: character(1) + default: "'0'::bpchar" +constraints: + t_controle_chiffrier_ukey: + type: PRIMARY KEY + column: date_comptable, provider_id \ No newline at end of file diff --git a/db/schema2/tables/t_dashboard.yaml b/db/schema2/tables/t_dashboard.yaml new file mode 100644 index 0000000..4b47a3c --- /dev/null +++ b/db/schema2/tables/t_dashboard.yaml @@ -0,0 +1,14 @@ +columns: + code: + type: text + label: + type: text + default: "''::text" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_dashboard'::regclass)" +constraints: + t_dashboard_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_dashboard_filter.yaml b/db/schema2/tables/t_dashboard_filter.yaml new file mode 100644 index 0000000..380d3e7 --- /dev/null +++ b/db/schema2/tables/t_dashboard_filter.yaml @@ -0,0 +1,13 @@ +columns: + condition_id: + type: bigint + dashboard_id: + type: bigint + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_dashboard_filter'::regclass)" +constraints: + t_dashboard_filter_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_dashboard_onglet.yaml b/db/schema2/tables/t_dashboard_onglet.yaml new file mode 100644 index 0000000..f2771ed --- /dev/null +++ b/db/schema2/tables/t_dashboard_onglet.yaml @@ -0,0 +1,15 @@ +columns: + dashboard_id: + type: bigint + index: + type: bigint + name: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_dashboard_onglet'::regclass)" +constraints: + t_dashboard_onglet_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_dashboard_widget.yaml b/db/schema2/tables/t_dashboard_widget.yaml new file mode 100644 index 0000000..602ad66 --- /dev/null +++ b/db/schema2/tables/t_dashboard_widget.yaml @@ -0,0 +1,15 @@ +columns: + chart_id: + type: bigint + dashboard_id: + type: bigint + deprecated: + type: boolean + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_dashboard_widget'::regclass)" +constraints: + t_dashboard_widget_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_divers.yaml b/db/schema2/tables/t_divers.yaml new file mode 100644 index 0000000..667404e --- /dev/null +++ b/db/schema2/tables/t_divers.yaml @@ -0,0 +1,21 @@ +columns: + code: + type: text + not_null: NOT NULL + description: + type: text + show_info_module: + type: boolean + default: 'false' + texte: + type: text + valeur: + type: text + valeur2: + type: text + valeur_date: + type: date +constraints: + t_divers_pkey: + type: PRIMARY KEY + column: code \ No newline at end of file diff --git a/db/schema2/tables/t_durees_sejour_c.yaml b/db/schema2/tables/t_durees_sejour_c.yaml new file mode 100644 index 0000000..b02edc6 --- /dev/null +++ b/db/schema2/tables/t_durees_sejour_c.yaml @@ -0,0 +1,21 @@ +columns: + code: + type: text + oid: + type: bigint + not_null: NOT NULL + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text +constraints: + t_durees_sejour_c_pkey: + type: PRIMARY KEY + column: oid + t_durees_sejour_c_code_key: + type: UNIQUE + column: code \ No newline at end of file diff --git a/db/schema2/tables/t_encours_calcul_parametres_services_prestations_histo.yaml b/db/schema2/tables/t_encours_calcul_parametres_services_prestations_histo.yaml new file mode 100644 index 0000000..24c839a --- /dev/null +++ b/db/schema2/tables/t_encours_calcul_parametres_services_prestations_histo.yaml @@ -0,0 +1,71 @@ +columns: + coefficient: + type: numeric + coefficient_calcule: + type: numeric + coefficient_is_force: + type: text + coefficient_mco: + type: numeric + lieu_service_code: + type: text + lieu_service_id: + type: bigint + lieu_unite_fonctionnelle_code: + type: text + lieu_unite_fonctionnelle_id: + type: bigint + nb_ambulatoires: + type: numeric + nb_externes: + type: numeric + nb_journees: + type: numeric + nb_journees_cp: + type: numeric + nb_prix_unitaire_moyen_1: + type: numeric + nb_prix_unitaire_moyen_3: + type: numeric + nb_seances: + type: numeric + nombre: + type: numeric + prestation_10p_code: + type: text + prestation_10p_id: + type: bigint + prestation_code: + type: text + prestation_id: + type: bigint + prestation_type_valorisation: + type: text + prix_unitaire: + type: numeric + prix_unitaire_calcule: + type: numeric + prix_unitaire_is_force: + type: text + prix_unitaire_moyen: + type: numeric + prix_unitaire_moyen_1: + type: numeric + prix_unitaire_moyen_3: + type: numeric + regle_prestation_texte: + type: text + rubrique_10p_code: + type: text + rubrique_10p_id: + type: bigint + rubrique_code: + type: text + rubrique_facturation_code: + type: text + rubrique_facturation_id: + type: bigint + tranche_ght: + type: text + type_ligne: + type: text \ No newline at end of file diff --git a/db/schema2/tables/t_encours_histo_sejour_facture_histo.yaml b/db/schema2/tables/t_encours_histo_sejour_facture_histo.yaml new file mode 100644 index 0000000..2eaa038 --- /dev/null +++ b/db/schema2/tables/t_encours_histo_sejour_facture_histo.yaml @@ -0,0 +1,45 @@ +columns: + classe_ghm: + type: text + date_fin: + type: date + duree_sejour: + type: integer + lieu_sortie_service_code: + type: text + lieu_sortie_service_id: + type: bigint + lieu_sortie_unite_fonctionnelle_code: + type: text + lieu_sortie_unite_fonctionnelle_id: + type: bigint + medecin_sejour_code: + type: text + medecin_sejour_id: + type: bigint + medecin_sejour_nom: + type: text + medecin_sejour_prenom: + type: text + montant_ghs: + type: numeric + montant_ghs_original: + type: numeric + nb_ghs: + type: numeric + no_sejour: + type: text + specialite_medecin_sejour_code: + type: text + specialite_medecin_sejour_id: + type: bigint + specialite_medecin_sejour_texte: + type: text + taux_0: + type: numeric + taux_1: + type: numeric + taux_2: + type: numeric + tranche_sejour: + type: text \ No newline at end of file diff --git a/db/schema2/tables/t_etages.yaml b/db/schema2/tables/t_etages.yaml new file mode 100644 index 0000000..05d8232 --- /dev/null +++ b/db/schema2/tables/t_etages.yaml @@ -0,0 +1,46 @@ +columns: + code: + type: text + code_original: + type: text + est_urgence: + type: text + default: "'0'::text" + finess_id: + type: bigint + default: "0" + nb_cp: + type: numeric(5,0) + default: "0" + nb_lits: + type: numeric(5,0) + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_etages'::regclass)" + remplacer_par_valeur_par_defaut: + type: text + default: "'0'::text" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + service_force_id: + type: bigint + default: "0" + statut: + type: character(1) + texte: + type: text + texte_court: + type: text +constraints: + t_etages_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_etages_1: + column: code_original + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_etages_historique.yaml b/db/schema2/tables/t_etages_historique.yaml new file mode 100644 index 0000000..11b3834 --- /dev/null +++ b/db/schema2/tables/t_etages_historique.yaml @@ -0,0 +1,78 @@ +columns: + date: + type: date + date_fin: + type: date + default: "'2099-12-31'::date" + est_ouvert_1: + type: character(1) + default: "'1'::bpchar" + est_ouvert_2: + type: character(1) + default: "'1'::bpchar" + est_ouvert_3: + type: character(1) + default: "'1'::bpchar" + est_ouvert_4: + type: character(1) + default: "'1'::bpchar" + est_ouvert_5: + type: character(1) + default: "'1'::bpchar" + est_ouvert_6: + type: character(1) + default: "'1'::bpchar" + est_ouvert_7: + type: character(1) + default: "'1'::bpchar" + etage_id: + type: bigint + not_null: NOT NULL + heberge_ambulatoires: + type: character(1) + default: "'1'::bpchar" + heberge_bebes: + type: character(1) + default: "'1'::bpchar" + heberge_externes: + type: character(1) + default: "'1'::bpchar" + heberge_hospitalises: + type: character(1) + default: "'1'::bpchar" + heberge_seances: + type: character(1) + default: "'1'::bpchar" + heberge_urgences: + type: character(1) + default: "'1'::bpchar" + lit_force: + type: text + default: "''::text" + nb_box_ambulatoires_ouverts: + type: numeric(5,0) + default: "0" + nb_box_ambulatoires_theoriques: + type: numeric(5,0) + default: "0" + nb_box_seances_ouverts: + type: numeric(5,0) + default: "0" + nb_box_seances_theoriques: + type: numeric(5,0) + default: "0" + nb_lits_cp_ouverts: + type: numeric(5,0) + default: "0" + nb_lits_cp_theoriques: + type: numeric(5,0) + default: "0" + nb_lits_ouverts: + type: numeric(5,0) + default: "0" + nb_lits_theoriques: + type: numeric(5,0) + default: "0" + pole_occupation_id: + type: bigint + default: "0" \ No newline at end of file diff --git a/db/schema2/tables/t_etat_sejour.yaml b/db/schema2/tables/t_etat_sejour.yaml new file mode 100644 index 0000000..066fd7f --- /dev/null +++ b/db/schema2/tables/t_etat_sejour.yaml @@ -0,0 +1,23 @@ +columns: + code: + type: text + not_null: NOT NULL + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_etat_sejour'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text +constraints: + t_etat_sejour_pkey: + type: PRIMARY KEY + column: oid + t_etat_sejour_ukey: + type: UNIQUE + column: code \ No newline at end of file diff --git a/db/schema2/tables/t_expert_controle.yaml b/db/schema2/tables/t_expert_controle.yaml new file mode 100644 index 0000000..60bc5d1 --- /dev/null +++ b/db/schema2/tables/t_expert_controle.yaml @@ -0,0 +1,58 @@ +columns: + alert_exp: + type: text + not_null: NOT NULL + default: "'0'::text" + code: + type: text + date_validite_debut: + type: date + date_validite_fin: + type: date + description: + type: text + default: "''::text" + etat_cible: + type: bigint + default: "5" + comment: 0=Tous, 1=Présents, 2=Non facturés + gravite_id: + type: bigint + default: "5" + comment: 0=Information, 5=Avertissement, 9=Erreur + is_active: + type: character(1) + default: "'1'::bpchar" + is_cti: + type: character(1) + default: "'0'::bpchar" + is_global: + type: character(1) + default: "'0'::bpchar" + is_hide: + type: character(1) + default: "'0'::bpchar" + last_execution_ok: + type: character(1) + last_execution_timestamp: + type: timestamp without time zone + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_expert_controle'::regclass)" + prestataire_id: + type: bigint + default: (-1) + comment: '-1: tous, voir table base.t_prestataires pour le reste' + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text + texte_abrege: + type: text + texte_court: + type: text \ No newline at end of file diff --git a/db/schema2/tables/t_expert_controle_rule.yaml b/db/schema2/tables/t_expert_controle_rule.yaml new file mode 100644 index 0000000..26a72c3 --- /dev/null +++ b/db/schema2/tables/t_expert_controle_rule.yaml @@ -0,0 +1,20 @@ +columns: + controle_id: + type: bigint + numero: + type: bigint + default: "1" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_expert_controle_rule'::regclass)" + sqlcmd_justificatif: + type: text + default: "''::text" + sqlcmd_where: + type: text + default: "''::text" + table_id: + type: bigint + default: (0)::bigint + comment: Table de référence pour la condition. 0:séjours | 1:mouvements | 2:factures | 99:SQL brut \ No newline at end of file diff --git a/db/schema2/tables/t_filiere_soin.yaml b/db/schema2/tables/t_filiere_soin.yaml new file mode 100644 index 0000000..4624d44 --- /dev/null +++ b/db/schema2/tables/t_filiere_soin.yaml @@ -0,0 +1,28 @@ +columns: + code: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_filiere_soin'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text + texte_court: + type: text +constraints: + t_filiere_soin_1_pkey: + type: PRIMARY KEY + column: oid + t_filiere_soin_1_ukey1: + type: UNIQUE + column: code +indexes: + i_filiere_soin_1_code: + column: code + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_filiere_soin_rule.yaml b/db/schema2/tables/t_filiere_soin_rule.yaml new file mode 100644 index 0000000..3cba8bf --- /dev/null +++ b/db/schema2/tables/t_filiere_soin_rule.yaml @@ -0,0 +1,82 @@ +columns: + code: + type: text + filiere_soin_id: + type: bigint + not_null: NOT NULL + default: "0" + liste_acte: + type: text + default: "''::text" + liste_activite: + type: text + default: "''::text" + liste_diagnostic_associe: + type: text + default: "''::text" + liste_diagnostic_principal: + type: text + default: "''::text" + liste_diagnostic_relie: + type: text + default: "''::text" + liste_etage: + type: text + default: "''::text" + liste_etage_entree: + type: text + default: "''::text" + liste_finess: + type: text + default: "''::text" + liste_ghm: + type: text + default: "''::text" + liste_medecin: + type: text + default: "''::text" + liste_prestation: + type: text + default: "''::text" + liste_rubrique: + type: text + default: "''::text" + liste_sauf_ghm: + type: text + default: "''::text" + liste_sauf_prestation: + type: text + default: "''::text" + liste_sauf_rubrique: + type: text + default: "''::text" + liste_service: + type: text + default: "''::text" + liste_service_entree: + type: text + default: "''::text" + liste_specialite: + type: text + default: "''::text" + liste_type_sejour: + type: text + default: "''::text" + liste_unite_fonctionnelle: + type: text + default: "''::text" + liste_unite_fonctionnelle_entree: + type: text + default: "''::text" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_filiere_soin_rule'::regclass)" + priorite: + type: numeric(5,0) + texte: + type: text +constraints: + t_filiere_soin_1_rule_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_finess_c.yaml b/db/schema2/tables/t_finess_c.yaml new file mode 100644 index 0000000..5cdd583 --- /dev/null +++ b/db/schema2/tables/t_finess_c.yaml @@ -0,0 +1,34 @@ +columns: + code: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "0" + secondaire: + type: character(1) + default: "'0'::bpchar" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text + texte_court: + type: text + type_etablissement: + type: character(1) + default: "1" +constraints: + t_finess_pkey: + type: PRIMARY KEY + column: oid + t_finess_ukey1: + type: UNIQUE + column: code +indexes: + i_finess_c_1: + column: code + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_forme_activite.yaml b/db/schema2/tables/t_forme_activite.yaml new file mode 100644 index 0000000..b58d056 --- /dev/null +++ b/db/schema2/tables/t_forme_activite.yaml @@ -0,0 +1,28 @@ +columns: + code: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_forme_activite'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text + texte_court: + type: text +constraints: + t_forme_activite_pkey: + type: PRIMARY KEY + column: oid + t_forme_activite_ukey1: + type: UNIQUE + column: code +indexes: + i_forme_activite_code: + column: code + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_forme_activite_rule.yaml b/db/schema2/tables/t_forme_activite_rule.yaml new file mode 100644 index 0000000..a17f17c --- /dev/null +++ b/db/schema2/tables/t_forme_activite_rule.yaml @@ -0,0 +1,73 @@ +columns: + code: + type: text + forme_activite_id: + type: bigint + not_null: NOT NULL + default: "0" + liste_acte: + type: text + default: "''::text" + liste_diagnostic_associe: + type: text + default: "''::text" + liste_diagnostic_principal: + type: text + default: "''::text" + liste_diagnostic_relie: + type: text + default: "''::text" + liste_etage: + type: text + default: "''::text" + liste_etage_entree: + type: text + default: "''::text" + liste_finess: + type: text + default: "''::text" + liste_ghm: + type: text + default: "''::text" + liste_medecin: + type: text + default: "''::text" + liste_prestation: + type: text + default: "''::text" + liste_rubrique: + type: text + default: "''::text" + liste_sauf_ghm: + type: text + default: "''::text" + liste_service: + type: text + default: "''::text" + liste_service_entree: + type: text + default: "''::text" + liste_specialite: + type: text + default: "''::text" + liste_type_sejour: + type: text + default: "''::text" + liste_unite_fonctionnelle: + type: text + default: "''::text" + liste_unite_fonctionnelle_entree: + type: text + default: "''::text" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_forme_activite_rule'::regclass)" + priorite: + type: numeric(5,0) + texte: + type: text +constraints: + t_forme_activite_rule_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_ghm_c.yaml b/db/schema2/tables/t_ghm_c.yaml new file mode 100644 index 0000000..819298e --- /dev/null +++ b/db/schema2/tables/t_ghm_c.yaml @@ -0,0 +1,67 @@ +columns: + cas_code: + type: character(1) + cas_id: + type: bigint + cas_texte: + type: text + cmd_code: + type: text + cmd_id: + type: bigint + cmd_texte: + type: text + ghm5_code: + type: text + ghm5_id: + type: bigint + ghm5_texte: + type: text + ghm_code: + type: text + ghm_id: + type: bigint + not_null: NOT NULL + ghm_section_code: + type: 'text[]' + ghm_section_id: + type: 'bigint[]' + ghm_section_texte: + type: 'text[]' + ghm_texte: + type: text + mco_code: + type: character(1) + mco_id: + type: bigint + mco_texte: + type: text + severite_ghm_code: + type: character(1) + severite_ghm_id: + type: bigint + severite_ghm_texte: + type: text +constraints: + t_ghm_c_pkey: + type: PRIMARY KEY + column: ghm_id + t_ghm_c_ukey1: + type: UNIQUE + column: ghm_code +indexes: + i_ghm_c_1: + column: mco_id + method: btree + i_ghm_c_11: + column: cas_id + method: btree + i_ghm_c_2: + column: severite_ghm_id + method: btree + i_ghm_c_3: + column: cmd_id + method: btree + i_ghm_c_7: + column: ghm5_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_ghmgme_c.yaml b/db/schema2/tables/t_ghmgme_c.yaml new file mode 100644 index 0000000..c2794e1 --- /dev/null +++ b/db/schema2/tables/t_ghmgme_c.yaml @@ -0,0 +1,78 @@ +columns: + cm_code: + type: text + cm_id: + type: bigint + cm_texte: + type: text + cmd_code: + type: text + cmd_id: + type: bigint + cmd_texte: + type: text + ghm5_code: + type: text + ghm5_id: + type: bigint + ghm5_texte: + type: text + ghm_code: + type: text + ghm_id: + type: bigint + ghm_texte: + type: text + ghmgme_code: + type: text + ghmgme_id: + type: integer + not_null: NOT NULL + ghmgme_section_code: + type: 'text[]' + ghmgme_section_id: + type: 'bigint[]' + ghmgme_section_texte: + type: 'text[]' + ghmgme_texte: + type: text + gme_code: + type: text + gme_id: + type: bigint + gme_texte: + type: text + gn_code: + type: text + gn_id: + type: bigint + gn_texte: + type: text + rgme_code: + type: text + rgme_id: + type: bigint + rgme_texte: + type: text + type_pmsi: + type: text +constraints: + t_ghmgme_c_pkey: + type: PRIMARY KEY + column: ghmgme_id +indexes: + i_ghmgme_c_3: + column: cmd_id + method: btree + i_ghmgme_c_7: + column: ghm5_id + method: btree + i_ghmgme_c_gme_id: + column: gme_id + method: btree + i_ghmgme_c_gn_id: + column: gn_id + method: btree + i_ghmgme_c_rgme_id: + column: rgme_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_ghs_c.yaml b/db/schema2/tables/t_ghs_c.yaml new file mode 100644 index 0000000..e668428 --- /dev/null +++ b/db/schema2/tables/t_ghs_c.yaml @@ -0,0 +1,51 @@ +columns: + cmd_code: + type: text + default: "0" + cmd_id: + type: bigint + default: "0" + cmd_texte: + type: text + ghm_code: + type: text + default: "0" + ghm_id: + type: bigint + default: "0" + ghm_texte: + type: text + ghs_code: + type: numeric(6,0) + ghs_code_text: + type: text + ghs_id: + type: bigint + not_null: NOT NULL + ghs_texte: + type: text + mco_code: + type: text + default: "0" + mco_id: + type: bigint + default: "0" + mco_texte: + type: text +constraints: + t_ghs_c_pkey: + type: PRIMARY KEY + column: ghs_id +indexes: + i_ghs_c_1: + column: ghs_id + method: btree + i_ghs_c_4: + column: ghm_id + method: btree + i_ghs_c_5: + column: mco_id + method: btree + i_ghs_c_6: + column: cmd_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_gme_c.yaml b/db/schema2/tables/t_gme_c.yaml new file mode 100644 index 0000000..01657d0 --- /dev/null +++ b/db/schema2/tables/t_gme_c.yaml @@ -0,0 +1,65 @@ +columns: + cm_code: + type: text + cm_id: + type: bigint + cm_section_code: + type: 'text[]' + cm_section_id: + type: 'bigint[]' + cm_section_texte: + type: 'text[]' + cm_texte: + type: text + gme_code: + type: text + gme_id: + type: bigint + gme_section_code: + type: 'text[]' + gme_section_id: + type: 'bigint[]' + gme_section_texte: + type: 'text[]' + gme_texte: + type: text + gn_code: + type: text + gn_id: + type: bigint + gn_section_code: + type: 'text[]' + gn_section_id: + type: 'bigint[]' + gn_section_texte: + type: 'text[]' + gn_texte: + type: text + rgme_code: + type: text + rgme_id: + type: bigint + rgme_section_code: + type: 'text[]' + rgme_section_id: + type: 'bigint[]' + rgme_section_texte: + type: 'text[]' + rgme_texte: + type: text +indexes: + i_gme_c_cm_id: + column: cm_id + method: btree + i_gme_c_gn_id: + column: gn_id + method: btree + i_gme_c_gme_id: + column: gme_id + method: btree + i_gme_c_rgme_id: + column: rgme_id + method: btree + i_gme_c_gme_section_id: + column: gme_section_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_gmt_c.yaml b/db/schema2/tables/t_gmt_c.yaml new file mode 100644 index 0000000..f3e4b89 --- /dev/null +++ b/db/schema2/tables/t_gmt_c.yaml @@ -0,0 +1,16 @@ +columns: + gmt_code: + type: text + gmt_id: + type: bigint + not_null: NOT NULL + gmt_texte: + type: text +constraints: + t_gmt_c_pkey: + type: PRIMARY KEY + column: gmt_id +indexes: + i_gmt_c_1: + column: gmt_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_indicateur_condition.yaml b/db/schema2/tables/t_indicateur_condition.yaml new file mode 100644 index 0000000..b7962c5 --- /dev/null +++ b/db/schema2/tables/t_indicateur_condition.yaml @@ -0,0 +1,39 @@ +columns: + arbre_code: + type: 'text[]' + arbre_texte: + type: 'text[]' + code: + type: text + default: "''::text" + column_name: + type: text + default: "''::text" + column_texte: + type: text + default: "''::text" + external_code: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_indicateur_condition'::regclass)" + rule: + type: text + default: "''::text" + texte: + type: text + default: "''::text" + texte_court: + type: text + default: "''::text" + value: + type: text + default: "''::text" + view_select_rule: + type: text + default: "''::text" +constraints: + t_indicateur_condition_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_indicateur_condition_table.yaml b/db/schema2/tables/t_indicateur_condition_table.yaml new file mode 100644 index 0000000..7fcbfa5 --- /dev/null +++ b/db/schema2/tables/t_indicateur_condition_table.yaml @@ -0,0 +1,17 @@ +columns: + check_where: + type: text + default: "''::text" + indicateur_condition_id: + type: bigint + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_indicateur_condition_table'::regclass)" + table_name: + type: text + default: "''::text" +constraints: + t_indicateur_condition_table_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_indicateur_serie.yaml b/db/schema2/tables/t_indicateur_serie.yaml new file mode 100644 index 0000000..e5c74d3 --- /dev/null +++ b/db/schema2/tables/t_indicateur_serie.yaml @@ -0,0 +1,33 @@ +columns: + calc: + type: boolean + code: + type: text + color: + type: text + condition_id: + type: 'bigint[]' + drilldown: + type: jsonb + format: + type: text + formula: + type: text + indicateur_id: + type: bigint + name: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_indicateur_serie'::regclass)" + serie_id: + type: text + default: "''::text" + total: + type: boolean + default: 'false' +constraints: + t_indicateur_serie_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_indicateur_theme.yaml b/db/schema2/tables/t_indicateur_theme.yaml new file mode 100644 index 0000000..1bca744 --- /dev/null +++ b/db/schema2/tables/t_indicateur_theme.yaml @@ -0,0 +1,29 @@ +columns: + children_id: + type: 'bigint[]' + code: + type: text + default: "''::text" + level: + type: numeric + default: "1" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_indicateur_theme'::regclass)" + parent_id: + type: bigint + default: "0" + parent_tree_code: + type: 'text[]' + parent_tree_id: + type: 'bigint[]' + parent_tree_texte: + type: 'text[]' + texte: + type: text + default: "''::text" +constraints: + t_indicateur_theme_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_indicateurs.yaml b/db/schema2/tables/t_indicateurs.yaml new file mode 100644 index 0000000..eb54453 --- /dev/null +++ b/db/schema2/tables/t_indicateurs.yaml @@ -0,0 +1,137 @@ +columns: + code: + type: text + column_name: + type: text + default: "''::text" + description: + type: text + default: "''::text" + dimension_date: + type: character(1) + default: "''::bpchar" + dimension_date_1: + type: character(1) + default: "''::bpchar" + dimension_date_2: + type: character(1) + default: "''::bpchar" + dimension_date_3: + type: character(1) + default: "''::bpchar" + dimension_date_4: + type: character(1) + default: "''::bpchar" + dimension_date_5: + type: character(1) + default: "''::bpchar" + entete: + type: text + entete_etendue: + type: text + indicateur_associe_10_id: + type: bigint + default: "0" + indicateur_associe_11_id: + type: bigint + default: "0" + indicateur_associe_12_id: + type: bigint + default: "0" + indicateur_associe_13_id: + type: bigint + default: "0" + indicateur_associe_14_id: + type: bigint + default: "0" + indicateur_associe_15_id: + type: bigint + default: "0" + indicateur_associe_16_id: + type: bigint + default: "0" + indicateur_associe_17_id: + type: bigint + default: "0" + indicateur_associe_18_id: + type: bigint + default: "0" + indicateur_associe_19_id: + type: bigint + default: "0" + indicateur_associe_1_id: + type: bigint + default: "0" + indicateur_associe_20_id: + type: bigint + default: "0" + indicateur_associe_2_id: + type: bigint + default: "0" + indicateur_associe_3_id: + type: bigint + default: "0" + indicateur_associe_4_id: + type: bigint + default: "0" + indicateur_associe_5_id: + type: bigint + default: "0" + indicateur_associe_6_id: + type: bigint + default: "0" + indicateur_associe_7_id: + type: bigint + default: "0" + indicateur_associe_8_id: + type: bigint + default: "0" + indicateur_associe_9_id: + type: bigint + default: "0" + indicateur_reference_id: + type: bigint + default: "0" + indicateur_template_id: + type: bigint + default: "0" + is_cti: + type: character(1) + default: "0" + is_hide: + type: character(1) + is_template: + type: text + default: "'0'::text" + last_error: + type: text + default: "''::text" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_indicateurs'::regclass)" + output_format: + type: text + default: "'#'::text" + table_name: + type: text + texte: + type: text + theme_id: + type: 'bigint[]' + total_function: + type: text + default: "'sum'::text" + variable_definition: + type: 'text[]' + variable_value: + type: 'text[]' + variable_value_text: + type: 'text[]' + width: + type: numeric(3,0) + default: "0" +constraints: + t_indicateurs_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_journal.yaml b/db/schema2/tables/t_journal.yaml new file mode 100644 index 0000000..bbb31f3 --- /dev/null +++ b/db/schema2/tables/t_journal.yaml @@ -0,0 +1,18 @@ +columns: + code: + type: text + code_original: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_journal'::regclass)" + texte: + type: text + type_journal: + type: text + default: "''::text" +indexes: + t_journal_code_key: + column: code + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_kiwee_params.yaml b/db/schema2/tables/t_kiwee_params.yaml new file mode 100644 index 0000000..26bed04 --- /dev/null +++ b/db/schema2/tables/t_kiwee_params.yaml @@ -0,0 +1,18 @@ +columns: + code: + type: text + not_null: NOT NULL + description: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_kiwee_params'::regclass)" + texte: + type: text + valeur: + type: boolean +constraints: + t_kiwee_params_pkey: + type: PRIMARY KEY + column: code \ No newline at end of file diff --git a/db/schema2/tables/t_lieux.yaml b/db/schema2/tables/t_lieux.yaml new file mode 100644 index 0000000..4bc7391 --- /dev/null +++ b/db/schema2/tables/t_lieux.yaml @@ -0,0 +1,107 @@ +columns: + activite_id: + type: bigint + default: "0" + code_original_1: + type: text + default: "''::text" + comment: Pour SHS = service + code_original_2: + type: text + default: "''::text" + comment: Pour SHS = activite + code_original_3: + type: text + default: "''::text" + comment: Pour SHS = etage + code_original_4: + type: text + default: "''::text" + comment: Pour SHS = lit + code_original_5: + type: text + default: "''::text" + comment: Pour SHS = blanc + code_original_6: + type: text + default: "''::text" + comment: Pour SHS = blanc + code_original_7: + type: text + default: "''::text" + comment: Pour SHS = blanc + gir_code_original: + type: text + default: "''::text" + gir_id: + type: bigint + default: "0" + lit_id: + type: bigint + default: "0" + mode_traitement_id: + type: bigint + default: "0" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_lieux'::regclass)" + service_facturation_id: + type: bigint + default: "0" + unite_fonctionnelle_id: + type: bigint + default: "0" + unite_medicale_id: + type: bigint + default: "0" +constraints: + t_lieux_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_lieux_1: + column: code_original_1 + method: btree + i_lieux_10: + column: code_original_5 + method: btree + i_lieux_11: + column: code_original_6 + method: btree + i_lieux_12: + column: code_original_7 + method: btree + i_lieux_13: + column: unite_medicale_id + method: btree + i_lieux_14: + column: unite_fonctionnelle_id + method: btree + i_lieux_15: + column: mode_traitement_id + method: btree + i_lieux_2: + column: code_original_2 + method: btree + i_lieux_3: + column: code_original_3 + method: btree + i_lieux_4: + column: code_original_4 + method: btree + i_lieux_5: + column: lit_id + method: btree + i_lieux_6: + column: service_facturation_id + method: btree + i_lieux_7: + column: activite_id + method: btree + i_lieux_8: + column: unite_medicale_id + method: btree + i_lieux_9: + column: unite_fonctionnelle_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_lieux_c.yaml b/db/schema2/tables/t_lieux_c.yaml new file mode 100644 index 0000000..6213608 --- /dev/null +++ b/db/schema2/tables/t_lieux_c.yaml @@ -0,0 +1,149 @@ +columns: + activite_code: + type: text + activite_id: + type: bigint + activite_section_code: + type: 'text[]' + activite_section_id: + type: 'bigint[]' + activite_section_texte: + type: 'text[]' + activite_texte: + type: text + date_debut: + type: date + not_null: NOT NULL + default: "'0001-01-01'::date" + date_fin: + type: date + default: "'2099-12-31'::date" + etage_code: + type: text + etage_id: + type: bigint + etage_section_code: + type: 'text[]' + etage_section_id: + type: 'bigint[]' + etage_section_texte: + type: 'text[]' + etage_texte: + type: text + gir_code: + type: text + default: "''::text" + gir_coefficient: + type: numeric + default: "0" + gir_id: + type: bigint + default: "0" + gir_section_code: + type: 'text[]' + gir_section_id: + type: 'bigint[]' + gir_section_texte: + type: 'text[]' + gir_texte: + type: text + default: "''::text" + lit_code: + type: text + lit_id: + type: bigint + lit_section_code: + type: 'text[]' + lit_section_id: + type: 'bigint[]' + lit_section_texte: + type: 'text[]' + lit_texte: + type: text + mode_traitement_code: + type: text + mode_traitement_id: + type: bigint + mode_traitement_texte: + type: text + oid: + type: bigint + not_null: NOT NULL + service_facturation_code: + type: text + service_facturation_est_absence: + type: character(1) + default: "'0'::bpchar" + service_facturation_est_sans_mouvement: + type: character(1) + default: "''::bpchar" + service_facturation_id: + type: bigint + service_facturation_section_code: + type: 'text[]' + service_facturation_section_id: + type: 'bigint[]' + service_facturation_section_nb_cp: + type: 'numeric[]' + service_facturation_section_nb_lits: + type: 'numeric[]' + service_facturation_section_texte: + type: 'text[]' + service_facturation_texte: + type: text + type_t2a: + type: character(1) + default: "''::bpchar" + unite_fonctionnelle_code: + type: text + unite_fonctionnelle_id: + type: bigint + unite_fonctionnelle_section_code: + type: 'text[]' + unite_fonctionnelle_section_id: + type: 'bigint[]' + unite_fonctionnelle_section_texte: + type: 'text[]' + unite_fonctionnelle_texte: + type: text + unite_medicale_code: + type: text + unite_medicale_id: + type: bigint + unite_medicale_section_code: + type: 'text[]' + unite_medicale_section_id: + type: 'bigint[]' + unite_medicale_section_texte: + type: 'text[]' + unite_medicale_texte: + type: text +constraints: + t_lieux_c_pkey: + type: PRIMARY KEY + column: date_debut, oid +indexes: + i_lieux_c_1: + column: unite_medicale_id + method: btree + i_lieux_c_2: + column: unite_fonctionnelle_id + method: btree + i_lieux_c_3: + column: mode_traitement_id + method: btree + i_lieux_c_4: + column: service_facturation_id + method: btree + i_lieux_c_5: + column: activite_id + method: btree + i_lieux_c_6: + column: etage_id + method: btree + i_lieux_c_7: + column: lit_id + method: btree + i_lieux_c_service_facturation_est_sans_mouvement: + column: service_facturation_est_sans_mouvement + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_listes.yaml b/db/schema2/tables/t_listes.yaml new file mode 100644 index 0000000..febdd35 --- /dev/null +++ b/db/schema2/tables/t_listes.yaml @@ -0,0 +1,48 @@ +columns: + chapitre: + type: text + default: "''::text" + code: + type: text + contenu_by_code: + type: text + default: "'0'::text" + contenu_non_replicable_ailleurs: + type: character(1) + default: "'0'::bpchar" + est_partagee_modification: + type: character(1) + default: "'1'::bpchar" + exclude_code: + type: text + default: "''::text" + include_code: + type: text + default: "''::text" + is_cti: + type: character(1) + default: "0" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_listes'::regclass)" + show_omit: + type: character(1) + default: "'1'::bpchar" + table_id: + type: bigint + not_null: NOT NULL + default: "0" + texte: + type: text + utilisateur_createur: + type: text + default: "''::text" +constraints: + t_listes_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_listes_1: + column: code + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_listes_contenu.yaml b/db/schema2/tables/t_listes_contenu.yaml new file mode 100644 index 0000000..450c5ee --- /dev/null +++ b/db/schema2/tables/t_listes_contenu.yaml @@ -0,0 +1,20 @@ +columns: + liste_id: + type: bigint + not_null: NOT NULL + default: "0" + to_id: + type: bigint + not_null: NOT NULL + default: "0" +constraints: + t_listes_contenu_ukey: + type: UNIQUE + column: liste_id, to_id +indexes: + i_listes_contenu_1: + column: liste_id + method: btree + i_listes_contenu_2: + column: to_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_listes_tables.yaml b/db/schema2/tables/t_listes_tables.yaml new file mode 100644 index 0000000..a87f7ea --- /dev/null +++ b/db/schema2/tables/t_listes_tables.yaml @@ -0,0 +1,18 @@ +columns: + code: + type: text + default: "''::text" + name: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_listes_tables'::regclass)" + select_cmd: + type: text + texte: + type: text +constraints: + t_listes_tables_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_lit_historique.yaml b/db/schema2/tables/t_lit_historique.yaml new file mode 100644 index 0000000..646bcc2 --- /dev/null +++ b/db/schema2/tables/t_lit_historique.yaml @@ -0,0 +1,21 @@ +columns: + date_debut: + type: date + date_fin: + type: date + etage_id: + type: bigint + lit_id: + type: bigint + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_lit_historique'::regclass)" +constraints: + t_lit_historique_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_lit_historique_1: + column: lit_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_lits.yaml b/db/schema2/tables/t_lits.yaml new file mode 100644 index 0000000..1152c0a --- /dev/null +++ b/db/schema2/tables/t_lits.yaml @@ -0,0 +1,40 @@ +columns: + chambre_particuliere: + type: character(1) + default: "''::bpchar" + code: + type: text + code_original: + type: text + est_prioritaire: + type: text + default: "'0'::text" + etage_id: + type: bigint + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_lits'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + statut: + type: character(1) + texte: + type: text + texte_court: + type: text +constraints: + t_lits_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_lits_1: + column: etage_id + method: btree + i_lits_2: + column: code_original + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_lpp_c.yaml b/db/schema2/tables/t_lpp_c.yaml new file mode 100644 index 0000000..3a93efb --- /dev/null +++ b/db/schema2/tables/t_lpp_c.yaml @@ -0,0 +1,76 @@ +columns: + classification_atc_1_code: + type: character varying(30) + default: "''::character varying" + classification_atc_1_id: + type: bigint + default: "0" + classification_atc_1_texte: + type: character varying(255) + default: "''::character varying" + classification_atc_2_code: + type: character varying(30) + default: "''::character varying" + classification_atc_2_id: + type: bigint + default: "0" + classification_atc_2_texte: + type: character varying(255) + default: "''::character varying" + classification_atc_3_code: + type: character varying(30) + default: "''::character varying" + classification_atc_3_id: + type: bigint + default: "0" + classification_atc_3_texte: + type: character varying(255) + default: "''::character varying" + classification_atc_4_code: + type: character varying(30) + default: "''::character varying" + classification_atc_4_id: + type: bigint + default: "0" + classification_atc_4_texte: + type: character varying(255) + default: "''::character varying" + classification_atc_code: + type: character varying(30) + default: "''::character varying" + classification_atc_id: + type: bigint + default: "0" + classification_atc_section_code: + type: 'character varying(10)[]' + classification_atc_section_id: + type: 'bigint[]' + classification_atc_section_texte: + type: 'character varying(255)[]' + classification_atc_texte: + type: character varying(250) + default: "''::character varying" + code: + type: text + code_original: + type: text + oid: + type: bigint + not_null: NOT NULL + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text + texte_court: + type: text +constraints: + t_lpp_c_pkey: + type: PRIMARY KEY + column: oid + t_lpp_c_ukey: + type: UNIQUE + column: code_original \ No newline at end of file diff --git a/db/schema2/tables/t_medecins_administratifs.yaml b/db/schema2/tables/t_medecins_administratifs.yaml new file mode 100644 index 0000000..ba9cfaa --- /dev/null +++ b/db/schema2/tables/t_medecins_administratifs.yaml @@ -0,0 +1,67 @@ +columns: + adresse: + type: text + default: "''::text" + code: + type: text + code_original: + type: text + code_postal_id: + type: bigint + default: "0" + code_rpps: + type: text + default: "''::text" + email: + type: text + default: "''::text" + est_medecin_salarie: + type: numeric(1,0) + default: "0" + fax: + type: text + default: "''::text" + kiwee_sigems_honpatcpt: + type: text + default: "'1'::text" + kiwee_sigems_honpatcptdep: + type: text + default: "'1'::text" + medecin_id: + type: bigint + no_adeli: + type: text + default: "''::text" + nom: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_medecins'::regclass)" + prenom: + type: text + specialite_id: + type: bigint + telephone: + type: text + default: "''::text" + ville: + type: text + default: "''::text" +constraints: + t_medecins_pkey: + type: PRIMARY KEY + column: oid + t_medecins_ukey: + type: UNIQUE + column: code_original +indexes: + i_medecins_administratifs_1: + column: specialite_id + method: btree + i_medecins_administratifs_2: + column: medecin_id + method: btree + i_medecins_administratifs_3: + column: code_original + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_medecins_administratifs_c.yaml b/db/schema2/tables/t_medecins_administratifs_c.yaml new file mode 100644 index 0000000..207fbd4 --- /dev/null +++ b/db/schema2/tables/t_medecins_administratifs_c.yaml @@ -0,0 +1,57 @@ +columns: + adm_code: + type: text + adm_nom: + type: text + adm_nom_prenom: + type: text + adm_prenom: + type: text + medecin_code: + type: text + medecin_id: + type: bigint + nom: + type: text + nom_prenom: + type: text + oid: + type: bigint + not_null: NOT NULL + prenom: + type: text + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + specialite_code: + type: text + default: "''::text" + specialite_id: + type: bigint + default: "0" + specialite_texte: + type: text + default: "''::text" +constraints: + t_medecins_administratifs_c_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_medecins_administratifs_c_1: + column: specialite_id + method: btree + i_medecins_administratifs_c_2: + column: medecin_id + method: btree + i_medecins_administratifs_c_3: + column: '(section_id[1])' + method: btree + i_medecins_administratifs_c_4: + column: '(section_id[2])' + method: btree + i_medecins_administratifs_c_5: + column: '(section_id[3])' + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_medecins_traitants_administratifs.yaml b/db/schema2/tables/t_medecins_traitants_administratifs.yaml new file mode 100644 index 0000000..deaec28 --- /dev/null +++ b/db/schema2/tables/t_medecins_traitants_administratifs.yaml @@ -0,0 +1,56 @@ +columns: + adresse: + type: text + code: + type: text + code_original: + type: text + code_postal_id: + type: bigint + est_medecin_salarie: + type: numeric(1,0) + default: "0" + is_medecin_executant: + type: numeric(1,0) + default: "0" + is_medecin_sejour: + type: numeric(1,0) + default: "0" + medecin_id: + type: bigint + no_adeli: + type: character varying(30) + default: "''::character varying" + no_rpps: + type: text + nom: + type: character varying(255) + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_medecins_traitants_administratifs'::regclass)" + prenom: + type: character varying(255) + specialite_id: + type: bigint + statut: + type: character(1) + ville: + type: text +constraints: + t_medecins_traitants_administratifs_pkey: + type: PRIMARY KEY + column: oid + t_medecins_traitants_administratifs_ukey: + type: UNIQUE + column: code_original +indexes: + i_medecins_traitants_administratifs_1: + column: specialite_id + method: btree + i_medecins_traitants_administratifs_2: + column: medecin_id + method: btree + i_medecins_traitants_administratifs_3: + column: code_original + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_motif_non_facturation.yaml b/db/schema2/tables/t_motif_non_facturation.yaml new file mode 100644 index 0000000..0025435 --- /dev/null +++ b/db/schema2/tables/t_motif_non_facturation.yaml @@ -0,0 +1,26 @@ +columns: + code: + type: text + code_original: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_motif_non_facturation'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text + texte_court: + type: text +constraints: + t_motif_non_facturation_pkey: + type: PRIMARY KEY + column: oid + t_motif_non_facturation_code_key: + type: UNIQUE + column: code \ No newline at end of file diff --git a/db/schema2/tables/t_parametre_personnalise_sejour_1.yaml b/db/schema2/tables/t_parametre_personnalise_sejour_1.yaml new file mode 100644 index 0000000..b169f0f --- /dev/null +++ b/db/schema2/tables/t_parametre_personnalise_sejour_1.yaml @@ -0,0 +1,23 @@ +columns: + code: + type: text + code_original: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_parametre_personnalise_sejour_1'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text + texte_court: + type: text +constraints: + t_parametre_personnalise_sejour_1_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_parametre_personnalise_sejour_2.yaml b/db/schema2/tables/t_parametre_personnalise_sejour_2.yaml new file mode 100644 index 0000000..09d2bc3 --- /dev/null +++ b/db/schema2/tables/t_parametre_personnalise_sejour_2.yaml @@ -0,0 +1,23 @@ +columns: + code: + type: text + code_original: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_parametre_personnalise_sejour_2'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text + texte_court: + type: text +constraints: + t_parametre_personnalise_sejour_2_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_places.yaml b/db/schema2/tables/t_places.yaml new file mode 100644 index 0000000..0988e10 --- /dev/null +++ b/db/schema2/tables/t_places.yaml @@ -0,0 +1,70 @@ +columns: + date: + type: date + est_ouvert: + type: character(1) + default: "'1'::bpchar" + heberge_ambulatoires: + type: character(1) + default: "'1'::bpchar" + heberge_bebes: + type: character(1) + default: "'1'::bpchar" + heberge_externes: + type: character(1) + default: "'1'::bpchar" + heberge_hospitalises: + type: character(1) + default: "'1'::bpchar" + heberge_seances: + type: character(1) + default: "'0'::bpchar" + heberge_urgences: + type: character(1) + default: "'1'::bpchar" + is_weekend: + type: character(1) + jour_semaine: + type: numeric + nb_box_ambulatoires_ouverts: + type: numeric(5,0) + default: "0" + nb_box_ambulatoires_theoriques: + type: numeric(5,0) + default: "0" + nb_box_seances_ouverts: + type: numeric(5,0) + default: "0" + nb_box_seances_theoriques: + type: numeric(5,0) + default: "0" + nb_lits_cp_ouverts: + type: numeric(5,0) + default: "0" + nb_lits_cp_theoriques: + type: numeric(5,0) + default: "0" + nb_lits_ouverts: + type: numeric(5,0) + default: "0" + nb_lits_theoriques: + type: numeric(5,0) + default: "0" + parent_id: + type: bigint + not_null: NOT NULL + pole_id: + type: bigint + default: "0" + type_sejour_id: + type: bigint +indexes: + i_places_1: + column: parent_id + method: btree + i_places_2: + column: date + method: btree + i_places_3: + column: type_sejour_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_places_parents.yaml b/db/schema2/tables/t_places_parents.yaml new file mode 100644 index 0000000..faf7eaa --- /dev/null +++ b/db/schema2/tables/t_places_parents.yaml @@ -0,0 +1,44 @@ +columns: + finess_code: + type: text + finess_id: + type: bigint + default: "0" + finess_section_code: + type: 'text[]' + finess_section_id: + type: 'bigint[]' + finess_section_texte: + type: 'text[]' + finess_texte: + type: text + mode_traitement_code: + type: text + default: "''::text" + mode_traitement_id: + type: bigint + default: "0" + mode_traitement_texte: + type: text + default: "''::text" + oid: + type: bigint + not_null: NOT NULL + default: "0" + parent_code: + type: text + parent_section_code: + type: 'text[]' + parent_section_id: + type: 'bigint[]' + parent_section_texte: + type: 'text[]' + parent_texte: + type: text + parent_type: + type: text + default: "''::text" +constraints: + t_places_parents_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_pole.yaml b/db/schema2/tables/t_pole.yaml new file mode 100644 index 0000000..c15e0db --- /dev/null +++ b/db/schema2/tables/t_pole.yaml @@ -0,0 +1,23 @@ +columns: + code: + type: text + default: "''::text" + oid: + type: bigint + not_null: NOT NULL + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text + default: "''::text" + texte_court: + type: text + default: "''::text" +constraints: + t_pole_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_pole_rule.yaml b/db/schema2/tables/t_pole_rule.yaml new file mode 100644 index 0000000..35a15df --- /dev/null +++ b/db/schema2/tables/t_pole_rule.yaml @@ -0,0 +1,73 @@ +columns: + code: + type: text + liste_acte: + type: text + default: "''::text" + liste_activite: + type: text + default: "''::text" + liste_diagnostic_associe: + type: text + default: "''::text" + liste_diagnostic_principal: + type: text + default: "''::text" + liste_diagnostic_relie: + type: text + default: "''::text" + liste_etage: + type: text + default: "''::text" + liste_finess: + type: text + default: "''::text" + liste_ghm: + type: text + default: "''::text" + liste_medecin: + type: text + default: "''::text" + liste_prestation: + type: text + default: "''::text" + liste_rubrique: + type: text + default: "''::text" + liste_sauf_ghm: + type: text + default: "''::text" + liste_sauf_prestation: + type: text + default: "''::text" + liste_sauf_rubrique: + type: text + default: "''::text" + liste_service: + type: text + default: "''::text" + liste_specialite: + type: text + default: "''::text" + liste_type_sejour: + type: text + default: "''::text" + liste_unite_fonctionnelle: + type: text + default: "''::text" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_pole_rule'::regclass)" + pole_id: + type: bigint + not_null: NOT NULL + default: "0" + priorite: + type: numeric(5,0) + texte: + type: text +constraints: + t_pole_rule_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_prestations.yaml b/db/schema2/tables/t_prestations.yaml new file mode 100644 index 0000000..ad5bb74 --- /dev/null +++ b/db/schema2/tables/t_prestations.yaml @@ -0,0 +1,41 @@ +columns: + clinique_honoraire: + type: character(1) + not_null: NOT NULL + default: "''::bpchar" + code: + type: text + code_original: + type: text + norme: + type: text + default: "''::text" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_prestations'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + statut: + type: character(1) + texte: + type: text + texte_court: + type: text + type_valorisation_non_facture: + type: text + default: "''::text" + type_ventilation_jour: + type: text + default: "''::text" +constraints: + t_prestations_pkey: + type: PRIMARY KEY + column: oid + t_prestations_code_key: + type: UNIQUE + column: code \ No newline at end of file diff --git a/db/schema2/tables/t_protocoles.yaml b/db/schema2/tables/t_protocoles.yaml new file mode 100644 index 0000000..f240e8e --- /dev/null +++ b/db/schema2/tables/t_protocoles.yaml @@ -0,0 +1,26 @@ +columns: + code: + type: text + code_original: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_protocoles'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text + texte_court: + type: text +constraints: + t_protocoles_pkey: + type: PRIMARY KEY + column: oid + t_protocoles_code_key: + type: UNIQUE + column: code_original \ No newline at end of file diff --git a/db/schema2/tables/t_providers.yaml b/db/schema2/tables/t_providers.yaml new file mode 100644 index 0000000..1e58449 --- /dev/null +++ b/db/schema2/tables/t_providers.yaml @@ -0,0 +1,22 @@ +columns: + code: + type: text + date_arret: + type: date + default: "'2099-12-31'::date" + date_demarrage: + type: date + default: "'0001-01-01'::date" + oid: + type: bigint + not_null: NOT NULL + default: "0" + texte: + type: text +constraints: + t_providers_pkey: + type: PRIMARY KEY + column: oid + t_providers_code_key: + type: UNIQUE + column: code \ No newline at end of file diff --git a/db/schema2/tables/t_rapport_group.yaml b/db/schema2/tables/t_rapport_group.yaml new file mode 100644 index 0000000..7dd9942 --- /dev/null +++ b/db/schema2/tables/t_rapport_group.yaml @@ -0,0 +1,15 @@ +columns: + code: + type: text + oid: + type: bigint + not_null: NOT NULL + one_click: + type: text + default: "''::text" + texte: + type: text +constraints: + t_rapport_group_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_rapports.yaml b/db/schema2/tables/t_rapports.yaml new file mode 100644 index 0000000..1018103 --- /dev/null +++ b/db/schema2/tables/t_rapports.yaml @@ -0,0 +1,65 @@ +columns: + code: + type: text + colonnes_essentiel: + type: text + default: "''::text" + colonnes_essentiel_style: + type: text + default: "''::text" + contexte: + type: text + default: "''::text" + entete: + type: text + default: "''::text" + entete_2: + type: text + default: "''::text" + essentiel_date_level: + type: character(1) + default: "'M'::bpchar" + group_id: + type: bigint + default: "0" + is_cti: + type: character(1) + default: "0" + is_essentiel: + type: character(1) + default: "'0'::bpchar" + is_hide: + type: text + default: "'0'::text" + is_template_updatable: + type: character(1) + default: "'0'::bpchar" + label: + type: text + default: "''::text" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_rapports'::regclass)" + rapport_indicateur_condition_id: + type: 'bigint[]' + rapport_lie_id: + type: 'bigint[]' + rapport_template_id: + type: bigint + default: "0" + serie_entete: + type: 'text[]' + texte: + type: text + type_rapport: + type: text + default: "''::text" +constraints: + t_rapports_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_rapports_1: + column: code + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_rapports_rubriques.yaml b/db/schema2/tables/t_rapports_rubriques.yaml new file mode 100644 index 0000000..5eb7e22 --- /dev/null +++ b/db/schema2/tables/t_rapports_rubriques.yaml @@ -0,0 +1,147 @@ +columns: + background_color: + type: text + default: "''::text" + base_nationale: + type: character(1) + default: "'0'::bpchar" + base_nationale_qualifiee: + type: character(1) + default: "'0'::bpchar" + border_thickness: + type: integer + default: "0" + calc_formula: + type: text + default: "''::text" + color: + type: text + default: "''::text" + compared_indicator_id: + type: bigint + default: "0" + description: + type: text + default: "''::text" + description_2: + type: text + default: "''::text" + entete: + type: text + default: "''::text" + entete_etendue: + type: text + default: "''::text" + entete_etendue_2: + type: text + default: "''::text" + erase_rapport_indicateur_condition: + type: text + default: "'0'::text" + field_tag: + type: text + default: "''::text" + font_size: + type: integer + default: "0" + font_weight: + type: text + default: "'normal'::text" + hide_on_zero_field: + type: text + default: "''::text" + indicateur_associe_id: + type: bigint + default: "0" + indicateur_condition_id: + type: 'bigint[]' + indicateur_id: + type: bigint + default: "0" + is_hide: + type: text + default: "'0'::text" + last_sql: + type: text + default: "''::text" + last_sql_error: + type: text + default: "''::text" + numero_rubrique: + type: integer + not_null: NOT NULL + option: + type: text + default: "''::text" + output_format: + type: text + default: "''::text" + output_format_2: + type: text + default: "''::text" + padding: + type: integer + default: "0" + periode_reference: + type: text + picto_enabled: + type: character(1) + default: "'1'::bpchar" + comment: "Affiche ou non le pictogramme selon la tendance de l''indicateur (par défaut oui)" + picto_enabled_2: + type: text + default: "''::text" + positif_is_good: + type: character(1) + default: "'1'::bpchar" + comment: Indique si une tendance positive est une bonne chose ou non (par défaut oui) + positif_is_good_2: + type: text + default: "''::text" + rapport_id: + type: bigint + not_null: NOT NULL + default: "0" + row_height: + type: integer + default: "0" + serie_description: + type: 'text[]' + serie_entete_etendue: + type: 'text[]' + serie_indicateur_id: + type: 'bigint[]' + serie_output_format: + type: 'text[]' + serie_picto_enabled: + type: 'text[]' + serie_positif_is_good: + type: 'text[]' + specific_viewlink: + type: text + default: "''::text" + specific_viewlink_label: + type: text + default: "''::text" + specific_viewlink_param: + type: text + default: "''::text" + viewlink: + type: text + default: "''::text" + comment: "Nom de la vue à ouvrir à partir des Essentiels pour l''accès aux détails de l''indicateur" + viewlink_label: + type: text + default: "''::text" + comment: Texte du lien vers la vue de détails + viewlink_param: + type: text + default: "''::text" + comment: Paramétrage des regroupements et des filtres pour les Viewlinks des Essentiels + width: + type: numeric(3,0) + default: "0" +constraints: + t_rapports_rubriques_pkey: + type: PRIMARY KEY + column: numero_rubrique, rapport_id \ No newline at end of file diff --git a/db/schema2/tables/t_rejets_noemie.yaml b/db/schema2/tables/t_rejets_noemie.yaml new file mode 100644 index 0000000..e8efdcb --- /dev/null +++ b/db/schema2/tables/t_rejets_noemie.yaml @@ -0,0 +1,19 @@ +columns: + code: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_rejets_noemie'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text +constraints: + t_rejets_noemie_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_risque.yaml b/db/schema2/tables/t_risque.yaml new file mode 100644 index 0000000..78cd82b --- /dev/null +++ b/db/schema2/tables/t_risque.yaml @@ -0,0 +1,13 @@ +columns: + code: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_risque'::regclass)" + texte: + type: text +constraints: + t_web100t_risque_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_rubrique_facture_c.yaml b/db/schema2/tables/t_rubrique_facture_c.yaml new file mode 100644 index 0000000..21f7ea9 --- /dev/null +++ b/db/schema2/tables/t_rubrique_facture_c.yaml @@ -0,0 +1,70 @@ +columns: + compte_produit_code: + type: text + compte_produit_id: + type: bigint + compte_produit_section_code: + type: 'text[]' + compte_produit_section_id: + type: 'bigint[]' + compte_produit_section_texte: + type: 'text[]' + compte_produit_texte: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_rubrique_facture_c'::regclass)" + prestation_code: + type: text + prestation_id: + type: bigint + prestation_section_code: + type: 'text[]' + prestation_section_id: + type: 'bigint[]' + prestation_section_texte: + type: 'text[]' + prestation_texte: + type: text + rubrique_comptabilisation_code: + type: text + rubrique_comptabilisation_id: + type: bigint + rubrique_comptabilisation_section_code: + type: 'text[]' + rubrique_comptabilisation_section_id: + type: 'bigint[]' + rubrique_comptabilisation_section_texte: + type: 'text[]' + rubrique_comptabilisation_texte: + type: text + rubrique_facturation_code: + type: text + rubrique_facturation_id: + type: bigint + rubrique_facturation_section_code: + type: 'text[]' + rubrique_facturation_section_id: + type: 'bigint[]' + rubrique_facturation_section_texte: + type: 'text[]' + rubrique_facturation_texte: + type: text +constraints: + t_rubrique_facture_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_rubrique_facture_c_compte_produit_id: + column: compte_produit_id + method: btree + i_rubrique_facture_c_prestation_id: + column: prestation_id + method: btree + i_rubrique_facture_c_rubrique_comptabilisation_id: + column: rubrique_comptabilisation_id + method: btree + i_rubrique_facture_c_rubrique_facturation_id: + column: rubrique_facturation_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_rubriques_facturation.yaml b/db/schema2/tables/t_rubriques_facturation.yaml new file mode 100644 index 0000000..54bb495 --- /dev/null +++ b/db/schema2/tables/t_rubriques_facturation.yaml @@ -0,0 +1,42 @@ +columns: + actes_inclus_public: + type: character(1) + default: "0" + comment: 1 = Dans un etablissement public, cette rubrique de séjour inclus les actes + code: + type: text + code_force: + type: text + default: "''::text" + code_original: + type: text + est_force_etablissement: + type: text + default: "'0'::text" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_rubriques_facturation'::regclass)" + prestation_forcee_id: + type: bigint + default: "0" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + statut: + type: character(1) + texte: + type: text + texte_court: + type: text +constraints: + t_rubriques_facturation_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_rubriques_facturation_1: + column: section_id + method: gin \ No newline at end of file diff --git a/db/schema2/tables/t_sejour.yaml b/db/schema2/tables/t_sejour.yaml new file mode 100644 index 0000000..f4ac6f2 --- /dev/null +++ b/db/schema2/tables/t_sejour.yaml @@ -0,0 +1,33 @@ +columns: + encours_est_ignore: + type: 'text[]' + encours_from_date: + type: 'date[]' + est_ignore: + type: character(1) + etage_id: + type: bigint + default: "0" + medecin_sejour_id: + type: bigint + default: "0" + no_sejour: + type: text + not_null: NOT NULL + no_sejour_fusion: + type: text + default: "''::text" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_sejour'::regclass)" + service_facturation_id: + type: bigint + default: "0" + type_sejour: + type: text + default: "'0'::text" +constraints: + t_sejour_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_service_rubrique.yaml b/db/schema2/tables/t_service_rubrique.yaml new file mode 100644 index 0000000..9424ef0 --- /dev/null +++ b/db/schema2/tables/t_service_rubrique.yaml @@ -0,0 +1,38 @@ +columns: + compte_id: + type: bigint + not_null: NOT NULL + default: "0" + est_compte_force: + type: character(1) + default: "''::bpchar" + comment: 1 = Forcage du compte + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_service_rubrique'::regclass)" + prestation_forcee_id: + type: bigint + default: "0" + rubrique_facturation_id: + type: bigint + not_null: NOT NULL + default: "0" + service_facturation_id: + type: bigint + not_null: NOT NULL + default: "0" +constraints: + t_service_rubrique_pkey: + type: PRIMARY KEY + column: oid + t_service_rubrique_ukey: + type: UNIQUE + column: rubrique_facturation_id, service_facturation_id +indexes: + i_service_rubrique_1: + column: service_facturation_id + method: btree + i_service_rubrique_2: + column: rubrique_facturation_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_service_rubrique_dotation.yaml b/db/schema2/tables/t_service_rubrique_dotation.yaml new file mode 100644 index 0000000..f572ad2 --- /dev/null +++ b/db/schema2/tables/t_service_rubrique_dotation.yaml @@ -0,0 +1,27 @@ +columns: + annee: + type: numeric + montant_dotation: + type: numeric + default: "0" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_service_rubrique_dotation'::regclass)" + rubrique_facturation_id_array: + type: 'bigint[]' + service_facturation_id_array: + type: 'bigint[]' + texte: + type: text + default: "''::text" + to_prestation_id: + type: bigint + default: "0" + to_rubrique_facturation_id: + type: bigint + default: "0" +constraints: + t_service_rubrique_dotation_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_services_facturation.yaml b/db/schema2/tables/t_services_facturation.yaml new file mode 100644 index 0000000..fdb300e --- /dev/null +++ b/db/schema2/tables/t_services_facturation.yaml @@ -0,0 +1,118 @@ +columns: + activite_force_id: + type: bigint + default: "0" + activite_par_defaut_id: + type: bigint + default: "0" + avec_facturation_intermediaire: + type: character(1) + default: "''::bpchar" + comment: 1 = Facturation intermediaire + code: + type: text + code_original: + type: text + dmt_id: + type: bigint + default: "0" + est_absence: + type: character(1) + default: "'0'::bpchar" + comment: "1 = Service d''absence" + est_budget_global: + type: character(1) + default: "'0'::bpchar" + comment: 1 = Budget_global + est_sans_facturation: + type: character(1) + default: "''::bpchar" + comment: | + 1 = Pas de facturation + 2 = Facturation facultative si budget global expédié MAT2A + est_sans_mouvement: + type: character(1) + default: "''::bpchar" + comment: 1 = Pas de mouvement (Entrées, journ Sorties) + etage_force_id: + type: bigint + default: "0" + etage_par_defaut_id: + type: bigint + default: "0" + finess_id: + type: bigint + default: "0" + medecin_force_id: + type: bigint + default: "0" + medecin_par_defaut_id: + type: bigint + default: "0" + mode_calcul_journees: + type: text + default: "''::text" + mode_traitement_id: + type: bigint + default: "0" + nb_cp: + type: numeric(5,0) + default: "0" + nb_lits: + type: numeric(5,0) + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_services_facturation'::regclass)" + option_jour_ferme: + type: character(1) + default: "''::bpchar" + comment: 1 = Enlever les mouvements des jours de fermeture + particularites_encours: + type: text + default: "''::bpchar" + comment: IVG, MAT + prestations_presence: + type: text + default: "''::text" + comment: | + Si renseigné, identifie les prestations qui permettent d''identifier la présence (Exemple PY* pour HDJ PSY) + Codes ou génériques* séparés par virgule + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + sej_sans_acte_fictif: + type: character(1) + default: "''::bpchar" + statut: + type: character(1) + texte: + type: text + texte_court: + type: text + type_sejour: + type: text + default: "''::bpchar" + comment: 0 = Pas de type séjour forcé + type_t2a: + type: character(1) + default: "''::bpchar" + comment: | + 1 = PMSI + 2 = PMSI SSR + 3 = PMSI PSY + 0 = Hors PMSI + unite_medicale_modifiable: + type: character(1) + default: "'0'::bpchar" +constraints: + t_services_facturation_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_services_facturation_1: + column: code_original + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_services_facturation_historique.yaml b/db/schema2/tables/t_services_facturation_historique.yaml new file mode 100644 index 0000000..8c7a4dc --- /dev/null +++ b/db/schema2/tables/t_services_facturation_historique.yaml @@ -0,0 +1,75 @@ +columns: + date: + type: date + date_fin: + type: date + default: "'2099-12-31'::date" + est_ouvert_1: + type: character(1) + default: "'1'::bpchar" + est_ouvert_2: + type: character(1) + default: "'1'::bpchar" + est_ouvert_3: + type: character(1) + default: "'1'::bpchar" + est_ouvert_4: + type: character(1) + default: "'1'::bpchar" + est_ouvert_5: + type: character(1) + default: "'1'::bpchar" + est_ouvert_6: + type: character(1) + default: "'1'::bpchar" + est_ouvert_7: + type: character(1) + default: "'1'::bpchar" + heberge_ambulatoires: + type: character(1) + default: "'1'::bpchar" + heberge_bebes: + type: character(1) + default: "'1'::bpchar" + heberge_externes: + type: character(1) + default: "'1'::bpchar" + heberge_hospitalises: + type: character(1) + default: "'1'::bpchar" + heberge_seances: + type: character(1) + default: "'1'::bpchar" + heberge_urgences: + type: character(1) + default: "'1'::bpchar" + nb_box_ambulatoires_ouverts: + type: numeric(5,0) + default: "0" + nb_box_ambulatoires_theoriques: + type: numeric(5,0) + default: "0" + nb_box_seances_ouverts: + type: numeric(5,0) + default: "0" + nb_box_seances_theoriques: + type: numeric(5,0) + default: "0" + nb_lits_cp_ouverts: + type: numeric(5,0) + default: "0" + nb_lits_cp_theoriques: + type: numeric(5,0) + default: "0" + nb_lits_ouverts: + type: numeric(5,0) + default: "0" + nb_lits_theoriques: + type: numeric(5,0) + default: "0" + pole_occupation_id: + type: bigint + default: "0" + service_facturation_id: + type: bigint + not_null: NOT NULL \ No newline at end of file diff --git a/db/schema2/tables/t_severites_cti.yaml b/db/schema2/tables/t_severites_cti.yaml new file mode 100644 index 0000000..9627da2 --- /dev/null +++ b/db/schema2/tables/t_severites_cti.yaml @@ -0,0 +1,16 @@ +columns: + severite_code: + type: text + not_null: NOT NULL + default: "''::bpchar" + severite_id: + type: character(1) + not_null: NOT NULL + default: "''::bpchar" + severite_texte: + type: character varying(255) + default: "''::character varying" +constraints: + t_severite_cti_pkey: + type: PRIMARY KEY + column: severite_id \ No newline at end of file diff --git a/db/schema2/tables/t_sigems_transformation_uf.yaml b/db/schema2/tables/t_sigems_transformation_uf.yaml new file mode 100644 index 0000000..0bfed9c --- /dev/null +++ b/db/schema2/tables/t_sigems_transformation_uf.yaml @@ -0,0 +1,19 @@ +columns: + from_medecin: + type: text + from_mode: + type: text + from_uf: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_sigems_transformation_uf'::regclass)" + texte: + type: text + to_uf: + type: text +constraints: + t_sigems_transformation_uf_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_specialites_medecin.yaml b/db/schema2/tables/t_specialites_medecin.yaml new file mode 100644 index 0000000..e8b9ed3 --- /dev/null +++ b/db/schema2/tables/t_specialites_medecin.yaml @@ -0,0 +1,22 @@ +columns: + code: + type: text + code_original: + type: text + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_specialites_medecin'::regclass)" + statut: + type: character(1) + texte: + type: text + texte_court: + type: text +constraints: + t_specialites_medecin_pkey: + type: PRIMARY KEY + column: oid + t_specialites_medecin_code_key: + type: UNIQUE + column: code \ No newline at end of file diff --git a/db/schema2/tables/t_tiers_payant.yaml b/db/schema2/tables/t_tiers_payant.yaml new file mode 100644 index 0000000..ee9447c --- /dev/null +++ b/db/schema2/tables/t_tiers_payant.yaml @@ -0,0 +1,76 @@ +columns: + adresse: + type: text + default: "''::text" + code: + type: text + code_original: + type: text + code_postal_id: + type: bigint + default: "0" + email: + type: text + default: "''::text" + fax: + type: text + default: "''::text" + grand_regime_code: + type: text + default: "''::text" + grand_regime_id: + type: bigint + default: "0" + grand_regime_texte: + type: text + default: "''::text" + identifiant_groupe: + type: text + default: "''::text" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_tiers_payant'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + statut: + type: character(1) + telephone: + type: text + default: "''::text" + texte: + type: text + texte_court: + type: text + type_tiers_payant: + type: character(1) + type_tiers_payant_id: + type: bigint + default: "0" + type_tiers_payant_texte: + type: text + default: "''::text" + ville: + type: text + default: "''::text" +constraints: + t_tiers_payant_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_tiers_payant_1: + column: code + method: btree + i_tiers_payant_2: + column: type_tiers_payant + method: btree + i_tiers_payant_3: + column: grand_regime_id + method: btree + i_tiers_payant_4: + column: type_tiers_payant_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_traitement_epmsi.yaml b/db/schema2/tables/t_traitement_epmsi.yaml new file mode 100644 index 0000000..524a705 --- /dev/null +++ b/db/schema2/tables/t_traitement_epmsi.yaml @@ -0,0 +1,23 @@ +columns: + code: + type: text + not_null: NOT NULL + oid: + type: bigint + not_null: NOT NULL + default: "0" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text +constraints: + t_traitement_epmsi_pkey: + type: PRIMARY KEY + column: oid + t_traitement_epmsi_ukey: + type: UNIQUE + column: code \ No newline at end of file diff --git a/db/schema2/tables/t_transformation.yaml b/db/schema2/tables/t_transformation.yaml new file mode 100644 index 0000000..374f3d2 --- /dev/null +++ b/db/schema2/tables/t_transformation.yaml @@ -0,0 +1,38 @@ +columns: + activite_id: + type: bigint + default: "0" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_transformation'::regclass)" + prestation_id: + type: bigint + default: "0" + rubrique_id: + type: bigint + default: "0" + service_facturation_id: + type: bigint + default: "0" + texte: + type: text + to_id: + type: bigint + default: "0" + type: + type: text + unite_fonctionnelle_id: + type: bigint + default: "0" +constraints: + t_transformation_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_transformation_prestation_id: + column: prestation_id + method: btree + i_transformation_rubrique_id: + column: rubrique_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_type_hospi_pmsi.yaml b/db/schema2/tables/t_type_hospi_pmsi.yaml new file mode 100644 index 0000000..bb777ee --- /dev/null +++ b/db/schema2/tables/t_type_hospi_pmsi.yaml @@ -0,0 +1,22 @@ +columns: + code: + type: text + not_null: NOT NULL + oid: + type: bigint + not_null: NOT NULL + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text +constraints: + t_type_hospi_pmsi_pkey: + type: PRIMARY KEY + column: oid + t_type_hospi_pmsi_ukey: + type: UNIQUE + column: code \ No newline at end of file diff --git a/db/schema2/tables/t_type_sejour.yaml b/db/schema2/tables/t_type_sejour.yaml new file mode 100644 index 0000000..9d7b3cb --- /dev/null +++ b/db/schema2/tables/t_type_sejour.yaml @@ -0,0 +1,22 @@ +columns: + code: + type: text + not_null: NOT NULL + oid: + type: bigint + not_null: NOT NULL + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text +constraints: + t_type_sejour_pkey: + type: PRIMARY KEY + column: oid + t_type_sejour_ukey: + type: UNIQUE + column: code \ No newline at end of file diff --git a/db/schema2/tables/t_types_gmt.yaml b/db/schema2/tables/t_types_gmt.yaml new file mode 100644 index 0000000..3550d48 --- /dev/null +++ b/db/schema2/tables/t_types_gmt.yaml @@ -0,0 +1,13 @@ +columns: + code: + type: text + not_null: NOT NULL + description: + type: text + label: + type: text + not_null: NOT NULL +constraints: + t_types_gmt_code_key: + type: PRIMARY KEY + column: code \ No newline at end of file diff --git a/db/schema2/tables/t_types_tiers_payant.yaml b/db/schema2/tables/t_types_tiers_payant.yaml new file mode 100644 index 0000000..a648cb2 --- /dev/null +++ b/db/schema2/tables/t_types_tiers_payant.yaml @@ -0,0 +1,12 @@ +columns: + code: + type: character(1) + not_null: NOT NULL + texte: + type: text + texte_court: + type: text +constraints: + t_types_tiers_payant_pkey: + type: PRIMARY KEY + column: code \ No newline at end of file diff --git a/db/schema2/tables/t_ucd_c.yaml b/db/schema2/tables/t_ucd_c.yaml new file mode 100644 index 0000000..5684121 --- /dev/null +++ b/db/schema2/tables/t_ucd_c.yaml @@ -0,0 +1,76 @@ +columns: + classification_atc_1_code: + type: character varying(30) + default: "''::character varying" + classification_atc_1_id: + type: bigint + default: "0" + classification_atc_1_texte: + type: character varying(255) + default: "''::character varying" + classification_atc_2_code: + type: character varying(30) + default: "''::character varying" + classification_atc_2_id: + type: bigint + default: "0" + classification_atc_2_texte: + type: character varying(255) + default: "''::character varying" + classification_atc_3_code: + type: character varying(30) + default: "''::character varying" + classification_atc_3_id: + type: bigint + default: "0" + classification_atc_3_texte: + type: character varying(255) + default: "''::character varying" + classification_atc_4_code: + type: character varying(30) + default: "''::character varying" + classification_atc_4_id: + type: bigint + default: "0" + classification_atc_4_texte: + type: character varying(255) + default: "''::character varying" + classification_atc_code: + type: character varying(30) + default: "''::character varying" + classification_atc_id: + type: bigint + default: "0" + classification_atc_section_code: + type: 'character varying(10)[]' + classification_atc_section_id: + type: 'bigint[]' + classification_atc_section_texte: + type: 'character varying(255)[]' + classification_atc_texte: + type: character varying(250) + default: "''::character varying" + code: + type: text + code_original: + type: text + oid: + type: bigint + not_null: NOT NULL + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text + texte_court: + type: text +constraints: + t_ucd_c_pkey: + type: PRIMARY KEY + column: oid + t_ucd_c_ukey: + type: UNIQUE + column: code_original \ No newline at end of file diff --git a/db/schema2/tables/t_unites_fonctionnelles.yaml b/db/schema2/tables/t_unites_fonctionnelles.yaml new file mode 100644 index 0000000..9f8b820 --- /dev/null +++ b/db/schema2/tables/t_unites_fonctionnelles.yaml @@ -0,0 +1,59 @@ +columns: + code: + type: text + code_original: + type: text + est_sans_facturation: + type: character(1) + default: "''::bpchar" + comment: 1 = Pas de facturation + etage_force2_id: + type: bigint + default: "0" + etage_force2_um_id_array: + type: 'bigint[]' + etage_force3_id: + type: bigint + default: "0" + etage_force3_um_id_array: + type: 'bigint[]' + etage_force_id: + type: bigint + default: "0" + etage_force_um_id_array: + type: 'bigint[]' + etage_par_defaut_id: + type: bigint + default: "0" + finess_id: + type: bigint + default: "0" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_unites_fonctionnelles'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text + texte_court: + type: text + type_eclatement: + type: character(1) + default: "''::bpchar" + comment: | + Eclatement : Le code est suffixé avec : + 1=Première unité médicale + 2=Spécialité du médecin séjour +constraints: + t_unites_fonctionnelles_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_unites_fonctionnelles_1: + column: code_original + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_unites_fonctionnelles_historique.yaml b/db/schema2/tables/t_unites_fonctionnelles_historique.yaml new file mode 100644 index 0000000..7de1b6d --- /dev/null +++ b/db/schema2/tables/t_unites_fonctionnelles_historique.yaml @@ -0,0 +1,75 @@ +columns: + date: + type: date + date_fin: + type: date + default: "'2099-12-31'::date" + est_ouvert_1: + type: character(1) + default: "'1'::bpchar" + est_ouvert_2: + type: character(1) + default: "'1'::bpchar" + est_ouvert_3: + type: character(1) + default: "'1'::bpchar" + est_ouvert_4: + type: character(1) + default: "'1'::bpchar" + est_ouvert_5: + type: character(1) + default: "'1'::bpchar" + est_ouvert_6: + type: character(1) + default: "'1'::bpchar" + est_ouvert_7: + type: character(1) + default: "'1'::bpchar" + heberge_ambulatoires: + type: character(1) + default: "'1'::bpchar" + heberge_bebes: + type: character(1) + default: "'1'::bpchar" + heberge_externes: + type: character(1) + default: "'1'::bpchar" + heberge_hospitalises: + type: character(1) + default: "'1'::bpchar" + heberge_seances: + type: character(1) + default: "'1'::bpchar" + heberge_urgences: + type: character(1) + default: "'1'::bpchar" + nb_box_ambulatoires_ouverts: + type: numeric(5,0) + default: "0" + nb_box_ambulatoires_theoriques: + type: numeric(5,0) + default: "0" + nb_box_seances_ouverts: + type: numeric(5,0) + default: "0" + nb_box_seances_theoriques: + type: numeric(5,0) + default: "0" + nb_lits_cp_ouverts: + type: numeric(5,0) + default: "0" + nb_lits_cp_theoriques: + type: numeric(5,0) + default: "0" + nb_lits_ouverts: + type: numeric(5,0) + default: "0" + nb_lits_theoriques: + type: numeric(5,0) + default: "0" + pole_occupation_id: + type: bigint + default: "0" + unite_fonctionnelle_id: + type: bigint + not_null: NOT NULL \ No newline at end of file diff --git a/db/schema2/tables/t_unites_medicales.yaml b/db/schema2/tables/t_unites_medicales.yaml new file mode 100644 index 0000000..24620cc --- /dev/null +++ b/db/schema2/tables/t_unites_medicales.yaml @@ -0,0 +1,39 @@ +columns: + code: + type: text + code_original: + type: text + etage_force_id: + type: bigint + default: "0" + etage_par_defaut_id: + type: bigint + default: "0" + finess_id: + type: bigint + default: "0" + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_unites_medicales'::regclass)" + section_code: + type: 'text[]' + section_id: + type: 'bigint[]' + section_texte: + type: 'text[]' + texte: + type: text + texte_court: + type: text + type_eclatement: + type: character(1) + default: "''::bpchar" + comment: | + Eclatement : Le code est suffixé avec : + 1=Première unité médicale + 2=Spécialité du médecin séjour +constraints: + t_unites_medicales_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/tables/t_unites_medicales_historique.yaml b/db/schema2/tables/t_unites_medicales_historique.yaml new file mode 100644 index 0000000..62e6293 --- /dev/null +++ b/db/schema2/tables/t_unites_medicales_historique.yaml @@ -0,0 +1,72 @@ +columns: + date: + type: date + date_fin: + type: date + default: "'2099-12-31'::date" + est_ouvert_1: + type: character(1) + default: "'1'::bpchar" + est_ouvert_2: + type: character(1) + default: "'1'::bpchar" + est_ouvert_3: + type: character(1) + default: "'1'::bpchar" + est_ouvert_4: + type: character(1) + default: "'1'::bpchar" + est_ouvert_5: + type: character(1) + default: "'1'::bpchar" + est_ouvert_6: + type: character(1) + default: "'1'::bpchar" + est_ouvert_7: + type: character(1) + default: "'1'::bpchar" + heberge_ambulatoires: + type: character(1) + default: "'1'::bpchar" + heberge_bebes: + type: character(1) + default: "'1'::bpchar" + heberge_externes: + type: character(1) + default: "'1'::bpchar" + heberge_hospitalises: + type: character(1) + default: "'1'::bpchar" + heberge_seances: + type: character(1) + default: "'1'::bpchar" + heberge_urgences: + type: character(1) + default: "'1'::bpchar" + nb_box_ambulatoires_ouverts: + type: numeric(5,0) + default: "0" + nb_box_ambulatoires_theoriques: + type: numeric(5,0) + default: "0" + nb_box_seances_ouverts: + type: numeric(5,0) + default: "0" + nb_box_seances_theoriques: + type: numeric(5,0) + default: "0" + nb_lits_cp_ouverts: + type: numeric(5,0) + default: "0" + nb_lits_cp_theoriques: + type: numeric(5,0) + default: "0" + nb_lits_ouverts: + type: numeric(5,0) + default: "0" + nb_lits_theoriques: + type: numeric(5,0) + default: "0" + unite_medicale_id: + type: bigint + not_null: NOT NULL \ No newline at end of file diff --git a/db/schema2/tables/t_validation_parametre.yaml b/db/schema2/tables/t_validation_parametre.yaml new file mode 100644 index 0000000..1a777c3 --- /dev/null +++ b/db/schema2/tables/t_validation_parametre.yaml @@ -0,0 +1,30 @@ +columns: + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_validation_parametre'::regclass)" + parametre_code: + type: text + parametre_date: + type: date + default: now() + parametre_id: + type: bigint + default: "0" + parametre_texte: + type: text + parametre_valide: + type: text + default: "'0'::text" + table_id: + type: bigint + not_null: NOT NULL + default: "0" +constraints: + t_validation_parametre_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_validation_parametre_table_id: + column: table_id + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_vue_parametre.yaml b/db/schema2/tables/t_vue_parametre.yaml new file mode 100644 index 0000000..3a69be2 --- /dev/null +++ b/db/schema2/tables/t_vue_parametre.yaml @@ -0,0 +1,30 @@ +columns: + code: + type: text + data_code: + type: 'text[]' + data_description: + type: 'text[]' + data_entete: + type: 'text[]' + data_format: + type: 'text[]' + oid: + type: bigint + not_null: NOT NULL + default: "nextval('s_vue_parametre'::regclass)" + position_ratio: + type: character(15) + default: "'000000000000000'::character varying" + rang: + type: integer + texte: + type: text +constraints: + t_vue_parametre_pkey: + type: PRIMARY KEY + column: oid +indexes: + i_vue_parametre: + column: code + method: btree \ No newline at end of file diff --git a/db/schema2/tables/t_widget_user_parameter.yaml b/db/schema2/tables/t_widget_user_parameter.yaml new file mode 100644 index 0000000..402e2c2 --- /dev/null +++ b/db/schema2/tables/t_widget_user_parameter.yaml @@ -0,0 +1,34 @@ +columns: + dashboard_widget_id: + type: bigint + h: + type: numeric + include_series_id: + type: 'bigint[]' + max_cat: + type: bigint + default: "0" + oid: + type: text + not_null: NOT NULL + tab_id: + type: bigint + time_calc: + type: text + title: + type: text + username: + type: text + visible: + type: boolean + default: 'false' + w: + type: numeric + x: + type: numeric + y: + type: numeric +constraints: + _widget_user_parameter_pkey: + type: PRIMARY KEY + column: oid \ No newline at end of file diff --git a/db/schema2/views/v_actes_1.yaml b/db/schema2/views/v_actes_1.yaml new file mode 100644 index 0000000..6b09cc6 --- /dev/null +++ b/db/schema2/views/v_actes_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_actes_c.oid, + (t_actes_c.code || ' '::text) || t_actes_c.texte_court AS texte + FROM activite.t_actes_c + WHERE t_actes_c.nomenclature = 'CCAM'::text AND (t_actes_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'acte_h'::text)) + ORDER BY t_actes_c.code; \ No newline at end of file diff --git a/db/schema2/views/v_actes_2.yaml b/db/schema2/views/v_actes_2.yaml new file mode 100644 index 0000000..eae36f0 --- /dev/null +++ b/db/schema2/views/v_actes_2.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_actes_c.oid, + (t_actes_c.code || ' '::text) || t_actes_c.texte_court AS texte + FROM activite.t_actes_c + WHERE t_actes_c.nomenclature = 'NGAP'::text AND (t_actes_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'acte_h'::text)) + ORDER BY t_actes_c.code; \ No newline at end of file diff --git a/db/schema2/views/v_actes_3.yaml b/db/schema2/views/v_actes_3.yaml new file mode 100644 index 0000000..88e1d83 --- /dev/null +++ b/db/schema2/views/v_actes_3.yaml @@ -0,0 +1,73 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS sort, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'ACTE'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '1'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'ACTE'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + '2'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'ACTE'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + '2'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'ACTE'::text + UNION ALL + SELECT 'NOCCAM'::text AS oid, + 'CCAM'::character varying AS texte, + '1'::text AS level, + '9CCAM'::text AS sort, + '0'::character(1) AS is_cti + UNION ALL + SELECT 'NONGAP'::text AS oid, + 'NGAP'::character varying AS texte, + '1'::text AS level, + '9NGAP'::text AS sort, + '0'::character(1) AS is_cti + UNION ALL + SELECT 'AC'::text || t_actes_c.oid::text AS oid, + (t_actes_c.code || ' '::text) || t_actes_c.texte_court AS texte, + '2'::text AS level, + ('9'::text || t_actes_c.nomenclature) || t_actes_c.code AS sort, + '0'::character(1) AS is_cti + FROM activite.t_actes_c + WHERE (t_actes_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'acte_h'::text)) + ORDER BY 4; \ No newline at end of file diff --git a/db/schema2/views/v_activites_1.yaml b/db/schema2/views/v_activites_1.yaml new file mode 100644 index 0000000..3fabf67 --- /dev/null +++ b/db/schema2/views/v_activites_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_activites.oid, + (t_activites.code || ' '::text) || t_activites.texte_court AS texte + FROM activite.t_activites + WHERE (t_activites.oid IN ( SELECT DISTINCT t_lieux_c.activite_id + FROM activite.t_lieux_c + ORDER BY t_lieux_c.activite_id)) + ORDER BY t_activites.texte_court; \ No newline at end of file diff --git a/db/schema2/views/v_activites_2.yaml b/db/schema2/views/v_activites_2.yaml new file mode 100644 index 0000000..84cb0f0 --- /dev/null +++ b/db/schema2/views/v_activites_2.yaml @@ -0,0 +1,61 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS sort, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'ACTIVITE'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '1'::text AS level, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'ACTIVITE'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + '2'::text AS level, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'ACTIVITE'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + '2'::text AS level, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'ACTIVITE'::text + UNION ALL + SELECT 'AC'::text || t_activites.oid::text AS oid, + (t_activites.code || ' '::text) || t_activites.texte_court AS texte, + '1'::text AS level, + '9'::text || t_activites.code AS sort, + '0'::character(1) AS is_cti + FROM activite.t_activites + WHERE (t_activites.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'activite'::text)) + ORDER BY 4; \ No newline at end of file diff --git a/db/schema2/views/v_ages_1.yaml b/db/schema2/views/v_ages_1.yaml new file mode 100644 index 0000000..b672f18 --- /dev/null +++ b/db/schema2/views/v_ages_1.yaml @@ -0,0 +1,16 @@ +src: | + SELECT t_ages_c.oid AS age_id, + t_ages_c.code AS age_code, + t_ages_c.texte AS age_texte, + t_ages_c.section_id AS age_section_id, + t_ages_c.section_code AS age_section_code, + t_ages_c.section_texte AS age_section_texte + FROM activite.t_ages_c + UNION + SELECT (-1) AS age_id, + '999'::text AS age_code, + 'Non disponible'::text AS age_texte, + NULL::bigint[] AS age_section_id, + NULL::text[] AS age_section_code, + NULL::text[] AS age_section_texte + ORDER BY 1; \ No newline at end of file diff --git a/db/schema2/views/v_ages_2.yaml b/db/schema2/views/v_ages_2.yaml new file mode 100644 index 0000000..5f0fd9d --- /dev/null +++ b/db/schema2/views/v_ages_2.yaml @@ -0,0 +1,77 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + ''::text AS code, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS tri, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'AGE'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + ''::text AS code, + '1'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'AGE'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + ''::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'AGE'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + ''::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'AGE'::text + UNION ALL + SELECT '-8'::text AS oid, + 'Choix d''un age'::character varying AS texte, + 'A'::text AS code, + '1'::text AS level, + '9'::text || chr(1) AS tri, + '0'::character(1) AS is_cti + UNION ALL + SELECT 'AG'::text || t_ages.oid::text AS oid, + t_ages.texte, + t_ages.code, + '2'::text AS level, + '9'::text || t_ages.code AS tri, + '0'::character(1) AS is_cti + FROM base.t_ages + UNION ALL + SELECT 'AG-1'::text AS oid, + 'Non disponible'::character varying AS texte, + '999'::text AS code, + '2'::text AS level, + '9999'::text AS tri, + '0'::character(1) AS is_cti + ORDER BY 5; \ No newline at end of file diff --git a/db/schema2/views/v_alias_periode_1.yaml b/db/schema2/views/v_alias_periode_1.yaml new file mode 100644 index 0000000..cf8f126 --- /dev/null +++ b/db/schema2/views/v_alias_periode_1.yaml @@ -0,0 +1,743 @@ +src: | + WITH ctl_dates AS ( + SELECT now.now, + to_char(now.now::timestamp with time zone, 'DD/MM/YYYY'::text) AS now_l, + (now.now - '6 days'::interval)::date AS now_7, + date_trunc('YEAR'::text, now.now::timestamp with time zone)::date AS first_day_current_year, + CASE now.now + WHEN (date_trunc('MONTH'::text, now.now::timestamp with time zone)::date + '1 mon -1 days'::interval)::date THEN now.now + ELSE (date_trunc('MONTH'::text, now.now::timestamp with time zone)::date - '1 day'::interval)::date + END AS last_day_of_last_month, + CASE to_char(now.now::timestamp with time zone, 'ID'::text) + WHEN '7'::text THEN now.now::timestamp without time zone + ELSE to_date(to_char(now.now::timestamp with time zone, 'IYYYIW'::text) || '7'::text, 'IYYYIWID'::text) - '7 days'::interval + END::date AS last_day_of_last_week, + to_date(to_char(now.now - (( + CASE to_char(now.now::timestamp with time zone, 'ID'::text) + WHEN '7'::text THEN '-1'::text + ELSE '0'::text + END || ' week'::text)::interval), 'IYYYIW'::text) || '7'::text, 'IYYYIWID'::text) AS last_day_of_week_0, + to_char(to_date(to_char(now.now - (( + CASE to_char(now.now::timestamp with time zone, 'ID'::text) + WHEN '7'::text THEN '-1'::text + ELSE '0'::text + END || ' week'::text)::interval), 'IYYYIW'::text) || '7'::text, 'IYYYIWID'::text)::timestamp with time zone, 'DD/MM/YYYY'::text) AS last_day_of_weekn_0, + to_date(to_char(now.now - (( + CASE to_char(now.now::timestamp with time zone, 'ID'::text) + WHEN '7'::text THEN '0'::text + ELSE '1'::text + END || ' week'::text)::interval), 'IYYYIW'::text) || '7'::text, 'IYYYIWID'::text) AS last_day_of_week_1, + to_char(to_date(to_char(now.now - (( + CASE to_char(now.now::timestamp with time zone, 'ID'::text) + WHEN '7'::text THEN '0'::text + ELSE '1'::text + END || ' week'::text)::interval), 'IYYYIW'::text) || '7'::text, 'IYYYIWID'::text)::timestamp with time zone, 'DD/MM/YYYY'::text) AS last_day_of_weekn_1, + to_date(to_char(now.now - (( + CASE to_char(now.now::timestamp with time zone, 'ID'::text) + WHEN '7'::text THEN '1'::text + ELSE '2'::text + END || ' week'::text)::interval), 'IYYYIW'::text) || '7'::text, 'IYYYIWID'::text) AS last_day_of_week_2, + to_char(to_date(to_char(now.now - (( + CASE to_char(now.now::timestamp with time zone, 'ID'::text) + WHEN '7'::text THEN '1'::text + ELSE '2'::text + END || ' week'::text)::interval), 'IYYYIW'::text) || '7'::text, 'IYYYIWID'::text)::timestamp with time zone, 'DD/MM/YYYY'::text) AS last_day_of_weekn_2, + to_date(to_char(now.now - (( + CASE to_char(now.now::timestamp with time zone, 'ID'::text) + WHEN '7'::text THEN '2'::text + ELSE '3'::text + END || ' week'::text)::interval), 'IYYYIW'::text) || '7'::text, 'IYYYIWID'::text) AS last_day_of_week_3, + to_char(to_date(to_char(now.now - (( + CASE to_char(now.now::timestamp with time zone, 'ID'::text) + WHEN '7'::text THEN '2'::text + ELSE '3'::text + END || ' week'::text)::interval), 'IYYYIW'::text) || '7'::text, 'IYYYIWID'::text)::timestamp with time zone, 'DD/MM/YYYY'::text) AS last_day_of_weekn_3, + to_date(to_char(now.now - (( + CASE to_char(now.now::timestamp with time zone, 'ID'::text) + WHEN '7'::text THEN '3'::text + ELSE '4'::text + END || ' week'::text)::interval), 'IYYYIW'::text) || '7'::text, 'IYYYIWID'::text) AS last_day_of_week_4, + to_char(to_date(to_char(now.now - (( + CASE to_char(now.now::timestamp with time zone, 'ID'::text) + WHEN '7'::text THEN '3'::text + ELSE '4'::text + END || ' week'::text)::interval), 'IYYYIW'::text) || '7'::text, 'IYYYIWID'::text)::timestamp with time zone, 'DD/MM/YYYY'::text) AS last_day_of_weekn_4, + CASE + WHEN to_char(now.now::timestamp with time zone, 'DD'::text) = base.cti_last_day(now.now)::text THEN now.now + WHEN to_char(now.now::timestamp with time zone, 'DD'::text) >= 20::text THEN to_date(to_char(now.now::timestamp with time zone, 'YYYYMM'::text) || '20'::text, 'YYYYMMDD'::text) + WHEN to_char(now.now::timestamp with time zone, 'DD'::text) >= 10::text THEN to_date(to_char(now.now::timestamp with time zone, 'YYYYMM'::text) || '10'::text, 'YYYYMMDD'::text) + ELSE base.cti_last_day((now.now - '1 mon'::interval)::date) + END AS decade_last, + base.cti_last_day(now.now) AS decade_0, + to_date(to_char(now.now::timestamp with time zone, 'YYYYMM'::text) || '20'::text, 'YYYYMMDD'::text) AS decade_1, + to_date(to_char(now.now::timestamp with time zone, 'YYYYMM'::text) || '10'::text, 'YYYYMMDD'::text) AS decade_2, + base.cti_last_day((now.now - '1 mon'::interval)::date) AS decade_3, + to_date(to_char(now.now - '1 mon'::interval, 'YYYYMM'::text) || '20'::text, 'YYYYMMDD'::text) AS decade_4, + to_date(to_char(now.now - '1 mon'::interval, 'YYYYMM'::text) || '10'::text, 'YYYYMMDD'::text) AS decade_5, + base.cti_last_day((now.now - '2 mons'::interval)::date) AS decade_6, + to_char(base.cti_last_day(now.now)::timestamp with time zone, 'DD/MM/YYYY'::text) AS decade_0_l, + to_char(to_date(to_char(now.now::timestamp with time zone, 'YYYYMM'::text) || '20'::text, 'YYYYMMDD'::text)::timestamp with time zone, 'DD/MM/YYYY'::text) AS decade_1_l, + to_char(to_date(to_char(now.now::timestamp with time zone, 'YYYYMM'::text) || '10'::text, 'YYYYMMDD'::text)::timestamp with time zone, 'DD/MM/YYYY'::text) AS decade_2_l, + to_char(base.cti_last_day((now.now - '1 mon'::interval)::date)::timestamp with time zone, 'DD/MM/YYYY'::text) AS decade_3_l, + to_char(to_date(to_char(now.now - '1 mon'::interval, 'YYYYMM'::text) || '20'::text, 'YYYYMMDD'::text)::timestamp with time zone, 'DD/MM/YYYY'::text) AS decade_4_l, + to_char(to_date(to_char(now.now - '1 mon'::interval, 'YYYYMM'::text) || '10'::text, 'YYYYMMDD'::text)::timestamp with time zone, 'DD/MM/YYYY'::text) AS decade_5_l, + to_char(base.cti_last_day((now.now - '2 mons'::interval)::date)::timestamp with time zone, 'DD/MM/YYYY'::text) AS decade_6_l + FROM ( SELECT t_divers.valeur_date AS now + FROM activite.t_divers + WHERE t_divers.code = 'NOW'::text) now + ) + SELECT 1000 AS tri, + 1 AS lvl, + 'Cumul au dernier mois'::text AS txt, + 'CUM_LAST_MONTH'::text AS cod, + date(date_trunc('year'::text, ctl_dates.last_day_of_last_month::timestamp with time zone)) AS deb, + ctl_dates.last_day_of_last_month AS fin + FROM ctl_dates + UNION + SELECT 1001 AS tri, + 2 AS lvl, + 'Janvier à décembre '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'CURRENT_YEAR_DEC'::text AS cod, + ctl_dates.first_day_current_year AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '1201'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 1002 AS tri, + 2 AS lvl, + 'Janvier à novembre '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'CURRENT_YEAR_NOV'::text AS cod, + ctl_dates.first_day_current_year AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '1101'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 1003 AS tri, + 2 AS lvl, + 'Janvier à octobre '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'CURRENT_YEAR_OCT'::text AS cod, + ctl_dates.first_day_current_year AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '1001'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 1004 AS tri, + 2 AS lvl, + 'Janvier à septembre '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'CURRENT_YEAR_SEP'::text AS cod, + ctl_dates.first_day_current_year AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0901'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 1005 AS tri, + 2 AS lvl, + 'Janvier à août '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'CURRENT_YEAR_AUG'::text AS cod, + ctl_dates.first_day_current_year AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0801'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 1006 AS tri, + 2 AS lvl, + 'Janvier à juillet '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'CURRENT_YEAR_JUL'::text AS cod, + ctl_dates.first_day_current_year AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0701'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 1007 AS tri, + 2 AS lvl, + 'Janvier à juin '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'CURRENT_YEAR_JUN'::text AS cod, + ctl_dates.first_day_current_year AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0601'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 1008 AS tri, + 2 AS lvl, + 'Janvier à mai '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'CURRENT_YEAR_MAY'::text AS cod, + ctl_dates.first_day_current_year AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0501'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 1009 AS tri, + 2 AS lvl, + 'Janvier à avril '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'CURRENT_YEAR_APR'::text AS cod, + ctl_dates.first_day_current_year AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0401'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 1010 AS tri, + 2 AS lvl, + 'Janvier à mars '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'CURRENT_YEAR_MAR'::text AS cod, + ctl_dates.first_day_current_year AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0301'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 1011 AS tri, + 2 AS lvl, + 'Janvier à février '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'CURRENT_YEAR_FEB'::text AS cod, + ctl_dates.first_day_current_year AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0201'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 1012 AS tri, + 2 AS lvl, + 'Janvier à janvier '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'CURRENT_YEAR_JAN'::text AS cod, + ctl_dates.first_day_current_year AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0101'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 2000 AS tri, + 1 AS lvl, + 'Cumul à dernière décade'::text AS txt, + 'CUM_LAST_DECADE'::text AS cod, + date(date_trunc('year'::text, ctl_dates.decade_last::timestamp with time zone)) AS deb, + ctl_dates.decade_last AS fin + FROM ctl_dates + UNION + SELECT 2001 AS tri, + 2 AS lvl, + 'Cumul au '::text || ctl_dates.decade_0_l AS txt, + 'CUM_LAST_DECADE_0'::text AS cod, + date(date_trunc('year'::text, ctl_dates.decade_0::timestamp with time zone)) AS deb, + ctl_dates.decade_0 AS fin + FROM ctl_dates + UNION + SELECT 2002 AS tri, + 2 AS lvl, + 'Cumul au '::text || ctl_dates.decade_1_l AS txt, + 'CUM_LAST_DECADE_1'::text AS cod, + date(date_trunc('year'::text, ctl_dates.decade_1::timestamp with time zone)) AS deb, + ctl_dates.decade_1 AS fin + FROM ctl_dates + UNION + SELECT 2003 AS tri, + 2 AS lvl, + 'Cumul au '::text || ctl_dates.decade_2_l AS txt, + 'CUM_LAST_DECADE_2'::text AS cod, + date(date_trunc('year'::text, ctl_dates.decade_2::timestamp with time zone)) AS deb, + ctl_dates.decade_2 AS fin + FROM ctl_dates + UNION + SELECT 2004 AS tri, + 2 AS lvl, + 'Cumul au '::text || ctl_dates.decade_3_l AS txt, + 'CUM_LAST_DECADE_3'::text AS cod, + date(date_trunc('year'::text, ctl_dates.decade_3::timestamp with time zone)) AS deb, + ctl_dates.decade_3 AS fin + FROM ctl_dates + UNION + SELECT 2005 AS tri, + 2 AS lvl, + 'Cumul au '::text || ctl_dates.decade_4_l AS txt, + 'CUM_LAST_DECADE_4'::text AS cod, + date(date_trunc('year'::text, ctl_dates.decade_4::timestamp with time zone)) AS deb, + ctl_dates.decade_4 AS fin + FROM ctl_dates + UNION + SELECT 2006 AS tri, + 2 AS lvl, + 'Cumul au '::text || ctl_dates.decade_5_l AS txt, + 'CUM_LAST_DECADE_5'::text AS cod, + date(date_trunc('year'::text, ctl_dates.decade_5::timestamp with time zone)) AS deb, + ctl_dates.decade_5 AS fin + FROM ctl_dates + UNION + SELECT 2007 AS tri, + 2 AS lvl, + 'Cumul au '::text || ctl_dates.decade_6_l AS txt, + 'CUM_LAST_DECADE_6'::text AS cod, + date(date_trunc('year'::text, ctl_dates.decade_6::timestamp with time zone)) AS deb, + ctl_dates.decade_6 AS fin + FROM ctl_dates + UNION + SELECT 3000 AS tri, + 1 AS lvl, + 'Cumul à dernière semaine'::text AS txt, + 'CUM_LAST_WEEK'::text AS cod, + date(date_trunc('year'::text, ctl_dates.last_day_of_last_week::timestamp with time zone)) AS deb, + ctl_dates.last_day_of_last_week AS fin + FROM ctl_dates + UNION + SELECT 3001 AS tri, + 2 AS lvl, + 'Cumul au '::text || ctl_dates.last_day_of_weekn_0 AS txt, + 'CUM_LAST_MONTH_W0'::text AS cod, + date(date_trunc('year'::text, ctl_dates.last_day_of_week_0::timestamp with time zone)) AS deb, + ctl_dates.last_day_of_week_0 AS fin + FROM ctl_dates + UNION + SELECT 3002 AS tri, + 2 AS lvl, + 'Cumul au '::text || ctl_dates.last_day_of_weekn_1 AS txt, + 'CUM_LAST_MONTH_W1'::text AS cod, + date(date_trunc('year'::text, ctl_dates.last_day_of_week_1::timestamp with time zone)) AS deb, + ctl_dates.last_day_of_week_1 AS fin + FROM ctl_dates + UNION + SELECT 3003 AS tri, + 2 AS lvl, + 'Cumul au '::text || ctl_dates.last_day_of_weekn_2 AS txt, + 'CUM_LAST_MONTH_W2'::text AS cod, + date(date_trunc('year'::text, ctl_dates.last_day_of_week_2::timestamp with time zone)) AS deb, + ctl_dates.last_day_of_week_2 AS fin + FROM ctl_dates + UNION + SELECT 3004 AS tri, + 2 AS lvl, + 'Cumul au '::text || ctl_dates.last_day_of_weekn_3 AS txt, + 'CUM_LAST_MONTH_W3'::text AS cod, + date(date_trunc('year'::text, ctl_dates.last_day_of_week_3::timestamp with time zone)) AS deb, + ctl_dates.last_day_of_week_3 AS fin + FROM ctl_dates + UNION + SELECT 3005 AS tri, + 2 AS lvl, + 'Cumul au '::text || ctl_dates.last_day_of_weekn_4 AS txt, + 'CUM_LAST_MONTH_W4'::text AS cod, + date(date_trunc('year'::text, ctl_dates.last_day_of_week_4::timestamp with time zone)) AS deb, + ctl_dates.last_day_of_week_4 AS fin + FROM ctl_dates + UNION + SELECT 4000 AS tri, + 1 AS lvl, + 'Cumul au '::text || ctl_dates.now_l AS txt, + 'CUM_NOW'::text AS cod, + ctl_dates.first_day_current_year AS deb, + ctl_dates.now AS fin + FROM ctl_dates + UNION + SELECT 4500 AS tri, + 1 AS lvl, + '12 derniers mois glissants'::text AS txt, + 'CUM_LAST_12_MONTH'::text AS cod, + date_trunc('MONTH'::text, ctl_dates.last_day_of_last_month - '11 mons'::interval)::date AS deb, + ctl_dates.last_day_of_last_month AS fin + FROM ctl_dates + UNION + SELECT 4501 AS tri, + 2 AS lvl, + (base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '11 mons'::interval), 'Month'::text)) || ' à '::text) || base.cti_to_french(to_char(ctl_dates.now::timestamp with time zone, 'Month YYYY'::text)) AS txt, + 'CUM_LAST_12_MONTH_0'::text AS cod, + date_trunc('MONTH'::text, ctl_dates.now - '11 mons'::interval)::date AS deb, + base.cti_last_day(ctl_dates.now) AS fin + FROM ctl_dates + UNION + SELECT 4502 AS tri, + 2 AS lvl, + (base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '1 year'::interval), 'Month'::text)) || ' à '::text) || base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '1 mon'::interval), 'Month YYYY'::text)) AS txt, + 'CUM_LAST_12_MONTH_1'::text AS cod, + date_trunc('MONTH'::text, ctl_dates.now - '1 year'::interval)::date AS deb, + base.cti_last_day(date_trunc('MONTH'::text, ctl_dates.now - '1 mon'::interval)::date) AS fin + FROM ctl_dates + UNION + SELECT 4503 AS tri, + 2 AS lvl, + (base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '1 year 1 mon'::interval), 'Month'::text)) || ' à '::text) || base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '2 mons'::interval), 'Month YYYY'::text)) AS txt, + 'CUM_LAST_12_MONTH_2'::text AS cod, + date_trunc('MONTH'::text, ctl_dates.now - '1 year 1 mon'::interval)::date AS deb, + base.cti_last_day(date_trunc('MONTH'::text, ctl_dates.now - '2 mons'::interval)::date) AS fin + FROM ctl_dates + UNION + SELECT 4504 AS tri, + 2 AS lvl, + (base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '1 year 2 mons'::interval), 'Month'::text)) || ' à '::text) || base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '3 mons'::interval), 'Month YYYY'::text)) AS txt, + 'CUM_LAST_12_MONTH_3'::text AS cod, + date_trunc('MONTH'::text, ctl_dates.now - '1 year 2 mons'::interval)::date AS deb, + base.cti_last_day(date_trunc('MONTH'::text, ctl_dates.now - '3 mons'::interval)::date) AS fin + FROM ctl_dates + UNION + SELECT 4505 AS tri, + 2 AS lvl, + (base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '1 year 3 mons'::interval), 'Month'::text)) || ' à '::text) || base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '4 mons'::interval), 'Month YYYY'::text)) AS txt, + 'CUM_LAST_12_MONTH_4'::text AS cod, + date_trunc('MONTH'::text, ctl_dates.now - '1 year 3 mons'::interval)::date AS deb, + base.cti_last_day(date_trunc('MONTH'::text, ctl_dates.now - '4 mons'::interval)::date) AS fin + FROM ctl_dates + UNION + SELECT 4506 AS tri, + 2 AS lvl, + (base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '1 year 4 mons'::interval), 'Month'::text)) || ' à '::text) || base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '5 mons'::interval), 'Month YYYY'::text)) AS txt, + 'CUM_LAST_12_MONTH_5'::text AS cod, + date_trunc('MONTH'::text, ctl_dates.now - '1 year 4 mons'::interval)::date AS deb, + base.cti_last_day(date_trunc('MONTH'::text, ctl_dates.now - '5 mons'::interval)::date) AS fin + FROM ctl_dates + UNION + SELECT 4507 AS tri, + 2 AS lvl, + (base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '1 year 5 mons'::interval), 'Month'::text)) || ' à '::text) || base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '6 mons'::interval), 'Month YYYY'::text)) AS txt, + 'CUM_LAST_12_MONTH_6'::text AS cod, + date_trunc('MONTH'::text, ctl_dates.now - '1 year 5 mons'::interval)::date AS deb, + base.cti_last_day(date_trunc('MONTH'::text, ctl_dates.now - '6 mons'::interval)::date) AS fin + FROM ctl_dates + UNION + SELECT 4508 AS tri, + 2 AS lvl, + (base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '1 year 6 mons'::interval), 'Month'::text)) || ' à '::text) || base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '7 mons'::interval), 'Month YYYY'::text)) AS txt, + 'CUM_LAST_12_MONTH_7'::text AS cod, + date_trunc('MONTH'::text, ctl_dates.now - '1 year 6 mons'::interval)::date AS deb, + base.cti_last_day(date_trunc('MONTH'::text, ctl_dates.now - '7 mons'::interval)::date) AS fin + FROM ctl_dates + UNION + SELECT 4509 AS tri, + 2 AS lvl, + (base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '1 year 7 mons'::interval), 'Month'::text)) || ' à '::text) || base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '8 mons'::interval), 'Month YYYY'::text)) AS txt, + 'CUM_LAST_12_MONTH_8'::text AS cod, + date_trunc('MONTH'::text, ctl_dates.now - '1 year 7 mons'::interval)::date AS deb, + base.cti_last_day(date_trunc('MONTH'::text, ctl_dates.now - '8 mons'::interval)::date) AS fin + FROM ctl_dates + UNION + SELECT 4510 AS tri, + 2 AS lvl, + (base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '1 year 8 mons'::interval), 'Month'::text)) || ' à '::text) || base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '9 mons'::interval), 'Month YYYY'::text)) AS txt, + 'CUM_LAST_12_MONTH_9'::text AS cod, + date_trunc('MONTH'::text, ctl_dates.now - '1 year 8 mons'::interval)::date AS deb, + base.cti_last_day(date_trunc('MONTH'::text, ctl_dates.now - '9 mons'::interval)::date) AS fin + FROM ctl_dates + UNION + SELECT 4511 AS tri, + 2 AS lvl, + (base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '1 year 9 mons'::interval), 'Month'::text)) || ' à '::text) || base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '10 mons'::interval), 'Month YYYY'::text)) AS txt, + 'CUM_LAST_12_MONTH_10'::text AS cod, + date_trunc('MONTH'::text, ctl_dates.now - '1 year 9 mons'::interval)::date AS deb, + base.cti_last_day(date_trunc('MONTH'::text, ctl_dates.now - '10 mons'::interval)::date) AS fin + FROM ctl_dates + UNION + SELECT 4512 AS tri, + 2 AS lvl, + (base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '1 year 10 mons'::interval), 'Month'::text)) || ' à '::text) || base.cti_to_french(to_char(date_trunc('MONTH'::text, ctl_dates.now - '11 mons'::interval), 'Month YYYY'::text)) AS txt, + 'CUM_LAST_12_MONTH_11'::text AS cod, + date_trunc('MONTH'::text, ctl_dates.now - '1 year 10 mons'::interval)::date AS deb, + base.cti_last_day(date_trunc('MONTH'::text, ctl_dates.now - '11 mons'::interval)::date) AS fin + FROM ctl_dates + UNION + SELECT 5000 AS tri, + 1 AS lvl, + '7 derniers jours'::text AS txt, + 'LAST_7_DAYS'::text AS cod, + ctl_dates.now_7 AS deb, + ctl_dates.now AS fin + FROM ctl_dates + UNION + SELECT 7000 AS tri, + 1 AS lvl, + 'Cumul année précédente'::text AS txt, + 'LAST_YEAR'::text AS cod, + (ctl_dates.first_day_current_year - '1 year'::interval)::date AS deb, + (base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '1201'::text)::date) - '1 year'::interval)::date AS fin + FROM ctl_dates + UNION + SELECT 7001 AS tri, + 2 AS lvl, + 'Janvier à décembre '::text || to_char(ctl_dates.first_day_current_year - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_DEC'::text AS cod, + (ctl_dates.first_day_current_year - '1 year'::interval)::date AS deb, + (base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '1201'::text)::date) - '1 year'::interval)::date AS fin + FROM ctl_dates + UNION + SELECT 7002 AS tri, + 2 AS lvl, + 'Janvier à novembre '::text || to_char(ctl_dates.first_day_current_year - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_NOV'::text AS cod, + (ctl_dates.first_day_current_year - '1 year'::interval)::date AS deb, + (base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '1101'::text)::date) - '1 year'::interval)::date AS fin + FROM ctl_dates + UNION + SELECT 7003 AS tri, + 2 AS lvl, + 'Janvier à octobre '::text || to_char(ctl_dates.first_day_current_year - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_OCT'::text AS cod, + (ctl_dates.first_day_current_year - '1 year'::interval)::date AS deb, + (base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '1001'::text)::date) - '1 year'::interval)::date AS fin + FROM ctl_dates + UNION + SELECT 7004 AS tri, + 2 AS lvl, + 'Janvier à septembre '::text || to_char(ctl_dates.first_day_current_year - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_SEP'::text AS cod, + (ctl_dates.first_day_current_year - '1 year'::interval)::date AS deb, + (base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0901'::text)::date) - '1 year'::interval)::date AS fin + FROM ctl_dates + UNION + SELECT 7005 AS tri, + 2 AS lvl, + 'Janvier à août '::text || to_char(ctl_dates.first_day_current_year - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_AUG'::text AS cod, + (ctl_dates.first_day_current_year - '1 year'::interval)::date AS deb, + (base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0801'::text)::date) - '1 year'::interval)::date AS fin + FROM ctl_dates + UNION + SELECT 7006 AS tri, + 2 AS lvl, + 'Janvier à juillet '::text || to_char(ctl_dates.first_day_current_year - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_JUL'::text AS cod, + (ctl_dates.first_day_current_year - '1 year'::interval)::date AS deb, + (base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0701'::text)::date) - '1 year'::interval)::date AS fin + FROM ctl_dates + UNION + SELECT 7007 AS tri, + 2 AS lvl, + 'Janvier à juin '::text || to_char(ctl_dates.first_day_current_year - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_JUN'::text AS cod, + (ctl_dates.first_day_current_year - '1 year'::interval)::date AS deb, + (base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0601'::text)::date) - '1 year'::interval)::date AS fin + FROM ctl_dates + UNION + SELECT 7008 AS tri, + 2 AS lvl, + 'Janvier à mai '::text || to_char(ctl_dates.first_day_current_year - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_MAY'::text AS cod, + (ctl_dates.first_day_current_year - '1 year'::interval)::date AS deb, + (base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0501'::text)::date) - '1 year'::interval)::date AS fin + FROM ctl_dates + UNION + SELECT 7009 AS tri, + 2 AS lvl, + 'Janvier à avril '::text || to_char(ctl_dates.first_day_current_year - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_APR'::text AS cod, + (ctl_dates.first_day_current_year - '1 year'::interval)::date AS deb, + (base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0401'::text)::date) - '1 year'::interval)::date AS fin + FROM ctl_dates + UNION + SELECT 7010 AS tri, + 2 AS lvl, + 'Janvier à mars '::text || to_char(ctl_dates.first_day_current_year - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_MAR'::text AS cod, + (ctl_dates.first_day_current_year - '1 year'::interval)::date AS deb, + (base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0301'::text)::date) - '1 year'::interval)::date AS fin + FROM ctl_dates + UNION + SELECT 7011 AS tri, + 2 AS lvl, + 'Janvier à février '::text || to_char(ctl_dates.first_day_current_year - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_FEB'::text AS cod, + (ctl_dates.first_day_current_year - '1 year'::interval)::date AS deb, + (base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0201'::text)::date) - '1 year'::interval)::date AS fin + FROM ctl_dates + UNION + SELECT 7012 AS tri, + 2 AS lvl, + 'Janvier à janvier '::text || to_char(ctl_dates.first_day_current_year - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_JAN'::text AS cod, + (ctl_dates.first_day_current_year - '1 year'::interval)::date AS deb, + (base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0101'::text)::date) - '1 year'::interval)::date AS fin + FROM ctl_dates + UNION + SELECT 8000 AS tri, + 1 AS lvl, + 'Dernier semestre'::text AS txt, + 'LAST_HALF'::text AS cod, + CASE + WHEN to_char(ctl_dates.now::timestamp with time zone, 'MM'::text)::integer >= 7 THEN ctl_dates.first_day_current_year + ELSE (to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) || '0701'::text)::date + END AS deb, + CASE + WHEN to_char(ctl_dates.now::timestamp with time zone, 'MM'::text)::integer >= 7 THEN (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0630'::text)::date + ELSE (to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) || '1231'::text)::date + END AS fin + FROM ctl_dates + UNION + SELECT 8001 AS tri, + 2 AS lvl, + '1ème semestre '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'HALF_1'::text AS cod, + ctl_dates.first_day_current_year AS deb, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0630'::text)::date AS fin + FROM ctl_dates + WHERE to_char(ctl_dates.now::timestamp with time zone, 'MM'::text)::integer >= 7 + UNION + SELECT 8002 AS tri, + 2 AS lvl, + '2ème semestre '::text || to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_HALF_2'::text AS cod, + (to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) || '0701'::text)::date AS deb, + (to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) || '1231'::text)::date AS fin + FROM ctl_dates + UNION + SELECT 8003 AS tri, + 2 AS lvl, + '1er semestre '::text || to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_HALF_1'::text AS cod, + (to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) || '0101'::text)::date AS deb, + (to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) || '0630'::text)::date AS fin + FROM ctl_dates + UNION + SELECT 9000 AS tri, + 1 AS lvl, + 'Dernier trimestre'::text AS txt, + 'LAST_QUARTER'::text AS cod, + CASE + WHEN to_char(ctl_dates.now::timestamp with time zone, 'MM'::text)::integer >= 10 THEN (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0701'::text)::date + WHEN to_char(ctl_dates.now::timestamp with time zone, 'MM'::text)::integer >= 7 THEN (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0401'::text)::date + ELSE ctl_dates.first_day_current_year + END AS deb, + CASE + WHEN to_char(ctl_dates.now::timestamp with time zone, 'MM'::text)::integer >= 10 THEN (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0930'::text)::date + WHEN to_char(ctl_dates.now::timestamp with time zone, 'MM'::text)::integer >= 7 THEN (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0630'::text)::date + ELSE (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0331'::text)::date + END AS fin + FROM ctl_dates + UNION + SELECT 9002 AS tri, + 2 AS lvl, + '3ème trimestre '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'QUARTER_3'::text AS cod, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0701'::text)::date AS deb, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0930'::text)::date AS fin + FROM ctl_dates + UNION + SELECT 9003 AS tri, + 2 AS lvl, + '2ème trimestre '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'QUARTER_2'::text AS cod, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0401'::text)::date AS deb, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0630'::text)::date AS fin + FROM ctl_dates + UNION + SELECT 9004 AS tri, + 2 AS lvl, + '1er trimestre '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'QUARTER_1'::text AS cod, + ctl_dates.first_day_current_year AS deb, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0331'::text)::date AS fin + FROM ctl_dates + UNION + SELECT 9011 AS tri, + 2 AS lvl, + '4ème trimestre '::text || to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_QUARTER_4'::text AS cod, + (to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) || '1001'::text)::date AS deb, + (to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) || '1231'::text)::date AS fin + FROM ctl_dates + UNION + SELECT 9012 AS tri, + 2 AS lvl, + '3ème trimestre '::text || to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_QUARTER_3'::text AS cod, + (to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) || '0701'::text)::date AS deb, + (to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) || '0930'::text)::date AS fin + FROM ctl_dates + UNION + SELECT 9013 AS tri, + 2 AS lvl, + '2ème trimestre '::text || to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_QUARTER_2'::text AS cod, + (to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) || '0401'::text)::date AS deb, + (to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) || '0630'::text)::date AS fin + FROM ctl_dates + UNION + SELECT 9014 AS tri, + 2 AS lvl, + '1er trimestre '::text || to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) AS txt, + 'LAST_YEAR_QUARTER_1'::text AS cod, + (to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) || '0101'::text)::date AS deb, + (to_char(ctl_dates.now - '1 year'::interval, 'YYYY'::text) || '0331'::text)::date AS fin + FROM ctl_dates + UNION + SELECT 10000 AS tri, + 1 AS lvl, + 'Dernier mois'::text AS txt, + 'LAST_MONTH'::text AS cod, + date_trunc('MONTH'::text, ctl_dates.last_day_of_last_month::timestamp with time zone)::date AS deb, + ctl_dates.last_day_of_last_month AS fin + FROM ctl_dates + UNION + SELECT 10001 AS tri, + 2 AS lvl, + 'Décembre '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'MONTH_DEC'::text AS cod, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '1201'::text)::date AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '1201'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 10002 AS tri, + 2 AS lvl, + 'Novembre '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'MONTH_NOV'::text AS cod, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '1101'::text)::date AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '1101'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 10003 AS tri, + 2 AS lvl, + 'Octobre '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'MONTH_OCT'::text AS cod, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '1001'::text)::date AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '1001'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 10004 AS tri, + 2 AS lvl, + 'Septembre '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'MONTH_SEP'::text AS cod, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0901'::text)::date AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0901'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 10005 AS tri, + 2 AS lvl, + 'Août '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'MONTH_AUG'::text AS cod, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0801'::text)::date AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0801'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 10006 AS tri, + 2 AS lvl, + 'Juillet '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'MONTH_JUL'::text AS cod, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0701'::text)::date AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0701'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 10007 AS tri, + 2 AS lvl, + 'Juin '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'MONTH_JUN'::text AS cod, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0601'::text)::date AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0601'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 10008 AS tri, + 2 AS lvl, + 'Mai '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'MONTH_MAY'::text AS cod, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0501'::text)::date AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0501'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 10009 AS tri, + 2 AS lvl, + 'Avril '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'MONTH_APR'::text AS cod, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0401'::text)::date AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0401'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 10010 AS tri, + 2 AS lvl, + 'Mars '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'MONTH_MAR'::text AS cod, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0301'::text)::date AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0301'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 10011 AS tri, + 2 AS lvl, + 'Février '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'MONTH_FEB'::text AS cod, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0201'::text)::date AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0201'::text)::date) AS fin + FROM ctl_dates + UNION + SELECT 10012 AS tri, + 2 AS lvl, + 'Janvier '::text || to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) AS txt, + 'MONTH_JAN'::text AS cod, + (to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0101'::text)::date AS deb, + base.cti_last_day((to_char(ctl_dates.now::timestamp with time zone, 'YYYY'::text) || '0101'::text)::date) AS fin + FROM ctl_dates + ORDER BY 1; \ No newline at end of file diff --git a/db/schema2/views/v_bloc_occupation_1.yaml b/db/schema2/views/v_bloc_occupation_1.yaml new file mode 100644 index 0000000..e3744f3 --- /dev/null +++ b/db/schema2/views/v_bloc_occupation_1.yaml @@ -0,0 +1,66 @@ +src: | + SELECT p_bloc_occupation.finess_id, + p_bloc_occupation.code_original, + p_bloc_occupation.date, + to_char(p_bloc_occupation.date::timestamp with time zone, 'YYYYMMDD'::text)::bigint AS date_id, + p_bloc_occupation.date::text AS date_code, + p_calendrier.texte AS date_texte, + p_calendrier.mois AS mois_id, + p_calendrier.mois::text AS mois_code, + (p_calendrier.mois_texte || ' '::text) || p_calendrier.iso_annee::text AS mois_texte, + p_bloc_occupation.date_programmation, + p_bloc_occupation.heure_debut_occupation, + p_bloc_occupation.heure_debut_remise_en_etat, + p_bloc_occupation.heure_entree_salle, + p_bloc_occupation.heure_fin_occupation, + p_bloc_occupation.heure_fin_remise_en_etat, + p_bloc_occupation.heure_sortie_salle, + p_bloc_occupation.medecin_chirurgien_id, + t_medecins_administratifs_c.adm_code AS medecin_chirurgien_adm_intervention_code, + t_medecins_administratifs_c.adm_nom AS medecin_chirurgien_adm_intervention_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_chirurgien_adm_intervention_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_chirurgien_adm_intervention_texte, + t_medecins_administratifs_c.section_id AS medecin_chirurgien_adm_intervention_section_id, + t_medecins_administratifs_c.section_code AS medecin_chirurgien_adm_intervention_section_code, + t_medecins_administratifs_c.section_texte AS medecin_chirurgien_adm_intervention_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_chirurgien_intervention_id, + t_medecins_administratifs_c.medecin_code AS medecin_chirurgien_intervention_code, + t_medecins_administratifs_c.nom AS medecin_chirurgien_intervention_nom, + t_medecins_administratifs_c.prenom AS medecin_chirurgien_intervention_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_chirurgien_intervention_texte, + t_medecins_administratifs_c.specialite_id AS medecin_chirurgien_intervention_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_chirurgien_intervention_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_chirurgien_intervention_specialite_texte, + p_bloc_occupation.motif_intervention_id, + t_bloc_motif_intervention.code AS motif_intervention_code, + t_bloc_motif_intervention.texte_court AS motif_intervention_texte, + t_bloc_motif_intervention.section_id AS motif_intervention_section_id, + t_bloc_motif_intervention.section_code AS motif_intervention_section_code, + t_bloc_motif_intervention.section_texte AS motif_intervention_section_texte, + p_bloc_occupation.no_sejour, + p_bloc_occupation.salle_id, + t_bloc_salle.code AS salle_code, + t_bloc_salle.texte_court AS salle_texte, + t_bloc_salle.section_id AS salle_section_id, + t_bloc_salle.section_code AS salle_section_code, + t_bloc_salle.section_texte AS salle_section_texte, + t_bloc_salle.bloc_id, + t_bloc.code AS bloc_code, + t_bloc.texte_court AS bloc_texte, + p_bloc_occupation.sejour_id, + p_bloc_occupation.type_programmation, + p_bloc_occupation.valide, + 1::numeric AS nb_intervention, + p_bloc_occupation.duree_disponible, + p_bloc_occupation.type_mouvement, + p_bloc_occupation.duree_debordement, + p_bloc_occupation.duree_occupation, + p_bloc_occupation.duree_remise_en_etat, + p_bloc_occupation.duree_salle, + p_bloc_occupation.duree_total + FROM activite.p_bloc_occupation + JOIN activite.t_bloc_salle ON p_bloc_occupation.salle_id = t_bloc_salle.oid + JOIN activite.t_bloc ON t_bloc_salle.bloc_id = t_bloc.oid + JOIN activite.t_bloc_motif_intervention ON p_bloc_occupation.motif_intervention_id = t_bloc_motif_intervention.oid + JOIN activite.t_medecins_administratifs_c ON p_bloc_occupation.medecin_chirurgien_id = t_medecins_administratifs_c.oid + JOIN base.p_calendrier ON p_bloc_occupation.date = p_calendrier.date; \ No newline at end of file diff --git a/db/schema2/views/v_budget_cle_1.yaml b/db/schema2/views/v_budget_cle_1.yaml new file mode 100644 index 0000000..f5048df --- /dev/null +++ b/db/schema2/views/v_budget_cle_1.yaml @@ -0,0 +1,58 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS tri, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'BUDGETCLE'::text AND v_listes_1.lvl <> '0'::text + UNION + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '1'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'BUDGETCLE'::text + UNION + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + (t_classes_sections.code || ' '::text) || t_classes_sections.texte AS texte, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'BUDGETCLE'::text + UNION + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'BUDGETCLE'::text + UNION + SELECT 'DT'::text || t_budget_cle.oid::text AS oid, + (t_budget_cle.code || ' '::text) || t_budget_cle.texte AS texte, + '1'::text AS level, + '6'::text || t_budget_cle.code AS tri, + '0'::character(1) AS is_cti + FROM activite.t_budget_cle + ORDER BY 4; \ No newline at end of file diff --git a/db/schema2/views/v_budget_cle_2.yaml b/db/schema2/views/v_budget_cle_2.yaml new file mode 100644 index 0000000..1ab4088 --- /dev/null +++ b/db/schema2/views/v_budget_cle_2.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_budget_cle.oid AS join_budget_cle_id, + t_budget_cle.code AS budget_cle_code, + t_budget_cle.texte AS budget_cle_texte, + t_budget_cle.section_id AS budget_cle_section_id, + t_budget_cle.section_code AS budget_cle_section_code, + t_budget_cle.section_texte AS budget_cle_section_texte + FROM activite.t_budget_cle; \ No newline at end of file diff --git a/db/schema2/views/v_budget_cle_budget_r_1.yaml b/db/schema2/views/v_budget_cle_budget_r_1.yaml new file mode 100644 index 0000000..bb3cd48 --- /dev/null +++ b/db/schema2/views/v_budget_cle_budget_r_1.yaml @@ -0,0 +1,16 @@ +src: | + SELECT 0::bigint AS finess_id, + t_budget_cle_budget.budget_id, + t_budget_cle_budget.date AS date_reference, + t_budget_cle_budget.budget_cle_id, + t_budget_cle.code AS budget_cle_code, + t_budget_cle.texte AS budget_cle_texte, + t_budget_cle.section_id AS budget_cle_section_id, + t_budget_cle.section_code AS budget_cle_section_code, + t_budget_cle.section_texte AS budget_cle_section_texte, + t_budget_cle_budget.indicateur_module, + t_budget_cle_budget.indicateur_id, + t_budget_cle_budget.budget, + 0::bigint as pole_id + FROM activite.t_budget_cle_budget + JOIN activite.t_budget_cle ON t_budget_cle_budget.budget_cle_id = t_budget_cle.oid; \ No newline at end of file diff --git a/db/schema2/views/v_budgets_saisis_1.yaml b/db/schema2/views/v_budgets_saisis_1.yaml new file mode 100644 index 0000000..c70eaa4 --- /dev/null +++ b/db/schema2/views/v_budgets_saisis_1.yaml @@ -0,0 +1,58 @@ +src: | + SELECT subview.budget_id, + base.cti_group_concat_without_sep(subview.xmldef) AS xmldef + FROM ( SELECT t_budgets_saisis.budget_id, + t_budgets_saisis.parent_code, + 1 AS level, + ((((((((((((((''::text AS xmldef + FROM activite.t_budgets_saisis + UNION ALL + SELECT t_budgets_saisis.budget_id, + t_budgets_saisis.parent_code, + 21 AS level, + (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((''::text + FROM activite.t_budgets_saisis + WHERE t_budgets_saisis.reference_nb_entrees_directes_total <> 0::numeric + UNION ALL + SELECT t_budgets_saisis.budget_id, + t_budgets_saisis.parent_code, + 22 AS level, + (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((''::text + FROM activite.t_budgets_saisis + WHERE t_budgets_saisis.reference_nb_sorties_directes_total <> 0::numeric + UNION ALL + SELECT t_budgets_saisis.budget_id, + t_budgets_saisis.parent_code, + 23 AS level, + (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((''::text + FROM activite.t_budgets_saisis + WHERE t_budgets_saisis.reference_nb_ambulatoires_total <> 0::numeric + UNION ALL + SELECT t_budgets_saisis.budget_id, + t_budgets_saisis.parent_code, + 24 AS level, + (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((''::text + FROM activite.t_budgets_saisis + WHERE t_budgets_saisis.reference_nb_externes_total <> 0::numeric + UNION ALL + SELECT t_budgets_saisis.budget_id, + t_budgets_saisis.parent_code, + 25 AS level, + (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((''::text + FROM activite.t_budgets_saisis + WHERE t_budgets_saisis.reference_nb_jours_js_non_inclus_total <> 0::numeric + UNION ALL + SELECT t_budgets_saisis.budget_id, + t_budgets_saisis.parent_code, + 26 AS level, + (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((''::text + FROM activite.t_budgets_saisis + WHERE t_budgets_saisis.reference_nb_seances_total <> 0::numeric + UNION ALL + SELECT t_budgets_saisis.budget_id, + t_budgets_saisis.parent_code, + 99 AS level, + ''::text AS text + FROM activite.t_budgets_saisis + ORDER BY 1, 2, 3) subview + GROUP BY subview.budget_id; \ No newline at end of file diff --git a/db/schema2/views/v_budgets_saisis_2.yaml b/db/schema2/views/v_budgets_saisis_2.yaml new file mode 100644 index 0000000..5f157aa --- /dev/null +++ b/db/schema2/views/v_budgets_saisis_2.yaml @@ -0,0 +1,53 @@ +src: | + SELECT t_budgets.oid, + t_budgets_saisis.parent_id, + CASE + WHEN t_budgets.dimension1 = 'UF'::text THEN t_unites_fonctionnelles.code + WHEN t_budgets.dimension1 = 'SER'::text THEN t_services_facturation.code + ELSE ''::text + END AS parent_code, + CASE + WHEN t_budgets.dimension1 = 'UF'::text THEN t_unites_fonctionnelles.texte + WHEN t_budgets.dimension1 = 'SER'::text THEN t_services_facturation.texte + ELSE ''::text + END AS parent_texte, + CASE + WHEN t_budgets.dimension1 = 'UF'::text THEN t_unites_fonctionnelles.section_id + WHEN t_budgets.dimension1 = 'SER'::text THEN t_services_facturation.section_id + ELSE NULL::bigint[] + END AS parent_section_id, + CASE + WHEN t_budgets.dimension1 = 'UF'::text THEN t_unites_fonctionnelles.section_code + WHEN t_budgets.dimension1 = 'SER'::text THEN t_services_facturation.section_code + ELSE NULL::text[] + END AS parent_section_code, + CASE + WHEN t_budgets.dimension1 = 'UF'::text THEN t_unites_fonctionnelles.section_texte + WHEN t_budgets.dimension1 = 'SER'::text THEN t_services_facturation.section_texte + ELSE NULL::text[] + END AS parent_section_texte, + COALESCE( + CASE + WHEN t_budgets.dimension1 = 'UF'::text THEN t_unites_fonctionnelles.finess_id + WHEN t_budgets.dimension1 = 'SER'::text THEN t_services_facturation.finess_id + ELSE NULL::bigint + END, 0::bigint) AS finess_id, + COALESCE(t_finess_c.code, ''::text) AS finess_code, + COALESCE(t_finess_c.texte, ''::text) AS finess_texte, + t_finess_c.section_id AS finess_section_id, + t_finess_c.section_code AS finess_section_code, + t_finess_c.section_texte AS finess_section_texte, + p_calendrier_mois.date_fin AS date, + t_budgets_saisis.budget_nb_entrees_directes_mois[date_part('month'::text, p_calendrier_mois.date_fin)] AS nb_entrees_directes, + t_budgets_saisis.budget_nb_sorties_directes_mois[date_part('month'::text, p_calendrier_mois.date_fin)] AS nb_sorties_directes, + t_budgets_saisis.budget_nb_ambulatoires_mois[date_part('month'::text, p_calendrier_mois.date_fin)] AS nb_ambulatoires, + t_budgets_saisis.budget_nb_externes_mois[date_part('month'::text, p_calendrier_mois.date_fin)] AS nb_externes, + t_budgets_saisis.budget_nb_jours_js_non_inclus_mois[date_part('month'::text, p_calendrier_mois.date_fin)] AS nb_jours_js_non_inclus, + t_budgets_saisis.budget_nb_seances_mois[date_part('month'::text, p_calendrier_mois.date_fin)] AS nb_seances + FROM activite.t_budgets + JOIN base.p_calendrier_mois ON p_calendrier_mois.date_fin >= t_budgets.date_debut AND p_calendrier_mois.date_fin <= t_budgets.date_fin + JOIN activite.t_budgets_saisis ON t_budgets_saisis.budget_id = t_budgets.oid + LEFT JOIN activite.t_unites_fonctionnelles ON t_budgets_saisis.parent_id = t_unites_fonctionnelles.oid AND t_budgets.dimension1 = 'UF'::text + LEFT JOIN activite.t_services_facturation ON t_budgets_saisis.parent_id = t_services_facturation.oid AND t_budgets.dimension1 = 'SER'::text + LEFT JOIN activite.t_finess_c ON t_finess_c.oid = COALESCE(t_unites_fonctionnelles.finess_id, t_services_facturation.finess_id) + ORDER BY t_budgets.oid, t_budgets_saisis.parent_code, t_budgets_saisis.parent_section_id; \ No newline at end of file diff --git a/db/schema2/views/v_calendrier_1.yaml b/db/schema2/views/v_calendrier_1.yaml new file mode 100644 index 0000000..e612c0b --- /dev/null +++ b/db/schema2/views/v_calendrier_1.yaml @@ -0,0 +1,43 @@ +src: | + SELECT min(p_calendrier.date) AS date, + p_calendrier_mois.annee::text AS texte, + min(p_calendrier.mois::text) AS alias, + min(p_calendrier.mois)::numeric(6,0) AS mois, + '1'::text AS level, + max(p_calendrier.mois)::numeric(6,0) AS tri1, + '1962-04-18'::date AS tri2 + FROM base.p_calendrier, + base.p_calendrier_mois, + ( SELECT to_number(substr(max(p_chiffrier.mois)::text, 1, 4) || '12'::text, '000000'::text) AS max_mois, + to_number(substr(min(p_chiffrier.mois)::text, 1, 4) || '01'::text, '000000'::text) AS min_mois + FROM activite.p_chiffrier) bornes + WHERE p_calendrier.mois >= bornes.min_mois AND p_calendrier.mois <= bornes.max_mois AND p_calendrier.mois = p_calendrier_mois.mois + GROUP BY p_calendrier_mois.annee + UNION ALL + SELECT p_calendrier.date, + p_calendrier_mois.texte, + p_calendrier.mois::text AS alias, + p_calendrier.mois, + '2'::text AS level, + p_calendrier.mois AS tri1, + '1962-04-18'::date AS tri2 + FROM base.p_calendrier, + base.p_calendrier_mois, + ( SELECT to_number(substr(max(p_chiffrier.mois)::text, 1, 4) || '12'::text, '000000'::text) AS max_mois, + to_number(substr(min(p_chiffrier.mois)::text, 1, 4) || '01'::text, '000000'::text) AS min_mois + FROM activite.p_chiffrier) bornes + WHERE p_calendrier.mois >= bornes.min_mois AND p_calendrier.mois <= bornes.max_mois AND p_calendrier.mois = p_calendrier_mois.mois AND substr(p_calendrier.date::text, 9, 2) = '01'::bpchar::text + UNION ALL + SELECT p_calendrier.date, + p_calendrier.texte, + ''::text AS alias, + p_calendrier.mois, + '3'::text AS level, + p_calendrier.mois AS tri1, + p_calendrier.date AS tri2 + FROM base.p_calendrier, + ( SELECT to_number(substr(max(p_chiffrier.mois)::text, 1, 4) || '12'::text, '000000'::text) AS max_mois, + to_number(substr(min(p_chiffrier.mois)::text, 1, 4) || '01'::text, '000000'::text) AS min_mois + FROM activite.p_chiffrier) bornes + WHERE p_calendrier.mois >= bornes.min_mois AND p_calendrier.mois <= bornes.max_mois + ORDER BY 6 DESC, 7, 5; \ No newline at end of file diff --git a/db/schema2/views/v_calendrier_2.yaml b/db/schema2/views/v_calendrier_2.yaml new file mode 100644 index 0000000..457b0f3 --- /dev/null +++ b/db/schema2/views/v_calendrier_2.yaml @@ -0,0 +1,43 @@ +src: | + SELECT max(p_calendrier.date) AS date, + p_calendrier_mois.annee::text AS texte, + max(p_calendrier.mois::text) AS alias, + max(p_calendrier.mois)::numeric(6,0) AS mois, + '1'::text AS level, + max(p_calendrier.mois)::numeric(6,0) AS tri1, + '1962-04-18'::date AS tri2 + FROM base.p_calendrier, + base.p_calendrier_mois, + ( SELECT to_number(substr(max(p_chiffrier.mois)::text, 1, 4) || '12'::text, '000000'::text) AS max_mois, + to_number(substr(min(p_chiffrier.mois)::text, 1, 4) || '01'::text, '000000'::text) AS min_mois + FROM activite.p_chiffrier) bornes + WHERE p_calendrier.mois >= bornes.min_mois AND p_calendrier.mois <= bornes.max_mois AND p_calendrier.mois = p_calendrier_mois.mois + GROUP BY p_calendrier_mois.annee + UNION ALL + SELECT p_calendrier.date, + p_calendrier_mois.texte, + p_calendrier.mois::text AS alias, + p_calendrier.mois, + '2'::text AS level, + p_calendrier.mois AS tri1, + '1962-04-18'::date AS tri2 + FROM base.p_calendrier, + base.p_calendrier_mois, + ( SELECT to_number(substr(max(p_chiffrier.mois)::text, 1, 4) || '12'::text, '000000'::text) AS max_mois, + to_number(substr(min(p_chiffrier.mois)::text, 1, 4) || '01'::text, '000000'::text) AS min_mois + FROM activite.p_chiffrier) bornes + WHERE p_calendrier.mois >= bornes.min_mois AND p_calendrier.mois <= bornes.max_mois AND p_calendrier.mois = p_calendrier_mois.mois AND p_calendrier.dernier_jour = '1'::bpchar + UNION ALL + SELECT p_calendrier.date, + p_calendrier.texte, + ''::text AS alias, + p_calendrier.mois, + '3'::text AS level, + p_calendrier.mois AS tri1, + p_calendrier.date AS tri2 + FROM base.p_calendrier, + ( SELECT to_number(substr(max(p_chiffrier.mois)::text, 1, 4) || '12'::text, '000000'::text) AS max_mois, + to_number(substr(min(p_chiffrier.mois)::text, 1, 4) || '01'::text, '000000'::text) AS min_mois + FROM activite.p_chiffrier) bornes + WHERE p_calendrier.mois >= bornes.min_mois AND p_calendrier.mois <= bornes.max_mois + ORDER BY 6 DESC, 7, 5; \ No newline at end of file diff --git a/db/schema2/views/v_calendrier_3.yaml b/db/schema2/views/v_calendrier_3.yaml new file mode 100644 index 0000000..e31e123 --- /dev/null +++ b/db/schema2/views/v_calendrier_3.yaml @@ -0,0 +1,25 @@ +src: | + SELECT 'M'::text || + CASE + WHEN (p_calendrier_mois.mois - p_calendrier_mois_1.mois + 1::numeric) <= 12::numeric THEN p_calendrier_mois.mois - p_calendrier_mois_1.mois + 1::numeric + ELSE p_calendrier_mois.mois - p_calendrier_mois_1.mois + 1::numeric - 88::numeric + END::text AS code, + p_calendrier_mois.texte_court AS texte, + p_calendrier_mois.mois, + p_calendrier_mois_1.mois AS premier_mois + FROM base.p_calendrier_mois, + base.p_calendrier_mois p_calendrier_mois_1 + WHERE p_calendrier_mois.mois >= p_calendrier_mois_1.mois AND (p_calendrier_mois.mois - p_calendrier_mois_1.mois) <= 99::numeric + UNION + SELECT 'N'::text || + CASE + WHEN (p_calendrier_mois.mois - p_calendrier_mois_1.mois + 1::numeric) <= 12::numeric THEN p_calendrier_mois.mois - p_calendrier_mois_1.mois + 1::numeric + ELSE p_calendrier_mois.mois - p_calendrier_mois_1.mois + 1::numeric - 88::numeric + END::text AS code, + to_char(p_calendrier_mois.mois, 'FM999999'::text) AS texte, + p_calendrier_mois.mois, + p_calendrier_mois_1.mois AS premier_mois + FROM base.p_calendrier_mois, + base.p_calendrier_mois p_calendrier_mois_1 + WHERE p_calendrier_mois.mois >= p_calendrier_mois_1.mois AND (p_calendrier_mois.mois - p_calendrier_mois_1.mois) <= 99::numeric + ORDER BY 4, 3; \ No newline at end of file diff --git a/db/schema2/views/v_calendrier_4.yaml b/db/schema2/views/v_calendrier_4.yaml new file mode 100644 index 0000000..eff5d8e --- /dev/null +++ b/db/schema2/views/v_calendrier_4.yaml @@ -0,0 +1,25 @@ +src: | + SELECT 'M'::text || + CASE + WHEN (p_calendrier_mois_1.mois - p_calendrier_mois.mois + 1::numeric) <= 12::numeric THEN 12::numeric - (p_calendrier_mois_1.mois - p_calendrier_mois.mois) + ELSE 12::numeric - (p_calendrier_mois_1.mois - p_calendrier_mois.mois + 1::numeric - 89::numeric) + END::text AS code, + p_calendrier_mois.texte_court AS texte, + p_calendrier_mois.mois, + p_calendrier_mois_1.mois AS dernier_mois + FROM base.p_calendrier_mois, + base.p_calendrier_mois p_calendrier_mois_1 + WHERE p_calendrier_mois_1.mois >= p_calendrier_mois.mois AND (p_calendrier_mois_1.mois - p_calendrier_mois.mois) <= 99::numeric + UNION + SELECT 'N'::text || + CASE + WHEN (p_calendrier_mois_1.mois - p_calendrier_mois.mois + 1::numeric) <= 12::numeric THEN 12::numeric - (p_calendrier_mois_1.mois - p_calendrier_mois.mois) + ELSE 12::numeric - (p_calendrier_mois_1.mois - p_calendrier_mois.mois + 1::numeric - 89::numeric) + END::text AS code, + to_char(p_calendrier_mois.mois, 'FM999999'::text) AS texte, + p_calendrier_mois.mois, + p_calendrier_mois_1.mois AS dernier_mois + FROM base.p_calendrier_mois, + base.p_calendrier_mois p_calendrier_mois_1 + WHERE p_calendrier_mois_1.mois >= p_calendrier_mois.mois AND (p_calendrier_mois_1.mois - p_calendrier_mois.mois) <= 99::numeric + ORDER BY 4, 3; \ No newline at end of file diff --git a/db/schema2/views/v_classes_1.yaml b/db/schema2/views/v_classes_1.yaml new file mode 100644 index 0000000..8faa2b9 --- /dev/null +++ b/db/schema2/views/v_classes_1.yaml @@ -0,0 +1,87 @@ +src: | + SELECT t_listes_tables.oid AS table_id, + 0 AS sequence, + t_listes_tables.texte || + CASE + WHEN count(DISTINCT t_classes.oid) > 0 THEN (' ('::text || count(DISTINCT t_classes.oid)::text) || ')'::text + ELSE ''::text + END AS texte, + t_listes_tables.texte AS sort_1, + - 1::bigint AS sort_2, + 0::bigint AS classe_id, + '1'::text AS lvl, + ''::text AS code, + 'activite'::text AS schema + FROM activite.t_listes_tables + LEFT JOIN activite.t_classes ON t_classes.table_id = t_listes_tables.oid + WHERE t_listes_tables.code = ANY (ARRAY['CODEPOST'::text, 'ACTIVITE'::text, 'AGE'::text, 'DURSEJ'::text, 'SERVICE_F'::text, 'ETAGE'::text, 'LIT'::text, 'MEDECIN'::text, 'MEDECIN_TRAITANT'::text, 'RUBRIQUEX'::text, 'ACTE'::text, 'PERSO_SEJ1'::text, 'COMPTE'::text, 'BUDGETCLE'::text, 'GHM'::text, 'GME'::text, 'TSE'::text, 'ETATSEJOUR'::text, 'PRESTA_C'::text, 'UM'::text, 'UF'::text, 'REJETNOEMI'::text, 'TIERSP'::text, 'RUBRIQUE'::text, 'ACTE'::text, 'PERSO_SEJ1'::text, 'COMPTE'::text, 'BUDGETCLE'::text, 'GHM'::text, 'GME'::text, 'TYPESEJOUR'::text, 'FORMEACTIVITE'::text, 'GHMGME'::text]) + GROUP BY t_listes_tables.oid, t_listes_tables.texte + UNION + SELECT t_classes.table_id, + t_classes.sequence, + t_classes.texte, + t_listes_tables.texte AS sort_1, + t_classes.sequence AS sort_2, + t_classes.oid AS classe_id, + '2'::text AS lvl, + t_classes.code, + 'activite'::text AS schema + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND (t_listes_tables.code = ANY (ARRAY['CODEPOST'::text, 'ACTIVITE'::text, 'AGE'::text, 'DURSEJ'::text, 'SERVICE_F'::text, 'ETAGE'::text, 'LIT'::text, 'MEDECIN'::text, 'MEDECIN_TRAITANT'::text, 'RUBRIQUEX'::text, 'ACTE'::text, 'PERSO_SEJ1'::text, 'COMPTE'::text, 'BUDGETCLE'::text, 'GHM'::text, 'GHM'::text, 'TSE'::text, 'ETATSEJOUR'::text, 'PRESTA_C'::text, 'UM'::text, 'UF'::text, 'REJETNOEMI'::text, 'TIERSP'::text, 'RUBRIQUE'::text, 'ACTE'::text, 'PERSO_SEJ1'::text, 'COMPTE'::text, 'BUDGETCLE'::text, 'GHM'::text, 'GME'::text, 'TYPESEJOUR'::text, 'FORMEACTIVITE'::text, 'GHMGME'::text])) AND t_classes.sequence >= 1 + UNION + SELECT t_listes_tables.oid AS table_id, + (-1) AS sequence, + 'Nouvelle classe'::text AS texte, + t_listes_tables.texte AS sort_1, + 0::bigint AS sort_2, + (-1)::bigint AS classe_id, + '2'::text AS lvl, + ''::text AS code, + 'activite'::text AS schema + FROM activite.t_listes_tables + WHERE t_listes_tables.code = ANY (ARRAY['CODEPOST'::text, 'ACTIVITE'::text, 'AGE'::text, 'DURSEJ'::text, 'SERVICE_F'::text, 'ETAGE'::text, 'LIT'::text, 'MEDECIN'::text, 'MEDECIN_TRAITANT'::text, 'RUBRIQUEX'::text, 'ACTE'::text, 'PERSO_SEJ1'::text, 'COMPTE'::text, 'BUDGETCLE'::text, 'GHM'::text, 'GHM'::text, 'TSE'::text, 'ETATSEJOUR'::text, 'PRESTA_C'::text, 'UM'::text, 'UF'::text, 'REJETNOEMI'::text, 'TIERSP'::text, 'RUBRIQUE'::text, 'ACTE'::text, 'PERSO_SEJ1'::text, 'COMPTE'::text, 'BUDGETCLE'::text, 'GHM'::text, 'GME'::text, 'TYPESEJOUR'::text, 'FORMEACTIVITE'::text, 'GHMGME'::text]) + UNION + SELECT t_listes_tables.oid AS table_id, + 0 AS sequence, + t_listes_tables.texte || + CASE + WHEN count(DISTINCT t_classes.oid) > 0 THEN (' ('::text || count(DISTINCT t_classes.oid)::text) || ')'::text + ELSE ''::text + END AS texte, + t_listes_tables.texte AS sort_1, + - 1::bigint AS sort_2, + 0::bigint AS classe_id, + '1'::text AS lvl, + ''::text AS code, + 'base'::text AS schema + FROM base.t_listes_tables + LEFT JOIN base.t_classes ON t_classes.table_id = t_listes_tables.oid + WHERE t_listes_tables.code = ANY (ARRAY['FINESS'::text, 'POLE'::text]) + GROUP BY t_listes_tables.oid, t_listes_tables.texte + UNION + SELECT t_classes.table_id, + t_classes.sequence, + t_classes.texte, + t_listes_tables.texte AS sort_1, + t_classes.sequence AS sort_2, + t_classes.oid AS classe_id, + '2'::text AS lvl, + t_classes.code, + 'base'::text AS schema + FROM base.t_classes, + base.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND (t_listes_tables.code = ANY (ARRAY['FINESS'::text, 'POLE'::text])) AND t_classes.sequence >= 1 + UNION + SELECT t_listes_tables.oid AS table_id, + (-1) AS sequence, + 'Nouvelle classe'::text AS texte, + t_listes_tables.texte AS sort_1, + 0::bigint AS sort_2, + (-1)::bigint AS classe_id, + '2'::text AS lvl, + ''::text AS code, + 'base'::text AS schema + FROM base.t_listes_tables + WHERE t_listes_tables.code = ANY (ARRAY['FINESS'::text, 'POLE'::text]) + ORDER BY 4, 5; \ No newline at end of file diff --git a/db/schema2/views/v_codes_postaux_2.yaml b/db/schema2/views/v_codes_postaux_2.yaml new file mode 100644 index 0000000..7540f50 --- /dev/null +++ b/db/schema2/views/v_codes_postaux_2.yaml @@ -0,0 +1,18 @@ +src: | + SELECT t_codes_postaux_c.oid AS code_postal_id, + t_codes_postaux_c.code AS code_postal_code, + t_codes_postaux_c.texte_court AS code_postal_texte, + t_codes_postaux_c.departement_id, + t_codes_postaux_c.departement_code, + t_codes_postaux_c.departement_texte, + t_codes_postaux_c.code_geographique_pmsi_id, + t_codes_postaux_c.code_geographique_pmsi_code, + t_codes_postaux_c.code_geographique_pmsi_texte, + t_codes_postaux_c.code_geographique_pmsi_population, + t_codes_postaux_c.territoire_sante_id, + t_codes_postaux_c.territoire_sante_code, + t_codes_postaux_c.territoire_sante_texte, + t_codes_postaux_c.section_id AS code_postal_section_id, + t_codes_postaux_c.section_code AS code_postal_section_code, + t_codes_postaux_c.section_texte AS code_postal_section_texte + FROM activite.t_codes_postaux_c; \ No newline at end of file diff --git a/db/schema2/views/v_codes_postaux_3.yaml b/db/schema2/views/v_codes_postaux_3.yaml new file mode 100644 index 0000000..0eee923 --- /dev/null +++ b/db/schema2/views/v_codes_postaux_3.yaml @@ -0,0 +1,170 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + ''::text AS code, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS tri, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'CODEPOST'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + ''::text AS code, + '1'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes + JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid + WHERE t_listes_tables.code = 'CODEPOST'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + ''::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes + JOIN activite.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid + JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid + WHERE t_listes_tables.code = 'CODEPOST'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + ''::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes + JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid + WHERE t_listes_tables.code = 'CODEPOST'::text + UNION ALL + SELECT '-8'::text AS oid, + 'Codes postaux'::character varying AS texte, + 'A'::text AS code, + '1'::text AS level, + '7'::text AS tri, + '0'::character(1) AS is_cti + UNION ALL + ( SELECT DISTINCT 'DP'::text || t_codes_postaux_c.departement_id::text AS oid, + (t_codes_postaux_c.departement_code || ' '::text) || t_codes_postaux_c.departement_texte AS texte, + t_codes_postaux_c.departement_code AS code, + '2'::text AS level, + '7'::text || substr(t_codes_postaux_c.departement_code || ' '::text, 1, 5) AS tri, + '0'::character(1) AS is_cti + FROM activite.t_codes_postaux_c + WHERE (t_codes_postaux_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'c_postaux'::text)) + ORDER BY 'DP'::text || t_codes_postaux_c.departement_id::text, (t_codes_postaux_c.departement_code || ' '::text) || t_codes_postaux_c.departement_texte, t_codes_postaux_c.departement_code, '2'::text, '7'::text || substr(t_codes_postaux_c.departement_code || ' '::text, 1, 5)) + UNION ALL + ( SELECT DISTINCT 'CP'::text || t_codes_postaux_c.oid::text AS oid, + (t_codes_postaux_c.code || ' '::text) || t_codes_postaux_c.texte AS texte, + t_codes_postaux_c.code, + '3'::text AS level, + (('7'::text || substr(t_codes_postaux_c.departement_code || ' '::text, 1, 5)) || 'P'::text) || t_codes_postaux_c.code AS tri, + '0'::character(1) AS is_cti + FROM activite.t_codes_postaux_c + WHERE (t_codes_postaux_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'c_postaux'::text)) + ORDER BY 'CP'::text || t_codes_postaux_c.oid::text, (t_codes_postaux_c.code || ' '::text) || t_codes_postaux_c.texte, t_codes_postaux_c.code, '3'::text, (('7'::text || substr(t_codes_postaux_c.departement_code || ' '::text, 1, 5)) || 'P'::text) || t_codes_postaux_c.code) + UNION ALL + SELECT '-8'::text AS oid, + 'Codes géographiques PMSI'::character varying AS texte, + 'A'::text AS code, + '1'::text AS level, + '8'::text AS tri, + '0'::character(1) AS is_cti + UNION ALL + ( SELECT DISTINCT 'DG'::text || t_codes_postaux_c.departement_id::text AS oid, + (t_codes_postaux_c.departement_code || ' '::text) || t_codes_postaux_c.departement_texte AS texte, + t_codes_postaux_c.departement_code AS code, + '2'::text AS level, + '8'::text || substr(t_codes_postaux_c.departement_code || ' '::text, 1, 5) AS tri, + '0'::character(1) AS is_cti + FROM activite.t_codes_postaux_c + WHERE (t_codes_postaux_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'c_postaux'::text)) + ORDER BY 'DG'::text || t_codes_postaux_c.departement_id::text, (t_codes_postaux_c.departement_code || ' '::text) || t_codes_postaux_c.departement_texte, t_codes_postaux_c.departement_code, '2'::text, '8'::text || substr(t_codes_postaux_c.departement_code || ' '::text, 1, 5)) + UNION ALL + ( SELECT DISTINCT 'GP'::text || t_codes_postaux_c.code_geographique_pmsi_id::text AS oid, + (t_codes_postaux_c.code_geographique_pmsi_code || ' '::text) || t_codes_postaux_c.code_geographique_pmsi_texte AS texte, + t_codes_postaux_c.code_geographique_pmsi_code AS code, + '3'::text AS level, + (('8'::text || substr(t_codes_postaux_c.departement_code || ' '::text, 1, 5)) || 'P'::text) || t_codes_postaux_c.code_geographique_pmsi_code AS tri, + '0'::character(1) AS is_cti + FROM activite.t_codes_postaux_c + WHERE (t_codes_postaux_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'c_postaux'::text)) + ORDER BY 'GP'::text || t_codes_postaux_c.code_geographique_pmsi_id::text, (t_codes_postaux_c.code_geographique_pmsi_code || ' '::text) || t_codes_postaux_c.code_geographique_pmsi_texte, t_codes_postaux_c.code_geographique_pmsi_code, '3'::text, (('8'::text || substr(t_codes_postaux_c.departement_code || ' '::text, 1, 5)) || 'P'::text) || t_codes_postaux_c.code_geographique_pmsi_code) + UNION ALL + SELECT '-8'::text AS oid, + 'Territoires de santé'::character varying AS texte, + 'A'::text AS code, + '1'::text AS level, + '9'::text AS tri, + '0'::character(1) AS is_cti + UNION ALL + ( SELECT DISTINCT 'TS'::text || t_codes_postaux_c.territoire_sante_id::text AS oid, + CASE + WHEN t_codes_postaux_c.territoire_sante_texte = ''::text THEN 'Non renseigné'::text + ELSE t_codes_postaux_c.territoire_sante_texte + END AS texte, + CASE + WHEN t_codes_postaux_c.territoire_sante_code = ''::text THEN chr(127) || '*******'::text + ELSE t_codes_postaux_c.territoire_sante_code + END AS code, + '2'::text AS level, + CASE + WHEN t_codes_postaux_c.territoire_sante_texte = ''::text THEN '9 '::text || 'Non renseigné'::text + ELSE '9'::text || t_codes_postaux_c.territoire_sante_texte + END AS tri, + '0'::character(1) AS is_cti + FROM activite.t_codes_postaux_c + WHERE (t_codes_postaux_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'c_postaux'::text)) + GROUP BY 'TS'::text || t_codes_postaux_c.territoire_sante_id::text, + CASE + WHEN t_codes_postaux_c.territoire_sante_texte = ''::text THEN 'Non renseigné'::text + ELSE t_codes_postaux_c.territoire_sante_texte + END, + CASE + WHEN t_codes_postaux_c.territoire_sante_code = ''::text THEN chr(127) || '*******'::text + ELSE t_codes_postaux_c.territoire_sante_code + END, '2'::text, + CASE + WHEN t_codes_postaux_c.territoire_sante_texte = ''::text THEN '9 '::text || 'Non renseigné'::text + ELSE '9'::text || t_codes_postaux_c.territoire_sante_texte + END + ORDER BY 'TS'::text || t_codes_postaux_c.territoire_sante_id::text, + CASE + WHEN t_codes_postaux_c.territoire_sante_texte = ''::text THEN 'Non renseigné'::text + ELSE t_codes_postaux_c.territoire_sante_texte + END, + CASE + WHEN t_codes_postaux_c.territoire_sante_code = ''::text THEN chr(127) || '*******'::text + ELSE t_codes_postaux_c.territoire_sante_code + END, '2'::text, + CASE + WHEN t_codes_postaux_c.territoire_sante_texte = ''::text THEN '9 '::text || 'Non renseigné'::text + ELSE '9'::text || t_codes_postaux_c.territoire_sante_texte + END) + ORDER BY 5; \ No newline at end of file diff --git a/db/schema2/views/v_compte_1.yaml b/db/schema2/views/v_compte_1.yaml new file mode 100644 index 0000000..e738198 --- /dev/null +++ b/db/schema2/views/v_compte_1.yaml @@ -0,0 +1,66 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + ''::text AS code, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS tri, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE 1 = 1 AND v_listes_1.table_code = 'COMPTE'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + ''::text AS code, + '1'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE 1 = 1 AND t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'COMPTE'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + ''::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE 1 = 1 AND t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'COMPTE'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + ''::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE 1 = 1 AND t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'COMPTE'::text + UNION ALL + SELECT 'DT'::text || t_compte.oid::text AS oid, + (t_compte.code || ' '::text) || t_compte.texte_court AS texte, + t_compte.code, + '1'::text AS level, + '9'::text || t_compte.code AS tri, + '0'::character(1) AS is_cti + FROM activite.t_compte + WHERE (t_compte.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'compte'::text)) + ORDER BY 5; \ No newline at end of file diff --git a/db/schema2/views/v_compte_produit_analytique_1.yaml b/db/schema2/views/v_compte_produit_analytique_1.yaml new file mode 100644 index 0000000..cbd6e3e --- /dev/null +++ b/db/schema2/views/v_compte_produit_analytique_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_compte.oid AS compte_produit_analytique_linkid, + t_compte.code AS compte_produit_analytique_code, + t_compte.texte AS compte_produit_analytique_texte, + t_compte.section_id AS compte_produit_analytique_section_id, + t_compte.section_code AS compte_produit_analytique_section_code, + t_compte.section_texte AS compte_produit_analytique_section_texte + FROM activite.t_compte; \ No newline at end of file diff --git a/db/schema2/views/v_compte_produit_analytique_link.yaml b/db/schema2/views/v_compte_produit_analytique_link.yaml new file mode 100644 index 0000000..cbd6e3e --- /dev/null +++ b/db/schema2/views/v_compte_produit_analytique_link.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_compte.oid AS compte_produit_analytique_linkid, + t_compte.code AS compte_produit_analytique_code, + t_compte.texte AS compte_produit_analytique_texte, + t_compte.section_id AS compte_produit_analytique_section_id, + t_compte.section_code AS compte_produit_analytique_section_code, + t_compte.section_texte AS compte_produit_analytique_section_texte + FROM activite.t_compte; \ No newline at end of file diff --git a/db/schema2/views/v_destinations_sortie_1.yaml b/db/schema2/views/v_destinations_sortie_1.yaml new file mode 100644 index 0000000..1cb7a93 --- /dev/null +++ b/db/schema2/views/v_destinations_sortie_1.yaml @@ -0,0 +1,9 @@ +src: | + SELECT ascii(t_destinations_sortie.code::text) AS destination_id, + t_destinations_sortie.code AS destination_code, + CASE + WHEN t_destinations_sortie.code <> ''::bpchar THEN t_destinations_sortie.texte + ELSE 'Non saisi'::text + END AS destination_texte + FROM base.t_destinations_sortie + ORDER BY t_destinations_sortie.code; \ No newline at end of file diff --git a/db/schema2/views/v_destinations_sortie_2.yaml b/db/schema2/views/v_destinations_sortie_2.yaml new file mode 100644 index 0000000..f35623d --- /dev/null +++ b/db/schema2/views/v_destinations_sortie_2.yaml @@ -0,0 +1,23 @@ +src: | + SELECT 'DS'::text || t_destinations_sortie.code::text AS code, + CASE + WHEN t_destinations_sortie.code <> ''::bpchar THEN (t_destinations_sortie.code::text || ' - '::text) || t_destinations_sortie.texte + ELSE 'Non saisi'::text + END AS texte, + CASE + WHEN t_destinations_sortie.code <> ''::bpchar THEN (t_destinations_sortie.code::text || ' - '::text) || t_destinations_sortie.texte_court + ELSE 'Non saisi'::text + END AS texte_court + FROM base.t_destinations_sortie + UNION ALL + SELECT 'DX'::text || t_destinations_sortie.code::text AS code, + CASE + WHEN t_destinations_sortie.code <> ''::bpchar THEN ('SAUF '::text || (t_destinations_sortie.code::text || ' - '::text)) || t_destinations_sortie.texte + ELSE 'SAUF Non saisi'::text + END AS texte, + CASE + WHEN t_destinations_sortie.code <> ''::bpchar THEN ('SAUF '::text || (t_destinations_sortie.code::text || ' - '::text)) || t_destinations_sortie.texte_court + ELSE 'SAUF Non saisi'::text + END AS texte_court + FROM base.t_destinations_sortie + ORDER BY 1; \ No newline at end of file diff --git a/db/schema2/views/v_durees_occupation_1.yaml b/db/schema2/views/v_durees_occupation_1.yaml new file mode 100644 index 0000000..24befeb --- /dev/null +++ b/db/schema2/views/v_durees_occupation_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_durees_sejour_c.oid AS duree_occupation_id, + t_durees_sejour_c.code AS duree_occupation_code, + t_durees_sejour_c.texte AS duree_occupation_texte, + t_durees_sejour_c.section_id AS duree_occupation_section_id, + t_durees_sejour_c.section_code AS duree_occupation_section_code, + t_durees_sejour_c.section_texte AS duree_occupation_section_texte + FROM activite.t_durees_sejour_c; \ No newline at end of file diff --git a/db/schema2/views/v_durees_occupation_2.yaml b/db/schema2/views/v_durees_occupation_2.yaml new file mode 100644 index 0000000..3ade8ce --- /dev/null +++ b/db/schema2/views/v_durees_occupation_2.yaml @@ -0,0 +1,32 @@ +src: | + SELECT p_mouvements_sejour.no_sejour, + t_lieux_c.etage_id AS do_lieu_etage_id, + t_lieux_c.etage_code AS do_lieu_etage_code, + t_lieux_c.etage_texte AS do_lieu_etage_texte, + t_lieux_c.etage_section_id AS do_lieu_etage_section_id, + t_lieux_c.etage_section_code AS do_lieu_etage_section_code, + t_lieux_c.etage_section_texte AS do_lieu_etage_section_texte, + t_lieux_c.lit_id AS do_lieu_lit_id, + t_lieux_c.lit_code AS do_lieu_lit_code, + t_lieux_c.lit_texte AS do_lieu_lit_texte, + t_lieux_c.lit_section_id AS do_lieu_lit_section_id, + t_lieux_c.lit_section_code AS do_lieu_lit_section_code, + t_lieux_c.lit_section_texte AS do_lieu_lit_section_texte, + t_lieux_c.unite_medicale_id AS do_lieu_unite_medicale_id, + t_lieux_c.unite_medicale_code AS do_lieu_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS do_lieu_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS do_lieu_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS do_lieu_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS do_lieu_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS do_lieu_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS do_lieu_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS do_lieu_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS do_lieu_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS do_lieu_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS do_lieu_unite_fonctionnelle_section_texte, + sum(p_mouvements_sejour.nb_jours_f) AS duree_occ_eta + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux_c ON p_mouvements_sejour.lieu_id = t_lieux_c.oid + WHERE t_lieux_c.service_facturation_est_sans_mouvement <> '1'::bpchar + GROUP BY p_mouvements_sejour.no_sejour, t_lieux_c.etage_id, t_lieux_c.etage_code, t_lieux_c.etage_texte, t_lieux_c.etage_section_id, t_lieux_c.etage_section_code, t_lieux_c.etage_section_texte, t_lieux_c.lit_id, t_lieux_c.lit_code, t_lieux_c.lit_texte, t_lieux_c.lit_section_id, t_lieux_c.lit_section_code, t_lieux_c.lit_section_texte, t_lieux_c.unite_medicale_id, t_lieux_c.unite_medicale_code, t_lieux_c.unite_medicale_texte, t_lieux_c.unite_medicale_section_id, t_lieux_c.unite_medicale_section_code, t_lieux_c.unite_medicale_section_texte, t_lieux_c.unite_fonctionnelle_id, t_lieux_c.unite_fonctionnelle_code, t_lieux_c.unite_fonctionnelle_texte, t_lieux_c.unite_fonctionnelle_section_id, t_lieux_c.unite_fonctionnelle_section_code, t_lieux_c.unite_fonctionnelle_section_texte + ORDER BY p_mouvements_sejour.no_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_durees_occupation_3.yaml b/db/schema2/views/v_durees_occupation_3.yaml new file mode 100644 index 0000000..3b31412 --- /dev/null +++ b/db/schema2/views/v_durees_occupation_3.yaml @@ -0,0 +1,12 @@ +src: | + SELECT 'DO'::text || t_durees_sejour_c.oid::text AS oid, + t_durees_sejour_c.texte, + t_durees_sejour_c.code, + '2'::text AS level, + '9'::text || t_durees_sejour_c.code AS tri, + '0'::character(1) AS is_cti + FROM activite.t_durees_sejour_c + WHERE (t_durees_sejour_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'dursej'::text)) + ORDER BY '9'::text || t_durees_sejour_c.code; \ No newline at end of file diff --git a/db/schema2/views/v_durees_sejour_1.yaml b/db/schema2/views/v_durees_sejour_1.yaml new file mode 100644 index 0000000..62d8407 --- /dev/null +++ b/db/schema2/views/v_durees_sejour_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_durees_sejour_c.oid AS duree_sejour_id, + t_durees_sejour_c.code AS duree_sejour_code, + t_durees_sejour_c.texte AS duree_sejour_texte, + t_durees_sejour_c.section_id AS duree_sejour_section_id, + t_durees_sejour_c.section_code AS duree_sejour_section_code, + t_durees_sejour_c.section_texte AS duree_sejour_section_texte + FROM activite.t_durees_sejour_c; \ No newline at end of file diff --git a/db/schema2/views/v_durees_sejour_2.yaml b/db/schema2/views/v_durees_sejour_2.yaml new file mode 100644 index 0000000..b76ca17 --- /dev/null +++ b/db/schema2/views/v_durees_sejour_2.yaml @@ -0,0 +1,73 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + ''::text AS code, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS tri, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'DURSEJ'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + ''::text AS code, + '1'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'DURSEJ'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + ''::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'DURSEJ'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + ''::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'DURSEJ'::text + UNION ALL + SELECT '-8'::text AS oid, + 'Choix d''une durée'::character varying AS texte, + 'A'::text AS code, + '1'::text AS level, + '9'::text || chr(1) AS tri, + '0'::character(1) AS is_cti + UNION ALL + SELECT 'DU'::text || t_durees_sejour_c.oid::text AS oid, + t_durees_sejour_c.texte, + t_durees_sejour_c.code, + '2'::text AS level, + '9'::text || t_durees_sejour_c.code AS tri, + '0'::character(1) AS is_cti + FROM activite.t_durees_sejour_c + WHERE (t_durees_sejour_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'dursej'::text)) + ORDER BY 5; \ No newline at end of file diff --git a/db/schema2/views/v_etages_1.yaml b/db/schema2/views/v_etages_1.yaml new file mode 100644 index 0000000..dc5f421 --- /dev/null +++ b/db/schema2/views/v_etages_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_etages.oid, + t_etages.texte_court AS texte + FROM activite.t_etages + WHERE (t_etages.oid IN ( SELECT DISTINCT t_lieux_c.etage_id + FROM activite.t_lieux_c + ORDER BY t_lieux_c.etage_id)) + ORDER BY t_etages.texte_court; \ No newline at end of file diff --git a/db/schema2/views/v_etages_2.yaml b/db/schema2/views/v_etages_2.yaml new file mode 100644 index 0000000..e21e1a0 --- /dev/null +++ b/db/schema2/views/v_etages_2.yaml @@ -0,0 +1,61 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS sort, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'ETAGE'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '1'::text AS level, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'ETAGE'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + '2'::text AS level, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'ETAGE'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + '2'::text AS level, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'ETAGE'::text + UNION ALL + SELECT 'ET'::text || t_etages.oid::text AS oid, + (t_etages.code || ' '::text) || t_etages.texte_court AS texte, + '1'::text AS level, + '9'::text || t_etages.code AS sort, + '0'::character(1) AS is_cti + FROM activite.t_etages + WHERE (t_etages.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'etage'::text)) + ORDER BY 4; \ No newline at end of file diff --git a/db/schema2/views/v_etat_sejour_1.yaml b/db/schema2/views/v_etat_sejour_1.yaml new file mode 100644 index 0000000..51abdda --- /dev/null +++ b/db/schema2/views/v_etat_sejour_1.yaml @@ -0,0 +1,9 @@ +src: | + SELECT t_etat_sejour.oid AS to_etat_sejour_id, + t_etat_sejour.code AS etat_sejour_code, + t_etat_sejour.texte AS etat_sejour_texte, + t_etat_sejour.section_id AS etat_sejour_section_id, + t_etat_sejour.section_code AS etat_sejour_section_code, + t_etat_sejour.section_texte AS etat_sejour_section_texte + FROM activite.t_etat_sejour + ORDER BY t_etat_sejour.oid; \ No newline at end of file diff --git a/db/schema2/views/v_etat_sejour_2.yaml b/db/schema2/views/v_etat_sejour_2.yaml new file mode 100644 index 0000000..2f75ba9 --- /dev/null +++ b/db/schema2/views/v_etat_sejour_2.yaml @@ -0,0 +1,33 @@ +src: | + SELECT ('LC'::text || to_char(t_classes.sequence, 'FM00'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '2'::text || btrim(rpad(to_char(t_classes.sequence, 'FM00'::text), 10, ' '::text)) AS code, + '1'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'ETATSEJOUR'::text + UNION ALL + SELECT ('LS'::text || to_char(t_classes.sequence, 'FM00'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + '2'::text || btrim(rpad(to_char(t_classes.sequence, 'FM00'::text), 10, ' '::text) || t_classes_sections.code) AS code, + '2'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'ETATSEJOUR'::text + UNION ALL + SELECT 'DT'::text || t_etat_sejour.oid::text AS oid, + (t_etat_sejour.code || ' '::text) || t_etat_sejour.texte AS texte, + '9'::text || t_etat_sejour.code AS code, + '1'::text AS level, + '0'::character(1) AS is_cti + FROM activite.t_etat_sejour + ORDER BY 3; \ No newline at end of file diff --git a/db/schema2/views/v_expert_controle_2.yaml b/db/schema2/views/v_expert_controle_2.yaml new file mode 100644 index 0000000..a6ae823 --- /dev/null +++ b/db/schema2/views/v_expert_controle_2.yaml @@ -0,0 +1,69 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.liste_id_combo AS alias, + v_listes_1.texte, + ''::text AS code, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS tri, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'EXPERTCTL'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + ''::text AS alias, + t_classes.texte, + ''::text AS code, + '1'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'EXPERTCTL'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + ('#LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.code AS alias, + t_classes_sections.texte, + ''::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'EXPERTCTL'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + ''::text AS alias, + 'Section non attribuée'::character varying AS texte, + ''::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'EXPERTCTL'::text + UNION ALL + SELECT 'DT'::text || t_expert_controle.oid::text AS oid, + '#LP'::text || t_expert_controle.code AS alias, + (t_expert_controle.code || ' '::text) || t_expert_controle.texte_court AS texte, + t_expert_controle.code, + '1'::text AS level, + '9'::text || t_expert_controle.code AS tri, + '0'::character(1) AS is_cti + FROM activite.t_expert_controle + WHERE t_expert_controle.is_global IS DISTINCT FROM '1'::bpchar + ORDER BY 6; \ No newline at end of file diff --git a/db/schema2/views/v_expert_sejour_controle_1.yaml b/db/schema2/views/v_expert_sejour_controle_1.yaml new file mode 100644 index 0000000..a80b31e --- /dev/null +++ b/db/schema2/views/v_expert_sejour_controle_1.yaml @@ -0,0 +1,37 @@ +src: | + SELECT t_expert_controle.oid AS expert_controle_id, + t_expert_controle.code AS expert_controle_code, + t_expert_controle.texte_court AS expert_controle_texte, + COALESCE(t_expert_controle.texte_abrege, t_expert_controle.texte_court) AS expert_controle_texte_abrege, + t_expert_controle.gravite_id AS expert_controle_gravite_id, + to_char(t_expert_controle.gravite_id, 'FM0'::text) AS expert_controle_gravite_code, + CASE + WHEN t_expert_controle.gravite_id = 0 THEN 'INFO'::text + WHEN t_expert_controle.gravite_id >= 1 AND t_expert_controle.gravite_id <= 5 THEN 'ATT'::text + WHEN t_expert_controle.gravite_id >= 6 AND t_expert_controle.gravite_id <= 9 THEN 'ERREUR'::text + ELSE 'ATT'::text + END AS expert_controle_gravite_texte, + t_expert_controle.date_validite_debut AS expert_controle_date_validite_debut, + t_expert_controle.date_validite_fin AS expert_controle_date_validite_fin, + t_expert_controle.section_id AS expert_controle_section_id, + t_expert_controle.section_code AS expert_controle_section_code, + t_expert_controle.section_texte AS expert_controle_section_texte, + t_expert_controle.alert_exp, + p_expert_sejour_controle.date_signalement, + date_part('epoch'::text, p_expert_sejour_controle.date_signalement) AS date_signalement_id, + p_expert_sejour_controle.date_signalement::text AS date_signalement_code, + p_calendrier_s.texte_court AS date_signalement_texte, + p_calendrier_s.mois AS date_signalement_mois_id, + to_char(p_calendrier_s.mois, 'FM000000'::text) AS date_signalement_mois_code, + (p_calendrier_s.mois_texte || ' '::text) || to_char(p_calendrier_s.iso_annee, 'FM0000'::text) AS date_signalement_mois_texte, + p_calendrier_s.semaine AS date_signalement_semaine_id, + to_char(p_calendrier_s.semaine, 'FM000000'::text) AS date_signalement_semaine_code, + (('Semaine '::text || to_char(p_calendrier_s.iso_semaine, 'FM00'::text)) || ' '::text) || to_char(p_calendrier_s.iso_annee, 'FM0000'::text) AS date_signalement_semaine_texte, + p_expert_sejour_controle.sejour_id, + p_expert_sejour_controle.no_sejour, + p_expert_sejour_controle.code_justificatif, + t_expert_controle.is_active AS expert_controle_is_active + FROM activite.t_expert_controle + JOIN activite.p_expert_sejour_controle ON p_expert_sejour_controle.controle_id = t_expert_controle.oid + JOIN base.p_calendrier p_calendrier_s ON p_expert_sejour_controle.date_signalement = p_calendrier_s.date + WHERE t_expert_controle.is_hide IS DISTINCT FROM '1'::bpchar AND t_expert_controle.is_global IS DISTINCT FROM '1'::bpchar; \ No newline at end of file diff --git a/db/schema2/views/v_facture_encours_ligne_valorise_c_1.yaml b/db/schema2/views/v_facture_encours_ligne_valorise_c_1.yaml new file mode 100644 index 0000000..e9e118a --- /dev/null +++ b/db/schema2/views/v_facture_encours_ligne_valorise_c_1.yaml @@ -0,0 +1,135 @@ +src: | + SELECT p_factures_encours.sejour_id, + p_factures_encours.oid AS facture_id, + p_factures_encours.code_sorti, + p_factures_encours.date_debut AS date_debut_facture, + p_factures_encours.date_fin AS date_fin_facture, + to_char(p_factures_encours.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin_facture, + p_factures_encours.no_sejour, + p_facture_encours_ligne_valorise_c.no_facture, + to_char(p_factures_encours.date_encours::timestamp with time zone, 'YYYYMM'::text) AS mois_encours, + p_factures_encours.date_encours, + p_factures_encours.date_calcul, + to_char(p_facture_encours_ligne_valorise_c.date_debut::timestamp with time zone, 'YYYYMM'::text) AS mois_debut, + to_char(p_facture_encours_ligne_valorise_c.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin, + p_facture_encours_ligne_valorise_c.date_debut, + p_facture_encours_ligne_valorise_c.date_fin, + p_facture_encours_ligne_valorise_c.coefficient, + p_facture_encours_ligne_valorise_c.coefficient_mco, + p_facture_encours_ligne_valorise_c.prix_unitaire, + p_facture_encours_ligne_valorise_c.lieu_id, + t_lieux_c.service_facturation_id AS lieu_service_id, + t_lieux_c.service_facturation_code AS lieu_service_code, + t_lieux_c.service_facturation_texte AS lieu_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_service_section_texte, + t_lieux_c.activite_id AS lieu_activite_id, + t_lieux_c.activite_code AS lieu_activite_code, + t_lieux_c.activite_texte AS lieu_activite_texte, + t_lieux_c.etage_id AS lieu_etage_id, + t_lieux_c.etage_code AS lieu_etage_code, + t_lieux_c.etage_texte AS lieu_etage_texte, + t_lieux_c.etage_section_id AS lieu_etage_section_id, + t_lieux_c.etage_section_code AS lieu_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_etage_section_texte, + t_lieux_c.lit_id AS lieu_lit_id, + t_lieux_c.lit_code AS lieu_lit_code, + t_lieux_c.lit_texte AS lieu_lit_texte, + t_lieux_c.lit_section_id AS lieu_lit_section_id, + t_lieux_c.lit_section_code AS lieu_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS lieu_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_unite_fonctionnelle_section_texte, + p_facture_encours_ligne_valorise_c.rubrique_facturation_id, + t_rubriques_facturation.code AS rubrique_facturation_code, + t_rubriques_facturation.texte AS rubrique_facturation_texte, + t_rubriques_facturation.section_id AS rubrique_facturation_section_id, + t_rubriques_facturation.section_code AS rubrique_facturation_section_code, + t_rubriques_facturation.section_texte AS rubrique_facturation_section_texte, + p_facture_encours_ligne_valorise_c.prestation_id, + t_prestations.code AS prestation_code, + t_prestations.texte AS prestation_texte, + t_prestations.section_id AS prestation_section_id, + t_prestations.section_code AS prestation_section_code, + t_prestations.section_texte AS prestation_section_texte, + p_facture_encours_ligne_valorise_c.lpp_id, + COALESCE(t_lpp_c.code, ''::text) AS lpp_code, + COALESCE(t_lpp_c.texte, ''::text) AS lpp_texte, + p_facture_encours_ligne_valorise_c.ucd_id, + COALESCE(t_ucd_c.code, ''::text) AS ucd_code, + COALESCE(t_ucd_c.texte, ''::text) AS ucd_texte, + p_facture_encours_ligne_valorise_c.nb_rubrique, + p_facture_encours_ligne_valorise_c.nb_prestation, + p_facture_encours_ligne_valorise_c.montant_encours, + p_facture_encours_ligne_valorise_c.montant_valorise_total, + CASE p_facture_encours_ligne_valorise_c.type_ligne_code + WHEN 'GHS'::text THEN 1 + WHEN 'GHSBB'::text THEN 2 + WHEN 'GHSNG'::text THEN 3 + WHEN 'GHSBBM'::text THEN 4 + WHEN 'EXH'::text THEN 11 + WHEN 'EXHNG'::text THEN 12 + WHEN 'SSS'::text THEN 21 + WHEN 'IVG'::text THEN 22 + WHEN 'NNX'::text THEN 23 + WHEN 'DIA'::text THEN 24 + WHEN 'PJ'::text THEN 31 + WHEN 'TMBG'::text THEN 32 + WHEN 'FJ'::text THEN 33 + WHEN 'PMS'::text THEN 34 + WHEN 'ENT'::text THEN 35 + WHEN 'GHT'::text THEN 81 + WHEN 'FJA'::text THEN 91 + WHEN 'CPC'::text THEN 101 + WHEN 'PRESTAM'::text THEN 201 + WHEN 'SEH'::text THEN 701 + WHEN 'ATU'::text THEN 702 + WHEN 'SAISIE'::text THEN 999 + ELSE 801 + END AS type_ligne_id, + p_facture_encours_ligne_valorise_c.type_ligne_code, + CASE p_facture_encours_ligne_valorise_c.type_ligne_code + WHEN 'GHS'::text THEN 'GHS dossier groupé'::text + WHEN 'GHSBB'::text THEN 'GHS bébé dossier bébé groupé'::text + WHEN 'GHSNG'::text THEN 'GHS dossier non groupé'::text + WHEN 'GHSBB'::text THEN 'GHS moyen bébé dossier maman groupé'::text + WHEN 'EXH'::text THEN 'EXH dossier groupé'::text + WHEN 'EXHNG'::text THEN 'EXH dossier non groupé'::text + WHEN 'SSS'::text THEN 'Suppléments SRC,STF,REA'::text + WHEN 'IVG'::text THEN 'Forfaits IVG'::text + WHEN 'NNX'::text THEN 'Suppléments NN'::text + WHEN 'DIA'::text THEN 'Dialyse'::text + WHEN 'PJ'::text THEN 'PJ'::text + WHEN 'TMBG'::text THEN 'TM Budget Global MCO'::text + WHEN 'FJ'::text THEN 'FJ'::text + WHEN 'PMS'::text THEN 'Forfait PMS SSR'::text + WHEN 'ENT'::text THEN 'Forfait entrée'::text + WHEN 'GHT'::text THEN 'GHT (HAD'::text + WHEN 'FJA'::text THEN 'Forfait jour de sortie'::text + WHEN 'CPC'::text THEN 'Chambre particulière'::text + WHEN 'PRESTAM'::text THEN 'Montant moyen par jour'::text + WHEN 'SEH'::text THEN 'Forfaits SEh'::text + WHEN 'ATU'::text THEN 'ATU'::text + WHEN 'SAISIE'::text THEN 'Prestations saisies'::text + ELSE p_facture_encours_ligne_valorise_c.type_ligne_code + END AS type_ligne_texte, + p_facture_encours_ligne_valorise_c.mode_calcul_code, + p_facture_encours_ligne_valorise_c.mode_calcul_texte + FROM activite.p_facture_encours_ligne_valorise_c + JOIN activite.p_factures_encours ON p_facture_encours_ligne_valorise_c.no_facture = p_factures_encours.no_facture + JOIN activite.t_lieux_c ON p_facture_encours_ligne_valorise_c.lieu_id = t_lieux_c.oid + JOIN activite.t_rubriques_facturation ON p_facture_encours_ligne_valorise_c.rubrique_facturation_id = t_rubriques_facturation.oid + JOIN activite.t_prestations ON p_facture_encours_ligne_valorise_c.prestation_id = t_prestations.oid + LEFT JOIN activite.t_lpp_c ON p_facture_encours_ligne_valorise_c.lpp_id = t_lpp_c.oid + LEFT JOIN activite.t_ucd_c ON p_facture_encours_ligne_valorise_c.ucd_id = t_ucd_c.oid; \ No newline at end of file diff --git a/db/schema2/views/v_facture_ligne_valorise_c_1.yaml b/db/schema2/views/v_facture_ligne_valorise_c_1.yaml new file mode 100644 index 0000000..de7ae73 --- /dev/null +++ b/db/schema2/views/v_facture_ligne_valorise_c_1.yaml @@ -0,0 +1,135 @@ +src: | + SELECT p_factures.sejour_id, + p_factures.oid AS facture_id, + p_factures.code_facture, + p_factures.date_debut AS date_debut_facture, + p_factures.date_fin AS date_fin_facture, + to_char(p_factures.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin_facture, + p_factures.no_sejour, + p_facture_ligne_valorise_c.no_facture, + to_char(p_factures.date_facture::timestamp with time zone, 'YYYYMM'::text) AS mois_facture, + p_factures.date_facture, + to_char(p_factures.date_vente::timestamp with time zone, 'YYYYMM'::text) AS mois_vente, + p_factures.date_vente, + to_char(p_facture_ligne_valorise_c.date_debut::timestamp with time zone, 'YYYYMM'::text) AS mois_debut, + to_char(p_facture_ligne_valorise_c.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin, + p_facture_ligne_valorise_c.date_debut, + p_facture_ligne_valorise_c.date_fin, + p_facture_ligne_valorise_c.coefficient, + p_facture_ligne_valorise_c.coefficient_mco, + p_facture_ligne_valorise_c.prix_unitaire, + p_facture_ligne_valorise_c.lieu_id, + t_lieux_c.service_facturation_id AS lieu_service_id, + t_lieux_c.service_facturation_code AS lieu_service_code, + t_lieux_c.service_facturation_texte AS lieu_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_service_section_texte, + t_lieux_c.activite_id AS lieu_activite_id, + t_lieux_c.activite_code AS lieu_activite_code, + t_lieux_c.activite_texte AS lieu_activite_texte, + t_lieux_c.etage_id AS lieu_etage_id, + t_lieux_c.etage_code AS lieu_etage_code, + t_lieux_c.etage_texte AS lieu_etage_texte, + t_lieux_c.etage_section_id AS lieu_etage_section_id, + t_lieux_c.etage_section_code AS lieu_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_etage_section_texte, + t_lieux_c.lit_id AS lieu_lit_id, + t_lieux_c.lit_code AS lieu_lit_code, + t_lieux_c.lit_texte AS lieu_lit_texte, + t_lieux_c.lit_section_id AS lieu_lit_section_id, + t_lieux_c.lit_section_code AS lieu_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS lieu_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_unite_fonctionnelle_section_texte, + p_facture_ligne_valorise_c.rubrique_facturation_id, + t_rubriques_facturation.code AS rubrique_facturation_code, + t_rubriques_facturation.texte AS rubrique_facturation_texte, + t_rubriques_facturation.section_id AS rubrique_facturation_section_id, + t_rubriques_facturation.section_code AS rubrique_facturation_section_code, + t_rubriques_facturation.section_texte AS rubrique_facturation_section_texte, + p_facture_ligne_valorise_c.prestation_id, + t_prestations.code AS prestation_code, + t_prestations.texte AS prestation_texte, + t_prestations.section_id AS prestation_section_id, + t_prestations.section_code AS prestation_section_code, + t_prestations.section_texte AS prestation_section_texte, + p_facture_ligne_valorise_c.lpp_id, + COALESCE(t_lpp_c.code, ''::text) AS lpp_code, + COALESCE(t_lpp_c.texte, ''::text) AS lpp_texte, + p_facture_ligne_valorise_c.ucd_id, + COALESCE(t_ucd_c.code, ''::text) AS ucd_code, + COALESCE(t_ucd_c.texte, ''::text) AS ucd_texte, + p_facture_ligne_valorise_c.nb_rubrique, + p_facture_ligne_valorise_c.nb_prestation, + p_facture_ligne_valorise_c.montant_encours, + CASE p_facture_ligne_valorise_c.type_ligne_code + WHEN 'GHS'::text THEN 1 + WHEN 'GHSBB'::text THEN 2 + WHEN 'GHSNG'::text THEN 3 + WHEN 'GHSBBM'::text THEN 4 + WHEN 'EXH'::text THEN 11 + WHEN 'EXHNG'::text THEN 12 + WHEN 'SSS'::text THEN 21 + WHEN 'IVG'::text THEN 22 + WHEN 'NNX'::text THEN 23 + WHEN 'DIA'::text THEN 24 + WHEN 'PJ'::text THEN 31 + WHEN 'TMBG'::text THEN 32 + WHEN 'FJ'::text THEN 33 + WHEN 'PMS'::text THEN 34 + WHEN 'ENT'::text THEN 35 + WHEN 'GHT'::text THEN 81 + WHEN 'FJA'::text THEN 91 + WHEN 'CPC'::text THEN 101 + WHEN 'PRESTAM'::text THEN 201 + WHEN 'SEH'::text THEN 701 + WHEN 'ATU'::text THEN 702 + WHEN 'SAISIE'::text THEN 999 + ELSE 801 + END AS type_ligne_id, + p_facture_ligne_valorise_c.type_ligne_code, + CASE p_facture_ligne_valorise_c.type_ligne_code + WHEN 'GHS'::text THEN 'GHS dossier groupé'::text + WHEN 'GHSBB'::text THEN 'GHS bébé dossier bébé groupé'::text + WHEN 'GHSNG'::text THEN 'GHS dossier non groupé'::text + WHEN 'GHSBB'::text THEN 'GHS moyen bébé dossier maman groupé'::text + WHEN 'EXH'::text THEN 'EXH dossier groupé'::text + WHEN 'EXHNG'::text THEN 'EXH dossier non groupé'::text + WHEN 'SSS'::text THEN 'Suppléments SRC,STF,REA'::text + WHEN 'IVG'::text THEN 'Forfaits IVG'::text + WHEN 'NNX'::text THEN 'Suppléments NN'::text + WHEN 'DIA'::text THEN 'Dialyse'::text + WHEN 'PJ'::text THEN 'PJ'::text + WHEN 'TMBG'::text THEN 'TM Budget Global MCO'::text + WHEN 'FJ'::text THEN 'FJ'::text + WHEN 'PMS'::text THEN 'Forfait PMS SSR'::text + WHEN 'ENT'::text THEN 'Forfait entrée'::text + WHEN 'GHT'::text THEN 'GHT (HAD'::text + WHEN 'FJA'::text THEN 'Forfait jour de sortie'::text + WHEN 'CPC'::text THEN 'Chambre particulière'::text + WHEN 'PRESTAM'::text THEN 'Montant moyen par jour'::text + WHEN 'SEH'::text THEN 'Forfaits SEh'::text + WHEN 'ATU'::text THEN 'ATU'::text + WHEN 'SAISIE'::text THEN 'Prestations saisies'::text + ELSE p_facture_ligne_valorise_c.type_ligne_code + END AS type_ligne_texte, + p_facture_ligne_valorise_c.mode_calcul_code, + p_facture_ligne_valorise_c.mode_calcul_texte + FROM activite.p_facture_ligne_valorise_c + JOIN activite.p_factures ON p_facture_ligne_valorise_c.no_facture = p_factures.no_facture + JOIN activite.t_lieux_c ON p_facture_ligne_valorise_c.lieu_id = t_lieux_c.oid + JOIN activite.t_rubriques_facturation ON p_facture_ligne_valorise_c.rubrique_facturation_id = t_rubriques_facturation.oid + JOIN activite.t_prestations ON p_facture_ligne_valorise_c.prestation_id = t_prestations.oid + LEFT JOIN activite.t_lpp_c ON p_facture_ligne_valorise_c.lpp_id = t_lpp_c.oid + LEFT JOIN activite.t_ucd_c ON p_facture_ligne_valorise_c.ucd_id = t_ucd_c.oid; \ No newline at end of file diff --git a/db/schema2/views/v_facture_solde_tiers_c_1.yaml b/db/schema2/views/v_facture_solde_tiers_c_1.yaml new file mode 100644 index 0000000..8a79c74 --- /dev/null +++ b/db/schema2/views/v_facture_solde_tiers_c_1.yaml @@ -0,0 +1,22 @@ +src: | + SELECT p_facture_solde_tiers_c.no_facture, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_factures.no_sejour, + p_factures.date_facture, + p_factures.date_vente, + p_factures.mois_vente, + p_factures.date_debut AS date_debut_facture, + p_factures.date_fin AS date_fin_facture, + p_facture_solde_tiers_c.date_comptable, + p_facture_solde_tiers_c.tiers_payant_id, + p_facture_solde_tiers_c.rubrique_comptabilisation_id, + p_facture_solde_tiers_c.prestation_id, + p_facture_solde_tiers_c.montant_comptabilise, + p_facture_solde_tiers_c.montant_regle, + p_facture_solde_tiers_c.montant_regle_0, + p_facture_solde_tiers_c.montant_regle_1, + p_facture_solde_tiers_c.montant_regle_2, + p_facture_solde_tiers_c.montant_comptabilise - p_facture_solde_tiers_c.montant_regle AS montant_solde + FROM activite.p_facture_solde_tiers_c + JOIN activite.p_factures ON p_facture_solde_tiers_c.no_facture = p_factures.no_facture; \ No newline at end of file diff --git a/db/schema2/views/v_facture_solde_tiers_c_r_4.yaml b/db/schema2/views/v_facture_solde_tiers_c_r_4.yaml new file mode 100644 index 0000000..35748ec --- /dev/null +++ b/db/schema2/views/v_facture_solde_tiers_c_r_4.yaml @@ -0,0 +1,148 @@ +dep: + - v_facture_solde_tiers_c_1 + - v_facture_solde_tiers_payant_1 + - v_facture_solde_tiers_prestation_1 + - v_facture_solde_tiers_rubrique_1 + - v_sejours_1 +src: | + SELECT v_facture_solde_tiers_c_1.date_comptable AS date_reference, + v_sejours_1.lieu_sortie_service_id AS lieu_reference_service_id, + v_sejours_1.lieu_sortie_service_code AS lieu_reference_service_code, + v_sejours_1.lieu_sortie_service_texte AS lieu_reference_service_texte, + v_sejours_1.lieu_sortie_service_section_id AS lieu_reference_service_section_id, + v_sejours_1.lieu_sortie_service_section_code AS lieu_reference_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte AS lieu_reference_service_section_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_sejours_1.lieu_sortie_activite_id AS lieu_reference_activite_id, + v_sejours_1.lieu_sortie_activite_code AS lieu_reference_activite_code, + v_sejours_1.lieu_sortie_activite_texte AS lieu_reference_activite_texte, + v_sejours_1.lieu_sortie_etage_id AS lieu_reference_etage_id, + v_sejours_1.lieu_sortie_etage_code AS lieu_reference_etage_code, + v_sejours_1.lieu_sortie_etage_texte AS lieu_reference_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id AS lieu_reference_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code AS lieu_reference_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte AS lieu_reference_etage_section_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.code_sorti, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.lieu_sortie_id, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_lit_id, + v_sejours_1.lieu_sortie_lit_code, + v_sejours_1.lieu_sortie_lit_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_facture_solde_tiers_c_1.no_facture, + v_facture_solde_tiers_c_1.facture_id, + v_facture_solde_tiers_c_1.date_facture, + v_facture_solde_tiers_c_1.date_vente, + v_facture_solde_tiers_c_1.date_comptable, + v_facture_solde_tiers_payant_1.type_tiers_payant_id, + v_facture_solde_tiers_payant_1.type_tiers_payant_code, + v_facture_solde_tiers_payant_1.type_tiers_payant_texte, + v_facture_solde_tiers_c_1.tiers_payant_id, + v_facture_solde_tiers_payant_1.tiers_payant_code, + v_facture_solde_tiers_payant_1.tiers_payant_texte, + v_facture_solde_tiers_c_1.rubrique_comptabilisation_id, + v_facture_solde_tiers_rubrique_1.rubrique_comptabilisation_code, + v_facture_solde_tiers_rubrique_1.rubrique_comptabilisation_texte, + v_facture_solde_tiers_rubrique_1.rubrique_comptabilisation_section_id, + v_facture_solde_tiers_rubrique_1.rubrique_comptabilisation_section_code, + v_facture_solde_tiers_rubrique_1.rubrique_comptabilisation_section_texte, + v_facture_solde_tiers_c_1.prestation_id, + v_facture_solde_tiers_prestation_1.prestation_code, + v_facture_solde_tiers_prestation_1.prestation_texte, + v_facture_solde_tiers_c_1.montant_comptabilise, + v_facture_solde_tiers_c_1.montant_regle, + v_facture_solde_tiers_c_1.montant_comptabilise - v_facture_solde_tiers_c_1.montant_regle AS montant_solde + FROM activite.v_facture_solde_tiers_c_1 + JOIN activite.v_sejours_1 ON v_facture_solde_tiers_c_1.no_sejour = v_sejours_1.no_sejour + JOIN activite.v_facture_solde_tiers_payant_1 ON v_facture_solde_tiers_payant_1.oid = v_facture_solde_tiers_c_1.tiers_payant_id + JOIN activite.v_facture_solde_tiers_prestation_1 ON v_facture_solde_tiers_prestation_1.oid = v_facture_solde_tiers_c_1.prestation_id + JOIN activite.v_facture_solde_tiers_rubrique_1 ON v_facture_solde_tiers_rubrique_1.oid = v_facture_solde_tiers_c_1.rubrique_comptabilisation_id; \ No newline at end of file diff --git a/db/schema2/views/v_facture_solde_tiers_h_1.yaml b/db/schema2/views/v_facture_solde_tiers_h_1.yaml new file mode 100644 index 0000000..b557411 --- /dev/null +++ b/db/schema2/views/v_facture_solde_tiers_h_1.yaml @@ -0,0 +1,22 @@ +src: | + SELECT p_facture_solde_tiers_h.no_facture, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_factures.no_sejour, + p_factures.date_facture, + p_factures.date_vente, + p_factures.mois_vente, + p_factures.date_debut AS date_debut_facture, + p_factures.date_fin AS date_fin_facture, + p_facture_solde_tiers_h.date_comptable, + p_facture_solde_tiers_h.tiers_payant_id, + p_facture_solde_tiers_h.rubrique_comptabilisation_id, + p_facture_solde_tiers_h.prestation_id, + p_facture_solde_tiers_h.montant_comptabilise, + p_facture_solde_tiers_h.montant_regle, + p_facture_solde_tiers_h.montant_regle_0, + p_facture_solde_tiers_h.montant_regle_1, + p_facture_solde_tiers_h.montant_regle_2, + p_facture_solde_tiers_h.montant_comptabilise - p_facture_solde_tiers_h.montant_regle AS montant_solde + FROM activite.p_facture_solde_tiers_h + JOIN activite.p_factures ON p_facture_solde_tiers_h.no_facture = p_factures.no_facture; \ No newline at end of file diff --git a/db/schema2/views/v_facture_solde_tiers_h_r_4.yaml b/db/schema2/views/v_facture_solde_tiers_h_r_4.yaml new file mode 100644 index 0000000..817f5d6 --- /dev/null +++ b/db/schema2/views/v_facture_solde_tiers_h_r_4.yaml @@ -0,0 +1,148 @@ +dep: + - v_facture_solde_tiers_h_1 + - v_facture_solde_tiers_payant_1 + - v_facture_solde_tiers_prestation_1 + - v_facture_solde_tiers_rubrique_1 + - v_sejours_1 +src: | + SELECT v_facture_solde_tiers_h_1.date_comptable AS date_reference, + v_sejours_1.lieu_sortie_service_id AS lieu_reference_service_id, + v_sejours_1.lieu_sortie_service_code AS lieu_reference_service_code, + v_sejours_1.lieu_sortie_service_texte AS lieu_reference_service_texte, + v_sejours_1.lieu_sortie_service_section_id AS lieu_reference_service_section_id, + v_sejours_1.lieu_sortie_service_section_code AS lieu_reference_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte AS lieu_reference_service_section_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_sejours_1.lieu_sortie_activite_id AS lieu_reference_activite_id, + v_sejours_1.lieu_sortie_activite_code AS lieu_reference_activite_code, + v_sejours_1.lieu_sortie_activite_texte AS lieu_reference_activite_texte, + v_sejours_1.lieu_sortie_etage_id AS lieu_reference_etage_id, + v_sejours_1.lieu_sortie_etage_code AS lieu_reference_etage_code, + v_sejours_1.lieu_sortie_etage_texte AS lieu_reference_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id AS lieu_reference_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code AS lieu_reference_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte AS lieu_reference_etage_section_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.code_sorti, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.lieu_sortie_id, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_lit_id, + v_sejours_1.lieu_sortie_lit_code, + v_sejours_1.lieu_sortie_lit_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_facture_solde_tiers_h_1.no_facture, + v_facture_solde_tiers_h_1.facture_id, + v_facture_solde_tiers_h_1.date_facture, + v_facture_solde_tiers_h_1.date_vente, + v_facture_solde_tiers_h_1.date_comptable, + v_facture_solde_tiers_payant_1.type_tiers_payant_id, + v_facture_solde_tiers_payant_1.type_tiers_payant_code, + v_facture_solde_tiers_payant_1.type_tiers_payant_texte, + v_facture_solde_tiers_h_1.tiers_payant_id, + v_facture_solde_tiers_payant_1.tiers_payant_code, + v_facture_solde_tiers_payant_1.tiers_payant_texte, + v_facture_solde_tiers_h_1.rubrique_comptabilisation_id, + v_facture_solde_tiers_rubrique_1.rubrique_comptabilisation_code, + v_facture_solde_tiers_rubrique_1.rubrique_comptabilisation_texte, + v_facture_solde_tiers_rubrique_1.rubrique_comptabilisation_section_id, + v_facture_solde_tiers_rubrique_1.rubrique_comptabilisation_section_code, + v_facture_solde_tiers_rubrique_1.rubrique_comptabilisation_section_texte, + v_facture_solde_tiers_h_1.prestation_id, + v_facture_solde_tiers_prestation_1.prestation_code, + v_facture_solde_tiers_prestation_1.prestation_texte, + v_facture_solde_tiers_h_1.montant_comptabilise, + v_facture_solde_tiers_h_1.montant_regle, + v_facture_solde_tiers_h_1.montant_comptabilise - v_facture_solde_tiers_h_1.montant_regle AS montant_solde + FROM activite.v_facture_solde_tiers_h_1 + JOIN activite.v_sejours_1 ON v_facture_solde_tiers_h_1.no_sejour = v_sejours_1.no_sejour + JOIN activite.v_facture_solde_tiers_payant_1 ON v_facture_solde_tiers_payant_1.oid = v_facture_solde_tiers_h_1.tiers_payant_id + JOIN activite.v_facture_solde_tiers_prestation_1 ON v_facture_solde_tiers_prestation_1.oid = v_facture_solde_tiers_h_1.prestation_id + JOIN activite.v_facture_solde_tiers_rubrique_1 ON v_facture_solde_tiers_rubrique_1.oid = v_facture_solde_tiers_h_1.rubrique_comptabilisation_id; \ No newline at end of file diff --git a/db/schema2/views/v_facture_solde_tiers_payant_1.yaml b/db/schema2/views/v_facture_solde_tiers_payant_1.yaml new file mode 100644 index 0000000..5812654 --- /dev/null +++ b/db/schema2/views/v_facture_solde_tiers_payant_1.yaml @@ -0,0 +1,14 @@ +src: | + SELECT t_tiers_payant.oid, + t_tiers_payant.type_tiers_payant_id, + t_tiers_payant.type_tiers_payant AS type_tiers_payant_code, + t_tiers_payant.type_tiers_payant_texte, + t_tiers_payant.code AS tiers_payant_code, + t_tiers_payant.texte_court AS tiers_payant_texte, + t_tiers_payant.grand_regime_id AS tiers_payant_grand_regime_id, + t_tiers_payant.grand_regime_code AS tiers_payant_grand_regime_code, + t_tiers_payant.grand_regime_texte AS tiers_payant_grand_regime_texte, + t_tiers_payant.section_id AS tiers_payant_section_id, + t_tiers_payant.section_code AS tiers_payant_section_code, + t_tiers_payant.section_texte AS tiers_payant_section_texte + FROM activite.t_tiers_payant; \ No newline at end of file diff --git a/db/schema2/views/v_facture_solde_tiers_prestation_1.yaml b/db/schema2/views/v_facture_solde_tiers_prestation_1.yaml new file mode 100644 index 0000000..3a6a9fd --- /dev/null +++ b/db/schema2/views/v_facture_solde_tiers_prestation_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_prestations.oid, + t_prestations.code AS prestation_code, + t_prestations.texte_court AS prestation_texte, + t_prestations.section_id AS prestation_section_id, + t_prestations.section_code AS prestation_section_code, + t_prestations.section_texte AS prestation_section_texte + FROM activite.t_prestations; \ No newline at end of file diff --git a/db/schema2/views/v_facture_solde_tiers_rubrique_1.yaml b/db/schema2/views/v_facture_solde_tiers_rubrique_1.yaml new file mode 100644 index 0000000..f471efa --- /dev/null +++ b/db/schema2/views/v_facture_solde_tiers_rubrique_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_rubriques_facturation.oid, + t_rubriques_facturation.code AS rubrique_comptabilisation_code, + t_rubriques_facturation.texte_court AS rubrique_comptabilisation_texte, + t_rubriques_facturation.section_id AS rubrique_comptabilisation_section_id, + t_rubriques_facturation.section_code AS rubrique_comptabilisation_section_code, + t_rubriques_facturation.section_texte AS rubrique_comptabilisation_section_texte + FROM activite.t_rubriques_facturation; \ No newline at end of file diff --git a/db/schema2/views/v_factures_1.yaml b/db/schema2/views/v_factures_1.yaml new file mode 100644 index 0000000..7ab9d65 --- /dev/null +++ b/db/schema2/views/v_factures_1.yaml @@ -0,0 +1,81 @@ +src: | + SELECT p_factures.finess, + p_factures.no_sejour, + p_factures.sejour_id, + p_factures.no_facture, + p_factures.oid AS facture_id, + p_factures.date_debut, + p_factures.facture_reference_id, + p_factures.no_facture_reference, + p_factures.date_fin, + p_factures.type_facture, + p_factures.code_facture, + p_factures.date_facture, + p_factures.code_vente, + p_factures.date_vente, + p_factures.mois_vente, + p_factures.date_solde, + p_factures.montant_facture_c, + p_factures.montant_facture_h, + p_factures.montant_regle_c, + p_factures.montant_regle_h, + p_factures.delai_facture, + p_factures.delai_solde, + p_factures.date_expedition, + p_factures.delai_expedition, + p_factures.tiers_payant_1_id, + p_factures.tiers_payant_2_id, + p_factures.tiers_payant_22_id, + p_factures.tiers_payant_0_id, + p_factures.date_solde_0_c, + p_factures.date_solde_0_h, + p_factures.date_solde_1_c, + p_factures.date_solde_1_h, + p_factures.date_solde_2_c, + p_factures.date_solde_2_h, + p_factures.date_solde_22_c, + p_factures.date_solde_22_h, + p_factures.date_expedition_0, + p_factures.date_expedition_1, + p_factures.date_expedition_2, + p_factures.date_expedition_22, + p_factures.code_expedie_0, + p_factures.code_expedie_1, + p_factures.code_expedie_2, + p_factures.code_expedie_22, + p_factures.no_bordereau_0, + p_factures.no_bordereau_1, + p_factures.no_bordereau_2, + p_factures.no_bordereau_22, + p_factures.montant_facture_0_c, + p_factures.montant_facture_0_h, + p_factures.montant_facture_1_c, + p_factures.montant_facture_1_h, + p_factures.montant_facture_2_c, + p_factures.montant_facture_2_h, + p_factures.montant_facture_22_c, + p_factures.montant_facture_22_h, + p_factures.montant_regle_0_c, + p_factures.montant_regle_0_h, + p_factures.montant_regle_1_c, + p_factures.montant_regle_1_h, + p_factures.montant_regle_2_c, + p_factures.montant_regle_2_h, + p_factures.montant_regle_22_c, + p_factures.montant_regle_22_h, + p_factures.delai_expedition_0, + p_factures.delai_expedition_1, + p_factures.delai_expedition_2, + p_factures.delai_expedition_22, + p_factures.delai_solde_0_c, + p_factures.delai_solde_0_h, + p_factures.delai_solde_1_c, + p_factures.delai_solde_1_h, + p_factures.delai_solde_2_c, + p_factures.delai_solde_2_h, + p_factures.delai_solde_22_c, + p_factures.delai_solde_22_h, + p_factures.ghs_id, + p_factures.particularite_t2a, + p_factures.code_cloture + FROM activite.p_factures; \ No newline at end of file diff --git a/db/schema2/views/v_factures_2.yaml b/db/schema2/views/v_factures_2.yaml new file mode 100644 index 0000000..6db65b7 --- /dev/null +++ b/db/schema2/views/v_factures_2.yaml @@ -0,0 +1,535 @@ +src: | + SELECT p_factures.finess, + p_factures.no_sejour, + p_factures.sejour_id, + p_factures.no_facture, + p_factures.oid AS facture_id, + p_factures.no_facture_reference, + p_factures.facture_reference_id, + p_factures_references.date_debut, + p_factures_references.date_fin, + p_factures.type_facture, + p_factures.code_facture, + p_factures.date_facture, + CASE + WHEN p_factures_references.date_facture <> '2099-12-31'::date THEN p_factures_references.date_facture - p_factures_references.date_fin + ELSE 0 + END AS delai_facture, + CASE + WHEN p_factures_references.date_facture <> '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_facture, + CASE + WHEN p_factures.date_facture = '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_non_facture, + p_factures.code_vente, + p_factures.date_vente, + p_factures.mois_vente, + p_factures.ghs_id, + p_factures.particularite_t2a, + p_factures.code_cloture, + p_factures.code_cp_demandee, + p_factures.date_encours, + p_factures.ghs_bebe1_id, + p_factures.ghs_bebe2_id, + p_factures.ghs_bebe3_id, + 1 AS nb_factures, + CASE + WHEN p_factures.type_facture = '0'::bpchar THEN 0 + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + ELSE 1 + END AS nb_factures_regularisation, + p_factures.nb_rejets AS nb_factures_rejet, + t_types_tiers_payant_0.code AS type_tiers_payant_0_code, + t_types_tiers_payant_0.texte AS type_tiers_payant_0_texte, + t_tiers_payant_0.oid AS tiers_payant_0_id, + t_tiers_payant_0.code AS tiers_payant_0_code, + t_tiers_payant_0.texte_court AS tiers_payant_0_texte, + t_types_tiers_payant_1.code AS type_tiers_payant_1_code, + t_types_tiers_payant_1.texte AS type_tiers_payant_1_texte, + t_tiers_payant_1.oid AS tiers_payant_1_id, + t_tiers_payant_1.code AS tiers_payant_1_code, + t_tiers_payant_1.texte_court AS tiers_payant_1_texte, + t_types_tiers_payant_2.code AS type_tiers_payant_2_code, + t_types_tiers_payant_2.texte AS type_tiers_payant_2_texte, + t_tiers_payant_2.oid AS tiers_payant_2_id, + t_tiers_payant_2.code AS tiers_payant_2_code, + t_tiers_payant_2.texte_court AS tiers_payant_2_texte, + t_types_tiers_payant_22.code AS type_tiers_payant_22_code, + t_types_tiers_payant_22.texte AS type_tiers_payant_22_texte, + t_tiers_payant_22.oid AS tiers_payant_22_id, + t_tiers_payant_22.code AS tiers_payant_22_code, + t_tiers_payant_22.texte_court AS tiers_payant_22_texte, + p_factures.montant_facture_c + p_factures.montant_facture_h AS montant_facture, + p_factures.montant_facture_c, + p_factures.montant_facture_h, + p_factures.montant_facture_0_c + p_factures.montant_facture_0_c AS montant_facture_0, + p_factures.montant_facture_0_c, + p_factures.montant_facture_0_h, + p_factures.montant_facture_1_c + p_factures.montant_facture_1_c AS montant_facture_1, + p_factures.montant_facture_1_c, + p_factures.montant_facture_1_h, + p_factures.montant_facture_2_c + p_factures.montant_facture_2_c AS montant_facture_2, + p_factures.montant_facture_2_c, + p_factures.montant_facture_2_h, + p_factures.montant_facture_22_c + p_factures.montant_facture_22_c AS montant_facture_22, + p_factures.montant_facture_22_c, + p_factures.montant_facture_22_h, + p_factures.montant_comptabilise_c + p_factures.montant_comptabilise_h AS montant_comptabilise, + p_factures.montant_comptabilise_c, + p_factures.montant_comptabilise_h, + p_factures.montant_comptabilise_0_c + p_factures.montant_comptabilise_0_c AS montant_comptabilise_0, + p_factures.montant_comptabilise_0_c, + p_factures.montant_comptabilise_0_h, + p_factures.montant_comptabilise_1_c + p_factures.montant_comptabilise_1_c AS montant_comptabilise_1, + p_factures.montant_comptabilise_1_c, + p_factures.montant_comptabilise_1_h, + p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_2_c AS montant_comptabilise_2, + p_factures.montant_comptabilise_2_c, + p_factures.montant_comptabilise_2_h, + p_factures.montant_comptabilise_22_c + p_factures.montant_comptabilise_22_c AS montant_comptabilise_22, + p_factures.montant_comptabilise_22_c, + p_factures.montant_comptabilise_22_h, + p_factures.montant_encours_c + p_factures.montant_encours_h AS montant_encours, + p_factures.montant_encours_c, + p_factures.montant_encours_h, + p_factures.montant_encours_0_c + p_factures.montant_encours_0_c AS montant_encours_0, + p_factures.montant_encours_0_c, + p_factures.montant_encours_0_h, + p_factures.montant_encours_1_c + p_factures.montant_encours_1_c AS montant_encours_1, + p_factures.montant_encours_1_c, + p_factures.montant_encours_1_h, + p_factures.montant_encours_2_c + p_factures.montant_encours_2_c AS montant_encours_2, + p_factures.montant_encours_2_c, + p_factures.montant_encours_2_h, + p_factures.montant_encours_22_c + p_factures.montant_encours_22_c AS montant_encours_22, + p_factures.montant_encours_22_c, + p_factures.montant_encours_22_h, + p_factures.montant_regle_c + p_factures.montant_regle_h AS montant_regle, + p_factures.montant_regle_c, + p_factures.montant_regle_h, + p_factures.montant_regle_0_c + p_factures.montant_regle_0_c AS montant_regle_0, + p_factures.montant_regle_0_c, + p_factures.montant_regle_0_h, + p_factures.montant_regle_1_c + p_factures.montant_regle_1_c AS montant_regle_1, + p_factures.montant_regle_1_c, + p_factures.montant_regle_1_h, + p_factures.montant_regle_2_c + p_factures.montant_regle_2_c AS montant_regle_2, + p_factures.montant_regle_2_c, + p_factures.montant_regle_2_h, + p_factures.montant_regle_22_c + p_factures.montant_regle_22_c AS montant_regle_22, + p_factures.montant_regle_22_c, + p_factures.montant_regle_22_h, + p_factures.montant_regle_c + p_factures.montant_regle_h - p_factures.montant_comptabilise_c - p_factures.montant_comptabilise_h AS montant_solde, + p_factures.montant_regle_c - p_factures.montant_comptabilise_c AS montant_solde_c, + p_factures.montant_regle_h - p_factures.montant_comptabilise_h AS montant_solde_h, + p_factures.montant_regle_0_c + p_factures.montant_regle_0_c - p_factures.montant_comptabilise_0_c - p_factures.montant_comptabilise_0_h AS montant_solde_0, + p_factures.montant_regle_0_c - p_factures.montant_comptabilise_0_c AS montant_solde_0_c, + p_factures.montant_regle_0_h - p_factures.montant_comptabilise_0_h AS montant_solde_0_h, + p_factures.montant_regle_1_c + p_factures.montant_regle_1_c - p_factures.montant_comptabilise_1_c - p_factures.montant_comptabilise_1_h AS montant_solde_1, + p_factures.montant_regle_1_c - p_factures.montant_comptabilise_1_c AS montant_solde_1_c, + p_factures.montant_regle_1_h - p_factures.montant_comptabilise_1_h AS montant_solde_1_h, + p_factures.montant_regle_2_c + p_factures.montant_regle_2_c - p_factures.montant_comptabilise_2_c - p_factures.montant_comptabilise_2_h AS montant_solde_2, + p_factures.montant_regle_2_c - p_factures.montant_comptabilise_2_c AS montant_solde_2_c, + p_factures.montant_regle_2_h - p_factures.montant_comptabilise_2_h AS montant_solde_2_h, + p_factures.montant_regle_22_c + p_factures.montant_regle_22_c - p_factures.montant_comptabilise_22_c - p_factures.montant_comptabilise_22_h AS montant_solde_22, + p_factures.montant_regle_22_c - p_factures.montant_comptabilise_22_c AS montant_solde_22_c, + p_factures.montant_regle_22_h - p_factures.montant_comptabilise_22_h AS montant_solde_22_h, + p_factures.code_expedie_0, + p_factures.code_expedie_1, + p_factures.code_expedie_2, + p_factures.code_expedie_22, + p_factures.date_expedition_0, + p_factures.date_expedition_1, + p_factures.date_expedition_2, + p_factures.date_expedition_22, + p_factures.no_bordereau_0, + p_factures.no_bordereau_1, + p_factures.no_bordereau_2, + p_factures.no_bordereau_22, + CASE + WHEN p_factures_references.date_expedition <> '2099-12-31'::date AND p_factures_references.date_expedition > p_factures_references.date_fin THEN (p_factures_references.date_expedition - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_expedition, + CASE + WHEN p_factures_references.date_expedition <> '2099-12-31'::date AND p_factures_references.date_expedition > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_expedition, + CASE + WHEN p_factures_references.date_expedition_0 <> '2099-12-31'::date AND p_factures_references.date_expedition_0 > p_factures_references.date_fin THEN (p_factures_references.date_expedition_0 - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_expedition_0, + CASE + WHEN p_factures_references.date_expedition_0 <> '2099-12-31'::date AND p_factures_references.date_expedition_0 > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_expedition_0, + CASE + WHEN p_factures_references.date_expedition_1 <> '2099-12-31'::date AND p_factures_references.date_expedition_1 > p_factures_references.date_fin THEN (p_factures_references.date_expedition_1 - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_expedition_1, + CASE + WHEN p_factures_references.date_expedition_1 <> '2099-12-31'::date AND p_factures_references.date_expedition_1 > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_expedition_1, + CASE + WHEN p_factures_references.date_expedition_2 <> '2099-12-31'::date AND p_factures_references.date_expedition_2 > p_factures_references.date_fin THEN (p_factures_references.date_expedition_2 - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_expedition_2, + CASE + WHEN p_factures_references.date_expedition_2 <> '2099-12-31'::date AND p_factures_references.date_expedition_2 > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_expedition_2, + CASE + WHEN p_factures_references.date_expedition_22 <> '2099-12-31'::date AND p_factures_references.date_expedition_22 > p_factures_references.date_fin THEN (p_factures_references.date_expedition_22 - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_expedition_22, + CASE + WHEN p_factures_references.date_expedition_22 <> '2099-12-31'::date AND p_factures_references.date_expedition_22 > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_expedition_22, + CASE + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND (p_factures.montant_facture_1_c <> 0::numeric AND p_factures.montant_comptabilise_1_c <> p_factures.montant_regle_1_c OR p_factures.montant_facture_1_h <> 0::numeric AND p_factures.montant_comptabilise_1_h <> p_factures.montant_regle_1_h) THEN 1 + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND (p_factures.montant_facture_2_c <> 0::numeric AND p_factures.montant_comptabilise_2_c <> p_factures.montant_regle_2_c OR p_factures.montant_facture_2_h <> 0::numeric AND p_factures.montant_comptabilise_2_h <> p_factures.montant_regle_2_h) THEN 1 + WHEN (p_factures.code_expedie_22 <> '1'::bpchar OR p_factures.code_expedie_22 IS NULL) AND (p_factures.montant_facture_22_c <> 0::numeric AND p_factures.montant_comptabilise_22_c <> p_factures.montant_regle_22_c OR p_factures.montant_facture_22_h <> 0::numeric AND p_factures.montant_comptabilise_22_h <> p_factures.montant_regle_22_h) THEN 1 + ELSE 0 + END AS nb_non_expedie, + CASE + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND p_factures.montant_facture_1_c <> 0::numeric AND p_factures.montant_comptabilise_1_c <> p_factures.montant_regle_1_c THEN 1 + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND p_factures.montant_facture_2_c <> 0::numeric AND p_factures.montant_comptabilise_2_c <> p_factures.montant_regle_2_c THEN 1 + WHEN (p_factures.code_expedie_22 <> '1'::bpchar OR p_factures.code_expedie_22 IS NULL) AND p_factures.montant_facture_22_c <> 0::numeric AND p_factures.montant_comptabilise_22_c <> p_factures.montant_regle_22_c THEN 1 + ELSE 0 + END AS nb_non_expedie_c, + CASE + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND p_factures.montant_facture_1_h <> 0::numeric AND p_factures.montant_comptabilise_1_h <> p_factures.montant_regle_1_h THEN 1 + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND p_factures.montant_facture_2_h <> 0::numeric AND p_factures.montant_comptabilise_2_h <> p_factures.montant_regle_2_h THEN 1 + WHEN (p_factures.code_expedie_22 <> '1'::bpchar OR p_factures.code_expedie_22 IS NULL) AND p_factures.montant_facture_22_h <> 0::numeric AND p_factures.montant_comptabilise_22_h <> p_factures.montant_regle_22_h THEN 1 + ELSE 0 + END AS nb_non_expedie_h, + 0 AS nb_non_expedie_0, + 0 AS nb_non_expedie_0_c, + 0 AS nb_non_expedie_0_h, + CASE + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND (p_factures.montant_facture_1_c <> 0::numeric OR p_factures.montant_facture_1_h <> 0::numeric) THEN 1 + ELSE 0 + END AS nb_non_expedie_1, + CASE + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND p_factures.montant_facture_1_c <> 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_1_c, + CASE + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND p_factures.montant_facture_1_h <> 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_1_h, + CASE + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND (p_factures.montant_facture_2_c <> 0::numeric OR p_factures.montant_facture_2_h <> 0::numeric) THEN 1 + ELSE 0 + END AS nb_non_expedie_2, + CASE + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND p_factures.montant_facture_2_c <> 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_2_c, + CASE + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND p_factures.montant_facture_2_h <> 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_2_h, + CASE + WHEN (p_factures.code_expedie_22 <> '1'::bpchar OR p_factures.code_expedie_22 IS NULL) AND (p_factures.montant_facture_22_c <> 0::numeric OR p_factures.montant_facture_22_h <> 0::numeric) THEN 1 + ELSE 0 + END AS nb_non_expedie_22, + CASE + WHEN (p_factures.code_expedie_22 <> '1'::bpchar OR p_factures.code_expedie_22 IS NULL) AND p_factures.montant_facture_22_c <> 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_22_c, + CASE + WHEN (p_factures.code_expedie_22 <> '1'::bpchar OR p_factures.code_expedie_22 IS NULL) AND p_factures.montant_facture_22_h <> 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_22_h, + CASE + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL THEN p_factures.montant_comptabilise_1_c - p_factures.montant_regle_1_c + p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_h + ELSE 0::numeric + END + + CASE + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL THEN p_factures.montant_comptabilise_2_c - p_factures.montant_regle_2_c + p_factures.montant_comptabilise_2_h - p_factures.montant_regle_2_h + ELSE 0::numeric + END + + CASE + WHEN p_factures.code_expedie_22 <> '1'::bpchar OR p_factures.code_expedie_22 IS NULL THEN p_factures.montant_comptabilise_22_c - p_factures.montant_regle_22_c + p_factures.montant_comptabilise_22_h - p_factures.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie, + CASE + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL THEN p_factures.montant_comptabilise_1_c - p_factures.montant_regle_1_c + ELSE 0::numeric + END + + CASE + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL THEN p_factures.montant_comptabilise_2_c - p_factures.montant_regle_2_c + ELSE 0::numeric + END + + CASE + WHEN p_factures.code_expedie_22 <> '1'::bpchar OR p_factures.code_expedie_22 IS NULL THEN p_factures.montant_comptabilise_22_c - p_factures.montant_regle_22_c + ELSE 0::numeric + END AS montant_non_expedie_c, + CASE + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL THEN p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_h + ELSE 0::numeric + END + + CASE + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL THEN p_factures.montant_comptabilise_2_h - p_factures.montant_regle_2_h + ELSE 0::numeric + END + + CASE + WHEN p_factures.code_expedie_22 <> '1'::bpchar OR p_factures.code_expedie_22 IS NULL THEN p_factures.montant_comptabilise_22_h - p_factures.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie_h, + 0 AS montant_non_expedie_0, + 0 AS montant_non_expedie_0_c, + 0 AS montant_non_expedie_0_h, + CASE + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL THEN p_factures.montant_comptabilise_1_c - p_factures.montant_regle_1_c + p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_h + ELSE 0::numeric + END AS montant_non_expedie_1, + CASE + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL THEN p_factures.montant_comptabilise_1_c - p_factures.montant_regle_1_c + ELSE 0::numeric + END AS montant_non_expedie_1_c, + CASE + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL THEN p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_h + ELSE 0::numeric + END AS montant_non_expedie_1_h, + CASE + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL THEN p_factures.montant_comptabilise_2_c - p_factures.montant_regle_2_c + p_factures.montant_comptabilise_2_h - p_factures.montant_regle_2_h + ELSE 0::numeric + END AS montant_non_expedie_2, + CASE + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL THEN p_factures.montant_comptabilise_2_c - p_factures.montant_regle_2_c + ELSE 0::numeric + END AS montant_non_expedie_2_c, + CASE + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL THEN p_factures.montant_comptabilise_2_h - p_factures.montant_regle_2_h + ELSE 0::numeric + END AS montant_non_expedie_2_h, + CASE + WHEN p_factures.code_expedie_22 <> '1'::bpchar OR p_factures.code_expedie_22 IS NULL THEN p_factures.montant_comptabilise_22_c - p_factures.montant_regle_22_c + p_factures.montant_comptabilise_22_h - p_factures.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie_22, + CASE + WHEN p_factures.code_expedie_22 <> '1'::bpchar OR p_factures.code_expedie_22 IS NULL THEN p_factures.montant_comptabilise_22_c - p_factures.montant_regle_22_c + ELSE 0::numeric + END AS montant_non_expedie_22_c, + CASE + WHEN p_factures.code_expedie_22 <> '1'::bpchar OR p_factures.code_expedie_22 IS NULL THEN p_factures.montant_comptabilise_22_h - p_factures.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie_22_h, + p_factures.date_solde_reference, + CASE + WHEN p_factures_references.date_solde_reference <> '2099-12-31'::date AND p_factures_references.date_solde_reference > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference, + CASE + WHEN p_factures_references.date_solde_reference <> '2099-12-31'::date AND p_factures_references.date_solde_reference > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference, + p_factures.date_solde_reference_c, + CASE + WHEN p_factures_references.date_solde_reference_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_c > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_c - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_c, + CASE + WHEN p_factures_references.date_solde_reference_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_c > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_c, + p_factures.date_solde_reference_h, + CASE + WHEN p_factures_references.date_solde_reference_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_h > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_h - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_h, + CASE + WHEN p_factures_references.date_solde_reference_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_h > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_h, + GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) AS date_solde_reference_0, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) > p_factures_references.date_fin THEN (GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_0, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_0, + p_factures.date_solde_reference_0_c, + CASE + WHEN p_factures_references.date_solde_reference_0_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_0_c > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_0_c - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_0_c, + CASE + WHEN p_factures_references.date_solde_reference_0_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_0_c > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_0_c, + p_factures.date_solde_reference_0_h, + CASE + WHEN p_factures_references.date_solde_reference_0_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_0_h > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_0_h - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_0_h, + CASE + WHEN p_factures_references.date_solde_reference_0_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_0_h > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_0_h, + GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) AS date_solde_reference_1, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) > p_factures_references.date_fin THEN (GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_1, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_1, + p_factures.date_solde_reference_1_c, + CASE + WHEN p_factures_references.date_solde_reference_1_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_1_c > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_1_c - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_1_c, + CASE + WHEN p_factures_references.date_solde_reference_1_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_1_c > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_1_c, + p_factures.date_solde_reference_1_h, + CASE + WHEN p_factures_references.date_solde_reference_1_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_1_h > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_1_h - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_1_h, + CASE + WHEN p_factures_references.date_solde_reference_1_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_1_h > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_1_h, + GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) AS date_solde_reference_2, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) > p_factures_references.date_fin THEN (GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_2, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_2, + p_factures.date_solde_reference_2_c, + CASE + WHEN p_factures_references.date_solde_reference_2_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_2_c > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_2_c - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_2_c, + CASE + WHEN p_factures_references.date_solde_reference_2_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_2_c > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_2_c, + p_factures.date_solde_reference_2_h, + CASE + WHEN p_factures_references.date_solde_reference_2_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_2_h > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_2_h - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_2_h, + CASE + WHEN p_factures_references.date_solde_reference_2_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_2_h > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_2_h, + GREATEST(p_factures_references.date_solde_reference_22_c, p_factures_references.date_solde_reference_22_h) AS date_solde_reference_22, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_22_c, p_factures_references.date_solde_reference_22_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_22_c, p_factures_references.date_solde_reference_22_h) > p_factures_references.date_fin THEN (GREATEST(p_factures_references.date_solde_reference_22_c, p_factures_references.date_solde_reference_22_h) - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_22, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_22_c, p_factures_references.date_solde_reference_22_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_22_c, p_factures_references.date_solde_reference_22_h) > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_22, + p_factures.date_solde_reference_22_c, + CASE + WHEN p_factures_references.date_solde_reference_22_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_22_c > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_22_c - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_22_c, + CASE + WHEN p_factures_references.date_solde_reference_22_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_22_c > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_22_c, + p_factures.date_solde_reference_22_h, + CASE + WHEN p_factures_references.date_solde_reference_22_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_22_h > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_22_h - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_22_h, + CASE + WHEN p_factures_references.date_solde_reference_22_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_22_h > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_22_h, + CASE + WHEN p_factures.montant_comptabilise_c <> p_factures.montant_regle_c THEN 1 + WHEN p_factures.montant_comptabilise_h <> p_factures.montant_regle_h THEN 1 + ELSE 0 + END AS nb_non_solde, + CASE + WHEN p_factures.montant_comptabilise_c <> p_factures.montant_regle_c THEN 1 + ELSE 0 + END AS nb_non_solde_c, + CASE + WHEN p_factures.montant_comptabilise_h <> p_factures.montant_regle_h THEN 1 + ELSE 0 + END AS nb_non_solde_h, + CASE + WHEN p_factures.montant_comptabilise_0_c <> p_factures.montant_regle_0_c THEN 1 + WHEN p_factures.montant_comptabilise_0_h <> p_factures.montant_regle_0_h THEN 1 + ELSE 0 + END AS nb_non_solde_0, + CASE + WHEN p_factures.montant_comptabilise_0_c <> p_factures.montant_regle_0_c THEN 1 + ELSE 0 + END AS nb_non_solde_0_c, + CASE + WHEN p_factures.montant_comptabilise_0_h <> p_factures.montant_regle_0_h THEN 1 + ELSE 0 + END AS nb_non_solde_0_h, + CASE + WHEN p_factures.montant_comptabilise_1_c <> p_factures.montant_regle_1_c THEN 1 + WHEN p_factures.montant_comptabilise_1_h <> p_factures.montant_regle_1_h THEN 1 + ELSE 0 + END AS nb_non_solde_1, + CASE + WHEN p_factures.montant_comptabilise_1_c <> p_factures.montant_regle_1_c THEN 1 + ELSE 0 + END AS nb_non_solde_1_c, + CASE + WHEN p_factures.montant_comptabilise_1_h <> p_factures.montant_regle_1_h THEN 1 + ELSE 0 + END AS nb_non_solde_1_h, + CASE + WHEN p_factures.montant_comptabilise_2_c <> p_factures.montant_regle_2_c THEN 1 + WHEN p_factures.montant_comptabilise_2_h <> p_factures.montant_regle_2_h THEN 1 + ELSE 0 + END AS nb_non_solde_2, + CASE + WHEN p_factures.montant_comptabilise_2_c <> p_factures.montant_regle_2_c THEN 1 + ELSE 0 + END AS nb_non_solde_2_c, + CASE + WHEN p_factures.montant_comptabilise_2_h <> p_factures.montant_regle_2_h THEN 1 + ELSE 0 + END AS nb_non_solde_2_h, + CASE + WHEN p_factures.montant_comptabilise_22_c <> p_factures.montant_regle_22_c THEN 1 + WHEN p_factures.montant_comptabilise_22_h <> p_factures.montant_regle_22_h THEN 1 + ELSE 0 + END AS nb_non_solde_22, + CASE + WHEN p_factures.montant_comptabilise_22_c <> p_factures.montant_regle_22_c THEN 1 + ELSE 0 + END AS nb_non_solde_22_c, + CASE + WHEN p_factures.montant_comptabilise_22_h <> p_factures.montant_regle_22_h THEN 1 + ELSE 0 + END AS nb_non_solde_22_h, + p_factures.montant_comptabilise_c - p_factures.montant_regle_c + p_factures.montant_comptabilise_h - p_factures.montant_regle_h AS montant_non_solde, + p_factures.montant_comptabilise_c - p_factures.montant_regle_c AS montant_non_solde_c, + p_factures.montant_comptabilise_h - p_factures.montant_regle_h AS montant_non_solde_h + FROM activite.p_factures + JOIN activite.p_factures p_factures_references ON p_factures.no_facture_reference = p_factures_references.no_facture + JOIN activite.t_tiers_payant t_tiers_payant_0 ON p_factures.tiers_payant_0_id = t_tiers_payant_0.oid + JOIN activite.t_tiers_payant t_tiers_payant_1 ON p_factures.tiers_payant_1_id = t_tiers_payant_1.oid + JOIN activite.t_tiers_payant t_tiers_payant_2 ON p_factures.tiers_payant_2_id = t_tiers_payant_2.oid + JOIN activite.t_tiers_payant t_tiers_payant_22 ON p_factures.tiers_payant_22_id = t_tiers_payant_22.oid + JOIN activite.t_types_tiers_payant t_types_tiers_payant_0 ON t_tiers_payant_0.type_tiers_payant = t_types_tiers_payant_0.code + JOIN activite.t_types_tiers_payant t_types_tiers_payant_1 ON t_tiers_payant_1.type_tiers_payant = t_types_tiers_payant_1.code + JOIN activite.t_types_tiers_payant t_types_tiers_payant_2 ON t_tiers_payant_2.type_tiers_payant = t_types_tiers_payant_2.code + JOIN activite.t_types_tiers_payant t_types_tiers_payant_22 ON t_tiers_payant_22.type_tiers_payant = t_types_tiers_payant_22.code; \ No newline at end of file diff --git a/db/schema2/views/v_factures_4.yaml b/db/schema2/views/v_factures_4.yaml new file mode 100644 index 0000000..f30184f --- /dev/null +++ b/db/schema2/views/v_factures_4.yaml @@ -0,0 +1,518 @@ +src: | + SELECT p_factures.finess, + p_factures.sejour_id, + p_factures.no_sejour, + p_factures.oid AS facture_id, + p_factures.no_facture, + p_factures.facture_reference_id, + p_factures.no_facture_reference, + p_factures_references.date_debut, + p_factures_references.date_fin, + p_factures.type_facture, + p_factures.code_facture, + p_factures.date_facture, + CASE + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures_references.date_facture <> '2099-12-31'::date THEN p_factures_references.date_facture - p_factures_references.date_fin + ELSE 0 + END AS delai_facture, + CASE + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures_references.date_facture <> '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_facture, + CASE + WHEN p_factures.type_facture = 'E'::bpchar THEN 1 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.date_facture = '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_non_facture, + p_factures.code_vente, + p_factures.date_vente, + p_factures.mois_vente, + p_factures.ghs_id, + p_factures.particularite_t2a, + p_factures.code_cloture, + p_factures.code_cp_demandee, + p_factures.date_encours, + - 1::bigint AS type_tiers_payant_id, + ''::text AS type_tiers_payant_code, + ''::text AS type_tiers_payant_texte, + 0 AS tiers_payant_id, + ''::text AS tiers_payant_code, + ''::text AS tiers_payant_texte, + 0 AS tiers_payant_grand_regime_id, + ''::text AS tiers_payant_grand_regime_code, + ''::text AS tiers_payant_grand_regime_texte, + 1 AS nb_factures, + CASE + WHEN p_factures.type_facture = '0'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + ELSE 1 + END AS nb_factures_regularisation, + p_factures.nb_rejets AS nb_factures_rejet, + p_factures.montant_facture_c + p_factures.montant_facture_h AS montant_facture, + p_factures.montant_facture_c, + p_factures.montant_facture_h, + p_factures.montant_facture_0_c + p_factures.montant_facture_0_h AS montant_facture_0, + p_factures.montant_facture_0_c, + p_factures.montant_facture_0_h, + p_factures.montant_facture_1_c + p_factures.montant_facture_1_h AS montant_facture_1, + p_factures.montant_facture_1_c, + p_factures.montant_facture_1_h, + p_factures.montant_facture_2_c + p_factures.montant_facture_22_c + p_factures.montant_facture_2_h + p_factures.montant_facture_22_h AS montant_facture_2, + p_factures.montant_facture_2_c + p_factures.montant_facture_22_c AS montant_facture_2_c, + p_factures.montant_facture_2_h + p_factures.montant_facture_22_h AS montant_facture_2_h, + p_factures.montant_comptabilise_c + p_factures.montant_comptabilise_h AS montant_comptabilise, + p_factures.montant_comptabilise_c, + p_factures.montant_comptabilise_h, + p_factures.montant_comptabilise_0_c + p_factures.montant_comptabilise_0_h AS montant_comptabilise_0, + p_factures.montant_comptabilise_0_c, + p_factures.montant_comptabilise_0_h, + p_factures.montant_comptabilise_1_c + p_factures.montant_comptabilise_1_h AS montant_comptabilise_1, + p_factures.montant_comptabilise_1_c, + p_factures.montant_comptabilise_1_h, + p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c + p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h AS montant_comptabilise_2, + p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c AS montant_comptabilise_2_c, + p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h AS montant_comptabilise_2_h, + p_factures.montant_encours_c + p_factures.montant_encours_h AS montant_encours, + p_factures.montant_encours_c, + p_factures.montant_encours_h, + p_factures.montant_encours_0_c + p_factures.montant_encours_0_h AS montant_encours_0, + p_factures.montant_encours_0_c, + p_factures.montant_encours_0_h, + p_factures.montant_encours_1_c + p_factures.montant_encours_1_h AS montant_encours_1, + p_factures.montant_encours_1_c, + p_factures.montant_encours_1_h, + p_factures.montant_encours_2_c + p_factures.montant_encours_2_h AS montant_encours_2, + p_factures.montant_encours_2_c, + p_factures.montant_encours_2_h, + p_factures.montant_regle_c + p_factures.montant_regle_h AS montant_regle, + p_factures.montant_regle_c, + p_factures.montant_regle_h, + p_factures.montant_regle_0_c + p_factures.montant_regle_0_h AS montant_regle_0, + p_factures.montant_regle_0_c, + p_factures.montant_regle_0_h, + p_factures.montant_regle_1_c + p_factures.montant_regle_1_h AS montant_regle_1, + p_factures.montant_regle_1_c, + p_factures.montant_regle_1_h, + p_factures.montant_regle_2_c + p_factures.montant_regle_22_c + p_factures.montant_regle_2_h + p_factures.montant_regle_22_h AS montant_regle_2, + p_factures.montant_regle_2_c + p_factures.montant_regle_22_c AS montant_regle_2_c, + p_factures.montant_regle_2_h + p_factures.montant_regle_22_h AS montant_regle_2_h, + p_factures.montant_comptabilise_c + p_factures.montant_comptabilise_h - p_factures.montant_regle_c - p_factures.montant_regle_h AS montant_solde, + p_factures.montant_comptabilise_c - p_factures.montant_regle_c AS montant_solde_c, + p_factures.montant_comptabilise_h - p_factures.montant_regle_h AS montant_solde_h, + p_factures.montant_comptabilise_0_c + p_factures.montant_comptabilise_0_h - p_factures.montant_regle_0_c - p_factures.montant_regle_0_h AS montant_solde_0, + p_factures.montant_comptabilise_0_c - p_factures.montant_regle_0_c AS montant_solde_0_c, + p_factures.montant_comptabilise_0_h - p_factures.montant_regle_0_h AS montant_solde_0_h, + p_factures.montant_comptabilise_1_c + p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_c - p_factures.montant_regle_1_h AS montant_solde_1, + p_factures.montant_comptabilise_1_c - p_factures.montant_regle_1_c AS montant_solde_1_c, + p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_h AS montant_solde_1_h, + p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c + p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h - p_factures.montant_regle_2_c - p_factures.montant_regle_22_c - p_factures.montant_regle_2_h - p_factures.montant_regle_22_h AS montant_solde_2, + p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c - p_factures.montant_regle_2_c - p_factures.montant_regle_22_c AS montant_solde_2_c, + p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h - p_factures.montant_regle_2_h - p_factures.montant_regle_22_h AS montant_solde_2_h, + ''::text AS code_expedie, + NULL::date AS date_expedition, + ''::text AS no_bordereau, + CASE + WHEN p_factures_references.date_expedition <> '2099-12-31'::date AND p_factures_references.date_expedition > p_factures_references.date_fin THEN (p_factures_references.date_expedition - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_expedition, + CASE + WHEN p_factures_references.date_expedition <> '2099-12-31'::date AND p_factures_references.date_expedition > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_expedition, + 0 AS delai_expedition_0, + 0 AS nb_delai_expedition_0, + CASE + WHEN p_factures_references.date_expedition_1 <> '2099-12-31'::date AND p_factures_references.date_expedition_1 > p_factures_references.date_fin THEN (p_factures_references.date_expedition_1 - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_expedition_1, + CASE + WHEN p_factures_references.date_expedition_1 <> '2099-12-31'::date AND p_factures_references.date_expedition_1 > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_expedition_1, + CASE + WHEN p_factures_references.date_expedition_2 <> '2099-12-31'::date AND p_factures_references.date_expedition_2 > p_factures_references.date_fin THEN (p_factures_references.date_expedition_1 - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_expedition_2, + CASE + WHEN p_factures_references.date_expedition_2 <> '2099-12-31'::date AND p_factures_references.date_expedition_2 > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_expedition_2, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_1_c = p_factures.montant_regle_1_c AND p_factures.montant_comptabilise_1_h = p_factures.montant_regle_1_h AND (p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c) = (p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) AND (p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h) = (p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) THEN 0 + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND (p_factures.montant_facture_1_c > 0::numeric OR p_factures.montant_facture_1_h > 0::numeric) THEN 1 + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND ((p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) > 0::numeric OR (p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) > 0::numeric) THEN 1 + ELSE 0 + END AS nb_non_expedie, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_1_c = p_factures.montant_regle_1_c AND (p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c) = (p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) THEN 0 + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND p_factures.montant_facture_1_c > 0::numeric THEN 1 + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND (p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) > 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_c, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_1_h = p_factures.montant_regle_1_h AND (p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h) = (p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) THEN 0 + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND p_factures.montant_facture_1_h <> 0::numeric THEN 1 + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND (p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) <> 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_h, + 0 AS nb_non_expedie_0, + 0 AS nb_non_expedie_0_c, + 0 AS nb_non_expedie_0_h, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_1_c = p_factures.montant_regle_1_c AND p_factures.montant_comptabilise_1_h = p_factures.montant_regle_1_h THEN 0 + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND (p_factures.montant_facture_1_c > 0::numeric OR p_factures.montant_facture_1_h > 0::numeric) THEN 1 + ELSE 0 + END AS nb_non_expedie_1, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_1_c = p_factures.montant_regle_1_c THEN 0 + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND p_factures.montant_facture_1_c > 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_1_c, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_1_h = p_factures.montant_regle_1_h THEN 0 + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND p_factures.montant_facture_1_h > 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_1_h, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN (p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c) = (p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) AND (p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h) = (p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) THEN 0 + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND ((p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) > 0::numeric OR (p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) > 0::numeric) THEN 1 + ELSE 0 + END AS nb_non_expedie_2, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN (p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c) = (p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) THEN 0 + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND (p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) > 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_2_c, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN (p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h) = (p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) THEN 0 + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND (p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) > 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_2_h, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL AND (p_factures.montant_facture_1_c > 0::numeric OR p_factures.montant_facture_1_h > 0::numeric) THEN p_factures.montant_comptabilise_1_c - p_factures.montant_regle_1_c + p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_h + ELSE 0::numeric + END + + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL AND ((p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) > 0::numeric OR (p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) > 0::numeric) THEN p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c - p_factures.montant_regle_2_c - p_factures.montant_regle_22_c + p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h - p_factures.montant_regle_2_h - p_factures.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL AND p_factures.montant_facture_1_c > 0::numeric THEN p_factures.montant_comptabilise_1_c - p_factures.montant_regle_1_c + ELSE 0::numeric + END + + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL AND (p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) > 0::numeric THEN p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c - p_factures.montant_regle_2_c - p_factures.montant_regle_22_c + ELSE 0::numeric + END AS montant_non_expedie_c, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL AND p_factures.montant_facture_1_h > 0::numeric THEN p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_h + ELSE 0::numeric + END + + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL AND (p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) > 0::numeric THEN p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h - p_factures.montant_regle_2_h - p_factures.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie_h, + 0 AS montant_non_expedie_0, + 0 AS montant_non_expedie_0_c, + 0 AS montant_non_expedie_0_h, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL AND (p_factures.montant_facture_1_c > 0::numeric OR p_factures.montant_facture_1_h > 0::numeric) THEN p_factures.montant_comptabilise_1_c - p_factures.montant_regle_1_c + p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_h + ELSE 0::numeric + END AS montant_non_expedie_1, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL AND p_factures.montant_facture_1_c > 0::numeric THEN p_factures.montant_comptabilise_1_c - p_factures.montant_regle_1_c + ELSE 0::numeric + END AS montant_non_expedie_1_c, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL AND p_factures.montant_facture_1_h > 0::numeric THEN p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_h + ELSE 0::numeric + END AS montant_non_expedie_1_h, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL AND ((p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) > 0::numeric OR (p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) > 0::numeric) THEN p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c - p_factures.montant_regle_2_c - p_factures.montant_regle_22_c + p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h - p_factures.montant_regle_2_h - p_factures.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie_2, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL AND (p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) > 0::numeric THEN p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c - p_factures.montant_regle_2_c - p_factures.montant_regle_22_c + ELSE 0::numeric + END AS montant_non_expedie_2_c, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL AND (p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) > 0::numeric THEN p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h - p_factures.montant_regle_2_h - p_factures.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie_2_h, + GREATEST(p_factures_references.date_solde_reference_c, p_factures_references.date_solde_reference_h) AS date_solde_reference, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_c, p_factures_references.date_solde_reference_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_c, p_factures_references.date_solde_reference_h) > p_factures_references.date_fin THEN (GREATEST(p_factures_references.date_solde_reference_c, p_factures_references.date_solde_reference_h) - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_c, p_factures_references.date_solde_reference_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_c, p_factures_references.date_solde_reference_h) > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference, + p_factures.date_solde_reference_c, + CASE + WHEN p_factures_references.date_solde_reference_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_c > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_c - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_c, + CASE + WHEN p_factures_references.date_solde_reference_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_c > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_c, + p_factures.date_solde_reference_h, + CASE + WHEN p_factures_references.date_solde_reference_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_h > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_h - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_h, + CASE + WHEN p_factures_references.date_solde_reference_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_h > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_h, + GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) AS date_solde_reference_0, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) > p_factures_references.date_fin THEN (GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_0, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_0, + p_factures.date_solde_reference_0_c, + CASE + WHEN p_factures_references.date_solde_reference_0_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_0_c > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_0_c - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_0_c, + CASE + WHEN p_factures_references.date_solde_reference_0_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_0_c > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_0_c, + p_factures.date_solde_reference_0_h, + CASE + WHEN p_factures_references.date_solde_reference_0_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_0_h > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_0_h - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_0_h, + CASE + WHEN p_factures_references.date_solde_reference_0_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_0_h > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_0_h, + GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) AS date_solde_reference_1, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) > p_factures_references.date_fin THEN (GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_1, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_1, + p_factures.date_solde_reference_1_c, + CASE + WHEN p_factures_references.date_solde_reference_1_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_1_c > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_1_c - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_1_c, + CASE + WHEN p_factures_references.date_solde_reference_1_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_1_c > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_1_c, + p_factures.date_solde_reference_1_h, + CASE + WHEN p_factures_references.date_solde_reference_1_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_1_h > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_1_h - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_1_h, + CASE + WHEN p_factures_references.date_solde_reference_1_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_1_h > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_1_h, + GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) AS date_solde_reference_2, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) > p_factures_references.date_fin THEN (GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_2, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_2, + p_factures.date_solde_reference_2_c, + CASE + WHEN p_factures_references.date_solde_reference_2_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_2_c > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_2_c - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_2_c, + CASE + WHEN p_factures_references.date_solde_reference_2_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_2_c > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_2_c, + p_factures.date_solde_reference_2_h, + CASE + WHEN p_factures_references.date_solde_reference_2_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_2_h > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_2_h - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_2_h, + CASE + WHEN p_factures_references.date_solde_reference_2_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_2_h > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_2_h, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_0_c <> p_factures.montant_regle_0_c THEN 1 + WHEN p_factures.montant_comptabilise_0_h <> p_factures.montant_regle_0_h THEN 1 + WHEN p_factures.montant_comptabilise_1_c <> p_factures.montant_regle_1_c THEN 1 + WHEN p_factures.montant_comptabilise_1_h <> p_factures.montant_regle_1_h THEN 1 + WHEN (p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c) <> (p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) THEN 1 + WHEN (p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h) <> (p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) THEN 1 + ELSE 0 + END AS nb_non_solde, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_0_c <> p_factures.montant_regle_0_c THEN 1 + WHEN p_factures.montant_comptabilise_1_c <> p_factures.montant_regle_1_c THEN 1 + WHEN (p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c) <> (p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) THEN 1 + ELSE 0 + END AS nb_non_solde_c, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_0_h <> p_factures.montant_regle_0_h THEN 1 + WHEN p_factures.montant_comptabilise_1_h <> p_factures.montant_regle_1_h THEN 1 + WHEN (p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h) <> (p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) THEN 1 + ELSE 0 + END AS nb_non_solde_h, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_0_c <> p_factures.montant_regle_0_c THEN 1 + WHEN p_factures.montant_comptabilise_0_h <> p_factures.montant_regle_0_h THEN 1 + ELSE 0 + END AS nb_non_solde_0, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_0_c <> p_factures.montant_regle_0_c THEN 1 + ELSE 0 + END AS nb_non_solde_0_c, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_0_h <> p_factures.montant_regle_0_h THEN 1 + ELSE 0 + END AS nb_non_solde_0_h, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_1_c <> p_factures.montant_regle_1_c THEN 1 + WHEN p_factures.montant_comptabilise_1_h <> p_factures.montant_regle_1_h THEN 1 + ELSE 0 + END AS nb_non_solde_1, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_1_c <> p_factures.montant_regle_1_c THEN 1 + ELSE 0 + END AS nb_non_solde_1_c, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_1_h <> p_factures.montant_regle_1_h THEN 1 + ELSE 0 + END AS nb_non_solde_1_h, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN (p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c) <> (p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) THEN 1 + WHEN (p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h) <> (p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) THEN 1 + ELSE 0 + END AS nb_non_solde_2, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN (p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c) <> (p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) THEN 1 + ELSE 0 + END AS nb_non_solde_2_c, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN (p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h) <> (p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) THEN 1 + ELSE 0 + END AS nb_non_solde_2_h, + NULL::bigint[] AS tiers_payant_section_id, + NULL::text[] AS tiers_payant_section_code, + NULL::text[] AS tiers_payant_section_texte + FROM activite.p_factures + JOIN activite.p_factures p_factures_references ON p_factures.no_facture_reference = p_factures_references.no_facture + WHERE p_factures.type_facture <> 'P'::bpchar AND p_factures.type_facture <> 'G'::bpchar; \ No newline at end of file diff --git a/db/schema2/views/v_factures_4_0.yaml b/db/schema2/views/v_factures_4_0.yaml new file mode 100644 index 0000000..81c1432 --- /dev/null +++ b/db/schema2/views/v_factures_4_0.yaml @@ -0,0 +1,269 @@ +src: | + SELECT p_factures.finess, + p_factures.sejour_id, + p_factures.no_sejour, + p_factures.oid AS facture_id, + p_factures.no_facture, + p_factures.facture_reference_id, + p_factures.no_facture_reference, + p_factures_references.date_debut, + p_factures_references.date_fin, + p_factures.type_facture, + p_factures.code_facture, + p_factures.date_facture, + CASE + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures_references.date_facture <> '2099-12-31'::date THEN p_factures_references.date_facture - p_factures_references.date_fin + ELSE 0 + END AS delai_facture, + CASE + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures_references.date_facture <> '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_facture, + CASE + WHEN p_factures.type_facture = 'E'::bpchar THEN 1 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.date_facture = '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_non_facture, + p_factures.code_vente, + p_factures.date_vente, + p_factures.mois_vente, + p_factures.ghs_id, + p_factures.particularite_t2a, + p_factures.code_cloture, + p_factures.code_cp_demandee, + p_factures.date_encours, + t_types_tiers_payant.code::bigint AS type_tiers_payant_id, + t_types_tiers_payant.code AS type_tiers_payant_code, + t_types_tiers_payant.texte AS type_tiers_payant_texte, + t_tiers_payant.oid AS tiers_payant_id, + t_tiers_payant.code AS tiers_payant_code, + t_tiers_payant.texte_court AS tiers_payant_texte, + t_tiers_payant.grand_regime_id AS tiers_payant_grand_regime_id, + t_tiers_payant.grand_regime_code AS tiers_payant_grand_regime_code, + t_tiers_payant.grand_regime_texte AS tiers_payant_grand_regime_texte, + 1 AS nb_factures, + CASE + WHEN p_factures.type_facture = '0'::bpchar THEN 0 + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + ELSE 1 + END AS nb_factures_regularisation, + p_factures.nb_rejets AS nb_factures_rejet, + p_factures.montant_facture_0_c + p_factures.montant_facture_0_h AS montant_facture, + p_factures.montant_facture_0_c AS montant_facture_c, + p_factures.montant_facture_0_h AS montant_facture_h, + p_factures.montant_facture_0_c + p_factures.montant_facture_0_h AS montant_facture_0, + p_factures.montant_facture_0_c, + p_factures.montant_facture_0_h, + 0 AS montant_facture_1, + 0 AS montant_facture_1_c, + 0 AS montant_facture_1_h, + 0 AS montant_facture_2, + 0 AS montant_facture_2_c, + 0 AS montant_facture_2_h, + p_factures.montant_comptabilise_0_c + p_factures.montant_comptabilise_0_h AS montant_comptabilise, + p_factures.montant_comptabilise_0_c AS montant_comptabilise_c, + p_factures.montant_comptabilise_0_h AS montant_comptabilise_h, + p_factures.montant_comptabilise_0_c + p_factures.montant_comptabilise_0_h AS montant_comptabilise_0, + p_factures.montant_comptabilise_0_c, + p_factures.montant_comptabilise_0_h, + 0 AS montant_comptabilise_1, + 0 AS montant_comptabilise_1_c, + 0 AS montant_comptabilise_1_h, + 0 AS montant_comptabilise_2, + 0 AS montant_comptabilise_2_c, + 0 AS montant_comptabilise_2_h, + p_factures.montant_encours_0_c + p_factures.montant_encours_0_h AS montant_encours, + p_factures.montant_encours_0_c AS montant_encours_c, + p_factures.montant_encours_0_h AS montant_encours_h, + p_factures.montant_encours_0_c + p_factures.montant_encours_0_h AS montant_encours_0, + p_factures.montant_encours_0_c, + p_factures.montant_encours_0_h, + 0 AS montant_encours_1, + 0 AS montant_encours_1_c, + 0 AS montant_encours_1_h, + 0 AS montant_encours_2, + 0 AS montant_encours_2_c, + 0 AS montant_encours_2_h, + p_factures.montant_regle_0_c + p_factures.montant_regle_0_h AS montant_regle, + p_factures.montant_regle_0_c AS montant_regle_c, + p_factures.montant_regle_0_h AS montant_regle_h, + p_factures.montant_regle_0_c + p_factures.montant_regle_0_h AS montant_regle_0, + p_factures.montant_regle_0_c, + p_factures.montant_regle_0_h, + 0 AS montant_regle_1, + 0 AS montant_regle_1_c, + 0 AS montant_regle_1_h, + 0 AS montant_regle_2, + 0 AS montant_regle_2_c, + 0 AS montant_regle_2_h, + p_factures.montant_comptabilise_0_c + p_factures.montant_comptabilise_0_h - p_factures.montant_regle_0_c - p_factures.montant_regle_0_h AS montant_solde, + p_factures.montant_comptabilise_0_c - p_factures.montant_regle_0_c AS montant_solde_c, + p_factures.montant_comptabilise_0_h - p_factures.montant_regle_0_h AS montant_solde_h, + p_factures.montant_comptabilise_0_c + p_factures.montant_comptabilise_0_h - p_factures.montant_regle_0_c - p_factures.montant_regle_0_h AS montant_solde_0, + p_factures.montant_comptabilise_0_c - p_factures.montant_regle_0_c AS montant_solde_0_c, + p_factures.montant_comptabilise_0_h - p_factures.montant_regle_0_h AS montant_solde_0_h, + 0 AS montant_solde_1, + 0 AS montant_solde_1_c, + 0 AS montant_solde_1_h, + 0 AS montant_solde_2, + 0 AS montant_solde_2_c, + 0 AS montant_solde_2_h, + p_factures.code_expedie_0 AS code_expedie, + p_factures.date_expedition_0 AS date_expedition, + ''::text AS no_bordereau, + 0 AS delai_expedition, + 0 AS nb_delai_expedition, + 0 AS delai_expedition_0, + 0 AS nb_delai_expedition_0, + 0 AS delai_expedition_1, + 0 AS nb_delai_expedition_1, + 0 AS delai_expedition_2, + 0 AS nb_delai_expedition_2, + 0 AS nb_non_expedie, + 0 AS nb_non_expedie_c, + 0 AS nb_non_expedie_h, + 0 AS nb_non_expedie_0, + 0 AS nb_non_expedie_0_c, + 0 AS nb_non_expedie_0_h, + 0 AS nb_non_expedie_1, + 0 AS nb_non_expedie_1_c, + 0 AS nb_non_expedie_1_h, + 0 AS nb_non_expedie_2, + 0 AS nb_non_expedie_2_c, + 0 AS nb_non_expedie_2_h, + 0 AS montant_non_expedie, + 0 AS montant_non_expedie_c, + 0 AS montant_non_expedie_h, + 0 AS montant_non_expedie_0, + 0 AS montant_non_expedie_0_c, + 0 AS montant_non_expedie_0_h, + 0 AS montant_non_expedie_1, + 0 AS montant_non_expedie_1_c, + 0 AS montant_non_expedie_1_h, + 0 AS montant_non_expedie_2, + 0 AS montant_non_expedie_2_c, + 0 AS montant_non_expedie_2_h, + GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) AS date_solde_reference, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) > p_factures_references.date_fin THEN (GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference, + p_factures.date_solde_reference_c, + CASE + WHEN p_factures_references.date_solde_reference_0_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_0_c > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_0_c - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_c, + CASE + WHEN p_factures_references.date_solde_reference_0_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_0_c > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_c, + p_factures.date_solde_reference_h, + CASE + WHEN p_factures_references.date_solde_reference_0_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_0_h > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_0_h - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_h, + CASE + WHEN p_factures_references.date_solde_reference_0_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_0_h > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_h, + GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) AS date_solde_reference_0, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) > p_factures_references.date_fin THEN (GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_0, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_0_c, p_factures_references.date_solde_reference_0_h) > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_0, + p_factures.date_solde_reference_0_c, + CASE + WHEN p_factures_references.date_solde_reference_0_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_0_c > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_0_c - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_0_c, + CASE + WHEN p_factures_references.date_solde_reference_0_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_0_c > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_0_c, + p_factures.date_solde_reference_0_h, + CASE + WHEN p_factures_references.date_solde_reference_0_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_0_h > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_0_h - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_0_h, + CASE + WHEN p_factures_references.date_solde_reference_0_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_0_h > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_0_h, + NULL::date AS date_solde_reference_1, + 0 AS delai_solde_reference_1, + 0 AS nb_delai_solde_reference_1, + NULL::date AS date_solde_reference_1_c, + 0 AS delai_solde_reference_1_c, + 0 AS nb_delai_solde_reference_1_c, + NULL::date AS date_solde_reference_1_h, + 0 AS delai_solde_reference_1_h, + 0 AS nb_delai_solde_reference_1_h, + NULL::date AS date_solde_reference_2, + 0 AS delai_solde_reference_2, + 0 AS nb_delai_solde_reference_2, + NULL::date AS date_solde_reference_2_c, + 0 AS delai_solde_reference_2_c, + 0 AS nb_delai_solde_reference_2_c, + NULL::date AS date_solde_reference_2_h, + 0 AS delai_solde_reference_2_h, + 0 AS nb_delai_solde_reference_2_h, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.tiers_payant_0_id = t_tiers_payant.oid AND p_factures.montant_comptabilise_0_c <> p_factures.montant_regle_0_c THEN 1 + WHEN p_factures.tiers_payant_0_id = t_tiers_payant.oid AND p_factures.montant_comptabilise_0_h <> p_factures.montant_regle_0_h THEN 1 + ELSE 0 + END AS nb_non_solde, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.tiers_payant_0_id = t_tiers_payant.oid AND p_factures.montant_comptabilise_0_c <> p_factures.montant_regle_0_c THEN 1 + ELSE 0 + END AS nb_non_solde_c, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.tiers_payant_0_id = t_tiers_payant.oid AND p_factures.montant_comptabilise_0_h <> p_factures.montant_regle_0_h THEN 1 + ELSE 0 + END AS nb_non_solde_h, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.tiers_payant_0_id = t_tiers_payant.oid AND p_factures.montant_comptabilise_0_c <> p_factures.montant_regle_0_c THEN 1 + WHEN p_factures.tiers_payant_0_id = t_tiers_payant.oid AND p_factures.montant_comptabilise_0_h <> p_factures.montant_regle_0_h THEN 1 + ELSE 0 + END AS nb_non_solde_0, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.tiers_payant_0_id = t_tiers_payant.oid AND p_factures.montant_comptabilise_0_c <> p_factures.montant_regle_0_c THEN 1 + ELSE NULL::integer + END AS nb_non_solde_0_c, + CASE + WHEN p_factures.tiers_payant_0_id = t_tiers_payant.oid AND p_factures.montant_comptabilise_0_h <> p_factures.montant_regle_0_h THEN 1 + ELSE 0 + END AS nb_non_solde_0_h, + 0 AS nb_non_solde_1, + 0 AS nb_non_solde_1_c, + 0 AS nb_non_solde_1_h, + 0 AS nb_non_solde_2, + 0 AS nb_non_solde_2_c, + 0 AS nb_non_solde_2_h, + t_tiers_payant.section_id AS tiers_payant_section_id, + t_tiers_payant.section_code AS tiers_payant_section_code, + t_tiers_payant.section_texte AS tiers_payant_section_texte + FROM activite.p_factures + JOIN activite.p_factures p_factures_references ON p_factures.no_facture_reference = p_factures_references.no_facture + JOIN activite.t_tiers_payant ON t_tiers_payant.oid = p_factures.tiers_payant_0_id AND t_tiers_payant.oid <> 0 AND (p_factures.montant_encours_0_c <> 0::numeric OR p_factures.montant_facture_0_c <> 0::numeric OR p_factures.montant_facture_0_h <> 0::numeric OR p_factures.montant_regle_0_c <> 0::numeric OR p_factures.montant_regle_0_h <> 0::numeric OR p_factures.montant_facture_1_c = 0::numeric AND p_factures.montant_facture_1_h = 0::numeric AND p_factures.montant_facture_2_c = 0::numeric AND p_factures.montant_facture_2_h = 0::numeric OR p_factures.type_facture = 'E'::bpchar) + JOIN activite.t_types_tiers_payant ON t_tiers_payant.type_tiers_payant = t_types_tiers_payant.code + WHERE p_factures.type_facture <> 'P'::bpchar AND p_factures.type_facture <> 'G'::bpchar; \ No newline at end of file diff --git a/db/schema2/views/v_factures_4_1.yaml b/db/schema2/views/v_factures_4_1.yaml new file mode 100644 index 0000000..c17fcbb --- /dev/null +++ b/db/schema2/views/v_factures_4_1.yaml @@ -0,0 +1,372 @@ +src: | + SELECT p_factures.finess, + p_factures.sejour_id, + p_factures.no_sejour, + p_factures.oid AS facture_id, + p_factures.no_facture, + p_factures.facture_reference_id, + p_factures.no_facture_reference, + p_factures_references.date_debut, + p_factures_references.date_fin, + p_factures.type_facture, + p_factures.code_facture, + p_factures.date_facture, + CASE + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures_references.date_facture <> '2099-12-31'::date THEN p_factures_references.date_facture - p_factures_references.date_fin + ELSE 0 + END AS delai_facture, + CASE + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures_references.date_facture <> '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_facture, + CASE + WHEN p_factures.type_facture = 'E'::bpchar THEN 1 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.date_facture = '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_non_facture, + p_factures.code_vente, + p_factures.date_vente, + p_factures.mois_vente, + p_factures.ghs_id, + p_factures.particularite_t2a, + p_factures.code_cloture, + p_factures.code_cp_demandee, + p_factures.date_encours, + t_types_tiers_payant.code::bigint AS type_tiers_payant_id, + t_types_tiers_payant.code AS type_tiers_payant_code, + t_types_tiers_payant.texte AS type_tiers_payant_texte, + t_tiers_payant.oid AS tiers_payant_id, + t_tiers_payant.code AS tiers_payant_code, + t_tiers_payant.texte_court AS tiers_payant_texte, + t_tiers_payant.grand_regime_id AS tiers_payant_grand_regime_id, + t_tiers_payant.grand_regime_code AS tiers_payant_grand_regime_code, + t_tiers_payant.grand_regime_texte AS tiers_payant_grand_regime_texte, + 1 AS nb_factures, + CASE + WHEN p_factures.type_facture = '0'::bpchar THEN 0 + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + ELSE 1 + END AS nb_factures_regularisation, + p_factures.nb_rejets AS nb_factures_rejet, + p_factures.montant_facture_1_c + p_factures.montant_facture_1_h AS montant_facture, + p_factures.montant_facture_1_c AS montant_facture_c, + p_factures.montant_facture_1_h AS montant_facture_h, + 0 AS montant_facture_0, + 0 AS montant_facture_0_c, + 0 AS montant_facture_0_h, + p_factures.montant_facture_1_c + p_factures.montant_facture_1_h AS montant_facture_1, + p_factures.montant_facture_1_c, + p_factures.montant_facture_1_h, + 0 AS montant_facture_2, + 0 AS montant_facture_2_c, + 0 AS montant_facture_2_h, + p_factures.montant_comptabilise_1_c + p_factures.montant_comptabilise_1_h AS montant_comptabilise, + p_factures.montant_comptabilise_1_c AS montant_comptabilise_c, + p_factures.montant_comptabilise_1_h AS montant_comptabilise_h, + 0 AS montant_comptabilise_0, + 0 AS montant_comptabilise_0_c, + 0 AS montant_comptabilise_0_h, + p_factures.montant_comptabilise_1_c + p_factures.montant_comptabilise_1_h AS montant_comptabilise_1, + p_factures.montant_comptabilise_1_c, + p_factures.montant_comptabilise_1_h, + 0 AS montant_comptabilise_2, + 0 AS montant_comptabilise_2_c, + 0 AS montant_comptabilise_2_h, + p_factures.montant_encours_1_c + p_factures.montant_encours_1_h AS montant_encours, + p_factures.montant_encours_1_c AS montant_encours_c, + p_factures.montant_encours_1_h AS montant_encours_h, + 0 AS montant_encours_0, + 0 AS montant_encours_0_c, + 0 AS montant_encours_0_h, + p_factures.montant_encours_1_c + p_factures.montant_encours_1_h AS montant_encours_1, + p_factures.montant_encours_1_c, + p_factures.montant_encours_1_h, + 0 AS montant_encours_2, + 0 AS montant_encours_2_c, + 0 AS montant_encours_2_h, + p_factures.montant_regle_1_c + p_factures.montant_regle_1_h AS montant_regle, + p_factures.montant_regle_1_c AS montant_regle_c, + p_factures.montant_regle_1_h AS montant_regle_h, + 0 AS montant_regle_0, + 0 AS montant_regle_0_c, + 0 AS montant_regle_0_h, + p_factures.montant_regle_1_c + p_factures.montant_regle_1_h AS montant_regle_1, + p_factures.montant_regle_1_c, + p_factures.montant_regle_1_h, + 0 AS montant_regle_2, + 0 AS montant_regle_2_c, + 0 AS montant_regle_2_h, + p_factures.montant_comptabilise_1_c + p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_c - p_factures.montant_regle_1_h AS montant_solde, + p_factures.montant_comptabilise_1_c - p_factures.montant_regle_1_c AS montant_solde_c, + p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_h AS montant_solde_h, + 0 AS montant_solde_0, + 0 AS montant_solde_0_c, + 0 AS montant_solde_0_h, + p_factures.montant_comptabilise_1_c + p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_c - p_factures.montant_regle_1_h AS montant_solde_1, + p_factures.montant_comptabilise_1_c - p_factures.montant_regle_1_c AS montant_solde_1_c, + p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_h AS montant_solde_1_h, + 0 AS montant_solde_2, + 0 AS montant_solde_2_c, + 0 AS montant_solde_2_h, + p_factures.code_expedie_1 AS code_expedie, + p_factures.date_expedition_1 AS date_expedition, + p_factures.no_bordereau_1 AS no_bordereau, + CASE + WHEN p_factures_references.date_expedition_1 <> '2099-12-31'::date AND p_factures_references.date_expedition_1 > p_factures_references.date_fin THEN (p_factures_references.date_expedition_1 - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_expedition, + CASE + WHEN p_factures_references.date_expedition_1 <> '2099-12-31'::date AND p_factures_references.date_expedition_1 > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_expedition, + 0 AS delai_expedition_0, + 0 AS nb_delai_expedition_0, + CASE + WHEN p_factures_references.date_expedition_1 <> '2099-12-31'::date AND p_factures_references.date_expedition_1 > p_factures_references.date_fin THEN (p_factures_references.date_expedition_1 - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_expedition_1, + CASE + WHEN p_factures_references.date_expedition_1 <> '2099-12-31'::date AND p_factures_references.date_expedition_1 > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_expedition_1, + 0 AS delai_expedition_2, + 0 AS nb_delai_expedition_2, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_1_c = p_factures.montant_regle_1_c AND p_factures.montant_comptabilise_1_h = p_factures.montant_regle_1_h THEN 0 + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND (p_factures.montant_facture_1_c > 0::numeric OR p_factures.montant_facture_1_h > 0::numeric) THEN 1 + ELSE 0 + END AS nb_non_expedie, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_1_c = p_factures.montant_regle_1_c THEN 0 + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND p_factures.montant_facture_1_c > 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_c, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_1_h = p_factures.montant_regle_1_h THEN 0 + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND p_factures.montant_facture_1_h > 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_h, + 0 AS nb_non_expedie_0, + 0 AS nb_non_expedie_0_c, + 0 AS nb_non_expedie_0_h, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_1_c = p_factures.montant_regle_1_c AND p_factures.montant_comptabilise_1_h = p_factures.montant_regle_1_h THEN 0 + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND (p_factures.montant_facture_1_c > 0::numeric OR p_factures.montant_facture_1_h > 0::numeric) THEN 1 + ELSE 0 + END AS nb_non_expedie_1, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_1_c = p_factures.montant_regle_1_c THEN 0 + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND p_factures.montant_facture_1_c > 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_1_c, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.montant_comptabilise_1_h = p_factures.montant_regle_1_h THEN 0 + WHEN (p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL) AND p_factures.montant_facture_1_h > 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_1_h, + 0 AS nb_non_expedie_2, + 0 AS nb_non_expedie_2_c, + 0 AS nb_non_expedie_2_h, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL AND (p_factures.montant_facture_1_c > 0::numeric OR p_factures.montant_facture_1_h > 0::numeric) THEN p_factures.montant_comptabilise_1_c - p_factures.montant_regle_1_c + p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_h + ELSE 0::numeric + END AS montant_non_expedie, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL AND p_factures.montant_facture_1_c > 0::numeric THEN p_factures.montant_comptabilise_1_c - p_factures.montant_regle_1_c + ELSE 0::numeric + END AS montant_non_expedie_c, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL AND p_factures.montant_facture_1_h > 0::numeric THEN p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_h + ELSE 0::numeric + END AS montant_non_expedie_h, + 0 AS montant_non_expedie_0, + 0 AS montant_non_expedie_0_c, + 0 AS montant_non_expedie_0_h, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL AND (p_factures.montant_facture_1_c > 0::numeric OR p_factures.montant_facture_1_h > 0::numeric) THEN p_factures.montant_comptabilise_1_c - p_factures.montant_regle_1_c + p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_h + ELSE 0::numeric + END AS montant_non_expedie_1, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL AND p_factures.montant_facture_1_c > 0::numeric THEN p_factures.montant_comptabilise_1_c - p_factures.montant_regle_1_c + ELSE 0::numeric + END AS montant_non_expedie_1_c, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_1 <> '1'::bpchar OR p_factures.code_expedie_1 IS NULL AND p_factures.montant_facture_1_h > 0::numeric THEN p_factures.montant_comptabilise_1_h - p_factures.montant_regle_1_h + ELSE 0::numeric + END AS montant_non_expedie_1_h, + 0 AS montant_non_expedie_2, + 0 AS montant_non_expedie_2_c, + 0 AS montant_non_expedie_2_h, + GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) AS date_solde_reference, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) > p_factures_references.date_fin THEN (GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference, + p_factures.date_solde_reference_c, + CASE + WHEN p_factures_references.date_solde_reference_1_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_1_c > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_1_c - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_c, + CASE + WHEN p_factures_references.date_solde_reference_1_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_1_c > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_c, + p_factures.date_solde_reference_h, + CASE + WHEN p_factures_references.date_solde_reference_1_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_1_h > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_1_h - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_h, + CASE + WHEN p_factures_references.date_solde_reference_1_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_1_h > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_h, + NULL::date AS date_solde_reference_0, + 0 AS delai_solde_reference_0, + 0 AS nb_delai_solde_reference_0, + NULL::date AS date_solde_reference_0_c, + 0 AS delai_solde_reference_0_c, + 0 AS nb_delai_solde_reference_0_c, + NULL::date AS date_solde_reference_0_h, + 0 AS delai_solde_reference_0_h, + 0 AS nb_delai_solde_reference_0_h, + GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) AS date_solde_reference_1, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) > p_factures_references.date_fin THEN (GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_1, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_1_c, p_factures_references.date_solde_reference_1_h) > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_1, + p_factures.date_solde_reference_1_c, + CASE + WHEN p_factures_references.date_solde_reference_1_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_1_c > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_1_c - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_1_c, + CASE + WHEN p_factures_references.date_solde_reference_1_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_1_c > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_1_c, + p_factures.date_solde_reference_1_h, + CASE + WHEN p_factures_references.date_solde_reference_1_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_1_h > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_1_h - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_1_h, + CASE + WHEN p_factures_references.date_solde_reference_1_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_1_h > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_1_h, + NULL::date AS date_solde_reference_2, + 0 AS delai_solde_reference_2, + 0 AS nb_delai_solde_reference_2, + NULL::date AS date_solde_reference_2_c, + 0 AS delai_solde_reference_2_c, + 0 AS nb_delai_solde_reference_2_c, + NULL::date AS date_solde_reference_2_h, + 0 AS delai_solde_reference_2_h, + 0 AS nb_delai_solde_reference_2_h, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.tiers_payant_1_id = t_tiers_payant.oid AND p_factures.montant_comptabilise_1_c <> p_factures.montant_regle_1_c THEN 1 + WHEN p_factures.tiers_payant_1_id = t_tiers_payant.oid AND p_factures.montant_comptabilise_1_h <> p_factures.montant_regle_1_h THEN 1 + ELSE 0 + END AS nb_non_solde, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.tiers_payant_1_id = t_tiers_payant.oid AND p_factures.montant_comptabilise_1_c <> p_factures.montant_regle_1_c THEN 1 + ELSE 0 + END AS nb_non_solde_c, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.tiers_payant_1_id = t_tiers_payant.oid AND p_factures.montant_comptabilise_1_h <> p_factures.montant_regle_1_h THEN 1 + ELSE 0 + END AS nb_non_solde_h, + 0 AS nb_non_solde_0, + 0 AS nb_non_solde_0_c, + 0 AS nb_non_solde_0_h, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.tiers_payant_1_id = t_tiers_payant.oid AND p_factures.montant_comptabilise_1_c <> p_factures.montant_regle_1_c THEN 1 + WHEN p_factures.tiers_payant_1_id = t_tiers_payant.oid AND p_factures.montant_comptabilise_1_h <> p_factures.montant_regle_1_h THEN 1 + ELSE 0 + END AS nb_non_solde_1, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.tiers_payant_1_id = t_tiers_payant.oid AND p_factures.montant_comptabilise_1_c <> p_factures.montant_regle_1_c THEN 1 + ELSE 0 + END AS nb_non_solde_1_c, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.tiers_payant_1_id = t_tiers_payant.oid AND p_factures.montant_comptabilise_1_h <> p_factures.montant_regle_1_h THEN 1 + ELSE 0 + END AS nb_non_solde_1_h, + 0 AS nb_non_solde_2, + 0 AS nb_non_solde_2_c, + 0 AS nb_non_solde_2_h, + t_tiers_payant.section_id AS tiers_payant_section_id, + t_tiers_payant.section_code AS tiers_payant_section_code, + t_tiers_payant.section_texte AS tiers_payant_section_texte + FROM activite.p_factures + JOIN activite.p_factures p_factures_references ON p_factures.no_facture_reference = p_factures_references.no_facture + JOIN activite.t_tiers_payant ON t_tiers_payant.oid = p_factures.tiers_payant_1_id AND t_tiers_payant.oid <> 0 AND (p_factures.montant_encours_1_c <> 0::numeric OR p_factures.montant_facture_1_c <> 0::numeric OR p_factures.montant_facture_1_h <> 0::numeric OR p_factures.montant_regle_1_c <> 0::numeric OR p_factures.montant_regle_1_h <> 0::numeric OR p_factures.type_facture = 'E'::bpchar) + JOIN activite.t_types_tiers_payant ON t_tiers_payant.type_tiers_payant = t_types_tiers_payant.code + WHERE p_factures.type_facture <> 'P'::bpchar AND p_factures.type_facture <> 'G'::bpchar; \ No newline at end of file diff --git a/db/schema2/views/v_factures_4_2.yaml b/db/schema2/views/v_factures_4_2.yaml new file mode 100644 index 0000000..83b8d9b --- /dev/null +++ b/db/schema2/views/v_factures_4_2.yaml @@ -0,0 +1,372 @@ +src: | + SELECT p_factures.finess, + p_factures.sejour_id, + p_factures.no_sejour, + p_factures.oid AS facture_id, + p_factures.no_facture, + p_factures.facture_reference_id, + p_factures.no_facture_reference, + p_factures_references.date_debut, + p_factures_references.date_fin, + p_factures.type_facture, + p_factures.code_facture, + p_factures.date_facture, + CASE + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures_references.date_facture <> '2099-12-31'::date THEN p_factures_references.date_facture - p_factures_references.date_fin + ELSE 0 + END AS delai_facture, + CASE + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures_references.date_facture <> '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_facture, + CASE + WHEN p_factures.type_facture = 'E'::bpchar THEN 1 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.date_facture = '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_non_facture, + p_factures.code_vente, + p_factures.date_vente, + p_factures.mois_vente, + p_factures.ghs_id, + p_factures.particularite_t2a, + p_factures.code_cloture, + p_factures.code_cp_demandee, + p_factures.date_encours, + t_types_tiers_payant.code::bigint AS type_tiers_payant_id, + t_types_tiers_payant.code AS type_tiers_payant_code, + t_types_tiers_payant.texte AS type_tiers_payant_texte, + t_tiers_payant.oid AS tiers_payant_id, + t_tiers_payant.code AS tiers_payant_code, + t_tiers_payant.texte_court AS tiers_payant_texte, + t_tiers_payant.grand_regime_id AS tiers_payant_grand_regime_id, + t_tiers_payant.grand_regime_code AS tiers_payant_grand_regime_code, + t_tiers_payant.grand_regime_texte AS tiers_payant_grand_regime_texte, + 1 AS nb_factures, + CASE + WHEN p_factures.type_facture = '0'::bpchar THEN 0 + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + ELSE 1 + END AS nb_factures_regularisation, + p_factures.nb_rejets AS nb_factures_rejet, + p_factures.montant_facture_2_c + p_factures.montant_facture_22_c + p_factures.montant_facture_2_h + p_factures.montant_facture_22_h AS montant_facture, + p_factures.montant_facture_2_c + p_factures.montant_facture_22_c AS montant_facture_c, + p_factures.montant_facture_2_h + p_factures.montant_facture_22_h AS montant_facture_h, + 0 AS montant_facture_0, + 0 AS montant_facture_0_c, + 0 AS montant_facture_0_h, + 0 AS montant_facture_1, + 0 AS montant_facture_1_c, + 0 AS montant_facture_1_h, + p_factures.montant_facture_2_c + p_factures.montant_facture_22_c + p_factures.montant_facture_2_h + p_factures.montant_facture_22_h AS montant_facture_2, + p_factures.montant_facture_2_c + p_factures.montant_facture_22_c AS montant_facture_2_c, + p_factures.montant_facture_2_h + p_factures.montant_facture_22_h AS montant_facture_2_h, + p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c + p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h AS montant_comptabilise, + p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c AS montant_comptabilise_c, + p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h AS montant_comptabilise_h, + 0 AS montant_comptabilise_0, + 0 AS montant_comptabilise_0_c, + 0 AS montant_comptabilise_0_h, + 0 AS montant_comptabilise_1, + 0 AS montant_comptabilise_1_c, + 0 AS montant_comptabilise_1_h, + p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c + p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h AS montant_comptabilise_2, + p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c AS montant_comptabilise_2_c, + p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h AS montant_comptabilise_2_h, + p_factures.montant_encours_2_c + p_factures.montant_encours_2_h AS montant_encours, + p_factures.montant_encours_2_c AS montant_encours_c, + p_factures.montant_encours_2_h AS montant_encours_h, + 0 AS montant_encours_0, + 0 AS montant_encours_0_c, + 0 AS montant_encours_0_h, + 0 AS montant_encours_1, + 0 AS montant_encours_1_c, + 0 AS montant_encours_1_h, + p_factures.montant_encours_2_c + p_factures.montant_encours_2_h AS montant_encours_2, + p_factures.montant_encours_2_c, + p_factures.montant_encours_2_h, + p_factures.montant_regle_2_c + p_factures.montant_regle_22_c + p_factures.montant_regle_2_h + p_factures.montant_regle_22_h AS montant_regle, + p_factures.montant_regle_2_c + p_factures.montant_regle_22_c AS montant_regle_c, + p_factures.montant_regle_2_h + p_factures.montant_regle_22_h AS montant_regle_h, + 0 AS montant_regle_0, + 0 AS montant_regle_0_c, + 0 AS montant_regle_0_h, + 0 AS montant_regle_1, + 0 AS montant_regle_1_c, + 0 AS montant_regle_1_h, + p_factures.montant_regle_2_c + p_factures.montant_regle_22_c + p_factures.montant_regle_2_h + p_factures.montant_regle_22_h AS montant_regle_2, + p_factures.montant_regle_2_c + p_factures.montant_regle_22_c AS montant_regle_2_c, + p_factures.montant_regle_2_h + p_factures.montant_regle_22_h AS montant_regle_2_h, + p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c + p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h - p_factures.montant_regle_2_c - p_factures.montant_regle_22_c - p_factures.montant_regle_2_h - p_factures.montant_regle_22_h AS montant_solde, + p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c - p_factures.montant_regle_2_c - p_factures.montant_regle_22_c AS montant_solde_c, + p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h - p_factures.montant_regle_2_h - p_factures.montant_regle_22_h AS montant_solde_h, + 0 AS montant_solde_0, + 0 AS montant_solde_0_c, + 0 AS montant_solde_0_h, + 0 AS montant_solde_1, + 0 AS montant_solde_1_c, + 0 AS montant_solde_1_h, + p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c + p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h - p_factures.montant_regle_2_c - p_factures.montant_regle_22_c - p_factures.montant_regle_2_h - p_factures.montant_regle_22_h AS montant_solde_2, + p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c - p_factures.montant_regle_2_c - p_factures.montant_regle_22_c AS montant_solde_2_c, + p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h - p_factures.montant_regle_2_h - p_factures.montant_regle_22_h AS montant_solde_2_h, + p_factures.code_expedie_2 AS code_expedie, + p_factures.date_expedition_2 AS date_expedition, + p_factures.no_bordereau_2 AS no_bordereau, + CASE + WHEN p_factures_references.date_expedition_2 <> '2099-12-31'::date AND p_factures_references.date_expedition_2 > p_factures_references.date_fin THEN (p_factures_references.date_expedition_2 - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_expedition, + CASE + WHEN p_factures_references.date_expedition_2 <> '2099-12-31'::date AND p_factures_references.date_expedition_2 > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_expedition, + 0 AS delai_expedition_0, + 0 AS nb_delai_expedition_0, + 0 AS delai_expedition_1, + 0 AS nb_delai_expedition_1, + CASE + WHEN p_factures_references.date_expedition_2 <> '2099-12-31'::date AND p_factures_references.date_expedition_2 > p_factures_references.date_fin THEN (p_factures_references.date_expedition_2 - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_expedition_2, + CASE + WHEN p_factures_references.date_expedition_2 <> '2099-12-31'::date AND p_factures_references.date_expedition_2 > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_expedition_2, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN (p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c) = (p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) AND (p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h) = (p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) THEN 0 + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND ((p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) > 0::numeric OR (p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) > 0::numeric) THEN 1 + ELSE 0 + END AS nb_non_expedie, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN (p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c) = (p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) THEN 0 + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND (p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) > 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_c, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN (p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h) = (p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) THEN 0 + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND (p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) > 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_h, + 0 AS nb_non_expedie_0, + 0 AS nb_non_expedie_0_c, + 0 AS nb_non_expedie_0_h, + 0 AS nb_non_expedie_1, + 0 AS nb_non_expedie_1_c, + 0 AS nb_non_expedie_1_h, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN (p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c) = (p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) AND (p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h) = (p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) THEN 0 + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND ((p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) > 0::numeric OR (p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) > 0::numeric) THEN 1 + ELSE 0 + END AS nb_non_expedie_2, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN (p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c) = (p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) THEN 0 + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND (p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) > 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_2_c, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + WHEN p_factures.type_facture = '1'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN (p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h) = (p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) THEN 0 + WHEN (p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL) AND (p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) > 0::numeric THEN 1 + ELSE 0 + END AS nb_non_expedie_2_h, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL AND ((p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) > 0::numeric OR (p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) > 0::numeric) THEN p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c - p_factures.montant_regle_2_c - p_factures.montant_regle_22_c + p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h - p_factures.montant_regle_2_h - p_factures.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL AND (p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) > 0::numeric THEN p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c - p_factures.montant_regle_2_c - p_factures.montant_regle_22_c + ELSE 0::numeric + END AS montant_non_expedie_c, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL AND (p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) > 0::numeric THEN p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h - p_factures.montant_regle_2_h - p_factures.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie_h, + 0 AS montant_non_expedie_0, + 0 AS montant_non_expedie_0_c, + 0 AS montant_non_expedie_0_h, + 0 AS montant_non_expedie_1, + 0 AS montant_non_expedie_1_c, + 0 AS montant_non_expedie_1_h, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL AND ((p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) > 0::numeric OR (p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) > 0::numeric) THEN p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c - p_factures.montant_regle_2_c - p_factures.montant_regle_22_c + p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h - p_factures.montant_regle_2_h - p_factures.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie_2, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL AND (p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) > 0::numeric THEN p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c - p_factures.montant_regle_2_c - p_factures.montant_regle_22_c + ELSE 0::numeric + END AS montant_non_expedie_2_c, + CASE + WHEN p_factures.type_facture = 'X'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = '1'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'E'::bpchar THEN 0::numeric + WHEN p_factures.type_facture = 'P'::bpchar THEN 0::numeric + WHEN p_factures.code_expedie_2 <> '1'::bpchar OR p_factures.code_expedie_2 IS NULL AND (p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) > 0::numeric THEN p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h - p_factures.montant_regle_2_h - p_factures.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie_2_h, + GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) AS date_solde_reference, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) > p_factures_references.date_fin THEN (GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference, + p_factures.date_solde_reference_c, + CASE + WHEN p_factures_references.date_solde_reference_2_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_2_c > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_2_c - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_c, + CASE + WHEN p_factures_references.date_solde_reference_2_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_2_c > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_c, + p_factures.date_solde_reference_h, + CASE + WHEN p_factures_references.date_solde_reference_2_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_2_h > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_2_h - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_h, + CASE + WHEN p_factures_references.date_solde_reference_2_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_2_h > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_h, + NULL::date AS date_solde_reference_0, + 0 AS delai_solde_reference_0, + 0 AS nb_delai_solde_reference_0, + NULL::date AS date_solde_reference_0_c, + 0 AS delai_solde_reference_0_c, + 0 AS nb_delai_solde_reference_0_c, + NULL::date AS date_solde_reference_0_h, + 0 AS delai_solde_reference_0_h, + 0 AS nb_delai_solde_reference_0_h, + NULL::date AS date_solde_reference_1, + 0 AS delai_solde_reference_1, + 0 AS nb_delai_solde_reference_1, + NULL::date AS date_solde_reference_1_c, + 0 AS delai_solde_reference_1_c, + 0 AS nb_delai_solde_reference_1_c, + NULL::date AS date_solde_reference_1_h, + 0 AS delai_solde_reference_1_h, + 0 AS nb_delai_solde_reference_1_h, + GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) AS date_solde_reference_2, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) > p_factures_references.date_fin THEN (GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_2, + CASE + WHEN GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) <> '2099-12-31'::date AND GREATEST(p_factures_references.date_solde_reference_2_c, p_factures_references.date_solde_reference_2_h) > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_2, + p_factures.date_solde_reference_2_c, + CASE + WHEN p_factures_references.date_solde_reference_2_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_2_c > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_2_c - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_2_c, + CASE + WHEN p_factures_references.date_solde_reference_2_c <> '2099-12-31'::date AND p_factures_references.date_solde_reference_2_c > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_2_c, + p_factures.date_solde_reference_2_h, + CASE + WHEN p_factures_references.date_solde_reference_2_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_2_h > p_factures_references.date_fin THEN (p_factures_references.date_solde_reference_2_h - p_factures_references.date_fin)::numeric + ELSE 0::numeric + END AS delai_solde_reference_2_h, + CASE + WHEN p_factures_references.date_solde_reference_2_h <> '2099-12-31'::date AND p_factures_references.date_solde_reference_2_h > p_factures_references.date_fin THEN 1::numeric + ELSE 0::numeric + END AS nb_delai_solde_reference_2_h, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.tiers_payant_2_id = t_tiers_payant.oid AND (p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c) <> (p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) THEN 1 + WHEN p_factures.tiers_payant_2_id = t_tiers_payant.oid AND (p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h) <> (p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) THEN 1 + ELSE 0 + END AS nb_non_solde, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.tiers_payant_2_id = t_tiers_payant.oid AND (p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c) <> (p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) THEN 1 + ELSE 0 + END AS nb_non_solde_c, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.tiers_payant_2_id = t_tiers_payant.oid AND (p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h) <> (p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) THEN 1 + ELSE 0 + END AS nb_non_solde_h, + 0 AS nb_non_solde_0, + 0 AS nb_non_solde_0_c, + 0 AS nb_non_solde_0_h, + 0 AS nb_non_solde_1, + 0 AS nb_non_solde_1_c, + 0 AS nb_non_solde_1_h, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.tiers_payant_2_id = t_tiers_payant.oid AND (p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c) <> (p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) THEN 1 + WHEN p_factures.tiers_payant_2_id = t_tiers_payant.oid AND (p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h) <> (p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) THEN 1 + ELSE 0 + END AS nb_non_solde_2, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.tiers_payant_2_id = t_tiers_payant.oid AND (p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c) <> (p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) THEN 1 + ELSE 0 + END AS nb_non_solde_2_c, + CASE + WHEN p_factures.code_facture <> '1'::bpchar THEN 0 + WHEN p_factures.tiers_payant_2_id = t_tiers_payant.oid AND (p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h) <> (p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) THEN 1 + ELSE 0 + END AS nb_non_solde_2_h, + t_tiers_payant.section_id AS tiers_payant_section_id, + t_tiers_payant.section_code AS tiers_payant_section_code, + t_tiers_payant.section_texte AS tiers_payant_section_texte + FROM activite.p_factures + JOIN activite.p_factures p_factures_references ON p_factures.no_facture_reference = p_factures_references.no_facture + JOIN activite.t_tiers_payant ON t_tiers_payant.oid = p_factures.tiers_payant_2_id AND t_tiers_payant.oid <> 0 AND (p_factures.montant_encours_2_c <> 0::numeric OR (p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) <> 0::numeric OR (p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) <> 0::numeric OR (p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) <> 0::numeric OR (p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) <> 0::numeric OR p_factures.type_facture = 'E'::bpchar) + JOIN activite.t_types_tiers_payant ON t_tiers_payant.type_tiers_payant = t_types_tiers_payant.code + WHERE p_factures.type_facture <> 'P'::bpchar AND p_factures.type_facture <> 'G'::bpchar; \ No newline at end of file diff --git a/db/schema2/views/v_factures_encours_lignes_c_1.yaml b/db/schema2/views/v_factures_encours_lignes_c_1.yaml new file mode 100644 index 0000000..f0c106b --- /dev/null +++ b/db/schema2/views/v_factures_encours_lignes_c_1.yaml @@ -0,0 +1,194 @@ +src: | + SELECT p_factures_encours_lignes_c.finess, + p_factures_encours.sejour_id, + p_factures_encours.oid AS facture_id, + p_factures_encours.code_origine, + p_factures_encours.date_debut AS date_debut_facture, + p_factures_encours.date_fin AS date_fin_facture, + to_char(p_factures_encours.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin_facture, + p_sejours.no_sejour, + p_sejours.date_sortie, + CASE + WHEN p_factures_encours.ghs_id > 0 THEN p_factures_encours.date_groupage + ELSE '2099-12-31'::date + END AS encours_date_groupage, + p_factures_encours.ghs_id AS encours_ghs_id, + p_factures_encours_lignes_c.no_facture, + to_char(p_factures_encours.date_encours::timestamp with time zone, 'YYYYMM'::text) AS mois_comptable, + p_factures_encours.date_encours AS date_comptable, + to_char(p_factures_encours_lignes_c.date_debut::timestamp with time zone, 'YYYYMM'::text) AS mois_debut, + to_char(p_factures_encours_lignes_c.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin, + p_factures_encours_lignes_c.date_debut, + p_factures_encours_lignes_c.date_fin, + p_factures_encours_lignes_c.coefficient, + p_factures_encours_lignes_c.coefficient_mco, + p_factures_encours_lignes_c.prix_unitaire, + p_factures_encours_lignes_c.taux_0, + p_factures_encours_lignes_c.taux_1, + p_factures_encours_lignes_c.taux_2, + p_factures_encours_lignes_c.taux_22, + p_factures_encours_lignes_c.lieu_id, + t_lieux_c.service_facturation_id AS lieu_service_id, + t_lieux_c.service_facturation_code AS lieu_service_code, + t_lieux_c.service_facturation_texte AS lieu_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_service_section_texte, + t_lieux_c.activite_id AS lieu_activite_id, + t_lieux_c.activite_code AS lieu_activite_code, + t_lieux_c.activite_texte AS lieu_activite_texte, + t_lieux_c.etage_id AS lieu_etage_id, + t_lieux_c.etage_code AS lieu_etage_code, + t_lieux_c.etage_texte AS lieu_etage_texte, + t_lieux_c.etage_section_id AS lieu_etage_section_id, + t_lieux_c.etage_section_code AS lieu_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_etage_section_texte, + t_lieux_c.lit_id AS lieu_lit_id, + t_lieux_c.lit_code AS lieu_lit_code, + t_lieux_c.lit_texte AS lieu_lit_texte, + t_lieux_c.lit_section_id AS lieu_lit_section_id, + t_lieux_c.lit_section_code AS lieu_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS lieu_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_unite_fonctionnelle_section_texte, + p_factures_encours_lignes_c.rubrique_facturation_id, + t_rubriques_facturation.code AS rubrique_facturation_code, + t_rubriques_facturation.texte_court AS rubrique_facturation_texte, + t_rubriques_facturation.section_id AS rubrique_facturation_section_id, + t_rubriques_facturation.section_code AS rubrique_facturation_section_code, + t_rubriques_facturation.section_texte AS rubrique_facturation_section_texte, + p_factures_encours_lignes_c.rubrique_comptabilisation_id, + t_rubriques_facturation_c.code AS rubrique_comptabilisation_code, + t_rubriques_facturation_c.section_id AS rubrique_comptabilisation_section_id, + t_rubriques_facturation_c.section_code AS rubrique_comptabilisation_section_code, + t_rubriques_facturation_c.section_texte AS rubrique_comptabilisation_section_texte, + t_rubriques_facturation_c.texte_court AS rubrique_comptabilisation_texte, + p_factures_encours_lignes_c.prestation_id, + t_prestations.code AS prestation_code, + t_prestations.texte_court AS prestation_texte, + t_prestations.section_id AS prestation_section_id, + t_prestations.section_code AS prestation_section_code, + t_prestations.section_texte AS prestation_section_texte, + p_factures_encours_lignes_c.compte_produit_id, + t_compte.code AS compte_produit_code, + t_compte.texte_court AS compte_produit_texte, + t_compte.section_id AS compte_produit_section_id, + t_compte.section_code AS compte_produit_section_code, + t_compte.section_texte AS compte_produit_section_texte, + p_factures_encours_lignes_c.nb_rubrique, + p_factures_encours_lignes_c.nb_prestation, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_0 IS NOT NULL THEN p_factures_encours_lignes_c.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_0, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_1 IS NOT NULL THEN p_factures_encours_lignes_c.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_1, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_2 IS NOT NULL THEN p_factures_encours_lignes_c.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_2, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_22 IS NOT NULL THEN p_factures_encours_lignes_c.montant_encours_22 + ELSE 0::numeric + END AS montant_encours_22, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND p_factures_encours.code_sorti = '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_sorti, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_0 IS NOT NULL AND p_factures_encours.code_sorti = '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_sorti_0, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_1 IS NOT NULL AND p_factures_encours.code_sorti = '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_sorti_1, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_2 IS NOT NULL AND p_factures_encours.code_sorti = '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_sorti_2, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_22 IS NOT NULL AND p_factures_encours.code_sorti = '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_22 + ELSE 0::numeric + END AS montant_encours_sorti_22, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND p_factures_encours.code_sorti <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_present, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_0 IS NOT NULL AND p_factures_encours.code_sorti <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_present_0, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_1 IS NOT NULL AND p_factures_encours.code_sorti <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_present_1, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_2 IS NOT NULL AND p_factures_encours.code_sorti <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_present_2, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_22 IS NOT NULL AND p_factures_encours.code_sorti <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_22 + ELSE 0::numeric + END AS montant_encours_present_22, + CASE + WHEN p_factures_encours.code_sorti <> '1'::bpchar THEN 0::numeric + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND t_lieux_c_sortie.type_t2a <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND (p_factures_encours.type_sejour <> ALL (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) THEN p_factures_encours_lignes_c.montant_encours + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND date(date_trunc('month'::text, p_factures_encours.date_groupage::timestamp with time zone)) <= p_factures_encours.date_encours THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_groupe, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND t_lieux_c_sortie.type_t2a = '1'::bpchar AND (p_factures_encours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND (date(date_trunc('month'::text, p_factures_encours.date_groupage::timestamp with time zone)) > p_factures_encours.date_encours OR p_factures_encours.ghs_id < 0) THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_non_groupe, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND t_lieux_c_sortie.type_t2a = '1'::bpchar AND (p_factures_encours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND p_factures_encours.code_sorti = '1'::bpchar AND (date(date_trunc('month'::text, p_factures_encours.date_groupage::timestamp with time zone)) > p_factures_encours.date_encours OR p_factures_encours.ghs_id < 0) THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_non_groupe_sorti, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND t_lieux_c_sortie.type_t2a = '1'::bpchar AND (p_factures_encours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND p_factures_encours.code_sorti <> '1'::bpchar AND (date(date_trunc('month'::text, p_factures_encours.date_groupage::timestamp with time zone)) > p_factures_encours.date_encours OR p_factures_encours.ghs_id < 0) THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_non_groupe_present, + 0 AS no_oid, + 0 AS no_nb_lits, + p_factures_encours_lignes_c.pole_id, + p_factures_encours.filiere_soin_principale_id, + p_factures_encours.type_sejour, + t_type_sejour.oid AS type_sejour_id, + p_factures_encours.type_sejour AS type_sejour_code, + t_type_sejour.texte AS type_sejour_texte, + t_type_sejour.section_id AS type_sejour_section_id, + t_type_sejour.section_code AS type_sejour_section_code, + t_type_sejour.section_texte AS type_sejour_section_texte + FROM activite.p_factures_encours_lignes_c + JOIN activite.p_factures_encours ON p_factures_encours_lignes_c.facture_id = p_factures_encours.oid + JOIN activite.p_sejours ON p_factures_encours.sejour_id = p_sejours.oid + JOIN activite.t_lieux_c ON p_factures_encours_lignes_c.lieu_id = t_lieux_c.oid + JOIN activite.t_rubriques_facturation ON p_factures_encours_lignes_c.rubrique_facturation_id = t_rubriques_facturation.oid + JOIN activite.t_rubriques_facturation t_rubriques_facturation_c ON p_factures_encours_lignes_c.rubrique_comptabilisation_id = t_rubriques_facturation_c.oid + JOIN activite.t_prestations ON p_factures_encours_lignes_c.prestation_id = t_prestations.oid + JOIN activite.t_type_sejour ON p_factures_encours.type_sejour = t_type_sejour.code + LEFT JOIN activite.t_lieux_c t_lieux_c_sortie ON p_factures_encours.lieu_sortie_id = t_lieux_c_sortie.oid + LEFT JOIN activite.t_compte ON p_factures_encours_lignes_c.compte_produit_id = t_compte.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_encours_lignes_c_2.yaml b/db/schema2/views/v_factures_encours_lignes_c_2.yaml new file mode 100644 index 0000000..be7463d --- /dev/null +++ b/db/schema2/views/v_factures_encours_lignes_c_2.yaml @@ -0,0 +1,166 @@ +src: | + SELECT p_sejours.finess, + p_sejours.provider_id, + p_factures_encours.no_sejour, + p_factures_encours.sejour_id, + p_sejours.no_patient, + p_sejours.code_sexe, + CASE + WHEN p_sejours.code_sexe = '1'::bpchar THEN 'M'::bpchar + WHEN p_sejours.code_sexe = '2'::bpchar THEN 'F'::bpchar + ELSE p_sejours.code_sexe + END AS sexe_texte_court, + p_sejours.age, + p_sejours.code_postal_id, + p_sejours.code_prevu, + p_factures_encours.type_sejour, + p_sejours.forme_activite_id, + p_sejours.est_budget_global, + to_char(p_sejours.date_entree::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_entree, + p_sejours.date_entree, + p_sejours.heure_entree, + p_sejours.mode_entree, + p_sejours.provenance, + to_char(p_sejours.date_sortie::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_sortie, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.heure_sortie, + p_sejours.mode_sortie, + p_sejours.destination, + p_sejours.code_cp_demandee, + p_factures_encours.ghs_id, + p_factures_encours.ghm_id, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.medecin_sejour_id AS medecin_adm_sejour_id, + p_factures_encours.lieu_sortie_id, + p_sejours.gme_id, + p_sejours.risque_id, + p_factures_encours.oid AS facture_id, + p_factures_encours.code_origine, + p_factures_encours.date_debut AS date_debut_facture, + p_factures_encours.date_fin AS date_fin_facture, + to_char(p_factures_encours.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin_facture, + CASE + WHEN p_factures_encours.ghs_id > 0 THEN p_factures_encours.date_groupage + ELSE '2099-12-31'::date + END AS encours_date_groupage, + p_factures_encours.ghs_id AS encours_ghs_id, + p_factures_encours_lignes_c.no_facture, + to_char(p_factures_encours.date_encours::timestamp with time zone, 'YYYYMM'::text) AS mois_comptable, + p_factures_encours.date_encours AS date_comptable, + to_char(p_factures_encours_lignes_c.date_debut::timestamp with time zone, 'YYYYMM'::text) AS mois_debut, + to_char(p_factures_encours_lignes_c.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin, + p_factures_encours_lignes_c.date_debut, + p_factures_encours_lignes_c.date_fin, + p_factures_encours_lignes_c.coefficient, + p_factures_encours_lignes_c.coefficient_mco, + p_factures_encours_lignes_c.prix_unitaire, + p_factures_encours_lignes_c.taux_0, + p_factures_encours_lignes_c.taux_1, + p_factures_encours_lignes_c.taux_2, + p_factures_encours_lignes_c.taux_22, + p_factures_encours_lignes_c.lieu_id, + p_factures_encours_lignes_c.rubrique_facturation_id, + p_factures_encours_lignes_c.rubrique_comptabilisation_id, + p_factures_encours_lignes_c.prestation_id, + p_factures_encours_lignes_c.compte_produit_id, + p_factures_encours_lignes_c.compte_produit_analytique_id, + p_factures_encours_lignes_c.nb_rubrique, + p_factures_encours_lignes_c.nb_prestation, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_0 IS NOT NULL THEN p_factures_encours_lignes_c.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_0, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_1 IS NOT NULL THEN p_factures_encours_lignes_c.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_1, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_2 IS NOT NULL THEN p_factures_encours_lignes_c.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_2, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_22 IS NOT NULL THEN p_factures_encours_lignes_c.montant_encours_22 + ELSE 0::numeric + END AS montant_encours_22, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND p_factures_encours.code_sorti = '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_sorti, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_0 IS NOT NULL AND p_factures_encours.code_sorti = '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_sorti_0, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_1 IS NOT NULL AND p_factures_encours.code_sorti = '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_sorti_1, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_2 IS NOT NULL AND p_factures_encours.code_sorti = '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_sorti_2, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_22 IS NOT NULL AND p_factures_encours.code_sorti = '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_22 + ELSE 0::numeric + END AS montant_encours_sorti_22, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND p_factures_encours.code_sorti <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_present, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_0 IS NOT NULL AND p_factures_encours.code_sorti <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_present_0, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_1 IS NOT NULL AND p_factures_encours.code_sorti <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_present_1, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_2 IS NOT NULL AND p_factures_encours.code_sorti <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_present_2, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_22 IS NOT NULL AND p_factures_encours.code_sorti <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_22 + ELSE 0::numeric + END AS montant_encours_present_22, + CASE + WHEN p_factures_encours.code_sorti <> '1'::bpchar THEN 0::numeric + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND t_lieux_c_sortie.type_t2a <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND (p_factures_encours.type_sejour <> ALL (ARRAY['1'::bpchar, '2'::bpchar, '5'::bpchar]::text[])) THEN p_factures_encours_lignes_c.montant_encours + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND date(date_trunc('month'::text, p_factures_encours.date_groupage::timestamp with time zone)) <= p_factures_encours.date_encours THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_groupe, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND t_lieux_c_sortie.type_t2a = '1'::bpchar AND (p_factures_encours.type_sejour = ANY (ARRAY['1'::bpchar, '2'::bpchar, '5'::bpchar]::text[])) AND (date(date_trunc('month'::text, p_factures_encours.date_groupage::timestamp with time zone)) > p_factures_encours.date_encours OR p_factures_encours.ghs_id < 0) THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_non_groupe, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND t_lieux_c_sortie.type_t2a = '1'::bpchar AND (p_factures_encours.type_sejour = ANY (ARRAY['1'::bpchar, '2'::bpchar, '5'::bpchar]::text[])) AND p_factures_encours.code_sorti = '1'::bpchar AND (date(date_trunc('month'::text, p_factures_encours.date_groupage::timestamp with time zone)) > p_factures_encours.date_encours OR p_factures_encours.ghs_id < 0) THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_non_groupe_sorti, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND t_lieux_c_sortie.type_t2a = '1'::bpchar AND (p_factures_encours.type_sejour = ANY (ARRAY['1'::bpchar, '2'::bpchar, '5'::bpchar]::text[])) AND p_factures_encours.code_sorti <> '1'::bpchar AND (date(date_trunc('month'::text, p_factures_encours.date_groupage::timestamp with time zone)) > p_factures_encours.date_encours OR p_factures_encours.ghs_id < 0) THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_non_groupe_present, + 0 AS no_oid, + 0 AS no_nb_lits, + p_factures_encours_lignes_c.pole_id, + p_factures_encours.filiere_soin_principale_id, + p_factures_encours_lignes_c.lpp_id, + p_factures_encours_lignes_c.ucd_id + FROM activite.p_factures_encours_lignes_c + JOIN activite.p_factures_encours ON p_factures_encours_lignes_c.facture_id = p_factures_encours.oid + JOIN activite.p_sejours ON p_sejours.no_sejour = p_factures_encours.no_sejour + LEFT JOIN activite.t_lieux_c t_lieux_c_sortie ON p_factures_encours.lieu_sortie_id = t_lieux_c_sortie.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_encours_lignes_c_3.yaml b/db/schema2/views/v_factures_encours_lignes_c_3.yaml new file mode 100644 index 0000000..10356e3 --- /dev/null +++ b/db/schema2/views/v_factures_encours_lignes_c_3.yaml @@ -0,0 +1,165 @@ +src: | + SELECT p_sejours.finess, + p_sejours.provider_id, + p_factures_encours.no_sejour, + p_factures_encours.sejour_id, + p_sejours.no_patient, + p_sejours.code_sexe, + CASE + WHEN p_sejours.code_sexe = '1'::bpchar THEN 'M'::bpchar + WHEN p_sejours.code_sexe = '2'::bpchar THEN 'F'::bpchar + ELSE p_sejours.code_sexe + END AS sexe_texte_court, + p_sejours.age, + p_sejours.code_postal_id, + p_sejours.code_prevu, + p_factures_encours.type_sejour, + p_sejours.forme_activite_id, + p_sejours.est_budget_global, + to_char(p_sejours.date_entree::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_entree, + p_sejours.date_entree, + p_sejours.heure_entree, + p_sejours.mode_entree, + p_sejours.provenance, + to_char(p_sejours.date_sortie::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_sortie, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.heure_sortie, + p_sejours.mode_sortie, + p_sejours.destination, + p_sejours.code_cp_demandee, + p_sejours.ghs_id, + p_sejours.ghm_id, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.medecin_sejour_id AS medecin_adm_sejour_id, + p_sejours.lieu_sortie_id, + p_sejours.gme_id, + p_sejours.risque_id, + p_factures_encours.oid AS facture_id, + p_factures_encours.code_origine, + p_factures_encours.date_debut AS date_debut_facture, + p_factures_encours.date_fin AS date_fin_facture, + to_char(p_factures_encours.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin_facture, + CASE + WHEN p_sejours.ghs_id > 0 THEN p_factures_encours.date_groupage + ELSE '2099-12-31'::date + END AS encours_date_groupage, + p_sejours.ghs_id AS encours_ghs_id, + p_factures_encours_lignes_c.no_facture, + to_char(p_factures_encours.date_encours::timestamp with time zone, 'YYYYMM'::text) AS mois_comptable, + p_factures_encours.date_encours AS date_comptable, + to_char(p_factures_encours_lignes_c.date_debut::timestamp with time zone, 'YYYYMM'::text) AS mois_debut, + to_char(p_factures_encours_lignes_c.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin, + p_factures_encours_lignes_c.date_debut, + p_factures_encours_lignes_c.date_fin, + p_factures_encours_lignes_c.coefficient, + p_factures_encours_lignes_c.coefficient_mco, + p_factures_encours_lignes_c.prix_unitaire, + p_factures_encours_lignes_c.taux_0, + p_factures_encours_lignes_c.taux_1, + p_factures_encours_lignes_c.taux_2, + p_factures_encours_lignes_c.taux_22, + p_factures_encours_lignes_c.lieu_id, + p_factures_encours_lignes_c.rubrique_facturation_id, + p_factures_encours_lignes_c.rubrique_comptabilisation_id, + p_factures_encours_lignes_c.prestation_id, + p_factures_encours_lignes_c.compte_produit_id, + p_factures_encours_lignes_c.nb_rubrique, + p_factures_encours_lignes_c.nb_prestation, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_0 IS NOT NULL THEN p_factures_encours_lignes_c.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_0, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_1 IS NOT NULL THEN p_factures_encours_lignes_c.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_1, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_2 IS NOT NULL THEN p_factures_encours_lignes_c.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_2, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_22 IS NOT NULL THEN p_factures_encours_lignes_c.montant_encours_22 + ELSE 0::numeric + END AS montant_encours_22, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND p_factures_encours.code_sorti = '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_sorti, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_0 IS NOT NULL AND p_factures_encours.code_sorti = '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_sorti_0, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_1 IS NOT NULL AND p_factures_encours.code_sorti = '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_sorti_1, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_2 IS NOT NULL AND p_factures_encours.code_sorti = '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_sorti_2, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_22 IS NOT NULL AND p_factures_encours.code_sorti = '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_22 + ELSE 0::numeric + END AS montant_encours_sorti_22, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND p_factures_encours.code_sorti <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_present, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_0 IS NOT NULL AND p_factures_encours.code_sorti <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_present_0, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_1 IS NOT NULL AND p_factures_encours.code_sorti <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_present_1, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_2 IS NOT NULL AND p_factures_encours.code_sorti <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_present_2, + CASE + WHEN p_factures_encours_lignes_c.montant_encours_22 IS NOT NULL AND p_factures_encours.code_sorti <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours_22 + ELSE 0::numeric + END AS montant_encours_present_22, + CASE + WHEN p_factures_encours.code_sorti <> '1'::bpchar THEN 0::numeric + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND t_lieux_c_sortie.type_t2a <> '1'::bpchar THEN p_factures_encours_lignes_c.montant_encours + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND (p_factures_encours.type_sejour <> ALL (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) THEN p_factures_encours_lignes_c.montant_encours + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND date(date_trunc('month'::text, p_factures_encours.date_groupage::timestamp with time zone)) <= p_factures_encours.date_encours THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_groupe, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND t_lieux_c_sortie.type_t2a = '1'::bpchar AND (p_factures_encours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND (date(date_trunc('month'::text, p_factures_encours.date_groupage::timestamp with time zone)) > p_factures_encours.date_encours OR p_sejours.ghs_id < 0) THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_non_groupe, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND t_lieux_c_sortie.type_t2a = '1'::bpchar AND (p_factures_encours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND p_factures_encours.code_sorti = '1'::bpchar AND (date(date_trunc('month'::text, p_factures_encours.date_groupage::timestamp with time zone)) > p_factures_encours.date_encours OR p_sejours.ghs_id < 0) THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_non_groupe_sorti, + CASE + WHEN p_factures_encours_lignes_c.montant_encours IS NOT NULL AND t_lieux_c_sortie.type_t2a = '1'::bpchar AND (p_factures_encours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND p_factures_encours.code_sorti <> '1'::bpchar AND (date(date_trunc('month'::text, p_factures_encours.date_groupage::timestamp with time zone)) > p_factures_encours.date_encours OR p_sejours.ghs_id < 0) THEN p_factures_encours_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours_non_groupe_present, + 0 AS no_oid, + 0 AS no_nb_lits, + p_factures_encours_lignes_c.pole_id, + p_factures_encours.filiere_soin_principale_id, + p_factures_encours_lignes_c.lpp_id, + p_factures_encours_lignes_c.ucd_id + FROM activite.p_factures_encours_lignes_c + JOIN activite.p_factures_encours ON p_factures_encours_lignes_c.facture_id = p_factures_encours.oid + JOIN activite.p_sejours ON p_sejours.no_sejour = p_factures_encours.no_sejour + LEFT JOIN activite.t_lieux_c t_lieux_c_sortie ON p_sejours.lieu_sortie_id = t_lieux_c_sortie.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_encours_lignes_c_r_4.yaml b/db/schema2/views/v_factures_encours_lignes_c_r_4.yaml new file mode 100644 index 0000000..200a93c --- /dev/null +++ b/db/schema2/views/v_factures_encours_lignes_c_r_4.yaml @@ -0,0 +1,195 @@ +dep: + - v_factures_encours_lignes_c_1 + - v_sejours_1 +src: | + SELECT subview.type_ligne, + CASE + WHEN subview.type_ligne = 'E'::text THEN v_factures_encours_lignes_c_1.date_comptable + ELSE date(date_trunc('month'::text, v_factures_encours_lignes_c_1.date_comptable::timestamp with time zone) + '1 mon'::interval) + END AS date_reference, + v_factures_encours_lignes_c_1.code_origine, + v_factures_encours_lignes_c_1.date_debut, + v_factures_encours_lignes_c_1.date_fin, + v_factures_encours_lignes_c_1.lieu_service_id AS lieu_reference_service_id, + v_factures_encours_lignes_c_1.lieu_service_code AS lieu_reference_service_code, + v_factures_encours_lignes_c_1.lieu_service_texte AS lieu_reference_service_texte, + v_factures_encours_lignes_c_1.lieu_service_section_id AS lieu_reference_service_section_id, + v_factures_encours_lignes_c_1.lieu_service_section_code AS lieu_reference_service_section_code, + v_factures_encours_lignes_c_1.lieu_service_section_texte AS lieu_reference_service_section_texte, + v_factures_encours_lignes_c_1.lieu_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_factures_encours_lignes_c_1.lieu_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_factures_encours_lignes_c_1.lieu_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_factures_encours_lignes_c_1.lieu_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_factures_encours_lignes_c_1.lieu_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_factures_encours_lignes_c_1.lieu_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_factures_encours_lignes_c_1.lieu_activite_id AS lieu_reference_activite_id, + v_factures_encours_lignes_c_1.lieu_activite_code AS lieu_reference_activite_code, + v_factures_encours_lignes_c_1.lieu_activite_texte AS lieu_reference_activite_texte, + v_factures_encours_lignes_c_1.lieu_etage_id AS lieu_reference_etage_id, + v_factures_encours_lignes_c_1.lieu_etage_code AS lieu_reference_etage_code, + v_factures_encours_lignes_c_1.lieu_etage_texte AS lieu_reference_etage_texte, + v_factures_encours_lignes_c_1.lieu_etage_section_id AS lieu_reference_etage_section_id, + v_factures_encours_lignes_c_1.lieu_etage_section_code AS lieu_reference_etage_section_code, + v_factures_encours_lignes_c_1.lieu_etage_section_texte AS lieu_reference_etage_section_texte, + v_factures_encours_lignes_c_1.lieu_unite_medicale_id AS lieu_reference_unite_medicale_id, + v_factures_encours_lignes_c_1.lieu_unite_medicale_code AS lieu_reference_unite_medicale_code, + v_factures_encours_lignes_c_1.lieu_unite_medicale_texte AS lieu_reference_unite_medicale_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_factures_encours_lignes_c_1.type_sejour_id, + v_factures_encours_lignes_c_1.type_sejour, + v_factures_encours_lignes_c_1.type_sejour_code, + v_factures_encours_lignes_c_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.code_sorti, + v_sejours_1.code_cp_demandee, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.duree AS duree_sejour, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_factures_encours_lignes_c_1.pole_id, + v_factures_encours_lignes_c_1.filiere_soin_principale_id, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_service_section_id, + v_sejours_1.lieu_sortie_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_factures_encours_lignes_c_1.no_facture, + v_factures_encours_lignes_c_1.facture_id, + v_factures_encours_lignes_c_1.rubrique_facturation_id, + v_factures_encours_lignes_c_1.rubrique_facturation_code, + v_factures_encours_lignes_c_1.rubrique_facturation_texte, + v_factures_encours_lignes_c_1.rubrique_facturation_section_id, + v_factures_encours_lignes_c_1.rubrique_facturation_section_code, + v_factures_encours_lignes_c_1.rubrique_facturation_section_texte, + v_factures_encours_lignes_c_1.rubrique_comptabilisation_id, + v_factures_encours_lignes_c_1.rubrique_comptabilisation_code, + v_factures_encours_lignes_c_1.rubrique_comptabilisation_texte, + v_factures_encours_lignes_c_1.rubrique_comptabilisation_section_id, + v_factures_encours_lignes_c_1.rubrique_comptabilisation_section_code, + v_factures_encours_lignes_c_1.rubrique_comptabilisation_section_texte, + v_factures_encours_lignes_c_1.prestation_id, + v_factures_encours_lignes_c_1.prestation_code, + v_factures_encours_lignes_c_1.prestation_texte, + v_factures_encours_lignes_c_1.prestation_section_id, + v_factures_encours_lignes_c_1.prestation_section_code, + v_factures_encours_lignes_c_1.prestation_section_texte, + v_factures_encours_lignes_c_1.coefficient, + CASE + WHEN subview.type_ligne = 'E'::text THEN v_factures_encours_lignes_c_1.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_encours, + CASE + WHEN subview.type_ligne = 'E'::text THEN v_factures_encours_lignes_c_1.nb_prestation + ELSE 0::numeric + END AS nb_prestation_encours, + CASE + WHEN subview.type_ligne = 'E'::text THEN v_factures_encours_lignes_c_1.montant_encours + ELSE 0::numeric + END AS montant_encours, + CASE + WHEN subview.type_ligne = 'E'::text THEN 0::numeric + ELSE 0::numeric - v_factures_encours_lignes_c_1.nb_rubrique + END AS nb_rubrique_report, + CASE + WHEN subview.type_ligne = 'E'::text THEN 0::numeric + ELSE 0::numeric - v_factures_encours_lignes_c_1.nb_prestation + END AS nb_prestation_report, + CASE + WHEN subview.type_ligne = 'E'::text THEN 0::numeric + ELSE 0::numeric - v_factures_encours_lignes_c_1.montant_encours + END AS montant_report_encours, + CASE + WHEN subview.type_ligne = 'E'::text THEN v_factures_encours_lignes_c_1.nb_rubrique + ELSE 0::numeric - v_factures_encours_lignes_c_1.nb_rubrique + END AS nb_rubrique_variation, + CASE + WHEN subview.type_ligne = 'E'::text THEN v_factures_encours_lignes_c_1.nb_prestation + ELSE 0::numeric - v_factures_encours_lignes_c_1.nb_prestation + END AS nb_prestation_variation, + CASE + WHEN subview.type_ligne = 'E'::text THEN v_factures_encours_lignes_c_1.montant_encours + ELSE 0::numeric - v_factures_encours_lignes_c_1.montant_encours + END AS montant_variation_encours + FROM activite.v_factures_encours_lignes_c_1 + JOIN activite.v_sejours_1 ON v_factures_encours_lignes_c_1.no_sejour = v_sejours_1.no_sejour + JOIN ( SELECT 'E'::text AS type_ligne + UNION + SELECT 'R'::text AS text) subview ON 1 = 1; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_c_1.yaml b/db/schema2/views/v_factures_lignes_c_1.yaml new file mode 100644 index 0000000..98668ee --- /dev/null +++ b/db/schema2/views/v_factures_lignes_c_1.yaml @@ -0,0 +1,179 @@ +src: | + SELECT p_factures_lignes_c.finess, + p_sejours.no_sejour, + p_sejours.etat AS sejour_etat, + p_factures.sejour_id, + p_factures.no_facture_reference, + p_factures.facture_reference_id, + p_factures.oid AS facture_id, + p_sejours.no_patient, + p_sejours.date_entree, + p_factures_lignes_c.no_facture, + p_factures.type_facture, + to_char(p_factures.date_facture::timestamp with time zone, 'YYYYMM'::text) AS mois_facture, + p_factures.date_facture, + to_char(p_factures.date_vente::timestamp with time zone, 'YYYYMM'::text) AS mois_vente, + p_factures.date_vente, + to_char(p_sejours.date_sortie::timestamp with time zone, 'YYYYMM'::text) AS mois_sortie, + p_sejours.date_sortie, + to_char(p_factures_lignes_c.date_debut::timestamp with time zone, 'YYYYMM'::text) AS mois_debut, + to_char(p_factures_lignes_c.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin, + p_factures_lignes_c.date_debut, + p_factures_lignes_c.date_fin, + p_factures_lignes_c.coefficient, + p_factures_lignes_c.coefficient_mco, + p_factures_lignes_c.prix_unitaire, + p_factures_lignes_c.taux_0, + p_factures_lignes_c.taux_1, + p_factures_lignes_c.taux_2, + p_factures_lignes_c.taux_22, + p_sejours.ghs_id, + t_ghs_c.ghs_code_text AS ghs_code, + t_ghs_c.ghs_texte, + p_sejours.ghm_id, + t_ghm_c.ghm_code, + t_ghm_c.ghm_texte, + t_ghm_c.ghm5_id, + t_ghm_c.ghm5_code, + t_ghm_c.ghm5_texte, + t_ghm_c.severite_ghm_id, + t_ghm_c.severite_ghm_code, + t_ghm_c.severite_ghm_texte, + t_ghm_c.cas_id, + t_ghm_c.cas_code, + t_ghm_c.cas_texte, + t_ghm_c.mco_id, + t_ghm_c.mco_code, + t_ghm_c.mco_texte, + t_ghm_c.cmd_id, + t_ghm_c.cmd_code, + t_ghm_c.cmd_texte, + t_ghm_c.mco_id AS mcos_id, + t_ghm_c.mco_code AS mcos_code, + t_ghm_c.mco_texte AS mcos_texte, + t_ghm_c.ghm_section_id, + t_ghm_c.ghm_section_code, + t_ghm_c.ghm_section_texte, + p_sejours.type_sejour, + CASE + WHEN p_sejours.type_sejour = '1'::text THEN 'Hospitalisés'::text + WHEN p_sejours.type_sejour = '2'::text THEN 'Ambulatoires'::text + WHEN p_sejours.type_sejour = '3'::text THEN 'Externes'::text + WHEN p_sejours.type_sejour = '4'::text THEN 'Long séjours'::text + WHEN p_sejours.type_sejour = '5'::text THEN 'Séances'::text + ELSE p_sejours.type_sejour + END AS type_sejour_texte, + p_factures_lignes_c.lieu_id, + p_sejours.medecin_sejour_id AS medecin_adm_sejour_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_sejour_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_sejour_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_sejour_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_sejour_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_sejour_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_sejour_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_sejour_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_sejour_id, + t_medecins_administratifs_c.nom AS medecin_sejour_nom, + t_medecins_administratifs_c.prenom AS medecin_sejour_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_sejour_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_sejour_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_sejour_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_sejour_specialite_texte, + t_lieux_c.service_facturation_id AS lieu_service_id, + t_lieux_c.service_facturation_code AS lieu_service_code, + t_lieux_c.service_facturation_texte AS lieu_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_service_section_texte, + t_lieux_c.activite_id AS lieu_activite_id, + t_lieux_c.activite_code AS lieu_activite_code, + t_lieux_c.activite_texte AS lieu_activite_texte, + t_lieux_c.etage_id AS lieu_etage_id, + t_lieux_c.etage_code AS lieu_etage_code, + t_lieux_c.etage_texte AS lieu_etage_texte, + t_lieux_c.etage_section_id AS lieu_etage_section_id, + t_lieux_c.etage_section_code AS lieu_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_etage_section_texte, + t_lieux_c.lit_id AS lieu_lit_id, + t_lieux_c.lit_code AS lieu_lit_code, + t_lieux_c.lit_texte AS lieu_lit_texte, + t_lieux_c.lit_section_id, + t_lieux_c.lit_section_code, + t_lieux_c.lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_unite_id, + p_factures_lignes_c.rubrique_facturation_id, + t_rubriques_facturation.code AS rubrique_facturation_code, + t_rubriques_facturation.texte_court AS rubrique_facturation_texte, + p_factures_lignes_c.rubrique_comptabilisation_id, + t_rubriques_facturation_c.code AS rubrique_comptabilisation_code, + t_rubriques_facturation_c.texte_court AS rubrique_comptabilisation_texte, + p_factures_lignes_c.prestation_id, + t_prestations.code AS prestation_code, + t_prestations.texte_court AS prestation_texte, + p_factures_lignes_c.nb_rubrique, + p_factures_lignes_c.nb_prestation, + p_factures_lignes_c.montant_facture, + p_factures_lignes_c.montant_facture_0, + p_factures_lignes_c.montant_facture_1, + p_factures_lignes_c.montant_facture_2, + p_factures_lignes_c.montant_facture_22, + p_factures_lignes_c.origine_facturation_id, + CASE p_factures_lignes_c.origine_facturation_id + WHEN 1 THEN '1'::text + WHEN 2 THEN '2'::text + WHEN 3 THEN '3'::text + ELSE p_factures_lignes_c.origine_facturation_id::text + END AS origine_facturation_code, + CASE p_factures_lignes_c.origine_facturation_id + WHEN 1 THEN 'Séjour'::text + WHEN 2 THEN 'Actes'::text + WHEN 3 THEN 'Actes inclus dans séjour'::text + ELSE p_factures_lignes_c.origine_facturation_id::text + END AS origine_facturation_texte, + p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour, + p_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour, + p_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour, + p_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour, + p_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour, + p_factures_lignes_c.montant_comptabilise, + p_factures_lignes_c.montant_comptabilise_0, + p_factures_lignes_c.montant_comptabilise_1, + p_factures_lignes_c.montant_comptabilise_2, + p_factures_lignes_c.montant_comptabilise_22, + p_factures_lignes_c.montant_comptabilise_budget_global_1 AS montant_comptabilise_budget_global, + 0 AS montant_comptabilise_budget_global_0, + p_factures_lignes_c.montant_comptabilise_budget_global_1, + 0 AS montant_comptabilise_budget_global_2, + 0 AS montant_comptabilise_budget_global_22, + CASE + WHEN p_factures_lignes_c.montant_encours IS NOT NULL THEN p_factures_lignes_c.montant_encours + ELSE 0::numeric + END AS montant_encours, + CASE + WHEN p_factures_lignes_c.montant_encours_0 IS NOT NULL THEN p_factures_lignes_c.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_0, + CASE + WHEN p_factures_lignes_c.montant_encours_1 IS NOT NULL THEN p_factures_lignes_c.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_1, + CASE + WHEN p_factures_lignes_c.montant_encours_2 IS NOT NULL THEN p_factures_lignes_c.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_2, + CASE + WHEN p_factures_lignes_c.montant_encours_22 IS NOT NULL THEN p_factures_lignes_c.montant_encours_22 + ELSE 0::numeric + END AS montant_encours_22, + 0 AS no_oid, + 0 AS no_nb_lits + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_ghs_c ON p_sejours.ghs_id = t_ghs_c.ghs_id + JOIN activite.t_ghm_c ON p_sejours.ghm_id = t_ghm_c.ghm_id + JOIN activite.t_medecins_administratifs_c ON p_sejours.medecin_sejour_id = t_medecins_administratifs_c.oid + JOIN activite.t_lieux_c ON p_factures_lignes_c.lieu_id = t_lieux_c.oid + JOIN activite.t_rubriques_facturation ON p_factures_lignes_c.rubrique_facturation_id = t_rubriques_facturation.oid + JOIN activite.t_rubriques_facturation t_rubriques_facturation_c ON p_factures_lignes_c.rubrique_comptabilisation_id = t_rubriques_facturation_c.oid + JOIN activite.t_prestations ON p_factures_lignes_c.prestation_id = t_prestations.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_c_2.yaml b/db/schema2/views/v_factures_lignes_c_2.yaml new file mode 100644 index 0000000..dcae4be --- /dev/null +++ b/db/schema2/views/v_factures_lignes_c_2.yaml @@ -0,0 +1,117 @@ +src: | + SELECT p_factures_lignes_c.finess, + p_sejours.no_sejour, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_sejours.no_patient, + p_sejours.date_entree, + p_factures_lignes_c.no_facture, + to_char(p_factures.date_facture::timestamp with time zone, 'YYYYMM'::text) AS mois_facture, + p_factures.date_facture, + to_char(p_factures.date_vente::timestamp with time zone, 'YYYYMM'::text) AS mois_vente, + p_factures.date_vente, + to_char(p_sejours.date_sortie::timestamp with time zone, 'YYYYMM'::text) AS mois_sortie, + p_sejours.date_sortie, + to_char(p_factures_lignes_c.date_debut::timestamp with time zone, 'YYYYMM'::text) AS mois_debut, + to_char(p_factures_lignes_c.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin, + p_factures_lignes_c.date_debut, + p_factures_lignes_c.date_fin, + p_factures_lignes_c.coefficient, + p_factures_lignes_c.coefficient_mco, + p_factures_lignes_c.prix_unitaire, + p_factures_lignes_c.taux_0, + p_factures_lignes_c.taux_1, + p_factures_lignes_c.taux_2, + p_factures_lignes_c.taux_22, + p_sejours.ghs_id, + p_sejours.type_sejour, + CASE + WHEN p_sejours.type_sejour = '1'::text THEN 'Hospitalisés'::text::text + WHEN p_sejours.type_sejour = '2'::text THEN 'Ambulatoires'::text::text + WHEN p_sejours.type_sejour = '3'::text THEN 'Externes'::text::text + WHEN p_sejours.type_sejour = '4'::text THEN 'Long séjours'::text::text + WHEN p_sejours.type_sejour = '5'::text THEN 'Séances'::text::text + ELSE p_sejours.type_sejour + END AS type_sejour_texte, + p_factures_lignes_c.lieu_id, + p_sejours.medecin_sejour_id AS medecin_adm_sejour_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_sejour_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_sejour_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_sejour_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_sejour_nom_prenom, + t_medecins_administratifs_c.medecin_id AS medecin_sejour_id, + t_medecins_administratifs_c.nom AS medecin_sejour_nom, + t_medecins_administratifs_c.prenom AS medecin_sejour_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_sejour_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_sejour_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_sejour_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_sejour_specialite_texte, + t_lieux_c.service_facturation_id AS lieu_service_id, + t_lieux_c.service_facturation_code AS lieu_service_code, + t_lieux_c.service_facturation_texte AS lieu_service_texte, + t_lieux_c.activite_id AS lieu_activite_id, + t_lieux_c.activite_code AS lieu_activite_code, + t_lieux_c.activite_texte AS lieu_activite_texte, + t_lieux_c.etage_id AS lieu_etage_id, + t_lieux_c.etage_code AS lieu_etage_code, + t_lieux_c.etage_texte AS lieu_etage_texte, + t_lieux_c.lit_id AS lieu_lit_id, + t_lieux_c.lit_code AS lieu_lit_code, + t_lieux_c.lit_texte AS lieu_lit_texte, + t_lieux_c.unite_medicale_id AS lieu_unite_id, + p_factures_lignes_c.rubrique_facturation_id, + t_rubriques_facturation.code AS rubrique_facturation_code, + t_rubriques_facturation.texte_court AS rubrique_facturation_texte, + p_factures_lignes_c.rubrique_comptabilisation_id, + t_rubriques_facturation_c.code AS rubrique_comptabilisation_code, + t_rubriques_facturation_c.texte_court AS rubrique_comptabilisation_texte, + p_factures_lignes_c.prestation_id, + t_prestations.code AS prestation_code, + t_prestations.texte_court AS prestation_texte, + p_factures_lignes_c.nb_rubrique, + p_factures_lignes_c.nb_prestation, + p_factures_lignes_c.montant_facture, + p_factures_lignes_c.montant_facture_0, + p_factures_lignes_c.montant_facture_1, + p_factures_lignes_c.montant_facture_2, + p_factures_lignes_c.montant_facture_22, + p_factures_lignes_c.montant_comptabilise, + p_factures_lignes_c.montant_comptabilise_0, + p_factures_lignes_c.montant_comptabilise_1, + p_factures_lignes_c.montant_comptabilise_2, + p_factures_lignes_c.montant_comptabilise_22, + 0 AS no_oid, + 0 AS no_nb_lits, + CASE + WHEN t_ghs_c.cmd_code = '28'::text THEN 'S'::text + ELSE t_ghs_c.mco_code + END AS mcos_code, + CASE + WHEN t_ghs_c.cmd_code = '28'::text THEN t_ghs_c.cmd_texte + ELSE + CASE + WHEN t_ghs_c.mco_code = '*'::text THEN 'Hors GHM ou N/A'::text + ELSE t_ghs_c.mco_texte + END + END AS mcos_texte, + CASE + WHEN t_ghs_c.cmd_code = '28'::text THEN 4 + ELSE + CASE t_ghs_c.mco_code + WHEN '*'::text THEN 0 + WHEN 'M'::text THEN 1 + WHEN 'C'::text THEN 2 + WHEN 'O'::text THEN 3 + ELSE NULL::integer + END + END AS mcos_id + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_ghs_c ON p_sejours.ghs_id = t_ghs_c.ghs_id + JOIN activite.t_ghm_c ON p_sejours.ghm_id = t_ghm_c.ghm_id + JOIN activite.t_medecins_administratifs_c ON p_sejours.medecin_sejour_id = t_medecins_administratifs_c.oid + JOIN activite.t_lieux_c ON p_factures_lignes_c.lieu_id = t_lieux_c.oid + JOIN activite.t_rubriques_facturation ON p_factures_lignes_c.rubrique_facturation_id = t_rubriques_facturation.oid + JOIN activite.t_rubriques_facturation t_rubriques_facturation_c ON p_factures_lignes_c.rubrique_comptabilisation_id = t_rubriques_facturation_c.oid + JOIN activite.t_prestations ON p_factures_lignes_c.prestation_id = t_prestations.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_c_3.yaml b/db/schema2/views/v_factures_lignes_c_3.yaml new file mode 100644 index 0000000..3e6dc9d --- /dev/null +++ b/db/schema2/views/v_factures_lignes_c_3.yaml @@ -0,0 +1,58 @@ +src: | + SELECT p_factures_lignes_c.finess, + p_factures_lignes_c.facture_id, + p_factures_lignes_c.no_facture, + to_char(p_factures_lignes_c.date_debut::timestamp with time zone, 'YYYYMM'::text) AS mois_debut, + to_char(p_factures_lignes_c.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin, + p_factures_lignes_c.date_debut, + p_factures_lignes_c.date_fin, + p_factures_lignes_c.coefficient, + p_factures_lignes_c.coefficient_mco, + p_factures_lignes_c.prix_unitaire, + p_factures_lignes_c.taux_0, + p_factures_lignes_c.taux_1, + p_factures_lignes_c.taux_2, + p_factures_lignes_c.taux_22, + p_factures_lignes_c.lieu_id, + t_lieux_c.service_facturation_id AS lieu_service_id, + t_lieux_c.service_facturation_code AS lieu_service_code, + t_lieux_c.service_facturation_texte AS lieu_service_texte, + t_lieux_c.activite_id AS lieu_activite_id, + t_lieux_c.activite_code AS lieu_activite_code, + t_lieux_c.activite_texte AS lieu_activite_texte, + t_lieux_c.etage_id AS lieu_etage_id, + t_lieux_c.etage_code AS lieu_etage_code, + t_lieux_c.etage_texte AS lieu_etage_texte, + t_lieux_c.lit_id AS lieu_lit_id, + t_lieux_c.lit_code AS lieu_lit_code, + t_lieux_c.lit_texte AS lieu_lit_texte, + t_lieux_c.unite_medicale_id AS lieu_unite_id, + p_factures_lignes_c.rubrique_facturation_id, + t_rubriques_facturation.code AS rubrique_facturation_code, + t_rubriques_facturation.texte_court AS rubrique_facturation_texte, + p_factures_lignes_c.rubrique_comptabilisation_id, + t_rubriques_facturation_c.code AS rubrique_comptabilisation_code, + t_rubriques_facturation_c.texte_court AS rubrique_comptabilisation_texte, + p_factures_lignes_c.prestation_id, + t_prestations.code AS prestation_code, + t_prestations.texte_court AS prestation_texte, + p_factures_lignes_c.nb_rubrique, + p_factures_lignes_c.nb_prestation, + p_factures_lignes_c.montant_facture, + p_factures_lignes_c.montant_facture_0, + p_factures_lignes_c.montant_facture_1, + p_factures_lignes_c.montant_facture_2, + p_factures_lignes_c.montant_facture_22, + p_factures_lignes_c.montant_comptabilise, + p_factures_lignes_c.montant_comptabilise_0, + p_factures_lignes_c.montant_comptabilise_1, + p_factures_lignes_c.montant_comptabilise_2, + p_factures_lignes_c.montant_comptabilise_22, + 0 AS no_oid, + 0 AS no_nb_lits + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_lieux_c ON p_factures_lignes_c.lieu_id = t_lieux_c.oid + JOIN activite.t_rubriques_facturation ON p_factures_lignes_c.rubrique_facturation_id = t_rubriques_facturation.oid + JOIN activite.t_rubriques_facturation t_rubriques_facturation_c ON p_factures_lignes_c.rubrique_comptabilisation_id = t_rubriques_facturation_c.oid + JOIN activite.t_prestations ON p_factures_lignes_c.prestation_id = t_prestations.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_c_4.yaml b/db/schema2/views/v_factures_lignes_c_4.yaml new file mode 100644 index 0000000..d1a24cf --- /dev/null +++ b/db/schema2/views/v_factures_lignes_c_4.yaml @@ -0,0 +1,144 @@ +src: | + SELECT p_factures_lignes_c.finess, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_factures.code_facture, + p_factures.date_debut AS date_debut_facture, + p_factures.date_fin AS date_fin_facture, + to_char(p_factures.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin_facture, + p_factures.no_sejour, + p_factures_lignes_c.no_facture, + p_factures_lignes_c.pole_id, + to_char(p_factures.date_facture::timestamp with time zone, 'YYYYMM'::text) AS mois_facture, + p_factures.date_facture, + to_char(p_factures.date_vente::timestamp with time zone, 'YYYYMM'::text) AS mois_vente, + p_factures.date_vente, + to_char(p_factures_lignes_c.date_debut::timestamp with time zone, 'YYYYMM'::text) AS mois_debut, + to_char(p_factures_lignes_c.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin, + p_factures_lignes_c.date_debut, + p_factures_lignes_c.date_fin, + p_factures_lignes_c.coefficient, + p_factures_lignes_c.coefficient_mco, + p_factures_lignes_c.prix_unitaire, + p_factures_lignes_c.taux_0, + p_factures_lignes_c.taux_1, + p_factures_lignes_c.taux_2, + p_factures_lignes_c.taux_22, + p_factures_lignes_c.lieu_id, + t_lieux_c.service_facturation_id AS lieu_service_id, + t_lieux_c.service_facturation_code AS lieu_service_code, + t_lieux_c.service_facturation_texte AS lieu_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_service_section_texte, + t_lieux_c.activite_id AS lieu_activite_id, + t_lieux_c.activite_code AS lieu_activite_code, + t_lieux_c.activite_texte AS lieu_activite_texte, + t_lieux_c.etage_id AS lieu_etage_id, + t_lieux_c.etage_code AS lieu_etage_code, + t_lieux_c.etage_texte AS lieu_etage_texte, + t_lieux_c.etage_section_id AS lieu_etage_section_id, + t_lieux_c.etage_section_code AS lieu_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_etage_section_texte, + t_lieux_c.lit_id AS lieu_lit_id, + t_lieux_c.lit_code AS lieu_lit_code, + t_lieux_c.lit_texte AS lieu_lit_texte, + t_lieux_c.lit_section_id AS lieu_lit_section_id, + t_lieux_c.lit_section_code AS lieu_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS lieu_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_unite_fonctionnelle_section_texte, + p_factures_lignes_c.rubrique_facturation_id, + t_rubrique_facture.rubrique_facturation_code, + t_rubrique_facture.rubrique_facturation_texte, + t_rubrique_facture.rubrique_facturation_section_id, + t_rubrique_facture.rubrique_facturation_section_code, + t_rubrique_facture.rubrique_facturation_section_texte, + p_factures_lignes_c.rubrique_comptabilisation_id, + t_rubrique_facture.rubrique_comptabilisation_code, + t_rubrique_facture.rubrique_comptabilisation_section_id, + t_rubrique_facture.rubrique_comptabilisation_section_code, + t_rubrique_facture.rubrique_comptabilisation_section_texte, + t_rubrique_facture.rubrique_comptabilisation_texte, + p_factures_lignes_c.prestation_id, + t_rubrique_facture.prestation_code, + t_rubrique_facture.prestation_texte, + t_rubrique_facture.prestation_section_id, + t_rubrique_facture.prestation_section_code, + t_rubrique_facture.prestation_section_texte, + p_factures_lignes_c.compte_produit_id, + t_rubrique_facture.compte_produit_code, + t_rubrique_facture.compte_produit_texte, + t_rubrique_facture.compte_produit_section_id, + t_rubrique_facture.compte_produit_section_code, + t_rubrique_facture.compte_produit_section_texte, + p_factures_lignes_c.nb_rubrique, + p_factures_lignes_c.nb_prestation, + p_factures_lignes_c.montant_facture, + p_factures_lignes_c.montant_facture_0, + p_factures_lignes_c.montant_facture_1, + p_factures_lignes_c.montant_facture_2, + p_factures_lignes_c.montant_facture_22, + p_factures_lignes_c.origine_facturation_id, + CASE p_factures_lignes_c.origine_facturation_id + WHEN 1 THEN '1'::text + WHEN 2 THEN '2'::text + WHEN 3 THEN '3'::text + WHEN 9 THEN '9'::text + ELSE p_factures_lignes_c.origine_facturation_id::text + END AS origine_facturation_code, + CASE p_factures_lignes_c.origine_facturation_id + WHEN 1 THEN 'Séjour'::text + WHEN 2 THEN 'Actes'::text + WHEN 3 THEN 'Actes inclus dans séjour'::text + WHEN 9 THEN 'Lignes fictives pour facture uniquement en honoraires'::text + ELSE p_factures_lignes_c.origine_facturation_id::text + END AS origine_facturation_texte, + p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour, + p_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour, + p_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour, + p_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour, + p_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour, + p_factures_lignes_c.montant_comptabilise, + p_factures_lignes_c.montant_comptabilise_0, + p_factures_lignes_c.montant_comptabilise_1, + p_factures_lignes_c.montant_comptabilise_2, + p_factures_lignes_c.montant_comptabilise_22, + p_factures_lignes_c.montant_comptabilise_budget_global_1 AS montant_comptabilise_budget_global, + 0 AS montant_comptabilise_budget_global_0, + p_factures_lignes_c.montant_comptabilise_budget_global_1, + 0 AS montant_comptabilise_budget_global_2, + 0 AS montant_comptabilise_budget_global_22, + COALESCE(p_factures_lignes_c.montant_encours, 0::numeric) AS montant_encours, + COALESCE(p_factures_lignes_c.montant_encours_0, 0::numeric) AS montant_encours_0, + COALESCE(p_factures_lignes_c.montant_encours_1, 0::numeric) AS montant_encours_1, + COALESCE(p_factures_lignes_c.montant_encours_2, 0::numeric) AS montant_encours_2, + COALESCE(p_factures_lignes_c.montant_encours_22, 0::numeric) AS montant_encours_22, + 0 AS no_oid, + 0 AS no_nb_lits, + CASE + WHEN p_factures.code_facture >= '1'::bpchar THEN '1'::text + ELSE '0'::text + END AS est_ligne_facturee, + CASE + WHEN p_factures.code_facture >= '1'::bpchar AND p_factures.code_vente = '1'::bpchar THEN '1'::text + ELSE '0'::text + END AS est_ligne_comptabilisee, + CASE + WHEN p_factures.code_facture = '0'::bpchar THEN '1'::text + ELSE '0'::text + END AS est_ligne_encours + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_lieux_c ON p_factures_lignes_c.lieu_id = t_lieux_c.oid + JOIN activite.t_rubrique_facture_c t_rubrique_facture ON p_factures_lignes_c.rubrique_facture_id = t_rubrique_facture.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_c_5.yaml b/db/schema2/views/v_factures_lignes_c_5.yaml new file mode 100644 index 0000000..dfc5b70 --- /dev/null +++ b/db/schema2/views/v_factures_lignes_c_5.yaml @@ -0,0 +1,117 @@ +src: | + SELECT p_factures.sejour_id, + p_factures.oid AS facture_id, + p_factures.code_facture, + p_factures.date_debut AS date_debut_facture, + p_factures.date_fin AS date_fin_facture, + to_char(p_factures.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin_facture, + p_factures.no_sejour, + p_factures_lignes_c.no_facture, + to_char(p_factures.date_facture::timestamp with time zone, 'YYYYMM'::text) AS mois_facture, + p_factures.date_facture, + to_char(p_factures.date_vente::timestamp with time zone, 'YYYYMM'::text) AS mois_vente, + p_factures.date_vente, + to_char(p_factures_lignes_c.date_debut::timestamp with time zone, 'YYYYMM'::text) AS mois_debut, + to_char(p_factures_lignes_c.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin, + p_factures_lignes_c.date_debut, + p_factures_lignes_c.date_fin, + p_factures_lignes_c.coefficient, + p_factures_lignes_c.coefficient_mco, + p_factures_lignes_c.prix_unitaire, + p_factures_lignes_c.taux_0, + p_factures_lignes_c.taux_1, + p_factures_lignes_c.taux_2, + p_factures_lignes_c.taux_22, + p_factures_lignes_c.lieu_id, + p_factures_lignes_c.rubrique_facture_id, + p_factures_lignes_c.rubrique_facturation_id, + p_factures_lignes_c.rubrique_comptabilisation_id, + p_factures_lignes_c.prestation_id, + p_factures_lignes_c.compte_produit_id, + p_factures_lignes_c.compte_produit_analytique_id, + p_factures_lignes_c.nb_rubrique, + p_factures_lignes_c.nb_prestation, + p_factures_lignes_c.montant_facture, + p_factures_lignes_c.montant_facture_0, + p_factures_lignes_c.montant_facture_1, + p_factures_lignes_c.montant_facture_2, + p_factures_lignes_c.montant_facture_22, + p_factures_lignes_c.origine_facturation_id, + CASE p_factures_lignes_c.origine_facturation_id + WHEN 1 THEN '1'::text + WHEN 2 THEN '2'::text + WHEN 3 THEN '3'::text + WHEN 9 THEN '9'::text + ELSE p_factures_lignes_c.origine_facturation_id::text + END AS origine_facturation_code, + CASE p_factures_lignes_c.origine_facturation_id + WHEN 1 THEN 'Séjour'::text + WHEN 2 THEN 'Actes'::text + WHEN 3 THEN 'Actes inclus dans séjour'::text + WHEN 9 THEN 'Lignes fictives pour facture uniquement en honoraires'::text + ELSE p_factures_lignes_c.origine_facturation_id::text + END AS origine_facturation_texte, + p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour, + p_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour, + p_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour, + p_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour, + p_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour, + p_factures_lignes_c.montant_comptabilise, + p_factures_lignes_c.montant_comptabilise_0, + p_factures_lignes_c.montant_comptabilise_1, + p_factures_lignes_c.montant_comptabilise_2, + p_factures_lignes_c.montant_comptabilise_22, + p_factures_lignes_c.montant_comptabilise_budget_global_1 AS montant_comptabilise_budget_global, + 0 AS montant_comptabilise_budget_global_0, + p_factures_lignes_c.montant_comptabilise_budget_global_1, + 0 AS montant_comptabilise_budget_global_2, + 0 AS montant_comptabilise_budget_global_22, + COALESCE(p_factures_lignes_c.montant_encours, 0::numeric) AS montant_encours, + COALESCE(p_factures_lignes_c.montant_encours_0, 0::numeric) AS montant_encours_0, + COALESCE(p_factures_lignes_c.montant_encours_1, 0::numeric) AS montant_encours_1, + COALESCE(p_factures_lignes_c.montant_encours_2, 0::numeric) AS montant_encours_2, + COALESCE(p_factures_lignes_c.montant_encours_22, 0::numeric) AS montant_encours_22, + 0 AS no_oid, + 0 AS no_nb_lits, + CASE + WHEN p_factures.code_facture >= '1'::bpchar THEN '1'::text + ELSE '0'::text + END AS est_ligne_facturee, + CASE + WHEN p_factures.code_facture >= '1'::bpchar THEN p_factures_lignes_c.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_facture, + CASE + WHEN p_factures.code_facture >= '1'::bpchar THEN p_factures_lignes_c.nb_prestation + ELSE 0::numeric + END AS nb_prestation_facture, + CASE + WHEN p_factures.code_facture >= '1'::bpchar AND p_factures.code_vente = '1'::bpchar THEN '1'::text + ELSE '0'::text + END AS est_ligne_comptabilisee, + CASE + WHEN p_factures.code_facture >= '1'::bpchar AND p_factures.code_vente = '1'::bpchar THEN p_factures_lignes_c.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_comptabilise, + CASE + WHEN p_factures.code_facture >= '1'::bpchar AND p_factures.code_vente = '1'::bpchar THEN p_factures_lignes_c.nb_prestation + ELSE 0::numeric + END AS nb_prestation_comptabilise, + CASE + WHEN p_factures.code_facture = '0'::bpchar THEN '1'::text + ELSE '0'::text + END AS est_ligne_encours, + CASE + WHEN p_factures.code_facture = '0'::bpchar THEN p_factures_lignes_c.nb_prestation + ELSE 0::numeric + END AS nb_rubrique_encours, + CASE + WHEN p_factures.code_facture = '0'::bpchar THEN p_factures_lignes_c.nb_prestation + ELSE 0::numeric + END AS nb_prestation_encours, + p_factures_lignes_c.pole_id, + p_factures_lignes_c.budget_cle_id, + p_factures_lignes_c.lpp_id, + p_factures_lignes_c.ucd_id + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_c_r_1.yaml b/db/schema2/views/v_factures_lignes_c_r_1.yaml new file mode 100644 index 0000000..057b60c --- /dev/null +++ b/db/schema2/views/v_factures_lignes_c_r_1.yaml @@ -0,0 +1,187 @@ +dep: + - v_factures_lignes_c_4 + - v_sejours_1 +src: | + SELECT v_factures_lignes_c_4.date_fin AS date_reference, + v_factures_lignes_c_4.date_debut, + v_factures_lignes_c_4.date_fin, + v_factures_lignes_c_4.lieu_service_id AS lieu_reference_service_id, + v_factures_lignes_c_4.lieu_service_code AS lieu_reference_service_code, + v_factures_lignes_c_4.lieu_service_texte AS lieu_reference_service_texte, + v_factures_lignes_c_4.lieu_service_section_id AS lieu_reference_service_section_id, + v_factures_lignes_c_4.lieu_service_section_code AS lieu_reference_service_section_code, + v_factures_lignes_c_4.lieu_service_section_texte AS lieu_reference_service_section_texte, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_factures_lignes_c_4.lieu_activite_id AS lieu_reference_activite_id, + v_factures_lignes_c_4.lieu_activite_code AS lieu_reference_activite_code, + v_factures_lignes_c_4.lieu_activite_texte AS lieu_reference_activite_texte, + v_factures_lignes_c_4.lieu_etage_id AS lieu_reference_etage_id, + v_factures_lignes_c_4.lieu_etage_code AS lieu_reference_etage_code, + v_factures_lignes_c_4.lieu_etage_texte AS lieu_reference_etage_texte, + v_factures_lignes_c_4.lieu_etage_section_id AS lieu_reference_etage_section_id, + v_factures_lignes_c_4.lieu_etage_section_code AS lieu_reference_etage_section_code, + v_factures_lignes_c_4.lieu_etage_section_texte AS lieu_reference_etage_section_texte, + v_factures_lignes_c_4.lieu_unite_medicale_id AS lieu_reference_unite_medicale_id, + v_factures_lignes_c_4.lieu_unite_medicale_code AS lieu_reference_unite_medicale_code, + v_factures_lignes_c_4.lieu_unite_medicale_texte AS lieu_reference_unite_medicale_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.code_sorti, + v_sejours_1.code_cp_demandee, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.duree AS duree_sejour, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_service_section_id, + v_sejours_1.lieu_sortie_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_factures_lignes_c_4.no_facture, + v_factures_lignes_c_4.facture_id, + v_factures_lignes_c_4.date_facture, + v_factures_lignes_c_4.date_vente, + v_factures_lignes_c_4.rubrique_facturation_id, + v_factures_lignes_c_4.rubrique_facturation_code, + v_factures_lignes_c_4.rubrique_facturation_texte, + v_factures_lignes_c_4.rubrique_facturation_section_id, + v_factures_lignes_c_4.rubrique_facturation_section_code, + v_factures_lignes_c_4.rubrique_facturation_section_texte, + v_factures_lignes_c_4.rubrique_comptabilisation_id, + v_factures_lignes_c_4.rubrique_comptabilisation_code, + v_factures_lignes_c_4.rubrique_comptabilisation_texte, + v_factures_lignes_c_4.rubrique_comptabilisation_section_id, + v_factures_lignes_c_4.rubrique_comptabilisation_section_code, + v_factures_lignes_c_4.rubrique_comptabilisation_section_texte, + v_factures_lignes_c_4.compte_produit_id, + v_factures_lignes_c_4.compte_produit_code, + v_factures_lignes_c_4.compte_produit_texte, + v_factures_lignes_c_4.compte_produit_section_id, + v_factures_lignes_c_4.compte_produit_section_code, + v_factures_lignes_c_4.compte_produit_section_texte, + v_factures_lignes_c_4.prestation_id, + v_factures_lignes_c_4.prestation_code, + v_factures_lignes_c_4.prestation_texte, + v_factures_lignes_c_4.prestation_section_id, + v_factures_lignes_c_4.prestation_section_code, + v_factures_lignes_c_4.prestation_section_texte, + v_factures_lignes_c_4.code_facture, + v_factures_lignes_c_4.nb_rubrique, + CASE + WHEN v_factures_lignes_c_4.montant_facture <> 0::numeric THEN v_factures_lignes_c_4.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_facture, + CASE + WHEN v_factures_lignes_c_4.montant_encours <> 0::numeric THEN v_factures_lignes_c_4.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_encours, + v_factures_lignes_c_4.nb_prestation, + CASE + WHEN v_factures_lignes_c_4.montant_facture <> 0::numeric THEN v_factures_lignes_c_4.nb_rubrique + ELSE 0::numeric + END AS nb_prestation_facture, + CASE + WHEN v_factures_lignes_c_4.montant_encours <> 0::numeric THEN v_factures_lignes_c_4.nb_rubrique + ELSE 0::numeric + END AS nb_prestation_encours, + v_factures_lignes_c_4.coefficient, + v_factures_lignes_c_4.montant_facture, + v_factures_lignes_c_4.montant_facture_1, + v_factures_lignes_c_4.montant_facture_2 + v_factures_lignes_c_4.montant_facture_22 AS montant_facture_2, + v_factures_lignes_c_4.montant_facture_0, + v_factures_lignes_c_4.montant_comptabilise, + v_factures_lignes_c_4.montant_comptabilise_1, + v_factures_lignes_c_4.montant_comptabilise_2 + v_factures_lignes_c_4.montant_comptabilise_22 AS montant_comptabilise_2, + v_factures_lignes_c_4.montant_comptabilise_0, + v_factures_lignes_c_4.montant_encours, + v_factures_lignes_c_4.est_ligne_facturee + FROM activite.v_factures_lignes_c_4, + activite.v_sejours_1 + WHERE v_factures_lignes_c_4.no_sejour = v_sejours_1.no_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_c_r_2.yaml b/db/schema2/views/v_factures_lignes_c_r_2.yaml new file mode 100644 index 0000000..34b230f --- /dev/null +++ b/db/schema2/views/v_factures_lignes_c_r_2.yaml @@ -0,0 +1,187 @@ +dep: + - v_factures_lignes_c_4 + - v_sejours_1 +src: | + SELECT v_factures_lignes_c_4.date_fin_facture AS date_reference, + v_factures_lignes_c_4.date_debut, + v_factures_lignes_c_4.date_fin, + v_factures_lignes_c_4.lieu_service_id AS lieu_reference_service_id, + v_factures_lignes_c_4.lieu_service_code AS lieu_reference_service_code, + v_factures_lignes_c_4.lieu_service_texte AS lieu_reference_service_texte, + v_factures_lignes_c_4.lieu_service_section_id AS lieu_reference_service_section_id, + v_factures_lignes_c_4.lieu_service_section_code AS lieu_reference_service_section_code, + v_factures_lignes_c_4.lieu_service_section_texte AS lieu_reference_service_section_texte, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_factures_lignes_c_4.lieu_activite_id AS lieu_reference_activite_id, + v_factures_lignes_c_4.lieu_activite_code AS lieu_reference_activite_code, + v_factures_lignes_c_4.lieu_activite_texte AS lieu_reference_activite_texte, + v_factures_lignes_c_4.lieu_etage_id AS lieu_reference_etage_id, + v_factures_lignes_c_4.lieu_etage_code AS lieu_reference_etage_code, + v_factures_lignes_c_4.lieu_etage_texte AS lieu_reference_etage_texte, + v_factures_lignes_c_4.lieu_etage_section_id AS lieu_reference_etage_section_id, + v_factures_lignes_c_4.lieu_etage_section_code AS lieu_reference_etage_section_code, + v_factures_lignes_c_4.lieu_etage_section_texte AS lieu_reference_etage_section_texte, + v_factures_lignes_c_4.lieu_unite_medicale_id AS lieu_reference_unite_medicale_id, + v_factures_lignes_c_4.lieu_unite_medicale_code AS lieu_reference_unite_medicale_code, + v_factures_lignes_c_4.lieu_unite_medicale_texte AS lieu_reference_unite_medicale_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.code_sorti, + v_sejours_1.code_cp_demandee, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.duree AS duree_sejour, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_service_section_id, + v_sejours_1.lieu_sortie_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_factures_lignes_c_4.no_facture, + v_factures_lignes_c_4.facture_id, + v_factures_lignes_c_4.date_facture, + v_factures_lignes_c_4.date_vente, + v_factures_lignes_c_4.rubrique_facturation_id, + v_factures_lignes_c_4.rubrique_facturation_code, + v_factures_lignes_c_4.rubrique_facturation_texte, + v_factures_lignes_c_4.rubrique_facturation_section_id, + v_factures_lignes_c_4.rubrique_facturation_section_code, + v_factures_lignes_c_4.rubrique_facturation_section_texte, + v_factures_lignes_c_4.rubrique_comptabilisation_id, + v_factures_lignes_c_4.rubrique_comptabilisation_code, + v_factures_lignes_c_4.rubrique_comptabilisation_texte, + v_factures_lignes_c_4.rubrique_comptabilisation_section_id, + v_factures_lignes_c_4.rubrique_comptabilisation_section_code, + v_factures_lignes_c_4.rubrique_comptabilisation_section_texte, + v_factures_lignes_c_4.compte_produit_id, + v_factures_lignes_c_4.compte_produit_code, + v_factures_lignes_c_4.compte_produit_texte, + v_factures_lignes_c_4.compte_produit_section_id, + v_factures_lignes_c_4.compte_produit_section_code, + v_factures_lignes_c_4.compte_produit_section_texte, + v_factures_lignes_c_4.prestation_id, + v_factures_lignes_c_4.prestation_code, + v_factures_lignes_c_4.prestation_texte, + v_factures_lignes_c_4.prestation_section_id, + v_factures_lignes_c_4.prestation_section_code, + v_factures_lignes_c_4.prestation_section_texte, + v_factures_lignes_c_4.code_facture, + v_factures_lignes_c_4.nb_rubrique, + CASE + WHEN v_factures_lignes_c_4.montant_facture <> 0::numeric THEN v_factures_lignes_c_4.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_facture, + CASE + WHEN v_factures_lignes_c_4.montant_encours <> 0::numeric THEN v_factures_lignes_c_4.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_encours, + v_factures_lignes_c_4.nb_prestation, + CASE + WHEN v_factures_lignes_c_4.montant_facture <> 0::numeric THEN v_factures_lignes_c_4.nb_rubrique + ELSE 0::numeric + END AS nb_prestation_facture, + CASE + WHEN v_factures_lignes_c_4.montant_encours <> 0::numeric THEN v_factures_lignes_c_4.nb_rubrique + ELSE 0::numeric + END AS nb_prestation_encours, + v_factures_lignes_c_4.coefficient, + v_factures_lignes_c_4.montant_facture, + v_factures_lignes_c_4.montant_facture_1, + v_factures_lignes_c_4.montant_facture_2 + v_factures_lignes_c_4.montant_facture_22 AS montant_facture_2, + v_factures_lignes_c_4.montant_facture_0, + v_factures_lignes_c_4.montant_comptabilise, + v_factures_lignes_c_4.montant_comptabilise_1, + v_factures_lignes_c_4.montant_comptabilise_2 + v_factures_lignes_c_4.montant_comptabilise_22 AS montant_comptabilise_2, + v_factures_lignes_c_4.montant_comptabilise_0, + v_factures_lignes_c_4.montant_encours, + v_factures_lignes_c_4.est_ligne_facturee + FROM activite.v_factures_lignes_c_4, + activite.v_sejours_1 + WHERE v_factures_lignes_c_4.no_sejour = v_sejours_1.no_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_c_r_3.yaml b/db/schema2/views/v_factures_lignes_c_r_3.yaml new file mode 100644 index 0000000..bdf0ed5 --- /dev/null +++ b/db/schema2/views/v_factures_lignes_c_r_3.yaml @@ -0,0 +1,186 @@ +dep: + - v_factures_lignes_c_4 + - v_sejours_1 +src: | + SELECT v_factures_lignes_c_4.date_facture AS date_reference, + v_factures_lignes_c_4.date_debut, + v_factures_lignes_c_4.date_fin, + v_factures_lignes_c_4.lieu_service_id AS lieu_reference_service_id, + v_factures_lignes_c_4.lieu_service_code AS lieu_reference_service_code, + v_factures_lignes_c_4.lieu_service_texte AS lieu_reference_service_texte, + v_factures_lignes_c_4.lieu_service_section_id AS lieu_reference_service_section_id, + v_factures_lignes_c_4.lieu_service_section_code AS lieu_reference_service_section_code, + v_factures_lignes_c_4.lieu_service_section_texte AS lieu_reference_service_section_texte, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_factures_lignes_c_4.lieu_activite_id AS lieu_reference_activite_id, + v_factures_lignes_c_4.lieu_activite_code AS lieu_reference_activite_code, + v_factures_lignes_c_4.lieu_activite_texte AS lieu_reference_activite_texte, + v_factures_lignes_c_4.lieu_etage_id AS lieu_reference_etage_id, + v_factures_lignes_c_4.lieu_etage_code AS lieu_reference_etage_code, + v_factures_lignes_c_4.lieu_etage_texte AS lieu_reference_etage_texte, + v_factures_lignes_c_4.lieu_etage_section_id AS lieu_reference_etage_section_id, + v_factures_lignes_c_4.lieu_etage_section_code AS lieu_reference_etage_section_code, + v_factures_lignes_c_4.lieu_etage_section_texte AS lieu_reference_etage_section_texte, + v_factures_lignes_c_4.lieu_unite_medicale_id AS lieu_reference_unite_medicale_id, + v_factures_lignes_c_4.lieu_unite_medicale_code AS lieu_reference_unite_medicale_code, + v_factures_lignes_c_4.lieu_unite_medicale_texte AS lieu_reference_unite_medicale_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.code_sorti, + v_sejours_1.code_cp_demandee, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.duree AS duree_sejour, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_service_section_id, + v_sejours_1.lieu_sortie_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_factures_lignes_c_4.no_facture, + v_factures_lignes_c_4.facture_id, + v_factures_lignes_c_4.date_facture, + v_factures_lignes_c_4.date_vente, + v_factures_lignes_c_4.rubrique_facturation_id, + v_factures_lignes_c_4.rubrique_facturation_code, + v_factures_lignes_c_4.rubrique_facturation_texte, + v_factures_lignes_c_4.rubrique_facturation_section_id, + v_factures_lignes_c_4.rubrique_facturation_section_code, + v_factures_lignes_c_4.rubrique_facturation_section_texte, + v_factures_lignes_c_4.rubrique_comptabilisation_id, + v_factures_lignes_c_4.rubrique_comptabilisation_code, + v_factures_lignes_c_4.rubrique_comptabilisation_texte, + v_factures_lignes_c_4.rubrique_comptabilisation_section_id, + v_factures_lignes_c_4.rubrique_comptabilisation_section_code, + v_factures_lignes_c_4.rubrique_comptabilisation_section_texte, + v_factures_lignes_c_4.compte_produit_id, + v_factures_lignes_c_4.compte_produit_code, + v_factures_lignes_c_4.compte_produit_texte, + v_factures_lignes_c_4.compte_produit_section_id, + v_factures_lignes_c_4.compte_produit_section_code, + v_factures_lignes_c_4.compte_produit_section_texte, + v_factures_lignes_c_4.prestation_id, + v_factures_lignes_c_4.prestation_code, + v_factures_lignes_c_4.prestation_texte, + v_factures_lignes_c_4.prestation_section_id, + v_factures_lignes_c_4.prestation_section_code, + v_factures_lignes_c_4.prestation_section_texte, + v_factures_lignes_c_4.code_facture, + v_factures_lignes_c_4.nb_rubrique, + CASE + WHEN v_factures_lignes_c_4.montant_facture <> 0::numeric THEN v_factures_lignes_c_4.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_facture, + CASE + WHEN v_factures_lignes_c_4.montant_encours <> 0::numeric THEN v_factures_lignes_c_4.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_encours, + v_factures_lignes_c_4.nb_prestation, + CASE + WHEN v_factures_lignes_c_4.montant_facture <> 0::numeric THEN v_factures_lignes_c_4.nb_rubrique + ELSE 0::numeric + END AS nb_prestation_facture, + CASE + WHEN v_factures_lignes_c_4.montant_encours <> 0::numeric THEN v_factures_lignes_c_4.nb_rubrique + ELSE 0::numeric + END AS nb_prestation_encours, + v_factures_lignes_c_4.coefficient, + v_factures_lignes_c_4.montant_facture, + v_factures_lignes_c_4.montant_facture_1, + v_factures_lignes_c_4.montant_facture_2 + v_factures_lignes_c_4.montant_facture_22 AS montant_facture_2, + v_factures_lignes_c_4.montant_facture_0, + v_factures_lignes_c_4.montant_comptabilise, + v_factures_lignes_c_4.montant_comptabilise_1, + v_factures_lignes_c_4.montant_comptabilise_2 + v_factures_lignes_c_4.montant_comptabilise_22 AS montant_comptabilise_2, + v_factures_lignes_c_4.montant_comptabilise_0, + v_factures_lignes_c_4.montant_encours, + v_factures_lignes_c_4.est_ligne_facturee + FROM activite.v_factures_lignes_c_4, + activite.v_sejours_1 + WHERE v_factures_lignes_c_4.no_sejour = v_sejours_1.no_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_c_r_4.yaml b/db/schema2/views/v_factures_lignes_c_r_4.yaml new file mode 100644 index 0000000..c8fdf3b --- /dev/null +++ b/db/schema2/views/v_factures_lignes_c_r_4.yaml @@ -0,0 +1,187 @@ +dep: + - v_factures_lignes_c_4 + - v_sejours_1 +src: | + SELECT v_factures_lignes_c_4.date_vente AS date_reference, + v_factures_lignes_c_4.date_debut, + v_factures_lignes_c_4.date_fin, + v_factures_lignes_c_4.lieu_service_id AS lieu_reference_service_id, + v_factures_lignes_c_4.lieu_service_code AS lieu_reference_service_code, + v_factures_lignes_c_4.lieu_service_texte AS lieu_reference_service_texte, + v_factures_lignes_c_4.lieu_service_section_id AS lieu_reference_service_section_id, + v_factures_lignes_c_4.lieu_service_section_code AS lieu_reference_service_section_code, + v_factures_lignes_c_4.lieu_service_section_texte AS lieu_reference_service_section_texte, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_factures_lignes_c_4.lieu_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_factures_lignes_c_4.lieu_activite_id AS lieu_reference_activite_id, + v_factures_lignes_c_4.lieu_activite_code AS lieu_reference_activite_code, + v_factures_lignes_c_4.lieu_activite_texte AS lieu_reference_activite_texte, + v_factures_lignes_c_4.lieu_etage_id AS lieu_reference_etage_id, + v_factures_lignes_c_4.lieu_etage_code AS lieu_reference_etage_code, + v_factures_lignes_c_4.lieu_etage_texte AS lieu_reference_etage_texte, + v_factures_lignes_c_4.lieu_etage_section_id AS lieu_reference_etage_section_id, + v_factures_lignes_c_4.lieu_etage_section_code AS lieu_reference_etage_section_code, + v_factures_lignes_c_4.lieu_etage_section_texte AS lieu_reference_etage_section_texte, + v_factures_lignes_c_4.lieu_unite_medicale_id AS lieu_reference_unite_medicale_id, + v_factures_lignes_c_4.lieu_unite_medicale_code AS lieu_reference_unite_medicale_code, + v_factures_lignes_c_4.lieu_unite_medicale_texte AS lieu_reference_unite_medicale_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.code_sorti, + v_sejours_1.code_cp_demandee, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.duree AS duree_sejour, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_service_section_id, + v_sejours_1.lieu_sortie_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_factures_lignes_c_4.no_facture, + v_factures_lignes_c_4.facture_id, + v_factures_lignes_c_4.date_facture, + v_factures_lignes_c_4.date_vente, + v_factures_lignes_c_4.rubrique_facturation_id, + v_factures_lignes_c_4.rubrique_facturation_code, + v_factures_lignes_c_4.rubrique_facturation_texte, + v_factures_lignes_c_4.rubrique_facturation_section_id, + v_factures_lignes_c_4.rubrique_facturation_section_code, + v_factures_lignes_c_4.rubrique_facturation_section_texte, + v_factures_lignes_c_4.rubrique_comptabilisation_id, + v_factures_lignes_c_4.rubrique_comptabilisation_code, + v_factures_lignes_c_4.rubrique_comptabilisation_texte, + v_factures_lignes_c_4.rubrique_comptabilisation_section_id, + v_factures_lignes_c_4.rubrique_comptabilisation_section_code, + v_factures_lignes_c_4.rubrique_comptabilisation_section_texte, + v_factures_lignes_c_4.compte_produit_id, + v_factures_lignes_c_4.compte_produit_code, + v_factures_lignes_c_4.compte_produit_texte, + v_factures_lignes_c_4.compte_produit_section_id, + v_factures_lignes_c_4.compte_produit_section_code, + v_factures_lignes_c_4.compte_produit_section_texte, + v_factures_lignes_c_4.prestation_id, + v_factures_lignes_c_4.prestation_code, + v_factures_lignes_c_4.prestation_texte, + v_factures_lignes_c_4.prestation_section_id, + v_factures_lignes_c_4.prestation_section_code, + v_factures_lignes_c_4.prestation_section_texte, + v_factures_lignes_c_4.code_facture, + v_factures_lignes_c_4.nb_rubrique, + CASE + WHEN v_factures_lignes_c_4.montant_facture <> 0::numeric THEN v_factures_lignes_c_4.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_facture, + CASE + WHEN v_factures_lignes_c_4.montant_encours <> 0::numeric THEN v_factures_lignes_c_4.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_encours, + v_factures_lignes_c_4.nb_prestation, + CASE + WHEN v_factures_lignes_c_4.montant_facture <> 0::numeric THEN v_factures_lignes_c_4.nb_rubrique + ELSE 0::numeric + END AS nb_prestation_facture, + CASE + WHEN v_factures_lignes_c_4.montant_encours <> 0::numeric THEN v_factures_lignes_c_4.nb_rubrique + ELSE 0::numeric + END AS nb_prestation_encours, + v_factures_lignes_c_4.coefficient, + v_factures_lignes_c_4.montant_facture, + v_factures_lignes_c_4.montant_facture_1, + v_factures_lignes_c_4.montant_facture_2 + v_factures_lignes_c_4.montant_facture_22 AS montant_facture_2, + v_factures_lignes_c_4.montant_facture_0, + v_factures_lignes_c_4.montant_comptabilise, + v_factures_lignes_c_4.montant_comptabilise_1, + v_factures_lignes_c_4.montant_comptabilise_2 + v_factures_lignes_c_4.montant_comptabilise_22 AS montant_comptabilise_2, + v_factures_lignes_c_4.montant_comptabilise_0, + v_factures_lignes_c_4.montant_encours, + v_factures_lignes_c_4.est_ligne_facturee + FROM activite.v_factures_lignes_c_4, + activite.v_sejours_1 + WHERE v_factures_lignes_c_4.no_sejour = v_sejours_1.no_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_compte_produit_1.yaml b/db/schema2/views/v_factures_lignes_compte_produit_1.yaml new file mode 100644 index 0000000..e4e2937 --- /dev/null +++ b/db/schema2/views/v_factures_lignes_compte_produit_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_compte.oid, + t_compte.code AS compte_produit_code, + t_compte.texte AS compte_produit_texte, + t_compte.section_id AS compte_produit_section_id, + t_compte.section_code AS compte_produit_section_code, + t_compte.section_texte AS compte_produit_section_texte + FROM activite.t_compte; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_executant_cpt_1.yaml b/db/schema2/views/v_factures_lignes_executant_cpt_1.yaml new file mode 100644 index 0000000..3dd2826 --- /dev/null +++ b/db/schema2/views/v_factures_lignes_executant_cpt_1.yaml @@ -0,0 +1,18 @@ +src: | + SELECT t_medecins_administratifs_c.oid, + t_medecins_administratifs_c.adm_code AS medecin_adm_comptabilise_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_comptabilise_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_comptabilise_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_comptabilise_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_comptabilise_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_comptabilise_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_comptabilise_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_comptabilise_id, + t_medecins_administratifs_c.medecin_code AS medecin_comptabilise_code, + t_medecins_administratifs_c.nom AS medecin_comptabilise_nom, + t_medecins_administratifs_c.prenom AS medecin_comptabilise_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_comptabilise_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_comptabilise_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_comptabilise_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_comptabilise_specialite_texte + FROM activite.t_medecins_administratifs_c; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_executant_fac_1.yaml b/db/schema2/views/v_factures_lignes_executant_fac_1.yaml new file mode 100644 index 0000000..058f968 --- /dev/null +++ b/db/schema2/views/v_factures_lignes_executant_fac_1.yaml @@ -0,0 +1,18 @@ +src: | + SELECT t_medecins_administratifs_c.oid, + t_medecins_administratifs_c.adm_code AS medecin_adm_facture_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_facture_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_facture_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_facture_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_facture_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_facture_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_facture_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_facture_id, + t_medecins_administratifs_c.medecin_code AS medecin_facture_code, + t_medecins_administratifs_c.nom AS medecin_facture_nom, + t_medecins_administratifs_c.prenom AS medecin_facture_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_facture_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_facture_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_facture_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_facture_specialite_texte + FROM activite.t_medecins_administratifs_c; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_h_1.yaml b/db/schema2/views/v_factures_lignes_h_1.yaml new file mode 100644 index 0000000..80a1bd5 --- /dev/null +++ b/db/schema2/views/v_factures_lignes_h_1.yaml @@ -0,0 +1,190 @@ +src: | + SELECT p_factures_lignes_h.finess, + p_sejours.no_sejour, + p_sejours.etat AS sejour_etat, + p_factures.sejour_id, + p_factures.no_facture_reference, + p_factures.facture_reference_id, + p_factures.oid AS facture_id, + p_sejours.no_patient, + p_sejours.date_entree, + p_factures_lignes_h.no_facture, + to_char(p_factures.date_facture::timestamp with time zone, 'YYYYMM'::text) AS mois_facture, + p_factures.date_facture, + to_char(p_factures.date_vente::timestamp with time zone, 'YYYYMM'::text) AS mois_vente, + p_factures.date_vente, + to_char(p_sejours.date_sortie::timestamp with time zone, 'YYYYMM'::text) AS mois_sortie, + p_sejours.date_sortie, + to_char(p_factures_lignes_h.date_debut::timestamp with time zone, 'YYYYMM'::text) AS mois_debut, + to_char(p_factures_lignes_h.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.date_fin, + p_factures_lignes_h.coefficient, + p_factures_lignes_h.coefficient_mco, + p_factures_lignes_h.prix_unitaire, + p_factures_lignes_h.taux_0, + p_factures_lignes_h.taux_1, + p_factures_lignes_h.taux_2, + p_factures_lignes_h.taux_22, + p_sejours.ghs_id, + t_ghs_c.ghs_code_text AS ghs_code, + t_ghs_c.ghs_texte, + p_sejours.ghm_id, + t_ghm_c.ghm_code, + t_ghm_c.ghm_texte, + t_ghm_c.ghm5_id, + t_ghm_c.ghm5_code, + t_ghm_c.ghm5_texte, + t_ghm_c.severite_ghm_id, + t_ghm_c.severite_ghm_code, + t_ghm_c.severite_ghm_texte, + t_ghm_c.cas_id, + t_ghm_c.cas_code, + t_ghm_c.cas_texte, + t_ghm_c.mco_id, + t_ghm_c.mco_code, + t_ghm_c.mco_texte, + t_ghm_c.cmd_id, + t_ghm_c.cmd_code, + t_ghm_c.cmd_texte, + t_ghm_c.mco_id AS mcos_id, + t_ghm_c.mco_code AS mcos_code, + t_ghm_c.mco_texte AS mcos_texte, + t_ghm_c.ghm_section_id, + t_ghm_c.ghm_section_code, + t_ghm_c.ghm_section_texte, + p_sejours.type_sejour, + CASE + WHEN p_sejours.type_sejour = '1'::text THEN 'Hospitalisés'::text + WHEN p_sejours.type_sejour = '2'::text THEN 'Ambulatoires'::text + WHEN p_sejours.type_sejour = '3'::text THEN 'Externes'::text + WHEN p_sejours.type_sejour = '4'::text THEN 'Long séjours'::text + WHEN p_sejours.type_sejour = '5'::text THEN 'Séances'::text + ELSE p_sejours.type_sejour + END AS type_sejour_texte, + p_factures_lignes_h.lieu_id, + p_sejours.medecin_sejour_id AS medecin_adm_sejour_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_sejour_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_sejour_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_sejour_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_sejour_nom_prenom, + t_medecins_administratifs_c.medecin_id AS medecin_sejour_id, + t_medecins_administratifs_c.nom AS medecin_sejour_nom, + t_medecins_administratifs_c.prenom AS medecin_sejour_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_sejour_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_sejour_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_sejour_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_sejour_specialite_texte, + t_lieux_c.service_facturation_id AS lieu_service_id, + t_lieux_c.service_facturation_code AS lieu_service_code, + t_lieux_c.service_facturation_texte AS lieu_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_service_section_texte, + t_lieux_c.activite_id AS lieu_activite_id, + t_lieux_c.activite_code AS lieu_activite_code, + t_lieux_c.activite_texte AS lieu_activite_texte, + t_lieux_c.etage_id AS lieu_etage_id, + t_lieux_c.etage_code AS lieu_etage_code, + t_lieux_c.etage_texte AS lieu_etage_texte, + t_lieux_c.etage_section_id AS lieu_etage_section_id, + t_lieux_c.etage_section_code AS lieu_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_etage_section_texte, + t_lieux_c.lit_id AS lieu_lit_id, + t_lieux_c.lit_code AS lieu_lit_code, + t_lieux_c.lit_texte AS lieu_lit_texte, + t_lieux_c.lit_section_id, + t_lieux_c.lit_section_code, + t_lieux_c.lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_unite_id, + p_factures_lignes_h.medecin_facture_id AS medecin_adm_facture_id, + t_medecins_administratifs_fac.adm_code AS medecin_adm_facture_code, + t_medecins_administratifs_fac.adm_nom AS medecin_adm_facture_nom, + t_medecins_administratifs_fac.adm_prenom AS medecin_adm_facture_prenom, + t_medecins_administratifs_fac.adm_nom_prenom AS medecin_adm_facture_nom_prenom, + t_medecins_administratifs_fac.section_id AS medecin_adm_facture_section_id, + t_medecins_administratifs_fac.section_code AS medecin_adm_facture_section_code, + t_medecins_administratifs_fac.section_texte AS medecin_adm_facture_section_texte, + t_medecins_administratifs_fac.medecin_id AS medecin_facture_id, + t_medecins_administratifs_fac.medecin_code AS medecin_facture_code, + t_medecins_administratifs_fac.nom AS medecin_facture_nom, + t_medecins_administratifs_fac.prenom AS medecin_facture_prenom, + t_medecins_administratifs_fac.nom_prenom AS medecin_facture_nom_prenom, + t_medecins_administratifs_fac.specialite_id AS medecin_facture_specialite_id, + t_medecins_administratifs_fac.specialite_code AS medecin_facture_specialite_code, + t_medecins_administratifs_fac.specialite_texte AS medecin_facture_specialite_texte, + p_factures_lignes_h.medecin_comptabilise_id AS medecin_adm_comptabilise_id, + t_medecins_administratifs_cpt.adm_code AS medecin_adm_comptabilise_code, + t_medecins_administratifs_cpt.adm_nom AS medecin_adm_comptabilise_nom, + t_medecins_administratifs_cpt.adm_prenom AS medecin_adm_comptabilise_prenom, + t_medecins_administratifs_cpt.adm_nom_prenom AS medecin_adm_comptabilise_nom_prenom, + t_medecins_administratifs_cpt.medecin_id AS medecin_comptabilise_id, + t_medecins_administratifs_cpt.medecin_code AS medecin_comptabilise_code, + t_medecins_administratifs_cpt.nom AS medecin_comptabilise_nom, + t_medecins_administratifs_cpt.prenom AS medecin_comptabilise_prenom, + t_medecins_administratifs_cpt.nom_prenom AS medecin_comptabilise_nom_prenom, + t_medecins_administratifs_cpt.specialite_id AS medecin_comptabilise_specialite_id, + t_medecins_administratifs_cpt.specialite_code AS medecin_comptabilise_specialite_code, + t_medecins_administratifs_cpt.specialite_texte AS medecin_comptabilise_specialite_texte, + p_factures_lignes_h.prestation_id, + t_prestations.code AS prestation_code, + t_prestations.texte_court AS prestation_texte, + p_factures_lignes_h.acte_id, + t_actes_c.code AS acte_code, + t_actes_c.nomenclature AS acte_nomenclature, + t_actes_c.texte_court AS acte_texte, + p_factures_lignes_h.nb_rubrique, + p_factures_lignes_h.nb_prestation, + p_factures_lignes_h.montant_facture, + p_factures_lignes_h.montant_facture_0, + p_factures_lignes_h.montant_facture_1, + p_factures_lignes_h.montant_facture_2, + p_factures_lignes_h.montant_facture_22, + p_factures_lignes_h.montant_comptabilise, + p_factures_lignes_h.montant_comptabilise_0, + p_factures_lignes_h.montant_comptabilise_1, + p_factures_lignes_h.montant_comptabilise_2, + p_factures_lignes_h.montant_comptabilise_22, + p_factures_lignes_h.montant_depassement, + p_factures_lignes_h.montant_facture_actes_inclus_dans_sejour, + p_factures_lignes_h.montant_facture_0_actes_inclus_dans_sejour, + p_factures_lignes_h.montant_facture_1_actes_inclus_dans_sejour, + p_factures_lignes_h.montant_facture_2_actes_inclus_dans_sejour, + p_factures_lignes_h.montant_facture_22_actes_inclus_dans_sejour, + CASE + WHEN p_factures_lignes_h.montant_facture = 0::numeric AND COALESCE(p_factures_lignes_h.montant_facture_actes_inclus_dans_sejour, 0::numeric) = 0::numeric THEN round(p_factures_lignes_h.prix_unitaire * p_factures_lignes_h.nb_prestation * p_factures_lignes_h.coefficient * p_factures_lignes_h.coefficient_mco, 2) + ELSE 0::numeric + END AS montant_non_facture, + CASE + WHEN p_factures_lignes_h.montant_encours IS NOT NULL THEN p_factures_lignes_h.montant_encours + ELSE 0::numeric + END AS montant_encours, + CASE + WHEN p_factures_lignes_h.montant_encours_0 IS NOT NULL THEN p_factures_lignes_h.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_0, + CASE + WHEN p_factures_lignes_h.montant_encours_1 IS NOT NULL THEN p_factures_lignes_h.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_1, + CASE + WHEN p_factures_lignes_h.montant_encours_2 IS NOT NULL THEN p_factures_lignes_h.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_2, + CASE + WHEN p_factures_lignes_h.montant_encours_22 IS NOT NULL THEN p_factures_lignes_h.montant_encours_22 + ELSE 0::numeric + END AS montant_encours_22, + 0 AS no_oid, + 0 AS no_nb_lits + FROM activite.p_factures_lignes_h + JOIN activite.p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_ghs_c ON p_sejours.ghs_id = t_ghs_c.ghs_id + JOIN activite.t_ghm_c ON p_sejours.ghm_id = t_ghm_c.ghm_id + JOIN activite.t_medecins_administratifs_c ON p_sejours.medecin_sejour_id = t_medecins_administratifs_c.oid + JOIN activite.t_lieux_c ON p_factures_lignes_h.lieu_id = t_lieux_c.oid + JOIN activite.t_medecins_administratifs_c t_medecins_administratifs_fac ON p_factures_lignes_h.medecin_facture_id = t_medecins_administratifs_fac.oid + JOIN activite.t_medecins_administratifs_c t_medecins_administratifs_cpt ON p_factures_lignes_h.medecin_comptabilise_id = t_medecins_administratifs_cpt.oid + JOIN activite.t_prestations ON p_factures_lignes_h.prestation_id = t_prestations.oid + JOIN activite.t_actes_c ON p_factures_lignes_h.acte_id = t_actes_c.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_h_2.yaml b/db/schema2/views/v_factures_lignes_h_2.yaml new file mode 100644 index 0000000..54cbfdb --- /dev/null +++ b/db/schema2/views/v_factures_lignes_h_2.yaml @@ -0,0 +1,165 @@ +src: | + SELECT p_factures_lignes_h.finess, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_sejours.no_sejour, + p_sejours.no_patient, + p_sejours.date_entree, + p_factures_lignes_h.no_facture, + to_char(p_factures.date_facture::timestamp with time zone, 'YYYYMM'::text) AS mois_facture, + p_factures.date_facture, + to_char(p_factures.date_vente::timestamp with time zone, 'YYYYMM'::text) AS mois_vente, + p_factures.date_vente, + to_char(p_sejours.date_sortie::timestamp with time zone, 'YYYYMM'::text) AS mois_sortie, + p_sejours.date_sortie, + to_char(p_factures_lignes_h.date_debut::timestamp with time zone, 'YYYYMM'::text) AS mois_debut, + to_char(p_factures_lignes_h.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.date_fin, + p_factures_lignes_h.coefficient, + p_factures_lignes_h.coefficient_mco, + p_factures_lignes_h.prix_unitaire, + p_factures_lignes_h.taux_0, + p_factures_lignes_h.taux_1, + p_factures_lignes_h.taux_2, + p_factures_lignes_h.taux_22, + p_sejours.ghs_id, + p_sejours.type_sejour, + CASE + WHEN p_sejours.type_sejour = '1'::text THEN 'Hospitalisés'::text + WHEN p_sejours.type_sejour = '2'::text THEN 'Ambulatoires'::text + WHEN p_sejours.type_sejour = '3'::text THEN 'Externes'::text + WHEN p_sejours.type_sejour = '4'::text THEN 'Long séjours'::text + WHEN p_sejours.type_sejour = '5'::text THEN 'Séances'::text + ELSE p_sejours.type_sejour + END AS type_sejour_texte, + p_factures_lignes_h.lieu_id, + p_sejours.medecin_sejour_id AS medecin_adm_sejour_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_sejour_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_sejour_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_sejour_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_sejour_nom_prenom, + t_medecins_administratifs_c.medecin_id AS medecin_sejour_id, + t_medecins_administratifs_c.nom AS medecin_sejour_nom, + t_medecins_administratifs_c.prenom AS medecin_sejour_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_sejour_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_sejour_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_sejour_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_sejour_specialite_texte, + t_lieux_c.service_facturation_id AS lieu_service_id, + t_lieux_c.service_facturation_code AS lieu_service_code, + t_lieux_c.service_facturation_texte AS lieu_service_texte, + t_lieux_c.activite_id AS lieu_activite_id, + t_lieux_c.activite_code AS lieu_activite_code, + t_lieux_c.activite_texte AS lieu_activite_texte, + t_lieux_c.etage_id AS lieu_etage_id, + t_lieux_c.etage_code AS lieu_etage_code, + t_lieux_c.etage_texte AS lieu_etage_texte, + t_lieux_c.lit_id AS lieu_lit_id, + t_lieux_c.lit_code AS lieu_lit_code, + t_lieux_c.lit_texte AS lieu_lit_texte, + t_lieux_c.unite_medicale_id AS lieu_unite_id, + p_factures_lignes_h.medecin_facture_id AS medecin_adm_facture_id, + t_medecins_administratifs_fac.adm_code AS medecin_adm_facture_code, + t_medecins_administratifs_fac.adm_nom AS medecin_adm_facture_nom, + t_medecins_administratifs_fac.adm_prenom AS medecin_adm_facture_prenom, + t_medecins_administratifs_fac.adm_nom_prenom AS medecin_adm_facture_nom_prenom, + t_medecins_administratifs_fac.medecin_id AS medecin_facture_id, + t_medecins_administratifs_fac.nom AS medecin_facture_nom, + t_medecins_administratifs_fac.prenom AS medecin_facture_prenom, + t_medecins_administratifs_fac.nom_prenom AS medecin_facture_nom_prenom, + t_medecins_administratifs_fac.specialite_id AS medecin_facture_specialite_id, + t_medecins_administratifs_fac.specialite_code AS medecin_facture_specialite_code, + t_medecins_administratifs_fac.specialite_texte AS medecin_facture_specialite_texte, + p_factures_lignes_h.medecin_comptabilise_id AS medecin_adm_comptabilise_id, + t_medecins_administratifs_cpt.adm_code AS medecin_adm_comptabilise_code, + t_medecins_administratifs_cpt.adm_nom AS medecin_adm_comptabilise_nom, + t_medecins_administratifs_cpt.adm_prenom AS medecin_adm_comptabilise_prenom, + t_medecins_administratifs_cpt.adm_nom_prenom AS medecin_adm_comptabilise_nom_prenom, + t_medecins_administratifs_cpt.medecin_id AS medecin_comptabilise_id, + t_medecins_administratifs_cpt.nom AS medecin_comptabilise_nom, + t_medecins_administratifs_cpt.prenom AS medecin_comptabilise_prenom, + t_medecins_administratifs_cpt.nom_prenom AS medecin_comptabilise_nom_prenom, + t_medecins_administratifs_cpt.specialite_id AS medecin_comptabilise_specialite_id, + t_medecins_administratifs_cpt.specialite_code AS medecin_comptabilise_specialite_code, + t_medecins_administratifs_cpt.specialite_texte AS medecin_comptabilise_specialite_texte, + p_factures_lignes_h.prestation_id, + t_prestations.code AS prestation_code, + t_prestations.texte_court AS prestation_texte, + p_factures_lignes_h.acte_id, + t_actes_c.code AS acte_code, + t_actes_c.nomenclature AS acte_nomenclature, + t_actes_c.texte_court AS acte_texte, + p_factures_lignes_h.nb_rubrique, + p_factures_lignes_h.nb_prestation, + p_factures_lignes_h.montant_facture, + p_factures_lignes_h.montant_facture_0, + p_factures_lignes_h.montant_facture_1, + p_factures_lignes_h.montant_facture_2, + p_factures_lignes_h.montant_facture_22, + p_factures_lignes_h.montant_comptabilise, + p_factures_lignes_h.montant_comptabilise_0, + p_factures_lignes_h.montant_comptabilise_1, + p_factures_lignes_h.montant_comptabilise_2, + p_factures_lignes_h.montant_comptabilise_22, + p_factures_lignes_h.montant_depassement, + CASE + WHEN p_factures_lignes_h.montant_facture = 0::numeric THEN round(p_factures_lignes_h.prix_unitaire * p_factures_lignes_h.nb_prestation * p_factures_lignes_h.coefficient * p_factures_lignes_h.coefficient_mco, 2) + ELSE 0::numeric + END AS montant_non_facture, + CASE + WHEN p_factures_lignes_h.montant_encours IS NOT NULL THEN p_factures_lignes_h.montant_encours + ELSE 0::numeric + END AS montant_encours, + CASE + WHEN p_factures_lignes_h.montant_encours_0 IS NOT NULL THEN p_factures_lignes_h.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_0, + CASE + WHEN p_factures_lignes_h.montant_encours_1 IS NOT NULL THEN p_factures_lignes_h.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_1, + CASE + WHEN p_factures_lignes_h.montant_encours_2 IS NOT NULL THEN p_factures_lignes_h.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_2, + CASE + WHEN p_factures_lignes_h.montant_encours_22 IS NOT NULL THEN p_factures_lignes_h.montant_encours_22 + ELSE 0::numeric + END AS montant_encours_22, + 0 AS no_oid, + 0 AS no_nb_lits, + CASE + WHEN t_ghs_c.cmd_code = '28'::text THEN 'S'::text + ELSE t_ghs_c.mco_code + END AS mcos_code, + CASE + WHEN t_ghs_c.cmd_code = '28'::text THEN t_ghs_c.cmd_texte + ELSE + CASE + WHEN t_ghs_c.mco_code = '*'::text THEN 'Hors GHM ou N/A'::text + ELSE t_ghs_c.mco_texte + END + END AS mcos_texte, + CASE + WHEN t_ghs_c.cmd_code = '28'::text THEN 4 + ELSE + CASE t_ghs_c.mco_code + WHEN '*'::text THEN 0 + WHEN 'M'::text THEN 1 + WHEN 'C'::text THEN 2 + WHEN 'O'::text THEN 3 + ELSE NULL::integer + END + END AS mcos_id + FROM activite.p_factures_lignes_h + JOIN activite.p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_ghs_c ON p_sejours.ghs_id = t_ghs_c.ghs_id + JOIN activite.t_ghm_c ON p_sejours.ghm_id = t_ghm_c.ghm_id + JOIN activite.t_medecins_administratifs_c ON p_sejours.medecin_sejour_id = t_medecins_administratifs_c.oid + JOIN activite.t_lieux_c ON p_factures_lignes_h.lieu_id = t_lieux_c.oid + JOIN activite.t_medecins_administratifs_c t_medecins_administratifs_fac ON p_factures_lignes_h.medecin_facture_id = t_medecins_administratifs_fac.oid + JOIN activite.t_medecins_administratifs_c t_medecins_administratifs_cpt ON p_factures_lignes_h.medecin_comptabilise_id = t_medecins_administratifs_cpt.oid + JOIN activite.t_prestations ON p_factures_lignes_h.prestation_id = t_prestations.oid + JOIN activite.t_actes_c ON p_factures_lignes_h.acte_id = t_actes_c.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_h_3.yaml b/db/schema2/views/v_factures_lignes_h_3.yaml new file mode 100644 index 0000000..6fe050c --- /dev/null +++ b/db/schema2/views/v_factures_lignes_h_3.yaml @@ -0,0 +1,188 @@ +src: | + SELECT p_factures_lignes_h.finess, + p_factures.no_sejour, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_sejours.date_sortie, + p_factures_lignes_h.no_facture, + p_factures_lignes_h.pole_id, + p_factures.no_facture_reference, + to_char(p_factures.date_facture::timestamp with time zone, 'YYYYMM'::text) AS mois_facture, + p_factures.date_facture, + p_factures.code_facture, + p_factures.date_debut AS date_debut_facture, + p_factures.date_fin AS date_fin_facture, + to_char(p_factures.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin_facture, + to_char(p_factures.date_vente::timestamp with time zone, 'YYYYMM'::text) AS mois_vente, + p_factures.date_vente, + to_char(p_factures_lignes_h.date_debut::timestamp with time zone, 'YYYYMM'::text) AS mois_debut, + to_char(p_factures_lignes_h.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.heure_debut, + p_factures_lignes_h.date_fin, + p_factures_lignes_h.coefficient, + p_factures_lignes_h.coefficient_mco, + p_factures_lignes_h.prix_unitaire, + p_factures_lignes_h.taux_0, + p_factures_lignes_h.taux_1, + p_factures_lignes_h.taux_2, + p_factures_lignes_h.taux_22, + p_factures_lignes_h.lieu_id, + t_lieux_c.service_facturation_id AS lieu_service_id, + t_lieux_c.service_facturation_code AS lieu_service_code, + t_lieux_c.service_facturation_texte AS lieu_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_service_section_texte, + t_lieux_c.activite_id AS lieu_activite_id, + t_lieux_c.activite_code AS lieu_activite_code, + t_lieux_c.activite_texte AS lieu_activite_texte, + t_lieux_c.etage_id AS lieu_etage_id, + t_lieux_c.etage_code AS lieu_etage_code, + t_lieux_c.etage_texte AS lieu_etage_texte, + t_lieux_c.etage_section_id AS lieu_etage_section_id, + t_lieux_c.etage_section_code AS lieu_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_etage_section_texte, + t_lieux_c.lit_id AS lieu_lit_id, + t_lieux_c.lit_code AS lieu_lit_code, + t_lieux_c.lit_texte AS lieu_lit_texte, + t_lieux_c.lit_section_id AS lieu_lit_section_id, + t_lieux_c.lit_section_code AS lieu_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS lieu_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_unite_fonctionnelle_section_texte, + p_factures_lignes_h.medecin_facture_id AS medecin_adm_facture_id, + t_medecins_administratifs_fac.adm_code AS medecin_adm_facture_code, + t_medecins_administratifs_fac.adm_nom AS medecin_adm_facture_nom, + t_medecins_administratifs_fac.adm_prenom AS medecin_adm_facture_prenom, + t_medecins_administratifs_fac.adm_nom_prenom AS medecin_adm_facture_nom_prenom, + t_medecins_administratifs_fac.section_id AS medecin_adm_facture_section_id, + t_medecins_administratifs_fac.section_code AS medecin_adm_facture_section_code, + t_medecins_administratifs_fac.section_texte AS medecin_adm_facture_section_texte, + t_medecins_administratifs_fac.medecin_id AS medecin_facture_id, + t_medecins_administratifs_fac.medecin_code AS medecin_facture_code, + t_medecins_administratifs_fac.nom AS medecin_facture_nom, + t_medecins_administratifs_fac.prenom AS medecin_facture_prenom, + t_medecins_administratifs_fac.nom_prenom AS medecin_facture_nom_prenom, + t_medecins_administratifs_fac.specialite_id AS medecin_facture_specialite_id, + t_medecins_administratifs_fac.specialite_code AS medecin_facture_specialite_code, + t_medecins_administratifs_fac.specialite_texte AS medecin_facture_specialite_texte, + p_factures_lignes_h.medecin_comptabilise_id AS medecin_adm_comptabilise_id, + t_medecins_administratifs_cpt.adm_code AS medecin_adm_comptabilise_code, + t_medecins_administratifs_cpt.adm_nom AS medecin_adm_comptabilise_nom, + t_medecins_administratifs_cpt.adm_prenom AS medecin_adm_comptabilise_prenom, + t_medecins_administratifs_cpt.adm_nom_prenom AS medecin_adm_comptabilise_nom_prenom, + t_medecins_administratifs_cpt.medecin_id AS medecin_comptabilise_id, + t_medecins_administratifs_cpt.medecin_code AS medecin_comptabilise_code, + t_medecins_administratifs_cpt.nom AS medecin_comptabilise_nom, + t_medecins_administratifs_cpt.prenom AS medecin_comptabilise_prenom, + t_medecins_administratifs_cpt.nom_prenom AS medecin_comptabilise_nom_prenom, + t_medecins_administratifs_cpt.specialite_id AS medecin_comptabilise_specialite_id, + t_medecins_administratifs_cpt.specialite_code AS medecin_comptabilise_specialite_code, + t_medecins_administratifs_cpt.specialite_texte AS medecin_comptabilise_specialite_texte, + p_factures_lignes_h.prestation_id, + t_prestations.code AS prestation_code, + t_prestations.texte_court AS prestation_texte, + t_prestations.section_id AS prestation_section_id, + t_prestations.section_code AS prestation_section_code, + t_prestations.section_texte AS prestation_section_texte, + p_factures_lignes_h.acte_id, + t_actes_c.code AS acte_code, + t_actes_c.texte_court AS acte_texte, + t_actes_c.section_id AS acte_section_id, + t_actes_c.section_code AS acte_section_code, + t_actes_c.section_texte AS acte_section_texte, + t_actes_c.nomenclature AS acte_nomenclature, + CASE + WHEN t_prestations.code = ANY (ARRAY['ADA'::text, 'ACO'::text, 'ADC'::text, 'ADE'::text, 'ADI'::text, 'ATM'::text, 'DEN'::text]) THEN 1 + ELSE 2 + END AS acte_nomenclature_id, + CASE + WHEN t_prestations.code = ANY (ARRAY['ADA'::text, 'ACO'::text, 'ADC'::text, 'ADE'::text, 'ADI'::text, 'ATM'::text, 'DEN'::text]) THEN 'CCAM'::text + ELSE 'NGAP'::text + END AS acte_nomenclature_code, + CASE + WHEN t_prestations.code = ANY (ARRAY['ADA'::text, 'ACO'::text, 'ADC'::text, 'ADE'::text, 'ADI'::text, 'ATM'::text, 'DEN'::text]) THEN 'Nomenclature CCAM'::text + ELSE 'Nomenclature NGAP'::text + END AS acte_nomenclature_texte, + CASE + WHEN p_factures_lignes_h.activite_ccam <> '4'::bpchar AND t_prestations.code <> 'ADA'::text THEN t_actes_c.ccam_regroupement_id_1 + ELSE t_actes_c.ccam_regroupement_id_1 + END AS ccam_regroupement_id, + CASE + WHEN p_factures_lignes_h.activite_ccam <> '4'::bpchar AND t_prestations.code <> 'ADA'::text THEN t_actes_c.ccam_regroupement_code_1 + ELSE t_actes_c.ccam_regroupement_code_1 + END AS ccam_regroupement_code, + CASE + WHEN p_factures_lignes_h.activite_ccam <> '4'::bpchar AND t_prestations.code <> 'ADA'::text THEN t_actes_c.ccam_regroupement_texte_1 + ELSE t_actes_c.ccam_regroupement_texte_1 + END AS ccam_regroupement_texte, + p_factures_lignes_h.protocole_id, + t_protocoles.code AS protocole_code, + t_protocoles.texte_court AS protocole_texte, + t_protocoles.section_id AS protocole_section_id, + t_protocoles.section_code AS protocole_section_code, + t_protocoles.section_texte AS protocole_section_texte, + p_factures_lignes_h.nb_rubrique, + p_factures_lignes_h.nb_prestation, + p_factures_lignes_h.montant_facture, + p_factures_lignes_h.montant_facture_0, + p_factures_lignes_h.montant_facture_1, + p_factures_lignes_h.montant_facture_2, + p_factures_lignes_h.montant_facture_22, + p_factures_lignes_h.montant_comptabilise, + p_factures_lignes_h.montant_comptabilise_0, + p_factures_lignes_h.montant_comptabilise_1, + p_factures_lignes_h.montant_comptabilise_2, + p_factures_lignes_h.montant_comptabilise_22, + p_factures_lignes_h.montant_depassement, + p_factures_lignes_h.montant_facture_actes_inclus_dans_sejour, + p_factures_lignes_h.montant_facture_0_actes_inclus_dans_sejour, + p_factures_lignes_h.montant_facture_1_actes_inclus_dans_sejour, + p_factures_lignes_h.montant_facture_2_actes_inclus_dans_sejour, + p_factures_lignes_h.montant_facture_22_actes_inclus_dans_sejour, + CASE + WHEN p_factures_lignes_h.montant_facture = 0::numeric AND (p_sejours.est_budget_global IS DISTINCT FROM 1::numeric OR p_factures.code_facture <> '0'::bpchar) AND COALESCE(p_factures_lignes_h.montant_facture_actes_inclus_dans_sejour, 0::numeric) = 0::numeric THEN round(p_factures_lignes_h.prix_unitaire * p_factures_lignes_h.nb_prestation * p_factures_lignes_h.coefficient * p_factures_lignes_h.coefficient_mco, 2) + ELSE 0::numeric + END AS montant_non_facture, + CASE + WHEN p_factures_lignes_h.montant_encours IS NOT NULL THEN p_factures_lignes_h.montant_encours + ELSE 0::numeric + END AS montant_encours, + CASE + WHEN p_factures_lignes_h.montant_encours_0 IS NOT NULL THEN p_factures_lignes_h.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_0, + CASE + WHEN p_factures_lignes_h.montant_encours_1 IS NOT NULL THEN p_factures_lignes_h.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_1, + CASE + WHEN p_factures_lignes_h.montant_encours_2 IS NOT NULL THEN p_factures_lignes_h.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_2, + CASE + WHEN p_factures_lignes_h.montant_encours_22 IS NOT NULL THEN p_factures_lignes_h.montant_encours_22 + ELSE 0::numeric + END AS montant_encours_22, + 0 AS no_oid, + 0 AS no_nb_lits + FROM activite.p_factures_lignes_h + JOIN activite.p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_lieux_c ON p_factures_lignes_h.lieu_id = t_lieux_c.oid + JOIN activite.t_medecins_administratifs_c t_medecins_administratifs_fac ON p_factures_lignes_h.medecin_facture_id = t_medecins_administratifs_fac.oid + JOIN activite.t_medecins_administratifs_c t_medecins_administratifs_cpt ON p_factures_lignes_h.medecin_comptabilise_id = t_medecins_administratifs_cpt.oid + JOIN activite.t_prestations ON p_factures_lignes_h.prestation_id = t_prestations.oid + JOIN activite.t_actes_c ON p_factures_lignes_h.acte_id = t_actes_c.oid + JOIN activite.t_protocoles ON p_factures_lignes_h.protocole_id = t_protocoles.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_h_4.yaml b/db/schema2/views/v_factures_lignes_h_4.yaml new file mode 100644 index 0000000..c1cd17c --- /dev/null +++ b/db/schema2/views/v_factures_lignes_h_4.yaml @@ -0,0 +1,150 @@ +src: | + SELECT p_factures_lignes_h.finess, + p_factures.no_sejour, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_factures_lignes_h.no_facture, + p_factures.no_facture_reference, + to_char(p_factures.date_facture::timestamp with time zone, 'YYYYMM'::text) AS mois_facture, + p_factures.date_facture, + p_factures.code_facture, + p_factures.date_debut AS date_debut_facture, + p_factures.date_fin AS date_fin_facture, + to_char(p_factures.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin_facture, + to_char(p_factures.date_vente::timestamp with time zone, 'YYYYMM'::text) AS mois_vente, + p_factures.date_vente, + to_char(p_factures_lignes_h.date_debut::timestamp with time zone, 'YYYYMM'::text) AS mois_debut, + to_char(p_factures_lignes_h.date_fin::timestamp with time zone, 'YYYYMM'::text) AS mois_fin, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.heure_debut, + p_factures_lignes_h.date_fin, + p_factures_lignes_h.coefficient, + p_factures_lignes_h.coefficient_mco, + p_factures_lignes_h.prix_unitaire, + p_factures_lignes_h.taux_0, + p_factures_lignes_h.taux_1, + p_factures_lignes_h.taux_2, + p_factures_lignes_h.taux_22, + p_factures_lignes_h.lieu_id, + p_factures_lignes_h.medecin_facture_id AS medecin_adm_facture_id, + p_factures_lignes_h.medecin_comptabilise_id AS medecin_adm_comptabilise_id, + p_factures_lignes_h.prestation_id, + t_prestations.code AS prestation_code, + t_prestations.texte_court AS prestation_texte, + t_prestations.section_id AS prestation_section_id, + t_prestations.section_code AS prestation_section_code, + t_prestations.section_texte AS prestation_section_texte, + p_factures_lignes_h.acte_id, + t_actes_c.code AS acte_code, + t_actes_c.texte_court AS acte_texte, + t_actes_c.section_id AS acte_section_id, + t_actes_c.section_code AS acte_section_code, + t_actes_c.section_texte AS acte_section_texte, + t_actes_c.nomenclature AS acte_nomenclature, + CASE + WHEN t_prestations.code = ANY (ARRAY['ADA'::text, 'ACO'::text, 'ADC'::text, 'ADE'::text, 'ADI'::text, 'ATM'::text, 'DEN'::text]) THEN 1 + ELSE 2 + END AS acte_nomenclature_id, + CASE + WHEN t_prestations.code = ANY (ARRAY['ADA'::text, 'ACO'::text, 'ADC'::text, 'ADE'::text, 'ADI'::text, 'ATM'::text, 'DEN'::text]) THEN 'CCAM'::text + ELSE 'NGAP'::text + END AS acte_nomenclature_code, + CASE + WHEN t_prestations.code = ANY (ARRAY['ADA'::text, 'ACO'::text, 'ADC'::text, 'ADE'::text, 'ADI'::text, 'ATM'::text, 'DEN'::text]) THEN 'Nomenclature CCAM'::text + ELSE 'Nomenclature NGAP'::text + END AS acte_nomenclature_texte, + CASE + WHEN p_factures_lignes_h.activite_ccam <> '4'::bpchar AND t_prestations.code <> 'ADA'::text THEN t_actes_c.ccam_regroupement_id_1 + ELSE t_actes_c.ccam_regroupement_id_1 + END AS ccam_regroupement_id, + CASE + WHEN p_factures_lignes_h.activite_ccam <> '4'::bpchar AND t_prestations.code <> 'ADA'::text THEN t_actes_c.ccam_regroupement_code_1 + ELSE t_actes_c.ccam_regroupement_code_1 + END AS ccam_regroupement_code, + CASE + WHEN p_factures_lignes_h.activite_ccam <> '4'::bpchar AND t_prestations.code <> 'ADA'::text THEN t_actes_c.ccam_regroupement_texte_1 + ELSE t_actes_c.ccam_regroupement_texte_1 + END AS ccam_regroupement_texte, + p_factures_lignes_h.protocole_id, + p_factures_lignes_h.nb_rubrique, + p_factures_lignes_h.nb_prestation, + p_factures_lignes_h.montant_facture, + p_factures_lignes_h.montant_facture_0, + p_factures_lignes_h.montant_facture_1, + p_factures_lignes_h.montant_facture_2, + p_factures_lignes_h.montant_facture_22, + p_factures_lignes_h.montant_comptabilise, + p_factures_lignes_h.montant_comptabilise_0, + p_factures_lignes_h.montant_comptabilise_1, + p_factures_lignes_h.montant_comptabilise_2, + p_factures_lignes_h.montant_comptabilise_22, + p_factures_lignes_h.montant_depassement, + p_factures_lignes_h.montant_facture_actes_inclus_dans_sejour, + p_factures_lignes_h.montant_facture_0_actes_inclus_dans_sejour, + p_factures_lignes_h.montant_facture_1_actes_inclus_dans_sejour, + p_factures_lignes_h.montant_facture_2_actes_inclus_dans_sejour, + p_factures_lignes_h.montant_facture_22_actes_inclus_dans_sejour, + COALESCE(p_factures_lignes_h.montant_non_facture,0)::numeric(13,2) as montant_non_facture, + CASE + WHEN p_factures_lignes_h.montant_encours IS NOT NULL THEN p_factures_lignes_h.montant_encours + ELSE 0::numeric + END AS montant_encours, + CASE + WHEN p_factures_lignes_h.montant_encours_0 IS NOT NULL THEN p_factures_lignes_h.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_0, + CASE + WHEN p_factures_lignes_h.montant_encours_1 IS NOT NULL THEN p_factures_lignes_h.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_1, + CASE + WHEN p_factures_lignes_h.montant_encours_2 IS NOT NULL THEN p_factures_lignes_h.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_2, + CASE + WHEN p_factures_lignes_h.montant_encours_22 IS NOT NULL THEN p_factures_lignes_h.montant_encours_22 + ELSE 0::numeric + END AS montant_encours_22, + CASE + WHEN p_factures.code_facture >= '1'::bpchar THEN '1'::text + ELSE '0'::text + END AS est_ligne_facturee, + CASE + WHEN p_factures.code_facture >= '1'::bpchar THEN p_factures_lignes_h.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_facture, + CASE + WHEN p_factures.code_facture >= '1'::bpchar THEN p_factures_lignes_h.nb_prestation + ELSE 0::numeric + END AS nb_prestation_facture, + CASE + WHEN p_factures.code_facture >= '1'::bpchar AND p_factures.code_vente = '1'::bpchar THEN '1'::text + ELSE '0'::text + END AS est_ligne_comptabilisee, + CASE + WHEN p_factures.code_facture >= '1'::bpchar AND p_factures.code_vente = '1'::bpchar THEN p_factures_lignes_h.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_comptabilise, + CASE + WHEN p_factures.code_facture >= '1'::bpchar AND p_factures.code_vente = '1'::bpchar THEN p_factures_lignes_h.nb_prestation + ELSE 0::numeric + END AS nb_prestation_comptabilise, + CASE + WHEN p_factures.code_facture = '0'::bpchar THEN '1'::text + ELSE '0'::text + END AS est_ligne_encours, + CASE + WHEN p_factures.code_facture = '0'::bpchar THEN p_factures_lignes_h.nb_prestation + ELSE 0::numeric + END AS nb_rubrique_encours, + CASE + WHEN p_factures.code_facture = '0'::bpchar THEN p_factures_lignes_h.nb_prestation + ELSE 0::numeric + END AS nb_prestation_encours, + 0 AS no_oid, + 0 AS no_nb_lits, + p_factures_lignes_h.pole_id + FROM activite.p_factures_lignes_h + JOIN activite.p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite.t_prestations ON p_factures_lignes_h.prestation_id = t_prestations.oid + JOIN activite.t_actes_c ON p_factures_lignes_h.acte_id = t_actes_c.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_h_r_1.yaml b/db/schema2/views/v_factures_lignes_h_r_1.yaml new file mode 100644 index 0000000..d901d76 --- /dev/null +++ b/db/schema2/views/v_factures_lignes_h_r_1.yaml @@ -0,0 +1,211 @@ +dep: + - v_factures_lignes_h_3 + - v_sejours_1 +src: | + SELECT v_factures_lignes_h_3.date_fin AS date_reference, + v_factures_lignes_h_3.lieu_service_id AS lieu_reference_service_id, + v_factures_lignes_h_3.lieu_service_code AS lieu_reference_service_code, + v_factures_lignes_h_3.lieu_service_texte AS lieu_reference_service_texte, + v_factures_lignes_h_3.lieu_service_section_id AS lieu_reference_service_section_id, + v_factures_lignes_h_3.lieu_service_section_code AS lieu_reference_service_section_code, + v_factures_lignes_h_3.lieu_service_section_texte AS lieu_reference_service_section_texte, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_factures_lignes_h_3.lieu_activite_id AS lieu_reference_activite_id, + v_factures_lignes_h_3.lieu_activite_code AS lieu_reference_activite_code, + v_factures_lignes_h_3.lieu_activite_texte AS lieu_reference_activite_texte, + v_factures_lignes_h_3.lieu_etage_id AS lieu_reference_etage_id, + v_factures_lignes_h_3.lieu_etage_code AS lieu_reference_etage_code, + v_factures_lignes_h_3.lieu_etage_texte AS lieu_reference_etage_texte, + v_factures_lignes_h_3.lieu_etage_section_id AS lieu_reference_etage_section_id, + v_factures_lignes_h_3.lieu_etage_section_code AS lieu_reference_etage_section_code, + v_factures_lignes_h_3.lieu_etage_section_texte AS lieu_reference_etage_section_texte, + v_factures_lignes_h_3.lieu_unite_medicale_id AS lieu_reference_unite_medicale_id, + v_factures_lignes_h_3.lieu_unite_medicale_code AS lieu_reference_unite_medicale_code, + v_factures_lignes_h_3.lieu_unite_medicale_texte AS lieu_reference_unite_medicale_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.code_sorti, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_service_section_id, + v_sejours_1.lieu_sortie_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_factures_lignes_h_3.no_facture, + v_factures_lignes_h_3.facture_id, + v_factures_lignes_h_3.date_facture, + v_factures_lignes_h_3.date_vente, + v_factures_lignes_h_3.prestation_id, + v_factures_lignes_h_3.prestation_code, + v_factures_lignes_h_3.prestation_texte, + v_factures_lignes_h_3.prestation_section_id, + v_factures_lignes_h_3.prestation_section_code, + v_factures_lignes_h_3.prestation_section_texte, + v_factures_lignes_h_3.acte_id, + v_factures_lignes_h_3.acte_code, + v_factures_lignes_h_3.acte_texte, + v_factures_lignes_h_3.acte_section_id, + v_factures_lignes_h_3.acte_section_code, + v_factures_lignes_h_3.acte_section_texte, + v_factures_lignes_h_3.acte_nomenclature_id, + v_factures_lignes_h_3.acte_nomenclature_code, + v_factures_lignes_h_3.acte_nomenclature_texte, + v_factures_lignes_h_3.ccam_regroupement_id, + v_factures_lignes_h_3.ccam_regroupement_code, + v_factures_lignes_h_3.ccam_regroupement_texte, + v_factures_lignes_h_3.protocole_id, + v_factures_lignes_h_3.protocole_code, + v_factures_lignes_h_3.protocole_texte, + v_factures_lignes_h_3.protocole_section_id, + v_factures_lignes_h_3.protocole_section_code, + v_factures_lignes_h_3.protocole_section_texte, + v_factures_lignes_h_3.medecin_adm_facture_id, + v_factures_lignes_h_3.medecin_adm_facture_code, + v_factures_lignes_h_3.medecin_adm_facture_nom, + v_factures_lignes_h_3.medecin_adm_facture_prenom, + v_factures_lignes_h_3.medecin_adm_facture_nom_prenom, + v_factures_lignes_h_3.medecin_adm_facture_section_id, + v_factures_lignes_h_3.medecin_adm_facture_section_code, + v_factures_lignes_h_3.medecin_adm_facture_section_texte, + v_factures_lignes_h_3.medecin_facture_id, + v_factures_lignes_h_3.medecin_facture_code, + v_factures_lignes_h_3.medecin_facture_nom, + v_factures_lignes_h_3.medecin_facture_prenom, + v_factures_lignes_h_3.medecin_facture_nom_prenom, + v_factures_lignes_h_3.medecin_facture_specialite_id, + v_factures_lignes_h_3.medecin_facture_specialite_code, + v_factures_lignes_h_3.medecin_facture_specialite_texte, + v_factures_lignes_h_3.medecin_adm_comptabilise_id, + v_factures_lignes_h_3.medecin_adm_comptabilise_code, + v_factures_lignes_h_3.medecin_adm_comptabilise_nom, + v_factures_lignes_h_3.medecin_adm_comptabilise_prenom, + v_factures_lignes_h_3.medecin_adm_comptabilise_nom_prenom, + v_factures_lignes_h_3.medecin_comptabilise_id, + v_factures_lignes_h_3.medecin_comptabilise_code, + v_factures_lignes_h_3.medecin_comptabilise_nom, + v_factures_lignes_h_3.medecin_comptabilise_prenom, + v_factures_lignes_h_3.medecin_comptabilise_nom_prenom, + v_factures_lignes_h_3.medecin_comptabilise_specialite_id, + v_factures_lignes_h_3.medecin_comptabilise_specialite_code, + v_factures_lignes_h_3.medecin_comptabilise_specialite_texte, + v_factures_lignes_h_3.code_facture, + v_factures_lignes_h_3.nb_rubrique, + CASE + WHEN v_factures_lignes_h_3.montant_facture <> 0::numeric THEN v_factures_lignes_h_3.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_facture, + CASE + WHEN v_factures_lignes_h_3.montant_encours <> 0::numeric THEN v_factures_lignes_h_3.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_encours, + v_factures_lignes_h_3.nb_prestation, + CASE + WHEN v_factures_lignes_h_3.montant_facture <> 0::numeric THEN v_factures_lignes_h_3.nb_rubrique + ELSE 0::numeric + END AS nb_prestation_facture, + CASE + WHEN v_factures_lignes_h_3.montant_encours <> 0::numeric THEN v_factures_lignes_h_3.nb_rubrique + ELSE 0::numeric + END AS nb_prestation_encours, + v_factures_lignes_h_3.montant_facture, + v_factures_lignes_h_3.montant_facture_1, + v_factures_lignes_h_3.montant_facture_2 + v_factures_lignes_h_3.montant_facture_22 AS montant_facture_2, + v_factures_lignes_h_3.montant_facture_0, + v_factures_lignes_h_3.montant_comptabilise, + v_factures_lignes_h_3.montant_comptabilise_1, + v_factures_lignes_h_3.montant_comptabilise_2 + v_factures_lignes_h_3.montant_comptabilise_22 AS montant_comptabilise_2, + v_factures_lignes_h_3.montant_comptabilise_0, + v_factures_lignes_h_3.montant_depassement, + v_factures_lignes_h_3.montant_encours + FROM activite.v_factures_lignes_h_3, + activite.v_sejours_1 + WHERE v_factures_lignes_h_3.no_sejour = v_sejours_1.no_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_h_r_2.yaml b/db/schema2/views/v_factures_lignes_h_r_2.yaml new file mode 100644 index 0000000..3cb809e --- /dev/null +++ b/db/schema2/views/v_factures_lignes_h_r_2.yaml @@ -0,0 +1,211 @@ +dep: + - v_factures_lignes_h_3 + - v_sejours_1 +src: | + SELECT v_factures_lignes_h_3.date_fin_facture AS date_reference, + v_factures_lignes_h_3.lieu_service_id AS lieu_reference_service_id, + v_factures_lignes_h_3.lieu_service_code AS lieu_reference_service_code, + v_factures_lignes_h_3.lieu_service_texte AS lieu_reference_service_texte, + v_factures_lignes_h_3.lieu_service_section_id AS lieu_reference_service_section_id, + v_factures_lignes_h_3.lieu_service_section_code AS lieu_reference_service_section_code, + v_factures_lignes_h_3.lieu_service_section_texte AS lieu_reference_service_section_texte, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_factures_lignes_h_3.lieu_activite_id AS lieu_reference_activite_id, + v_factures_lignes_h_3.lieu_activite_code AS lieu_reference_activite_code, + v_factures_lignes_h_3.lieu_activite_texte AS lieu_reference_activite_texte, + v_factures_lignes_h_3.lieu_etage_id AS lieu_reference_etage_id, + v_factures_lignes_h_3.lieu_etage_code AS lieu_reference_etage_code, + v_factures_lignes_h_3.lieu_etage_texte AS lieu_reference_etage_texte, + v_factures_lignes_h_3.lieu_etage_section_id AS lieu_reference_etage_section_id, + v_factures_lignes_h_3.lieu_etage_section_code AS lieu_reference_etage_section_code, + v_factures_lignes_h_3.lieu_etage_section_texte AS lieu_reference_etage_section_texte, + v_factures_lignes_h_3.lieu_unite_medicale_id AS lieu_reference_unite_medicale_id, + v_factures_lignes_h_3.lieu_unite_medicale_code AS lieu_reference_unite_medicale_code, + v_factures_lignes_h_3.lieu_unite_medicale_texte AS lieu_reference_unite_medicale_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.code_sorti, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_service_section_id, + v_sejours_1.lieu_sortie_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_factures_lignes_h_3.no_facture, + v_factures_lignes_h_3.facture_id, + v_factures_lignes_h_3.date_facture, + v_factures_lignes_h_3.date_vente, + v_factures_lignes_h_3.prestation_id, + v_factures_lignes_h_3.prestation_code, + v_factures_lignes_h_3.prestation_texte, + v_factures_lignes_h_3.prestation_section_id, + v_factures_lignes_h_3.prestation_section_code, + v_factures_lignes_h_3.prestation_section_texte, + v_factures_lignes_h_3.acte_id, + v_factures_lignes_h_3.acte_code, + v_factures_lignes_h_3.acte_texte, + v_factures_lignes_h_3.acte_section_id, + v_factures_lignes_h_3.acte_section_code, + v_factures_lignes_h_3.acte_section_texte, + v_factures_lignes_h_3.acte_nomenclature_id, + v_factures_lignes_h_3.acte_nomenclature_code, + v_factures_lignes_h_3.acte_nomenclature_texte, + v_factures_lignes_h_3.ccam_regroupement_id, + v_factures_lignes_h_3.ccam_regroupement_code, + v_factures_lignes_h_3.ccam_regroupement_texte, + v_factures_lignes_h_3.protocole_id, + v_factures_lignes_h_3.protocole_code, + v_factures_lignes_h_3.protocole_texte, + v_factures_lignes_h_3.protocole_section_id, + v_factures_lignes_h_3.protocole_section_code, + v_factures_lignes_h_3.protocole_section_texte, + v_factures_lignes_h_3.medecin_adm_facture_id, + v_factures_lignes_h_3.medecin_adm_facture_code, + v_factures_lignes_h_3.medecin_adm_facture_nom, + v_factures_lignes_h_3.medecin_adm_facture_prenom, + v_factures_lignes_h_3.medecin_adm_facture_nom_prenom, + v_factures_lignes_h_3.medecin_adm_facture_section_id, + v_factures_lignes_h_3.medecin_adm_facture_section_code, + v_factures_lignes_h_3.medecin_adm_facture_section_texte, + v_factures_lignes_h_3.medecin_facture_id, + v_factures_lignes_h_3.medecin_facture_code, + v_factures_lignes_h_3.medecin_facture_nom, + v_factures_lignes_h_3.medecin_facture_prenom, + v_factures_lignes_h_3.medecin_facture_nom_prenom, + v_factures_lignes_h_3.medecin_facture_specialite_id, + v_factures_lignes_h_3.medecin_facture_specialite_code, + v_factures_lignes_h_3.medecin_facture_specialite_texte, + v_factures_lignes_h_3.medecin_adm_comptabilise_id, + v_factures_lignes_h_3.medecin_adm_comptabilise_code, + v_factures_lignes_h_3.medecin_adm_comptabilise_nom, + v_factures_lignes_h_3.medecin_adm_comptabilise_prenom, + v_factures_lignes_h_3.medecin_adm_comptabilise_nom_prenom, + v_factures_lignes_h_3.medecin_comptabilise_id, + v_factures_lignes_h_3.medecin_comptabilise_code, + v_factures_lignes_h_3.medecin_comptabilise_nom, + v_factures_lignes_h_3.medecin_comptabilise_prenom, + v_factures_lignes_h_3.medecin_comptabilise_nom_prenom, + v_factures_lignes_h_3.medecin_comptabilise_specialite_id, + v_factures_lignes_h_3.medecin_comptabilise_specialite_code, + v_factures_lignes_h_3.medecin_comptabilise_specialite_texte, + v_factures_lignes_h_3.code_facture, + v_factures_lignes_h_3.nb_rubrique, + CASE + WHEN v_factures_lignes_h_3.montant_facture <> 0::numeric THEN v_factures_lignes_h_3.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_facture, + CASE + WHEN v_factures_lignes_h_3.montant_encours <> 0::numeric THEN v_factures_lignes_h_3.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_encours, + v_factures_lignes_h_3.nb_prestation, + CASE + WHEN v_factures_lignes_h_3.montant_facture <> 0::numeric THEN v_factures_lignes_h_3.nb_rubrique + ELSE 0::numeric + END AS nb_prestation_facture, + CASE + WHEN v_factures_lignes_h_3.montant_encours <> 0::numeric THEN v_factures_lignes_h_3.nb_rubrique + ELSE 0::numeric + END AS nb_prestation_encours, + v_factures_lignes_h_3.montant_facture, + v_factures_lignes_h_3.montant_facture_1, + v_factures_lignes_h_3.montant_facture_2 + v_factures_lignes_h_3.montant_facture_22 AS montant_facture_2, + v_factures_lignes_h_3.montant_facture_0, + v_factures_lignes_h_3.montant_comptabilise, + v_factures_lignes_h_3.montant_comptabilise_1, + v_factures_lignes_h_3.montant_comptabilise_2 + v_factures_lignes_h_3.montant_comptabilise_22 AS montant_comptabilise_2, + v_factures_lignes_h_3.montant_comptabilise_0, + v_factures_lignes_h_3.montant_depassement, + v_factures_lignes_h_3.montant_encours + FROM activite.v_factures_lignes_h_3, + activite.v_sejours_1 + WHERE v_factures_lignes_h_3.no_sejour = v_sejours_1.no_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_h_r_3.yaml b/db/schema2/views/v_factures_lignes_h_r_3.yaml new file mode 100644 index 0000000..d998966 --- /dev/null +++ b/db/schema2/views/v_factures_lignes_h_r_3.yaml @@ -0,0 +1,211 @@ +dep: + - v_factures_lignes_h_3 + - v_sejours_1 +src: | + SELECT v_factures_lignes_h_3.date_facture AS date_reference, + v_factures_lignes_h_3.lieu_service_id AS lieu_reference_service_id, + v_factures_lignes_h_3.lieu_service_code AS lieu_reference_service_code, + v_factures_lignes_h_3.lieu_service_texte AS lieu_reference_service_texte, + v_factures_lignes_h_3.lieu_service_section_id AS lieu_reference_service_section_id, + v_factures_lignes_h_3.lieu_service_section_code AS lieu_reference_service_section_code, + v_factures_lignes_h_3.lieu_service_section_texte AS lieu_reference_service_section_texte, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_factures_lignes_h_3.lieu_activite_id AS lieu_reference_activite_id, + v_factures_lignes_h_3.lieu_activite_code AS lieu_reference_activite_code, + v_factures_lignes_h_3.lieu_activite_texte AS lieu_reference_activite_texte, + v_factures_lignes_h_3.lieu_etage_id AS lieu_reference_etage_id, + v_factures_lignes_h_3.lieu_etage_code AS lieu_reference_etage_code, + v_factures_lignes_h_3.lieu_etage_texte AS lieu_reference_etage_texte, + v_factures_lignes_h_3.lieu_etage_section_id AS lieu_reference_etage_section_id, + v_factures_lignes_h_3.lieu_etage_section_code AS lieu_reference_etage_section_code, + v_factures_lignes_h_3.lieu_etage_section_texte AS lieu_reference_etage_section_texte, + v_factures_lignes_h_3.lieu_unite_medicale_id AS lieu_reference_unite_medicale_id, + v_factures_lignes_h_3.lieu_unite_medicale_code AS lieu_reference_unite_medicale_code, + v_factures_lignes_h_3.lieu_unite_medicale_texte AS lieu_reference_unite_medicale_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.code_sorti, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_service_section_id, + v_sejours_1.lieu_sortie_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_factures_lignes_h_3.no_facture, + v_factures_lignes_h_3.facture_id, + v_factures_lignes_h_3.date_facture, + v_factures_lignes_h_3.date_vente, + v_factures_lignes_h_3.prestation_id, + v_factures_lignes_h_3.prestation_code, + v_factures_lignes_h_3.prestation_texte, + v_factures_lignes_h_3.prestation_section_id, + v_factures_lignes_h_3.prestation_section_code, + v_factures_lignes_h_3.prestation_section_texte, + v_factures_lignes_h_3.acte_id, + v_factures_lignes_h_3.acte_code, + v_factures_lignes_h_3.acte_texte, + v_factures_lignes_h_3.acte_section_id, + v_factures_lignes_h_3.acte_section_code, + v_factures_lignes_h_3.acte_section_texte, + v_factures_lignes_h_3.acte_nomenclature_id, + v_factures_lignes_h_3.acte_nomenclature_code, + v_factures_lignes_h_3.acte_nomenclature_texte, + v_factures_lignes_h_3.ccam_regroupement_id, + v_factures_lignes_h_3.ccam_regroupement_code, + v_factures_lignes_h_3.ccam_regroupement_texte, + v_factures_lignes_h_3.protocole_id, + v_factures_lignes_h_3.protocole_code, + v_factures_lignes_h_3.protocole_texte, + v_factures_lignes_h_3.protocole_section_id, + v_factures_lignes_h_3.protocole_section_code, + v_factures_lignes_h_3.protocole_section_texte, + v_factures_lignes_h_3.medecin_adm_facture_id, + v_factures_lignes_h_3.medecin_adm_facture_code, + v_factures_lignes_h_3.medecin_adm_facture_nom, + v_factures_lignes_h_3.medecin_adm_facture_prenom, + v_factures_lignes_h_3.medecin_adm_facture_nom_prenom, + v_factures_lignes_h_3.medecin_adm_facture_section_id, + v_factures_lignes_h_3.medecin_adm_facture_section_code, + v_factures_lignes_h_3.medecin_adm_facture_section_texte, + v_factures_lignes_h_3.medecin_facture_id, + v_factures_lignes_h_3.medecin_facture_code, + v_factures_lignes_h_3.medecin_facture_nom, + v_factures_lignes_h_3.medecin_facture_prenom, + v_factures_lignes_h_3.medecin_facture_nom_prenom, + v_factures_lignes_h_3.medecin_facture_specialite_id, + v_factures_lignes_h_3.medecin_facture_specialite_code, + v_factures_lignes_h_3.medecin_facture_specialite_texte, + v_factures_lignes_h_3.medecin_adm_comptabilise_id, + v_factures_lignes_h_3.medecin_adm_comptabilise_code, + v_factures_lignes_h_3.medecin_adm_comptabilise_nom, + v_factures_lignes_h_3.medecin_adm_comptabilise_prenom, + v_factures_lignes_h_3.medecin_adm_comptabilise_nom_prenom, + v_factures_lignes_h_3.medecin_comptabilise_id, + v_factures_lignes_h_3.medecin_comptabilise_code, + v_factures_lignes_h_3.medecin_comptabilise_nom, + v_factures_lignes_h_3.medecin_comptabilise_prenom, + v_factures_lignes_h_3.medecin_comptabilise_nom_prenom, + v_factures_lignes_h_3.medecin_comptabilise_specialite_id, + v_factures_lignes_h_3.medecin_comptabilise_specialite_code, + v_factures_lignes_h_3.medecin_comptabilise_specialite_texte, + v_factures_lignes_h_3.code_facture, + v_factures_lignes_h_3.nb_rubrique, + CASE + WHEN v_factures_lignes_h_3.montant_facture <> 0::numeric THEN v_factures_lignes_h_3.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_facture, + CASE + WHEN v_factures_lignes_h_3.montant_encours <> 0::numeric THEN v_factures_lignes_h_3.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_encours, + v_factures_lignes_h_3.nb_prestation, + CASE + WHEN v_factures_lignes_h_3.montant_facture <> 0::numeric THEN v_factures_lignes_h_3.nb_rubrique + ELSE 0::numeric + END AS nb_prestation_facture, + CASE + WHEN v_factures_lignes_h_3.montant_encours <> 0::numeric THEN v_factures_lignes_h_3.nb_rubrique + ELSE 0::numeric + END AS nb_prestation_encours, + v_factures_lignes_h_3.montant_facture, + v_factures_lignes_h_3.montant_facture_1, + v_factures_lignes_h_3.montant_facture_2 + v_factures_lignes_h_3.montant_facture_22 AS montant_facture_2, + v_factures_lignes_h_3.montant_facture_0, + v_factures_lignes_h_3.montant_comptabilise, + v_factures_lignes_h_3.montant_comptabilise_1, + v_factures_lignes_h_3.montant_comptabilise_2 + v_factures_lignes_h_3.montant_comptabilise_22 AS montant_comptabilise_2, + v_factures_lignes_h_3.montant_comptabilise_0, + v_factures_lignes_h_3.montant_depassement, + v_factures_lignes_h_3.montant_encours + FROM activite.v_factures_lignes_h_3, + activite.v_sejours_1 + WHERE v_factures_lignes_h_3.no_sejour = v_sejours_1.no_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_h_r_4.yaml b/db/schema2/views/v_factures_lignes_h_r_4.yaml new file mode 100644 index 0000000..492eefb --- /dev/null +++ b/db/schema2/views/v_factures_lignes_h_r_4.yaml @@ -0,0 +1,211 @@ +dep: + - v_factures_lignes_h_3 + - v_sejours_1 +src: | + SELECT v_factures_lignes_h_3.date_vente AS date_reference, + v_factures_lignes_h_3.lieu_service_id AS lieu_reference_service_id, + v_factures_lignes_h_3.lieu_service_code AS lieu_reference_service_code, + v_factures_lignes_h_3.lieu_service_texte AS lieu_reference_service_texte, + v_factures_lignes_h_3.lieu_service_section_id AS lieu_reference_service_section_id, + v_factures_lignes_h_3.lieu_service_section_code AS lieu_reference_service_section_code, + v_factures_lignes_h_3.lieu_service_section_texte AS lieu_reference_service_section_texte, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_factures_lignes_h_3.lieu_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_factures_lignes_h_3.lieu_activite_id AS lieu_reference_activite_id, + v_factures_lignes_h_3.lieu_activite_code AS lieu_reference_activite_code, + v_factures_lignes_h_3.lieu_activite_texte AS lieu_reference_activite_texte, + v_factures_lignes_h_3.lieu_etage_id AS lieu_reference_etage_id, + v_factures_lignes_h_3.lieu_etage_code AS lieu_reference_etage_code, + v_factures_lignes_h_3.lieu_etage_texte AS lieu_reference_etage_texte, + v_factures_lignes_h_3.lieu_etage_section_id AS lieu_reference_etage_section_id, + v_factures_lignes_h_3.lieu_etage_section_code AS lieu_reference_etage_section_code, + v_factures_lignes_h_3.lieu_etage_section_texte AS lieu_reference_etage_section_texte, + v_factures_lignes_h_3.lieu_unite_medicale_id AS lieu_reference_unite_medicale_id, + v_factures_lignes_h_3.lieu_unite_medicale_code AS lieu_reference_unite_medicale_code, + v_factures_lignes_h_3.lieu_unite_medicale_texte AS lieu_reference_unite_medicale_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.code_sorti, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_service_section_id, + v_sejours_1.lieu_sortie_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_factures_lignes_h_3.no_facture, + v_factures_lignes_h_3.facture_id, + v_factures_lignes_h_3.date_facture, + v_factures_lignes_h_3.date_vente, + v_factures_lignes_h_3.prestation_id, + v_factures_lignes_h_3.prestation_code, + v_factures_lignes_h_3.prestation_texte, + v_factures_lignes_h_3.prestation_section_id, + v_factures_lignes_h_3.prestation_section_code, + v_factures_lignes_h_3.prestation_section_texte, + v_factures_lignes_h_3.acte_id, + v_factures_lignes_h_3.acte_code, + v_factures_lignes_h_3.acte_texte, + v_factures_lignes_h_3.acte_section_id, + v_factures_lignes_h_3.acte_section_code, + v_factures_lignes_h_3.acte_section_texte, + v_factures_lignes_h_3.acte_nomenclature_id, + v_factures_lignes_h_3.acte_nomenclature_code, + v_factures_lignes_h_3.acte_nomenclature_texte, + v_factures_lignes_h_3.ccam_regroupement_id, + v_factures_lignes_h_3.ccam_regroupement_code, + v_factures_lignes_h_3.ccam_regroupement_texte, + v_factures_lignes_h_3.protocole_id, + v_factures_lignes_h_3.protocole_code, + v_factures_lignes_h_3.protocole_texte, + v_factures_lignes_h_3.protocole_section_id, + v_factures_lignes_h_3.protocole_section_code, + v_factures_lignes_h_3.protocole_section_texte, + v_factures_lignes_h_3.medecin_adm_facture_id, + v_factures_lignes_h_3.medecin_adm_facture_code, + v_factures_lignes_h_3.medecin_adm_facture_nom, + v_factures_lignes_h_3.medecin_adm_facture_prenom, + v_factures_lignes_h_3.medecin_adm_facture_nom_prenom, + v_factures_lignes_h_3.medecin_adm_facture_section_id, + v_factures_lignes_h_3.medecin_adm_facture_section_code, + v_factures_lignes_h_3.medecin_adm_facture_section_texte, + v_factures_lignes_h_3.medecin_facture_id, + v_factures_lignes_h_3.medecin_facture_code, + v_factures_lignes_h_3.medecin_facture_nom, + v_factures_lignes_h_3.medecin_facture_prenom, + v_factures_lignes_h_3.medecin_facture_nom_prenom, + v_factures_lignes_h_3.medecin_facture_specialite_id, + v_factures_lignes_h_3.medecin_facture_specialite_code, + v_factures_lignes_h_3.medecin_facture_specialite_texte, + v_factures_lignes_h_3.medecin_adm_comptabilise_id, + v_factures_lignes_h_3.medecin_adm_comptabilise_code, + v_factures_lignes_h_3.medecin_adm_comptabilise_nom, + v_factures_lignes_h_3.medecin_adm_comptabilise_prenom, + v_factures_lignes_h_3.medecin_adm_comptabilise_nom_prenom, + v_factures_lignes_h_3.medecin_comptabilise_id, + v_factures_lignes_h_3.medecin_comptabilise_code, + v_factures_lignes_h_3.medecin_comptabilise_nom, + v_factures_lignes_h_3.medecin_comptabilise_prenom, + v_factures_lignes_h_3.medecin_comptabilise_nom_prenom, + v_factures_lignes_h_3.medecin_comptabilise_specialite_id, + v_factures_lignes_h_3.medecin_comptabilise_specialite_code, + v_factures_lignes_h_3.medecin_comptabilise_specialite_texte, + v_factures_lignes_h_3.code_facture, + v_factures_lignes_h_3.nb_rubrique, + CASE + WHEN v_factures_lignes_h_3.montant_facture <> 0::numeric THEN v_factures_lignes_h_3.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_facture, + CASE + WHEN v_factures_lignes_h_3.montant_encours <> 0::numeric THEN v_factures_lignes_h_3.nb_rubrique + ELSE 0::numeric + END AS nb_rubrique_encours, + v_factures_lignes_h_3.nb_prestation, + CASE + WHEN v_factures_lignes_h_3.montant_facture <> 0::numeric THEN v_factures_lignes_h_3.nb_rubrique + ELSE 0::numeric + END AS nb_prestation_facture, + CASE + WHEN v_factures_lignes_h_3.montant_encours <> 0::numeric THEN v_factures_lignes_h_3.nb_rubrique + ELSE 0::numeric + END AS nb_prestation_encours, + v_factures_lignes_h_3.montant_facture, + v_factures_lignes_h_3.montant_facture_1, + v_factures_lignes_h_3.montant_facture_2 + v_factures_lignes_h_3.montant_facture_22 AS montant_facture_2, + v_factures_lignes_h_3.montant_facture_0, + v_factures_lignes_h_3.montant_comptabilise, + v_factures_lignes_h_3.montant_comptabilise_1, + v_factures_lignes_h_3.montant_comptabilise_2 + v_factures_lignes_h_3.montant_comptabilise_22 AS montant_comptabilise_2, + v_factures_lignes_h_3.montant_comptabilise_0, + v_factures_lignes_h_3.montant_depassement, + v_factures_lignes_h_3.montant_encours + FROM activite.v_factures_lignes_h_3, + activite.v_sejours_1 + WHERE v_factures_lignes_h_3.no_sejour = v_sejours_1.no_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_lieu_1.yaml b/db/schema2/views/v_factures_lignes_lieu_1.yaml new file mode 100644 index 0000000..3bdf482 --- /dev/null +++ b/db/schema2/views/v_factures_lignes_lieu_1.yaml @@ -0,0 +1,36 @@ +src: | + SELECT t_lieux_c.oid, + t_lieux_c.service_facturation_id AS lieu_ligne_service_id, + t_lieux_c.service_facturation_code AS lieu_ligne_service_code, + t_lieux_c.service_facturation_texte AS lieu_ligne_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_ligne_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_ligne_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_ligne_service_section_texte, + t_lieux_c.activite_id AS lieu_ligne_activite_id, + t_lieux_c.activite_code AS lieu_ligne_activite_code, + t_lieux_c.activite_texte AS lieu_ligne_activite_texte, + t_lieux_c.etage_id AS lieu_ligne_etage_id, + t_lieux_c.etage_code AS lieu_ligne_etage_code, + t_lieux_c.etage_texte AS lieu_ligne_etage_texte, + t_lieux_c.etage_section_id AS lieu_ligne_etage_section_id, + t_lieux_c.etage_section_code AS lieu_ligne_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_ligne_etage_section_texte, + t_lieux_c.lit_id AS lieu_ligne_lit_id, + t_lieux_c.lit_code AS lieu_ligne_lit_code, + t_lieux_c.lit_texte AS lieu_ligne_lit_texte, + t_lieux_c.lit_section_id AS lieu_ligne_lit_section_id, + t_lieux_c.lit_section_code AS lieu_ligne_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_ligne_lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_ligne_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_ligne_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_ligne_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_ligne_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_ligne_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_ligne_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS lieu_ligne_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_ligne_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_ligne_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_ligne_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_ligne_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_ligne_unite_fonctionnelle_section_texte + FROM activite.t_lieux_c; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_lpp_1.yaml b/db/schema2/views/v_factures_lignes_lpp_1.yaml new file mode 100644 index 0000000..80c14b4 --- /dev/null +++ b/db/schema2/views/v_factures_lignes_lpp_1.yaml @@ -0,0 +1,26 @@ +src: | + SELECT t_lpp_c.code AS lpp_code, + t_lpp_c.oid AS join_lpp_id, + t_lpp_c.section_code AS lpp_section_code, + t_lpp_c.section_id AS lpp_section_id, + t_lpp_c.section_texte AS lpp_section_texte, + t_lpp_c.texte AS lpp_texte, + t_lpp_c.classification_atc_1_code AS lpp_classification_atc_1_code, + t_lpp_c.classification_atc_1_id AS lpp_classification_atc_1_id, + t_lpp_c.classification_atc_1_texte AS lpp_classification_atc_1_texte, + t_lpp_c.classification_atc_2_code AS lpp_classification_atc_2_code, + t_lpp_c.classification_atc_2_id AS lpp_classification_atc_2_id, + t_lpp_c.classification_atc_2_texte AS lpp_classification_atc_2_texte, + t_lpp_c.classification_atc_3_code AS lpp_classification_atc_3_code, + t_lpp_c.classification_atc_3_id AS lpp_classification_atc_3_id, + t_lpp_c.classification_atc_3_texte AS lpp_classification_atc_3_texte, + t_lpp_c.classification_atc_4_code AS lpp_classification_atc_4_code, + t_lpp_c.classification_atc_4_id AS lpp_classification_atc_4_id, + t_lpp_c.classification_atc_4_texte AS lpp_classification_atc_4_texte, + t_lpp_c.classification_atc_code AS lpp_classification_atc_code, + t_lpp_c.classification_atc_id AS lpp_classification_atc_id, + t_lpp_c.classification_atc_section_code AS lpp_classification_atc_section_code, + t_lpp_c.classification_atc_section_id AS lpp_classification_atc_section_id, + t_lpp_c.classification_atc_section_texte AS lpp_classification_atc_section_texte, + t_lpp_c.classification_atc_texte AS lpp_classification_atc_texte + FROM activite.t_lpp_c; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_prestation_1.yaml b/db/schema2/views/v_factures_lignes_prestation_1.yaml new file mode 100644 index 0000000..647732e --- /dev/null +++ b/db/schema2/views/v_factures_lignes_prestation_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_prestations.oid, + t_prestations.code AS prestation_code, + t_prestations.texte AS prestation_texte, + t_prestations.section_id AS prestation_section_id, + t_prestations.section_code AS prestation_section_code, + t_prestations.section_texte AS prestation_section_texte + FROM activite.t_prestations; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_protocole_1.yaml b/db/schema2/views/v_factures_lignes_protocole_1.yaml new file mode 100644 index 0000000..37a9efb --- /dev/null +++ b/db/schema2/views/v_factures_lignes_protocole_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_protocoles.oid, + t_protocoles.code AS protocole_code, + t_protocoles.texte_court AS protocole_texte, + t_protocoles.section_id AS protocole_section_id, + t_protocoles.section_code AS protocole_section_code, + t_protocoles.section_texte AS protocole_section_texte + FROM activite.t_protocoles; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_rubrique_comptabilisation_1.yaml b/db/schema2/views/v_factures_lignes_rubrique_comptabilisation_1.yaml new file mode 100644 index 0000000..3d024bd --- /dev/null +++ b/db/schema2/views/v_factures_lignes_rubrique_comptabilisation_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_rubriques_facturation.oid, + t_rubriques_facturation.code AS rubrique_comptabilisation_code, + t_rubriques_facturation.texte AS rubrique_comptabilisation_texte, + t_rubriques_facturation.section_id AS rubrique_comptabilisation_section_id, + t_rubriques_facturation.section_code AS rubrique_comptabilisation_section_code, + t_rubriques_facturation.section_texte AS rubrique_comptabilisation_section_texte + FROM activite.t_rubriques_facturation; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_rubrique_facturation_1.yaml b/db/schema2/views/v_factures_lignes_rubrique_facturation_1.yaml new file mode 100644 index 0000000..1ea77af --- /dev/null +++ b/db/schema2/views/v_factures_lignes_rubrique_facturation_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_rubriques_facturation.oid, + t_rubriques_facturation.code AS rubrique_facturation_code, + t_rubriques_facturation.texte AS rubrique_facturation_texte, + t_rubriques_facturation.section_id AS rubrique_facturation_section_id, + t_rubriques_facturation.section_code AS rubrique_facturation_section_code, + t_rubriques_facturation.section_texte AS rubrique_facturation_section_texte + FROM activite.t_rubriques_facturation; \ No newline at end of file diff --git a/db/schema2/views/v_factures_lignes_ucd_1.yaml b/db/schema2/views/v_factures_lignes_ucd_1.yaml new file mode 100644 index 0000000..9fc39fd --- /dev/null +++ b/db/schema2/views/v_factures_lignes_ucd_1.yaml @@ -0,0 +1,26 @@ +src: | + SELECT t_ucd_c.code AS ucd_code, + t_ucd_c.oid AS join_ucd_id, + t_ucd_c.section_code AS ucd_section_code, + t_ucd_c.section_id AS ucd_section_id, + t_ucd_c.section_texte AS ucd_section_texte, + t_ucd_c.texte AS ucd_texte, + t_ucd_c.classification_atc_1_code AS ucd_classification_atc_1_code, + t_ucd_c.classification_atc_1_id AS ucd_classification_atc_1_id, + t_ucd_c.classification_atc_1_texte AS ucd_classification_atc_1_texte, + t_ucd_c.classification_atc_2_code AS ucd_classification_atc_2_code, + t_ucd_c.classification_atc_2_id AS ucd_classification_atc_2_id, + t_ucd_c.classification_atc_2_texte AS ucd_classification_atc_2_texte, + t_ucd_c.classification_atc_3_code AS ucd_classification_atc_3_code, + t_ucd_c.classification_atc_3_id AS ucd_classification_atc_3_id, + t_ucd_c.classification_atc_3_texte AS ucd_classification_atc_3_texte, + t_ucd_c.classification_atc_4_code AS ucd_classification_atc_4_code, + t_ucd_c.classification_atc_4_id AS ucd_classification_atc_4_id, + t_ucd_c.classification_atc_4_texte AS ucd_classification_atc_4_texte, + t_ucd_c.classification_atc_code AS ucd_classification_atc_code, + t_ucd_c.classification_atc_id AS ucd_classification_atc_id, + t_ucd_c.classification_atc_section_code AS ucd_classification_atc_section_code, + t_ucd_c.classification_atc_section_id AS ucd_classification_atc_section_id, + t_ucd_c.classification_atc_section_texte AS ucd_classification_atc_section_texte, + t_ucd_c.classification_atc_texte AS ucd_classification_atc_texte + FROM activite.t_ucd_c; \ No newline at end of file diff --git a/db/schema2/views/v_factures_r_1.yaml b/db/schema2/views/v_factures_r_1.yaml new file mode 100644 index 0000000..6fe32c3 --- /dev/null +++ b/db/schema2/views/v_factures_r_1.yaml @@ -0,0 +1,129 @@ +dep: + - v_factures_1 + - v_sejours_1 +src: | + SELECT v_sejours_1.finess, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.code_sorti, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.ghs_id, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.lieu_sortie_id, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_lit_id, + v_sejours_1.lieu_sortie_lit_code, + v_sejours_1.lieu_sortie_lit_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_factures_1.no_facture, + v_factures_1.facture_id, + v_factures_1.date_debut, + v_factures_1.date_fin, + v_factures_1.type_facture, + v_factures_1.code_facture, + v_factures_1.date_facture, + v_factures_1.code_vente, + v_factures_1.date_vente, + v_factures_1.mois_vente, + v_factures_1.date_solde, + v_factures_1.montant_facture_c, + v_factures_1.montant_facture_h, + v_factures_1.montant_regle_c, + v_factures_1.montant_regle_h, + v_factures_1.delai_facture, + v_factures_1.delai_solde, + v_factures_1.date_expedition, + v_factures_1.delai_expedition, + v_factures_1.tiers_payant_1_id, + v_factures_1.tiers_payant_2_id, + v_factures_1.tiers_payant_22_id, + v_factures_1.tiers_payant_0_id, + v_factures_1.date_solde_0_c, + v_factures_1.date_solde_0_h, + v_factures_1.date_solde_1_c, + v_factures_1.date_solde_1_h, + v_factures_1.date_solde_2_c, + v_factures_1.date_solde_2_h, + v_factures_1.date_solde_22_c, + v_factures_1.date_solde_22_h, + v_factures_1.date_expedition_0, + v_factures_1.date_expedition_1, + v_factures_1.date_expedition_2, + v_factures_1.date_expedition_22, + v_factures_1.code_expedie_0, + v_factures_1.code_expedie_1, + v_factures_1.code_expedie_2, + v_factures_1.code_expedie_22, + v_factures_1.no_bordereau_0, + v_factures_1.no_bordereau_1, + v_factures_1.no_bordereau_2, + v_factures_1.no_bordereau_22, + v_factures_1.montant_facture_0_c, + v_factures_1.montant_facture_0_h, + v_factures_1.montant_facture_1_c, + v_factures_1.montant_facture_1_h, + v_factures_1.montant_facture_2_c, + v_factures_1.montant_facture_2_h, + v_factures_1.montant_facture_22_c, + v_factures_1.montant_facture_22_h, + v_factures_1.montant_regle_0_c, + v_factures_1.montant_regle_0_h, + v_factures_1.montant_regle_1_c, + v_factures_1.montant_regle_1_h, + v_factures_1.montant_regle_2_c, + v_factures_1.montant_regle_2_h, + v_factures_1.montant_regle_22_c, + v_factures_1.montant_regle_22_h, + v_factures_1.delai_expedition_0, + v_factures_1.delai_expedition_1, + v_factures_1.delai_expedition_2, + v_factures_1.delai_expedition_22, + v_factures_1.delai_solde_0_c, + v_factures_1.delai_solde_0_h, + v_factures_1.delai_solde_1_c, + v_factures_1.delai_solde_1_h, + v_factures_1.delai_solde_2_c, + v_factures_1.delai_solde_2_h, + v_factures_1.delai_solde_22_c, + v_factures_1.delai_solde_22_h, + v_factures_1.particularite_t2a, + v_factures_1.code_cloture, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte + FROM activite.v_factures_1, + activite.v_sejours_1 + WHERE v_factures_1.no_sejour = v_sejours_1.no_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_factures_reference_1.yaml b/db/schema2/views/v_factures_reference_1.yaml new file mode 100644 index 0000000..7af4278 --- /dev/null +++ b/db/schema2/views/v_factures_reference_1.yaml @@ -0,0 +1,569 @@ +src: | + SELECT p_factures_reference.sejour_id, + p_factures_reference.no_sejour, + p_factures_reference.date_entree, + p_factures_reference.date_sortie, + p_factures_reference.code_sorti, + p_factures_reference.facture_reference_id, + p_factures_reference.no_facture_reference, + p_factures_reference.type_t2a, + p_factures_reference.date_debut_facture, + p_factures_reference.date_fin_facture, + p_factures_reference.date_groupage, + p_factures_reference.retard_groupage, + p_factures_reference.delai_groupage, + p_factures_reference.nb_groupe, + p_factures_reference.nb_non_groupe, + p_factures_reference.nb_calculable, + CASE + WHEN p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id = 0 AND p_factures_reference.code_facture <> '1'::text THEN 1 + ELSE 0 + END AS nb_non_groupes, + p_factures_reference.ghs_id, + p_factures_reference.ghs_bebe1_id, + p_factures_reference.ghs_bebe2_id, + p_factures_reference.ghs_bebe3_id, + p_factures_reference.tiers_payant_0_id, + p_factures_reference.tiers_payant_1_id, + p_factures_reference.tiers_payant_2_id, + p_factures_reference.tiers_payant_22_id, + p_factures_reference.tiers_payant_1_id AS tiers_payant_id, + t_tiers_payant.code AS tiers_payant_code, + t_tiers_payant.texte_court AS tiers_payant_texte, + t_tiers_payant.type_tiers_payant_id, + t_tiers_payant.type_tiers_payant AS type_tiers_payant_code, + t_tiers_payant.type_tiers_payant_texte, + t_tiers_payant.grand_regime_id AS tiers_payant_grand_regime_id, + t_tiers_payant.grand_regime_code AS tiers_payant_grand_regime_code, + t_tiers_payant.grand_regime_texte AS tiers_payant_grand_regime_texte, + t_tiers_payant.section_id AS tiers_payant_section_id, + t_tiers_payant.section_code AS tiers_payant_section_code, + t_tiers_payant.section_texte AS tiers_payant_section_texte, + p_factures_reference.code_facture, + p_factures_reference.date_facture, + p_factures_reference.delai_facture, + p_factures_reference.retard_facture, + p_factures_reference.code_vente, + p_factures_reference.date_vente, + p_factures_reference.nb_factures, + CASE + WHEN p_factures_reference.nb_non_calcules = 0 THEN 1 + ELSE 0 + END AS nb_calcules, + p_factures_reference.nb_non_calcules, + CASE + WHEN p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar THEN p_factures_reference.nb_non_calcules + ELSE 0 + END AS nb_non_calcules_groupes, + CASE + WHEN p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar THEN 0 + ELSE p_factures_reference.nb_non_calcules + END AS nb_non_calcules_non_groupes, + p_factures_reference.nb_factures_regularisation, + p_factures_reference.nb_rejets, + p_factures_reference.code_expedie_0, + p_factures_reference.code_expedie_1, + p_factures_reference.code_expedie_2, + p_factures_reference.date_expedition, + p_factures_reference.date_expedition_0, + p_factures_reference.date_expedition_1, + p_factures_reference.date_expedition_2, + p_factures_reference.no_bordereau_0, + p_factures_reference.no_bordereau_1, + p_factures_reference.no_bordereau_2, + p_factures_reference.delai_expedition, + p_factures_reference.delai_expedition_0, + p_factures_reference.delai_expedition_1, + p_factures_reference.delai_expedition_2, + p_factures_reference.nb_non_expedie, + p_factures_reference.nb_non_expedie_c, + p_factures_reference.nb_non_expedie_h, + p_factures_reference.nb_non_expedie_0, + p_factures_reference.nb_non_expedie_0_c, + p_factures_reference.nb_non_expedie_0_h, + p_factures_reference.nb_non_expedie_1, + p_factures_reference.nb_non_expedie_1_c, + p_factures_reference.nb_non_expedie_1_h, + p_factures_reference.nb_non_expedie_2, + p_factures_reference.nb_non_expedie_2_c, + p_factures_reference.nb_non_expedie_2_h, + CASE + WHEN p_factures_reference.nb_non_expedie_0 = 1::numeric THEN p_factures_reference.montant_comptabilise_0_c - p_factures_reference.montant_regle_0_c + p_factures_reference.montant_comptabilise_0_h - p_factures_reference.montant_regle_0_h + ELSE 0::numeric + END + + CASE + WHEN p_factures_reference.nb_non_expedie_1 = 1::numeric THEN p_factures_reference.montant_comptabilise_1_c - p_factures_reference.montant_regle_1_c + p_factures_reference.montant_comptabilise_1_h - p_factures_reference.montant_regle_1_h + ELSE 0::numeric + END + + CASE + WHEN p_factures_reference.nb_non_expedie_2 = 1::numeric THEN p_factures_reference.montant_comptabilise_2_c - p_factures_reference.montant_regle_2_c + p_factures_reference.montant_comptabilise_2_h - p_factures_reference.montant_regle_2_h + ELSE 0::numeric + END AS montant_non_expedie, + CASE + WHEN p_factures_reference.nb_non_expedie_0 = 1::numeric THEN p_factures_reference.montant_comptabilise_0_c - p_factures_reference.montant_regle_0_c + ELSE 0::numeric + END + + CASE + WHEN p_factures_reference.nb_non_expedie_1 = 1::numeric THEN p_factures_reference.montant_comptabilise_1_c - p_factures_reference.montant_regle_1_c + ELSE 0::numeric + END + + CASE + WHEN p_factures_reference.nb_non_expedie_2 = 1::numeric THEN p_factures_reference.montant_comptabilise_2_c - p_factures_reference.montant_regle_2_c + ELSE 0::numeric + END AS montant_non_expedie_c, + CASE + WHEN p_factures_reference.nb_non_expedie_0 = 1::numeric THEN p_factures_reference.montant_comptabilise_0_h - p_factures_reference.montant_regle_0_h + ELSE 0::numeric + END + + CASE + WHEN p_factures_reference.nb_non_expedie_1 = 1::numeric THEN p_factures_reference.montant_comptabilise_1_h - p_factures_reference.montant_regle_1_h + ELSE 0::numeric + END + + CASE + WHEN p_factures_reference.nb_non_expedie_2 = 1::numeric THEN p_factures_reference.montant_comptabilise_2_h - p_factures_reference.montant_regle_2_h + ELSE 0::numeric + END AS montant_non_expedie_h, + CASE + WHEN p_factures_reference.nb_non_expedie_0 = 1::numeric THEN p_factures_reference.montant_comptabilise_0 - p_factures_reference.montant_regle_0 + ELSE 0::numeric + END AS montant_non_expedie_0, + CASE + WHEN p_factures_reference.nb_non_expedie_0 = 1::numeric THEN p_factures_reference.montant_comptabilise_0_c - p_factures_reference.montant_regle_0_c + ELSE 0::numeric + END AS montant_non_expedie_0_c, + CASE + WHEN p_factures_reference.nb_non_expedie_0 = 1::numeric THEN p_factures_reference.montant_comptabilise_0_h - p_factures_reference.montant_regle_0_h + ELSE 0::numeric + END AS montant_non_expedie_0_h, + CASE + WHEN p_factures_reference.nb_non_expedie_1 = 1::numeric THEN p_factures_reference.montant_comptabilise_1 - p_factures_reference.montant_regle_1 + ELSE 0::numeric + END AS montant_non_expedie_1, + CASE + WHEN p_factures_reference.nb_non_expedie_1 = 1::numeric THEN p_factures_reference.montant_comptabilise_1_c - p_factures_reference.montant_regle_1_c + ELSE 0::numeric + END AS montant_non_expedie_1_c, + CASE + WHEN p_factures_reference.nb_non_expedie_1 = 1::numeric THEN p_factures_reference.montant_comptabilise_1_h - p_factures_reference.montant_regle_1_h + ELSE 0::numeric + END AS montant_non_expedie_1_h, + CASE + WHEN p_factures_reference.nb_non_expedie_2 = 1::numeric THEN p_factures_reference.montant_comptabilise_2 - p_factures_reference.montant_regle_2 + ELSE 0::numeric + END AS montant_non_expedie_2, + CASE + WHEN p_factures_reference.nb_non_expedie_2 = 1::numeric THEN p_factures_reference.montant_comptabilise_2_c - p_factures_reference.montant_regle_2_c + ELSE 0::numeric + END AS montant_non_expedie_2_c, + CASE + WHEN p_factures_reference.nb_non_expedie_2 = 1::numeric THEN p_factures_reference.montant_comptabilise_2_h - p_factures_reference.montant_regle_2_h + ELSE 0::numeric + END AS montant_non_expedie_2_h, + p_factures_reference.montant_facture, + p_factures_reference.montant_facture_c, + p_factures_reference.montant_facture_h, + p_factures_reference.montant_facture_0, + p_factures_reference.montant_facture_0_c, + p_factures_reference.montant_facture_0_h, + p_factures_reference.montant_facture_1, + p_factures_reference.montant_facture_1_c, + p_factures_reference.montant_facture_1_h, + p_factures_reference.montant_facture_2, + p_factures_reference.montant_facture_2_c, + p_factures_reference.montant_facture_2_h, + p_factures_reference.montant_facture_c_actes_inclus_dans_sejour, + p_factures_reference.montant_facture_h_actes_inclus_dans_sejour, + p_factures_reference.montant_encours, + p_factures_reference.montant_encours_c, + p_factures_reference.montant_encours_h, + p_factures_reference.montant_encours_0, + p_factures_reference.montant_encours_0_c, + p_factures_reference.montant_encours_0_h, + p_factures_reference.montant_encours_1, + p_factures_reference.montant_encours_1_c, + p_factures_reference.montant_encours_1_h, + p_factures_reference.montant_encours_2, + p_factures_reference.montant_encours_2_c, + p_factures_reference.montant_encours_2_h, + CASE + WHEN p_factures_reference.nb_non_groupe = 0::numeric THEN p_factures_reference.montant_encours + ELSE 0::numeric + END AS montant_encours_groupes, + CASE + WHEN p_factures_reference.nb_non_groupe = 0::numeric THEN p_factures_reference.montant_encours_c + ELSE 0::numeric + END AS montant_encours_groupes_c, + CASE + WHEN p_factures_reference.nb_non_groupe = 0::numeric THEN p_factures_reference.montant_encours_h + ELSE 0::numeric + END AS montant_encours_groupes_h, + CASE + WHEN p_factures_reference.nb_non_groupe = 0::numeric THEN p_factures_reference.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_groupes_0, + CASE + WHEN p_factures_reference.nb_non_groupe = 0::numeric THEN p_factures_reference.montant_encours_0_c + ELSE 0::numeric + END AS montant_encours_groupes_0_c, + CASE + WHEN p_factures_reference.nb_non_groupe = 0::numeric THEN p_factures_reference.montant_encours_0_h + ELSE 0::numeric + END AS montant_encours_groupes_0_h, + CASE + WHEN p_factures_reference.nb_non_groupe = 0::numeric THEN p_factures_reference.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_groupes_1, + CASE + WHEN p_factures_reference.nb_non_groupe = 0::numeric THEN p_factures_reference.montant_encours_1_c + ELSE 0::numeric + END AS montant_encours_groupes_1_c, + CASE + WHEN p_factures_reference.nb_non_groupe = 0::numeric THEN p_factures_reference.montant_encours_1_h + ELSE 0::numeric + END AS montant_encours_groupes_1_h, + CASE + WHEN p_factures_reference.nb_non_groupe = 0::numeric THEN p_factures_reference.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_groupes_2, + CASE + WHEN p_factures_reference.nb_non_groupe = 0::numeric THEN p_factures_reference.montant_encours_2_c + ELSE 0::numeric + END AS montant_encours_groupes_2_c, + CASE + WHEN p_factures_reference.nb_non_groupe = 0::numeric THEN p_factures_reference.montant_encours_2_h + ELSE 0::numeric + END AS montant_encours_groupes_2_h, + CASE + WHEN p_factures_reference.nb_non_groupe = 1::numeric THEN p_factures_reference.montant_encours + ELSE 0::numeric + END AS montant_encours_non_groupes, + CASE + WHEN p_factures_reference.nb_non_groupe = 1::numeric THEN p_factures_reference.montant_encours_c + ELSE 0::numeric + END AS montant_encours_non_groupes_c, + CASE + WHEN p_factures_reference.nb_non_groupe = 1::numeric THEN p_factures_reference.montant_encours_h + ELSE 0::numeric + END AS montant_encours_non_groupes_h, + CASE + WHEN p_factures_reference.nb_non_groupe = 1::numeric THEN p_factures_reference.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_non_groupes_0, + CASE + WHEN p_factures_reference.nb_non_groupe = 1::numeric THEN p_factures_reference.montant_encours_0_c + ELSE 0::numeric + END AS montant_encours_non_groupes_0_c, + CASE + WHEN p_factures_reference.nb_non_groupe = 1::numeric THEN p_factures_reference.montant_encours_0_h + ELSE 0::numeric + END AS montant_encours_non_groupes_0_h, + CASE + WHEN p_factures_reference.nb_non_groupe = 1::numeric THEN p_factures_reference.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_non_groupes_1, + CASE + WHEN p_factures_reference.nb_non_groupe = 1::numeric THEN p_factures_reference.montant_encours_1_c + ELSE 0::numeric + END AS montant_encours_non_groupes_1_c, + CASE + WHEN p_factures_reference.nb_non_groupe = 1::numeric THEN p_factures_reference.montant_encours_1_h + ELSE 0::numeric + END AS montant_encours_non_groupes_1_h, + CASE + WHEN p_factures_reference.nb_non_groupe = 1::numeric THEN p_factures_reference.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_non_groupes_2, + CASE + WHEN p_factures_reference.nb_non_groupe = 1::numeric THEN p_factures_reference.montant_encours_2_c + ELSE 0::numeric + END AS montant_encours_non_groupes_2_c, + CASE + WHEN p_factures_reference.nb_non_groupe = 1::numeric THEN p_factures_reference.montant_encours_2_h + ELSE 0::numeric + END AS montant_encours_non_groupes_2_h, + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture + p_factures_reference.montant_encours + ELSE 0::numeric + END AS montant_non_calcules, + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_c + p_factures_reference.montant_encours_c + ELSE 0::numeric + END AS montant_non_calcules_c, + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_h + p_factures_reference.montant_encours_h + ELSE 0::numeric + END AS montant_non_calcules_h, + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_0 + p_factures_reference.montant_encours_0 + ELSE 0::numeric + END AS montant_non_calcules_0, + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_0_c + p_factures_reference.montant_encours_0_c + ELSE 0::numeric + END AS montant_non_calcules_0_c, + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_0_h + p_factures_reference.montant_encours_0_h + ELSE 0::numeric + END AS montant_non_calcules_0_h, + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_1 + p_factures_reference.montant_encours_1 + ELSE 0::numeric + END AS montant_non_calcules_1, + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_1_c + p_factures_reference.montant_encours_1_c + ELSE 0::numeric + END AS montant_non_calcules_1_c, + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_1_h + p_factures_reference.montant_encours_1_h + ELSE 0::numeric + END AS montant_non_calcules_1_h, + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_2 + p_factures_reference.montant_encours_2 + ELSE 0::numeric + END AS montant_non_calcules_2, + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_2_c + p_factures_reference.montant_encours_2_c + ELSE 0::numeric + END AS montant_non_calcules_2_c, + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_2_h + p_factures_reference.montant_encours_2_h + ELSE 0::numeric + END AS montant_non_calcules_2_h, + CASE + WHEN (p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar) AND p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture + p_factures_reference.montant_encours + ELSE 0::numeric + END AS montant_non_calcules_groupes, + CASE + WHEN (p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar) AND p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_c + p_factures_reference.montant_encours_c + ELSE 0::numeric + END AS montant_non_calcules_groupes_c, + CASE + WHEN (p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar) AND p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_h + p_factures_reference.montant_encours_h + ELSE 0::numeric + END AS montant_non_calcules_groupes_h, + CASE + WHEN (p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar) AND p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture + p_factures_reference.montant_encours_0 + ELSE 0::numeric + END AS montant_non_calcules_groupes_0, + CASE + WHEN (p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar) AND p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_c + p_factures_reference.montant_encours_0_c + ELSE 0::numeric + END AS montant_non_calcules_groupes_0_c, + CASE + WHEN (p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar) AND p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_h + p_factures_reference.montant_encours_0_h + ELSE 0::numeric + END AS montant_non_calcules_groupes_0_h, + CASE + WHEN (p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar) AND p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture + p_factures_reference.montant_encours_1 + ELSE 0::numeric + END AS montant_non_calcules_groupes_1, + CASE + WHEN (p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar) AND p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_c + p_factures_reference.montant_encours_1_c + ELSE 0::numeric + END AS montant_non_calcules_groupes_1_c, + CASE + WHEN (p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar) AND p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_h + p_factures_reference.montant_encours_1_h + ELSE 0::numeric + END AS montant_non_calcules_groupes_1_h, + CASE + WHEN (p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar) AND p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture + p_factures_reference.montant_encours_2 + ELSE 0::numeric + END AS montant_non_calcules_groupes_2, + CASE + WHEN (p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar) AND p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_c + p_factures_reference.montant_encours_2_c + ELSE 0::numeric + END AS montant_non_calcules_groupes_2_c, + CASE + WHEN (p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar) AND p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_h + p_factures_reference.montant_encours_2_h + ELSE 0::numeric + END AS montant_non_calcules_groupes_2_h, + CASE + WHEN p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture + p_factures_reference.montant_encours + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes, + CASE + WHEN p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_c + p_factures_reference.montant_encours_c + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_c, + CASE + WHEN p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_h + p_factures_reference.montant_encours_h + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_h, + CASE + WHEN p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_0 + p_factures_reference.montant_encours_0 + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_0, + CASE + WHEN p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_0_c + p_factures_reference.montant_encours_0_c + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_0_c, + CASE + WHEN p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_0_h + p_factures_reference.montant_encours_0_h + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_0_h, + CASE + WHEN p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_1 + p_factures_reference.montant_encours_1 + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_1, + CASE + WHEN p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_1_c + p_factures_reference.montant_encours_1_c + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_1_c, + CASE + WHEN p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_1_h + p_factures_reference.montant_encours_1_h + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_1_h, + CASE + WHEN p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_2 + p_factures_reference.montant_encours_2 + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_2, + CASE + WHEN p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_2_c + p_factures_reference.montant_encours_2_c + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_2_c, + CASE + WHEN p_factures_reference.type_t2a = '1'::bpchar AND p_factures_reference.ghs_id <> 0 OR p_factures_reference.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference.nb_non_calcules > 0 THEN p_factures_reference.montant_facture_2_h + p_factures_reference.montant_encours_2_h + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_2_h, + p_factures_reference.montant_comptabilise, + p_factures_reference.montant_comptabilise_c, + p_factures_reference.montant_comptabilise_h, + p_factures_reference.montant_comptabilise_0, + p_factures_reference.montant_comptabilise_0_c, + p_factures_reference.montant_comptabilise_0_h, + p_factures_reference.montant_comptabilise_1, + p_factures_reference.montant_comptabilise_1_c, + p_factures_reference.montant_comptabilise_1_h, + p_factures_reference.montant_comptabilise_2, + p_factures_reference.montant_comptabilise_2_c, + p_factures_reference.montant_comptabilise_2_h, + p_factures_reference.montant_comptabilise_budget_global_c, + p_factures_reference.montant_regle, + p_factures_reference.montant_regle_c, + p_factures_reference.montant_regle_h, + p_factures_reference.montant_regle_0, + p_factures_reference.montant_regle_0_c, + p_factures_reference.montant_regle_0_h, + p_factures_reference.montant_regle_1, + p_factures_reference.montant_regle_1_c, + p_factures_reference.montant_regle_1_h, + p_factures_reference.montant_regle_2, + p_factures_reference.montant_regle_2_c, + p_factures_reference.montant_regle_2_h, + p_factures_reference.date_solde, + p_factures_reference.date_solde_c, + p_factures_reference.date_solde_h, + p_factures_reference.date_solde_0, + p_factures_reference.date_solde_0_c, + p_factures_reference.date_solde_0_h, + p_factures_reference.date_solde_1, + p_factures_reference.date_solde_1_c, + p_factures_reference.date_solde_1_h, + p_factures_reference.date_solde_2, + p_factures_reference.date_solde_2_c, + p_factures_reference.date_solde_2_h, + p_factures_reference.delai_solde, + p_factures_reference.delai_solde_c, + p_factures_reference.delai_solde_h, + p_factures_reference.delai_solde_0, + p_factures_reference.delai_solde_0_c, + p_factures_reference.delai_solde_0_h, + p_factures_reference.delai_solde_1, + p_factures_reference.delai_solde_1_c, + p_factures_reference.delai_solde_1_h, + p_factures_reference.delai_solde_2, + p_factures_reference.delai_solde_2_c, + p_factures_reference.delai_solde_2_h, + p_factures_reference.nb_non_solde, + p_factures_reference.nb_non_solde_c, + p_factures_reference.nb_non_solde_h, + p_factures_reference.nb_non_solde_0, + p_factures_reference.nb_non_solde_0_c, + p_factures_reference.nb_non_solde_0_h, + p_factures_reference.nb_non_solde_1, + p_factures_reference.nb_non_solde_1_c, + p_factures_reference.nb_non_solde_1_h, + p_factures_reference.nb_non_solde_2, + p_factures_reference.nb_non_solde_2_c, + p_factures_reference.nb_non_solde_2_h, + p_factures_reference.montant_comptabilise - p_factures_reference.montant_regle AS montant_solde, + p_factures_reference.montant_comptabilise_c - p_factures_reference.montant_regle_c AS montant_solde_c, + p_factures_reference.montant_comptabilise_h - p_factures_reference.montant_regle_h AS montant_solde_h, + p_factures_reference.montant_comptabilise_0 - p_factures_reference.montant_regle_0 AS montant_solde_0, + p_factures_reference.montant_comptabilise_0_c - p_factures_reference.montant_regle_0_c AS montant_solde_0_c, + p_factures_reference.montant_comptabilise_0_h - p_factures_reference.montant_regle_0_h AS montant_solde_0_h, + p_factures_reference.montant_comptabilise_1 - p_factures_reference.montant_regle_1 AS montant_solde_1, + p_factures_reference.montant_comptabilise_1_c - p_factures_reference.montant_regle_1_c AS montant_solde_1_c, + p_factures_reference.montant_comptabilise_1_h - p_factures_reference.montant_regle_1_h AS montant_solde_1_h, + p_factures_reference.montant_comptabilise_2 - p_factures_reference.montant_regle_2 AS montant_solde_2, + p_factures_reference.montant_comptabilise_2_c - p_factures_reference.montant_regle_2_c AS montant_solde_2_c, + p_factures_reference.montant_comptabilise_2_h - p_factures_reference.montant_regle_2_h AS montant_solde_2_h, + p_factures_reference.nb_non_cloture, + p_factures_reference.nb_non_cloture_c, + p_factures_reference.nb_non_cloture_h, + p_factures_reference.nb_non_cloture_0, + p_factures_reference.nb_non_cloture_0_c, + p_factures_reference.nb_non_cloture_0_h, + p_factures_reference.nb_non_cloture_1, + p_factures_reference.nb_non_cloture_1_c, + p_factures_reference.nb_non_cloture_1_h, + p_factures_reference.nb_non_cloture_2, + p_factures_reference.nb_non_cloture_2_c, + p_factures_reference.nb_non_cloture_2_h, + p_factures_reference.nb_rubriques_c, + p_factures_reference.nb_rubriques_h, + p_factures_reference.motif_non_facturation_id, + p_factures_reference.motif_non_facturation_comment, + p_factures_reference.nb_non_calcules_bg, + p_factures_reference.nb_non_calcules_horsbg, + p_factures_reference.pole_sortie_id AS pole_id + FROM activite.p_factures_reference + JOIN activite.t_tiers_payant ON p_factures_reference.tiers_payant_1_id = t_tiers_payant.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_reference_r_2.yaml b/db/schema2/views/v_factures_reference_r_2.yaml new file mode 100644 index 0000000..2310e85 --- /dev/null +++ b/db/schema2/views/v_factures_reference_r_2.yaml @@ -0,0 +1,416 @@ +dep: + - v_factures_reference_1 + - v_sejours_1 +src: | + SELECT v_factures_reference_1.date_fin_facture AS date_reference, + v_sejours_1.lieu_sortie_service_id AS lieu_reference_service_id, + v_sejours_1.lieu_sortie_service_code AS lieu_reference_service_code, + v_sejours_1.lieu_sortie_service_texte AS lieu_reference_service_texte, + v_sejours_1.lieu_sortie_service_section_id AS lieu_reference_service_section_id, + v_sejours_1.lieu_sortie_service_section_code AS lieu_reference_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte AS lieu_reference_service_section_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_sejours_1.lieu_sortie_activite_id AS lieu_reference_activite_id, + v_sejours_1.lieu_sortie_activite_code AS lieu_reference_activite_code, + v_sejours_1.lieu_sortie_activite_texte AS lieu_reference_activite_texte, + v_sejours_1.lieu_sortie_etage_id AS lieu_reference_etage_id, + v_sejours_1.lieu_sortie_etage_code AS lieu_reference_etage_code, + v_sejours_1.lieu_sortie_etage_texte AS lieu_reference_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id AS lieu_reference_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code AS lieu_reference_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte AS lieu_reference_etage_section_texte, + v_sejours_1.lieu_sortie_unite_medicale_id AS lieu_reference_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code AS lieu_reference_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte AS lieu_reference_unite_medicale_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess_section_id, + v_sejours_1.finess_section_code, + v_sejours_1.finess_section_texte, + v_sejours_1.finess, + v_sejours_1.provider_id, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.est_budget_global, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.heure_entree, + v_sejours_1.mode_entree, + v_sejours_1.provenance, + v_sejours_1.mois_sortie, + v_factures_reference_1.code_sorti, + v_sejours_1.date_sortie, + v_sejours_1.heure_sortie, + v_sejours_1.mode_sortie, + v_sejours_1.destination, + v_sejours_1.est_sans_facturation, + v_sejours_1.duree, + v_sejours_1.code_cp_demandee, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id, + v_sejours_1.medecin_adm_sejour_section_code, + v_sejours_1.medecin_adm_sejour_section_texte, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_code, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.medecin_sejour_specialite_id, + v_sejours_1.medecin_sejour_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte, + v_sejours_1.lieu_sortie_id, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_service_section_id, + v_sejours_1.lieu_sortie_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte, + v_sejours_1.lieu_sortie_service_section_nb_lits, + v_sejours_1.lieu_sortie_service_section_nb_cp, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte, + v_sejours_1.lieu_sortie_lit_id, + v_sejours_1.lieu_sortie_lit_code, + v_sejours_1.lieu_sortie_lit_texte, + v_sejours_1.lieu_sortie_lit_section_id, + v_sejours_1.lieu_sortie_lit_section_code, + v_sejours_1.lieu_sortie_lit_section_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_sejours_1.lieu_sortie_unite_medicale_section_id, + v_sejours_1.lieu_sortie_unite_medicale_section_code, + v_sejours_1.lieu_sortie_unite_medicale_section_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_texte, + v_factures_reference_1.facture_reference_id, + v_factures_reference_1.no_facture_reference, + v_factures_reference_1.type_t2a, + v_factures_reference_1.date_debut_facture, + v_factures_reference_1.date_fin_facture, + v_factures_reference_1.date_groupage, + v_factures_reference_1.retard_groupage, + v_factures_reference_1.delai_groupage, + v_factures_reference_1.nb_groupe, + v_factures_reference_1.nb_non_groupe, + v_factures_reference_1.nb_calculable, + v_factures_reference_1.nb_non_groupes, + v_factures_reference_1.tiers_payant_0_id, + v_factures_reference_1.tiers_payant_1_id, + v_factures_reference_1.tiers_payant_2_id, + v_factures_reference_1.tiers_payant_22_id, + v_factures_reference_1.tiers_payant_id, + v_factures_reference_1.tiers_payant_code, + v_factures_reference_1.tiers_payant_texte, + v_factures_reference_1.type_tiers_payant_id, + v_factures_reference_1.type_tiers_payant_code, + v_factures_reference_1.type_tiers_payant_texte, + v_factures_reference_1.tiers_payant_grand_regime_id, + v_factures_reference_1.tiers_payant_grand_regime_code, + v_factures_reference_1.tiers_payant_grand_regime_texte, + v_factures_reference_1.tiers_payant_section_id, + v_factures_reference_1.tiers_payant_section_code, + v_factures_reference_1.tiers_payant_section_texte, + v_factures_reference_1.code_facture, + v_factures_reference_1.date_facture, + v_factures_reference_1.retard_facture, + v_factures_reference_1.delai_facture, + v_factures_reference_1.code_vente, + v_factures_reference_1.date_vente, + v_factures_reference_1.nb_factures, + v_factures_reference_1.nb_calcules, + v_factures_reference_1.nb_non_calcules, + v_factures_reference_1.nb_non_calcules_groupes, + v_factures_reference_1.nb_non_calcules_non_groupes, + v_factures_reference_1.nb_factures_regularisation, + v_factures_reference_1.nb_rejets, + v_factures_reference_1.code_expedie_0, + v_factures_reference_1.code_expedie_1, + v_factures_reference_1.code_expedie_2, + v_factures_reference_1.date_expedition, + v_factures_reference_1.date_expedition_0, + v_factures_reference_1.date_expedition_1, + v_factures_reference_1.date_expedition_2, + v_factures_reference_1.no_bordereau_0, + v_factures_reference_1.no_bordereau_1, + v_factures_reference_1.no_bordereau_2, + v_factures_reference_1.delai_expedition, + v_factures_reference_1.delai_expedition_0, + v_factures_reference_1.delai_expedition_1, + v_factures_reference_1.delai_expedition_2, + v_factures_reference_1.nb_non_expedie, + v_factures_reference_1.nb_non_expedie_c, + v_factures_reference_1.nb_non_expedie_h, + v_factures_reference_1.nb_non_expedie_0, + v_factures_reference_1.nb_non_expedie_0_c, + v_factures_reference_1.nb_non_expedie_0_h, + v_factures_reference_1.nb_non_expedie_1, + v_factures_reference_1.nb_non_expedie_1_c, + v_factures_reference_1.nb_non_expedie_1_h, + v_factures_reference_1.nb_non_expedie_2, + v_factures_reference_1.nb_non_expedie_2_c, + v_factures_reference_1.nb_non_expedie_2_h, + v_factures_reference_1.montant_non_expedie, + v_factures_reference_1.montant_non_expedie_c, + v_factures_reference_1.montant_non_expedie_h, + v_factures_reference_1.montant_non_expedie_0, + v_factures_reference_1.montant_non_expedie_0_c, + v_factures_reference_1.montant_non_expedie_0_h, + v_factures_reference_1.montant_non_expedie_1, + v_factures_reference_1.montant_non_expedie_1_c, + v_factures_reference_1.montant_non_expedie_1_h, + v_factures_reference_1.montant_non_expedie_2, + v_factures_reference_1.montant_non_expedie_2_c, + v_factures_reference_1.montant_non_expedie_2_h, + v_factures_reference_1.montant_facture, + v_factures_reference_1.montant_facture_c, + v_factures_reference_1.montant_facture_h, + v_factures_reference_1.montant_facture_0, + v_factures_reference_1.montant_facture_0_c, + v_factures_reference_1.montant_facture_0_h, + v_factures_reference_1.montant_facture_1, + v_factures_reference_1.montant_facture_1_c, + v_factures_reference_1.montant_facture_1_h, + v_factures_reference_1.montant_facture_2, + v_factures_reference_1.montant_facture_2_c, + v_factures_reference_1.montant_facture_2_h, + v_factures_reference_1.montant_facture_c_actes_inclus_dans_sejour, + v_factures_reference_1.montant_facture_h_actes_inclus_dans_sejour, + v_factures_reference_1.montant_encours, + v_factures_reference_1.montant_encours_c, + v_factures_reference_1.montant_encours_h, + v_factures_reference_1.montant_encours_0, + v_factures_reference_1.montant_encours_0_c, + v_factures_reference_1.montant_encours_0_h, + v_factures_reference_1.montant_encours_1, + v_factures_reference_1.montant_encours_1_c, + v_factures_reference_1.montant_encours_1_h, + v_factures_reference_1.montant_encours_2, + v_factures_reference_1.montant_encours_2_c, + v_factures_reference_1.montant_encours_2_h, + v_factures_reference_1.montant_encours_groupes, + v_factures_reference_1.montant_encours_groupes_c, + v_factures_reference_1.montant_encours_groupes_h, + v_factures_reference_1.montant_encours_groupes_0, + v_factures_reference_1.montant_encours_groupes_0_c, + v_factures_reference_1.montant_encours_groupes_0_h, + v_factures_reference_1.montant_encours_groupes_1, + v_factures_reference_1.montant_encours_groupes_1_c, + v_factures_reference_1.montant_encours_groupes_1_h, + v_factures_reference_1.montant_encours_groupes_2, + v_factures_reference_1.montant_encours_groupes_2_c, + v_factures_reference_1.montant_encours_groupes_2_h, + v_factures_reference_1.montant_encours_non_groupes, + v_factures_reference_1.montant_encours_non_groupes_c, + v_factures_reference_1.montant_encours_non_groupes_h, + v_factures_reference_1.montant_encours_non_groupes_0, + v_factures_reference_1.montant_encours_non_groupes_0_c, + v_factures_reference_1.montant_encours_non_groupes_0_h, + v_factures_reference_1.montant_encours_non_groupes_1, + v_factures_reference_1.montant_encours_non_groupes_1_c, + v_factures_reference_1.montant_encours_non_groupes_1_h, + v_factures_reference_1.montant_encours_non_groupes_2, + v_factures_reference_1.montant_encours_non_groupes_2_c, + v_factures_reference_1.montant_encours_non_groupes_2_h, + v_factures_reference_1.montant_non_calcules, + v_factures_reference_1.montant_non_calcules_c, + v_factures_reference_1.montant_non_calcules_h, + v_factures_reference_1.montant_non_calcules_0, + v_factures_reference_1.montant_non_calcules_0_c, + v_factures_reference_1.montant_non_calcules_0_h, + v_factures_reference_1.montant_non_calcules_1, + v_factures_reference_1.montant_non_calcules_1_c, + v_factures_reference_1.montant_non_calcules_1_h, + v_factures_reference_1.montant_non_calcules_2, + v_factures_reference_1.montant_non_calcules_2_c, + v_factures_reference_1.montant_non_calcules_2_h, + v_factures_reference_1.montant_non_calcules_groupes, + v_factures_reference_1.montant_non_calcules_groupes_c, + v_factures_reference_1.montant_non_calcules_groupes_h, + v_factures_reference_1.montant_non_calcules_groupes_0, + v_factures_reference_1.montant_non_calcules_groupes_0_c, + v_factures_reference_1.montant_non_calcules_groupes_0_h, + v_factures_reference_1.montant_non_calcules_groupes_1, + v_factures_reference_1.montant_non_calcules_groupes_1_c, + v_factures_reference_1.montant_non_calcules_groupes_1_h, + v_factures_reference_1.montant_non_calcules_groupes_2, + v_factures_reference_1.montant_non_calcules_groupes_2_c, + v_factures_reference_1.montant_non_calcules_groupes_2_h, + v_factures_reference_1.montant_non_calcules_non_groupes, + v_factures_reference_1.montant_non_calcules_non_groupes_c, + v_factures_reference_1.montant_non_calcules_non_groupes_h, + v_factures_reference_1.montant_non_calcules_non_groupes_0, + v_factures_reference_1.montant_non_calcules_non_groupes_0_c, + v_factures_reference_1.montant_non_calcules_non_groupes_0_h, + v_factures_reference_1.montant_non_calcules_non_groupes_1, + v_factures_reference_1.montant_non_calcules_non_groupes_1_c, + v_factures_reference_1.montant_non_calcules_non_groupes_1_h, + v_factures_reference_1.montant_non_calcules_non_groupes_2, + v_factures_reference_1.montant_non_calcules_non_groupes_2_c, + v_factures_reference_1.montant_non_calcules_non_groupes_2_h, + v_factures_reference_1.montant_comptabilise, + v_factures_reference_1.montant_comptabilise_c, + v_factures_reference_1.montant_comptabilise_h, + v_factures_reference_1.montant_comptabilise_0, + v_factures_reference_1.montant_comptabilise_0_c, + v_factures_reference_1.montant_comptabilise_0_h, + v_factures_reference_1.montant_comptabilise_1, + v_factures_reference_1.montant_comptabilise_1_c, + v_factures_reference_1.montant_comptabilise_1_h, + v_factures_reference_1.montant_comptabilise_2, + v_factures_reference_1.montant_comptabilise_2_c, + v_factures_reference_1.montant_comptabilise_2_h, + v_factures_reference_1.montant_comptabilise_budget_global_c, + v_factures_reference_1.montant_regle, + v_factures_reference_1.montant_regle_c, + v_factures_reference_1.montant_regle_h, + v_factures_reference_1.montant_regle_0, + v_factures_reference_1.montant_regle_0_c, + v_factures_reference_1.montant_regle_0_h, + v_factures_reference_1.montant_regle_1, + v_factures_reference_1.montant_regle_1_c, + v_factures_reference_1.montant_regle_1_h, + v_factures_reference_1.montant_regle_2, + v_factures_reference_1.montant_regle_2_c, + v_factures_reference_1.montant_regle_2_h, + v_factures_reference_1.date_solde, + v_factures_reference_1.date_solde_c, + v_factures_reference_1.date_solde_h, + v_factures_reference_1.date_solde_0, + v_factures_reference_1.date_solde_0_c, + v_factures_reference_1.date_solde_0_h, + v_factures_reference_1.date_solde_1, + v_factures_reference_1.date_solde_1_c, + v_factures_reference_1.date_solde_1_h, + v_factures_reference_1.date_solde_2, + v_factures_reference_1.date_solde_2_c, + v_factures_reference_1.date_solde_2_h, + v_factures_reference_1.delai_solde, + v_factures_reference_1.delai_solde_c, + v_factures_reference_1.delai_solde_h, + v_factures_reference_1.delai_solde_0, + v_factures_reference_1.delai_solde_0_c, + v_factures_reference_1.delai_solde_0_h, + v_factures_reference_1.delai_solde_1, + v_factures_reference_1.delai_solde_1_c, + v_factures_reference_1.delai_solde_1_h, + v_factures_reference_1.delai_solde_2, + v_factures_reference_1.delai_solde_2_c, + v_factures_reference_1.delai_solde_2_h, + v_factures_reference_1.nb_non_solde, + v_factures_reference_1.nb_non_solde_c, + v_factures_reference_1.nb_non_solde_h, + v_factures_reference_1.nb_non_solde_0, + v_factures_reference_1.nb_non_solde_0_c, + v_factures_reference_1.nb_non_solde_0_h, + v_factures_reference_1.nb_non_solde_1, + v_factures_reference_1.nb_non_solde_1_c, + v_factures_reference_1.nb_non_solde_1_h, + v_factures_reference_1.nb_non_solde_2, + v_factures_reference_1.nb_non_solde_2_c, + v_factures_reference_1.nb_non_solde_2_h, + v_factures_reference_1.montant_solde, + v_factures_reference_1.montant_solde_c, + v_factures_reference_1.montant_solde_h, + v_factures_reference_1.montant_solde_0, + v_factures_reference_1.montant_solde_0_c, + v_factures_reference_1.montant_solde_0_h, + v_factures_reference_1.montant_solde_1, + v_factures_reference_1.montant_solde_1_c, + v_factures_reference_1.montant_solde_1_h, + v_factures_reference_1.montant_solde_2, + v_factures_reference_1.montant_solde_2_c, + v_factures_reference_1.montant_solde_2_h, + v_factures_reference_1.nb_non_cloture, + v_factures_reference_1.nb_non_cloture_c, + v_factures_reference_1.nb_non_cloture_h, + v_factures_reference_1.nb_non_cloture_0, + v_factures_reference_1.nb_non_cloture_0_c, + v_factures_reference_1.nb_non_cloture_0_h, + v_factures_reference_1.nb_non_cloture_1, + v_factures_reference_1.nb_non_cloture_1_c, + v_factures_reference_1.nb_non_cloture_1_h, + v_factures_reference_1.nb_non_cloture_2, + v_factures_reference_1.nb_non_cloture_2_c, + v_factures_reference_1.nb_non_cloture_2_h, + v_factures_reference_1.nb_rubriques_c, + v_factures_reference_1.nb_rubriques_h, + v_factures_reference_1.pole_id + FROM activite.v_factures_reference_1 + JOIN activite.v_sejours_1 ON v_factures_reference_1.no_sejour = v_sejours_1.no_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_factures_reference_r_4.yaml b/db/schema2/views/v_factures_reference_r_4.yaml new file mode 100644 index 0000000..1a2eb3f --- /dev/null +++ b/db/schema2/views/v_factures_reference_r_4.yaml @@ -0,0 +1,416 @@ +dep: + - v_factures_reference_1 + - v_sejours_1 +src: | + SELECT v_factures_reference_1.date_vente AS date_reference, + v_sejours_1.lieu_sortie_service_id AS lieu_reference_service_id, + v_sejours_1.lieu_sortie_service_code AS lieu_reference_service_code, + v_sejours_1.lieu_sortie_service_texte AS lieu_reference_service_texte, + v_sejours_1.lieu_sortie_service_section_id AS lieu_reference_service_section_id, + v_sejours_1.lieu_sortie_service_section_code AS lieu_reference_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte AS lieu_reference_service_section_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_sejours_1.lieu_sortie_activite_id AS lieu_reference_activite_id, + v_sejours_1.lieu_sortie_activite_code AS lieu_reference_activite_code, + v_sejours_1.lieu_sortie_activite_texte AS lieu_reference_activite_texte, + v_sejours_1.lieu_sortie_etage_id AS lieu_reference_etage_id, + v_sejours_1.lieu_sortie_etage_code AS lieu_reference_etage_code, + v_sejours_1.lieu_sortie_etage_texte AS lieu_reference_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id AS lieu_reference_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code AS lieu_reference_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte AS lieu_reference_etage_section_texte, + v_sejours_1.lieu_sortie_unite_medicale_id AS lieu_reference_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code AS lieu_reference_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte AS lieu_reference_unite_medicale_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess_section_id, + v_sejours_1.finess_section_code, + v_sejours_1.finess_section_texte, + v_sejours_1.finess, + v_sejours_1.provider_id, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.est_budget_global, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.heure_entree, + v_sejours_1.mode_entree, + v_sejours_1.provenance, + v_sejours_1.mois_sortie, + v_factures_reference_1.code_sorti, + v_sejours_1.date_sortie, + v_sejours_1.heure_sortie, + v_sejours_1.mode_sortie, + v_sejours_1.destination, + v_sejours_1.est_sans_facturation, + v_sejours_1.duree, + v_sejours_1.code_cp_demandee, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id, + v_sejours_1.medecin_adm_sejour_section_code, + v_sejours_1.medecin_adm_sejour_section_texte, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_code, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.medecin_sejour_specialite_id, + v_sejours_1.medecin_sejour_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte, + v_sejours_1.lieu_sortie_id, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_service_section_id, + v_sejours_1.lieu_sortie_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte, + v_sejours_1.lieu_sortie_service_section_nb_lits, + v_sejours_1.lieu_sortie_service_section_nb_cp, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte, + v_sejours_1.lieu_sortie_lit_id, + v_sejours_1.lieu_sortie_lit_code, + v_sejours_1.lieu_sortie_lit_texte, + v_sejours_1.lieu_sortie_lit_section_id, + v_sejours_1.lieu_sortie_lit_section_code, + v_sejours_1.lieu_sortie_lit_section_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_sejours_1.lieu_sortie_unite_medicale_section_id, + v_sejours_1.lieu_sortie_unite_medicale_section_code, + v_sejours_1.lieu_sortie_unite_medicale_section_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_texte, + v_factures_reference_1.facture_reference_id, + v_factures_reference_1.no_facture_reference, + v_factures_reference_1.type_t2a, + v_factures_reference_1.date_debut_facture, + v_factures_reference_1.date_fin_facture, + v_factures_reference_1.date_groupage, + v_factures_reference_1.retard_groupage, + v_factures_reference_1.delai_groupage, + v_factures_reference_1.nb_groupe, + v_factures_reference_1.nb_non_groupe, + v_factures_reference_1.nb_calculable, + v_factures_reference_1.nb_non_groupes, + v_factures_reference_1.tiers_payant_0_id, + v_factures_reference_1.tiers_payant_1_id, + v_factures_reference_1.tiers_payant_2_id, + v_factures_reference_1.tiers_payant_22_id, + v_factures_reference_1.tiers_payant_id, + v_factures_reference_1.tiers_payant_code, + v_factures_reference_1.tiers_payant_texte, + v_factures_reference_1.type_tiers_payant_id, + v_factures_reference_1.type_tiers_payant_code, + v_factures_reference_1.type_tiers_payant_texte, + v_factures_reference_1.tiers_payant_grand_regime_id, + v_factures_reference_1.tiers_payant_grand_regime_code, + v_factures_reference_1.tiers_payant_grand_regime_texte, + v_factures_reference_1.tiers_payant_section_id, + v_factures_reference_1.tiers_payant_section_code, + v_factures_reference_1.tiers_payant_section_texte, + v_factures_reference_1.code_facture, + v_factures_reference_1.date_facture, + v_factures_reference_1.retard_facture, + v_factures_reference_1.delai_facture, + v_factures_reference_1.code_vente, + v_factures_reference_1.date_vente, + v_factures_reference_1.nb_factures, + v_factures_reference_1.nb_calcules, + v_factures_reference_1.nb_non_calcules, + v_factures_reference_1.nb_non_calcules_groupes, + v_factures_reference_1.nb_non_calcules_non_groupes, + v_factures_reference_1.nb_factures_regularisation, + v_factures_reference_1.nb_rejets, + v_factures_reference_1.code_expedie_0, + v_factures_reference_1.code_expedie_1, + v_factures_reference_1.code_expedie_2, + v_factures_reference_1.date_expedition, + v_factures_reference_1.date_expedition_0, + v_factures_reference_1.date_expedition_1, + v_factures_reference_1.date_expedition_2, + v_factures_reference_1.no_bordereau_0, + v_factures_reference_1.no_bordereau_1, + v_factures_reference_1.no_bordereau_2, + v_factures_reference_1.delai_expedition, + v_factures_reference_1.delai_expedition_0, + v_factures_reference_1.delai_expedition_1, + v_factures_reference_1.delai_expedition_2, + v_factures_reference_1.nb_non_expedie, + v_factures_reference_1.nb_non_expedie_c, + v_factures_reference_1.nb_non_expedie_h, + v_factures_reference_1.nb_non_expedie_0, + v_factures_reference_1.nb_non_expedie_0_c, + v_factures_reference_1.nb_non_expedie_0_h, + v_factures_reference_1.nb_non_expedie_1, + v_factures_reference_1.nb_non_expedie_1_c, + v_factures_reference_1.nb_non_expedie_1_h, + v_factures_reference_1.nb_non_expedie_2, + v_factures_reference_1.nb_non_expedie_2_c, + v_factures_reference_1.nb_non_expedie_2_h, + v_factures_reference_1.montant_non_expedie, + v_factures_reference_1.montant_non_expedie_c, + v_factures_reference_1.montant_non_expedie_h, + v_factures_reference_1.montant_non_expedie_0, + v_factures_reference_1.montant_non_expedie_0_c, + v_factures_reference_1.montant_non_expedie_0_h, + v_factures_reference_1.montant_non_expedie_1, + v_factures_reference_1.montant_non_expedie_1_c, + v_factures_reference_1.montant_non_expedie_1_h, + v_factures_reference_1.montant_non_expedie_2, + v_factures_reference_1.montant_non_expedie_2_c, + v_factures_reference_1.montant_non_expedie_2_h, + v_factures_reference_1.montant_facture, + v_factures_reference_1.montant_facture_c, + v_factures_reference_1.montant_facture_h, + v_factures_reference_1.montant_facture_0, + v_factures_reference_1.montant_facture_0_c, + v_factures_reference_1.montant_facture_0_h, + v_factures_reference_1.montant_facture_1, + v_factures_reference_1.montant_facture_1_c, + v_factures_reference_1.montant_facture_1_h, + v_factures_reference_1.montant_facture_2, + v_factures_reference_1.montant_facture_2_c, + v_factures_reference_1.montant_facture_2_h, + v_factures_reference_1.montant_facture_c_actes_inclus_dans_sejour, + v_factures_reference_1.montant_facture_h_actes_inclus_dans_sejour, + v_factures_reference_1.montant_encours, + v_factures_reference_1.montant_encours_c, + v_factures_reference_1.montant_encours_h, + v_factures_reference_1.montant_encours_0, + v_factures_reference_1.montant_encours_0_c, + v_factures_reference_1.montant_encours_0_h, + v_factures_reference_1.montant_encours_1, + v_factures_reference_1.montant_encours_1_c, + v_factures_reference_1.montant_encours_1_h, + v_factures_reference_1.montant_encours_2, + v_factures_reference_1.montant_encours_2_c, + v_factures_reference_1.montant_encours_2_h, + v_factures_reference_1.montant_encours_groupes, + v_factures_reference_1.montant_encours_groupes_c, + v_factures_reference_1.montant_encours_groupes_h, + v_factures_reference_1.montant_encours_groupes_0, + v_factures_reference_1.montant_encours_groupes_0_c, + v_factures_reference_1.montant_encours_groupes_0_h, + v_factures_reference_1.montant_encours_groupes_1, + v_factures_reference_1.montant_encours_groupes_1_c, + v_factures_reference_1.montant_encours_groupes_1_h, + v_factures_reference_1.montant_encours_groupes_2, + v_factures_reference_1.montant_encours_groupes_2_c, + v_factures_reference_1.montant_encours_groupes_2_h, + v_factures_reference_1.montant_encours_non_groupes, + v_factures_reference_1.montant_encours_non_groupes_c, + v_factures_reference_1.montant_encours_non_groupes_h, + v_factures_reference_1.montant_encours_non_groupes_0, + v_factures_reference_1.montant_encours_non_groupes_0_c, + v_factures_reference_1.montant_encours_non_groupes_0_h, + v_factures_reference_1.montant_encours_non_groupes_1, + v_factures_reference_1.montant_encours_non_groupes_1_c, + v_factures_reference_1.montant_encours_non_groupes_1_h, + v_factures_reference_1.montant_encours_non_groupes_2, + v_factures_reference_1.montant_encours_non_groupes_2_c, + v_factures_reference_1.montant_encours_non_groupes_2_h, + v_factures_reference_1.montant_non_calcules, + v_factures_reference_1.montant_non_calcules_c, + v_factures_reference_1.montant_non_calcules_h, + v_factures_reference_1.montant_non_calcules_0, + v_factures_reference_1.montant_non_calcules_0_c, + v_factures_reference_1.montant_non_calcules_0_h, + v_factures_reference_1.montant_non_calcules_1, + v_factures_reference_1.montant_non_calcules_1_c, + v_factures_reference_1.montant_non_calcules_1_h, + v_factures_reference_1.montant_non_calcules_2, + v_factures_reference_1.montant_non_calcules_2_c, + v_factures_reference_1.montant_non_calcules_2_h, + v_factures_reference_1.montant_non_calcules_groupes, + v_factures_reference_1.montant_non_calcules_groupes_c, + v_factures_reference_1.montant_non_calcules_groupes_h, + v_factures_reference_1.montant_non_calcules_groupes_0, + v_factures_reference_1.montant_non_calcules_groupes_0_c, + v_factures_reference_1.montant_non_calcules_groupes_0_h, + v_factures_reference_1.montant_non_calcules_groupes_1, + v_factures_reference_1.montant_non_calcules_groupes_1_c, + v_factures_reference_1.montant_non_calcules_groupes_1_h, + v_factures_reference_1.montant_non_calcules_groupes_2, + v_factures_reference_1.montant_non_calcules_groupes_2_c, + v_factures_reference_1.montant_non_calcules_groupes_2_h, + v_factures_reference_1.montant_non_calcules_non_groupes, + v_factures_reference_1.montant_non_calcules_non_groupes_c, + v_factures_reference_1.montant_non_calcules_non_groupes_h, + v_factures_reference_1.montant_non_calcules_non_groupes_0, + v_factures_reference_1.montant_non_calcules_non_groupes_0_c, + v_factures_reference_1.montant_non_calcules_non_groupes_0_h, + v_factures_reference_1.montant_non_calcules_non_groupes_1, + v_factures_reference_1.montant_non_calcules_non_groupes_1_c, + v_factures_reference_1.montant_non_calcules_non_groupes_1_h, + v_factures_reference_1.montant_non_calcules_non_groupes_2, + v_factures_reference_1.montant_non_calcules_non_groupes_2_c, + v_factures_reference_1.montant_non_calcules_non_groupes_2_h, + v_factures_reference_1.montant_comptabilise, + v_factures_reference_1.montant_comptabilise_c, + v_factures_reference_1.montant_comptabilise_h, + v_factures_reference_1.montant_comptabilise_0, + v_factures_reference_1.montant_comptabilise_0_c, + v_factures_reference_1.montant_comptabilise_0_h, + v_factures_reference_1.montant_comptabilise_1, + v_factures_reference_1.montant_comptabilise_1_c, + v_factures_reference_1.montant_comptabilise_1_h, + v_factures_reference_1.montant_comptabilise_2, + v_factures_reference_1.montant_comptabilise_2_c, + v_factures_reference_1.montant_comptabilise_2_h, + v_factures_reference_1.montant_comptabilise_budget_global_c, + v_factures_reference_1.montant_regle, + v_factures_reference_1.montant_regle_c, + v_factures_reference_1.montant_regle_h, + v_factures_reference_1.montant_regle_0, + v_factures_reference_1.montant_regle_0_c, + v_factures_reference_1.montant_regle_0_h, + v_factures_reference_1.montant_regle_1, + v_factures_reference_1.montant_regle_1_c, + v_factures_reference_1.montant_regle_1_h, + v_factures_reference_1.montant_regle_2, + v_factures_reference_1.montant_regle_2_c, + v_factures_reference_1.montant_regle_2_h, + v_factures_reference_1.date_solde, + v_factures_reference_1.date_solde_c, + v_factures_reference_1.date_solde_h, + v_factures_reference_1.date_solde_0, + v_factures_reference_1.date_solde_0_c, + v_factures_reference_1.date_solde_0_h, + v_factures_reference_1.date_solde_1, + v_factures_reference_1.date_solde_1_c, + v_factures_reference_1.date_solde_1_h, + v_factures_reference_1.date_solde_2, + v_factures_reference_1.date_solde_2_c, + v_factures_reference_1.date_solde_2_h, + v_factures_reference_1.delai_solde, + v_factures_reference_1.delai_solde_c, + v_factures_reference_1.delai_solde_h, + v_factures_reference_1.delai_solde_0, + v_factures_reference_1.delai_solde_0_c, + v_factures_reference_1.delai_solde_0_h, + v_factures_reference_1.delai_solde_1, + v_factures_reference_1.delai_solde_1_c, + v_factures_reference_1.delai_solde_1_h, + v_factures_reference_1.delai_solde_2, + v_factures_reference_1.delai_solde_2_c, + v_factures_reference_1.delai_solde_2_h, + v_factures_reference_1.nb_non_solde, + v_factures_reference_1.nb_non_solde_c, + v_factures_reference_1.nb_non_solde_h, + v_factures_reference_1.nb_non_solde_0, + v_factures_reference_1.nb_non_solde_0_c, + v_factures_reference_1.nb_non_solde_0_h, + v_factures_reference_1.nb_non_solde_1, + v_factures_reference_1.nb_non_solde_1_c, + v_factures_reference_1.nb_non_solde_1_h, + v_factures_reference_1.nb_non_solde_2, + v_factures_reference_1.nb_non_solde_2_c, + v_factures_reference_1.nb_non_solde_2_h, + v_factures_reference_1.montant_solde, + v_factures_reference_1.montant_solde_c, + v_factures_reference_1.montant_solde_h, + v_factures_reference_1.montant_solde_0, + v_factures_reference_1.montant_solde_0_c, + v_factures_reference_1.montant_solde_0_h, + v_factures_reference_1.montant_solde_1, + v_factures_reference_1.montant_solde_1_c, + v_factures_reference_1.montant_solde_1_h, + v_factures_reference_1.montant_solde_2, + v_factures_reference_1.montant_solde_2_c, + v_factures_reference_1.montant_solde_2_h, + v_factures_reference_1.nb_non_cloture, + v_factures_reference_1.nb_non_cloture_c, + v_factures_reference_1.nb_non_cloture_h, + v_factures_reference_1.nb_non_cloture_0, + v_factures_reference_1.nb_non_cloture_0_c, + v_factures_reference_1.nb_non_cloture_0_h, + v_factures_reference_1.nb_non_cloture_1, + v_factures_reference_1.nb_non_cloture_1_c, + v_factures_reference_1.nb_non_cloture_1_h, + v_factures_reference_1.nb_non_cloture_2, + v_factures_reference_1.nb_non_cloture_2_c, + v_factures_reference_1.nb_non_cloture_2_h, + v_factures_reference_1.nb_rubriques_c, + v_factures_reference_1.nb_rubriques_h, + v_factures_reference_1.pole_id + FROM activite.v_factures_reference_1 + JOIN activite.v_sejours_1 ON v_factures_reference_1.no_sejour = v_sejours_1.no_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_factures_reference_r_5.yaml b/db/schema2/views/v_factures_reference_r_5.yaml new file mode 100644 index 0000000..f9daba4 --- /dev/null +++ b/db/schema2/views/v_factures_reference_r_5.yaml @@ -0,0 +1,416 @@ +dep: + - v_factures_reference_1 + - v_sejours_1 +src: | + SELECT v_factures_reference_1.date_groupage AS date_reference, + v_sejours_1.lieu_sortie_service_id AS lieu_reference_service_id, + v_sejours_1.lieu_sortie_service_code AS lieu_reference_service_code, + v_sejours_1.lieu_sortie_service_texte AS lieu_reference_service_texte, + v_sejours_1.lieu_sortie_service_section_id AS lieu_reference_service_section_id, + v_sejours_1.lieu_sortie_service_section_code AS lieu_reference_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte AS lieu_reference_service_section_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_sejours_1.lieu_sortie_activite_id AS lieu_reference_activite_id, + v_sejours_1.lieu_sortie_activite_code AS lieu_reference_activite_code, + v_sejours_1.lieu_sortie_activite_texte AS lieu_reference_activite_texte, + v_sejours_1.lieu_sortie_etage_id AS lieu_reference_etage_id, + v_sejours_1.lieu_sortie_etage_code AS lieu_reference_etage_code, + v_sejours_1.lieu_sortie_etage_texte AS lieu_reference_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id AS lieu_reference_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code AS lieu_reference_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte AS lieu_reference_etage_section_texte, + v_sejours_1.lieu_sortie_unite_medicale_id AS lieu_reference_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code AS lieu_reference_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte AS lieu_reference_unite_medicale_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess_section_id, + v_sejours_1.finess_section_code, + v_sejours_1.finess_section_texte, + v_sejours_1.finess, + v_sejours_1.provider_id, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.est_budget_global, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.heure_entree, + v_sejours_1.mode_entree, + v_sejours_1.provenance, + v_sejours_1.mois_sortie, + v_factures_reference_1.code_sorti, + v_sejours_1.date_sortie, + v_sejours_1.heure_sortie, + v_sejours_1.mode_sortie, + v_sejours_1.destination, + v_sejours_1.est_sans_facturation, + v_sejours_1.duree, + v_sejours_1.code_cp_demandee, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id, + v_sejours_1.medecin_adm_sejour_section_code, + v_sejours_1.medecin_adm_sejour_section_texte, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_code, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.medecin_sejour_specialite_id, + v_sejours_1.medecin_sejour_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte, + v_sejours_1.lieu_sortie_id, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_service_section_id, + v_sejours_1.lieu_sortie_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte, + v_sejours_1.lieu_sortie_service_section_nb_lits, + v_sejours_1.lieu_sortie_service_section_nb_cp, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte, + v_sejours_1.lieu_sortie_lit_id, + v_sejours_1.lieu_sortie_lit_code, + v_sejours_1.lieu_sortie_lit_texte, + v_sejours_1.lieu_sortie_lit_section_id, + v_sejours_1.lieu_sortie_lit_section_code, + v_sejours_1.lieu_sortie_lit_section_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_sejours_1.lieu_sortie_unite_medicale_section_id, + v_sejours_1.lieu_sortie_unite_medicale_section_code, + v_sejours_1.lieu_sortie_unite_medicale_section_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_texte, + v_factures_reference_1.facture_reference_id, + v_factures_reference_1.no_facture_reference, + v_factures_reference_1.type_t2a, + v_factures_reference_1.date_debut_facture, + v_factures_reference_1.date_fin_facture, + v_factures_reference_1.date_groupage, + v_factures_reference_1.retard_groupage, + v_factures_reference_1.delai_groupage, + v_factures_reference_1.nb_groupe, + v_factures_reference_1.nb_non_groupe, + v_factures_reference_1.nb_calculable, + v_factures_reference_1.nb_non_groupes, + v_factures_reference_1.tiers_payant_0_id, + v_factures_reference_1.tiers_payant_1_id, + v_factures_reference_1.tiers_payant_2_id, + v_factures_reference_1.tiers_payant_22_id, + v_factures_reference_1.tiers_payant_id, + v_factures_reference_1.tiers_payant_code, + v_factures_reference_1.tiers_payant_texte, + v_factures_reference_1.type_tiers_payant_id, + v_factures_reference_1.type_tiers_payant_code, + v_factures_reference_1.type_tiers_payant_texte, + v_factures_reference_1.tiers_payant_grand_regime_id, + v_factures_reference_1.tiers_payant_grand_regime_code, + v_factures_reference_1.tiers_payant_grand_regime_texte, + v_factures_reference_1.tiers_payant_section_id, + v_factures_reference_1.tiers_payant_section_code, + v_factures_reference_1.tiers_payant_section_texte, + v_factures_reference_1.code_facture, + v_factures_reference_1.date_facture, + v_factures_reference_1.retard_facture, + v_factures_reference_1.delai_facture, + v_factures_reference_1.code_vente, + v_factures_reference_1.date_vente, + v_factures_reference_1.nb_factures, + v_factures_reference_1.nb_calcules, + v_factures_reference_1.nb_non_calcules, + v_factures_reference_1.nb_non_calcules_groupes, + v_factures_reference_1.nb_non_calcules_non_groupes, + v_factures_reference_1.nb_factures_regularisation, + v_factures_reference_1.nb_rejets, + v_factures_reference_1.code_expedie_0, + v_factures_reference_1.code_expedie_1, + v_factures_reference_1.code_expedie_2, + v_factures_reference_1.date_expedition, + v_factures_reference_1.date_expedition_0, + v_factures_reference_1.date_expedition_1, + v_factures_reference_1.date_expedition_2, + v_factures_reference_1.no_bordereau_0, + v_factures_reference_1.no_bordereau_1, + v_factures_reference_1.no_bordereau_2, + v_factures_reference_1.delai_expedition, + v_factures_reference_1.delai_expedition_0, + v_factures_reference_1.delai_expedition_1, + v_factures_reference_1.delai_expedition_2, + v_factures_reference_1.nb_non_expedie, + v_factures_reference_1.nb_non_expedie_c, + v_factures_reference_1.nb_non_expedie_h, + v_factures_reference_1.nb_non_expedie_0, + v_factures_reference_1.nb_non_expedie_0_c, + v_factures_reference_1.nb_non_expedie_0_h, + v_factures_reference_1.nb_non_expedie_1, + v_factures_reference_1.nb_non_expedie_1_c, + v_factures_reference_1.nb_non_expedie_1_h, + v_factures_reference_1.nb_non_expedie_2, + v_factures_reference_1.nb_non_expedie_2_c, + v_factures_reference_1.nb_non_expedie_2_h, + v_factures_reference_1.montant_non_expedie, + v_factures_reference_1.montant_non_expedie_c, + v_factures_reference_1.montant_non_expedie_h, + v_factures_reference_1.montant_non_expedie_0, + v_factures_reference_1.montant_non_expedie_0_c, + v_factures_reference_1.montant_non_expedie_0_h, + v_factures_reference_1.montant_non_expedie_1, + v_factures_reference_1.montant_non_expedie_1_c, + v_factures_reference_1.montant_non_expedie_1_h, + v_factures_reference_1.montant_non_expedie_2, + v_factures_reference_1.montant_non_expedie_2_c, + v_factures_reference_1.montant_non_expedie_2_h, + v_factures_reference_1.montant_facture, + v_factures_reference_1.montant_facture_c, + v_factures_reference_1.montant_facture_h, + v_factures_reference_1.montant_facture_0, + v_factures_reference_1.montant_facture_0_c, + v_factures_reference_1.montant_facture_0_h, + v_factures_reference_1.montant_facture_1, + v_factures_reference_1.montant_facture_1_c, + v_factures_reference_1.montant_facture_1_h, + v_factures_reference_1.montant_facture_2, + v_factures_reference_1.montant_facture_2_c, + v_factures_reference_1.montant_facture_2_h, + v_factures_reference_1.montant_facture_c_actes_inclus_dans_sejour, + v_factures_reference_1.montant_facture_h_actes_inclus_dans_sejour, + v_factures_reference_1.montant_encours, + v_factures_reference_1.montant_encours_c, + v_factures_reference_1.montant_encours_h, + v_factures_reference_1.montant_encours_0, + v_factures_reference_1.montant_encours_0_c, + v_factures_reference_1.montant_encours_0_h, + v_factures_reference_1.montant_encours_1, + v_factures_reference_1.montant_encours_1_c, + v_factures_reference_1.montant_encours_1_h, + v_factures_reference_1.montant_encours_2, + v_factures_reference_1.montant_encours_2_c, + v_factures_reference_1.montant_encours_2_h, + v_factures_reference_1.montant_encours_groupes, + v_factures_reference_1.montant_encours_groupes_c, + v_factures_reference_1.montant_encours_groupes_h, + v_factures_reference_1.montant_encours_groupes_0, + v_factures_reference_1.montant_encours_groupes_0_c, + v_factures_reference_1.montant_encours_groupes_0_h, + v_factures_reference_1.montant_encours_groupes_1, + v_factures_reference_1.montant_encours_groupes_1_c, + v_factures_reference_1.montant_encours_groupes_1_h, + v_factures_reference_1.montant_encours_groupes_2, + v_factures_reference_1.montant_encours_groupes_2_c, + v_factures_reference_1.montant_encours_groupes_2_h, + v_factures_reference_1.montant_encours_non_groupes, + v_factures_reference_1.montant_encours_non_groupes_c, + v_factures_reference_1.montant_encours_non_groupes_h, + v_factures_reference_1.montant_encours_non_groupes_0, + v_factures_reference_1.montant_encours_non_groupes_0_c, + v_factures_reference_1.montant_encours_non_groupes_0_h, + v_factures_reference_1.montant_encours_non_groupes_1, + v_factures_reference_1.montant_encours_non_groupes_1_c, + v_factures_reference_1.montant_encours_non_groupes_1_h, + v_factures_reference_1.montant_encours_non_groupes_2, + v_factures_reference_1.montant_encours_non_groupes_2_c, + v_factures_reference_1.montant_encours_non_groupes_2_h, + v_factures_reference_1.montant_non_calcules, + v_factures_reference_1.montant_non_calcules_c, + v_factures_reference_1.montant_non_calcules_h, + v_factures_reference_1.montant_non_calcules_0, + v_factures_reference_1.montant_non_calcules_0_c, + v_factures_reference_1.montant_non_calcules_0_h, + v_factures_reference_1.montant_non_calcules_1, + v_factures_reference_1.montant_non_calcules_1_c, + v_factures_reference_1.montant_non_calcules_1_h, + v_factures_reference_1.montant_non_calcules_2, + v_factures_reference_1.montant_non_calcules_2_c, + v_factures_reference_1.montant_non_calcules_2_h, + v_factures_reference_1.montant_non_calcules_groupes, + v_factures_reference_1.montant_non_calcules_groupes_c, + v_factures_reference_1.montant_non_calcules_groupes_h, + v_factures_reference_1.montant_non_calcules_groupes_0, + v_factures_reference_1.montant_non_calcules_groupes_0_c, + v_factures_reference_1.montant_non_calcules_groupes_0_h, + v_factures_reference_1.montant_non_calcules_groupes_1, + v_factures_reference_1.montant_non_calcules_groupes_1_c, + v_factures_reference_1.montant_non_calcules_groupes_1_h, + v_factures_reference_1.montant_non_calcules_groupes_2, + v_factures_reference_1.montant_non_calcules_groupes_2_c, + v_factures_reference_1.montant_non_calcules_groupes_2_h, + v_factures_reference_1.montant_non_calcules_non_groupes, + v_factures_reference_1.montant_non_calcules_non_groupes_c, + v_factures_reference_1.montant_non_calcules_non_groupes_h, + v_factures_reference_1.montant_non_calcules_non_groupes_0, + v_factures_reference_1.montant_non_calcules_non_groupes_0_c, + v_factures_reference_1.montant_non_calcules_non_groupes_0_h, + v_factures_reference_1.montant_non_calcules_non_groupes_1, + v_factures_reference_1.montant_non_calcules_non_groupes_1_c, + v_factures_reference_1.montant_non_calcules_non_groupes_1_h, + v_factures_reference_1.montant_non_calcules_non_groupes_2, + v_factures_reference_1.montant_non_calcules_non_groupes_2_c, + v_factures_reference_1.montant_non_calcules_non_groupes_2_h, + v_factures_reference_1.montant_comptabilise, + v_factures_reference_1.montant_comptabilise_c, + v_factures_reference_1.montant_comptabilise_h, + v_factures_reference_1.montant_comptabilise_0, + v_factures_reference_1.montant_comptabilise_0_c, + v_factures_reference_1.montant_comptabilise_0_h, + v_factures_reference_1.montant_comptabilise_1, + v_factures_reference_1.montant_comptabilise_1_c, + v_factures_reference_1.montant_comptabilise_1_h, + v_factures_reference_1.montant_comptabilise_2, + v_factures_reference_1.montant_comptabilise_2_c, + v_factures_reference_1.montant_comptabilise_2_h, + v_factures_reference_1.montant_comptabilise_budget_global_c, + v_factures_reference_1.montant_regle, + v_factures_reference_1.montant_regle_c, + v_factures_reference_1.montant_regle_h, + v_factures_reference_1.montant_regle_0, + v_factures_reference_1.montant_regle_0_c, + v_factures_reference_1.montant_regle_0_h, + v_factures_reference_1.montant_regle_1, + v_factures_reference_1.montant_regle_1_c, + v_factures_reference_1.montant_regle_1_h, + v_factures_reference_1.montant_regle_2, + v_factures_reference_1.montant_regle_2_c, + v_factures_reference_1.montant_regle_2_h, + v_factures_reference_1.date_solde, + v_factures_reference_1.date_solde_c, + v_factures_reference_1.date_solde_h, + v_factures_reference_1.date_solde_0, + v_factures_reference_1.date_solde_0_c, + v_factures_reference_1.date_solde_0_h, + v_factures_reference_1.date_solde_1, + v_factures_reference_1.date_solde_1_c, + v_factures_reference_1.date_solde_1_h, + v_factures_reference_1.date_solde_2, + v_factures_reference_1.date_solde_2_c, + v_factures_reference_1.date_solde_2_h, + v_factures_reference_1.delai_solde, + v_factures_reference_1.delai_solde_c, + v_factures_reference_1.delai_solde_h, + v_factures_reference_1.delai_solde_0, + v_factures_reference_1.delai_solde_0_c, + v_factures_reference_1.delai_solde_0_h, + v_factures_reference_1.delai_solde_1, + v_factures_reference_1.delai_solde_1_c, + v_factures_reference_1.delai_solde_1_h, + v_factures_reference_1.delai_solde_2, + v_factures_reference_1.delai_solde_2_c, + v_factures_reference_1.delai_solde_2_h, + v_factures_reference_1.nb_non_solde, + v_factures_reference_1.nb_non_solde_c, + v_factures_reference_1.nb_non_solde_h, + v_factures_reference_1.nb_non_solde_0, + v_factures_reference_1.nb_non_solde_0_c, + v_factures_reference_1.nb_non_solde_0_h, + v_factures_reference_1.nb_non_solde_1, + v_factures_reference_1.nb_non_solde_1_c, + v_factures_reference_1.nb_non_solde_1_h, + v_factures_reference_1.nb_non_solde_2, + v_factures_reference_1.nb_non_solde_2_c, + v_factures_reference_1.nb_non_solde_2_h, + v_factures_reference_1.montant_solde, + v_factures_reference_1.montant_solde_c, + v_factures_reference_1.montant_solde_h, + v_factures_reference_1.montant_solde_0, + v_factures_reference_1.montant_solde_0_c, + v_factures_reference_1.montant_solde_0_h, + v_factures_reference_1.montant_solde_1, + v_factures_reference_1.montant_solde_1_c, + v_factures_reference_1.montant_solde_1_h, + v_factures_reference_1.montant_solde_2, + v_factures_reference_1.montant_solde_2_c, + v_factures_reference_1.montant_solde_2_h, + v_factures_reference_1.nb_non_cloture, + v_factures_reference_1.nb_non_cloture_c, + v_factures_reference_1.nb_non_cloture_h, + v_factures_reference_1.nb_non_cloture_0, + v_factures_reference_1.nb_non_cloture_0_c, + v_factures_reference_1.nb_non_cloture_0_h, + v_factures_reference_1.nb_non_cloture_1, + v_factures_reference_1.nb_non_cloture_1_c, + v_factures_reference_1.nb_non_cloture_1_h, + v_factures_reference_1.nb_non_cloture_2, + v_factures_reference_1.nb_non_cloture_2_c, + v_factures_reference_1.nb_non_cloture_2_h, + v_factures_reference_1.nb_rubriques_c, + v_factures_reference_1.nb_rubriques_h, + v_factures_reference_1.pole_id + FROM activite.v_factures_reference_1 + JOIN activite.v_sejours_1 ON v_factures_reference_1.no_sejour = v_sejours_1.no_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_factures_reference_tiers_1.yaml b/db/schema2/views/v_factures_reference_tiers_1.yaml new file mode 100644 index 0000000..adf0523 --- /dev/null +++ b/db/schema2/views/v_factures_reference_tiers_1.yaml @@ -0,0 +1,563 @@ +src: | + SELECT p_factures_reference_tiers.sejour_id, + p_factures_reference_tiers.no_sejour, + p_factures_reference_tiers.date_entree, + p_factures_reference_tiers.date_sortie, + p_factures_reference_tiers.code_sorti, + p_factures_reference_tiers.facture_reference_id, + p_factures_reference_tiers.no_facture_reference, + p_factures_reference_tiers.type_t2a, + p_factures_reference_tiers.date_debut_facture, + p_factures_reference_tiers.date_fin_facture, + p_factures_reference_tiers.date_groupage, + p_factures_reference_tiers.retard_groupage, + p_factures_reference_tiers.delai_groupage, + p_factures_reference_tiers.nb_groupe, + p_factures_reference_tiers.nb_non_groupe, + p_factures_reference_tiers.nb_calculable, + CASE + WHEN p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id = 0 AND p_factures_reference_tiers.code_facture <> '1'::text THEN 1 + ELSE 0 + END AS nb_non_groupes, + p_factures_reference_tiers.ghs_id, + p_factures_reference_tiers.ghs_bebe1_id, + p_factures_reference_tiers.ghs_bebe2_id, + p_factures_reference_tiers.ghs_bebe3_id, + p_factures_reference_tiers.tiers_payant_id, + t_tiers_payant.code AS tiers_payant_code, + t_tiers_payant.texte_court AS tiers_payant_texte, + t_tiers_payant.type_tiers_payant_id, + t_tiers_payant.type_tiers_payant AS type_tiers_payant_code, + t_tiers_payant.type_tiers_payant_texte, + t_tiers_payant.grand_regime_id AS tiers_payant_grand_regime_id, + t_tiers_payant.grand_regime_code AS tiers_payant_grand_regime_code, + t_tiers_payant.grand_regime_texte AS tiers_payant_grand_regime_texte, + t_tiers_payant.section_id AS tiers_payant_section_id, + t_tiers_payant.section_code AS tiers_payant_section_code, + t_tiers_payant.section_texte AS tiers_payant_section_texte, + p_factures_reference_tiers.code_facture, + p_factures_reference_tiers.date_facture, + p_factures_reference_tiers.delai_facture, + p_factures_reference_tiers.retard_facture, + p_factures_reference_tiers.code_vente, + p_factures_reference_tiers.date_vente, + p_factures_reference_tiers.nb_factures, + CASE + WHEN p_factures_reference_tiers.nb_non_calcules = 0 THEN 1 + ELSE 0 + END AS nb_calcules, + p_factures_reference_tiers.nb_non_calcules, + CASE + WHEN p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar THEN p_factures_reference_tiers.nb_non_calcules + ELSE 0 + END AS nb_non_calcules_groupes, + CASE + WHEN p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar THEN 0 + ELSE p_factures_reference_tiers.nb_non_calcules + END AS nb_non_calcules_non_groupes, + p_factures_reference_tiers.nb_factures_regularisation, + p_factures_reference_tiers.nb_rejets, + p_factures_reference_tiers.code_expedie_0, + p_factures_reference_tiers.code_expedie_1, + p_factures_reference_tiers.code_expedie_2, + p_factures_reference_tiers.date_expedition, + p_factures_reference_tiers.date_expedition_0, + p_factures_reference_tiers.date_expedition_1, + p_factures_reference_tiers.date_expedition_2, + p_factures_reference_tiers.no_bordereau_0, + p_factures_reference_tiers.no_bordereau_1, + p_factures_reference_tiers.no_bordereau_2, + p_factures_reference_tiers.delai_expedition, + p_factures_reference_tiers.delai_expedition_0, + p_factures_reference_tiers.delai_expedition_1, + p_factures_reference_tiers.delai_expedition_2, + p_factures_reference_tiers.nb_non_expedie, + p_factures_reference_tiers.nb_non_expedie_c, + p_factures_reference_tiers.nb_non_expedie_h, + p_factures_reference_tiers.nb_non_expedie_0, + p_factures_reference_tiers.nb_non_expedie_0_c, + p_factures_reference_tiers.nb_non_expedie_0_h, + p_factures_reference_tiers.nb_non_expedie_1, + p_factures_reference_tiers.nb_non_expedie_1_c, + p_factures_reference_tiers.nb_non_expedie_1_h, + p_factures_reference_tiers.nb_non_expedie_2, + p_factures_reference_tiers.nb_non_expedie_2_c, + p_factures_reference_tiers.nb_non_expedie_2_h, + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_0 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_0_c - p_factures_reference_tiers.montant_regle_0_c + p_factures_reference_tiers.montant_comptabilise_0_h - p_factures_reference_tiers.montant_regle_0_h + ELSE 0::numeric + END + + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_1 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_1_c - p_factures_reference_tiers.montant_regle_1_c + p_factures_reference_tiers.montant_comptabilise_1_h - p_factures_reference_tiers.montant_regle_1_h + ELSE 0::numeric + END + + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_2 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_2_c - p_factures_reference_tiers.montant_regle_2_c + p_factures_reference_tiers.montant_comptabilise_2_h - p_factures_reference_tiers.montant_regle_2_h + ELSE 0::numeric + END AS montant_non_expedie, + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_0 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_0_c - p_factures_reference_tiers.montant_regle_0_c + ELSE 0::numeric + END + + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_1 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_1_c - p_factures_reference_tiers.montant_regle_1_c + ELSE 0::numeric + END + + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_2 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_2_c - p_factures_reference_tiers.montant_regle_2_c + ELSE 0::numeric + END AS montant_non_expedie_c, + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_0 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_0_h - p_factures_reference_tiers.montant_regle_0_h + ELSE 0::numeric + END + + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_1 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_1_h - p_factures_reference_tiers.montant_regle_1_h + ELSE 0::numeric + END + + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_2 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_2_h - p_factures_reference_tiers.montant_regle_2_h + ELSE 0::numeric + END AS montant_non_expedie_h, + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_0 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_0 - p_factures_reference_tiers.montant_regle_0 + ELSE 0::numeric + END AS montant_non_expedie_0, + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_0 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_0_c - p_factures_reference_tiers.montant_regle_0_c + ELSE 0::numeric + END AS montant_non_expedie_0_c, + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_0 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_0_h - p_factures_reference_tiers.montant_regle_0_h + ELSE 0::numeric + END AS montant_non_expedie_0_h, + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_1 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_1 - p_factures_reference_tiers.montant_regle_1 + ELSE 0::numeric + END AS montant_non_expedie_1, + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_1 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_1_c - p_factures_reference_tiers.montant_regle_1_c + ELSE 0::numeric + END AS montant_non_expedie_1_c, + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_1 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_1_h - p_factures_reference_tiers.montant_regle_1_h + ELSE 0::numeric + END AS montant_non_expedie_1_h, + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_2 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_2 - p_factures_reference_tiers.montant_regle_2 + ELSE 0::numeric + END AS montant_non_expedie_2, + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_2 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_2_c - p_factures_reference_tiers.montant_regle_2_c + ELSE 0::numeric + END AS montant_non_expedie_2_c, + CASE + WHEN p_factures_reference_tiers.nb_non_expedie_2 = 1::numeric THEN p_factures_reference_tiers.montant_comptabilise_2_h - p_factures_reference_tiers.montant_regle_2_h + ELSE 0::numeric + END AS montant_non_expedie_2_h, + p_factures_reference_tiers.montant_facture, + p_factures_reference_tiers.montant_facture_c, + p_factures_reference_tiers.montant_facture_h, + p_factures_reference_tiers.montant_facture_0, + p_factures_reference_tiers.montant_facture_0_c, + p_factures_reference_tiers.montant_facture_0_h, + p_factures_reference_tiers.montant_facture_1, + p_factures_reference_tiers.montant_facture_1_c, + p_factures_reference_tiers.montant_facture_1_h, + p_factures_reference_tiers.montant_facture_2, + p_factures_reference_tiers.montant_facture_2_c, + p_factures_reference_tiers.montant_facture_2_h, + p_factures_reference_tiers.montant_facture_c_actes_inclus_dans_sejour, + p_factures_reference_tiers.montant_facture_h_actes_inclus_dans_sejour, + p_factures_reference_tiers.montant_encours, + p_factures_reference_tiers.montant_encours_c, + p_factures_reference_tiers.montant_encours_h, + p_factures_reference_tiers.montant_encours_0, + p_factures_reference_tiers.montant_encours_0_c, + p_factures_reference_tiers.montant_encours_0_h, + p_factures_reference_tiers.montant_encours_1, + p_factures_reference_tiers.montant_encours_1_c, + p_factures_reference_tiers.montant_encours_1_h, + p_factures_reference_tiers.montant_encours_2, + p_factures_reference_tiers.montant_encours_2_c, + p_factures_reference_tiers.montant_encours_2_h, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 0::numeric THEN p_factures_reference_tiers.montant_encours + ELSE 0::numeric + END AS montant_encours_groupes, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 0::numeric THEN p_factures_reference_tiers.montant_encours_c + ELSE 0::numeric + END AS montant_encours_groupes_c, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 0::numeric THEN p_factures_reference_tiers.montant_encours_h + ELSE 0::numeric + END AS montant_encours_groupes_h, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 0::numeric THEN p_factures_reference_tiers.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_groupes_0, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 0::numeric THEN p_factures_reference_tiers.montant_encours_0_c + ELSE 0::numeric + END AS montant_encours_groupes_0_c, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 0::numeric THEN p_factures_reference_tiers.montant_encours_0_h + ELSE 0::numeric + END AS montant_encours_groupes_0_h, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 0::numeric THEN p_factures_reference_tiers.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_groupes_1, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 0::numeric THEN p_factures_reference_tiers.montant_encours_1_c + ELSE 0::numeric + END AS montant_encours_groupes_1_c, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 0::numeric THEN p_factures_reference_tiers.montant_encours_1_h + ELSE 0::numeric + END AS montant_encours_groupes_1_h, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 0::numeric THEN p_factures_reference_tiers.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_groupes_2, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 0::numeric THEN p_factures_reference_tiers.montant_encours_2_c + ELSE 0::numeric + END AS montant_encours_groupes_2_c, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 0::numeric THEN p_factures_reference_tiers.montant_encours_2_h + ELSE 0::numeric + END AS montant_encours_groupes_2_h, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 1::numeric THEN p_factures_reference_tiers.montant_encours + ELSE 0::numeric + END AS montant_encours_non_groupes, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 1::numeric THEN p_factures_reference_tiers.montant_encours_c + ELSE 0::numeric + END AS montant_encours_non_groupes_c, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 1::numeric THEN p_factures_reference_tiers.montant_encours_h + ELSE 0::numeric + END AS montant_encours_non_groupes_h, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 1::numeric THEN p_factures_reference_tiers.montant_encours_0 + ELSE 0::numeric + END AS montant_encours_non_groupes_0, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 1::numeric THEN p_factures_reference_tiers.montant_encours_0_c + ELSE 0::numeric + END AS montant_encours_non_groupes_0_c, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 1::numeric THEN p_factures_reference_tiers.montant_encours_0_h + ELSE 0::numeric + END AS montant_encours_non_groupes_0_h, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 1::numeric THEN p_factures_reference_tiers.montant_encours_1 + ELSE 0::numeric + END AS montant_encours_non_groupes_1, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 1::numeric THEN p_factures_reference_tiers.montant_encours_1_c + ELSE 0::numeric + END AS montant_encours_non_groupes_1_c, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 1::numeric THEN p_factures_reference_tiers.montant_encours_1_h + ELSE 0::numeric + END AS montant_encours_non_groupes_1_h, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 1::numeric THEN p_factures_reference_tiers.montant_encours_2 + ELSE 0::numeric + END AS montant_encours_non_groupes_2, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 1::numeric THEN p_factures_reference_tiers.montant_encours_2_c + ELSE 0::numeric + END AS montant_encours_non_groupes_2_c, + CASE + WHEN p_factures_reference_tiers.nb_non_groupe = 1::numeric THEN p_factures_reference_tiers.montant_encours_2_h + ELSE 0::numeric + END AS montant_encours_non_groupes_2_h, + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture + p_factures_reference_tiers.montant_encours + ELSE 0::numeric + END AS montant_non_calcules, + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_c + p_factures_reference_tiers.montant_encours_c + ELSE 0::numeric + END AS montant_non_calcules_c, + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_h + p_factures_reference_tiers.montant_encours_h + ELSE 0::numeric + END AS montant_non_calcules_h, + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_0 + p_factures_reference_tiers.montant_encours_0 + ELSE 0::numeric + END AS montant_non_calcules_0, + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_0_c + p_factures_reference_tiers.montant_encours_0_c + ELSE 0::numeric + END AS montant_non_calcules_0_c, + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_0_h + p_factures_reference_tiers.montant_encours_0_h + ELSE 0::numeric + END AS montant_non_calcules_0_h, + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_1 + p_factures_reference_tiers.montant_encours_1 + ELSE 0::numeric + END AS montant_non_calcules_1, + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_1_c + p_factures_reference_tiers.montant_encours_1_c + ELSE 0::numeric + END AS montant_non_calcules_1_c, + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_1_h + p_factures_reference_tiers.montant_encours_1_h + ELSE 0::numeric + END AS montant_non_calcules_1_h, + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_2 + p_factures_reference_tiers.montant_encours_2 + ELSE 0::numeric + END AS montant_non_calcules_2, + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_2_c + p_factures_reference_tiers.montant_encours_2_c + ELSE 0::numeric + END AS montant_non_calcules_2_c, + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_2_h + p_factures_reference_tiers.montant_encours_2_h + ELSE 0::numeric + END AS montant_non_calcules_2_h, + CASE + WHEN (p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar) AND p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture + p_factures_reference_tiers.montant_encours + ELSE 0::numeric + END AS montant_non_calcules_groupes, + CASE + WHEN (p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar) AND p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_c + p_factures_reference_tiers.montant_encours_c + ELSE 0::numeric + END AS montant_non_calcules_groupes_c, + CASE + WHEN (p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar) AND p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_h + p_factures_reference_tiers.montant_encours_h + ELSE 0::numeric + END AS montant_non_calcules_groupes_h, + CASE + WHEN (p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar) AND p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture + p_factures_reference_tiers.montant_encours_0 + ELSE 0::numeric + END AS montant_non_calcules_groupes_0, + CASE + WHEN (p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar) AND p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_c + p_factures_reference_tiers.montant_encours_0_c + ELSE 0::numeric + END AS montant_non_calcules_groupes_0_c, + CASE + WHEN (p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar) AND p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_h + p_factures_reference_tiers.montant_encours_0_h + ELSE 0::numeric + END AS montant_non_calcules_groupes_0_h, + CASE + WHEN (p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar) AND p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture + p_factures_reference_tiers.montant_encours_1 + ELSE 0::numeric + END AS montant_non_calcules_groupes_1, + CASE + WHEN (p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar) AND p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_c + p_factures_reference_tiers.montant_encours_1_c + ELSE 0::numeric + END AS montant_non_calcules_groupes_1_c, + CASE + WHEN (p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar) AND p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_h + p_factures_reference_tiers.montant_encours_1_h + ELSE 0::numeric + END AS montant_non_calcules_groupes_1_h, + CASE + WHEN (p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar) AND p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture + p_factures_reference_tiers.montant_encours_2 + ELSE 0::numeric + END AS montant_non_calcules_groupes_2, + CASE + WHEN (p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar) AND p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_c + p_factures_reference_tiers.montant_encours_2_c + ELSE 0::numeric + END AS montant_non_calcules_groupes_2_c, + CASE + WHEN (p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar) AND p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_h + p_factures_reference_tiers.montant_encours_2_h + ELSE 0::numeric + END AS montant_non_calcules_groupes_2_h, + CASE + WHEN p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture + p_factures_reference_tiers.montant_encours + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes, + CASE + WHEN p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_c + p_factures_reference_tiers.montant_encours_c + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_c, + CASE + WHEN p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_h + p_factures_reference_tiers.montant_encours_h + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_h, + CASE + WHEN p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_0 + p_factures_reference_tiers.montant_encours_0 + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_0, + CASE + WHEN p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_0_c + p_factures_reference_tiers.montant_encours_0_c + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_0_c, + CASE + WHEN p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_0_h + p_factures_reference_tiers.montant_encours_0_h + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_0_h, + CASE + WHEN p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_1 + p_factures_reference_tiers.montant_encours_1 + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_1, + CASE + WHEN p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_1_c + p_factures_reference_tiers.montant_encours_1_c + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_1_c, + CASE + WHEN p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_1_h + p_factures_reference_tiers.montant_encours_1_h + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_1_h, + CASE + WHEN p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_2 + p_factures_reference_tiers.montant_encours_2 + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_2, + CASE + WHEN p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_2_c + p_factures_reference_tiers.montant_encours_2_c + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_2_c, + CASE + WHEN p_factures_reference_tiers.type_t2a = '1'::bpchar AND p_factures_reference_tiers.ghs_id <> 0 OR p_factures_reference_tiers.type_t2a <> '1'::bpchar THEN 0::numeric + ELSE + CASE + WHEN p_factures_reference_tiers.nb_non_calcules > 0 THEN p_factures_reference_tiers.montant_facture_2_h + p_factures_reference_tiers.montant_encours_2_h + ELSE 0::numeric + END + END AS montant_non_calcules_non_groupes_2_h, + p_factures_reference_tiers.montant_comptabilise, + p_factures_reference_tiers.montant_comptabilise_c, + p_factures_reference_tiers.montant_comptabilise_h, + p_factures_reference_tiers.montant_comptabilise_0, + p_factures_reference_tiers.montant_comptabilise_0_c, + p_factures_reference_tiers.montant_comptabilise_0_h, + p_factures_reference_tiers.montant_comptabilise_1, + p_factures_reference_tiers.montant_comptabilise_1_c, + p_factures_reference_tiers.montant_comptabilise_1_h, + p_factures_reference_tiers.montant_comptabilise_2, + p_factures_reference_tiers.montant_comptabilise_2_c, + p_factures_reference_tiers.montant_comptabilise_2_h, + p_factures_reference_tiers.montant_comptabilise_budget_global_c, + p_factures_reference_tiers.montant_regle, + p_factures_reference_tiers.montant_regle_c, + p_factures_reference_tiers.montant_regle_h, + p_factures_reference_tiers.montant_regle_0, + p_factures_reference_tiers.montant_regle_0_c, + p_factures_reference_tiers.montant_regle_0_h, + p_factures_reference_tiers.montant_regle_1, + p_factures_reference_tiers.montant_regle_1_c, + p_factures_reference_tiers.montant_regle_1_h, + p_factures_reference_tiers.montant_regle_2, + p_factures_reference_tiers.montant_regle_2_c, + p_factures_reference_tiers.montant_regle_2_h, + p_factures_reference_tiers.date_solde, + p_factures_reference_tiers.date_solde_c, + p_factures_reference_tiers.date_solde_h, + p_factures_reference_tiers.date_solde_0, + p_factures_reference_tiers.date_solde_0_c, + p_factures_reference_tiers.date_solde_0_h, + p_factures_reference_tiers.date_solde_1, + p_factures_reference_tiers.date_solde_1_c, + p_factures_reference_tiers.date_solde_1_h, + p_factures_reference_tiers.date_solde_2, + p_factures_reference_tiers.date_solde_2_c, + p_factures_reference_tiers.date_solde_2_h, + p_factures_reference_tiers.delai_solde, + p_factures_reference_tiers.delai_solde_c, + p_factures_reference_tiers.delai_solde_h, + p_factures_reference_tiers.delai_solde_0, + p_factures_reference_tiers.delai_solde_0_c, + p_factures_reference_tiers.delai_solde_0_h, + p_factures_reference_tiers.delai_solde_1, + p_factures_reference_tiers.delai_solde_1_c, + p_factures_reference_tiers.delai_solde_1_h, + p_factures_reference_tiers.delai_solde_2, + p_factures_reference_tiers.delai_solde_2_c, + p_factures_reference_tiers.delai_solde_2_h, + p_factures_reference_tiers.nb_non_solde, + p_factures_reference_tiers.nb_non_solde_c, + p_factures_reference_tiers.nb_non_solde_h, + p_factures_reference_tiers.nb_non_solde_0, + p_factures_reference_tiers.nb_non_solde_0_c, + p_factures_reference_tiers.nb_non_solde_0_h, + p_factures_reference_tiers.nb_non_solde_1, + p_factures_reference_tiers.nb_non_solde_1_c, + p_factures_reference_tiers.nb_non_solde_1_h, + p_factures_reference_tiers.nb_non_solde_2, + p_factures_reference_tiers.nb_non_solde_2_c, + p_factures_reference_tiers.nb_non_solde_2_h, + p_factures_reference_tiers.montant_comptabilise - p_factures_reference_tiers.montant_regle AS montant_solde, + p_factures_reference_tiers.montant_comptabilise_c - p_factures_reference_tiers.montant_regle_c AS montant_solde_c, + p_factures_reference_tiers.montant_comptabilise_h - p_factures_reference_tiers.montant_regle_h AS montant_solde_h, + p_factures_reference_tiers.montant_comptabilise_0 - p_factures_reference_tiers.montant_regle_0 AS montant_solde_0, + p_factures_reference_tiers.montant_comptabilise_0_c - p_factures_reference_tiers.montant_regle_0_c AS montant_solde_0_c, + p_factures_reference_tiers.montant_comptabilise_0_h - p_factures_reference_tiers.montant_regle_0_h AS montant_solde_0_h, + p_factures_reference_tiers.montant_comptabilise_1 - p_factures_reference_tiers.montant_regle_1 AS montant_solde_1, + p_factures_reference_tiers.montant_comptabilise_1_c - p_factures_reference_tiers.montant_regle_1_c AS montant_solde_1_c, + p_factures_reference_tiers.montant_comptabilise_1_h - p_factures_reference_tiers.montant_regle_1_h AS montant_solde_1_h, + p_factures_reference_tiers.montant_comptabilise_2 - p_factures_reference_tiers.montant_regle_2 AS montant_solde_2, + p_factures_reference_tiers.montant_comptabilise_2_c - p_factures_reference_tiers.montant_regle_2_c AS montant_solde_2_c, + p_factures_reference_tiers.montant_comptabilise_2_h - p_factures_reference_tiers.montant_regle_2_h AS montant_solde_2_h, + p_factures_reference_tiers.nb_non_cloture, + p_factures_reference_tiers.nb_non_cloture_c, + p_factures_reference_tiers.nb_non_cloture_h, + p_factures_reference_tiers.nb_non_cloture_0, + p_factures_reference_tiers.nb_non_cloture_0_c, + p_factures_reference_tiers.nb_non_cloture_0_h, + p_factures_reference_tiers.nb_non_cloture_1, + p_factures_reference_tiers.nb_non_cloture_1_c, + p_factures_reference_tiers.nb_non_cloture_1_h, + p_factures_reference_tiers.nb_non_cloture_2, + p_factures_reference_tiers.nb_non_cloture_2_c, + p_factures_reference_tiers.nb_non_cloture_2_h, + p_factures_reference_tiers.motif_non_facturation_id, + p_factures_reference_tiers.motif_non_facturation_comment, + p_factures_reference_tiers.nb_non_calcules_bg, + p_factures_reference_tiers.nb_non_calcules_horsbg, + p_factures_reference_tiers.pole_sortie_id AS pole_id + FROM activite.p_factures_reference_tiers + JOIN activite.t_tiers_payant ON p_factures_reference_tiers.tiers_payant_id = t_tiers_payant.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_rejets_1.yaml b/db/schema2/views/v_factures_rejets_1.yaml new file mode 100644 index 0000000..58812b5 --- /dev/null +++ b/db/schema2/views/v_factures_rejets_1.yaml @@ -0,0 +1,13 @@ +src: | + SELECT p_factures_rejets.no_facture, + p_factures_rejets.facture_id, + p_factures_rejets.date_rejet, + p_factures_rejets.rejet_id, + p_factures_rejets.rejet_code, + t_rejets_noemie.texte AS rejet_texte, + t_rejets_noemie.section_id AS rejet_section_id, + t_rejets_noemie.section_code AS rejet_section_code, + t_rejets_noemie.section_texte AS rejet_section_texte + FROM activite.p_factures_rejets, + activite.t_rejets_noemie + WHERE p_factures_rejets.rejet_id = t_rejets_noemie.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_soldes_c_1.yaml b/db/schema2/views/v_factures_soldes_c_1.yaml new file mode 100644 index 0000000..62759d5 --- /dev/null +++ b/db/schema2/views/v_factures_soldes_c_1.yaml @@ -0,0 +1,128 @@ +src: | + SELECT p_sejours.finess, + p_sejours.no_patient, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_sejours.no_sejour, + p_factures.no_facture, + p_sejours.code_sexe, + CASE + WHEN p_sejours.code_sexe = '1'::bpchar THEN 'M'::text + WHEN p_sejours.code_sexe = '2'::bpchar THEN 'F'::text + ELSE p_sejours.type_sejour + END AS sexe_texte_court, + p_sejours.age, + p_sejours.type_sejour, + CASE + WHEN p_sejours.type_sejour = '1'::text THEN 'Hospitalisés'::text + WHEN p_sejours.type_sejour = '2'::text THEN 'Ambulatoires'::text + WHEN p_sejours.type_sejour = '3'::text THEN 'Externes'::text + WHEN p_sejours.type_sejour = '4'::text THEN 'Long séjours'::text + WHEN p_sejours.type_sejour = '5'::text THEN 'Séances'::text + ELSE p_sejours.type_sejour + END AS type_sejour_texte, + to_char(p_sejours.date_entree::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_entree, + p_sejours.date_entree, + p_sejours.code_sorti, + to_char(p_sejours.date_sortie::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_sortie, + p_sejours.date_sortie, + to_char(p_factures.date_facture::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_facture, + p_factures.date_facture, + to_char(p_factures.date_vente::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_vente, + p_factures.date_vente, + to_char(p_factures_soldes_c.date_comptable::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_comptable, + p_factures_soldes_c.date_comptable, + p_sejours.ghs_id, + t_ghs_c.ghs_code_text AS ghs_code, + t_ghs_c.ghs_texte, + p_sejours.ghm_id, + t_ghm_c.ghm_code, + t_ghm_c.ghm_texte, + t_ghm_c.ghm5_id, + t_ghm_c.ghm5_code, + t_ghm_c.ghm5_texte, + t_ghm_c.severite_ghm_id, + t_ghm_c.severite_ghm_code, + t_ghm_c.severite_ghm_texte, + t_ghm_c.cas_id, + t_ghm_c.cas_code, + t_ghm_c.cas_texte, + t_ghm_c.mco_id, + t_ghm_c.mco_code, + t_ghm_c.mco_texte, + t_ghm_c.cmd_id, + t_ghm_c.cmd_code, + t_ghm_c.cmd_texte, + t_ghm_c.mco_id AS mcos_id, + t_ghm_c.mco_code AS mcos_code, + t_ghm_c.mco_texte AS mcos_texte, + t_ghm_c.ghm_section_id, + t_ghm_c.ghm_section_code, + t_ghm_c.ghm_section_texte, + p_factures.tiers_payant_0_id, + p_factures.tiers_payant_1_id, + p_factures.tiers_payant_2_id, + p_factures.tiers_payant_22_id, + p_sejours.medecin_sejour_id AS medecin_adm_sejour_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_sejour_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_sejour_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_sejour_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_sejour_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_sejour_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_sejour_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_sejour_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_sejour_id, + t_medecins_administratifs_c.nom AS medecin_sejour_nom, + t_medecins_administratifs_c.prenom AS medecin_sejour_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_sejour_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_sejour_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_sejour_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_sejour_specialite_texte, + p_sejours.lieu_sortie_id, + t_lieux_c.service_facturation_id AS lieu_sortie_service_id, + t_lieux_c.service_facturation_code AS lieu_sortie_service_code, + t_lieux_c.service_facturation_texte AS lieu_sortie_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_sortie_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_sortie_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_sortie_service_section_texte, + t_lieux_c.etage_section_id AS lieu_sortie_etage_section_id, + t_lieux_c.etage_section_code AS lieu_sortie_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_sortie_etage_section_texte, + t_lieux_c.activite_id AS lieu_sortie_activite_id, + t_lieux_c.activite_code AS lieu_sortie_activite_code, + t_lieux_c.activite_texte AS lieu_sortie_activite_texte, + t_lieux_c.etage_id AS lieu_sortie_etage_id, + t_lieux_c.etage_code AS lieu_sortie_etage_code, + t_lieux_c.etage_texte AS lieu_sortie_etage_texte, + t_lieux_c.lit_id AS lieu_sortie_lit_id, + t_lieux_c.lit_code AS lieu_sortie_lit_code, + t_lieux_c.lit_texte AS lieu_sortie_lit_texte, + t_lieux_c.lit_section_id, + t_lieux_c.lit_section_code, + t_lieux_c.lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_sortie_unite_id, + p_factures_soldes_c.rubrique_comptabilisee_id, + t_rubriques_facturation.code AS rubrique_comptabilisee_code, + t_rubriques_facturation.texte_court AS rubrique_comptabilisee_texte, + p_factures_soldes_c.prestation_id, + t_prestations.code AS prestation_code, + t_prestations.texte_court AS prestation_texte, + p_factures_soldes_c.montant_comptabilise, + p_factures_soldes_c.montant_comptabilise_0, + p_factures_soldes_c.montant_comptabilise_1, + p_factures_soldes_c.montant_comptabilise_2, + p_factures_soldes_c.montant_comptabilise_22, + p_factures_soldes_c.montant_regle, + p_factures_soldes_c.montant_regle_0, + p_factures_soldes_c.montant_regle_1, + p_factures_soldes_c.montant_regle_2, + p_factures_soldes_c.montant_regle_22 + FROM activite.p_factures_soldes_c + JOIN activite.p_factures ON p_factures_soldes_c.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_ghs_c ON p_sejours.ghs_id = t_ghs_c.ghs_id + JOIN activite.t_ghm_c ON p_sejours.ghm_id = t_ghm_c.ghm_id + JOIN activite.t_medecins_administratifs_c ON p_sejours.medecin_sejour_id = t_medecins_administratifs_c.oid + JOIN activite.t_lieux_c ON p_sejours.lieu_sortie_id = t_lieux_c.oid + JOIN activite.t_rubriques_facturation ON p_factures_soldes_c.rubrique_comptabilisee_id = t_rubriques_facturation.oid + JOIN activite.t_prestations ON p_factures_soldes_c.prestation_id = t_prestations.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_soldes_c_2.yaml b/db/schema2/views/v_factures_soldes_c_2.yaml new file mode 100644 index 0000000..d03ca87 --- /dev/null +++ b/db/schema2/views/v_factures_soldes_c_2.yaml @@ -0,0 +1,145 @@ +src: | + SELECT p_sejours.finess, + p_sejours.no_patient, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_sejours.no_sejour, + p_factures.no_facture, + p_sejours.code_sexe, + CASE + WHEN p_sejours.code_sexe::text = '1'::text THEN 'M'::text + WHEN p_sejours.code_sexe::text = '2'::text THEN 'F'::text + ELSE p_sejours.type_sejour + END AS sexe_texte_court, + p_sejours.age, + p_sejours.type_sejour, + CASE + WHEN p_sejours.type_sejour = '1'::text THEN 'Hospitalisés'::text + WHEN p_sejours.type_sejour = '2'::text THEN 'Ambulatoires'::text + WHEN p_sejours.type_sejour = '3'::text THEN 'Externes'::text + WHEN p_sejours.type_sejour = '4'::text THEN 'Long séjours'::text + WHEN p_sejours.type_sejour = '5'::text THEN 'Séances'::text + ELSE p_sejours.type_sejour + END AS type_sejour_texte, + to_char(p_sejours.date_entree::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_entree, + p_sejours.date_entree, + p_sejours.code_sorti, + to_char(p_sejours.date_sortie::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_sortie, + p_sejours.date_sortie, + to_char(p_factures.date_facture::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_facture, + p_factures.date_facture, + to_char(p_factures.date_vente::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_vente, + p_factures.date_vente, + to_char(p_factures_soldes_c.date_comptable::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_comptable, + p_factures_soldes_c.date_comptable, + p_sejours.ghs_id, + t_types_tiers_payant.code AS type_tiers_payant_id, + t_types_tiers_payant.code AS type_tiers_payant_code, + t_types_tiers_payant.texte_court AS type_tiers_payant_texte, + CASE + WHEN p_factures.tiers_payant_0_id = t_tiers_payant.oid THEN p_factures.tiers_payant_0_id + WHEN p_factures.tiers_payant_1_id = t_tiers_payant.oid THEN p_factures.tiers_payant_1_id + WHEN p_factures.tiers_payant_2_id = t_tiers_payant.oid THEN p_factures.tiers_payant_2_id + WHEN p_factures.tiers_payant_22_id = t_tiers_payant.oid THEN p_factures.tiers_payant_22_id + ELSE NULL::bigint + END AS tiers_payant_id, + t_tiers_payant.code AS tiers_payant_code, + t_tiers_payant.texte_court AS tiers_payant_texte, + t_tiers_payant.grand_regime_id AS tiers_payant_grand_regime_id, + t_tiers_payant.grand_regime_code AS tiers_payant_grand_regime_code, + t_tiers_payant.grand_regime_texte AS tiers_payant_grand_regime_texte, + t_tiers_payant.section_id AS tiers_payant_section_id, + t_tiers_payant.section_code AS tiers_payant_section_code, + t_tiers_payant.section_texte AS tiers_payant_section_texte, + p_sejours.medecin_sejour_id AS medecin_adm_sejour_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_sejour_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_sejour_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_sejour_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_sejour_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_sejour_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_sejour_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_sejour_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_sejour_id, + t_medecins_administratifs_c.nom AS medecin_sejour_nom, + t_medecins_administratifs_c.prenom AS medecin_sejour_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_sejour_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_sejour_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_sejour_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_sejour_specialite_texte, + p_sejours.lieu_sortie_id, + t_lieux_c.service_facturation_id AS lieu_sortie_service_id, + t_lieux_c.service_facturation_code AS lieu_sortie_service_code, + t_lieux_c.service_facturation_texte AS lieu_sortie_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_sortie_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_sortie_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_sortie_service_section_texte, + t_lieux_c.activite_id AS lieu_sortie_activite_id, + t_lieux_c.activite_code AS lieu_sortie_activite_code, + t_lieux_c.activite_texte AS lieu_sortie_activite_texte, + t_lieux_c.etage_id AS lieu_sortie_etage_id, + t_lieux_c.etage_code AS lieu_sortie_etage_code, + t_lieux_c.etage_texte AS lieu_sortie_etage_texte, + t_lieux_c.etage_section_id AS lieu_sortie_etage_section_id, + t_lieux_c.etage_section_code AS lieu_sortie_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_sortie_etage_section_texte, + t_lieux_c.lit_id AS lieu_sortie_lit_id, + t_lieux_c.lit_code AS lieu_sortie_lit_code, + t_lieux_c.lit_texte AS lieu_sortie_lit_texte, + t_lieux_c.lit_section_id, + t_lieux_c.lit_section_code, + t_lieux_c.lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_sortie_unite_id, + p_factures_soldes_c.rubrique_comptabilisee_id, + t_rubriques_facturation.code AS rubrique_comptabilisee_code, + t_rubriques_facturation.texte_court AS rubrique_comptabilisee_texte, + p_factures_soldes_c.prestation_id, + t_prestations.code AS prestation_code, + t_prestations.texte_court AS prestation_texte, + CASE + WHEN p_factures.tiers_payant_0_id = t_tiers_payant.oid THEN p_factures_soldes_c.montant_comptabilise_0 + WHEN p_factures.tiers_payant_1_id = t_tiers_payant.oid THEN p_factures_soldes_c.montant_comptabilise_1 + WHEN p_factures.tiers_payant_2_id = t_tiers_payant.oid THEN p_factures_soldes_c.montant_comptabilise_2 + WHEN p_factures.tiers_payant_22_id = t_tiers_payant.oid THEN p_factures_soldes_c.montant_comptabilise_22 + ELSE 0::numeric + END AS montant_comptabilise, + CASE + WHEN p_factures.tiers_payant_0_id = t_tiers_payant.oid THEN p_factures_soldes_c.montant_regle_0 + WHEN p_factures.tiers_payant_1_id = t_tiers_payant.oid THEN p_factures_soldes_c.montant_regle_1 + WHEN p_factures.tiers_payant_2_id = t_tiers_payant.oid THEN p_factures_soldes_c.montant_regle_2 + WHEN p_factures.tiers_payant_22_id = t_tiers_payant.oid THEN p_factures_soldes_c.montant_regle_22 + ELSE 0::numeric + END AS montant_regle, + CASE + WHEN t_ghs_c.cmd_code = '28'::text THEN 'S'::text + ELSE t_ghs_c.mco_code + END AS mcos_code, + CASE + WHEN t_ghs_c.cmd_code = '28'::text THEN t_ghs_c.cmd_texte + ELSE + CASE + WHEN t_ghs_c.mco_code = '*'::text THEN 'Hors GHM ou N/A'::text + ELSE t_ghs_c.mco_texte + END + END AS mcos_texte, + CASE + WHEN t_ghs_c.cmd_code = '28'::text THEN 4 + ELSE + CASE t_ghs_c.mco_code + WHEN '*'::text THEN 0 + WHEN 'M'::text THEN 1 + WHEN 'C'::text THEN 2 + WHEN 'O'::text THEN 3 + ELSE NULL::integer + END + END AS mcos_id + FROM activite.p_factures_soldes_c + JOIN activite.p_factures ON p_factures_soldes_c.no_facture = p_factures.no_facture + JOIN activite.t_tiers_payant ON p_factures.tiers_payant_0_id = t_tiers_payant.oid AND p_factures.tiers_payant_0_id > 0 OR p_factures.tiers_payant_1_id = t_tiers_payant.oid AND p_factures.tiers_payant_1_id > 0 OR p_factures.tiers_payant_2_id = t_tiers_payant.oid AND p_factures.tiers_payant_2_id > 0 OR p_factures.tiers_payant_22_id = t_tiers_payant.oid AND p_factures.tiers_payant_22_id > 0 + JOIN activite.t_types_tiers_payant ON t_tiers_payant.type_tiers_payant = t_types_tiers_payant.code + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_ghs_c ON p_sejours.ghs_id = t_ghs_c.ghs_id + JOIN activite.t_ghm_c ON p_sejours.ghm_id = t_ghm_c.ghm_id + JOIN activite.t_medecins_administratifs_c ON p_sejours.medecin_sejour_id = t_medecins_administratifs_c.oid + JOIN activite.t_lieux_c ON p_sejours.lieu_sortie_id = t_lieux_c.oid + JOIN activite.t_rubriques_facturation ON p_factures_soldes_c.rubrique_comptabilisee_id = t_rubriques_facturation.oid + JOIN activite.t_prestations ON p_factures_soldes_c.prestation_id = t_prestations.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_soldes_c_3.yaml b/db/schema2/views/v_factures_soldes_c_3.yaml new file mode 100644 index 0000000..bb086de --- /dev/null +++ b/db/schema2/views/v_factures_soldes_c_3.yaml @@ -0,0 +1,172 @@ +src: | + SELECT p_factures_soldes_c.finess, + p_factures_soldes_c.no_facture, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_factures.no_sejour, + p_factures.date_facture, + p_factures.date_vente, + p_factures.mois_vente, + p_factures.date_debut AS date_debut_facture, + p_factures.date_fin AS date_fin_facture, + p_factures_soldes_c.date_comptable, + t_tiers_payant.type_tiers_payant_id, + t_tiers_payant.type_tiers_payant AS type_tiers_payant_code, + t_tiers_payant.type_tiers_payant_texte, + p_factures.tiers_payant_0_id AS tiers_payant_id, + t_tiers_payant.code AS tiers_payant_code, + t_tiers_payant.texte_court AS tiers_payant_texte, + t_tiers_payant.grand_regime_id AS tiers_payant_grand_regime_id, + t_tiers_payant.grand_regime_code AS tiers_payant_grand_regime_code, + t_tiers_payant.grand_regime_texte AS tiers_payant_grand_regime_texte, + t_tiers_payant.section_id AS tiers_payant_section_id, + t_tiers_payant.section_code AS tiers_payant_section_code, + t_tiers_payant.section_texte AS tiers_payant_section_texte, + p_factures_soldes_c.rubrique_comptabilisee_id, + t_rubriques_facturation.code AS rubrique_comptabilisee_code, + t_rubriques_facturation.texte_court AS rubrique_comptabilisee_texte, + t_rubriques_facturation.section_id AS rubrique_comptabilisee_section_id, + t_rubriques_facturation.section_code AS rubrique_comptabilisee_section_code, + t_rubriques_facturation.section_texte AS rubrique_comptabilisee_section_texte, + p_factures_soldes_c.prestation_id, + t_prestations.code AS prestation_code, + t_prestations.texte_court AS prestation_texte, + t_prestations.section_id AS prestation_section_id, + t_prestations.section_code AS prestation_section_code, + t_prestations.section_texte AS prestation_section_texte, + p_factures_soldes_c.montant_comptabilise_0 AS montant_comptabilise, + p_factures_soldes_c.montant_regle_0 AS montant_regle + FROM activite.p_factures_soldes_c + JOIN activite.p_factures ON p_factures_soldes_c.no_facture = p_factures.no_facture + JOIN activite.t_tiers_payant ON p_factures.tiers_payant_0_id = t_tiers_payant.oid AND p_factures.tiers_payant_0_id > 0 AND (p_factures_soldes_c.montant_comptabilise_0 <> 0::numeric OR p_factures_soldes_c.montant_regle_0 <> 0::numeric) + JOIN activite.t_rubriques_facturation ON p_factures_soldes_c.rubrique_comptabilisee_id = t_rubriques_facturation.oid + JOIN activite.t_prestations ON p_factures_soldes_c.prestation_id = t_prestations.oid + UNION ALL + SELECT p_factures_soldes_c.finess, + p_factures_soldes_c.no_facture, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_factures.no_sejour, + p_factures.date_facture, + p_factures.date_vente, + p_factures.mois_vente, + p_factures.date_debut AS date_debut_facture, + p_factures.date_fin AS date_fin_facture, + p_factures_soldes_c.date_comptable, + t_tiers_payant.type_tiers_payant_id, + t_tiers_payant.type_tiers_payant AS type_tiers_payant_code, + t_tiers_payant.type_tiers_payant_texte, + p_factures.tiers_payant_1_id AS tiers_payant_id, + t_tiers_payant.code AS tiers_payant_code, + t_tiers_payant.texte_court AS tiers_payant_texte, + t_tiers_payant.grand_regime_id AS tiers_payant_grand_regime_id, + t_tiers_payant.grand_regime_code AS tiers_payant_grand_regime_code, + t_tiers_payant.grand_regime_texte AS tiers_payant_grand_regime_texte, + t_tiers_payant.section_id AS tiers_payant_section_id, + t_tiers_payant.section_code AS tiers_payant_section_code, + t_tiers_payant.section_texte AS tiers_payant_section_texte, + p_factures_soldes_c.rubrique_comptabilisee_id, + t_rubriques_facturation.code AS rubrique_comptabilisee_code, + t_rubriques_facturation.texte_court AS rubrique_comptabilisee_texte, + t_rubriques_facturation.section_id AS rubrique_comptabilisee_section_id, + t_rubriques_facturation.section_code AS rubrique_comptabilisee_section_code, + t_rubriques_facturation.section_texte AS rubrique_comptabilisee_section_texte, + p_factures_soldes_c.prestation_id, + t_prestations.code AS prestation_code, + t_prestations.texte_court AS prestation_texte, + t_prestations.section_id AS prestation_section_id, + t_prestations.section_code AS prestation_section_code, + t_prestations.section_texte AS prestation_section_texte, + p_factures_soldes_c.montant_comptabilise_1 AS montant_comptabilise, + p_factures_soldes_c.montant_regle_1 AS montant_regle + FROM activite.p_factures_soldes_c + JOIN activite.p_factures ON p_factures_soldes_c.no_facture = p_factures.no_facture + JOIN activite.t_tiers_payant ON p_factures.tiers_payant_1_id = t_tiers_payant.oid AND (p_factures.tiers_payant_1_id > 0 OR p_factures.montant_facture_1_c <> 0::numeric OR p_factures.montant_facture_1_h <> 0::numeric) AND (p_factures_soldes_c.montant_comptabilise_1 <> 0::numeric OR p_factures_soldes_c.montant_regle_1 <> 0::numeric) + JOIN activite.t_rubriques_facturation ON p_factures_soldes_c.rubrique_comptabilisee_id = t_rubriques_facturation.oid + JOIN activite.t_prestations ON p_factures_soldes_c.prestation_id = t_prestations.oid + UNION ALL + SELECT p_factures_soldes_c.finess, + p_factures_soldes_c.no_facture, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_factures.no_sejour, + p_factures.date_facture, + p_factures.date_vente, + p_factures.mois_vente, + p_factures.date_debut AS date_debut_facture, + p_factures.date_fin AS date_fin_facture, + p_factures_soldes_c.date_comptable, + t_tiers_payant.type_tiers_payant_id, + t_tiers_payant.type_tiers_payant AS type_tiers_payant_code, + t_tiers_payant.type_tiers_payant_texte, + p_factures.tiers_payant_2_id AS tiers_payant_id, + t_tiers_payant.code AS tiers_payant_code, + t_tiers_payant.texte_court AS tiers_payant_texte, + t_tiers_payant.grand_regime_id AS tiers_payant_grand_regime_id, + t_tiers_payant.grand_regime_code AS tiers_payant_grand_regime_code, + t_tiers_payant.grand_regime_texte AS tiers_payant_grand_regime_texte, + t_tiers_payant.section_id AS tiers_payant_section_id, + t_tiers_payant.section_code AS tiers_payant_section_code, + t_tiers_payant.section_texte AS tiers_payant_section_texte, + p_factures_soldes_c.rubrique_comptabilisee_id, + t_rubriques_facturation.code AS rubrique_comptabilisee_code, + t_rubriques_facturation.texte_court AS rubrique_comptabilisee_texte, + t_rubriques_facturation.section_id AS rubrique_comptabilisee_section_id, + t_rubriques_facturation.section_code AS rubrique_comptabilisee_section_code, + t_rubriques_facturation.section_texte AS rubrique_comptabilisee_section_texte, + p_factures_soldes_c.prestation_id, + t_prestations.code AS prestation_code, + t_prestations.texte_court AS prestation_texte, + t_prestations.section_id AS prestation_section_id, + t_prestations.section_code AS prestation_section_code, + t_prestations.section_texte AS prestation_section_texte, + p_factures_soldes_c.montant_comptabilise_2 AS montant_comptabilise, + p_factures_soldes_c.montant_regle_2 AS montant_regle + FROM activite.p_factures_soldes_c + JOIN activite.p_factures ON p_factures_soldes_c.no_facture = p_factures.no_facture + JOIN activite.t_tiers_payant ON p_factures.tiers_payant_2_id = t_tiers_payant.oid AND (p_factures.tiers_payant_2_id > 0 OR p_factures.montant_facture_2_c <> 0::numeric OR p_factures.montant_facture_2_h <> 0::numeric) AND (p_factures_soldes_c.montant_comptabilise_2 <> 0::numeric OR p_factures_soldes_c.montant_regle_2 <> 0::numeric) + JOIN activite.t_rubriques_facturation ON p_factures_soldes_c.rubrique_comptabilisee_id = t_rubriques_facturation.oid + JOIN activite.t_prestations ON p_factures_soldes_c.prestation_id = t_prestations.oid + UNION ALL + SELECT p_factures_soldes_c.finess, + p_factures_soldes_c.no_facture, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_factures.no_sejour, + p_factures.date_facture, + p_factures.date_vente, + p_factures.mois_vente, + p_factures.date_debut AS date_debut_facture, + p_factures.date_fin AS date_fin_facture, + p_factures_soldes_c.date_comptable, + t_tiers_payant.type_tiers_payant_id, + t_tiers_payant.type_tiers_payant AS type_tiers_payant_code, + t_tiers_payant.type_tiers_payant_texte, + p_factures.tiers_payant_22_id AS tiers_payant_id, + t_tiers_payant.code AS tiers_payant_code, + t_tiers_payant.texte_court AS tiers_payant_texte, + t_tiers_payant.grand_regime_id AS tiers_payant_grand_regime_id, + t_tiers_payant.grand_regime_code AS tiers_payant_grand_regime_code, + t_tiers_payant.grand_regime_texte AS tiers_payant_grand_regime_texte, + t_tiers_payant.section_id AS tiers_payant_section_id, + t_tiers_payant.section_code AS tiers_payant_section_code, + t_tiers_payant.section_texte AS tiers_payant_section_texte, + p_factures_soldes_c.rubrique_comptabilisee_id, + t_rubriques_facturation.code AS rubrique_comptabilisee_code, + t_rubriques_facturation.texte_court AS rubrique_comptabilisee_texte, + t_rubriques_facturation.section_id AS rubrique_comptabilisee_section_id, + t_rubriques_facturation.section_code AS rubrique_comptabilisee_section_code, + t_rubriques_facturation.section_texte AS rubrique_comptabilisee_section_texte, + p_factures_soldes_c.prestation_id, + t_prestations.code AS prestation_code, + t_prestations.texte_court AS prestation_texte, + t_prestations.section_id AS prestation_section_id, + t_prestations.section_code AS prestation_section_code, + t_prestations.section_texte AS prestation_section_texte, + p_factures_soldes_c.montant_comptabilise_22 AS montant_comptabilise, + p_factures_soldes_c.montant_regle_22 AS montant_regle + FROM activite.p_factures_soldes_c + JOIN activite.p_factures ON p_factures_soldes_c.no_facture = p_factures.no_facture + JOIN activite.t_tiers_payant ON p_factures.tiers_payant_22_id = t_tiers_payant.oid AND (p_factures.tiers_payant_22_id > 0 OR p_factures.montant_facture_22_c <> 0::numeric OR p_factures.montant_facture_22_h <> 0::numeric) AND (p_factures_soldes_c.montant_comptabilise_22 <> 0::numeric OR p_factures_soldes_c.montant_regle_22 <> 0::numeric) + JOIN activite.t_rubriques_facturation ON p_factures_soldes_c.rubrique_comptabilisee_id = t_rubriques_facturation.oid + JOIN activite.t_prestations ON p_factures_soldes_c.prestation_id = t_prestations.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_soldes_c_r_1.yaml b/db/schema2/views/v_factures_soldes_c_r_1.yaml new file mode 100644 index 0000000..8abfb8f --- /dev/null +++ b/db/schema2/views/v_factures_soldes_c_r_1.yaml @@ -0,0 +1,142 @@ +dep: + - v_factures_soldes_c_3 + - v_sejours_1 +src: | + SELECT v_factures_soldes_c_3.date_comptable AS date_reference, + v_sejours_1.lieu_sortie_service_id AS lieu_reference_service_id, + v_sejours_1.lieu_sortie_service_code AS lieu_reference_service_code, + v_sejours_1.lieu_sortie_service_texte AS lieu_reference_service_texte, + v_sejours_1.lieu_sortie_service_section_id AS lieu_reference_service_section_id, + v_sejours_1.lieu_sortie_service_section_code AS lieu_reference_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte AS lieu_reference_service_section_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_sejours_1.lieu_sortie_activite_id AS lieu_reference_activite_id, + v_sejours_1.lieu_sortie_activite_code AS lieu_reference_activite_code, + v_sejours_1.lieu_sortie_activite_texte AS lieu_reference_activite_texte, + v_sejours_1.lieu_sortie_etage_id AS lieu_reference_etage_id, + v_sejours_1.lieu_sortie_etage_code AS lieu_reference_etage_code, + v_sejours_1.lieu_sortie_etage_texte AS lieu_reference_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id AS lieu_reference_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code AS lieu_reference_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte AS lieu_reference_etage_section_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.code_sorti, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.lieu_sortie_id, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_lit_id, + v_sejours_1.lieu_sortie_lit_code, + v_sejours_1.lieu_sortie_lit_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_factures_soldes_c_3.no_facture, + v_factures_soldes_c_3.facture_id, + v_factures_soldes_c_3.date_facture, + v_factures_soldes_c_3.date_vente, + v_factures_soldes_c_3.date_comptable, + v_factures_soldes_c_3.type_tiers_payant_id, + v_factures_soldes_c_3.type_tiers_payant_code, + v_factures_soldes_c_3.type_tiers_payant_texte, + v_factures_soldes_c_3.tiers_payant_id, + v_factures_soldes_c_3.tiers_payant_code, + v_factures_soldes_c_3.tiers_payant_texte, + v_factures_soldes_c_3.rubrique_comptabilisee_id, + v_factures_soldes_c_3.rubrique_comptabilisee_code, + v_factures_soldes_c_3.rubrique_comptabilisee_texte, + v_factures_soldes_c_3.rubrique_comptabilisee_section_id, + v_factures_soldes_c_3.rubrique_comptabilisee_section_code, + v_factures_soldes_c_3.rubrique_comptabilisee_section_texte, + v_factures_soldes_c_3.prestation_id, + v_factures_soldes_c_3.prestation_code, + v_factures_soldes_c_3.prestation_texte, + v_factures_soldes_c_3.montant_comptabilise, + v_factures_soldes_c_3.montant_regle + FROM activite.v_factures_soldes_c_3, + activite.v_sejours_1 + WHERE v_factures_soldes_c_3.no_sejour = v_sejours_1.no_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_factures_soldes_c_r_4.yaml b/db/schema2/views/v_factures_soldes_c_r_4.yaml new file mode 100644 index 0000000..d2e25fa --- /dev/null +++ b/db/schema2/views/v_factures_soldes_c_r_4.yaml @@ -0,0 +1,143 @@ +dep: + - v_factures_soldes_c_3 + - v_sejours_1 +src: | + SELECT v_factures_soldes_c_3.date_comptable AS date_reference, + v_sejours_1.lieu_sortie_service_id AS lieu_reference_service_id, + v_sejours_1.lieu_sortie_service_code AS lieu_reference_service_code, + v_sejours_1.lieu_sortie_service_texte AS lieu_reference_service_texte, + v_sejours_1.lieu_sortie_service_section_id AS lieu_reference_service_section_id, + v_sejours_1.lieu_sortie_service_section_code AS lieu_reference_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte AS lieu_reference_service_section_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_sejours_1.lieu_sortie_activite_id AS lieu_reference_activite_id, + v_sejours_1.lieu_sortie_activite_code AS lieu_reference_activite_code, + v_sejours_1.lieu_sortie_activite_texte AS lieu_reference_activite_texte, + v_sejours_1.lieu_sortie_etage_id AS lieu_reference_etage_id, + v_sejours_1.lieu_sortie_etage_code AS lieu_reference_etage_code, + v_sejours_1.lieu_sortie_etage_texte AS lieu_reference_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id AS lieu_reference_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code AS lieu_reference_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte AS lieu_reference_etage_section_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.code_sorti, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.lieu_sortie_id, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_lit_id, + v_sejours_1.lieu_sortie_lit_code, + v_sejours_1.lieu_sortie_lit_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_factures_soldes_c_3.no_facture, + v_factures_soldes_c_3.facture_id, + v_factures_soldes_c_3.date_facture, + v_factures_soldes_c_3.date_vente, + v_factures_soldes_c_3.date_comptable, + v_factures_soldes_c_3.type_tiers_payant_id, + v_factures_soldes_c_3.type_tiers_payant_code, + v_factures_soldes_c_3.type_tiers_payant_texte, + v_factures_soldes_c_3.tiers_payant_id, + v_factures_soldes_c_3.tiers_payant_code, + v_factures_soldes_c_3.tiers_payant_texte, + v_factures_soldes_c_3.rubrique_comptabilisee_id, + v_factures_soldes_c_3.rubrique_comptabilisee_code, + v_factures_soldes_c_3.rubrique_comptabilisee_texte, + v_factures_soldes_c_3.rubrique_comptabilisee_section_id, + v_factures_soldes_c_3.rubrique_comptabilisee_section_code, + v_factures_soldes_c_3.rubrique_comptabilisee_section_texte, + v_factures_soldes_c_3.prestation_id, + v_factures_soldes_c_3.prestation_code, + v_factures_soldes_c_3.prestation_texte, + v_factures_soldes_c_3.montant_comptabilise, + v_factures_soldes_c_3.montant_regle, + v_factures_soldes_c_3.montant_comptabilise - v_factures_soldes_c_3.montant_regle AS montant_solde + FROM activite.v_factures_soldes_c_3, + activite.v_sejours_1 + WHERE v_factures_soldes_c_3.no_sejour = v_sejours_1.no_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_factures_soldes_h_1.yaml b/db/schema2/views/v_factures_soldes_h_1.yaml new file mode 100644 index 0000000..2fdd26d --- /dev/null +++ b/db/schema2/views/v_factures_soldes_h_1.yaml @@ -0,0 +1,32 @@ +src: | + SELECT p_factures_soldes_h.finess, + p_factures_soldes_h.no_facture, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_factures.no_sejour, + p_factures.date_facture, + p_factures.date_vente, + p_factures.mois_vente, + p_factures_soldes_h.date_comptable, + p_factures_soldes_h.medecin_comptabilise_id AS medecin_adm_comptabilise_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_comptabilise_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_comptabilise_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_comptabilise_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_comptabilise_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_comptabilise_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_comptabilise_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_comptabilise_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_comptabilise_id, + t_medecins_administratifs_c.medecin_code AS medecin_comptabilise_code, + t_medecins_administratifs_c.nom AS medecin_comptabilise_nom, + t_medecins_administratifs_c.prenom AS medecin_comptabilise_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_comptabilise_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_comptabilise_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_comptabilise_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_comptabilise_specialite_texte, + p_factures_soldes_h.montant_comptabilise, + p_factures_soldes_h.montant_regle + FROM activite.p_factures_soldes_h, + activite.p_factures, + activite.t_medecins_administratifs_c + WHERE p_factures_soldes_h.no_facture = p_factures.no_facture AND p_factures_soldes_h.medecin_comptabilise_id = t_medecins_administratifs_c.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_soldes_h_3.yaml b/db/schema2/views/v_factures_soldes_h_3.yaml new file mode 100644 index 0000000..b54f731 --- /dev/null +++ b/db/schema2/views/v_factures_soldes_h_3.yaml @@ -0,0 +1,180 @@ +src: | + SELECT p_factures_soldes_h.finess, + p_factures_soldes_h.no_facture, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_factures.no_sejour, + p_factures.date_facture, + p_factures.date_fin AS date_fin_facture, + p_factures.date_vente, + p_factures.mois_vente, + p_factures_soldes_h.date_comptable, + t_tiers_payant.type_tiers_payant_id, + t_tiers_payant.type_tiers_payant AS type_tiers_payant_code, + t_tiers_payant.type_tiers_payant_texte, + p_factures.tiers_payant_0_id AS tiers_payant_id, + t_tiers_payant.code AS tiers_payant_code, + t_tiers_payant.texte_court AS tiers_payant_texte, + t_tiers_payant.grand_regime_id AS tiers_payant_grand_regime_id, + t_tiers_payant.grand_regime_code AS tiers_payant_grand_regime_code, + t_tiers_payant.grand_regime_texte AS tiers_payant_grand_regime_texte, + t_tiers_payant.section_id AS tiers_payant_section_id, + t_tiers_payant.section_code AS tiers_payant_section_code, + t_tiers_payant.section_texte AS tiers_payant_section_texte, + p_factures_soldes_h.medecin_comptabilise_id AS medecin_adm_comptabilise_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_comptabilise_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_comptabilise_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_comptabilise_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_comptabilise_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_comptabilise_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_comptabilise_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_comptabilise_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_comptabilise_id, + t_medecins_administratifs_c.medecin_code AS medecin_comptabilise_code, + t_medecins_administratifs_c.nom AS medecin_comptabilise_nom, + t_medecins_administratifs_c.prenom AS medecin_comptabilise_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_comptabilise_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_comptabilise_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_comptabilise_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_comptabilise_specialite_texte, + p_factures_soldes_h.montant_comptabilise_0 AS montant_comptabilise, + p_factures_soldes_h.montant_regle_0 AS montant_regle + FROM activite.p_factures_soldes_h + JOIN activite.p_factures ON p_factures_soldes_h.no_facture = p_factures.no_facture + JOIN activite.t_tiers_payant ON p_factures.tiers_payant_0_id = t_tiers_payant.oid AND p_factures.tiers_payant_0_id > 0 AND (p_factures_soldes_h.montant_comptabilise_0 <> 0::numeric OR p_factures_soldes_h.montant_regle_0 <> 0::numeric) + JOIN activite.t_medecins_administratifs_c ON p_factures_soldes_h.medecin_comptabilise_id = t_medecins_administratifs_c.oid + UNION ALL + SELECT p_factures_soldes_h.finess, + p_factures_soldes_h.no_facture, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_factures.no_sejour, + p_factures.date_facture, + p_factures.date_fin AS date_fin_facture, + p_factures.date_vente, + p_factures.mois_vente, + p_factures_soldes_h.date_comptable, + t_tiers_payant.type_tiers_payant_id, + t_tiers_payant.type_tiers_payant AS type_tiers_payant_code, + t_tiers_payant.type_tiers_payant_texte, + p_factures.tiers_payant_1_id AS tiers_payant_id, + t_tiers_payant.code AS tiers_payant_code, + t_tiers_payant.texte_court AS tiers_payant_texte, + t_tiers_payant.grand_regime_id AS tiers_payant_grand_regime_id, + t_tiers_payant.grand_regime_code AS tiers_payant_grand_regime_code, + t_tiers_payant.grand_regime_texte AS tiers_payant_grand_regime_texte, + t_tiers_payant.section_id AS tiers_payant_section_id, + t_tiers_payant.section_code AS tiers_payant_section_code, + t_tiers_payant.section_texte AS tiers_payant_section_texte, + p_factures_soldes_h.medecin_comptabilise_id AS medecin_adm_comptabilise_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_comptabilise_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_comptabilise_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_comptabilise_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_comptabilise_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_comptabilise_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_comptabilise_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_comptabilise_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_comptabilise_id, + t_medecins_administratifs_c.medecin_code AS medecin_comptabilise_code, + t_medecins_administratifs_c.nom AS medecin_comptabilise_nom, + t_medecins_administratifs_c.prenom AS medecin_comptabilise_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_comptabilise_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_comptabilise_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_comptabilise_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_comptabilise_specialite_texte, + p_factures_soldes_h.montant_comptabilise_1 AS montant_comptabilise, + p_factures_soldes_h.montant_regle_1 AS montant_regle + FROM activite.p_factures_soldes_h + JOIN activite.p_factures ON p_factures_soldes_h.no_facture = p_factures.no_facture + JOIN activite.t_tiers_payant ON p_factures.tiers_payant_1_id = t_tiers_payant.oid AND (p_factures.tiers_payant_1_id > 0 OR p_factures.montant_facture_1_c <> 0::numeric OR p_factures.montant_facture_1_h <> 0::numeric) AND (p_factures_soldes_h.montant_comptabilise_1 <> 0::numeric OR p_factures_soldes_h.montant_regle_1 <> 0::numeric) + JOIN activite.t_medecins_administratifs_c ON p_factures_soldes_h.medecin_comptabilise_id = t_medecins_administratifs_c.oid + UNION ALL + SELECT p_factures_soldes_h.finess, + p_factures_soldes_h.no_facture, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_factures.no_sejour, + p_factures.date_facture, + p_factures.date_fin AS date_fin_facture, + p_factures.date_vente, + p_factures.mois_vente, + p_factures_soldes_h.date_comptable, + t_tiers_payant.type_tiers_payant_id, + t_tiers_payant.type_tiers_payant AS type_tiers_payant_code, + t_tiers_payant.type_tiers_payant_texte, + p_factures.tiers_payant_2_id AS tiers_payant_id, + t_tiers_payant.code AS tiers_payant_code, + t_tiers_payant.texte_court AS tiers_payant_texte, + t_tiers_payant.grand_regime_id AS tiers_payant_grand_regime_id, + t_tiers_payant.grand_regime_code AS tiers_payant_grand_regime_code, + t_tiers_payant.grand_regime_texte AS tiers_payant_grand_regime_texte, + t_tiers_payant.section_id AS tiers_payant_section_id, + t_tiers_payant.section_code AS tiers_payant_section_code, + t_tiers_payant.section_texte AS tiers_payant_section_texte, + p_factures_soldes_h.medecin_comptabilise_id AS medecin_adm_comptabilise_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_comptabilise_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_comptabilise_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_comptabilise_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_comptabilise_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_comptabilise_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_comptabilise_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_comptabilise_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_comptabilise_id, + t_medecins_administratifs_c.medecin_code AS medecin_comptabilise_code, + t_medecins_administratifs_c.nom AS medecin_comptabilise_nom, + t_medecins_administratifs_c.prenom AS medecin_comptabilise_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_comptabilise_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_comptabilise_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_comptabilise_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_comptabilise_specialite_texte, + p_factures_soldes_h.montant_comptabilise_2 AS montant_comptabilise, + p_factures_soldes_h.montant_regle_2 AS montant_regle + FROM activite.p_factures_soldes_h + JOIN activite.p_factures ON p_factures_soldes_h.no_facture = p_factures.no_facture + JOIN activite.t_tiers_payant ON p_factures.tiers_payant_2_id = t_tiers_payant.oid AND (p_factures.tiers_payant_2_id > 0 OR p_factures.montant_facture_2_c <> 0::numeric OR p_factures.montant_facture_2_h <> 0::numeric) AND (p_factures_soldes_h.montant_comptabilise_2 <> 0::numeric OR p_factures_soldes_h.montant_regle_2 <> 0::numeric) + JOIN activite.t_medecins_administratifs_c ON p_factures_soldes_h.medecin_comptabilise_id = t_medecins_administratifs_c.oid + UNION ALL + SELECT p_factures_soldes_h.finess, + p_factures_soldes_h.no_facture, + p_factures.sejour_id, + p_factures.oid AS facture_id, + p_factures.no_sejour, + p_factures.date_facture, + p_factures.date_fin AS date_fin_facture, + p_factures.date_vente, + p_factures.mois_vente, + p_factures_soldes_h.date_comptable, + t_tiers_payant.type_tiers_payant_id, + t_tiers_payant.type_tiers_payant AS type_tiers_payant_code, + t_tiers_payant.type_tiers_payant_texte, + p_factures.tiers_payant_22_id AS tiers_payant_id, + t_tiers_payant.code AS tiers_payant_code, + t_tiers_payant.texte_court AS tiers_payant_texte, + t_tiers_payant.grand_regime_id AS tiers_payant_grand_regime_id, + t_tiers_payant.grand_regime_code AS tiers_payant_grand_regime_code, + t_tiers_payant.grand_regime_texte AS tiers_payant_grand_regime_texte, + t_tiers_payant.section_id AS tiers_payant_section_id, + t_tiers_payant.section_code AS tiers_payant_section_code, + t_tiers_payant.section_texte AS tiers_payant_section_texte, + p_factures_soldes_h.medecin_comptabilise_id AS medecin_adm_comptabilise_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_comptabilise_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_comptabilise_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_comptabilise_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_comptabilise_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_comptabilise_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_comptabilise_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_comptabilise_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_comptabilise_id, + t_medecins_administratifs_c.medecin_code AS medecin_comptabilise_code, + t_medecins_administratifs_c.nom AS medecin_comptabilise_nom, + t_medecins_administratifs_c.prenom AS medecin_comptabilise_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_comptabilise_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_comptabilise_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_comptabilise_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_comptabilise_specialite_texte, + p_factures_soldes_h.montant_comptabilise_22 AS montant_comptabilise, + p_factures_soldes_h.montant_regle_22 AS montant_regle + FROM activite.p_factures_soldes_h + JOIN activite.p_factures ON p_factures_soldes_h.no_facture = p_factures.no_facture + JOIN activite.t_tiers_payant ON p_factures.tiers_payant_22_id = t_tiers_payant.oid AND (p_factures.tiers_payant_22_id > 0 OR p_factures.montant_facture_22_c <> 0::numeric OR p_factures.montant_facture_22_h <> 0::numeric) AND (p_factures_soldes_h.montant_comptabilise_22 <> 0::numeric OR p_factures_soldes_h.montant_regle_22 <> 0::numeric) + JOIN activite.t_medecins_administratifs_c ON p_factures_soldes_h.medecin_comptabilise_id = t_medecins_administratifs_c.oid; \ No newline at end of file diff --git a/db/schema2/views/v_factures_soldes_h_r_4.yaml b/db/schema2/views/v_factures_soldes_h_r_4.yaml new file mode 100644 index 0000000..76d4d17 --- /dev/null +++ b/db/schema2/views/v_factures_soldes_h_r_4.yaml @@ -0,0 +1,134 @@ +dep: + - v_factures_soldes_h_3 + - v_sejours_1 +src: | + SELECT v_factures_soldes_h_3.date_comptable AS date_reference, + v_sejours_1.lieu_sortie_service_id AS lieu_reference_service_id, + v_sejours_1.lieu_sortie_service_code AS lieu_reference_service_code, + v_sejours_1.lieu_sortie_service_texte AS lieu_reference_service_texte, + v_sejours_1.lieu_sortie_service_section_id AS lieu_reference_service_section_id, + v_sejours_1.lieu_sortie_service_section_code AS lieu_reference_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte AS lieu_reference_service_section_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_sejours_1.lieu_sortie_activite_id AS lieu_reference_activite_id, + v_sejours_1.lieu_sortie_activite_code AS lieu_reference_activite_code, + v_sejours_1.lieu_sortie_activite_texte AS lieu_reference_activite_texte, + v_sejours_1.lieu_sortie_etage_id AS lieu_reference_etage_id, + v_sejours_1.lieu_sortie_etage_code AS lieu_reference_etage_code, + v_sejours_1.lieu_sortie_etage_texte AS lieu_reference_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id AS lieu_reference_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code AS lieu_reference_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte AS lieu_reference_etage_section_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.code_sorti, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.lieu_sortie_id, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_lit_id, + v_sejours_1.lieu_sortie_lit_code, + v_sejours_1.lieu_sortie_lit_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_factures_soldes_h_3.no_facture, + v_factures_soldes_h_3.facture_id, + v_factures_soldes_h_3.date_facture, + v_factures_soldes_h_3.date_vente, + v_factures_soldes_h_3.date_comptable, + v_factures_soldes_h_3.type_tiers_payant_id, + v_factures_soldes_h_3.type_tiers_payant_code, + v_factures_soldes_h_3.type_tiers_payant_texte, + v_factures_soldes_h_3.tiers_payant_id, + v_factures_soldes_h_3.tiers_payant_code, + v_factures_soldes_h_3.tiers_payant_texte, + v_factures_soldes_h_3.montant_comptabilise, + v_factures_soldes_h_3.montant_regle, + v_factures_soldes_h_3.montant_comptabilise - v_factures_soldes_h_3.montant_regle AS montant_solde + FROM activite.v_factures_soldes_h_3, + activite.v_sejours_1 + WHERE v_factures_soldes_h_3.no_sejour = v_sejours_1.no_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_filiere_soin_2.yaml b/db/schema2/views/v_filiere_soin_2.yaml new file mode 100644 index 0000000..c593005 --- /dev/null +++ b/db/schema2/views/v_filiere_soin_2.yaml @@ -0,0 +1,68 @@ +dep: + - v_listes_1 +src: | + ( + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.liste_alias_combo AS alias, + v_listes_1.texte, + ('0'::text || v_listes_1.sort) || chr(1) AS code, + v_listes_1.lvl AS level, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'FILIERESOIN'::text AND v_listes_1.lvl <> '0'::text + UNION ALL ( + SELECT ('LC'::text || to_char(t_classes.sequence, 'FM00'::text)) || t_classes.oid::text AS oid, + ''::text AS alias, + t_classes.texte, + '2'::text || btrim(rpad(to_char(t_classes.sequence, 'FM00'::text), 10, ' '::text)) AS code, + '1'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'FILIERESOIN'::text + UNION ALL + SELECT ('LS'::text || to_char(t_classes.sequence, 'FM00'::text)) || t_classes_sections.oid::text AS oid, + (('#LS'::text || t_classes.code) || to_char(t_classes.sequence, 'FM00'::text)) || t_classes_sections.code AS alias, + t_classes_sections.texte, + '2'::text || btrim(rpad(to_char(t_classes.sequence, 'FM00'::text), 10, ' '::text) || t_classes_sections.code) AS code, + '2'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'FILIERESOIN'::text + ) + UNION ALL + SELECT ('LS'::text || to_char(t_classes.sequence, 'FM00'::text)) || '0'::text AS oid, + ('#LS'::text || t_classes.code) || '_'::text AS alias, + 'Section non attribuée'::character varying AS texte, + '2'::text || btrim(rpad(to_char(t_classes.sequence, 'FM00'::text), 10, ' '::text) || chr(255)) AS code, + '2'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'FILIERESOIN'::text + ) UNION + SELECT 'DT'::text || t_filiere_soin.oid::text AS oid, + '#DT'::text || t_filiere_soin.code AS alias, + (t_filiere_soin.code || ' '::text) || t_filiere_soin.texte AS texte, + '9'::text || t_filiere_soin.code AS code, + '1'::text AS level, + '0'::character(1) AS is_cti + FROM activite.t_filiere_soin + WHERE (t_filiere_soin.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'filiere_soin'::text)) + ORDER BY 4, 1, 3; \ No newline at end of file diff --git a/db/schema2/views/v_filiere_soin_principale_1.yaml b/db/schema2/views/v_filiere_soin_principale_1.yaml new file mode 100644 index 0000000..e37ea8b --- /dev/null +++ b/db/schema2/views/v_filiere_soin_principale_1.yaml @@ -0,0 +1,9 @@ +src: | + SELECT t_filiere_soin.oid AS to_filiere_soin_id, + t_filiere_soin.code AS filiere_soin_principale_code, + t_filiere_soin.texte AS filiere_soin_principale_texte, + t_filiere_soin.section_id AS filiere_soin_principale_section_id, + t_filiere_soin.section_code AS filiere_soin_principale_section_code, + t_filiere_soin.section_texte AS filiere_soin_principale_section_texte + FROM activite.t_filiere_soin t_filiere_soin + ORDER BY t_filiere_soin.oid; \ No newline at end of file diff --git a/db/schema2/views/v_finess_1.yaml b/db/schema2/views/v_finess_1.yaml new file mode 100644 index 0000000..5a56bd4 --- /dev/null +++ b/db/schema2/views/v_finess_1.yaml @@ -0,0 +1,72 @@ +src: | + ( + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + ''::text AS code, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS tri, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM base.v_listes_1 + WHERE v_listes_1.table_code = 'FINESS'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS code, + '1'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM base.t_classes, + base.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'FINESS'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM base.t_classes, + base.t_classes_sections, + base.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'FINESS'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM base.t_classes, + base.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'FINESS'::text + ) UNION + SELECT 'DT'::text || t_finess.oid::text AS oid, + ((t_finess.texte || ' ('::text) || t_finess.code) || ')'::text AS texte, + t_finess.code, + '1'::text AS level, + '8'::text || t_finess.texte AS tri, + '0'::character(1) AS is_cti + FROM base.t_finess + WHERE t_finess.oid = 0 + UNION + SELECT 'DT'::text || t_finess.oid::text AS oid, + ((t_finess.texte || ' ('::text) || t_finess.code) || ')'::text AS texte, + t_finess.code, + '1'::text AS level, + '9'::text || t_finess.texte AS tri, + '0'::character(1) AS is_cti + FROM base.t_finess + WHERE t_finess.oid > 0 + ORDER BY 5; \ No newline at end of file diff --git a/db/schema2/views/v_forme_activite_1.yaml b/db/schema2/views/v_forme_activite_1.yaml new file mode 100644 index 0000000..453eb2f --- /dev/null +++ b/db/schema2/views/v_forme_activite_1.yaml @@ -0,0 +1,9 @@ +src: | + SELECT t_forme_activite.oid AS to_forme_activite_id, + t_forme_activite.code AS forme_activite_code, + t_forme_activite.texte AS forme_activite_texte, + t_forme_activite.section_id AS forme_activite_section_id, + t_forme_activite.section_code AS forme_activite_section_code, + t_forme_activite.section_texte AS forme_activite_section_texte + FROM activite.t_forme_activite + ORDER BY t_forme_activite.oid; \ No newline at end of file diff --git a/db/schema2/views/v_forme_activite_2.yaml b/db/schema2/views/v_forme_activite_2.yaml new file mode 100644 index 0000000..3e8e313 --- /dev/null +++ b/db/schema2/views/v_forme_activite_2.yaml @@ -0,0 +1,66 @@ +dep: + - v_listes_1 +src: | + ( + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.liste_alias_combo AS alias, + v_listes_1.texte, + ('0'::text || v_listes_1.sort) || chr(1) AS code, + v_listes_1.lvl AS level, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'FORMEACTIVITE'::text AND v_listes_1.lvl <> '0'::text + UNION ALL ( + SELECT ('LC'::text || to_char(t_classes.sequence, 'FM00'::text)) || t_classes.oid::text AS oid, + ''::text AS alias, + t_classes.texte, + '2'::text || btrim(rpad(to_char(t_classes.sequence, 'FM00'::text), 10, ' '::text)) AS code, + '1'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'FORMEACTIVITE'::text + UNION ALL + SELECT ('LS'::text || to_char(t_classes.sequence, 'FM00'::text)) || t_classes_sections.oid::text AS oid, + (('#LS'::text || t_classes.code) || to_char(t_classes.sequence, 'FM00'::text)) || t_classes_sections.code AS alias, + t_classes_sections.texte, + '2'::text || btrim(rpad(to_char(t_classes.sequence, 'FM00'::text), 10, ' '::text) || t_classes_sections.code) AS code, + '2'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'FORMEACTIVITE'::text + ) + UNION ALL + SELECT ('LS'::text || to_char(t_classes.sequence, 'FM00'::text)) || '0'::text AS oid, + ('#LS'::text || t_classes.code) || '_'::text AS alias, + 'Section non attribuée'::character varying AS texte, + '2'::text || btrim(rpad(to_char(t_classes.sequence, 'FM00'::text), 10, ' '::text) || chr(255)) AS code, + '2'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'FORMEACTIVITE'::text + ) UNION + SELECT 'DT'::text || t_forme_activite.oid::text AS oid, + '#DT'::text || t_forme_activite.code AS alias, + (t_forme_activite.code || ' '::text) || t_forme_activite.texte_court AS texte, + '9'::text || t_forme_activite.code AS code, + '1'::text AS level, + '0'::character(1) AS is_cti + FROM activite.t_forme_activite + WHERE t_forme_activite.oid > 0 + ORDER BY 4, 1, 3; \ No newline at end of file diff --git a/db/schema2/views/v_ghm_c_1.yaml b/db/schema2/views/v_ghm_c_1.yaml new file mode 100644 index 0000000..d3f6135 --- /dev/null +++ b/db/schema2/views/v_ghm_c_1.yaml @@ -0,0 +1,103 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS tri, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'GHM'::text AND v_listes_1.lvl <> '0'::text + UNION + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '1'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'GHM'::text + UNION + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + (t_classes_sections.code || ' '::text) || t_classes_sections.texte AS texte, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'GHM'::text + UNION + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'GHM'::text + UNION + SELECT 'CM'::text || t_ghm_c.cmd_id::text AS oid, + (t_ghm_c.cmd_code || ' '::text) || t_ghm_c.cmd_texte AS texte, + '1'::text AS level, + '6'::text || t_ghm_c.cmd_code AS tri, + '0'::character(1) AS is_cti + FROM activite.t_ghm_c + WHERE (t_ghm_c.ghm_id IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ghm'::text)) + UNION + SELECT 'G5'::text || t_ghm_c.ghm5_id::text AS oid, + (t_ghm_c.ghm5_code || ' '::text) || t_ghm_c.ghm5_texte AS texte, + '2'::text AS level, + ('6'::text || t_ghm_c.cmd_code) || t_ghm_c.ghm5_code AS tri, + '0'::character(1) AS is_cti + FROM activite.t_ghm_c + WHERE (t_ghm_c.ghm_id IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ghm'::text)) + UNION + SELECT 'GM'::text || t_ghm_c.ghm_id::text AS oid, + (t_ghm_c.ghm_code || ' '::text) || t_ghm_c.ghm_texte AS texte, + '3'::text AS level, + (('6'::text || t_ghm_c.cmd_code) || t_ghm_c.ghm5_code) || t_ghm_c.ghm_code AS tri, + '0'::character(1) AS is_cti + FROM activite.t_ghm_c + WHERE (t_ghm_c.ghm_id IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ghm'::text)) + UNION + SELECT '-8'::text AS oid, + 'Sévérités'::text AS texte, + '1'::text AS level, + '7'::text AS tri, + '0'::character(1) AS is_cti + UNION + SELECT 'SV'::text || t_ghm_c.severite_ghm_id::text AS oid, + (t_ghm_c.severite_ghm_code::text || ' '::text) || t_ghm_c.severite_ghm_texte AS texte, + '2'::text AS level, + '7'::text || t_ghm_c.severite_ghm_code::text AS tri, + '0'::character(1) AS is_cti + FROM activite.t_ghm_c + WHERE (t_ghm_c.ghm_id IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ghm'::text)) + UNION + SELECT '-8'::text AS oid, + 'Poles OAP'::text AS texte, + '1'::text AS level, + '8'::text AS tri, + '0'::character(1) AS is_cti + ORDER BY 4; \ No newline at end of file diff --git a/db/schema2/views/v_ghmgme_1.yaml b/db/schema2/views/v_ghmgme_1.yaml new file mode 100644 index 0000000..7e6504d --- /dev/null +++ b/db/schema2/views/v_ghmgme_1.yaml @@ -0,0 +1,195 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + ''::text AS code, + v_listes_1.texte, + v_listes_1.liste_alias_combo AS alias, + v_listes_1.lvl AS level, + ('00'::text || v_listes_1.sort) || chr(1) AS tri, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'GHMGME'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + ''::text AS code, + t_classes.texte, + ''::text AS alias, + '1'::text AS level, + '05'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'GHMGME'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + ''::text AS code, + t_classes_sections.texte, + ('#LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.code AS alias, + '2'::text AS level, + '05'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'GHMGME'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + ''::text AS code, + 'Section non attribuée'::character varying AS texte, + ''::text AS alias, + '2'::text AS level, + '05'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'GHMGME'::text + UNION ALL + SELECT '-8'::text AS oid, + ''::text AS code, + 'MCO-GHM'::text AS texte, + ''::text AS alias, + '1'::text AS level, + '60'::text AS tri, + ''::character(1) AS is_cti + FROM activite.t_ghmgme_c + WHERE t_ghmgme_c.ghmgme_id <> 0 AND (t_ghmgme_c.ghmgme_id IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ghmgme'::text)) + GROUP BY '-8'::text, ''::text, 'MCO-GHM'::text, '1'::text, '60'::text + UNION ALL + SELECT 'CM'::text || t_ghmgme_c.cmd_id::text AS oid, + t_ghmgme_c.cmd_code AS code, + (t_ghmgme_c.cmd_code || ' '::text) || t_ghmgme_c.cmd_texte AS texte, + ''::text AS alias, + '2'::text AS level, + '61'::text || t_ghmgme_c.cmd_code AS tri, + '0'::character(1) AS is_cti + FROM activite.t_ghmgme_c + WHERE (t_ghmgme_c.ghm_id IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ghmgme'::text)) + GROUP BY 'CM'::text || t_ghmgme_c.cmd_id::text, t_ghmgme_c.cmd_code, t_ghmgme_c.cmd_texte, ''::text, '2'::text, '61'::text, '0'::character(1) + UNION ALL + SELECT 'G5'::text || t_ghmgme_c.ghm5_id::text AS oid, + t_ghmgme_c.ghm5_code AS code, + (t_ghmgme_c.ghm5_code || ' '::text) || t_ghmgme_c.ghm5_texte AS texte, + ''::text AS alias, + '3'::text AS level, + ('61'::text || t_ghmgme_c.cmd_code) || t_ghmgme_c.ghm5_code AS tri, + '0'::character(1) AS is_cti + FROM activite.t_ghmgme_c + WHERE (t_ghmgme_c.ghm_id IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ghmgme'::text)) + GROUP BY 'G5'::text || t_ghmgme_c.ghm5_id::text, t_ghmgme_c.ghm5_code, t_ghmgme_c.ghm5_texte, ''::text, '3'::text, ('61'::text || t_ghmgme_c.cmd_code) || t_ghmgme_c.ghm5_code, '0'::character(1) + UNION ALL + SELECT 'GM'::text || t_ghmgme_c.ghmgme_id::text AS oid, + t_ghmgme_c.ghmgme_code AS code, + (t_ghmgme_c.ghmgme_code || ' '::text) || t_ghmgme_c.ghmgme_texte AS texte, + ''::text AS alias, + '4'::text AS level, + ((('61'::text || t_ghmgme_c.cmd_code) || t_ghmgme_c.ghm5_code) || t_ghmgme_c.ghmgme_code) || + CASE + WHEN t_ghmgme_c.ghmgme_id = 0 THEN '00000'::text + ELSE t_ghmgme_c.ghmgme_code + END AS tri, + '0'::character(1) AS is_cti + FROM activite.t_ghmgme_c + WHERE t_ghmgme_c.ghmgme_id <> 0 AND (t_ghmgme_c.type_pmsi = ANY (ARRAY['1'::text, '12'::text, '*'::text])) AND (t_ghmgme_c.ghmgme_id IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ghmgme'::text)) + GROUP BY 'GM'::text || t_ghmgme_c.ghmgme_id::text, t_ghmgme_c.ghmgme_code, (t_ghmgme_c.ghmgme_code || ' '::text) || t_ghmgme_c.ghmgme_texte, ''::text, '4'::text, ((('61'::text || t_ghmgme_c.cmd_code) || t_ghmgme_c.ghm5_code) || t_ghmgme_c.ghmgme_code) || + CASE + WHEN t_ghmgme_c.ghmgme_id = 0 THEN '00000'::text + ELSE t_ghmgme_c.ghmgme_code + END, '0'::character(1) + UNION ALL + SELECT '-8'::text AS oid, + ''::text AS code, + 'SSR-GME'::text AS texte, + ''::text AS alias, + '1'::text AS level, + '70'::text AS tri, + '0'::character(1) AS is_cti + FROM activite.t_ghmgme_c + WHERE t_ghmgme_c.ghmgme_id <> 0 AND (t_ghmgme_c.ghmgme_id IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ghmgme'::text)) + GROUP BY '-8'::text, ''::text, 'MCO-GME'::text, '1'::text, '8'::text + UNION ALL + SELECT 'CM'::text || t_ghmgme_c.cm_id::text AS oid, + t_ghmgme_c.cm_code AS code, + (t_ghmgme_c.cm_code || ' '::text) || t_ghmgme_c.cm_texte AS texte, + ''::text AS alias, + '2'::text AS level, + '71'::text || + CASE + WHEN t_ghmgme_c.cm_id = 0 THEN '00'::text + ELSE t_ghmgme_c.cm_code + END AS tri, + '0'::character(1) AS is_cti + FROM activite.t_ghmgme_c + WHERE t_ghmgme_c.gme_id <> 0 AND (t_ghmgme_c.gme_id IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ghmgme'::text)) + GROUP BY 'CM'::text || t_ghmgme_c.cm_id::text, t_ghmgme_c.cm_code, (t_ghmgme_c.cm_code || ' '::text) || t_ghmgme_c.cm_texte, ''::text, '1'::text, '71'::text || + CASE + WHEN t_ghmgme_c.cm_id = 0 THEN '00'::text + ELSE t_ghmgme_c.cm_code + END + UNION ALL + SELECT 'G5'::text || t_ghmgme_c.rgme_id::text AS oid, + t_ghmgme_c.rgme_code AS code, + (t_ghmgme_c.rgme_code || ' '::text) || t_ghmgme_c.rgme_texte AS texte, + ''::text AS alias, + '3'::text AS level, + '71'::text || + CASE + WHEN t_ghmgme_c.rgme_id = 0 THEN '0000'::text + ELSE (t_ghmgme_c.cm_code || chr(1)) || t_ghmgme_c.rgme_code + END AS tri, + '0'::character(1) AS is_cti + FROM activite.t_ghmgme_c + WHERE t_ghmgme_c.gme_id <> 0 AND (t_ghmgme_c.gme_id IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'gme'::text)) + GROUP BY 'G5'::text || t_ghmgme_c.rgme_id::text, t_ghmgme_c.rgme_code, (t_ghmgme_c.rgme_code || ' '::text) || t_ghmgme_c.rgme_texte, ''::text, '3'::text, '71'::text || + CASE + WHEN t_ghmgme_c.rgme_id = 0 THEN '0000'::text + ELSE (t_ghmgme_c.cm_code || chr(1)) || t_ghmgme_c.rgme_code + END, '0'::character(1) + UNION ALL + SELECT 'GM'::text || t_ghmgme_c.ghmgme_id::text AS oid, + t_ghmgme_c.ghmgme_code AS code, + (t_ghmgme_c.ghmgme_code || ' '::text) || t_ghmgme_c.ghmgme_texte AS texte, + ''::text AS alias, + '4'::text AS level, + '71'::text || + CASE + WHEN t_ghmgme_c.ghmgme_id = 0 THEN '0000'::text + ELSE (((t_ghmgme_c.cm_code || chr(1)) || t_ghmgme_c.rgme_code) || chr(1)) || t_ghmgme_c.ghmgme_code + END AS tri, + '0'::character(1) AS is_cti + FROM activite.t_ghmgme_c + WHERE t_ghmgme_c.ghmgme_id <> 0 AND (t_ghmgme_c.type_pmsi = ANY (ARRAY['2'::text, '12'::text, '*'::text])) AND (t_ghmgme_c.ghmgme_id IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ghmgme'::text)) + GROUP BY 'GM'::text || t_ghmgme_c.ghmgme_id::text, t_ghmgme_c.ghmgme_code, (t_ghmgme_c.ghmgme_code || ' '::text) || t_ghmgme_c.ghmgme_texte, ''::text, '4'::text, '71'::text || + CASE + WHEN t_ghmgme_c.ghmgme_id = 0 THEN '0000'::text + ELSE (((t_ghmgme_c.cm_code || chr(1)) || t_ghmgme_c.rgme_code) || chr(1)) || t_ghmgme_c.ghmgme_code + END, '0'::character(1) + ORDER BY 6; \ No newline at end of file diff --git a/db/schema2/views/v_ghs_1.yaml b/db/schema2/views/v_ghs_1.yaml new file mode 100644 index 0000000..75fa289 --- /dev/null +++ b/db/schema2/views/v_ghs_1.yaml @@ -0,0 +1,19 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS sort + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'GHS'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT 'GH'::text || t_ghs_c.ghs_id::text AS oid, + (COALESCE(t_ghs_c.ghs_code_text,'') || ' '::text) || t_ghs_c.ghs_texte AS texte, + '1'::text AS level, + '9'::text || to_char(t_ghs_c.ghs_code, 'FM0000'::text) AS sort + FROM activite.t_ghs_c + WHERE t_ghs_c.ghs_id <> 0 AND (t_ghs_c.ghs_id IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ghs'::text)) + ORDER BY 4; \ No newline at end of file diff --git a/db/schema2/views/v_gir_2.yaml b/db/schema2/views/v_gir_2.yaml new file mode 100644 index 0000000..632d5a7 --- /dev/null +++ b/db/schema2/views/v_gir_2.yaml @@ -0,0 +1,62 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS sort, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'GIR'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '1'::text AS level, + '3'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'GIR'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + '2'::text AS level, + '3'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'GIR'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + '2'::text AS level, + '3'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'GIR'::text + UNION ALL + SELECT 'DT'::text || t_gir.oid::text AS oid, + (t_gir.code || ' '::text) || + CASE + WHEN t_gir.texte_court <> t_gir.code THEN t_gir.texte_court::character varying + ELSE ''::character varying + END::text AS texte, + '1'::text AS level, + ('9'::text || (t_gir.code || ' '::text)) || t_gir.texte_court AS sort, + '0'::character(1) AS is_cti + FROM base.t_gir + ORDER BY 4; \ No newline at end of file diff --git a/db/schema2/views/v_gme_1.yaml b/db/schema2/views/v_gme_1.yaml new file mode 100644 index 0000000..3df97da --- /dev/null +++ b/db/schema2/views/v_gme_1.yaml @@ -0,0 +1,143 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + ''::text AS code, + v_listes_1.texte, + v_listes_1.liste_alias_combo AS alias, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS tri, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'GME'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + ''::text AS code, + t_classes.texte, + ''::text AS alias, + '1'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'GME'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + ''::text AS code, + t_classes_sections.texte, + ('#LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.code AS alias, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'GME'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + ''::text AS code, + 'Section non attribuée'::character varying AS texte, + ''::text AS alias, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'GME'::text + UNION ALL + SELECT 'CM'::text || t_gme_c.cm_id::text AS oid, + t_gme_c.cm_code AS code, + (t_gme_c.cm_code || ' '::text) || t_gme_c.cm_texte AS texte, + ''::text AS alias, + '1'::text AS level, + '6'::text || + CASE + WHEN t_gme_c.cm_id = 0 THEN '00'::text + ELSE t_gme_c.cm_code + END AS tri, + '0'::character(1) AS is_cti + FROM activite.t_gme_c + WHERE t_gme_c.gme_id <> 0 AND (t_gme_c.gme_id IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'gme'::text)) + GROUP BY ('CM'::text || t_gme_c.cm_id::text), t_gme_c.cm_code, ((t_gme_c.cm_code || ' '::text) || t_gme_c.cm_texte), ''::text, '1'::text, ('6'::text || + CASE + WHEN t_gme_c.cm_id = 0 THEN '00'::text + ELSE t_gme_c.cm_code + END) + UNION ALL + SELECT 'GN'::text || t_gme_c.gn_id::text AS oid, + t_gme_c.gn_code AS code, + (t_gme_c.gn_code || ' '::text) || t_gme_c.gn_texte AS texte, + ''::text AS alias, + '2'::text AS level, + '6'::text || + CASE + WHEN t_gme_c.gn_id = 0 THEN '000'::text + ELSE (t_gme_c.cm_code || chr(1)) || t_gme_c.gn_code + END AS tri, + '0'::character(1) AS is_cti + FROM activite.t_gme_c + WHERE t_gme_c.gme_id <> 0 AND (t_gme_c.gme_id IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'gme'::text)) + GROUP BY ('GN'::text || t_gme_c.gn_id::text), t_gme_c.gn_code, ((t_gme_c.gn_code || ' '::text) || t_gme_c.gn_texte), ''::text, '2'::text, ('6'::text || + CASE + WHEN t_gme_c.gn_id = 0 THEN '000'::text + ELSE (t_gme_c.cm_code || chr(1)) || t_gme_c.gn_code + END) + UNION ALL + SELECT 'RGME'::text || t_gme_c.rgme_id::text AS oid, + t_gme_c.rgme_code AS code, + (t_gme_c.rgme_code || ' '::text) || t_gme_c.rgme_texte AS texte, + ''::text AS alias, + '3'::text AS level, + '6'::text || + CASE + WHEN t_gme_c.rgme_id = 0 THEN '0000'::text + ELSE (((t_gme_c.cm_code || chr(1)) || t_gme_c.gn_code) || chr(1)) || t_gme_c.rgme_code + END AS tri, + '0'::character(1) AS is_cti + FROM activite.t_gme_c + WHERE t_gme_c.gme_id <> 0 AND (t_gme_c.gme_id IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'gme'::text)) + GROUP BY ('RGME'::text || t_gme_c.rgme_id::text), t_gme_c.rgme_code, ((t_gme_c.rgme_code || ' '::text) || t_gme_c.rgme_texte), ''::text, '3'::text, ('6'::text || + CASE + WHEN t_gme_c.rgme_id = 0 THEN '0000'::text + ELSE (((t_gme_c.cm_code || chr(1)) || t_gme_c.gn_code) || chr(1)) || t_gme_c.rgme_code + END) + UNION ALL + SELECT 'GME'::text || t_gme_c.gme_id::text AS oid, + t_gme_c.gme_code AS code, + (t_gme_c.gme_code || ' '::text) || t_gme_c.gme_texte AS texte, + ''::text AS alias, + '4'::text AS level, + '6'::text || + CASE + WHEN t_gme_c.gme_id = 0 THEN '00000'::text + ELSE (((((t_gme_c.cm_code || chr(1)) || t_gme_c.gn_code) || chr(1)) || t_gme_c.rgme_code) || chr(1)) || t_gme_c.gme_code + END AS tri, + '0'::character(1) AS is_cti + FROM activite.t_gme_c + WHERE t_gme_c.gme_id <> 0 AND (t_gme_c.gme_id IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'gme'::text)) + GROUP BY ('GME'::text || t_gme_c.gme_id::text), t_gme_c.gme_code, ((t_gme_c.gme_code || ' '::text) || t_gme_c.gme_texte), ''::text, '4'::text, ('6'::text || + CASE + WHEN t_gme_c.gme_id = 0 THEN '00000'::text + ELSE (((((t_gme_c.cm_code || chr(1)) || t_gme_c.gn_code) || chr(1)) || t_gme_c.rgme_code) || chr(1)) || t_gme_c.gme_code + END), ('0'::character(1)) + ORDER BY 6; \ No newline at end of file diff --git a/db/schema2/views/v_indicateurs_cumules_1.yaml b/db/schema2/views/v_indicateurs_cumules_1.yaml new file mode 100644 index 0000000..18f64de --- /dev/null +++ b/db/schema2/views/v_indicateurs_cumules_1.yaml @@ -0,0 +1,6 @@ +src: | + SELECT p_indicateurs_cumules.date_reference AS jour_now, + date(date_trunc('month'::text, p_indicateurs_cumules.date_reference::timestamp with time zone) + '1 mon'::interval - '1 day'::interval) AS mois_now, + date(date_trunc('year'::text, p_indicateurs_cumules.date_reference::timestamp with time zone) + '1 year'::interval - '1 day'::interval) AS annee_now + FROM activite.p_indicateurs_cumules + WHERE p_indicateurs_cumules.periode_type = 'NOW'::text; \ No newline at end of file diff --git a/db/schema2/views/v_indicateurs_cumules_2.yaml b/db/schema2/views/v_indicateurs_cumules_2.yaml new file mode 100644 index 0000000..3414cd8 --- /dev/null +++ b/db/schema2/views/v_indicateurs_cumules_2.yaml @@ -0,0 +1,26 @@ +src: | + SELECT p_indicateurs_cumules.indicateur_id, + 'activite.'::text || t_indicateurs.code AS indicateur_code, + date_part('month'::text, p_indicateurs_cumules.date_reference) AS mois, + p_indicateurs_cumules.date_reference, + CASE date_part('month'::text, p_indicateurs_cumules.date_reference) + WHEN 1 THEN 'Jan'::text + WHEN 2 THEN 'Fev'::text + WHEN 3 THEN 'Mars'::text + WHEN 4 THEN 'Avr'::text + WHEN 5 THEN 'Mai'::text + WHEN 6 THEN 'Juin'::text + WHEN 7 THEN 'Juil'::text + WHEN 8 THEN 'Aout'::text + WHEN 9 THEN 'Sep'::text + WHEN 10 THEN 'Oct'::text + WHEN 11 THEN 'Nov'::text + WHEN 12 THEN 'Dec'::text + ELSE date_part('month'::text, p_indicateurs_cumules.date_reference)::text + END AS mois_texte, + p_indicateurs_cumules.value, + p_indicateurs_cumules.value_cum, + p_indicateurs_cumules.value_cum12 + FROM activite.p_indicateurs_cumules + JOIN activite.t_indicateurs ON p_indicateurs_cumules.indicateur_id = t_indicateurs.oid + WHERE p_indicateurs_cumules.periode_type = 'M'::text; \ No newline at end of file diff --git a/db/schema2/views/v_indicateurs_cumules_2b.yaml b/db/schema2/views/v_indicateurs_cumules_2b.yaml new file mode 100644 index 0000000..8f49f58 --- /dev/null +++ b/db/schema2/views/v_indicateurs_cumules_2b.yaml @@ -0,0 +1,26 @@ +src: | + SELECT p_indicateurs_cumules.indicateur_id, + 'activite.'::text || t_indicateurs.code AS indicateur_code, + date_part('month'::text, p_indicateurs_cumules.date_reference) AS mois, + p_indicateurs_cumules.date_reference, + CASE date_part('month'::text, p_indicateurs_cumules.date_reference) + WHEN 1 THEN 'Jan'::text + WHEN 2 THEN 'Fev'::text + WHEN 3 THEN 'Mars'::text + WHEN 4 THEN 'Avr'::text + WHEN 5 THEN 'Mai'::text + WHEN 6 THEN 'Juin'::text + WHEN 7 THEN 'Juil'::text + WHEN 8 THEN 'Aout'::text + WHEN 9 THEN 'Sep'::text + WHEN 10 THEN 'Oct'::text + WHEN 11 THEN 'Nov'::text + WHEN 12 THEN 'Dec'::text + ELSE date_part('month'::text, p_indicateurs_cumules.date_reference)::text + END AS mois_texte, + p_indicateurs_cumules.value, + p_indicateurs_cumules.value_cum, + p_indicateurs_cumules.value_cum12 + FROM activite.p_indicateurs_cumules + JOIN activite.t_indicateurs ON p_indicateurs_cumules.indicateur_id = t_indicateurs.oid + WHERE p_indicateurs_cumules.periode_type = 'M_B'::text; \ No newline at end of file diff --git a/db/schema2/views/v_indicateurs_cumules_2c.yaml b/db/schema2/views/v_indicateurs_cumules_2c.yaml new file mode 100644 index 0000000..3925a25 --- /dev/null +++ b/db/schema2/views/v_indicateurs_cumules_2c.yaml @@ -0,0 +1,24 @@ +src: | + SELECT 0 AS indicateur_id, + ''::text AS indicateur_code, + date_part('month'::text, p_calendrier_mois.date_debut) AS mois, + p_calendrier_mois.date_debut AS date_reference, + CASE date_part('month'::text, p_calendrier_mois.date_debut) + WHEN 1 THEN 'Jan'::text + WHEN 2 THEN 'Fev'::text + WHEN 3 THEN 'Mars'::text + WHEN 4 THEN 'Avr'::text + WHEN 5 THEN 'Mai'::text + WHEN 6 THEN 'Juin'::text + WHEN 7 THEN 'Juil'::text + WHEN 8 THEN 'Aout'::text + WHEN 9 THEN 'Sep'::text + WHEN 10 THEN 'Oct'::text + WHEN 11 THEN 'Nov'::text + WHEN 12 THEN 'Dec'::text + ELSE date_part('month'::text, p_calendrier_mois.date_debut)::text + END AS mois_texte, + 0 AS value, + 0 AS value_cum, + 0 AS value_cum12 + FROM base.p_calendrier_mois; \ No newline at end of file diff --git a/db/schema2/views/v_indicateurs_cumules_3.yaml b/db/schema2/views/v_indicateurs_cumules_3.yaml new file mode 100644 index 0000000..696f495 --- /dev/null +++ b/db/schema2/views/v_indicateurs_cumules_3.yaml @@ -0,0 +1,30 @@ +src: | + SELECT p_indicateurs_cumules.indicateur_id, + 'activite.'::text || t_indicateurs.code AS indicateur_code, + to_char(p_indicateurs_cumules.date_reference::timestamp with time zone, 'YYYYMMDD'::text) AS jour, + p_indicateurs_cumules.date_reference, + (date_part('day'::text, p_indicateurs_cumules.date_reference)::text || ' '::text) || + CASE date_part('month'::text, p_indicateurs_cumules.date_reference) + WHEN 1 THEN 'Jan'::text + WHEN 2 THEN 'Fev'::text + WHEN 3 THEN 'Mars'::text + WHEN 4 THEN 'Avr'::text + WHEN 5 THEN 'Mai'::text + WHEN 6 THEN 'Juin'::text + WHEN 7 THEN 'Juil'::text + WHEN 8 THEN 'Aout'::text + WHEN 9 THEN 'Sep'::text + WHEN 10 THEN 'Oct'::text + WHEN 11 THEN 'Nov'::text + WHEN 12 THEN 'Dec'::text + ELSE date_part('month'::text, p_indicateurs_cumules.date_reference)::text + END AS jour_texte, + p_calendrier.semaine, + to_char(date_part('week'::text, p_calendrier.date), 'FM00'::text) AS semaine_texte, + p_indicateurs_cumules.value, + p_indicateurs_cumules.value_cum, + p_indicateurs_cumules.value_cum12 + FROM activite.p_indicateurs_cumules + JOIN activite.t_indicateurs ON p_indicateurs_cumules.indicateur_id = t_indicateurs.oid + JOIN base.p_calendrier ON p_indicateurs_cumules.date_reference = p_calendrier.date + WHERE p_indicateurs_cumules.periode_type = 'D'::text; \ No newline at end of file diff --git a/db/schema2/views/v_indicateurs_cumules_3c.yaml b/db/schema2/views/v_indicateurs_cumules_3c.yaml new file mode 100644 index 0000000..c5d3e6f --- /dev/null +++ b/db/schema2/views/v_indicateurs_cumules_3c.yaml @@ -0,0 +1,27 @@ +src: | + SELECT 0 AS indicateur_id, + ''::text AS indicateur_code, + to_char(p_calendrier.date::timestamp with time zone, 'YYYYMMDD'::text) AS jour, + p_calendrier.date AS date_reference, + (date_part('day'::text, p_calendrier.date)::text || ' '::text) || + CASE date_part('month'::text, p_calendrier.date) + WHEN 1 THEN 'Jan'::text + WHEN 2 THEN 'Fev'::text + WHEN 3 THEN 'Mars'::text + WHEN 4 THEN 'Avr'::text + WHEN 5 THEN 'Mai'::text + WHEN 6 THEN 'Juin'::text + WHEN 7 THEN 'Juil'::text + WHEN 8 THEN 'Aout'::text + WHEN 9 THEN 'Sep'::text + WHEN 10 THEN 'Oct'::text + WHEN 11 THEN 'Nov'::text + WHEN 12 THEN 'Dec'::text + ELSE date_part('month'::text, p_calendrier.date)::text + END AS jour_texte, + p_calendrier.semaine, + to_char(date_part('week'::text, p_calendrier.date), 'FM00'::text) AS semaine_texte, + 0 AS value, + 0 AS value_cum, + 0 AS value_cum12 + FROM base.p_calendrier; \ No newline at end of file diff --git a/db/schema2/views/v_intervention_1.yaml b/db/schema2/views/v_intervention_1.yaml new file mode 100644 index 0000000..b157a7c --- /dev/null +++ b/db/schema2/views/v_intervention_1.yaml @@ -0,0 +1,52 @@ +src: | + SELECT p_sejours.no_sejour, + p_intervention.sejour_id, + p_intervention.date_debut, + p_intervention.heure_debut, + p_intervention.medecin_chirurgien_id AS medecin_adm_chirurgien_id, + t_medecins_administratifs_chirurgien.adm_code AS medecin_adm_chirurgien_code, + t_medecins_administratifs_chirurgien.adm_nom AS medecin_adm_chirurgien_nom, + t_medecins_administratifs_chirurgien.adm_prenom AS medecin_adm_chirurgien_prenom, + t_medecins_administratifs_chirurgien.adm_nom_prenom AS medecin_adm_chirurgien_nom_prenom, + t_medecins_administratifs_chirurgien.section_id AS medecin_adm_chirurgien_section_id, + t_medecins_administratifs_chirurgien.section_code AS medecin_adm_chirurgien_section_code, + t_medecins_administratifs_chirurgien.section_texte AS medecin_adm_chirurgien_section_texte, + t_medecins_administratifs_chirurgien.medecin_id AS medecin_chirurgien_id, + t_medecins_administratifs_chirurgien.medecin_code AS medecin_chirurgien_code, + t_medecins_administratifs_chirurgien.nom AS medecin_chirurgien_nom, + t_medecins_administratifs_chirurgien.prenom AS medecin_chirurgien_prenom, + t_medecins_administratifs_chirurgien.nom_prenom AS medecin_chirurgien_nom_prenom, + t_medecins_administratifs_chirurgien.specialite_id AS medecin_chirurgien_specialite_id, + t_medecins_administratifs_chirurgien.specialite_code AS medecin_chirurgien_specialite_code, + t_medecins_administratifs_chirurgien.specialite_texte AS medecin_chirurgien_specialite_texte, + p_intervention.medecin_anesthesiste_id AS medecin_adm_anesthesiste_id, + t_medecins_administratifs_anesthesiste.adm_code AS medecin_adm_anesthesiste_code, + t_medecins_administratifs_anesthesiste.adm_nom AS medecin_adm_anesthesiste_nom, + t_medecins_administratifs_anesthesiste.adm_prenom AS medecin_adm_anesthesiste_prenom, + t_medecins_administratifs_anesthesiste.adm_nom_prenom AS medecin_adm_anesthesiste_nom_prenom, + t_medecins_administratifs_anesthesiste.medecin_id AS medecin_anesthesiste_id, + t_medecins_administratifs_anesthesiste.medecin_code AS medecin_anesthesiste_code, + t_medecins_administratifs_anesthesiste.nom AS medecin_anesthesiste_nom, + t_medecins_administratifs_anesthesiste.prenom AS medecin_anesthesiste_prenom, + t_medecins_administratifs_anesthesiste.nom_prenom AS medecin_anesthesiste_nom_prenom, + t_medecins_administratifs_anesthesiste.specialite_id AS medecin_anesthesiste_specialite_id, + t_medecins_administratifs_anesthesiste.specialite_code AS medecin_anesthesiste_specialite_code, + t_medecins_administratifs_anesthesiste.specialite_texte AS medecin_anesthesiste_specialite_texte, + p_intervention.acte_id, + t_actes_c.code AS acte_code, + t_actes_c.texte_court AS acte_texte, + t_actes_c.section_id AS acte_section_id, + t_actes_c.section_code AS acte_section_code, + t_actes_c.section_texte AS acte_section_texte, + t_actes_c.nomenclature AS acte_nomenclature, + 1::bigint AS acte_nomenclature_id, + 'CCAM'::text AS acte_nomenclature_code, + 'Nomenclature CCAM'::text AS acte_nomenclature_texte, + t_actes_c.ccam_regroupement_id_1 AS ccam_regroupement_id, + t_actes_c.ccam_regroupement_code_1 AS ccam_regroupement_code, + t_actes_c.ccam_regroupement_texte_1 AS ccam_regroupement_texte + FROM activite.p_intervention + JOIN activite.p_sejours ON p_intervention.sejour_id = p_sejours.oid + JOIN activite.t_medecins_administratifs_c t_medecins_administratifs_chirurgien ON p_intervention.medecin_chirurgien_id = t_medecins_administratifs_chirurgien.oid + JOIN activite.t_medecins_administratifs_c t_medecins_administratifs_anesthesiste ON p_intervention.medecin_anesthesiste_id = t_medecins_administratifs_anesthesiste.oid + JOIN activite.t_actes_c ON p_intervention.acte_id = t_actes_c.oid; \ No newline at end of file diff --git a/db/schema2/views/v_lieux_1.yaml b/db/schema2/views/v_lieux_1.yaml new file mode 100644 index 0000000..781631e --- /dev/null +++ b/db/schema2/views/v_lieux_1.yaml @@ -0,0 +1,34 @@ +src: | + SELECT t_lieux.oid, + t_lieux.unite_medicale_id, + t_unites_medicales.code AS unite_medicale_code, + t_unites_medicales.texte_court AS unite_medicale_texte, + t_lieux.unite_fonctionnelle_id, + t_unites_fonctionnelles.code AS unite_fonctionnelle_code, + t_unites_fonctionnelles.texte_court AS unite_fonctionnelle_texte, + t_lieux.mode_traitement_id, + t_modes_traitement.code AS mode_traitement_code, + t_modes_traitement.texte_court AS mode_traitement_texte, + t_lieux.service_facturation_id, + t_services_facturation.code AS service_facturation_code, + t_services_facturation.texte_court AS service_facturation_texte, + t_services_facturation.nb_lits AS service_facturation_nb_lits, + t_lieux.activite_id, + t_activites.code AS activite_code, + t_activites.texte_court AS activite_texte, + t_lits.etage_id, + t_etages.code AS etage_code, + t_etages.texte_court AS etage_texte, + t_etages.nb_lits AS etage_nb_lits, + t_lieux.lit_id, + t_lits.code AS lit_code, + t_lits.texte_court AS lit_texte + FROM activite.t_lieux, + activite.t_services_facturation, + activite.t_activites, + activite.t_lits, + activite.t_etages, + activite.t_unites_fonctionnelles, + activite.t_unites_medicales, + base.t_modes_traitement + WHERE t_lieux.service_facturation_id = t_services_facturation.oid AND t_lieux.activite_id = t_activites.oid AND t_lieux.lit_id = t_lits.oid AND t_lits.etage_id = t_etages.oid AND t_lieux.unite_fonctionnelle_id = t_unites_fonctionnelles.oid AND t_lieux.unite_medicale_id = t_unites_medicales.oid AND t_lieux.mode_traitement_id = t_modes_traitement.oid; \ No newline at end of file diff --git a/db/schema2/views/v_listes_1.yaml b/db/schema2/views/v_listes_1.yaml new file mode 100644 index 0000000..954bcba --- /dev/null +++ b/db/schema2/views/v_listes_1.yaml @@ -0,0 +1,134 @@ +dep: + - v_listes_4 +src: | + SELECT v_listes_4.table_texte || chr(1) AS sort, + v_listes_4.table_id, + v_listes_4.table_code, + (v_listes_4.table_texte || + CASE + WHEN count(DISTINCT + CASE + WHEN v_listes_4.liste_id <> 0 THEN v_listes_4.liste_id + ELSE NULL::bigint + END) > 0 THEN (' ('::text || count(DISTINCT + CASE + WHEN v_listes_4.liste_id <> 0 THEN v_listes_4.liste_id + ELSE NULL::bigint + END)::text) || ')'::text + ELSE ''::text + END)::character varying AS texte, + 0 AS liste_id, + '0'::text AS lvl, + ''::text AS code, + '0'::text AS is_cti, + '0'::text AS is_groupe, + v_listes_4.table_schema AS schema, + ''::text AS utilisateur_createur, + ''::text AS est_partagee_modification, + '0'::text AS liste_show_omit, + '0'::text AS liste_is_omit, + ''::text AS chapitre, + ''::text AS sous_chapitre, + '-8'::text AS liste_id_combo, + ''::text AS liste_alias_combo + FROM activite.v_listes_4 + GROUP BY v_listes_4.table_id, v_listes_4.table_code, v_listes_4.table_texte, v_listes_4.table_schema + UNION ALL + SELECT (((v_listes_4.table_texte || chr(1)) || v_listes_4.liste_chapitre_sortkey) || v_listes_4.liste_chapitre) || chr(1) AS sort, + v_listes_4.table_id, + v_listes_4.table_code, + (v_listes_4.liste_chapitre || + CASE + WHEN count(DISTINCT v_listes_4.liste_id) > 0 THEN (' ('::text || count(DISTINCT v_listes_4.liste_id)::text) || ')'::text + ELSE ''::text + END)::character varying AS texte, + 0 AS liste_id, + '1'::text AS lvl, + ''::text AS code, + '0'::text AS is_cti, + '0'::text AS is_groupe, + v_listes_4.table_schema AS schema, + ''::text AS utilisateur_createur, + ''::text AS est_partagee_modification, + '0'::text AS liste_show_omit, + '0'::text AS liste_is_omit, + (v_listes_4.liste_chapitre || + CASE + WHEN count(DISTINCT v_listes_4.liste_id) > 0 THEN (' ('::text || count(DISTINCT v_listes_4.liste_id)::text) || ')'::text + ELSE ''::text + END)::character varying AS chapitre, + ''::text AS sous_chapitre, + '-8'::text AS liste_id_combo, + ''::text AS liste_alias_combo + FROM activite.v_listes_4 + WHERE v_listes_4.liste_id <> 0 AND v_listes_4.liste_chapitre <> ''::text + GROUP BY v_listes_4.table_id, v_listes_4.table_code, v_listes_4.table_texte, v_listes_4.liste_chapitre, v_listes_4.liste_chapitre_sortkey, v_listes_4.table_schema + UNION ALL + SELECT (((((v_listes_4.table_texte || chr(1)) || v_listes_4.liste_chapitre_sortkey) || v_listes_4.liste_chapitre) || chr(1)) || v_listes_4.liste_sous_chapitre) || chr(1) AS sort, + v_listes_4.table_id, + v_listes_4.table_code, + (v_listes_4.liste_sous_chapitre || + CASE + WHEN count(DISTINCT v_listes_4.liste_id) > 0 THEN (' ('::text || count(DISTINCT v_listes_4.liste_id)::text) || ')'::text + ELSE ''::text + END)::character varying AS texte, + 0 AS liste_id, + '2'::text AS lvl, + ''::text AS code, + '0'::text AS is_cti, + '0'::text AS is_groupe, + v_listes_4.table_schema AS schema, + ''::text AS utilisateur_createur, + ''::text AS est_partagee_modification, + '0'::text AS liste_show_omit, + '0'::text AS liste_is_omit, + (v_listes_4.liste_chapitre || + CASE + WHEN count(DISTINCT v_listes_4.liste_id) > 0 THEN (' ('::text || count(DISTINCT v_listes_4.liste_id)::text) || ')'::text + ELSE ''::text + END)::character varying AS chapitre, + (v_listes_4.liste_sous_chapitre || + CASE + WHEN count(DISTINCT v_listes_4.liste_id) > 0 THEN (' ('::text || count(DISTINCT v_listes_4.liste_id)::text) || ')'::text + ELSE ''::text + END)::character varying AS sous_chapitre, + '-8'::text AS liste_id_combo, + ''::text AS liste_alias_combo + FROM activite.v_listes_4 + WHERE v_listes_4.liste_id <> 0 AND v_listes_4.liste_sous_chapitre <> ''::text + GROUP BY v_listes_4.table_id, v_listes_4.table_code, v_listes_4.table_texte, v_listes_4.liste_chapitre, v_listes_4.liste_chapitre_sortkey, v_listes_4.liste_sous_chapitre, v_listes_4.table_schema + UNION ALL + SELECT (((((((v_listes_4.table_texte || chr(1)) || v_listes_4.liste_chapitre_sortkey) || v_listes_4.liste_chapitre) || chr(1)) || v_listes_4.liste_sous_chapitre) || chr(1)) || v_listes_4.liste_is_omit) || v_listes_4.liste_texte AS sort, + v_listes_4.table_id, + v_listes_4.table_code, + v_listes_4.liste_texte AS texte, + v_listes_4.liste_id, + CASE + WHEN v_listes_4.liste_chapitre = ''::text THEN '1'::text + WHEN v_listes_4.liste_sous_chapitre = ''::text THEN '2'::text + ELSE '3'::text + END AS lvl, + v_listes_4.liste_code AS code, + v_listes_4.liste_is_cti AS is_cti, + v_listes_4.liste_is_groupe AS is_groupe, + v_listes_4.table_schema AS schema, + v_listes_4.liste_utilisateur_createur AS utilisateur_createur, + v_listes_4.liste_est_partagee_modification AS est_partagee_modification, + v_listes_4.liste_show_omit, + v_listes_4.liste_is_omit, + v_listes_4.liste_chapitre AS chapitre, + v_listes_4.liste_sous_chapitre AS sous_chapitre, + CASE + WHEN v_listes_4.liste_id = 0 THEN '-8'::text + WHEN v_listes_4.liste_is_omit = '1'::text THEN 'SL'::text || v_listes_4.liste_id::text + ELSE 'LI'::text || v_listes_4.liste_id::text + END AS liste_id_combo, + CASE + WHEN v_listes_4.liste_id = 0 THEN ''::text + WHEN v_listes_4.liste_code = ''::text THEN ''::text + WHEN v_listes_4.liste_is_omit = '1'::text THEN '#SL'::text || v_listes_4.liste_code + ELSE '#LI'::text || v_listes_4.liste_code + END AS liste_alias_combo + FROM activite.v_listes_4 + WHERE v_listes_4.liste_id <> 0 + ORDER BY 1; \ No newline at end of file diff --git a/db/schema2/views/v_listes_2.yaml b/db/schema2/views/v_listes_2.yaml new file mode 100644 index 0000000..3e79a54 --- /dev/null +++ b/db/schema2/views/v_listes_2.yaml @@ -0,0 +1,11 @@ +src: | + SELECT t_listes_tables.name AS table_name, + t_listes_tables.texte AS table_texte, + t_listes.oid AS liste_id, + t_listes.code AS liste_code, + t_listes.texte AS liste_texte, + t_listes_contenu.to_id + FROM activite.t_listes, + activite.t_listes_tables, + activite.t_listes_contenu + WHERE t_listes.table_id = t_listes_tables.oid AND t_listes.oid = t_listes_contenu.liste_id; \ No newline at end of file diff --git a/db/schema2/views/v_listes_3.yaml b/db/schema2/views/v_listes_3.yaml new file mode 100644 index 0000000..e9304db --- /dev/null +++ b/db/schema2/views/v_listes_3.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_listes.oid AS liste_id, + t_listes.code AS liste_code, + t_listes.texte AS liste_texte, + t_listes_contenu.to_id + FROM activite.t_listes, + activite.t_listes_contenu + WHERE t_listes.oid = t_listes_contenu.liste_id; \ No newline at end of file diff --git a/db/schema2/views/v_listes_4.yaml b/db/schema2/views/v_listes_4.yaml new file mode 100644 index 0000000..5278b63 --- /dev/null +++ b/db/schema2/views/v_listes_4.yaml @@ -0,0 +1,178 @@ +src: | + ( + ( + SELECT 'activite'::text AS table_schema, + t_listes_tables.oid AS table_id, + t_listes_tables.name AS table_name, + t_listes_tables.code AS table_code, + t_listes_tables.texte AS table_texte, + COALESCE(t_listes.oid, 0::bigint) AS liste_id, + COALESCE(t_listes.code, ''::character varying::text) AS liste_code, + COALESCE(t_listes.texte, ''::character varying::text) AS liste_texte, + COALESCE(t_listes.is_cti, '0'::bpchar) AS liste_is_cti, + CASE + WHEN substr(t_listes.code, 1, 4) = ANY (ARRAY['VIT_'::text, 'VED_'::text, 'HPM_'::text, t_settings.value || '_'::text]) THEN '1'::text + WHEN substr(t_listes.code, 1, 3) = 'VED'::text THEN '1'::text + ELSE '0'::text + END AS liste_is_groupe, + COALESCE(t_listes.utilisateur_createur, ''::character varying::text) AS liste_utilisateur_createur, + COALESCE(t_listes.show_omit, '0'::bpchar) AS liste_show_omit, + '0'::text AS liste_is_omit, + COALESCE(t_listes.est_partagee_modification, ''::bpchar) AS liste_est_partagee_modification, + CASE + WHEN t_listes.is_cti = '1'::bpchar THEN 'Listes CTI'::text + WHEN substr(t_listes.code, 1, 4) = 'CTI_'::text THEN 'Listes CTI'::text + WHEN t_settings.value <> ''::text AND substr(t_listes.code, 1, 4) = (t_settings.value || '_'::text) THEN 'Listes Groupe'::text + WHEN substr(t_listes.code, 1, 4) = 'VIT_'::text THEN 'Listes Groupe'::text + WHEN substr(t_listes.code, 1, 4) = 'VED_'::text THEN 'Listes Groupe'::text + WHEN substr(t_listes.code, 1, 4) = 'HPM_'::text THEN 'Listes Groupe'::text + WHEN substr(t_listes.code, 1, 3) = 'VED'::text THEN 'Listes Groupe'::text + ELSE 'Listes Etablissement'::text + END AS liste_chapitre, + CASE + WHEN t_listes.is_cti = '1'::bpchar THEN '3'::text + WHEN substr(t_listes.code, 1, 4) = 'CTI_'::text THEN '3'::text + WHEN t_settings.value <> ''::text AND substr(t_listes.code, 1, 4) = (t_settings.value || '_'::text) THEN '2'::text + WHEN substr(t_listes.code, 1, 4) = 'VIT_'::text THEN '2'::text + WHEN substr(t_listes.code, 1, 4) = 'VED_'::text THEN '2'::text + WHEN substr(t_listes.code, 1, 4) = 'HPM_'::text THEN '2'::text + WHEN substr(t_listes.code, 1, 3) = 'VED'::text THEN '2'::text + ELSE '1'::text + END AS liste_chapitre_sortkey, + COALESCE(t_listes.chapitre, ''::character varying::text) AS liste_sous_chapitre + FROM activite.t_listes_tables + LEFT JOIN activite.t_listes ON t_listes.table_id = t_listes_tables.oid + LEFT JOIN base.t_settings ON t_settings.code = 'REFSETTINGS/PREFIX'::text + WHERE t_listes_tables.code <> ANY (ARRAY['FINESS'::text, 'POLE'::text]) + UNION ALL + SELECT 'activite'::text AS table_schema, + t_listes_tables.oid AS table_id, + t_listes_tables.name AS table_name, + t_listes_tables.code AS table_code, + t_listes_tables.texte AS table_texte, + COALESCE(t_listes.oid, 0::bigint) AS liste_id, + COALESCE(t_listes.code, ''::character varying::text) AS liste_code, + COALESCE('Sauf '::text || t_listes.texte, ''::character varying::text) AS liste_texte, + COALESCE(t_listes.is_cti, '0'::bpchar) AS liste_is_cti, + CASE + WHEN substr(t_listes.code, 1, 4) = ANY (ARRAY['VIT_'::text, 'VED_'::text, 'HPM_'::text, t_settings.value || '_'::text]) THEN '1'::text + WHEN substr(t_listes.code, 1, 3) = 'VED'::text THEN '1'::text + ELSE '0'::text + END AS liste_is_groupe, + COALESCE(t_listes.utilisateur_createur, ''::character varying::text) AS liste_utilisateur_createur, + COALESCE(t_listes.show_omit, '0'::bpchar) AS liste_show_omit, + '1'::text AS liste_is_omit, + COALESCE(t_listes.est_partagee_modification, ''::bpchar) AS liste_est_partagee_modification, + CASE + WHEN t_listes.is_cti = '1'::bpchar THEN 'Listes CTI'::text + WHEN substr(t_listes.code, 1, 4) = 'CTI_'::text THEN 'Listes CTI'::text + WHEN t_settings.value <> ''::text AND substr(t_listes.code, 1, 4) = (t_settings.value || '_'::text) THEN 'Listes Groupe'::text + WHEN substr(t_listes.code, 1, 4) = 'VIT_'::text THEN 'Listes Groupe'::text + WHEN substr(t_listes.code, 1, 4) = 'VED_'::text THEN 'Listes Groupe'::text + WHEN substr(t_listes.code, 1, 4) = 'HPM_'::text THEN 'Listes Groupe'::text + WHEN substr(t_listes.code, 1, 3) = 'VED'::text THEN 'Listes Groupe'::text + ELSE 'Listes Etablissement'::text + END AS liste_chapitre, + CASE + WHEN t_listes.is_cti = '1'::bpchar THEN '3'::text + WHEN substr(t_listes.code, 1, 4) = 'CTI_'::text THEN '3'::text + WHEN t_settings.value <> ''::text AND substr(t_listes.code, 1, 4) = (t_settings.value || '_'::text) THEN '2'::text + WHEN substr(t_listes.code, 1, 4) = 'VIT_'::text THEN '2'::text + WHEN substr(t_listes.code, 1, 4) = 'VED_'::text THEN '2'::text + WHEN substr(t_listes.code, 1, 4) = 'HPM_'::text THEN '2'::text + WHEN substr(t_listes.code, 1, 3) = 'VED'::text THEN '2'::text + ELSE '1'::text + END AS liste_chapitre_sortkey, + COALESCE(t_listes.chapitre, ''::character varying::text) AS liste_sous_chapitre + FROM activite.t_listes_tables + LEFT JOIN activite.t_listes ON t_listes.table_id = t_listes_tables.oid + LEFT JOIN base.t_settings ON t_settings.code = 'REFSETTINGS/PREFIX'::text + WHERE t_listes.show_omit = '1'::bpchar AND (t_listes_tables.code <> ANY (ARRAY['FINESS'::text, 'POLE'::text])) + ) UNION + SELECT 'base'::text AS table_schema, + t_listes_tables.oid AS table_id, + t_listes_tables.name AS table_name, + t_listes_tables.code AS table_code, + t_listes_tables.texte AS table_texte, + COALESCE(t_listes.oid, 0::bigint) AS liste_id, + COALESCE(t_listes.code, ''::character varying::text) AS liste_code, + COALESCE(t_listes.texte, ''::character varying::text) AS liste_texte, + COALESCE(t_listes.is_cti, '0'::bpchar) AS liste_is_cti, + CASE + WHEN substr(t_listes.code, 1, 4) = ANY (ARRAY['VIT_'::text, 'VED_'::text, 'HPM_'::text, t_settings.value || '_'::text]) THEN '1'::text + WHEN substr(t_listes.code, 1, 3) = 'VED'::text THEN '1'::text + ELSE '0'::text + END AS liste_is_groupe, + COALESCE(t_listes.utilisateur_createur, ''::character varying::text) AS liste_utilisateur_createur, + COALESCE(t_listes.show_omit, '0'::bpchar) AS liste_show_omit, + '0'::text AS liste_is_omit, + COALESCE(t_listes.est_partagee_modification, ''::bpchar) AS liste_est_partagee_modification, + CASE + WHEN t_listes.is_cti = '1'::bpchar THEN 'Listes CTI'::text + WHEN substr(t_listes.code, 1, 4) = 'CTI_'::text THEN 'Listes CTI'::text + WHEN t_settings.value <> ''::text AND substr(t_listes.code, 1, 4) = (t_settings.value || '_'::text) THEN 'Listes Groupe'::text + WHEN substr(t_listes.code, 1, 4) = 'VIT_'::text THEN 'Listes Groupe'::text + WHEN substr(t_listes.code, 1, 4) = 'VED_'::text THEN 'Listes Groupe'::text + WHEN substr(t_listes.code, 1, 4) = 'HPM_'::text THEN 'Listes Groupe'::text + WHEN substr(t_listes.code, 1, 3) = 'VED'::text THEN 'Listes Groupe'::text + ELSE 'Listes Etablissement'::text + END AS liste_chapitre, + CASE + WHEN t_listes.is_cti = '1'::bpchar THEN '3'::text + WHEN substr(t_listes.code, 1, 4) = 'CTI_'::text THEN '3'::text + WHEN t_settings.value <> ''::text AND substr(t_listes.code, 1, 4) = (t_settings.value || '_'::text) THEN '2'::text + WHEN substr(t_listes.code, 1, 4) = 'VIT_'::text THEN '2'::text + WHEN substr(t_listes.code, 1, 4) = 'VED_'::text THEN '2'::text + WHEN substr(t_listes.code, 1, 4) = 'HPM_'::text THEN '2'::text + WHEN substr(t_listes.code, 1, 3) = 'VED'::text THEN '2'::text + ELSE '1'::text + END AS liste_chapitre_sortkey, + COALESCE(t_listes.chapitre, ''::character varying::text) AS liste_sous_chapitre + FROM base.t_listes_tables + LEFT JOIN base.t_listes ON t_listes.table_id = t_listes_tables.oid + LEFT JOIN base.t_settings ON t_settings.code = 'REFSETTINGS/PREFIX'::text + WHERE t_listes_tables.code = ANY (ARRAY['FINESS'::text, 'POLE'::text]) + ) UNION ALL + SELECT 'base'::text AS table_schema, + t_listes_tables.oid AS table_id, + t_listes_tables.name AS table_name, + t_listes_tables.code AS table_code, + t_listes_tables.texte AS table_texte, + COALESCE(t_listes.oid, 0::bigint) AS liste_id, + COALESCE(t_listes.code, ''::character varying::text) AS liste_code, + COALESCE('Sauf '::text || t_listes.texte, ''::character varying::text) AS liste_texte, + COALESCE(t_listes.is_cti, '0'::bpchar) AS liste_is_cti, + CASE + WHEN substr(t_listes.code, 1, 4) = ANY (ARRAY['VIT_'::text, 'VED_'::text, 'HPM_'::text, t_settings.value || '_'::text]) THEN '1'::text + WHEN substr(t_listes.code, 1, 3) = 'VED'::text THEN '1'::text + ELSE '0'::text + END AS liste_is_groupe, + COALESCE(t_listes.utilisateur_createur, ''::character varying::text) AS liste_utilisateur_createur, + COALESCE(t_listes.show_omit, '0'::bpchar) AS liste_show_omit, + '1'::text AS liste_is_omit, + COALESCE(t_listes.est_partagee_modification, ''::bpchar) AS liste_est_partagee_modification, + CASE + WHEN t_listes.is_cti = '1'::bpchar THEN 'Listes CTI'::text + WHEN substr(t_listes.code, 1, 4) = 'CTI_'::text THEN 'Listes CTI'::text + WHEN t_settings.value <> ''::text AND substr(t_listes.code, 1, 4) = (t_settings.value || '_'::text) THEN 'Listes Groupe'::text + WHEN substr(t_listes.code, 1, 4) = 'VIT_'::text THEN 'Listes Groupe'::text + WHEN substr(t_listes.code, 1, 4) = 'VED_'::text THEN 'Listes Groupe'::text + WHEN substr(t_listes.code, 1, 4) = 'HPM_'::text THEN 'Listes Groupe'::text + WHEN substr(t_listes.code, 1, 3) = 'VED'::text THEN 'Listes Groupe'::text + ELSE 'Listes Etablissement'::text + END AS liste_chapitre, + CASE + WHEN t_listes.is_cti = '1'::bpchar THEN '3'::text + WHEN substr(t_listes.code, 1, 4) = 'CTI_'::text THEN '3'::text + WHEN t_settings.value <> ''::text AND substr(t_listes.code, 1, 4) = (t_settings.value || '_'::text) THEN '2'::text + WHEN substr(t_listes.code, 1, 4) = 'VIT_'::text THEN '2'::text + WHEN substr(t_listes.code, 1, 4) = 'VED_'::text THEN '2'::text + WHEN substr(t_listes.code, 1, 4) = 'HPM_'::text THEN '2'::text + WHEN substr(t_listes.code, 1, 3) = 'VED'::text THEN '2'::text + ELSE '1'::text + END AS liste_chapitre_sortkey, + COALESCE(t_listes.chapitre, ''::character varying::text) AS liste_sous_chapitre + FROM base.t_listes_tables + LEFT JOIN base.t_listes ON t_listes.table_id = t_listes_tables.oid + LEFT JOIN base.t_settings ON t_settings.code = 'REFSETTINGS/PREFIX'::text + WHERE t_listes.show_omit = '1'::bpchar AND (t_listes_tables.code = ANY (ARRAY['FINESS'::text, 'POLE'::text])); \ No newline at end of file diff --git a/db/schema2/views/v_lits_2.yaml b/db/schema2/views/v_lits_2.yaml new file mode 100644 index 0000000..10c8b75 --- /dev/null +++ b/db/schema2/views/v_lits_2.yaml @@ -0,0 +1,66 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS sort, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'LIT'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '1'::text AS level, + '3'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'LIT'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + '2'::text AS level, + '3'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'LIT'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + '2'::text AS level, + '3'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'LIT'::text + UNION ALL + SELECT 'LT'::text || t_lits.oid::text AS oid, + (((t_etages.code || '-'::text) || t_lits.code) || ' '::text) || + CASE + WHEN t_lits.texte_court <> t_lits.code THEN t_lits.texte_court::character varying + ELSE ''::character varying + END::text AS texte, + '1'::text AS level, + ('9'::text || ((t_etages.code || ' '::text) || (t_lits.code || ' '::text))) || t_lits.texte_court AS sort, + '0'::character(1) AS is_cti + FROM activite.t_lits + JOIN activite.t_etages ON t_lits.etage_id = t_etages.oid + WHERE (t_lits.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'lit'::text)) + ORDER BY 4; \ No newline at end of file diff --git a/db/schema2/views/v_lpp_1.yaml b/db/schema2/views/v_lpp_1.yaml new file mode 100644 index 0000000..485f618 --- /dev/null +++ b/db/schema2/views/v_lpp_1.yaml @@ -0,0 +1,124 @@ +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + ''::text AS code, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS tri, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM base.v_listes_1 + WHERE v_listes_1.table_code = 'LPP'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + ''::text AS code, + '1'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM base.t_classes, + base.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'LPP'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + ''::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM base.t_classes, + base.t_classes_sections, + base.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'LPP'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + ''::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM base.t_classes, + base.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'LPP'::text + UNION ALL + SELECT 'D1'::text || t_lpp_c.classification_atc_1_id::text AS oid, + max((t_lpp_c.classification_atc_1_code::text || ' '::text) || t_lpp_c.classification_atc_1_texte::text) AS texte, + ''::text AS code, + '1'::text AS level, + max('6'::text || rpad(t_lpp_c.classification_atc_1_code::text, 10, ' '::text)) AS tri, + '0'::bpchar AS is_cti + FROM activite.t_lpp_c + WHERE t_lpp_c.classification_atc_id <> 0 AND (t_lpp_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'lpp'::text)) + GROUP BY ('D1'::text || t_lpp_c.classification_atc_1_id::text) + UNION ALL + SELECT 'D2'::text || t_lpp_c.classification_atc_2_id::text AS oid, + max((t_lpp_c.classification_atc_2_code::text || ' '::text) || t_lpp_c.classification_atc_2_texte::text) AS texte, + ''::text AS code, + '2'::text AS level, + max(('6'::text || rpad(t_lpp_c.classification_atc_1_code::text, 10, ' '::text)) || rpad(t_lpp_c.classification_atc_2_code::text, 10, ' '::text)) AS tri, + '0'::bpchar AS is_cti + FROM activite.t_lpp_c + WHERE t_lpp_c.classification_atc_id <> 0 AND (t_lpp_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'lpp'::text)) + GROUP BY ('D2'::text || t_lpp_c.classification_atc_2_id::text) + UNION ALL + SELECT 'D3'::text || t_lpp_c.classification_atc_3_id::text AS oid, + max((t_lpp_c.classification_atc_3_code::text || ' '::text) || t_lpp_c.classification_atc_3_texte::text) AS texte, + ''::text AS code, + '3'::text AS level, + max((('6'::text || rpad(t_lpp_c.classification_atc_1_code::text, 10, ' '::text)) || rpad(t_lpp_c.classification_atc_2_code::text, 10, ' '::text)) || rpad(t_lpp_c.classification_atc_3_code::text, 10, ' '::text)) AS tri, + '0'::bpchar AS is_cti + FROM activite.t_lpp_c + WHERE t_lpp_c.classification_atc_id <> 0 AND (t_lpp_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'lpp'::text)) + GROUP BY ('D3'::text || t_lpp_c.classification_atc_3_id::text) + UNION ALL + SELECT 'D4'::text || t_lpp_c.classification_atc_4_id::text AS oid, + max((t_lpp_c.classification_atc_4_code::text || ' '::text) || t_lpp_c.classification_atc_4_texte::text) AS texte, + ''::text AS code, + '4'::text AS level, + max(((('6'::text || rpad(t_lpp_c.classification_atc_1_code::text, 10, ' '::text)) || rpad(t_lpp_c.classification_atc_2_code::text, 10, ' '::text)) || rpad(t_lpp_c.classification_atc_3_code::text, 10, ' '::text)) || rpad(t_lpp_c.classification_atc_4_code::text, 10, ' '::text)) AS tri, + '0'::bpchar AS is_cti + FROM activite.t_lpp_c + WHERE t_lpp_c.classification_atc_id <> 0 AND (t_lpp_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'lpp'::text)) + GROUP BY ('D4'::text || t_lpp_c.classification_atc_4_id::text) + UNION ALL + SELECT 'D5'::text || t_lpp_c.classification_atc_id::text AS oid, + max((t_lpp_c.classification_atc_code::text || ' '::text) || t_lpp_c.classification_atc_texte::text) AS texte, + ''::text AS code, + '5'::text AS level, + max((((('6'::text || rpad(t_lpp_c.classification_atc_1_code::text, 10, ' '::text)) || rpad(t_lpp_c.classification_atc_2_code::text, 10, ' '::text)) || rpad(t_lpp_c.classification_atc_3_code::text, 10, ' '::text)) || rpad(t_lpp_c.classification_atc_4_code::text, 10, ' '::text)) || rpad(t_lpp_c.classification_atc_code::text, 10, ' '::text)) AS tri, + '0'::bpchar AS is_cti + FROM activite.t_lpp_c + WHERE t_lpp_c.classification_atc_id <> 0 AND (t_lpp_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'lpp'::text)) + GROUP BY ('D5'::text || t_lpp_c.classification_atc_id::text) + UNION ALL + SELECT 'DT'::text || t_lpp_c.oid::text AS oid, + (t_lpp_c.code || ' '::text) || t_lpp_c.texte_court AS texte, + t_lpp_c.code, + '1'::text AS level, + '9'::text || t_lpp_c.code AS tri, + '0'::character(1) AS is_cti + FROM activite.t_lpp_c + WHERE (t_lpp_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'lpp'::text)) + ORDER BY 5; \ No newline at end of file diff --git a/db/schema2/views/v_medecins_3.yaml b/db/schema2/views/v_medecins_3.yaml new file mode 100644 index 0000000..f8c19ec --- /dev/null +++ b/db/schema2/views/v_medecins_3.yaml @@ -0,0 +1,38 @@ +src: | + ( SELECT DISTINCT t_medecins.nom, + t_medecins.prenom, + ''::text AS nom_adm, + ''::text AS prenom_adm, + '1'::text AS level, + 'M'::text || t_medecins.oid::text AS oid, + CASE + WHEN t_medecins.oid <> 0 THEN (t_medecins.nom || ' '::text) || t_medecins.prenom + ELSE 'Non saisi'::text + END AS texte + FROM activite.t_medecins_administratifs, + base.t_medecins + WHERE (t_medecins_administratifs.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'medecin_s'::text)) AND t_medecins_administratifs.medecin_id = t_medecins.oid + ORDER BY t_medecins.nom, t_medecins.prenom, ''::text, '1'::text, 'M'::text || t_medecins.oid::text, + CASE + WHEN t_medecins.oid <> 0 THEN (t_medecins.nom || ' '::text) || t_medecins.prenom + ELSE 'Non saisi'::text + END) + UNION + SELECT t_medecins.nom, + t_medecins.prenom, + t_medecins_administratifs.nom AS nom_adm, + t_medecins_administratifs.prenom AS prenom_adm, + '2'::text AS level, + 'A'::text || t_medecins_administratifs.oid::text AS oid, + CASE + WHEN t_medecins_administratifs.oid <> 0 THEN ((((t_medecins_administratifs.nom || ' '::text) || t_medecins_administratifs.prenom) || ' ('::text) || t_medecins_administratifs.code) || ')'::text + ELSE 'Non saisi'::text + END AS texte + FROM activite.t_medecins_administratifs, + base.t_medecins + WHERE (t_medecins_administratifs.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'medecin_s'::text)) AND t_medecins_administratifs.medecin_id = t_medecins.oid + ORDER BY 1, 2, 3, 4; \ No newline at end of file diff --git a/db/schema2/views/v_medecins_4.yaml b/db/schema2/views/v_medecins_4.yaml new file mode 100644 index 0000000..672ee8d --- /dev/null +++ b/db/schema2/views/v_medecins_4.yaml @@ -0,0 +1,38 @@ +src: | + ( SELECT DISTINCT t_medecins.nom, + t_medecins.prenom, + ''::text AS nom_adm, + ''::text AS prenom_adm, + '1'::text AS level, + 'M'::text || t_medecins.oid::text AS oid, + CASE + WHEN t_medecins.oid <> 0 THEN (t_medecins.nom || ' '::text) || t_medecins.prenom + ELSE 'Non saisi'::text + END AS texte + FROM activite.t_medecins_administratifs, + base.t_medecins + WHERE (t_medecins_administratifs.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'medecin_x'::text)) AND t_medecins_administratifs.medecin_id = t_medecins.oid + ORDER BY t_medecins.nom, t_medecins.prenom, ''::text, '1'::text, 'M'::text || t_medecins.oid::text, + CASE + WHEN t_medecins.oid <> 0 THEN (t_medecins.nom || ' '::text) || t_medecins.prenom + ELSE 'Non saisi'::text + END) + UNION + SELECT t_medecins.nom, + t_medecins.prenom, + t_medecins_administratifs.nom AS nom_adm, + t_medecins_administratifs.prenom AS prenom_adm, + '2'::text AS level, + 'A'::text || t_medecins_administratifs.oid::text AS oid, + CASE + WHEN t_medecins_administratifs.oid <> 0 THEN ((((t_medecins_administratifs.nom || ' '::text) || t_medecins_administratifs.prenom) || ' ('::text) || t_medecins_administratifs.code) || ')'::text + ELSE 'Non saisi'::text + END AS texte + FROM activite.t_medecins_administratifs, + base.t_medecins + WHERE (t_medecins_administratifs.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'medecin_x'::text)) AND t_medecins_administratifs.medecin_id = t_medecins.oid + ORDER BY 1, 2, 3, 4; \ No newline at end of file diff --git a/db/schema2/views/v_medecins_5.yaml b/db/schema2/views/v_medecins_5.yaml new file mode 100644 index 0000000..ce1a0e3 --- /dev/null +++ b/db/schema2/views/v_medecins_5.yaml @@ -0,0 +1,97 @@ +dep: + - v_listes_1 +src: | + ( + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS sort, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'MEDECIN'::text AND v_listes_1.lvl <> '0'::text + UNION ALL ( + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '1'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'MEDECIN'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + '2'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'MEDECIN'::text + ) + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + '2'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'MEDECIN'::text + ) UNION + SELECT '-8'::text AS oid, + 'Spécialités'::character varying AS texte, + '1'::text AS level, + '5'::text AS sort, + '0'::character(1) AS is_cti + UNION + SELECT 'SP'::text || t_specialites_medecin.oid::text AS oid, + (t_specialites_medecin.code || ' '::text) || t_specialites_medecin.texte AS texte, + '2'::text AS level, + '6'::text || t_specialites_medecin.code AS sort, + '0'::character(1) AS is_cti + FROM base.t_specialites_medecin + WHERE (t_specialites_medecin.oid IN ( SELECT DISTINCT t_medecins.specialite_id + FROM base.t_medecins + ORDER BY t_medecins.specialite_id)) + UNION + SELECT 'MD'::text || t_medecins.oid::text AS oid, + CASE + WHEN t_medecins.oid <> 0 THEN (t_medecins.nom || ' '::text) || t_medecins.prenom + ELSE 'Non saisi'::text + END AS texte, + '1'::text AS level, + (('7'::text || t_medecins.nom) || t_medecins.prenom) || t_medecins.oid::text AS sort, + '0'::character(1) AS is_cti + FROM activite.t_medecins_administratifs, + base.t_medecins + WHERE (t_medecins_administratifs.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'medecin_s'::text)) AND t_medecins_administratifs.medecin_id = t_medecins.oid + UNION + SELECT 'MA'::text || t_medecins_administratifs.oid::text AS oid, + CASE + WHEN t_medecins_administratifs.oid <> 0 THEN ((((t_medecins_administratifs.nom || ' '::text) || t_medecins_administratifs.prenom) || ' ('::text) || t_medecins_administratifs.code) || ')'::text + ELSE 'Non saisi'::text + END AS texte, + '2'::text AS level, + (((('7'::text || t_medecins.nom) || t_medecins.prenom) || t_medecins.oid::text) || '1'::text) || t_medecins_administratifs.code AS sort, + '0'::character(1) AS is_cti + FROM activite.t_medecins_administratifs, + base.t_medecins + WHERE (t_medecins_administratifs.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'medecin_s'::text)) AND t_medecins_administratifs.medecin_id = t_medecins.oid + ORDER BY 4; \ No newline at end of file diff --git a/db/schema2/views/v_medecins_6.yaml b/db/schema2/views/v_medecins_6.yaml new file mode 100644 index 0000000..52f1c75 --- /dev/null +++ b/db/schema2/views/v_medecins_6.yaml @@ -0,0 +1,98 @@ +dep: + - v_listes_1 +src: | + ( + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS sort, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'MEDECIN'::text AND v_listes_1.lvl <> '0'::text + UNION ALL ( + ( + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '1'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'MEDECIN'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + '2'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'MEDECIN'::text + ) UNION + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::text AS texte, + '2'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'MEDECIN'::text + ) + ) UNION + SELECT '-8'::text AS oid, + 'Spécialités'::character varying AS texte, + '1'::text AS level, + '5'::text AS sort, + '0'::character(1) AS is_cti + UNION + SELECT 'SP'::text || t_specialites_medecin.oid::text AS oid, + (t_specialites_medecin.code || ' '::text) || t_specialites_medecin.texte AS texte, + '2'::text AS level, + '5'::text || t_specialites_medecin.code AS sort, + '0'::character(1) AS is_cti + FROM base.t_specialites_medecin + WHERE (t_specialites_medecin.oid IN ( SELECT DISTINCT t_medecins.specialite_id + FROM base.t_medecins + ORDER BY t_medecins.specialite_id)) + UNION + SELECT 'MD'::text || t_medecins.oid::text AS oid, + CASE + WHEN t_medecins.oid <> 0 THEN (t_medecins.nom || ' '::text) || t_medecins.prenom + ELSE 'Non saisi'::text + END AS texte, + '1'::text AS level, + (('7'::text || t_medecins.nom) || t_medecins.prenom) || t_medecins.oid::text AS sort, + '0'::character(1) AS is_cti + FROM activite.t_medecins_administratifs, + base.t_medecins + WHERE (t_medecins_administratifs.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'medecin_x'::text)) AND t_medecins_administratifs.medecin_id = t_medecins.oid + UNION + SELECT 'MA'::text || t_medecins_administratifs.oid::text AS oid, + CASE + WHEN t_medecins_administratifs.oid <> 0 THEN ((((t_medecins_administratifs.nom || ' '::text) || t_medecins_administratifs.prenom) || ' ('::text) || t_medecins_administratifs.code) || ')'::text + ELSE 'Non saisi'::text + END AS texte, + '2'::text AS level, + (((('7'::text || t_medecins.nom) || t_medecins.prenom) || t_medecins.oid::text) || '1'::text) || t_medecins_administratifs.code AS sort, + '0'::character(1) AS is_cti + FROM activite.t_medecins_administratifs, + base.t_medecins + WHERE (t_medecins_administratifs.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'medecin_x'::text)) AND t_medecins_administratifs.medecin_id = t_medecins.oid + ORDER BY 4; \ No newline at end of file diff --git a/db/schema2/views/v_medecins_7.yaml b/db/schema2/views/v_medecins_7.yaml new file mode 100644 index 0000000..1564cf2 --- /dev/null +++ b/db/schema2/views/v_medecins_7.yaml @@ -0,0 +1,63 @@ +dep: + - v_listes_1 +src: | + ( + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS sort, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'MEDECIN_TRAITANT'::text AND v_listes_1.lvl <> '0'::text + UNION ALL ( + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '1'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'MEDECIN_TRAITANT'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + '2'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'MEDECIN_TRAITANT'::text + ) + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + '2'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'MEDECIN_TRAITANT'::text + ) UNION + SELECT 'MT'::text || t_medecins_traitants_administratifs.oid::text AS oid, + CASE + WHEN t_medecins_traitants_administratifs.oid <> 0 THEN (t_medecins_traitants_administratifs.nom || ' '::text) || t_medecins_traitants_administratifs.prenom + ELSE 'Non saisi'::text + END AS texte, + '1'::text AS level, + (('7'::text || t_medecins_traitants_administratifs.nom) || t_medecins_traitants_administratifs.prenom) || t_medecins_traitants_administratifs.oid::text AS sort, + '0'::character(1) AS is_cti + FROM activite.t_medecins_traitants_administratifs + ORDER BY 4; \ No newline at end of file diff --git a/db/schema2/views/v_modes_entree_1.yaml b/db/schema2/views/v_modes_entree_1.yaml new file mode 100644 index 0000000..3018c70 --- /dev/null +++ b/db/schema2/views/v_modes_entree_1.yaml @@ -0,0 +1,9 @@ +src: | + SELECT ascii(t_modes_entree.code::text) AS mode_entree_id, + t_modes_entree.code AS mode_entree_code, + CASE + WHEN t_modes_entree.code <> ''::bpchar THEN t_modes_entree.texte + ELSE 'Non saisi'::text + END AS mode_entree_texte + FROM base.t_modes_entree + ORDER BY t_modes_entree.code; \ No newline at end of file diff --git a/db/schema2/views/v_modes_entree_2.yaml b/db/schema2/views/v_modes_entree_2.yaml new file mode 100644 index 0000000..338641c --- /dev/null +++ b/db/schema2/views/v_modes_entree_2.yaml @@ -0,0 +1,23 @@ +src: | + SELECT 'ME'::text || t_modes_entree.code::text AS code, + CASE + WHEN t_modes_entree.code <> ''::bpchar THEN (t_modes_entree.code::text || ' - '::text) || t_modes_entree.texte + ELSE 'Non saisi'::text + END AS texte, + CASE + WHEN t_modes_entree.code <> ''::bpchar THEN (t_modes_entree.code::text || ' - '::text) || t_modes_entree.texte_court + ELSE 'Non saisi'::text + END AS texte_court + FROM base.t_modes_entree + UNION ALL + SELECT 'MX'::text || t_modes_entree.code::text AS code, + CASE + WHEN t_modes_entree.code <> ''::bpchar THEN ('SAUF '::text || (t_modes_entree.code::text || ' - '::text)) || t_modes_entree.texte + ELSE 'SAUF Non saisi'::text + END AS texte, + CASE + WHEN t_modes_entree.code <> ''::bpchar THEN ('SAUF '::text || (t_modes_entree.code::text || ' - '::text)) || t_modes_entree.texte_court + ELSE 'SAUF Non saisi'::text + END AS texte_court + FROM base.t_modes_entree + ORDER BY 1; \ No newline at end of file diff --git a/db/schema2/views/v_modes_sortie_1.yaml b/db/schema2/views/v_modes_sortie_1.yaml new file mode 100644 index 0000000..ecd778d --- /dev/null +++ b/db/schema2/views/v_modes_sortie_1.yaml @@ -0,0 +1,9 @@ +src: | + SELECT ascii(t_modes_sortie.code::text) AS mode_sortie_id, + t_modes_sortie.code AS mode_sortie_code, + CASE + WHEN t_modes_sortie.code <> ''::bpchar THEN t_modes_sortie.texte + ELSE 'Non saisi'::text + END AS mode_sortie_texte + FROM base.t_modes_sortie + ORDER BY t_modes_sortie.code; \ No newline at end of file diff --git a/db/schema2/views/v_modes_sortie_2.yaml b/db/schema2/views/v_modes_sortie_2.yaml new file mode 100644 index 0000000..f60f856 --- /dev/null +++ b/db/schema2/views/v_modes_sortie_2.yaml @@ -0,0 +1,23 @@ +src: | + SELECT 'MS'::text || t_modes_sortie.code::text AS code, + CASE + WHEN t_modes_sortie.code <> ''::bpchar THEN (t_modes_sortie.code::text || ' - '::text) || t_modes_sortie.texte + ELSE 'Non saisi'::text + END AS texte, + CASE + WHEN t_modes_sortie.code <> ''::bpchar THEN (t_modes_sortie.code::text || ' - '::text) || t_modes_sortie.texte_court + ELSE 'Non saisi'::text + END AS texte_court + FROM base.t_modes_sortie + UNION ALL + SELECT 'MX'::text || t_modes_sortie.code::text AS code, + CASE + WHEN t_modes_sortie.code <> ''::bpchar THEN ('SAUF '::text || (t_modes_sortie.code::text || ' - '::text)) || t_modes_sortie.texte + ELSE 'SAUF Non saisi'::text + END AS texte, + CASE + WHEN t_modes_sortie.code <> ''::bpchar THEN ('SAUF '::text || (t_modes_sortie.code::text || ' - '::text)) || t_modes_sortie.texte_court + ELSE 'SAUF Non saisi'::text + END AS texte_court + FROM base.t_modes_sortie + ORDER BY 1; \ No newline at end of file diff --git a/db/schema2/views/v_modes_traitement_2.yaml b/db/schema2/views/v_modes_traitement_2.yaml new file mode 100644 index 0000000..f040067 --- /dev/null +++ b/db/schema2/views/v_modes_traitement_2.yaml @@ -0,0 +1,9 @@ +src: | + SELECT 'MT'::text || t_modes_traitement.oid::text AS oid, + (t_modes_traitement.code || ' '::text) || t_modes_traitement.texte_court AS texte, + t_modes_traitement.code + FROM base.t_modes_traitement + WHERE (t_modes_traitement.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'mode_traitement'::text)) + ORDER BY t_modes_traitement.code; \ No newline at end of file diff --git a/db/schema2/views/v_mouvements_sejour_2.yaml b/db/schema2/views/v_mouvements_sejour_2.yaml new file mode 100644 index 0000000..55c07a5 --- /dev/null +++ b/db/schema2/views/v_mouvements_sejour_2.yaml @@ -0,0 +1,127 @@ +src: | + SELECT p_mouvements_sejour.finess, + p_mouvements_sejour.no_sejour, + p_mouvements_sejour.sejour_id, + to_char(p_mouvements_sejour.date::timestamp with time zone, 'YYYYMM'::text) AS mois, + p_mouvements_sejour.date, + p_mouvements_sejour.jour_semaine, + p_mouvements_sejour.is_weekend, + p_mouvements_sejour.est_mouvement_previsionnel, + p_mouvements_sejour.heure_debut, + p_mouvements_sejour.heure_fin, + p_mouvements_sejour.lieu_id, + p_mouvements_sejour.medecin_sejour_id AS medecin_adm_mouvement_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_mouvement_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_mouvement_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_mouvement_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_mouvement_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_mouvement_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_mouvement_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_mouvement_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_mouvement_id, + t_medecins_administratifs_c.medecin_code AS medecin_mouvement_code, + t_medecins_administratifs_c.nom AS medecin_mouvement_nom, + t_medecins_administratifs_c.prenom AS medecin_mouvement_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_mouvement_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_mouvement_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_mouvement_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_mouvement_specialite_texte, + t_lieux_c.service_facturation_id AS lieu_service_id, + t_lieux_c.service_facturation_code AS lieu_service_code, + t_lieux_c.service_facturation_texte AS lieu_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_service_section_texte, + t_lieux_c.service_facturation_section_nb_lits AS lieu_service_section_nb_lits, + t_lieux_c.service_facturation_section_nb_cp AS lieu_service_section_nb_cp, + t_lieux_c.activite_id AS lieu_activite_id, + t_lieux_c.activite_code AS lieu_activite_code, + t_lieux_c.activite_texte AS lieu_activite_texte, + t_lieux_c.etage_id AS lieu_etage_id, + t_lieux_c.etage_code AS lieu_etage_code, + t_lieux_c.etage_texte AS lieu_etage_texte, + t_lieux_c.etage_section_id AS lieu_etage_section_id, + t_lieux_c.etage_section_code AS lieu_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_etage_section_texte, + t_lieux_c.lit_id AS lieu_lit_id, + t_lieux_c.lit_code AS lieu_lit_code, + t_lieux_c.lit_texte AS lieu_lit_texte, + t_lieux_c.lit_section_id AS lieu_lit_section_id, + t_lieux_c.lit_section_code AS lieu_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS lieu_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_unite_fonctionnelle_section_texte, + t_lieux_c.gir_id AS lieu_gir_id, + t_lieux_c.gir_code AS lieu_gir_code, + t_lieux_c.gir_texte AS lieu_gir_texte, + t_lieux_c.gir_section_id AS lieu_gir_section_id, + t_lieux_c.gir_section_code AS lieu_gir_section_code, + t_lieux_c.gir_section_texte AS lieu_gir_section_texte, + p_mouvements_sejour.est_facture, + p_mouvements_sejour.est_jour_hospitalisation, + p_mouvements_sejour.nb_jours_d, + p_mouvements_sejour.nb_jours_f, + p_mouvements_sejour.nb_jours_12, + p_mouvements_sejour.nb_jours_prorata, + p_mouvements_sejour.nb_jours_cp_d, + p_mouvements_sejour.nb_jours_cp_f, + p_mouvements_sejour.nb_jours_cp_12, + p_mouvements_sejour.equivalent_malade_complet AS nb_emc, + p_mouvements_sejour.est_chambre_particuliere, + p_mouvements_sejour.est_chambre_particuliere_facturee, + p_mouvements_sejour.nb_chambres_particulieres, + t_lieux_c.service_facturation_est_absence, + CASE + WHEN t_lieux_c.service_facturation_est_absence = '1'::bpchar THEN p_mouvements_sejour.nb_jours_js_non_inclus + ELSE 0::numeric(5,0) + END AS nb_jours_absence_js_non_inclus, + CASE + WHEN t_lieux_c.service_facturation_est_absence = '1'::bpchar THEN p_mouvements_sejour.nb_jours_js_inclus + ELSE 0::numeric(5,0) + END AS nb_jours_absence_js_inclus, + p_mouvements_sejour.nb_entrees_directes, + p_mouvements_sejour.nb_entrees_mutation_service, + p_mouvements_sejour.nb_entrees_mutation_activite, + p_mouvements_sejour.nb_entrees_mutation_etage, + p_mouvements_sejour.nb_entrees_mutation_unite_medicale, + p_mouvements_sejour.nb_sorties_directes, + p_mouvements_sejour.nb_sorties_mutation_service, + p_mouvements_sejour.nb_sorties_mutation_activite, + p_mouvements_sejour.nb_sorties_mutation_etage, + p_mouvements_sejour.nb_sorties_mutation_unite_medicale, + p_mouvements_sejour.nb_urgences, + p_mouvements_sejour.nb_externes, + p_mouvements_sejour.nb_passage_externe, + p_mouvements_sejour.nb_ambulatoires, + p_mouvements_sejour.nb_seances, + COALESCE(p_mouvements_sejour.nb_seances_dans_taux, 0::numeric)::numeric(5,0) AS nb_seances_dans_taux, + p_mouvements_sejour.nb_jours_js_non_inclus + p_mouvements_sejour.nb_externes + p_mouvements_sejour.nb_ambulatoires AS nb_journees_classement, + p_mouvements_sejour.nb_bebes, + 0 AS no_oid, + ''::text AS no_code, + 0 AS no_nb_lits, + p_mouvements_sejour.equivalent_malade_complet, + p_mouvements_sejour.pole_id, + p_mouvements_sejour.nb_jour_sejour_sorti, + p_mouvements_sejour.nb_deces, + p_mouvements_sejour.nb_seances_dialyse, + p_mouvements_sejour.nb_seances_chimio, + p_mouvements_sejour.nb_seances_autre, + p_mouvements_sejour.sequences, + p_mouvements_sejour.nb_preadmission_validee, + p_mouvements_sejour.nb_preadmission_validee_j1, + p_mouvements_sejour.nb_preadmission_validee_j2 + FROM activite.p_mouvements_sejour + JOIN activite.t_medecins_administratifs_c ON p_mouvements_sejour.medecin_sejour_id = t_medecins_administratifs_c.oid + JOIN activite.t_lieux_c ON p_mouvements_sejour.lieu_id = t_lieux_c.oid + WHERE t_lieux_c.service_facturation_est_sans_mouvement <> '1'::bpchar; \ No newline at end of file diff --git a/db/schema2/views/v_mouvements_sejour_4.yaml b/db/schema2/views/v_mouvements_sejour_4.yaml new file mode 100644 index 0000000..310d86e --- /dev/null +++ b/db/schema2/views/v_mouvements_sejour_4.yaml @@ -0,0 +1,103 @@ +src: | + SELECT p_mouvements_sejour.finess, + p_mouvements_sejour.no_sejour, + p_mouvements_sejour.sejour_id, + to_char(p_mouvements_sejour.date::timestamp with time zone, 'YYYYMM'::text) AS mois, + p_mouvements_sejour.date, + p_mouvements_sejour.jour_semaine, + p_mouvements_sejour.is_weekend, + p_mouvements_sejour.est_mouvement_previsionnel, + p_mouvements_sejour.heure_debut, + p_mouvements_sejour.heure_fin, + p_mouvements_sejour.lieu_id, + p_mouvements_sejour.medecin_sejour_id AS medecin_adm_mouvement_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_mouvement_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_mouvement_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_mouvement_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_mouvement_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_mouvement_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_mouvement_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_mouvement_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_mouvement_id, + t_medecins_administratifs_c.medecin_code AS medecin_mouvement_code, + t_medecins_administratifs_c.nom AS medecin_mouvement_nom, + t_medecins_administratifs_c.prenom AS medecin_mouvement_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_mouvement_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_mouvement_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_mouvement_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_mouvement_specialite_texte, + t_lieux_c.service_facturation_id AS lieu_service_id, + t_lieux_c.service_facturation_code AS lieu_service_code, + t_lieux_c.service_facturation_texte AS lieu_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_service_section_texte, + t_lieux_c.service_facturation_section_nb_lits AS lieu_service_section_nb_lits, + t_lieux_c.service_facturation_section_nb_cp AS lieu_service_section_nb_cp, + t_lieux_c.activite_id AS lieu_activite_id, + t_lieux_c.activite_code AS lieu_activite_code, + t_lieux_c.activite_texte AS lieu_activite_texte, + t_lieux_c.etage_id AS lieu_etage_id, + t_lieux_c.etage_code AS lieu_etage_code, + t_lieux_c.etage_texte AS lieu_etage_texte, + t_lieux_c.etage_section_id AS lieu_etage_section_id, + t_lieux_c.etage_section_code AS lieu_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_etage_section_texte, + t_lieux_c.lit_id AS lieu_lit_id, + t_lieux_c.lit_code AS lieu_lit_code, + t_lieux_c.lit_texte AS lieu_lit_texte, + t_lieux_c.lit_section_id AS lieu_lit_section_id, + t_lieux_c.lit_section_code AS lieu_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS lieu_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_unite_fonctionnelle_section_texte, + t_lieux_c.gir_id AS lieu_gir_id, + t_lieux_c.gir_code AS lieu_gir_code, + t_lieux_c.gir_texte AS lieu_gir_texte, + t_lieux_c.gir_section_id AS lieu_gir_section_id, + t_lieux_c.gir_section_code AS lieu_gir_section_code, + t_lieux_c.gir_section_texte AS lieu_gir_section_texte, + p_mouvements_sejour.est_jour_hospitalisation, + p_mouvements_sejour.est_chambre_particuliere, + p_mouvements_sejour.est_chambre_particuliere_facturee, + p_mouvements_sejour.nb_chambres_particulieres, + p_mouvements_sejour.nb_entrees_directes, + p_mouvements_sejour.nb_entrees_mutation_service, + p_mouvements_sejour.nb_entrees_mutation_activite, + p_mouvements_sejour.nb_entrees_mutation_etage, + p_mouvements_sejour.nb_entrees_mutation_unite_medicale, + p_mouvements_sejour.nb_sorties_directes, + p_mouvements_sejour.nb_sorties_mutation_service, + p_mouvements_sejour.nb_sorties_mutation_activite, + p_mouvements_sejour.nb_sorties_mutation_etage, + p_mouvements_sejour.nb_sorties_mutation_unite_medicale, + p_mouvements_sejour.nb_urgences, + p_mouvements_sejour.nb_externes, + p_mouvements_sejour.nb_ambulatoires, + p_mouvements_sejour.nb_seances, + p_mouvements_sejour.nb_jours_js_non_inclus + p_mouvements_sejour.nb_externes + p_mouvements_sejour.nb_ambulatoires AS nb_journees_classement, + p_mouvements_sejour.nb_bebes, + p_mouvements_sejour.nb_jours_d, + p_mouvements_sejour.nb_jours_f, + p_mouvements_sejour.nb_jours_12, + p_mouvements_sejour.nb_jours_prorata, + p_mouvements_sejour.nb_jours_cp_d, + p_mouvements_sejour.nb_jours_cp_f, + p_mouvements_sejour.nb_jours_cp_12, + 0 AS no_oid, + ''::text AS no_code, + 0 AS no_nb_lits, + p_mouvements_sejour.sequences + FROM activite.p_mouvements_sejour + JOIN activite.t_medecins_administratifs_c ON p_mouvements_sejour.medecin_sejour_id = t_medecins_administratifs_c.oid + JOIN activite.t_lieux_c ON p_mouvements_sejour.lieu_id = t_lieux_c.oid; \ No newline at end of file diff --git a/db/schema2/views/v_mouvements_sejour_5.yaml b/db/schema2/views/v_mouvements_sejour_5.yaml new file mode 100644 index 0000000..98ee665 --- /dev/null +++ b/db/schema2/views/v_mouvements_sejour_5.yaml @@ -0,0 +1,123 @@ +src: | + SELECT p_mouvements_sejour.finess, + p_mouvements_sejour.no_sejour, + p_mouvements_sejour.sejour_id, + to_char(p_mouvements_sejour.date::timestamp with time zone, 'YYYYMM'::text) AS mois, + p_mouvements_sejour.date, + p_mouvements_sejour.jour_semaine, + p_mouvements_sejour.is_weekend, + p_mouvements_sejour.est_mouvement_previsionnel, + p_mouvements_sejour.heure_debut, + p_mouvements_sejour.heure_fin, + p_mouvements_sejour.lieu_id, + p_mouvements_sejour.medecin_sejour_id AS medecin_adm_mouvement_id, + t_lieux_c.service_facturation_id AS lieu_service_id, + t_lieux_c.service_facturation_code AS lieu_service_code, + t_lieux_c.service_facturation_texte AS lieu_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_service_section_texte, + t_lieux_c.service_facturation_section_nb_lits AS lieu_service_section_nb_lits, + t_lieux_c.service_facturation_section_nb_cp AS lieu_service_section_nb_cp, + t_lieux_c.activite_id AS lieu_activite_id, + t_lieux_c.activite_code AS lieu_activite_code, + t_lieux_c.activite_texte AS lieu_activite_texte, + t_lieux_c.etage_id AS lieu_etage_id, + t_lieux_c.etage_code AS lieu_etage_code, + t_lieux_c.etage_texte AS lieu_etage_texte, + t_lieux_c.etage_section_id AS lieu_etage_section_id, + t_lieux_c.etage_section_code AS lieu_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_etage_section_texte, + t_lieux_c.lit_id AS lieu_lit_id, + t_lieux_c.lit_code AS lieu_lit_code, + t_lieux_c.lit_texte AS lieu_lit_texte, + t_lieux_c.lit_section_id AS lieu_lit_section_id, + t_lieux_c.lit_section_code AS lieu_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS lieu_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_unite_fonctionnelle_section_texte, + t_lieux_c.gir_id AS lieu_gir_id, + t_lieux_c.gir_code AS lieu_gir_code, + t_lieux_c.gir_texte AS lieu_gir_texte, + t_lieux_c.gir_section_id AS lieu_gir_section_id, + t_lieux_c.gir_section_code AS lieu_gir_section_code, + t_lieux_c.gir_section_texte AS lieu_gir_section_texte, + p_mouvements_sejour.est_facture, + p_mouvements_sejour.est_jour_hospitalisation, + p_mouvements_sejour.equivalent_malade_complet AS nb_emc, + p_mouvements_sejour.est_chambre_particuliere, + p_mouvements_sejour.est_chambre_particuliere_facturee, + p_mouvements_sejour.nb_chambres_particulieres, + p_mouvements_sejour.nb_jours_d, + p_mouvements_sejour.nb_jours_f, + p_mouvements_sejour.nb_jours_12, + p_mouvements_sejour.nb_jours_prorata, + p_mouvements_sejour.nb_jours_cp_d, + p_mouvements_sejour.nb_jours_cp_f, + p_mouvements_sejour.nb_jours_cp_12, + t_lieux_c.service_facturation_est_absence, + CASE + WHEN t_lieux_c.service_facturation_est_absence = '1'::bpchar THEN p_mouvements_sejour.nb_jours_js_non_inclus + ELSE 0::numeric(5,0) + END AS nb_jours_absence_js_non_inclus, + CASE + WHEN t_lieux_c.service_facturation_est_absence = '1'::bpchar THEN p_mouvements_sejour.nb_jours_js_inclus + ELSE 0::numeric(5,0) + END AS nb_jours_absence_js_inclus, + p_mouvements_sejour.nb_entrees_directes, + p_mouvements_sejour.nb_entrees_mutation_service, + p_mouvements_sejour.nb_entrees_mutation_activite, + p_mouvements_sejour.nb_entrees_mutation_etage, + p_mouvements_sejour.nb_entrees_mutation_unite_medicale, + p_mouvements_sejour.nb_sorties_directes, + p_mouvements_sejour.nb_sorties_mutation_service, + p_mouvements_sejour.nb_sorties_mutation_activite, + p_mouvements_sejour.nb_sorties_mutation_etage, + p_mouvements_sejour.nb_sorties_mutation_unite_medicale, + p_mouvements_sejour.nb_urgences, + p_mouvements_sejour.nb_externes, + p_mouvements_sejour.nb_passage_externe, + p_mouvements_sejour.nb_ambulatoires, + p_mouvements_sejour.nb_seances, + COALESCE(p_mouvements_sejour.nb_seances_dans_taux, 0::numeric)::numeric(5,0) AS nb_seances_dans_taux, + p_mouvements_sejour.nb_jours_js_non_inclus + p_mouvements_sejour.nb_externes + p_mouvements_sejour.nb_ambulatoires AS nb_journees_classement, + p_mouvements_sejour.nb_bebes, + CASE + WHEN t_lieux_c.gir_id > 0 THEN p_mouvements_sejour.nb_jours_prorata + ELSE NULL::numeric + END AS gir_gmp_base, + CASE + WHEN t_lieux_c.gir_id > 0 THEN t_lieux_c.gir_coefficient + ELSE NULL::numeric + END AS gir_gmp_coefficient, + 0 AS no_oid, + ''::text AS no_code, + 0 AS no_nb_lits, + p_mouvements_sejour.equivalent_malade_complet, + p_mouvements_sejour.pole_id, + p_mouvements_sejour.nb_jour_sejour_sorti, + p_mouvements_sejour.budget_cle_id, + p_mouvements_sejour.nb_deces, + p_mouvements_sejour.nb_seances_dialyse, + p_mouvements_sejour.nb_seances_chimio, + p_mouvements_sejour.nb_seances_autre, + p_mouvements_sejour.sequences, + t_lieux_c.activite_section_id AS lieu_activite_section_id, + t_lieux_c.activite_section_code AS lieu_activite_section_code, + t_lieux_c.activite_section_texte AS lieu_activite_section_texte, + p_mouvements_sejour.nb_preadmission_validee, + p_mouvements_sejour.nb_preadmission_validee_j1, + p_mouvements_sejour.nb_preadmission_validee_j2 + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux_c ON p_mouvements_sejour.lieu_id = t_lieux_c.oid + WHERE t_lieux_c.service_facturation_est_sans_mouvement <> '1'::bpchar; \ No newline at end of file diff --git a/db/schema2/views/v_mouvements_sejour_lieu_1.yaml b/db/schema2/views/v_mouvements_sejour_lieu_1.yaml new file mode 100644 index 0000000..d0df75a --- /dev/null +++ b/db/schema2/views/v_mouvements_sejour_lieu_1.yaml @@ -0,0 +1,12 @@ +src: | + SELECT p_sejour_lieu.sejour_id AS sejour_lieu_sejour_id, + p_sejour_lieu.no_sejour AS sejour_lieu_no_sejour, + p_sejour_lieu.lieu_id AS sejour_lieu_lieu_id, + p_sejour_lieu.pole_id, + t_pole.code AS pole_code, + t_pole.texte AS pole_texte, + t_pole.section_id AS t_pole_section_id, + t_pole.section_code AS t_pole_section_code, + t_pole.section_texte AS t_pole_section_texte + FROM activite.p_sejour_lieu + JOIN activite.t_pole ON t_pole.oid = p_sejour_lieu.pole_id; \ No newline at end of file diff --git a/db/schema2/views/v_mouvements_sejour_medecin_1.yaml b/db/schema2/views/v_mouvements_sejour_medecin_1.yaml new file mode 100644 index 0000000..e692983 --- /dev/null +++ b/db/schema2/views/v_mouvements_sejour_medecin_1.yaml @@ -0,0 +1,18 @@ +src: | + SELECT t_medecins_administratifs_c.oid, + t_medecins_administratifs_c.adm_code AS medecin_adm_mouvement_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_mouvement_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_mouvement_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_mouvement_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_mouvement_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_mouvement_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_mouvement_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_mouvement_id, + t_medecins_administratifs_c.medecin_code AS medecin_mouvement_code, + t_medecins_administratifs_c.nom AS medecin_mouvement_nom, + t_medecins_administratifs_c.prenom AS medecin_mouvement_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_mouvement_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_mouvement_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_mouvement_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_mouvement_specialite_texte + FROM activite.t_medecins_administratifs_c; \ No newline at end of file diff --git a/db/schema2/views/v_mouvements_sejour_r_1.yaml b/db/schema2/views/v_mouvements_sejour_r_1.yaml new file mode 100644 index 0000000..6f04966 --- /dev/null +++ b/db/schema2/views/v_mouvements_sejour_r_1.yaml @@ -0,0 +1,382 @@ +dep: + - v_mouvements_sejour_2 + - v_sejours_1 +src: | + SELECT v_mouvements_sejour_2.date AS date_reference, + v_mouvements_sejour_2.heure_debut, + v_mouvements_sejour_2.heure_fin, + v_mouvements_sejour_2.est_mouvement_previsionnel, + v_mouvements_sejour_2.lieu_service_id AS lieu_reference_service_id, + v_mouvements_sejour_2.lieu_service_code AS lieu_reference_service_code, + v_mouvements_sejour_2.lieu_service_texte AS lieu_reference_service_texte, + v_mouvements_sejour_2.lieu_service_section_id AS lieu_reference_service_section_id, + v_mouvements_sejour_2.lieu_service_section_code AS lieu_reference_service_section_code, + v_mouvements_sejour_2.lieu_service_section_texte AS lieu_reference_service_section_texte, + v_mouvements_sejour_2.lieu_unite_medicale_id AS lieu_reference_unite_medicale_id, + v_mouvements_sejour_2.lieu_unite_medicale_code AS lieu_reference_unite_medicale_code, + v_mouvements_sejour_2.lieu_unite_medicale_texte AS lieu_reference_unite_medicale_texte, + v_mouvements_sejour_2.lieu_unite_medicale_section_id AS lieu_reference_unite_medicale_section_id, + v_mouvements_sejour_2.lieu_unite_medicale_section_code AS lieu_reference_unite_medicale_section_code, + v_mouvements_sejour_2.lieu_unite_medicale_section_texte AS lieu_reference_unite_medicale_section_texte, + v_mouvements_sejour_2.lieu_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_mouvements_sejour_2.lieu_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_mouvements_sejour_2.lieu_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_mouvements_sejour_2.lieu_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_mouvements_sejour_2.lieu_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_mouvements_sejour_2.lieu_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_mouvements_sejour_2.lieu_activite_id AS lieu_reference_activite_id, + v_mouvements_sejour_2.lieu_activite_code AS lieu_reference_activite_code, + v_mouvements_sejour_2.lieu_activite_texte AS lieu_reference_activite_texte, + v_mouvements_sejour_2.lieu_etage_id AS lieu_reference_etage_id, + v_mouvements_sejour_2.lieu_etage_code AS lieu_reference_etage_code, + v_mouvements_sejour_2.lieu_etage_texte AS lieu_reference_etage_texte, + v_mouvements_sejour_2.lieu_etage_section_id AS lieu_reference_etage_section_id, + v_mouvements_sejour_2.lieu_etage_section_code AS lieu_reference_etage_section_code, + v_mouvements_sejour_2.lieu_etage_section_texte AS lieu_reference_etage_section_texte, + v_mouvements_sejour_2.medecin_adm_mouvement_id AS medecin_adm_reference_id, + v_mouvements_sejour_2.medecin_adm_mouvement_code AS medecin_adm_reference_code, + v_mouvements_sejour_2.medecin_adm_mouvement_nom AS medecin_adm_reference_nom, + v_mouvements_sejour_2.medecin_adm_mouvement_prenom AS medecin_adm_reference_prenom, + v_mouvements_sejour_2.medecin_adm_mouvement_nom_prenom AS medecin_adm_reference_nom_prenom, + v_mouvements_sejour_2.medecin_adm_mouvement_section_id AS medecin_adm_reference_section_id, + v_mouvements_sejour_2.medecin_adm_mouvement_section_code AS medecin_adm_reference_section_code, + v_mouvements_sejour_2.medecin_adm_mouvement_section_texte AS medecin_adm_reference_section_texte, + v_mouvements_sejour_2.medecin_mouvement_specialite_id AS medecin_reference_specialite_id, + v_mouvements_sejour_2.medecin_mouvement_specialite_code AS medecin_reference_specialite_code, + v_mouvements_sejour_2.medecin_mouvement_specialite_texte AS medecin_reference_specialite_texte, + v_mouvements_sejour_2.medecin_mouvement_id AS medecin_reference_id, + v_mouvements_sejour_2.medecin_mouvement_code AS medecin_reference_code, + v_mouvements_sejour_2.medecin_mouvement_nom AS medecin_reference_nom, + v_mouvements_sejour_2.medecin_mouvement_prenom AS medecin_reference_prenom, + v_mouvements_sejour_2.medecin_mouvement_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.heure_entree, + v_sejours_1.mode_entree, + v_sejours_1.provenance, + v_sejours_1.code_sorti, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.heure_sortie, + v_sejours_1.mode_sortie, + v_sejours_1.destination, + v_sejours_1.code_cp_demandee, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.ghm5_id, + v_sejours_1.ghm5_code, + v_sejours_1.ghm5_texte, + v_sejours_1.severite_ghm_id, + v_sejours_1.severite_ghm_code, + v_sejours_1.severite_ghm_texte, + v_sejours_1.cas_id, + v_sejours_1.cas_code, + v_sejours_1.cas_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_id, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.ghm_section_id, + v_sejours_1.ghm_section_code, + v_sejours_1.ghm_section_texte, + v_sejours_1.tiers_payant_0_id, + v_sejours_1.tiers_payant_1_id, + v_sejours_1.tiers_payant_2_id, + v_sejours_1.tiers_payant_22_id, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.lieu_sortie_id, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_lit_id, + v_sejours_1.lieu_sortie_lit_code, + v_sejours_1.lieu_sortie_lit_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_sejours_1.mois_facture, + v_sejours_1.date_facture, + v_sejours_1.nb_delai_facture, + v_sejours_1.delai_facture, + v_sejours_1.nb_non_facture, + v_sejours_1.mois_expedition, + v_sejours_1.date_expedition, + v_sejours_1.nb_delai_expedition, + v_sejours_1.nb_non_expedie, + v_sejours_1.montant_non_expedie, + v_sejours_1.delai_expedition, + v_sejours_1.mois_solde, + v_sejours_1.date_solde, + v_sejours_1.nb_delai_solde, + v_sejours_1.nb_non_solde, + v_sejours_1.montant_non_solde, + v_sejours_1.delai_solde, + v_sejours_1.montant_facture_c, + v_sejours_1.montant_facture_h, + v_sejours_1.montant_regle_c, + v_sejours_1.montant_regle_h, + v_sejours_1.nb_factures, + v_sejours_1.nb_factures_regularisation, + v_mouvements_sejour_2.mois, + v_mouvements_sejour_2.date, + v_mouvements_sejour_2.jour_semaine, + v_mouvements_sejour_2.is_weekend, + v_mouvements_sejour_2.lieu_id, + v_mouvements_sejour_2.medecin_adm_mouvement_id, + v_mouvements_sejour_2.medecin_adm_mouvement_code, + v_mouvements_sejour_2.medecin_adm_mouvement_nom, + v_mouvements_sejour_2.medecin_adm_mouvement_prenom, + v_mouvements_sejour_2.medecin_adm_mouvement_nom_prenom, + v_mouvements_sejour_2.medecin_mouvement_id, + v_mouvements_sejour_2.medecin_mouvement_nom, + v_mouvements_sejour_2.medecin_mouvement_prenom, + v_mouvements_sejour_2.medecin_mouvement_nom_prenom, + v_mouvements_sejour_2.lieu_service_id, + v_mouvements_sejour_2.lieu_service_code, + v_mouvements_sejour_2.lieu_service_texte, + v_mouvements_sejour_2.lieu_activite_id, + v_mouvements_sejour_2.lieu_activite_code, + v_mouvements_sejour_2.lieu_activite_texte, + v_mouvements_sejour_2.lieu_etage_id, + v_mouvements_sejour_2.lieu_etage_code, + v_mouvements_sejour_2.lieu_etage_texte, + v_mouvements_sejour_2.lieu_lit_id, + v_mouvements_sejour_2.lieu_lit_code, + v_mouvements_sejour_2.lieu_lit_texte, + v_mouvements_sejour_2.lieu_unite_medicale_id, + v_mouvements_sejour_2.lieu_unite_medicale_code, + v_mouvements_sejour_2.lieu_unite_medicale_texte, + v_mouvements_sejour_2.lieu_gir_id, + v_mouvements_sejour_2.lieu_gir_code, + v_mouvements_sejour_2.lieu_gir_texte, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_jours_d::numeric + ELSE 0::numeric + END AS nb_jours_d, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_jours_f::numeric + ELSE 0::numeric + END AS nb_jours_f, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_jours_f::numeric + ELSE 0::numeric + END AS nb_jours_js_non_inclus_sauf_1_jour_f, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_jours_12::numeric + ELSE 0::numeric + END AS nb_jours_12, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_jours_prorata + ELSE 0::numeric + END AS nb_jours_prorata, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_emc + ELSE 0::numeric + END AS nb_emc, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_chambres_particulieres + ELSE 0::numeric + END AS nb_chambres_particulieres, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_jours_cp_d::numeric + ELSE 0::numeric + END AS nb_jours_cp_d, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_jours_cp_f::numeric + ELSE 0::numeric + END AS nb_jours_cp_f, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_jours_cp_f::numeric + ELSE 0::numeric + END AS nb_chambres_particulieres_js_non_inclus_f, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_jours_cp_12::numeric + ELSE 0::numeric + END AS nb_jours_cp_12, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_entrees_directes + ELSE 0::numeric + END AS nb_entrees_directes, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_entrees_mutation_service + ELSE 0::numeric + END AS nb_entrees_mutation_service, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_entrees_mutation_activite + ELSE 0::numeric + END AS nb_entrees_mutation_activite, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_entrees_mutation_etage + ELSE 0::numeric + END AS nb_entrees_mutation_etage, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_sorties_directes + ELSE 0::numeric + END AS nb_sorties_directes, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_sorties_mutation_service + ELSE 0::numeric + END AS nb_sorties_mutation_service, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_sorties_mutation_activite + ELSE 0::numeric + END AS nb_sorties_mutation_activite, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_sorties_mutation_etage + ELSE 0::numeric + END AS nb_sorties_mutation_etage, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_urgences + ELSE 0::numeric + END AS nb_urgences, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_externes + ELSE 0::numeric + END AS nb_externes, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_passage_externe::numeric + ELSE 0::numeric + END AS nb_passage_externe, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_ambulatoires + ELSE 0::numeric + END AS nb_ambulatoires, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_seances + ELSE 0::numeric + END AS nb_seances, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel IS DISTINCT FROM '1'::bpchar THEN v_mouvements_sejour_2.nb_bebes + ELSE 0::numeric + END AS nb_bebes, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_jours_d::numeric + ELSE 0::numeric + END AS previsions_nb_jours_d, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_jours_f::numeric + ELSE 0::numeric + END AS previsions_nb_jours_f, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_jours_12::numeric + ELSE 0::numeric + END AS previsions_nb_jours_12, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_jours_prorata + ELSE 0::numeric + END AS previsions_nb_jours_prorata, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_emc + ELSE 0::numeric + END AS previsions_nb_emc, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_chambres_particulieres + ELSE 0::numeric + END AS previsions_nb_chambres_particulieres, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_entrees_directes + ELSE 0::numeric + END AS previsions_nb_entrees_directes, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_entrees_mutation_service + ELSE 0::numeric + END AS previsions_nb_entrees_mutation_service, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_entrees_mutation_activite + ELSE 0::numeric + END AS previsions_nb_entrees_mutation_activite, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_entrees_mutation_etage + ELSE 0::numeric + END AS previsions_nb_entrees_mutation_etage, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_sorties_directes + ELSE 0::numeric + END AS previsions_nb_sorties_directes, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_sorties_mutation_service + ELSE 0::numeric + END AS previsions_nb_sorties_mutation_service, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_sorties_mutation_activite + ELSE 0::numeric + END AS previsions_nb_sorties_mutation_activite, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_sorties_mutation_etage + ELSE 0::numeric + END AS previsions_nb_sorties_mutation_etage, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_urgences + ELSE 0::numeric + END AS previsions_nb_urgences, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_externes + ELSE 0::numeric + END AS previsions_nb_externes, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_ambulatoires + ELSE 0::numeric + END AS previsions_nb_ambulatoires, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_seances + ELSE 0::numeric + END AS previsions_nb_seances, + CASE + WHEN v_mouvements_sejour_2.est_mouvement_previsionnel = '1'::bpchar THEN v_mouvements_sejour_2.nb_bebes + ELSE 0::numeric + END AS previsions_nb_bebes, + v_mouvements_sejour_2.no_oid, + v_mouvements_sejour_2.no_code, + v_mouvements_sejour_2.no_nb_lits, + v_mouvements_sejour_2.est_facture, + v_mouvements_sejour_2.equivalent_malade_complet, + v_sejours_1.finess_section_id, + v_sejours_1.finess_section_code, + v_sejours_1.finess_section_texte, + v_mouvements_sejour_2.nb_preadmission_validee, + v_mouvements_sejour_2.nb_preadmission_validee_j1, + v_mouvements_sejour_2.nb_preadmission_validee_j2 + FROM activite.v_sejours_1, + activite.v_mouvements_sejour_2 + WHERE v_sejours_1.no_sejour = v_mouvements_sejour_2.no_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_parametre_personnalise_sejour_1_2.yaml b/db/schema2/views/v_parametre_personnalise_sejour_1_2.yaml new file mode 100644 index 0000000..f836459 --- /dev/null +++ b/db/schema2/views/v_parametre_personnalise_sejour_1_2.yaml @@ -0,0 +1,61 @@ +dep: + - v_listes_1 +src: | + ( + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + ('0'::text || v_listes_1.sort) || chr(1) AS code, + v_listes_1.lvl AS level, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'PERSO_SEJ1'::text AND v_listes_1.lvl <> '0'::text + UNION ALL ( + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS code, + '1'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'PERSO_SEJ1'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS code, + '2'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'PERSO_SEJ1'::text + ) + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS code, + '2'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'PERSO_SEJ1'::text + ) UNION + SELECT 'DT'::text || t_parametre_personnalise_sejour_1.oid::text AS oid, + (t_parametre_personnalise_sejour_1.code || ' '::text) || t_parametre_personnalise_sejour_1.texte_court AS texte, + '9'::text || t_parametre_personnalise_sejour_1.code AS code, + '1'::text AS level, + '0'::character(1) AS is_cti + FROM activite.t_parametre_personnalise_sejour_1 + WHERE t_parametre_personnalise_sejour_1.oid > 0 + ORDER BY 3, 1, 2; \ No newline at end of file diff --git a/db/schema2/views/v_parametre_personnalise_sejour_2_2.yaml b/db/schema2/views/v_parametre_personnalise_sejour_2_2.yaml new file mode 100644 index 0000000..af24053 --- /dev/null +++ b/db/schema2/views/v_parametre_personnalise_sejour_2_2.yaml @@ -0,0 +1,61 @@ +dep: + - v_listes_1 +src: | + ( + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + ('0'::text || v_listes_1.sort) || chr(1) AS code, + v_listes_1.lvl AS level, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'PERSO_SEJ1'::text AND v_listes_1.lvl <> '0'::text + UNION ALL ( + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS code, + '1'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'PERSO_SEJ2'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS code, + '2'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'PERSO_SEJ2'::text + ) + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS code, + '2'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'PERSO_SEJ2'::text + ) UNION + SELECT 'DT'::text || t_parametre_personnalise_sejour_2.oid::text AS oid, + (t_parametre_personnalise_sejour_2.code || ' '::text) || t_parametre_personnalise_sejour_2.texte_court AS texte, + '9'::text || t_parametre_personnalise_sejour_2.code AS code, + '1'::text AS level, + '0'::character(1) AS is_cti + FROM activite.t_parametre_personnalise_sejour_2 + WHERE t_parametre_personnalise_sejour_2.oid > 0 + ORDER BY 3, 1, 2; \ No newline at end of file diff --git a/db/schema2/views/v_places_1.yaml b/db/schema2/views/v_places_1.yaml new file mode 100644 index 0000000..60118a7 --- /dev/null +++ b/db/schema2/views/v_places_1.yaml @@ -0,0 +1,143 @@ +src: | + SELECT t_places.type_sejour_id, + t_type_sejour.code AS type_sejour_code, + t_type_sejour.texte AS type_sejour_texte, + t_type_sejour.section_id AS type_sejour_section_id, + t_type_sejour.section_code AS type_sejour_section_code, + t_type_sejour.section_texte AS type_sejour_section_texte, + t_places.parent_id, + t_places_parents.parent_code, + t_places_parents.parent_texte, + t_places_parents.parent_section_id, + t_places_parents.parent_section_code, + t_places_parents.parent_section_texte, + t_places.date, + t_places.jour_semaine, + t_places.is_weekend, + t_places.nb_lits_theoriques, + t_places.nb_lits_cp_theoriques, + t_places.nb_lits_ouverts, + t_places.nb_lits_cp_ouverts, + t_places.est_ouvert, + t_places.heberge_hospitalises, + t_places.heberge_ambulatoires, + t_places.heberge_externes, + t_places.heberge_bebes, + t_places.heberge_urgences, + t_places.heberge_seances, + t_places_parents.parent_type, + CASE + WHEN t_places_parents.parent_type = 'ETA'::text THEN t_places.parent_id + ELSE - 111::bigint + END AS etage_id, + CASE + WHEN t_places_parents.parent_type = 'ETA'::text THEN t_places_parents.parent_code + ELSE ''::text + END AS etage_code, + CASE + WHEN t_places_parents.parent_type = 'ETA'::text THEN t_places_parents.parent_texte + ELSE ''::text + END AS etage_texte, + CASE + WHEN t_places_parents.parent_type = 'ETA'::text THEN t_places_parents.parent_section_id + ELSE ARRAY[- 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint] + END AS etage_section_id, + CASE + WHEN t_places_parents.parent_type = 'ETA'::text THEN t_places_parents.parent_section_code + ELSE ARRAY[''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text] + END AS etage_section_code, + CASE + WHEN t_places_parents.parent_type = 'ETA'::text THEN t_places_parents.parent_section_texte + ELSE ARRAY[''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text] + END AS etage_section_texte, + CASE + WHEN t_places_parents.parent_type = 'SER'::text THEN t_places.parent_id + ELSE - 111::bigint + END AS service_id, + CASE + WHEN t_places_parents.parent_type = 'SER'::text THEN t_places_parents.parent_code + ELSE ''::text + END AS service_code, + CASE + WHEN t_places_parents.parent_type = 'SER'::text THEN t_places_parents.parent_texte + ELSE ''::text + END AS service_texte, + CASE + WHEN t_places_parents.parent_type = 'SER'::text THEN t_places_parents.parent_section_id + ELSE ARRAY[- 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint] + END AS service_section_id, + CASE + WHEN t_places_parents.parent_type = 'SER'::text THEN t_places_parents.parent_section_code + ELSE ARRAY[''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text] + END AS service_section_code, + CASE + WHEN t_places_parents.parent_type = 'SER'::text THEN t_places_parents.parent_section_texte + ELSE ARRAY[''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text] + END AS service_section_texte, + CASE + WHEN t_places_parents.parent_type = 'UF'::text THEN t_places.parent_id + ELSE - 111::bigint + END AS uf_id, + CASE + WHEN t_places_parents.parent_type = 'UF'::text THEN t_places_parents.parent_code + ELSE ''::text + END AS uf_code, + CASE + WHEN t_places_parents.parent_type = 'UF'::text THEN t_places_parents.parent_texte + ELSE ''::text + END AS uf_texte, + CASE + WHEN t_places_parents.parent_type = 'UF'::text THEN t_places_parents.parent_section_id + ELSE ARRAY[- 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint] + END AS uf_section_id, + CASE + WHEN t_places_parents.parent_type = 'UF'::text THEN t_places_parents.parent_section_code + ELSE ARRAY[''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text] + END AS uf_section_code, + CASE + WHEN t_places_parents.parent_type = 'UF'::text THEN t_places_parents.parent_section_texte + ELSE ARRAY[''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text] + END AS uf_section_texte, + CASE + WHEN t_places_parents.parent_type = 'UM'::text THEN t_places.parent_id + ELSE - 111::bigint + END AS um_id, + CASE + WHEN t_places_parents.parent_type = 'UM'::text THEN t_places_parents.parent_code + ELSE ''::text + END AS um_code, + CASE + WHEN t_places_parents.parent_type = 'UM'::text THEN t_places_parents.parent_texte + ELSE ''::text + END AS um_texte, + CASE + WHEN t_places_parents.parent_type = 'UM'::text THEN t_places_parents.parent_section_id + ELSE ARRAY[- 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint, - 111::bigint] + END AS um_section_id, + CASE + WHEN t_places_parents.parent_type = 'UM'::text THEN t_places_parents.parent_section_code + ELSE ARRAY[''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text] + END AS um_section_code, + CASE + WHEN t_places_parents.parent_type = 'UM'::text THEN t_places_parents.parent_section_texte + ELSE ARRAY[''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text, ''::text] + END AS um_section_texte, + t_places_parents.mode_traitement_id, + t_places_parents.mode_traitement_code, + t_places_parents.mode_traitement_texte, + t_places_parents.finess_id, + t_places_parents.finess_code, + t_places_parents.finess_texte, + t_places_parents.finess_section_id, + t_places_parents.finess_section_code, + t_places_parents.finess_section_texte, + t_places.pole_id, + t_pole.code AS pole_code, + t_pole.texte AS pole_texte, + t_pole.section_id AS pole_section_id, + t_pole.section_code AS pole_section_code, + t_pole.section_texte AS pole_section_texte + FROM activite.t_places + JOIN activite.t_type_sejour ON t_type_sejour.oid = t_places.type_sejour_id + JOIN activite.t_places_parents ON t_places.parent_id = t_places_parents.oid + LEFT JOIN base.t_pole ON t_places.pole_id = t_pole.oid; \ No newline at end of file diff --git a/db/schema2/views/v_places_r_1.yaml b/db/schema2/views/v_places_r_1.yaml new file mode 100644 index 0000000..8a85333 --- /dev/null +++ b/db/schema2/views/v_places_r_1.yaml @@ -0,0 +1,61 @@ +dep: + - v_places_1 +src: | + SELECT v_places_1.date AS date_reference, + v_places_1.type_sejour_id, + v_places_1.type_sejour_code, + v_places_1.type_sejour_texte, + v_places_1.parent_id, + v_places_1.parent_code, + v_places_1.parent_texte, + v_places_1.parent_section_id, + v_places_1.parent_section_code, + v_places_1.parent_section_texte, + v_places_1.date, + v_places_1.jour_semaine, + v_places_1.is_weekend, + v_places_1.nb_lits_theoriques, + v_places_1.nb_lits_cp_theoriques, + v_places_1.nb_lits_ouverts, + v_places_1.nb_lits_cp_ouverts, + v_places_1.est_ouvert, + v_places_1.heberge_hospitalises, + v_places_1.heberge_ambulatoires, + v_places_1.heberge_externes, + v_places_1.heberge_bebes, + v_places_1.heberge_urgences, + v_places_1.parent_type, + v_places_1.etage_id, + v_places_1.etage_code, + v_places_1.etage_texte, + v_places_1.etage_section_id, + v_places_1.etage_section_code, + v_places_1.etage_section_texte, + v_places_1.service_id, + v_places_1.service_code, + v_places_1.service_texte, + v_places_1.service_section_id, + v_places_1.service_section_code, + v_places_1.service_section_texte, + v_places_1.uf_id, + v_places_1.uf_code, + v_places_1.uf_texte, + v_places_1.uf_section_id, + v_places_1.uf_section_code, + v_places_1.uf_section_texte, + v_places_1.finess_id, + v_places_1.finess_code, + v_places_1.finess_texte, + v_places_1.finess_section_id, + v_places_1.finess_section_code, + v_places_1.finess_section_texte, + v_places_1.pole_id, + v_places_1.pole_code, + v_places_1.pole_texte, + v_places_1.pole_section_id, + v_places_1.pole_section_code, + v_places_1.pole_section_texte, + v_places_1.mode_traitement_id, + v_places_1.mode_traitement_code, + v_places_1.mode_traitement_texte + FROM activite.v_places_1; \ No newline at end of file diff --git a/db/schema2/views/v_pole_1.yaml b/db/schema2/views/v_pole_1.yaml new file mode 100644 index 0000000..3c8b117 --- /dev/null +++ b/db/schema2/views/v_pole_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_pole.oid AS join_pole_id, + t_pole.code AS pole_code, + t_pole.texte AS pole_texte, + t_pole.section_id AS pole_section_id, + t_pole.section_code AS pole_section_code, + t_pole.section_texte AS pole_section_texte + FROM activite.t_pole; \ No newline at end of file diff --git a/db/schema2/views/v_pole_2.yaml b/db/schema2/views/v_pole_2.yaml new file mode 100644 index 0000000..c4658e6 --- /dev/null +++ b/db/schema2/views/v_pole_2.yaml @@ -0,0 +1,68 @@ +dep: + - v_listes_1 +src: | + ( + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.liste_alias_combo AS alias, + v_listes_1.texte, + ('0'::text || v_listes_1.sort) || chr(1) AS code, + v_listes_1.lvl AS level, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'POLE'::text AND v_listes_1.lvl <> '0'::text + UNION ALL ( + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + ''::text AS alias, + t_classes.texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS code, + '1'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'POLE'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + ('#LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.code AS alias, + t_classes_sections.texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS code, + '2'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'POLE'::text + ) + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + ''::text AS alias, + 'Section non attribuée'::character varying AS texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS code, + '2'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'POLE'::text + ) UNION + SELECT 'DT'::text || t_pole.oid::text AS oid, + '#DT'::text || t_pole.code AS alias, + (t_pole.code || ' '::text) || t_pole.texte_court AS texte, + '9'::text || t_pole.code AS code, + '1'::text AS level, + '0'::character(1) AS is_cti + FROM activite.t_pole + WHERE (t_pole.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'pole'::text)) + ORDER BY 4, 1, 3; \ No newline at end of file diff --git a/db/schema2/views/v_prestations_1.yaml b/db/schema2/views/v_prestations_1.yaml new file mode 100644 index 0000000..5ccfbd8 --- /dev/null +++ b/db/schema2/views/v_prestations_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_prestations.oid, + (t_prestations.code || ' '::text) || t_prestations.texte_court AS texte + FROM activite.t_prestations + WHERE (t_prestations.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'prestation_c'::text)) + ORDER BY t_prestations.code; \ No newline at end of file diff --git a/db/schema2/views/v_prestations_2.yaml b/db/schema2/views/v_prestations_2.yaml new file mode 100644 index 0000000..6da24e3 --- /dev/null +++ b/db/schema2/views/v_prestations_2.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_prestations.oid, + (t_prestations.code || ' '::text) || t_prestations.texte_court AS texte + FROM activite.t_prestations + WHERE (t_prestations.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'prestation_h'::text)) + ORDER BY t_prestations.code; \ No newline at end of file diff --git a/db/schema2/views/v_prestations_3.yaml b/db/schema2/views/v_prestations_3.yaml new file mode 100644 index 0000000..2dedd8c --- /dev/null +++ b/db/schema2/views/v_prestations_3.yaml @@ -0,0 +1,65 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS sort, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'PRESTA_C'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '1'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'PRESTA_C'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + '2'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'PRESTA_C'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + '2'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'PRESTA_C'::text + UNION ALL + SELECT 'PR'::text || t_prestations.oid::text AS oid, + (t_prestations.code || ' '::text) || + CASE + WHEN t_prestations.texte_court <> t_prestations.code THEN t_prestations.texte_court + ELSE ''::text + END AS texte, + '1'::text AS level, + '9'::text || t_prestations.code AS sort, + '0'::character(1) AS is_cti + FROM activite.t_prestations + WHERE (t_prestations.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'prestation_c'::text)) + ORDER BY 4; \ No newline at end of file diff --git a/db/schema2/views/v_prestations_4.yaml b/db/schema2/views/v_prestations_4.yaml new file mode 100644 index 0000000..536c351 --- /dev/null +++ b/db/schema2/views/v_prestations_4.yaml @@ -0,0 +1,23 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS sort + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'PRESTA_H'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT 'PR'::text || t_prestations.oid::text AS oid, + (t_prestations.code || ' '::text) || + CASE + WHEN t_prestations.texte_court <> t_prestations.code THEN t_prestations.texte_court + ELSE ''::text + END AS texte, + '1'::text AS level, + '4'::text || t_prestations.code AS sort + FROM activite.t_prestations + WHERE (t_prestations.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'prestation_h'::text)) + ORDER BY 4; \ No newline at end of file diff --git a/db/schema2/views/v_protocoles_2.yaml b/db/schema2/views/v_protocoles_2.yaml new file mode 100644 index 0000000..91bd685 --- /dev/null +++ b/db/schema2/views/v_protocoles_2.yaml @@ -0,0 +1,62 @@ +dep: + - v_listes_1 +src: | + ( + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS sort, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'PROTOCOLE'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '1'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'PROTOCOLE'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + '2'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'PROTOCOLE'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + '2'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'PROTOCOLE'::text + ) UNION + SELECT 'DT'::text || t_protocoles.oid::text AS oid, + (t_protocoles.code || ' '::text) || t_protocoles.texte_court AS texte, + '1'::text AS level, + '9'::text || t_protocoles.code AS sort, + '0'::character(1) AS is_cti + FROM activite.t_protocoles + WHERE (t_protocoles.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'protocole_h'::text)) + ORDER BY 4; \ No newline at end of file diff --git a/db/schema2/views/v_provenances_entree_1.yaml b/db/schema2/views/v_provenances_entree_1.yaml new file mode 100644 index 0000000..e68d8e9 --- /dev/null +++ b/db/schema2/views/v_provenances_entree_1.yaml @@ -0,0 +1,9 @@ +src: | + SELECT ascii(t_provenances_entree.code::text) AS provenance_id, + t_provenances_entree.code AS provenance_code, + CASE + WHEN t_provenances_entree.code <> ''::bpchar THEN t_provenances_entree.texte + ELSE 'Non saisi'::text + END AS provenance_texte + FROM base.t_provenances_entree + ORDER BY 'PR'::text || t_provenances_entree.code::text; \ No newline at end of file diff --git a/db/schema2/views/v_provenances_entree_2.yaml b/db/schema2/views/v_provenances_entree_2.yaml new file mode 100644 index 0000000..eac3528 --- /dev/null +++ b/db/schema2/views/v_provenances_entree_2.yaml @@ -0,0 +1,23 @@ +src: | + SELECT 'PR'::text || t_provenances_entree.code::text AS code, + CASE + WHEN t_provenances_entree.code <> ''::bpchar THEN (t_provenances_entree.code::text || ' - '::text) || t_provenances_entree.texte + ELSE 'Non saisi'::text + END AS texte, + CASE + WHEN t_provenances_entree.code <> ''::bpchar THEN (t_provenances_entree.code::text || ' - '::text) || t_provenances_entree.texte_court + ELSE 'Non saisi'::text + END AS texte_court + FROM base.t_provenances_entree + UNION ALL + SELECT 'PX'::text || t_provenances_entree.code::text AS code, + CASE + WHEN t_provenances_entree.code <> ''::bpchar THEN ((('SAUF '::text || t_provenances_entree.texte) || ' ('::text) || t_provenances_entree.code::text) || ')'::text + ELSE 'SAUF Non saisi'::text + END AS texte, + CASE + WHEN t_provenances_entree.code <> ''::bpchar THEN ((('SAUF '::text || t_provenances_entree.texte_court) || ' ('::text) || t_provenances_entree.code::text) || ')'::text + ELSE 'SAUF Non saisi'::text + END AS texte_court + FROM base.t_provenances_entree + ORDER BY 1; \ No newline at end of file diff --git a/db/schema2/views/v_rapports_tables_indicateurs_1.yaml b/db/schema2/views/v_rapports_tables_indicateurs_1.yaml new file mode 100644 index 0000000..0cae359 --- /dev/null +++ b/db/schema2/views/v_rapports_tables_indicateurs_1.yaml @@ -0,0 +1,73 @@ +src: | + SELECT 1::bigint AS oid, + 'SEJOURS'::text AS code, + 'Superviseur d''activité'::text AS texte, + '245'::text AS dimensions_date, + ARRAY[''::text, 'sortie'::text, ''::text, 'ventes'::text, 'groupage'::text] AS dimensions_date_texte + UNION + SELECT 2::bigint AS oid, + 'OCCUPATION'::text AS code, + 'Occupation'::text AS texte, + '1'::text AS dimensions_date, + ARRAY['mouvement'::text, ''::text, ''::text, ''::text, ''::text] AS dimensions_date_texte + UNION + SELECT 3::bigint AS oid, + 'PLACES'::text AS code, + 'Places'::text AS texte, + '1'::text AS dimensions_date, + ARRAY['mouvement'::text, ''::text, ''::text, ''::text, ''::text] AS dimensions_date_texte + UNION + SELECT 4::bigint AS oid, + 'FACTURATION_CLINIQUE'::text AS code, + 'Facturation Clinique'::text AS texte, + '1234'::text AS dimensions_date, + ARRAY['acte'::text, 'sortie'::text, 'facture'::text, 'ventes'::text, ''::text] AS dimensions_date_texte + UNION + SELECT 5::bigint AS oid, + 'CLIENTS_CLINIQUE'::text AS code, + 'Clients Clinique'::text AS texte, + '4'::text AS dimensions_date, + ARRAY[''::text, ''::text, ''::text, 'comptable'::text, ''::text] AS dimensions_date_texte + UNION + SELECT 6::bigint AS oid, + 'FACTURATION_HONORAIRE'::text AS code, + 'Facturation Honoraires'::text AS texte, + '1234'::text AS dimensions_date, + ARRAY['acte'::text, 'sortie'::text, 'facture'::text, 'ventes'::text, ''::text] AS dimensions_date_texte + UNION + SELECT 7::bigint AS oid, + 'CLIENTS_HONORAIRE'::text AS code, + 'Clients Honoraire'::text AS texte, + '4'::text AS dimensions_date, + ARRAY[''::text, ''::text, ''::text, 'comptable'::text, ''::text] AS dimensions_date_texte + UNION + SELECT 8::bigint AS oid, + 'EN_COURS'::text AS code, + 'En-cours'::text AS texte, + '4'::text AS dimensions_date, + ARRAY[''::text, ''::text, ''::text, 'comptable'::text, ''::text] AS dimensions_date_texte + UNION + SELECT 9::bigint AS oid, + 'ANNULATIONS'::text AS code, + 'Annulations'::text AS texte, + '1'::text AS dimensions_date, + ARRAY['entree'::text, ''::text, ''::text, ''::text, ''::text] AS dimensions_date_texte + UNION + SELECT 11::bigint AS oid, + 'OCCUPATION_BLOC'::text AS code, + 'Occupation bloc'::text AS texte, + '1'::text AS dimensions_date, + ARRAY['intervention'::text, ''::text, ''::text, ''::text, ''::text] AS dimensions_date_texte + UNION + SELECT 97::bigint AS oid, + 'CALENDRIER'::text AS code, + 'Calendrier'::text AS texte, + '1'::text AS dimensions_date, + ARRAY['jour'::text, ''::text, ''::text, ''::text, ''::text] AS dimensions_date_texte + UNION + SELECT 98::bigint AS oid, + '*CALC'::text AS code, + 'Calcul entre indicateurs'::text AS texte, + ''::text AS dimensions_date, + ARRAY[''::text, ''::text, ''::text, ''::text, ''::text] AS dimensions_date_texte + ORDER BY 1; \ No newline at end of file diff --git a/db/schema2/views/v_rejets_noemie_1.yaml b/db/schema2/views/v_rejets_noemie_1.yaml new file mode 100644 index 0000000..9a18b5d --- /dev/null +++ b/db/schema2/views/v_rejets_noemie_1.yaml @@ -0,0 +1,63 @@ +dep: + - v_listes_1 +src: | + ( + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS sort, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'REJETNOEMI'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '1'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'REJETNOEMI'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + '2'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'REJETNOEMI'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribue'::character varying AS texte, + '2'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'REJETNOEMI'::text + ) UNION + SELECT 'RJ'::text || t_rejets_noemie.oid::text AS oid, + (t_rejets_noemie.code || ' '::text) || + CASE + WHEN t_rejets_noemie.texte <> t_rejets_noemie.code THEN t_rejets_noemie.texte + ELSE ''::text + END AS texte, + '1'::text AS level, + '9'::text || t_rejets_noemie.code AS sort, + '0'::character(1) AS is_cti + FROM activite.t_rejets_noemie + ORDER BY 4; \ No newline at end of file diff --git a/db/schema2/views/v_risque_1.yaml b/db/schema2/views/v_risque_1.yaml new file mode 100644 index 0000000..a545d15 --- /dev/null +++ b/db/schema2/views/v_risque_1.yaml @@ -0,0 +1,5 @@ +src: | + SELECT t_risque.oid AS risque_id, + t_risque.code AS risque_code, + t_risque.texte AS risque_texte + FROM activite.t_risque; \ No newline at end of file diff --git a/db/schema2/views/v_risque_2.yaml b/db/schema2/views/v_risque_2.yaml new file mode 100644 index 0000000..c4100f9 --- /dev/null +++ b/db/schema2/views/v_risque_2.yaml @@ -0,0 +1,19 @@ +src: | + SELECT 'DT'::text || t_risque.oid::text AS oid, + (t_risque.code || ' - '::text) || t_risque.texte AS texte, + t_risque.code, + '1'::text AS level, + '8'::text || t_risque.code AS tri, + '0'::character(1) AS is_cti + FROM activite.t_risque + WHERE t_risque.oid = 0 + UNION + SELECT 'DT'::text || t_risque.oid::text AS oid, + (t_risque.code || ' - '::text) || t_risque.texte AS texte, + t_risque.code, + '1'::text AS level, + '9'::text || t_risque.code AS tri, + '0'::character(1) AS is_cti + FROM activite.t_risque + WHERE t_risque.oid <> 0 + ORDER BY 5; \ No newline at end of file diff --git a/db/schema2/views/v_rubriques_facturation_1.yaml b/db/schema2/views/v_rubriques_facturation_1.yaml new file mode 100644 index 0000000..3d138f2 --- /dev/null +++ b/db/schema2/views/v_rubriques_facturation_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_rubriques_facturation.oid, + (t_rubriques_facturation.code || ' '::text) || t_rubriques_facturation.texte_court AS texte + FROM activite.t_rubriques_facturation + WHERE (t_rubriques_facturation.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'rubrique_c'::text)) + ORDER BY t_rubriques_facturation.code; \ No newline at end of file diff --git a/db/schema2/views/v_rubriques_facturation_2.yaml b/db/schema2/views/v_rubriques_facturation_2.yaml new file mode 100644 index 0000000..33a8c6e --- /dev/null +++ b/db/schema2/views/v_rubriques_facturation_2.yaml @@ -0,0 +1,67 @@ +dep: + - v_listes_1 +src: | + ( + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.liste_alias_combo AS alias, + v_listes_1.texte, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS sort, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'RUBRIQUE'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + ''::text AS alias, + t_classes.texte, + '1'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'RUBRIQUE'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + (('#LS'::text || t_classes.code) || ':'::text) || t_classes_sections.code AS alias, + t_classes_sections.texte, + '2'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'RUBRIQUE'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + ''::text AS alias, + 'Section non attribuée'::character varying AS texte, + '2'::text AS level, + '4'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'RUBRIQUE'::text + ) UNION + SELECT 'RU'::text || t_rubriques_facturation.oid::text AS oid, + '#RU'::text || t_rubriques_facturation.code AS alias, + (t_rubriques_facturation.code || ' '::text) || t_rubriques_facturation.texte_court AS texte, + '1'::text AS level, + '9'::text || t_rubriques_facturation.code AS sort, + '0'::character(1) AS is_cti + FROM activite.t_rubriques_facturation + WHERE (t_rubriques_facturation.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'rubrique_c'::text)) + ORDER BY 5; \ No newline at end of file diff --git a/db/schema2/views/v_sejour_effet_tarif_1.yaml b/db/schema2/views/v_sejour_effet_tarif_1.yaml new file mode 100644 index 0000000..e8d0da7 --- /dev/null +++ b/db/schema2/views/v_sejour_effet_tarif_1.yaml @@ -0,0 +1,44 @@ +src: | + SELECT p_sejour_effet_tarif.sejour_id, + p_sejour_effet_tarif.no_sejour, + p_sejour_effet_tarif.ok_ghs_f, + p_sejour_effet_tarif.coefficient_c, + p_sejour_effet_tarif.ok_ghs_c, + p_sejour_effet_tarif.tarif_ghs_c, + p_sejour_effet_tarif.tarif_exh_c, + p_sejour_effet_tarif.tarif_exb_c, + p_sejour_effet_tarif.forfait_exb_c, + p_sejour_effet_tarif.borne_basse_c, + p_sejour_effet_tarif.borne_haute_c, + p_sejour_effet_tarif.tarif_ghs_bb1_c, + p_sejour_effet_tarif.tarif_ghs_bb2_c, + p_sejour_effet_tarif.tarif_ghs_bb3_c, + p_sejour_effet_tarif.coefficient_p, + p_sejour_effet_tarif.ok_ghs_p, + p_sejour_effet_tarif.tarif_ghs_p, + p_sejour_effet_tarif.tarif_exh_p, + p_sejour_effet_tarif.tarif_exb_p, + p_sejour_effet_tarif.forfait_exb_p, + p_sejour_effet_tarif.borne_basse_p, + p_sejour_effet_tarif.borne_haute_p, + p_sejour_effet_tarif.tarif_ghs_bb1_p, + p_sejour_effet_tarif.tarif_ghs_bb2_p, + p_sejour_effet_tarif.tarif_ghs_bb3_p, + p_sejour_effet_tarif.montant_ghs_f, + p_sejour_effet_tarif.montant_exh_f, + p_sejour_effet_tarif.montant_tot_f, + p_sejour_effet_tarif.montant_ghs_c, + p_sejour_effet_tarif.montant_exh_c, + p_sejour_effet_tarif.montant_exb_c, + p_sejour_effet_tarif.montant_ghs_bb1_c, + p_sejour_effet_tarif.montant_ghs_bb2_c, + p_sejour_effet_tarif.montant_ghs_bb3_c, + p_sejour_effet_tarif.montant_tot_c, + p_sejour_effet_tarif.montant_ghs_p, + p_sejour_effet_tarif.montant_exh_p, + p_sejour_effet_tarif.montant_exb_p, + p_sejour_effet_tarif.montant_tot_p, + p_sejour_effet_tarif.montant_ghs_bb1_p, + p_sejour_effet_tarif.montant_ghs_bb2_p, + p_sejour_effet_tarif.montant_ghs_bb3_p + FROM activite.p_sejour_effet_tarif; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_0.yaml b/db/schema2/views/v_sejours_0.yaml new file mode 100644 index 0000000..72c5a61 --- /dev/null +++ b/db/schema2/views/v_sejours_0.yaml @@ -0,0 +1,25 @@ +dep: + - v_ages_1 + - v_codes_postaux_2 + - v_destinations_sortie_1 + - v_modes_entree_1 + - v_modes_sortie_1 + - v_provenances_entree_1 +src: | + SELECT p_sejours.oid + FROM activite.p_sejours + JOIN activite.v_ages_1 ON v_ages_1.age_id::numeric = p_sejours.age + JOIN activite.v_codes_postaux_2 ON v_codes_postaux_2.code_postal_id = p_sejours.code_postal_id + JOIN activite.t_type_sejour ON t_type_sejour.code = p_sejours.type_sejour + JOIN activite.v_modes_entree_1 ON v_modes_entree_1.mode_entree_code = p_sejours.mode_entree + JOIN activite.v_provenances_entree_1 ON v_provenances_entree_1.provenance_code = p_sejours.provenance + JOIN activite.v_modes_sortie_1 ON v_modes_sortie_1.mode_sortie_code = p_sejours.mode_sortie + JOIN activite.v_destinations_sortie_1 ON v_destinations_sortie_1.destination_code = p_sejours.destination + JOIN activite.t_ghs_c ON t_ghs_c.ghs_id = p_sejours.ghs_id + JOIN activite.t_ghm_c ON t_ghm_c.ghm_id = p_sejours.ghm_id + JOIN activite.t_tiers_payant ON t_tiers_payant.oid = p_sejours.tiers_payant_0_id + JOIN activite.t_medecins_administratifs_c ON p_sejours.medecin_sejour_id = t_medecins_administratifs_c.oid + JOIN activite.t_lieux_c ON t_lieux_c.oid = p_sejours.lieu_sortie_id + JOIN base.t_modes_traitement ON t_modes_traitement.oid = p_sejours.mode_traitement_id + JOIN activite.t_risque ON t_risque.oid = p_sejours.risque_id + WHERE p_sejours.etat = ''::bpchar; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_1.yaml b/db/schema2/views/v_sejours_1.yaml new file mode 100644 index 0000000..ec14eb4 --- /dev/null +++ b/db/schema2/views/v_sejours_1.yaml @@ -0,0 +1,316 @@ +src: | + SELECT t_finess_c.oid AS finess_id, + p_sejours.finess AS finess_code, + t_finess_c.texte_court AS finess_texte, + t_finess_c.section_id AS finess_section_id, + t_finess_c.section_code AS finess_section_code, + t_finess_c.section_texte AS finess_section_texte, + p_sejours.finess, + p_sejours.provider_id, + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.no_patient, + p_sejours.code_sexe, + CASE + WHEN p_sejours.code_sexe = '1'::bpchar THEN 'M'::bpchar + WHEN p_sejours.code_sexe = '2'::bpchar THEN 'F'::bpchar + ELSE p_sejours.code_sexe + END AS sexe_texte_court, + p_sejours.age, + p_sejours.code_postal_id, + p_sejours.code_prevu, + p_sejours.type_sejour, + p_sejours.est_budget_global, + t_type_sejour.oid AS type_sejour_id, + p_sejours.type_sejour AS type_sejour_code, + t_type_sejour.texte AS type_sejour_texte, + t_type_sejour.section_id AS type_sejour_section_id, + t_type_sejour.section_code AS type_sejour_section_code, + t_type_sejour.section_texte AS type_sejour_section_texte, + t_lieux_c.mode_traitement_id, + t_lieux_c.mode_traitement_code, + t_lieux_c.mode_traitement_texte, + to_char(p_sejours.date_entree::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_entree, + p_sejours.date_entree, + p_sejours.heure_entree, + p_sejours.mode_entree, + p_sejours.provenance, + to_char(p_sejours.date_sortie::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_sortie, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.heure_sortie, + p_sejours.mode_sortie, + p_sejours.destination, + p_sejours.code_cp_demandee, + p_sejours.ghs_id, + t_ghs_c.ghs_code_text AS ghs_code, + t_ghs_c.ghs_texte, + p_sejours.ghm_id, + t_ghm_c.ghm_code, + t_ghm_c.ghm_texte, + t_ghm_c.ghm5_id, + t_ghm_c.ghm5_code, + t_ghm_c.ghm5_texte, + t_ghm_c.severite_ghm_id, + t_ghm_c.severite_ghm_code, + t_ghm_c.severite_ghm_texte, + t_ghm_c.cas_id, + t_ghm_c.cas_code, + t_ghm_c.cas_texte, + t_ghm_c.mco_id, + t_ghm_c.mco_code, + t_ghm_c.mco_texte, + t_ghm_c.cmd_id, + t_ghm_c.cmd_code, + t_ghm_c.cmd_texte, + t_ghm_c.mco_id AS mcos_id, + t_ghm_c.mco_code AS mcos_code, + t_ghm_c.mco_texte AS mcos_texte, + t_ghm_c.ghm_section_id, + t_ghm_c.ghm_section_code, + t_ghm_c.ghm_section_texte, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.medecin_sejour_id AS medecin_adm_sejour_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_sejour_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_sejour_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_sejour_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_sejour_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_sejour_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_sejour_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_sejour_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_sejour_id, + t_medecins_administratifs_c.medecin_code AS medecin_sejour_code, + t_medecins_administratifs_c.nom AS medecin_sejour_nom, + t_medecins_administratifs_c.prenom AS medecin_sejour_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_sejour_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_sejour_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_sejour_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_sejour_specialite_texte, + p_sejours.lieu_sortie_id, + t_lieux_c.service_facturation_id AS lieu_sortie_service_id, + t_lieux_c.service_facturation_code AS lieu_sortie_service_code, + t_lieux_c.service_facturation_texte AS lieu_sortie_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_sortie_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_sortie_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_sortie_service_section_texte, + t_lieux_c.service_facturation_section_nb_lits AS lieu_sortie_service_section_nb_lits, + t_lieux_c.service_facturation_section_nb_cp AS lieu_sortie_service_section_nb_cp, + t_lieux_c.activite_id AS lieu_sortie_activite_id, + t_lieux_c.activite_code AS lieu_sortie_activite_code, + t_lieux_c.activite_texte AS lieu_sortie_activite_texte, + t_lieux_c.etage_id AS lieu_sortie_etage_id, + t_lieux_c.etage_code AS lieu_sortie_etage_code, + t_lieux_c.etage_texte AS lieu_sortie_etage_texte, + t_lieux_c.etage_section_id AS lieu_sortie_etage_section_id, + t_lieux_c.etage_section_code AS lieu_sortie_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_sortie_etage_section_texte, + t_lieux_c.lit_id AS lieu_sortie_lit_id, + t_lieux_c.lit_code AS lieu_sortie_lit_code, + t_lieux_c.lit_texte AS lieu_sortie_lit_texte, + t_lieux_c.lit_section_id AS lieu_sortie_lit_section_id, + t_lieux_c.lit_section_code AS lieu_sortie_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_sortie_lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_sortie_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_sortie_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_sortie_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_sortie_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_sortie_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_sortie_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS lieu_sortie_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_sortie_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_sortie_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_sortie_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_sortie_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_sortie_unite_fonctionnelle_section_texte, + to_char( + CASE + WHEN p_sejours.ghs_id > 0 OR p_sejours.gmt_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_groupage, + CASE + WHEN p_sejours.ghs_id > 0 OR p_sejours.gmt_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END AS date_groupage, + CASE + WHEN t_lieux_c.type_t2a = '1'::bpchar AND (p_sejours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text, '6'::bpchar::text])) AND (p_sejours.ghs_id > 0 OR p_sejours.gmt_id > 0) AND p_sejours.date_groupage < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_groupage, + CASE + WHEN t_lieux_c.type_t2a = '1'::bpchar AND (p_sejours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text, '6'::bpchar::text])) AND ((p_sejours.ghs_id > 0 OR p_sejours.gmt_id > 0) AND p_sejours.date_groupage < '2099-12-31'::date OR p_sejours.date_facture < '2099-12-31'::date) THEN 1 + ELSE 0 + END AS nb_groupe, + CASE + WHEN t_lieux_c.type_t2a = '1'::bpchar AND (p_sejours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text, '6'::bpchar::text])) AND (p_sejours.ghs_id > 0 OR p_sejours.gmt_id > 0) AND p_sejours.date_groupage < '2099-12-31'::date THEN p_sejours.delai_groupage + ELSE 0::numeric + END AS delai_groupage, + CASE + WHEN p_sejours.type_sejour <> ALL (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text, '6'::bpchar::text]) THEN 0 + WHEN p_sejours.code_sorti <> 1::numeric OR t_lieux_c.type_t2a <> '1'::bpchar OR p_sejours.date_groupage < '2099-12-31'::date AND (p_sejours.ghs_id > 0 OR p_sejours.gmt_id > 0) OR p_sejours.date_facture < '2099-12-31'::date THEN 0 + ELSE 1 + END AS nb_non_groupe, + p_sejours.est_sans_facturation, + to_char(p_sejours.date_facture::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_facture, + p_sejours.date_facture, + CASE + WHEN p_sejours.est_sans_facturation = '1'::bpchar THEN 0 + WHEN p_sejours.date_facture < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_facture, + CASE + WHEN p_sejours.est_sans_facturation = '1'::bpchar THEN 0::numeric + WHEN p_sejours.date_facture < '2099-12-31'::date THEN p_sejours.delai_facture + ELSE 0::numeric + END AS delai_facture, + CASE + WHEN p_sejours.est_sans_facturation = '1'::bpchar THEN 0 + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_non_facture, + to_char(p_sejours.date_expedition::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_expedition, + p_sejours.date_expedition, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_expedition < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_expedition, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_1 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_1_c <> p_sejours.montant_regle_1_c OR p_sejours.montant_comptabilise_1_h <> p_sejours.montant_regle_1_h) THEN 1 + WHEN p_sejours.date_expedition_2 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_2_c <> p_sejours.montant_regle_2_c OR p_sejours.montant_comptabilise_2_h <> p_sejours.montant_regle_2_h) THEN 1 + WHEN p_sejours.date_expedition_22 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_22_c <> p_sejours.montant_regle_22_c OR p_sejours.montant_comptabilise_22_h <> p_sejours.montant_regle_22_h) THEN 1 + ELSE 0 + END AS nb_non_expedie, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_1 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_1_c + p_sejours.montant_comptabilise_1_h - p_sejours.montant_regle_1_c - p_sejours.montant_regle_1_h + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_2 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_2_c + p_sejours.montant_comptabilise_2_h - p_sejours.montant_regle_2_c - p_sejours.montant_regle_2_h + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_22 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_22_c + p_sejours.montant_comptabilise_22_h - p_sejours.montant_regle_22_c - p_sejours.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date OR p_sejours.date_expedition < '2099-12-31'::date THEN p_sejours.delai_expedition + ELSE 0::numeric + END AS delai_expedition, + to_char(p_sejours.date_solde::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_solde, + p_sejours.date_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN 1 + ELSE 0 + END AS nb_delai_solde, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_c <> p_sejours.montant_comptabilise_c OR p_sejours.montant_regle_h <> p_sejours.montant_comptabilise_h THEN 1 + ELSE 0 + END AS nb_non_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN 0::numeric + ELSE p_sejours.montant_comptabilise_c + p_sejours.montant_comptabilise_h - p_sejours.montant_regle_c - p_sejours.montant_regle_h + END AS montant_non_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN p_sejours.delai_solde + ELSE 0::numeric + END AS delai_solde, + p_sejours.montant_facture_c, + p_sejours.montant_facture_0_c, + p_sejours.montant_facture_1_c, + p_sejours.montant_facture_2_c, + p_sejours.montant_facture_22_c, + p_sejours.montant_facture_h, + p_sejours.montant_facture_0_h, + p_sejours.montant_facture_1_h, + p_sejours.montant_facture_2_h, + p_sejours.montant_facture_22_h, + p_sejours.montant_facture_c_actes_inclus_dans_sejour, + p_sejours.montant_facture_h_actes_inclus_dans_sejour, + p_sejours.montant_comptabilise_c, + p_sejours.montant_comptabilise_h, + p_sejours.montant_comptabilise_budget_global_c, + p_sejours.montant_regle_c, + p_sejours.montant_regle_h, + 1 AS nb_sejours, + p_sejours.nb_factures, + p_sejours.nb_factures_regularisation, + p_sejours.nb_factures_rejet, + 0 AS no_oid, + CASE + WHEN p_sejours.type_sejour = ANY (ARRAY['3'::bpchar::text, '5'::bpchar::text, '9'::bpchar::text]) THEN 0 + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + WHEN p_sejours.type_sejour = '1'::text AND p_sejours.date_entree > '1970-01-01'::date AND date(now()) > p_sejours.date_entree THEN date(now()) - p_sejours.date_entree + ELSE 0 + END AS duree, + p_sejours.gme_id, + t_gme_c.gme_code, + t_gme_c.gme_texte, + t_gme_c.rgme_id, + t_gme_c.rgme_code, + t_gme_c.rgme_texte, + t_gme_c.gn_id, + t_gme_c.gn_code, + t_gme_c.gn_texte, + t_gme_c.cm_id, + t_gme_c.cm_code, + t_gme_c.cm_texte, + p_sejours.risque_id, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN '1'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN '2'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN '3'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN '4'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN '5'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN '6'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN '7'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN '8'::text + ELSE NULL::text + END AS severite_cti_code, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN 'Séances'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN 'Sévérité J'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN 'Sévérité T'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN 'Sévérité Z'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN 'Sévérité 1'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN 'Sévérité ABCDE'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN 'DS > 2 nuits'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN 'Non PMSI'::text + ELSE NULL::text + END AS severite_cti_texte, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN '1'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN '2'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN '3'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN '4'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN '5'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN '6'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN '7'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN '8'::text + ELSE NULL::text + END AS severite_cti_id, + p_sejours.gmt_id, + t_gmt_c.gmt_code + FROM activite.p_sejours + JOIN activite.t_type_sejour ON p_sejours.type_sejour = t_type_sejour.code + JOIN activite.t_medecins_administratifs_c ON p_sejours.medecin_sejour_id = t_medecins_administratifs_c.oid + JOIN activite.t_lieux_c ON p_sejours.lieu_sortie_id = t_lieux_c.oid + JOIN activite.t_ghs_c ON p_sejours.ghs_id = t_ghs_c.ghs_id + JOIN activite.t_ghm_c ON p_sejours.ghm_id = t_ghm_c.ghm_id + JOIN activite.t_gme_c ON p_sejours.gme_id = t_gme_c.gme_id + LEFT JOIN activite.t_finess_c ON p_sejours.finess = t_finess_c.code + LEFT JOIN activite.t_gmt_c ON p_sejours.gmt_id = t_gmt_c.gmt_id + WHERE p_sejours.etat = ''::bpchar; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_2.yaml b/db/schema2/views/v_sejours_2.yaml new file mode 100644 index 0000000..edf9f7f --- /dev/null +++ b/db/schema2/views/v_sejours_2.yaml @@ -0,0 +1,346 @@ +src: | + SELECT p_sejours.finess, + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.no_patient, + p_sejours.code_sexe, + CASE + WHEN p_sejours.code_sexe = '1'::bpchar THEN 'M'::bpchar + WHEN p_sejours.code_sexe = '2'::bpchar THEN 'F'::bpchar + ELSE 'M'::bpchar + END AS sexe_texte_court, + p_sejours.age, + p_sejours.code_postal_id, + p_sejours.code_prevu, + p_sejours.type_sejour, + CASE + WHEN p_sejours.type_sejour = '1'::text THEN 'Hospitalisés'::text + WHEN p_sejours.type_sejour = '2'::text THEN 'Ambulatoires'::text + WHEN p_sejours.type_sejour = '3'::text THEN 'Externes'::text + WHEN p_sejours.type_sejour = '4'::text THEN 'Long séjours'::text + WHEN p_sejours.type_sejour = '5'::text THEN 'Séances'::text + WHEN p_sejours.type_sejour = '6'::text THEN 'Bébés sans séjour'::text + WHEN p_sejours.type_sejour = '9'::text THEN 'Fictifs'::text + ELSE p_sejours.type_sejour + END AS type_sejour_texte, + t_lieux_c.mode_traitement_id, + t_lieux_c.mode_traitement_code, + t_lieux_c.mode_traitement_texte, + to_char(p_sejours.date_entree::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_entree, + p_sejours.date_entree, + p_sejours.heure_entree, + p_sejours.code_sorti, + to_char(p_sejours.date_sortie::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_sortie, + p_sejours.date_sortie, + p_sejours.heure_sortie, + p_sejours.ghs_id, + to_char(t_ghs_c.ghs_code, 'FM0000'::text) AS ghs_code, + t_ghs_c.ghs_texte, + p_sejours.ghm_id, + t_ghm_c.ghm_code, + t_ghm_c.ghm_texte, + t_ghm_c.ghm5_id, + t_ghm_c.ghm5_code, + t_ghm_c.ghm5_texte, + t_ghm_c.severite_ghm_id, + t_ghm_c.severite_ghm_code, + t_ghm_c.severite_ghm_texte, + t_ghm_c.cas_id, + t_ghm_c.cas_code, + t_ghm_c.cas_texte, + t_ghm_c.mco_id, + t_ghm_c.mco_code, + t_ghm_c.mco_texte, + t_ghm_c.cmd_id, + t_ghm_c.cmd_code, + t_ghm_c.cmd_texte, + t_ghm_c.mco_id AS mcos_id, + t_ghm_c.mco_code AS mcos_code, + t_ghm_c.mco_texte AS mcos_texte, + t_ghm_c.ghm_section_id, + t_ghm_c.ghm_section_code, + t_ghm_c.ghm_section_texte, + CASE + WHEN p_sejours.tiers_payant_0_id = t_tiers_payant.oid THEN p_sejours.tiers_payant_0_id + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid THEN p_sejours.tiers_payant_1_id + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid THEN p_sejours.tiers_payant_2_id + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid THEN p_sejours.tiers_payant_22_id + ELSE NULL::bigint + END AS tiers_payant_id, + t_tiers_payant.code AS tiers_payant_code, + t_tiers_payant.texte_court AS tiers_payant_texte, + p_sejours.medecin_sejour_id AS medecin_adm_sejour_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_sejour_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_sejour_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_sejour_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_sejour_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_sejour_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_sejour_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_sejour_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_sejour_id, + t_medecins_administratifs_c.nom AS medecin_sejour_nom, + t_medecins_administratifs_c.prenom AS medecin_sejour_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_sejour_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_sejour_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_sejour_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_sejour_specialite_texte, + p_sejours.lieu_sortie_id, + t_lieux_c.service_facturation_id AS lieu_sortie_service_id, + t_lieux_c.service_facturation_code AS lieu_sortie_service_code, + t_lieux_c.service_facturation_texte AS lieu_sortie_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_sortie_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_sortie_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_sortie_service_section_texte, + t_lieux_c.service_facturation_section_nb_lits AS lieu_sortie_service_section_nb_lits, + t_lieux_c.service_facturation_section_nb_cp AS lieu_sortie_service_section_nb_cp, + t_lieux_c.activite_id AS lieu_sortie_activite_id, + t_lieux_c.activite_code AS lieu_sortie_activite_code, + t_lieux_c.activite_texte AS lieu_sortie_activite_texte, + t_lieux_c.etage_id AS lieu_sortie_etage_id, + t_lieux_c.etage_code AS lieu_sortie_etage_code, + t_lieux_c.etage_texte AS lieu_sortie_etage_texte, + t_lieux_c.etage_section_id AS lieu_sortie_etage_section_id, + t_lieux_c.etage_section_code AS lieu_sortie_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_sortie_etage_section_texte, + t_lieux_c.lit_id AS lieu_sortie_lit_id, + t_lieux_c.lit_code AS lieu_sortie_lit_code, + t_lieux_c.lit_texte AS lieu_sortie_lit_texte, + t_lieux_c.lit_section_id AS lieu_sortie_lit_section_id, + t_lieux_c.lit_section_code AS lieu_sortie_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_sortie_lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_sortie_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_sortie_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_sortie_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_sortie_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_sortie_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_sortie_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS lieu_sortie_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_sortie_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_sortie_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_sortie_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_sortie_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_sortie_unite_fonctionnelle_section_texte, + to_char( + CASE + WHEN p_sejours.ghs_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_groupage, + CASE + WHEN p_sejours.ghs_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END AS date_groupage, + CASE + WHEN t_lieux_c.type_t2a = '1'::bpchar AND (p_sejours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND p_sejours.ghs_id > 0 AND p_sejours.date_groupage < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_groupage, + CASE + WHEN t_lieux_c.type_t2a = '1'::bpchar AND (p_sejours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND p_sejours.ghs_id > 0 AND p_sejours.date_groupage < '2099-12-31'::date THEN p_sejours.delai_groupage + ELSE 0::numeric + END AS delai_groupage, + CASE + WHEN p_sejours.type_sejour <> ALL (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text]) THEN 0 + WHEN t_lieux_c.type_t2a <> '1'::bpchar OR p_sejours.date_groupage < '2099-12-31'::date AND p_sejours.ghs_id > 0 THEN 0 + ELSE 1 + END AS nb_non_groupe, + to_char(p_sejours.date_facture::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_facture, + p_sejours.date_facture, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_facture, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date THEN p_sejours.delai_facture + ELSE 0::numeric + END AS delai_facture, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_non_facture, + CASE + WHEN p_sejours.tiers_payant_0_id = t_tiers_payant.oid THEN to_char(p_sejours.date_expedition_0::timestamp with time zone, 'YYYYMM'::text)::numeric + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid THEN to_char(p_sejours.date_expedition_1::timestamp with time zone, 'YYYYMM'::text)::numeric + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid THEN to_char(p_sejours.date_expedition_2::timestamp with time zone, 'YYYYMM'::text)::numeric + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid THEN to_char(p_sejours.date_expedition_22::timestamp with time zone, 'YYYYMM'::text)::numeric + ELSE NULL::numeric + END AS mois_expedition, + CASE + WHEN p_sejours.tiers_payant_0_id = t_tiers_payant.oid THEN p_sejours.date_expedition_0 + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid THEN p_sejours.date_expedition_1 + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid THEN p_sejours.date_expedition_2 + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid THEN p_sejours.date_expedition_22 + ELSE NULL::date + END AS date_expedition, + CASE + WHEN p_sejours.tiers_payant_0_id = t_tiers_payant.oid AND p_sejours.date_expedition_0 < '2099-12-31'::date THEN 1 + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid AND p_sejours.date_expedition_1 < '2099-12-31'::date THEN 1 + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid AND p_sejours.date_expedition_2 < '2099-12-31'::date THEN 1 + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid AND p_sejours.date_expedition_22 < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_expedition, + CASE + WHEN p_sejours.tiers_payant_0_id = t_tiers_payant.oid AND p_sejours.date_expedition_0 < '2099-12-31'::date THEN p_sejours.delai_expedition_0 + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid AND p_sejours.date_expedition_1 < '2099-12-31'::date THEN p_sejours.delai_expedition_1 + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid AND p_sejours.date_expedition_2 < '2099-12-31'::date THEN p_sejours.delai_expedition_2 + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid AND p_sejours.date_expedition_22 < '2099-12-31'::date THEN p_sejours.delai_expedition_22 + ELSE 0::numeric + END AS delai_expedition, + CASE + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid AND (p_sejours.date_expedition_1 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_1_c <> p_sejours.montant_regle_1_c OR p_sejours.montant_comptabilise_1_h <> p_sejours.montant_regle_1_h) OR p_sejours.date_facture = '2099-12-31'::date) THEN 1 + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid AND (p_sejours.date_expedition_2 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_2_c <> p_sejours.montant_regle_2_c OR p_sejours.montant_comptabilise_2_h <> p_sejours.montant_regle_2_h) OR p_sejours.date_facture = '2099-12-31'::date) THEN 1 + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid AND (p_sejours.date_expedition_22 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_22_c <> p_sejours.montant_regle_22_c OR p_sejours.montant_comptabilise_22_h <> p_sejours.montant_regle_22_h) OR p_sejours.date_facture = '2099-12-31'::date) THEN 1 + ELSE 0 + END AS nb_non_expedie, + CASE + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid AND p_sejours.date_expedition_1 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_1_c <> p_sejours.montant_regle_1_c OR p_sejours.montant_comptabilise_1_h <> p_sejours.montant_regle_1_h) THEN p_sejours.montant_comptabilise_1_c + p_sejours.montant_comptabilise_1_h - p_sejours.montant_regle_1_c - p_sejours.montant_regle_1_h + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid AND p_sejours.date_expedition_2 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_2_c <> p_sejours.montant_regle_2_c OR p_sejours.montant_comptabilise_2_h <> p_sejours.montant_regle_2_h) THEN p_sejours.montant_comptabilise_2_c + p_sejours.montant_comptabilise_2_h - p_sejours.montant_regle_2_c - p_sejours.montant_regle_2_h + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid AND p_sejours.date_expedition_22 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_22_c <> p_sejours.montant_regle_22_c OR p_sejours.montant_comptabilise_22_h <> p_sejours.montant_regle_22_h) THEN p_sejours.montant_comptabilise_22_c + p_sejours.montant_comptabilise_22_h - p_sejours.montant_regle_22_c - p_sejours.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie, + CASE + WHEN p_sejours.tiers_payant_0_id = t_tiers_payant.oid THEN to_char(p_sejours.date_solde_0::timestamp with time zone, 'YYYYMM'::text)::numeric + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid THEN to_char(p_sejours.date_solde_1::timestamp with time zone, 'YYYYMM'::text)::numeric + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid THEN to_char(p_sejours.date_solde_2::timestamp with time zone, 'YYYYMM'::text)::numeric + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid THEN to_char(p_sejours.date_solde_22::timestamp with time zone, 'YYYYMM'::text)::numeric + ELSE NULL::numeric + END AS mois_solde, + CASE + WHEN p_sejours.tiers_payant_0_id = t_tiers_payant.oid THEN p_sejours.date_solde_0 + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid THEN p_sejours.date_solde_1 + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid THEN p_sejours.date_solde_2 + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid THEN p_sejours.date_solde_22 + ELSE NULL::date + END AS date_solde, + CASE + WHEN p_sejours.tiers_payant_0_id = t_tiers_payant.oid AND p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde_0 < '2099-12-31'::date AND p_sejours.montant_regle_0_c = p_sejours.montant_comptabilise_0_c AND p_sejours.montant_regle_0_h = p_sejours.montant_comptabilise_0_h THEN 1 + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid AND p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde_1 < '2099-12-31'::date AND p_sejours.montant_regle_1_c = p_sejours.montant_comptabilise_1_c AND p_sejours.montant_regle_1_h = p_sejours.montant_comptabilise_1_h THEN 1 + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid AND p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde_2 < '2099-12-31'::date AND p_sejours.montant_regle_2_c = p_sejours.montant_comptabilise_2_c AND p_sejours.montant_regle_2_h = p_sejours.montant_comptabilise_2_h THEN 1 + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid AND p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde_22 < '2099-12-31'::date AND p_sejours.montant_regle_22_c = p_sejours.montant_comptabilise_22_c AND p_sejours.montant_regle_22_h = p_sejours.montant_comptabilise_22_h THEN 1 + ELSE 0 + END AS nb_delai_solde, + CASE + WHEN p_sejours.tiers_payant_0_id = t_tiers_payant.oid AND p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde_0 < '2099-12-31'::date AND p_sejours.montant_regle_0_c = p_sejours.montant_comptabilise_0_c AND p_sejours.montant_regle_0_h = p_sejours.montant_comptabilise_0_h THEN p_sejours.delai_solde_0 + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid AND p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde_1 < '2099-12-31'::date AND p_sejours.montant_regle_1_c = p_sejours.montant_comptabilise_1_c AND p_sejours.montant_regle_1_h = p_sejours.montant_comptabilise_1_h THEN p_sejours.delai_solde_1 + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid AND p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde_2 < '2099-12-31'::date AND p_sejours.montant_regle_2_c = p_sejours.montant_comptabilise_2_c AND p_sejours.montant_regle_2_h = p_sejours.montant_comptabilise_2_h THEN p_sejours.delai_solde_2 + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid AND p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde_22 < '2099-12-31'::date AND p_sejours.montant_regle_22_c = p_sejours.montant_comptabilise_22_c AND p_sejours.montant_regle_22_h = p_sejours.montant_comptabilise_22_h THEN p_sejours.delai_solde_22 + ELSE 0::numeric + END AS delai_solde, + CASE + WHEN p_sejours.tiers_payant_0_id = t_tiers_payant.oid AND (p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_0_c <> p_sejours.montant_comptabilise_0_c OR p_sejours.montant_regle_0_h <> p_sejours.montant_comptabilise_0_h) THEN 1 + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid AND (p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_1_c <> p_sejours.montant_comptabilise_1_c OR p_sejours.montant_regle_1_h <> p_sejours.montant_comptabilise_1_h) THEN 1 + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid AND (p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_2_c <> p_sejours.montant_comptabilise_2_c OR p_sejours.montant_regle_2_h <> p_sejours.montant_comptabilise_2_h) THEN 1 + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid AND (p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_22_c <> p_sejours.montant_comptabilise_22_c OR p_sejours.montant_regle_22_h <> p_sejours.montant_comptabilise_22_h) THEN 1 + ELSE 0 + END AS nb_non_solde, + CASE + WHEN p_sejours.tiers_payant_0_id = t_tiers_payant.oid AND (p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_0_c <> p_sejours.montant_comptabilise_0_c OR p_sejours.montant_regle_0_h <> p_sejours.montant_comptabilise_0_h) THEN p_sejours.montant_comptabilise_0_c + p_sejours.montant_comptabilise_0_h - p_sejours.montant_regle_0_c - p_sejours.montant_regle_0_h + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid AND (p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_1_c <> p_sejours.montant_comptabilise_1_c OR p_sejours.montant_regle_1_h <> p_sejours.montant_comptabilise_1_h) THEN p_sejours.montant_comptabilise_1_c + p_sejours.montant_comptabilise_1_h - p_sejours.montant_regle_1_c - p_sejours.montant_regle_1_h + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid AND (p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_2_c <> p_sejours.montant_comptabilise_2_c OR p_sejours.montant_regle_2_h <> p_sejours.montant_comptabilise_2_h) THEN p_sejours.montant_comptabilise_2_c + p_sejours.montant_comptabilise_2_h - p_sejours.montant_regle_2_c - p_sejours.montant_regle_2_h + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid AND (p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_22_c <> p_sejours.montant_comptabilise_22_c OR p_sejours.montant_regle_22_h <> p_sejours.montant_comptabilise_22_h) THEN p_sejours.montant_comptabilise_22_c + p_sejours.montant_comptabilise_22_h - p_sejours.montant_regle_22_c - p_sejours.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_solde, + CASE + WHEN p_sejours.tiers_payant_0_id = t_tiers_payant.oid THEN p_sejours.montant_facture_0_c + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid THEN p_sejours.montant_facture_1_c + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid THEN p_sejours.montant_facture_2_c + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid THEN p_sejours.montant_facture_22_c + ELSE 0::numeric + END AS montant_facture_c, + CASE + WHEN p_sejours.tiers_payant_0_id = t_tiers_payant.oid THEN p_sejours.montant_facture_0_h + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid THEN p_sejours.montant_facture_1_h + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid THEN p_sejours.montant_facture_2_h + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid THEN p_sejours.montant_facture_22_h + ELSE 0::numeric + END AS montant_facture_h, + CASE + WHEN p_sejours.tiers_payant_0_id = t_tiers_payant.oid THEN p_sejours.montant_comptabilise_0_c + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid THEN p_sejours.montant_comptabilise_1_c + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid THEN p_sejours.montant_comptabilise_2_c + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid THEN p_sejours.montant_comptabilise_22_c + ELSE 0::numeric + END AS montant_comptabilise_c, + CASE + WHEN p_sejours.tiers_payant_0_id = t_tiers_payant.oid THEN p_sejours.montant_comptabilise_0_h + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid THEN p_sejours.montant_comptabilise_1_h + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid THEN p_sejours.montant_comptabilise_2_h + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid THEN p_sejours.montant_comptabilise_22_h + ELSE 0::numeric + END AS montant_comptabilise_h, + CASE + WHEN p_sejours.tiers_payant_0_id = t_tiers_payant.oid THEN p_sejours.montant_regle_0_c + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid THEN p_sejours.montant_regle_1_c + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid THEN p_sejours.montant_regle_2_c + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid THEN p_sejours.montant_regle_22_c + ELSE 0::numeric + END AS montant_regle_c, + CASE + WHEN p_sejours.tiers_payant_0_id = t_tiers_payant.oid THEN p_sejours.montant_regle_0_h + WHEN p_sejours.tiers_payant_1_id = t_tiers_payant.oid THEN p_sejours.montant_regle_1_h + WHEN p_sejours.tiers_payant_2_id = t_tiers_payant.oid THEN p_sejours.montant_regle_2_h + WHEN p_sejours.tiers_payant_22_id = t_tiers_payant.oid THEN p_sejours.montant_regle_22_h + ELSE 0::numeric + END AS montant_regle_h, + 1 AS nb_sejours, + p_sejours.nb_factures, + p_sejours.nb_factures_regularisation, + p_sejours.nb_factures_rejet, + 0 AS no_oid, + CASE + WHEN p_sejours.type_sejour = ANY (ARRAY['3'::bpchar::text, '5'::bpchar::text]) THEN 0 + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie IS NOT NULL THEN p_sejours.date_sortie - p_sejours.date_entree + WHEN p_sejours.type_sejour = '1'::text AND date(now()) > p_sejours.date_entree THEN date(now()) - p_sejours.date_entree + ELSE 0 + END AS duree, + p_sejours.risque_id, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN '1'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN '2'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN '3'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN '4'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN '5'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN '6'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN '7'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN '8'::text + ELSE NULL::text + END AS severite_cti_code, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN 'Séances'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN 'Sévérité J'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN 'Sévérité T'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN 'Sévérité Z'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN 'Sévérité 1'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN 'Sévérité ABCDE'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN 'DS > 2 nuits'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN 'Non PMSI'::text + ELSE NULL::text + END AS severite_cti_texte, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN '1'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN '2'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN '3'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN '4'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN '5'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN '6'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN '7'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN '8'::text + ELSE NULL::text + END AS severite_cti_id + FROM activite.p_sejours + JOIN activite.t_tiers_payant ON p_sejours.tiers_payant_0_id = t_tiers_payant.oid AND p_sejours.tiers_payant_0_id > 0 OR p_sejours.tiers_payant_1_id = t_tiers_payant.oid AND p_sejours.tiers_payant_1_id > 0 OR p_sejours.tiers_payant_2_id = t_tiers_payant.oid AND p_sejours.tiers_payant_2_id > 0 OR p_sejours.tiers_payant_22_id = t_tiers_payant.oid AND p_sejours.tiers_payant_22_id > 0 + JOIN activite.t_medecins_administratifs_c ON p_sejours.medecin_sejour_id = t_medecins_administratifs_c.oid + JOIN activite.t_lieux_c ON p_sejours.lieu_sortie_id = t_lieux_c.oid + JOIN activite.t_ghs_c ON p_sejours.ghs_id = t_ghs_c.ghs_id + JOIN activite.t_ghm_c ON p_sejours.ghm_id = t_ghm_c.ghm_id + WHERE p_sejours.etat = ''::bpchar; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_3.yaml b/db/schema2/views/v_sejours_3.yaml new file mode 100644 index 0000000..ddc8685 --- /dev/null +++ b/db/schema2/views/v_sejours_3.yaml @@ -0,0 +1,326 @@ +src: | + SELECT p_sejours.finess, + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.no_patient, + p_sejours.code_sexe, + CASE + WHEN p_sejours.code_sexe = '1'::bpchar THEN 'M'::bpchar + WHEN p_sejours.code_sexe = '2'::bpchar THEN 'F'::bpchar + ELSE 'M'::bpchar + END AS sexe_texte_court, + p_sejours.age, + p_sejours.code_prevu, + p_sejours.type_sejour, + CASE + WHEN p_sejours.type_sejour = '1'::text THEN 'Hospitalisés'::text + WHEN p_sejours.type_sejour = '2'::text THEN 'Ambulatoires'::text + WHEN p_sejours.type_sejour = '3'::text THEN 'Externes'::text + WHEN p_sejours.type_sejour = '4'::text THEN 'Long séjours'::text + WHEN p_sejours.type_sejour = '5'::text THEN 'Séances'::text + WHEN p_sejours.type_sejour = '6'::text THEN 'Bébés sans séjour'::text + WHEN p_sejours.type_sejour = '9'::text THEN 'Fictifs'::text + ELSE p_sejours.type_sejour + END AS type_sejour_texte, + t_lieux_c.mode_traitement_id, + t_lieux_c.mode_traitement_code, + t_lieux_c.mode_traitement_texte, + to_char(p_sejours.date_entree::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_entree, + p_sejours.date_entree, + p_sejours.heure_entree, + p_sejours.code_sorti, + to_char(p_sejours.date_sortie::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_sortie, + p_sejours.date_sortie, + p_sejours.heure_sortie, + p_sejours.ghs_id, + t_ghs_c.ghs_code_text AS ghs_code, + t_ghs_c.ghs_texte, + p_sejours.ghm_id, + t_ghm_c.ghm_code, + t_ghm_c.ghm_texte, + t_ghm_c.ghm5_id, + t_ghm_c.ghm5_code, + t_ghm_c.ghm5_texte, + t_ghm_c.severite_ghm_id, + t_ghm_c.severite_ghm_code, + t_ghm_c.severite_ghm_texte, + t_ghm_c.cas_id, + t_ghm_c.cas_code, + t_ghm_c.cas_texte, + t_ghm_c.mco_id, + t_ghm_c.mco_code, + t_ghm_c.mco_texte, + t_ghm_c.cmd_id, + t_ghm_c.cmd_code, + t_ghm_c.cmd_texte, + t_ghm_c.mco_id AS mcos_id, + t_ghm_c.mco_code AS mcos_code, + t_ghm_c.mco_texte AS mcos_texte, + t_ghm_c.ghm_section_id, + t_ghm_c.ghm_section_code, + t_ghm_c.ghm_section_texte, + CASE + WHEN t_types_tiers_payant.code = '0'::bpchar THEN 0 + WHEN t_types_tiers_payant.code = '1'::bpchar THEN 1 + WHEN t_types_tiers_payant.code = '2'::bpchar THEN 2 + ELSE 0 + END AS type_tiers_payant_id, + t_types_tiers_payant.code AS type_tiers_payant_code, + t_types_tiers_payant.texte_court AS type_tiers_payant_texte, + p_sejours.medecin_sejour_id AS medecin_adm_sejour_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_sejour_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_sejour_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_sejour_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_sejour_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_sejour_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_sejour_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_sejour_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_sejour_id, + t_medecins_administratifs_c.nom AS medecin_sejour_nom, + t_medecins_administratifs_c.prenom AS medecin_sejour_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_sejour_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_sejour_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_sejour_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_sejour_specialite_texte, + p_sejours.lieu_sortie_id, + t_lieux_c.service_facturation_id AS lieu_sortie_service_id, + t_lieux_c.service_facturation_code AS lieu_sortie_service_code, + t_lieux_c.service_facturation_texte AS lieu_sortie_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_sortie_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_sortie_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_sortie_service_section_texte, + t_lieux_c.service_facturation_section_nb_lits AS lieu_sortie_service_section_nb_lits, + t_lieux_c.service_facturation_section_nb_cp AS lieu_sortie_service_section_nb_cp, + t_lieux_c.activite_id AS lieu_sortie_activite_id, + t_lieux_c.activite_code AS lieu_sortie_activite_code, + t_lieux_c.activite_texte AS lieu_sortie_activite_texte, + t_lieux_c.etage_id AS lieu_sortie_etage_id, + t_lieux_c.etage_code AS lieu_sortie_etage_code, + t_lieux_c.etage_texte AS lieu_sortie_etage_texte, + t_lieux_c.etage_section_id AS lieu_sortie_etage_section_id, + t_lieux_c.etage_section_code AS lieu_sortie_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_sortie_etage_section_texte, + t_lieux_c.lit_id AS lieu_sortie_lit_id, + t_lieux_c.lit_code AS lieu_sortie_lit_code, + t_lieux_c.lit_texte AS lieu_sortie_lit_texte, + t_lieux_c.lit_section_id AS lieu_sortie_lit_section_id, + t_lieux_c.lit_section_code AS lieu_sortie_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_sortie_lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_sortie_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_sortie_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_sortie_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_sortie_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_sortie_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_sortie_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS lieu_sortie_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_sortie_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_sortie_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_sortie_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_sortie_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_sortie_unite_fonctionnelle_section_texte, + to_char( + CASE + WHEN p_sejours.ghs_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_groupage, + CASE + WHEN p_sejours.ghs_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END AS date_groupage, + CASE + WHEN t_lieux_c.type_t2a = '1'::bpchar AND (p_sejours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND p_sejours.ghs_id > 0 AND p_sejours.date_groupage < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_groupage, + CASE + WHEN t_lieux_c.type_t2a = '1'::bpchar AND (p_sejours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND p_sejours.ghs_id > 0 AND p_sejours.date_groupage < '2099-12-31'::date THEN p_sejours.delai_groupage + ELSE 0::numeric + END AS delai_groupage, + CASE + WHEN p_sejours.type_sejour <> ALL (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text]) THEN 0 + WHEN t_lieux_c.type_t2a <> '1'::bpchar OR p_sejours.date_groupage < '2099-12-31'::date AND p_sejours.ghs_id > 0 THEN 0 + ELSE 1 + END AS nb_non_groupe, + to_char(p_sejours.date_facture::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_facture, + p_sejours.date_facture, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_facture, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date THEN p_sejours.delai_facture + ELSE 0::numeric + END AS delai_facture, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_non_facture, + CASE + WHEN t_types_tiers_payant.code = '0'::bpchar THEN to_char(p_sejours.date_expedition_0::timestamp with time zone, 'YYYYMM'::text)::numeric + WHEN t_types_tiers_payant.code = '1'::bpchar THEN to_char(p_sejours.date_expedition_1::timestamp with time zone, 'YYYYMM'::text)::numeric + WHEN t_types_tiers_payant.code = '2'::bpchar THEN to_char(p_sejours.date_expedition_2::timestamp with time zone, 'YYYYMM'::text)::numeric + ELSE NULL::numeric + END AS mois_expedition, + CASE + WHEN t_types_tiers_payant.code = '0'::bpchar THEN p_sejours.date_expedition_0 + WHEN t_types_tiers_payant.code = '1'::bpchar THEN p_sejours.date_expedition_1 + WHEN t_types_tiers_payant.code = '2'::bpchar THEN p_sejours.date_expedition_2 + ELSE NULL::date + END AS date_expedition, + CASE + WHEN t_types_tiers_payant.code = '0'::bpchar AND p_sejours.date_expedition_0 < '2099-12-31'::date THEN 1 + WHEN t_types_tiers_payant.code = '1'::bpchar AND p_sejours.date_expedition_1 < '2099-12-31'::date THEN 1 + WHEN t_types_tiers_payant.code = '2'::bpchar AND p_sejours.date_expedition_2 < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_expedition, + CASE + WHEN t_types_tiers_payant.code = '0'::bpchar AND p_sejours.date_expedition_0 < '2099-12-31'::date THEN p_sejours.delai_expedition_0 + WHEN t_types_tiers_payant.code = '1'::bpchar AND p_sejours.date_expedition_1 < '2099-12-31'::date THEN p_sejours.delai_expedition_1 + WHEN t_types_tiers_payant.code = '2'::bpchar AND p_sejours.date_expedition_2 < '2099-12-31'::date THEN p_sejours.delai_expedition_2 + ELSE 0::numeric + END AS delai_expedition, + CASE + WHEN t_types_tiers_payant.code = '1'::bpchar AND (p_sejours.date_expedition_1 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_1_c <> p_sejours.montant_regle_1_c OR p_sejours.montant_comptabilise_1_h <> p_sejours.montant_regle_1_h) OR p_sejours.date_facture = '2099-12-31'::date) THEN 1 + WHEN t_types_tiers_payant.code = '2'::bpchar AND (p_sejours.date_expedition_2 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_2_c <> p_sejours.montant_regle_2_c OR p_sejours.montant_comptabilise_2_h <> p_sejours.montant_regle_2_h) OR p_sejours.date_facture = '2099-12-31'::date) THEN 1 + ELSE 0 + END AS nb_non_expedie, + CASE + WHEN t_types_tiers_payant.code = '1'::bpchar AND p_sejours.date_expedition_1 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_1_c <> p_sejours.montant_regle_1_c OR p_sejours.montant_comptabilise_1_h <> p_sejours.montant_regle_1_h) THEN p_sejours.montant_comptabilise_1_c + p_sejours.montant_comptabilise_1_h - p_sejours.montant_regle_1_c - p_sejours.montant_regle_1_h + WHEN t_types_tiers_payant.code = '2'::bpchar AND p_sejours.date_expedition_2 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_2_c <> p_sejours.montant_regle_2_c OR p_sejours.montant_comptabilise_2_h <> p_sejours.montant_regle_2_h) THEN p_sejours.montant_comptabilise_2_c + p_sejours.montant_comptabilise_2_h - p_sejours.montant_regle_2_c - p_sejours.montant_regle_2_h + ELSE 0::numeric + END AS montant_non_expedie, + CASE + WHEN t_types_tiers_payant.code = '0'::bpchar THEN to_char(p_sejours.date_solde_0::timestamp with time zone, 'YYYYMM'::text)::numeric + WHEN t_types_tiers_payant.code = '1'::bpchar THEN to_char(p_sejours.date_solde_1::timestamp with time zone, 'YYYYMM'::text)::numeric + WHEN t_types_tiers_payant.code = '2'::bpchar THEN to_char(p_sejours.date_solde_2::timestamp with time zone, 'YYYYMM'::text)::numeric + ELSE NULL::numeric + END AS mois_solde, + CASE + WHEN t_types_tiers_payant.code = '0'::bpchar THEN p_sejours.date_solde_0 + WHEN t_types_tiers_payant.code = '1'::bpchar THEN p_sejours.date_solde_1 + WHEN t_types_tiers_payant.code = '2'::bpchar THEN p_sejours.date_solde_2 + ELSE NULL::date + END AS date_solde, + CASE + WHEN t_types_tiers_payant.code = '0'::bpchar AND p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde_0 < '2099-12-31'::date AND p_sejours.montant_regle_0_c = p_sejours.montant_comptabilise_0_c AND p_sejours.montant_regle_0_h = p_sejours.montant_comptabilise_0_h THEN 1 + WHEN t_types_tiers_payant.code = '1'::bpchar AND p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde_1 < '2099-12-31'::date AND p_sejours.montant_regle_1_c = p_sejours.montant_comptabilise_1_c AND p_sejours.montant_regle_1_h = p_sejours.montant_comptabilise_1_h THEN 1 + WHEN t_types_tiers_payant.code = '2'::bpchar AND p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde_2 < '2099-12-31'::date AND p_sejours.montant_regle_2_c = p_sejours.montant_comptabilise_2_c AND p_sejours.montant_regle_2_h = p_sejours.montant_comptabilise_2_h THEN 1 + ELSE 0 + END AS nb_delai_solde, + CASE + WHEN t_types_tiers_payant.code = '0'::bpchar AND p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde_0 < '2099-12-31'::date AND p_sejours.montant_regle_0_c = p_sejours.montant_comptabilise_0_c AND p_sejours.montant_regle_0_h = p_sejours.montant_comptabilise_0_h THEN p_sejours.delai_solde_0 + WHEN t_types_tiers_payant.code = '1'::bpchar AND p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde_1 < '2099-12-31'::date AND p_sejours.montant_regle_1_c = p_sejours.montant_comptabilise_1_c AND p_sejours.montant_regle_1_h = p_sejours.montant_comptabilise_1_h THEN p_sejours.delai_solde_1 + WHEN t_types_tiers_payant.code = '2'::bpchar AND p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde_2 < '2099-12-31'::date AND p_sejours.montant_regle_2_c = p_sejours.montant_comptabilise_2_c AND p_sejours.montant_regle_2_h = p_sejours.montant_comptabilise_2_h THEN p_sejours.delai_solde_2 + ELSE 0::numeric + END AS delai_solde, + CASE + WHEN t_types_tiers_payant.code = '0'::bpchar AND (p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_0_c <> p_sejours.montant_comptabilise_0_c OR p_sejours.montant_regle_0_h <> p_sejours.montant_comptabilise_0_h) THEN 1 + WHEN t_types_tiers_payant.code = '1'::bpchar AND (p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_1_c <> p_sejours.montant_comptabilise_1_c OR p_sejours.montant_regle_1_h <> p_sejours.montant_comptabilise_1_h) THEN 1 + WHEN t_types_tiers_payant.code = '2'::bpchar AND (p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_2_c <> p_sejours.montant_comptabilise_2_c OR p_sejours.montant_regle_2_h <> p_sejours.montant_comptabilise_2_h) THEN 1 + ELSE 0 + END AS nb_non_solde, + CASE + WHEN t_types_tiers_payant.code = '0'::bpchar THEN p_sejours.montant_comptabilise_0_c + p_sejours.montant_comptabilise_0_h - p_sejours.montant_regle_0_c - p_sejours.montant_regle_0_h + WHEN t_types_tiers_payant.code = '1'::bpchar THEN p_sejours.montant_comptabilise_1_c + p_sejours.montant_comptabilise_1_h - p_sejours.montant_regle_1_c - p_sejours.montant_regle_1_h + WHEN t_types_tiers_payant.code = '2'::bpchar THEN p_sejours.montant_comptabilise_2_c + p_sejours.montant_comptabilise_2_h - p_sejours.montant_regle_2_c - p_sejours.montant_regle_2_h + p_sejours.montant_comptabilise_22_c + p_sejours.montant_comptabilise_22_h - p_sejours.montant_regle_22_c - p_sejours.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_solde, + CASE + WHEN t_types_tiers_payant.code = '0'::bpchar THEN p_sejours.montant_facture_0_c + WHEN t_types_tiers_payant.code = '1'::bpchar THEN p_sejours.montant_facture_1_c + WHEN t_types_tiers_payant.code = '2'::bpchar THEN p_sejours.montant_facture_2_c + p_sejours.montant_facture_22_c + ELSE 0::numeric + END AS montant_facture_c, + CASE + WHEN t_types_tiers_payant.code = '0'::bpchar THEN p_sejours.montant_facture_0_h + WHEN t_types_tiers_payant.code = '1'::bpchar THEN p_sejours.montant_facture_1_h + WHEN t_types_tiers_payant.code = '2'::bpchar THEN p_sejours.montant_facture_2_h + p_sejours.montant_facture_22_h + ELSE 0::numeric + END AS montant_facture_h, + CASE + WHEN t_types_tiers_payant.code = '0'::bpchar THEN p_sejours.montant_comptabilise_0_c + WHEN t_types_tiers_payant.code = '1'::bpchar THEN p_sejours.montant_comptabilise_1_c + WHEN t_types_tiers_payant.code = '2'::bpchar THEN p_sejours.montant_comptabilise_2_c + p_sejours.montant_comptabilise_22_c + ELSE 0::numeric + END AS montant_comptabilise_c, + CASE + WHEN t_types_tiers_payant.code = '0'::bpchar THEN p_sejours.montant_comptabilise_0_h + WHEN t_types_tiers_payant.code = '1'::bpchar THEN p_sejours.montant_comptabilise_1_h + WHEN t_types_tiers_payant.code = '2'::bpchar THEN p_sejours.montant_comptabilise_2_h + p_sejours.montant_comptabilise_22_h + ELSE 0::numeric + END AS montant_comptabilise_h, + CASE + WHEN t_types_tiers_payant.code = '0'::bpchar THEN p_sejours.montant_regle_0_c + WHEN t_types_tiers_payant.code = '1'::bpchar THEN p_sejours.montant_regle_1_c + WHEN t_types_tiers_payant.code = '2'::bpchar THEN p_sejours.montant_regle_2_c + p_sejours.montant_regle_22_c + ELSE 0::numeric + END AS montant_regle_c, + CASE + WHEN t_types_tiers_payant.code = '0'::bpchar THEN p_sejours.montant_regle_0_h + WHEN t_types_tiers_payant.code = '1'::bpchar THEN p_sejours.montant_regle_1_h + WHEN t_types_tiers_payant.code = '2'::bpchar THEN p_sejours.montant_regle_2_h + p_sejours.montant_regle_22_h + ELSE 0::numeric + END AS montant_regle_h, + 1 AS nb_sejours, + p_sejours.nb_factures, + p_sejours.nb_factures_regularisation, + p_sejours.nb_factures_rejet, + 0 AS no_oid, + CASE + WHEN p_sejours.type_sejour = ANY (ARRAY['3'::bpchar::text, '5'::bpchar::text]) THEN 0 + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie IS NOT NULL THEN p_sejours.date_sortie - p_sejours.date_entree + WHEN p_sejours.type_sejour = '1'::text AND date(now()) > p_sejours.date_entree THEN date(now()) - p_sejours.date_entree + ELSE 0 + END AS duree, + p_sejours.risque_id, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN '1'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN '2'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN '3'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN '4'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN '5'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN '6'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN '7'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN '8'::text + ELSE NULL::text + END AS severite_cti_code, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN 'Séances'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN 'Sévérité J'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN 'Sévérité T'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN 'Sévérité Z'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN 'Sévérité 1'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN 'Sévérité ABCDE'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN 'DS > 2 nuits'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN 'Non PMSI'::text + ELSE NULL::text + END AS severite_cti_texte, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN '1'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN '2'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN '3'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN '4'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN '5'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN '6'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN '7'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN '8'::text + ELSE NULL::text + END AS severite_cti_id + FROM activite.p_sejours + JOIN activite.t_types_tiers_payant ON t_types_tiers_payant.code = '0'::bpchar AND p_sejours.tiers_payant_0_id > 0 OR t_types_tiers_payant.code = '1'::bpchar AND p_sejours.tiers_payant_1_id > 0 OR t_types_tiers_payant.code = '2'::bpchar AND (p_sejours.tiers_payant_2_id > 0 OR p_sejours.tiers_payant_22_id > 0) + JOIN activite.t_medecins_administratifs_c ON p_sejours.medecin_sejour_id = t_medecins_administratifs_c.oid + JOIN activite.t_lieux_c ON p_sejours.lieu_sortie_id = t_lieux_c.oid + JOIN activite.t_ghs_c ON p_sejours.ghs_id = t_ghs_c.ghs_id + JOIN activite.t_ghm_c ON p_sejours.ghm_id = t_ghm_c.ghm_id + WHERE p_sejours.etat = ''::bpchar; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_4.yaml b/db/schema2/views/v_sejours_4.yaml new file mode 100644 index 0000000..2cc1b7d --- /dev/null +++ b/db/schema2/views/v_sejours_4.yaml @@ -0,0 +1,451 @@ +src: | + SELECT p_sejours.finess, + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.no_patient, + p_sejours.code_sexe, + CASE + WHEN p_sejours.code_sexe = '1'::bpchar THEN 'M'::bpchar + WHEN p_sejours.code_sexe = '2'::bpchar THEN 'F'::bpchar + ELSE p_sejours.code_sexe + END AS sexe_texte_court, + p_sejours.age, + p_sejours.code_prevu, + p_sejours.type_sejour, + p_sejours.type_sejour AS type_sejour_code, + p_sejours.type_sejour::bigint AS type_sejour_id, + CASE + WHEN p_sejours.type_sejour = '1'::text THEN 'Hospitalisés'::text + WHEN p_sejours.type_sejour = '2'::text THEN 'Ambulatoires'::text + WHEN p_sejours.type_sejour = '3'::text THEN 'Externes'::text + WHEN p_sejours.type_sejour = '4'::text THEN 'Long séjours'::text + WHEN p_sejours.type_sejour = '5'::text THEN 'Séances'::text + WHEN p_sejours.type_sejour = '6'::text THEN 'Bébés sans séjour'::text + WHEN p_sejours.type_sejour = '9'::text THEN 'Fictifs'::text + ELSE p_sejours.type_sejour + END AS type_sejour_texte, + t_lieux_c.mode_traitement_id, + t_lieux_c.mode_traitement_code, + t_lieux_c.mode_traitement_texte, + to_char(p_sejours.date_entree::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_entree, + p_sejours.date_entree, + p_sejours.heure_entree, + p_sejours.code_sorti, + to_char(p_sejours.date_sortie::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_sortie, + p_sejours.date_sortie, + p_sejours.heure_sortie, + p_sejours.code_cp_demandee, + p_sejours.ghs_id, + t_ghs_c.ghs_code_text AS ghs_code, + t_ghs_c.ghs_texte, + p_sejours.ghm_id, + t_ghm_c.ghm_code, + t_ghm_c.ghm_texte, + t_ghm_c.ghm5_id, + t_ghm_c.ghm5_code, + t_ghm_c.ghm5_texte, + t_ghm_c.severite_ghm_id, + t_ghm_c.severite_ghm_code, + t_ghm_c.severite_ghm_texte, + t_ghm_c.cas_id, + t_ghm_c.cas_code, + t_ghm_c.cas_texte, + t_ghm_c.mco_id, + t_ghm_c.mco_code, + t_ghm_c.mco_texte, + t_ghm_c.cmd_id, + t_ghm_c.cmd_code, + t_ghm_c.cmd_texte, + t_ghm_c.mco_id AS mcos_id, + t_ghm_c.mco_code AS mcos_code, + t_ghm_c.mco_texte AS mcos_texte, + t_ghm_c.ghm_section_id, + t_ghm_c.ghm_section_code, + t_ghm_c.ghm_section_texte, + p_sejours.tiers_payant_0_id, + t_tiers_payant_0.code AS tiers_payant_0_code, + t_tiers_payant_0.texte_court AS tiers_payant_0_texte, + t_types_tiers_payant_0.code AS type_tiers_payant_0_code, + t_types_tiers_payant_0.texte AS type_tiers_payant_0_texte, + p_sejours.tiers_payant_1_id, + t_tiers_payant_1.code AS tiers_payant_1_code, + t_tiers_payant_1.texte_court AS tiers_payant_1_texte, + t_types_tiers_payant_1.code AS type_tiers_payant_1_code, + t_types_tiers_payant_1.texte AS type_tiers_payant_1_texte, + p_sejours.tiers_payant_2_id, + t_tiers_payant_2.code AS tiers_payant_2_code, + t_tiers_payant_2.texte_court AS tiers_payant_2_texte, + t_types_tiers_payant_2.code AS type_tiers_payant_2_code, + t_types_tiers_payant_2.texte AS type_tiers_payant_2_texte, + p_sejours.tiers_payant_22_id, + t_tiers_payant_22.code AS tiers_payant_22_code, + t_tiers_payant_22.texte_court AS tiers_payant_22_texte, + t_types_tiers_payant_22.code AS type_tiers_payant_22_code, + t_types_tiers_payant_22.texte AS type_tiers_payant_22_texte, + p_sejours.medecin_sejour_id AS medecin_adm_sejour_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_sejour_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_sejour_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_sejour_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_sejour_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_sejour_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_sejour_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_sejour_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_sejour_id, + t_medecins_administratifs_c.medecin_code AS medecin_sejour_code, + t_medecins_administratifs_c.nom AS medecin_sejour_nom, + t_medecins_administratifs_c.prenom AS medecin_sejour_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_sejour_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_sejour_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_sejour_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_sejour_specialite_texte, + p_sejours.lieu_sortie_id, + t_lieux_c.service_facturation_id AS lieu_sortie_service_id, + t_lieux_c.service_facturation_code AS lieu_sortie_service_code, + t_lieux_c.service_facturation_texte AS lieu_sortie_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_sortie_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_sortie_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_sortie_service_section_texte, + t_lieux_c.service_facturation_section_nb_lits AS lieu_sortie_service_section_nb_lits, + t_lieux_c.service_facturation_section_nb_cp AS lieu_sortie_service_section_nb_cp, + t_lieux_c.activite_id AS lieu_sortie_activite_id, + t_lieux_c.activite_code AS lieu_sortie_activite_code, + t_lieux_c.activite_texte AS lieu_sortie_activite_texte, + t_lieux_c.etage_id AS lieu_sortie_etage_id, + t_lieux_c.etage_code AS lieu_sortie_etage_code, + t_lieux_c.etage_texte AS lieu_sortie_etage_texte, + t_lieux_c.etage_section_id AS lieu_sortie_etage_section_id, + t_lieux_c.etage_section_code AS lieu_sortie_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_sortie_etage_section_texte, + t_lieux_c.lit_id AS lieu_sortie_lit_id, + t_lieux_c.lit_code AS lieu_sortie_lit_code, + t_lieux_c.lit_texte AS lieu_sortie_lit_texte, + t_lieux_c.lit_section_id AS lieu_sortie_lit_section_id, + t_lieux_c.lit_section_code AS lieu_sortie_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_sortie_lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_sortie_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_sortie_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_sortie_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_sortie_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_sortie_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_sortie_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS lieu_sortie_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_sortie_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_sortie_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_sortie_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_sortie_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_sortie_unite_fonctionnelle_section_texte, + to_char( + CASE + WHEN p_sejours.ghs_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_groupage, + CASE + WHEN p_sejours.ghs_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END AS date_groupage, + CASE + WHEN t_lieux_c.type_t2a = '1'::bpchar AND (p_sejours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND p_sejours.ghs_id > 0 AND p_sejours.date_groupage < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_groupage, + CASE + WHEN t_lieux_c.type_t2a = '1'::bpchar AND (p_sejours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND p_sejours.ghs_id > 0 AND p_sejours.date_groupage < '2099-12-31'::date THEN p_sejours.delai_groupage + ELSE 0::numeric + END AS delai_groupage, + CASE + WHEN p_sejours.type_sejour <> ALL (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text]) THEN 0 + WHEN t_lieux_c.type_t2a <> '1'::bpchar OR p_sejours.date_groupage < '2099-12-31'::date AND p_sejours.ghs_id > 0 THEN 0 + ELSE 1 + END AS nb_non_groupe, + to_char(p_sejours.date_facture::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_facture, + p_sejours.date_facture, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_facture, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date THEN p_sejours.delai_facture + ELSE 0::numeric + END AS delai_facture, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_non_facture, + to_char(p_sejours.date_expedition::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_expedition, + p_sejours.date_expedition, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_expedition < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_expedition, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_1 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_1_c <> p_sejours.montant_regle_1_c OR p_sejours.montant_comptabilise_1_h <> p_sejours.montant_regle_1_h) THEN 1 + WHEN p_sejours.date_expedition_2 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_2_c <> p_sejours.montant_regle_2_c OR p_sejours.montant_comptabilise_2_h <> p_sejours.montant_regle_2_h) THEN 1 + WHEN p_sejours.date_expedition_22 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_22_c <> p_sejours.montant_regle_22_c OR p_sejours.montant_comptabilise_22_h <> p_sejours.montant_regle_22_h) THEN 1 + ELSE 0 + END AS nb_non_expedie, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_1 = '2099-12-31'::date AND p_sejours.montant_comptabilise_1_c <> p_sejours.montant_regle_1_c THEN 1 + WHEN p_sejours.date_expedition_2 = '2099-12-31'::date AND p_sejours.montant_comptabilise_2_c <> p_sejours.montant_regle_2_c THEN 1 + WHEN p_sejours.date_expedition_22 = '2099-12-31'::date AND p_sejours.montant_comptabilise_22_c <> p_sejours.montant_regle_22_c THEN 1 + ELSE 0 + END AS nb_non_expedie_c, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_1 = '2099-12-31'::date AND p_sejours.montant_comptabilise_1_h <> p_sejours.montant_regle_1_h THEN 1 + WHEN p_sejours.date_expedition_2 = '2099-12-31'::date AND p_sejours.montant_comptabilise_2_h <> p_sejours.montant_regle_2_h THEN 1 + WHEN p_sejours.date_expedition_22 = '2099-12-31'::date AND p_sejours.montant_comptabilise_22_h <> p_sejours.montant_regle_22_h THEN 1 + ELSE 0 + END AS nb_non_expedie_h, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_1 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_1_c + p_sejours.montant_comptabilise_1_h - p_sejours.montant_regle_1_c - p_sejours.montant_regle_1_h + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_2 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_2_c + p_sejours.montant_comptabilise_2_h - p_sejours.montant_regle_2_c - p_sejours.montant_regle_2_h + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_22 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_22_c + p_sejours.montant_comptabilise_22_h - p_sejours.montant_regle_22_c - p_sejours.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_1 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_1_c - p_sejours.montant_regle_1_c + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_2 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_2_c - p_sejours.montant_regle_2_c + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_22 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_22_c - p_sejours.montant_regle_22_c + ELSE 0::numeric + END AS montant_non_expedie_c, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_1 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_1_h - p_sejours.montant_regle_1_c + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_2 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_2_h - p_sejours.montant_regle_2_c + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_22 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_22_h - p_sejours.montant_regle_22_c + ELSE 0::numeric + END AS montant_non_expedie_h, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date OR p_sejours.date_expedition < '2099-12-31'::date THEN p_sejours.delai_expedition + ELSE 0::numeric + END AS delai_expedition, + p_sejours.date_expedition_0, + 0 AS nb_delai_expedition_0, + 0 AS nb_non_expedie_0, + 0 AS nb_non_expedie_0_c, + 0 AS nb_non_expedie_0_h, + 0 AS montant_non_expedie_0, + 0 AS montant_non_expedie_0_c, + 0 AS montant_non_expedie_0_h, + 0 AS delai_expedition_0, + p_sejours.date_expedition_1, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_expedition_1 < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_expedition_1, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_1 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_1_c <> p_sejours.montant_regle_1_c OR p_sejours.montant_comptabilise_1_h <> p_sejours.montant_regle_1_h) THEN 1 + ELSE 0 + END AS nb_non_expedie_1, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_1 = '2099-12-31'::date AND p_sejours.montant_comptabilise_1_c <> p_sejours.montant_regle_1_c THEN 1 + ELSE 0 + END AS nb_non_expedie_1_c, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_1 = '2099-12-31'::date AND p_sejours.montant_comptabilise_1_h <> p_sejours.montant_regle_1_h THEN 1 + ELSE 0 + END AS nb_non_expedie_1_h, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_1 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_1_c + p_sejours.montant_comptabilise_1_h - p_sejours.montant_regle_1_c - p_sejours.montant_regle_1_h + ELSE 0::numeric + END AS montant_non_expedie_1, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_1 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_1_c - p_sejours.montant_regle_1_c + ELSE 0::numeric + END AS montant_non_expedie_1_c, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_1 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_1_h - p_sejours.montant_regle_1_h + ELSE 0::numeric + END AS montant_non_expedie_1_h, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date OR p_sejours.date_expedition_1 < '2099-12-31'::date THEN p_sejours.delai_expedition_1 + ELSE 0::numeric + END AS delai_expedition_1, + p_sejours.date_expedition_2, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_expedition_2 < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_expedition_2, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_2 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_2_c <> p_sejours.montant_regle_2_c OR p_sejours.montant_comptabilise_2_h <> p_sejours.montant_regle_2_h) THEN 1 + ELSE 0 + END AS nb_non_expedie_2, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_2 = '2099-12-31'::date AND p_sejours.montant_comptabilise_2_c <> p_sejours.montant_regle_2_c THEN 1 + ELSE 0 + END AS nb_non_expedie_2_c, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_2 = '2099-12-31'::date AND p_sejours.montant_comptabilise_2_h <> p_sejours.montant_regle_2_h THEN 1 + ELSE 0 + END AS nb_non_expedie_2_h, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_2 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_2_c + p_sejours.montant_comptabilise_2_h - p_sejours.montant_regle_2_c - p_sejours.montant_regle_2_h + ELSE 0::numeric + END AS montant_non_expedie_2, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_2 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_2_c - p_sejours.montant_regle_2_c + ELSE 0::numeric + END AS montant_non_expedie_2_c, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_2 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_2_h - p_sejours.montant_regle_2_h + ELSE 0::numeric + END AS montant_non_expedie_2_h, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date OR p_sejours.date_expedition_2 < '2099-12-31'::date THEN p_sejours.delai_expedition_2 + ELSE 0::numeric + END AS delai_expedition_2, + p_sejours.date_expedition_22, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_expedition_22 < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_expedition_22, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_22 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_22_c <> p_sejours.montant_regle_22_c OR p_sejours.montant_comptabilise_22_h <> p_sejours.montant_regle_22_h) THEN 1 + ELSE 0 + END AS nb_non_expedie_22, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_22 = '2099-12-31'::date AND p_sejours.montant_comptabilise_22_c <> p_sejours.montant_regle_22_c THEN 1 + ELSE 0 + END AS nb_non_expedie_22_c, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_22 = '2099-12-31'::date AND p_sejours.montant_comptabilise_22_h <> p_sejours.montant_regle_22_h THEN 1 + ELSE 0 + END AS nb_non_expedie_22_h, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_22 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_22_c + p_sejours.montant_comptabilise_22_h - p_sejours.montant_regle_22_c - p_sejours.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie_22, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_22 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_22_c - p_sejours.montant_regle_22_c + ELSE 0::numeric + END AS montant_non_expedie_22_c, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_22 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_22_h - p_sejours.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie_22_h, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date OR p_sejours.date_expedition_22 < '2099-12-31'::date THEN p_sejours.delai_expedition_22 + ELSE 0::numeric + END AS delai_expedition_22, + to_char(p_sejours.date_solde::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_solde, + p_sejours.date_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN 1 + ELSE 0 + END AS nb_delai_solde, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_c <> p_sejours.montant_comptabilise_c OR p_sejours.montant_regle_h <> p_sejours.montant_comptabilise_h THEN 1 + ELSE 0 + END AS nb_non_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN 0::numeric + ELSE p_sejours.montant_comptabilise_c + p_sejours.montant_comptabilise_h - p_sejours.montant_regle_c - p_sejours.montant_regle_h + END AS montant_non_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN p_sejours.delai_solde + ELSE 0::numeric + END AS delai_solde, + p_sejours.montant_facture_c, + p_sejours.montant_facture_h, + p_sejours.montant_comptabilise_c, + p_sejours.montant_comptabilise_h, + p_sejours.montant_regle_c, + p_sejours.montant_regle_h, + 1 AS nb_sejours, + p_sejours.nb_factures, + p_sejours.nb_factures_regularisation, + p_sejours.nb_factures_rejet, + 0 AS no_oid, + CASE + WHEN p_sejours.type_sejour = ANY (ARRAY['3'::bpchar::text, '5'::bpchar::text]) THEN 0 + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie IS NOT NULL THEN p_sejours.date_sortie - p_sejours.date_entree + WHEN p_sejours.type_sejour = '1'::text AND date(now()) > p_sejours.date_entree THEN date(now()) - p_sejours.date_entree + ELSE 0 + END AS duree, + p_sejours.risque_id, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN '1'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN '2'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN '3'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN '4'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN '5'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN '6'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN '7'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN '8'::text + ELSE NULL::text + END AS severite_cti_code, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN 'Séances'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN 'Sévérité J'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN 'Sévérité T'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN 'Sévérité Z'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN 'Sévérité 1'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN 'Sévérité ABCDE'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN 'DS > 2 nuits'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN 'Non PMSI'::text + ELSE NULL::text + END AS severite_cti_texte, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN '1'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN '2'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN '3'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN '4'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN '5'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN '6'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN '7'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN '8'::text + ELSE NULL::text + END AS severite_cti_id + FROM activite.p_sejours + JOIN activite.t_medecins_administratifs_c ON p_sejours.medecin_sejour_id = t_medecins_administratifs_c.oid + JOIN activite.t_lieux_c ON p_sejours.lieu_sortie_id = t_lieux_c.oid + JOIN activite.t_ghs_c ON p_sejours.ghs_id = t_ghs_c.ghs_id + JOIN activite.t_ghm_c ON p_sejours.ghm_id = t_ghm_c.ghm_id + JOIN activite.t_tiers_payant t_tiers_payant_0 ON p_sejours.tiers_payant_0_id = t_tiers_payant_0.oid + JOIN activite.t_tiers_payant t_tiers_payant_1 ON p_sejours.tiers_payant_1_id = t_tiers_payant_1.oid + JOIN activite.t_tiers_payant t_tiers_payant_2 ON p_sejours.tiers_payant_2_id = t_tiers_payant_2.oid + JOIN activite.t_tiers_payant t_tiers_payant_22 ON p_sejours.tiers_payant_22_id = t_tiers_payant_22.oid + JOIN activite.t_types_tiers_payant t_types_tiers_payant_0 ON t_tiers_payant_0.type_tiers_payant = t_types_tiers_payant_0.code + JOIN activite.t_types_tiers_payant t_types_tiers_payant_1 ON t_tiers_payant_1.type_tiers_payant = t_types_tiers_payant_1.code + JOIN activite.t_types_tiers_payant t_types_tiers_payant_2 ON t_tiers_payant_2.type_tiers_payant = t_types_tiers_payant_2.code + JOIN activite.t_types_tiers_payant t_types_tiers_payant_22 ON t_tiers_payant_22.type_tiers_payant = t_types_tiers_payant_22.code + WHERE p_sejours.etat = ''::bpchar; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_5.yaml b/db/schema2/views/v_sejours_5.yaml new file mode 100644 index 0000000..1640a51 --- /dev/null +++ b/db/schema2/views/v_sejours_5.yaml @@ -0,0 +1,212 @@ +src: | + SELECT p_sejours.finess, + p_sejours.provider_id, + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.no_patient, + p_sejours.code_sexe, + CASE + WHEN p_sejours.code_sexe = '1'::bpchar THEN 'M'::bpchar + WHEN p_sejours.code_sexe = '2'::bpchar THEN 'F'::bpchar + ELSE p_sejours.code_sexe + END AS sexe_texte_court, + p_sejours.age, + p_sejours.code_prevu, + p_sejours.type_sejour, + p_sejours.type_sejour AS type_sejour_code, + p_sejours.est_budget_global, + p_sejours.type_sejour::bigint AS type_sejour_id, + CASE + WHEN p_sejours.type_sejour = '1'::text THEN 'Hospitalisé'::text + WHEN p_sejours.type_sejour = '2'::text THEN 'Ambulatoires'::text + WHEN p_sejours.type_sejour = '3'::text THEN 'Externes'::text + WHEN p_sejours.type_sejour = '4'::text THEN 'Long séjours'::text + WHEN p_sejours.type_sejour = '5'::text THEN 'Séances'::text + WHEN p_sejours.type_sejour = '6'::text THEN 'Bébés sans séjour'::text + WHEN p_sejours.type_sejour = '9'::text THEN 'Fictifs'::text + ELSE p_sejours.type_sejour + END AS type_sejour_texte, + t_lieux_c.mode_traitement_id, + t_lieux_c.mode_traitement_code, + t_lieux_c.mode_traitement_texte, + to_char(p_sejours.date_entree::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_entree, + p_sejours.date_entree, + p_sejours.heure_entree, + p_sejours.code_sorti, + to_char(p_sejours.date_sortie::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_sortie, + p_sejours.date_sortie, + p_sejours.heure_sortie, + p_sejours.code_cp_demandee, + p_sejours.ghs_id, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.medecin_sejour_id AS medecin_adm_sejour_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_sejour_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_sejour_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_sejour_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_sejour_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_sejour_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_sejour_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_sejour_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_sejour_id, + t_medecins_administratifs_c.medecin_code AS medecin_sejour_code, + t_medecins_administratifs_c.nom AS medecin_sejour_nom, + t_medecins_administratifs_c.prenom AS medecin_sejour_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_sejour_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_sejour_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_sejour_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_sejour_specialite_texte, + p_sejours.lieu_sortie_id, + t_lieux_c.service_facturation_id AS lieu_sortie_service_id, + t_lieux_c.service_facturation_code AS lieu_sortie_service_code, + t_lieux_c.service_facturation_texte AS lieu_sortie_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_sortie_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_sortie_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_sortie_service_section_texte, + t_lieux_c.service_facturation_section_nb_lits AS lieu_sortie_service_section_nb_lits, + t_lieux_c.service_facturation_section_nb_cp AS lieu_sortie_service_section_nb_cp, + t_lieux_c.activite_id AS lieu_sortie_activite_id, + t_lieux_c.activite_code AS lieu_sortie_activite_code, + t_lieux_c.activite_texte AS lieu_sortie_activite_texte, + t_lieux_c.etage_id AS lieu_sortie_etage_id, + t_lieux_c.etage_code AS lieu_sortie_etage_code, + t_lieux_c.etage_texte AS lieu_sortie_etage_texte, + t_lieux_c.etage_section_id AS lieu_sortie_etage_section_id, + t_lieux_c.etage_section_code AS lieu_sortie_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_sortie_etage_section_texte, + t_lieux_c.lit_id AS lieu_sortie_lit_id, + t_lieux_c.lit_code AS lieu_sortie_lit_code, + t_lieux_c.lit_texte AS lieu_sortie_lit_texte, + t_lieux_c.lit_section_id AS lieu_sortie_lit_section_id, + t_lieux_c.lit_section_code AS lieu_sortie_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_sortie_lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_sortie_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_sortie_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_sortie_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_sortie_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_sortie_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_sortie_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS lieu_sortie_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_sortie_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_sortie_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_sortie_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_sortie_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_sortie_unite_fonctionnelle_section_texte, + to_char( + CASE + WHEN p_sejours.ghs_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_groupage, + CASE + WHEN p_sejours.ghs_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END AS date_groupage, + CASE + WHEN t_lieux_c.type_t2a = '1'::bpchar AND (p_sejours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND p_sejours.ghs_id > 0 AND p_sejours.date_groupage < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_groupage, + CASE + WHEN t_lieux_c.type_t2a = '1'::bpchar AND (p_sejours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND p_sejours.ghs_id > 0 AND p_sejours.date_groupage < '2099-12-31'::date THEN p_sejours.delai_groupage + ELSE 0::numeric + END AS delai_groupage, + CASE + WHEN p_sejours.type_sejour <> ALL (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text]) THEN 0 + WHEN p_sejours.code_sorti <> 1::numeric OR t_lieux_c.type_t2a <> '1'::bpchar OR p_sejours.date_groupage < '2099-12-31'::date AND p_sejours.ghs_id > 0 THEN 0 + ELSE 1 + END AS nb_non_groupe, + to_char(p_sejours.date_facture::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_facture, + p_sejours.date_facture, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_facture, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date THEN p_sejours.delai_facture + ELSE 0::numeric + END AS delai_facture, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_non_facture, + to_char(p_sejours.date_expedition::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_expedition, + p_sejours.date_expedition, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_expedition < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_expedition, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_1 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_1_c <> p_sejours.montant_regle_1_c OR p_sejours.montant_comptabilise_1_h <> p_sejours.montant_regle_1_h) THEN 1 + WHEN p_sejours.date_expedition_2 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_2_c <> p_sejours.montant_regle_2_c OR p_sejours.montant_comptabilise_2_h <> p_sejours.montant_regle_2_h) THEN 1 + WHEN p_sejours.date_expedition_22 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_22_c <> p_sejours.montant_regle_22_c OR p_sejours.montant_comptabilise_22_h <> p_sejours.montant_regle_22_h) THEN 1 + ELSE 0 + END AS nb_non_expedie, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_1 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_1_c + p_sejours.montant_comptabilise_1_h - p_sejours.montant_regle_1_c - p_sejours.montant_regle_1_h + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_2 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_2_c + p_sejours.montant_comptabilise_2_h - p_sejours.montant_regle_2_c - p_sejours.montant_regle_2_h + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_22 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_22_c + p_sejours.montant_comptabilise_22_h - p_sejours.montant_regle_22_c - p_sejours.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date OR p_sejours.date_expedition < '2099-12-31'::date THEN p_sejours.delai_expedition + ELSE 0::numeric + END AS delai_expedition, + to_char(p_sejours.date_solde::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_solde, + p_sejours.date_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN 1 + ELSE 0 + END AS nb_delai_solde, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_c <> p_sejours.montant_comptabilise_c OR p_sejours.montant_regle_h <> p_sejours.montant_comptabilise_h THEN 1 + ELSE 0 + END AS nb_non_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN 0::numeric + ELSE p_sejours.montant_comptabilise_c + p_sejours.montant_comptabilise_h - p_sejours.montant_regle_c - p_sejours.montant_regle_h + END AS montant_non_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN p_sejours.delai_solde + ELSE 0::numeric + END AS delai_solde, + p_sejours.montant_facture_c, + p_sejours.montant_facture_0_c, + p_sejours.montant_facture_1_c, + p_sejours.montant_facture_2_c, + p_sejours.montant_facture_22_c, + p_sejours.montant_facture_h, + p_sejours.montant_facture_0_h, + p_sejours.montant_facture_1_h, + p_sejours.montant_facture_2_h, + p_sejours.montant_facture_22_h, + p_sejours.montant_facture_c_actes_inclus_dans_sejour, + p_sejours.montant_facture_h_actes_inclus_dans_sejour, + p_sejours.montant_comptabilise_c, + p_sejours.montant_comptabilise_h, + p_sejours.montant_comptabilise_budget_global_c, + p_sejours.montant_regle_c, + p_sejours.montant_regle_h, + 1 AS nb_sejours, + p_sejours.nb_factures, + p_sejours.nb_factures_regularisation, + p_sejours.nb_factures_rejet, + 0 AS no_oid, + CASE + WHEN p_sejours.type_sejour = ANY (ARRAY['3'::bpchar::text, '5'::bpchar::text]) THEN 0 + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie IS NOT NULL THEN p_sejours.date_sortie - p_sejours.date_entree + WHEN p_sejours.type_sejour = '1'::text AND date(now()) > p_sejours.date_entree THEN date(now()) - p_sejours.date_entree + ELSE 0 + END AS duree, + p_sejours.risque_id + FROM activite.p_sejours + JOIN activite.t_medecins_administratifs_c ON p_sejours.medecin_sejour_id = t_medecins_administratifs_c.oid + JOIN activite.t_lieux_c ON p_sejours.lieu_sortie_id = t_lieux_c.oid + WHERE p_sejours.etat = ''::bpchar; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_6.yaml b/db/schema2/views/v_sejours_6.yaml new file mode 100644 index 0000000..627752a --- /dev/null +++ b/db/schema2/views/v_sejours_6.yaml @@ -0,0 +1,285 @@ +src: | + SELECT p_sejours.finess, + p_sejours.provider_id, + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.no_patient, + p_sejours.code_sexe, + CASE + WHEN p_sejours.code_sexe = '1'::bpchar THEN 'M'::bpchar + WHEN p_sejours.code_sexe = '2'::bpchar THEN 'F'::bpchar + ELSE p_sejours.code_sexe + END AS sexe_texte_court, + p_sejours.age, + p_sejours.code_prevu, + p_sejours.type_sejour, + p_sejours.type_sejour AS type_sejour_code, + p_sejours.est_budget_global, + p_sejours.type_sejour::bigint AS type_sejour_id, + CASE + WHEN p_sejours.type_sejour = '1'::text THEN 'Hospitalisé'::text + WHEN p_sejours.type_sejour = '2'::text THEN 'Ambulatoires'::text + WHEN p_sejours.type_sejour = '3'::text THEN 'Externes'::text + WHEN p_sejours.type_sejour = '4'::text THEN 'Long séjours'::text + WHEN p_sejours.type_sejour = '5'::text THEN 'Séances'::text + WHEN p_sejours.type_sejour = '6'::text THEN 'Bébés sans séjour'::text + WHEN p_sejours.type_sejour = '9'::text THEN 'Fictifs'::text + ELSE p_sejours.type_sejour + END AS type_sejour_texte, + t_lieux_c.mode_traitement_id, + t_lieux_c.mode_traitement_code, + t_lieux_c.mode_traitement_texte, + to_char(p_sejours.date_entree::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_entree, + p_sejours.date_entree, + p_sejours.heure_entree, + p_sejours.code_sorti, + to_char(p_sejours.date_sortie::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_sortie, + p_sejours.date_sortie, + p_sejours.heure_sortie, + p_sejours.code_cp_demandee, + p_sejours.ghs_id, + t_ghs_c.ghs_code_text AS ghs_code, + t_ghs_c.ghs_texte, + p_sejours.ghm_id, + t_ghm_c.ghm_code, + t_ghm_c.ghm_texte, + t_ghm_c.ghm5_id, + t_ghm_c.ghm5_code, + t_ghm_c.ghm5_texte, + t_ghm_c.severite_ghm_id, + t_ghm_c.severite_ghm_code, + t_ghm_c.severite_ghm_texte, + t_ghm_c.cas_id, + t_ghm_c.cas_code, + t_ghm_c.cas_texte, + t_ghm_c.mco_id, + t_ghm_c.mco_code, + t_ghm_c.mco_texte, + t_ghm_c.cmd_id, + t_ghm_c.cmd_code, + t_ghm_c.cmd_texte, + t_ghm_c.mco_id AS mcos_id, + t_ghm_c.mco_code AS mcos_code, + t_ghm_c.mco_texte AS mcos_texte, + t_ghm_c.ghm_section_id, + t_ghm_c.ghm_section_code, + t_ghm_c.ghm_section_texte, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.medecin_sejour_id AS medecin_adm_sejour_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_sejour_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_sejour_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_sejour_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_sejour_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_sejour_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_sejour_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_sejour_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_sejour_id, + t_medecins_administratifs_c.medecin_code AS medecin_sejour_code, + t_medecins_administratifs_c.nom AS medecin_sejour_nom, + t_medecins_administratifs_c.prenom AS medecin_sejour_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_sejour_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_sejour_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_sejour_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_sejour_specialite_texte, + p_sejours.lieu_sortie_id, + t_lieux_c.service_facturation_id AS lieu_sortie_service_id, + t_lieux_c.service_facturation_code AS lieu_sortie_service_code, + t_lieux_c.service_facturation_texte AS lieu_sortie_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_sortie_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_sortie_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_sortie_service_section_texte, + t_lieux_c.service_facturation_section_nb_lits AS lieu_sortie_service_section_nb_lits, + t_lieux_c.service_facturation_section_nb_cp AS lieu_sortie_service_section_nb_cp, + t_lieux_c.activite_id AS lieu_sortie_activite_id, + t_lieux_c.activite_code AS lieu_sortie_activite_code, + t_lieux_c.activite_texte AS lieu_sortie_activite_texte, + t_lieux_c.etage_id AS lieu_sortie_etage_id, + t_lieux_c.etage_code AS lieu_sortie_etage_code, + t_lieux_c.etage_texte AS lieu_sortie_etage_texte, + t_lieux_c.etage_section_id AS lieu_sortie_etage_section_id, + t_lieux_c.etage_section_code AS lieu_sortie_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_sortie_etage_section_texte, + t_lieux_c.lit_id AS lieu_sortie_lit_id, + t_lieux_c.lit_code AS lieu_sortie_lit_code, + t_lieux_c.lit_texte AS lieu_sortie_lit_texte, + t_lieux_c.lit_section_id AS lieu_sortie_lit_section_id, + t_lieux_c.lit_section_code AS lieu_sortie_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_sortie_lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_sortie_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_sortie_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_sortie_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_sortie_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_sortie_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_sortie_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS lieu_sortie_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_sortie_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_sortie_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_sortie_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_sortie_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_sortie_unite_fonctionnelle_section_texte, + to_char( + CASE + WHEN p_sejours.ghs_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_groupage, + CASE + WHEN p_sejours.ghs_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END AS date_groupage, + CASE + WHEN t_lieux_c.type_t2a = '1'::bpchar AND (p_sejours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND p_sejours.ghs_id > 0 AND p_sejours.date_groupage < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_groupage, + CASE + WHEN t_lieux_c.type_t2a = '1'::bpchar AND (p_sejours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND p_sejours.ghs_id > 0 AND p_sejours.date_groupage < '2099-12-31'::date THEN p_sejours.delai_groupage + ELSE 0::numeric + END AS delai_groupage, + CASE + WHEN p_sejours.type_sejour <> ALL (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text]) THEN 0 + WHEN p_sejours.code_sorti <> 1::numeric OR t_lieux_c.type_t2a <> '1'::bpchar OR p_sejours.date_groupage < '2099-12-31'::date AND p_sejours.ghs_id > 0 THEN 0 + ELSE 1 + END AS nb_non_groupe, + to_char(p_sejours.date_facture::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_facture, + p_sejours.date_facture, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_facture, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date THEN p_sejours.delai_facture + ELSE 0::numeric + END AS delai_facture, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_non_facture, + to_char(p_sejours.date_expedition::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_expedition, + p_sejours.date_expedition, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_expedition < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_expedition, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_1 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_1_c <> p_sejours.montant_regle_1_c OR p_sejours.montant_comptabilise_1_h <> p_sejours.montant_regle_1_h) THEN 1 + WHEN p_sejours.date_expedition_2 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_2_c <> p_sejours.montant_regle_2_c OR p_sejours.montant_comptabilise_2_h <> p_sejours.montant_regle_2_h) THEN 1 + WHEN p_sejours.date_expedition_22 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_22_c <> p_sejours.montant_regle_22_c OR p_sejours.montant_comptabilise_22_h <> p_sejours.montant_regle_22_h) THEN 1 + ELSE 0 + END AS nb_non_expedie, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_1 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_1_c + p_sejours.montant_comptabilise_1_h - p_sejours.montant_regle_1_c - p_sejours.montant_regle_1_h + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_2 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_2_c + p_sejours.montant_comptabilise_2_h - p_sejours.montant_regle_2_c - p_sejours.montant_regle_2_h + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_22 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_22_c + p_sejours.montant_comptabilise_22_h - p_sejours.montant_regle_22_c - p_sejours.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date OR p_sejours.date_expedition < '2099-12-31'::date THEN p_sejours.delai_expedition + ELSE 0::numeric + END AS delai_expedition, + to_char(p_sejours.date_solde::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_solde, + p_sejours.date_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN 1 + ELSE 0 + END AS nb_delai_solde, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_c <> p_sejours.montant_comptabilise_c OR p_sejours.montant_regle_h <> p_sejours.montant_comptabilise_h THEN 1 + ELSE 0 + END AS nb_non_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN 0::numeric + ELSE p_sejours.montant_comptabilise_c + p_sejours.montant_comptabilise_h - p_sejours.montant_regle_c - p_sejours.montant_regle_h + END AS montant_non_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN p_sejours.delai_solde + ELSE 0::numeric + END AS delai_solde, + p_sejours.montant_facture_c, + p_sejours.montant_facture_0_c, + p_sejours.montant_facture_1_c, + p_sejours.montant_facture_2_c, + p_sejours.montant_facture_22_c, + p_sejours.montant_facture_h, + p_sejours.montant_facture_0_h, + p_sejours.montant_facture_1_h, + p_sejours.montant_facture_2_h, + p_sejours.montant_facture_22_h, + p_sejours.montant_facture_c_actes_inclus_dans_sejour, + p_sejours.montant_facture_h_actes_inclus_dans_sejour, + p_sejours.montant_comptabilise_c, + p_sejours.montant_comptabilise_h, + p_sejours.montant_comptabilise_budget_global_c, + p_sejours.montant_regle_c, + p_sejours.montant_regle_h, + 1 AS nb_sejours, + p_sejours.nb_factures, + p_sejours.nb_factures_regularisation, + p_sejours.nb_factures_rejet, + 0 AS no_oid, + CASE + WHEN p_sejours.type_sejour = ANY (ARRAY['3'::bpchar::text, '5'::bpchar::text]) THEN 0 + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie IS NOT NULL THEN p_sejours.date_sortie - p_sejours.date_entree + WHEN p_sejours.type_sejour = '1'::text AND date(now()) > p_sejours.date_entree THEN date(now()) - p_sejours.date_entree + ELSE 0 + END AS duree, + p_sejours.risque_id, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN '1'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN '2'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN '3'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN '4'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN '5'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN '6'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN '7'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN '8'::text + ELSE NULL::text + END AS severite_cti_code, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN 'Séances'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN 'Sévérité J'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN 'Sévérité T'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN 'Sévérité Z'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN 'Sévérité 1'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN 'Sévérité ABCDE'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN 'DS > 2 nuits'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN 'Non PMSI'::text + ELSE NULL::text + END AS severite_cti_texte, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN '1'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN '2'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN '3'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN '4'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN '5'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN '6'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN '7'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN '8'::text + ELSE NULL::text + END AS severite_cti_id + FROM activite.p_sejours + JOIN activite.t_medecins_administratifs_c ON p_sejours.medecin_sejour_id = t_medecins_administratifs_c.oid + JOIN activite.t_lieux_c ON p_sejours.lieu_sortie_id = t_lieux_c.oid + JOIN activite.t_ghs_c ON p_sejours.ghs_id = t_ghs_c.ghs_id + JOIN activite.t_ghm_c ON p_sejours.ghm_id = t_ghm_c.ghm_id + WHERE p_sejours.etat = ''::bpchar; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_7.yaml b/db/schema2/views/v_sejours_7.yaml new file mode 100644 index 0000000..ada2e21 --- /dev/null +++ b/db/schema2/views/v_sejours_7.yaml @@ -0,0 +1,299 @@ +src: | + SELECT t_finess_c.oid AS finess_id, + p_sejours.finess AS finess_code, + t_finess_c.texte_court AS finess_texte, + t_finess_c.section_id AS finess_section_id, + t_finess_c.section_code AS finess_section_code, + t_finess_c.section_texte AS finess_section_texte, + p_sejours.finess, + p_sejours.provider_id, + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.no_patient, + p_sejours.code_sexe, + CASE + WHEN p_sejours.code_sexe = '1'::bpchar THEN 'M'::bpchar + WHEN p_sejours.code_sexe = '2'::bpchar THEN 'F'::bpchar + ELSE p_sejours.code_sexe + END AS sexe_texte_court, + p_sejours.age, + p_sejours.code_postal_id, + p_sejours.code_prevu, + p_sejours.type_sejour, + p_sejours.est_budget_global, + t_type_sejour.oid AS type_sejour_id, + p_sejours.type_sejour AS type_sejour_code, + t_type_sejour.texte AS type_sejour_texte, + t_type_sejour.section_id AS type_sejour_section_id, + t_type_sejour.section_code AS type_sejour_section_code, + t_type_sejour.section_texte AS type_sejour_section_texte, + t_lieux_c.mode_traitement_id, + t_lieux_c.mode_traitement_code, + t_lieux_c.mode_traitement_texte, + to_char(p_sejours.date_entree::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_entree, + p_sejours.date_entree, + p_sejours.heure_entree, + p_sejours.mode_entree, + p_sejours.provenance, + to_char(p_sejours.date_sortie::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_sortie, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.heure_sortie, + p_sejours.mode_sortie, + p_sejours.destination, + p_sejours.code_cp_demandee, + p_sejours.ghs_id, + t_ghs_c.ghs_code_text AS ghs_code, + t_ghs_c.ghs_texte, + p_sejours.ghm_id, + t_ghm_c.ghm_code, + t_ghm_c.ghm_texte, + t_ghm_c.ghm5_id, + t_ghm_c.ghm5_code, + t_ghm_c.ghm5_texte, + t_ghm_c.severite_ghm_id, + t_ghm_c.severite_ghm_code, + t_ghm_c.severite_ghm_texte, + t_ghm_c.cas_id, + t_ghm_c.cas_code, + t_ghm_c.cas_texte, + t_ghm_c.mco_id, + t_ghm_c.mco_code, + t_ghm_c.mco_texte, + t_ghm_c.cmd_id, + t_ghm_c.cmd_code, + t_ghm_c.cmd_texte, + t_ghm_c.mco_id AS mcos_id, + t_ghm_c.mco_code AS mcos_code, + t_ghm_c.mco_texte AS mcos_texte, + t_ghm_c.ghm_section_id, + t_ghm_c.ghm_section_code, + t_ghm_c.ghm_section_texte, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.medecin_sejour_id AS medecin_adm_sejour_id, + t_medecins_administratifs_c.adm_code AS medecin_adm_sejour_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_sejour_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_sejour_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_sejour_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_sejour_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_sejour_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_sejour_section_texte, + t_medecins_administratifs_c.medecin_code AS medecin_sejour_code, + t_medecins_administratifs_c.nom AS medecin_sejour_nom, + t_medecins_administratifs_c.prenom AS medecin_sejour_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_sejour_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_sejour_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_sejour_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_sejour_specialite_texte, + p_sejours.lieu_sortie_id, + t_lieux_c.service_facturation_id AS lieu_sortie_service_id, + t_lieux_c.service_facturation_code AS lieu_sortie_service_code, + t_lieux_c.service_facturation_texte AS lieu_sortie_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_sortie_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_sortie_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_sortie_service_section_texte, + t_lieux_c.service_facturation_section_nb_lits AS lieu_sortie_service_section_nb_lits, + t_lieux_c.service_facturation_section_nb_cp AS lieu_sortie_service_section_nb_cp, + t_lieux_c.activite_id AS lieu_sortie_activite_id, + t_lieux_c.activite_code AS lieu_sortie_activite_code, + t_lieux_c.activite_texte AS lieu_sortie_activite_texte, + t_lieux_c.etage_id AS lieu_sortie_etage_id, + t_lieux_c.etage_code AS lieu_sortie_etage_code, + t_lieux_c.etage_texte AS lieu_sortie_etage_texte, + t_lieux_c.etage_section_id AS lieu_sortie_etage_section_id, + t_lieux_c.etage_section_code AS lieu_sortie_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_sortie_etage_section_texte, + t_lieux_c.lit_id AS lieu_sortie_lit_id, + t_lieux_c.lit_code AS lieu_sortie_lit_code, + t_lieux_c.lit_texte AS lieu_sortie_lit_texte, + t_lieux_c.lit_section_id AS lieu_sortie_lit_section_id, + t_lieux_c.lit_section_code AS lieu_sortie_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_sortie_lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_sortie_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_sortie_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_sortie_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_sortie_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_sortie_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_sortie_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS lieu_sortie_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_sortie_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_sortie_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_sortie_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_sortie_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_sortie_unite_fonctionnelle_section_texte, + to_char( + CASE + WHEN p_sejours.ghs_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_groupage, + CASE + WHEN p_sejours.ghs_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END AS date_groupage, + CASE + WHEN t_lieux_c.type_t2a = '1'::bpchar AND (p_sejours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND p_sejours.ghs_id > 0 AND p_sejours.date_groupage < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_groupage, + CASE + WHEN t_lieux_c.type_t2a = '1'::bpchar AND (p_sejours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND (p_sejours.ghs_id > 0 AND p_sejours.date_groupage < '2099-12-31'::date OR p_sejours.date_facture < '2099-12-31'::date) THEN 1 + ELSE 0 + END AS nb_groupe, + CASE + WHEN t_lieux_c.type_t2a = '1'::bpchar AND (p_sejours.type_sejour = ANY (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text])) AND p_sejours.ghs_id > 0 AND p_sejours.date_groupage < '2099-12-31'::date THEN p_sejours.delai_groupage + ELSE 0::numeric + END AS delai_groupage, + CASE + WHEN p_sejours.type_sejour <> ALL (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text]) THEN 0 + WHEN p_sejours.code_sorti <> 1::numeric OR t_lieux_c.type_t2a <> '1'::bpchar OR p_sejours.date_groupage < '2099-12-31'::date AND p_sejours.ghs_id > 0 OR p_sejours.date_facture < '2099-12-31'::date THEN 0 + ELSE 1 + END AS nb_non_groupe, + p_sejours.est_sans_facturation, + to_char(p_sejours.date_facture::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_facture, + p_sejours.date_facture, + CASE + WHEN p_sejours.est_sans_facturation = '1'::bpchar THEN 0 + WHEN p_sejours.date_facture < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_facture, + CASE + WHEN p_sejours.est_sans_facturation = '1'::bpchar THEN 0::numeric + WHEN p_sejours.date_facture < '2099-12-31'::date THEN p_sejours.delai_facture + ELSE 0::numeric + END AS delai_facture, + CASE + WHEN p_sejours.est_sans_facturation = '1'::bpchar THEN 0 + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_non_facture, + to_char(p_sejours.date_expedition::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_expedition, + p_sejours.date_expedition, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_expedition < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_expedition, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_1 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_1_c <> p_sejours.montant_regle_1_c OR p_sejours.montant_comptabilise_1_h <> p_sejours.montant_regle_1_h) THEN 1 + WHEN p_sejours.date_expedition_2 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_2_c <> p_sejours.montant_regle_2_c OR p_sejours.montant_comptabilise_2_h <> p_sejours.montant_regle_2_h) THEN 1 + WHEN p_sejours.date_expedition_22 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_22_c <> p_sejours.montant_regle_22_c OR p_sejours.montant_comptabilise_22_h <> p_sejours.montant_regle_22_h) THEN 1 + ELSE 0 + END AS nb_non_expedie, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_1 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_1_c + p_sejours.montant_comptabilise_1_h - p_sejours.montant_regle_1_c - p_sejours.montant_regle_1_h + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_2 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_2_c + p_sejours.montant_comptabilise_2_h - p_sejours.montant_regle_2_c - p_sejours.montant_regle_2_h + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_22 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_22_c + p_sejours.montant_comptabilise_22_h - p_sejours.montant_regle_22_c - p_sejours.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date OR p_sejours.date_expedition < '2099-12-31'::date THEN p_sejours.delai_expedition + ELSE 0::numeric + END AS delai_expedition, + to_char(p_sejours.date_solde::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_solde, + p_sejours.date_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN 1 + ELSE 0 + END AS nb_delai_solde, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_c <> p_sejours.montant_comptabilise_c OR p_sejours.montant_regle_h <> p_sejours.montant_comptabilise_h THEN 1 + ELSE 0 + END AS nb_non_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN 0::numeric + ELSE p_sejours.montant_comptabilise_c + p_sejours.montant_comptabilise_h - p_sejours.montant_regle_c - p_sejours.montant_regle_h + END AS montant_non_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN p_sejours.delai_solde + ELSE 0::numeric + END AS delai_solde, + p_sejours.montant_facture_c, + p_sejours.montant_facture_0_c, + p_sejours.montant_facture_1_c, + p_sejours.montant_facture_2_c, + p_sejours.montant_facture_22_c, + p_sejours.montant_facture_h, + p_sejours.montant_facture_0_h, + p_sejours.montant_facture_1_h, + p_sejours.montant_facture_2_h, + p_sejours.montant_facture_22_h, + p_sejours.montant_facture_c_actes_inclus_dans_sejour, + p_sejours.montant_facture_h_actes_inclus_dans_sejour, + p_sejours.montant_comptabilise_c, + p_sejours.montant_comptabilise_h, + p_sejours.montant_comptabilise_budget_global_c, + p_sejours.montant_regle_c, + p_sejours.montant_regle_h, + 1 AS nb_sejours, + p_sejours.nb_factures, + p_sejours.nb_factures_regularisation, + p_sejours.nb_factures_rejet, + 0 AS no_oid, + CASE + WHEN p_sejours.type_sejour = ANY (ARRAY['3'::bpchar::text, '5'::bpchar::text]) THEN 0 + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie IS NOT NULL THEN p_sejours.date_sortie - p_sejours.date_entree + WHEN p_sejours.type_sejour = '1'::text AND date(now()) > p_sejours.date_entree THEN date(now()) - p_sejours.date_entree + ELSE 0 + END AS duree, + p_sejours.risque_id, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN '1'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN '2'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN '3'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN '4'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN '5'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN '6'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN '7'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN '8'::text + ELSE NULL::text + END AS severite_cti_code, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN 'Séances'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN 'Sévérité J'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN 'Sévérité T'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN 'Sévérité Z'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN 'Sévérité 1'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN 'Sévérité ABCDE'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN 'DS > 2 nuits'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN 'Non PMSI'::text + ELSE NULL::text + END AS severite_cti_texte, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN '1'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN '2'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN '3'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN '4'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN '5'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN '6'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN '7'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN '8'::text + ELSE NULL::text + END AS severite_cti_id + FROM activite.p_sejours + JOIN activite.t_type_sejour ON p_sejours.type_sejour = t_type_sejour.code + JOIN activite.t_medecins_administratifs_c ON p_sejours.medecin_sejour_id = t_medecins_administratifs_c.oid + JOIN activite.t_lieux_c ON p_sejours.lieu_sortie_id = t_lieux_c.oid + JOIN activite.t_ghs_c ON p_sejours.ghs_id = t_ghs_c.ghs_id + JOIN activite.t_ghm_c ON p_sejours.ghm_id = t_ghm_c.ghm_id + LEFT JOIN activite.t_finess_c ON p_sejours.finess = t_finess_c.code + WHERE p_sejours.etat = ''::bpchar; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_8.yaml b/db/schema2/views/v_sejours_8.yaml new file mode 100644 index 0000000..119d224 --- /dev/null +++ b/db/schema2/views/v_sejours_8.yaml @@ -0,0 +1,208 @@ +src: | + SELECT p_sejours.finess, + p_sejours.provider_id, + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.no_patient, + p_sejours.code_sexe, + CASE + WHEN p_sejours.code_sexe = '1'::bpchar THEN 'M'::bpchar + WHEN p_sejours.code_sexe = '2'::bpchar THEN 'F'::bpchar + ELSE p_sejours.code_sexe + END AS sexe_texte_court, + p_sejours.age, + p_sejours.code_postal_id, + p_sejours.code_prevu, + p_sejours.type_sejour, + p_sejours.forme_activite_id, + p_sejours.filiere_soin_principale_id, + p_sejours.est_budget_global, + to_char(p_sejours.date_entree::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_entree, + p_sejours.date_entree, + p_sejours.heure_entree, + p_sejours.mode_entree, + p_sejours.provenance, + to_char(p_sejours.date_sortie::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_sortie, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.heure_sortie, + p_sejours.mode_sortie, + p_sejours.destination, + p_sejours.code_cp_demandee, + p_sejours.ghs_id, + p_sejours.ghm_id, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.medecin_sejour_id AS medecin_adm_sejour_id, + p_sejours.lieu_sortie_id, + to_char( + CASE + WHEN p_sejours.ghs_id > 0 OR p_sejours.gme_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_groupage, + CASE + WHEN p_sejours.ghs_id > 0 OR p_sejours.gme_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END AS date_groupage, + p_sejours.delai_groupage, + CASE + WHEN p_sejours.type_sejour <> ALL (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text, '6'::bpchar::text]) THEN 0 + WHEN p_sejours.code_sorti <> 1::numeric OR p_sejours.type_pmsi <> '1'::bpchar OR p_sejours.date_groupage < '2099-12-31'::date AND p_sejours.ghs_id > 0 OR p_sejours.date_facture < '2099-12-31'::date THEN 0 + ELSE 1 + END AS nb_non_groupe, + p_sejours.est_sans_facturation, + to_char(p_sejours.date_facture::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_facture, + p_sejours.date_facture, + CASE + WHEN p_sejours.est_sans_facturation = '1'::bpchar THEN 0 + WHEN p_sejours.date_facture < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_facture, + CASE + WHEN p_sejours.est_sans_facturation = '1'::bpchar THEN 0::numeric + WHEN p_sejours.date_facture < '2099-12-31'::date THEN p_sejours.delai_facture + ELSE 0::numeric + END AS delai_facture, + CASE + WHEN p_sejours.est_sans_facturation = '1'::bpchar THEN 0 + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_non_facture, + to_char(p_sejours.date_expedition::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_expedition, + p_sejours.date_expedition, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_expedition < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_expedition, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_1 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_1_c <> p_sejours.montant_regle_1_c OR p_sejours.montant_comptabilise_1_h <> p_sejours.montant_regle_1_h) THEN 1 + WHEN p_sejours.date_expedition_2 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_2_c <> p_sejours.montant_regle_2_c OR p_sejours.montant_comptabilise_2_h <> p_sejours.montant_regle_2_h) THEN 1 + WHEN p_sejours.date_expedition_22 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_22_c <> p_sejours.montant_regle_22_c OR p_sejours.montant_comptabilise_22_h <> p_sejours.montant_regle_22_h) THEN 1 + ELSE 0 + END AS nb_non_expedie, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_1 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_1_c + p_sejours.montant_comptabilise_1_h - p_sejours.montant_regle_1_c - p_sejours.montant_regle_1_h + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_2 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_2_c + p_sejours.montant_comptabilise_2_h - p_sejours.montant_regle_2_c - p_sejours.montant_regle_2_h + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_22 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_22_c + p_sejours.montant_comptabilise_22_h - p_sejours.montant_regle_22_c - p_sejours.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date OR p_sejours.date_expedition < '2099-12-31'::date THEN p_sejours.delai_expedition + ELSE 0::numeric + END AS delai_expedition, + to_char(p_sejours.date_solde::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_solde, + p_sejours.date_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN 1 + ELSE 0 + END AS nb_delai_solde, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_c <> p_sejours.montant_comptabilise_c OR p_sejours.montant_regle_h <> p_sejours.montant_comptabilise_h THEN 1 + ELSE 0 + END AS nb_non_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN 0::numeric + ELSE p_sejours.montant_comptabilise_c + p_sejours.montant_comptabilise_h - p_sejours.montant_regle_c - p_sejours.montant_regle_h + END AS montant_non_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN p_sejours.delai_solde + ELSE 0::numeric + END AS delai_solde, + p_sejours.montant_facture_c, + p_sejours.montant_facture_0_c, + p_sejours.montant_facture_1_c, + p_sejours.montant_facture_2_c, + p_sejours.montant_facture_22_c, + p_sejours.montant_facture_h, + p_sejours.montant_facture_0_h, + p_sejours.montant_facture_1_h, + p_sejours.montant_facture_2_h, + p_sejours.montant_facture_22_h, + p_sejours.montant_facture_c_actes_inclus_dans_sejour, + p_sejours.montant_facture_h_actes_inclus_dans_sejour, + p_sejours.montant_comptabilise_c, + p_sejours.montant_comptabilise_h, + p_sejours.montant_comptabilise_budget_global_c, + p_sejours.montant_regle_c, + p_sejours.montant_regle_h, + 1 AS nb_sejours, + p_sejours.nb_factures, + p_sejours.nb_factures_regularisation, + p_sejours.nb_factures_rejet, + 0 AS no_oid, + CASE + WHEN p_sejours.type_sejour = ANY (ARRAY['3'::bpchar::text, '5'::bpchar::text]) THEN 0 + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + WHEN p_sejours.type_sejour = '1'::text AND p_sejours.date_entree > '1970-01-01'::date AND date(now()) > p_sejours.date_entree THEN date(now()) - p_sejours.date_entree + ELSE 0 + END AS duree, + p_sejours.gme_id, + p_sejours.risque_id, + t_etat_sejour.oid AS etat_sejour_id, + t_etat_sejour.code AS etat_sejour_code, + t_etat_sejour.texte AS etat_sejour_texte, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN '1'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN '2'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN '3'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN '4'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN '5'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN '6'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN '7'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN '8'::text + ELSE NULL::text + END AS severite_cti_code, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN 'Séances'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN 'Sévérité J'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN 'Sévérité T'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN 'Sévérité Z'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN 'Sévérité 1'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN 'Sévérité ABCDE'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN 'DS > 2 nuits'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN 'Non PMSI'::text + ELSE NULL::text + END AS severite_cti_texte, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN '1'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN '2'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN '3'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN '4'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN '5'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN '6'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN '7'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN '8'::text + ELSE NULL::text + END AS severite_cti_id, + p_sejours.medecin_traitant_id, + p_sejours.traitement_epmsi_id, + p_sejours.ghmgme_id, + p_sejours.type_hospi_pmsi_id, + p_sejours.gmt_id, + t_gmt_c.gmt_code + FROM activite.p_sejours + LEFT JOIN activite.t_etat_sejour ON p_sejours.etat_sejour = t_etat_sejour.code + JOIN activite.t_ghm_c ON p_sejours.ghm_id = t_ghm_c.ghm_id + LEFT JOIN activite.t_gmt_c ON p_sejours.gmt_id = t_gmt_c.gmt_id + WHERE p_sejours.etat = ''::bpchar; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_annules.yaml b/db/schema2/views/v_sejours_annules.yaml new file mode 100644 index 0000000..9a5b148 --- /dev/null +++ b/db/schema2/views/v_sejours_annules.yaml @@ -0,0 +1,210 @@ +src: | + SELECT p_sejours.finess, + p_sejours.provider_id, + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.no_patient, + p_sejours.code_sexe, + CASE + WHEN p_sejours.code_sexe = '1'::bpchar THEN 'M'::bpchar + WHEN p_sejours.code_sexe = '2'::bpchar THEN 'F'::bpchar + ELSE p_sejours.code_sexe + END AS sexe_texte_court, + p_sejours.age, + p_sejours.code_postal_id, + p_sejours.code_prevu, + p_sejours.type_sejour, + p_sejours.forme_activite_id, + p_sejours.filiere_soin_principale_id, + p_sejours.est_budget_global, + to_char(p_sejours.date_entree::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_entree, + p_sejours.date_entree, + p_sejours.heure_entree, + p_sejours.mode_entree, + p_sejours.provenance, + to_char(p_sejours.date_sortie::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_sortie, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.heure_sortie, + p_sejours.mode_sortie, + p_sejours.destination, + p_sejours.code_cp_demandee, + p_sejours.ghs_id, + p_sejours.ghm_id, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.medecin_sejour_id AS medecin_adm_sejour_id, + p_sejours.lieu_sortie_id, + to_char( + CASE + WHEN p_sejours.ghs_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_groupage, + CASE + WHEN p_sejours.ghs_id > 0 THEN p_sejours.date_groupage + ELSE '2099-12-31'::date + END AS date_groupage, + p_sejours.delai_groupage, + CASE + WHEN p_sejours.type_sejour <> ALL (ARRAY['1'::bpchar::text, '2'::bpchar::text, '5'::bpchar::text, '6'::bpchar::text]) THEN 0 + WHEN p_sejours.code_sorti <> 1::numeric OR p_sejours.type_pmsi <> '1'::bpchar OR p_sejours.date_groupage < '2099-12-31'::date AND p_sejours.ghs_id > 0 OR p_sejours.date_facture < '2099-12-31'::date THEN 0 + ELSE 1 + END AS nb_non_groupe, + p_sejours.est_sans_facturation, + to_char(p_sejours.date_facture::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_facture, + p_sejours.date_facture, + CASE + WHEN p_sejours.est_sans_facturation = '1'::bpchar THEN 0 + WHEN p_sejours.date_facture < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_facture, + CASE + WHEN p_sejours.est_sans_facturation = '1'::bpchar THEN 0::numeric + WHEN p_sejours.date_facture < '2099-12-31'::date THEN p_sejours.delai_facture + ELSE 0::numeric + END AS delai_facture, + CASE + WHEN p_sejours.est_sans_facturation = '1'::bpchar THEN 0 + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_non_facture, + to_char(p_sejours.date_expedition::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_expedition, + p_sejours.date_expedition, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_expedition < '2099-12-31'::date THEN 1 + ELSE 0 + END AS nb_delai_expedition, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date THEN 1 + WHEN p_sejours.date_expedition_1 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_1_c <> p_sejours.montant_regle_1_c OR p_sejours.montant_comptabilise_1_h <> p_sejours.montant_regle_1_h) THEN 1 + WHEN p_sejours.date_expedition_2 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_2_c <> p_sejours.montant_regle_2_c OR p_sejours.montant_comptabilise_2_h <> p_sejours.montant_regle_2_h) THEN 1 + WHEN p_sejours.date_expedition_22 = '2099-12-31'::date AND (p_sejours.montant_comptabilise_22_c <> p_sejours.montant_regle_22_c OR p_sejours.montant_comptabilise_22_h <> p_sejours.montant_regle_22_h) THEN 1 + ELSE 0 + END AS nb_non_expedie, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_1 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_1_c + p_sejours.montant_comptabilise_1_h - p_sejours.montant_regle_1_c - p_sejours.montant_regle_1_h + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_2 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_2_c + p_sejours.montant_comptabilise_2_h - p_sejours.montant_regle_2_c - p_sejours.montant_regle_2_h + ELSE 0::numeric + END + + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.date_expedition_22 = '2099-12-31'::date THEN p_sejours.montant_comptabilise_22_c + p_sejours.montant_comptabilise_22_h - p_sejours.montant_regle_22_c - p_sejours.montant_regle_22_h + ELSE 0::numeric + END AS montant_non_expedie, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date OR p_sejours.date_expedition < '2099-12-31'::date THEN p_sejours.delai_expedition + ELSE 0::numeric + END AS delai_expedition, + to_char(p_sejours.date_solde::timestamp with time zone, 'YYYYMM'::text)::numeric AS mois_solde, + p_sejours.date_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN 1 + ELSE 0 + END AS nb_delai_solde, + CASE + WHEN p_sejours.date_facture = '2099-12-31'::date OR p_sejours.montant_regle_c <> p_sejours.montant_comptabilise_c OR p_sejours.montant_regle_h <> p_sejours.montant_comptabilise_h THEN 1 + ELSE 0 + END AS nb_non_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN 0::numeric + ELSE p_sejours.montant_comptabilise_c + p_sejours.montant_comptabilise_h - p_sejours.montant_regle_c - p_sejours.montant_regle_h + END AS montant_non_solde, + CASE + WHEN p_sejours.date_facture < '2099-12-31'::date AND p_sejours.date_solde < '2099-12-31'::date AND p_sejours.montant_regle_c = p_sejours.montant_comptabilise_c AND p_sejours.montant_regle_h = p_sejours.montant_comptabilise_h THEN p_sejours.delai_solde + ELSE 0::numeric + END AS delai_solde, + p_sejours.montant_facture_c, + p_sejours.montant_facture_0_c, + p_sejours.montant_facture_1_c, + p_sejours.montant_facture_2_c, + p_sejours.montant_facture_22_c, + p_sejours.montant_facture_h, + p_sejours.montant_facture_0_h, + p_sejours.montant_facture_1_h, + p_sejours.montant_facture_2_h, + p_sejours.montant_facture_22_h, + p_sejours.montant_facture_c_actes_inclus_dans_sejour, + p_sejours.montant_facture_h_actes_inclus_dans_sejour, + p_sejours.montant_comptabilise_c, + p_sejours.montant_comptabilise_h, + p_sejours.montant_comptabilise_budget_global_c, + p_sejours.montant_regle_c, + p_sejours.montant_regle_h, + 1 AS nb_sejours, + p_sejours.nb_factures, + p_sejours.nb_factures_regularisation, + p_sejours.nb_factures_rejet, + 0 AS no_oid, + CASE + WHEN p_sejours.type_sejour = ANY (ARRAY['3'::bpchar::text, '5'::bpchar::text]) THEN 0 + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + WHEN p_sejours.type_sejour = '1'::text AND p_sejours.date_entree > '1970-01-01'::date AND date(now()) > p_sejours.date_entree THEN date(now()) - p_sejours.date_entree + ELSE 0 + END AS duree, + p_sejours.gme_id, + p_sejours.risque_id, + t_etat_sejour.oid AS etat_sejour_id, + t_etat_sejour.code AS etat_sejour_code, + t_etat_sejour.texte AS etat_sejour_texte, + p_sejours.date_etat, + CASE + WHEN p_sejours.date_entree = date(p_sejours.date_etat) THEN 1 + ELSE 0 + END AS is_annulation_j0, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN '1'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN '2'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN '3'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN '4'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN '5'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN '6'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN '7'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN '8'::text + ELSE NULL::text + END AS severite_cti_code, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN 'Séances'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN 'Sévérité J'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN 'Sévérité T'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN 'Sévérité Z'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN 'Sévérité 1'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN 'Sévérité ABCDE'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN 'DS > 2 nuits'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN 'Non PMSI'::text + ELSE NULL::text + END AS severite_cti_texte, + CASE + WHEN t_ghm_c.ghm_code ~~* '28%'::text THEN '1'::text + WHEN t_ghm_c.severite_ghm_code = 'J'::bpchar THEN '2'::text + WHEN t_ghm_c.severite_ghm_code = 'T'::bpchar THEN '3'::text + WHEN t_ghm_c.severite_ghm_code = 'Z'::bpchar THEN '4'::text + WHEN t_ghm_c.severite_ghm_code = '1'::bpchar THEN '5'::text + WHEN t_ghm_c.severite_ghm_code = ANY (ARRAY['A'::bpchar, 'B'::bpchar, 'C'::bpchar, 'D'::bpchar, 'E'::bpchar]) THEN '6'::text + WHEN + CASE + WHEN p_sejours.date_sortie <> '2099-12-31'::date AND p_sejours.date_sortie <= date(now()) AND p_sejours.date_sortie IS NOT NULL AND p_sejours.date_sortie >= p_sejours.date_entree THEN p_sejours.date_sortie - p_sejours.date_entree + ELSE 0 + END::numeric > 2::numeric THEN '7'::text + WHEN t_ghm_c.severite_ghm_code = '*'::bpchar THEN '8'::text + ELSE NULL::text + END AS severite_cti_id, + p_sejours.medecin_traitant_id, + p_sejours.traitement_epmsi_id, + p_sejours.ghmgme_id, + p_sejours.type_hospi_pmsi_id + FROM activite.p_sejours + LEFT JOIN activite.t_etat_sejour ON p_sejours.etat::text = t_etat_sejour.code + JOIN activite.t_ghm_c ON p_sejours.ghm_id = t_ghm_c.ghm_id + WHERE p_sejours.etat = ANY (ARRAY['A'::bpchar, 'C'::bpchar, 'R'::bpchar]); \ No newline at end of file diff --git a/db/schema2/views/v_sejours_budget_cle_1.yaml b/db/schema2/views/v_sejours_budget_cle_1.yaml new file mode 100644 index 0000000..c84ca55 --- /dev/null +++ b/db/schema2/views/v_sejours_budget_cle_1.yaml @@ -0,0 +1,10 @@ +src: | + SELECT p_sejours_budget_cle.sejour_id, + p_sejours_budget_cle.budget_cle_id, + t_budget_cle.code AS budget_cle_code, + t_budget_cle.texte AS budget_cle_texte, + t_budget_cle.section_id AS budget_cle_section_id, + t_budget_cle.section_code AS budget_cle_section_code, + t_budget_cle.section_texte AS budget_cle_section_texte + FROM activite.p_sejours_budget_cle + LEFT JOIN activite.t_budget_cle ON p_sejours_budget_cle.budget_cle_id = t_budget_cle.oid; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_etablissement_destination_1.yaml b/db/schema2/views/v_sejours_etablissement_destination_1.yaml new file mode 100644 index 0000000..1f88e53 --- /dev/null +++ b/db/schema2/views/v_sejours_etablissement_destination_1.yaml @@ -0,0 +1,7 @@ +src: | + SELECT p_sejours_transferts.sejour_id, + p_sejours_transferts.destination_id AS etablissement_destination_id, + t_etablissements.code AS etablissement_destination_code, + t_etablissements.texte AS etablissement_destination_texte + FROM activite.p_sejours_transferts + LEFT JOIN base.t_etablissements ON p_sejours_transferts.destination_id = t_etablissements.oid; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_etablissement_provenance_1.yaml b/db/schema2/views/v_sejours_etablissement_provenance_1.yaml new file mode 100644 index 0000000..dc3a7f5 --- /dev/null +++ b/db/schema2/views/v_sejours_etablissement_provenance_1.yaml @@ -0,0 +1,7 @@ +src: | + SELECT p_sejours_transferts.sejour_id, + p_sejours_transferts.provenance_id AS etablissement_provenance_id, + t_etablissements.code AS etablissement_provenance_code, + t_etablissements.texte AS etablissement_provenance_texte + FROM activite.p_sejours_transferts + LEFT JOIN base.t_etablissements ON p_sejours_transferts.provenance_id = t_etablissements.oid; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_finess_1.yaml b/db/schema2/views/v_sejours_finess_1.yaml new file mode 100644 index 0000000..36a7d78 --- /dev/null +++ b/db/schema2/views/v_sejours_finess_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_finess_c.oid AS finess_id, + t_finess_c.code AS finess_code, + t_finess_c.texte_court AS finess_texte, + t_finess_c.section_id AS finess_section_id, + t_finess_c.section_code AS finess_section_code, + t_finess_c.section_texte AS finess_section_texte + FROM activite.t_finess_c; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_ghm_1.yaml b/db/schema2/views/v_sejours_ghm_1.yaml new file mode 100644 index 0000000..d2ff132 --- /dev/null +++ b/db/schema2/views/v_sejours_ghm_1.yaml @@ -0,0 +1,26 @@ +src: | + SELECT t_ghm_c.ghm_id AS oid, + t_ghm_c.ghm_code, + t_ghm_c.ghm_texte, + t_ghm_c.ghm5_id, + t_ghm_c.ghm5_code, + t_ghm_c.ghm5_texte, + t_ghm_c.severite_ghm_id, + t_ghm_c.severite_ghm_code, + t_ghm_c.severite_ghm_texte, + t_ghm_c.cas_id, + t_ghm_c.cas_code, + t_ghm_c.cas_texte, + t_ghm_c.mco_id, + t_ghm_c.mco_code, + t_ghm_c.mco_texte, + t_ghm_c.cmd_id, + t_ghm_c.cmd_code, + t_ghm_c.cmd_texte, + t_ghm_c.mco_id AS mcos_id, + t_ghm_c.mco_code AS mcos_code, + t_ghm_c.mco_texte AS mcos_texte, + t_ghm_c.ghm_section_id, + t_ghm_c.ghm_section_code, + t_ghm_c.ghm_section_texte + FROM activite.t_ghm_c; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_ghmgme_1.yaml b/db/schema2/views/v_sejours_ghmgme_1.yaml new file mode 100644 index 0000000..f30e7f3 --- /dev/null +++ b/db/schema2/views/v_sejours_ghmgme_1.yaml @@ -0,0 +1,45 @@ +src: | + SELECT t_ghmgme_c.ghmgme_id, + t_ghmgme_c.ghmgme_code, + t_ghmgme_c.ghmgme_texte, + CASE + WHEN t_ghmgme_c.cmd_id IS NULL AND t_ghmgme_c.cm_id IS NOT NULL THEN t_ghmgme_c.cm_id + WHEN t_ghmgme_c.cmd_id IS NOT NULL AND t_ghmgme_c.cm_id IS NULL THEN t_ghmgme_c.cmd_id + WHEN t_ghmgme_c.ghmgme_id < 0 THEN (-9990)::bigint + ELSE 0::bigint + END AS cmdcm_id, + CASE + WHEN t_ghmgme_c.cmd_id IS NULL AND t_ghmgme_c.cm_id IS NOT NULL THEN t_ghmgme_c.cm_code + WHEN t_ghmgme_c.cmd_id IS NOT NULL AND t_ghmgme_c.cm_id IS NULL THEN t_ghmgme_c.cmd_code + WHEN t_ghmgme_c.ghmgme_id < 0 THEN '99'::text + ELSE t_ghmgme_c.ghmgme_code + END AS cmdcm_code, + CASE + WHEN t_ghmgme_c.cmd_id IS NULL AND t_ghmgme_c.cm_id IS NOT NULL THEN t_ghmgme_c.cm_texte + WHEN t_ghmgme_c.cmd_id IS NOT NULL AND t_ghmgme_c.cm_id IS NULL THEN t_ghmgme_c.cmd_texte + WHEN t_ghmgme_c.ghmgme_id < 0 THEN 'Hors GHM-GME'::text + ELSE t_ghmgme_c.ghmgme_texte + END AS cmdcm_texte, + CASE + WHEN t_ghmgme_c.ghm5_id IS NULL AND t_ghmgme_c.rgme_id IS NOT NULL THEN t_ghmgme_c.rgme_id + WHEN t_ghmgme_c.ghm5_id IS NOT NULL AND t_ghmgme_c.rgme_id IS NULL THEN t_ghmgme_c.ghm5_id + WHEN t_ghmgme_c.ghmgme_id < 0 THEN (-9990)::bigint + ELSE 0::bigint + END AS ghm5rgme_id, + CASE + WHEN t_ghmgme_c.ghm5_id IS NULL AND t_ghmgme_c.rgme_id IS NOT NULL THEN t_ghmgme_c.rgme_code + WHEN t_ghmgme_c.ghm5_id IS NOT NULL AND t_ghmgme_c.rgme_id IS NULL THEN t_ghmgme_c.ghm5_code + WHEN t_ghmgme_c.ghmgme_id < 0 THEN t_ghmgme_c.ghmgme_code + ELSE t_ghmgme_c.ghmgme_code + END AS ghm5rgme_code, + CASE + WHEN t_ghmgme_c.ghm5_id IS NULL AND t_ghmgme_c.rgme_id IS NOT NULL THEN t_ghmgme_c.rgme_texte + WHEN t_ghmgme_c.ghm5_id IS NOT NULL AND t_ghmgme_c.rgme_id IS NULL THEN t_ghmgme_c.ghm5_texte + WHEN t_ghmgme_c.ghmgme_id < 0 THEN t_ghmgme_c.ghmgme_texte + ELSE t_ghmgme_c.ghmgme_texte + END AS ghm5rgme_texte, + t_ghmgme_c.ghmgme_section_id, + t_ghmgme_c.ghmgme_section_code, + t_ghmgme_c.ghmgme_section_texte + FROM activite.t_ghmgme_c + ORDER BY t_ghmgme_c.ghmgme_id; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_ghs_1.yaml b/db/schema2/views/v_sejours_ghs_1.yaml new file mode 100644 index 0000000..012db36 --- /dev/null +++ b/db/schema2/views/v_sejours_ghs_1.yaml @@ -0,0 +1,7 @@ +src: | + SELECT t_ghs_c.ghs_id AS oid, + t_ghs_c.ghs_id, + to_char(t_ghs_c.ghs_code, 'FM0000'::text) AS ghs_code, + t_ghs_c.ghs_code_text, + t_ghs_c.ghs_texte + FROM activite.t_ghs_c; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_gme_1.yaml b/db/schema2/views/v_sejours_gme_1.yaml new file mode 100644 index 0000000..1f9e07d --- /dev/null +++ b/db/schema2/views/v_sejours_gme_1.yaml @@ -0,0 +1,17 @@ +src: | + SELECT t_gme_c.gme_id, + t_gme_c.gme_code || ' '::text AS gme_code, + t_gme_c.gme_texte, + t_gme_c.cm_id, + t_gme_c.cm_code, + t_gme_c.cm_texte, + t_gme_c.gn_id, + t_gme_c.gn_code, + t_gme_c.gn_texte, + t_gme_c.rgme_id, + t_gme_c.rgme_code, + t_gme_c.rgme_texte, + t_gme_c.gme_section_id, + t_gme_c.gme_section_code, + t_gme_c.gme_section_texte + FROM activite.t_gme_c; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_lieu_1.yaml b/db/schema2/views/v_sejours_lieu_1.yaml new file mode 100644 index 0000000..d97d95b --- /dev/null +++ b/db/schema2/views/v_sejours_lieu_1.yaml @@ -0,0 +1,47 @@ +src: | + SELECT t_lieux_c.oid, + t_lieux_c.mode_traitement_id, + t_lieux_c.mode_traitement_code, + t_lieux_c.mode_traitement_texte, + t_lieux_c.service_facturation_id AS lieu_sortie_service_id, + t_lieux_c.service_facturation_code AS lieu_sortie_service_code, + t_lieux_c.service_facturation_texte AS lieu_sortie_service_texte, + t_lieux_c.service_facturation_section_id AS lieu_sortie_service_section_id, + t_lieux_c.service_facturation_section_code AS lieu_sortie_service_section_code, + t_lieux_c.service_facturation_section_texte AS lieu_sortie_service_section_texte, + t_lieux_c.service_facturation_section_nb_lits AS lieu_sortie_service_section_nb_lits, + t_lieux_c.service_facturation_section_nb_cp AS lieu_sortie_service_section_nb_cp, + t_lieux_c.activite_id AS lieu_sortie_activite_id, + t_lieux_c.activite_code AS lieu_sortie_activite_code, + t_lieux_c.activite_texte AS lieu_sortie_activite_texte, + t_lieux_c.etage_id AS lieu_sortie_etage_id, + t_lieux_c.etage_code AS lieu_sortie_etage_code, + t_lieux_c.etage_texte AS lieu_sortie_etage_texte, + t_lieux_c.etage_section_id AS lieu_sortie_etage_section_id, + t_lieux_c.etage_section_code AS lieu_sortie_etage_section_code, + t_lieux_c.etage_section_texte AS lieu_sortie_etage_section_texte, + t_lieux_c.lit_id AS lieu_sortie_lit_id, + t_lieux_c.lit_code AS lieu_sortie_lit_code, + t_lieux_c.lit_texte AS lieu_sortie_lit_texte, + t_lieux_c.lit_section_id AS lieu_sortie_lit_section_id, + t_lieux_c.lit_section_code AS lieu_sortie_lit_section_code, + t_lieux_c.lit_section_texte AS lieu_sortie_lit_section_texte, + t_lieux_c.unite_medicale_id AS lieu_sortie_unite_medicale_id, + t_lieux_c.unite_medicale_code AS lieu_sortie_unite_medicale_code, + t_lieux_c.unite_medicale_texte AS lieu_sortie_unite_medicale_texte, + t_lieux_c.unite_medicale_section_id AS lieu_sortie_unite_medicale_section_id, + t_lieux_c.unite_medicale_section_code AS lieu_sortie_unite_medicale_section_code, + t_lieux_c.unite_medicale_section_texte AS lieu_sortie_unite_medicale_section_texte, + t_lieux_c.unite_fonctionnelle_id AS lieu_sortie_unite_fonctionnelle_id, + t_lieux_c.unite_fonctionnelle_code AS lieu_sortie_unite_fonctionnelle_code, + t_lieux_c.unite_fonctionnelle_texte AS lieu_sortie_unite_fonctionnelle_texte, + t_lieux_c.unite_fonctionnelle_section_id AS lieu_sortie_unite_fonctionnelle_section_id, + t_lieux_c.unite_fonctionnelle_section_code AS lieu_sortie_unite_fonctionnelle_section_code, + t_lieux_c.unite_fonctionnelle_section_texte AS lieu_sortie_unite_fonctionnelle_section_texte, + t_lieux_c.gir_id AS lieu_sortie_gir_id, + t_lieux_c.gir_code AS lieu_sortie_gir_code, + t_lieux_c.gir_texte AS lieu_sortie_gir_texte, + t_lieux_c.gir_section_id AS lieu_sortie_gir_section_id, + t_lieux_c.gir_section_code AS lieu_sortie_gir_section_code, + t_lieux_c.gir_section_texte AS lieu_sortie_gir_section_texte + FROM activite.t_lieux_c; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_medecin_1.yaml b/db/schema2/views/v_sejours_medecin_1.yaml new file mode 100644 index 0000000..4211046 --- /dev/null +++ b/db/schema2/views/v_sejours_medecin_1.yaml @@ -0,0 +1,18 @@ +src: | + SELECT t_medecins_administratifs_c.oid, + t_medecins_administratifs_c.adm_code AS medecin_adm_sejour_code, + t_medecins_administratifs_c.adm_nom AS medecin_adm_sejour_nom, + t_medecins_administratifs_c.adm_prenom AS medecin_adm_sejour_prenom, + t_medecins_administratifs_c.adm_nom_prenom AS medecin_adm_sejour_nom_prenom, + t_medecins_administratifs_c.section_id AS medecin_adm_sejour_section_id, + t_medecins_administratifs_c.section_code AS medecin_adm_sejour_section_code, + t_medecins_administratifs_c.section_texte AS medecin_adm_sejour_section_texte, + t_medecins_administratifs_c.medecin_id AS medecin_sejour_id, + t_medecins_administratifs_c.medecin_code AS medecin_sejour_code, + t_medecins_administratifs_c.nom AS medecin_sejour_nom, + t_medecins_administratifs_c.prenom AS medecin_sejour_prenom, + t_medecins_administratifs_c.nom_prenom AS medecin_sejour_nom_prenom, + t_medecins_administratifs_c.specialite_id AS medecin_sejour_specialite_id, + t_medecins_administratifs_c.specialite_code AS medecin_sejour_specialite_code, + t_medecins_administratifs_c.specialite_texte AS medecin_sejour_specialite_texte + FROM activite.t_medecins_administratifs_c; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_medecin_traitant_1.yaml b/db/schema2/views/v_sejours_medecin_traitant_1.yaml new file mode 100644 index 0000000..ecf2a66 --- /dev/null +++ b/db/schema2/views/v_sejours_medecin_traitant_1.yaml @@ -0,0 +1,19 @@ +src: | + SELECT t_medecins_traitants_administratifs.oid, + t_medecins_traitants_administratifs.code AS medecin_traitant_code, + t_medecins_traitants_administratifs.code_original AS medecin_traitant_code_original, + t_medecins_traitants_administratifs.nom AS medecin_traitant_nom, + t_medecins_traitants_administratifs.prenom AS medecin_traitant_prenom, + (t_medecins_traitants_administratifs.nom || ' '::text) || t_medecins_traitants_administratifs.prenom AS medecin_traitant_nom_prenom, + t_medecins_traitants_administratifs.statut AS medecin_traitant_statut, + t_medecins_traitants_administratifs.specialite_id AS medecin_traitant_specialite_id, + t_medecins_traitants_administratifs.is_medecin_sejour AS medecin_traitant_is_medecin_sejour, + t_medecins_traitants_administratifs.medecin_id AS medecin_traitant_medecin_id, + t_medecins_traitants_administratifs.is_medecin_executant AS medecin_traitant_is_medecin_executant, + t_medecins_traitants_administratifs.est_medecin_salarie AS medecin_traitant_est_medecin_salarie, + t_medecins_traitants_administratifs.no_adeli AS medecin_traitant_no_adeli, + t_medecins_traitants_administratifs.no_rpps AS medecin_traitant_no_rpps, + t_medecins_traitants_administratifs.code_postal_id AS medecin_traitant_code_postal_id, + t_medecins_traitants_administratifs.ville AS medecin_traitant_ville, + t_medecins_traitants_administratifs.adresse AS medecin_traitant_adresse + FROM activite.t_medecins_traitants_administratifs; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_parametres_personnalises_1.yaml b/db/schema2/views/v_sejours_parametres_personnalises_1.yaml new file mode 100644 index 0000000..fe828c2 --- /dev/null +++ b/db/schema2/views/v_sejours_parametres_personnalises_1.yaml @@ -0,0 +1,17 @@ +src: | + SELECT p_sejours_parametres_personnalises.sejour_id, + p_sejours_parametres_personnalises.parametre_personnalise_1_id, + t_parametre_personnalise_sejour_1.code AS parametre_personnalise_1_code, + t_parametre_personnalise_sejour_1.texte AS parametre_personnalise_1_texte, + t_parametre_personnalise_sejour_1.section_id AS parametre_personnalise_1_section_id, + t_parametre_personnalise_sejour_1.section_code AS parametre_personnalise_1_section_code, + t_parametre_personnalise_sejour_1.section_texte AS parametre_personnalise_1_section_texte, + p_sejours_parametres_personnalises.parametre_personnalise_2_id, + t_parametre_personnalise_sejour_2.code AS parametre_personnalise_2_code, + t_parametre_personnalise_sejour_2.texte AS parametre_personnalise_2_texte, + t_parametre_personnalise_sejour_2.section_id AS parametre_personnalise_2_section_id, + t_parametre_personnalise_sejour_2.section_code AS parametre_personnalise_2_section_code, + t_parametre_personnalise_sejour_2.section_texte AS parametre_personnalise_2_section_texte + FROM activite.p_sejours_parametres_personnalises + LEFT JOIN activite.t_parametre_personnalise_sejour_1 ON p_sejours_parametres_personnalises.parametre_personnalise_1_id = t_parametre_personnalise_sejour_1.oid + LEFT JOIN activite.t_parametre_personnalise_sejour_2 ON p_sejours_parametres_personnalises.parametre_personnalise_2_id = t_parametre_personnalise_sejour_2.oid; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_r_2.yaml b/db/schema2/views/v_sejours_r_2.yaml new file mode 100644 index 0000000..da8686e --- /dev/null +++ b/db/schema2/views/v_sejours_r_2.yaml @@ -0,0 +1,194 @@ +dep: + - v_sejours_1 +src: | + SELECT v_sejours_1.date_sortie AS date_reference, + v_sejours_1.lieu_sortie_service_id AS lieu_reference_service_id, + v_sejours_1.lieu_sortie_service_code AS lieu_reference_service_code, + v_sejours_1.lieu_sortie_service_texte AS lieu_reference_service_texte, + v_sejours_1.lieu_sortie_service_section_id AS lieu_reference_service_section_id, + v_sejours_1.lieu_sortie_service_section_code AS lieu_reference_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte AS lieu_reference_service_section_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_sejours_1.lieu_sortie_activite_id AS lieu_reference_activite_id, + v_sejours_1.lieu_sortie_activite_code AS lieu_reference_activite_code, + v_sejours_1.lieu_sortie_activite_texte AS lieu_reference_activite_texte, + v_sejours_1.lieu_sortie_etage_id AS lieu_reference_etage_id, + v_sejours_1.lieu_sortie_etage_code AS lieu_reference_etage_code, + v_sejours_1.lieu_sortie_etage_texte AS lieu_reference_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id AS lieu_reference_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code AS lieu_reference_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte AS lieu_reference_etage_section_texte, + v_sejours_1.lieu_sortie_unite_medicale_id AS lieu_reference_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code AS lieu_reference_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte AS lieu_reference_unite_medicale_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess_section_id, + v_sejours_1.finess_section_code, + v_sejours_1.finess_section_texte, + v_sejours_1.finess, + v_sejours_1.provider_id, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour_code, + v_sejours_1.est_budget_global, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.heure_entree, + v_sejours_1.mode_entree, + v_sejours_1.provenance, + v_sejours_1.code_sorti, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.heure_sortie, + v_sejours_1.mode_sortie, + v_sejours_1.destination, + v_sejours_1.code_cp_demandee, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.tiers_payant_0_id, + v_sejours_1.tiers_payant_1_id, + v_sejours_1.tiers_payant_2_id, + v_sejours_1.tiers_payant_22_id, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id, + v_sejours_1.medecin_adm_sejour_section_code, + v_sejours_1.medecin_adm_sejour_section_texte, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_code, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.medecin_sejour_specialite_id, + v_sejours_1.medecin_sejour_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte, + v_sejours_1.lieu_sortie_id, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_service_section_id, + v_sejours_1.lieu_sortie_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte, + v_sejours_1.lieu_sortie_service_section_nb_lits, + v_sejours_1.lieu_sortie_service_section_nb_cp, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte, + v_sejours_1.lieu_sortie_lit_id, + v_sejours_1.lieu_sortie_lit_code, + v_sejours_1.lieu_sortie_lit_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_sejours_1.lieu_sortie_unite_medicale_section_id, + v_sejours_1.lieu_sortie_unite_medicale_section_code, + v_sejours_1.lieu_sortie_unite_medicale_section_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_texte, + v_sejours_1.mois_groupage, + v_sejours_1.date_groupage, + v_sejours_1.nb_delai_groupage, + v_sejours_1.nb_groupe, + v_sejours_1.delai_groupage, + v_sejours_1.nb_non_groupe, + v_sejours_1.mois_facture, + v_sejours_1.date_facture, + v_sejours_1.nb_delai_facture, + v_sejours_1.delai_facture, + v_sejours_1.nb_non_facture, + v_sejours_1.mois_expedition, + v_sejours_1.date_expedition, + v_sejours_1.nb_delai_expedition, + v_sejours_1.nb_non_expedie, + v_sejours_1.montant_non_expedie, + v_sejours_1.delai_expedition, + v_sejours_1.mois_solde, + v_sejours_1.date_solde, + v_sejours_1.nb_delai_solde, + v_sejours_1.nb_non_solde, + v_sejours_1.montant_non_solde, + v_sejours_1.delai_solde, + v_sejours_1.montant_facture_c, + v_sejours_1.montant_facture_0_c, + v_sejours_1.montant_facture_1_c, + v_sejours_1.montant_facture_2_c, + v_sejours_1.montant_facture_22_c, + v_sejours_1.montant_facture_h, + v_sejours_1.montant_facture_0_h, + v_sejours_1.montant_facture_1_h, + v_sejours_1.montant_facture_2_h, + v_sejours_1.montant_facture_22_h, + v_sejours_1.montant_facture_c_actes_inclus_dans_sejour, + v_sejours_1.montant_facture_h_actes_inclus_dans_sejour, + v_sejours_1.montant_comptabilise_c, + v_sejours_1.montant_comptabilise_h, + v_sejours_1.montant_comptabilise_budget_global_c, + v_sejours_1.montant_regle_c, + v_sejours_1.montant_regle_h, + v_sejours_1.nb_sejours, + v_sejours_1.nb_factures, + v_sejours_1.nb_factures_regularisation, + v_sejours_1.nb_factures_rejet, + v_sejours_1.no_oid, + v_sejours_1.duree AS duree_sejour, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.mcos_id + FROM activite.v_sejours_1; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_r_5.yaml b/db/schema2/views/v_sejours_r_5.yaml new file mode 100644 index 0000000..0fcf836 --- /dev/null +++ b/db/schema2/views/v_sejours_r_5.yaml @@ -0,0 +1,194 @@ +dep: + - v_sejours_1 +src: | + SELECT v_sejours_1.date_groupage AS date_reference, + v_sejours_1.lieu_sortie_service_id AS lieu_reference_service_id, + v_sejours_1.lieu_sortie_service_code AS lieu_reference_service_code, + v_sejours_1.lieu_sortie_service_texte AS lieu_reference_service_texte, + v_sejours_1.lieu_sortie_service_section_id AS lieu_reference_service_section_id, + v_sejours_1.lieu_sortie_service_section_code AS lieu_reference_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte AS lieu_reference_service_section_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_id AS lieu_reference_unite_fonctionnelle_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_code AS lieu_reference_unite_fonctionnelle_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_texte AS lieu_reference_unite_fonctionnelle_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_id AS lieu_reference_unite_fonctionnelle_section_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_code AS lieu_reference_unite_fonctionnelle_section_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_texte AS lieu_reference_unite_fonctionnelle_section_texte, + v_sejours_1.lieu_sortie_activite_id AS lieu_reference_activite_id, + v_sejours_1.lieu_sortie_activite_code AS lieu_reference_activite_code, + v_sejours_1.lieu_sortie_activite_texte AS lieu_reference_activite_texte, + v_sejours_1.lieu_sortie_etage_id AS lieu_reference_etage_id, + v_sejours_1.lieu_sortie_etage_code AS lieu_reference_etage_code, + v_sejours_1.lieu_sortie_etage_texte AS lieu_reference_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id AS lieu_reference_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code AS lieu_reference_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte AS lieu_reference_etage_section_texte, + v_sejours_1.lieu_sortie_unite_medicale_id AS lieu_reference_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code AS lieu_reference_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte AS lieu_reference_unite_medicale_texte, + v_sejours_1.medecin_adm_sejour_id AS medecin_adm_reference_id, + v_sejours_1.medecin_adm_sejour_code AS medecin_adm_reference_code, + v_sejours_1.medecin_adm_sejour_nom AS medecin_adm_reference_nom, + v_sejours_1.medecin_adm_sejour_prenom AS medecin_adm_reference_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom AS medecin_adm_reference_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id AS medecin_adm_reference_section_id, + v_sejours_1.medecin_adm_sejour_section_code AS medecin_adm_reference_section_code, + v_sejours_1.medecin_adm_sejour_section_texte AS medecin_adm_reference_section_texte, + v_sejours_1.medecin_sejour_specialite_id AS medecin_reference_specialite_id, + v_sejours_1.medecin_sejour_specialite_code AS medecin_reference_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte AS medecin_reference_specialite_texte, + v_sejours_1.medecin_sejour_id AS medecin_reference_id, + v_sejours_1.medecin_sejour_code AS medecin_reference_code, + v_sejours_1.medecin_sejour_nom AS medecin_reference_nom, + v_sejours_1.medecin_sejour_prenom AS medecin_reference_prenom, + v_sejours_1.medecin_sejour_nom_prenom AS medecin_reference_nom_prenom, + v_sejours_1.finess_id, + v_sejours_1.finess_code, + v_sejours_1.finess_texte, + v_sejours_1.finess_section_id, + v_sejours_1.finess_section_code, + v_sejours_1.finess_section_texte, + v_sejours_1.finess, + v_sejours_1.provider_id, + v_sejours_1.no_sejour, + v_sejours_1.sejour_id, + v_sejours_1.no_patient, + v_sejours_1.code_sexe, + v_sejours_1.sexe_texte_court, + v_sejours_1.age, + v_sejours_1.code_prevu, + v_sejours_1.type_sejour, + v_sejours_1.type_sejour AS type_sejour_code, + v_sejours_1.est_budget_global, + v_sejours_1.type_sejour_id, + v_sejours_1.type_sejour_texte, + v_sejours_1.mode_traitement_id, + v_sejours_1.mode_traitement_code, + v_sejours_1.mode_traitement_texte, + v_sejours_1.mois_entree, + v_sejours_1.date_entree, + v_sejours_1.heure_entree, + v_sejours_1.mode_entree, + v_sejours_1.provenance, + v_sejours_1.code_sorti, + v_sejours_1.mois_sortie, + v_sejours_1.date_sortie, + v_sejours_1.heure_sortie, + v_sejours_1.mode_sortie, + v_sejours_1.destination, + v_sejours_1.code_cp_demandee, + v_sejours_1.ghs_id, + v_sejours_1.ghs_code, + v_sejours_1.ghs_texte, + v_sejours_1.tiers_payant_0_id, + v_sejours_1.tiers_payant_1_id, + v_sejours_1.tiers_payant_2_id, + v_sejours_1.tiers_payant_22_id, + v_sejours_1.medecin_adm_sejour_id, + v_sejours_1.medecin_adm_sejour_code, + v_sejours_1.medecin_adm_sejour_nom, + v_sejours_1.medecin_adm_sejour_prenom, + v_sejours_1.medecin_adm_sejour_nom_prenom, + v_sejours_1.medecin_adm_sejour_section_id, + v_sejours_1.medecin_adm_sejour_section_code, + v_sejours_1.medecin_adm_sejour_section_texte, + v_sejours_1.medecin_sejour_id, + v_sejours_1.medecin_sejour_code, + v_sejours_1.medecin_sejour_nom, + v_sejours_1.medecin_sejour_prenom, + v_sejours_1.medecin_sejour_nom_prenom, + v_sejours_1.medecin_sejour_specialite_id, + v_sejours_1.medecin_sejour_specialite_code, + v_sejours_1.medecin_sejour_specialite_texte, + v_sejours_1.lieu_sortie_id, + v_sejours_1.lieu_sortie_service_id, + v_sejours_1.lieu_sortie_service_code, + v_sejours_1.lieu_sortie_service_texte, + v_sejours_1.lieu_sortie_service_section_id, + v_sejours_1.lieu_sortie_service_section_code, + v_sejours_1.lieu_sortie_service_section_texte, + v_sejours_1.lieu_sortie_service_section_nb_lits, + v_sejours_1.lieu_sortie_service_section_nb_cp, + v_sejours_1.lieu_sortie_activite_id, + v_sejours_1.lieu_sortie_activite_code, + v_sejours_1.lieu_sortie_activite_texte, + v_sejours_1.lieu_sortie_etage_id, + v_sejours_1.lieu_sortie_etage_code, + v_sejours_1.lieu_sortie_etage_texte, + v_sejours_1.lieu_sortie_etage_section_id, + v_sejours_1.lieu_sortie_etage_section_code, + v_sejours_1.lieu_sortie_etage_section_texte, + v_sejours_1.lieu_sortie_lit_id, + v_sejours_1.lieu_sortie_lit_code, + v_sejours_1.lieu_sortie_lit_texte, + v_sejours_1.lieu_sortie_unite_medicale_id, + v_sejours_1.lieu_sortie_unite_medicale_code, + v_sejours_1.lieu_sortie_unite_medicale_texte, + v_sejours_1.lieu_sortie_unite_medicale_section_id, + v_sejours_1.lieu_sortie_unite_medicale_section_code, + v_sejours_1.lieu_sortie_unite_medicale_section_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_texte, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_id, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_code, + v_sejours_1.lieu_sortie_unite_fonctionnelle_section_texte, + v_sejours_1.mois_groupage, + v_sejours_1.date_groupage, + v_sejours_1.nb_delai_groupage, + v_sejours_1.nb_groupe, + v_sejours_1.delai_groupage, + v_sejours_1.nb_non_groupe, + v_sejours_1.mois_facture, + v_sejours_1.date_facture, + v_sejours_1.nb_delai_facture, + v_sejours_1.delai_facture, + v_sejours_1.nb_non_facture, + v_sejours_1.mois_expedition, + v_sejours_1.date_expedition, + v_sejours_1.nb_delai_expedition, + v_sejours_1.nb_non_expedie, + v_sejours_1.montant_non_expedie, + v_sejours_1.delai_expedition, + v_sejours_1.mois_solde, + v_sejours_1.date_solde, + v_sejours_1.nb_delai_solde, + v_sejours_1.nb_non_solde, + v_sejours_1.montant_non_solde, + v_sejours_1.delai_solde, + v_sejours_1.montant_facture_c, + v_sejours_1.montant_facture_0_c, + v_sejours_1.montant_facture_1_c, + v_sejours_1.montant_facture_2_c, + v_sejours_1.montant_facture_22_c, + v_sejours_1.montant_facture_h, + v_sejours_1.montant_facture_0_h, + v_sejours_1.montant_facture_1_h, + v_sejours_1.montant_facture_2_h, + v_sejours_1.montant_facture_22_h, + v_sejours_1.montant_facture_c_actes_inclus_dans_sejour, + v_sejours_1.montant_facture_h_actes_inclus_dans_sejour, + v_sejours_1.montant_comptabilise_c, + v_sejours_1.montant_comptabilise_h, + v_sejours_1.montant_comptabilise_budget_global_c, + v_sejours_1.montant_regle_c, + v_sejours_1.montant_regle_h, + v_sejours_1.nb_sejours, + v_sejours_1.nb_factures, + v_sejours_1.nb_factures_regularisation, + v_sejours_1.nb_factures_rejet, + v_sejours_1.no_oid, + v_sejours_1.duree AS duree_sejour, + v_sejours_1.ghm_id, + v_sejours_1.ghm_code, + v_sejours_1.ghm_texte, + v_sejours_1.mco_id, + v_sejours_1.mco_code, + v_sejours_1.mco_texte, + v_sejours_1.cmd_id, + v_sejours_1.cmd_code, + v_sejours_1.cmd_texte, + v_sejours_1.mcos_code, + v_sejours_1.mcos_texte, + v_sejours_1.mcos_id + FROM activite.v_sejours_1; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_test_join.yaml b/db/schema2/views/v_sejours_test_join.yaml new file mode 100644 index 0000000..fa91a88 --- /dev/null +++ b/db/schema2/views/v_sejours_test_join.yaml @@ -0,0 +1,29 @@ +dep: + - v_ages_1 + - v_codes_postaux_2 + - v_destinations_sortie_1 + - v_durees_sejour_1 + - v_modes_entree_1 + - v_modes_sortie_1 + - v_provenances_entree_1 + - v_sejours_1 + - v_sejours_ghm_1 + - v_sejours_ghs_1 + - v_sejours_lieu_1 + - v_sejours_medecin_1 + - v_sejours_type_sejour_1 +src: | + SELECT v_sejours_1.sejour_id + FROM activite.v_sejours_1 + JOIN activite.v_durees_sejour_1 ON v_sejours_1.duree = v_durees_sejour_1.duree_sejour_id + JOIN activite.v_ages_1 ON v_sejours_1.age = v_ages_1.age_id::numeric + JOIN activite.v_codes_postaux_2 ON v_sejours_1.code_postal_id = v_codes_postaux_2.code_postal_id + JOIN activite.v_modes_entree_1 ON v_modes_entree_1.mode_entree_code = v_sejours_1.mode_entree + JOIN activite.v_modes_sortie_1 ON v_modes_sortie_1.mode_sortie_code = v_sejours_1.mode_sortie + JOIN activite.v_provenances_entree_1 ON v_provenances_entree_1.provenance_code = v_sejours_1.provenance + JOIN activite.v_destinations_sortie_1 ON v_destinations_sortie_1.destination_code = v_sejours_1.destination + JOIN activite.v_sejours_ghm_1 ON v_sejours_ghm_1.oid = v_sejours_1.ghm_id + JOIN activite.v_sejours_ghs_1 ON v_sejours_ghs_1.oid = v_sejours_1.ghs_id + JOIN activite.v_sejours_medecin_1 ON v_sejours_medecin_1.oid = v_sejours_1.medecin_adm_sejour_id + JOIN activite.v_sejours_type_sejour_1 ON v_sejours_type_sejour_1.type_sejour_code = v_sejours_1.type_sejour + JOIN activite.v_sejours_lieu_1 ON v_sejours_lieu_1.oid = v_sejours_1.lieu_sortie_id; \ No newline at end of file diff --git a/db/schema2/views/v_sejours_type_sejour_1.yaml b/db/schema2/views/v_sejours_type_sejour_1.yaml new file mode 100644 index 0000000..815fcf1 --- /dev/null +++ b/db/schema2/views/v_sejours_type_sejour_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_type_sejour.oid AS type_sejour_id, + t_type_sejour.code AS type_sejour_code, + t_type_sejour.texte AS type_sejour_texte, + t_type_sejour.section_id AS type_sejour_section_id, + t_type_sejour.section_code AS type_sejour_section_code, + t_type_sejour.section_texte AS type_sejour_section_texte + FROM activite.t_type_sejour; \ No newline at end of file diff --git a/db/schema2/views/v_services_facturation_1.yaml b/db/schema2/views/v_services_facturation_1.yaml new file mode 100644 index 0000000..289a7b9 --- /dev/null +++ b/db/schema2/views/v_services_facturation_1.yaml @@ -0,0 +1,8 @@ +src: | + SELECT t_services_facturation.oid, + (t_services_facturation.code || ' '::text) || t_services_facturation.texte_court AS texte + FROM activite.t_services_facturation + WHERE (t_services_facturation.oid IN ( SELECT DISTINCT t_lieux_c.service_facturation_id + FROM activite.t_lieux_c + ORDER BY t_lieux_c.service_facturation_id)) + ORDER BY t_services_facturation.texte_court; \ No newline at end of file diff --git a/db/schema2/views/v_services_facturation_2.yaml b/db/schema2/views/v_services_facturation_2.yaml new file mode 100644 index 0000000..30df022 --- /dev/null +++ b/db/schema2/views/v_services_facturation_2.yaml @@ -0,0 +1,68 @@ +dep: + - v_listes_1 +src: | + ( + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.liste_alias_combo AS alias, + v_listes_1.texte, + ('0'::text || v_listes_1.sort) || chr(1) AS code, + v_listes_1.lvl AS level, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'SERVICE_F'::text AND v_listes_1.lvl <> '0'::text + UNION ALL ( + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + ''::text AS alias, + t_classes.texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS code, + '1'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'SERVICE_F'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + ('#LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.code AS alias, + t_classes_sections.texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS code, + '2'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'SERVICE_F'::text + ) + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + ''::text AS alias, + 'Section non attribuée'::character varying AS texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS code, + '2'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'SERVICE_F'::text + ) UNION + SELECT 'SF'::text || t_services_facturation.oid::text AS oid, + '#SF'::text || t_services_facturation.code AS alias, + (t_services_facturation.code || ' '::text) || t_services_facturation.texte_court AS texte, + '9'::text || t_services_facturation.code AS code, + '1'::text AS level, + '0'::character(1) AS is_cti + FROM activite.t_services_facturation + WHERE t_services_facturation.oid > 0 AND (t_services_facturation.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'service'::text)) + ORDER BY 4, 1, 3; \ No newline at end of file diff --git a/db/schema2/views/v_tiers_payant_1.yaml b/db/schema2/views/v_tiers_payant_1.yaml new file mode 100644 index 0000000..2e31fb3 --- /dev/null +++ b/db/schema2/views/v_tiers_payant_1.yaml @@ -0,0 +1,18 @@ +src: | + SELECT 'G'::text || t_types_tiers_payant.code::text AS oid, + (t_types_tiers_payant.code::text || ' - '::text) || t_types_tiers_payant.texte AS texte, + t_types_tiers_payant.code AS type_tiers_payant, + ''::text AS code_tiers_payant, + '1'::text AS level + FROM activite.t_types_tiers_payant + UNION + SELECT 'T'::text || t_tiers_payant.oid::text AS oid, + (t_tiers_payant.code || ' - '::text) || t_tiers_payant.texte AS texte, + t_tiers_payant.type_tiers_payant, + t_tiers_payant.code AS code_tiers_payant, + '2'::text AS level + FROM activite.t_tiers_payant + WHERE t_tiers_payant.oid <> 0 AND (t_tiers_payant.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'tiers_payant'::text)) + ORDER BY 3, 4; \ No newline at end of file diff --git a/db/schema2/views/v_tiers_payant_2.yaml b/db/schema2/views/v_tiers_payant_2.yaml new file mode 100644 index 0000000..329d1d4 --- /dev/null +++ b/db/schema2/views/v_tiers_payant_2.yaml @@ -0,0 +1,81 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS sort, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'TIERSP'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '1'::text AS level, + '7'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'TIERSP'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + '2'::text AS level, + '7'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'TIERSP'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + '2'::text AS level, + '7'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS sort, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'TIERSP'::text + UNION ALL + SELECT '-8'::text AS oid, + 'Grands régimes'::character varying AS texte, + '1'::text AS level, + '80'::text AS sort, + '0'::character(1) AS is_cti + UNION ALL + SELECT 'RG'::text || t_grands_regimes.oid::text AS oid, + (t_grands_regimes.code || ' '::text) || t_grands_regimes.texte_court AS texte, + '2'::text AS level, + '81'::text || t_grands_regimes.code AS sort, + '0'::character(1) AS is_cti + FROM base.t_grands_regimes + UNION ALL + SELECT 'TT'::text || t_types_tiers_payant.code::text AS oid, + (t_types_tiers_payant.code::text || ' '::text) || t_types_tiers_payant.texte_court AS texte, + '1'::text AS level, + '9'::text || t_types_tiers_payant.code::text AS sort, + '0'::character(1) AS is_cti + FROM activite.t_types_tiers_payant + UNION ALL + SELECT 'TP'::text || t_tiers_payant.oid::text AS oid, + (t_tiers_payant.code || ' '::text) || t_tiers_payant.texte_court AS texte, + '2'::text AS level, + ('9'::text || t_tiers_payant.type_tiers_payant::text) || t_tiers_payant.code AS sort, + '0'::character(1) AS is_cti + FROM activite.t_tiers_payant + WHERE t_tiers_payant.oid <> 0 AND (t_tiers_payant.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'tiers_payant'::text)) + ORDER BY 4; \ No newline at end of file diff --git a/db/schema2/views/v_traitement_epmsi_1.yaml b/db/schema2/views/v_traitement_epmsi_1.yaml new file mode 100644 index 0000000..70614eb --- /dev/null +++ b/db/schema2/views/v_traitement_epmsi_1.yaml @@ -0,0 +1,5 @@ +src: | + SELECT t_traitement_epmsi.oid AS to_traitement_epmsi_id, + t_traitement_epmsi.code AS traitement_epmsi_code, + t_traitement_epmsi.texte AS traitement_epmsi_texte + FROM activite.t_traitement_epmsi; \ No newline at end of file diff --git a/db/schema2/views/v_type_sejour_1.yaml b/db/schema2/views/v_type_sejour_1.yaml new file mode 100644 index 0000000..a8b757f --- /dev/null +++ b/db/schema2/views/v_type_sejour_1.yaml @@ -0,0 +1,70 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + ''::text AS code, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS tri, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE 1 = 1 AND v_listes_1.table_code = 'TYPESEJOUR'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + ''::text AS code, + '1'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE 1 = 1 AND t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'TYPESEJOUR'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + ''::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE 1 = 1 AND t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'TYPESEJOUR'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + ''::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE 1 = 1 AND t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'TYPESEJOUR'::text + UNION ALL + SELECT 'DT'::text || t_type_sejour.oid::text AS oid, + t_type_sejour.texte, + t_type_sejour.code, + '1'::text AS level, + '9'::text || t_type_sejour.code AS tri, + '0'::character(1) AS is_cti + FROM activite.t_type_sejour + UNION ALL + SELECT 'DT12'::text AS oid, + 'Hospitalisés et Ambulatoires'::character varying AS texte, + '12'::text AS code, + '1'::text AS level, + '9'::text || '12'::text AS tri, + '0'::character(1) AS is_cti + ORDER BY 5; \ No newline at end of file diff --git a/db/schema2/views/v_ucd_1.yaml b/db/schema2/views/v_ucd_1.yaml new file mode 100644 index 0000000..2d53eca --- /dev/null +++ b/db/schema2/views/v_ucd_1.yaml @@ -0,0 +1,124 @@ +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + ''::text AS code, + v_listes_1.lvl AS level, + ('0'::text || v_listes_1.sort) || chr(1) AS tri, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM base.v_listes_1 + WHERE v_listes_1.table_code = 'UCD'::text AND v_listes_1.lvl <> '0'::text + UNION ALL + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + ''::text AS code, + '1'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM base.t_classes, + base.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'UCD'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + ''::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM base.t_classes, + base.t_classes_sections, + base.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'UCD'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + ''::text AS code, + '2'::text AS level, + '5'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS tri, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM base.t_classes, + base.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'UCD'::text + UNION ALL + SELECT 'D1'::text || t_ucd_c.classification_atc_1_id::text AS oid, + max((t_ucd_c.classification_atc_1_code::text || ' '::text) || t_ucd_c.classification_atc_1_texte::text) AS texte, + ''::text AS code, + '1'::text AS level, + max('6'::text || rpad(t_ucd_c.classification_atc_1_code::text, 10, ' '::text)) AS tri, + '0'::bpchar AS is_cti + FROM activite.t_ucd_c + WHERE t_ucd_c.classification_atc_id <> 0 AND (t_ucd_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ucd'::text)) + GROUP BY ('D1'::text || t_ucd_c.classification_atc_1_id::text) + UNION ALL + SELECT 'D2'::text || t_ucd_c.classification_atc_2_id::text AS oid, + max((t_ucd_c.classification_atc_2_code::text || ' '::text) || t_ucd_c.classification_atc_2_texte::text) AS texte, + ''::text AS code, + '2'::text AS level, + max(('6'::text || rpad(t_ucd_c.classification_atc_1_code::text, 10, ' '::text)) || rpad(t_ucd_c.classification_atc_2_code::text, 10, ' '::text)) AS tri, + '0'::bpchar AS is_cti + FROM activite.t_ucd_c + WHERE t_ucd_c.classification_atc_id <> 0 AND (t_ucd_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ucd'::text)) + GROUP BY ('D2'::text || t_ucd_c.classification_atc_2_id::text) + UNION ALL + SELECT 'D3'::text || t_ucd_c.classification_atc_3_id::text AS oid, + max((t_ucd_c.classification_atc_3_code::text || ' '::text) || t_ucd_c.classification_atc_3_texte::text) AS texte, + ''::text AS code, + '3'::text AS level, + max((('6'::text || rpad(t_ucd_c.classification_atc_1_code::text, 10, ' '::text)) || rpad(t_ucd_c.classification_atc_2_code::text, 10, ' '::text)) || rpad(t_ucd_c.classification_atc_3_code::text, 10, ' '::text)) AS tri, + '0'::bpchar AS is_cti + FROM activite.t_ucd_c + WHERE t_ucd_c.classification_atc_id <> 0 AND (t_ucd_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ucd'::text)) + GROUP BY ('D3'::text || t_ucd_c.classification_atc_3_id::text) + UNION ALL + SELECT 'D4'::text || t_ucd_c.classification_atc_4_id::text AS oid, + max((t_ucd_c.classification_atc_4_code::text || ' '::text) || t_ucd_c.classification_atc_4_texte::text) AS texte, + ''::text AS code, + '4'::text AS level, + max(((('6'::text || rpad(t_ucd_c.classification_atc_1_code::text, 10, ' '::text)) || rpad(t_ucd_c.classification_atc_2_code::text, 10, ' '::text)) || rpad(t_ucd_c.classification_atc_3_code::text, 10, ' '::text)) || rpad(t_ucd_c.classification_atc_4_code::text, 10, ' '::text)) AS tri, + '0'::bpchar AS is_cti + FROM activite.t_ucd_c + WHERE t_ucd_c.classification_atc_id <> 0 AND (t_ucd_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ucd'::text)) + GROUP BY ('D4'::text || t_ucd_c.classification_atc_4_id::text) + UNION ALL + SELECT 'D5'::text || t_ucd_c.classification_atc_id::text AS oid, + max((t_ucd_c.classification_atc_code::text || ' '::text) || t_ucd_c.classification_atc_texte::text) AS texte, + ''::text AS code, + '5'::text AS level, + max((((('6'::text || rpad(t_ucd_c.classification_atc_1_code::text, 10, ' '::text)) || rpad(t_ucd_c.classification_atc_2_code::text, 10, ' '::text)) || rpad(t_ucd_c.classification_atc_3_code::text, 10, ' '::text)) || rpad(t_ucd_c.classification_atc_4_code::text, 10, ' '::text)) || rpad(t_ucd_c.classification_atc_code::text, 10, ' '::text)) AS tri, + '0'::bpchar AS is_cti + FROM activite.t_ucd_c + WHERE t_ucd_c.classification_atc_id <> 0 AND (t_ucd_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ucd'::text)) + GROUP BY ('D5'::text || t_ucd_c.classification_atc_id::text) + UNION ALL + SELECT 'DT'::text || t_ucd_c.oid::text AS oid, + (t_ucd_c.code || ' '::text) || t_ucd_c.texte_court AS texte, + t_ucd_c.code, + '1'::text AS level, + '9'::text || t_ucd_c.code AS tri, + '0'::character(1) AS is_cti + FROM activite.t_ucd_c + WHERE (t_ucd_c.oid IN ( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'ucd'::text)) + ORDER BY 5; \ No newline at end of file diff --git a/db/schema2/views/v_unites_fonctionnelles_2.yaml b/db/schema2/views/v_unites_fonctionnelles_2.yaml new file mode 100644 index 0000000..0a588f2 --- /dev/null +++ b/db/schema2/views/v_unites_fonctionnelles_2.yaml @@ -0,0 +1,63 @@ +dep: + - v_listes_1 +src: | + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + ('0'::text || v_listes_1.sort) || chr(1) AS code, + v_listes_1.lvl AS level, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'UF'::text AND v_listes_1.lvl <> '0'::text + UNION ALL ( + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS code, + '1'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'UF'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS code, + '2'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'UF'::text + ) + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS code, + '2'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'UF'::text + UNION ALL + SELECT 'UF'::text || t_unites_fonctionnelles.oid::text AS oid, + (t_unites_fonctionnelles.code || ' '::text) || t_unites_fonctionnelles.texte_court AS texte, + '9'::text || t_unites_fonctionnelles.code AS code, + '1'::text AS level, + '0'::character(1) AS is_cti + FROM activite.t_unites_fonctionnelles + WHERE t_unites_fonctionnelles.oid > 0 AND (t_unites_fonctionnelles.oid = ANY ((ARRAY( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'uf'::text + GROUP BY p_oids.oid)))) + ORDER BY 3, 1, 2; \ No newline at end of file diff --git a/db/schema2/views/v_unites_medicales_2.yaml b/db/schema2/views/v_unites_medicales_2.yaml new file mode 100644 index 0000000..4a4df85 --- /dev/null +++ b/db/schema2/views/v_unites_medicales_2.yaml @@ -0,0 +1,64 @@ +dep: + - v_listes_1 +src: | + ( + SELECT v_listes_1.liste_id_combo AS oid, + v_listes_1.texte, + ('0'::text || v_listes_1.sort) || chr(1) AS code, + v_listes_1.lvl AS level, + CASE + WHEN v_listes_1.is_cti = '1'::text OR v_listes_1.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.v_listes_1 + WHERE v_listes_1.table_code = 'UM'::text AND v_listes_1.lvl <> '0'::text + UNION ALL ( + SELECT ('LC'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes.oid::text AS oid, + t_classes.texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text)) AS code, + '1'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'UM'::text + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || t_classes_sections.oid::text AS oid, + t_classes_sections.texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || t_classes_sections.code) AS code, + '2'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_classes_sections, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_classes_sections.classe_id = t_classes.oid AND t_listes_tables.code = 'UM'::text + ) + UNION ALL + SELECT ('LS'::text || lpad(t_classes.sequence::text, 2, '0'::text)) || '0'::text AS oid, + 'Section non attribuée'::character varying AS texte, + '2'::text || btrim(rpad(lpad(t_classes.sequence::text, 2, '0'::text), 10, ' '::text) || chr(255)) AS code, + '2'::text AS level, + CASE + WHEN t_classes.is_cti = '1'::bpchar OR t_classes.code ~~ 'CTI_%'::text THEN '1'::character(1) + ELSE '0'::character(1) + END AS is_cti + FROM activite.t_classes, + activite.t_listes_tables + WHERE t_classes.table_id = t_listes_tables.oid AND t_listes_tables.code = 'UM'::text + ) UNION + SELECT 'UM'::text || t_unites_medicales.oid::text AS oid, + (t_unites_medicales.code || ' '::text) || t_unites_medicales.texte_court AS texte, + '9'::text || t_unites_medicales.code AS code, + '1'::text AS level, + '0'::character(1) AS is_cti + FROM activite.t_unites_medicales + WHERE t_unites_medicales.oid > 0 AND (t_unites_medicales.oid = ANY ((ARRAY( SELECT p_oids.oid + FROM activite.p_oids + WHERE p_oids.code_table = 'um'::text + GROUP BY p_oids.oid)))) + ORDER BY 3, 1, 2; \ No newline at end of file diff --git a/dokuwiki/pages/activite/activite_facturee_et_valorisee/activite_clinique/acti000061.txt b/dokuwiki/pages/activite/activite_facturee_et_valorisee/activite_clinique/acti000061.txt new file mode 100755 index 0000000..21aebb1 --- /dev/null +++ b/dokuwiki/pages/activite/activite_facturee_et_valorisee/activite_clinique/acti000061.txt @@ -0,0 +1,23 @@ +====== Doc. Activité facturée et valorisée clinique ====== + +//[[_wiki_utilisateur_perso:activite_facturee_et_valorisee_aa99aa_activite_clinique_aa99aa_acti000061|(Créez votre propre commentaire)]]// +{{page>_wiki_utilisateur_perso:activite_facturee_et_valorisee_aa99aa_activite_clinique_aa99aa_acti000061}} + + +Les vues du thème Activité Facturée et Valorisée€ permettent d'analyser la décomposition du Chiffre d'affaires Clinique des dossiers sur une période . + +Ce CA contrairement à celui issu du module PMSI tient compte de l'intégralité des montants facturés dans la partie haute du S3404 (suppléments compris) partie mutuelle et patient également. + +Le chiffre peut être calculé sur l'Activité réelle de la période ( du 1er au 31) avec un prorata de la facture sur cette période . + +On peut calculer aussi le chiffre d'affaires par rapport a la date de sortie du dossiers comme dans le Pmsi par exemple. la totalité du chiffre d'affaires du dossier est alors prise en compte dans le mois ou le dossier est sorti. + +On peut également analyser le chiffre d'affaires sur la date de facture ou sur la date des ventes ce qui correspond aux montants comptabilisés ( journal des ventes) + +On peut analyser les dossiers facturés ou bien les sortis non facturés et les présents. + +Dans le cas ou le dossier n'est pas facturé Cti le valorise suivant un prix moyen en fonction du type de dossier, du médecin responsable et de la durée (voir doc … PONG\ctisante\NonEBP\Opérationnel\Documentation\Valorisation sorties non facturées) + + + + diff --git a/dokuwiki/pages/activite/activite_facturee_et_valorisee/activite_clinique/start.txt b/dokuwiki/pages/activite/activite_facturee_et_valorisee/activite_clinique/start.txt new file mode 100644 index 0000000..41a5cf3 --- /dev/null +++ b/dokuwiki/pages/activite/activite_facturee_et_valorisee/activite_clinique/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>10}} +====== Activité - Clinique ====== + diff --git a/dokuwiki/pages/activite/activite_facturee_et_valorisee/activite_honoraire/acti000078.txt b/dokuwiki/pages/activite/activite_facturee_et_valorisee/activite_honoraire/acti000078.txt new file mode 100755 index 0000000..4e8e678 --- /dev/null +++ b/dokuwiki/pages/activite/activite_facturee_et_valorisee/activite_honoraire/acti000078.txt @@ -0,0 +1,19 @@ +====== Doc. Activité facturée et valorisée honoraires ====== + + +//[[_wiki_utilisateur_perso:activite_facturee_et_valorisee_aa99aa_activite_honoraire_aa99aa_acti000078|(Créez votre propre commentaire)]]// +{{page>_wiki_utilisateur_perso:activite_facturee_et_valorisee_aa99aa_activite_honoraire_aa99aa_acti000078}} + + +Les vues du thème "Activité Facturée " permettent d'analyser la décomposition du Chiffre d'affaires Honoraire des dossiers sur une période . + +Ce CA contrairement à celui issu du module PMSI tient compte de **l'intégralité des montants facturés dans la partie basse du S3404** (dépassements compris) partie mutuelle et patient également. + +Le chiffre peut être calculé sur l'**Activité** réelle de la période ( du 1er au 31) avec un prorata de la facture sur cette période . + +On peut calculer aussi le chiffre d'affaires par rapport a **la date de sortie** du dossiers comme dans le Pmsi par exemple. la totalité du chiffre d'affaires du dossier est alors prise en compte dans le mois ou le dossier est sorti. + +On peut également analyser le chiffre d'affaires sur **la date de facture** ou sur **la date des ventes** ce qui correspond aux montants comptabilisés ( journal des ventes) + +Dans la partie honoraire il n'y a pas de valorisation des dossiers non facturés ou présent . + diff --git a/dokuwiki/pages/activite/activite_facturee_et_valorisee/activite_honoraire/start.txt b/dokuwiki/pages/activite/activite_facturee_et_valorisee/activite_honoraire/start.txt new file mode 100644 index 0000000..6fd838d --- /dev/null +++ b/dokuwiki/pages/activite/activite_facturee_et_valorisee/activite_honoraire/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>20}} +====== Activité - Honoraires ====== + diff --git a/dokuwiki/pages/activite/activite_facturee_et_valorisee/start.txt b/dokuwiki/pages/activite/activite_facturee_et_valorisee/start.txt new file mode 100644 index 0000000..79affb0 --- /dev/null +++ b/dokuwiki/pages/activite/activite_facturee_et_valorisee/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>40}} +====== Activité facturée et valorisée ====== + diff --git a/dokuwiki/pages/activite/comptabilisation_et_en_cours/controle_des_encours/acti000017.txt b/dokuwiki/pages/activite/comptabilisation_et_en_cours/controle_des_encours/acti000017.txt new file mode 100755 index 0000000..56ccc52 --- /dev/null +++ b/dokuwiki/pages/activite/comptabilisation_et_en_cours/controle_des_encours/acti000017.txt @@ -0,0 +1,6 @@ + +//[[_wiki_utilisateur_perso:activite_aa99aa_comptabilisation_et_en_cours_aa99aa_controle_des_encours_aa99aa_acti000017|(Créez votre propre commentaire)]]// +{{page>_wiki_utilisateur_perso:activite_aa99aa_comptabilisation_et_en_cours_aa99aa_controle_des_encours_aa99aa_acti000017}} +===== Gestion centralisée ===== + +Le contrôle des encours permet de justifier par dossiers des montants calculé dans les encours pour les dossiers sortis ou présent a une date. \ No newline at end of file diff --git a/dokuwiki/pages/activite/comptabilisation_et_en_cours/controle_des_encours/start.txt b/dokuwiki/pages/activite/comptabilisation_et_en_cours/controle_des_encours/start.txt new file mode 100644 index 0000000..382fa90 --- /dev/null +++ b/dokuwiki/pages/activite/comptabilisation_et_en_cours/controle_des_encours/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>40}} +====== Contrôle ====== + diff --git a/dokuwiki/pages/activite/comptabilisation_et_en_cours/encours/acti000104.txt b/dokuwiki/pages/activite/comptabilisation_et_en_cours/encours/acti000104.txt new file mode 100755 index 0000000..a371685 --- /dev/null +++ b/dokuwiki/pages/activite/comptabilisation_et_en_cours/encours/acti000104.txt @@ -0,0 +1,6 @@ + +//[[_wiki_utilisateur_perso:activite_aa99aa_comptabilisation_et_en_cours_aa99aa_encours_aa99aa_acti000104|(Créez votre propre commentaire)]]// +{{page>_wiki_utilisateur_perso:activite_aa99aa_comptabilisation_et_en_cours_aa99aa_encours_aa99aa_acti000104}} +===== En-cours ===== + +Le contrôle des encours permet de justifier par dossiers des montants calculé dans les encours pour les dossiers sortis ou présent a une date. \ No newline at end of file diff --git a/dokuwiki/pages/activite/comptabilisation_et_en_cours/encours/start.txt b/dokuwiki/pages/activite/comptabilisation_et_en_cours/encours/start.txt new file mode 100644 index 0000000..429d3e6 --- /dev/null +++ b/dokuwiki/pages/activite/comptabilisation_et_en_cours/encours/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>1}} +====== En-cours ====== + diff --git a/dokuwiki/pages/activite/comptabilisation_et_en_cours/evaluation_des_en_cours/acti000105.txt b/dokuwiki/pages/activite/comptabilisation_et_en_cours/evaluation_des_en_cours/acti000105.txt new file mode 100755 index 0000000..b6fff74 --- /dev/null +++ b/dokuwiki/pages/activite/comptabilisation_et_en_cours/evaluation_des_en_cours/acti000105.txt @@ -0,0 +1,6 @@ + +//[[_wiki_utilisateur_perso:activite_aa99aa_comptabilisation_et_en_cours_aa99aa_evaluation_des_en_cours_aa99aa_acti000105|(Créez votre propre commentaire)]]// +{{page>_wiki_utilisateur_perso:activite_aa99aa_comptabilisation_et_en_cours_aa99aa_evaluation_des_en_cours_aa99aa_acti000105}} +===== Evaluation des En-cours ===== + +Le contrôle des encours permet de justifier par dossiers des montants calculé dans les encours pour les dossiers sortis ou présent a une date. \ No newline at end of file diff --git a/dokuwiki/pages/activite/comptabilisation_et_en_cours/evaluation_des_en_cours/start.txt b/dokuwiki/pages/activite/comptabilisation_et_en_cours/evaluation_des_en_cours/start.txt new file mode 100644 index 0000000..72c00b2 --- /dev/null +++ b/dokuwiki/pages/activite/comptabilisation_et_en_cours/evaluation_des_en_cours/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>20}} +====== Evaluation des en-cours ====== + diff --git a/dokuwiki/pages/activite/comptabilisation_et_en_cours/export/acti000007.txt b/dokuwiki/pages/activite/comptabilisation_et_en_cours/export/acti000007.txt new file mode 100755 index 0000000..593d716 --- /dev/null +++ b/dokuwiki/pages/activite/comptabilisation_et_en_cours/export/acti000007.txt @@ -0,0 +1,6 @@ + +//[[_wiki_utilisateur_perso:activite_aa99aa_comptabilisation_et_en_cours_aa99aa_export_aa99aa_acti000007|(Créez votre propre commentaire)]]// +{{page>_wiki_utilisateur_perso:activite_aa99aa_comptabilisation_et_en_cours_aa99aa_export_aa99aa_acti000007}} +===== Export ===== + +Le contrôle des encours permet de justifier par dossiers des montants calculé dans les encours pour les dossiers sortis ou présent a une date. \ No newline at end of file diff --git a/dokuwiki/pages/activite/comptabilisation_et_en_cours/export/start.txt b/dokuwiki/pages/activite/comptabilisation_et_en_cours/export/start.txt new file mode 100644 index 0000000..8f0a3c2 --- /dev/null +++ b/dokuwiki/pages/activite/comptabilisation_et_en_cours/export/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>30}} +====== Export ====== + diff --git a/dokuwiki/pages/activite/comptabilisation_et_en_cours/start.txt b/dokuwiki/pages/activite/comptabilisation_et_en_cours/start.txt new file mode 100644 index 0000000..54170c2 --- /dev/null +++ b/dokuwiki/pages/activite/comptabilisation_et_en_cours/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>60}} +====== Comptabilisation et En-cours ====== + diff --git a/dokuwiki/pages/activite/compte_client/comptes_clients_clinique/acti000022.txt b/dokuwiki/pages/activite/compte_client/comptes_clients_clinique/acti000022.txt new file mode 100755 index 0000000..5df21da --- /dev/null +++ b/dokuwiki/pages/activite/compte_client/comptes_clients_clinique/acti000022.txt @@ -0,0 +1,8 @@ +===== Etat des comptes clients ===== + +//[[_wiki_utilisateur_perso:activite_aa99aa_compte_client_aa99aa_comptes_clients_clinique_aa99aa_acti000022|(Cr?ez votre propre commentaire)]]// +{{page>_wiki_utilisateur_perso:activite_aa99aa_compte_client_aa99aa_comptes_clients_clinique_aa99aa_acti000022}} + +Les vues du th?me Comptes Clients Clinique permettent d'analyser les mouvements g?n?r?s sur les comptes clients dans la partie clinique,aussi bien **les ventes que les r?glements ainsi que les soldes. + +En utilisant le regroupement par tiers Payant par exemple on peut voir les montants restant d? par caisse. \ No newline at end of file diff --git a/dokuwiki/pages/activite/compte_client/comptes_clients_clinique/acti000085.txt b/dokuwiki/pages/activite/compte_client/comptes_clients_clinique/acti000085.txt new file mode 100755 index 0000000..eb6792b --- /dev/null +++ b/dokuwiki/pages/activite/compte_client/comptes_clients_clinique/acti000085.txt @@ -0,0 +1,9 @@ +===== Balance agée ===== + +//[[_wiki_utilisateur_perso:activite_aa99aa_compte_client_aa99aa_comptes_clients_clinique_aa99aa_acti000085|(Créez votre propre commentaire)]]// +{{page>_wiki_utilisateur_perso:activite_aa99aa_compte_client_aa99aa_comptes_clients_clinique_aa99aa_acti000085}} + +La vue du th?me Balance Ag?e permet d'analyser les montants restant d?s par rapport a la date de sortie du dossier . + +Cela permet de visualiser l'anciennet? de la cr?ance . +En fonction de la p?riode on pourra analyser annuellement ou mensuellement les restants d?s. \ No newline at end of file diff --git a/dokuwiki/pages/activite/compte_client/comptes_clients_clinique/start.txt b/dokuwiki/pages/activite/compte_client/comptes_clients_clinique/start.txt new file mode 100644 index 0000000..598b67c --- /dev/null +++ b/dokuwiki/pages/activite/compte_client/comptes_clients_clinique/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>10}} +====== Comptes clients - Clinique ====== + diff --git a/dokuwiki/pages/activite/compte_client/comptes_clients_honoraire/acti000089.txt b/dokuwiki/pages/activite/compte_client/comptes_clients_honoraire/acti000089.txt new file mode 100755 index 0000000..533f49a --- /dev/null +++ b/dokuwiki/pages/activite/compte_client/comptes_clients_honoraire/acti000089.txt @@ -0,0 +1,10 @@ +===== Etat des comptes clients ===== + +//[[_wiki_utilisateur_perso:activite_aa99aa_compte_client_aa99aa_comptes_clients_honoraire_aa99aa_acti000089|(Créez votre propre commentaire)]]// +{{page>_wiki_utilisateur_perso:activite_aa99aa_compte_client_aa99aa_comptes_clients_honoraire_aa99aa_acti000089}} + + +Les vues du th?me Comptes Clients Honoraires permettent d'analyser les mouvements g?n?r?s sur les comptes clients dans la partie honoraires,aussi bien **les ventes que les r?glements ainsi que les soldes. +** + +En utilisant le regroupement par tiers Payant par exemple on peut voir les montants restant d? par caisse aux m?decins. \ No newline at end of file diff --git a/dokuwiki/pages/activite/compte_client/comptes_clients_honoraire/start.txt b/dokuwiki/pages/activite/compte_client/comptes_clients_honoraire/start.txt new file mode 100644 index 0000000..0c681d0 --- /dev/null +++ b/dokuwiki/pages/activite/compte_client/comptes_clients_honoraire/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>20}} +====== Comptes clients - Honoraires ====== + diff --git a/dokuwiki/pages/activite/compte_client/start.txt b/dokuwiki/pages/activite/compte_client/start.txt new file mode 100644 index 0000000..6cb4069 --- /dev/null +++ b/dokuwiki/pages/activite/compte_client/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>50}} +====== Compte client ====== + diff --git a/dokuwiki/pages/activite/essentiels/acti000125.txt b/dokuwiki/pages/activite/essentiels/acti000125.txt new file mode 100755 index 0000000..2132636 --- /dev/null +++ b/dokuwiki/pages/activite/essentiels/acti000125.txt @@ -0,0 +1,5 @@ +{{indexmenu_n>1}}====== Essentiels CTI ActivitéŽ====== + +//[[_wiki_utilisateur_perso:activite_aa99aa_essentiels_aa99aa_acti000125|(Créez votre propre commentaire)]]// +{{page>_wiki_utilisateur_perso:activite_aa99aa_essentiels_aa99aa_acti000125}} +Essentiels \ No newline at end of file diff --git a/dokuwiki/pages/activite/essentiels/start.txt b/dokuwiki/pages/activite/essentiels/start.txt new file mode 100644 index 0000000..2ff6eca --- /dev/null +++ b/dokuwiki/pages/activite/essentiels/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>1}} +====== Essentiels Activité ====== + diff --git a/dokuwiki/pages/activite/etat_des_dossiers_superviseur_activite/acti000057.txt b/dokuwiki/pages/activite/etat_des_dossiers_superviseur_activite/acti000057.txt new file mode 100755 index 0000000..db5fc01 --- /dev/null +++ b/dokuwiki/pages/activite/etat_des_dossiers_superviseur_activite/acti000057.txt @@ -0,0 +1,10 @@ +===== Doc. superviseur ===== + +//[[_wiki_utilisateur_perso:activite_aa99aa_etat_des_dossiers_superviseur_activite_aa99aa_acti000057|(Créez votre propre commentaire)]]// +{{page>_wiki_utilisateur_perso:activite_aa99aa_etat_des_dossiers_superviseur_activite_aa99aa_acti000057}} + +Les vues du th?me "Etat des dossiers" permettent d'analyser la d?composition du d'un s?jour suivant son ?tat. + +A partir des **dossiers sortis sur une p?riode** ces analyses d?crivent l'?tat des lieux des services PMSI, Facturation, Exp?dition et Comptabilit?. + +Pour chaque service on retrouve le retard de traitement des dossiers, le d?lai de traitement des dossiers par le service . Le d?lai est calcul? en jours par rapport ? la date de sortie. \ No newline at end of file diff --git a/dokuwiki/pages/activite/etat_des_dossiers_superviseur_activite/start.txt b/dokuwiki/pages/activite/etat_des_dossiers_superviseur_activite/start.txt new file mode 100644 index 0000000..c238141 --- /dev/null +++ b/dokuwiki/pages/activite/etat_des_dossiers_superviseur_activite/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>30}} +====== Etat des dossiers - Superviseur d'activité ====== + diff --git a/dokuwiki/pages/activite/occupation_sejours/acti000123.txt b/dokuwiki/pages/activite/occupation_sejours/acti000123.txt new file mode 100755 index 0000000..c09ef80 --- /dev/null +++ b/dokuwiki/pages/activite/occupation_sejours/acti000123.txt @@ -0,0 +1,13 @@ +{{indexmenu_n>1}} + +===== Doc. Occupation - Séjours ===== + +//[[_wiki_utilisateur_perso:activite_aa99aa_occupation_sejours_aa99aa_acti000123|(Créez votre propre commentaire)]]// +{{page>_wiki_utilisateur_perso:activite_aa99aa_occupation_sejours_aa99aa_acti000123}} + +Ce point vous permet d 'analyser l'occupation de votre établissement sur une période. + +Par rapport à des secteurs géographiques et à la capacité d'accueil en termes de places ainsi que l'ouverture ou la fermeture de chambres ou de services on pourra suivre un taux d'occupation. + +On pourra aussi analyser la décomposition des séjours en nombre de journées, en ambulatoires et en séances. +Obtenir le nombre d'entrées et de sorties directes ou par mutations et le nombre de journées d'occupation des chambres particulières . \ No newline at end of file diff --git a/dokuwiki/pages/activite/occupation_sejours/localisation/acti000124.txt b/dokuwiki/pages/activite/occupation_sejours/localisation/acti000124.txt new file mode 100755 index 0000000..b906024 --- /dev/null +++ b/dokuwiki/pages/activite/occupation_sejours/localisation/acti000124.txt @@ -0,0 +1,6 @@ +===== Doc. Localisation ===== + +//[[_wiki_utilisateur_perso:activite_aa99aa_occupation_sejours_aa99aa_localisation_aa99aa_acti000124|(Créez votre propre commentaire)]]// +{{page>_wiki_utilisateur_perso:activite_aa99aa_occupation_sejours_aa99aa_localisation_aa99aa_acti000124}} + +Permet de justifier par ?tage le calcul du taux d'occupation jour par jour en tenant compte des fermetures de lits sur la p?riode et du nombre de jours de la p?riode. \ No newline at end of file diff --git a/dokuwiki/pages/activite/occupation_sejours/localisation/start.txt b/dokuwiki/pages/activite/occupation_sejours/localisation/start.txt new file mode 100644 index 0000000..dfa7744 --- /dev/null +++ b/dokuwiki/pages/activite/occupation_sejours/localisation/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>50}} +====== Localisation ====== + diff --git a/dokuwiki/pages/activite/occupation_sejours/presents/acti000066.txt b/dokuwiki/pages/activite/occupation_sejours/presents/acti000066.txt new file mode 100755 index 0000000..0e83d97 --- /dev/null +++ b/dokuwiki/pages/activite/occupation_sejours/presents/acti000066.txt @@ -0,0 +1,17 @@ +====== Doc. Présents ====== + +//[[_wiki_utilisateur_perso:activite_aa99aa_occupation_sejours_aa99aa_presents_aa99aa_acti000066|(Créez votre propre commentaire)]]// +{{page>_wiki_utilisateur_perso:activite_aa99aa_occupation_sejours_aa99aa_presents_aa99aa_acti000066}} + +===== Axe d'analyse ===== +Permet de justifier du nombre de patients pr?sents dans l'?tablissement ? une heure donn?e. + +---- + +===== Liste des indicateurs disponibles dans cette thématique ===== + \\ [[utilisation:glossaire:glossaire_indicateurs_activite#% 0 nuit /CA Cli ou % 0 nuit /CA Ets|% 0 nuit /CA Cli ou % 0 nuit /CA Ets]] + + +---- +===== Critères d'analyse ===== +{{page>doc_transverse:spe_activite:pied_de_page_doc_activite}} \ No newline at end of file diff --git a/dokuwiki/pages/activite/occupation_sejours/presents/start.txt b/dokuwiki/pages/activite/occupation_sejours/presents/start.txt new file mode 100644 index 0000000..8c7fd12 --- /dev/null +++ b/dokuwiki/pages/activite/occupation_sejours/presents/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>10}} +====== Présents ====== + diff --git a/dokuwiki/pages/activite/occupation_sejours/start.txt b/dokuwiki/pages/activite/occupation_sejours/start.txt new file mode 100644 index 0000000..3d07f3f --- /dev/null +++ b/dokuwiki/pages/activite/occupation_sejours/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>20}} +====== Occupation - Séjours ====== + diff --git a/dokuwiki/pages/activite/population/acti000132.txt b/dokuwiki/pages/activite/population/acti000132.txt new file mode 100755 index 0000000..bbcde85 --- /dev/null +++ b/dokuwiki/pages/activite/population/acti000132.txt @@ -0,0 +1,9 @@ +{{indexmenu_n>2}} +===== Analyse par âge et par sexe ===== + +//[[_wiki_utilisateur_perso:activite_aa99aa_population_aa99aa_acti000132|(Créez votre propre commentaire)]]// +{{page>_wiki_utilisateur_perso:activite_aa99aa_population_aa99aa_acti000132}} + +Ce point vous permet d 'analyser la patient?le de l'?tablissement selon son age et son sexe. + +On peut visualiser la pyramide des ages. \ No newline at end of file diff --git a/dokuwiki/pages/activite/population/acti000133.txt b/dokuwiki/pages/activite/population/acti000133.txt new file mode 100755 index 0000000..7c8b36f --- /dev/null +++ b/dokuwiki/pages/activite/population/acti000133.txt @@ -0,0 +1,8 @@ +{{indexmenu_n>1}} +===== Analyse par origine géographique ===== + +//[[_wiki_utilisateur_perso:activite_aa99aa_population_aa99aa_acti000133|(Créez votre propre commentaire)]]// +{{page>_wiki_utilisateur_perso:activite_aa99aa_population_aa99aa_acti000133}} + +Ce point permet ? partir du code postal de r?sidence du patient de juger de l'attractivit? de l'?tablissement par rapport ? un secteur g?ographique. + diff --git a/dokuwiki/pages/activite/population/start.txt b/dokuwiki/pages/activite/population/start.txt new file mode 100644 index 0000000..2736d6f --- /dev/null +++ b/dokuwiki/pages/activite/population/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>70}} +====== Population ====== + diff --git a/dokuwiki/pages/activite/qualite/benchmark/acti000096.txt b/dokuwiki/pages/activite/qualite/benchmark/acti000096.txt new file mode 100644 index 0000000..bde16a2 --- /dev/null +++ b/dokuwiki/pages/activite/qualite/benchmark/acti000096.txt @@ -0,0 +1,2 @@ + +BENCHMARK \ No newline at end of file diff --git a/dokuwiki/pages/activite/qualite/benchmark/start.txt b/dokuwiki/pages/activite/qualite/benchmark/start.txt new file mode 100644 index 0000000..7109bfe --- /dev/null +++ b/dokuwiki/pages/activite/qualite/benchmark/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>50}} +====== Benchmark ====== + diff --git a/dokuwiki/pages/activite/qualite/etudes/chambres_particulieres/acti000099.txt b/dokuwiki/pages/activite/qualite/etudes/chambres_particulieres/acti000099.txt new file mode 100755 index 0000000..283ea8a --- /dev/null +++ b/dokuwiki/pages/activite/qualite/etudes/chambres_particulieres/acti000099.txt @@ -0,0 +1,3 @@ +===== Axe d'analyse ===== + +Ce point permet d analyser l'occupation des chambres particulères et la facturation de ces chambres particulière en fonction de la demande du patient. diff --git a/dokuwiki/pages/activite/qualite/etudes/chambres_particulieres/start.txt b/dokuwiki/pages/activite/qualite/etudes/chambres_particulieres/start.txt new file mode 100644 index 0000000..02dd8b3 --- /dev/null +++ b/dokuwiki/pages/activite/qualite/etudes/chambres_particulieres/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>50}} +====== Chambres particulières ====== + diff --git a/dokuwiki/pages/activite/qualite/etudes/forfaits/acti000102.txt b/dokuwiki/pages/activite/qualite/etudes/forfaits/acti000102.txt new file mode 100644 index 0000000..70a3adc --- /dev/null +++ b/dokuwiki/pages/activite/qualite/etudes/forfaits/acti000102.txt @@ -0,0 +1,2 @@ + +FORFAITS \ No newline at end of file diff --git a/dokuwiki/pages/activite/qualite/etudes/forfaits/start.txt b/dokuwiki/pages/activite/qualite/etudes/forfaits/start.txt new file mode 100644 index 0000000..9189b64 --- /dev/null +++ b/dokuwiki/pages/activite/qualite/etudes/forfaits/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>50}} +====== Forfaits ====== + diff --git a/dokuwiki/pages/activite/qualite/etudes/interventions/acti00091.txt b/dokuwiki/pages/activite/qualite/etudes/interventions/acti00091.txt new file mode 100755 index 0000000..83f3ff3 --- /dev/null +++ b/dokuwiki/pages/activite/qualite/etudes/interventions/acti00091.txt @@ -0,0 +1,4 @@ +===== Axe d'analyse ===== + +Ce point permet à partir d' une liste d'actes considérés comme étant fait bloc de déterminer un nombre d'intervention + diff --git a/dokuwiki/pages/activite/qualite/etudes/interventions/start.txt b/dokuwiki/pages/activite/qualite/etudes/interventions/start.txt new file mode 100644 index 0000000..1e50ca1 --- /dev/null +++ b/dokuwiki/pages/activite/qualite/etudes/interventions/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>50}} +====== Interventions ====== + diff --git a/dokuwiki/pages/activite/qualite/etudes/start.txt b/dokuwiki/pages/activite/qualite/etudes/start.txt new file mode 100644 index 0000000..0a39297 --- /dev/null +++ b/dokuwiki/pages/activite/qualite/etudes/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>50}} +====== Etudes ====== + diff --git a/dokuwiki/pages/activite/qualite/expert/acti000128.txt b/dokuwiki/pages/activite/qualite/expert/acti000128.txt new file mode 100755 index 0000000..182fe94 --- /dev/null +++ b/dokuwiki/pages/activite/qualite/expert/acti000128.txt @@ -0,0 +1,9 @@ +===== Axe d'analyse ===== + +Ce point permet de faire des contrôles de qualités sur les données récupérées dans l'activité. + +on va vérifier la cohérence des données et signaler les anomalies suivant leurs gravités. + +Les séjours signalés en anomalie devront être corrigés ou bien ignorés en fonction du problème. + + diff --git a/dokuwiki/pages/activite/qualite/expert/start.txt b/dokuwiki/pages/activite/qualite/expert/start.txt new file mode 100644 index 0000000..46c8f9d --- /dev/null +++ b/dokuwiki/pages/activite/qualite/expert/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>50}} +====== Expert ====== + diff --git a/dokuwiki/pages/activite/qualite/start.txt b/dokuwiki/pages/activite/qualite/start.txt new file mode 100644 index 0000000..da3dd91 --- /dev/null +++ b/dokuwiki/pages/activite/qualite/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>80}} +====== Qualité ====== + diff --git a/dokuwiki/pages/activite/recherche_par_criteres/acti000033.txt b/dokuwiki/pages/activite/recherche_par_criteres/acti000033.txt new file mode 100755 index 0000000..68d7138 --- /dev/null +++ b/dokuwiki/pages/activite/recherche_par_criteres/acti000033.txt @@ -0,0 +1,4 @@ + +//[[_wiki_utilisateur_perso:activite_aa99aa_recherche_par_criteres_aa99aa_acti000033|(Cr?ez votre propre commentaire)]]// +{{page>_wiki_utilisateur_perso:activite_aa99aa_recherche_par_criteres_aa99aa_acti000033}} +recherche par crit?res \ No newline at end of file diff --git a/dokuwiki/pages/activite/recherche_par_criteres/start.txt b/dokuwiki/pages/activite/recherche_par_criteres/start.txt new file mode 100644 index 0000000..a419e06 --- /dev/null +++ b/dokuwiki/pages/activite/recherche_par_criteres/start.txt @@ -0,0 +1,3 @@ +{{indexmenu_n>90}} +====== Recherches par critères ====== + diff --git a/dokuwiki/pages/activite/sidebar.txt b/dokuwiki/pages/activite/sidebar.txt new file mode 100644 index 0000000..399c571 --- /dev/null +++ b/dokuwiki/pages/activite/sidebar.txt @@ -0,0 +1,5 @@ + + +[[..start|Retour à l'accueil]] + +{{indexmenu>:activite#1|js#bw.png navbar msort nsort noscroll maxjs#1 skipfile=/:sidebar$|pmsi000033|pmsi000214|pmsi000034|pmsi000035|pmsi000230|pmsi000224|pmsi000269|pmsi000030|pmsi000031|pmsi000032|pmsi000219|pmsi000021|pmsi000022|pmsi000023|pmsi000218|pmsi000017|pmsi000018|pmsi000019|pmsi000215|pmsi000026|pmsi000027|pmsi000028|pmsi000221|pmsi000081|pmsi000082|pmsi000083|pmsi000216|pmsi000173|pmsi000174|pmsi000175|pmsi000173|pmsi000223|pmsi000147|pmsi000148|pmsi000149|pmsi000217|pmsi000115|pmsi000116|pmsi000117|pmsi000227|pmsi000228|pmsi000010|pmsi000036|pmsi000037|pmsi000038|pmsi000213/}} \ No newline at end of file diff --git a/dokuwiki/pages/activite/start.txt b/dokuwiki/pages/activite/start.txt new file mode 100644 index 0000000..05af0dd --- /dev/null +++ b/dokuwiki/pages/activite/start.txt @@ -0,0 +1,13 @@ +{{indexmenu_n>2}} +====== Module Activité ====== + +---- + + +===== Bienvenue dans la documentation du module Activite. ===== + + + + * Vous retrouvez la documentation avec une arborescence identique à celle du menu de votre infocentre i-CTI. + + * Pour une documentation générale sur les principes de fonctionnement de i-CTI merci de vous référer à la section: "Fonctionnement de i-CTI" \ No newline at end of file diff --git a/dokuwiki/pages/spe/def_donnes_significative.txt b/dokuwiki/pages/spe/def_donnes_significative.txt new file mode 100644 index 0000000..6d55249 --- /dev/null +++ b/dokuwiki/pages/spe/def_donnes_significative.txt @@ -0,0 +1,3 @@ +====== Données significatives ====== + +Ce pavé permet de cibler une partie de votre activité selon des critères que vous déterminez. diff --git a/dokuwiki/pages/spe/def_filtres_passages.txt b/dokuwiki/pages/spe/def_filtres_passages.txt new file mode 100644 index 0000000..cbcc7cd --- /dev/null +++ b/dokuwiki/pages/spe/def_filtres_passages.txt @@ -0,0 +1,3 @@ +====== Filtres Passages ====== + +Permet de sélectionner … \ No newline at end of file diff --git a/dokuwiki/pages/spe/def_filtres_prestations.txt b/dokuwiki/pages/spe/def_filtres_prestations.txt new file mode 100644 index 0000000..daa7eca --- /dev/null +++ b/dokuwiki/pages/spe/def_filtres_prestations.txt @@ -0,0 +1,3 @@ +====== Filtres Prestations====== + +Permet … \ No newline at end of file diff --git a/dokuwiki/pages/spe/def_filtres_sejours.txt b/dokuwiki/pages/spe/def_filtres_sejours.txt new file mode 100644 index 0000000..5081856 --- /dev/null +++ b/dokuwiki/pages/spe/def_filtres_sejours.txt @@ -0,0 +1,3 @@ +====== Filtres Séjours ====== + +Permet \ No newline at end of file diff --git a/dokuwiki/pages/spe/def_regroupements.txt b/dokuwiki/pages/spe/def_regroupements.txt new file mode 100644 index 0000000..3667dc3 --- /dev/null +++ b/dokuwiki/pages/spe/def_regroupements.txt @@ -0,0 +1,158 @@ +===== Regroupements possibles dans le PMSI MCO: ===== + +Vous avez la possibilité de regrouper selon: + *un spectre large pour cela il suffit de cliquer sur la racine, par exemple GHM ou alors GHS, Age, etc. + *un spectre plus focalisé, pour cela,il faut dérouler l'arborescence et choisir le niveau de regroupement souhaité. + +Voici les différents regroupements proposés dans le PMSI MCO, vous pouvez consulter le [[utilisation:glossaire:glossaire_pmsi|glossaire]] pour vous aider dans le choix du regroupement. + +++++ GHM | + * Domaines d'activité ATIH (CLASSE) + * Groupes d'activité ATIH (CLASSE) + * Groupes de planification ATIH (CLASSE) + * Sévérités CPOM (CLASSE) + * Sévérités MAHOS (CLASSE) + * C.A.S. (C/K/X/N/O/S) + * ASo (M/C/O) + * I.P.A. + * Racine I.P.A. + * CMD + * Pôle OAP + * Ligne OAP + * Racine de GHM + * Sévérité GHM + * Classifications V10 + * Groupe activités +++++ + +GHS + +PARAMETRE_PERSONNALISE_RSS_CLASSES + +++++ Type facturation | + * Type facturation (CLASSE) +++++ +++++ Médecin RSS | + * Spécialité médecin RSS +Il s'agit de choisir soit un médecin nommément soit une spécialité de médecin attribuée par rapport à son numéro d'inscription à l'ordre mais qui peut être modifié dans les paramètres pour créer des spécialités internes. Le médecin concerné est celui à qui le rss à été attribué dont il est responsable. + + +Saisie de code permet de sélectionner plusieurs médecins à partir de leurs codes dans référentiel médecins + +++++ +++++ Diagnostic principal | + * Racine Diagnostic principal +++++ +++++ Diagnostic relié | + * Racine Diagnostic relié + * DIAGR_CLASSES +++++ +++++ Cancéro. soumise à seuil (principal) | + * Racine Seuil Cancéro. (principal) +++++ +++++ Acte principal | + * Gestes marqueurs MSAP 2009 (CLASSE) + * Gestes marqueurs MSAP 2010 (CLASSE) + * Gestes marqueurs MSAP 2012 (CLASSE) + * Gestes marqueurs nationaux 2012 (CLASSE) + * Geste Marqueur principal +++++ +++++ Unité principale | + * UP_CLASSES +++++ +++++ Durée de séjour | +Permet de sélectionner des Rss à partir du nombre de nuit. + - 0 nuit = ambulatoire ; + - 1 nuit et + = hospitalisés. +On peut également choisir une durée ou bien créer des tranches ; « intervalle » vous permet de créer les bornes que vous souhaitez. +Séance permet de ne prendre que les rss défini avec séance ou de les exclure (sauf séances). + + +++++ + +++++ Mode d'entrée | +Correspond au mode d'entrée dans l'unité; Au sein de la notion générale de transfert au sens des codes de la sécurité sociale et de la santé publique, le PMSI distingue la mutation et le transfert. + - Code 6 Mutation ; + - Code 7 Transfert définitif ; + - Code 8 Domicile ; + - Code 0 Transfert provisoire. + + +---- + + + * Provenance (Si le mode d'entrée le nécessite) +En cas d’entrée par mutation ou transfert(définitif ou provisoire). + - Code 1 En provenance d'une unité de MCO sauf unité de réanimation ; + - Code R En provenance d'une unité de réanimation ; + - Code 2 En provenance d'une unité de de soins de suite et de réadaptation ; + - Code 3 En provenance d'une unité de de soins de longue durée ; + - Code 4 En provenance d'une unité de psychiatrie ; + - Code 6 En provenance d'hospitalisation à domicile. +En cas d’entrée à partir du domicile. + - Code 5 Avec passage dans la structure d'accueil des urgences de l'établissement ; + - Code 7 En provenance d'une structure d'hébergement médicosociale ; + +++++ + + +++++ Mode de sortie | +Au sein de la notion générale de transfert au sens des codes de la sécurité sociale et de la santé publique, le PMSI distingue la mutation et le transfert. + - Code 6 Mutation ; + - Code 7 Transfert définitif ; + - Code 8 Domicile ; + - Code 9 décès ; + - Code 0 Transfert provisoire. + + +---- + + + * Destination (Si le mode de sortie le nécessite) +En cas de sortie par mutation ou transfert(définitif ou provisoire). + - Code 1 Vers une unité de MCO ; + - Code 2 Vers une unité de de soins de suite et de réadaptation ; + - Code 3 Vers une unité de de soins de longue durée ; + - Code 4 Vers une unité de psychiatrie ; + - Code 6 Vers l'hospitalisation à domicile. +En cas d’entrée à partir du domicile. + - Code 7 Vers une structure d'hébergement médicosociale ; + +++++ +++++ Code postal | + * Département + * Code géographique PMSI + * Territoire de santé +++++ +++++ Facturation AMO | + * Grand régime + * Nature assurance + * Type Contrat OC + * Forfait journalier + * Exo. ticket modérateur + * Facturation 18 euros + * Taux remboursement +++++ +++++ Age | + * Tranches d'âge +++++ +++++ Année-Mois sortie | + * Année-Trimestre sortie + * Année sortie + * Mois sortie + * Trimestre sortie +++++ + +++++ Traitement e-PMSI | +Pour les établissements disposant du module i-CTI Fil de l'Eau, il est désormais possible d'importer automatiquement chaque nuit les dossiers groupés non expédiés à ePMSI. + +Cette option permet alors de filtrer les dossiers en fonction de leur état : +- Transmis à ePmsi uniquement (critère par défaut si module PMSI sans le Fil de l'Eau) ; +- Encours groupés uniquement. Ne tient compte que des dossiers groupés non encore expédiés à la plate forme ePmsi ; +-Dossiers expédiés et encours groupés ou validés (si notion traitée par le prestataire dans le logiciel Pmsi) tient compte de la totalité de votre base pmsi. +++++ + +++++ FINESS | +Permet de choisir dans une base consolidée (pour un groupe par exemple) le finess de l'établissement dont on souhaite analyser les informations. + +++++ diff --git a/dokuwiki/pages/spe/pied_de_page_doc_activite.txt b/dokuwiki/pages/spe/pied_de_page_doc_activite.txt new file mode 100644 index 0000000..97dfb84 --- /dev/null +++ b/dokuwiki/pages/spe/pied_de_page_doc_activite.txt @@ -0,0 +1,14 @@ +{{page>doc_transverse:def_vues}} + +++++ Paramètres et sélections| +{{page>doc_transverse:spe_activite:structure_parametres_et_selections&inline}} +++++ +++++ Regroupements possibles dans le module ACTIVITE| +{{page>doc_transverse:spe_activte:def_regroupements&inline}} +++++ +++++ Activité significative| +{{page>doc_transverse:spe_activite:def_act_significative&inline}} +++++ +++++ Filtres séjours| +{{page>doc_transverse:spe_activite:def_filtres&inline}} +++++ \ No newline at end of file diff --git a/dokuwiki/pages/spe/structure_parametres_et_selections.txt b/dokuwiki/pages/spe/structure_parametres_et_selections.txt new file mode 100644 index 0000000..5dae9a4 --- /dev/null +++ b/dokuwiki/pages/spe/structure_parametres_et_selections.txt @@ -0,0 +1,12 @@ +====== Paramètres et sélections ====== + +La fenêtre **Paramètres et sélections** est l'outil qui va vous permettre d'élaborer vos requêtes. + +On va trouver différents chapitres en fonction de la thématique d’analyse: + + * Paramètres de l'analyse ; + * Ce point est détaillé dans la documentation générale i-CTI. + * Données significative ; + * Divers filtres ; + + diff --git a/dummy b/dummy new file mode 100644 index 0000000..5d63131 --- /dev/null +++ b/dummy @@ -0,0 +1 @@ +activite/v25.9 \ No newline at end of file diff --git a/import_activite/iCTI_calcul_encours.XML b/import_activite/iCTI_calcul_encours.XML new file mode 100644 index 0000000..1bd1f04 --- /dev/null +++ b/import_activite/iCTI_calcul_encours.XML @@ -0,0 +1,396 @@ + + + + + + + + + + + + + + + + 0 AND + p_factures_lignes_c.compte_produit_id IS DISTINCT FROM + CASE + WHEN est_compte_force = '1' THEN t_service_rubrique.compte_id + WHEN p_factures_lignes_c.compte_produit_id = 0 THEN t_service_rubrique.compte_id + ELSE p_factures_lignes_c.compte_produit_id END + ; + + -- Déduction depuis historique service rubrique + DROP TABLE IF EXISTS w_factures_lignes_c_compte_serrub; + CREATE TEMP TABLE w_factures_lignes_c_compte_serrub AS + SELECT rubrique_facturation_id, service_facturation_id, (MAX(Array[date_vente::text || to_char(nb,'FM000000000000'), compte_produit_id::text]))[2]::bigint AS compte_produit_id + FROM + ( + SELECT rubrique_facturation_id, service_facturation_id, date(date_trunc('month',date_vente)) AS date_vente, compte_produit_id, count(*) AS nb + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_lieux ON p_factures_lignes_c.lieu_id = t_lieux.oid + WHERE compte_produit_id <> 0 AND date_vente < '20991231' + GROUP BY 1,2,3,4 + ) subview + GROUP BY 1,2; + + CREATE INDEX w_factures_lignes_c_compte_serrub_i1 + ON w_factures_lignes_c_compte_serrub + USING btree + (rubrique_facturation_id); + + + UPDATE activite.p_factures_lignes_c + SET compte_produit_id = w_factures_lignes_c_compte_serrub.compte_produit_id + FROM w_factures_lignes_c_compte_serrub, + activite.t_lieux + WHERE p_factures_lignes_c.compte_produit_id = 0 AND + p_factures_lignes_c.lieu_id = t_lieux.oid AND + p_factures_lignes_c.rubrique_facturation_id = w_factures_lignes_c_compte_serrub.rubrique_facturation_id AND + t_lieux.service_facturation_id = w_factures_lignes_c_compte_serrub.service_facturation_id; + + -- Déduction depuis historique service prestation + DROP TABLE IF EXISTS w_factures_lignes_c_compte_serpre; + CREATE TEMP TABLE w_factures_lignes_c_compte_serpre AS + SELECT prestation_id, service_facturation_id, (MAX(Array[date_vente::text || to_char(nb,'FM000000000000'), compte_produit_id::text]))[2]::bigint AS compte_produit_id + FROM + ( + SELECT prestation_id, service_facturation_id, date(date_trunc('month',date_vente)) AS date_vente, compte_produit_id, count(*) AS nb + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_lieux ON p_factures_lignes_c.lieu_id = t_lieux.oid + WHERE compte_produit_id <> 0 AND date_vente < '20991231' + GROUP BY 1,2,3,4 + ) subview + GROUP BY 1,2; + + CREATE INDEX w_factures_lignes_c_compte_serpre_i1 + ON w_factures_lignes_c_compte_serpre + USING btree + (prestation_id); + + UPDATE activite.p_factures_lignes_c + SET compte_produit_id = w_factures_lignes_c_compte_serpre.compte_produit_id + FROM w_factures_lignes_c_compte_serpre, + activite.t_lieux + WHERE p_factures_lignes_c.compte_produit_id = 0 AND + p_factures_lignes_c.lieu_id = t_lieux.oid AND + p_factures_lignes_c.prestation_id = w_factures_lignes_c_compte_serpre.prestation_id AND + t_lieux.service_facturation_id = w_factures_lignes_c_compte_serpre.service_facturation_id; + + -- Déduction depuis historique rubrique uniquement + DROP TABLE IF EXISTS w_factures_lignes_c_compte_rub; + CREATE TEMP TABLE w_factures_lignes_c_compte_rub AS + SELECT rubrique_facturation_id, (MAX(Array[date_vente::text || to_char(nb,'FM000000000000'), compte_produit_id::text]))[2]::bigint AS compte_produit_id + FROM + ( + SELECT rubrique_facturation_id, date(date_trunc('month',date_vente)) AS date_vente, compte_produit_id, count(*) AS nb + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + WHERE compte_produit_id <> 0 AND date_vente < '20991231' + GROUP BY 1,2,3 + ) subview + GROUP BY 1; + + CREATE INDEX w_factures_lignes_c_compte_rub_i1 + ON w_factures_lignes_c_compte_rub + USING btree + (rubrique_facturation_id); + + + UPDATE activite.p_factures_lignes_c + SET compte_produit_id = w_factures_lignes_c_compte_rub.compte_produit_id + FROM w_factures_lignes_c_compte_rub + WHERE p_factures_lignes_c.compte_produit_id = 0 AND + p_factures_lignes_c.rubrique_facturation_id = w_factures_lignes_c_compte_rub.rubrique_facturation_id; + + + + -- Forcage depuis parametrage + UPDATE activite.p_factures_encours_lignes_c + SET compte_produit_id = + CASE + WHEN est_compte_force = '1' THEN t_service_rubrique.compte_id + WHEN p_factures_encours_lignes_c.compte_produit_id = 0 THEN t_service_rubrique.compte_id + ELSE p_factures_encours_lignes_c.compte_produit_id END + FROM activite.t_lieux, + activite.t_service_rubrique + WHERE lieu_id = t_lieux.oid AND + t_service_rubrique.service_facturation_id = t_lieux.service_facturation_id AND + t_service_rubrique.rubrique_facturation_id = p_factures_encours_lignes_c.rubrique_facturation_id AND + t_service_rubrique.compte_id <> 0 AND + p_factures_encours_lignes_c.compte_produit_id IS DISTINCT FROM + CASE + WHEN est_compte_force = '1' THEN t_service_rubrique.compte_id + WHEN p_factures_encours_lignes_c.compte_produit_id = 0 THEN t_service_rubrique.compte_id + ELSE p_factures_encours_lignes_c.compte_produit_id END + ; + + -- Déduction depuis historiques service rubrique + UPDATE activite.p_factures_encours_lignes_c + SET compte_produit_id = w_factures_lignes_c_compte_serrub.compte_produit_id + FROM w_factures_lignes_c_compte_serrub, + activite.t_lieux + WHERE (p_factures_encours_lignes_c.compte_produit_id = 0 OR p_factures_encours_lignes_c.compte_produit_id IS NULL) AND + p_factures_encours_lignes_c.lieu_id = t_lieux.oid AND + p_factures_encours_lignes_c.rubrique_facturation_id = w_factures_lignes_c_compte_serrub.rubrique_facturation_id AND + t_lieux.service_facturation_id = w_factures_lignes_c_compte_serrub.service_facturation_id; + + -- Déduction depuis historiques service prestation + UPDATE activite.p_factures_encours_lignes_c + SET compte_produit_id = w_factures_lignes_c_compte_serpre.compte_produit_id + FROM w_factures_lignes_c_compte_serpre, + activite.t_lieux + WHERE p_factures_encours_lignes_c.compte_produit_id = 0 AND + p_factures_encours_lignes_c.lieu_id = t_lieux.oid AND + p_factures_encours_lignes_c.prestation_id = w_factures_lignes_c_compte_serpre.prestation_id AND + t_lieux.service_facturation_id = w_factures_lignes_c_compte_serpre.service_facturation_id; + + -- Déduction depuis historiques rubrique uniquement + UPDATE activite.p_factures_encours_lignes_c + SET compte_produit_id = w_factures_lignes_c_compte_rub.compte_produit_id + FROM w_factures_lignes_c_compte_rub + WHERE (p_factures_encours_lignes_c.compte_produit_id = 0 OR p_factures_encours_lignes_c.compte_produit_id IS NULL) AND + p_factures_encours_lignes_c.rubrique_facturation_id = w_factures_lignes_c_compte_rub.rubrique_facturation_id; + + + -- Maintenance rubrique_facturation CTI + SELECT activite.cti_reorganize_rubrique_facture_c('activite.p_factures_lignes_c'); + SELECT activite.cti_reorganize_rubrique_facture_c('activite.p_factures_encours_lignes_c'); + + + -- Regroupement des lignes de CP (cas de rubriques facturées deux fois sur même date pour pb tarif patient/mutuelle + DROP TABLE IF EXISTS w_cp_double; + CREATE TEMP TABLE w_cp_double AS + SELECT + no_facture, date_debut, date_fin, prestation_id, rubrique_facturation_id, nb_rubrique, nb_prestation, coefficient, + SUM(prix_unitaire) AS prix_unitaire, + round(base.cti_division(SUM(montant_facture_1),SUM(montant_facture))*100.00,0) AS taux_1, + round(base.cti_division(SUM(montant_facture_2),SUM(montant_facture))*100.00,0) AS taux_2, + round(base.cti_division(SUM(montant_facture_22),SUM(montant_facture))*100.00,0) AS taux_22, + round(base.cti_division(SUM(montant_facture_0),SUM(montant_facture))*100.00,0) AS taux_0, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + + MIN(p_factures_lignes_c.CTID) AS keepCTID + FROM activite.p_factures_lignes_c + WHERE rubrique_facturation_id IN (SELECT to_id FROM activite.v_listes_3 WHERE liste_code = 'CTI_SHO_R') AND + montant_facture <> 0 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) > 1; + + + INSERT INTO w_cp_double + SELECT + no_facture, date_debut, date_fin, MAX(prestation_id) AS prestation_id, rubrique_facturation_id, 1 AS nb_rubrique, 1 AS nb_prestation, 1 AS coefficient, + SUM(montant_encours) AS prix_unitaire, + round(base.cti_division(SUM(montant_facture_1),SUM(montant_facture))*100.00,0) AS taux_1, + round(base.cti_division(SUM(montant_facture_2),SUM(montant_facture))*100.00,0) AS taux_2, + round(base.cti_division(SUM(montant_facture_22),SUM(montant_facture))*100.00,0) AS taux_22, + round(base.cti_division(SUM(montant_facture_0),SUM(montant_facture))*100.00,0) AS taux_0, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + + MIN(p_factures_lignes_c.CTID) AS keepCTID + FROM activite.p_factures_lignes_c + WHERE rubrique_facturation_id IN (SELECT to_id FROM activite.v_listes_3 WHERE liste_code = 'CTI_SHO_R') AND + montant_encours <> 0 + GROUP BY 1,2,3,5,6,7 + HAVING count(*) > 1; + + + UPDATE w_cp_double + SET prestation_id = subview.prestation_id + FROM + ( + SELECT rubrique_facturation_id, (MAX(ARRAY[nb,prestation_id]))[2] AS prestation_id + FROM + ( + SELECT rubrique_facturation_id, prestation_id, count(*) AS nb + FROM w_cp_double + GROUP BY 1,2) subview + GROUP BY 1 + ) subview + WHERE w_cp_double.rubrique_facturation_id = subview.rubrique_facturation_id AND + w_cp_double.prestation_id <> subview.prestation_id; + + CREATE INDEX w_cp_double_i1 + ON w_cp_double + USING btree + (no_facture); + + DELETE FROM activite.p_factures_lignes_c + USING w_cp_double + WHERE p_factures_lignes_c.no_facture = w_cp_double.no_facture AND + p_factures_lignes_c.date_debut = w_cp_double.date_debut AND + p_factures_lignes_c.date_fin = w_cp_double.date_fin AND + (p_factures_lignes_c.prestation_id = w_cp_double.prestation_id OR w_cp_double.montant_encours <> 0) AND + p_factures_lignes_c.rubrique_facturation_id = w_cp_double.rubrique_facturation_id AND + (p_factures_lignes_c.nb_rubrique = w_cp_double.nb_rubrique OR w_cp_double.montant_encours <> 0) AND + (p_factures_lignes_c.nb_prestation = w_cp_double.nb_prestation OR w_cp_double.montant_encours <> 0) AND + (p_factures_lignes_c.coefficient = w_cp_double.coefficient OR w_cp_double.montant_encours <> 0) AND + p_factures_lignes_c.CTID <> keepCTID; + + + UPDATE activite.p_factures_lignes_c SET + prestation_id = w_cp_double.prestation_id, + nb_rubrique = w_cp_double.nb_rubrique, + nb_prestation = w_cp_double.nb_prestation, + coefficient = w_cp_double.coefficient, + prix_unitaire = w_cp_double.prix_unitaire, + taux_0 = w_cp_double.taux_0, + taux_1 = w_cp_double.taux_1, + taux_2 = w_cp_double.taux_2, + taux_22 = w_cp_double.taux_22, + montant_facture = w_cp_double.montant_facture, + montant_facture_0 = w_cp_double.montant_facture_0, + montant_facture_1 = w_cp_double.montant_facture_1, + montant_facture_2 = w_cp_double.montant_facture_2, + montant_facture_22 = w_cp_double.montant_facture_22, + montant_comptabilise = w_cp_double.montant_comptabilise, + montant_comptabilise_0 = w_cp_double.montant_comptabilise_0, + montant_comptabilise_1 = w_cp_double.montant_comptabilise_1, + montant_comptabilise_2 = w_cp_double.montant_comptabilise_2, + montant_comptabilise_22 = w_cp_double.montant_comptabilise_22, + montant_encours = w_cp_double.montant_encours, + montant_encours_0 = w_cp_double.montant_encours_0, + montant_encours_1 = w_cp_double.montant_encours_1, + montant_encours_2 = w_cp_double.montant_encours_2, + montant_encours_22 = w_cp_double.montant_encours_22 + FROM w_cp_double + WHERE p_factures_lignes_c.no_facture = w_cp_double.no_facture AND + p_factures_lignes_c.date_debut = w_cp_double.date_debut AND + p_factures_lignes_c.date_fin = w_cp_double.date_fin AND + (p_factures_lignes_c.prestation_id = w_cp_double.prestation_id OR w_cp_double.montant_encours <> 0) AND + p_factures_lignes_c.rubrique_facturation_id = w_cp_double.rubrique_facturation_id AND + (p_factures_lignes_c.nb_rubrique = w_cp_double.nb_rubrique OR w_cp_double.montant_encours <> 0) AND + (p_factures_lignes_c.nb_prestation = w_cp_double.nb_prestation OR w_cp_double.montant_encours <> 0) AND + (p_factures_lignes_c.coefficient = w_cp_double.coefficient OR w_cp_double.montant_encours <> 0); + + + + + -- Reconstitution factures références + DROP TABLE IF EXISTS w_factures_reference; + CREATE TEMP TABLE w_factures_reference AS + SELECT + no_facture_reference, + + SUM(p_factures.montant_encours_c + p_factures.montant_encours_h) AS montant_encours, + SUM(p_factures.montant_encours_c) AS montant_encours_c, + SUM(p_factures.montant_encours_h) AS montant_encours_h, + SUM(p_factures.montant_encours_0_c + p_factures.montant_encours_0_h) AS montant_encours_0, + SUM(p_factures.montant_encours_0_c) AS montant_encours_0_c, + SUM(p_factures.montant_encours_0_h) AS montant_encours_0_h, + SUM(p_factures.montant_encours_1_c + p_factures.montant_encours_1_h) AS montant_encours_1, + SUM(p_factures.montant_encours_1_c) AS montant_encours_1_c, + SUM(p_factures.montant_encours_1_h) AS montant_encours_1_h, + SUM(p_factures.montant_encours_2_c + p_factures.montant_encours_2_h + p_factures.montant_encours_22_c + p_factures.montant_encours_22_h) AS montant_encours_2, + SUM(p_factures.montant_encours_2_c + p_factures.montant_encours_22_c) AS montant_encours_2_c, + SUM(p_factures.montant_encours_2_h + p_factures.montant_encours_22_h) AS montant_encours_2_h + + FROM activite.p_sejours + JOIN activite.p_factures ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_lieux ON p_sejours.lieu_sortie_id = t_lieux.oid + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE t_services_facturation.est_sans_facturation IS DISTINCT FROM '1' AND + code_prevu <> 1 + GROUP BY 1 + ; + + UPDATE activite.p_factures_reference SET + montant_encours = w_factures_reference.montant_encours, + montant_encours_c = w_factures_reference.montant_encours_c, + montant_encours_h = w_factures_reference.montant_encours_h, + montant_encours_0 = w_factures_reference.montant_encours_0, + montant_encours_0_c = w_factures_reference.montant_encours_0_c, + montant_encours_0_h = w_factures_reference.montant_encours_0_h, + montant_encours_1 = w_factures_reference.montant_encours_1, + montant_encours_1_c = w_factures_reference.montant_encours_1_c, + montant_encours_1_h = w_factures_reference.montant_encours_1_h, + montant_encours_2 = w_factures_reference.montant_encours_2, + montant_encours_2_c = w_factures_reference.montant_encours_2_c, + montant_encours_2_h = w_factures_reference.montant_encours_2_h + FROM w_factures_reference + WHERE p_factures_reference.no_facture_reference = w_factures_reference.no_facture_reference AND + p_factures_reference.montant_encours <> w_factures_reference.montant_encours + ; + + + ]]> + + + + + + + + + + + + + + diff --git a/import_activite/iCTI_calcul_encours.exe b/import_activite/iCTI_calcul_encours.exe new file mode 100644 index 0000000..a342139 Binary files /dev/null and b/import_activite/iCTI_calcul_encours.exe differ diff --git a/import_activite/iCTI_calcul_encours.php b/import_activite/iCTI_calcul_encours.php new file mode 100644 index 0000000..c96f21d --- /dev/null +++ b/import_activite/iCTI_calcul_encours.php @@ -0,0 +1,90 @@ +executeStatementsNode("EXEC"); + +} + +function iCTI_connect() { + +global $iCTI_connexion; +global $iCTI_cache; + + // Chargement des paramètres et connexion BD + $iCTI_connexion = Database2Factory::getInstance(Environnement::PROVIDER_CTI); + $ret = $iCTI_connexion->connect(); + if (!$ret) { + logErrorMsg("La connexion PostgreSQL iCTI a échoué"); + return FALSE; + } + + return $ret; +} + +function iCTI_disconnect() { + + global $iCTI_connexion; + $iCTI_connexion->close(); +} + +?> \ No newline at end of file diff --git a/import_activite/iCTI_import_activite.exe b/import_activite/iCTI_import_activite.exe new file mode 100644 index 0000000..a342139 Binary files /dev/null and b/import_activite/iCTI_import_activite.exe differ diff --git a/import_activite/iCTI_import_activite.php b/import_activite/iCTI_import_activite.php new file mode 100644 index 0000000..eef7d51 --- /dev/null +++ b/import_activite/iCTI_import_activite.php @@ -0,0 +1,578 @@ +checkArgs(); + +if (iCTI_connect()) { + + // création du répertoire utilisé par la fonction base.cti_copy_table(i_fromdblink text, i_fromtable text, i_totable text) + if (!is_dir('C:/TEMP')) { + mkdir('C:/TEMP'); + } + + // Extraction données aspirateur + $exitCode1 = 0; + $exitCode2 = 0; + $exitCode3 = 0; + + if (!isset($cti_args->args["-f"])) { + if (!isset($cti_args->args["-f1"])) { + $exitCode1 = extraction_prod($ADMPROVIDER); + } + else { + logInfoMsg("La vérification des données est ignoree pour $ADMPROVIDER"); + } + if ($ADMPROVIDER2 != "") { + if ($ADMPROVIDER2_ASPISTATUS != 'disabled' && !isset($cti_args->args["-f2"])) { + $exitCode2 = extraction_prod($ADMPROVIDER2); + } + else { + logInfoMsg("La vérification des données est ignoree pour $ADMPROVIDER2"); + } + if ($ADMPROVIDER3 != "") { + if ($ADMPROVIDER3_ASPISTATUS != 'disabled' && !isset($cti_args->args["-f3"])) { + $exitcode3 = extraction_prod($ADMPROVIDER3); + } + else { + logInfoMsg("La vérification des données est ignoree pour $ADMPROVIDER3"); + } + } + } + } + + // Synchronisation schéma activite + if (!isset($cti_args->args["--fusion_only"])) { + + if (($exitCode1 == 0 || $cti_args->args["-f"] || $cti_args->args["-f1"]) + && (!(isset($cti_args->args["-p2"]) || isset($cti_args->args["-p3"])) + || isset($cti_args->args["-p1"]))) { + extraction_environnement($ADMPROVIDER, $ADMPROVIDER_PREFIX, 0); + } + if ($ADMPROVIDER2 != "" && $ADMPROVIDER2_SYNCSTATUS != 'disabled' + && ($exitCode2 == 0 || $cti_args->args["-f2"] || $cti_args->args["-f"]) + && (!(isset($cti_args->args["-p1"]) || isset($cti_args->args["-p3"])) + || isset($cti_args->args["-p2"]))) { + extraction_environnement($ADMPROVIDER2, $ADMPROVIDER2_PREFIX, 2); + if ($ADMPROVIDER3 != "" && $ADMPROVIDER3_SYNCSTATUS != 'disabled' + && ($exitCode3 == 0 || $cti_args->args["-f3"] || $cti_args->args["-f"]) + && (!(isset($cti_args->args["-p2"]) || isset($cti_args->args["-p1"])) + || isset($cti_args->args["-p3"]))) { + extraction_environnement($ADMPROVIDER3, $ADMPROVIDER3_PREFIX, 3); + } + } + } + + if (!isset($cti_args->args["--no_fusion"])) { + // Fusion si plusieurs sources + if ($ADMPROVIDER2 != "") { + fusion_environnement($ADMPROVIDER, $ADMPROVIDER_PREFIX, 0); + if ($ADMPROVIDER3 != "") { + fusion_environnement($ADMPROVIDER3, $ADMPROVIDER3_PREFIX, 3); + } + fusion_environnement($ADMPROVIDER2, $ADMPROVIDER2_PREFIX, 2); + } + + run_expert_controls(); + } + +} + +// Déconnexion BD +$iCTI_connexion->close(); + +// nettoyage du cache +logInfoMsg("Nettoyage cache"); +cleanAllCache("iCTI_activite", TRUE); + +logEndMsg(); + +/** + * ****************************************************** + * FONCTIONS * + * ****************************************************** + */ + + function run_expert_controls() { + + logInfoMsg("CONTROLES EXPERT"); + $exp_manager = new ControleExpertManager('activite'); + if ($exp_manager->run_controls()) { + logInfoMsg($exp_manager->msg); + } + else { + $error_msg = $exp_manager->error_msg; + if (strpos($error_msg, PHP_EOL) !== false) { + $items = explode(PHP_EOL, $error_msg); + foreach($items as $item) { + if ($item != '') { + logWarnMsg($item); + } + } + } else { + logWarnMsg($error_msg); + } + } + +} + +function extraction_prod($ADMPROVIDER_check) { + global $cti_args; + global $ADMPROVIDER; + + echo PHP_EOL; + // mode chainé + if ($cti_args->args["-u"] || $cti_args->args["--prod-update"]) { + if ($ADMPROVIDER_check == "CEGI") { + $ADMPROVIDER_check = "CEGILOGHOS"; + } + if ($cti_args->args["-noactualizeprod"]) { + logInfoMsg("CONTROLE REPLICATION BASE DE DONNEES PRODUCTION $ADMPROVIDER_check"); + $prodhm_exe = realpath("../../../prodsgbd/iCTI_synchronize_prodsgbd_check.exe"); + $extractCmd = "$prodhm_exe -p $ADMPROVIDER_check -m activite"; + $return = exec($extractCmd, $output_array); + foreach ($output_array as $output_line) { + if (trim($output_line) != "") { + if($ADMPROVIDER_check == $ADMPROVIDER) echo PHP_EOL . $output_line; + else echo PHP_EOL . str_replace("ERROR_R", "WARNING", $output_line); + } + } + logInfoMsg("FIN CONTROLE REPLICATION BASE DE DONNEES PRODUCTION $ADMPROVIDER_check"); + } + else { + logInfoMsg("REPLICATION BASE DE DONNEES PRODUCTION $ADMPROVIDER_check"); + $prodhm_exe = realpath("../../../prodsgbd/iCTI_synchronize_prodsgbd_put.exe"); + $extractCmd = "$prodhm_exe -p $ADMPROVIDER_check -m activite"; + $return = exec($extractCmd, $output_array); + foreach ($output_array as $output_line) { + if (trim($output_line) != "") { + if($ADMPROVIDER_check == $ADMPROVIDER) echo PHP_EOL . $output_line; + else echo PHP_EOL . str_replace("ERROR_R", "WARNING", $output_line); + + } + } + logInfoMsg("FIN REPLICATION BASE DE DONNEES PRODUCTION $ADMPROVIDER_check"); + } + // Si CEGI, Il faut LOGHOS et CEGI + if ($ADMPROVIDER_check == "CEGILOGHOS") { + $ADMPROVIDER_check = "CEGI"; + if ($cti_args->args["-u"] || $cti_args->args["--prod-update"]) { + if ($cti_args->args["-noactualizeprod"]) { + logInfoMsg("CONTROLE REPLICATION BASE DE DONNEES PRODUCTION $ADMPROVIDER_check"); + $prodhm_exe = realpath("../../../prodsgbd/iCTI_synchronize_prodsgbd_check.exe"); + $extractCmd = "$prodhm_exe -p $ADMPROVIDER_check -m activitef"; + $return = exec($extractCmd, $output_array); + foreach ($output_array as $output_line) { + if (trim($output_line) != "") { + if($ADMPROVIDER_check == $ADMPROVIDER) echo PHP_EOL . $output_line; + else echo PHP_EOL . str_replace("ERROR_R", "WARNING", $output_line); + + } + } + logInfoMsg("FIN CONTROLE REPLICATION BASE DE DONNEES PRODUCTION $ADMPROVIDER_check"); + } + else { + logInfoMsg("REPLICATION BASE DE DONNEES PRODUCTION $ADMPROVIDER_check"); + $prodhm_exe = realpath("../../../prodsgbd/iCTI_synchronize_prodsgbd_put.exe"); + $extractCmd = "$prodhm_exe -p $ADMPROVIDER_check -m activitef"; + $return = exec($extractCmd, $output_array); + foreach ($output_array as $output_line) { + if (trim($output_line) != "") { + if($ADMPROVIDER_check == $ADMPROVIDER) echo PHP_EOL . $output_line; + else echo PHP_EOL . str_replace("ERROR_R", "WARNING", $output_line); + + } + } + logInfoMsg("FIN REPLICATION BASE DE DONNEES PRODUCTION $ADMPROVIDER_check"); + } + } + } + } + // mode débrayé (défaut) + else { + if ($ADMPROVIDER_check != "CEGI") { + $return = checkLoadedData($ADMPROVIDER_check,'activite',($ADMPROVIDER_check == $ADMPROVIDER)); + } + else { + // Emplacement prodsgbd + $DB_settings_file = "../../../settings/databases/cegi.XML"; + $DB_settings_xml = simplexml_load_file($DB_settings_file); + + $prodsgbd_dir = ""; + if ($DB_settings_xml) { + $prodsgbd_dir = trim($DB_settings_xml['prodsgbd_dir']); + } + if ($prodsgbd_dir == "") { + $prodsgbd_dir = "../../../prodsgbd"; + } + if (!file_exists($prodsgbd_dir . "/CEGI/data/CEGIdata_CJ_EFS.CSV.GZ")) { + $return = checkLoadedData('CEGILOGHOS','activite',($ADMPROVIDER_check == $ADMPROVIDER)); + $return += checkLoadedData($ADMPROVIDER_check,'activite',($ADMPROVIDER_check == $ADMPROVIDER)); + } + else { + $return = checkLoadedData($ADMPROVIDER_check,'activitef',($ADMPROVIDER_check == $ADMPROVIDER)); + } + } + } + return $return; +} + +// récupération historique +function extraction_environnement($ADMPROVIDER, $ADMPROVIDER_PREFIX, $ADMPROVIDER_OID) { + + global $iCTI_connexion; + global $ENV_FINESS; + global $ENV_TYPEETS; + global $ENV_ADM_ANNEEDEBUT; + global $cti_args; + + logInfoMsg("RECUPERATION DE LA PRODUCTION $ADMPROVIDER"); + + // Paramètres base de données + if ($ADMPROVIDER != "CHATAIGNERAIE" || $ADMPROVIDER2 != "CHATAIGNERAIE") { + $file = "../../../settings/databases/$ADMPROVIDER.XML"; + } + else { + $file = "../../../settings/databases/CHATAIGNERAIE_AS400.XML"; + } + $xml = simplexml_load_file($file); + + $DB_pmsischema = trim($xml['pmsilib']); + $DB_activiteschema = trim($xml['admlib']); + $DB_comptaschema = trim($xml['comptalib']); + + $idEtablissement = trim($xml['idEtablissement']); + if ($idEtablissement == "") { + $idEtablissement = "-1"; + } + + // Chargement requetes SQL + $environmentVars=array(); + + $environmentVars["TYPE_TRAITEMENT"] = "E"; + $environmentVars["PX"] = $ADMPROVIDER_PREFIX; + if ($ADMPROVIDER_OID < 2) { + $environmentVars["IPX"] = 0; + $environmentVars["PPX"] = 0; + } + else { + $environmentVars["IPX"] = $ADMPROVIDER_OID * 100000000000; + $environmentVars["PPX"] = $ADMPROVIDER_OID; + } + $environmentVars["TPX"] = substr($ADMPROVIDER_PREFIX,1,2) . "_"; + $environmentVars["CPX"] = substr($ADMPROVIDER_PREFIX,1,2) . "_"; + if ($ADMPROVIDER_OID < 2) { + $environmentVars["CPX"] = ""; + } + + $environmentVars["PMSISCHEMA"] = $DB_pmsischema; + $environmentVars["ACTIVITESCHEMA"] = $DB_activiteschema; + $environmentVars["COMPTASCHEMA"] = $DB_comptaschema; + + $environmentVars["ID_ETAB"] = $idEtablissement; + $environmentVars["ENV_TYPEETS"] = $ENV_TYPEETS; + $environmentVars["ENV_FINESS"] = $ENV_FINESS; + + $environmentVars["ENV_ADM_ANNEEDEBUT"] = $ENV_ADM_ANNEEDEBUT; + + $sqlOptions=array(); + + foreach ($cti_args->args as $key => $value) { + $sqlOptions[] = $key; + } + + $cti_sqlStatements_share = new CTI_SqlStatements_class("iCTI_import_activite_SHARE.XML",$iCTI_connexion,$environmentVars,$sqlOptions); + $cti_sqlStatements_provider = new CTI_SqlStatements_class("iCTI_import_activite_$ADMPROVIDER.XML",$iCTI_connexion,$environmentVars,$sqlOptions); + $cti_sqlStatements_fusion = new CTI_SqlStatements_class("iCTI_import_activite_FUSION.XML",$iCTI_connexion,$environmentVars,$sqlOptions); + + $cti_sqlStatements_share->executeStatementsNode("RAZ"); + + if ($ADMPROVIDER_PREFIX != "") { + $cti_sqlStatements_fusion->executeStatementsNode("INIT_SI_FUSION"); + } + + $cti_sqlStatements_provider->executeStatementsNode("PARAM"); + $cti_sqlStatements_provider->executeStatementsNode("INIT"); + $cti_sqlStatements_provider->executeStatementsNode("SEJOUR"); + $cti_sqlStatements_provider->executeStatementsNode("FACTURE"); + $cti_sqlStatements_provider->executeStatementsNode("ENCOURS"); + $cti_sqlStatements_provider->executeStatementsNode("CHIFFRIER"); + $cti_sqlStatements_provider->executeStatementsNode("POST"); + + $cti_sqlStatements_share->executeStatementsNode("POST"); + $cti_sqlStatements_share->executeStatementsNode("VACUUM"); + + logInfoMsg("FIN RECUPERATION DE LA PRODUCTION $ADMPROVIDER"); + +} + +// récupération historique +function fusion_environnement($ADMPROVIDER, $ADMPROVIDER_PREFIX, $ADMPROVIDER_OID) { + + global $iCTI_connexion; + global $ENV_TYPEETS; + global $ENV_FINESS; + global $ENV_ADM_ANNEEDEBUT; + + global $cti_args; + + logInfoMsg("FUSION ENVIRONNEMENT $ADMPROVIDER"); + + // Chargement requetes SQL + $environmentShareVars=array(); + $environmentShareVars["PX"] = ""; + + $environmentVars=array(); + $environmentVars["PX"] = $ADMPROVIDER_PREFIX; + if ($ADMPROVIDER_OID < 2) { + $environmentVars["IPX"] = 0; + $environmentVars["PPX"] = 0; + } + else { + $environmentVars["IPX"] = $ADMPROVIDER_OID * 100000000000; + $environmentVars["PPX"] = $ADMPROVIDER_OID; + } + + $environmentVars["TPX"] = substr($ADMPROVIDER_PREFIX,1,2) . "_"; + $environmentVars["CPX"] = substr($ADMPROVIDER_PREFIX,1,2) . "_"; + if ($ADMPROVIDER_OID < 2) { + $environmentVars["CPX"] = ""; + } + + $sqlOptions=array(); + + $cti_sqlStatements_share = new CTI_SqlStatements_class("iCTI_import_activite_SHARE.XML",$iCTI_connexion,$environmentShareVars,$sqlOptions); + $cti_sqlStatements_provider = new CTI_SqlStatements_class("iCTI_import_activite_FUSION.XML",$iCTI_connexion,$environmentVars,$sqlOptions); + + if ($ADMPROVIDER_OID == 0) { + $cti_sqlStatements_provider->executeStatementsNode("DISABLE_INDEX"); + $cti_sqlStatements_share->executeStatementsNode("RAZ"); + } + + $cti_sqlStatements_provider->executeStatementsNode("PARAM"); + $cti_sqlStatements_provider->executeStatementsNode("INIT"); + $cti_sqlStatements_provider->executeStatementsNode("SEJOUR"); + $cti_sqlStatements_provider->executeStatementsNode("FACTURE"); + $cti_sqlStatements_provider->executeStatementsNode("CHIFFRIER"); + + if ($ADMPROVIDER_OID == 2) { + $cti_sqlStatements_provider->executeStatementsNode("ENABLE_INDEX"); + $cti_sqlStatements_provider->executeStatementsNode("POST"); + + $cti_sqlStatements_share->executeStatementsNode("POST"); + $cti_sqlStatements_share->executeStatementsNode("VACUUM"); + } + logInfoMsg("FUSION ENVIRONNEMENT $ADMPROVIDER"); + +} + + +function iCTI_connect() { + +global $iCTI_connexion; +global $iCTI_cache; +global $cti_args; +global $ENV_TYPEETS; +global $ENV_FINESS; +global $ENV_ADM_ANNEEDEBUT; +global $ADMPROVIDER; +global $ADMPROVIDER_PREFIX; +global $ADMPROVIDER2; +global $ADMPROVIDER2_PREFIX; +global $ADMPROVIDER2_ASPISTATUS; +global $ADMPROVIDER2_SYNCSTATUS; +global $ADMPROVIDER3; +global $ADMPROVIDER3_PREFIX; +global $ADMPROVIDER3_ASPISTATUS; +global $ADMPROVIDER3_SYNCSTATUS; + + $iCTI_connexion = FALSE; + + $file = "../../../settings/settings.XML"; + $settings_xml = simplexml_load_file($file); + + $ADMPROVIDER = ""; + $wADMPROVIDER = ""; + $ADMPROVIDER_PREFIX = ""; + $ADMPROVIDER2 = ""; + $wADMPROVIDER2 = ""; + $ADMPROVIDER2_PREFIX = ""; + $ADMPROVIDER2_ASPISTATUS = ""; + $ADMPROVIDER2_SYNCSTATUS = ""; + $ADMPROVIDER3 = ""; + $wADMPROVIDER3 = ""; + $ADMPROVIDER3_PREFIX = ""; + $ADMPROVIDER3_ASPISTATUS = ""; + $ADMPROVIDER3_SYNCSTATUS = ""; + //Initialisation de l'année de début à année en cours -5 + $ENV_ADM_ANNEEDEBUT = date("Y")-5; + + foreach ($settings_xml->ENVIRONMENT as $environmentNode) { + foreach ($environmentNode->PROPERTY as $propertyNode) { + if ($propertyNode['name'] == 'FINESS') { + $ENV_FINESS = (string)$propertyNode['value']; + } + if ($propertyNode['name'] == 'TYPEETS') { + $ENV_TYPEETS = (string)$propertyNode['value']; + } + if ($propertyNode['name'] == 'ADMPROVIDER') { + $wADMPROVIDER = trim((string)$propertyNode['value']); + } + if ($propertyNode['name'] == 'ADMPROVIDER_PREFIX') { + $ADMPROVIDER_PREFIX = trim((string)$propertyNode['value']); + } + if ($propertyNode['name'] == 'ADMPROVIDER2') { + $wADMPROVIDER2 = trim((string)$propertyNode['value']); + } + if ($propertyNode['name'] == 'ADMPROVIDER2_PREFIX') { + $ADMPROVIDER2_PREFIX = trim((string)$propertyNode['value']); + } + if ($propertyNode['name'] == 'ADMPROVIDER2_ASPISTATUS') { + $ADMPROVIDER2_ASPISTATUS = trim((string)$propertyNode['value']); + } + if ($propertyNode['name'] == 'ADMPROVIDER2_SYNCSTATUS') { + $ADMPROVIDER2_SYNCSTATUS = trim((string)$propertyNode['value']); + } + if ($propertyNode['name'] == 'ADMPROVIDER3') { + $wADMPROVIDER3 = trim((string)$propertyNode['value']); + } + if ($propertyNode['name'] == 'ADMPROVIDER3_PREFIX') { + $ADMPROVIDER3_PREFIX = trim((string)$propertyNode['value']); + } + if ($propertyNode['name'] == 'ADMPROVIDER3_ASPISTATUS') { + $ADMPROVIDER3_ASPISTATUS = trim((string)$propertyNode['value']); + } + if ($propertyNode['name'] == 'ADMPROVIDER3_SYNCSTATUS') { + $ADMPROVIDER3_SYNCSTATUS = trim((string)$propertyNode['value']); + } + if ($propertyNode['name'] == 'OPTADM_ANNEEDEBUT') { + //Soit on utilise dans le setting une année en dur soit un nombre d'année(s) précédé de la lettre A + if (substr($propertyNode['value'],0,1)==='A'){ + //année en cours moins nombre années demandées + $nbAnnee = substr($propertyNode['value'],1); + $ENV_ADM_ANNEEDEBUT = date("Y")-intval($nbAnnee); + } else if ($propertyNode['value']!="" && strlen($propertyNode['value']) === 4) { + // si années écrit en dur + $ENV_ADM_ANNEEDEBUT = $propertyNode['value']; + } + } + } + } + + logInfoMsg("DEPUIS $ENV_ADM_ANNEEDEBUT"); + + if ($wADMPROVIDER == "" && $cti_args->args["-p"]) { + $wADMPROVIDER = strtolower($cti_args->args["-p"]); + } + + $ADMPROVIDER = uppercase_provider($wADMPROVIDER); + + if ($wADMPROVIDER2 != "") { + $ADMPROVIDER2 = uppercase_provider($wADMPROVIDER2); + } + + if ($wADMPROVIDER3 != "") { + $ADMPROVIDER3 = uppercase_provider($wADMPROVIDER3); + } + + if ($ADMPROVIDER == "") { + logErrorMsg("Prestataire $wADMPROVIDER non traité actuellement"); + return FALSE; + } + + if ($ADMPROVIDER2 == "") { + $ADMPROVIDER_PREFIX = ""; + $ADMPROVIDER2_PREFIX = ""; + $ADMPROVIDER3_PREFIX = ""; + $ADMPROVIDER_PREFIX = ""; + $ADMPROVIDER2_PREFIX = ""; + $ADMPROVIDER3_PREFIX = ""; + } + else { + if ($ADMPROVIDER_PREFIX == "") { + $ADMPROVIDER_PREFIX = substr($ADMPROVIDER,0,2); + } + $ADMPROVIDER_PREFIX = "_" . $ADMPROVIDER_PREFIX; + + if ($ADMPROVIDER2_PREFIX == "") { + $ADMPROVIDER2_PREFIX = substr($ADMPROVIDER2,0,2); + } + $ADMPROVIDER2_PREFIX = "_" . $ADMPROVIDER2_PREFIX; + + if ($ADMPROVIDER3_PREFIX == "") { + $ADMPROVIDER3_PREFIX = substr($ADMPROVIDER3,0,2); + } + $ADMPROVIDER3_PREFIX = "_" . $ADMPROVIDER3_PREFIX; + } + + $iCTI_connexion = Database2Factory::getInstance(Environnement::PROVIDER_CTI); + $ret = $iCTI_connexion->connect(); + + return $iCTI_connexion; + +} + +function uppercase_provider($_provider) { + $toRet = ""; + + if ($_provider == "r2i" || $_provider == "hm") { + $toRet = "HM"; + } else { + $toRet = strtoupper($_provider); + } + + return $toRet; +} + +function copy_schema($toSuffixe) { + +} + +?> \ No newline at end of file diff --git a/import_activite/iCTI_import_activite_ANTHADINE.XML b/import_activite/iCTI_import_activite_ANTHADINE.XML new file mode 100644 index 0000000..6f9d38f --- /dev/null +++ b/import_activite/iCTI_import_activite_ANTHADINE.XML @@ -0,0 +1,3223 @@ + + + + + + + + + + + + + + + '' + ; + + UPDATE w_S_P_PCHA SET + INDI_CODE = CASE WHEN w_S_P_PCHA.INDI_CODE <> '' THEN w_S_P_PCHA.INDI_CODE ELSE R_E_HIST.INDI_CODE END, + C_I_INDI_CODE = R_E_HIST.C_I_INDI_CODE + FROM prod_anthadine.R_E_HIST + WHERE R_E_HIST.HIST_CODE = w_S_P_PCHA.HIST_CODE + ; + UPDATE w_S_P_PCHA + SET INDI_CODE = R_E_HIST.INDI_CODE + FROM prod_anthadine.R_E_HIST + WHERE R_E_HIST.PCHA_CODE = w_S_P_PCHA.PCHA_CODE AND + w_S_P_PCHA.INDI_CODE = '' + ; + UPDATE w_S_P_PCHA + SET INDI_CODE = A_F_FSEJ.S_M_INDI_CODE + FROM prod_anthadine.A_F_FSEJ + WHERE A_F_FSEJ.PCHA_CODE = w_S_P_PCHA.PCHA_CODE AND + w_S_P_PCHA.INDI_CODE = '' + ; + + + DROP TABLE IF EXISTS w_S_P_PCHA_pat; + CREATE TEMP TABLE w_S_P_PCHA_pat AS + SELECT + INDI_CODE, + SUBSTR(PCHA_NODOS,0,LENGTH(PCHA_NODOS)-2) AS NIPP + FROM w_S_P_PCHA + GROUP BY 1,2 + ORDER BY 1,2 + ; + + -- NIPP en double + UPDATE w_S_P_PCHA_pat + SET NIPP = NIPP || INDI_CODE + WHERE NIPP IN (SELECT NIPP FROM w_S_P_PCHA_pat GROUP BY 1 HAVING count(*) > 1) + ; + + UPDATE w_S_P_PCHA + SET NIPP = w_S_P_PCHA_pat.NIPP + FROM w_S_P_PCHA_pat + WHERE w_S_P_PCHA.INDI_CODE = w_S_P_PCHA_pat.INDI_CODE + ; + + -- Séjours en double + UPDATE w_S_P_PCHA + SET PCHA_NODOS = PCHA_NODOS || '-' || PCHA_CODE + WHERE PCHA_NODOS IN + ( + SELECT PCHA_NODOS + FROM w_S_P_PCHA + GROUP BY 1 + HAVING count(*) > 1 + ) + ; + + + -- Ajout des patients + DROP TABLE IF EXISTS w_patients; + CREATE TEMP TABLE w_patients AS + SELECT + '' as FINESS, + NIPP, + INDI_NOM, + INDI_NOMJF, + INDI_PRNOM, + INDI_DNAIS, + CASE WHEN INDI_SEXE = 'M' THEN '1' ELSE '2' END AS INDI_SEXE, + IDENT + FROM w_S_P_PCHA_pat + JOIN prod_anthadine.S_M_INDI ON w_S_P_PCHA_pat.INDI_CODE = S_M_INDI.INDI_CODE + ; + + + INSERT INTO activite[PX].p_patients(finess, no_patient, nom, nom_naissance, prenom, date_naissance, code_sexe) + SELECT + '' as FINESS, + NIPP, + INDI_NOM, + INDI_NOMJF, + INDI_PRNOM, + INDI_DNAIS, + INDI_SEXE + FROM w_patients + LEFT JOIN activite[PX].p_patients ON NIPP = p_patients.no_patient + WHERE p_patients.no_patient IS NULL + ; + + UPDATE activite[PX].p_patients + SET + nom = INDI_NOM, + nom_naissance = INDI_NOMJF, + prenom = INDI_PRNOM, + date_naissance = INDI_DNAIS, + code_sexe = INDI_SEXE + FROM w_patients + WHERE p_patients.no_patient = NIPP + AND ( + nom IS DISTINCT FROM INDI_NOM OR + nom_naissance IS DISTINCT FROM INDI_NOMJF OR + prenom IS DISTINCT FROM INDI_PRNOM OR + date_naissance IS DISTINCT FROM INDI_DNAIS OR + code_sexe IS DISTINCT FROM INDI_SEXE + ); + + + ]]> + + + + = 0 THEN ENTR_PRDE_CODE ELSE 0 END AS provenance, + PCHA_DFIN AS date_sortie, + COALESCE(REPLACE(PCHA_HFSEJ,':','')::int,0) AS heure_sortie, + SORT_ENSO_CODE AS mode_sortie, + CASE WHEN SORT_PRDE_CODE >= 0 THEN SORT_PRDE_CODE ELSE 0 END AS destination, + PCHA_CLOTU AS code_sorti, + CASE WHEN PCHA_DDEBU < now() THEN 0 ELSE 1 END as code_prevu, + '1' AS type_sejour, + t_services_facturation.mode_traitement_id, + t_lieux.oid AS lieu_sortie_id, + COALESCE(t_medecins_administratifs.oid,0) as medecin_sejour_id, + COALESCE(t_medecins_traitants_administratifs.oid,0) as medecin_sejour_id, + COALESCE(t_tiers_payant_1.oid,0), + COALESCE(t_tiers_payant_2.oid,0), + COALESCE(t_tiers_payant_0.oid,0), + + '2099-12-31' AS date_groupage, + t_codes_postaux.oid AS code_postal_id + FROM w_sej + JOIN w_S_P_PCHA S_P_PCHA ON S_P_PCHA.PCHA_CODE = w_sej.PCHA_CODE + JOIN prod_anthadine.S_M_INDI ON S_M_INDI_CODE = S_M_INDI.INDI_CODE + LEFT JOIN ( + SELECT PCHA_CODE, + (MAX(ARRAY[ROWID::text,S_O_INDI_CODE::text]))[2] as S_O_INDI_CODE + FROM prod_anthadine.R_E_HIST GROUP BY 1) + w_R_E_HIST ON w_R_E_HIST.PCHA_CODE = w_sej.PCHA_CODE + LEFT JOIN prod_anthadine.S_M_MALA ON S_M_INDI_CODE = S_M_MALA.INDI_CODE + JOIN activite[PX].t_lieux ON + t_lieux.code_original_1 = S_P_PCHA.SERV_CODE AND + t_lieux.code_original_2 = UOACT_CODE AND + t_lieux.code_original_6 = UOGEO_CODE + LEFT JOIN activite[PX].t_services_facturation ON S_P_PCHA.SERV_CODE = t_services_facturation.code + LEFT JOIN activite[PX].p_patients ON SUBSTR(PCHA_NODOS,0,GREATEST(LENGTH(PCHA_NODOS)-2,0)) = no_patient + LEFT JOIN activite[PX].t_medecins_administratifs ON COALESCE(NULLIF(w_R_E_HIST.S_O_INDI_CODE,''),S_M_MALA.S_O_INDI_CODE,'') = t_medecins_administratifs.code_original + LEFT JOIN activite[PX].t_medecins_traitants_administratifs ON COALESCE(S_M_MALA.S_O_INDI_CODE,'') = t_medecins_traitants_administratifs.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_1 ON CAIP_CODE = t_tiers_payant_1.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON CAIC_CODE = t_tiers_payant_2.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_0 ON 'PATIENT' = t_tiers_payant_0.code_original + LEFT JOIN ( + SELECT + S_M_HABI.INDI_CODE, + (MAX(ARRAY[COALESCE(HABI_DDEBUT,'1900-01-01'::date)::text,ADRS_CPOST::text]))[2] AS ADRS_CPOST + --COALESCE(HABI_DDEBUT,'1900-01-01'::date) AS HABI_DDEBUT, + --COALESCE(HABI_DFIN,'2099-12-31'::date) AS HABI_DFIN, + + FROM + prod_anthadine.S_M_HABI + JOIN prod_anthadine.S_M_ADRS ON S_M_HABI.ADRS_CODE = S_M_ADRS.ADRS_CODE + WHERE adrs_cpost != '' + GROUP BY 1--,2,3 + ) sub ON sub.INDI_CODE = S_M_INDI_CODE -- AND PCHA_DDEBU between HABI_DDEBUT AND HABI_DFIN + LEFT JOIN base.t_codes_postaux ON t_codes_postaux.code = ADRS_CPOST + ; + + -- Report date sortie pour les présents + UPDATE activite[PX].p_sejours + SET date_sortie = date(now()) + WHERE date_sortie < date(now()) AND + code_sorti = '0' + ; + + -- Les heures E/S ne sont pas toujours saisies + UPDATE activite[PX].p_sejours + SET heure_entree = 080000 + WHERE heure_entree = 0 + ; + + UPDATE activite[PX].p_sejours + SET heure_sortie = 180000 + WHERE code_sorti = '1' AND + heure_sortie = 0 + ; + + -- recréation index + + SELECT base.cti_enable_index('activite', 'i_sejours_2'); + SELECT base.cti_enable_index('activite', 'i_sejours_3'); + SELECT base.cti_enable_index('activite', 'i_sejours_4'); + SELECT base.cti_enable_index('activite', 'i_sejours_5'); + SELECT base.cti_enable_index('activite', 'i_sejours_6'); + SELECT base.cti_enable_index('activite', 'i_sejours_7'); + SELECT base.cti_enable_index('activite', 'i_sejours_8'); + SELECT base.cti_enable_index('activite', 'i_sejours_9'); + SELECT base.cti_enable_index('activite', 'i_sejours_10'); + SELECT base.cti_enable_index('activite', 'i_sejours_11'); + SELECT base.cti_enable_index('activite', 'i_sejours_12'); + SELECT base.cti_enable_index('activite', 'i_sejours_13'); + + -- Provenance + DROP TABLE IF EXISTS w_ETAB_PROV; + CREATE TEMP TABLE w_ETAB_PROV AS + SELECT w_S_P_PCHA.C_I_INDI_CODE , + COALESCE(S_M_INDI_3.INDI_NOM,S_M_INDI_2.INDI_NOM,S_M_INDI.INDI_NOM) AS INDI_NOM, + CASE + WHEN S_I_INTC_3.INTC_FINES <> '' THEN S_I_INTC_3.INTC_FINES||S_I_INTC_3.INTC_CFINE + WHEN S_I_INTC_2.INTC_FINES <> '' THEN S_I_INTC_2.INTC_FINES||S_I_INTC_2.INTC_CFINE + WHEN S_I_INTC.INTC_FINES <> '' THEN S_I_INTC.INTC_FINES||S_I_INTC.INTC_CFINE + ELSE '' END AS finess, + ''::text AS INDI_NOM_SYN, + 0::bigint AS etablissement_id + FROM w_S_P_PCHA + JOIN prod_anthadine.S_M_INDI ON S_M_INDI.INDI_CODE = w_S_P_PCHA.C_I_INDI_CODE + LEFT JOIN prod_anthadine.S_I_INTC ON S_I_INTC.INDI_CODE = S_M_INDI.INDI_CODE + LEFT JOIN prod_anthadine.S_M_INDI S_M_INDI_2 ON S_M_INDI_2.INDI_CODE = S_I_INTC.INTC_INDI_CODE + LEFT JOIN prod_anthadine.S_I_INTC S_I_INTC_2 ON S_I_INTC_2.INDI_CODE = S_M_INDI_2.INDI_CODE + LEFT JOIN prod_anthadine.S_M_INDI S_M_INDI_3 ON S_M_INDI_3.INDI_CODE = S_I_INTC_2.INTC_INDI_CODE + LEFT JOIN prod_anthadine.S_I_INTC S_I_INTC_3 ON S_I_INTC_3.INDI_CODE = S_M_INDI_3.INDI_CODE + GROUP BY 1,2,3 + ; + + ANALYSE w_ETAB_PROV + ; + + + UPDATE w_ETAB_PROV + SET etablissement_id = t_etablissements.oid + FROM base.t_etablissements + WHERE t_etablissements.code = finess AND + finess <> '' + ; + + -- Les finess ne sont pas toujours renseignes. Tentative par le texte + UPDATE w_ETAB_PROV SET + finess = t_etablissements.code, + etablissement_id = t_etablissements.oid + FROM base.t_etablissements + WHERE t_etablissements.texte ILIKE INDI_NOM AND + etablissement_id = 0 + ; + UPDATE w_ETAB_PROV + SET INDI_NOM_SYN = trim(REPLACE(UPPER(INDI_NOM),'CENTRE HOSPITALIER','CH')) + WHERE INDI_NOM ILIKE '%CENTRE HOSPITALIER%' + ; + UPDATE w_ETAB_PROV + SET INDI_NOM_SYN = trim(REPLACE(UPPER(INDI_NOM),'CLINIQUE','POLYCLINIQUE')) + WHERE INDI_NOM ILIKE 'CLINIQUE%' + ; + UPDATE w_ETAB_PROV SET + finess = t_etablissements.code, + etablissement_id = t_etablissements.oid + FROM base.t_etablissements + WHERE t_etablissements.texte ILIKE INDI_NOM_SYN AND + INDI_NOM_SYN <> '' AND + etablissement_id = 0 + ; + UPDATE w_ETAB_PROV SET + finess = t_etablissements.code, + etablissement_id = t_etablissements.oid + FROM base.t_etablissements + WHERE t_etablissements.texte ILIKE '%'||INDI_NOM||'%' AND + length(INDI_NOM) > 10 AND + etablissement_id = 0 + ; + + + -- Finess non trouve, code provisoire + UPDATE w_ETAB_PROV + SET finess = 'X'||substr(upper(md5(INDI_NOM)),1,8) + WHERE finess = '' + ; + + INSERT INTO base.t_etablissements (code, texte, texte_court) + SELECT finess, MAX(INDI_NOM), MAX(INDI_NOM) + FROM w_ETAB_PROV + WHERE finess NOT IN (SELECT code FROM base.t_etablissements) + GROUP BY 1 + ; + + UPDATE w_ETAB_PROV + SET etablissement_id = t_etablissements.oid + FROM base.t_etablissements + WHERE t_etablissements.code = finess AND + finess <> '' + ; + + INSERT INTO activite[PX].p_sejours_transferts (sejour_id, provenance_id, destination_id) + SELECT p_sejours.oid, + MAX(etablissement_id), + MAX(0) + FROM w_S_P_PCHA + LEFT JOIN w_ETAB_PROV ON w_S_P_PCHA.C_I_INDI_CODE = w_ETAB_PROV.C_I_INDI_CODE + JOIN activite[PX].p_sejours ON w_S_P_PCHA.PCHA_CODE = p_sejours.code_original + GROUP BY 1 + ; + + + ]]> + + + + now() - interval '1 day' THEN '1' ELSE '0' END) AS est_mouvement_previsionnel , + MAX(CASE WHEN p_sejours.type_sejour = '1' AND (p_calendrier.date <> date_sortie) THEN 1 ELSE 0 END) AS nb_jours_js_non_inclus, + MAX(lieu_id), + MAX(CASE WHEN date = date_entree THEN 1 ELSE 0 END) AS nb_entrees_directes, + MAX(CASE WHEN date = date_sortie THEN 1 ELSE 0 END) nb_sorties_directes, + 0 AS nb_urgences, + 0 AS nb_externes, + 0 AS nb_ambulatoires, + MAX(medecin_sejour_id), + 1 AS nb_jours_js_inclus, + 0 AS nb_seances, + 0 AS nb_entrees_mutation_service, + 0 AS nb_sorties_mutation_service, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + 0 AS nb_entrees_mutation_etage, + 0 AS nb_sorties_mutation_etage, + 0 AS nb_chambres_particulieres, + MAX(CASE WHEN p_calendrier.date = date_entree THEN heure_entree ELSE 0 END) AS heure_debut, + MAX(CASE WHEN p_calendrier.date = date_sortie THEN heure_sortie ELSE 240000 END) AS heure_fin, + MAX(CASE WHEN p_calendrier.date = date_entree THEN 1 ELSE 0 END) AS est_jour_entree, + MAX(CASE WHEN p_calendrier.date = date_sortie THEN 1 ELSE 0 END) AS est_jour_sortie, + 1 AS est_jour_hospitalisation, + 0 AS est_chambre_particuliere, + 0 AS nb_entrees_mutation_unite_medicale, + 0 AS nb_sorties_mutation_unite_medicale, + 0 AS nb_bebes, + 1 AS est_premier_mouvement_jour, + 1 AS est_dernier_mouvement_jour, + MAX(jour_semaine), + MAX(is_weekend) + FROM activite[PX].p_sejours + JOIN w_A_F_FSEJ_mvt A_F_FSEJ ON code_original = PCHA_CODE + JOIN w_lieu_sej ON w_lieu_sej.FSEJ_CODE = A_F_FSEJ.FSEJ_CODE + JOIN base.p_calendrier ON p_calendrier.date BETWEEN FSEJ_DDEBU AND FSEJ_DFIN_mvt + WHERE FSEJ_DANNUL IS NULL + GROUP BY 1,2,3 + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_5'); + + + ]]> + + + + + + + + + + + + + + + = f_a_piec.piec_dpact + JOIN activite[PX].p_sejours ON S_P_PCHA.PCHA_CODE = p_sejours.code_original + WHERE LGFA_ONERE = '1' + GROUP BY 1 + ; + + ANALYSE w_factures_mo + ; + + + SELECT base.cti_disable_index('activite', 'i_factures_3'); + SELECT base.cti_disable_index('activite', 'i_factures_4'); + SELECT base.cti_disable_index('activite', 'i_factures_5'); + SELECT base.cti_disable_index('activite', 'i_factures_6'); + SELECT base.cti_disable_index('activite', 'i_factures_7'); + SELECT base.cti_disable_index('activite', 'i_factures_8'); + SELECT base.cti_disable_index('activite', 'i_factures_9'); + SELECT base.cti_disable_index('activite', 'i_factures_10'); + SELECT base.cti_disable_index('activite', 'i_factures_11'); + SELECT base.cti_disable_index('activite', 'i_factures_12'); + SELECT base.cti_disable_index('activite', 'i_factures_13'); + SELECT base.cti_disable_index('activite', 'i_factures_14'); + + + INSERT INTO activite[PX].p_factures ( + oid, + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + ghs_id, + type_facture, + nb_rejets, + code_facture, + date_facture, + code_vente, + mois_vente, + date_vente, + code_cloture, + + particularite_t2a, + + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h + + + ) + + SELECT + oid, + sejour_id, + no_sejour, + no_facture, + w_factures.no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + ghs_id, + type_facture, + nb_rejets, + code_facture, + date_facture, + code_vente, + mois_vente, + date_vente, + code_cloture, + + particularite_t2a, + + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + date_expedition , + date_expedition_0 , + date_expedition_1 , + date_expedition_2 , + date_expedition_22 , + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h + + FROM w_factures + WHERE oid NOT IN (SELECT oid FROM activite[PX].p_factures); + + + INSERT INTO activite[PX].p_factures ( + oid, + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + ghs_id, + type_facture, + nb_rejets, + code_facture, + date_facture, + code_vente, + mois_vente, + date_vente, + code_cloture, + + particularite_t2a, + + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h + + + ) + + SELECT + oid, + sejour_id, + no_sejour, + no_facture, + w_factures_mo.no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + ghs_id, + type_facture, + nb_rejets, + code_facture, + date_facture, + code_vente, + mois_vente, + date_vente, + code_cloture, + + particularite_t2a, + + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + date_expedition , + date_expedition_0 , + date_expedition_1 , + date_expedition_2 , + date_expedition_22 , + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h + + FROM w_factures_mo + WHERE oid NOT IN (SELECT oid FROM activite[PX].p_factures); + + SELECT base.cti_enable_index('activite', 'i_factures_3'); + SELECT base.cti_enable_index('activite', 'i_factures_4'); + SELECT base.cti_enable_index('activite', 'i_factures_5'); + SELECT base.cti_enable_index('activite', 'i_factures_6'); + SELECT base.cti_enable_index('activite', 'i_factures_7'); + SELECT base.cti_enable_index('activite', 'i_factures_8'); + SELECT base.cti_enable_index('activite', 'i_factures_9'); + SELECT base.cti_enable_index('activite', 'i_factures_10'); + SELECT base.cti_enable_index('activite', 'i_factures_11'); + SELECT base.cti_enable_index('activite', 'i_factures_12'); + SELECT base.cti_enable_index('activite', 'i_factures_13'); + SELECT base.cti_enable_index('activite', 'i_factures_14'); + + + + -- Séjours sans facture + + DROP TABLE IF EXISTS w_factures_trous; + CREATE TEMP TABLE w_factures_trous AS + SELECT + p_sejours.finess, + p_sejours.no_sejour, + p_sejours.date_entree, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.code_cp_demandee, + COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire, + p_sejours.code_sorti, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie, + MAX(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END) AS date_fin_facture, + date(MAX(COALESCE(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours + FROM activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND no_facture NOT LIKE 'E%' + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE p_sejours.etat = '' AND p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND date_entree <= now() AND p_sejours.type_sejour <> '6' AND p_sejours.type_sejour <> '9' AND code_prevu <> 1 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11; + + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee, + date_debut, + date_fin) + SELECT finess, + no_sejour, + no_sejour || '.00' || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + no_sejour || '.00' || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee , + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12; + + + UPDATE activite[PX].p_factures SET + date_debut = date_entree, + date_fin = CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid AND + avec_facturation_intermediaire IS DISTINCT FROM '1' + WHERE p_factures.no_sejour = p_sejours.no_sejour AND + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END - date_entree < 30 AND + ( + p_factures.date_debut <> date_entree OR + p_factures.date_fin <> CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + ); + + + -- Date de fin pour les factures Molecules + UPDATE activite[PX].p_factures + SET date_fin = p_sejours.date_sortie + FROM activite[PX].p_sejours + WHERE no_facture NOT LIKE 'MO%' AND + p_factures.no_sejour = p_sejours.no_sejour AND + p_sejours.code_sorti = '1' AND + p_factures.date_fin = date(p_sejours.date_sortie - interval '1 day') + ; + + UPDATE activite[PX].p_factures SET + date_fin = p_factures_ght.date_fin, + date_debut = p_factures_ght.date_debut + FROM activite[PX].p_factures p_factures_ght + WHERE p_factures.no_facture LIKE 'MO%' AND + p_factures.no_sejour = p_factures_ght.no_sejour AND + p_factures_ght.type_facture = '0' AND + p_factures.date_fin BETWEEN p_factures_ght.date_debut AND p_factures_ght.date_fin AND + p_factures.date_fin <> p_factures_ght.date_fin + ; + + + + ]]> + + + + + + + + 1 or nb_prestation < -1 OR + (prestation_code = 'GHS' AND date(date_sortie) - date(date_entree) > 1)) + ) ; + + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM w_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture AND + w_factures_lignes_sup_c.prestation_code = 'GHS'; + + CREATE INDEX w_factures_lignes_sup_c_i1 + ON w_factures_lignes_sup_c + USING btree + (date_debut); + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + sequence, + no_sejour, + facture_id, + no_facture, + date_vente, + + FAAVFA, + + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + prestation_code, + prestation_type_ventilation_jour, + compte_produit_id, + lieu_id, + origine_facturation_id, + + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + + date AS date_debut, + date AS date_fin, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + round(montant_facture / ABS(nb_det),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22, + round(montant_comptabilise / ABS(nb_det),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_det),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_det),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_det),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_det),2) AS montant_comptabilise_22, + rubrique_facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_det AND date_fin_det + ; + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT sequence, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + + UPDATE w_factures_lignes_c + SET + date_fin = w_factures_lignes_c.date_debut, + nb_rubrique = w_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_sup_tot.nb_rubrique, + nb_prestation = w_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_sup_tot.nb_prestation, + montant_facture = w_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = w_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = w_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = w_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = w_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = w_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = w_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = w_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = w_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = w_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22 + FROM w_factures_lignes_sup_c_sup_tot + WHERE w_factures_lignes_c.sequence = w_factures_lignes_sup_c_sup_tot.sequence; + + + + -- Ajout des lignes + INSERT INTO w_factures_lignes_c( + sequence, + no_sejour, + facture_id, + no_facture, + date_vente, + + FAAVFA, + + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + prestation_code, + prestation_type_ventilation_jour, + compte_produit_id, + lieu_id, + origine_facturation_id, + + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_facture_id) + SELECT + sequence, + no_sejour, + facture_id, + no_facture, + date_vente, + + FAAVFA, + + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + prestation_code, + prestation_type_ventilation_jour, + compte_produit_id, + lieu_id, + origine_facturation_id, + + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_facture_id + FROM w_factures_lignes_sup_c_sup; + + -- Inversion signe pour avoirs + UPDATE w_factures_lignes_c SET + nb_rubrique = 0-nb_rubrique, + nb_prestation = 0-nb_prestation, + montant_facture = 0-montant_facture, + montant_facture_0 = 0-montant_facture_0, + montant_facture_1 = 0-montant_facture_1, + montant_facture_2 = 0-montant_facture_2, + montant_facture_22 = 0-montant_facture_22, + montant_comptabilise = 0-montant_comptabilise, + montant_comptabilise_0 = 0-montant_comptabilise_0, + montant_comptabilise_1 = 0-montant_comptabilise_1, + montant_comptabilise_2 = 0-montant_comptabilise_2, + montant_comptabilise_22 = 0-montant_comptabilise_22 + WHERE FAAVFA = 'A' + ; + + + -- Lieu exécution + + + UPDATE w_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_mouvements_sejour + WHERE + w_factures_lignes_c.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_lignes_c.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + w_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_c'); + + + + + -- Lignes molecules onereuses + DROP TABLE IF EXISTS w_factures_lignes_c_mo; + CREATE TEMP TABLE w_factures_lignes_c_mo AS + SELECT + nextval('w_factures_lignes_c_seq'::regclass) AS sequence, + w_factures_mo.no_sejour, + w_factures_mo.oid AS facture_id, + w_factures_mo.no_facture AS no_facture, + w_factures_mo.date_vente, + + ''::text AS FAAVFA, + + 1::numeric AS coefficient, + 1::numeric AS coefficient_mco, + t_rubriques_facturation.oid AS rubrique_facturation_id, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + t_prestations.code AS prestation_code, + t_prestations.type_ventilation_jour AS prestation_type_ventilation_jour, + COALESCE(t_compte.oid,0) AS compte_produit_id, + COALESCE(t_ucd.oid,0) AS ucd_id, + p_sejours.lieu_sortie_id AS lieu_id, + 1::bigint AS origine_facturation_id, + + LGFA_PU AS prix_unitaire, + 0::numeric AS taux_0, + LGFA_TXFINA AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_22, + + COALESCE(LGFA_DADMI,PIEC_DDACT) AS date_debut, + COALESCE(LGFA_DADMI,PIEC_DDACT) AS date_fin, + LGFA_QT AS nb_rubrique, + LGFA_QT AS nb_prestation, + LGFA_MONT AS montant_facture, + 0::numeric AS montant_facture_0, + LGFA_MONT AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + LGFA_MONREM AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + LGFA_MONREM AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS rubrique_facture_id + FROM prod_anthadine.F_A_PIEC + JOIN prod_anthadine.A_F_LGFA ON F_A_PIEC.PIEC_CODE = A_F_LGFA.PIEC_CODE + JOIN prod_anthadine.S_P_PCHA ON f_a_piec.serv_code = s_p_pcha.serv_code + AND f_a_piec.mala_indi_code = s_p_pcha.indi_code + AND s_p_pcha.pcha_ddebu <= f_a_piec.piec_dpact + AND s_p_pcha.pcha_dfsej >= f_a_piec.piec_dpact + LEFT JOIN prod_anthadine.S_O_RECO ON A_F_LGFA.S_O_RECO_IDENT = S_O_RECO.IDENT + LEFT JOIN prod_anthadine.S_O_TRAI ON S_O_RECO.TRAI_CODE = S_O_TRAI.TRAI_CODE + LEFT JOIN base.t_ucd ON TRAI_UCD = t_ucd.code + JOIN w_factures_mo ON w_factures_mo.PIEC_CODE = F_A_PIEC.PIEC_CODE + JOIN activite[PX].p_sejours ON w_factures_mo.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_rubriques_facturation ON 'MO' = t_rubriques_facturation.code_original + JOIN activite.t_prestations ON 'MO' = t_prestations.code + LEFT JOIN activite.t_compte ON 0 = t_compte.code + WHERE LGFA_ONERE = '1' + ; + + UPDATE w_factures_lignes_c_mo w_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_mouvements_sejour + WHERE + w_factures_lignes_c.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_lignes_c.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + w_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_c_mo'); + + + + -- Validation des lignes de facture + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_1'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_2'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_3'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_4'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_5'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_6'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_7'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_8'); + + INSERT INTO activite[PX].p_factures_lignes_c ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1, + origine_facturation_id + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_1, + origine_facturation_id + FROM w_factures_lignes_c + WHERE montant_facture <> 0; + + + INSERT INTO activite[PX].p_factures_lignes_c ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + ucd_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1, + origine_facturation_id + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + ucd_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_1, + origine_facturation_id + FROM w_factures_lignes_c_mo + WHERE montant_facture <> 0 OR + montant_comptabilise <> 0; + + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_8'); + + + ]]> + + + + = '20120101' AND + date_vente IS NOT NULL AND + (montant_comptabilise <> 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5; + + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + facture_id, + no_facture, + date_trunc('month',date_vente) + interval '1 month' - interval '1 day', + rubrique_comptabilisation_id, + prestation_id, + SUM(montant_comptabilise), + SUM(montant_comptabilise_0), + SUM(montant_comptabilise_1), + SUM(montant_comptabilise_2), + SUM(montant_comptabilise_22), + 0, + 0, + 0, + 0, + 0 + FROM w_factures_lignes_c_mo w_factures_lignes_c + WHERE date_vente >= '20120101' AND + date_vente IS NOT NULL AND + (montant_comptabilise <> 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5; + + + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + w_factures.oid AS facture_id, + no_facture, + REGL_DATE::date, + 0::bigint AS rubrique_comptabilisation_id, + 0::bigint AS prestation_id, + 0, + 0, + 0, + 0, + 0, + SUM(REGL_MONT) AS montant_regle, + SUM(CASE WHEN type = 0 THEN REGL_MONT ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN type = 1 THEN REGL_MONT ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN type = 2 THEN REGL_MONT ELSE 0 END) AS montant_regle_2, + 0 AS montant_regle_22 + FROM ( + SELECT 0 AS type, FSEJ_CODE, REGL_MONT, REGL_DATE FROM prod_anthadine.V_F_REGP + UNION ALL + SELECT 1, FSEJ_CODE, REGL_MONT, REGL_DATE FROM prod_anthadine.V_F_REGS + UNION ALL + SELECT 2, FSEJ_CODE, REGL_MONT, REGL_DATE FROM prod_anthadine.V_F_REGC + ) sub + JOIN prod_anthadine.A_F_FSEJ ON A_F_FSEJ.FSEJ_CODE = sub.FSEJ_CODE + JOIN w_factures ON FSEJ_NUM = w_factures.no_facture + GROUP BY 1,2,3,4,5 + ; + + + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_1'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_8'); + + -- Si sejour solde, solde des factures lignes à lignes + DROP TABLE IF EXISTS w_sejour_solde; + CREATE TEMP TABLE w_sejour_solde AS + SELECT no_sejour, + MAX(CASE WHEN montant_regle <> 0 THEN date_comptable ELSE NULL END) AS date_solde + FROM activite[PX].p_factures_soldes_c + JOIN activite[PX].p_factures ON p_factures_soldes_c.no_facture = p_factures.no_facture + GROUP BY 1 + HAVING SUM(montant_comptabilise) = SUM(montant_regle) + ; + + ANALYSE w_sejour_solde + ; + + DROP TABLE IF EXISTS w_facture_solde; + CREATE TEMP TABLE w_facture_solde AS + SELECT p_factures_soldes_c.no_facture, + p_factures_soldes_c.facture_id, + p_factures_soldes_c.rubrique_comptabilisee_id, + p_factures_soldes_c.prestation_id, + MAX(w_sejour_solde.date_solde) AS date_solde, + SUM(montant_comptabilise) - SUM(montant_regle) AS montant_solde, + SUM(montant_comptabilise_0) - SUM(montant_regle_0) AS montant_solde_0, + SUM(montant_comptabilise_1) - SUM(montant_regle_1) AS montant_solde_1, + SUM(montant_comptabilise_2) - SUM(montant_regle_2) AS montant_solde_2 + FROM activite[PX].p_factures_soldes_c + JOIN activite[PX].p_factures ON p_factures_soldes_c.no_facture = p_factures.no_facture + JOIN w_sejour_solde ON p_factures.no_sejour = w_sejour_solde.no_sejour + GROUP BY 1,2,3,4 + HAVING SUM(montant_comptabilise) IS DISTINCT FROM SUM(montant_regle) + ; + + ANALYSE w_facture_solde + ; + + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + facture_id, + no_facture, + date_solde, + rubrique_comptabilisee_id, + prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + montant_solde AS montant_regle, + montant_solde_0 AS montant_regle_0, + montant_solde_1 AS montant_regle_1, + montant_solde_2 AS montant_regle_2, + 0::numeric AS montant_regle_22, + '1'::text AS od_non_comptabilise + FROM w_facture_solde + ; + + UPDATE activite[PX].p_factures SET + montant_regle_c = montant_comptabilise_c, + montant_regle_0_c = montant_comptabilise_0_c, + montant_regle_1_c = montant_comptabilise_1_c, + montant_regle_2_c = montant_comptabilise_2_c + FROM w_sejour_solde + WHERE p_factures.no_sejour = w_sejour_solde.no_sejour AND + ( + montant_regle_c <> montant_comptabilise_c OR + montant_regle_0_c <> montant_comptabilise_0_c OR + montant_regle_1_c <> montant_comptabilise_1_c OR + montant_regle_2_c <> montant_comptabilise_2_c + ) + ; + + + + ]]> + + + + p_mouvements_sejour.lieu_id + ; + + + INSERT INTO activite[PX].p_factures_lignes_h( + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + acte_id, + protocole_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour + ) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + acte_id, + protocole_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour + FROM w_factures_lignes_h + ; + + UPDATE activite[PX].p_factures SET + montant_facture_h = subview.montant_facture, + montant_facture_0_h = subview.montant_facture_0, + montant_facture_1_h = subview.montant_facture_1, + montant_facture_2_h = subview.montant_facture_2, + montant_facture_22_h = subview.montant_facture_22, + montant_comptabilise_h = subview.montant_comptabilise, + montant_comptabilise_0_h = subview.montant_comptabilise_0, + montant_comptabilise_1_h = subview.montant_comptabilise_1, + montant_comptabilise_2_h = subview.montant_comptabilise_2, + montant_comptabilise_22_h = subview.montant_comptabilise_22 + FROM + ( + SELECT no_facture, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22 + FROM w_factures_lignes_h + GROUP BY 1 + ) subview + WHERE p_factures.no_facture = subview.no_facture + ; + + ]]> + + + + 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5; + + ]]> + + + + + + + + + + + + 0 + WHERE t_tiers_payant.code_original = IDENT AND + (grand_regime_id = 0 OR grand_regime_id IS NULL); + + + INSERT INTO activite[PX].t_tiers_payant(code_original, code, type_tiers_payant, texte, texte_court) + SELECT IDENT, CAIC_CODE, '2', CAIC_NOM, LEFT(CAIC_NOM,50) + FROM prod_anthadine.S_S_CAIC + WHERE IDENT NOT IN (SELECT code_original FROM activite[PX].t_tiers_payant WHERE code_original IS NOT NULL) + ; + + + ]]> + + + + w_medecins.NOM OR + t_medecins_administratifs.prenom <> PRNOM OR + t_medecins_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid,0) OR + t_medecins_administratifs.medecin_id <> w_medecins.medecin_id + ); + + + INSERT INTO activite[PX].t_medecins_traitants_administratifs(code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT DISTINCT INDI_CODE, substr(translate(NOM,' -=()''',''),1,5) || substr(translate(PRNOM,' -=()''',''),1,2), NOM, PRNOM, COALESCE(t_specialites_medecin.oid,0), medecin_id + FROM w_medecins + LEFT JOIN base.t_specialites_medecin ON SPPS_CODE = t_specialites_medecin.code_original + WHERE INDI_CODE NOT IN (SELECT code_original FROM activite[PX].t_medecins_traitants_administratifs); + + UPDATE activite[PX].t_medecins_traitants_administratifs + SET nom = w_medecins.NOM, + prenom = PRNOM, + specialite_id = COALESCE(t_specialites_medecin.oid,0), + medecin_id = w_medecins.medecin_id + FROM w_medecins LEFT JOIN base.t_specialites_medecin ON SPPS_CODE = t_specialites_medecin.code_original + WHERE w_medecins.INDI_CODE = t_medecins_traitants_administratifs.code_original + AND ( + t_medecins_traitants_administratifs.nom <> w_medecins.NOM OR + t_medecins_traitants_administratifs.prenom <> PRNOM OR + t_medecins_traitants_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid,0) OR + t_medecins_traitants_administratifs.medecin_id <> w_medecins.medecin_id + ); + + UPDATE base.t_medecins SET + code = CASE WHEN t_medecins.code <> '' THEN t_medecins.code ELSE subview.code END, + specialite_id = CASE WHEN t_medecins.specialite_id <> 0 THEN t_medecins.specialite_id ELSE subview.specialite_id END + FROM + ( + SELECT t_medecins.oid, + MAX(t_medecins_administratifs.code) AS code, + MIN(t_medecins_administratifs.specialite_id) as specialite_id + FROM base.t_medecins + JOIN activite[PX].t_medecins_administratifs ON t_medecins.oid = t_medecins_administratifs.medecin_id + JOIN base.t_specialites_medecin ON t_medecins_administratifs.specialite_id = t_specialites_medecin.oid + GROUP BY t_medecins.oid + ) subview + WHERE t_medecins.oid = subview.oid AND + t_medecins.oid <> 0 AND + ( + t_medecins.specialite_id = 0 OR + t_medecins.code = '' OR + t_medecins.code IS NULL + ) + ; + ]]> + + + + COALESCE(t_dmt.oid,0); + + + -- Unités fonctionnelles + + INSERT INTO activite[PX].t_unites_fonctionnelles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_fonctionnelles); + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT UO_CODE, UO_CODE, UO_LIBE, LEFT(UO_LIBE,50) + FROM prod_anthadine.C_S_UO + LEFT JOIN activite[PX].t_unites_fonctionnelles ON UO_CODE = code_original + WHERE UOTYPE_CODE = 2 AND + t_unites_fonctionnelles.oid IS NULL + ; + + -- Unités médicales + + INSERT INTO activite[PX].t_unites_medicales(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_medicales); + + + + -- Activités + + INSERT INTO activite[PX].t_activites(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_activites); + + INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court) + SELECT UO_CODE, UO_CODE, UO_LIBE, LEFT(UO_LIBE,50) + FROM prod_anthadine.C_S_UO + LEFT JOIN activite[PX].t_activites ON UO_CODE = code_original + WHERE UOTYPE_CODE = 1 AND + t_activites.oid IS NULL + ; + + -- Etages et lits + + INSERT INTO activite[PX].t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_etages); + + INSERT INTO activite[PX].t_lits(oid, code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0, 'N' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_lits); + + + ]]> + + + + '' THEN PRES_CODE + ELSE CPRE_CODE END AS rubrique_code, + CASE + WHEN PRES_CODE <> '' THEN PRES_CODE + ELSE CPRE_CODE END AS prestation_code, + 0::bigint AS rubrique_facturation_id, + 0::bigint AS prestation_id, + 0::bigint AS acte_id + FROM prod_anthadine.S_N_VCAL + ORDER BY PRES_CODE, CPRE_CODE + ; + + UPDATE w_S_N_VCAL + SET rubrique_code = rubrique_code || '-' || VCAL_CODE + WHERE rubrique_code IN + (SELECt rubrique_code FROM w_S_N_VCAL GROUp BY 1 HAVING count(*) > 1) + ; + + + + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT + rubrique_code_original, + rubrique_code, + VCAL_LIBEL, + VCAL_LIBEL + FROM w_S_N_VCAL + WHERE rubrique_code_original NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + ; + + UPDATE w_S_N_VCAL + SET rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + WHERE t_rubriques_facturation.code_original = rubrique_code_original + ; + + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT + prestation_code, + prestation_code, + prestation_code, + prestation_code + FROM w_S_N_VCAL + WHERE prestation_code NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) AND + prestation_code <> '' + GROUP BY 1 + ; + + UPDATE w_S_N_VCAL + SET prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE t_prestations.code = prestation_code + ; + + + INSERT INTO base.t_actes(code, texte, texte_court, nomenclature) + SELECT + prestation_code, + prestation_code, + prestation_code, + 'NGAP' + FROM w_S_N_VCAL + WHERE prestation_code NOT IN (SELECT code FROM base.t_actes WHERE nomenclature = 'NGAP') AND + prestation_code <> '' + GROUP BY 1 + ; + + UPDATE w_S_N_VCAL + SET acte_id = t_actes.oid + FROM base.t_actes + WHERE t_actes.code = prestation_code + ; + + ANALYSE w_S_N_VCAL + ; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT + LGHT_CODE, + LGHT_CODE, + LGHT_LIBE, + LEFT(LGHT_LIBE,50) + FROM prod_anthadine.A_C_LGHT + WHERE LGHT_CODE NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code IS NOT NULL) + ; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT + 'MO'::text, + 'MO'::text, + 'Molecules Onereuses'::text, + 'Molecules Onereuses'::text + WHERE 'MO'::text NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + ; + + + INSERT INTO activite.t_prestations(oid, code_original, code, texte, texte_court, clinique_honoraire) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée', '' WHERE 0 NOT IN (SELECT oid FROM activite.t_prestations); + + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT + 'MO'::text, + 'MO'::text, + 'Molecules Onereuses'::text, + 'Molecules Onereuses'::text + WHERE 'MO'::text NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + ; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT 'CTI_GHT', 'GHT', 'Groupe homogène de tarifs', 'Groupe homogène de tarifs' + WHERE 'GHT' NOT IN (SELECT code FROM activite[PX].t_prestations); + + INSERT INTO activite[PX].t_compte(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_compte); + + ]]> + + + + + + + + + + '2099-12-31'; + + + ]]> + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.date_groupage, + p_sejours.ghs_id, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour, + + 0::numeric AS delai_groupage, + 0::numeric AS delai_facture, + 0::numeric AS delai_expedition, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_solde_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_solde_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_solde_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_22 + + FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY 1,2,3,4,5; + + + UPDATE w_sejours_total + SET date_groupage = date_facture + WHERE (date_groupage IS null OR date_groupage = '20991231' OR date_groupage = '00010101') AND + date_facture <> '2099-12-31'; + + + UPDATE w_sejours_total SET + date_groupage = CASE WHEN date_groupage > '00010101' THEN date_groupage ELSE '20991231' END, + date_facture = CASE WHEN date_facture> '00010101' THEN date_facture ELSE '20991231' END, + date_expedition = CASE WHEN date_expedition > '00010101' THEN date_expedition ELSE '20991231' END, + date_solde = CASE WHEN date_solde > '00010101' THEN date_solde ELSE '20991231' END, + date_expedition_0 = CASE WHEN date_expedition_0 > '00010101' THEN date_expedition_0 ELSE '20991231' END, + date_solde_0 = CASE WHEN date_solde_0 > '00010101' THEN date_solde_0 ELSE '20991231' END, + date_expedition_1 = CASE WHEN date_expedition_1 > '00010101' THEN date_expedition_1 ELSE '20991231' END, + date_solde_1 = CASE WHEN date_solde_1 > '00010101' THEN date_solde_1 ELSE '20991231' END, + date_expedition_2 = CASE WHEN date_expedition_2 > '00010101' THEN date_expedition_2 ELSE '20991231' END, + date_solde_2 = CASE WHEN date_solde_2 > '00010101' THEN date_solde_2 ELSE '20991231' END, + date_expedition_22 = CASE WHEN date_expedition_22 > '00010101' THEN date_expedition_22 ELSE '20991231' END, + date_solde_22 = CASE WHEN date_solde_22 > '00010101' THEN date_solde_22 ELSE '20991231' END; + + + UPDATE w_sejours_total SET + delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END, + delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END, + delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END, + delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END, + delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END, + delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END, + delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END, + delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END, + delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END, + delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END, + delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END, + delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END; + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = w_sejours_total.date_expedition_0, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = w_sejours_total.date_expedition_1, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = w_sejours_total.date_expedition_2, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = w_sejours_total.date_expedition_22, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour, + + + delai_groupage = w_sejours_total.delai_groupage, + delai_facture = w_sejours_total.delai_facture, + delai_expedition = w_sejours_total.delai_expedition, + delai_solde = w_sejours_total.delai_solde, + delai_expedition_0 = w_sejours_total.delai_expedition_0, + delai_solde_0 = w_sejours_total.delai_solde_0, + delai_expedition_1 = w_sejours_total.delai_expedition_1, + delai_solde_1 = w_sejours_total.delai_solde_1, + delai_expedition_2 = w_sejours_total.delai_expedition_2, + delai_solde_2 = w_sejours_total.delai_solde_2, + delai_expedition_22 = w_sejours_total.delai_expedition_22, + delai_solde_22 = w_sejours_total.delai_solde_22 + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM w_sejours_total.date_expedition_0 OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM w_sejours_total.date_expedition_1 OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM w_sejours_total.date_expedition_2 OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM w_sejours_total.date_expedition_22 OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour OR + + p_sejours.delai_groupage IS DISTINCT FROM w_sejours_total.delai_groupage OR + p_sejours.delai_facture IS DISTINCT FROM w_sejours_total.delai_facture OR + p_sejours.delai_expedition IS DISTINCT FROM w_sejours_total.delai_expedition OR + p_sejours.delai_solde IS DISTINCT FROM w_sejours_total.delai_solde OR + p_sejours.delai_expedition_0 IS DISTINCT FROM w_sejours_total.delai_expedition_0 OR + p_sejours.delai_solde_0 IS DISTINCT FROM w_sejours_total.delai_solde_0 OR + p_sejours.delai_expedition_1 IS DISTINCT FROM w_sejours_total.delai_expedition_1 OR + p_sejours.delai_solde_1 IS DISTINCT FROM w_sejours_total.delai_solde_1 OR + p_sejours.delai_expedition_2 IS DISTINCT FROM w_sejours_total.delai_expedition_2 OR + p_sejours.delai_solde_2 IS DISTINCT FROM w_sejours_total.delai_solde_2 OR + p_sejours.delai_expedition_22 IS DISTINCT FROM w_sejours_total.delai_expedition_22 OR + p_sejours.delai_solde_22 IS DISTINCT FROM w_sejours_total.delai_solde_22 + + ); + + + ]]> + + + + + + + diff --git a/import_activite/iCTI_import_activite_CALYSTENE.XML b/import_activite/iCTI_import_activite_CALYSTENE.XML new file mode 100644 index 0000000..f08631f --- /dev/null +++ b/import_activite/iCTI_import_activite_CALYSTENE.XML @@ -0,0 +1,3751 @@ + + + + + + + + = '20090101' OR DATE_SORT_REEL >= '20090101' OR DATE_SORT_REEL IS NULL OR + NUM_ADMINISTRATIF IN (SELECT NUM_ENTREE FROM w_G_SP3 G_SP3 WHERE DT_LANC >= '20090101' OR DT_FACTURE >= '20090101') + ; + + + -- Correction SEJOUR n° interne en double + UPDATE w_SEJOUR_ok + SET NUM_DEM_ADM = subview.NUM_DEM_ADM + 10000000 + FROM + (SELECT NUM_DEM_ADM, MIN(w_SEJOUR_ok.NUM) AS NUM + FROM w_SEJOUR_ok + WHERE OK = 'O' + GROUP BY 1 + HAVING COUNT(*) > 1 + ) subview + WHERE w_SEJOUR_ok.NUM_DEM_ADM = subview.NUM_DEM_ADM AND w_SEJOUR_ok.NUM = subview.NUM; + + + -- Correction SEJOUR (numéro, de sejour en double) + + UPDATE w_SEJOUR_ok + SET NUM_ADMINISTRATIF = NUM_DEM_ADM + WHERE NUM_ADMINISTRATIF = ''; + + + UPDATE w_SEJOUR_ok + SET NUM_ADMINISTRATIF = subview.NUM_ADMINISTRATIF || '-1' + FROM + (SELECT NUM_ADMINISTRATIF, (min(Array[DATE_ENTREE::text, NUM_DEM_ADM::text]))[2]::numeric AS NUM_DEM_ADM + FROM w_SEJOUR_ok + WHERE OK = 'O' + GROUP BY 1 + HAVING COUNT(*) > 1 + ) subview + WHERE w_SEJOUR_ok.NUM_DEM_ADM = subview.NUM_DEM_ADM AND w_SEJOUR_ok.OK = 'O'; + + UPDATE w_SEJOUR_ok + SET NUM_ADMINISTRATIF = subview.NUM_ADMINISTRATIF || '-2' + FROM + (SELECT NUM_ADMINISTRATIF, (min(Array[DATE_ENTREE::text, NUM_DEM_ADM::text]))[2]::numeric AS NUM_DEM_ADM + FROM w_SEJOUR_ok + WHERE OK = 'O' + GROUP BY 1 + HAVING COUNT(*) > 1 + ) subview + WHERE w_SEJOUR_ok.NUM_DEM_ADM = subview.NUM_DEM_ADM AND w_SEJOUR_ok.OK = 'O'; + + UPDATE w_SEJOUR_ok + SET NUM_ADMINISTRATIF = subview.NUM_ADMINISTRATIF || '-3' + FROM + (SELECT NUM_ADMINISTRATIF, (min(Array[DATE_ENTREE::text, NUM_DEM_ADM::text]))[2]::numeric AS NUM_DEM_ADM + FROM w_SEJOUR_ok + WHERE OK = 'O' + GROUP BY 1 + HAVING COUNT(*) > 1 + ) subview + WHERE w_SEJOUR_ok.NUM_DEM_ADM = subview.NUM_DEM_ADM AND w_SEJOUR_ok.OK = 'O'; + + UPDATE w_SEJOUR_ok + SET NUM_ADMINISTRATIF = subview.NUM_ADMINISTRATIF || '-4' + FROM + (SELECT NUM_ADMINISTRATIF, (min(Array[DATE_ENTREE::text, NUM_DEM_ADM::text]))[2]::numeric AS NUM_DEM_ADM + FROM w_SEJOUR_ok + WHERE OK = 'O' + GROUP BY 1 + HAVING COUNT(*) > 1 + ) subview + WHERE w_SEJOUR_ok.NUM_DEM_ADM = subview.NUM_DEM_ADM AND w_SEJOUR_ok.OK = 'O'; + + UPDATE w_SEJOUR_ok + SET NUM_ADMINISTRATIF = subview.NUM_ADMINISTRATIF || '-5' + FROM + (SELECT NUM_ADMINISTRATIF, (min(Array[DATE_ENTREE::text, NUM_DEM_ADM::text]))[2]::numeric AS NUM_DEM_ADM + FROM w_SEJOUR_ok + WHERE OK = 'O' + GROUP BY 1 + HAVING COUNT(*) > 1 + ) subview + WHERE w_SEJOUR_ok.NUM_DEM_ADM = subview.NUM_DEM_ADM AND w_SEJOUR_ok.OK = 'O'; + + + UPDATE w_SEJOUR_ok + SET NUM_DEM_ADM = subview.NUM_DEM_ADM + 10000000 + FROM + (SELECT NUM_DEM_ADM, min(w_SEJOUR_ok.CTID) AS minCTID + FROM w_SEJOUR_ok + WHERE OK = 'O' + GROUP BY 1 + HAVING COUNT(*) > 1 + ) subview + WHERE w_SEJOUR_ok.NUM_DEM_ADM = subview.NUM_DEM_ADM AND w_SEJOUR_ok.CTID = minCTID; + + -- Service = UF + type hosp + + UPDATE w_SEJOUR_ok + SET CODE_SER_ENT = CASE WHEN CODE_UFR_ENT <> '' THEN CODE_UFR_ENT ELSE '9999' END || '_CO' + WHERE OK = 'O' AND TYPE_HOSP_ENT ILIKE '%consultation%' AND CODE_SER_ENT = ''; + + + UPDATE w_SEJOUR_ok + SET CODE_SER_ENT = CASE WHEN CODE_UFR_ENT <> '' THEN CODE_UFR_ENT ELSE '9999' END || '_HC' + WHERE OK = 'O' AND TYPE_HOSP_ENT ILIKE '%complete%' AND CODE_SER_ENT = ''; + + + UPDATE w_SEJOUR_ok + SET CODE_SER_ENT = CASE WHEN CODE_UFR_ENT <> '' THEN CODE_UFR_ENT ELSE '9999' END || '_HS' + WHERE OK = 'O' AND TYPE_HOSP_ENT ILIKE '%semaine%' AND CODE_SER_ENT = ''; + + UPDATE w_SEJOUR_ok + SET CODE_SER_ENT = CASE WHEN CODE_UFR_ENT <> '' THEN CODE_UFR_ENT ELSE '9999' END || '_AM' + WHERE OK = 'O' AND TYPE_HOSP_ENT ILIKE '%ambulatoire%' AND CODE_SER_ENT = ''; + + UPDATE w_SEJOUR_ok + SET CODE_SER_ENT = CASE WHEN CODE_UFR_ENT <> '' THEN CODE_UFR_ENT ELSE '9999' END || '_HJ' + WHERE OK = 'O' AND TYPE_HOSP_ENT ILIKE '%jour%' AND CODE_SER_ENT = ''; + + -- index + + ALTER TABLE w_SEJOUR_ok ADD CONSTRAINT w_SEJOUR_ok_pkey PRIMARY KEY(NUM_DEM_ADM); + + CREATE INDEX w_SEJOUR_ok_i1 + ON w_SEJOUR_ok + USING btree + (NUM_ADMINISTRATIF); + + + + -- préparation table mutations + + DROP TABLE IF EXISTS w_MUTATION_ok; + CREATE TEMP TABLE w_MUTATION_ok AS + SELECT MUTATION.*, ''::text AS CODE_SER_DEST + FROM prod_calystene.MUTATION + JOIN w_SEJOUR_ok ON MUTATION.NUM_DEM_ADM = w_SEJOUR_ok.NUM_DEM_ADM AND w_SEJOUR_ok.OK = 'O'; + + + UPDATE w_MUTATION_ok + SET CODE_SER_DEST = CASE WHEN CODE_UFR_DEST <> '' THEN CODE_UFR_DEST ELSE '9999' END || '_CO' + WHERE TYPE_HOSP_DEST ILIKE '%consultation%' AND CODE_SER_DEST = ''; + + + UPDATE w_MUTATION_ok + SET CODE_SER_DEST = CASE WHEN CODE_UFR_DEST <> '' THEN CODE_UFR_DEST ELSE '9999' END || '_HC' + WHERE TYPE_HOSP_DEST ILIKE '%complete%' AND CODE_SER_DEST = ''; + + + UPDATE w_MUTATION_ok + SET CODE_SER_DEST = CASE WHEN CODE_UFR_DEST <> '' THEN CODE_UFR_DEST ELSE '9999' END || '_HS' + WHERE TYPE_HOSP_DEST ILIKE '%semaine%' AND CODE_SER_DEST = ''; + + UPDATE w_MUTATION_ok + SET CODE_SER_DEST = CASE WHEN CODE_UFR_DEST <> '' THEN CODE_UFR_DEST ELSE '9999' END || '_AM' + WHERE TYPE_HOSP_DEST ILIKE '%ambulatoire%' AND CODE_SER_DEST = ''; + + UPDATE w_MUTATION_ok + SET CODE_SER_DEST = CASE WHEN CODE_UFR_DEST <> '' THEN CODE_UFR_DEST ELSE '9999' END || '_HJ' + WHERE TYPE_HOSP_DEST ILIKE '%jour%' AND CODE_SER_DEST = ''; + + CREATE INDEX w_MUTATION_ok_i1 + ON w_MUTATION_ok + USING btree + (NUM_DEM_ADM); + + + + + ]]> + + + + + + + + + + + + + + + + '' THEN NUM_ADHESION ELSE IMMATRICULATION END ELSE '' END]))[2]::text AS NUM_ADHESION, + (MAX(ARRAY[DT_DEBUT::text, CASE WHEN TYPE_ORGANISME <> 'M' THEN COALESCE(t_tiers_payant.oid,0)::text ELSE '0' END]))[2]::bigint AS tiers_payant_22_id, + (MAX(ARRAY[DT_DEBUT::text, CASE WHEN TYPE_ORGANISME <> 'M' THEN CASE WHEN NUM_ADHESION <> '' THEN NUM_ADHESION ELSE IMMATRICULATION END ELSE '' END]))[2]::text AS NUM_ADHESION_22 + FROM prod_calystene.G_COUVERTURE_MUTUELLE + LEFT JOIN activite[PX].t_tiers_payant ON NUM_ORGANISME = code_original + GROUP BY 1; + + UPDATE w_G_COUVERTURE_MUTUELLE + SET tiers_payant_2_id = tiers_payant_22_id, + NUM_ADHESION = NUM_ADHESION_22 + WHERE tiers_payant_22_id <> 0 AND tiers_payant_2_id = 0; + + + DROP TABLE IF EXISTS w_sejours; + CREATE TEMP TABLE w_sejours AS + SELECT + w_SEJOUR_ok.NUM_ADMINISTRATIF AS no_sejour, + w_SEJOUR_ok.NUM_DEM_ADM AS code_original, + w_SEJOUR_ok.NUM AS code_original_2, + w_SEJOUR_ok.NUM_DOS_AD AS no_patient, + date(w_SEJOUR_ok.DATE_ENTREE) AS date_entree, + to_number('0' || HEURE_ENTREE,'000000') * 100 AS heure_entree, + COALESCE(w_SEJOUR_ok.DATE_SORT_REEL, w_SEJOUR_ok.DATE_SORTIE_PREV, '20991231') AS date_sortie, + COALESCE(w_HISTO_MVTS_sortie.heure_sortie,0) AS heure_sortie, + CASE WHEN PATIENT.SEXE IN ('1','2') THEN '2' ELSE '1' END AS code_sexe, + 0 AS age, + CASE WHEN DATE_SORT_REEL IS NOT NULL THEN 1 ELSE 0 END AS code_sorti, + 0 AS code_prevu, + CASE + WHEN t_services_facturation.type_sejour IN ('1', '2', '3', '4', '5') THEN t_services_facturation.type_sejour + WHEN t_modes_traitement.code IN ('07') OR t_dmt.code In ('958') THEN '3' + WHEN w_SEJOUR_ok.TYPE_ENTREE = '9' THEN '3' + WHEN t_modes_traitement.code IN ('19', '23') AND date(w_SEJOUR_ok.DATE_SORT_REEL) = date(w_SEJOUR_ok.DATE_ENTREE) THEN '2' + WHEN t_modes_traitement.code IN ('04') AND date(w_SEJOUR_ok.DATE_SORT_REEL) = date(w_SEJOUR_ok.DATE_ENTREE) THEN '2' + WHEN t_modes_traitement.code IN ('03') AND date(w_SEJOUR_ok.DATE_SORT_REEL) = date(w_SEJOUR_ok.DATE_ENTREE) THEN '2' + WHEN t_modes_traitement.code IN ('10') AND date(w_SEJOUR_ok.DATE_SORT_REEL) <= date(w_SEJOUR_ok.DATE_ENTREE) + interval '1 day' THEN '3' + ELSE '1' END AS type_sejour, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_sejour_id, + 0 AS ghs_id, + '20991231'::date AS date_groupage, + '0'::text AS code_cp_demandee, + t_services_facturation.mode_traitement_id AS mode_traitement_id, + SUBSTR(w_SEJOUR_ok.MODE_ENTREE,1,1) AS mode_entree, + '0'::character(1) AS provenance, + '8'::character(1) AS mode_sortie, + '0'::character(1) AS destination, + t_tiers_payant.oid AS tiers_payant_0_id, + COALESCE(w_G_COUVERTURE_CAISSE.tiers_payant_1_id,0) AS tiers_payant_1_id, + COALESCE(w_G_COUVERTURE_MUTUELLE.tiers_payant_2_id,0) AS tiers_payant_2_id, + COALESCE(w_G_COUVERTURE_MUTUELLE.tiers_payant_22_id,0) AS tiers_payant_22_id, + 1::numeric AS est_budget_global, + 0::bigint AS code_postal_id + FROM w_SEJOUR_ok + JOIN prod_calystene.PATIENT ON w_SEJOUR_ok.NUM_DOS_AD = PATIENT.NUM_DOS_AD + LEFT JOIN w_HISTO_MVTS_sortie ON w_SEJOUR_ok.NUM_DEM_ADM = w_HISTO_MVTS_sortie.NUM_DEM_ADM + LEFT JOIN w_G_COUVERTURE_MUTUELLE ON w_SEJOUR_ok.NUM_DEM_ADM = w_G_COUVERTURE_MUTUELLE.NUM_DEM_ADM + LEFT JOIN w_G_COUVERTURE_CAISSE ON w_SEJOUR_ok.NUM_DEM_ADM = w_G_COUVERTURE_CAISSE.NUM_DEM_ADM + LEFT JOIN activite[PX].t_tiers_payant ON code_original = '0' + LEFT JOIN activite[PX].t_services_facturation ON w_SEJOUR_ok.CODE_SER_ENT = t_services_facturation.code_original + LEFT JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + LEFT JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + LEFT JOIN activite[PX].t_medecins_administratifs ON NUM_MED_RESP = t_medecins_administratifs.code_original + WHERE w_SEJOUR_ok.OK = 'O' + ; + + -- Forcage type selon séjour + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour + FROM activite.t_sejour + WHERE t_sejour.no_sejour = w_sejours.no_sejour AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9'); + + UPDATE w_sejours SET MODE_SORTIE = SORTIE_DEF.MODE_SORTIE + FROM prod_calystene.SORTIE_DEF + WHERE code_original = SORTIE_DEF.NUM_DEM_ADM AND + LENGTH(SORTIE_DEF.MODE_SORTIE) <= 1; + + UPDATE w_sejours SET + mode_entree = substr(SEJOUR_SSR.MODE_ENTREE,1,1), + provenance = substr(SEJOUR_SSR.PROVENANCE,1,1), + mode_sortie = substr(SEJOUR_SSR.MODE_SORTIE,1,1), + destination = substr(SEJOUR_SSR.DESTINATION,1,1) + FROM prod_calystene.SEJOUR_SSR + WHERE code_original_2 = SEJOUR_SSR.NUM_SEJ; + + + + -- Code postal + DROP TABLE IF EXISTS w_sejours_cp; + CREATE TEMP TABLE w_sejours_cp AS + SELECT no_sejour, MAX(t_codes_postaux.oid) AS code_postal_id + FROM w_sejours + JOIN prod_calystene.SEJOUR ON w_sejours.code_original = SEJOUR.NUM_DEM_ADM + JOIN prod_calystene.G_ENTREE ON G_ENTREE.NUM_DEM_ADM = SEJOUR.NUM_DEM_ADM + JOIN prod_calystene.PRE_ADM ON PRE_ADM.NUM = SEJOUR.NUM_DEM_ADM + JOIN base.t_codes_postaux ON PRE_ADM.CP = t_codes_postaux.code + GROUP BY 1; + + UPDATE w_sejours + SET code_postal_id = w_sejours_cp.code_postal_id + FROM w_sejours_cp + WHERE w_sejours_cp.no_sejour = w_sejours.no_sejour AND + w_sejours.code_postal_id IS DISTINCT FROM w_sejours_cp.code_postal_id; + + + + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_13'); + + INSERT INTO activite[PX].p_sejours ( + no_sejour, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + medecin_sejour_id, + ghs_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + est_budget_global, + code_postal_id + ) + SELECT + w_sejours.no_sejour, + w_sejours.code_original, + w_sejours.no_patient, + w_sejours.date_entree, + w_sejours.heure_entree, + w_sejours.date_sortie, + w_sejours.heure_sortie, + w_sejours.code_sexe, + w_sejours.age, + w_sejours.code_sorti, + w_sejours.code_prevu, + w_sejours.type_sejour, + w_sejours.medecin_sejour_id, + w_sejours.ghs_id, + w_sejours.date_groupage, + w_sejours.code_cp_demandee, + w_sejours.mode_traitement_id, + w_sejours.mode_entree, + w_sejours.provenance, + w_sejours.mode_sortie, + w_sejours.destination, + w_sejours.tiers_payant_0_id, + w_sejours.tiers_payant_1_id, + w_sejours.tiers_payant_2_id, + w_sejours.tiers_payant_22_id, + w_sejours.est_budget_global, + w_sejours.code_postal_id + + FROM w_sejours LEFT JOIN activite[PX].p_sejours ON (w_sejours.no_sejour = p_sejours.no_sejour) + WHERE p_sejours.no_sejour IS NULL; + + + + + DELETE FROM activite[PX].p_sejours + USING activite[PX].p_sejours AS p_sejours_i LEFT JOIN w_sejours ON (w_sejours.no_sejour = p_sejours_i.no_sejour) + WHERE + p_sejours.no_sejour = p_sejours_i.no_sejour AND + w_sejours.no_sejour IS NULL; + + + + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_13'); + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '[PX]' = ''; + + UPDATE activite[PX].p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND + '[PX]' = ''; + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '[PX]' = ''; + + + + -- assurance + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_4'); + + INSERT INTO activite[PX].p_sejours_assurance( + sejour_id, + tiers_payant_0_id, + tiers_payant_1_id, + matricule_1, + tiers_payant_2_id, + matricule_2, + tiers_payant_22_id, + matricule_22) + SELECT + oid AS sejour_id, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + substr(IMMATRICULATION,1,30), + p_sejours.tiers_payant_2_id, + substr(NUM_ADHESION,1,30), + p_sejours.tiers_payant_22_id, + substr(NUM_ADHESION_22,1,30) AS matricule_22 + FROM activite[PX].p_sejours + LEFT JOIN w_G_COUVERTURE_MUTUELLE ON code_original = w_G_COUVERTURE_MUTUELLE.NUM_DEM_ADM + LEFT JOIN w_G_COUVERTURE_CAISSE ON code_original = w_G_COUVERTURE_CAISSE.NUM_DEM_ADM + WHERE p_sejours.etat = '' + ; + + + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_4'); + + + + ]]> + + + + '' THEN NUM_LIT_ENT ELSE '0' END AS NUM_LIT, + CODE_SER_ENT AS SER, + CODE_UFR_ENT AS UFR, + SS_UF_ENT AS SS_UF, + UF_ENT AS UF, + CASE WHEN SS_UF_ENT <> '' AND CH_ENT = '' AND NUM_LIT_ENT = '' THEN SS_UF_ENT || '|0' + WHEN SS_UF_ENT <> '' AND CH_ENT <> '' AND NUM_LIT_ENT = '' THEN SS_UF_ENT || '|' || CH_ENT + WHEN SS_UF_ENT <> '' AND CH_ENT <> '' AND NUM_LIT_ENT <> '' THEN SS_UF_ENT || '|' || CH_ENT || '|' || NUM_LIT_ENT + ELSE '0' END AS lit_code_original, + CH_ENT AS CH, + NUM_LIT_ENT AS LIT + FROM w_SEJOUR_ok + WHERE w_SEJOUR_ok.OK = 'O' + UNION + SELECT MUTATION.NUM_DEM_ADM, + DATE_MVT + HEURE_DEP::interval AS DATE_MVT, + 'M'::text AS type_mouvement, + CASE WHEN LIT_DEST <> '' THEN LIT_DEST ELSE '0' END AS NUM_LIT, + CODE_SER_DEST AS SER, + CODE_UFR_DEST AS UFR, + SS_UF_DEST AS SS_UF, + UF_DEST AS UF, + CASE WHEN SS_UF_DEST <> '' AND CH_DEST = '' AND LIT_DEST = '' THEN SS_UF_DEST || '|0' + WHEN SS_UF_DEST <> '' AND CH_DEST <> '' AND LIT_DEST = '' THEN SS_UF_DEST || '|' || CH_DEST + WHEN SS_UF_DEST <> '' AND CH_DEST <> '' AND LIT_DEST <> '' THEN SS_UF_DEST || '|' || CH_DEST || '|' || LIT_DEST + ELSE '0' END AS lit_code_original, + CH_DEST AS CH, + LIT_DEST AS LIT + FROM w_MUTATION_ok MUTATION + JOIN prod_calystene.HISTO_MVTS ON MUTATION.NUM_DEM_ADM = HISTO_MVTS.NUM_DEM_ADM AND MUTATION.NO_MVT = HISTO_MVTS.NO_MVT + JOIN w_SEJOUR_ok ON MUTATION.NUM_DEM_ADM = w_SEJOUR_ok.NUM_DEM_ADM AND w_SEJOUR_ok.OK = 'O' + UNION + SELECT HISTO_MVTS.NUM_DEM_ADM, + DATE_REEL + HEURE_DEP::interval AS DATE_MVT, + 'AD'::text AS type_mouvement, + ''::text AS NUM_LIT, + ''::text AS SER, + ''::text AS UFR, + ''::text AS SS_UF, + ''::text AS UF, + ''::text AS lit_code_original, + ''::text AS CH, + ''::text AS LIT + FROM prod_calystene.HISTO_MVTS + JOIN w_SEJOUR_ok ON HISTO_MVTS.NUM_DEM_ADM = w_SEJOUR_ok.NUM_DEM_ADM AND w_SEJOUR_ok.OK = 'O' + WHERE TYPE_MVT IN (2,3) AND HEURE_DEP <> '' AND COALESCE(HEURE_RET_REEL,HEURE_RET_PREV) <> '' + UNION + SELECT HISTO_MVTS.NUM_DEM_ADM, + COALESCE(DATE_RET_REEL + HEURE_RET_REEL::interval,DATE_RET_PREV + HEURE_RET_PREV::interval) AS DATE_MVT, + 'AR'::text AS type_mouvement, + ''::text AS NUM_LIT, + ''::text AS SER, + ''::text AS UFR, + ''::text AS SS_UF, + ''::text AS UF, + ''::text AS lit_code_original, + ''::text AS CH, + ''::text AS LIT + FROM prod_calystene.HISTO_MVTS + JOIN w_SEJOUR_ok ON HISTO_MVTS.NUM_DEM_ADM = w_SEJOUR_ok.NUM_DEM_ADM AND w_SEJOUR_ok.OK = 'O' + WHERE TYPE_MVT IN (2,3) AND HEURE_DEP <> '' AND COALESCE(HEURE_RET_REEL,HEURE_RET_PREV) <> '' + UNION + SELECT w_SEJOUR_ok.NUM_DEM_ADM, + COALESCE(w_SEJOUR_ok.DATE_SORT_REEL, w_SEJOUR_ok.DATE_SORTIE_PREV, '20991231') + + COALESCE(w_HISTO_MVTS_sortie.heure_sortie_originale,'00:00')::interval AS DATE_MVT, + 'S'::text AS type_mouvement, + ''::text AS NUM_LIT, + ''::text AS SER, + ''::text AS UFR, + ''::text AS SS_UF, + ''::text AS UF, + ''::text AS lit_code_original, + ''::text AS CH, + ''::text AS LIT + FROM w_SEJOUR_ok + LEFT JOIN w_HISTO_MVTS_sortie ON w_SEJOUR_ok.NUM_DEM_ADM = w_HISTO_MVTS_sortie.NUM_DEM_ADM + WHERE w_SEJOUR_ok.OK = 'O' + ORDER BY 1,2,3 + ) subview + + ; + + -- Traitement des absences + + SELECT base.cti_execute( + 'UPDATE w_MUTATION SET + SER_SEJ = w_MUTATION_prev.SER_SEJ, + SER = CASE WHEN w_MUTATION.type_mouvement <> ''AD'' THEN w_MUTATION_prev.SER_SEJ ELSE ''*ABS'' END, + UFR_SEJ = w_MUTATION_prev.UFR_SEJ, + UFR = CASE WHEN w_MUTATION.type_mouvement <> ''AD'' THEN w_MUTATION_prev.UFR_SEJ ELSE ''*ABS'' END, + SS_UF = w_MUTATION_prev.SS_UF, + lit_code_original = w_MUTATION_prev.lit_code_original, + CH = w_MUTATION_prev.CH, + LIT = w_MUTATION_prev.LIT + FROM w_MUTATION w_MUTATION_prev + WHERE w_MUTATION.NUM_DEM_ADM = w_MUTATION_prev.NUM_DEM_ADM AND + w_MUTATION.sequence = w_MUTATION_prev.sequence + 1 AND + w_MUTATION.type_mouvement IN (''AD'', ''AR'', ''S'') AND + w_MUTATION.UFR = '''' AND w_MUTATION_prev.UFR <> ''''', 500); + + + UPDATE w_MUTATION + SET SER = '*ABS', UFR = '*ABS' + WHERE UFR = '' AND type_mouvement = 'AD'; + + + -- Services manquant + + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, type_t2a) + SELECT SER, SER, SER, SER, '0' + FROM w_MUTATION + WHERE + SER NOT IN (SELECT code_original FROM activite[PX].t_services_facturation) + GROUP BY 1; + + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT UFR, UFR, UFR, UFR + FROM w_MUTATION + WHERE + UFR NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles) + GROUP BY 1; + + + + + -- Lits manquants + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT lit_code_original, CH || '-' || LIT, 'Ch ' || CH || ' - lit ' || LIT, CH || ' ' || LIT, t_etages.oid, 'N' + FROM w_MUTATION + JOIN activite[PX].t_etages ON SS_UF = t_etages.code_original + WHERE type_mouvement <> 'S' AND + CH <> '' AND + LIT <> '' AND + lit_code_original NOT IN (SELECT code_original FROM activite[PX].t_lits ) + GROUP BY 1,2,3,4,5; + + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT lit_code_original, CH , 'Ch ' || CH , CH , t_etages.oid, 'N' + FROM w_MUTATION + JOIN activite[PX].t_etages ON SS_UF = t_etages.code_original + WHERE type_mouvement <> 'S' AND + CH <> '' AND + LIT = '' AND + lit_code_original NOT IN (SELECT code_original FROM activite[PX].t_lits ) + GROUP BY 1,2,3,4,5; + + + + + + -- calcul date fin + + UPDATE w_MUTATION + SET DATE_FIN_MVT = CASE WHEN w_MUTATION_next.type_mouvement <> 'S' THEN w_MUTATION_next.DATE_MVT - interval '1 second' ELSE w_MUTATION_next.DATE_MVT END, + DATE_FIN_MVT_DAT = date(CASE WHEN w_MUTATION_next.type_mouvement <> 'S' THEN w_MUTATION_next.DATE_MVT - interval '1 second' ELSE w_MUTATION_next.DATE_MVT END), + DATE_FIN_MVT_TIM = extract('hour' FROM CASE WHEN w_MUTATION_next.type_mouvement <> 'S' THEN w_MUTATION_next.DATE_MVT - interval '1 second' ELSE w_MUTATION_next.DATE_MVT END) * 10000 + + extract('minute' FROM CASE WHEN w_MUTATION_next.type_mouvement <> 'S' THEN w_MUTATION_next.DATE_MVT - interval '1 second' ELSE w_MUTATION_next.DATE_MVT END) * 100 + + extract('second' FROM CASE WHEN w_MUTATION_next.type_mouvement <> 'S' THEN w_MUTATION_next.DATE_MVT - interval '1 second' ELSE w_MUTATION_next.DATE_MVT END), + type_mouvement_next = w_MUTATION_next.type_mouvement, + SER_next = w_MUTATION_next.SER, + UFR_next = w_MUTATION_next.UFR, + SS_UF_next = w_MUTATION_next.SS_UF, + lit_code_original_next = w_MUTATION_next.lit_code_original + FROM w_MUTATION w_MUTATION_next + WHERE w_MUTATION.NUM_DEM_ADM = w_MUTATION_next.NUM_DEM_ADM + AND w_MUTATION.sequence = w_MUTATION_next.sequence - 1 + AND w_MUTATION.type_mouvement <> 'S'; + + + + + -- calcul mvt avant + + UPDATE w_MUTATION + SET + type_mouvement_before = w_MUTATION_before.type_mouvement, + SER_before = w_MUTATION_before.SER, + UFR_before = w_MUTATION_before.UFR, + SS_UF_before = w_MUTATION_before.SS_UF, + lit_code_original_before = w_MUTATION_before.lit_code_original + FROM w_MUTATION w_MUTATION_before + WHERE w_MUTATION.NUM_DEM_ADM = w_MUTATION_before.NUM_DEM_ADM + AND w_MUTATION.sequence = w_MUTATION_before.sequence + 1 + AND w_MUTATION.type_mouvement <> 'S'; + + + + -- creation mouvements par jour + + DROP TABLE IF EXISTS w_mouvements_sejour; + CREATE TEMP TABLE w_mouvements_sejour AS + SELECT + w_MUTATION.NUM_DEM_ADM, + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + sequence, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE WHEN p_calendrier.date = DATE_MVT_DAT THEN DATE_MVT_TIM ELSE 0 END AS heure_debut, + CASE WHEN p_calendrier.date = DATE_FIN_MVT_DAT THEN DATE_FIN_MVT_TIM ELSE 240000 END AS heure_fin, + CASE WHEN p_calendrier.date = DATE_MVT_DAT AND type_mouvement = 'E' AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes, + CASE WHEN p_calendrier.date = DATE_FIN_MVT_DAT AND type_mouvement_next = 'S' AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes, + CASE WHEN p_calendrier.date = DATE_MVT_DAT AND type_mouvement = 'E' AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree, + CASE WHEN p_calendrier.date = DATE_FIN_MVT_DAT AND type_mouvement_next = 'S' AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie, + CASE WHEN p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN p_calendrier.date = DATE_MVT_DAT AND type_mouvement = 'E' AND p_sejours.type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires, + CASE WHEN p_calendrier.date = DATE_MVT_DAT AND type_mouvement = 'E' AND p_sejours.type_sejour = '3' THEN 1 ELSE 0 END AS nb_externes, + CASE WHEN p_calendrier.date = DATE_MVT_DAT AND type_mouvement = 'E' AND p_sejours.type_sejour <> '9' AND t_dmt.code IN ('303', '307', '308', '401', '402', '403', '404', '405', '406', '407', '408', '409') THEN 1 ELSE 0 END AS nb_urgences, + 0 as nb_seances, + + CASE WHEN p_calendrier.date = DATE_MVT_DAT AND type_mouvement IN ('D', 'M') AND p_sejours.type_sejour = '1' AND SER <> SER_before AND SER <> '*ABS' AND SER_before <> '*ABS' THEN 1 ELSE 0 END AS nb_entrees_mutation_service, + CASE WHEN p_calendrier.date = DATE_MVT_DAT AND type_mouvement_next IN ('D', 'M') AND p_sejours.type_sejour = '1' AND SER <> SER_next AND SER <> '*ABS' AND SER_next <> '*ABS' THEN 1 ELSE 0 END AS nb_sorties_mutation_service, + CASE WHEN p_calendrier.date = DATE_MVT_DAT AND type_mouvement IN ('D', 'M') AND p_sejours.type_sejour = '1' AND SS_UF <> SS_UF_before THEN 1 ELSE 0 END AS nb_entrees_mutation_etage, + CASE WHEN p_calendrier.date = DATE_MVT_DAT AND type_mouvement_next IN ('D', 'M') AND p_sejours.type_sejour = '1' AND SS_UF <> SS_UF_next THEN 1 ELSE 0 END AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + 0 AS nb_entrees_mutation_unite_medicale, + 0 AS nb_sorties_mutation_unite_medicale, + + CASE WHEN p_sejours.type_sejour = '1' AND (p_calendrier.date <> DATE_FIN_MVT_DAT OR type_mouvement_next = 'S') THEN 1 ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN t_modes_traitement.code IN ('04', '19', '20') OR (p_sejours.type_sejour = '1' AND p_calendrier.date <> DATE_FIN_MVT_DAT) THEN 1 ELSE 0 END AS nb_jours_js_non_inclus, + + CASE WHEN p_sejours.type_sejour = '1' AND t_lits.chambre_particuliere = 'O' THEN '1' ELSE '0' END AS est_chambre_particuliere, + CASE WHEN p_sejours.type_sejour = '1' AND t_lits.chambre_particuliere = 'O' AND (p_calendrier.date <> DATE_MVT_DAT OR type_mouvement_next = 'S') THEN 1 ELSE 0 END AS nb_chambres_particulieres, + + 0::numeric AS nb_bebes, + + SER, + UFR, + SS_UF, + lit_code_original, + + COALESCE(t_lieux.oid,0) AS lieu_id, + + p_sejours.medecin_sejour_id as medecin_sejour_id, + + CASE WHEN p_sejours.code_prevu = '1' OR p_calendrier.date > date(now()) THEN '1' ELSE '0' END AS est_mouvement_previsionnel, + + '0'::text AS est_premier_mouvement_jour, + '0'::text AS est_dernier_mouvement_jour + + FROM w_MUTATION + LEFT JOIN activite[PX].t_lieux ON (t_lieux.code_original_1 = SER AND + t_lieux.code_original_3 = SS_UF AND + t_lieux.code_original_4 = lit_code_original AND + t_lieux.code_original_6 = UFR ) + JOIN activite[PX].p_sejours ON w_MUTATION.NUM_DEM_ADM = p_sejours.code_original AND p_sejours.etat = '' + JOIN activite[PX].t_lits ON lit_code_original = t_lits.code_original + JOIN activite[PX].t_services_facturation ON SER = t_services_facturation.code_original + JOIN activite[PX].t_unites_fonctionnelles ON UFR = t_unites_fonctionnelles.code_original + JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + JOIN base.p_calendrier ON p_calendrier.date BETWEEN DATE_MVT_DAT AND DATE_FIN_MVT_DAT AND p_calendrier.date <= date(now()) + interval '1 month' + WHERE type_mouvement <> 'S' AND + (p_sejours.type_sejour NOT IN ('2', '3') OR (p_sejours.type_sejour IN ('2', '3') AND type_mouvement = 'E' AND p_calendrier.date = DATE_MVT_DAT)) + AND (p_sejours.code_prevu <> '1' AND p_calendrier.date <= date(now()) OR p_calendrier.date >= date(now())) + ORDER BY sequence, p_calendrier.date; + + + + + + + + + -- Actualisation lieux + + UPDATE activite[PX].t_lieux SET + service_facturation_id = t_services_facturation.oid, + lit_id = t_lits.oid, + unite_fonctionnelle_id = t_unites_fonctionnelles.oid, + mode_traitement_id = t_services_facturation.mode_traitement_id + FROM activite[PX].t_services_facturation, activite[PX].t_lits, activite[PX].t_unites_fonctionnelles + WHERE + code_original_1 = t_services_facturation.code_original AND + code_original_4 = t_lits.code_original AND + code_original_6 = t_unites_fonctionnelles.code_original AND + ( + t_lieux.service_facturation_id IS DISTINCT FROM t_services_facturation.oid OR + t_lieux.lit_id IS DISTINCT FROM t_lits.oid OR + t_lieux.unite_fonctionnelle_id IS DISTINCT FROM t_unites_fonctionnelles.oid OR + t_lieux.mode_traitement_id IS DISTINCT FROM t_services_facturation.mode_traitement_id + ); + + + -- creation nouveaux lieux + + INSERT INTO activite[PX].t_lieux( + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + code_original_6, + code_original_7, + service_facturation_id, + activite_id, + lit_id, + unite_medicale_id, + unite_fonctionnelle_id, + mode_traitement_id) + SELECT DISTINCT + SER, + '', + SS_UF, + lit_code_original, + '', + UFR, + '', + t_services_facturation.oid, + 0, + t_lits.oid, + 0, + t_unites_fonctionnelles.oid, + t_services_facturation.mode_traitement_id + FROM w_mouvements_sejour + JOIN activite[PX].t_services_facturation ON SER = t_services_facturation.code_original + JOIN activite[PX].t_lits ON lit_code_original = t_lits.code_original + JOIN activite[PX].t_unites_fonctionnelles ON UFR = t_unites_fonctionnelles.code_original + LEFT JOIN activite[PX].t_lieux ON (t_lieux.code_original_1 = SER AND t_lieux.code_original_4 = lit_code_original AND t_lieux.code_original_6 = UFR ) + WHERE t_lieux.oid IS NULL; + + + + + -- Mise à jour lieux dans futurs mouvements + UPDATE w_mouvements_sejour SET lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE t_lieux.code_original_1 = SER + AND t_lieux.code_original_4 = lit_code_original + AND t_lieux.code_original_6 = UFR + AND w_mouvements_sejour.lieu_id = 0; + + -- Suppression mouvements HS et HS sans acte + + + DROP TABLE IF EXISTS w_mouvements_sejour_041920; + CREATE TEMP TABLE w_mouvements_sejour_041920 AS + SELECT p_sejours.no_sejour, p_sejours.code_original + FROM w_mouvements_sejour + JOIN activite[PX].p_sejours ON w_mouvements_sejour.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_lieux on lieu_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + WHERE t_modes_traitement.code IN ('04', '19', '20') AND t_services_facturation.est_sans_facturation <> '1' + GROUP BY 1,2; + + + DROP TABLE IF EXISTS w_mouvements_sejour_041920_reel; + CREATE TEMP TABLE w_mouvements_sejour_041920_reel AS + SELECT no_sejour, date(A_DT_DEBUT) AS date + FROM w_G_SP3 G_SP3 + JOIN w_mouvements_sejour_041920 ON NUM_ENTREE = no_sejour + JOIN prod_calystene.G_LIGNEA_SP3 ON G_LIGNEA_SP3.NUM_AVIS = G_SP3.NUM_AVIS + WHERE date(A_DT_DEBUT) = date(A_DT_FIN) + GROUP BY 1,2; + + INSERT INTO w_mouvements_sejour_041920_reel + SELECT no_sejour, date(DT_DEBUT) AS date + FROM w_G_SP3 G_SP3 + JOIN w_mouvements_sejour_041920 ON NUM_ENTREE = no_sejour + JOIN prod_calystene.G_LIGNEC_SP3 ON G_LIGNEC_SP3.NUM_AVIS = G_SP3.NUM_AVIS + WHERE date(DT_DEBUT) = date(DT_FIN) + GROUP BY 1,2; + + --INSERT INTO w_mouvements_sejour_041920_reel + --SELECT no_sejour, date(DATE_ACT) AS date + --FROM prod_calystene.SEJOUR + --JOIN w_mouvements_sejour_041920 ON NUM_ADMINISTRATIF = no_sejour + --JOIN prod_calystene.TPS_REEDUC ON NUM_SEJ = NUM + --GROUP BY 1,2; + + INSERT INTO w_mouvements_sejour_041920_reel + SELECT no_sejour, date(DATE_v) AS date + FROM prod_calystene.JRS_PRESENT + JOIN w_mouvements_sejour_041920 ON NUM_ENTREE = no_sejour + WHERE TYPE_HOSPITALISATION = 'HPJ' + GROUP BY 1,2; + + + DELETE + FROM w_mouvements_sejour + WHERE no_sejour IN (SELECT no_sejour FROM w_mouvements_sejour_041920) AND + no_sejour || date NOT IN (SELECT no_sejour || date FROM w_mouvements_sejour_041920_reel); + + + UPDATE w_mouvements_sejour + SET heure_debut = 080000, est_premier_mouvement_jour = '1' + WHERE no_sejour IN (SELECT no_sejour FROM w_mouvements_sejour_041920) AND + heure_debut = 0; + + + UPDATE w_mouvements_sejour + SET heure_fin = 170000, est_dernier_mouvement_jour = '1' + WHERE no_sejour IN (SELECT no_sejour FROM w_mouvements_sejour_041920) AND + heure_fin = 240000 AND est_jour_sortie <> '1'; + + + + + + + + -- Mise en production des mouvements + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_5'); + + INSERT INTO activite[PX].p_mouvements_sejour( + sejour_id, no_sejour, date, est_mouvement_previsionnel, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + est_premier_mouvement_jour, est_dernier_mouvement_jour, jour_semaine, is_weekend) + SELECT sejour_id, no_sejour, date, est_mouvement_previsionnel ,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + est_premier_mouvement_jour, est_dernier_mouvement_jour, jour_semaine, is_weekend + FROM w_mouvements_sejour + WHERE heure_fin >= heure_debut + ORDER BY no_sejour, sequence; + + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_5'); + + -- Lieux de sortie + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie AND p_mouvements_sejour.nb_sorties_directes = 1 + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL) ; + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = 0 + WHERE lieu_sortie_id IS NULL ; + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = 0 + WHERE p_sejours.code_prevu = '1' AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL); + + + UPDATE activite[PX].p_sejours + SET code_sorti = '1' + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + code_sorti = '0' AND + (nb_ambulatoires > 0 OR nb_externes > 0) AND + date_sortie <= now(); + + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + WHERE type_sejour <> '5' AND + type_sejour <> '1' AND + no_sejour IN ( + SELECT no_sejour + FROM activite[PX].p_mouvements_sejour + WHERE nb_seances > 0); + + + UPDATE activite[PX].p_mouvements_sejour + SET nb_externes = 0, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + ( + nb_externes <> 0 OR + nb_ambulatoires <> 0 + ); + + + + ]]> + + + + + + + + + 0 THEN date(DT_LANC) ELSE '20991231'::date END AS date_expedition_0, + CASE WHEN TOTAL_SS <> 0 THEN date(DT_LANC) ELSE '20991231'::date END AS date_expedition_1, + CASE WHEN TOTAL_DIVERS <> 0 THEN date(DT_LANC) ELSE '20991231'::date END AS date_expedition_2, + CASE WHEN TOTAL_DEPARTEMENT <> 0 THEN date(DT_LANC) ELSE '20991231'::date END AS date_expedition_22, + CASE WHEN TOTAL_MALADE <> 0 THEN '1' ELSE '0' END AS code_expedie_0, + CASE WHEN TOTAL_SS <> 0 THEN '1' ELSE '0' END AS code_expedie_1, + CASE WHEN TOTAL_DIVERS <> 0 THEN '1' ELSE '0' END AS code_expedie_2, + CASE WHEN TOTAL_DEPARTEMENT <> 0 THEN '1' ELSE '0' END AS code_expedie_22, + ''::text AS no_bordereau_0, + ''::text AS no_bordereau_1, + ''::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + + CASE WHEN TOTAL_SS + TOTAL_DIVERS + TOTAL_DEPARTEMENT + TOTAL_MALADE <> 0 THEN date(DT_LANC) ELSE '20991231'::date END AS date_solde, + CASE WHEN TOTAL_SS + TOTAL_DIVERS + TOTAL_DEPARTEMENT + TOTAL_MALADE <> 0 THEN date(DT_LANC) ELSE '20991231'::date END AS date_solde_c, + '20991231'::date as date_solde_h, + CASE WHEN TOTAL_MALADE <> 0 THEN date(DT_LANC) ELSE '20991231'::date END AS date_solde_0_c, + '20991231'::date as date_solde_0_h, + CASE WHEN TOTAL_SS <> 0 THEN date(DT_LANC) ELSE '20991231'::date END AS date_solde_1_c, + '20991231'::date as date_solde_1_h, + CASE WHEN TOTAL_DIVERS <> 0 THEN date(DT_LANC) ELSE '20991231'::date END AS date_solde_2_c, + '20991231'::date as date_solde_2_h, + CASE WHEN TOTAL_DEPARTEMENT <> 0 THEN date(DT_LANC) ELSE '20991231'::date END AS date_solde_22_c, + '20991231'::date as date_solde_22_h, + TOTAL_AVIS AS montant_facture_c, + 0::numeric AS montant_facture_h, + TOTAL_MALADE AS montant_facture_0_c, + 0::numeric AS montant_facture_0_h, + TOTAL_SS AS montant_facture_1_c, + 0::numeric AS montant_facture_1_h, + TOTAL_DIVERS AS montant_facture_2_c, + 0::numeric AS montant_facture_2_h, + TOTAL_DEPARTEMENT AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + CASE WHEN HBG <> '1' THEN 0 ELSE TOTAL_SS END + TOTAL_MALADE + TOTAL_DIVERS + TOTAL_DEPARTEMENT AS montant_comptabilise_c, + 0::numeric AS montant_comptabilise_h, + TOTAL_MALADE AS montant_comptabilise_0_c, + 0 AS montant_comptabilise_0_h, + CASE WHEN HBG <> '1' THEN 0 ELSE TOTAL_SS END AS montant_comptabilise_1_c, + 0::numeric AS montant_comptabilise_1_h, + TOTAL_DIVERS AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_2_h, + TOTAL_DEPARTEMENT AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + CASE WHEN HBG <> '1' THEN TOTAL_SS ELSE 0 END AS montant_comptabilise_budget_global_c, + REGLE_MALADE + REGLE_DIVERS + REGLE_DEPARTEMENT AS montant_regle_c, + 0::numeric AS montant_regle_h, + REGLE_MALADE AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + 0::numeric AS montant_regle_1_h, + REGLE_DIVERS AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + REGLE_DEPARTEMENT AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + + 0::numeric AS delai_facture, + + 0::numeric AS delai_expedition, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h + + FROM w_G_SP3 G_SP3 + JOIN w_SEJOUR_ok ON w_SEJOUR_ok.NUM_ADMINISTRATIF = G_SP3.NUM_ENTREE + JOIN activite[PX].p_sejours ON w_SEJOUR_ok.NUM_DEM_ADM = p_sejours.code_original AND p_sejours.etat = '' + LEFT JOIN w_G_LIGNEA_SP3_dates ON w_G_LIGNEA_SP3_dates.NUM_AVIS = G_SP3.NUM_AVIS + WHERE VALIDE = 1 + ORDER BY 1,2; + + UPDATE w_factures + SET date_debut = p_sejours.date_entree + FROM activite[PX].p_sejours + WHERE w_factures.no_sejour = p_sejours.no_sejour AND + w_factures.date_debut < p_sejours.date_entree; + + UPDATE w_factures + SET date_debut = p_sejours.date_entree + FROM activite[PX].p_sejours + WHERE w_factures.no_sejour = p_sejours.no_sejour AND + w_factures.date_debut > p_sejours.date_sortie; + + + UPDATE w_factures + SET date_fin = p_sejours.date_sortie + FROM activite[PX].p_sejours + WHERE w_factures.no_sejour = p_sejours.no_sejour AND + w_factures.date_fin > p_sejours.date_sortie AND p_sejours.code_sorti = '1'; + + + UPDATE w_factures + SET date_fin = p_sejours.date_sortie + FROM activite[PX].p_sejours + WHERE w_factures.no_sejour = p_sejours.no_sejour AND + w_factures.date_fin < p_sejours.date_entree; + + + + -- Avoirs qui annulent des factures + + UPDATE w_factures SET + no_facture_od_avoir = w_factures_avoir.no_facture + FROM w_factures w_factures_avoir + WHERE w_factures_avoir.no_facture_od_avoir = w_factures.no_facture AND w_factures.no_facture_od_avoir = ''; + + + UPDATE w_factures SET + facture_od_avoir_id = w_factures_avoir.oid + FROM w_factures w_factures_avoir + WHERE w_factures_avoir.no_facture_od_avoir = w_factures.no_facture AND w_factures.facture_od_avoir_id = 0; + + + + -- Facture de référence + + DROP TABLE IF EXISTS w_sejours_facture_reference; + CREATE TEMP TABLE w_sejours_facture_reference AS + SELECT + no_sejour, + date_debut, + MAX(date_fin) AS date_fin, + MAX(w_factures.no_facture) AS no_facture_last, + MAX(CASE WHEN type_facture = '0' AND type_facture <> 'P' THEN w_factures.no_facture ELSE null END) AS no_facture_reference_last, + MAX(CASE WHEN type_facture <> '1' AND type_facture <> 'P' THEN w_factures.no_facture ELSE null END) AS no_facture_reference_last_2, + MAX(w_factures.oid) AS facture_id_last, + MAX(CASE WHEN type_facture = '0' AND type_facture <> 'P' THEN w_factures.oid ELSE null END) AS facture_id_reference_last, + MAX(CASE WHEN type_facture <> '1' AND type_facture <> 'P' THEN w_factures.oid ELSE null END) AS facture_id_reference_last_2 + FROM w_factures + GROUP BY 1,2; + + CREATE INDEX w_sejours_facture_reference_i1 + ON w_sejours_facture_reference + USING btree + (no_sejour); + + UPDATE w_sejours_facture_reference + SET facture_id_last = w_factures_references.oid + FROM w_factures w_factures_references + WHERE w_sejours_facture_reference.no_facture_last = w_factures_references.no_facture + AND w_sejours_facture_reference.facture_id_last <> w_factures_references.oid; + + + UPDATE w_sejours_facture_reference + SET facture_id_reference_last = w_factures_references.oid + FROM w_factures w_factures_references + WHERE w_sejours_facture_reference.no_facture_reference_last = w_factures_references.no_facture + AND w_sejours_facture_reference.facture_id_reference_last <> w_factures_references.oid; + + UPDATE w_sejours_facture_reference + SET facture_id_reference_last_2 = w_factures_references.oid + FROM w_factures w_factures_references + WHERE w_sejours_facture_reference.no_facture_reference_last_2 = w_factures_references.no_facture + AND w_sejours_facture_reference.facture_id_reference_last_2 <> w_factures_references.oid; + + + + UPDATE w_factures + SET + no_facture_reference = COALESCE(no_facture_reference_last, no_facture_reference_last_2, no_facture_last), + facture_reference_id = COALESCE(facture_id_reference_last, facture_id_reference_last_2, facture_id_last) + FROM w_sejours_facture_reference + WHERE w_factures.no_sejour = w_sejours_facture_reference.no_sejour AND + w_factures.date_debut BETWEEN w_sejours_facture_reference.date_debut AND w_sejours_facture_reference.date_fin AND + ( + no_facture_reference IS DISTINCT FROM COALESCE(no_facture_reference_last, no_facture_reference_last_2, no_facture_last) OR + facture_reference_id IS DISTINCT FROM COALESCE(facture_id_reference_last, facture_id_reference_last_2, facture_id_last) + ); + + + + + UPDATE w_factures + SET no_facture_reference = no_facture + WHERE (no_facture_reference IS NULL OR no_facture_reference = ''); + + + UPDATE w_factures + SET type_facture = '0' + WHERE w_factures.type_facture = '2' AND + w_factures.no_facture = w_factures.no_facture_reference; + + UPDATE w_factures + SET type_facture = '2' + WHERE w_factures.type_facture = '0' AND + w_factures.no_facture <> w_factures.no_facture_reference; + + UPDATE w_factures + SET facture_reference_id = w_factures_references.oid + FROM w_factures w_factures_references + WHERE w_factures.no_facture_reference = w_factures_references.no_facture + AND w_factures.facture_reference_id <> w_factures_references.oid; + + + + + + + + -- Ajout des factures + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_14'); + + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + date_solde, + montant_facture_c, + montant_facture_h, + montant_regle_c, + montant_regle_h, + delai_facture, + delai_solde, + date_expedition, + delai_expedition, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + ghs_id, + particularite_t2a, + code_cloture, + code_cp_demandee, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_comptabilise_budget_global_c, + + nb_rejets, + + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour + ) + SELECT + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + date_solde, + montant_facture_c, + montant_facture_h, + montant_regle_c, + montant_regle_h, + delai_facture, + delai_solde, + date_expedition, + delai_expedition, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + ghs_id, + particularite_t2a, + code_cloture, + code_cp_demandee, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_comptabilise_budget_global_c, + + nb_rejets, + + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour + FROM w_factures; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_14'); + + + ]]> + + + + + + + + + + + + 0 THEN 100 - A_TAUX_CAISSE ELSE 0 END as taux_2, + CASE WHEN A_DEPARTEMENT <> 0 THEN 100 - A_TAUX_CAISSE ELSE 0 END as taux_22, + + + A_DEPARTEMENT + A_DIVERS + A_MALADE + CASE WHEN HBG <> '1' THEN 0 ELSE A_SS END AS montant_comptabilise, + A_MALADE AS montant_comptabilise_0, + CASE WHEN HBG <> '1' THEN 0 ELSE A_SS END AS montant_comptabilise_1, + A_DIVERS AS montant_comptabilise_2, + A_DEPARTEMENT as montant_comptabilise_22, + CASE WHEN HBG <> '1' THEN A_SS ELSE 0 END AS montant_comptabilise_budget_global_1, + + CASE WHEN p_factures.montant_regle_2_c = p_factures.montant_comptabilise_2_c THEN A_DIVERS ELSE 0 END + + CASE WHEN p_factures.montant_regle_0_c = p_factures.montant_comptabilise_0_c THEN A_MALADE ELSE 0 END + + CASE WHEN p_factures.montant_regle_22_c = p_factures.montant_comptabilise_22_c THEN A_DEPARTEMENT ELSE 0 END + AS montant_regle, + CASE WHEN p_factures.montant_regle_0_c = p_factures.montant_comptabilise_0_c THEN A_MALADE ELSE 0 END AS montant_regle_0, + 0::numeric as montant_regle_1, + CASE WHEN p_factures.montant_regle_2_c = p_factures.montant_comptabilise_2_c THEN A_DIVERS ELSE 0 END AS montant_regle_2, + CASE WHEN p_factures.montant_regle_22_c = p_factures.montant_comptabilise_22_c THEN A_DEPARTEMENT ELSE 0 END AS montant_regle_22, + 0::numeric AS rubrique_facture_id + + FROM prod_calystene.G_LIGNEA_SP3 + JOIN w_G_SP3 G_SP3 ON G_LIGNEA_SP3.NUM_AVIS = G_SP3.NUM_AVIS + JOIN activite[PX].p_factures ON G_LIGNEA_SP3.NUM_AVIS = no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.etat = '' + LEFT JOIN activite[PX].t_rubriques_facturation ON (A_CODE_TARIF = t_rubriques_facturation.code_original) + LEFT JOIN activite.t_prestations ON (A_CODE_TARIF = t_prestations.code) + + + UNION ALL + + SELECT + 1::integer AS origine_facturation_id, + p_factures.oid AS facture_id, + p_factures.no_facture AS no_facture, + date(COALESCE(DT_DEBUT, p_factures.date_debut)) AS date_debut, + date(COALESCE(DT_FIN, p_factures.date_fin))AS date_fin, + p_factures.date_vente AS date_vente, + p_sejours.lieu_sortie_id, + CASE WHEN C_TOTAL < 0 THEN 0 - C_NB ELSE C_NB END AS nb_rubrique, + CASE WHEN C_TOTAL < 0 THEN 0 - C_NB ELSE C_NB END AS nb_prestations, + 1::numeric as coefficient, + 1::numeric AS coefficient_mco, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + ABS(C_TARIF) AS prix_unitaire, + + C_TOTAL AS montant_facture, + C_MALADE as montant_facture_0, + 0::numeric as montant_facture_1, + C_DIVERS as montant_facture_2, + C_DEPARTEMENT as montant_facture_22, + + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric as montant_facture_0_actes_inclus_dans_sejour, + 0::numeric as montant_facture_1_actes_inclus_dans_sejour, + 0::numeric as montant_facture_2_actes_inclus_dans_sejour, + 0::numeric as montant_facture_22_actes_inclus_dans_sejour, + + CASE WHEN C_DIVERS = 0 AND C_DEPARTEMENT <> 0 THEN 100 ELSE 0 END as taux_0, + 0::NUMERIC as taux_1, + CASE WHEN C_DIVERS <> 0 THEN 100 ELSE 0 END as taux_2, + CASE WHEN C_DEPARTEMENT <> 0 THEN 100 ELSE 0 END as taux_22, + + + C_DEPARTEMENT + C_DIVERS + C_MALADE AS montant_comptabilise, + C_MALADE AS montant_comptabilise_0, + 0::numeric as montant_comptabilise_1, + C_DIVERS AS montant_comptabilise_2, + C_DEPARTEMENT as montant_comptabilise_22, + 0::NUMERIC as montant_comptabilise_budget_global_1, + + CASE WHEN p_factures.montant_regle_2_c = p_factures.montant_comptabilise_2_c THEN C_DIVERS ELSE 0 END + + CASE WHEN p_factures.montant_regle_0_c = p_factures.montant_comptabilise_0_c THEN C_MALADE ELSE 0 END + + CASE WHEN p_factures.montant_regle_22_c = p_factures.montant_comptabilise_22_c THEN C_DEPARTEMENT ELSE 0 END + AS montant_regle, + CASE WHEN p_factures.montant_regle_0_c = p_factures.montant_comptabilise_0_c THEN C_MALADE ELSE 0 END AS montant_regle_0, + 0::numeric as montant_regle_1, + CASE WHEN p_factures.montant_regle_2_c = p_factures.montant_comptabilise_2_c THEN C_DIVERS ELSE 0 END AS montant_regle_2, + CASE WHEN p_factures.montant_regle_22_c = p_factures.montant_comptabilise_22_c THEN C_DEPARTEMENT ELSE 0 END AS montant_regle_22, + 0::numeric AS rubrique_facture_id + + FROM prod_calystene.G_LIGNEC_SP3 + JOIN w_G_SP3 G_SP3 ON G_LIGNEC_SP3.NUM_AVIS = G_SP3.NUM_AVIS + JOIN activite[PX].p_factures ON G_LIGNEC_SP3.NUM_AVIS = no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.etat = '' + LEFT JOIN activite[PX].t_rubriques_facturation ON (CODE_PRESTATION = t_rubriques_facturation.code_original) + LEFT JOIN activite.t_prestations ON (CODE_PRESTATION = t_prestations.code) + + UNION ALL + + SELECT + 1::integer AS origine_facturation_id, + p_factures.oid AS facture_id, + p_factures.no_facture AS no_facture, + date(COALESCE(B_DT_DEBUT, p_factures.date_debut)) AS date_debut, + date(COALESCE(B_DT_FIN, p_factures.date_fin))AS date_fin, + p_factures.date_vente AS date_vente, + p_sejours.lieu_sortie_id, + CASE WHEN B_TOTAL < 0 THEN 0 - B_NB_JOUR ELSE B_NB_JOUR END AS nb_rubrique, + CASE WHEN B_TOTAL < 0 THEN 0 - B_NB_JOUR ELSE B_NB_JOUR END AS nb_prestations, + 1::numeric as coefficient, + 1::numeric AS coefficient_mco, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + ABS(B_TARIF) AS prix_unitaire, + + B_TOTAL AS montant_facture, + B_MALADE as montant_facture_0, + B_SS as montant_facture_1, + B_DIVERS as montant_facture_2, + B_DEPARTEMENT as montant_facture_22, + + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric as montant_facture_0_actes_inclus_dans_sejour, + 0::numeric as montant_facture_1_actes_inclus_dans_sejour, + 0::numeric as montant_facture_2_actes_inclus_dans_sejour, + 0::numeric as montant_facture_22_actes_inclus_dans_sejour, + + CASE WHEN B_DIVERS = 0 AND B_DEPARTEMENT = 0 THEN 100 ELSE 0 END as taux_0, + 0::NUMERIC as taux_1, + CASE WHEN B_DIVERS <> 0 THEN 100 ELSE 0 END as taux_2, + CASE WHEN B_DEPARTEMENT <> 0 THEN 100 ELSE 0 END as taux_22, + + + B_DEPARTEMENT + B_DIVERS + B_MALADE + CASE WHEN HBG <> '1' THEN 0 ELSE B_SS END AS montant_comptabilise, + B_MALADE AS montant_comptabilise_0, + CASE WHEN HBG <> '1' THEN 0 ELSE B_SS END AS montant_comptabilise_1, + B_DIVERS AS montant_comptabilise_2, + B_DEPARTEMENT as montant_comptabilise_22, + CASE WHEN HBG <> '1' THEN B_SS ELSE 0 END AS montant_comptabilise_budget_global_1, + + CASE WHEN p_factures.montant_regle_2_c = p_factures.montant_comptabilise_2_c THEN B_DIVERS ELSE 0 END + + CASE WHEN p_factures.montant_regle_0_c = p_factures.montant_comptabilise_0_c THEN B_MALADE ELSE 0 END + + CASE WHEN p_factures.montant_regle_22_c = p_factures.montant_comptabilise_22_c THEN B_DEPARTEMENT ELSE 0 END + AS montant_regle, + CASE WHEN p_factures.montant_regle_0_c = p_factures.montant_comptabilise_0_c THEN B_MALADE ELSE 0 END AS montant_regle_0, + 0::numeric as montant_regle_1, + CASE WHEN p_factures.montant_regle_2_c = p_factures.montant_comptabilise_2_c THEN B_DIVERS ELSE 0 END AS montant_regle_2, + CASE WHEN p_factures.montant_regle_22_c = p_factures.montant_comptabilise_22_c THEN B_DEPARTEMENT ELSE 0 END AS montant_regle_22, + 0::numeric AS rubrique_facture_id + + FROM w_G_SP3 G_SP3 + JOIN activite[PX].p_factures ON NUM_AVIS = no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.etat = '' + LEFT JOIN activite[PX].t_rubriques_facturation ON ( 'FJ' = t_rubriques_facturation.code_original) + LEFT JOIN activite.t_prestations ON ('FJ' = t_prestations.code) + WHERE B_TOTAL <> 0 + + UNION ALL + + SELECT + 1::integer AS origine_facturation_id, + p_factures.oid AS facture_id, + p_factures.no_facture AS no_facture, + date(COALESCE(B_DT_FIN, p_factures.date_fin)) AS date_debut, + date(COALESCE(B_DT_FIN, p_factures.date_fin))AS date_fin, + p_factures.date_vente AS date_vente, + p_sejours.lieu_sortie_id, + CASE WHEN B_JS_TOTAL < 0 THEN 0 - B_NB_JOUR_SORTIE ELSE B_NB_JOUR_SORTIE END AS nb_rubrique, + CASE WHEN B_JS_TOTAL < 0 THEN 0 - B_NB_JOUR_SORTIE ELSE B_NB_JOUR_SORTIE END AS nb_prestations, + 1::numeric as coefficient, + 1::numeric AS coefficient_mco, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + ABS(B_TARIF) AS prix_unitaire, + + B_JS_TOTAL AS montant_facture, + B_JS_MALADE as montant_facture_0, + B_JS_SS as montant_facture_1, + B_JS_DIVERS as montant_facture_2, + B_JS_DEPARTEMENT as montant_facture_22, + + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric as montant_facture_0_actes_inclus_dans_sejour, + 0::numeric as montant_facture_1_actes_inclus_dans_sejour, + 0::numeric as montant_facture_2_actes_inclus_dans_sejour, + 0::numeric as montant_facture_22_actes_inclus_dans_sejour, + + CASE WHEN B_JS_DIVERS = 0 AND B_JS_DEPARTEMENT <> 0 THEN 100 ELSE 0 END as taux_0, + 0::NUMERIC as taux_1, + CASE WHEN B_JS_DIVERS <> 0 THEN 100 ELSE 0 END as taux_2, + CASE WHEN B_JS_DEPARTEMENT <> 0 THEN 100 ELSE 0 END as taux_22, + + B_JS_DEPARTEMENT + B_JS_DIVERS + B_JS_MALADE + CASE WHEN HBG <> '1' THEN 0 ELSE B_JS_SS END AS montant_comptabilise, + B_JS_MALADE AS montant_comptabilise_0, + CASE WHEN HBG <> '1' THEN 0 ELSE B_JS_SS END AS montant_comptabilise_1, + B_JS_DIVERS AS montant_comptabilise_2, + B_JS_DEPARTEMENT as montant_comptabilise_22, + CASE WHEN HBG <> '1' THEN B_JS_SS ELSE 0 END AS montant_comptabilise_budget_global_1, + + CASE WHEN p_factures.montant_regle_2_c = p_factures.montant_comptabilise_2_c THEN B_JS_DIVERS ELSE 0 END + + CASE WHEN p_factures.montant_regle_0_c = p_factures.montant_comptabilise_0_c THEN B_JS_MALADE ELSE 0 END + + CASE WHEN p_factures.montant_regle_22_c = p_factures.montant_comptabilise_22_c THEN B_JS_DEPARTEMENT ELSE 0 END + AS montant_regle, + CASE WHEN p_factures.montant_regle_0_c = p_factures.montant_comptabilise_0_c THEN B_JS_MALADE ELSE 0 END AS montant_regle_0, + 0::numeric as montant_regle_1, + CASE WHEN p_factures.montant_regle_2_c = p_factures.montant_comptabilise_2_c THEN B_JS_DIVERS ELSE 0 END AS montant_regle_2, + CASE WHEN p_factures.montant_regle_22_c = p_factures.montant_comptabilise_22_c THEN B_JS_DEPARTEMENT ELSE 0 END AS montant_regle_22, + 0::numeric AS rubrique_facture_id + + FROM w_G_SP3 G_SP3 + JOIN activite[PX].p_factures ON NUM_AVIS = no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.etat = '' + LEFT JOIN activite[PX].t_rubriques_facturation ON ( 'FJA' = t_rubriques_facturation.code_original) + LEFT JOIN activite.t_prestations ON ('FJA' = t_prestations.code) + WHERE B_JS_TOTAL <> 0 + + UNION ALL + + SELECT + 1::integer AS origine_facturation_id, + p_factures.oid AS facture_id, + p_factures.no_facture AS no_facture, + p_factures.date_debut AS date_debut, + date(COALESCE(B_DT_FIN, p_factures.date_fin))AS date_fin, + p_factures.date_vente AS date_vente, + p_sejours.lieu_sortie_id, + CASE WHEN TOTAL_AVIS < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN TOTAL_AVIS < 0 THEN -1 ELSE 1 END AS nb_prestations, + 1::numeric as coefficient, + 1::numeric AS coefficient_mco, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + ABS(TOTAL_AVIS) AS prix_unitaire, + + TOTAL_AVIS AS montant_facture, + TOTAL_MALADE as montant_facture_0, + TOTAL_SS as montant_facture_1, + TOTAL_DIVERS as montant_facture_2, + TOTAL_DEPARTEMENT as montant_facture_22, + + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric as montant_facture_0_actes_inclus_dans_sejour, + 0::numeric as montant_facture_1_actes_inclus_dans_sejour, + 0::numeric as montant_facture_2_actes_inclus_dans_sejour, + 0::numeric as montant_facture_22_actes_inclus_dans_sejour, + + CASE WHEN TOTAL_DIVERS = 0 AND TOTAL_DEPARTEMENT = 0 THEN 100 ELSE 0 END as taux_0, + 0::NUMERIC as taux_1, + CASE WHEN TOTAL_DIVERS <> 0 THEN 100 ELSE 0 END as taux_2, + CASE WHEN TOTAL_DEPARTEMENT <> 0 THEN 100 ELSE 0 END as taux_22, + + + TOTAL_DEPARTEMENT + TOTAL_DIVERS + TOTAL_MALADE + CASE WHEN HBG <> '1' THEN 0 ELSE TOTAL_SS END AS montant_comptabilise, + TOTAL_MALADE AS montant_comptabilise_0, + CASE WHEN HBG <> '1' THEN 0 ELSE TOTAL_SS END AS montant_comptabilise_1, + TOTAL_DIVERS AS montant_comptabilise_2, + TOTAL_DEPARTEMENT as montant_comptabilise_22, + CASE WHEN HBG <> '1' THEN TOTAL_SS ELSE 0 END AS montant_comptabilise_budget_global_1, + + CASE WHEN p_factures.montant_regle_2_c = p_factures.montant_comptabilise_2_c THEN TOTAL_DIVERS ELSE 0 END + + CASE WHEN p_factures.montant_regle_0_c = p_factures.montant_comptabilise_0_c THEN TOTAL_MALADE ELSE 0 END + + CASE WHEN p_factures.montant_regle_22_c = p_factures.montant_comptabilise_22_c THEN TOTAL_DEPARTEMENT ELSE 0 END + AS montant_regle, + CASE WHEN p_factures.montant_regle_0_c = p_factures.montant_comptabilise_0_c THEN TOTAL_MALADE ELSE 0 END AS montant_regle_0, + 0::numeric as montant_regle_1, + CASE WHEN p_factures.montant_regle_2_c = p_factures.montant_comptabilise_2_c THEN TOTAL_DIVERS ELSE 0 END AS montant_regle_2, + CASE WHEN p_factures.montant_regle_22_c = p_factures.montant_comptabilise_22_c THEN TOTAL_DEPARTEMENT ELSE 0 END AS montant_regle_22, + 0::numeric AS rubrique_facture_id + + FROM w_G_SP3 G_SP3 + JOIN activite[PX].p_factures ON NUM_AVIS = no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.etat = '' + LEFT JOIN activite[PX].t_rubriques_facturation ON ( 'DIV' = t_rubriques_facturation.code_original) + LEFT JOIN activite.t_prestations ON ('DIV' = t_prestations.code) + WHERE TOTAL_AVIS <> 0 AND G_SP3.TYPE_FACTURE = 4 + + ; + + + + DROP TABLE IF EXISTS w_factures_lignes_c_r; + CREATE TEMP TABLE w_factures_lignes_c_r AS + SELECT w_factures_lignes_c.no_facture, p_factures.montant_regle_0_c AS to_montant_regle, + MIN(w_factures_lignes_c.CTID) AS to_ctid + FROM w_factures_lignes_c + JOIN activite[PX].p_factures ON + p_factures.no_facture = w_factures_lignes_c.no_facture AND + p_factures.montant_regle_0_c <> 0 AND + p_factures.montant_regle_0_c <> p_factures.montant_comptabilise_0_c AND + w_factures_lignes_c.montant_regle_0 = 0 AND + w_factures_lignes_c.montant_comptabilise_0 <> 0 AND + w_factures_lignes_c.montant_comptabilise_0 = p_factures.montant_regle_0_c + GROUP BY 1,2; + + + UPDATE w_factures_lignes_c + SET montant_regle_0 = to_montant_regle, + montant_regle = montant_regle + to_montant_regle + FROM w_factures_lignes_c_r + WHERE w_factures_lignes_c.CTID = to_ctid; + + + + DROP TABLE IF EXISTS w_factures_lignes_c_r; + CREATE TEMP TABLE w_factures_lignes_c_r AS + SELECT w_factures_lignes_c.no_facture, p_factures.montant_regle_2_c AS to_montant_regle, + MIN(w_factures_lignes_c.CTID) AS to_ctid + FROM w_factures_lignes_c + JOIN activite[PX].p_factures ON + p_factures.no_facture = w_factures_lignes_c.no_facture AND + p_factures.montant_regle_2_c <> 0 AND + p_factures.montant_regle_2_c <> p_factures.montant_comptabilise_2_c AND + w_factures_lignes_c.montant_regle_2 = 0 AND + w_factures_lignes_c.montant_comptabilise_2 <> 0 AND + w_factures_lignes_c.montant_comptabilise_2 = p_factures.montant_regle_2_c + GROUP BY 1,2; + + + UPDATE w_factures_lignes_c + SET montant_regle_2 = to_montant_regle, + montant_regle = montant_regle + to_montant_regle + FROM w_factures_lignes_c_r + WHERE w_factures_lignes_c.CTID = to_ctid; + + + -- Autres montants réglés (non soldés à une rubrique d'attente + + DROP TABLE IF EXISTS w_factures_lignes_c_r; + CREATE TEMP TABLE w_factures_lignes_c_r AS + SELECT w_factures_lignes_c.no_facture, + SUM(w_factures_lignes_c.montant_regle_0) AS to_montant_regle_0, + SUM(w_factures_lignes_c.montant_regle_2) AS to_montant_regle_2 + FROM w_factures_lignes_c + GROUP BY 1; + + INSERT INTO w_factures_lignes_c + SELECT + 1::integer AS origine_facturation_id, + p_factures.oid AS facture_id, + p_factures.no_facture AS no_facture, + p_factures.date_debut AS date_debut, + p_factures.date_fin AS date_fin, + p_factures.date_vente AS date_vente, + p_sejours.lieu_sortie_id, + 0::NUMERIC AS nb_rubrique, + 0::NUMERIC AS nb_prestations, + 1::numeric as coefficient, + 1::numeric AS coefficient_mco, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + 0::NUMERIC AS prix_unitaire, + + 0::NUMERIC AS montant_facture, + 0::NUMERIC AS montant_facture_0, + 0::NUMERIC AS montant_facture_1, + 0::NUMERIC AS montant_facture_2, + 0::NUMERIC AS montant_facture_22, + + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric as montant_facture_0_actes_inclus_dans_sejour, + 0::numeric as montant_facture_1_actes_inclus_dans_sejour, + 0::numeric as montant_facture_2_actes_inclus_dans_sejour, + 0::numeric as montant_facture_22_actes_inclus_dans_sejour, + + 0::NUMERIC AS taux_0, + 0::NUMERIC AS taux_1, + 0::NUMERIC AS taux_2, + 0::NUMERIC AS taux_22, + + + 0::NUMERIC AS montant_comptabilise, + 0::NUMERIC AS montant_comptabilise_0, + 0::NUMERIC AS montant_comptabilise_1, + 0::NUMERIC AS montant_comptabilise_2, + 0::numeric as montant_comptabilise_22, + 0::NUMERIC AS montant_comptabilise_budget_global_1, + + round((p_factures.montant_regle_c - to_montant_regle_0 - to_montant_regle_2)::numeric,2) AS montant_regle, + round((p_factures.montant_regle_0_c - to_montant_regle_0)::numeric,2) AS montant_regle_0, + 0::numeric as montant_regle_1, + round((p_factures.montant_regle_2_c - to_montant_regle_2)::numeric,2) AS montant_regle_2, + 0::numeric as montant_regle_22, + 0::numeric AS rubrique_facture_id + + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.etat = '' + JOIN w_factures_lignes_c_r ON w_factures_lignes_c_r.no_facture = p_factures.no_facture + LEFT JOIN activite[PX].t_rubriques_facturation ON ( '*REGPAR' = t_rubriques_facturation.code_original) + LEFT JOIN activite.t_prestations ON ('*REGPAR' = t_prestations.code_original) + WHERE round((p_factures.montant_regle_0_c - to_montant_regle_0)::numeric,2) <> 0 OR + round((p_factures.montant_regle_2_c - to_montant_regle_2)::numeric,2) <> 0; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_c'); + + -- Validation MVTS + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_comptabilise_budget_global_1, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + + origine_facturation_id, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour) + + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestations, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_sortie_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_comptabilise_budget_global_1, + 0, + 0, + 0, + 0, + 0, + + origine_facturation_id, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour + + FROM w_factures_lignes_c + WHERE (montant_facture <> 0 OR + montant_facture_0 <> 0 OR + montant_facture_1 <> 0 OR + montant_facture_2 <> 0 OR + montant_comptabilise <> 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_regle <> 0 OR + montant_regle_0 <> 0 OR + montant_regle_1 <> 0 OR + montant_regle_2 <> 0) ; + + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_8'); + + + + + -- Eclatement des supplements par jour + DROP TABLE IF EXISTS w_mouvements_sejour_absence; + CREATE TEMP TABLE w_mouvements_sejour_absence AS + SELECT no_sejour, date + FROM activite[PX].p_mouvements_sejour + JOIN activite[PX].t_lieux ON lieu_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid AND t_services_facturation.est_absence = '1' + WHERE 120000 BETWEEN heure_debut AND heure_fin + GROUP BY 1,2; + + + CREATE INDEX w_mouvements_sejour_absence_i1 + ON w_mouvements_sejour_absence + USING btree + (no_sejour); + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + p_factures_lignes_c.CTID AS from_CTID, p_factures.no_sejour, p_factures_lignes_c.* + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + WHERE prestation_id IN (SELECT oid + FROM activite.t_prestations + WHERE code IN ('31', 'PJ', 'FJ', 'PHJ', 'SSM', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + AND (nb_prestation > 1 or nb_prestation < -1); + + + + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + from_CTID, + no_sejour, + no_facture, + nb_prestation AS from_nb_prestation, + p_calendrier.date AS date_debut, + p_calendrier.date AS date_fin, + CASE WHEN nb_rubrique < 0 THEN -1 ELSE 1 END AS nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + round(montant_facture / ABS(nb_prestation),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_prestation),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_prestation),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_prestation),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_prestation),2) AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + round(montant_comptabilise / ABS(nb_prestation),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_prestation),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_prestation),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_prestation),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_prestation),2) AS montant_comptabilise_22, + rubrique_comptabilisation_id, + round(montant_encours / ABS(nb_prestation),2) AS montant_encours, + round(montant_encours_0 / ABS(nb_prestation),2) AS montant_encours_0, + round(montant_encours_1 / ABS(nb_prestation),2) AS montant_encours_1, + round(montant_encours_2 / ABS(nb_prestation),2) AS montant_encours_2, + round(montant_encours_22 / ABS(nb_prestation),2) AS montant_encours_22, + round(montant_facture_actes_inclus_dans_sejour / ABS(nb_prestation),2) AS montant_facture_actes_inclus_dans_sejour, + round(montant_facture_0_actes_inclus_dans_sejour / ABS(nb_prestation),2) AS montant_facture_0_actes_inclus_dans_sejour, + round(montant_facture_1_actes_inclus_dans_sejour / ABS(nb_prestation),2) AS montant_facture_1_actes_inclus_dans_sejour, + round(montant_facture_2_actes_inclus_dans_sejour / ABS(nb_prestation),2) AS montant_facture_2_actes_inclus_dans_sejour, + round(montant_facture_22_actes_inclus_dans_sejour / ABS(nb_prestation),2) AS montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + round(montant_comptabilise_budget_global_1 / ABS(nb_prestation),2) AS montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut AND GREATEST(date_fin, date_debut + ABS(nb_prestation)::integer -1) AND + p_calendrier.date <> date_debut + ; + + CREATE INDEX w_factures_lignes_sup_c_sup_i1 + ON w_factures_lignes_sup_c_sup + USING btree + (no_sejour); + + + UPDATE w_factures_lignes_sup_c_sup SET + nb_rubrique = 0, + coefficient = 0, + montant_facture = 0, + montant_facture_0 = 0, + montant_facture_1 = 0, + montant_facture_2 = 0, + montant_facture_22 = 0, + prix_unitaire = 0, + nb_prestation = 0, + montant_comptabilise = 0, + montant_comptabilise_0 = 0, + montant_comptabilise_1 = 0, + montant_comptabilise_2 = 0, + montant_comptabilise_22 = 0, + montant_encours = 0, + montant_encours_0 = 0, + montant_encours_1 = 0, + montant_encours_2 = 0, + montant_encours_22 = 0, + montant_facture_actes_inclus_dans_sejour = 0, + montant_facture_0_actes_inclus_dans_sejour = 0, + montant_facture_1_actes_inclus_dans_sejour = 0, + montant_facture_2_actes_inclus_dans_sejour = 0, + montant_facture_22_actes_inclus_dans_sejour = 0, + montant_comptabilise_budget_global_1 = 0 + FROM w_mouvements_sejour_absence + WHERE w_mouvements_sejour_absence.no_sejour = w_factures_lignes_sup_c_sup.no_sejour AND + w_mouvements_sejour_absence.date = w_factures_lignes_sup_c_sup.date_debut + ; + + SELECT base.cti_execute( + 'DELETE FROM w_factures_lignes_sup_c_sup + USING ( + SELECT no_facture, from_CTID, + MAX(date_debut) AS date_debut + FROM w_factures_lignes_sup_c_sup + WHERE nb_prestation <> 0 + GROUP BY 1,2 + HAVING ABS(MAX(from_nb_prestation)) -1 < ABS(SUM(nb_prestation)) + ) subview + WHERE w_factures_lignes_sup_c_sup.from_CTID = subview.from_CTID AND + w_factures_lignes_sup_c_sup.date_debut = subview.date_debut',10) + ; + + + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT from_CTID, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + DELETE FROM w_factures_lignes_sup_c_sup WHERE nb_rubrique = 0 AND nb_prestation = 0 AND montant_facture = 0; + + + UPDATE activite[PX].p_factures_lignes_c + SET + date_fin = p_factures_lignes_c.date_debut, + nb_rubrique = CASE WHEN p_factures_lignes_c.nb_rubrique < 0 THEN -1 ELSE 1 END , + nb_prestation = CASE WHEN p_factures_lignes_c.nb_prestation < 0 THEN -1 ELSE 1 END , + montant_facture = p_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = p_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = p_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = p_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = p_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = p_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = p_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = p_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = p_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = p_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22, + montant_encours = p_factures_lignes_c.montant_encours - w_factures_lignes_sup_c_sup_tot.montant_encours, + montant_encours_0 = p_factures_lignes_c.montant_encours_0 - w_factures_lignes_sup_c_sup_tot.montant_encours_0, + montant_encours_1 = p_factures_lignes_c.montant_encours_1 - w_factures_lignes_sup_c_sup_tot.montant_encours_1, + montant_encours_2 = p_factures_lignes_c.montant_encours_2 - w_factures_lignes_sup_c_sup_tot.montant_encours_2, + montant_encours_22 = p_factures_lignes_c.montant_encours_22 - w_factures_lignes_sup_c_sup_tot.montant_encours_22, + montant_facture_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 = p_factures_lignes_c.montant_comptabilise_budget_global_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup_tot + WHERE p_factures_lignes_c.CTID = from_CTID; + + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c_sup; + + + + UPDATE activite[PX].p_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_factures, activite[PX].p_mouvements_sejour + JOIN activite[PX].t_lieux ON lieu_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid AND t_services_facturation.est_absence IS DISTINCT FROM '1' + WHERE p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + p_factures_lignes_c.date_debut = p_mouvements_sejour.date AND + p_factures_lignes_c.no_facture = p_factures.no_facture AND + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_sorties_directes = 1) AND + p_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + + + + + + + ]]> + + + + + + 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4; + + + + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + no_facture, + date_vente, + rubrique_comptabilisation_id, + prestation_id, + 0, + 0, + 0, + 0, + 0, + SUM(montant_regle), + SUM(montant_regle_0), + SUM(montant_regle_1), + SUM(montant_regle_2), + SUM(montant_regle_22) + FROM w_factures_lignes_c + WHERE date_vente IS NOT NULL AND + (montant_regle <> 0 OR + montant_regle_0 <> 0 OR + montant_regle_1 <> 0 OR + montant_regle_2 <> 0 OR + montant_regle_22 <> 0 + ) + GROUP BY 1,2,3,4; + + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_8'); + + + + ]]> + + + + + + + + + + + + + + + + + + + + + '1' THEN 0 ELSE TOTAL_SS END) AS montant_ventes_c, + SUM(REGLE_DEPARTEMENT + REGLE_DIVERS + REGLE_MALADE + CASE WHEN HBG <> '1' THEN 0 ELSE REGLE_SS END) AS montant_reglements_c, + SUM(TOTAL_DEPARTEMENT + TOTAL_DIVERS + TOTAL_MALADE + CASE WHEN HBG <> '1' THEN 0 ELSE TOTAL_SS END) - + SUM(REGLE_DEPARTEMENT + REGLE_DIVERS + REGLE_MALADE + CASE WHEN HBG <> '1' THEN 0 ELSE REGLE_SS END) AS montant_solde_client_c, + 0::numeric AS montant_ventes_h, + 0::numeric AS montant_reglements_h, + 0::numeric AS montant_solde_client_h + FROM w_G_SP3 G_SP3 + WHERE VALIDE = 1 AND + NUM_ENTREE IN (SELECT NUM_ADMINISTRATIF FROM prod_calystene.SEJOUR) AND + DT_LANC >= '20090101' + GROUP BY 1 + ORDER BY 1; + + + TRUNCATE activite[PX].p_factures_comptables; + + INSERT INTO activite[PX].p_factures_comptables( + no_facture, + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_ventes_h, + montant_reglements_h + ) + SELECT + NUM_AVIS, + date(DT_LANC) AS date_comptable, + SUM(TOTAL_DEPARTEMENT + TOTAL_DIVERS + TOTAL_MALADE + CASE WHEN HBG <> '1' THEN 0 ELSE TOTAL_SS END) AS montant_ventes_c, + SUM(REGLE_DEPARTEMENT + REGLE_DIVERS + REGLE_MALADE + CASE WHEN HBG <> '1' THEN 0 ELSE REGLE_SS END) AS montant_reglements_c, + 0::numeric AS montant_ventes_h, + 0::numeric AS montant_reglements_h + FROM w_G_SP3 G_SP3 + WHERE VALIDE = 1 AND + NUM_ENTREE IN (SELECT NUM_ADMINISTRATIF FROM prod_calystene.SEJOUR) AND + DT_LANC >= '20090101' + GROUP BY 1,2 + ORDER BY 1,2; + + ]]> + + + + + + + + '00'; + + + + ]]> + + + + '' + AND substr(subview.NOM_SOUNDEX,1,8) || ',' || substr(subview.PRENOM_SOUNDEX,1,8) || ',' || subview.CODE_PRESCRIPTEUR NOT IN + (SELECT substr(base.cti_soundex_nom(nom),1,8) || ',' || substr(base.cti_soundex_nom(prenom),1,8) || ',' || numero_ordre FROM base.t_medecins); + + + + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.NOM, w_medecins.PRENOM, w_medecins.CODE_PRESCRIPTEUR, 0 FROM + (SELECT NOM_SOUNDEX, PRENOM_SOUNDEX, MIN(NUM_ORIGINAL) AS MEDE_ID_MEDE + FROM w_medecins + GROUP BY 1,2) subview, w_medecins + WHERE w_medecins.NUM_ORIGINAL = subview.MEDE_ID_MEDE + AND subview.NOM_SOUNDEX || ',' || subview.PRENOM_SOUNDEX NOT IN + (SELECT base.cti_soundex_nom(nom) || ',' || base.cti_soundex_nom(prenom) FROM base.t_medecins);; + + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT substr(base.cti_soundex_nom(nom),1,8) as nom , substr(base.cti_soundex_nom(prenom),1,8) as prenom, numero_ordre, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2,3) subview + WHERE SUBSTR(NOM_SOUNDEX, 1, 8) = SUBSTR(subview.nom,1,8) + AND SUBSTR(PRENOM_SOUNDEX, 1, 8) = SUBSTR(subview.prenom,1,8) + AND CODE_PRESCRIPTEUR = subview.numero_ordre + AND CODE_PRESCRIPTEUR <> '' + AND w_medecins.medecin_id = 0; + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT base.cti_soundex_nom(nom) as nom , base.cti_soundex_nom(prenom) as prenom, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2) subview + WHERE NOM_SOUNDEX = subview.nom + AND PRENOM_SOUNDEX = subview.prenom + AND w_medecins.medecin_id = 0; + + + + INSERT INTO activite[PX].t_medecins_administratifs(code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT DISTINCT NUM_ORIGINAL, NUM, NOM, PRENOM, COALESCE(t_specialites_medecin.oid,0), medecin_id + FROM w_medecins + LEFT JOIN base.t_specialites_medecin ON (SPECIALITE = t_specialites_medecin.code_original) + WHERE NUM_ORIGINAL NOT IN (SELECT code_original FROM activite[PX].t_medecins_administratifs); + + UPDATE activite[PX].t_medecins_administratifs + SET nom = w_medecins.NOM, + prenom = w_medecins.PRENOM, + specialite_id = COALESCE(t_specialites_medecin.oid,0), + medecin_id = w_medecins.medecin_id, + no_adeli = CODE_PRESCRIPTEUR + FROM w_medecins LEFT JOIN base.t_specialites_medecin ON (SPECIALITE = t_specialites_medecin.code_original) + WHERE w_medecins.NUM_ORIGINAL = t_medecins_administratifs.code_original + AND ( + t_medecins_administratifs.nom <> w_medecins.NOM OR + t_medecins_administratifs.prenom <> w_medecins.PRENOM OR + t_medecins_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid,0) OR + t_medecins_administratifs.medecin_id <> w_medecins.medecin_id OR + t_medecins_administratifs.no_adeli <> 0 AND t_medecins.specialite_id = 0; + + + ]]> + + + + 0 AND + code_original || '|0' NOT IN (SELECT code_original FROM activite[PX].t_lits ); + + UPDATE activite[PX].t_lits SET code = '*****' WHERE code = ''; + ]]> + + + + + + + + + + + + '2099-12-31' THEN date_facture ELSE date_expedition_0 END AS date_expedition_0, + + CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END AS date_solde, + CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END AS date_solde_c, + CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '20991231' END AS date_solde_h, + CASE WHEN montant_comptabilise_0_c = 0 THEN '00010101' WHEN montant_comptabilise_0_c = montant_regle_0_c THEN date_solde_0_c ELSE '20991231' END AS date_solde_0_c, + CASE WHEN montant_comptabilise_0_h = 0 THEN '00010101' WHEN montant_comptabilise_0_h = montant_regle_0_h THEN date_solde_0_h ELSE '20991231' END AS date_solde_0_h, + CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END AS date_solde_1_c, + CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '20991231' END AS date_solde_1_h, + CASE WHEN montant_comptabilise_2_c = 0 THEN '00010101' WHEN montant_comptabilise_2_c = montant_regle_2_c THEN date_solde_2_c ELSE '20991231' END AS date_solde_2_c, + CASE WHEN montant_comptabilise_2_h = 0 THEN '00010101' WHEN montant_comptabilise_2_h = montant_regle_2_h THEN date_solde_2_h ELSE '20991231' END AS date_solde_2_h, + CASE WHEN montant_comptabilise_22_c = 0 THEN '00010101' WHEN montant_comptabilise_22_c = montant_regle_22_c THEN date_solde_22_c ELSE '20991231' END AS date_solde_22_c, + CASE WHEN montant_comptabilise_22_h = 0 THEN '00010101' WHEN montant_comptabilise_22_h = montant_regle_22_h THEN date_solde_22_h ELSE '20991231' END AS date_solde_22_h + FROM activite[PX].p_factures; + + UPDATE w_factures SET + date_solde = GREATEST(date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h), + date_solde_c = GREATEST(date_solde_0_c, date_solde_1_c, date_solde_2_c, date_solde_22_c), + date_solde_h = GREATEST(date_solde_0_h, date_solde_1_h, date_solde_2_h, date_solde_22_h) + WHERE + date_solde IS DISTINCT FROM GREATEST(date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h) OR + date_solde_c IS DISTINCT FROM GREATEST(date_solde_0_c, date_solde_1_c, date_solde_2_c, date_solde_22_c) OR + date_solde_h IS DISTINCT FROM GREATEST(date_solde_0_h, date_solde_1_h, date_solde_2_h, date_solde_22_h) ; + + CREATE INDEX w_factures_i1 + ON w_factures + USING btree + (no_facture); + + CREATE INDEX w_factures_i2 + ON w_factures + USING btree + (no_facture_reference); + + + + DROP TABLE IF EXISTS w_factures_references_soldes; + + CREATE TEMP TABLE w_factures_references_soldes AS + SELECT + no_facture_reference, + MAX(date_solde) AS date_solde_reference, + MAX(date_solde_c) AS date_solde_reference_c, + MAX(date_solde_h) AS date_solde_reference_h, + MAX(date_solde_0_c) AS date_solde_reference_0_c, + MAX(date_solde_0_h) AS date_solde_reference_0_h, + MAX(date_solde_1_c) AS date_solde_reference_1_c, + MAX(date_solde_1_h) AS date_solde_reference_1_h, + MAX(date_solde_2_c) AS date_solde_reference_2_c, + MAX(date_solde_2_h) AS date_solde_reference_2_h, + MAX(date_solde_22_c) AS date_solde_reference_22_c, + MAX(date_solde_22_h) AS date_solde_reference_22_h + FROM w_factures + GROUP BY no_facture_reference; + + + CREATE INDEX w_factures_references_soldes_i1 + ON w_factures_references_soldes + USING btree + (no_facture_reference); + + + + + UPDATE activite[PX].p_factures + SET + date_expedition_0 = w_factures.date_expedition_0, + date_solde = w_factures.date_solde, + date_solde_c = w_factures.date_solde_c, + date_solde_h = w_factures.date_solde_h, + date_solde_0_c = w_factures.date_solde_0_c, + date_solde_0_h = w_factures.date_solde_0_h, + date_solde_1_c = w_factures.date_solde_1_c, + date_solde_1_h = w_factures.date_solde_1_h, + date_solde_2_c = w_factures.date_solde_2_c, + date_solde_2_h = w_factures.date_solde_2_h, + date_solde_22_c = w_factures.date_solde_22_c, + date_solde_22_h = w_factures.date_solde_22_h, + date_solde_reference = w_factures_references_soldes.date_solde_reference, + date_solde_reference_c = w_factures_references_soldes.date_solde_reference_c, + date_solde_reference_h = w_factures_references_soldes.date_solde_reference_h, + date_solde_reference_0_c = w_factures_references_soldes.date_solde_reference_0_c, + date_solde_reference_0_h = w_factures_references_soldes.date_solde_reference_0_h, + date_solde_reference_1_c = w_factures_references_soldes.date_solde_reference_1_c, + date_solde_reference_1_h = w_factures_references_soldes.date_solde_reference_1_h, + date_solde_reference_2_c = w_factures_references_soldes.date_solde_reference_2_c, + date_solde_reference_2_h = w_factures_references_soldes.date_solde_reference_2_h, + date_solde_reference_22_c = w_factures_references_soldes.date_solde_reference_22_c, + date_solde_reference_22_h = w_factures_references_soldes.date_solde_reference_22_h + FROM w_factures + JOIN w_factures_references_soldes ON w_factures_references_soldes.no_facture_reference = w_factures.no_facture_reference + WHERE p_factures.no_facture = w_factures.no_facture + AND ( + p_factures.date_expedition_0 IS DISTINCT FROM w_factures.date_expedition_0 OR + p_factures.date_solde IS DISTINCT FROM w_factures.date_solde OR + p_factures.date_solde_c IS DISTINCT FROM w_factures.date_solde_c OR + p_factures.date_solde_h IS DISTINCT FROM w_factures.date_solde_h OR + p_factures.date_solde_0_c IS DISTINCT FROM w_factures.date_solde_0_c OR + p_factures.date_solde_0_h IS DISTINCT FROM w_factures.date_solde_0_h OR + p_factures.date_solde_1_c IS DISTINCT FROM w_factures.date_solde_1_c OR + p_factures.date_solde_1_h IS DISTINCT FROM w_factures.date_solde_1_h OR + p_factures.date_solde_2_c IS DISTINCT FROM w_factures.date_solde_2_c OR + p_factures.date_solde_2_h IS DISTINCT FROM w_factures.date_solde_2_h OR + p_factures.date_solde_22_c IS DISTINCT FROM w_factures.date_solde_22_c OR + p_factures.date_solde_22_h IS DISTINCT FROM w_factures.date_solde_22_h OR + p_factures.date_solde_reference IS DISTINCT FROM w_factures_references_soldes.date_solde_reference OR + p_factures.date_solde_reference_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_c OR + p_factures.date_solde_reference_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_h OR + p_factures.date_solde_reference_0_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_0_c OR + p_factures.date_solde_reference_0_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_0_h OR + p_factures.date_solde_reference_1_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_1_c OR + p_factures.date_solde_reference_1_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_1_h OR + p_factures.date_solde_reference_2_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_2_c OR + p_factures.date_solde_reference_2_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_2_h OR + p_factures.date_solde_reference_22_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_22_c OR + p_factures.date_solde_reference_22_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_22_h + ); + + + ]]> + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.date_groupage, + p_sejours.ghs_id, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour, + + 0::numeric AS delai_groupage, + 0::numeric AS delai_facture, + 0::numeric AS delai_expedition, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_solde_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_solde_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_solde_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_22 + + FROM activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY 1,2,3,4,5; + + + UPDATE activite[PX].p_sejours + SET date_groupage = date_facture + WHERE (date_groupage IS null OR date_groupage = '20991231' OR date_groupage = '00010101') AND + date_facture <> '2099-12-31'; + + + UPDATE w_sejours_total SET + date_groupage = CASE WHEN date_groupage > '00010101' THEN date_groupage ELSE '20991231' END, + date_facture = CASE WHEN date_facture> '00010101' THEN date_facture ELSE '20991231' END, + date_expedition = CASE WHEN date_expedition > '00010101' THEN date_expedition ELSE '20991231' END, + date_solde = CASE WHEN date_solde > '00010101' THEN date_solde ELSE '20991231' END, + date_expedition_0 = CASE WHEN date_expedition_0 > '00010101' THEN date_expedition_0 ELSE '20991231' END, + date_solde_0 = CASE WHEN date_solde_0 > '00010101' THEN date_solde_0 ELSE '20991231' END, + date_expedition_1 = CASE WHEN date_expedition_1 > '00010101' THEN date_expedition_1 ELSE '20991231' END, + date_solde_1 = CASE WHEN date_solde_1 > '00010101' THEN date_solde_1 ELSE '20991231' END, + date_expedition_2 = CASE WHEN date_expedition_2 > '00010101' THEN date_expedition_2 ELSE '20991231' END, + date_solde_2 = CASE WHEN date_solde_2 > '00010101' THEN date_solde_2 ELSE '20991231' END, + date_expedition_22 = CASE WHEN date_expedition_22 > '00010101' THEN date_expedition_22 ELSE '20991231' END, + date_solde_22 = CASE WHEN date_solde_22 > '00010101' THEN date_solde_22 ELSE '20991231' END; + + + UPDATE w_sejours_total SET + delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END, + delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END, + delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END, + delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END, + delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END, + delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END, + delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END, + delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END, + delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END, + delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END, + delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END, + delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END; + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = w_sejours_total.date_expedition_0, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = w_sejours_total.date_expedition_1, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = w_sejours_total.date_expedition_2, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = w_sejours_total.date_expedition_22, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour, + + + delai_groupage = w_sejours_total.delai_groupage, + delai_facture = w_sejours_total.delai_facture, + delai_expedition = w_sejours_total.delai_expedition, + delai_solde = w_sejours_total.delai_solde, + delai_expedition_0 = w_sejours_total.delai_expedition_0, + delai_solde_0 = w_sejours_total.delai_solde_0, + delai_expedition_1 = w_sejours_total.delai_expedition_1, + delai_solde_1 = w_sejours_total.delai_solde_1, + delai_expedition_2 = w_sejours_total.delai_expedition_2, + delai_solde_2 = w_sejours_total.delai_solde_2, + delai_expedition_22 = w_sejours_total.delai_expedition_22, + delai_solde_22 = w_sejours_total.delai_solde_22 + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM w_sejours_total.date_expedition_0 OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM w_sejours_total.date_expedition_1 OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM w_sejours_total.date_expedition_2 OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM w_sejours_total.date_expedition_22 OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour OR + + p_sejours.delai_groupage IS DISTINCT FROM w_sejours_total.delai_groupage OR + p_sejours.delai_facture IS DISTINCT FROM w_sejours_total.delai_facture OR + p_sejours.delai_expedition IS DISTINCT FROM w_sejours_total.delai_expedition OR + p_sejours.delai_solde IS DISTINCT FROM w_sejours_total.delai_solde OR + p_sejours.delai_expedition_0 IS DISTINCT FROM w_sejours_total.delai_expedition_0 OR + p_sejours.delai_solde_0 IS DISTINCT FROM w_sejours_total.delai_solde_0 OR + p_sejours.delai_expedition_1 IS DISTINCT FROM w_sejours_total.delai_expedition_1 OR + p_sejours.delai_solde_1 IS DISTINCT FROM w_sejours_total.delai_solde_1 OR + p_sejours.delai_expedition_2 IS DISTINCT FROM w_sejours_total.delai_expedition_2 OR + p_sejours.delai_solde_2 IS DISTINCT FROM w_sejours_total.delai_solde_2 OR + p_sejours.delai_expedition_22 IS DISTINCT FROM w_sejours_total.delai_expedition_22 OR + p_sejours.delai_solde_22 IS DISTINCT FROM w_sejours_total.delai_solde_22 + + ); + + + ]]> + + + + + + + + + + + + + + diff --git a/import_activite/iCTI_import_activite_CEGI.XML b/import_activite/iCTI_import_activite_CEGI.XML new file mode 100644 index 0000000..eef744d --- /dev/null +++ b/import_activite/iCTI_import_activite_CEGI.XML @@ -0,0 +1,12216 @@ + + + + + + + + + + + + + + + + + + ''; + + UPDATE prod_cegi.CJ_SEJOUR + SET SEJ_UAGE = 'H' + FROM prod_cegiloghos.OPERA_SEJ + WHERE SEJ_NUMDOS = NO_DOSSIER AND + ( + ETB_ID::text = ANY (string_to_array('[ID_ETAB]'::text,',')) OR + '[ID_ETAB]' = '' OR + '[ID_ETAB]' = '-1' + ); + + ANALYSE prod_cegi.CJ_SEJOUR + ; + + + ]]> + + + + 10 + ORDER BY 1 + LIMIT 1 + ; + + DROP TABLE IF EXISTS w_CEGIFIRSTSTART; + CREATE TEMP TABLE w_CEGIFIRSTSTART AS + SELECT + date(min(CASE WHEN SEJ_CREAT_APPLI = 'LOGHOS1st' AND SEJ_DT_SORTIE >= CEGIFIRSTSTART_significativedate THEN SEJ_DT_SORTIE ELSE NULL END)) AS CEGIFIRSTSTART_date, + date(min(CASE WHEN SEJ_UAGE = 'H' THEN SEJ_DT_SORTIE ELSE NULL END)) AS CEGILOGHOSSTART_date + FROM prod_cegi.CJ_SEJOUR + LEFT JOIN w_LOGHOS1st_date ON 1=1 + ; + + -- Si pas de LOGHOS, tout est en first + UPDATE prod_cegi.CJ_SEJOUR + SET SEJ_UAGE = 'F' + FROM w_CEGIFIRSTSTART + WHERE CEGIFIRSTSTART_date IS NULL AND + SEJ_UAGE IS DISTINCT FROM 'H' AND + ( + ETB_ID::text = ANY (string_to_array('[ID_ETAB]'::text,',')) OR + '[ID_ETAB]' = '' OR + '[ID_ETAB]' = '-1' + ); + + UPDATE prod_cegi.CJ_SEJOUR + SET SEJ_UAGE = 'F' + FROM w_CEGIFIRSTSTART + WHERE COALESCE(SEJ_DT_SORTIE,'20991231') >= CEGIFIRSTSTART_date AND + SEJ_DT_ENTREE >= CEGIFIRSTSTART_date AND + SEJ_UAGE IS DISTINCT FROM 'H' AND + ( + ETB_ID::text = ANY (string_to_array('[ID_ETAB]'::text,',')) OR + '[ID_ETAB]' = '' OR + '[ID_ETAB]' = '-1' + ); + + UPDATE prod_cegi.CJ_SEJOUR + SET SEJ_UAGE = 'F' + WHERE SEJ_UAGE IS DISTINCT FROM 'F' AND + SEJ_ID IN (SELECT SEJ_ID FROM prod_cegi.CJ_EFS) AND + ( + ETB_ID::text = ANY (string_to_array('[ID_ETAB]'::text,',')) OR + '[ID_ETAB]' = '' OR + '[ID_ETAB]' = '-1' + ) + ; + + ANALYSE prod_cegi.CJ_SEJOUR + ; + + + ]]> + + + + + + + + + + + = '[ENV_ADM_ANNEEDEBUT]0101' OR + DATE_SORTIE_SEJOUR IS NULL OR + DATE_SORTIE_SEJOUR <= '00010101' OR + NO_DOSSIER IN + ( + ( + SELECT + DISTINCT NO_DOSSIER + FROM + prod_cegiloghos.OPERA_FAC + WHERE + DATE_CALCUL_FACTURE IS NULL OR + DATE_CALCUL_FACTURE >= '[ENV_ADM_ANNEEDEBUT]0101' OR + DATE_ENVOI_CETELIC_FACT_AMO >= '[ENV_ADM_ANNEEDEBUT]0101' OR + DATE_ENVOI_CETELIC_FACT_AMC >= '[ENV_ADM_ANNEEDEBUT]0101' + ) + UNION + ( + SELECT + DISTINCT NO_DOSSIER + FROM + prod_cegiloghos.OPERA_REG + WHERE + DATE_REGLEMENT >= '[ENV_ADM_ANNEEDEBUT]0101' + ) + ) + ; + + UPDATE w_OPERA_SEJ_select + SET DATE_SORTIE_SEJOUR = '20991231', DATE_HEURE_SORTIE_SEJOUR = '20991231' + WHERE TYPE_DOSSIER NOT IN('A', 'E', 'I', 'Q') AND (DATE_SORTIE_SEJOUR IS NULL OR DATE_SORTIE_SEJOUR <= '00010101'); + + UPDATE w_OPERA_SEJ_select + SET DATE_SORTIE_SEJOUR = DATE_ENTREE_SEJOUR, DATE_HEURE_SORTIE_SEJOUR = DATE_HEURE_ENTREE_SEJOUR + WHERE (DATE_SORTIE_SEJOUR IS NULL OR DATE_SORTIE_SEJOUR <= '00010101'); + + -- Suppression des dossiers sans numéro de dossier + DELETE FROM w_OPERA_SEJ_select WHERE trim(NO_DOSSIER) = '' OR NO_DOSSIER IS NULL; + + -- Suppression éventuelle dossiers en double + DELETE FROM w_OPERA_SEJ_select + USING ( + SELECT NO_DOSSIER, MAX(CTID) AS CTID_ok + FROM w_OPERA_SEJ_select + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE w_OPERA_SEJ_select.NO_DOSSIER = subview.NO_DOSSIER AND + w_OPERA_SEJ_select.CTID IS DISTINCT FROM subview.CTID_OK; + + ALTER TABLE w_OPERA_SEJ_select ADD CONSTRAINT w_OPERA_SEJ_select_pkey PRIMARY KEY(NO_DOSSIER); + + + DROP TABLE IF EXISTS w_OPERA_ACT_annee; + CREATE TEMP TABLE w_OPERA_ACT_annee AS + SELECT + OPERA_ACT.NO_DOSSIER, + OPERA_ACT.NO_FACTURE, + MAX(OPERA_ACT.PERIODE_ANNEE) AS PERIODE_ANNEE, + date(MIN(CASE WHEN CODE_PRESTA IN ('PJ') THEN DATE_ACTE_DEBUT ELSE NULL END)) AS DATE_FACT_DEBUT_PJ, + date(MAX(CASE WHEN CODE_PRESTA IN ('PJ') THEN DATE_ACTE_FIN ELSE NULL END)) AS DATE_FACT_FIN_PJ + FROM prod_cegiloghos.OPERA_ACT + JOIN w_OPERA_SEJ_select ON OPERA_ACT.NO_DOSSIER = w_OPERA_SEJ_select.NO_DOSSIER + WHERE NO_FACTURE <> '000000000' + GROUP BY 1,2; + + ALTER TABLE w_OPERA_ACT_annee ADD CONSTRAINT w_OPERA_ACT_annee_pkey PRIMARY KEY(NO_FACTURE); + + + UPDATE w_OPERA_ACT_annee + SET DATE_FACT_DEBUT_PJ = date(DATE_ENTREE_SEJOUR) + FROM prod_cegiloghos.OPERA_SEJ + WHERE OPERA_SEJ.NO_DOSSIER = w_OPERA_ACT_annee.NO_DOSSIER AND + ABS(date(DATE_ENTREE_SEJOUR)-DATE_FACT_DEBUT_PJ) = 1; + + + UPDATE w_OPERA_ACT_annee + SET DATE_FACT_FIN_PJ = date(DATE_SORTIE_SEJOUR) + FROM prod_cegiloghos.OPERA_SEJ + WHERE OPERA_SEJ.NO_DOSSIER = w_OPERA_ACT_annee.NO_DOSSIER AND + ABS(date(DATE_SORTIE_SEJOUR)-DATE_FACT_FIN_PJ) = 1; + + + DROP TABLE IF EXISTS w_OPERA_REG_annee; + CREATE TEMP TABLE w_OPERA_REG_annee AS + SELECT + OPERA_REG.NO_FACTURE, + MAX(OPERA_REG.PERIODE_ANNEE) AS PERIODE_ANNEE + FROM prod_cegiloghos.OPERA_REG + JOIN w_OPERA_SEJ_select ON OPERA_REG.NO_DOSSIER = w_OPERA_SEJ_select.NO_DOSSIER + WHERE NO_FACTURE <> '000000000' AND TYPE_REGLEMENT IN ('1', 'S') + GROUP BY 1; + + ALTER TABLE w_OPERA_REG_annee ADD CONSTRAINT w_OPERA_REG_annee_pkey PRIMARY KEY(NO_FACTURE); + + -- Correction code UCD à 13 + UPDATE prod_cegiloghos.OPERA_ACT + SET CODE_UCD = substr(CODE_UCD,7) + WHERE length(CODE_UCD) = 13 AND substr(CODE_UCD,1,6) = '000000' + ; + + + + + ]]> + + + + + + + + + subview.EFT_ID AND + CJ_XECF.MND_ID = subview.MND_ID AND + (CJ_XECF.XECF_PLC LIKE '411%' OR CJ_XECF.XECF_PLC LIKE '412%' OR CJ_XECF.XECF_PLC LIKE '419%') + ; + + UPDATE prod_cegi.CJ_XECF + SET EFT_ID = subview.EFT_ID + FROM + ( + SELECT SEJ_ID, TER_ID, MND_ID, MAX(EFT_ID) AS EFT_ID + FROM prod_cegi.CJ_EFT + WHERE EFT_ID_AVOIR = 0 AND EFT_ETAT = 'F' AND EFT_TTC <> 0 + GROUP BY 1,2,3 + HAVING count(*) = 1 + ) subview, + prod_cegi.CJ_XECE + WHERE CJ_XECF.XECE_ID = CJ_XECE.XECE_ID AND + CJ_XECF.SEJ_ID = subview.SEJ_ID AND + CJ_XECF.TER_ID = subview.TER_ID AND + CJ_XECF.EFT_ID <> subview.EFT_ID AND + CJ_XECF.MND_ID = subview.MND_ID AND + (CJ_XECF.XECF_PLC LIKE '411%' OR CJ_XECF.XECF_PLC LIKE '412%' OR CJ_XECF.XECF_PLC LIKE '419%') + ; + + + + UPDATE prod_cegi.CJ_XECF + SET EFT_ID = subview.EFT_ID + FROM + ( + SELECT SEJ_ID, EFT_TER_TYPE, MND_ID, MAX(EFT_ID) AS EFT_ID + FROM prod_cegi.CJ_EFT + WHERE EFT_ID_AVOIR = 0 AND EFT_ETAT = 'F' + GROUP BY 1,2,3 + HAVING count(*) = 1 + ) subview, + prod_cegi.CJ_XECE + LEFT JOIN w_CJ_TER ON CJ_XECE.TER_ID = w_CJ_TER.TER_ID + WHERE CJ_XECF.XECE_ID = CJ_XECE.XECE_ID AND + CJ_XECF.SEJ_ID = subview.SEJ_ID AND + COALESCE(w_CJ_TER.EFT_TER_TYPE,'DBT') = subview.EFT_TER_TYPE AND + CJ_XECF.EFT_ID <> subview.EFT_ID AND + CJ_XECF.MND_ID = subview.MND_ID AND + (CJ_XECF.XECF_PLC LIKE '411%' OR CJ_XECF.XECF_PLC LIKE '412%' OR CJ_XECF.XECF_PLC LIKE '419%') + ; + + UPDATE prod_cegi.CJ_XECF + SET EFT_ID = subview.EFT_ID + FROM + ( + SELECT SEJ_ID, MND_ID, MAX(EFT_ID) AS EFT_ID + FROM prod_cegi.CJ_EFT + GROUP BY 1,2 + HAVING count(*) = 1 + ) subview, + prod_cegi.CJ_XECE + WHERE CJ_XECF.XECE_ID = CJ_XECE.XECE_ID AND + CJ_XECF.SEJ_ID = subview.SEJ_ID AND + CJ_XECF.EFT_ID = 0 AND + CJ_XECF.MND_ID = subview.MND_ID AND + (CJ_XECF.XECF_PLC LIKE '411%' OR CJ_XECF.XECF_PLC LIKE '412%' OR CJ_XECF.XECF_PLC LIKE '419%') + ; + + ANALYSE prod_cegi.CJ_XECF + ; + + DROP TABLE IF EXISTS CJ_XECF_TER + ; + CREATE TEMP TABLE CJ_XECF_TER AS + SELECT * + FROM prod_cegi.CJ_XECF + WHERE EFT_ID <> 0 AND + SEJ_ID IN (SELECT SEJ_ID FROM prod_cegi.CJ_XECF WHERE EFT_ID = 0) + ; + + ANALYSE CJ_XECF_TER + ; + + CREATE INDEX CJ_XECF_TER_sej_id ON CJ_XECF_TER USING btree (sej_id) + ; + + + SELECT base.cti_execute(' + + UPDATE prod_cegi.CJ_XECF + SET EFT_ID = subview.EFT_ID + FROM + ( + SELECT SEJ_ID, XECE_ID, TER_ID, MND_ID, MAX(EFT_ID) AS EFT_ID + FROM prod_cegi.CJ_XECF + WHERE EFT_ID <> 0 + GROUP BY 1,2,3,4 + HAVING count(DISTINCT EFT_ID) = 1 + ) subview + WHERE CJ_XECF.SEJ_ID = subview.SEJ_ID AND + CJ_XECF.TER_ID = subview.TER_ID AND + CJ_XECF.MND_ID = subview.MND_ID AND + CJ_XECF.XECE_ID = subview.XECE_ID AND + CJ_XECF.EFT_ID = 0 AND + (CJ_XECF.XECF_PLC LIKE ''411%'' OR CJ_XECF.XECF_PLC LIKE ''412%'' OR CJ_XECF.XECF_PLC LIKE ''419%'') + ., + UPDATE prod_cegi.CJ_XECF + SET EFT_ID = CJ_XECF_TER.EFT_ID + FROM CJ_XECF_TER + WHERE CJ_XECF.EFT_ID = 0 AND + CJ_XECF.SEJ_ID = CJ_XECF_TER.SEJ_ID AND + Cj_XECF.XECF_PLC = CJ_XECF_TER.XECF_PLC AND + Cj_XECF.TER_ID = CJ_XECF_TER.TER_ID AND + Cj_XECF.XECF_MONT = 0-CJ_XECF_TER.XECF_MONT AND + CJ_XECF_TER.EFT_ID <> 0 + ',3) + ; + + UPDATE prod_cegi.CJ_XECF + SET EFT_ID = subview.EFT_ID + FROM + ( + SELECT SEJ_ID, TER_ID, MND_ID, MAX(EFT_ID) AS EFT_ID + FROM prod_cegi.CJ_EFT + WHERE EFT_ID_AVOIR = 0 AND EFT_ETAT = 'F' + GROUP BY 1,2,3 + ) subview, + prod_cegi.CJ_XECE + WHERE CJ_XECF.XECE_ID = CJ_XECE.XECE_ID AND + CJ_XECF.SEJ_ID = subview.SEJ_ID AND + CJ_XECF.TER_ID = subview.TER_ID AND + CJ_XECF.EFT_ID = 0 AND + CJ_XECF.MND_ID = subview.MND_ID AND + (CJ_XECF.XECF_PLC LIKE '411%' OR CJ_XECF.XECF_PLC LIKE '412%' OR CJ_XECF.XECF_PLC LIKE '419%') + ; + + UPDATE prod_cegi.CJ_XECF + SET EFT_ID = subview.EFT_ID + FROM + ( + SELECT SEJ_ID, EFT_TER_TYPE, MND_ID, MAX(EFT_ID) AS EFT_ID + FROM prod_cegi.CJ_EFT + WHERE EFT_ID_AVOIR = 0 AND EFT_ETAT = 'F' + GROUP BY 1,2,3 + ) subview, + prod_cegi.CJ_XECE + LEFT JOIN w_CJ_TER ON CJ_XECE.TER_ID = w_CJ_TER.TER_ID + WHERE CJ_XECF.XECE_ID = CJ_XECE.XECE_ID AND + CJ_XECF.SEJ_ID = subview.SEJ_ID AND + COALESCE(w_CJ_TER.EFT_TER_TYPE,'DBT') = subview.EFT_TER_TYPE AND + CJ_XECF.EFT_ID = 0 AND + CJ_XECF.MND_ID = subview.MND_ID AND + (CJ_XECF.XECF_PLC LIKE '411%' OR CJ_XECF.XECF_PLC LIKE '412%' OR CJ_XECF.XECF_PLC LIKE '419%') + ; + + UPDATE prod_cegi.CJ_XECF + SET EFT_ID = subview.EFT_ID + FROM + ( + SELECT SEJ_ID, MND_ID, MAX(EFT_ID) AS EFT_ID + FROM prod_cegi.CJ_EFT + GROUP BY 1,2 + ) subview, + prod_cegi.CJ_XECE + WHERE CJ_XECF.XECE_ID = CJ_XECE.XECE_ID AND + CJ_XECF.SEJ_ID = subview.SEJ_ID AND + CJ_XECF.EFT_ID = 0 AND + CJ_XECF.MND_ID = subview.MND_ID AND + (CJ_XECF.XECF_PLC LIKE '411%' OR CJ_XECF.XECF_PLC LIKE '412%' OR CJ_XECF.XECF_PLC LIKE '419%') + ; + + + UPDATE prod_cegi.CJ_XECF + SET XECF_TYPE = 0 - XECF_TYPE + WHERE CJ_XECF.XECF_TYPE >= 0 AND + XECF_PLC LIKE '4197%' + ; + + + + DROP TABLE IF EXISTS w_CJ_EFT_TIE; + CREATE TEMP TABLE w_CJ_EFT_TIE AS + SELECT EFS_ID, EFT_SEJHON, + MAX(CASE WHEN EFT_TER_TYPE = 'CAI' THEN EFT_ID ELSE 0 END) AS EFT_ID_CAI, + MAX(CASE WHEN EFT_TER_TYPE = 'CAI' THEN EFT_TIE_CENTR ELSE '' END) AS EFT_TIE_CENTR_CAI, + MAX(CASE WHEN EFT_TER_TYPE = 'MUT' THEN EFT_ID ELSE 0 END) AS EFT_ID_MUT, + MAX(CASE WHEN EFT_TER_TYPE = 'MUT' THEN EFT_TIE_CENTR ELSE '' END) AS EFT_TIE_CENTR_MUT, + MAX(CASE WHEN EFT_TER_TYPE = 'DBT' THEN EFT_ID ELSE 0 END) AS EFT_ID_DBT, + MAX(CASE WHEN EFT_TER_TYPE = 'DBT' THEN EFT_TIE_CENTR ELSE '' END) AS EFT_TIE_CENTR_DBT + FROM prod_cegi.CJ_EFT + GROUP BY 1,2 + ; + + UPDATE prod_cegi.CJ_XECF + SET EFT_ID = EFT_ID_MUT + FROM prod_cegi.CJ_EFT + JOIN w_CJ_EFT_TIE ON CJ_EFT.EFS_ID = w_CJ_EFT_TIE.EFS_ID AND + CJ_EFT.EFT_SEJHON = w_CJ_EFT_TIE.EFT_SEJHON + WHERE CJ_EFT.EFT_ID = CJ_XECF.EFT_ID AND + EFT_TER_TYPE = 'CAI' AND + XECF_PLC <> EFT_TIE_CENTR_CAI AND + XECF_PLC = EFT_TIE_CENTR_MUT AND + EFT_ID_MUT <> 0 + ; + + UPDATE prod_cegi.CJ_XECF + SET EFT_ID = EFT_ID_DBT + FROM prod_cegi.CJ_EFT + JOIN w_CJ_EFT_TIE ON CJ_EFT.EFS_ID = w_CJ_EFT_TIE.EFS_ID AND + CJ_EFT.EFT_SEJHON = w_CJ_EFT_TIE.EFT_SEJHON + WHERE CJ_EFT.EFT_ID = CJ_XECF.EFT_ID AND + EFT_TER_TYPE = 'CAI' AND + XECF_PLC <> EFT_TIE_CENTR_CAI AND + XECF_PLC = EFT_TIE_CENTR_DBT AND + EFT_ID_DBT <> 0 + ; + + UPDATE prod_cegi.CJ_XECF + SET EFT_ID = EFT_ID_CAI + FROM prod_cegi.CJ_EFT + JOIN w_CJ_EFT_TIE ON CJ_EFT.EFS_ID = w_CJ_EFT_TIE.EFS_ID AND + CJ_EFT.EFT_SEJHON = w_CJ_EFT_TIE.EFT_SEJHON + WHERE CJ_EFT.EFT_ID = CJ_XECF.EFT_ID AND + EFT_TER_TYPE = 'MUT' AND + XECF_PLC <> EFT_TIE_CENTR_MUT AND + XECF_PLC = EFT_TIE_CENTR_CAI AND + EFT_ID_CAI <> 0 + ; + + UPDATE prod_cegi.CJ_XECF + SET EFT_ID = EFT_ID_DBT + FROM prod_cegi.CJ_EFT + JOIN w_CJ_EFT_TIE ON CJ_EFT.EFS_ID = w_CJ_EFT_TIE.EFS_ID AND + CJ_EFT.EFT_SEJHON = w_CJ_EFT_TIE.EFT_SEJHON + WHERE CJ_EFT.EFT_ID = CJ_XECF.EFT_ID AND + EFT_TER_TYPE = 'MUT' AND + XECF_PLC <> EFT_TIE_CENTR_MUT AND + XECF_PLC = EFT_TIE_CENTR_DBT AND + EFT_ID_DBT <> 0 + ; + + UPDATE prod_cegi.CJ_XECF + SET EFT_ID = EFT_ID_CAI + FROM prod_cegi.CJ_EFT + JOIN w_CJ_EFT_TIE ON CJ_EFT.EFS_ID = w_CJ_EFT_TIE.EFS_ID AND + CJ_EFT.EFT_SEJHON = w_CJ_EFT_TIE.EFT_SEJHON + WHERE CJ_EFT.EFT_ID = CJ_XECF.EFT_ID AND + EFT_TER_TYPE = 'DBT' AND + XECF_PLC <> EFT_TIE_CENTR_DBT AND + XECF_PLC = EFT_TIE_CENTR_CAI AND + EFT_ID_CAI <> 0 + ; + + UPDATE prod_cegi.CJ_XECF + SET EFT_ID = EFT_ID_MUT + FROM prod_cegi.CJ_EFT + JOIN w_CJ_EFT_TIE ON CJ_EFT.EFS_ID = w_CJ_EFT_TIE.EFS_ID AND + CJ_EFT.EFT_SEJHON = w_CJ_EFT_TIE.EFT_SEJHON + WHERE CJ_EFT.EFT_ID = CJ_XECF.EFT_ID AND + EFT_TER_TYPE = 'DBT' AND + XECF_PLC <> EFT_TIE_CENTR_DBT AND + XECF_PLC = EFT_TIE_CENTR_MUT AND + EFT_ID_MUT <> 0 + ; + + DROP TABLE IF EXISTS w_DFT_PLC_TYPE; + CREATE TEMP TABLE w_DFT_PLC_TYPE AS + SELECT XECF_PLC, EFT_SEJHON, (MAX(Array[to_char(nb,'FM000000000'),EFT_TER_TYPE]))[2] AS DFT_EFT_TER_TYPE + FROM + ( + SELECT XECF_PLC, EFT_SEJHON, EFT_TER_TYPE, count(*) AS nb + FROM prod_cegi.CJ_XECF + JOIN prod_cegi.CJ_XECE ON CJ_XECF.XECE_ID = CJ_XECE.XECE_ID + JOIN prod_cegi.CJ_EFT ON CJ_EFT.EFT_ID = CJ_XECF.EFT_ID + WHERE EFT_TER_TYPE IN ('CAI','MUT','DBT') + GROUP BY 1,2,3 + ) subview + GROUP BY 1,2 + ; + + + UPDATE prod_cegi.CJ_XECF + SET EFT_ID = CASE + WHEN DFT_EFT_TER_TYPE = 'CAI' AND EFT_ID_CAI <> 0 THEN EFT_ID_CAI + WHEN DFT_EFT_TER_TYPE = 'MUT' AND EFT_ID_MUT <> 0 THEN EFT_ID_MUT + WHEN DFT_EFT_TER_TYPE = 'DBT' AND EFT_ID_DBT <> 0 THEN EFT_ID_DBT + ELSE CJ_XECF.EFT_ID END + FROM w_DFT_PLC_TYPE,prod_cegi.CJ_EFT + JOIN w_CJ_EFT_TIE ON CJ_EFT.EFS_ID = w_CJ_EFT_TIE.EFS_ID AND + CJ_EFT.EFT_SEJHON = w_CJ_EFT_TIE.EFT_SEJHON + WHERE CJ_XECF.XECF_PLC = w_DFT_PLC_TYPE.XECF_PLC AND + CJ_EFT.EFT_SEJHON = w_DFT_PLC_TYPE.EFT_SEJHON AND + CJ_EFT.EFT_ID = CJ_XECF.EFT_ID AND + EFT_TER_TYPE = 'CAI' AND + CJ_XECF.XECF_PLC <> EFT_TIE_CENTR_CAI AND + EFT_TER_TYPE <> DFT_EFT_TER_TYPE + + ; + + UPDATE prod_cegi.CJ_XECF + SET EFT_ID = CASE + WHEN DFT_EFT_TER_TYPE = 'CAI' AND EFT_ID_CAI <> 0 THEN EFT_ID_CAI + WHEN DFT_EFT_TER_TYPE = 'MUT' AND EFT_ID_MUT <> 0 THEN EFT_ID_MUT + WHEN DFT_EFT_TER_TYPE = 'DBT' AND EFT_ID_DBT <> 0 THEN EFT_ID_DBT + ELSE CJ_XECF.EFT_ID END + FROM w_DFT_PLC_TYPE,prod_cegi.CJ_EFT + JOIN w_CJ_EFT_TIE ON CJ_EFT.EFS_ID = w_CJ_EFT_TIE.EFS_ID AND + CJ_EFT.EFT_SEJHON = w_CJ_EFT_TIE.EFT_SEJHON + WHERE CJ_XECF.XECF_PLC = w_DFT_PLC_TYPE.XECF_PLC AND + CJ_EFT.EFT_SEJHON = w_DFT_PLC_TYPE.EFT_SEJHON AND + CJ_EFT.EFT_ID = CJ_XECF.EFT_ID AND + EFT_TER_TYPE = 'MUT' AND + CJ_XECF.XECF_PLC <> EFT_TIE_CENTR_MUT AND + EFT_TER_TYPE <> DFT_EFT_TER_TYPE + + ; + + UPDATE prod_cegi.CJ_XECF + SET EFT_ID = CASE + WHEN DFT_EFT_TER_TYPE = 'CAI' AND EFT_ID_CAI <> 0 THEN EFT_ID_CAI + WHEN DFT_EFT_TER_TYPE = 'MUT' AND EFT_ID_MUT <> 0 THEN EFT_ID_MUT + WHEN DFT_EFT_TER_TYPE = 'DBT' AND EFT_ID_DBT <> 0 THEN EFT_ID_DBT + ELSE CJ_XECF.EFT_ID END + FROM w_DFT_PLC_TYPE,prod_cegi.CJ_EFT + JOIN w_CJ_EFT_TIE ON CJ_EFT.EFS_ID = w_CJ_EFT_TIE.EFS_ID AND + CJ_EFT.EFT_SEJHON = w_CJ_EFT_TIE.EFT_SEJHON + WHERE CJ_XECF.XECF_PLC = w_DFT_PLC_TYPE.XECF_PLC AND + CJ_EFT.EFT_SEJHON = w_DFT_PLC_TYPE.EFT_SEJHON AND + CJ_EFT.EFT_ID = CJ_XECF.EFT_ID AND + EFT_TER_TYPE = 'DBT' AND + CJ_XECF.XECF_PLC <> EFT_TIE_CENTR_DBT AND + EFT_TER_TYPE <> DFT_EFT_TER_TYPE + + ; + ]]> + + + 'NF') OR + CJ_SEJOUR.SEJ_ID IN (SELECT DISTINCT SEJ_ID FROM prod_cegi.CJ_EFS WHERE efs_ttc <> 0) + ) AND + SEJ_NUMDOS NOT LIKE 'TMP%' + ORDER BY SEJ_DT_ENTREE + ; + + ANALYSE w_CJ_SEJOUR_select + ; + + UPDATE w_CJ_SEJOUR_select + SET SEJ_DT_SORTIE = NULL, SEJ_DTHR_SORTIE = NULL + WHERE SEJ_DT_SORTIE < SEJ_DT_ENTREE; + + UPDATE w_CJ_SEJOUR_select + SET SEJ_DT_SORTIE = '20991231', SEJ_DTHR_SORTIE = '20991231' + WHERE TYD_LIBC NOT IN('A', 'U', 'E', 'I', 'Q') AND (SEJ_DT_SORTIE IS NULL OR SEJ_DT_SORTIE <= '00010101'); + + + UPDATE w_CJ_SEJOUR_select + SET SEJ_DT_SORTIE = SEJ_DT_ENTREE, SEJ_DTHR_SORTIE = SEJ_DTHR_ENTREE + WHERE (SEJ_DT_SORTIE IS NULL OR SEJ_DT_SORTIE <= '00010101'); + + UPDATE w_CJ_SEJOUR_select + SET OK ='O' + WHERE SEJ_DT_SORTIE >= '[ENV_ADM_ANNEEDEBUT]0101' OR SEJ_DT_ENTREE >= '[ENV_ADM_ANNEEDEBUT]0101' + ; + + UPDATE w_CJ_SEJOUR_select + SET OK ='O' + FROM prod_cegi.CJ_EFS + WHERE w_CJ_SEJOUR_select.SEJ_ID = CJ_EFS.SEJ_ID AND + OK <> 'O' AND + EFS_DT_FAC >= '[ENV_ADM_ANNEEDEBUT]0101' + ; + + + DROP TABLE IF EXISTS w_CJ_EFS_ns; + CREATE TEMP TABLE w_CJ_EFS_ns AS + SELECT + CJ_EFS.SEJ_ID, + SUM(XECF_MONT) AS XECF_MONT, + MIN(XECE_DATE) AS XECE_DATE, + MAX(EFS_CPTA_TTC+EFS_CPTA_HON_TTC) AS EFS_CPTA_TTC + FROM prod_cegi.CJ_XECF + JOIN prod_cegi.CJ_XECE ON CJ_XECF.XECE_ID = CJ_XECE.XECE_ID + JOIN prod_cegi.CJ_EFT ON CJ_EFT.EFT_ID = CJ_XECF.EFT_ID + JOIN prod_cegi.CJ_EFS ON CJ_EFT.EFS_ID = CJ_EFS.EFS_ID + WHERE CJ_XECF.EFT_ID <> 0 AND + XECF_TYPE > 0 AND + CJ_XECE.JNL_CODE <> ALL(SELECT JNL_CODE FROM prod_cegi.CJ_JNLNUMFAC) + GROUP BY 1 + HAVING MIN(XECE_DATE) >= '[ENV_ADM_ANNEEDEBUT]0101' OR + round(MAX(EFS_CPTA_TTC+EFS_CPTA_HON_TTC)::numeric,2) <> round(SUM(XECF_MONT)::numeric,2) + ; + + ANALYSE w_CJ_EFS_ns + ; + + UPDATE w_CJ_SEJOUR_select + SET OK ='O' + FROM w_CJ_EFS_ns + WHERE w_CJ_SEJOUR_select.SEJ_ID = w_CJ_EFS_ns.SEJ_ID AND + OK <> 'O' + ; + + -- Séjours non concernés + DELETE FROM w_CJ_SEJOUR_select + WHERE OK <> 'O' + ; + + -- Supression élements en trop + DELETE FROM w_CJ_SEJOUR_select + USING (SELECT SEJ_ID, MIN(ctid) AS to_del FROM w_CJ_SEJOUR_select GROUP BY 1 HAVING count(*) > 1) sub + WHERE ctid = to_del + ; + -- Doublons dans les numéros de séjour + UPDATE w_CJ_SEJOUR_select + SET SEJ_NUMDOS = new_SEJ_NUMDOS + FROM + ( + SELECT ctid, + SEJ_NUMDOS || CASE WHEN rank() OVER (PARTITION BY SEJ_NUMDOS ORDER BY SEJ_DT_ENTREE, ctid) > 1 THEN + '_' || rank() OVER (PARTITION BY SEJ_ID,SEJ_NUMDOS ORDER BY SEJ_DT_ENTREE,ctid) ELSE '' END AS new_SEJ_NUMDOS + FROM w_CJ_SEJOUR_select + WHERE SEJ_NUMDOS = ANY (SELECT SEJ_NUMDOS FROM w_CJ_SEJOUR_select GROUP BY 1 HAVING count(*) > 1) + ) subview + WHERE w_CJ_SEJOUR_select.ctid = subview.ctid + ; + + + + + ]]> + + + + + + + + + + + + + + + + + '' AND GHS_NUMERO <> '9999' + GROUP BY 1; + + + + ALTER TABLE w_RSS ADD CONSTRAINT w_RSS_pkey PRIMARY KEY(NO_DOSSIER); + + + INSERT INTO w_RSS + SELECT + w_OPERA_SEJ_select.NO_DOSSIER AS NO_DOSSIER, + CODE_GHS AS GHS_NUMERO, + '20991231'::date AS DT_ENV_ADM + FROM w_OPERA_SEJ_select + LEFT JOIN w_RSS ON w_RSS.NO_DOSSIER = w_OPERA_SEJ_select.NO_DOSSIER + WHERE w_RSS.NO_DOSSIER IS NULL AND CODE_GHS <> '' AND CODE_GHS <> '9999'; + + + + DROP TABLE IF EXISTS w_OPERA_OCC; + CREATE TEMP TABLE w_OPERA_OCC AS + SELECT + w_OPERA_SEJ_select.NO_DOSSIER, + w_OPERA_SEJ_select.TYPE_DOSSIER, + w_OPERA_SEJ_select.MODE_ENTREE, + DATE_HEURE_ENTREE_SEJOUR, + DATE_HEURE_SORTIE_SEJOUR, + CODE_SERVICE_ENTREE, + CODE_SERVICE_TARIFAIRE_ENTREE, + CODE_SERVICE_DISCIPLINE_ENTREE, + MT_ENTREE, + DMT_ENTREE, + DATE_MOUVEMENT_ENTREE + + date_part('hour',to_timestamp(to_char(HEURE_MOUVEMENT_ENTREE, 'FM0000'),'HH24MI')) * '1 HOUR'::interval + + date_part('minute',to_timestamp(to_char(HEURE_MOUVEMENT_ENTREE, 'FM0000'),'HH24MI')) * '1 MINUTE'::interval AS DATE_HEURE_MOUVEMENT_ENTREE, + DATE_MOUVEMENT_SORTIE + + date_part('hour',to_timestamp(to_char(HEURE_MOUVEMENT_SORTIE, 'FM0000'),'HH24MI')) * '1 HOUR'::interval + + date_part('minute',to_timestamp(to_char(HEURE_MOUVEMENT_SORTIE, 'FM0000'),'HH24MI')) * '1 MINUTE'::interval AS DATE_HEURE_MOUVEMENT_SORTIE, + 'A'::text AS TYPE_MOUVEMENT, + OPERA_OCC.CODE_LIT AS CODE_LIT_MOUVEMENT, + OPERA_OCC.CODE_SERVICE_DISCIPLINE AS CODE_SERVICE_MOUVEMENT, + OPERA_PSDISC.CODE_SERVICE_TARIFAIRE AS CODE_SERVICE_TARIFAIRE_MOUVEMENT, + OPERA_OCC.CODE_SERVICE_DISCIPLINE AS CODE_SERVICE_DISCIPLINE_MOUVEMENT, + MT AS MT_MOUVEMENT, + DMT AS DMT_MOUVEMENT, + ''::text AS CODE_UM_MOUVEMENT + FROM w_OPERA_SEJ_select + LEFT JOIN prod_cegiloghos.OPERA_OCC ON OPERA_OCC.NO_DOSSIER = w_OPERA_SEJ_select.NO_DOSSIER AND OPERA_OCC.PERIODE_ANNEE = w_OPERA_SEJ_select.PERIODE_ANNEE + LEFT JOIN prod_cegiloghos.OPERA_PSDISC ON OPERA_OCC.CODE_SERVICE_DISCIPLINE = OPERA_PSDISC.CODE_SERVICE_DISCIPLINE + LEFT JOIN prod_cegiloghos.OPERA_PSTARF ON OPERA_PSDISC.CODE_SERVICE_TARIFAIRE = OPERA_PSTARF.CODE_SERVICE_TARIFAIRE; + + INSERT INTO w_OPERA_OCC + SELECT + w_OPERA_SEJ_select.NO_DOSSIER, + w_OPERA_SEJ_select.TYPE_DOSSIER, + w_OPERA_SEJ_select.MODE_ENTREE, + DATE_HEURE_ENTREE_SEJOUR, + DATE_HEURE_SORTIE_SEJOUR, + CODE_SERVICE_ENTREE, + CODE_SERVICE_TARIFAIRE_ENTREE, + CODE_SERVICE_DISCIPLINE_ENTREE, + MT_ENTREE, + DMT_ENTREE, + D_E + + date_part('hour',hr_entree) * '1 HOUR'::interval + + date_part('minute',hr_entree) * '1 MINUTE'::interval AS DATE_HEURE_MOUVEMENT_ENTREE, + D_S + + date_part('hour',hr_sortie) * '1 HOUR'::interval + + date_part('minute',hr_sortie) * '1 MINUTE'::interval AS DATE_HEURE_MOUVEMENT_SORTIE, + 'P'::text AS TYPE_MOUVEMENT, + ''::text AS CODE_LIT_MOUVEMENT, + ''::text AS CODE_SERVICE_MOUVEMENT, + ''::text AS CODE_SERVICE_TARIFAIRE_MOUVEMENT, + ''::text AS CODE_SERVICE_DISCIPLINE_MOUVEMENT, + ''::text AS MT_MOUVEMENT, + ''::text AS DMT_MOUVEMENT, + C_UM AS CODE_UM_MOUVEMENT + FROM prod_cegi.RUM + JOIN prod_cegi.RSS ON RUM.N_PMSI = RSS.N_PMSI + JOIN w_OPERA_SEJ_select ON to_char(N_DOSS, 'FM000000000') = w_OPERA_SEJ_select.NO_DOSSIER; + + CREATE INDEX w_OPERA_OCC_i1 + ON w_OPERA_OCC + USING btree + (NO_DOSSIER); + + INSERT INTO w_OPERA_OCC + SELECT + w_OPERA_SEJ_select.NO_DOSSIER, + w_OPERA_SEJ_select.TYPE_DOSSIER, + w_OPERA_SEJ_select.MODE_ENTREE, + w_OPERA_SEJ_select.DATE_HEURE_ENTREE_SEJOUR, + w_OPERA_SEJ_select.DATE_HEURE_SORTIE_SEJOUR, + w_OPERA_SEJ_select.CODE_SERVICE_ENTREE, + w_OPERA_SEJ_select.CODE_SERVICE_TARIFAIRE_ENTREE, + w_OPERA_SEJ_select.CODE_SERVICE_DISCIPLINE_ENTREE, + w_OPERA_SEJ_select.MT_ENTREE, + w_OPERA_SEJ_select.DMT_ENTREE, + w_OPERA_SEJ_select.DATE_HEURE_ENTREE_SEJOUR + + date_part('hour',to_timestamp(to_char(HEURE_ENTREE_SEJOUR, 'FM0000'),'HH24MI')) * '1 HOUR'::interval + + date_part('minute',to_timestamp(to_char(HEURE_ENTREE_SEJOUR, 'FM0000'),'HH24MI')) * '1 MINUTE'::interval AS DATE_HEURE_MOUVEMENT_ENTREE, + w_OPERA_SEJ_select.DATE_HEURE_SORTIE_SEJOUR + + date_part('hour',to_timestamp(to_char(HEURE_SORTIE_SEJOUR, 'FM0000'),'HH24MI')) * '1 HOUR'::interval + + date_part('minute',to_timestamp(to_char(HEURE_SORTIE_SEJOUR, 'FM0000'),'HH24MI')) * '1 MINUTE'::interval AS DATE_HEURE_MOUVEMENT_SORTIE, + 'E'::text AS TYPE_MOUVEMENT, + ''::text AS CODE_LIT_MOUVEMENT, + w_OPERA_SEJ_select.CODE_SERVICE_ENTREE AS CODE_SERVICE_MOUVEMENT, + w_OPERA_SEJ_select.CODE_SERVICE_TARIFAIRE_ENTREE AS CODE_SERVICE_TARIFAIRE_MOUVEMENT, + w_OPERA_SEJ_select.CODE_SERVICE_DISCIPLINE_ENTREE AS CODE_SERVICE_DISCIPLINE_MOUVEMENT, + w_OPERA_SEJ_select.MT_ENTREE AS MT_MOUVEMENT, + w_OPERA_SEJ_select.DMT_ENTREE AS DMT_MOUVEMENT, + ''::text AS CODE_UM_MOUVEMENT + FROM w_OPERA_SEJ_select + LEFT JOIN w_OPERA_OCC ON w_OPERA_SEJ_select.NO_DOSSIER = w_OPERA_OCC.NO_DOSSIER AND + w_OPERA_SEJ_select.DATE_HEURE_ENTREE_SEJOUR = w_OPERA_OCC.DATE_HEURE_MOUVEMENT_ENTREE + WHERE w_OPERA_OCC.NO_DOSSIER IS NULL; + + + + DROP SEQUENCE IF EXISTS w_OPERA_OCC_mouvement_seq; + CREATE TEMP SEQUENCE w_OPERA_OCC_mouvement_seq + INCREMENT 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 1 + CACHE 1; + + + + DROP TABLE IF EXISTS w_OPERA_OCC_mouvement; + CREATE TEMP TABLE w_OPERA_OCC_mouvement AS + SELECT NO_DOSSIER, + TYPE_DOSSIER, + MODE_ENTREE, + DATE_HEURE_ENTREE_SEJOUR, + DATE_HEURE_SORTIE_SEJOUR, + DATE_HEURE_MOUVEMENT_ENTREE, + nextval('w_OPERA_OCC_mouvement_seq'::regclass) AS sequence , + + COALESCE(CODE_SERVICE,'') AS CODE_SERVICE, + COALESCE(CODE_SERVICE_TARIFAIRE,'') AS CODE_SERVICE_TARIFAIRE, + COALESCE(CODE_SERVICE_DISCIPLINE,'') AS CODE_SERVICE_DISCIPLINE, + COALESCE(MT,'') AS MT, + COALESCE(DMT,'') AS DMT, + COALESCE(CODE_LIT,'') AS CODE_LIT, + COALESCE(CODE_UM,'') AS CODE_UM + FROM + (SELECT + NO_DOSSIER, + TYPE_DOSSIER, + MODE_ENTREE, + DATE_HEURE_MOUVEMENT_ENTREE, + DATE_HEURE_ENTREE_SEJOUR, + DATE_HEURE_SORTIE_SEJOUR, + (MAX(CASE WHEN TYPE_MOUVEMENT <> 'A' THEN NULL ELSE + array[ + CASE WHEN DATE_HEURE_MOUVEMENT_ENTREE IS NOT NULL THEN DATE_HEURE_MOUVEMENT_ENTREE::text ELSE DATE_HEURE_ENTREE_SEJOUR::text END, + CASE WHEN DATE_HEURE_MOUVEMENT_ENTREE IS NOT NULL THEN CODE_SERVICE_MOUVEMENT ELSE CODE_SERVICE_ENTREE END + ] END))[2] AS CODE_SERVICE, + (MAX(CASE WHEN TYPE_MOUVEMENT <> 'A' THEN NULL ELSE + array[ + CASE WHEN DATE_HEURE_MOUVEMENT_ENTREE IS NOT NULL THEN DATE_HEURE_MOUVEMENT_ENTREE::text ELSE DATE_HEURE_ENTREE_SEJOUR::text END, + CASE WHEN DATE_HEURE_MOUVEMENT_ENTREE IS NOT NULL THEN CODE_SERVICE_TARIFAIRE_MOUVEMENT ELSE CODE_SERVICE_TARIFAIRE_ENTREE END + ] END))[2] AS CODE_SERVICE_TARIFAIRE, + (MAX(CASE WHEN TYPE_MOUVEMENT <> 'A' THEN NULL ELSE + array[ + CASE WHEN DATE_HEURE_MOUVEMENT_ENTREE IS NOT NULL THEN DATE_HEURE_MOUVEMENT_ENTREE::text ELSE DATE_HEURE_ENTREE_SEJOUR::text END, + CASE WHEN DATE_HEURE_MOUVEMENT_ENTREE IS NOT NULL THEN CODE_SERVICE_DISCIPLINE_MOUVEMENT ELSE CODE_SERVICE_DISCIPLINE_ENTREE END + ] END))[2] AS CODE_SERVICE_DISCIPLINE, + (MAX(CASE WHEN TYPE_MOUVEMENT <> 'A' THEN NULL ELSE + array[ + CASE WHEN DATE_HEURE_MOUVEMENT_ENTREE IS NOT NULL THEN DATE_HEURE_MOUVEMENT_ENTREE::text ELSE DATE_HEURE_ENTREE_SEJOUR::text END, + CASE WHEN DATE_HEURE_MOUVEMENT_ENTREE IS NOT NULL THEN MT_MOUVEMENT ELSE MT_ENTREE END + ] END))[2] AS MT, + (MAX(CASE WHEN TYPE_MOUVEMENT <> 'A' THEN NULL ELSE + array[ + CASE WHEN DATE_HEURE_MOUVEMENT_ENTREE IS NOT NULL THEN DATE_HEURE_MOUVEMENT_ENTREE::text ELSE DATE_HEURE_ENTREE_SEJOUR::text END, + CASE WHEN DATE_HEURE_MOUVEMENT_ENTREE IS NOT NULL THEN DMT_MOUVEMENT ELSE DMT_ENTREE END + ] END))[2] AS DMT, + (MAX(CASE WHEN TYPE_MOUVEMENT <> 'A' THEN NULL ELSE + array[DATE_HEURE_MOUVEMENT_ENTREE::text,CODE_LIT_MOUVEMENT + ] END))[2] AS CODE_LIT, + (MAX(CASE WHEN TYPE_MOUVEMENT IN ('E', 'A') THEN NULL ELSE + array[DATE_HEURE_MOUVEMENT_ENTREE::text,CODE_UM_MOUVEMENT + ] END))[2] AS CODE_UM + + FROM w_OPERA_OCC + GROUP BY 1,2,3,4,5,6 + ORDER BY 1,4) subview; + + CREATE INDEX w_OPERA_OCC_mouvement_i1 + ON w_OPERA_OCC_mouvement + USING btree + (NO_DOSSIER); + + + SELECT base.cti_execute('UPDATE w_OPERA_OCC_mouvement + SET CODE_UM = w_OPERA_OCC_mouvement_before.CODE_UM + FROM w_OPERA_OCC_mouvement w_OPERA_OCC_mouvement_before + WHERE w_OPERA_OCC_mouvement.NO_DOSSIER = w_OPERA_OCC_mouvement_before.NO_DOSSIER AND + w_OPERA_OCC_mouvement.sequence = w_OPERA_OCC_mouvement_before.sequence + 1 AND + (w_OPERA_OCC_mouvement.CODE_UM = '''') AND + w_OPERA_OCC_mouvement_before.CODE_UM <> ''''',20); + + SELECT base.cti_execute('UPDATE w_OPERA_OCC_mouvement + SET CODE_UM = w_OPERA_OCC_mouvement_next.CODE_UM + FROM w_OPERA_OCC_mouvement w_OPERA_OCC_mouvement_next + WHERE w_OPERA_OCC_mouvement.NO_DOSSIER = w_OPERA_OCC_mouvement_next.NO_DOSSIER AND + w_OPERA_OCC_mouvement.sequence = w_OPERA_OCC_mouvement_next.sequence - 1 AND + (w_OPERA_OCC_mouvement.CODE_UM = '''') AND + w_OPERA_OCC_mouvement_next.CODE_UM <> ''''',20); + + + SELECT base.cti_execute('UPDATE w_OPERA_OCC_mouvement + SET + CODE_SERVICE = w_OPERA_OCC_mouvement_before.CODE_SERVICE, + CODE_SERVICE_TARIFAIRE = w_OPERA_OCC_mouvement_before.CODE_SERVICE_TARIFAIRE, + CODE_SERVICE_DISCIPLINE = w_OPERA_OCC_mouvement_before.CODE_SERVICE_DISCIPLINE, + MT = w_OPERA_OCC_mouvement_before.MT, + DMT = w_OPERA_OCC_mouvement_before.DMT, + CODE_LIT = w_OPERA_OCC_mouvement_before.CODE_LIT + FROM w_OPERA_OCC_mouvement w_OPERA_OCC_mouvement_before + WHERE w_OPERA_OCC_mouvement.NO_DOSSIER = w_OPERA_OCC_mouvement_before.NO_DOSSIER AND + w_OPERA_OCC_mouvement.sequence = w_OPERA_OCC_mouvement_before.sequence + 1 AND + (w_OPERA_OCC_mouvement.CODE_SERVICE = '''') AND + w_OPERA_OCC_mouvement_before.CODE_SERVICE <> ''''',20); + + SELECT base.cti_execute('UPDATE w_OPERA_OCC_mouvement + SET + CODE_SERVICE = w_OPERA_OCC_mouvement_next.CODE_SERVICE, + CODE_SERVICE_TARIFAIRE = w_OPERA_OCC_mouvement_next.CODE_SERVICE_TARIFAIRE, + CODE_SERVICE_DISCIPLINE = w_OPERA_OCC_mouvement_next.CODE_SERVICE_DISCIPLINE, + MT = w_OPERA_OCC_mouvement_next.MT, + DMT = w_OPERA_OCC_mouvement_next.DMT, + CODE_LIT = w_OPERA_OCC_mouvement_next.CODE_LIT + FROM w_OPERA_OCC_mouvement w_OPERA_OCC_mouvement_next + WHERE w_OPERA_OCC_mouvement.NO_DOSSIER = w_OPERA_OCC_mouvement_next.NO_DOSSIER AND + w_OPERA_OCC_mouvement.sequence = w_OPERA_OCC_mouvement_next.sequence - 1 AND + (w_OPERA_OCC_mouvement.CODE_SERVICE = '''') AND + w_OPERA_OCC_mouvement_next.CODE_SERVICE <> ''''',20); + + + SELECT base.cti_execute('UPDATE w_OPERA_OCC_mouvement + SET + CODE_LIT = w_OPERA_OCC_mouvement_before.CODE_LIT + FROM w_OPERA_OCC_mouvement w_OPERA_OCC_mouvement_before + WHERE w_OPERA_OCC_mouvement.NO_DOSSIER = w_OPERA_OCC_mouvement_before.NO_DOSSIER AND + w_OPERA_OCC_mouvement.sequence = w_OPERA_OCC_mouvement_before.sequence + 1 AND + (w_OPERA_OCC_mouvement.CODE_LIT = '''') AND + w_OPERA_OCC_mouvement_before.CODE_LIT <> ''''',20); + + SELECT base.cti_execute('UPDATE w_OPERA_OCC_mouvement + SET + CODE_LIT = w_OPERA_OCC_mouvement_next.CODE_LIT + FROM w_OPERA_OCC_mouvement w_OPERA_OCC_mouvement_next + WHERE w_OPERA_OCC_mouvement.NO_DOSSIER = w_OPERA_OCC_mouvement_next.NO_DOSSIER AND + w_OPERA_OCC_mouvement.sequence = w_OPERA_OCC_mouvement_next.sequence - 1 AND + (w_OPERA_OCC_mouvement.CODE_LIT = '''') AND + w_OPERA_OCC_mouvement_next.CODE_LIT <> ''''',20); + + + + + DROP TABLE IF EXISTS w_OPERA_OCC_sortie; + CREATE TEMP TABLE w_OPERA_OCC_sortie AS + SELECT + NO_DOSSIER, + MIN(sequence) AS sequence_entree, + MAX(sequence) AS sequence_sortie, + (MAX(array[DATE_HEURE_MOUVEMENT_ENTREE::text, CODE_SERVICE]))[2] AS CODE_SERVICE_SORTIE, + (MAX(array[DATE_HEURE_MOUVEMENT_ENTREE::text, CODE_SERVICE_TARIFAIRE]))[2] AS CODE_SERVICE_TARIFAIRE_SORTIE, + (MAX(array[DATE_HEURE_MOUVEMENT_ENTREE::text, CODE_SERVICE_DISCIPLINE]))[2] AS CODE_SERVICE_DISCIPLINE_SORTIE, + (MAX(array[DATE_HEURE_MOUVEMENT_ENTREE::text, MT]))[2] AS MT_SORTIE, + (MAX(array[DATE_HEURE_MOUVEMENT_ENTREE::text, DMT]))[2] AS DMT_SORTIE, + (MAX(array[DATE_HEURE_MOUVEMENT_ENTREE::text, CODE_LIT]))[2] AS CODE_LIT_SORTIE, + (MAX(array[DATE_HEURE_MOUVEMENT_ENTREE::text, CODE_UM]))[2] AS CODE_UM_SORTIE + FROM w_OPERA_OCC_mouvement + GROUP BY 1; + + + + + ALTER TABLE w_OPERA_OCC_sortie ADD CONSTRAINT w_OPERA_OCC_sortie_pkey PRIMARY KEY(NO_DOSSIER); + + + DELETE FROM w_OPERA_OCC_mouvement + WHERE DATE_HEURE_MOUVEMENT_ENTREE < DATE_HEURE_ENTREE_SEJOUR; + + + + DELETE FROM w_OPERA_OCC_mouvement + WHERE DATE_HEURE_MOUVEMENT_ENTREE > DATE_HEURE_SORTIE_SEJOUR AND DATE_HEURE_SORTIE_SEJOUR IS NOT NULL; + + + + + DROP TABLE IF EXISTS w_OPERA_FAC_tp; + CREATE TEMP TABLE w_OPERA_FAC_tp AS + SELECT + w_OPERA_SEJ_select.NO_DOSSIER, + (MAX(array[DATE_CALCUL_FACTURE::text,TIERS_FACT_AMO]))[2] AS TIERS_FACT_AMO, + (MAX(array[DATE_CALCUL_FACTURE::text,TIERS_FACT_AMC]))[2] AS TIERS_FACT_AMC, + (MAX(array[DATE_CALCUL_FACTURE::text,TIERS_FACT_IPP]))[2] AS TIERS_FACT_IPP + FROM prod_cegiloghos.OPERA_FAC + JOIN w_OPERA_SEJ_select ON OPERA_FAC.NO_DOSSIER = w_OPERA_SEJ_select.NO_DOSSIER + GROUP BY 1; + + ALTER TABLE w_OPERA_FAC_tp ADD CONSTRAINT w_OPERA_FAC_tp_pkey PRIMARY KEY(NO_DOSSIER); + + + -- Plage d'actes pour externes + DROP TABLE IF EXISTS w_OPERA_ACT_dureex; + CREATE TEMP TABLE w_OPERA_ACT_dureex AS + SELECT + OPERA_ACT.NO_DOSSIER, + date(MAX(DATE_ACTE_FIN)) - date(MIN(DATE_ACTE_DEBUT)) + FROM prod_cegiloghos.OPERA_ACT + JOIN w_OPERA_SEJ_select ON OPERA_ACT.NO_DOSSIER = w_OPERA_SEJ_select.NO_DOSSIER + GROUP BY 1 + HAVING date(MAX(DATE_ACTE_FIN)) - date(MIN(DATE_ACTE_DEBUT)) <= 1 + ; + + ALTER TABLE w_OPERA_ACT_dureex ADD CONSTRAINT w_OPERA_ACT_dureex_pkey PRIMARY KEY(NO_DOSSIER); + + DROP TABLE IF EXISTS w_OPERA_ACT_externes; + CREATE TEMP TABLE w_OPERA_ACT_externes AS + SELECT + w_OPERA_SEJ_select.NO_DOSSIER, + '07'::text AS MT, + ''::text AS DMT + FROM prod_cegiloghos.OPERA_ACT + JOIN w_OPERA_SEJ_select ON OPERA_ACT.NO_DOSSIER = w_OPERA_SEJ_select.NO_DOSSIER + WHERE CODE_PRESTA IN ('SE1', 'SE2', 'SE3', 'SE4','SE5', 'SE6', 'SE7', 'ATU', 'FPU','FFM') AND + w_OPERA_SEJ_select.NO_DOSSIER IN (SELECT NO_DOSSIER FROM w_OPERA_ACT_dureex) + GROUP BY 1,2 + HAVING SUM(CASE WHEN MONTANT_ACTE < 0 AND QTE_ACTE > 0 THEN 0 - QTE_ACTE ELSE QTE_ACTE END) > 0; + + ALTER TABLE w_OPERA_ACT_externes ADD CONSTRAINT w_OPERA_ACT_externes_pkey PRIMARY KEY(NO_DOSSIER); + + + -- Seances selon GHS pmsi + DROP TABLE IF EXISTS w_ghs_seances; + CREATE TEMP TABLE w_ghs_seances AS + SELECT to_char(t_ghs.code,'FM0000') AS code + FROM activite[PX].p_sejours + JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid AND t_ghm.code LIKE '28%' + JOIN base.t_ghs ON p_sejours.ghs_id = t_ghs.oid AND t_ghs.code <> 9999 AND t_ghs.code > 0 + WHERE ghs_id <> 0 + GROUP BY 1; + + ALTER TABLE w_ghs_seances ADD CONSTRAINT w_ghs_seances_pkey PRIMARY KEY(code); + + DROP TABLE IF EXISTS w_OPERA_ACT_hospit; + CREATE TEMP TABLE w_OPERA_ACT_hospit AS + SELECT + w_OPERA_SEJ_select.NO_DOSSIER, + MAX(CASE WHEN OPERA_ACT.CODE_GHS IN (SELECT code FROM w_ghs_seances) THEN '19'::text ELSE '03'::text END) AS MT, + MAX(CASE WHEN OPERA_ACT.CODE_GHS IN (SELECT code FROM w_ghs_seances) THEN '302'::text ELSE ''::text END) AS DMT + + FROM prod_cegiloghos.OPERA_ACT + JOIN w_OPERA_SEJ_select ON OPERA_ACT.NO_DOSSIER = w_OPERA_SEJ_select.NO_DOSSIER + WHERE CODE_PRESTA IN ('GHS') + GROUP BY 1 + HAVING SUM(CASE WHEN MONTANT_ACTE < 0 AND QTE_ACTE > 0 THEN 0 - QTE_ACTE ELSE QTE_ACTE END) > 0; + + ALTER TABLE w_OPERA_ACT_hospit ADD CONSTRAINT w_OPERA_ACT_hospit_pkey PRIMARY KEY(NO_DOSSIER); + + + DROP TABLE IF EXISTS w_OPERA_SEJ; + CREATE TEMP TABLE w_OPERA_SEJ AS + SELECT + w_OPERA_SEJ_select.*, + COALESCE(CODE_SERVICE_SORTIE,'') AS CODE_SERVICE_SORTIE, + COALESCE(CODE_SERVICE_TARIFAIRE_SORTIE,'') AS CODE_SERVICE_TARIFAIRE_SORTIE, + COALESCE(CODE_SERVICE_DISCIPLINE_SORTIE,'') AS CODE_SERVICE_DISCIPLINE_SORTIE, + COALESCE(MT_SORTIE,'') AS MT_SORTIE, + COALESCE(DMT_SORTIE,'') AS DMT_SORTIE, + COALESCE(CODE_LIT_SORTIE,'') AS CODE_LIT_SORTIE, + COALESCE(CODE_UM_SORTIE,'') AS CODE_UM_SORTIE, + COALESCE(w_OPERA_ACT_externes.MT, w_OPERA_ACT_hospit.MT, '') AS ACT_MT, + COALESCE(w_OPERA_ACT_externes.DMT, w_OPERA_ACT_hospit.DMT, '') AS ACT_DMT, + COALESCE(TIERS_FACT_AMO,'') AS TIERS_FACT_AMO, + COALESCE(TIERS_FACT_AMC,'') AS TIERS_FACT_AMC, + COALESCE(DT_ENV_ADM,'20991231'::date) AS DATE_GROUPAGE, + COALESCE(GHS_NUMERO,'') AS GHS, + COALESCE(C_GHM_CCAM,'') AS C_GHM_CCAM, + 0 AS GHS_BEBE1, + CODE_MED_RESP_SEJOUR || '|' || + COALESCE(CODE_SERVICE_SORTIE,'') || '|' || + COALESCE(CODE_SERVICE_DISCIPLINE_SORTIE,'') || '|' || + COALESCE(MT_SORTIE,'') || '|' || + COALESCE(DMT_SORTIE,'') || '|' || + COALESCE(CODE_LIT_SORTIE,'') || '|' || + COALESCE(CODE_UM_SORTIE,'') || '|' || + COALESCE(TIERS_FACT_AMO,'') || '|' || + COALESCE(TIERS_FACT_AMC,'') || '|' || + COALESCE(C_GHM_CCAM,'') || '|' || + COALESCE(GHS_NUMERO,'') AS key + FROM w_OPERA_SEJ_select + LEFT JOIN w_OPERA_OCC_sortie ON w_OPERA_OCC_sortie.NO_DOSSIER = w_OPERA_SEJ_select.NO_DOSSIER + LEFT JOIN w_OPERA_FAC_tp ON w_OPERA_FAC_tp.NO_DOSSIER = w_OPERA_SEJ_select.NO_DOSSIER + LEFT JOIN w_OPERA_ACT_externes ON w_OPERA_ACT_externes.NO_DOSSIER = w_OPERA_SEJ_select.NO_DOSSIER + LEFT JOIN w_OPERA_ACT_hospit ON w_OPERA_ACT_hospit.NO_DOSSIER = w_OPERA_SEJ_select.NO_DOSSIER + LEFT JOIN w_RSS ON w_RSS.NO_DOSSIER = w_OPERA_SEJ_select.NO_DOSSIER; + + + + + DROP TABLE IF EXISTS w_OPERA_SEJ_key; + CREATE TEMP TABLE w_OPERA_SEJ_key AS + SELECT + key, + CODE_MED_RESP_SEJOUR, + CODE_SERVICE_SORTIE, + CODE_SERVICE_DISCIPLINE_SORTIE, + MT_SORTIE, + DMT_SORTIE, + CODE_LIT_SORTIE, + ''::text AS CODE_ETAGELIT_SORTIE, + ''::text AS CODE_ETAGE_SORTIE, + CODE_UM_SORTIE, + TIERS_FACT_AMO, + TIERS_FACT_AMC, + GHS, + C_GHM_CCAM, + GHS_BEBE1, + 0 AS mode_traitement_id, + ''::text AS mode_traitement_code, + ''::text AS dmt_code, + '0'::text AS type_sejour_force, + 0::bigint AS lieu_id, + 0::bigint AS medecin_sejour_id, + 0::bigint AS ghs_id, + 0::bigint AS ghm_id, + 0::bigint AS ghs_bebe1_id, + 0::bigint AS ghs_bebe2_id, + 0::bigint AS ghs_bebe3_id, + 0::bigint AS tiers_payant_0_id, + 0::bigint AS tiers_payant_1_id, + 0::bigint AS tiers_payant_2_id, + 0::bigint AS tiers_payant_22_id + FROM w_OPERA_SEJ + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15; + + + UPDATE w_OPERA_SEJ_key SET + mode_traitement_id = t_modes_traitement.oid, + mode_traitement_code = t_modes_traitement.code, + dmt_code = t_dmt.code, + type_sejour_force = CASE WHEN t_services_facturation.type_sejour IN ('1', '2', '3', '4', '5', '9') THEN t_services_facturation.type_sejour ELSE '0' END + FROM activite[PX].t_services_facturation + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + WHERE t_services_facturation.code_original = CODE_SERVICE_DISCIPLINE_SORTIE; + + UPDATE w_OPERA_SEJ_key SET + CODE_ETAGELIT_SORTIE = CASE WHEN CODE_LIT_SORTIE <> '' THEN CASE WHEN CODE_ETAGE <> '' THEN CODE_ETAGE ELSE SUBSTR(CODE_LIT,1,1) END || '|' || CODE_LIT_SORTIE ELSE '' END, + CODE_ETAGE_SORTIE = CASE WHEN CODE_LIT_SORTIE <> '' THEN CASE WHEN CODE_ETAGE <> '' THEN CODE_ETAGE ELSE SUBSTR(CODE_LIT,1,1) END ELSE '' END + FROM prod_cegiloghos.OPERA_PLIT + WHERE OPERA_PLIT.CODE_LIT = CODE_LIT_SORTIE; + + + UPDATE w_OPERA_SEJ_key + set medecin_sejour_id = t_medecins_administratifs.oid + FROM activite[PX].t_medecins_administratifs + WHERE CODE_MED_RESP_SEJOUR <> '' AND code_original = CODE_MED_RESP_SEJOUR; + + UPDATE w_OPERA_SEJ_key + set tiers_payant_0_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE code_original = 'PATIENT'; + + UPDATE w_OPERA_SEJ_key + set tiers_payant_1_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE TIERS_FACT_AMO <> '' AND code_original = TIERS_FACT_AMO; + + UPDATE w_OPERA_SEJ_key + set tiers_payant_2_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE TIERS_FACT_AMC <> '' AND code_original = TIERS_FACT_AMC; + + UPDATE w_OPERA_SEJ_key + set ghs_id = t_ghs.oid + FROM base.t_ghs + WHERE GHS <> '' AND t_ghs.code_text = GHS; + + UPDATE w_OPERA_SEJ_key + set ghs_id = t_ghs.oid + FROM base.t_ghs + WHERE ghs_id = 0 AND GHS <> '' AND to_char(t_ghs.code,'FM0000') = GHS; + + + UPDATE w_OPERA_SEJ_key + set ghs_bebe1_id = t_ghs.oid + FROM base.t_ghs + WHERE GHS_BEBE1 <> 0 AND t_ghs.code = GHS_BEBE1; + + UPDATE w_OPERA_SEJ_key + set ghm_id = t_ghm.oid + FROM base.t_ghm + WHERE 1=1 + AND C_GHM_CCAM <> '' + AND t_ghm.code = C_GHM_CCAM + AND t_ghm.code NOT LIKE '90%' + ; + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_5, code_original_6) + SELECT CODE_SERVICE_DISCIPLINE_SORTIE, '', CODE_ETAGE_SORTIE, CODE_ETAGELIT_SORTIE, CODE_UM_SORTIE , CODE_SERVICE_SORTIE + FROM w_OPERA_SEJ_key + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = CODE_SERVICE_DISCIPLINE_SORTIE AND + code_original_2 = '' AND + code_original_3 = CODE_ETAGE_SORTIE AND + code_original_4 = CODE_ETAGELIT_SORTIE AND + code_original_5 = CODE_UM_SORTIE AND + code_original_6 = CODE_SERVICE_SORTIE + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5,6; + + UPDATE w_OPERA_SEJ_key + set lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = CODE_SERVICE_DISCIPLINE_SORTIE AND + code_original_2 = '' AND + code_original_3 = CODE_ETAGE_SORTIE AND + code_original_4 = CODE_ETAGELIT_SORTIE AND + code_original_5 = CODE_UM_SORTIE AND + code_original_6 = CODE_SERVICE_SORTIE; + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM + activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original AND + (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + UPDATE activite[PX].t_lieux SET + unite_medicale_id = COALESCE(t_unites_medicales.oid,0) + FROM + activite[PX].t_unites_medicales + WHERE code_original_5 = t_unites_medicales.code_original + AND unite_medicale_id <> COALESCE(t_unites_medicales.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM + activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + + + + + DROP TABLE IF EXISTS w_sejours; + CREATE TEMP TABLE w_sejours AS + SELECT + NO_DOSSIER as no_sejour, + NO_DOSSIER as code_original, + COALESCE(no_patient,'W' || NO_DOSSIER) as no_patient, + date(DATE_HEURE_ENTREE_SEJOUR) as date_entree, + HEURE_ENTREE_SEJOUR * 100 as heure_entree, + date(DATE_HEURE_SORTIE_SEJOUR) as date_sortie, + HEURE_SORTIE_SEJOUR * 100 as heure_sortie, + CASE WHEN PAT_SEXE IN ('F', '2') THEN '2' ELSE '1' END as code_sexe, + 0 AS age, + CASE WHEN DATE_HEURE_SORTIE_SEJOUR IS NOT NULL AND DATE_HEURE_SORTIE_SEJOUR < '20991231' THEN 1 ELSE 0 END::numeric as code_sorti, + 0::numeric AS code_prevu, + CASE + WHEN trim(t_divers_CEGILOGHOS_TDI.valeur) <> '' AND TYPE_DOSSIER <> '' AND TYPE_DOSSIER = ANY(string_to_array(replace(t_divers_CEGILOGHOS_TDI.valeur,' ',''),',')) THEN '9' + WHEN type_sejour_force <> '0' THEN type_sejour_force + WHEN ACT_MT IN ('03') AND date(DATE_HEURE_ENTREE_SEJOUR) = date(DATE_HEURE_SORTIE_SEJOUR) THEN '2' + WHEN ACT_MT IN ('03') THEN '1' + WHEN ACT_MT IN ('07') THEN '3' + WHEN ACT_MT IN ('19') AND ACT_DMT IN ('302') THEN '5' + WHEN mode_traitement_code IN ('07') OR dmt_code IN ('958') THEN '3' + WHEN mode_traitement_code IN ('19', '23') THEN '2' + WHEN mode_traitement_code IN ('04') AND date(DATE_HEURE_ENTREE_SEJOUR) = date(DATE_HEURE_SORTIE_SEJOUR) THEN '2' + WHEN mode_traitement_code IN ('03') AND date(DATE_HEURE_ENTREE_SEJOUR) = date(DATE_HEURE_SORTIE_SEJOUR) THEN '2' + WHEN mode_traitement_code IN ('03') THEN '1' + WHEN date(DATE_HEURE_ENTREE_SEJOUR) = date(DATE_HEURE_SORTIE_SEJOUR) THEN '2' + ELSE '1' END as type_sejour, + lieu_id AS lieu_sortie_id, + w_OPERA_SEJ_key.medecin_sejour_id AS medecin_sejour_id, + w_OPERA_SEJ_key.ghs_id, + w_OPERA_SEJ_key.ghm_id, + w_OPERA_SEJ_key.ghs_bebe1_id, + 0::numeric AS ghs_bebe2_id, + 0::numeric AS ghs_bebe3_id, + DATE_GROUPAGE, + '0'::text AS code_cp_demandee, + mode_traitement_id, + CODE_PMSI_MODE_ENTREE as mode_entree, + SUBSTR(CODE_PROVENANCE,1,1) AS provenance, + CODE_PMSI_MODE_SORTIE as mode_sortie, + SUBSTR(CODE_DESTINATION,1,1) as destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + 0 AS est_budget_global, + w_OPERA_SEJ.code_postal_id + FROM w_OPERA_SEJ + JOIN w_OPERA_SEJ_key ON w_OPERA_SEJ.key = w_OPERA_SEJ_key.key + JOIN activite.t_divers t_divers_CEGILOGHOS_TDI ON t_divers_CEGILOGHOS_TDI.code = 'CEGILOGHOS_TDI' + LEFT JOIN w_CJ_PATIENT ON w_OPERA_SEJ.PAT_ID = w_CJ_PATIENT.PAT_ID AND w_OPERA_SEJ.NO_DOSSIER = w_CJ_PATIENT.SEJ_NUMDOS + ; + + ALTER TABLE w_sejours ADD CONSTRAINT w_sejours_pkey PRIMARY KEY(no_sejour); + + -- Forcage type selon séjour + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour + FROM activite.t_sejour + WHERE t_sejour.no_sejour = w_sejours.no_sejour AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9'); + + + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_13'); + + UPDATE activite[PX].p_sejours SET + provider_id = 2, + code_original = w_sejours.code_original, + no_patient = w_sejours.no_patient, + date_entree = w_sejours.date_entree, + heure_entree = w_sejours.heure_entree, + date_sortie = w_sejours.date_sortie, + heure_sortie = w_sejours.heure_sortie, + code_sexe = w_sejours.code_sexe, + age = w_sejours.age, + code_sorti = w_sejours.code_sorti, + code_prevu = w_sejours.code_prevu, + type_sejour = w_sejours.type_sejour, + lieu_sortie_id = w_sejours.lieu_sortie_id, + medecin_sejour_id = w_sejours.medecin_sejour_id, + code_cp_demandee = w_sejours.code_cp_demandee, + mode_traitement_id = w_sejours.mode_traitement_id, + mode_entree = w_sejours.mode_entree, + provenance = w_sejours.provenance, + mode_sortie = w_sejours.mode_sortie, + destination = w_sejours.destination, + tiers_payant_0_id = w_sejours.tiers_payant_0_id, + tiers_payant_1_id = w_sejours.tiers_payant_1_id, + tiers_payant_2_id = w_sejours.tiers_payant_2_id, + tiers_payant_22_id = w_sejours.tiers_payant_22_id, + est_budget_global = w_sejours.est_budget_global, + date_groupage = w_sejours.date_groupage, + ghs_id = w_sejours.ghs_id, + ghm_id = w_sejours.ghm_id, + ghs_bebe1_id = w_sejours.ghs_bebe1_id, + ghs_bebe2_id = w_sejours.ghs_bebe2_id, + ghs_bebe3_id = w_sejours.ghs_bebe3_id, + code_postal_id = w_sejours.code_postal_id + FROM w_sejours + WHERE w_sejours.no_sejour = p_sejours.no_sejour + AND ( + p_sejours.provider_id IS DISTINCT FROM 2 OR + w_sejours.code_original IS DISTINCT FROM p_sejours.code_original OR + w_sejours.no_patient IS DISTINCT FROM p_sejours.no_patient OR + w_sejours.date_entree IS DISTINCT FROM p_sejours.date_entree OR + w_sejours.heure_entree IS DISTINCT FROM p_sejours.heure_entree OR + w_sejours.date_sortie IS DISTINCT FROM p_sejours.date_sortie OR + w_sejours.heure_sortie IS DISTINCT FROM p_sejours.heure_sortie OR + w_sejours.code_sexe IS DISTINCT FROM p_sejours.code_sexe OR + w_sejours.age IS DISTINCT FROM p_sejours.age OR + w_sejours.code_sorti IS DISTINCT FROM p_sejours.code_sorti OR + w_sejours.code_prevu IS DISTINCT FROM p_sejours.code_prevu OR + w_sejours.type_sejour IS DISTINCT FROM p_sejours.type_sejour OR + w_sejours.lieu_sortie_id IS DISTINCT FROM p_sejours.lieu_sortie_id OR + w_sejours.medecin_sejour_id IS DISTINCT FROM p_sejours.medecin_sejour_id OR + w_sejours.code_cp_demandee IS DISTINCT FROM p_sejours.code_cp_demandee OR + w_sejours.mode_traitement_id IS DISTINCT FROM p_sejours.mode_traitement_id OR + w_sejours.mode_entree IS DISTINCT FROM p_sejours.mode_entree OR + w_sejours.provenance IS DISTINCT FROM p_sejours.provenance OR + w_sejours.mode_sortie IS DISTINCT FROM p_sejours.mode_sortie OR + w_sejours.destination IS DISTINCT FROM p_sejours.destination OR + w_sejours.tiers_payant_0_id IS DISTINCT FROM p_sejours.tiers_payant_0_id OR + w_sejours.tiers_payant_1_id IS DISTINCT FROM p_sejours.tiers_payant_1_id OR + w_sejours.tiers_payant_2_id IS DISTINCT FROM p_sejours.tiers_payant_2_id OR + w_sejours.tiers_payant_22_id IS DISTINCT FROM p_sejours.tiers_payant_22_id OR + w_sejours.est_budget_global IS DISTINCT FROM p_sejours.est_budget_global OR + w_sejours.date_groupage IS DISTINCT FROM p_sejours.date_groupage OR + w_sejours.ghs_id IS DISTINCT FROM p_sejours.ghs_id OR + w_sejours.ghm_id IS DISTINCT FROM p_sejours.ghm_id OR + w_sejours.ghs_bebe1_id IS DISTINCT FROM p_sejours.ghs_bebe1_id OR + w_sejours.ghs_bebe2_id IS DISTINCT FROM p_sejours.ghs_bebe2_id OR + w_sejours.ghs_bebe3_id IS DISTINCT FROM p_sejours.ghs_bebe3_id OR + w_sejours.code_postal_id IS DISTINCT FROM p_sejours.code_postal_id + ); + + + INSERT INTO activite[PX].p_sejours ( + no_sejour, + provider_id, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + lieu_sortie_id, + medecin_sejour_id, + ghs_id, + ghm_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + est_budget_global, + code_postal_id + ) + SELECT + w_sejours.no_sejour, + 2::bigint AS provider_id, + w_sejours.code_original, + w_sejours.no_patient, + w_sejours.date_entree, + w_sejours.heure_entree, + w_sejours.date_sortie, + w_sejours.heure_sortie, + w_sejours.code_sexe, + w_sejours.age, + w_sejours.code_sorti, + w_sejours.code_prevu, + w_sejours.type_sejour, + w_sejours.lieu_sortie_id, + w_sejours.medecin_sejour_id, + w_sejours.ghs_id, + w_sejours.ghm_id, + w_sejours.ghs_bebe1_id, + w_sejours.ghs_bebe2_id, + w_sejours.ghs_bebe3_id, + w_sejours.date_groupage, + w_sejours.code_cp_demandee, + w_sejours.mode_traitement_id, + w_sejours.mode_entree, + w_sejours.provenance, + w_sejours.mode_sortie, + w_sejours.destination, + w_sejours.tiers_payant_0_id, + w_sejours.tiers_payant_1_id, + w_sejours.tiers_payant_2_id, + w_sejours.tiers_payant_22_id, + w_sejours.est_budget_global, + w_sejours.code_postal_id + + FROM w_sejours LEFT JOIN activite[PX].p_sejours ON (w_sejours.no_sejour = p_sejours.no_sejour) + WHERE p_sejours.no_sejour IS NULL; + + DELETE FROM activite[PX].p_sejours WHERE no_sejour NOT IN (SELECT no_sejour FROM w_sejours); + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '[PX]' = ''; + + UPDATE activite[PX].p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND + '[PX]' = ''; + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '[PX]' = ''; + + -- recréation index + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_13'); + + + ]]> + + + + '' THEN CASE WHEN OPERA_PLIT.CODE_ETAGE <> '' THEN OPERA_PLIT.CODE_ETAGE ELSE SUBSTR(w_OPERA_OCC_mouvement_key.CODE_LIT,1,1) END || '|' || w_OPERA_OCC_mouvement_key.CODE_LIT ELSE '' END, + CODE_ETAGE = CASE WHEN w_OPERA_OCC_mouvement_key.CODE_LIT <> '' THEN CASE WHEN OPERA_PLIT.CODE_ETAGE <> '' THEN OPERA_PLIT.CODE_ETAGE ELSE SUBSTR(w_OPERA_OCC_mouvement_key.CODE_LIT,1,1) END ELSE '' END + FROM prod_cegiloghos.OPERA_PLIT + WHERE OPERA_PLIT.CODE_LIT = w_OPERA_OCC_mouvement_key.CODE_LIT; + + UPDATE w_OPERA_OCC_mouvement_key SET + chambre_particuliere = t_lits.chambre_particuliere + FROM activite[PX].t_lits + WHERE t_lits.code_original = CODE_ETAGELIT; + + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_5, code_original_6) + SELECT CODE_SERVICE_DISCIPLINE, '', CODE_ETAGE, CODE_ETAGELIT, CODE_UM , CODE_SERVICE + FROM w_OPERA_OCC_mouvement_key + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = CODE_SERVICE_DISCIPLINE AND + code_original_2 = '' AND + code_original_3 = CODE_ETAGE AND + code_original_4 = CODE_ETAGELIT AND + code_original_5 = CODE_UM AND + code_original_6 = CODE_SERVICE + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5,6; + + UPDATE w_OPERA_OCC_mouvement_key + set lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = CODE_SERVICE_DISCIPLINE AND + code_original_2 = '' AND + code_original_3 = CODE_ETAGE AND + code_original_4 = CODE_ETAGELIT AND + code_original_5 = CODE_UM AND + code_original_6 = CODE_SERVICE; + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM + activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original + AND (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + UPDATE activite[PX].t_lieux SET + unite_medicale_id = COALESCE(t_unites_medicales.oid,0) + FROM + activite[PX].t_unites_medicales + WHERE code_original_5 = t_unites_medicales.code_original + AND unite_medicale_id <> COALESCE(t_unites_medicales.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM + activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + + + UPDATE w_OPERA_OCC_mouvement2 + SET + q_sortie = '0', + DATE_HEURE_MOUVEMENT_SORTIE = w_OPERA_OCC_mouvement2_after.DATE_HEURE_MOUVEMENT_ENTREE - interval '1 SECOND' + FROM w_OPERA_OCC_mouvement2 w_OPERA_OCC_mouvement2_after + WHERE w_OPERA_OCC_mouvement2.NO_DOSSIER = w_OPERA_OCC_mouvement2_after.NO_DOSSIER AND + w_OPERA_OCC_mouvement2.sequence = w_OPERA_OCC_mouvement2_after.sequence - 1; + + + UPDATE w_OPERA_OCC_mouvement2 + SET + CODE_SERVICE_after = w_OPERA_OCC_mouvement2_after.CODE_SERVICE, + CODE_SERVICE_DISCIPLINE_after = w_OPERA_OCC_mouvement2_after.CODE_SERVICE_DISCIPLINE, + CODE_ETAGE_after = w_OPERA_OCC_mouvement_key_after.CODE_ETAGE, + CODE_UM_after = w_OPERA_OCC_mouvement2_after.CODE_UM + FROM w_OPERA_OCC_mouvement_key, + w_OPERA_OCC_mouvement2 w_OPERA_OCC_mouvement2_after + JOIN w_OPERA_OCC_mouvement_key w_OPERA_OCC_mouvement_key_after ON w_OPERA_OCC_mouvement2_after.key = w_OPERA_OCC_mouvement_key_after.key + WHERE w_OPERA_OCC_mouvement2.key = w_OPERA_OCC_mouvement_key.key AND + w_OPERA_OCC_mouvement2.NO_DOSSIER = w_OPERA_OCC_mouvement2_after.NO_DOSSIER AND + w_OPERA_OCC_mouvement2.sequence = w_OPERA_OCC_mouvement2_after.sequence - 1; + + UPDATE w_OPERA_OCC_mouvement2 + SET + CODE_SERVICE_before = w_OPERA_OCC_mouvement2_before.CODE_SERVICE, + CODE_SERVICE_DISCIPLINE_before = w_OPERA_OCC_mouvement2_before.CODE_SERVICE_DISCIPLINE, + CODE_ETAGE_before = w_OPERA_OCC_mouvement_key_before.CODE_ETAGE, + CODE_UM_before = w_OPERA_OCC_mouvement2_before.CODE_UM + FROM w_OPERA_OCC_mouvement_key, + w_OPERA_OCC_mouvement2 w_OPERA_OCC_mouvement2_before + JOIN w_OPERA_OCC_mouvement_key w_OPERA_OCC_mouvement_key_before ON w_OPERA_OCC_mouvement2_before.key = w_OPERA_OCC_mouvement_key_before.key + WHERE w_OPERA_OCC_mouvement2.key = w_OPERA_OCC_mouvement_key.key AND + w_OPERA_OCC_mouvement2.NO_DOSSIER = w_OPERA_OCC_mouvement2_before.NO_DOSSIER AND + w_OPERA_OCC_mouvement2.sequence = w_OPERA_OCC_mouvement2_before.sequence + 1; + + + + + + + DROP TABLE IF EXISTS w_mouvements_sejour; + + CREATE TEMP TABLE w_mouvements_sejour AS + SELECT + NO_DOSSIER, + NO_DOSSIER AS no_sejour, + p_sejours.oid AS sejour_id, + sequence, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE WHEN p_calendrier.date = date(DATE_HEURE_MOUVEMENT_ENTREE) THEN extract('hour' from DATE_HEURE_MOUVEMENT_ENTREE) * 10000 + extract('minute' from DATE_HEURE_MOUVEMENT_ENTREE) * 100 + extract('second' from DATE_HEURE_MOUVEMENT_ENTREE) ELSE 0 END AS heure_debut, + CASE WHEN p_calendrier.date = date(DATE_HEURE_MOUVEMENT_SORTIE) THEN extract('hour' from DATE_HEURE_MOUVEMENT_SORTIE) * 10000 + extract('minute' from DATE_HEURE_MOUVEMENT_SORTIE) * 100 + extract('second' from DATE_HEURE_MOUVEMENT_SORTIE) ELSE 240000 END AS heure_fin, + CASE WHEN q_entree = '1' AND p_calendrier.date = date(DATE_HEURE_ENTREE_SEJOUR) AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes, + CASE WHEN q_sortie = '1' AND p_calendrier.date = date(DATE_HEURE_SORTIE_SEJOUR) AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes, + CASE WHEN q_entree = '1' AND p_calendrier.date = date(DATE_HEURE_ENTREE_SEJOUR) AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree, + CASE WHEN q_sortie = '1' AND p_calendrier.date = date(DATE_HEURE_SORTIE_SEJOUR) AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie, + CASE WHEN p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN q_entree = '1' AND p_calendrier.date = date(DATE_HEURE_ENTREE_SEJOUR) AND p_sejours.type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires, + CASE WHEN q_entree = '1' AND p_calendrier.date = date(DATE_HEURE_ENTREE_SEJOUR) AND p_sejours.type_sejour = '3' THEN 1 ELSE 0 END AS nb_externes, + CASE WHEN code_urgence = '1' AND p_calendrier.date = date(DATE_HEURE_ENTREE_SEJOUR) AND q_entree = '1' THEN 1 ELSE 0 END AS nb_urgences, + 0 as nb_seances, + + CASE WHEN p_calendrier.date = date(DATE_HEURE_MOUVEMENT_ENTREE) AND p_sejours.type_sejour = '1' AND q_entree <> '1' AND w_OPERA_OCC_mouvement2.CODE_SERVICE_DISCIPLINE <> CODE_SERVICE_DISCIPLINE_before THEN 1 ELSE 0 END AS nb_entrees_mutation_service, + CASE WHEN p_calendrier.date = date(DATE_HEURE_MOUVEMENT_SORTIE) AND p_sejours.type_sejour = '1' AND q_sortie <> '1' AND w_OPERA_OCC_mouvement2.CODE_SERVICE_DISCIPLINE <> CODE_SERVICE_DISCIPLINE_after THEN 1 ELSE 0 END AS nb_sorties_mutation_service, + CASE WHEN p_calendrier.date = date(DATE_HEURE_MOUVEMENT_ENTREE) AND p_sejours.type_sejour = '1' AND q_entree <> '1' AND w_OPERA_OCC_mouvement_key.CODE_ETAGE <> CODE_ETAGE_before THEN 1 ELSE 0 END AS nb_entrees_mutation_etage, + CASE WHEN p_calendrier.date = date(DATE_HEURE_MOUVEMENT_SORTIE) AND p_sejours.type_sejour = '1' AND q_sortie <> '1' AND w_OPERA_OCC_mouvement_key.CODE_ETAGE <> CODE_ETAGE_after THEN 1 ELSE 0 END AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + CASE WHEN p_calendrier.date = date(DATE_HEURE_MOUVEMENT_ENTREE) AND p_sejours.type_sejour = '1' AND q_entree <> '1' AND w_OPERA_OCC_mouvement2.CODE_UM <> CODE_UM_before THEN 1 ELSE 0 END AS nb_entrees_mutation_unite_medicale, + CASE WHEN p_calendrier.date = date(DATE_HEURE_MOUVEMENT_SORTIE) AND p_sejours.type_sejour = '1' AND q_sortie <> '1' AND w_OPERA_OCC_mouvement2.CODE_UM <> CODE_UM_after THEN 1 ELSE 0 END AS nb_sorties_mutation_unite_medicale, + + CASE WHEN p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN p_sejours.type_sejour = '1' AND p_calendrier.date <> date(DATE_HEURE_SORTIE_SEJOUR) THEN 1 ELSE 0 END AS nb_jours_js_non_inclus, + + CASE WHEN p_sejours.type_sejour = '1' AND w_OPERA_OCC_mouvement_key.chambre_particuliere = 'O' THEN '1' ELSE '0' END AS est_chambre_particuliere, + CASE WHEN p_sejours.type_sejour = '1' AND w_OPERA_OCC_mouvement_key.chambre_particuliere = 'O' THEN 1 ELSE 0 END AS nb_chambres_particulieres, + + 0 AS nb_bebes, + + w_OPERA_OCC_mouvement_key.lieu_id, + + p_sejours.medecin_sejour_id as medecin_sejour_id + + FROM w_OPERA_OCC_mouvement2 + JOIN w_OPERA_OCC_mouvement_key ON w_OPERA_OCC_mouvement2.key = w_OPERA_OCC_mouvement_key.key + JOIN activite[PX].p_sejours ON w_OPERA_OCC_mouvement2.NO_DOSSIER = p_sejours.code_original AND p_sejours.etat = '' + JOIN base.p_calendrier ON (p_calendrier.date BETWEEN date(DATE_HEURE_MOUVEMENT_ENTREE) AND date(DATE_HEURE_MOUVEMENT_SORTIE) AND p_calendrier.date <= now() ) + WHERE p_sejours.code_prevu <> 1 + ORDER BY sequence, p_calendrier.date; + + + + -- bébés + -- première salve, d'après les actes honoraires + DROP TABLE IF EXISTS w_OPERA_ACT_bebes; + + CREATE TEMP TABLE w_OPERA_ACT_bebes AS + SELECT + prod_cegiloghos.OPERA_ACT.NO_DOSSIER, + MAX(DATE_ACTE_DEBUT)::date as date_accouchement, + MAX(CASE WHEN t_actes.texte ILIKE '%multiple%' THEN 2 ELSE 1 END) AS nb_bebes + FROM prod_cegiloghos.OPERA_ACT + JOIN w_OPERA_SEJ_select ON OPERA_ACT.NO_DOSSIER = w_OPERA_SEJ_select.NO_DOSSIER + JOIN base.t_actes ON t_actes.code = substring(CODE_CCAM, 1, 7) AND + CODE_CCAM LIKE 'JQG%' AND + t_actes.texte ILIKE 'accouchement%' + WHERE CODE_PRESTA = 'ACO' + GROUP BY 1; + + CREATE INDEX w_OPERA_ACT_bebes_i1 + ON w_OPERA_ACT_bebes + USING btree + (NO_DOSSIER); + + -- on stocke dans w_deja_bebes les numéros de séjours pour lesquels on + -- vient de trouver des bébés afin de ne pas leur coller des bébés supplémentaires + DROP TABLE IF EXISTS w_deja_bebes; + CREATE TEMP TABLE w_deja_bebes AS + WITH w_updated AS ( + UPDATE w_mouvements_sejour + SET nb_bebes = w_OPERA_ACT_bebes.nb_bebes + FROM w_OPERA_ACT_bebes + WHERE w_OPERA_ACT_bebes.NO_DOSSIER = w_mouvements_sejour.no_sejour AND + w_OPERA_ACT_bebes.date_accouchement = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_bebes = 0 AND + (nb_entrees_directes = 1 OR nb_externes = 1 OR nb_ambulatoires = 1 OR heure_debut = 0) + RETURNING w_mouvements_sejour.no_sejour + ) + SELECT no_sejour as deja_no_sejour FROM w_updated; + + -- deuxième salve, d'après le codage des actes CCAM du PMSI + DROP TABLE IF EXISTS w_LSCCAM_bebes; + + CREATE TEMP TABLE w_LSCCAM_bebes AS + SELECT + SEJ_NUMDOS, + MAX(CASE WHEN t_actes.texte ILIKE '%multiple%' THEN 2 ELSE 1 END) AS nb_bebes + FROM prod_cegi.CJ_SEJOUR + JOIN w_OPERA_SEJ_select ON CJ_SEJOUR.SEJ_NUMDOS = w_OPERA_SEJ_select.NO_DOSSIER + JOIN prod_cegi.CJ_LSRGP ON CJ_LSRGP.SEJ_ID = CJ_SEJOUR.SEJ_ID AND LSR_ACTIF = 1 + JOIN prod_cegi.CJ_LSCCAM ON CJ_LSCCAM.LSR_ID = CJ_LSRGP.LSR_ID AND LSCA_ACTIF = 1 + JOIN prod_cegi.CJ_CCAM ON CJ_CCAM.CCAM_ID = CJ_LSCCAM.CCAM_ID AND CCAM_ACTV = '1' + JOIN base.t_actes ON t_actes.code = substring(CCAM_CODE, 1, 7) AND + CCAM_CODE LIKE 'JQG%' AND + t_actes.texte ILIKE 'accouchement%' + LEFT JOIN w_deja_bebes ON w_deja_bebes.deja_no_sejour = CJ_SEJOUR.SEJ_NUMDOS + WHERE w_deja_bebes.deja_no_sejour IS NULL + GROUP BY 1; + + CREATE INDEX w_LSCCAM_bebes_i1 + ON w_LSCCAM_bebes + USING btree + (SEJ_NUMDOS); + + -- on ajoute à w_deja_bebes les nouveaux séjours impactés + WITH w_encore_bebes AS ( + UPDATE w_mouvements_sejour + SET nb_bebes = w_LSCCAM_bebes.nb_bebes + FROM w_LSCCAM_bebes + WHERE SEJ_NUMDOS = w_mouvements_sejour.no_sejour AND + w_mouvements_sejour.no_sejour != ALL (ARRAY(SELECT w_mouvements_sejour.no_sejour as w_no_sejour FROM w_mouvements_sejour WHERE nb_bebes = 1 GROUP BY 1)::text[]) AND + (nb_entrees_directes = 1 OR nb_externes = 1 OR nb_ambulatoires = 1) + RETURNING w_mouvements_sejour.no_sejour + ) + INSERT INTO w_deja_bebes + SELECT no_sejour FROM w_encore_bebes; + + DROP TABLE IF EXISTS w_OPERA_ACT_bebes; + CREATE TEMP TABLE w_OPERA_ACT_bebes AS + SELECT + prod_cegiloghos.OPERA_ACT.NO_DOSSIER, + 1 AS nb_bebes, + MAX(DATE_ACTE_DEBUT)::date as date_accouchement + FROM prod_cegiloghos.OPERA_ACT + JOIN w_OPERA_SEJ_select ON OPERA_ACT.NO_DOSSIER = w_OPERA_SEJ_select.NO_DOSSIER + LEFT JOIN w_deja_bebes ON w_deja_bebes.deja_no_sejour = OPERA_ACT.NO_DOSSIER + WHERE CODE_PRESTA = 'GHS' AND + OPERA_ACT.CODE_GHS IN (SELECT to_char(code, 'FM0000') FROM base.t_ghs WHERE texte ILIKE 'nouveau-n%') + AND w_deja_bebes.deja_no_sejour IS NULL + GROUP BY 1; + + CREATE INDEX w_OPERA_ACT_bebes_i1 + ON w_OPERA_ACT_bebes + USING btree + (NO_DOSSIER); + + UPDATE w_mouvements_sejour + SET nb_bebes = w_OPERA_ACT_bebes.nb_bebes + FROM w_OPERA_ACT_bebes + WHERE w_OPERA_ACT_bebes.NO_DOSSIER = w_mouvements_sejour.no_sejour AND + w_mouvements_sejour.nb_bebes = 0 AND + w_mouvements_sejour.date = date_accouchement AND + (nb_entrees_directes = 1 OR nb_externes = 1 OR nb_ambulatoires = 1); + + -- dernière opération, on met un bébé supplémentaire là où on n'en a mis qu'un + -- mais où le GHS contient le mot 'multiple' + UPDATE w_mouvements_sejour SET + nb_bebes = 2 + FROM + prod_cegiloghos.OPERA_ACT + JOIN base.t_ghs ON to_char(t_ghs.code, 'FM0000') = OPERA_ACT.CODE_GHS + WHERE 1=1 + AND w_mouvements_sejour.nb_bebes = 1 + AND OPERA_ACT.NO_DOSSIER = w_mouvements_sejour.no_sejour + AND t_ghs.texte like '%multiple%'; + + -- Séances + DROP TABLE IF EXISTS w_OPERA_ACT_seances; + + CREATE TEMP TABLE w_OPERA_ACT_seances AS + SELECT + OPERA_ACT.NO_DOSSIER, + date(DATE_ACTE_DEBUT) AS date, + SUM(CASE WHEN MONTANT_ACTE < 0 AND QTE_ACTE > 0 THEN 0 - QTE_ACTE ELSE QTE_ACTE END) AS nb_seances + FROM prod_cegiloghos.OPERA_ACT + JOIN w_OPERA_SEJ_select ON OPERA_ACT.NO_DOSSIER = w_OPERA_SEJ_select.NO_DOSSIER + WHERE CODE_PRESTA = 'K' AND TYPE_PRESTA = 'H' AND + + (COEFF_ACTE IN (15) OR DMT_ACTE = '302') + + GROUP BY 1,2; + + + CREATE INDEX w_OPERA_ACT_seances_i1 + ON w_OPERA_ACT_seances + USING btree + (NO_DOSSIER); + + UPDATE w_mouvements_sejour + SET nb_seances = w_OPERA_ACT_seances.nb_seances + FROM w_OPERA_ACT_seances + WHERE w_OPERA_ACT_seances.NO_DOSSIER = w_mouvements_sejour.no_sejour AND + w_OPERA_ACT_seances.date = w_mouvements_sejour.date; + + + -- Séjours sans séances trouvées dans les actes + DROP TABLE IF EXISTS w_sejours_sans_seance; + CREATE TEMP TABLE w_sejours_sans_seance AS + SELECT p_sejours.no_sejour, date_entree, heure_entree + FROM activite[PX].p_sejours + LEFT JOIN w_mouvements_sejour ON p_sejours.no_sejour = w_mouvements_sejour.no_sejour and nb_seances > 0 + WHERE p_sejours.type_sejour = 5 AND w_mouvements_sejour.no_sejour IS NULL; + + UPDATE w_mouvements_sejour + SET nb_seances = 1 + FROM w_sejours_sans_seance + WHERE w_mouvements_sejour.no_sejour = w_sejours_sans_seance.no_sejour AND + w_mouvements_sejour.date = w_sejours_sans_seance.date_entree AND + w_mouvements_sejour.heure_debut = w_sejours_sans_seance.heure_entree; + + + -- Génération + DELETE FROM w_mouvements_sejour + WHERE + nb_entrees_directes = 0 AND + nb_sorties_directes = 0 AND + est_jour_hospitalisation <> '1' AND + nb_ambulatoires = 0 AND + nb_externes = 0 AND + nb_urgences = 0 AND + nb_seances = 0 AND + nb_entrees_mutation_service = 0 AND + nb_sorties_mutation_service = 0 AND + nb_entrees_mutation_etage = 0 AND + nb_sorties_mutation_etage = 0 AND + nb_entrees_mutation_activite = 0 AND + nb_sorties_mutation_activite = 0 AND + nb_entrees_mutation_unite_medicale = 0 AND + nb_sorties_mutation_unite_medicale = 0 AND + nb_jours_js_inclus = 0 AND + nb_jours_js_non_inclus = 0 AND + est_chambre_particuliere <> '1' AND + nb_chambres_particulieres = 0 AND + nb_bebes = 0; + + + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_5'); + + + INSERT INTO activite[PX].p_mouvements_sejour( + sejour_id, no_sejour, date, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, + nb_bebes, jour_semaine, is_weekend) + SELECT sejour_id, no_sejour, date,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, + nb_bebes, jour_semaine, is_weekend + FROM w_mouvements_sejour + ORDER BY no_sejour, sequence; + + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_5'); + + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie + AND (lieu_sortie_id IS DISTINCT FROM p_mouvements_sejour.lieu_id); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie AND p_mouvements_sejour.nb_sorties_directes = 1 + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL); + + + + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + WHERE type_sejour <> '5' AND + type_sejour <> '1' AND + no_sejour IN ( + SELECT no_sejour + FROM activite[PX].p_mouvements_sejour + WHERE nb_seances > 0); + + + UPDATE activite[PX].p_mouvements_sejour + SET nb_externes = 0, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + ( + nb_externes <> 0 OR + nb_ambulatoires <> 0 + ); + + + ]]> + + + + + + + + + + + + + + '' AND GHS_NUMERO <> '9999' + GROUP BY 1,2; + + ALTER TABLE w_RSS ADD CONSTRAINT w_RSS_pkey PRIMARY KEY(SEJ_ID); + + + + INSERT INTO w_RSS + SELECT w_CJ_SEJOUR_select.SEJ_ID, + w_CJ_SEJOUR_select.SEJ_NUMDOS, + (MAX(Array[COALESCE(SEJGHS_MODIF_DATE,SEJGHS_DATE)::text,SEJGHS_GHS]))[2] AS GHS_NUMERO, + ''::text AS C_GHM_CCAM, + MAX(COALESCE(SEJGHS_MODIF_DATE,SEJGHS_DATE)) AS DT_ENV_ADM, + 0::bigint AS ghs_id, + 0::bigint AS ghm_id, + '8' AS C_MODE_E, + '' AS C_PROV, + '8' AS C_MODE_S, + '' AS C_DEST + FROM prod_cegi.CJ_SEJGHS + JOIN w_CJ_SEJOUR_select ON CJ_SEJGHS.SEJ_ID = w_CJ_SEJOUR_select.SEJ_ID + LEFT JOIN w_RSS ON w_RSS.SEJ_ID = CJ_SEJGHS.SEJ_ID + WHERE w_RSS.SEJ_ID IS NULL AND + SEJGHS_GHS <> '' AND SEJGHS_GHS <> '9999' + GROUP BY 1,2; + + UPDATE w_RSS + SET ghm_id = t_ghm.oid + FROM base.t_ghm + WHERE C_GHM_CCAM = t_ghm.code; + + UPDATE w_RSS + SET ghs_id = t_ghs.oid + FROM base.t_ghs + WHERE GHS_NUMERO = t_ghs.code_text; + + UPDATE w_RSS + SET ghs_id = t_ghs.oid + FROM base.t_ghs + WHERE ghs_id = 0 AND GHS_NUMERO <> '' AND GHS_NUMERO = to_char(t_ghs.code,'FM0000'); + + -- Modes entrée-sortie + UPDATE w_CJ_SEJOUR_select + SET mode_entree = MEN_PMSI + FROM prod_cegi.CJ_MEN + WHERE w_CJ_SEJOUR_select.MEN_ID = CJ_MEN.MEN_ID AND + MEN_PMSI IN ('0','6','7') + ; + + UPDATE w_CJ_SEJOUR_select + SET mode_sortie = MSO_PMSI + FROM prod_cegi.CJ_MSO + WHERE w_CJ_SEJOUR_select.MSO_ID = CJ_MSO.MSO_ID AND + MSO_PMSI IN ('0','6','7','9') + ; + + + + + + + + + DROP TABLE IF EXISTS w_CHGNVE_all; + CREATE TEMP TABLE w_CHGNVE_all AS + SELECT + CJ_CHGNVE.SEJ_ID, + w_CJ_SEJOUR_select.SEJ_NUMDOS, + CJ_CHGNVE.CHGNVE_ID, + CJ_NVE.NVE_TYPE, + CJ_CHGNVE.NVE_ID, + CJ_NVE.NVE_LIBC::text AS NVE_original, + CHGNVE_DATE, + CHGNVE_ACTIF, + COALESCE((CHGNVE_HEURE - date_trunc('day',CHGNVE_HEURE)),'00:00:00') AS CHGNVE_HEURE, + CJ_DMT.DMT_LIBC, + CJ_MTR.MTR_LIBC + FROM prod_cegi.CJ_CHGNVE + JOIN w_CJ_SEJOUR_select ON w_CJ_SEJOUR_select.SEJ_ID = CJ_CHGNVE.SEJ_ID + JOIN prod_cegi.CJ_NVE ON CJ_NVE.NVE_ID = CJ_CHGNVE.NVE_ID + LEFT JOIN prod_cegi.CJ_DMT ON CJ_NVE.DMT_ID = CJ_DMT.DMT_ID + LEFt JOIN prod_cegi.CJ_MTR ON CJ_NVE.MTR_ID = CJ_MTR.MTR_ID + WHERE CHGNVE_ANNUL_DH IS NULL AND + CHGNVE_ACTIF = 1; + + INSERT INTO w_CHGNVE_all + SELECT + RSS.SEJ_ID, + w_CJ_SEJOUR_select.SEJ_NUMDOS, + 0::numeric AS CHGNVE_ID, + 'UM'::text AS NVE_TYPE, + 0::numeric AS NVE_ID, + RUM.C_UM AS NVE_original, + RUM.D_E, + 1::numeric AS CHGNVE_ACTIF, + (HR_ENTREE - date_trunc('day',HR_ENTREE)) AS CHGNVE_HEURE, + ''::text AS DMT_LIBC, + ''::text AS MTR_LIBC + FROM prod_cegi.RUM + JOIN prod_cegi.RSS ON RUM.N_PMSI = RSS.N_PMSI + JOIN w_CJ_SEJOUR_select ON RSS.SEJ_ID = w_CJ_SEJOUR_select.SEJ_ID; + + + + + + + + + + DROP SEQUENCE IF EXISTS w_CHGNVE_seq; + CREATE TEMP SEQUENCE w_CHGNVE_seq; + + DROP TABLE IF EXISTS w_CHGNVE; + CREATE TEMP TABLE w_CHGNVE AS + SELECT nextval('w_CHGNVE_seq'::regclass) AS CHGNVE_seq, + subview.*, + CHGNVE_DATE + CHGNVE_HEURE AS CHGNVE_DATE_HEURE, + NULL::date AS CHGNVE_DATE_FIN, + NULL::interval AS CHGNVE_HEURE_FIN, + NULL::timestamp without time zone AS CHGNVE_DATE_HEURE_FIN, + 0::bigint AS lieu_id, + '0'::text AS q_entree, + '0'::text AS q_sortie, + 'N'::text AS chambre_particuliere, + + ''::text AS NVE_SAD_avant, + ''::text AS NVE_ETA_avant, + ''::text AS NVE_UF_avant, + ''::text AS NVE_UM_avant, + + ''::text AS NVE_SAD_apres, + ''::text AS NVE_ETA_apres, + ''::text AS NVE_UF_apres, + ''::text AS NVE_UM_apres + + FROM + ( + SELECT SEJ_ID, + SEJ_NUMDOS, + date(CHGNVE_DATE) AS CHGNVE_DATE, + + (MAX(Array[to_char(CASE WHEN NVE_TYPE = 'SAD' THEN @CHGNVE_ID ELSE 0 END,'FM000000000000'),CASE WHEN NVE_TYPE = 'SAD' THEN NVE_original ELSE '' END]))[2] AS NVE_SAD, + (MAX(Array[to_char(CASE WHEN NVE_TYPE = 'SAD' THEN @CHGNVE_ID ELSE 0 END,'FM000000000000'),CASE WHEN NVE_TYPE = 'SAD' THEN NVE_original ELSE '' END]))[2] AS NVE_UF, + (MAX(Array[to_char(CASE WHEN NVE_TYPE = 'LIT' THEN @CHGNVE_ID ELSE 0 END,'FM000000000000'),CASE WHEN NVE_TYPE = 'LIT' THEN NVE_original ELSE '' END]))[2] AS NVE_LIT, + (MAX(Array[to_char(CASE WHEN NVE_TYPE = 'UM' THEN @CHGNVE_ID ELSE 0 END,'FM000000000000'),CASE WHEN NVE_TYPE = 'UM' THEN NVE_original ELSE '' END]))[2] AS NVE_UM, + ''::text AS NVE_ETA, + (MAX(Array[to_char(CASE WHEN NVE_TYPE = 'SAD' THEN @CHGNVE_ID ELSE 0 END,'FM000000000000'),CASE WHEN NVE_TYPE = 'SAD' THEN DMT_LIBC ELSE '' END]))[2] AS NVE_DMT, + (MAX(Array[to_char(CASE WHEN NVE_TYPE = 'SAD' THEN @CHGNVE_ID ELSE 0 END,'FM000000000000'),CASE WHEN NVE_TYPE = 'SAD' THEN MTR_LIBC ELSE '' END]))[2] AS NVE_MTR, + + (MAX(Array[CASE WHEN NVE_TYPE = 'SAD' THEN @CHGNVE_ID ELSE 0 END,CASE WHEN NVE_TYPE = 'SAD' THEN NVE_ID ELSE -1 END]))[2] AS NVE_ID_SAD, + (MAX(Array[CASE WHEN NVE_TYPE = 'SAD' THEN @CHGNVE_ID ELSE 0 END,CASE WHEN NVE_TYPE = 'SAD' THEN NVE_ID ELSE -1 END]))[2] AS NVE_ID_UF, + (MAX(Array[CASE WHEN NVE_TYPE = 'LIT' THEN @CHGNVE_ID ELSE 0 END,CASE WHEN NVE_TYPE = 'LIT' THEN NVE_ID ELSE -1 END]))[2] AS NVE_ID_LIT, + 0::numeric AS NVE_ID_UM, + 0::numeric AS NVE_ID_ETA, + + MAX(CHGNVE_HEURE) AS CHGNVE_HEURE + FROM w_CHGNVE_all + GROUP BY 1,2,3 + ORDER BY 1,2,3 + ) subview; + + + + SELECT base.cti_execute( + 'UPDATE w_CHGNVE SET + NVE_ID_SAD = CASE WHEN w_CHGNVE.NVE_ID_SAD >= 0 THEN w_CHGNVE.NVE_ID_SAD ELSE w_CHGNVE_avant.NVE_ID_SAD END, + NVE_SAD = CASE WHEN w_CHGNVE.NVE_ID_SAD >= 0 THEN w_CHGNVE.NVE_SAD ELSE w_CHGNVE_avant.NVE_SAD END, + NVE_MTR = CASE WHEN w_CHGNVE.NVE_ID_SAD >= 0 THEN w_CHGNVE.NVE_MTR ELSE w_CHGNVE_avant.NVE_MTR END, + NVE_DMT = CASE WHEN w_CHGNVE.NVE_ID_SAD >= 0 THEN w_CHGNVE.NVE_DMT ELSE w_CHGNVE_avant.NVE_DMT END, + NVE_ID_UF = CASE WHEN w_CHGNVE.NVE_ID_UF >= 0 THEN w_CHGNVE.NVE_ID_UF ELSE w_CHGNVE_avant.NVE_ID_UF END, + NVE_UF = CASE WHEN w_CHGNVE.NVE_ID_UF >= 0 THEN w_CHGNVE.NVE_UF ELSE w_CHGNVE_avant.NVE_UF END, + NVE_ID_LIT = CASE WHEN w_CHGNVE.NVE_ID_LIT >= 0 THEN w_CHGNVE.NVE_ID_LIT ELSE w_CHGNVE_avant.NVE_ID_LIT END, + NVE_LIT = CASE WHEN w_CHGNVE.NVE_ID_LIT >= 0 THEN w_CHGNVE.NVE_LIT ELSE w_CHGNVE_avant.NVE_LIT END + FROM w_CHGNVE w_CHGNVE_avant + WHERE w_CHGNVE.SEJ_ID = w_CHGNVE_avant.SEJ_ID AND + w_CHGNVE.CHGNVE_seq = w_CHGNVE_avant.CHGNVE_seq + 1 AND + ( + w_CHGNVE.NVE_ID_SAD < 0 AND w_CHGNVE_avant.NVE_ID_SAD >= 0 OR + w_CHGNVE.NVE_ID_UF < 0 AND w_CHGNVE_avant.NVE_ID_UF >= 0 OR + w_CHGNVE.NVE_ID_LIT < 0 AND w_CHGNVE_avant.NVE_ID_LIT >= 0 + )',100); + + + + SELECT base.cti_execute( + 'UPDATE w_CHGNVE SET + NVE_ID_SAD = CASE WHEN w_CHGNVE.NVE_ID_SAD >= 0 THEN w_CHGNVE.NVE_ID_SAD ELSE w_CHGNVE_apres.NVE_ID_SAD END, + NVE_SAD = CASE WHEN w_CHGNVE.NVE_ID_SAD >= 0 THEN w_CHGNVE.NVE_SAD ELSE w_CHGNVE_apres.NVE_SAD END, + NVE_MTR = CASE WHEN w_CHGNVE.NVE_ID_SAD >= 0 THEN w_CHGNVE.NVE_MTR ELSE w_CHGNVE_apres.NVE_MTR END, + NVE_DMT = CASE WHEN w_CHGNVE.NVE_ID_SAD >= 0 THEN w_CHGNVE.NVE_DMT ELSE w_CHGNVE_apres.NVE_DMT END, + NVE_ID_UF = CASE WHEN w_CHGNVE.NVE_ID_UF >= 0 THEN w_CHGNVE.NVE_ID_UF ELSE w_CHGNVE_apres.NVE_ID_UF END, + NVE_UF = CASE WHEN w_CHGNVE.NVE_ID_UF >= 0 THEN w_CHGNVE.NVE_UF ELSE w_CHGNVE_apres.NVE_UF END, + NVE_ID_LIT = CASE WHEN w_CHGNVE.NVE_ID_LIT >= 0 THEN w_CHGNVE.NVE_ID_LIT ELSE w_CHGNVE_apres.NVE_ID_LIT END, + NVE_LIT = CASE WHEN w_CHGNVE.NVE_ID_LIT >= 0 THEN w_CHGNVE.NVE_LIT ELSE w_CHGNVE_apres.NVE_LIT END + FROM w_CHGNVE w_CHGNVE_apres + WHERE w_CHGNVE.SEJ_ID = w_CHGNVE_apres.SEJ_ID AND + w_CHGNVE.CHGNVE_seq = w_CHGNVE_apres.CHGNVE_seq - 1 AND + ( + w_CHGNVE.NVE_ID_SAD < 0 AND w_CHGNVE_apres.NVE_ID_SAD >= 0 OR + w_CHGNVE.NVE_ID_UF < 0 AND w_CHGNVE_apres.NVE_ID_UF >= 0 OR + w_CHGNVE.NVE_ID_LIT < 0 AND w_CHGNVE_apres.NVE_ID_LIT >= 0 + )',100); + + + UPDATE w_CHGNVE + SET NVE_UM = CJ_SADUM.CODE + FROM prod_cegi.CJ_SADUM + WHERE NVE_ID_SAD = CJ_SADUM.NVE_ID AND + NVE_UM = ''; + + UPDATE w_CHGNVE SET + NVE_ETA = w_LITS.code_etage, + NVE_LIT = w_LITS.code_etage || '|' || w_LITS.code_lit + FROM w_LITS + WHERE NVE_ID_LIT = w_LITS.NVE_ID; + + + UPDATE w_CHGNVE SET + CHGNVE_HEURE = COALESCE((SEJ_HR_ENTREE - date_trunc('day',SEJ_HR_ENTREE)),'00:00:00'), + CHGNVE_DATE_HEURE = CHGNVE_DATE + COALESCE((SEJ_HR_ENTREE - date_trunc('day',SEJ_HR_ENTREE)),'00:00:00') + FROM w_CJ_SEJOUR_select + WHERE w_CJ_SEJOUR_select.SEJ_ID = w_CHGNVE.SEJ_ID AND + date(CHGNVE_DATE) = date(SEJ_DT_ENTREE); + + + UPDATE w_CHGNVE SET + CHGNVE_HEURE = '10:00:00'::interval, + CHGNVE_DATE_HEURE = CHGNVE_DATE + '10:00:00'::interval + WHERE CHGNVE_HEURE = '00:00:00'::interval; + + + UPDATE w_CHGNVE SET + q_entree = '1' + FROM w_CJ_SEJOUR_select + JOIN ( + SELECT SEJ_ID, MIN(CHGNVE_seq) AS CHGNVE_seq_entree + FROM w_CHGNVE + GROUP BY 1 + ) subview ON w_CJ_SEJOUR_select.SEJ_ID = subview.SEJ_ID + WHERE w_CJ_SEJOUR_select.SEJ_ID = w_CHGNVE.SEJ_ID AND + w_CHGNVE.CHGNVE_seq = CHGNVE_seq_entree; + + UPDATE w_CHGNVE SET + q_sortie = '1' + FROM w_CJ_SEJOUR_select + JOIN ( + SELECT SEJ_ID, MAX(CHGNVE_seq) AS CHGNVE_seq_sortie + FROM w_CHGNVE + GROUP BY 1 + ) subview ON w_CJ_SEJOUR_select.SEJ_ID = subview.SEJ_ID + WHERE w_CJ_SEJOUR_select.SEJ_ID = w_CHGNVE.SEJ_ID AND + w_CHGNVE.CHGNVE_seq = CHGNVE_seq_sortie; + + + + UPDATE w_CHGNVE SET + CHGNVE_DATE_HEURE_FIN = w_CHGNVE_apres.CHGNVE_DATE_HEURE - interval '1 second', + CHGNVE_DATE_FIN = date(w_CHGNVE_apres.CHGNVE_DATE_HEURE - interval '1 second'), + CHGNVE_HEURE_FIN = w_CHGNVE_apres.CHGNVE_DATE_HEURE - interval '1 second'-date_trunc('day',w_CHGNVE_apres.CHGNVE_DATE_HEURE - interval '1 second') + FROM w_CHGNVE w_CHGNVE_apres + WHERE w_CHGNVE.SEJ_ID = w_CHGNVE_apres.SEJ_ID AND + w_CHGNVE.CHGNVE_seq = w_CHGNVE_apres.CHGNVE_seq - 1; + + UPDATE w_CHGNVE SET + CHGNVE_DATE_HEURE_FIN = SEJ_DTHR_SORTIE, + CHGNVE_DATE_FIN = date(SEJ_DTHR_SORTIE), + CHGNVE_HEURE_FIN = SEJ_DTHR_SORTIE-date_trunc('day',SEJ_DTHR_SORTIE) + FROM w_CJ_SEJOUR_select + JOIN ( + SELECT SEJ_ID, MAX(CHGNVE_seq) AS CHGNVE_seq_sortie + FROM w_CHGNVE + GROUP BY 1 + ) subview ON w_CJ_SEJOUR_select.SEJ_ID = subview.SEJ_ID + WHERE w_CJ_SEJOUR_select.SEJ_ID = w_CHGNVE.SEJ_ID AND + w_CHGNVE.CHGNVE_seq = CHGNVE_seq_sortie; + + + + UPDATE w_CHGNVE SET + NVE_SAD_apres = w_CHGNVE_apres.NVE_SAD, + NVE_ETA_apres = w_CHGNVE_apres.NVE_ETA, + NVE_UF_apres = w_CHGNVE_apres.NVE_UF, + NVE_UM_apres = w_CHGNVE_apres.NVE_UM + FROM w_CHGNVE w_CHGNVE_apres + WHERE w_CHGNVE.SEJ_ID = w_CHGNVE_apres.SEJ_ID AND + w_CHGNVE.CHGNVE_seq = w_CHGNVE_apres.CHGNVE_seq - 1; + + UPDATE w_CHGNVE SET + NVE_SAD_avant = w_CHGNVE_avant.NVE_SAD, + NVE_ETA_avant = w_CHGNVE_avant.NVE_ETA, + NVE_UF_avant = w_CHGNVE_avant.NVE_UF, + NVE_UM_avant = w_CHGNVE_avant.NVE_UM + FROM w_CHGNVE w_CHGNVE_avant + WHERE w_CHGNVE.SEJ_ID = w_CHGNVE_avant.SEJ_ID AND + w_CHGNVE.CHGNVE_seq = w_CHGNVE_avant.CHGNVE_seq + 1; + + + + + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_5, code_original_6) + SELECT NVE_SAD, '', NVE_ETA, NVE_LIT, NVE_UM , NVE_UF + FROM w_CHGNVE + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = NVE_SAD AND + code_original_2 = '' AND + code_original_3 = NVE_ETA AND + code_original_4 = NVE_LIT AND + code_original_5 = NVE_UM AND + code_original_6 = NVE_UF + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5,6; + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(w_CJ_NVE_service.service_facturation_id,0), + mode_traitement_id = COALESCE(w_CJ_NVE_service.mode_traitement_id,0), + unite_fonctionnelle_id = COALESCE(w_CJ_NVE_service.unite_fonctionnelle_id,0) + FROM + w_CJ_NVE_service + WHERE code_original_1 = w_CJ_NVE_service.NVE_LIBC AND + ( + t_lieux.service_facturation_id <> COALESCE(w_CJ_NVE_service.service_facturation_id,0) OR + t_lieux.mode_traitement_id <> COALESCE(w_CJ_NVE_service.mode_traitement_id,0) OR + t_lieux.unite_fonctionnelle_id <> COALESCE(w_CJ_NVE_service.unite_fonctionnelle_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + unite_medicale_id = COALESCE(t_unites_medicales.oid,0) + FROM + activite[PX].t_unites_medicales + WHERE code_original_5 = t_unites_medicales.code_original + AND unite_medicale_id <> COALESCE(t_unites_medicales.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM + activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + + UPDATE w_CHGNVE SET + lieu_id = t_lieux.oid, + chambre_particuliere = t_lits.chambre_particuliere + FROM activite[PX].t_lieux + JOIN activite[PX].t_lits ON lit_id = t_lits.oid + WHERE code_original_1 = NVE_SAD AND + code_original_2 = '' AND + code_original_3 = NVE_ETA AND + code_original_4 = NVE_LIT AND + code_original_5 = NVE_UM AND + code_original_6 = NVE_UF; + + DROP TABLE IF EXISTS w_CHGNVE_sortie; + CREATE TEMP TABLE w_CHGNVE_sortie AS + SELECT + w_CJ_SEJOUR_select.SEJ_ID, + COALESCE((MAX(Array[CHGNVE_seq,lieu_id]))[2],0) AS lieu_sortie_id, + COALESCE((MAX(Array[to_char(CHGNVE_seq,'FM000000000000'),NVE_MTR]))[2],'') AS MTR_LIBC, + COALESCE((MAX(Array[to_char(CHGNVE_seq,'FM000000000000'),NVE_DMT]))[2],'') AS DMT_LIBC, + ''::text AS type_sejour_force + FROM w_CJ_SEJOUR_select + LEFT JOIN w_CHGNVE ON w_CJ_SEJOUR_select.SEJ_ID = w_CHGNVE.SEJ_ID + GROUP BY 1; + + UPDATE w_CHGNVE_sortie SET + type_sejour_force = CASE WHEN t_services_facturation.type_sejour IN ('1','2','3','5','6', '9', '31') THEN t_services_facturation.type_sejour ELSE '' END, + MTR_LIBC = CASE WHEN t_modes_traitement.code <> MTR_LIBC AND t_services_facturation.mode_traitement_id <> 0 THEN t_modes_traitement.code ELSE MTR_LIBC END, + DMT_LIBC = CASE WHEN t_dmt.code <> DMT_LIBC AND t_services_facturation.dmt_id <> 0 THEN t_dmt.code ELSE dmt_LIBC END + FROM activite[PX].t_lieux + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + WHERE lieu_sortie_id = t_lieux.oid AND + ( + t_services_facturation.type_sejour IN ('1','2','3','5','6','9','31') AND type_sejour_force = '' OR + t_modes_traitement.code <> MTR_LIBC AND t_services_facturation.mode_traitement_id <> 0 OR + t_dmt.code <> DMT_LIBC AND t_services_facturation.dmt_id <> 0 + ) + + ; + + + + UPDATE w_CJ_SEJOUR_select + SET medecin_sejour_id = subview.medecin_sejour_id + FROM + ( + SELECT w_CJ_SEJOUR_select.SEJ_ID, + (MAX(ARRAY[CASE WHEN SPE_LIBC = '02' THEN '0' ELSE '1' END || SEJPRA_DATE::text,w_CJ_PRA.medecin_administratif_id::text]))[2]::bigint AS medecin_sejour_id + FROM w_CJ_SEJOUR_select + JOIN prod_cegi.CJ_SEJPRA ON w_CJ_SEJOUR_select.SEJ_ID = CJ_SEJPRA.SEJ_ID AND SEJPRA_QUALITE = 'R' + JOIN w_CJ_PRA ON CJ_SEJPRA.PRA_ID = w_CJ_PRA.PRA_ID + GROUP BY 1 + ORDER BY 1 + ) subview + WHERE w_CJ_SEJOUR_select.SEJ_ID = subview.SEJ_ID; + + + DROP TABLE IF EXISTS w_sejours; + CREATE TEMP TABLE w_sejours AS + SELECT + w_CJ_SEJOUR_select.SEJ_NUMDOS as no_sejour, + w_CJ_SEJOUR_select.SEJ_NUMDOS as code_original, + COALESCE(no_patient,'W' || w_CJ_SEJOUR_select.SEJ_NUMDOS) as no_patient, + date(SEJ_DTHR_ENTREE) as date_entree, + date_part('hour', SEJ_DTHR_ENTREE)*10000 + date_part('minute', SEJ_DTHR_ENTREE)*100 as heure_entree, + date(SEJ_DTHR_SORTIE) as date_sortie, + date_part('hour', SEJ_DTHR_SORTIE)*10000 + date_part('minute', SEJ_DTHR_SORTIE)*100 as heure_sortie, + CASE WHEN PAT_SEXE IN ('F', '2') THEN '2' ELSE '1' END as code_sexe, + 0 AS age, + CASE WHEN SEJ_DTHR_SORTIE IS NOT NULL AND SEJ_DTHR_SORTIE < '20991231' AND SEJ_DTHR_SORTIE <= (SELECT MAX(SEJ_MODIF_DH) FROM prod_cegi.CJ_SEJOUR) THEN 1 ELSE 0 END::numeric as code_sorti, + CASE WHEN SEJ_RESA = 1 OR w_CJ_SEJOUR_select.SEJ_NUMDOS LIKE 'R%' OR SEJ_DTHR_ENTREE > now() THEN 1::numeric ELSE 0::numeric END AS code_prevu, + CASE + WHEN SEJ_ACTIF <> 1 THEN '9' + WHEN trim(t_divers_CEGIFIRST_TDI.valeur) <> '' AND TYD_LIBC <> '' AND TYD_LIBC = ANY(string_to_array(replace(t_divers_CEGIFIRST_TDI.valeur,' ',''),',')) THEN '9' + WHEN type_sejour_force IN ('1','2','3','5','6','9') THEN type_sejour_force + WHEN type_sejour_force = '31' AND date(SEJ_DTHR_SORTIE) - date(SEJ_DTHR_ENTREE) > 1 THEN '1' + WHEN type_sejour_force = '31' THEN '3' + WHEN w_CHGNVE_sortie.MTR_LIBC IN ('03') AND date(SEJ_DTHR_ENTREE) = date(SEJ_DTHR_SORTIE) THEN '2' + WHEN w_CHGNVE_sortie.MTR_LIBC IN ('03') THEN '1' + WHEN w_CHGNVE_sortie.MTR_LIBC IN ('07') THEN '3' + WHEN w_CHGNVE_sortie.MTR_LIBC IN ('19') AND w_CHGNVE_sortie.DMT_LIBC IN ('302') THEN '5' + WHEN w_CHGNVE_sortie.MTR_LIBC IN ('07') OR w_CHGNVE_sortie.DMT_LIBC IN ('958') THEN '3' + WHEN w_CHGNVE_sortie.MTR_LIBC IN ('19', '23') AND date(SEJ_DTHR_ENTREE) = date(SEJ_DTHR_SORTIE) THEN '2' + WHEN w_CHGNVE_sortie.MTR_LIBC IN ('04') AND date(SEJ_DTHR_ENTREE) = date(SEJ_DTHR_SORTIE) THEN '2' + WHEN w_CHGNVE_sortie.MTR_LIBC IN ('03') AND date(SEJ_DTHR_ENTREE) = date(SEJ_DTHR_SORTIE) THEN '2' + WHEN w_CHGNVE_sortie.MTR_LIBC IN ('03') THEN '1' + WHEN date(SEJ_DTHR_ENTREE) = date(SEJ_DTHR_SORTIE) THEN '2' + ELSE '1' END as type_sejour, + w_CHGNVE_sortie.lieu_sortie_id AS lieu_sortie_id, + w_CJ_SEJOUR_select.medecin_sejour_id AS medecin_sejour_id, + COALESCE(w_RSS.ghs_id,0) AS ghs_id, + COALESCE(w_RSS.ghm_id,0) AS ghm_id, + 0::numeric AS ghs_bebe1_id, + 0::numeric AS ghs_bebe2_id, + 0::numeric AS ghs_bebe3_id, + COALESCE(DT_ENV_ADM,'20991231') AS date_groupage, + CASE WHEN SEJ_CP = '1' AND cegi_demande_cp = 1 THEN '1' ELSE '0' END::text AS code_cp_demandee, + w_CJ_SEJOUR_select.mode_traitement_id, + w_CJ_SEJOUR_select.mode_entree AS mode_entree, + COALESCE(w_RSS.C_PROV, w_CJ_SEJOUR_select.provenance) AS provenance, + w_CJ_SEJOUR_select.mode_sortie as mode_sortie, + COALESCE(w_RSS.C_DEST, w_CJ_SEJOUR_select.destination ) as destination, + w_CJ_SEJOUR_select.tiers_payant_0_id, + w_CJ_SEJOUR_select.tiers_payant_1_id, + w_CJ_SEJOUR_select.tiers_payant_2_id, + 0::bigint AS tiers_payant_22_id, + 0::bigint AS est_budget_global, + w_CJ_SEJOUR_select.code_postal_id + FROM w_CJ_SEJOUR_select + JOIN activite.t_divers t_divers_CEGIFIRST_TDI ON t_divers_CEGIFIRST_TDI.code = 'CEGIFIRST_TDI' + LEFT JOIN w_CHGNVE_sortie ON w_CJ_SEJOUR_select.SEJ_ID = w_CHGNVE_sortie.SEJ_ID + LEFT JOIN w_RSS ON w_CJ_SEJOUR_select.SEJ_ID = w_RSS.SEJ_ID + LEFT JOIN w_CJ_PATIENT ON w_CJ_SEJOUR_select.PAT_ID = w_CJ_PATIENT.PAT_ID AND w_CJ_SEJOUR_select.SEJ_NUMDOS = w_CJ_PATIENT.SEJ_NUMDOS + LEFT JOIN (SELECT count(*) AS cegi_demande_cp FROM activite.t_divers WHERE t_divers.code = 'ENCOURSVALOCP' AND valeur = '1') sub ON 1=1; + + + -- Forcage type selon séjour + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour + FROM activite.t_sejour + WHERE t_sejour.no_sejour = w_sejours.no_sejour AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9'); + + -- Code CP demandée selon CJ_GSH + -- On ne peut préfixer t_rubriques_facturation car liste sur environnement fusionné uniquement + UPDATE w_sejours p_sejours + SET code_cp_demandee = '1' + FROM prod_cegi.CJ_GSH + JOIN prod_cegi.CJ_SEJOUR ON CJ_GSH.SEJ_ID = CJ_SEJOUR.SEJ_ID + JOIN prod_cegi.CJ_PST ON CJ_GSH.PST_ID = CJ_PST.PST_ID + JOIN activite.t_rubriques_facturation ON + CJ_PST.PST_LIBC = t_rubriques_facturation.code_original OR + 'CJ_'||CJ_PST.PST_LIBC ILIKE t_rubriques_facturation.code_original + JOIN activite.t_listes_contenu ON t_rubriques_facturation.oid = to_id + JOIN activite.t_listes ON liste_id = t_listes.oid + WHERE SEJ_NUMDOS = p_sejours.no_sejour AND + t_listes.code = 'CTI_SHO_R' AND + p_sejours.code_cp_demandee <> '1' AND + code_prevu <> '1' + ; + + + + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_13'); + + UPDATE activite[PX].p_sejours SET + provider_id = 0, + code_original = w_sejours.code_original, + no_patient = w_sejours.no_patient, + date_entree = w_sejours.date_entree, + heure_entree = w_sejours.heure_entree, + date_sortie = w_sejours.date_sortie, + heure_sortie = w_sejours.heure_sortie, + code_sexe = w_sejours.code_sexe, + age = w_sejours.age, + code_sorti = w_sejours.code_sorti, + code_prevu = w_sejours.code_prevu, + type_sejour = w_sejours.type_sejour, + lieu_sortie_id = w_sejours.lieu_sortie_id, + medecin_sejour_id = w_sejours.medecin_sejour_id, + code_cp_demandee = w_sejours.code_cp_demandee, + mode_traitement_id = w_sejours.mode_traitement_id, + mode_entree = w_sejours.mode_entree, + provenance = w_sejours.provenance, + mode_sortie = w_sejours.mode_sortie, + destination = w_sejours.destination, + tiers_payant_0_id = w_sejours.tiers_payant_0_id, + tiers_payant_1_id = w_sejours.tiers_payant_1_id, + tiers_payant_2_id = w_sejours.tiers_payant_2_id, + tiers_payant_22_id = w_sejours.tiers_payant_22_id, + est_budget_global = w_sejours.est_budget_global, + date_groupage = w_sejours.date_groupage, + ghs_id = w_sejours.ghs_id, + ghm_id = w_sejours.ghm_id, + ghs_bebe1_id = w_sejours.ghs_bebe1_id, + ghs_bebe2_id = w_sejours.ghs_bebe2_id, + ghs_bebe3_id = w_sejours.ghs_bebe3_id, + code_postal_id = w_sejours.code_postal_id + FROM w_sejours + WHERE w_sejours.no_sejour = p_sejours.no_sejour + AND ( + p_sejours.provider_id IS DISTINCT FROM 0 OR + w_sejours.code_original IS DISTINCT FROM p_sejours.code_original OR + w_sejours.no_patient IS DISTINCT FROM p_sejours.no_patient OR + w_sejours.date_entree IS DISTINCT FROM p_sejours.date_entree OR + w_sejours.heure_entree IS DISTINCT FROM p_sejours.heure_entree OR + w_sejours.date_sortie IS DISTINCT FROM p_sejours.date_sortie OR + w_sejours.heure_sortie IS DISTINCT FROM p_sejours.heure_sortie OR + w_sejours.code_sexe IS DISTINCT FROM p_sejours.code_sexe OR + w_sejours.age IS DISTINCT FROM p_sejours.age OR + w_sejours.code_sorti IS DISTINCT FROM p_sejours.code_sorti OR + w_sejours.code_prevu IS DISTINCT FROM p_sejours.code_prevu OR + w_sejours.type_sejour IS DISTINCT FROM p_sejours.type_sejour OR + w_sejours.lieu_sortie_id IS DISTINCT FROM p_sejours.lieu_sortie_id OR + w_sejours.medecin_sejour_id IS DISTINCT FROM p_sejours.medecin_sejour_id OR + w_sejours.code_cp_demandee IS DISTINCT FROM p_sejours.code_cp_demandee OR + w_sejours.mode_traitement_id IS DISTINCT FROM p_sejours.mode_traitement_id OR + w_sejours.mode_entree IS DISTINCT FROM p_sejours.mode_entree OR + w_sejours.provenance IS DISTINCT FROM p_sejours.provenance OR + w_sejours.mode_sortie IS DISTINCT FROM p_sejours.mode_sortie OR + w_sejours.destination IS DISTINCT FROM p_sejours.destination OR + w_sejours.tiers_payant_0_id IS DISTINCT FROM p_sejours.tiers_payant_0_id OR + w_sejours.tiers_payant_1_id IS DISTINCT FROM p_sejours.tiers_payant_1_id OR + w_sejours.tiers_payant_2_id IS DISTINCT FROM p_sejours.tiers_payant_2_id OR + w_sejours.tiers_payant_22_id IS DISTINCT FROM p_sejours.tiers_payant_22_id OR + w_sejours.est_budget_global IS DISTINCT FROM p_sejours.est_budget_global OR + w_sejours.date_groupage IS DISTINCT FROM p_sejours.date_groupage OR + w_sejours.ghs_id IS DISTINCT FROM p_sejours.ghs_id OR + w_sejours.ghm_id IS DISTINCT FROM p_sejours.ghm_id OR + w_sejours.ghs_bebe1_id IS DISTINCT FROM p_sejours.ghs_bebe1_id OR + w_sejours.ghs_bebe2_id IS DISTINCT FROM p_sejours.ghs_bebe2_id OR + w_sejours.ghs_bebe3_id IS DISTINCT FROM p_sejours.ghs_bebe3_id OR + w_sejours.code_postal_id IS DISTINCT FROM p_sejours.code_postal_id + ); + + + INSERT INTO activite[PX].p_sejours ( + no_sejour, + provider_id, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + lieu_sortie_id, + medecin_sejour_id, + ghs_id, + ghm_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + est_budget_global, + code_postal_id + ) + SELECT + w_sejours.no_sejour, + 0::bigint AS provider_id, + w_sejours.code_original, + w_sejours.no_patient, + w_sejours.date_entree, + w_sejours.heure_entree, + w_sejours.date_sortie, + w_sejours.heure_sortie, + w_sejours.code_sexe, + w_sejours.age, + w_sejours.code_sorti, + w_sejours.code_prevu, + w_sejours.type_sejour, + w_sejours.lieu_sortie_id, + w_sejours.medecin_sejour_id, + w_sejours.ghs_id, + w_sejours.ghm_id, + w_sejours.ghs_bebe1_id, + w_sejours.ghs_bebe2_id, + w_sejours.ghs_bebe3_id, + w_sejours.date_groupage, + w_sejours.code_cp_demandee, + w_sejours.mode_traitement_id, + w_sejours.mode_entree, + w_sejours.provenance, + w_sejours.mode_sortie, + w_sejours.destination, + w_sejours.tiers_payant_0_id, + w_sejours.tiers_payant_1_id, + w_sejours.tiers_payant_2_id, + w_sejours.tiers_payant_22_id, + w_sejours.est_budget_global, + w_sejours.code_postal_id + + FROM w_sejours LEFT JOIN activite[PX].p_sejours ON (w_sejours.no_sejour = p_sejours.no_sejour) + WHERE p_sejours.no_sejour IS NULL; + + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '' = ''; + + UPDATE activite[PX].p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND + '' = ''; + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '' = ''; + + -- recréation index + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_13'); + + -- transferts d'établissements + INSERT INTO base.t_etablissements(code, texte, texte_court) + SELECT + FNS_FINESS, + FNS_NOM, + FNS_NOM + FROM prod_cegi.CJ_FINESS + WHERE FNS_FINESS NOT IN (SELECT code FROM base.t_etablissements) + ; + + INSERT INTO activite[PX].p_sejours_transferts (sejour_id, provenance_id, destination_id) + SELECT + p_sejours.oid, + MAX(COALESCE(provenance.oid,0)), + MAX(COALESCE(destination.oid,0)) + FROM + activite[PX].p_sejours + JOIN prod_cegi.CJ_SEJOUR ON SEJ_NUMDOS = no_sejour AND + SEJ_UAGE <> '' + LEFT JOIN prod_cegi.CJ_FINESS CJ_FINESS_ENT ON FNS_ID_ENT = CJ_FINESS_ENT.FNS_ID + LEFT JOIN prod_cegi.CJ_FINESS CJ_FINESS_SOR ON FNS_ID_SOR = CJ_FINESS_SOR.FNS_ID + LEFT JOIN base.t_etablissements provenance ON CJ_FINESS_ENT.FNS_FINESS = provenance.code + LEFT JOIN base.t_etablissements destination ON CJ_FINESS_SOR.FNS_FINESS = destination.code + WHERE 1!=1 OR + FNS_ID_ENT NOT IN (0,10000) OR + FNS_ID_SOR NOT IN (0,10000) + GROUP BY p_sejours.oid + ; + + -- Assurance + SELECT base.cti_execute('INSERT INTO activite[PX].p_sejours_assurance( + sejour_id, + nom_assure, + prenom_assure, + tiers_payant_0_id, + tiers_payant_1_id, + matricule_1, + tiers_payant_2_id, + matricule_2, + tiers_payant_22_id, + matricule_22 + ) + SELECT + p_sejours.oid AS sejour_id, + MAX(PASS_NOM) AS nom_assure, + MAX(PASS_PRENOM) prenom_assure, + MAX(p_sejours.tiers_payant_0_id), + MAX(p_sejours.tiers_payant_1_id), + MAX(substr(PASS_NUMSS,1,13)) AS matricule_1, + MAX(p_sejours.tiers_payant_2_id), + MAX(CASE WHEN AMC_NUMERO <> '''' THEN AMC_NUMERO ELSE substr(PASS_NUMSS,1,13) END) AS matricule_2, + MAX(p_sejours.tiers_payant_22_id), + ''''::text AS matricule_22 + FROM prod_cegi.PAMLF_SEJ + JOIN w_CJ_SEJOUR_select ON w_CJ_SEJOUR_select.SEJ_ID = PAMLF_SEJ.SEJ_ID + JOIN activite[PX].p_sejours ON code_original = w_CJ_SEJOUR_select.SEJ_NUMDOS + GROUP BY 1 + ',1) + WHERE (SELECT count(*) FROM information_schema.tables WHERE table_name = 'PAMLF_SEJ' + AND TABLE_SCHEMA = 'prod_cegi') > 0 + ; + + INSERT INTO activite[PX].p_sejours_assurance( + sejour_id, + nom_assure, + prenom_assure, + tiers_payant_0_id, + tiers_payant_1_id, + matricule_1, + tiers_payant_2_id, + matricule_2, + tiers_payant_22_id, + matricule_22 + ) + SELECT + p_sejours.oid AS sejour_id, + MAX(PER_NOM) AS nom_assure, + MAX(PER_PRENOM) prenom_assure, + MAX(p_sejours.tiers_payant_0_id), + MAX(p_sejours.tiers_payant_1_id), + MAX(substr(AFF_NUMERO,1,13)) AS matricule_1, + MAX(p_sejours.tiers_payant_2_id), + MAX(substr(AFF_NUMERO,1,13)) AS matricule_2, + MAX(p_sejours.tiers_payant_22_id), + ''::text AS matricule_22 + FROM prod_cegi.CJ_AFF + JOIN prod_cegi.CJ_PATIENT ON CJ_PATIENT.PAT_ID = CJ_AFF.PAT_ID + JOIN w_CJ_SEJOUR_select ON w_CJ_SEJOUR_select.SEJ_ID = CJ_AFF.SEJ_ID + JOIN activite[PX].p_sejours ON code_original = w_CJ_SEJOUR_select.SEJ_NUMDOS + WHERE p_sejours.oid NOT IN (SELECT sejour_id FROM activite[PX].p_sejours_assurance) + GROUP BY 1 + ; + + + ]]> + + + + '1' AND w_CHGNVE.NVE_SAD <> NVE_SAD_avant THEN 1 ELSE 0 END AS nb_entrees_mutation_service, + CASE WHEN p_calendrier.date = date(CHGNVE_DATE_HEURE_FIN) AND p_sejours.type_sejour = '1' AND q_sortie <> '1' AND w_CHGNVE.NVE_SAD <> NVE_SAD_apres THEN 1 ELSE 0 END AS nb_sorties_mutation_service, + CASE WHEN p_calendrier.date = date(CHGNVE_DATE_HEURE) AND p_sejours.type_sejour = '1' AND q_entree <> '1' AND w_CHGNVE.NVE_ETA <> NVE_ETA_avant THEN 1 ELSE 0 END AS nb_entrees_mutation_etage, + CASE WHEN p_calendrier.date = date(CHGNVE_DATE_HEURE_FIN) AND p_sejours.type_sejour = '1' AND q_sortie <> '1' AND w_CHGNVE.NVE_ETA <> NVE_ETA_apres THEN 1 ELSE 0 END AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + CASE WHEN p_calendrier.date = date(CHGNVE_DATE_HEURE) AND p_sejours.type_sejour = '1' AND q_entree <> '1' AND w_CHGNVE.NVE_UM <> NVE_UM_avant THEN 1 ELSE 0 END AS nb_entrees_mutation_unite_medicale, + CASE WHEN p_calendrier.date = date(CHGNVE_DATE_HEURE_FIN) AND p_sejours.type_sejour = '1' AND q_sortie <> '1' AND w_CHGNVE.NVE_UM <> w_CHGNVE.NVE_UM_apres THEN 1 ELSE 0 END AS nb_sorties_mutation_unite_medicale, + + CASE WHEN p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN p_sejours.type_sejour = '1' AND p_calendrier.date <> p_sejours.date_sortie THEN 1 ELSE 0 END AS nb_jours_js_non_inclus, + + CASE WHEN p_sejours.type_sejour = '1' AND w_CHGNVE.chambre_particuliere = 'O' THEN '1' ELSE '0' END AS est_chambre_particuliere, + CASE WHEN p_sejours.type_sejour = '1' AND w_CHGNVE.chambre_particuliere = 'O' THEN 1 ELSE 0 END AS nb_chambres_particulieres, + + 0 AS nb_bebes, + + w_CHGNVE.lieu_id, + + p_sejours.medecin_sejour_id as medecin_sejour_id + + FROM w_CHGNVE + JOIN activite[PX].p_sejours ON w_CHGNVE.SEJ_NUMDOS = p_sejours.code_original AND p_sejours.etat = '' + JOIN base.p_calendrier ON (p_calendrier.date BETWEEN date(CHGNVE_DATE_HEURE) AND date(CHGNVE_DATE_HEURE_FIN) AND p_calendrier.date <= now() ) + WHERE p_sejours.code_prevu <> 1 + ORDER BY CHGNVE_seq, p_calendrier.date; + + + -- bébés + DROP TABLE IF EXISTS w_LSCCAM_bebes; + + CREATE TEMP TABLE w_LSCCAM_bebes AS + SELECT + SEJ_NUMDOS, + MAX(CASE WHEN t_actes.texte ILIKE '%multiple%' THEN 2 ELSE 1 END) AS nb_bebes + FROM w_CJ_SEJOUR_select + JOIN prod_cegi.CJ_LSRGP ON CJ_LSRGP.SEJ_ID = w_CJ_SEJOUR_select.SEJ_ID AND LSR_ACTIF = 1 + JOIN prod_cegi.CJ_LSCCAM ON CJ_LSCCAM.LSR_ID = CJ_LSRGP.LSR_ID AND LSCA_ACTIF = 1 + JOIN prod_cegi.CJ_CCAM ON CJ_CCAM.CCAM_ID = CJ_LSCCAM.CCAM_ID AND CCAM_ACTV = '1' + JOIN base.t_actes ON t_actes.code = substring(CCAM_CODE, 1, 7) AND + CCAM_CODE LIKE 'JQG%' AND + t_actes.texte ILIKE 'accouchement%' + GROUP BY 1; + + CREATE INDEX w_LSCCAM_bebes_i1 + ON w_LSCCAM_bebes + USING btree + (SEJ_NUMDOS); + + UPDATE w_mouvements_sejour + SET nb_bebes = w_LSCCAM_bebes.nb_bebes + FROM w_LSCCAM_bebes + WHERE SEJ_NUMDOS = w_mouvements_sejour.no_sejour AND + (nb_entrees_directes = 1 OR nb_externes = 1 OR nb_ambulatoires = 1); + + + -- Séances d'après les actes + DROP TABLE IF EXISTS w_CJ_LCS_seances; + + CREATE TEMP TABLE w_CJ_LCS_seances AS + SELECT + p_sejours.no_sejour, + date(LCS_DT_DEB) AS date, + CASE WHEN SUM(CASE WHEN LCS_TTC < 0 AND LCS_QTE > 0 THEN 0 - LCS_QTE ELSE LCS_QTE END) > 0 THEN 1 ELSE 0 END AS nb_seances + FROM prod_cegi.CJ_LCS + JOIN prod_cegi.CJ_SEJOUR ON CJ_SEJOUR.SEJ_ID = CJ_LCS.SEJ_ID + JOIN activite[PX].p_sejours ON SEJ_NUMDOS = p_sejours.code_original + LEFT JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid + WHERE LCS_SEJHON = 1 AND + LCS_CODE = 'K' AND + ( + LCS_COEFF = 15 OR + t_ghm.code LIKE '28%' + ) + GROUP BY 1,2 + ; + + CREATE INDEX w_CJ_LCS_seances_i1 + ON w_CJ_LCS_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_CJ_LCS_seances.nb_seances + FROM w_CJ_LCS_seances + WHERE w_CJ_LCS_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_CJ_LCS_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances <> w_CJ_LCS_seances.nb_seances; + + -- Séances d'après les ghs chimio + DROP TABLE IF EXISTS w_CJ_LCS_seances; + + CREATE TEMP TABLE w_CJ_LCS_seances AS + SELECT + p_sejours.no_sejour, + date(LCS_DT_DEB) AS date, + CASE WHEN SUM(CASE WHEN LCS_TTC < 0 AND LCS_QTE > 0 THEN 0 - LCS_QTE ELSE LCS_QTE END) > 0 THEN 1 ELSE 0 END AS nb_seances + FROM prod_cegi.CJ_LCS + JOIN prod_cegi.CJ_SEJOUR ON CJ_SEJOUR.SEJ_ID = CJ_LCS.SEJ_ID + JOIN activite[PX].p_sejours ON SEJ_NUMDOS = p_sejours.code_original + WHERE LCS_SEJHON = 0 AND + LCS_CODE = 'GHS' AND + LCS_GHS = '9606' + GROUP BY 1,2 + HAVING SUM(CASE WHEN LCS_TTC < 0 AND LCS_QTE > 0 THEN 0 - LCS_QTE ELSE LCS_QTE END) > 0 + ; + + CREATE INDEX w_CJ_LCS_seances_i1 + ON w_CJ_LCS_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_CJ_LCS_seances.nb_seances + FROM w_CJ_LCS_seances + WHERE w_CJ_LCS_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_CJ_LCS_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances <> w_CJ_LCS_seances.nb_seances; + + + -- Séjours sans séances trouvées dans les actes + DROP TABLE IF EXISTS w_sejours_sans_seance; + CREATE TEMP TABLE w_sejours_sans_seance AS + SELECT p_sejours.no_sejour, date_entree, heure_entree + FROM activite[PX].p_sejours + LEFT JOIN w_mouvements_sejour ON p_sejours.no_sejour = w_mouvements_sejour.no_sejour and nb_seances > 0 + WHERE p_sejours.type_sejour = 5 AND w_mouvements_sejour.no_sejour IS NULL; + + UPDATE w_mouvements_sejour + SET nb_seances = 1 + FROM w_sejours_sans_seance + WHERE w_mouvements_sejour.no_sejour = w_sejours_sans_seance.no_sejour AND + w_mouvements_sejour.date = w_sejours_sans_seance.date_entree AND + w_mouvements_sejour.heure_debut = w_sejours_sans_seance.heure_entree; + + + -- Génération + DELETE FROM w_mouvements_sejour + WHERE + nb_entrees_directes = 0 AND + nb_sorties_directes = 0 AND + est_jour_hospitalisation <> '1' AND + nb_ambulatoires = 0 AND + nb_externes = 0 AND + nb_urgences = 0 AND + nb_seances = 0 AND + nb_entrees_mutation_service = 0 AND + nb_sorties_mutation_service = 0 AND + nb_entrees_mutation_etage = 0 AND + nb_sorties_mutation_etage = 0 AND + nb_entrees_mutation_activite = 0 AND + nb_sorties_mutation_activite = 0 AND + nb_entrees_mutation_unite_medicale = 0 AND + nb_sorties_mutation_unite_medicale = 0 AND + nb_jours_js_inclus = 0 AND + nb_jours_js_non_inclus = 0 AND + est_chambre_particuliere <> '1' AND + nb_chambres_particulieres = 0 AND + nb_bebes = 0; + + + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_5'); + + + INSERT INTO activite[PX].p_mouvements_sejour( + no_sejour, date, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, + nb_bebes, jour_semaine, is_weekend) + SELECT no_sejour, date,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, + nb_bebes, jour_semaine, is_weekend + FROM w_mouvements_sejour + ORDER BY no_sejour, CHGNVE_seq; + + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_5'); + + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie + AND (lieu_sortie_id IS DISTINCT FROM p_mouvements_sejour.lieu_id); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie AND p_mouvements_sejour.nb_sorties_directes = 1 + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL); + + + + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + WHERE type_sejour <> '5' AND + type_sejour <> '1' AND + no_sejour IN ( + SELECT no_sejour + FROM activite[PX].p_mouvements_sejour + WHERE nb_seances > 0); + + + UPDATE activite[PX].p_mouvements_sejour + SET nb_externes = 0, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + ( + nb_externes <> 0 OR + nb_ambulatoires <> 0 + ); + + + + + ]]> + + + + + + + + + + + + + 'A' + WHERE TYPE_REGLEMENT IN ('1', 'S'); + + ALTER TABLE w_OPERA_REG_complet ADD CONSTRAINT w_OPERA_REG_complet_pkey PRIMARY KEY(oid); + + -- Les affectations au tiers payant ont été resserrés dans la création du fichier + -- Affectation du reste selon le type de séjour + UPDATE w_OPERA_REG_complet SET + MONTANT_REGLEMENT_IPP_C = MONTANT_REGLEMENT_C, + DATE_REGLEMENT_IPP_C = DATE_REGLEMENT_C + WHERE MONTANT_REGLEMENT_C <> 0 AND + MONTANT_REGLEMENT_AMO_C = 0 AND + MONTANT_REGLEMENT_AMC_C = 0 AND + MONTANT_REGLEMENT_IPP_C = 0 AND + TIERS_REGLEMENT = NO_DOSSIER + ; + UPDATE w_OPERA_REG_complet SET + MONTANT_REGLEMENT_AMO_C = MONTANT_REGLEMENT_C, + DATE_REGLEMENT_AMC_C = DATE_REGLEMENT_C + WHERE MONTANT_REGLEMENT_C <> 0 AND + MONTANT_REGLEMENT_AMO_C = 0 AND + MONTANT_REGLEMENT_AMC_C = 0 AND + MONTANT_REGLEMENT_IPP_C = 0 AND + type_tiers_payant = '1' + ; + UPDATE w_OPERA_REG_complet SET + MONTANT_REGLEMENT_AMC_C = MONTANT_REGLEMENT_C, + DATE_REGLEMENT_AMC_C = DATE_REGLEMENT_C + WHERE MONTANT_REGLEMENT_C <> 0 AND + MONTANT_REGLEMENT_AMO_C = 0 AND + MONTANT_REGLEMENT_AMC_C = 0 AND + MONTANT_REGLEMENT_IPP_C = 0 AND + type_tiers_payant = '2' + ; + UPDATE w_OPERA_REG_complet SET + MONTANT_REGLEMENT_IPP_C = MONTANT_REGLEMENT_C, + DATE_REGLEMENT_IPP_C = DATE_REGLEMENT_C + WHERE MONTANT_REGLEMENT_C <> 0 AND + MONTANT_REGLEMENT_AMO_C = 0 AND + MONTANT_REGLEMENT_AMC_C = 0 AND + MONTANT_REGLEMENT_IPP_C = 0 AND + type_tiers_payant = '0' + ; + + UPDATE w_OPERA_REG_complet SET + MONTANT_REGLEMENT_IPP_H = MONTANT_REGLEMENT_H, + DATE_REGLEMENT_IPP_H = DATE_REGLEMENT_H + WHERE MONTANT_REGLEMENT_H <> 0 AND + MONTANT_REGLEMENT_AMO_H = 0 AND + MONTANT_REGLEMENT_AMC_H = 0 AND + MONTANT_REGLEMENT_IPP_H = 0 AND + TIERS_REGLEMENT = NO_DOSSIER + ; + UPDATE w_OPERA_REG_complet SET + MONTANT_REGLEMENT_AMO_H = MONTANT_REGLEMENT_H, + DATE_REGLEMENT_AMO_H = DATE_REGLEMENT_H + WHERE MONTANT_REGLEMENT_H <> 0 AND + MONTANT_REGLEMENT_AMO_H = 0 AND + MONTANT_REGLEMENT_AMC_H = 0 AND + MONTANT_REGLEMENT_IPP_H = 0 AND + type_tiers_payant = '1' + ; + UPDATE w_OPERA_REG_complet SET + MONTANT_REGLEMENT_AMC_H = MONTANT_REGLEMENT_H, + DATE_REGLEMENT_AMC_H = DATE_REGLEMENT_H + WHERE MONTANT_REGLEMENT_H <> 0 AND + MONTANT_REGLEMENT_AMO_H = 0 AND + MONTANT_REGLEMENT_AMC_H = 0 AND + MONTANT_REGLEMENT_IPP_H = 0 AND + type_tiers_payant = '2' + ; + UPDATE w_OPERA_REG_complet SET + MONTANT_REGLEMENT_IPP_H = MONTANT_REGLEMENT_H, + DATE_REGLEMENT_IPP_H = DATE_REGLEMENT_H + WHERE MONTANT_REGLEMENT_H <> 0 AND + MONTANT_REGLEMENT_AMO_H = 0 AND + MONTANT_REGLEMENT_AMC_H = 0 AND + MONTANT_REGLEMENT_IPP_H = 0 AND + type_tiers_payant = '0' + ; + + + + CREATE INDEX w_OPERA_REG_complet_i1 + ON w_OPERA_REG_complet + USING btree + (NO_FACTURE); + + CREATE INDEX w_OPERA_REG_complet_i2 + ON w_OPERA_REG_complet + USING btree + (NO_DOSSIER); + + UPDATE w_OPERA_REG_complet SET + MONTANT_REGLEMENT = MONTANT_REGLEMENT * COEFTF, + MONTANT_REGLEMENT_C = MONTANT_REGLEMENT_C * COEFTF, + MONTANT_REGLEMENT_AMO_C = MONTANT_REGLEMENT_AMO_C * COEFTF, + MONTANT_REGLEMENT_AMC_C = MONTANT_REGLEMENT_AMC_C * COEFTF, + MONTANT_REGLEMENT_IPP_C = MONTANT_REGLEMENT_IPP_C * COEFTF, + MONTANT_REGLEMENT_H = MONTANT_REGLEMENT_H * COEFTF, + MONTANT_REGLEMENT_AMO_H = MONTANT_REGLEMENT_AMO_H * COEFTF, + MONTANT_REGLEMENT_AMC_H = MONTANT_REGLEMENT_AMC_H * COEFTF, + MONTANT_REGLEMENT_IPP_H = MONTANT_REGLEMENT_IPP_H * COEFTF + WHERE MONTANT_REGLEMENT > 0 AND COEFTF < 0; + + + DROP TABLE IF EXISTS w_OPERA_REG_total; + CREATE TEMP TABLE w_OPERA_REG_total AS + SELECT + w_OPERA_FAC_complet.NO_DOSSIER, + w_OPERA_FAC_complet.NO_FACTURE, + + COALESCE(MAX(date(DATE_REGLEMENT)),'00010101') AS DATE_REGLEMENT_MAX, + + COALESCE(MAX(DATE_REGLEMENT_c),'00010101') AS DATE_REGLEMENT_MAX_C, + COALESCE(MAX(DATE_REGLEMENT_AMO_C),'00010101') AS DATE_REGLEMENT_MAX_AMO_C, + COALESCE(MAX(DATE_REGLEMENT_AMC_C),'00010101') AS DATE_REGLEMENT_MAX_AMC_C, + COALESCE(MAX(DATE_REGLEMENT_IPP_C),'00010101') AS DATE_REGLEMENT_MAX_IPP_C, + COALESCE(SUM(w_OPERA_REG_complet.MONTANT_REGLEMENT_c),0) AS MONTANT_REGLEMENT_C, + COALESCE(SUM(w_OPERA_REG_complet.MONTANT_REGLEMENT_AMO_C),0) AS MONTANT_REGLEMENT_AMO_C, + COALESCE(SUM(w_OPERA_REG_complet.MONTANT_REGLEMENT_AMC_C),0) AS MONTANT_REGLEMENT_AMC_C, + COALESCE(SUM(w_OPERA_REG_complet.MONTANT_REGLEMENT_IPP_C),0) AS MONTANT_REGLEMENT_IPP_C, + + COALESCE(MAX(DATE_REGLEMENT_h),'00010101') AS DATE_REGLEMENT_MAX_H, + COALESCE(MAX(DATE_REGLEMENT_AMO_H),'00010101') AS DATE_REGLEMENT_MAX_AMO_H, + COALESCE(MAX(DATE_REGLEMENT_AMC_H),'00010101') AS DATE_REGLEMENT_MAX_AMC_H, + COALESCE(MAX(DATE_REGLEMENT_IPP_H),'00010101') AS DATE_REGLEMENT_MAX_IPP_H, + COALESCE(SUM(w_OPERA_REG_complet.MONTANT_REGLEMENT_h),0) AS MONTANT_REGLEMENT_H, + COALESCE(SUM(w_OPERA_REG_complet.MONTANT_REGLEMENT_AMO_H),0) AS MONTANT_REGLEMENT_AMO_H, + COALESCE(SUM(w_OPERA_REG_complet.MONTANT_REGLEMENT_AMC_H),0) AS MONTANT_REGLEMENT_AMC_H, + COALESCE(SUM(w_OPERA_REG_complet.MONTANT_REGLEMENT_IPP_H),0) AS MONTANT_REGLEMENT_IPP_H + + FROM w_OPERA_FAC_complet + LEFT JOIN w_OPERA_REG_complet ON w_OPERA_FAC_complet.NO_FACTURE = w_OPERA_REG_complet.NO_FACTURE + GROUP BY 1,2; + + + ALTER TABLE w_OPERA_REG_total ADD CONSTRAINT w_OPERA_REG_total_pkey PRIMARY KEY(NO_FACTURE); + + UPDATE w_OPERA_FAC_complet SET + MONTANT_REGLEMENT_C = w_OPERA_REG_total.MONTANT_REGLEMENT_C, + MONTANT_REGLEMENT_H = w_OPERA_REG_total.MONTANT_REGLEMENT_H, + MONTANT_REGLEMENT_AMO_C = w_OPERA_REG_total.MONTANT_REGLEMENT_AMO_C, + MONTANT_REGLEMENT_AMO_H = w_OPERA_REG_total.MONTANT_REGLEMENT_AMO_H, + MONTANT_REGLEMENT_AMC_C = w_OPERA_REG_total.MONTANT_REGLEMENT_AMC_C, + MONTANT_REGLEMENT_AMC_H = w_OPERA_REG_total.MONTANT_REGLEMENT_AMC_H, + MONTANT_REGLEMENT_IPP_C = w_OPERA_REG_total.MONTANT_REGLEMENT_IPP_C, + MONTANT_REGLEMENT_IPP_H = w_OPERA_REG_total.MONTANT_REGLEMENT_IPP_H, + DATE_REGLEMENT_MAX = w_OPERA_REG_total.DATE_REGLEMENT_MAX, + DATE_REGLEMENT_MAX_C = w_OPERA_REG_total.DATE_REGLEMENT_MAX_C, + DATE_REGLEMENT_MAX_AMO_C = w_OPERA_REG_total.DATE_REGLEMENT_MAX_AMO_C, + DATE_REGLEMENT_MAX_AMC_C = w_OPERA_REG_total.DATE_REGLEMENT_MAX_AMC_C, + DATE_REGLEMENT_MAX_IPP_C = w_OPERA_REG_total.DATE_REGLEMENT_MAX_IPP_C, + DATE_REGLEMENT_MAX_H = w_OPERA_REG_total.DATE_REGLEMENT_MAX_H, + DATE_REGLEMENT_MAX_AMO_H = w_OPERA_REG_total.DATE_REGLEMENT_MAX_AMO_H, + DATE_REGLEMENT_MAX_AMC_H = w_OPERA_REG_total.DATE_REGLEMENT_MAX_AMC_H, + DATE_REGLEMENT_MAX_IPP_H = w_OPERA_REG_total.DATE_REGLEMENT_MAX_IPP_H + FROM w_OPERA_REG_total + WHERE w_OPERA_FAC_complet.NO_FACTURE = w_OPERA_REG_total.NO_FACTURE; + + + + + + + + + + DROP TABLE IF EXISTS w_OPERA_REG_total; + CREATE TEMP TABLE w_OPERA_REG_total AS + SELECT + w_OPERA_FAC_complet.NO_DOSSIER, + w_OPERA_FAC_complet.NO_FACTURE, + + COALESCE(MAX(date(DATE_REGLEMENT)),'00010101') AS DATE_REGLEMENT_MAX, + + COALESCE(MAX(DATE_REGLEMENT_c),'00010101') AS DATE_REGLEMENT_MAX_C, + COALESCE(MAX(DATE_REGLEMENT_AMO_C),'00010101') AS DATE_REGLEMENT_MAX_AMO_C, + COALESCE(MAX(DATE_REGLEMENT_AMC_C),'00010101') AS DATE_REGLEMENT_MAX_AMC_C, + COALESCE(MAX(DATE_REGLEMENT_IPP_C),'00010101') AS DATE_REGLEMENT_MAX_IPP_C, + COALESCE(SUM(w_OPERA_REG_complet.MONTANT_REGLEMENT_c),0) AS MONTANT_REGLEMENT_C, + COALESCE(SUM(w_OPERA_REG_complet.MONTANT_REGLEMENT_AMO_C),0) AS MONTANT_REGLEMENT_AMO_C, + COALESCE(SUM(w_OPERA_REG_complet.MONTANT_REGLEMENT_AMC_C),0) AS MONTANT_REGLEMENT_AMC_C, + COALESCE(SUM(w_OPERA_REG_complet.MONTANT_REGLEMENT_IPP_C),0) AS MONTANT_REGLEMENT_IPP_C, + + COALESCE(MAX(DATE_REGLEMENT_h),'00010101') AS DATE_REGLEMENT_MAX_H, + COALESCE(MAX(DATE_REGLEMENT_AMO_H),'00010101') AS DATE_REGLEMENT_MAX_AMO_H, + COALESCE(MAX(DATE_REGLEMENT_AMC_H),'00010101') AS DATE_REGLEMENT_MAX_AMC_H, + COALESCE(MAX(DATE_REGLEMENT_IPP_H),'00010101') AS DATE_REGLEMENT_MAX_IPP_H, + COALESCE(SUM(w_OPERA_REG_complet.MONTANT_REGLEMENT_h),0) AS MONTANT_REGLEMENT_H, + COALESCE(SUM(w_OPERA_REG_complet.MONTANT_REGLEMENT_AMO_H),0) AS MONTANT_REGLEMENT_AMO_H, + COALESCE(SUM(w_OPERA_REG_complet.MONTANT_REGLEMENT_AMC_H),0) AS MONTANT_REGLEMENT_AMC_H, + COALESCE(SUM(w_OPERA_REG_complet.MONTANT_REGLEMENT_IPP_H),0) AS MONTANT_REGLEMENT_IPP_H + + FROM w_OPERA_FAC_complet + LEFT JOIN w_OPERA_REG_complet ON w_OPERA_FAC_complet.NO_FACTURE = w_OPERA_REG_complet.NO_FACTURE + GROUP BY 1,2; + + UPDATE w_OPERA_FAC_complet SET + MONTANT_REGLEMENT_C = w_OPERA_REG_total.MONTANT_REGLEMENT_C, + MONTANT_REGLEMENT_H = w_OPERA_REG_total.MONTANT_REGLEMENT_H, + MONTANT_REGLEMENT_AMO_C = w_OPERA_REG_total.MONTANT_REGLEMENT_AMO_C, + MONTANT_REGLEMENT_AMO_H = w_OPERA_REG_total.MONTANT_REGLEMENT_AMO_H, + MONTANT_REGLEMENT_AMC_C = w_OPERA_REG_total.MONTANT_REGLEMENT_AMC_C, + MONTANT_REGLEMENT_AMC_H = w_OPERA_REG_total.MONTANT_REGLEMENT_AMC_H, + MONTANT_REGLEMENT_IPP_C = w_OPERA_REG_total.MONTANT_REGLEMENT_IPP_C, + MONTANT_REGLEMENT_IPP_H = w_OPERA_REG_total.MONTANT_REGLEMENT_IPP_H, + DATE_REGLEMENT_MAX = w_OPERA_REG_total.DATE_REGLEMENT_MAX, + DATE_REGLEMENT_MAX_C = w_OPERA_REG_total.DATE_REGLEMENT_MAX_C, + DATE_REGLEMENT_MAX_AMO_C = w_OPERA_REG_total.DATE_REGLEMENT_MAX_AMO_C, + DATE_REGLEMENT_MAX_AMC_C = w_OPERA_REG_total.DATE_REGLEMENT_MAX_AMC_C, + DATE_REGLEMENT_MAX_IPP_C = w_OPERA_REG_total.DATE_REGLEMENT_MAX_IPP_C, + DATE_REGLEMENT_MAX_H = w_OPERA_REG_total.DATE_REGLEMENT_MAX_H, + DATE_REGLEMENT_MAX_AMO_H = w_OPERA_REG_total.DATE_REGLEMENT_MAX_AMO_H, + DATE_REGLEMENT_MAX_AMC_H = w_OPERA_REG_total.DATE_REGLEMENT_MAX_AMC_H, + DATE_REGLEMENT_MAX_IPP_H = w_OPERA_REG_total.DATE_REGLEMENT_MAX_IPP_H + FROM w_OPERA_REG_total + WHERE w_OPERA_FAC_complet.NO_FACTURE = w_OPERA_REG_total.NO_FACTURE; + + + + + + + UPDATE w_OPERA_FAC_complet SET + PERIODE_ANNEE_ACT = w_OPERA_ACT_annee.PERIODE_ANNEE, + NO_FACTURE_ACT = w_OPERA_ACT_annee.NO_FACTURE + FROM w_OPERA_ACT_annee + WHERE w_OPERA_ACT_annee.NO_DOSSIER = w_OPERA_FAC_complet.NO_DOSSIER AND + PERIODE_ANNEE_ACT IS NULL AND + w_OPERA_FAC_complet.NO_FACTURE = w_OPERA_FAC_complet.NO_FACTURE_REFERENCE AND + w_OPERA_FAC_complet.MONTANT_TOTAL_FACTURE <> 0; + + + + DROP SEQUENCE IF EXISTS w_RSF_3_sequence; + CREATE TEMP SEQUENCE w_RSF_3_sequence; + + DROP TABLE IF EXISTS w_RSF_3; + CREATE TEMP TABLE w_RSF_3 AS + SELECT + nextval('w_RSF_3_sequence'::regclass) AS oid, + NO_DOSSIER, + FACTURE, + base.cti_to_date(D_DEBUT) AS D_DEBUT, + base.cti_to_date(D_FIN) AS D_FIN, + CASE WHEN ACTE LIKE 'FJ%' THEN 'FJ' ELSE ACTE END AS ACTE, + to_number('0' || QTE, '0000000000') AS QTE, + round(COEFF::numeric,2) AS COEFF, + PEC_FJ, + MODUL, + PU, + BASE, + to_number('0' || TX, '0000000000') AS TX, + round(DEPENSE::numeric,2) AS DEPENSE, + round(MT_CAISSE::numeric,2) AS MT_CAISSE, + round(MROC::numeric,2) AS MROC, + NULL::bigint AS ACT_sequence + FROM prod_cegi.RSF_3 + JOIN w_OPERA_FAC_complet ON w_OPERA_FAC_complet.NO_FACTURE = RSF_3.FACTURE; + + ALTER TABLE w_RSF_3 ADD CONSTRAINT w_RSF_3_pkey PRIMARY KEY(oid); + + + + CREATE INDEX w_RSF_3_i1 + ON w_RSF_3 + USING btree + (FACTURE); + + CREATE INDEX w_RSF_3_i2 + ON w_RSF_3 + USING btree + (NO_DOSSIER); + + UPDATE w_RSF_3 + SET DEPENSE = MROC + MT_CAISSE + WHERE MROC + MT_CAISSE > DEPENSE; + + + + + DROP TABLE IF EXISTS w_RUBRIQUES_3; + CREATE TEMP TABLE w_RUBRIQUES_3 AS + SELECT CODE_PRESTA AS CODE_RUBRIQUE, + (MAX(array[to_char(count,'FM0000000000'),ACTE]))[2] AS CODE_PRESTA + FROM ( + SELECT CODE_PRESTA, ACTE, count(*) AS count + FROM prod_cegiloghos.OPERA_ACT + JOIN w_OPERA_FAC_complet ON OPERA_ACT.NO_FACTURE = w_OPERA_FAC_complet.NO_FACTURE AND OPERA_ACT.PERIODE_ANNEE = w_OPERA_FAC_complet.PERIODE_ANNEE_ACT + JOIN w_RSF_3 ON OPERA_ACT.NO_FACTURE = w_RSF_3.facture AND OPERA_ACT.MONTANT_ACTE = w_RSF_3.DEPENSE AND + TYPE_PRESTA <> 'H' AND + CODE_PRESTA NOT IN ('GHS', 'FJ', 'PAT') AND + ACTE NOT IN ('GHS', 'FJ', 'PAT') AND + ACTE NOT LIKE 'FJ%' AND + CODE_PRESTA NOT LIKE 'FJ%' + GROUP BY 1,2) subview + GROUP BY 1; + + ALTER TABLE w_RUBRIQUES_3 ADD CONSTRAINT w_RUBRIQUES_3_pkey PRIMARY KEY(CODE_RUBRIQUE); + + + DROP SEQUENCE IF EXISTS w_RSF_4_sequence; + CREATE TEMP SEQUENCE w_RSF_4_sequence; + + DROP TABLE IF EXISTS w_RSF_4; + CREATE TEMP TABLE w_RSF_4 AS + SELECT + nextval('w_RSF_4_sequence'::regclass) AS oid, + NO_DOSSIER, + RSF_4.FACTURE, + base.cti_to_date(D_SOINS) AS D_SOINS, + ACTE, + to_number('0' || QTE, '0000000000') AS QTE, + round(COEFF::numeric,2) AS COEFF, + round(PU::numeric,2) AS PU, + round(BASE::numeric,2) AS BASE, + to_number('0' || TX, '0000000000') AS TX, + round(MT_HONOR::numeric,2) AS MT_HONOR, + round(MT_CAISSE::numeric,2) AS MT_CAISSE, + round(MROC::numeric,2) AS MROC, + DEPASS, + COALESCE(RSF_4M.CODE_ACTE,'') AS CODE_CCAM, + COALESCE(RSF_4M.EXTDOC,'') AS EXTDOC, + COALESCE(RSF_4M.ACTV,'') AS ACTV, + COALESCE(RSF_4M.PHS,'') AS PHS, + COALESCE(RSF_4M.MOD1,'') AS MOD1, + COALESCE(RSF_4M.MOD2,'') AS MOD2, + COALESCE(RSF_4M.MOD3,'') AS MOD3, + COALESCE(RSF_4M.MOD4,'') AS MOD4, + COALESCE(RSF_4M.ANP,'') AS ANP, + COALESCE(RSF_4M.RMBEX,'') AS RMBEX + FROM prod_cegi.RSF_4 + JOIN w_OPERA_FAC_complet ON w_OPERA_FAC_complet.NO_FACTURE = RSF_4.FACTURE + LEFT JOIN prod_cegi.RSF_4M ON RSF_4.FACTURE = RSF_4M.FACTURE AND RSF_4.I = RSF_4M.I; + + + CREATE INDEX w_RSF_4_i1 + ON w_RSF_4 + USING btree + (FACTURE); + + CREATE INDEX w_RSF_4_i2 + ON w_RSF_4 + USING btree + (NO_DOSSIER); + + + + + + + DROP TABLE IF EXISTS w_RUBRIQUES_4; + CREATE TEMP TABLE w_RUBRIQUES_4 AS + SELECT CODE_PRESTA AS CODE_RUBRIQUE, + (MAX(array[to_char(count,'FM0000000000'),ACTE]))[2] AS CODE_PRESTA + FROM ( + SELECT trim(substr(CODE_PRESTA,1,4)) AS CODE_PRESTA, trim(substr(ACTE,1,4)) AS ACTE, count(*) AS count + FROM prod_cegiloghos.OPERA_ACT + JOIN w_OPERA_FAC_complet ON OPERA_ACT.NO_FACTURE = w_OPERA_FAC_complet.NO_FACTURE AND OPERA_ACT.PERIODE_ANNEE = w_OPERA_FAC_complet.PERIODE_ANNEE_ACT + JOIN w_RSF_4 ON OPERA_ACT.NO_FACTURE = w_RSF_4.facture AND OPERA_ACT.MONTANT_ACTE = w_RSF_4.MT_HONOR + AND (TYPE_PRESTA = 'H' OR CODE_PRESTA LIKE 'FSD%' ) + GROUP BY 1,2) subview + GROUP BY 1; + + + INSERT INTO w_RUBRIQUES_4 + SELECT + substr(CODE_RUBRIQUE || ' ',1,4) || 'F', + substr(CODE_PRESTA || ' ',1,4) || 'F' + FROM w_RUBRIQUES_4 + GROUP BY 1,2 + UNION + SELECT + substr(CODE_RUBRIQUE || ' ',1,4) || 'N', + substr(CODE_PRESTA || ' ',1,4) || 'N' + FROM w_RUBRIQUES_4 + GROUP BY 1,2; + + ALTER TABLE w_RUBRIQUES_4 ADD CONSTRAINT w_RUBRIQUES_4_pkey PRIMARY KEY(CODE_RUBRIQUE); + + + + + DROP TABLE IF EXISTS w_PPRS; + CREATE TEMP TABLE W_PPRS AS + SELECT OPERA_ACT.CODE_SERVICE_DISCIPLINE, OPERA_ACT.CODE_PRESTA , + MAX(COALESCE(OPERA_PPRS.COMPTE_COMPTABLE, OPERA_PPRS_D.COMPTE_COMPTABLE, '')) AS COMPTE_COMPTABLE, + 0::bigint AS compte_produit_id + from prod_cegiloghos.OPERA_ACT + LEFT JOIN prod_cegiloghos.OPERA_PSDISC ON OPERA_ACT.CODE_SERVICE_DISCIPLINE = OPERA_PSDISC.CODE_SERVICE_DISCIPLINE + LEFT JOIN prod_cegiloghos.OPERA_PPRS ON + OPERA_PSDISC.CODE_SERVICE_TARIFAIRE = OPERA_PPRS.CODE_SERVICE_TARIFAIRE AND + OPERA_ACT.CODE_PRESTA = OPERA_PPRS.CODE_PRESTA + LEFT JOIN prod_cegiloghos.OPERA_PPRS OPERA_PPRS_D ON + OPERA_ACT.CODE_PRESTA = OPERA_PPRS_D.CODE_PRESTA AND + OPERA_PPRS_D.CODE_SERVICE_TARIFAIRE = '' + GROUP BY 1,2 + ORDER BY 1,2; + + UPDATE w_PPRS + SET compte_produit_id = t_compte.oid + FROM activite[PX].t_compte + WHERE t_compte.code = COMPTE_COMPTABLE AND + COMPTE_COMPTABLE <> '' + ; + + + DROP SEQUENCE IF EXISTS w_OPERA_ACT_sequence; + CREATE TEMP SEQUENCE w_OPERA_ACT_sequence; + + DROP TABLE IF EXISTS w_OPERA_ACT_complet CASCADE; + CREATE TEMP TABLE w_OPERA_ACT_complet AS + SELECT + nextval('w_OPERA_ACT_sequence'::regclass) AS oid, + DATE_ACTE_DEBUT, + DATE_ACTE_FIN, + HEURE_ACTE_DEBUT, + HEURE_ACTE_FIN, + w_OPERA_FAC_complet.NO_DOSSIER, + w_OPERA_FAC_complet.NO_FACTURE, + OPERA_ACT.CODE_SERVICE_DISCIPLINE, + TYPE_PRESTA, + OPERA_ACT.CODE_PRESTA AS CODE_RUBRIQUE, + COALESCE(w_RUBRIQUES_3.CODE_PRESTA, w_RUBRIQUES_4.CODE_PRESTA, OPERA_ACT.CODE_PRESTA) AS CODE_PRESTA, + w_PPRS.compte_produit_id, + CODE_STAT3, + OPERA_ACT.CODE_GHS, + MT_ACTE, + DMT_ACTE, + CASE WHEN OPERA_ACT.MONTANT_ACTE < 0 AND OPERA_ACT.QTE_ACTE > 0 THEN (0 - OPERA_ACT.QTE_ACTE) * CASE WHEN TYPE_PRESTA IN ('S', 's', 'P') THEN COEFF_ACTE ELSE 1 END ELSE OPERA_ACT.QTE_ACTE* CASE WHEN TYPE_PRESTA IN ('S', 's', 'P') THEN COEFF_ACTE ELSE 1 END END AS QTE_ACTE, + CASE WHEN TYPE_PRESTA IN ('S', 's', 'P') THEN 1 ELSE COEFF_ACTE END AS COEFF_ACTE, + 0::numeric AS ACTE_PU, + OPERA_ACT.PRIX_UNITAIRE, + OPERA_ACT.MONTANT_ACTE, + CODE_LPP, + CODE_UCD, + CASE WHEN TYPE_PRESTA IN ('s','H') THEN CODE_CCAM ELSE '' END AS CODE_CCAM, + CODE_ACTIVITE_CCAM, + CODE_PHASE_CCAM, + CODE_MODIFICATEUR_1_CCAM, + CODE_MODIFICATEUR_2_CCAM, + CODE_MODIFICATEUR_3_CCAM, + CODE_MODIFICATEUR_4_CCAM, + CODE_ANP_CCAM, + ''::text AS CODE_EXTDOC_CCAM, + CODE_MED_PRESCRIPTEUR, + CASE WHEN TYPE_PRESTA IN ('s','H') THEN CODE_MED_EXECUTANT ELSE '' END AS CODE_MED_EXECUTANT, + OPERA_ACT.MONTANT_DP, + '0'::text AS DEP_OK, + 0::int AS act_OK, + NULL::bigint AS RSF_sequence, + TAUX_AMO, + TAUX_AMC, + TAUX_IPP, + CASE WHEN TYPE_PRESTA NOT IN ('s','H') THEN MONTANT_AMO ELSE 0 END AS MONTANT_ACTE_AMO_C, + CASE WHEN TYPE_PRESTA IN ('s','H') THEN MONTANT_AMO ELSE 0 END AS MONTANT_ACTE_AMO_H, + CASE WHEN TYPE_PRESTA NOT IN ('s','H') THEN MONTANT_AMC ELSE 0 END AS MONTANT_ACTE_AMC_C, + CASE WHEN TYPE_PRESTA IN ('s','H') THEN MONTANT_AMC ELSE 0 END AS MONTANT_ACTE_AMC_H, + CASE WHEN TYPE_PRESTA NOT IN ('s','H') THEN MONTANT_IPP ELSE 0 END AS MONTANT_ACTE_IPP_C, + CASE WHEN TYPE_PRESTA IN ('s','H') THEN MONTANT_IPP ELSE 0 END AS MONTANT_ACTE_IPP_H, + CASE WHEN TYPE_PRESTA NOT IN ('H') THEN MONTANT_AMO ELSE 0 END AS CPT_MONTANT_ACTE_AMO_C, + CASE WHEN TYPE_PRESTA IN ('H') THEN MONTANT_AMO ELSE 0 END AS CPT_MONTANT_ACTE_AMO_H, + CASE WHEN TYPE_PRESTA NOT IN ('H') THEN MONTANT_AMC ELSE 0 END AS CPT_MONTANT_ACTE_AMC_C, + CASE WHEN TYPE_PRESTA IN ('H') THEN MONTANT_AMC ELSE 0 END AS CPT_MONTANT_ACTE_AMC_H, + CASE WHEN TYPE_PRESTA NOT IN ('H') THEN MONTANT_IPP ELSE 0 END AS CPT_MONTANT_ACTE_IPP_C, + CASE WHEN TYPE_PRESTA IN ('H') THEN MONTANT_IPP ELSE 0 END AS CPT_MONTANT_ACTE_IPP_H, + NULL::bigint AS oid_PAT, + 0::numeric AS MONTANT_ACTE_PAT, + NULL::bigint AS oid_FJ, + 0::numeric AS MONTANT_ACTE_FJ, + NULL::bigint AS oid_ACTP, + 0::numeric AS MONTANT_ACTE_ACTP, + 0::numeric AS MONTANT_DP_ACTP, + ( + OPERA_ACT.CODE_PRESTA::text || '|'::text || + OPERA_ACT.CODE_LPP::text || '|'::text || + OPERA_ACT.CODE_UCD::text || '|'::text || + COALESCE(w_RUBRIQUES_3.CODE_PRESTA, w_RUBRIQUES_4.CODE_PRESTA, OPERA_ACT.CODE_PRESTA) || '|'::text || + CASE WHEN TYPE_PRESTA IN ('s','H') THEN CODE_MED_EXECUTANT ELSE '' END || '|'::text || + CASE WHEN TYPE_PRESTA IN ('s','H') THEN CODE_CCAM ELSE ''::text END + ) AS key + FROM w_OPERA_FAC_complet + JOIN prod_cegiloghos.OPERA_ACT ON OPERA_ACT.NO_FACTURE = w_OPERA_FAC_complet.NO_FACTURE_ACT AND OPERA_ACT.PERIODE_ANNEE = w_OPERA_FAC_complet.PERIODE_ANNEE_ACT + LEFT JOIN w_RUBRIQUES_3 ON OPERA_ACT.CODE_PRESTA = w_RUBRIQUES_3.CODE_RUBRIQUE + LEFT JOIN w_RUBRIQUES_4 ON OPERA_ACT.CODE_PRESTA = w_RUBRIQUES_4.CODE_RUBRIQUE + LEFT JOIN w_PPRS ON + OPERA_ACT.CODE_SERVICE_DISCIPLINE = w_PPRS.CODE_SERVICE_DISCIPLINE AND + OPERA_ACT.CODE_PRESTA = w_PPRS.CODE_PRESTA + WHERE OPERA_ACT.NO_FACTURE <> '000000000'; + + UPDATE w_OPERA_ACT_complet + SET MONTANT_DP = MONTANT_DP * -1 + WHERE (CPT_MONTANT_ACTE_AMO_H < 0 OR CPT_MONTANT_ACTE_AMC_H < 0 OR CPT_MONTANT_ACTE_IPP_H < 0) AND + MONTANT_DP > 0; + + + UPDATE w_OPERA_ACT_complet SET + DEP_OK = '1', + CPT_MONTANT_ACTE_AMC_H = + CASE + WHEN MONTANT_DP = CPT_MONTANT_ACTE_IPP_H + CPT_MONTANT_ACTE_AMC_H THEN 0 + WHEN NOT MONTANT_DP <= CPT_MONTANT_ACTE_IPP_H AND MONTANT_DP <= CPT_MONTANT_ACTE_AMC_H THEN CPT_MONTANT_ACTE_AMC_H - MONTANT_DP + ELSE CPT_MONTANT_ACTE_AMC_H END, + CPT_MONTANT_ACTE_IPP_H = + CASE + WHEN MONTANT_DP = CPT_MONTANT_ACTE_IPP_H + CPT_MONTANT_ACTE_AMC_H THEN 0 + WHEN MONTANT_DP <= CPT_MONTANT_ACTE_IPP_H THEN CPT_MONTANT_ACTE_IPP_H - MONTANT_DP + ELSE CPT_MONTANT_ACTE_IPP_H END + FROM activite.t_divers + WHERE t_divers.code = 'CEGICPTDEP' AND + t_divers.valeur = '0' AND + MONTANT_DP <> 0 AND (CPT_MONTANT_ACTE_AMC_H > 0 OR CPT_MONTANT_ACTE_IPP_H > 0) AND + MONTANT_DP <= CPT_MONTANT_ACTE_AMC_H + CPT_MONTANT_ACTE_IPP_H ; + + + UPDATE w_OPERA_ACT_complet SET + DEP_OK = '1', + CPT_MONTANT_ACTE_AMC_H = + CASE + WHEN MONTANT_DP = CPT_MONTANT_ACTE_IPP_H + CPT_MONTANT_ACTE_AMC_H THEN 0 + WHEN NOT MONTANT_DP >= CPT_MONTANT_ACTE_IPP_H AND MONTANT_DP >= CPT_MONTANT_ACTE_AMC_H THEN CPT_MONTANT_ACTE_AMC_H - MONTANT_DP + ELSE CPT_MONTANT_ACTE_AMC_H END, + CPT_MONTANT_ACTE_IPP_H = + CASE + WHEN MONTANT_DP = CPT_MONTANT_ACTE_IPP_H + CPT_MONTANT_ACTE_AMC_H THEN 0 + WHEN MONTANT_DP >= CPT_MONTANT_ACTE_IPP_H THEN CPT_MONTANT_ACTE_IPP_H - MONTANT_DP + ELSE CPT_MONTANT_ACTE_IPP_H END + FROM activite.t_divers + WHERE t_divers.code = 'CEGICPTDEP' AND + t_divers.valeur = '0' AND + MONTANT_DP <> 0 AND (CPT_MONTANT_ACTE_AMC_H < 0 OR CPT_MONTANT_ACTE_IPP_H < 0) AND + MONTANT_DP >= CPT_MONTANT_ACTE_AMC_H + CPT_MONTANT_ACTE_IPP_H ; + + CREATE INDEX w_OPERA_ACT_complet_i1 + ON w_OPERA_ACT_complet + USING btree + (NO_FACTURE); + + CREATE INDEX w_OPERA_ACT_complet_i2 + ON w_OPERA_ACT_complet + USING btree + (NO_DOSSIER); + + + + DROP TABLE IF EXISTS w_OPERA_ACT_total; + CREATE TEMP TABLE w_OPERA_ACT_total AS + SELECT + NO_FACTURE, + MAX(COALESCE(DATE_ACTE_FIN,DATE_ACTE_DEBUT)) AS DATE_ACTE_FIN, + MAX(CODE_GHS) AS CODE_GHS, + SUM(MONTANT_ACTE_AMO_C) AS MONTANT_ACTE_AMO_C, + SUM(MONTANT_ACTE_AMO_H) AS MONTANT_ACTE_AMO_H, + SUM(MONTANT_ACTE_AMC_C) AS MONTANT_ACTE_AMC_C, + SUM(MONTANT_ACTE_AMC_H) AS MONTANT_ACTE_AMC_H, + SUM(MONTANT_ACTE_IPP_C) AS MONTANT_ACTE_IPP_C, + SUM(MONTANT_ACTE_IPP_H) AS MONTANT_ACTE_IPP_H, + SUM(CPT_MONTANT_ACTE_AMO_C) AS CPT_MONTANT_ACTE_AMO_C, + SUM(CPT_MONTANT_ACTE_AMO_H) AS CPT_MONTANT_ACTE_AMO_H, + SUM(CPT_MONTANT_ACTE_AMC_C) AS CPT_MONTANT_ACTE_AMC_C, + SUM(CPT_MONTANT_ACTE_AMC_H) AS CPT_MONTANT_ACTE_AMC_H, + SUM(CPT_MONTANT_ACTE_IPP_C) AS CPT_MONTANT_ACTE_IPP_C, + SUM(CPT_MONTANT_ACTE_IPP_H) AS CPT_MONTANT_ACTE_IPP_H + FROM w_OPERA_ACT_complet + GROUP BY 1; + + + + INSERT INTO w_OPERA_ACT_complet + SELECT + nextval('w_OPERA_ACT_sequence'::regclass) AS oid, + DATE_FACT_DEBUT AS DATE_ACTE_DEBUT, + w_OPERA_FAC_complet.DATE_FACT_FIN AS DATE_ACTE_FIN, + 0 AS HEURE_ACTE_DEBUT, + 0 AS HEURE_ACTE_FIN, + w_OPERA_FAC_complet.NO_DOSSIER, + w_OPERA_FAC_complet.NO_FACTURE, + ''::text AS CODE_SERVICE_DISCIPLINE, + 'S'::text AS TYPE_PRESTA, + '*ECARTCTI'::text AS CODE_RUBRIQUE, + '*ECARTCTI'::text AS CODE_PRESTA, + 0::bigint AS compte_produit_id, + ''::text AS CODE_STAT3, + ''::text AS CODE_GHS, + ''::text AS MT_ACTE, + ''::text AS DMT_ACTE, + 0::numeric AS QTE_ACTE, + 0::numeric AS COEFF_ACTE, + 0::numeric AS ACTE_PU, + 0::numeric AS PRIX_UNITAIRE, + (COALESCE(MONTANT_FACT_AMO_C,0) - COALESCE(MONTANT_ACTE_AMO_C,0)) + + (COALESCE(MONTANT_FACT_AMC_C,0) - COALESCE(MONTANT_ACTE_AMC_C,0)) + + (COALESCE(MONTANT_FACT_IPP_C,0) - COALESCE(MONTANT_ACTE_IPP_C,0)) AS MONTANT_ACTE, + ''::text AS CODE_LPP, + ''::text AS CODE_UCD, + ''::text AS CODE_CCAM, + ''::text AS CODE_ACTIVITE_CCAM, + ''::text AS CODE_PHASE_CCAM, + ''::text AS CODE_MODIFICATEUR_1_CCAM, + ''::text AS CODE_MODIFICATEUR_2_CCAM, + ''::text AS CODE_MODIFICATEUR_3_CCAM, + ''::text AS CODE_MODIFICATEUR_4_CCAM, + ''::text AS CODE_ANP_CCAM, + ''::text AS CODE_EXTDOC_CCAM, + ''::text AS CODE_MED_PRESCRIPTEUR, + ''::text AS CODE_MED_EXECUTANT, + 0::numeric AS MONTANT_DP, + '0'::text AS DEP_OK, + 1::int AS act_OK, + NULL::bigint AS RSF_sequence, + 0::numeric AS TAUX_AMO, + 0::numeric AS TAUX_AMC, + 0::numeric AS TAUX_IPP, + (COALESCE(MONTANT_FACT_AMO_C,0) - COALESCE(MONTANT_ACTE_AMO_C,0)) AS MONTANT_ACTE_AMO_C, + 0 AS MONTANT_ACTE_AMO_H, + (COALESCE(MONTANT_FACT_AMC_C,0) - COALESCE(MONTANT_ACTE_AMC_C,0)) AS MONTANT_ACTE_AMC_C, + 0 AS MONTANT_ACTE_AMC_H, + (COALESCE(MONTANT_FACT_IPP_C,0) - COALESCE(MONTANT_ACTE_IPP_C,0)) AS MONTANT_ACTE_IPP_C, + 0 AS MONTANT_ACTE_IPP_H, + (COALESCE(MONTANT_FACT_AMO_C,0) - COALESCE(MONTANT_ACTE_AMO_C,0)) AS CPT_MONTANT_ACTE_AMO_C, + 0 AS CPT_MONTANT_ACTE_AMO_H, + (COALESCE(MONTANT_FACT_AMC_C,0) - COALESCE(MONTANT_ACTE_AMC_C,0)) AS CPT_MONTANT_ACTE_AMC_C, + 0 AS CPT_MONTANT_ACTE_AMC_H, + (COALESCE(MONTANT_FACT_IPP_C,0) - COALESCE(MONTANT_ACTE_IPP_C,0)) AS CPT_MONTANT_ACTE_IPP_C, + 0 AS CPT_MONTANT_ACTE_IPP_H, + NULL::bigint AS oid_PAT, + NULL::numeric AS MONTANT_ACTE_PAT, + NULL::bigint AS oid_FJ, + NULL::numeric AS MONTANT_ACTE_FJ, + NULL::bigint AS oid_ACTP, + NULL::numeric AS MONTANT_ACTE_ACTP, + NULL::numeric AS MONTANT_DP_ACTP, + ( + '*ECARTCTI' || '|' || + '*ECARTCTI' || '|' || + '' || '|' || + '' + ) AS key + FROM w_OPERA_FAC_complet + LEFT JOIN w_OPERA_ACT_total ON w_OPERA_FAC_complet.NO_FACTURE = w_OPERA_ACT_total.NO_FACTURE + WHERE (COALESCE(MONTANT_FACT_AMO_C,0) - COALESCE(MONTANT_ACTE_AMO_C,0)) <> 0 OR + (COALESCE(MONTANT_FACT_AMC_C,0) - COALESCE(MONTANT_ACTE_AMC_C,0)) <> 0 OR + (COALESCE(MONTANT_FACT_IPP_C,0) - COALESCE(MONTANT_ACTE_IPP_C,0)) <> 0; + + + + + -- Ajout des écarts HON + INSERT INTO w_OPERA_ACT_complet + SELECT + nextval('w_OPERA_ACT_sequence'::regclass) AS oid, + DATE_FACT_DEBUT AS DATE_ACTE_DEBUT, + w_OPERA_FAC_complet.DATE_FACT_FIN AS DATE_ACTE_FIN, + 0 AS HEURE_ACTE_DEBUT, + 0 AS HEURE_ACTE_FIN, + w_OPERA_FAC_complet.NO_DOSSIER, + w_OPERA_FAC_complet.NO_FACTURE, + ''::text AS CODE_SERVICE_DISCIPLINE, + 'H'::text AS TYPE_PRESTA, + '*ECARTCTI'::text AS CODE_RUBRIQUE, + '*ECARTCTI'::text AS CODE_PRESTA, + 0::bigint AS compte_produit_id, + ''::text AS CODE_STAT3, + ''::text AS CODE_GHS, + ''::text AS MT_ACTE, + ''::text AS DMT_ACTE, + 0::numeric AS QTE_ACTE, + 0::numeric AS COEFF_ACTE, + 0::numeric AS ACTE_PU, + 0::numeric AS PRIX_UNITAIRE, + (COALESCE(MONTANT_FACT_AMO_H,0) - COALESCE(MONTANT_ACTE_AMO_H,0)) + + (COALESCE(MONTANT_FACT_AMC_H,0) - COALESCE(MONTANT_ACTE_AMC_H,0)) + + (COALESCE(MONTANT_FACT_IPP_H,0) - COALESCE(MONTANT_ACTE_IPP_H,0)) AS MONTANT_ACTE, + ''::text AS CODE_LPP, + ''::text AS CODE_UCD, + ''::text AS CODE_CCAM, + ''::text AS CODE_ACTIVITE_CCAM, + ''::text AS CODE_PHASE_CCAM, + ''::text AS CODE_MODIFICATEUR_1_CCAM, + ''::text AS CODE_MODIFICATEUR_2_CCAM, + ''::text AS CODE_MODIFICATEUR_3_CCAM, + ''::text AS CODE_MODIFICATEUR_4_CCAM, + ''::text AS CODE_ANP_CCAM, + ''::text AS CODE_EXTDOC_CCAM, + ''::text AS CODE_MED_PRESCRIPTEUR, + ''::text AS CODE_MED_EXECUTANT, + 0::numeric AS MONTANT_DP, + '0'::text AS DEP_OK, + 1::int AS act_OK, + NULL::bigint AS RSF_sequence, + 0::numeric AS TAUX_AMO, + 0::numeric AS TAUX_AMC, + 0::numeric AS TAUX_IPP, + 0::numeric AS MONTANT_ACTE_AMO_C, + (COALESCE(MONTANT_FACT_AMO_H,0) - COALESCE(MONTANT_ACTE_AMO_H,0)) AS MONTANT_ACTE_AMO_H, + 0::numeric AS MONTANT_ACTE_AMC_C, + (COALESCE(MONTANT_FACT_AMC_H,0) - COALESCE(MONTANT_ACTE_AMC_H,0)) AS MONTANT_ACTE_AMC_H, + 0::numeric AS MONTANT_ACTE_IPP_C, + (COALESCE(MONTANT_FACT_IPP_H,0) - COALESCE(MONTANT_ACTE_IPP_H,0)) AS MONTANT_ACTE_IPP_H, + 0::numeric AS MONTANT_ACTE_AMO_C, + (COALESCE(MONTANT_FACT_AMO_H,0) - COALESCE(MONTANT_ACTE_AMO_H,0)) AS CPT_MONTANT_ACTE_AMO_H, + 0::numeric AS MONTANT_ACTE_AMC_C, + (COALESCE(MONTANT_FACT_AMC_H,0) - COALESCE(MONTANT_ACTE_AMC_H,0)) AS CPT_MONTANT_ACTE_AMC_H, + 0::numeric AS MONTANT_ACTE_IPP_C, + (COALESCE(MONTANT_FACT_IPP_H,0) - COALESCE(MONTANT_ACTE_IPP_H,0)) AS CPT_MONTANT_ACTE_IPP_H, + NULL::bigint AS oid_PAT, + NULL::numeric AS MONTANT_ACTE_PAT, + NULL::bigint AS oid_FJ, + NULL::numeric AS MONTANT_ACTE_FJ, + NULL::bigint AS oid_ACTP, + NULL::numeric AS MONTANT_ACTE_ACTP, + NULL::numeric AS MONTANT_DP_ACTP, + ( + '*ECARTCTI' || '|' || + '*ECARTCTI' || '|' || + '' || '|' || + '' + ) AS key + FROM w_OPERA_FAC_complet + LEFT JOIN w_OPERA_ACT_total ON w_OPERA_FAC_complet.NO_FACTURE = w_OPERA_ACT_total.NO_FACTURE + WHERE (COALESCE(MONTANT_FACT_AMO_H,0) - COALESCE(MONTANT_ACTE_AMO_H,0)) <> 0 OR + (COALESCE(MONTANT_FACT_AMC_H,0) - COALESCE(MONTANT_ACTE_AMC_H,0)) <> 0 OR + (COALESCE(MONTANT_FACT_IPP_H,0) - COALESCE(MONTANT_ACTE_IPP_H,0)) <> 0; + + + ]]> + + + + w_OPERA_FAC_complet.DATE_FACT_FIN); + + UPDATE w_OPERA_FAC_complet SET + GHS = w_OPERA_ACT_total.CODE_GHS, + key = TIERS_FACT_AMO || '|' || + TIERS_FACT_AMC || '|' || + w_OPERA_ACT_total.CODE_GHS + FROM w_OPERA_ACT_total + WHERE w_OPERA_ACT_total.NO_FACTURE = w_OPERA_FAC_complet.NO_FACTURE AND + w_OPERA_ACT_total.CODE_GHS IS DISTINCT FROM w_OPERA_FAC_complet.GHS; + + + + + DROP TABLE IF EXISTS w_OPERA_FAC_complet_key; + CREATE TEMP TABLE w_OPERA_FAC_complet_key AS + SELECT + key, + TIERS_FACT_AMO, + TIERS_FACT_AMC, + GHS, + GHS_BEBE1, + 0::bigint AS tiers_payant_0_id, + 0::bigint AS tiers_payant_1_id, + 0::bigint AS tiers_payant_2_id, + 0::bigint AS tiers_payant_22_id, + NULL::bigint AS ghs_id, + NULL::bigint AS ghs_bebe1_id, + NULL::bigint AS ghs_bebe2_id, + NULL::bigint AS ghs_bebe3_id + + FROM w_OPERA_FAC_complet + GROUP BY 1,2,3,4,5; + + ALTER TABLE w_OPERA_FAC_complet_key ADD CONSTRAINT w_OPERA_FAC_complet_key_pkey PRIMARY KEY(KEY); + + UPDATE w_OPERA_FAC_complet_key + set tiers_payant_0_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE code_original = 'PATIENT'; + + UPDATE w_OPERA_FAC_complet_key + set tiers_payant_1_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE TIERS_FACT_AMO <> '' AND code_original = TIERS_FACT_AMO; + + UPDATE w_OPERA_FAC_complet_key + set tiers_payant_2_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE TIERS_FACT_AMC <> '' AND code_original = TIERS_FACT_AMC; + + UPDATE w_OPERA_FAC_complet_key + set ghs_id = t_ghs.oid + FROM base.t_ghs + WHERE GHS <> '' AND t_ghs.code_text = GHS; + + UPDATE w_OPERA_FAC_complet_key + set ghs_id = t_ghs.oid + FROM base.t_ghs + WHERE ghs_id = 0 AND + GHS <> '' AND to_char(t_ghs.code,'FM0000') = GHS; + + + + + + + + + + DROP TABLE IF EXISTS w_OPERA_FAC_avoirs; + CREATE TEMP TABLE w_OPERA_FAC_avoirs AS + SELECT + w_OPERA_FAC_avoirs.NO_DOSSIER, + w_OPERA_FAC_avoirs.NO_FACTURE AS NO_FACTURE_AVOIR, + w_OPERA_FAC_avoirs.DATE_CALCUL_FACTURE AS DATE_CALCUL_FACTURE_AVOIR, + w_OPERA_FAC_avoirs.MONTANT_TOTAL_FACTURE AS MONTANT_TOTAL_FACTURE_AVOIR, + w_OPERA_FAC_avoirs.MONTANT_FACT_AMO AS MONTANT_FACT_AMO_AVOIR, + w_OPERA_FAC_avoirs.MONTANT_FACT_AMC AS MONTANT_FACT_AMC_AVOIR, + w_OPERA_FAC_avoirs.MONTANT_FACT_IPP AS MONTANT_FACT_IPP_AVOIR, + MAX(w_OPERA_FAC_complet.NO_FACTURE) AS NO_FACTURE_ANNULEE + FROM w_OPERA_FAC_complet w_OPERA_FAC_avoirs + LEFT JOIN w_OPERA_FAC_complet ON + w_OPERA_FAC_complet.NO_DOSSIER = w_OPERA_FAC_avoirs.NO_DOSSIER AND + w_OPERA_FAC_complet.TYPE_FACTURE IN ('D','F') AND + w_OPERA_FAC_complet.NO_FACTURE < w_OPERA_FAC_avoirs.NO_FACTURE AND + 0 - w_OPERA_FAC_complet.MONTANT_FACT_AMO = w_OPERA_FAC_avoirs.MONTANT_FACT_AMO AND + 0 - w_OPERA_FAC_complet.MONTANT_FACT_AMC = w_OPERA_FAC_avoirs.MONTANT_FACT_AMC AND + 0 - w_OPERA_FAC_complet.MONTANT_FACT_IPP = w_OPERA_FAC_avoirs.MONTANT_FACT_IPP + WHERE w_OPERA_FAC_avoirs.TYPE_FACTURE = 'A' + GROUP BY 1,2,3,4,5,6,7; + + + CREATE INDEX w_OPERA_FAC_avoirs_i1 + ON w_OPERA_FAC_avoirs + USING btree + (NO_FACTURE_AVOIR); + + CREATE INDEX w_OPERA_FAC_avoirs_i2 + ON w_OPERA_FAC_avoirs + USING btree + (NO_FACTURE_ANNULEE); + + + UPDATE w_OPERA_FAC_complet + SET NO_FACTURE_OD_AVOIR = NO_FACTURE_ANNULEE + FROM w_OPERA_FAC_avoirs + WHERE w_OPERA_FAC_avoirs.NO_DOSSIER = w_OPERA_FAC_complet.NO_DOSSIER AND + w_OPERA_FAC_avoirs.NO_FACTURE_AVOIR = w_OPERA_FAC_complet.NO_FACTURE; + + UPDATE w_OPERA_FAC_complet SET + TYPE_FACTURE = 'X', + NO_FACTURE_OD_AVOIR = NO_FACTURE_AVOIR + FROM w_OPERA_FAC_avoirs + WHERE w_OPERA_FAC_avoirs.NO_DOSSIER = w_OPERA_FAC_complet.NO_DOSSIER AND + w_OPERA_FAC_avoirs.NO_FACTURE_ANNULEE = w_OPERA_FAC_complet.NO_FACTURE; + + + + + DROP TABLE IF EXISTS w_OPERA_FAC_reference; + CREATE TEMP TABLE w_OPERA_FAC_reference AS + SELECT + NO_FACTURE_REFERENCE, + MAX(DATE_REGLEMENT_MAX) AS reference_DATE_REGLEMENT_MAX, + MAX(DATE_REGLEMENT_MAX_C) AS reference_DATE_REGLEMENT_MAX_C, + MAX(DATE_REGLEMENT_MAX_H) AS reference_DATE_REGLEMENT_MAX_H, + MAX(DATE_REGLEMENT_MAX_IPP_C) AS reference_DATE_REGLEMENT_MAX_IPP_C, + MAX(DATE_REGLEMENT_MAX_IPP_H) AS reference_DATE_REGLEMENT_MAX_IPP_H, + MAX(DATE_REGLEMENT_MAX_AMO_C) AS reference_DATE_REGLEMENT_MAX_AMO_C, + MAX(DATE_REGLEMENT_MAX_AMO_H) AS reference_DATE_REGLEMENT_MAX_AMO_H, + MAX(DATE_REGLEMENT_MAX_AMC_C) AS reference_DATE_REGLEMENT_MAX_AMC_C, + MAX(DATE_REGLEMENT_MAX_AMC_H) AS reference_DATE_REGLEMENT_MAX_AMC_H + FROM w_OPERA_FAC_complet + GROUP BY NO_FACTURE_REFERENCE; + + ALTER TABLE w_OPERA_FAC_reference ADD CONSTRAINT w_OPERA_FAC_reference_pkey PRIMARY KEY(NO_FACTURE_REFERENCE); + + + + ALTER SEQUENCE activite[PX].s_factures RESTART WITH 1; + + + DROP TABLE IF EXISTS w_factures; + CREATE TEMP TABLE w_factures AS + SELECT + nextval('activite[PX].s_factures'::regclass) AS oid, + w_OPERA_FAC_complet.NO_DOSSIER AS no_sejour, + p_sejours.oid AS sejour_id, + w_OPERA_FAC_complet.NO_FACTURE AS no_facture, + date(w_OPERA_FAC_complet.DATE_FACT_DEBUT) AS date_debut, + date(w_OPERA_FAC_complet.DATE_FACT_FIN) AS date_fin, + CASE + WHEN TYPE_FACTURE IN ('X') THEN 'X' + WHEN TYPE_FACTURE IN ('F','X') AND w_OPERA_FAC_complet.NO_FACTURE <> w_OPERA_FAC_complet.NO_FACTURE_REFERENCE THEN '2' + WHEN TYPE_FACTURE IN ('A') THEN '1' + WHEN TYPE_FACTURE IN ('D') THEN '2' + ELSE '0' END AS type_facture, + p_sejours.code_cp_demandee, + CASE WHEN DATE_CALCUL_FACTURE IS NOT NULL THEN '1' ELSE '0' END AS code_facture, + CASE WHEN DATE_CALCUL_FACTURE IS NOT NULL THEN date(DATE_CALCUL_FACTURE) ELSE '20991231' END AS date_facture, + CASE WHEN DATE_CALCUL_FACTURE IS NOT NULL THEN '1' ELSE '0' END AS code_vente, + CASE WHEN DATE_CALCUL_FACTURE IS NOT NULL THEN date(DATE_CALCUL_FACTURE) ELSE '20991231'::date END AS date_vente, + CASE WHEN DATE_CALCUL_FACTURE IS NOT NULL THEN extract('year' FROM DATE_CALCUL_FACTURE) * 100 + extract('month' FROM DATE_CALCUL_FACTURE) ELSE extract('year' FROM '20991231'::date) * 100 + extract('month' FROM '20991231'::date) END AS mois_vente, + '0'::text AS code_cloture, + CASE + WHEN TYPE_FACTURE IN ('A') THEN 1 + ELSE 0 END AS nb_rejets, + w_OPERA_FAC_complet.NO_FACTURE_REFERENCE AS no_facture_reference, + 0::bigint AS facture_reference_id, + NO_FACTURE_OD_AVOIR AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id, + COALESCE(w_OPERA_FAC_complet_key.ghs_id, p_sejours.ghs_id) AS ghs_id, + COALESCE(w_OPERA_FAC_complet_key.ghs_bebe1_id, p_sejours.ghs_bebe1_id) AS ghs_bebe1_id, + 0::bigint AS ghs_bebe2_id, + 0::bigint AS ghs_bebe3_id, + ''::text AS particularite_t2a, + w_OPERA_FAC_complet_key.tiers_payant_1_id, + w_OPERA_FAC_complet_key.tiers_payant_2_id, + w_OPERA_FAC_complet_key.tiers_payant_22_id, + w_OPERA_FAC_complet_key.tiers_payant_0_id, + CASE + WHEN DATE_ENVOI_CETELIC_FACT_AMO between '1980-01-01' AND '2050-01-01' AND DATE_ENVOI_CETELIC_FACT_AMC between '1980-01-01' AND '2050-01-01' THEN LEAST(DATE_ENVOI_CETELIC_FACT_AMO, DATE_ENVOI_CETELIC_FACT_AMC) + WHEN DATE_ENVOI_CETELIC_FACT_AMO between '1980-01-01' AND '2050-01-01' THEN DATE_ENVOI_CETELIC_FACT_AMO + WHEN DATE_ENVOI_CETELIC_FACT_AMC between '1980-01-01' AND '2050-01-01' THEN DATE_ENVOI_CETELIC_FACT_AMC + ELSE LEAST(DATE_ENVOI_CETELIC_FACT_AMO, DATE_ENVOI_CETELIC_FACT_AMC) + END AS date_expedition, + '00010101'::date AS date_expedition_0, + date(DATE_ENVOI_CETELIC_FACT_AMO) AS date_expedition_1, + date(DATE_ENVOI_CETELIC_FACT_AMC) AS date_expedition_2, + '00010101'::date AS date_expedition_22, + '0'::text AS code_expedie_0, + CASE WHEN DATE_ENVOI_CETELIC_FACT_AMO IS NOT NULL THEN '1' ELSE '0' END AS code_expedie_1, + CASE WHEN DATE_ENVOI_CETELIC_FACT_AMC IS NOT NULL THEN '1' ELSE '0' END AS code_expedie_2, + '0'::text AS code_expedie_22, + ''::text AS no_bordereau_0, + COALESCE(NO_LOT_CETELIC_FACT_AMO,'') AS no_bordereau_1, + COALESCE(NO_LOT_CETELIC_FACT_AMC,'') AS no_bordereau_2, + ''::text AS no_bordereau_22, + + DATE_REGLEMENT_MAX AS date_solde, + DATE_REGLEMENT_MAX_c AS date_solde_c, + DATE_REGLEMENT_MAX_h AS date_solde_h, + DATE_REGLEMENT_MAX_IPP_C AS date_solde_0_c, + DATE_REGLEMENT_MAX_IPP_H AS date_solde_0_h, + DATE_REGLEMENT_MAX_AMO_C AS date_solde_1_c, + DATE_REGLEMENT_MAX_AMO_H AS date_solde_1_h, + DATE_REGLEMENT_MAX_AMC_C AS date_solde_2_c, + DATE_REGLEMENT_MAX_AMC_H AS date_solde_2_h, + '00010101'::date AS date_solde_22_c, + '00010101'::date AS date_solde_22_h, + COALESCE(MONTANT_FACT_AMO_C + MONTANT_FACT_AMC_C + MONTANT_FACT_IPP_C,0) AS montant_facture_c, + COALESCE(MONTANT_FACT_AMO_H + MONTANT_FACT_AMC_H + MONTANT_FACT_IPP_H,0) AS montant_facture_h, + COALESCE(MONTANT_FACT_IPP_C,0) AS montant_facture_0_c, + COALESCE(MONTANT_FACT_IPP_H,0) AS montant_facture_0_h, + COALESCE(MONTANT_FACT_AMO_C,0) AS montant_facture_1_c, + COALESCE(MONTANT_FACT_AMO_H,0) AS montant_facture_1_h, + COALESCE(MONTANT_FACT_AMC_C,0) AS montant_facture_2_c, + COALESCE(MONTANT_FACT_AMC_H,0) AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + CASE WHEN DATE_CALCUL_FACTURE IS NOT NULL THEN COALESCE(MONTANT_FACT_AMO_C + MONTANT_FACT_AMC_C + MONTANT_FACT_IPP_C,0) ELSE 0 END AS montant_comptabilise_c, + CASE WHEN DATE_CALCUL_FACTURE IS NOT NULL THEN COALESCE(MONTANT_FACT_AMO_H + MONTANT_FACT_AMC_H + MONTANT_FACT_IPP_H,0) ELSE 0 END AS montant_comptabilise_h, + CASE WHEN DATE_CALCUL_FACTURE IS NOT NULL THEN COALESCE(MONTANT_FACT_IPP_C,0) ELSE 0 END AS montant_comptabilise_0_c, + CASE WHEN DATE_CALCUL_FACTURE IS NOT NULL THEN COALESCE(MONTANT_FACT_IPP_H,0) ELSE 0 END AS montant_comptabilise_0_h, + CASE WHEN DATE_CALCUL_FACTURE IS NOT NULL THEN COALESCE(MONTANT_FACT_AMO_C,0) ELSE 0 END AS montant_comptabilise_1_c, + CASE WHEN DATE_CALCUL_FACTURE IS NOT NULL THEN COALESCE(MONTANT_FACT_AMO_H,0) ELSE 0 END AS montant_comptabilise_1_h, + CASE WHEN DATE_CALCUL_FACTURE IS NOT NULL THEN COALESCE(MONTANT_FACT_AMC_C,0) ELSE 0 END AS montant_comptabilise_2_c, + CASE WHEN DATE_CALCUL_FACTURE IS NOT NULL THEN COALESCE(MONTANT_FACT_AMC_H,0) ELSE 0 END AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + 0::numeric AS montant_comptabilise_budget_global_c, + w_OPERA_FAC_complet.MONTANT_REGLEMENT_C AS montant_regle_c, + w_OPERA_FAC_complet.MONTANT_REGLEMENT_H AS montant_regle_h, + w_OPERA_FAC_complet.MONTANT_REGLEMENT_IPP_C AS montant_regle_0_c, + w_OPERA_FAC_complet.MONTANT_REGLEMENT_IPP_H AS montant_regle_0_h, + w_OPERA_FAC_complet.MONTANT_REGLEMENT_AMO_C AS montant_regle_1_c, + w_OPERA_FAC_complet.MONTANT_REGLEMENT_AMO_H AS montant_regle_1_h, + w_OPERA_FAC_complet.MONTANT_REGLEMENT_AMC_C AS montant_regle_2_c, + w_OPERA_FAC_complet.MONTANT_REGLEMENT_AMC_H AS montant_regle_2_h, + + CASE WHEN reference_DATE_REGLEMENT_MAX > '00010101' THEN reference_DATE_REGLEMENT_MAX ELSE '20991231' END AS date_solde_reference, + CASE WHEN reference_DATE_REGLEMENT_MAX_C > '00010101' THEN reference_DATE_REGLEMENT_MAX_C ELSE '20991231' END AS date_solde_reference_c, + CASE WHEN reference_DATE_REGLEMENT_MAX_H > '00010101' THEN reference_DATE_REGLEMENT_MAX_H ELSE '20991231' END AS date_solde_reference_h, + CASE WHEN reference_DATE_REGLEMENT_MAX_IPP_C > '00010101' THEN reference_DATE_REGLEMENT_MAX_IPP_C ELSE '20991231' END AS date_solde_reference_0_c, + CASE WHEN reference_DATE_REGLEMENT_MAX_IPP_H > '00010101' THEN reference_DATE_REGLEMENT_MAX_IPP_H ELSE '20991231' END AS date_solde_reference_0_h, + CASE WHEN reference_DATE_REGLEMENT_MAX_AMO_C > '00010101' THEN reference_DATE_REGLEMENT_MAX_AMO_C ELSE '20991231' END AS date_solde_reference_1_c, + CASE WHEN reference_DATE_REGLEMENT_MAX_AMO_H > '00010101' THEN reference_DATE_REGLEMENT_MAX_AMO_H ELSE '20991231' END AS date_solde_reference_1_h, + CASE WHEN reference_DATE_REGLEMENT_MAX_AMC_C > '00010101' THEN reference_DATE_REGLEMENT_MAX_AMC_C ELSE '20991231' END AS date_solde_reference_2_c, + CASE WHEN reference_DATE_REGLEMENT_MAX_AMC_H > '00010101' THEN reference_DATE_REGLEMENT_MAX_AMC_H ELSE '20991231' END AS date_solde_reference_2_h + + FROM w_OPERA_FAC_complet + JOIN activite[PX].p_sejours ON w_OPERA_FAC_complet.NO_DOSSIER = p_sejours.code_original AND p_sejours.etat = '' + JOIN w_OPERA_FAC_complet_key ON w_OPERA_FAC_complet.key = w_OPERA_FAC_complet_key.key + JOIN w_OPERA_FAC_reference ON w_OPERA_FAC_reference.NO_FACTURE_REFERENCE = w_OPERA_FAC_complet.NO_FACTURE_REFERENCE + LEFT JOIN w_OPERA_ACT_total ON w_OPERA_FAC_complet.NO_FACTURE = w_OPERA_ACT_total.NO_FACTURE + ORDER BY 1,2; + + + + + -- Ajout des factures + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_14'); + + INSERT INTO activite[PX].p_factures ( + oid, + no_sejour, + provider_id, + sejour_id, + no_facture, + date_debut, + date_fin, + type_facture, + code_cp_demandee, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + code_cloture, + nb_rejets, + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + particularite_t2a, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_comptabilise_budget_global_c, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + delai_facture, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + + date_solde_reference, + date_solde_reference_c, + date_solde_reference_h, + date_solde_reference_0_c, + date_solde_reference_1_c, + date_solde_reference_2_c, + date_solde_reference_22_c, + date_solde_reference_0_h, + date_solde_reference_1_h, + date_solde_reference_2_h, + date_solde_reference_22_h + ) + SELECT + oid, + no_sejour, + 2::bigint AS provider_id, + sejour_id, + no_facture, + date_debut, + date_fin, + type_facture, + code_cp_demandee, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + code_cloture, + nb_rejets, + no_facture_reference, + CASE WHEN no_facture = no_facture_reference THEN oid ELSE 0 END AS facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + particularite_t2a, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_comptabilise_budget_global_c, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + 0::numeric AS delai_facture, + 0::numeric AS delai_expedition, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + + date_solde_reference, + date_solde_reference_c, + date_solde_reference_h, + date_solde_reference_0_c, + date_solde_reference_1_c, + date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + date_solde_reference_0_h, + date_solde_reference_1_h, + date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h + FROM w_factures; + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_14'); + + + + + UPDATE activite[PX].p_factures + SET facture_od_avoir_id = p_factures_od_avoir.oid + FROM activite[PX].p_factures p_factures_od_avoir + WHERE p_factures.no_facture_od_avoir = p_factures_od_avoir.no_facture AND + p_factures.no_facture_od_avoir <> ''; + + + + UPDATE activite[PX].p_sejours + SET est_sans_facturation = '1' + WHERE lieu_sortie_id IN + (SELECT oid FROM activite[PX].t_lieux WHERE + service_facturation_id IN + (SELECT oid FROM activite[PX].t_services_facturation WHERE est_sans_facturation = '1') OR + unite_fonctionnelle_id IN + (SELECT oid FROM activite[PX].t_unites_fonctionnelles WHERE est_sans_facturation = '1') + ); + + + -- Séjours sans facture + + DROP TABLE IF EXISTS w_factures_trous; + CREATE TEMP TABLE w_factures_trous AS + SELECT + p_sejours.finess, + p_sejours.no_sejour, + p_sejours.date_entree, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.code_cp_demandee, + COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire, + p_sejours.code_sorti, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie, + MAX(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END) AS date_fin_facture, + date(MAX(COALESCE(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours + FROM activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON + p_sejours.no_sejour = p_factures.no_sejour AND + no_facture NOT LIKE 'E%' AND + (type_facture NOT IN ('1','X') OR p_factures.date_fin < date(now() - interval '6 month')) + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE p_sejours.etat = '' AND + p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND + p_sejours.type_sejour IS DISTINCT FROM '9' AND + p_sejours.provider_id = 2 AND + p_sejours.code_prevu = '0' AND + date_entree <= now() + GROUP BY 1,2,3,4,5,6,7,8,9,10,11; + + + + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + provider_id, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee, + date_debut, + date_fin) + SELECT finess, + no_sejour, + 2::bigint AS provider_id, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee , + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13; + + + UPDATE activite[PX].p_factures + SET facture_reference_id = p_factures_references.oid + FROM activite[PX].p_factures p_factures_references + WHERE p_factures.no_facture_reference = p_factures_references.no_facture AND + p_factures.facture_reference_id IS DISTINCT FROM p_factures_references.oid; + + + + ]]> + + + + = date(now() - interval '1 year') AND + TYPE_PRESTA IN ('S', 'P') AND + CODE_PRESTA IN ( + SELECT CODE_PRESTA + FROM prod_cegiloghos.OPERA_ACT + WHERE NO_FACTURE NOT IN (SELECT no_facture FROM prod_cegiloghos.OPERA_FAC) AND + TYPE_PRESTA IN ('S', 'P') AND + PRIX_UNITAIRE = 0 + ) + GROUP BY 1,2 + HAVING COUNT(DISTINCT FLOOR(PRIX_UNITAIRE)) <= 2 + ; + + -- Génération + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id, + ucd_id, + lpp_id) + SELECT + p_factures.no_facture, + date(DATE_ACTE_DEBUT) AS date_debut, + date(COALESCE(DATE_ACTE_FIN, DATE_ACTE_DEBUT)) AS date_fin, + GREATEST(0,QTE_ACTE*COEFF_ACTE) AS nb_rubrique, + 1::numeric AS coefficient, + t_rubriques_facturation.oid AS rubrique_facturation_id, + t_prestations.oid AS prestation_id, + PRIX_UNITAIRE AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id, + COALESCE(t_ucd.oid,0), + COALESCE(t_lpp.oid,0) + FROM prod_cegiloghos.OPERA_ACT + JOIN activite[PX].p_sejours ON no_dossier = p_sejours.code_original AND p_sejours.etat = '' + JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND + type_facture = 'E' + JOIN activite.t_prestations ON CODE_PRESTA = t_prestations.code + JOIN activite[PX].t_rubriques_facturation ON CODE_PRESTA = t_rubriques_facturation.code_original + LEFT JOIN base.t_ucd ON CODE_UCD = t_ucd.code AND CODE_UCD <> '' + LEFT JOIN base.t_lpp ON CODE_LPP = t_lpp.code AND CODE_LPP <> '' + WHERE + date(DATE_ACTE_DEBUT) BETWEEN p_factures.date_debut AND p_factures.date_fin AND + TYPE_PRESTA IN ('S', 'P') AND + CODE_PRESTA NOT IN ('STF', 'REA', 'SRC', 'GHS', 'EXH') AND + PRIX_UNITAIRE <> 0 AND + MONTANT_ACTE <> 0 + ; + + ]]> + + + + '4' THEN t_ccam_regroupements.code ELSE 'ADA' END AS code_prestation_1 + FROM prod_cegi.CJ_SEJOUR + JOIN w_OPERA_SEJ_select ON CJ_SEJOUR.SEJ_NUMDOS = w_OPERA_SEJ_select.NO_DOSSIER + JOIN prod_cegi.CJ_LSRGP ON CJ_LSRGP.SEJ_ID = CJ_SEJOUR.SEJ_ID AND LSR_ACTIF = 1 + JOIN prod_cegi.CJ_LSCCAM ON CJ_LSCCAM.LSR_ID = CJ_LSRGP.LSR_ID AND LSCA_ACTIF = 1 + JOIN prod_cegi.CJ_CCAM ON CJ_CCAM.CCAM_ID = CJ_LSCCAM.CCAM_ID + JOIN prod_cegi.CJ_PRA ON CJ_PRA.TER_ID = CJ_LSCCAM.TER_ID + JOIN base.t_actes ON t_actes.code = substring(CCAM_CODE, 1, 7) + JOIN base.t_ccam_regroupements ON ccam_regroupement_id_1 = t_ccam_regroupements.oid; + + ALTER TABLE w_LSCCAM ADD CONSTRAINT w_LSCCAM_pkey PRIMARY KEY(oid); + + CREATE INDEX w_LSCCAM_i1 + ON w_LSCCAM + USING btree + (SEJ_NUMDOS); + + + + + + + SELECT base.cti_execute(' + UPDATE w_LSCCAM + SET act_id = subview.act_id + FROM ( + SELECT + NO_DOSSIER, + date(DATE_ACTE_DEBUT) AS DATE_ACTE_DEBUT, + CODE_MED_EXECUTANT, + MIN(w_OPERA_ACT_complet.oid) AS ACT_id, + MIN(w_LSCCAM.oid) AS LSCCAM_id + FROM w_OPERA_ACT_complet + JOIN w_LSCCAM ON SEJ_NUMDOS = NO_DOSSIER AND + LSR_DDEB = date(DATE_ACTE_DEBUT) AND + PRA_LIBC = CODE_MED_EXECUTANT AND + CODE_PRESTA = code_prestation_1 AND + act_id = 0 + WHERE TYPE_PRESTA = ''H'' AND + CODE_PRESTA IN (''ACO'', ''ADA'', ''ADC'', ''ADE'', ''ADI'', ''ATM'', ''DEN'') AND + CODE_CCAM = '''' + GROUP BY 1,2,3 + ) subview + WHERE oid = subview.LSCCAM_id ., + + UPDATE w_OPERA_ACT_complet SET + CODE_CCAM = CCAM_CODE, + CODE_ACTIVITE_CCAM = CCAM_ACTV, + CODE_PHASE_CCAM = CCAM_PHS, + CODE_MODIFICATEUR_1_CCAM = LSCA_MOD1, + CODE_MODIFICATEUR_2_CCAM = LSCA_MOD2, + CODE_MODIFICATEUR_3_CCAM = LSCA_MOD3, + CODE_MODIFICATEUR_4_CCAM = LSCA_MOD4, + CODE_ANP_CCAM = LSCA_ASSNP, + CODE_EXTDOC_CCAM = LSCA_EXTDOC, + key = CODE_RUBRIQUE || ''|''::text || + CODE_PRESTA || ''|''::text || + CODE_LPP || ''|''::text || + CODE_UCD || ''|''::text || + w_OPERA_ACT_complet.CODE_MED_EXECUTANT || ''|''::text || + CCAM_CODE + FROM w_LSCCAM + WHERE w_OPERA_ACT_complet.oid = ACT_id AND CODE_CCAM = '''' ', 20); + + + -- Attribution OID aux codes + + CREATE INDEX w_OPERA_ACT_complet_i3 + ON w_OPERA_ACT_complet + USING btree + (KEY); + + DROP TABLE IF EXISTS w_OPERA_ACT_complet_key; + CREATE TEMP TABLE w_OPERA_ACT_complet_key AS + SELECT + key, + CODE_PRESTA, + CODE_LPP, + CODE_UCD, + CODE_RUBRIQUE, + CODE_MED_EXECUTANT, + CODE_CCAM, + 0::bigint AS rubrique_facturation_id, + 0::bigint AS prestation_id, + 0::bigint AS ucd_id, + 0::bigint AS lpp_id, + 0::bigint AS medecin_administratif_id, + 0::bigint AS acte_id + FROM w_OPERA_ACT_complet + GROUP BY 1,2,3,4,5,6,7; + + + + + ALTER TABLE w_OPERA_ACT_complet_key ADD CONSTRAINT w_OPERA_ACT_complet_key_pkey PRIMARY KEY(KEY); + + UPDATE w_OPERA_ACT_complet_key + SET CODE_PRESTA = trim(substr(CODE_PRESTA,1,4)) + WHERE substr(CODE_PRESTA,5,1) IN ('F', 'N'); + + UPDATE w_OPERA_ACT_complet_key + SET CODE_CCAM = CODE_PRESTA + WHERE CODE_CCAM = '' AND CODE_MED_EXECUTANT <> ''; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT CODE_RUBRIQUE, CODE_RUBRIQUE, CODE_RUBRIQUE, CODE_RUBRIQUE + FROM w_OPERA_ACT_complet_key + WHERE CODE_RUBRIQUE <> '' AND + CODE_RUBRIQUE NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) AND CODE_RUBRIQUE != '' + GROUP BY 1,2,3,4; + + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT CODE_PRESTA, CODE_PRESTA, CODE_PRESTA, CODE_PRESTA + FROM w_OPERA_ACT_complet_key + WHERE CODE_PRESTA <> '' AND + CODE_PRESTA NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL ) AND CODE_PRESTA != '' + GROUP BY 1,2,3,4; + + + + UPDATE w_OPERA_ACT_complet_key + set rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + WHERE code_original = CODE_RUBRIQUE; + + UPDATE w_OPERA_ACT_complet_key + set prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE code = CODE_PRESTA; + + UPDATE w_OPERA_ACT_complet_key + set medecin_administratif_id = t_medecins_administratifs.oid + FROM activite[PX].t_medecins_administratifs + WHERE code_original = CODE_MED_EXECUTANT; + + INSERT INTO base.t_actes(code, texte, texte_court, nomenclature) + SELECT substring(CODE_CCAM, 1, 7), substring(CODE_CCAM, 1, 7), substring(CODE_CCAM, 1, 7), 'NGAP' + FROM w_OPERA_ACT_complet_key + WHERE substring(CODE_CCAM, 1, 7) <> '' AND substring(CODE_CCAM, 1, 7) = CODE_PRESTA AND substring(CODE_CCAM, 1, 7) NOT IN (SELECT code FROM base.t_actes WHERE code IS NOT NULL) + GROUP BY 1,2,3; + + INSERT INTO base.t_actes(code, texte, texte_court, nomenclature) + SELECT substring(CODE_CCAM, 1, 7), substring(CODE_CCAM, 1, 7), substring(CODE_CCAM, 1, 7), 'CCAM' + FROM w_OPERA_ACT_complet_key + WHERE substring(CODE_CCAM, 1, 7) <> '' AND substring(CODE_CCAM, 1, 7) <> CODE_PRESTA AND substring(CODE_CCAM, 1, 7) NOT IN (SELECT code FROM base.t_actes WHERE code IS NOT NULL) + GROUP BY 1,2,3; + + UPDATE w_OPERA_ACT_complet_key + set acte_id = t_actes.oid + FROM base.t_actes + WHERE code = substring(CODE_CCAM, 1, 7); + + INSERT INTO base.t_ucd (code, texte, texte_court) + SELECT CODE_UCD, CODE_UCD, CODE_UCD + FROM w_OPERA_ACT_complet_key + WHERE CODE_UCD NOT IN (SELECT code FROM base.t_ucd WHERE code IS NOT NULL) + GROUP BY 1 + ORDER BY 1 + ; + + UPDATE w_OPERA_ACT_complet_key + SET ucd_id = t_ucd.oid + FROM base.t_ucd + WHERE t_ucd.code = CODE_UCD AND + CODE_UCD <> ''; + + INSERT INTO base.t_lpp (code, texte, texte_court) + SELECT CODE_LPP, CODE_LPP, CODE_LPP + FROM w_OPERA_ACT_complet_key + WHERE CODE_LPP NOT IN (SELECT code FROM base.t_lpp WHERE code IS NOT NULL) + GROUP BY 1 + ORDER BY 1 + ; + + UPDATE w_OPERA_ACT_complet_key + SET lpp_id = t_lpp.oid + FROM base.t_lpp + WHERE t_lpp.code = CODE_LPP AND + CODE_LPP <> ''; + + + + -- Génération lignes C + + DROP TABLE IF EXISTS w_factures_lignes_c; + CREATE TEMP TABLE w_factures_lignes_c AS + SELECT + p_factures.no_sejour, + p_factures.oid AS facture_id, + w_OPERA_ACT_complet.NO_FACTURE AS no_facture, + p_factures.date_vente, + + COEFF_ACTE AS coefficient, + 1::numeric AS coefficient_mco, + w_OPERA_ACT_complet_key.rubrique_facturation_id AS rubrique_facturation_id, + w_OPERA_ACT_complet_key.rubrique_facturation_id AS rubrique_comptabilisation_id, + w_OPERA_ACT_complet_key.prestation_id AS prestation_id, + w_OPERA_ACT_complet_key.ucd_id AS ucd_id, + w_OPERA_ACT_complet_key.lpp_id AS lpp_id, + w_OPERA_ACT_complet.compte_produit_id, + p_sejours.lieu_sortie_id AS lieu_id, + 1::bigint AS origine_facturation_id, + + CASE WHEN w_OPERA_ACT_complet.prix_unitaire <> 0 THEN w_OPERA_ACT_complet.prix_unitaire ELSE + ROUND(base.cti_division((MONTANT_ACTE_AMO_C + MONTANT_ACTE_AMC_C + MONTANT_ACTE_IPP_C) , (QTE_ACTE * COEFF_ACTE)),2) + END AS prix_unitaire, + coalesce(TAUX_IPP,0) AS taux_0, + coalesce(TAUX_AMO,0) AS taux_1, + coalesce(TAUX_AMC,0) AS taux_2, + 0::numeric AS taux_22, + + date(DATE_ACTE_DEBUT) AS date_debut, + date(COALESCE(DATE_ACTE_FIN,DATE_ACTE_DEBUT)) AS date_fin, + QTE_ACTE AS nb_rubrique, + QTE_ACTE AS nb_prestation, + MONTANT_ACTE_AMO_C + MONTANT_ACTE_AMC_C + MONTANT_ACTE_IPP_C AS montant_facture, + MONTANT_ACTE_IPP_C AS montant_facture_0, + MONTANT_ACTE_AMO_C AS montant_facture_1, + MONTANT_ACTE_AMC_C AS montant_facture_2, + 0::numeric AS montant_facture_22, + CPT_MONTANT_ACTE_AMO_C + CPT_MONTANT_ACTE_AMC_C + CPT_MONTANT_ACTE_IPP_C AS montant_comptabilise, + CPT_MONTANT_ACTE_IPP_C AS montant_comptabilise_0, + CPT_MONTANT_ACTE_AMO_C AS montant_comptabilise_1, + CPT_MONTANT_ACTE_AMC_C AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS montant_regle, + 0::numeric AS montant_regle_0, + 0::numeric AS montant_regle_1, + 0::numeric AS montant_regle_2, + 0::numeric AS montant_regle_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_1, + 0::numeric AS rubrique_facture_id + + FROM w_OPERA_ACT_complet + JOIN activite[PX].p_factures ON w_OPERA_ACT_complet.NO_FACTURE = p_factures.no_facture + JOIN activite[PX].p_sejours ON w_OPERA_ACT_complet.NO_DOSSIER = p_sejours.code_original AND p_sejours.etat = '' + JOIN w_OPERA_ACT_complet_key ON w_OPERA_ACT_complet.key = w_OPERA_ACT_complet_key.key + WHERE p_factures.code_facture = '1' AND TYPE_PRESTA IN ('S', 's', 'P') ; + + CREATE INDEX w_factures_lignes_c_i1 + ON w_factures_lignes_c + USING btree + (no_sejour); + + UPDATE w_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_mouvements_sejour + WHERE + w_factures_lignes_c.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_lignes_c.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + w_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + -- Coefficient mco paramétré dans base + DROP TABLE IF EXISTS w_finess; + CREATE TEMP TABLE w_finess AS SELECT * FROM base.t_finess LIMIT 1 + ; + + UPDATE w_factures_lignes_c + SET coefficient_mco = + CASE + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_9 THEN w_finess.coefficient_mco_9 + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_8 THEN w_finess.coefficient_mco_8 + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_7 THEN w_finess.coefficient_mco_7 + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_6 THEN w_finess.coefficient_mco_6 + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_5 THEN w_finess.coefficient_mco_5 + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_4 THEN w_finess.coefficient_mco_4 + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_3 THEN w_finess.coefficient_mco_3 + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_2 THEN w_finess.coefficient_mco_2 + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_1 THEN w_finess.coefficient_mco_1 + ELSE 1::numeric + END + FROM w_finess, + activite.t_prestations + WHERE + prestation_id = t_prestations.oid AND + t_prestations.code IN ('GHS', 'EXH') AND + (CASE + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_9 THEN w_finess.coefficient_mco_9 + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_8 THEN w_finess.coefficient_mco_8 + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_7 THEN w_finess.coefficient_mco_7 + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_6 THEN w_finess.coefficient_mco_6 + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_5 THEN w_finess.coefficient_mco_5 + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_4 THEN w_finess.coefficient_mco_4 + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_3 THEN w_finess.coefficient_mco_3 + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_2 THEN w_finess.coefficient_mco_2 + WHEN date(date_fin) >= w_finess.date_debut_coefficient_mco_1 THEN w_finess.coefficient_mco_1 + ELSE 1::numeric + END) <> 1 + ; + + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_c'); + + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_8'); + + INSERT INTO activite[PX].p_factures_lignes_c ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + ucd_id, + lpp_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1, + origine_facturation_id + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + ucd_id, + lpp_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1, + origine_facturation_id + FROM w_factures_lignes_c; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_8'); + + -- Forcage date debut = date entree pour prestations à ventiler + UPDATE activite[PX].p_factures_lignes_c + SET date_debut = p_factures.date_debut + FROM activite[PX].t_rubriques_facturation, activite.t_prestations, activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + prestation_id = t_prestations.oid AND + t_prestations.type_ventilation_jour = '1' AND + ABS(nb_rubrique) > 1 AND + p_factures_lignes_c.date_debut = p_factures_lignes_c.date_fin AND + p_sejours.date_sortie <> p_sejours.date_entree ; + + + -- Eclatement des supplements par jour + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + p_factures_lignes_c.CTID AS from_CTID, + t_prestations.code AS prestation_code, + date(p_sejours.date_entree) AS date_debut_ghs, + date(p_sejours.date_sortie - interval '1 day') AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN t_prestations.code = 'GHS' THEN date(date_entree + interval '1 day') ELSE date(p_factures_lignes_c.date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN t_prestations.code = 'GHS' THEN date(p_sejours.date_sortie - interval '1 day') ELSE date(p_factures_lignes_c.date_debut + ((ABS(nb_prestation)-1) || ' day')::interval) END AS date_fin_det, + ABS(CASE WHEN t_prestations.code = 'GHS' THEN date(date_sortie) - date(date_entree) ELSE nb_prestation END) AS nb_det, + p_factures_lignes_c.* + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.etat = '' + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + ( + code IN ('PJ', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (t_prestations.code = 'GHS' AND p_sejours.type_sejour != '5' AND date(date_sortie) - date(date_entree) > 1)) ; + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM activite[PX].p_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture AND + w_factures_lignes_sup_c.prestation_code = 'GHS'; + + + CREATE INDEX w_factures_lignes_sup_c_i1 + ON w_factures_lignes_sup_c + USING btree + (date_debut); + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + from_CTID, + no_facture, + date AS date_debut, + date AS date_fin, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + ucd_id, + lpp_id, + compte_produit_id, + round(montant_facture / ABS(nb_det),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + round(montant_comptabilise / ABS(nb_det),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_det),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_det),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_det),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_det),2) AS montant_comptabilise_22, + rubrique_comptabilisation_id, + round(montant_encours / ABS(nb_det),2) AS montant_encours, + round(montant_encours_0 / ABS(nb_det),2) AS montant_encours_0, + round(montant_encours_1 / ABS(nb_det),2) AS montant_encours_1, + round(montant_encours_2 / ABS(nb_det),2) AS montant_encours_2, + round(montant_encours_22 / ABS(nb_det),2) AS montant_encours_22, + round(montant_facture_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_actes_inclus_dans_sejour, + round(montant_facture_0_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_0_actes_inclus_dans_sejour, + round(montant_facture_1_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_1_actes_inclus_dans_sejour, + round(montant_facture_2_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_2_actes_inclus_dans_sejour, + round(montant_facture_22_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + round(montant_comptabilise_budget_global_1 / ABS(nb_det),2) AS montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON date_debut BETWEEN p_calendrier.date - ABS(nb_det)::integer + 1 AND p_calendrier.date AND + p_calendrier.date <> date_debut ; + ; + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT from_CTID, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + + UPDATE activite[PX].p_factures_lignes_c + SET + date_fin = p_factures_lignes_c.date_debut, + nb_rubrique = p_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_sup_tot.nb_rubrique, + nb_prestation = p_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_sup_tot.nb_prestation, + montant_facture = p_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = p_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = p_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = p_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = p_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = p_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = p_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = p_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = p_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = p_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22, + montant_encours = p_factures_lignes_c.montant_encours - w_factures_lignes_sup_c_sup_tot.montant_encours, + montant_encours_0 = p_factures_lignes_c.montant_encours_0 - w_factures_lignes_sup_c_sup_tot.montant_encours_0, + montant_encours_1 = p_factures_lignes_c.montant_encours_1 - w_factures_lignes_sup_c_sup_tot.montant_encours_1, + montant_encours_2 = p_factures_lignes_c.montant_encours_2 - w_factures_lignes_sup_c_sup_tot.montant_encours_2, + montant_encours_22 = p_factures_lignes_c.montant_encours_22 - w_factures_lignes_sup_c_sup_tot.montant_encours_22, + montant_facture_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 = p_factures_lignes_c.montant_comptabilise_budget_global_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup_tot + WHERE p_factures_lignes_c.CTID = from_CTID; + + + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + ucd_id, + lpp_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + ucd_id, + lpp_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c_sup; + + + -- Lieu exécution + + UPDATE activite[PX].p_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_factures , + activite[PX].p_mouvements_sejour + WHERE + p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + p_factures_lignes_c.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + p_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + + ]]> + + + + 0; + + + UPDATE activite[PX].p_factures SET + montant_comptabilise_c = montant_comptabilise_c + ecart, + montant_comptabilise_1_c = montant_comptabilise_1_c + ecart_1, + montant_comptabilise_2_c = montant_comptabilise_2_c + ecart_2, + montant_comptabilise_22_c = montant_comptabilise_22_c + ecart_22, + montant_comptabilise_0_c = montant_comptabilise_0_c + ecart_0 + FROM w_correction_compta + WHERE w_correction_compta.no_facture = p_factures.no_facture; + + -- Ventes + + DROP TABLE IF EXISTS w_factures_soldes_c; + CREATE TEMP TABLE w_factures_soldes_c AS + SELECT + facture_id, + no_facture, + date_trunc('month',date_vente) + interval '1 month' - interval '1 day' AS date_comptable, + rubrique_comptabilisation_id, + prestation_id, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS montant_regle, + 0::numeric AS montant_regle_0, + 0::numeric AS montant_regle_1, + 0::numeric AS montant_regle_2, + 0::numeric AS montant_regle_22 + FROM w_factures_lignes_c + WHERE date_vente IS NOT NULL AND + (montant_comptabilise <> 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5; + + -- Reglements complets AMO + INSERT INTO w_factures_soldes_c + SELECT + facture_id, + w_factures_lignes_c.no_facture, + date_trunc('month',date_solde_1_c) + interval '1 month' - interval '1 day' AS date_comptable, + rubrique_comptabilisation_id, + prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(montant_comptabilise_1) AS montant_regle, + 0 AS montant_regle_0, + SUM(montant_comptabilise_1) AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_factures_lignes_c + JOIN activite[PX].p_factures ON w_factures_lignes_c.no_facture = p_factures.NO_FACTURE + WHERE montant_comptabilise_1_c = montant_regle_1_c AND montant_comptabilise_1_c <> 0 + GROUP BY 1,2,3,4,5 + HAVING SUM(montant_comptabilise_1) <> 0; + + + + + -- Reglements partiels AMO + INSERT INTO w_factures_soldes_c + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date_trunc('month',DATE_REGLEMENT_AMO_C) + interval '1 month' - interval '1 day' AS date_comptable, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(MONTANT_REGLEMENT_AMO_C) AS montant_regle, + 0 AS montant_regle_0, + SUM(MONTANT_REGLEMENT_AMO_C) AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_OPERA_REG_complet + JOIN activite[PX].p_factures ON w_OPERA_REG_complet.no_facture = p_factures.NO_FACTURE + JOIN activite.t_prestations ON t_prestations.code_original = '*ATTNSCTI' + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = '*ATTNSCTI' + WHERE MONTANT_REGLEMENT_AMO_C IS NOT NULL AND MONTANT_REGLEMENT_AMO_C <> 0 AND + (montant_comptabilise_1_c <> montant_regle_1_c OR DATE_REGLEMENT_AMO_C < date_solde_1_c) + GROUP BY 1,2,3,4,5 + HAVING SUM(MONTANT_REGLEMENT_AMO_C) <> 0; + + -- contrepartie reglements partiels sur dossiers soldes AMO + INSERT INTO w_factures_soldes_c + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date_trunc('month',date_solde_1_c) + interval '1 month' - interval '1 day' AS date_comptable, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(0-MONTANT_REGLEMENT_AMO_C) AS montant_regle, + 0 AS montant_regle_0, + SUM(0-MONTANT_REGLEMENT_AMO_C) AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_OPERA_REG_complet + JOIN activite[PX].p_factures ON w_OPERA_REG_complet.no_facture = p_factures.NO_FACTURE + JOIN activite.t_prestations ON t_prestations.code_original = '*ATTNSCTI' + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = '*ATTNSCTI' + WHERE MONTANT_REGLEMENT_AMO_C IS NOT NULL AND MONTANT_REGLEMENT_AMO_C <> 0 AND + (montant_comptabilise_1_c = montant_regle_1_c AND DATE_REGLEMENT_AMO_C < date_solde_1_c) + GROUP BY 1,2,3,4,5 + HAVING SUM(MONTANT_REGLEMENT_AMO_C) <> 0; + + + + -- Reglements complets AMC + INSERT INTO w_factures_soldes_c + SELECT + facture_id, + w_factures_lignes_c.no_facture, + date_trunc('month',date_solde_2_c) + interval '1 month' - interval '1 day' AS date_comptable, + rubrique_comptabilisation_id, + prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(montant_comptabilise_2) AS montant_regle, + 0 AS montant_regle_0, + 0 AS montant_regle_1, + SUM(montant_comptabilise_2) AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_factures_lignes_c + JOIN activite[PX].p_factures ON w_factures_lignes_c.no_facture = p_factures.NO_FACTURE + WHERE montant_comptabilise_2_c = montant_regle_2_c AND montant_comptabilise_2_c <> 0 + GROUP BY 1,2,3,4,5 + HAVING SUM(montant_comptabilise_2) <> 0; + + + + + -- Reglements partiels AMC + INSERT INTO w_factures_soldes_c + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date_trunc('month',DATE_REGLEMENT_AMC_C) + interval '1 month' - interval '1 day' AS date_comptable, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(MONTANT_REGLEMENT_AMC_C) AS montant_regle, + 0 AS montant_regle_0, + 0 AS montant_regle_1, + SUM(MONTANT_REGLEMENT_AMC_C) AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_OPERA_REG_complet + JOIN activite[PX].p_factures ON w_OPERA_REG_complet.no_facture = p_factures.NO_FACTURE + JOIN activite.t_prestations ON t_prestations.code_original = '*ATTNSCTI' + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = '*ATTNSCTI' + WHERE MONTANT_REGLEMENT_AMC_C IS NOT NULL AND MONTANT_REGLEMENT_AMC_C <> 0 AND + (montant_comptabilise_2_c <> montant_regle_2_c OR DATE_REGLEMENT_AMC_C < date_solde_2_c) + GROUP BY 1,2,3,4,5 + HAVING SUM(MONTANT_REGLEMENT_AMC_C) <> 0; + + -- contrepartie reglements partiels sur dossiers soldes AMC + INSERT INTO w_factures_soldes_c + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date_trunc('month',date_solde_2_c) + interval '1 month' - interval '1 day' AS date_comptable, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(0-MONTANT_REGLEMENT_AMC_C) AS montant_regle, + 0 AS montant_regle_0, + 0 AS montant_regle_1, + SUM(0-MONTANT_REGLEMENT_AMC_C) AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_OPERA_REG_complet + JOIN activite[PX].p_factures ON w_OPERA_REG_complet.no_facture = p_factures.NO_FACTURE + JOIN activite.t_prestations ON t_prestations.code_original = '*ATTNSCTI' + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = '*ATTNSCTI' + WHERE MONTANT_REGLEMENT_AMC_C IS NOT NULL AND MONTANT_REGLEMENT_AMC_C <> 0 AND + (montant_comptabilise_2_c = montant_regle_2_c AND DATE_REGLEMENT_AMC_C < date_solde_2_c) + GROUP BY 1,2,3,4,5 + HAVING SUM(MONTANT_REGLEMENT_AMC_C) <> 0; + + + + -- Reglements complets IPP + INSERT INTO w_factures_soldes_c + SELECT + facture_id, + w_factures_lignes_c.no_facture, + date_trunc('month',date_solde_0_c) + interval '1 month' - interval '1 day' AS date_comptable, + rubrique_comptabilisation_id, + prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(montant_comptabilise_0) AS montant_regle, + SUM(montant_comptabilise_0) AS montant_regle_0, + 0 AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_factures_lignes_c + JOIN activite[PX].p_factures ON w_factures_lignes_c.no_facture = p_factures.NO_FACTURE + WHERE montant_comptabilise_0_c = montant_regle_0_c AND montant_comptabilise_0_c <> 0 + GROUP BY 1,2,3,4,5 + HAVING SUM(montant_comptabilise_0) <> 0; + + + -- Reglements partiels IPP + INSERT INTO w_factures_soldes_c + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date_trunc('month',DATE_REGLEMENT_IPP_C) + interval '1 month' - interval '1 day' AS date_comptable, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(MONTANT_REGLEMENT_IPP_C) AS montant_regle, + SUM(MONTANT_REGLEMENT_IPP_C) AS montant_regle_0, + 0 AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_OPERA_REG_complet + JOIN activite[PX].p_factures ON w_OPERA_REG_complet.no_facture = p_factures.NO_FACTURE + JOIN activite.t_prestations ON t_prestations.code_original = '*ATTNSCTI' + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = '*ATTNSCTI' + WHERE MONTANT_REGLEMENT_IPP_C IS NOT NULL AND MONTANT_REGLEMENT_IPP_C <> 0 AND + (montant_comptabilise_0_c <> montant_regle_0_c OR DATE_REGLEMENT_IPP_C < date_solde_0_c) + GROUP BY 1,2,3,4,5 + HAVING SUM(MONTANT_REGLEMENT_IPP_C) <> 0; + + -- contrepartie reglements partiels sur dossiers soldes IPP + INSERT INTO w_factures_soldes_c + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date_trunc('month',date_solde_0_c) + interval '1 month' - interval '1 day' AS date_comptable, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(0-MONTANT_REGLEMENT_IPP_C) AS montant_regle, + SUM(0-MONTANT_REGLEMENT_IPP_C) AS montant_regle_0, + 0 AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_OPERA_REG_complet + JOIN activite[PX].p_factures ON w_OPERA_REG_complet.no_facture = p_factures.NO_FACTURE + JOIN activite.t_prestations ON t_prestations.code_original = '*ATTNSCTI' + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = '*ATTNSCTI' + WHERE MONTANT_REGLEMENT_IPP_C IS NOT NULL AND MONTANT_REGLEMENT_IPP_C <> 0 AND + (montant_comptabilise_0_c = montant_regle_0_c AND DATE_REGLEMENT_IPP_C < date_solde_0_c) + GROUP BY 1,2,3,4,5 + HAVING SUM(MONTANT_REGLEMENT_IPP_C) <> 0; + + + -- Validation + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_8'); + + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisation_id, + prestation_id, + SUM(montant_comptabilise), + SUM(montant_comptabilise_0), + SUM(montant_comptabilise_1), + SUM(montant_comptabilise_2), + SUM(montant_comptabilise_22), + SUM(montant_regle), + SUM(montant_regle_0), + SUM(montant_regle_1), + SUM(montant_regle_2), + SUM(montant_regle_22) + FROM w_factures_soldes_c + GROUP BY 1,2,3,4,5; + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_8'); + + + + ]]> + + + + '1' AND + p_factures.provider_id = 2 + JOIN prod_cegi.CJ_LSRGP ON CJ_LSRGP.SEJ_ID = CJ_SEJOUR.SEJ_ID AND LSR_ACTIF = 1 + JOIN prod_cegi.CJ_LSCCAM ON CJ_LSCCAM.LSR_ID = CJ_LSRGP.LSR_ID AND LSCA_ACTIF = 1 + JOIN prod_cegi.CJ_CCAM ON CJ_CCAM.CCAM_ID = CJ_LSCCAM.CCAM_ID + JOIN prod_cegi.CJ_PRA ON CJ_PRA.TER_ID = CJ_LSCCAM.TER_ID + JOIN base.t_actes ON t_actes.code = substring(CCAM_CODE, 1, 7) + JOIN base.t_ccam_regroupements ON ccam_regroupement_id_1 = t_ccam_regroupements.oid + JOIN activite.t_prestations ON t_prestations.code = CASE WHEN CCAM_ACTV = '1' THEN t_ccam_regroupements.code ELSE 'ADA' END + JOIN activite[PX].t_medecins_administratifs ON PRA_LIBC = t_medecins_administratifs.code_original; + + + ]]> + + + + 0; + + + CREATE INDEX w_factures_lignes_h_i1 + ON w_factures_lignes_h + USING btree + (no_sejour); + + UPDATE w_factures_lignes_h + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_mouvements_sejour + WHERE + w_factures_lignes_h.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_lignes_h.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + w_factures_lignes_h.lieu_id <> p_mouvements_sejour.lieu_id; + + + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_9'); + + INSERT INTO activite[PX].p_factures_lignes_h ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + acte_id, + activite_ccam, + extension_ccam, + phase_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + acte_id, + activite_ccam, + extension_ccam, + phase_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour + FROM w_factures_lignes_h; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_9'); + + -- Lieu exécution + + UPDATE activite[PX].p_factures_lignes_h + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_factures, + activite[PX].p_mouvements_sejour + WHERE + p_factures_lignes_h.no_facture = p_factures.no_facture AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + p_factures_lignes_h.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + p_factures_lignes_h.lieu_id <> p_mouvements_sejour.lieu_id; + + ]]> + + + + 0; + + + UPDATE activite[PX].p_factures SET + montant_comptabilise_h = montant_comptabilise_h + ecart, + montant_comptabilise_1_h = montant_comptabilise_1_h + ecart_1, + montant_comptabilise_2_h = montant_comptabilise_2_h + ecart_2, + montant_comptabilise_22_h = montant_comptabilise_22_h + ecart_22, + montant_comptabilise_0_h = montant_comptabilise_0_h + ecart_0 + FROM w_correction_compta + WHERE w_correction_compta.no_facture = p_factures.no_facture; + + -- Ventes + + DROP TABLE IF EXISTS w_factures_soldes_h; + CREATE TEMP TABLE w_factures_soldes_h AS + SELECT + facture_id, + no_facture, + date_trunc('month',date_vente) + interval '1 month' - interval '1 day' AS date_comptable, + medecin_comptabilise_id, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS montant_regle, + 0::numeric AS montant_regle_0, + 0::numeric AS montant_regle_1, + 0::numeric AS montant_regle_2, + 0::numeric AS montant_regle_22 + FROM w_factures_lignes_h + WHERE date_vente IS NOT NULL AND + (montant_comptabilise <> 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4; + + -- Reglements complets AMO + INSERT INTO w_factures_soldes_h + SELECT + facture_id, + w_factures_lignes_h.no_facture, + date_trunc('month',date_solde_1_h) + interval '1 month' - interval '1 day' AS date_comptable, + medecin_comptabilise_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(montant_comptabilise_1) AS montant_regle, + 0 AS montant_regle_0, + SUM(montant_comptabilise_1) AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_factures_lignes_h + JOIN activite[PX].p_factures ON w_factures_lignes_h.no_facture = p_factures.NO_FACTURE + WHERE montant_comptabilise_1_h = montant_regle_1_h AND montant_comptabilise_1_h <> 0 + GROUP BY 1,2,3,4 + HAVING SUM(montant_comptabilise_1) <> 0; + + + -- Reglements partiels AMO + INSERT INTO w_factures_soldes_h + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date_trunc('month',DATE_REGLEMENT_AMO_H) + interval '1 month' - interval '1 day' AS date_comptable, + t_medecins_administratifs.oid AS medecin_comptabilise_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(MONTANT_REGLEMENT_AMO_H) AS montant_regle, + 0 AS montant_regle_0, + SUM(MONTANT_REGLEMENT_AMO_H) AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_OPERA_REG_complet + JOIN activite[PX].p_factures ON w_OPERA_REG_complet.no_facture = p_factures.NO_FACTURE + JOIN activite[PX].t_medecins_administratifs ON t_medecins_administratifs.code_original = '*ATTNSCTI' + WHERE MONTANT_REGLEMENT_AMO_H IS NOT NULL AND MONTANT_REGLEMENT_AMO_H <> 0 AND + (montant_comptabilise_1_h <> montant_regle_1_h OR DATE_REGLEMENT_AMO_H < date_solde_1_h) + GROUP BY 1,2,3,4 + HAVING SUM(MONTANT_REGLEMENT_AMO_H) <> 0; + + -- contrepartie reglements partiels sur dossiers soldes AMO + INSERT INTO w_factures_soldes_h + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date_trunc('month',date_solde_1_h) + interval '1 month' - interval '1 day' AS date_comptable, + t_medecins_administratifs.oid AS medecin_comptabilise_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(0-MONTANT_REGLEMENT_AMO_H) AS montant_regle, + 0 AS montant_regle_0, + SUM(0-MONTANT_REGLEMENT_AMO_H) AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_OPERA_REG_complet + JOIN activite[PX].p_factures ON w_OPERA_REG_complet.no_facture = p_factures.NO_FACTURE + JOIN activite[PX].t_medecins_administratifs ON t_medecins_administratifs.code_original = '*ATTNSCTI' + WHERE MONTANT_REGLEMENT_AMO_H IS NOT NULL AND MONTANT_REGLEMENT_AMO_H <> 0 AND + (montant_comptabilise_1_h = montant_regle_1_h AND DATE_REGLEMENT_AMO_H < date_solde_1_h) + GROUP BY 1,2,3,4 + HAVING SUM(MONTANT_REGLEMENT_AMO_H) <> 0; + + + + -- Reglements complets AMC + INSERT INTO w_factures_soldes_h + SELECT + facture_id, + w_factures_lignes_h.no_facture, + date_trunc('month',date_solde_2_h) + interval '1 month' - interval '1 day' AS date_comptable, + medecin_comptabilise_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(montant_comptabilise_2) AS montant_regle, + 0 AS montant_regle_0, + 0 AS montant_regle_1, + SUM(montant_comptabilise_2) AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_factures_lignes_h + JOIN activite[PX].p_factures ON w_factures_lignes_h.no_facture = p_factures.NO_FACTURE + WHERE montant_comptabilise_2_h = montant_regle_2_h AND montant_comptabilise_2_h <> 0 + GROUP BY 1,2,3,4 + HAVING SUM(montant_comptabilise_2) <> 0; + + + + + -- Reglements partiels AMC + INSERT INTO w_factures_soldes_h + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date_trunc('month',DATE_REGLEMENT_AMC_H) + interval '1 month' - interval '1 day' AS date_comptable, + t_medecins_administratifs.oid AS medecin_comptabilise_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(MONTANT_REGLEMENT_AMC_H) AS montant_regle, + 0 AS montant_regle_0, + 0 AS montant_regle_1, + SUM(MONTANT_REGLEMENT_AMC_H) AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_OPERA_REG_complet + JOIN activite[PX].p_factures ON w_OPERA_REG_complet.no_facture = p_factures.NO_FACTURE + JOIN activite[PX].t_medecins_administratifs ON t_medecins_administratifs.code_original = '*ATTNSCTI' + WHERE MONTANT_REGLEMENT_AMC_H IS NOT NULL AND MONTANT_REGLEMENT_AMC_H <> 0 AND + (montant_comptabilise_2_h <> montant_regle_2_h OR DATE_REGLEMENT_AMC_H < date_solde_2_h) + GROUP BY 1,2,3,4 + HAVING SUM(MONTANT_REGLEMENT_AMC_H) <> 0; + + -- contrepartie reglements partiels sur dossiers soldes AMC + INSERT INTO w_factures_soldes_h + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date_trunc('month',date_solde_2_h) + interval '1 month' - interval '1 day' AS date_comptable, + t_medecins_administratifs.oid AS medecin_comptabilise_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(0-MONTANT_REGLEMENT_AMC_H) AS montant_regle, + 0 AS montant_regle_0, + 0 AS montant_regle_1, + SUM(0-MONTANT_REGLEMENT_AMC_H) AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_OPERA_REG_complet + JOIN activite[PX].p_factures ON w_OPERA_REG_complet.no_facture = p_factures.NO_FACTURE + JOIN activite[PX].t_medecins_administratifs ON t_medecins_administratifs.code_original = '*ATTNSCTI' + WHERE MONTANT_REGLEMENT_AMC_H IS NOT NULL AND MONTANT_REGLEMENT_AMC_H <> 0 AND + (montant_comptabilise_2_h = montant_regle_2_h AND DATE_REGLEMENT_AMC_H < date_solde_2_h) + GROUP BY 1,2,3,4 + HAVING SUM(MONTANT_REGLEMENT_AMC_H) <> 0; + + + + -- Reglements complets IPP + INSERT INTO w_factures_soldes_h + SELECT + facture_id, + w_factures_lignes_h.no_facture, + date_trunc('month',date_solde_0_h) + interval '1 month' - interval '1 day' AS date_comptable, + medecin_comptabilise_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(montant_comptabilise_0) AS montant_regle, + SUM(montant_comptabilise_0) AS montant_regle_0, + 0 AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_factures_lignes_h + JOIN activite[PX].p_factures ON w_factures_lignes_h.no_facture = p_factures.NO_FACTURE + WHERE montant_comptabilise_0_h = montant_regle_0_h AND montant_comptabilise_0_h <> 0 + GROUP BY 1,2,3,4 + HAVING SUM(montant_comptabilise_0) <> 0; + + + -- Reglements partiels IPP + INSERT INTO w_factures_soldes_h + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date_trunc('month',DATE_REGLEMENT_IPP_H) + interval '1 month' - interval '1 day' AS date_comptable, + t_medecins_administratifs.oid AS medecin_comptabilise_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(MONTANT_REGLEMENT_IPP_H) AS montant_regle, + SUM(MONTANT_REGLEMENT_IPP_H) AS montant_regle_0, + 0 AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_OPERA_REG_complet + JOIN activite[PX].p_factures ON w_OPERA_REG_complet.no_facture = p_factures.NO_FACTURE + JOIN activite[PX].t_medecins_administratifs ON t_medecins_administratifs.code_original = '*ATTNSCTI' + WHERE MONTANT_REGLEMENT_IPP_H IS NOT NULL AND MONTANT_REGLEMENT_IPP_H <> 0 AND + (montant_comptabilise_0_h <> montant_regle_0_h OR DATE_REGLEMENT_IPP_H < date_solde_0_h) + GROUP BY 1,2,3,4 + HAVING SUM(MONTANT_REGLEMENT_IPP_H) <> 0; + + -- contrepartie reglements partiels sur dossiers soldes IPP + INSERT INTO w_factures_soldes_h + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date_trunc('month',date_solde_0_h) + interval '1 month' - interval '1 day' AS date_comptable, + t_medecins_administratifs.oid AS medecin_comptabilise_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(0-MONTANT_REGLEMENT_IPP_H) AS montant_regle, + SUM(0-MONTANT_REGLEMENT_IPP_H) AS montant_regle_0, + 0 AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_OPERA_REG_complet + JOIN activite[PX].p_factures ON w_OPERA_REG_complet.no_facture = p_factures.NO_FACTURE + JOIN activite[PX].t_medecins_administratifs ON t_medecins_administratifs.code_original = '*ATTNSCTI' + WHERE MONTANT_REGLEMENT_IPP_H IS NOT NULL AND MONTANT_REGLEMENT_IPP_H <> 0 AND + (montant_comptabilise_0_h = montant_regle_0_h AND DATE_REGLEMENT_IPP_H < date_solde_0_h) + GROUP BY 1,2,3,4 + HAVING SUM(MONTANT_REGLEMENT_IPP_H) <> 0; + + + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_h_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_h_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_h_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_h_8'); + + + INSERT INTO activite[PX].p_factures_soldes_h( + facture_id, + no_facture, + date_comptable, + medecin_comptabilise_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + facture_id, + no_facture, + date_comptable, + medecin_comptabilise_id, + SUM(montant_comptabilise), + SUM(montant_comptabilise_0), + SUM(montant_comptabilise_1), + SUM(montant_comptabilise_2), + SUM(montant_comptabilise_22), + SUM(montant_regle), + SUM(montant_regle_0), + SUM(montant_regle_1), + SUM(montant_regle_2), + SUM(montant_regle_22) + FROM w_factures_soldes_h + GROUP BY 1,2,3,4; + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_8'); + + + + + ]]> + + + + + + + + + + + + + + + 0 AND + XECF_TYPE > 0 AND + CJ_XECE.JNL_CODE <> ALL(SELECT JNL_CODE FROM prod_cegi.CJ_JNLNUMFAC) + GROUP BY 1 + ORDER BY 1; + + DROP TABLE IF EXISTS w_CJ_EFS; + CREATE TEMP TABLE w_CJ_EFS AS + SELECT nextval('activite[PX].s_factures'::regclass) AS oid, + subview.* + FROM ( + SELECT + CJ_EFS.EFS_ID, + MAX(CJ_EFS.SEJ_ID) AS SEJ_ID, + MAX(SEJ_NUMDOS) AS SEJ_NUMDOS, + MAX(EFTB2_NUMFAC) AS EFTB2_NUMFAC, + MAX(date(EFS_DT_DEB)) AS EFS_DT_DEB, + MAX(date(EFS_DT_FIN)) AS EFS_DT_FIN, + MAX(date(EFS_DT_FAC)) AS EFS_DT_FAC, + MAX(date(EFS_DT_ANNUL)) AS EFS_DT_ANNUL, + MAX(EFS_INACTIF) AS EFS_INACTIF, + MAX(EFS_TTC) AS EFS_TTC, + MAX(EFS_CPTA_TTC) AS EFS_CPTA_TTC, + MAX(EFS_HON_TTC) AS EFS_HON_TTC, + MAX(EFS_CPTA_HON_TTC) AS EFS_CPTA_HON_TTC, + MAX(EFS_DEP) AS EFS_DEP, + MAX(EFS_CPTA_HON_DEP) AS EFS_CPTA_HON_DEP, + SUM(CASE WHEN EFT_TER_TYPE = 'DBT' AND EFT_SEJHON IN (0) THEN EFT_TTC ELSE 0 END) AS EFT_TTC_0, + SUM(CASE WHEN EFT_TER_TYPE = 'DBT' AND EFT_SEJHON IN (0,2) THEN EFT_CPTA_TTC ELSE 0 END) AS EFT_CPTA_TTC_0, + SUM(CASE WHEN EFT_TER_TYPE = 'DBT' AND EFT_SEJHON IN (1,2) THEN EFT_TTC ELSE 0 END) AS EFT_HON_TTC_0, + SUM(CASE WHEN EFT_TER_TYPE = 'DBT' AND EFT_SEJHON IN (1) THEN EFT_CPTA_TTC ELSE 0 END) AS EFT_CPTA_HON_TTC_0, + SUM(CASE WHEN EFT_TER_TYPE = 'DBT' AND EFT_SEJHON IN (1,2) THEN EFT_DEP ELSE 0 END) AS EFT_DEP_0, + SUM(CASE WHEN EFT_TER_TYPE = 'DBT' AND EFT_SEJHON IN (1) THEN EFT_CPTA_DEP ELSE 0 END) AS EFT_CPTA_DEP_0, + SUM(CASE WHEN EFT_TER_TYPE = 'CAI' AND EFT_SEJHON IN (0) THEN EFT_TTC ELSE 0 END) AS EFT_TTC_1, + SUM(CASE WHEN EFT_TER_TYPE = 'CAI' AND EFT_SEJHON IN (0,2) THEN EFT_CPTA_TTC ELSE 0 END) AS EFT_CPTA_TTC_1, + SUM(CASE WHEN EFT_TER_TYPE = 'CAI' AND EFT_SEJHON IN (1,2) THEN EFT_TTC ELSE 0 END) AS EFT_HON_TTC_1, + SUM(CASE WHEN EFT_TER_TYPE = 'CAI' AND EFT_SEJHON IN (1) THEN EFT_CPTA_TTC ELSE 0 END) AS EFT_CPTA_HON_TTC_1, + SUM(CASE WHEN EFT_TER_TYPE = 'CAI' AND EFT_SEJHON IN (1,2) THEN EFT_DEP ELSE 0 END) AS EFT_DEP_1, + SUM(CASE WHEN EFT_TER_TYPE = 'CAI' AND EFT_SEJHON IN (1) THEN EFT_CPTA_DEP ELSE 0 END) AS EFT_CPTA_DEP_1, + SUM(CASE WHEN EFT_TER_TYPE = 'MUT' AND EFT_SEJHON IN (0) THEN EFT_TTC ELSE 0 END) AS EFT_TTC_2, + SUM(CASE WHEN EFT_TER_TYPE = 'MUT' AND EFT_SEJHON IN (0,2) THEN EFT_CPTA_TTC ELSE 0 END) AS EFT_CPTA_TTC_2, + SUM(CASE WHEN EFT_TER_TYPE = 'MUT' AND EFT_SEJHON IN (1,2) THEN EFT_TTC ELSE 0 END) AS EFT_HON_TTC_2, + SUM(CASE WHEN EFT_TER_TYPE = 'MUT' AND EFT_SEJHON IN (1) THEN EFT_CPTA_TTC ELSE 0 END) AS EFT_CPTA_HON_TTC_2, + SUM(CASE WHEN EFT_TER_TYPE = 'MUT' AND EFT_SEJHON IN (1,2) THEN EFT_DEP ELSE 0 END) AS EFT_DEP_2, + SUM(CASE WHEN EFT_TER_TYPE = 'MUT' AND EFT_SEJHON IN (1) THEN EFT_CPTA_DEP ELSE 0 END) AS EFT_CPTA_DEP_2, + MAX(COALESCE(XECF_MONT,0)) AS XECF_MONT, + MAX(COALESCE(XECF_HON_MONT,0)) AS XECF_HON_MONT, + MAX(COALESCE(XECF_MONT_0,0)) AS XECF_MONT_0, + MAX(COALESCE(XECF_HON_MONT_0,0)) AS XECF_HON_MONT_0, + MAX(COALESCE(XECF_MONT_1,0)) AS XECF_MONT_1, + MAX(COALESCE(XECF_HON_MONT_1,0)) AS XECF_HON_MONT_1, + MAX(COALESCE(XECF_MONT_2,0)) AS XECF_MONT_2, + MAX(COALESCE(XECF_HON_MONT_2,0)) AS XECF_HON_MONT_2, + MAX(COALESCE(XECF_DATE_0,'00010101')) AS XECF_DATE_0, + MAX(COALESCE(XECF_HON_DATE_0,'00010101')) AS XECF_HON_DATE_0, + MAX(COALESCE(XECF_DATE_1,'00010101')) AS XECF_DATE_1, + MAX(COALESCE(XECF_HON_DATE_1,'00010101')) AS XECF_HON_DATE_1, + MAX(COALESCE(XECF_DATE_2,'00010101')) AS XECF_DATE_2, + MAX(COALESCE(XECF_HON_DATE_2,'00010101')) AS XECF_HON_DATE_2, + MAX(EFS_ETAT) AS EFS_ETAT, + MAX(EFS_ID_AVOIR) AS EFS_ID_AVOIR, + MAX(EFS_ID_RCAL) AS EFS_ID_RCAL, + MAX(CASE WHEN EFT_TER_TYPE = 'DBT' THEN TER_ID ELSE 0 END) AS TER_ID_0, + MAX(CASE WHEN EFT_TER_TYPE = 'CAI' THEN TER_ID ELSE 0 END) AS TER_ID_1, + MAX(CASE WHEN EFT_TER_TYPE = 'MUT' THEN TER_ID ELSE 0 END) AS TER_ID_2, + COALESCE(MAX(HTR_CREATION),'20991231') AS HTR_CREATION, + COALESCE(MAX(HTR_LOT),'') AS HTR_LOT, + COALESCE(MAX(ECR_DATCPTA),'20991231') AS ECR_DATCPTA, + MAX(SEJ_CP) AS code_cp_demandee + FROM prod_cegi.CJ_EFS + JOIN w_CJ_SEJOUR_select ON CJ_EFS.SEJ_ID = w_CJ_SEJOUR_select.SEJ_ID + JOIN prod_cegi.CJ_EFTB2 ON CJ_EFS.EFTB2_ID = CJ_EFTB2.EFTB2_ID + JOIN prod_cegi.CJ_EFT ON CJ_EFS.EFS_ID = CJ_EFT.EFS_ID + LEFT JOIN w_CJ_EFT_exp ON CJ_EFT.EFT_ID = w_CJ_EFT_exp.EFT_ID + LEFT JOIN w_CJ_EFS_ventes ON CJ_EFS.EFS_ID = w_CJ_EFS_ventes.EFS_ID + LEFT JOIN w_CJ_EFS_reg ON CJ_EFS.EFS_ID = w_CJ_EFS_reg.EFS_ID + GROUP BY 1 + ORDER BY 1 + + ) subview; + + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_14'); + + INSERT INTO activite[PX].p_factures ( + oid, + no_sejour, + provider_id, + sejour_id, + no_facture, + date_debut, + date_fin, + type_facture, + code_cp_demandee, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + code_cloture, + nb_rejets, + no_facture_reference, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + particularite_t2a, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h + ) + SELECT + w_CJ_EFS.oid, + SEJ_NUMDOS AS no_sejour, + 0::bigint AS provider_id, + p_sejours.oid AS sejour_id, + EFTB2_NUMFAC AS no_facture, + EFS_DT_DEB AS date_debut, + EFS_DT_FIN AS date_fin, + CASE + WHEN EFS_ID_AVOIR = 0 AND EFS_ID_RCAL = 0 THEN '0' + WHEN EFS_ETAT IN ('A') THEN '1' + WHEN EFS_ETAT IN ('F') AND EFS_ID_AVOIR <> 0 THEN 'X' + + ELSE '0' END AS type_facture, + p_sejours.code_cp_demandee, + '1' AS code_facture, + EFS_DT_FAC AS date_facture, + CASE WHEN ECR_DATCPTA <> '20991231' THEN '1' ELSE '0' END AS code_vente, + ECR_DATCPTA AS date_vente, + extract('year' FROM ECR_DATCPTA) * 100 + extract('month' FROM ECR_DATCPTA) AS mois_vente, + '0'::text AS code_cloture, + CASE WHEN EFS_ETAT IN ('A') THEN 1 ELSE 0 END AS nb_rejets, + EFTB2_NUMFAC AS no_facture_reference, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id, + ''::text AS particularite_t2a, + COALESCE(w_CJ_ORG_1.tiers_payant_id, p_sejours.tiers_payant_1_id) AS tiers_payant_1_id, + COALESCE(w_CJ_ORG_2.tiers_payant_id, p_sejours.tiers_payant_2_id) AS tiers_payant_2_id, + 0::bigint AS tiers_payant_22_id, + COALESCE(t_tiers_payant_0.oid, p_sejours.tiers_payant_0_id) AS tiers_payant_0_id, + HTR_CREATION AS date_expedition, + HTR_CREATION AS date_expedition_0, + HTR_CREATION AS date_expedition_1, + HTR_CREATION AS date_expedition_2, + HTR_CREATION AS date_expedition_22, + '1'::text AS code_expedie_0, + CASE WHEN HTR_CREATION <> '20991231' THEN '1' ELSE '0' END::text AS code_expedie_1, + CASE WHEN HTR_CREATION <> '20991231' THEN '1' ELSE '0' END::text AS code_expedie_2, + CASE WHEN HTR_CREATION <> '20991231' THEN '1' ELSE '0' END::text AS code_expedie_22, + ''::text AS no_bordereau_0, + HTR_LOT AS no_bordereau_1, + ''::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + GREATEST(XECF_DATE_0,XECF_DATE_1,XECF_DATE_2,XECF_HON_DATE_0,XECF_HON_DATE_1,XECF_HON_DATE_2) AS date_solde, + GREATEST(XECF_DATE_0,XECF_DATE_1,XECF_DATE_2) AS date_solde_c, + GREATEST(XECF_HON_DATE_0,XECF_HON_DATE_1,XECF_HON_DATE_2) AS date_solde_h, + XECF_DATE_0 AS date_solde_0_c, + XECF_HON_DATE_0 AS date_solde_0_h, + XECF_DATE_1 AS date_solde_1_c, + XECF_HON_DATE_1 AS date_solde_1_h, + XECF_DATE_2 AS date_solde_2_c, + XECF_HON_DATE_2 AS date_solde_2_h, + '00010101'::date AS date_solde_22_c, + '00010101'::date AS date_solde_22_h, + EFS_TTC AS montant_facture_c, + EFS_HON_TTC AS montant_facture_h, + EFT_TTC_0 AS montant_facture_0_c, + EFT_HON_TTC_0 AS montant_facture_0_h, + EFT_TTC_1 AS montant_facture_1_c, + EFT_HON_TTC_1 AS montant_facture_1_h, + EFT_TTC_2 AS montant_facture_2_c, + EFT_HON_TTC_2 AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + EFS_CPTA_TTC AS montant_comptabilise_c, + EFS_CPTA_HON_TTC AS montant_comptabilise_h, + EFT_CPTA_TTC_0 AS montant_comptabilise_0_c, + EFT_CPTA_HON_TTC_0 AS montant_comptabilise_0_h, + EFT_CPTA_TTC_1 AS montant_comptabilise_1_c, + EFT_CPTA_HON_TTC_1 AS montant_comptabilise_1_h, + EFT_CPTA_TTC_2 AS montant_comptabilise_2_c, + EFT_CPTA_HON_TTC_2 AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + XECF_MONT AS montant_regle_c, + XECF_HON_MONT AS montant_regle_h, + XECF_MONT_0 AS montant_regle_0_c, + XECF_HON_MONT_0 AS montant_regle_0_h, + XECF_MONT_1 AS montant_regle_1_c, + XECF_HON_MONT_1 AS montant_regle_1_h, + XECF_MONT_2 AS montant_regle_2_c, + XECF_HON_MONT_2 AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h + FROM w_CJ_EFS + JOIN activite[PX].p_sejours ON p_sejours.code_original = SEJ_NUMDOS + LEFT JOIN w_CJ_ORG w_CJ_ORG_1 ON TER_ID_1 = w_CJ_ORG_1.TER_ID + LEFT JOIN w_CJ_ORG w_CJ_ORG_2 ON TER_ID_2 = w_CJ_ORG_2.TER_ID + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_0 ON t_tiers_payant_0.code_original = 'PATIENT'; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_14'); + + + -- Factures terminées sans facturation -> Ajouter facture à 0 + INSERT INTO activite[PX].p_factures ( + no_sejour, + provider_id, + sejour_id, + no_facture, + date_debut, + date_fin, + type_facture, + code_cp_demandee, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + code_cloture, + nb_rejets, + no_facture_reference, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + particularite_t2a, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h + ) + SELECT + SEJ_NUMDOS AS no_sejour, + 0::bigint AS provider_id, + MAX(p_sejours.oid) AS sejour_id, + MAX(SEJ_NUMDOS||'-FT') AS no_facture, + MAX(p_sejours.date_entree) AS date_debut, + MAX(p_sejours.date_sortie) AS date_fin, + '0'::text AS type_facture, + MAX(p_sejours.code_cp_demandee), + '1'::text AS code_facture, + MAX(p_sejours.date_sortie) AS date_facture, + '0' AS code_vente, + '20991231' AS date_vente, + 209912 AS mois_vente, + '0'::text AS code_cloture, + 0 AS nb_rejets, + MAX(SEJ_NUMDOS||'-FT') AS no_facture_reference, + MAX(p_sejours.ghs_id), + MAX(p_sejours.ghs_bebe1_id), + MAX(p_sejours.ghs_bebe2_id), + MAX(p_sejours.ghs_bebe3_id), + ''::text AS particularite_t2a, + MAX(p_sejours.tiers_payant_1_id) AS tiers_payant_1_id, + MAX(p_sejours.tiers_payant_2_id) AS tiers_payant_2_id, + 0::bigint AS tiers_payant_22_id, + MAX(p_sejours.tiers_payant_0_id) AS tiers_payant_0_id, + '20991231' AS date_expedition, + '20991231' AS date_expedition_0, + '20991231' AS date_expedition_1, + '20991231' AS date_expedition_2, + '20991231' AS date_expedition_22, + '1'::text AS code_expedie_0, + '1' AS code_expedie_1, + '1' AS code_expedie_2, + '1' AS code_expedie_22, + ''::text AS no_bordereau_0, + ''::text AS no_bordereau_1, + ''::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + MAX(p_sejours.date_sortie) AS date_solde, + MAX(p_sejours.date_sortie) AS date_solde_c, + MAX(p_sejours.date_sortie) AS date_solde_h, + MAX(p_sejours.date_sortie) AS date_solde_0_c, + MAX(p_sejours.date_sortie) AS date_solde_0_h, + MAX(p_sejours.date_sortie) AS date_solde_1_c, + MAX(p_sejours.date_sortie) AS date_solde_1_h, + MAX(p_sejours.date_sortie) AS date_solde_2_c, + MAX(p_sejours.date_sortie) AS date_solde_2_h, + '00010101'::date AS date_solde_22_c, + '00010101'::date AS date_solde_22_h, + 0::numeric AS montant_facture_c, + 0::numeric AS montant_facture_h, + 0::numeric AS montant_facture_0_c, + 0::numeric AS montant_facture_0_h, + 0::numeric AS montant_facture_1_c, + 0::numeric AS montant_facture_1_h, + 0::numeric AS montant_facture_2_c, + 0::numeric AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_comptabilise_c, + 0::numeric AS montant_comptabilise_h, + 0::numeric AS montant_comptabilise_0_c, + 0::numeric AS montant_comptabilise_0_h, + 0::numeric AS montant_comptabilise_1_c, + 0::numeric AS montant_comptabilise_1_h, + 0::numeric AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + 0::numeric AS montant_regle_1_h, + 0::numeric AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h + FROM prod_cegi.CJ_ATF + JOIN prod_cegi.CJ_SEJOUR ON CJ_ATF.SEJ_ID = CJ_SEJOUR.SEJ_ID + JOIN activite[PX].p_sejours ON p_sejours.code_original = SEJ_NUMDOS AND provider_id = 0 + LEFT JOIN activite[PX].p_factures ON p_factures.no_sejour = p_sejours.no_sejour + WHERE ATF_TERMINE = 1 AND code_sorti = '1' AND p_factures.no_facture IS NULL + GROUP BY 1 + ; + + + UPDATE activite[PX].p_factures + SET facture_od_avoir_id = p_factures_od_avoir.oid + FROM activite[PX].p_factures p_factures_od_avoir + WHERE p_factures.no_facture_od_avoir = p_factures_od_avoir.no_facture AND + p_factures.no_facture_od_avoir <> ''; + + + + UPDATE activite[PX].p_sejours + SET est_sans_facturation = '1' + WHERE lieu_sortie_id IN + (SELECT oid FROM activite[PX].t_lieux WHERE + service_facturation_id IN + (SELECT oid FROM activite[PX].t_services_facturation WHERE est_sans_facturation = '1') OR + unite_fonctionnelle_id IN + (SELECT oid FROM activite[PX].t_unites_fonctionnelles WHERE est_sans_facturation = '1') + ); + + + -- Séjours sans facture + + DROP TABLE IF EXISTS w_factures_trous; + CREATE TEMP TABLE w_factures_trous AS + SELECT + p_sejours.finess, + p_sejours.no_sejour, + p_sejours.date_entree, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.code_cp_demandee, + COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire, + p_sejours.code_sorti, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie, + MAX(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END) AS date_fin_facture, + date(MAX(COALESCE(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours + FROM activite[PX].p_sejours + JOIN w_CJ_SEJOUR_select ON p_sejours.code_original = SEJ_NUMDOS + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND no_facture NOT LIKE 'E%' + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE p_sejours.etat = '' AND + p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND + p_sejours.provider_id = 0 AND + p_sejours.code_prevu = '0' AND + p_sejours.type_sejour <> '6' AND + p_sejours.type_sejour <> '9' AND + date_entree <= now() + GROUP BY 1,2,3,4,5,6,7,8,9,10,11; + + + + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + provider_id, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee, + date_debut, + date_fin) + SELECT finess, + no_sejour, + 0::bigint AS provider_id, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee , + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13; + + + UPDATE activite[PX].p_factures + SET facture_reference_id = p_factures_references.oid + FROM activite[PX].p_factures p_factures_references + WHERE p_factures.no_facture_reference = p_factures_references.no_facture AND + p_factures.facture_reference_id IS DISTINCT FROM p_factures_references.oid; + + ]]> + + + + 99999 THEN 99999 ELSE GREATEST(0,LSPST_QTE*LSPST_COEFF) END AS nb_rubrique, + 1::numeric AS coefficient, + w_PST_rub_pre.rubrique_facturation_id, + w_PST_rub_pre.prestation_id, + LSPST_PU AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id, + COALESCE(w_CJ_LSLPP.lpp_id,0) AS lpp_id, + COALESCE(w_CJ_LSUCD.ucd_id,0) AS ucd_id + FROM prod_cegi.CJ_LSPST + JOIN prod_cegi.CJ_LSRGP ON CJ_LSPST.LSR_ID = CJ_LSRGP.LSR_ID + JOIN prod_cegi.CJ_SEJOUR ON CJ_SEJOUR.SEJ_ID = CJ_LSRGP.SEJ_ID + JOIN activite[PX].p_sejours ON SEJ_NUMDOS = p_sejours.no_sejour + JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND + type_facture = 'E' AND p_factures.provider_id = 0 + LEFT JOIN w_PST_rub_pre ON CJ_LSPST.PST_ID = w_PST_rub_pre.PST_ID + LEFT JOIN w_CJ_LSLPP ON w_CJ_LSLPP.LSPST_ID = CJ_LSPST.LSPST_ID + LEFT JOIN w_CJ_LSUCD ON w_CJ_LSUCD.LSPST_ID = CJ_LSPST.LSPST_ID + WHERE + date(LSPST_DT_DEB) BETWEEN p_factures.date_debut AND p_factures.date_fin AND + LSR_TYPE IN ('SEJ', 'HOT', 'LPP', 'UCD', 'UC2') AND + LSPST_TYPE NOT IN ('GHS','PJ','CS') AND + code_facture <> '1' AND + LSPST_PU <> 0 AND + abs(LSPST_QTE*LSPST_COEFF*LSPST_PU) < 100000 AND + ((p_factures.code_cp_demandee = 1 OR (SELECT valeur from activite.t_divers WHERE code = 'ENCOURSVALOCP') = 1) OR is_cp !=1) + ; + + -- Indication des CP dans dossier (si une seule ligne de CP saisie) + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + no_facture, + facture_id, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id + ) + SELECT + p_factures.no_facture, + p_factures.oid AS facture_id, + MIN(date(GREATEST(SNMA_DT_DEB, p_factures.date_debut))) AS date_debut, + MAX(date(LEAST(CASE WHEN SNMA_DT_FIN > SNMA_DT_DEB THEN SNMA_DT_FIN ELSE NULL END,p_factures.date_fin))) AS date_fin, + GREATEST(MAX(date(LEAST(CASE WHEN SNMA_DT_FIN > SNMA_DT_DEB THEN SNMA_DT_FIN ELSE NULL END,p_factures.date_fin))) - MIN(date(GREATEST(SNMA_DT_DEB, p_factures.date_debut))),1) AS nb_rubrique, + 1::numeric AS coefficient, + MAX(w_PST_rub_pre.rubrique_facturation_id), + MAX(w_PST_rub_pre.prestation_id) AS prestation_id, + MAX(w_PST_rub_pre.LCS_PRIX) AS prix_unitaire, + MAX(p_sejours.lieu_sortie_id) AS lieu_id + FROM prod_cegi.CJ_SEJNMA + JOIN prod_cegi.CJ_CHGNVE ON CJ_SEJNMA.CHGNVE_ID = CJ_CHGNVE.CHGNVE_ID + JOIN prod_cegi.CJ_SEJOUR ON CJ_SEJOUR.SEJ_ID = CJ_CHGNVE.SEJ_ID + JOIN activite[PX].p_sejours ON code_original = SEJ_NUMDOS AND type_sejour IN ('1','2') + JOIN activite[PX].p_factures ON p_factures.no_sejour = p_sejours.no_sejour AND + type_facture = 'E' AND p_factures.provider_id = 0 + JOIN w_PST_rub_pre ON CJ_SEJNMA.PST_ID = w_PST_rub_pre.PST_ID AND is_cp = '1' + LEFT JOIN activite[PX].p_factures_lignes_non_facturees_c ON + p_factures_lignes_non_facturees_c.no_facture = p_factures.no_facture AND + p_factures_lignes_non_facturees_c.prestation_id = w_PST_rub_pre.prestation_id + WHERE CHGNVE_ACTIF = '1' AND + p_factures_lignes_non_facturees_c.no_facture IS NULL AND + (p_factures.code_cp_demandee = 1 OR (SELECT valeur from activite.t_divers WHERE code = 'ENCOURSVALOCP') = 1) + GROUP BY 1,2 + HAVING count(distinct w_PST_rub_pre.rubrique_facturation_id) = 1 + ORDER BY 1 + ; + + -- Suppléments provenant du PMSI + SELECT base.cti_execute( + ' + DROP TABLE IF EXISTS w_SUPPLEMENT_tarif + ., + CREATE TEMP TABLE w_SUPPLEMENT_tarif AS + SELECT t_prestations.code AS prestation_code, (MAX(Array[date_debut::text,prix_unitaire::text]))[2]::numeric AS prix_unitaire + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].t_prestations ON prestation_id = t_prestations.oid + WHERE t_prestations.code = ''SRC'' AND montant_facture > 0 AND prix_unitaire > 0 + GROUP BY 1 + ., + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + no_facture, + facture_id, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id, + lpp_id, + ucd_id) + SELECT + p_factures.no_facture, + p_factures.oid AS facture_id, + date(D_ACTE) AS date_debut, + date(D_ACTE) AS date_fin, + 1::numeric AS nb_rubrique, + 1::numeric AS coefficient, + t_rubriques_facturation.oid AS rubrique_facturation_id, + t_prestations.oid AS prestation_id, + w_SUPPLEMENT_TARIF.prix_unitaire AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id, + 0::bigint AS lpp_id, + 0::bigint AS ucd_id + FROM prod_cegi.SUPPLEMENT + JOIN prod_cegi.RSS ON SUPPLEMENT.N_PMSI = RSS.N_PMSI + JOIN activite[PX].p_sejours ON N_DOSS = p_sejours.no_sejour + JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND + type_facture = ''E'' AND p_factures.provider_id = 0 + JOIN activite.t_prestations ON SUPPLEMENT.ACTE = t_prestations.code + JOIN activite.t_rubriques_facturation ON SUPPLEMENT.ACTE = t_rubriques_facturation.code_original + JOIN w_SUPPLEMENT_tarif ON SUPPLEMENT.ACTE = prestation_code + LEFT JOIN activite[PX].p_factures_lignes_non_facturees_c ON + p_factures.no_facture = p_factures_lignes_non_facturees_c.no_facture AND + t_prestations.oid = p_factures_lignes_non_facturees_c.prestation_id + WHERE + date(D_ACTE) BETWEEN p_factures.date_debut AND p_factures.date_fin AND + SUPPLEMENT.ACTE IN (''SRC'') AND + code_facture <> ''1'' AND + p_factures_lignes_non_facturees_c.no_facture IS NULL + ',1) + FROM pg_tables + WHERE tablename = 'supplement' AND + schemaname = 'prod_cegi' + ; + + ]]> + + + + 0 THEN LCS_MCO ELSE 1 END) AS LCS_MCO, + MAX(LCS_PRIX) AS LCS_PRIX, + MAX(CASE WHEN LCS_SEJHON = 0 THEN LCS_TTC ELSE 0 END) AS LCS_TTC, + MAX(LCS_CPTA_TTC) AS LCS_CPTA_TTC, + MAX(CASE WHEN LCT_TER_TYPE = 'DBT' AND LCS_SEJHON IN (0,2) THEN LCT_TX ELSE 0 END) AS LCT_TX_0, + MAX(CASE WHEN LCT_TER_TYPE = 'CAI' AND LCS_SEJHON IN (0,2) THEN LCT_TX ELSE 0 END) AS LCT_TX_1, + MAX(CASE WHEN LCT_TER_TYPE = 'MUT' AND LCS_SEJHON IN (0,2) THEN LCT_TX ELSE 0 END) AS LCT_TX_2, + SUM(CASE WHEN LCT_TER_TYPE = 'DBT' AND LCS_SEJHON IN (0) THEN LCT_TTC ELSE 0 END) AS LCT_TTC_0, + SUM(CASE WHEN LCT_TER_TYPE = 'DBT' AND LCS_SEJHON IN (0,2) THEN LCT_CPTA_TTC ELSE 0 END) AS LCT_CPTA_TTC_0, + SUM(CASE WHEN LCT_TER_TYPE = 'CAI' AND LCS_SEJHON IN (0) THEN LCT_TTC ELSE 0 END) AS LCT_TTC_1, + SUM(CASE WHEN LCT_TER_TYPE = 'CAI' AND LCS_SEJHON IN (0,2) THEN LCT_CPTA_TTC ELSE 0 END) AS LCT_CPTA_TTC_1, + SUM(CASE WHEN LCT_TER_TYPE = 'MUT' AND LCS_SEJHON IN (0) THEN LCT_TTC ELSE 0 END) AS LCT_TTC_2, + SUM(CASE WHEN LCT_TER_TYPE = 'MUT' AND LCS_SEJHON IN (0,2) THEN LCT_CPTA_TTC ELSE 0 END) AS LCT_CPTA_TTC_2, + 0::bigint AS ucd_id, + 0::bigint AS lpp_id + FROM prod_cegi.CJ_LCS + JOIN w_CJ_SEJOUR_select ON CJ_LCS.SEJ_ID = w_CJ_SEJOUR_select.SEJ_ID + JOIN w_CJ_EFS ON CJ_LCS.EFS_ID = w_CJ_EFS.EFS_ID + JOIN prod_cegi.CJ_LCT ON CJ_LCS.LCS_ID = CJ_LCT.LCS_ID + JOIN w_RUBRIQUES ON CJ_LCS.PST_ID = w_RUBRIQUES.PST_ID + JOIN activite[PX].p_factures ON w_CJ_EFS.oid = p_factures.oid + WHERE LCS_SEJHON IN (0,2) + GROUP BY 1; + + UPDATE w_CJ_LCS + SET ucd_id = w_CJ_LSUCD.ucd_id + FROM w_CJ_LSUCD + WHERE LCS_IDLS = LSPST_ID + ; + + UPDATE w_CJ_LCS + SET lpp_id = w_CJ_LSLPP.lpp_id + FROM w_CJ_LSLPP + WHERE LCS_IDLS = LSPST_ID + ; + + DROP TABLE IF EXISTS w_factures_lignes_c; + CREATE TEMP TABLE w_factures_lignes_c AS + SELECT + w_CJ_LCS.no_sejour, + w_CJ_LCS.facture_id, + w_CJ_LCS.no_facture, + w_CJ_LCS.date_vente, + w_CJ_LCS.LCS_COEFF AS coefficient, + w_CJ_LCS.LCS_MCO AS coefficient_mco, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid,0) AS prestation_id, + lpp_id, + ucd_id, + COALESCE(t_compte.oid,0) AS compte_produit_id, + p_sejours.lieu_sortie_id AS lieu_id, + 1::bigint AS origine_facturation_id, + + LCS_PRIX AS prix_unitaire, + LEAST(LCT_TX_0,100) AS taux_0, + LEAST(LCT_TX_1,100) AS taux_1, + LEAST(LCT_TX_2,100) AS taux_2, + 0::numeric AS taux_22, + + LCS_DT_DEB AS date_debut, + LCS_DT_FIN AS date_fin, + LCS_QTE AS nb_rubrique, + LCS_QTE AS nb_prestation, + LCS_TTC AS montant_facture, + LCT_TTC_0 AS montant_facture_0, + LCT_TTC_1 AS montant_facture_1, + LCT_TTC_2 AS montant_facture_2, + 0::numeric AS montant_facture_22, + LCS_CPTA_TTC AS montant_comptabilise, + LCT_CPTA_TTC_0 AS montant_comptabilise_0, + LCT_CPTA_TTC_1 AS montant_comptabilise_1, + LCT_CPTA_TTC_2 AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS rubrique_facture_id + FROM w_CJ_LCS + JOIN activite[PX].p_sejours ON w_CJ_LCS.sejour_id = p_sejours.oid + LEFT JOIN activite[PX].t_rubriques_facturation ON PST_LIBC = t_rubriques_facturation.code_original + LEFT JOIN activite.t_prestations ON LCS_CODE = t_prestations.code + LEFT JOIN activite[PX].t_compte ON LCT_PST_CPT = t_compte.code_original AND LCT_PST_CPT <> '' + ; + + + + + CREATE INDEX w_factures_lignes_c_i1 + ON w_factures_lignes_c + USING btree + (no_sejour); + + UPDATE w_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_mouvements_sejour + WHERE + w_factures_lignes_c.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_lignes_c.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + w_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_c'); + + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_8'); + + INSERT INTO activite[PX].p_factures_lignes_c ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + lpp_id, + ucd_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + origine_facturation_id + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + lpp_id, + ucd_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + origine_facturation_id + FROM w_factures_lignes_c; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_8'); + + + -- Forcage date debut = date entree pour prestations à ventiler + UPDATE activite[PX].p_factures_lignes_c + SET date_debut = p_factures.date_debut + FROM activite[PX].t_rubriques_facturation, activite.t_prestations, activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_factures.provider_id = 0 AND + p_factures_lignes_c.no_facture = p_factures.no_facture AND + prestation_id = t_prestations.oid AND + t_prestations.type_ventilation_jour = '1' AND + ABS(nb_rubrique) > 1 AND + p_factures_lignes_c.date_debut = p_factures_lignes_c.date_fin AND + p_sejours.date_sortie <> p_sejours.date_entree ; + + + -- Eclatement des supplements par jour + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + p_factures_lignes_c.CTID AS from_CTID, + t_prestations.code AS prestation_code, + date(p_sejours.date_entree) AS date_debut_ghs, + date(p_sejours.date_sortie - interval '1 day') AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN t_prestations.code = 'GHS' THEN date(date_entree + interval '1 day') ELSE date(p_factures_lignes_c.date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN t_prestations.code = 'GHS' THEN date(p_sejours.date_sortie - interval '1 day') ELSE date(p_factures_lignes_c.date_debut + ((ABS(nb_prestation)-1) || ' day')::interval) END AS date_fin_det, + ABS(CASE WHEN t_prestations.code = 'GHS' THEN date(date_sortie) - date(date_entree) ELSE nb_prestation END) AS nb_det, + p_factures_lignes_c.* + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.etat = '' + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + ( + code IN ('PJ', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + WHERE p_factures.provider_id = 0 AND + (nb_prestation > 1 or nb_prestation < -1 OR (t_prestations.code = 'GHS' AND p_sejours.type_sejour != '5' AND date(date_sortie) - date(date_entree) > 1)) ; + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM activite[PX].p_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture AND + w_factures_lignes_sup_c.prestation_code = 'GHS'; + + + CREATE INDEX w_factures_lignes_sup_c_i1 + ON w_factures_lignes_sup_c + USING btree + (date_debut); + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + from_CTID, + no_facture, + date AS date_debut, + date AS date_fin, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + lpp_id, + ucd_id, + compte_produit_id, + round(montant_facture / ABS(nb_det),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + round(montant_comptabilise / ABS(nb_det),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_det),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_det),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_det),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_det),2) AS montant_comptabilise_22, + rubrique_comptabilisation_id, + round(montant_encours / ABS(nb_det),2) AS montant_encours, + round(montant_encours_0 / ABS(nb_det),2) AS montant_encours_0, + round(montant_encours_1 / ABS(nb_det),2) AS montant_encours_1, + round(montant_encours_2 / ABS(nb_det),2) AS montant_encours_2, + round(montant_encours_22 / ABS(nb_det),2) AS montant_encours_22, + round(montant_facture_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_actes_inclus_dans_sejour, + round(montant_facture_0_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_0_actes_inclus_dans_sejour, + round(montant_facture_1_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_1_actes_inclus_dans_sejour, + round(montant_facture_2_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_2_actes_inclus_dans_sejour, + round(montant_facture_22_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + round(montant_comptabilise_budget_global_1 / ABS(nb_det),2) AS montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON date_debut BETWEEN p_calendrier.date - ABS(nb_det)::integer + 1 AND p_calendrier.date AND + p_calendrier.date <> date_debut ; + ; + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT from_CTID, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + + UPDATE activite[PX].p_factures_lignes_c + SET + date_fin = p_factures_lignes_c.date_debut, + nb_rubrique = p_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_sup_tot.nb_rubrique, + nb_prestation = p_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_sup_tot.nb_prestation, + montant_facture = p_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = p_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = p_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = p_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = p_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = p_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = p_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = p_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = p_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = p_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22, + montant_encours = p_factures_lignes_c.montant_encours - w_factures_lignes_sup_c_sup_tot.montant_encours, + montant_encours_0 = p_factures_lignes_c.montant_encours_0 - w_factures_lignes_sup_c_sup_tot.montant_encours_0, + montant_encours_1 = p_factures_lignes_c.montant_encours_1 - w_factures_lignes_sup_c_sup_tot.montant_encours_1, + montant_encours_2 = p_factures_lignes_c.montant_encours_2 - w_factures_lignes_sup_c_sup_tot.montant_encours_2, + montant_encours_22 = p_factures_lignes_c.montant_encours_22 - w_factures_lignes_sup_c_sup_tot.montant_encours_22, + montant_facture_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 = p_factures_lignes_c.montant_comptabilise_budget_global_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup_tot + WHERE p_factures_lignes_c.CTID = from_CTID; + + + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + lpp_id, + ucd_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + lpp_id, + ucd_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c_sup; + + + -- Lieu exécution + + UPDATE activite[PX].p_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_factures , + activite[PX].p_mouvements_sejour + WHERE + p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + p_factures_lignes_c.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + p_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + + + + ]]> + + + + '20991231' AND + (montant_comptabilise <> 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5; + + INSERT INTO w_factures_soldes_c + SELECT + w_CJ_EFS.oid AS facture_id, + w_CJ_EFS.EFTB2_NUMFAC AS no_facture, + date_trunc('month',XECE_DATE) + interval '1 month' - interval '1 day' AS date_comptable, + COALESCE(t_rubriques_facturation.oid,t_rubriques_att.oid) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid,t_prestations_att.oid) AS prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(COALESCE(CJ_XECL.XECL_MONT,CJ_XECF.XECF_MONT))::numeric AS XECF_MONT, + SUM(CASE WHEN EFT_TER_TYPE = 'DBT' THEN COALESCE(CJ_XECL.XECL_MONT,CJ_XECF.XECF_MONT) ELSE 0 END)::numeric AS XECF_MONT_0, + SUM(CASE WHEN EFT_TER_TYPE = 'CAI' THEN COALESCE(CJ_XECL.XECL_MONT,CJ_XECF.XECF_MONT) ELSE 0 END)::numeric AS XECF_MONT_1, + SUM(CASE WHEN EFT_TER_TYPE = 'MUT' THEN COALESCE(CJ_XECL.XECL_MONT,CJ_XECF.XECF_MONT) ELSE 0 END)::numeric AS XECF_MONT_2, + 0::numeric AS montant_regle_22 + FROM prod_cegi.CJ_XECF + JOIN prod_cegi.CJ_XECE ON CJ_XECF.XECE_ID = CJ_XECE.XECE_ID + LEFT JOIN prod_cegi.CJ_XECL ON CJ_XECL.XECF_ID = CJ_XECF.XECF_ID + LEFT JOIN prod_cegi.CJ_LCT ON CJ_XECL.LCT_ID = CJ_LCT.LCT_ID + LEFT JOIN prod_cegi.CJ_PST ON CJ_LCT.PST_ID = CJ_PST.PST_ID + LEFT JOIN activite.t_prestations ON LCT_CODE = t_prestations.code + LEFT JOIN activite[PX].t_rubriques_facturation ON PST_LIBC = t_rubriques_facturation.code_original + JOIN prod_cegi.CJ_EFT ON CJ_EFT.EFT_ID = CJ_XECF.EFT_ID + JOIN w_CJ_EFS ON CJ_EFT.EFS_ID = w_CJ_EFS.EFS_ID + JOIN activite.t_prestations t_prestations_att ON t_prestations_att.code_original = '*ATTNSCTI' + JOIN activite[PX].t_rubriques_facturation t_rubriques_att ON t_rubriques_att.code_original = '*ATTNSCTI' + + WHERE CJ_XECF.EFT_ID <> 0 AND + EFT_SEJHON IN (0,2) AND + XECF_TYPE >= 0 AND + CJ_XECE.JNL_CODE <> ALL(SELECT JNL_CODE FROM prod_cegi.CJ_JNLNUMFAC) + GROUP BY 1,2,3,4,5 + ORDER BY 1 + ; + + DROP TABLE IF EXISTS w_factures_soldes_soldes; + CREATE TEMP TABLE w_factures_soldes_soldes AS + SELECT facture_id, + MAX(CASE WHEN montant_regle <> 0 THEN date_comptable ELSE NULL END) AS date_comptable, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_regle) AS montant_regle + FROM w_factures_soldes_c + GROUP BY 1 + HAVING SUM(montant_comptabilise) = SUM(montant_regle) AND SUM(montant_regle) <> 0 + ; + + INSERT INTO w_factures_soldes_c + SELECT + w_factures_soldes_c.facture_id, + w_factures_soldes_c.no_facture, + w_factures_soldes_soldes.date_comptable, + w_factures_soldes_c.rubrique_comptabilisation_id, + w_factures_soldes_c.prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(0-w_factures_soldes_c.montant_regle)::numeric AS montant_regle, + SUM(0-w_factures_soldes_c.montant_regle_0)::numeric AS montant_regle_0, + SUM(0-w_factures_soldes_c.montant_regle_1)::numeric AS montant_regle_1, + SUM(0-w_factures_soldes_c.montant_regle_2)::numeric AS montant_regle_2, + 0::numeric AS montant_regle_22 + FROM w_factures_soldes_c + JOIN w_factures_soldes_soldes ON w_factures_soldes_c.facture_id = w_factures_soldes_soldes.facture_id + GROUP BY 1,2,3,4,5 + ; + + INSERT INTO w_factures_soldes_c + SELECT + w_factures_soldes_c.facture_id, + w_factures_soldes_c.no_facture, + w_factures_soldes_soldes.date_comptable, + w_factures_soldes_c.rubrique_comptabilisation_id, + w_factures_soldes_c.prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(w_factures_soldes_c.montant_comptabilise)::numeric AS montant_regle, + SUM(w_factures_soldes_c.montant_comptabilise_0)::numeric AS montant_regle_0, + SUM(w_factures_soldes_c.montant_comptabilise_1)::numeric AS montant_regle_1, + SUM(w_factures_soldes_c.montant_comptabilise_2)::numeric AS montant_regle_2, + 0::numeric AS montant_regle_22 + FROM w_factures_soldes_c + JOIN w_factures_soldes_soldes ON w_factures_soldes_c.facture_id = w_factures_soldes_soldes.facture_id + WHERE w_factures_soldes_c.montant_comptabilise <> 0 + GROUP BY 1,2,3,4,5; + ; + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_8'); + + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisation_id, + prestation_id, + SUM(montant_comptabilise), + SUM(montant_comptabilise_0), + SUM(montant_comptabilise_1), + SUM(montant_comptabilise_2), + SUM(montant_comptabilise_22), + SUM(montant_regle), + SUM(montant_regle_0), + SUM(montant_regle_1), + SUM(montant_regle_2), + SUM(montant_regle_22) + FROM w_factures_soldes_c + GROUP BY 1,2,3,4,5 + HAVING + ( + SUM(montant_comptabilise) <> 0 OR + SUM(montant_comptabilise_0) <> 0 OR + SUM(montant_comptabilise_1) <> 0 OR + SUM(montant_comptabilise_2) <> 0 OR + SUM(montant_comptabilise_22) <> 0 OR + SUM(montant_regle) <> 0 OR + SUM(montant_regle_0) <> 0 OR + SUM(montant_regle_1) <> 0 OR + SUM(montant_regle_2) <> 0 OR + SUM(montant_regle_22) <> 0 + ); + + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_8'); + + ]]> + + + + 0 THEN LCS_COEFF ELSE 1.00 END::numeric,2) AS coefficient, + COALESCE(w_CJ_PRA_EXE.medecin_administratif_id,0) AS medecin_facture_id, + COALESCE(t_prestations.oid,0) AS prestation_id, + LCS_PRIX AS prix_unitaire, + LCS_DEP AS montant_depassement, + p_sejours.lieu_sortie_id AS lieu_id, + COALESCE(t_actes_ccam.oid, t_actes_ngap.oid,0) AS acte_id, + COALESCE(CJ_CCAM.CCAM_PHS,0)::text AS phase_ccam, + COALESCE(CJ_CCAM.CCAM_ACTV,'') AS activite_ccam, + COALESCE(CJ_LSCCAM.LSCA_EXTDOC,'') AS extension_ccam, + COALESCE(CJ_LSCCAM.LSCA_MOD1,'') AS modificateur_ccam_1, + COALESCE(CJ_LSCCAM.LSCA_MOD2,'') AS modificateur_ccam_2, + COALESCE(CJ_LSCCAM.LSCA_MOD3,'') AS modificateur_ccam_3, + COALESCE(CJ_LSCCAM.LSCA_MOD4,'') AS modificateur_ccam_4 + FROM prod_cegi.CJ_LCS + LEFT JOIN prod_cegi.CJ_LSCCAM ON CJ_LSCCAM.LSCA_ID = CJ_LCS.LCS_IDLS AND + CJ_LCS.LCS_CODE IN ('ACO','ADA','ADC','ADE','ADI','ATM','DEN') + LEFT JOIN prod_cegi.CJ_CCAM ON CJ_CCAM.CCAM_ID = CJ_LSCCAM.CCAM_ID + JOIN activite.t_prestations ON LCS_CODE = t_prestations.code + LEFT JOIN base.t_actes t_actes_ccam ON CCAM_CODE = t_actes_ccam.code + LEFT JOIN base.t_actes t_actes_ngap ON LCS_CODE = t_actes_ngap.code + LEFT JOIN w_CJ_PRA w_CJ_PRA_EXE ON w_CJ_PRA_EXE.TER_ID = LCS_TER_EXE + JOIN prod_cegi.CJ_SEJOUR ON CJ_SEJOUR.SEJ_ID = CJ_LCS.SEJ_ID + JOIN activite[PX].p_sejours ON SEJ_NUMDOS = p_sejours.no_sejour + JOIN activite[PX].p_factures ON SEJ_NUMDOS = p_factures.no_sejour AND + date(LCS_DT_DEB) BETWEEN p_factures.date_debut AND p_factures.date_fin AND + p_factures.provider_id = 0 AND + code_facture = '0' AND + LCS_SEJHON IN (1,2) + ; + + + INSERT INTO activite[PX].p_factures_lignes_non_facturees_h( + no_facture, + facture_id, + date_debut, + date_fin, + heure_debut, + nb_rubrique, + coefficient, + medecin_facture_id, + prestation_id, + prix_unitaire, + montant_depassement, + lieu_id, + acte_id, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4 + ) + SELECT + p_factures.no_facture, + p_factures.oid AS facture_id, + date(LSR_DDEB) AS date_debut, + date(LSR_DDEB) AS date_fin, + 100000 AS heure_debut, + 1::numeric AS nb_rubrique, + 1 AS coefficient, + COALESCE(w_CJ_PRA_EXE.medecin_administratif_id,0) AS medecin_facture_id, + COALESCE(t_prestations.oid,0) AS prestation_id, + 0 AS prix_unitaire, + 0 AS montant_depassement, + p_sejours.lieu_sortie_id AS lieu_id, + t_actes.oid AS acte_id, + COALESCE(CJ_CCAM.CCAM_PHS,0)::text AS phase_ccam, + COALESCE(CJ_CCAM.CCAM_ACTV,'') AS activite_ccam, + COALESCE(CJ_LSCCAM.LSCA_EXTDOC,'') AS extension_ccam, + COALESCE(CJ_LSCCAM.LSCA_MOD1,'') AS modificateur_ccam_1, + COALESCE(CJ_LSCCAM.LSCA_MOD2,'') AS modificateur_ccam_2, + COALESCE(CJ_LSCCAM.LSCA_MOD3,'') AS modificateur_ccam_3, + COALESCE(CJ_LSCCAM.LSCA_MOD4,'') AS modificateur_ccam_4 + FROM prod_cegi.CJ_LSRGP + JOIN prod_cegi.CJ_LSCCAM ON CJ_LSRGP.lsr_id = CJ_LSCCAM.lsr_id + JOIN prod_cegi.CJ_SEJOUR ON (CJ_LSRGP.sej_id = CJ_SEJOUR.sej_id ) + JOIN prod_cegi.CJ_CCAM ON (CJ_LSCCAM.ccam_id = CJ_CCAM.ccam_id) + LEFT JOIN w_CJ_PRA w_CJ_PRA_EXE ON w_CJ_PRA_EXE.TER_ID = CJ_LSCCAM.TER_ID + JOIN base.t_actes ON (substring(CJ_CCAM.ccam_code, 1, 7) = t_actes.code) + JOIN base.t_ccam_regroupements ON + ( + CCAM_ACTV <> '4' AND ccam_regroupement_id_1 = t_ccam_regroupements.oid OR + CCAM_ACTV = '4' AND ccam_regroupement_id_4 = t_ccam_regroupements.oid + ) + JOIN activite.t_prestations ON t_ccam_regroupements.code = t_prestations.Code + JOIN activite[PX].p_sejours ON SEJ_NUMDOS = p_sejours.no_sejour + JOIN activite[PX].p_factures ON SEJ_NUMDOS = p_factures.no_sejour AND + date(LSR_DDEB) BETWEEN p_factures.date_debut AND p_factures.date_fin AND + p_factures.provider_id = 0 AND + code_facture = '0' + LEFT JOIN prod_cegi.CJ_LCS ON CJ_LSCCAM.LSCA_ID = CJ_LCS.LCS_IDLS AND LCS_CODE IN ('ACO','ADA','ADC','ADE','ADI','ATM','DEN') + WHERE LSR_ACTIF = 1 AND LSCA_ACTIF = 1 AND LCS_IDLS IS NULL + ; + + + ]]> + + + + '' AND + LCS_SEJHON IN (1,2) AND + length(LCS_CODE) < 7 AND + t_actes.oid IS NULL + GROUP BY 1,2,3 + ; + + DROP TABLE IF EXISTS w_CJ_LCS; + CREATE TEMP TABLE w_CJ_LCS AS + SELECT + CJ_LCS.LCS_ID, + MAX(CJ_LCS.EFS_ID) AS EFS_ID, + MAX(p_factures.sejour_id) AS sejour_id, + MAX(p_factures.oid) AS facture_id, + MAX(p_factures.no_sejour) AS no_sejour, + MAX(p_factures.no_facture) AS no_facture, + MAX(p_factures.date_vente) AS date_vente, + date(MAX(LCS_DT_DEB)) AS LCS_DT_DEB, + date(MAX(LCS_DT_FIN)) AS LCS_DT_FIN, + MAX(CJ_LCS.LCS_CODE) AS LCS_CODE, + MAX(PST_LIBC) AS PST_LIBC, + MAX(LCS_TER_EXE) AS LCS_TER_EXE, + MAX(LCT_TER_EXE) AS LCT_TER_EXE, + MAX(COALESCE(CJ_CCAM.CCAM_CODE,CJ_LCS.LCS_CODE,'')) AS CCAM_CODE, + MAX(COALESCE(CJ_CCAM.CCAM_ACTV,'')) AS CCAM_ACTV, + MAX(COALESCE(CJ_CCAM.CCAM_PHS,0)) AS CCAM_PHS, + MAX(COALESCE(CJ_LSCCAM.LSCA_EXTDOC,'')) AS LSCA_EXTDOC, + MAX(COALESCE(CJ_LSCCAM.LSCA_MOD1,'')) AS LSCA_MOD1, + MAX(COALESCE(CJ_LSCCAM.LSCA_MOD2,'')) AS LSCA_MOD2, + MAX(COALESCE(CJ_LSCCAM.LSCA_MOD3,'')) AS LSCA_MOD3, + MAX(COALESCE(CJ_LSCCAM.LSCA_MOD4,'')) AS LSCA_MOD4, + MAX(LCS_GHS) AS LCS_GHS, + MAX(LCS_QTE) AS LCS_QTE, + MAX(LCS_COEFF) AS LCS_COEFF, + MAX(CASE WHEN LCS_MCO <> 0 THEN LCS_MCO ELSE 1 END) AS LCS_MCO, + MAX(LCS_PRIX) AS LCS_PRIX, + MAX(CASE WHEN LCS_SEJHON IN (1,2) THEN LCS_TTC ELSE 0 END) AS LCS_TTC, + MAX(CASE WHEN LCS_SEJHON IN (1) THEN LCS_CPTA_TTC ELSE 0 END) AS LCS_CPTA_TTC, + MAX(CASE WHEN LCS_SEJHON IN (1,2) THEN LCS_DEP ELSE 0 END) AS LCS_DEP, + MAX(CASE WHEN LCS_SEJHON IN (1) THEN LCS_CPTA_DEP ELSE 0 END) AS LCS_CPTA_DEP, + MAX(CASE WHEN LCT_TER_TYPE = 'DBT' AND LCS_SEJHON IN (1,2) THEN LCT_TX ELSE 0 END) AS LCT_TX_0, + MAX(CASE WHEN LCT_TER_TYPE = 'CAI' AND LCS_SEJHON IN (1,2) THEN LCT_TX ELSE 0 END) AS LCT_TX_1, + MAX(CASE WHEN LCT_TER_TYPE = 'MUT' AND LCS_SEJHON IN (1,2) THEN LCT_TX ELSE 0 END) AS LCT_TX_2, + SUM(CASE WHEN LCT_TER_TYPE = 'DBT' AND LCS_SEJHON IN (1,2) THEN LCT_TTC ELSE 0 END) AS LCT_TTC_0, + SUM(CASE WHEN LCT_TER_TYPE = 'DBT' AND LCS_SEJHON IN (1) THEN LCT_CPTA_TTC ELSE 0 END) AS LCT_CPTA_TTC_0, + SUM(CASE WHEN LCT_TER_TYPE = 'CAI' AND LCS_SEJHON IN (1,2) THEN LCT_TTC ELSE 0 END) AS LCT_TTC_1, + SUM(CASE WHEN LCT_TER_TYPE = 'CAI' AND LCS_SEJHON IN (1) THEN LCT_CPTA_TTC ELSE 0 END) AS LCT_CPTA_TTC_1, + SUM(CASE WHEN LCT_TER_TYPE = 'MUT' AND LCS_SEJHON IN (1,2) THEN LCT_TTC ELSE 0 END) AS LCT_TTC_2, + SUM(CASE WHEN LCT_TER_TYPE = 'MUT' AND LCS_SEJHON IN (1) THEN LCT_CPTA_TTC ELSE 0 END) AS LCT_CPTA_TTC_2, + SUM(CASE WHEN LCS_SEJHON IN (1,2) THEN LCT_DEP ELSE 0 END) AS LCT_DEP, + SUM(CASE WHEN LCS_SEJHON IN (1) THEN LCT_CPTA_DEP ELSE 0 END) AS LCT_CPTA_DEP + FROM prod_cegi.CJ_LCS + JOIN w_CJ_SEJOUR_select ON CJ_LCS.SEJ_ID = w_CJ_SEJOUR_select.SEJ_ID + JOIN w_CJ_EFS ON CJ_LCS.EFS_ID = w_CJ_EFS.EFS_ID + JOIN prod_cegi.CJ_LCT ON CJ_LCS.LCS_ID = CJ_LCT.LCS_ID + LEFT JOIN prod_cegi.CJ_LSCCAM ON CJ_LSCCAM.LSCA_ID = CJ_LCS.LCS_IDLS AND + CJ_LCS.LCS_CODE IN ('ACO','ADA','ADC','ADE','ADI','ATM','DEN') + LEFT JOIN prod_cegi.CJ_CCAM ON CJ_CCAM.CCAM_ID = CJ_LSCCAM.CCAM_ID + JOIN w_RUBRIQUES ON CJ_LCS.PST_ID = w_RUBRIQUES.PST_ID + JOIN activite[PX].p_factures ON w_CJ_EFS.oid = p_factures.oid + WHERE LCS_SEJHON IN (1,2) + + GROUP BY 1; + + UPDATE w_CJ_LCS + SET LCS_CODE = PST_LIBC + WHERE LCS_CODE = ''; + + UPDATE w_CJ_LCS + SET LCS_CPTA_TTC = (LCT_CPTA_TTC_0+LCT_CPTA_TTC_1+LCT_CPTA_TTC_2) + WHERE LCS_CPTA_TTC = 0 AND (LCT_CPTA_TTC_0+LCT_CPTA_TTC_1+LCT_CPTA_TTC_2) <> 0; + + + DROP TABLE IF EXISTS w_factures_lignes_h; + CREATE TEMP TABLE w_factures_lignes_h AS + SELECT + w_CJ_LCS.facture_id, + w_CJ_LCS.no_facture, + w_CJ_LCS.date_vente, + LCS_DT_DEB AS date_debut, + LCS_DT_FIN AS date_fin, + LCS_QTE AS nb_rubrique, + LCS_QTE AS nb_prestation, + LCS_COEFF AS coefficient, + LCS_MCO AS coefficient_mco, + COALESCE(w_CJ_PRA_EXE.medecin_administratif_id,0) AS medecin_facture_id, + COALESCE(w_CJ_PRA_CPT.medecin_administratif_id,0) AS medecin_comptabilise_id, + COALESCE(t_prestations.oid,0) AS prestation_id, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_facturation_id, + COALESCE(t_actes.oid,0) AS acte_id, + CCAM_ACTV AS activite_ccam, + LSCA_EXTDOC AS extension_ccam, + CCAM_PHS AS phase_ccam, + LSCA_MOD1 AS modificateur_ccam_1, + LSCA_MOD1 AS modificateur_ccam_2, + LSCA_MOD1 AS modificateur_ccam_3, + LSCA_MOD1 AS modificateur_ccam_4, + LCS_TTC AS montant_facture, + LCT_TTC_0 AS montant_facture_0, + LCT_TTC_1 AS montant_facture_1, + LCT_TTC_2 AS montant_facture_2, + 0::numeric AS montant_facture_22, + LCS_DEP AS montant_depassement, + LEAST(LCT_TX_0,100) AS taux_0, + LEAST(LCT_TX_1,100) AS taux_1, + LEAST(LCT_TX_2,100) AS taux_2, + 0::numeric AS taux_22, + LCS_PRIX AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id, + LCS_CPTA_TTC AS montant_comptabilise, + LCT_CPTA_TTC_0 AS montant_comptabilise_0, + LCT_CPTA_TTC_1 AS montant_comptabilise_1, + LCT_CPTA_TTC_2 AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22 + FROM w_CJ_LCS + JOIN activite[PX].p_sejours ON w_CJ_LCS.sejour_id = p_sejours.oid + LEFT JOIN activite[PX].t_rubriques_facturation ON PST_LIBC = t_rubriques_facturation.code_original + LEFT JOIN activite.t_prestations ON LCS_CODE = t_prestations.code + LEFT JOIN w_CJ_PRA w_CJ_PRA_EXE ON w_CJ_PRA_EXE.TER_ID = LCS_TER_EXE + LEFT JOIN w_CJ_PRA w_CJ_PRA_CPT ON w_CJ_PRA_CPT.TER_ID = LCT_TER_EXE + LEFT JOIN base.t_actes ON CCAM_CODE = t_actes.code + ; + + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_9'); + + INSERT INTO activite[PX].p_factures_lignes_h ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + rubrique_facturation_id, + acte_id, + activite_ccam, + extension_ccam, + phase_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22 + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + rubrique_facturation_id, + acte_id, + activite_ccam, + extension_ccam, + phase_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22 + FROM w_factures_lignes_h + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_9'); + + + ]]> + + + + '20991231' AND + (montant_comptabilise <> 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 + ) + GROUP BY 1,2,3,4,5,6; + + INSERT INTO w_factures_soldes_h + SELECT + w_CJ_EFS.oid AS facture_id, + w_CJ_EFS.EFTB2_NUMFAC AS no_facture, + date_trunc('month',XECE_DATE) + interval '1 month' - interval '1 day' AS date_comptable, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + t_medecins_administratifs.oid AS medecin_comptabilise_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(CJ_XECF.XECF_MONT)::numeric AS XECF_MONT, + SUM(CASE WHEN EFT_TER_TYPE = 'DBT' THEN CJ_XECF.XECF_MONT ELSE 0 END)::numeric AS XECF_MONT_0, + SUM(CASE WHEN EFT_TER_TYPE = 'CAI' THEN CJ_XECF.XECF_MONT ELSE 0 END)::numeric AS XECF_MONT_1, + SUM(CASE WHEN EFT_TER_TYPE = 'MUT' THEN CJ_XECF.XECF_MONT ELSE 0 END)::numeric AS XECF_MONT_2, + 0::numeric AS montant_regle_22 + FROM prod_cegi.CJ_XECF + JOIN prod_cegi.CJ_XECE ON CJ_XECF.XECE_ID = CJ_XECE.XECE_ID + JOIN prod_cegi.CJ_EFT ON CJ_EFT.EFT_ID = CJ_XECF.EFT_ID + JOIN w_CJ_EFS ON CJ_EFT.EFS_ID = w_CJ_EFS.EFS_ID + JOIN activite.t_prestations ON t_prestations.code_original = '*ATTNSCTI' + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = '*ATTNSCTI' + JOIN activite[PX].t_medecins_administratifs ON t_medecins_administratifs.code_original = '*ATTNSCTI' + + WHERE CJ_XECF.EFT_ID <> 0 AND + EFT_SEJHON IN (1) AND + XECF_TYPE > 0 AND + CJ_XECE.JNL_CODE <> ALL(SELECT JNL_CODE FROM prod_cegi.CJ_JNLNUMFAC) + GROUP BY 1,2,3,4,5,6 + ORDER BY 1 + ; + + DROP TABLE IF EXISTS w_factures_soldes_soldes; + CREATE TEMP TABLE w_factures_soldes_soldes AS + SELECT facture_id, + MAX(CASE WHEN montant_regle <> 0 THEN date_comptable ELSE NULL END) AS date_comptable, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_regle) AS montant_regle + FROM w_factures_soldes_h + GROUP BY 1 + HAVING SUM(montant_comptabilise) = SUM(montant_regle) AND SUM(montant_regle) <> 0 + ; + + INSERT INTO w_factures_soldes_h + SELECT + w_factures_soldes_h.facture_id, + w_factures_soldes_h.no_facture, + w_factures_soldes_soldes.date_comptable, + w_factures_soldes_h.rubrique_comptabilisation_id, + w_factures_soldes_h.prestation_id, + w_factures_soldes_h.medecin_comptabilise_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(0-w_factures_soldes_h.montant_regle)::numeric AS montant_regle, + SUM(0-w_factures_soldes_h.montant_regle_0)::numeric AS montant_regle_0, + SUM(0-w_factures_soldes_h.montant_regle_1)::numeric AS montant_regle_1, + SUM(0-w_factures_soldes_h.montant_regle_2)::numeric AS montant_regle_2, + 0::numeric AS montant_regle_22 + FROM w_factures_soldes_h + JOIN w_factures_soldes_soldes ON w_factures_soldes_h.facture_id = w_factures_soldes_soldes.facture_id + WHERE ( + w_factures_soldes_h.montant_regle <> 0 OR + w_factures_soldes_h.montant_regle_0 <> 0 OR + w_factures_soldes_h.montant_regle_1 <> 0 OR + w_factures_soldes_h.montant_regle_2 <> 0 + ) + GROUP BY 1,2,3,4,5,6 + ; + + INSERT INTO w_factures_soldes_h + SELECT + w_factures_soldes_h.facture_id, + w_factures_soldes_h.no_facture, + w_factures_soldes_soldes.date_comptable, + w_factures_soldes_h.rubrique_comptabilisation_id, + w_factures_soldes_h.prestation_id, + w_factures_soldes_h.medecin_comptabilise_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(w_factures_soldes_h.montant_comptabilise)::numeric AS montant_regle, + SUM(w_factures_soldes_h.montant_comptabilise_0)::numeric AS montant_regle_0, + SUM(w_factures_soldes_h.montant_comptabilise_1)::numeric AS montant_regle_1, + SUM(w_factures_soldes_h.montant_comptabilise_2)::numeric AS montant_regle_2, + 0::numeric AS montant_regle_22 + FROM w_factures_soldes_h + JOIN w_factures_soldes_soldes ON w_factures_soldes_h.facture_id = w_factures_soldes_soldes.facture_id + WHERE w_factures_soldes_h.montant_comptabilise <> 0 + GROUP BY 1,2,3,4,5,6; + ; + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_h_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_h_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_h_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_h_8'); + + + INSERT INTO activite[PX].p_factures_soldes_h( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + medecin_comptabilise_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisation_id, + prestation_id, + medecin_comptabilise_id, + SUM(montant_comptabilise), + SUM(montant_comptabilise_0), + SUM(montant_comptabilise_1), + SUM(montant_comptabilise_2), + SUM(montant_comptabilise_22), + SUM(montant_regle), + SUM(montant_regle_0), + SUM(montant_regle_1), + SUM(montant_regle_2), + SUM(montant_regle_22) + FROM w_factures_soldes_h + GROUP BY 1,2,3,4,5,6 + HAVING + ( + SUM(montant_comptabilise) <> 0 OR + SUM(montant_comptabilise_0) <> 0 OR + SUM(montant_comptabilise_1) <> 0 OR + SUM(montant_comptabilise_2) <> 0 OR + SUM(montant_comptabilise_22) <> 0 OR + SUM(montant_regle) <> 0 OR + SUM(montant_regle_0) <> 0 OR + SUM(montant_regle_1) <> 0 OR + SUM(montant_regle_2) <> 0 OR + SUM(montant_regle_22) <> 0 + ); + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_8'); + + + ]]> + + + + + + + + + + + + + + + + + '' AND + PLC_COMPTE NOT IN (SELECT code_original FROM activite[PX].t_compte WHERE code IS NOT NULL) + GROUP BY 1 + ORDER BY 1; + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT PLC_COMPTE, PLC_COMPTE, MAX(PLC_COMPTE), MAX(PLC_COMPTE) + FROM prod_cegi.CMECRITURES + WHERE PLC_COMPTE <> '' AND + PLC_COMPTE NOT IN (SELECT code_original FROM activite[PX].t_compte WHERE code IS NOT NULL) + GROUP BY 1 + ORDER BY 1 + ; + + UPDATE activite[PX].t_compte + SET texte = PLC_LIBELLE, texte_court = PLC_LIBELLE + FROM prod_cegi.CMPLANCPT + WHERE code = PLC_COMPTE AND + ( + texte IS DISTINCT FROM PLC_LIBELLE OR + texte_court IS DISTINCT FROM PLC_LIBELLE + ) + ; + + SELECT base.cti_execute(' + UPDATE activite[PX].t_journal + SET type_journal = ''VE'' + WHERE type_journal = '''' AND + code_original IN (SELECT JNL_CODE FROM prod_cegi.CJ_JNLNUMFAC) + ',1) + WHERE 'cj_jnlnumfac' IN (SELECT tablename FROM pg_tables WHERE schemaname = 'prod_cegi') + ; + + + DROP TABLE IF EXISTS w_DOS_CH; + CREATE TEMP TABLE w_DOS_CH AS + SELECT base.cti_to_number(unnest(string_to_array(valeur,','))) AS DOS_ID, + CASE WHEN code LIKE '%HON' THEN 'H' ELSE 'C' END::text AS clinique_honoraire + FROM activite.t_divers + WHERE code LIKE 'CEGI\_DOS%' + ; + + INSERT INTO w_DOS_CH + SELECT DOS_ID, ''::text + FROM prod_cegi.CMECRITURES + WHERE (SELECT count(*) FROM w_DOS_CH) = 0 + GROUP BY 1 + ; + + SELECT base.cti_execute(' + UPDATE w_DOS_CH + SET clinique_honoraire = subview.clinique_honoraire + FROM + ( + SELECT DOS_ID, MIN(CASE WHEN PNF_LITERAL IN (''M'',''H'') THEN ''H'' ELSE ''C'' END) AS clinique_honoraire + FROM prod_cegi.CJ_JNLNUMFAC + GROUP BY 1 + ) subview + WHERE w_DOS_CH.DOS_ID = subview.DOS_ID + ',1) + WHERE 'cj_jnlnumfac' IN (SELECT tablename FROM pg_tables WHERE schemaname = 'prod_cegi') + ; + + UPDATE w_DOS_CH + SET clinique_honoraire = 'C' + WHERE clinique_honoraire = '' + ; + + ANALYSE w_DOS_CH + ; + + + + + DROP TABLE IF EXISTS w_CMECRITURES; + CREATE TEMP TABLE w_CMECRITURES AS + SELECT CMECRITURES.*, + ''::text AS no_sejour, + 0::bigint AS sejour_id, + ''::text AS no_facture, + 0::bigint AS facture_id, + 0::bigint AS medecin_administratif_id, + 0::bigint AS tiers_payant_id, + ''::text AS mode_reglement_code, + '':: text AS type_ecriture, + '':: text AS type_piece, + COALESCE(clinique_honoraire,'C') AS clinique_honoraire, + date_part('year',ECR_DATCPTA) || '-' || ECR_NUMECR AS piece + FROM prod_cegi.CMECRITURES + JOIN w_DOS_CH ON CMECRITURES.DOS_ID = w_DOS_CH.DOS_ID + WHERE ECR_DATCPTA >= '20200101'::date + ; + + + SELECT base.cti_execute(' + UPDATE w_CMECRITURES SET + no_facture = ECR_NUMFACT, + no_sejour = p_factures.no_sejour, + facture_id = p_factures.oid, + sejour_id = p_factures.sejour_id + FROM prod_cegi.CJ_EFT + JOIN prod_cegi.CJ_EFS ON CJ_EFS.EFS_ID = CJ_EFT.EFS_ID + JOIN prod_cegi.CJ_EFTB2 ON CJ_EFS.EFTB2_ID = CJ_EFTB2.EFTB2_ID + JOIN activite[PX].p_factures ON EFTB2_NUMFAC = no_facture + WHERE ECR_NUMFACT = EFT_NUMFAC + ',1) + WHERE 'cj_eft' IN (SELECT tablename FROM pg_tables WHERE schemaname = 'prod_cegi') + ; + + SELECT base.cti_execute(' + UPDATE w_CMECRITURES SET + no_facture = ECR_NUMFACT, + no_sejour = p_factures.no_sejour, + facture_id = p_factures.oid, + sejour_id = p_factures.sejour_id + FROM prod_cegi.CJ_EFT + JOIN prod_cegi.CJ_EFS ON CJ_EFS.EFS_ID = CJ_EFT.EFS_ID + JOIN prod_cegi.CJ_EFTB2 ON CJ_EFS.EFTB2_ID = CJ_EFTB2.EFTB2_ID + JOIN activite[PX].p_factures ON EFTB2_NUMFAC = no_facture + WHERE ECR_NUMFACT = EFTB2_NUMFAC AND + w_CMECRITURES.facture_id = 0',1) + WHERE 'cj_eft' IN (SELECT tablename FROM pg_tables WHERE schemaname = 'prod_cegi') + ; + + UPDATE w_CMECRITURES SET + no_sejour = p_sejours.no_sejour, + sejour_id = p_sejours.oid + FROM activite[PX].p_sejours, + activite[PX].t_journal + WHERE ECR_NUMPIECE = p_sejours.no_sejour AND + JNL_CODE = t_journal.code_original AND + t_journal.type_journal = 'VE' AND + w_CMECRITURES.sejour_id = 0 + ; + + TRUNCATE activite[PX].p_ecriture_comptable; + INSERT INTO activite[PX].p_ecriture_comptable( + code_original, + date_comptable, + type_ecriture, + type_piece, + piece, + mode_reglement_code, + clinique_honoraire, + compte_id, + journal_id, + sejour_id, + no_sejour, + facture_id, + no_facture, + medecin_id, + tiers_payant_id, + texte, + montant_credit, + montant_debit, + est_comptabilise, + taux_tva) + SELECT + ECR_ID::text AS code_original, + ECR_DATCPTA AS date_comptable, + CASE + WHEN t_journal.type_journal = 'VE' AND PLC_COMPTE LIKE '411%' THEN 'VCLI' + WHEN t_journal.type_journal = 'VE' AND PLC_COMPTE LIKE '412%' THEN 'VCLI' + WHEN t_journal.type_journal = 'VE' AND PLC_COMPTE LIKE '445%' THEN 'VTVA' + WHEN t_journal.type_journal = 'VE' AND w_CMECRITURES.clinique_honoraire = 'C' THEN 'VPRD' + WHEN t_journal.type_journal = 'VE' AND w_CMECRITURES.clinique_honoraire = 'H' THEN 'VHON' + WHEN PLC_COMPTE LIKE '758%' THEN 'PEPR' + WHEN PLC_COMPTE LIKE '658%' THEN 'PEPR' + WHEN t_journal.type_journal <> 'VE' AND PLC_COMPTE LIKE '468%' THEN 'ATT' + WHEN t_journal.type_journal <> 'VE' AND PLC_COMPTE LIKE '471%' THEN 'ATT' + WHEN t_journal.type_journal <> 'VE' AND PLC_COMPTE LIKE '411%' THEN 'RCLI' + WHEN t_journal.type_journal <> 'VE' AND PLC_COMPTE LIKE '412%' THEN 'RCLI' + WHEN t_journal.type_journal <> 'VE' AND PLC_COMPTE LIKE '419%' THEN 'ACPT' + WHEN t_journal.type_journal <> 'VE' AND PLC_COMPTE LIKE '51%' THEN 'BANQ' + WHEN t_journal.type_journal <> 'VE' AND PLC_COMPTE LIKE '531%' THEN 'BANQ' + WHEN t_journal.type_journal <> 'VE' AND PLC_COMPTE LIKE '466%' THEN 'PHON' + WHEN t_journal.type_journal <> 'VE' AND PLC_COMPTE LIKE '7%' THEN 'XPRD' + WHEN t_journal.type_journal <> 'VE' AND PLC_COMPTE LIKE '445%' THEN 'XTVA' + ELSE '?'||JNL_CODE END AS type_ecriture, + CASE + WHEN t_journal.type_journal = 'VE' THEN 'VENTE' + ELSE t_journal.type_journal END AS type_piece, + w_CMECRITURES.piece, + w_CMECRITURES.mode_reglement_code, + w_CMECRITURES.clinique_honoraire, + COALESCE(t_compte.oid,0) AS compte_id, + COALESCE(t_journal.oid,0) AS journal_id, + w_CMECRITURES.sejour_id, + w_CMECRITURES.no_sejour, + w_CMECRITURES.facture_id, + w_CMECRITURES.no_facture, + w_CMECRITURES.medecin_administratif_id, + w_CMECRITURES.tiers_payant_id, + ECR_LIBELLE AS texte, + round(CASE WHEN ECR_SIGNED <> 1 THEN ECR_MONTANT ELSE 0 END::numeric,2) AS montant_credit, + round(CASE WHEN ECR_SIGNED = 1 THEN ECR_MONTANT ELSE 0 END::numeric,2) AS montant_debit, + '1'::text AS est_comptabilise, + COALESCE(t_compte.taux_tva,0) AS taux_tva + FROM w_CMECRITURES + LEFT JOIN activite[PX].t_compte ON PLC_COMPTE = t_compte.code AND PLC_COMPTE <> '' + LEFT JOIN activite[PX].t_journal ON w_CMECRITURES.JNL_CODE = t_journal.code_original + WHERE t_journal.type_journal IS DISTINCT FROM 'IGNORE' + ; + + + ]]> + + + + + + + = '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1 + ORDER BY 1; + + + ]]> + + + + + + + + = '[ENV_ADM_ANNEEDEBUT]0101' AND + ( + t_divers.valeur = '' AND PLC_COMPTE LIKE '41%' OR + t_divers.valeur <> '' AND PLC_COMPTE = ANY(string_to_array(t_divers.valeur,',')) + ) AND + ECR_ORIGINE = '615' AND + ( + CJ_JNLNUMFAC.ETB_ID::text = ANY (string_to_array('[ID_ETAB]'::text,',')) OR + '[ID_ETAB]' = '' OR + '[ID_ETAB]' = '-1' + ) + GROUP BY 1 + ORDER BY 1; + + + + + + ]]> + + + + + + + + + + + + 0 THEN 'OUI' ELSE 'NON' END + FROM information_schema.tables + WHERE table_schema = 'prod_cora' AND table_name = 'tb_sejour' ; + + CTISELECT_PROPERTY_READ 'CJFIRST_PRESENT', CASE WHEN count(*) > 0 THEN 'OUI' ELSE 'NON' END + FROM information_schema.tables + WHERE table_schema = 'prod_cegi' AND table_name = 'cj_efs' ; + + CTISELECT_PROPERTY_READ 'CEGILOGHOS_PRESENT', CASE WHEN count(*) > 0 THEN 'OUI' ELSE 'NON' END + FROM information_schema.tables + WHERE table_schema = 'prod_cegiloghos' AND table_name = 'opera_sej' ; + + echo CORA : [CORA_PRESENT]; + echo CJFIRST : [CJFIRST_PRESENT]; + echo LOGHOS : [CEGILOGHOS_PRESENT]; + + ]]> + + + + + + + + + + + + + '' THEN LIBELLE_ORGANISME ELSE CODE_ORGANISME END, + CASE WHEN LIBELLE_ORGANISME <> '' THEN LIBELLE_ORGANISME ELSE CODE_ORGANISME END + FROM prod_cegiloghos.OPERA_PAMOC + WHERE CODE_ORGANISME NOT IN (SELECT code_original FROM activite[PX].t_tiers_payant WHERE code_original IS NOT NULL); + + UPDATE activite[PX].t_tiers_payant SET + code = CODE_ORGANISME, + texte = CASE WHEN LIBELLE_ORGANISME <> '' THEN LIBELLE_ORGANISME ELSE CODE_ORGANISME END, + texte_court = CASE WHEN LIBELLE_ORGANISME <> '' THEN LIBELLE_ORGANISME ELSE CODE_ORGANISME END + FROM prod_cegiloghos.OPERA_PAMOC + WHERE t_tiers_payant.code_original = OPERA_PAMOC.CODE_ORGANISME AND + ( + code IS DISTINCT FROM CODE_ORGANISME OR + texte IS DISTINCT FROM CASE WHEN LIBELLE_ORGANISME <> '' THEN LIBELLE_ORGANISME ELSE CODE_ORGANISME END OR + texte_court IS DISTINCT FROM CASE WHEN LIBELLE_ORGANISME <> '' THEN LIBELLE_ORGANISME ELSE CODE_ORGANISME END + ) + ; + + UPDATE activite[PX].t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM prod_cegiloghos.OPERA_PAMOC + JOIN base.t_grands_regimes ON OPERA_PAMOC.CODE_REGIME = t_grands_regimes.code + WHERE t_tiers_payant.code_original = OPERA_PAMOC.CODE_ORGANISME AND + COALESCE(t_tiers_payant.grand_regime_id,0) = 0 AND + t_grands_regimes.oid <> 0; + + + ]]> + + + + '' THEN MAX(LIBELLE_SPECIALITE) ELSE CODE_SPECIALITE END, + CASE WHEN MAX(LIBELLE_SPECIALITE) <> '' THEN MAX(LIBELLE_SPECIALITE) ELSE CODE_SPECIALITE END + FROM prod_cegiloghos.OPERA_PMED + LEFT JOIN base.t_specialites_medecin ON CODE_SPECIALITE = t_specialites_medecin.code + WHERE to_number('0' || code_specialite,'000') > 0 AND + t_specialites_medecin.code IS NULL + GROUP BY 1,2 + ORDER BY 1; + + INSERT INTO activite[PX].t_specialites_medecin(oid, code, code_original, texte, texte_court) + SELECT 0, '**', '0', 'Non saisie', 'Non saisie' + WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_specialites_medecin); + + INSERT INTO base.t_specialites_medecin(oid, code, code_original, texte, texte_court) + SELECT 0, '', '0', 'Non saisie', 'Non saisie' + WHERE 0 NOT IN (SELECT oid FROM base.t_specialites_medecin); + + + INSERT INTO base.t_medecins(oid, nom, prenom, numero_ordre, specialite_id ) + SELECT 0, 'Non renseigné', '', '', 0 WHERE 0 NOT IN (SELECT oid FROM base.t_medecins); + + INSERT INTO activite[PX].t_medecins_administratifs(oid, code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT 0, '0', '****', 'Non renseigné', '', 0, 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_medecins_administratifs); + + INSERT INTO activite[PX].t_medecins_administratifs(code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT '*ECARTCTI', chr(127) || 'ECART', 'Ecarts de répartition', '', 0, 0 WHERE '*ECARTCTI' NOT IN (SELECT code_original FROM activite[PX].t_medecins_administratifs); + + INSERT INTO activite[PX].t_medecins_administratifs(code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT '*ATTNSCTI', chr(127) || 'ATTNS', 'Attente (non soldé)', '', 0, 0 WHERE '*ATTNSCTI' NOT IN (SELECT code_original FROM activite[PX].t_medecins_administratifs); + + DROP TABLE IF EXISTS w_OPERA_PMED; + CREATE TEMP TABLE w_OPERA_PMED AS + SELECT + *, + split_part(LIBELLE_MEDECIN,' ',1) AS NOM_MEDECIN, + split_part(LIBELLE_MEDECIN,' ',2) || ' ' || + split_part(LIBELLE_MEDECIN,' ',3) || ' ' || + split_part(LIBELLE_MEDECIN,' ',4) || ' ' || + split_part(LIBELLE_MEDECIN,' ',5) || ' ' || + split_part(LIBELLE_MEDECIN,' ',6) || ' ' || + split_part(LIBELLE_MEDECIN,' ',7) + AS PRENOM_MEDECIN + FROM prod_cegiloghos.OPERA_PMED; + + DROP TABLE IF EXISTS w_medecins; + CREATE TEMP TABLE w_medecins AS + SELECT + CODE_MEDECIN AS CODE_MEDECIN, + base.cti_soundex_nom(NOM_MEDECIN) AS NOM_MEDECIN_SOUNDEX, + base.cti_soundex_nom(PRENOM_MEDECIN) AS PRENOM_MEDECIN_SOUNDEX, + NOM_MEDECIN, + PRENOM_MEDECIN AS PRENOM_MEDECIN, + SUBSTR(COALESCE(CODE_ADELI,''),1,9) AS CODE_ADELI, + CODE_SPECIALITE AS CODE_SPECIALITE, + COALESCE(t_medecins_administratifs.medecin_id,0) as medecin_id + FROM w_OPERA_PMED + LEFT JOIN activite[PX].t_medecins_administratifs ON CODE_MEDECIN = t_medecins_administratifs.code_original; + + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.NOM_MEDECIN, w_medecins.PRENOM_MEDECIN, w_medecins.CODE_ADELI, 0 FROM + (SELECT SUBSTR(NOM_MEDECIN_SOUNDEX, 1, 8) AS NOM_MEDECIN_SOUNDEX, SUBSTR(PRENOM_MEDECIN_SOUNDEX, 1, 8) AS PRENOM_MEDECIN_SOUNDEX, CODE_ADELI, MIN(CODE_MEDECIN) AS CODE_MEDECIN + FROM w_medecins + GROUP BY 1,2,3) subview, w_medecins + WHERE w_medecins.CODE_MEDECIN = subview.CODE_MEDECIN + AND subview.NOM_MEDECIN_SOUNDEX || ',' || subview.PRENOM_MEDECIN_SOUNDEX || ',' || subview.CODE_ADELI NOT IN + (SELECT substr(base.cti_soundex_nom(nom),1,8) || ',' || substr(base.cti_soundex_nom(prenom),1,8) || ',' || numero_ordre FROM base.t_medecins); + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.NOM_MEDECIN, w_medecins.PRENOM_MEDECIN, w_medecins.CODE_ADELI, 0 FROM + (SELECT NOM_MEDECIN_SOUNDEX, PRENOM_MEDECIN_SOUNDEX, MIN(CODE_MEDECIN) AS CODE_MEDECIN + FROM w_medecins + GROUP BY 1,2) subview, w_medecins + WHERE w_medecins.CODE_MEDECIN = subview.CODE_MEDECIN + AND subview.NOM_MEDECIN_SOUNDEX || ',' || subview.PRENOM_MEDECIN_SOUNDEX NOT IN + (SELECT base.cti_soundex_nom(nom) || ',' || base.cti_soundex_nom(prenom) FROM base.t_medecins); + + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT substr(base.cti_soundex_nom(nom),1,8) as nom , substr(base.cti_soundex_nom(prenom),1,8) as prenom, numero_ordre, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2,3) subview + WHERE SUBSTR(NOM_MEDECIN_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(PRENOM_MEDECIN_SOUNDEX, 1, 8) = subview.prenom + AND CODE_ADELI = subview.numero_ordre + AND w_medecins.medecin_id = 0; + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT base.cti_soundex_nom(nom) as nom , base.cti_soundex_nom(prenom) as prenom, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2) subview + WHERE SUBSTR(NOM_MEDECIN_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(PRENOM_MEDECIN_SOUNDEX, 1, 8) = subview.prenom + AND w_medecins.medecin_id = 0; + + INSERT INTO activite[PX].t_medecins_administratifs(code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT DISTINCT CODE_MEDECIN, CODE_MEDECIN, NOM_MEDECIN, PRENOM_MEDECIN, COALESCE(t_specialites_medecin.oid,0), medecin_id + FROM w_medecins + LEFT JOIN base.t_specialites_medecin ON CODE_SPECIALITE = t_specialites_medecin.code + WHERE CODE_MEDECIN NOT IN (SELECT code_original FROM activite[PX].t_medecins_administratifs); + + UPDATE activite[PX].t_medecins_administratifs + SET nom = NOM_MEDECIN, + prenom = PRENOM_MEDECIN, + specialite_id = COALESCE(t_specialites_medecin.oid,0), + medecin_id = w_medecins.medecin_id, + no_adeli = code_adeli + FROM w_medecins LEFT JOIN base.t_specialites_medecin ON CODE_SPECIALITE = t_specialites_medecin.code_original + WHERE w_medecins.CODE_MEDECIN = t_medecins_administratifs.code_original + AND ( + t_medecins_administratifs.nom <> NOM_MEDECIN OR + t_medecins_administratifs.prenom <> PRENOM_MEDECIN OR + t_medecins_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid,0) OR + t_medecins_administratifs.medecin_id <> w_medecins.medecin_id OR + t_medecins_administratifs.no_adeli <> w_medecins.code_adeli + ); + + UPDATE base.t_medecins SET specialite_id = subview.specialite_id + FROM + (SELECT t_medecins.oid, MIN(t_medecins_administratifs.specialite_id) as specialite_id + FROM base.t_medecins, activite[PX].t_medecins_administratifs , base.t_specialites_medecin + WHERE t_medecins.oid = t_medecins_administratifs.medecin_id + AND t_medecins_administratifs.specialite_id = t_specialites_medecin.oid + GROUP BY t_medecins.oid) subview + WHERE t_medecins.oid = subview.oid AND t_medecins.oid <> 0 AND t_medecins.specialite_id = 0; + + -- code rpps + UPDATE base.t_medecins + SET code_rpps = subview.RPPS + FROM + ( + SELECT medecin_id, count(DISTINCT CJ_PRC.PRC_RPPS), MAX(CJ_PRC.PRC_RPPS) AS RPPS + FROM activite[PX].t_medecins_administratifs + JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid + JOIN prod_cegi.cj_pra ON code_original = PRA_LIBC + JOIN prod_cegi.cj_prc ON cj_prc.pra_id = cj_pra.pra_id + WHERE PRA_LIBC <> '' AND + CJ_PRC.PRC_RPPS <> '' AND + t_medecins.code_rpps = '' AND + medecin_id <> 0 + GROUP BY 1 + HAVING count(DISTINCT CJ_PRC.PRC_RPPS) = 1 + ) subview + WHERE t_medecins.oid = subview.medecin_id + ; + + -- Adresse et coordonnées + INSERT INTO base.t_codes_postaux(code, texte, texte_court, departement_id) + SELECT PRC_CPS, MAX(PRC_VILLE), MAX(PRC_VILLE), MAX(t_departements.oid) + FROM prod_CEGI.CJ_PRC + LEFT JOIN base.t_codes_postaux ON PRC_CPS = t_codes_postaux.code + JOIN base.t_departements ON + PRC_CPS NOT LIKE '97%' AND substr(PRC_CPS,1,2) = t_departements.code OR + PRC_CPS LIKE '97%' AND substr(PRC_CPS,1,3) = t_departements.code + WHERE PRC_CPS <> '' AND + length(PRC_CPS) = 5 AND + t_codes_postaux.code IS NULL + GROUP BY 1 + ; + + UPDATE activite[PX].t_medecins_administratifs SET + adresse = PRC_ADRx, + code_postal_id = subview.code_postal_id, + ville = PRC_VILLE, + telephone = PRC_TELx, + fax = PRC_FAX, + email = PRC_EMAIL + FROM + ( + SELECT t_medecins_administratifs.oid, + (MAX(ARRAY[PRC_DEPUIS::text, trim(PRC_ADR1 || ' ' || PRC_ADR2)]))[2] AS PRC_ADRx, + (MAX(ARRAY[PRC_DEPUIS::text, trim(PRC_VILLE)]))[2] AS PRC_VILLE, + (MAX(ARRAY[PRC_DEPUIS::text, trim(PRC_CPS)]))[2] AS PRC_CPS, + (MAX(ARRAY[PRC_DEPUIS::text, COALESCE(t_codes_postaux.oid,0)::text]))[2]::bigint AS code_postal_id, + (MAX(ARRAY[PRC_DEPUIS::text, trim(PRC_TEL1 || ' ' || PRC_TEL2 || ' ' || PRC_TEL3)]))[2] AS PRC_TELx, + (MAX(ARRAY[PRC_DEPUIS::text, trim(PRC_FAX)]))[2] AS PRC_FAX, + (MAX(ARRAY[PRC_DEPUIS::text, trim(PRC_EMAIL)]))[2] AS PRC_EMAIL + FROM activite[PX].t_medecins_administratifs + JOIN prod_cegi.CJ_PRA ON code_original = PRA_LIBC + JOIN prod_cegi.CJ_PRC ON cj_prc.pra_id = cj_pra.pra_id + LEFT JOIN base.t_codes_postaux ON PRC_CPS = t_codes_postaux.code + WHERE PRA_LIBC <> '' + GROUP BY 1 + ) subview + WHERE t_medecins_administratifs.oid = subview.oid AND + ( + t_medecins_administratifs.adresse IS DISTINCT FROM PRC_ADRx OR + t_medecins_administratifs.code_postal_id IS DISTINCT FROM subview.code_postal_id OR + t_medecins_administratifs.ville IS DISTINCT FROM PRC_VILLE OR + t_medecins_administratifs.telephone IS DISTINCT FROM PRC_TELx OR + t_medecins_administratifs.fax IS DISTINCT FROM PRC_FAX OR + t_medecins_administratifs.email IS DISTINCT FROM PRC_EMAIL + ) + ; + + ]]> + + + + '' THEN '0' + ELSE '1' END + AS type_t2a + FROM prod_cegiloghos.OPERA_PSDISC + LEFT JOIN prod_cegiloghos.OPERA_PSTARF ON OPERA_PSDISC.CODE_SERVICE_TARIFAIRE = OPERA_PSTARF.CODE_SERVICE_TARIFAIRE + WHERE CODE_SERVICE_DISCIPLINE <> '' AND + CODE_SERVICE_DISCIPLINE NOT IN (SELECT code_original FROM activite[PX].t_services_facturation) + ORDER BY 1; + + UPDATE activite[PX].t_services_facturation SET + code = CODE_SERVICE_DISCIPLINE, + texte = LIBELLE_SERVICE_DISCIPLINE, + texte_court = LIBELLE_SERVICE_DISCIPLINE + FROM prod_cegiloghos.OPERA_PSDISC + WHERE t_services_facturation.code_original = CODE_SERVICE_DISCIPLINE AND + ( + t_services_facturation.code IS DISTINCT FROM CODE_SERVICE_DISCIPLINE OR + t_services_facturation.texte IS DISTINCT FROM LIBELLE_SERVICE_DISCIPLINE OR + t_services_facturation.texte_court IS DISTINCT FROM LIBELLE_SERVICE_DISCIPLINE + ) + ; + + UPDATE activite[PX].t_services_facturation + SET mode_traitement_id = COALESCE(t_modes_traitement.oid,0) + FROM prod_cegiloghos.OPERA_PSDISC + JOIN prod_cegiloghos.OPERA_PSTARF ON OPERA_PSDISC.CODE_SERVICE_TARIFAIRE = OPERA_PSTARF.CODE_SERVICE_TARIFAIRE + LEFT JOIN base.t_modes_traitement ON MT = t_modes_traitement.code + WHERE t_services_facturation.code_original = CODE_SERVICE_DISCIPLINE AND + COALESCE(mode_traitement_id,0) = 0 AND + COALESCE(mode_traitement_id,0) <> COALESCE(t_modes_traitement.oid,0); + + UPDATE activite[PX].t_services_facturation + SET dmt_id = COALESCE(t_dmt.oid,0) + FROM prod_cegiloghos.OPERA_PSDISC + JOIN prod_cegiloghos.OPERA_PSTARF ON OPERA_PSDISC.CODE_SERVICE_TARIFAIRE = OPERA_PSTARF.CODE_SERVICE_TARIFAIRE + LEFT JOIN base.t_dmt ON DMT = t_dmt.code + WHERE t_services_facturation.code_original = CODE_SERVICE_DISCIPLINE AND + COALESCE(dmt_id,0) = 0 AND + COALESCE(dmt_id,0) <> COALESCE(t_dmt.oid,0); + + -- Unités fonctionnelles + + INSERT INTO activite[PX].t_unites_fonctionnelles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_fonctionnelles); + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT + CODE_SERVICE_DISCIPLINE, + CODE_SERVICE_DISCIPLINE, + LIBELLE_SERVICE_DISCIPLINE, + LIBELLE_SERVICE_DISCIPLINE + FROM prod_cegiloghos.OPERA_PSDISC + WHERE CODE_SERVICE_DISCIPLINE NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles); + + UPDATE activite[PX].t_unites_fonctionnelles SET + code = CODE_SERVICE_DISCIPLINE, + texte = LIBELLE_SERVICE_DISCIPLINE, + texte_court = LIBELLE_SERVICE_DISCIPLINE + FROM prod_cegiloghos.OPERA_PSDISC + WHERE t_unites_fonctionnelles.code_original = CODE_SERVICE_DISCIPLINE AND + ( + t_unites_fonctionnelles.code IS DISTINCT FROM CODE_SERVICE_DISCIPLINE OR + t_unites_fonctionnelles.texte IS DISTINCT FROM LIBELLE_SERVICE_DISCIPLINE OR + t_unites_fonctionnelles.texte_court IS DISTINCT FROM LIBELLE_SERVICE_DISCIPLINE + ) + ; + + -- Unités médicales + + INSERT INTO activite[PX].t_unites_medicales(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_medicales); + + SELECT base.cti_execute(' + INSERT INTO activite[PX].t_unites_medicales(code_original, code, texte, texte_court) + SELECT CODE, CODE, LIB, LIB + FROM prod_cegi.UM + WHERE CODE NOT IN (SELECT code_original FROM activite[PX].t_unites_medicales) + ORDER BY CODE',1) + WHERE (SELECT count(*) FROM information_schema.tables WHERE table_name = 'um' AND table_schema='prod_cegi') > 0 + ; + + SELECT base.cti_execute(' + UPDATE activite[PX].t_unites_medicales SET + code = UM.CODE, + texte = UM.LIB, + texte_court = UM.LIB + FROM prod_cegi.UM + WHERE UM.CODE = t_unites_medicales.code_original AND + ( + t_unites_medicales.code IS DISTINCT FROM UM.CODE OR + t_unites_medicales.texte IS DISTINCT FROM UM.LIB OR + t_unites_medicales.texte_court IS DISTINCT FROM UM.LIB + )',1) + WHERE (SELECT count(*) FROM information_schema.tables WHERE table_name = 'um' AND table_schema='prod_cegi') > 0 + ; + + + -- Activités + + INSERT INTO activite[PX].t_activites(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_activites); + + + + -- Etages et lits + DROP TABLE IF EXISTS w_OPERA_PLIT; + CREATE TEMP TABLE w_OPERA_PLIT AS + SELECT + CODE_LIT, + LIBELLE_LIT, + CASE WHEN CODE_ETAGE <> '' THEN CODE_ETAGE ELSE SUBSTR(CODE_LIT,1,1) END AS CODE_ETAGE, + CASE WHEN CODE_ETAGE <> '' THEN LIBELLE_ETAGE ELSE 'Etage ' || SUBSTR(CODE_LIT,1,1) END AS LIBELLE_ETAGE + FROM prod_cegiloghos.OPERA_PLIT; + + INSERT INTO activite[PX].t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_etages); + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT + CODE_ETAGE, + CODE_ETAGE, + MAX(LIBELLE_ETAGE), + MAX(LIBELLE_ETAGE), + 0 AS nb_lits + FROM w_OPERA_PLIT + WHERE CODE_ETAGE <> '' AND + CODE_ETAGE NOT IN (SELECT code_original FROM activite[PX].t_etages WHERE code_original IS NOT NULL) + GROUP BY 1,2 + ORDER BY 1; + + UPDATE activite[PX].t_etages SET + code = CODE_ETAGE, + texte = LIBELLE_ETAGE, + texte_court = LIBELLE_ETAGE + FROM + ( + SELECT + CODE_ETAGE, + MAX(LIBELLE_ETAGE) AS LIBELLE_ETAGE + FROM w_OPERA_PLIT + WHERE CODE_ETAGE <> '' + GROUP BY 1 + ) subview + WHERE t_etages.code_original = CODE_ETAGE AND + ( + t_etages.code IS DISTINCT FROM CODE_ETAGE OR + t_etages.texte IS DISTINCT FROM LIBELLE_ETAGE OR + t_etages.texte_court IS DISTINCT FROM LIBELLE_ETAGE + ) + ; + + INSERT INTO activite[PX].t_lits(oid, code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0, 'N' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_lits); + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT CODE_ETAGE || '|' || CODE_LIT, CODE_LIT, MAX(LIBELLE_LIT), MAX(LIBELLE_LIT), t_etages.oid, 'N' + FROM w_OPERA_PLIT + JOIN activite[PX].t_etages ON CODE_ETAGE = t_etages.code_original + WHERE CODE_LIT <> '' AND CODE_ETAGE || '|' || CODE_LIT NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL) + GROUP BY 1,2,5 + ORDER BY 1; + + + UPDATE activite[PX].t_lits SET + code = CODE_LIT, + texte = LIBELLE_LIT, + texte_court = LIBELLE_LIT + FROM + ( + SELECT + CODE_ETAGE, + CODE_LIT, + MAX(LIBELLE_LIT) AS LIBELLE_LIT + FROM w_OPERA_PLIT + WHERE CODE_ETAGE <> '' AND CODE_LIT <> '' + GROUP BY 1,2 + ) subview + WHERE t_lits.code_original = (CODE_ETAGE || '|' || CODE_LIT) AND + ( + t_lits.code IS DISTINCT FROM CODE_LIT OR + t_lits.texte IS DISTINCT FROM LIBELLE_LIT OR + t_lits.texte_court IS DISTINCT FROM LIBELLE_LIT + ) + ; + + + ]]> + + + + '' AND + COMPTE_COMPTABLE NOT IN (SELECT code FROM activite[PX].t_compte WHERE code IS NOt NULL) + GROUP BY 1 + ORDER BY 1; + + -- Rubriques et prestations + + INSERT INTO activite[PX].t_rubriques_facturation(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_rubriques_facturation); + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT '*ECARTCTI', chr(127) || 'ECART', 'Ecarts de répartition', 'Ecarts de répartition' + WHERE '*ECARTCTI' NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation); + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT '*ATTNSCTI', chr(127) || 'ATTNS', 'Attente (non soldé)', 'Attente (non soldé)' + WHERE '*ATTNSCTI' NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation); + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT + CODE_PRESTA, + CODE_PRESTA, + LIBELLE_PRESTA, + LIBELLE_PRESTA + FROM + ( + SELECT + CODE_PRESTA, + (MAX(ARRAY[CASE WHEN CODE_SERVICE_TARIFAIRE = '' THEN '1' ELSE '0' END::text, LIBELLE_PRESTA]))[2] AS LIBELLE_PRESTA + FROM prod_cegiloghos.OPERA_PPRS + GROUP BY 1 + ) subview + WHERE CODE_PRESTA NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation) + ; + + UPDATE activite[PX].t_rubriques_facturation SET + code = CODE_PRESTA, + texte = LIBELLE_PRESTA, + texte_court = LIBELLE_PRESTA + FROM ( + SELECT + CODE_PRESTA, + (MAX(ARRAY[CASE WHEN CODE_SERVICE_TARIFAIRE = '' THEN '1' ELSE '0' END::text, LIBELLE_PRESTA]))[2] AS LIBELLE_PRESTA + FROM prod_cegiloghos.OPERA_PPRS + GROUP BY 1 + ) subview + WHERE CODE_PRESTA = code_original AND + ( + code IS DISTINCT FROM CODE_PRESTA OR + texte IS DISTINCT FROM LIBELLE_PRESTA OR + texte_court IS DISTINCT FROM LIBELLE_PRESTA + ) + ; + + + + + -- Prestations + INSERT INTO activite.t_prestations(oid, code_original, code, texte, texte_court, clinique_honoraire) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée', '' WHERE 0 NOT IN (SELECT oid FROM activite.t_prestations); + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court, clinique_honoraire) + SELECT '*ECARTCTI', chr(127) || 'ECART', 'Ecarts de répartition', 'Ecarts de répartition', '' + WHERE '*ECARTCTI' NOT IN (SELECT code_original FROM activite.t_prestations WHERE code_original IS NOT NULL); + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court, clinique_honoraire) + SELECT '*ATTNSCTI', chr(127) || 'ATTNS', 'Attente (non soldé)', 'Attente (non soldé)', '' + WHERE '*ATTNSCTI' NOT IN (SELECT code_original FROM activite.t_prestations WHERE code_original IS NOT NULL); + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT + CODE_PRESTA, + CODE_PRESTA, + LIBELLE_PRESTA, + LIBELLE_PRESTA + FROM + ( + SELECT + CODE_PRESTA, + (MAX(ARRAY[CASE WHEN CODE_SERVICE_TARIFAIRE = '' THEN '1' ELSE '0' END::text, LIBELLE_PRESTA]))[2] AS LIBELLE_PRESTA + FROM prod_cegiloghos.OPERA_PPRS + GROUP BY 1 + ) subview + WHERE CODE_PRESTA NOT IN (SELECT code_original FROM activite.t_prestations) + ; + + ]]> + + + + + + + + + + '' THEN ORG_LIBELLE ELSE ORG_LIBC END AS ORG_LIBELLE, + 0::bigint AS tiers_payant_id, + MAX(COALESCE(trim(TIES_ADR1 || ' ' || TIES_ADR2),'')) AS TIES_ADRx, + MAX(COALESCE(t_codes_postaux.oid,0)) AS code_postal_id, + MAX(COALESCE(TIES_CODEP,'')) AS TIES_CODEP, + MAX(COALESCE(TIES_VILLE,'')) AS TIES_VILLE, + MAX(COALESCE(TIES_TEL,'')) AS TIES_TEL, + MAX(COALESCE(TIES_FAX,'')) AS TIES_FAX, + MAX(COALESCE(TIES_EMAIL,'')) AS TIES_EMAIL + FROM prod_cegi.CJ_ORG + JOIN prod_cegi.CJ_AFF on CJ_AFF.TER_ID = CJ_ORG.TER_ID AND AFF_TYPE = ANY (Array['M', 'C']) + LEFT JOIN prod_cegi.CMTIERS ON CJ_ORG.ORG_LIBC = CMTIERS.TIE_nomc + LEFT JOIN prod_cegi.CMTIESERV ON CMTIERS.TIE_ID = CMTIESERV.TIE_ID AND CMTIESERV.TIES_SERV = 0 + LEFT JOIN base.t_codes_postaux ON TIES_CODEP = t_codes_postaux.code AND TIES_CODEP <> '' + WHERE CJ_ORG.TER_ID <> 0 + GROUP BY 1,2,3,4,5 + ; + + ANALYSE w_CJ_ORG + ; + + + INSERT INTO activite[PX].t_tiers_payant(code_original, code, type_tiers_payant, texte, texte_court) + SELECT + ORG_LIBC, + ORG_LIBC, + MAX(type_tiers_payant), + MAX(ORG_LIBELLE), + MAX(ORG_LIBELLE) + FROM w_CJ_ORG + WHERE ORG_LIBC NOT IN (SELECT code_original FROM activite[PX].t_tiers_payant WHERE code_original IS NOT NULL) + GROUP BY 1,2 + ORDER BY 1 + ; + + UPDATE activite[PX].t_tiers_payant SET + texte = ORG_LIBELLE, + texte_court = ORG_LIBELLE, + adresse = TIES_ADRx, + code_postal_id = w_CJ_ORG.code_postal_id, + ville = TIES_VILLE, + telephone = TIES_TEL, + fax = TIES_FAX, + email = TIES_EMAIL + FROM w_CJ_ORG + WHERE t_tiers_payant.code_original = ORG_LIBC AND + ( + t_tiers_payant.texte IS DISTINCT FROM ORG_LIBELLE OR + t_tiers_payant.texte_court IS DISTINCT FROM ORG_LIBELLE OR + t_tiers_payant.adresse IS DISTINCT FROM TIES_ADRx OR + t_tiers_payant.code_postal_id IS DISTINCT FROM w_CJ_ORG.code_postal_id OR + t_tiers_payant.ville IS DISTINCT FROM TIES_VILLE OR + t_tiers_payant.telephone IS DISTINCT FROM TIES_TEL OR + t_tiers_payant.fax IS DISTINCT FROM TIES_FAX OR + t_tiers_payant.email IS DISTINCT FROM TIES_EMAIL + ) + ; + + UPDATE activite[PX].t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM prod_cegi.CJ_ORG + JOIN prod_cegi.CJ_RGM ON CJ_RGM.RGM_ID = CJ_ORG.RGM_ID + JOIN base.t_grands_regimes ON CJ_RGM.RGM_LIBC = t_grands_regimes.code + WHERE t_tiers_payant.code_original = CJ_ORG.TER_ID AND + CJ_ORG.TER_ID <> 0 AND + COALESCE(t_tiers_payant.grand_regime_id,0) = 0 AND + t_grands_regimes.oid <> 0; + + UPDATE w_CJ_ORG + SET tiers_payant_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE ORG_LIBC = code_original; + + ]]> + + + + '' THEN MAX(SPE_LIBELLE) ELSE SPE_LIBC END, + CASE WHEN MAX(SPE_LIBELLE) <> '' THEN MAX(SPE_LIBELLE) ELSE SPE_LIBC END + FROM prod_cegi.CJ_SPE + WHERE SPE_LIBC NOT IN (SELECT code FROM base.t_specialites_medecin WHERE code is NOT null) AND + SPE_LIBC <> '?' AND + SPE_LIBELLE <> '?' AND + SPE_ID IN (SELECT SPE_ID FROM prod_cegi.CJ_PRA) + GROUP BY 1,2 + ORDER BY 1; + + SELECT base.cti_execute( + 'INSERT INTO base.t_specialites_medecin(code_original, code, texte, texte_court) + SELECT code || ''..'', code || ''..'', texte, texte + FROM pmsi.t_specialites_medecin + WHERE length(code) = 2 AND + (code || ''..'') NOT IN (SELECT code FROM base.t_specialites_medecin WHERE code is NOT null) + ',1) + WHERE 't_specialites_medecin' IN (SELECT tablename FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 't_specialites_medecin') + ; + + DROP TABLE IF EXISTS w_CJ_PRA; + CREATE TEMP TABLE w_CJ_PRA AS + SELECT + CJ_PRA.*, + COALESCE(SPE_LIBC,'') AS SPE_LIBC, + COALESCE(PRC_IDENTIFICATION,'') AS PRC_IDENTIFICATION, + 0::bigint AS medecin_administratif_id + FROM prod_cegi.CJ_PRA + LEFT JOIN prod_cegi.CJ_SPE ON CJ_PRA.SPE_ID = CJ_SPE.SPE_ID + LEFT JOIN + ( + SELECT PRA_ID, + (MAX(ARRAY[PRC_DEPUIS::text,SUBSTR(COALESCE(PRC_IDENTIFICATION,''),1,9)]))[2] AS PRC_IDENTIFICATION + FROM prod_cegi.CJ_PRC + GROUP BY 1 + ) subview ON CJ_PRA.PRA_ID = subview.PRA_ID + WHERE PER_NOM <> '?'; + + + + + DROP TABLE IF EXISTS w_medecins; + CREATE TEMP TABLE w_medecins AS + SELECT + PRA_LIBC, + w_CJ_PRA.PRA_ID, + base.cti_soundex_nom(PER_NOM) AS PER_NOM_SOUNDEX, + base.cti_soundex_nom(PER_PRENOM) AS PER_PRENOM_SOUNDEX, + PER_NOM, + PER_PRENOM AS PER_PRENOM, + PRC_IDENTIFICATION AS CODE_ADELI, + SPE_LIBC AS SPE_LIBC, + COALESCE(t_medecins_administratifs.medecin_id,0) as medecin_id + FROM w_CJ_PRA + LEFT JOIN activite[PX].t_medecins_administratifs ON w_CJ_PRA.PRA_LIBC = t_medecins_administratifs.code_original; + + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.PER_NOM, w_medecins.PER_PRENOM, w_medecins.CODE_ADELI, 0 FROM + (SELECT SUBSTR(PER_NOM_SOUNDEX, 1, 8) AS PER_NOM_SOUNDEX, SUBSTR(PER_PRENOM_SOUNDEX, 1, 8) AS PER_PRENOM_SOUNDEX, CODE_ADELI, MIN(PRA_LIBC) AS PRA_LIBC + FROM w_medecins + GROUP BY 1,2,3) subview, w_medecins + WHERE w_medecins.PRA_LIBC = subview.PRA_LIBC + AND subview.PER_NOM_SOUNDEX || ',' || subview.PER_PRENOM_SOUNDEX || ',' || subview.CODE_ADELI NOT IN + (SELECT substr(base.cti_soundex_nom(nom),1,8) || ',' || substr(base.cti_soundex_nom(prenom),1,8) || ',' || numero_ordre FROM base.t_medecins); + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.PER_NOM, w_medecins.PER_PRENOM, w_medecins.CODE_ADELI, 0 FROM + (SELECT PER_NOM_SOUNDEX, PER_PRENOM_SOUNDEX, MIN(PRA_LIBC) AS PRA_LIBC + FROM w_medecins + GROUP BY 1,2) subview, w_medecins + WHERE w_medecins.PRA_LIBC = subview.PRA_LIBC + AND subview.PER_NOM_SOUNDEX || ',' || subview.PER_PRENOM_SOUNDEX NOT IN + (SELECT base.cti_soundex_nom(nom) || ',' || base.cti_soundex_nom(prenom) FROM base.t_medecins); + + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT substr(base.cti_soundex_nom(nom),1,8) as nom , substr(base.cti_soundex_nom(prenom),1,8) as prenom, numero_ordre, MIN(oid) AS medecin_id + FROM base.t_medecins GROUP BY 1,2,3) subview + WHERE SUBSTR(PER_NOM_SOUNDEX, 1, 8) = substr(subview.nom,1,8) + AND SUBSTR(PER_PRENOM_SOUNDEX, 1, 8) = substr(subview.prenom,1,8) + AND CODE_ADELI = subview.numero_ordre + AND w_medecins.medecin_id = 0; + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT base.cti_soundex_nom(nom) as nom , base.cti_soundex_nom(prenom) as prenom, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2) subview + WHERE PER_NOM_SOUNDEX = subview.nom + AND PER_PRENOM_SOUNDEX = subview.prenom + AND w_medecins.medecin_id = 0; + + + INSERT INTO activite[PX].t_medecins_administratifs(code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT DISTINCT PRA_LIBC, PRA_LIBC, PER_NOM, PER_PRENOM, COALESCE(t_specialites_medecin.oid,0), medecin_id + FROM w_medecins + LEFT JOIN base.t_specialites_medecin ON SPE_LIBC = t_specialites_medecin.code + WHERE PRA_LIBC NOT IN (SELECT code_original FROM activite[PX].t_medecins_administratifs WHERE code_original IS NOT NULL); + + UPDATE activite[PX].t_medecins_administratifs + SET nom = PER_NOM, + prenom = PER_PRENOM, + specialite_id = COALESCE(t_specialites_medecin.oid,0), + medecin_id = w_medecins.medecin_id, + no_adeli = code_adeli + FROM w_medecins LEFT JOIN base.t_specialites_medecin ON SPE_LIBC = t_specialites_medecin.code_original + WHERE w_medecins.PRA_LIBC = t_medecins_administratifs.code_original + AND ( + t_medecins_administratifs.nom <> PER_NOM OR + t_medecins_administratifs.prenom <> PER_PRENOM OR + t_medecins_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid,0) OR + t_medecins_administratifs.medecin_id <> w_medecins.medecin_id OR + t_medecins_administratifs.no_adeli <> w_medecins.code_adeli + ); + + UPDATE base.t_medecins SET specialite_id = subview.specialite_id + FROM + (SELECT t_medecins.oid, MIN(t_medecins_administratifs.specialite_id) as specialite_id + FROM base.t_medecins, activite[PX].t_medecins_administratifs , base.t_specialites_medecin + WHERE t_medecins.oid = t_medecins_administratifs.medecin_id + AND t_medecins_administratifs.specialite_id = t_specialites_medecin.oid + GROUP BY t_medecins.oid) subview + WHERE t_medecins.oid = subview.oid AND t_medecins.oid <> 0 AND t_medecins.specialite_id = 0; + + + UPDATE w_CJ_PRA + SET medecin_administratif_id = t_medecins_administratifs.oid + FROM activite[PX].t_medecins_administratifs + WHERE activite[PX].t_medecins_administratifs.code_original = PRA_LIBC; + + ]]> + + + + '' AND + NVE_LIBC NOT IN (SELECT code_original FROM activite[PX].t_services_facturation WHERE code_original IS NOT NULL) + ORDER BY 1; + + + UPDATE activite[PX].t_services_facturation SET + code = NVE_LIBC, + texte = NVE_LIBELLE, + texte_court = NVE_LIBELLE + FROM w_CJ_NVE_service + WHERE NVE_LIBC = code_original AND + ( + code IS DISTINCT FROM NVE_LIBC OR + texte IS DISTINCT FROM NVE_LIBELLE OR + texte_court IS DISTINCT FROM NVE_LIBELLE + ) + ; + + INSERT INTO base.t_modes_traitement(code, texte, texte_court) + SELECT MTR_LIBC, MTR_LIBELLE, MTR_LIBELLE + FROM prod_cegi.CJ_MTR + WHERE MTR_LIBC NOT IN (SELECT code FROM base.t_modes_traitement) + ORDER BY MTR_LIBC; + + INSERT INTO base.t_dmt(code, texte, texte_court) + SELECT DMT_LIBC, DMT_LIBELLE, DMT_LIBELLE + FROM prod_cegi.CJ_DMT + WHERE DMT_LIBC NOT IN (SELECT code FROM base.t_dmt) + ORDER BY DMT_LIBC; + + UPDATE activite[PX].t_services_facturation + SET mode_traitement_id = COALESCE(t_modes_traitement.oid,0) + FROM prod_cegi.CJ_NVE + JOIN prod_cegi.CJ_MTR ON CJ_NVE.MTR_ID = CJ_MTR.MTR_ID + LEFT JOIN base.t_modes_traitement ON MTR_LIBC = t_modes_traitement.code + WHERE t_services_facturation.code = NVE_LIBC AND + COALESCE(t_services_facturation.mode_traitement_id,0) = 0 AND + COALESCE(t_services_facturation.mode_traitement_id,0) <> COALESCE(t_modes_traitement.oid,0); + + UPDATE activite[PX].t_services_facturation + SET dmt_id = COALESCE(t_dmt.oid,0) + FROM prod_cegi.CJ_NVE + JOIN prod_cegi.CJ_DMT ON CJ_NVE.DMT_ID = CJ_DMT.DMT_ID + LEFT JOIN base.t_dmt ON DMT_LIBC = t_dmt.code + WHERE t_services_facturation.code_original = NVE_LIBC AND + COALESCE(t_services_facturation.dmt_id,0) = 0 AND + COALESCE(t_services_facturation.dmt_id,0) <> COALESCE(t_dmt.oid,0); + + UPDATE w_CJ_NVE_service + SET service_facturation_id = t_services_facturation.oid + FROM activite[PX].t_services_facturation + WHERE NVE_LIBC = t_services_facturation.code_original AND + service_facturation_id = 0; + + UPDATE w_CJ_NVE_service + SET mode_traitement_id = t_services_facturation.mode_traitement_id + FROM activite[PX].t_services_facturation + WHERE NVE_LIBC = t_services_facturation.code_original AND + w_CJ_NVE_service.mode_traitement_id = 0 AND + t_services_facturation.mode_traitement_id <> 0; + + + -- Unités fonctionnelles + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT + NVE_LIBC, + NVE_LIBC, + NVE_LIBELLE, + NVE_LIBELLE + FROM w_CJ_NVE_service + WHERE NVE_LIBC NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles WHERE code_original IS NOT NULL) + ORDER BY 1; + + UPDATE activite[PX].t_unites_fonctionnelles SET + code = NVE_LIBC, + texte = NVE_LIBELLE, + texte_court = NVE_LIBELLE + FROM w_CJ_NVE_service + WHERE NVE_LIBC = code_original AND + ( + code IS DISTINCT FROM NVE_LIBC OR + texte IS DISTINCT FROM NVE_LIBELLE OR + texte_court IS DISTINCT FROM NVE_LIBELLE + ) + ; + + UPDATE w_CJ_NVE_service + SET unite_fonctionnelle_id = t_unites_fonctionnelles.oid + FROM activite[PX].t_unites_fonctionnelles + WHERE NVE_LIBC = t_unites_fonctionnelles.code_original AND + unite_fonctionnelle_id = 0; + + -- Unités médicales + SELECT base.cti_execute(' + INSERT INTO activite[PX].t_unites_medicales(code_original, code, texte, texte_court) + SELECT CODE, CODE, LIB, LIB + FROM prod_cegi.UM + WHERE CODE NOT IN (SELECT code_original FROM activite[PX].t_unites_medicales) + ORDER BY CODE',1) + WHERE (SELECT count(*) FROM information_schema.tables WHERE table_name = 'um' AND table_schema='prod_cegi') > 0; + + SELECT base.cti_execute(' + UPDATE activite[PX].t_unites_medicales SET + code = UM.CODE, + texte = UM.LIB, + texte_court = UM.LIB + FROM prod_cegi.UM + WHERE UM.CODE = t_unites_medicales.code_original AND + ( + t_unites_medicales.code IS DISTINCT FROM UM.CODE OR + t_unites_medicales.texte IS DISTINCT FROM UM.LIB OR + t_unites_medicales.texte_court IS DISTINCT FROM UM.LIB + )',1) + WHERE (SELECT count(*) FROM information_schema.tables WHERE table_name = 'um' AND table_schema='prod_cegi') > 0 + ; + + -- Activités + + + + + -- Etages et lits + DROP TABLE IF EXISTS w_LITS; + CREATE TEMP TABLE w_LITS AS + SELECT + 0::bigint AS cti_lit_id, + CJ_NVE.NVE_ID, + CJ_NVE.NVE_LIBC AS CODE_LIT, + CJ_NVE.NVE_LIBELLE AS LIBELLE_LIT, + 0::bigint AS cti_etage_id, + COALESCE(CJ_NVE_ETAGE.NVE_LIBC,'')::text AS CODE_ETAGE, + COALESCE(CJ_NVE_ETAGE.NVE_LIBELLE,'')::text AS LIBELLE_ETAGE, + CJ_NVE.ETB_ID + FROM prod_cegi.CJ_NVE + LEFT JOIN prod_cegi.LITS ON CJ_NVE.NVE_ID = LITS.NVE_ID + LEFT JOIN prod_cegi.CHAMBRE ON LITS.NVE_ID_ANC = CHAMBRE.NVE_ID + LEFT JOIN prod_cegi.CJ_NVE CJ_NVE_ETAGE ON CHAMBRE.NVE_ID_ANC = CJ_NVE_ETAGE.NVE_ID + WHERE CJ_NVE.NVE_TYPE = 'LIT' AND + CJ_NVE.NVE_LIBC <> '' AND + ( + CJ_NVE.ETB_ID::text = ANY (string_to_array('[ID_ETAB]'::text,',')) OR + '[ID_ETAB]' = '' OR + '[ID_ETAB]' = '-1' + ); + + -- Etage selon import LOGHOS + UPDATE w_LITS SET + cti_lit_id = t_lits.oid, + cti_etage_id = t_lits.etage_id, + CODE_ETAGE = t_etages.code, + LIBELLE_ETAGE = t_etages.texte + FROM activite[PX].t_lits + JOIN activite[PX].t_etages ON etage_id = t_etages.oid + WHERE CODE_LIT = t_lits.code AND + w_LITS.CODE_ETAGE = '' AND + t_etages.code_original NOT LIKE '*N%'; + + -- Etage selon codification + UPDATE w_LITS SET + cti_etage_id = subview.cti_etage_id, + CODE_ETAGE = subview.CODE_ETAGE, + LIBELLE_ETAGE = subview.LIBELLE_ETAGE + FROM + ( + SELECT substr(CODE_LIT,1,2) AS prefix, + length(CODE_LIT) AS l, + MAX(cti_etage_id) AS cti_etage_id, + MAX(CODE_ETAGE) AS CODE_ETAGE, + MAX(LIBELLE_ETAGE) AS LIBELLE_ETAGE, + count(DISTINCT cti_etage_id) AS nb + FROM w_LITS + WHERE cti_etage_id <> 0 + GROUP BY 1,2 + HAVING count(DISTINCT cti_etage_id) = 1 + ORDER BY 1,2 + ) subview + WHERE w_LITS.cti_etage_id = 0 AND + substr(w_LITS.CODE_LIT,1,2) = subview.prefix AND + length(w_LITS.CODE_LIT) = subview.l AND + w_LITS.CODE_ETAGE = ''; + + UPDATE w_LITS SET + cti_etage_id = subview.cti_etage_id, + CODE_ETAGE = subview.CODE_ETAGE, + LIBELLE_ETAGE = subview.LIBELLE_ETAGE + FROM + ( + SELECT substr(CODE_LIT,1,1) AS prefix, + MAX(cti_etage_id) AS cti_etage_id, + MAX(CODE_ETAGE) AS CODE_ETAGE, + MAX(LIBELLE_ETAGE) AS LIBELLE_ETAGE, + count(DISTINCT cti_etage_id) AS nb + FROM w_LITS + WHERE cti_etage_id <> 0 + GROUP BY 1 + HAVING count(DISTINCT cti_etage_id) = 1 + ORDER BY 1 + ) subview + WHERE w_LITS.cti_etage_id = 0 AND + substr(w_LITS.CODE_LIT,1,1) = subview.prefix AND + w_LITS.CODE_ETAGE = '' ; + + UPDATE w_LITS + SET CODE_ETAGE = '*N', LIBELLE_ETAGE = 'Non trouvé' + WHERE CODE_ETAGE = '' AND CODE_LIT <> '' AND + (SELECT COUNT(DISTINCT ETB_ID) FROM w_LITS) <= 1 + ; + + + UPDATE w_LITS + SET CODE_ETAGE = '*N-'||ETB_ID, LIBELLE_ETAGE = 'Non trouvé' + WHERE CODE_ETAGE = '' AND CODE_LIT <> '' AND + (SELECT COUNT(DISTINCT ETB_ID) FROM w_LITS) > 1 + ; + + + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT + CODE_ETAGE, + CODE_ETAGE, + MAX(LIBELLE_ETAGE), + MAX(LIBELLE_ETAGE), + 0 AS nb_lits + FROM w_LITS + WHERE cti_etage_id = 0 AND + CODE_ETAGE <> '' AND + CODE_ETAGE NOT IN (SELECT code_original FROM activite[PX].t_etages WHERE code_original IS NOT NULL) + GROUP BY 1,2 + ORDER BY 1; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT CODE_ETAGE || '|' || CODE_LIT, CODE_LIT, MAX(LIBELLE_LIT), MAX(LIBELLE_LIT), MAX(t_etages.oid), 'N' + FROM w_LITS + JOIN activite[PX].t_etages ON CODE_ETAGE = t_etages.code_original + WHERE cti_lit_id = 0 AND + CODE_LIT <> '' AND CODE_ETAGE || '|' || CODE_LIT NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL) + GROUP BY 1,2 + ORDER BY 1; + + UPDATE activite[PX].t_etages SET + code = CODE_ETAGE, + texte = LIBELLE_ETAGE, + texte_court = LIBELLE_ETAGE + FROM + ( + SELECT + CODE_ETAGE, + MAX(LIBELLE_ETAGE) AS LIBELLE_ETAGE + FROM w_LITS + WHERE CODE_ETAGE <> '' + GROUP BY 1 + ) subview + WHERE t_etages.code_original = CODE_ETAGE AND + ( + t_etages.code IS DISTINCT FROM CODE_ETAGE OR + t_etages.texte IS DISTINCT FROM LIBELLE_ETAGE OR + t_etages.texte_court IS DISTINCT FROM LIBELLE_ETAGE + ) + ; + + UPDATE w_LITS SET + cti_lit_id = t_lits.oid, + cti_etage_id = t_lits.etage_id, + CODE_ETAGE = t_etages.code_original, + LIBELLE_ETAGE = t_etages.texte + FROM activite[PX].t_lits + JOIN activite[PX].t_etages ON etage_id = t_etages.oid + WHERE CODE_LIT = t_lits.code AND + cti_lit_id = 0; + + UPDATE activite[PX].t_lits + SET texte = NVE_LIBELLE, texte_court = NVE_LIBELLE + FROM ( + SELECT NVE_LIBC, MAX(NVE_LIBELLE) AS NVE_LIBELLE + FROM prod_cegi.CJ_NVE + WHERE NVE_TYPE = 'LIT' AND + ( + CJ_NVE.ETB_ID::text = ANY (string_to_array('[ID_ETAB]'::text,',')) OR + '[ID_ETAB]' = '' OR + '[ID_ETAB]' = '-1' + ) + GROUP BY 1 + ) subview + WHERE t_lits.code = NVE_LIBC AND + ( + texte IS DISTINCT FROM NVE_LIBELLE OR + texte_court IS DISTINCT FROM NVE_LIBELLE + ) + ; + + + ]]> + + + + '' AND + PLC_COMPTE NOT IN (SELECT code_original FROM activite[PX].t_compte WHERE code IS NOT NULL) + GROUP BY 1 + ORDER BY 1; + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT PLC_COMPTE, PLC_COMPTE, MAX(PLC_COMPTE), MAX(PLC_COMPTE) + FROM prod_cegi.CMECRITURES + WHERE PLC_COMPTE <> '' AND + PLC_COMPTE NOT IN (SELECT code_original FROM activite[PX].t_compte WHERE code IS NOT NULL) + GROUP BY 1 + ORDER BY 1 + ; + + + -- Rubriques + DROP TABLE IF EXISTS w_RUBRIQUES_PRESTATIONS; + CREATE TEMP TABLE w_RUBRIQUES_PRESTATIONS AS + SELECT CJ_LCS.PST_ID, + PST_LIBC, + PST_LIBELLE, + LCS_CODE, + PST_NOMTAB, + PST_LIBELLE AS LCS_LIBELLE + FROM prod_cegi.CJ_LCS + JOIN prod_cegi.CJ_PST ON CJ_LCS.PST_ID = CJ_PST.PST_ID + GROUP BY 1,2,3,4,5 + ; + + INSERT INTO w_RUBRIQUES_PRESTATIONS + SELECT CJ_LSPST.PST_ID, + PST_LIBC, + PST_LIBELLE, + PST_LIBC, + PST_NOMTAB, + PST_LIBELLE AS LCS_LIBELLE + FROM prod_cegi.CJ_LSPST + JOIN prod_cegi.CJ_PST ON CJ_LSPST.PST_ID = CJ_PST.PST_ID + WHERE CJ_LSPST.PST_ID NOT IN (SELECT PST_ID FROM w_RUBRIQUES_PRESTATIONS) + GROUP BY 1,2,3,4,5 + ; + + UPDATE w_RUBRIQUES_PRESTATIONS + SET LCS_CODE = PST_LIBC + WHERE LCS_CODE = ''; + + + UPDATE w_RUBRIQUES_PRESTATIONS SET + PST_LIBC = LCS_CODE, + PST_LIBELLE = t_prestations.texte, + LCS_LIBELLE = t_prestations.texte + FROM activite.t_prestations + WHERE LCS_CODE = t_prestations.code AND + PST_NOMTAB <> 0 AND + PST_LIBC <> LCS_CODE; + + DROP TABLE IF EXISTS w_RUBRIQUES; + CREATE TEMP TABLE w_RUBRIQUES AS + SELECT PST_ID, + MAX(PST_LIBC) AS PST_LIBC, + MAX(LCS_LIBELLE) AS LCS_LIBELLE + FROM w_RUBRIQUES_PRESTATIONS + GROUP BY 1 + ORDER BY 1 + ; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT + PST_LIBC, + PST_LIBC, + MAX(PST_LIBELLE), + MAX(PST_LIBELLE) + FROM w_RUBRIQUES_PRESTATIONS + WHERE PST_LIBC NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL ) + GROUP BY 1,2; + + UPDATE activite[PX].t_rubriques_facturation SET + code = PST_LIBC, + texte = PST_LIBELLE, + texte_court = PST_LIBELLE + FROM + ( + SELECT + PST_LIBC, + MAX(PST_LIBELLE) AS PST_LIBELLE + FROM w_RUBRIQUES_PRESTATIONS + WHERE PST_LIBC <> '' + GROUP BY 1 + ) subview + WHERE t_rubriques_facturation.code_original = PST_LIBC AND + ( + t_rubriques_facturation.code IS DISTINCT FROM PST_LIBC OR + t_rubriques_facturation.texte IS DISTINCT FROM PST_LIBELLE OR + t_rubriques_facturation.texte_court IS DISTINCT FROM PST_LIBELLE + ) + ; + + -- Prestations + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT + LCS_CODE, + LCS_CODE, + MAX(LCS_LIBELLE), + MAX(LCS_LIBELLE) + FROM w_RUBRIQUES_PRESTATIONS + WHERE LCS_CODE NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) AND + LCS_CODE <> '' + GROUP BY 1,2; + + UPDATE activite.t_prestations SET + code = LCS_CODE, + texte = LCS_LIBELLE, + texte_court = LCS_LIBELLE + FROM + ( + SELECT + LCS_CODE, + MAX(LCS_LIBELLE) AS LCS_LIBELLE + FROM w_RUBRIQUES_PRESTATIONS + WHERE LCS_CODE <> '' + GROUP BY 1 + ) subview + WHERE t_prestations.code_original = LCS_CODE AND + ( + t_prestations.code IS DISTINCT FROM LCS_CODE OR + t_prestations.texte IS DISTINCT FROM LCS_LIBELLE OR + t_prestations.texte_court IS DISTINCT FROM LCS_LIBELLE + ) + ; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT '*ATTNSCTI', chr(127) || 'ATTNS', 'Attente (non soldé)', 'Attente (non soldé)' + WHERE '*ATTNSCTI' NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation); + + INSERT INTO activite[PX].t_prestations(code_original, code, texte, texte_court, clinique_honoraire) + SELECT '*ECARTCTI', chr(127) || 'ECART', 'Ecarts de répartition', 'Ecarts de répartition', '' + WHERE '*ECARTCTI' NOT IN (SELECT code_original FROM activite[PX].t_prestations WHERE code_original IS NOT NULL); + + INSERT INTO activite[PX].t_prestations(code_original, code, texte, texte_court, clinique_honoraire) + SELECT '*ATTNSCTI', chr(127) || 'ATTNS', 'Attente (non soldé)', 'Attente (non soldé)', '' + WHERE '*ATTNSCTI' NOT IN (SELECT code_original FROM activite[PX].t_prestations WHERE code_original IS NOT NULL); + + ]]> + + + + + + + + + + + + '' + GROUP BY 1,2,3 + ORDER BY 1; + + -- Maj code postal sur séjours + UPDATE activite[PX].p_sejours + SET code_postal_id = t_codes_postaux.oid + FROM base.t_codes_postaux, w_CJ_PATIENT_CP + WHERE w_CJ_PATIENT_CP.CODE_POSTAL = t_codes_postaux.code AND + p_sejours.no_patient = w_CJ_PATIENT_CP.no_patient AND + p_sejours.no_patient IS NOT NULL and p_sejours.no_patient <> 0 AND + w_CJ_PATIENT_CP.CODE_POSTAL IS NOT NULL AND w_CJ_PATIENT_CP.CODE_POSTAL <> '' AND + p_sejours.code_postal_id = 0; + + -- Maj table OID + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'c_postaux', code_postal_id + FROM activite[PX].p_sejours + WHERE code_postal_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'c_postaux') + GROUP BY 2; + + -- ajout des coordonnées par séjour + INSERT INTO activite[PX].p_coordonnees_patient ( + sejour_id, + adresse, + code_postal_id, + commune, + telephone_fixe, + telephone_portable, + email + ) + SELECT + p_sejours.oid, + PER_NOMVOIE, + COALESCE(t_codes_postaux.oid,0), + PER_VILLE, + PAT_TEL_FIXE, + PAT_TEL_PORT, + PAT_EMAIL + FROM w_CJ_PATIENT + JOIN activite[PX].p_sejours ON no_sejour = SEJ_NUMDOS + LEFT JOIN base.t_codes_postaux on PER_CP = t_codes_postaux.code + ; + ]]> + + + + + + = '20120101' OR + DATE_SORTIE_SEJOUR IS NULL OR + DATE_SORTIE_SEJOUR <= '00010101' + GROUP BY 1; + + CREATE INDEX w_OPERA_SEJ_i1 + ON w_OPERA_SEJ + USING btree + (no_dossier); + + UPDATE w_OPERA_SEJ + SET code_med_traitant = '-' || code_med_traitant + WHERE code_med_traitant = '0' + ; + + -- Ajout médecins traitants dans ACTIVITE (Ajouter dans BASE) + INSERT INTO activite[PX].t_medecins_traitants_administratifs(code_original, code, nom, prenom, specialite_id, no_rpps) + SELECT DISTINCT code_med_traitant, code_med_traitant, nom_med_traitant, prenom_med_traitant, 0, '' + FROM w_OPERA_SEJ + WHERE code_med_traitant NOT IN (SELECT code FROM activite[PX].t_medecins_traitants_administratifs) + AND code_med_traitant <> '' AND code_med_traitant IS NOT NULL; + + -- maj code rpps + UPDATE activite[PX].t_medecins_traitants_administratifs + SET no_rpps = cj_prc.prc_rpps + FROM prod_cegi.cj_prc, prod_cegi.cj_pra + WHERE cj_prc.pra_id = cj_pra.pra_id + AND cj_pra.pra_libc = t_medecins_traitants_administratifs.code + AND (t_medecins_traitants_administratifs.no_rpps IS NULL OR t_medecins_traitants_administratifs.no_rpps = '') + AND cj_prc.prc_rpps IS not NULL AND cj_prc.prc_rpps <>'' ; + + + -- maj id médecin_traitant dans séjours + UPDATE activite[PX].p_sejours + SET medecin_traitant_id = t_medecins_traitants_administratifs.oid + FROM w_OPERA_SEJ, activite[PX].t_medecins_traitants_administratifs + WHERE w_OPERA_SEJ.no_dossier = p_sejours.no_sejour AND + w_OPERA_SEJ.code_med_traitant = t_medecins_traitants_administratifs.code AND + w_OPERA_SEJ.code_med_traitant IS NOT NULL AND w_OPERA_SEJ.code_med_traitant <> '' AND + medecin_traitant_id IS DISTINCT FROM t_medecins_traitants_administratifs.oid; + + ]]> + + + + 0 FROM information_schema.tables WHERE table_name = 'pamlf_sej' AND table_schema='prod_cegi'; + ]]> + + = '20120101' OR + SEJ_DT_SORTIE IS NULL OR + SEJ_DT_SORTIE <= '00010101' + GROUP BY 1,2 + ; + + CREATE INDEX w_FIRST_SEJ_i1 + ON w_FIRST_SEJ + USING btree + (no_dossier); + + -- Ajout médecins traitants dans ACTIVITE (Ajouter dans BASE) + INSERT INTO activite[PX].t_medecins_traitants_administratifs(code_original, code, nom, prenom, specialite_id, no_rpps) + SELECT DISTINCT code_med_traitant, code_med_traitant, nom_med_traitant, prenom_med_traitant, 0, '' + FROM w_FIRST_SEJ + WHERE code_med_traitant NOT IN (SELECT code FROM activite[PX].t_medecins_traitants_administratifs) + AND code_med_traitant <> '' AND code_med_traitant IS NOT NULL + ; + + + -- maj id médecin_traitant dans séjours + UPDATE activite[PX].p_sejours + SET medecin_traitant_id = t_medecins_traitants_administratifs.oid + FROM w_FIRST_SEJ, activite[PX].t_medecins_traitants_administratifs + WHERE w_FIRST_SEJ.no_dossier = p_sejours.no_sejour AND + w_FIRST_SEJ.code_med_traitant = t_medecins_traitants_administratifs.code AND + w_FIRST_SEJ.code_med_traitant IS NOT NULL AND w_FIRST_SEJ.code_med_traitant <> '' AND + medecin_traitant_id IS DISTINCT FROM t_medecins_traitants_administratifs.oid + ; + + -- maj code rpps + UPDATE activite[PX].t_medecins_traitants_administratifs + SET no_rpps = cj_prc.prc_rpps + FROM prod_cegi.cj_prc, prod_cegi.cj_pra + WHERE cj_prc.pra_id = cj_pra.pra_id + AND cj_pra.pra_libc = t_medecins_traitants_administratifs.code + AND (t_medecins_traitants_administratifs.no_rpps IS NULL OR t_medecins_traitants_administratifs.no_rpps = '') + AND cj_prc.prc_rpps IS not NULL AND cj_prc.prc_rpps <>'' ; + + + + -- D après table CJ_PATPRA + DROP TABLE IF EXISTS w_CJ_PATPRA; + CREATE TEMP TABLE w_CJ_PATPRA AS + SELECT PAT_ID, + CJ_PATPRA.PRA_ID, + date(PATPRA_DT_DEB) AS PATPRA_DT_DEB, + '20991231'::date AS PATPRA_DT_FIN, + CJ_PRA.PRA_LIBC, + CJ_PRA.PER_NOM, + CJ_PRA.PER_PRENOM, + row_number() OVER (PARTITION BY PAT_ID ORDER BY PATPRA_DT_DEB, PATPRA_ID) AS seq + FROM prod_cegi.CJ_PATPRA + JOIN prod_cegi.CJ_PRA ON CJ_PATPRA.PRA_ID = CJ_PRA.PRA_ID + WHERE PATPRA_TRAIT = 1 AND + CJ_PATPRA.PRA_ID <> 0 AND + CJ_PATPRA.PAT_ID <> 0 + ; + + UPDATE w_CJ_PATPRA + SET PATPRA_DT_DEB = '00010101' + WHERE seq = 1 + ; + + ANALYSE w_CJ_PATPRA + ; + + UPDATE w_CJ_PATPRA + SET PATPRA_DT_FIN = date(w_CJ_PATPRA2.PATPRA_DT_DEB - interval '1 day') + FROM w_CJ_PATPRA w_CJ_PATPRA2 + WHERE w_CJ_PATPRA.PAT_ID = w_CJ_PATPRA2.PAT_ID AND + w_CJ_PATPRA.seq = w_CJ_PATPRA2.seq-1 + ; + + + DROP TABLE IF EXISTS w_CJ_PATPRA_sej; + CREATE TEMP TABLE w_CJ_PATPRA_sej AS + SELECT + SEJ_NUMDOS as no_dossier, + PRA_LIBC as code_med_traitant, + PER_NOM as nom_med_traitant, + PER_PRENOM as prenom_med_traitant , + PRA_ID + FROM w_CJ_PATPRA + JOIN prod_cegi.CJ_SEJOUR ON CJ_SEJOUR.PAT_ID = w_CJ_PATPRA.PAT_ID AND + date(SEJ_DT_ENTREE) BETWEEN PATPRA_DT_DEB AND PATPRA_DT_FIN + WHERE PRA_LIBC <> '' AND + PRA_LIBC IS NOT NULL + ; + + CREATE INDEX w_CJ_PATPRA_sej_i1 + ON w_CJ_PATPRA_sej + USING btree + (no_dossier); + + ANALYSE w_CJ_PATPRA_sej + ; + + -- Ajout médecins traitants dans ACTIVITE (Ajouter dans BASE) + INSERT INTO activite[PX].t_medecins_traitants_administratifs(code_original, code, nom, prenom, specialite_id, no_rpps) + SELECT code_med_traitant, code_med_traitant, MAX(nom_med_traitant), MAX(prenom_med_traitant), 0, '' + FROM w_CJ_PATPRA_sej + WHERE code_med_traitant NOT IN (SELECT code FROM activite[PX].t_medecins_traitants_administratifs) + GROUP BY 1 + ORDER BY 1; + + UPDATE activite[PX].t_medecins_traitants_administratifs SET + nom = w_CJ_PATPRA_sej.nom_med_traitant, + prenom = w_CJ_PATPRA_sej.prenom_med_traitant + FROM w_CJ_PATPRA_sej + WHERE code_med_traitant = t_medecins_traitants_administratifs.code + AND (nom IS DISTINCT FROM w_CJ_PATPRA_sej.nom_med_traitant OR prenom IS DISTINCT FROM w_CJ_PATPRA_sej.prenom_med_traitant); + + ANALYSE activite[PX].t_medecins_traitants_administratifs + ; + + -- maj code rpps + UPDATE activite[PX].t_medecins_traitants_administratifs + SET no_rpps = CJ_PRC.PRC_RPPS + FROM prod_cegi.CJ_PRC + JOIN prod_cegi.CJ_PRA ON CJ_PRC.PRA_ID = CJ_PRA.PRA_ID + WHERE CJ_PRA.PRA_LIBC = t_medecins_traitants_administratifs.code AND + (t_medecins_traitants_administratifs.no_rpps IS NULL OR t_medecins_traitants_administratifs.no_rpps = '') AND + CJ_PRC.PRC_RPPS IS NOT NULL AND + CJ_PRC.PRC_RPPS <> '' + ; + + + -- maj id médecin_traitant dans séjours + UPDATE activite[PX].p_sejours + SET medecin_traitant_id = t_medecins_traitants_administratifs.oid + FROM w_cj_patpra_sej, activite[PX].t_medecins_traitants_administratifs + WHERE w_cj_patpra_sej.no_dossier = p_sejours.no_sejour AND + medecin_traitant_id = 0 AND + w_cj_patpra_sej.code_med_traitant = t_medecins_traitants_administratifs.code AND + w_cj_patpra_sej.code_med_traitant IS NOT NULL AND w_cj_patpra_sej.code_med_traitant <> '' + ; + + + ]]> + + + + 'PJ' THEN t_prestations.code ELSE 'PJS' END AS prestation_mcode + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].t_lieux ON lieu_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_services_facturation.oid = service_facturation_id + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE date_fin >= '20170701' AND + date_debut >= '20170701' AND + type_t2a = '2' AND + prestation_id = ANY (SELECT to_id FROM activite.t_listes_contenu JOIN activite.t_listes ON liste_id = t_listes.oid AND t_listes.code = 'DMAP_MFS') AND + montant_comptabilise <> 0 AND + montant_comptabilise_1 <> 0 AND + round(prix_unitaire * nb_prestation,2) <> montant_comptabilise AND + abs(round(prix_unitaire * nb_prestation,2)) <> abs(montant_comptabilise)+(nb_prestation*18) + ORDER BY no_facture, prestation_id + ; + + -- Calcul tarif plein + UPDATE w_moins10 SET + montant_facture_1 = + CASE WHEN prestation_code = 'PJ' OR type_valorisation_non_facture = 'PJ' THEN round(prix_unitaire * nb_prestation * taux_1 / 100,2) - montant_fj + ELSE round(prix_unitaire * nb_prestation * taux_1 / 100,2) END, + montant_facture = + CASE WHEN prestation_code = 'PJ' OR type_valorisation_non_facture = 'PJ' THEN round(prix_unitaire * nb_prestation * taux_1 / 100,2) - montant_fj + ELSE round(prix_unitaire * nb_prestation * taux_1 / 100,2) END + + (montant_facture_2+montant_facture_22+montant_facture_0) + ; + + + -- Génération prestations spécifiques + INSERT INTO activite.t_prestations (code, texte, texte_court) + SELECT prestation_mcode, t_prestations.texte || ' (-10%)', t_prestations.texte || ' (-10%)' + FROM w_moins10 + JOIN activite.t_prestations on prestation_id = t_prestations.oid + WHERE prestation_mcode NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + GROUP BY 1,2,3 + ; + + -- Maj tarif plein + UPDATE activite[PX].p_factures_lignes_c + SET montant_facture = w_moins10.montant_facture, montant_facture_1 = w_moins10.montant_facture_1 + FROM w_moins10 + WHERE p_factures_lignes_c.CTID = w_moins10.CTID_orig; + ; + + -- Génération -10% + UPDATE w_moins10 SET + montant_facture = montant_comptabilise - montant_facture, + montant_facture_1 = montant_comptabilise_1 - montant_facture_1, + montant_facture_2 = montant_comptabilise_2 - montant_facture_2, + montant_facture_22 = montant_comptabilise_22 - montant_facture_22, + montant_facture_0 = montant_comptabilise_0 - montant_facture_0, + montant_comptabilise = 0, + montant_comptabilise_1 = 0, + montant_comptabilise_2 = 0, + montant_comptabilise_22 = 0, + montant_comptabilise_0 = 0, + prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE t_prestations.code = prestation_mcode + ; + + ALTER TABLE w_moins10 DROP COLUMN CTID_orig; + ALTER TABLE w_moins10 DROP COLUMN montant_fj; + ALTER TABLE w_moins10 DROP COLUMN prestation_code; + ALTER TABLE w_moins10 DROP COLUMN prestation_mcode; + ALTER TABLE w_moins10 DROP COLUMN type_valorisation_non_facture; + + INSERT INTO activite[PX].p_factures_lignes_c + SELECT * + FROM w_moins10 + WHERE montant_facture <> 0 + ; + + + SELECT activite[PX].cti_reorganize_rubrique_facture_c('activite[PX].p_factures_lignes_c') + ; + + + -- Prestation des lignes non facturées selon usage en facturation + + UPDATE activite[PX].p_factures_lignes_non_facturees_c + SET prestation_id = subview.prestation_id + FROM ( + SELECT rubrique_facturation_id, + (MAX(Array[nb, prestation_id]))[2] AS prestation_id + FROM ( + SELECT + rubrique_facturation_id, + prestation_id, + count(*) AS nb + FROM activite[PX].p_factures_lignes_c + WHERE montant_facture <> 0 + GROUP BY 1,2 + ORDER BY 1 + ) subview + GROUP BY 1 + ) subview + WHERE p_factures_lignes_non_facturees_c.rubrique_facturation_id = subview.rubrique_facturation_id AND + p_factures_lignes_non_facturees_c.prestation_id IS DISTINCT FROM subview.prestation_id; + + -- Comptes LOGHOS abrégés + DROP TABLE IF EXISTS w_compte_translation; + CREATE TEMP TABLE w_compte_translation AS + SELECT t_compte_loghos.oid AS from_id, t_compte.oid AS to_id + FROM activite[PX].t_compte + JOIN activite[PX].t_compte t_compte_loghos ON rpad(t_compte_loghos.code,8,'0') = t_compte.code and + t_compte_loghos.code <> t_compte.code AND + t_compte_loghos.oid <> t_compte.oid AND + ( + t_compte_loghos.code = t_compte_loghos.texte OR + t_compte_loghos.texte = t_compte.texte + ); + + UPDATE activite[PX].p_factures_lignes_c + SET compte_produit_id = to_id + FROM w_compte_translation + WHERE compte_produit_id = from_id; + + UPDATE activite[PX].p_factures_encours_lignes_c + SET compte_produit_id = to_id + FROM w_compte_translation + WHERE compte_produit_id = from_id; + + + -- factures de reference + + DROP TABLE IF EXISTS w_sejours_facture_reference; + + CREATE TEMP TABLE w_sejours_facture_reference AS + SELECT + no_sejour, + MAX(p_factures.no_facture) AS no_facture_last, + MAX(CASE WHEN type_facture <> '1' AND type_facture <> 'X' THEN p_factures.no_facture ELSE null END) AS no_facture_reference_last, + MAX(CASE WHEN type_facture <> '1' AND type_facture <> 'X' AND t_prestations.code = 'GHS' THEN p_factures.no_facture ELSE null END) AS no_facture_reference_ghs_last + FROM activite[PX].p_factures + LEFT JOIN activite[PX].p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + LEFT JOIN activite.t_prestations ON p_factures_lignes_c.prestation_id = t_prestations.oid AND t_prestations.code = 'GHS' + GROUP BY no_sejour; + + + CREATE INDEX w_sejours_facture_reference_i1 + ON w_sejours_facture_reference + USING btree + (no_sejour); + + + UPDATE activite[PX].p_factures + SET no_facture_reference = COALESCE(no_facture_reference_ghs_last, no_facture_reference_last, no_facture_last) + FROM w_sejours_facture_reference + WHERE p_factures.no_sejour = w_sejours_facture_reference.no_sejour AND + p_factures.no_facture_reference <> COALESCE(no_facture_reference_ghs_last, no_facture_reference_last, no_facture_last); + + UPDATE activite[PX].p_factures + SET facture_reference_id = p_factures_references.oid + FROM activite[PX].p_factures p_factures_references + WHERE p_factures.no_facture_reference = p_factures_references.no_facture + AND p_factures.facture_reference_id <> p_factures_references.oid; + + UPDATE activite[PX].p_factures SET date_expedition_0 = date_facture WHERE date_expedition_0 < date_facture AND date_facture <> '2099-12-31'; + + -- Incohérence total réglé facture et soldes clients (déphasage XECE, XECF) + UPDATE activite[PX].p_factures SET + montant_regle_1_c = subview.montant_regle_1, + montant_regle_2_c = subview.montant_regle_2, + montant_regle_0_c = subview.montant_regle_0 + FROM + ( + SELECT p_factures.no_facture, + SUM(p_factures_soldes_c.montant_regle_1) AS montant_regle_1, + SUM(p_factures_soldes_c.montant_regle_2) AS montant_regle_2, + SUM(p_factures_soldes_c.montant_regle_0) AS montant_regle_0, + MAX(montant_regle_1_c) AS montant_regle_1_c, + MAX(montant_regle_2_c) AS montant_regle_2_c, + MAX(montant_regle_0_c) AS montant_regle_0_c + FROM activite[PX].p_factures + JOIN activite[PX].p_factures_soldes_c ON p_factures.no_facture = p_factures_soldes_c.no_facture + GROUP BY 1 + HAVING + SUM(p_factures_soldes_c.montant_regle_1) <> MAX(montant_regle_1_c) OR + SUM(p_factures_soldes_c.montant_regle_2) <> MAX(montant_regle_2_c) OR + SUM(p_factures_soldes_c.montant_regle_0) <> MAX(montant_regle_0_c) + ) subview + WHERE p_factures.no_facture = subview.no_facture + ; + + + ]]> + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour + + FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY p_sejours.no_sejour; + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = CASE WHEN w_sejours_total.date_expedition_0 <> '0001-01-01' THEN w_sejours_total.date_expedition_0 ELSE '2099-12-31' END, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = CASE WHEN w_sejours_total.date_expedition_1 <> '0001-01-01' THEN w_sejours_total.date_expedition_1 ELSE '2099-12-31' END, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = CASE WHEN w_sejours_total.date_expedition_2 <> '0001-01-01' THEN w_sejours_total.date_expedition_2 ELSE '2099-12-31' END, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = CASE WHEN w_sejours_total.date_expedition_22 <> '0001-01-01' THEN w_sejours_total.date_expedition_22 ELSE '2099-12-31' END, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_0 <> '0001-01-01' THEN w_sejours_total.date_expedition_0 ELSE '2099-12-31' END OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_1 <> '0001-01-01' THEN w_sejours_total.date_expedition_1 ELSE '2099-12-31' END OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_2 <> '0001-01-01' THEN w_sejours_total.date_expedition_2 ELSE '2099-12-31' END OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_22 <> '0001-01-01' THEN w_sejours_total.date_expedition_22 ELSE '2099-12-31' END OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour + + ); + + UPDATE activite[PX].p_sejours set + ghm_id = t_ghs.ghm_id::bigint + FROM base.t_ghs + WHERE + p_sejours.ghs_id = t_ghs.oid + AND p_sejours.ghm_id = 0 + AND p_sejours.ghs_id > 0; + + UPDATE activite[PX].p_sejours SET + + delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END, + delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END, + delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END, + delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END, + + delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END, + delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END, + + delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END, + delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END, + + delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END, + delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END, + + delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END, + delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END + + WHERE + + delai_groupage IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END + OR + delai_facture IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END + OR + delai_expedition IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END + OR + delai_solde IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END + OR + + delai_expedition_0 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END + OR + delai_solde_0 IS DISTINCT FROM CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END + OR + + delai_expedition_1 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END + OR + delai_solde_1 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END + OR + + delai_expedition_2 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END + OR + delai_solde_2 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END + OR + + delai_expedition_22 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END + OR + delai_solde_22 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END; + + + ]]> + + + + + + + + + + + + + + + + + = '1' + GROUP BY 1,2; + + CREATE INDEX w_factures_references_i1 ON w_factures_references USING btree (no_sejour); + + + DROP TABLE IF EXISTS w_EFS_DT_FAC; + CREATE TEMP TABLE w_EFS_DT_FAC AS + SELECT date(date_trunc('month', EFS_DT_FAC) + interval '1 month' - interval '1 day') AS date_encours, MAX(date(EFS_DT_FAC)) AS EFS_DT_FAC + FROM prod_cegi.CJ_ENC_EFS + WHERE date(EFS_DT_FAC) >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1 + ORDER BY 1; + + CREATE INDEX w_EFS_DT_FAC_i1 ON w_EFS_DT_FAC USING btree (date_encours); + + DROP TABLE IF EXISTS w_factures_encours; + CREATE TEMP TABLE w_factures_encours AS + SELECT + 0 AS oid, + CJ_ENC_EFS.EFS_ID, + p_sejours.finess, + p_sejours.no_sejour, + p_sejours.date_entree, + p_sejours.date_sortie, + p_sejours.oid AS sejour_id, + p_sejours.lieu_sortie_id, + COALESCE(w_factures_references.no_facture,'ID' || CJ_ENC_EFS.EFS_ID) || '.EP' || substr(to_char(date_part('year', CJ_ENC_EFS.EFS_DT_FAC),'FM0000'),3,2) || to_char(date_part('month', CJ_ENC_EFS.EFS_DT_FAC),'FM00') AS no_facture, + w_factures_references.no_facture AS no_facture_reference, + date(EFS_DT_DEB) AS date_debut, + date(EFS_DT_FIN) AS date_fin, + date_encours, + 'P'::text AS code_origine, + CASE WHEN date(EFS_DT_FIN) > date_encours OR p_sejours.date_sortie > date_encours THEN '0' ELSE '1' END AS code_sorti, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.tiers_payant_0_id, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id, + p_sejours.code_cp_demandee, + SUM(CASE WHEN EFT_TER_TYPE = 'DBT' AND EFT_SEJHON IN (0) THEN EFT_TTC ELSE 0 END) + + SUM(CASE WHEN EFT_TER_TYPE = 'CAI' AND EFT_SEJHON IN (0) THEN EFT_TTC ELSE 0 END) + + SUM(CASE WHEN EFT_TER_TYPE = 'MUT' AND EFT_SEJHON IN (0) THEN EFT_TTC ELSE 0 END) AS montant_encours_c, + SUM(CASE WHEN EFT_TER_TYPE = 'DBT' AND EFT_SEJHON IN (0) THEN EFT_TTC ELSE 0 END) AS montant_encours_0_c, + SUM(CASE WHEN EFT_TER_TYPE = 'CAI' AND EFT_SEJHON IN (0) THEN EFT_TTC ELSE 0 END) AS montant_encours_1_c, + SUM(CASE WHEN EFT_TER_TYPE = 'MUT' AND EFT_SEJHON IN (0) THEN EFT_TTC ELSE 0 END) AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h + FROM prod_cegi.CJ_ENC_EFS + JOIN prod_cegi.CJ_SEJOUR w_CJ_SEJOUR_select ON CJ_ENC_EFS.SEJ_ID = w_CJ_SEJOUR_select.SEJ_ID + JOIN prod_cegi.CJ_ENC_EFT ON CJ_ENC_EFS.EFS_ID = CJ_ENC_EFT.EFS_ID + JOIN w_EFS_DT_FAC ON date(CJ_ENC_EFS.EFS_DT_FAC) = w_EFS_DT_FAC.EFS_DT_FAC AND + date(date_trunc('month',CJ_ENC_EFS.EFS_DT_FAC) + interval '1 month' - interval '1 day') = date_encours + JOIN activite[PX].p_sejours ON code_original = w_CJ_SEJOUR_select.SEJ_NUMDOS + LEFT JOIN w_factures_references ON p_sejours.no_sejour = w_factures_references.no_sejour AND + date(EFS_DT_FIN) BETWEEN w_factures_references.date_debut AND w_factures_references.date_fin + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 + ; + + CREATE INDEX w_factures_encours_i1 ON w_factures_encours USING btree (EFS_ID); + + + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_2'); + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_4'); + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_5'); + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_6'); + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_7'); + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_8'); + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_9'); + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_10'); + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_11'); + + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_lignes_c_2'); + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_lignes_c_3'); + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_lignes_c_4'); + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_lignes_c_5'); + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_lignes_c_6'); + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_lignes_c_7'); + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_lignes_c_8'); + + DELETE FROM activite[PX].p_factures_encours WHERE code_origine = 'P'; + DELETE FROM activite[PX].p_factures_encours_lignes_c + WHERE no_facture NOT IN (SELECT no_facture FROM activite[PX].p_factures_encours); + + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_1'); + SELECT base.cti_disable_index('activite[PX].', 'i_factures_encours_lignes_c_1'); + + INSERT INTO activite[PX].p_factures_encours( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + date_encours, + code_origine, + code_sorti, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h + ) + SELECT + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + date_encours, + code_origine, + code_sorti, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h + FROM w_factures_encours; + + UPDATE w_factures_encours SET oid = p_factures_encours.oid + FROM activite[PX].p_factures_encours + WHERE w_factures_encours.no_facture = p_factures_encours.no_facture; + + SELECT base.cti_enable_index('activite[PX].', 'i_factures_encours_1'); + + DROP SEQUENCE IF EXISTS w_factures_encours_lignes_c_sequence; + CREATE TEMP SEQUENCE w_factures_encours_lignes_c_sequence; + + DROP TABLE IF EXISTS w_factures_encours_lignes_c; + CREATE TEMP TABLE w_factures_encours_lignes_c AS + SELECT + nextval('w_factures_encours_lignes_c_sequence'::regclass) AS oid, + w_factures_encours.no_sejour, + CJ_ENC_LCS.LCS_ID, + w_factures_encours.oid AS facture_id, + w_factures_encours.no_facture, + w_factures_encours.date_entree, + w_factures_encours.date_sortie, + date(MAX(LCS_DT_DEB)) AS date_debut, + date(MAX(LCS_DT_FIN)) AS date_fin, + MAX(LCS_QTE*LCS_COEFF) AS nb_rubrique, + 1::numeric AS coefficient, + MAX(CASE WHEN LCS_MCO <> 0 THEN LCS_MCO ELSE 1 END) AS coefficient_mco, + COALESCE(t_rubriques_facturation.oid, 0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid, 0) AS rubrique_comptabilisation_id, + MAX(COALESCE(t_compte.oid::bigint, 0)) AS compte_produit_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + + 0::numeric AS taux_22, + MAX(LCS_PRIX) AS prix_unitaire, + w_factures_encours.lieu_sortie_id AS lieu_id, + MAX(LCS_QTE*LCS_COEFF) AS nb_prestation, + + LEAST(MAX(CASE WHEN LCT_TER_TYPE = 'DBT' AND LCS_SEJHON IN (0,2) THEN LCT_TX ELSE 0 END),100) AS taux_0, + LEAST(MAX(CASE WHEN LCT_TER_TYPE = 'CAI' AND LCS_SEJHON IN (0,2) THEN LCT_TX ELSE 0 END),100) AS taux_1, + LEAST(MAX(CASE WHEN LCT_TER_TYPE = 'MUT' AND LCS_SEJHON IN (0,2) THEN LCT_TX ELSE 0 END),100) AS taux_2, + MAX(CASE WHEN LCS_SEJHON = 0 THEN LCS_TTC ELSE 0 END) AS montant_encours, + SUM(CASE WHEN LCT_TER_TYPE = 'DBT' AND LCS_SEJHON IN (0) THEN LCT_TTC ELSE 0 END) AS montant_encours_0, + SUM(CASE WHEN LCT_TER_TYPE = 'CAI' AND LCS_SEJHON IN (0) THEN LCT_TTC ELSE 0 END) AS montant_encours_1, + SUM(CASE WHEN LCT_TER_TYPE = 'MUT' AND LCS_SEJHON IN (0) THEN LCT_TTC ELSE 0 END) AS montant_encours_2, + 0::numeric AS montant_encours_22 + FROM prod_cegi.CJ_ENC_LCS + JOIN w_factures_encours ON CJ_ENC_LCS.EFS_ID = w_factures_encours.EFS_ID + JOIN prod_cegi.CJ_ENC_LCT ON CJ_ENC_LCS.LCS_ID = CJ_ENC_LCT.LCS_ID + JOIN w_RUBRIQUES ON CJ_ENC_LCS.PST_ID = w_RUBRIQUES.PST_ID + LEFT JOIN activite[PX].t_rubriques_facturation ON PST_LIBC = t_rubriques_facturation.code_original + LEFT JOIN activite.t_prestations ON LCS_CODE = t_prestations.code + LEFT JOIN activite[PX].t_compte ON LCT_PST_CPT = t_compte.code_original AND LCT_PST_CPT <> '' + JOIN activite[PX].p_factures_encours ON w_factures_encours.oid = p_factures_encours.oid + WHERE LCS_SEJHON IN (0,2) + GROUP BY 1,2,3,4,5,6,7,13,14,16,19; + + + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c; + CREATE TEMP TABLE w_factures_encours_lignes_sup_c AS + SELECT + w_factures_encours_lignes_c.oid AS from_oid, + t_prestations.code AS prestation_code, + date(date_debut) AS date_debut_ghs, + date(date_fin - interval '1 day') AS date_fin_ghs, + (date(date_fin) - date(date_debut)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN t_prestations.code = 'GHS' THEN date(w_factures_encours_lignes_c.date_entree + interval '1 day') ELSE date(w_factures_encours_lignes_c.date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN t_prestations.code = 'GHS' THEN date(w_factures_encours_lignes_c.date_sortie - interval '1 day') ELSE date(w_factures_encours_lignes_c.date_debut + ((ABS(nb_prestation)-1) || ' day')::interval) END AS date_fin_det, + ABS(CASE WHEN t_prestations.code = 'GHS' THEN date(w_factures_encours_lignes_c.date_sortie) - date(w_factures_encours_lignes_c.date_entree) ELSE nb_prestation END) AS nb_det, + w_factures_encours_lignes_c.* + FROM w_factures_encours_lignes_c + JOIN activite[PX].p_sejours ON w_factures_encours_lignes_c.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + ( + code IN ('PJ', 'PJ1', 'PJ2', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (t_prestations.code = 'GHS' AND date(date_fin) - date(date_debut) > 1)) ; + + + UPDATE w_factures_encours_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM w_factures_encours_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_encours_lignes_sup_c.no_facture = subview.no_facture; + + CREATE INDEX w_factures_encours_lignes_sup_c_i1 + ON w_factures_encours_lignes_sup_c + USING btree + (date_debut); + + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c_gen; + CREATE TEMP TABLE w_factures_encours_lignes_sup_c_gen AS + SELECT + from_oid, + ''::text AS finess, + no_sejour, + no_facture, + facture_id, + date AS date_debut, + date AS date_fin, + lieu_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + prix_unitaire, + oid, + taux_0, + taux_1, + taux_2, + taux_22, + round((montant_encours / ABS(nb_det))::numeric,2) AS montant_encours, + round((montant_encours_0 / ABS(nb_det))::numeric,2) AS montant_encours_0, + round((montant_encours_1 / ABS(nb_det))::numeric,2) AS montant_encours_1, + round((montant_encours_2 / ABS(nb_det))::numeric,2) AS montant_encours_2, + round((montant_encours_22 / ABS(nb_det))::numeric,2) AS montant_encours_22 + FROM w_factures_encours_lignes_sup_c + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_det AND date_fin_det ; + + + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c_gen_tot; + CREATE TEMP TABLE w_factures_encours_lignes_sup_c_gen_tot AS + SELECT from_oid, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22 + FROM w_factures_encours_lignes_sup_c_gen + GROUP BY 1; + + + UPDATE w_factures_encours_lignes_c + SET + date_fin = w_factures_encours_lignes_c.date_debut, + nb_rubrique = w_factures_encours_lignes_c.nb_rubrique - w_factures_encours_lignes_sup_c_gen_tot.nb_rubrique, + nb_prestation = w_factures_encours_lignes_c.nb_prestation - w_factures_encours_lignes_sup_c_gen_tot.nb_prestation, + montant_encours = w_factures_encours_lignes_c.montant_encours - w_factures_encours_lignes_sup_c_gen_tot.montant_encours, + montant_encours_0 = w_factures_encours_lignes_c.montant_encours_0 - w_factures_encours_lignes_sup_c_gen_tot.montant_encours_0, + montant_encours_1 = w_factures_encours_lignes_c.montant_encours_1 - w_factures_encours_lignes_sup_c_gen_tot.montant_encours_1, + montant_encours_2 = w_factures_encours_lignes_c.montant_encours_2 - w_factures_encours_lignes_sup_c_gen_tot.montant_encours_2, + montant_encours_22 = w_factures_encours_lignes_c.montant_encours_22 - w_factures_encours_lignes_sup_c_gen_tot.montant_encours_22 + FROM w_factures_encours_lignes_sup_c_gen_tot + WHERE w_factures_encours_lignes_c.oid = from_oid; + + + INSERT INTO w_factures_encours_lignes_c( + oid, + no_sejour, + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22) + SELECT + nextval('w_factures_encours_lignes_c_sequence'::regclass) AS oid, + no_sejour, + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + FROM w_factures_encours_lignes_sup_c_gen; + + + + UPDATE w_factures_encours_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE w_factures_encours_lignes_c.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_encours_lignes_c.date_debut = p_mouvements_sejour.date AND + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_sorties_directes = 1) AND + w_factures_encours_lignes_c.lieu_id IS DISTINCT FROM p_mouvements_sejour.lieu_id; + + + + INSERT INTO activite[PX].p_factures_encours_lignes_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + FROM w_factures_encours_lignes_c; + + SELECT base.cti_vacuum_table('activite[PX]','p_factures_encours'); + SELECT base.cti_vacuum_table('activite[PX]','p_factures_encours_lignes_c'); + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_8'); + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_11'); + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_factures_references CASCADE; + DROP TABLE IF EXISTS w_factures_encours CASCADE; + DROP TABLE IF EXISTS w_factures_encours_lignes_c CASCADE; + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c CASCADE; + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c_gen CASCADE; + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c_gen_tot CASCADE; + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/import_activite/iCTI_import_activite_CERNER.XML b/import_activite/iCTI_import_activite_CERNER.XML new file mode 100644 index 0000000..e44b7eb --- /dev/null +++ b/import_activite/iCTI_import_activite_CERNER.XML @@ -0,0 +1,6895 @@ + + + + + + + + SEA_UFCODE_REA OR + SEA_HEURE_FIN <> ACTE_HEURE_FIN + ) + ; + + ANALYSE w_PASSAGE; + + + DROP TABLE IF EXISTS w_HOSPITALISATION_SELECT; + + CREATE TEMP TABLE w_HOSPITALISATION_SELECT AS + SELECT HO_NUM, + HO_MANUMDOS, + MA_SEXE, + ''::text AS HO_VNCODE, + + HO_RECODE, + + date(COALESCE(SEA_DATE,HO_DDEB)) AS HO_DDEB, + date(COALESCE(SEA_DATE,HO_DFIN)) AS HO_DFIN, + RE_TYPE, + + CASE + WHEN RE_TYPE IN ('H') AND HO_DDEB >= '[ENV_ADM_ANNEEDEBUT]0101' THEN '1' + WHEN RE_TYPE IN ('H') AND HO_DFIN >= '[ENV_ADM_ANNEEDEBUT]0101' THEN '1' + WHEN RE_TYPE IN ('H') AND HO_DFIN IS NULL THEN '1' + WHEN RE_TYPE NOT IN ('H') AND SEA_DATE >= '[ENV_ADM_ANNEEDEBUT]0101' THEN '1' + ELSE '0' END AS HO_OK, + + + COALESCE(trim(SEA_SEANCE),'') AS HO_SEANCE, + date(CASE WHEN RE_TYPE IN ('H') THEN HO_DDEB ELSE COALESCE(SEA_DATE,HO_DDEB) END) AS HO_DDEBS, + (SEA_HEURE - date(SEA_HEURE))::time without time zone AS HO_HDEBS, + date(CASE WHEN RE_TYPE IN ('H') THEN HO_DFIN ELSE COALESCE(SEA_DATE,HO_DFIN) END) AS HO_DFINS, + (SEA_HEURE - date(SEA_HEURE))::time without time zone AS HO_HFINS, + + HO_NUM::text AS HO_NUMSEJ, + '1'::text AS sejour_a_creer, + + HO_PREENT, + + '8'::text AS mode_entree, + ''::text AS provenance, + '0'::text AS urgence, + '8'::text AS mode_sortie, + ''::text AS destination, + + COALESCE(SEA_INCODE,'') AS HO_INCODE, + COALESCE(SEA_UFCODE_REA,'') AS HO_UFCODE_REA, + COALESCE(SEA_UFCODE,'') AS HO_UFCODE, + COALESCE(SEA_UMCODE,'') AS HO_UMCODE, + ''::text AS HO_UFHEBER, + ''::text AS HO_SACODE, + ''::text AS HO_LICODE, + ''::text AS HO_ETCODE_CTI, + ''::text AS HO_LICODE_CTI, + ''::text AS HO_ELCODE_CTI, + + ''::text AS mode_traitement_code, + ''::text AS dmt_code, + + 0::bigint AS mode_traitement_id, + 0::bigint AS tiers_payant_1_id, + w_DEFAULT.tiers_payant_2_id, + 0::bigint AS tiers_payant_22_id, + w_DEFAULT.tiers_payant_0_id, + 0::bigint AS code_postal_id, + 0::bigint AS medecin_sejour_id, + 0::bigint AS lieu_sortie_id, + CASE WHEN HO_VALID IS DISTINCT FROM 'X' AND HO_VALID IS DISTINCT FROM 'U' THEN '0' ELSE '9' END::text AS type_sejour_force, + + 0::bigint AS sejour_id, + '0'::text AS sans_sejour + FROM prod_cerner.HOSPITALISATION + JOIN prod_cerner.MALADE ON HO_MANUMDOS = MA_NUMDOS + JOIN prod_cerner.REGROUPEMENT ON HO_RECODE = RE_CODE + LEFT JOIN w_PASSAGE ON SEA_HONUM = HO_NUM AND RE_TYPE NOT IN ('H') + JOIN w_DEFAULT ON 1=1 + WHERE (RE_TYPE IN ('H') OR SEA_HONUM IS NOT NULL) AND + COALESCE(HO_PREENT,'') = '' + ; + + UPDATE w_HOSPITALISATION_SELECT SET + HO_DFIN = HO_DDEB, + HO_DFINS = HO_DDEBS, + HO_HFINS = HO_HDEBS + WHERE RE_TYPE NOT IN ('H') AND HO_DFIN IS NULL; + + CREATE INDEX w_HOSPITALISATION_SELECT_i1 + ON w_HOSPITALISATION_SELECT + USING btree + (HO_NUM); + + CREATE INDEX w_HOSPITALISATION_SELECT_i2 + ON w_HOSPITALISATION_SELECT + USING btree + (HO_MANUMDOS); + + CREATE INDEX w_HOSPITALISATION_SELECT_i_HO_NUMSEJ + ON w_HOSPITALISATION_SELECT + USING btree + (HO_NUMSEJ); + + + UPDATE w_HOSPITALISATION_SELECT + SET HO_OK = '0' + WHERE HO_OK = '1' AND + HO_DDEB > (SELECT now_cerner FROM w_PERIODE) + ; + + UPDATE w_HOSPITALISATION_SELECT + SET HO_OK = '0' + WHERE HO_OK = '1' AND + RE_TYPE = 'H' AND + HO_NUM NOT IN (SELECT MH_HONUM FROM w_MOUV_HOSPI_source) + ; + + UPDATE w_HOSPITALISATION_SELECT + SET HO_OK = '1' + WHERE HO_OK <> '1' AND + HO_NUM IN (SELECT FAC_HONUM FROM prod_cerner.FACTURE WHERE FAC_DATE >= '[ENV_ADM_ANNEEDEBUT]0101' OR FAC_EXER >= [ENV_ADM_ANNEEDEBUT]) + ; + + UPDATE w_HOSPITALISATION_SELECT + SET HO_OK = '1' + WHERE HO_OK <> '1' AND + HO_NUM IN (SELECT MC_HONUM FROM prod_cerner.MOUV_COMPTA WHERE MC_DATECR >= '[ENV_ADM_ANNEEDEBUT]0101' OR MC_EXER >= [ENV_ADM_ANNEEDEBUT]) + ; + + UPDATE w_HOSPITALISATION_SELECT + SET HO_OK = '1' + WHERE HO_OK <> '1' AND + HO_NUM IN (SELECT HO_NUM FROM w_HOSPITALISATION_SELECT WHERE HO_OK = '1') + ; + + + -- Factures et règlements sans référence de séjour + DROP TABLE IF EXISTS w_FACTURE_sans_sejour; + CREATE TEMP TABLE w_FACTURE_sans_sejour AS + SELECT FAC_NUM, + FAC_HONUM, + FAD_SEANCE AS FAC_SEANCE, + MIN(FAD_DEB) AS FAC_DDEB, + MAX(FAD_FIN) AS FAC_DFIN, + 0::numeric AS FAC_MANUMDOS + FROM prod_cerner.FACTURE_DET + JOIN prod_cerner.FACTURE ON FAD_NUM = FAC_NUM + LEFT JOIN w_HOSPITALISATION_SELECT ON + FAC_HONUM = HO_NUM AND + FAD_SEANCE = HO_SEANCE + WHERE (FAC_DATE >= '[ENV_ADM_ANNEEDEBUT]0101' OR FAC_EXER >= [ENV_ADM_ANNEEDEBUT]) AND + HO_NUM IS NULL + GROUP BY 1,2,3 + ; + + + UPDATE prod_cerner.MOUV_COMPTA + SET MC_HONUM = 999999999 + WHERE MC_HONUM = 0 AND MC_MANUMDOS = 0 AND + (MC_COMPTE LIKE '411%' OR MC_COMPTE LIKE '412%' OR MC_COMPTE LIKE '413%' OR MC_COMPTE LIKE '414%' OR MC_COMPTE LIKE '452%' OR MC_COMPTE LIKE '467%') + ; + + INSERT INTO w_FACTURE_sans_sejour + SELECT MC_NUMFAC_LET AS FAC_NUM, + MC_HONUM AS FAC_HONUM, + ''::text AS FAD_SEANCE, + MIN(MC_DATECR) AS FAC_DDEB, + MAX(MC_DATECR) AS FAC_DFIN, + 0::numeric AS FAC_MANUMDOS + FROM prod_cerner.MOUV_COMPTA + LEFT JOIN w_HOSPITALISATION_SELECT ON MC_HONUM = HO_NUM + WHERE (MC_DATECR >= '[ENV_ADM_ANNEEDEBUT]0101' OR MC_EXER >= [ENV_ADM_ANNEEDEBUT]) AND + (MC_COMPTE LIKE '411%' OR MC_COMPTE LIKE '412%' OR MC_COMPTE LIKE '413%' OR MC_COMPTE LIKE '414%' OR MC_COMPTE LIKE '452%' OR MC_COMPTE LIKE '467%') AND + HO_NUM IS NULL + GROUP BY 1,2 + HAVING SUM(CASE WHEN MC_SENS = 'C' THEN MC_MON ELSE 0-MC_MON END) <> 0 + ; + + + + UPDATE w_FACTURE_sans_sejour + SET FAC_MANUMDOS = MC_MANUMDOS + FROM prod_cerner.MOUV_COMPTA + WHERE MC_NUMV = FAC_NUM AND + MC_HONUM = FAC_HONUM AND + FAC_MANUMDOS = 0 + ; + + INSERT INTO w_HOSPITALISATION_SELECT + SELECT FAC_HONUM, + MAX(FAC_MANUMDOS), + MAX(COALESCE(MA_SEXE,'1')), + ''::text AS HO_VNCODE, + + MIN(COALESCE(HOSPITALISATION.HO_RECODE,''::text)) AS HO_RECODE, + + MIN(date(FAC_DDEB)) AS HO_DDEB, + MAX(date(FAC_DFIN)) AS HO_DFIN, + MAX(COALESCE(REGROUPEMENT.RE_TYPE,''::text)) AS RE_TYPE, + + '1'::text AS HO_OK, + + + FAC_SEANCE AS HO_SEANCE, + MIN(date(FAC_DDEB)) AS HO_DDEBS, + '11:00:00' AS HO_HDEBS, + MAX(date(FAC_DFIN)) AS HO_DFINS, + '11:00:00' AS HO_HFINS, + + MAX(FAC_HONUM) AS HO_NUMSEJ, + '1'::text AS sejour_a_creer, + + ''::text AS HO_PREENT, + + '8'::text AS mode_entree, + ''::text AS provenance, + '0'::text AS urgence, + '8'::text AS mode_sortie, + ''::text AS destination, + + ''::text AS HO_INCODE, + ''::text AS HO_UFCODE_REA, + ''::text AS HO_UFCODE, + ''::text AS HO_UMCODE, + ''::text AS HO_UFHEBER, + ''::text AS HO_SACODE, + ''::text AS HO_LICODE, + ''::text AS HO_ETCODE_CTI, + ''::text AS HO_LICODE_CTI, + ''::text AS HO_ELCODE_CTI, + + ''::text AS mode_traitement_code, + ''::text AS dmt_code, + + 0::bigint AS mode_traitement_id, + 0::bigint AS tiers_payant_1_id, + MAX(w_DEFAULT.tiers_payant_2_id), + 0::bigint AS tiers_payant_22_id, + MAX(w_DEFAULT.tiers_payant_0_id), + 0::bigint AS code_postal_id, + 0::bigint AS medecin_sejour_id, + 0::bigint AS lieu_sortie_id, + MAX(CASE WHEN FAC_SEANCE = '' OR FAC_HONUM IN (SELECT HO_NUM FROM w_HOSPITALISATION_SELECT ) THEN '0' ELSE '9' END) AS type_sejour_force, + + 0::bigint AS sejour_id, + '1'::text AS sans_sejour + FROM w_FACTURE_sans_sejour + LEFT JOIN prod_cerner.MALADE ON FAC_MANUMDOS = MA_NUMDOS + LEFT JOIN prod_cerner.HOSPITALISATION ON FAC_HONUM = HOSPITALISATION.HO_NUM + LEFT JOIN prod_cerner.REGROUPEMENT ON HO_RECODE = RE_CODE + JOIN w_DEFAULT ON 1=1 + GROUP BY + FAC_HONUM, + FAC_SEANCE + ; + + + + -- Supprimer les dossiers à ne pas récupérer + + DELETE FROM w_HOSPITALISATION_SELECT + WHERE HO_OK <> '1' + ; + + + -- Numéro de séjour avec séance si séances multiples + + UPDATE w_HOSPITALISATION_SELECT + SET HO_NUMSEJ = HO_NUMSEJ::text || '.' || to_char(HO_DFINS,'YYMMDD') + WHERE HO_NUMSEJ IN + ( + SELECT HO_NUMSEJ + FROM w_HOSPITALISATION_SELECT + WHERE RE_TYPE NOT IN ('H') + GROUP BY 1 + HAVING count(DISTINCT HO_DFINS) > 1 + ) + ; + + UPDATE w_HOSPITALISATION_SELECT SET + sejour_a_creer = CASE WHEN w_HOSPITALISATION_SELECT.HO_SEANCE = subview.HO_SEANCE THEN '1' ELSE '0' END, + HO_HDEBS = subview.HO_HDEBS, + HO_HFINS = subview.HO_HFINS + FROM + ( + SELECT HO_NUMSEJ, (MIN(Array[sans_sejour,HO_SEANCE::text]))[2] AS HO_SEANCE, + MIN(HO_HDEBS) AS HO_HDEBS, + MAX(HO_HFINS) AS HO_HFINS + FROM w_HOSPITALISATION_SELECT + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE w_HOSPITALISATION_SELECT.HO_NUMSEJ = subview.HO_NUMSEJ + ; + + + ANALYSE w_HOSPITALISATION_SELECT; + + UPDATE w_HOSPITALISATION_SELECT + SET HO_NUMSEJ = w_HOSPITALISATION_SELECT.HO_NUMSEJ || '.' || nb + FROM + ( + SELECT HO_NUMSEJ, count(*) AS nb, MAX(CTID) AS from_CTID + FROM w_HOSPITALISATION_SELECT + WHERE sejour_a_creer = '1' + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE w_HOSPITALISATION_SELECT.HO_NUMSEJ = subview.HO_NUMSEJ AND + w_HOSPITALISATION_SELECT.CTID = from_CTID + ; + + DELETE FROM w_HOSPITALISATION_SELECT WHERE HO_NUMSEJ IS NULL + ; + + + + + ]]> + + + + + + + + + + + + + '00010101'; + + UPDATE w_ADRESSE_tiers + SET AD_HDEB = '00010101' + FROM w_ADRESSE_tiers w_ADRESSE_tiers_b + WHERE w_ADRESSE_tiers.sequence = w_ADRESSE_tiers_b.sequence + 1 AND + ( + w_ADRESSE_tiers.AD_MANUMDOS <> w_ADRESSE_tiers_b.AD_MANUMDOS OR + w_ADRESSE_tiers.AD_PYTYPE_CTI <> w_ADRESSE_tiers_b.AD_PYTYPE_CTI + ) AND + w_ADRESSE_tiers.AD_HDEB <> '00010101' + + ; + + CREATE INDEX w_ADRESSE_tiers_i1 + ON w_ADRESSE_tiers + USING btree + (AD_MANUMDOS); + + CREATE INDEX w_ADRESSE_tiers_i2 + ON w_ADRESSE_tiers + USING btree + (AD_PYCODE_CTI); + + + + UPDATE w_HOSPITALISATION_SELECT + SET tiers_payant_1_id = t_tiers_payant.oid + FROM w_ADRESSE_tiers + JOIN activite[PX].t_tiers_payant ON AD_PYCODE_CTI = t_tiers_payant.code_original + WHERE w_HOSPITALISATION_SELECT.HO_MANUMDOS = w_ADRESSE_tiers.AD_MANUMDOS AND + AD_PYTYPE_CTI = '1' AND + HO_DDEB BETWEEN AD_HDEB AND AD_DFIN + ; + + + UPDATE w_HOSPITALISATION_SELECT + SET tiers_payant_2_id = t_tiers_payant.oid + FROM w_ADRESSE_tiers + JOIN activite[PX].t_tiers_payant ON AD_PYCODE_CTI = t_tiers_payant.code_original + WHERE w_HOSPITALISATION_SELECT.HO_MANUMDOS = w_ADRESSE_tiers.AD_MANUMDOS AND + AD_PYTYPE_CTI = '2' AND + HO_DDEB BETWEEN AD_HDEB AND AD_DFIN + ; + + + + -- Mouvement de sortie + DROP TABLE IF EXISTS w_HOSPITALISATION_MOUV_SORTIE; + CREATE TEMP TABLE w_HOSPITALISATION_MOUV_SORTIE AS + SELECT MH_HONUM, + (MIN(ARRAY[lpad(MH_DER,1,' ')||(MH_DDEB + (MH_HDEB - date(MH_HDEB)))::text, (MH_HDEB - date(MH_HDEB))::text]))[2]::time without time zone AS MH_HDEB, + (MAX(ARRAY[lpad(MH_DER,1,' ')||(MH_DDEB + (MH_HDEB - date(MH_HDEB)))::text, (MH_HFIN - date(MH_HFIN))::text]))[2]::time without time zone AS MH_HFIN, + (MAX(ARRAY[lpad(MH_DER,1,' ')||(MH_DDEB + (MH_HDEB - date(MH_HDEB)))::text, MH_INCODE]))[2] AS MH_INCODE, + (MAX(ARRAY[lpad(MH_DER,1,' ')||(MH_DDEB + (MH_HDEB - date(MH_HDEB)))::text, MH_UFCODE]))[2] AS MH_UFCODE, + (MAX(ARRAY[lpad(MH_DER,1,' ')||(MH_DDEB + (MH_HDEB - date(MH_HDEB)))::text, MH_UMCODE]))[2] AS MH_UMCODE, + (MAX(ARRAY[lpad(MH_DER,1,' ')||(MH_DDEB + (MH_HDEB - date(MH_HDEB)))::text, MH_UFHEBER]))[2] AS MH_UFHEBER, + (MAX(ARRAY[lpad(MH_DER,1,' ')||(MH_DDEB + (MH_HDEB - date(MH_HDEB)))::text, MH_SACODE]))[2] AS MH_SACODE, + (MAX(ARRAY[lpad(MH_DER,1,' ')||(MH_DDEB + (MH_HDEB - date(MH_HDEB)))::text, MH_LICODE]))[2] AS MH_LICODE, + (MIN(ARRAY[lpad(MH_DER,1,' ')||(MH_DDEB + (MH_HDEB - date(MH_HDEB)))::text, MH_RSCODENT]))[2] AS MH_RSCODENT, + (MAX(ARRAY[lpad(MH_DER,1,' ')||(MH_DDEB + (MH_HDEB - date(MH_HDEB)))::text, MH_RSCODSOR]))[2] AS MH_RSCODSOR, + (MAX(ARRAY[lpad(MH_DER,1,' ')||(MH_DDEB + (MH_HDEB - date(MH_HDEB)))::text, MH_ETCODE_CTI]))[2] AS MH_ETCODE_CTI, + (MAX(ARRAY[lpad(MH_DER,1,' ')||(MH_DDEB + (MH_HDEB - date(MH_HDEB)))::text, MH_LICODE_CTI]))[2] AS MH_LICODE_CTI, + (MAX(ARRAY[lpad(MH_DER,1,' ')||(MH_DDEB + (MH_HDEB - date(MH_HDEB)))::text, MH_ELCODE_CTI]))[2] AS MH_ELCODE_CTI, + '8'::text AS mode_entree, + ''::text AS provenance, + '0'::text AS urgence, + '8'::text AS mode_sortie, + ''::text AS destination + FROM w_MOUV_HOSPI_source + JOIN w_HOSPITALISATION_SELECT ON HO_NUM = MH_HONUM + GROUP BY 1 + ; + + -- Modif CLA du 15-09-2017 + -- RAISON.RS_TYPESORT peut prendre des valeurs non aurotisées de mode d'entrée. On force donc à 8/0 si la valeur n'est pas standard + UPDATE w_HOSPITALISATION_MOUV_SORTIE SET + mode_entree = CASE WHEN t_modes_entree.code IS NULL THEN '8'::text ELSE RS_TYPESORT::text END, + provenance = CASE WHEN t_modes_entree.code IS NULL THEN '0'::text ELSE RS_PROVDEST::text END, + urgence = CASE WHEN RS_CODE = ANY(string_to_array(t_divers.valeur,',')) THEN '1' ELSE '0' END + FROM prod_cerner.RAISON + JOIN activite.t_divers ON t_divers.code = 'CERNER_RAISONURGENCE' + LEFT JOIN base.t_modes_entree ON t_modes_entree.code = RS_TYPESORT + WHERE MH_RSCODENT = RS_CODE AND + (mode_entree <> CASE WHEN t_modes_entree.code IS NULL THEN '8'::text ELSE RS_TYPESORT::text END OR + provenance <> CASE WHEN t_modes_entree.code IS NULL THEN '0'::text ELSE RS_PROVDEST::text END OR + urgence <> CASE WHEN RS_CODE = ANY(string_to_array(t_divers.valeur,',')) THEN '1' ELSE '0' END) + ; + + -- Modif CLA du 15-09-2017 + -- RAISON.RS_TYPESORT peut prendre des valeurs non aurotisées de mode de sortie. On force donc à 8/0 si la valeur n'est pas standard + UPDATE w_HOSPITALISATION_MOUV_SORTIE SET + mode_sortie = CASE WHEN t_modes_sortie.code IS NULL THEN '8'::text ELSE RS_TYPESORT::text END, + destination = CASE WHEN t_modes_sortie.code IS NULL THEN '0'::text ELSE RS_PROVDEST::text END + FROM prod_cerner.RAISON + LEFT JOIN base.t_modes_sortie ON t_modes_sortie.code = RS_TYPESORT + WHERE MH_RSCODSOR = RS_CODE AND + (mode_sortie <> CASE WHEN t_modes_sortie.code IS NULL THEN '8'::text ELSE RS_TYPESORT::text END OR + destination <> CASE WHEN t_modes_sortie.code IS NULL THEN '0'::text ELSE RS_PROVDEST::text END) + ; + + + CREATE INDEX w_HOSPITALISATION_MOUV_SORTIE_i1 + ON w_HOSPITALISATION_MOUV_SORTIE + USING btree + (MH_HONUM); + + + UPDATE w_HOSPITALISATION_select SET + HO_HDEBS = COALESCE(w_HOSPITALISATION_select.HO_HDEBS,MH_HDEB), + HO_HFINS = COALESCE(w_HOSPITALISATION_select.HO_HFINS,MH_HFIN), + HO_INCODE = CASE + WHEN w_HOSPITALISATION_select.HO_INCODE <> '' THEN w_HOSPITALISATION_select.HO_INCODE + ELSE MH_INCODE END, + HO_UFCODE = CASE + WHEN w_HOSPITALISATION_select.HO_UFCODE <> '' THEN w_HOSPITALISATION_select.HO_UFCODE + ELSE MH_UFCODE END, + HO_UMCODE = CASE + WHEN w_HOSPITALISATION_select.HO_UMCODE <> '' THEN w_HOSPITALISATION_select.HO_UMCODE + ELSE MH_UMCODE END, + HO_UFCODE_REA = CASE + WHEN w_HOSPITALISATION_select.HO_UFCODE_REA <> '' THEN w_HOSPITALISATION_select.HO_UFCODE_REA + ELSE MH_UFCODE END, + HO_UFHEBER = CASE + WHEN w_HOSPITALISATION_select.HO_UFHEBER <> '' THEN w_HOSPITALISATION_select.HO_UFHEBER + WHEN MH_UFHEBER <> '' THEN MH_UFHEBER + WHEN w_HOSPITALISATION_select.HO_UFCODE <> '' THEN w_HOSPITALISATION_select.HO_UFCODE + ELSE MH_UFCODE END, + HO_SACODE = CASE + WHEN w_HOSPITALISATION_select.HO_SACODE <> '' THEN w_HOSPITALISATION_select.HO_SACODE + ELSE MH_SACODE END, + HO_LICODE = CASE + WHEN w_HOSPITALISATION_select.HO_LICODE <> '' THEN w_HOSPITALISATION_select.HO_LICODE + WHEN MH_LICODE <> '' AND MH_LICODE <> MH_UFCODE AND MH_LICODE <> MH_UFHEBER THEN MH_LICODE + WHEN MH_SACODE <> '' AND MH_SACODE <> MH_UFCODE AND MH_SACODE <> MH_UFHEBER THEN MH_SACODE + ELSE '0' END, + HO_ETCODE_CTI = CASE + WHEN w_HOSPITALISATION_select.HO_ETCODE_CTI <> '' THEN w_HOSPITALISATION_select.HO_ETCODE_CTI + ELSE MH_ETCODE_CTI END, + HO_LICODE_CTI = CASE + WHEN w_HOSPITALISATION_select.HO_LICODE_CTI <> '' THEN w_HOSPITALISATION_select.HO_LICODE_CTI + ELSE MH_LICODE_CTI END, + HO_ELCODE_CTI = CASE + WHEN w_HOSPITALISATION_select.HO_ELCODE_CTI <> '' THEN w_HOSPITALISATION_select.HO_ELCODE_CTI + ELSE MH_ELCODE_CTI END, + mode_entree = w_HOSPITALISATION_MOUV_SORTIE.mode_entree, + provenance = w_HOSPITALISATION_MOUV_SORTIE.provenance, + urgence = w_HOSPITALISATION_MOUV_SORTIE.urgence, + mode_sortie = w_HOSPITALISATION_MOUV_SORTIE.mode_sortie, + destination = w_HOSPITALISATION_MOUV_SORTIE.destination + FROM w_HOSPITALISATION_MOUV_SORTIE + WHERE HO_NUM = MH_HONUM AND + ( + HO_HDEBS IS NULL OR + HO_HFINS IS NULL OR + HO_INCODE = '' OR + HO_UFCODE = '' OR + HO_UMCODE = '' OR + HO_UFHEBER = '' OR + HO_SACODE = '' OR + HO_LICODE = '' OR + HO_ETCODE_CTI = '' OR + HO_LICODE_CTI = '' OR + HO_ELCODE_CTI = '' OR + w_HOSPITALISATION_MOUV_SORTIE.mode_entree <> '8' OR + w_HOSPITALISATION_MOUV_SORTIE.mode_sortie <> '8' OR + w_HOSPITALISATION_MOUV_SORTIE.urgence <> '0' + ) + ; + + + + DROP TABLE IF EXISTS w_MALADE_code_postal; + CREATE TEMP TABLE w_MALADE_code_postal AS + SELECT AD_MANUMDOS, (MAX(ARRAY[to_char(AD_CPT,'FM000'),t_codes_postaux.oid::text]))[2]::bigint AS code_postal_id + FROM prod_cerner.ADRESSE + JOIN base.t_codes_postaux ON AD_VNCODE = t_codes_postaux.code + WHERE AD_TYP = 'M' + GROUP BY 1 + ; + + + UPDATE w_HOSPITALISATION_select SET + code_postal_id = w_MALADE_code_postal.code_postal_id + FROM w_MALADE_code_postal + WHERE HO_MANUMDOS = AD_MANUMDOS + ; + + UPDATE w_HOSPITALISATION_select SET + mode_traitement_id = t_services_facturation.mode_traitement_id, + mode_traitement_code = t_modes_traitement.code, + dmt_code = t_dmt.code + FROM activite[PX].t_services_facturation + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + WHERE t_services_facturation.code_original = HO_UFCODE + ; + + UPDATE w_HOSPITALISATION_select SET + medecin_sejour_id = t_medecins_administratifs.oid + FROM activite[PX].t_medecins_administratifs + WHERE t_medecins_administratifs.code_original = HO_INCODE + ; + + CREATE INDEX w_HOSPITALISATION_SELECT_i3 + ON w_HOSPITALISATION_SELECT + USING btree + (HO_UFHEBER); + + CREATE INDEX w_HOSPITALISATION_SELECT_i4 + ON w_HOSPITALISATION_SELECT + USING btree + (HO_LICODE_CTI); + + CREATE INDEX w_HOSPITALISATION_SELECT_i5 + ON w_HOSPITALISATION_SELECT + USING btree + (HO_UFCODE); + + ANALYSE w_HOSPITALISATION_SELECT; + + + + + + + -- Id des Tiers payant + --UPDATE w_HOSPITALISATION_SELECT + --SET tiers_payant_1_id = t_tiers_payant.oid + --FROM activite[PX].t_tiers_payant + --WHERE t_tiers_payant.code_original = ('C'||NOCAIS) + ; + + + + + + + + + + + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_5, code_original_6) + SELECT HO_UFCODE, + HO_RECODE, + HO_ETCODE_CTI, + HO_ELCODE_CTI, + HO_UMCODE, + HO_UFCODE_REA + FROM w_HOSPITALISATION_SELECT + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = HO_UFCODE AND + code_original_2 = HO_RECODE AND + code_original_3 = HO_ETCODE_CTI AND + code_original_4 = HO_ELCODE_CTI AND + code_original_5 = HO_UMCODE AND + code_original_6 = HO_UFCODE_REA + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5,6; + + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM + activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original AND + (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + activite_id = COALESCE(t_activites.oid,0) + FROM + activite[PX].t_activites + WHERE code_original_2 = t_activites.code_original + AND activite_id <> COALESCE(t_activites.oid,0); + + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + UPDATE activite[PX].t_lieux SET + unite_medicale_id = COALESCE(t_unites_medicales.oid,0) + FROM + activite[PX].t_unites_medicales + WHERE code_original_5 = t_unites_medicales.code_original + AND unite_medicale_id <> COALESCE(t_unites_medicales.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM + activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + UPDATE w_HOSPITALISATION_SELECT SET + lieu_sortie_id = t_lieux.oid, + type_sejour_force = CASE WHEN w_HOSPITALISATION_SELECT.type_sejour_force <> '9' AND t_services_facturation.type_sejour IN ('1', '2', '3', '4', '5', '6') THEN t_services_facturation.type_sejour ELSE w_HOSPITALISATION_SELECT.type_sejour_force END + FROM activite[PX].t_lieux + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE code_original_1 = HO_UFCODE AND + code_original_2 = HO_RECODE AND + code_original_3 = HO_ETCODE_CTI AND + code_original_4 = HO_ELCODE_CTI AND + code_original_5 = HO_UMCODE AND + code_original_6 = HO_UFCODE_REA + ; + + + + DROP TABLE IF EXISTS w_sejours; + CREATE TEMP TABLE w_sejours AS + SELECT + '000000000'::text AS finess, + w_HOSPITALISATION_SELECT.HO_NUMSEJ as no_sejour, + w_HOSPITALISATION_SELECT.HO_NUMSEJ as code_original, + to_char(HO_MANUMDOS,'FM0000000000') as no_patient, + HO_DDEBS as date_entree, + to_char(HO_HDEBS,'HH24MISS')::numeric as heure_entree, + COALESCE(HO_DFINS,'20991231') as date_sortie, + to_char(HO_HFINS,'HH24MISS')::numeric as heure_sortie, + MA_SEXE as code_sexe, + 0 AS age, + CASE WHEN HO_DFINS IS NULL THEN 0 ELSE 1 END::numeric as code_sorti, + CASE WHEN HO_DDEBS > now() THEN 1::numeric ELSE 0::numeric END AS code_prevu, + CASE + WHEN type_sejour_force <> '0' THEN type_sejour_force + WHEN RE_TYPE = 'C' THEN '3' + WHEN RE_TYPE = 'H' AND HO_DFINS = HO_DDEBS THEN '2' + WHEN RE_TYPE = 'H' THEN '1' + WHEN mode_traitement_code IN ('07') OR dmt_code IN ('958') THEN '3' + WHEN mode_traitement_code IN ('03') AND HO_DFINS = HO_DDEBS THEN '2' + WHEN mode_traitement_code IN ('04') AND HO_DFINS = HO_DDEBS THEN '2' + WHEN mode_traitement_code IN ('19', '23') AND HO_DFINS = HO_DDEBS THEN '2' + WHEN mode_traitement_code IN ('03') THEN '1' + WHEN HO_DFINS = HO_DDEBS THEN '2' + ELSE '1' END as type_sejour, + w_HOSPITALISATION_SELECT.lieu_sortie_id AS lieu_sortie_id, + w_HOSPITALISATION_SELECT.medecin_sejour_id, + 0::bigint AS ghs_id, + 0::bigint AS ghm_id, + 0::bigint AS ghs_bebe1_id, + 0::bigint AS ghs_bebe2_id, + 0::bigint AS ghs_bebe3_id, + '20991231'::date AS DATE_GROUPAGE, + '0'::text AS code_cp_demandee, + w_HOSPITALISATION_SELECT.mode_traitement_id, + w_HOSPITALISATION_SELECT.mode_entree, + w_HOSPITALISATION_SELECT.provenance, + w_HOSPITALISATION_SELECT.mode_sortie, + w_HOSPITALISATION_SELECT.destination, + w_HOSPITALISATION_SELECT.tiers_payant_0_id, + w_HOSPITALISATION_SELECT.tiers_payant_1_id, + w_HOSPITALISATION_SELECT.tiers_payant_2_id, + w_HOSPITALISATION_SELECT.tiers_payant_22_id, + 1 AS est_budget_global, + w_HOSPITALISATION_SELECT.code_postal_id + FROM w_HOSPITALISATION_SELECT + WHERE sejour_a_creer = '1' + ; + + + + -- Forcage type selon séjour + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour + FROM activite.t_sejour + WHERE t_sejour.no_sejour = w_sejours.no_sejour AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9'); + + + -- FINESS + UPDATE w_sejours + SET finess = t_finess.code + FROM activite[PX].t_lieux + JOIN activite[PX].t_services_facturation on service_facturation_id = t_services_facturation.oid + JOIN base.t_finess ON finess_id = t_finess.oid + WHERE lieu_sortie_id = t_lieux.oid; + + -- GHM et GHS depuis PMSI + UPDATE w_sejours p_sejours + SET ghm_id = subview.ghm_id, ghs_id = subview.ghs_id + FROM + ( + SELECT no_sejour, t_ghm_a.oid AS ghm_id, t_ghs_a.oid AS ghs_id + FROM w_sejours p_sejours + JOIN pmsi.p_rss ON p_sejours.no_sejour = p_rss.no_sejour_administratif AND + date_trunc('month',p_sejours.date_sortie) = date_trunc('month',p_rss.date_sortie) + JOIN pmsi.t_ghm t_ghm_p ON p_rss.ghm_id = t_ghm_p.oid + JOIN base.t_ghs t_ghs_p ON p_rss.ghs_id = t_ghs_p.oid + JOIN base.t_ghm t_ghm_a ON t_ghm_p.code = t_ghm_a.code + JOIN base.t_ghs t_ghs_a ON t_ghs_p.code = t_ghs_a.code + WHERE type_sejour IN ('1','2','5') AND + p_rss.ghm_id > 0 AND + p_sejours.ghm_id <> t_ghm_a.oid AND + t_ghm_p.code NOT LIKE '90%' AND t_ghm_p.code NOT LIKE '99%' + ) subview + WHERE p_sejours.no_sejour = subview.no_sejour + ; + + -- Validation des séjours + + SELECT base.cti_disable_index('activite', 'i_sejours_2'); + SELECT base.cti_disable_index('activite', 'i_sejours_3'); + SELECT base.cti_disable_index('activite', 'i_sejours_4'); + SELECT base.cti_disable_index('activite', 'i_sejours_5'); + SELECT base.cti_disable_index('activite', 'i_sejours_6'); + SELECT base.cti_disable_index('activite', 'i_sejours_7'); + SELECT base.cti_disable_index('activite', 'i_sejours_8'); + SELECT base.cti_disable_index('activite', 'i_sejours_9'); + SELECT base.cti_disable_index('activite', 'i_sejours_10'); + SELECT base.cti_disable_index('activite', 'i_sejours_11'); + SELECT base.cti_disable_index('activite', 'i_sejours_12'); + SELECT base.cti_disable_index('activite', 'i_sejours_13'); + + UPDATE activite[PX].p_sejours SET + finess = w_sejours.finess, + code_original = w_sejours.code_original, + no_patient = w_sejours.no_patient, + date_entree = w_sejours.date_entree, + heure_entree = w_sejours.heure_entree, + date_sortie = w_sejours.date_sortie, + heure_sortie = w_sejours.heure_sortie, + code_sexe = w_sejours.code_sexe, + age = w_sejours.age, + code_sorti = w_sejours.code_sorti, + code_prevu = w_sejours.code_prevu, + type_sejour = w_sejours.type_sejour, + lieu_sortie_id = w_sejours.lieu_sortie_id, + medecin_sejour_id = w_sejours.medecin_sejour_id, + code_cp_demandee = w_sejours.code_cp_demandee, + mode_traitement_id = w_sejours.mode_traitement_id, + mode_entree = w_sejours.mode_entree, + provenance = w_sejours.provenance, + mode_sortie = w_sejours.mode_sortie, + destination = w_sejours.destination, + tiers_payant_0_id = w_sejours.tiers_payant_0_id, + tiers_payant_1_id = w_sejours.tiers_payant_1_id, + tiers_payant_2_id = w_sejours.tiers_payant_2_id, + tiers_payant_22_id = w_sejours.tiers_payant_22_id, + est_budget_global = w_sejours.est_budget_global, + date_groupage = w_sejours.date_groupage, + ghs_id = w_sejours.ghs_id, + ghm_id = w_sejours.ghm_id, + ghs_bebe1_id = w_sejours.ghs_bebe1_id, + ghs_bebe2_id = w_sejours.ghs_bebe2_id, + ghs_bebe3_id = w_sejours.ghs_bebe3_id, + code_postal_id = w_sejours.code_postal_id + FROM w_sejours + WHERE w_sejours.no_sejour = p_sejours.no_sejour + AND ( + w_sejours.finess IS DISTINCT FROM p_sejours.finess OR + w_sejours.code_original IS DISTINCT FROM p_sejours.code_original OR + w_sejours.no_patient IS DISTINCT FROM p_sejours.no_patient OR + w_sejours.date_entree IS DISTINCT FROM p_sejours.date_entree OR + w_sejours.heure_entree IS DISTINCT FROM p_sejours.heure_entree OR + w_sejours.date_sortie IS DISTINCT FROM p_sejours.date_sortie OR + w_sejours.heure_sortie IS DISTINCT FROM p_sejours.heure_sortie OR + w_sejours.code_sexe IS DISTINCT FROM p_sejours.code_sexe OR + w_sejours.age IS DISTINCT FROM p_sejours.age OR + w_sejours.code_sorti IS DISTINCT FROM p_sejours.code_sorti OR + w_sejours.code_prevu IS DISTINCT FROM p_sejours.code_prevu OR + w_sejours.type_sejour IS DISTINCT FROM p_sejours.type_sejour OR + w_sejours.lieu_sortie_id IS DISTINCT FROM p_sejours.lieu_sortie_id OR + w_sejours.medecin_sejour_id IS DISTINCT FROM p_sejours.medecin_sejour_id OR + w_sejours.code_cp_demandee IS DISTINCT FROM p_sejours.code_cp_demandee OR + w_sejours.mode_traitement_id IS DISTINCT FROM p_sejours.mode_traitement_id OR + w_sejours.mode_entree IS DISTINCT FROM p_sejours.mode_entree OR + w_sejours.provenance IS DISTINCT FROM p_sejours.provenance OR + w_sejours.mode_sortie IS DISTINCT FROM p_sejours.mode_sortie OR + w_sejours.destination IS DISTINCT FROM p_sejours.destination OR + w_sejours.tiers_payant_0_id IS DISTINCT FROM p_sejours.tiers_payant_0_id OR + w_sejours.tiers_payant_1_id IS DISTINCT FROM p_sejours.tiers_payant_1_id OR + w_sejours.tiers_payant_2_id IS DISTINCT FROM p_sejours.tiers_payant_2_id OR + w_sejours.tiers_payant_22_id IS DISTINCT FROM p_sejours.tiers_payant_22_id OR + w_sejours.est_budget_global IS DISTINCT FROM p_sejours.est_budget_global OR + w_sejours.date_groupage IS DISTINCT FROM p_sejours.date_groupage OR + w_sejours.ghs_id IS DISTINCT FROM p_sejours.ghs_id OR + w_sejours.ghm_id IS DISTINCT FROM p_sejours.ghm_id OR + w_sejours.ghs_bebe1_id IS DISTINCT FROM p_sejours.ghs_bebe1_id OR + w_sejours.ghs_bebe2_id IS DISTINCT FROM p_sejours.ghs_bebe2_id OR + w_sejours.ghs_bebe3_id IS DISTINCT FROM p_sejours.ghs_bebe3_id OR + w_sejours.code_postal_id IS DISTINCT FROM p_sejours.code_postal_id + ); + + + INSERT INTO activite[PX].p_sejours ( + finess, + no_sejour, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + lieu_sortie_id, + medecin_sejour_id, + ghs_id, + ghm_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + est_budget_global, + code_postal_id + ) + SELECT + w_sejours.finess, + w_sejours.no_sejour, + w_sejours.code_original, + w_sejours.no_patient, + w_sejours.date_entree, + w_sejours.heure_entree, + w_sejours.date_sortie, + w_sejours.heure_sortie, + w_sejours.code_sexe, + w_sejours.age, + w_sejours.code_sorti, + w_sejours.code_prevu, + w_sejours.type_sejour, + w_sejours.lieu_sortie_id, + w_sejours.medecin_sejour_id, + w_sejours.ghs_id, + w_sejours.ghm_id, + w_sejours.ghs_bebe1_id, + w_sejours.ghs_bebe2_id, + w_sejours.ghs_bebe3_id, + w_sejours.date_groupage, + w_sejours.code_cp_demandee, + w_sejours.mode_traitement_id, + w_sejours.mode_entree, + w_sejours.provenance, + w_sejours.mode_sortie, + w_sejours.destination, + w_sejours.tiers_payant_0_id, + w_sejours.tiers_payant_1_id, + w_sejours.tiers_payant_2_id, + w_sejours.tiers_payant_22_id, + w_sejours.est_budget_global, + w_sejours.code_postal_id + FROM w_sejours + LEFT JOIN activite[PX].p_sejours ON (w_sejours.no_sejour = p_sejours.no_sejour) + WHERE p_sejours.no_sejour IS NULL; + + DELETE FROM activite[PX].p_sejours WHERE no_sejour NOT IN (SELECT no_sejour FROM w_sejours ); + + DELETE FROM activite[PX].p_sejours USING + ( + SELECT no_sejour, min(CTID) AS koctid + FROM activite[PX].p_sejours + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE CTID = koctid; + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '' = ''; + + UPDATE activite[PX].p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND + '' = ''; + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '' = ''; + + + -- recréation index + + SELECT base.cti_enable_index('activite', 'i_sejours_2'); + SELECT base.cti_enable_index('activite', 'i_sejours_3'); + SELECT base.cti_enable_index('activite', 'i_sejours_4'); + SELECT base.cti_enable_index('activite', 'i_sejours_5'); + SELECT base.cti_enable_index('activite', 'i_sejours_6'); + SELECT base.cti_enable_index('activite', 'i_sejours_7'); + SELECT base.cti_enable_index('activite', 'i_sejours_8'); + SELECT base.cti_enable_index('activite', 'i_sejours_9'); + SELECT base.cti_enable_index('activite', 'i_sejours_10'); + SELECT base.cti_enable_index('activite', 'i_sejours_11'); + SELECT base.cti_enable_index('activite', 'i_sejours_12'); + SELECT base.cti_enable_index('activite', 'i_sejours_13'); + + + UPDATE w_HOSPITALISATION_SELECT + SET sejour_id = p_sejours.oid + FROM activite[PX].p_sejours + WHERE HO_NUMSEJ = p_sejours.code_original + ; + + + ]]> + + + + + (MIN(ARRAY[to_char(sequence,'FM00000000'),MH_DHDEB::text]))[2]::timestamp without time zone + ) subview + WHERE w_MOUV_HOSPI.HO_NUMSEJ = subview.HO_NUMSEJ AND + w_MOUV_HOSPI.sequence = subview.sequence_first + ; + + + + -- Correction des mouvements en désaccord avec séjour (date sortie) + UPDATE w_MOUV_HOSPI SET + MH_DFIN = w_MOUV_HOSPI.HO_DFINS, + MH_HFIN = w_MOUV_HOSPI.HO_HFINS, + MH_DHFIN = w_MOUV_HOSPI.HO_DHFINS + FROM + ( + SELECT HO_NUMSEJ, + MAX(sequence) AS sequence_last, + MAX(HO_DFINS) AS HO_DFINS, + MAX(HO_HFINS) AS HO_HFINS, + MAX(HO_DHFINS) AS HO_DHFINS, + (MAX(ARRAY[to_char(sequence,'FM00000000'),MH_DFIN::text]))[2]::date AS MH_DFIN_last, + (MAX(ARRAY[to_char(sequence,'FM00000000'),MH_HFIN::text]))[2]::time without time zone AS MH_HFIN_last, + (MAX(ARRAY[to_char(sequence,'FM00000000'),MH_DHFIN::text]))[2]::timestamp without time zone AS MH_DHFIN_last + FROM w_MOUV_HOSPI + GROUP BY 1 + HAVING MAX(HO_DHFINS) <> + (MAX(ARRAY[to_char(sequence,'FM00000000'),MH_DHFIN::text]))[2]::timestamp without time zone + ) subview + WHERE w_MOUV_HOSPI.HO_NUMSEJ = subview.HO_NUMSEJ AND + w_MOUV_HOSPI.sequence = subview.sequence_last + ; + + UPDATE w_MOUV_HOSPI SET + MH_DHDEB = MH_DHFIN - interval '1 second', + MH_DDEB = date(MH_DHFIN - interval '1 second'), + MH_HDEB = (MH_DHFIN - interval '1 second')::time without time zone + WHERE MH_DHDEB > MH_DHFIN + ; + + + UPDATE w_MOUV_HOSPI SET + MH_DHFIN = w_MOUV_HOSPI_after.MH_DHDEB - interval '1 second', + MH_DFIN = date(w_MOUV_HOSPI_after.MH_DHDEB - interval '1 second'), + MH_HFIN = (w_MOUV_HOSPI_after.MH_DHDEB - interval '1 second')::time without time zone + FROM w_MOUV_HOSPI w_MOUV_HOSPI_after + WHERE w_MOUV_HOSPI.HO_NUMSEJ = w_MOUV_HOSPI_after.HO_NUMSEJ AND + w_MOUV_HOSPI.sequence = w_MOUV_HOSPI_after.sequence -1 + ; + + DELETE FROM w_MOUV_HOSPI + WHERE MH_DHFIN < HO_DHDEBS + ; + + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_5, code_original_6) + SELECT lieu_service_facturation_code_original, + lieu_activite_code_original, + lieu_etage_code_original, + lieu_lit_code_original, + lieu_unite_medicale_code_original, + lieu_unite_fonctionnelle_code_original + FROM w_MOUV_HOSPI + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = lieu_service_facturation_code_original AND + code_original_2 = lieu_activite_code_original AND + code_original_3 = lieu_etage_code_original AND + code_original_4 = lieu_lit_code_original AND + code_original_5 = lieu_unite_medicale_code_original AND + code_original_6 = lieu_unite_fonctionnelle_code_original + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5,6; + + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM + activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original AND + (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + activite_id = COALESCE(t_activites.oid,0) + FROM + activite[PX].t_activites + WHERE code_original_2 = t_activites.code_original + AND activite_id <> COALESCE(t_activites.oid,0); + + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + UPDATE activite[PX].t_lieux SET + unite_medicale_id = COALESCE(t_unites_medicales.oid,0) + FROM + activite[PX].t_unites_medicales + WHERE code_original_5 = t_unites_medicales.code_original + AND unite_medicale_id <> COALESCE(t_unites_medicales.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM + activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + UPDATE w_MOUV_HOSPI SET + lieu_id = t_lieux.oid, + est_chambre_particuliere = CASE WHEN t_lits.chambre_particuliere = 'O' THEN '1' ELSE '0' END + FROM activite[PX].t_lieux + JOIN activite[PX].t_lits ON lit_id = t_lits.oid + WHERE + code_original_1 = lieu_service_facturation_code_original AND + code_original_2 = lieu_activite_code_original AND + code_original_3 = lieu_etage_code_original AND + code_original_4 = lieu_lit_code_original AND + code_original_5 = lieu_unite_medicale_code_original AND + code_original_6 = lieu_unite_fonctionnelle_code_original + ; + + + + -- Etat avant + UPDATE w_MOUV_HOSPI SET + lieu_service_facturation_before = w_MOUV_HOSPI_before.lieu_service_facturation_code_original, + lieu_activite_before = w_MOUV_HOSPI_before.lieu_activite_code_original, + lieu_etage_before = w_MOUV_HOSPI_before.lieu_etage_code_original, + lieu_lit_before = w_MOUV_HOSPI_before.lieu_lit_code_original, + lieu_unite_fonctionnelle_before = w_MOUV_HOSPI_before.lieu_unite_fonctionnelle_code_original, + lieu_unite_medicale_before = w_MOUV_HOSPI_before.lieu_unite_medicale_code_original + FROM w_MOUV_HOSPI w_MOUV_HOSPI_before + WHERE w_MOUV_HOSPI.HO_NUMSEJ = w_MOUV_HOSPI_before.HO_NUMSEJ AND + w_MOUV_HOSPI.sequence = w_MOUV_HOSPI_before.sequence +1 + ; + + -- Etat apres + UPDATE w_MOUV_HOSPI SET + lieu_service_facturation_after = w_MOUV_HOSPI_after.lieu_service_facturation_code_original, + lieu_activite_after = w_MOUV_HOSPI_after.lieu_activite_code_original, + lieu_etage_after = w_MOUV_HOSPI_after.lieu_etage_code_original, + lieu_lit_after = w_MOUV_HOSPI_after.lieu_lit_code_original, + lieu_unite_fonctionnelle_after = w_MOUV_HOSPI_after.lieu_unite_fonctionnelle_code_original, + lieu_unite_medicale_after = w_MOUV_HOSPI_after.lieu_unite_medicale_code_original + FROM w_MOUV_HOSPI w_MOUV_HOSPI_after + WHERE w_MOUV_HOSPI.HO_NUMSEJ = w_MOUV_HOSPI_after.HO_NUMSEJ AND + w_MOUV_HOSPI.sequence = w_MOUV_HOSPI_after.sequence -1 + ; + + + + + DROP TABLE IF EXISTS w_mouvements_sejour; + + CREATE TEMP TABLE w_mouvements_sejour AS + SELECT + w_MOUV_HOSPI.HO_NUM, + w_MOUV_HOSPI.HO_NUMSEJ AS no_sejour, + p_sejours.oid AS sejour_id, + sequence, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE WHEN p_calendrier.date = MH_DDEB THEN to_char(MH_HDEB,'HH24MISS')::numeric ELSE 0 END AS heure_debut, + CASE WHEN p_calendrier.date = MH_DFIN THEN to_char(MH_HFIN,'HH24MISS')::numeric ELSE 240000 END AS heure_fin, + CASE WHEN MH_DHDEB = HO_DHDEBS AND p_calendrier.date = MH_DDEB AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes, + CASE WHEN MH_DHFIN = HO_DHFINS AND p_calendrier.date = MH_DFIN AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes, + CASE WHEN MH_DHDEB = HO_DHDEBS AND p_calendrier.date = MH_DDEB AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree, + CASE WHEN MH_DHFIN = HO_DHFINS AND p_calendrier.date = MH_DFIN AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie, + CASE WHEN p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN MH_DHDEB = HO_DHDEBS AND p_calendrier.date = MH_DDEB AND p_sejours.type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires, + CASE WHEN MH_DHDEB = HO_DHDEBS AND p_calendrier.date = MH_DDEB AND p_sejours.type_sejour = '3' THEN 1 ELSE 0 END AS nb_externes, + CASE WHEN MH_DHDEB = HO_DHDEBS AND p_calendrier.date = MH_DDEB AND p_sejours.type_sejour = '3' THEN 1 ELSE 0 END AS nb_passage_externe, + CASE WHEN w_MOUV_HOSPI.urgence = '1' AND p_calendrier.date = MH_DDEB AND MH_DHDEB = HO_DHDEBS THEN 1 ELSE 0 END AS nb_urgences, + CASE WHEN MH_DHDEB = HO_DHDEBS AND p_calendrier.date = MH_DDEB AND p_sejours.type_sejour = '5' THEN 1 ELSE 0 END AS nb_seances, + + CASE WHEN p_calendrier.date = MH_DDEB AND p_sejours.type_sejour = '1' AND MH_DHDEB <> HO_DHDEBS AND lieu_service_facturation_code_original <> lieu_service_facturation_before THEN 1 ELSE 0 END AS nb_entrees_mutation_service, + CASE WHEN p_calendrier.date = MH_DFIN AND p_sejours.type_sejour = '1' AND MH_DHFIN <> HO_DHFINS AND lieu_service_facturation_code_original <> lieu_service_facturation_after THEN 1 ELSE 0 END AS nb_sorties_mutation_service, + CASE WHEN p_calendrier.date = MH_DDEB AND p_sejours.type_sejour = '1' AND MH_DHDEB <> HO_DHDEBS AND lieu_etage_code_original <> lieu_etage_before THEN 1 ELSE 0 END AS nb_entrees_mutation_etage, + CASE WHEN p_calendrier.date = MH_DFIN AND p_sejours.type_sejour = '1' AND MH_DHFIN <> HO_DHFINS AND lieu_etage_code_original <> lieu_etage_after THEN 1 ELSE 0 END AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + 0 AS nb_entrees_mutation_unite_medicale, + 0 AS nb_sorties_mutation_unite_medicale, + + CASE WHEN p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN p_sejours.type_sejour = '1' AND p_calendrier.date <> MH_DFIN THEN 1 ELSE 0 END AS nb_jours_js_non_inclus, + + CASE WHEN p_sejours.type_sejour IN ('1','2') THEN est_chambre_particuliere ELSE '0' END AS est_chambre_particuliere, + CASE WHEN p_sejours.type_sejour IN ('1','2') AND est_chambre_particuliere = 1 THEN 1 ELSE 0 END AS nb_chambres_particulieres, + + CASE WHEN MH_DHDEB = HO_DHDEBS AND p_calendrier.date = MH_DDEB AND p_sejours.type_sejour = '6' THEN 1 ELSE 0 END AS nb_bebes, + + lieu_id, + + p_sejours.medecin_sejour_id as medecin_sejour_id, + + CASE WHEN p_sejours.code_prevu = '1' OR p_calendrier.date > date(now_cerner) THEN '1' ELSE '0' END AS est_mouvement_previsionnel + FROM w_MOUV_HOSPI + JOIN w_PERIODE ON 1=1 + JOIN activite[PX].p_sejours ON w_MOUV_HOSPI.HO_NUMSEJ = p_sejours.no_sejour AND p_sejours.etat = '' + JOIN base.p_calendrier ON (p_calendrier.date BETWEEN MH_DDEB AND MH_DFIN AND p_calendrier.date <= now() + interval '1 month' ) + ORDER BY sequence, p_calendrier.date; + + + -- Externes (avec passages donc possibilité d'avoir plusieurs externes pour un séjour) + DROP TABLE IF EXISTS w_mouvements_externes; + CREATE TEMP TABLE w_mouvements_externes AS + SELECT + HO_NUMSEJ, + COALESCE(SEA_DATE,HO_DDEBS) AS HO_DDEBS, + COALESCE((SEA_HEURE - date(SEA_HEURE))::time without time zone,HO_HDEBS) AS HO_HDEBS, + SEA_ID, + COALESCE(ACTE_UFXCODE,SEA_UFCODE_REA,HO_UFCODE_REA) AS ACTE_UFXCODE, + to_char(SEA_ID,'FM000000000000')||COALESCE(ACTE_UFXCODE,SEA_UFCODE_REA,HO_UFCODE_REA) AS ACTE_KEY, + MAX(HO_NUM) AS HO_NUM, + MAX(COALESCE(SEA_DATE_FIN,HO_DFINS)) AS HO_DFINS, + MAX(COALESCE((SEA_HEURE_FIN - date(SEA_HEURE_FIN))::time without time zone,HO_HFINS)) AS HO_HFINS, + MAX(w_HOSPITALISATION_SELECT.medecin_sejour_id) AS medecin_sejour_id, + MAX(w_HOSPITALISATION_SELECT.lieu_sortie_id) AS lieu_id, + MAX(COALESCE(SEA_UFCODE,HO_UFCODE)) AS lieu_service_facturation_code_original, + MAX(HO_RECODE) AS lieu_activite_code_original, + MAX(HO_ETCODE_CTI) AS lieu_etage_code_original, + MAX(HO_ELCODE_CTI) AS lieu_lit_code_original, + ''::text AS lieu_unite_medicale_code_original, + MAX(COALESCE(ACTE_UFXCODE,SEA_UFCODE_REA,HO_UFCODE_REA)) AS lieu_unite_fonctionnelle_code_original, + '0'::text AS est_chambre_particuliere, + '1'::text AS est_premier_passage_jour + FROM w_HOSPITALISATION_SELECT + LEFT JOIN w_PASSAGE ON HO_NUM = SEA_HONUM AND HO_SEANCE = SEA_SEANCE + LEFT JOIN w_PASSAGE_ACTES ON HO_NUM = ACTE_HONUM AND + w_PASSAGE.SEA_ID = ACTE_SEAID + JOIN activite[PX].p_sejours ON w_HOSPITALISATION_SELECT.HO_NUMSEJ = p_sejours.no_sejour AND p_sejours.etat = '' + WHERE RE_TYPE <> 'H' AND sejour_a_creer = '1' + GROUP BY 1,2,3,4,5,6 + ORDER BY 1,2,3,4 + ; + + CREATE INDEX w_mouvements_externes_i1 + ON w_mouvements_externes + USING btree + (HO_NUMSEJ); + + SELECT base.cti_execute( + 'UPDATE w_mouvements_externes + SET HO_HDEBS = w_mouvements_externes.HO_HDEBS + interval ''1 second'' + FROM + ( + SELECT HO_NUMSEJ, HO_DDEBS, HO_HDEBS, MIN(ACTE_KEY) AS ACTE_KEY_first + FROM w_mouvements_externes + GROUP BY 1,2,3 + HAVING count(*) > 1 + ) subview + WHERE w_mouvements_externes.HO_NUMSEJ = subview.HO_NUMSEJ AND + w_mouvements_externes.HO_DDEBS = subview.HO_DDEBS AND + w_mouvements_externes.HO_HDEBS = subview.HO_HDEBS AND + w_mouvements_externes.ACTE_KEY <> subview.ACTE_KEY_first + ',100) + ; + + UPDATE w_mouvements_externes + SET est_premier_passage_jour = '0' + FROM + ( + SELECT HO_NUMSEJ, HO_DDEBS, (MIN(ARRAY[HO_HDEBS::text,ACTE_KEY::text]))[2]::text AS ACTE_KEY_first + FROM w_mouvements_externes + GROUP BY 1,2 + HAVING COUNT(*) > 1 + ) subview + WHERE w_mouvements_externes.HO_NUMSEJ = subview.HO_NUMSEJ AND + w_mouvements_externes.HO_DDEBS = subview.HO_DDEBS AND + w_mouvements_externes.ACTE_KEY <> subview.ACTE_KEY_first + ; + + + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_5, code_original_6) + SELECT lieu_service_facturation_code_original, + lieu_activite_code_original, + lieu_etage_code_original, + lieu_lit_code_original, + lieu_unite_medicale_code_original, + lieu_unite_fonctionnelle_code_original + FROM w_mouvements_externes + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = lieu_service_facturation_code_original AND + code_original_2 = lieu_activite_code_original AND + code_original_3 = lieu_etage_code_original AND + code_original_4 = lieu_lit_code_original AND + code_original_5 = lieu_unite_medicale_code_original AND + code_original_6 = lieu_unite_fonctionnelle_code_original + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5,6; + + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM + activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original AND + (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + activite_id = COALESCE(t_activites.oid,0) + FROM + activite[PX].t_activites + WHERE code_original_2 = t_activites.code_original + AND activite_id <> COALESCE(t_activites.oid,0); + + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + UPDATE activite[PX].t_lieux SET + unite_medicale_id = COALESCE(t_unites_medicales.oid,0) + FROM + activite[PX].t_unites_medicales + WHERE code_original_5 = t_unites_medicales.code_original + AND unite_medicale_id <> COALESCE(t_unites_medicales.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM + activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + UPDATE w_mouvements_externes SET + lieu_id = t_lieux.oid, + est_chambre_particuliere = CASE WHEN t_lits.chambre_particuliere = 'O' THEN '1' ELSE '0' END + FROM activite[PX].t_lieux + JOIN activite[PX].t_lits ON lit_id = t_lits.oid + WHERE + code_original_1 = lieu_service_facturation_code_original AND + code_original_2 = lieu_activite_code_original AND + code_original_3 = lieu_etage_code_original AND + code_original_4 = lieu_lit_code_original AND + code_original_5 = lieu_unite_medicale_code_original AND + code_original_6 = lieu_unite_fonctionnelle_code_original AND + ( + w_mouvements_externes.lieu_id <> t_lieux.oid OR + w_mouvements_externes.est_chambre_particuliere <> CASE WHEN t_lits.chambre_particuliere = 'O' THEN '1' ELSE '0' END + ) + ; + + DELETE FROM w_mouvements_sejour + USING + ( + SELECT no_sejour, date, heure_debut, min(CTID) AS keep_ctid + FROM w_mouvements_sejour + GROUP BY 1,2,3 + HAVING count(*) >1 + ) subview + WHERE w_mouvements_sejour.no_sejour = subview.no_sejour AND + w_mouvements_sejour.date = subview.date AND + w_mouvements_sejour.heure_debut = subview.heure_debut AND + w_mouvements_sejour.CTID <> keep_ctid + ; + + + + INSERT INTO w_mouvements_sejour + ( + HO_NUM, + no_sejour, + sejour_id, + sequence, + date, + jour_semaine, + is_weekend, + heure_debut, + heure_fin, + nb_entrees_directes, + nb_sorties_directes, + est_jour_entree, + est_jour_sortie, + est_jour_hospitalisation, + nb_ambulatoires, + nb_externes, + nb_passage_externe, + nb_urgences, + nb_seances, + + nb_entrees_mutation_service, + nb_sorties_mutation_service, + nb_entrees_mutation_etage, + nb_sorties_mutation_etage, + nb_entrees_mutation_activite, + nb_sorties_mutation_activite, + nb_entrees_mutation_unite_medicale, + nb_sorties_mutation_unite_medicale, + + nb_jours_js_inclus, + nb_jours_js_non_inclus, + + est_chambre_particuliere, + nb_chambres_particulieres, + + nb_bebes, + lieu_id, + medecin_sejour_id, + est_mouvement_previsionnel + ) + SELECT + w_mouvements_externes.HO_NUM, + w_mouvements_externes.HO_NUMSEJ AS no_sejour, + p_sejours.oid AS sejour_id, + 0::numeric, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE WHEN p_calendrier.date = HO_DDEBS THEN to_char(HO_HDEBS,'HH24MISS')::numeric ELSE 0 END AS heure_debut, + CASE WHEN p_calendrier.date = HO_DFINS THEN to_char(HO_HFINS,'HH24MISS')::numeric ELSE 240000 END AS heure_fin, + CASE WHEN p_calendrier.date = HO_DDEBS AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes, + CASE WHEN p_calendrier.date = HO_DFINS AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes, + CASE WHEN p_calendrier.date = HO_DDEBS AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree, + CASE WHEN p_calendrier.date = HO_DFINS AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie, + CASE WHEN p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN p_calendrier.date = HO_DDEBS AND p_sejours.type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires, + CASE WHEN p_calendrier.date = HO_DDEBS AND p_sejours.type_sejour = '3' AND est_premier_passage_jour = '1' THEN 1 ELSE 0 END AS nb_externes, + CASE WHEN p_calendrier.date = HO_DDEBS AND p_sejours.type_sejour = '3' THEN 1 ELSE 0 END AS nb_passage_externe, + CASE WHEN '1' <> '1' AND p_calendrier.date = HO_DDEBS THEN 1 ELSE 0 END AS nb_urgences, + CASE WHEN p_calendrier.date = HO_DDEBS AND p_sejours.type_sejour = '5' THEN 1 ELSE 0 END AS nb_seances, + + 0 AS nb_entrees_mutation_service, + 0 AS nb_sorties_mutation_service, + 0 AS nb_entrees_mutation_etage, + 0 AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + 0 AS nb_entrees_mutation_unite_medicale, + 0 AS nb_sorties_mutation_unite_medicale, + + CASE WHEN p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN p_sejours.type_sejour = '1' AND p_calendrier.date <> HO_DFINS THEN 1 ELSE 0 END AS nb_jours_js_non_inclus, + + '0'::text AS est_chambre_particuliere, + 0::numeric AS nb_chambres_particulieres, + + CASE WHEN p_calendrier.date = HO_DDEBS AND p_sejours.type_sejour = '6' THEN 1 ELSE 0 END AS nb_bebes, + + w_mouvements_externes.lieu_id AS lieu_id, + + w_mouvements_externes.medecin_sejour_id as medecin_sejour_id, + + CASE WHEN p_sejours.code_prevu = '1' OR p_calendrier.date > date(now_cerner) THEN '1' ELSE '0' END AS est_mouvement_previsionnel + FROM w_mouvements_externes + JOIN w_PERIODE ON 1=1 + JOIN activite[PX].p_sejours ON w_mouvements_externes.HO_NUMSEJ = p_sejours.no_sejour AND p_sejours.etat = '' + JOIN base.p_calendrier ON (p_calendrier.date BETWEEN HO_DDEBS AND HO_DFINS AND p_calendrier.date <= now() + interval '1 month' ) + ORDER BY w_mouvements_externes.HO_NUMSEJ, p_calendrier.date; + + + + -- Séances + + DROP TABLE IF EXISTS w_MOUV_HOSPI_seances; + CREATE TEMP TABLE w_MOUV_HOSPI_seances AS + SELECT HO_NUMSEJ, date(mh_ddeb) AS date_seance, to_char(MH_HDEB,'HH24MISS')::numeric AS heure_seance + FROM w_HOSPITALISATION_SELECT + JOIN w_MOUV_HOSPI_source ON w_HOSPITALISATION_SELECT.HO_NUM = w_MOUV_HOSPI_source.MH_HONUM + JOIN activite.t_divers On t_divers.code = 'CERNER_RAISONSEANCE' + WHERE MH_RSCODENT = ANY(string_to_array(t_divers.valeur,',')) + ; + + UPDATE w_mouvements_sejour + SET nb_seances = 1 + FROM w_MOUV_HOSPI_seances + WHERE w_mouvements_sejour.no_sejour = HO_NUMSEJ AND + w_mouvements_sejour.date = date_seance AND + heure_seance BETWEEN heure_debut AND heure_fin + ; + + UPDATE activite[PX].p_mouvements_sejour + SET nb_seances = 1, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + JOIN base.t_ghs ON ghs_id = t_ghs.oid + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour + AND trim(t_ghs.code) IN (9606,9616,9613,9614) + AND (p_mouvements_sejour.nb_seances = 0 OR nb_ambulatoires = 1) + ; + + UPDATE activite[PX].p_sejours + SET type_sejour = 5 + FROM base.t_ghs + WHERE ghs_id = t_ghs.oid + AND trim(t_ghs.code) IN (9606,9616,9613,9614) + AND type_sejour != 5 + ; + + DELETE FROM w_mouvements_sejour + WHERE + nb_entrees_directes = 0 AND + nb_sorties_directes = 0 AND + est_jour_hospitalisation <> '1' AND + nb_ambulatoires = 0 AND + nb_externes = 0 AND + nb_passage_externe = 0 AND + nb_urgences = 0 AND + nb_seances = 0 AND + nb_entrees_mutation_service = 0 AND + nb_sorties_mutation_service = 0 AND + nb_entrees_mutation_etage = 0 AND + nb_sorties_mutation_etage = 0 AND + nb_entrees_mutation_activite = 0 AND + nb_sorties_mutation_activite = 0 AND + nb_entrees_mutation_unite_medicale = 0 AND + nb_sorties_mutation_unite_medicale = 0 AND + nb_jours_js_inclus = 0 AND + nb_jours_js_non_inclus = 0 AND + est_chambre_particuliere <> '1' AND + nb_chambres_particulieres = 0 AND + nb_bebes = 0; + + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_1'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_2'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_3'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_4'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_5'); + + + + + + INSERT INTO activite[PX].p_mouvements_sejour( + no_sejour, date, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_passage_externe, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, + nb_bebes,est_mouvement_previsionnel, jour_semaine, is_weekend) + SELECT no_sejour, date,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_passage_externe, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, + nb_bebes,est_mouvement_previsionnel, jour_semaine, is_weekend + FROM w_mouvements_sejour + ORDER BY no_sejour, sequence; + + + + + + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_5'); + + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie + AND (lieu_sortie_id IS DISTINCT FROM p_mouvements_sejour.lieu_id); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie AND p_mouvements_sejour.nb_sorties_directes = 1 + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL); + + + + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + FROM activite[PX].t_lieux + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE lieu_sortie_id = t_lieux.oid AND + t_services_facturation.type_sejour <> '0sauf5' AND + p_sejours.type_sejour <> '5' AND + p_sejours.type_sejour <> '1' AND + no_sejour IN ( + SELECT no_sejour + FROM activite[PX].p_mouvements_sejour + WHERE nb_seances > 0); + + + UPDATE activite[PX].p_mouvements_sejour + SET nb_externes = 0, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + ( + nb_externes <> 0 OR + nb_ambulatoires <> 0 + ) + + ; + + + ]]> + + + + + subview.ghs_id OR + p_sejours.ghm_id <> subview.ghm_id + ); + + ]]> + + + + + + + + + + FAC_EXER + ; + + ANALYSE w_FACTURE; + + CREATE INDEX w_FACTURE_i1 + ON w_FACTURE + USING btree + (FAC_NUM); + + CREATE INDEX w_FACTURE_i2 + ON w_FACTURE + USING btree + (FAC_HONUM); + + CREATE INDEX w_FACTURE_i_FAC_SEANCE + ON w_FACTURE + USING btree + (FAC_SEANCE); + + CREATE INDEX w_FACTURE_FAC_MANUMDOS + ON w_FACTURE + USING btree + (FAC_MANUMDOS); + + + UPDATE w_FACTURE SET + FAC_PYTYPE_CTI_HB = + CASE + WHEN AD_TYP = 'T' AND AD_PYTYPE IN ('1','2') THEN '1' + WHEN AD_TYP = 'T' AND AD_PYTYPE NOT IN ('1','2') THEN '2' + ELSE '0' END, + FAC_PYCODE_CTI_HB = + CASE + WHEN AD_TYP = 'T' THEN ('C'||AD_PYTYPE||AD_PYCODE) + ELSE '*PATIENT' END + FROM prod_cerner.ADRESSE + WHERE FAC_MANUMDOS = AD_MANUMDOS AND + FAC_ADCPT_HB = AD_CPT + ; + + + + DROP TABLE IF EXISTS w_FACTURE_DET; + CREATE TEMP TABLE w_FACTURE_DET AS + SELECT + 'FAD'::text AS FAD_SOURCE, + FAD_NUM, + FAD_UFCODE, + FAD_TYPE, + FAD_DEB, + FAD_FIN, + FAD_HEU, + FAD_INCODE, + CASE + WHEN trim(FAD_CCAMREGR) <> '' THEN trim(FAD_CCAMREGR) + ELSE trim(FAD_CTCODE) END AS FAD_CTCODE, + CASE + WHEN trim(FAD_CCAMREGR) <> '' THEN trim(FAD_CCAMREGR) + WHEN trim(FAD_CTNB2) <> '' THEN trim(FAD_CTNB2) + ELSE trim(FAD_CTCODE) END AS FAD_CTNB2, + CASE + WHEN trim(FAD_CCAMREGR) <> '' THEN trim(FAD_CCAMREGR) + ELSE '' END AS FAD_CTACTE, + FAD_UFEXE, + FAD_INEXE, + FAD_COMPTE, + FAD_SEANCE, + FAC_ADCPT_HB AS FAD_CPT, + FAD_TAUDG, + FAD_PUFAC, + CASE WHEN FAD_MON < 0 AND FAD_NBR > 0 THEN 0 - FAD_NBR ELSE FAD_NBR END AS FAD_NBR, + FAD_MON, + CASE WHEN FAC_PYTYPE_CTI_HB NOT IN ('1','2') THEN FAD_MON ELSE 0 END AS FAD_MON_0, + CASE WHEN FAC_PYTYPE_CTI_HB = '1' THEN FAD_MON ELSE 0 END AS FAD_MON_1, + CASE WHEN FAC_PYTYPE_CTI_HB = '2' THEN FAD_MON ELSE 0 END AS FAD_MON_2, + 0::numeric AS FAD_MON_BG_1 + FROM prod_cerner.FACTURE_DET + JOIN w_FACTURE ON FAC_NUM = FAD_NUM; + + + INSERT INTO w_FACTURE_DET + SELECT + 'FDG'::text AS FAD_SOURCE, + FDG_NUM, + FDG_UFCODE, + FDG_TYPE, + FDG_DEB, + FDG_FIN, + FDG_DEB AS FDG_HEU, + ''::text AS FDG_INCODE, + trim(FDG_CTCODE) AS FDG_CTCODE, + trim(FDG_CTCODE) AS FDG_CTNB2, + ''::text AS FDG_CTACTE, + ''::text AS FDG_UFEXE, + ''::text AS FDG_INEXE, + trim(FDG_COMPTE) AS FGD_COMPTE, + ''::text AS FDG_SEANCE, + FDG_CPT, + FDG_TAUDG, + FDG_PU AS FDG_PUFAC, + FDG_NBR, + FDG_MON, + 0::numeric AS FAD_MON_0, + 0::numeric AS FAD_MON_1, + 0::numeric AS FAD_MON_2, + FDG_MON AS FAD_MON_BG_1 + FROM prod_cerner.FACTURE_DG + JOIN w_FACTURE ON FAC_NUM = FDG_NUM + ; + + UPDATE w_FACTURE_DET + SET FAD_CTNB2 = CT_LET + FROM prod_cerner.CODE_TARIF + WHERE FAD_CTCODE = CT_CODE AND + FAD_CTNB2 <> CT_LET AND + CT_LET <> '' + ; + + ANALYSE w_FACTURE_DET; + + CREATE INDEX w_FACTURE_DET_i_FAD_NUM + ON w_FACTURE_DET + USING btree + (FAD_NUM); + + + + + DROP TABLE IF EXISTS w_FACTURE_DET_seance; + CREATE TEMP TABLE w_FACTURE_DET_seance AS + SELECT + FAD_NUM, + base.cti_array_accum(DISTINCT trim(FAD_SEANCE)) AS FAD_SEANCE_array + FROM w_FACTURE_DET + WHERE FAD_SEANCE <> '' + GROUP BY 1 + ; + + ANALYSE w_FACTURE_DET_seance; + + CREATE INDEX w_FACTURE_DET_seance_i1 + ON w_FACTURE_DET_seance + USING btree + (FAD_NUM); + + + UPDATE w_FACTURE + SET FAC_SEANCE_array = FAD_SEANCE_array, FAC_SEANCE = COALESCE(FAD_SEANCE_array[1],'') + FROM w_FACTURE_DET_seance + WHERE w_FACTURE.FAC_NUM = w_FACTURE_DET_seance.FAD_NUM + ; + + SELECT base.cti_execute(' + INSERT INTO w_FACTURE + SELECT + FAC_NUM_CTI, + FAC_NUM, + FAC_HONUM, + FAC_MANUMDOS, + FAC_ADCPT_BG, + FAC_PYTYPE_CTI_BG, + FAC_PYCODE_CTI_BG, + FAC_ADCPT_HB, + FAC_PYTYPE_CTI_HB, + FAC_PYCODE_CTI_HB, + FAC_DATE, + FAC_EXER, + FAC_DATE_VENT, + FAC_DDEB, + FAC_DFIN, + FAC_MONT, + FAC_MONT_0, + FAC_MONT_1, + FAC_MONT_2, + FAC_MONT_BG_1, + FAC_REGL, + FAC_REGL_0, + FAC_REGL_1, + FAC_REGL_2, + FAC_ETAT, + FAC_COMM, + FAC_INV, + FAC_ETAB, + FAC_BORD, + FAC_DATE_LOT, + FAC_SEANCE_array[subview.sequence_index] AS FAC_SEANCE, + NULL::text[] AS FAC_SEANCE_array, + subview.sequence_index + FROM w_FACTURE + JOIN (SELECT MAX(sequence_index)+1 AS sequence_index FROM w_FACTURE) subview ON 1=1 + WHERE FAC_SEANCE_array[subview.sequence_index] IS NOT NULL + ',50) + ; + + + + + + + DROP TABLE IF EXISTS w_FACTURE_DET_fac; + CREATE TEMP TABLE w_FACTURE_DET_fac AS + SELECT + FAD_NUM, + trim(FAD_SEANCE) AS FAD_SEANCE, + SUM(FAD_MON) AS FAD_MON, + SUM(FAD_MON_0) AS FAD_MON_0, + SUM(FAD_MON_1) AS FAD_MON_1, + SUM(FAD_MON_2) AS FAD_MON_2, + SUM(FAD_MON_BG_1) AS FAD_MON_BG_1, + date(MIN(FAD_DEB)) AS FAD_DDEB, + date(MAX(FAD_FIN)) AS FAD_DFIN, + MAX(CASE WHEN FAD_SOURCE = 'FDG' THEN FAD_CPT ELSE 0 END) AS FAD_ADCPT_BG + FROM w_FACTURE_DET + GROUP BY 1,2 + ; + + ANALYSE w_FACTURE_DET_fac; + + CREATE INDEX w_FACTURE_DET_fac_i1 + ON w_FACTURE_DET_fac + USING btree + (FAD_NUM); + + + + UPDATE w_FACTURE SET + FAC_ADCPT_BG = FAD_ADCPT_BG, + FAC_MONT = w_FACTURE_DET_fac.FAD_MON, + FAC_MONT_0 = w_FACTURE_DET_fac.FAD_MON_0, + FAC_MONT_1 = w_FACTURE_DET_fac.FAD_MON_1, + FAC_MONT_2 = w_FACTURE_DET_fac.FAD_MON_2, + FAC_MONT_BG_1 = w_FACTURE_DET_fac.FAD_MON_BG_1, + FAC_DDEB = w_FACTURE_DET_fac.FAD_DDEB, + FAC_DFIN = w_FACTURE_DET_fac.FAD_DFIN + FROM w_FACTURE_DET_fac + WHERE w_FACTURE.FAC_NUM = w_FACTURE_DET_fac.FAD_NUM AND + w_FACTURE.FAC_SEANCE = w_FACTURE_DET_fac.FAD_SEANCE + + ; + + + + + UPDATE w_FACTURE SET + FAC_PYTYPE_CTI_BG = + CASE + WHEN AD_TYP = 'T' AND AD_PYTYPE IN ('1','2') THEN '1' + WHEN AD_TYP = 'T' AND AD_PYTYPE NOT IN ('1','2') THEN '2' + ELSE '0' END, + FAC_PYCODE_CTI_BG = + CASE + WHEN AD_TYP = 'T' THEN ('C'||AD_PYTYPE||AD_PYCODE) + ELSE '*PATIENT' END + FROM prod_cerner.ADRESSE + WHERE FAC_MANUMDOS = AD_MANUMDOS AND + FAC_ADCPT_BG = AD_CPT + ; + + + + + UPDATE w_FACTURE + SET FAC_NUM_CTI = FAC_NUM || '.' || FAC_SEANCE + WHERE FAC_SEANCE <> '' AND + FAC_NUM IN + ( + SELECT FAC_NUM + FROM w_FACTURE + GROUP BY 1 + HAVING COUNT(*) > 1 + ) + ; + + + -- Récupération des règlements et affectation aux factures + + + DROP TABLE IF EXISTS w_MOUV_COMPTA_REG; + CREATE TEMP TABLE w_MOUV_COMPTA_REG AS + SELECT MC_EXER, + MC_NUM, + MC_NUMT, + MC_LIGNE, + MC_COMPTE, + CASE + WHEN AD_TYP IS NULL THEN '' + WHEN AD_TYP = 'T' AND AD_PYTYPE IN ('1','2') THEN '1' + WHEN AD_TYP = 'T' AND AD_PYTYPE NOT IN ('1','2') THEN '2' + ELSE '0' END AS MC_PYTYPE_CTI_HB, + MC_DATECR, + MC_HONUM, + MC_MANUMDOS, + ''::text AS MC_SEANCE, + MC_NUMFAC_LET, + MC_TYPE, + CASE WHEN MC_SENS = 'C' THEN MC_MON ELSE 0-MC_MON END AS MC_MON_REG, + MC_EXER*100000000000000+MC_NUM*10000000+MC_LIGNE AS MC_KEY, + ''::text AS MC_FACNUM_CTI, + '0'::text AS MC_OK + FROM prod_cerner.MOUV_COMPTA + LEFT JOIN prod_cerner.FACTURE ON MC_NUMFAC_LET = FAC_NUM + LEFT JOIN prod_cerner.ADRESSE ON MC_MANUMDOS = AD_MANUMDOS AND + FAC_ADCPT = AD_CPT + WHERE MC_JRN <> 'JV' AND + MC_HONUM <> 0 AND + (MC_COMPTE LIKE '411%' OR MC_COMPTE LIKE '412%' OR MC_COMPTE LIKE '413%' OR MC_COMPTE LIKE '414%' OR MC_COMPTE LIKE '452%' OR MC_COMPTE LIKE '467%') AND + MC_HONUM IN (SELECT HO_NUM FROM w_HOSPITALISATION_SELECT) + ; + + UPDATE w_MOUV_COMPTA_REG + SET MC_PYTYPE_CTI_HB = subview.MC_PYTYPE_CTI_HB + FROM + ( + SELECT MC_COMPTE_racine, + (MAX(ARRAY[to_char(nb,'FM000000000000'),MC_PYTYPE_CTI_HB]))[2] AS MC_PYTYPE_CTI_HB + FROM + ( + SELECT + substr(MC_COMPTE,1,4) AS MC_COMPTE_racine, MC_PYTYPE_CTI_HB, count(*) AS nb + FROM w_MOUV_COMPTA_REG + WHERE MC_PYTYPE_CTI_HB <> '' + GROUP BY 1,2 + ORDER BY 1,2 + ) subview + GROUP BY 1 + ) subview + WHERE substr(w_MOUV_COMPTA_REG.MC_COMPTE,1,4) = MC_COMPTE_racine AND + w_MOUV_COMPTA_REG.MC_PYTYPE_CTI_HB = '' + ; + + -- Ne pas tenir compte des règlements qui s'annulent + DELETE FROM w_MOUV_COMPTA_REG + USING + ( + SELECT MC_HONUM, MC_NUMT, MC_DATECR, SUM(MC_MON_REG) + FROM w_MOUV_COMPTA_REG + GROUP BY 1,2,3 + HAVING SUM(MC_MON_REG) = 0 + ) subview + WHERE w_MOUV_COMPTA_REG.MC_HONUM = subview.MC_HONUM AND + w_MOUV_COMPTA_REG.MC_NUMT = subview.MC_NUMT AND + w_MOUV_COMPTA_REG.MC_DATECR = subview.MC_DATECR + ; + + + -- Ne pas tenir compte des règlements qui s'annulent (n° facture) + DELETE FROM w_MOUV_COMPTA_REG + USING + ( + SELECT MC_HONUM, MC_NUMFAC_LET, MC_DATECR, SUM(MC_MON_REG) + FROM w_MOUV_COMPTA_REG + GROUP BY 1,2,3 + HAVING SUM(MC_MON_REG) = 0 + ) subview + WHERE w_MOUV_COMPTA_REG.MC_HONUM = subview.MC_HONUM AND + w_MOUV_COMPTA_REG.MC_NUMFAC_LET = subview.MC_NUMFAC_LET AND + w_MOUV_COMPTA_REG.MC_DATECR = subview.MC_DATECR + ; + + + -- Lettrage des factures. Cas d'une seule facture réglée par séjour + UPDATE w_MOUV_COMPTA_REG + SET MC_NUMFAC_LET = subview.MC_NUMFAC_LET + FROM + ( + SELECT MC_HONUM, MAX(MC_NUMFAC_LET) AS MC_NUMFAC_LET + FROM w_MOUV_COMPTA_REG + WHERE MC_NUMT <> 0 + GROUP BY 1 + HAVING count(DISTINCT CASE WHEN MC_NUMFAC_LET > 0 THEN MC_NUMFAC_LET ELSE NULL END) = 1 AND + MAX(MC_NUMFAC_LET) > 0 AND MIN(MC_NUMFAC_LET) = 0 + ) subview + WHERE w_MOUV_COMPTA_REG.MC_HONUM = subview.MC_HONUM AND + w_MOUV_COMPTA_REG.MC_NUMFAC_LET = 0 + ; + + -- Lettrage des factures. Cas d'une seule facture réglée par pièce + UPDATE w_MOUV_COMPTA_REG + SET MC_NUMFAC_LET = subview.MC_NUMFAC_LET + FROM + ( + SELECT MC_HONUM, MC_NUMT, MAX(MC_NUMFAC_LET) AS MC_NUMFAC_LET + FROM w_MOUV_COMPTA_REG + WHERE MC_NUMT <> 0 + GROUP BY 1,2 + HAVING count(DISTINCT CASE WHEN MC_NUMFAC_LET > 0 THEN MC_NUMFAC_LET ELSE NULL END) = 1 AND + MAX(MC_NUMFAC_LET) > 0 AND MIN(MC_NUMFAC_LET) = 0 + ) subview + WHERE w_MOUV_COMPTA_REG.MC_HONUM = subview.MC_HONUM AND + w_MOUV_COMPTA_REG.MC_NUMFAC_LET = 0 + ; + + + -- Lettrage des factures. Cas d'une facture seule pour un montant réglé (plusieurs passages) + DROP TABLE IF EXISTS w_FACTURE_LET; + CREATE TEMP TABLE w_FACTURE_LET ( + FAC_HONUM numeric, + FAC_REGL numeric, + FAC_DATE date, + FAC_NUM numeric, + FAC_nb numeric + ) + ; + + DROP TABLE IF EXISTS w_MOUV_COMPTA_LET; + CREATE TEMP TABLE w_MOUV_COMPTA_LET ( + MC_HONUM numeric, + MC_MON_REG numeric, + MC_DATECR date, + MC_nb numeric, + MC_KEY numeric + ) + ; + + + SELECT base.cti_execute( + 'TRUNCATE w_FACTURE_LET + ., + INSERT INTO w_FACTURE_LET + SELECT FAC_HONUM, FAC_REGL, MIN(date(FAC_DATE)) AS FAC_DATE, (MIN(ARRAY[FAC_DATE::text,FAC_NUM::text]))[2]::numeric AS FAC_NUM, count(*) AS FAC_nb + FROM prod_cerner.FACTURE + WHERE FAC_INV = 0 AND + FAC_HONUM IN + (SELECT MC_HONUM FROM w_MOUV_COMPTA_REG WHERE MC_NUMFAC_LET = 0) AND + FAC_NUM NOT IN (SELECT MC_NUMFAC_LET FROM w_MOUV_COMPTA_REG WHERE MC_NUMFAC_LET <> 0) + GROUP BY 1,2 + ., + + TRUNCATE w_MOUV_COMPTA_LET + ., + INSERT INTO w_MOUV_COMPTA_LET + SELECT MC_HONUM, MC_MON_REG, DATE(min(MC_DATECR)) AS MC_DATECR, count(*) AS MC_nb, + MIN(MC_KEY) AS MC_KEY + FROM w_MOUV_COMPTA_REG + WHERE MC_NUMFAC_LET = 0 + GROUP BY 1,2 + ., + + UPDATE w_MOUV_COMPTA_REG + SET MC_NUMFAC_LET = subview.FAC_NUM + FROM + ( + SELECT w_MOUV_COMPTA_LET.MC_KEY, w_FACTURE_LET.FAC_NUM + FROM w_MOUV_COMPTA_LET + JOIN w_FACTURE_LET ON w_MOUV_COMPTA_LET.MC_HONUM = w_FACTURE_LET.FAC_HONUM AND + w_MOUV_COMPTA_LET.MC_MON_REG = w_FACTURE_LET.FAC_REGL AND + (FAC_DATE <= MC_DATECR OR FAC_nb = MC_nb) + ) subview + WHERE w_MOUV_COMPTA_REG.MC_KEY = subview.MC_KEY + ',100) + ; + + + DROP TABLE IF EXISTS w_MOUV_COMPTA_LET; + CREATE TEMP TABLE w_MOUV_COMPTA_LET AS + SELECT MC_HONUM, MC_NUMFAC_LET, SUM(MC_MON_REG) AS MC_MON_REG + FROM w_MOUV_COMPTA_REG + WHERE MC_NUMFAC_LET <> 0 + GROUP BY 1,2 + ; + + + UPDATE w_MOUV_COMPTA_REG + SET MC_NUMFAC_LET = subview.MC_NUMFAC_LET + FROM + ( + SELECT w_MOUV_COMPTA_LET.MC_HONUM, w_MOUV_COMPTA_LET.MC_NUMFAC_LET, FAC_REGL, + w_MOUV_COMPTA_LET.MC_MON_REG, + w_MOUV_COMPTA_REG.MC_MON_REG, + w_MOUV_COMPTA_REG.MC_KEY + FROM w_MOUV_COMPTA_LET + JOIN prod_cerner.FACTURE ON FAC_HONUM = MC_HONUM AND + FAC_NUM = MC_NUMFAC_LET + JOIN w_MOUV_COMPTA_REG ON w_MOUV_COMPTA_REG.MC_HONUM = w_MOUV_COMPTA_LET.MC_HONUM AND w_MOUV_COMPTA_REG.MC_NUMFAC_LET = 0 + WHERE FAC_REGL <> w_MOUV_COMPTA_LET.MC_MON_REG AND + w_MOUV_COMPTA_LET.MC_MON_REG + w_MOUV_COMPTA_REG.MC_MON_REG = FAC_REGL + ) subview + WHERE w_MOUV_COMPTA_REG.MC_KEY = subview.MC_KEY + ; + + + -- Lettrage des factures. Cas d'une facture seule pour un montant réglé (plusieurs passages) + DROP TABLE IF EXISTS w_FACTURE_LET; + CREATE TEMP TABLE w_FACTURE_LET ( + FAC_HONUM numeric, + FAC_REGL numeric, + FAC_DATE date, + FAC_NUM numeric, + FAC_nb numeric + ) + ; + + DROP TABLE IF EXISTS w_MOUV_COMPTA_LET; + CREATE TEMP TABLE w_MOUV_COMPTA_LET ( + MC_HONUM numeric, + MC_MON_REG numeric, + MC_DATECR date, + MC_nb numeric, + MC_KEY numeric + ) + ; + + + SELECT base.cti_execute( + 'TRUNCATE w_FACTURE_LET + ., + INSERT INTO w_FACTURE_LET + SELECT FAC_HONUM, FAC_REGL, MIN(date(FAC_DATE)) AS FAC_DATE, (MIN(ARRAY[FAC_DATE::text,FAC_NUM::text]))[2]::numeric AS FAC_NUM, count(*) AS FAC_nb + FROM prod_cerner.FACTURE + WHERE FAC_INV = 0 AND + FAC_HONUM IN + (SELECT MC_HONUM FROM w_MOUV_COMPTA_REG WHERE MC_NUMFAC_LET = 0) AND + FAC_NUM NOT IN (SELECT MC_NUMFAC_LET FROM w_MOUV_COMPTA_REG WHERE MC_NUMFAC_LET <> 0) + GROUP BY 1,2 + ., + + TRUNCATE w_MOUV_COMPTA_LET + ., + INSERT INTO w_MOUV_COMPTA_LET + SELECT MC_HONUM, MC_MON_REG, DATE(min(MC_DATECR)) AS MC_DATECR, count(*) AS MC_nb, + MIN(MC_KEY) AS MC_KEY + FROM w_MOUV_COMPTA_REG + WHERE MC_NUMFAC_LET = 0 + GROUP BY 1,2 + ., + + UPDATE w_MOUV_COMPTA_REG + SET MC_NUMFAC_LET = subview.FAC_NUM + FROM + ( + SELECT w_MOUV_COMPTA_LET.MC_KEY, w_FACTURE_LET.FAC_NUM + FROM w_MOUV_COMPTA_LET + JOIN w_FACTURE_LET ON w_MOUV_COMPTA_LET.MC_HONUM = w_FACTURE_LET.FAC_HONUM AND + w_MOUV_COMPTA_LET.MC_MON_REG = w_FACTURE_LET.FAC_REGL + ) subview + WHERE w_MOUV_COMPTA_REG.MC_KEY = subview.MC_KEY + ',100) + ; + + + SELECT base.cti_execute( + 'TRUNCATE w_FACTURE_LET + ., + INSERT INTO w_FACTURE_LET + SELECT FAC_HONUM, FAC_MONT AS FAC_REGL, MIN(date(FAC_DATE)) AS FAC_DATE, (MIN(ARRAY[FAC_DATE::text,FAC_NUM::text]))[2]::numeric AS FAC_NUM, count(*) AS FAC_nb + FROM prod_cerner.FACTURE + WHERE FAC_INV = 0 AND + FAC_REGL = 0 AND + FAC_HONUM IN + (SELECT MC_HONUM FROM w_MOUV_COMPTA_REG WHERE MC_NUMFAC_LET = 0) AND + FAC_NUM NOT IN (SELECT MC_NUMFAC_LET FROM w_MOUV_COMPTA_REG WHERE MC_NUMFAC_LET <> 0) + GROUP BY 1,2 + ., + + TRUNCATE w_MOUV_COMPTA_LET + ., + INSERT INTO w_MOUV_COMPTA_LET + SELECT MC_HONUM, MC_MON_REG, DATE(min(MC_DATECR)) AS MC_DATECR, count(*) AS MC_nb, + MIN(MC_KEY) AS MC_KEY + FROM w_MOUV_COMPTA_REG + WHERE MC_NUMFAC_LET = 0 + GROUP BY 1,2 + ., + + UPDATE w_MOUV_COMPTA_REG + SET MC_NUMFAC_LET = subview.FAC_NUM + FROM + ( + SELECT w_MOUV_COMPTA_LET.MC_KEY, w_FACTURE_LET.FAC_NUM + FROM w_MOUV_COMPTA_LET + JOIN w_FACTURE_LET ON w_MOUV_COMPTA_LET.MC_HONUM = w_FACTURE_LET.FAC_HONUM AND + w_MOUV_COMPTA_LET.MC_MON_REG = w_FACTURE_LET.FAC_REGL AND + (FAC_DATE <= MC_DATECR OR FAC_nb = MC_nb) + ) subview + WHERE w_MOUV_COMPTA_REG.MC_KEY = subview.MC_KEY + ',100) + ; + + + -- Lettrage des factures. Affectation facture CTI (facture + passage) mono facture + DROP TABLE IF EXISTS w_FACTURE_reg; + CREATE TEMP TABLE w_FACTURE_reg AS + SELECT FAC_NUM, + COUNT(DISTINCT FAC_NUM_CTI), + COUNT(DISTINCT FAC_NUM_CTI) AS nb, + (MAX(ARRAY[FAC_DATE::text,FAC_NUM_CTI]))[2] AS FAC_NUM_CTI_LAST, + SUM(FAC_MONT_0 + FAC_MONT_1 + FAC_MONT_2) AS FAC_MONT_HBG + FROM w_FACTURE + GROUP BY 1 + ; + + + UPDATE w_MOUV_COMPTA_REG + SET MC_FACNUM_CTI = FAC_NUM_CTI_LAST, + MC_OK = '1' + FROM w_FACTURE_reg + WHERE w_MOUV_COMPTA_REG.MC_NUMFAC_LET = w_FACTURE_reg.FAC_NUM AND + nb = 1 + ; + + -- Lettrage des factures. Affectation facture CTI (facture + passage) plusieurs factures sur total identique + INSERT INTO w_MOUV_COMPTA_REG + SELECT + MC_EXER, + MC_NUM, + MC_NUMT, + MC_LIGNE, + MC_COMPTE, + MC_PYTYPE_CTI_HB, + MC_DATECR, + MC_HONUM, + MC_MANUMDOS, + MC_SEANCE, + MC_NUMFAC_LET, + MC_TYPE, + FAC_MONT_0 + FAC_MONT_1 + FAC_MONT_2 AS MC_MON_REG, + MC_KEY, + w_FACTURE.FAC_NUM_CTI AS MC_FACNUM_CTI, + '1'::text AS MC_OK + FROM w_MOUV_COMPTA_REG + JOIN w_FACTURE_reg ON w_MOUV_COMPTA_REG.MC_NUMFAC_LET = w_FACTURE_reg.FAC_NUM + JOIN w_FACTURE ON w_MOUV_COMPTA_REG.MC_NUMFAC_LET = w_FACTURE.FAC_NUM + WHERE + MC_OK = '0' AND + nb > 1 AND + MC_MON_REG = FAC_MONT_HBG + ; + + DELETE FROM w_MOUV_COMPTA_REG + WHERE MC_OK = '0' AND + MC_KEY IN (SELECT MC_KEY FROM w_MOUV_COMPTA_REG WHERE MC_OK = '1') + ; + + -- Lettrage des factures. Affectation facture CTI (facture + passage) plusieurs factures sur total identique inversé (remboursement) + INSERT INTO w_MOUV_COMPTA_REG + SELECT + MC_EXER, + MC_NUM, + MC_NUMT, + MC_LIGNE, + MC_COMPTE, + MC_PYTYPE_CTI_HB, + MC_DATECR, + MC_HONUM, + MC_MANUMDOS, + MC_SEANCE, + MC_NUMFAC_LET, + MC_TYPE, + 0 - (FAC_MONT_0 + FAC_MONT_1 + FAC_MONT_2) AS MC_MON_REG, + MC_KEY, + w_FACTURE.FAC_NUM_CTI AS MC_FACNUM_CTI, + '1'::text AS MC_OK + FROM w_MOUV_COMPTA_REG + JOIN w_FACTURE_reg ON w_MOUV_COMPTA_REG.MC_NUMFAC_LET = w_FACTURE_reg.FAC_NUM + JOIN w_FACTURE ON w_MOUV_COMPTA_REG.MC_NUMFAC_LET = w_FACTURE.FAC_NUM + WHERE + MC_OK = '0' AND + nb > 1 AND + MC_MON_REG = 0-FAC_MONT_HBG + ; + + DELETE FROM w_MOUV_COMPTA_REG + WHERE MC_OK = '0' AND + MC_KEY IN (SELECT MC_KEY FROM w_MOUV_COMPTA_REG WHERE MC_OK = '1') + ; + + -- Création des factures fictives CTI sur règlements non lettrés + UPDATE w_MOUV_COMPTA_REG + SET MC_FACNUM_CTI = + CASE WHEN MC_NUMFAC_LET <> 0 THEN MC_NUMFAC_LET ELSE MC_HONUM END::text || '.' || 'RG', + MC_OK = '1' + WHERE MC_OK = '0' + ; + + UPDATE w_MOUV_COMPTA_REG + SET MC_SEANCE = subview.HO_SEANCE + FROM + ( + SELECT MC_KEY, MAX(w_HOSPITALISATION_SELECT_HONUM.HO_SEANCE) AS HO_SEANCE + FROM w_MOUV_COMPTA_REG + LEFT JOIN w_HOSPITALISATION_SELECT ON MC_HONUM = w_HOSPITALISATION_SELECT.HO_NUM AND + MC_SEANCE = w_HOSPITALISATION_SELECT.HO_SEANCE + JOIN w_HOSPITALISATION_SELECT w_HOSPITALISATION_SELECT_HONUM ON MC_HONUM = w_HOSPITALISATION_SELECT_HONUM.HO_NUM + WHERE MC_FACNUM_CTI LIKE '%.RG' AND + w_HOSPITALISATION_SELECT.HO_NUM IS NULL + GROUP BY 1 + ) subview + WHERE w_MOUV_COMPTA_REG.MC_KEY = subview.MC_KEY + ; + + + INSERT INTO w_FACTURE + SELECT + MC_FACNUM_CTI, + MC_NUMFAC_LET AS FAC_NUM, + MC_HONUM AS HONUM, + COALESCE(HO_MANUMDOS,MC_MANUMDOS,0), + 0::numeric AS FAC_ADCPT_BG, + '' AS FAC_PYTYPE_CTI_BG, + '' AS FAC_PYCODE_CTI_BG, + 0::numeric AS FAC_ADCPT_HB, + MAX(MC_PYTYPE_CTI_HB) AS FAC_PYTYPE_CTI_HB, + '' AS FAC_PYCODE_CTI_HB, + MIN(MC_DATECR) AS FAC_DATE, + MIN(MC_EXER) AS FAC_EXER, + MIN(MC_DATECR) AS FAC_DATE_VENT, + MIN(HO_DDEB) AS FAC_DDEB, + MAX(HO_DFIN) AS FAC_DFIN, + 0::numeric AS FAC_MONT, + 0::numeric AS FAC_MONT_0, + 0::numeric AS FAC_MONT_1, + 0::numeric AS FAC_MONT_2, + 0::numeric AS FAC_MONT_BG_1, + 0::numeric AS FAC_REGL, + 0::numeric AS FAC_REGL_0, + 0::numeric AS FAC_REGL_1, + 0::numeric AS FAC_REGL_2, + 0::numeric AS FAC_ETAT, + 0::numeric AS FAC_COMM, + 0::numeric AS FAC_INV, + ''::text AS FAC_ETAB, + 0::numeric AS FAC_BORD, + '20991231' AS FAC_DATE_LOT, + MAX(MC_SEANCE) AS FAC_SEANCE, + NULL::text[] AS FAC_SEANCE_array, + 0 + FROM w_MOUV_COMPTA_REG + LEFT JOIN prod_cerner.HOSPITALISATION ON MC_HONUM = HO_NUM + WHERE MC_FACNUM_CTI LIKE '%.RG' + GROUP BY 1,2,3,4 + ; + + + UPDATE w_FACTURE SET + FAC_REGL = MC_MON_REG, + FAC_REGL_0 = CASE WHEN FAC_PYTYPE_CTI_HB = '0' THEN MC_MON_REG ELSE 0 END, + FAC_REGL_1 = CASE WHEN FAC_PYTYPE_CTI_HB = '1' THEN MC_MON_REG ELSE 0 END, + FAC_REGL_2 = CASE WHEN FAC_PYTYPE_CTI_HB = '2' THEN MC_MON_REG ELSE 0 END + FROM + ( + SELECT MC_FACNUM_CTI, SUM(MC_MON_REG) AS MC_MON_REG + FROM w_MOUV_COMPTA_REG + GROUP BY 1 + ) subview + WHERE w_FACTURE.FAC_NUM_CTI = MC_FACNUM_CTI AND + ( + FAC_REGL <> MC_MON_REG OR + FAC_REGL_0 <> CASE WHEN FAC_PYTYPE_CTI_HB = '0' THEN MC_MON_REG ELSE 0 END OR + FAC_REGL_1 <> CASE WHEN FAC_PYTYPE_CTI_HB = '1' THEN MC_MON_REG ELSE 0 END OR + FAC_REGL_2 <> CASE WHEN FAC_PYTYPE_CTI_HB = '2' THEN MC_MON_REG ELSE 0 END + ) + ; + + + UPDATE w_FACTURE + SET FAC_REGL = FAC_REGL_0+FAC_REGL_1+FAC_REGL_2 + WHERE FAC_REGL <> FAC_REGL_0+FAC_REGL_1+FAC_REGL_2 + ; + + + + + + + -- Préparation factures CTI + DROP TABLE IF EXISTS w_factures; + CREATE TEMP TABLE w_factures AS + SELECT + FAC_NUM, + FAC_SEANCE, + nextval('activite[PX].s_factures'::regclass) AS oid, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour, + FAC_NUM_CTI AS no_facture, + FAC_NUM_CTI AS no_facture_reference, + 0::bigint AS facture_reference_id, + ''::text AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id, + FAC_DDEB AS date_debut, + FAC_DFIN AS date_fin, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id, + p_sejours.code_cp_demandee, + CASE WHEN FAC_NUM_CTI LIKE '%.RG' THEN '9' WHEN FAC_MONT < 0 THEN '1' ELSE '0' END AS type_facture, + CASE WHEN FAC_MONT < 0 THEN 1 ELSE 0 END AS nb_rejets, + '1' AS code_facture, + date(FAC_DATE) AS date_facture, + '1' AS code_vente, + to_char(FAC_DATE_VENT,'YYYYMM')::numeric AS mois_vente, + date(FAC_DATE_VENT) AS date_vente, + '' AS code_cloture, + + '' AS particularite_t2a, + + + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + FAC_MONT AS montant_facture_c, + 0::numeric AS montant_facture_h, + FAC_MONT_0 AS montant_facture_0_c, + 0::numeric AS montant_facture_0_h, + FAC_MONT_1 + FAC_MONT_BG_1 AS montant_facture_1_c, + 0::numeric AS montant_facture_1_h, + FAC_MONT_2 AS montant_facture_2_c, + 0::numeric AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + FAC_MONT_0 + FAC_MONT_1 + FAC_MONT_2 AS montant_comptabilise_c, + 0::numeric AS montant_comptabilise_h, + FAC_MONT_0 AS montant_comptabilise_0_c, + 0::numeric AS montant_comptabilise_0_h, + FAC_MONT_1 AS montant_comptabilise_1_c, + 0::numeric AS montant_comptabilise_1_h, + FAC_MONT_2 AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + FAC_MONT_BG_1 AS montant_comptabilise_budget_global_c, + FAC_REGL AS montant_regle_c, + 0::numeric AS montant_regle_h, + FAC_REGL_0 AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + FAC_REGL_1 AS montant_regle_1_c, + 0::numeric AS montant_regle_1_h, + FAC_REGL_2 AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + CASE WHEN FAC_PYTYPE_CTI_HB = '0' AND FAC_BORD > 0 THEN '1' ELSE '0' END AS code_expedie_0, + CASE WHEN (FAC_PYTYPE_CTI_HB = '1' OR FAC_PYTYPE_CTI_HB = '1') AND FAC_BORD > 0 THEN '1' ELSE '0' END AS code_expedie_1, + CASE WHEN FAC_PYTYPE_CTI_HB = '2' AND FAC_BORD > 0 THEN '1' ELSE '0' END AS code_expedie_2, + '0' AS code_expedie_22, + CASE WHEN FAC_DATE_LOT IS NOT NULL THEN date(FAC_DATE_LOT) ELSE '20991231' END date_expedition, + CASE WHEN FAC_PYTYPE_CTI_HB = '0' AND FAC_DATE_LOT IS NOT NULL THEN date(FAC_DATE_LOT) ELSE '20991231' END AS date_expedition_0, + CASE WHEN (FAC_PYTYPE_CTI_HB = '1' OR FAC_PYTYPE_CTI_HB = '1') AND FAC_DATE_LOT IS NOT NULL THEN date(FAC_DATE_LOT) ELSE '20991231' END AS date_expedition_1, + CASE WHEN FAC_PYTYPE_CTI_HB = '2' AND FAC_DATE_LOT IS NOT NULL THEN date(FAC_DATE_LOT) ELSE '20991231' END AS date_expedition_2, + '20991231'::date AS date_expedition_22, + CASE WHEN FAC_PYTYPE_CTI_HB = '0' AND FAC_BORD > 0 THEN FAC_BORD::text ELSE '' END AS no_bordereau_0, + CASE WHEN (FAC_PYTYPE_CTI_HB = '1' OR FAC_PYTYPE_CTI_HB = '1') AND FAC_BORD > 0 THEN FAC_BORD::text ELSE '' END AS no_bordereau_1, + CASE WHEN FAC_PYTYPE_CTI_HB = '2' AND FAC_BORD > 0 THEN FAC_BORD::text ELSE '' END AS no_bordereau_2, + ''::text AS no_bordereau_22, + '0001-01-01'::date AS date_solde, + '0001-01-01'::date AS date_solde_c, + '0001-01-01'::date AS date_solde_h, + '0001-01-01'::date AS date_solde_0_c, + '0001-01-01'::date AS date_solde_0_h, + '0001-01-01'::date AS date_solde_1_c, + '0001-01-01'::date AS date_solde_1_h, + '0001-01-01'::date AS date_solde_2_c, + '0001-01-01'::date AS date_solde_2_h, + '0001-01-01'::date AS date_solde_22_c, + '0001-01-01'::date AS date_solde_22_h + + FROM w_FACTURE + JOIN w_HOSPITALISATION_SELECT ON + FAC_HONUM = HO_NUM AND + FAC_SEANCE = HO_SEANCE + JOIN activite[PX].p_sejours ON w_HOSPITALISATION_SELECT.sejour_id = p_sejours.oid + + ; + + CREATE INDEX w_factures_i1 + ON w_factures + USING btree + (no_facture); + + CREATE INDEX w_factures_FAC_NUM + ON w_factures + USING btree + (FAC_NUM); + + CREATE INDEX w_factures_FAC_SEANCE + ON w_factures + USING btree + (FAC_SEANCE); + + + + UPDATE w_factures + SET facture_od_avoir_id = w_factures_od_avoir.oid + FROM w_factures w_factures_od_avoir + WHERE w_factures.no_facture_od_avoir = w_factures_od_avoir.no_facture + ; + + UPDATE w_factures + SET type_facture = 'X' + WHERE w_factures.no_facture_od_avoir <> '0' AND + w_factures.no_facture_od_avoir <> '' AND + w_factures.type_facture = '0' + ; + + UPDATE w_factures + SET no_facture_reference = subview.no_facture_reference + FROM + (SELECT sejour_id, + (MAX(ARRAY[date_facture::text,no_facture]))[2] AS no_facture_reference + FROM w_factures + WHERE type_facture = '0' + GROUP BY 1 + ) subview + WHERE w_factures.sejour_id = subview.sejour_id AND + w_factures.no_facture_reference <> subview.no_facture_reference + ; + + UPDATE w_factures + SET facture_reference_id = w_factures_reference.oid + FROM w_factures w_factures_reference + WHERE w_factures.no_facture_reference = w_factures_reference.no_facture + ; + +truncate activite[PX].p_factures; + + SELECT base.cti_disable_index('activite', 'i_factures_3'); + SELECT base.cti_disable_index('activite', 'i_factures_4'); + SELECT base.cti_disable_index('activite', 'i_factures_5'); + SELECT base.cti_disable_index('activite', 'i_factures_6'); + SELECT base.cti_disable_index('activite', 'i_factures_7'); + SELECT base.cti_disable_index('activite', 'i_factures_8'); + SELECT base.cti_disable_index('activite', 'i_factures_9'); + SELECT base.cti_disable_index('activite', 'i_factures_10'); + SELECT base.cti_disable_index('activite', 'i_factures_11'); + SELECT base.cti_disable_index('activite', 'i_factures_12'); + SELECT base.cti_disable_index('activite', 'i_factures_13'); + SELECT base.cti_disable_index('activite', 'i_factures_14'); + + + INSERT INTO activite[PX].p_factures ( + oid, + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + type_facture, + nb_rejets, + code_facture, + date_facture, + code_vente, + mois_vente, + date_vente, + code_cloture, + + particularite_t2a, + + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_comptabilise_budget_global_c, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h + + + ) + + SELECT + oid, + sejour_id, + no_sejour, + no_facture, + w_factures.no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + type_facture, + nb_rejets, + code_facture, + date_facture, + code_vente, + mois_vente, + date_vente, + code_cloture, + + particularite_t2a, + + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_comptabilise_budget_global_c, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + CASE WHEN date_expedition <> '00010101' THEN date_expedition ELSE '20991231' END, + CASE WHEN date_expedition_0 <> '00010101' THEN date_expedition_0 ELSE '20991231' END, + CASE WHEN date_expedition_1 <> '00010101' THEN date_expedition_1 ELSE '20991231' END, + CASE WHEN date_expedition_2 <> '00010101' THEN date_expedition_2 ELSE '20991231' END, + CASE WHEN date_expedition_22 <> '00010101' THEN date_expedition_22 ELSE '20991231' END, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + + CASE WHEN date_solde <> '00010101' THEN date_solde ELSE '20991231' END, + CASE WHEN date_solde_c <> '00010101' THEN date_solde_c ELSE '20991231' END, + CASE WHEN date_solde_h <> '00010101' THEN date_solde_h ELSE '20991231' END, + CASE WHEN date_solde_0_c <> '00010101' THEN date_solde_0_c ELSE '20991231' END, + CASE WHEN date_solde_0_h <> '00010101' THEN date_solde_0_h ELSE '20991231' END, + CASE WHEN date_solde_1_c <> '00010101' THEN date_solde_1_c ELSE '20991231' END, + CASE WHEN date_solde_1_h <> '00010101' THEN date_solde_1_h ELSE '20991231' END, + CASE WHEN date_solde_2_c <> '00010101' THEN date_solde_2_c ELSE '20991231' END, + CASE WHEN date_solde_2_h <> '00010101' THEN date_solde_2_h ELSE '20991231' END, + CASE WHEN date_solde_22_c <> '00010101' THEN date_solde_22_c ELSE '20991231' END, + CASE WHEN date_solde_22_h <> '00010101' THEN date_solde_22_h ELSE '20991231' END + + FROM w_factures + ; + + SELECT base.cti_enable_index('activite', 'i_factures_3'); + SELECT base.cti_enable_index('activite', 'i_factures_4'); + SELECT base.cti_enable_index('activite', 'i_factures_5'); + SELECT base.cti_enable_index('activite', 'i_factures_6'); + SELECT base.cti_enable_index('activite', 'i_factures_7'); + SELECT base.cti_enable_index('activite', 'i_factures_8'); + SELECT base.cti_enable_index('activite', 'i_factures_9'); + SELECT base.cti_enable_index('activite', 'i_factures_10'); + SELECT base.cti_enable_index('activite', 'i_factures_11'); + SELECT base.cti_enable_index('activite', 'i_factures_12'); + SELECT base.cti_enable_index('activite', 'i_factures_13'); + SELECT base.cti_enable_index('activite', 'i_factures_14'); + + + -- Séjours sans facture + + DROP TABLE IF EXISTS w_factures_trous; + CREATE TEMP TABLE w_factures_trous AS + SELECT + p_sejours.finess, + p_sejours.no_sejour, + p_sejours.date_entree, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.code_cp_demandee, + COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire, + p_sejours.code_sorti, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie, + MAX(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END) AS date_fin_facture, + date(MAX(COALESCE(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours + FROM activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND no_facture NOT LIKE 'E%' + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE p_sejours.etat = '' AND p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND date_entree <= now() AND p_sejours.type_sejour <> '6' AND p_sejours.type_sejour <> '9' AND code_prevu <> 1 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11; + + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee, + date_debut, + date_fin) + SELECT finess, + no_sejour, + no_sejour || '.00' || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + no_sejour || '.00' || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee , + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12; + + + UPDATE activite[PX].p_factures SET + date_debut = date_entree, + date_fin = CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid AND + avec_facturation_intermediaire IS DISTINCT FROM '1' + WHERE p_factures.no_sejour = p_sejours.no_sejour AND + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END - date_entree < 30 AND + ( + p_factures.date_debut <> date_entree OR + p_factures.date_fin <> CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + ); + + ]]> + + + + + + + + 1 or nb_prestation < -1 OR + (prestation_code = 'GHS' AND date(date_sortie) - date(date_entree) > 1)) + ) ; + + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM w_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture AND + w_factures_lignes_sup_c.prestation_code = 'GHS'; + + CREATE INDEX w_factures_lignes_sup_c_i1 + ON w_factures_lignes_sup_c + USING btree + (date_debut); + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + sequence, + no_sejour, + facture_id, + no_facture, + date_vente, + + + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + prestation_code, + prestation_type_ventilation_jour, + compte_produit_id, + lieu_id, + origine_facturation_id, + + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + + date AS date_debut, + date AS date_fin, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + round(montant_facture / ABS(nb_det),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22, + round(montant_comptabilise / ABS(nb_det),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_det),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_det),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_det),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_det),2) AS montant_comptabilise_22, + round(montant_comptabilise_budget_global_1 / ABS(nb_det),2) AS montant_comptabilise_budget_global_1, + rubrique_facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_det AND date_fin_det + ; + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT sequence, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + + UPDATE w_factures_lignes_c + SET + date_fin = w_factures_lignes_c.date_debut, + nb_rubrique = w_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_sup_tot.nb_rubrique, + nb_prestation = w_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_sup_tot.nb_prestation, + montant_facture = w_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = w_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = w_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = w_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = w_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = w_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = w_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = w_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = w_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = w_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22, + montant_comptabilise_budget_global_1 = w_factures_lignes_c.montant_comptabilise_budget_global_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup_tot + WHERE w_factures_lignes_c.sequence = w_factures_lignes_sup_c_sup_tot.sequence; + + + + -- Ajout des lignes + INSERT INTO w_factures_lignes_c( + sequence, + no_sejour, + facture_id, + no_facture, + date_vente, + + + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + prestation_code, + prestation_type_ventilation_jour, + compte_produit_id, + lieu_id, + origine_facturation_id, + + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_comptabilise_budget_global_1, + rubrique_facture_id) + SELECT + sequence, + no_sejour, + facture_id, + no_facture, + date_vente, + + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + prestation_code, + prestation_type_ventilation_jour, + compte_produit_id, + lieu_id, + origine_facturation_id, + + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_comptabilise_budget_global_1, + rubrique_facture_id + FROM w_factures_lignes_sup_c_sup; + + + + -- Lieu exécution + + + UPDATE w_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_mouvements_sejour + WHERE + w_factures_lignes_c.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_lignes_c.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + w_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id AND + nb_externes <> 1; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_c'); + + + + + -- Validation des lignes de facture + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_1'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_2'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_3'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_4'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_5'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_6'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_7'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_8'); + + INSERT INTO activite[PX].p_factures_lignes_c ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1, + origine_facturation_id + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1, + origine_facturation_id + FROM w_factures_lignes_c + WHERE montant_facture <> 0; + + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_8'); + + + + ]]> + + + + + + 0 AND date_part('year',p_factures.date_facture) = date_part('year',p_sejours.date_sortie) THEN Array[to_char(p_sejour_pmsi.sejour_id,'FM000000000000'),p_factures.no_facture] ELSE NULL END))[2]::text AS no_facture_budget_global, + (MAX(CASE WHEN p_factures.montant_facture_c > 0 AND date_part('year',p_factures.date_facture) = date_part('year',p_sejours.date_sortie) THEN Array[to_char(p_sejour_pmsi.sejour_id,'FM000000000000'),p_factures.no_facture] ELSE NULL END))[2]::text AS no_facture_hors_budget_global, + (MAX(Array[p_sejour_pmsi.sejour_id,p_sejours.lieu_sortie_id]))[2] AS lieu_sortie_id + FROM activite[PX].p_sejour_pmsi + JOIN activite[PX].p_sejours ON p_sejour_pmsi.sejour_id = p_sejours.oid + LEFT JOIN activite[PX].p_factures ON p_factures.no_sejour = p_sejours.no_sejour + WHERE + p_sejour_pmsi.sejour_id IS NOT NULL AND + p_sejour_pmsi.sejour_id <> 0 AND + p_sejour_pmsi.rss_id <> 0 + GROUP BY 1; + + -- Suppression des lignes issues de la facturation + DELETE FROM activite[PX].p_factures_lignes_c + WHERE montant_comptabilise_budget_global_1 <> 0 AND + no_facture IN + (SELECT no_facture + FROM activite[PX].p_factures + JOIN w_sejours_budget_global ON p_factures.no_sejour = w_sejours_budget_global.no_sejour AND w_sejours_budget_global.rss_id <> 0 + ) + ; + + DELETE FROM activite[PX].p_factures_lignes_c + WHERE montant_comptabilise_budget_global_1 <> 0 AND + no_facture IN + (SELECT no_facture + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_lieux On lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_services_facturation.oid = service_facturation_id AND type_t2a = '1' + ) + ; + + -- Génération des lignes venant du pmsi + DROP TABLE IF EXISTS w_factures_lignes_pmsi; + CREATE TEMP TABLE w_factures_lignes_pmsi AS + SELECT + w_sejours_budget_global.no_sejour, + w_sejours_budget_global.sejour_id, + COALESCE(w_sejours_budget_global.no_facture_budget_global,w_sejours_budget_global.no_facture_hors_budget_global,w_sejours_budget_global.no_sejour || '.BG') AS no_facture, + 0::bigint AS facture_id, + CASE WHEN p_rsf_detail.type = 'C' THEN 'H' ELSE 'C' END AS clinique_honoraire, + p_rsf_detail.date_debut, + p_rsf_detail.date_fin, + p_rsf_detail.nombre AS nb_rubrique, + p_rsf_detail.nombre AS nb_prestation, + p_rsf_detail.coefficient AS coefficient, + p_rsf_detail.coefficient_mco, + COALESCE(t_rubriques_facturation.oid,0::bigint) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid,0::bigint) AS rubrique_comptabilisation_id, + COALESCE(t_prestations_activite.oid,0::bigint) AS prestation_id, + p_rsf_detail.sejour_remboursable AS montant_facture, + 0::numeric AS montant_facture_0, + p_rsf_detail.sejour_remboursable AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + 0::numeric AS taux_0, + p_rsf_detail.taux_remboursement AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_22, + p_rsf_detail.prix_unitaire, + w_sejours_budget_global.lieu_sortie_id AS lieu_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + 1::bigint AS origine_facturation_id, + CASE WHEN p_rss.traitement_epmsi IN ('30','31','32','33') THEN p_rsf_detail.sejour_remboursable ELSE 0 END AS montant_comptabilise_budget_global_1, + 0::numeric AS protocole_id, + 0::numeric AS compte_produit_id, + t_prestations_pmsi.code AS prestation_code, + ''::text AS uf_code, + ''::text AS dmt_code, + ''::text AS mt_code + FROM pmsi.p_rsf_detail + JOIN pmsi.p_rss ON p_rss.oid = p_rsf_detail.rss_id AND p_rss.etat = '' AND p_rss.en_cours = '0' + JOIN pmsi.p_rsf_total ON p_rss.oid = p_rsf_total.rss_id AND p_rsf_total.valorise_fides IS DISTINCT FROM 1 + JOIN pmsi.t_prestations t_prestations_pmsi ON t_prestations_pmsi.oid = p_rsf_detail.prestation_id + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN w_sejours_budget_global ON p_rss.oid = w_sejours_budget_global.rss_id + LEFT JOIN activite.t_prestations t_prestations_activite ON t_prestations_activite.code = t_prestations_pmsi.code + LEFT JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code = t_prestations_pmsi.code + WHERE est_ligne_rss = '1' AND p_rss.en_cours = '0' AND + p_rss.date_sortie >= '[ENV_ADM_ANNEEDEBUT]0101' AND + operation_lamda IS DISTINCT FROM '1' AND + operation_lamda IS DISTINCT FROM '2' AND + p_rss.traitement_epmsi IN ('30','31','32','33') ; + + + + + -- Factures à créer + DROP TABLE IF EXISTS w_factures_pmsi; + CREATE TEMP TABLE w_factures_pmsi AS + SELECT + w_factures_lignes_pmsi.no_sejour, + w_factures_lignes_pmsi.sejour_id, + w_factures_lignes_pmsi.no_facture, + p_sejours.date_entree AS date_debut, + p_sejours.date_sortie AS date_fin, + '0'::text AS type_facture, + '1'::text AS code_facture, + MAX(p_sejours.date_sortie) AS date_facture, + MAX('1') AS code_vente, + MAX(to_char(p_sejours.date_sortie,'YYYYMM')::numeric) AS mois_vente, + MAX(p_sejours.date_sortie) AS date_solde, + '0'::text AS particularite_t2a, + MAX(p_sejours.date_sortie) AS date_vente, + ''::text AS code_cloture, + MAX(p_sejours.code_cp_demandee) AS code_cp_demandee, + '20991231'::date AS date_encours, + MAX(p_sejours.ghs_id) AS ghs_id, + MAX(p_sejours.ghs_bebe1_id) AS ghs_bebe1_id, + MAX(p_sejours.ghs_bebe2_id) AS ghs_bebe2_id, + MAX(p_sejours.ghs_bebe3_id) AS ghs_bebe3_id, + MAX(p_sejours.ghm_id) AS ghm_id, + SUM(montant_facture) AS montant_facture_c, + 0::numeric AS montant_facture_h, + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + '20991231'::date AS date_expedition, + 0::numeric AS delai_expedition, + MAX(p_sejours.tiers_payant_1_id) AS tiers_payant_1_id, + MAX(p_sejours.tiers_payant_2_id) AS tiers_payant_2_id, + MAX(p_sejours.tiers_payant_22_id) AS tiers_payant_22_id, + MAX(p_sejours.tiers_payant_0_id) AS tiers_payant_0_id, + '20991231'::date AS date_solde_0_c, + '20991231'::date AS date_solde_0_h, + '20991231'::date AS date_solde_1_c, + '20991231'::date AS date_solde_1_h, + '20991231'::date AS date_solde_2_c, + '20991231'::date AS date_solde_2_h, + '20991231'::date AS date_solde_22_c, + '20991231'::date AS date_solde_22_h, + '20991231'::date AS date_expedition_0, + '20991231'::date AS date_expedition_1, + '20991231'::date AS date_expedition_2, + '20991231'::date AS date_expedition_22, + '0'::text AS code_expedie_0, + '0'::text AS code_expedie_1, + '0'::text AS code_expedie_2, + '0'::text AS code_expedie_22, + ''::text AS no_bordereau_0, + ''::text AS no_bordereau_1, + ''::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + 0::numeric AS montant_facture_0_c, + 0::numeric AS montant_facture_0_h, + SUM(montant_facture) AS montant_facture_1_c, + 0::numeric AS montant_facture_1_h, + 0::numeric AS montant_facture_2_c, + 0::numeric AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + 0::numeric AS montant_regle_1_h, + 0::numeric AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + 0::numeric AS nb_rejets, + 0::numeric AS montant_comptabilise_c, + 0::numeric AS montant_comptabilise_h, + 0::numeric AS montant_comptabilise_0_c, + 0::numeric AS montant_comptabilise_0_h, + 0::numeric AS montant_comptabilise_1_c, + 0::numeric AS montant_comptabilise_1_h, + 0::numeric AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + w_factures_lignes_pmsi.no_facture AS no_facture_reference, + 0::bigint AS facture_reference_id, + '20991231'::date AS date_solde_reference, + '20991231'::date AS date_solde_reference_c, + '20991231'::date AS date_solde_reference_h, + '20991231'::date AS date_solde_reference_0_c, + '20991231'::date AS date_solde_reference_1_c, + '20991231'::date AS date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + '20991231'::date AS date_solde_reference_0_h, + '20991231'::date AS date_solde_reference_1_h, + '20991231'::date AS date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h, + '20991231'::date AS date_solde_c, + '20991231'::date AS date_solde_h, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_c, + ''::text AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id + FROM w_factures_lignes_pmsi + JOIN activite[PX].p_sejours ON w_factures_lignes_pmsi.no_sejour = p_sejours.no_sejour + WHERE w_factures_lignes_pmsi.no_facture LIKE '%BG' + GROUP BY 1,2,3,4,5; + + + + + + -- Ajout des factures + INSERT INTO activite[PX].p_factures + (no_sejour, no_facture, date_debut, date_fin, type_facture, + code_facture, date_facture, code_vente, mois_vente, date_solde, + montant_facture_c, montant_facture_h, montant_regle_c, montant_regle_h, + delai_facture, delai_solde, date_expedition, delai_expedition, + tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, tiers_payant_0_id, + date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, + date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h, + date_expedition_0, date_expedition_1, date_expedition_2, date_expedition_22, + code_expedie_0, code_expedie_1, code_expedie_2, code_expedie_22, + no_bordereau_0, no_bordereau_1, no_bordereau_2, no_bordereau_22, + montant_facture_0_c, montant_facture_0_h, montant_facture_1_c, + montant_facture_1_h, montant_facture_2_c, montant_facture_2_h, + montant_facture_22_c, montant_facture_22_h, montant_regle_0_c, + montant_regle_0_h, montant_regle_1_c, montant_regle_1_h, montant_regle_2_c, + montant_regle_2_h, montant_regle_22_c, montant_regle_22_h, delai_expedition_0, + delai_expedition_1, delai_expedition_2, delai_expedition_22, + delai_solde_0_c, delai_solde_0_h, delai_solde_1_c, delai_solde_1_h, + delai_solde_2_c, delai_solde_2_h, delai_solde_22_c, delai_solde_22_h, + ghs_id, particularite_t2a, date_vente, code_cloture, montant_encours_c, + montant_encours_0_c, montant_encours_1_c, montant_encours_2_c, + montant_encours_22_c, montant_encours_h, montant_encours_0_h, + montant_encours_1_h, montant_encours_2_h, montant_encours_22_h, + code_cp_demandee, date_encours, ghs_bebe1_id, ghs_bebe2_id, ghs_bebe3_id, + nb_rejets, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0_c, + montant_comptabilise_0_h, montant_comptabilise_1_c, montant_comptabilise_1_h, + montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_22_c, + montant_comptabilise_22_h, no_facture_reference, date_solde_reference, + date_solde_reference_c, date_solde_reference_h, date_solde_reference_0_c, + date_solde_reference_1_c, date_solde_reference_2_c, date_solde_reference_22_c, + date_solde_reference_0_h, date_solde_reference_1_h, date_solde_reference_2_h, + date_solde_reference_22_h, date_solde_c, date_solde_h, montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, montant_comptabilise_budget_global_c, + no_facture_od_avoir, sejour_id, facture_reference_id, facture_od_avoir_id, + ghm_id) + SELECt no_sejour, no_facture, date_debut, date_fin, type_facture, + code_facture, date_facture, code_vente, mois_vente, date_solde, + montant_facture_c, montant_facture_h, montant_regle_c, montant_regle_h, + delai_facture, delai_solde, date_expedition, delai_expedition, + tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, tiers_payant_0_id, + date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, + date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h, + date_expedition_0, date_expedition_1, date_expedition_2, date_expedition_22, + code_expedie_0, code_expedie_1, code_expedie_2, code_expedie_22, + no_bordereau_0, 'PMSIMCO' AS no_bordereau_1, no_bordereau_2, no_bordereau_22, + montant_facture_0_c, montant_facture_0_h, montant_facture_1_c, + montant_facture_1_h, montant_facture_2_c, montant_facture_2_h, + montant_facture_22_c, montant_facture_22_h, montant_regle_0_c, + montant_regle_0_h, montant_regle_1_c, montant_regle_1_h, montant_regle_2_c, + montant_regle_2_h, montant_regle_22_c, montant_regle_22_h, delai_expedition_0, + delai_expedition_1, delai_expedition_2, delai_expedition_22, + delai_solde_0_c, delai_solde_0_h, delai_solde_1_c, delai_solde_1_h, + delai_solde_2_c, delai_solde_2_h, delai_solde_22_c, delai_solde_22_h, + ghs_id, particularite_t2a, date_vente, code_cloture, montant_encours_c, + montant_encours_0_c, montant_encours_1_c, montant_encours_2_c, + montant_encours_22_c, montant_encours_h, montant_encours_0_h, + montant_encours_1_h, montant_encours_2_h, montant_encours_22_h, + code_cp_demandee, date_encours, ghs_bebe1_id, ghs_bebe2_id, ghs_bebe3_id, + nb_rejets, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0_c, + montant_comptabilise_0_h, montant_comptabilise_1_c, montant_comptabilise_1_h, + montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_22_c, + montant_comptabilise_22_h, no_facture_reference, date_solde_reference, + date_solde_reference_c, date_solde_reference_h, date_solde_reference_0_c, + date_solde_reference_1_c, date_solde_reference_2_c, date_solde_reference_22_c, + date_solde_reference_0_h, date_solde_reference_1_h, date_solde_reference_2_h, + date_solde_reference_22_h, date_solde_c, date_solde_h, montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, montant_comptabilise_budget_global_c, + no_facture_od_avoir, sejour_id, facture_reference_id, facture_od_avoir_id, + ghm_id + FROM w_factures_pmsi; + + + + -- Ajout des lignes + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, date_debut, date_fin, nb_rubrique, coefficient, coefficient_mco, + rubrique_facturation_id, prestation_id, montant_facture, montant_facture_0, + montant_facture_1, montant_facture_2, montant_facture_22, taux_0, + taux_1, taux_2, taux_22, finess, prix_unitaire, lieu_id, nb_prestation, + montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, + montant_comptabilise_2, montant_comptabilise_22, rubrique_comptabilisation_id, + montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, + montant_encours_22, montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, montant_comptabilise_budget_global_1, + facture_id, protocole_id, compte_produit_id) + SELECT + p_factures.no_facture, w_factures_lignes_pmsi.date_debut, w_factures_lignes_pmsi.date_fin, nb_rubrique, coefficient, coefficient_mco, + rubrique_facturation_id, prestation_id, montant_facture, montant_facture_0, + montant_facture_1, montant_facture_2, montant_facture_22, taux_0, + taux_1, taux_2, taux_22, finess, prix_unitaire, lieu_id, nb_prestation, + montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, + montant_comptabilise_2, montant_comptabilise_22, rubrique_comptabilisation_id, + montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, + montant_encours_22, montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, montant_comptabilise_budget_global_1, + p_factures.oid AS facture_id, protocole_id, compte_produit_id + FROM w_factures_lignes_pmsi + JOIN activite[PX].p_factures ON w_factures_lignes_pmsi.no_facture = p_factures.no_facture ; + + + + -- Eclatement des supplements par jour + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + p_factures_lignes_c.CTID AS from_CTID, + t_prestations.code AS prestation_code, + date(p_sejours.date_entree) AS date_debut_ghs, + date(p_sejours.date_sortie - interval '1 day') AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN t_prestations.code = 'GHS' THEN date(date_entree + interval '1 day') ELSE date(p_factures_lignes_c.date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN t_prestations.code = 'GHS' THEN date(p_sejours.date_sortie - interval '1 day') ELSE date(p_factures_lignes_c.date_debut + ((ABS(nb_prestation)-1) || ' day')::interval) END AS date_fin_det, + ABS(CASE WHEN t_prestations.code = 'GHS' THEN date(date_sortie) - date(date_entree) ELSE nb_prestation END) AS nb_det, + p_factures_lignes_c.* + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.etat = '' + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + ( + code IN ('PJ', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (t_prestations.code = 'GHS' AND date(date_sortie) - date(date_entree) > 1)) ; + + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM activite[PX].p_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture AND + w_factures_lignes_sup_c.prestation_code = 'GHS'; + + + CREATE INDEX w_factures_lignes_sup_c_i1 + ON w_factures_lignes_sup_c + USING btree + (date_debut); + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + from_CTID, + no_facture, + date AS date_debut, + date AS date_fin, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + compte_produit_id, + round(montant_facture / ABS(nb_det),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + round(montant_comptabilise / ABS(nb_det),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_det),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_det),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_det),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_det),2) AS montant_comptabilise_22, + rubrique_comptabilisation_id, + round(montant_encours / ABS(nb_det),2) AS montant_encours, + round(montant_encours_0 / ABS(nb_det),2) AS montant_encours_0, + round(montant_encours_1 / ABS(nb_det),2) AS montant_encours_1, + round(montant_encours_2 / ABS(nb_det),2) AS montant_encours_2, + round(montant_encours_22 / ABS(nb_det),2) AS montant_encours_22, + round(montant_facture_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_actes_inclus_dans_sejour, + round(montant_facture_0_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_0_actes_inclus_dans_sejour, + round(montant_facture_1_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_1_actes_inclus_dans_sejour, + round(montant_facture_2_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_2_actes_inclus_dans_sejour, + round(montant_facture_22_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + round(montant_comptabilise_budget_global_1 / ABS(nb_det),2) AS montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON date_debut BETWEEN p_calendrier.date - ABS(nb_det)::integer + 1 AND p_calendrier.date AND + p_calendrier.date <> date_debut ; + ; + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT from_CTID, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + + UPDATE activite[PX].p_factures_lignes_c + SET + date_fin = p_factures_lignes_c.date_debut, + nb_rubrique = p_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_sup_tot.nb_rubrique, + nb_prestation = p_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_sup_tot.nb_prestation, + montant_facture = p_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = p_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = p_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = p_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = p_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = p_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = p_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = p_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = p_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = p_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22, + montant_encours = p_factures_lignes_c.montant_encours - w_factures_lignes_sup_c_sup_tot.montant_encours, + montant_encours_0 = p_factures_lignes_c.montant_encours_0 - w_factures_lignes_sup_c_sup_tot.montant_encours_0, + montant_encours_1 = p_factures_lignes_c.montant_encours_1 - w_factures_lignes_sup_c_sup_tot.montant_encours_1, + montant_encours_2 = p_factures_lignes_c.montant_encours_2 - w_factures_lignes_sup_c_sup_tot.montant_encours_2, + montant_encours_22 = p_factures_lignes_c.montant_encours_22 - w_factures_lignes_sup_c_sup_tot.montant_encours_22, + montant_facture_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 = p_factures_lignes_c.montant_comptabilise_budget_global_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup_tot + WHERE p_factures_lignes_c.CTID = from_CTID; + + + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c_sup; + + + -- Lieu exécution + + UPDATE activite[PX].p_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_factures , + activite[PX].p_mouvements_sejour + WHERE + p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + p_factures_lignes_c.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + p_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id + ; + + + + + -- En cours PMSI public + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id) + SELECT + p_sejours.oid, + p_sejours.no_sejour, + p_sejours.no_sejour || '.BG', + p_sejours.no_sejour || '.BG', + p_sejours.date_entree, + p_sejours.date_sortie, + '0', + '0', + '20991231'::date, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id + FROM pmsi.p_rss + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND p_factures.no_facture LIKE '%BG' + WHERE p_rss.en_cours = '1' AND p_factures.no_facture IS NULL + GROUP BY 1,2,3,4,5,6,10,11,12,13,14,15,16,17; + + -- Sejours BG PMSi qui ne sont pas dans les RSS + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id) + SELECT p_sejours.oid, + p_sejours.no_sejour, + p_sejours.no_sejour || '.BG', + p_sejours.no_sejour || '.BG', + p_sejours.date_entree, + p_sejours.date_sortie, + '0', + '0', + '20991231'::date, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE p_sejours.est_budget_global = '1' AND + type_t2a = '1' AND + date_entree between now() - interval '1 year' AND now() AND + code_sorti = '1' AND + no_sejour NOT IN (SELECt no_sejour FROM activite[PX].p_factures where no_facture like '%BG') AND + no_sejour NOT IN ( + SELECT p_factures.no_sejour + FROM activite[PX].p_factures + JOIN activite[PX].p_factures_lignes_c ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].t_prestations ON prestation_id = t_prestations.oid + WHERE t_prestations.code = 'GHS' AND montant_facture > 0 + ) AND + no_sejour NOT IN ( + SELECT p_factures.no_sejour + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_sejours.est_budget_global = '1' AND + code_facture = '1' AND + t_prestations.code = 'PJ' AND + (taux_2 = 100 OR taux_0 = 100) + GROUP BY 1 + HAVING SUM(montant_facture_0+montant_facture_2) > 0 + ); + + + + -- Factures non assurés ajoutées à tord (on trouve un 100% dans patient ou tp1 + DROP TABLE IF EXISTS w_sejours_bg_24; + CREATE TEMP TABLE w_sejours_bg_24 AS + SELECT p_factures.no_sejour, SUM(montant_facture_0+montant_facture_1+montant_facture_2) AS montant_facture_100 + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN activite[PX].p_sejour_pmsi ON p_sejour_pmsi.sejour_id = p_sejours.oid + JOIN pmsi.p_rss ON p_sejour_pmsi.rss_id = p_rss.oid + WHERE p_sejours.est_budget_global = '1' AND + code_facture = '1' AND + t_prestations.code = 'PJ' AND + (taux_1 + taux_2 + taux_0 = 100 OR + taux_0+taux_1+taux_2=0 AND montant_facture_1 = montant_facture + ) AND + p_rss.traitement_epmsi NOT IN ('30','31','32','33') + GROUP BY 1 + HAVING SUM(montant_facture_0+montant_facture_1+montant_facture_2) > 0 + ORDER BY 1; + + DELETE FROM activite[PX].p_factures_lignes_c + USING activite[PX].p_factures + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour IN (SELECT no_sejour FROM w_sejours_bg_24) AND + p_factures_lignes_c.no_facture LIKE '%BG' AND + origine_facturation_id = 1; + + UPDATE activite[PX].p_factures SET + code_facture = '1', + montant_facture_c = 0, + montant_facture_1_c = 0, + montant_comptabilise_1_c =0, + montant_comptabilise_budget_global_c = 0 + WHERE no_sejour IN (SELECT no_sejour FROM w_sejours_bg_24) AND + no_facture LIKE '%BG' AND + montant_comptabilise_budget_global_c = 0; + + + -- Suppression des factures encours externes ajoutées à tord + DROP TABLE IF EXISTS w_factures_externes_double_bg; + CREATE TEMP TABLE w_factures_externes_double_bg AS + SELECT p_factures.no_sejour, + MAX(CASE WHEN code_facture = '0' AND p_factures.montant_facture_c = 0 THEN no_facture ELSE '' END) AS no_facture_encours, + MAX(CASE WHEN code_facture = '1' AND no_facture LIKE '%BG%' THEN no_facture ELSE '' END) AS no_facture_bg + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_sejours.type_sejour = '3' + GROUP BY 1 + HAVING MAX(CASE WHEN code_facture = '0' THEN no_facture ELSE '' END) <> '' AND MAX(CASE WHEN code_facture = '1' AND no_facture LIKE '%BG%' THEN no_facture ELSE '' END) <> '' + ; + + DELETE FROM activite[PX].p_factures + WHERE code_facture = '0' AND + montant_facture_c = 0 AND + no_facture IN (SELECT no_facture_encours FROM w_factures_externes_double_bg) + ; + + DELETE FROM activite[PX].p_factures_lignes_non_facturees_c + WHERE no_facture IN (SELECT no_facture_encours FROM w_factures_externes_double_bg) + ; + + -- Ajout des prestations NGAP non facturées + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture AS no_facture, + date(NGAP_DATE) AS date_debut, + date(NGAP_DATE) AS date_fin, + NGAP_NB AS nb_rubrique, + NGAP_COEF AS coefficient, + t_rubriques_facturation.oid AS rubrique_facturation_id, + t_prestations.oid AS prestation_id, + LC_PRIX AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id + FROM prod_cerner.PASSAGE_NGAP + JOIN prod_cerner.CODE_TARIF ON NGAP_CTCODE = CT_CODE + JOIN prod_cerner.LETTRE_CLE ON CT_LET = LC_CODE AND NGAP_DATE BETWEEN LC_DDEB AND COALESCE(LC_DFIN,'20991231') + JOIN activite[PX].p_sejours ON NGAP_HONUM = p_sejours.code_original AND p_sejours.etat = '' AND + NGAP_DATE BETWEEN p_sejours.date_entree AND p_sejours.date_sortie + JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour + JOIN activite.t_prestations ON t_prestations.code = CT_LET + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = NGAP_CTCODE + WHERE p_factures.code_facture <> '1' AND p_sejours.type_sejour = '3' AND NGAP_DATE >= '[ENV_ADM_ANNEEDEBUT]0101' + ; + + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture AS no_facture, + date(CDAM_DATE) AS date_debut, + date(CDAM_DATE) AS date_fin, + 1 AS nb_rubrique, + 1 AS coefficient, + t_rubriques_facturation.oid AS rubrique_facturation_id, + t_prestations.oid AS prestation_id, + PRIX_ACTE * CASE CDAM_CCAM_ASSNOPREV WHEN '2' THEN 0.5 WHEN '3' THEN 0.75 ELSE 1 END AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id + FROM prod_cerner.PASSAGE_CDAM + JOIN activite[PX].p_sejours ON CDAM_HONUM = p_sejours.code_original AND p_sejours.etat = '' AND + CDAM_DATE BETWEEN p_sejours.date_entree AND p_sejours.date_sortie + JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour + JOIN base.t_actes ON CDAM_CODEACTE = t_actes.code + JOIN base.t_ccam_regroupements ON + (t_actes.ccam_regroupement_id_1 = t_ccam_regroupements.oid AND CDAM_CCAM_ACTIVITE <> '4' OR + t_actes.ccam_regroupement_id_4 = t_ccam_regroupements.oid AND CDAM_CCAM_ACTIVITE = '4' + ) + JOIN activite.t_prestations ON t_prestations.code = t_ccam_regroupements.code + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = t_ccam_regroupements.code + WHERE p_factures.code_facture <> '1' AND p_sejours.type_sejour = '3' AND CDAM_DATE >= '[ENV_ADM_ANNEEDEBUT]0101' + ; + + + ]]> + + + + = '[ENV_ADM_ANNEEDEBUT]0101' AND + date_vente IS NOT NULL AND + (montant_comptabilise <> 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5; + + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + p_factures.oid AS facture_id, + no_facture, + date_trunc('month',MC_DATECR) + interval '1 month' - interval '1 day', + 0::bigint AS rubrique_comptabilisation_id, + 0::bigint AS prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(MC_MON_REG) AS montant_regle, + SUM(CASE WHEN FAC_PYTYPE_CTI_HB = '0' THEN MC_MON_REG ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN FAC_PYTYPE_CTI_HB = '1' THEN MC_MON_REG ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN FAC_PYTYPE_CTI_HB = '2' THEN MC_MON_REG ELSE 0 END) AS montant_regle_2, + 0::numeric AS montant_regle_22 + FROM w_MOUV_COMPTA_REG + JOIN w_FACTURE ON w_FACTURE.FAC_NUM_CTI = MC_FACNUM_CTI + JOIN activite[PX].p_factures ON w_MOUV_COMPTA_REG.MC_FACNUM_CTI = p_factures.no_facture + WHERE MC_DATECR >= '[ENV_ADM_ANNEEDEBUT]0101' AND + MC_MON_REG <> 0 + GROUP BY 1,2,3,4,5; + + + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_1'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_8'); + + ]]> + + + + + + + + '1' AND type_facture <> 'X' AND type_facture <> 'P' THEN p_factures.no_facture ELSE null END) AS no_facture_reference_last, + (MAX(ARRAY[to_char( + CASE + WHEN type_facture <> '1' AND type_facture <> 'X' AND type_facture <> 'P' AND (t_prestations.code IN ('GHS','PJ') OR (p_factures.no_facture LIKE '%BG' AND p_sejours.type_sejour IN ('1','2','5','6'))) THEN p_factures_lignes_c.taux_1 + ELSE 0 END + ,'FM00000'), + CASE + WHEN type_facture <> '1' AND type_facture <> 'X' AND type_facture <> 'P' AND (t_prestations.code IN ('GHS','PJ') OR (p_factures.no_facture LIKE '%BG' AND p_sejours.type_sejour IN ('1','2','5','6'))) THEN p_factures.no_facture + ELSE NULL END + ] + ))[2] AS no_facture_reference_sejour_last, + COUNT(DISTINCT p_factures.no_facture) AS nb_factures, + MAX(avec_facturation_intermediaire) AS avec_facturation_intermediaire + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_lieux ON p_sejours.lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + LEFT JOIN activite[PX].p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + LEFT JOIN activite.t_prestations ON p_factures_lignes_c.prestation_id = t_prestations.oid AND t_prestations.code IN ('GHS','PJ') + GROUP BY 1,2; + + + CREATE INDEX w_sejours_facture_reference_i1 + ON w_sejours_facture_reference + USING btree + (no_sejour); + + UPDATE activite[PX].p_factures + SET no_facture_reference = COALESCE(no_facture_reference_sejour_last, no_facture_reference_last, no_facture_last) + FROM w_sejours_facture_reference + JOIN activite[PX].p_sejours ON p_sejours.no_sejour = w_sejours_facture_reference.no_sejour + WHERE p_factures.no_sejour = w_sejours_facture_reference.no_sejour AND + ( + p_factures.date_fin = w_sejours_facture_reference.date_fin OR + p_factures.date_fin = p_sejours.date_sortie AND avec_facturation_intermediaire IS DISTINCT FROM '1' + + ) AND + p_factures.no_facture_reference <> COALESCE(no_facture_reference_sejour_last, no_facture_reference_last, no_facture_last); + + UPDATE activite[PX].p_factures + SET facture_reference_id = p_factures_references.oid + FROM activite[PX].p_factures p_factures_references + WHERE p_factures.no_facture_reference = p_factures_references.no_facture + AND p_factures.facture_reference_id <> p_factures_references.oid + ; + + UPDATE activite[PX].p_factures + SET date_fin = date_fin_facture + FROM activite[PX].p_factures_reference + WHERE p_factures.no_facture_reference = p_factures_reference.no_facture_reference AND + p_factures.date_fin <> p_factures_reference.date_fin_facture + ; + UPDATE activite[PX].p_factures + SET date_debut = date_debut_facture + FROM activite[PX].p_factures_reference + WHERE p_factures.no_facture_reference = p_factures_reference.no_facture_reference AND + p_factures.date_debut <> p_factures_reference.date_debut_facture + ; + + + + INSERT INTO base.t_actes (code, texte, texte_court, nomenclature, ccam_regroupement_id_1) + SELECT CT_LET, MAX(CT_LIB), MAX(CT_LIB), 'NGAP', MAX(t_ccam_regroupements.oid) + FROM prod_cerner.PASSAGE_NGAP + JOIN prod_cerner.CODE_TARIF ON NGAP_CTCODE = CT_CODE + JOIN base.t_ccam_regroupements ON t_ccam_regroupements.Code = 'NGAP' + LEFT JOIN base.t_actes ON t_actes.code = CT_LET + WHERE CT_LET NOT IN ('SE1','SE2','SE3','SE4','SE5', 'SE6', 'SE7','ATU', 'FPU','FFM') AND + t_actes.oid IS NULL + GROUP BY 1 + ORDER BY 1 + ; + + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_1'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_2'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_3'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_4'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_5'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_6'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_7'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_8'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_9'); + + DROP TABLE IF EXISTS w_PASSAGE_NGAP; + CREATE TEMP TABLE w_PASSAGE_NGAP AS + SELECT row_number() OVER () AS oid, + 0 as lieu_id, + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + PASSAGE_NGAP.*, + CODE_TARIF.*, + LETTRE_CLE.* + FROM prod_cerner.PASSAGE_NGAP + JOIN prod_cerner.CODE_TARIF ON NGAP_CTCODE = CT_CODE + JOIN prod_cerner.LETTRE_CLE ON CT_LET = LC_CODE AND NGAP_DATE BETWEEN LC_DDEB AND COALESCE(LC_DFIN,'20991231') + JOIN activite[PX].p_sejours ON no_sejour = NGAP_HONUM + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + ; + + ANALYSE w_PASSAGE_NGAP + ; + + CREATE INDEX w_PASSAGE_NGAP_oid + ON w_PASSAGE_NGAP + USING btree + (oid); + + DROP TABLE IF EXISTS w_PASSAGE_NGAP_facture; + CREATE TEMP TABLE w_PASSAGE_NGAP_facture AS + SELECT PASSAGE_NGAP.oid, + NGAP_HONUM AS HONUM, + MAX(no_facture) AS no_facture, + (MAX(ARRAY[no_facture,p_factures.oid::text]))[2]::bigint AS facture_id, + MAX(p_sejours.lieu_sortie_id) AS lieu_sortie_id + FROM w_PASSAGE_NGAP PASSAGE_NGAP + JOIN activite[PX].p_sejours ON NGAP_HONUM = p_sejours.no_sejour AND p_sejours.etat = '' + JOIN activite[PX].p_factures ON NGAP_HONUM = p_factures.no_sejour AND + p_factures.no_facture = p_factures.no_facture_reference AND + NGAP_DATE BETWEEN p_factures.date_debut AND p_factures.date_fin + GROUP BY 1,2 + ; + + ANALYSE w_PASSAGE_NGAP_facture + ; + + + CREATE INDEX w_PASSAGE_NGAP_facture_oid + ON w_PASSAGE_NGAP_facture + USING btree + (oid) + ; + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_5, code_original_6) + SELECT + w_PASSAGE_NGAP.code_original_1, + w_PASSAGE_NGAP.code_original_2, + w_PASSAGE_NGAP.code_original_3, + w_PASSAGE_NGAP.code_original_4, + w_PASSAGE_NGAP.code_original_5, + NGAP_UFXCODE + FROM w_PASSAGE_NGAP + LEFT JOIN activite[PX].t_lieux ON ( + t_lieux.code_original_1 = w_PASSAGE_NGAP.code_original_1 AND + t_lieux.code_original_2 = w_PASSAGE_NGAP.code_original_2 AND + t_lieux.code_original_3 = w_PASSAGE_NGAP.code_original_3 AND + t_lieux.code_original_4 = w_PASSAGE_NGAP.code_original_4 AND + t_lieux.code_original_5 = w_PASSAGE_NGAP.code_original_5 AND + t_lieux.code_original_6 = NGAP_UFXCODE + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5,6 + ; + + UPDATE w_PASSAGE_NGAP + SET lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE t_lieux.code_original_1 = w_PASSAGE_NGAP.code_original_1 AND + t_lieux.code_original_2 = w_PASSAGE_NGAP.code_original_2 AND + t_lieux.code_original_3 = w_PASSAGE_NGAP.code_original_3 AND + t_lieux.code_original_4 = w_PASSAGE_NGAP.code_original_4 AND + t_lieux.code_original_5 = w_PASSAGE_NGAP.code_original_5 AND + t_lieux.code_original_6 = NGAP_UFXCODE + ; + + INSERT INTO activite[PX].p_factures_lignes_h( + no_facture, + date_debut, + date_fin, + coefficient, + coefficient_mco, + prestation_id, + nb_rubrique, + nb_prestation, + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + lieu_id, + montant_depassement, + acte_id, + medecin_facture_id, + medecin_comptabilise_id, + heure_debut, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + facture_id, + protocole_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + montant_non_facture + ) + SELECT + w_PASSAGE_NGAP_facture.no_facture, + date(NGAP_DATE) AS date_debut, + date(NGAP_DATE) AS date_fin, + CASE WHEN CT_COEF = NGAP_COEF THEN CT_COEF ELSE CT_COEF * NGAP_COEF END AS coefficient, + 1 AS coefficient_mco, + COALESCE(t_prestations.oid, 0) AS prestation_id, + NGAP_NB AS nb_rubrique, + NGAP_NB AS nb_prestation, + LC_PRIX AS prix_unitaire, + 0 AS taux_0, + 0 AS taux_1, + 0 AS taux_2, + 0 AS taux_22, + NGAP_NB * (CASE WHEN CT_COEF = NGAP_COEF THEN CT_COEF ELSE CT_COEF * NGAP_COEF END ) * LC_PRIX AS montant_facture, + 0 AS montant_facture_0, + NGAP_NB * (CASE WHEN CT_COEF = NGAP_COEF THEN CT_COEF ELSE CT_COEF * NGAP_COEF END ) * LC_PRIX AS montant_facture_1, + 0 AS montant_facture_2, + 0 AS montant_facture_22, + 0 AS montant_comptabilise, + 0 AS montant_comptabilise_0, + 0 AS montant_comptabilise_1, + 0 AS montant_comptabilise_2, + 0 AS montant_comptabilise_22, + PASSAGE_NGAP.lieu_id AS lieu_id, + 0 AS montant_depassement, + COALESCE(t_actes.oid,0) AS acte_id, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_facture_id, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_comptabilise_id, + to_char(NGAP_HEURE,'HH24MISS')::numeric AS heure_debut, + '' AS phase_ccam, + '' AS activite_ccam, + '' AS extension_ccam, + '' AS modificateur_ccam_1, + '' AS modificateur_ccam_2, + '' AS modificateur_ccam_3, + '' AS modificateur_ccam_4, + 0 AS montant_encours, + 0 AS montant_encours_0, + 0 AS montant_encours_1, + 0 AS montant_encours_2, + 0 AS montant_encours_22, + 0 AS montant_facture_actes_inclus_dans_sejour, + 0 AS montant_facture_0_actes_inclus_dans_sejour, + 0 AS montant_facture_1_actes_inclus_dans_sejour, + 0 AS montant_facture_2_actes_inclus_dans_sejour, + 0 AS montant_facture_22_actes_inclus_dans_sejour, + w_PASSAGE_NGAP_facture.facture_id, + 0 AS protocole_id, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_comptabilisation_id, + 0 AS montant_non_facture + FROM w_PASSAGE_NGAP PASSAGE_NGAP + JOIN w_PASSAGE_NGAP_facture ON PASSAGE_NGAP.oid = w_PASSAGE_NGAP_facture.oid + LEFT JOIN activite.t_prestations ON t_prestations.code = CT_LET + LEFT JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = NGAP_CTCODE + LEFT JOIN base.t_actes ON t_actes.code = CT_LET + LEFT JOIN activite[PX].t_medecins_administratifs ON t_medecins_administratifs.code_original = NGAP_INXCODE + WHERE CT_LET NOT IN ('SE1','SE2','SE3','SE4','SE5','SE6', 'SE7','ATU', 'FPU','FFM') + ; + + + + + DROP TABLE IF EXISTS w_PASSAGE_CDAM; + CREATE TEMP TABLE w_PASSAGE_CDAM AS + SELECT row_number() OVER () AS oid, + 0 as lieu_id, + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + PASSAGE_CDAM.* + FROM prod_cerner.PASSAGE_CDAM + JOIN activite[PX].p_sejours ON no_sejour = CDAM_HONUM + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + ; + + ANALYSE w_PASSAGE_CDAM + ; + + CREATE INDEX w_PASSAGE_CDAM_oid + ON w_PASSAGE_CDAM + USING btree + (oid); + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_5, code_original_6) + SELECT + w_PASSAGE_CDAM.code_original_1, + w_PASSAGE_CDAM.code_original_2, + w_PASSAGE_CDAM.code_original_3, + w_PASSAGE_CDAM.code_original_4, + w_PASSAGE_CDAM.code_original_5, + CDAM_UFXCODE + FROM w_PASSAGE_CDAM + LEFT JOIN activite[PX].t_lieux ON ( + t_lieux.code_original_1 = w_PASSAGE_CDAM.code_original_1 AND + t_lieux.code_original_2 = w_PASSAGE_CDAM.code_original_2 AND + t_lieux.code_original_3 = w_PASSAGE_CDAM.code_original_3 AND + t_lieux.code_original_4 = w_PASSAGE_CDAM.code_original_4 AND + t_lieux.code_original_5 = w_PASSAGE_CDAM.code_original_5 AND + t_lieux.code_original_6 = CDAM_UFXCODE + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5,6 + ; + + UPDATE w_PASSAGE_CDAM + SET lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE t_lieux.code_original_1 = w_PASSAGE_CDAM.code_original_1 AND + t_lieux.code_original_2 = w_PASSAGE_CDAM.code_original_2 AND + t_lieux.code_original_3 = w_PASSAGE_CDAM.code_original_3 AND + t_lieux.code_original_4 = w_PASSAGE_CDAM.code_original_4 AND + t_lieux.code_original_5 = w_PASSAGE_CDAM.code_original_5 AND + t_lieux.code_original_6 = CDAM_UFXCODE + ; + + DROP TABLE IF EXISTS w_PASSAGE_CDAM_facture; + CREATE TEMP TABLE w_PASSAGE_CDAM_facture AS + SELECT PASSAGE_CDAM.oid, + CDAM_HONUM AS HONUM, + MAX(no_facture) AS no_facture, + (MAX(ARRAY[no_facture,p_factures.oid::text]))[2]::bigint AS facture_id, + MAX(p_sejours.lieu_sortie_id) AS lieu_sortie_id + FROM w_PASSAGE_CDAM PASSAGE_CDAM + JOIN activite[PX].p_sejours ON CDAM_HONUM = p_sejours.no_sejour AND p_sejours.etat = '' + JOIN activite[PX].p_factures ON CDAM_HONUM = p_factures.no_sejour AND + p_factures.no_facture = p_factures.no_facture_reference AND + CDAM_DATE BETWEEN p_factures.date_debut AND p_factures.date_fin + GROUP BY 1,2 + ; + + ANALYSE w_PASSAGE_CDAM_facture + ; + + CREATE INDEX w_PASSAGE_CDAM_facture_HONUM + ON w_PASSAGE_CDAM_facture + USING btree + (HONUM); + + + INSERT INTO activite[PX].p_factures_lignes_h( + no_facture, + date_debut, + date_fin, + coefficient, + coefficient_mco, + prestation_id, + nb_rubrique, + nb_prestation, + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + lieu_id, + montant_depassement, + acte_id, + medecin_facture_id, + medecin_comptabilise_id, + heure_debut, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + facture_id, + protocole_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + montant_non_facture + ) + SELECT + w_PASSAGE_CDAM_facture.no_facture, + date(CDAM_DATE) AS date_debut, + date(CDAM_DATE) AS date_fin, + 1 AS coefficient, + 1 AS coefficient_mco, + t_prestations.oid AS prestation_id, + 1 AS nb_rubrique, + 1 AS nb_prestation, + PRIX_ACTE * CASE CDAM_CCAM_ASSNOPREV WHEN '2' THEN 0.5 WHEN '3' THEN 0.75 ELSE 1 END AS prix_unitaire, + 0 AS taux_0, + 0 AS taux_1, + 0 AS taux_2, + 0 AS taux_22, + PRIX_ACTE * CASE CDAM_CCAM_ASSNOPREV WHEN '2' THEN 0.5 WHEN '3' THEN 0.75 ELSE 1 END AS montant_facture, + 0 AS montant_facture_0, + PRIX_ACTE * CASE CDAM_CCAM_ASSNOPREV WHEN '2' THEN 0.5 WHEN '3' THEN 0.75 ELSE 1 END AS montant_facture_1, + 0 AS montant_facture_2, + 0 AS montant_facture_22, + 0 AS montant_comptabilise, + 0 AS montant_comptabilise_0, + 0 AS montant_comptabilise_1, + 0 AS montant_comptabilise_2, + 0 AS montant_comptabilise_22, + PASSAGE_CDAM.lieu_id AS lieu_id, + 0 AS montant_depassement, + COALESCE(t_actes.oid,0) AS acte_id, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_facture_id, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_comptabilise_id, + to_char(CDAM_HEURE,'HH24MISS')::numeric AS heure_debut, + CDAM_CCAM_PHASTRAIT::text AS phase_ccam, + CDAM_CCAM_ACTIVITE AS activite_ccam, + CDAM_CCAM_EXTDOC AS extension_ccam, + CDAM_CCAM_MODIF1 AS modificateur_ccam_1, + CDAM_CCAM_MODIF2 AS modificateur_ccam_2, + CDAM_CCAM_MODIF3 AS modificateur_ccam_3, + CDAM_CCAM_MODIF4 AS modificateur_ccam_4, + 0 AS montant_encours, + 0 AS montant_encours_0, + 0 AS montant_encours_1, + 0 AS montant_encours_2, + 0 AS montant_encours_22, + 0 AS montant_facture_actes_inclus_dans_sejour, + 0 AS montant_facture_0_actes_inclus_dans_sejour, + 0 AS montant_facture_1_actes_inclus_dans_sejour, + 0 AS montant_facture_2_actes_inclus_dans_sejour, + 0 AS montant_facture_22_actes_inclus_dans_sejour, + w_PASSAGE_CDAM_facture.facture_id, + 0 AS protocole_id, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_comptabilisation_id, + 0 AS montant_non_facture + FROM w_PASSAGE_CDAM PASSAGE_CDAM + JOIN activite[PX].p_sejours ON CDAM_HONUM = p_sejours.code_original AND p_sejours.etat = '' + JOIN w_PASSAGE_CDAM_facture ON PASSAGE_CDAM.oid = w_PASSAGE_CDAM_facture.oid + JOIN base.t_actes ON CDAM_CODEACTE = t_actes.code + JOIN base.t_ccam_regroupements ON + (t_actes.ccam_regroupement_id_1 = t_ccam_regroupements.oid AND CDAM_CCAM_ACTIVITE <> '4' OR + t_actes.ccam_regroupement_id_4 = t_ccam_regroupements.oid AND CDAM_CCAM_ACTIVITE = '4' + ) + LEFT JOIN activite.t_prestations ON t_prestations.code = t_ccam_regroupements.code + LEFT JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = t_ccam_regroupements.code + LEFT JOIN activite[PX].t_medecins_administratifs ON t_medecins_administratifs.code_original = CDAM_INXCODE + ; + + ANALYSE activite[PX].p_factures_lignes_h + ; + + + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_1'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_2'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_3'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_4'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_5'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_6'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_7'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_8'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_9'); + + -- Supplément F + UPDATE activite[PX].p_factures_lignes_h SET + prix_unitaire = prix_unitaire + 19.06, + montant_facture = montant_facture + 19.06, + montant_facture_1 = montant_facture_1 + 19.06 + WHERE montant_facture > 0 AND + ( + modificateur_ccam_1 = 'F' OR + modificateur_ccam_2 = 'F' OR + modificateur_ccam_3 = 'F' OR + modificateur_ccam_4 = 'F' + ) + ; + + -- Supplément M + UPDATE activite[PX].p_factures_lignes_h SET + prix_unitaire = prix_unitaire + 26.88, + montant_facture = montant_facture + 26.88, + montant_facture_1 = montant_facture_1 + 26.88 + WHERE montant_facture > 0 AND + ( + modificateur_ccam_1 = 'M' OR + modificateur_ccam_2 = 'M' OR + modificateur_ccam_3 = 'M' OR + modificateur_ccam_4 = 'M' + ) + ; + + -- Supplément P + UPDATE activite[PX].p_factures_lignes_h SET + prix_unitaire = prix_unitaire + 35, + montant_facture = montant_facture + 35, + montant_facture_1 = montant_facture_1 + 35 + WHERE montant_facture > 0 AND + ( + modificateur_ccam_1 = 'P' OR + modificateur_ccam_2 = 'P' OR + modificateur_ccam_3 = 'P' OR + modificateur_ccam_4 = 'P' + ) + ; + + -- Comptabilbilité lettre clé G uniquement avec ECG + UPDATE activite[PX].p_factures_lignes_h SET + montant_facture = 0, + montant_facture_1 = 0 + FROM + ( + SELECT p_factures_lignes_h.no_facture, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.medecin_facture_id, + subview.prestation_id + FROM activite[PX].p_factures_lignes_h + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN base.t_actes ON acte_id = t_actes.oid + JOIN + ( + SELECT p_factures_lignes_h.no_facture, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.medecin_facture_id, + p_factures_lignes_h.prestation_id + FROM activite[PX].p_factures_lignes_h + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE t_prestations.code IN ('G','GS') AND + montant_facture <> 0 + GROUP BY 1,2,3,4 + ) subview ON + p_factures_lignes_h.no_facture = subview.no_facture AND + p_factures_lignes_h.date_debut = subview.date_debut AND + p_factures_lignes_h.medecin_facture_id = subview.medecin_facture_id + WHERE t_prestations.code = 'ATM' AND + t_actes.code NOT LIKE 'DEQP%' + GROUP BY 1,2,3,4 + ) subview + WHERE p_factures_lignes_h.no_facture = subview.no_facture AND + p_factures_lignes_h.date_debut = subview.date_debut AND + p_factures_lignes_h.medecin_facture_id = subview.medecin_facture_id AND + p_factures_lignes_h.prestation_id = subview.prestation_id + ; + + UPDATE activite[PX].p_factures_lignes_h + SET lieu_id = p_sejours.lieu_sortie_id + FROM + activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE + p_factures_lignes_h.no_facture = p_factures.no_facture AND + (p_factures_lignes_h.lieu_id = 0 OR + (SELECT count(*) FROM activite.t_divers WHERE code = 'CERNER_LIEU_H' AND valeur = '1') = 0) + ; + + -- UPDATE activite[PX].p_factures_lignes_h + -- SET lieu_id = p_mouvements_sejour.lieu_id + -- FROM + -- activite[PX].p_factures , + -- activite[PX].p_sejours , + -- activite[PX].p_mouvements_sejour + -- WHERE + -- p_factures_lignes_h.no_facture = p_factures.no_facture AND + -- p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + -- p_factures.no_sejour = p_sejours.no_sejour AND + -- p_factures_lignes_h.date_fin = p_mouvements_sejour.date AND + -- (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + -- nb_entrees_directes = 1 AND heure_fin = 240000 OR + -- nb_sorties_directes = 1 ) AND + -- (p_factures_lignes_h.lieu_id = 0 OR + -- (p_factures_lignes_h.lieu_id <> p_mouvements_sejour.lieu_id AND + -- (SELECT count(*) FROM activite.t_divers WHERE code = 'CERNER_LIEU_H' AND valeur = '1') = 0) OR + -- (p_factures_lignes_h.lieu_id <> p_mouvements_sejour.lieu_id AND + -- p_factures_lignes_h.lieu_id <> lieu_sortie_id AND + -- (SELECT count(*) FROM activite.t_divers WHERE code = 'CERNER_LIEU_H' AND valeur = '1') = 1)) + -- ; + + UPDATE activite[PX].p_factures_lignes_h + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_factures , + activite[PX].p_sejours , + activite[PX].p_mouvements_sejour + WHERE + p_factures_lignes_h.no_facture = p_factures.no_facture AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + p_factures.no_sejour = p_sejours.no_sejour AND + p_factures_lignes_h.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + (p_factures_lignes_h.lieu_id = 0 OR + (p_factures_lignes_h.lieu_id <> p_mouvements_sejour.lieu_id AND + (SELECT count(*) FROM activite.t_divers WHERE code = 'CERNER_LIEU_H' AND valeur = '1') = 0) + ) + ; + + ]]> + + + + + = '[ENV_ADM_ANNEEDEBUT]0101' AND + (montant_comptabilise <> 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5,6; + + DROP TABLE IF EXISTS w_medecins_3; + CREATE TEMP TABLE w_medecins_3 AS + SELECT + base.cti_to_number(right(code_original,3)) AS code_3, + MAX(oid) AS medecin_administratif_id + FROM activite[PX].t_medecins_administratifs + GROUP BY 1; + + + INSERT INTO activite[PX].p_factures_soldes_h( + facture_id, + no_facture, + date_comptable, + medecin_comptabilise_id, + prestation_id, + rubrique_comptabilisee_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + w_factures.oid AS facture_id, + no_facture, + (to_char(ACSDTF,'FM00')||to_char(ACADTF,'FM00')||to_char(ACMDTF,'FM00')||'01')::date, + COALESCE(w_medecins_3.medecin_administratif_id,0) AS medecin_comptabilise_id, + 0::bigint AS rubrique_comptabilisation_id, + 0::bigint AS prestation_id, + 0, + 0, + 0, + 0, + 0, + SUM(0-ACMTFC) AS montant_regle, + SUM(CASE WHEN ACINDI = 3 THEN 0-ACMTFC ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN ACINDI = 1 THEN 0-ACMTFC ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN ACINDI = 2 THEN 0-ACMTFC ELSE 0 END) AS montant_regle_2, + 0 AS montant_regle_22 + FROM prod_chataigneraie_as400.NXXXFAC_FACTURES FACTURES + JOIN w_NDOADM_SELECT ON w_NDOADM_SELECT.NONUMA = FACTURES.NONUMA + JOIN prod_chataigneraie_as400.XXXFICH_REGLI REGLI ON FACTURES.FAID = REGLI.ACNFAC + JOIN w_factures ON REGLI.ACNFAC = w_factures.FAID + LEFT JOIN w_medecins_3 ON w_medecins_3.code_3 = ACMED + WHERE ACSDTF*100+ACADTF >= [ENV_ADM_ANNEEDEBUT] AND + ACID > 100 + GROUP BY 1,2,3,4,5,6 + ; + + + SELECT base.cti_enable_index('activite', 'i_factures_soldes_h_1'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_h_3'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_h_4'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_h_8'); + + + ]]> + + + + 0 + ; + + INSERT INTO activite[PX].t_rejets_noemie (texte, code) + SELECT rejet_texte, MAX(rejet_code) + FROM activite[PX].p_factures_rejets + LEFT JOIN activite[PX].t_rejets_noemie ON (rejet_texte = t_rejets_noemie.texte) + WHERE t_rejets_noemie.oid IS NULL + GROUP BY 1; + + UPDATE activite[PX].p_factures_rejets + SET rejet_id = t_rejets_noemie.oid + FROM activite[PX].t_rejets_noemie + WHERE rejet_texte = t_rejets_noemie.texte; + + + ]]> + + + + + + + + + + + 0 AND + MC_TYPE <> 'IRR' AND + MC_OD <> 'X' AND + MC_JRN = 'JV' THEN + CASE WHEN MC_SENS = 'D' THEN MC_MON ELSE 0-MC_MON END + ELSE 0 END + ) AS montant_ventes_c, + SUM( + CASE WHEN MC_JRN <> 'JV' THEN + CASE WHEN MC_SENS = 'C' THEN MC_MON ELSE 0-MC_MON END + ELSE 0 END::numeric + ) AS montant_reglements_c, + 0::numeric AS montant_solde_client_c, + 0::numeric AS montant_ventes_h, + 0::numeric AS montant_reglements_h, + 0::numeric AS montant_solde_client_h + FROM prod_cerner.MOUV_COMPTA + WHERE (MC_COMPTE LIKE '411%' OR MC_COMPTE LIKE '412%' OR MC_COMPTE LIKE '413%' OR MC_COMPTE LIKE '414%' OR MC_COMPTE LIKE '452%' OR MC_COMPTE LIKE '467%') AND + date(CASE WHEN date_part('year',MC_DATECR) = MC_EXER THEN MC_DATECR ELSE to_date(MC_EXER||'-12-31','YYYY-MM-DD') END) >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1; + + + -- Justificatif par facture + + + DROP TABLE IF EXISTS w_factures_comptables; + CREATE TEMP TABLE w_factures_comptables AS + SELECT + MC_NUMV::text AS no_facture, + date(CASE WHEN date_part('year',MC_DATECR) = MC_EXER THEN MC_DATECR ELSE to_date(MC_EXER||'-12-31','YYYY-MM-DD') END) AS date_comptable, + SUM(CASE WHEN MC_SENS = 'D' THEN MC_MON ELSE 0-MC_MON END) AS montant_ventes_c, + 0::numeric AS montant_reglements_c, + 0::numeric AS montant_ventes_h, + 0::numeric AS montant_reglements_h + FROM prod_cerner.MOUV_COMPTA + WHERE MC_NUMV <> 0 AND + (MC_COMPTE LIKE '411%' OR MC_COMPTE LIKE '412%' OR MC_COMPTE LIKE '413%' OR MC_COMPTE LIKE '414%' OR MC_COMPTE LIKE '452%' OR MC_COMPTE LIKE '467%') AND + MC_TYPE <> 'IRR' AND + MC_OD <> 'X' AND + MC_JRN = 'JV' AND + date(CASE WHEN date_part('year',MC_DATECR) = MC_EXER THEN MC_DATECR ELSE to_date(MC_EXER||'-12-31','YYYY-MM-DD') END) >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1,2 + ; + + + -- Ajustement des factures trouvées dans les ecritures pour ajouter les séances + + DROP TABLE IF EXISTS w_factures_eclatees; + CREATE TEMP TABLE w_factures_eclatees AS + SELECT + split_part(no_facture,'.',1)::numeric AS no_facture, + MAX(date_vente) AS date_vente, + SUM(montant_comptabilise_c) AS montant_comptabilise_c, + MIN(no_facture) AS no_facture_1, + base.cti_array_accum(no_facture) AS no_factures_array, + count(*) AS nb + FROM activite[PX].p_factures + WHERE date_vente >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1 + ; + + -- Attribuer le bon n° de facture si une seule + UPDATE w_factures_comptables + SET no_facture = no_facture_1 + FROM w_factures_eclatees + WHERE w_factures_comptables.no_facture = w_factures_eclatees.no_facture AND + w_factures_comptables.date_comptable = w_factures_eclatees.date_vente AND + w_factures_eclatees.nb = 1 AND + w_factures_comptables.no_facture <> no_facture_1 + ; + + + + + -- Eclater si plusieurs + DELETE FROM w_factures_eclatees WHERE nb = 1; + + INSERT INTO w_factures_comptables( + no_facture, + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_ventes_h, + montant_reglements_h) + SELECT p_factures.no_facture, + p_factures.date_vente, + p_factures.montant_comptabilise_c, + 0, + 0, + 0 + FROM w_factures_comptables + JOIN w_factures_eclatees ON + w_factures_comptables.no_facture = w_factures_eclatees.no_facture AND + w_factures_comptables.date_comptable = w_factures_eclatees.date_vente AND + w_factures_comptables.montant_ventes_c = w_factures_eclatees.montant_comptabilise_c + JOIN activite[PX].p_factures ON p_factures.no_facture = ANY(no_factures_array) AND + p_factures.no_facture <> w_factures_eclatees.no_facture_1 + ; + + UPDATE w_factures_comptables + SET no_facture = no_facture_1, + montant_ventes_c = p_factures.montant_comptabilise_c + FROM w_factures_eclatees + JOIN activite[PX].p_factures ON p_factures.no_facture = no_facture_1 + WHERE w_factures_comptables.no_facture = w_factures_eclatees.no_facture AND + w_factures_comptables.date_comptable = w_factures_eclatees.date_vente + ; + + -- Ajout des règlements (déjà éclatés) + INSERT INTO w_factures_comptables + SELECT + MC_FACNUM_CTI::text AS no_facture, + date(CASE WHEN date_part('year',MC_DATECR) = MC_EXER THEN MC_DATECR ELSE to_date(MC_EXER||'-12-31','YYYY-MM-DD') END) AS date_comptable, + 0 AS montant_ventes_c, + SUM(MC_MON_REG) AS montant_reglements_c, + 0 AS montant_ventes_h, + 0 AS montant_reglements_h + FROM w_MOUV_COMPTA_REG + WHERE date(CASE WHEN date_part('year',MC_DATECR) = MC_EXER THEN MC_DATECR ELSE to_date(MC_EXER||'-12-31','YYYY-MM-DD') END) >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1,2 + ; + + -- Validation + + TRUNCATE activite[PX].p_factures_comptables; + + INSERT INTO activite[PX].p_factures_comptables + ( + no_facture, + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_ventes_h, + montant_reglements_h + ) + SELECT no_facture, + date_comptable, + SUM(montant_ventes_c), + SUM(montant_reglements_c), + 0 AS montant_ventes_h, + 0 AS montant_reglements_h + FROM w_factures_comptables + GROUP BY 1,2 + ; + + + ]]> + + + + + + + + + + + + + + + + + '' THEN SA_UFHEBERG + WHEN t_divers.valeur = '1' THEN MH_SACODE + WHEN MH_UFHEBER <> '' THEN MH_UFHEBER + WHEN SA_CODE IS NOT NULL AND SA_UFHEBERG <> '' THEN SA_UFHEBERG + ELSE MH_UFCODE + END AS MH_ETCODE_CTI, + CASE + WHEN t_divers.valeur = '1' THEN CASE WHEN MH_SACODE <> '' THEN CASE WHEN MH_LICODE <> '' THEN MH_LICODE ELSE '0' END ELSE '' END + ELSE CASE WHEN MH_LICODE <> '' AND MH_LICODE <> MH_UFCODE AND MH_LICODE <> MH_UFHEBER THEN MH_LICODE WHEN MH_SACODE <> '' AND MH_SACODE <> MH_UFCODE AND MH_SACODE <> MH_UFHEBER THEN MH_SACODE ELSE '0' END + END AS MH_LICODE_CTI, + ''::text AS MH_ELCODE_CTI + FROM prod_cerner.MOUV_HOSPI + JOIN prod_cerner.HOSPITALISATION ON HO_NUM = MH_HONUM + LEFT JOIN prod_cerner.SALLE ON MH_SACODE = SA_CODE + JOIN activite.t_divers ON t_divers.code = 'CERNER_SALLE=ETAGE' + + ; + + UPDATE w_MOUV_HOSPI_source + SET MH_DFIN = '20991231', MH_HFIN = now() + WHERE MH_DFIN IS NULL + ; + + + -- Modification Spécifique SJSL pour les urgences (nouvelle version CERNER) + UPDATE w_MOUV_HOSPI_source + SET MH_UFCODE = 'UR21', MH_COMM = '*URG*' + WHERE MH_URGORG = 'UR21' AND MH_UFCODE <> 'CS21' AND MH_UFCODE <> 'UR21' AND MH_DDEB >= '[ENV_ADM_ANNEEDEBUT]0101' + ; + + UPDATE w_MOUV_HOSPI_source + SET MH_UFHEBER = 'UR00', MH_COMM = '*URG*' + WHERE MH_SACODE = 'UR00' AND MH_UFHEBER <> 'UR00' AND MH_DDEB >= '[ENV_ADM_ANNEEDEBUT]0101' + ; + + + CREATE INDEX w_MOUV_HOSPI_source_MH_MANUMDOS + ON w_MOUV_HOSPI_source + USING btree + (MH_MANUMDOS); + + + -- Spécifique Saint Joseph St Luc + -- Le premier mouveement transfert urgence sur hospit = Etage = UR00 + UPDATE w_MOUV_HOSPI_source SET + MH_ETCODE_CTI = 'UR00', MH_LICODE_CTI = '0' + WHERE MH_ID IN + ( + SELECT w_MOUV_HOSPI_source_HOS.MH_ID + FROM w_MOUV_HOSPI_source w_MOUV_HOSPI_source_URG + JOIN w_MOUV_HOSPI_source w_MOUV_HOSPI_source_HOS ON + w_MOUV_HOSPI_source_URG.MH_MANUMDOS = w_MOUV_HOSPI_source_HOS.MH_MANUMDOS AND + w_MOUV_HOSPI_source_URG.MH_DDEB = w_MOUV_HOSPI_source_HOS.MH_DDEB AND + to_char(w_MOUV_HOSPI_source_URG.MH_HDEB,'HH24MISS') = to_char(w_MOUV_HOSPI_source_HOS.MH_HDEB,'HH24MISS') AND + w_MOUV_HOSPI_source_URG.MH_DFIN = w_MOUV_HOSPI_source_HOS.MH_DFIN AND + to_char(w_MOUV_HOSPI_source_URG.MH_HFIN,'HH24MISS') = to_char(w_MOUV_HOSPI_source_HOS.MH_HFIN,'HH24MISS') AND + w_MOUV_HOSPI_source_URG.MH_UFSOR = w_MOUV_HOSPI_source_HOS.MH_UFCODE AND + w_MOUV_HOSPI_source_URG.MH_HONUM <> w_MOUV_HOSPI_source_HOS.MH_HONUM + JOIN base.t_finess ON t_finess.Code = '690805361' + WHERE w_MOUV_HOSPI_source_URG.MH_RSCODSOR = 'UH' AND + w_MOUV_HOSPI_source_HOS.MH_RSCODENT = 'UH' AND + w_MOUV_HOSPI_source_HOS.MH_ETCODE_CTI <> 'UR00' + ) + ; + + UPDATE w_MOUV_HOSPI_source SET + MH_ETCODE_CTI = 'UR00', MH_LICODE_CTI = '0' + WHERE MH_ID IN + ( + SELECT w_MOUV_HOSPI_source_HOS.MH_ID + FROM w_MOUV_HOSPI_source w_MOUV_HOSPI_source_URG + JOIN w_MOUV_HOSPI_source w_MOUV_HOSPI_source_HOS ON + w_MOUV_HOSPI_source_URG.MH_MANUMDOS = w_MOUV_HOSPI_source_HOS.MH_MANUMDOS AND + w_MOUV_HOSPI_source_URG.MH_DDEB = w_MOUV_HOSPI_source_HOS.MH_DDEB AND + to_char(w_MOUV_HOSPI_source_URG.MH_HDEB,'HH24MISS') = to_char(w_MOUV_HOSPI_source_HOS.MH_HDEB,'HH24MISS') AND + w_MOUV_HOSPI_source_URG.MH_DFIN = w_MOUV_HOSPI_source_HOS.MH_DFIN AND + to_char(w_MOUV_HOSPI_source_URG.MH_HFIN,'HH24MISS') = to_char(w_MOUV_HOSPI_source_HOS.MH_HFIN,'HH24MISS') AND + w_MOUV_HOSPI_source_URG.MH_HONUM <> w_MOUV_HOSPI_source_HOS.MH_HONUM + JOIN base.t_finess ON t_finess.Code = '690805361' + WHERE w_MOUV_HOSPI_source_URG.MH_RSCODSOR = 'UH' AND + w_MOUV_HOSPI_source_HOS.MH_RSCODENT = 'UH' AND + w_MOUV_HOSPI_source_HOS.MH_ETCODE_CTI <> 'UR00' + ) + ; + + UPDATE w_MOUV_HOSPI_source SET + MH_ETCODE_CTI = 'UR00', MH_LICODE_CTI = '0' + WHERE MH_ID IN + ( + SELECT w_MOUV_HOSPI_source_HOS.MH_ID + FROM w_MOUV_HOSPI_source w_MOUV_HOSPI_source_URG + JOIN w_MOUV_HOSPI_source w_MOUV_HOSPI_source_HOS ON + w_MOUV_HOSPI_source_URG.MH_MANUMDOS = w_MOUV_HOSPI_source_HOS.MH_MANUMDOS AND + w_MOUV_HOSPI_source_URG.MH_DDEB = w_MOUV_HOSPI_source_HOS.MH_DDEB AND + to_char(w_MOUV_HOSPI_source_URG.MH_HDEB,'HH24MISS') = to_char(w_MOUV_HOSPI_source_HOS.MH_HDEB,'HH24MISS') AND + w_MOUV_HOSPI_source_URG.MH_HONUM <> w_MOUV_HOSPI_source_HOS.MH_HONUM + JOIN base.t_finess ON t_finess.Code = '690805361' + WHERE w_MOUV_HOSPI_source_URG.MH_RSCODSOR = 'UH' AND + w_MOUV_HOSPI_source_HOS.MH_RSCODENT = 'UH' AND + w_MOUV_HOSPI_source_HOS.MH_ETCODE_CTI <> 'UR00' + ) + ; + + UPDATE w_MOUV_HOSPI_source + SET MH_ELCODE_CTI = MH_ETCODE_CTI || '|' || MH_LICODE_CTI + WHERE MH_LICODE_CTI <> '' + ; + + + ANALYSE w_MOUV_HOSPI_source; + + CREATE INDEX w_MOUV_HOSPI_source_i1 + ON w_MOUV_HOSPI_source + USING btree + (MH_HONUM); + + CREATE INDEX w_MOUV_HOSPI_source_i2 + ON w_MOUV_HOSPI_source + USING btree + (MH_INCODE); + + CREATE INDEX w_MOUV_HOSPI_source_i3 + ON w_MOUV_HOSPI_source + USING btree + (MH_UFCODE); + + -- Fusion des urgences hospitalisés (SJSL < [ENV_ADM_ANNEEDEBUT]0630) + DROP TABLE IF EXISTS w_FUSION_UR21; + CREATE TEMP TABLE w_FUSION_UR21 AS + SELECT MH_MANUMDOS, MH_DDEB, MH_HDEB, + MAX(CASE WHEN MH_UFCODE = 'UR21' THEN MH_HONUM ELSE 0 END) AS MH_HONUM_urg, + MAX(CASE WHEN MH_UFCODE <> 'UR21' THEN MH_HONUM ELSE 0 END) AS MH_HONUM_hos, + MAX(CASE WHEN MH_UFCODE = 'UR21' THEN MH_UFCODE ELSE '' END) AS MH_UFHEBER_urg, + MAX(CASE WHEN MH_UFCODE = 'UR21' THEN MH_ETCODE_CTI ELSE '' END) AS MH_ETCODE_CTI_urg, + MAX(CASE WHEN MH_UFCODE = 'UR21' THEN MH_LICODE_CTI ELSE '' END) AS MH_LICODE_CTI_urg, + MAX(CASE WHEN MH_UFCODE = 'UR21' THEN MH_ELCODE_CTI ELSE '' END) AS MH_ELCODE_CTI_urg + FROM w_MOUV_HOSPI_source + JOIN prod_cerner.HOSPITALISATION ON + HO_NUM = MH_HONUM AND + MH_DDEB = HO_DDEB AND + HO_VALID <> 'X' + WHERE MH_UFCODE <> 'CS21' + GROUP BY 1,2,3 + HAVING count(*) > 1 AND + MAX(CASE WHEN MH_UFCODE = 'UR21' THEN MH_HONUM ELSE 0 END) > 0 AND + MAX(CASE WHEN MH_UFCODE <> 'UR21' THEN MH_HONUM ELSE 0 END) > 0 + ; + + UPDATE w_MOUV_HOSPI_source SET + MH_UFCODE = 'UR21', + MH_UFHEBER = MH_UFHEBER_urg, + MH_ETCODE_CTI = MH_ETCODE_CTI_urg, + MH_LICODE_CTI = MH_LICODE_CTI_urg, + MH_ELCODE_CTI = MH_ELCODE_CTI_urg + FROM w_FUSION_UR21 + WHERE w_MOUV_HOSPI_source.MH_HONUM = w_FUSION_UR21.MH_HONUM_hos AND + w_MOUV_HOSPI_source.MH_DDEB = w_FUSION_UR21.MH_DDEB AND + w_MOUV_HOSPI_source.MH_HDEB = w_FUSION_UR21.MH_HDEB + ; + + UPDATE prod_cerner.HOSPITALISATION + SET HO_VALID = 'U' + FROM w_FUSION_UR21 + WHERE HOSPITALISATION.HO_NUM = MH_HONUM_urg + ; + + ]]> + + + + + + + + substr(translate(IN_NOM,' -=()''',''),1,5) || substr(translate(IN_PRENOM,' -=()''',''),1,2) OR + t_medecins_administratifs.nom <> IN_NOM OR + t_medecins_administratifs.nom <> IN_NOM OR + t_medecins_administratifs.prenom <> IN_PRENOM OR + t_medecins_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid,0) OR + t_medecins_administratifs.medecin_id <> w_medecins.medecin_id OR + t_medecins_administratifs.no_adeli <> w_medecins.IN_IDNATIONAL + ); + + UPDATE base.t_medecins SET specialite_id = subview.specialite_id + FROM + (SELECT t_medecins.oid, MIN(t_medecins_administratifs.specialite_id) as specialite_id + FROM base.t_medecins, activite[PX].t_medecins_administratifs , base.t_specialites_medecin + WHERE t_medecins.oid = t_medecins_administratifs.medecin_id + AND t_medecins_administratifs.specialite_id = t_specialites_medecin.oid + GROUP BY t_medecins.oid) subview + WHERE t_medecins.oid = subview.oid AND t_medecins.oid <> 0 AND t_medecins.specialite_id = 0; + + ]]> + + + + '' + GROUP BY 1 + ORDER BY 1; + + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, nb_lits, type_t2a) + SELECT UF_CODE, UF_CODE, UF_LIB, UF_LIB, 0 AS nb_lits, '0' AS type_t2a + FROM prod_cerner.UF + WHERE UF_CODE NOT IN (SELECT code_original FROM activite[PX].t_services_facturation WHERE code_original IS NOT NULL) AND + UF_CODE IN (SELECT NGAP_UFXCODE FROM prod_cerner.PASSAGE_NGAP) + ORDER BY UF_CODE; + + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, nb_lits, type_t2a) + SELECT UF_CODE, UF_CODE, UF_LIB, UF_LIB, 0 AS nb_lits, '0' AS type_t2a + FROM prod_cerner.UF + WHERE UF_CODE NOT IN (SELECT code_original FROM activite[PX].t_services_facturation WHERE code_original IS NOT NULL) AND + UF_CODE IN (SELECT CDAM_UFXCODE FROM prod_cerner.PASSAGE_CDAM) + ORDER BY UF_CODE; + + UPDATE activite[PX].t_services_facturation + SET mode_traitement_id = COALESCE(t_modes_traitement.oid,0) + FROM prod_cerner.UF + LEFT JOIN base.t_modes_traitement ON UF_ACTIVITE = t_modes_traitement.code + WHERE t_services_facturation.code_original = UF_CODE AND + COALESCE(mode_traitement_id,0) = 0 AND + COALESCE(mode_traitement_id,0) <> COALESCE(t_modes_traitement.oid,0); + + INSERT INTO base.t_dmt(code_original, code, texte, texte_court) + SELECT DP_CODE, DP_CODE, DP_LIB, DP_LIB + FROM prod_cerner.DISP_PRES + WHERE DP_CODE NOT IN (SELECT code FROM base.t_dmt WHERE code IS NOT NULL) AND + DP_CODE <> '' + GROUP BY 1,2,3,4 + ORDER BY 1; + + UPDATE activite[PX].t_services_facturation + SET dmt_id = COALESCE(t_dmt.oid,0) + FROM prod_cerner.UF + LEFT JOIN base.t_dmt ON UF_DPCODE = t_dmt.code + WHERE t_services_facturation.code_original = UF_CODE AND + COALESCE(dmt_id,0) = 0 AND + COALESCE(dmt_id,0) <> COALESCE(t_dmt.oid,0); + + UPDATE activite[PX].t_services_facturation + SET dmt_id = COALESCE(t_dmt.oid,0) + FROM prod_cerner.UF + LEFT JOIN base.t_dmt ON UF_DECODE = t_dmt.code + WHERE t_services_facturation.code_original = UF_CODE AND + COALESCE(dmt_id,0) = 0 AND + COALESCE(dmt_id,0) <> COALESCE(t_dmt.oid,0); + + -- Unités fonctionnelles + + INSERT INTO activite[PX].t_unites_fonctionnelles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_fonctionnelles); + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT UF_CODE, UF_CODE, UF_LIB, UF_LIB + FROM prod_cerner.UF + WHERE UF_CODE NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles WHERE code_original IS NOT NULL) AND + UF_CODE IN (SELECT MH_UFCODE FROM w_MOUV_HOSPI_source) + ORDER BY UF_CODE; + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT UF_CODE, UF_CODE, UF_LIB, UF_LIB + FROM prod_cerner.UF + WHERE UF_CODE NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles WHERE code_original IS NOT NULL) AND + UF_CODE IN (SELECT NGAP_UFXCODE FROM prod_cerner.PASSAGE_NGAP) + ORDER BY UF_CODE; + + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT UF_CODE, UF_CODE, UF_LIB, UF_LIB + FROM prod_cerner.UF + WHERE UF_CODE NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles WHERE code_original IS NOT NULL) AND + UF_CODE IN (SELECT CDAM_UFXCODE FROM prod_cerner.PASSAGE_CDAM) + ORDER BY UF_CODE; + + UPDATE activite[PX].t_unites_fonctionnelles SET + code = UF_CODE, + texte = UF_LIB, + texte_court = CASE WHEN texte_court = texte THEN UF_LIB ELSE texte_court END + FROM prod_cerner.UF + WHERE UF_CODE = code_original AND + ( + code IS DISTINCT FROM UF_CODE OR + texte IS DISTINCT FROM UF_LIB OR + texte_court IS DISTINCT FROM CASE WHEN texte_court = texte THEN UF_LIB ELSE texte_court END + ); + + -- Unités médicales + + INSERT INTO activite[PX].t_unites_medicales(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_medicales); + + INSERT INTO activite[PX].t_unites_medicales(code_original, code, texte, texte_court) + SELECT code_original, code, texte, texte_court + FROM activite[PX].t_unites_fonctionnelles + WHERE t_unites_fonctionnelles.oid <> 0 AND + t_unites_fonctionnelles.code_original NOT IN (SELECT t_unites_medicales.code_original FROM activite[PX].t_unites_medicales WHERE code_original IS NOT NULL) + ORDER BY code; + + + UPDATE activite[PX].t_unites_medicales SET + code = t_unites_fonctionnelles.code, + texte = t_unites_fonctionnelles.texte, + texte_court = t_unites_fonctionnelles.texte_court + FROM activite[PX].t_unites_fonctionnelles + WHERE t_unites_medicales.code_original = t_unites_fonctionnelles.code_original AND + t_unites_medicales.oid <> 0 AND + ( + t_unites_medicales.code IS DISTINCT FROM t_unites_fonctionnelles.code OR + t_unites_medicales.texte IS DISTINCT FROM t_unites_fonctionnelles.texte OR + t_unites_medicales.texte_court IS DISTINCT FROM t_unites_fonctionnelles.texte_court + ); + + -- Activités + + INSERT INTO activite[PX].t_activites(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_activites); + + INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court) + SELECT RE_CODE, RE_CODE, RE_LIB, RE_LIB + FROM prod_cerner.REGROUPEMENT + WHERE RE_CODE NOT IN (SELECT code_original FROM activite[PX].t_activites WHERE code_original IS NOT NULL) AND + RE_CODE IN (SELECT HO_RECODE FROM prod_cerner.HOSPITALISATION) + ORDER BY RE_CODE; + + + UPDATE activite[PX].t_activites SET + code = RE_CODE, + texte = RE_LIB, + texte_court = RE_LIB + FROM prod_cerner.REGROUPEMENT + WHERE RE_CODE = code_original AND + ( + t_activites.code IS DISTINCT FROM RE_CODE OR + t_activites.texte IS DISTINCT FROM RE_LIB OR + t_activites.texte_court IS DISTINCT FROM RE_LIB + ) + ; + -- Etages et lits + + + + + + INSERT INTO activite[PX].t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_etages); + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT MH_ETCODE_CTI, MH_ETCODE_CTI, MH_ETCODE_CTI, MH_ETCODE_CTI, 0 + FROM w_MOUV_HOSPI_source + WHERE MH_ETCODE_CTI <> '' AND + MH_ETCODE_CTI NOT IN (SELECT code_original FROM activite[PX].t_etages WHERE code_original IS NOT NULL) + GROUP BY 1 + ORDER BY MH_ETCODE_CTI; + + + UPDATE activite[PX].t_etages SET + code = UF_CODE, + texte = UF_LIB, + texte_court = CASE WHEN texte_court = t_etages.texte THEN UF_LIB ELSE t_etages.texte_court END + FROM prod_cerner.UF + JOIN activite.t_divers ON t_divers.code = 'CERNER_SALLE=ETAGE' AND t_divers.valeur IS DISTINCT FROM '1' + WHERE UF_CODE = code_original AND + ( + t_etages.code IS DISTINCT FROM UF_CODE OR + t_etages.texte IS DISTINCT FROM UF_LIB OR + t_etages.texte_court IS DISTINCT FROM CASE WHEN texte_court = t_etages.texte THEN UF_LIB ELSE t_etages.texte_court END + ); + + UPDATE activite[PX].t_etages SET + code = SA_CODE, + texte = SA_LIB, + texte_court = CASE WHEN texte_court = t_etages.texte THEN SA_LIB ELSE t_etages.texte_court END + FROM prod_cerner.SALLE + JOIN activite.t_divers ON t_divers.code = 'CERNER_SALLE=ETAGE' AND t_divers.valeur = '1' + WHERE SA_CODE = code_original AND + ( + t_etages.code IS DISTINCT FROM SA_CODE OR + t_etages.texte IS DISTINCT FROM SA_LIB OR + t_etages.texte_court IS DISTINCT FROM CASE WHEN texte_court = t_etages.texte THEN SA_LIB ELSE t_etages.texte_court END + ); + + + + INSERT INTO activite[PX].t_lits(oid, code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0, 'N' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_lits); + + DROP TABLE IF EXISTS w_lits; + CREATE TEMP TABLE w_lits AS + SELECT + MH_ETCODE_CTI AS etage_code, + ''::text AS etage_texte, + MH_LICODE_CTI AS lit_code, + ''::text AS lit_texte, + MH_ELCODE_CTI AS lit_code_original, + 0::bigint AS lit_id + FROM w_MOUV_HOSPI_source + WHERE MH_ELCODE_CTI <> '' + GROUP BY 1,2,3,4,5,6 + ORDER BY 1,2,3,4,5,6; + + + + UPDATE w_lits + SET lit_texte = LI_LIB + FROM prod_cerner.LIT + WHERE LI_CODE = lit_code + ; + + UPDATE w_lits + SET lit_texte = SA_LIB + FROM prod_cerner.SALLE + WHERE SA_CODE = lit_code AND + lit_texte = '' + ; + + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT lit_code_original, lit_code, lit_texte, lit_texte, + t_etages.oid, CASE WHEN lit_texte ilike '%individuel%' THEN 'O' ELSE 'N' END AS chambre_particuliere + FROM w_lits + JOIN activite[PX].t_etages ON etage_code = t_etages.code_original + WHERE lit_code_original <> '' AND + lit_code_original NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL) + GROUP BY 1,2,3,4,5,6 + ORDER BY 1; + + UPDATE w_lits + SET lit_id = t_lits.oid + FROM activite[PX].t_lits + WHERE lit_code_original = t_lits.code_original + ; + + UPDATE activite[PX].t_lits SET + code = lit_code, + texte = lit_texte, + texte_court = lit_texte + FROM w_lits + WHERE lit_code_original = code_original AND + ( + t_lits.code IS DISTINCT FROM lit_code OR + t_lits.texte IS DISTINCT FROM lit_texte OR + t_lits.texte_court IS DISTINCT FROM lit_texte + ) + ; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT code_original || '|0' , '', 'Non renseigné', 'Non renseigné', oid, 'O' + FROM activite[PX].t_etages + WHERE oid > 0 AND + code_original || '|0' NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL ); + + ]]> + + + + '' AND + CT_CODE NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + GROUP BY 1 + ORDER BY 1; + + UPDATE activite[PX].t_rubriques_facturation SET + code = CT_CODE, + texte = CT_LIB, + texte_court = CT_LIB + FROM + ( + SELECT + CT_CODE, + MAX(CT_LIB) AS CT_LIB + FROM prod_cerner.CODE_TARIF + WHERE CT_CODE <> '' + GROUP BY 1 + ) subview + WHERE CT_CODE = code_original AND + ( + t_rubriques_facturation.code IS DISTINCT FROM CT_CODE OR + t_rubriques_facturation.texte IS DISTINCT FROM CT_LIB OR + t_rubriques_facturation.texte_court IS DISTINCT FROM CT_LIB + ) + ; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT LC_CODE, LC_CODE, (MAX(ARRAY[LC_DDEB::text,LC_LIB]))[2], (MAX(ARRAY[LC_DDEB::text,LC_LIB]))[2] + FROM prod_cerner.LETTRE_CLE + WHERE LC_LIB <> '' AND + LC_CODE NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + GROUP BY 1 + ORDER BY 1; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT LC_CODE, LC_CODE, LC_CODE, LC_CODE + FROM prod_cerner.LETTRE_CLE + WHERE LC_LIB = '' AND + LC_CODE NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + GROUP BY 1 + ORDER BY 1; + + UPDATE activite[PX].t_rubriques_facturation SET + code = LC_CODE, + texte = LC_DDEB, + texte_court = LC_DDEB + FROM + ( + SELECT + LC_CODE, + (MAX(ARRAY[LC_DDEB::text,LC_LIB]))[2] AS LC_DDEB + FROM prod_cerner.LETTRE_CLE + WHERE LC_CODE <> '' + GROUP BY 1 + ) subview + WHERE LC_CODE = code_original AND + ( + t_rubriques_facturation.code IS DISTINCT FROM LC_CODE OR + t_rubriques_facturation.texte IS DISTINCT FROM LC_DDEB OR + t_rubriques_facturation.texte_court IS DISTINCT FROM LC_DDEB + ) + ; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT CT_LET, CT_LET, MAX(CT_LIB), MAX(CT_LIB) + FROM prod_cerner.CODE_TARIF + WHERE CT_LET <> '' AND + CT_LET NOT IN (SELECT LC_CODE FROM prod_cerner.LETTRE_CLE) AND + CT_LET NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + GROUP BY 1 + ORDER BY 1; + + + UPDATE activite[PX].t_rubriques_facturation + SET texte = CT_LIB, texte_court = CT_LIB + FROM + ( + SELECT CT_LET, MAX(CT_LIB) AS CT_LIB + FROM prod_cerner.CODE_TARIF + JOIN activite[PX].t_rubriques_facturation ON CT_LET = code_original + WHERE t_rubriques_facturation.code = t_rubriques_facturation.texte + GROUP BY 1 + HAVING count(DISTINCT CT_LIB) = 1 AND + MAX(CT_LIB) <> CT_LET + ) subview + WHERE subview.CT_LET = t_rubriques_facturation.code_original + ; + + + + + INSERT INTO activite.t_prestations(oid, code_original, code, texte, texte_court, clinique_honoraire) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée', '' WHERE 0 NOT IN (SELECT oid FROM activite.t_prestations); + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT CT_LET, CT_LET, MAX(CT_LIB), MAX(CT_LIB) + FROM prod_cerner.CODE_TARIF + WHERE CT_LET <> '' AND + CT_LET NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + GROUP BY 1 + ORDER BY 1; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT LC_CODEB2, LC_CODEB2, MAX(LC_CODEB2), MAX(LC_CODEB2) + FROM prod_cerner.LETTRE_CLE + WHERE LC_CODEB2 <> '' AND + LC_CODEB2 NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + GROUP BY 1 + ORDER BY 1 + ; + + + + + INSERT INTO activite[PX].t_compte(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_compte); + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT MC_COMPTE,MC_COMPTE,MC_COMPTE,MC_COMPTE + FROM prod_cerner.MOUV_COMPTA + WHERE MC_COMPTE <> '' AND + MC_COMPTE <> '0' AND + MC_COMPTE NOT IN (SELECT code_original FROM activite[PX].t_compte WHERE code_original IS NOT NULL) + GROUP BY 1 + ORDER BY 1 + ; + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT FAD_COMPTE,FAD_COMPTE,FAD_COMPTE,FAD_COMPTE + FROM prod_cerner.FACTURE_DET + WHERE FAD_COMPTE <> '' AND + FAD_COMPTE <> '0' AND + FAD_COMPTE NOT IN (SELECT code_original FROM activite[PX].t_compte WHERE code_original IS NOT NULL) + GROUP BY 1 + ORDER BY 1 + ; + + UPDATE activite[PX].t_compte SET + code = MC_COMPTE, + texte = MC_COMPTE, + texte_court = MC_COMPTE + FROM prod_cerner.MOUV_COMPTA + WHERE MC_COMPTE = code_original AND + ( + t_compte.code IS DISTINCT FROM MC_COMPTE OR + t_compte.texte IS DISTINCT FROM MC_COMPTE OR + t_compte.texte_court IS DISTINCT FROM MC_COMPTE + ) + ; + + UPDATE activite[PX].t_compte SET + code = FAD_COMPTE, + texte = FAD_COMPTE, + texte_court = FAD_COMPTE + FROM prod_cerner.FACTURE_DET + WHERE FAD_COMPTE = code_original AND + ( + t_compte.code IS DISTINCT FROM FAD_COMPTE OR + t_compte.texte IS DISTINCT FROM FAD_COMPTE OR + t_compte.texte_court IS DISTINCT FROM FAD_COMPTE + ) + ; + + ]]> + + + + + + + + + + '2099-12-31'; + + -- Si deux factures (une pour tp1 et une pour patient, il ne faut pas la quantité sur cette du patient + DROP TABLE IF EXISTS w_factures_lignes_quantite_0; + CREATE TEMP TABLE w_factures_lignes_quantite_0 AS + SELECT p_factures.no_sejour, p_factures_lignes_c.date_debut, prestation_id, rubrique_facturation_id + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_sejours.type_sejour = '3' AND + nb_prestation <> 0 + GROUP BY 1,2,3,4 + HAVING count(*) > 1 AND + MAX(CASE WHEN montant_facture_1 <> 0 THEN 1 ELSE 0 END) = 1 AND + MAX(CASE WHEN montant_facture_1 = 0 AND (montant_facture_2 <> 0 OR montant_facture_0 <> 0) THEN 1 ELSE 0 END) = 1 + ; + + ANALYSE w_factures_lignes_quantite_0 + ; + + UPDATE activite[PX].p_factures_lignes_c SET + nb_prestation = 0, + nb_rubrique = 0 + FROM activite[PX].p_factures, + w_factures_lignes_quantite_0 + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = w_factures_lignes_quantite_0.no_sejour AND + p_factures_lignes_c.date_debut = w_factures_lignes_quantite_0.date_debut AND + p_factures_lignes_c.prestation_id = w_factures_lignes_quantite_0.prestation_id AND + p_factures_lignes_c.rubrique_facturation_id = w_factures_lignes_quantite_0.rubrique_facturation_id AND + montant_facture_1 = 0 AND (montant_facture_2 <> 0 OR montant_facture_0 <> 0) + + + ]]> + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.date_groupage, + p_sejours.ghs_id, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour, + + 0::numeric AS delai_groupage, + 0::numeric AS delai_facture, + 0::numeric AS delai_expedition, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_solde_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_solde_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_solde_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_22 + + FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY 1,2,3,4,5; + + + UPDATE w_sejours_total + SET date_groupage = date_facture + WHERE (date_groupage IS null OR date_groupage = '20991231' OR date_groupage = '00010101') AND + date_facture <> '2099-12-31'; + + + UPDATE w_sejours_total SET + date_groupage = CASE WHEN date_groupage > '00010101' THEN date_groupage ELSE '20991231' END, + date_facture = CASE WHEN date_facture> '00010101' THEN date_facture ELSE '20991231' END, + date_expedition = CASE WHEN date_expedition > '00010101' THEN date_expedition ELSE '20991231' END, + date_solde = CASE WHEN date_solde > '00010101' THEN date_solde ELSE '20991231' END, + date_expedition_0 = CASE WHEN date_expedition_0 > '00010101' THEN date_expedition_0 ELSE '20991231' END, + date_solde_0 = CASE WHEN date_solde_0 > '00010101' THEN date_solde_0 ELSE '20991231' END, + date_expedition_1 = CASE WHEN date_expedition_1 > '00010101' THEN date_expedition_1 ELSE '20991231' END, + date_solde_1 = CASE WHEN date_solde_1 > '00010101' THEN date_solde_1 ELSE '20991231' END, + date_expedition_2 = CASE WHEN date_expedition_2 > '00010101' THEN date_expedition_2 ELSE '20991231' END, + date_solde_2 = CASE WHEN date_solde_2 > '00010101' THEN date_solde_2 ELSE '20991231' END, + date_expedition_22 = CASE WHEN date_expedition_22 > '00010101' THEN date_expedition_22 ELSE '20991231' END, + date_solde_22 = CASE WHEN date_solde_22 > '00010101' THEN date_solde_22 ELSE '20991231' END; + + + UPDATE w_sejours_total SET + delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END, + delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END, + delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END, + delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END, + delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END, + delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END, + delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END, + delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END, + delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END, + delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END, + delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END, + delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END; + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = w_sejours_total.date_expedition_0, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = w_sejours_total.date_expedition_1, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = w_sejours_total.date_expedition_2, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = w_sejours_total.date_expedition_22, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour, + + + delai_groupage = w_sejours_total.delai_groupage, + delai_facture = w_sejours_total.delai_facture, + delai_expedition = w_sejours_total.delai_expedition, + delai_solde = w_sejours_total.delai_solde, + delai_expedition_0 = w_sejours_total.delai_expedition_0, + delai_solde_0 = w_sejours_total.delai_solde_0, + delai_expedition_1 = w_sejours_total.delai_expedition_1, + delai_solde_1 = w_sejours_total.delai_solde_1, + delai_expedition_2 = w_sejours_total.delai_expedition_2, + delai_solde_2 = w_sejours_total.delai_solde_2, + delai_expedition_22 = w_sejours_total.delai_expedition_22, + delai_solde_22 = w_sejours_total.delai_solde_22 + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM w_sejours_total.date_expedition_0 OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM w_sejours_total.date_expedition_1 OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM w_sejours_total.date_expedition_2 OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM w_sejours_total.date_expedition_22 OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour OR + + p_sejours.delai_groupage IS DISTINCT FROM w_sejours_total.delai_groupage OR + p_sejours.delai_facture IS DISTINCT FROM w_sejours_total.delai_facture OR + p_sejours.delai_expedition IS DISTINCT FROM w_sejours_total.delai_expedition OR + p_sejours.delai_solde IS DISTINCT FROM w_sejours_total.delai_solde OR + p_sejours.delai_expedition_0 IS DISTINCT FROM w_sejours_total.delai_expedition_0 OR + p_sejours.delai_solde_0 IS DISTINCT FROM w_sejours_total.delai_solde_0 OR + p_sejours.delai_expedition_1 IS DISTINCT FROM w_sejours_total.delai_expedition_1 OR + p_sejours.delai_solde_1 IS DISTINCT FROM w_sejours_total.delai_solde_1 OR + p_sejours.delai_expedition_2 IS DISTINCT FROM w_sejours_total.delai_expedition_2 OR + p_sejours.delai_solde_2 IS DISTINCT FROM w_sejours_total.delai_solde_2 OR + p_sejours.delai_expedition_22 IS DISTINCT FROM w_sejours_total.delai_expedition_22 OR + p_sejours.delai_solde_22 IS DISTINCT FROM w_sejours_total.delai_solde_22 + + ); + + + -- Sejours qui n'existe plus dans CERNER + UPDATE activite[PX].p_sejours + SET type_sejour = '9' + WHERE split_part(no_sejour,'.',1) NOT IN (SELECT HO_NUM FROM prod_cerner.HOSPITALISATION) AND type_sejour <> '9' + ; + + DELETE FROM activite[PX].p_mouvements_sejour + WHERE no_sejour IN (SELECT no_sejour FROM activite[PX].p_sejours WHERE type_sejour = '9') + ; + + + ]]> + + + + + + + + + + + + + \ No newline at end of file diff --git a/import_activite/iCTI_import_activite_CHATAIGNERAIE.XML b/import_activite/iCTI_import_activite_CHATAIGNERAIE.XML new file mode 100644 index 0000000..3d57906 --- /dev/null +++ b/import_activite/iCTI_import_activite_CHATAIGNERAIE.XML @@ -0,0 +1,3595 @@ + + + + + + + + 3 AND NODTSO >= '20120101' OR + NDOADM.STID <> 3 AND NODTEN >= '20120101' OR + NDOADM.STID <> 3 AND NODTSO = '00010101' OR + NDOADM.STID <> 3 AND NODTSO IS NULL OR + NONUMA IN ( + SELECT FACTURES.NONUMA + FROM prod_chataigneraie_as400.NXXXFAC_FACTURES FACTURES + WHERE FADAT >= '20120101') OR + NONUMA IN ( + SELECT FACTURES.NONUMA + FROM prod_chataigneraie_as400.NXXXFAC_FACTURES FACTURES + JOIN prod_chataigneraie_as400.XXXFICH_REGLI REGLI ON FACTURES.FAID = REGLI.ACNFAC + WHERE (ACSDTF*100+ACADTF) >= 2012 + ) + ); + + CREATE INDEX w_NDOADM_SELECT_i1 + ON w_NDOADM_SELECT + USING btree + (NONUMA); + + + ]]> + + + + + + + + + + + + + 0 THEN CCAM4_GHS.ghs ELSE 0 END),0) AS GHS_bebe_code, + MAX(COALESCE(CASE WHEN STDEV_SEJBEBE.BENU > 0 THEN t_ghs.oid ELSE 0 END,0)) AS ghs_bebe_id, + COALESCE(MAX(CASE WHEN STDEV_SEJBEBE.BENU > 0 THEN CCAM4_GHM.code ELSE '' END),'') AS GHM_bebe_code, + MAX(COALESCE(CASE WHEN STDEV_SEJBEBE.BENU > 0 THEN t_ghm.oid ELSE 0 END,0)) AS ghm_bebe_id, + CASE WHEN MAX(GHMOK) = 1 THEN date(COALESCE(MAX(GREATEST(DATEPRVAL,DATEDRVAL)),'20991231')) ELSE '20991231' END AS DATEDRVAL, + COALESCE(MAX(to_char(MVTLIEU_DEB.MDEID,'FM9')),'8') AS MDEID, + COALESCE(MAX(CASE WHEN MVTLIEU_DEB.PREID <> 0 THEN to_char(MVTLIEU_DEB.PREID,'FM0') ELSE '' END),'') AS PREID, + COALESCE(MAX(to_char(MVTLIEU_FIN.MDSID,'FM9')),'8') AS MDSID, + COALESCE(MAX(CASE WHEN MVTLIEU_DEB.DEEID <> 0 THEN to_char(MVTLIEU_DEB.DEEID,'FM0') ELSE '' END),'') AS DEEID + FROM w_NDOADM_SELECT + LEFT JOIN prod_chataigneraie_mysql.STDEV_SEJBEBE ON STDEV_SEJBEBE.SENUM = NONUMA AND STDEV_SEJBEBE.IDETAB = w_NDOADM_SELECT.IDETAB + LEFT JOIN prod_chataigneraie_mysql.STDEV_RUM ON + STDEV_RUM.SENUMD = STDEV_SEJBEBE.SENUM AND + STDEV_RUM.IDETAB = STDEV_SEJBEBE.IDETAB AND + STDEV_RUM.DUUNIQ = STDEV_SEJBEBE.DUUNIQ + LEFT JOIN prod_chataigneraie_mysql.STDEV_MVTLIEU MVTLIEU_DEB ON + STDEV_RUM.IDETAB = MVTLIEU_DEB.IDETAB AND + IDMVTDEB = MVTLIEU_DEB.IDMVTL + LEFT JOIN prod_chataigneraie_mysql.STDEV_MVTLIEU MVTLIEU_FIN ON + STDEV_RUM.IDETAB = MVTLIEU_FIN.IDETAB AND + IDMVTFIN = MVTLIEU_FIN.IDMVTL + LEFT JOIN prod_chataigneraie_mysql.CCAM4_GHM ON CCAM4_GHM.ID = STDEV_RUM.IDGHM + LEFT JOIN prod_chataigneraie_mysql.CCAM4_GHS ON CCAM4_GHS.ID = STDEV_RUM.IDGHS + LEFT JOIN base.t_ghm ON CCAM4_GHM.code = t_ghm.code + LEFT JOIN base.t_ghs ON CCAM4_GHS.ghs = t_ghs.code + GROUP BY 1 + ; + + UPDATE w_NDOADM_GHM + SET DATEDRVAL = '20991231' + WHERE DATEDRVAL = '00010101' + ; + + UPDATE w_NDOADM_GHM SET + ghm_id = ghm_bebe_id, + ghm_code = ghm_bebe_code, + ghs_id = ghs_bebe_id, + ghs_code = ghs_bebe_code, + ghm_bebe_id = 0, + ghm_bebe_code = '', + ghs_bebe_id = 0, + ghs_bebe_code = 0 + WHERE ghm_bebe_id <> 0 AND + ghm_id = 0; + + CREATE INDEX w_NDOADM_GHM_i1 + ON w_NDOADM_GHM + USING btree + (NONUMA); + + -- Médecin + UPDATE w_NDOADM_SELECT + SET medecin_sejour_id = t_medecins_administratifs.oid + FROM activite[PX].t_medecins_administratifs + WHERE t_medecins_administratifs.code_original = DPERNU + ; + + -- Id code postal + UPDATE w_NDOADM_SELECT + SET code_postal_id = t_codes_postaux.oid + FROM base.t_codes_postaux + WHERE t_codes_postaux.code = NOCDPH + ; + + -- Id des Tiers payant + UPDATE w_NDOADM_SELECT + SET tiers_payant_1_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE t_tiers_payant.code_original = ('C'||NOCAIS) + ; + + UPDATE w_NDOADM_SELECT + SET tiers_payant_2_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE t_tiers_payant.code_original = ('M'||NOCMUT) + ; + + UPDATE w_NDOADM_SELECT + SET tiers_payant_0_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE t_tiers_payant.code_original = 'PATIENT' + ; + + + + -- Code service de sortie + UPDATE w_NDOADM_SELECT SET + mode_traitement_id = t_services_facturation.mode_traitement_id, + mode_traitement_code = t_modes_traitement.code, + dmt_code = t_dmt.code + FROM activite[PX].t_services_facturation + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + WHERE w_NDOADM_SELECT.TARID = t_services_facturation.code_original + ; + + -- Date sortie repoussée sur présents + UPDATE w_NDOADM_SELECT SET + NODTSO = date(now()) + WHERE NODTSO < date(now()) AND + SEPRE = 'O' + ; + + + DROP TABLE IF EXISTS w_NDOADM_LIEU; + CREATE TEMP TABLE w_NDOADM_LIEU AS + SELECT + w_NDOADM_SELECT.NONUMA, + 0::bigint AS lieu_id, + MAX(TARID) AS lieu_sortie_service_facturation_code_original, + COALESCE((MAX(Array[(MVDTEN+MVHREN)::text,SPESAE::text]))[2],'0') AS lieu_sortie_activite_code_original, + COALESCE((MAX(Array[(MVDTEN+MVHREN)::text,NMVTCHB.SENU::text]))[2],'0') AS lieu_sortie_etage_code_original, + COALESCE((MAX(Array[(MVDTEN+MVHREN)::text,(NMVTCHB.SENU||'|'||NMVTCHB.LITNU)]))[2],'0') AS lieu_sortie_lit_code_original, + COALESCE((MAX(Array[(MVDTEN+MVHREN)::text,NMVTCHB.SENU::text]))[2],'0') AS lieu_sortie_unite_fonctionnelle_code_original, + '0'::text AS lieu_sortie_unite_medicale_code_original, + '0'::text AS type_sejour_force + FROM w_NDOADM_SELECT + LEFT JOIN prod_chataigneraie_as400.NXXXFAC_NMVTCHB NMVTCHB ON w_NDOADM_SELECT.NONUMA = NMVTCHB.SENUMD AND + MVANNU = '' + GROUP BY 1 + ORDER BY 1 + ; + + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_5, code_original_6) + SELECT lieu_sortie_service_facturation_code_original, + lieu_sortie_activite_code_original, + lieu_sortie_etage_code_original, + lieu_sortie_lit_code_original, + lieu_sortie_unite_fonctionnelle_code_original, + lieu_sortie_unite_medicale_code_original + FROM w_NDOADM_LIEU + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = lieu_sortie_service_facturation_code_original AND + code_original_2 = lieu_sortie_activite_code_original AND + code_original_3 = lieu_sortie_etage_code_original AND + code_original_4 = lieu_sortie_lit_code_original AND + code_original_5 = lieu_sortie_unite_fonctionnelle_code_original AND + code_original_6 = lieu_sortie_unite_medicale_code_original + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5,6; + + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM + activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original AND + (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + activite_id = COALESCE(t_activites.oid,0) + FROM + activite[PX].t_activites + WHERE code_original_6 = t_activites.code_original + AND activite_id <> COALESCE(t_activites.oid,0); + + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + UPDATE activite[PX].t_lieux SET + unite_medicale_id = COALESCE(t_unites_medicales.oid,0) + FROM + activite[PX].t_unites_medicales + WHERE code_original_5 = t_unites_medicales.code_original + AND unite_medicale_id <> COALESCE(t_unites_medicales.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM + activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + UPDATE w_NDOADM_LIEU SET + lieu_id = t_lieux.oid, + type_sejour_force = CASE WHEN t_services_facturation.type_sejour IN ('1', '2', '3', '4', '5') THEN t_services_facturation.type_sejour ELSE '0' END + FROM activite[PX].t_lieux + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE + code_original_1 = lieu_sortie_service_facturation_code_original AND + code_original_2 = lieu_sortie_activite_code_original AND + code_original_3 = lieu_sortie_etage_code_original AND + code_original_4 = lieu_sortie_lit_code_original AND + code_original_5 = lieu_sortie_unite_fonctionnelle_code_original AND + code_original_6 = lieu_sortie_unite_medicale_code_original + ; + + + + + DROP TABLE IF EXISTS w_sejours; + CREATE TEMP TABLE w_sejours AS + SELECT + '000000000'::text AS finess, + w_NDOADM_SELECT.NONUMA as no_sejour, + w_NDOADM_SELECT.NONUMA as code_original, + to_char(DUUNIQ,'FM000000000') as no_patient, + NODTEN as date_entree, + to_char(NOHREN,'HH24MISS')::numeric as heure_entree, + NODTSO as date_sortie, + to_char(NOHRSO,'HH24MISS')::numeric as heure_sortie, + NOSEXH as code_sexe, + 0 AS age, + CASE WHEN SEPRE = 'O' THEN 0 ELSE 1 END::numeric as code_sorti, + CASE WHEN NODTEN > now() THEN 1::numeric ELSE 0::numeric END AS code_prevu, + CASE + WHEN w_NDOADM_SELECT.STID = 3 THEN '9' + WHEN type_sejour_force <> '0' THEN type_sejour_force + WHEN w_NDOADM_GHM.ghm_code LIKE '28%' THEN '5' + WHEN mode_traitement_code IN ('07') OR dmt_code IN ('958') THEN '3' + WHEN mode_traitement_code IN ('03') AND NODTSO = NODTEN THEN '2' + WHEN mode_traitement_code IN ('04') AND NODTSO = NODTEN THEN '2' + WHEN mode_traitement_code IN ('19', '23') AND NODTSO = NODTEN THEN '2' + WHEN mode_traitement_code IN ('03') THEN '1' + WHEN NODTSO = NODTEN THEN '2' + ELSE '1' END as type_sejour, + w_NDOADM_LIEU.lieu_id AS lieu_sortie_id, + w_NDOADM_SELECT.medecin_sejour_id, + w_NDOADM_GHM.ghs_id, + w_NDOADM_GHM.ghm_id, + w_NDOADM_GHM.ghs_bebe_id AS ghs_bebe1_id, + 0::numeric AS ghs_bebe2_id, + 0::numeric AS ghs_bebe3_id, + w_NDOADM_GHM.DATEDRVAL AS DATE_GROUPAGE, + '0'::text AS code_cp_demandee, + w_NDOADM_SELECT.mode_traitement_id, + w_NDOADM_GHM.MDEID AS mode_entree, + w_NDOADM_GHM.PREID AS provenance, + w_NDOADM_GHM.MDSID AS mode_sortie, + w_NDOADM_GHM.DEEID AS destination, + w_NDOADM_SELECT.tiers_payant_0_id, + w_NDOADM_SELECT.tiers_payant_1_id, + w_NDOADM_SELECT.tiers_payant_2_id, + w_NDOADM_SELECT.tiers_payant_22_id, + 0 AS est_budget_global, + w_NDOADM_SELECT.code_postal_id + FROM w_NDOADM_SELECT + JOIN w_NDOADM_GHM ON w_NDOADM_SELECT.NONUMA = w_NDOADM_GHM.NONUMA + JOIN w_NDOADM_LIEU ON w_NDOADM_SELECT.NONUMA = w_NDOADM_LIEU.NONUMA + ; + + + + -- Forcage type selon séjour + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour + FROM activite.t_sejour + WHERE t_sejour.no_sejour = w_sejours.no_sejour AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9'); + + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour + FROM activite.t_sejour + WHERE t_sejour.no_sejour = ('SP_'||w_sejours.no_sejour) AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9'); + + -- FINESS + UPDATE w_sejours + SET finess = t_finess.code + FROM activite[PX].t_lieux + JOIN activite[PX].t_services_facturation on service_facturation_id = t_services_facturation.oid + JOIN base.t_finess ON finess_id = t_finess.oid + WHERE lieu_sortie_id = t_lieux.oid; + + + + -- Validation des séjours + + SELECT base.cti_disable_index('activite', 'i_sejours_2'); + SELECT base.cti_disable_index('activite', 'i_sejours_3'); + SELECT base.cti_disable_index('activite', 'i_sejours_4'); + SELECT base.cti_disable_index('activite', 'i_sejours_5'); + SELECT base.cti_disable_index('activite', 'i_sejours_6'); + SELECT base.cti_disable_index('activite', 'i_sejours_7'); + SELECT base.cti_disable_index('activite', 'i_sejours_8'); + SELECT base.cti_disable_index('activite', 'i_sejours_9'); + SELECT base.cti_disable_index('activite', 'i_sejours_10'); + SELECT base.cti_disable_index('activite', 'i_sejours_11'); + SELECT base.cti_disable_index('activite', 'i_sejours_12'); + SELECT base.cti_disable_index('activite', 'i_sejours_13'); + + UPDATE activite[PX].p_sejours SET + finess = w_sejours.finess, + code_original = w_sejours.code_original, + no_patient = w_sejours.no_patient, + date_entree = w_sejours.date_entree, + heure_entree = w_sejours.heure_entree, + date_sortie = w_sejours.date_sortie, + heure_sortie = w_sejours.heure_sortie, + code_sexe = w_sejours.code_sexe, + age = w_sejours.age, + code_sorti = w_sejours.code_sorti, + code_prevu = w_sejours.code_prevu, + type_sejour = w_sejours.type_sejour, + lieu_sortie_id = w_sejours.lieu_sortie_id, + medecin_sejour_id = w_sejours.medecin_sejour_id, + code_cp_demandee = w_sejours.code_cp_demandee, + mode_traitement_id = w_sejours.mode_traitement_id, + mode_entree = w_sejours.mode_entree, + provenance = w_sejours.provenance, + mode_sortie = w_sejours.mode_sortie, + destination = w_sejours.destination, + tiers_payant_0_id = w_sejours.tiers_payant_0_id, + tiers_payant_1_id = w_sejours.tiers_payant_1_id, + tiers_payant_2_id = w_sejours.tiers_payant_2_id, + tiers_payant_22_id = w_sejours.tiers_payant_22_id, + est_budget_global = w_sejours.est_budget_global, + date_groupage = w_sejours.date_groupage, + ghs_id = w_sejours.ghs_id, + ghm_id = w_sejours.ghm_id, + ghs_bebe1_id = w_sejours.ghs_bebe1_id, + ghs_bebe2_id = w_sejours.ghs_bebe2_id, + ghs_bebe3_id = w_sejours.ghs_bebe3_id, + code_postal_id = w_sejours.code_postal_id + FROM w_sejours + WHERE w_sejours.no_sejour = p_sejours.no_sejour + AND ( + w_sejours.finess IS DISTINCT FROM p_sejours.finess OR + w_sejours.code_original IS DISTINCT FROM p_sejours.code_original OR + w_sejours.no_patient IS DISTINCT FROM p_sejours.no_patient OR + w_sejours.date_entree IS DISTINCT FROM p_sejours.date_entree OR + w_sejours.heure_entree IS DISTINCT FROM p_sejours.heure_entree OR + w_sejours.date_sortie IS DISTINCT FROM p_sejours.date_sortie OR + w_sejours.heure_sortie IS DISTINCT FROM p_sejours.heure_sortie OR + w_sejours.code_sexe IS DISTINCT FROM p_sejours.code_sexe OR + w_sejours.age IS DISTINCT FROM p_sejours.age OR + w_sejours.code_sorti IS DISTINCT FROM p_sejours.code_sorti OR + w_sejours.code_prevu IS DISTINCT FROM p_sejours.code_prevu OR + w_sejours.type_sejour IS DISTINCT FROM p_sejours.type_sejour OR + w_sejours.lieu_sortie_id IS DISTINCT FROM p_sejours.lieu_sortie_id OR + w_sejours.medecin_sejour_id IS DISTINCT FROM p_sejours.medecin_sejour_id OR + w_sejours.code_cp_demandee IS DISTINCT FROM p_sejours.code_cp_demandee OR + w_sejours.mode_traitement_id IS DISTINCT FROM p_sejours.mode_traitement_id OR + w_sejours.mode_entree IS DISTINCT FROM p_sejours.mode_entree OR + w_sejours.provenance IS DISTINCT FROM p_sejours.provenance OR + w_sejours.mode_sortie IS DISTINCT FROM p_sejours.mode_sortie OR + w_sejours.destination IS DISTINCT FROM p_sejours.destination OR + w_sejours.tiers_payant_0_id IS DISTINCT FROM p_sejours.tiers_payant_0_id OR + w_sejours.tiers_payant_1_id IS DISTINCT FROM p_sejours.tiers_payant_1_id OR + w_sejours.tiers_payant_2_id IS DISTINCT FROM p_sejours.tiers_payant_2_id OR + w_sejours.tiers_payant_22_id IS DISTINCT FROM p_sejours.tiers_payant_22_id OR + w_sejours.est_budget_global IS DISTINCT FROM p_sejours.est_budget_global OR + w_sejours.date_groupage IS DISTINCT FROM p_sejours.date_groupage OR + w_sejours.ghs_id IS DISTINCT FROM p_sejours.ghs_id OR + w_sejours.ghm_id IS DISTINCT FROM p_sejours.ghm_id OR + w_sejours.ghs_bebe1_id IS DISTINCT FROM p_sejours.ghs_bebe1_id OR + w_sejours.ghs_bebe2_id IS DISTINCT FROM p_sejours.ghs_bebe2_id OR + w_sejours.ghs_bebe3_id IS DISTINCT FROM p_sejours.ghs_bebe3_id OR + w_sejours.code_postal_id IS DISTINCT FROM p_sejours.code_postal_id + ); + + + INSERT INTO activite[PX].p_sejours ( + finess, + no_sejour, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + lieu_sortie_id, + medecin_sejour_id, + ghs_id, + ghm_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + est_budget_global, + code_postal_id + ) + SELECT + w_sejours.finess, + w_sejours.no_sejour, + w_sejours.code_original, + w_sejours.no_patient, + w_sejours.date_entree, + w_sejours.heure_entree, + w_sejours.date_sortie, + w_sejours.heure_sortie, + w_sejours.code_sexe, + w_sejours.age, + w_sejours.code_sorti, + w_sejours.code_prevu, + w_sejours.type_sejour, + w_sejours.lieu_sortie_id, + w_sejours.medecin_sejour_id, + w_sejours.ghs_id, + w_sejours.ghm_id, + w_sejours.ghs_bebe1_id, + w_sejours.ghs_bebe2_id, + w_sejours.ghs_bebe3_id, + w_sejours.date_groupage, + w_sejours.code_cp_demandee, + w_sejours.mode_traitement_id, + w_sejours.mode_entree, + w_sejours.provenance, + w_sejours.mode_sortie, + w_sejours.destination, + w_sejours.tiers_payant_0_id, + w_sejours.tiers_payant_1_id, + w_sejours.tiers_payant_2_id, + w_sejours.tiers_payant_22_id, + w_sejours.est_budget_global, + w_sejours.code_postal_id + FROM w_sejours + LEFT JOIN activite[PX].p_sejours ON (w_sejours.no_sejour = p_sejours.no_sejour) + WHERE p_sejours.no_sejour IS NULL; + + DELETE FROM activite[PX].p_sejours WHERE no_sejour NOT IN (SELECT no_sejour FROM w_sejours ); + + DELETE FROM activite[PX].p_sejours USING + ( + SELECT no_sejour, min(CTID) AS koctid + FROM activite[PX].p_sejours + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE CTID = koctid; + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '' = ''; + + UPDATE activite[PX].p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND + '' = ''; + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '' = ''; + + + -- recréation index + + SELECT base.cti_enable_index('activite', 'i_sejours_2'); + SELECT base.cti_enable_index('activite', 'i_sejours_3'); + SELECT base.cti_enable_index('activite', 'i_sejours_4'); + SELECT base.cti_enable_index('activite', 'i_sejours_5'); + SELECT base.cti_enable_index('activite', 'i_sejours_6'); + SELECT base.cti_enable_index('activite', 'i_sejours_7'); + SELECT base.cti_enable_index('activite', 'i_sejours_8'); + SELECT base.cti_enable_index('activite', 'i_sejours_9'); + SELECT base.cti_enable_index('activite', 'i_sejours_10'); + SELECT base.cti_enable_index('activite', 'i_sejours_11'); + SELECT base.cti_enable_index('activite', 'i_sejours_12'); + SELECT base.cti_enable_index('activite', 'i_sejours_13'); + + + ]]> + + + + + (MIN(ARRAY[to_char(sequence,'FM00000000'),MVDHEN::text]))[2]::timestamp without time zone + ) subview + WHERE w_NMVTCHB.NONUMA = subview.NONUMA AND + w_NMVTCHB.sequence = subview.sequence_first + ; + + -- Correction des mouvements en désaccord avec séjour (date sortie) + UPDATE w_NMVTCHB SET + MVDTSO = w_NMVTCHB.NODTSO, + MVHRSO = w_NMVTCHB.NOHRSO, + MVDHSO = w_NMVTCHB.NODHSO + FROM + ( + SELECT NONUMA, + MAX(sequence) AS sequence_last, + MAX(NODTSO) AS NODTSO, + MAX(NOHRSO) AS NOHRSO, + MAX(NODHSO) AS NODHSO, + (MAX(ARRAY[to_char(sequence,'FM00000000'),MVDTSO::text]))[2]::date AS MVDTSO_last, + (MAX(ARRAY[to_char(sequence,'FM00000000'),MVHRSO::text]))[2]::time without time zone AS MVHRSO_last, + (MAX(ARRAY[to_char(sequence,'FM00000000'),MVDHSO::text]))[2]::timestamp without time zone AS MVDHSO_last + FROM w_NMVTCHB + GROUP BY 1 + HAVING MAX(NODHSO) <> + (MAX(ARRAY[to_char(sequence,'FM00000000'),MVDHSO::text]))[2]::timestamp without time zone + ) subview + WHERE w_NMVTCHB.NONUMA = subview.NONUMA AND + w_NMVTCHB.sequence = subview.sequence_last + ; + + UPDATE w_NMVTCHB SET + MVDHEN = MVDHSO - interval '1 second', + MVDTEN = date(MVDHSO - interval '1 second'), + MVHREN = (MVDHSO - interval '1 second')::time without time zone + WHERE MVDHEN > MVDHSO + ; + + + UPDATE w_NMVTCHB SET + MVDHSO = w_NMVTCHB_after.MVDHEN - interval '1 second', + MVDTSO = date(w_NMVTCHB_after.MVDHEN - interval '1 second'), + MVHRSO = (w_NMVTCHB_after.MVDHEN - interval '1 second')::time without time zone + FROM w_NMVTCHB w_NMVTCHB_after + WHERE w_NMVTCHB.NONUMA = w_NMVTCHB_after.NONUMA AND + w_NMVTCHB.sequence = w_NMVTCHB_after.sequence -1 + ; + + DELETE FROM w_NMVTCHB + WHERE MVDHSO < NODHEN + ; + + DELETE FROM w_NMVTCHB + WHERE MVDTEN < date('1900-12-31') + ; + + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_5, code_original_6) + SELECT lieu_service_facturation_code_original, + lieu_activite_code_original, + lieu_etage_code_original, + lieu_lit_code_original, + lieu_unite_medicale_code_original, + lieu_unite_fonctionnelle_code_original + FROM w_NMVTCHB + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = lieu_service_facturation_code_original AND + code_original_2 = lieu_activite_code_original AND + code_original_3 = lieu_etage_code_original AND + code_original_4 = lieu_lit_code_original AND + code_original_5 = lieu_unite_medicale_code_original AND + code_original_6 = lieu_unite_fonctionnelle_code_original + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5,6; + + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM + activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original AND + (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + activite_id = COALESCE(t_activites.oid,0) + FROM + activite[PX].t_activites + WHERE code_original_6 = t_activites.code_original + AND activite_id <> COALESCE(t_activites.oid,0); + + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + UPDATE activite[PX].t_lieux SET + unite_medicale_id = COALESCE(t_unites_medicales.oid,0) + FROM + activite[PX].t_unites_medicales + WHERE code_original_5 = t_unites_medicales.code_original + AND unite_medicale_id <> COALESCE(t_unites_medicales.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM + activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + UPDATE w_NMVTCHB SET + lieu_id = t_lieux.oid, + est_chambre_particuliere = CASE WHEN t_lits.chambre_particuliere = 'O' THEN '1' ELSE '0' END + FROM activite[PX].t_lieux + JOIN activite[PX].t_lits ON lit_id = t_lits.oid + WHERE + code_original_1 = lieu_service_facturation_code_original AND + code_original_2 = lieu_activite_code_original AND + code_original_3 = lieu_etage_code_original AND + code_original_4 = lieu_lit_code_original AND + code_original_5 = lieu_unite_medicale_code_original AND + code_original_6 = lieu_unite_fonctionnelle_code_original + ; + + + + -- Etat avant + UPDATE w_NMVTCHB SET + lieu_service_facturation_before = w_NMVTCHB_before.lieu_service_facturation_code_original, + lieu_activite_before = w_NMVTCHB_before.lieu_activite_code_original, + lieu_etage_before = w_NMVTCHB_before.lieu_etage_code_original, + lieu_lit_before = w_NMVTCHB_before.lieu_lit_code_original, + lieu_unite_fonctionnelle_before = w_NMVTCHB_before.lieu_unite_fonctionnelle_code_original, + lieu_unite_medicale_before = w_NMVTCHB_before.lieu_unite_medicale_code_original + FROM w_NMVTCHB w_NMVTCHB_before + WHERE w_NMVTCHB.NONUMA = w_NMVTCHB_before.NONUMA AND + w_NMVTCHB.sequence = w_NMVTCHB_before.sequence +1 + ; + + -- Etat apres + UPDATE w_NMVTCHB SET + lieu_service_facturation_after = w_NMVTCHB_after.lieu_service_facturation_code_original, + lieu_activite_after = w_NMVTCHB_after.lieu_activite_code_original, + lieu_etage_after = w_NMVTCHB_after.lieu_etage_code_original, + lieu_lit_after = w_NMVTCHB_after.lieu_lit_code_original, + lieu_unite_fonctionnelle_after = w_NMVTCHB_after.lieu_unite_fonctionnelle_code_original, + lieu_unite_medicale_after = w_NMVTCHB_after.lieu_unite_medicale_code_original + FROM w_NMVTCHB w_NMVTCHB_after + WHERE w_NMVTCHB.NONUMA = w_NMVTCHB_after.NONUMA AND + w_NMVTCHB.sequence = w_NMVTCHB_after.sequence -1 + ; + + + + + DROP TABLE IF EXISTS w_mouvements_sejour; + + CREATE TEMP TABLE w_mouvements_sejour AS + SELECT + w_NMVTCHB.NONUMA, + w_NMVTCHB.NONUMA AS no_sejour, + p_sejours.oid AS sejour_id, + sequence, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE WHEN p_calendrier.date = MVDTEN THEN to_char(MVHREN,'HH24MISS')::numeric ELSE 0 END AS heure_debut, + CASE WHEN p_calendrier.date = MVDTSO THEN to_char(MVHRSO,'HH24MISS')::numeric ELSE 240000 END AS heure_fin, + CASE WHEN MVDHEN = NODHEN AND p_calendrier.date = MVDTEN AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes, + CASE WHEN MVDHSO = NODHSO AND p_calendrier.date = MVDTSO AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes, + CASE WHEN MVDHEN = NODHEN AND p_calendrier.date = MVDTEN AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree, + CASE WHEN MVDHSO = NODHSO AND p_calendrier.date = MVDTSO AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie, + CASE WHEN p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN MVDHEN = NODHEN AND p_calendrier.date = MVDTEN AND p_sejours.type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires, + CASE WHEN MVDHEN = NODHEN AND p_calendrier.date = MVDTEN AND p_sejours.type_sejour = '3' THEN 1 ELSE 0 END AS nb_externes, + CASE WHEN NOURGA = '1' AND p_calendrier.date = MVDTEN AND MVDHEN = NODHEN THEN 1 ELSE 0 END AS nb_urgences, + CASE WHEN MVDHEN = NODHEN AND p_calendrier.date = MVDTEN AND p_sejours.type_sejour = '5' THEN 1 ELSE 0 END AS nb_seances, + + CASE WHEN p_calendrier.date = MVDTEN AND p_sejours.type_sejour = '1' AND MVDHEN <> NODHEN AND lieu_service_facturation_code_original <> lieu_service_facturation_before THEN 1 ELSE 0 END AS nb_entrees_mutation_service, + CASE WHEN p_calendrier.date = MVDTSO AND p_sejours.type_sejour = '1' AND MVDHSO <> NODHSO AND lieu_service_facturation_code_original <> lieu_service_facturation_after THEN 1 ELSE 0 END AS nb_sorties_mutation_service, + CASE WHEN p_calendrier.date = MVDTEN AND p_sejours.type_sejour = '1' AND MVDHEN <> NODHEN AND lieu_etage_code_original <> lieu_etage_before THEN 1 ELSE 0 END AS nb_entrees_mutation_etage, + CASE WHEN p_calendrier.date = MVDTSO AND p_sejours.type_sejour = '1' AND MVDHSO <> NODHSO AND lieu_etage_code_original <> lieu_etage_after THEN 1 ELSE 0 END AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + 0 AS nb_entrees_mutation_unite_medicale, + 0 AS nb_sorties_mutation_unite_medicale, + + CASE WHEN p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN p_sejours.type_sejour = '1' AND p_calendrier.date <> MVDTSO THEN 1 ELSE 0 END AS nb_jours_js_non_inclus, + + CASE WHEN p_sejours.type_sejour IN ('1','2') THEN est_chambre_particuliere ELSE '0' END AS est_chambre_particuliere, + CASE WHEN p_sejours.type_sejour IN ('1','2') AND est_chambre_particuliere = 1 THEN 1 ELSE 0 END AS nb_chambres_particulieres, + + 0 AS nb_bebes, + + lieu_id, + + p_sejours.medecin_sejour_id as medecin_sejour_id, + + CASE WHEN p_sejours.code_prevu = '1' OR p_calendrier.date > date(now_chataigneraie) THEN '1' ELSE '0' END AS est_mouvement_previsionnel + FROM w_NMVTCHB + JOIN w_PERIODE ON 1=1 + JOIN activite[PX].p_sejours ON w_NMVTCHB.NONUMA = p_sejours.no_sejour AND p_sejours.etat = '' + JOIN base.p_calendrier ON (p_calendrier.date BETWEEN MVDTEN AND MVDTSO AND p_calendrier.date <= now() + interval '1 month' ) + ORDER BY sequence, p_calendrier.date; + + + + -- Bébés A faire + -- Séances A Faire + + + + DELETE FROM w_mouvements_sejour + WHERE + nb_entrees_directes = 0 AND + nb_sorties_directes = 0 AND + est_jour_hospitalisation <> '1' AND + nb_ambulatoires = 0 AND + nb_externes = 0 AND + nb_urgences = 0 AND + nb_seances = 0 AND + nb_entrees_mutation_service = 0 AND + nb_sorties_mutation_service = 0 AND + nb_entrees_mutation_etage = 0 AND + nb_sorties_mutation_etage = 0 AND + nb_entrees_mutation_activite = 0 AND + nb_sorties_mutation_activite = 0 AND + nb_entrees_mutation_unite_medicale = 0 AND + nb_sorties_mutation_unite_medicale = 0 AND + nb_jours_js_inclus = 0 AND + nb_jours_js_non_inclus = 0 AND + est_chambre_particuliere <> '1' AND + nb_chambres_particulieres = 0 AND + nb_bebes = 0; + + + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_1'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_2'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_3'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_4'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_5'); + + INSERT INTO activite[PX].p_mouvements_sejour( + sejour_id, no_sejour, date, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, + nb_bebes,est_mouvement_previsionnel, jour_semaine, is_weekend) + SELECT sejour_id, no_sejour, date,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, + nb_bebes,est_mouvement_previsionnel, jour_semaine, is_weekend + FROM w_mouvements_sejour + ORDER BY no_sejour, sequence; + + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_5'); + + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie + AND (lieu_sortie_id IS DISTINCT FROM p_mouvements_sejour.lieu_id); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie AND p_mouvements_sejour.nb_sorties_directes = 1 + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL); + + + + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + WHERE type_sejour <> '5' AND + type_sejour <> '1' AND + no_sejour IN ( + SELECT no_sejour + FROM activite[PX].p_mouvements_sejour + WHERE nb_seances > 0); + + + UPDATE activite[PX].p_mouvements_sejour + SET nb_externes = 0, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + ( + nb_externes <> 0 OR + nb_ambulatoires <> 0 + ) + + ; + + + ]]> + + + + + + + + + + + + + + + + + + + + 100 THEN 0-ACMTFC ELSE 0 END),0) AS ACMTFH, + COALESCE(SUM(CASE WHEN ACINDI = 1 AND ACID > 100 THEN 0-ACMTFC ELSE 0 END),0) AS ACMTFH_1, + COALESCE(SUM(CASE WHEN ACINDI = 2 AND ACID > 100 THEN 0-ACMTFC ELSE 0 END),0) AS ACMTFH_2, + COALESCE(SUM(CASE WHEN ACINDI = 3 AND ACID > 100 THEN 0-ACMTFC ELSE 0 END),0) AS ACMTFH_3, + COALESCE(MAX(CASE WHEN ACID > 100 THEN (to_char(ACSDTF,'FM00')||to_char(ACADTF,'FM00')||to_char(ACMDTF,'FM00')||to_char(ACJDTF,'FM00'))::date ELSE '00010101' END),'00010101') AS ACDDTH, + COALESCE(MAX(CASE WHEN ACINDI = 1 AND ACID > 100 THEN (to_char(ACSDTF,'FM00')||to_char(ACADTF,'FM00')||to_char(ACMDTF,'FM00')||to_char(ACJDTF,'FM00'))::date ELSE '00010101' END),'00010101') AS ACDDTH_1, + COALESCE(MAX(CASE WHEN ACINDI = 2 AND ACID > 100 THEN (to_char(ACSDTF,'FM00')||to_char(ACADTF,'FM00')||to_char(ACMDTF,'FM00')||to_char(ACJDTF,'FM00'))::date ELSE '00010101' END),'00010101') AS ACDDTH_2, + COALESCE(MAX(CASE WHEN ACINDI = 3 AND ACID > 100 THEN (to_char(ACSDTF,'FM00')||to_char(ACADTF,'FM00')||to_char(ACMDTF,'FM00')||to_char(ACJDTF,'FM00'))::date ELSE '00010101' END),'00010101') AS ACDDTH_3, + + COALESCE(MAX(to_char(ACSDTF,'FM00')||to_char(ACADTF,'FM00')||to_char(ACMDTF,'FM00')||to_char(ACJDTF,'FM00'))::date,'00010101') AS ACDDTCH + + FROM prod_chataigneraie_as400.NXXXFAC_FACTURES FACTURES + JOIN w_NDOADM_SELECT ON w_NDOADM_SELECT.NONUMA = FACTURES.NONUMA + LEFT JOIN prod_chataigneraie_as400.XXXFICH_REGLI REGLI ON FACTURES.FAID = REGLI.ACNFAC + GROUP BY 1,2; + + UPDATE w_REGLI SET + FATTCL = 0 - FATTCL, + FAHOTT = 0 - FAHOTT + WHERE FAAVFA = 'A'; + + + CREATE INDEX w_REGLI_i1 + ON w_REGLI + USING btree + (FAID); + + + + + + DROP TABLE IF EXISTS w_factures; + CREATE TEMP TABLE w_factures AS + SELECT + FACTURES.FAID, + nextval('activite[PX].s_factures'::regclass) AS oid, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour, + FACTURES.FAID::text AS no_facture, + FACTURES.FAID::text AS no_facture_reference, + 0::bigint AS facture_reference_id, + FAC_FAID::text AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id, + FADTE AS date_debut, + FADTS AS date_fin, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id, + p_sejours.code_cp_demandee, + FACTURES.FAAVFA, + CASE WHEN FACTURES.FAAVFA = 'A' THEN '1' ELSE '0' END AS type_facture, + CASE WHEN FACTURES.FAAVFA = 'A' THEN 1 ELSE 0 END AS nb_rejets, + '1' AS code_facture, + FADAT AS date_facture, + '1' AS code_vente, + to_char(FADAT,'YYYYMM')::numeric AS mois_vente, + FADAT AS date_vente, + '' AS code_cloture, + + '' AS particularite_t2a, + + + p_sejours.tiers_payant_0_id, + FACCAI, + p_sejours.tiers_payant_1_id, + FACMUT, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + w_FACPAR.FATTCL AS montant_facture_c, + w_FACPAR.FAHOTT AS montant_facture_h, + COALESCE(FACPCT_3,0) AS montant_facture_0_c, + COALESCE(FACPHO_3,0) AS montant_facture_0_h, + COALESCE(FACPCT_1,0) AS montant_facture_1_c, + COALESCE(FACPHO_1,0) AS montant_facture_1_h, + COALESCE(FACPCT_2,0) AS montant_facture_2_c, + COALESCE(FACPHO_3,0) AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + w_FACPAR.FATTCL AS montant_comptabilise_c, + w_FACPAR.FAHOTT AS montant_comptabilise_h, + FACPCT_3 AS montant_comptabilise_0_c, + FACPHO_3 AS montant_comptabilise_0_h, + FACPCT_1 AS montant_comptabilise_1_c, + FACPHO_1 AS montant_comptabilise_1_h, + FACPCT_2 AS montant_comptabilise_2_c, + FACPHO_3 AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + ACMTFC AS montant_regle_c, + ACMTFH AS montant_regle_h, + ACMTFC_3 AS montant_regle_0_c, + ACMTFH_3 AS montant_regle_0_h, + ACMTFC_1 AS montant_regle_1_c, + ACMTFH_1 AS montant_regle_1_h, + ACMTFC_2 AS montant_regle_2_c, + ACMTFH_2 AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + CASE WHEN FACPDE_3 > '00010101' THEN '1' ELSE '0' END AS code_expedie_0, + CASE WHEN FACPDE_1 > '00010101' THEN '1' ELSE '0' END AS code_expedie_1, + CASE WHEN FACPDE_2 > '00010101' THEN '1' ELSE '0' END AS code_expedie_2, + '0' AS code_expedie_22, + GREATEST(FACPDE_1,FACPDE_2,FACPDE_3) AS date_expedition, + FACPDE_3 AS date_expedition_0, + FACPDE_1 AS date_expedition_1, + FACPDE_2 AS date_expedition_2, + '20991231'::date AS date_expedition_22, + FACNBO_3::text AS no_bordereau_0, + FACNBO_1::text AS no_bordereau_1, + FACNBO_2::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + ACDDTCH AS date_solde, + ACDDTF AS date_solde_c, + ACDDTH AS date_solde_h, + ACDDTF_3 AS date_solde_0_c, + ACDDTH_3 AS date_solde_0_h, + ACDDTF_1 AS date_solde_1_c, + ACDDTH_1 AS date_solde_1_h, + ACDDTF_2 AS date_solde_2_c, + ACDDTH_2 AS date_solde_2_h, + '0001-01-01'::date AS date_solde_22_c, + '0001-01-01'::date AS date_solde_22_h + + FROM prod_chataigneraie_as400.NXXXFAC_FACTURES FACTURES + JOIN w_NDOADM_SELECT ON w_NDOADM_SELECT.NONUMA = FACTURES.NONUMA + JOIN activite[PX].p_sejours ON FACTURES.NONUMA = p_sejours.code_original + JOIN w_FACPAR ON FACTURES.FAID = w_FACPAR.FAID + JOIN w_REGLI ON FACTURES.FAID = w_REGLI.FAID + WHERE FACTURES.FAID <> 0 + ; + + CREATE INDEX w_factures_i1 + ON w_factures + USING btree + (FAID); + + CREATE INDEX w_factures_i2 + ON w_factures + USING btree + (sejour_id); + + UPDATE w_factures + SET facture_od_avoir_id = w_factures_od_avoir.oid + FROM w_factures w_factures_od_avoir + WHERE w_factures.no_facture_od_avoir = w_factures_od_avoir.no_facture + ; + + UPDATE w_factures + SET type_facture = 'X' + WHERE w_factures.no_facture_od_avoir <> '0' AND + w_factures.type_facture = '0' + ; + + UPDATE w_factures + SET no_facture_reference = subview.no_facture_reference + FROM + (SELECT sejour_id, + (MAX(ARRAY[date_facture::text,no_facture]))[2] AS no_facture_reference + FROM w_factures + WHERE type_facture = '0' + GROUP BY 1 + ) subview + WHERE w_factures.sejour_id = subview.sejour_id AND + w_factures.no_facture_reference <> subview.no_facture_reference + ; + + UPDATE w_factures + SET facture_reference_id = w_factures_reference.oid + FROM w_factures w_factures_reference + WHERE w_factures.no_facture_reference = w_factures_reference.no_facture + ; + + + SELECT base.cti_disable_index('activite', 'i_factures_3'); + SELECT base.cti_disable_index('activite', 'i_factures_4'); + SELECT base.cti_disable_index('activite', 'i_factures_5'); + SELECT base.cti_disable_index('activite', 'i_factures_6'); + SELECT base.cti_disable_index('activite', 'i_factures_7'); + SELECT base.cti_disable_index('activite', 'i_factures_8'); + SELECT base.cti_disable_index('activite', 'i_factures_9'); + SELECT base.cti_disable_index('activite', 'i_factures_10'); + SELECT base.cti_disable_index('activite', 'i_factures_11'); + SELECT base.cti_disable_index('activite', 'i_factures_12'); + SELECT base.cti_disable_index('activite', 'i_factures_13'); + SELECT base.cti_disable_index('activite', 'i_factures_14'); + + + INSERT INTO activite[PX].p_factures ( + oid, + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + type_facture, + nb_rejets, + code_facture, + date_facture, + code_vente, + mois_vente, + date_vente, + code_cloture, + + particularite_t2a, + + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h + + + ) + + SELECT + oid, + sejour_id, + no_sejour, + no_facture, + w_factures.no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + type_facture, + nb_rejets, + code_facture, + date_facture, + code_vente, + mois_vente, + date_vente, + code_cloture, + + particularite_t2a, + + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + CASE WHEN date_expedition <> '00010101' THEN date_expedition ELSE '20991231' END, + CASE WHEN date_expedition_0 <> '00010101' THEN date_expedition_0 ELSE '20991231' END, + CASE WHEN date_expedition_1 <> '00010101' THEN date_expedition_1 ELSE '20991231' END, + CASE WHEN date_expedition_2 <> '00010101' THEN date_expedition_2 ELSE '20991231' END, + CASE WHEN date_expedition_22 <> '00010101' THEN date_expedition_22 ELSE '20991231' END, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + + CASE WHEN date_solde <> '00010101' THEN date_solde ELSE '20991231' END, + CASE WHEN date_solde_c <> '00010101' THEN date_solde_c ELSE '20991231' END, + CASE WHEN date_solde_h <> '00010101' THEN date_solde_h ELSE '20991231' END, + CASE WHEN date_solde_0_c <> '00010101' THEN date_solde_0_c ELSE '20991231' END, + CASE WHEN date_solde_0_h <> '00010101' THEN date_solde_0_h ELSE '20991231' END, + CASE WHEN date_solde_1_c <> '00010101' THEN date_solde_1_c ELSE '20991231' END, + CASE WHEN date_solde_1_h <> '00010101' THEN date_solde_1_h ELSE '20991231' END, + CASE WHEN date_solde_2_c <> '00010101' THEN date_solde_2_c ELSE '20991231' END, + CASE WHEN date_solde_2_h <> '00010101' THEN date_solde_2_h ELSE '20991231' END, + CASE WHEN date_solde_22_c <> '00010101' THEN date_solde_22_c ELSE '20991231' END, + CASE WHEN date_solde_22_h <> '00010101' THEN date_solde_22_h ELSE '20991231' END + + FROM w_factures + WHERE oid NOT IN (SELECT oid FROM activite[PX].p_factures); + + SELECT base.cti_enable_index('activite', 'i_factures_3'); + SELECT base.cti_enable_index('activite', 'i_factures_4'); + SELECT base.cti_enable_index('activite', 'i_factures_5'); + SELECT base.cti_enable_index('activite', 'i_factures_6'); + SELECT base.cti_enable_index('activite', 'i_factures_7'); + SELECT base.cti_enable_index('activite', 'i_factures_8'); + SELECT base.cti_enable_index('activite', 'i_factures_9'); + SELECT base.cti_enable_index('activite', 'i_factures_10'); + SELECT base.cti_enable_index('activite', 'i_factures_11'); + SELECT base.cti_enable_index('activite', 'i_factures_12'); + SELECT base.cti_enable_index('activite', 'i_factures_13'); + SELECT base.cti_enable_index('activite', 'i_factures_14'); + + + + + + + + + -- Séjours sans facture + + DROP TABLE IF EXISTS w_factures_trous; + CREATE TEMP TABLE w_factures_trous AS + SELECT + p_sejours.finess, + p_sejours.no_sejour, + p_sejours.date_entree, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.code_cp_demandee, + COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire, + p_sejours.code_sorti, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie, + MAX(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END) AS date_fin_facture, + date(MAX(COALESCE(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours + FROM activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND no_facture NOT LIKE 'E%' + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE p_sejours.etat = '' AND p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND date_entree <= now() AND p_sejours.type_sejour <> '6' AND p_sejours.type_sejour <> '9' AND code_prevu <> 1 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11; + + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee, + date_debut, + date_fin) + SELECT finess, + no_sejour, + no_sejour || '.00' || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + no_sejour || '.00' || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee , + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12; + + + UPDATE activite[PX].p_factures SET + date_debut = date_entree, + date_fin = CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid AND + avec_facturation_intermediaire IS DISTINCT FROM '1' + WHERE p_factures.no_sejour = p_sejours.no_sejour AND + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END - date_entree < 30 AND + ( + p_factures.date_debut <> date_entree OR + p_factures.date_fin <> CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + ); + + + ]]> + + + + + + + + 0 THEN MCO ELSE 1 END AS coefficient_mco, + t_rubriques_facturation.oid AS rubrique_facturation_id, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + t_prestations.code AS prestation_code, + t_prestations.type_ventilation_jour AS prestation_type_ventilation_jour, + COALESCE(t_compte.oid,0) AS compte_produit_id, + p_sejours.lieu_sortie_id AS lieu_id, + 1::bigint AS origine_facturation_id, + + SFTTC AS prix_unitaire, + 0::numeric AS taux_0, + SFTXSS AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_22, + + SFDTEA AS date_debut, + SFDTSA AS date_fin, + CASE WHEN SFCOEF <> 0 THEN SFCOEF ELSE SFQTE END AS nb_rubrique, + CASE WHEN SFCOEF <> 0 THEN SFCOEF ELSE SFQTE END AS nb_prestation, + SFTTTO AS montant_facture, + SFTTHO AS montant_facture_0, + SFTTSS AS montant_facture_1, + SFTTMU AS montant_facture_2, + 0::numeric AS montant_facture_22, + SFTTTO AS montant_comptabilise, + SFTTHO AS montant_comptabilise_0, + SFTTSS AS montant_comptabilise_1, + SFTTMU AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS rubrique_facture_id + FROM prod_chataigneraie_as400.NXXXFAC_NELFTARC NELFTARC + JOIN w_factures ON w_factures.FAID = NELFTARC.FAID + JOIN activite[PX].p_sejours ON w_factures.no_sejour = p_sejours.no_sejour + JOIN prod_chataigneraie_as400.NXXXFAC_BFARCLI BFARCLI ON BFARCLI.ARIID = NELFTARC.ARIID + JOIN prod_chataigneraie_as400.NXXXFAC_BFAB2 BFAB2 ON BFAB2.AB2ID = BFARCLI.AB2ID + LEFT JOIN prod_chataigneraie_as400.NXXXFAC_BFCENT BFCENT ON + BFCENT.ARIID = NELFTARC.ARIID AND + BFCENT.CATID = NELFTARC.SFCATID AND + BFCENT.SCAID = NELFTARC.SFSCAID AND + BFCENT.BFTXID = NELFTARC.BFTXID + JOIN activite[PX].t_rubriques_facturation ON NELFTARC.ARIID = t_rubriques_facturation.code_original + JOIN activite.t_prestations ON BFAB2.AB2OF = t_prestations.code + LEFT JOIN activite[PX].t_compte ON BFCENT.CPTID = t_compte.code + ; + + + DROP TABLE IF EXISTS w_BFTYMED; + CREATE TEMP TABLE w_BFTYMED AS + SELECT TYLFMED, + TYLFMED||'M' AS rubrique_code_original, + 0::bigint AS rubrique_facturation_id, + ''::text AS rubrique_facturation_code, + COALESCE(AB2OF, + CASE + WHEN TYLFLI ILIKE '%proth%' THEN 'PII' + WHEN TYLFLI ILIKE '%cament%' THEN 'PH8' + ELSE 'PII' END) AS prestation_code_original, + 0::bigint AS prestation_id, + ''::text AS prestation_code + FROM prod_chataigneraie_as400.NXXXFAC_BFTYMED BFTYMED + LEFT JOIN prod_chataigneraie_as400.NXXXFAC_BFAB2 BFAB2 ON BFAB2.AB2ID = BFTYMED.AB2ID + ; + + UPDATE w_BFTYMED + SET prestation_id = t_prestations.oid, + prestation_code = t_prestations.code + FROM activite.t_prestations + WHERE prestation_code_original = code; + + UPDATE w_BFTYMED + SET rubrique_facturation_id = t_rubriques_facturation.oid, + rubrique_facturation_code = t_rubriques_facturation.code + FROM activite[PX].t_rubriques_facturation + WHERE rubrique_code_original = code_original; + + + INSERT INTO w_factures_lignes_c + SELECT + nextval('w_factures_lignes_c_seq'::regclass) AS sequence, + w_factures.no_sejour, + w_factures.oid AS facture_id, + w_factures.no_facture AS no_facture, + w_factures.date_vente, + + w_factures.FAAVFA, + + 1::numeric AS coefficient, + 1::numeric AS coefficient_mco, + w_BFTYMED.rubrique_facturation_id, + w_BFTYMED.rubrique_facturation_id AS rubrique_comptabilisation_id, + w_BFTYMED.prestation_id, + w_BFTYMED.prestation_code, + '0'::text AS prestation_type_ventilation_jour, + 0::bigint AS compte_produit_id, + p_sejours.lieu_sortie_id AS lieu_id, + 1::bigint AS origine_facturation_id, + + SMPUTC AS prix_unitaire, + 0::numeric AS taux_0, + SMTXSS AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_22, + + SMDINA AS date_debut, + SMDINA AS date_fin, + CASE WHEN SMCOEF <> 0 THEN SMCOEF ELSE SMQTE END AS nb_rubrique, + CASE WHEN SMCOEF <> 0 THEN SMCOEF ELSE SMQTE END AS nb_prestation, + SMTTTO AS montant_facture, + SMTTHO AS montant_facture_0, + SMTTSS AS montant_facture_1, + SMTTMU AS montant_facture_2, + 0::numeric AS montant_facture_22, + CASE WHEN NELFMEDI.TYLFMED NOT IN (20,40) THEN SMTTTO ELSE 0 END AS montant_comptabilise, + CASE WHEN NELFMEDI.TYLFMED NOT IN (20,40) THEN SMTTHO ELSE 0 END AS montant_comptabilise_0, + CASE WHEN NELFMEDI.TYLFMED NOT IN (20,40) THEN SMTTSS ELSE 0 END AS montant_comptabilise_1, + CASE WHEN NELFMEDI.TYLFMED NOT IN (20,40) THEN SMTTMU ELSE 0 END AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS rubrique_facture_id + FROM prod_chataigneraie_as400.NXXXFAC_NELFMEDI NELFMEDI + JOIN w_factures ON w_factures.FAID = NELFMEDI.FAID + JOIN activite[PX].p_sejours ON w_factures.no_sejour = p_sejours.no_sejour + JOIN w_BFTYMED ON w_BFTYMED.TYLFMED = NELFMEDI.TYLFMED + ; + + CREATE INDEX w_factures_lignes_c_i1 + ON w_factures_lignes_c + USING btree + (sequence); + + CREATE INDEX w_factures_lignes_c_i2 + ON w_factures_lignes_c + USING btree + (prestation_id); + + + -- Eclatement des supplements par jour + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + date(p_sejours.date_entree) AS date_debut_ghs, + date(p_sejours.date_sortie - interval '1 day') AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN prestation_code = 'GHS' THEN date(date_entree + interval '1 day') ELSE date(date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN prestation_code = 'GHS' THEN date(p_sejours.date_sortie - interval '1 day') ELSE date(date_debut + ((ABS(nb_prestation)-1)|| ' days')::interval) END AS date_fin_det, + ABS(CASE WHEN prestation_code = 'GHS' THEN date(date_sortie) - date(date_entree) ELSE nb_prestation END) AS nb_det, + w_factures_lignes_c.* + FROM w_factures_lignes_c + JOIN activite[PX].p_sejours ON w_factures_lignes_c.no_sejour = p_sejours.no_sejour + WHERE + ( + prestation_code IN ('PJ', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + prestation_type_ventilation_jour = '1' + ) + AND + ( + (nb_prestation > 1 or nb_prestation < -1 OR + (prestation_code = 'GHS' AND date(date_sortie) - date(date_entree) > 1)) + ) ; + + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM w_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture AND + w_factures_lignes_sup_c.prestation_code = 'GHS'; + + CREATE INDEX w_factures_lignes_sup_c_i1 + ON w_factures_lignes_sup_c + USING btree + (date_debut); + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + sequence, + no_sejour, + facture_id, + no_facture, + date_vente, + + FAAVFA, + + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + prestation_code, + prestation_type_ventilation_jour, + compte_produit_id, + lieu_id, + origine_facturation_id, + + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + + date AS date_debut, + date AS date_fin, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + round(montant_facture / ABS(nb_det),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22, + round(montant_comptabilise / ABS(nb_det),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_det),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_det),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_det),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_det),2) AS montant_comptabilise_22, + rubrique_facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_det AND date_fin_det + ; + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT sequence, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + + UPDATE w_factures_lignes_c + SET + date_fin = w_factures_lignes_c.date_debut, + nb_rubrique = w_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_sup_tot.nb_rubrique, + nb_prestation = w_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_sup_tot.nb_prestation, + montant_facture = w_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = w_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = w_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = w_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = w_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = w_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = w_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = w_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = w_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = w_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22 + FROM w_factures_lignes_sup_c_sup_tot + WHERE w_factures_lignes_c.sequence = w_factures_lignes_sup_c_sup_tot.sequence; + + + + -- Ajout des lignes + INSERT INTO w_factures_lignes_c( + sequence, + no_sejour, + facture_id, + no_facture, + date_vente, + + FAAVFA, + + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + prestation_code, + prestation_type_ventilation_jour, + compte_produit_id, + lieu_id, + origine_facturation_id, + + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_facture_id) + SELECT + sequence, + no_sejour, + facture_id, + no_facture, + date_vente, + + FAAVFA, + + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + prestation_code, + prestation_type_ventilation_jour, + compte_produit_id, + lieu_id, + origine_facturation_id, + + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_facture_id + FROM w_factures_lignes_sup_c_sup; + + -- Inversion signe pour avoirs + UPDATE w_factures_lignes_c SET + nb_rubrique = 0-nb_rubrique, + nb_prestation = 0-nb_prestation, + montant_facture = 0-montant_facture, + montant_facture_0 = 0-montant_facture_0, + montant_facture_1 = 0-montant_facture_1, + montant_facture_2 = 0-montant_facture_2, + montant_facture_22 = 0-montant_facture_22, + montant_comptabilise = 0-montant_comptabilise, + montant_comptabilise_0 = 0-montant_comptabilise_0, + montant_comptabilise_1 = 0-montant_comptabilise_1, + montant_comptabilise_2 = 0-montant_comptabilise_2, + montant_comptabilise_22 = 0-montant_comptabilise_22 + WHERE FAAVFA = 'A' + ; + + + -- Lieu exécution + + + UPDATE w_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_mouvements_sejour + WHERE + w_factures_lignes_c.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_lignes_c.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + w_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_c'); + + + + + -- Validation des lignes de facture + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_1'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_2'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_3'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_4'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_5'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_6'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_7'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_8'); + + INSERT INTO activite[PX].p_factures_lignes_c ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1, + origine_facturation_id + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_1, + origine_facturation_id + FROM w_factures_lignes_c + WHERE montant_facture <> 0; + + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_8'); + + + ]]> + + + + = '20120101' AND + date_vente IS NOT NULL AND + (montant_comptabilise <> 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5; + + + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + w_factures.oid AS facture_id, + no_facture, + (to_char(ACSDTF,'FM00')||to_char(ACADTF,'FM00')||to_char(ACMDTF,'FM00')||'01')::date, + 0::bigint AS rubrique_comptabilisation_id, + 0::bigint AS prestation_id, + 0, + 0, + 0, + 0, + 0, + SUM(0-ACMTFC) AS montant_regle, + SUM(CASE WHEN ACINDI = 3 THEN 0-ACMTFC ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN ACINDI = 1 THEN 0-ACMTFC ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN ACINDI = 2 THEN 0-ACMTFC ELSE 0 END) AS montant_regle_2, + 0 AS montant_regle_22 + FROM prod_chataigneraie_as400.NXXXFAC_FACTURES FACTURES + JOIN w_NDOADM_SELECT ON w_NDOADM_SELECT.NONUMA = FACTURES.NONUMA + JOIN prod_chataigneraie_as400.XXXFICH_REGLI REGLI ON FACTURES.FAID = REGLI.ACNFAC + JOIN w_factures ON REGLI.ACNFAC = w_factures.FAID + WHERE ACSDTF*100+ACADTF >= 2012 AND + ACID < 100 + GROUP BY 1,2,3,4,5 + ; + + + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_1'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_8'); + + ]]> + + + + + + + + p_mouvements_sejour.lieu_id; + + + + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_1'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_2'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_3'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_4'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_5'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_6'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_7'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_8'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_h_9'); + + + + INSERT INTO activite[PX].p_factures_lignes_h ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + rubrique_facturation_id, + acte_id, + activite_ccam, + extension_ccam, + phase_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22 + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + rubrique_facturation_id, + acte_id, + activite_ccam, + extension_ccam, + phase_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22 + + FROM w_factures_lignes_h; + + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_1'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_2'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_3'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_4'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_5'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_6'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_7'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_8'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_9'); + + ]]> + + + + = '20120101' AND + (montant_comptabilise <> 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5,6; + + DROP TABLE IF EXISTS w_medecins_3; + CREATE TEMP TABLE w_medecins_3 AS + SELECT + base.cti_to_number(right(code_original,3)) AS code_3, + MAX(oid) AS medecin_administratif_id + FROM activite[PX].t_medecins_administratifs + GROUP BY 1; + + + INSERT INTO activite[PX].p_factures_soldes_h( + facture_id, + no_facture, + date_comptable, + medecin_comptabilise_id, + prestation_id, + rubrique_comptabilisee_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + w_factures.oid AS facture_id, + no_facture, + (to_char(ACSDTF,'FM00')||to_char(ACADTF,'FM00')||to_char(ACMDTF,'FM00')||'01')::date, + COALESCE(w_medecins_3.medecin_administratif_id,0) AS medecin_comptabilise_id, + 0::bigint AS rubrique_comptabilisation_id, + 0::bigint AS prestation_id, + 0, + 0, + 0, + 0, + 0, + SUM(0-ACMTFC) AS montant_regle, + SUM(CASE WHEN ACINDI = 3 THEN 0-ACMTFC ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN ACINDI = 1 THEN 0-ACMTFC ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN ACINDI = 2 THEN 0-ACMTFC ELSE 0 END) AS montant_regle_2, + 0 AS montant_regle_22 + FROM prod_chataigneraie_as400.NXXXFAC_FACTURES FACTURES + JOIN w_NDOADM_SELECT ON w_NDOADM_SELECT.NONUMA = FACTURES.NONUMA + JOIN prod_chataigneraie_as400.XXXFICH_REGLI REGLI ON FACTURES.FAID = REGLI.ACNFAC + JOIN w_factures ON REGLI.ACNFAC = w_factures.FAID + LEFT JOIN w_medecins_3 ON w_medecins_3.code_3 = ACMED + WHERE ACSDTF*100+ACADTF >= 2012 AND + ACID > 100 + GROUP BY 1,2,3,4,5,6 + ; + + + SELECT base.cti_enable_index('activite', 'i_factures_soldes_h_1'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_h_3'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_h_4'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_h_8'); + + + ]]> + + + + + + + + 'A' THEN FATTCL ELSE 0-FATTCL END) AS montant_ventes_c, + 0::numeric AS montant_reglements_c, + SUM(CASE WHEN FAAVFA <> 'A' THEN FAHOTT ELSE 0-FAHOTT END) AS montant_ventes_h, + 0::numeric AS montant_reglements_h + FROM prod_chataigneraie_as400.NXXXFAC_FACTURES FACTURES + WHERE FADAT >= '20120101' + GROUP BY 1,2; + + + INSERT INTO w_factures_comptables + SELECT + ACNFAC::text AS no_facture, + (to_char(ACSDTF,'FM00')||to_char(ACADTF,'FM00')||to_char(ACMDTF,'FM00')||'01')::date AS date_comptable, + 0::numeric AS montant_ventes_c, + SUM(CASE WHEN ACID < 100 THEN 0-ACMTFC ELSE 0 END) AS montant_reglements_c, + 0::numeric AS montant_ventes_h, + SUM(CASE WHEN ACID > 100 THEN 0-ACMTFC ELSE 0 END) AS montant_reglements_h + FROM prod_chataigneraie_as400.XXXFICH_REGLI REGLI + WHERE ACSDTF*100+ACADTF >= 2012 + GROUP BY 1,2 + ; + + + TRUNCATE activite[PX].p_chiffrier_comptable; + + INSERT INTO activite[PX].p_chiffrier_comptable( + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_solde_client_c, + montant_ventes_h, + montant_reglements_h, + montant_solde_client_h) + SELECT + date_comptable, + SUM(montant_ventes_c), + SUM(montant_reglements_c), + 0 AS montant_solde_client_c, + SUM(montant_ventes_h), + SUM(montant_reglements_h), + 0 AS montant_solde_client_h + FROM w_factures_comptables + WHERE date_comptable >= '20120101' + GROUP BY 1; + + TRUNCATE activite[PX].p_factures_comptables; + + INSERT INTO activite[PX].p_factures_comptables( + facture_id, + no_facture, + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_ventes_h, + montant_reglements_h) + + SELECT + 0::bigint AS facture_id, + no_facture, + date_comptable, + SUM(montant_ventes_c), + SUM(montant_reglements_c), + SUM(montant_ventes_h), + SUM(montant_reglements_h) + FROM w_factures_comptables + WHERE date_comptable >= '20120101' AND + no_facture IS NOT NULL + GROUP BY 1,2,3; + + ]]> + + + + + + + + + + + + 0 + WHERE t_tiers_payant.code_original = 'C'||NOCAIS AND + (grand_regime_id = 0 OR grand_regime_id IS NULL); + + + INSERT INTO activite[PX].t_tiers_payant(code_original, code, type_tiers_payant, texte, texte_court) + SELECT 'M'||MUNUM, 'M'||MUNUM, + '1', + MAX(MUNMMU), MAX(MUNMMU) + FROM prod_chataigneraie_as400.NXXXFAC_BFMUTU + WHERE ('M'||MUNUM) NOT IN (SELECT code_original FROM activite[PX].t_tiers_payant WHERE code_original IS NOT NULL) + GROUP BY 1,2; + + + ]]> + + + + PERNOM OR + t_medecins_administratifs.prenom <> PERPNM OR + t_medecins_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid,0) OR + t_medecins_administratifs.medecin_id <> w_medecins.medecin_id + ); + + UPDATE base.t_medecins SET specialite_id = subview.specialite_id + FROM + (SELECT t_medecins.oid, MIN(t_medecins_administratifs.specialite_id) as specialite_id + FROM base.t_medecins, activite[PX].t_medecins_administratifs , base.t_specialites_medecin + WHERE t_medecins.oid = t_medecins_administratifs.medecin_id + AND t_medecins_administratifs.specialite_id = t_specialites_medecin.oid + GROUP BY t_medecins.oid) subview + WHERE t_medecins.oid = subview.oid AND t_medecins.oid <> 0 AND t_medecins.specialite_id = 0; + + ]]> + + + + COALESCE(t_modes_traitement.oid,0); + + UPDATE activite[PX].t_services_facturation + SET dmt_id = COALESCE(t_dmt.oid,0) + FROM prod_chataigneraie_as400.NXXXFAC_BFGRTA BFGRTA + JOIN prod_chataigneraie_as400.NXXXFAC_BFDMT BFDMT ON BFGRTA.DISID = BFDMT.DISID + LEFT JOIN base.t_dmt ON BFDMT.DISLISS = t_dmt.code + WHERE t_services_facturation.code_original = TARID AND + COALESCE(dmt_id,0) = 0 AND + COALESCE(dmt_id,0) <> COALESCE(t_dmt.oid,0); + + -- Services non facturables + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, nb_lits, type_t2a) + SELECT TARID||'-NF', TARID||'-NF', TARLI || ' (Non facturable)', TARLI || ' (Non facturable)', 0 AS nb_lits, '0' AS type_t2a + FROM prod_chataigneraie_as400.NXXXFAC_BFGRTA + WHERE TARID IN (SELECT NOTAR FROM prod_chataigneraie_as400.NXXXFAC_NDOADM WHERE NOFACT = 'N') AND + (TARID||'-NF') NOT IN (SELECT code_original FROM activite[PX].t_services_facturation WHERE code_original IS NOT NULL) + ORDER BY TARID; + + UPDATE activite[PX].t_services_facturation SET + texte = TARLI || ' (Non facturable)', + texte_court = CASE WHEN texte_court = texte THEN TARLI ELSE texte_court END || ' (Non facturable)' + FROM prod_chataigneraie_as400.NXXXFAC_BFGRTA + WHERE (TARID||'-NF') = code_original AND + ( + texte IS DISTINCT FROM (TARLI || ' (Non facturable)') OR + texte_court IS DISTINCT FROM (CASE WHEN texte_court = texte THEN TARLI ELSE texte_court END || ' (Non facturable)') + ); + + UPDATE activite[PX].t_services_facturation + SET mode_traitement_id = COALESCE(t_modes_traitement.oid,0) + FROM prod_chataigneraie_as400.NXXXFAC_BFGRTA BFGRTA + JOIN prod_chataigneraie_as400.NXXXFAC_BFMT BFMT ON BFGRTA.MTID = BFMT.MTID + LEFT JOIN base.t_modes_traitement ON BFMT.MTLISS = t_modes_traitement.code + WHERE t_services_facturation.code_original = (TARID||'-NF') AND + COALESCE(mode_traitement_id,0) = 0 AND + COALESCE(mode_traitement_id,0) <> COALESCE(t_modes_traitement.oid,0); + + UPDATE activite[PX].t_services_facturation + SET dmt_id = COALESCE(t_dmt.oid,0) + FROM prod_chataigneraie_as400.NXXXFAC_BFGRTA BFGRTA + JOIN prod_chataigneraie_as400.NXXXFAC_BFDMT BFDMT ON BFGRTA.DISID = BFDMT.DISID + LEFT JOIN base.t_dmt ON BFDMT.DISLISS = t_dmt.code + WHERE t_services_facturation.code_original = (TARID||'-NF') AND + COALESCE(dmt_id,0) = 0 AND + COALESCE(dmt_id,0) <> COALESCE(t_dmt.oid,0); + + -- Unités fonctionnelles + + INSERT INTO activite[PX].t_unites_fonctionnelles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_fonctionnelles); + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT SENU, SELIC, SELI, SELI + FROM prod_chataigneraie_as400.NXXXFIC_NSERSO + WHERE SENU NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles WHERE code_original IS NOT NULL) + ORDER BY SELIC; + + UPDATE activite[PX].t_unites_fonctionnelles SET + code = SELIC, + texte = SELI, + texte_court = CASE WHEN texte_court = texte THEN SELI ELSE texte_court END + FROM prod_chataigneraie_as400.NXXXFIC_NSERSO + WHERE SENU = code_original AND + ( + code IS DISTINCT FROM SELIC OR + texte IS DISTINCT FROM SELI OR + texte_court IS DISTINCT FROM CASE WHEN texte_court = texte THEN SELI ELSE texte_court END + ); + + -- Unités médicales + + INSERT INTO activite[PX].t_unites_medicales(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_medicales); + + INSERT INTO activite[PX].t_unites_medicales(code_original, code, texte, texte_court) + SELECT + CHROUM, + to_char(VALUM,'FM0000')||'-'||CHROUM, + LUM AS texte, + LUM AS texte_court + FROM prod_chataigneraie_mysql.STDEV_UNIMED + WHERE IDETAB = 10 AND + CHROUM NOT IN (SELECT code_original FROM activite[PX].t_unites_medicales WHERE code_original IS NOT NULL) + ORDER BY 1,2,3 + ; + + -- Activités + + INSERT INTO activite[PX].t_activites(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_activites); + + INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court) + SELECT SPESAE, SPESAE, LSPESA, LSPESA + FROM prod_chataigneraie_as400.NXXXFAC_BFSPESAE + WHERE SPESAE NOT IN (SELECT code_original FROM activite[PX].t_activites WHERE code_original IS NOT NULL) + ORDER BY SPESAE; + + UPDATE activite[PX].t_activites SET + texte = LSPESA, + texte_court = CASE WHEN texte_court = texte THEN LSPESA ELSE texte_court END + FROM prod_chataigneraie_as400.NXXXFAC_BFSPESAE + WHERE SPESAE = code_original AND + ( + texte IS DISTINCT FROM LSPESA OR + texte_court IS DISTINCT FROM CASE WHEN texte_court = texte THEN LSPESA ELSE texte_court END + ); + + + + -- Etages et lits + + INSERT INTO activite[PX].t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_etages); + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT SENU, SELIC, SELI, SELI, 0 + FROM prod_chataigneraie_as400.NXXXFIC_NSERSO + WHERE SENU NOT IN (SELECT code_original FROM activite[PX].t_etages WHERE code_original IS NOT NULL) + ORDER BY SELIC; + + UPDATE activite[PX].t_etages SET + code = SELIC, + texte = SELI, + texte_court = CASE WHEN texte_court = texte THEN SELI ELSE texte_court END + FROM prod_chataigneraie_as400.NXXXFIC_NSERSO + WHERE SENU = code_original AND + ( + code IS DISTINCT FROM SELIC OR + texte IS DISTINCT FROM SELI OR + texte_court IS DISTINCT FROM CASE WHEN texte_court = texte THEN SELI ELSE texte_court END + ); + + + + INSERT INTO activite[PX].t_lits(oid, code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0, 'N' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_lits); + + DROP TABLE IF EXISTS w_lits; + CREATE TEMP TABLE w_lits AS + SELECT + NMVTCHB.SENU, + NMVTCHB.LITNU, + NMVTCHB.SENU||'|'||NMVTCHB.LITNU AS lit_code_original, + CHLIC||LITLOC AS lit_code, + MAX(CASE WHEN base.cti_to_number(CHLIC) > 0 AND LITLOC = '' AND length(CHLIC) = 4 THEN 'O' ELSE 'N' END) AS chambre_particuliere, + count(*) AS nb, + NMVTCHB.SENU||'|'||NMVTCHB.LITNU AS lit_code_original_cible, + 0::bigint AS lit_id + FROM prod_chataigneraie_as400.NXXXFAC_NMVTCHB NMVTCHB + JOIN prod_chataigneraie_as400.NXXXFIC_DLIT DLIT ON NMVTCHB.LITNU = DLIT.LITNU + JOIN prod_chataigneraie_as400.NXXXFIC_NCHAMBR NCHAMBR ON DLIT.CHNU1 = NCHAMBR.CHNU1 + WHERE NMVTCHB.SENU <> 0 AND NMVTCHB.LITNU <> 0 + GROUP BY 1,2,3,4 + ORDER BY 1,2,3,4; + + + UPDATE w_lits + SET lit_code_original_cible = subview.lit_code_original_cible + FROM + ( + SELECT SENU,lit_code,(MAX(Array[to_char(nb,'FM0000000000'),lit_code_original]))[2] AS lit_code_original_cible + FROM w_lits + GROUP BY 1,2 + HAVING COUNT(*) > 1 + ) subview + WHERE w_lits.SENU = subview.SENU AND + w_lits.lit_code = subview.lit_code AND + w_lits.lit_code_original <> subview.lit_code_original_cible + ; + + + + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT lit_code_original, lit_code, lit_code, lit_code, + t_etages.oid, chambre_particuliere + FROM w_lits + JOIN activite[PX].t_etages ON SENU = t_etages.code_original + WHERE lit_code_original_cible = lit_code_original AND + lit_code_original <> '' AND + lit_code_original NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL) + ORDER BY 2; + + UPDATE w_lits + SET lit_id = t_lits.oid + FROM activite[PX].t_lits + WHERE lit_code_original_cible = t_lits.code_original + ; + + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT code_original || '|0' , '', 'Non renseigné', 'Non renseigné', oid, 'O' + FROM activite[PX].t_etages + WHERE oid > 0 AND + code_original || '|0' NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL ); + + + + ]]> + + + + '' + GROUP BY 1 + ) subview + WHERE BAREGROU||'-C' NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code IS NOT NULL) + GROUP BY 1,2 + ORDER BY BAREGROU; + + + INSERT INTO activite.t_prestations(oid, code_original, code, texte, texte_court, clinique_honoraire) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée', '' WHERE 0 NOT IN (SELECT oid FROM activite.t_prestations); + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT AB2OF, AB2OF, MAX(AB2LC), MAX(AB2LC) + FROM prod_chataigneraie_as400.NXXXFAC_BFAB2 + WHERE AB2OF NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + GROUP BY 1,2 + ORDER BY AB2OF; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT AHLOF ,AHLOF, MAX(AHLIB), MAX(AHLIB) + FROM prod_chataigneraie_as400.NXXXFAC_BFHONO + WHERE AHLOF NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + GROUP BY 1,2 + ORDER BY AHLOF; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT BAREGROU ,BAREGROU, BAREGROU, BAREGROU + FROM + ( + SELECT BAREGROU + FROM prod_chataigneraie_mysql.STDEV_NELFHONOC + WHERE BAREGROU IS NOT NULL AND BAREGROU <> '' + GROUP BY 1 + ) subview + WHERE BAREGROU NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + GROUP BY 1 + ORDER BY BAREGROU; + + + + INSERT INTO activite[PX].t_compte(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_compte); + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT CPTID, CPTID, CPTID, CPTID + FROM prod_chataigneraie_as400.NXXXFAC_BFCENT + WHERE CPTID NOT IN (SELECT code FROM activite[PX].t_compte WHERE code IS NOT NULL) + GROUP BY 1 + ; + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT CPTID, CPTID, CPTID, CPTID + FROM prod_chataigneraie_as400.NXXXFAC_BFCENT + WHERE CPTID NOT IN (SELECT code FROM activite[PX].t_compte WHERE code IS NOT NULL) + GROUP BY 1 + ; + + ]]> + + + + + + + + + + '2099-12-31'; + + + ]]> + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.date_groupage, + p_sejours.ghs_id, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour, + + 0::numeric AS delai_groupage, + 0::numeric AS delai_facture, + 0::numeric AS delai_expedition, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_solde_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_solde_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_solde_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_22 + + FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY 1,2,3,4,5; + + + UPDATE w_sejours_total + SET date_groupage = date_facture + WHERE (date_groupage IS null OR date_groupage = '20991231' OR date_groupage = '00010101') AND + date_facture <> '2099-12-31'; + + + UPDATE w_sejours_total SET + date_groupage = CASE WHEN date_groupage > '00010101' THEN date_groupage ELSE '20991231' END, + date_facture = CASE WHEN date_facture> '00010101' THEN date_facture ELSE '20991231' END, + date_expedition = CASE WHEN date_expedition > '00010101' THEN date_expedition ELSE '20991231' END, + date_solde = CASE WHEN date_solde > '00010101' THEN date_solde ELSE '20991231' END, + date_expedition_0 = CASE WHEN date_expedition_0 > '00010101' THEN date_expedition_0 ELSE '20991231' END, + date_solde_0 = CASE WHEN date_solde_0 > '00010101' THEN date_solde_0 ELSE '20991231' END, + date_expedition_1 = CASE WHEN date_expedition_1 > '00010101' THEN date_expedition_1 ELSE '20991231' END, + date_solde_1 = CASE WHEN date_solde_1 > '00010101' THEN date_solde_1 ELSE '20991231' END, + date_expedition_2 = CASE WHEN date_expedition_2 > '00010101' THEN date_expedition_2 ELSE '20991231' END, + date_solde_2 = CASE WHEN date_solde_2 > '00010101' THEN date_solde_2 ELSE '20991231' END, + date_expedition_22 = CASE WHEN date_expedition_22 > '00010101' THEN date_expedition_22 ELSE '20991231' END, + date_solde_22 = CASE WHEN date_solde_22 > '00010101' THEN date_solde_22 ELSE '20991231' END; + + + UPDATE w_sejours_total SET + delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END, + delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END, + delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END, + delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END, + delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END, + delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END, + delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END, + delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END, + delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END, + delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END, + delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END, + delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END; + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = w_sejours_total.date_expedition_0, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = w_sejours_total.date_expedition_1, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = w_sejours_total.date_expedition_2, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = w_sejours_total.date_expedition_22, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour, + + + delai_groupage = w_sejours_total.delai_groupage, + delai_facture = w_sejours_total.delai_facture, + delai_expedition = w_sejours_total.delai_expedition, + delai_solde = w_sejours_total.delai_solde, + delai_expedition_0 = w_sejours_total.delai_expedition_0, + delai_solde_0 = w_sejours_total.delai_solde_0, + delai_expedition_1 = w_sejours_total.delai_expedition_1, + delai_solde_1 = w_sejours_total.delai_solde_1, + delai_expedition_2 = w_sejours_total.delai_expedition_2, + delai_solde_2 = w_sejours_total.delai_solde_2, + delai_expedition_22 = w_sejours_total.delai_expedition_22, + delai_solde_22 = w_sejours_total.delai_solde_22 + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM w_sejours_total.date_expedition_0 OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM w_sejours_total.date_expedition_1 OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM w_sejours_total.date_expedition_2 OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM w_sejours_total.date_expedition_22 OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour OR + + p_sejours.delai_groupage IS DISTINCT FROM w_sejours_total.delai_groupage OR + p_sejours.delai_facture IS DISTINCT FROM w_sejours_total.delai_facture OR + p_sejours.delai_expedition IS DISTINCT FROM w_sejours_total.delai_expedition OR + p_sejours.delai_solde IS DISTINCT FROM w_sejours_total.delai_solde OR + p_sejours.delai_expedition_0 IS DISTINCT FROM w_sejours_total.delai_expedition_0 OR + p_sejours.delai_solde_0 IS DISTINCT FROM w_sejours_total.delai_solde_0 OR + p_sejours.delai_expedition_1 IS DISTINCT FROM w_sejours_total.delai_expedition_1 OR + p_sejours.delai_solde_1 IS DISTINCT FROM w_sejours_total.delai_solde_1 OR + p_sejours.delai_expedition_2 IS DISTINCT FROM w_sejours_total.delai_expedition_2 OR + p_sejours.delai_solde_2 IS DISTINCT FROM w_sejours_total.delai_solde_2 OR + p_sejours.delai_expedition_22 IS DISTINCT FROM w_sejours_total.delai_expedition_22 OR + p_sejours.delai_solde_22 IS DISTINCT FROM w_sejours_total.delai_solde_22 + + ); + + + ]]> + + + + + + + diff --git a/import_activite/iCTI_import_activite_CLINICOM.XML b/import_activite/iCTI_import_activite_CLINICOM.XML new file mode 100644 index 0000000..1d1d4f6 --- /dev/null +++ b/import_activite/iCTI_import_activite_CLINICOM.XML @@ -0,0 +1,6002 @@ + + + + + + + + '0' + GROUP BY 1,2 + HAVING count(*) > 1 + ) subview + WHERE FD_FAC_DETFAC.CTID = subview.toctid; + + -- Numéros de titres à 0 + UPDATE prod_clinicom.FD_FAC_DETFAC + SET CLI_DONN_NOOBJETFAC = (9 * (SELECT 10 ^ length(max(CLI_DONN_NOOBJETFAC)) FROM prod_clinicom.FD_FAC_DETFAC WHERE CLI_CODE_OBJETFACTURATION = 'T')) + CLI_CODE_NOINTERNEOBJET + FROM w_ADMISSIONS_select + WHERE cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT AND + CLI_CODE_OBJETFACTURATION = 'T' AND CLI_DONN_NOOBJETFAC = '0'; + + + -- Lit à la place de chambre dans mouvements + DROP TABLE IF EXISTS w_MVTS_MICROMOUVEMENTS_lits; + CREATE TEMP TABLE w_MVTS_MICROMOUVEMENTS_lits AS + SELECT + CLI_DONN_NOABSEPISODE, CLI_CODE_BOX, MAX(CLI_CODE_LIT) AS CLI_CODE_LIT + FROM prod_clinicom.FD_MVTS_MICROMOUVEMENTS JOIN w_ADMISSIONS_select ON cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + WHERE CLI_CODE_LIT <> '' AND CLI_CODE_BOX <> '' + GROUP BY 1,2; + + CREATE INDEX w_MVTS_MICROMOUVEMENTS_lits_i1 + ON w_MVTS_MICROMOUVEMENTS_lits + USING btree + (CLI_DONN_NOABSEPISODE); + + + UPDATE prod_clinicom.FD_MVTS_MOUVEMENTS + SET CLI_DONN_CHAMBRE = CLI_CODE_LIT + FROM w_MVTS_MICROMOUVEMENTS_lits + WHERE FD_MVTS_MOUVEMENTS.CLI_DONN_NOABSEPISODE = w_MVTS_MICROMOUVEMENTS_lits.CLI_DONN_NOABSEPISODE AND + CLI_DONN_CHAMBRE = CLI_CODE_BOX + ; + + -- Chambre non renseignée (NR) + UPDATE prod_clinicom.FD_MVTS_MOUVEMENTS + SET CLI_DONN_CHAMBRE = '' + FROM w_ADMISSIONS_select + WHERE CLI_DONN_CHAMBRE = 'NR' AND + cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + + ]]> + + + + '' + GROUP BY 1; + + ALTER TABLE w_MVTS_EPISODES_chambre ADD CONSTRAINT w_MVTS_EPISODES_chambre_pkey PRIMARY KEY(CLI_DONN_NOABSEPISODE); + + DROP TABLE IF EXISTS w_MVTS_EPISODES_medecinpmsi; + CREATE TEMP TABLE w_MVTS_EPISODES_medecinpmsi AS + SELECT FD_PMSI_RSS.CLI_DONN_NOABSEPISODE, (MAX(Array[CLI_Date_SortieUM::text,FD_PMSI_RUM.CLI_Code_MedecinResponsable]))[2] AS CLI_CODE_MEDECINPMSI + FROM prod_clinicom.FD_PMSI_RSS JOIN w_ADMISSIONS_select ON cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + JOIN prod_clinicom.FD_PMSI_RUM ON FD_PMSI_RSS.CLI_Donn_NoRSS = FD_PMSI_RUM.CLI_Donn_NoRSS AND + FD_PMSI_RSS.CLI_Donn_NoAbsEpisode = FD_PMSI_RUM.CLI_Donn_NoAbsEpisode + WHERE (FD_PMSI_RUM.CLI_Code_MedecinResponsable <> '' AND FD_PMSI_RUM.CLI_Code_MedecinResponsable <> 'NR') + GROUP BY 1; + + ALTER TABLE w_MVTS_EPISODES_medecinpmsi ADD CONSTRAINT w_MVTS_EPISODES_medecinpmsi_pkey PRIMARY KEY(CLI_DONN_NOABSEPISODE); + + UPDATE prod_clinicom.FD_MVTS_EPISODES + SET CLI_CODE_MEDECINRESPONSABLE = CLI_CODE_MEDECINPMSI + FROM w_MVTS_EPISODES_medecinpmsi + WHERE w_MVTS_EPISODES_medecinpmsi.CLI_DONN_NOABSEPISODE = FD_MVTS_EPISODES.CLI_DONN_NOABSEPISODE AND + (CLI_CODE_MEDECINRESPONSABLE = '' OR CLI_CODE_MEDECINRESPONSABLE = 'NR'); + + DROP TABLE IF EXISTS w_MVTS_EPISODES_medecin; + CREATE TEMP TABLE w_MVTS_EPISODES_medecin AS + SELECT FD_ACTES_ENTETE.CLI_DONN_NOABSEPISODE, + (MAX(Array[FD_ACTES_ENTETE.CLI_DATE_SAISIE::text, FD_ACTES_ENTETE.CLI_CODE_MEDECIN1]))[2] AS CLI_CODE_MEDECIN + FROM prod_clinicom.FD_ACTES_ENTETE JOIN w_ADMISSIONS_select ON cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + JOIN prod_clinicom.FD_MVTS_EPISODES ON FD_ACTES_ENTETE.CLI_DONN_NOABSEPISODE = FD_MVTS_EPISODES.CLI_DONN_NOABSEPISODE AND + (CLI_CODE_MEDECINRESPONSABLE = '' OR CLI_CODE_MEDECINRESPONSABLE = 'NR') + WHERE (FD_ACTES_ENTETE.CLI_CODE_MEDECIN1 <> '' AND FD_ACTES_ENTETE.CLI_CODE_MEDECIN1 <> 'NR') + GROUP BY 1; + + ALTER TABLE w_MVTS_EPISODES_medecin ADD CONSTRAINT w_MVTS_EPISODES_medecin_pkey PRIMARY KEY(CLI_DONN_NOABSEPISODE); + + UPDATE prod_clinicom.FD_MVTS_EPISODES + SET CLI_CODE_MEDECINRESPONSABLE = CLI_CODE_MEDECIN + FROM w_MVTS_EPISODES_medecin + WHERE w_MVTS_EPISODES_medecin.CLI_DONN_NOABSEPISODE = FD_MVTS_EPISODES.CLI_DONN_NOABSEPISODE AND + (CLI_CODE_MEDECINRESPONSABLE = '' OR CLI_CODE_MEDECINRESPONSABLE = 'NR'); + + UPDATE prod_clinicom.FD_MVTS_EPISODES + SET CLI_CODE_MEDECINRESPONSABLE = '' + FROM w_ADMISSIONS_select + WHERE cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT AND + CLI_CODE_MEDECINRESPONSABLE = 'NR'; + + + + + + DROP TABLE IF EXISTS w_FB_MVTS_MOUVEMENTS_entree; + CREATE TEMP TABLE w_FB_MVTS_MOUVEMENTS_entree AS + SELECT CLI_CODE_MOUVEMENT FROM prod_clinicom.FD_MVTS_ADMISSIONS JOIN w_ADMISSIONS_select ON cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT GROUP BY 1; + + DROP TABLE IF EXISTS w_FB_MVTS_MOUVEMENTS_sortie; + CREATE TEMP TABLE w_FB_MVTS_MOUVEMENTS_sortie AS + SELECT CLI_CODE_MOUVEMENT FROM prod_clinicom.FD_MVTS_SORTIES JOIN w_ADMISSIONS_select ON cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT GROUP BY 1; + + + DROP TABLE IF EXISTS w_FD_PMSI_RSS; + CREATE TEMP TABLE w_FD_PMSI_RSS AS + SELECT FD_PMSI_RSS.CLI_DONN_NOABSEPISODE, + MAX(CLI_DATE_SIGNATURE) AS CLI_DATE_GROUPAGE, + (MAX(Array[CLI_DATE_SIGNATURE::text, CLI_CODE_GHS::text]))[2]::numeric AS CLI_CODE_GHS, + (MAX(Array[CLI_DATE_SIGNATURE::text, CLI_CODE_GHM::text]))[2]::text AS CLI_CODE_GHM + FROM prod_clinicom.FD_PMSI_RSS JOIN w_ADMISSIONS_select ON cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + JOIN prod_clinicom.FD_PMSI_RUM ON FD_PMSI_RUM.CLI_DONN_NOABSEPISODE = FD_PMSI_RSS.CLI_DONN_NOABSEPISODE + GROUP BY 1; + + ALTER TABLE w_FD_PMSI_RSS ADD CONSTRAINT w_FD_PMSI_RSS_pkey PRIMARY KEY(CLI_DONN_NOABSEPISODE); + + + + DROP TABLE IF EXISTS w_MVTS_EPISODES; + CREATE TEMP TABLE w_MVTS_EPISODES AS + SELECT + FD_MVTS_ADMISSIONS.CLI_DONN_NOABSEPISODE, + FD_MVTS_EPISODES.CLI_DONN_NOEXTEPISODE, + FD_MVTS_EPISODES.CLI_CODE_NOIPP, + FD_MVTS_PATIENTS.CLI_DONN_NOIPPEXTERNE, + trim(FD_MVTS_PATIENTS.CLI_CODE_POSTAL) AS CLI_CODE_POSTAL, + FD_MVTS_ADMISSIONS.CLI_CODE_MODEENTREE, + FD_MVTS_ADMISSIONS.CLI_DATE_MOUVEMENT AS CLI_DATE_ENTREE, + CLI_CODE_MODESORTIE, + FD_MVTS_SORTIES.CLI_DATE_SORTIE, + FD_MVTS_EPISODES.CLI_CODE_MEDECINRESPONSABLE, + COALESCE(w_MVTS_EPISODES_chambre.CLI_CODE_US, FD_MVTS_SORTIES.CLI_CODE_US, FD_MVTS_ADMISSIONS.CLI_CODE_US) AS CLI_CODE_US, + COALESCE(FD_MVTS_SORTIES.CLI_CODE_UF, FD_MVTS_ADMISSIONS.CLI_CODE_UF) AS CLI_CODE_UF, + CASE WHEN COALESCE(CLI_DONN_CHAMBRE,'') <> '' THEN CLI_DONN_CHAMBRE ELSE '0' END AS CLI_DONN_CHAMBRE, + FD_MVTS_ADMISSIONS.CLI_CODE_MOUVEMENT AS CLI_CODE_MOUVEMENT_ENTREE, + FD_MVTS_SORTIES.CLI_CODE_MOUVEMENT AS CLI_CODE_MOUVEMENT_SORTIE, + FD_MVTS_ADMISSIONS.CLI_FLAG_CHAMBREPARTICULIERE, + CASE WHEN FD_MVTS_URGENCE.CLI_DONN_NOABSEPISODE IS NOT NULL THEN '1' ELSE '0' END AS CLI_FLAG_URGENCE, + COALESCE(w_FD_PMSI_RSS.CLI_DATE_GROUPAGE, '20991231') AS CLI_DATE_GROUPAGE, + COALESCE(w_FD_PMSI_RSS.CLI_CODE_GHS, 0) AS CLI_CODE_GHS, + COALESCE(w_FD_PMSI_RSS.CLI_CODE_GHM, '') AS CLI_CODE_GHM, + ( + COALESCE(w_MVTS_EPISODES_chambre.CLI_CODE_US, FD_MVTS_SORTIES.CLI_CODE_US, FD_MVTS_ADMISSIONS.CLI_CODE_US) || '|' || + COALESCE(FD_MVTS_SORTIES.CLI_CODE_UF, FD_MVTS_ADMISSIONS.CLI_CODE_UF) || '|' || + CASE WHEN COALESCE(CLI_DONN_CHAMBRE,'') <> '' THEN CLI_DONN_CHAMBRE ELSE '0' END || '|' || + FD_MVTS_EPISODES.CLI_CODE_MEDECINRESPONSABLE || '|' || + COALESCE(w_FD_PMSI_RSS.CLI_CODE_GHS, 0) || '|' || + COALESCE(w_FD_PMSI_RSS.CLI_CODE_GHM, '') || '|' || + trim(FD_MVTS_PATIENTS.CLI_CODE_POSTAL) + ) AS key, + CASE + WHEN date(FD_MVTS_ADMISSIONS.CLI_DATE_MOUVEMENT) >= '[ENV_ADM_ANNEEDEBUT]0101' THEN '1' + WHEN date(FD_MVTS_SORTIES.CLI_DATE_ENTREE) >= '[ENV_ADM_ANNEEDEBUT]0101' THEN '1' + WHEN date(FD_MVTS_SORTIES.CLI_DATE_SORTIE) >= '[ENV_ADM_ANNEEDEBUT]0101' THEN '1' + WHEN FD_MVTS_SORTIES.CLI_DATE_SORTIE IS NULL THEN '1' + ELSE '0' + END AS CTI_OK + FROM prod_clinicom.FD_MVTS_ADMISSIONS JOIN w_ADMISSIONS_select ON FD_MVTS_ADMISSIONS.cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + JOIN prod_clinicom.FD_MVTS_EPISODES ON FD_MVTS_ADMISSIONS.CLI_DONN_NOABSEPISODE = FD_MVTS_EPISODES.CLI_DONN_NOABSEPISODE + JOIN prod_clinicom.FD_MVTS_PATIENTS ON FD_MVTS_EPISODES.CLI_CODE_NOIPP = FD_MVTS_PATIENTS.CLI_CODE_NOIPP + LEFT JOIN prod_clinicom.FD_MVTS_SORTIES ON FD_MVTS_ADMISSIONS.CLI_DONN_NOABSEPISODE = FD_MVTS_SORTIES.CLI_DONN_NOABSEPISODE AND FD_MVTS_SORTIES.CLI_DATE_ENTREE IS NOT NULL + LEFT JOIN prod_clinicom.FD_MVTS_URGENCE ON FD_MVTS_ADMISSIONS.CLI_DONN_NOABSEPISODE = FD_MVTS_URGENCE.CLI_DONN_NOABSEPISODE + LEFT JOIN w_FD_PMSI_RSS ON FD_MVTS_ADMISSIONS.CLI_DONN_NOABSEPISODE = w_FD_PMSI_RSS.CLI_DONN_NOABSEPISODE + LEFT JOIN w_MVTS_EPISODES_chambre ON FD_MVTS_ADMISSIONS.CLI_DONN_NOABSEPISODE = w_MVTS_EPISODES_chambre.CLI_DONN_NOABSEPISODE + ; + + + UPDATE w_MVTS_EPISODES + SET CTI_OK = '1' + WHERE CTI_OK <> '1' AND + CLI_DONN_NOABSEPISODE IN (SELECT CLI_DONN_NOABSEPISODE FROM prod_clinicom.FD_FAC_DETFAC WHERE CLI_DONN_EXERCOMPTA >= [ENV_ADM_ANNEEDEBUT]); + + ALTER TABLE w_MVTS_EPISODES ADD CONSTRAINT w_MVTS_EPISODES_pkey PRIMARY KEY(CLI_DONN_NOABSEPISODE); + + + ]]> + + + + + + + + + + + + + + + + COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + + + UPDATE activite[PX].t_lieux SET + activite_id = COALESCE(t_activites.oid,0) + FROM activite[PX].t_activites + WHERE code_original_2 = t_activites.code_original + AND activite_id <> COALESCE(t_activites.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + UPDATE activite[PX].t_lieux SET + unite_medicale_id = COALESCE(t_unites_medicales.oid,0) + FROM activite[PX].t_unites_medicales + WHERE code_original_5 = t_unites_medicales.code_original + AND unite_medicale_id <> COALESCE(t_unites_medicales.oid,0); + + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + + + UPDATE w_MVTS_EPISODES_keys + set lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = service_facturation_code AND + code_original_2 = activite_code AND + code_original_3 = etage_code AND + code_original_4 = lit_code AND + code_original_5 = unite_medicale_code AND + code_original_6 = unite_fonctionnelle_code; + + + + DROP TABLE IF EXISTS w_MVTS_EPISODES_debiteurs; + CREATE TEMP TABLE w_MVTS_EPISODES_debiteurs AS + SELECT FD_FAC_DEBITEURS.CLI_DONN_NOABSEPISODE, + MAX(w_FB_FAC_DEBITEURS.est_budget_global) AS est_budget_global, + (SELECT oid FROM activite[PX].t_tiers_payant WHERE code_original = '0') AS tiers_payant_0_id, + (MAX(CASE WHEN FD_FAC_DEBITEURS.CLI_CODE_ORGANISME <> '' AND FD_FAC_DEBITEURS.CLI_CODE_TYPEDEBITEUR IN (1) THEN ARRAY[FD_FAC_DEBITEURS.CLI_DONN_NUMSEQUENCE,COALESCE(tiers_payant_1_id,0)] ELSE NULL END))[2] AS tiers_payant_1_id, + (MAX(CASE WHEN FD_FAC_DEBITEURS.CLI_CODE_ORGANISME <> '' AND FD_FAC_DEBITEURS.CLI_CODE_TYPEDEBITEUR NOT IN (1) THEN ARRAY[FD_FAC_DEBITEURS.CLI_DONN_NUMSEQUENCE,COALESCE(tiers_payant_2_id,0)] ELSE NULL END))[2] AS tiers_payant_2_id + FROM prod_clinicom.FD_FAC_DEBITEURS JOIN w_ADMISSIONS_select ON FD_FAC_DEBITEURS.cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + JOIN w_MVTS_EPISODES ON w_MVTS_EPISODES.CLI_DONN_NOABSEPISODE = FD_FAC_DEBITEURS.CLI_DONN_NOABSEPISODE AND CTI_OK = '1' + LEFT JOIN w_FB_FAC_DEBITEURS ON FD_FAC_DEBITEURS.CLI_CODE_ORGANISME = w_FB_FAC_DEBITEURS.CLI_CODE_ORGANISME + GROUP BY 1 + ORDER BY 1; + + -- Sur les enfants, prendre eventuellement les débiteurs de la mere + INSERT INTO w_MVTS_EPISODES_debiteurs + SELECT FD_MVTS_NAISSANCE.CLI_DONN_NOABSEPISODEENFANT, + MAX(w_FB_FAC_DEBITEURS.est_budget_global) AS est_budget_global, + (SELECT oid FROM activite.t_tiers_payant WHERE code_original = '0') AS tiers_payant_0_id, + (MAX(CASE WHEN FD_FAC_DEBITEURS.CLI_CODE_ORGANISME <> '' AND FD_FAC_DEBITEURS.CLI_CODE_TYPEDEBITEUR IN (1) THEN ARRAY[FD_FAC_DEBITEURS.CLI_DONN_NUMSEQUENCE,COALESCE(tiers_payant_1_id,0)] ELSE NULL END))[2] AS tiers_payant_1_id, + (MAX(CASE WHEN FD_FAC_DEBITEURS.CLI_CODE_ORGANISME <> '' AND FD_FAC_DEBITEURS.CLI_CODE_TYPEDEBITEUR NOT IN (1) THEN ARRAY[FD_FAC_DEBITEURS.CLI_DONN_NUMSEQUENCE,COALESCE(tiers_payant_2_id,0)] ELSE NULL END))[2] AS tiers_payant_2_id + FROM prod_clinicom.FD_FAC_DEBITEURS JOIN w_ADMISSIONS_select ON FD_FAC_DEBITEURS.cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + JOIN prod_clinicom.FD_MVTS_NAISSANCE ON FD_FAC_DEBITEURS.CLI_DONN_NOABSEPISODE = FD_MVTS_NAISSANCE.CLI_DONN_NOABSEPISODE + JOIN w_MVTS_EPISODES ON w_MVTS_EPISODES.CLI_DONN_NOABSEPISODE = FD_MVTS_NAISSANCE.CLI_DONN_NOABSEPISODEENFANT AND CTI_OK = '1' + LEFT JOIN w_FB_FAC_DEBITEURS ON FD_FAC_DEBITEURS.CLI_CODE_ORGANISME = w_FB_FAC_DEBITEURS.CLI_CODE_ORGANISME + WHERE FD_MVTS_NAISSANCE.CLI_DONN_NOABSEPISODEENFANT NOT IN (SELECT CLI_DONN_NOABSEPISODE from w_MVTS_EPISODES_debiteurs) + GROUP BY 1 + ORDER BY 1 + ; + + + + DROP TABLE IF EXISTS w_MVTS_MOUVEMENTS_type_sejour; + CREATE TEMP TABLE w_MVTS_MOUVEMENTS_type_sejour AS + SELECT FD_MVTS_MOUVEMENTS.CLI_DONN_NOABSEPISODE, + MAX(CASE + WHEN CLI_CODE_MOUVEMENT IN ('1','2') THEN '5' + WHEN CLI_CODE_MOUVEMENT IN ('13') THEN '3' + ELSE NULL + END) AS type_sejour_force + FROM prod_clinicom.FD_MVTS_MOUVEMENTS JOIN w_ADMISSIONS_select ON cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + WHERE CLI_CODE_MOUVEMENT NOT IN ('7','11','12','15','52','53') + GROUP BY 1 + ORDER BY 1; + + + + DROP TABLE IF EXISTS w_sejours; + + CREATE TEMP TABLE w_sejours AS + SELECT + CLI_DONN_NOEXTEPISODE as no_sejour, + w_MVTS_EPISODES.CLI_DONN_NOABSEPISODE as code_original, + CLI_DONN_NOIPPEXTERNE as no_patient, + date(CLI_DATE_ENTREE) as date_entree, + extract('hour' FROM CLI_DATE_ENTREE) * 10000 + extract('minute' FROM CLI_DATE_ENTREE) * 100 + extract('second' FROM CLI_DATE_ENTREE) as heure_entree, + CASE WHEN CLI_DATE_SORTIE IS NOT NULL THEN date(CLI_DATE_SORTIE) ELSE '20991231' END::date as date_sortie, + CASE WHEN CLI_DATE_SORTIE IS NOT NULL THEN extract('hour' FROM CLI_DATE_SORTIE) * 10000 + extract('minute' FROM CLI_DATE_SORTIE) * 100 + extract('second' FROM CLI_DATE_SORTIE) ELSE 0 END as heure_sortie, + p_patients.code_sexe, + 0 AS age, + CASE WHEN CLI_DATE_SORTIE IS NOT NULL THEN 1 ELSE 0 END as code_sorti, + 0 as code_prevu, + CASE + WHEN w_MVTS_EPISODES_keys.type_sejour_force <> '0' THEN w_MVTS_EPISODES_keys.type_sejour_force + WHEN w_MVTS_MOUVEMENTS_type_sejour.type_sejour_force IS NOT NULL THEN w_MVTS_MOUVEMENTS_type_sejour.type_sejour_force + WHEN mode_traitement_code IN ('07') OR dmt_code IN ('958') THEN '3' + WHEN mode_traitement_code IN ('19', '23') THEN '2' + WHEN mode_traitement_code IN ('04') AND date(CLI_DATE_SORTIE) = date(CLI_DATE_ENTREE) THEN '2' + WHEN mode_traitement_code IN ('03') AND date(CLI_DATE_SORTIE) = date(CLI_DATE_ENTREE) THEN '2' + WHEN mode_traitement_code IN ('10') AND date(CLI_DATE_SORTIE) <= date(CLI_DATE_ENTREE) + interval '1 day' THEN '3' + WHEN mode_traitement_code IN ('03') THEN '1' + ELSE '1' END as type_sejour, + medecin_sejour_id, + lieu_id AS lieu_sortie_id, + CASE WHEN CLI_FLAG_CHAMBREPARTICULIERE > 0 THEN '1' ELSE '0' END as code_cp_demandee, + mode_traitement_id, + COALESCE(CLI_CODE_MODE_ENTREEPMSI,'8') as mode_entree, + '0'::text AS provenance, + COALESCE(CLI_CODE_MODESORTIEPMSI,'8') as mode_sortie, + '0'::text AS destination, + COALESCE(tiers_payant_0_id,0) AS tiers_payant_0_id, + COALESCE(tiers_payant_1_id,0) AS tiers_payant_1_id, + COALESCE(tiers_payant_2_id,0) AS tiers_payant_2_id, + 0 AS tiers_payant_22_id, + 1 AS est_budget_global, + w_MVTS_EPISODES_keys.ghs_id, + w_MVTS_EPISODES_keys.ghm_id, + w_MVTS_EPISODES.CLI_DATE_GROUPAGE AS date_groupage, + 0::bigint AS ghs_bebe1_id, + 0::bigint AS ghs_bebe2_id, + 0::bigint AS ghs_bebe3_id, + w_MVTS_EPISODES_keys.code_postal_id + FROM w_MVTS_EPISODES + JOIN activite[PX].p_patients ON CLI_DONN_NOIPPEXTERNE = p_patients.no_patient + JOIN w_MVTS_EPISODES_keys ON w_MVTS_EPISODES.key = w_MVTS_EPISODES_keys.key + LEFT JOIN w_MVTS_EPISODES_debiteurs ON w_MVTS_EPISODES.CLI_DONN_NOABSEPISODE = w_MVTS_EPISODES_debiteurs.CLI_DONN_NOABSEPISODE + LEFT JOIN w_MVTS_MOUVEMENTS_type_sejour ON w_MVTS_EPISODES.CLI_DONN_NOABSEPISODE = w_MVTS_MOUVEMENTS_type_sejour.CLI_DONN_NOABSEPISODE + LEFT JOIN prod_clinicom.FB_MVTS_MODESENTREE ON FB_MVTS_MODESENTREE.CLI_CODE_MODEENTREE = w_MVTS_EPISODES.CLI_CODE_MODEENTREE + LEFT JOIN prod_clinicom.FB_MVTS_MODESSORTIE ON FB_MVTS_MODESSORTIE.CLI_CODE_MODESORTIE = w_MVTS_EPISODES.CLI_CODE_MODESORTIE + WHERE CTI_OK = '1'; + + -- Forcage type selon séjour + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour + FROM activite.t_sejour + WHERE t_sejour.no_sejour = w_sejours.no_sejour AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9'); + + -- Ajustement dates externes pour externes sur plusieurs jours + + UPDATE w_sejours + SET + date_entree = subview.date_entree, + heure_entree = subview.heure_entree, + date_sortie = subview.date_sortie, + heure_sortie = 235900 + FROM + ( + SELECT no_sejour, + date_entree AS date_entree_sejour, + date_sortie AS date_sortie_sejour, + MIN(date(CLI_DATE_SAISIE)) AS date_entree, + MAX(date(CLI_DATE_SAISIE)) AS date_sortie, + extract('hour' FROM MIN(CLI_DATE_SAISIE)) * 10000 + extract('minute' FROM MIN(CLI_DATE_SAISIE)) * 100 + extract('second' FROM MIN(CLI_DATE_SAISIE)) AS heure_entree + FROM prod_clinicom.fd_actes_entete + JOIN w_sejours ON cli_donn_noabsepisode = code_original AND + w_sejours.type_sejour = '3' AND + w_sejours.code_sorti = '1' AND + w_sejours.date_entree <> w_sejours.date_sortie + GROUP BY 1,2,3 + HAVING + MIN(date(CLI_DATE_SAISIE)) > date_entree OR + MAX(date(CLI_DATE_SAISIE)) < date_sortie + ) subview + WHERE w_sejours.no_sejour = subview.no_sejour; + + + + + -- Ajustement heure sortie externe positionnée à 23h59 par défaut par clinicom + + DROP TABLE IF EXISTS w_duree; + CREATE TEMP TABLE w_duree AS + SELECT medecin_sejour_id, + GREATEST(round((avg(heure_sortie - heure_entree) / 10000)::numeric,0) * 10000,10000) AS duree_moyenne + FROM w_sejours + WHERE type_sejour = '3' AND heure_sortie <> 235900 AND + code_sorti = '1' AND date_entree = date_sortie AND heure_sortie > heure_entree + GROUP BY 1; + + UPDATE w_sejours SET + heure_sortie = heure_entree + duree_moyenne + FROM w_duree + WHERE + w_sejours.medecin_sejour_id = w_duree.medecin_sejour_id AND + type_sejour = '3' AND + code_sorti = '1' AND + heure_sortie = 235900 AND + heure_entree + duree_moyenne <= 240000; + + UPDATE w_sejours SET + code_sorti = '1', + date_sortie = date_entree, + heure_sortie = heure_entree + duree_moyenne + FROM w_duree + WHERE + w_sejours.medecin_sejour_id = w_duree.medecin_sejour_id AND + type_sejour = '3' AND + code_sorti <> '1' AND + date_entree < date(now()) AND + heure_entree + duree_moyenne <= 240000; + + UPDATE w_sejours SET + date_sortie = date(date_entree + interval '1 day'), + heure_sortie = heure_entree + duree_moyenne - 240000 + FROM w_duree + WHERE + w_sejours.medecin_sejour_id = w_duree.medecin_sejour_id AND + type_sejour = '3' AND + code_sorti = '1' AND + heure_sortie = 235900 AND + heure_entree + duree_moyenne > 240000; + + UPDATE w_sejours SET + code_sorti = '1', + date_sortie = date(date_entree + interval '1 day'), + heure_sortie = heure_entree + duree_moyenne - 240000 + FROM w_duree + WHERE + w_sejours.medecin_sejour_id = w_duree.medecin_sejour_id AND + type_sejour = '3' AND + code_sorti <> '1' AND + date_entree < date(now()) AND + heure_entree + duree_moyenne > 240000; + + + DROP TABLE IF EXISTS w_duree; + CREATE TEMP TABLE w_duree AS + SELECT + GREATEST(round((avg(heure_sortie - heure_entree) / 10000)::numeric,0) * 10000,10000) AS duree_moyenne + FROM w_sejours + WHERE type_sejour = '3' AND heure_sortie <> 235900 AND + code_sorti = '1' AND date_entree = date_sortie AND heure_sortie > heure_entree; + + UPDATE w_sejours SET + heure_sortie = heure_entree + duree_moyenne + FROM w_duree + WHERE + type_sejour = '3' AND + code_sorti = '1' AND + heure_sortie = 235900 AND + heure_entree + duree_moyenne <= 240000; + + UPDATE w_sejours SET + code_sorti = '1', + date_sortie = date_entree, + heure_sortie = heure_entree + duree_moyenne + FROM w_duree + WHERE + type_sejour = '3' AND + code_sorti <> '1' AND + date_entree < date(now()) AND + heure_entree + duree_moyenne <= 240000; + + UPDATE w_sejours SET + date_sortie = date(date_entree + interval '1 day'), + heure_sortie = heure_entree + duree_moyenne - 240000 + FROM w_duree + WHERE + type_sejour = '3' AND + code_sorti = '1' AND + heure_sortie = 235900 AND + heure_entree + duree_moyenne > 240000; + + UPDATE w_sejours SET + code_sorti = '1', + date_sortie = date(date_entree + interval '1 day'), + heure_sortie = heure_entree + duree_moyenne - 240000 + FROM w_duree + WHERE + type_sejour = '3' AND + code_sorti <> '1' AND + date_entree < date(now()) AND + heure_entree + duree_moyenne > 240000; + + + -- Génération séjours + + SELECT base.cti_disable_index('activite', 'i_sejours_2'); + SELECT base.cti_disable_index('activite', 'i_sejours_3'); + SELECT base.cti_disable_index('activite', 'i_sejours_4'); + SELECT base.cti_disable_index('activite', 'i_sejours_5'); + SELECT base.cti_disable_index('activite', 'i_sejours_6'); + SELECT base.cti_disable_index('activite', 'i_sejours_7'); + SELECT base.cti_disable_index('activite', 'i_sejours_8'); + SELECT base.cti_disable_index('activite', 'i_sejours_9'); + SELECT base.cti_disable_index('activite', 'i_sejours_10'); + SELECT base.cti_disable_index('activite', 'i_sejours_11'); + SELECT base.cti_disable_index('activite', 'i_sejours_12'); + SELECT base.cti_disable_index('activite', 'i_sejours_13'); + + UPDATE activite[PX].p_sejours SET + code_original = w_sejours.code_original, + no_patient = w_sejours.no_patient, + date_entree = w_sejours.date_entree, + heure_entree = w_sejours.heure_entree, + date_sortie = w_sejours.date_sortie, + heure_sortie = w_sejours.heure_sortie, + code_sexe = w_sejours.code_sexe, + age = w_sejours.age, + code_sorti = w_sejours.code_sorti, + code_prevu = w_sejours.code_prevu, + type_sejour = w_sejours.type_sejour, + lieu_sortie_id = w_sejours.lieu_sortie_id, + medecin_sejour_id = w_sejours.medecin_sejour_id, + code_cp_demandee = w_sejours.code_cp_demandee, + mode_traitement_id = w_sejours.mode_traitement_id, + mode_entree = w_sejours.mode_entree, + provenance = w_sejours.provenance, + mode_sortie = w_sejours.mode_sortie, + destination = w_sejours.destination, + tiers_payant_0_id = w_sejours.tiers_payant_0_id, + tiers_payant_1_id = w_sejours.tiers_payant_1_id, + tiers_payant_2_id = w_sejours.tiers_payant_2_id, + tiers_payant_22_id = w_sejours.tiers_payant_22_id, + est_budget_global = w_sejours.est_budget_global, + date_groupage = w_sejours.date_groupage, + ghs_id = w_sejours.ghs_id, + ghm_id = w_sejours.ghm_id, + ghs_bebe1_id = w_sejours.ghs_bebe1_id, + ghs_bebe2_id = w_sejours.ghs_bebe2_id, + ghs_bebe3_id = w_sejours.ghs_bebe3_id, + code_postal_id = w_sejours.code_postal_id + FROM w_sejours + WHERE w_sejours.no_sejour = p_sejours.no_sejour + AND ( + w_sejours.code_original IS DISTINCT FROM p_sejours.code_original OR + w_sejours.no_patient IS DISTINCT FROM p_sejours.no_patient OR + w_sejours.date_entree IS DISTINCT FROM p_sejours.date_entree OR + w_sejours.heure_entree IS DISTINCT FROM p_sejours.heure_entree OR + w_sejours.date_sortie IS DISTINCT FROM p_sejours.date_sortie OR + w_sejours.heure_sortie IS DISTINCT FROM p_sejours.heure_sortie OR + w_sejours.code_sexe IS DISTINCT FROM p_sejours.code_sexe OR + w_sejours.age IS DISTINCT FROM p_sejours.age OR + w_sejours.code_sorti IS DISTINCT FROM p_sejours.code_sorti OR + w_sejours.code_prevu IS DISTINCT FROM p_sejours.code_prevu OR + w_sejours.type_sejour IS DISTINCT FROM p_sejours.type_sejour OR + w_sejours.lieu_sortie_id IS DISTINCT FROM p_sejours.lieu_sortie_id OR + w_sejours.medecin_sejour_id IS DISTINCT FROM p_sejours.medecin_sejour_id OR + w_sejours.code_cp_demandee IS DISTINCT FROM p_sejours.code_cp_demandee OR + w_sejours.mode_traitement_id IS DISTINCT FROM p_sejours.mode_traitement_id OR + w_sejours.mode_entree IS DISTINCT FROM p_sejours.mode_entree OR + w_sejours.provenance IS DISTINCT FROM p_sejours.provenance OR + w_sejours.mode_sortie IS DISTINCT FROM p_sejours.mode_sortie OR + w_sejours.destination IS DISTINCT FROM p_sejours.destination OR + w_sejours.tiers_payant_0_id IS DISTINCT FROM p_sejours.tiers_payant_0_id OR + w_sejours.tiers_payant_1_id IS DISTINCT FROM p_sejours.tiers_payant_1_id OR + w_sejours.tiers_payant_2_id IS DISTINCT FROM p_sejours.tiers_payant_2_id OR + w_sejours.tiers_payant_22_id IS DISTINCT FROM p_sejours.tiers_payant_22_id OR + w_sejours.est_budget_global IS DISTINCT FROM p_sejours.est_budget_global OR + w_sejours.date_groupage IS DISTINCT FROM p_sejours.date_groupage OR + w_sejours.ghs_id IS DISTINCT FROM p_sejours.ghs_id OR + w_sejours.ghm_id IS DISTINCT FROM p_sejours.ghm_id OR + w_sejours.ghs_bebe1_id IS DISTINCT FROM p_sejours.ghs_bebe1_id OR + w_sejours.ghs_bebe2_id IS DISTINCT FROM p_sejours.ghs_bebe2_id OR + w_sejours.ghs_bebe3_id IS DISTINCT FROM p_sejours.ghs_bebe3_id OR + w_sejours.code_postal_id IS DISTINCT FROM p_sejours.code_postal_id + ); + + + INSERT INTO activite[PX].p_sejours ( + no_sejour, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + lieu_sortie_id, + medecin_sejour_id, + ghm_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + est_budget_global, + code_postal_id + ) + SELECT + w_sejours.no_sejour, + w_sejours.code_original, + w_sejours.no_patient, + w_sejours.date_entree, + w_sejours.heure_entree, + w_sejours.date_sortie, + w_sejours.heure_sortie, + w_sejours.code_sexe, + w_sejours.age, + w_sejours.code_sorti, + w_sejours.code_prevu, + w_sejours.type_sejour, + w_sejours.lieu_sortie_id, + w_sejours.medecin_sejour_id, + w_sejours.ghm_id, + w_sejours.ghs_id, + w_sejours.ghs_bebe1_id, + w_sejours.ghs_bebe2_id, + w_sejours.ghs_bebe3_id, + w_sejours.date_groupage, + w_sejours.code_cp_demandee, + w_sejours.mode_traitement_id, + w_sejours.mode_entree, + w_sejours.provenance, + w_sejours.mode_sortie, + w_sejours.destination, + w_sejours.tiers_payant_0_id, + w_sejours.tiers_payant_1_id, + w_sejours.tiers_payant_2_id, + w_sejours.tiers_payant_22_id, + w_sejours.est_budget_global, + w_sejours.code_postal_id + + FROM w_sejours LEFT JOIN activite[PX].p_sejours ON (w_sejours.no_sejour = p_sejours.no_sejour) + WHERE p_sejours.no_sejour IS NULL; + + DELETE FROM activite[PX].p_sejours WHERE no_sejour NOT IN (SELECT no_sejour FROM w_sejours); + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '[PX]' = ''; + + UPDATE activite[PX].p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND + '[PX]' = ''; + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '[PX]' = ''; + + + -- recréation index + SELECT base.cti_enable_index('activite', 'i_sejours_2'); + SELECT base.cti_enable_index('activite', 'i_sejours_3'); + SELECT base.cti_enable_index('activite', 'i_sejours_4'); + SELECT base.cti_enable_index('activite', 'i_sejours_5'); + SELECT base.cti_enable_index('activite', 'i_sejours_6'); + SELECT base.cti_enable_index('activite', 'i_sejours_7'); + SELECT base.cti_enable_index('activite', 'i_sejours_8'); + SELECT base.cti_enable_index('activite', 'i_sejours_9'); + SELECT base.cti_enable_index('activite', 'i_sejours_10'); + SELECT base.cti_enable_index('activite', 'i_sejours_11'); + SELECT base.cti_enable_index('activite', 'i_sejours_12'); + SELECT base.cti_enable_index('activite', 'i_sejours_13'); + + + + ]]> + + + + ''''',100); + + SELECT base.cti_execute(' + UPDATE w_MVTS_MOUVEMENTS SET + CLI_DONN_CHAMBRE = w_MVTS_MOUVEMENTS_before.CLI_DONN_CHAMBRE + FROM w_MVTS_MOUVEMENTS w_MVTS_MOUVEMENTS_before + WHERE w_MVTS_MOUVEMENTS.CLI_DONN_NOABSEPISODE = w_MVTS_MOUVEMENTS_before.CLI_DONN_NOABSEPISODE AND + w_MVTS_MOUVEMENTS.sequence = w_MVTS_MOUVEMENTS_before.sequence + 1 AND + w_MVTS_MOUVEMENTS.CLI_DONN_CHAMBRE = '''' AND + w_MVTS_MOUVEMENTS_before.CLI_DONN_CHAMBRE <> ''''',100); + + + + -- Admission suspendue + UPDATE w_MVTS_MOUVEMENTS SET + CLI_CODE_US = 'ADMSUSP', + CLI_DONN_CHAMBRE = '0' + WHERE CLI_CODE_MOUVEMENT IN ('8'); + + + + + -- analyse mouvement suivant + UPDATE w_MVTS_MOUVEMENTS SET + CLI_DATEHEURE_MOUVEMENT_fin = w_MVTS_MOUVEMENTS_next.CLI_DATEHEURE_MOUVEMENT_debut - interval '1 second', + CLI_DATE_MOUVEMENT_fin = date(w_MVTS_MOUVEMENTS_next.CLI_DATEHEURE_MOUVEMENT_debut - interval '1 second'), + CLI_HEURE_MOUVEMENT_fin = extract('hour' FROM w_MVTS_MOUVEMENTS_next.CLI_DATEHEURE_MOUVEMENT_debut - interval '1 second') * 10000 + + extract('minute' FROM w_MVTS_MOUVEMENTS_next.CLI_DATEHEURE_MOUVEMENT_debut - interval '1 second') * 100 + + extract('second' FROM w_MVTS_MOUVEMENTS_next.CLI_DATEHEURE_MOUVEMENT_debut - interval '1 second'), + CLI_CODE_MOUVEMENT_next = w_MVTS_MOUVEMENTS_next.CLI_CODE_MOUVEMENT, + CLI_CODE_UF_next = w_MVTS_MOUVEMENTS_next.CLI_CODE_UF, + CLI_CODE_UM_next = w_MVTS_MOUVEMENTS_next.CLI_CODE_UM, + CLI_CODE_SERVICE_next = w_MVTS_MOUVEMENTS_next.CLI_CODE_SERVICE, + CLI_CODE_US_next = w_MVTS_MOUVEMENTS_next.CLI_CODE_US, + CLI_DONN_CHAMBRE_next = w_MVTS_MOUVEMENTS_next.CLI_DONN_CHAMBRE, + est_sortie = CASE WHEN w_MVTS_MOUVEMENTS_next.CLI_CODE_MOUVEMENT IN (SELECT CLI_CODE_MOUVEMENT FROM w_FB_MVTS_MOUVEMENTS_sortie) THEN '1' ELSE '0' END + FROM w_MVTS_MOUVEMENTS w_MVTS_MOUVEMENTS_next + WHERE w_MVTS_MOUVEMENTS.CLI_DONN_NOABSEPISODE = w_MVTS_MOUVEMENTS_next.CLI_DONN_NOABSEPISODE AND + w_MVTS_MOUVEMENTS.sequence + 1 = w_MVTS_MOUVEMENTS_next.sequence ; + + DELETE FROM w_MVTS_MOUVEMENTS WHERE CLI_CODE_MOUVEMENT IN (SELECT CLI_CODE_MOUVEMENT FROM w_FB_MVTS_MOUVEMENTS_sortie); + + UPDATE w_MVTS_MOUVEMENTS SET + CLI_DATEHEURE_MOUVEMENT_fin = CLI_DATEHEURE_MOUVEMENT_fin + interval '1 second', + CLI_DATE_MOUVEMENT_fin = date(CLI_DATEHEURE_MOUVEMENT_fin + interval '1 second'), + CLI_HEURE_MOUVEMENT_fin = extract('hour' FROM CLI_DATEHEURE_MOUVEMENT_fin + interval '1 second') * 10000 + + extract('minute' FROM CLI_DATEHEURE_MOUVEMENT_fin + interval '1 second') * 100 + + extract('second' FROM CLI_DATEHEURE_MOUVEMENT_fin + interval '1 second') + WHERE est_sortie = '1'; + + + -- analyse mouvement precedent + UPDATE w_MVTS_MOUVEMENTS SET + CLI_CODE_MOUVEMENT_before = w_MVTS_MOUVEMENTS_before.CLI_CODE_MOUVEMENT, + CLI_CODE_UF_before = w_MVTS_MOUVEMENTS_before.CLI_CODE_UF, + CLI_CODE_UM_before = w_MVTS_MOUVEMENTS_before.CLI_CODE_UM, + CLI_CODE_SERVICE_before = w_MVTS_MOUVEMENTS_before.CLI_CODE_SERVICE, + CLI_CODE_US_before = w_MVTS_MOUVEMENTS_before.CLI_CODE_US, + CLI_DONN_CHAMBRE_before = w_MVTS_MOUVEMENTS_before.CLI_DONN_CHAMBRE + FROM w_MVTS_MOUVEMENTS w_MVTS_MOUVEMENTS_before + WHERE w_MVTS_MOUVEMENTS.CLI_DONN_NOABSEPISODE = w_MVTS_MOUVEMENTS_before.CLI_DONN_NOABSEPISODE AND + w_MVTS_MOUVEMENTS.sequence = w_MVTS_MOUVEMENTS_before.sequence + 1; + + + -- Externes non sortis -> forcer la sortie + UPDATE w_MVTS_MOUVEMENTS SET + CLI_DATEHEURE_MOUVEMENT_fin = w_sejours.date_sortie + to_char(w_sejours.heure_sortie,'FM000000')::time, + CLI_DATE_MOUVEMENT_fin = w_sejours.date_sortie, + CLI_HEURE_MOUVEMENT_fin = w_sejours.heure_sortie, + CLI_CODE_MOUVEMENT_next = '15', + est_sortie = '1' + FROM w_sejours + WHERE w_MVTS_MOUVEMENTS.CLI_DONN_NOABSEPISODE = w_sejours.code_original AND + type_sejour = '3' AND + cli_code_mouvement_next <> 15 AND + w_sejours.code_sorti = '1'; + + UPDATE w_MVTS_MOUVEMENTS SET CLI_DONN_CHAMBRE = '0' WHERE CLI_DONN_CHAMBRE = ''; + + UPDATE w_MVTS_MOUVEMENTS + SET key = CLI_CODE_UF || '|' || CLI_CODE_UM || '|' || CLI_CODE_SERVICE || '|' || CLI_CODE_US || '|' || CLI_DONN_CHAMBRE; + + + VACUUM FULL w_MVTS_MOUVEMENTS; + + CREATE INDEX w_MVTS_MOUVEMENTS_i3 ON w_MVTS_MOUVEMENTS USING btree (key); + + + DROP TABLE IF EXISTS w_MVTS_MOUVEMENTS_keys; + CREATE TEMP TABLE w_MVTS_MOUVEMENTS_keys AS + SELECT + key, + CLI_CODE_UF, + CLI_CODE_UM, + CLI_CODE_SERVICE, + CLI_CODE_US, + CLI_DONN_CHAMBRE, + + ''::text AS mode_traitement_code, + ''::text AS dmt_code, + '0'::text AS type_sejour_force, + '0'::text AS chambre_particuliere, + + 0::bigint AS service_facturation_id, + 0::bigint AS mode_traitement_id, + 0::bigint AS unite_fonctionnelle_id, + 0::bigint AS unite_medicale_id, + 0::bigint AS activite_id, + 0::bigint AS etage_id, + 0::bigint AS lit_id, + 0::bigint AS lieu_id + FROM w_MVTS_MOUVEMENTS + GROUP BY 1,2,3,4,5,6,7; + + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court) + SELECT + CLI_CODE_US, + CLI_CODE_US, + CLI_CODE_US, + CLI_CODE_US + FROM + w_MVTS_MOUVEMENTS + WHERE CLI_CODE_US NOT IN (SELECT code_original FROM activite[PX].t_etages) AND CLI_CODE_US <> '' + GROUP BY 1 + ORDER BY 1; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT code_original || '|0' , '', 'Non renseigné', 'Non renseigné', oid, 'N' + FROM activite[PX].t_etages + WHERE oid > 0 AND + code_original || '|0' NOT IN (SELECT code_original FROM activite[PX].t_lits ); + + + UPDATE activite[PX].t_lits SET code = '*****' WHERE oid = 0; + + UPDATE activite[PX].t_lits + SET code = t_etages.code || '***' + FROM activite[PX].t_etages + WHERE etage_id = t_etages.oid + AND t_lits.code = '' ; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT + CLI_CODE_US || '|' || CLI_DONN_CHAMBRE, + CLI_DONN_CHAMBRE, + 'Chambre ' || CLI_DONN_CHAMBRE, + 'Chambre ' || CLI_DONN_CHAMBRE, + t_etages.oid, + 'N' + FROM + w_MVTS_MOUVEMENTS + JOIN activite[PX].t_etages ON CLI_CODE_US = t_etages.code_original + WHERE CLI_DONN_CHAMBRE <> '' AND CLI_DONN_CHAMBRE <> '0' AND + CLI_CODE_US || '|' || CLI_DONN_CHAMBRE NOT IN (SELECT code_original FROM activite[PX].t_lits) + GROUP BY 1,2,3,4,5; + + + + UPDATE w_MVTS_MOUVEMENTS_keys + SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = t_modes_traitement.oid, + mode_traitement_code = t_modes_traitement.code, + dmt_code = t_dmt.code, + type_sejour_force = CASE WHEN t_services_facturation.type_sejour IN ('1', '2', '3', '4', '5') THEN t_services_facturation.type_sejour ELSE '0' END + FROM activite[PX].t_services_facturation + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + WHERE t_services_facturation.code_original = CLI_CODE_UF; + + + + UPDATE w_MVTS_MOUVEMENTS_keys + SET unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM activite[PX].t_unites_fonctionnelles + WHERE t_unites_fonctionnelles.code_original = CLI_CODE_UF; + + + UPDATE w_MVTS_MOUVEMENTS_keys + SET unite_medicale_id = COALESCE(t_unites_medicales.oid,0) + FROM activite[PX].t_unites_medicales + WHERE t_unites_medicales.code_original = CLI_CODE_UM; + + + UPDATE w_MVTS_MOUVEMENTS_keys + SET activite_id = COALESCE(t_activites.oid,0) + FROM activite[PX].t_activites + WHERE t_activites.code_original = CLI_CODE_SERVICE; + + + UPDATE w_MVTS_MOUVEMENTS_keys + SET lit_id = COALESCE(t_lits.oid,0), + CLI_CODE_US = CASE WHEN t_lits.etage_id <> 0 THEN COALESCE(t_etages.code_original,'') ELSE '' END, + etage_id = COALESCE(t_lits.etage_id,0), + chambre_particuliere = t_lits.chambre_particuliere + FROM activite[PX].t_lits + JOIN activite[PX].t_etages ON t_lits.etage_id = t_etages.oid + WHERE t_lits.code_original = CLI_CODE_US || '|' || CLI_DONN_CHAMBRE; + + + INSERT INTO activite[PX].t_lieux( + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + code_original_6) + SELECT + CLI_CODE_UF, + CLI_CODE_SERVICE, + CLI_CODE_US, + CLI_CODE_US || '|' || CLI_DONN_CHAMBRE, + CLI_CODE_UM, + CLI_CODE_UF + FROM w_MVTS_MOUVEMENTS_keys + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = CLI_CODE_UF AND + code_original_2 = CLI_CODE_SERVICE AND + code_original_3 = CLI_CODE_US AND + code_original_4 = CLI_CODE_US || '|' || CLI_DONN_CHAMBRE AND + code_original_5 = CLI_CODE_UM AND + code_original_6 = CLI_CODE_UF + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5,6; + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original + AND (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + activite_id = COALESCE(t_activites.oid,0) + FROM activite[PX].t_activites + WHERE code_original_2 = t_activites.code_original + AND activite_id <> COALESCE(t_activites.oid,0); + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + UPDATE activite[PX].t_lieux SET + unite_medicale_id = COALESCE(t_unites_medicales.oid,0) + FROM activite[PX].t_unites_medicales + WHERE code_original_5 = t_unites_medicales.code_original + AND unite_medicale_id <> COALESCE(t_unites_medicales.oid,0); + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + + + + + UPDATE w_MVTS_MOUVEMENTS_keys + set lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = CLI_CODE_UF AND + code_original_2 = CLI_CODE_SERVICE AND + code_original_3 = CLI_CODE_US AND + code_original_4 = CLI_CODE_US || '|' || CLI_DONN_CHAMBRE AND + code_original_5 = CLI_CODE_UM AND + code_original_6 = CLI_CODE_UF; + + + + VACUUM FULL w_MVTS_MOUVEMENTS_keys; + + ALTER TABLE w_MVTS_MOUVEMENTS_keys ADD CONSTRAINT w_MVTS_MOUVEMENTS_keys_pkey PRIMARY KEY(key); + + + + DROP TABLE IF EXISTS w_mouvements_sejour; + + CREATE TEMP TABLE w_mouvements_sejour AS + SELECT + w_MVTS_MOUVEMENTS.CLI_DONN_NOABSEPISODE, + p_sejours.no_sejour AS no_sejour, + p_sejours.oid AS sejour_id, + sequence, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE WHEN p_calendrier.date = CLI_DATE_MOUVEMENT_debut THEN CLI_HEURE_MOUVEMENT_debut ELSE 0 END AS heure_debut, + CASE WHEN p_calendrier.date = CLI_DATE_MOUVEMENT_fin THEN CLI_HEURE_MOUVEMENT_fin ELSE 240000 END AS heure_fin, + CASE WHEN p_calendrier.date = CLI_DATE_MOUVEMENT_debut AND est_entree = '1' AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes, + CASE WHEN p_calendrier.date = CLI_DATE_MOUVEMENT_fin AND est_sortie = '1' AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes, + CASE WHEN p_calendrier.date = CLI_DATE_MOUVEMENT_debut AND est_entree = '1' AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree, + CASE WHEN p_calendrier.date = CLI_DATE_MOUVEMENT_fin AND est_sortie = '1' AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie, + CASE + WHEN p_sejours.type_sejour = '1' AND est_hospitalisation_jour <> '1' THEN '1' + WHEN p_sejours.type_sejour = '1' AND est_hospitalisation_jour = '1' AND CLI_CODE_MOUVEMENT = '1' THEN '1' + ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN p_calendrier.date = CLI_DATE_MOUVEMENT_debut AND est_entree = '1' AND p_sejours.type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires, + CASE WHEN p_calendrier.date = CLI_DATE_MOUVEMENT_debut AND est_entree = '1' AND p_sejours.type_sejour = '3' THEN 1 ELSE 0 END AS nb_externes, + CASE WHEN p_calendrier.date = CLI_DATE_MOUVEMENT_debut AND est_entree = '1' AND p_sejours.type_sejour <> '9' AND (dmt_code IN ('303', '307', '308', '401', '402', '403', '404', '405', '406', '407', '408', '409') OR CLI_FLAG_URGENCE = '1') THEN 1 ELSE 0 END AS nb_urgences, + CASE WHEN p_sejours.type_sejour = '5' AND CLI_CODE_MOUVEMENT = '1' THEN 1 ELSE 0 END AS nb_seances, + + CASE WHEN p_calendrier.date = CLI_DATE_MOUVEMENT_debut AND p_sejours.type_sejour = '1' AND est_entree <> '1' AND w_MVTS_MOUVEMENTS.CLI_CODE_UF <> CLI_CODE_UF_before THEN 1 ELSE 0 END AS nb_entrees_mutation_service, + CASE WHEN p_calendrier.date = CLI_DATE_MOUVEMENT_fin AND p_sejours.type_sejour = '1' AND est_sortie <> '1' AND w_MVTS_MOUVEMENTS.CLI_CODE_UF <> CLI_CODE_UF_next THEN 1 ELSE 0 END AS nb_sorties_mutation_service, + CASE WHEN p_calendrier.date = CLI_DATE_MOUVEMENT_debut AND p_sejours.type_sejour = '1' AND est_entree <> '1' AND w_MVTS_MOUVEMENTS.CLI_CODE_US <> CLI_CODE_US_before THEN 1 ELSE 0 END AS nb_entrees_mutation_etage, + CASE WHEN p_calendrier.date = CLI_DATE_MOUVEMENT_fin AND p_sejours.type_sejour = '1' AND est_sortie <> '1' AND w_MVTS_MOUVEMENTS.CLI_CODE_US <> CLI_CODE_US_next THEN 1 ELSE 0 END AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + CASE WHEN p_calendrier.date = CLI_DATE_MOUVEMENT_debut AND p_sejours.type_sejour = '1' AND est_entree <> '1' AND w_MVTS_MOUVEMENTS.CLI_CODE_UM <> CLI_CODE_UM_before THEN 1 ELSE 0 END AS nb_entrees_mutation_unite_medicale, + CASE WHEN p_calendrier.date = CLI_DATE_MOUVEMENT_fin AND p_sejours.type_sejour = '1' AND est_sortie <> '1' AND w_MVTS_MOUVEMENTS.CLI_CODE_UM <> CLI_CODE_UM_next THEN 1 ELSE 0 END AS nb_sorties_mutation_unite_medicale, + + CASE + WHEN p_sejours.type_sejour = '1' AND (p_calendrier.date <> CLI_DATE_MOUVEMENT_debut OR est_sortie = '1') AND est_hospitalisation_jour <> '1' THEN '1' + WHEN p_sejours.type_sejour = '1' AND est_hospitalisation_jour = '1' AND CLI_CODE_MOUVEMENT = '1' THEN 1 + ELSE 0 END AS nb_jours_js_inclus, + CASE + WHEN p_sejours.type_sejour = '1' AND p_calendrier.date <> CLI_DATE_MOUVEMENT_debut AND est_hospitalisation_jour <> '1' THEN '1' + WHEN p_sejours.type_sejour = '1' AND est_hospitalisation_jour = '1' AND CLI_CODE_MOUVEMENT = '1' THEN 1 + ELSE 0 END AS nb_jours_js_non_inclus, + CASE + WHEN p_sejours.type_sejour = '1' AND CLI_CODE_MOUVEMENT <> '8' AND chambre_particuliere = 'O' AND est_hospitalisation_jour <> '1' THEN '1' + WHEN p_sejours.type_sejour = '1' AND est_hospitalisation_jour = '1' AND chambre_particuliere = 'O' AND CLI_CODE_MOUVEMENT = '1' THEN '1' + ELSE '0' END AS est_chambre_particuliere, + CASE + WHEN p_sejours.type_sejour = '1' AND CLI_CODE_MOUVEMENT <> '8' AND chambre_particuliere = 'O' AND (p_calendrier.date <> CLI_DATE_MOUVEMENT_fin OR est_sortie = '1') AND est_hospitalisation_jour <> '1' THEN 1 + WHEN p_sejours.type_sejour = '1' AND est_hospitalisation_jour = '1' AND chambre_particuliere = 'O' AND p_calendrier.date <> CLI_DATE_MOUVEMENT_fin AND CLI_CODE_MOUVEMENT = '1' THEN 1 + ELSE 0 END AS nb_chambres_particulieres, + + 0::numeric AS nb_bebes, + + est_hospitalisation_jour, + + '0'::text AS est_dernier_mouvement_jour, + '0'::text AS est_premier_mouvement_jour, + + lieu_id, + + p_sejours.medecin_sejour_id as medecin_sejour_id + + FROM w_MVTS_MOUVEMENTS + JOIN activite[PX].p_sejours ON w_MVTS_MOUVEMENTS.CLI_DONN_NOABSEPISODE = p_sejours.code_original AND p_sejours.etat = '' + JOIN w_MVTS_MOUVEMENTS_keys ON w_MVTS_MOUVEMENTS.key = w_MVTS_MOUVEMENTS_keys.key + JOIN base.p_calendrier ON + (p_calendrier.date BETWEEN CLI_DATE_MOUVEMENT_debut AND CLI_DATE_MOUVEMENT_fin AND p_calendrier.date <= now() OR (p_calendrier.date = p_sejours.date_entree AND est_entree = '1')) + WHERE (p_sejours.type_sejour NOT IN ('2', '3') OR (p_sejours.type_sejour IN ('2', '3') AND est_entree = '1' AND p_calendrier.date = CLI_DATE_MOUVEMENT_debut)) + AND p_sejours.code_prevu <> '1' + ORDER BY sequence, p_calendrier.date; + + CREATE INDEX w_mouvements_sejour_i1 + ON w_mouvements_sejour + USING btree + (CLI_DONN_NOABSEPISODE); + + CREATE INDEX w_mouvements_sejour_i2 + ON w_mouvements_sejour + USING btree + (no_sejour); + + + -- bébés + UPDATE w_mouvements_sejour + SET nb_bebes = 1 + FROM prod_clinicom.FD_MVTS_NAISSANCE + JOIN activite[PX].p_sejours ON FD_MVTS_NAISSANCE.CLI_Donn_NoAbsEpisodeEnfant = p_sejours.code_original + WHERE w_mouvements_sejour.no_sejour = p_sejours.no_sejour AND date = date(CLI_DATE_NAISSANCE); + + + -- Séances selon ACTES + DROP TABLE IF EXISTS w_FD_ACTES_CCAM_seances; + CREATE TEMP TABLE w_FD_ACTES_CCAM_seances AS + SELECT FD_ACTES_CCAM.CLI_DONN_NOABSEPISODE, + date(CLI_DATE_SAISIE) AS date_seance, + extract('hour' FROM CLI_DATE_SAISIE) * 10000 + extract('minute' FROM CLI_DATE_SAISIE) * 100 + extract('second' FROM CLI_DATE_SAISIE) AS heure_seance, + 1 AS nb_seances + FROM prod_clinicom.FD_ACTES_CCAM JOIN w_ADMISSIONS_select ON FD_ACTES_CCAM.cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + JOIN prod_clinicom.FD_ACTES_ENTETE ON FD_ACTES_CCAM.CLI_DONN_NOABSEPISODE = FD_ACTES_ENTETE.CLI_DONN_NOABSEPISODE AND + FD_ACTES_CCAM.CLI_DONN_LIEN = FD_ACTES_ENTETE.CLI_DONN_LIEN + JOIN base.t_actes ON substring(CLI_CODE_CCAM, 1, 7) = t_actes.code + WHERE (CLI_CODE_CCAM LIKE 'ZZMK%' OR CLI_CODE_CCAM LIKE 'ZZMP%' OR (t_actes.texte ILIKE '%séance%' AND t_actes.code LIKE 'JV%')) + GROUP BY 1,2,3 + ORDER BY 1,2,3; + + + CREATE INDEX w_FD_ACTES_CCAM_seances_i1 + ON w_FD_ACTES_CCAM_seances + USING btree + (CLI_DONN_NOABSEPISODE); + + + + + UPDATE w_mouvements_sejour + SET nb_seances = w_FD_ACTES_CCAM_seances.nb_seances + FROM w_FD_ACTES_CCAM_seances + WHERE w_FD_ACTES_CCAM_seances.CLI_DONN_NOABSEPISODE = w_mouvements_sejour.CLI_DONN_NOABSEPISODE AND date = date_seance AND heure_seance BETWEEN heure_debut AND heure_fin AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_FD_ACTES_CCAM_seances.nb_seances; + + + -- Séances selon GHS et DIAG + DROP TABLE IF EXISTS w_FD_PMSI_RSS_seances; + CREATE TEMP TABLE w_FD_PMSI_RSS_seances AS + SELECT FD_PMSI_RSS.CLI_DONN_NOABSEPISODE, + date(CLI_DATE_ENTREE) AS date_seance, + extract('hour' FROM CLI_DATE_ENTREE) * 10000 + extract('minute' FROM CLI_DATE_ENTREE) * 100 + extract('second' FROM CLI_DATE_ENTREE) AS heure_seance, + 1 AS nb_seances + FROM prod_clinicom.FD_PMSI_RSS JOIN w_ADMISSIONS_select ON FD_PMSI_RSS.cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + LEFT JOIN prod_clinicom.FD_PMSI_DIAG ON FD_PMSI_DIAG.CLI_DONN_NOABSEPISODE = FD_PMSI_RSS.CLI_DONN_NOABSEPISODE AND + CLI_CODE_TYPEDIAGNOSTIC = '1' AND CLI_CODE_DIAG IN ('Z510', 'Z5100', 'Z5101', 'Z511', 'Z512', 'Z5130', 'Z5131') + JOIN base.t_ghs ON CLI_CODE_GHS = t_ghs.code + WHERE t_ghs.texte ILIKE '%séance%' OR + CLI_CODE_GHM LIKE '28%' OR + FD_PMSI_DIAG.CLI_DONN_NOABSEPISODE IS NOT NULL + GROUP BY 1,2,3 + ORDER BY 1,2,3; + + CREATE INDEX w_FD_PMSI_RSS_seances_i1 + ON w_FD_PMSI_RSS_seances + USING btree + (CLI_DONN_NOABSEPISODE); + + + UPDATE w_mouvements_sejour + SET nb_seances = w_FD_PMSI_RSS_seances.nb_seances + FROM w_FD_PMSI_RSS_seances + WHERE w_FD_PMSI_RSS_seances.CLI_DONN_NOABSEPISODE = w_mouvements_sejour.CLI_DONN_NOABSEPISODE AND date = date_seance AND heure_seance BETWEEN heure_debut AND heure_fin AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_FD_PMSI_RSS_seances.nb_seances; + + + + + -- Si hopital de jour : Date entree dans mouvements = premier mouvement + + UPDATE w_mouvements_sejour + SET nb_entrees_directes = CASE WHEN w_mouvements_sejour.heure_debut = heure_entree THEN 0 + WHEN w_mouvements_sejour.heure_debut = subview.heure_debut THEN 1 + ELSE 0 END + FROM ( + SELECT w_mouvements_sejour.no_sejour, date, + MIN(CASE WHEN est_jour_hospitalisation = '1' THEN heure_debut ELSE 999999 END) AS heure_debut, + MIN(CASE WHEN nb_entrees_directes = 1 THEN heure_debut ELSE 999999 END) AS heure_entree + FROM w_mouvements_sejour + JOIN activite[PX].p_sejours ON w_mouvements_sejour.no_sejour = p_sejours.no_sejour AND w_mouvements_sejour.date = p_sejours.date_entree + WHERE est_hospitalisation_jour = '1' + GROUP BY 1,2 + HAVING MIN(CASE WHEN est_jour_hospitalisation = '1' THEN heure_debut ELSE 999999 END) IS DISTINCT FROM + MIN(CASE WHEN nb_entrees_directes = 1 THEN heure_debut ELSE 999999 END) + ORDER BY 1 + ) subview + WHERE est_hospitalisation_jour = '1' AND + w_mouvements_sejour.no_sejour = subview.no_sejour AND + w_mouvements_sejour.date = subview.date; + + + + UPDATE w_mouvements_sejour + SET nb_sorties_directes = CASE WHEN w_mouvements_sejour.heure_fin = heure_sortie THEN 0 + WHEN w_mouvements_sejour.heure_fin = subview.heure_fin THEN 1 + ELSE 0 END + FROM ( + SELECT w_mouvements_sejour.no_sejour, date, + MAX(CASE WHEN est_jour_hospitalisation = '1' THEN heure_fin ELSE 0 END) AS heure_fin, + MAX(CASE WHEN nb_sorties_directes = 1 THEN heure_fin ELSE 0 END) AS heure_sortie + FROM w_mouvements_sejour + JOIN activite[PX].p_sejours ON w_mouvements_sejour.no_sejour = p_sejours.no_sejour AND w_mouvements_sejour.date = p_sejours.date_sortie + WHERE est_hospitalisation_jour = '1' + GROUP BY 1,2 + HAVING MAX(CASE WHEN est_jour_hospitalisation = '1' THEN heure_fin ELSE 0 END) IS DISTINCT FROM + MAX(CASE WHEN nb_sorties_directes = 1 THEN heure_fin ELSE 0 END) + ORDER BY 1 + ) subview + WHERE est_hospitalisation_jour = '1' AND + w_mouvements_sejour.no_sejour = subview.no_sejour AND + w_mouvements_sejour.date = subview.date; + + + + + + + -- Génération + DELETE FROM w_mouvements_sejour + WHERE + nb_entrees_directes = 0 AND + nb_sorties_directes = 0 AND + est_jour_hospitalisation <> '1' AND + nb_ambulatoires = 0 AND + nb_externes = 0 AND + nb_urgences = 0 AND + nb_seances = 0 AND + nb_entrees_mutation_service = 0 AND + nb_sorties_mutation_service = 0 AND + nb_entrees_mutation_etage = 0 AND + nb_sorties_mutation_etage = 0 AND + nb_entrees_mutation_activite = 0 AND + nb_sorties_mutation_activite = 0 AND + nb_entrees_mutation_unite_medicale = 0 AND + nb_sorties_mutation_unite_medicale = 0 AND + nb_jours_js_inclus = 0 AND + nb_jours_js_non_inclus = 0 AND + est_chambre_particuliere <> '1' AND + nb_chambres_particulieres = 0 AND + nb_bebes = 0; + + + UPDATE w_mouvements_sejour + SET est_premier_mouvement_jour = '1' + FROM ( + SELECT no_sejour, date, MIN(heure_debut) AS heure_debut + FROM w_mouvements_sejour + GROUP BY 1,2 + HAVING MIN(heure_debut) <> 0 + ) subview + WHERE w_mouvements_sejour.no_sejour = subview.no_sejour AND + w_mouvements_sejour.heure_debut = subview.heure_debut; + + + UPDATE w_mouvements_sejour + SET est_dernier_mouvement_jour = '1' + FROM ( + SELECT no_sejour, date, MAX(heure_fin) AS heure_fin + FROM w_mouvements_sejour + GROUP BY 1,2 + HAVING MAX(heure_fin) <> 240000 + ) subview + WHERE w_mouvements_sejour.no_sejour = subview.no_sejour AND + w_mouvements_sejour.heure_fin = subview.heure_fin; + + + + + -- Mise en production des mouvements + + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_1'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_2'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_3'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_4'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_5'); + + INSERT INTO activite[PX].p_mouvements_sejour( + sejour_id, no_sejour, date, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + est_premier_mouvement_jour,est_dernier_mouvement_jour, jour_semaine, is_weekend) + SELECT sejour_id, no_sejour, date,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + est_premier_mouvement_jour,est_dernier_mouvement_jour, jour_semaine, is_weekend + FROM w_mouvements_sejour + WHERE heure_fin >= heure_debut + ORDER BY no_sejour, sequence; + + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_5'); + + + + UPDATE activite[PX].p_sejours + SET code_sorti = '1' + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + code_sorti = '0' AND + (nb_ambulatoires > 0 OR nb_externes > 0) AND + date_sortie <= now(); + + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + WHERE type_sejour <> '5' AND + type_sejour <> '1' AND + no_sejour IN ( + SELECT no_sejour + FROM activite[PX].p_mouvements_sejour + WHERE nb_seances > 0); + + + UPDATE activite[PX].p_mouvements_sejour + SET nb_externes = 0, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + ( + nb_externes <> 0 OR + nb_ambulatoires <> 0 + ); + + + ]]> + + + + + + + + + 0 THEN + SUBSTR(CLI_DONN_EXERCTX,3,2) || '_' || + FD_FAC_DETFAC.CLI_CODE_OBJETFACTURATION || CLI_DONN_NOOBJETCTX + ELSE '' END::text AS no_facture_avoir, + p_sejours.ghs_id AS ghs_id, + + CASE + WHEN FD_FAC_DETFAC.CLI_CODE_TYPEDEBITEUR IN (1) THEN '1' + WHEN FD_FAC_DETFAC.CLI_CODE_TYPEDEBITEUR = 7 THEN '0' + ELSE '2' + END::text AS type_tiers_payant, + w_MVTS_EPISODES_debiteurs.tiers_payant_0_id, + CASE WHEN FD_FAC_DETFAC.CLI_CODE_TYPEDEBITEUR IN (1) THEN COALESCE(w_FB_FAC_DEBITEURS.tiers_payant_1_id,0) ELSE COALESCE(w_MVTS_EPISODES_debiteurs.tiers_payant_1_id,0) END AS tiers_payant_1_id, + CASE WHEN FD_FAC_DETFAC.CLI_CODE_TYPEDEBITEUR NOT IN (1,2) AND FD_FAC_DETFAC.CLI_CODE_TYPEDEBITEUR <> 7 THEN COALESCE(w_FB_FAC_DEBITEURS.tiers_payant_2_id,0) ELSE COALESCE(w_MVTS_EPISODES_debiteurs.tiers_payant_2_id,0) END AS tiers_payant_2_id, + + CASE WHEN FD_FAC_DETFAC.CLI_CODE_OBJETFACTURATION = 'I' THEN '1'::text ELSE '0'::text END AS est_budget_global, + '0'::text AS est_pmsi, + 0::bigint AS rss_id, + FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE, + FD_FAC_DETFAC.CLI_DONN_EXERCOMPTA, + FD_FAC_DETFAC.CLI_DONN_NOOBJETFAC, + FD_FAC_DETFAC.CLI_CODE_TYPEDEBITEUR, + FD_FAC_DETFAC.CLI_CODE_ORGANISME, + FD_FAC_DETFAC.CLI_FLAG_SENS, + FD_FAC_DETFAC.CLI_CODE_OBJETFACTURATION, + FD_FAC_DETFAC.CLI_DATE_OBJETFAC, + date(FD_FAC_DETFAC.CLI_DATE_DEBPERIODE) AS CLI_DATE_DEBPERIODE, + date(FD_FAC_DETFAC.CLI_DATE_FINPERIODE) AS CLI_DATE_FINPERIODE, + FD_FAC_DETFAC.CLI_CODE_ETAT, + CASE WHEN CLI_FLAG_SENS = 1 THEN FD_FAC_DETFAC.CLI_DONN_MONTANT ELSE 0 - FD_FAC_DETFAC.CLI_DONN_MONTANT END AS CLI_DONN_MONTANT, + FD_FAC_DETFAC.CLI_DONN_EXERCTX, + FD_FAC_DETFAC.CLI_DONN_NOOBJETCTX, + FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET + FROM prod_clinicom.FD_FAC_DETFAC + JOIN activite[PX].p_sejours ON FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE = p_sejours.code_original AND p_sejours.etat = '' + JOIN w_MVTS_EPISODES_debiteurs ON w_MVTS_EPISODES_debiteurs.CLI_DONN_NOABSEPISODE = FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE + LEFT JOIN w_FB_FAC_DEBITEURS ON FD_FAC_DETFAC.CLI_CODE_ORGANISME = w_FB_FAC_DEBITEURS.CLI_CODE_ORGANISME + LEFT JOIN w_FD_FAC_DETFAC_horspmsi ON w_FD_FAC_DETFAC_horspmsi.CLI_DONN_NOABSEPISODE = FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE AND + w_FD_FAC_DETFAC_horspmsi.CLI_CODE_NOINTERNEOBJET = FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET AND + w_FD_FAC_DETFAC_horspmsi.CLI_DONN_EXERCOMPTA = FD_FAC_DETFAC.CLI_DONN_EXERCOMPTA + WHERE FD_FAC_DETFAC.CLI_CODE_OBJETFACTURATION <> 'P' AND (FD_FAC_DETFAC.CLI_CODE_OBJETFACTURATION <> 'I' OR w_FD_FAC_DETFAC_horspmsi.CLI_DONN_NOABSEPISODE IS NOT NULL); + + + DROP SEQUENCE IF EXISTS w_FD_FAC_DETFACLIG_sequence; + CREATE TEMP SEQUENCE w_FD_FAC_DETFACLIG_sequence; + + + DROP TABLE IF EXISTS w_FD_FAC_DETFACLIG; + CREATE TEMP TABLE w_FD_FAC_DETFACLIG AS + SELECT + nextval('w_FD_FAC_DETFACLIG_sequence'::regclass) AS oid, + 0::bigint AS FD_ACTES_CCAM_id, + + w_FD_FAC_DETFAC.no_sejour, + w_FD_FAC_DETFAC.sejour_id, + w_FD_FAC_DETFAC.no_facture, + 0::bigint AS rss_id, + 0::bigint AS no_rss, + 0::bigint AS ghs_id, + '0'::text AS inclus_dans_sejour, + + w_FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE, + w_FD_FAC_DETFAC.CLI_DONN_NOOBJETFAC, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET, + w_FD_FAC_DETFAC.CLI_CODE_OBJETFACTURATION, + w_FD_FAC_DETFAC.CLI_CODE_ETAT, + w_FD_FAC_DETFAC.CLI_FLAG_SENS, + w_FD_FAC_DETFAC.CLI_DONN_EXERCOMPTA, + + ''::text AS CLI_CODE_MEDECINREALISATEUR, + ''::text AS CLI_CODE_CCAM, + ''::text AS CLI_CODE_PHASE, + ''::text AS CLI_CODE_ACTIVITE, + ''::text AS CLI_DONN_EXTDOC, + ''::text AS CLI_DONN_MODIFICATEUR, + CLI_SEQUENCE1ACTE, + CLI_SEQUENCE2ACTE, + + CLI_CODE_ORDONNATEUR::text, + CASE WHEN CLI_CODE_PRESTATIONEXTERNE = '' THEN CLI_DONN_DESCRIPTIONCOURTE ELSE CLI_CODE_PRESTATIONEXTERNE END AS CLI_CODE_PRESTATION, + date(CLI_DATE_DEBPREST) AS CLI_DATE_DEBPREST, + date(COALESCE(CLI_DATE_FINPREST,CLI_DATE_DEBPREST)) AS CLI_DATE_FINPREST, + CASE WHEN CLI_CODE_PRESTATIONEXTERNE = '' THEN CLI_DONN_QTE ELSE 1 END * (CASE WHEN CLI_FLAG_SENS = 1 THEN 1 ELSE -1 END) AS CLI_DONN_QTE, + CASE WHEN CLI_CODE_PRESTATIONEXTERNE <> '' THEN CLI_DONN_QTE ELSE 1 END AS CLI_DONN_COEFF, + CLI_DONN_TAUX, + CLI_DONN_TU, + CASE WHEN CLI_FLAG_SENS = 1 THEN CLI_DONN_MONTANTLIG ELSE 0 - CLI_DONN_MONTANTLIG END AS CLI_DONN_MONTANTLIG, + CLI_CODE_PRATICIEN, + CLI_CODE_PRATICIENINTERNE, + CLI_DONN_NOOBJINTFAC + FROM prod_clinicom.FD_FAC_DETFACLIG JOIN w_ADMISSIONS_select ON FD_FAC_DETFACLIG.cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + JOIN w_FD_FAC_DETFAC ON FD_FAC_DETFACLIG.CLI_DONN_NOABSEPISODE = w_FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE AND + FD_FAC_DETFACLIG.CLI_DONN_NOOBJINTFAC = w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET AND + FD_FAC_DETFACLIG.CLI_DONN_EXERCOMPTA = w_FD_FAC_DETFAC.CLI_DONN_EXERCOMPTA + JOIN prod_clinicom.FB_FAC_PRESTATION ON FD_FAC_DETFACLIG.CLI_CODE_PRESTATION = FB_FAC_PRESTATION.CLI_CODE_PRESTATION; + + + -- Suppression des lignes de forfait journalier en trop + + DELETE FROM w_FD_FAC_DETFACLIG + USING + ( + SELECT + w_FD_FAC_DETFAC.no_facture, + CLI_DONN_MONTANTLIG , CLI_DONN_MONTANT, + CLI_DONN_MONTANTLIG - CLI_DONN_MONTANT AS CLI_DONN_MONTANTDIFF + FROM w_FD_FAC_DETFAC + JOIN ( + SELECT + no_facture, + SUM(CLI_DONN_MONTANTLIG) AS CLI_DONN_MONTANTLIG + FROM w_FD_FAC_DETFACLIG + GROUP BY 1 + ) subview ON subview.no_facture = w_FD_FAC_DETFAC.no_facture + WHERE CLI_DONN_MONTANTLIG <> CLI_DONN_MONTANT + ) subview + WHERE subview.no_facture = w_FD_FAC_DETFACLIG.no_facture AND subview.CLI_DONN_MONTANTDIFF = w_FD_FAC_DETFACLIG.CLI_DONN_MONTANTLIG; + + + + ]]> + + + + + 0 + JOIN pmsi.t_prestations t_prestations_pmsi ON prestation_id = t_prestations_pmsi.oid AND + t_prestations_pmsi.code NOT IN ('BHN', 'PHN', 'ELMA', 'HYP', 'PB', 'PB F', 'PHU', 'PNDL', 'SAP', 'SCOL', 'SIND') + LEFT JOIN pmsi.t_ghs t_ghs_pmsi ON p_rss.ghs_id = t_ghs_pmsi.oid + LEFT JOIN base.t_ghs ON t_ghs_pmsi.code = t_ghs.code; + + + -- Plusieurs RSS pour le meme sejour + SELECT base.cti_execute(' + UPDATE w_FD_FAC_DETFACLIG + SET no_facture = w_FD_FAC_DETFACLIG.no_facture || ''-'' || suffixe + FROM ( + SELECT no_facture, MAX(rss_id) AS rss_id, count(*) AS suffixe + FROM w_FD_FAC_DETFACLIG + WHERE CLI_CODE_OBJETFACTURATION = ''PMSI'' + GROUP BY 1 + HAVING COUNT(DISTINCT rss_id) > 1 + ) subview + WHERE w_FD_FAC_DETFACLIG.no_facture = subview.no_facture AND + w_FD_FAC_DETFACLIG.rss_id = subview.rss_id',50); + + + + + UPDATE activite[PX].p_sejours SET ghs_id = w_FD_FAC_DETFACLIG.ghs_id + FROM w_FD_FAC_DETFACLIG + WHERE p_sejours.no_sejour = w_FD_FAC_DETFACLIG.no_sejour AND + CLI_CODE_OBJETFACTURATION = 'PMSI' AND w_FD_FAC_DETFACLIG.ghs_id <> 0 AND + CLI_CODE_PRESTATION = 'GHS' AND p_sejours.ghs_id IS DISTINCT FROM w_FD_FAC_DETFACLIG.ghs_id; + + + + INSERT INTO w_FD_FAC_DETFAC + SELECT + w_FD_FAC_DETFACLIG.no_sejour, + w_FD_FAC_DETFACLIG.sejour_id, + w_FD_FAC_DETFACLIG.no_facture, + ''::text AS no_facture_avoir, + MAX(w_FD_FAC_DETFACLIG.ghs_id), + + '1'::text AS type_tiers_payant, + MAX(w_MVTS_EPISODES_debiteurs.tiers_payant_0_id), + MAX(w_MVTS_EPISODES_debiteurs.tiers_payant_1_id), + MAX(w_MVTS_EPISODES_debiteurs.tiers_payant_2_id), + + '1'::text AS est_budget_global, + '1'::text AS est_pmsi, + rss_id, + w_FD_FAC_DETFACLIG.CLI_DONN_NOABSEPISODE, + MAX(CLI_DONN_EXERCOMPTA), + MAX(CLI_DONN_NOOBJETFAC), + 1::numeric AS CLI_CODE_TYPEDEBITEUR, + ''::text AS CLI_CODE_ORGANISME, + MAX(CLI_FLAG_SENS), + MAX(CLI_CODE_OBJETFACTURATION), + MAX(date_trunc('month',CLI_DATE_FINPREST) + interval '2 months' - interval '1 day') AS CLI_DATE_OBJETFAC, + MIN(CLI_DATE_DEBPREST) AS CLI_DATE_DEBPERIODE, + MAX(CLI_DATE_FINPREST) AS CLI_DATE_FINPERIODE, + MAX(CLI_CODE_ETAT), + SUM(CLI_DONN_MONTANTLIG), + 0::numeric AS CLI_DONN_EXERCTX, + 0::numeric AS CLI_DONN_NOOBJETCTX, + MAX(CLI_CODE_NOINTERNEOBJET) + FROM w_FD_FAC_DETFACLIG + JOIN w_MVTS_EPISODES_debiteurs ON w_MVTS_EPISODES_debiteurs.CLI_DONN_NOABSEPISODE = w_FD_FAC_DETFACLIG.CLI_DONN_NOABSEPISODE + WHERE CLI_CODE_OBJETFACTURATION= 'PMSI' + GROUP BY 1,2,3,12,13; + + + ]]> + + + + + 0; + + + + + DROP TABLE IF EXISTS w_FD_ACTES_CCAM; + CREATE TEMP TABLE w_FD_ACTES_CCAM AS + SELECT + no_sejour, + ''::text AS no_facture_1, + ''::text AS no_facture_2, + ''::text AS no_facture_0, + FD_ACTES_CCAM.CLI_DONN_NOABSEPISODE, + FD_ACTES_CCAM.CLI_DONN_LIEN, + FD_ACTES_CCAM.CLI_DONN_NUMSEQUENCE, + FD_ACTES_ENTETE.CLI_DATE_SAISIE, + FD_ACTES_CCAM.CLI_CODE_CCAM, + FD_ACTES_CCAM.CLI_CODE_TABLECCAM, + FD_ACTES_CCAM.CLI_DONN_NOMBRE, + FD_ACTES_CCAM.CLI_CODE_PHASE, + FD_ACTES_CCAM.CLI_CODE_ACTIVITE, + FD_ACTES_CCAM.CLI_CODE_MEDECINREALISATEUR, + FD_ACTES_CCAM.CLI_DONN_EXTDOC, + FD_ACTES_CCAM.CLI_CODE_ASSNP, + FD_ACTES_CCAM.CLI_FLAG_REMBEXC, + FD_ACTES_CCAM.CLI_FLAG_PRIVE, + FD_ACTES_CCAM.CLI_DONN_TAUXSECU, + FD_ACTES_CCAM.CLI_FLAG_ACTEGRATUIT, + FD_ACTES_CCAM.CLI_DONN_MODIFICATEUR, + FD_ACTES_CCAM.CLI_FLAG_REGIE, + FD_ACTES_CCAM.CLI_DONN_MNTDEPHONORAIRE, + FD_ACTES_CCAM.CLI_FLAG_DISPOSITIFPREV, + FD_ACTES_CCAM.CLI_CODE_CODEASSOC, + FD_ACTES_CCAM.CLI_CODE_REGROUPEMENTFACTURATION, + FD_ACTES_CCAM.CLI_FLAG_DEPASSEMENTAUTORISE, + COALESCE(FB_FAC_ACTECCAMPHASEHISTO.CLI_DONN_PRIXUNITAIRE,0) AS CLI_DONN_PRIXUNITAIRE, + CASE WHEN FD_ACTES_CCAM.CLI_CODE_CODEASSOC <> 'X' THEN COALESCE(FB_FAC_ASSONPCOEFF.CLI_DONN_COEFFICIENT,1) ELSE 0 END AS CLI_DONN_COEFFICIENT_ANP, + COALESCE(FB_FAC_ASSOMODIFICATEURCOEFF_1.CLI_DONN_FORFAIT,0) AS CLI_DONN_FORFAIT_M1, + COALESCE(FB_FAC_ASSOMODIFICATEURCOEFF_1.CLI_DONN_COEFFICIENT,1) AS CLI_DONN_COEFFICIENT_M1, + COALESCE(FB_FAC_ASSOMODIFICATEURCOEFF_2.CLI_DONN_FORFAIT,0) AS CLI_DONN_FORFAIT_M2, + COALESCE(FB_FAC_ASSOMODIFICATEURCOEFF_2.CLI_DONN_COEFFICIENT,1) AS CLI_DONN_COEFFICIENT_M2, + COALESCE(FB_FAC_ASSOMODIFICATEURCOEFF_3.CLI_DONN_FORFAIT,0) AS CLI_DONN_FORFAIT_M3, + COALESCE(FB_FAC_ASSOMODIFICATEURCOEFF_3.CLI_DONN_COEFFICIENT,1) AS CLI_DONN_COEFFICIENT_M3, + COALESCE(FB_FAC_ASSOMODIFICATEURCOEFF_4.CLI_DONN_FORFAIT,0) AS CLI_DONN_FORFAIT_M4, + COALESCE(FB_FAC_ASSOMODIFICATEURCOEFF_4.CLI_DONN_COEFFICIENT,1) AS CLI_DONN_COEFFICIENT_M4, + 1::numeric AS coefficient, + CLI_DONN_PRIXUNITAIRE AS prix_unitaire, + 0::numeric AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_0, + '0'::text AS acte_inclus_dans_sejour_0, + '0'::text AS acte_inclus_dans_sejour_1, + '0'::text AS acte_inclus_dans_sejour_2, + 0::numeric AS montant_facture, + 0::numeric AS montant_facture_0, + 0::numeric AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour + FROM prod_clinicom.FD_ACTES_CCAM JOIN w_ADMISSIONS_select ON FD_ACTES_CCAM.cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + JOIN prod_clinicom.FD_ACTES_ENTETE ON FD_ACTES_CCAM.CLI_DONN_NOABSEPISODE = FD_ACTES_ENTETE.CLI_DONN_NOABSEPISODE AND + FD_ACTES_CCAM.CLI_DONN_LIEN = FD_ACTES_ENTETE.CLI_DONN_LIEN + LEFT JOIN prod_clinicom.FB_FAC_ACTECCAMPHASEHISTO ON FD_ACTES_CCAM.CLI_CODE_CCAM = FB_FAC_ACTECCAMPHASEHISTO.CLI_CODE_ACTE AND + FD_ACTES_CCAM.CLI_CODE_ACTIVITE = FB_FAC_ACTECCAMPHASEHISTO.CLI_CODE_ACTIVITE AND + FD_ACTES_CCAM.CLI_CODE_PHASE = FB_FAC_ACTECCAMPHASEHISTO.CLI_CODE_PHASE AND + FD_ACTES_ENTETE.CLI_DATE_SAISIE BETWEEN CLI_DATE_EFFET AND COALESCE(CLI_DATE_FINEFFET,'2099-12-31 00:00:00') - interval '1 second' + LEFT JOIN prod_clinicom.FB_FAC_ASSONPCOEFF ON FD_ACTES_CCAM.CLI_CODE_CODEASSOC = FB_FAC_ASSONPCOEFF.CLI_CODE_ASSOCIATIONACTE AND + FD_ACTES_ENTETE.CLI_DATE_SAISIE BETWEEN FB_FAC_ASSONPCOEFF.CLI_DATE_DEBUT AND COALESCE(FB_FAC_ASSONPCOEFF.CLI_DATE_FIN,'2099-12-31 00:00:00') - interval '1 second' + LEFT JOIN prod_clinicom.FB_FAC_ASSOMODIFICATEURCOEFF FB_FAC_ASSOMODIFICATEURCOEFF_1 ON SUBSTR(FD_ACTES_CCAM.CLI_DONN_MODIFICATEUR,1,1) = FB_FAC_ASSOMODIFICATEURCOEFF_1.CLI_CODE_MODIFICATEUR AND + FD_ACTES_ENTETE.CLI_DATE_SAISIE BETWEEN FB_FAC_ASSOMODIFICATEURCOEFF_1.CLI_DATE_DEBUT AND COALESCE(FB_FAC_ASSOMODIFICATEURCOEFF_1.CLI_DATE_FIN,'2099-12-31 00:00:00') - interval '1 second' + LEFT JOIN prod_clinicom.FB_FAC_ASSOMODIFICATEURCOEFF FB_FAC_ASSOMODIFICATEURCOEFF_2 ON SUBSTR(FD_ACTES_CCAM.CLI_DONN_MODIFICATEUR,2,1) = FB_FAC_ASSOMODIFICATEURCOEFF_2.CLI_CODE_MODIFICATEUR AND + FD_ACTES_ENTETE.CLI_DATE_SAISIE BETWEEN FB_FAC_ASSOMODIFICATEURCOEFF_2.CLI_DATE_DEBUT AND COALESCE(FB_FAC_ASSOMODIFICATEURCOEFF_2.CLI_DATE_FIN,'2099-12-31 00:00:00') - interval '1 second' + LEFT JOIN prod_clinicom.FB_FAC_ASSOMODIFICATEURCOEFF FB_FAC_ASSOMODIFICATEURCOEFF_3 ON SUBSTR(FD_ACTES_CCAM.CLI_DONN_MODIFICATEUR,3,1) = FB_FAC_ASSOMODIFICATEURCOEFF_3.CLI_CODE_MODIFICATEUR AND + FD_ACTES_ENTETE.CLI_DATE_SAISIE BETWEEN FB_FAC_ASSOMODIFICATEURCOEFF_3.CLI_DATE_DEBUT AND COALESCE(FB_FAC_ASSOMODIFICATEURCOEFF_3.CLI_DATE_FIN,'2099-12-31 00:00:00') - interval '1 second' + LEFT JOIN prod_clinicom.FB_FAC_ASSOMODIFICATEURCOEFF FB_FAC_ASSOMODIFICATEURCOEFF_4 ON SUBSTR(FD_ACTES_CCAM.CLI_DONN_MODIFICATEUR,4,1) = FB_FAC_ASSOMODIFICATEURCOEFF_4.CLI_CODE_MODIFICATEUR AND + FD_ACTES_ENTETE.CLI_DATE_SAISIE BETWEEN FB_FAC_ASSOMODIFICATEURCOEFF_4.CLI_DATE_DEBUT AND COALESCE(FB_FAC_ASSOMODIFICATEURCOEFF_4.CLI_DATE_FIN,'2099-12-31 00:00:00') - interval '1 second' + JOIN activite[PX].p_sejours ON FD_ACTES_CCAM.CLI_DONN_NOABSEPISODE = p_sejours.code_original AND p_sejours.etat = ''; + + + + CREATE INDEX w_FD_ACTES_CCAM_i1 + ON w_FD_ACTES_CCAM + USING btree + (no_sejour); + + CREATE INDEX w_FD_ACTES_CCAM_i2 + ON w_FD_ACTES_CCAM + USING btree + (CLI_DATE_SAISIE); + + + + + UPDATE w_FD_ACTES_CCAM + SET prix_unitaire = round( + CLI_DONN_COEFFICIENT_ANP * + (CLI_DONN_PRIXUNITAIRE + + (CLI_DONN_PRIXUNITAIRE * CLI_DONN_COEFFICIENT_M1) - CLI_DONN_PRIXUNITAIRE + + (CLI_DONN_PRIXUNITAIRE * CLI_DONN_COEFFICIENT_M2) - CLI_DONN_PRIXUNITAIRE + + (CLI_DONN_PRIXUNITAIRE * CLI_DONN_COEFFICIENT_M3) - CLI_DONN_PRIXUNITAIRE + + (CLI_DONN_PRIXUNITAIRE * CLI_DONN_COEFFICIENT_M4) - CLI_DONN_PRIXUNITAIRE) + + CLI_DONN_FORFAIT_M1 + + CLI_DONN_FORFAIT_M2 + + CLI_DONN_FORFAIT_M3 + + CLI_DONN_FORFAIT_M4 + ,2) + WHERE CLI_DONN_PRIXUNITAIRE <> 0 AND + (CLI_DONN_COEFFICIENT_ANP <> 1 OR + CLI_DONN_COEFFICIENT_M1 <> 1 OR + CLI_DONN_COEFFICIENT_M2 <> 1 OR + CLI_DONN_COEFFICIENT_M3 <> 1 OR + CLI_DONN_COEFFICIENT_M4 <> 1 OR + CLI_DONN_FORFAIT_M1 <> 0 OR + CLI_DONN_FORFAIT_M2 <> 0 OR + CLI_DONN_FORFAIT_M3 <> 0 OR + CLI_DONN_FORFAIT_M4 <> 0) ; + + + DROP TABLE IF EXISTS w_FD_FAC_DETFAC_inclus; + CREATE TEMP TABLE w_FD_FAC_DETFAC_inclus AS + SELECT w_FD_FAC_DETFACLIG.no_sejour, + CLI_DATE_DEBPERIODE, + CLI_DATE_FINPERIODE, + MAX(CASE WHEN CLI_CODE_PRESTATION IN ('GHS', 'TM', 'ESTH') AND CLI_DONN_TAUX > 0 THEN '1' ELSE '0' END) AS q_ghs, + MAX(CASE WHEN type_tiers_payant = '0' THEN w_FD_FAC_DETFACLIG.no_facture ELSE '' END) AS no_facture_0, + MAX(CASE WHEN type_tiers_payant = '1' THEN w_FD_FAC_DETFACLIG.no_facture ELSE '' END) AS no_facture_1, + MAX(CASE WHEN type_tiers_payant = '2' THEN w_FD_FAC_DETFACLIG.no_facture ELSE '' END) AS no_facture_2, + MAX(CASE WHEN type_tiers_payant = '0' THEN CLI_DONN_TAUX ELSE 0 END) AS CLI_DONN_TAUX_0, + MAX(CASE WHEN type_tiers_payant = '1' THEN CLI_DONN_TAUX ELSE 0 END) AS CLI_DONN_TAUX_1, + MAX(CASE WHEN type_tiers_payant = '2' THEN CLI_DONN_TAUX ELSE 0 END) AS CLI_DONN_TAUX_2, + MAX(CASE WHEN type_tiers_payant = '0' THEN '1' ELSE '0' END) AS acte_inclus_dans_sejour_0, + MAX(CASE WHEN type_tiers_payant = '1' THEN '1' ELSE '0' END) AS acte_inclus_dans_sejour_1, + MAX(CASE WHEN type_tiers_payant = '2' THEN '1' ELSE '0' END) AS acte_inclus_dans_sejour_2 + FROM w_FD_FAC_DETFACLIG + JOIN w_FD_FAC_DETFAC ON w_FD_FAC_DETFACLIG.CLI_DONN_NOABSEPISODE = w_FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE AND + w_FD_FAC_DETFACLIG.CLI_Donn_NoObjIntFac = w_FD_FAC_DETFAC.CLI_Code_NoInterneObjet + WHERE CLI_CODE_PRESTATION IN ('GHS', 'TM', 'ESTH', 'ACO', 'ADA', 'ADC', 'ADE', 'ADI', 'ATM', 'DEN') AND CLI_DONN_TAUX > 0 + GROUP BY 1,2,3; + + + CREATE INDEX w_FD_FAC_DETFAC_inclus_i1 + ON w_FD_FAC_DETFAC_inclus + USING btree + (no_sejour); + + CREATE INDEX w_FD_FAC_DETFAC_inclus_i2 + ON w_FD_FAC_DETFAC_inclus + USING btree + (CLI_DATE_DEBPERIODE); + + + + + + -- Actes inclus dans séjours (budget global) + UPDATE w_FD_ACTES_CCAM + SET no_facture_1 = w_FD_FAC_DETFAC_inclus.no_facture_1, + taux_1 = 100, + acte_inclus_dans_sejour_1 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_CCAM.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + CLI_DATE_DEBPERIODE = CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_1 = '1' AND + w_FD_ACTES_CCAM.no_facture_1 = '' AND w_FD_ACTES_CCAM.no_facture_2 = '' AND w_FD_ACTES_CCAM.no_facture_0 = ''; + + UPDATE w_FD_ACTES_CCAM + SET no_facture_2 = w_FD_FAC_DETFAC_inclus.no_facture_2, + taux_2 = 100, + acte_inclus_dans_sejour_2 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_CCAM.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + CLI_DATE_DEBPERIODE = CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_2 = '1' AND + w_FD_ACTES_CCAM.no_facture_1 = '' AND w_FD_ACTES_CCAM.no_facture_2 = '' AND w_FD_ACTES_CCAM.no_facture_0 = ''; + + UPDATE w_FD_ACTES_CCAM + SET no_facture_0 = w_FD_FAC_DETFAC_inclus.no_facture_0, + taux_0 = 100, + acte_inclus_dans_sejour_0 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_CCAM.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + CLI_DATE_DEBPERIODE = CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_0 = '1' AND + w_FD_ACTES_CCAM.no_facture_1 = '' AND w_FD_ACTES_CCAM.no_facture_2 = '' AND w_FD_ACTES_CCAM.no_facture_0 = ''; + + + UPDATE w_FD_ACTES_CCAM + SET no_facture_1 = w_FD_FAC_DETFAC_inclus.no_facture_1, + taux_1 = 100, + acte_inclus_dans_sejour_1 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_CCAM.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_1 = '1' AND + w_FD_ACTES_CCAM.no_facture_1 = '' AND w_FD_ACTES_CCAM.no_facture_2 = '' AND w_FD_ACTES_CCAM.no_facture_0 = ''; + + + UPDATE w_FD_ACTES_CCAM + SET no_facture_2 = w_FD_FAC_DETFAC_inclus.no_facture_2, + taux_2 = 100, + acte_inclus_dans_sejour_2 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_CCAM.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_2 = '1' AND + w_FD_ACTES_CCAM.no_facture_1 = '' AND w_FD_ACTES_CCAM.no_facture_2 = '' AND w_FD_ACTES_CCAM.no_facture_0 = ''; + + UPDATE w_FD_ACTES_CCAM + SET no_facture_0 = w_FD_FAC_DETFAC_inclus.no_facture_0, + taux_0 = 100, + acte_inclus_dans_sejour_0 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_CCAM.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_0 = '1' AND + w_FD_ACTES_CCAM.no_facture_1 = '' AND w_FD_ACTES_CCAM.no_facture_2 = '' AND w_FD_ACTES_CCAM.no_facture_0 = ''; + + + + UPDATE w_FD_ACTES_CCAM + SET montant_facture_actes_inclus_dans_sejour = round(CLI_DONN_NOMBRE * prix_unitaire * taux_1 / 100,2), + montant_facture_1_actes_inclus_dans_sejour = round(CLI_DONN_NOMBRE * prix_unitaire * taux_1 / 100,2) + WHERE acte_inclus_dans_sejour_1 = '1'; + + UPDATE w_FD_ACTES_CCAM + SET montant_facture_actes_inclus_dans_sejour = montant_facture_actes_inclus_dans_sejour + round(CLI_DONN_NOMBRE * prix_unitaire * taux_2 / 100,2), + montant_facture_2_actes_inclus_dans_sejour = round(CLI_DONN_NOMBRE * prix_unitaire * taux_2 / 100,2) + WHERE acte_inclus_dans_sejour_2 = '1'; + + UPDATE w_FD_ACTES_CCAM + SET montant_facture_actes_inclus_dans_sejour = montant_facture_actes_inclus_dans_sejour + round(CLI_DONN_NOMBRE * prix_unitaire * taux_0 / 100,2), + montant_facture_2_actes_inclus_dans_sejour = round(CLI_DONN_NOMBRE * prix_unitaire * taux_0 / 100,2) + WHERE acte_inclus_dans_sejour_0 = '1'; + + + + + + + + + DROP TABLE IF EXISTS w_FD_FAC_DETFACLIG_taux; + CREATE TEMP TABLE w_FD_FAC_DETFACLIG_taux AS + SELECT w_FD_FAC_DETFACLIG.no_sejour, + CLI_CODE_PRESTATION, + CLI_DONN_TU, + MAX(CASE WHEN type_tiers_payant = '1' THEN w_FD_FAC_DETFACLIG.no_facture ELSE '' END) AS no_facture_1, + MAX(CASE WHEN type_tiers_payant = '2' THEN w_FD_FAC_DETFACLIG.no_facture ELSE '' END) AS no_facture_2, + MAX(CASE WHEN type_tiers_payant = '0' THEN w_FD_FAC_DETFACLIG.no_facture ELSE '' END) AS no_facture_0, + MAX(CASE WHEN type_tiers_payant = '1' THEN CLI_DONN_TAUX ELSE 0 END) AS CLI_DONN_TAUX_1, + MAX(CASE WHEN type_tiers_payant = '2' THEN CLI_DONN_TAUX ELSE 0 END) AS CLI_DONN_TAUX_2, + MAX(CASE WHEN type_tiers_payant = '0' THEN CLI_DONN_TAUX ELSE 0 END) AS CLI_DONN_TAUX_0 + FROM w_FD_FAC_DETFACLIG + JOIN w_FD_FAC_DETFAC ON w_FD_FAC_DETFACLIG.CLI_DONN_NOABSEPISODE = w_FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE AND + w_FD_FAC_DETFACLIG.CLI_Donn_NoObjIntFac = w_FD_FAC_DETFAC.CLI_Code_NoInterneObjet AND + CLI_DONN_NOOBJETCTX = 0 + WHERE CLI_CODE_PRESTATION IN (SELECT CLI_CODE_REGROUPEMENTFACTURATION FROM w_FD_ACTES_CCAM) + GROUP BY 1,2,3 + ORDER BY 1,2,3; + + + DROP TABLE IF EXISTS w_FD_FAC_DETFACLIG_tauxb; + CREATE TEMP TABLE w_FD_FAC_DETFACLIG_tauxb AS + SELECT w_FD_FAC_DETFACLIG.no_sejour, + CLI_CODE_PRESTATION, + MAX(CASE WHEN type_tiers_payant = '1' THEN w_FD_FAC_DETFACLIG.no_facture ELSE '' END) AS no_facture_1, + MAX(CASE WHEN type_tiers_payant = '2' THEN w_FD_FAC_DETFACLIG.no_facture ELSE '' END) AS no_facture_2, + MAX(CASE WHEN type_tiers_payant = '0' THEN w_FD_FAC_DETFACLIG.no_facture ELSE '' END) AS no_facture_0, + MAX(CASE WHEN type_tiers_payant = '1' THEN CLI_DONN_TAUX ELSE 0 END) AS CLI_DONN_TAUX_1, + MAX(CASE WHEN type_tiers_payant = '2' THEN CLI_DONN_TAUX ELSE 0 END) AS CLI_DONN_TAUX_2, + MAX(CASE WHEN type_tiers_payant = '0' THEN CLI_DONN_TAUX ELSE 0 END) AS CLI_DONN_TAUX_0 + FROM w_FD_FAC_DETFACLIG + JOIN w_FD_FAC_DETFAC ON w_FD_FAC_DETFACLIG.CLI_DONN_NOABSEPISODE = w_FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE AND + w_FD_FAC_DETFACLIG.CLI_Donn_NoObjIntFac = w_FD_FAC_DETFAC.CLI_Code_NoInterneObjet AND + CLI_DONN_NOOBJETCTX = 0 + WHERE CLI_CODE_PRESTATION IN (SELECT CLI_CODE_REGROUPEMENTFACTURATION FROM w_FD_ACTES_CCAM) + GROUP BY 1,2 + ORDER BY 1,2; + + + + UPDATE w_FD_ACTES_CCAM + SET no_facture_0 = w_FD_FAC_DETFACLIG_taux.no_facture_0, + taux_0 = w_FD_FAC_DETFACLIG_taux.CLI_DONN_TAUX_0 + FROM w_FD_FAC_DETFACLIG_taux + WHERE w_FD_FAC_DETFACLIG_taux.no_sejour = w_FD_ACTES_CCAM.no_sejour AND + CLI_CODE_REGROUPEMENTFACTURATION = CLI_CODE_PRESTATION AND + w_FD_ACTES_CCAM.prix_unitaire = CLI_DONN_TU AND + w_FD_FAC_DETFACLIG_taux.CLI_DONN_TAUX_0 <> 0 AND + w_FD_ACTES_CCAM.no_facture_0 = '' ; + + + UPDATE w_FD_ACTES_CCAM + SET no_facture_1 = w_FD_FAC_DETFACLIG_taux.no_facture_1, + taux_1 = w_FD_FAC_DETFACLIG_taux.CLI_DONN_TAUX_1 + FROM w_FD_FAC_DETFACLIG_taux + WHERE w_FD_FAC_DETFACLIG_taux.no_sejour = w_FD_ACTES_CCAM.no_sejour AND + CLI_CODE_REGROUPEMENTFACTURATION = CLI_CODE_PRESTATION AND + w_FD_ACTES_CCAM.prix_unitaire = CLI_DONN_TU AND + w_FD_ACTES_CCAM.no_facture_1 = '' AND + w_FD_FAC_DETFACLIG_taux.CLI_DONN_TAUX_1 <> 0; + + UPDATE w_FD_ACTES_CCAM + SET no_facture_1 = w_FD_FAC_DETFACLIG_taux.no_facture_1, + taux_1 = w_FD_FAC_DETFACLIG_taux.CLI_DONN_TAUX_1 + FROM w_FD_FAC_DETFACLIG_taux + WHERE w_FD_FAC_DETFACLIG_taux.no_sejour = w_FD_ACTES_CCAM.no_sejour AND + CLI_CODE_REGROUPEMENTFACTURATION = CLI_CODE_PRESTATION AND + w_FD_ACTES_CCAM.no_facture_1 = '' AND + w_FD_FAC_DETFACLIG_taux.CLI_DONN_TAUX_1 <> 0 AND + taux_0 + taux_1 + taux_2 <> 100; + + + + UPDATE w_FD_ACTES_CCAM + SET no_facture_0 = w_FD_FAC_DETFACLIG_taux.no_facture_0, + taux_0 = w_FD_FAC_DETFACLIG_taux.CLI_DONN_TAUX_0 + FROM w_FD_FAC_DETFACLIG_tauxb w_FD_FAC_DETFACLIG_taux + WHERE w_FD_FAC_DETFACLIG_taux.no_sejour = w_FD_ACTES_CCAM.no_sejour AND + CLI_CODE_REGROUPEMENTFACTURATION = CLI_CODE_PRESTATION AND + w_FD_FAC_DETFACLIG_taux.CLI_DONN_TAUX_0 <> 0 AND + taux_0 + taux_1 + taux_2 <> 100 AND + w_FD_ACTES_CCAM.no_facture_0 = ''; + + UPDATE w_FD_ACTES_CCAM + SET no_facture_2 = w_FD_FAC_DETFACLIG_taux.no_facture_2, + taux_2 = w_FD_FAC_DETFACLIG_taux.CLI_DONN_TAUX_2 + FROM w_FD_FAC_DETFACLIG_taux + WHERE w_FD_FAC_DETFACLIG_taux.no_sejour = w_FD_ACTES_CCAM.no_sejour AND + CLI_CODE_REGROUPEMENTFACTURATION = CLI_CODE_PRESTATION AND + w_FD_ACTES_CCAM.prix_unitaire = CLI_DONN_TU AND + w_FD_ACTES_CCAM.no_facture_2 = '' AND + w_FD_FAC_DETFACLIG_taux.CLI_DONN_TAUX_2 <> 0 ; + + UPDATE w_FD_ACTES_CCAM + SET no_facture_2 = w_FD_FAC_DETFACLIG_taux.no_facture_2, + taux_2 = w_FD_FAC_DETFACLIG_taux.CLI_DONN_TAUX_2 + FROM w_FD_FAC_DETFACLIG_tauxb w_FD_FAC_DETFACLIG_taux + WHERE w_FD_FAC_DETFACLIG_taux.no_sejour = w_FD_ACTES_CCAM.no_sejour AND + CLI_CODE_REGROUPEMENTFACTURATION = CLI_CODE_PRESTATION AND + w_FD_ACTES_CCAM.no_facture_2 = '' AND + w_FD_FAC_DETFACLIG_taux.CLI_DONN_TAUX_2 <> 0 AND + taux_0 + taux_1 + taux_2 <> 100; + + + -- mise à jour actes facturés (externes) + UPDATE w_FD_FAC_DETFACLIG SET + CLI_CODE_MEDECINREALISATEUR = w_FD_ACTES_CCAM.CLI_CODE_MEDECINREALISATEUR, + CLI_CODE_CCAM = w_FD_ACTES_CCAM.CLI_CODE_CCAM, + CLI_CODE_PHASE = w_FD_ACTES_CCAM.CLI_CODE_PHASE, + CLI_CODE_ACTIVITE = w_FD_ACTES_CCAM.CLI_CODE_ACTIVITE, + CLI_DONN_EXTDOC = w_FD_ACTES_CCAM.CLI_DONN_EXTDOC, + CLI_DONN_MODIFICATEUR = w_FD_ACTES_CCAM.CLI_DONN_MODIFICATEUR + FROM w_FD_ACTES_CCAM + WHERE w_FD_ACTES_CCAM.CLI_DONN_NOABSEPISODE = w_FD_FAC_DETFACLIG.CLI_DONN_NOABSEPISODE AND + w_FD_ACTES_CCAM.CLI_DONN_LIEN = w_FD_FAC_DETFACLIG.CLI_SEQUENCE1ACTE AND + w_FD_ACTES_CCAM.CLI_DONN_NUMSEQUENCE = w_FD_FAC_DETFACLIG.CLI_SEQUENCE2ACTE AND + w_FD_FAC_DETFACLIG.CLI_CODE_PRATICIENINTERNE <> '' AND + w_FD_FAC_DETFACLIG.CLI_CODE_PRESTATION IN ('ACO', 'ADA', 'ADC', 'ADE', 'ADI', 'ATM', 'DEN'); + + + + + -- Ajout inclus dans sejour + + INSERT INTO w_FD_FAC_DETFACLIG + SELECT + nextval('w_FD_FAC_DETFACLIG_sequence'::regclass) AS oid, + 0::bigint AS FD_ACTES_CCAM_id, + + w_FD_FAC_DETFAC.no_sejour, + w_FD_FAC_DETFAC.sejour_id, + w_FD_FAC_DETFAC.no_facture, + 0::bigint AS rss_id, + 0::bigint AS no_rss, + 0::bigint AS ghs_id, + '1'::text AS inclus_dans_sejour, + + w_FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE, + w_FD_FAC_DETFAC.CLI_DONN_NOOBJETFAC, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET, + w_FD_FAC_DETFAC.CLI_CODE_OBJETFACTURATION, + w_FD_FAC_DETFAC.CLI_CODE_ETAT, + w_FD_FAC_DETFAC.CLI_FLAG_SENS, + w_FD_FAC_DETFAC.CLI_DONN_EXERCOMPTA, + + CLI_CODE_MEDECINREALISATEUR, + CLI_CODE_CCAM, + CLI_CODE_PHASE, + CLI_CODE_ACTIVITE, + CLI_DONN_EXTDOC, + CLI_DONN_MODIFICATEUR, + ''::text AS CLI_SEQUENCE1ACTE, + ''::text AS CLI_SEQUENCE2ACTE, + + ''::text AS CLI_CODE_ORDONNATEUR, + CLI_CODE_REGROUPEMENTFACTURATION AS CLI_CODE_PRESTATION, + date(CLI_DATE_SAISIE) AS CLI_DATE_DEBPREST, + date(CLI_DATE_SAISIE) AS CLI_DATE_FINPREST, + CLI_DONN_NOMBRE AS CLI_DONN_QTE, + 1 AS CLI_DONN_COEFF, + w_FD_ACTES_CCAM.taux_1, + w_FD_ACTES_CCAM.prix_unitaire, + round(w_FD_ACTES_CCAM.prix_unitaire * w_FD_ACTES_CCAM.taux_1 * CLI_DONN_NOMBRE / 100,2) AS CLI_DONN_MONTANTLIG, + 0::numeric AS CLI_CODE_PRATICIEN, + '' AS CLI_CODE_PRATICIENINTERNE, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET + FROM w_FD_ACTES_CCAM + JOIN w_FD_FAC_DETFAC ON w_FD_ACTES_CCAM.no_facture_1 = w_FD_FAC_DETFAC.no_facture + WHERE w_FD_ACTES_CCAM.no_facture_1 <> '' AND + acte_inclus_dans_sejour_1 = '1'; + + + INSERT INTO w_FD_FAC_DETFACLIG + SELECT + nextval('w_FD_FAC_DETFACLIG_sequence'::regclass) AS oid, + 0::bigint AS FD_ACTES_CCAM_id, + + w_FD_FAC_DETFAC.no_sejour, + w_FD_FAC_DETFAC.sejour_id, + w_FD_FAC_DETFAC.no_facture, + 0::bigint AS rss_id, + 0::bigint AS no_rss, + 0::bigint AS ghs_id, + '1'::text AS inclus_dans_sejour, + + w_FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE, + w_FD_FAC_DETFAC.CLI_DONN_NOOBJETFAC, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET, + w_FD_FAC_DETFAC.CLI_CODE_OBJETFACTURATION, + w_FD_FAC_DETFAC.CLI_CODE_ETAT, + w_FD_FAC_DETFAC.CLI_FLAG_SENS, + w_FD_FAC_DETFAC.CLI_DONN_EXERCOMPTA, + + CLI_CODE_MEDECINREALISATEUR, + CLI_CODE_CCAM, + CLI_CODE_PHASE, + CLI_CODE_ACTIVITE, + CLI_DONN_EXTDOC, + CLI_DONN_MODIFICATEUR, + ''::text AS CLI_SEQUENCE1ACTE, + ''::text AS CLI_SEQUENCE2ACTE, + + ''::text AS CLI_CODE_ORDONNATEUR, + CLI_CODE_REGROUPEMENTFACTURATION AS CLI_CODE_PRESTATION, + date(CLI_DATE_SAISIE) AS CLI_DATE_DEBPREST, + date(CLI_DATE_SAISIE) AS CLI_DATE_FINPREST, + CLI_DONN_NOMBRE AS CLI_DONN_QTE, + 1 AS CLI_DONN_COEFF, + w_FD_ACTES_CCAM.taux_2, + w_FD_ACTES_CCAM.prix_unitaire, + round(w_FD_ACTES_CCAM.prix_unitaire * w_FD_ACTES_CCAM.taux_2 * CLI_DONN_NOMBRE / 100,2) AS CLI_DONN_MONTANTLIG, + 0::numeric AS CLI_CODE_PRATICIEN, + '' AS CLI_CODE_PRATICIENINTERNE, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET + FROM w_FD_ACTES_CCAM + JOIN w_FD_FAC_DETFAC ON w_FD_ACTES_CCAM.no_facture_2 = w_FD_FAC_DETFAC.no_facture + WHERE w_FD_ACTES_CCAM.no_facture_2 <> '' AND + acte_inclus_dans_sejour_2 = '1'; + + INSERT INTO w_FD_FAC_DETFACLIG + SELECT + nextval('w_FD_FAC_DETFACLIG_sequence'::regclass) AS oid, + 0::bigint AS FD_ACTES_CCAM_id, + + w_FD_FAC_DETFAC.no_sejour, + w_FD_FAC_DETFAC.sejour_id, + w_FD_FAC_DETFAC.no_facture, + 0::bigint AS rss_id, + 0::bigint AS no_rss, + 0::bigint AS ghs_id, + '1'::text AS inclus_dans_sejour, + + w_FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE, + w_FD_FAC_DETFAC.CLI_DONN_NOOBJETFAC, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET, + w_FD_FAC_DETFAC.CLI_CODE_OBJETFACTURATION, + w_FD_FAC_DETFAC.CLI_CODE_ETAT, + w_FD_FAC_DETFAC.CLI_FLAG_SENS, + w_FD_FAC_DETFAC.CLI_DONN_EXERCOMPTA, + + CLI_CODE_MEDECINREALISATEUR, + CLI_CODE_CCAM, + CLI_CODE_PHASE, + CLI_CODE_ACTIVITE, + CLI_DONN_EXTDOC, + CLI_DONN_MODIFICATEUR, + ''::text AS CLI_SEQUENCE1ACTE, + ''::text AS CLI_SEQUENCE2ACTE, + + ''::text AS CLI_CODE_ORDONNATEUR, + CLI_CODE_REGROUPEMENTFACTURATION AS CLI_CODE_PRESTATION, + date(CLI_DATE_SAISIE) AS CLI_DATE_DEBPREST, + date(CLI_DATE_SAISIE) AS CLI_DATE_FINPREST, + CLI_DONN_NOMBRE AS CLI_DONN_QTE, + 1 AS CLI_DONN_COEFF, + w_FD_ACTES_CCAM.taux_0, + w_FD_ACTES_CCAM.prix_unitaire, + round(w_FD_ACTES_CCAM.prix_unitaire * w_FD_ACTES_CCAM.taux_0 * CLI_DONN_NOMBRE / 100,2) AS CLI_DONN_MONTANTLIG, + 0::numeric AS CLI_CODE_PRATICIEN, + '' AS CLI_CODE_PRATICIENINTERNE, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET + FROM w_FD_ACTES_CCAM + JOIN w_FD_FAC_DETFAC ON w_FD_ACTES_CCAM.no_facture_0 = w_FD_FAC_DETFAC.no_facture + WHERE w_FD_ACTES_CCAM.no_facture_0 <> '' AND + acte_inclus_dans_sejour_0 = '1'; + + + ]]> + + + + + + + 0 + GROUP BY 1,2,3; + + + + + -- Actes inclus dans séjours (budget global) + UPDATE w_FD_ACTES_ACTRHS + SET no_facture_1 = w_FD_FAC_DETFAC_inclus.no_facture_1, + taux_1 = 100, + acte_inclus_dans_sejour_1 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_ACTRHS.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + CLI_DATE_DEBPERIODE = CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_1 = '1' AND + w_FD_ACTES_ACTRHS.no_facture_1 = '' AND w_FD_ACTES_ACTRHS.no_facture_2 = '' AND w_FD_ACTES_ACTRHS.no_facture_0 = ''; + + UPDATE w_FD_ACTES_ACTRHS + SET no_facture_2 = w_FD_FAC_DETFAC_inclus.no_facture_2, + taux_2 = 100, + acte_inclus_dans_sejour_2 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_ACTRHS.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + CLI_DATE_DEBPERIODE = CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_2 = '1' AND + w_FD_ACTES_ACTRHS.no_facture_1 = '' AND w_FD_ACTES_ACTRHS.no_facture_2 = '' AND w_FD_ACTES_ACTRHS.no_facture_0 = ''; + + UPDATE w_FD_ACTES_ACTRHS + SET no_facture_0 = w_FD_FAC_DETFAC_inclus.no_facture_0, + taux_0 = 100, + acte_inclus_dans_sejour_0 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_ACTRHS.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + CLI_DATE_DEBPERIODE = CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_0 = '1' AND + w_FD_ACTES_ACTRHS.no_facture_1 = '' AND w_FD_ACTES_ACTRHS.no_facture_2 = '' AND w_FD_ACTES_ACTRHS.no_facture_0 = ''; + + + UPDATE w_FD_ACTES_ACTRHS + SET no_facture_1 = w_FD_FAC_DETFAC_inclus.no_facture_1, + taux_1 = 100, + acte_inclus_dans_sejour_1 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_ACTRHS.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_1 = '1' AND + w_FD_ACTES_ACTRHS.no_facture_1 = '' AND w_FD_ACTES_ACTRHS.no_facture_2 = '' AND w_FD_ACTES_ACTRHS.no_facture_0 = ''; + + + UPDATE w_FD_ACTES_ACTRHS + SET no_facture_2 = w_FD_FAC_DETFAC_inclus.no_facture_2, + taux_2 = 100, + acte_inclus_dans_sejour_2 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_ACTRHS.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_2 = '1' AND + w_FD_ACTES_ACTRHS.no_facture_1 = '' AND w_FD_ACTES_ACTRHS.no_facture_2 = '' AND w_FD_ACTES_ACTRHS.no_facture_0 = ''; + + UPDATE w_FD_ACTES_ACTRHS + SET no_facture_0 = w_FD_FAC_DETFAC_inclus.no_facture_0, + taux_0 = 100, + acte_inclus_dans_sejour_0 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_ACTRHS.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_0 = '1' AND + w_FD_ACTES_ACTRHS.no_facture_1 = '' AND w_FD_ACTES_ACTRHS.no_facture_2 = '' AND w_FD_ACTES_ACTRHS.no_facture_0 = ''; + + + + + + -- mise à jour actes facturés (externes) + UPDATE w_FD_FAC_DETFACLIG SET + CLI_CODE_MEDECINREALISATEUR = CASE WHEN w_FD_FAC_DETFACLIG.CLI_CODE_MEDECINREALISATEUR = '' THEN w_FD_ACTES_ACTRHS.CLI_CODE_INTERVENANT ELSE w_FD_FAC_DETFACLIG.CLI_CODE_MEDECINREALISATEUR END, + CLI_CODE_CCAM = CASE WHEN w_FD_FAC_DETFACLIG.CLI_CODE_CCAM = '' THEN w_FD_ACTES_ACTRHS.CLI_CODE_ACTE ELSE w_FD_FAC_DETFACLIG.CLI_CODE_CCAM END + FROM w_FD_ACTES_ACTRHS + WHERE w_FD_ACTES_ACTRHS.CLI_DONN_NOABSEPISODE = w_FD_FAC_DETFACLIG.CLI_DONN_NOABSEPISODE AND + w_FD_ACTES_ACTRHS.CLI_DONN_LIEN = w_FD_FAC_DETFACLIG.CLI_SEQUENCE1ACTE AND + w_FD_ACTES_ACTRHS.CLI_DONN_NUMSEQUENCE = w_FD_FAC_DETFACLIG.CLI_SEQUENCE2ACTE AND + w_FD_FAC_DETFACLIG.CLI_CODE_PRATICIENINTERNE <> '' AND + w_FD_FAC_DETFACLIG.CLI_CODE_PRESTATION NOT IN ('ACO', 'ADA', 'ADC', 'ADE', 'ADI', 'ATM', 'DEN'); + + + + + -- Ajout inclus dans sejour + + INSERT INTO w_FD_FAC_DETFACLIG + SELECT + nextval('w_FD_FAC_DETFACLIG_sequence'::regclass) AS oid, + 0::bigint AS FD_ACTES_ACTRHS_id, + + w_FD_FAC_DETFAC.no_sejour, + w_FD_FAC_DETFAC.sejour_id, + w_FD_FAC_DETFAC.no_facture, + 0::bigint AS rss_id, + 0::bigint AS no_rss, + 0::bigint AS ghs_id, + '1'::text AS inclus_dans_sejour, + + w_FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE, + w_FD_FAC_DETFAC.CLI_DONN_NOOBJETFAC, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET, + w_FD_FAC_DETFAC.CLI_CODE_OBJETFACTURATION, + w_FD_FAC_DETFAC.CLI_CODE_ETAT, + w_FD_FAC_DETFAC.CLI_FLAG_SENS, + w_FD_FAC_DETFAC.CLI_DONN_EXERCOMPTA, + + CLI_CODE_MEDECINREALISATEUR, + CLI_CODE_ACTE, + ''::text AS CLI_CODE_PHASE, + ''::text AS CLI_CODE_ACTIVITE, + ''::text AS CLI_DONN_EXTDOC, + ''::text AS CLI_DONN_MODIFICATEUR, + ''::text AS CLI_SEQUENCE1ACTE, + ''::text AS CLI_SEQUENCE2ACTE, + + ''::text AS CLI_CODE_ORDONNATEUR, + CLI_CODE_ACTIVITESSR AS CLI_CODE_PRESTATION, + date(CLI_DATE_SAISIE) AS CLI_DATE_DEBPREST, + date(CLI_DATE_SAISIE) AS CLI_DATE_FINPREST, + CLI_DONN_NOMBRE AS CLI_DONN_QTE, + 1 AS CLI_DONN_COEFF, + w_FD_ACTES_ACTRHS.taux_1, + w_FD_ACTES_ACTRHS.prix_unitaire, + round(w_FD_ACTES_ACTRHS.prix_unitaire * w_FD_ACTES_ACTRHS.taux_1 * CLI_DONN_NOMBRE / 100,2) AS CLI_DONN_MONTANTLIG, + 0::numeric AS CLI_CODE_PRATICIEN, + '' AS CLI_CODE_PRATICIENINTERNE, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET + FROM w_FD_ACTES_ACTRHS + JOIN w_FD_FAC_DETFAC ON w_FD_ACTES_ACTRHS.no_facture_1 = w_FD_FAC_DETFAC.no_facture + WHERE w_FD_ACTES_ACTRHS.no_facture_1 <> '' AND + acte_inclus_dans_sejour_1 = '1'; + + + INSERT INTO w_FD_FAC_DETFACLIG + SELECT + nextval('w_FD_FAC_DETFACLIG_sequence'::regclass) AS oid, + 0::bigint AS FD_ACTES_ACTRHS_id, + + w_FD_FAC_DETFAC.no_sejour, + w_FD_FAC_DETFAC.sejour_id, + w_FD_FAC_DETFAC.no_facture, + 0::bigint AS rss_id, + 0::bigint AS no_rss, + 0::bigint AS ghs_id, + '1'::text AS inclus_dans_sejour, + + w_FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE, + w_FD_FAC_DETFAC.CLI_DONN_NOOBJETFAC, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET, + w_FD_FAC_DETFAC.CLI_CODE_OBJETFACTURATION, + w_FD_FAC_DETFAC.CLI_CODE_ETAT, + w_FD_FAC_DETFAC.CLI_FLAG_SENS, + w_FD_FAC_DETFAC.CLI_DONN_EXERCOMPTA, + + CLI_CODE_MEDECINREALISATEUR, + CLI_CODE_ACTE, + ''::text AS CLI_CODE_PHASE, + ''::text AS CLI_CODE_ACTIVITE, + ''::text AS CLI_DONN_EXTDOC, + ''::text AS CLI_DONN_MODIFICATEUR, + ''::text AS CLI_SEQUENCE1ACTE, + ''::text AS CLI_SEQUENCE2ACTE, + + ''::text AS CLI_CODE_ORDONNATEUR, + CLI_CODE_ACTIVITESSR AS CLI_CODE_PRESTATION, + date(CLI_DATE_SAISIE) AS CLI_DATE_DEBPREST, + date(CLI_DATE_SAISIE) AS CLI_DATE_FINPREST, + CLI_DONN_NOMBRE AS CLI_DONN_QTE, + 1 AS CLI_DONN_COEFF, + w_FD_ACTES_ACTRHS.taux_2, + w_FD_ACTES_ACTRHS.prix_unitaire, + round(w_FD_ACTES_ACTRHS.prix_unitaire * w_FD_ACTES_ACTRHS.taux_2 * CLI_DONN_NOMBRE / 100,2) AS CLI_DONN_MONTANTLIG, + 0::numeric AS CLI_CODE_PRATICIEN, + '' AS CLI_CODE_PRATICIENINTERNE, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET + FROM w_FD_ACTES_ACTRHS + JOIN w_FD_FAC_DETFAC ON w_FD_ACTES_ACTRHS.no_facture_2 = w_FD_FAC_DETFAC.no_facture + WHERE w_FD_ACTES_ACTRHS.no_facture_2 <> '' AND + acte_inclus_dans_sejour_2 = '1'; + + INSERT INTO w_FD_FAC_DETFACLIG + SELECT + nextval('w_FD_FAC_DETFACLIG_sequence'::regclass) AS oid, + 0::bigint AS FD_ACTES_ACTRHS_id, + + w_FD_FAC_DETFAC.no_sejour, + w_FD_FAC_DETFAC.sejour_id, + w_FD_FAC_DETFAC.no_facture, + 0::bigint AS rss_id, + 0::bigint AS no_rss, + 0::bigint AS ghs_id, + '1'::text AS inclus_dans_sejour, + + w_FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE, + w_FD_FAC_DETFAC.CLI_DONN_NOOBJETFAC, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET, + w_FD_FAC_DETFAC.CLI_CODE_OBJETFACTURATION, + w_FD_FAC_DETFAC.CLI_CODE_ETAT, + w_FD_FAC_DETFAC.CLI_FLAG_SENS, + w_FD_FAC_DETFAC.CLI_DONN_EXERCOMPTA, + + CLI_CODE_MEDECINREALISATEUR, + CLI_CODE_ACTE, + ''::text AS CLI_CODE_PHASE, + ''::text AS CLI_CODE_ACTIVITE, + ''::text AS CLI_DONN_EXTDOC, + ''::text AS CLI_DONN_MODIFICATEUR, + ''::text AS CLI_SEQUENCE1ACTE, + ''::text AS CLI_SEQUENCE2ACTE, + + ''::text AS CLI_CODE_ORDONNATEUR, + CLI_CODE_ACTIVITESSR AS CLI_CODE_PRESTATION, + date(CLI_DATE_SAISIE) AS CLI_DATE_DEBPREST, + date(CLI_DATE_SAISIE) AS CLI_DATE_FINPREST, + CLI_DONN_NOMBRE AS CLI_DONN_QTE, + 1 AS CLI_DONN_COEFF, + w_FD_ACTES_ACTRHS.taux_0, + w_FD_ACTES_ACTRHS.prix_unitaire, + round(w_FD_ACTES_ACTRHS.prix_unitaire * w_FD_ACTES_ACTRHS.taux_0 * CLI_DONN_NOMBRE / 100,2) AS CLI_DONN_MONTANTLIG, + 0::numeric AS CLI_CODE_PRATICIEN, + '' AS CLI_CODE_PRATICIENINTERNE, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET + FROM w_FD_ACTES_ACTRHS + JOIN w_FD_FAC_DETFAC ON w_FD_ACTES_ACTRHS.no_facture_0 = w_FD_FAC_DETFAC.no_facture + WHERE w_FD_ACTES_ACTRHS.no_facture_0 <> '' AND + acte_inclus_dans_sejour_0 = '1'; + + + ]]> + + + + + + + '' THEN FB_FAC_LETTRECLE.CLI_CODE_IMPRESSION ELSE FD_ACTES_NGAP.CLI_DONN_LETTRECLE END AS CLI_CODE_PRESTATION, + 1::numeric AS CLI_DONN_NOMBRE, + FD_ACTES_ENTETE.CLI_CODE_MEDECIN1 AS CLI_CODE_MEDECINREALISATEUR, + FD_ACTES_NGAP.CLI_DONN_TAUXPEC AS CLI_DONN_TAUXSECU, + FD_ACTES_NGAP.CLI_FLAG_ACTEGRATUIT, + FD_ACTES_NGAP.CLI_FLAG_REGIE, + GREATEST(FD_ACTES_NGAP.CLI_DONN_COEFF,0) AS CLI_DONN_COEFF, + CASE WHEN FD_ACTES_NGAP.CLI_DONN_TARIF <> 0 THEN FD_ACTES_NGAP.CLI_DONN_TARIF ELSE COALESCE(FB_FAC_HISTOLETTRECLE.CLI_DONN_TARIF,0) END AS prix_unitaire, + 0::numeric AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_0, + '0'::text AS acte_inclus_dans_sejour_0, + '0'::text AS acte_inclus_dans_sejour_1, + '0'::text AS acte_inclus_dans_sejour_2, + 0::numeric AS montant_facture, + 0::numeric AS montant_facture_0, + 0::numeric AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour + FROM prod_clinicom.FD_ACTES_NGAP JOIN w_ADMISSIONS_select ON FD_ACTES_NGAP.cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + JOIN prod_clinicom.FB_FAC_LETTRECLE ON FD_ACTES_NGAP.CLI_DONN_LETTRECLE = FB_FAC_LETTRECLE.CLI_CODE_LETTRECLE + JOIN prod_clinicom.FD_ACTES_ENTETE ON FD_ACTES_NGAP.CLI_DONN_NOABSEPISODE = FD_ACTES_ENTETE.CLI_DONN_NOABSEPISODE AND + FD_ACTES_NGAP.CLI_DONN_LIEN = FD_ACTES_ENTETE.CLI_DONN_LIEN + JOIN activite[PX].p_sejours ON FD_ACTES_NGAP.CLI_DONN_NOABSEPISODE = p_sejours.code_original AND p_sejours.etat = '' + LEFT JOIN prod_clinicom.FB_FAC_HISTOLETTRECLE ON FD_ACTES_NGAP.CLI_DONN_LETTRECLE = FB_FAC_HISTOLETTRECLE.CLI_CODE_LETTRECLE AND + FD_ACTES_ENTETE.CLI_DATE_SAISIE BETWEEN CLI_DATE_EFFET AND COALESCE(CLI_DATE_FINEFFET,'2099-12-31 00:00:00') - interval '1 second' + WHERE CASE WHEN FB_FAC_LETTRECLE.CLI_CODE_IMPRESSION <> '' THEN FB_FAC_LETTRECLE.CLI_CODE_IMPRESSION ELSE FD_ACTES_NGAP.CLI_DONN_LETTRECLE END + NOT IN ('ATU', 'FPU', 'FTN', 'FTR', 'PHH', 'PHS', 'PII', 'PHU', 'PME', 'SE1', 'SE2', 'SE3', 'SE4','SE5', 'SE6', 'SE7', 'REA', 'SRC', 'STF', 'PJ', 'TM'); + + + + CREATE INDEX w_FD_ACTES_NGAP_i1 + ON w_FD_ACTES_NGAP + USING btree + (no_sejour); + + CREATE INDEX w_FD_ACTES_NGAP_i2 + ON w_FD_ACTES_NGAP + USING btree + (CLI_DATE_SAISIE); + + + + DROP TABLE IF EXISTS w_FD_FAC_DETFAC_inclus; + CREATE TEMP TABLE w_FD_FAC_DETFAC_inclus AS + SELECT w_FD_FAC_DETFACLIG.no_sejour, + CLI_DATE_DEBPERIODE, + CLI_DATE_FINPERIODE, + MAX(CASE WHEN type_tiers_payant = '0' THEN w_FD_FAC_DETFACLIG.no_facture ELSE '' END) AS no_facture_0, + MAX(CASE WHEN type_tiers_payant = '1' THEN w_FD_FAC_DETFACLIG.no_facture ELSE '' END) AS no_facture_1, + MAX(CASE WHEN type_tiers_payant = '2' THEN w_FD_FAC_DETFACLIG.no_facture ELSE '' END) AS no_facture_2, + MAX(CASE WHEN type_tiers_payant = '0' THEN CLI_DONN_TAUX ELSE 0 END) AS CLI_DONN_TAUX_0, + MAX(CASE WHEN type_tiers_payant = '1' THEN CLI_DONN_TAUX ELSE 0 END) AS CLI_DONN_TAUX_1, + MAX(CASE WHEN type_tiers_payant = '2' THEN CLI_DONN_TAUX ELSE 0 END) AS CLI_DONN_TAUX_2, + MAX(CASE WHEN type_tiers_payant = '0' THEN '1' ELSE '0' END) AS acte_inclus_dans_sejour_0, + MAX(CASE WHEN type_tiers_payant = '1' THEN '1' ELSE '0' END) AS acte_inclus_dans_sejour_1, + MAX(CASE WHEN type_tiers_payant = '2' THEN '1' ELSE '0' END) AS acte_inclus_dans_sejour_2 + FROM w_FD_FAC_DETFACLIG + JOIN w_FD_FAC_DETFAC ON w_FD_FAC_DETFACLIG.CLI_DONN_NOABSEPISODE = w_FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE AND + w_FD_FAC_DETFACLIG.CLI_Donn_NoObjIntFac = w_FD_FAC_DETFAC.CLI_Code_NoInterneObjet + WHERE CLI_CODE_PRESTATION IN ('GHS', 'TM', 'ESTH') AND CLI_DONN_TAUX > 0 + GROUP BY 1,2,3; + + CREATE INDEX w_FD_FAC_DETFAC_inclus_i1 + ON w_FD_FAC_DETFAC_inclus + USING btree + (no_sejour); + + + -- Actes inclus dans séjours (budget global) + UPDATE w_FD_ACTES_NGAP + SET no_facture_1 = w_FD_FAC_DETFAC_inclus.no_facture_1, + taux_1 = 100, + acte_inclus_dans_sejour_1 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_NGAP.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + CLI_DATE_DEBPERIODE = CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_1 = '1' AND + w_FD_ACTES_NGAP.no_facture_1 = '' AND w_FD_ACTES_NGAP.no_facture_2 = '' AND w_FD_ACTES_NGAP.no_facture_0 = ''; + + UPDATE w_FD_ACTES_NGAP + SET no_facture_2 = w_FD_FAC_DETFAC_inclus.no_facture_2, + taux_2 = 100, + acte_inclus_dans_sejour_2 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_NGAP.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + CLI_DATE_DEBPERIODE = CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_2 = '1' AND + w_FD_ACTES_NGAP.no_facture_1 = '' AND w_FD_ACTES_NGAP.no_facture_2 = '' AND w_FD_ACTES_NGAP.no_facture_0 = ''; + + UPDATE w_FD_ACTES_NGAP + SET no_facture_0 = w_FD_FAC_DETFAC_inclus.no_facture_0, + taux_0 = 100, + acte_inclus_dans_sejour_0 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_NGAP.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + CLI_DATE_DEBPERIODE = CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_0 = '1' AND + w_FD_ACTES_NGAP.no_facture_1 = '' AND w_FD_ACTES_NGAP.no_facture_2 = '' AND w_FD_ACTES_NGAP.no_facture_0 = ''; + + + UPDATE w_FD_ACTES_NGAP + SET no_facture_1 = w_FD_FAC_DETFAC_inclus.no_facture_1, + taux_1 = 100, + acte_inclus_dans_sejour_1 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_NGAP.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_1 = '1' AND + w_FD_ACTES_NGAP.no_facture_1 = '' AND w_FD_ACTES_NGAP.no_facture_2 = '' AND w_FD_ACTES_NGAP.no_facture_0 = ''; + + + UPDATE w_FD_ACTES_NGAP + SET no_facture_2 = w_FD_FAC_DETFAC_inclus.no_facture_2, + taux_2 = 100, + acte_inclus_dans_sejour_2 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_NGAP.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_2 = '1' AND + w_FD_ACTES_NGAP.no_facture_1 = '' AND w_FD_ACTES_NGAP.no_facture_2 = '' AND w_FD_ACTES_NGAP.no_facture_0 = ''; + + UPDATE w_FD_ACTES_NGAP + SET no_facture_0 = w_FD_FAC_DETFAC_inclus.no_facture_0, + taux_0 = 100, + acte_inclus_dans_sejour_0 = '1' + FROM w_FD_FAC_DETFAC_inclus + WHERE w_FD_FAC_DETFAC_inclus.no_sejour = w_FD_ACTES_NGAP.no_sejour AND + date(CLI_DATE_SAISIE) BETWEEN CLI_DATE_DEBPERIODE AND CLI_DATE_FINPERIODE AND + w_FD_FAC_DETFAC_inclus.acte_inclus_dans_sejour_0 = '1' AND + w_FD_ACTES_NGAP.no_facture_1 = '' AND w_FD_ACTES_NGAP.no_facture_2 = '' AND w_FD_ACTES_NGAP.no_facture_0 = ''; + + + + UPDATE w_FD_ACTES_NGAP + SET montant_facture_actes_inclus_dans_sejour = round(CLI_DONN_NOMBRE * CLI_DONN_COEFF * prix_unitaire * taux_1 / 100,2), + montant_facture_1_actes_inclus_dans_sejour = round(CLI_DONN_NOMBRE * CLI_DONN_COEFF * prix_unitaire * taux_1 / 100,2) + WHERE acte_inclus_dans_sejour_1 = '1'; + + UPDATE w_FD_ACTES_NGAP + SET montant_facture_actes_inclus_dans_sejour = montant_facture_actes_inclus_dans_sejour + round(CLI_DONN_NOMBRE * CLI_DONN_COEFF * prix_unitaire * taux_2 / 100,2), + montant_facture_2_actes_inclus_dans_sejour = round(CLI_DONN_NOMBRE * CLI_DONN_COEFF * prix_unitaire * taux_2 / 100,2) + WHERE acte_inclus_dans_sejour_2 = '1'; + + UPDATE w_FD_ACTES_NGAP + SET montant_facture_actes_inclus_dans_sejour = montant_facture_actes_inclus_dans_sejour + round(CLI_DONN_NOMBRE * CLI_DONN_COEFF * prix_unitaire * taux_0 / 100,2), + montant_facture_2_actes_inclus_dans_sejour = round(CLI_DONN_NOMBRE * CLI_DONN_COEFF * prix_unitaire * taux_0 / 100,2) + WHERE acte_inclus_dans_sejour_0 = '1'; + + + -- mise à jour actes facturés (externes) + UPDATE w_FD_FAC_DETFACLIG SET + CLI_CODE_MEDECINREALISATEUR = CASE WHEN w_FD_FAC_DETFACLIG.CLI_CODE_MEDECINREALISATEUR = '' THEN w_FD_ACTES_NGAP.CLI_CODE_MEDECINREALISATEUR ELSE w_FD_FAC_DETFACLIG.CLI_CODE_MEDECINREALISATEUR END, + CLI_CODE_CCAM = CASE WHEN w_FD_FAC_DETFACLIG.CLI_CODE_CCAM = '' THEN w_FD_ACTES_NGAP.CLI_DONN_LETTRECLE ELSE w_FD_FAC_DETFACLIG.CLI_CODE_CCAM END + FROM w_FD_ACTES_NGAP + WHERE w_FD_ACTES_NGAP.CLI_DONN_NOABSEPISODE = w_FD_FAC_DETFACLIG.CLI_DONN_NOABSEPISODE AND + w_FD_ACTES_NGAP.CLI_DONN_LIEN = w_FD_FAC_DETFACLIG.CLI_SEQUENCE1ACTE AND + w_FD_ACTES_NGAP.CLI_DONN_NUMEROSEQUENCE = w_FD_FAC_DETFACLIG.CLI_SEQUENCE2ACTE AND + w_FD_FAC_DETFACLIG.CLI_CODE_PRATICIENINTERNE <> '' AND + (w_FD_FAC_DETFACLIG.CLI_CODE_MEDECINREALISATEUR = '' OR w_FD_FAC_DETFACLIG.CLI_CODE_CCAM = '') AND + w_FD_FAC_DETFACLIG.CLI_CODE_PRESTATION NOT IN ('ACO', 'ADA', 'ADC', 'ADE', 'ADI', 'ATM', 'DEN'); + + + UPDATE w_FD_FAC_DETFACLIG SET + CLI_CODE_MEDECINREALISATEUR = CASE WHEN w_FD_FAC_DETFACLIG.CLI_CODE_MEDECINREALISATEUR = '' THEN w_FD_ACTES_NGAP.CLI_CODE_MEDECINREALISATEUR ELSE w_FD_FAC_DETFACLIG.CLI_CODE_MEDECINREALISATEUR END, + CLI_CODE_CCAM = CASE WHEN w_FD_FAC_DETFACLIG.CLI_CODE_CCAM = '' THEN w_FD_ACTES_NGAP.CLI_DONN_LETTRECLE ELSE w_FD_FAC_DETFACLIG.CLI_CODE_CCAM END + FROM w_FD_ACTES_NGAP + WHERE w_FD_ACTES_NGAP.CLI_DONN_NOABSEPISODE = w_FD_FAC_DETFACLIG.CLI_DONN_NOABSEPISODE AND + w_FD_ACTES_NGAP.CLI_DONN_LETTRECLE = w_FD_FAC_DETFACLIG.CLI_CODE_PRESTATION AND + w_FD_FAC_DETFACLIG.CLI_CODE_MEDECINREALISATEUR = '' AND + (w_FD_FAC_DETFACLIG.CLI_CODE_MEDECINREALISATEUR = '' OR w_FD_FAC_DETFACLIG.CLI_CODE_CCAM = ''); + + + UPDATE w_FD_FAC_DETFACLIG SET + CLI_CODE_MEDECINREALISATEUR = CASE WHEN w_FD_FAC_DETFACLIG.CLI_CODE_MEDECINREALISATEUR = '' THEN w_FD_FAC_DETFACLIG.CLI_CODE_PRATICIENINTERNE ELSE w_FD_FAC_DETFACLIG.CLI_CODE_MEDECINREALISATEUR END, + CLI_CODE_CCAM = CASE WHEN w_FD_FAC_DETFACLIG.CLI_CODE_CCAM = '' THEN w_FD_FAC_DETFACLIG.CLI_CODE_PRESTATION ELSE w_FD_FAC_DETFACLIG.CLI_CODE_CCAM END + WHERE w_FD_FAC_DETFACLIG.CLI_CODE_PRATICIENINTERNE <> '' AND + (w_FD_FAC_DETFACLIG.CLI_CODE_MEDECINREALISATEUR = '' OR w_FD_FAC_DETFACLIG.CLI_CODE_CCAM = '') AND + w_FD_FAC_DETFACLIG.CLI_CODE_PRESTATION NOT IN ('ACO', 'ADA', 'ADC', 'ADE', 'ADI', 'ATM', 'DEN'); + + + + -- Insertion actes inclus dans séjour + INSERT INTO w_FD_FAC_DETFACLIG + SELECT + nextval('w_FD_FAC_DETFACLIG_sequence'::regclass) AS oid, + 0::bigint AS FD_ACTES_NGAP_id, + + w_FD_FAC_DETFAC.no_sejour, + w_FD_FAC_DETFAC.sejour_id, + w_FD_FAC_DETFAC.no_facture, + 0::bigint AS rss_id, + 0::bigint AS no_rss, + 0::bigint AS ghs_id, + '1'::text AS inclus_dans_sejour, + + w_FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE, + w_FD_FAC_DETFAC.CLI_DONN_NOOBJETFAC, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET, + w_FD_FAC_DETFAC.CLI_CODE_OBJETFACTURATION, + w_FD_FAC_DETFAC.CLI_CODE_ETAT, + w_FD_FAC_DETFAC.CLI_FLAG_SENS, + w_FD_FAC_DETFAC.CLI_DONN_EXERCOMPTA, + + CLI_CODE_MEDECINREALISATEUR, + CLI_DONN_LETTRECLE AS CLI_CODE_CCAM, + ''::text AS CLI_CODE_PHASE, + ''::text AS CLI_CODE_ACTIVITE, + ''::text AS CLI_DONN_EXTDOC, + ''::text AS CLI_DONN_MODIFICATEUR, + ''::text AS CLI_SEQUENCE1ACTE, + ''::text AS CLI_SEQUENCE2ACTE, + + ''::text AS CLI_CODE_ORDONNATEUR, + CLI_CODE_PRESTATION, + date(CLI_DATE_SAISIE) AS CLI_DATE_DEBPREST, + date(CLI_DATE_SAISIE) AS CLI_DATE_FINPREST, + CLI_DONN_NOMBRE AS CLI_DONN_QTE, + CLI_DONN_COEFF, + w_FD_ACTES_NGAP.taux_1, + w_FD_ACTES_NGAP.prix_unitaire, + round(w_FD_ACTES_NGAP.prix_unitaire * w_FD_ACTES_NGAP.taux_1 * CLI_DONN_NOMBRE * CLI_DONN_COEFF / 100,2) AS CLI_DONN_MONTANTLIG, + 0::numeric AS CLI_CODE_PRATICIEN, + '' AS CLI_CODE_PRATICIENINTERNE, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET + FROM w_FD_ACTES_NGAP + JOIN w_FD_FAC_DETFAC ON w_FD_ACTES_NGAP.no_facture_1 = w_FD_FAC_DETFAC.no_facture + WHERE w_FD_ACTES_NGAP.no_facture_1 <> '' AND + acte_inclus_dans_sejour_1 = '1'; + + + + + + + + INSERT INTO w_FD_FAC_DETFACLIG + SELECT + nextval('w_FD_FAC_DETFACLIG_sequence'::regclass) AS oid, + 0::bigint AS FD_ACTES_NGAP_id, + + w_FD_FAC_DETFAC.no_sejour, + w_FD_FAC_DETFAC.sejour_id, + w_FD_FAC_DETFAC.no_facture, + 0::bigint AS rss_id, + 0::bigint AS no_rss, + 0::bigint AS ghs_id, + '1'::text AS inclus_dans_sejour, + + w_FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE, + w_FD_FAC_DETFAC.CLI_DONN_NOOBJETFAC, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET, + w_FD_FAC_DETFAC.CLI_CODE_OBJETFACTURATION, + w_FD_FAC_DETFAC.CLI_CODE_ETAT, + w_FD_FAC_DETFAC.CLI_FLAG_SENS, + w_FD_FAC_DETFAC.CLI_DONN_EXERCOMPTA, + + CLI_CODE_MEDECINREALISATEUR, + CLI_DONN_LETTRECLE AS CLI_CODE_CCAM, + ''::text AS CLI_CODE_PHASE, + ''::text AS CLI_CODE_ACTIVITE, + ''::text AS CLI_DONN_EXTDOC, + ''::text AS CLI_DONN_MODIFICATEUR, + ''::text AS CLI_SEQUENCE1ACTE, + ''::text AS CLI_SEQUENCE2ACTE, + + ''::text AS CLI_CODE_ORDONNATEUR, + CLI_CODE_PRESTATION, + date(CLI_DATE_SAISIE) AS CLI_DATE_DEBPREST, + date(CLI_DATE_SAISIE) AS CLI_DATE_FINPREST, + CLI_DONN_NOMBRE AS CLI_DONN_QTE, + 1 AS CLI_DONN_COEFF, + w_FD_ACTES_NGAP.taux_2, + w_FD_ACTES_NGAP.prix_unitaire, + round(w_FD_ACTES_NGAP.prix_unitaire * w_FD_ACTES_NGAP.taux_2 * CLI_DONN_NOMBRE * CLI_DONN_COEFF / 100,2) AS CLI_DONN_MONTANTLIG, + 0::numeric AS CLI_CODE_PRATICIEN, + '' AS CLI_CODE_PRATICIENINTERNE, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET + FROM w_FD_ACTES_NGAP + JOIN w_FD_FAC_DETFAC ON w_FD_ACTES_NGAP.no_facture_2 = w_FD_FAC_DETFAC.no_facture + WHERE w_FD_ACTES_NGAP.no_facture_2 <> '' AND + acte_inclus_dans_sejour_2 = '1'; + + INSERT INTO w_FD_FAC_DETFACLIG + SELECT + nextval('w_FD_FAC_DETFACLIG_sequence'::regclass) AS oid, + 0::bigint AS FD_ACTES_NGAP_id, + + w_FD_FAC_DETFAC.no_sejour, + w_FD_FAC_DETFAC.sejour_id, + w_FD_FAC_DETFAC.no_facture, + 0::bigint AS rss_id, + 0::bigint AS no_rss, + 0::bigint AS ghs_id, + '1'::text AS inclus_dans_sejour, + + w_FD_FAC_DETFAC.CLI_DONN_NOABSEPISODE, + w_FD_FAC_DETFAC.CLI_DONN_NOOBJETFAC, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET, + w_FD_FAC_DETFAC.CLI_CODE_OBJETFACTURATION, + w_FD_FAC_DETFAC.CLI_CODE_ETAT, + w_FD_FAC_DETFAC.CLI_FLAG_SENS, + w_FD_FAC_DETFAC.CLI_DONN_EXERCOMPTA, + + CLI_CODE_MEDECINREALISATEUR, + CLI_DONN_LETTRECLE AS CLI_CODE_CCAM, + ''::text AS CLI_CODE_PHASE, + ''::text AS CLI_CODE_ACTIVITE, + ''::text AS CLI_DONN_EXTDOC, + ''::text AS CLI_DONN_MODIFICATEUR, + ''::text AS CLI_SEQUENCE1ACTE, + ''::text AS CLI_SEQUENCE2ACTE, + + ''::text AS CLI_CODE_ORDONNATEUR, + CLI_CODE_PRESTATION, + date(CLI_DATE_SAISIE) AS CLI_DATE_DEBPREST, + date(CLI_DATE_SAISIE) AS CLI_DATE_FINPREST, + CLI_DONN_NOMBRE AS CLI_DONN_QTE, + 1 AS CLI_DONN_COEFF, + w_FD_ACTES_NGAP.taux_0, + w_FD_ACTES_NGAP.prix_unitaire, + round(w_FD_ACTES_NGAP.prix_unitaire * w_FD_ACTES_NGAP.taux_0 * CLI_DONN_NOMBRE * CLI_DONN_COEFF / 100,2) AS CLI_DONN_MONTANTLIG, + 0::numeric AS CLI_CODE_PRATICIEN, + '' AS CLI_CODE_PRATICIENINTERNE, + w_FD_FAC_DETFAC.CLI_CODE_NOINTERNEOBJET + FROM w_FD_ACTES_NGAP + JOIN w_FD_FAC_DETFAC ON w_FD_ACTES_NGAP.no_facture_0 = w_FD_FAC_DETFAC.no_facture + WHERE w_FD_ACTES_NGAP.no_facture_0 <> '' AND + acte_inclus_dans_sejour_0 = '1'; + + + ]]> + + + + + (CLI_DONN_EXERCOMPTA || '1231')::date; + + UPDATE w_factures + SET mois_vente = extract('year' FROM date_vente) * 100 + extract('month' FROM date_vente) + WHERE mois_vente IS DISTINCT FROM extract('year' FROM date_vente) * 100 + extract('month' FROM date_vente); + + UPDATE w_factures SET + montant_facture_1_c = montant_facture_c, + montant_comptabilise_1_c = CASE WHEN est_budget_global <> '1' THEN montant_facture_c ELSE 0 END, + montant_comptabilise_c = CASE WHEN est_budget_global <> '1' THEN montant_facture_c ELSE 0 END, + montant_regle_c = CASE WHEN est_budget_global <> '1' AND CLI_CODE_ETAT IN ('LQ','RG') THEN montant_facture_c ELSE 0 END, + montant_regle_1_c = CASE WHEN est_budget_global <> '1' AND CLI_CODE_ETAT IN ('LQ','RG') THEN montant_facture_c ELSE 0 END, + montant_comptabilise_budget_global_c = CASE WHEN est_budget_global = '1' THEN montant_facture_c ELSE 0 END + WHERE type_tiers_payant = '1'; + + + UPDATE w_factures SET + montant_facture_2_c = montant_facture_c, + montant_comptabilise_2_c = montant_facture_c, + montant_comptabilise_c = montant_facture_c, + montant_regle_c = CASE WHEN CLI_CODE_ETAT IN ('LQ','RG') THEN montant_facture_c ELSE 0 END, + montant_regle_2_c = CASE WHEN CLI_CODE_ETAT IN ('LQ','RG') THEN montant_facture_c ELSE 0 END + WHERE type_tiers_payant = '2'; + + UPDATE w_factures SET + montant_facture_0_c = montant_facture_c, + montant_comptabilise_0_c = montant_facture_c, + montant_comptabilise_c = montant_facture_c, + montant_regle_c = CASE WHEN CLI_CODE_ETAT IN ('LQ','RG') THEN montant_facture_c ELSE 0 END, + montant_regle_0_c = CASE WHEN CLI_CODE_ETAT IN ('LQ','RG') THEN montant_facture_c ELSE 0 END + WHERE type_tiers_payant = '0'; + + + + UPDATE w_factures SET + montant_facture_0_c = montant_facture_c, + montant_comptabilise_0_c = montant_facture_c, + montant_comptabilise_c = montant_facture_c, + montant_regle_c = CASE WHEN CLI_CODE_ETAT IN ('LQ','RG') THEN montant_facture_c ELSE 0 END, + montant_regle_0_c = CASE WHEN CLI_CODE_ETAT IN ('LQ','RG') THEN montant_facture_c ELSE 0 END + WHERE type_tiers_payant = '0'; + + + UPDATE w_factures SET + no_facture_od_avoir = w_factures_od_avoir.no_facture_od_avoir, + type_facture = 'X' + FROM w_factures w_factures_od_avoir + WHERE w_factures_od_avoir.no_facture_od_avoir = w_factures.no_facture AND + w_factures_od_avoir.no_facture_od_avoir <> '' AND + w_factures_od_avoir.type_facture = '1' AND + w_factures.type_facture <> '1'; + + UPDATE w_factures + SET facture_od_avoir_id = w_factures_od_avoir.oid + FROM w_factures w_factures_od_avoir + WHERE w_factures.no_facture_od_avoir = w_factures_od_avoir.no_facture AND + w_factures.no_facture_od_avoir <> ''; + + + UPDATE w_factures SET + date_debut = date_entree, + date_fin = CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid AND + avec_facturation_intermediaire IS DISTINCT FROM '1' + WHERE w_factures.no_sejour = p_sejours.no_sejour AND + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END - date_entree < 30 AND + ( + w_factures.date_debut <> date_entree OR + w_factures.date_fin <> CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + ); + + + DROP TABLE IF EXISTS w_factures_references; + CREATE TEMP TABLE w_factures_references AS + SELECT no_sejour, date_debut, + (MIN(CASE WHEN type_tiers_payant = '1' AND type_facture IN ('0','G','H') THEN Array[date_facture::text,no_facture] ELSE NULL END))[2] AS no_facture_1_0, + (MIN(CASE WHEN type_tiers_payant = '1' AND type_facture = '2' THEN Array[date_facture::text,no_facture] ELSE NULL END))[2] AS no_facture_1_2, + (MIN(CASE WHEN type_tiers_payant = '2' AND type_facture = '0' THEN Array[date_facture::text,no_facture] ELSE NULL END))[2] AS no_facture_2_0, + (MIN(CASE WHEN type_tiers_payant = '2' AND type_facture = '2' THEN Array[date_facture::text,no_facture] ELSE NULL END))[2] AS no_facture_2_2, + (MIN(CASE WHEN type_tiers_payant = '0' AND type_facture = '0' THEN Array[date_facture::text,no_facture] ELSE NULL END))[2] AS no_facture_0_0, + (MIN(CASE WHEN type_tiers_payant = '0' AND type_facture = '2' THEN Array[date_facture::text,no_facture] ELSE NULL END))[2] AS no_facture_0_2, + (MIN(Array[date_facture::text,no_facture]))[2] AS no_facture_x + FROM w_factures + GROUP BY 1,2 + ORDER BY 1,2; + + + CREATE INDEX w_factures_references_i1 + ON w_factures_references + USING btree + (no_sejour); + + CREATE INDEX w_factures_i1 + ON w_factures + USING btree + (no_sejour); + + + UPDATE w_factures + SET no_facture_reference = COALESCE(no_facture_1_0,no_facture_1_2,no_facture_2_0,no_facture_2_2,no_facture_0_0,no_facture_0_2,no_facture_x) + FROM w_factures_references + WHERE w_factures.no_sejour = w_factures_references.no_sejour AND + w_factures.date_debut = w_factures_references.date_debut AND + no_facture_reference IS DISTINCT FROM COALESCE(no_facture_1_0,no_facture_1_2,no_facture_2_0,no_facture_2_2,no_facture_0_0,no_facture_0_2,no_facture_x); + + + UPDATE w_factures + SET type_facture = '2' + FROM w_factures_references + WHERE w_factures.no_sejour = w_factures_references.no_sejour AND + w_factures.date_debut = w_factures_references.date_debut AND + type_facture = '0' AND + type_tiers_payant = '1' AND + no_facture IS DISTINCT FROM no_facture_1_0; + + UPDATE w_factures + SET type_facture = '2' + FROM w_factures_references + WHERE w_factures.no_sejour = w_factures_references.no_sejour AND + w_factures.date_debut = w_factures_references.date_debut AND + type_facture = '0' AND + type_tiers_payant = '2' AND + no_facture IS DISTINCT FROM no_facture_2_0; + + UPDATE w_factures + SET type_facture = '2' + FROM w_factures_references + WHERE w_factures.no_sejour = w_factures_references.no_sejour AND + w_factures.date_debut = w_factures_references.date_debut AND + type_facture = '0' AND + type_tiers_payant = '0' AND + no_facture IS DISTINCT FROM no_facture_0_0; + + + UPDATE w_factures + SET facture_reference_id = w_factures_references.oid + FROM w_factures w_factures_references + WHERE w_factures.no_facture_reference = w_factures_references.no_facture AND + w_factures.facture_reference_id IS DISTINCT FROM w_factures_references.oid; + + + + + UPDATE w_factures SET date_expedition_0 = date_facture WHERE date_expedition_0 < date_facture AND date_facture <> '2099-12-31'; + + UPDATE w_factures + SET + date_solde_0_c = CASE WHEN montant_comptabilise_0_c = 0 THEN '00010101' WHEN montant_comptabilise_0_c = montant_regle_0_c THEN date_solde_0_c ELSE '20991231' END, + date_solde_0_h = CASE WHEN montant_comptabilise_0_h = 0 THEN '00010101' WHEN montant_comptabilise_0_h = montant_regle_0_h THEN date_solde_0_h ELSE '20991231' END, + date_solde_1_c = CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END, + date_solde_1_h = CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '20991231' END, + date_solde_2_c = CASE WHEN montant_comptabilise_2_c = 0 THEN '00010101' WHEN montant_comptabilise_2_c = montant_regle_2_c THEN date_solde_2_c ELSE '20991231' END, + date_solde_2_h = CASE WHEN montant_comptabilise_2_h = 0 THEN '00010101' WHEN montant_comptabilise_2_h = montant_regle_2_h THEN date_solde_2_h ELSE '20991231' END, + date_solde_22_c = CASE WHEN montant_comptabilise_22_c = 0 THEN '00010101' WHEN montant_comptabilise_22_c = montant_regle_22_c THEN date_solde_22_c ELSE '20991231' END, + date_solde_22_h = CASE WHEN montant_comptabilise_22_h = 0 THEN '00010101' WHEN montant_comptabilise_22_h = montant_regle_22_h THEN date_solde_22_h ELSE '20991231' END + WHERE + ( + date_solde_0_c <> CASE WHEN montant_comptabilise_0_c = 0 THEN '00010101' WHEN montant_comptabilise_0_c = montant_regle_0_c THEN date_solde_0_c ELSE '20991231' END OR + date_solde_0_h <> CASE WHEN montant_comptabilise_0_h = 0 THEN '00010101' WHEN montant_comptabilise_0_h = montant_regle_0_h THEN date_solde_0_h ELSE '20991231' END OR + date_solde_1_c <> CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END OR + date_solde_1_h <> CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '20991231' END OR + date_solde_2_c <> CASE WHEN montant_comptabilise_2_c = 0 THEN '00010101' WHEN montant_comptabilise_2_c = montant_regle_2_c THEN date_solde_2_c ELSE '20991231' END OR + date_solde_2_h <> CASE WHEN montant_comptabilise_2_h = 0 THEN '00010101' WHEN montant_comptabilise_2_h = montant_regle_2_h THEN date_solde_2_h ELSE '20991231' END OR + date_solde_22_c <> CASE WHEN montant_comptabilise_22_c = 0 THEN '00010101' WHEN montant_comptabilise_22_c = montant_regle_22_c THEN date_solde_22_c ELSE '20991231' END OR + date_solde_22_h <> CASE WHEN montant_comptabilise_22_h = 0 THEN '00010101' WHEN montant_comptabilise_22_h = montant_regle_22_h THEN date_solde_22_h ELSE '20991231' END + ); + + DROP TABLE IF EXISTS w_factures_soldes; + CREATE TEMP TABLE w_factures_soldes AS + SELECT + no_facture, + GREATEST(date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h) AS date_solde, + GREATEST(date_solde_0_c, date_solde_1_c, date_solde_2_c, date_solde_22_c) AS date_solde_c, + GREATEST(date_solde_0_h, date_solde_1_h, date_solde_2_h, date_solde_22_h) AS date_solde_h + FROM w_factures; + + UPDATE w_factures + SET + date_solde = w_factures_soldes.date_solde, + date_solde_c = w_factures_soldes.date_solde_c, + date_solde_h = w_factures_soldes.date_solde_h + FROM w_factures_soldes + WHERE w_factures.no_facture = w_factures_soldes.no_facture AND + ( + w_factures.date_solde IS NULL OR w_factures.date_solde <> w_factures_soldes.date_solde OR + w_factures.date_solde_c IS NULL OR w_factures.date_solde_c <> w_factures_soldes.date_solde_c OR + w_factures.date_solde_h IS NULL OR w_factures.date_solde_h <> w_factures_soldes.date_solde_h + ); + + + -- Mutuelle comme seul tiers payant + UPDATE w_factures + SET tiers_payant_2_id = tiers_payant_1_id + FROM activite[PX].t_tiers_payant + WHERE tiers_payant_1_id = t_tiers_payant.oid AND t_tiers_payant.type_tiers_payant = '2' AND + montant_facture_2_c <> 0 AND tiers_payant_2_id = 0; + + + + -- Ajout des factures + + SELECT base.cti_disable_index('activite', 'i_factures_3'); + SELECT base.cti_disable_index('activite', 'i_factures_4'); + SELECT base.cti_disable_index('activite', 'i_factures_5'); + SELECT base.cti_disable_index('activite', 'i_factures_6'); + SELECT base.cti_disable_index('activite', 'i_factures_7'); + SELECT base.cti_disable_index('activite', 'i_factures_8'); + SELECT base.cti_disable_index('activite', 'i_factures_9'); + SELECT base.cti_disable_index('activite', 'i_factures_10'); + SELECT base.cti_disable_index('activite', 'i_factures_11'); + SELECT base.cti_disable_index('activite', 'i_factures_12'); + SELECT base.cti_disable_index('activite', 'i_factures_13'); + SELECT base.cti_disable_index('activite', 'i_factures_14'); + + INSERT INTO activite[PX].p_factures ( + oid, + no_sejour, + sejour_id, + no_facture, + date_debut, + date_fin, + type_facture, + code_cp_demandee, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + code_cloture, + nb_rejets, + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + particularite_t2a, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_comptabilise_budget_global_c, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + delai_facture, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h + ) + SELECT + oid, + no_sejour, + sejour_id, + no_facture, + date_debut, + date_fin, + type_facture, + code_cp_demandee, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + code_cloture, + nb_rejets, + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + particularite_t2a, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_comptabilise_budget_global_c, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + delai_facture, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h + FROM w_factures; + + + SELECT base.cti_enable_index('activite', 'i_factures_3'); + SELECT base.cti_enable_index('activite', 'i_factures_4'); + SELECT base.cti_enable_index('activite', 'i_factures_5'); + SELECT base.cti_enable_index('activite', 'i_factures_6'); + SELECT base.cti_enable_index('activite', 'i_factures_7'); + SELECT base.cti_enable_index('activite', 'i_factures_8'); + SELECT base.cti_enable_index('activite', 'i_factures_9'); + SELECT base.cti_enable_index('activite', 'i_factures_10'); + SELECT base.cti_enable_index('activite', 'i_factures_11'); + SELECT base.cti_enable_index('activite', 'i_factures_12'); + SELECT base.cti_enable_index('activite', 'i_factures_13'); + SELECT base.cti_enable_index('activite', 'i_factures_14'); + + + + -- Séjours sans facture + + DROP TABLE IF EXISTS w_factures_trous; + CREATE TEMP TABLE w_factures_trous AS + SELECT + p_sejours.finess, + p_sejours.no_sejour, + p_sejours.date_entree, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.code_cp_demandee, + COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire, + p_sejours.code_sorti, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie, + MAX(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END) AS date_fin_facture, + date(MAX(COALESCE(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours + FROM activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND no_facture NOT LIKE 'E%' + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE p_sejours.etat = '' AND p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND date_entree <= now() AND p_sejours.type_sejour <> '6' AND p_sejours.type_sejour <> '9' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11; + + + -- Séjours sans facture (hors BG) + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee, + date_debut, + date_fin) + SELECT finess, + no_sejour, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee , + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12; + + + + + UPDATE activite[PX].p_sejours + SET est_sans_facturation = '1' + WHERE lieu_sortie_id IN + (SELECT oid FROM activite[PX].t_lieux WHERE + service_facturation_id IN + (SELECT oid FROM activite[PX].t_services_facturation WHERE est_sans_facturation = '1') OR + unite_fonctionnelle_id IN + (SELECT oid FROM activite[PX].t_unites_fonctionnelles WHERE est_sans_facturation = '1') + ); + + -- Séjours avec caisse BG mais facturés hors BG + UPDATE activite[PX].p_sejours + SET est_budget_global = subview.est_budget_global + FROM ( + SELECT no_sejour, + MAX(CASE WHEN montant_comptabilise_budget_global_c <> 0 THEN 1 ELSE 0 END) AS est_budget_global + FROM activite[PX].p_factures + WHERE montant_facture_1_c <> 0 + GROUP BY 1 + ) subview + WHERE p_sejours.no_sejour = subview.no_sejour AND p_sejours.est_budget_global <> subview.est_budget_global; + + + + + -- Initialisation TP2 si pas connu + UPDATE activite[PX].p_factures + SET tiers_payant_2_id = (SELECT oid FROM activite.t_tiers_payant WHERE code_original = 'CTI_AMC') + WHERE (tiers_payant_2_id = 0 OR tiers_payant_2_id IS NULL) AND + montant_facture_2_c <> 0; + + UPDATE activite[PX].p_factures + SET tiers_payant_2_id = 0 + WHERE tiers_payant_2_id IS NULL; + + UPDATE activite[PX].p_factures + SET tiers_payant_1_id = (SELECT oid FROM activite.t_tiers_payant WHERE code_original = 'CTI_AMC') + WHERE (tiers_payant_1_id = 0 OR tiers_payant_1_id IS NULL) AND + montant_facture_1_c <> 0; + + UPDATE activite[PX].p_factures + SET tiers_payant_1_id = 0 + WHERE tiers_payant_1_id IS NULL; + + UPDATE activite[PX].p_sejours + SET tiers_payant_2_id = subview.tiers_payant_2_id + FROM + ( + SELECT no_sejour, (MAX(Array[date_facture::text, tiers_payant_2_id::text]))[2]::bigint AS tiers_payant_2_id + FROM activite[PX].p_factures + WHERE tiers_payant_2_id <> 0 + GROUP BY 1 + ) subview + WHERE p_sejours.no_sejour = subview.no_sejour AND + (p_sejours.tiers_payant_2_id = 0 OR p_sejours.tiers_payant_2_id IS NULL) + ; + + + + ]]> + + + + + + + + + + + + = 7 THEN 'CCAM' ELSE 'NGAP' END, + (SELECt oid FROM base.t_ccam_regroupements WHERE code = 'NGAP'), + (SELECt oid FROM base.t_ccam_regroupements WHERE code = 'NGAP') + FROM w_FD_FAC_DETFACLIG + LEFT JOIN base.t_actes ON substring(CLI_CODE_CCAM, 1, 7) = t_actes.code + WHERE t_actes.code IS NULL AND CLI_CODE_CCAM <> '' + GROUP BY 1,2,3,4,5,6; + + + DROP SEQUENCE IF EXISTS w_factures_lignes_c_sequence; + CREATE TEMP SEQUENCE w_factures_lignes_c_sequence; + + -- facturé + + DROP TABLE IF EXISTS temp.w_factures_lignes_c; + CREATE TABLE temp.w_factures_lignes_c AS + SELECT + w_factures.no_sejour, + w_factures.no_facture, + w_factures.type_facture, + w_factures.oid AS facture_id, + w_factures.est_budget_global, + w_factures.est_pmsi, + + w_FD_FAC_DETFACLIG.CLI_CODE_ETAT, + w_FD_FAC_DETFACLIG.CLI_FLAG_SENS, + w_factures.type_tiers_payant, + w_FD_FAC_DETFACLIG.CLI_DATE_DEBPREST AS date_debut, + w_FD_FAC_DETFACLIG.CLI_DATE_FINPREST AS date_fin, + w_factures.lieu_sortie_id AS lieu_id, + CASE WHEN inclus_dans_sejour <> '1' THEN 1::bigint ELSE 3::bigint END AS origine_facturation_id, + COALESCE(t_compte.oid,0) AS compte_produit_id, + t_rubriques_facturation.oid AS rubrique_facturation_id, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + + COALESCE(t_medecins_administratifs.oid,0) AS medecin_facture_id, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_comptabilise_id, + COALESCE(t_actes.oid,0) AS acte_id, + CLI_CODE_PHASE AS phase_ccam, + CLI_CODE_ACTIVITE AS activite_ccam, + CLI_DONN_EXTDOC AS extension_ccam, + SUBSTR(CLI_DONN_MODIFICATEUR,1,1) AS modificateur_ccam_1, + SUBSTR(CLI_DONN_MODIFICATEUR,2,1) AS modificateur_ccam_2, + SUBSTR(CLI_DONN_MODIFICATEUR,3,1) AS modificateur_ccam_3, + SUBSTR(CLI_DONN_MODIFICATEUR,4,1) AS modificateur_ccam_4, + + CLI_DONN_QTE AS nb_rubrique, + CLI_DONN_QTE AS nb_prestation, + CLI_DONN_COEFF AS coefficient, + 1::numeric AS coefficient_mco, + CLI_DONN_TU AS prix_unitaire, + nextval('w_factures_lignes_c_sequence'::regclass) AS oid, + CASE WHEN type_tiers_payant = '0' THEN CLI_DONN_TAUX ELSE 0 END AS taux_0, + CASE WHEN type_tiers_payant = '1' THEN CLI_DONN_TAUX ELSE 0 END AS taux_1, + CASE WHEN type_tiers_payant = '2' THEN CLI_DONN_TAUX ELSE 0 END AS taux_2, + 0::numeric AS taux_22, + CASE WHEN inclus_dans_sejour <> '1' THEN CLI_DONN_MONTANTLIG ELSE 0 END AS montant_facture, + 0::numeric AS montant_facture_0, + 0::numeric AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + CASE WHEN inclus_dans_sejour = '1' THEN CLI_DONN_MONTANTLIG ELSE 0 END AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_1, + 0::numeric AS rubrique_facture_id + FROM w_FD_FAC_DETFACLIG + JOIN w_factures ON w_FD_FAC_DETFACLIG.CLI_DONN_NOABSEPISODE = w_factures.CLI_DONN_NOABSEPISODE AND + w_FD_FAC_DETFACLIG.CLI_Donn_NoObjIntFac = w_factures.CLI_Code_NoInterneObjet AND + w_FD_FAC_DETFACLIG.CLI_DONN_EXERCOMPTA = w_factures.CLI_DONN_EXERCOMPTA + JOIN activite[PX].t_rubriques_facturation ON CLI_CODE_PRESTATION = t_rubriques_facturation.code_original + JOIN activite.t_prestations ON CLI_CODE_PRESTATION = t_prestations.code + LEFT JOIN activite[PX].t_compte ON CLI_CODE_ORDONNATEUR = t_compte.code + LEFT JOIN activite[PX].t_medecins_administratifs ON CLI_CODE_MEDECINREALISATEUR = t_medecins_administratifs.code_original + LEFT JOIN base.t_actes ON substring(CLI_CODE_CCAM, 1, 7) = t_actes.code + ; + + UPDATE temp.w_factures_lignes_c SET + montant_facture_1 = montant_facture, + montant_comptabilise = CASE WHEN est_budget_global <> '1' THEN montant_facture ELSE 0 END, + montant_comptabilise_1 = CASE WHEN est_budget_global <> '1' THEN montant_facture ELSE 0 END, + montant_comptabilise_budget_global_1 = CASE WHEN est_budget_global = '1' THEN montant_facture ELSE 0 END, + montant_facture_1_actes_inclus_dans_sejour = montant_facture_actes_inclus_dans_sejour + WHERE type_tiers_payant = '1'; + + + UPDATE temp.w_factures_lignes_c SET + montant_facture_2 = montant_facture, + montant_comptabilise = montant_facture, + montant_comptabilise_2 = montant_facture, + montant_facture_2_actes_inclus_dans_sejour = montant_facture_actes_inclus_dans_sejour + WHERE type_tiers_payant = '2'; + + UPDATE temp.w_factures_lignes_c SET + montant_facture_0 = montant_facture, + montant_comptabilise = montant_facture, + montant_comptabilise_0 = montant_facture, + montant_facture_0_actes_inclus_dans_sejour = montant_facture_actes_inclus_dans_sejour + WHERE type_tiers_payant = '0'; + + + ALTER TABLE temp.w_factures_lignes_c + ADD CONSTRAINT w_factures_lignes_c_pk PRIMARY KEY(oid); + + CREATE INDEX w_factures_lignes_c_i1 + ON temp.w_factures_lignes_c + USING btree + (no_sejour); + + + -- Nombre = coefficient pour rubriques à ventiler + UPDATE temp.w_factures_lignes_c + SET nb_rubrique = nb_rubrique * coefficient, nb_prestation = nb_prestation * coefficient, coefficient = 1 + FROM activite.t_prestations + WHERE coefficient > 1 AND + prestation_id = t_prestations.oid AND + (t_prestations.code IN ('CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1') + ; + + -- dates = periode facture si date debut = date fin et nombre > 1 + UPDATE temp.w_factures_lignes_c + SET date_debut = p_factures.date_debut, date_fin = p_factures.date_fin + FROM activite.t_prestations, activite[PX].p_factures + WHERE ABS(nb_rubrique) > 1 AND + p_factures.no_facture = w_factures_lignes_c.no_facture AND + prestation_id = t_prestations.oid AND + (t_prestations.code IN ('CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1'); + + + -- Eclatement des supplements par jour + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + w_factures_lignes_c.oid AS from_oid, + t_prestations.code AS prestation_code, + date(p_sejours.date_entree) AS date_debut_ghs, + date(p_sejours.date_sortie - interval '1 day') AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + NULL::date[] AS dates_prestation_ghs, + w_factures_lignes_c.* + FROM temp.w_factures_lignes_c + JOIN activite[PX].p_sejours ON w_factures_lignes_c.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + ( + code IN ('PJ', 'FJ', 'TM', 'PHJ','SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (t_prestations.code = 'GHS' AND date(date_fin) - date(date_debut) > 1)) ; + + + -- Nombre de jours GHS + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = COALESCE(date(date_debut_exh - interval '1 day'), subview.date_fin_ghs), + nb_prestation_ghs = COALESCE(date(date_debut_exh - interval '1 day'), subview.date_fin_ghs) - date_debut_ghs + 1 + FROM ( + SELECT no_facture, + date(MAX(CASE WHEN code = 'GHS' THEN date_fin ELSE NULL END)) AS date_fin_ghs, + date(MIN(CASE WHEN code = 'EXH' THEN date_debut ELSE NULL END)) AS date_debut_exh + FROM temp.w_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code IN ('GHS', 'EXH') + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture; + + + + + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_gen; + CREATE TEMP TABLE w_factures_lignes_sup_c_gen AS + SELECT + from_oid, + no_sejour, + no_facture, + type_facture, + facture_id, + est_budget_global, + est_pmsi, + CLI_CODE_ETAT, + CLI_FLAG_SENS, + type_tiers_payant, + date AS date_debut, + date AS date_fin, + lieu_id, + origine_facturation_id, + compte_produit_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + medecin_facture_id, + medecin_comptabilise_id, + acte_id, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + prix_unitaire, + oid, + taux_0, + taux_1, + taux_2, + taux_22, + round(montant_facture / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_facture, + round(montant_facture_0 / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_facture_0, + round(montant_facture_1 / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_facture_1, + round(montant_facture_2 / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_facture_2, + round(montant_facture_22 / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_facture_22, + round(montant_comptabilise / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + round(montant_comptabilise_budget_global_1 / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON date_debut BETWEEN p_calendrier.date - ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END)::integer + 1 AND p_calendrier.date AND + p_calendrier.date <> date_debut ; + + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_gen_tot; + CREATE TEMP TABLE w_factures_lignes_sup_c_gen_tot AS + SELECT from_oid, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_gen + GROUP BY 1; + + + + UPDATE temp.w_factures_lignes_c + SET + date_fin = w_factures_lignes_c.date_debut, + nb_rubrique = w_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_gen_tot.nb_rubrique, + nb_prestation = w_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_gen_tot.nb_prestation, + montant_facture = w_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_gen_tot.montant_facture, + montant_facture_0 = w_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_gen_tot.montant_facture_0, + montant_facture_1 = w_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_gen_tot.montant_facture_1, + montant_facture_2 = w_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_gen_tot.montant_facture_2, + montant_facture_22 = w_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_gen_tot.montant_facture_22, + montant_comptabilise = w_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_gen_tot.montant_comptabilise, + montant_comptabilise_0 = w_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_gen_tot.montant_comptabilise_0, + montant_comptabilise_1 = w_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_gen_tot.montant_comptabilise_1, + montant_comptabilise_2 = w_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_gen_tot.montant_comptabilise_2, + montant_comptabilise_22 = w_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_gen_tot.montant_comptabilise_22, + montant_comptabilise_budget_global_1 = w_factures_lignes_c.montant_comptabilise_budget_global_1 - w_factures_lignes_sup_c_gen_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_gen_tot + WHERE w_factures_lignes_c.oid = from_oid; + + + INSERT INTO temp.w_factures_lignes_c + SELECT + no_sejour, + no_facture, + type_facture, + facture_id, + est_budget_global, + est_pmsi, + CLI_CODE_ETAT, + CLI_FLAG_SENS, + type_tiers_payant, + date_debut, + date_fin, + lieu_id, + origine_facturation_id, + compte_produit_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + medecin_facture_id, + medecin_comptabilise_id, + acte_id, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + prix_unitaire, + nextval('w_factures_lignes_c_sequence'::regclass) AS oid, + taux_0, + taux_1, + taux_2, + taux_22, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1, + 0::numeric AS rubrique_facture_id + FROM w_factures_lignes_sup_c_gen; + + + -- Lieux d'exécution + + + UPDATE temp.w_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE w_factures_lignes_c.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_lignes_c.date_debut = p_mouvements_sejour.date AND + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_sorties_directes = 1) AND + w_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + + + + -- Le code TM est basculé en BG ou HBG pour Coste Floret pour régimeeprincipal + + INSERT INTO activite[PX].t_rubriques_facturation(code, code_original, texte, texte_court) + SELECT 'BG', 'CTI_BG', 'Séjour Budget Global', 'Séjour Budget Global' + FROM activite.t_divers + WHERE t_divers.code = 'CLINICOMBG' AND t_divers.valeur ='1' AND + 'CTI_BG' NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation); + + + INSERT INTO activite[PX].t_rubriques_facturation(code, code_original, texte, texte_court) + SELECT 'HBG', 'CTI_HBG', 'Séjour Hors Budget Global', 'Séjour Hors Budget Global' + FROM activite.t_divers + WHERE t_divers.code = 'CLINICOMBG' AND t_divers.valeur ='1' AND + 'CTI_HBG' NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation); + + + + + + UPDATE temp.w_factures_lignes_c + SET rubrique_facturation_id = t_rubriques_facturation_bg.oid, rubrique_comptabilisation_id = t_rubriques_facturation_bg.oid + FROM activite[PX].t_rubriques_facturation + JOIN activite[PX].t_rubriques_facturation t_rubriques_facturation_bg ON t_rubriques_facturation_bg.code_original = 'CTI_BG' + JOIN activite.t_divers ON t_divers.code = 'CLINICOMBG' AND t_divers.valeur ='1' + WHERE w_factures_lignes_c.rubrique_facturation_id = t_rubriques_facturation.oid AND + t_rubriques_facturation.code = 'TM' AND + montant_comptabilise_budget_global_1 <> 0; + + + + UPDATE temp.w_factures_lignes_c + SET rubrique_facturation_id = t_rubriques_facturation_bg.oid, rubrique_comptabilisation_id = t_rubriques_facturation_bg.oid + FROM activite[PX].t_rubriques_facturation + JOIN activite[PX].t_rubriques_facturation t_rubriques_facturation_bg ON t_rubriques_facturation_bg.code_original = 'CTI_HBG' + JOIN activite.t_divers ON t_divers.code = 'CLINICOMBG' AND t_divers.valeur ='1' + WHERE w_factures_lignes_c.rubrique_facturation_id = t_rubriques_facturation.oid AND + t_rubriques_facturation.code = 'TM' AND + montant_comptabilise_budget_global_1 = 0 AND + taux_1 > 50; + + + UPDATE temp.w_factures_lignes_c + SET rubrique_facturation_id = t_rubriques_facturation_bg.oid, rubrique_comptabilisation_id = t_rubriques_facturation_bg.oid + FROM activite[PX].t_rubriques_facturation + JOIN activite[PX].t_rubriques_facturation t_rubriques_facturation_bg ON t_rubriques_facturation_bg.code_original = 'CTI_HBG' + JOIN activite.t_divers ON t_divers.code = 'CLINICOMBG' AND t_divers.valeur ='1' + WHERE w_factures_lignes_c.rubrique_facturation_id = t_rubriques_facturation.oid AND + t_rubriques_facturation.code = 'TM' AND + montant_comptabilise_budget_global_1 = 0 AND + taux_2 > 50; + + + UPDATE temp.w_factures_lignes_c + SET rubrique_facturation_id = t_rubriques_facturation_bg.oid, rubrique_comptabilisation_id = t_rubriques_facturation_bg.oid + FROM activite[PX].t_rubriques_facturation + JOIN activite[PX].t_rubriques_facturation t_rubriques_facturation_bg ON t_rubriques_facturation_bg.code_original = 'CTI_HBG' + JOIN activite.t_divers ON t_divers.code = 'CLINICOMBG' AND t_divers.valeur ='1' + WHERE w_factures_lignes_c.rubrique_facturation_id = t_rubriques_facturation.oid AND + t_rubriques_facturation.code = 'TM' AND + montant_comptabilise_budget_global_1 = 0 AND + taux_0 > 50; + + + -- Les nombres TM sont supprimés sur la mutuellee et le patient (sauf coste floret) + + SELECT base.cti_execute( + 'UPDATE temp.w_factures_lignes_c + SET nb_prestation = 0, nb_rubrique = 0 + FROM + ( + SELECT + p_factures.no_sejour, + w_factures_lignes_c.date_debut, + MAX(CASE WHEN taux_2 > 0 THEN w_factures_lignes_c.no_facture ELSE NULL END) AS no_facture, + MAX(prestation_id) AS prestation_id + FROM + temp.w_factures_lignes_c + JOIN activite[PX].p_factures ON w_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND t_prestations.code = ''TM'' + LEFT JOIN activite.t_divers ON t_divers.code = ''CLINICOMBG'' AND t_divers.valeur = ''1'' + WHERE w_factures_lignes_c.date_debut = w_factures_lignes_c.date_fin AND nb_prestation <> 0 AND + t_divers.code IS NULL + GROUP BY 1,2 + HAVING count(*) > 1 AND MAX(taux_1) > 0 AND max(taux_2) > 0 + ) subview + WHERE w_factures_lignes_c.no_facture = subview.no_facture AND + w_factures_lignes_c.date_debut = subview.date_debut AND + w_factures_lignes_c.prestation_id = subview.prestation_id',50); + + + + SELECT base.cti_execute( + 'UPDATE temp.w_factures_lignes_c + SET nb_prestation = 0, nb_rubrique = 0 + FROM + ( + SELECT + p_factures.no_sejour, + w_factures_lignes_c.date_debut, + MAX(CASE WHEN taux_0 > 0 THEN w_factures_lignes_c.no_facture ELSE NULL END) AS no_facture, + MAX(prestation_id) AS prestation_id + FROM + temp.w_factures_lignes_c + JOIN activite[PX].p_factures ON w_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND t_prestations.code = ''TM'' + LEFT JOIN activite.t_divers ON t_divers.code = ''CLINICOMBG'' AND t_divers.valeur = ''1'' + WHERE w_factures_lignes_c.date_debut = w_factures_lignes_c.date_fin AND nb_prestation <> 0 AND + t_divers.code IS NULL + GROUP BY 1,2 + HAVING count(*) > 1 AND MAX(taux_1) > 0 AND max(taux_0) > 0 + ) subview + WHERE w_factures_lignes_c.no_facture = subview.no_facture AND + w_factures_lignes_c.date_debut = subview.date_debut AND + w_factures_lignes_c.prestation_id = subview.prestation_id',50); + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('temp.w_factures_lignes_c'); + + -- Génération + + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_1'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_2'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_3'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_4'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_5'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_6'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_7'); + SELECT base.cti_disable_index('activite', 'i_factures_lignes_c_8'); + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + facture_id, + date_debut, + date_fin, + lieu_id, + origine_facturation_id, + rubrique_facture_id, + compte_produit_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 + ) + SELECT + no_facture, + facture_id, + date_debut, + date_fin, + lieu_id, + origine_facturation_id, + rubrique_facture_id, + compte_produit_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 + FROM temp.w_factures_lignes_c; + + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_c_8'); + + + + + -- Facturee encours BG (sauf si TM AMC ou Patient + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee, + date_debut, + date_fin) + SELECT finess, + no_sejour, + 'E' || no_sejour || '-BG', + 'E' || no_sejour || '-BG', + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee , + p_sejours.date_entree, + CASE WHEN code_sorti = '1' THEN p_sejours.date_sortie ELSE date(now()) END + FROM activite.p_sejours + WHERE est_budget_global = '1' AND + date_sortie >= '20150101' AND + type_sejour IN ('1', '2', '5') AND + no_sejour NOT IN ( + SELECT no_sejour + FROM activite.p_factures + WHERE no_facture LIKE '%BG' + ) AND + no_sejour NOT IN ( + SELECT no_sejour + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_prestations ON p_factures_lignes_c.prestation_id = t_prestations.oid + WHERE t_prestations.code = 'TM' AND + (taux_1 >= 70 OR taux_2 >= 70 OR taux_0 >= 70) + GROUP BY 1 + HAVING SUM(p_factures_lignes_c.montant_facture) > 0 + ) + ; + + + + ]]> + + + + + + 0 AND + p_factures.code_vente = '1' + GROUP BY 1,2,3,4,5,6; + + SELECT base.cti_disable_index('activite', 'i_factures_soldes_c_1'); + SELECT base.cti_disable_index('activite', 'i_factures_soldes_c_2'); + SELECT base.cti_disable_index('activite', 'i_factures_soldes_c_3'); + SELECT base.cti_disable_index('activite', 'i_factures_soldes_c_4'); + SELECT base.cti_disable_index('activite', 'i_factures_soldes_c_8'); + + INSERT INTO activite[PX].p_factures_soldes_c ( + no_facture, + facture_id, + date_comptable, + od_avoir, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + no_facture, + facture_id, + date_comptable, + od_avoir, + rubrique_comptabilisee_id, + prestation_id, + SUM(montant_comptabilise), + SUM(montant_comptabilise_0), + SUM(montant_comptabilise_1), + SUM(montant_comptabilise_2), + SUM(montant_comptabilise_22), + SUM(montant_regle), + SUM(montant_regle_0), + SUM(montant_regle_1), + SUM(montant_regle_2), + SUM(montant_regle_22) + FROM w_factures_soldes_c + GROUP BY 1,2,3,4,5,6; + + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_1'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite', 'i_factures_soldes_c_8'); + + + ]]> + + + + + + + + 0 OR montant_facture_actes_inclus_dans_sejour <> 0; + + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_1'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_2'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_3'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_4'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_5'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_6'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_7'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_8'); + SELECT base.cti_enable_index('activite', 'i_factures_lignes_h_9'); + + + UPDATE activite[PX].p_factures_lignes_h + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_factures, activite[PX].p_mouvements_sejour + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + activite[PX].p_factures_lignes_h.date_debut = p_mouvements_sejour.date AND + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_sorties_directes = 1) AND + p_factures_lignes_h.lieu_id <> p_mouvements_sejour.lieu_id; + + + ]]> + + + + + + + + + + + + + + + + = '20090101'; + + + INSERT INTO w_chiffrier + SELECT + date(DADM_DATEFIN) AS date, + DADM_NDA AS no_sejour, + 0::numeric AS nb_entrees_directes, + 1::numeric AS nb_sorties_directes + FROM prod_csis.SID_DOSSIERADMINISTRATIF_DADM + JOIN prod_csis.SNO_STATUTDOSSIER_STDO ON DADM_ID_STDO = STDO_ID AND STDO_NATUREENTREE = 'R' + WHERE DADM_ID_STDO NOT IN (1,2) AND + DADM_ID_ETDO NOT IN (4,6) AND + DADM_DATEFIN IS NOT NULL AND + date(DADM_DATEFIN) >= '20090101' AND + STDO_CODE IN ('S', 'C') ; + + INSERT INTO activite[PX].p_chiffrier_occupation ( + date, + no_sejour, + nb_entrees_directes, + nb_sorties_directes) + SELECT + date, + no_sejour, + SUM(nb_entrees_directes), + SUM(nb_sorties_directes) + FROM w_chiffrier + GROUP BY 1,2; + + + ]]> + + + + + + 'P' AND CLI_CODE_OBJETFACTURATION <> 'I' AND CLI_DONN_EXERCOMPTA >= [ENV_ADM_ANNEEDEBUT] + GROUP BY 1,2; + + + TRUNCATE activite[PX].p_chiffrier_comptable; + INSERT INTO activite[PX].p_chiffrier_comptable( + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_ventes_h, + montant_reglements_h + ) + SELECT + CASE + WHEN date(CLI_DATE_OBJETFAC) < (CLI_DONN_EXERCOMPTA || '0101')::date THEN (CLI_DONN_EXERCOMPTA || '0101')::date + WHEN date(CLI_DATE_OBJETFAC) < (CLI_DONN_EXERCOMPTA || '0101')::date THEN (CLI_DONN_EXERCOMPTA || '0101')::date + ELSE date(CLI_DATE_OBJETFAC) END AS date_comptable, + SUM(CASE WHEN CLI_FLAG_SENS = 1 THEN FD_FAC_DETFAC.CLI_DONN_MONTANT ELSE 0 - FD_FAC_DETFAC.CLI_DONN_MONTANT END) AS montant_ventes_c, + 0::numeric AS montant_reglements_c, + 0::numeric AS montant_ventes_h, + 0::numeric AS montant_reglements_h + FROM prod_clinicom.FD_FAC_DETFAC JOIN w_ADMISSIONS_select ON FD_FAC_DETFAC.cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + WHERE CLI_CODE_OBJETFACTURATION <> 'P' AND CLI_CODE_OBJETFACTURATION <> 'I' AND CLI_DONN_NOABSEPISODE <> '' AND CLI_DONN_EXERCOMPTA >= [ENV_ADM_ANNEEDEBUT] + GROUP BY 1; + + + ]]> + + + + + + + + + + + + 2 THEN '_2' ELSE '' END AS CLI_CODE_ORGANISME_2, + MAX(CASE WHEN FB_FAC_DEBITEURS.CLI_CODE_BUDGETGLOBAL = 1 THEN 1 ELSE 0 END) AS est_budget_global, + MIN(CASE WHEN FD_FAC_DEBITEURS.CLI_CODE_TYPEDEBITEUR IN (1) THEN '1' ELSE NULL END) AS type_tiers_payant_1, + MAX(CASE WHEN FD_FAC_DEBITEURS.CLI_CODE_TYPEDEBITEUR IN (1) THEN NULL ELSE '2' END) AS type_tiers_payant_2, + 0::bigint AS tiers_payant_1_id, + 0::bigint AS tiers_payant_2_id + FROM prod_clinicom.FB_FAC_DEBITEURS + JOIN prod_clinicom.FD_FAC_DEBITEURS ON FB_FAC_DEBITEURS.CLI_CODE_ORGANISME = FD_FAC_DEBITEURS.CLI_CODE_ORGANISME + JOIN w_ADMISSIONS_select ON FD_FAC_DEBITEURS.cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + GROUP BY 1,2 + ORDER BY 1; + + INSERT INTO w_FB_FAC_DEBITEURS + SELECT FD_FAC_DEBITEURS.CLI_CODE_ORGANISME, + FD_FAC_DEBITEURS.CLI_CODE_ORGANISME, + FD_FAC_DEBITEURS.CLI_CODE_ORGANISME || CASE WHEN COUNT(DISTINCT FD_FAC_DEBITEURS.CLI_CODE_TYPEDEBITEUR) > 2 THEN '_2' ELSE '' END AS CLI_CODE_ORGANISME_2, + 0 AS est_budget_global, + MIN(CASE WHEN FD_FAC_DEBITEURS.CLI_CODE_TYPEDEBITEUR IN (1) THEN '1' ELSE NULL END) AS type_tiers_payant_1, + MAX(CASE WHEN FD_FAC_DEBITEURS.CLI_CODE_TYPEDEBITEUR IN (1) THEN NULL ELSE '2' END) AS type_tiers_payant_2, + 0::bigint AS tiers_payant_1_id, + 0::bigint AS tiers_payant_2_id + FROM prod_clinicom.FD_FAC_DEBITEURS + JOIN w_ADMISSIONS_select ON FD_FAC_DEBITEURS.cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + LEFT JOIN prod_clinicom.FB_FAC_DEBITEURS ON FB_FAC_DEBITEURS.CLI_CODE_ORGANISME = FD_FAC_DEBITEURS.CLI_CODE_ORGANISME + WHERE FD_FAC_DEBITEURS.CLI_CODE_ORGANISME <> '' AND FB_FAC_DEBITEURS.CLI_CODE_ORGANISME IS NULL + GROUP BY 1,2 + ORDER BY 1; + + INSERT INTO w_FB_FAC_DEBITEURS + SELECT FD_FAC_DETFAC.CLI_CODE_ORGANISME, + FD_FAC_DETFAC.CLI_CODE_ORGANISME, + FD_FAC_DETFAC.CLI_CODE_ORGANISME || CASE WHEN COUNT(DISTINCT FD_FAC_DETFAC.CLI_CODE_TYPEDEBITEUR) > 2 THEN '_2' ELSE '' END AS CLI_CODE_ORGANISME_2, + 0 AS est_budget_global, + MIN(CASE WHEN FD_FAC_DETFAC.CLI_CODE_TYPEDEBITEUR IN (1) THEN '1' ELSE NULL END) AS type_tiers_payant_1, + MAX(CASE WHEN FD_FAC_DETFAC.CLI_CODE_TYPEDEBITEUR IN (1) THEN NULL ELSE '2' END) AS type_tiers_payant_2, + 0::bigint AS tiers_payant_1_id, + 0::bigint AS tiers_payant_2_id + FROM prod_clinicom.FD_FAC_DETFAC + JOIN w_ADMISSIONS_select ON FD_FAC_DETFAC.cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + LEFT JOIN w_FB_FAC_DEBITEURS ON FD_FAC_DETFAC.CLI_CODE_ORGANISME = w_FB_FAC_DEBITEURS.CLI_CODE_ORGANISME + WHERE FD_FAC_DETFAC.CLI_CODE_ORGANISME <> '' AND w_FB_FAC_DEBITEURS.CLI_CODE_ORGANISME IS NULL + GROUP BY 1,2 + ORDER BY 1; + + ALTER TABLE w_FB_FAC_DEBITEURS ADD CONSTRAINT w_FB_FAC_DEBITEURS_pkey PRIMARY KEY(CLI_CODE_ORGANISME); + + INSERT INTO activite[PX].t_tiers_payant(code, code_original, texte, texte_court, type_tiers_payant) + SELECT CLI_CODE_ORGANISME, + CLI_CODE_ORGANISME, + CLI_DONN_DESIGNATIONDEBITEUR, + CLI_DONN_DESIGNATIONDEBITEUR, + type_tiers_payant_1 + FROM w_FB_FAC_DEBITEURS + WHERE type_tiers_payant_1 IS NOT NULL AND + CLI_CODE_ORGANISME NOT IN (SELECT code_original FROM activite[PX].t_tiers_payant) + ORDER BY 1; + + INSERT INTO activite[PX].t_tiers_payant(code, code_original, texte, texte_court, type_tiers_payant) + SELECT CLI_CODE_ORGANISME_2, + CLI_CODE_ORGANISME_2, + CLI_DONN_DESIGNATIONDEBITEUR, + CLI_DONN_DESIGNATIONDEBITEUR, + type_tiers_payant_2 + FROM w_FB_FAC_DEBITEURS + WHERE type_tiers_payant_2 IS NOT NULL AND + CLI_CODE_ORGANISME_2 NOT IN (SELECT code_original FROM activite[PX].t_tiers_payant) + ORDER BY 1; + + UPDATE w_FB_FAC_DEBITEURS + SET tiers_payant_1_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE type_tiers_payant_1 IS NOT NULL AND + CLI_CODE_ORGANISME = code_original; + + UPDATE w_FB_FAC_DEBITEURS + SET tiers_payant_2_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE type_tiers_payant_2 IS NOT NULL AND + CLI_CODE_ORGANISME_2 = code_original; + + UPDATE w_FB_FAC_DEBITEURS + SET tiers_payant_1_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE type_tiers_payant_2 IS NOT NULL AND + tiers_payant_1_id = 0 AND + CLI_CODE_ORGANISME_2 = code_original; + + + + + ]]> + + + + w_medecins.CLI_CODE_ADELI + ); + + UPDATE base.t_medecins SET specialite_id = subview.specialite_id FROM + (SELECT t_medecins.oid, MIN(t_medecins_administratifs.specialite_id) as specialite_id + FROM base.t_medecins, activite[PX].t_medecins_administratifs , base.t_specialites_medecin + WHERE t_medecins.oid = t_medecins_administratifs.medecin_id + AND t_medecins_administratifs.specialite_id = t_specialites_medecin.oid + GROUP BY t_medecins.oid) subview + WHERE t_medecins.oid = subview.oid AND t_medecins.oid <> 0 AND t_medecins.specialite_id = 0; + + ]]> + + + + '' + GROUP BY 1,2,3) subview + GROUP BY 1 + ) subview ON w_MVTS_UF_2.CLI_CODE_SERVICE = subview.CLI_CODE_SERVICE + WHERE w_MVTS_UF.CLI_CODE_SERVICE = w_MVTS_UF_2.CLI_CODE_SERVICE AND w_MVTS_UF.CLI_CODE_ACTIVITE = ''; + + + UPDATE w_MVTS_UF SET + CLI_CODE_DMT = CODE_default, + dmt_id = oid_default + FROM w_MVTS_UF w_MVTS_UF_2 + JOIN ( + SELECT + CLI_CODE_SERVICE, + (MAX(array[to_char(CODE_count,'FM00000'),CODE]))[2] AS CODE_default, + (MAX(array[CODE_count,oid]))[2] AS oid_default + FROM ( + SELECT + CLI_CODE_SERVICE, + CLI_CODE_DMT AS CODE, + dmt_id AS oid, + COUNT(*) AS CODE_count + FROM w_MVTS_UF + WHERE CLI_CODE_DMT <> '' + GROUP BY 1,2,3) subview + GROUP BY 1 + ) subview ON w_MVTS_UF_2.CLI_CODE_SERVICE = subview.CLI_CODE_SERVICE + WHERE w_MVTS_UF.CLI_CODE_SERVICE = w_MVTS_UF_2.CLI_CODE_SERVICE AND w_MVTS_UF.CLI_CODE_DMT = ''; + + + ALTER TABLE w_MVTS_UF ADD CONSTRAINT w_MVTS_UF_pkey PRIMARY KEY(CLI_CODE_UF); + + + -- Modes de traitement + + + INSERT INTO base.t_modes_traitement(code, texte, texte_court) + SELECT CLI_CODE_ACTIVITE, CLI_DONN_DESCRIPTION, CLI_DONN_DESCRIPTION + FROM prod_clinicom.FS_MVTS_ACTIVITE + WHERE CLI_CODE_ACTIVITE NOT IN (SELECT code FROM base.t_modes_traitement) AND + CLI_CODE_ACTIVITE IN (SELECt CLI_CODE_ACTIVITE FROM w_MVTS_UF) + ORDER BY CLI_CODE_ACTIVITE; + + -- DMT + + INSERT INTO base.t_modes_traitement(code, texte, texte_court) + SELECT CLI_CODE_DMT, CLI_DONN_DESCRIPTION, CLI_DONN_DESCRIPTION + FROM prod_clinicom.FS_MVTS_DMT + WHERE CLI_CODE_DMT NOT IN (SELECT code FROM base.t_dmt) AND + CLI_CODE_DMT IN (SELECt CLI_CODE_DMT FROM w_MVTS_UF) + ORDER BY CLI_CODE_DMT; + + -- Services + + INSERT INTO activite[PX].t_services_facturation(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '****', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_services_facturation); + + + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, type_t2a) + SELECT + CLI_CODE_UF, + CLI_CODE_UF, + CLI_DONN_DESCRIPTION, + CLI_DONN_DESCRIPTION, + '0' + FROM w_MVTS_UF + WHERE CLI_CODE_UF NOT IN (SELECT code_original FROM activite[PX].t_services_facturation) + GROUP BY 1,2,3,4 + ORDER BY 1; + + + + UPDATE activite[PX].t_services_facturation + SET + mode_traitement_id = CASE WHEN t_services_facturation.mode_traitement_id = 0 THEN COALESCE(t_modes_traitement.oid,0) ELSE t_services_facturation.mode_traitement_id END, + dmt_id = CASE WHEN t_services_facturation.dmt_id = 0 THEN COALESCE(t_dmt.oid,0) ELSE t_services_facturation.dmt_id END + FROM w_MVTS_UF + LEFT JOIN base.t_modes_traitement ON CLI_CODE_ACTIVITE = t_modes_traitement.code + LEFT JOIN base.t_dmt ON CLI_CODE_DMT = t_dmt.code + WHERE t_services_facturation.code_original = CLI_CODE_UF AND (t_services_facturation.mode_traitement_id = 0 OR t_services_facturation.dmt_id = 0); + + + + + -- Unités fonctionnelles + + INSERT INTO activite[PX].t_unites_fonctionnelles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_fonctionnelles); + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT + CLI_CODE_UF, + CLI_CODE_UF, + CLI_DONN_DESCRIPTION, + CLI_DONN_DESCRIPTION + FROM w_MVTS_UF + WHERE CLI_CODE_UF NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles) + ORDER BY 1; + + + -- Unités médicales + + INSERT INTO activite[PX].t_unites_medicales(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_medicales); + + INSERT INTO activite[PX].t_unites_medicales(code_original, code, texte, texte_court) + SELECT + CLI_CODE_UM, + CLI_CODE_UM, + CLI_DONN_DESCRIPTION, + CLI_DONN_DESCRIPTION + FROM + prod_clinicom.FS_MVTS_UM + WHERE CLI_CODE_UM NOT IN (SELECT code_original FROM activite[PX].t_unites_medicales) AND + CLI_CODE_UM IN (SELECT CLI_CODE_UM FROM w_MVTS_UF) + ORDER BY 1; + + + + -- Activités + + INSERT INTO activite[PX].t_activites(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_activites); + + INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court) + SELECT + CLI_CODE_SERVICE, + CLI_CODE_SERVICE, + CLI_DONN_DESCRIPTION_SERVICE, + CLI_DONN_DESCRIPTION_SERVICE + FROM w_MVTS_UF + WHERE CLI_CODE_SERVICE NOT IN (SELECT code_original FROM activite[PX].t_activites) + GROUP BY 1,2,3,4 + ORDER BY 1; + + + -- Etages et lits + + INSERT INTO activite[PX].t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_etages); + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court) + SELECT + CLI_CODE_US, + CLI_CODE_US, + CLI_DONN_DESCRIPTION, + CLI_DONN_DESCRIPTION + FROM + prod_clinicom.FS_MVTS_US + WHERE CLI_CODE_US <> '' AND + CLI_CODE_US IN (SELECT CLI_CODE_US FROM w_FS_MVTS_US) AND + CLI_CODE_US NOT IN (SELECT code_original FROM activite[PX].t_etages) + ORDER BY 1; + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court) + SELECT + CLI_CODE_US, + CLI_CODE_US, + CLI_CODE_US, + CLI_CODE_US + FROM + prod_clinicom.FD_MVTS_MOUVEMENTS JOIN w_ADMISSIONS_select ON cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + WHERE CLI_CODE_US <> '' AND + CLI_CODE_US NOT IN (SELECT code_original FROM activite[PX].t_etages) + GROUP BY 1 + ORDER BY 1; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT + CLI_CODE_US || '|' || CLI_DONN_CHAMBRE, + CLI_DONN_CHAMBRE, + 'Chambre ' || CLI_DONN_CHAMBRE, + 'Chambre ' || CLI_DONN_CHAMBRE, + t_etages.oid, + 'O' + FROM + prod_clinicom.FS_MVTS_USCHAMBRES + JOIN activite[PX].t_etages ON CLI_CODE_US = t_etages.code_original + WHERE CLI_CODE_US IN (SELECT CLI_CODE_US FROM w_FS_MVTS_US) AND + CLI_CODE_US || '|' || CLI_DONN_CHAMBRE NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL); + + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT + CLI_CODE_US || '|' || CLI_DONN_LIT, + CLI_DONN_LIT, + 'Lit ' || CLI_DONN_LIT, + 'Lit ' || CLI_DONN_LIT, + t_etages.oid, + 'N' + FROM + prod_clinicom.FS_MVTS_USLITS + JOIN activite[PX].t_etages ON CLI_CODE_US = t_etages.code_original + WHERE CLI_CODE_US IN (SELECT CLI_CODE_US FROM w_FS_MVTS_US) AND + CLI_CODE_US || '|' || CLI_DONN_LIT NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL); + + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT + CLI_CODE_US || '|' || CLI_DONN_CHAMBRE, + CLI_DONN_CHAMBRE, + 'Chambre ' || CLI_DONN_CHAMBRE, + 'Chambre ' || CLI_DONN_CHAMBRE, + t_etages.oid, + 'N' + FROM + prod_clinicom.FD_MVTS_MOUVEMENTS JOIN w_ADMISSIONS_select ON cli_donn_noabsepisode = cli_donn_noabsepisode_SElECT + JOIN activite[PX].t_etages ON CLI_CODE_US = t_etages.code_original + WHERE CLI_DONN_CHAMBRE <> '' AND + CLI_CODE_US || '|' || CLI_DONN_CHAMBRE NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL) + GROUP BY 1,2,3,4,5; + + + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT code_original || '|0' , '', 'Non renseigné', 'Non renseigné', oid, 'N' + FROM activite[PX].t_etages + WHERE oid > 0 AND + code_original || '|0' NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL); + + + UPDATE activite[PX].t_lits SET code = '*****' WHERE oid = 0; + + UPDATE activite[PX].t_lits + SET code = t_etages.code || '***' + FROM activite[PX].t_etages + WHERE etage_id = t_etages.oid + AND t_lits.code = '' ; + + ]]> + + + + 0 AND code NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation); + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT + CLI_CODE_PRESTATIONEXTERNE, + CLI_CODE_PRESTATIONEXTERNE, + CLI_CODE_PRESTATIONEXTERNE, + CLI_CODE_PRESTATIONEXTERNE + FROM + prod_clinicom.FD_FAC_DETFACLIG + WHERE CLI_CODE_PRESTATIONEXTERNE <> '' AND CLI_CODE_PRESTATIONEXTERNE NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation) + GROUP BY 1 + ORDER BY 1; + + INSERT INTO activite.t_prestations(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECT oid FROM activite.t_prestations); + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT + CLI_CODE_LETTRECLE, + CLI_CODE_LETTRECLE, + CLI_DONN_DESCRIPTION, + CLI_DONN_DESCRIPTION + FROM prod_clinicom.FB_FAC_LETTRECLE + WHERE CLI_CODE_LETTRECLE NOT IN (SELECT code_original FROM activite.t_prestations); + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT + CLI_DONN_DESCRIPTIONCOURTE, + CLI_DONN_DESCRIPTIONCOURTE, + CLI_DONN_DESCRIPTION, + CLI_DONN_DESCRIPTION + FROM + prod_clinicom.FB_FAC_PRESTATION + WHERE CLI_DONN_DESCRIPTIONCOURTE NOT IN (SELECT code_original FROM activite.t_prestations) + ORDER BY 1; + + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT + CLI_CODE_PRESTATION, + CLI_CODE_PRESTATION, + CLI_DONN_DESCRIPTION, + CLI_DONN_DESCRIPTION + FROM prod_clinicom.FB_FAC_FRAISDIVERS + WHERE CLI_CODE_PRESTATION NOT IN (SELECT code_original FROM activite.t_prestations); + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT code, code, texte, texte + FROM base.t_ccam_regroupements + WHERE oid <> 0 AND code NOT IN (SELECT code_original FROM activite.t_prestations); + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT + CLI_CODE_PRESTATIONEXTERNE, + CLI_CODE_PRESTATIONEXTERNE, + CLI_CODE_PRESTATIONEXTERNE, + CLI_CODE_PRESTATIONEXTERNE + FROM + prod_clinicom.FD_FAC_DETFACLIG + WHERE CLI_CODE_PRESTATIONEXTERNE <> '' AND CLI_CODE_PRESTATIONEXTERNE NOT IN (SELECT code_original FROM activite.t_prestations) + GROUP BY 1 + ORDER BY 1; + + -- Comptes + INSERT INTO activite[PX].t_compte(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_compte); + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT CLI_CODE_ORDONNATEUR, CLI_CODE_ORDONNATEUR, CLI_CODE_ORDONNATEUR, CLI_CODE_ORDONNATEUR + FROM prod_clinicom.FD_FAC_DETFACLIG + WHERE CLI_CODE_ORDONNATEUR <> 0 AND CLI_CODE_ORDONNATEUR NOT IN (SELECT code FROM activite[PX].t_compte) + GROUP BY 1 + ORDER BY 1 + ; + + + + ]]> + + + + + + + + '2099-12-31'; + + UPDATE activite[PX].p_factures + SET + date_solde_0_c = CASE WHEN montant_comptabilise_0_c = 0 THEN '00010101' WHEN montant_comptabilise_0_c = montant_regle_0_c THEN date_solde_0_c ELSE '20991231' END, + date_solde_0_h = CASE WHEN montant_comptabilise_0_h = 0 THEN '00010101' WHEN montant_comptabilise_0_h = montant_regle_0_h THEN date_solde_0_h ELSE '20991231' END, + date_solde_1_c = CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END, + date_solde_1_h = CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '20991231' END, + date_solde_2_c = CASE WHEN montant_comptabilise_2_c = 0 THEN '00010101' WHEN montant_comptabilise_2_c = montant_regle_2_c THEN date_solde_2_c ELSE '20991231' END, + date_solde_2_h = CASE WHEN montant_comptabilise_2_h = 0 THEN '00010101' WHEN montant_comptabilise_2_h = montant_regle_2_h THEN date_solde_2_h ELSE '20991231' END, + date_solde_22_c = CASE WHEN montant_comptabilise_22_c = 0 THEN '00010101' WHEN montant_comptabilise_22_c = montant_regle_22_c THEN date_solde_22_c ELSE '20991231' END, + date_solde_22_h = CASE WHEN montant_comptabilise_22_h = 0 THEN '00010101' WHEN montant_comptabilise_22_h = montant_regle_22_h THEN date_solde_22_h ELSE '20991231' END + WHERE + ( + date_solde_0_c <> CASE WHEN montant_comptabilise_0_c = 0 THEN '00010101' WHEN montant_comptabilise_0_c = montant_regle_0_c THEN date_solde_0_c ELSE '20991231' END OR + date_solde_0_h <> CASE WHEN montant_comptabilise_0_h = 0 THEN '00010101' WHEN montant_comptabilise_0_h = montant_regle_0_h THEN date_solde_0_h ELSE '20991231' END OR + date_solde_1_c <> CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END OR + date_solde_1_h <> CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '20991231' END OR + date_solde_2_c <> CASE WHEN montant_comptabilise_2_c = 0 THEN '00010101' WHEN montant_comptabilise_2_c = montant_regle_2_c THEN date_solde_2_c ELSE '20991231' END OR + date_solde_2_h <> CASE WHEN montant_comptabilise_2_h = 0 THEN '00010101' WHEN montant_comptabilise_2_h = montant_regle_2_h THEN date_solde_2_h ELSE '20991231' END OR + date_solde_22_c <> CASE WHEN montant_comptabilise_22_c = 0 THEN '00010101' WHEN montant_comptabilise_22_c = montant_regle_22_c THEN date_solde_22_c ELSE '20991231' END OR + date_solde_22_h <> CASE WHEN montant_comptabilise_22_h = 0 THEN '00010101' WHEN montant_comptabilise_22_h = montant_regle_22_h THEN date_solde_22_h ELSE '20991231' END + ); + + DROP TABLE IF EXISTS w_factures_soldes; + CREATE TEMP TABLE w_factures_soldes AS + SELECT + no_facture, + GREATEST(date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h) AS date_solde, + GREATEST(date_solde_0_c, date_solde_1_c, date_solde_2_c, date_solde_22_c) AS date_solde_c, + GREATEST(date_solde_0_h, date_solde_1_h, date_solde_2_h, date_solde_22_h) AS date_solde_h + FROM activite[PX].p_factures; + + UPDATE activite[PX].p_factures + SET + date_solde = w_factures_soldes.date_solde, + date_solde_c = w_factures_soldes.date_solde_c, + date_solde_h = w_factures_soldes.date_solde_h + FROM w_factures_soldes + WHERE p_factures.no_facture = w_factures_soldes.no_facture AND + ( + p_factures.date_solde IS NULL OR p_factures.date_solde <> w_factures_soldes.date_solde OR + p_factures.date_solde_c IS NULL OR p_factures.date_solde_c <> w_factures_soldes.date_solde_c OR + p_factures.date_solde_h IS NULL OR p_factures.date_solde_h <> w_factures_soldes.date_solde_h + ); + + DROP TABLE IF EXISTS w_factures_references_soldes; + + CREATE TEMP TABLE w_factures_references_soldes AS + SELECT + no_facture_reference, + MAX(date_solde) AS date_solde_reference, + MAX(date_solde_c) AS date_solde_reference_c, + MAX(date_solde_h) AS date_solde_reference_h, + MAX(date_solde_0_c) AS date_solde_reference_0_c, + MAX(date_solde_0_h) AS date_solde_reference_0_h, + MAX(date_solde_1_c) AS date_solde_reference_1_c, + MAX(date_solde_1_h) AS date_solde_reference_1_h, + MAX(date_solde_2_c) AS date_solde_reference_2_c, + MAX(date_solde_2_h) AS date_solde_reference_2_h, + MAX(date_solde_22_c) AS date_solde_reference_22_c, + MAX(date_solde_22_h) AS date_solde_reference_22_h + FROM activite[PX].p_factures + GROUP BY no_facture_reference; + + CREATE INDEX i_factures_references_soldes_1 + ON w_factures_references_soldes + USING btree + (no_facture_reference); + + + + UPDATE activite[PX].p_factures + SET + date_solde_reference = w_factures_references_soldes.date_solde_reference, + date_solde_reference_c = w_factures_references_soldes.date_solde_reference_c, + date_solde_reference_h = w_factures_references_soldes.date_solde_reference_h, + date_solde_reference_0_c = w_factures_references_soldes.date_solde_reference_0_c, + date_solde_reference_0_h = w_factures_references_soldes.date_solde_reference_0_h, + date_solde_reference_1_c = w_factures_references_soldes.date_solde_reference_1_c, + date_solde_reference_1_h = w_factures_references_soldes.date_solde_reference_1_h, + date_solde_reference_2_c = w_factures_references_soldes.date_solde_reference_2_c, + date_solde_reference_2_h = w_factures_references_soldes.date_solde_reference_2_h, + date_solde_reference_22_c = w_factures_references_soldes.date_solde_reference_22_c, + date_solde_reference_22_h = w_factures_references_soldes.date_solde_reference_22_h + FROM w_factures_references_soldes + WHERE p_factures.no_facture_reference = w_factures_references_soldes.no_facture_reference + AND ( + p_factures.date_solde_reference IS NULL OR p_factures.date_solde_reference <> w_factures_references_soldes.date_solde_reference OR + p_factures.date_solde_reference_c IS NULL OR p_factures.date_solde_reference_c <> w_factures_references_soldes.date_solde_reference_c OR + p_factures.date_solde_reference_h IS NULL OR p_factures.date_solde_reference_h <> w_factures_references_soldes.date_solde_reference_h OR + p_factures.date_solde_reference_0_c IS NULL OR p_factures.date_solde_reference_0_c <> w_factures_references_soldes.date_solde_reference_0_c OR + p_factures.date_solde_reference_0_h IS NULL OR p_factures.date_solde_reference_0_h <> w_factures_references_soldes.date_solde_reference_0_h OR + p_factures.date_solde_reference_1_c IS NULL OR p_factures.date_solde_reference_1_c <> w_factures_references_soldes.date_solde_reference_1_c OR + p_factures.date_solde_reference_1_h IS NULL OR p_factures.date_solde_reference_1_h <> w_factures_references_soldes.date_solde_reference_1_h OR + p_factures.date_solde_reference_2_c IS NULL OR p_factures.date_solde_reference_2_c <> w_factures_references_soldes.date_solde_reference_2_c OR + p_factures.date_solde_reference_2_h IS NULL OR p_factures.date_solde_reference_2_h <> w_factures_references_soldes.date_solde_reference_2_h OR + p_factures.date_solde_reference_22_c IS NULL OR p_factures.date_solde_reference_22_c <> w_factures_references_soldes.date_solde_reference_22_c OR + p_factures.date_solde_reference_22_h IS NULL OR p_factures.date_solde_reference_22_h <> w_factures_references_soldes.date_solde_reference_22_h + ); + + + + ]]> + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.date_groupage, + p_sejours.ghs_id, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour, + + 0::numeric AS delai_groupage, + 0::numeric AS delai_facture, + 0::numeric AS delai_expedition, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_solde_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_solde_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_solde_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_22 + + FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY 1,2,3,4,5; + + + UPDATE activite[PX].p_sejours + SET date_groupage = date_facture + WHERE (date_groupage IS null OR date_groupage = '20991231' OR date_groupage = '00010101') AND + date_facture <> '2099-12-31'; + + + UPDATE w_sejours_total SET + date_groupage = CASE WHEN date_groupage > '00010101' THEN date_groupage ELSE '20991231' END, + date_facture = CASE WHEN date_facture> '00010101' THEN date_facture ELSE '20991231' END, + date_expedition = CASE WHEN date_expedition > '00010101' THEN date_expedition ELSE '20991231' END, + date_solde = CASE WHEN date_solde > '00010101' THEN date_solde ELSE '20991231' END, + date_expedition_0 = CASE WHEN date_expedition_0 > '00010101' THEN date_expedition_0 ELSE '20991231' END, + date_solde_0 = CASE WHEN date_solde_0 > '00010101' THEN date_solde_0 ELSE '20991231' END, + date_expedition_1 = CASE WHEN date_expedition_1 > '00010101' THEN date_expedition_1 ELSE '20991231' END, + date_solde_1 = CASE WHEN date_solde_1 > '00010101' THEN date_solde_1 ELSE '20991231' END, + date_expedition_2 = CASE WHEN date_expedition_2 > '00010101' THEN date_expedition_2 ELSE '20991231' END, + date_solde_2 = CASE WHEN date_solde_2 > '00010101' THEN date_solde_2 ELSE '20991231' END, + date_expedition_22 = CASE WHEN date_expedition_22 > '00010101' THEN date_expedition_22 ELSE '20991231' END, + date_solde_22 = CASE WHEN date_solde_22 > '00010101' THEN date_solde_22 ELSE '20991231' END; + + + UPDATE w_sejours_total SET + delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END, + delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END, + delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END, + delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END, + delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END, + delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END, + delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END, + delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END, + delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END, + delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END, + delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END, + delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END; + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = w_sejours_total.date_expedition_0, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = w_sejours_total.date_expedition_1, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = w_sejours_total.date_expedition_2, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = w_sejours_total.date_expedition_22, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour, + + + delai_groupage = w_sejours_total.delai_groupage, + delai_facture = w_sejours_total.delai_facture, + delai_expedition = w_sejours_total.delai_expedition, + delai_solde = w_sejours_total.delai_solde, + delai_expedition_0 = w_sejours_total.delai_expedition_0, + delai_solde_0 = w_sejours_total.delai_solde_0, + delai_expedition_1 = w_sejours_total.delai_expedition_1, + delai_solde_1 = w_sejours_total.delai_solde_1, + delai_expedition_2 = w_sejours_total.delai_expedition_2, + delai_solde_2 = w_sejours_total.delai_solde_2, + delai_expedition_22 = w_sejours_total.delai_expedition_22, + delai_solde_22 = w_sejours_total.delai_solde_22 + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM w_sejours_total.date_expedition_0 OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM w_sejours_total.date_expedition_1 OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM w_sejours_total.date_expedition_2 OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM w_sejours_total.date_expedition_22 OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour OR + + p_sejours.delai_groupage IS DISTINCT FROM w_sejours_total.delai_groupage OR + p_sejours.delai_facture IS DISTINCT FROM w_sejours_total.delai_facture OR + p_sejours.delai_expedition IS DISTINCT FROM w_sejours_total.delai_expedition OR + p_sejours.delai_solde IS DISTINCT FROM w_sejours_total.delai_solde OR + p_sejours.delai_expedition_0 IS DISTINCT FROM w_sejours_total.delai_expedition_0 OR + p_sejours.delai_solde_0 IS DISTINCT FROM w_sejours_total.delai_solde_0 OR + p_sejours.delai_expedition_1 IS DISTINCT FROM w_sejours_total.delai_expedition_1 OR + p_sejours.delai_solde_1 IS DISTINCT FROM w_sejours_total.delai_solde_1 OR + p_sejours.delai_expedition_2 IS DISTINCT FROM w_sejours_total.delai_expedition_2 OR + p_sejours.delai_solde_2 IS DISTINCT FROM w_sejours_total.delai_solde_2 OR + p_sejours.delai_expedition_22 IS DISTINCT FROM w_sejours_total.delai_expedition_22 OR + p_sejours.delai_solde_22 IS DISTINCT FROM w_sejours_total.delai_solde_22 + + ); + + + ]]> + + + + + + + + + + + + diff --git a/import_activite/iCTI_import_activite_CONSOLIDATION.XML b/import_activite/iCTI_import_activite_CONSOLIDATION.XML new file mode 100644 index 0000000..0489fca --- /dev/null +++ b/import_activite/iCTI_import_activite_CONSOLIDATION.XML @@ -0,0 +1,5960 @@ + + + + + + + + + + + + + + + ''1'' OR date_sortie >= ''[ENV_ADM_ANNEEDEBUT]0101'' + ', + true); + + + SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', + ' + CREATE INDEX i_w_sejours_1 + ON temp.w_sejours + USING btree + (no_sejour) + ', + true); + + SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', + ' + CREATE INDEX i_w_sejours_2 + ON temp.w_sejours + USING btree + (oid) + ', + true); + + SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', + ' + INSERT INTO temp.w_sejours + SElECT p_sejours.no_sejour, p_sejours.oid + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE (p_factures.code_facture <= ''0'' OR + p_factures.date_vente >= ''[ENV_ADM_ANNEEDEBUT]0101'') AND + NOT EXISTS (SELECT 1 FROM temp.w_sejours WHERE temp.w_sejours.no_sejour = p_factures.no_sejour) + ', + true); + + SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', + ' + INSERT INTO temp.w_sejours + SELECT p_sejours.no_sejour, p_sejours.oid + FROM activite.p_factures_soldes_c + JOIN activite.p_factures ON p_factures_soldes_c.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE date_comptable >= ''[ENV_ADM_ANNEEDEBUT]0101'' AND + NOT EXISTS (SELECT 1 FROM temp.w_sejours WHERE temp.w_sejours.no_sejour = p_sejours.no_sejour) + ', + true); + + SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', + ' + INSERT INTO temp.w_sejours + SELECT p_sejours.no_sejour, p_sejours.oid + FROM activite.p_factures_soldes_h + JOIN activite.p_factures ON p_factures_soldes_h.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE date_comptable >= ''[ENV_ADM_ANNEEDEBUT]0101'' AND + NOT EXISTS (SELECT 1 FROM temp.w_sejours WHERE temp.w_sejours.no_sejour = p_sejours.no_sejour) + ' + , + true); + + SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', + ' + INSERT INTO temp.w_sejours + SELECT p_sejours.no_sejour, p_sejours.oid + FROM activite.p_factures_encours + JOIN activite.p_factures ON p_factures_encours.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_factures_encours.date_encours >= ''[ENV_ADM_ANNEEDEBUT]0101'' AND + NOT EXISTS (SELECT 1 FROM temp.w_sejours WHERE temp.w_sejours.no_sejour = p_sejours.no_sejour) + ' + , + true); + + SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', + ' + ANALYSE temp.w_sejours + ', + true); + + + SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', + ' + DROP TABLE IF EXISTS temp.w_factures CASCADE + ., + CREATE TABLE temp.w_factures AS + SELECT no_facture, p_factures.oid + FROM activite.p_factures + JOIN temp.w_sejours ON p_factures.no_sejour = w_sejours.no_sejour + ', + true); + + SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', + ' + ANALYSE temp.w_factures + ', + true); + + + SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', + ' + CREATE INDEX i_w_factures_1 + ON temp.w_factures + USING btree + (no_facture) + ', + true); + + SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', + ' + CREATE INDEX i_w_factures_2 + ON temp.w_factures + USING btree + (oid) + ', + true); + + + -- Récupération tables sources + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT * + FROM activite.p_sejours + WHERE EXISTS (SELECT 1 FROM temp.w_sejours WHERE temp.w_sejours.no_sejour = p_sejours.no_sejour) + limit 100000000000 + ', 'temp p_sejours' + ); + + CREATE INDEX p_sejours_i1 + ON p_sejours + USING btree + (ghs_id); + + CREATE INDEX p_sejours_i2 + ON p_sejours + USING btree + (mode_traitement_id); + + CREATE INDEX p_sejours_i3 + ON p_sejours + USING btree + (ghm_id); + + INSERT INTO activite.p_sejours( + finess, + no_sejour, + date_entree, + date_sortie, + no_patient, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + date_facture, + date_solde, + delai_facture, + delai_solde, + montant_facture_c, + montant_facture_h, + montant_regle_c, + montant_regle_h, + nb_factures, + nb_factures_regularisation, + date_expedition, + delai_expedition, + lieu_sortie_id, + medecin_sejour_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_0_id, + tiers_payant_22_id, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_12_c, + montant_facture_12_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_12_c, + montant_regle_12_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + date_expedition_0, + date_expedition_1, + date_expedition_12, + date_expedition_2, + date_expedition_22, + delai_expedition_0, + delai_expedition_1, + delai_expedition_12, + delai_expedition_2, + delai_expedition_22, + date_solde_0, + date_solde_1, + date_solde_12, + date_solde_2, + date_solde_22, + delai_solde_0, + delai_solde_1, + delai_solde_12, + delai_solde_2, + delai_solde_22, + ghs_id, + ghm_id, + gme_id, + particularite_t2a, + code_postal_id, + mode_traitement_id, + date_groupage, + delai_groupage, + nb_factures_rejet, + etat, + code_cp_demandee, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + mode_entree, + provenance, + mode_sortie, + destination, + heure_entree, + heure_sortie, + code_original, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + est_budget_global, + montant_comptabilise_budget_global_c, + oid, + provider_id, + est_sans_facturation, + type_pmsi, + risque_id, + forme_activite_id, + etat_sejour) + SELECT + COALESCE(w_correspondances_finess.code,'[FINESS]') AS finess, + '[CPX]' || no_sejour, + date_entree, + date_sortie, + substr(COALESCE(w_correspondances_patients.no_patient,p_sejours.no_patient),1,20) AS no_patient, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + date_facture, + date_solde, + delai_facture, + delai_solde, + montant_facture_c, + montant_facture_h, + montant_regle_c, + montant_regle_h, + nb_factures, + nb_factures_regularisation, + date_expedition, + delai_expedition, + CASE WHEN lieu_sortie_id <> 0 THEN lieu_sortie_id + [IPX] ELSE 0 END AS lieu_sortie_id, + CASE WHEN medecin_sejour_id <> 0 THEN medecin_sejour_id + [IPX] ELSE 0 END AS medecin_sejour_id, + CASE WHEN tiers_payant_1_id <> 0 THEN tiers_payant_1_id + [IPX] ELSE 0 END AS tiers_payant_1_id, + CASE WHEN tiers_payant_2_id <> 0 THEN tiers_payant_2_id + [IPX] ELSE 0 END AS tiers_payant_2_id, + CASE WHEN tiers_payant_0_id <> 0 THEN tiers_payant_0_id + [IPX] ELSE 0 END AS tiers_payant_0_id, + CASE WHEN tiers_payant_22_id <> 0 THEN tiers_payant_22_id + [IPX] ELSE 0 END AS tiers_payant_22_id, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_12_c, + montant_facture_12_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_12_c, + montant_regle_12_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + date_expedition_0, + date_expedition_1, + date_expedition_12, + date_expedition_2, + date_expedition_22, + delai_expedition_0, + delai_expedition_1, + delai_expedition_12, + delai_expedition_2, + delai_expedition_22, + date_solde_0, + date_solde_1, + date_solde_12, + date_solde_2, + date_solde_22, + delai_solde_0, + delai_solde_1, + delai_solde_12, + delai_solde_2, + delai_solde_22, + COALESCE(w_correspondances_ghs.oid,0) AS ghs_id, + COALESCE(w_correspondances_ghm.oid,0) AS ghm_id, + COALESCE(w_correspondances_gme.oid,0) AS gme_id, + particularite_t2a, + COALESCE(w_correspondances_codes_postaux.oid,0) AS code_postal_id, + COALESCE(w_correspondances_modes_traitement.oid,0) AS mode_traitement_id, + date_groupage, + delai_groupage, + nb_factures_rejet, + etat, + code_cp_demandee, + 0 AS ghs_bebe1_id, + 0 AS ghs_bebe2_id, + 0 AS ghs_bebe3_id, + mode_entree, + provenance, + mode_sortie, + destination, + heure_entree, + heure_sortie, + '[CPX]' || code_original, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + est_budget_global, + montant_comptabilise_budget_global_c, + CASE WHEN p_sejours.oid <> 0 THEN p_sejours.oid + [IPX] ELSE 0 END AS oid, + provider_id, + COALESCE(est_sans_facturation,'0'), + type_pmsi, + COALESCE(w_correspondances_risque.oid, 0) AS risque_id, + COALESCE(w_correspondances_forme_activite.oid, 0) AS forme_activite_id, + etat_sejour + FROM p_sejours + LEFT JOIN w_correspondances_finess ON p_sejours.finess = w_correspondances_finess.code_source + LEFT JOIN w_correspondances_patients ON p_sejours.no_patient = w_correspondances_patients.no_patient_source + LEFT JOIN w_correspondances_ghs ON ghs_id = w_correspondances_ghs.oid_source + LEFT JOIN w_correspondances_ghm ON ghm_id = w_correspondances_ghm.oid_source + LEFT JOIN w_correspondances_gme ON gme_id = w_correspondances_gme.oid_source + LEFT JOIN w_correspondances_modes_traitement ON mode_traitement_id = w_correspondances_modes_traitement.oid_source + LEFT JOIN w_correspondances_codes_postaux ON code_postal_id = w_correspondances_codes_postaux.oid_source + LEFT JOIN w_correspondances_risque ON risque_id = w_correspondances_risque.oid_source + LEFT JOIN w_correspondances_forme_activite ON forme_activite_id = w_correspondances_forme_activite.oid_source + ; + + -- recreation des lien activite / pmsi + DELETE FROM activite.p_sejour_pmsi WHERE no_sejour LIKE '[CPX]%'; + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT * FROM information_schema.tables WHERE table_schema = ''pmsi'' AND table_name = ''v_rsf_total_1'' + ', 'temp e_has_pmsi' + ); + + SELECT base.cti_execute(' + SELECT base.cti_copy_table(''dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]'', '' + SELECT * + FROM activite.p_sejour_pmsi + WHERE EXISTS (SELECT 1 FROM temp.w_sejours WHERE temp.w_sejours.oid = p_sejour_pmsi.sejour_id) + limit 100000000000 + '', ''temp p_sejour_pmsi'' + )., + + CREATE INDEX p_sejour_pmsi_i1 + ON p_sejour_pmsi + USING btree + (sejour_id)., + + SELECT base.cti_copy_table(''dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]'', '' + SELECT * + FROM pmsi.p_rss + limit 100000000000 + '', ''temp p_rss'' + )., + + CREATE INDEX p_rss_i1 + ON p_rss + USING btree + (oid)., + + DROP TABLE IF EXISTS w_correspondances_sejour_pmsi., + CREATE TEMP TABLE w_correspondances_sejour_pmsi AS + SELECT + p_sejours_source.oid AS oid_source, + coalesce(p_sejours.oid,0) AS oid + FROM p_sejours AS p_sejours_source + JOIN activite.p_sejours ON ''[CPX]'' || p_sejours_source.no_sejour = p_sejours.no_sejour., + + CREATE INDEX w_correspondances_sejour_pmsi_1 + ON w_correspondances_sejour_pmsi + USING btree + (oid_source)., + + DROP TABLE IF EXISTS w_correspondances_p_rss., + CREATE TEMP TABLE w_correspondances_p_rss AS + SELECT + p_rss_source.oid AS oid_source, + coalesce(p_rss.oid,0) AS oid + FROM p_rss AS p_rss_source + JOIN pmsi.p_rss ON p_rss_source.no_rss = p_rss.no_rss AND p_rss.finess = p_rss_source.finess AND p_rss.date_sortie = p_rss_source.date_sortie., + CREATE INDEX w_correspondances_p_rss1 + ON w_correspondances_p_rss + USING btree + (oid_source)., + + INSERT INTO activite.p_sejour_pmsi(no_rss, no_sejour,pmsi_type,rss_id,sejour_id) + SELECT + p_rss.no_rss, + p_sejours.no_sejour, + pmsi_type, + p_rss.oid, + p_sejours.oid + FROM + p_sejour_pmsi + JOIN w_correspondances_p_rss ON w_correspondances_p_rss.oid_source = p_sejour_pmsi.rss_id + JOIN (SELECT oid, no_rss FROM pmsi.p_rss) p_rss ON w_correspondances_p_rss.oid = p_rss.oid + JOIN w_correspondances_sejour_pmsi ON w_correspondances_sejour_pmsi.oid_source = p_sejour_pmsi.sejour_id + JOIN activite.p_sejours ON w_correspondances_sejour_pmsi.oid = p_sejours.oid., + + UPDATE pmsi.p_rss + SET no_sejour_administratif = p_sejour_pmsi.no_sejour + FROM activite.p_sejour_pmsi + WHERE rss_id = p_rss.oid AND + no_sejour_administratif IS DISTINCT FROM no_sejour',1) + WHERE EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'pmsi' AND table_name = 'v_rsf_total_1') + AND EXISTS (SELECT 1 FROM e_has_pmsi WHERE table_schema = 'pmsi' AND table_name = 'v_rsf_total_1'); + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT * + FROM activite.p_sejour_effet_tarif + WHERE EXISTS (SELECT 1 FROM temp.w_sejours WHERE temp.w_sejours.oid = p_sejour_effet_tarif.sejour_id) + limit 100000000000 + ', 'temp p_sejour_effet_tarif' + ); + + INSERT INTO activite.p_sejour_effet_tarif( + sejour_id, + no_sejour, + ok_ghs_f, + coefficient_c, + ok_ghs_c, + tarif_ghs_c, + tarif_exh_c, + tarif_exb_c, + forfait_exb_c, + borne_basse_c, + borne_haute_c, + tarif_ghs_bb1_c, + tarif_ghs_bb2_c, + tarif_ghs_bb3_c, + coefficient_p, + ok_ghs_p, + tarif_ghs_p, + tarif_exh_p, + tarif_exb_p, + forfait_exb_p, + borne_basse_p, + borne_haute_p, + tarif_ghs_bb1_p, + tarif_ghs_bb2_p, + tarif_ghs_bb3_p, + montant_ghs_f, + montant_exh_f, + montant_tot_f, + montant_ghs_c, + montant_exh_c, + montant_exb_c, + montant_ghs_bb1_c, + montant_ghs_bb2_c, + montant_ghs_bb3_c, + montant_tot_c, + montant_ghs_p, + montant_exh_p, + montant_exb_p, + montant_tot_p, + montant_ghs_bb1_p, + montant_ghs_bb2_p, + montant_ghs_bb3_p + ) + SELECT + CASE WHEN p_sejour_effet_tarif.sejour_id <> 0 THEN p_sejour_effet_tarif.sejour_id + [IPX] ELSE 0 END sejour_id, + '[CPX]' || no_sejour, + ok_ghs_f, + coefficient_c, + ok_ghs_c, + tarif_ghs_c, + tarif_exh_c, + tarif_exb_c, + forfait_exb_c, + borne_basse_c, + borne_haute_c, + tarif_ghs_bb1_c, + tarif_ghs_bb2_c, + tarif_ghs_bb3_c, + coefficient_p, + ok_ghs_p, + tarif_ghs_p, + tarif_exh_p, + tarif_exb_p, + forfait_exb_p, + borne_basse_p, + borne_haute_p, + tarif_ghs_bb1_p, + tarif_ghs_bb2_p, + tarif_ghs_bb3_p, + montant_ghs_f, + montant_exh_f, + montant_tot_f, + montant_ghs_c, + montant_exh_c, + montant_exb_c, + montant_ghs_bb1_c, + montant_ghs_bb2_c, + montant_ghs_bb3_c, + montant_tot_c, + montant_ghs_p, + montant_exh_p, + montant_exb_p, + montant_tot_p, + montant_ghs_bb1_p, + montant_ghs_bb2_p, + montant_ghs_bb3_p + FROM p_sejour_effet_tarif + ; + + -- TRANSFERTS -- + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT * + FROM base.t_etablissements WHERE EXISTS (SELECT 1 FROM activite.p_sejours_transferts WHERE provenance_id = base.t_etablissements.oid) + OR EXISTS (SELECT 1 FROM activite.p_sejours_transferts WHERE destination_id = base.t_etablissements.oid) + ', 'temp e_etablissements' + ); + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT p_sejours_transferts.* + FROM activite.p_sejours_transferts + WHERE EXISTS (SELECT 1 FROM temp.w_sejours WHERE oid = activite.p_sejours_transferts.sejour_id) + ', 'temp e_sejours_transferts' + ); + + INSERT INTO base.t_etablissements (code, texte, texte_court) + SELECT code, texte, texte_court + FROM e_etablissements WHERE NOT EXISTS (SELECT 1 FROM base.t_etablissements WHERE code = e_etablissements.code) + ; + + + DROP TABLE IF EXISTS c_etablissements; + CREATE TEMP TABLE c_etablissements AS + SELECT e_etablissements.oid AS oid_source, MAX(COALESCE(t_etablissements.oid,0)) AS oid + FROM e_etablissements + JOIN base.t_etablissements ON t_etablissements.code = e_etablissements.code + GROUP BY 1; + + + INSERT INTO activite.p_sejours_transferts( + sejour_id, + provenance_id, + destination_id + ) + SELECT + sejour_id + [IPX], + prov.oid, + dest.oid + FROM e_sejours_transferts + LEFT JOIN c_etablissements prov ON provenance_id = prov.oid_source + LEFT JOIN c_etablissements dest ON destination_id = dest.oid_source + ; + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT * + FROM activite.p_sejour_lieu + limit 100000000000 + ', 'temp i_sejour_lieu' + ); + + INSERT INTO activite.p_sejour_lieu( + sejour_id, + no_sejour, + lieu_id, + pole_id + ) + SELECT + CASE WHEN i_sejour_lieu.sejour_id <> 0 THEN i_sejour_lieu.sejour_id + [IPX] ELSE 0 END sejour_id, + '[CPX]' || no_sejour, + CASE WHEN i_sejour_lieu.lieu_id <> 0 THEN i_sejour_lieu.lieu_id + [IPX] ELSE 0 END lieu_id, + COALESCE(w_correspondances_pole.oid, 0) AS pole_id + FROM i_sejour_lieu + LEFT JOIN w_correspondances_pole ON pole_id = w_correspondances_pole.oid_source + ; + + + ]]> + + + + 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, + nb_entrees_directes, + nb_sorties_directes, + nb_urgences, + nb_externes, + nb_ambulatoires, + CASE WHEN medecin_sejour_id <> 0 THEN medecin_sejour_id + [IPX] ELSE 0 END AS medecin_sejour_id, + nb_jours_js_inclus, + nb_seances, + nb_seances_dans_taux, + nb_entrees_mutation_service, + nb_sorties_mutation_service, + nb_entrees_mutation_activite, + nb_sorties_mutation_activite, + nb_entrees_mutation_etage, + nb_sorties_mutation_etage, + nb_chambres_particulieres, + heure_debut, + heure_fin, + est_jour_entree, + est_jour_sortie, + est_jour_hospitalisation, + est_chambre_particuliere, + est_chambre_particuliere_facturee, + nb_entrees_mutation_unite_medicale, + nb_sorties_mutation_unite_medicale, + nb_bebes, + CASE WHEN sejour_id <> 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, + jour_semaine, + is_weekend, + est_facture, + nb_jours_d, + nb_jours_f, + nb_jours_12, + nb_jours_prorata, + nb_jours_cp_d, + nb_jours_cp_f, + nb_jours_cp_12, + equivalent_malade_complet, + nb_passage_externe, + nb_deces, + nb_seances_chimio, + nb_seances_dialyse, + nb_seances_autre, + COALESCE(w_correspondances_pole.oid, 0) AS pole_id, + nb_jour_sejour_sorti + FROM p_mouvements_sejour + LEFT JOIN w_correspondances_pole ON pole_id = w_correspondances_pole.oid_source + ; + + + DROP TABLE IF EXISTS w_lieux; + CREATE TEMP TABLE w_lieux AS + SELECT + CASE WHEN t_lieux.oid <> 0 THEN t_lieux.oid + [IPX] ELSE 0 END AS oid, + CASE WHEN code_original_1 <> '' THEN '[TPX]' || code_original_1 ELSE '' END AS code_original_1, + CASE WHEN code_original_2 <> '' THEN '[TPX]' || code_original_2 ELSE '' END AS code_original_2, + CASE WHEN code_original_3 <> '' THEN '[TPX]' || code_original_3 ELSE '' END AS code_original_3, + CASE WHEN code_original_4 <> '' THEN '[TPX]' || code_original_4 ELSE '' END AS code_original_4, + CASE WHEN code_original_5 <> '' THEN '[TPX]' || code_original_5 ELSE '' END AS code_original_5, + CASE WHEN service_facturation_id <> 0 THEN service_facturation_id + [IPX] ELSE 0 END AS service_facturation_id, + CASE WHEN activite_id <> 0 THEN activite_id + [IPX] ELSE 0 END AS activite_id, + CASE WHEN lit_id <> 0 THEN lit_id + [IPX] ELSE 0 END AS lit_id, + CASE WHEN unite_medicale_id <> 0 THEN unite_medicale_id + [IPX] ELSE 0 END AS unite_medicale_id, + CASE WHEN unite_fonctionnelle_id <> 0 THEN unite_fonctionnelle_id + [IPX] ELSE 0 END AS unite_fonctionnelle_id, + CASE WHEN code_original_6 <> '' THEN '[TPX]' || code_original_6 ELSE '' END AS code_original_6, + CASE WHEN code_original_7 <> '' THEN '[TPX]' || code_original_7 ELSE '' END AS code_original_7, + COALESCE(w_correspondances_modes_traitement.oid,0) AS mode_traitement_id, + COALESCE(gir_code_original,'') AS gir_code_original, + COALESCE(gir_id,0) AS gir_id + FROM t_lieux + LEFT JOIN w_correspondances_modes_traitement ON mode_traitement_id = w_correspondances_modes_traitement.oid_source + ; + + INSERT INTO activite.t_lieux( + oid, + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + service_facturation_id, + activite_id, + lit_id, + unite_medicale_id, + unite_fonctionnelle_id, + code_original_6, + code_original_7, + mode_traitement_id, + gir_code_original, + gir_id) + SELECT + oid, + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + service_facturation_id, + activite_id, + lit_id, + unite_medicale_id, + unite_fonctionnelle_id, + code_original_6, + code_original_7, + mode_traitement_id, + gir_code_original, + gir_id + FROM w_lieux + WHERE NOT EXISTS (SELECT 1 FROM activite.t_lieux WHERE oid = CASE WHEN w_lieux.oid <> 0 THEN w_lieux.oid ELSE 0 END) + ; + + UPDATE activite.t_lieux + SET + code_original_1 = w_lieux.code_original_1, + code_original_2 = w_lieux.code_original_2, + code_original_3 = w_lieux.code_original_3, + code_original_4 = w_lieux.code_original_4, + code_original_5 = w_lieux.code_original_5, + service_facturation_id = w_lieux.service_facturation_id, + activite_id = w_lieux.activite_id, + lit_id = w_lieux.lit_id, + unite_medicale_id = w_lieux.unite_medicale_id, + unite_fonctionnelle_id = w_lieux.unite_fonctionnelle_id, + code_original_6 = w_lieux.code_original_6, + code_original_7 = w_lieux.code_original_7, + mode_traitement_id = w_lieux.mode_traitement_id, + gir_code_original = w_lieux.gir_code_original, + gir_id = w_lieux.gir_id + FROM w_lieux + WHERE + t_lieux.oid = w_lieux.oid AND + ( + t_lieux.code_original_1 != w_lieux.code_original_1 OR + t_lieux.code_original_2 != w_lieux.code_original_2 OR + t_lieux.code_original_3 != w_lieux.code_original_3 OR + t_lieux.code_original_4 != w_lieux.code_original_4 OR + t_lieux.code_original_5 != w_lieux.code_original_5 OR + t_lieux.service_facturation_id != w_lieux.service_facturation_id OR + t_lieux.activite_id != w_lieux.activite_id OR + t_lieux.lit_id != w_lieux.lit_id OR + t_lieux.unite_medicale_id != w_lieux.unite_medicale_id OR + t_lieux.unite_fonctionnelle_id != w_lieux.unite_fonctionnelle_id OR + t_lieux.code_original_6 != w_lieux.code_original_6 OR + t_lieux.code_original_7 != w_lieux.code_original_7 OR + t_lieux.mode_traitement_id != w_lieux.mode_traitement_id OR + t_lieux.gir_code_original != w_lieux.gir_code_original OR + t_lieux.gir_id != w_lieux.gir_id + ) + ; + + DELETE FROM activite.t_lieux WHERE oid BETWEEN [IPX] AND [IPX] + 1000000000000 + AND NOT EXISTS (SELECT 1 FROM w_lieux WHERE oid = activite.t_lieux.oid) + ; + ]]> + + + + 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, + date_debut, + heure_debut, + 0::bigint AS salle_id, + CASE WHEN medecin_chirurgien_id <> 0 THEN medecin_chirurgien_id + [IPX] ELSE 0 END AS medecin_chirurgien_id, + CASE WHEN medecin_anesthesiste_id <> 0 THEN medecin_anesthesiste_id + [IPX] ELSE 0 END AS medecin_anesthesiste_id, + COALESCE(w_correspondances_actes.oid,0) AS acte_id + FROM p_intervention + LEFT JOIN w_correspondances_actes ON acte_id = w_correspondances_actes.oid_source; + + ]]> + + + + + + + + 0 THEN tiers_payant_1_id + [IPX] ELSE 0 END AS tiers_payant_1_id, + CASE WHEN tiers_payant_2_id <> 0 THEN tiers_payant_2_id + [IPX] ELSE 0 END AS tiers_payant_2_id, + CASE WHEN tiers_payant_22_id <> 0 THEN tiers_payant_22_id + [IPX] ELSE 0 END AS tiers_payant_22_id, + CASE WHEN tiers_payant_0_id <> 0 THEN tiers_payant_0_id + [IPX] ELSE 0 END AS tiers_payant_0_id, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + COALESCE(w_correspondances_ghs.oid,0) AS ghs_id, + particularite_t2a, + date_vente, + code_cloture, + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + code_cp_demandee, + date_encours, + 0 AS ghs_bebe1_id, + 0 AS ghs_bebe2_id, + 0 AS ghs_bebe3_id, + nb_rejets, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + CASE WHEN no_facture_reference <> '' THEN '[CPX]' || no_facture_reference ELSE '' END AS no_facture_reference, + date_solde_reference, + date_solde_reference_c, + date_solde_reference_h, + date_solde_reference_0_c, + date_solde_reference_1_c, + date_solde_reference_2_c, + date_solde_reference_22_c, + date_solde_reference_0_h, + date_solde_reference_1_h, + date_solde_reference_2_h, + date_solde_reference_22_h, + date_solde_c, + date_solde_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_c, + CASE WHEN no_facture_od_avoir <> '' THEN '[CPX]' || no_facture_od_avoir ELSE '' END AS no_facture_od_avoir, + CASE WHEN p_factures.oid <> 0 THEN p_factures.oid + [IPX] ELSE 0 END AS oid, + CASE WHEN sejour_id <> 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, + CASE WHEN facture_reference_id <> 0 THEN facture_reference_id + [IPX] ELSE 0 END AS facture_reference_id, + CASE WHEN facture_od_avoir_id <> 0 THEN facture_od_avoir_id + [IPX] ELSE 0 END AS facture_od_avoir_id, + provider_id, + COALESCE(w_correspondances_ghm.oid,0) AS ghm_id + FROM p_factures + LEFT JOIN w_correspondances_ghs ON ghs_id = w_correspondances_ghs.oid_source + LEFT JOIN w_correspondances_ghm ON ghm_id = w_correspondances_ghm.oid_source + ; + + + + + + + + ]]> + + + + 0 THEN rubrique_facturation_id + [IPX] ELSE 0 END AS rubrique_facturation_id, + COALESCE(w_correspondances_prestations.oid,0) AS prestation_id, + prix_unitaire, + CASE WHEN lieu_id <> 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, + CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, + montant_encours + FROM p_factures_lignes_non_facturees_c + LEFT JOIN w_correspondances_prestations ON prestation_id = w_correspondances_prestations.oid_source; + + + ]]> + + + + 0 THEN rubrique_facturation_id + [IPX] ELSE 0 END AS rubrique_facturation_id, + CASE WHEN rubrique_comptabilisation_id <> 0 THEN rubrique_comptabilisation_id + [IPX] ELSE 0 END AS rubrique_comptabilisation_id, + COALESCE(w_correspondances_prestations.oid,0) AS prestation_id, + COALESCE(w_correspondances_compte.oid,0) AS compte_produit_id + FROM t_rubrique_facture_c + LEFT JOIN w_correspondances_prestations ON prestation_id = w_correspondances_prestations.oid_source + LEFT JOIN w_correspondances_compte ON compte_produit_id = w_correspondances_compte.oid_source + WHERE NOT EXISTS (SELECT 1 FROM activite.t_rubrique_facture_c WHERE activite.t_rubrique_facture_c.oid = (t_rubrique_facture_c.oid + [IPX])); + + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT * + FROM activite.p_factures_lignes_c + WHERE EXISTS (SELECT 1 FROM temp.w_factures WHERE temp.w_factures.no_facture = activite.p_factures_lignes_c.no_facture) + limit 100000000000 + ', 'temp p_factures_lignes_c' + ); + + CREATE INDEX p_factures_lignes_c_i1 + ON p_factures_lignes_c + USING btree + (prestation_id); + + + INSERT INTO activite.p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + compte_produit_id, + prestation_id, + lpp_id, + ucd_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id, + pole_id) + SELECT + '[CPX]' || no_facture AS no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + CASE WHEN rubrique_facture_id <> 0 THEN rubrique_facture_id + [IPX] ELSE 0 END AS rubrique_facture_id, + CASE WHEN rubrique_facturation_id <> 0 THEN rubrique_facturation_id + [IPX] ELSE 0 END AS rubrique_facturation_id, + COALESCE(w_correspondances_compte.oid,0) AS compte_produit_id, + COALESCE(w_correspondances_prestations.oid,0) AS prestation_id, + COALESCE(w_correspondances_lpp.oid,0) AS lpp_id, + COALESCE(w_correspondances_ucd.oid,0) AS ucd_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + CASE WHEN lieu_id <> 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + CASE WHEN rubrique_comptabilisation_id <> 0 THEN rubrique_comptabilisation_id + [IPX] ELSE 0 END AS rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, + COALESCE(w_correspondances_pole.oid, 0) AS pole_id + FROM p_factures_lignes_c + LEFT JOIN w_correspondances_prestations ON prestation_id = w_correspondances_prestations.oid_source + LEFT JOIN w_correspondances_compte ON compte_produit_id = w_correspondances_compte.oid_source + LEFT JOIN w_correspondances_pole ON pole_id = w_correspondances_pole.oid_source + LEFT JOIN w_correspondances_lpp ON lpp_id = w_correspondances_lpp.oid_source + LEFT JOIN w_correspondances_ucd ON ucd_id = w_correspondances_ucd.oid_source + ; + + + + ]]> + + + + 0 THEN rubrique_comptabilisee_id + [IPX] ELSE 0 END AS rubrique_comptabilisee_id, + COALESCE(w_correspondances_prestations.oid,0) AS prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + finess, + od_avoir, + CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id + FROM p_factures_soldes_c + LEFT JOIN w_correspondances_prestations ON prestation_id = w_correspondances_prestations.oid_source; + + + -- Récupération tables sources + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT * + FROM activite.p_facture_solde_tiers_c + WHERE EXISTS (SELECT 1 FROM temp.w_factures WHERE temp.w_factures.no_facture = activite.p_facture_solde_tiers_c.no_facture) + limit 100000000000 + ', 'temp p_facture_solde_tiers_c' + ); + + CREATE INDEX p_facture_solde_tiers_c_i1 + ON p_facture_solde_tiers_c + USING btree + (prestation_id); + + + INSERT INTO activite.p_facture_solde_tiers_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisation_id, + prestation_id, + tiers_payant_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + od_avoir + ) + SELECT + CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, + '[CPX]' || no_facture AS no_facture, + date_comptable, + CASE WHEN rubrique_comptabilisation_id <> 0 THEN rubrique_comptabilisation_id + [IPX] ELSE 0 END AS rubrique_comptabilisation_id, + COALESCE(w_correspondances_prestations.oid,0) AS prestation_id, + CASE WHEN tiers_payant_id <> 0 THEN tiers_payant_id + [IPX] ELSE 0 END AS tiers_payant_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + od_avoir + FROM p_facture_solde_tiers_c + LEFT JOIN w_correspondances_prestations ON prestation_id = w_correspondances_prestations.oid_source; + ]]> + + + + 0 THEN medecin_facture_id + [IPX] ELSE 0 END AS medecin_facture_id, + COALESCE(w_correspondances_prestations.oid,0) AS prestation_id, + prix_unitaire, + montant_depassement, + CASE WHEN lieu_id <> 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, + COALESCE(w_correspondances_actes.oid,0) AS acte_id, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id + FROM p_factures_lignes_non_facturees_h + LEFT JOIN w_correspondances_prestations ON prestation_id = w_correspondances_prestations.oid_source + LEFT JOIN w_correspondances_actes ON acte_id = w_correspondances_actes.oid_source; + + + ]]> + + + + 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, + montant_depassement, + COALESCE(w_correspondances_actes.oid,0) AS acte_id, + CASE WHEN medecin_facture_id <> 0 THEN medecin_facture_id + [IPX] ELSE 0 END AS medecin_facture_id, + CASE WHEN medecin_comptabilise_id <> 0 THEN medecin_comptabilise_id + [IPX] ELSE 0 END AS medecin_comptabilise_id, + heure_debut, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, + CASE WHEN protocole_id <> 0 THEN protocole_id + [IPX] ELSE 0 END AS protocole_id, + montant_non_facture, + COALESCE(w_correspondances_pole.oid, 0) AS pole_id + FROM p_factures_lignes_h + LEFT JOIN w_correspondances_prestations ON prestation_id = w_correspondances_prestations.oid_source + LEFT JOIN w_correspondances_actes ON acte_id = w_correspondances_actes.oid_source + LEFT JOIN w_correspondances_pole ON pole_id = w_correspondances_pole.oid_source + ; + + + + + ]]> + + + + 0 THEN medecin_comptabilise_id + [IPX] ELSE 0 END AS medecin_comptabilise_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + montant_solde, + montant_solde_0, + montant_solde_1, + montant_solde_2, + montant_solde_22, + finess, + od_avoir, + CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id + FROM p_factures_soldes_h; + + + + ]]> + + + + 0 THEN p_factures_encours.oid + [IPX] ELSE 0 END AS oid, + CASE WHEN sejour_id <> 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, + '[CPX]' || no_sejour AS no_sejour, + '[CPX]' || no_facture AS no_facture, + CASE WHEN no_facture_reference <> '' THEN '[CPX]' || no_facture_reference ELSE '' END AS no_facture_reference, + date_debut, + date_fin, + date_encours, + code_origine, + code_sorti, + CASE WHEN tiers_payant_1_id <> 0 THEN tiers_payant_1_id + [IPX] ELSE 0 END AS tiers_payant_1_id, + CASE WHEN tiers_payant_2_id <> 0 THEN tiers_payant_2_id + [IPX] ELSE 0 END AS tiers_payant_2_id, + CASE WHEN tiers_payant_22_id <> 0 THEN tiers_payant_22_id + [IPX] ELSE 0 END AS tiers_payant_22_id, + CASE WHEN tiers_payant_0_id <> 0 THEN tiers_payant_0_id + [IPX] ELSE 0 END AS tiers_payant_0_id, + COALESCE(w_correspondances_ghs.oid,0) AS ghs_id, + 0 AS ghs_bebe1_id, + 0 AS ghs_bebe2_id, + 0 AS ghs_bebe3_id, + code_cp_demandee, + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + type_sejour, + CASE WHEN lieu_sortie_id <> 0 THEN lieu_sortie_id + [IPX] ELSE 0 END AS lieu_sortie_id, + date_groupage, + provider_id, + COALESCE(w_correspondances_ghm.oid,0) AS ghm_id + FROM p_factures_encours + LEFT JOIN w_correspondances_ghs ON ghs_id = w_correspondances_ghs.oid_source + LEFT JOIN w_correspondances_ghm ON ghm_id = w_correspondances_ghm.oid_source + ; + + -- Récupération tables sources + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT * + FROM activite.p_factures_encours_lignes_c + WHERE EXISTS (SELECT 1 FROM temp.w_sejours JOIN activite.p_factures_encours ON w_sejours.no_sejour = p_factures_encours.no_sejour WHERE p_factures_encours.no_facture = activite.p_factures_encours_lignes_c.no_facture) + limit 100000000000 + ', 'temp p_factures_encours_lignes_c' + ); + + CREATE INDEX p_factures_encours_lignes_c_i1 + ON p_factures_encours_lignes_c + USING btree + (prestation_id); + + + + + + INSERT INTO activite.p_factures_encours_lignes_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + pole_id + ) + SELECT + CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, + '[CPX]' || no_facture AS no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + CASE WHEN rubrique_facturation_id <> 0 THEN rubrique_facturation_id + [IPX] ELSE 0 END AS rubrique_facturation_id, + CASE WHEN rubrique_comptabilisation_id <> 0 THEN rubrique_comptabilisation_id + [IPX] ELSE 0 END AS rubrique_comptabilisation_id, + COALESCE(w_correspondances_compte.oid,0) AS compte_produit_id, + COALESCE(w_correspondances_prestations.oid,0) AS prestation_id, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + CASE WHEN lieu_id <> 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, + nb_prestation, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + COALESCE(w_correspondances_pole.oid, 0) AS pole_id + FROM p_factures_encours_lignes_c + LEFT JOIN w_correspondances_prestations ON prestation_id = w_correspondances_prestations.oid_source + LEFT JOIN w_correspondances_compte ON compte_produit_id = w_correspondances_compte.oid_source + LEFT JOIN w_correspondances_pole ON pole_id = w_correspondances_pole.oid_source; + + + + + + + ]]> + + + + + 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, + '[CPX]' || no_sejour AS no_sejour, + date_entree, + date_sortie, + code_sorti, + CASE WHEN facture_reference_id <> 0 THEN facture_reference_id + [IPX] ELSE 0 END AS facture_reference_id, + '[CPX]' || no_facture_reference AS no_facture_reference, + type_t2a, + date_debut_facture, + date_fin_facture, + type_facture, + date_groupage, + retard_groupage, + delai_groupage, + nb_groupe, + nb_non_groupe, + nb_calculable, + COALESCE(w_correspondances_ghs.oid,0) AS ghs_id, + 0 AS ghs_bebe1_id, + 0 AS ghs_bebe2_id, + 0 AS ghs_bebe3_id, + CASE WHEN tiers_payant_0_id <> 0 THEN tiers_payant_0_id + [IPX] ELSE 0 END AS tiers_payant_0_id, + CASE WHEN tiers_payant_1_id <> 0 THEN tiers_payant_1_id + [IPX] ELSE 0 END AS tiers_payant_1_id, + CASE WHEN tiers_payant_2_id <> 0 THEN tiers_payant_2_id + [IPX] ELSE 0 END AS tiers_payant_2_id, + CASE WHEN tiers_payant_22_id <> 0 THEN tiers_payant_22_id + [IPX] ELSE 0 END AS tiers_payant_22_id, + code_facture, + date_facture, + retard_facture, + delai_facture, + code_vente, + date_vente, + nb_factures, + nb_non_calcules, + nb_factures_regularisation, + nb_rejets, + code_expedie_0, + code_expedie_1, + code_expedie_2, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + nb_non_expedie, + nb_non_expedie_c, + nb_non_expedie_h, + nb_non_expedie_0, + nb_non_expedie_0_c, + nb_non_expedie_0_h, + nb_non_expedie_1, + nb_non_expedie_1_c, + nb_non_expedie_1_h, + nb_non_expedie_2, + nb_non_expedie_2_c, + nb_non_expedie_2_h, + montant_facture, + montant_facture_c, + montant_facture_h, + montant_facture_0, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_encours, + montant_encours_c, + montant_encours_h, + montant_encours_0, + montant_encours_0_c, + montant_encours_0_h, + montant_encours_1, + montant_encours_1_c, + montant_encours_1_h, + montant_encours_2, + montant_encours_2_c, + montant_encours_2_h, + montant_comptabilise, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_budget_global_c, + montant_regle, + montant_regle_c, + montant_regle_h, + montant_regle_0, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2, + montant_regle_2_c, + montant_regle_2_h, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0, + date_solde_0_c, + date_solde_0_h, + date_solde_1, + date_solde_1_c, + date_solde_1_h, + date_solde_2, + date_solde_2_c, + date_solde_2_h, + delai_solde, + delai_solde_c, + delai_solde_h, + delai_solde_0, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2, + delai_solde_2_c, + delai_solde_2_h, + nb_non_solde, + nb_non_solde_c, + nb_non_solde_h, + nb_non_solde_0, + nb_non_solde_0_c, + nb_non_solde_0_h, + nb_non_solde_1, + nb_non_solde_1_c, + nb_non_solde_1_h, + nb_non_solde_2, + nb_non_solde_2_c, + nb_non_solde_2_h, + nb_non_cloture, + nb_non_cloture_c, + nb_non_cloture_h, + nb_non_cloture_0, + nb_non_cloture_0_c, + nb_non_cloture_0_h, + nb_non_cloture_1, + nb_non_cloture_1_c, + nb_non_cloture_1_h, + nb_non_cloture_2, + nb_non_cloture_2_c, + nb_non_cloture_2_h, + COALESCE(w_correspondances_pole.oid, 0) AS pole_sortie_id + FROM p_factures_reference + LEFT JOIN w_correspondances_ghs ON ghs_id = w_correspondances_ghs.oid_source + LEFT JOIN w_correspondances_pole ON pole_sortie_id = w_correspondances_pole.oid_source; + + + + -- Récupération tables sources (detail tiers) + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT * + FROM activite.p_factures_reference_tiers + WHERE EXISTS (SELECT 1 FROM temp.w_sejours WHERE temp.w_sejours.no_sejour = activite.p_factures_reference_tiers.no_sejour) + limit 100000000000 + ', 'temp p_factures_reference_tiers' + ); + + CREATE INDEX p_factures_reference_tiers_i1 + ON p_factures_reference_tiers + USING btree + (ghs_id); + + + INSERT INTO activite.p_factures_reference_tiers( + sejour_id, + no_sejour, + date_entree, + date_sortie, + code_sorti, + facture_reference_id, + no_facture_reference, + type_t2a, + date_debut_facture, + date_fin_facture, + type_facture, + date_groupage, + retard_groupage, + delai_groupage, + nb_groupe, + nb_non_groupe, + nb_calculable, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + tiers_payant_id, + code_facture, + date_facture, + retard_facture, + delai_facture, + code_vente, + date_vente, + nb_factures, + nb_non_calcules, + nb_factures_regularisation, + nb_rejets, + code_expedie_0, + code_expedie_1, + code_expedie_2, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + nb_non_expedie, + nb_non_expedie_c, + nb_non_expedie_h, + nb_non_expedie_0, + nb_non_expedie_0_c, + nb_non_expedie_0_h, + nb_non_expedie_1, + nb_non_expedie_1_c, + nb_non_expedie_1_h, + nb_non_expedie_2, + nb_non_expedie_2_c, + nb_non_expedie_2_h, + montant_facture, + montant_facture_c, + montant_facture_h, + montant_facture_0, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_encours, + montant_encours_c, + montant_encours_h, + montant_encours_0, + montant_encours_0_c, + montant_encours_0_h, + montant_encours_1, + montant_encours_1_c, + montant_encours_1_h, + montant_encours_2, + montant_encours_2_c, + montant_encours_2_h, + montant_comptabilise, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_budget_global_c, + montant_regle, + montant_regle_c, + montant_regle_h, + montant_regle_0, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2, + montant_regle_2_c, + montant_regle_2_h, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0, + date_solde_0_c, + date_solde_0_h, + date_solde_1, + date_solde_1_c, + date_solde_1_h, + date_solde_2, + date_solde_2_c, + date_solde_2_h, + delai_solde, + delai_solde_c, + delai_solde_h, + delai_solde_0, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2, + delai_solde_2_c, + delai_solde_2_h, + nb_non_solde, + nb_non_solde_c, + nb_non_solde_h, + nb_non_solde_0, + nb_non_solde_0_c, + nb_non_solde_0_h, + nb_non_solde_1, + nb_non_solde_1_c, + nb_non_solde_1_h, + nb_non_solde_2, + nb_non_solde_2_c, + nb_non_solde_2_h, + nb_non_cloture, + nb_non_cloture_c, + nb_non_cloture_h, + nb_non_cloture_0, + nb_non_cloture_0_c, + nb_non_cloture_0_h, + nb_non_cloture_1, + nb_non_cloture_1_c, + nb_non_cloture_1_h, + nb_non_cloture_2, + nb_non_cloture_2_c, + nb_non_cloture_2_h, + pole_sortie_id + ) + SELECT + CASE WHEN sejour_id <> 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, + '[CPX]' || no_sejour AS no_sejour, + date_entree, + date_sortie, + code_sorti, + CASE WHEN facture_reference_id <> 0 THEN facture_reference_id + [IPX] ELSE 0 END AS facture_reference_id, + '[CPX]' || no_facture_reference AS no_facture_reference, + type_t2a, + date_debut_facture, + date_fin_facture, + type_facture, + date_groupage, + retard_groupage, + delai_groupage, + nb_groupe, + nb_non_groupe, + nb_calculable, + COALESCE(w_correspondances_ghs.oid,0) AS ghs_id, + 0 AS ghs_bebe1_id, + 0 AS ghs_bebe2_id, + 0 AS ghs_bebe3_id, + CASE WHEN tiers_payant_id <> 0 THEN tiers_payant_id + [IPX] ELSE 0 END AS tiers_payant_id, + code_facture, + date_facture, + retard_facture, + delai_facture, + code_vente, + date_vente, + nb_factures, + nb_non_calcules, + nb_factures_regularisation, + nb_rejets, + code_expedie_0, + code_expedie_1, + code_expedie_2, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + nb_non_expedie, + nb_non_expedie_c, + nb_non_expedie_h, + nb_non_expedie_0, + nb_non_expedie_0_c, + nb_non_expedie_0_h, + nb_non_expedie_1, + nb_non_expedie_1_c, + nb_non_expedie_1_h, + nb_non_expedie_2, + nb_non_expedie_2_c, + nb_non_expedie_2_h, + montant_facture, + montant_facture_c, + montant_facture_h, + montant_facture_0, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_encours, + montant_encours_c, + montant_encours_h, + montant_encours_0, + montant_encours_0_c, + montant_encours_0_h, + montant_encours_1, + montant_encours_1_c, + montant_encours_1_h, + montant_encours_2, + montant_encours_2_c, + montant_encours_2_h, + montant_comptabilise, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_budget_global_c, + montant_regle, + montant_regle_c, + montant_regle_h, + montant_regle_0, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2, + montant_regle_2_c, + montant_regle_2_h, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0, + date_solde_0_c, + date_solde_0_h, + date_solde_1, + date_solde_1_c, + date_solde_1_h, + date_solde_2, + date_solde_2_c, + date_solde_2_h, + delai_solde, + delai_solde_c, + delai_solde_h, + delai_solde_0, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2, + delai_solde_2_c, + delai_solde_2_h, + nb_non_solde, + nb_non_solde_c, + nb_non_solde_h, + nb_non_solde_0, + nb_non_solde_0_c, + nb_non_solde_0_h, + nb_non_solde_1, + nb_non_solde_1_c, + nb_non_solde_1_h, + nb_non_solde_2, + nb_non_solde_2_c, + nb_non_solde_2_h, + nb_non_cloture, + nb_non_cloture_c, + nb_non_cloture_h, + nb_non_cloture_0, + nb_non_cloture_0_c, + nb_non_cloture_0_h, + nb_non_cloture_1, + nb_non_cloture_1_c, + nb_non_cloture_1_h, + nb_non_cloture_2, + nb_non_cloture_2_c, + nb_non_cloture_2_h, + COALESCE(w_correspondances_pole.oid, 0) AS pole_sortie_id + FROM p_factures_reference_tiers + LEFT JOIN w_correspondances_ghs ON ghs_id = w_correspondances_ghs.oid_source + LEFT JOIN w_correspondances_pole ON pole_sortie_id = w_correspondances_pole.oid_source + ; + + + ]]> + + + + 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id + FROM p_factures_rejets + LEFT JOIN w_correspondances_rejets_noemie ON rejet_id = w_correspondances_rejets_noemie.oid_source; + + ]]> + + + + + + + + + + + + = '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1,2,3; + + + + + --INSERT INTO activite.p_factures_comptables( + -- finess, + -- no_facture, + -- date_comptable, + -- facture_id, + -- provider_id, + -- montant_ventes_c, + -- montant_reglements_c, + -- montant_ventes_h, + -- montant_reglements_h) + --SELECT + -- COALESCE(w_correspondances_finess.code,'[FINESS]') AS finess, + -- '[CPX]' || no_facture AS no_facture, + -- date_comptable, + -- CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, + -- provider_id, + -- montant_ventes_c, + -- montant_reglements_c, + -- montant_ventes_h, + -- montant_reglements_h + --FROM p_factures_comptables + --LEFT JOIN w_correspondances_finess ON p_chiffrier_comptable.finess = w_correspondances_finess.code_source + --WHERE date_comptable >= '[ENV_ADM_ANNEEDEBUT]0101' + --GROUP BY 1,2,3,4,5; + + + + ]]> + + + + + + + + 0 + AND NOT EXISTS (SELECT 1 FROM base.t_finess WHERE code = i_finess.code) + ; + + DROP TABLE IF EXISTS w_correspondances_finess; + CREATE TEMP TABLE w_correspondances_finess AS + SELECT i_finess.oid AS oid_source, i_finess.code AS code_source, t_finess.oid AS oid, t_finess.code AS code, t_finess.oid AS oid_base + FROM i_finess + JOIN base.t_finess ON t_finess.code = i_finess.code + WHERE i_finess.oid <> 0 + UNION + SELECT 0, '', t_finess.oid AS oid, t_finess.code AS code, t_finess.oid AS oid_base + FROM base.t_finess + WHERE t_finess.code = '[FINESS]' + ; + + UPDATE w_correspondances_finess SET + oid = t_finess.oid, + code = t_finess.code + FROM base.t_finess + WHERE t_finess.code = '[FINESS]' AND + '[KEEP_FINESS]' <> '1' + ; + + + CREATE INDEX w_correspondances_finess_1 + ON w_correspondances_finess + USING btree + (oid_source); + + CREATE INDEX w_correspondances_finess_2 + ON w_correspondances_finess + USING btree + (code_source); + + ]]> + + + 'RAZ' + ; + DELETE FROM activite.p_sejours WHERE no_sejour LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' + ; + DELETE FROM activite.p_mouvements_sejour WHERE no_sejour LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' + ; + DELETE FROM activite.p_sejour_lieu WHERE split_part(no_sejour,'_',1) = '[PX]' + ; + DELETE FROM activite.p_intervention WHERE sejour_id BETWEEN [IPX] AND ([IPX] + 999999999999) + ; + DELETE FROM activite.p_factures WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' + ; + DELETE FROM activite.p_factures_lignes_non_facturees_c WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' + ; + DELETE FROM activite.p_factures_lignes_c WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' + ; + DELETE FROM activite.p_factures_lignes_non_facturees_h WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' + ; + DELETE FROM activite.p_factures_lignes_h WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' + ; + DELETE FROM activite.p_factures_soldes_c WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' + ; + DELETE FROM activite.p_facture_solde_tiers_c WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' + ; + DELETE FROM activite.p_factures_soldes_h WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' + ; + DELETE FROM activite.p_factures_encours WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' + ; + DELETE FROM activite.p_factures_encours_lignes_c WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' + ; + DELETE FROM activite.p_factures_reference WHERE no_sejour LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' + ; + DELETE FROM activite.p_factures_reference_tiers WHERE no_sejour LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' + ; + DELETE FROM activite.p_factures_rejets WHERE no_facture LIKE '[PX]\_%' AND '[MODE]' <> 'RAZ' + ; + + DELETE FROM activite.p_chiffrier_comptable + WHERE EXISTS (SELECT 1 FROM w_correspondances_finess WHERE code_source = activite.p_chiffrier_comptable.finess) + OR EXISTS (SELECT 1 FROM w_correspondances_finess WHERE code = activite.p_chiffrier_comptable.finess) + ; + DELETE FROM activite.p_factures_comptables + WHERE EXISTS (SELECT 1 FROM w_correspondances_finess WHERE code_source = activite.p_factures_comptables.finess) + OR EXISTS (SELECT 1 FROM w_correspondances_finess WHERE code = activite.p_factures_comptables.finess) + ; + + DELETE FROM activite.p_consolidation_translation WHERE from_database ILIKE '[DBNAME]' + ; + + ]]> + + + 0 + AND NOT EXISTS (SELECT 1 FROM activite.t_tiers_payant WHERE t_tiers_payant.oid = w_t_tiers_payant.oid + [IPX]); + + SELECT activite.cti_update_schema_classes('TIERSP'); + + + + + ]]> + + + + 0 AND + NOT EXISTS (SELECT 1 FROM base.t_specialites_medecin WHERE code = w_t_specialites_medecin.code) AND oid <> 0; + + + + DROP TABLE IF EXISTS w_correspondances_specialites_medecin; + CREATE TEMP TABLE w_correspondances_specialites_medecin AS + SELECT + t_specialites_medecin_source.oid AS oid_source, + coalesce(t_specialites_medecin.oid,0) AS oid + FROM w_t_specialites_medecin AS t_specialites_medecin_source + LEFT JOIN base.t_specialites_medecin ON t_specialites_medecin_source.code = t_specialites_medecin.code; + + CREATE INDEX w_correspondances_specialites_medecin_1 + ON w_correspondances_specialites_medecin + USING btree + (oid_source); + + + INSERT INTO base.t_medecins(oid, nom, prenom, numero_ordre, specialite_id ) + SELECT 0, 'Non renseigné', '', '', 0 WHERE NOT EXISTS (SELECT 1 FROM base.t_medecins WHERE oid = 0); + + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT * + FROM base.t_medecins + WHERE EXISTS (SELECT 1 FROM activite.t_medecins_administratifs WHERE medecin_id = base.t_medecins.oid) + ', 'temp t_medecins' + ); + + + INSERT INTO base.t_medecins( + nom, + prenom, + numero_ordre, + code_rpps, + specialite_id) + SELECT + t_medecins_source.nom, + t_medecins_source.prenom, + t_medecins_source.numero_ordre, + t_medecins_source.code_rpps, + COALESCE(w_correspondances_specialites_medecin.oid,0) + FROM t_medecins t_medecins_source + LEFT JOIN w_correspondances_specialites_medecin ON t_medecins_source.specialite_id = oid_source + LEFT JOIN base.t_medecins ON + ( + t_medecins.nom = t_medecins_source.nom AND + t_medecins.prenom = t_medecins_source.prenom AND + t_medecins.numero_ordre = t_medecins_source.numero_ordre AND + length(t_medecins_source.numero_ordre) = 9 + ) OR + ( + t_medecins.nom = t_medecins_source.nom AND + t_medecins.prenom = t_medecins_source.prenom AND + length(t_medecins_source.numero_ordre) <> 9 AND + t_medecins.specialite_id = COALESCE(w_correspondances_specialites_medecin.oid,0) + ) OR + ( + t_medecins.nom = t_medecins_source.nom AND + t_medecins.prenom = t_medecins_source.prenom AND + t_medecins.code_rpps = t_medecins_source.code_rpps AND + length(t_medecins_source.code_rpps) = 11 + ) + WHERE t_medecins_source.oid <> 0 AND t_medecins.oid IS NULL + GROUP BY 1,2,3,4,5; + + + DROP TABLE IF EXISTS w_correspondances_medecins; + CREATE TEMP TABLE w_correspondances_medecins AS + SELECT + t_medecins_source.oid AS oid_source, + (MAX(ARRAY[(CASE WHEN EXISTS (SELECT 1 FROM activite.t_medecins_administratifs WHERE medecin_id = t_medecins.oid) THEN 1 ELSE 0 END)::bigint,coalesce(t_medecins.oid,0)]))[2] AS oid + FROM + t_medecins AS t_medecins_source + LEFT JOIN w_correspondances_specialites_medecin ON t_medecins_source.specialite_id = oid_source + LEFT JOIN base.t_medecins ON + ( + t_medecins.nom = t_medecins_source.nom AND + t_medecins.prenom = t_medecins_source.prenom AND + t_medecins.numero_ordre = t_medecins_source.numero_ordre AND + length(t_medecins_source.numero_ordre) = 9 + ) OR + ( + t_medecins.nom = t_medecins_source.nom AND + t_medecins.prenom = t_medecins_source.prenom AND + length(t_medecins_source.numero_ordre) <> 9 AND + t_medecins.specialite_id = COALESCE(w_correspondances_specialites_medecin.oid,0) + ) OR + ( + t_medecins.nom = t_medecins_source.nom AND + t_medecins.prenom = t_medecins_source.prenom AND + t_medecins.code_rpps = t_medecins_source.code_rpps AND + length(t_medecins_source.code_rpps) = 11 + ) + GROUP BY 1; + + + CREATE INDEX w_correspondances_medecins_1 + ON w_correspondances_medecins + USING btree + (oid_source); + + UPDATE base.t_medecins + SET code_rpps = t_medecins_source.code_rpps + FROM w_correspondances_medecins + JOIN t_medecins t_medecins_source ON w_correspondances_medecins.oid_source = t_medecins_source.oid + WHERE t_medecins.oid = w_correspondances_medecins.oid AND + t_medecins.code_rpps = '' AND t_medecins_source.code_rpps <> '' + ; + + + INSERT INTO activite.t_specialites_medecin(oid, code, code_original, texte, texte_court) + SELECT 0, '', '0', 'Non saisie', 'Non saisie' + WHERE NOT EXISTS (SELECT 1 FROM activite.t_specialites_medecin WHERE oid = 0); + + INSERT INTO activite.t_medecins_administratifs(oid, code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT 0, '0', '****', 'Non renseigné', '', 0, 0 WHERE NOT EXISTS (SELECT 1 FROM activite.t_medecins_administratifs WHERE oid = 0); + + DROP TABLE IF EXISTS w_t_medecins_administratifs; + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT * + FROM activite.t_medecins_administratifs + ', 'temp w_t_medecins_administratifs' + ); + + INSERT INTO activite.t_medecins_administratifs( + oid, + code, + code_original, + nom, + prenom, + specialite_id, + medecin_id) + SELECT + w_t_medecins_administratifs.oid + [IPX], + '[CPX]' || w_t_medecins_administratifs.code, + w_t_medecins_administratifs.oid + [IPX] AS code_original, + w_t_medecins_administratifs.nom, + w_t_medecins_administratifs.prenom, + COALESCE(w_correspondances_specialites_medecin.oid,0) AS specialite_id, + COALESCE(w_correspondances_medecins.oid,0) AS medecin_id + FROM w_t_medecins_administratifs + LEFT JOIN w_correspondances_specialites_medecin ON w_t_medecins_administratifs.specialite_id = w_correspondances_specialites_medecin.oid_source + LEFT JOIN w_correspondances_medecins ON w_t_medecins_administratifs.medecin_id = w_correspondances_medecins.oid_source + WHERE w_t_medecins_administratifs.oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_medecins_administratifs WHERE oid = w_t_medecins_administratifs.oid + [IPX]); + + INSERT INTO activite.p_consolidation_translation (from_database, table_code, from_id, from_code, to_id, to_code) + SELECT + '[DBNAME]'::text AS from_database, + 'MEDECIN'::text AS table_code, + oid AS from_id, + code AS from_code, + oid + [IPX] AS to_oid, + '[CPX]' || code AS to_code + FROM w_t_medecins_administratifs + WHERE oid <> 0 + ; + + + -- Correction de la requête suivante qui faisait un UPDATE abusif qui ne vérifiait pas la correspondance du code (ajoutée depuis) + UPDATE activite.t_medecins_administratifs SET + code = ('[CPX]'::text || w_med.code::text), + nom = w_med.nom, + prenom = w_med.prenom + FROM w_t_medecins_administratifs w_med + WHERE + w_med.oid + [IPX] = t_medecins_administratifs.oid + AND ('[CPX]'::text || w_med.code::text) IS DISTINCT FROM t_medecins_administratifs.code; + + UPDATE activite.t_medecins_administratifs SET + specialite_id = COALESCE(w_correspondances_specialites_medecin.oid,0), + nom = t_medecins_administratifs_env.nom, + prenom = t_medecins_administratifs_env.prenom, + no_adeli = t_medecins_administratifs_env.no_adeli, + est_medecin_salarie = t_medecins_administratifs_env.est_medecin_salarie + FROM w_t_medecins_administratifs t_medecins_administratifs_env + LEFT JOIN w_correspondances_specialites_medecin ON t_medecins_administratifs_env.specialite_id = w_correspondances_specialites_medecin.oid_source + WHERE + t_medecins_administratifs_env.oid + [IPX] = t_medecins_administratifs.oid AND + '[CPX]'::text || t_medecins_administratifs_env.code::text = t_medecins_administratifs.code AND + (t_medecins_administratifs.specialite_id IS DISTINCT FROM COALESCE(w_correspondances_specialites_medecin.oid,0) OR + t_medecins_administratifs.nom IS DISTINCT FROM t_medecins_administratifs_env.nom OR + t_medecins_administratifs.prenom IS DISTINCT FROM t_medecins_administratifs_env.prenom OR + t_medecins_administratifs.no_adeli IS DISTINCT FROM t_medecins_administratifs_env.no_adeli OR + t_medecins_administratifs.est_medecin_salarie IS DISTINCT FROM t_medecins_administratifs_env.est_medecin_salarie + ); + + -- Correction reference medecin suite à fusion ou autre (selon un taux d'erreurs > 10% ou nombre d'erreurs > 100 + -- On efface la reference qui sera recree depuis la source + DROP TABLE IF EXISTS w_referentiel_ko; + CREATE TEMP TABLE w_referentiel_ko AS + SELECT + t_medecins_administratifs.nom AS adm_nom, + t_medecins_administratifs.prenom AS adm_prenom, + t_medecins.nom, + t_medecins.prenom, + t_medecins_source.nom AS nom_source, + t_medecins_source.prenom AS prenom_source, + t_medecins_administratifs.medecin_id, + t_medecins_administratifs.oid AS medecin_administratif_id, + CASE WHEN + base.cti_soundex_nom(t_medecins_administratifs.nom || ' ' || t_medecins_administratifs.prenom) <> + base.cti_soundex_nom(t_medecins.nom || ' ' || t_medecins.prenom) AND + + base.cti_soundex_nom(t_medecins_administratifs.prenom || ' ' || t_medecins_administratifs.nom) <> + base.cti_soundex_nom(t_medecins.nom || ' ' || t_medecins.prenom) AND + + base.cti_soundex_nom(t_medecins_administratifs.nom) <> + base.cti_soundex_nom(t_medecins.nom) AND + + upper(left(t_medecins_administratifs.nom,5)) <> + upper(left(t_medecins.nom,5)) + THEN '0' ELSE '1' END AS is_ok, + CASE WHEN t_medecins.nom = t_medecins_source.nom THEN '1' ELSE '0' END AS is_ok_source + FROM activite.t_medecins_administratifs + JOIN base.t_medecins ON medecin_id = t_medecins.oid + JOIN w_t_medecins_administratifs t_medecins_administratifs_source ON t_medecins_administratifs.oid = (t_medecins_administratifs_source.oid + [IPX]) + JOIN t_medecins t_medecins_source ON t_medecins_administratifs_source.medecin_id = t_medecins_source.oid + WHERE length(t_medecins_administratifs.nom) > 2 AND + t_medecins_administratifs.medecin_id <> 0 AND + t_medecins_administratifs.oid BETWEEN [IPX] AND [IPX]+999999999999 + ; + + UPDATE activite.t_medecins_administratifs + SET medecin_id = 0 + FROM w_referentiel_ko + WHERE t_medecins_administratifs.oid = medecin_administratif_id AND + is_ok = '0' AND + is_ok_source = '0' + ; + + UPDATE activite.t_medecins_administratifs + SET medecin_id = 0 + FROM w_referentiel_ko + JOIN ( + SELECT + count(*), + SUM(CASE WHEN is_ok <> '1' THEN 1 ELSE 0 END), + base.cti_division(SUM(CASE WHEN is_ok <> '1' THEN 1 ELSE 0 END), count(*)) + FROM w_referentiel_ko + HAVING base.cti_division(SUM(CASE WHEN is_ok <> '1' THEN 1 ELSE 0 END), count(*)) >= 0.1 OR + SUM(CASE WHEN is_ok <> '1' THEN 1 ELSE 0 END) > 100 + ) subview ON 1=1 + WHERE t_medecins_administratifs.oid = medecin_administratif_id AND + is_ok = '0' + ; + + UPDATE activite.t_medecins_administratifs + SET medecin_id = w_correspondances_medecins.oid + FROM w_t_medecins_administratifs t_medecins_administratifs_source + JOIN w_correspondances_medecins ON t_medecins_administratifs_source.medecin_id = w_correspondances_medecins.oid_source + WHERE t_medecins_administratifs.oid = t_medecins_administratifs_source.oid + [IPX] AND + t_medecins_administratifs.medecin_id <> w_correspondances_medecins.oid_source AND + t_medecins_administratifs.medecin_id = 0 + ; + + -- Suppression des médecins qui n'existent plus + DELETE FROM activite.t_medecins_administratifs + WHERE oid BETWEEN [IPX] AND [IPX]+999999999999 AND + NOT EXISTS (SELECT 1 FROM w_t_medecins_administratifs WHERE oid = activite.t_medecins_administratifs.oid-[IPX]) + ; + + -- Initialisation spécialites si modifées après dans la source + UPDATE base.t_medecins + SET specialite_id = subview.to_specialite_id + FROM + ( + SELECT t_medecins.oid, + MAX(t_medecins_source.nom) AS source_nom, + MAX(t_medecins_source.prenom) AS source_prenom, + MAX(t_medecins_source.specialite_id) AS source_specialite_id, + MAX(t_specialites_medecin_source.code) AS source_specialite_code, + MAX(t_medecins.nom) AS nom, + MAX(t_medecins.prenom) AS prenom, + MAX(t_medecins.specialite_id) AS specialite_id, + MAX(w_correspondances_specialites_medecin.oid) AS to_specialite_id + FROM t_medecins t_medecins_source + JOIN w_t_medecins_administratifs t_medecins_administratifs_source ON medecin_id = t_medecins_source.oid + JOIN w_t_specialites_medecin t_specialites_medecin_source ON t_medecins_source.specialite_id = t_specialites_medecin_source.oid + JOIN w_correspondances_medecins ON t_medecins_administratifs_source.medecin_id = w_correspondances_medecins.oid_source + JOIN base.t_medecins ON w_correspondances_medecins.oid = t_medecins.oid + JOIN base.t_specialites_medecin ON t_medecins.specialite_id = t_specialites_medecin.oid + JOIN w_correspondances_specialites_medecin ON t_medecins_source.specialite_id = w_correspondances_specialites_medecin.oid_source + WHERE t_specialites_medecin_source.code <> t_specialites_medecin.code AND + ( + t_specialites_medecin.code LIKE '%**' OR + t_specialites_medecin.oid = 0 + ) AND + t_specialites_medecin_source.code NOT LIKE '%**' AND + t_specialites_medecin_source.oid <> 0 + GROUP BY 1 + ) subview + WHERE t_medecins.oid = subview.oid + ; + + + SELECT activite.cti_update_schema_classes('MEDECIN'); + + + + ]]> + + + + 0 AND + NOT EXISTS (SELECT 1 FROM activite.t_forme_activite WHERE code = i_forme_activite.code); + + INSERT INTO activite.t_forme_activite_rule (code, texte) + SELECT '*NORULE_CONSO', 'Pas de règle sur environnement consolidé' + WHERE NOT EXISTS (SELECT 1 FROM activite.t_forme_activite_rule WHERE code = '*NORULE_CONSO') + ; + DELETE FROM activite.t_forme_activite_rule + WHERE code <> '*NORULE_CONSO' + ; + + DROP TABLE IF EXISTS w_correspondances_forme_activite; + CREATE TEMP TABLE w_correspondances_forme_activite AS + SELECT + i_forme_activite.oid AS oid_source, + COALESCE(t_forme_activite.oid,0) AS oid + FROM i_forme_activite + LEFT JOIN activite.t_forme_activite ON i_forme_activite.code = t_forme_activite.code; + + CREATE INDEX w_correspondances_forme_activite_1 + ON w_correspondances_forme_activite + USING btree + (oid_source); + + -- Pole + INSERT INTO base.t_pole ( + code, + texte, + texte_court + ) + SELECT + code, + texte, + texte_court + FROM i_pole + WHERE oid <> 0 AND + NOT EXISTS (SELECT 1 FROM base.t_pole WHERE code = i_pole.code); + + + DROP TABLE IF EXISTS w_correspondances_pole; + CREATE TEMP TABLE w_correspondances_pole AS + SELECT + i_pole.oid AS oid_source, + COALESCE(t_pole.oid,0) AS oid + FROM i_pole + LEFT JOIN base.t_pole ON i_pole.code = t_pole.code; + + CREATE INDEX w_correspondances_pole_1 + ON w_correspondances_pole + USING btree + (oid_source); + + -- Codes postaux + + INSERT INTO base.t_codes_postaux ( + code, + texte, + texte_court + ) + SELECT + code, + texte, + texte_court + FROM w_t_codes_postaux + WHERE oid <> 0 AND + NOT EXISTS (SELECT 1 FROM base.t_codes_postaux WHERE code = w_t_codes_postaux.code) + AND oid <> 0; + + + DROP TABLE IF EXISTS w_correspondances_codes_postaux; + CREATE TEMP TABLE w_correspondances_codes_postaux AS + SELECT + t_codes_postaux_source.oid AS oid_source, + coalesce(t_codes_postaux.oid,0) AS oid + FROM w_t_codes_postaux AS t_codes_postaux_source + LEFT JOIN base.t_codes_postaux ON t_codes_postaux_source.code = t_codes_postaux.code; + + CREATE INDEX w_correspondances_codes_postaux_1 + ON w_correspondances_codes_postaux + USING btree + (oid_source); + + -- Modes de traitement + + INSERT INTO base.t_modes_traitement ( + code, + texte, + texte_court, + code_original + ) + SELECT + code, + texte, + texte_court, + code_original + FROM w_t_modes_traitement + WHERE oid <> 0 AND + NOT EXISTS (SELECT 1 FROM base.t_modes_traitement WHERE code = w_t_modes_traitement.code); + + DROP TABLE IF EXISTS w_correspondances_modes_traitement; + CREATE TEMP TABLE w_correspondances_modes_traitement AS + SELECT + t_modes_traitement_source.oid AS oid_source, + coalesce(t_modes_traitement.oid,0) AS oid + FROM w_t_modes_traitement AS t_modes_traitement_source + LEFT JOIN base.t_modes_traitement ON t_modes_traitement_source.code = t_modes_traitement.code; + + CREATE INDEX w_correspondances_modes_traitement_1 + ON w_correspondances_modes_traitement + USING btree + (oid_source); + + + -- DMT + + INSERT INTO base.t_dmt ( + code, + texte, + texte_court, + code_original + ) + SELECT + code, + texte, + texte_court, + code_original + FROM w_t_dmt + WHERE oid <> 0 AND + NOT EXISTS (SELECT 1 FROM base.t_dmt WHERE code = w_t_dmt.code); + + DROP TABLE IF EXISTS w_correspondances_dmt; + CREATE TEMP TABLE w_correspondances_dmt AS + SELECT + t_dmt_source.oid AS oid_source, + coalesce(t_dmt.oid,0) AS oid + FROM w_t_dmt AS t_dmt_source + LEFT JOIN base.t_dmt ON t_dmt_source.code = t_dmt.code; + + CREATE INDEX w_correspondances_dmt_1 + ON w_correspondances_dmt + USING btree + (oid_source); + + + -- Services + + INSERT INTO activite.t_services_facturation(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '****', 'Non renseigné', 'Non renseigné' WHERE NOT EXISTS (SELECT 1 FROM activite.t_services_facturation WHERE oid = 0); + + + UPDATE activite.t_services_facturation SET + code = '[CPX]' || w_services_facturation.code, + texte = w_services_facturation.texte, + texte_court = w_services_facturation.texte_court + FROM w_t_services_facturation w_services_facturation + WHERE 1=1 AND + t_services_facturation.oid = w_services_facturation.oid + [IPX] AND + ( + t_services_facturation.code IS DISTINCT FROM ('[CPX]' || w_services_facturation.code) OR + t_services_facturation.texte IS DISTINCT FROM w_services_facturation.texte OR + t_services_facturation.texte_court IS DISTINCT FROM w_services_facturation.texte_court + ) + ; + + INSERT INTO activite.t_services_facturation( + oid, + code, + code_original, + texte, + texte_court, + finess_id, + statut, + nb_lits, + type_t2a, + nb_cp, + dmt_id, + mode_traitement_id, + unite_medicale_modifiable, + est_sans_mouvement, + etage_par_defaut_id, + etage_force_id) + SELECT + w_t_services_facturation.oid + [IPX], + '[CPX]' || w_t_services_facturation.code, + w_t_services_facturation.oid + [IPX] AS code_original, + w_t_services_facturation.texte, + w_t_services_facturation.texte_court, + COALESCE(w_correspondances_finess.oid,0) AS finess_id, + w_t_services_facturation.statut, + w_t_services_facturation.nb_lits, + w_t_services_facturation.type_t2a, + w_t_services_facturation.nb_cp, + COALESCE(w_correspondances_dmt.oid,0) AS dmt_id, + COALESCE(w_correspondances_modes_traitement.oid,0) AS mode_traitement_id, + w_t_services_facturation.unite_medicale_modifiable, + w_t_services_facturation.est_sans_mouvement, + CASE WHEN etage_par_defaut_id <> 0 THEN etage_par_defaut_id + [IPX] ELSE 0 END AS etage_par_defaut_id, + CASE WHEN etage_force_id <> 0 THEN etage_force_id + [IPX] ELSE 0 END AS etage_force_id + FROM w_t_services_facturation + LEFT JOIN w_correspondances_finess ON w_t_services_facturation.finess_id = w_correspondances_finess.oid_source + LEFT JOIN w_correspondances_modes_traitement ON w_t_services_facturation.mode_traitement_id = w_correspondances_modes_traitement.oid_source + LEFT JOIN w_correspondances_dmt ON w_t_services_facturation.dmt_id = w_correspondances_dmt.oid_source + WHERE w_t_services_facturation.oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_services_facturation WHERE oid = w_t_services_facturation.oid + [IPX]); + + UPDATE activite.t_services_facturation + SET finess_id = w_correspondances_finess.oid + FROM w_t_services_facturation i_services_facturation + JOIN w_correspondances_finess ON i_services_facturation.finess_id = w_correspondances_finess.oid_source + WHERE t_services_facturation.oid = i_services_facturation.oid + [IPX] AND + t_services_facturation.finess_id <> w_correspondances_finess.oid + ; + + UPDATE activite.t_services_facturation SET + type_t2a = i_services_facturation.type_t2a, + etage_par_defaut_id = CASE WHEN i_services_facturation.etage_par_defaut_id <> 0 THEN i_services_facturation.etage_par_defaut_id + [IPX] ELSE 0 END, + etage_force_id = CASE WHEN i_services_facturation.etage_force_id <> 0 THEN i_services_facturation.etage_force_id + [IPX] ELSE 0 END + FROM w_t_services_facturation i_services_facturation + WHERE t_services_facturation.oid = i_services_facturation.oid + [IPX] AND + ( + t_services_facturation.type_t2a IS DISTINCT FROM i_services_facturation.type_t2a OR + t_services_facturation.etage_par_defaut_id IS DISTINCT FROM CASE WHEN i_services_facturation.etage_par_defaut_id <> 0 THEN i_services_facturation.etage_par_defaut_id + [IPX] ELSE 0 END OR + t_services_facturation.etage_force_id IS DISTINCT FROM CASE WHEN i_services_facturation.etage_force_id <> 0 THEN i_services_facturation.etage_force_id + [IPX] ELSE 0 END + ) + ; + + INSERT INTO activite.p_consolidation_translation (from_database, table_code, from_id, from_code, to_id, to_code) + SELECT + '[DBNAME]'::text AS from_database, + 'SERVICE_F'::text AS table_code, + oid AS from_id, + code AS from_code, + oid + [IPX] AS to_oid, + '[CPX]' || code AS to_code + FROM w_t_services_facturation + WHERE oid <> 0 + ; + + + -- Unités médicales + + INSERT INTO activite.t_unites_medicales(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE NOT EXISTS (SELECT 1 FROM activite.t_unites_medicales WHERE oid = 0); + + UPDATE activite.t_unites_medicales SET + code = '[CPX]' || w_unites_medicales.code, + texte = w_unites_medicales.texte, + texte_court = w_unites_medicales.texte_court + FROM w_t_unites_medicales w_unites_medicales + WHERE 1=1 AND + t_unites_medicales.oid = w_unites_medicales.oid + [IPX] AND + ( + t_unites_medicales.code IS DISTINCT FROM ('[CPX]' || w_unites_medicales.code) OR + t_unites_medicales.texte IS DISTINCT FROM w_unites_medicales.texte OR + t_unites_medicales.texte_court IS DISTINCT FROM w_unites_medicales.texte_court + ); + + INSERT INTO activite.t_unites_medicales( + oid, + code, + code_original, + texte, + texte_court) + SELECT + oid + [IPX], + '[CPX]' || code, + oid + [IPX] AS code_original, + texte, + texte_court + FROM w_t_unites_medicales + WHERE oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_unites_medicales WHERE oid = w_t_unites_medicales.oid + [IPX]); + + INSERT INTO activite.p_consolidation_translation (from_database, table_code, from_id, from_code, to_id, to_code) + SELECT + '[DBNAME]'::text AS from_database, + 'UM'::text AS table_code, + oid AS from_id, + code AS from_code, + oid + [IPX] AS to_oid, + '[CPX]' || code AS to_code + FROM w_t_unites_medicales + WHERE oid <> 0 + ; + + + -- Unités fonctionnelles + + INSERT INTO activite.t_unites_fonctionnelles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE NOT EXISTS (SELECT 1 FROM activite.t_unites_fonctionnelles WHERE oid = 0); + + UPDATE activite.t_unites_fonctionnelles SET + code = '[CPX]' || w_unites_fonctionnelles.code, + texte = w_unites_fonctionnelles.texte, + texte_court = w_unites_fonctionnelles.texte_court + FROM w_t_unites_fonctionnelles w_unites_fonctionnelles + WHERE 1=1 AND + t_unites_fonctionnelles.oid = w_unites_fonctionnelles.oid + [IPX] AND + ( + t_unites_fonctionnelles.code IS DISTINCT FROM ('[CPX]' || w_unites_fonctionnelles.code) OR + t_unites_fonctionnelles.texte IS DISTINCT FROM w_unites_fonctionnelles.texte OR + t_unites_fonctionnelles.texte_court IS DISTINCT FROM w_unites_fonctionnelles.texte_court + ); + + INSERT INTO activite.t_unites_fonctionnelles( + oid, + code, + code_original, + texte, + texte_court, + finess_id) + SELECT + w_t_unites_fonctionnelles.oid + [IPX], + '[CPX]' || w_t_unites_fonctionnelles.code, + w_t_unites_fonctionnelles.oid + [IPX] AS code_original, + w_t_unites_fonctionnelles.texte, + w_t_unites_fonctionnelles.texte_court, + COALESCE(w_correspondances_finess.oid,0) AS finess_id + FROM w_t_unites_fonctionnelles + LEFT JOIN w_correspondances_finess ON w_t_unites_fonctionnelles.finess_id = w_correspondances_finess.oid_source + WHERE w_t_unites_fonctionnelles.oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_unites_fonctionnelles WHERE oid = w_t_unites_fonctionnelles.oid + [IPX]); + + UPDATE activite.t_unites_fonctionnelles + SET finess_id = w_correspondances_finess.oid + FROM w_t_unites_fonctionnelles i_unites_fonctionnelles + JOIN w_correspondances_finess ON i_unites_fonctionnelles.finess_id = w_correspondances_finess.oid_source + WHERE t_unites_fonctionnelles.oid = i_unites_fonctionnelles.oid + [IPX] AND + t_unites_fonctionnelles.finess_id <> w_correspondances_finess.oid + ; + + INSERT INTO activite.p_consolidation_translation (from_database, table_code, from_id, from_code, to_id, to_code) + SELECT + '[DBNAME]'::text AS from_database, + 'UF'::text AS table_code, + oid AS from_id, + code AS from_code, + oid + [IPX] AS to_oid, + '[CPX]' || code AS to_code + FROM w_t_unites_fonctionnelles + WHERE oid <> 0 + ; + + -- Activités + + INSERT INTO activite.t_activites(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE NOT EXISTS (SELECT 1 FROM activite.t_activites WHERE oid = 0); + + -- Mise à jour préalable des codes s'ils ont été modifiés dans l'environnement source + UPDATE activite.t_activites SET + code = '[CPX]'::text || w_activites.code::text, + code_original = w_activites.oid + [IPX], + texte = w_activites.texte, + texte_court = w_activites.texte_court + FROM + w_t_activites w_activites + WHERE 1=1 + AND t_activites.oid = w_activites.oid + [IPX] + AND t_activites.code::text IS DISTINCT FROM ('[CPX]'::text || w_activites.code::text); + + -- Ajout des nouveaux codes + INSERT INTO activite.t_activites( + oid, + code, + code_original, + texte, + texte_court) + SELECT + oid + [IPX], + '[CPX]' || code, + oid + [IPX] AS code_original, + texte, + texte_court + FROM w_t_activites + WHERE oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_activites WHERE oid = w_t_activites.oid + [IPX]); + + -- Risques + + INSERT INTO activite.t_risque(oid, code, texte) + SELECT 0, '**', 'Non renseigné' WHERE NOT EXISTS (SELECT 1 FROM activite.t_risque WHERE oid = 0); + + INSERT INTO activite.t_risque ( + code, + texte) + SELECT + t_risque.code, + t_risque.texte + FROM + t_risque + LEFT JOIN activite.t_risque ris ON ris.code = t_risque.code + WHERE t_risque.oid <> 0 AND ris.code IS NULL; + + DROP TABLE IF EXISTS w_correspondances_risque; + CREATE TEMP TABLE w_correspondances_risque AS + SELECT + t_risque_source.oid AS oid_source, + COALESCE(t_risque.oid, 0) AS oid + FROM t_risque AS t_risque_source + LEFT JOIN activite.t_risque ON t_risque_source.code = t_risque.code; + + CREATE INDEX w_correspondancesrisque_1 + ON w_correspondances_risque + USING btree + (oid_source); + + -- Etages et lits + + INSERT INTO activite.t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE NOT EXISTS (SELECT 1 FROM activite.t_etages WHERE oid = 0); + + UPDATE activite.t_etages SET + code = '[CPX]' || w_etages.code + FROM w_t_etages w_etages + LEFT JOIN w_correspondances_finess ON w_etages.finess_id = w_correspondances_finess.oid_source + WHERE 1=1 AND + t_etages.oid = w_etages.oid + [IPX] AND + ( + t_etages.code IS DISTINCT FROM ('[CPX]' || w_etages.code) OR + t_etages.nb_lits != w_etages.nb_lits OR + t_etages.nb_cp != w_etages.nb_cp OR + COALESCE(w_correspondances_finess.oid,0) != t_etages.finess_id + ); + + INSERT INTO activite.t_etages( + oid, + code, + code_original, + texte, + texte_court, + nb_lits, + nb_cp, + finess_id) + SELECT + w_t_etages.oid + [IPX], + '[CPX]' || w_t_etages.code, + w_t_etages.oid + [IPX] AS code_original, + w_t_etages.texte, + w_t_etages.texte_court, + w_t_etages.nb_lits, + w_t_etages.nb_cp, + COALESCE(w_correspondances_finess.oid,0) AS finess_id + FROM w_t_etages + LEFT JOIN w_correspondances_finess ON w_t_etages.finess_id = w_correspondances_finess.oid_source + WHERE w_t_etages.oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_etages WHERE oid = w_t_etages.oid + [IPX]); + + UPDATE activite.t_etages SET + texte = t_etages_source.texte, + texte_court = t_etages_source.texte_court + FROM w_t_etages t_etages_source + WHERE t_etages.oid = t_etages_source.oid + [IPX] AND + ( + t_etages.texte IS DISTINCT FROM t_etages_source.texte OR + t_etages.texte_court IS DISTINCT FROM t_etages_source.texte_court + ) + ; + + UPDATE activite.t_etages + SET finess_id = w_correspondances_finess.oid + FROM w_t_etages i_etages + JOIN w_correspondances_finess ON i_etages.finess_id = w_correspondances_finess.oid_source + WHERE t_etages.oid = i_etages.oid + [IPX] AND + t_etages.finess_id <> w_correspondances_finess.oid + ; + + INSERT INTO activite.p_consolidation_translation (from_database, table_code, from_id, from_code, to_id, to_code) + SELECT + '[DBNAME]'::text AS from_database, + 'ETAGE'::text AS table_code, + oid AS from_id, + code AS from_code, + oid + [IPX] AS to_oid, + '[CPX]' || code AS to_code + FROM w_t_etages + WHERE oid <> 0 + ; + + + INSERT INTO activite.t_lits(oid, code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0, 'N' WHERE NOT EXISTS (SELECT 1 FROM activite.t_lits WHERE oid = 0); + + -- Mise à jour préalable des codes s'ils ont été modifiés dans l'environnement source + SELECT base.cti_stash_table_constraints('activite.t_lits'); + + DELETE FROM activite.t_lits WHERE code like '[CPX]' || '%' AND NOT EXISTS (SELECT 1 FROM activite.t_lits WHERE oid = t_lits.oid - [IPX]); + + UPDATE activite.t_lits SET + code = '[CPX]' || w_lits.code, + code_original = w_lits.oid + [IPX], + texte = w_lits.texte, + texte_court = w_lits.texte_court, + chambre_particuliere = w_lits.chambre_particuliere, + etage_id = CASE WHEN w_lits.etage_id <> 0 THEN w_lits.etage_id + [IPX] ELSE 0 END + FROM + t_lits w_lits + WHERE 1=1 + AND t_lits.oid = w_lits.oid + [IPX] + AND ( + t_lits.code::text IS DISTINCT FROM ('[CPX]'::text || w_lits.code::text) OR + t_lits.chambre_particuliere IS DISTINCT FROM w_lits.chambre_particuliere OR + (w_lits.etage_id <> 0 AND t_lits.etage_id != (w_lits.etage_id + [IPX]))) + ; + + SELECT base.cti_stash_pop_table_constraints('activite.t_lits'); + + -- Ajout des nouveaux codes + INSERT INTO activite.t_lits( + oid, + code, + code_original, + texte, + texte_court, + chambre_particuliere, + etage_id) + SELECT + oid + [IPX], + '[CPX]' || code, + oid + [IPX] AS code_original, + texte, + texte_court, + chambre_particuliere, + CASE WHEN etage_id <> 0 THEN etage_id + [IPX] ELSE 0 END AS etage_id + FROM t_lits + WHERE oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_lits WHERE oid = t_lits.oid + [IPX]); + + INSERT INTO activite.p_consolidation_translation (from_database, table_code, from_id, from_code, to_id, to_code) + SELECT + '[DBNAME]'::text AS from_database, + 'LIT'::text AS table_code, + oid AS from_id, + code AS from_code, + oid + [IPX] AS to_oid, + '[CPX]' || code AS to_code + FROM t_lits + WHERE oid <> 0 + ; + + -- Historique des places + DELETE FROM activite.t_etages_historique WHERE etage_id BETWEEN [IPX] AND [IPX] + 900000000000; + INSERT INTO activite.t_etages_historique( + etage_id, + date, + pole_occupation_id, + nb_lits_theoriques, + nb_lits_cp_theoriques, + nb_lits_ouverts, + nb_lits_cp_ouverts, + est_ouvert_1, + est_ouvert_2, + est_ouvert_3, + est_ouvert_4, + est_ouvert_5, + est_ouvert_6, + est_ouvert_7, + heberge_hospitalises, + heberge_ambulatoires, + heberge_externes, + heberge_bebes, + heberge_urgences, + date_fin, + nb_box_ambulatoires_theoriques, + nb_box_ambulatoires_ouverts, + nb_box_seances_theoriques, + nb_box_seances_ouverts) + SELECT + etage_id + [IPX], + date, + COALESCE(w_correspondances_pole.oid, 0) AS pole_occupation_id, + nb_lits_theoriques, + nb_lits_cp_theoriques, + nb_lits_ouverts, + nb_lits_cp_ouverts, + est_ouvert_1, + est_ouvert_2, + est_ouvert_3, + est_ouvert_4, + est_ouvert_5, + est_ouvert_6, + est_ouvert_7, + heberge_hospitalises, + heberge_ambulatoires, + heberge_externes, + heberge_bebes, + heberge_urgences, + date_fin, + nb_box_ambulatoires_theoriques, + nb_box_ambulatoires_ouverts, + nb_box_seances_theoriques, + nb_box_seances_ouverts + FROM t_etages_historique + LEFT JOIN w_correspondances_pole ON pole_occupation_id = w_correspondances_pole.oid_source; + + + DELETE FROM activite.t_lit_historique WHERE lit_id BETWEEN [IPX] AND [IPX] + 900000000000; + INSERT INTO activite.t_lit_historique( + lit_id, + date_debut, + date_fin, + etage_id) + + SELECT + lit_id + [IPX], + date_debut, + date_fin, + etage_id + [IPX] + FROM t_lit_historique; + + ]]> + + + + ''CDAM'' + ', 'temp w_t_actes' + ); + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT * + FROM base.t_lpp + ', 'temp t_lpp' + ); + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT * + FROM base.t_ucd + ', 'temp t_ucd' + ); + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT * + FROM activite.t_rejets_noemie + ', 'temp t_rejets_noemie' + ); + + + + DROP TABLE IF EXISTS w_correspondances_ghs; + CREATE TEMP TABLE w_correspondances_ghs AS + SELECT + t_ghs_source.oid AS oid_source, + coalesce(t_ghs.oid,0) AS oid + FROM t_ghs AS t_ghs_source + LEFT JOIN base.t_ghs ON t_ghs_source.code = t_ghs.code; + + CREATE INDEX w_correspondances_ghs_1 + ON w_correspondances_ghs + USING btree + (oid_source); + + + + DROP TABLE IF EXISTS w_correspondances_ghm; + CREATE TEMP TABLE w_correspondances_ghm AS + SELECT + t_ghm_source.oid AS oid_source, + coalesce(t_ghm.oid,0) AS oid + FROM t_ghm AS t_ghm_source + LEFT JOIN base.t_ghm ON t_ghm_source.code = t_ghm.code; + + CREATE INDEX w_correspondances_ghm_1 + ON w_correspondances_ghm + USING btree + (oid_source); + + DROP TABLE IF EXISTS w_correspondances_gme; + CREATE TEMP TABLE w_correspondances_gme AS + SELECT + t_gme_source.oid AS oid_source, + coalesce(t_gme.oid,0) AS oid + FROM t_gme AS t_gme_source + LEFT JOIN base.t_gme ON t_gme_source.code = t_gme.code; + + CREATE INDEX w_correspondances_gme_1 + ON w_correspondances_gme + USING btree + (oid_source); + + + + + + INSERT INTO activite.t_rubriques_facturation(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE NOT EXISTS (SELECT 1 FROM activite.t_rubriques_facturation WHERE oid = 0); + + UPDATE activite.t_rubriques_facturation SET + code = '#'::text || '[CPX]' || src.code, + texte = src.texte, + texte_court = src.texte_court + FROM w_t_rubriques_facturation src + WHERE t_rubriques_facturation.oid = (src.oid + [IPX]) AND + ( + t_rubriques_facturation.code IS DISTINCT FROM ('[CPX]' || src.code) OR + t_rubriques_facturation.texte IS DISTINCT FROM src.texte OR + t_rubriques_facturation.texte_court IS DISTINCT FROM src.texte_court + ) + ; + + UPDATE activite.t_rubriques_facturation SET + code = '[CPX]' || src.code, + texte = src.texte, + texte_court = src.texte_court + FROM w_t_rubriques_facturation src + WHERE t_rubriques_facturation.oid = (src.oid + [IPX]) AND + ( + t_rubriques_facturation.code IS DISTINCT FROM ('[CPX]' || src.code) OR + t_rubriques_facturation.texte IS DISTINCT FROM src.texte OR + t_rubriques_facturation.texte_court IS DISTINCT FROM src.texte_court + ) + ; + + INSERT INTO activite.t_rubriques_facturation( + oid, + code, + code_original, + texte, + texte_court) + SELECT + oid + [IPX], + '[CPX]' || code, + oid + [IPX] AS code_original, + texte, + texte_court + FROM w_t_rubriques_facturation + WHERE oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_rubriques_facturation WHERE oid = w_t_rubriques_facturation.oid + [IPX]); + + INSERT INTO activite.p_consolidation_translation (from_database, table_code, from_id, from_code, to_id, to_code) + SELECT + '[DBNAME]'::text AS from_database, + 'RUBRIQUE'::text AS table_code, + oid AS from_id, + code AS from_code, + oid + [IPX] AS to_oid, + '[CPX]' || code AS to_code + FROM w_t_rubriques_facturation + WHERE oid <> 0 + ; + + INSERT INTO activite.t_prestations(oid, code_original, code, texte, texte_court, clinique_honoraire) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée', '' WHERE NOT EXISTS (SELECT 1 FROM activite.t_prestations WHERE oid = 0); + + INSERT INTO activite.t_prestations( + code, + code_original, + texte, + texte_court, + clinique_honoraire) + SELECT + code, + code_original, + texte, + texte_court, + clinique_honoraire + FROM t_prestations + WHERE oid <> 0 AND + NOT EXISTS (SELECT 1 FROM activite.t_prestations t_prestations_c WHERE t_prestations_c.code = t_prestations.code); + + + DROP TABLE IF EXISTS w_correspondances_prestations; + CREATE TEMP TABLE w_correspondances_prestations AS + SELECT + t_prestations_source.oid AS oid_source, + coalesce(t_prestations.oid,0) AS oid + FROM t_prestations AS t_prestations_source + LEFT JOIN activite.t_prestations ON t_prestations_source.code = t_prestations.code; + + CREATE INDEX w_correspondances_prestations_1 + ON w_correspondances_prestations + USING btree + (oid_source); + + + INSERT INTO activite.t_compte(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE NOT EXISTS (SELECT 1 FROM activite.t_compte WHERE oid = 0); + + DROP TABLE IF EXISTS c_compte; + CREATE TEMP TABLE c_compte AS + SELECT + oid, + code, + MAX(texte) as texte, + MAX(texte_court) as texte_court, + ''::text AS texte_soundex, + ''::text AS to_code, + 0::bigint AS to_oid + FROM t_compte + GROUP BY 1,2; + + UPDATE c_compte SET texte_soundex = base.cti_soundex_nom(lower(texte)); + + DROP TABLE IF EXISTS w_compte_to; + CREATE TEMP TABLE w_compte_to AS + SELECT + *, + ''::text AS texte_soundex + FROM activite.t_compte; + + UPDATE w_compte_to SET texte_soundex = base.cti_soundex_nom(lower(texte)); + + UPDATE c_compte + SET to_oid = oid + [IPX], + to_code = code + WHERE NOT EXISTS (SELECT 1 FROM w_compte_to WHERE code = c_compte.code); + + UPDATE c_compte + SET to_oid = w_compte_to.oid, + to_code = c_compte.code + FROM w_compte_to + WHERE to_oid = 0 AND + c_compte.code = w_compte_to.code AND + c_compte.texte_soundex = w_compte_to.texte_soundex; + + UPDATE c_compte + SET to_oid = oid + [IPX], + to_code = code || '_[PX]' + WHERE to_oid = 0; + + ALTER TABLE c_compte ADD CONSTRAINT c_compte_pkey PRIMARY KEY(oid); + + UPDATE activite.t_compte SET code_original = '#'||oid WHERE code_original <> oid::text; + UPDATE activite.t_compte SET code_original = oid WHERE code_original <> oid::text; + + INSERT INTO activite.t_compte( + oid, + code, + code_original, + texte, + texte_court) + SELECT + to_oid, + to_code, + to_oid::text AS code_original, + texte, + texte_court + FROM c_compte + WHERE oid != 0 AND NOT EXISTS (SELECT 1 FROM activite.t_compte WHERE t_compte.oid = c_compte.to_oid); + ; + + DROP TABLE IF EXISTS w_correspondances_compte; + CREATE TEMP TABLE w_correspondances_compte AS + SELECT + t_compte_source.oid AS oid_source, + MAX(coalesce(t_compte.oid,0)) AS oid + FROM c_compte AS t_compte_source + LEFT JOIN activite.t_compte ON t_compte_source.to_code = t_compte.code + GROUP BY 1; + + CREATE INDEX w_correspondances_compte_1 + ON w_correspondances_compte + USING btree + (oid_source); + + + + INSERT INTO activite.t_protocoles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné' WHERE NOT EXISTS (SELECT 1 FROM activite.t_protocoles WHERE oid = 0); + + UPDATE activite.t_protocoles SET + code = '[CPX]'::text || prot_px.code::text, + texte = prot_px.texte, + texte_court = prot_px.texte + FROM + w_t_protocoles prot_px + WHERE 1=1 + AND t_protocoles.oid = (prot_px.oid + [IPX]) + AND ((t_protocoles.code::text <> ('[CPX]'::text || prot_px.code::text)) OR (t_protocoles.texte <> prot_px.texte)); + + INSERT INTO activite.t_protocoles( + oid, + code, + code_original, + texte, + texte_court) + SELECT + oid + [IPX], + '[CPX]' || code, + oid + [IPX] AS code_original, + texte, + texte_court + FROM w_t_protocoles + WHERE oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_protocoles WHERE oid = w_t_protocoles.oid + [IPX]) + AND NOT EXISTS (SELECT 1 FROM activite.t_protocoles WHERE activite.t_protocoles.code = '[CPX]' || w_t_protocoles.code); + + + + DROP TABLE IF EXISTS w_correspondances_ccam_regroupements; + CREATE TEMP TABLE w_correspondances_ccam_regroupements AS + SELECT + t_ccam_regroupements_source.oid AS oid_source, + coalesce(t_ccam_regroupements.oid,0) AS oid + FROM t_ccam_regroupements AS t_ccam_regroupements_source + LEFT JOIN base.t_ccam_regroupements ON t_ccam_regroupements_source.code = t_ccam_regroupements.code; + + CREATE INDEX w_correspondances_ccam_regroupements_1 + ON w_correspondances_ccam_regroupements + USING btree + (oid_source); + + + + INSERT INTO base.t_actes( + code, + texte, + texte_court, + nomenclature, + ccam_regroupement_id_1, + ccam_regroupement_id_4) + SELECT + code, + texte, + texte_court, + nomenclature, + COALESCE(w_correspondances_ccam_regroupements_1.oid,0), + COALESCE(w_correspondances_ccam_regroupements_4.oid,0) + FROM w_t_actes + LEFT JOIN w_correspondances_ccam_regroupements w_correspondances_ccam_regroupements_1 ON ccam_regroupement_id_1 = w_correspondances_ccam_regroupements_1.oid_source + LEFT JOIN w_correspondances_ccam_regroupements w_correspondances_ccam_regroupements_4 ON ccam_regroupement_id_4 = w_correspondances_ccam_regroupements_4.oid_source + WHERE w_t_actes.oid <> 0 AND + NOT EXISTS (SELECT 1 FROM base.t_actes WHERE code = w_t_actes.code); + + + DROP TABLE IF EXISTS w_correspondances_actes; + CREATE TEMP TABLE w_correspondances_actes AS + SELECT + t_actes_source.oid AS oid_source, + coalesce(t_actes.oid,0) AS oid + FROM w_t_actes AS t_actes_source + LEFT JOIN base.t_actes ON t_actes_source.code = t_actes.code; + + CREATE INDEX w_correspondances_actes_1 + ON w_correspondances_actes + USING btree + (oid_source); + + + INSERT INTO base.t_lpp( + code, + texte, + texte_court) + SELECT + code, + texte, + texte_court + FROM t_lpp + WHERE t_lpp.oid <> 0 AND + NOT EXISTS (SELECT 1 FROM base.t_lpp WHERE code = t_lpp.code); + + + DROP TABLE IF EXISTS w_correspondances_lpp; + CREATE TEMP TABLE w_correspondances_lpp AS + SELECT + t_lpp_source.oid AS oid_source, + coalesce(t_lpp.oid,0) AS oid + FROM t_lpp AS t_lpp_source + LEFT JOIN base.t_lpp ON t_lpp_source.code = t_lpp.code; + + CREATE INDEX w_correspondances_lpp_1 + ON w_correspondances_lpp + USING btree + (oid_source); + + + INSERT INTO base.t_ucd( + code, + texte, + texte_court) + SELECT + code, + texte, + texte_court + FROM t_ucd + WHERE t_ucd.oid <> 0 AND + NOT EXISTS (SELECT 1 FROM base.t_ucd WHERE code = t_ucd.code); + + + DROP TABLE IF EXISTS w_correspondances_ucd; + CREATE TEMP TABLE w_correspondances_ucd AS + SELECT + t_ucd_source.oid AS oid_source, + coalesce(t_ucd.oid,0) AS oid + FROM t_ucd AS t_ucd_source + LEFT JOIN base.t_ucd ON t_ucd_source.code = t_ucd.code; + + CREATE INDEX w_correspondances_ucd_1 + ON w_correspondances_ucd + USING btree + (oid_source); + + + + INSERT INTO activite.t_rejets_noemie( + code, + texte) + SELECT + code, + texte + FROM t_rejets_noemie + WHERE oid <> 0 AND NOT EXISTS (SELECT 1 FROM activite.t_rejets_noemie WHERE code || texte = t_rejets_noemie.code || t_rejets_noemie.texte); + + + DROP TABLE IF EXISTS w_correspondances_rejets_noemie; + CREATE TEMP TABLE w_correspondances_rejets_noemie AS + SELECT + t_rejets_noemie_source.oid AS oid_source, + coalesce(t_rejets_noemie.oid,0) AS oid + FROM t_rejets_noemie AS t_rejets_noemie_source + LEFT JOIN activite.t_rejets_noemie ON + t_rejets_noemie_source.code = t_rejets_noemie.code AND + t_rejets_noemie_source.texte = t_rejets_noemie.texte; + + CREATE INDEX w_correspondances_rejets_noemie_1 + ON w_correspondances_rejets_noemie + USING btree + (oid_source); + + + ]]> + + + + + ''1'' AND t_listes.code <> '''' + ', 'temp e_listes' + ); + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT * FROM activite.t_listes_contenu + ', 'temp e_listes_contenu' + ); + + UPDATE e_listes + SET ok_liste = '1' + WHERE table_code IN ('MEDECIN','RUBRIQUE','ETAGE','SERVICE_F','COMPTE') AND + EXISTS (SELECT 1 FROM activite.t_listes WHERE code = e_listes.code) + ; + + + DELETE FROM activite.t_listes_contenu + WHERE EXISTS + ( + SELECT 1 FROM activite.t_listes + JOIN activite.t_listes_tables ON t_listes.table_id = t_listes_tables.oid + JOIN e_listes ON t_listes.code = e_listes.code AND + t_listes_tables.code = table_code + WHERE ok_liste = '1' AND activite.t_listes_contenu.liste_id = t_listes.oid + ) AND + to_id BETWEEN [IPX] AND ([IPX] + 999999999999) + ; + + + + INSERT INTO activite.t_listes_contenu (liste_id, to_id) + SELECT + t_listes.oid, + [IPX] + to_id + FROM e_listes_contenu + JOIN e_listes ON e_listes_contenu.liste_id = e_listes.oid + JOIN activite.t_listes ON t_listes.code = e_listes.code + JOIN activite.t_listes_tables ON t_listes.table_id = t_listes_tables.oid AND t_listes_tables.code = e_listes.table_code + WHERE ok_liste = '1' + ; + + + + + -- Classes + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT + t_classes.oid, + t_classes.code, + t_listes_tables.code AS table_code, + ''0''::text AS ok_classe + FROM activite.t_classes + JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid + WHERE EXISTS + ( + SELECT 1 + FROM activite.t_classes_sections + JOIN activite.t_classes_sections_elements ON section_id = t_classes_sections.oid + WHERE classe_id = t_classes.oid + ) + AND t_classes.code <> '''' + AND contenu_by_code <> ''1'' + ', 'temp e_classes' + ); + + + UPDATE e_classes + SET ok_classe = '1' + WHERE table_code IN ('MEDECIN','RUBRIQUE','ETAGE','SERVICE_F','COMPTE') AND + EXISTS (SELECT 1 FROM activite.t_classes WHERE code = e_classes.code) + ; + + + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT + classe_id, + t_classes_sections.oid, + t_classes_sections.code, + t_classes_sections.texte + FROM activite.t_classes_sections + + ', 'temp e_classes_sections' + ); + + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT + section_id, + t_classes_sections_elements.to_id + FROM activite.t_classes_sections_elements + + ', 'temp e_classes_sections_elements' + ); + + + INSERT INTO activite.t_classes_sections (code, texte, classe_id) + SELECT e_classes_sections.code, e_classes_sections.texte, t_classes.oid + FROM e_classes_sections + JOIN e_classes ON e_classes_sections.classe_id = e_classes.oid AND e_classes.ok_classe = '1' + JOIN activite.t_listes_tables ON e_classes.table_code = t_listes_tables.code + JOIN activite.t_classes ON e_classes.code = t_classes.code AND t_classes.table_id = t_listes_tables.oid + LEFT JOIN activite.t_classes_sections ON t_classes.oid = t_classes_sections.classe_id AND + t_classes_sections.code = e_classes_sections.code + WHERE t_classes_sections.oid IS NULL + ; + + + DELETE FROM activite.t_classes_sections_elements + WHERE EXISTS + ( + SELECT 1 + FROM activite.t_classes + JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid + JOIN e_classes ON t_classes.code = e_classes.code AND + t_listes_tables.code = table_code + JOIN activite.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid + WHERE ok_classe = '1' AND section_id = t_classes_sections.oid + ) AND + to_id BETWEEN [IPX] AND ([IPX] + 999999999999) + ; + + + INSERT INTO activite.t_classes_sections_elements (section_id, to_id) + SELECT + t_classes_sections.oid, + [IPX] + to_id + FROM e_classes_sections_elements + JOIN e_classes_sections ON e_classes_sections_elements.section_id = e_classes_sections.oid + JOIN e_classes ON e_classes.oid = e_classes_sections.classe_id AND ok_classe = '1' + JOIN activite.t_classes ON e_classes.code = t_classes.code + JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid AND + e_classes.table_code = t_listes_tables.code + JOIN activite.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid AND + t_classes_sections.code = e_classes_sections.code + GROUP BY 1,2 + ; + + + ]]> + + + + + '''' AND contenu_by_code <> ''1'' + ', 'temp e_listes' + ); + + UPDATE e_listes + SET ok_liste = '1' + WHERE table_code IN ('MEDECIN','RUBRIQUE','ETAGE','SERVICE_F','UF') AND + EXISTS (SELECT 1 FROM activite.t_listes WHERE code = e_listes.code) + ; + + -- Recopie contenu vers environnement établissement + SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', + ( + SELECT base.cti_group_concat_without_sep(sqlcmd) + FROM + ( + SELECT '1', 'DELETE FROM activite.t_listes_contenu WHERE liste_id IN ('|| + (SELECT base.cti_group_concat(oid::text) FROM e_listes WHERE ok_liste = '1')|| + ')., ' AS sqlcmd + UNION + SELECT '2', 'INSERT INTO activite.t_listes_contenu(liste_id, to_id) VALUES('||e_listes.oid||', '||t_listes_contenu.to_id - [IPX]||')., ' + FROM activite.t_listes + JOIN activite.t_listes_tables On t_listes.table_id = t_listes_tables.oid + JOIN e_listes ON e_listes.code = t_listes.code AND + e_listes.table_code = t_listes_tables.code + JOIN activite.t_listes_contenu ON t_listes.oid = t_listes_contenu.liste_id AND + to_id BETWEEN [IPX] AND ([IPX] + 999999999999) + WHERE ok_liste = '1' + ORDER BY 1 + ) subview + ), + true); + + + -- classes + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT + t_classes.oid, + t_classes.code, + t_listes_tables.code AS table_code, + ''0''::text AS ok_classe + FROM activite.t_classes + JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid + WHERE contenu_by_code <> ''1'' AND t_classes.code <> '''' + ', 'temp e_classes' + ); + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT + classe_id, + t_classes_sections.oid, + t_classes_sections.code, + t_classes_sections.texte + FROM activite.t_classes_sections + + ', 'temp e_classes_sections' + ); + + + + UPDATE e_classes + SET ok_classe = '1' + WHERE table_code IN ('MEDECIN','RUBRIQUE','ETAGE','SERVICE_F','UF','UM') AND + EXISTS (SELECT 1 FROM activite.t_classes WHERE code = e_classes.code) AND + code NOT IN ('CTI_MEDLIBSAL') + ; + + -- Creation des sections inexistantes + SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', + ( + SELECT base.cti_group_concat_without_sep(sqlcmd) + FROM + ( + SELECT '1', 'INSERT INTO activite.t_classes_sections (classe_id, code, texte) VALUES('||e_classes.oid||', '''||replace(t_classes_sections.code,'''','''''')||''','''||replace(t_classes_sections.texte,'''','''''')||''').,' AS sqlcmd + FROM activite.t_classes + JOIN activite.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid + JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid + JOIN e_classes ON t_classes.code = e_classes.code AND + e_classes.table_code = t_listes_tables.code AND + ok_classe = '1' + LEFT JOIN e_classes_sections ON e_classes_sections.code = t_classes_sections.code AND + e_classes_sections.classe_id = e_classes.oid + WHERE e_classes_sections.oid IS NULL + UNION + SELECT '2', 'UPDATE activite.t_classes_sections SET texte = ''' || replace(t_classes_sections.texte,'''','''''')||''' WHERE oid = ' || e_classes_sections.oid || '.,' AS sqlcmd + FROM activite.t_classes + JOIN activite.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid + JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid + JOIN e_classes ON t_classes.code = e_classes.code AND + e_classes.table_code = t_listes_tables.code AND + ok_classe = '1' + JOIN e_classes_sections ON e_classes_sections.code = t_classes_sections.code AND + e_classes_sections.classe_id = e_classes.oid + WHERE e_classes_sections.texte IS DISTINCT FROM t_classes_sections.texte + ORDER BY 1 + ) subview + ), + true) + ; + + SELECT base.cti_copy_table('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', ' + SELECT + classe_id, + t_classes_sections.oid, + t_classes_sections.code, + t_classes_sections.texte + FROM activite.t_classes_sections + + ', 'temp e_classes_sections' + ); + + SELECT dblink_exec('dbname=[DBNAME] port=[DBPORT] host=[DBHOST] user=[DBUSERNAME] password=[DBPASSWORD]', + ( + SELECT base.cti_group_concat_without_sep(sqlcmd) + FROM + ( + SELECT '1', 'DELETE FROM activite.t_classes_sections_elements WHERE section_id IN ('|| + (SELECT base.cti_group_concat(e_classes_sections.oid::text) FROM e_classes_sections JOIN e_classes ON e_classes.oid = e_classes_sections.classe_id WHERE ok_classe = '1')|| + ')., ' AS sqlcmd + UNION + SELECT '2', 'INSERT INTO activite.t_classes_sections_elements(section_id, to_id) VALUES('||e_classes_sections.oid||', '||t_classes_sections_elements.to_id - [IPX] || ')., ' + FROM activite.t_classes + JOIN activite.t_classes_sections ON t_classes_sections.classe_id = t_classes.oid + JOIN activite.t_classes_sections_elements ON t_classes_sections_elements.section_id = t_classes_sections.oid + JOIN activite.t_listes_tables ON t_classes.table_id = t_listes_tables.oid + JOIN e_classes ON t_classes.code = e_classes.code AND + e_classes.table_code = t_listes_tables.code AND + ok_classe = '1' + JOIN e_classes_sections ON e_classes_sections.code = t_classes_sections.code AND + e_classes_sections.classe_id = e_classes.oid + WHERE t_classes_sections_elements.to_id BETWEEN [IPX] AND ([IPX] + 999999999999) + ORDER BY 1 + ) subview + ), + true) + ; + + + ]]> + + + + + + + + = 20100101 AND to_char(date_sortie, 'YYYYMM')::numeric <= to_char(now() + interval '1 month', 'YYYYMM')::numeric + ) subview + ; + + DELETE FROM activite.p_chiffrier WHERE mois > to_char(now() + interval '1 month', 'YYYYMM')::numeric + ; + + ]]> + + + + 0 + GROUP BY 1,2 + ORDER BY 1,2 + ) subview + GROUP BY 1; + + UPDATE activite.p_factures_reference + SET retard_groupage = w_retard_groupage_coefficient.retard_groupage + FROM activite.p_sejours + JOIN w_retard_groupage_coefficient ON w_retard_groupage_coefficient.type_sejour = p_sejours.type_sejour + WHERE p_factures_reference.no_sejour = p_sejours.no_sejour AND + p_factures_reference.retard_groupage <> 0; + + UPDATE activite.p_factures_reference + SET retard_groupage = w_retard_groupage_coefficient.retard_groupage + FROM activite.p_sejours + JOIN w_retard_groupage_coefficient ON w_retard_groupage_coefficient.type_sejour = p_sejours.type_sejour + WHERE p_factures_reference.no_sejour = p_sejours.no_sejour AND + p_factures_reference.retard_groupage <> 0; + + + + + -- Recalcul des retards facture (moyens) en prenant le max par etablissement et type séjour + -- pour que le total soit coherent + DROP TABLE IF EXISTS w_retard_facture_coefficient; + CREATE TEMP TABLE w_retard_facture_coefficient AS + SELECT + type_sejour, + base.cti_division(MAX(retard_facture) , SUM(nb)) AS retard_facture + FROM + ( + SELECT finess, + type_sejour, + SUM(retard_facture) AS retard_facture, + count(*) AS nb + FROM activite.p_factures_reference + JOIN activite.p_sejours ON p_factures_reference.no_sejour = p_sejours.no_sejour + WHERE retard_facture <> 0 + GROUP BY 1,2 + ORDER BY 1,2 + ) subview + GROUP BY 1; + + UPDATE activite.p_factures_reference + SET retard_facture = w_retard_facture_coefficient.retard_facture + FROM activite.p_sejours + JOIN w_retard_facture_coefficient ON w_retard_facture_coefficient.type_sejour = p_sejours.type_sejour + WHERE p_factures_reference.no_sejour = p_sejours.no_sejour AND + p_factures_reference.retard_facture <> 0; + + UPDATE activite.p_factures_reference + SET retard_facture = w_retard_facture_coefficient.retard_facture + FROM activite.p_sejours + JOIN w_retard_facture_coefficient ON w_retard_facture_coefficient.type_sejour = p_sejours.type_sejour + WHERE p_factures_reference.no_sejour = p_sejours.no_sejour AND + p_factures_reference.retard_facture <> 0; + + ]]> + + + + + = date_entree + AND date_sortie < '2099-12-31'::date + GROUP BY 2 + ORDER BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'c_postaux', code_postal_id + FROM activite.p_sejours + WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'c_postaux' AND oid = code_postal_id) + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'medecin_s', medecin_sejour_id + FROM activite.p_sejours + WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'medecin_s' AND oid = medecin_sejour_id) + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'medecin_s', medecin_sejour_id + FROM activite.p_mouvements_sejour + WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'medecin_s' AND oid = medecin_sejour_id) + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'forme_activite', forme_activite_id + FROM activite.p_sejours + WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'forme_activite' AND oid = forme_activite_id) + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'ghs', ghs_id + FROM activite.p_sejours + WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'ghs' AND oid = ghs_id) + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'ghs', ghs_id + FROM activite.p_factures + WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'ghs' AND oid = ghs_id) + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'medecin_x', medecin_facture_id + FROM activite.p_factures_lignes_h + WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'medecin_x' AND oid = medecin_facture_id) + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'rubrique_c', rubrique_facturation_id + FROM activite.p_factures_lignes_c WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'rubrique_c' AND oid = rubrique_facturation_id) + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'rubrique_c', rubrique_comptabilisation_id + FROM activite.p_factures_lignes_c WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'rubrique_c' AND oid = rubrique_comptabilisation_id) + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'rubrique_c', rubrique_comptabilisee_id + FROM activite.p_factures_soldes_c WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'rubrique_c' AND oid = rubrique_comptabilisee_id) + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'prestation_c', prestation_id + FROM activite.p_factures_lignes_c WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'prestation_c' AND oid = prestation_id) + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'lpp', lpp_id + FROM activite.p_factures_lignes_c WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'lpp' AND oid = lpp_id) + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'ucd', ucd_id + FROM activite.p_factures_lignes_c WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'ucd' AND oid = ucd_id) + GROUP BY 2; + + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'prestation_c', prestation_id + FROM activite.p_factures_soldes_c WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'prestation_c' AND oid = prestation_id) + GROUP BY 2; + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'prestation_h', prestation_id + FROM activite.p_factures_lignes_h WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'prestation_h' AND oid = prestation_id) + GROUP BY 2; + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'acte_h', acte_id + FROM activite.p_factures_lignes_h WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'acte_h' AND oid = acte_id) + GROUP BY 2; + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'tiers_payant', tiers_payant_0_id + FROM activite.p_factures WHERE tiers_payant_0_id <> 0 AND NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'tiers_payant' AND oid = tiers_payant_0_id) + GROUP BY 2; + + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'tiers_payant', tiers_payant_1_id + FROM activite.p_factures WHERE tiers_payant_1_id <> 0 AND NOT EXISTS (SELECT 1 + FROM activite.p_oids WHERE code_table = 'tiers_payant' AND oid = tiers_payant_1_id) + GROUP BY 2; + + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'tiers_payant', tiers_payant_2_id + FROM activite.p_factures WHERE tiers_payant_2_id <> 0 AND NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'tiers_payant' AND oid = tiers_payant_2_id) + GROUP BY 2; + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'tiers_payant', tiers_payant_22_id + FROM activite.p_factures WHERE tiers_payant_22_id <> 0 AND NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'tiers_payant' AND oid = tiers_payant_22_id) + GROUP BY 2; + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'mode_traitement', t_services_facturation.mode_traitement_id + FROM activite.t_lieux JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE + NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'mode_traitement' AND oid IS NOT NULL AND oid = t_services_facturation.mode_traitement_id) AND t_services_facturation.mode_traitement_id IS NOT NULL + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'lit', lit_id + FROM activite.t_lieux WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'lit' AND oid = lit_id) + GROUP BY 2; + + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'service', service_facturation_id + FROM activite.t_lieux WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'service' AND oid = service_facturation_id) + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'etage', etage_id + FROM activite.t_lieux, activite.t_lits WHERE lit_id = t_lits.oid AND NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'etage' AND oid = etage_id) + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'uf', unite_fonctionnelle_id + FROM activite.t_lieux WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'uf' AND oid = unite_fonctionnelle_id) + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'um', unite_medicale_id + FROM activite.t_lieux WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'um' AND oid = unite_medicale_id) + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'pole', pole_id + FROM activite.p_sejour_lieu + WHERE NOT EXISTS (SELECT 1 FROM activite.p_oids WHERE code_table = 'pole' AND oid = pole_id) + GROUP BY 2; + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/import_activite/iCTI_import_activite_CONSOLIDATION.exe b/import_activite/iCTI_import_activite_CONSOLIDATION.exe new file mode 100644 index 0000000..a342139 Binary files /dev/null and b/import_activite/iCTI_import_activite_CONSOLIDATION.exe differ diff --git a/import_activite/iCTI_import_activite_CONSOLIDATION.php b/import_activite/iCTI_import_activite_CONSOLIDATION.php new file mode 100644 index 0000000..da20ef9 --- /dev/null +++ b/import_activite/iCTI_import_activite_CONSOLIDATION.php @@ -0,0 +1,288 @@ +args["-e"])) { + $i_env = trim($cti_args->args["-e"]); + } + + $cti_sqlStatements = new CTI_SqlStatements_class("iCTI_import_activite_CONSOLIDATION.XML",$iCTI_connexion,$environmentVars,$sqlOptions); + + if ($i_env == "") { + $cti_sqlStatements->executeStatementsNode("DISABLE_INDEX"); + $cti_sqlStatements->executeStatementsNode("RAZ"); + } + + foreach ($environments_array as $environment_array) { + if ($i_env == "" || $i_env == $environment_array["PREFIX_CODE"] || $i_env == $environment_array["PREFIX_OID"]) { + $environmentVars=array(); + $environmentVars["MODE"] = "RAZ"; + if ($i_env != "") { + $environmentVars["MODE"] = "UPDATE"; + } + $environmentVars["DBNAME"] = $environment_array["dbname"]; + $environmentVars["DBHOST"] = $environment_array["dbhost"]; + $environmentVars["DBPORT"] = $environment_array["dbport"]; + $environmentVars["DBUSERNAME"] = $environment_array["dbusername"]; + $environmentVars["DBPASSWORD"] = $environment_array["dbpassword"]; + $environmentVars["FINESS"] = $environment_array["finess"]; + $environmentVars["FINESS_TEXTE"] = $environment_array["texte"]; + $environmentVars["KEEP_FINESS"] = $environment_array["keep_finess"]; + $environmentVars["SENSPARAMETRE_CLASSE"] = $PROPERTY_SENSPARAMETRE_CLASSE; + $environmentVars["TPX"] = $environment_array["PREFIX_CODE"] . "_"; + $environmentVars["CPX"] = $environment_array["PREFIX_CODE"] . "_"; + $environmentVars["IPX"] = $environment_array["PREFIX_OID"] . "000000000000"; + $environmentVars["PPX"] = $environment_array["PREFIX_OID"]; + $environmentVars["PX"] = $environment_array["PREFIX_CODE"]; + $environmentVars["ENV_ADM_ANNEEDEBUT"] = $ENV_ADM_ANNEEDEBUT; + $cti_sqlStatements_env = new CTI_SqlStatements_class("iCTI_import_activite_CONSOLIDATION.XML",$iCTI_connexion,$environmentVars,$sqlOptions); + $cti_sqlStatements_env->executeStatementsNode("INIT"); + $cti_sqlStatements_env->executeStatementsNode("PARAM"); + $cti_sqlStatements_env->executeStatementsNode("SEJOUR"); + $cti_sqlStatements_env->executeStatementsNode("FACTURE"); + $cti_sqlStatements_env->executeStatementsNode("CHIFFRIER"); + } + } + + $cti_sqlStatements->executeStatementsNode("ENABLE_INDEX"); + $cti_sqlStatements->executeStatementsNode("POST"); + $cti_sqlStatements->executeStatementsNode("VACUUM"); + +} + +function iCTI_connect() { + +global $iCTI_connexion; +global $iCTI_cache; + +global $environments_array; +global $PROPERTY_SENSPARAMETRE_CLASSE; +global $ENV_ADM_ANNEEDEBUT; + + + // Chargement des paramètres et connexion BD + $iCTI_connexion = Database2Factory::getInstance(Environnement::PROVIDER_CTI); + $ret = $iCTI_connexion->connect(); + if (!$ret) { + logErrorMsg("La connexion PostgreSQL iCTI a échoué"); + return FALSE; + } + + $file = "../../../settings/settings.XML"; + $settings_xml = simplexml_load_file($file); + + $ENV_CONSOLIDATION = "0"; + + foreach ($settings_xml->ENVIRONMENT as $environmentNode) { + foreach ($environmentNode->PROPERTY as $propertyNode) { + if ($propertyNode['name'] == 'CONSOLIDATIONACTIVITE') { + $ENV_CONSOLIDATION = $propertyNode['value']; + } + if ($propertyNode['name'] == 'OPTADM_ANNEEDEBUT') { + //Soit on utilise dans le setting une année en dur soit un nombre d'année(s) précédé de la lettre A + if (substr($propertyNode['value'],0,1)==='A'){ + //année en cours moins nombre années demandées + $nbAnnee = substr($propertyNode['value'],1); + $ENV_ADM_ANNEEDEBUT = date("Y")-intval($nbAnnee); + } else if ($propertyNode['value']!="" && strlen($propertyNode['value']) === 4) { + // si années écrit en dur + $ENV_ADM_ANNEEDEBUT = $propertyNode['value']; + } + } + } + } + + if ($ENV_CONSOLIDATION != "1") { + logErrorMsg("Environnement NON CONSOLIDE"); + return FALSE; + } + + $environment_error = FALSE; + $environments_array = array(); + $PROPERTY_SENSPARAMETRE_CLASSE = "M"; + foreach ($settings_xml->CONSOLIDATIONACTIVITE as $consolidationNode) { + foreach ($consolidationNode->PROPERTY as $propertyNode) { + if ($propertyNode['name'] == 'SENSPARAMETRE_CLASSE') { + $PROPERTY_SENSPARAMETRE_CLASSE = utf8_decode($propertyNode['value']); + } + } + if ($PROPERTY_SENSPARAMETRE_CLASSE != "D" && $PROPERTY_SENSPARAMETRE_CLASSE != "N") { + $PROPERTY_SENSPARAMETRE_CLASSE = "M"; + } + foreach ($consolidationNode->ENVIRONMENT as $environmentNode) { + + $environment_dir = ""; + $environment_finess = ""; + $environment_KEEP_FINESS = ""; + $environment_texte = ""; + $environment_host = ""; + $environment_dbname = ""; + $environment_port = ""; + $environment_username = ""; + $environment_password = ""; + $environment_PREFIX_CODE = ""; + $environment_PREFIX_OID = ""; + + foreach ($environmentNode->PROPERTY as $propertyNode) { + if ($propertyNode['name'] == 'ENVIRONMENT') { + $environment_texte = utf8_decode($propertyNode['value']); + } + if ($propertyNode['name'] == 'DIR') { + $environment_dir = $propertyNode['value']; + } + if ($propertyNode['name'] == 'PREFIX_CODE') { + $environment_PREFIX_CODE = strtoupper(trim(utf8_decode($propertyNode['value']))); + } + if ($propertyNode['name'] == 'PREFIX_OID') { + $environment_PREFIX_OID = utf8_decode($propertyNode['value']) + 0; + } + if ($propertyNode['name'] == 'KEEP_FINESS') { + $environment_KEEP_FINESS = strtoupper(trim(utf8_decode($propertyNode['value']))); + } + } + + $dbSettings = new EnvironmentDatabaseSettings($environment_dir); + try { + $dbSettings->readSettings(); + } catch (Exception $e) { + logErrorMsg($e->getMessage()); + return false; + } + + $environment_host = $dbSettings->getHost(); + $environment_port = $dbSettings->getPort(); + $environment_dbname = $dbSettings->getName(); + $environment_username = $dbSettings->getUsername(); + $environment_password = $dbSettings->getPassword(); + + if (file_exists($environment_dir . "\settings\settings.xml")) { + $environment_settings_xml = simplexml_load_file($environment_dir . "\settings\settings.xml"); + if ($environment_settings_xml) { + foreach ($environment_settings_xml->ENVIRONMENT as $toEnvironmentNode) { + foreach ($toEnvironmentNode->PROPERTY as $toPropertyNode) { + if ($toPropertyNode['name'] == 'FINESS') { + $environment_finess = trim($toPropertyNode['value']); + } + if ($toPropertyNode['name'] == 'ENVIRONMENT') { + $environment_texte = utf8_decode($toPropertyNode['value']); + } + } + } + } + } + else { + logErrorMsg("Environnement $environment_texte sur $environment_dir inexistant ou mal configuré"); + $environment_error = TRUE; + } + + if ($environment_dbname == "") { + logErrorMsg("Environnement $environment_texte sur $environment_dir inexistant ou mal configuré"); + $environment_error = TRUE; + } + else { + if ($environment_finess == "") { + logErrorMsg("Environnement $environment_texte sur $environment_dir inexistant ou mal configuré"); + $environment_error = TRUE; + } + else { + if ($environment_PREFIX_CODE == "" || $environment_PREFIX_OID == 0) { + logErrorMsg("Préfixes obligatoires ($environment_PREFIX_CODE,$environment_PREFIX_OID) pour environnement $environment_texte"); + $environment_error = TRUE; + } + else { + $environment_array = array(); + $environment_array["dir"] = $environment_dir; + $environment_array["finess"] = $environment_finess; + $environment_array["keep_finess"] = $environment_KEEP_FINESS; + $environment_array["texte"] = $environment_texte; + $environment_array["dbhost"] = $environment_host; + $environment_array["dbname"] = $environment_dbname; + $environment_array["dbport"] = $environment_port; + $environment_array["dbusername"] = $environment_username; + $environment_array["dbpassword"] = $environment_password; + $environment_array["PREFIX_CODE"] = $environment_PREFIX_CODE; + $environment_array["PREFIX_OID"] = $environment_PREFIX_OID; + $environments_array[] = $environment_array; + } + } + } + + } + } + + if ($environment_error == TRUE) { + logErrorMsg("Au moins un environnement de la consolidation n'est pas correct"); + return FALSE; + } + + return $ret; + +} + +function iCTI_disconnect() { + + global $iCTI_connexion; + + $iCTI_connexion->close(); +} + +?> \ No newline at end of file diff --git a/import_activite/iCTI_import_activite_CSIS.XML b/import_activite/iCTI_import_activite_CSIS.XML new file mode 100644 index 0000000..3e0ff07 --- /dev/null +++ b/import_activite/iCTI_import_activite_CSIS.XML @@ -0,0 +1,7607 @@ + + + + + + + + 0 THEN ARRAY[MVMT_DATEHEURE::text,MVMT_CHPNUM1::text] ELSE NULL END))[2]::numeric AS MVMT_CHPNUM1 + FROM prod_csis.SMV_MOUVEMENT_MVMT + JOIN prod_csis.SMV_TYPEMOUVEMENT_TMVT ON MVMT_ID_TMVT = TMVT_ID + WHERE TMVT_CODE = 'D' + GROUP BY 1 + HAVING MIN(CASE WHEN MVMT_CHPNUM1 = 0 THEN MVMT_ID ELSE NULL END) > 0 AND + MIN(CASE WHEN MVMT_CHPNUM1 <> 0 THEN MVMT_ID ELSE NULL END) > 0 + ) subview + WHERE SMV_MOUVEMENT_MVMT.MVMT_ID = MVMT_ID_0 + ; + + -- RSS en double sur Séjour + UPDATE prod_csis.sca_resumess_ress + SET RESS_ETATGRP = 'CTIDEL' + FROM ( + SELECT RESS_ID_DADM, (MAX(ARRAY[RESS_DATEDERNGRP::text, RESS_ID::text]))[2]::bigint AS DEL_RESS_ID + FROM prod_csis.sca_resumess_ress + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE SCA_RESUMESS_RESS.RESS_ID_DADM = subview.RESS_ID_DADM AND + RESS_ID <> DEL_RESS_ID; + + -- Dotation globale + UPDATE prod_csis.MPM_RECUEILTIERS_RECT + SET RECT_DOTATION = '1' + WHERE RECT_DOTATION = '0' AND RECT_CPTADOTATION = '1' + ; + + UPDATE prod_csis.MPM_RECUEILTIERS_RECT + SET RECT_DOTATION = '1' + FROM prod_csis.SST_ORGANISME_ORGN + WHERE RECT_ID_ORGN = ORGN_ID AND + RECT_ID_ORGN <> 0 AND + RECT_DOTATION = '0' AND RECT_CPTADOTATION = '0' AND ORGN_DOTATION = '1' + ; + + UPDATE prod_csis.MPM_RECUEILTIERS_RECT + SET RECT_DOTATION = '0' + WHERE RECT_DOTATION = '1' AND RECT_CPTADOTATION = '2' + ; + + + ]]> + + + + 'A' AND + REGD_CODETYOP NOT IN ('AC', 'MC') + GROUP BY 1; + + ALTER TABLE w_MRC_REGLEMENTDETAIL_REGD_dadm + ADD CONSTRAINT w_MRC_REGLEMENTDETAIL_REGD_dadm_pk_recf_id PRIMARY KEY(RECT_ID_RECF); + + + DROP TABLE IF EXISTS w_MPM_RECUEILTIERS_RECT_nonsoldes; + CREATE TEMP TABLE w_MPM_RECUEILTIERS_RECT_nonsoldes AS + SELECT + RECF_ID_DADM + FROM w_MPM_RECUEILTIERS_RECT_dadm + LEFT JOIN w_MRC_REGLEMENTDETAIL_REGD_dadm ON RECF_ID = RECT_ID_RECF + WHERE RECT_MONTANT IS DISTINCT FROM REGD_MNTENCAIS OR + RECF_DATEFACTDEB >= '[ENV_ADM_ANNEEDEBUT]0101' OR + REGD_DATEENCAIS >= '[ENV_ADM_ANNEEDEBUT]0101' OR + REGD_DATEENCAIS IS NULL + GROUP BY 1 + ORDER BY 1; + + + + + DROP TABLE IF EXISTS w_SID_DOSSIERADMINISTRATIF_DADM; + CREATE TEMP TABLE w_SID_DOSSIERADMINISTRATIF_DADM AS + SELECT + SID_DOSSIERADMINISTRATIF_DADM.*, + DADM_NDA::text AS DADM_NDA_ETAB, + STDO_CODE, + STDO_NATUREENTREE, + ETAB_TYPE_PSPH, + ETAB_CODE, + ETAB_FINESS, + ''::text AS DADM_GIR + FROM prod_csis.SID_DOSSIERADMINISTRATIF_DADM + JOIN w_SST_ETABLISSEMENT_ETAB ON DADM_ID_ETAB = ETAB_ID + JOIN prod_csis.SNO_STATUTDOSSIER_STDO ON DADM_ID_STDO = STDO_ID AND STDO_NATUREENTREE IN ('P','R') + JOIN prod_csis.SNO_ETATDOSSIER_ETDO ON DADM_ID_ETDO = ETDO_ID AND ETDO_ACTIF = '1' + LEFT JOIN w_MPM_RECUEILTIERS_RECT_nonsoldes ON DADM_ID = RECF_ID_DADM + + WHERE + ( + DADM_DATEDEBUT >= '[ENV_ADM_ANNEEDEBUT]0101' OR + DADM_DATEFIN >= '[ENV_ADM_ANNEEDEBUT]0101' OR + DADM_DATEFIN IS NULL OR + STDO_CODE IN ('P','R') OR + RECF_ID_DADM IS NOT NULL OR + DADM_ID IN (SELECT RECB_ID_DADM FROM prod_csis.MPM_BORDEREAU_RECB WHERE RECB_DATEENVOI >= '[ENV_ADM_ANNEEDEBUT]0101' GROUP BY 1) + ); + + ALTER TABLE w_SID_DOSSIERADMINISTRATIF_DADM + ADD CONSTRAINT w_SID_DOSSIERADMINISTRATIF_DADM_pk_dadm_id PRIMARY KEY(DADM_ID); + + + UPDATE w_SID_DOSSIERADMINISTRATIF_DADM + SET DADM_NDA_ETAB = w_SID_DOSSIERADMINISTRATIF_DADM.DADM_NDA_ETAB || '-' || ETAB_PREFIX + FROM + ( + SELECT DADM_NDA_ETAB, count(*) + FROM w_SID_DOSSIERADMINISTRATIF_DADM + GROUP BY 1 + HAVING count(*) > 1 + ) subview, + w_SST_ETABLISSEMENT_ETAB + WHERE w_SID_DOSSIERADMINISTRATIF_DADM.DADM_NDA_ETAB = subview.DADM_NDA_ETAB AND + DADM_ID_ETAB = ETAB_ID + ; + + + + ]]> + + + + + + + + + + PATI_NOMMARITAL THEN PATI_NOMFAMILLE ELSE '' END) , + MAX(PATI_PRENOMS), + MAX(PATI_CODESEXE), + MAX(PATI_DATENAISSANCE) + FROM prod_csis.SID_PATIENT_PATI + WHERE PATI_ID IN (SELECT DADM_ID_PATI FROM w_SID_DOSSIERADMINISTRATIF_DADM GROUP BY 1) AND + PATI_IPP NOT IN (SELECT no_patient FROM activite[PX].p_patients) + GROUP BY PATI_IPP + ORDER BY PATI_IPP; + + UPDATE activite[PX].p_patients SET + nom = PATI_NOMUSAGE, + nom_naissance = CASE WHEN PATI_NOMFAMILLE <> PATI_NOMMARITAL THEN PATI_NOMFAMILLE ELSE '' END, + prenom = PATI_PRENOMS, + code_sexe = PATI_CODESEXE, + date_naissance = date(PATI_DATENAISSANCE) + FROM prod_csis.SID_PATIENT_PATI + WHERE p_patients.no_patient = PATI_IPP AND + PATI_ID_DOMA IN (SELECT ETAB_ID_DOMA FROM w_SST_ETABLISSEMENT_ETAB) AND + ( + p_patients.nom IS DISTINCT FROM PATI_NOMUSAGE OR + p_patients.nom_naissance IS DISTINCT FROM CASE WHEN PATI_NOMFAMILLE <> PATI_NOMMARITAL THEN PATI_NOMFAMILLE ELSE '' END OR + p_patients.prenom IS DISTINCT FROM PATI_PRENOMS OR + p_patients.code_sexe IS DISTINCT FROM PATI_CODESEXE OR + p_patients.date_naissance IS DISTINCT FROM date(PATI_DATENAISSANCE) + ); + + + ]]> + + + + date(w_SID_PATIENT_GIR_next.PGIR_DATEDEBUT - interval '1 day') + ; + + INSERT INTO w_SMV_MOUVEMENT_MVMT_source + SELECT + -1::bigint AS MVMT_ID, + -1::bigint AS MVMT_ID_TMVT, + -1::bigint AS MVMT_ID_SMVT, + -1::bigint AS MVMT_ID_OMVT, + DADM_ID AS MVMT_ID_DADM, + PGIR_DATEDEBUT AS MVMT_DATEHEURE, + -1::bigint AS MVMT_CHPNUM1, + 'GIR'::text AS TMVT_CODE, + ''::text AS SMVT_CODE, + PGIR_GIR AS MVMT_CHPNUM1_A + FROM w_SID_DOSSIERADMINISTRATIF_DADM + JOIN w_SID_PATIENT_GIR ON DADM_ID_PATI = PGIR_ID_PATI AND + date(COALESCE(DADM_DATEFIN,now())) BETWEEN PGIR_DATEDEBUT AND PGIR_DATEFIN + ; + + CREATE INDEX w_SMV_MOUVEMENT_MVMT_source_i1 + ON w_SMV_MOUVEMENT_MVMT_source + USING btree + (MVMT_ID); + + CREATE INDEX w_SMV_MOUVEMENT_MVMT_source_i2 + ON w_SMV_MOUVEMENT_MVMT_source + USING btree + (MVMT_ID_DADM); + + + + ]]> + + + + 0 + WHERE RESS_ETATGRP <> 'CTIDEL' AND + TMVT_CODE = 'M' AND + (SMVT_CODE NOT IN ('A') OR TMVT_CODE = 'S') + GROUP BY 1; + + CREATE INDEX w_SCA_RESUMESS_RESS_ump_i1 + ON w_SCA_RESUMESS_RESS_ump + USING btree + (RESS_ID_DADM); + + + DROP TABLE IF EXISTS w_SMV_MOUVEMENT_SEJOUR; + CREATE TEMP TABLE w_SMV_MOUVEMENT_SEJOUR AS + SELECT + DADM_ID AS MVMT_ID_DADM, + COALESCE((MAX(CASE WHEN TMVT_CODE = 'GIR' AND SMVT_CODE NOT IN ('A') THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1_A::text] ELSE NULL END))[2],'') AS MVMT_CHPNUM1_gir, + + COALESCE((MAX(CASE WHEN TMVT_CODE = 'R' AND SMVT_CODE NOT IN ('A') AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_medecin, + COALESCE((MAX(CASE WHEN TMVT_CODE = 'D' AND SMVT_CODE NOT IN ('A') AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_service, + COALESCE((MAX(CASE WHEN TMVT_CODE = 'F' AND SMVT_CODE NOT IN ('A') AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_unite_fonctionnelle, + COALESCE((MAX(CASE WHEN TMVT_CODE = 'M' AND SMVT_CODE NOT IN ('A') AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_unite_medicale, + COALESCE((MAX(CASE WHEN TMVT_CODE = 'M' AND SMVT_CODE NOT IN ('A') AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,CASE WHEN MVMT_CHPNUM1_activite IS NOT NULL THEN MVMT_CHPNUM1_activite ELSE MVMT_CHPNUM1 END::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_activite, + ''::text AS MVMT_CHPNUM1_etage, + COALESCE((MAX(CASE WHEN TMVT_CODE = 'L' AND SMVT_CODE NOT IN ('A') AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_lit, + + COALESCE((MAX(CASE WHEN TMVT_CODE = 'GIR' AND SMVT_CODE NOT IN ('A') THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1_A::text] ELSE NULL END))[2],'') || '|' || + COALESCE((MAX(CASE WHEN TMVT_CODE = 'R' AND SMVT_CODE NOT IN ('A') AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1::text] ELSE NULL END))[2],'0') || '|' || + COALESCE((MAX(CASE WHEN TMVT_CODE = 'D' AND SMVT_CODE NOT IN ('A') AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1::text] ELSE NULL END))[2],'0') || '|' || + COALESCE((MAX(CASE WHEN TMVT_CODE = 'F' AND SMVT_CODE NOT IN ('A') AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1::text] ELSE NULL END))[2],'0') || '|' || + COALESCE((MAX(CASE WHEN TMVT_CODE = 'M' AND SMVT_CODE NOT IN ('A') AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1::text] ELSE NULL END))[2],'0') || '|' || + COALESCE((MAX(CASE WHEN TMVT_CODE = 'M' AND SMVT_CODE NOT IN ('A') AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,CASE WHEN MVMT_CHPNUM1_activite IS NOT NULL THEN MVMT_CHPNUM1_activite ELSE MVMT_CHPNUM1 END::text] ELSE NULL END))[2],'0') || '|' || + COALESCE((MAX(CASE WHEN TMVT_CODE = 'L' AND SMVT_CODE NOT IN ('A') AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1::text] ELSE NULL END))[2],'0') AS key + + FROM w_SID_DOSSIERADMINISTRATIF_DADM + LEFT JOIN w_SMV_MOUVEMENT_MVMT_source SMV_MOUVEMENT_MVMT ON MVMT_ID_DADM = DADM_ID + LEFT JOIN w_SCA_RESUMESS_RESS_ump ON DADM_ID = RESS_ID_DADM + GROUP BY 1; + + + DROP TABLE IF EXISTS w_SMV_MOUVEMENT_SEJOUR_keys; + CREATE TEMP TABLE w_SMV_MOUVEMENT_SEJOUR_keys AS + SELECT + key, + MVMT_CHPNUM1_gir, + MVMT_CHPNUM1_medecin, + MVMT_CHPNUM1_service, + MVMT_CHPNUM1_unite_fonctionnelle, + MVMT_CHPNUM1_unite_medicale, + MVMT_CHPNUM1_activite, + MVMT_CHPNUM1_etage, + MVMT_CHPNUM1_lit, + + ''::text AS mode_traitement_code, + ''::text AS dmt_code, + '0'::text AS type_sejour_force, + + 0::bigint AS gir_id, + 0::bigint AS medecin_sejour_id, + 0::bigint AS service_facturation_id, + 0::bigint AS mode_traitement_id, + 0::bigint AS unite_fonctionnelle_id, + 0::bigint AS unite_medicale_id, + 0::bigint AS activite_id, + 0::bigint AS etage_id, + 0::bigint AS lit_id, + 0::bigint AS lieu_id + FROM w_SMV_MOUVEMENT_SEJOUR + GROUP BY 1,2,3,4,5,6,7,8,9; + + UPDATE w_SMV_MOUVEMENT_SEJOUR_keys + SET medecin_sejour_id = COALESCE(t_medecins_administratifs.oid,0) + FROM activite[PX].t_medecins_administratifs + WHERE t_medecins_administratifs.code_original = MVMT_CHPNUM1_medecin; + + + UPDATE w_SMV_MOUVEMENT_SEJOUR_keys + SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = t_modes_traitement.oid, + mode_traitement_code = t_modes_traitement.code, + dmt_code = t_dmt.code, + type_sejour_force = CASE WHEN t_services_facturation.type_sejour IN ('1', '2', '3', '4', '5') THEN t_services_facturation.type_sejour ELSE '0' END + FROM activite[PX].t_services_facturation + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + WHERE t_services_facturation.code_original = MVMT_CHPNUM1_service; + + + + + + + UPDATE w_SMV_MOUVEMENT_SEJOUR_keys + SET unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM activite[PX].t_unites_fonctionnelles + WHERE t_unites_fonctionnelles.code_original = MVMT_CHPNUM1_unite_fonctionnelle; + + + UPDATE w_SMV_MOUVEMENT_SEJOUR_keys + SET unite_medicale_id = COALESCE(t_unites_medicales.oid,0) + FROM activite[PX].t_unites_medicales + WHERE t_unites_medicales.code_original = MVMT_CHPNUM1_unite_medicale; + + UPDATE w_SMV_MOUVEMENT_SEJOUR_keys + SET activite_id = COALESCE(t_activites.oid,0) + FROM activite[PX].t_activites + WHERE t_activites.code_original = MVMT_CHPNUM1_activite; + + + UPDATE w_SMV_MOUVEMENT_SEJOUR_keys + SET lit_id = COALESCE(t_lits.oid,0), + MVMT_CHPNUM1_etage = CASE WHEN t_lits.etage_id <> 0 THEN COALESCE(t_etages.code_original,'0') ELSE '0' END, + etage_id = COALESCE(t_lits.etage_id,0) + FROM activite[PX].t_lits + JOIN activite[PX].t_etages ON t_lits.etage_id = t_etages.oid + WHERE t_lits.code_original = MVMT_CHPNUM1_lit; + + + + INSERT INTO activite[PX].t_lieux( + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + code_original_6, + gir_code_original) + SELECT + MVMT_CHPNUM1_service, + MVMT_CHPNUM1_activite, + MVMT_CHPNUM1_etage, + MVMT_CHPNUM1_lit, + MVMT_CHPNUM1_unite_medicale, + MVMT_CHPNUM1_unite_fonctionnelle, + MVMT_CHPNUM1_gir + FROM w_SMV_MOUVEMENT_SEJOUR_keys + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = MVMT_CHPNUM1_service AND + code_original_2 = MVMT_CHPNUM1_activite AND + code_original_3 = MVMT_CHPNUM1_etage AND + code_original_4 = MVMT_CHPNUM1_lit AND + code_original_5 = MVMT_CHPNUM1_unite_medicale AND + code_original_6 = MVMT_CHPNUM1_unite_fonctionnelle AND + gir_code_original = MVMT_CHPNUM1_gir + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5,6,7; + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original + AND (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + activite_id = COALESCE(t_activites.oid,0) + FROM activite[PX].t_activites + WHERE code_original_2 = t_activites.code_original + AND activite_id <> COALESCE(t_activites.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + UPDATE activite[PX].t_lieux SET + unite_medicale_id = COALESCE(t_unites_medicales.oid,0) + FROM activite[PX].t_unites_medicales + WHERE code_original_5 = t_unites_medicales.code_original + AND unite_medicale_id <> COALESCE(t_unites_medicales.oid,0); + + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + + UPDATE activite[PX].t_lieux SET + gir_id = t_gir.oid + FROM base.t_gir + WHERE gir_code_original = t_gir.code + AND gir_id <> t_gir.oid + ; + UPDATE activite[PX].t_lieux SET + gir_id = 0 + WHERE gir_code_original = '' + AND gir_id <> 0 + ; + + + UPDATE w_SMV_MOUVEMENT_SEJOUR_keys + set lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = MVMT_CHPNUM1_service AND + code_original_2 = MVMT_CHPNUM1_activite AND + code_original_3 = MVMT_CHPNUM1_etage AND + code_original_4 = MVMT_CHPNUM1_lit AND + code_original_5 = MVMT_CHPNUM1_unite_medicale AND + code_original_6 = MVMT_CHPNUM1_unite_fonctionnelle AND + gir_code_original = MVMT_CHPNUM1_gir; + + + + DROP TABLE IF EXISTS w_MPE_ASSURANCE_ASSU; + CREATE TEMP TABLE w_MPE_ASSURANCE_ASSU AS + SELECT + DADM_ID AS ASSU_ID_DADM, + MIN((SELECT MIN(oid) FROM activite[PX].t_tiers_payant WHERE code = 'PATIENTS')) as tiers_payant_0_id, + MIN(CASE WHEN assu_type = 'O' THEN t_tiers_payant.oid ELSE null END) as tiers_payant_1_id, + MIN(CASE WHEN assu_type = 'C' AND assu_distinctif = 1 THEN t_tiers_payant.oid ELSE null END) as tiers_payant_2_id, + MIN(CASE WHEN assu_type = 'C' AND assu_distinctif <> 1 THEN t_tiers_payant.oid ELSE null END) as tiers_payant_22_id + FROM w_SID_DOSSIERADMINISTRATIF_DADM + LEFT JOIN prod_csis.MPE_ASSURANCE_ASSU ON ASSU_ID_DADM = DADM_ID + LEFT JOIN activite[PX].t_tiers_payant ON assu_id_orgn::bigint = t_tiers_payant.code_original AND t_tiers_payant.code <> 'PATIENTS' + GROUP BY 1; + + + + DROP TABLE IF EXISTS w_MPM_RECUEIL_RECG_type_sejour; + CREATE TEMP TABLE w_MPM_RECUEIL_RECG_type_sejour AS + SELECT + DADM_NDA_ETAB, + DADM_ID, + DATE(RECG_DATEDEBUT) AS RECG_DATEDEBUT, to_number('0' || RECG_GHS,'00000') AS ghs_code, + NULL::text AS type_sejour_force, + 0::numeric AS nb_seances, + SUM(CASE WHEN RECG_PRESTATION = 'GHS' THEN RECG_QUANTITE ELSE 0 END) AS RECG_QUANTITE_ghs, + SUM(CASE WHEN RECG_PRESTATION = 'K' THEN RECG_QUANTITE ELSE 0 END) AS RECG_QUANTITE_k, + SUM(CASE WHEN RECG_PRESTATION IN ('SE1', 'SE2', 'SE3', 'SE4','SE5', 'SE6', 'SE7', 'FFM', 'ATU', 'FPU') THEN RECG_QUANTITE ELSE 0 END) AS RECG_QUANTITE_ext + FROM prod_csis.MPM_RECUEIL_RECG + JOIN w_SID_DOSSIERADMINISTRATIF_DADM ON DADM_ID = RECG_ID_DADM + JOIN prod_csis.SNO_ETATRECUEIL_ETRC ON RECG_ID_ETRC = ETRC_ID AND ETRC_CODE <> 'A' + WHERE RECG_PRESTATION = 'GHS' OR + (RECG_PRESTATION = 'K' AND RECG_COEFFICIENT = 15) OR + (RECG_PRESTATION IN ('SE1', 'SE2', 'SE3', 'SE4','SE5', 'SE6', 'SE7', 'FFM', 'ATU', 'FPU')) + GROUP BY 1,2,3,4 + HAVING SUM(CASE WHEN RECG_PRESTATION = 'GHS' THEN RECG_QUANTITE ELSE 0 END) > 0 OR + SUM(CASE WHEN RECG_PRESTATION = 'K' THEN RECG_QUANTITE ELSE 0 END) > 0 OR + SUM(CASE WHEN RECG_PRESTATION IN ('SE1', 'SE2', 'SE3', 'SE4','SE5', 'SE6', 'SE7', 'FFM', 'ATU', 'FPU') THEN RECG_QUANTITE ELSE 0 END) > 0; + + + CREATE INDEX w_MPM_RECUEIL_RECG_type_sejour_i1 + ON w_MPM_RECUEIL_RECG_type_sejour + USING btree + (DADM_NDA_ETAB); + + CREATE INDEX w_MPM_RECUEIL_RECG_type_sejour_i2 + ON w_MPM_RECUEIL_RECG_type_sejour + USING btree + (DADM_ID); + + UPDATE w_MPM_RECUEIL_RECG_type_sejour + SET type_sejour_force = '3' + WHERE type_sejour_force IS NULL AND + RECG_QUANTITE_ext <> 0 AND + RECG_QUANTITE_ghs = 0; + + + UPDATE w_MPM_RECUEIL_RECG_type_sejour + SET type_sejour_force = '5' + FROM base.t_ghs + WHERE type_sejour_force IS NULL AND + ghs_code = t_ghs.code AND + t_ghs.texte like '%séance%' AND + RECG_QUANTITE_ghs <> 0; + + UPDATE w_MPM_RECUEIL_RECG_type_sejour + SET nb_seances = GREATEST(RECG_QUANTITE_ghs,RECG_QUANTITE_k) + FROM base.t_ghs + WHERE ghs_code = t_ghs.code AND + t_ghs.texte ilike '%séance%' AND + ((ghs_code <> 0 AND t_ghs.oid IS NOT NULL) OR RECG_QUANTITE_k > 0); + + + DROP TABLE IF EXISTS w_MPM_RECUEIL_RECG_type_sejour_force; + CREATE TEMP TABLE w_MPM_RECUEIL_RECG_type_sejour_force AS + SELECT DADM_ID, DADM_NDA_ETAB, MAX(type_sejour_force) AS type_sejour_force + FROM w_MPM_RECUEIL_RECG_type_sejour + WHERE type_sejour_force IS NOT NULL + GROUP BY 1,2; + + + + + DROP TABLE IF EXISTS w_sejours; + + CREATE TEMP TABLE w_sejours AS + SELECT + ETAB_FINESS AS finess, + w_SID_DOSSIERADMINISTRATIF_DADM.DADM_NDA_ETAB as no_sejour, + w_SID_DOSSIERADMINISTRATIF_DADM.DADM_ID::bigint as code_original, + PATI_IPP as no_patient, + date(DADM_DATEDEBUT) as date_entree, + extract('hour' FROM DADM_DATEDEBUT) * 10000 + extract('minute' FROM DADM_DATEDEBUT) * 100 + extract('second' FROM DADM_DATEDEBUT) as heure_entree, + CASE WHEN DADM_DATEFIN IS NOT NULL THEN date(DADM_DATEFIN) ELSE '20991231' END::date as date_sortie, + CASE WHEN DADM_DATEFIN IS NOT NULL THEN extract('hour' FROM DADM_DATEFIN) * 10000 + extract('minute' FROM DADM_DATEFIN) * 100 + extract('second' FROM DADM_DATEFIN) ELSE 0 END as heure_sortie, + PATI_CODESEXE AS code_sexe, + 0 AS age, + CASE WHEN STDO_CODE IN ('S', 'C') THEN 1 ELSE 0 END as code_sorti, + CASE WHEN STDO_CODE IN ('R', 'P') THEN 1 ELSE 0 END as code_prevu, + CASE + WHEN w_MPM_RECUEIL_RECG_type_sejour_force.type_sejour_force IS NOT NULL THEN w_MPM_RECUEIL_RECG_type_sejour_force.type_sejour_force + WHEN w_SMV_MOUVEMENT_SEJOUR_keys.type_sejour_force <> '0' THEN w_SMV_MOUVEMENT_SEJOUR_keys.type_sejour_force + WHEN mode_traitement_code IN ('07') OR dmt_code IN ('958') THEN '3' + WHEN mode_traitement_code IN ('19', '23') THEN '2' + WHEN mode_traitement_code IN ('04') AND STDO_CODE IN ('S', 'C') AND date(DADM_DATEFIN) = date(DADM_DATEDEBUT) THEN '2' + WHEN mode_traitement_code IN ('03') AND STDO_CODE IN ('S', 'C') AND date(DADM_DATEFIN) = date(DADM_DATEDEBUT) THEN '2' + WHEN mode_traitement_code IN ('10') AND STDO_CODE IN ('S', 'C') AND date(DADM_DATEFIN) <= date(DADM_DATEDEBUT) + interval '1 day' THEN '3' + WHEN mode_traitement_code IN ('03') THEN '1' + ELSE '1' END as type_sejour, + medecin_sejour_id, + lieu_id AS lieu_sortie_id, + CASE WHEN DADM_DATEDEMCHAMBRESEULE IS NOT NULL THEN '1' ELSE '0' END as code_cp_demandee, + mode_traitement_id, + COALESCE(ENVR_MODEENT,'8') as mode_entree, + COALESCE(ENVR_PROVENANCE,'0') as provenance, + COALESCE(ENVR_MODESOR,'8') as mode_sortie, + COALESCE(ENVR_DESTINATION,'0') as destination, + COALESCE(tiers_payant_0_id,0) AS tiers_payant_0_id, + COALESCE(tiers_payant_1_id,0) AS tiers_payant_1_id, + COALESCE(tiers_payant_2_id,0) AS tiers_payant_2_id, + CASE WHEN COALESCE(tiers_payant_22_id,0) <> COALESCE(tiers_payant_2_id,0) THEN COALESCE(tiers_payant_22_id,0) ELSE 0 END AS tiers_payant_22_id, + ETAB_TYPE_PSPH AS est_budget_global, + COALESCE(t_ghs.oid,0) as ghs_id, + COALESCE(t_ghm.oid,0) as ghm_id, + CASE WHEN DPMS_ETATDOSSIER = 'V' THEN RESS_DATEDERNGRP ELSE '20991231'::date END as date_groupage, + 0::bigint AS ghs_bebe1_id, + 0::bigint AS ghs_bebe2_id, + 0::bigint AS ghs_bebe3_id, + COALESCE(t_codes_postaux.oid, 0) as code_postal_id + + FROM w_SID_DOSSIERADMINISTRATIF_DADM + JOIN prod_csis.sid_patient_pati ON pati_id = dadm_id_pati + JOIN prod_csis.sst_modeetab_mdtb ON dadm_id_mdtb = mdtb_id + JOIN prod_csis.sno_mode_mode ON mdtb_id_mode = mode_id + JOIN w_SMV_MOUVEMENT_SEJOUR ON MVMT_ID_DADM = w_SID_DOSSIERADMINISTRATIF_DADM.DADM_ID + JOIN w_SMV_MOUVEMENT_SEJOUR_keys ON w_SMV_MOUVEMENT_SEJOUR.key = w_SMV_MOUVEMENT_SEJOUR_keys.key + JOIN w_MPE_ASSURANCE_ASSU ON w_SID_DOSSIERADMINISTRATIF_DADM.DADM_ID = ASSU_ID_DADM + JOIN w_SCA_ENVELOPPERUM_ENVR_modes ON ENVR_ID_DADM = w_SID_DOSSIERADMINISTRATIF_DADM.DADM_ID + LEFT JOIN prod_csis.sca_resumess_ress ON w_SID_DOSSIERADMINISTRATIF_DADM.dadm_id = ress_id_dadm AND RESS_ETATGRP <> 'CTIDEL' + LEFT JOIN prod_csis.sca_dossierpmsi_dpms ON (w_SID_DOSSIERADMINISTRATIF_DADM.dadm_id = dpms_id_dadm) + LEFT JOIN base.t_ghs ON to_number('0' || RESS_NUMERO_GGHS, '00000') = t_ghs.code + LEFT JOIN base.t_ghm ON (RESS_CODEGHM = t_ghm.code AND t_ghm.code NOT LIKE '90%') + LEFT JOIN base.t_codes_postaux ON PATI_CODEPOSTAL = t_codes_postaux.code + LEFT JOIN w_MPM_RECUEIL_RECG_type_sejour_force ON w_MPM_RECUEIL_RECG_type_sejour_force.DADM_ID = w_SID_DOSSIERADMINISTRATIF_DADM.DADM_ID; + + -- Modes e/s selon medsphere + UPDATE w_sejours SET + mode_entree = MODE_CODEENTREESORTIE, + provenance = COALESCE(PROV_CODE, '0') + FROM prod_csis.SMV_DOSSIERMVT_DMVT + JOIN prod_csis.SID_DOSSIERADMINISTRATIF_DADM ON DMVT_ID_DADM = DADM_ID + JOIN prod_csis.SNO_MODE_MODE ON DMVT_ID_MODE_ENTREE = MODE_ID + LEFT JOIN prod_csis.SNO_PROVENANCE_PROV ON DMVT_ID_PROV = PROV_ID + WHERE w_sejours.code_original = DADM_ID AND + length(MODE_CODEENTREESORTIE) <= 1 AND + ( + mode_entree <> MODE_CODEENTREESORTIE OR + provenance <> PROV_CODE + ) + ; + + UPDATE w_sejours SET + mode_sortie = MODE_CODEENTREESORTIE, + destination = COALESCE(DEST_CODE, '0') + FROM prod_csis.SMV_DOSSIERMVT_DMVT + JOIN prod_csis.SID_DOSSIERADMINISTRATIF_DADM ON DMVT_ID_DADM = DADM_ID + JOIN prod_csis.SNO_MODE_MODE ON DMVT_ID_MODE_SORTIE = MODE_ID + LEFT JOIN prod_csis.SNO_DESTINATION_DEST ON DMVT_ID_DEST = DEST_ID + WHERE w_sejours.code_original = DADM_ID AND + length(MODE_CODEENTREESORTIE) <= 1 AND + ( + mode_sortie <> MODE_CODEENTREESORTIE OR + destination <> DEST_CODE + ) + ; + + -- Forcage type selon séjour + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour + FROM activite.t_sejour + WHERE t_sejour.no_sejour = w_sejours.no_sejour AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9'); + + UPDATE w_sejours + SET date_sortie = date_sortie - interval '100 years' + WHERE code_sorti = '1' AND date_sortie BETWEEN '21010101' AND '21991231'; + + -- Demande CP selon supplémnt lit + UPDATE w_sejours + SET code_cp_demandee = '1' + FROM prod_csis.SID_DOSSIERADMINISTRATIF_DADM + JOIN prod_csis.SMV_DOSSIERMVT_DMVT ON DMVT_ID_DADM = DADM_ID + WHERE DADM_ID = code_original AND + DMVT_ID_SPLT > 1 AND + code_cp_demandee <> '1'; + + -- Validation + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_13'); + + UPDATE activite[PX].p_sejours SET + code_original = w_sejours.code_original, + finess = w_sejours.finess, + no_patient = w_sejours.no_patient, + date_entree = w_sejours.date_entree, + heure_entree = w_sejours.heure_entree, + date_sortie = w_sejours.date_sortie, + heure_sortie = w_sejours.heure_sortie, + code_sexe = w_sejours.code_sexe, + age = w_sejours.age, + code_sorti = w_sejours.code_sorti, + code_prevu = w_sejours.code_prevu, + type_sejour = w_sejours.type_sejour, + lieu_sortie_id = w_sejours.lieu_sortie_id, + medecin_sejour_id = w_sejours.medecin_sejour_id, + code_cp_demandee = w_sejours.code_cp_demandee, + mode_traitement_id = w_sejours.mode_traitement_id, + mode_entree = w_sejours.mode_entree, + provenance = w_sejours.provenance, + mode_sortie = w_sejours.mode_sortie, + destination = w_sejours.destination, + tiers_payant_0_id = w_sejours.tiers_payant_0_id, + tiers_payant_1_id = w_sejours.tiers_payant_1_id, + tiers_payant_2_id = w_sejours.tiers_payant_2_id, + tiers_payant_22_id = w_sejours.tiers_payant_22_id, + est_budget_global = w_sejours.est_budget_global, + date_groupage = w_sejours.date_groupage, + ghs_id = w_sejours.ghs_id, + ghm_id = w_sejours.ghm_id, + ghs_bebe1_id = w_sejours.ghs_bebe1_id, + ghs_bebe2_id = w_sejours.ghs_bebe2_id, + ghs_bebe3_id = w_sejours.ghs_bebe3_id, + code_postal_id = w_sejours.code_postal_id + FROM w_sejours + WHERE w_sejours.no_sejour = p_sejours.no_sejour + AND ( + w_sejours.code_original IS DISTINCT FROM p_sejours.code_original OR + w_sejours.finess IS DISTINCT FROM p_sejours.finess OR + w_sejours.no_patient IS DISTINCT FROM p_sejours.no_patient OR + w_sejours.date_entree IS DISTINCT FROM p_sejours.date_entree OR + w_sejours.heure_entree IS DISTINCT FROM p_sejours.heure_entree OR + w_sejours.date_sortie IS DISTINCT FROM p_sejours.date_sortie OR + w_sejours.heure_sortie IS DISTINCT FROM p_sejours.heure_sortie OR + w_sejours.code_sexe IS DISTINCT FROM p_sejours.code_sexe OR + w_sejours.age IS DISTINCT FROM p_sejours.age OR + w_sejours.code_sorti IS DISTINCT FROM p_sejours.code_sorti OR + w_sejours.code_prevu IS DISTINCT FROM p_sejours.code_prevu OR + w_sejours.type_sejour IS DISTINCT FROM p_sejours.type_sejour OR + w_sejours.lieu_sortie_id IS DISTINCT FROM p_sejours.lieu_sortie_id OR + w_sejours.medecin_sejour_id IS DISTINCT FROM p_sejours.medecin_sejour_id OR + w_sejours.code_cp_demandee IS DISTINCT FROM p_sejours.code_cp_demandee OR + w_sejours.mode_traitement_id IS DISTINCT FROM p_sejours.mode_traitement_id OR + w_sejours.mode_entree IS DISTINCT FROM p_sejours.mode_entree OR + w_sejours.provenance IS DISTINCT FROM p_sejours.provenance OR + w_sejours.mode_sortie IS DISTINCT FROM p_sejours.mode_sortie OR + w_sejours.destination IS DISTINCT FROM p_sejours.destination OR + w_sejours.tiers_payant_0_id IS DISTINCT FROM p_sejours.tiers_payant_0_id OR + w_sejours.tiers_payant_1_id IS DISTINCT FROM p_sejours.tiers_payant_1_id OR + w_sejours.tiers_payant_2_id IS DISTINCT FROM p_sejours.tiers_payant_2_id OR + w_sejours.tiers_payant_22_id IS DISTINCT FROM p_sejours.tiers_payant_22_id OR + w_sejours.est_budget_global IS DISTINCT FROM p_sejours.est_budget_global OR + w_sejours.date_groupage IS DISTINCT FROM p_sejours.date_groupage OR + w_sejours.ghs_id IS DISTINCT FROM p_sejours.ghs_id OR + w_sejours.ghm_id IS DISTINCT FROM p_sejours.ghm_id OR + w_sejours.ghs_bebe1_id IS DISTINCT FROM p_sejours.ghs_bebe1_id OR + w_sejours.ghs_bebe2_id IS DISTINCT FROM p_sejours.ghs_bebe2_id OR + w_sejours.ghs_bebe3_id IS DISTINCT FROM p_sejours.ghs_bebe3_id OR + w_sejours.code_postal_id IS DISTINCT FROM p_sejours.code_postal_id + ); + + + INSERT INTO activite[PX].p_sejours ( + finess, + no_sejour, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + lieu_sortie_id, + medecin_sejour_id, + ghs_id, + ghm_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + est_budget_global, + code_postal_id + ) + SELECT + w_sejours.finess, + w_sejours.no_sejour, + w_sejours.code_original, + w_sejours.no_patient, + w_sejours.date_entree, + w_sejours.heure_entree, + w_sejours.date_sortie, + w_sejours.heure_sortie, + w_sejours.code_sexe, + w_sejours.age, + w_sejours.code_sorti, + w_sejours.code_prevu, + w_sejours.type_sejour, + w_sejours.lieu_sortie_id, + w_sejours.medecin_sejour_id, + w_sejours.ghs_id, + w_sejours.ghm_id, + w_sejours.ghs_bebe1_id, + w_sejours.ghs_bebe2_id, + w_sejours.ghs_bebe3_id, + w_sejours.date_groupage, + w_sejours.code_cp_demandee, + w_sejours.mode_traitement_id, + w_sejours.mode_entree, + w_sejours.provenance, + w_sejours.mode_sortie, + w_sejours.destination, + w_sejours.tiers_payant_0_id, + w_sejours.tiers_payant_1_id, + w_sejours.tiers_payant_2_id, + w_sejours.tiers_payant_22_id, + w_sejours.est_budget_global, + w_sejours.code_postal_id + + FROM w_sejours LEFT JOIN activite[PX].p_sejours ON (w_sejours.no_sejour = p_sejours.no_sejour) + WHERE p_sejours.no_sejour IS NULL; + + DELETE FROM activite[PX].p_sejours WHERE no_sejour NOT IN (SELECT no_sejour FROM w_sejours); + + -- Sejours ignores alors qu'il y a de la facturation, transformer en fictif + UPDATE activite.t_sejour + SET est_ignore = '0', type_sejour = '9' + WHERE est_ignore = '1' AND + no_sejour = ANY + ( + SELECT no_sejour + FROM prod_csis.SCP_CPTATRANSFERT_CPTF + JOIN prod_csis.MPM_FACTURE_RECF ON RECF_ID = CPTF_ID_RECF + JOIN prod_csis.SID_DOSSIERADMINISTRATIF_DADM ON RECF_ID_DADM = DADM_ID + JOIN activite.t_sejour ON DADM_NDA = t_sejour.no_sejour + WHERE est_ignore = '1' + GROUP BY 1 + ) + ; + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '[PX]' = ''; + + UPDATE activite[PX].p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND + '[PX]' = ''; + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '[PX]' = ''; + + + -- recréation index + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_13'); + + + -- transferts d'établissements + INSERT INTO base.t_etablissements(code, texte, texte_court) + SELECT + ETBS_FINESS, + MAX(ETBS_RAISONSOCIALE), + MAX(ETBS_RAISONSOCIALE) + FROM prod_csis.SNO_ETABLISSEMENT_ETBS + WHERE ETBS_FINESS NOT IN (SELECT code FROM base.t_etablissements) + GROUP BY 1 + ; + + INSERT INTO activite[PX].p_sejours_transferts (sejour_id, provenance_id, destination_id) + SELECT + p_sejours.oid, + MAX(provenance.oid), + MAX(destination.oid) + FROM + activite[PX].p_sejours + JOIN prod_csis.SID_DOSSIERADMINISTRATIF_DADM ON DADM_NDA = no_sejour + JOIN prod_csis.SMV_DOSSIERMVT_DMVT ON DMVT_ID_DADM = DADM_ID + LEFT JOIN prod_csis.vil_smv_modeentreeprov SER_PROV ON MVMT_ID_DADM = DMVT_ID_DADM + LEFT JOIN prod_csis.SNO_SERVICEETABLISSEMENT_SVET SER_DEST ON DMVT_ID_SVET_DEST = SER_DEST.SVET_ID + LEFT JOIN prod_csis.SNO_ETABLISSEMENT_ETBS DEST ON DEST.ETBS_ID = SER_DEST.SVET_ID_ETBS + LEFT JOIN base.t_etablissements provenance ON SER_PROV.ETABFINESS = provenance.code + LEFT JOIN base.t_etablissements destination ON DEST.ETBS_FINESS = destination.code + WHERE 1=1 AND + (IDETBS_PROVENANCE != 0 OR DMVT_ID_SVET_DEST != 0) + GROUP BY 1 + ; + + -- Assurance + INSERT INTO activite[PX].p_sejours_assurance( + sejour_id, + nom_assure, + prenom_assure, + tiers_payant_0_id, + tiers_payant_1_id, + matricule_1, + tiers_payant_2_id, + matricule_2, + tiers_payant_22_id, + matricule_22 + ) + SELECT + p_sejours.oid AS sejour_id, + MAX(ASSU_NOMUSUEL) AS nom_assure, + MAX(ASSU_PRENOM) prenom_assure, + MAX(p_sejours.tiers_payant_0_id), + MAX(p_sejours.tiers_payant_1_id), + MAX(CASE WHEN ASSU_TYPE = 'O' THEN substr(ASSU_NOSS,1,13) ELSE '' END) AS matricule_1, + MAX(p_sejours.tiers_payant_2_id), + MAX(CASE WHEN ASSU_TYPE = 'C' AND ASSU_DISTINCTIF = 1 THEN CASE WHEN ASSU_NOADHERENT <> '' THEN ASSU_NOADHERENT ELSE substr(ASSU_NOSS,1,13) END ELSE '' END) AS matricule_2, + MAX(p_sejours.tiers_payant_22_id), + MAX(CASE WHEN ASSU_TYPE = 'C' AND ASSU_DISTINCTIF <> 1 THEN CASE WHEN ASSU_NOADHERENT <> '' THEN ASSU_NOADHERENT ELSE substr(ASSU_NOSS,1,13) END ELSE '' END) AS matricule_22 + FROM prod_csis.MPE_ASSURANCE_ASSU + JOIN activite[PX].p_sejours ON code_original = ASSU_ID_DADM + GROUP BY 1 + ; + + + ]]> + + + + = to_timestamp(DADM_DATEDEBUT, 'YYYY-MM-DD HH24:MI:SS') + THEN to_timestamp(MVMT_dateheure, 'YYYY-MM-DD HH24:MI:SS') + ELSE to_timestamp(DADM_DATEDEBUT, 'YYYY-MM-DD HH24:MI:SS') + END AS MVMT_dateheure, + null::date AS MVMT_date, + null::numeric AS MVMT_heure, + '0'::text AS est_entree, + null::timestamp AS MVMT_dateheure_fin, + null::date AS MVMT_date_fin, + null::numeric AS MVMT_heure_fin, + '0'::text AS est_sortie, + MAX(CASE WHEN TMVT_CODE = 'S' THEN TMVT_CODE ELSE '' END) AS TMVT_CODE_S, + COALESCE((MAX(CASE WHEN TMVT_CODE = 'GIR' THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1_A::text] ELSE NULL END))[2],'') AS MVMT_CHPNUM1_gir, + COALESCE((MAX(CASE WHEN TMVT_CODE = 'R' AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_med, + COALESCE((MAX(CASE WHEN TMVT_CODE = 'D' AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_ser, + COALESCE((MAX(CASE WHEN TMVT_CODE = 'F' AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_uf, + COALESCE((MAX(CASE WHEN TMVT_CODE = 'M' AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_um, + COALESCE((MAX(CASE WHEN TMVT_CODE = 'M' AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,CASE WHEN MVMT_CHPNUM1_activite IS NOT NULL THEN MVMT_CHPNUM1_activite ELSE MVMT_CHPNUM1 END::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_activite, + '0'::text AS MVMT_CHPNUM1_eta, + COALESCE((MAX(CASE WHEN TMVT_CODE = 'L' AND MVMT_CHPNUM1 <> 0 THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_lit, + '0'::text AS MVMT_CHPNUM1_ser_before, + '0'::text AS MVMT_CHPNUM1_eta_before, + '0'::text AS MVMT_CHPNUM1_uf_before, + '0'::text AS MVMT_CHPNUM1_um_before, + '0'::text AS MVMT_CHPNUM1_ser_after, + '0'::text AS MVMT_CHPNUM1_eta_after, + '0'::text AS MVMT_CHPNUM1_uf_after, + '0'::text AS MVMT_CHPNUM1_um_after, + + ''::text AS key + FROM w_SID_DOSSIERADMINISTRATIF_DADM + LEFT JOIN w_SMV_MOUVEMENT_MVMT_source SMV_MOUVEMENT_MVMT ON MVMT_ID_DADM = dadm_id + LEFT JOIN w_SCA_RESUMESS_RESS_ump ON DADM_ID = RESS_ID_DADM + WHERE SMVT_CODE NOT IN ('A') OR TMVT_CODE = 'S' + GROUP BY 1,2,3,4 + ORDER BY 1,2 + ) subview; + + DELETE FROM w_SMV_MOUVEMENT_MVMT + USING w_SID_DOSSIERADMINISTRATIF_DADM + WHERE w_SMV_MOUVEMENT_MVMT.DADM_ID = w_SID_DOSSIERADMINISTRATIF_DADM.DADM_ID AND + STDO_CODE IN ('S', 'C') AND + TMVT_CODE_S <> 'S' AND + MVMT_DATEHEURE > DADM_DATEFIN; + + + + UPDATE w_SMV_MOUVEMENT_MVMT + SET MVMT_CHPNUM1_eta = t_lits.etage_id + FROM activite[PX].t_lits + WHERE t_lits.code_original = MVMT_CHPNUM1_lit AND MVMT_CHPNUM1_lit <> '0'; + + + DROP TABLE IF EXISTS w_SMV_MOUVEMENT_MVMT_2; + CREATE TEMP TABLE w_SMV_MOUVEMENT_MVMT_2 AS + SELECT DADM_ID, + MIN(sequence) AS sequence_first, + MAX(sequence) AS sequence_last, + COALESCE((MIN(CASE WHEN MVMT_CHPNUM1_gir <> '' THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1_gir::text] ELSE NULL END))[2],'') AS MVMT_CHPNUM1_gir_first, + COALESCE((MIN(CASE WHEN MVMT_CHPNUM1_med <> '0' THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1_med::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_med_first, + COALESCE((MIN(CASE WHEN MVMT_CHPNUM1_ser <> '0' THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1_ser::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_ser_first, + COALESCE((MIN(CASE WHEN MVMT_CHPNUM1_uf <> '0' THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1_uf::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_uf_first, + COALESCE((MIN(CASE WHEN MVMT_CHPNUM1_um <> '0' THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1_um::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_um_first, + COALESCE((MIN(CASE WHEN MVMT_CHPNUM1_activite <> '0' THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1_activite::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_activite_first, + COALESCE((MIN(CASE WHEN MVMT_CHPNUM1_eta <> '0' THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1_eta::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_eta_first, + COALESCE((MIN(CASE WHEN MVMT_CHPNUM1_lit <> '0' THEN array[MVMT_DATEHEURE::text,MVMT_CHPNUM1_lit::text] ELSE NULL END))[2],'0') AS MVMT_CHPNUM1_lit_first + FROM w_SMV_MOUVEMENT_MVMT + WHERE TMVT_CODE_S <> 'S' + GROUP BY 1; + + + UPDATE w_SMV_MOUVEMENT_MVMT SET + est_entree = '1', + MVMT_CHPNUM1_gir = MVMT_CHPNUM1_gir_first, + MVMT_CHPNUM1_med = MVMT_CHPNUM1_med_first, + MVMT_CHPNUM1_ser = MVMT_CHPNUM1_ser_first, + MVMT_CHPNUM1_uf = MVMT_CHPNUM1_uf_first, + MVMT_CHPNUM1_um = MVMT_CHPNUM1_um_first, + MVMT_CHPNUM1_activite = MVMT_CHPNUM1_activite_first, + MVMT_CHPNUM1_eta = MVMT_CHPNUM1_eta_first, + MVMT_CHPNUM1_lit = MVMT_CHPNUM1_lit_first + FROM w_SMV_MOUVEMENT_MVMT_2 + WHERE w_SMV_MOUVEMENT_MVMT.DADM_ID = w_SMV_MOUVEMENT_MVMT_2.DADM_ID AND + sequence = sequence_first AND + (MVMT_CHPNUM1_gir IS DISTINCT FROM MVMT_CHPNUM1_gir_first OR + MVMT_CHPNUM1_med IS DISTINCT FROM MVMT_CHPNUM1_med_first OR + MVMT_CHPNUM1_ser IS DISTINCT FROM MVMT_CHPNUM1_ser_first OR + MVMT_CHPNUM1_uf IS DISTINCT FROM MVMT_CHPNUM1_uf_first OR + MVMT_CHPNUM1_um IS DISTINCT FROM MVMT_CHPNUM1_um_first OR + MVMT_CHPNUM1_activite IS DISTINCT FROM MVMT_CHPNUM1_activite_first OR + MVMT_CHPNUM1_eta IS DISTINCT FROM MVMT_CHPNUM1_eta_first OR + MVMT_CHPNUM1_lit IS DISTINCT FROM MVMT_CHPNUM1_lit_first OR + est_entree = '0' + ) + + ; + + + + SELECT base.cti_execute( + 'UPDATE w_SMV_MOUVEMENT_MVMT SET + MVMT_CHPNUM1_gir = CASE WHEN w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_gir = '''' THEN w_SMV_MOUVEMENT_MVMT_prev.MVMT_CHPNUM1_gir ELSE w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_gir END, + MVMT_CHPNUM1_med = CASE WHEN w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_med = ''0'' THEN w_SMV_MOUVEMENT_MVMT_prev.MVMT_CHPNUM1_med ELSE w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_med END, + MVMT_CHPNUM1_ser = CASE WHEN w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_ser = ''0'' THEN w_SMV_MOUVEMENT_MVMT_prev.MVMT_CHPNUM1_ser ELSE w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_ser END, + MVMT_CHPNUM1_uf = CASE WHEN w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_uf = ''0'' THEN w_SMV_MOUVEMENT_MVMT_prev.MVMT_CHPNUM1_uf ELSE w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_uf END, + MVMT_CHPNUM1_um = CASE WHEN w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_um = ''0'' THEN w_SMV_MOUVEMENT_MVMT_prev.MVMT_CHPNUM1_um ELSE w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_um END, + MVMT_CHPNUM1_activite = CASE WHEN w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_activite = ''0'' THEN w_SMV_MOUVEMENT_MVMT_prev.MVMT_CHPNUM1_um ELSE w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_activite END, + MVMT_CHPNUM1_eta = CASE WHEN w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_eta = ''0'' THEN w_SMV_MOUVEMENT_MVMT_prev.MVMT_CHPNUM1_eta ELSE w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_eta END, + MVMT_CHPNUM1_lit = CASE WHEN w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_lit = ''0'' THEN w_SMV_MOUVEMENT_MVMT_prev.MVMT_CHPNUM1_lit ELSE w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_lit END + FROM w_SMV_MOUVEMENT_MVMT w_SMV_MOUVEMENT_MVMT_prev + WHERE w_SMV_MOUVEMENT_MVMT.DADM_ID = w_SMV_MOUVEMENT_MVMT_prev.DADM_ID AND + w_SMV_MOUVEMENT_MVMT.sequence = w_SMV_MOUVEMENT_MVMT_prev.sequence + 1 AND + w_SMV_MOUVEMENT_MVMT.TMVT_CODE_S <> ''S'' AND + ( + w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_gir = '''' AND w_SMV_MOUVEMENT_MVMT_prev.MVMT_CHPNUM1_gir <> '''' OR + w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_med = ''0'' AND w_SMV_MOUVEMENT_MVMT_prev.MVMT_CHPNUM1_med <> ''0'' OR + w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_ser = ''0'' AND w_SMV_MOUVEMENT_MVMT_prev.MVMT_CHPNUM1_ser <> ''0'' OR + w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_uf = ''0'' AND w_SMV_MOUVEMENT_MVMT_prev.MVMT_CHPNUM1_uf <> ''0'' OR + w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_um = ''0'' AND w_SMV_MOUVEMENT_MVMT_prev.MVMT_CHPNUM1_um <> ''0'' OR + w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_activite = ''0'' AND w_SMV_MOUVEMENT_MVMT_prev.MVMT_CHPNUM1_activite <> ''0'' OR + w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_eta = ''0'' AND w_SMV_MOUVEMENT_MVMT_prev.MVMT_CHPNUM1_eta <> ''0'' OR + w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_lit = ''0'' AND w_SMV_MOUVEMENT_MVMT_prev.MVMT_CHPNUM1_lit <> ''0'' + ) + ',5000); + + + UPDATE w_SMV_MOUVEMENT_MVMT SET + MVMT_dateheure_fin = CASE WHEN w_SMV_MOUVEMENT_MVMT_next.TMVT_CODE_S = 'S' THEN w_SMV_MOUVEMENT_MVMT_next.MVMT_dateheure ELSE w_SMV_MOUVEMENT_MVMT_next.MVMT_dateheure - interval '1 second' END , + est_sortie = CASE WHEN w_SMV_MOUVEMENT_MVMT_next.TMVT_CODE_S = 'S' THEN '1' ELSE '0' END + FROM w_SMV_MOUVEMENT_MVMT w_SMV_MOUVEMENT_MVMT_next + WHERE w_SMV_MOUVEMENT_MVMT.DADM_ID = w_SMV_MOUVEMENT_MVMT_next.DADM_ID AND + w_SMV_MOUVEMENT_MVMT.sequence = w_SMV_MOUVEMENT_MVMT_next.sequence - 1 ; + + + + UPDATE w_SMV_MOUVEMENT_MVMT SET + MVMT_date = date(MVMT_dateheure), + MVMT_heure = extract('hour' FROM MVMT_dateheure) * 10000 + extract('minute' FROM MVMT_dateheure) * 100 + extract('second' FROM MVMT_dateheure), + MVMT_date_fin = date(MVMT_dateheure_fin), + MVMT_heure_fin = extract('hour' FROM MVMT_dateheure_fin) * 10000 + extract('minute' FROM MVMT_dateheure_fin) * 100 + extract('second' FROM MVMT_dateheure_fin) ; + + + + + + + -- calcul mvt avant + + UPDATE w_SMV_MOUVEMENT_MVMT + SET + MVMT_CHPNUM1_ser_before = w_SMV_MOUVEMENT_MVMT_before.MVMT_CHPNUM1_ser, + MVMT_CHPNUM1_uf_before = w_SMV_MOUVEMENT_MVMT_before.MVMT_CHPNUM1_uf, + MVMT_CHPNUM1_um_before = w_SMV_MOUVEMENT_MVMT_before.MVMT_CHPNUM1_um, + MVMT_CHPNUM1_eta_before = w_SMV_MOUVEMENT_MVMT_before.MVMT_CHPNUM1_eta + FROM w_SMV_MOUVEMENT_MVMT w_SMV_MOUVEMENT_MVMT_before + WHERE w_SMV_MOUVEMENT_MVMT.DADM_ID = w_SMV_MOUVEMENT_MVMT_before.DADM_ID AND + w_SMV_MOUVEMENT_MVMT.sequence = w_SMV_MOUVEMENT_MVMT_before.sequence + 1 AND + w_SMV_MOUVEMENT_MVMT.TMVT_CODE_S <> 'S'; + + + UPDATE w_SMV_MOUVEMENT_MVMT + SET + MVMT_CHPNUM1_ser_before = MVMT_CHPNUM1_ser, + MVMT_CHPNUM1_uf_before = MVMT_CHPNUM1_uf, + MVMT_CHPNUM1_um_before = MVMT_CHPNUM1_um, + MVMT_CHPNUM1_eta_before = MVMT_CHPNUM1_eta + WHERE w_SMV_MOUVEMENT_MVMT.est_entree = '1'; + + -- calcul mvt après + + UPDATE w_SMV_MOUVEMENT_MVMT + SET + MVMT_CHPNUM1_ser_after = w_SMV_MOUVEMENT_MVMT_after.MVMT_CHPNUM1_ser, + MVMT_CHPNUM1_uf_after = w_SMV_MOUVEMENT_MVMT_after.MVMT_CHPNUM1_uf, + MVMT_CHPNUM1_um_after = w_SMV_MOUVEMENT_MVMT_after.MVMT_CHPNUM1_um, + MVMT_CHPNUM1_eta_after = w_SMV_MOUVEMENT_MVMT_after.MVMT_CHPNUM1_eta + FROM w_SMV_MOUVEMENT_MVMT w_SMV_MOUVEMENT_MVMT_after + WHERE w_SMV_MOUVEMENT_MVMT.DADM_ID = w_SMV_MOUVEMENT_MVMT_after.DADM_ID AND + w_SMV_MOUVEMENT_MVMT.sequence = w_SMV_MOUVEMENT_MVMT_after.sequence - 1 AND + w_SMV_MOUVEMENT_MVMT.TMVT_CODE_S <> 'S'; + + UPDATE w_SMV_MOUVEMENT_MVMT + SET + MVMT_CHPNUM1_ser_after = MVMT_CHPNUM1_ser, + MVMT_CHPNUM1_uf_after = MVMT_CHPNUM1_uf, + MVMT_CHPNUM1_um_after = MVMT_CHPNUM1_um, + MVMT_CHPNUM1_eta_after = MVMT_CHPNUM1_eta + FROM w_SMV_MOUVEMENT_MVMT_2 + WHERE w_SMV_MOUVEMENT_MVMT.DADM_ID = w_SMV_MOUVEMENT_MVMT_2.DADM_ID AND + sequence = sequence_last; + + + UPDATE w_SMV_MOUVEMENT_MVMT + SET key = MVMT_CHPNUM1_gir || '|' || MVMT_CHPNUM1_ser || '|' || MVMT_CHPNUM1_uf || '|' || MVMT_CHPNUM1_um || '|' || MVMT_CHPNUM1_activite || '|' || MVMT_CHPNUM1_eta || '|' || MVMT_CHPNUM1_lit; + + + DROP TABLE IF EXISTS w_SMV_MOUVEMENT_MVMT_keys; + CREATE TEMP TABLE w_SMV_MOUVEMENT_MVMT_keys AS + SELECT + key, + MVMT_CHPNUM1_gir, + MVMT_CHPNUM1_ser, + MVMT_CHPNUM1_uf, + MVMT_CHPNUM1_um, + MVMT_CHPNUM1_activite, + MVMT_CHPNUM1_eta, + MVMT_CHPNUM1_lit, + + ''::text AS mode_traitement_code, + ''::text AS dmt_code, + '0'::text AS type_sejour_force, + '0'::text AS chambre_particuliere, + + 0::bigint AS gir_id, + 0::bigint AS service_facturation_id, + 0::bigint AS mode_traitement_id, + 0::bigint AS unite_fonctionnelle_id, + 0::bigint AS unite_medicale_id, + 0::bigint AS activite_id, + 0::bigint AS etage_id, + 0::bigint AS lit_id, + 0::bigint AS lieu_id + FROM w_SMV_MOUVEMENT_MVMT + GROUP BY 1,2,3,4,5,6,7,8; + + + + + UPDATE w_SMV_MOUVEMENT_MVMT_keys + SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = t_modes_traitement.oid, + mode_traitement_code = t_modes_traitement.code, + dmt_code = t_dmt.code, + type_sejour_force = CASE WHEN t_services_facturation.type_sejour IN ('1', '2', '3', '4', '5') THEN t_services_facturation.type_sejour ELSE '0' END + FROM activite[PX].t_services_facturation + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + WHERE t_services_facturation.code_original = MVMT_CHPNUM1_ser; + + + + UPDATE w_SMV_MOUVEMENT_MVMT_keys + SET unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM activite[PX].t_unites_fonctionnelles + WHERE t_unites_fonctionnelles.code_original = MVMT_CHPNUM1_uf; + + + UPDATE w_SMV_MOUVEMENT_MVMT_keys + SET unite_medicale_id = COALESCE(t_unites_medicales.oid,0) + FROM activite[PX].t_unites_medicales + WHERE t_unites_medicales.code_original = MVMT_CHPNUM1_um; + + + UPDATE w_SMV_MOUVEMENT_MVMT_keys + SET activite_id = COALESCE(t_activites.oid,0) + FROM activite[PX].t_activites + WHERE t_activites.code_original = MVMT_CHPNUM1_activite; + + + UPDATE w_SMV_MOUVEMENT_MVMT_keys + SET lit_id = COALESCE(t_lits.oid,0), + MVMT_CHPNUM1_eta = CASE WHEN t_lits.etage_id <> 0 THEN COALESCE(t_etages.code_original,'0') ELSE '0' END, + etage_id = COALESCE(t_lits.etage_id,0), + chambre_particuliere = t_lits.chambre_particuliere + FROM activite[PX].t_lits + JOIN activite[PX].t_etages ON t_lits.etage_id = t_etages.oid + WHERE t_lits.code_original = MVMT_CHPNUM1_lit; + + + + INSERT INTO activite[PX].t_lieux( + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + code_original_6, + gir_code_original) + SELECT + MVMT_CHPNUM1_ser, + MVMT_CHPNUM1_activite, + MVMT_CHPNUM1_eta, + MVMT_CHPNUM1_lit, + MVMT_CHPNUM1_um, + MVMT_CHPNUM1_uf, + MVMT_CHPNUM1_gir + FROM w_SMV_MOUVEMENT_MVMT_keys + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = MVMT_CHPNUM1_ser AND + code_original_2 = MVMT_CHPNUM1_activite AND + code_original_3 = MVMT_CHPNUM1_eta AND + code_original_4 = MVMT_CHPNUM1_lit AND + code_original_5 = MVMT_CHPNUM1_um AND + code_original_6 = MVMT_CHPNUM1_uf AND + gir_code_original = MVMT_CHPNUM1_gir + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5,6,7; + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original + AND (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + activite_id = COALESCE(t_activites.oid,0) + FROM activite[PX].t_activites + WHERE code_original_2 = t_activites.code_original + AND activite_id <> COALESCE(t_activites.oid,0); + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + UPDATE activite[PX].t_lieux SET + unite_medicale_id = COALESCE(t_unites_medicales.oid,0) + FROM activite[PX].t_unites_medicales + WHERE code_original_5 = t_unites_medicales.code_original + AND unite_medicale_id <> COALESCE(t_unites_medicales.oid,0); + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + + + + + UPDATE w_SMV_MOUVEMENT_MVMT_keys + set lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = MVMT_CHPNUM1_ser AND + code_original_2 = MVMT_CHPNUM1_activite AND + code_original_3 = MVMT_CHPNUM1_eta AND + code_original_4 = MVMT_CHPNUM1_lit AND + code_original_5 = MVMT_CHPNUM1_um AND + code_original_6 = MVMT_CHPNUM1_uf AND + gir_code_original = MVMT_CHPNUM1_gir; + + + DROP TABLE IF EXISTS w_mouvements_sejour; + + CREATE TEMP TABLE w_mouvements_sejour AS + SELECT + w_SMV_MOUVEMENT_MVMT.DADM_ID, + p_sejours.no_sejour AS no_sejour, + p_sejours.oid AS sejour_id, + sequence, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE WHEN p_calendrier.date = MVMT_date THEN MVMT_heure ELSE 0 END AS heure_debut, + CASE WHEN p_calendrier.date = MVMT_date_fin THEN MVMT_heure_fin ELSE 240000 END AS heure_fin, + CASE WHEN p_calendrier.date = MVMT_date AND est_entree = '1' AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes, + CASE WHEN p_calendrier.date = MVMT_date_fin AND est_sortie = '1' AND p_sejours.code_sorti = '1' AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes, + CASE WHEN p_calendrier.date = MVMT_date AND est_entree = '1' AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree, + CASE WHEN p_calendrier.date = MVMT_date_fin AND est_sortie = '1' AND p_sejours.code_sorti = '1' AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie, + CASE WHEN p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN p_calendrier.date = MVMT_date AND est_entree = '1' AND p_sejours.type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires, + CASE WHEN p_calendrier.date = MVMT_date AND est_entree = '1' AND p_sejours.type_sejour = '3' THEN 1 ELSE 0 END AS nb_externes, + CASE WHEN p_calendrier.date = MVMT_date AND est_entree = '1' AND p_sejours.type_sejour <> '9' AND dmt_code IN ('303', '307', '308', '401', '402', '403', '404', '405', '406', '407', '408', '409') THEN 1 ELSE 0 END AS nb_urgences, + 0 as nb_seances, + + CASE WHEN p_calendrier.date = MVMT_date AND p_sejours.type_sejour = '1' AND w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_ser <> MVMT_CHPNUM1_ser_before THEN 1 ELSE 0 END AS nb_entrees_mutation_service, + CASE WHEN p_calendrier.date = MVMT_date_fin AND p_sejours.type_sejour = '1' AND w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_ser <> MVMT_CHPNUM1_ser_after THEN 1 ELSE 0 END AS nb_sorties_mutation_service, + CASE WHEN p_calendrier.date = MVMT_date AND p_sejours.type_sejour = '1' AND w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_eta <> MVMT_CHPNUM1_eta_before THEN 1 ELSE 0 END AS nb_entrees_mutation_etage, + CASE WHEN p_calendrier.date = MVMT_date_fin AND p_sejours.type_sejour = '1' AND w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_eta <> MVMT_CHPNUM1_eta_after THEN 1 ELSE 0 END AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + CASE WHEN p_calendrier.date = MVMT_date AND p_sejours.type_sejour = '1' AND w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_um <> MVMT_CHPNUM1_um_before THEN 1 ELSE 0 END AS nb_entrees_mutation_unite_medicale, + CASE WHEN p_calendrier.date = MVMT_date_fin AND p_sejours.type_sejour = '1' AND w_SMV_MOUVEMENT_MVMT.MVMT_CHPNUM1_um <> MVMT_CHPNUM1_um_after THEN 1 ELSE 0 END AS nb_sorties_mutation_unite_medicale, + + CASE WHEN p_sejours.type_sejour = '1' AND (p_calendrier.date <> MVMT_date_fin OR est_sortie = '1') THEN 1 ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN p_sejours.type_sejour = '1' AND p_calendrier.date <> MVMT_date_fin THEN 1 ELSE 0 END AS nb_jours_js_non_inclus, + + CASE WHEN p_sejours.type_sejour = '1' AND chambre_particuliere = 'O' THEN '1' ELSE '0' END AS est_chambre_particuliere, + CASE WHEN p_sejours.type_sejour = '1' AND chambre_particuliere = 'O' AND (p_calendrier.date <> MVMT_date_fin OR est_sortie = '1') THEN 1 ELSE 0 END AS nb_chambres_particulieres, + + 0::numeric AS nb_bebes, + + + lieu_id, + + p_sejours.medecin_sejour_id as medecin_sejour_id, + '0'::text AS est_premier_mouvement_jour, + '0'::text AS est_dernier_mouvement_jour, + + CASE WHEN p_sejours.code_prevu = '1' OR p_calendrier.date > date(now()) THEN '1' ELSE '0' END AS est_mouvement_previsionnel + + FROM w_SMV_MOUVEMENT_MVMT + JOIN activite[PX].p_sejours ON w_SMV_MOUVEMENT_MVMT.DADM_ID = p_sejours.code_original AND p_sejours.etat = '' + JOIN w_SMV_MOUVEMENT_MVMT_keys ON w_SMV_MOUVEMENT_MVMT.key = w_SMV_MOUVEMENT_MVMT_keys.key + JOIN base.p_calendrier ON (p_calendrier.date BETWEEN MVMT_date AND MVMT_date_fin AND p_calendrier.date <= now() OR (p_calendrier.date = p_sejours.date_entree AND est_entree = '1')) + WHERE w_SMV_MOUVEMENT_MVMT.TMVT_CODE_S <> 'S' + AND (p_sejours.type_sejour NOT IN ('2', '3') OR (p_sejours.type_sejour IN ('2', '3') AND est_entree = '1' AND p_calendrier.date = MVMT_date)) + AND p_sejours.code_prevu <> '1' + ORDER BY sequence, p_calendrier.date; + + + UPDATE w_mouvements_sejour p_mouvements_sejour + SET est_jour_entree = '1' + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + date_entree = date and est_jour_entree <> '1'; + + UPDATE w_mouvements_sejour p_mouvements_sejour + SET est_jour_sortie = '1' + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + code_sorti = '1' AND + date_sortie = date and est_jour_sortie <> '1' + ; + + UPDATE w_mouvements_sejour + SET nb_seances = w_MPM_RECUEIL_RECG_type_sejour.nb_seances + FROM w_MPM_RECUEIL_RECG_type_sejour + WHERE w_MPM_RECUEIL_RECG_type_sejour.DADM_NDA_ETAB = w_mouvements_sejour.no_sejour AND + w_MPM_RECUEIL_RECG_type_sejour.RECG_DATEDEBUT = w_mouvements_sejour.date AND + w_MPM_RECUEIL_RECG_type_sejour.nb_seances > 0; + + + -- Séances d'après GHM + DROP TABLE IF EXISTS w_correction_seance; + CREATE TEMP TABLE w_correction_seance AS + SELECT p_sejours.no_sejour, + MIN(p_mouvements_sejour.date) AS date_seance, + (MIN(ARRAY[p_mouvements_sejour.date::text,heure_debut::text]))[2]::numeric AS heure_seance + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + LEFT JOIN w_mouvements_sejour p_mouvements_sejour ON p_sejours.no_sejour = p_mouvements_sejour.no_sejour + LEFT JOIN base.t_ghm ON ghm_id = t_ghm.oid + WHERE p_sejours.type_sejour <> '9' AND + ( + t_ghm.code LIKE '28%' AND t_services_facturation.type_sejour IS DISTINCT FROM '0sauf5' OR + t_services_facturation.type_sejour = '5' + ) + GROUP BY 1 + HAVING + ( + SUM(nb_seances) = 0 + ) + ; + + UPDATE w_mouvements_sejour + SET nb_seances = 1 + FROM w_correction_seance + WHERE w_correction_seance.no_sejour = w_mouvements_sejour.no_sejour AND + w_correction_seance.date_seance = w_mouvements_sejour.date AND + w_correction_seance.heure_seance = w_mouvements_sejour.heure_debut + ; + + + -- Génération + DELETE FROM w_mouvements_sejour + WHERE + nb_entrees_directes = 0 AND + nb_sorties_directes = 0 AND + est_jour_hospitalisation <> '1' AND + nb_ambulatoires = 0 AND + nb_externes = 0 AND + nb_urgences = 0 AND + nb_seances = 0 AND + nb_entrees_mutation_service = 0 AND + nb_sorties_mutation_service = 0 AND + nb_entrees_mutation_etage = 0 AND + nb_sorties_mutation_etage = 0 AND + nb_entrees_mutation_activite = 0 AND + nb_sorties_mutation_activite = 0 AND + nb_entrees_mutation_unite_medicale = 0 AND + nb_sorties_mutation_unite_medicale = 0 AND + nb_jours_js_inclus = 0 AND + nb_jours_js_non_inclus = 0 AND + est_chambre_particuliere <> '1' AND + nb_chambres_particulieres = 0 AND + nb_bebes = 0; + + -- Report des journées en HDJ (type mouvement D sur mode 04 à partir de la date de démarrage CSIS + UPDATE w_mouvements_sejour + SET heure_fin = 240000 + WHERE heure_fin = 235959 + ; + + DROP TABLE IF EXISTS w_SMV_MOUVEMENT_MVMT_fhdj; + CREATE TEMP TABLE w_SMV_MOUVEMENT_MVMT_fhdj AS + SELECT MVMT_ID_DADM, + DADM_NDA, + date(DADM_DATEDEBUT) AS DADM_DATEDEBUT, + date(MIN(CASE WHEN TMVT_CODE = 'D' AND OMVT_CODE <> 'I' THEN MVMT_DATEHEURE ELSE NULL END)) AS date_premier_hdj, + date(CASE + WHEN t_divers.valeur = '1' + THEN DADM_DATEDEBUT + WHEN date(MIN(MVMT_DATEHEURE)) >= date_demarrage + THEN MIN(MVMT_DATEHEURE) + WHEN date(MAX(MVMT_DATEHEURE)) >= date_demarrage + THEN MIN(MVMT_DATEHEURE) + WHEN date(MIN(CASE WHEN TMVT_CODE = 'D' AND OMVT_CODE <> 'I' THEN MVMT_DATEHEURE ELSE NULL END)) IS NULL + THEN date_demarrage + WHEN date(MIN(CASE WHEN TMVT_CODE = 'D' AND OMVT_CODE <> 'I' THEN MVMT_DATEHEURE ELSE NULL END)) - date(DADM_DATEDEBUT) <= 5 + THEN DADM_DATEDEBUT + ELSE date(MIN(CASE WHEN TMVT_CODE = 'D' AND OMVT_CODE <> 'I' THEN MVMT_DATEHEURE ELSE NULL END)) + END) AS date_demarrage_sejour + FROM w_SMV_MOUVEMENT_MVMT_source SMV_MOUVEMENT_MVMT + JOIN prod_csis.SID_DOSSIERADMINISTRATIF_DADM ON MVMT_ID_DADM = DADM_ID + JOIN prod_csis.SST_DISCIPINTERNE_DSNT ON MVMT_CHPNUM1 = DSNT_ID + JOIN activite[PX].t_services_facturation ON DSNT_ID = t_services_facturation.code_original + JOIN prod_csis.SNO_MODE_MODE ON DSNT_ID_MODE = MODE_ID + JOIN activite[PX].p_sejours ON p_sejours.code_original = DADM_ID AND etat = '' + JOIN prod_csis.SMV_ORDREMOUVEMENT_OMVT ON OMVT_ID = MVMT_ID_OMVT + JOIN w_demarrage ON 1=1 + JOIN activite.t_divers ON t_divers.code = 'CSIS_FACHISTOHDJ' + WHERE SMVT_CODE <> 'A' AND + MODE_CODE = '04' AND + t_services_facturation.type_t2a = '2' + GROUP BY 1,2,3,DADM_DATEDEBUT, date_demarrage, t_divers.valeur + ORDER BY 1,2; + + DROP TABLE IF EXISTS w_SMV_MOUVEMENT_MVMT_hdj; + CREATE TEMP TABLE w_SMV_MOUVEMENT_MVMT_hdj AS + SELECT SMV_MOUVEMENT_MVMT.MVMT_ID_DADM, + SID_DOSSIERADMINISTRATIF_DADM.DADM_NDA, + base.cti_group_array3(date(MVMT_DATEHEURE)) AS dates_hdj + FROM w_SMV_MOUVEMENT_MVMT_source SMV_MOUVEMENT_MVMT + JOIN prod_csis.SID_DOSSIERADMINISTRATIF_DADM ON MVMT_ID_DADM = DADM_ID + JOIN prod_csis.SST_DISCIPINTERNE_DSNT ON MVMT_CHPNUM1 = DSNT_ID + JOIN prod_csis.SNO_MODE_MODE ON DSNT_ID_MODE = MODE_ID + JOIN activite[PX].p_sejours ON code_original = DADM_ID AND etat = '' + JOIN w_SMV_MOUVEMENT_MVMT_fhdj ON w_SMV_MOUVEMENT_MVMT_fhdj.MVMT_ID_DADM = SMV_MOUVEMENT_MVMT.MVMT_ID_DADM AND + MVMT_DATEHEURE >= date_demarrage_sejour + WHERE TMVT_CODE = 'D' AND + SMVT_CODE <> 'A' AND + MODE_CODE = '04' + GROUP BY 1,2 + ORDER BY 1,2; + + DROP TABLE IF EXISTS w_mouvements_hdj; + CREATE TEMP TABLE w_mouvements_hdj AS + SELECT p_mouvements_sejour.no_sejour, date, heure_debut, heure_fin, + CASE + WHEN est_jour_entree <> '1' AND + p_mouvements_sejour.date = ANY(dates_hdj) AND + (heure_fin = 240000 OR nb_sorties_directes = 1 OR est_dernier_mouvement_jour = '1') + THEN 1 + WHEN est_jour_entree = '1' AND + p_mouvements_sejour.date = ANY(dates_hdj) AND + (nb_entrees_directes = 1) + THEN 1 + ELSE 0 END AS ok_hdj + FROM w_mouvements_sejour p_mouvements_sejour + JOIN activite[PX].p_sejours ON p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND type_sejour = '1' + JOIN w_SMV_MOUVEMENT_MVMT_hdj ON w_SMV_MOUVEMENT_MVMT_hdj.MVMT_ID_DADM = p_sejours.code_original + JOIN w_SMV_MOUVEMENT_MVMT_fhdj ON w_SMV_MOUVEMENT_MVMT_fhdj.MVMT_ID_DADM = p_sejours.code_original AND + date >= date_demarrage_sejour; + + + UPDATE w_mouvements_sejour p_mouvements_sejour SET + heure_fin = CASE WHEN p_mouvements_sejour.nb_sorties_directes <> 1 THEN 190000 ELSE p_mouvements_sejour.heure_fin END, + est_dernier_mouvement_jour = '1' + FROM w_mouvements_hdj + WHERE w_mouvements_hdj.no_sejour = p_mouvements_sejour.no_sejour AND + w_mouvements_hdj.date = p_mouvements_sejour.date AND + w_mouvements_hdj.heure_debut = p_mouvements_sejour.heure_debut AND + ok_hdj = 1; + + DELETE + FROM w_mouvements_sejour p_mouvements_sejour + USING w_mouvements_hdj + WHERE w_mouvements_hdj.no_sejour = p_mouvements_sejour.no_sejour AND + w_mouvements_hdj.date = p_mouvements_sejour.date AND + w_mouvements_hdj.heure_debut = p_mouvements_sejour.heure_debut AND + ok_hdj = 0 AND + nb_entrees_directes <> 1 AND + nb_sorties_directes <> 1 ; + + + -- Mise en production des mouvements + + INSERT INTO activite[PX].p_mouvements_sejour( + sejour_id, no_sejour, date, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + jour_semaine, is_weekend, + est_premier_mouvement_jour, est_dernier_mouvement_jour, + est_mouvement_previsionnel) + SELECT sejour_id, no_sejour, date,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + jour_semaine, is_weekend, + est_premier_mouvement_jour, est_dernier_mouvement_jour, + est_mouvement_previsionnel + FROM w_mouvements_sejour + WHERE heure_fin >= heure_debut + ORDER BY no_sejour, sequence; + + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + WHERE type_sejour <> '5' AND + type_sejour <> '1' AND + no_sejour IN ( + SELECT no_sejour + FROM activite[PX].p_mouvements_sejour + WHERE nb_seances > 0); + + + UPDATE activite[PX].p_mouvements_sejour + SET nb_externes = 0, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + ( + nb_externes <> 0 OR + nb_ambulatoires <> 0 + ); + + UPDATE activite[PX].p_sejours + SET code_sorti = '1' + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + code_sorti = '0' AND + (nb_ambulatoires > 0 OR nb_externes > 0) AND + date_sortie <= now(); + + + ]]> + + + + + + + + + '' AND + CGRD_ID_PRTB <> 0; + + -- Nouveaux comptes + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT CCPT_CODE,CCPT_CODE, MAX(CCPT_LIBELLE), MAX(CCPT_LIBELLECOURT) + FROM prod_csis.SST_CPTACOMPTE_CCPT + WHERE CCPT_CODE <> '' AND + CCPT_CODE NOT IN (SELECT code_original FROM activite[PX].t_compte WHERE code IS NOT NULL) + GROUP BY 1 + ORDER BY 1; + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT CPTF_COMPTE,CPTF_COMPTE, MAX(CPTF_COMPTE), MAX(CPTF_COMPTE) + FROM prod_csis.SCP_CPTATRANSFERT_CPTF + WHERE CPTF_COMPTE <> '' AND + CPTF_COMPTE NOT IN (SELECT code_original FROM activite[PX].t_compte WHERE code IS NOT NULL) + GROUP BY 1 + ORDER BY 1; + + UPDATE activite[PX].t_compte + SET texte = CCPT_LIBELLE, texte_court = CCPT_LIBELLECOURT + FROM prod_csis.SST_CPTACOMPTE_CCPT + WHERE code = texte AND + CCPT_CODE = t_compte.code + ; + + + DROP TABLE IF EXISTS w_MPM_FACTURE_RECF ; + CREATE TEMP TABLE w_MPM_FACTURE_RECF AS + SELECT + *, + date(RECF_DATEFACTDEB) AS MPM_DATE_FACTURE, + date(RECF_DATEFACTDEB) AS MPM_DATE_VALIDATION, + date(RECF_DATEFACTDEB) AS MPM_DATE_VENTE, + RECF_NUMFACTALIAS::text AS RECF_NUMFACTALIAS_ETAB + FROM prod_csis.MPM_FACTURE_RECF ; + + -- Prise en compte factures non validées + UPDATE w_MPM_FACTURE_RECF + SET MPM_DATE_VALIDATION = date(RECF_DATEGENERATION), + MPM_DATE_FACTURE = date(RECF_DATEGENERATION) + FROM activite.t_divers + WHERE t_divers.code = 'CSIS_FACNVAL' AND + t_divers.valeur = '1' AND + MPM_DATE_FACTURE IS NULL; + + UPDATE w_MPM_FACTURE_RECF + SET MPM_DATE_FACTURE = date(RECF_DATEGENERATION) + FROM activite.t_divers + WHERE t_divers.code = 'CSIS_FACNVAL' AND + t_divers.valeur = '2' AND + MPM_DATE_FACTURE IS NULL; + + UPDATE w_MPM_FACTURE_RECF + SET MPM_DATE_VENTE = date(CPCL_DATEFIN) + FROM activite.t_divers, + prod_csis.SCP_CPTACLOTURE_CPCL + WHERE t_divers.code = 'CSIS_FACDATVEN' AND + t_divers.valeur = '1' AND + RECF_ID_CPCL = CPCL_ID AND + RECF_ID_CPCL <> 0; + + UPDATE w_MPM_FACTURE_RECF + SET MPM_DATE_VENTE = date(CPCL_DATEFIN) + FROM activite.t_divers, + prod_csis.SCP_CPTACLOTURE_CPCL + WHERE t_divers.code = 'CSIS_FACDATVEN' AND + t_divers.valeur = '1' AND + RECF_ID2_CPCL = CPCL_ID AND + RECF_ID2_CPCL <> 0; + + -- Si facture non validée, raz dates + -- UPDATE w_MPM_FACTURE_RECF + -- SET MPM_DATE_VENTE = NULL, + -- MPM_DATE_FACTURE = NULL, + -- MPM_DATE_VALIDATION = NULL + -- WHERE RECF_STATUT <> 'V' + -- ; + + UPDATE w_MPM_FACTURE_RECF + SET RECF_NUMFACTALIAS_ETAB = w_MPM_FACTURE_RECF.RECF_NUMFACTALIAS_ETAB || '-' || ETAB_PREFIX + FROM + ( + SELECT RECF_NUMFACTALIAS_ETAB, count(*) + FROM w_MPM_FACTURE_RECF + GROUP BY 1 + HAVING count(*) > 1 + ) subview, + w_SST_ETABLISSEMENT_ETAB + WHERE w_MPM_FACTURE_RECF.RECF_NUMFACTALIAS_ETAB = subview.RECF_NUMFACTALIAS_ETAB AND + RECF_ID_ETAB = ETAB_ID + ; + + -- Numéros de factures en double ? + SELECT base.cti_execute(' + UPDATE w_MPM_FACTURE_RECF MPM_FACTURE_RECF + SET RECF_NUMFACTALIAS_ETAB = MPM_FACTURE_RECF.RECF_NUMFACTALIAS_ETAB || ''-''::text || nb::text + FROM + ( + SELECT RECF_NUMFACTALIAS_ETAB, RECF_ID_ETAB, MAX(RECF_ID) AS RECF_ID_doublon, count(*) AS nb + FROM w_MPM_FACTURE_RECF MPM_FACTURE_RECF + GROUP BY 1,2 + HAVING count(*) > 1 + ) subview + WHERE MPM_FACTURE_RECF.RECF_NUMFACTALIAS_ETAB = subview.RECF_NUMFACTALIAS_ETAB AND + MPM_FACTURE_RECF.RECF_ID_ETAB = subview.RECF_ID_ETAB AND + MPM_FACTURE_RECF.RECF_ID = RECF_ID_doublon + ',10) + ; + + + + DROP TABLE IF EXISTS w_MPM_RECUEILTIERS_RECT; + CREATE TEMP TABLE w_MPM_RECUEILTIERS_RECT AS + SELECT + DADM_ID, + DADM_ID_ETAB, + DADM_NDA_ETAB, + RECF_ID, + RECF_NUMFACTALIAS_ETAB, + ASSU_ID, + ASSU_TYPE, + ASSU_DISTINCTIF, + CASE WHEN ASSU_TYPE = 'O' THEN RECT_ID_ORGN ELSE 0 END as ASSU_ID_ORGN_1, + CASE WHEN ASSU_TYPE = 'C' AND ASSU_DISTINCTIF = 1 THEN RECT_ID_ORGN ELSE 0 END as ASSU_ID_ORGN_2, + CASE WHEN ASSU_TYPE = 'C' AND ASSU_DISTINCTIF <> 1 THEN RECT_ID_ORGN ELSE 0 END as ASSU_ID_ORGN_22, + CASE WHEN SNO_ETATRECUEIL_ETRC_RECT.ETRC_CODE <> 'A' OR SNO_ETATRECUEIL_ETRC_RECT.ETRC_CODE = 'A' AND RECT_ANNULEPARAVOIR = 1 THEN 1 ELSE 0 END::int AS RECT_OKFACTURE, + CASE WHEN SNO_ETATRECUEIL_ETRC_RECG.ETRC_CODE <> 'A' OR SNO_ETATRECUEIL_ETRC_RECG.ETRC_CODE = 'A' AND RECG_ANNULEPARAVOIR = 1 THEN 1 ELSE 0 END::int AS RECT_OKLIGNEFACTURE, + MPM_RECUEILTIERS_RECT.*, + MPM_RECUEIL_RECG.*, + MPM_RECUEILCCAM_RECC.*, + CASE WHEN RECT_TYPEDEBITEUR = 'D' OR ASSU_ID IS NULL THEN LEAST(COALESCE(RECT_TAUXREEL,RECT_TAUXPEC), 100.00) ELSE 0 END as RECT_TAUX_0, + CASE WHEN ASSU_TYPE = 'O' THEN LEAST(COALESCE(RECT_TAUXREEL,RECT_TAUXPEC), 100.00) ELSE 0 END as RECT_TAUX_1, + CASE WHEN ASSU_TYPE = 'C' AND ASSU_DISTINCTIF = 1 THEN LEAST(COALESCE(RECT_TAUXREEL,RECT_TAUXPEC), 100.00) ELSE 0 END as RECT_TAUX_2, + CASE WHEN ASSU_TYPE = 'C' AND ASSU_DISTINCTIF <> 1 THEN LEAST(COALESCE(RECT_TAUXREEL,RECT_TAUXPEC), 100.00) ELSE 0 END as RECT_TAUX_22, + CASE WHEN (MPM_DATE_VENTE IS NOT NULL OR MPM_DATE_FACTURE IS NOT NULL) THEN RECT_MONTANT ELSE 0 END AS RECT_MONTANT_FAC, + CASE WHEN (MPM_DATE_VENTE IS NOT NULL OR MPM_DATE_FACTURE IS NOT NULL) AND (RECT_TYPEDEBITEUR = 'D' OR ASSU_ID IS NULL) THEN RECT_MONTANT ELSE 0 END as RECT_MONTANT_FAC_0, + CASE WHEN (MPM_DATE_VENTE IS NOT NULL OR MPM_DATE_FACTURE IS NOT NULL) AND ASSU_TYPE = 'O' THEN RECT_MONTANT ELSE 0 END as RECT_MONTANT_FAC_1, + CASE WHEN (MPM_DATE_VENTE IS NOT NULL OR MPM_DATE_FACTURE IS NOT NULL) AND ASSU_TYPE = 'C' AND ASSU_DISTINCTIF = 1 THEN RECT_MONTANT ELSE 0 END as RECT_MONTANT_FAC_2, + CASE WHEN (MPM_DATE_VENTE IS NOT NULL OR MPM_DATE_FACTURE IS NOT NULL) AND ASSU_TYPE = 'C' AND ASSU_DISTINCTIF <> 1 THEN RECT_MONTANT ELSE 0 END as RECT_MONTANT_FAC_22, + CASE WHEN RECT_DOTATION IS DISTINCT FROM '1' AND MPM_DATE_VENTE IS NOT NULL THEN RECT_MONTANT ELSE 0 END as RECT_MONTANT_CPT, + CASE WHEN RECT_DOTATION IS DISTINCT FROM '1' AND MPM_DATE_VENTE IS NOT NULL AND (RECT_TYPEDEBITEUR = 'D' OR ASSU_ID IS NULL) THEN RECT_MONTANT ELSE 0 END as RECT_MONTANT_CPT_0, + CASE WHEN RECT_DOTATION IS DISTINCT FROM '1' AND MPM_DATE_VENTE IS NOT NULL AND ASSU_TYPE = 'O' THEN RECT_MONTANT ELSE 0 END as RECT_MONTANT_CPT_1, + CASE WHEN RECT_DOTATION IS DISTINCT FROM '1' AND MPM_DATE_VENTE IS NOT NULL AND ASSU_TYPE = 'C' AND ASSU_DISTINCTIF = 1 THEN RECT_MONTANT ELSE 0 END as RECT_MONTANT_CPT_2, + CASE WHEN RECT_DOTATION IS DISTINCT FROM '1' AND MPM_DATE_VENTE IS NOT NULL AND ASSU_TYPE = 'C' AND ASSU_DISTINCTIF <> 1 THEN RECT_MONTANT ELSE 0 END as RECT_MONTANT_CPT_22, + RECT_MONTANTREGLE AS RECT_MONTANT_REG, + CASE WHEN RECT_TYPEDEBITEUR = 'D' OR ASSU_ID IS NULL THEN RECT_MONTANTREGLE ELSE 0 END as RECT_MONTANT_REG_0, + CASE WHEN ASSU_TYPE = 'O' THEN RECT_MONTANTREGLE ELSE 0 END as RECT_MONTANT_REG_1, + CASE WHEN ASSU_TYPE = 'C' AND ASSU_DISTINCTIF = 1 THEN RECT_MONTANTREGLE ELSE 0 END as RECT_MONTANT_REG_2, + CASE WHEN ASSU_TYPE = 'C' AND ASSU_DISTINCTIF <> 1 THEN RECT_MONTANTREGLE ELSE 0 END as RECT_MONTANT_REG_22, + + COALESCE(CPVP_COMPTE,'') AS CPVP_COMPTE, + + RECG_TYPELIGNE AS RECG_TYPELIGNE_CPTA, + + RECG_TYPELIGNE || '|' || + RECG_ID_PRTB || '|' || + COALESCE(CPVP_COMPTE,'') || '|' || + CASE WHEN RECG_TYPELIGNE = 3 THEN COALESCE(RECG_GHS,'') ELSE '' END || + CASE WHEN RECG_TYPELIGNE = 4 THEN COALESCE(RECC_CODECCAM,'') ELSE '' END || '|' || + CASE WHEN RECG_TYPELIGNE = 4 THEN COALESCE(RECC_ID_MEDN,RECG_ID1_MEDN) ELSE 0 END + AS key, + + CASE WHEN ASSU_TYPE = 'O' THEN RECT_ID_ORGN ELSE 0 END || '|' || + CASE WHEN ASSU_TYPE = 'C' AND ASSU_DISTINCTIF = 1 THEN RECT_ID_ORGN ELSE 0 END || '|' || + CASE WHEN ASSU_TYPE = 'C' AND ASSU_DISTINCTIF <> 1 THEN RECT_ID_ORGN ELSE 0 END + AS keytp + + FROM prod_csis.MPM_RECUEILTIERS_RECT + JOIN w_SID_DOSSIERADMINISTRATIF_DADM ON DADM_ID = RECT_ID_DADM + JOIN w_MPM_FACTURE_RECF MPM_FACTURE_RECF ON RECT_ID_RECF = RECF_ID + JOIN prod_csis.MPM_RECUEIL_RECG ON RECT_ID_RECG = RECG_ID + LEFT JOIN w_MPM_CPTAVENTEPRESTATION_CPVP ON CPVP_ID_RECG = RECG_ID + JOIN prod_csis.SNO_ETATRECUEIL_ETRC SNO_ETATRECUEIL_ETRC_RECT ON RECT_ID_ETRC = SNO_ETATRECUEIL_ETRC_RECT.ETRC_ID + JOIN prod_csis.SNO_ETATRECUEIL_ETRC SNO_ETATRECUEIL_ETRC_RECG ON RECG_ID_ETRC = SNO_ETATRECUEIL_ETRC_RECG.ETRC_ID + LEFT JOIN prod_csis.MPM_RECUEILCCAM_RECC ON (RECC_ID_RECG = RECG_ID) + LEFT JOIN prod_csis.MPE_ASSURANCE_ASSU ON (RECT_ID_ASSU = ASSU_ID); + + UPDATE w_MPM_RECUEILTIERS_RECT + SET RECG_TYPELIGNE_CPTA = 3, RECG_TYPELIGNE = 34 + FROM w_SST_ETABLISSEMENT_ETAB + WHERE DADM_ID_ETAB = ETAB_ID AND + ETAB_TYPE_PSPH = 1 AND + RECG_TYPELIGNE = 4 + ; + + UPDATE w_MPM_RECUEILTIERS_RECT + SET RECG_TYPELIGNE_CPTA = 3 + FROM activite[PX].t_medecins_administratifs + WHERE RECG_TYPELIGNE = 4 AND + ( + t_medecins_administratifs.code_original = RECC_ID_MEDN OR + t_medecins_administratifs.code_original = RECG_ID1_MEDN + ) AND + est_medecin_salarie = 1 + ; + + + CREATE INDEX i_w_MPM_RECUEILTIERS_RECT_1 + ON w_MPM_RECUEILTIERS_RECT + USING btree + (RECG_TYPELIGNE); + + CREATE INDEX i_w_MPM_RECUEILTIERS_RECT_TYPELIGNE_CPTA + ON w_MPM_RECUEILTIERS_RECT + USING btree + (RECG_TYPELIGNE_CPTA); + + CREATE INDEX i_w_MPM_RECUEILTIERS_RECT_2 + ON w_MPM_RECUEILTIERS_RECT + USING btree + (RECG_ID); + + CREATE INDEX i_w_MPM_RECUEILTIERS_RECT_3 + ON w_MPM_RECUEILTIERS_RECT + USING btree + (key); + + CREATE INDEX i_w_MPM_RECUEILTIERS_RECT_4 + ON w_MPM_RECUEILTIERS_RECT + USING btree + (keytp); + + CREATE INDEX i_w_MPM_RECUEILTIERS_RECG_ID + ON w_MPM_RECUEILTIERS_RECT + USING btree + (RECG_ID); + + ANALYSE w_MPM_RECUEILTIERS_RECT + ; + + DROP TABLE IF EXISTS w_MPM_RECUEILTIERS_RECT_keys; + CREATE TEMP TABLE w_MPM_RECUEILTIERS_RECT_keys AS + SELECT + key, + MAX(RECG_TYPELIGNE) AS key_TYPELIGNE, + MAX(RECG_ID_PRTB) AS key_ID_PRTB, + MAX(CPVP_COMPTE) AS key_COMPTE, + MAX(CASE WHEN RECG_TYPELIGNE IN (3,34) THEN RECG_GHS ELSE '' END) AS key_GHS, + MAX(CASE WHEN RECG_TYPELIGNE IN (4,34) THEN COALESCE(RECC_CODECCAM,'') ELSE '' END) AS key_CODECCAM, + MAX(CASE WHEN RECG_TYPELIGNE IN (4,34) THEN COALESCE(RECC_ID_MEDN,RECG_ID1_MEDN) ELSE 0 END) AS key_ID_MEDN, + ''::text AS acte_ngap_code_original, + 0::bigint AS rubrique_facturation_id, + 0::bigint AS prestation_id, + 0::bigint AS compte_produit_id, + 0::bigint AS ghs_id, + 0::bigint AS acte_id, + 0::bigint AS medecin_id + FROM w_MPM_RECUEILTIERS_RECT + GROUP BY 1; + + + UPDATE w_MPM_RECUEILTIERS_RECT_keys + SET rubrique_facturation_id = w_SST_PRESTATIONETAB_PRTB.rubrique_facturation_id + FROM w_SST_PRESTATIONETAB_PRTB + WHERE key_ID_PRTB = PRTB_ID + ; + + UPDATE w_MPM_RECUEILTIERS_RECT_keys + SET prestation_id = t_prestations.oid , + acte_ngap_code_original = PRES_CODE + FROM w_SST_PRESTATIONETAB_PRTB + JOIN prod_csis.SST_PRESTATION_PRES ON PRTB_ID_PRES = PRES_ID + JOIN activite.t_prestations ON PRES_CODE = t_prestations.code + WHERE key_ID_PRTB = PRTB_ID; + + UPDATE w_MPM_RECUEILTIERS_RECT_keys + SET compte_produit_id = t_compte.oid + FROM activite[PX].t_compte + WHERE key_COMPTE = t_compte.code; + + UPDATE w_MPM_RECUEILTIERS_RECT_keys + SET ghs_id = t_ghs.oid + FROM base.t_ghs + WHERE key_TYPELIGNE = 3 AND key_GHS <> '' AND key_GHS <> '0' AND to_number('0' || key_GHS,'00000') = t_ghs.code; + + INSERT INTO base.t_actes(code,texte,texte_court,nomenclature) + SELECT CASE WHEN key_CODECCAM <> '' THEN substring(key_CODECCAM, 1, 7) ELSE acte_ngap_code_original END, + CASE WHEN key_CODECCAM <> '' THEN substring(key_CODECCAM, 1, 7) ELSE acte_ngap_code_original END, + CASE WHEN key_CODECCAM <> '' THEN substring(key_CODECCAM, 1, 7) ELSE acte_ngap_code_original END, + CASE WHEN key_CODECCAM <> '' THEN 'CCAM' ELSE 'NGAP' END + FROM w_MPM_RECUEILTIERS_RECT_keys + WHERE key_TYPELIGNE IN (4,34) AND CASE WHEN key_CODECCAM <> '' THEN substring(key_CODECCAM, 1, 7) ELSE acte_ngap_code_original END NOT IN (SELECT code FROM base.t_actes WHERE code IS NOT NULL) + GROUP BY 1,2,3,4; + + + UPDATE w_MPM_RECUEILTIERS_RECT_keys + SET acte_id = t_actes.oid + FROM base.t_actes + WHERE key_TYPELIGNE IN (4,34) AND CASE WHEN key_CODECCAM <> '' THEN substring(key_CODECCAM, 1, 7) ELSE acte_ngap_code_original END = t_actes.code; + + UPDATE w_MPM_RECUEILTIERS_RECT_keys + SET medecin_id = t_medecins_administratifs.oid + FROM activite[PX].t_medecins_administratifs + WHERE key_TYPELIGNE IN (4,34) AND t_medecins_administratifs.code_original = key_ID_MEDN; + + + ALTER TABLE w_MPM_RECUEILTIERS_RECT_keys + ADD CONSTRAINT w_MPM_RECUEILTIERS_RECT_keys_pkey PRIMARY KEY(key); + + + + DROP TABLE IF EXISTS w_MPM_RECUEILTIERS_RECT_keystp; + CREATE TEMP TABLE w_MPM_RECUEILTIERS_RECT_keystp AS + SELECT + keytp, + ASSU_ID_ORGN_1, + ASSU_ID_ORGN_2, + ASSU_ID_ORGN_22, + + 0::bigint AS tiers_payant_0_id, + 0::bigint AS tiers_payant_1_id, + 0::bigint AS tiers_payant_2_id, + 0::bigint AS tiers_payant_22_id + FROM w_MPM_RECUEILTIERS_RECT + GROUP BY 1,2,3,4; + + + UPDATE w_MPM_RECUEILTIERS_RECT_keystp + SET tiers_payant_0_id = (SELECT MIN(oid) FROM activite[PX].t_tiers_payant WHERE code = 'PATIENTS'); + + UPDATE w_MPM_RECUEILTIERS_RECT_keystp + SET tiers_payant_1_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE ASSU_ID_ORGN_1 = t_tiers_payant.code_original; + + UPDATE w_MPM_RECUEILTIERS_RECT_keystp + SET tiers_payant_2_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE ASSU_ID_ORGN_2 = t_tiers_payant.code_original; + + UPDATE w_MPM_RECUEILTIERS_RECT_keystp + SET tiers_payant_22_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE ASSU_ID_ORGN_22 = t_tiers_payant.code_original; + + ALTER TABLE w_MPM_RECUEILTIERS_RECT_keystp + ADD CONSTRAINT w_MPM_RECUEILTIERS_RECT_keystp_pkey PRIMARY KEY(keytp); + + + DROP TABLE IF EXISTS w_MPM_FACTURE_RECF_exp; + CREATE TEMP TABLE w_MPM_FACTURE_RECF_exp AS + SELECT + RECF_ID, + MAX(CASE WHEN ETRC_CODE <> 'A' AND ASSU_TYPE = 'O' AND RECB_DATEENVOI IS NOT NULL THEN '1' ELSE '0' END) as code_expedie_1, + MAX(CASE WHEN ETRC_CODE <> 'A' AND ASSU_TYPE = 'C' AND RECB_DATEENVOI IS NOT NULL AND ASSU_DISTINCTIF = 1 THEN '1' ELSE '0' END) as code_expedie_2, + MAX(CASE WHEN ETRC_CODE <> 'A' AND ASSU_TYPE = 'C' AND RECB_DATEENVOI IS NOT NULL AND ASSU_DISTINCTIF <> 1 THEN '1' ELSE '0' END) as code_expedie_22, + MAX(CASE WHEN ETRC_CODE <> 'A' AND (RECB_TYPEDEBITEUR = 'D' OR ASSU_ID IS NULL) AND RECB_DATEENVOI IS NOT NULL THEN '1' ELSE '0' END) as code_expedie_0, + MAX(CASE WHEN ETRC_CODE <> 'A' AND ASSU_TYPE = 'O' THEN RECB_DATEENVOI ELSE null END) as date_expedition_1, + MAX(CASE WHEN ETRC_CODE <> 'A' AND ASSU_TYPE = 'C' AND ASSU_DISTINCTIF = 1 THEN RECB_DATEENVOI ELSE null END) as date_expedition_2, + MAX(CASE WHEN ETRC_CODE <> 'A' AND ASSU_TYPE = 'C' AND ASSU_DISTINCTIF <> 1 THEN RECB_DATEENVOI ELSE null END) as date_expedition_22, + MAX(CASE WHEN ETRC_CODE <> 'A' AND (RECB_TYPEDEBITEUR = 'D' OR ASSU_ID IS NULL) THEN RECB_DATEENVOI ELSE null END) as date_expedition_0, + MAX(CASE WHEN ETRC_CODE <> 'A' AND ASSU_TYPE = 'O' THEN RECB_NOBORD ELSE null END) as no_bordereau_1, + MAX(CASE WHEN ETRC_CODE <> 'A' AND ASSU_TYPE = 'C' AND ASSU_DISTINCTIF = 1 THEN RECB_NOBORD ELSE null END) as no_bordereau_2, + MAX(CASE WHEN ETRC_CODE <> 'A' AND ASSU_TYPE = 'C' AND ASSU_DISTINCTIF <> 1 THEN RECB_NOBORD ELSE null END) as no_bordereau_22, + MAX(CASE WHEN ETRC_CODE <> 'A' AND (RECB_TYPEDEBITEUR = 'D' OR ASSU_ID IS NULL) THEN RECB_NOBORD ELSE null END) as no_bordereau_0 + FROM w_MPM_FACTURE_RECF MPM_FACTURE_RECF + JOIN prod_csis.MPM_BORDEREAU_RECB ON RECB_ID_RECF = RECF_ID + JOIN prod_csis.SNO_ETATRECUEIL_ETRC ON RECB_ID_ETRC = ETRC_id + JOIN w_SID_DOSSIERADMINISTRATIF_DADM ON RECF_ID_DADM = DADM_ID + LEFT JOIN prod_csis.MPE_ASSURANCE_ASSU ON (RECB_ID_ASSU = ASSU_ID) + GROUP BY RECF_ID + ORDER BY 1; + + ALTER TABLE w_MPM_FACTURE_RECF_exp + ADD CONSTRAINT w_MPM_FACTURE_RECF_exp_pk_recf_id PRIMARY KEY(RECF_ID); + + DROP TABLE IF EXISTS w_MPM_FACTURE_RECF_fac; + CREATE TEMP TABLE w_MPM_FACTURE_RECF_fac AS + SELECT + RECF_ID, + MAX(CASE WHEN RECG_PRESTATION = 'GHS' AND RECG_TYPEGHS = 'P' THEN ghs_id ELSE 0 END) as ghs_id, + MAX(CASE WHEN RECG_PRESTATION IN ('SE1', 'SE2', 'SE3', 'SE4','SE5', 'SE6', 'SE7') THEN RECG_PRESTATION ELSE null END) as RECG_PRESTATION_SEx, + MAX(tiers_payant_0_id) as tiers_payant_0_id, + MAX(tiers_payant_1_id) as tiers_payant_1_id, + MAX(tiers_payant_2_id) as tiers_payant_2_id, + MAX(tiers_payant_22_id) as tiers_payant_22_id, + SUM(CASE WHEN RECG_TYPELIGNE IN (3,34) AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_FAC ELSE 0 END) as montant_facture_c, + SUM(CASE WHEN RECG_TYPELIGNE IN (3,34) AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_FAC_1 ELSE 0 END) as montant_facture_1_c, + SUM(CASE WHEN RECG_TYPELIGNE IN (3,34) AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_FAC_2 ELSE 0 END) as montant_facture_2_c, + SUM(CASE WHEN RECG_TYPELIGNE IN (3,34) AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_FAC_22 ELSE 0 END) as montant_facture_22_c, + SUM(CASE WHEN RECG_TYPELIGNE IN (3,34) AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_FAC_0 ELSE 0 END) as montant_facture_0_c, + SUM(CASE WHEN RECG_TYPELIGNE IN (4,34) AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_FAC ELSE 0 END) as montant_facture_h, + SUM(CASE WHEN RECG_TYPELIGNE IN (4,34) AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_FAC_1 ELSE 0 END) as montant_facture_1_h, + SUM(CASE WHEN RECG_TYPELIGNE IN (4,34) AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_FAC_2 ELSE 0 END) as montant_facture_2_h, + SUM(CASE WHEN RECG_TYPELIGNE IN (4,34) AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_FAC_22 ELSE 0 END) as montant_facture_22_h, + SUM(CASE WHEN RECG_TYPELIGNE IN (4,34) AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_FAC_0 ELSE 0 END) as montant_facture_0_h, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_CPT ELSE 0 END) as montant_comptabilise_c, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_CPT_1 ELSE 0 END) as montant_comptabilise_1_c, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_CPT_2 ELSE 0 END) as montant_comptabilise_2_c, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_CPT_22 ELSE 0 END) as montant_comptabilise_22_c, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_CPT_0 ELSE 0 END) as montant_comptabilise_0_c, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_CPT ELSE 0 END) as montant_comptabilise_h, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_CPT_1 ELSE 0 END) as montant_comptabilise_1_h, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_CPT_2 ELSE 0 END) as montant_comptabilise_2_h, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_CPT_22 ELSE 0 END) as montant_comptabilise_22_h, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 THEN RECT_MONTANT_CPT_0 ELSE 0 END) as montant_comptabilise_0_h, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 THEN RECT_MONTANT_REG ELSE 0 END) as montant_regle_c, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 THEN RECT_MONTANT_REG_1 ELSE 0 END) as montant_regle_1_c, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 THEN RECT_MONTANT_REG_2 ELSE 0 END) as montant_regle_2_c, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 THEN RECT_MONTANT_REG_22 ELSE 0 END) as montant_regle_22_c, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 THEN RECT_MONTANT_REG_0 ELSE 0 END) as montant_regle_0_c, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 THEN RECT_MONTANT_REG ELSE 0 END) as montant_regle_h, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 THEN RECT_MONTANT_REG_1 ELSE 0 END) as montant_regle_1_h, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 THEN RECT_MONTANT_REG_2 ELSE 0 END) as montant_regle_2_h, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 THEN RECT_MONTANT_REG_22 ELSE 0 END) as montant_regle_22_h, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 THEN RECT_MONTANT_REG_0 ELSE 0 END) as montant_regle_0_h + FROM w_MPM_RECUEILTIERS_RECT + JOIN w_MPM_RECUEILTIERS_RECT_keys ON w_MPM_RECUEILTIERS_RECT.key = w_MPM_RECUEILTIERS_RECT_keys.key + JOIN w_MPM_RECUEILTIERS_RECT_keystp ON w_MPM_RECUEILTIERS_RECT.keytp = w_MPM_RECUEILTIERS_RECT_keystp.keytp + GROUP BY 1 + ORDER BY 1; + + ALTER TABLE w_MPM_FACTURE_RECF_fac + ADD CONSTRAINT w_MPM_FACTURE_RECF_fac_pk_recf_id PRIMARY KEY(RECF_ID); + + + DROP TABLE IF EXISTS w_MPM_FACTURE_RECF_reg; + CREATE TEMP TABLE w_MPM_FACTURE_RECF_reg AS + SELECT + RECF_ID, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 THEN REGD_MNTENCAIS ELSE 0 END) as montant_regle_c, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 AND ASSU_TYPE = 'O' THEN REGD_MNTENCAIS ELSE 0 END) as montant_regle_1_c, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 AND ASSU_TYPE = 'C' AND ASSU_DISTINCTIF = 1 THEN REGD_MNTENCAIS ELSE 0 END) as montant_regle_2_c, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 AND ASSU_TYPE = 'C' AND ASSU_DISTINCTIF <> 1 THEN REGD_MNTENCAIS ELSE 0 END) as montant_regle_22_c, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 AND (RECT_TYPEDEBITEUR = 'D' OR ASSU_ID IS NULL) THEN REGD_MNTENCAIS ELSE 0 END) as montant_regle_0_c, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 AND ASSU_TYPE = 'O' THEN REGD_MNTENCAIS ELSE 0 END) as montant_regle_1_h, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 THEN REGD_MNTENCAIS ELSE 0 END) as montant_regle_h, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 AND ASSU_TYPE = 'C' AND ASSU_DISTINCTIF = 1 THEN REGD_MNTENCAIS ELSE 0 END) as montant_regle_2_h, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 AND ASSU_TYPE = 'C' AND ASSU_DISTINCTIF <> 1 THEN REGD_MNTENCAIS ELSE 0 END) as montant_regle_22_h, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 AND (RECT_TYPEDEBITEUR = 'D' OR ASSU_ID IS NULL) THEN REGD_MNTENCAIS ELSE 0 END) as montant_regle_0_h, + + MAX(CASE WHEN RECG_TYPELIGNE_CPTA = 3 AND ASSU_TYPE = 'O' THEN REGD_DATEENCAIS ELSE null END) as date_dernier_reglement_1_c, + MAX(CASE WHEN RECG_TYPELIGNE_CPTA = 3 AND ASSU_TYPE = 'C' AND ASSU_DISTINCTIF = 1 THEN REGD_DATEENCAIS ELSE NULL END) as date_dernier_reglement_2_c, + MAX(CASE WHEN RECG_TYPELIGNE_CPTA = 3 AND ASSU_TYPE = 'C' AND ASSU_DISTINCTIF <> 1 THEN REGD_DATEENCAIS ELSE NULL END) as date_dernier_reglement_22_c, + MAX(CASE WHEN RECG_TYPELIGNE_CPTA = 3 AND (RECT_TYPEDEBITEUR = 'D' OR ASSU_ID IS NULL) THEN REGD_DATEENCAIS ELSE NULL END) as date_dernier_reglement_0_c, + MAX(CASE WHEN RECG_TYPELIGNE_CPTA = 4 AND ASSU_TYPE = 'O' THEN REGD_DATEENCAIS ELSE null END) as date_dernier_reglement_1_h, + MAX(CASE WHEN RECG_TYPELIGNE_CPTA = 4 AND ASSU_TYPE = 'C' AND ASSU_DISTINCTIF = 1 THEN REGD_DATEENCAIS ELSE NULL END) as date_dernier_reglement_2_h, + MAX(CASE WHEN RECG_TYPELIGNE_CPTA = 4 AND ASSU_TYPE = 'C' AND ASSU_DISTINCTIF <> 1 THEN REGD_DATEENCAIS ELSE NULL END) as date_dernier_reglement_22_h, + MAX(CASE WHEN RECG_TYPELIGNE_CPTA = 4 AND (RECT_TYPEDEBITEUR = 'D' OR ASSU_ID IS NULL) THEN REGD_DATEENCAIS ELSE NULL END) as date_dernier_reglement_0_h + + FROM w_MPM_RECUEILTIERS_RECT + JOIN prod_csis.MRC_REGLEMENTDETAIL_REGD ON REGD_ID_RECT = RECT_id + WHERE REGD_CODETYOP NOT IN ('AC', 'MC', 'BG') + GROUP BY 1 + ORDER BY 1; + + ALTER TABLE w_MPM_FACTURE_RECF_reg + ADD CONSTRAINT w_MPM_FACTURE_RECF_reg_pk_recf_id PRIMARY KEY(RECF_ID); + + DROP TABLE IF EXISTS w_MPM_FACTURE_RECF_ann; + CREATE TEMP TABLE w_MPM_FACTURE_RECF_ann AS + SELECT + MPM_FACTURE_RECF.RECF_ID AS RECF_ID_annulee, + MPM_FACTURE_RECF.RECF_NUMFACTALIAS_ETAB AS RECF_NUMFACTALIAS_ETAB_annulee, + MAX(MPM_FACTURE_RECF_avoir.RECF_ID) AS RECF_ID_avoir, + (MAX(ARRAY[MPM_FACTURE_RECF_avoir.RECF_ID::text, MPM_FACTURE_RECF_avoir.RECF_NUMFACTALIAS_ETAB]))[2] AS RECF_NUMFACTALIAS_ETAB_avoir + FROM w_MPM_FACTURE_RECF MPM_FACTURE_RECF + JOIN prod_csis.SNO_ETATRECUEIL_ETRC ON RECF_ID_ETRC = ETRC_ID AND ETRC_CODE = 'A' + LEFT JOIN w_MPM_FACTURE_RECF MPM_FACTURE_RECF_avoir + ON to_number('0' || MPM_FACTURE_RECF.recf_numfactalias , '000000000000') = MPM_FACTURE_RECF_avoir.recf_facturemere AND + MPM_FACTURE_RECF.RECF_ID_ETAB = MPM_FACTURE_RECF_avoir.RECF_ID_ETAB AND + MPM_FACTURE_RECF_avoir.recf_natureoperation = '5' + GROUP BY 1,2; + + + + + ALTER SEQUENCE activite[PX].s_factures RESTART WITH 1; + + DROP TABLE IF EXISTS w_factures; + CREATE TEMP TABLE w_factures AS + SELECT + nextval('activite[PX].s_factures'::regclass) AS oid, + DADM_NDA_ETAB as no_sejour, + p_sejours.oid AS sejour_id, + RECF_NUMFACTALIAS_ETAB AS no_facture, + date(RECF_DATEDEBUT) AS date_debut, + date(RECF_DATEFIN) AS date_fin, + CASE + WHEN w_MPM_FACTURE_RECF_ann.RECF_NUMFACTALIAS_ETAB_avoir IS NOT NULL THEN 'X' + WHEN RECF_TYPEFACTURE IN ('2') THEN '2' + WHEN RECF_TYPEFACTURE IN ('3') THEN '2' + WHEN RECF_NATUREOPERATION IN ('5') THEN '1' + WHEN RECF_NATUREOPERATION NOT IN ('1') THEN '2' + ELSE '0' END AS type_facture, + p_sejours.code_cp_demandee, + CASE WHEN MPM_DATE_VENTE IS NOT NULL OR MPM_DATE_VALIDATION IS NOT NULL THEN '1' WHEN MPM_DATE_FACTURE IS NOT NULL THEN '3' ELSE '0' END AS code_facture, + CASE WHEN MPM_DATE_VENTE IS NOT NULL THEN date(MPM_DATE_VENTE) WHEN MPM_DATE_FACTURE IS NOT NULL THEN date(MPM_DATE_FACTURE) ELSE '20991231' END AS date_facture, + CASE WHEN MPM_DATE_VENTE IS NOT NULL THEN '1' ELSE '0' END AS code_vente, + CASE WHEN MPM_DATE_VENTE IS NOT NULL THEN date(MPM_DATE_VENTE) ELSE '20991231'::date END AS date_vente, + CASE WHEN MPM_DATE_VENTE IS NOT NULL THEN extract('year' FROM MPM_DATE_VENTE) * 100 + extract('month' FROM MPM_DATE_VENTE) ELSE extract('year' FROM '20991231'::date) * 100 + extract('month' FROM '20991231'::date) END AS mois_vente, + '0'::text as code_cloture, + 0::numeric AS nb_rejets, + RECF_NUMFACTALIAS_ETAB AS no_facture_reference, + 0::bigint AS facture_reference_id, + COALESCE(w_MPM_FACTURE_RECF_ann.RECF_NUMFACTALIAS_ETAB_avoir,w_MPM_FACTURE_RECF_avo.RECF_NUMFACTALIAS_ETAB_annulee,''::text) AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id, + COALESCE(w_MPM_FACTURE_RECF_fac.ghs_id, p_sejours.ghs_id) AS ghs_id, + 0::bigint AS ghs_bebe1_id, + 0::bigint AS ghs_bebe2_id, + 0::bigint AS ghs_bebe3_id, + ''::text as particularite_t2a, + COALESCE(w_MPM_FACTURE_RECF_fac.tiers_payant_1_id, p_sejours.tiers_payant_1_id) AS tiers_payant_1_id, + COALESCE(w_MPM_FACTURE_RECF_fac.tiers_payant_2_id, p_sejours.tiers_payant_2_id) AS tiers_payant_2_id, + COALESCE(w_MPM_FACTURE_RECF_fac.tiers_payant_22_id, p_sejours.tiers_payant_22_id) AS tiers_payant_22_id, + COALESCE(w_MPM_FACTURE_RECF_fac.tiers_payant_0_id, p_sejours.tiers_payant_0_id) AS tiers_payant_0_id, + + LEAST(w_MPM_FACTURE_RECF_exp.date_expedition_1, w_MPM_FACTURE_RECF_exp.date_expedition_2) as date_expedition, + w_MPM_FACTURE_RECF_exp.date_expedition_0, + w_MPM_FACTURE_RECF_exp.date_expedition_1, + w_MPM_FACTURE_RECF_exp.date_expedition_2, + w_MPM_FACTURE_RECF_exp.date_expedition_22, + w_MPM_FACTURE_RECF_exp.code_expedie_0, + w_MPM_FACTURE_RECF_exp.code_expedie_1, + w_MPM_FACTURE_RECF_exp.code_expedie_2, + w_MPM_FACTURE_RECF_exp.code_expedie_22, + w_MPM_FACTURE_RECF_exp.no_bordereau_0, + w_MPM_FACTURE_RECF_exp.no_bordereau_1, + w_MPM_FACTURE_RECF_exp.no_bordereau_2, + w_MPM_FACTURE_RECF_exp.no_bordereau_22, + + COALESCE( + GREATEST( + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_0_c = 0 THEN date(RECF_DATEFIN) ELSE date_dernier_reglement_0_c END, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_0_h = 0 THEN date(RECF_DATEFIN) ELSE date_dernier_reglement_0_h END, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_1_c = 0 THEN date(RECF_DATEFIN) ELSE date_dernier_reglement_1_c END, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_1_h = 0 THEN date(RECF_DATEFIN) ELSE date_dernier_reglement_1_h END, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_2_c = 0 THEN date(RECF_DATEFIN) ELSE date_dernier_reglement_2_c END, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_2_h = 0 THEN date(RECF_DATEFIN) ELSE date_dernier_reglement_2_h END, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_22_c = 0 THEN date(RECF_DATEFIN) ELSE date_dernier_reglement_22_c END, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_22_h = 0 THEN date(RECF_DATEFIN) ELSE date_dernier_reglement_22_h END) + , '20991231') as date_solde, + COALESCE( + GREATEST( + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_0_c = 0 THEN date(RECF_DATEFIN) ELSE date_dernier_reglement_0_c END, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_1_c = 0 THEN date(RECF_DATEFIN) ELSE date_dernier_reglement_1_c END, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_2_c = 0 THEN date(RECF_DATEFIN) ELSE date_dernier_reglement_2_c END, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_22_c = 0 THEN date(RECF_DATEFIN) ELSE date_dernier_reglement_22_c END) + , '20991231') as date_solde_c, + + COALESCE( + GREATEST( + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_0_h = 0 THEN date(RECF_DATEFIN) ELSE date_dernier_reglement_0_h END, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_1_h = 0 THEN date(RECF_DATEFIN) ELSE date_dernier_reglement_1_h END, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_2_h = 0 THEN date(RECF_DATEFIN) ELSE date_dernier_reglement_2_h END, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_22_h = 0 THEN date(RECF_DATEFIN) ELSE date_dernier_reglement_22_h END) + , '20991231') as date_solde_h, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_0_c = 0 THEN date(RECF_DATEFIN) + WHEN date_dernier_reglement_0_c IS NOT NULL THEN date_dernier_reglement_0_c ELSE '20991231' END as date_solde_0_c, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_0_h = 0 THEN date(RECF_DATEFIN) + WHEN date_dernier_reglement_0_h IS NOT NULL THEN date_dernier_reglement_0_h ELSE '20991231' END as date_solde_0_h, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_1_c = 0 THEN date(RECF_DATEFIN) + WHEN date_dernier_reglement_1_c IS NOT NULL THEN date_dernier_reglement_1_c ELSE '20991231' END as date_solde_1_c, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_1_h = 0 THEN date(RECF_DATEFIN) + WHEN date_dernier_reglement_1_h IS NOT NULL THEN date_dernier_reglement_1_h ELSE '20991231' END as date_solde_1_h, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_2_c = 0 THEN date(RECF_DATEFIN) + WHEN date_dernier_reglement_2_c IS NOT NULL THEN date_dernier_reglement_2_c ELSE '20991231' END as date_solde_2_c, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_2_h = 0 THEN date(RECF_DATEFIN) + WHEN date_dernier_reglement_2_h IS NOT NULL THEN date_dernier_reglement_2_h ELSE '20991231' END as date_solde_2_h, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_22_c = 0 THEN date(RECF_DATEFIN) + WHEN date_dernier_reglement_22_c IS NOT NULL THEN date_dernier_reglement_22_c ELSE '20991231' END as date_solde_22_c, + CASE + WHEN w_MPM_FACTURE_RECF_fac.montant_comptabilise_22_h = 0 THEN date(RECF_DATEFIN) + WHEN date_dernier_reglement_22_h IS NOT NULL THEN date_dernier_reglement_22_h ELSE '20991231' END as date_solde_22_h, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_facture_c,0) AS montant_facture_c, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_facture_h,0) AS montant_facture_h, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_facture_0_c,0) AS montant_facture_0_c, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_facture_0_h,0) AS montant_facture_0_h, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_facture_1_c,0) AS montant_facture_1_c, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_facture_1_h,0) AS montant_facture_1_h, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_facture_2_c,0) AS montant_facture_2_c, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_facture_2_h,0) AS montant_facture_2_h, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_facture_22_c,0) AS montant_facture_22_c, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_facture_22_h,0) AS montant_facture_22_h, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_comptabilise_c,0) AS montant_comptabilise_c, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_comptabilise_h,0) AS montant_comptabilise_h, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_comptabilise_0_c,0) AS montant_comptabilise_0_c, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_comptabilise_0_h,0) AS montant_comptabilise_0_h, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_comptabilise_1_c,0) AS montant_comptabilise_1_c, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_comptabilise_1_h,0) AS montant_comptabilise_1_h, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_comptabilise_2_c,0) AS montant_comptabilise_2_c, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_comptabilise_2_h,0) AS montant_comptabilise_2_h, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_comptabilise_22_c,0) AS montant_comptabilise_22_c, + COALESCE(w_MPM_FACTURE_RECF_fac.montant_comptabilise_22_h,0) AS montant_comptabilise_22_h, + 0::numeric AS montant_comptabilise_budget_global_c, + COALESCE(w_MPM_FACTURE_RECF_reg.montant_regle_c,0) AS montant_regle_c, + COALESCE(w_MPM_FACTURE_RECF_reg.montant_regle_h,0) AS montant_regle_h, + COALESCE(w_MPM_FACTURE_RECF_reg.montant_regle_0_c,0) AS montant_regle_0_c, + COALESCE(w_MPM_FACTURE_RECF_reg.montant_regle_0_h,0) AS montant_regle_0_h, + COALESCE(w_MPM_FACTURE_RECF_reg.montant_regle_1_c,0) AS montant_regle_1_c, + COALESCE(w_MPM_FACTURE_RECF_reg.montant_regle_1_h,0) AS montant_regle_1_h, + COALESCE(w_MPM_FACTURE_RECF_reg.montant_regle_2_c,0) AS montant_regle_2_c, + COALESCE(w_MPM_FACTURE_RECF_reg.montant_regle_2_h,0) AS montant_regle_2_h, + COALESCE(w_MPM_FACTURE_RECF_reg.montant_regle_22_c,0) AS montant_regle_22_c, + COALESCE(w_MPM_FACTURE_RECF_reg.montant_regle_22_h,0) AS montant_regle_22_h, + + + 0::numeric AS delai_facture, + + 0::numeric AS delai_expedition, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h + + FROM w_MPM_FACTURE_RECF MPM_FACTURE_RECF + JOIN w_SID_DOSSIERADMINISTRATIF_DADM ON RECF_ID_DADM = DADM_ID + JOIN activite[PX].p_sejours ON DADM_ID = p_sejours.code_original AND p_sejours.etat = '' + LEFT JOIN w_MPM_FACTURE_RECF_exp ON w_MPM_FACTURE_RECF_exp.RECF_ID = MPM_FACTURE_RECF.RECF_ID + LEFT JOIN w_MPM_FACTURE_RECF_fac ON w_MPM_FACTURE_RECF_fac.RECF_ID = MPM_FACTURE_RECF.RECF_ID + LEFT JOIN w_MPM_FACTURE_RECF_reg ON w_MPM_FACTURE_RECF_reg.RECF_ID = MPM_FACTURE_RECF.RECF_ID + LEFT JOIN w_MPM_FACTURE_RECF_ann ON w_MPM_FACTURE_RECF_ann.RECF_ID_annulee = MPM_FACTURE_RECF.RECF_ID + LEFT JOIN w_MPM_FACTURE_RECF_ann w_MPM_FACTURE_RECF_avo ON w_MPM_FACTURE_RECF_avo.RECF_ID_avoir = MPM_FACTURE_RECF.RECF_ID + ORDER BY 1,2; + + -- Correction des numéros de factures avec code en double + + UPDATE w_factures + SET no_facture = w_factures.no_facture || '2', + no_facture_reference = w_factures.no_facture_reference || '2' + FROM + (SELECT no_facture, MAX(oid) AS oid FROM w_factures GROUP BY 1 HAVING count(*) > 1) subview + WHERE w_factures.oid = subview.oid; + + UPDATE w_factures + SET no_facture = w_factures.no_facture || '3', + no_facture_reference = w_factures.no_facture_reference || '3' + FROM + (SELECT no_facture, MAX(oid) AS oid FROM w_factures GROUP BY 1 HAVING count(*) > 1) subview + WHERE w_factures.oid = subview.oid; + + + ALTER TABLE w_factures + ADD CONSTRAINT w_factures_pk PRIMARY KEY(no_facture); + + + + -- Facture de référence + + DROP TABLE IF EXISTS w_factures_references; + CREATE TEMP TABLE w_factures_references AS + SELECT no_sejour, date_debut, + MIN(CASE WHEN type_facture = '0' THEN no_facture ELSE NULL END) AS no_facture_0, + MIN(CASE WHEN type_facture = '2' THEN no_facture ELSE NULL END) AS no_facture_2, + MIN(no_facture) AS no_facture_x + FROM w_factures + GROUP BY 1,2; + + + + + UPDATE w_factures + SET no_facture_reference = COALESCE(no_facture_0,no_facture_2,no_facture_x) + FROM w_factures_references + WHERE w_factures.no_sejour = w_factures_references.no_sejour AND + w_factures.date_debut = w_factures_references.date_debut AND + no_facture_reference IS DISTINCT FROM COALESCE(no_facture_0,no_facture_2,no_facture_x); + + + UPDATE w_factures + SET facture_reference_id = w_factures_references.oid + FROM w_factures w_factures_references + WHERE w_factures.no_facture_reference = w_factures_references.no_facture AND + w_factures.facture_reference_id IS DISTINCT FROM w_factures_references.oid; + + + UPDATE w_factures + SET facture_od_avoir_id = w_factures_od_avoir.oid + FROM w_factures w_factures_od_avoir + WHERE w_factures.no_facture_od_avoir = w_factures_od_avoir.no_facture AND + w_factures.no_facture_od_avoir <> ''; + + + + -- Ajout des factures + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_14'); + + INSERT INTO activite[PX].p_factures ( + oid, + no_sejour, + sejour_id, + no_facture, + date_debut, + date_fin, + type_facture, + code_cp_demandee, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + code_cloture, + nb_rejets, + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + particularite_t2a, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_comptabilise_budget_global_c, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + delai_facture, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h + ) + SELECT + oid, + no_sejour, + sejour_id, + no_facture, + date_debut, + date_fin, + type_facture, + code_cp_demandee, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + code_cloture, + nb_rejets, + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + particularite_t2a, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_comptabilise_budget_global_c, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + delai_facture, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h + FROM w_factures; + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_14'); + + + + + UPDATE activite[PX].p_factures + SET facture_od_avoir_id = p_factures_od_avoir.oid + FROM activite[PX].p_factures p_factures_od_avoir + WHERE p_factures.no_facture_od_avoir = p_factures_od_avoir.no_facture AND + p_factures.no_facture_od_avoir <> ''; + + + -- Etat séjour non facturable + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'CSIS_STDO_SANSFACTURE', + 'CSIS-MEDSPHERE. Etat des sejour sans facturation (pas d''encours) ', + '', + 'Codes separes par virgule' + WHERE 'CSIS_STDO_SANSFACTURE' NOT IN (SELECT code FROM activite.t_divers) + ; + + UPDATE activite[PX].p_sejours + SET est_sans_facturation = '1' + FROM prod_csis.SID_DOSSIERADMINISTRATIF_DADM + JOIN prod_csis.SNO_STATUTDOSSIER_STDO ON DADM_ID_STDO = STDO_ID + JOIN activite.t_divers ON t_divers.code = 'CSIS_STDO_SANSFACTURE' + WHERE t_divers.valeur <> '' AND + STDO_CODE = ANY(string_to_array(t_divers.valeur,',')) AND + p_sejours.code_original = DADM_ID + ; + + + UPDATE activite[PX].p_sejours + SET est_sans_facturation = '1' + WHERE lieu_sortie_id IN + (SELECT oid FROM activite[PX].t_lieux WHERE + service_facturation_id IN + (SELECT oid FROM activite[PX].t_services_facturation WHERE est_sans_facturation = '1') OR + unite_fonctionnelle_id IN + (SELECT oid FROM activite[PX].t_unites_fonctionnelles WHERE est_sans_facturation = '1') + ); + + -- Spécial bébés + UPDATE activite[PX].p_sejours + SET est_sans_facturation = '1', type_sejour = '6' + FROM prod_csis.SID_DOSSIERADMINISTRATIF_DADM + WHERE p_sejours.code_original = DADM_ID AND + DADM_NOUVEAUNE = '1' AND + p_sejours.no_sejour NOT IN (SELECT no_sejour FROM activite[PX].p_factures WHERE code_facture = '1') + ; + + UPDATE activite[PX].p_mouvements_sejour + SET nb_bebes = 1 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + type_sejour = '6' AND + (nb_entrees_directes = 1 OR nb_ambulatoires = 1) + ; + + + -- Séjours sans facture + + DROP TABLE IF EXISTS w_factures_trous; + CREATE TEMP TABLE w_factures_trous AS + SELECT + p_sejours.finess, + p_sejours.no_sejour, + p_sejours.date_entree, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.code_cp_demandee, + COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire, + p_sejours.code_sorti, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie, + MAX(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END) AS date_fin_facture, + date(MAX(COALESCE(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours + FROM activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND no_facture NOT LIKE 'E%' + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE p_sejours.etat = '' AND p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND date_entree <= now() AND p_sejours.type_sejour <> '6' AND p_sejours.type_sejour <> '9' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11; + + + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee, + date_debut, + date_fin) + SELECT finess, + no_sejour, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee , + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + JOIN w_start ON 1=1 + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12 + HAVING MAX(LEAST(date_fin_encours, p_calendrier.date)) >= '[ENV_ADM_ANNEEDEBUT]0101' AND + MAX(LEAST(date_fin_encours, p_calendrier.date)) >= MAX(date_start) + ; + + UPDATE activite[PX].p_factures + SET facture_reference_id = p_factures_references.oid + FROM activite[PX].p_factures p_factures_references + WHERE p_factures.no_facture_reference = p_factures_references.no_facture AND + p_factures.facture_reference_id IS DISTINCT FROM p_factures_references.oid; + + + + UPDATE activite[PX].p_factures SET + date_debut = date_entree, + date_fin = CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid AND + avec_facturation_intermediaire IS DISTINCT FROM '1' + WHERE p_factures.no_sejour = p_sejours.no_sejour AND + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END - date_entree < 30 AND + ( + p_factures.date_debut <> date_entree OR + p_factures.date_fin <> CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + ); + + + + + + + ]]> + + + + + + + + '1' AND + date(RECG_DATEDEBUT) BETWEEN p_factures.date_debut AND p_factures.date_fin + JOIN activite.t_prestations ON PRES_CODE = t_prestations.code + LEFT JOIN base.t_ucd ON RECD_CODEAFFINE = t_ucd.code AND RECD_NATUREDETAIL IN ('ph. CIP','ph. UCD') + LEFT JOIN base.t_lpp ON RECD_CODEAFFINE = t_lpp.code AND RECD_NATUREDETAIL = 'lpp' + WHERE RECG_TYPELIGNE IN (3,34) AND t_prestations.code <> 'GHS' + ; + + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id, + ucd_id, + lpp_id) + SELECT + p_factures.no_facture, + date(PRET_DATEDEBUT) AS date_debut, + date(COALESCE(PRET_DATEFIN, PRET_DATEDEBUT)) AS date_fin, + PRET_QUANTITE AS nb_rubrique, + PRET_COEFFICIENT AS coefficient, + w_SST_PRESTATIONETAB_PRTB.rubrique_facturation_id, + t_prestations.oid AS prestation_id, + PRET_PUFACTURE AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id, + 0::bigint AS ucd_id, + 0::bigint AS lpp_id + FROM prod_csis.SCA_PRESTATION_PRET + LEFT JOIN prod_csis.MPM_RECUEIL_RECG ON + RECG_ID_DADM = PRET_ID_DADM AND + PRET_DATEDEBUT = RECG_DATEDEBUT AND + PRET_QUANTITE = RECG_QUANTITE AND + PRET_COEFFICIENT = RECG_COEFFICIENT + JOIN prod_csis.SID_DOSSIERADMINISTRATIF_DADM ON PRET_ID_DADM = DADM_ID + JOIN w_SST_PRESTATIONETAB_PRTB ON PRET_ID_PRTB = PRTB_ID + JOIN prod_csis.SST_PRESTATION_PRES ON PRTB_ID_PRES = PRES_ID + JOIN activite[PX].p_sejours ON PRET_ID_DADM = p_sejours.code_original AND p_sejours.etat = '' + JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture IN ('E','0') AND code_facture <> '1' AND + date(PRET_DATEDEBUT) BETWEEN p_factures.date_debut AND p_factures.date_fin + JOIN activite.t_prestations ON PRES_CODE = t_prestations.code + WHERE PRET_TYPELIGNE = 3 AND t_prestations.code <> 'GHS' AND + RECG_ID_DADM IS NULL; + + + ]]> + + + + 0 THEN RECG_COEFFICIENT ELSE 1 END AS coefficient, + CASE WHEN RECG_COEFFICIENTMCO <> 0 THEN RECG_COEFFICIENTMCO ELSE 1 END AS coefficient_mco, + COALESCE(RECD_PUFACTURE,RECG_PUFACTURE) AS prix_unitaire, + MAX(nextval('w_factures_lignes_c_sequence'::regclass)) AS oid, + MAX(RECT_TAUX_0) as taux_0, + MAX(RECT_TAUX_1) as taux_1, + MAX(RECT_TAUX_2) as taux_2, + MAX(RECT_TAUX_22) as taux_22, + SUM(CASE WHEN RECG_TYPELIGNE IN (3,34) THEN COALESCE(RECD_MONTANTFACTURE,RECT_MONTANT_FAC) ELSE 0 END) as montant_facture, + SUM(CASE WHEN RECG_TYPELIGNE IN (3,34) THEN COALESCE(RECD_MONTANT_FAC_0,RECT_MONTANT_FAC_0) ELSE 0 END) as montant_facture_0, + SUM(CASE WHEN RECG_TYPELIGNE IN (3,34) THEN COALESCE(RECD_MONTANT_FAC_1,RECT_MONTANT_FAC_1) ELSE 0 END) as montant_facture_1, + SUM(CASE WHEN RECG_TYPELIGNE IN (3,34) THEN COALESCE(RECD_MONTANT_FAC_2,RECT_MONTANT_FAC_2) ELSE 0 END) as montant_facture_2, + SUM(CASE WHEN RECG_TYPELIGNE IN (3,34) THEN COALESCE(RECD_MONTANT_FAC_22,RECT_MONTANT_FAC_22) ELSE 0 END) as montant_facture_22, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 THEN COALESCE(RECD_MONTANT_CPT,RECT_MONTANT_CPT) ELSE 0 END) as montant_comptabilise, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 THEN COALESCE(RECD_MONTANT_CPT_0,RECT_MONTANT_CPT_0) ELSE 0 END) as montant_comptabilise_0, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 THEN COALESCE(RECD_MONTANT_CPT_1,RECT_MONTANT_CPT_1) ELSE 0 END) as montant_comptabilise_1, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 THEN COALESCE(RECD_MONTANT_CPT_2,RECT_MONTANT_CPT_2) ELSE 0 END) as montant_comptabilise_2, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 3 THEN COALESCE(RECD_MONTANT_CPT_22,RECT_MONTANT_CPT_22) ELSE 0 END) as montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_1, + 0::numeric AS rubrique_facture_id + FROM w_MPM_RECUEILTIERS_RECT + JOIN w_MPM_RECUEILTIERS_RECT_keys ON w_MPM_RECUEILTIERS_RECT.key = w_MPM_RECUEILTIERS_RECT_keys.key + LEFT JOIN w_MPM_RECUEILDETAIL_RECD_ucdlpp ON RECD_ID_RECG = RECG_ID + JOIN activite[PX].p_factures ON no_facture = RECF_NUMFACTALIAS_ETAB + JOIN activite[PX].p_sejours ON p_sejours.oid = p_factures.sejour_id AND p_sejours.etat = '' + WHERE + (w_MPM_RECUEILTIERS_RECT.RECG_TYPELIGNE IN (3,34) OR w_MPM_RECUEILTIERS_RECT.RECG_TYPELIGNE_CPTA = 3) AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 AND code_facture <> '0' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19; + + + ALTER TABLE w_factures_lignes_c + ADD CONSTRAINT w_factures_lignes_c_pk PRIMARY KEY(oid); + + CREATE INDEX w_factures_lignes_c_i1 + ON w_factures_lignes_c + USING btree + (no_sejour); + + + + + + -- Eclatement des supplements par jour + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + w_factures_lignes_c.oid AS from_oid, + t_prestations.code AS prestation_code, + date(p_sejours.date_entree) AS date_debut_ghs, + date(p_sejours.date_sortie - interval '1 day') AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + w_factures_lignes_c.* + FROM w_factures_lignes_c + JOIN activite[PX].p_sejours ON w_factures_lignes_c.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (t_prestations.code = 'GHS' AND date(date_sortie) - date(date_entree) > 1)) AND + ( + t_prestations.code IN ('PJ', 'FJ', 'PHJ','SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'CPM', 'CPS', 'SHO') OR + t_prestations.type_ventilation_jour = '1' OR + (date(w_factures_lignes_c.date_fin) - date(w_factures_lignes_c.date_debut)) = abs(nb_rubrique) OR + (date(w_factures_lignes_c.date_fin) - date(w_factures_lignes_c.date_debut)) = (abs(nb_rubrique)-1) + ) + ; + + + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM w_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture; + + + + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_gen; + CREATE TEMP TABLE w_factures_lignes_sup_c_gen AS + SELECT + from_oid, + ''::text AS finess, + no_sejour, + no_facture, + facture_id, + date AS date_debut, + date AS date_fin, + lieu_id, + origine_facturation_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + ucd_id, + lpp_id, + compte_produit_id, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + prix_unitaire, + oid, + taux_0, + taux_1, + taux_2, + taux_22, + round(montant_facture / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_facture, + round(montant_facture_0 / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_facture_0, + round(montant_facture_1 / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_facture_1, + round(montant_facture_2 / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_facture_2, + round(montant_facture_22 / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_facture_22, + round(montant_comptabilise / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END),2) AS montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON date_debut BETWEEN p_calendrier.date - ABS(CASE WHEN prestation_code <> 'GHS' THEN nb_prestation ELSE nb_prestation_ghs END)::integer + 1 AND p_calendrier.date AND + p_calendrier.date <> date_debut ; + + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_gen_tot; + CREATE TEMP TABLE w_factures_lignes_sup_c_gen_tot AS + SELECT from_oid, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22 + FROM w_factures_lignes_sup_c_gen + GROUP BY 1; + + + + UPDATE w_factures_lignes_c + SET + date_fin = w_factures_lignes_c.date_debut, + nb_rubrique = w_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_gen_tot.nb_rubrique, + nb_prestation = w_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_gen_tot.nb_prestation, + montant_facture = w_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_gen_tot.montant_facture, + montant_facture_0 = w_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_gen_tot.montant_facture_0, + montant_facture_1 = w_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_gen_tot.montant_facture_1, + montant_facture_2 = w_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_gen_tot.montant_facture_2, + montant_facture_22 = w_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_gen_tot.montant_facture_22, + montant_comptabilise = w_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_gen_tot.montant_comptabilise, + montant_comptabilise_0 = w_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_gen_tot.montant_comptabilise_0, + montant_comptabilise_1 = w_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_gen_tot.montant_comptabilise_1, + montant_comptabilise_2 = w_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_gen_tot.montant_comptabilise_2, + montant_comptabilise_22 = w_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_gen_tot.montant_comptabilise_22 + FROM w_factures_lignes_sup_c_gen_tot + WHERE w_factures_lignes_c.oid = from_oid; + + + INSERT INTO w_factures_lignes_c + SELECT + ''::text AS finess, + no_sejour, + no_facture, + facture_id, + date_debut, + date_fin, + lieu_id, + origine_facturation_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + ucd_id, + lpp_id, + compte_produit_id, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + prix_unitaire, + nextval('w_factures_lignes_c_sequence'::regclass) AS oid, + taux_0, + taux_1, + taux_2, + taux_22, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1, + 0::numeric AS rubrique_facture_id + FROM w_factures_lignes_sup_c_gen; + + + -- Lieux d'exécution + + + UPDATE w_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE w_factures_lignes_c.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_lignes_c.date_debut = p_mouvements_sejour.date AND + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_sorties_directes = 1) AND + w_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_c'); + + -- Génération + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_8'); + + INSERT INTO activite[PX].p_factures_lignes_c( + finess, + no_facture, + facture_id, + date_debut, + date_fin, + lieu_id, + origine_facturation_id, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + ucd_id, + lpp_id, + compte_produit_id, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 + ) + SELECT + finess, + no_facture, + facture_id, + date_debut, + date_fin, + lieu_id, + origine_facturation_id, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + ucd_id, + lpp_id, + compte_produit_id, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 + FROM w_factures_lignes_c; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_8'); + + + + + + + ]]> + + + + + + code_original + ; + + UPDATE w_prestations_pmsi + SET rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + WHERE w_prestations_pmsi.code = t_rubriques_facturation.code AND + t_rubriques_facturation.code = code_original AND + rubrique_facturation_id = 0 + ; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT + w_prestations_pmsi.code, + w_prestations_pmsi.code, + MAX(w_prestations_pmsi.texte), + MAX(w_prestations_pmsi.texte) + FROM w_prestations_pmsi + WHERE rubrique_facturation_id = 0 + GROUP BY 1,2; + + UPDATE w_prestations_pmsi + SET rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + WHERE w_prestations_pmsi.code = t_rubriques_facturation.code AND + t_rubriques_facturation.code = code_original AND + rubrique_facturation_id = 0 + ; + + + SELECT activite[PX].cti_reorganize_sejour_pmsi() + ; + + -- Suppression des prix de journée T2A MCO sur public + DROP TABLE IF EXISTS w_facture_t2amco_public; + CREATE TEMP TABLE w_facture_t2amco_public AS + SELECT p_factures.no_sejour, + p_factures.no_facture, + SUM(montant_facture_1) AS montant_facture_t2amco_public + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + JOIN activite[PX].p_sejour_pmsi ON p_sejours.oid = p_sejour_pmsi.sejour_id + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_sejours.est_budget_global = '1' AND + (p_sejour_pmsi.rss_id <> 0 OR type_t2a = '1') AND + code_facture = '1' AND + montant_facture_1 <> 0 AND + montant_comptabilise_1 = 0 AND + montant_comptabilise_budget_global_1 = 0 + GROUP BY 1,2 + HAVING SUM(montant_facture_1) <> 0 AND SUM(montant_comptabilise_1) = 0 + ; + + UPDATE activite[PX].p_factures SET + montant_facture_c = montant_facture_c - montant_facture_t2amco_public, + montant_facture_1_c = montant_facture_1_c - montant_facture_t2amco_public + FROM w_facture_t2amco_public + WHERE w_facture_t2amco_public.no_facture = p_factures.no_facture; + + + UPDATE activite[PX].p_factures_lignes_c SET + montant_facture = montant_facture - montant_facture_1, + montant_facture_1 = 0 + FROM w_facture_t2amco_public + WHERE w_facture_t2amco_public.no_facture = p_factures_lignes_c.no_facture + ; + + + + -- Génération des GHS + + + -- Lignes PMSI à ajouter + DROP TABLE IF EXISTS w_sejours_budget_global; + CREATE TEMP TABLE w_sejours_budget_global AS + SELECT + p_sejour_pmsi.rss_id, + MAX(p_sejour_pmsi.sejour_id) AS sejour_id, + (MAX(Array[to_char(p_sejour_pmsi.sejour_id,'FM000000000000'),p_sejours.no_sejour]))[2]::text AS no_sejour, + (MAX(CASE WHEN p_factures.montant_comptabilise_budget_global_c > 0 AND date_part('year',p_factures.date_facture) = date_part('year',p_sejours.date_sortie) THEN Array[to_char(p_sejour_pmsi.sejour_id,'FM000000000000'),p_factures.no_facture] ELSE NULL END))[2]::text AS no_facture_budget_global, + (MAX(CASE WHEN p_factures.montant_facture_c > 0 AND date_part('year',p_factures.date_facture) = date_part('year',p_sejours.date_sortie) THEN Array[to_char(p_sejour_pmsi.sejour_id,'FM000000000000'),p_factures.no_facture] ELSE NULL END))[2]::text AS no_facture_hors_budget_global, + (MAX(Array[p_sejour_pmsi.sejour_id,p_sejours.lieu_sortie_id]))[2] AS lieu_sortie_id + FROM activite[PX].p_sejour_pmsi + JOIN activite[PX].p_sejours ON p_sejour_pmsi.sejour_id = p_sejours.oid + LEFT JOIN activite[PX].p_factures ON p_factures.no_sejour = p_sejours.no_sejour + WHERE + p_sejour_pmsi.sejour_id IS NOT NULL AND + p_sejour_pmsi.sejour_id <> 0 AND + p_sejour_pmsi.rss_id <> 0 + GROUP BY 1; + + -- Suppression des lignes issues de la facturation + DELETE FROM activite[PX].p_factures_lignes_c + WHERE montant_comptabilise_budget_global_1 <> 0 AND + no_facture IN + (SELECT no_facture + FROM activite[PX].p_factures + JOIN w_sejours_budget_global ON p_factures.no_sejour = w_sejours_budget_global.no_sejour AND w_sejours_budget_global.rss_id <> 0 + ) + ; + + DELETE FROM activite[PX].p_factures_lignes_c + WHERE montant_comptabilise_budget_global_1 <> 0 AND + no_facture IN + (SELECT no_facture + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_lieux On lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_services_facturation.oid = service_facturation_id AND type_t2a = '1' + ) + ; + + -- Génération des lignes venant du pmsi + DROP TABLE IF EXISTS w_factures_lignes_pmsi; + CREATE TEMP TABLE w_factures_lignes_pmsi AS + SELECT + w_sejours_budget_global.no_sejour, + w_sejours_budget_global.sejour_id, + COALESCE(w_sejours_budget_global.no_facture_budget_global,w_sejours_budget_global.no_sejour || '.BG') AS no_facture, + 0::bigint AS facture_id, + CASE WHEN p_rsf_detail.type = 'C' THEN 'H' ELSE 'C' END AS clinique_honoraire, + p_rsf_detail.date_debut, + p_rsf_detail.date_fin, + p_rsf_detail.nombre AS nb_rubrique, + p_rsf_detail.nombre AS nb_prestation, + p_rsf_detail.coefficient AS coefficient, + p_rsf_detail.coefficient_mco, + w_prestations_pmsi.rubrique_facturation_id, + w_prestations_pmsi.rubrique_facturation_id AS rubrique_comptabilisation_id, + w_prestations_pmsi.prestation_id, + p_rsf_detail.sejour_remboursable AS montant_facture, + 0::numeric AS montant_facture_0, + p_rsf_detail.sejour_remboursable AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + 0::numeric AS taux_0, + p_rsf_detail.taux_remboursement AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_22, + p_rsf_detail.prix_unitaire, + w_sejours_budget_global.lieu_sortie_id AS lieu_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + 1::bigint AS origine_facturation_id, + CASE WHEN traitement_epmsi IN ('30','31','32','33') THEN p_rsf_detail.sejour_remboursable ELSE 0 END AS montant_comptabilise_budget_global_1, + 0::numeric AS protocole_id, + 0::numeric AS compte_produit_id, + w_prestations_pmsi.code AS prestation_code, + ''::text AS uf_code, + ''::text AS dmt_code, + ''::text AS mt_code + FROM pmsi.p_rsf_detail + JOIN pmsi.p_rss ON p_rss.oid = p_rsf_detail.rss_id AND p_rss.etat = '' AND p_rss.en_cours = '0' + JOIN w_start ON p_rss.date_sortie >= date_start + JOIN pmsi.p_rsf_total ON p_rss.oid = p_rsf_total.rss_id AND p_rsf_total.valorise_fides IS DISTINCT FROM 1 + JOIN w_prestations_pmsi ON w_prestations_pmsi.oid = p_rsf_detail.prestation_id + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN w_sejours_budget_global ON p_rss.oid = w_sejours_budget_global.rss_id + WHERE est_ligne_rss = '1' AND p_rss.en_cours = '0' AND + p_rss.date_sortie >= '20140101' AND + operation_lamda IS DISTINCT FROM '1' AND + operation_lamda IS DISTINCT FROM '2' AND + traitement_epmsi IN ('30','31','32','33') ; + + + + + -- Factures à créer + DROP TABLE IF EXISTS w_factures_pmsi; + CREATE TEMP TABLE w_factures_pmsi AS + SELECT + w_factures_lignes_pmsi.no_sejour, + w_factures_lignes_pmsi.sejour_id, + w_factures_lignes_pmsi.no_facture, + p_sejours.date_entree AS date_debut, + p_sejours.date_sortie AS date_fin, + '0'::text AS type_facture, + '1'::text AS code_facture, + MAX(p_sejours.date_sortie) AS date_facture, + MAX('1') AS code_vente, + MAX(to_char(p_sejours.date_sortie,'YYYYMM')::numeric) AS mois_vente, + MAX(p_sejours.date_sortie) AS date_solde, + '0'::text AS particularite_t2a, + MAX(p_sejours.date_sortie) AS date_vente, + ''::text AS code_cloture, + MAX(p_sejours.code_cp_demandee) AS code_cp_demandee, + '20991231'::date AS date_encours, + MAX(p_sejours.ghs_id) AS ghs_id, + MAX(p_sejours.ghs_bebe1_id) AS ghs_bebe1_id, + MAX(p_sejours.ghs_bebe2_id) AS ghs_bebe2_id, + MAX(p_sejours.ghs_bebe3_id) AS ghs_bebe3_id, + MAX(p_sejours.ghm_id) AS ghm_id, + SUM(montant_facture) AS montant_facture_c, + 0::numeric AS montant_facture_h, + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + '20991231'::date AS date_expedition, + 0::numeric AS delai_expedition, + MAX(p_sejours.tiers_payant_1_id) AS tiers_payant_1_id, + MAX(p_sejours.tiers_payant_2_id) AS tiers_payant_2_id, + MAX(p_sejours.tiers_payant_22_id) AS tiers_payant_22_id, + MAX(p_sejours.tiers_payant_0_id) AS tiers_payant_0_id, + '20991231'::date AS date_solde_0_c, + '20991231'::date AS date_solde_0_h, + '20991231'::date AS date_solde_1_c, + '20991231'::date AS date_solde_1_h, + '20991231'::date AS date_solde_2_c, + '20991231'::date AS date_solde_2_h, + '20991231'::date AS date_solde_22_c, + '20991231'::date AS date_solde_22_h, + '20991231'::date AS date_expedition_0, + '20991231'::date AS date_expedition_1, + '20991231'::date AS date_expedition_2, + '20991231'::date AS date_expedition_22, + '0'::text AS code_expedie_0, + '0'::text AS code_expedie_1, + '0'::text AS code_expedie_2, + '0'::text AS code_expedie_22, + ''::text AS no_bordereau_0, + ''::text AS no_bordereau_1, + ''::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + 0::numeric AS montant_facture_0_c, + 0::numeric AS montant_facture_0_h, + SUM(montant_facture) AS montant_facture_1_c, + 0::numeric AS montant_facture_1_h, + 0::numeric AS montant_facture_2_c, + 0::numeric AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + 0::numeric AS montant_regle_1_h, + 0::numeric AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + 0::numeric AS nb_rejets, + 0::numeric AS montant_comptabilise_c, + 0::numeric AS montant_comptabilise_h, + 0::numeric AS montant_comptabilise_0_c, + 0::numeric AS montant_comptabilise_0_h, + 0::numeric AS montant_comptabilise_1_c, + 0::numeric AS montant_comptabilise_1_h, + 0::numeric AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + w_factures_lignes_pmsi.no_facture AS no_facture_reference, + 0::bigint AS facture_reference_id, + '20991231'::date AS date_solde_reference, + '20991231'::date AS date_solde_reference_c, + '20991231'::date AS date_solde_reference_h, + '20991231'::date AS date_solde_reference_0_c, + '20991231'::date AS date_solde_reference_1_c, + '20991231'::date AS date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + '20991231'::date AS date_solde_reference_0_h, + '20991231'::date AS date_solde_reference_1_h, + '20991231'::date AS date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h, + '20991231'::date AS date_solde_c, + '20991231'::date AS date_solde_h, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_c, + ''::text AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id + FROM w_factures_lignes_pmsi + JOIN activite[PX].p_sejours ON w_factures_lignes_pmsi.no_sejour = p_sejours.no_sejour + WHERE w_factures_lignes_pmsi.no_facture LIKE '%BG' + GROUP BY 1,2,3,4,5; + + + + + + -- Ajout des factures + INSERT INTO activite[PX].p_factures + (no_sejour, no_facture, date_debut, date_fin, type_facture, + code_facture, date_facture, code_vente, mois_vente, date_solde, + montant_facture_c, montant_facture_h, montant_regle_c, montant_regle_h, + delai_facture, delai_solde, date_expedition, delai_expedition, + tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, tiers_payant_0_id, + date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, + date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h, + date_expedition_0, date_expedition_1, date_expedition_2, date_expedition_22, + code_expedie_0, code_expedie_1, code_expedie_2, code_expedie_22, + no_bordereau_0, no_bordereau_1, no_bordereau_2, no_bordereau_22, + montant_facture_0_c, montant_facture_0_h, montant_facture_1_c, + montant_facture_1_h, montant_facture_2_c, montant_facture_2_h, + montant_facture_22_c, montant_facture_22_h, montant_regle_0_c, + montant_regle_0_h, montant_regle_1_c, montant_regle_1_h, montant_regle_2_c, + montant_regle_2_h, montant_regle_22_c, montant_regle_22_h, delai_expedition_0, + delai_expedition_1, delai_expedition_2, delai_expedition_22, + delai_solde_0_c, delai_solde_0_h, delai_solde_1_c, delai_solde_1_h, + delai_solde_2_c, delai_solde_2_h, delai_solde_22_c, delai_solde_22_h, + ghs_id, particularite_t2a, date_vente, code_cloture, montant_encours_c, + montant_encours_0_c, montant_encours_1_c, montant_encours_2_c, + montant_encours_22_c, montant_encours_h, montant_encours_0_h, + montant_encours_1_h, montant_encours_2_h, montant_encours_22_h, + code_cp_demandee, date_encours, ghs_bebe1_id, ghs_bebe2_id, ghs_bebe3_id, + nb_rejets, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0_c, + montant_comptabilise_0_h, montant_comptabilise_1_c, montant_comptabilise_1_h, + montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_22_c, + montant_comptabilise_22_h, no_facture_reference, date_solde_reference, + date_solde_reference_c, date_solde_reference_h, date_solde_reference_0_c, + date_solde_reference_1_c, date_solde_reference_2_c, date_solde_reference_22_c, + date_solde_reference_0_h, date_solde_reference_1_h, date_solde_reference_2_h, + date_solde_reference_22_h, date_solde_c, date_solde_h, montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, montant_comptabilise_budget_global_c, + no_facture_od_avoir, sejour_id, facture_reference_id, facture_od_avoir_id, + ghm_id) + SELECt no_sejour, no_facture, date_debut, date_fin, type_facture, + code_facture, date_facture, code_vente, mois_vente, date_solde, + montant_facture_c, montant_facture_h, montant_regle_c, montant_regle_h, + delai_facture, delai_solde, date_expedition, delai_expedition, + tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, tiers_payant_0_id, + date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, + date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h, + date_expedition_0, date_expedition_1, date_expedition_2, date_expedition_22, + code_expedie_0, code_expedie_1, code_expedie_2, code_expedie_22, + no_bordereau_0, 'PMSIMCO' AS no_bordereau_1, no_bordereau_2, no_bordereau_22, + montant_facture_0_c, montant_facture_0_h, montant_facture_1_c, + montant_facture_1_h, montant_facture_2_c, montant_facture_2_h, + montant_facture_22_c, montant_facture_22_h, montant_regle_0_c, + montant_regle_0_h, montant_regle_1_c, montant_regle_1_h, montant_regle_2_c, + montant_regle_2_h, montant_regle_22_c, montant_regle_22_h, delai_expedition_0, + delai_expedition_1, delai_expedition_2, delai_expedition_22, + delai_solde_0_c, delai_solde_0_h, delai_solde_1_c, delai_solde_1_h, + delai_solde_2_c, delai_solde_2_h, delai_solde_22_c, delai_solde_22_h, + ghs_id, particularite_t2a, date_vente, code_cloture, montant_encours_c, + montant_encours_0_c, montant_encours_1_c, montant_encours_2_c, + montant_encours_22_c, montant_encours_h, montant_encours_0_h, + montant_encours_1_h, montant_encours_2_h, montant_encours_22_h, + code_cp_demandee, date_encours, ghs_bebe1_id, ghs_bebe2_id, ghs_bebe3_id, + nb_rejets, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0_c, + montant_comptabilise_0_h, montant_comptabilise_1_c, montant_comptabilise_1_h, + montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_22_c, + montant_comptabilise_22_h, no_facture_reference, date_solde_reference, + date_solde_reference_c, date_solde_reference_h, date_solde_reference_0_c, + date_solde_reference_1_c, date_solde_reference_2_c, date_solde_reference_22_c, + date_solde_reference_0_h, date_solde_reference_1_h, date_solde_reference_2_h, + date_solde_reference_22_h, date_solde_c, date_solde_h, montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, montant_comptabilise_budget_global_c, + no_facture_od_avoir, sejour_id, facture_reference_id, facture_od_avoir_id, + ghm_id + FROM w_factures_pmsi; + + + + -- Ajout des lignes + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, date_debut, date_fin, nb_rubrique, coefficient, coefficient_mco, + rubrique_facturation_id, prestation_id, montant_facture, montant_facture_0, + montant_facture_1, montant_facture_2, montant_facture_22, taux_0, + taux_1, taux_2, taux_22, finess, prix_unitaire, lieu_id, nb_prestation, + montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, + montant_comptabilise_2, montant_comptabilise_22, rubrique_comptabilisation_id, + montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, + montant_encours_22, montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, montant_comptabilise_budget_global_1, + facture_id, protocole_id, compte_produit_id) + SELECT + p_factures.no_facture, w_factures_lignes_pmsi.date_debut, w_factures_lignes_pmsi.date_fin, nb_rubrique, coefficient, coefficient_mco, + rubrique_facturation_id, prestation_id, montant_facture, montant_facture_0, + montant_facture_1, montant_facture_2, montant_facture_22, taux_0, + taux_1, taux_2, taux_22, finess, prix_unitaire, lieu_id, nb_prestation, + montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, + montant_comptabilise_2, montant_comptabilise_22, rubrique_comptabilisation_id, + montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, + montant_encours_22, montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, montant_comptabilise_budget_global_1, + p_factures.oid AS facture_id, protocole_id, compte_produit_id + FROM w_factures_lignes_pmsi + JOIN activite[PX].p_factures ON w_factures_lignes_pmsi.no_facture = p_factures.no_facture ; + + + + -- Eclatement des supplements par jour + DROP TABLE IF EXISTS w_factures_lignes_sup_c + ; + + CREATE TEMP TABLE w_factures_lignes_sup_c AS + with prestation as ( + select + oid as t_prestations_oid, + code as t_prestations_code + from activite.t_prestations + where false + OR code IN ('PJ', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') + OR t_prestations.type_ventilation_jour = '1' + ) + , joined_tables as ( + select + p_factures_lignes_c.CTID AS from_CTID, + t_prestations_code AS prestation_code, + p_sejours.date_entree, + p_sejours.date_sortie, + p_factures_lignes_c.* + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.etat = '' + JOIN prestation as t_prestations ON prestation_id = t_prestations_oid + ) + select + joined_tables.*, + date(date_entree) AS date_debut_ghs, + date(date_sortie - interval '1 day') AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN prestation_code = 'GHS' THEN date(date_entree + interval '1 day') ELSE date(date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN prestation_code = 'GHS' THEN date(date_sortie - interval '1 day') ELSE date(date_debut + ((ABS(nb_prestation)-1) || ' day')::interval) END AS date_fin_det, + ABS(CASE WHEN prestation_code = 'GHS' THEN date(date_sortie) - date(date_entree) ELSE nb_prestation END) AS nb_det + from joined_tables + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (prestation_code = 'GHS' AND date(date_sortie) - date(date_entree) > 1)) + ; + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM activite[PX].p_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture AND + w_factures_lignes_sup_c.prestation_code = 'GHS'; + + + CREATE INDEX w_factures_lignes_sup_c_i1 + ON w_factures_lignes_sup_c + USING btree + (date_debut); + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + from_CTID, + no_facture, + date AS date_debut, + date AS date_fin, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + compte_produit_id, + round(montant_facture / ABS(nb_det),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + round(montant_comptabilise / ABS(nb_det),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_det),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_det),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_det),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_det),2) AS montant_comptabilise_22, + rubrique_comptabilisation_id, + round(montant_encours / ABS(nb_det),2) AS montant_encours, + round(montant_encours_0 / ABS(nb_det),2) AS montant_encours_0, + round(montant_encours_1 / ABS(nb_det),2) AS montant_encours_1, + round(montant_encours_2 / ABS(nb_det),2) AS montant_encours_2, + round(montant_encours_22 / ABS(nb_det),2) AS montant_encours_22, + round(montant_facture_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_actes_inclus_dans_sejour, + round(montant_facture_0_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_0_actes_inclus_dans_sejour, + round(montant_facture_1_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_1_actes_inclus_dans_sejour, + round(montant_facture_2_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_2_actes_inclus_dans_sejour, + round(montant_facture_22_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + round(montant_comptabilise_budget_global_1 / ABS(nb_det),2) AS montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON date_debut BETWEEN p_calendrier.date - ABS(nb_det)::integer + 1 AND p_calendrier.date AND + p_calendrier.date <> date_debut ; + ; + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT from_CTID, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + + UPDATE activite[PX].p_factures_lignes_c + SET + date_fin = p_factures_lignes_c.date_debut, + nb_rubrique = p_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_sup_tot.nb_rubrique, + nb_prestation = p_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_sup_tot.nb_prestation, + montant_facture = p_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = p_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = p_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = p_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = p_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = p_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = p_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = p_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = p_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = p_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22, + montant_encours = p_factures_lignes_c.montant_encours - w_factures_lignes_sup_c_sup_tot.montant_encours, + montant_encours_0 = p_factures_lignes_c.montant_encours_0 - w_factures_lignes_sup_c_sup_tot.montant_encours_0, + montant_encours_1 = p_factures_lignes_c.montant_encours_1 - w_factures_lignes_sup_c_sup_tot.montant_encours_1, + montant_encours_2 = p_factures_lignes_c.montant_encours_2 - w_factures_lignes_sup_c_sup_tot.montant_encours_2, + montant_encours_22 = p_factures_lignes_c.montant_encours_22 - w_factures_lignes_sup_c_sup_tot.montant_encours_22, + montant_facture_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 = p_factures_lignes_c.montant_comptabilise_budget_global_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup_tot + WHERE p_factures_lignes_c.CTID = from_CTID; + + + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c_sup; + + + -- Lieu exécution + + UPDATE activite[PX].p_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_factures , + activite[PX].p_mouvements_sejour + WHERE + p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + p_factures_lignes_c.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + p_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id + ; + + + + + -- En cours PMSI public + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id) + SELECT + p_sejours.oid, + p_sejours.no_sejour, + p_sejours.no_sejour || '.BG', + p_sejours.no_sejour || '.BG', + p_sejours.date_entree, + p_sejours.date_sortie, + '0', + '0', + '20991231'::date, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id + FROM pmsi.p_rss + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND p_factures.no_facture LIKE '%BG' + WHERE p_rss.en_cours = '1' AND p_factures.no_facture IS NULL + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17; + + -- Sejours BG PMSi qui ne sont pas dans les RSS + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id) + SELECT p_sejours.oid, + p_sejours.no_sejour, + p_sejours.no_sejour || '.BG', + p_sejours.no_sejour || '.BG', + p_sejours.date_entree, + p_sejours.date_sortie, + '0', + '0', + '20991231'::date, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE p_sejours.est_budget_global = '1' AND + type_t2a = '1' AND + date_entree between now() - interval '1 year' AND now() AND + code_sorti = '1' AND + no_sejour NOT IN (SELECt no_sejour FROM activite[PX].p_factures where no_facture like '%BG') AND + no_sejour NOT IN ( + SELECT p_factures.no_sejour + FROM activite[PX].p_factures + JOIN activite[PX].p_factures_lignes_c ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE t_prestations.code = 'GHS' AND montant_facture > 0 + ) AND + no_sejour NOT IN ( + SELECT p_factures.no_sejour + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_sejours.est_budget_global = '1' AND + code_facture = '1' AND + (t_prestations.code = 'PJ' OR type_valorisation_non_facture = 'PJ') AND + (taux_2 = 100 OR taux_0 = 100) + GROUP BY 1 + HAVING SUM(montant_facture_0+montant_facture_2) > 0 + ); + + + + -- Factures non assurés ajoutées à tord (on trouve un 100% dans patient ou tp1 + DROP TABLE IF EXISTS w_sejours_bg_24; + CREATE TEMP TABLE w_sejours_bg_24 AS + SELECT p_factures.no_sejour, SUM(montant_facture_0+montant_facture_1+montant_facture_2) AS montant_facture_100 + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN activite[PX].p_sejour_pmsi ON p_sejour_pmsi.sejour_id = p_sejours.oid + JOIN pmsi.p_rss ON p_sejour_pmsi.rss_id = p_rss.oid + WHERE p_sejours.est_budget_global = '1' AND + code_facture = '1' AND + (t_prestations.code = 'PJ' OR type_valorisation_non_facture = 'PJ') AND + (taux_1 + taux_2 + taux_0 = 100 OR + taux_0+taux_1+taux_2=0 AND montant_facture_1 = montant_facture + ) AND + p_rss.traitement_epmsi NOT IN ('30','31','32','33') + GROUP BY 1 + HAVING SUM(montant_facture_0+montant_facture_1+montant_facture_2) > 0 + ORDER BY 1; + + DELETE FROM activite[PX].p_factures_lignes_c + USING activite[PX].p_factures + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour IN (SELECT no_sejour FROM w_sejours_bg_24) AND + p_factures_lignes_c.no_facture LIKE '%BG' AND + origine_facturation_id = 1; + + UPDATE activite[PX].p_factures SET + code_facture = '1', + montant_facture_c = 0, + montant_facture_1_c = 0, + montant_comptabilise_1_c =0, + montant_comptabilise_budget_global_c = 0 + WHERE no_sejour IN (SELECT no_sejour FROM w_sejours_bg_24) AND + no_facture LIKE '%BG' AND + montant_comptabilise_budget_global_c = 0; + + + -- Suppression des factures encours externes ajoutées à tord + DROP TABLE IF EXISTS w_factures_externes_double_bg; + CREATE TEMP TABLE w_factures_externes_double_bg AS + SELECT p_factures.no_sejour, + MAX(CASE WHEN code_facture = '0' AND p_factures.montant_facture_c = 0 THEN no_facture ELSE '' END) AS no_facture_encours, + MAX(CASE WHEN code_facture = '1' AND no_facture LIKE '%BG%' THEN no_facture ELSE '' END) AS no_facture_bg + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_sejours.type_sejour = '3' + GROUP BY 1 + HAVING MAX(CASE WHEN code_facture = '0' THEN no_facture ELSE '' END) <> '' AND MAX(CASE WHEN code_facture = '1' AND no_facture LIKE '%BG%' THEN no_facture ELSE '' END) <> '' + ; + + DELETE FROM activite[PX].p_factures + WHERE code_facture = '0' AND + montant_facture_c = 0 AND + no_facture IN (SELECT no_facture_encours FROM w_factures_externes_double_bg) + ; + + DELETE FROM activite[PX].p_factures_lignes_non_facturees_c + WHERE no_facture IN (SELECT no_facture_encours FROM w_factures_externes_double_bg) + ; + + + -- Affectation facture de reference pour lignes non facturées (surtout pour ESPIC car possibilite d'avoir deux factures non facturees) + -- Recopie depuis SHARE + DROP TABLE IF EXISTS w_sejours_facture_reference; + + CREATE TEMP TABLE w_sejours_facture_reference AS + SELECT + p_sejours.no_sejour, + CASE WHEN avec_facturation_intermediaire IS DISTINCT FROM '1' THEN p_sejours.date_sortie ELSE p_factures.date_fin END AS date_fin, + MIN(CASE WHEN avec_facturation_intermediaire IS DISTINCT FROM '1' THEN p_sejours.date_entree ELSE p_factures.date_debut END) AS date_debut, + MAX(p_factures.no_facture) AS no_facture_last, + MAX(CASE WHEN p_factures.no_facture NOT LIKE '%.DMA' AND type_facture <> '1' AND type_facture <> 'X' AND type_facture <> 'P' THEN p_factures.no_facture ELSE null END) AS no_facture_reference_last, + (MAX(ARRAY[to_char( + CASE + WHEN p_factures.no_facture NOT LIKE '%.DMA' AND type_facture <> '1' AND type_facture <> 'X' AND type_facture <> 'P' AND (t_prestations.code IN ('GHS','PJ') OR (p_factures.no_facture LIKE '%BG' AND p_sejours.type_sejour IN ('1','2','5','6'))) THEN p_factures_lignes_c.taux_1 + ELSE 0 END + ,'FM00000'), + CASE + WHEN p_factures.no_facture NOT LIKE '%.DMA' AND type_facture <> '1' AND type_facture <> 'X' AND type_facture <> 'P' AND (t_prestations.code IN ('GHS','PJ') OR (p_factures.no_facture LIKE '%BG' AND p_sejours.type_sejour IN ('1','2','5','6'))) THEN p_factures.no_facture + ELSE NULL END + ] + ))[2] AS no_facture_reference_sejour_last, + COUNT(DISTINCT p_factures.no_facture) AS nb_factures, + MAX(avec_facturation_intermediaire) AS avec_facturation_intermediaire + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_lieux ON p_sejours.lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + LEFT JOIN activite[PX].p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + LEFT JOIN activite.t_prestations ON p_factures_lignes_c.prestation_id = t_prestations.oid AND t_prestations.code IN ('GHS','PJ') + GROUP BY 1,2; + + CREATE INDEX w_sejours_facture_reference_i1 + ON w_sejours_facture_reference + USING btree + (no_sejour) + ; + + -- Cas d'une facture, d'un avoir et dune autre facture, il faut privilégier l'autre facture + UPDATE w_sejours_facture_reference + SET no_facture_reference_sejour_last = subview.no_facture_reference + FROM + ( + SELECT p_factures.no_sejour, + CASE WHEN avec_facturation_intermediaire IS DISTINCT FROM '1' THEN p_sejours.date_sortie ELSE p_factures.date_fin END AS date_fin, + MAX(CASE WHEN type_facture <> '1' AND type_facture <> 'X' THEN no_facture ELSE NULL END) AS no_facture_reference + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_lieux ON p_sejours.lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE p_factures.no_facture NOT LIKE '%.DMA' + GROUP BY 1,2 + HAVING SUM(CASE WHEN type_facture <> '1' AND type_facture <> 'X' THEN 1 ELSE 0 END) = 1 AND + SUM(CASE WHEN type_facture = '1' THEN 1 ELSE 0 END) = SUM(CASE WHEN type_facture = 'X' THEN 1 ELSE 0 END) AND + SUM(CASE WHEN type_facture = 'X' THEN 1 ELSE 0 END) > 0 + ) subview + WHERE w_sejours_facture_reference.no_sejour = subview.no_sejour AND + w_sejours_facture_reference.date_fin = subview.date_fin AND + no_facture_reference_sejour_last IS DISTINCT FROM subview.no_facture_reference + ; + + UPDATE activite[PX].p_factures + SET no_facture_reference = COALESCE(no_facture_reference_sejour_last, no_facture_reference_last, no_facture_last) + FROM w_sejours_facture_reference + JOIN activite[PX].p_sejours ON p_sejours.no_sejour = w_sejours_facture_reference.no_sejour + WHERE p_factures.no_sejour = w_sejours_facture_reference.no_sejour AND + ( + p_factures.date_fin = w_sejours_facture_reference.date_fin OR + p_factures.date_fin = p_sejours.date_sortie AND avec_facturation_intermediaire IS DISTINCT FROM '1' + + ) AND + p_factures.no_facture_reference <> COALESCE(no_facture_reference_sejour_last, no_facture_reference_last, no_facture_last); + + UPDATE activite[PX].p_factures + SET facture_reference_id = p_factures_references.oid + FROM activite[PX].p_factures p_factures_references + WHERE p_factures.no_facture_reference = p_factures_references.no_facture + AND p_factures.facture_reference_id <> p_factures_references.oid + ; + + + + ]]> + + + + + + 1 THEN REGD_MNTENCAIS ELSE 0 END) as montant_regle_22 + FROM w_MPM_RECUEILTIERS_RECT + JOIN w_MPM_RECUEILTIERS_RECT_keys ON w_MPM_RECUEILTIERS_RECT.key = w_MPM_RECUEILTIERS_RECT_keys.key + JOIN activite[PX].p_factures ON no_facture = RECF_NUMFACTALIAS_ETAB + JOIN prod_csis.MRC_REGLEMENTDETAIL_REGD ON REGD_ID_RECT = RECT_ID + WHERE + w_MPM_RECUEILTIERS_RECT.RECG_TYPELIGNE_CPTA = 3 AND + REGD_CODETYOP NOT IN ('AC', 'MC', 'BG') + GROUP BY 1,2,3,4,5,6,7,8; + + -- Acomptes NOEMIE + DROP TABLE IF EXISTS w_MRC_FACTNOEMIEENCAIS_FNOE; + CREATE TEMP TABLE w_MRC_FACTNOEMIEENCAIS_FNOE AS + SELECT RECF_NUMFACTALIAS_ETAB, + FNOE_MNTENCAIS, + FNOE_DATEENCAIS, + FNOE_DATEECRITURE + FROM prod_csis.MRC_FACTNOEMIEENCAIS_FNOE + JOIN w_MPM_FACTURE_RECF ON FNOE_ID_RECF = RECF_ID + JOIN w_SST_ETABLISSEMENT_ETAB ON FNOE_ID_ETAB = ETAB_ID + WHERE FNOE_ID_REGD = 0 + ; + + ANALYSE w_MRC_FACTNOEMIEENCAIS_FNOE + ; + + -- Il y a quelquefois des reprises sans acompte initial + INSERT INTO w_MRC_FACTNOEMIEENCAIS_FNOE + SELECT RECF_NUMFACTALIAS_ETAB, + 0-SUM(FNOE_MNTENCAIS) AS FNOE_MNTENCAIS, + MAX(FNOE_DATEENCAIS) AS FNOE_DATEENCAIS, + NULL::date AS FNOE_DATEECRITURE + FROM w_MRC_FACTNOEMIEENCAIS_FNOE + GROUP BY 1 + HAVING SUM(FNOE_MNTENCAIS) < 0 + ; + + UPDATE activite[PX].p_factures SET + montant_regle_c = montant_regle_c + FNOE_MNTENCAIS, + montant_regle_1_c = montant_regle_1_c + + FNOE_MNTENCAIS + FROM + ( + SELECT RECF_NUMFACTALIAS_ETAB, + 0-SUM(FNOE_MNTENCAIS) AS FNOE_MNTENCAIS, + MAX(FNOE_DATEENCAIS) AS FNOE_DATEENCAIS, + NULL::date AS FNOE_DATEECRITURE + FROM w_MRC_FACTNOEMIEENCAIS_FNOE + GROUP BY 1 + HAVING SUM(FNOE_MNTENCAIS) <> 0 + ) subview + WHERE p_factures.no_facture = RECF_NUMFACTALIAS_ETAB + ; + + + INSERT INTO w_factures_soldes_c + SELECT + ''::text AS finess, + RECF_NUMFACTALIAS_ETAB AS no_facture, + COALESCE(p_factures.oid,0) AS facture_id, + date_trunc('month',COALESCE(FNOE_DATEECRITURE,FNOE_DATEENCAIS)) AS date_comptable, + 0::bigint AS rubrique_comptabilisee_id, + 0::bigint AS prestation_id, + '0'::text AS od_avoir, + CASE WHEN FNOE_DATEECRITURE IS NULL THEN '1'::text ELSE '0'::text END AS od_non_comptabilise, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(FNOE_MNTENCAIS) as montant_regle, + 0::numeric as montant_regle_0, + SUM(FNOE_MNTENCAIS) as montant_regle_1_c, + 0::numeric as montant_regle_2, + 0::numeric as montant_regle_22 + FROM w_MRC_FACTNOEMIEENCAIS_FNOE + JOIN activite.p_factures ON no_facture = RECF_NUMFACTALIAS_ETAB + GROUP BY 1,2,3,4,5,6,7,8 + HAVING SUM(FNOE_MNTENCAIS) <> 0 + ; + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_8'); + + INSERT INTO activite[PX].p_factures_soldes_c ( + finess, + no_facture, + facture_id, + date_comptable, + od_avoir, + od_non_comptabilise, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + finess, + no_facture, + facture_id, + date_comptable, + od_avoir, + od_non_comptabilise, + rubrique_comptabilisee_id, + prestation_id, + SUM(montant_comptabilise), + SUM(montant_comptabilise_0), + SUM(montant_comptabilise_1), + SUM(montant_comptabilise_2), + SUM(montant_comptabilise_22), + SUM(montant_regle), + SUM(montant_regle_0), + SUM(montant_regle_1), + SUM(montant_regle_2), + SUM(montant_regle_22) + FROM w_factures_soldes_c + GROUP BY 1,2,3,4,5,6,7,8; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_8'); + + + ]]> + + + + '1' AND + date(RECG_DATEDEBUT) BETWEEN p_factures.date_debut AND p_factures.date_fin AND + p_factures.no_facture NOT LIKE '%BG' + JOIN activite.t_prestations ON PRES_CODE = t_prestations.code + JOIN base.t_actes ON COALESCE(RECC_CODECCAM,RECG_PRESTATION) = t_actes.code + LEFT JOIN activite[PX].t_medecins_administratifs ON t_medecins_administratifs.code_original = RECG_ID1_MEDN + WHERE RECG_TYPELIGNE IN (4) + ; + + ]]> + + + + 0 THEN RECG_COEFFICIENT ELSE 1 END AS coefficient, + CASE WHEN RECG_COEFFICIENTMCO <> 0 THEN RECG_COEFFICIENTMCO ELSE 1 END AS coefficient_mco, + RECG_PUFACTURE AS prix_unitaire, + MAX(RECT_TAUX_0) as taux_0, + MAX(RECT_TAUX_1) as taux_1, + MAX(RECT_TAUX_2) as taux_2, + MAX(RECT_TAUX_22) as taux_22, + SUM(CASE WHEN RECG_TYPELIGNE IN (4,34) THEN RECT_MONTANT_FAC ELSE 0 END) as montant_facture, + SUM(CASE WHEN RECG_TYPELIGNE IN (4,34) THEN RECT_MONTANT_FAC_0 ELSE 0 END) as montant_facture_0, + SUM(CASE WHEN RECG_TYPELIGNE IN (4,34) THEN RECT_MONTANT_FAC_1 ELSE 0 END) as montant_facture_1, + SUM(CASE WHEN RECG_TYPELIGNE IN (4,34) THEN RECT_MONTANT_FAC_2 ELSE 0 END) as montant_facture_2, + SUM(CASE WHEN RECG_TYPELIGNE IN (4,34) THEN RECT_MONTANT_FAC_22 ELSE 0 END) as montant_facture_22, + SUM(RECT_MONTANTDHO) as montant_depassement, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 THEN RECT_MONTANT_CPT ELSE 0 END) as montant_comptabilise, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 THEN RECT_MONTANT_CPT_0 ELSE 0 END) as montant_comptabilise_0, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 THEN RECT_MONTANT_CPT_1 ELSE 0 END) as montant_comptabilise_1, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 THEN RECT_MONTANT_CPT_2 ELSE 0 END) as montant_comptabilise_2, + SUM(CASE WHEN RECG_TYPELIGNE_CPTA = 4 THEN RECT_MONTANT_CPT_22 ELSE 0 END) as montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour + + FROM w_MPM_RECUEILTIERS_RECT + JOIN w_MPM_RECUEILTIERS_RECT_keys ON w_MPM_RECUEILTIERS_RECT.key = w_MPM_RECUEILTIERS_RECT_keys.key + JOIN activite[PX].p_factures ON no_facture = RECF_NUMFACTALIAS_ETAB + JOIN activite[PX].p_sejours ON p_sejours.oid = p_factures.sejour_id AND p_sejours.etat = '' + + WHERE + w_MPM_RECUEILTIERS_RECT.RECG_TYPELIGNE IN (4,34) AND RECT_OKFACTURE = 1 AND RECT_OKLIGNEFACTURE = 1 AND code_facture <> '0' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_9'); + + + UPDATE activite[PX].p_factures_lignes_h + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_factures, activite[PX].p_mouvements_sejour + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + activite[PX].p_factures_lignes_h.date_debut = p_mouvements_sejour.date AND + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_sorties_directes = 1) AND + p_factures_lignes_h.lieu_id <> p_mouvements_sejour.lieu_id; + + + ]]> + + + + + 0 THEN PRET_COEFFICIENT ELSE 1 END AS coefficient, + 1::numeric AS coefficient_mco, + PRET_PUFACTURE AS prix_unitaire, + 0::numeric as taux_0, + 100::numeric as taux_1, + 0::numeric as taux_2, + 0::numeric as taux_22, + 0::numeric as montant_facture, + 0::numeric as montant_facture_0, + 0::numeric as montant_facture_1, + 0::numeric as montant_facture_2, + 0::numeric as montant_facture_22, + 0::numeric as montant_depassement, + 0::numeric as montant_comptabilise, + 0::numeric as montant_comptabilise_0, + 0::numeric as montant_comptabilise_1, + 0::numeric as montant_comptabilise_2, + 0::numeric as montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + PRET_QUANTITE * CASE WHEN PRET_COEFFICIENT <> 0 THEN PRET_COEFFICIENT ELSE 1 END * PRET_PUFACTURE AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + PRET_QUANTITE * CASE WHEN PRET_COEFFICIENT <> 0 THEN PRET_COEFFICIENT ELSE 1 END * PRET_PUFACTURE AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour + FROM prod_csis.SCA_PRESTATION_PRET + JOIN prod_csis.SID_DOSSIERADMINISTRATIF_DADM ON PRET_ID_DADM = DADM_ID + JOIN w_SST_PRESTATIONETAB_PRTB ON PRET_ID_PRTB = PRTB_ID + JOIN prod_csis.SST_PRESTATION_PRES ON PRTB_ID_PRES = PRES_ID + JOIN activite[PX].p_sejours ON PRET_ID_DADM = p_sejours.code_original AND p_sejours.etat = '' + JOIN activite[PX].p_factures ON + p_sejours.no_sejour = p_factures.no_sejour AND + date(PRET_DATEDEBUT) BETWEEN p_factures.date_debut AND p_factures.date_fin AND + p_factures.no_facture LIKE '%BG' + JOIN activite.t_prestations ON PRES_CODE = t_prestations.code + JOIN base.t_actes ON PRES_CODE = t_actes.code + LEFT JOIN activite[PX].t_medecins_administratifs ON t_medecins_administratifs.code_original = PRET_ID1_MEDN + WHERE PRET_TYPELIGNE IN (4) AND + PRET_STATUT = 'V' + ; + + DROP TABLE IF EXISTS w_ACTECCAM; + CREATE TEMP TABLE w_ACTECCAM AS + SELECT *, + ''::text AS ACCA_CODEPHASE, + ''::text AS ACCA_CODEACTIVITE, + ''::text AS ACCA_CODEEXTENSIONDOC, + ''::text AS ACCA_CODEMODIFICATEUR1, + ''::text AS ACCA_CODEMODIFICATEUR2, + ''::text AS ACCA_CODEMODIFICATEUR3, + ''::text AS ACCA_CODEMODIFICATEUR4, + ''::text AS ACCA_PRESCODE, + 0::bigint AS cti_acte_id, + 0::bigint AS cti_prestation_id, + 0::bigint AS cti_rubrique_facturation_id + FROM prod_csis.sca_acteccam_ccam + JOIN prod_csis.sca_activiteccam_acca ON ACCA_ID_CCAM = CCAM_ID + JOIN prod_csis.sca_intervention_inte ON ccam_id_inte = inte_id + JOIN prod_csis.SID_DOSSIERADMINISTRATIF_DADM ON INTE_ID_DADM = DADM_ID + JOIN prod_csis.sno_acte_acte ON CCAM_ID_ACTE = ACTE_ID + WHERE ACCA_REALISE = '1' AND + CCAM_STATUT = 0 AND + ACCA_ID NOT IN (SELECt RECC_ID_ACCA FROm prod_csis.MPM_RECUEILCCAM_RECC) + ; + + ANALYSE w_ACTECCAM + ; + + UPDATE w_ACTECCAM SET + ACCA_CODEPHASE = COALESCE(PHAS_CODE,'0'), + ACCA_CODEACTIVITE = COALESCE(LACT_CODE,'1'), + ACCA_CODEEXTENSIONDOC = COALESCE(XTSN_CODE,''), + ACCA_CODEMODIFICATEUR1 = COALESCE(TB11_CODE1,''), + ACCA_CODEMODIFICATEUR2 = COALESCE(TB11_CODE2,''), + ACCA_CODEMODIFICATEUR3 = COALESCE(TB11_CODE3,''), + ACCA_CODEMODIFICATEUR4 = COALESCE(TB11_CODE4,'') + FROM + ( + SELECT * + FROM w_ACTECCAM + LEFT JOIN prod_csis.sno_activphase_accp ON ACCA_ID_ACCP = ACCP_ID + LEFT JOIN prod_csis.SNO_PHASE_PHAS ON ACCP_ID_PHAS = PHAS_ID + LEFT JOIN prod_csis.sno_activiteacte_acvt ON ACCA_ID_ACVT = ACVT_ID + LEFT JOIN prod_csis.sno_listactivite_lact ON ACVT_ID_LACT = LACT_ID + LEFT JOIN prod_csis.sno_extension_xtsn ON ACCA_ID_XTSN = XTSN_ID + LEFT JOIN + ( + SELECT MCCA_ID_ACCA, + MAX(CASE WHEN MCCA_ORDRE = 1 THEN TB11_CODE ELSE '' END) AS TB11_CODE1, + MAX(CASE WHEN MCCA_ORDRE = 2 THEN TB11_CODE ELSE '' END) AS TB11_CODE2, + MAX(CASE WHEN MCCA_ORDRE = 3 THEN TB11_CODE ELSE '' END) AS TB11_CODE3, + MAX(CASE WHEN MCCA_ORDRE = 4 THEN TB11_CODE ELSE '' END) AS TB11_CODE4 + FROM prod_csis.sca_modifccam_mcca + JOIN prod_csis.sno_modificateur_tb11 ON MCCA_ID_TB11 = TB11_ID + GROUP BY 1 + ) subview ON ACCA_ID = MCCA_ID_ACCA + ) subview + WHERE w_ACTECCAM.ACCA_ID = subview.ACCA_ID + ; + + UPDATE w_ACTECCAM SET + cti_acte_id = t_actes.oid, + ACCA_PRESCODE = CASE WHEN ACCA_CODEACTIVITE <> '4' THEN COALESCE(t_ccam_regroupements.code,'ADC') ELSE 'ADA' END + FROM base.t_actes + LEFT JOIN base.t_ccam_regroupements ON ccam_regroupement_id_1 = t_ccam_regroupements.oid + WHERE t_actes.code = ACTE_CODE + ; + + INSERT INTO activite[PX].p_factures_lignes_h ( + finess, + no_facture, + facture_id, + date_debut, + heure_debut, + date_fin, + lieu_id, + acte_id, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour + ) + SELECT + ''::text AS finess, + p_factures.no_facture, + p_factures.oid AS facture_id, + date(ACCA_DATEHEUREREALISATION) AS date_debut, + extract('hour' FROM ACCA_DATEHEUREREALISATION) AS heure_debut, + date(ACCA_DATEHEUREREALISATION) AS date_fin, + p_sejours.lieu_sortie_id AS lieu_id, + cti_acte_id AS acte_id, + COALESCE(ACCA_CODEPHASE,'') AS phase_ccam, + COALESCE(ACCA_CODEACTIVITE,'') AS activite_ccam, + COALESCE(ACCA_CODEEXTENSIONDOC,'') AS extension_ccam, + COALESCE(ACCA_CODEMODIFICATEUR1,'') AS modificateur_ccam_1, + COALESCE(ACCA_CODEMODIFICATEUR2,'') AS modificateur_ccam_2, + COALESCE(ACCA_CODEMODIFICATEUR3,'') AS modificateur_ccam_3, + COALESCE(ACCA_CODEMODIFICATEUR4,'') AS modificateur_ccam_4, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_facture_id, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_comptabilise_id, + t_prestations.oid AS prestation_id, + 1::numeric AS nb_rubrique, + 1::numeric AS nb_prestation, + 1::numeric AS coefficient, + 1::numeric AS coefficient_mco, + ACCA_PUCONVENTIONNE AS prix_unitaire, + 0::numeric as taux_0, + 100::numeric as taux_1, + 0::numeric as taux_2, + 0::numeric as taux_22, + 0::numeric as montant_facture, + 0::numeric as montant_facture_0, + 0::numeric as montant_facture_1, + 0::numeric as montant_facture_2, + 0::numeric as montant_facture_22, + 0::numeric as montant_depassement, + 0::numeric as montant_comptabilise, + 0::numeric as montant_comptabilise_0, + 0::numeric as montant_comptabilise_1, + 0::numeric as montant_comptabilise_2, + 0::numeric as montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + ACCA_HONORAIRES AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + ACCA_HONORAIRES AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour + FROM w_ACTECCAM + JOIN activite[PX].p_sejours ON INTE_ID_DADM = p_sejours.code_original AND p_sejours.etat = '' + JOIN activite[PX].p_factures ON + p_sejours.no_sejour = p_factures.no_sejour AND + date(ACCA_DATEHEUREREALISATION) BETWEEN p_factures.date_debut AND p_factures.date_fin AND + p_factures.no_facture LIKE '%BG' + JOIN activite.t_prestations ON ACCA_PRESCODE = t_prestations.code + LEFT JOIN activite[PX].t_medecins_administratifs ON t_medecins_administratifs.code_original = ACCA_ID_MEDN + ; + + + ]]> + + + + + 0 THEN PRET_COEFFICIENT ELSE 1 END AS coefficient, + 1::numeric AS coefficient_mco, + PRET_PUFACTURE AS prix_unitaire, + 0::numeric as taux_0, + 100::numeric as taux_1, + 0::numeric as taux_2, + 0::numeric as taux_22, + 0::numeric as montant_facture, + 0::numeric as montant_facture_0, + 0::numeric as montant_facture_1, + 0::numeric as montant_facture_2, + 0::numeric as montant_facture_22, + 0::numeric as montant_depassement, + 0::numeric as montant_comptabilise, + 0::numeric as montant_comptabilise_0, + 0::numeric as montant_comptabilise_1, + 0::numeric as montant_comptabilise_2, + 0::numeric as montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + PRET_QUANTITE * CASE WHEN PRET_COEFFICIENT <> 0 THEN PRET_COEFFICIENT ELSE 1 END * PRET_PUFACTURE AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + PRET_QUANTITE * CASE WHEN PRET_COEFFICIENT <> 0 THEN PRET_COEFFICIENT ELSE 1 END * PRET_PUFACTURE AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour + FROM w_SCA_PRESTATION_PRET_ssr + JOIN w_SST_PRESTATIONETAB_PRTB ON PRET_ID_PRTB = PRTB_ID + JOIN prod_csis.SST_PRESTATION_PRES ON PRTB_ID_PRES = PRES_ID + JOIN activite.t_prestations ON PRES_CODE = t_prestations.code + JOIN base.t_actes ON PRES_CODE = t_actes.code + LEFT JOIN activite[PX].t_medecins_administratifs ON t_medecins_administratifs.code_original = PRET_ID1_MEDN + WHERE w_SCA_PRESTATION_PRET_ssr.no_facture <> '' + + ]]> + + + + 1 THEN REGD_MNTENCAIS ELSE 0 END) as montant_regle_22 + FROM w_MPM_RECUEILTIERS_RECT + JOIN w_MPM_RECUEILTIERS_RECT_keys ON w_MPM_RECUEILTIERS_RECT.key = w_MPM_RECUEILTIERS_RECT_keys.key + JOIN activite[PX].p_factures ON no_facture = RECF_NUMFACTALIAS_ETAB + JOIN prod_csis.MRC_REGLEMENTDETAIL_REGD ON REGD_ID_RECT = RECT_ID + WHERE + w_MPM_RECUEILTIERS_RECT.RECG_TYPELIGNE_CPTA = 4 AND + REGD_CODETYOP NOT IN ('AC', 'MC', 'BG') + GROUP BY 1,2,3,4,5,6,7; + + + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_h_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_h_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_h_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_h_8'); + + + INSERT INTO activite[PX].p_factures_soldes_h ( + finess, + no_facture, + facture_id, + date_comptable, + od_avoir, + od_non_comptabilise, + medecin_comptabilise_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + finess, + no_facture, + facture_id, + date_comptable, + od_avoir, + od_non_comptabilise, + medecin_comptabilise_id, + SUM(montant_comptabilise), + SUM(montant_comptabilise_0), + SUM(montant_comptabilise_1), + SUM(montant_comptabilise_2), + SUM(montant_comptabilise_22), + SUM(montant_regle), + SUM(montant_regle_0), + SUM(montant_regle_1), + SUM(montant_regle_2), + SUM(montant_regle_22) + FROM w_factures_soldes_h + GROUP BY 1,2,3,4,5,6,7; + + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_8'); + + + ]]> + + + + + + + + = '[ENV_ADM_ANNEEDEBUT]0101'; + + + INSERT INTO w_chiffrier + SELECT + date(DADM_DATEFIN) AS date, + DADM_NDA AS no_sejour, + DADM_ID_ETAB, + DADM_NDA, + DADM_ID, + 0::numeric AS nb_entrees_directes, + 1::numeric AS nb_sorties_directes + FROM prod_csis.SID_DOSSIERADMINISTRATIF_DADM + JOIN prod_csis.SNO_STATUTDOSSIER_STDO ON DADM_ID_STDO = STDO_ID AND STDO_NATUREENTREE = 'R' + WHERE DADM_ID_STDO NOT IN (1,2) AND + DADM_ID_ETDO NOT IN (4,6) AND + DADM_DATEFIN IS NOT NULL AND + date(DADM_DATEFIN) >= '[ENV_ADM_ANNEEDEBUT]0101' AND + STDO_CODE IN ('S', 'C') ; + + + UPDATE w_chiffrier + SET no_sejour = w_SID_DOSSIERADMINISTRATIF_DADM.DADM_NDA_ETAB + FROM w_SID_DOSSIERADMINISTRATIF_DADM + WHERE w_chiffrier.DADM_ID = w_SID_DOSSIERADMINISTRATIF_DADM.DADM_ID AND + w_chiffrier.no_sejour <> DADM_NDA_ETAB + ; + + INSERT INTO activite[PX].p_chiffrier_occupation ( + date, + no_sejour, + nb_entrees_directes, + nb_sorties_directes) + SELECT + date, + no_sejour, + SUM(nb_entrees_directes), + SUM(nb_sorties_directes) + FROM w_chiffrier + GROUP BY 1,2; + + + + ]]> + + + + = '[ENV_ADM_ANNEEDEBUT]0101' AND + CPTF_TYPE = 'CG' + ; + + ANALYSE w_SCP_CPTATRANSFERT_CPTF + ; + + UPDATE w_SCP_CPTATRANSFERT_CPTF SET + no_facture = RECF_NUMFACTALIAS, + no_sejour = p_factures.no_sejour, + facture_id = p_factures.oid, + sejour_id = p_factures.sejour_id + FROM prod_csis.MPM_FACTURE_RECF + JOIN activite[PX].p_factures ON RECF_NUMFACTALIAS = no_facture + WHERE CPTF_ID_RECF = RECF_ID + ; + + TRUNCATE activite[PX].p_ecriture_comptable; + INSERT INTO activite[PX].p_ecriture_comptable( + code_original, + date_comptable, + type_ecriture, + type_piece, + piece, + mode_reglement_code, + clinique_honoraire, + compte_id, + journal_id, + sejour_id, + no_sejour, + facture_id, + no_facture, + medecin_id, + tiers_payant_id, + texte, + montant_credit, + montant_debit, + est_comptabilise, + taux_tva) + SELECT + CPTF_ID::text AS code_original, + date(CPTF_DATEECRITURE) AS date_comptable, + CASE + WHEN t_journal.type_journal = 'VE' AND CPTF_COMPTE LIKE '411%' THEN 'VCLI' + WHEN t_journal.type_journal = 'VE' AND CPTF_COMPTE LIKE '412%' THEN 'VCLI' + WHEN t_journal.type_journal = 'VE' AND CPTF_COMPTE LIKE '445%' THEN 'VTVA' + WHEN t_journal.type_journal = 'VE' AND CPCL_NATURE <> 'HO' THEN 'VPRD' + WHEN t_journal.type_journal = 'VE' AND CPCL_NATURE = 'HO' THEN 'VHON' + WHEN CPTF_COMPTE LIKE '758%' THEN 'PEPR' + WHEN CPTF_COMPTE LIKE '658%' THEN 'PEPR' + WHEN t_journal.type_journal <> 'VE' AND CPTF_COMPTE LIKE '468%' THEN 'ATT' + WHEN t_journal.type_journal <> 'VE' AND CPTF_COMPTE LIKE '471%' THEN 'ATT' + WHEN t_journal.type_journal <> 'VE' AND CPTF_COMPTE LIKE '411%' THEN 'RCLI' + WHEN t_journal.type_journal <> 'VE' AND CPTF_COMPTE LIKE '412%' THEN 'RCLI' + WHEN t_journal.type_journal <> 'VE' AND CPTF_COMPTE LIKE '419%' THEN 'ACPT' + WHEN t_journal.type_journal <> 'VE' AND CPTF_COMPTE LIKE '51%' THEN 'BANQ' + WHEN t_journal.type_journal <> 'VE' AND CPTF_COMPTE LIKE '531%' THEN 'BANQ' + WHEN t_journal.type_journal <> 'VE' AND CPTF_COMPTE LIKE '466%' THEN 'PHON' + WHEN t_journal.type_journal <> 'VE' AND CPTF_COMPTE LIKE '7%' THEN 'XPRD' + WHEN t_journal.type_journal <> 'VE' AND CPTF_COMPTE LIKE '445%' THEN 'XTVA' + ELSE '?'||CPTF_JOURNAL END AS type_ecriture, + CASE + WHEN t_journal.type_journal = 'VE' THEN 'VENTE' + ELSE t_journal.type_journal END AS type_piece, + CPTF_ID_CPCL::text AS piece, + CASE + WHEN CPTF_MODEREGLEMENT ILIKE '%ESPECE%' THEN 'ESP' + WHEN CPTF_MODEREGLEMENT ILIKE '%CHEQUE%' THEN 'CHQ' + WHEN CPTF_MODEREGLEMENT ILIKE '%CARTE BANCAIRE%' THEN 'CB' + WHEN CPTF_MODEREGLEMENT ILIKE '%VIREMENT%' THEN 'VIR' + WHEN CPTF_MODEREGLEMENT ILIKE '%PRELEVEMENT%' THEN 'PLV' + ELSE CPTF_MODEREGLEMENT END AS mode_reglement_code, + CASE WHEN CPCL_NATURE = 'HO' THEN 'H' ELSE 'C' END AS clinique_honoraire, + COALESCE(t_compte.oid,0) AS compte_id, + COALESCE(t_journal.oid,0) AS journal_id, + w_SCP_CPTATRANSFERT_CPTF.sejour_id, + w_SCP_CPTATRANSFERT_CPTF.no_sejour, + w_SCP_CPTATRANSFERT_CPTF.facture_id, + w_SCP_CPTATRANSFERT_CPTF.no_facture, + w_SCP_CPTATRANSFERT_CPTF.medecin_administratif_id, + w_SCP_CPTATRANSFERT_CPTF.tiers_payant_id, + CPTF_LIBELLE AS texte, + CASE WHEN CPTF_SENS = 'C' THEN CPTF_MONTANT ELSE 0 END AS montant_credit, + CASE WHEN CPTF_SENS = 'D' THEN CPTF_MONTANT ELSE 0 END AS montant_debit, + '1'::text AS est_comptabilise, + CPTF_TVATX AS taux_tva + FROM w_SCP_CPTATRANSFERT_CPTF + LEFT JOIN activite[PX].t_compte ON CPTF_COMPTE = t_compte.code + LEFT JOIN activite[PX].t_journal ON CPTF_JOURNAL = t_journal.code + WHERE t_journal.type_journal IS DISTINCT FROM 'IGNORE' + ; + + ]]> + + + + + 0 AND SCP_CPTATRANSFERT_CPTF.CPTF_ID_RECF = MPM_FACTURE_RECF.RECF_ID + LEFT JOIN prod_csis.MPM_CPTAVENTEPRESTATION_CPVP ON SCP_CPTATRANSFERT_CPTF.CPTF_ID_CPVP = CPVP_ID + LEFT JOIN prod_csis.MPM_FACTURE_RECF MPM_FACTURE_RECF2 ON CPVP_ID_RECF <> 0 AND CPVP_ID_RECF = MPM_FACTURE_RECF2.RECF_ID + JOIN w_SST_ETABLISSEMENT_ETAB ON SCP_CPTATRANSFERT_CPTF.CPTF_ID_ETAB = ETAB_ID + LEFT JOIN w_CPTATRANSFERT_CPTF_HONTOSEJ ON + SCP_CPTATRANSFERT_CPTF.CPTF_ID_RECF = w_CPTATRANSFERT_CPTF_HONTOSEJ.CPTF_ID_RECF AND + SCP_CPTATRANSFERT_CPTF.CPTF_NIVEAUDETAIL = w_CPTATRANSFERT_CPTF_HONTOSEJ.CPTF_NIVEAUDETAIL AND + SCP_CPTATRANSFERT_CPTF.CPTF_COMPTE = w_CPTATRANSFERT_CPTF_HONTOSEJ.CPTF_COMPTE AND + SCP_CPTATRANSFERT_CPTF.CPTF_DATEECRITURE = w_CPTATRANSFERT_CPTF_HONTOSEJ.CPTF_DATEECRITURE AND + SCP_CPTATRANSFERT_CPTF.CPTF_LIBELLE NOT LIKE 'Extourne %' AND + CPCL_DOMAINE = 'VE' AND + CPCL_NATURE = 'HO' + WHERE CPTF_TYPE = 'CG' AND + CJRN_ENCOURS <> '1' AND + SCP_CPTATRANSFERT_CPTF.CPTF_LIBELLE NOT LIKE 'Extourne %' AND + ( + SCP_CPTATRANSFERT_CPTF.CPTF_COMPTE LIKE '41%' OR + CPCL_NATURE = 'HO' AND SCP_CPTATRANSFERT_CPTF.CPTF_COMPTE LIKE 'E%' + ) AND + ( + SCP_CPTATRANSFERT_CPTF.CPTF_COMPTE NOT LIKE '419%' OR + SCP_CPTATRANSFERT_CPTF.CPTF_COMPTE LIKE '419%' AND CPTF_JOURNAL LIKE 'NOE%' + ) AND + date(SCP_CPTATRANSFERT_CPTF.CPTF_DATEECRITURE) >= '[ENV_ADM_ANNEEDEBUT]0101' AND + (CPCL_DOMAINE <> 'RE' OR CPCL_DOMAINE = 'RE' AND SCP_CPTATRANSFERT_CPTF.CPTF_ID_RECF <> 0) + ; + + ANALYSE w_SCP_CPTATRANSFERT_CPTF + ; + + UPDATE w_SCP_CPTATRANSFERT_CPTF + SET CPCL_NATURE = 'HO' + WHERE CPCL_NATURE <> 'HO' AND + CPTF_COMPTE IN ( + SELECT CPTF_COMPTE + FROM w_SCP_CPTATRANSFERT_CPTF + WHERE CPCL_DOMAINE = 'VE' + GROUP BY 1 + HAVING count(distinct CPCL_NATURE) = 1 AND + MAX(CPCL_NATURE) = 'HO' + ) + ; + + UPDATE w_SCP_CPTATRANSFERT_CPTF SET + CPTF_COMPTE = '4111HONTOSEJ-'||CPTF_COMPTE, + CPCL_NATURE = 'PE' + WHERE CPTF_HONTOSEJ = '1' + ; + + + UPDATE w_SCP_CPTATRANSFERT_CPTF + SET CPCL_NATURE = CPCL_NATURE_VE + FROM + ( + SELECT CPTF_PIECE, + CPTF_COMPTE, + MAX(CASE WHEN CPCL_DOMAINE = 'VE' THEN CPCL_NATURE ELSE '' END) AS CPCL_NATURE_VE, + MAX(CASE WHEN CPCL_DOMAINE <> 'VE' THEN CPCL_NATURE ELSE '' END) AS CPCL_NATURE_HO + FROM w_SCP_CPTATRANSFERT_CPTF + GROUP BY 1,2 + HAVING MAX(CASE WHEN CPCL_DOMAINE = 'VE' THEN CPCL_NATURE ELSE '' END) <> MAX(CASE WHEN CPCL_DOMAINE <> 'VE' THEN CPCL_NATURE ELSE '' END) AND + MAX(CASE WHEN CPCL_DOMAINE = 'VE' THEN CPCL_NATURE ELSE '' END) <> '' AND + MAX(CASE WHEN CPCL_DOMAINE <> 'VE' THEN CPCL_NATURE ELSE '' END) <> '' order by 1 + ) subview + WHERE w_SCP_CPTATRANSFERT_CPTF.CPTF_PIECE = subview.CPTF_PIECE AND + w_SCP_CPTATRANSFERT_CPTF.CPTF_COMPTE = subview.CPTF_COMPTE AND + CPCL_NATURE <> CPCL_NATURE_VE AND + CPCL_NATURE <> 'VE' + ; + + + + DROP TABLE IF EXISTS SCP_CPTATRANSFERT_CPTF_param; + CREATE TEMP TABLE SCP_CPTATRANSFERT_CPTF_param AS + SELECT CPTF_NIVEAUDETAIL AS CPTF_NIVEAUDETAIL_param, (MAX(ARRAY[to_char(CPTF_MONTANT,'FM000000000000000'),CPTF_SENS]))[2] AS CPTF_SENS_positif + FROM + ( + SELECT CPTF_NIVEAUDETAIL, CPTF_SENS, SUM(CPTF_MONTANT) AS CPTF_MONTANT + FROM w_SCP_CPTATRANSFERT_CPTF + WHERE CPCL_DOMAINE = 'VE' + GROUP BY 1,2 + ) subview + GROUP BY 1 + ; + + + DROP TABLE IF EXISTS w_chiffrier_comptable; + CREATE TEMP TABLE w_chiffrier_comptable AS + SELECT date(date_trunc('month',CPTF_DATEECRITURE)) AS date_comptable, + SUM(CASE + WHEN CPCL_DOMAINE = 'VE' AND (CPCL_NATURE <> 'HO' OR ETAB_TYPE_PSPH = 1) THEN + CASE + WHEN CPTF_SENS = CPTF_SENS_positif THEN CPTF_MONTANT + ELSE 0-CPTF_MONTANT + END + ELSE 0 END + ) AS montant_ventes_c, + SUM(CASE + WHEN CPCL_DOMAINE <> 'VE' AND (CPCL_NATURE <> 'HO' OR ETAB_TYPE_PSPH = 1) THEN + CASE WHEN CPTF_SENS = 'C' THEN CPTF_MONTANT ELSE 0-CPTF_MONTANT END + ELSE 0 END + ) AS montant_reglements_c, + SUM(CASE + WHEN t_divers_cptahon.valeur = '1' AND CPCL_DOMAINE = 'VE' AND CPCL_NATURE = 'HO' AND ETAB_TYPE_PSPH <> 1 THEN + CASE + WHEN CPTF_SENS = CPTF_SENS_positif THEN CPTF_MONTANT + ELSE 0-CPTF_MONTANT + END + ELSE 0 END + ) AS montant_ventes_h, + SUM(CASE + WHEN t_divers_cptahon.valeur = '1' AND CPCL_DOMAINE <> 'VE' AND CPCL_NATURE = 'HO' AND ETAB_TYPE_PSPH <> 1 THEN + CASE WHEN CPTF_SENS = 'C' THEN CPTF_MONTANT ELSE 0-CPTF_MONTANT END + ELSE 0 END + ) AS montant_reglements_h + FROM w_SCP_CPTATRANSFERT_CPTF + JOIN activite.t_divers t_divers_cptahon ON t_divers_cptahon.code = 'CSIS_COMPTAHON' + JOIN activite.t_divers t_divers_srcvteets ON t_divers_srcvteets.code = 'CSIS_COMPTAVTEETSSRC' + LEFT JOIN SCP_CPTATRANSFERT_CPTF_param ON CPTF_NIVEAUDETAIL = CPTF_NIVEAUDETAIL_param + WHERE CPTF_FACTURE <> '0' AND (CPCL_DOMAINE <> 'VE' OR t_divers_srcvteets.VALEUR <> 'MPM_CPTAVENTEPRESTATION_CPVP') + GROUP BY 1 + ORDER BY 1 + ; + + INSERT INTO w_chiffrier_comptable + SELECT date(date_trunc('month',CPVP_DATEECRITURE)) AS date_comptable, + SUM(CASE WHEN CPVP_SENS = 'D' THEN CPVP_MONTANT ELSE 0 - CPVP_MONTANT END) AS montant_ventes_c, + 0::numeric AS montant_reglements_c, + 0::numeric AS montant_ventes_h, + 0::numeric AS montant_reglements_h + FROM prod_csis.MPM_CPTAVENTEPRESTATION_CPVP + JOIN activite.t_divers t_divers_srcvteets ON t_divers_srcvteets.code = 'CSIS_COMPTAVTEETSSRC' + JOIN prod_csis.SST_CPTAJOURNAL_CJRN ON CPVP_ID_CJRN = CJRN_ID + JOIN prod_csis.SCP_CPTACLOTURE_CPCL ON CPVP_ID_CPLC = CPCL_ID + LEFT JOIN activite.p_factures ON p_factures.no_facture = cpvp_facture + WHERE date(CPVP_DATEECRITURE) >= '[ENV_ADM_ANNEEDEBUT]0101' AND + CPVP_TYPE = 'CG' AND + CPVP_COMPTE LIKE '41%' AND + CPCL_DOMAINE = 'VE' AND + t_divers_srcvteets.VALEUR = 'MPM_CPTAVENTEPRESTATION_CPVP' + GROUP BY 1 + ORDER BY 1 + ; + + TRUNCATE activite[PX].p_chiffrier_comptable; + INSERT INTO activite[PX].p_chiffrier_comptable( + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_ventes_h, + montant_reglements_h + ) + SELECT + date_comptable, + SUM(montant_ventes_c), + SUM(montant_reglements_c), + SUM(montant_ventes_h), + SUM(montant_reglements_h) + FROM w_chiffrier_comptable + GROUP BY 1; + + -- Detail par facture + DROP TABLE IF EXISTS w_chiffrier_comptable; + CREATE TEMP TABLE w_chiffrier_comptable AS + SELECT date(date_trunc('month',CPTF_DATEECRITURE)) AS date_comptable, + COALESCE(CPTF_FACTURE) AS no_facture, + SUM(CASE + WHEN CPCL_DOMAINE = 'VE' AND (CPCL_NATURE <> 'HO' OR ETAB_TYPE_PSPH = 1) THEN + CASE + WHEN CPTF_SENS = CPTF_SENS_positif THEN CPTF_MONTANT + ELSE 0-CPTF_MONTANT + END + ELSE 0 END + ) AS montant_ventes_c, + SUM(CASE + WHEN CPCL_DOMAINE <> 'VE' AND (CPCL_NATURE <> 'HO' OR ETAB_TYPE_PSPH = 1) THEN + CASE WHEN CPTF_SENS = 'C' THEN CPTF_MONTANT ELSE 0-CPTF_MONTANT END + ELSE 0 END + ) AS montant_reglements_c, + SUM(CASE + WHEN t_divers_cptahon.valeur = '1' AND CPCL_DOMAINE = 'VE' AND CPCL_NATURE = 'HO' AND ETAB_TYPE_PSPH <> 1 THEN + CASE + WHEN CPTF_SENS = CPTF_SENS_positif THEN CPTF_MONTANT + ELSE 0-CPTF_MONTANT + END + ELSE 0 END + ) AS montant_ventes_h, + SUM(CASE + WHEN t_divers_cptahon.valeur = '1' AND CPCL_DOMAINE <> 'VE' AND CPCL_NATURE = 'HO' AND ETAB_TYPE_PSPH <> 1 THEN + CASE WHEN CPTF_SENS = 'C' THEN CPTF_MONTANT ELSE 0-CPTF_MONTANT END + ELSE 0 END + ) AS montant_reglements_h + FROM w_SCP_CPTATRANSFERT_CPTF + JOIN activite.t_divers t_divers_cptahon ON t_divers_cptahon.code = 'CSIS_COMPTAHON' + JOIN activite.t_divers t_divers_srcvteets ON t_divers_srcvteets.code = 'CSIS_COMPTAVTEETSSRC' + LEFT JOIN SCP_CPTATRANSFERT_CPTF_param ON CPTF_NIVEAUDETAIL = CPTF_NIVEAUDETAIL_param + WHERE CPTF_FACTURE <> '0' AND (CPCL_DOMAINE <> 'VE' OR t_divers_srcvteets.VALEUR <> 'MPM_CPTAVENTEPRESTATION_CPVP') + GROUP BY 1,2 + ORDER BY 1,2; + + INSERT INTO w_chiffrier_comptable + SELECT date(date_trunc('month',CPVP_DATEECRITURE)) AS date_comptable, + CPVP_FACTURE, + SUM(CASE WHEN CPVP_SENS = 'D' THEN CPVP_MONTANT ELSE 0 - CPVP_MONTANT END) AS montant_ventes_c, + 0::numeric AS montant_reglements_c, + 0::numeric AS montant_ventes_h, + 0::numeric AS montant_reglements_h + FROM prod_csis.MPM_CPTAVENTEPRESTATION_CPVP + JOIN activite.t_divers t_divers_srcvteets ON t_divers_srcvteets.code = 'CSIS_COMPTAVTEETSSRC' + JOIN prod_csis.SST_CPTAJOURNAL_CJRN ON CPVP_ID_CJRN = CJRN_ID + JOIN prod_csis.SCP_CPTACLOTURE_CPCL ON CPVP_ID_CPLC = CPCL_ID + LEFT JOIN activite.p_factures ON p_factures.no_facture = cpvp_facture + WHERE date(CPVP_DATEECRITURE) >= '[ENV_ADM_ANNEEDEBUT]0101' AND + CPVP_TYPE = 'CG' AND + CPVP_COMPTE LIKE '41%' AND + CPCL_DOMAINE = 'VE' AND + t_divers_srcvteets.VALEUR = 'MPM_CPTAVENTEPRESTATION_CPVP' + GROUP BY 1,2 + ORDER BY 1 + ; + + TRUNCATE activite[PX].p_factures_comptables; + INSERT INTO activite[PX].p_factures_comptables( + date_comptable, + no_facture, + montant_ventes_c, + montant_reglements_c, + montant_ventes_h, + montant_reglements_h + ) + SELECT + date_comptable, + no_facture, + SUM(montant_ventes_c), + SUM(montant_reglements_c), + SUM(montant_ventes_h), + SUM(montant_reglements_h) + FROM w_chiffrier_comptable + GROUP BY 1,2; + + -- Correction des numéros de facture en mode texte + UPDATE activite[PX].p_factures_comptables + SET no_facture = '0'||no_facture + WHERE '0'||no_facture IN (SELECT no_facture FROM activite[PX].p_factures) AND + no_facture NOT IN (SELECT no_facture FROM activite[PX].p_factures) + ; + + -- Ajustements du chiffrier dus au fait que certains honoraires comptabilisé en HON sont réglés en ETS + DROP TABLE IF EXISTS w_chiffrier_ajust; + CREATE TEMP TABLE w_chiffrier_ajust AS + SELECT no_facture, + facture_id, + date(date_trunc('month',date_comptable)) AS date_comptable, + SUM(montant_reglements_c) AS montant_regle_chiffrier_c, + SUM(montant_reglements_h) AS montant_regle_chiffrier_h + FROM activite[PX].p_factures_comptables + GROUP BY 1,2,3 + ; + + + DROP TABLE IF EXISTS w_chiffrier_ajust_solde_c; + CREATE TEMP TABLE w_chiffrier_ajust_solde_c AS + SELECT no_facture, + date(date_trunc('month',date_comptable)) AS date_comptable, + SUM(montant_regle) AS montant_regle_solde_c + FROM activite[PX].p_factures_soldes_c + WHERE od_non_comptabilise <> '1' + GROUP BY 1,2 + ; + + DROP TABLE IF EXISTS w_chiffrier_ajust_solde_h; + CREATE TEMP TABLE w_chiffrier_ajust_solde_h AS + SELECT no_facture, + date(date_trunc('month',date_comptable)) AS date_comptable, + SUM(montant_regle) AS montant_regle_solde_h + FROM activite[PX].p_factures_soldes_h + WHERE od_non_comptabilise <> '1' + GROUP BY 1,2 + ; + + DROP TABLE IF EXISTS w_chiffrier_ajust_solde; + CREATE TEMP TABLE w_chiffrier_ajust_solde AS + SELECT w_chiffrier_ajust.no_facture, + w_chiffrier_ajust.facture_id, + w_chiffrier_ajust.date_comptable, + montant_regle_chiffrier_c - COALESCE(montant_regle_solde_c,0) AS ecart_montant_reglement_c, + montant_regle_chiffrier_h - COALESCE(montant_regle_solde_h,0) AS ecart_montant_reglement_h + FROM w_chiffrier_ajust + LEFT JOIN w_chiffrier_ajust_solde_c ON + w_chiffrier_ajust.no_facture = w_chiffrier_ajust_solde_c.no_facture AND + w_chiffrier_ajust.date_comptable = w_chiffrier_ajust_solde_c.date_comptable + LEFT JOIN w_chiffrier_ajust_solde_h ON + w_chiffrier_ajust.no_facture = w_chiffrier_ajust_solde_h.no_facture AND + w_chiffrier_ajust.date_comptable = w_chiffrier_ajust_solde_h.date_comptable + WHERE montant_regle_chiffrier_c + montant_regle_chiffrier_h = COALESCE(montant_regle_solde_c,0) + COALESCE(montant_regle_solde_h,0) AND + ( + montant_regle_chiffrier_c <> COALESCE(montant_regle_solde_c,0) + ) + ; + + UPDATE activite[PX].p_factures_comptables SET + montant_reglements_c = montant_reglements_c - ecart_montant_reglement_c, + montant_reglements_h = montant_reglements_h - ecart_montant_reglement_h + FROM w_chiffrier_ajust_solde + WHERE w_chiffrier_ajust_solde.no_facture = p_factures_comptables.no_facture AND + w_chiffrier_ajust_solde.date_comptable = p_factures_comptables.date_comptable + ; + + INSERT INTO activite[PX].p_factures_comptables ( + no_facture, + facture_id, + date_comptable, + montant_ventes_c, + montant_ventes_h, + montant_reglements_c, + montant_reglements_h + ) + SELECT + w_chiffrier_ajust_solde.no_facture, + w_chiffrier_ajust_solde.facture_id, + w_chiffrier_ajust_solde.date_comptable, + 0::numeric AS montant_ventes_c, + 0::numeric AS montant_ventes_h, + 0 - ecart_montant_reglement_c AS montant_reglements_c, + 0 - ecart_montant_reglement_h AS montant_reglements_h + FROM w_chiffrier_ajust_solde + LEFT JOIN activite[PX].p_factures_comptables ON + w_chiffrier_ajust_solde.no_facture = p_factures_comptables.no_facture AND + w_chiffrier_ajust_solde.date_comptable = p_factures_comptables.date_comptable + WHERE p_factures_comptables.no_facture IS NULL + ; + + UPDATE activite[PX].p_chiffrier_comptable SET + montant_reglements_c = montant_reglements_c - ecart_montant_reglement_c, + montant_reglements_h = montant_reglements_h - ecart_montant_reglement_h + FROM + ( + SELECT date_comptable, + SUM(ecart_montant_reglement_c) AS ecart_montant_reglement_c, + SUM(ecart_montant_reglement_h) AS ecart_montant_reglement_h + FROM w_chiffrier_ajust_solde + GROUP BY 1 + ) subview + WHERE p_chiffrier_comptable.date_comptable = subview.date_comptable + ; + + + + ]]> + + + + + + + + + + + + '0' AND COALESCE(PSPH_CODE,'0') <> '' THEN 1 ELSE 0 END::numeric AS ETAB_TYPE_PSPH + FROM prod_csis.SST_ETABLISSEMENT_ETAB + LEFT JOIN prod_csis.SNO_PARTICIPEPSPH_PSPH ON ETAB_ID_PSPH = PSPH_ID + WHERE ETAB_ID IN ([ID_ETAB]) OR '[ID_ETAB]' = '-1'; + + UPDATE w_SST_ETABLISSEMENT_ETAB + SET ETAB_CODE = NULL + WHERE (SELECT count(*) FROM w_SST_ETABLISSEMENT_ETAB) <= 1; + + UPDATE w_SST_ETABLISSEMENT_ETAB + SET ETAB_PREFIX = ETAB_CODE + WHERE (SELECT count(*) FROM w_SST_ETABLISSEMENT_ETAB) > 1; + + + --UPDATE w_SST_ETABLISSEMENT_ETAB + --SET ETAB_CODE = substr(ETAB_CODE,1,2) + --WHERE ETAB_CODE IS NOT NULL; + ]]> + + + + '' AND + orgn_id::bigint NOT IN (SELECT code_original FROM activite[PX].t_tiers_payant); + + UPDATE activite[PX].t_tiers_payant SET + code = orgn_code, + texte = orgn_nom, + texte_court = orgn_nom + FROM prod_csis.sst_organisme_orgn + WHERE orgn_id = code_original AND + ( + code IS DISTINCT FROM orgn_code OR + texte IS DISTINCT FROM orgn_nom OR + texte_court IS DISTINCT FROM orgn_nom + ) + ; + + + + ]]> + + + + '' + AND SPEC_CODE IS NOT NULL + AND t_specialites_medecin.code IS NULL + GROUP BY SPEC_CODE + ORDER BY SPEC_CODE; + + INSERT INTO activite[PX].t_specialites_medecin(oid, code, code_original, texte, texte_court) + SELECT 0, '', '0', 'Non saisie', 'Non saisie' + WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_specialites_medecin); + + + + + INSERT INTO base.t_medecins(oid, nom, prenom, numero_ordre, specialite_id ) + SELECT 0, 'Non renseigné', '', '', 0 WHERE 0 NOT IN (SELECT oid FROM base.t_medecins); + + INSERT INTO activite[PX].t_medecins_administratifs(oid, code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT 0, '0', '****', 'Non renseigné', '', 0, 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_medecins_administratifs); + + DROP TABLE IF EXISTS w_medecins; + CREATE TEMP TABLE w_medecins AS + SELECT MEDN_ID::bigint, + MAX(CASE WHEN MEDN_CODE <> '' AND MEDN_CODE IS NOT NULL THEN MEDN_CODE ELSE 'W' || CAST(MEDN_ID AS char) END) AS MEDN_CODE, + MAX(base.cti_soundex_nom(MEDN_NOM)) AS MEDN_NOM_SOUNDEX, + MAX(base.cti_soundex_nom(COALESCE(MEDN_PRENOM,''))) AS MEDN_PRENOM_SOUNDEX, + MAX(MEDN_NOM) AS MEDN_NOM, + MAX(COALESCE(MEDN_PRENOM,'')) AS MEDN_PRENOM, + MAX(COALESCE(MEDN_CODEADELI,'')) AS MEDN_CODEADELI, + MAX(COALESCE(METB_ID_SPEC,0)::bigint) AS METB_ID_SPEC, + MAX(COALESCE(t_medecins_administratifs.medecin_id,0)) as medecin_id + FROM prod_csis.SST_MEDECIN_MEDN + LEFT JOIN prod_csis.SST_MEDETAB_METB ON METB_ID_MEDN = MEDN_ID + LEFT JOIN activite[PX].t_medecins_administratifs ON MEDN_ID = t_medecins_administratifs.code_original + JOIN w_SST_ETABLISSEMENT_ETAB ON METB_ID_ETAB = ETAB_ID + WHERE MEDN_TRAITANT <> '1' + OR + MEDN_ID IN (SELECT MVMT_CHPNUM1 FROM prod_csis.SMV_MOUVEMENT_MVMT + JOIN prod_csis.SMV_TYPEMOUVEMENT_TMVT ON mvmt_id_tmvt = tmvt_id AND TMVT_CODE = 'R' GROUP BY 1) + OR + MEDN_ID IN (SELECT RECG_ID1_MEDN FROM prod_csis.MPM_RECUEIL_RECG GROUP BY 1) + GROUP BY 1 + ; + + + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.MEDN_NOM, w_medecins.MEDN_PRENOM, w_medecins.MEDN_CODEADELI, 0 FROM + (SELECT SUBSTR(MEDN_NOM_SOUNDEX, 1, 8) AS MEDN_NOM_SOUNDEX, SUBSTR(MEDN_PRENOM_SOUNDEX, 1, 8) AS MEDN_PRENOM_SOUNDEX, MEDN_CODEADELI, MIN(MEDN_ID) AS MEDN_ID + FROM w_medecins + GROUP BY 1,2,3) subview, w_medecins + WHERE w_medecins.MEDN_ID = subview.MEDN_ID + AND subview.MEDN_NOM_SOUNDEX || ',' || subview.MEDN_PRENOM_SOUNDEX || ',' || subview.MEDN_CODEADELI NOT IN + (SELECT substr(base.cti_soundex_nom(nom),1,8) || ',' || substr(base.cti_soundex_nom(prenom),1,8) || ',' || numero_ordre FROM base.t_medecins); + + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.MEDN_NOM, w_medecins.MEDN_PRENOM, w_medecins.MEDN_CODEADELI, 0 FROM + (SELECT MEDN_NOM_SOUNDEX, MEDN_PRENOM_SOUNDEX, MIN(MEDN_ID) AS MEDN_ID + FROM w_medecins + GROUP BY 1,2) subview, w_medecins + WHERE w_medecins.MEDN_ID = subview.MEDN_ID + AND subview.MEDN_NOM_SOUNDEX || ',' || subview.MEDN_PRENOM_SOUNDEX NOT IN + (SELECT base.cti_soundex_nom(nom) || ',' || base.cti_soundex_nom(prenom) FROM base.t_medecins); + + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT substr(base.cti_soundex_nom(nom),1,8) as nom , substr(base.cti_soundex_nom(prenom),1,8) as prenom, numero_ordre, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2,3) subview + WHERE SUBSTR(MEDN_NOM_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(MEDN_PRENOM_SOUNDEX, 1, 8) = subview.prenom + AND MEDN_CODEADELI = subview.numero_ordre + AND w_medecins.medecin_id = 0; + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT base.cti_soundex_nom(nom) as nom , base.cti_soundex_nom(prenom) as prenom, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2) subview + WHERE SUBSTR(MEDN_NOM_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(MEDN_PRENOM_SOUNDEX, 1, 8) = subview.prenom + AND w_medecins.medecin_id = 0; + + INSERT INTO activite[PX].t_medecins_administratifs(code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT DISTINCT MEDN_ID, MEDN_CODE, MEDN_NOM, MEDN_PRENOM, COALESCE(t_specialites_medecin.oid,0), medecin_id + FROM w_medecins + LEFT JOIN prod_csis.SST_SPECIALITE_SPEC ON METB_ID_SPEC = SPEC_ID + LEFT JOIN base.t_specialites_medecin ON (SPEC_CODE = t_specialites_medecin.code) + WHERE MEDN_ID NOT IN (SELECT code_original FROM activite[PX].t_medecins_administratifs); + + UPDATE activite[PX].t_medecins_administratifs + SET nom = MEDN_NOM, + prenom = MEDN_PRENOM, + specialite_id = COALESCE(t_specialites_medecin.oid,0), + medecin_id = w_medecins.medecin_id, + no_adeli = MEDN_CODEADELI + FROM w_medecins + LEFT JOIN prod_csis.SST_SPECIALITE_SPEC ON METB_ID_SPEC = SPEC_ID + LEFT JOIN base.t_specialites_medecin ON (SPEC_CODE = t_specialites_medecin.code) + WHERE w_medecins.MEDN_ID = t_medecins_administratifs.code_original + AND ( + t_medecins_administratifs.nom IS DISTINCT FROM MEDN_NOM OR + t_medecins_administratifs.prenom IS DISTINCT FROM MEDN_PRENOM OR + t_medecins_administratifs.specialite_id IS DISTINCT FROM COALESCE(t_specialites_medecin.oid,0) OR + t_medecins_administratifs.medecin_id IS DISTINCT FROM w_medecins.medecin_id OR + t_medecins_administratifs.no_adeli IS DISTINCT FROM w_medecins.MEDN_CODEADELI + ); + + UPDATE base.t_medecins SET specialite_id = subview.specialite_id FROM + (SELECT t_medecins.oid, MIN(t_medecins_administratifs.specialite_id) as specialite_id + FROM base.t_medecins, activite[PX].t_medecins_administratifs , base.t_specialites_medecin + WHERE t_medecins.oid = t_medecins_administratifs.medecin_id + AND t_medecins_administratifs.specialite_id = t_specialites_medecin.oid + GROUP BY t_medecins.oid) subview + WHERE t_medecins.oid = subview.oid AND t_medecins.oid <> 0 AND t_medecins.specialite_id = 0; + + + -- Adresse et coordonnées + INSERT INTO base.t_codes_postaux(code, texte, texte_court, departement_id) + SELECT MEDN_CODEPOSTAL, MAX(MEDN_VILLE), MAX(MEDN_VILLE), MAX(t_departements.oid) + FROM prod_csis.SST_MEDECIN_MEDN + LEFT JOIN base.t_codes_postaux ON MEDN_CODEPOSTAL = t_codes_postaux.code + JOIN base.t_departements ON + MEDN_CODEPOSTAL NOT LIKE '97%' AND substr(MEDN_CODEPOSTAL,1,2) = t_departements.code OR + MEDN_CODEPOSTAL LIKE '97%' AND substr(MEDN_CODEPOSTAL,1,3) = t_departements.code + WHERE MEDN_CODEPOSTAL <> '' AND + length(MEDN_CODEPOSTAL) = 5 AND + t_codes_postaux.code IS NULL + GROUP BY 1 + ; + + UPDATE activite[PX].t_medecins_administratifs SET + adresse = MEDN_ADRESSEx, + code_postal_id = subview.code_postal_id, + ville = MEDN_VILLE, + telephone = MEDN_TELEPHONEx, + fax = MEDN_FAX, + email = MEDN_EMAIL + FROM + ( + SELECT t_medecins_administratifs.oid, + trim(MEDN_ADRESSE1 || ' ' || MEDN_ADRESSE2) AS MEDN_ADRESSEx, + trim(MEDN_VILLE) AS MEDN_VILLE, + trim(MEDN_CODEPOSTAL) AS MEDN_CODEPOSTAL, + COALESCE(t_codes_postaux.oid,0)::text::bigint AS code_postal_id, + trim(MEDN_TELEPHONE1 || ' ' || MEDN_TELEPHONE2 || ' ' || MEDN_TELEPHONE3) AS MEDN_TELEPHONEx, + trim(MEDN_FAX) AS MEDN_FAX, + trim(MEDN_EMAIL) AS MEDN_EMAIL + FROM activite[PX].t_medecins_administratifs + JOIN prod_csis.SST_MEDECIN_MEDN ON code_original = MEDN_ID + LEFT JOIN base.t_codes_postaux ON MEDN_CODEPOSTAL = t_codes_postaux.code + ) subview + WHERE t_medecins_administratifs.oid = subview.oid AND + ( + t_medecins_administratifs.adresse IS DISTINCT FROM MEDN_ADRESSEx OR + t_medecins_administratifs.code_postal_id IS DISTINCT FROM subview.code_postal_id OR + t_medecins_administratifs.ville IS DISTINCT FROM MEDN_VILLE OR + t_medecins_administratifs.telephone IS DISTINCT FROM MEDN_TELEPHONEx OR + t_medecins_administratifs.fax IS DISTINCT FROM MEDN_FAX OR + t_medecins_administratifs.email IS DISTINCT FROM MEDN_EMAIL + ) + ; + + ]]> + + + + 1 + ) subview + WHERE w_SST_UNITEFONCT_NTFN.NTFN_CODE = subview.NTFN_CODE + ; + + UPDATE activite[PX].t_unites_fonctionnelles SET + code = NTFN_CODE, + texte = NTFN_LIBELLE, + texte_court = NTFN_LIBELLE + FROM prod_csis.SST_UNITEFONCT_NTFN + WHERE NTFN_ID = code_original AND + ( + code IS DISTINCT FROM NTFN_CODE OR + texte IS DISTINCT FROM NTFN_LIBELLE OR + texte_court IS DISTINCT FROM NTFN_LIBELLE + ) + + ; + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT + NTFN_ID::bigint, + NTFN_CODE, + NTFN_LIBELLE, + NTFN_LIBELLE + FROM w_SST_UNITEFONCT_NTFN + WHERE + NTFN_ID::bigint NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles) + ORDER BY NTFN_CODE; + + UPDATE activite[PX].t_unites_fonctionnelles + SET code = code || '-' || oid + FROM w_SST_UNITEFONCT_NTFN + WHERE code_original = NTFN_ID AND + NTFN_CODE <> code + ; + + UPDATE activite[PX].t_unites_fonctionnelles + SET code = NTFN_CODE, + texte = NTFN_LIBELLE, + texte_court = NTFN_LIBELLE + FROM w_SST_UNITEFONCT_NTFN + WHERE code_original = NTFN_ID AND + ( + code IS DISTINCT FROM NTFN_CODE OR + texte IS DISTINCT FROM NTFN_LIBELLE OR + texte_court IS DISTINCT FROM NTFN_LIBELLE + ) + ; + + + + -- Unités médicales + INSERT INTO activite[PX].t_unites_medicales(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_medicales); + + DROP TABLE IF EXISTS w_SST_UNITEMED_NTMD; + CREATE TEMP TABLE w_SST_UNITEMED_NTMD AS + SELECT * + FROM prod_csis.SST_UNITEMED_NTMD + JOIN w_SST_ETABLISSEMENT_ETAB ON ETAB_ID = NTMD_ID_ETAB + ; + + UPDATE w_SST_UNITEMED_NTMD + SET NTMD_CODE = COALESCE(ETAB_PREFIX || '_','') || w_SST_UNITEMED_NTMD.NTMD_CODE + FROM + ( + SELECT NTMD_CODE + FROM w_SST_UNITEMED_NTMD + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE w_SST_UNITEMED_NTMD.NTMD_CODE = subview.NTMD_CODE + ; + + UPDATE activite[PX].t_unites_medicales SET + code = NTMD_CODE, + texte = NTMD_LIBELLE, + texte_court = NTMD_LIBELLE + FROM prod_csis.SST_UNITEMED_NTMD + WHERE NTMD_ID = code_original AND + ( + code IS DISTINCT FROM NTMD_CODE OR + texte IS DISTINCT FROM NTMD_LIBELLE OR + texte_court IS DISTINCT FROM NTMD_LIBELLE + ) + ; + + INSERT INTO activite[PX].t_unites_medicales(code_original, code, texte, texte_court) + SELECT + NTMD_ID::bigint, + NTMD_CODE, + NTMD_LIBELLE, + NTMD_LIBELLE + FROM w_SST_UNITEMED_NTMD + WHERE + NTMD_ID::bigint NOT IN (SELECT code_original FROM activite[PX].t_unites_medicales) + ORDER BY NTMD_CODE; + + UPDATE activite[PX].t_unites_medicales + SET code = code || '-' || oid + FROM w_SST_UNITEMED_NTMD + WHERE code_original = NTMD_ID AND + NTMD_CODE <> code + ; + + UPDATE activite[PX].t_unites_medicales + SET code = NTMD_CODE, + texte = NTMD_LIBELLE, + texte_court = NTMD_LIBELLE + FROM w_SST_UNITEMED_NTMD + WHERE code_original = NTMD_ID AND + ( + code IS DISTINCT FROM NTMD_CODE OR + texte IS DISTINCT FROM NTMD_LIBELLE OR + texte_court IS DISTINCT FROM NTMD_LIBELLE + ) + ; + + -- Activités + TRUNCATE activite[PX].t_activites; + INSERT INTO activite[PX].t_activites(oid, code_original, code, texte, texte_court) + SELECT oid, code_original, substr(code,1,10), texte, texte_court + FROM activite[PX].t_unites_medicales + WHERE + oid NOT IN (SELECT oid FROM activite[PX].t_activites) + ORDER BY oid; + + + + -- Etages et lits + + INSERT INTO activite[PX].t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_etages); + + DROP TABLE IF EXISTS w_SST_ETAGE_ETAG; + CREATE TEMP TABLE w_SST_ETAGE_ETAG AS + SELECT ETAG_ID, ETAG_CODE, ETAG_LIBELLE, + BTMN_ID, BTMN_CODE, BTMN_LIBELLE, + AILE_ID, AILE_CODE, AILE_LIBELLE, + ETAB_PREFIX, + COALESCE(t_divers.valeur,'') AS divers_csis_etage, + 0::bigint AS LINK_ID, + ''::text AS LINK_CODE, + ''::text AS LINK_LIBELLE + FROM prod_csis.SST_ETAGE_ETAG + JOIN prod_csis.SST_BATIMENT_BTMN ON ETAG_ID_BTMN = BTMN_ID + JOIN prod_csis.SST_AILE_AILE ON AILE_ID_ETAG = ETAG_ID + JOIN w_SST_ETABLISSEMENT_ETAB ON ETAB_ID = BTMN_ID_ETAB + LEFT JOIN activite.t_divers ON t_divers.code = 'CSIS_ETAGE' + ; + + UPDATE w_SST_ETAGE_ETAG SET + LINK_ID = ETAG_ID, + LINK_CODE = CASE WHEN BTMN_CODE <> '' THEN BTMN_CODE || '_' ELSE '' END || ETAG_CODE, + LINK_LIBELLE = trim(BTMN_LIBELLE || ' ' || ETAG_LIBELLE) + WHERE divers_csis_etage IS DISTINCT FROM 'AILE' + ; + UPDATE w_SST_ETAGE_ETAG SET + LINK_ID = AILE_ID, + LINK_CODE = CASE WHEN BTMN_CODE <> '' THEN BTMN_CODE || '_' ELSE '' END || ETAG_CODE || CASE WHEN AILE_CODE <> '' THEN '_' || AILE_CODE ELSE '' END , + LINK_LIBELLE = trim(BTMN_LIBELLE || ' ' || ETAG_LIBELLE || ' ' || AILE_LIBELLE) + WHERE divers_csis_etage = 'AILE' + ; + + + UPDATE w_SST_ETAGE_ETAG + SET LINK_CODE = COALESCE(ETAB_PREFIX || '_','') || w_SST_ETAGE_ETAG.LINK_CODE + FROM + ( + SELECT LINK_CODE + FROM w_SST_ETAGE_ETAG + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE w_SST_ETAGE_ETAG.LINK_CODE = subview.LINK_CODE + ; + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court) + SELECT + LINK_ID::bigint, + LINK_CODE, + LINK_LIBELLE, + LINK_LIBELLE + FROM w_SST_ETAGE_ETAG + WHERE + LINK_ID::bigint NOT IN (SELECT code_original FROM activite[PX].t_etages) + ORDER BY LINK_CODE; + + UPDATE activite[PX].t_etages + SET code = code || '-' || oid + FROM w_SST_ETAGE_ETAG + WHERE code_original = LINK_ID AND + LINK_CODE <> code + ; + + + UPDATE activite[PX].t_etages + SET code = LINK_CODE, + texte = LINK_LIBELLE, + texte_court = LINK_LIBELLE + FROM w_SST_ETAGE_ETAG + WHERE code_original = LINK_ID AND + ( + code IS DISTINCT FROM LINK_CODE OR + texte IS DISTINCT FROM LINK_LIBELLE OR + texte_court IS DISTINCT FROM LINK_LIBELLE + ) + ; + + + + DROP TABLE IF EXISTS w_LIT_LITS; + CREATE TEMP TABLE w_LIT_LITS AS + SELECT LITS_ID::bigint, + LITS_CODE, + LITS_LIBELLE, + t_etages.oid AS etage_id, + CASE WHEN PSTN_CODE = 'IND' THEN 'O' ELSE 'N' END AS chambre_particuliere + FROM prod_csis.sst_lit_lits + JOIN prod_csis.sst_piece_piec ON LITS_ID_PIEC = PIEC_ID + JOIN prod_csis.sst_aile_aile ON PIEC_ID_AILE = AILE_ID + JOIN prod_csis.SST_ETAGE_ETAG ON AILE_ID_ETAG = ETAG_ID + JOIN prod_csis.SST_BATIMENT_BTMN ON ETAG_ID_BTMN = BTMN_ID + JOIN w_SST_ETABLISSEMENT_ETAB ON ETAB_ID = BTMN_ID_ETAB + LEFT JOIN prod_csis.sst_position_pstn ON LITS_ID_PSTN = PSTN_ID + LEFT JOIN activite.t_divers ON t_divers.code = 'CSIS_ETAGE' + JOIN activite[PX].t_etages ON + ( + AILE_ID_ETAG::bigint = t_etages.code_original AND t_divers.valeur IS DISTINCT FROM 'AILE' OR + AILE_ID::bigint = t_etages.code_original AND t_divers.valeur = 'AILE' + ); + + + UPDATE w_LIT_LITS + SET LITS_CODE = w_LIT_LITS.LITS_CODE || '_' || indice + FROM + ( + SELECT ETAGE_ID, LITS_CODE, MAX(LITS_ID) AS LITS_ID, count(*) AS indice + FROM w_LIT_LITS + GROUP BY 1,2 + HAVING count(*) > 1 + ) subview + WHERE w_LIT_LITS.LITS_ID = subview.LITS_ID; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT LITS_ID, + LITS_CODE, + LITS_LIBELLE, + LITS_LIBELLE, + etage_id, + chambre_particuliere + FROM w_LIT_LITS + WHERE LITS_ID::bigint NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL); + + UPDATE activite[PX].t_lits SET + code = code || oid, + etage_id = w_LIT_LITS.etage_id + FROM w_LIT_LITS + WHERE LITS_ID = t_lits.code_original AND + ( + t_lits.code IS DISTINCT FROM LITS_CODE OR + t_lits.etage_id IS DISTINCT FROM w_LIT_LITS.etage_id + ) + ; + UPDATE activite[PX].t_lits SET + code = LITS_CODE, + etage_id = w_LIT_LITS.etage_id + FROM w_LIT_LITS + WHERE LITS_ID = t_lits.code_original AND + ( + t_lits.code IS DISTINCT FROM LITS_CODE OR + t_lits.etage_id IS DISTINCT FROM w_LIT_LITS.etage_id + ) + ; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT code_original || '-0' , '', 'Non renseigné', 'Non renseigné', oid, 'O' + FROM activite[PX].t_etages + WHERE oid > 0 AND + code_original || '-0' NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL); + + UPDATE activite[PX].t_lits SET code = '*****' WHERE oid = 0; + + UPDATE activite[PX].t_lits + SET code = t_etages.code || '***' + FROM activite[PX].t_etages + WHERE etage_id = t_etages.oid + AND (t_lits.code = '' OR t_lits.code LIKE '%***') AND + t_lits.code = t_etages.code || '***'; + + + -- Récupération des places disponibles (verrouillé pour l'instant voir 1<>1 plus loin) + DROP TABLE IF EXISTS w_etages_historique; + CREATE TEMP TABLE w_etages_historique AS + SELECT etage_id, + CASE + WHEN (MAX(Array[date::text,nb_lits_theoriques::text]))[2]::numeric > 0 THEN '1' + WHEN (MAX(Array[date::text,nb_box_ambulatoires_theoriques::text]))[2]::numeric > 0 THEN '2' + WHEN (MAX(Array[date::text,nb_box_seances_theoriques::text]))[2]::numeric > 0 THEN '5' + ELSE '1' END AS type_sejour, + (MAX(Array[date::text,est_ouvert_1]))[2]::text AS est_ouvert_1, + (MAX(Array[date::text,est_ouvert_2]))[2]::text AS est_ouvert_2, + (MAX(Array[date::text,est_ouvert_3]))[2]::text AS est_ouvert_3, + (MAX(Array[date::text,est_ouvert_4]))[2]::text AS est_ouvert_4, + (MAX(Array[date::text,est_ouvert_5]))[2]::text AS est_ouvert_5, + (MAX(Array[date::text,est_ouvert_6]))[2]::text AS est_ouvert_6, + (MAX(Array[date::text,est_ouvert_7]))[2]::text AS est_ouvert_7 + FROM activite[PX].t_etages_historique + GROUP BY 1 + ; + + DROP TABLE IF EXISTS w_STATEELEMENT; + CREATE TEMP TABLE w_STATEELEMENT AS + SELECT + AILE_ID, + GREATEST(date(STED_DATEDEBUT),'20070101') AS STED_DATEDEBUT, + COALESCE(STED_DATEFIN,'20991231') AS STED_DATEFIN, + STED_LITSAUTO, + STED_LITSINSTALL, + t_etages.oid AS etage_id, + CASE WHEN COALESCE(type_sejour,'1') = '1' THEN STED_LITSAUTO ELSE 0 END AS nb_lits_theoriques, + CASE WHEN COALESCE(type_sejour,'1') = '1' THEN STED_LITSINSTALL ELSE 0 END AS nb_lits_ouverts, + CASE WHEN COALESCE(type_sejour,'1') = '2' THEN STED_LITSAUTO ELSE 0 END AS nb_box_ambulatoires_theoriques, + CASE WHEN COALESCE(type_sejour,'1') = '2' THEN STED_LITSINSTALL ELSE 0 END AS nb_box_ambulatoires_ouverts, + CASE WHEN COALESCE(type_sejour,'1') = '5' THEN STED_LITSAUTO ELSE 0 END AS nb_box_seances_theoriques, + CASE WHEN COALESCE(type_sejour,'1') = '5' THEN STED_LITSINSTALL ELSE 0 END AS nb_box_seances_ouverts, + COALESCE(est_ouvert_1,'1') AS est_ouvert_1, + COALESCE(est_ouvert_2,'1') AS est_ouvert_2, + COALESCE(est_ouvert_3,'1') AS est_ouvert_3, + COALESCE(est_ouvert_4,'1') AS est_ouvert_4, + COALESCE(est_ouvert_5,'1') AS est_ouvert_5, + COALESCE(est_ouvert_6,'1') AS est_ouvert_6, + COALESCE(est_ouvert_7,'1') AS est_ouvert_7 + FROM prod_csis.SST_STATELEMENT_STEL + JOIN prod_csis.SST_STATELEMENTDETAIL_STED ON STED_ID_STEL = STEL_ID + JOIN prod_csis.SST_AILE_AILE ON STEL_ID_PORTEE = AILE_ID AND STEL_PORTEE = 'aile' + JOIN prod_csis.SST_ETAGE_ETAG ON AILE_ID_ETAG = ETAG_ID + JOIN prod_csis.SST_BATIMENT_BTMN ON ETAG_ID_BTMN = BTMN_ID + JOIN w_SST_ETABLISSEMENT_ETAB ON ETAB_ID = BTMN_ID_ETAB + JOIN activite[PX].t_etages ON t_etages.code_original = AILE_ID + LEFT JOIN w_etages_historique ON w_etages_historique.etage_id = t_etages.oid + JOIN activite.t_divers ON t_divers.code = 'CSIS_ETAGE' AND t_divers.valeur = 'AILE' + WHERE (date(STED_DATEDEBUT) < '19010101' OR date(STED_DATEDEBUT) > '20070101') AND 1<>1 + ; + + INSERT INTO activite[PX].t_etages_historique( + etage_id, + date, + date_fin, + nb_lits_theoriques, + nb_lits_ouverts, + nb_box_ambulatoires_theoriques, + nb_box_ambulatoires_ouverts, + nb_box_seances_theoriques, + nb_box_seances_ouverts, + est_ouvert_1, + est_ouvert_2, + est_ouvert_3, + est_ouvert_4, + est_ouvert_5, + est_ouvert_6, + est_ouvert_7 + ) + SELECT + w_STATEELEMENT.etage_id, + w_STATEELEMENT.STED_DATEDEBUT, + w_STATEELEMENT.STED_DATEFIN, + w_STATEELEMENT.nb_lits_theoriques, + w_STATEELEMENT.nb_lits_ouverts, + w_STATEELEMENT.nb_box_ambulatoires_theoriques, + w_STATEELEMENT.nb_box_ambulatoires_ouverts, + w_STATEELEMENT.nb_box_seances_theoriques, + w_STATEELEMENT.nb_box_seances_ouverts, + w_STATEELEMENT.est_ouvert_1, + w_STATEELEMENT.est_ouvert_2, + w_STATEELEMENT.est_ouvert_3, + w_STATEELEMENT.est_ouvert_4, + w_STATEELEMENT.est_ouvert_5, + w_STATEELEMENT.est_ouvert_6, + w_STATEELEMENT.est_ouvert_7 + FROM w_STATEELEMENT + LEFT JOIN activite[PX].t_etages_historique ON + w_STATEELEMENT.etage_id = t_etages_historique.etage_id AND + STED_DATEDEBUT = t_etages_historique.date + WHERE t_etages_historique.etage_id IS NULL + ; + + UPDATE activite[PX].t_etages_historique SET + nb_lits_theoriques = w_STATEELEMENT.nb_lits_theoriques, + nb_lits_ouverts = w_STATEELEMENT.nb_lits_ouverts, + nb_box_ambulatoires_theoriques = w_STATEELEMENT.nb_box_ambulatoires_theoriques, + nb_box_ambulatoires_ouverts = w_STATEELEMENT.nb_box_ambulatoires_ouverts, + nb_box_seances_theoriques = w_STATEELEMENT.nb_box_seances_theoriques, + nb_box_seances_ouverts = w_STATEELEMENT.nb_box_seances_ouverts + FROM w_STATEELEMENT + WHERE w_STATEELEMENT.etage_id = t_etages_historique.etage_id AND + STED_DATEDEBUT = t_etages_historique.date AND + ( + t_etages_historique.nb_lits_theoriques IS DISTINCT FROM w_STATEELEMENT.nb_lits_theoriques OR + t_etages_historique.nb_lits_ouverts IS DISTINCT FROM w_STATEELEMENT.nb_lits_ouverts OR + t_etages_historique.nb_box_ambulatoires_theoriques IS DISTINCT FROM w_STATEELEMENT.nb_box_ambulatoires_theoriques OR + t_etages_historique.nb_box_ambulatoires_ouverts IS DISTINCT FROM w_STATEELEMENT.nb_box_ambulatoires_ouverts OR + t_etages_historique.nb_box_seances_theoriques IS DISTINCT FROM w_STATEELEMENT.nb_box_seances_theoriques OR + t_etages_historique.nb_box_seances_ouverts IS DISTINCT FROM w_STATEELEMENT.nb_box_seances_ouverts + ) + + ]]> + + + + 1 + ) + ; + + DROP TABLE IF EXISTS w_rubriques_facturation_cum; + CREATE TEMP TABLE w_rubriques_facturation_cum AS + SELECT PRTB_CODE, PRTB_LIBELLE, MIN(PRTB_LIBELLECOURT) AS PRTB_LIBELLECOURT, MIN(PRTB_ID) AS KEEP_PRTB_ID, 0::bigint AS rubrique_facturation_id + FROM w_SST_PRESTATIONETAB_PRTB + GROUP BY 1,2 + ORDER BY 1,2 + ; + + UPDATE activite[PX].t_rubriques_facturation + SET code = w_rubriques_facturation_cum.PRTB_CODE || '-' || t_rubriques_facturation.oid + FROM w_rubriques_facturation_cum + WHERE w_rubriques_facturation_cum.KEEP_PRTB_ID = t_rubriques_facturation.code_original AND + ( + t_rubriques_facturation.code IS DISTINCT FROM w_rubriques_facturation_cum.PRTB_CODE + ) + ; + + UPDATE activite[PX].t_rubriques_facturation + SET code = w_rubriques_facturation_cum.PRTB_CODE, + texte = w_rubriques_facturation_cum.PRTB_LIBELLE, + texte_court = w_rubriques_facturation_cum.PRTB_LIBELLECOURT + FROM w_rubriques_facturation_cum + WHERE w_rubriques_facturation_cum.KEEP_PRTB_ID = t_rubriques_facturation.code_original AND + ( + t_rubriques_facturation.code IS DISTINCT FROM w_rubriques_facturation_cum.PRTB_CODE OR + texte IS DISTINCT FROM w_rubriques_facturation_cum.PRTB_LIBELLE OR + texte_court IS DISTINCT FROM w_rubriques_facturation_cum.PRTB_LIBELLECOURT + ) + ; + + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT KEEP_PRTB_ID::bigint, PRTB_CODE, PRTB_LIBELLE, PRTB_LIBELLECOURT + FROM w_rubriques_facturation_cum + WHERE KEEP_PRTB_ID::bigint NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + ORDER BY PRTB_CODE + ; + + UPDATE w_rubriques_facturation_cum + SET rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation WHERE KEEP_PRTB_ID = code_original + ; + + UPDATE w_SST_PRESTATIONETAB_PRTB + SET rubrique_facturation_id = w_rubriques_facturation_cum.rubrique_facturation_id + FROM w_rubriques_facturation_cum + WHERE w_SST_PRESTATIONETAB_PRTB.PRTB_CODE = w_rubriques_facturation_cum.PRTB_CODE AND + w_SST_PRESTATIONETAB_PRTB.PRTB_LIBELLE = w_rubriques_facturation_cum.PRTB_LIBELLE + ; + + + + INSERT INTO activite.t_prestations(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECT oid FROM activite.t_prestations); + + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT PRES_CODE, PRES_CODE, MAX(PRES_LIBELLE), MAX(PRES_LIBELLECOURT) + FROM prod_csis.SST_PRESTATION_PRES + WHERE PRES_CODE <> '' AND PRES_CODE IS NOT NULl AND + PRES_CODE NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + GROUP BY 1,2 + ORDER BY PRES_CODE; + + + ]]> + + + + + + + + 'PJ' THEN t_prestations.code ELSE 'PJS' END AS prestation_mcode + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].t_lieux ON lieu_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_services_facturation.oid = service_facturation_id + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE date_fin >= '20170701' AND + date_debut >= '20170701' AND + type_t2a = '2' AND + prestation_id = ANY (SELECT to_id FROM activite.t_listes_contenu JOIN activite.t_listes ON liste_id = t_listes.oid AND t_listes.code = 'DMAP_MFS') AND + montant_comptabilise <> 0 AND + montant_comptabilise_1 <> 0 AND + round(prix_unitaire * nb_prestation,2) <> montant_comptabilise AND + abs(round(prix_unitaire * nb_prestation,2)) <> abs(montant_comptabilise)+(nb_prestation*18) + ORDER BY no_facture, prestation_id + ; + + -- Calcul tarif plein + UPDATE w_moins10 SET + montant_facture_1 = + CASE WHEN prestation_code = 'PJ' OR type_valorisation_non_facture = 'PJ' THEN round(prix_unitaire * nb_prestation * taux_1 / 100,2) - montant_fj + ELSE round(prix_unitaire * nb_prestation * taux_1 / 100,2) END, + montant_facture = + CASE WHEN prestation_code = 'PJ' OR type_valorisation_non_facture = 'PJ' THEN round(prix_unitaire * nb_prestation * taux_1 / 100,2) - montant_fj + ELSE round(prix_unitaire * nb_prestation * taux_1 / 100,2) END + + (montant_facture_2+montant_facture_22+montant_facture_0) + ; + + -- Génération prestations spécifiques + INSERT INTO activite.t_prestations (code, texte, texte_court) + SELECT prestation_mcode, t_prestations.texte || ' (-10%)', t_prestations.texte || ' (-10%)' + FROM w_moins10 + JOIN activite.t_prestations on prestation_id = t_prestations.oid + WHERE prestation_mcode NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + GROUP BY 1,2,3 + ; + + -- Maj tarif plein + UPDATE activite[PX].p_factures_lignes_c + SET montant_facture = w_moins10.montant_facture, montant_facture_1 = w_moins10.montant_facture_1 + FROM w_moins10 + WHERE p_factures_lignes_c.CTID = w_moins10.CTID_orig; + ; + + -- Génération -10% + UPDATE w_moins10 SET + montant_facture = montant_comptabilise - montant_facture, + montant_facture_1 = montant_comptabilise_1 - montant_facture_1, + montant_facture_2 = montant_comptabilise_2 - montant_facture_2, + montant_facture_22 = montant_comptabilise_22 - montant_facture_22, + montant_facture_0 = montant_comptabilise_0 - montant_facture_0, + montant_comptabilise = 0, + montant_comptabilise_1 = 0, + montant_comptabilise_2 = 0, + montant_comptabilise_22 = 0, + montant_comptabilise_0 = 0, + prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE t_prestations.code = prestation_mcode + ; + + ALTER TABLE w_moins10 DROP COLUMN CTID_orig; + ALTER TABLE w_moins10 DROP COLUMN montant_fj; + ALTER TABLE w_moins10 DROP COLUMN prestation_code; + ALTER TABLE w_moins10 DROP COLUMN prestation_mcode; + ALTER TABLE w_moins10 DROP COLUMN type_valorisation_non_facture; + + INSERT INTO activite[PX].p_factures_lignes_c + SELECT * + FROM w_moins10 + WHERE montant_facture <> 0 + ; + + + SELECT activite[PX].cti_reorganize_rubrique_facture_c('activite[PX].p_factures_lignes_c'); + ]]> + + + + '' THEN MEDN_CODE ELSE MEDN_NOM || ' ' || MEDN_PRENOM END AS MEDN_CODE, + MEDN_NOM, + MEDN_PRENOM, + ''::text AS MEDN_RPPS, + 0::bigint AS medecin_cti_id + FROM prod_csis.SID_MEDECINTRAITANT_MTRA + JOIN prod_csis.SST_MEDECIN_MEDN ON MTRA_ID_MEDN = MEDN_ID + GROUP BY 1,2,3,4 + ; + + INSERT INTO w_CORRESPONDANTS + SELECT + MEDN_ID, + CASE WHEN MEDN_CODE <> '' THEN MEDN_CODE ELSE MEDN_NOM || ' ' || MEDN_PRENOM END AS MEDN_CODE, + MEDN_NOM, + MEDN_PRENOM, + ''::text AS MEDN_RPPS, + 0::bigint AS medecin_cti_id + FROM prod_csis.SST_MEDECIN_MEDN + WHERE MEDN_ID = ANY (ARRAY(SELECT DISTINCT DADM_ID1_MEDN FROM prod_csis.SID_DOSSIERADMINISTRATIF_DADM)::bigint[]) + AND MEDN_ID != ALL(ARRAY(SELECT MEDN_ID FROM w_CORRESPONDANTS)::bigint[]) + GROUP BY 1,2,3,4 + ; + + + INSERT INTO activite[PX].t_medecins_traitants_administratifs(code_original, code, nom, prenom, specialite_id, no_rpps) + SELECT + MEDN_ID, + MEDN_CODE, + MAX(MEDN_NOM), + MAX(MEDN_PRENOM), + 0, + '' + FROM w_CORRESPONDANTS + LEFT JOIN activite[PX].t_medecins_traitants_administratifs ON + MEDN_ID = t_medecins_traitants_administratifs.code_original + WHERE t_medecins_traitants_administratifs.oid IS NULL + GROUP BY 1,2 + ; + + DELETE + FROM activite[PX].t_medecins_traitants_administratifs + WHERE code_original NOT IN (SELECT MEDN_ID FROM w_CORRESPONDANTS) + ; + + UPDATE w_CORRESPONDANTS + SET medecin_cti_id = t_medecins_traitants_administratifs.oid + FROM activite[PX].t_medecins_traitants_administratifs + WHERE t_medecins_traitants_administratifs.code = MEDN_CODE + ; + + DROP TABLE IF EXISTS w_sejours; + CREATE TEMP TABLE w_sejours AS + SELECT no_sejour, + date_entree, + p_sejours.no_patient, + p_patients.nom, + ''::text AS no_patient_csis, + ''::text AS nom_csis, + 0::numeric AS MEDN_ID + FROM activite[PX].p_sejours + JOIN activite[PX].p_patients ON p_sejours.no_patient = p_patients.no_patient + ; + + + UPDATE w_sejours + SET no_patient_csis = PATI_IPP, nom_csis = PATI_NOMUSAGE, MEDN_ID = COALESCE(MTRA_ID_MEDN,DADM_ID1_MEDN,0) + FROM prod_csis.SID_DOSSIERADMINISTRATIF_DADM + JOIN prod_csis.SID_PATIENT_PATI ON DADM_ID_PATI = PATI_ID + LEFT JOIN prod_csis.SID_MEDECINTRAITANT_MTRA ON PATI_ID = MTRA_ID_PATI AND + date(DADM_DATEDEBUT) BETWEEN date(MTRA_DATEDEBUT) AND COALESCE(date(MTRA_DATEFIN),'20991231') + WHERE DADM_NDA = no_sejour AND + date(DADM_DATEDEBUT) = date_entree AND + COALESCE(MTRA_ID_MEDN,DADM_ID1_MEDN,0) <> 0 + ; + + UPDATE w_sejours + SET no_patient_csis = PATI_IPP, nom_csis = PATI_NOMUSAGE, MEDN_ID = COALESCE(MTRA_ID_MEDN,DADM_ID1_MEDN,0) + FROM prod_csis.SID_DOSSIERADMINISTRATIF_DADM + JOIN prod_csis.SID_PATIENT_PATI ON DADM_ID_PATI = PATI_ID + JOIN prod_csis.SID_MEDECINTRAITANT_MTRA ON PATI_ID = MTRA_ID_PATI + WHERE DADM_NDA = no_sejour AND + date(DADM_DATEDEBUT) = date_entree AND + COALESCE(MTRA_ID_MEDN,DADM_ID1_MEDN,0) <> 0 AND + w_sejours.MEDN_ID = 0 + ; + + UPDATE activite[PX].p_sejours + SET medecin_traitant_id = medecin_cti_id + FROM w_sejours + JOIN w_CORRESPONDANTS ON w_sejours.MEDN_ID = w_CORRESPONDANTS.MEDN_ID + WHERE p_sejours.no_sejour = w_sejours.no_sejour AND + w_sejours.MEDN_ID <> 0 AND + medecin_cti_id <> 0 + ; + + -- ajout des coordonnées par séjour + INSERT INTO activite[PX].p_coordonnees_patient ( + sejour_id, + adresse, + code_postal_id, + commune, + telephone_fixe, + telephone_portable, + email + ) + SELECT + p_sejours.oid, + pati_adresse1 || CASE WHEN pati_adresse2 != '' THEN ' - ' || pati_adresse2 ELSE '' END, + COALESCE(t_codes_postaux.oid,0), + PATI_VILLE, + pati_telephone1, + pati_telephone2, + pati_email + FROM activite[PX].p_sejours + LEFT JOIN prod_csis.SID_DOSSIERADMINISTRATIF_DADM ON SID_DOSSIERADMINISTRATIF_DADM.DADM_ID = code_original + JOIN prod_csis.sid_patient_pati ON pati_id = dadm_id_pati + LEFT JOIN base.t_codes_postaux ON PATI_CODEPOSTAL = t_codes_postaux.code + ; + ]]> + + + + '2099-12-31'; + + UPDATE activite[PX].p_factures + SET + date_solde_0_c = CASE WHEN montant_comptabilise_0_c = 0 THEN '00010101' WHEN montant_comptabilise_0_c = montant_regle_0_c THEN date_solde_0_c ELSE '20991231' END, + date_solde_0_h = CASE WHEN montant_comptabilise_0_h = 0 THEN '00010101' WHEN montant_comptabilise_0_h = montant_regle_0_h THEN date_solde_0_h ELSE '20991231' END, + date_solde_1_c = CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END, + date_solde_1_h = CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '20991231' END, + date_solde_2_c = CASE WHEN montant_comptabilise_2_c = 0 THEN '00010101' WHEN montant_comptabilise_2_c = montant_regle_2_c THEN date_solde_2_c ELSE '20991231' END, + date_solde_2_h = CASE WHEN montant_comptabilise_2_h = 0 THEN '00010101' WHEN montant_comptabilise_2_h = montant_regle_2_h THEN date_solde_2_h ELSE '20991231' END, + date_solde_22_c = CASE WHEN montant_comptabilise_22_c = 0 THEN '00010101' WHEN montant_comptabilise_22_c = montant_regle_22_c THEN date_solde_22_c ELSE '20991231' END, + date_solde_22_h = CASE WHEN montant_comptabilise_22_h = 0 THEN '00010101' WHEN montant_comptabilise_22_h = montant_regle_22_h THEN date_solde_22_h ELSE '20991231' END + WHERE + ( + date_solde_0_c <> CASE WHEN montant_comptabilise_0_c = 0 THEN '00010101' WHEN montant_comptabilise_0_c = montant_regle_0_c THEN date_solde_0_c ELSE '20991231' END OR + date_solde_0_h <> CASE WHEN montant_comptabilise_0_h = 0 THEN '00010101' WHEN montant_comptabilise_0_h = montant_regle_0_h THEN date_solde_0_h ELSE '20991231' END OR + date_solde_1_c <> CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END OR + date_solde_1_h <> CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '20991231' END OR + date_solde_2_c <> CASE WHEN montant_comptabilise_2_c = 0 THEN '00010101' WHEN montant_comptabilise_2_c = montant_regle_2_c THEN date_solde_2_c ELSE '20991231' END OR + date_solde_2_h <> CASE WHEN montant_comptabilise_2_h = 0 THEN '00010101' WHEN montant_comptabilise_2_h = montant_regle_2_h THEN date_solde_2_h ELSE '20991231' END OR + date_solde_22_c <> CASE WHEN montant_comptabilise_22_c = 0 THEN '00010101' WHEN montant_comptabilise_22_c = montant_regle_22_c THEN date_solde_22_c ELSE '20991231' END OR + date_solde_22_h <> CASE WHEN montant_comptabilise_22_h = 0 THEN '00010101' WHEN montant_comptabilise_22_h = montant_regle_22_h THEN date_solde_22_h ELSE '20991231' END + ); + + DROP TABLE IF EXISTS w_factures_soldes; + CREATE TEMP TABLE w_factures_soldes AS + SELECT + no_facture, + GREATEST(date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h) AS date_solde, + GREATEST(date_solde_0_c, date_solde_1_c, date_solde_2_c, date_solde_22_c) AS date_solde_c, + GREATEST(date_solde_0_h, date_solde_1_h, date_solde_2_h, date_solde_22_h) AS date_solde_h + FROM activite[PX].p_factures; + + UPDATE activite[PX].p_factures + SET + date_solde = w_factures_soldes.date_solde, + date_solde_c = w_factures_soldes.date_solde_c, + date_solde_h = w_factures_soldes.date_solde_h + FROM w_factures_soldes + WHERE p_factures.no_facture = w_factures_soldes.no_facture AND + ( + p_factures.date_solde IS NULL OR p_factures.date_solde <> w_factures_soldes.date_solde OR + p_factures.date_solde_c IS NULL OR p_factures.date_solde_c <> w_factures_soldes.date_solde_c OR + p_factures.date_solde_h IS NULL OR p_factures.date_solde_h <> w_factures_soldes.date_solde_h + ); + + DROP TABLE IF EXISTS w_factures_references_soldes; + + CREATE TEMP TABLE w_factures_references_soldes AS + SELECT + no_facture_reference, + MAX(date_solde) AS date_solde_reference, + MAX(date_solde_c) AS date_solde_reference_c, + MAX(date_solde_h) AS date_solde_reference_h, + MAX(date_solde_0_c) AS date_solde_reference_0_c, + MAX(date_solde_0_h) AS date_solde_reference_0_h, + MAX(date_solde_1_c) AS date_solde_reference_1_c, + MAX(date_solde_1_h) AS date_solde_reference_1_h, + MAX(date_solde_2_c) AS date_solde_reference_2_c, + MAX(date_solde_2_h) AS date_solde_reference_2_h, + MAX(date_solde_22_c) AS date_solde_reference_22_c, + MAX(date_solde_22_h) AS date_solde_reference_22_h + FROM activite[PX].p_factures + GROUP BY no_facture_reference; + + CREATE INDEX i_factures_references_soldes_1 + ON w_factures_references_soldes + USING btree + (no_facture_reference); + + + + UPDATE activite[PX].p_factures + SET + date_solde_reference = w_factures_references_soldes.date_solde_reference, + date_solde_reference_c = w_factures_references_soldes.date_solde_reference_c, + date_solde_reference_h = w_factures_references_soldes.date_solde_reference_h, + date_solde_reference_0_c = w_factures_references_soldes.date_solde_reference_0_c, + date_solde_reference_0_h = w_factures_references_soldes.date_solde_reference_0_h, + date_solde_reference_1_c = w_factures_references_soldes.date_solde_reference_1_c, + date_solde_reference_1_h = w_factures_references_soldes.date_solde_reference_1_h, + date_solde_reference_2_c = w_factures_references_soldes.date_solde_reference_2_c, + date_solde_reference_2_h = w_factures_references_soldes.date_solde_reference_2_h, + date_solde_reference_22_c = w_factures_references_soldes.date_solde_reference_22_c, + date_solde_reference_22_h = w_factures_references_soldes.date_solde_reference_22_h + FROM w_factures_references_soldes + WHERE p_factures.no_facture_reference = w_factures_references_soldes.no_facture_reference + AND ( + p_factures.date_solde_reference IS NULL OR p_factures.date_solde_reference <> w_factures_references_soldes.date_solde_reference OR + p_factures.date_solde_reference_c IS NULL OR p_factures.date_solde_reference_c <> w_factures_references_soldes.date_solde_reference_c OR + p_factures.date_solde_reference_h IS NULL OR p_factures.date_solde_reference_h <> w_factures_references_soldes.date_solde_reference_h OR + p_factures.date_solde_reference_0_c IS NULL OR p_factures.date_solde_reference_0_c <> w_factures_references_soldes.date_solde_reference_0_c OR + p_factures.date_solde_reference_0_h IS NULL OR p_factures.date_solde_reference_0_h <> w_factures_references_soldes.date_solde_reference_0_h OR + p_factures.date_solde_reference_1_c IS NULL OR p_factures.date_solde_reference_1_c <> w_factures_references_soldes.date_solde_reference_1_c OR + p_factures.date_solde_reference_1_h IS NULL OR p_factures.date_solde_reference_1_h <> w_factures_references_soldes.date_solde_reference_1_h OR + p_factures.date_solde_reference_2_c IS NULL OR p_factures.date_solde_reference_2_c <> w_factures_references_soldes.date_solde_reference_2_c OR + p_factures.date_solde_reference_2_h IS NULL OR p_factures.date_solde_reference_2_h <> w_factures_references_soldes.date_solde_reference_2_h OR + p_factures.date_solde_reference_22_c IS NULL OR p_factures.date_solde_reference_22_c <> w_factures_references_soldes.date_solde_reference_22_c OR + p_factures.date_solde_reference_22_h IS NULL OR p_factures.date_solde_reference_22_h <> w_factures_references_soldes.date_solde_reference_22_h + ); + + + + ]]> + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour + + FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY p_sejours.no_sejour; + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = CASE WHEN w_sejours_total.date_expedition_0 <> '0001-01-01' THEN w_sejours_total.date_expedition_0 ELSE '2099-12-31' END, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = CASE WHEN w_sejours_total.date_expedition_1 <> '0001-01-01' THEN w_sejours_total.date_expedition_1 ELSE '2099-12-31' END, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = CASE WHEN w_sejours_total.date_expedition_2 <> '0001-01-01' THEN w_sejours_total.date_expedition_2 ELSE '2099-12-31' END, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = CASE WHEN w_sejours_total.date_expedition_22 <> '0001-01-01' THEN w_sejours_total.date_expedition_22 ELSE '2099-12-31' END, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_0 <> '0001-01-01' THEN w_sejours_total.date_expedition_0 ELSE '2099-12-31' END OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_1 <> '0001-01-01' THEN w_sejours_total.date_expedition_1 ELSE '2099-12-31' END OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_2 <> '0001-01-01' THEN w_sejours_total.date_expedition_2 ELSE '2099-12-31' END OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_22 <> '0001-01-01' THEN w_sejours_total.date_expedition_22 ELSE '2099-12-31' END OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour + + ); + + + UPDATE activite[PX].p_sejours SET + + delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END, + delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END, + delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END, + delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END, + + delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END, + delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END, + + delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END, + delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END, + + delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END, + delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END, + + delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END, + delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END + + WHERE + + delai_groupage IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END + OR + delai_facture IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END + OR + delai_expedition IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END + OR + delai_solde IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END + OR + + delai_expedition_0 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END + OR + delai_solde_0 IS DISTINCT FROM CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END + OR + + delai_expedition_1 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END + OR + delai_solde_1 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END + OR + + delai_expedition_2 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END + OR + delai_solde_2 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END + OR + + delai_expedition_22 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END + OR + delai_solde_22 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END; + + + ]]> + + + + + + + + + + + + + + diff --git a/import_activite/iCTI_import_activite_DAI.XML b/import_activite/iCTI_import_activite_DAI.XML new file mode 100644 index 0000000..c7a25eb --- /dev/null +++ b/import_activite/iCTI_import_activite_DAI.XML @@ -0,0 +1,4128 @@ + + + + + + + + = '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1 + ORDER BY 1 + ; + + DROP TABLE IF EXISTS w_IDE_SEJOUR; + CREATE TEMP TABLE w_IDE_SEJOUR AS + SELECT + date_extraction, + NO_4D AS w_NO_4D, + CASE WHEN NO_ENTRANT > 0 THEN to_char(NO_ENTRANT,'FM9990000000')||REF_SEJOUR ELSE 'ID'||NO_4D::text END AS w_NO_ENTRANT + FROM w_periode , prod_dai.PATIENTS + LEFT JOIN (SELECT NO_PATIENT, CREATION FROM prod_dai.FACTURES_615 GROUP BY 1,2) subview + ON (NO_4D = NO_PATIENT) + WHERE + (date(DATE_ENTREE) BETWEEN date_debut_periode AND date(now()) + interval '2 day' OR date(DATE_SORTIE) >= date_debut_periode OR DATE_SORTIE = '0001-01-01') OR subview.CREATION >= '[ENV_ADM_ANNEEDEBUT]0101' + AND (date(DATE_SORTIE) <> '0001-01-01' AND date(DATE_SORTIE) <= '20201231' OR DATE_SORTIE= '0001-01-01' OR subview.NO_PATIENT IS NOT NULL) OR subview.CREATION >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1,2,3; + + ALTER TABLE w_IDE_SEJOUR ADD CONSTRAINT w_IDE_SEJOUR_pk PRIMARY KEY(w_NO_4D); + + INSERT INTO w_IDE_SEJOUR + SELECT + date_extraction, + NO_4D AS w_NO_4D, + CASE WHEN NO_ENTRANT > 0 THEN to_char(NO_ENTRANT,'FM9990000000')||REF_SEJOUR ELSE 'ID'||NO_4D::text END AS w_NO_ENTRANT + FROM w_periode , prod_dai.PATIENTS + WHERE + NO_4D IN (SELECT NO_PATIENT FROM w_SEJOUR_compta) + AND NO_4D NOT IN (SELECT w_NO_4D FROM w_IDE_SEJOUR) + GROUP BY 1,2,3; + + + DELETE FROM w_IDE_SEJOUR + USING activite.t_sejour + WHERE w_NO_ENTRANT = t_sejour.no_sejour AND + est_ignore = '1' AND + '[PX]' = ''; + + + DROP TABLE IF EXISTS w_IDE_SEJOUR_complet; + CREATE TEMP TABLE w_IDE_SEJOUR_complet AS + SELECT + w_NO_4D, + w_NO_ENTRANT, + ''::text AS NO_4D_patient, + 0::bigint AS w_MEDECIN, + date_extraction, + PATIENTS.*, + 0::numeric AS HEURE_ENTREE_cti, + '00:00:00'::time AS HEURE_ENTREE_time, + 0::numeric AS HEURE_ENTREE_heure, + 0::numeric AS HEURE_ENTREE_minute, + 0::numeric AS HEURE_ENTREE_seconde, + 0::numeric AS HEURE_SORTIE_cti, + '00:00:00'::time AS HEURE_SORTIE_time, + 0::numeric AS HEURE_SORTIE_heure, + 0::numeric AS HEURE_SORTIE_minute, + 0::numeric AS HEURE_SORTIE_seconde + FROM w_IDE_SEJOUR + JOIN prod_dai.PATIENTS ON NO_4D = w_NO_4D; + + + -- NO_ENTRANT en double + UPDATE w_IDE_SEJOUR_complet + SET w_NO_ENTRANT = w_IDE_SEJOUR_complet.w_NO_ENTRANT || '-' || w_IDE_SEJOUR_complet.NO_4D::text + FROM + ( + SELECT w_NO_ENTRANT + FROM w_IDE_SEJOUR_complet + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE w_IDE_SEJOUR_complet.w_NO_ENTRANT = subview.w_NO_ENTRANT + ; + + -- Si date entrée = 0001-01-01, récupérer celle de la facture + UPDATE w_IDE_SEJOUR_complet SET + DATE_ENTREE = DEBUT, + DATE_SORTIE = FIN + FROM + ( + SELECT NO_PATIENT, MIN(DEBUT) AS DEBUT, MAX(FIN) AS FIN + FROM prod_dai.FACTURES_615 + JOIN w_IDE_SEJOUR_complet ON NO_4D = NO_PATIENT + WHERE DATE_ENTREE = '00010101' + GROUP BY 1 + ) subview + WHERE w_IDE_SEJOUR_complet.NO_4D = subview.NO_PATIENT + ; + + -- Type de rééducation Externe + UPDATE w_IDE_SEJOUR_complet + SET TYPE_REEDUCATIO = 'EXT', + DATE_SORTIE = CASE WHEN DATE_SORTIE > '00010101' THEN DATE_SORTIE ELSE DATE_ENTREE END + FROM prod_dai.FACTURES_615 + WHERE NO_4D = NO_PATIENT AND + TYPE_REEDUCATIO IS NULL AND + LIBELLE LIKE 'CS%' + ; + + -- Dates E/S externes + UPDATE w_IDE_SEJOUR_complet SET + DATE_ENTREE = DEBUT, + DATE_SORTIE = FIN + FROM + ( + SELECT NO_PATIENT, MIN(DEBUT) AS DEBUT, MIN(FIN) AS FIN + FROM prod_dai.FACTURES_615 + JOIN w_IDE_SEJOUR_complet ON NO_4D = NO_PATIENT + WHERE TYPE_REEDUCATIO = 'EXT' + GROUP BY 1 + ) subview + WHERE w_IDE_SEJOUR_complet.NO_4D = subview.NO_PATIENT AND + ( + DATE_ENTREE <> DEBUT OR + DATE_SORTIE <> FIN + ) + ; + + + -- Ne pas prendre les date entrées 0001-01-01- qui restent + DELETE FROM w_IDE_SEJOUR_complet + WHERE DATE_ENTREE = '00010101' + ; + + UPDATE w_IDE_SEJOUR_complet + SET HEURE_ENTREE_CTI = + CASE WHEN HEURE_ENTREE LIKE '%:%' + THEN split_part(HEURE_ENTREE, ':', 1)::int * 10000 + split_part(HEURE_ENTREE, ':', 2)::int * 100 + ELSE base.cti_to_number(HEURE_ENTREE)/1000 + END + WHERE HEURE_ENTREE <> '' AND HEURE_ENTREE <> '0' + + ; + + -- Mise à jour HEURE_ENTREE_... + UPDATE w_IDE_SEJOUR_complet SET + HEURE_ENTREE_heure = + CASE WHEN HEURE_ENTREE LIKE '%:%' + THEN split_part(HEURE_ENTREE, ':', 1)::int + ELSE floor(HEURE_ENTREE_CTI/3600) + END, + HEURE_ENTREE_minute = + CASE WHEN HEURE_ENTREE LIKE '%:%' + THEN split_part(HEURE_ENTREE, ':', 2)::int + ELSE floor((HEURE_ENTREE_CTI - (HEURE_ENTREE_heure*3600))/60) + END, + HEURE_ENTREE_time = + CASE WHEN HEURE_ENTREE LIKE '%:%' + THEN HEURE_ENTREE::time + ELSE (HEURE_ENTREE_heure||':'||HEURE_ENTREE_minute||':00')::time + END + WHERE HEURE_ENTREE <> '' AND HEURE_ENTREE <> '0' + + ; + + UPDATE w_IDE_SEJOUR_complet + SET HEURE_SORTIE_CTI = + CASE WHEN HEURE_SORTIE LIKE '%:%' + THEN split_part(HEURE_SORTIE, ':', 1)::int * 10000 + split_part(HEURE_SORTIE, ':', 2)::int * 100 + ELSE base.cti_to_number(HEURE_SORTIE)/1000 + END + WHERE HEURE_SORTIE <> '' AND HEURE_SORTIE <> '0' + ; + + -- Mise à jour HEURE_SORTIE_... + UPDATE w_IDE_SEJOUR_complet SET + HEURE_SORTIE_heure = + CASE WHEN HEURE_SORTIE LIKE '%:%' + THEN split_part(HEURE_SORTIE, ':', 1)::int + ELSE floor(HEURE_SORTIE_CTI/3600) + END, + HEURE_SORTIE_minute = + CASE WHEN HEURE_SORTIE LIKE '%:%' + THEN split_part(HEURE_SORTIE, ':', 2)::int + ELSE floor((HEURE_SORTIE_CTI - (HEURE_SORTIE_heure*3600))/60) + END, + HEURE_SORTIE_time = + CASE WHEN HEURE_SORTIE LIKE '%:%' + THEN HEURE_SORTIE::time + ELSE (HEURE_SORTIE_heure||':'||HEURE_SORTIE_minute||':00')::time + END + WHERE HEURE_SORTIE <> '' AND HEURE_SORTIE <> '0' + + ; + + -- Pourquoi les 4 lignes suivantes ??? + --UPDATE w_IDE_SEJOUR_complet + --SET + -- HEURE_ENTREE = RIGHT(HEURE_ENTREE,-2), + -- HEURE_SORTIE = RIGHT(HEURE_SORTIE,-2); + + ALTER TABLE w_IDE_SEJOUR_complet ADD CONSTRAINT w_IDE_SEJOUR_complet_pk PRIMARY KEY(NO_4D); + + -- doublons ? (todo) + + CREATE INDEX w_IDE_SEJOUR_complet_i1 + ON w_IDE_SEJOUR_complet + USING btree + (NO_4D); + + + -- Numéros de factures en double ? + + ]]> + + + + + + + + + + + + + + + + + + + + + '00010101' + GROUP BY 1,2 + ) FACTURES_615 ON NO_PATIENT = NO_4D + WHERE + w_no_entrant LIKE 'ID%' AND + TYPE_REEDUCATIO ='EXT' + ; + + UPDATE w_FACTURES_615 FACTURES_615 + SET NO_PATIENT = EXT_NO_4D + FROM w_SEJOUR_EXT + WHERE NO_PATIENT = NO_4D AND + DEBUT = EXT_DATE_ENTREE + ; + + UPDATE w_IDE_SEJOUR_complet SET + NO_4D = EXT_NO_4D, + w_NO_4D = EXT_NO_4D, + w_NO_ENTRANT = EXT_NO_ENTRANT, + DATE_ENTREE = EXT_DATE_ENTREE, + DATE_SORTIE = EXT_DATE_SORTIE, + w_MEDECIN = w_SEJOUR_EXT.EXT_MEDECIN + FROM w_SEJOUR_EXT + WHERE w_IDE_SEJOUR_complet.NO_4D = w_SEJOUR_EXT.NO_4D AND + w_IDE_SEJOUR_complet.DATE_ENTREE = w_SEJOUR_EXT.EXT_DATE_ENTREE + ; + + UPDATE w_SEJOUR_EXT SET + w_NO_4D = EXT_NO_4D, + NO_4D = EXT_NO_4D, + w_NO_ENTRANT = EXT_NO_ENTRANT, + DATE_ENTREE = EXT_DATE_ENTREE, + DATE_SORTIE = EXT_DATE_SORTIE, + w_MEDECIN = EXT_MEDECIN + ; + + ALTER TABLE w_SEJOUR_EXT DROP COLUMN EXT_NO_4D; + ALTER TABLE w_SEJOUR_EXT DROP COLUMN EXT_NO_ENTRANT; + ALTER TABLE w_SEJOUR_EXT DROP COLUMN EXT_DATE_ENTREE; + ALTER TABLE w_SEJOUR_EXT DROP COLUMN EXT_DATE_SORTIE; + ALTER TABLE w_SEJOUR_EXT DROP COLUMN EXT_MEDECIN; + + INSERT INTO w_IDE_SEJOUR_complet + SELECT * + FROM w_SEJOUR_EXT + WHERE w_SEJOUR_EXT.NO_4D NOT IN (SELECT NO_4D FROM w_IDE_SEJOUR_complet) + ; + + + DROP TABLE IF EXISTS w_IDE_PEC; + CREATE TEMP TABLE w_IDE_PEC AS + SELECT NO_4D AS PECH_ID_SEJO, + COALESCE(t_tiers_payant_0.oid)::bigint AS tiers_payant_0_id, + COALESCE(t_tiers_payant_1.oid)::bigint AS tiers_payant_1_id, + COALESCE(t_tiers_payant_2.oid)::bigint AS tiers_payant_2_id, + COALESCE(t_tiers_payant_2.oid)::bigint AS tiers_payant_22_id, + COALESCE(NUM_SS || CLE_SS) AS matricule_1, + AMC_NUM_ADHERENT AS matricule_2 + FROM w_IDE_SEJOUR_complet + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_1 ON (CAISSE_N::bigint = t_tiers_payant_1.code_original) + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON (MUTUELLE::bigint = t_tiers_payant_2.code_original) + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_0 ON (t_tiers_payant_0.type_tiers_payant = '0' AND t_tiers_payant_0.oid <> 0) + GROUP BY 1,2,3,4,5,6,7; + + ALTER TABLE w_IDE_PEC ADD CONSTRAINT w_IDE_PEC_pkey PRIMARY KEY(PECH_ID_SEJO); + + -- Médecins séjour + DROP TABLE IF EXISTS w_med_ssr + ; + + CREATE TEMP TABLE w_med_ssr AS + SELECT DISTINCT + NO_SEJOUR, + last_value(NO_PERSONNE) OVER (PARTITION BY NO_SEJOUR ORDER BY referents.NO_FICHE rows between unbounded preceding and unbounded following) as medecin_ssr + FROM prod_dai.REFERENTS + JOIN prod_dai.PERSONNEL ON NO_PERSONNE = PERSONNEL.NO_FICHE + WHERE PROFESSION LIKE '%decin' + ; + + ANALYSE w_med_ssr + ; + + UPDATE w_IDE_SEJOUR_complet + SET w_MEDECIN = w_med_ssr.medecin_ssr + FROM w_med_ssr + WHERE w_med_ssr.NO_SEJOUR = NO_4D + ; + + + DROP TABLE IF EXISTS w_IDE_MOUVEMENT_S; + CREATE TEMP TABLE w_IDE_MOUVEMENT_S AS + SELECT NO_4D AS MOUV_ID_SEJO, 'S'::text AS MOUV_STATUT + FROM prod_dai.PATIENTS + WHERE date(DATE_SORTIE) != '0001-01-01' + GROUP BY 1; + + CREATE INDEX w_IDE_MOUVEMENT_S_i1 + ON w_IDE_MOUVEMENT_S + USING btree + (MOUV_ID_SEJO); + + + DROP TABLE IF EXISTS w_sejours; + CREATE TEMP TABLE w_sejours AS + SELECT + w_NO_ENTRANT as no_sejour, + w_NO_4D::bigint as code_original, + NO_4D_patient as no_patient, + date(DATE_ENTREE) as date_entree, + HEURE_ENTREE_CTI as heure_entree, + CASE WHEN DATE_SORTIE IS NOT NULL AND DATE_SORTIE != '0001-01-01' THEN date(DATE_SORTIE) ELSE '20991231' END::date as date_sortie, + CASE WHEN DATE_SORTIE IS NOT NULL THEN HEURE_SORTIE_cti ELSE 0 END as heure_sortie, + CASE WHEN SEXE = 'F' THEN '2' ELSE '1' END as code_sexe, + 0 AS age, + CASE WHEN DATE_SORTIE <= date(now()) AND DATE_SORTIE != '0001-01-01' THEN 1 ELSE 0 END as code_sorti, + 0 as code_prevu, --patient est la table des séjours effectifs + CASE + WHEN t_services_facturation.type_sejour IN ('1', '2', '3', '4', '5') THEN t_services_facturation.type_sejour + WHEN t_modes_traitement.code IN ('07') OR t_dmt.code In ('958') THEN '3' + WHEN t_modes_traitement.code IN ('19', '23') AND date(DATE_SORTIE) = date(DATE_ENTREE) THEN '2' + WHEN t_modes_traitement.code IN ('04') AND date(DATE_SORTIE) = date(DATE_ENTREE) THEN '2' + WHEN t_modes_traitement.code IN ('03') AND date(DATE_SORTIE) = date(DATE_ENTREE) THEN '2' + WHEN t_modes_traitement.code IN ('10') AND date(DATE_SORTIE) <= date(DATE_ENTREE) + interval '1 day' THEN '3' + ELSE '1' END as type_sejour, + COALESCE(t_medecins_administratifs.oid,0) as medecin_sejour_id, + 0 as ghs_id, + '20991231'::date as date_groupage, + CASE WHEN DEBUT_CHPART != '0001-01-01' THEN 1 ELSE 0 END as code_cp_demandee, + t_services_facturation.mode_traitement_id as mode_traitement_id, + MODE_ENTREE_PMSI::character(1) as mode_entree, + COALESCE(PROVENANCE_PMSI::character(1),'') as provenance, + COALESCE(MODE_SORTIE::character(1),'') as mode_sortie, + '0'::character(1) as destination, + COALESCE(tiers_payant_0_id,0) AS tiers_payant_0_id, + COALESCE(tiers_payant_1_id,0) AS tiers_payant_1_id, + COALESCE(tiers_payant_2_id,0) AS tiers_payant_2_id, + CASE WHEN COALESCE(tiers_payant_22_id,0) <> COALESCE(tiers_payant_2_id,0) THEN COALESCE(tiers_payant_22_id,0) ELSE 0 END AS tiers_payant_22_id, + 0 AS est_budget_global, + COALESCE(t_codes_postaux.oid, 0) AS code_postal_id + FROM w_IDE_SEJOUR_complet + LEFT JOIN w_IDE_PEC ON (PECH_ID_SEJO = NO_4D) + JOIN activite[PX].t_services_facturation ON TYPE_REEDUCATIO = t_services_facturation.code_original + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + LEFT JOIN activite[PX].t_medecins_administratifs ON w_MEDECIN::bigint = t_medecins_administratifs.code_original + LEFT JOIN w_IDE_MOUVEMENT_S ON w_NO_4D = MOUV_ID_SEJO + LEFT JOIN base.t_codes_postaux ON CODE_POSTAL = t_codes_postaux.code + ; + + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_13'); + + UPDATE activite[PX].p_sejours SET + code_original = w_sejours.code_original, + no_patient = w_sejours.no_patient, + date_entree = w_sejours.date_entree, + heure_entree = w_sejours.heure_entree, + date_sortie = w_sejours.date_sortie, + heure_sortie = w_sejours.heure_sortie, + code_sexe = w_sejours.code_sexe, + age = w_sejours.age, + code_sorti = w_sejours.code_sorti, + code_prevu = w_sejours.code_prevu, + type_sejour = w_sejours.type_sejour, + medecin_sejour_id = w_sejours.medecin_sejour_id, + code_cp_demandee = w_sejours.code_cp_demandee, + mode_traitement_id = w_sejours.mode_traitement_id, + mode_entree = w_sejours.mode_entree, + provenance = w_sejours.provenance, + mode_sortie = w_sejours.mode_sortie, + destination = w_sejours.destination, + tiers_payant_0_id = w_sejours.tiers_payant_0_id, + tiers_payant_1_id = w_sejours.tiers_payant_1_id, + tiers_payant_2_id = w_sejours.tiers_payant_2_id, + tiers_payant_22_id = w_sejours.tiers_payant_22_id, + est_budget_global = w_sejours.est_budget_global, + code_postal_id = w_sejours.code_postal_id + FROM w_sejours + WHERE w_sejours.no_sejour = p_sejours.no_sejour + AND ( + w_sejours.code_original IS DISTINCT FROM p_sejours.code_original OR + w_sejours.no_patient IS DISTINCT FROM p_sejours.no_patient OR + w_sejours.date_entree IS DISTINCT FROM p_sejours.date_entree OR + w_sejours.heure_entree IS DISTINCT FROM p_sejours.heure_entree OR + w_sejours.date_sortie IS DISTINCT FROM p_sejours.date_sortie OR + w_sejours.heure_sortie IS DISTINCT FROM p_sejours.heure_sortie OR + w_sejours.code_sexe IS DISTINCT FROM p_sejours.code_sexe OR + w_sejours.age IS DISTINCT FROM p_sejours.age OR + w_sejours.code_sorti IS DISTINCT FROM p_sejours.code_sorti OR + w_sejours.code_prevu IS DISTINCT FROM p_sejours.code_prevu OR + w_sejours.type_sejour IS DISTINCT FROM p_sejours.type_sejour OR + w_sejours.medecin_sejour_id IS DISTINCT FROM p_sejours.medecin_sejour_id OR + w_sejours.code_cp_demandee IS DISTINCT FROM p_sejours.code_cp_demandee OR + w_sejours.mode_traitement_id IS DISTINCT FROM p_sejours.mode_traitement_id OR + w_sejours.mode_entree IS DISTINCT FROM p_sejours.mode_entree OR + w_sejours.provenance IS DISTINCT FROM p_sejours.provenance OR + w_sejours.mode_sortie IS DISTINCT FROM p_sejours.mode_sortie OR + w_sejours.destination IS DISTINCT FROM p_sejours.destination OR + w_sejours.tiers_payant_0_id IS DISTINCT FROM p_sejours.tiers_payant_0_id OR + w_sejours.tiers_payant_1_id IS DISTINCT FROM p_sejours.tiers_payant_1_id OR + w_sejours.tiers_payant_2_id IS DISTINCT FROM p_sejours.tiers_payant_2_id OR + w_sejours.tiers_payant_22_id IS DISTINCT FROM p_sejours.tiers_payant_22_id OR + w_sejours.est_budget_global IS DISTINCT FROM p_sejours.est_budget_global OR + w_sejours.code_postal_id IS DISTINCT FROM p_sejours.code_postal_id + ); + + INSERT INTO activite[PX].p_sejours ( + no_sejour, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + medecin_sejour_id, + ghs_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + est_budget_global, + code_postal_id + ) + SELECT + w_sejours.no_sejour, + w_sejours.code_original, + w_sejours.no_patient, + w_sejours.date_entree, + w_sejours.heure_entree, + w_sejours.date_sortie, + w_sejours.heure_sortie, + w_sejours.code_sexe, + w_sejours.age, + w_sejours.code_sorti, + w_sejours.code_prevu, + w_sejours.type_sejour, + w_sejours.medecin_sejour_id, + w_sejours.ghs_id, + w_sejours.date_groupage, + w_sejours.code_cp_demandee, + w_sejours.mode_traitement_id, + w_sejours.mode_entree, + w_sejours.provenance, + w_sejours.mode_sortie, + w_sejours.destination, + w_sejours.tiers_payant_0_id, + w_sejours.tiers_payant_1_id, + w_sejours.tiers_payant_2_id, + w_sejours.tiers_payant_22_id, + w_sejours.est_budget_global, + w_sejours.code_postal_id + + FROM w_sejours LEFT JOIN activite[PX].p_sejours ON (w_sejours.no_sejour = p_sejours.no_sejour) + WHERE p_sejours.no_sejour IS NULL; + + + DELETE FROM activite[PX].p_sejours + USING activite[PX].p_sejours AS p_sejours_i LEFT JOIN w_sejours ON (w_sejours.no_sejour = p_sejours_i.no_sejour) + WHERE + p_sejours.no_sejour = p_sejours_i.no_sejour AND + w_sejours.no_sejour IS NULL; + + -- Modes entrée sortie selon PMSI SSR + UPDATE activite[PX].p_sejours + SET mode_entree = PMSI_RHS.MODE_ENTREE, + provenance = COALESCE(PMSI_RHS.PROVENANCE,'') + FROM w_IDE_SEJOUR_complet, prod_dai.PMSI_RHS + WHERE + no_sejour = w_NO_ENTRANT AND + NO_4D = SEJOUR AND + date(DATE_DEBUT_RHS) = date(w_IDE_SEJOUR_complet.DATE_ENTREE) AND + ( + p_sejours.mode_entree <> PMSI_RHS.MODE_ENTREE OR + p_sejours.provenance <> PMSI_RHS.PROVENANCE + ) + ; + + + UPDATE activite[PX].p_sejours + SET mode_sortie = PMSI_RHS.MODE_SORTIE, + destination = PMSI_RHS.DESTINATION + FROM w_IDE_SEJOUR_complet, prod_dai.PMSI_RHS + WHERE + no_sejour = w_NO_ENTRANT AND + NO_4D = SEJOUR AND + date(PMSI_RHS.DATE_SORTIE) = date(w_IDE_SEJOUR_complet.DATE_SORTIE) AND + ( + p_sejours.mode_sortie <> PMSI_RHS.MODE_SORTIE OR + p_sejours.destination <> PMSI_RHS.DESTINATION + ); + + + -- Etablissements de provenance et destination + -- insertion nouveaux etablissements + DROP TABLE IF EXISTS w_ETAB; + CREATE TEMP TABLE w_ETAB AS + SELECT * + FROM prod_dai.ETABLISSEMENTS + LEFT JOIN base.t_etablissements ON FINESS = code + WHERE + FINESS != '' + AND + (NO_FICHE = ANY(array(SELECT ETABLISS_NO FROM prod_dai.PATIENTS)::bigint[]) + OR NO_FICHE = ANY(array(SELECT ETABLISSEMENT_DESTINATAIRE FROM prod_dai.PATIENTS)::bigint[])) + ; + + INSERT INTO base.t_etablissements + ( + code, + texte, + texte_court + ) + SELECT + FINESS, + NOM, + NOM + FROM w_ETAB + WHERE code IS NULL + AND FINESS IS NOT NULL; + + -- rechargements des etablissements + DROP TABLE IF EXISTS w_ETAB; + CREATE TEMP TABLE w_ETAB AS + SELECT * + FROM prod_dai.ETABLISSEMENTS + LEFT JOIN base.t_etablissements ON FINESS = code; + + -- insertion des données de correspondances (pas d'update car les tables sont vidées avant import) + DROP TABLE IF EXISTS w_TRANS; + CREATE TEMP TABLE w_TRANS AS + SELECT + to_char(NO_4D, 'fm00000000000000000000') as num_admin_sejour, + NO_SSR AS num_sejour_ssr, + etex_pro.oid as oid_pro, + etex_des.oid as oid_des + FROM prod_dai.PATIENTS + LEFT JOIN w_ETAB as etex_pro ON PATIENTS.ETABLISS_NO = etex_pro.NO_FICHE + LEFT JOIN w_ETAB as etex_des ON PATIENTS.ETABLISSEMENT_DESTINATAIRE = etex_des.NO_FICHE + WHERE 1=1 + AND ETABLISS_NO <> 0 OR ETABLISSEMENT_DESTINATAIRE <> 0 + GROUP BY num_admin_sejour, num_sejour_ssr, oid_pro, oid_des + ; + + + INSERT INTO activite[PX].p_sejours_transferts( + sejour_id, + provenance_id, + destination_id + ) + SELECT + p_sejours.oid, + oid_pro, + oid_des + FROM activite[PX].p_sejours + JOIN w_TRANS ON w_TRANS.num_admin_sejour = p_sejours.no_sejour; + + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '[PX]' = ''; + + UPDATE activite[PX].p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND + '[PX]' = ''; + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '[PX]' = ''; + + + -- recréation index + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_13'); + + + -- assurance + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_4'); + + INSERT INTO activite[PX].p_sejours_assurance( + sejour_id, + tiers_payant_0_id, + tiers_payant_1_id, + matricule_1, + tiers_payant_2_id, + matricule_2, + tiers_payant_22_id, + matricule_22) + SELECT + oid AS sejour_id, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + substr(w_IDE_PEC.matricule_1,1,30), + p_sejours.tiers_payant_2_id, + substr(w_IDE_PEC.matricule_2,1,30), + p_sejours.tiers_payant_22_id, + ''::text AS matricule_22 + FROM w_IDE_PEC + JOIN activite[PX].p_sejours ON code_original = PECH_ID_SEJO AND p_sejours.etat = ''; + + + + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_4'); + + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_IDE_PEC; + DROP TABLE IF EXISTS w_sejours; + DROP TABLE IF EXISTS w_IDE_MOUVEMENT_S; + + + ]]> + + + + + + + + + 1) subview + WHERE subview.fromCTID = w_IDE_MOUVEMENT.CTID; + + DELETE FROM w_IDE_MOUVEMENT + USING ( + SELECT + SEJO_NUM_SEJ, MOUV_DAT_MOU, MOUV_DAT_MOU_TIM, MAX(CTID) AS fromCTID + FROM w_IDE_MOUVEMENT + GROUP BY 1,2,3 + HAVING count(*) > 1) subview + WHERE subview.fromCTID = w_IDE_MOUVEMENT.CTID; + + -- Si le premier mouvement est postérieur à la date d'entrée, le ramener à cette date + UPDATE w_IDE_MOUVEMENT SET + MOUV_DAT_MOU = DATE_ENTREE, + MOUV_DAT_MOU_DAT = date(DATE_ENTREE), + CAGE_CODE = 'E' + FROM + ( + SELECT * + FROM + ( + SELECT sejo_num_sej, + date_entree, + mouv_dat_mou, + mouv_dat_fin, + w_IDE_MOUVEMENT.CTID AS w_ctid, + row_number() over (partition by sejo_num_sej order by mouv_dat_mou) AS seq + FROM w_IDE_MOUVEMENT + JOIN activite[PX].p_sejours on sejo_num_sej = no_sejour + ORDER BY SEJO_NUM_SEJ + ) subview + WHERE seq = 1 AND + date(date_entree) < date(mouv_dat_mou) + ) subview + WHERE w_IDE_MOUVEMENT.SEJO_NUM_SEJ = subview.SEJO_NUM_SEJ AND + w_IDE_MOUVEMENT.CTID = w_CTID + ; + + + UPDATE w_IDE_MOUVEMENT + SET CAGE_CODE = CAGE_CODE || 'S', + MOUV_DAT_FIN = sub.DATE_SORTIE, + MOUV_DAT_FIN_DAT = date(DATE_SORTIE), + MOUV_DAT_FIN_TIM = extract('hour' FROM MOUV_DAT_MOU) * 10000 + extract('minute' FROM MOUV_DAT_MOU) * 100 + extract('second' FROM MOUV_DAT_MOU) + FROM (SELECT MAX(sequence) as max_sequence , max(DATE_SORTIE) as DATE_SORTIE + FROM w_IDE_MOUVEMENT JOIN w_IDE_SEJOUR_complet ON SEJO_NUM_SEJ = w_NO_ENTRANT + WHERE DATE_SORTIE != '0001-01-01' + GROUP BY w_NO_ENTRANT, DATE_SORTIE) as sub + WHERE max_sequence = sequence; + + UPDATE w_IDE_MOUVEMENT + SET MOUV_DAT_FIN = w_IDE_MOUVEMENT_next.MOUV_DAT_MOU - interval '1 second', + MOUV_DAT_FIN_DAT = date(w_IDE_MOUVEMENT_next.MOUV_DAT_MOU - interval '1 second'), + MOUV_DAT_FIN_TIM = extract('hour' FROM w_IDE_MOUVEMENT_next.MOUV_DAT_MOU - interval '1 second') * 10000 + + extract('minute' FROM w_IDE_MOUVEMENT_next.MOUV_DAT_MOU - interval '1 second') * 100 + + extract('second' FROM w_IDE_MOUVEMENT_next.MOUV_DAT_MOU - interval '1 second'), + CAGE_CODE_next = w_IDE_MOUVEMENT_next.CAGE_CODE, + MOUV_ID_UNFO_next = w_IDE_MOUVEMENT_next.MOUV_ID_UNFO, + MOUV_ID_UNFO_MED_next = w_IDE_MOUVEMENT_next.MOUV_ID_UNFO_MED, + MOUV_ID_LIPO_next = w_IDE_MOUVEMENT_next.MOUV_ID_LIPO + FROM w_IDE_MOUVEMENT w_IDE_MOUVEMENT_next + WHERE w_IDE_MOUVEMENT.SEJO_NUM_SEJ = w_IDE_MOUVEMENT_next.SEJO_NUM_SEJ + AND w_IDE_MOUVEMENT.sequence = w_IDE_MOUVEMENT_next.sequence - 1; + + + -- Si hopital de jour sans journée, + UPDATE w_IDE_MOUVEMENT + SET CAGE_CODE_next = 'C' + FROM activite[PX].p_sejours, + activite[PX].t_services_facturation + JOIN base.t_modes_traitement on t_services_facturation.mode_traitement_id = t_modes_traitement.oid + WHERE MOUV_ID_SEJO::bigint = p_sejours.code_original AND + code_prevu <> '1' AND + CAGE_CODE = 'E' AND + MOUV_ID_UNFO_MED = t_services_facturation.code_original AND + (CAGE_CODE_NEXT = '' OR CAGE_CODE_NEXT = 'S' AND date_entree <> date_sortie) AND + t_modes_traitement.code = '04' AND + t_services_facturation.type_t2a = '2'; + + + + + -- calcul mvt avant + + UPDATE w_IDE_MOUVEMENT + SET + CAGE_CODE_before = w_IDE_MOUVEMENT_before.CAGE_CODE, + MOUV_ID_UNFO_before = w_IDE_MOUVEMENT_before.MOUV_ID_UNFO, + MOUV_ID_UNFO_MED_before = w_IDE_MOUVEMENT_before.MOUV_ID_UNFO_MED, + MOUV_ID_LIPO_before = w_IDE_MOUVEMENT_before.MOUV_ID_LIPO + FROM w_IDE_MOUVEMENT w_IDE_MOUVEMENT_before + WHERE w_IDE_MOUVEMENT.SEJO_NUM_SEJ = w_IDE_MOUVEMENT_before.SEJO_NUM_SEJ + AND w_IDE_MOUVEMENT.sequence = w_IDE_MOUVEMENT_before.sequence + 1 + AND w_IDE_MOUVEMENT.CAGE_CODE <> 'S'; + + -- Absences + UPDATE w_IDE_MOUVEMENT + SET MOUV_ID_UNFO_MED = '*ABS' + WHERE CAGE_CODE = 'A'; + + -- Hopital de jour Dernière séance avant dans sortie + UPDATE w_IDE_MOUVEMENT SET + MOUV_DAT_MOU = MOUV_DAT_FIN, + MOUV_DAT_MOU_DAT = MOUV_DAT_FIN_DAT, + MOUV_DAT_MOU_TIM = MOUV_DAT_FIN_TIM + WHERE CAGE_CODE = 'P' AND CAGE_CODE_next = 'S' AND + MOUV_DAT_FIN <> MOUV_DAT_MOU; + + -- Hopital de jour Première séance après date entree + UPDATE w_IDE_MOUVEMENT SET + MOUV_DAT_FIN = MOUV_DAT_MOU, + MOUV_DAT_FIN_DAT = MOUV_DAT_MOU_DAT, + MOUV_DAT_FIN_TIM = MOUV_DAT_MOU_TIM + WHERE CAGE_CODE = 'E' AND CAGE_CODE_next = 'C' AND + MOUV_DAT_MOU <> MOUV_DAT_FIN; + + -- creation mouvements par jour + + DROP TABLE IF EXISTS w_mouvements_sejour; + CREATE TEMP TABLE w_mouvements_sejour AS + SELECT + w_IDE_MOUVEMENT.MOUV_ID_SEJO, + w_IDE_MOUVEMENT.SEJO_NUM_SEJ AS no_sejour, + p_sejours.oid AS sejour_id, + sequence, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE WHEN p_calendrier.date = MOUV_DAT_MOU_DAT THEN MOUV_DAT_MOU_TIM ELSE 0 END AS heure_debut, + CASE WHEN p_calendrier.date = MOUV_DAT_FIN_DAT THEN MOUV_DAT_FIN_TIM ELSE 240000 END AS heure_fin, + CASE WHEN p_calendrier.date = MOUV_DAT_MOU_DAT AND (CAGE_CODE = 'E' OR CAGE_CODE = 'ES') AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes, + CASE WHEN p_calendrier.date = MOUV_DAT_FIN_DAT AND (CAGE_CODE = 'S' OR CAGE_CODE = 'ES') AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes, + CASE WHEN p_calendrier.date = MOUV_DAT_MOU_DAT AND (CAGE_CODE = 'E' OR CAGE_CODE = 'ES') AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree, + CASE WHEN p_calendrier.date = MOUV_DAT_FIN_DAT AND (CAGE_CODE = 'S' OR CAGE_CODE = 'ES') AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie, + CASE WHEN p_sejours.type_sejour = '1' AND CAGE_CODE_next <> 'C' AND CAGE_CODE <> 'P' THEN '1' ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN p_calendrier.date = MOUV_DAT_MOU_DAT AND (CAGE_CODE = 'E' OR CAGE_CODE = 'ES') AND p_sejours.type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires, + CASE WHEN p_calendrier.date = MOUV_DAT_MOU_DAT AND p_sejours.type_sejour = '3' THEN 1 ELSE 0 END AS nb_externes, + CASE WHEN p_calendrier.date = MOUV_DAT_MOU_DAT AND (CAGE_CODE = 'E' OR CAGE_CODE = 'ES') AND p_sejours.type_sejour <> '9' AND t_dmt.code IN ('303', '307', '308', '401', '402', '403', '404', '405', '406', '407', '408', '409') THEN 1 ELSE 0 END AS nb_urgences, + 0 as nb_seances, + + CASE WHEN p_calendrier.date = MOUV_DAT_MOU_DAT AND CAGE_CODE IN ('D', 'M') AND p_sejours.type_sejour = '1' AND mouv_id_unfo_med <> mouv_id_unfo_med_before THEN 1 ELSE 0 END AS nb_entrees_mutation_service, + CASE WHEN p_calendrier.date = MOUV_DAT_FIN_DAT AND CAGE_CODE_next IN ('D', 'M') AND p_sejours.type_sejour = '1' AND mouv_id_unfo_med <> mouv_id_unfo_med_next THEN 1 ELSE 0 END AS nb_sorties_mutation_service, + CASE WHEN p_calendrier.date = MOUV_DAT_MOU_DAT AND CAGE_CODE IN ('D', 'M') AND p_sejours.type_sejour = '1' AND mouv_id_unfo <> mouv_id_unfo_before THEN 1 ELSE 0 END AS nb_entrees_mutation_etage, + CASE WHEN p_calendrier.date = MOUV_DAT_FIN_DAT AND CAGE_CODE_next IN ('D', 'M') AND p_sejours.type_sejour = '1' AND mouv_id_unfo <> mouv_id_unfo_next THEN 1 ELSE 0 END AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + 0 AS nb_entrees_mutation_unite_medicale, + 0 AS nb_sorties_mutation_unite_medicale, + + CASE WHEN p_sejours.type_sejour = '1' AND CAGE_CODE_next <> 'C' AND CAGE_CODE <> 'P' AND (p_calendrier.date <> MOUV_DAT_FIN_DAT OR CAGE_CODE_next = 'S') THEN 1 ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN p_sejours.type_sejour = '1' AND CAGE_CODE_next <> 'C' AND CAGE_CODE <> 'P' AND p_calendrier.date <> MOUV_DAT_FIN_DAT THEN 1 ELSE 0 END AS nb_jours_js_non_inclus, + + CASE WHEN p_sejours.type_sejour = '1' AND CAGE_CODE_next <> 'C' AND CAGE_CODE <> 'P' AND t_lits.chambre_particuliere = 'O' THEN '1' ELSE '0' END AS est_chambre_particuliere, + CASE WHEN p_sejours.type_sejour = '1' AND CAGE_CODE_next <> 'C' AND CAGE_CODE <> 'P' AND t_lits.chambre_particuliere = 'O' AND (p_calendrier.date <> MOUV_DAT_FIN_DAT OR CAGE_CODE_next = 'S') THEN 1 ELSE 0 END AS nb_chambres_particulieres, + + 0 AS nb_bebes, + + TRUM_ID_UNME_principale, + MOUV_ID_UNFO_MED, + MOUV_ID_UNFO, + MOUV_ID_LIPO, + + COALESCE(t_lieux.oid,0) AS lieu_id, + + p_sejours.medecin_sejour_id as medecin_sejour_id, + + CASE WHEN p_sejours.code_prevu = '1' OR p_calendrier.date > date(date_extraction) THEN '1' ELSE '0' END AS est_mouvement_previsionnel, + + ''::text AS est_premier_mouvement_jour, + ''::text AS est_dernier_mouvement_jour + FROM w_IDE_MOUVEMENT + LEFT JOIN activite[PX].t_lieux ON + (t_lieux.code_original_1 = MOUV_ID_UNFO_MED::text AND + t_lieux.code_original_2 = TRUM_ID_UNME_principale AND + t_lieux.code_original_4 = MOUV_ID_LIPO AND + t_lieux.code_original_6 = MOUV_ID_UNFO::text ) + JOIN w_IDE_SEJOUR_complet ON NO_4D = MOUV_ID_SEJO + JOIN activite[PX].p_sejours ON w_IDE_MOUVEMENT.SEJO_NUM_SEJ = p_sejours.no_sejour AND p_sejours.etat = '' + LEFT JOIN activite[PX].t_lits ON MOUV_ID_LIPO = t_lits.code_original + LEFT JOIN activite[PX].t_unites_fonctionnelles ON MOUV_ID_UNFO::text = t_unites_fonctionnelles.code_original + LEFT JOIN activite[PX].t_services_facturation ON MOUV_ID_UNFO_MED::text = t_services_facturation.code_original + JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + JOIN base.p_calendrier ON p_calendrier.date BETWEEN MOUV_DAT_MOU_DAT AND MOUV_DAT_FIN_DAT AND p_calendrier.date <= date(date_extraction) + interval '1 month' + WHERE --CAGE_CODE <> 'S' AND + --(CAGE_CODE <> 'P' OR CAGE_CODE_next = 'S') AND + (p_sejours.type_sejour NOT IN ('2', '3') OR (p_sejours.type_sejour IN ('2', '3') AND CAGE_CODE = 'E' AND p_calendrier.date = MOUV_DAT_MOU_DAT) OR p_sejours.type_sejour IN ('3')) AND + (p_sejours.code_prevu <> '1' AND p_calendrier.date <= date(date_extraction) OR p_calendrier.date >= date(date_extraction)) + ORDER BY sequence, p_calendrier.date; + + --DELETE FROM w_mouvements_sejour WHERE heure_fin < heure_debut; + + -- Actualisation lieux + UPDATE activite[PX].t_lieux SET + service_facturation_id = t_services_facturation.oid, + mode_traitement_id = t_services_facturation.mode_traitement_id + FROM activite[PX].t_services_facturation + WHERE + code_original_1 = t_services_facturation.code_original; + + UPDATE activite[PX].t_lieux SET + activite_id = t_activites.oid + FROM activite[PX].t_activites + WHERE + code_original_2 = t_activites.code_original; + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = t_unites_fonctionnelles.oid + FROM activite[PX].t_unites_fonctionnelles + WHERE + code_original_6 = t_unites_fonctionnelles.code_original; + + UPDATE activite[PX].t_lieux SET + lit_id = t_lits.oid + FROM activite[PX].t_lits + WHERE + code_original_4 = t_lits.code_original; + + + + -- creation nouveaux lieux + + INSERT INTO activite[PX].t_lieux( + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + code_original_6, + code_original_7, + service_facturation_id, + activite_id, + lit_id, + unite_medicale_id, + unite_fonctionnelle_id, + mode_traitement_id) + SELECT DISTINCT + MOUV_ID_UNFO_MED, + TRUM_ID_UNME_principale, + '', + MOUV_ID_LIPO, + '', + MOUV_ID_UNFO, + '', + COALESCE(t_services_facturation.oid,0), + COALESCE(t_activites.oid,0), + COALESCE(t_lits.oid,0), + 0, + COALESCE(t_unites_fonctionnelles.oid,0), + COALESCE(t_services_facturation.mode_traitement_id,0) + FROM w_mouvements_sejour + LEFT JOIN activite[PX].t_lieux ON + (t_lieux.code_original_1 = MOUV_ID_UNFO_MED::text AND + t_lieux.code_original_2 = TRUM_ID_UNME_principale::text AND + t_lieux.code_original_4 = MOUV_ID_LIPO AND + t_lieux.code_original_6 = MOUV_ID_UNFO::text ) + LEFT JOIN activite[PX].t_services_facturation ON MOUV_ID_UNFO_MED::text = t_services_facturation.code_original + LEFT JOIN activite[PX].t_activites ON TRUM_ID_UNME_principale::text = t_activites.code_original + LEFT JOIN activite[PX].t_lits ON MOUV_ID_LIPO = t_lits.code_original + LEFT JOIN activite[PX].t_unites_fonctionnelles ON MOUV_ID_UNFO::text = t_unites_fonctionnelles.code_original + WHERE t_lieux.oid IS NULL; + + + + + -- Mise à jour lieux dans futurs mouvements + UPDATE w_mouvements_sejour SET lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE t_lieux.code_original_1 = MOUV_ID_UNFO_MED::text + AND t_lieux.code_original_2 = TRUM_ID_UNME_principale::text + AND t_lieux.code_original_4 = MOUV_ID_LIPO + AND t_lieux.code_original_6 = MOUV_ID_UNFO::text + AND w_mouvements_sejour.lieu_id = 0; + + + -- Doublons potentiels + DELETE FROM w_mouvements_sejour + USING ( + SELECT + no_sejour, date, heure_debut, MAX(CTID) AS fromCTID + FROM w_mouvements_sejour + GROUP BY 1,2,3 + HAVING count(*) > 1) subview + WHERE subview.fromCTID = w_mouvements_sejour.CTID; + + + + -- Doublons potentiels + DELETE FROM w_mouvements_sejour + USING ( + SELECT + no_sejour, date, heure_debut, MAX(CTID) AS fromCTID + FROM w_mouvements_sejour + GROUP BY 1,2,3 + HAVING count(*) > 1) subview + WHERE subview.fromCTID = w_mouvements_sejour.CTID; + + + -- Doublons potentiels + DELETE FROM w_mouvements_sejour + USING ( + SELECT + no_sejour, date, heure_debut, MAX(CTID) AS fromCTID + FROM w_mouvements_sejour + GROUP BY 1,2,3 + HAVING count(*) > 1) subview + WHERE subview.fromCTID = w_mouvements_sejour.CTID; + + + + -- Mise en production des mouvements + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_5'); + + INSERT INTO activite[PX].p_mouvements_sejour( + sejour_id, no_sejour, date, est_mouvement_previsionnel, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + jour_semaine, is_weekend) + SELECT sejour_id, no_sejour, date, est_mouvement_previsionnel ,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + jour_semaine, is_weekend + FROM w_mouvements_sejour + ORDER BY no_sejour, sequence; + + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_5'); + + -- Lieux de sortie + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie AND p_mouvements_sejour.nb_sorties_directes = 1 + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL) ; + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = 0 + WHERE lieu_sortie_id IS NULL ; + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = 0 + WHERE p_sejours.code_prevu = '1' AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL); + + + UPDATE activite[PX].p_sejours + SET code_sorti = '1' + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + code_sorti = '0' AND + (nb_ambulatoires > 0 OR nb_externes > 0) AND + date_sortie <= now(); + + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + WHERE type_sejour <> '5' AND + type_sejour <> '1' AND + no_sejour IN ( + SELECT no_sejour + FROM activite[PX].p_mouvements_sejour + WHERE nb_seances > 0); + + + UPDATE activite[PX].p_mouvements_sejour + SET nb_externes = 0, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + ( + nb_externes <> 0 OR + nb_ambulatoires <> 0 + ); + + + -- Problème sur quelques séjours (manque nb entrees) + UPDATE activite[PX].p_mouvements_sejour + SET nb_entrees_directes = 1 + WHERE nb_sorties_directes = 1 AND + no_sejour IN ( + SELECT p_mouvements_sejour.no_sejour + FROM activite[PX].p_mouvements_sejour + JOIN activite[PX].p_sejours ON p_mouvements_sejour.no_sejour = p_sejours.no_sejour + WHERE type_sejour = '1' AND date_entree = date_sortie + GROUP BY 1 + HAVING SUM(nb_entrees_directes) = 0 AND SUM(nb_sorties_directes) > 0 + ) + ; + + + + -- Suppression des tables de travail non utilisées après + -- DROP TABLE IF EXISTS w_IDE_MOUVEMENT; + -- DROP TABLE IF EXISTS w_mouvements_sejour; + -- DROP TABLE IF EXISTS w_seances; + -- DROP TABLE IF EXISTS w_SAD_ACTIVITE_SAISIES_seances; + -- DROP TABLE IF EXISTS w_FAC_LIGNE_FACTURE_seances; + + + ]]> + + + + + + + + + 90 % + UPDATE w_FACTURES_615 FACTURES_615 + SET COMPTABILISEE= 'false' + FROM + ( + SELECT TYPE_DESTINATAI, + CASE WHEN TYPE_DESTINATAI = 1 THEN CAISSE_N WHEN TYPE_DESTINATAI = 2 THEN MUTUELLE ELSE 0 END, CAISSES.NOM, + count(DISTINCT CASE WHEN date(factures_615.CREATION) <= date(now() - interval '1 year') AND comptabilisee = 'true' THEN factures_615.no_fiche ELSE NULL END), + count(DISTINCT CASE WHEN date(factures_615.CREATION) <= date(now() - interval '1 year') AND comptabilisee = 'false' THEN factures_615.no_fiche ELSE NULL END), + count(DISTINCT CASE WHEN date(factures_615.CREATION) <= date(now() - interval '1 year') AND reglements.facture IS NOT NULL THEN factures_615.no_fiche ELSE NULL END), + count(DISTINCT CASE WHEN date(factures_615.CREATION) <= date(now() - interval '1 year') AND reglements.facture IS NULL THEN factures_615.no_fiche ELSE NULL END), + base.cti_array_accum(DISTINCT CASE WHEN date(factures_615.CREATION) > date(now() - interval '1 year') AND COMPTABILISEE = 'true' THEN FACTURES_615.NO_FICHE ELSE NULL END) AS NO_FICHE_array + FROM w_FACTURES_615 FACTURES_615 + JOIN prod_dai.PATIENTS ON factures_615.no_patient = patients.no_4d + LEFT JOIN prod_dai.CAISSES ON (CASE WHEN TYPE_DESTINATAI = 1 THEN CAISSE_N WHEN TYPE_DESTINATAI = 2 THEN MUTUELLE ELSE 0 END) = CAISSES.NO_FICHE + LEFT join prod_dai.reglements ON reglements.facture = factures_615.no_fiche + WHERE TYPE_DESTINATAI <> 3 + GROUP BY 1,2,3 + HAVING + base.cti_division( + count(DISTINCT CASE WHEN date(factures_615.CREATION) <= date(now() - interval '1 year') AND comptabilisee = 'false' THEN factures_615.no_fiche ELSE NULL END), + count(DISTINCT CASE WHEN date(factures_615.CREATION) <= date(now() - interval '1 year') THEN factures_615.no_fiche ELSE NULL END) + ) > 0.9 AND + count(DISTINCT CASE WHEN date(factures_615.CREATION) <= date(now() - interval '1 year') THEN factures_615.no_fiche ELSE NULL END) > 0 AND + MAX(CASE WHEN date(factures_615.CREATION) > date(now() - interval '1 year') AND COMPTABILISEE = 'true' THEN FACTURES_615.NO_FICHE ELSE NULL END) > 0 + order by 1,2,3 + ) subview + WHERE FACTURES_615.NO_FICHE = ANY(NO_FICHE_array) AND + NO_FICHE NOT IN (SELECT FACTURE FROM prod_dai.reglements) + ; + + DROP TABLE IF EXISTS w_FAC_FACTURE; + CREATE TEMP TABLE w_FAC_FACTURE AS + SELECT FACTURES_615.*, + w_sejours_orga.*, + TYPE_CLINIQUE, + 1 AS CRN_HON_TO_SEJ, --CASE WHEN SEJO_IND_BGH IS NOT DISTINCT FROM '1' OR ETAB_TYP_ETAB = 'PSPH' THEN '1'::text ELSE '0'::text END AS CRN_HON_TO_SEJ, + '0'::text AS FAC_HON, + NO_FICHE::bigint AS FACT_ID_FACT, + date( + COALESCE( + GREATEST( + CASE WHEN REF_FACTURE LIKE to_char(CREATION,'YY.MM') || '.%' THEN CREATION ELSE NULL END, + CASE WHEN REF_FACTURE LIKE to_char(EDITION,'YY.MM') || '.%' THEN EDITION ELSE NULL END, + CASE WHEN REF_FACTURE LIKE to_char(MODIFICATION,'YY.MM') || '.%' THEN MODIFICATION ELSE NULL END, + CASE WHEN REF_FACTURE LIKE to_char(DATE_SOLDE,'YY.MM') || '.%' THEN DATE_SOLDE ELSE NULL END, + CASE WHEN REF_FACTURE LIKE to_char(FIN,'YY.MM') || '.%' THEN FIN ELSE NULL END + ) + , + '20991231'::date + ) + ) AS date_vente, + CASE + WHEN LEFT(REF_FACTURE, 7) = NO_ENTRANT THEN REPLACE(REF_FACTURE,'.','') -- no facture correct + WHEN CHAR_LENGTH(REF_FACTURE) = 9 AND RIGHT(REF_FACTURE, 2) LIKE '0%' THEN NO_ENTRANT || RIGHT(REF_FACTURE,2) -- erreur sur le numero entrant + WHEN REF_FACTURE LIKE to_char(CREATION,'YY.MM') || '.%' THEN REF_FACTURE + WHEN REF_FACTURE LIKE to_char(EDITION,'YY.MM') || '.%' THEN REF_FACTURE + WHEN REF_FACTURE LIKE to_char(MODIFICATION,'YY.MM') || '.%' THEN REF_FACTURE + WHEN REF_FACTURE LIKE to_char(DATE_SOLDE,'YY.MM') || '.%' THEN REF_FACTURE + WHEN REF_FACTURE LIKE to_char(FIN,'YY.MM') || '.%' THEN REF_FACTURE + ELSE w_NO_ENTRANT || TO_CHAR(dense_rank() OVER (PARTITION BY NO_PATIENT, w_NO_ENTRANT ORDER BY DEBUT, FIN, CREATION, EDITION, MODIFICATION),'fm00') END AS FACT_NUM_FAC -- autre : numero automatique + FROM w_FACTURES_615 FACTURES_615 + JOIN w_IDE_SEJOUR_complet ON NO_PATIENT = NO_4D + LEFT JOIN prod_dai.PARAMETRES ON 1=1 + JOIN w_sejours_orga ON (NO_4D::bigint = w_sejours_orga.code_original) + WHERE DEBUT != '0001-01-01' + ; + + -- Numéros de factures en double + SELECT base.cti_execute( + 'UPDATE w_FAC_FACTURE + SET FACT_NUM_FAC = w_FAC_FACTURE.FACT_NUM_FAC || ''.'' || to_char(nb,''FM990'') + FROM + ( + SELECT FACT_NUM_FAC, count(DISTINCT NO_PATIENT) AS nb, MAX(NO_FICHE) AS NO_FICHE + FROM w_FAC_FACTURE + WHERE FACT_NUM_FAC <> '''' + GROUP BY 1 + HAVING count(DISTINCT NO_PATIENT) > 1 + ) + subview + WHERE w_FAC_FACTURE.NO_FICHE = subview.NO_FICHE + ',10) + ; + + -- correction mauvaise date entrée + UPDATE w_FAC_FACTURE + SET EDITION = GREATEST(CREATION,MODIFICATION,FIN) + WHERE EDITION > now(); + + CREATE INDEX w_FAC_FACTURE_i1 + ON w_FAC_FACTURE + USING btree + (NO_FICHE); + +-- + + DROP TABLE IF EXISTS w_FAC_MONTANTS; + CREATE TEMP TABLE w_FAC_MONTANTS AS + SELECT + FACT_ID_FACT AS FACD_ID_FACT, + + SUM(TOTAL_FACTURE) AS montant_facture_c, + SUM(CASE WHEN TYPE_DESTINATAI = 3 THEN TOTAL_FACTURE ELSE 0 END) AS montant_facture_0_c, + SUM(CASE WHEN TYPE_DESTINATAI = 1 THEN TOTAL_FACTURE ELSE 0 END) AS montant_facture_1_c, + SUM(CASE WHEN TYPE_DESTINATAI = 2 THEN TOTAL_FACTURE ELSE 0 END) AS montant_facture_2_c, + 0 AS montant_facture_22_c, + + SUM(CASE WHEN t_divers.valeur <> '1' OR COMPTABILISEE ILIKE 'true' THEN TOTAL_FACTURE ELSE 0 END) AS montant_comptabilise_c, -- colonne comptabilise true/false toujours à false donc on force + SUM(CASE WHEN (t_divers.valeur <> '1' OR COMPTABILISEE ILIKE 'true') AND TYPE_DESTINATAI = 3 THEN TOTAL_FACTURE ELSE 0 END) AS montant_comptabilise_0_c, + SUM(CASE WHEN (t_divers.valeur <> '1' OR COMPTABILISEE ILIKE 'true') AND TYPE_DESTINATAI = 1 THEN TOTAL_FACTURE ELSE 0 END) AS montant_comptabilise_1_c, + SUM(CASE WHEN (t_divers.valeur <> '1' OR COMPTABILISEE ILIKE 'true') AND TYPE_DESTINATAI = 2 THEN TOTAL_FACTURE ELSE 0 END) AS montant_comptabilise_2_c, + 0 AS montant_comptabilise_22_c, + + SUM(CASE WHEN t_divers.valeur <> '1' OR COMPTABILISEE ILIKE 'true' THEN TOTAL_FACTURE - SOLDE_FACTURE ELSE 0 END) AS montant_regle_c, + SUM(CASE WHEN (t_divers.valeur <> '1' OR COMPTABILISEE ILIKE 'true') AND TYPE_DESTINATAI = 3 THEN TOTAL_FACTURE - SOLDE_FACTURE ELSE 0 END) AS montant_regle_0_c, + SUM(CASE WHEN (t_divers.valeur <> '1' OR COMPTABILISEE ILIKE 'true') AND TYPE_DESTINATAI = 1 THEN TOTAL_FACTURE - SOLDE_FACTURE ELSE 0 END) AS montant_regle_1_c, + SUM(CASE WHEN (t_divers.valeur <> '1' OR COMPTABILISEE ILIKE 'true') AND TYPE_DESTINATAI = 2 THEN TOTAL_FACTURE - SOLDE_FACTURE ELSE 0 END) AS montant_regle_2_c, + 0 AS montant_regle_22_c, + + -- tables hono fact et hono_transmis vides + 0 AS montant_facture_h, + 0 AS montant_facture_0_h, + 0 AS montant_facture_1_h, + 0 AS montant_facture_2_h, + 0 AS montant_facture_22_h, + + 0 AS montant_comptabilise_h, + 0 AS montant_comptabilise_0_h, + 0 AS montant_comptabilise_1_h, + 0 AS montant_comptabilise_2_h, + 0 AS montant_comptabilise_22_h, + + 0 AS montant_regle_h, + 0 AS montant_regle_0_h, + 0 AS montant_regle_1_h, + 0 AS montant_regle_2_h, + 0 AS montant_regle_22_h + + FROM w_FAC_FACTURE + JOIN activite.t_divers ON t_divers.code = 'DAI_TRT_COMPTABILISE' + GROUP BY FACD_ID_FACT; + + + CREATE INDEX w_FAC_MONTANTS_i1 + ON w_FAC_MONTANTS + USING btree + (FACD_ID_FACT); + + + -- Informations date dernier reglement + + DROP TABLE IF EXISTS w_FAC_REGLEMENT; + CREATE TEMP TABLE w_FAC_REGLEMENT AS + SELECT + FACT_ID_FACT AS LECR_ID_FACT, + MAX(CASE WHEN TYPE_DESTINATAI = 3 THEN REGLEMENTS.RECEPTION ELSE NULL END) AS date_dernier_reglement_0_c, + MAX(CASE WHEN TYPE_DESTINATAI = 1 THEN REGLEMENTS.RECEPTION ELSE NULL END) AS date_dernier_reglement_1_c, + MAX(CASE WHEN TYPE_DESTINATAI = 2 THEN REGLEMENTS.RECEPTION ELSE NULL END) AS date_dernier_reglement_2_c, + '20991231'::date AS date_dernier_reglement_22_c, + '20991231'::date AS date_dernier_reglement_0_h, + '20991231'::date AS date_dernier_reglement_1_h, + '20991231'::date AS date_dernier_reglement_2_h, + '20991231'::date AS date_dernier_reglement_22_h, + count(DISTINCT date_part('month',REGLEMENTS.RECEPTION)) AS nb_mois_reglement + FROM prod_dai.REGLEMENTS + JOIN w_FAC_FACTURE ON REGLEMENTS.FACTURE = w_FAC_FACTURE.FACT_ID_FACT + GROUP BY 1; + + CREATE INDEX w_FAC_REGLEMENT_i1 + ON w_FAC_REGLEMENT + USING btree + (LECR_ID_FACT); + + + -- Informations date vente + INSERT INTO activite.t_divers( + code, + texte, + valeur, + valeur_date, + description, + show_info_module) + SELECT + 'FORCE_DATE_FAC', + 'Force la date de vente à la date de sortie', + 0, + NULL, + 'Force la date de vente à la date de sortie', + true + WHERE (SELECT count(*) FROM activite.t_divers WHERE code = 'FORCE_DATE_FAC') = 0 + ; + + DROP TABLE IF EXISTS w_FAC_DATEVENTE; + CREATE TEMP TABLE w_FAC_DATEVENTE AS + SELECT + FACT_ID_FACT AS LECR_ID_FACT_VENT, + CASE WHEN valeur = 1 AND MAX(w_FAC_FACTURE.FIN) < now() THEN MAX(w_FAC_FACTURE.FIN) ELSE CASE WHEN MAX(GREATEST(CREATION,EDITION,MODIFICATION,FIN)) < now() THEN MAX(GREATEST(CREATION,EDITION,MODIFICATION,FIN)) ELSE NULL END END AS date_vente + FROM w_FAC_FACTURE + JOIN (SELECT valeur FROM activite.t_divers WHERE code = 'FORCE_DATE_FAC') sub ON 1=1 + GROUP BY 1, valeur; + + CREATE INDEX w_FAC_DATEVENTE_i1 + ON w_FAC_DATEVENTE + USING btree + (LECR_ID_FACT_VENT); + + UPDATE w_FAC_FACTURE + SET date_vente = w_FAC_DATEVENTE.date_vente + FROM w_FAC_DATEVENTE + WHERE LECR_ID_FACT_VENT = FACT_ID_FACT AND + w_FAC_DATEVENTE.date_vente IS NOT NULL + ; + + UPDATE w_FAC_FACTURE + SET COMPTABILISEE = 'false' + WHERE date(date_vente) >= date(now()) + ; + + -- Informations expedition + + DROP TABLE IF EXISTS w_FAC_BORDEREAU; + CREATE TEMP TABLE w_FAC_BORDEREAU AS + SELECT FACT_ID_FACT AS LBOR_ID_FACT, + '0'::text AS code_expedie_0, + MAX(CASE WHEN BORDEREAU > 0 THEN '1' ELSE '0' END) AS code_expedie_1, + '0' AS code_expedie_2, + '0' AS code_expedie_22, + ''::text AS no_bordereau_0, + MAX(CASE WHEN BORDEREAU > 0 THEN LOT ELSE '0' END) AS no_bordereau_1, + '0' AS no_bordereau_2, + '0' AS no_bordereau_22, + '20991231'::date AS date_expedition_0, + MIN(CASE WHEN BORDEREAU > 0 THEN GREATEST(DATE_ENVOI) ELSE '20991231'::date END) AS date_expedition_1, + '20991231'::date AS date_expedition_2, + '20991231'::date AS date_expedition_22 + FROM prod_dai.BORDEREAUX, w_FAC_FACTURE + WHERE BORDEREAU = BORDEREAUX.NO_FICHE + GROUP BY 1; + + CREATE INDEX w_FAC_BORDEREAU_i1 + ON w_FAC_BORDEREAU + USING btree + (LBOR_ID_FACT); + + -- Informations rejets +-- +-- DROP TABLE IF EXISTS w_FAC_REJET; +-- CREATE TEMP TABLE w_FAC_REJET AS +-- SELECT NOER_ID_FACT::bigint, +-- COUNT(*) as nb_rejets +-- FROM prod_dai.CCL_NOEMIE_REJET, w_FAC_FACTURE +-- WHERE NOER_ID_FACT = FACT_ID_FACT AND TRIM(NOER_CDF_REJET) <> '0001' +-- GROUP BY NOER_ID_FACT; +-- +-- CREATE INDEX w_FAC_REJET_i1 +-- ON w_FAC_REJET +-- USING btree +-- (NOER_ID_FACT); +-- + + -- Ajout des factures + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_14'); + + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + date_solde, + montant_facture_c, + montant_facture_h, + montant_regle_c, + montant_regle_h, + delai_facture, + delai_solde, + date_expedition, + delai_expedition, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + ghs_id, + particularite_t2a, + code_cloture, + code_cp_demandee, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + + nb_rejets, + + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour + ) + SELECT + sejour_id, + no_sejour, + FACT_NUM_FAC AS no_facture, + MIN(DEBUT) AS date_debut, + MAX(FIN) AS date_fin, + CASE + WHEN MAX(FIN) > now() THEN 'E' + WHEN no_sejour LIKE 'W%' THEN 'E' + WHEN MAX(AVOIR_FACTURE) IS NOT NULL THEN '0' + ELSE '1' END AS type_facture, + CASE + WHEN MAX(FIN) > now() THEN '0' + WHEN no_sejour LIKE 'W%' THEN '0' + ELSE '1' END AS code_facture, + CASE WHEN MAX(w_FAC_FACTURE.date_vente) IS NOT NULL THEN MAX(w_FAC_FACTURE.date_vente) ELSE GREATEST(MAX(CREATION), MAX(EDITION)) END AS date_facture, + CASE WHEN MAX(w_FAC_FACTURE.date_vente) IS NOT NULL THEN '1' ELSE '0' END AS code_vente, + CASE WHEN MAX(w_FAC_FACTURE.date_vente) IS NOT NULL THEN MAX(w_FAC_FACTURE.date_vente) ELSE '20991231'::date END AS date_vente, + CASE WHEN MAX(w_FAC_FACTURE.date_vente) IS NOT NULL THEN extract('year' FROM MAX(w_FAC_FACTURE.date_vente)) * 100 + extract('month' FROM MAX(w_FAC_FACTURE.date_vente)) ELSE extract('year' FROM '20991231'::date) * 100 + extract('month' FROM '20991231'::date) END AS mois_vente, + + COALESCE( + GREATEST( + CASE + WHEN SUM(w_FAC_MONTANTS.montant_comptabilise_0_c) = 0 THEN MAX(FIN) ELSE MAX(date_dernier_reglement_0_c) END, + CASE + WHEN SUM(w_FAC_MONTANTS.montant_comptabilise_0_h) = 0 THEN MAX(FIN) ELSE MAX(date_dernier_reglement_0_h) END, + CASE + WHEN SUM(w_FAC_MONTANTS.montant_comptabilise_1_c) = 0 THEN MAX(FIN) ELSE MAX(date_dernier_reglement_1_c) END, + CASE + WHEN SUM(w_FAC_MONTANTS.montant_comptabilise_1_h) = 0 THEN MAX(FIN) ELSE MAX(date_dernier_reglement_1_h) END, + CASE + WHEN SUM(w_FAC_MONTANTS.montant_comptabilise_2_c) = 0 THEN MAX(FIN) ELSE MAX(date_dernier_reglement_2_c) END, + CASE + WHEN SUM(w_FAC_MONTANTS.montant_comptabilise_2_h) = 0 THEN MAX(FIN) ELSE MAX(date_dernier_reglement_2_h) END, + CASE + WHEN SUM(w_FAC_MONTANTS.montant_comptabilise_22_c) = 0 THEN MAX(FIN) ELSE MAX(date_dernier_reglement_22_c) END, + CASE + WHEN SUM(w_FAC_MONTANTS.montant_comptabilise_22_h) = 0 THEN MAX(FIN) ELSE MAX(date_dernier_reglement_22_h) END) + , '20991231') as date_solde, + + + SUM(w_FAC_MONTANTS.montant_facture_c) AS montant_facture_c, + SUM(w_FAC_MONTANTS.montant_facture_h) AS montant_facture_h, + SUM(w_FAC_MONTANTS.montant_regle_c) AS montant_regle_c, + SUM(w_FAC_MONTANTS.montant_regle_h) AS montant_regle_h, + GREATEST(0,DATE(GREATEST(MAX(CREATION),MAX(EDITION))) - DATE(MAX(FIN))) as delai_facture, + 0 as delai_solde, + LEAST(MIN(w_FAC_BORDEREAU.date_expedition_1), MIN(w_FAC_BORDEREAU.date_expedition_2)) as date_expedition, + 0 as delai_expedition, + MAX(tiers_payant_0_id), + MAX(tiers_payant_1_id), + MAX(tiers_payant_2_id), + MAX(tiers_payant_22_id), + CASE + WHEN SUM(w_FAC_MONTANTS.montant_comptabilise_0_c) = 0 THEN MAX(FIN) + WHEN MAX(date_dernier_reglement_0_c) IS NOT NULL THEN MAX(date_dernier_reglement_0_c) ELSE '20991231' END as date_solde_0_c, + CASE + WHEN SUM(w_FAC_MONTANTS.montant_comptabilise_0_h) = 0 THEN MAX(FIN) + WHEN MAX(date_dernier_reglement_0_h) IS NOT NULL THEN MAX(date_dernier_reglement_0_h) ELSE '20991231' END as date_solde_0_h, + CASE + WHEN SUM(w_FAC_MONTANTS.montant_comptabilise_1_c) = 0 THEN MAX(FIN) + WHEN MAX(date_dernier_reglement_1_c) IS NOT NULL THEN MAX(date_dernier_reglement_1_c) ELSE '20991231' END as date_solde_1_c, + CASE + WHEN SUM(w_FAC_MONTANTS.montant_comptabilise_1_h) = 0 THEN MAX(FIN) + WHEN MAX(date_dernier_reglement_1_h) IS NOT NULL THEN MAX(date_dernier_reglement_1_h) ELSE '20991231' END as date_solde_1_h, + CASE + WHEN SUM(w_FAC_MONTANTS.montant_comptabilise_2_c) = 0 THEN MAX(FIN) + WHEN MAX(date_dernier_reglement_2_c) IS NOT NULL THEN MAX(date_dernier_reglement_2_c) ELSE '20991231' END as date_solde_2_c, + CASE + WHEN SUM(w_FAC_MONTANTS.montant_comptabilise_2_h) = 0 THEN MAX(FIN) + WHEN MAX(date_dernier_reglement_2_h) IS NOT NULL THEN MAX(date_dernier_reglement_2_h) ELSE '20991231' END as date_solde_2_h, + CASE + WHEN SUM(w_FAC_MONTANTS.montant_comptabilise_22_c) = 0 THEN MAX(FIN) + WHEN MAX(date_dernier_reglement_22_c) IS NOT NULL THEN MAX(date_dernier_reglement_22_c) ELSE '20991231' END as date_solde_22_c, + CASE + WHEN SUM(w_FAC_MONTANTS.montant_comptabilise_22_h) = 0 THEN MAX(FIN) + WHEN MAX(date_dernier_reglement_22_h) IS NOT NULL THEN MAX(date_dernier_reglement_22_h) ELSE '20991231' END as date_solde_22_h, + + MAX(w_FAC_BORDEREAU.date_expedition_0), + MAX(w_FAC_BORDEREAU.date_expedition_1), + MAX(w_FAC_BORDEREAU.date_expedition_2), + MAX(w_FAC_BORDEREAU.date_expedition_22), + MAX(w_FAC_BORDEREAU.code_expedie_0), + MAX(w_FAC_BORDEREAU.code_expedie_1), + MAX(w_FAC_BORDEREAU.code_expedie_2), + MAX(w_FAC_BORDEREAU.code_expedie_22), + MAX(w_FAC_BORDEREAU.no_bordereau_0), + MAX(w_FAC_BORDEREAU.no_bordereau_1), + MAX(w_FAC_BORDEREAU.no_bordereau_2), + MAX(w_FAC_BORDEREAU.no_bordereau_22), + + SUM(w_FAC_MONTANTS.montant_facture_0_c)AS montant_facture_0_c, + SUM(w_FAC_MONTANTS.montant_facture_0_h) AS montant_facture_0_h, + SUM(w_FAC_MONTANTS.montant_facture_1_c) AS montant_facture_1_c, + SUM(w_FAC_MONTANTS.montant_facture_1_h) AS montant_facture_1_h, + SUM(w_FAC_MONTANTS.montant_facture_2_c) AS montant_facture_2_c, + SUM(w_FAC_MONTANTS.montant_facture_2_h) AS montant_facture_2_h, + SUM(w_FAC_MONTANTS.montant_facture_22_c) AS montant_facture_22_c, + SUM(w_FAC_MONTANTS.montant_facture_22_h) AS montant_facture_22_h, + + SUM(w_FAC_MONTANTS.montant_regle_0_c) AS montant_regle_0_c, + SUM(w_FAC_MONTANTS.montant_regle_0_h) AS montant_regle_0_h, + SUM(w_FAC_MONTANTS.montant_regle_1_c) AS montant_regle_1_c, + SUM(w_FAC_MONTANTS.montant_regle_1_h) AS montant_regle_1_h, + SUM(w_FAC_MONTANTS.montant_regle_2_c) AS montant_regle_2_c, + SUM(w_FAC_MONTANTS.montant_regle_2_h) AS montant_regle_2_h, + SUM(w_FAC_MONTANTS.montant_regle_22_c) AS montant_regle_22_c, + SUM(w_FAC_MONTANTS.montant_regle_22_h) AS montant_regle_22_h, + + + 0 AS delai_expedition_0, + 0 AS delai_expedition_1, + 0 AS delai_expedition_2, + 0 AS delai_expedition_22, + 0 AS delai_solde_0_c, + 0 AS delai_solde_0_h, + 0 AS delai_solde_1_c, + 0 AS delai_solde_1_h, + 0 AS delai_solde_2_c, + 0 AS delai_solde_2_h, + 0 AS delai_solde_22_c, + 0 AS delai_solde_22_h, + + 0, + '' as particularite_t2a, + + '0' as code_cloture, + '0' as code_cp_demandee, + 0 AS ghs_bebe1_id, + 0 AS ghs_bebe2_id, + 0 AS ghs_bebe3_id, + + SUM(w_FAC_MONTANTS.montant_comptabilise_c), + SUM(w_FAC_MONTANTS.montant_comptabilise_h), + SUM(w_FAC_MONTANTS.montant_comptabilise_0_c), + SUM(w_FAC_MONTANTS.montant_comptabilise_0_h), + SUM(w_FAC_MONTANTS.montant_comptabilise_1_c), + SUM(w_FAC_MONTANTS.montant_comptabilise_1_h), + SUM(w_FAC_MONTANTS.montant_comptabilise_2_c), + SUM(w_FAC_MONTANTS.montant_comptabilise_2_h), + SUM(w_FAC_MONTANTS.montant_comptabilise_22_c), + SUM(w_FAC_MONTANTS.montant_comptabilise_22_h), + + 0, + + 0, + 0 + + + FROM w_FAC_FACTURE + LEFT JOIN w_FAC_BORDEREAU ON (LBOR_ID_FACT = FACT_ID_FACT) + LEFT JOIN w_FAC_MONTANTS ON (FACD_ID_FACT = FACT_ID_FACT) + LEFT JOIN w_FAC_REGLEMENT ON (LECR_ID_FACT = FACT_ID_FACT) + -- LEFT JOIN w_FAC_REJET ON (NOER_ID_FACT = FACT_ID_FACT) + GROUP BY 1,2,3,date_sortie + ORDER BY 1,2; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_14'); + + + + + + -- Séjours sans facture + + DROP TABLE IF EXISTS w_factures_trous; + CREATE TEMP TABLE w_factures_trous AS + SELECT + p_sejours.finess, + p_sejours.no_sejour, + p_sejours.date_entree, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.code_cp_demandee, + p_sejours.ghs_id, + COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire, + p_sejours.code_sorti, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours, + MAX(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END) AS date_fin_facture, + date(MAX(COALESCE(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours + FROM activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND no_facture NOT LIKE 'E%' AND type_facture IS DISTINCT FROM 'P' + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE p_sejours.etat = '' AND p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND date_entree <= now() AND p_sejours.type_sejour <> '6' AND p_sejours.type_sejour <> '9' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13; + + + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + code_cp_demandee, + ghs_id, + date_debut, + date_fin) + SELECT finess, + no_sejour, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || substr(p_calendrier.mois,3,4) ELSE '' END, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || substr(p_calendrier.mois,3,4) ELSE '' END, + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + code_cp_demandee , + ghs_id, + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13; + + + + UPDATE activite[PX].p_factures SET + date_debut = date_entree, + date_fin = CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid AND + avec_facturation_intermediaire IS DISTINCT FROM '1' + WHERE p_factures.no_sejour = p_sejours.no_sejour AND + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END - date_entree < 30 AND + ( + p_factures.date_debut <> date_entree OR + p_factures.date_fin <> CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + ); + + + -- Avoirs qui annulent des factures + UPDATE activite[PX].p_factures SET no_facture_od_avoir = REF_FACTURE + FROM w_FAC_FACTURE + WHERE p_factures.no_facture = regexp_replace(NOTES,'[^0-9]*([0-9\.]+)','\1') + AND AVOIR_FACTURE = 'true' + AND no_facture_od_avoir IS DISTINCT FROM REF_FACTURE; + + + DROP TABLE IF EXISTS w_ods_avoir; + CREATE TEMP TABLE w_ods_avoir AS + + SELECT p_factures.no_facture, p_factures.no_facture_od_avoir, p_factures_avoir.date_facture AS date_od_avoir, + SUM(p_factures.montant_comptabilise_c + p_factures.montant_comptabilise_h) AS montant_comptabilise, + SUM(p_factures.montant_regle_c + p_factures.montant_regle_h) AS montant_regle, + SUM(p_factures_avoir.montant_comptabilise_c + p_factures_avoir.montant_comptabilise_h) AS montant_facture_avoir, + SUM(p_factures_avoir.montant_regle_c + p_factures_avoir.montant_regle_h) AS montant_regle_avoir + FROM activite[PX].p_factures JOIN activite[PX].p_factures p_factures_avoir ON p_factures.no_facture = p_factures_avoir.no_facture_od_avoir + WHERE p_factures.type_facture = 'X' AND p_factures_avoir.type_facture = '1' + GROUP BY 1,2,3 + HAVING SUM(p_factures.montant_comptabilise_c + p_factures.montant_comptabilise_h) = 0 - SUM(p_factures_avoir.montant_comptabilise_c + p_factures_avoir.montant_comptabilise_h) + AND SUM(p_factures.montant_regle_c + p_factures.montant_regle_h) = 0 + AND SUM(p_factures_avoir.montant_regle_c + p_factures_avoir.montant_regle_h) = 0; + + + UPDATE activite[PX].p_factures SET + date_solde_c = date_od_avoir, + date_solde_0_c = date_od_avoir, + date_solde_1_c = date_od_avoir, + date_solde_2_c = date_od_avoir, + date_solde_22_c = date_od_avoir, + date_solde_h = date_od_avoir, + date_solde_0_h = date_od_avoir, + date_solde_1_h = date_od_avoir, + date_solde_2_h = date_od_avoir, + date_solde_22_h = date_od_avoir, + montant_regle_c = montant_comptabilise_c, + montant_regle_0_c = montant_comptabilise_0_c, + montant_regle_1_c = montant_comptabilise_1_c, + montant_regle_2_c = montant_comptabilise_2_c, + montant_regle_22_c = montant_comptabilise_22_c, + montant_regle_h = montant_comptabilise_h, + montant_regle_0_h = montant_comptabilise_0_h, + montant_regle_1_h = montant_comptabilise_1_h, + montant_regle_2_h = montant_comptabilise_2_h, + montant_regle_22_h = montant_comptabilise_22_h + FROM w_ods_avoir + WHERE p_factures.no_facture = w_ods_avoir.no_facture; + + UPDATE activite[PX].p_factures SET + date_solde_c = date_od_avoir, + date_solde_0_c = date_od_avoir, + date_solde_1_c = date_od_avoir, + date_solde_2_c = date_od_avoir, + date_solde_22_c = date_od_avoir, + date_solde_h = date_od_avoir, + date_solde_0_h = date_od_avoir, + date_solde_1_h = date_od_avoir, + date_solde_2_h = date_od_avoir, + date_solde_22_h = date_od_avoir, + montant_regle_c = montant_comptabilise_c, + montant_regle_0_c = montant_comptabilise_0_c, + montant_regle_1_c = montant_comptabilise_1_c, + montant_regle_2_c = montant_comptabilise_2_c, + montant_regle_22_c = montant_comptabilise_22_c, + montant_regle_h = montant_comptabilise_h, + montant_regle_0_h = montant_comptabilise_0_h, + montant_regle_1_h = montant_comptabilise_1_h, + montant_regle_2_h = montant_comptabilise_2_h, + montant_regle_22_h = montant_comptabilise_22_h + FROM w_ods_avoir + WHERE p_factures.no_facture = w_ods_avoir.no_facture_od_avoir; + + + + + ]]> + + + + '0001' AND TRIM(NOER_LIB_REJET) <> ''; +-- +-- INSERT INTO activite.t_rejets_noemie (texte, code) +-- SELECT rejet_texte, MAX(rejet_code) +-- FROM activite[PX].p_factures_rejets +-- LEFT JOIN activite.t_rejets_noemie ON (rejet_texte = t_rejets_noemie.texte) +-- WHERE t_rejets_noemie.oid IS NULL +-- GROUP BY 1; +-- +-- UPDATE activite[PX].p_factures_rejets +-- SET rejet_id = t_rejets_noemie.oid +-- FROM activite.t_rejets_noemie +-- WHERE rejet_texte = t_rejets_noemie.texte; +-- + ]]> + + + + + '' AND + p_sejours.code_prevu = '0' AND + p_sejours.date_sortie >= date(now() - interval '1 year') + GROUP BY 1,2 + HAVING MAX(p_sejours.date_sortie) - date(MAX(COALESCE(FACTURES_615.FIN,'00010101'))) > 1 + ORDER BY 4 + ; + + ANALYSE w_HDJ + ; + + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + p_factures.no_facture, + date(p_mouvements_sejour.date) AS date_debut, + date(p_mouvements_sejour.date) AS date_fin, + 1 AS nb_rubrique, + 1 AS coefficient, + t_rubriques_facturation.oid AS rubrique_facturation_id, + t_prestations.oid AS prestation_id, + 0::numeric AS prix_unitaire, + p_mouvements_sejour.lieu_id AS lieu_id + FROM activite[PX].p_mouvements_sejour + JOIN w_HDJ ON + p_mouvements_sejour.no_sejour = w_HDJ.no_sejour AND + p_mouvements_sejour.date > FIN_fact + JOIN prod_dai.RESERVATIONS ON RESERVATIONS.NO_SEJOUR = w_HDJ.NO_4D + JOIN activite[PX].p_factures ON + w_HDJ.no_sejour = p_factures.no_sejour AND + type_facture = 'E' AND + p_mouvements_sejour.date BETWEEN p_factures.date_debut AND p_factures.date_fin + JOIN activite[PX].t_rubriques_facturation ON prestations_presence = t_rubriques_facturation.code_original + JOIN activite[PX].t_prestations ON prestations_presence = t_prestations.code + WHERE + ( + RESERVATIONS.LUNDI ILIKE 'true' AND EXTRACT(DOW FROM p_mouvements_sejour.date) = 1 OR + RESERVATIONS.MARDI ILIKE 'true' AND EXTRACT(DOW FROM p_mouvements_sejour.date) = 2 OR + RESERVATIONS.MERCREDI ILIKE 'true' AND EXTRACT(DOW FROM p_mouvements_sejour.date) = 3 OR + RESERVATIONS.JEUDI ILIKE 'true' AND EXTRACT(DOW FROM p_mouvements_sejour.date) = 4 OR + RESERVATIONS.VENDREDI ILIKE 'true' AND EXTRACT(DOW FROM p_mouvements_sejour.date) = 5 OR + RESERVATIONS.SAMEDI ILIKE 'true' AND EXTRACT(DOW FROM p_mouvements_sejour.date) = 6 + ) + ; + + ]]> + + + + '1' OR w_FAC_FACTURE.COMPTABILISEE ILIKE 'true' THEN MONTANT_ASSURE+MONTANT_CAISSE+MONTANT_MUT ELSE 0 END) AS montant_comptabilise, + SUM(CASE WHEN t_divers.valeur <> '1' OR w_FAC_FACTURE.COMPTABILISEE ILIKE 'true' THEN MONTANT_ASSURE ELSE 0 END) as montant_comptabilise_0, + SUM(CASE WHEN t_divers.valeur <> '1' OR w_FAC_FACTURE.COMPTABILISEE ILIKE 'true' THEN MONTANT_CAISSE ELSE 0 END) as montant_comptabilise_1, + SUM(CASE WHEN t_divers.valeur <> '1' OR w_FAC_FACTURE.COMPTABILISEE ILIKE 'true' THEN MONTANT_MUT ELSE 0 END) as montant_comptabilise_2, + 0 as montant_comptabilise_22, + + 0::bigint AS rubrique_facture_id + + FROM w_FAC_LIGNES + JOIN activite.t_divers ON t_divers.code = 'DAI_TRT_COMPTABILISE' + LEFT JOIN activite[PX].t_rubriques_facturation ON (ACTE = t_rubriques_facturation.code_original) + LEFT JOIN activite.t_prestations ON (ACTE = t_prestations.code) + JOIN w_FAC_FACTURE ON LFAC_ID_FAC = FACT_ID_FACT + LEFT JOIN activite[PX].t_compte ON (0 = t_compte.code_original) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,15,16; + + -- mise à niveau de la date de facturation de toutes les lignes (comme pour la facture) + UPDATE w_FAC_FACTURE_LIGNE_C SET date_vente = p_factures.date_vente + FROM + activite[PX].p_factures + WHERE p_factures.no_facture = w_FAC_FACTURE_LIGNE_C.no_facture; + + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_FAC_FACTURE_LIGNE_C'); + + -- lignes clinique + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_8'); + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + facture_id, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + + origine_facturation_id, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour) + + SELECT + w_FAC_FACTURE_LIGNE_C.no_facture, + p_factures.oid, + w_FAC_FACTURE_LIGNE_C.date_debut, + w_FAC_FACTURE_LIGNE_C.date_fin, + nb_rubrique, + nb_prestations, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_sortie_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + 0, + 0, + 0, + 0, + 0, + + origine_facturation_id, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour + + FROM w_FAC_FACTURE_LIGNE_C + JOIN activite[PX].p_factures ON p_factures.no_facture = w_FAC_FACTURE_LIGNE_C.no_facture; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_8'); + + + + + UPDATE activite[PX].p_factures_lignes_c + SET nb_prestation = coefficient * nb_prestation, + nb_rubrique = coefficient * nb_prestation, + coefficient = 1 + WHERE coefficient > 1 AND + prestation_id IN (SELECT oid FROM activite.t_prestations WHERE code IN ('PJ', 'PJ1', 'PJ2', 'FJ', 'PHJ', 'SSM', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO')); + + + -- Eclatement des supplements par jour + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + p_factures_lignes_c.CTID AS from_CTID, + t_prestations.code AS prestation_code, + CASE WHEN p_sejours.type_sejour <> '5' THEN date(p_sejours.date_entree) ELSE p_factures_lignes_c.date_debut END AS date_debut_ghs, + CASE WHEN p_sejours.type_sejour <> '5' THEN date(p_sejours.date_sortie - interval '1 day') ELSE p_factures_lignes_c.date_fin END AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN type_sejour = '5' THEN p_factures_lignes_c.date_debut WHEN t_prestations.code = 'GHS' THEN date(date_entree + interval '1 day') ELSE date(p_factures_lignes_c.date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN type_sejour = '5' THEN p_factures_lignes_c.date_fin WHEN t_prestations.code = 'GHS' THEN date(p_sejours.date_sortie - interval '1 day') ELSE date(p_factures_lignes_c.date_debut + ((ABS(nb_prestation)-1) || ' day')::interval) END AS date_fin_det, + ABS(CASE WHEN type_sejour <> '5' AND t_prestations.code = 'GHS' THEN date(date_sortie) - date(date_entree) ELSE nb_prestation END) AS nb_det, + p_factures_lignes_c.* + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code IN ('PJ', 'PJ1', 'PJ2', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (type_sejour <> '5' AND t_prestations.code = 'GHS' AND date(date_sortie) - date(date_entree) > 1)) ; + + + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM activite[PX].p_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture AND + prestation_code = 'GHS'; + + CREATE INDEX w_factures_lignes_sup_c_i1 + ON w_factures_lignes_sup_c + USING btree + (date_debut); + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + from_CTID, + no_facture, + date AS date_debut, + date AS date_fin, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + round(montant_facture / ABS(nb_det),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + round(montant_comptabilise / ABS(nb_det),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_det),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_det),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_det),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_det),2) AS montant_comptabilise_22, + round(montant_encours / ABS(nb_det),2) AS montant_encours, + round(montant_encours_0 / ABS(nb_det),2) AS montant_encours_0, + round(montant_encours_1 / ABS(nb_det),2) AS montant_encours_1, + round(montant_encours_2 / ABS(nb_det),2) AS montant_encours_2, + round(montant_encours_22 / ABS(nb_det),2) AS montant_encours_22, + round(montant_facture_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_actes_inclus_dans_sejour, + round(montant_facture_0_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_0_actes_inclus_dans_sejour, + round(montant_facture_1_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_1_actes_inclus_dans_sejour, + round(montant_facture_2_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_2_actes_inclus_dans_sejour, + round(montant_facture_22_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + round(montant_comptabilise_budget_global_1 / ABS(nb_det),2) AS montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_det AND date_fin_det + ; + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT from_CTID, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + + UPDATE activite[PX].p_factures_lignes_c + SET + date_fin = p_factures_lignes_c.date_debut, + nb_rubrique = p_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_sup_tot.nb_rubrique, + nb_prestation = p_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_sup_tot.nb_prestation, + montant_facture = p_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = p_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = p_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = p_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = p_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = p_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = p_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = p_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = p_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = p_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22, + montant_encours = p_factures_lignes_c.montant_encours - w_factures_lignes_sup_c_sup_tot.montant_encours, + montant_encours_0 = p_factures_lignes_c.montant_encours_0 - w_factures_lignes_sup_c_sup_tot.montant_encours_0, + montant_encours_1 = p_factures_lignes_c.montant_encours_1 - w_factures_lignes_sup_c_sup_tot.montant_encours_1, + montant_encours_2 = p_factures_lignes_c.montant_encours_2 - w_factures_lignes_sup_c_sup_tot.montant_encours_2, + montant_encours_22 = p_factures_lignes_c.montant_encours_22 - w_factures_lignes_sup_c_sup_tot.montant_encours_22, + montant_facture_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 = p_factures_lignes_c.montant_comptabilise_budget_global_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup_tot + WHERE p_factures_lignes_c.CTID = from_CTID; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_sup_c_sup'); + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c_sup; + + + + UPDATE activite[PX].p_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_factures, activite[PX].p_mouvements_sejour + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + activite[PX].p_factures_lignes_c.date_debut = p_mouvements_sejour.date AND + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_sorties_directes = 1) AND + p_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + + + + + + + + + + DROP TABLE IF EXISTS w_actes_inclus_dans_sejour; + CREATE TEMP TABLE w_actes_inclus_dans_sejour AS + SELECT FACT_NUM_FAC AS no_facture, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour + FROM activite[PX].p_factures_lignes_c JOIN w_FAC_FACTURE ON no_facture = FACT_NUM_FAC + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + montant_facture_actes_inclus_dans_sejour <> 0 AND + origine_facturation_id = 3 + GROUP BY 1; + + DROP TABLE IF EXISTS w_ghs_pj; + CREATE TEMP TABLE w_ghs_pj AS + SELECT p_factures_lignes_c.no_facture, + p_sejours.no_sejour, + p_sejours.est_budget_global, + MIN(p_factures_lignes_c.ctid) AS ctid_min + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + origine_facturation_id = 1 AND + ( + prestation_id IN (SELECT oid FROM activite.t_prestations where code IN ('PJ', 'PJ1', 'PJ2', 'GHS', 'AMP5')) OR + rubrique_facturation_id IN (SELECT oid FROM activite[PX].t_rubriques_facturation where actes_inclus_public = '1') + ) + GROUP BY 1,2,3; + + + + UPDATE activite[PX].p_factures_lignes_c + SET + montant_facture_actes_inclus_dans_sejour = 0 - w_actes_inclus_dans_sejour.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = 0 - w_actes_inclus_dans_sejour.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = 0 - w_actes_inclus_dans_sejour.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = 0 - w_actes_inclus_dans_sejour.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = 0 - w_actes_inclus_dans_sejour.montant_facture_22_actes_inclus_dans_sejour + FROM w_actes_inclus_dans_sejour, w_ghs_pj + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + p_factures_lignes_c.no_facture = w_ghs_pj.no_facture AND p_factures_lignes_c.ctid = w_ghs_pj.ctid_min AND + w_actes_inclus_dans_sejour.no_facture = p_factures_lignes_c.no_facture AND + ( + prestation_id IN (SELECT oid FROM activite.t_prestations where code IN ('PJ', 'GHS', 'AMP5')) OR + rubrique_facturation_id IN (SELECT oid FROM activite[PX].t_rubriques_facturation where actes_inclus_public = '1') + ); + + + + DROP TABLE IF EXISTS w_actes_inclus_dans_sejour_t; + CREATE TEMP TABLE w_actes_inclus_dans_sejour_t AS + SELECT no_facture, + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_actes_inclus_dans_sejour ELSE 0 END) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(CASE WHEN origine_facturation_id = 3 THEN montant_facture_actes_inclus_dans_sejour ELSE 0 END) AS montant_facture_h_actes_inclus_dans_sejour + FROM activite[PX].p_factures_lignes_c + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + montant_facture_actes_inclus_dans_sejour <> 0 + GROUP BY 1; + + + UPDATE activite[PX].p_factures SET + montant_facture_c_actes_inclus_dans_sejour = w_actes_inclus_dans_sejour_t.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_actes_inclus_dans_sejour_t.montant_facture_h_actes_inclus_dans_sejour + FROM w_actes_inclus_dans_sejour_t + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + w_actes_inclus_dans_sejour_t.no_facture = p_factures.no_facture; + + + -- Suppression des tables de travail non utilisées après + --DROP TABLE IF EXISTS w_FAC_LIGNE_FACTURE_DEBITEUR_compte CASCADE; + DROP TABLE IF EXISTS w_factures_lignes_sup_c CASCADE; + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot CASCADE; + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup CASCADE; + DROP TABLE IF EXISTS w_actes_inclus_dans_sejour CASCADE; + DROP TABLE IF EXISTS w_ghs_pj CASCADE; + DROP TABLE IF EXISTS w_actes_inclus_dans_sejour_t CASCADE; + --DROP TABLE IF EXISTS w_factures_ventes_bg CASCADE; + --DROP TABLE IF EXISTS w_factures_lignes_bg CASCADE; + + ]]> + + + + 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4; + + + INSERT INTO activite.p_factures_soldes_c( + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + FACT_NUM_FAC, + date_trunc('day',RECEPTION), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + SUM(MONTANT) AS montant_regle_c, + SUM(CASE WHEN TYPE_DESTINATAI = 3 THEN MONTANT ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN TYPE_DESTINATAI = 1 THEN MONTANT ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN TYPE_DESTINATAI = 2 THEN MONTANT ELSE 0 END) AS montant_regle_2, + 0 AS montant_regle_22 + FROM prod_dai.REGLEMENTS + JOIN w_FAC_FACTURE ON REGLEMENTS.FACTURE = w_FAC_FACTURE.FACT_ID_FACT + GROUP BY 1,2,3,4; + + UPDATE activite.p_factures + SET + montant_regle_c = montant_regle, + montant_regle_0_c = montant_regle_0, + montant_regle_1_c = montant_regle_1, + montant_regle_2_c = montant_regle_2, + montant_regle_22_c = montant_regle_22 + FROM + ( + SELECT + no_facture, + SUM(montant_regle) AS montant_regle, + SUM(montant_regle_0) AS montant_regle_0, + SUM(montant_regle_1) AS montant_regle_1, + SUM(montant_regle_2) As montant_regle_2, + SUM(montant_regle_22) AS montant_regle_22 + FROM activite.p_factures_soldes_c + GROUP BY 1 + ) sub + WHERE p_factures.no_facture = sub.no_facture + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_8'); + + ]]> + + + + 'P' THEN p_factures.no_facture ELSE null END) AS no_facture_reference_last, + MAX(CASE WHEN type_facture <> '1' AND type_facture <> 'P' THEN p_factures.no_facture ELSE null END) AS no_facture_reference_last_2, + MAX(p_factures.oid) AS facture_id_last, + MAX(CASE WHEN type_facture = '0' AND type_facture <> 'P' THEN p_factures.oid ELSE null END) AS facture_id_reference_last, + MAX(CASE WHEN type_facture <> '1' AND type_facture <> 'P' THEN p_factures.oid ELSE null END) AS facture_id_reference_last_2 + FROM activite[PX].p_factures + WHERE type_facture <> 'P' + GROUP BY 1,2; + + CREATE INDEX w_sejours_facture_reference_i1 + ON w_sejours_facture_reference + USING btree + (no_sejour); + + UPDATE w_sejours_facture_reference + SET facture_id_last = p_factures_references.oid + FROM activite[PX].p_factures p_factures_references + WHERE w_sejours_facture_reference.no_facture_last = p_factures_references.no_facture + AND w_sejours_facture_reference.facture_id_last <> p_factures_references.oid; + + + UPDATE w_sejours_facture_reference + SET facture_id_reference_last = p_factures_references.oid + FROM activite[PX].p_factures p_factures_references + WHERE w_sejours_facture_reference.no_facture_reference_last = p_factures_references.no_facture + AND w_sejours_facture_reference.facture_id_reference_last <> p_factures_references.oid; + + UPDATE w_sejours_facture_reference + SET facture_id_reference_last_2 = p_factures_references.oid + FROM activite[PX].p_factures p_factures_references + WHERE w_sejours_facture_reference.no_facture_reference_last_2 = p_factures_references.no_facture + AND w_sejours_facture_reference.facture_id_reference_last_2 <> p_factures_references.oid; + + + + UPDATE activite[PX].p_factures + SET + no_facture_reference = COALESCE(no_facture_reference_last, no_facture_reference_last_2, no_facture_last), + facture_reference_id = COALESCE(facture_id_reference_last, facture_id_reference_last_2, facture_id_last) + FROM w_sejours_facture_reference + WHERE p_factures.no_sejour = w_sejours_facture_reference.no_sejour AND + p_factures.date_debut BETWEEN w_sejours_facture_reference.date_debut AND w_sejours_facture_reference.date_fin AND + ( + no_facture_reference IS DISTINCT FROM COALESCE(no_facture_reference_last, no_facture_reference_last_2, no_facture_last) OR + facture_reference_id IS DISTINCT FROM COALESCE(facture_id_reference_last, facture_id_reference_last_2, facture_id_last) + ); + + + + + UPDATE activite[PX].p_factures + SET no_facture_reference = no_facture + WHERE (no_facture_reference IS NULL OR no_facture_reference = ''); + + + UPDATE activite[PX].p_factures + SET type_facture = '0' + WHERE p_factures.type_facture = '2' AND + p_factures.no_facture = p_factures.no_facture_reference; + + UPDATE activite[PX].p_factures + SET type_facture = '2' + WHERE p_factures.type_facture = '0' AND + p_factures.no_facture <> p_factures.no_facture_reference; + + UPDATE activite[PX].p_factures + SET facture_reference_id = p_factures_references.oid + FROM activite[PX].p_factures p_factures_references + WHERE p_factures.no_facture_reference = p_factures_references.no_facture + AND p_factures.facture_reference_id <> p_factures_references.oid; + + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_sejours_facture_reference CASCADE; + + ]]> + + + + + + + + '1' OR + COMPTABILISEE ILIKE 'true' AND + date(w_FAC_FACTURE.date_vente) < date(now()) + GROUP BY 1 + ORDER BY 1; + + INSERT INTO w_CHIFFRIER + SELECT + FACT_NUM_FAC, + date(REGLEMENTS.RECEPTION) AS date_comptable, + 0 AS montant_ventes_c, + SUM(REGLEMENTS.MONTANT) AS montant_reglements_c, + 0 AS montant_solde_client_c, + 0 AS montant_ventes_h, + 0 AS montant_reglements_h, + 0 AS montant_solde_client_h + FROM prod_dai.REGLEMENTS + JOIN w_FAC_FACTURE ON REGLEMENTS.FACTURE = w_FAC_FACTURE.FACT_ID_FACT + GROUP BY 1,2 + ORDER BY 1 + ; + + TRUNCATE activite[PX].p_chiffrier_comptable; + + INSERT INTO activite[PX].p_chiffrier_comptable( + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_solde_client_c, + montant_ventes_h, + montant_reglements_h, + montant_solde_client_h + ) + SELECT + date_comptable, + SUM(montant_ventes_c) AS montant_ventes_c, + 0 AS montant_reglements_c, + 0 AS montant_solde_client_c, + 0 AS montant_ventes_h, + 0 AS montant_reglements_h, + 0 AS montant_solde_client_h + FROM w_CHIFFRIER + GROUP BY 1 + ORDER BY 1; + + TRUNCATE activite[PX].p_factures_comptables; + + INSERT INTO activite[PX].p_factures_comptables( + no_facture, + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_ventes_h, + montant_reglements_h + ) + SELECT + FACT_NUM_FAC, + date_comptable, + SUM(montant_ventes_c) AS montant_ventes_c, + 0 AS montant_reglements_c, + 0 AS montant_ventes_h, + 0 AS montant_reglements_h + FROM w_CHIFFRIER + GROUP BY 1,2 + ORDER BY 1,3; + + + ]]> + + + + + + + + ''; + + + ]]> + + + + 0 + ; + + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.MEDE_NOM_USU, w_medecins.MEDE_PRENOM, w_medecins.MEDI_ADELI, 0 FROM + (SELECT SUBSTR(MEDE_NOM_USU_SOUNDEX, 1, 8) AS MEDE_NOM_USU_SOUNDEX, SUBSTR(MEDE_PRENOM_SOUNDEX, 1, 8) AS MEDE_PRENOM_SOUNDEX, MEDI_ADELI, MIN(MEDE_ID_MEDE) AS MEDE_ID_MEDE + FROM w_medecins + GROUP BY 1,2,3) subview, w_medecins + WHERE w_medecins.MEDE_ID_MEDE = subview.MEDE_ID_MEDE + AND subview.MEDE_NOM_USU_SOUNDEX || ',' || subview.MEDE_PRENOM_SOUNDEX || ',' || subview.MEDI_ADELI NOT IN + (SELECT substr(base.cti_soundex_nom(nom),1,8) || ',' || substr(base.cti_soundex_nom(prenom),1,8) || ',' || numero_ordre FROM base.t_medecins); + + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.MEDE_NOM_USU, w_medecins.MEDE_PRENOM, w_medecins.MEDI_ADELI, 0 FROM + (SELECT MEDE_NOM_USU_SOUNDEX, MEDE_PRENOM_SOUNDEX, MIN(MEDE_ID_MEDE) AS MEDE_ID_MEDE + FROM w_medecins + GROUP BY 1,2) subview, w_medecins + WHERE w_medecins.MEDE_ID_MEDE = subview.MEDE_ID_MEDE + AND subview.MEDE_NOM_USU_SOUNDEX || ',' || subview.MEDE_PRENOM_SOUNDEX NOT IN + (SELECT base.cti_soundex_nom(nom) || ',' || base.cti_soundex_nom(prenom) FROM base.t_medecins); + + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT substr(base.cti_soundex_nom(nom),1,8) as nom , substr(base.cti_soundex_nom(prenom),1,8) as prenom, numero_ordre, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2,3) subview + WHERE SUBSTR(MEDE_NOM_USU_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(MEDE_PRENOM_SOUNDEX, 1, 8) = subview.prenom + AND MEDI_ADELI = subview.numero_ordre + AND w_medecins.medecin_id = 0; + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT base.cti_soundex_nom(nom) as nom , base.cti_soundex_nom(prenom) as prenom, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2) subview + WHERE SUBSTR(MEDE_NOM_USU_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(MEDE_PRENOM_SOUNDEX, 1, 8) = subview.prenom + AND w_medecins.medecin_id = 0; + + INSERT INTO activite[PX].t_medecins_administratifs(code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT DISTINCT MEDE_ID_MEDE, MEDE_CODE, MEDE_NOM_USU, MEDE_PRENOM, COALESCE(t_specialites_medecin.oid,0), medecin_id + FROM w_medecins + LEFT JOIN base.t_specialites_medecin ON (CODE_SPECIALITE::bigint = t_specialites_medecin.code) + WHERE MEDE_ID_MEDE NOT IN (SELECT code_original FROM activite[PX].t_medecins_administratifs); + + UPDATE activite[PX].t_medecins_administratifs + SET nom = MEDE_NOM_USU, + prenom = MEDE_PRENOM, + specialite_id = COALESCE(t_specialites_medecin.oid,t_specialites_medecin_2.oid,0), + medecin_id = w_medecins.medecin_id, + no_adeli = MEDI_ADELI + FROM w_medecins + LEFT JOIN base.t_specialites_medecin ON (CODE_SPECIALITE || '..' = t_specialites_medecin.code) + LEFT JOIN base.t_specialites_medecin t_specialites_medecin_2 ON (CODE_SPECIALITE = t_specialites_medecin_2.code) + WHERE w_medecins.MEDE_ID_MEDE = t_medecins_administratifs.code_original + AND ( + t_medecins_administratifs.nom <> MEDE_NOM_USU OR + t_medecins_administratifs.prenom <> MEDE_PRENOM OR + t_medecins_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid,t_specialites_medecin_2.oid,0) OR + t_medecins_administratifs.medecin_id <> w_medecins.medecin_id OR + t_medecins_administratifs.no_adeli <> w_medecins.MEDI_ADELI + ); + + + + UPDATE activite[PX].t_medecins_administratifs + SET specialite_id = subview.specialite_medecin_id + FROM + ( + SELECT t_medecins_administratifs.oid,t_specialites_medecin.oid AS specialite_medecin_id + FROM activite[PX].t_medecins_administratifs + JOIN base.t_specialites_medecin t_specialites_medecin_2 ON specialite_id = t_specialites_medecin_2.oid + JOIN base.t_specialites_medecin ON t_specialites_medecin_2.code || '..' = t_specialites_medecin.code + ) subview + WHERE t_medecins_administratifs.oid = subview.oid; + + UPDATE base.t_medecins SET specialite_id = subview.specialite_id FROM + (SELECT t_medecins.oid, MIN(t_medecins_administratifs.specialite_id) as specialite_id + FROM base.t_medecins, activite[PX].t_medecins_administratifs , base.t_specialites_medecin + WHERE t_medecins.oid = t_medecins_administratifs.medecin_id + AND t_medecins_administratifs.specialite_id = t_specialites_medecin.oid + GROUP BY t_medecins.oid) subview + WHERE t_medecins.oid = subview.oid AND t_medecins.oid <> 0 AND t_medecins.specialite_id = 0; + + ]]> + + + + '' + AND CODE_MT NOT IN (SELECt code FROM base.t_modes_traitement) + ORDER BY CODE_MT; + + -- DMT + + INSERT INTO base.t_dmt(code, texte, texte_court) + SELECT + CODE_DMT, 'Post_cure pour alcooliques','Post_cure pour alcooliques' + FROM prod_dai.POP_LISTES + WHERE CODE_DMT <> '' + AND CODE_DMT NOT IN (SELECt code FROM base.t_dmt) + ORDER BY CODE_DMT; + + -- Services + + INSERT INTO activite[PX].t_services_facturation(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '****', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_services_facturation); + + DROP TABLE IF EXISTS w_services + ; + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, type_t2a) + SELECT + NOM, + NOM, + SIGNATAIRE, + SIGNATAIRE, + CASE WHEN PMSI_UNITE_MEDICALE <> '' THEN 1 ELSE 0 END + FROM + prod_dai.POP_LISTES + WHERE + CODE_DMT != '' + AND NOM NOT IN (SELECT code_original FROM activite[PX].t_services_facturation WHERE code_original IS NOT NULL ) + GROUP BY 1,2,3,4,5 + ; + + UPDATE activite[PX].t_services_facturation + SET mode_traitement_id = subview.mode_traitement_id, dmt_id = subview.dmt_id + FROM ( + SELECT NOM, COALESCE(t_modes_traitement.oid,0) as mode_traitement_id, COALESCE(t_dmt.oid,0) as dmt_id + FROM prod_dai.POP_LISTES + LEFT JOIN base.t_modes_traitement ON CODE_MT = t_modes_traitement.code + LEFT JOIN base.t_dmt ON CODE_DMT = t_dmt.code + WHERE + CODE_DMT != '' + AND (t_modes_traitement.oid IS NOT NULL OR t_dmt.oid IS NOT NULL) + ) subview + WHERE code_original = NOM AND (t_services_facturation.mode_traitement_id = 0 OR t_services_facturation.dmt_id = 0); + + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, est_absence) + SELECT '*ABS', '*ABS', 'Absence', 'Absence', '1' WHERE '*ABS' NOT IN (SELECT code_original FROM activite[PX].t_services_facturation); + + + -- Unités médicales (idem service) + + INSERT INTO activite[PX].t_unites_medicales(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_medicales); + + INSERT INTO activite[PX].t_unites_medicales(code_original, code, texte, texte_court) + SELECT + NO_FICHE, + NOM, + SIGNATAIRE, + SIGNATAIRE + FROM + prod_dai.POP_LISTES + WHERE + CODE_DMT != '' + AND NO_FICHE NOT IN (SELECT code_original FROM activite[PX].t_unites_medicales WHERE code_original IS NOT NULL ) + GROUP BY 1,2,3,4 + ; + + INSERT INTO activite[PX].t_unites_medicales(code_original, code, texte, texte_court) + SELECT '*ABS', '*ABS', 'Absence', 'Absence' WHERE '*ABS' NOT IN (SELECT code_original FROM activite[PX].t_unites_medicales); + + -- Unités fonctionnelles (services dai) + + INSERT INTO activite[PX].t_unites_fonctionnelles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_fonctionnelles); + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT NO_FICHE, INITIALES AS UNFO_CODE, NOM, NOM + FROM prod_dai.POP_LISTES + WHERE + NO_FICHE NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles) + AND TITRE_POP = 'Services' + ORDER BY NO_FICHE; + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT '*ABS', '*ABS', 'Absence', 'Absence' WHERE '*ABS' NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles); + + -- Activités (um principale) + + INSERT INTO activite[PX].t_activites(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_activites); + + + -- Etages et lits + + INSERT INTO activite[PX].t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_etages); + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court) + SELECT NO_FICHE, NO_FICHE, NOM, NOM + FROM prod_dai.POP_LISTEs + WHERE + TITRE_POP = 'Pavillons' AND + NO_FICHE::bigint NOT IN (SELECT code_original FROM activite[PX].t_etages WHERE code_original IS NOT NULL ) + ORDER BY NO_FICHE; + + -- Attention, double définition de lits sur un étage + DROP TABLE IF EXISTS w_LITS; + CREATE TEMP TABLE w_LITS AS + SELECT * + FROM prod_dai.LITS + ; + + UPDATE w_LITS + SET NUMERO = w_LITS.NUMERO || '-' || w_LITS.NO_FICHE + FROM + ( + SELECT PAVILLON, NUMERO, MAX(CASE WHEN INACTIF = 'false' THEN NO_FICHE ELSE 0 END) AS OK_FICHE + FROM w_LITS + GROUP BY 1,2 + HAVING count(*) > 1 + ) SUBVIEW + WHERE w_LITS.PAVILLON = subview.PAVILLON AND + w_LITS.NUMERO = subview.NUMERO AND + w_LITS.NO_FICHE <> subview.OK_FICHE + ; + + UPDATE activite[PX].t_lits SET + code = NUMERO, + texte = NUMERO, + texte_court = NUMERO, + etage_id = t_etages.oid + FROM w_LITS LITS, activite[PX].t_etages + WHERE + NO_FICHE::bigint = t_lits.code_original + AND PAVILLON::bigint = t_etages.code_original; + + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT NO_FICHE, NUMERO, NUMERO, NUMERO, t_etages.oid, CASE WHEN CH_PART = 'true' THEN 'O' ELSE 'N' END AS CHAS_IND_CP + FROM w_LITS LITS, activite[PX].t_etages + WHERE + PAVILLON = t_etages.code_original + AND NO_FICHE::bigint NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL ); + + -- Anciennes versions d'étages par lit (pas d'exemple dans la base de prod) + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT code_original || '-0' , '', 'Non renseigné', 'Non renseigné', oid, 'O' + FROM activite[PX].t_etages + WHERE + code_original || '-0' NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL ); + + UPDATE activite[PX].t_lits SET code = '*****' WHERE code = ''; + ]]> + + + + t_protocoles.code OR FAVO_LIBELLE <> t_protocoles.texte); +-- +-- +-- INSERT INTO activite[PX].t_protocoles(oid, code_original, code, texte, texte_court) +-- SELECT 0, 0, '***', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_protocoles); +-- +-- INSERT INTO activite[PX].t_protocoles(code_original, code, texte, texte_court) +-- SELECT FAVO_ID_FAVO::bigint, FAVO_CODE, FAVO_LIBELLE, FAVO_LIBELLE +-- FROM prod_dai.SAD_FAVORIS +-- WHERE FAVO_ID_FAVO IN (SELECT LFAC_ID_FAVO FROM prod_dai.FAC_LIGNE_FACTURE GROUP BY 1) AND +-- FAVO_ID_FAVO::bigint NOT IN (SELECT code_original FROM activite[PX].t_protocoles) +-- ORDER BY FAVO_CODE; +-- + + + + ]]> + + + + + + + + + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.date_groupage, + p_sejours.ghs_id, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour, + + 0::numeric AS delai_groupage, + 0::numeric AS delai_facture, + 0::numeric AS delai_expedition, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_solde_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_solde_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_solde_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_22 + + FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY 1,2,3,4,5; + + + UPDATE activite[PX].p_sejours + SET date_groupage = date_facture + WHERE (date_groupage IS null OR date_groupage = '20991231' OR date_groupage = '00010101') AND + date_facture <> '2099-12-31'; + + + UPDATE w_sejours_total SET + date_groupage = CASE WHEN date_groupage > '00010101' THEN date_groupage ELSE '20991231' END, + date_facture = CASE WHEN date_facture> '00010101' THEN date_facture ELSE '20991231' END, + date_expedition = CASE WHEN date_expedition > '00010101' THEN date_expedition ELSE '20991231' END, + date_solde = CASE WHEN date_solde > '00010101' THEN date_solde ELSE '20991231' END, + date_expedition_0 = CASE WHEN date_expedition_0 > '00010101' THEN date_expedition_0 ELSE '20991231' END, + date_solde_0 = CASE WHEN date_solde_0 > '00010101' THEN date_solde_0 ELSE '20991231' END, + date_expedition_1 = CASE WHEN date_expedition_1 > '00010101' THEN date_expedition_1 ELSE '20991231' END, + date_solde_1 = CASE WHEN date_solde_1 > '00010101' THEN date_solde_1 ELSE '20991231' END, + date_expedition_2 = CASE WHEN date_expedition_2 > '00010101' THEN date_expedition_2 ELSE '20991231' END, + date_solde_2 = CASE WHEN date_solde_2 > '00010101' THEN date_solde_2 ELSE '20991231' END, + date_expedition_22 = CASE WHEN date_expedition_22 > '00010101' THEN date_expedition_22 ELSE '20991231' END, + date_solde_22 = CASE WHEN date_solde_22 > '00010101' THEN date_solde_22 ELSE '20991231' END; + + + UPDATE w_sejours_total SET + delai_groupage = LEAST(99999,CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END), + delai_facture = LEAST(99999,CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END), + delai_expedition = LEAST(99999,CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END), + delai_solde = LEAST(99999,CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END), + delai_expedition_0 = LEAST(99999,CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END), + delai_solde_0 = LEAST(99999,CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END), + delai_expedition_1 = LEAST(99999,CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END), + delai_solde_1 = LEAST(99999,CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END), + delai_expedition_2 = LEAST(99999,CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END), + delai_solde_2 = LEAST(99999,CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END), + delai_expedition_22 = LEAST(99999,CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END), + delai_solde_22 = LEAST(99999,CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END); + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = w_sejours_total.date_expedition_0, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = w_sejours_total.date_expedition_1, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = w_sejours_total.date_expedition_2, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = w_sejours_total.date_expedition_22, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour, + + + delai_groupage = w_sejours_total.delai_groupage, + delai_facture = w_sejours_total.delai_facture, + delai_expedition = w_sejours_total.delai_expedition, + delai_solde = w_sejours_total.delai_solde, + delai_expedition_0 = w_sejours_total.delai_expedition_0, + delai_solde_0 = w_sejours_total.delai_solde_0, + delai_expedition_1 = w_sejours_total.delai_expedition_1, + delai_solde_1 = w_sejours_total.delai_solde_1, + delai_expedition_2 = w_sejours_total.delai_expedition_2, + delai_solde_2 = w_sejours_total.delai_solde_2, + delai_expedition_22 = w_sejours_total.delai_expedition_22, + delai_solde_22 = w_sejours_total.delai_solde_22 + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM w_sejours_total.date_expedition_0 OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM w_sejours_total.date_expedition_1 OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM w_sejours_total.date_expedition_2 OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM w_sejours_total.date_expedition_22 OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour OR + + p_sejours.delai_groupage IS DISTINCT FROM w_sejours_total.delai_groupage OR + p_sejours.delai_facture IS DISTINCT FROM w_sejours_total.delai_facture OR + p_sejours.delai_expedition IS DISTINCT FROM w_sejours_total.delai_expedition OR + p_sejours.delai_solde IS DISTINCT FROM w_sejours_total.delai_solde OR + p_sejours.delai_expedition_0 IS DISTINCT FROM w_sejours_total.delai_expedition_0 OR + p_sejours.delai_solde_0 IS DISTINCT FROM w_sejours_total.delai_solde_0 OR + p_sejours.delai_expedition_1 IS DISTINCT FROM w_sejours_total.delai_expedition_1 OR + p_sejours.delai_solde_1 IS DISTINCT FROM w_sejours_total.delai_solde_1 OR + p_sejours.delai_expedition_2 IS DISTINCT FROM w_sejours_total.delai_expedition_2 OR + p_sejours.delai_solde_2 IS DISTINCT FROM w_sejours_total.delai_solde_2 OR + p_sejours.delai_expedition_22 IS DISTINCT FROM w_sejours_total.delai_expedition_22 OR + p_sejours.delai_solde_22 IS DISTINCT FROM w_sejours_total.delai_solde_22 + + ); + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_sejours_total CASCADE; + + + ]]> + + + + + = date_entree + AND date_sortie < '2099-12-31'::date + GROUP BY 2 + ORDER BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'c_postaux', code_postal_id + FROM activite[PX].p_sejours + WHERE code_postal_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'c_postaux') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'medecin_s', medecin_sejour_id + FROM activite[PX].p_sejours + WHERE medecin_sejour_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'medecin_s') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'medecin_s', medecin_sejour_id + FROM activite[PX].p_mouvements_sejour + WHERE medecin_sejour_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'medecin_s') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'ghs', ghs_id + FROM activite[PX].p_sejours + WHERE ghs_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'ghs') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'ghs', ghs_id + FROM activite[PX].p_factures + WHERE ghs_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'ghs') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'medecin_x', medecin_facture_id + FROM activite[PX].p_factures_lignes_h + WHERE medecin_facture_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'medecin_x') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'rubrique_c', rubrique_facturation_id + FROM activite[PX].p_factures_lignes_c WHERE rubrique_facturation_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'rubrique_c') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'rubrique_c', rubrique_comptabilisation_id + FROM activite[PX].p_factures_lignes_c WHERE rubrique_comptabilisation_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'rubrique_c') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'rubrique_c', rubrique_comptabilisee_id + FROM activite[PX].p_factures_soldes_c WHERE rubrique_comptabilisee_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'rubrique_c') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'prestation_c', prestation_id + FROM activite[PX].p_factures_lignes_c WHERE prestation_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'prestation_c') + GROUP BY 2; + + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'prestation_c', prestation_id + FROM activite[PX].p_factures_soldes_c WHERE prestation_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'prestation_c') + GROUP BY 2; + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'prestation_c', prestation_id + FROM activite[PX].p_factures_encours_lignes_c WHERE prestation_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'prestation_c') + GROUP BY 2; + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'prestation_h', prestation_id + FROM activite[PX].p_factures_lignes_h WHERE prestation_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'prestation_h') + GROUP BY 2; + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'acte_h', acte_id + FROM activite[PX].p_factures_lignes_h WHERE acte_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'acte_h') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'protocole_h', protocole_id + FROM activite[PX].p_factures_lignes_h WHERE protocole_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'protocole_h') + GROUP BY 2; + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'tiers_payant', tiers_payant_0_id + FROM activite[PX].p_factures WHERE tiers_payant_0_id <> 0 AND tiers_payant_0_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'tiers_payant') + GROUP BY 2; + + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'tiers_payant', tiers_payant_1_id + FROM activite[PX].p_factures WHERE tiers_payant_1_id <> 0 AND tiers_payant_1_id NOT IN (SELECT oid + FROM activite[PX].p_oids WHERE code_table = 'tiers_payant') + GROUP BY 2; + + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'tiers_payant', tiers_payant_2_id + FROM activite[PX].p_factures WHERE tiers_payant_2_id <> 0 AND tiers_payant_2_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'tiers_payant') + GROUP BY 2; + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'tiers_payant', tiers_payant_22_id + FROM activite[PX].p_factures WHERE tiers_payant_22_id <> 0 AND tiers_payant_22_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'tiers_payant') + GROUP BY 2; + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'mode_traitement', t_services_facturation.mode_traitement_id + FROM activite[PX].t_lieux JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE + t_services_facturation.mode_traitement_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'mode_traitement' AND oid IS NOT NULL) AND t_services_facturation.mode_traitement_id IS NOT NULL + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'lit', lit_id + FROM activite[PX].t_lieux WHERE lit_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'lit') + GROUP BY 2; + + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'service', service_facturation_id + FROM activite[PX].t_lieux WHERE service_facturation_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'service') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'etage', etage_id + FROM activite[PX].t_lieux, activite[PX].t_lits WHERE lit_id = t_lits.oid AND etage_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'etage') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'gme', gme_id + FROM activite[PX].p_sejours + WHERE gme_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'gme') + GROUP BY 2; + + + + ]]> + + + + + + + + + + + + + + + + + + + + diff --git a/import_activite/iCTI_import_activite_EDLXPLORE.XML b/import_activite/iCTI_import_activite_EDLXPLORE.XML new file mode 100644 index 0000000..eb51915 --- /dev/null +++ b/import_activite/iCTI_import_activite_EDLXPLORE.XML @@ -0,0 +1,3323 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + '' + AND h_person.er_qua_ss NOT IN( + SELECT + code FROM base.t_specialites_medecin) + GROUP BY 1, 3; + + INSERT INTO activite[PX].t_specialites_medecin(oid, code, code_original, texte, texte_court) + SELECT 0, '', '0', 'Non saisie', 'Non saisie' + WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_specialites_medecin); + + INSERT INTO activite[PX].t_specialites_medecin (code, code_original, texte, texte_court) + SELECT + h_person.er_qua_ss, + h_person.er_qua_ss, + h_person.er_qualif, + h_person.er_qualif + FROM prod_edlxplore.h_person + WHERE 1=1 + AND h_person.er_qua_ss <> '' + AND h_person.er_qua_ss NOT IN( + SELECT + code FROM activite[PX].t_specialites_medecin) + GROUP BY 1, 3; + + INSERT INTO base.t_medecins(oid, nom, prenom, numero_ordre, specialite_id ) + SELECT 0, 'Non renseigne', '', '', 0 WHERE 0 NOT IN (SELECT oid FROM base.t_medecins); + + INSERT INTO activite[PX].t_medecins_administratifs(oid, code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT 0, '0', '****', 'Non renseigne', '', 0, 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_medecins_administratifs); + + + DROP TABLE IF EXISTS w_medecins_source; + CREATE TEMP TABLE w_medecins_source AS + SELECT + *, + er_rpps AS rpps, + er_qua_ss AS specialite + FROM + prod_edlxplore.h_person + WHERE 1=1 + AND er_codper IN ( + SELECT + em_codtit FROM prod_edlxplore.H_DEMAND + ); + + DROP TABLE IF EXISTS w_medecins; + CREATE TEMP TABLE w_medecins AS + SELECT + er_codper::text, + er_codper::text AS mede_code, + base.cti_soundex_nom(w_medecins_source.er_nomage) AS nom_soundex, + base.cti_soundex_nom(COALESCE(w_medecins_source.er_pnoage, '')) AS prenom_soundex, + w_medecins_source.er_nomage AS nom, + COALESCE(w_medecins_source.er_pnoage, '') AS prenom, + COALESCE(w_medecins_source.rpps, '') AS RPPS, + COALESCE(w_medecins_source.specialite, '') AS SPECIALITE, + COALESCE(t_medecins_administratifs.medecin_id, 0) AS medecin_id, + er_numpra as no_adeli + FROM + w_medecins_source + LEFT JOIN activite[PX].t_medecins_administratifs ON t_medecins_administratifs.code_original = w_medecins_source.specialite::text; + + + INSERT INTO base.t_medecins (nom, prenom, numero_ordre, specialite_id) + SELECT + nom, + prenom, + rpps, + specialite_id + FROM ( + SELECT + nom, + prenom, + SUBSTR(nom_soundex, 1, 8) AS nom_soundex, + SUBSTR(prenom_soundex, 1, 8) AS prenom_soundex, + rpps, + coalesce(t_specialites_medecin.oid, 0) AS specialite_id + FROM + w_medecins + LEFT JOIN base.t_specialites_medecin ON t_specialites_medecin.code = w_medecins.specialite) subview + WHERE + subview.nom_soundex || ',' || subview.prenom_soundex || ',' || subview.rpps NOT IN( + SELECT + substr(base.cti_soundex_nom (nom), 1, 8) || ',' || substr(base.cti_soundex_nom (prenom), 1, 8) || ',' || numero_ordre FROM base.t_medecins); + + UPDATE + w_medecins + SET + medecin_id = subview.medecin_id + FROM ( + SELECT + substr(base.cti_soundex_nom (nom), 1, 8) AS nom, + substr(base.cti_soundex_nom (prenom), 1, 8) AS prenom, + numero_ordre, + MIN(oid) AS medecin_id + FROM + base.t_medecins + GROUP BY + 1, + 2, + 3) subview + WHERE + SUBSTR(nom_soundex, 1, 8) = subview.nom + AND SUBSTR(prenom_soundex, 1, 8) = subview.prenom + AND rpps = subview.numero_ordre + AND w_medecins.medecin_id = 0; + + UPDATE + w_medecins + SET + medecin_id = subview.medecin_id + FROM ( + SELECT + base.cti_soundex_nom (nom) AS nom, + base.cti_soundex_nom (prenom) AS prenom, + MIN(oid) AS medecin_id + FROM + base.t_medecins + GROUP BY + 1, + 2) subview + WHERE + SUBSTR(nom_soundex, 1, 8) = subview.nom + AND SUBSTR(prenom_soundex, 1, 8) = subview.prenom + AND w_medecins.medecin_id = 0; + + INSERT INTO activite[PX].t_medecins_administratifs (code_original, code, nom, prenom, specialite_id, medecin_id, no_adeli) + SELECT DISTINCT + er_codper::text, + er_codper::text, + nom, + prenom, + COALESCE(t_specialites_medecin.oid::bigint, 0), + medecin_id, + no_adeli + FROM + w_medecins + LEFT JOIN base.t_specialites_medecin ON t_specialites_medecin.code_original = specialite + WHERE + er_codper::text NOT IN( + SELECT + code_original FROM activite[PX].t_medecins_administratifs); + + UPDATE + activite[PX].t_medecins_administratifs + SET + nom = w_medecins.nom, + prenom = w_medecins.prenom, + specialite_id = COALESCE(t_specialites_medecin.oid, t_specialites_medecin_2.oid, 0), + medecin_id = w_medecins.medecin_id + FROM + w_medecins + LEFT JOIN base.t_specialites_medecin ON t_specialites_medecin.code = specialite || '..' + LEFT JOIN base.t_specialites_medecin t_specialites_medecin_2 ON t_specialites_medecin_2.code = specialite + WHERE + w_medecins.er_codper::text = t_medecins_administratifs.code_original + AND(t_medecins_administratifs.nom <> w_medecins.nom + OR t_medecins_administratifs.prenom <> w_medecins.prenom + OR t_medecins_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid, t_specialites_medecin_2.oid, 0) + OR t_medecins_administratifs.medecin_id <> w_medecins.medecin_id); + + UPDATE activite[PX].t_medecins_administratifs + SET specialite_id = subview.specialite_medecin_id + FROM + ( + SELECT t_medecins_administratifs.oid,t_specialites_medecin.oid AS specialite_medecin_id + FROM activite[PX].t_medecins_administratifs + JOIN base.t_specialites_medecin t_specialites_medecin_2 ON specialite_id = t_specialites_medecin_2.oid + JOIN base.t_specialites_medecin ON t_specialites_medecin_2.code || '..' = t_specialites_medecin.code + ) subview + WHERE t_medecins_administratifs.oid = subview.oid; + + UPDATE + base.t_medecins + SET + specialite_id = subview.specialite_id + FROM ( + SELECT + t_medecins.oid, + MIN(t_medecins_administratifs.specialite_id) AS specialite_id + FROM + base.t_medecins, + activite[PX].t_medecins_administratifs, + base.t_specialites_medecin + WHERE + t_medecins.oid = t_medecins_administratifs.medecin_id + AND t_medecins_administratifs.specialite_id = t_specialites_medecin.oid + GROUP BY + t_medecins.oid) subview + WHERE + t_medecins.oid = subview.oid + AND t_medecins.specialite_id IS DISTINCT FROM subview.specialite_id + AND t_medecins.oid <> 0 + AND t_medecins.specialite_id = 0; + ]]> + + + + + '' + AND EM_NATURE NOT IN (SELECT code FROM activite[PX].t_activites) + GROUP BY 1; + + -- Etages et lits (SOCIETE) + + INSERT INTO activite[PX].t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigne', 'Non renseigne', 0 + WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_etages); + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT + un_codser, + un_codser, + un_lib30, + un_lib30, + 0 + FROM prod_edlxplore.h_unit + WHERE un_codser <> '' AND un_codser NOT IN (SELECT code FROM activite[PX].t_etages) + GROUP BY 1, 3 + ; + + INSERT INTO activite[PX].t_lits(oid, code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT 0, '', '***', 'Non renseigne', 'Non renseigne', 0, 'N' + WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_lits) + ; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT code_original || '-0' , '', 'Non renseigne', 'Non renseigne', oid, 'N' + FROM activite[PX].t_etages + WHERE oid > 0 AND + code_original || '-0' NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL) + ; + + ]]> + + + + + '' + AND UPPER(za_cod_acte) + NOT IN( + SELECT + code FROM base.t_actes + WHERE + code IS NOT NULL) + GROUP BY + 1; + + + INSERT INTO activite[PX].t_compte(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseigne', 'Non renseigne' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_compte); + + + INSERT INTO activite[PX].t_compte (code_original, code, texte, texte_court) + SELECT + mc_numcpt, + mc_numcpt, + mc_numcpt, + mc_numcpt + FROM + prod_edlxplore.h_mvtcpt + WHERE + mc_numcpt <> '' + AND mc_numcpt NOT IN( + SELECT + code FROM activite[PX].t_compte + WHERE + code IS NOT NULL) + GROUP BY + 1 + ORDER BY + 1; + ]]> + + + + + + + + + + + + + = '[ENV_ADM_ANNEEDEBUT]0101' THEN 'OK' ELSE ''::text END AS OK + FROM prod_edlxplore.H_DEMAND + WHERE EM_CODSIT <> 'XA' + ; + + ANALYSE w_H_DEMAND_select + ; + + UPDATE w_H_DEMAND_select + SET OK = 'OK' + WHERE OK = '' AND + EM_NUMDEM IN (SELECT HF_NUMDEM FROM prod_edlxplore.H_HISFAC WHERE HF_DATFAC >= '[ENV_ADM_ANNEEDEBUT]0101') + ; + + UPDATE w_H_DEMAND_select + SET OK = 'OK' + WHERE OK = '' AND + EM_NUMDEM IN (SELECT GG_NUMDEM FROM prod_edlxplore.H_REGLEM WHERE GG_DATREG >= '[ENV_ADM_ANNEEDEBUT]0101') + ; + + UPDATE w_H_DEMAND_select + SET OK = 'OK' + WHERE OK = '' AND + EM_NUMDEM IN (SELECT MC_TABIDX FROM prod_edlxplore.H_MVTCPT WHERE MC_PERIODE >= '[ENV_ADM_ANNEEDEBUT]0101') + ; + + DELETE FROM w_H_DEMAND_select + WHERE OK = '' + ; + + VACUUM FULL ANALYSE w_H_DEMAND_select + ; + ]]> + + + + + '' AND + left(H_PATIEN.AT_NJFPAT,1) BETWEEN 'A' AND 'Z' AND + length(AT_NJFPAT) > 2 AND + H_PATIEN.AT_NJFPAT <> H_PATIEN.AT_NOMPAT AND + w_H_PATIEN_numper.AT_NUMPER IS NULL + GROUP BY 1,2,3,4 + ; + + -- Si pas de NIP, creation numero provisoire + UPDATE w_H_PATIEN_numper + SET AT_NUMPER = subview.AT_NUMPER + FROM + ( + SELECT + AT_NOMPAT, + AT_PNOPAT, + AT_DATNAI, + AT_SEXE, + 'Z'::text || to_char(AT_DATNAI,'YYMMDD') || AT_SEXE::text || to_char(rank() OVER (PARTITION BY to_char(AT_DATNAI,'YYMMDD'), AT_SEXE ORDER BY AT_NOMPAT, AT_PNOPAT),'FM990') AS AT_NUMPER + FROM w_H_PATIEN_numper + WHERE AT_NUMPER = '' + ) subview + WHERE subview.AT_NOMPAT = w_H_PATIEN_numper.AT_NOMPAT AND + subview.AT_PNOPAT = w_H_PATIEN_numper.AT_PNOPAT AND + subview.AT_DATNAI = w_H_PATIEN_numper.AT_DATNAI AND + subview.AT_SEXE = w_H_PATIEN_numper.AT_SEXE AND + w_H_PATIEN_numper.AT_NUMPER = '' + ; + + + UPDATE prod_edlxplore.H_PATIEN + SET AT_NUMPER = w_H_PATIEN_numper.AT_NUMPER + FROM w_H_PATIEN_numper + WHERE H_PATIEN.AT_NUMPER = '' AND + w_H_PATIEN_numper.AT_NUMPER <> '' AND + H_PATIEN.AT_NOMPAT = w_H_PATIEN_numper.AT_NOMPAT AND + H_PATIEN.AT_PNOPAT = w_H_PATIEN_numper.AT_PNOPAT AND + H_PATIEN.AT_DATNAI = w_H_PATIEN_numper.AT_DATNAI AND + H_PATIEN.AT_SEXE = w_H_PATIEN_numper.AT_SEXE + ; + + UPDATE prod_edlxplore.H_PATIEN + SET AT_NUMPER = w_H_PATIEN_numper.AT_NUMPER + FROM w_H_PATIEN_numper + WHERE H_PATIEN.AT_NUMPER = '' AND + w_H_PATIEN_numper.AT_NUMPER <> '' AND + H_PATIEN.AT_NJFPAT = w_H_PATIEN_numper.AT_NOMPAT AND + H_PATIEN.AT_PNOPAT = w_H_PATIEN_numper.AT_PNOPAT AND + H_PATIEN.AT_DATNAI = w_H_PATIEN_numper.AT_DATNAI AND + H_PATIEN.AT_SEXE = w_H_PATIEN_numper.AT_SEXE + ; + + + TRUNCATE activite[PX].p_patients + ; + + INSERT INTO activite[PX].p_patients (no_patient, nom, nom_naissance, prenom, date_naissance, code_sexe) + SELECT + AT_NUMPER, + (MAX(ARRAY[AT_NUMDOS,AT_NOMPAT]))[2], + (MAX(ARRAY[AT_NUMDOS,AT_PNOPAT]))[2], + (MAX(ARRAY[AT_NUMDOS,AT_NJFPAT]))[2], + date(MAX(AT_DATNAI)), + MAX(CASE WHEN AT_SEXE = 0 THEN '2' ELSE '1' END) AS sexe + FROM prod_edlxplore.H_PATIEN + WHERE AT_NUMDOS IN (SELECT EM_NUMDOS FROM w_H_DEMAND_select) + GROUP BY 1 + ; + ]]> + + + + + COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + activite_id = COALESCE(t_activites.oid,0) + FROM activite[PX].t_activites + WHERE code_original_2 = t_activites.code_original AND + t_lieux.activite_id <> COALESCE(t_activites.oid,0) + ; + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM activite[PX].t_lits + WHERE code_original_4||'-'||'0' = t_lits.code_original + AND lit_id <> COALESCE(t_lits.oid,0) + ; + + UPDATE activite[PX].t_lieux SET + unite_medicale_id = COALESCE(t_unites_medicales.oid,0) + FROM activite[PX].t_unites_medicales + WHERE code_original_5 = t_unites_medicales.code_original + AND unite_medicale_id <> COALESCE(t_unites_medicales.oid,0) + ; + + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0) + ; + + + -- Sejours + DROP TABLE IF EXISTS w_sejours; + + CREATE TEMP TABLE w_sejours AS + SELECT + H_DEMAND.em_numdem AS no_sejour, + H_DEMAND.em_numdem AS code_original, + H_PATIEN.AT_NUMPER AS no_patient, + H_DEMAND.em_DATARR AS date_entree, + REPLACE(H_DEMAND.em_HEUARR, ':', '') || '00' AS heure_entree, + H_DEMAND.em_DATARR AS date_sortie, + REPLACE(H_DEMAND.em_HEUARR, ':', '') || '00' AS heure_sortie, + CASE WHEN H_PATIEN.at_prefix ILIKE 'Mr%' THEN '1' ELSE '2' END AS code_sexe , + EXTRACT(YEAR FROM AGE(H_PATIEN.at_datnai)) AS age, + 1 AS code_sorti, + 0 AS code_prevu, + CASE em_etape WHEN 'S' THEN '9'::text ELSE '3'::text END AS type_sejour, + COALESCE(t_codes_postaux.oid,0) AS code_postal_id, + CASE WHEN t_sejour.medecin_sejour_id <> 0 THEN t_sejour.medecin_sejour_id ELSE COALESCE(t_medecins_administratifs.oid,0) END AS medecin_sejour_id, + 0 as ghm_id, + 0 AS ghs_id, + '20991231'::date AS date_groupage, + 0::numeric AS code_cp_demandee, + 0 AS mode_traitement_id, + CASE WHEN em_codser IN ('EXT', '') THEN '8'::character(1) ELSE '0'::character(1) END AS mode_entree, + '0'::character(1) AS provenance, + CASE WHEN em_codser IN ('EXT', '') THEN '8'::character(1) ELSE '0'::character(1) END AS mode_sortie, + '0'::character(1) AS destination, + COALESCE(t_tiers_payant_0.oid, 0) AS tiers_payant_0_id, + COALESCE(t_tiers_payant_1.oid, 0) AS tiers_payant_1_id, + COALESCE(t_tiers_payant_2.oid, 0) AS tiers_payant_2_id, + 0 AS tiers_payant_22_id, + 0 AS est_budget_global, + em_finess AS finess, + CASE WHEN t_sejour.est_ignore = '1' THEN 'I' ELSE '' END AS etat, + em_codsit as service_facturation, + em_codsit as uf, + COALESCE(t_lieux.oid, 0) as lieu_sortie_id + FROM w_H_DEMAND_select H_DEMAND + JOIN prod_edlxplore.H_PATIEN ON H_PATIEN.at_numdos = H_DEMAND.em_numdos + LEFT JOIN base.t_codes_postaux ON H_PATIEN.at_codpos = t_codes_postaux.code + LEFT JOIN activite[PX].t_medecins_administratifs ON t_medecins_administratifs.code_original = H_DEMAND.em_codtit + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_1 ON H_DEMAND.em_numcai::text || 'C' = t_tiers_payant_1.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON H_DEMAND.em_nummut::text || 'M' = t_tiers_payant_2.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_0 ON t_tiers_payant_0.code_original = 'PATIENT' + LEFT JOIN activite.t_sejour ON t_sejour.no_sejour = H_DEMAND.em_numdem + LEFT JOIN activite[PX].t_lieux ON + t_lieux.code_original_1 = H_DEMAND.EM_CODSIT AND + t_lieux.code_original_2 = H_DEMAND.EM_NATURE AND + t_lieux.code_original_4 = H_DEMAND.EM_CODSER AND + t_lieux.code_original_5 = H_DEMAND.EM_CODSER AND + t_lieux.code_original_6 = H_DEMAND.EM_CODSER + ; + + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_13'); + + + INSERT INTO activite[PX].p_sejours ( + no_sejour, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + code_postal_id, + medecin_sejour_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + ghm_id, + ghs_id, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + est_budget_global, + finess, + etat, + lieu_sortie_id + ) + SELECT + w_sejours.no_sejour, + w_sejours.code_original, + w_sejours.no_patient, + w_sejours.date_entree, + w_sejours.heure_entree::numeric, + w_sejours.date_sortie, + w_sejours.heure_sortie::numeric, + w_sejours.code_sexe::char(1), + w_sejours.age, + w_sejours.code_sorti, + w_sejours.code_prevu, + w_sejours.type_sejour::char(1), + w_sejours.code_postal_id, + w_sejours.medecin_sejour_id, + w_sejours.date_groupage, + w_sejours.code_cp_demandee, + w_sejours.mode_traitement_id, + w_sejours.mode_entree::char(1), + w_sejours.provenance::char(1), + w_sejours.mode_sortie::char(1), + w_sejours.destination::char(1), + w_sejours.ghm_id, + w_sejours.ghs_id, + w_sejours.tiers_payant_0_id, + w_sejours.tiers_payant_1_id, + w_sejours.tiers_payant_2_id, + w_sejours.tiers_payant_22_id, + w_sejours.est_budget_global, + w_sejours.finess, + w_sejours.etat, + w_sejours.lieu_sortie_id + FROM w_sejours + ; + + ANALYSE activite[PX].p_sejours + ; + + -- recreation index + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_13'); + + + -- assurance + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_4'); + + INSERT INTO activite[PX].p_sejours_assurance (sejour_id, tiers_payant_0_id, tiers_payant_1_id, matricule_1, tiers_payant_2_id, matricule_2, tiers_payant_22_id, matricule_22) + SELECT + oid AS sejour_id, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + at_numss, + p_sejours.tiers_payant_2_id, + '', + p_sejours.tiers_payant_22_id, + ''::text AS matricule_22 + FROM + activite[PX].p_sejours + LEFT JOIN prod_edlxplore.H_PATIEN ON H_PATIEN.at_numdos = p_sejours.no_patient + WHERE + p_sejours.etat = ''; + + + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_4'); + ]]> + + + + + = heure_debut + ORDER BY + no_sejour; + + + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_5'); + + ANALYSE activite[PX].p_mouvements_sejour + ; + ]]> + + + + + + + + + 0 THEN 1 ELSE -1 END AS sens_facture, + 0::numeric AS rang + FROM prod_edlxplore.H_MVTCPT + JOIN w_H_DEMAND_select ON MC_TABIDX = EM_NUMDEM + JOIN activite[PX].p_sejours ON MC_TABIDX = no_sejour + WHERE MC_NUMCPT NOT LIKE '41%' AND + MC_CODJRN LIKE 'VENTE%' AND + MC_TABIDX NOT IN (SELECT HF_NUMDEM FROM w_H_HISFAC) + GROUP BY MC_NUMPIECE, MC_CATECR, MC_PERIODE, MC_NUMFAC, MC_TABIDX, EM_DATARR, MC_TYPECR + HAVING SUM(CASE WHEN MC_NUMCPT NOT LIKE '41%' THEN MC_MTCREDIT - MC_MTDEBIT ELSE 0 END) <> 0 + ; + + ANALYSE w_H_HISFAC_autre + ; + + + UPDATE w_H_HISFAC_autre SET + HF_DATENV = date(subview.B6_DATENV), + HF_NUMBOT = subview.D6_NUMBOT + FROM + ( + SELECT HF_NUM_HF, + MAX(B6_DATENV) AS B6_DATENV, + (MAX(ARRAY[B6_DATENV::text, D6_NUMBOT]))[2] AS D6_NUMBOT + FROM prod_edlxplore.H_DET615 + JOIN prod_edlxplore.H_BORD615 ON D6_NUMBOT = B6_NUMBOT + JOIN w_H_HISFAC_autre ON D6_NUMDEM = HF_NUMDEM + GROUP BY 1 + ) subview + WHERE w_h_HISFAC_autre.HF_NUM_HF = subview.HF_NUM_HF + ; + + + DROP TABLE IF EXISTS w_H_HISFAC_ord; + CREATE TEMP TABLE w_H_HISFAC_ord AS + SELECT *, + row_number() OVER(PARTITION BY HF_NUMDEM ORDER BY MC_NUMPIECE, HF_DATFAC) AS HF_NUMORD, + COALESCE(lead(MC_NUMPIECE) OVER (PARTITION BY HF_NUMDEM ORDER BY MC_NUMPIECE, HF_DATFAC),'Z99999999999') AS MC_NUMPIECE_next + FROM + ( + SELECT HF_NUMDEM, MC_NUMPIECE, HF_DATFAC, MC_TYPECR + FROM w_H_HISFAC_autre + WHERE MC_TYPECR = 'Facture' + GROUP BY 1,2,3,4 + ) subview + ; + + ANALYSE w_H_HISFAC_ord + ; + + INSERT INTO w_H_HISFAC_ord + SELECT w_H_HISFAC_autre.HF_NUMDEM, w_H_HISFAC_autre.MC_NUMPIECE, w_H_HISFAC_autre.HF_DATFAC, w_H_HISFAC_autre.MC_TYPECR, MAX(w_H_HISFAC_ord.HF_NUMORD), ''::text + FROM w_H_HISFAC_autre + LEFT JOIN w_H_HISFAC_ord ON w_H_HISFAC_autre.HF_NUMDEM = w_H_HISFAC_ord.HF_NUMDEM AND + w_H_HISFAC_autre.MC_NUMPIECE > w_H_HISFAC_ord.MC_NUMPIECE AND + w_H_HISFAC_autre.MC_NUMPIECE < w_H_HISFAC_ord.MC_NUMPIECE_next + WHERE w_H_HISFAC_autre.MC_TYPECR = 'Avoir' + GROUP BY 1,2,3,4 + ; + + UPDATE w_H_HISFAC_autre + SET HF_NUMORD = w_H_HISFAC_ord.HF_NUMORD + FROM w_H_HISFAC_ord + WHERE w_H_HISFAC_autre.MC_NUMPIECE = w_H_HISFAC_ord.MC_NUMPIECE + ; + + UPDATE w_H_HISFAC_autre SET + HF_IDFAC = HF_IDFAC || '.' || to_char(HF_NUMORD,'FM990') || CASE WHEN sens_facture < 0 THEN 'A' ELSE '' END + ; + + + -- Ajout des factures + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_14'); + + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + date_solde, + montant_facture_c, + montant_facture_h, + montant_regle_c, + montant_regle_h, + delai_facture, + delai_solde, + date_expedition, + delai_expedition, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + ghs_id, + particularite_t2a, + code_cloture, + code_cp_demandee, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + nb_rejets, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour + ) + SELECT + p_sejours.oid AS sejour_id, + p_sejours.no_sejour, + HF_IDFAC AS no_facture, + p_sejours.date_entree AS date_debut, + p_sejours.date_sortie AS date_fin, + MAX(CASE WHEN H_HISFAC.sens_facture > 0 THEN '0'::text ELSE '1' END) AS type_facture, + '1'::text AS code_facture, + MAX(HF_DATFAC) AS date_facture, + '1'::text AS code_vente, + MAX(HF_DATFAC) as date_vente, + MAX(to_char(HF_DATFAC,'YYYYMM')::numeric) AS mois_vente, + '2099-12-31' AS date_solde, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END) AS montant_facture_c, + SUM(CASE WHEN HF_PART = 'H' THEN HF_FACTUR ELSE 0 END) AS montant_facture_h, + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + MAX(HF_DATENV) as date_expedition, + 0::numeric AS delai_expedition, + MAX(p_sejours.tiers_payant_0_id), + MAX(p_sejours.tiers_payant_1_id), + MAX(p_sejours.tiers_payant_2_id), + 0::bigint AS tiers_payant_22_id, + '2099-12-31' AS date_solde_0_c, + '2099-12-31' AS date_solde_0_h, + '2099-12-31' AS date_solde_1_c, + '2099-12-31' AS date_solde_1_h, + '2099-12-31' AS date_solde_2_c, + '2099-12-31' AS date_solde_2_h, + '2099-12-31' AS date_solde_22_c, + '2099-12-31' AS date_solde_22_h, + '2099-12-31' AS date_expedition_0, + MAX(HF_DATENV) AS date_expedition_1, + MAX(HF_DATENV) AS date_expedition_2, + '2099-12-31' AS date_expedition_22, + '0'::text AS code_expedie_0, + MAX(CASE WHEN HF_DATENV < '20991231' THEN '1'::text ELSE '0'::text END) AS code_expedie_1, + MAX(CASE WHEN HF_DATENV < '20991231' THEN '1'::text ELSE '0'::text END) AS code_expedie_2, + '0'::text AS code_expedie_22, + '' AS no_bordereau_0, + MAX(HF_NUMBOT) AS no_bordereau_1, + MAX(HF_NUMBOT) AS no_bordereau_2, + '' AS no_bordereau_22, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END * EM_TAUPAT / 100) AS montant_facture_0_c, + SUM(CASE WHEN HF_PART = 'H' THEN HF_FACTUR ELSE 0 END * EM_TAUPAT / 100) AS montant_facture_0_h, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END * EM_TAUCAI / 100) AS montant_facture_1_c, + SUM(CASE WHEN HF_PART = 'H' THEN HF_FACTUR ELSE 0 END * EM_TAUCAI / 100) AS montant_facture_1_h, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END * EM_TAUMUT / 100) AS montant_facture_2_c, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END * EM_TAUMUT / 100) AS montant_facture_2_h, + 0 AS montant_facture_22_c, + 0 AS montant_facture_22_h, + 0 AS montant_regle_0_c, + 0 AS montant_regle_0_h, + 0 AS montant_regle_1_c, + 0 AS montant_regle_1_h, + 0 AS montant_regle_2_c, + 0 AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + 0 AS delai_expedition_0, + 0 AS delai_expedition_1, + 0 AS delai_expedition_2, + 0 AS delai_expedition_22, + 0 AS delai_solde_0_c, + 0 AS delai_solde_0_h, + 0 AS delai_solde_1_c, + 0 AS delai_solde_1_h, + 0 AS delai_solde_2_c, + 0 AS delai_solde_2_h, + 0 AS delai_solde_22_c, + 0 AS delai_solde_22_h, + 0 AS ghs_id, + '' as particularite_t2a, + '0' as code_cloture, + '0' as code_cp_demandee, + 0 AS ghs_bebe1_id, + 0 AS ghs_bebe2_id, + 0 AS ghs_bebe3_id, + 0 AS montant_comptabilise_c, + 0 AS montant_comptabilise_h, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END * EM_TAUPAT / 100) AS montant_comptabilise_0_c, + SUM(CASE WHEN HF_PART = 'H' THEN HF_FACTUR ELSE 0 END * EM_TAUPAT / 100) AS montant_comptabilise_0_h, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END * EM_TAUCAI / 100) AS montant_comptabilise_1_c, + SUM(CASE WHEN HF_PART = 'H' THEN HF_FACTUR ELSE 0 END * EM_TAUCAI / 100) AS montant_comptabilise_1_h, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END * EM_TAUMUT / 100) AS montant_comptabilise_2_c, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END * EM_TAUMUT / 100) AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + 0::numeric AS nb_rejets, + 0, + 0 + FROM w_H_HISFAC H_HISFAC + JOIN activite[PX].p_sejours ON HF_NUMDEM = p_sejours.code_original + JOIN w_H_DEMAND_select H_DEMAND ON HF_NUMDEM = EM_NUMDEM + GROUP BY 1,2,3 + ; + + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + date_solde, + montant_facture_c, + montant_facture_h, + montant_regle_c, + montant_regle_h, + delai_facture, + delai_solde, + date_expedition, + delai_expedition, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + ghs_id, + particularite_t2a, + code_cloture, + code_cp_demandee, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + nb_rejets, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour + ) + SELECT + p_sejours.oid AS sejour_id, + p_sejours.no_sejour, + HF_IDFAC AS no_facture, + p_sejours.date_entree AS date_debut, + p_sejours.date_sortie AS date_fin, + MAX(CASE WHEN H_HISFAC.sens_facture > 0 THEN '0'::text ELSE '1' END) AS type_facture, + '1'::text AS code_facture, + MAX(HF_DATFAC) AS date_facture, + '1'::text AS code_vente, + MAX(HF_DATFAC) as date_vente, + MAX(to_char(HF_DATFAC,'YYYYMM')::numeric) AS mois_vente, + '2099-12-31' AS date_solde, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END) AS montant_facture_c, + SUM(CASE WHEN HF_PART = 'H' THEN HF_FACTUR ELSE 0 END) AS montant_facture_h, + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + MAX(HF_DATENV) as date_expedition, + 0::numeric AS delai_expedition, + MAX(p_sejours.tiers_payant_0_id), + MAX(p_sejours.tiers_payant_1_id), + MAX(p_sejours.tiers_payant_2_id), + 0::bigint AS tiers_payant_22_id, + '2099-12-31' AS date_solde_0_c, + '2099-12-31' AS date_solde_0_h, + '2099-12-31' AS date_solde_1_c, + '2099-12-31' AS date_solde_1_h, + '2099-12-31' AS date_solde_2_c, + '2099-12-31' AS date_solde_2_h, + '2099-12-31' AS date_solde_22_c, + '2099-12-31' AS date_solde_22_h, + '2099-12-31' AS date_expedition_0, + MAX(HF_DATENV) AS date_expedition_1, + MAX(HF_DATENV) AS date_expedition_2, + '2099-12-31' AS date_expedition_22, + '0'::text AS code_expedie_0, + MAX(CASE WHEN HF_DATENV < '20991231' THEN '1'::text ELSE '0'::text END) AS code_expedie_1, + MAX(CASE WHEN HF_DATENV < '20991231' THEN '1'::text ELSE '0'::text END) AS code_expedie_2, + '0'::text AS code_expedie_22, + '' AS no_bordereau_0, + MAX(HF_NUMBOT) AS no_bordereau_1, + MAX(HF_NUMBOT) AS no_bordereau_2, + '' AS no_bordereau_22, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END * EM_TAUPAT / 100) AS montant_facture_0_c, + SUM(CASE WHEN HF_PART = 'H' THEN HF_FACTUR ELSE 0 END * EM_TAUPAT / 100) AS montant_facture_0_h, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END * EM_TAUCAI / 100) AS montant_facture_1_c, + SUM(CASE WHEN HF_PART = 'H' THEN HF_FACTUR ELSE 0 END * EM_TAUCAI / 100) AS montant_facture_1_h, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END * EM_TAUMUT / 100) AS montant_facture_2_c, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END * EM_TAUMUT / 100) AS montant_facture_2_h, + 0 AS montant_facture_22_c, + 0 AS montant_facture_22_h, + 0 AS montant_regle_0_c, + 0 AS montant_regle_0_h, + 0 AS montant_regle_1_c, + 0 AS montant_regle_1_h, + 0 AS montant_regle_2_c, + 0 AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + 0 AS delai_expedition_0, + 0 AS delai_expedition_1, + 0 AS delai_expedition_2, + 0 AS delai_expedition_22, + 0 AS delai_solde_0_c, + 0 AS delai_solde_0_h, + 0 AS delai_solde_1_c, + 0 AS delai_solde_1_h, + 0 AS delai_solde_2_c, + 0 AS delai_solde_2_h, + 0 AS delai_solde_22_c, + 0 AS delai_solde_22_h, + 0 AS ghs_id, + '' as particularite_t2a, + '0' as code_cloture, + '0' as code_cp_demandee, + 0 AS ghs_bebe1_id, + 0 AS ghs_bebe2_id, + 0 AS ghs_bebe3_id, + 0 AS montant_comptabilise_c, + 0 AS montant_comptabilise_h, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END * EM_TAUPAT / 100) AS montant_comptabilise_0_c, + SUM(CASE WHEN HF_PART = 'H' THEN HF_FACTUR ELSE 0 END * EM_TAUPAT / 100) AS montant_comptabilise_0_h, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END * EM_TAUCAI / 100) AS montant_comptabilise_1_c, + SUM(CASE WHEN HF_PART = 'H' THEN HF_FACTUR ELSE 0 END * EM_TAUCAI / 100) AS montant_comptabilise_1_h, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END * EM_TAUMUT / 100) AS montant_comptabilise_2_c, + SUM(CASE WHEN HF_PART = 'F' THEN HF_FACTUR ELSE 0 END * EM_TAUMUT / 100) AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + 0::numeric AS nb_rejets, + 0, + 0 + FROM w_H_HISFAC_autre H_HISFAC + JOIN activite[PX].p_sejours ON HF_NUMDEM = p_sejours.code_original + JOIN w_H_DEMAND_select H_DEMAND ON HF_NUMDEM = EM_NUMDEM + GROUP BY 1,2,3 + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_14'); + + ANALYSE activite[PX].p_factures + ; + + -- Non facturees + DROP TABLE IF EXISTS w_factures_trous; + CREATE TEMP TABLE w_factures_trous AS + SELECT + p_sejours.finess, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour, + p_sejours.date_entree, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.code_cp_demandee, + COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire, + p_sejours.code_sorti, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie, + MAX(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END ELSE p_factures.date_fin END) AS date_fin_facture, + date(MAX(COALESCE(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 AND code_sorti = '1' THEN date_sortie ELSE p_factures.date_fin END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours + FROM activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND no_facture NOT LIKE 'E%' AND type_facture IS DISTINCT FROM 'P' + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE p_sejours.etat = '' AND p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND date_entree <= now() AND p_sejours.type_sejour <> '6' AND p_sejours.type_sejour <> '9' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12 + ; + + INSERT INTO activite[PX].p_factures( + finess, + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee, + date_debut, + date_fin) + SELECT + finess, + sejour_id, + no_sejour, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || substr(p_calendrier.mois,3,4) ELSE '' END, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || substr(p_calendrier.mois,3,4) ELSE '' END, + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee , + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13 + ; + + + + ]]> + + + + + + + + + '' + GROUP BY 1 + ; + + ANALYSE w_H_MVTCPT_cpt + ; + + UPDATE w_H_MVTCPT_cpt + SET compte_produit_id = t_compte.oid + FROM activite[PX].t_compte + WHERE MC_NUMCPT = t_compte.code + ; + + UPDATE activite[PX].p_factures_lignes_c + SET compte_produit_id = w_H_MVTCPT_cpt.compte_produit_id + FROM w_H_MVTCPT_cpt + WHERE split_part(p_factures_lignes_c.no_facture,'.',1) = MC_NUMFAC + ; + + -- Arrondis + UPDATE activite[PX].p_factures_lignes_c SET + montant_facture_0 = montant_facture - montant_facture_1, + montant_comptabilise_0 = montant_comptabilise - montant_comptabilise_1 + WHERE montant_facture_1 + montant_facture_2 + montant_facture_0 <> montant_facture AND + montant_facture_1 <> 0 AND + montant_facture_2 = 0 AND + montant_facture_0 <> 0 + ; + + UPDATE activite[PX].p_factures_lignes_c SET + montant_facture_2 = montant_facture - montant_facture_1, + montant_comptabilise_2 = montant_comptabilise - montant_comptabilise_1 + WHERE montant_facture_1 + montant_facture_2 + montant_facture_0 <> montant_facture AND + montant_facture_1 <> 0 AND + montant_facture_2 <> 0 AND + montant_facture_0 = 0 + ; + + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_8'); + + ANALYSE activite[PX].p_factures_lignes_c + ; + + + SELECT activite[PX].cti_reorganize_rubrique_facture_c('activite[PX].p_factures_lignes_c'); + + + ]]> + + + + + + + + + '20991231' AND + ( + p_factures_lignes_c.montant_comptabilise <> 0 OR + p_factures_lignes_c.montant_comptabilise_0 <> 0 OR + p_factures_lignes_c.montant_comptabilise_1 <> 0 OR + p_factures_lignes_c.montant_comptabilise_2 <> 0 OR + p_factures_lignes_c.montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4 + ; + + DROP TABLE IF EXISTS w_H_HISFAC_last; + CREATE TEMP TABLE w_H_HISFAC_last AS + SELECT HF_NUMDEM, + (MAX(ARRAY[HF_DATFAC::text,HF_IDFAC]))[2] AS no_facture + FROM w_H_HISFAC + WHERE sens_facture > 0 + GROUP BY 1 + ; + + ANALYSE w_H_HISFAC_last + ; + + -- Reglements + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + p_factures.no_facture, + date(GG_DATREG) AS date_comptable, + 0::bigint AS rubrique_comptabilisation_id, + 0::bigint AS prestation_id, + 0, + 0, + 0, + 0, + 0, + SUM(GG_REGFOR), + SUM(CASE WHEN GG_TYPREG = 'P' THEN GG_REGFOR ELSE 0 END), + SUM(CASE WHEN GG_TYPREG = 'C' THEN GG_REGFOR ELSE 0 END), + SUM(CASE WHEN GG_TYPREG = 'M' THEN GG_REGFOR ELSE 0 END), + 0 + FROM w_H_HISFAC_last + JOIN prod_edlxplore.H_REGLEM ON HF_NUMDEM = GG_NUMDEM + JOIN activite[PX].p_factures ON p_factures.no_facture = w_H_HISFAC_last.no_facture + WHERE GG_REGFOR <> 0 + GROUP BY 1,2,3,4 + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_8'); + + ANALYSE activite[PX].p_factures_soldes_c + ; + + ]]> + + + + + + + + + montant_facture AND + montant_facture_1 <> 0 AND + montant_facture_2 = 0 AND + montant_facture_0 <> 0 + ; + + UPDATE activite[PX].p_factures_lignes_h SET + montant_facture_2 = montant_facture - montant_facture_1, + montant_comptabilise_2 = montant_comptabilise - montant_comptabilise_1 + WHERE montant_facture_1 + montant_facture_2 + montant_facture_0 <> montant_facture AND + montant_facture_1 <> 0 AND + montant_facture_2 <> 0 AND + montant_facture_0 = 0 + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_9'); + + ANALYSE activite[PX].p_factures_lignes_h + ; + + + ]]> + + + + + + 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5 + ; + + -- Reglements + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + date_comptable, + medecin_comptabilise_id, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + p_factures.no_facture, + date(GG_DATREG) AS date_comptable, + 0::bigint AS medecin_comptabilise_id, + 0::bigint AS rubrique_comptabilisation_id, + 0::bigint AS prestation_id, + 0, + 0, + 0, + 0, + 0, + SUM(GG_REGHON), + SUM(CASE WHEN GG_TYPREG = 'P' THEN GG_REGHON ELSE 0 END), + SUM(CASE WHEN GG_TYPREG = 'C' THEN GG_REGHON ELSE 0 END), + SUM(CASE WHEN GG_TYPREG = 'M' THEN GG_REGHON ELSE 0 END), + 0 + FROM w_H_HISFAC_last + JOIN prod_edlxplore.H_REGLEM ON HF_NUMDEM = GG_NUMDEM + JOIN activite[PX].p_factures ON p_factures.no_facture = w_H_HISFAC_last.no_facture + WHERE GG_REGFOR = 0 AND GG_REGHON <> 0 + GROUP BY 1,2,3,4 + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_8'); + + ANALYSE activite[PX].p_factures_soldes_h + ; + + -- Medecin sur reglements selon facturation + UPDATE activite[PX].p_factures_soldes_h + SET medecin_comptabilise_id = subview.medecin_comptabilise_id + FROM + ( + SELECT no_facture, MAX(medecin_comptabilise_id) AS medecin_comptabilise_id + FROM activite[PX].p_factures_soldes_h + WHERE medecin_comptabilise_id <> 0 + GROUP BY 1 + HAVING count(DISTINCT medecin_comptabilise_id) = 1 + ) subview + WHERE p_factures_soldes_h.no_facture = subview.no_facture AND + p_factures_soldes_h.medecin_comptabilise_id = 0 + ; + + ]]> + + + + 0 + GROUP BY 1 + ; + + ANALYSE w_facture_cliaxium + ; + + UPDATE activite[PX].p_factures_soldes_c SET + montant_regle_2 = montant_comptabilise_2, + montant_regle = montant_regle + montant_comptabilise_2 + FROM w_facture_cliaxium + WHERE p_factures_soldes_c.no_facture = w_facture_cliaxium.no_facture AND + montant_comptabilise_2 <> 0 + ; + + DROP TABLE IF EXISTS w_facture_cliaxium; + CREATE TEMP TABLE w_facture_cliaxium AS + SELECT p_factures_soldes_h.no_facture + FROM activite[PX].p_factures_soldes_h + JOIN activite[PX].p_factures ON p_factures_soldes_h.no_facture = p_factures.no_facture + JOIN activite[PX].t_tiers_payant ON p_factures.tiers_payant_2_id = t_tiers_payant.oid + WHERE t_tiers_payant.code = 'CLIAXIUMM' AND montant_comptabilise_2 <> 0 + GROUP BY 1 + ; + + ANALYSE w_facture_cliaxium + ; + + UPDATE activite[PX].p_factures_soldes_h + SET montant_regle_2 = montant_comptabilise_2, + montant_regle = montant_regle + montant_comptabilise_2 + FROM w_facture_cliaxium + WHERE p_factures_soldes_h.no_facture = w_facture_cliaxium.no_facture AND + montant_comptabilise_2 <> 0 + ; + + -- OD avoir + UPDATE activite[PX].p_factures SET + no_facture_od_avoir = p_factures_2.no_facture, + facture_od_avoir_id = p_factures_2.oid + FROM activite[PX].p_factures p_factures_2 + WHERE p_factures.no_facture = p_factures_2.no_facture || 'A' AND + p_factures.type_facture = '1' + ; + + UPDATE activite[PX].p_factures SET + no_facture_od_avoir = p_factures_2.no_facture, + facture_od_avoir_id = p_factures_2.oid + FROM activite[PX].p_factures p_factures_2 + WHERE p_factures.no_facture || 'A' = p_factures_2.no_facture AND + p_factures.type_facture = '0' + ; + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures_soldes_c.no_facture, + CASE WHEN p_factures.type_facture = '0' THEN p_factures.date_vente ELSE p_factures_2.date_vente END, + p_factures_soldes_c.rubrique_comptabilisee_id, + p_factures_soldes_c.prestation_id, + 0, + 0, + 0, + 0, + 0, + SUM(p_factures_soldes_c.montant_comptabilise - p_factures_soldes_c.montant_regle), + SUM(p_factures_soldes_c.montant_comptabilise_0 - p_factures_soldes_c.montant_regle_0), + SUM(p_factures_soldes_c.montant_comptabilise_1 - p_factures_soldes_c.montant_regle_1), + SUM(p_factures_soldes_c.montant_comptabilise_2 - p_factures_soldes_c.montant_regle_2), + SUM(p_factures_soldes_c.montant_comptabilise_22 - p_factures_soldes_c.montant_regle_22), + '1'::text + FROM activite[PX].p_factures_soldes_c + JOIN activite[PX].p_factures ON p_factures_soldes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_factures p_factures_2 ON p_factures.no_facture_od_avoir = p_factures_2.no_facture + WHERE p_factures.no_facture_od_avoir <> '' + GROUP BY 1,2,3,4 + HAVING SUM(p_factures_soldes_c.montant_comptabilise - p_factures_soldes_c.montant_regle) <> 0 + ; + + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + date_comptable, + medecin_comptabilise_id, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures_soldes_h.no_facture, + CASE WHEN p_factures.type_facture = '0' THEN p_factures.date_vente ELSE p_factures_2.date_vente END, + p_factures_soldes_h.medecin_comptabilise_id, + p_factures_soldes_h.rubrique_comptabilisee_id, + p_factures_soldes_h.prestation_id, + 0, + 0, + 0, + 0, + 0, + SUM(p_factures_soldes_h.montant_comptabilise - p_factures_soldes_h.montant_regle), + SUM(p_factures_soldes_h.montant_comptabilise_0 - p_factures_soldes_h.montant_regle_0), + SUM(p_factures_soldes_h.montant_comptabilise_1 - p_factures_soldes_h.montant_regle_1), + SUM(p_factures_soldes_h.montant_comptabilise_2 - p_factures_soldes_h.montant_regle_2), + SUM(p_factures_soldes_h.montant_comptabilise_22 - p_factures_soldes_h.montant_regle_22), + '1'::text + FROM activite[PX].p_factures_soldes_h + JOIN activite[PX].p_factures ON p_factures_soldes_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_factures p_factures_2 ON p_factures.no_facture_od_avoir = p_factures_2.no_facture + WHERE p_factures.no_facture_od_avoir <> '' + GROUP BY 1,2,3,4,5 + HAVING SUM(p_factures_soldes_h.montant_comptabilise - p_factures_soldes_h.montant_regle) <> 0 + ; + + -- Honoraires payes directement aux medecins + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + date_comptable, + medecin_comptabilise_id, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures_soldes_h.no_facture, + MIN(p_factures_soldes_h.date_comptable), + p_factures_soldes_h.medecin_comptabilise_id, + p_factures_soldes_h.rubrique_comptabilisee_id, + p_factures_soldes_h.prestation_id, + 0, + 0, + 0, + 0, + 0, + SUM(p_factures_soldes_h.montant_comptabilise_1 - p_factures_soldes_h.montant_regle_1), + 0, + SUM(p_factures_soldes_h.montant_comptabilise_1 - p_factures_soldes_h.montant_regle_1), + 0, + 0, + '1'::text + FROM activite[PX].p_factures_soldes_h + GROUP BY 1,3,4,5 + HAVING SUM(p_factures_soldes_h.montant_comptabilise_1 - p_factures_soldes_h.montant_regle_1) <> 0 + ; + + + + -- totaux facture + UPDATE activite[PX].p_factures SET + montant_facture_c = subview.montant_facture, + montant_facture_0_c = subview.montant_facture_0, + montant_facture_1_c = subview.montant_facture_1, + montant_facture_2_c = subview.montant_facture_2, + montant_comptabilise_c = subview.montant_comptabilise, + montant_comptabilise_0_c = subview.montant_comptabilise_0, + montant_comptabilise_1_c = subview.montant_comptabilise_1, + montant_comptabilise_2_c = subview.montant_comptabilise_2 + FROM ( + SELECT no_facture, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2 + FROM activite[PX].p_factures_lignes_c + GROUP BY 1 + ) subview + WHERE p_factures.no_facture = subview.no_facture + ; + + UPDATE activite[PX].p_factures SET + montant_facture_h = subview.montant_facture, + montant_facture_0_h = subview.montant_facture_0, + montant_facture_1_h = subview.montant_facture_1, + montant_facture_2_h = subview.montant_facture_2, + montant_comptabilise_h = subview.montant_comptabilise, + montant_comptabilise_0_h = subview.montant_comptabilise_0, + montant_comptabilise_1_h = subview.montant_comptabilise_1, + montant_comptabilise_2_h = subview.montant_comptabilise_2 + FROM ( + SELECT no_facture, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2 + FROM activite[PX].p_factures_lignes_h + GROUP BY 1 + ) subview + WHERE p_factures.no_facture = subview.no_facture + ; + + UPDATE activite[PX].p_factures SET + montant_regle_c = subview.montant_regle, + montant_regle_0_c = subview.montant_regle_0, + montant_regle_1_c = subview.montant_regle_1, + montant_regle_2_c = subview.montant_regle_2, + date_solde = COALESCE(subview.date_solde,p_factures.date_solde), + date_solde_c = COALESCE(subview.date_solde,p_factures.date_solde), + date_solde_0_c = COALESCE(subview.date_solde,p_factures.date_solde_0_c), + date_solde_1_c = COALESCE(subview.date_solde,p_factures.date_solde_1_c), + date_solde_2_c = COALESCE(subview.date_solde,p_factures.date_solde_2_c) + FROM ( + SELECT no_facture, + SUM(montant_regle) AS montant_regle, + SUM(montant_regle_0) AS montant_regle_0, + SUM(montant_regle_1) AS montant_regle_1, + SUM(montant_regle_2) AS montant_regle_2, + MAX(CASE WHEN montant_regle <> 0 THEN date_comptable ELSE NULL END) AS date_solde, + MAX(CASE WHEN montant_regle_0 <> 0 THEN date_comptable ELSE NULL END) AS date_solde_0, + MAX(CASE WHEN montant_regle_1 <> 0 THEN date_comptable ELSE NULL END) AS date_solde_1, + MAX(CASE WHEN montant_regle_2 <> 0 THEN date_comptable ELSE NULL END) AS date_solde_2 + FROM activite[PX].p_factures_soldes_c + WHERE montant_regle <> 0 OR + montant_regle_0 <> 0 OR + montant_regle_1 <> 0 OR + montant_regle_2 <> 0 + GROUP BY 1 + ) subview + WHERE p_factures.no_facture = subview.no_facture + ; + + + UPDATE activite[PX].p_factures SET + montant_regle_h = subview.montant_regle, + montant_regle_0_h = subview.montant_regle_0, + montant_regle_1_h = subview.montant_regle_1, + montant_regle_2_h = subview.montant_regle_2, + date_solde = GREATEST(p_factures.date_solde,COALESCE(subview.date_solde,p_factures.date_solde)), + date_solde_h = COALESCE(subview.date_solde,p_factures.date_solde), + date_solde_0_h = COALESCE(subview.date_solde,p_factures.date_solde_0_h), + date_solde_1_h = COALESCE(subview.date_solde,p_factures.date_solde_1_h), + date_solde_2_h = COALESCE(subview.date_solde,p_factures.date_solde_2_h) + FROM ( + SELECT no_facture, + SUM(montant_regle) AS montant_regle, + SUM(montant_regle_0) AS montant_regle_0, + SUM(montant_regle_1) AS montant_regle_1, + SUM(montant_regle_2) AS montant_regle_2, + MAX(CASE WHEN montant_regle <> 0 THEN date_comptable ELSE NULL END) AS date_solde, + MAX(CASE WHEN montant_regle_0 <> 0 THEN date_comptable ELSE NULL END) AS date_solde_0, + MAX(CASE WHEN montant_regle_1 <> 0 THEN date_comptable ELSE NULL END) AS date_solde_1, + MAX(CASE WHEN montant_regle_2 <> 0 THEN date_comptable ELSE NULL END) AS date_solde_2 + FROM activite[PX].p_factures_soldes_h + WHERE montant_regle <> 0 OR + montant_regle_0 <> 0 OR + montant_regle_1 <> 0 OR + montant_regle_2 <> 0 + GROUP BY 1 + ) subview + WHERE p_factures.no_facture = subview.no_facture + ; + + -- Attention, en comptabilisation, prendre en compte le fait que le taux n'est pas toujours applique en comptabilisation + -- On garde le taux facture mais la compta va a l'AMO (car tout est regle sur l'AMO + DROP TABLE IF EXISTS w_factures_ajust_t; + CREATE TEMP TABLE w_factures_ajust_t AS + SELECT no_facture + FROM activite[PX].p_factures + WHERE montant_regle_1_c = montant_comptabilise_c AND + montant_regle_1_c <> 0 AND + ( + montant_comptabilise_2_c <> 0 OR + montant_comptabilise_0_c <> 0 + ) + ; + + ANALYSE w_factures_ajust_t + ; + + UPDATE activite[PX].p_factures SET + montant_comptabilise_1_c = montant_comptabilise_1_c + montant_comptabilise_2_c + montant_comptabilise_0_c, + montant_comptabilise_2_c = 0, + montant_comptabilise_0_c = 0 + FROM w_factures_ajust_t + WHERE p_factures.no_facture = w_factures_ajust_t.no_facture + ; + + + UPDATE activite[PX].p_factures_lignes_c SET + montant_comptabilise_1 = montant_comptabilise_1 + montant_comptabilise_2 + montant_comptabilise_0, + montant_comptabilise_2 = 0, + montant_comptabilise_0 = 0 + FROM w_factures_ajust_t + WHERE p_factures_lignes_c.no_facture = w_factures_ajust_t.no_facture + ; + + UPDATE activite[PX].p_factures_soldes_c SET + montant_comptabilise_1 = montant_comptabilise_1 + montant_comptabilise_2 + montant_comptabilise_0, + montant_comptabilise_2 = 0, + montant_comptabilise_0 = 0 + FROM w_factures_ajust_t + WHERE p_factures_soldes_c.no_facture = w_factures_ajust_t.no_facture + ; + + ]]> + + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.date_groupage, + p_sejours.ghs_id, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour, + + 0::numeric AS delai_groupage, + 0::numeric AS delai_facture, + 0::numeric AS delai_expedition, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_solde_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_solde_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_solde_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_22 + + FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY 1,2,3,4,5; + + + UPDATE w_sejours_total + SET date_groupage = date_facture + WHERE (date_groupage IS null OR date_groupage = '20991231' OR date_groupage = '00010101') AND + date_facture <> '2099-12-31'; + + + UPDATE w_sejours_total SET + date_groupage = CASE WHEN date_groupage > '00010101' THEN date_groupage ELSE '20991231' END, + date_facture = CASE WHEN date_facture> '00010101' THEN date_facture ELSE '20991231' END, + date_expedition = CASE WHEN date_expedition > '00010101' THEN date_expedition ELSE '20991231' END, + date_solde = CASE WHEN date_solde > '00010101' THEN date_solde ELSE '20991231' END, + date_expedition_0 = CASE WHEN date_expedition_0 > '00010101' THEN date_expedition_0 ELSE '20991231' END, + date_solde_0 = CASE WHEN date_solde_0 > '00010101' THEN date_solde_0 ELSE '20991231' END, + date_expedition_1 = CASE WHEN date_expedition_1 > '00010101' THEN date_expedition_1 ELSE '20991231' END, + date_solde_1 = CASE WHEN date_solde_1 > '00010101' THEN date_solde_1 ELSE '20991231' END, + date_expedition_2 = CASE WHEN date_expedition_2 > '00010101' THEN date_expedition_2 ELSE '20991231' END, + date_solde_2 = CASE WHEN date_solde_2 > '00010101' THEN date_solde_2 ELSE '20991231' END, + date_expedition_22 = CASE WHEN date_expedition_22 > '00010101' THEN date_expedition_22 ELSE '20991231' END, + date_solde_22 = CASE WHEN date_solde_22 > '00010101' THEN date_solde_22 ELSE '20991231' END; + + + UPDATE w_sejours_total SET + delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END, + delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END, + delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END, + delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END, + delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END, + delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END, + delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END, + delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END, + delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END, + delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END, + delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END, + delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END; + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = w_sejours_total.date_expedition_0, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = w_sejours_total.date_expedition_1, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = w_sejours_total.date_expedition_2, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = w_sejours_total.date_expedition_22, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour, + + + delai_groupage = w_sejours_total.delai_groupage, + delai_facture = w_sejours_total.delai_facture, + delai_expedition = w_sejours_total.delai_expedition, + delai_solde = w_sejours_total.delai_solde, + delai_expedition_0 = w_sejours_total.delai_expedition_0, + delai_solde_0 = w_sejours_total.delai_solde_0, + delai_expedition_1 = w_sejours_total.delai_expedition_1, + delai_solde_1 = w_sejours_total.delai_solde_1, + delai_expedition_2 = w_sejours_total.delai_expedition_2, + delai_solde_2 = w_sejours_total.delai_solde_2, + delai_expedition_22 = w_sejours_total.delai_expedition_22, + delai_solde_22 = w_sejours_total.delai_solde_22 + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM w_sejours_total.date_expedition_0 OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM w_sejours_total.date_expedition_1 OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM w_sejours_total.date_expedition_2 OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM w_sejours_total.date_expedition_22 OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour OR + + p_sejours.delai_groupage IS DISTINCT FROM w_sejours_total.delai_groupage OR + p_sejours.delai_facture IS DISTINCT FROM w_sejours_total.delai_facture OR + p_sejours.delai_expedition IS DISTINCT FROM w_sejours_total.delai_expedition OR + p_sejours.delai_solde IS DISTINCT FROM w_sejours_total.delai_solde OR + p_sejours.delai_expedition_0 IS DISTINCT FROM w_sejours_total.delai_expedition_0 OR + p_sejours.delai_solde_0 IS DISTINCT FROM w_sejours_total.delai_solde_0 OR + p_sejours.delai_expedition_1 IS DISTINCT FROM w_sejours_total.delai_expedition_1 OR + p_sejours.delai_solde_1 IS DISTINCT FROM w_sejours_total.delai_solde_1 OR + p_sejours.delai_expedition_2 IS DISTINCT FROM w_sejours_total.delai_expedition_2 OR + p_sejours.delai_solde_2 IS DISTINCT FROM w_sejours_total.delai_solde_2 OR + p_sejours.delai_expedition_22 IS DISTINCT FROM w_sejours_total.delai_expedition_22 OR + p_sejours.delai_solde_22 IS DISTINCT FROM w_sejours_total.delai_solde_22 + + ); + + ]]> + + + + + + + + + = '[ENV_ADM_ANNEEDEBUT]0101' AND + MC_CODJRN LIKE 'VENTE%' AND + MC_NUMCPT LIKE '41%' + GROUP BY 1 + ; + + TRUNCATE activite[PX].p_factures_comptables; + + INSERT INTO activite[PX].p_factures_comptables( + no_facture, + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_ventes_h, + montant_reglements_h + ) + SELECT MC_NUMFAC, + date(date_trunc('month',MC_PERIODE)) AS date_comptable, + SUM(CASE WHEN MC_CATECR = 'E' THEN MC_MTDEBIT - MC_MTCREDIT ELSE 0 END) AS montant_ventes_c, + 0::numeric AS montant_reglements_c, + SUM(CASE WHEN MC_CATECR = 'H' THEN MC_MTDEBIT - MC_MTCREDIT ELSE 0 END) AS montant_ventes_h, + 0::numeric AS montant_reglements_h + FROM prod_edlxplore.h_mvtcpt + WHERE date(MC_PERIODE) >= '20180101' AND + MC_CODJRN LIKE 'VENTE%' AND + MC_NUMCPT LIKE '41%' + GROUP BY 1,2 + ; + + ANALYSE activite[PX].p_factures_comptables + ; + ]]> + + + + + + + + + + + diff --git a/import_activite/iCTI_import_activite_FUSION.XML b/import_activite/iCTI_import_activite_FUSION.XML new file mode 100644 index 0000000..71ca751 --- /dev/null +++ b/import_activite/iCTI_import_activite_FUSION.XML @@ -0,0 +1,3435 @@ + + + + + + + + + + + + + + + + + + + + 0 AND + p_patients_e.no_patient NOT IN (SELECT no_patient_source FROM w_correspondances_patients); + + CREATE INDEX w_correspondances_patients_1 + ON w_correspondances_patients + USING btree + (no_patient_source); + + + ]]> + + + + 0 + WHERE date_arret < '20991231' AND + no_sejour IN (SELECT no_sejour FROM activite[PX].p_factures WHERE code_facture = '0') AND + ( + code_prevu = '1' OR + type_sejour IN ('1','5','6') AND code_sorti <> '1' OR + type_sejour IN ('1','5','6') AND date_sortie > date_arret OR + type_sejour IN ('2','3','9') AND date_entree > date_arret + ) + ) subview + WHERE no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour) + ; + + -- Génération auto ignorés d'après selon date demarrage + INSERT INTO activite.t_sejour (no_sejour, est_ignore) + SELECT no_sejour, '1' + FROM + ( + SELECT '[TPX]'||no_sejour AS no_sejour, type_sejour, code_sorti, code_prevu, date_entree, date_sortie, date_arret + FROM activite[PX].p_sejours + JOIN activite.t_providers ON t_providers.oid = [PPX] AND [PPX] = 0 + WHERE date_demarrage > '00010101' AND + no_sejour NOT IN (SELECT no_sejour FROM activite[PX].p_factures WHERE code_facture = '1') AND + ( + type_sejour IN ('1','5','6') AND date_sortie < date_demarrage OR + type_sejour IN ('2','3','9') AND code_sorti <> '1' AND date_entree < date_demarrage + ) + ) subview + WHERE no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour) + ; + + DROP TABLE IF EXISTS w_sejours_ignore; + CREATE TEMP TABLE w_sejours_ignore AS + SELECT p_sejours.no_sejour AS no_sejour_ignore, p_sejours.oid AS sejour_id_ignore + FROM activite[PX].p_sejours + JOIN activite.t_sejour ON '[CPX]' || p_sejours.no_sejour = t_sejour.no_sejour + WHERE t_sejour.est_ignore = '1'; + + INSERT INTO w_sejours_ignore + SELECT p_sejours.no_sejour AS no_sejour_ignore, p_sejours.oid AS sejour_id_ignore + FROM activite[PX].p_sejours + JOIN activite.t_sejour ON '[TPX]' || p_sejours.no_sejour = t_sejour.no_sejour + WHERE t_sejour.est_ignore = '1' AND '[CPX]' = ''; + + CREATE INDEX w_sejours_ignore_1 + ON w_sejours_ignore + USING btree + (no_sejour_ignore); + + DROP TABLE IF EXISTS w_factures_ignore; + CREATE TEMP TABLE w_factures_ignore AS + SELECT no_facture AS no_facture_ignore + FROM activite[PX].p_factures + JOIN w_sejours_ignore ON p_factures.no_sejour = w_sejours_ignore.no_sejour_ignore; + + CREATE INDEX w_factures_ignore_1 + ON w_factures_ignore + USING btree + (no_facture_ignore); + + + + INSERT INTO activite.p_sejours( + finess, + no_sejour, + date_entree, + date_sortie, + no_patient, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + date_facture, + date_solde, + delai_facture, + delai_solde, + montant_facture_c, + montant_facture_h, + montant_regle_c, + montant_regle_h, + nb_factures, + nb_factures_regularisation, + date_expedition, + delai_expedition, + lieu_sortie_id, + medecin_sejour_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_0_id, + tiers_payant_22_id, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_12_c, + montant_facture_12_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_12_c, + montant_regle_12_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + date_expedition_0, + date_expedition_1, + date_expedition_12, + date_expedition_2, + date_expedition_22, + delai_expedition_0, + delai_expedition_1, + delai_expedition_12, + delai_expedition_2, + delai_expedition_22, + date_solde_0, + date_solde_1, + date_solde_12, + date_solde_2, + date_solde_22, + delai_solde_0, + delai_solde_1, + delai_solde_12, + delai_solde_2, + delai_solde_22, + ghs_id, + ghm_id, + gmt_id, + gme_id, + particularite_t2a, + code_postal_id, + mode_traitement_id, + date_groupage, + delai_groupage, + nb_factures_rejet, + etat, + code_cp_demandee, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + mode_entree, + provenance, + mode_sortie, + destination, + heure_entree, + heure_sortie, + code_original, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + est_budget_global, + montant_comptabilise_budget_global_c, + oid, + provider_id, + est_sans_facturation, + type_pmsi, + risque_id, + medecin_traitant_id) + SELECT + finess, + '[CPX]' || no_sejour, + date_entree, + date_sortie, + COALESCE(w_correspondances_patients.no_patient, p_sejours.no_patient), + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + date_facture, + date_solde, + delai_facture, + delai_solde, + montant_facture_c, + montant_facture_h, + montant_regle_c, + montant_regle_h, + nb_factures, + nb_factures_regularisation, + date_expedition, + delai_expedition, + CASE WHEN lieu_sortie_id <> 0 THEN lieu_sortie_id + [IPX] ELSE 0 END AS lieu_sortie_id, + CASE WHEN medecin_sejour_id <> 0 THEN medecin_sejour_id + [IPX] ELSE 0 END AS medecin_sejour_id, + CASE WHEN tiers_payant_1_id <> 0 THEN tiers_payant_1_id + [IPX] ELSE 0 END AS tiers_payant_1_id, + CASE WHEN tiers_payant_2_id <> 0 THEN tiers_payant_2_id + [IPX] ELSE 0 END AS tiers_payant_2_id, + CASE WHEN tiers_payant_0_id <> 0 THEN tiers_payant_0_id + [IPX] ELSE 0 END AS tiers_payant_0_id, + CASE WHEN tiers_payant_22_id <> 0 THEN tiers_payant_22_id + [IPX] ELSE 0 END AS tiers_payant_22_id, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_12_c, + montant_facture_12_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_12_c, + montant_regle_12_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + date_expedition_0, + date_expedition_1, + date_expedition_12, + date_expedition_2, + date_expedition_22, + delai_expedition_0, + delai_expedition_1, + delai_expedition_12, + delai_expedition_2, + delai_expedition_22, + date_solde_0, + date_solde_1, + date_solde_12, + date_solde_2, + date_solde_22, + delai_solde_0, + delai_solde_1, + delai_solde_12, + delai_solde_2, + delai_solde_22, + ghs_id, + COALESCE(ghm_id,0) AS ghm_id, + gmt_id, + gme_id, + particularite_t2a, + code_postal_id, + mode_traitement_id, + date_groupage, + delai_groupage, + nb_factures_rejet, + etat, + code_cp_demandee, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + mode_entree, + provenance, + mode_sortie, + destination, + heure_entree, + heure_sortie, + code_original, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + est_budget_global, + montant_comptabilise_budget_global_c, + CASE WHEN p_sejours.oid <> 0 THEN p_sejours.oid + [IPX] ELSE 0 END AS oid, + [PPX]::bigint AS provider_id, + COALESCE(est_sans_facturation,'0'), + type_pmsi, + COALESCE(w_correspondances_risque.oid, 0) as risque_id, + CASE WHEN medecin_traitant_id <> 0 THEN medecin_traitant_id + [IPX] ELSE 0 END AS medecin_traitant_id + FROM activite[PX].p_sejours + LEFT JOIN w_sejours_ignore ON p_sejours.no_sejour = no_sejour_ignore + LEFT JOIN w_correspondances_patients ON p_sejours.no_patient = w_correspondances_patients.no_patient_source + LEFT JOIN w_correspondances_risque ON p_sejours.risque_id = w_correspondances_risque.oid_source + WHERE no_sejour_ignore IS NULL; + + + -- Médecin séjour forcé + UPDATE activite.p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id; + + + + INSERT INTO activite.p_sejours_assurance( + sejour_id, + nom_assure, + prenom_assure, + tiers_payant_0_id, + tiers_payant_1_id, + matricule_1, + tiers_payant_2_id, + matricule_2, + tiers_payant_22_id, + matricule_22) + SELECT + CASE WHEN sejour_id <> 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, + nom_assure, + prenom_assure, + CASE WHEN tiers_payant_0_id <> 0 THEN tiers_payant_0_id + [IPX] ELSE 0 END AS tiers_payant_0_id, + CASE WHEN tiers_payant_1_id <> 0 THEN tiers_payant_1_id + [IPX] ELSE 0 END AS tiers_payant_1_id, + matricule_1, + CASE WHEN tiers_payant_2_id <> 0 THEN tiers_payant_2_id + [IPX] ELSE 0 END AS tiers_payant_2_id, + matricule_2, + CASE WHEN tiers_payant_22_id <> 0 THEN tiers_payant_22_id + [IPX] ELSE 0 END AS tiers_payant_22_id, + matricule_22 + FROM activite[PX].p_sejours_assurance + LEFT JOIN w_sejours_ignore ON p_sejours_assurance.sejour_id = sejour_id_ignore + WHERE no_sejour_ignore IS NULL; + + INSERT INTO activite.p_sejours_transferts( + sejour_id, + provenance_id, + destination_id) + SELECT + CASE WHEN sejour_id <> 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, + provenance_id, + destination_id + FROM activite[PX].p_sejours_transferts + LEFT JOIN w_sejours_ignore ON p_sejours_transferts.sejour_id = sejour_id_ignore + WHERE no_sejour_ignore IS NULL; + + INSERT INTO activite.p_coordonnees_patient ( + sejour_id, + adresse, + code_postal_id, + commune, + telephone_fixe, + telephone_portable, + email + ) + SELECT + CASE WHEN sejour_id <> 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, + adresse, + code_postal_id, + commune, + telephone_fixe, + telephone_portable, + email + FROM activite[PX].p_coordonnees_patient + LEFT JOIN w_sejours_ignore ON p_coordonnees_patient.sejour_id = sejour_id_ignore + WHERE no_sejour_ignore IS NULL; + + INSERT INTO activite.p_sejours_groupes_smr( + no_sejour + , date_entree + , date_sortie + , date_groupage + , gmt_code + , gmt_id + , gme_code + , gme_id + , date_debut_gmt + , date_fin_gmt + , nb_jours_presence + , types_gmt_code + ) + SELECT + '[CPX]' || no_sejour + , date_entree + , date_sortie + , date_groupage + , gmt_code + , gmt_id + , gme_code + , gme_id + , date_debut_gmt + , date_fin_gmt + , nb_jours_presence + , types_gmt_code + FROM activite[PX].p_sejours_groupes_smr + ; + + ]]> + + + + 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, + nb_entrees_directes, + nb_sorties_directes, + nb_urgences, + nb_externes, + nb_ambulatoires, + CASE WHEN medecin_sejour_id <> 0 THEN medecin_sejour_id + [IPX] ELSE 0 END AS medecin_sejour_id, + nb_jours_js_inclus, + nb_seances, + nb_entrees_mutation_service, + nb_sorties_mutation_service, + nb_entrees_mutation_activite, + nb_sorties_mutation_activite, + nb_entrees_mutation_etage, + nb_sorties_mutation_etage, + nb_chambres_particulieres, + heure_debut, + heure_fin, + est_jour_entree, + est_jour_sortie, + est_jour_hospitalisation, + est_chambre_particuliere, + est_chambre_particuliere_facturee, + nb_entrees_mutation_unite_medicale, + nb_sorties_mutation_unite_medicale, + nb_bebes, + CASE WHEN sejour_id <> 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, + est_premier_mouvement_jour, + est_dernier_mouvement_jour, + jour_semaine, + is_weekend, + COALESCE(est_facture,'1') AS est_facture + FROM activite[PX].p_mouvements_sejour + LEFT JOIN w_sejours_ignore ON p_mouvements_sejour.no_sejour = no_sejour_ignore + WHERE no_sejour_ignore IS NULL; + + + + INSERT INTO activite.t_lieux( + oid, + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + service_facturation_id, + activite_id, + lit_id, + unite_medicale_id, + unite_fonctionnelle_id, + code_original_6, + code_original_7, + mode_traitement_id) + SELECT + CASE WHEN oid <> 0 THEN oid + [IPX] ELSE 0 END AS oid, + CASE WHEN code_original_1 <> '' THEN '[TPX]' || code_original_1 ELSE '' END AS code_original_1, + CASE WHEN code_original_2 <> '' THEN '[TPX]' || code_original_2 ELSE '' END AS code_original_2, + CASE WHEN code_original_3 <> '' THEN '[TPX]' || code_original_3 ELSE '' END AS code_original_3, + CASE WHEN code_original_4 <> '' THEN '[TPX]' || code_original_4 ELSE '' END AS code_original_4, + CASE WHEN code_original_5 <> '' THEN '[TPX]' || code_original_5 ELSE '' END AS code_original_5, + CASE WHEN service_facturation_id <> 0 THEN service_facturation_id + [IPX] ELSE 0 END AS service_facturation_id, + CASE WHEN activite_id <> 0 THEN activite_id + [IPX] ELSE 0 END AS activite_id, + CASE WHEN lit_id <> 0 THEN lit_id + [IPX] ELSE 0 END AS lit_id, + CASE WHEN unite_medicale_id <> 0 THEN unite_medicale_id + [IPX] ELSE 0 END AS unite_medicale_id, + CASE WHEN unite_fonctionnelle_id <> 0 THEN unite_fonctionnelle_id + [IPX] ELSE 0 END AS unite_fonctionnelle_id, + CASE WHEN code_original_6 <> '' THEN '[TPX]' || code_original_6 ELSE '' END AS code_original_6, + CASE WHEN code_original_7 <> '' THEN '[TPX]' || code_original_7 ELSE '' END AS code_original_7, + mode_traitement_id + FROM activite[PX].t_lieux + WHERE CASE WHEN oid <> 0 THEN oid + [IPX] ELSE 0 END NOT IN (SELECT oid FROM activite.t_lieux) + ; + + UPDATE activite.t_lieux + SET + code_original_1 = CASE WHEN t_lieux_src.code_original_1 <> '' THEN '[TPX]' || t_lieux_src.code_original_1 ELSE '' END, + code_original_2 = CASE WHEN t_lieux_src.code_original_2 <> '' THEN '[TPX]' || t_lieux_src.code_original_2 ELSE '' END, + code_original_3 = CASE WHEN t_lieux_src.code_original_3 <> '' THEN '[TPX]' || t_lieux_src.code_original_3 ELSE '' END, + code_original_4 = CASE WHEN t_lieux_src.code_original_4 <> '' THEN '[TPX]' || t_lieux_src.code_original_4 ELSE '' END, + code_original_5 = CASE WHEN t_lieux_src.code_original_5 <> '' THEN '[TPX]' || t_lieux_src.code_original_5 ELSE '' END, + service_facturation_id = CASE WHEN t_lieux_src.service_facturation_id <> 0 THEN t_lieux_src.service_facturation_id + [IPX] ELSE 0 END, + activite_id = CASE WHEN t_lieux_src.activite_id <> 0 THEN t_lieux_src.activite_id + [IPX] ELSE 0 END, + lit_id = CASE WHEN t_lieux_src.lit_id <> 0 THEN t_lieux_src.lit_id + [IPX] ELSE 0 END, + unite_medicale_id = CASE WHEN t_lieux_src.unite_medicale_id <> 0 THEN t_lieux_src.unite_medicale_id + [IPX] ELSE 0 END, + unite_fonctionnelle_id = CASE WHEN t_lieux_src.unite_fonctionnelle_id <> 0 THEN t_lieux_src.unite_fonctionnelle_id + [IPX] ELSE 0 END, + code_original_6 = CASE WHEN t_lieux_src.code_original_6 <> '' THEN '[TPX]' || t_lieux_src.code_original_6 ELSE '' END, + code_original_7 = CASE WHEN t_lieux_src.code_original_7 <> '' THEN '[TPX]' || t_lieux_src.code_original_7 ELSE '' END, + mode_traitement_id = t_lieux_src.mode_traitement_id + FROM activite[PX].t_lieux t_lieux_src + WHERE CASE WHEN t_lieux_src.oid <> 0 THEN t_lieux_src.oid + [IPX] ELSE 0 END = t_lieux.oid + AND ( + CASE WHEN t_lieux_src.code_original_1 <> '' THEN '[TPX]' || t_lieux_src.code_original_1 ELSE '' END != t_lieux.code_original_1 OR + CASE WHEN t_lieux_src.code_original_2 <> '' THEN '[TPX]' || t_lieux_src.code_original_2 ELSE '' END != t_lieux.code_original_2 OR + CASE WHEN t_lieux_src.code_original_3 <> '' THEN '[TPX]' || t_lieux_src.code_original_3 ELSE '' END != t_lieux.code_original_3 OR + CASE WHEN t_lieux_src.code_original_4 <> '' THEN '[TPX]' || t_lieux_src.code_original_4 ELSE '' END != t_lieux.code_original_4 OR + CASE WHEN t_lieux_src.code_original_5 <> '' THEN '[TPX]' || t_lieux_src.code_original_5 ELSE '' END != t_lieux.code_original_5 OR + CASE WHEN t_lieux_src.service_facturation_id <> 0 THEN t_lieux_src.service_facturation_id + [IPX] ELSE 0 END != t_lieux.service_facturation_id OR + CASE WHEN t_lieux_src.activite_id <> 0 THEN t_lieux_src.activite_id + [IPX] ELSE 0 END != t_lieux.activite_id OR + CASE WHEN t_lieux_src.lit_id <> 0 THEN t_lieux_src.lit_id + [IPX] ELSE 0 END != t_lieux.lit_id OR + CASE WHEN t_lieux_src.unite_medicale_id <> 0 THEN t_lieux_src.unite_medicale_id + [IPX] ELSE 0 END != t_lieux.unite_medicale_id OR + CASE WHEN t_lieux_src.unite_fonctionnelle_id <> 0 THEN t_lieux_src.unite_fonctionnelle_id + [IPX] ELSE 0 END != t_lieux.unite_fonctionnelle_id OR + CASE WHEN t_lieux_src.code_original_6 <> '' THEN '[TPX]' || t_lieux_src.code_original_6 ELSE '' END != t_lieux.code_original_6 OR + CASE WHEN t_lieux_src.code_original_7 <> '' THEN '[TPX]' || t_lieux_src.code_original_7 ELSE '' END != t_lieux.code_original_7 OR + t_lieux_src.mode_traitement_id != t_lieux.mode_traitement_id + ) + ; + + + ]]> + + + 0 FROM information_schema.tables WHERE table_schema = 'prod_web100t' + ]]> + + + + + + + + + 0 THEN tiers_payant_1_id + [IPX] ELSE 0 END AS tiers_payant_1_id, + CASE WHEN tiers_payant_2_id <> 0 THEN tiers_payant_2_id + [IPX] ELSE 0 END AS tiers_payant_2_id, + CASE WHEN tiers_payant_22_id <> 0 THEN tiers_payant_22_id + [IPX] ELSE 0 END AS tiers_payant_22_id, + CASE WHEN tiers_payant_0_id <> 0 THEN tiers_payant_0_id + [IPX] ELSE 0 END AS tiers_payant_0_id, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + ghs_id, + particularite_t2a, + date_vente, + code_cloture, + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + code_cp_demandee, + date_encours, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + nb_rejets, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + CASE WHEN no_facture_reference <> '' THEN '[CPX]' || no_facture_reference ELSE '' END AS no_facture_reference, + date_solde_reference, + date_solde_reference_c, + date_solde_reference_h, + date_solde_reference_0_c, + date_solde_reference_1_c, + date_solde_reference_2_c, + date_solde_reference_22_c, + date_solde_reference_0_h, + date_solde_reference_1_h, + date_solde_reference_2_h, + date_solde_reference_22_h, + date_solde_c, + date_solde_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_c, + CASE WHEN no_facture_od_avoir <> '' THEN '[CPX]' || no_facture_od_avoir ELSE '' END AS no_facture_od_avoir, + CASE WHEN oid <> 0 THEN oid + [IPX] ELSE 0 END AS oid, + CASE WHEN sejour_id <> 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, + CASE WHEN facture_reference_id <> 0 THEN facture_reference_id + [IPX] ELSE 0 END AS facture_reference_id, + CASE WHEN facture_od_avoir_id <> 0 THEN facture_od_avoir_id + [IPX] ELSE 0 END AS facture_od_avoir_id, + [PPX]::bigint AS provider_id, + CASE WHEN motif_non_facturation_id <> 0 THEN motif_non_facturation_id + [IPX] ELSE 0 END AS motif_non_facturation_id, + motif_non_facturation_comment + FROM activite[PX].p_factures + LEFT JOIN w_factures_ignore ON p_factures.no_facture = no_facture_ignore + WHERE no_facture_ignore IS NULL; + + + -- Ajustement des motifs de non facturation génériques + UPDATE activite.p_factures + SET motif_non_facturation_id = subview.oid + FROM + ( + SELECT t_motif_non_facturation_source.oid AS oid_source, t_motif_non_facturation.oid + FROM activite.t_motif_non_facturation + JOIN activite.t_motif_non_facturation t_motif_non_facturation_source ON + ( + t_motif_non_facturation.code_original = '*CTING' AND t_motif_non_facturation_source.code_original LIKE '%*CTING' OR + t_motif_non_facturation.code_original = '*CTIZZZ' AND t_motif_non_facturation_source.code_original LIKE '%*CTIZZZ' + ) AND + t_motif_non_facturation.oid <> t_motif_non_facturation_source.oid + ) subview + WHERE motif_non_facturation_id <> 0 AND + motif_non_facturation_id = subview.oid_source + ; + + + ]]> + + + + 0 THEN rubrique_facturation_id + [IPX] ELSE 0 END AS rubrique_facturation_id, + prestation_id, + ucd_id, + lpp_id, + prix_unitaire, + CASE WHEN lieu_id <> 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, + CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id + FROM activite[PX].p_factures_lignes_non_facturees_c + LEFT JOIN w_factures_ignore ON p_factures_lignes_non_facturees_c.no_facture = no_facture_ignore + WHERE no_facture_ignore IS NULL; + + + ]]> + + + + 0 THEN rubrique_facturation_id + [IPX] ELSE 0 END AS rubrique_facturation_id, + CASE WHEN rubrique_comptabilisation_id <> 0 THEN rubrique_comptabilisation_id + [IPX] ELSE 0 END AS rubrique_comptabilisation_id, + prestation_id, + COALESCE(w_correspondances_compte.oid,0) AS compte_produit_id + FROM activite[PX].t_rubrique_facture_c + LEFT JOIN w_correspondances_compte ON compte_produit_id = w_correspondances_compte.oid_source + WHERE (t_rubrique_facture_c.oid + [IPX]) NOT IN (SELECT oid FROM activite.t_rubrique_facture_c); + + INSERT INTO activite.p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + ucd_id, + lpp_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id, + taux_tva) + SELECT + '[CPX]' || no_facture AS no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + CASE WHEN rubrique_facture_id <> 0 THEN rubrique_facture_id + [IPX] ELSE 0 END AS rubrique_facture_id, + CASE WHEN rubrique_facturation_id <> 0 THEN rubrique_facturation_id + [IPX] ELSE 0 END AS rubrique_facturation_id, + CASE WHEN rubrique_comptabilisation_id <> 0 THEN rubrique_comptabilisation_id + [IPX] ELSE 0 END AS rubrique_comptabilisation_id, + COALESCE(w_correspondances_compte.oid,0), + prestation_id, + ucd_id, + lpp_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + CASE WHEN lieu_id <> 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, + taux_tva + FROM activite[PX].p_factures_lignes_c + LEFT JOIN w_correspondances_compte ON compte_produit_id = w_correspondances_compte.oid_source + LEFT JOIN w_factures_ignore ON p_factures_lignes_c.no_facture = no_facture_ignore + WHERE no_facture_ignore IS NULL; + + + + ]]> + + + + 0 THEN rubrique_comptabilisee_id + [IPX] ELSE 0 END AS rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + finess, + od_avoir, + CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, + od_non_comptabilise + FROM activite[PX].p_factures_soldes_c + LEFT JOIN w_factures_ignore ON p_factures_soldes_c.no_facture = no_facture_ignore + WHERE no_facture_ignore IS NULL; + + + + ]]> + + + + 0 THEN medecin_facture_id + [IPX] ELSE 0 END AS medecin_facture_id, + prestation_id, + prix_unitaire, + montant_depassement, + CASE WHEN lieu_id <> 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, + acte_id, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id + FROM activite[PX].p_factures_lignes_non_facturees_h + LEFT JOIN w_factures_ignore ON p_factures_lignes_non_facturees_h.no_facture = no_facture_ignore + WHERE no_facture_ignore IS NULL; + + + ]]> + + + + 0 THEN rubrique_facturation_id + [IPX] ELSE 0 END AS rubrique_facturation_id, + CASE WHEN rubrique_comptabilisation_id <> 0 THEN rubrique_comptabilisation_id + [IPX] ELSE 0 END AS rubrique_comptabilisation_id, + nb_rubrique, + nb_prestation, + prix_unitaire, + taux_0, + taux_1, + taux_2, + taux_22, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + CASE WHEN lieu_id <> 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, + montant_depassement, + acte_id, + CASE WHEN COALESCE(protocole_id,0) <> 0 THEN protocole_id + [IPX] ELSE 0 END AS protocole_id, + CASE WHEN medecin_facture_id <> 0 THEN medecin_facture_id + [IPX] ELSE 0 END AS medecin_facture_id, + CASE WHEN medecin_comptabilise_id <> 0 THEN medecin_comptabilise_id + [IPX] ELSE 0 END AS medecin_comptabilise_id, + heure_debut, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, + montant_non_facture + FROM activite[PX].p_factures_lignes_h + LEFT JOIN w_factures_ignore ON p_factures_lignes_h.no_facture = no_facture_ignore + WHERE no_facture_ignore IS NULL; + + + ]]> + + + + 0 THEN rubrique_comptabilisee_id + [IPX] ELSE 0 END AS rubrique_comptabilisee_id, + prestation_id, + CASE WHEN medecin_comptabilise_id <> 0 THEN medecin_comptabilise_id + [IPX] ELSE 0 END AS medecin_comptabilise_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + montant_solde, + montant_solde_0, + montant_solde_1, + montant_solde_2, + montant_solde_22, + finess, + od_avoir, + CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, + od_non_comptabilise + FROM activite[PX].p_factures_soldes_h + LEFT JOIN w_factures_ignore ON p_factures_soldes_h.no_facture = no_facture_ignore + WHERE no_facture_ignore IS NULL; + + + + ]]> + + + + + 0 THEN 0 - (oid + [IPX]) ELSE 0 END AS oid, + CASE WHEN sejour_id <> 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, + '[CPX]' || no_sejour AS no_sejour, + '[CPX]' || no_facture AS no_facture, + '[CPX]' || no_facture_reference AS no_facture_reference, + date_debut, + date_fin, + date_encours, + code_origine, + code_sorti, + CASE WHEN tiers_payant_1_id <> 0 THEN tiers_payant_1_id + [IPX] ELSE 0 END AS tiers_payant_1_id, + CASE WHEN tiers_payant_2_id <> 0 THEN tiers_payant_2_id + [IPX] ELSE 0 END AS tiers_payant_2_id, + CASE WHEN tiers_payant_22_id <> 0 THEN tiers_payant_22_id + [IPX] ELSE 0 END AS tiers_payant_22_id, + CASE WHEN tiers_payant_0_id <> 0 THEN tiers_payant_0_id + [IPX] ELSE 0 END AS tiers_payant_0_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h + FROM activite[PX].p_factures_encours + LEFT JOIN w_factures_ignore ON p_factures_encours.no_facture = no_facture_ignore + WHERE no_facture_ignore IS NULL AND + code_origine = 'P'; + + + + + INSERT INTO activite.p_factures_encours_lignes_c( + finess, + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + ) + SELECT + finess, + CASE WHEN facture_id <> 0 THEN 0 - (facture_id + [IPX]) ELSE 0 END AS facture_id, + '[CPX]' || no_facture AS no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + CASE WHEN rubrique_facturation_id <> 0 THEN rubrique_facturation_id + [IPX] ELSE 0 END AS rubrique_facturation_id, + CASE WHEN rubrique_comptabilisation_id <> 0 THEN rubrique_comptabilisation_id + [IPX] ELSE 0 END AS rubrique_comptabilisation_id, + COALESCE(w_correspondances_compte.oid,0), + prestation_id, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + CASE WHEN lieu_id <> 0 THEN lieu_id + [IPX] ELSE 0 END AS lieu_id, + nb_prestation, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + FROM activite[PX].p_factures_encours_lignes_c + LEFT JOIN w_correspondances_compte ON compte_produit_id = w_correspondances_compte.oid_source + LEFT JOIN w_factures_ignore ON p_factures_encours_lignes_c.no_facture = no_facture_ignore + WHERE no_facture_ignore IS NULL AND + facture_id IN (SELECT oid FROM activite[PX].p_factures_encours WHERE code_origine = 'P'); + + + ]]> + + + + 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id + FROM activite[PX].p_factures_rejets + LEFT JOIN w_factures_ignore ON p_factures_rejets.no_facture = no_facture_ignore + WHERE no_facture_ignore IS NULL; + + ]]> + + + + 0 THEN journal_id + [IPX] ELSE 0 END AS journal_id, + CASE WHEN sejour_id <> 0 THEN sejour_id + [IPX] ELSE 0 END AS sejour_id, + '[CPX]' || no_sejour, + CASE WHEN facture_id <> 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, + '[CPX]' || no_facture, + CASE WHEN medecin_id <> 0 THEN medecin_id + [IPX] ELSE 0 END AS medecin_id, + CASE WHEN tiers_payant_id <> 0 THEN tiers_payant_id + [IPX] ELSE 0 END AS tiers_payant_id, + texte, + montant_credit, + montant_debit, + code_erreur, + est_comptabilise, + mode_reglement_code, + taux_tva + FROM activite[PX].p_ecriture_comptable + LEFT JOIN w_correspondances_compte ON compte_id = w_correspondances_compte.oid_source + ; + + ]]> + + + + + + + + + 0 THEN facture_id + [IPX] ELSE 0 END AS facture_id, + [PPX]::bigint AS provider_id + FROM activite[PX].p_factures_comptables; + + + + ]]> + + + + = 20100101 AND to_char(date_sortie, 'YYYYMM')::numeric <= to_char(now() + interval '1 month', 'YYYYMM')::numeric + ) subview + ; + + DELETE FROM activite.p_chiffrier WHERE mois > to_char(now() + interval '1 month', 'YYYYMM')::numeric + ; + + ]]> + + + + + + + 0 AND oid + [IPX] NOT IN (SELECT oid FROM activite.t_tiers_payant); + + UPDATE activite.t_tiers_payant + SET + type_tiers_payant = source.type_tiers_payant, + code = source.code, + texte = source.texte, + texte_court = source.texte_court, + adresse = source.adresse, + code_postal_id = source.code_postal_id, + ville = source.ville, + telephone = source.telephone, + fax = source.fax, + email = source.email + FROM activite[PX].t_tiers_payant source + WHERE + source.oid + [IPX] = t_tiers_payant.oid AND + ( + t_tiers_payant.type_tiers_payant IS DISTINCT FROM source.type_tiers_payant OR + t_tiers_payant.texte IS DISTINCT FROM source.texte OR + t_tiers_payant.texte_court IS DISTINCT FROM source.texte_court OR + t_tiers_payant.adresse IS DISTINCT FROM source.adresse OR + t_tiers_payant.code_postal_id IS DISTINCT FROM source.code_postal_id OR + t_tiers_payant.ville IS DISTINCT FROM source.ville OR + t_tiers_payant.telephone IS DISTINCT FROM source.telephone OR + t_tiers_payant.fax IS DISTINCT FROM source.fax OR + t_tiers_payant.email IS DISTINCT FROM source.email + ) + ; + ]]> + + + + 0 AND oid + [IPX] NOT IN (SELECT oid FROM activite.t_medecins_administratifs); + + UPDATE activite.t_medecins_administratifs + SET + nom = source.nom, + prenom = source.prenom, + adresse = source.adresse, + code_postal_id = source.code_postal_id, + ville = source.ville, + telephone = source.telephone, + fax = source.fax, + email = source.email, + no_adeli = COALESCE(source.no_adeli,''), + code_rpps = CASE WHEN source.code_rpps <> '' AND length(source.code_rpps) = 11 THEN source.code_rpps ELSE '' END + FROM activite[PX].t_medecins_administratifs source + WHERE + source.oid + [IPX] = t_medecins_administratifs.oid AND + '[TPX]' || source.code_original = t_medecins_administratifs.code_original AND + ( + t_medecins_administratifs.nom IS DISTINCT FROM source.nom OR + t_medecins_administratifs.prenom IS DISTINCT FROM source.prenom OR + t_medecins_administratifs.adresse IS DISTINCT FROM source.adresse OR + t_medecins_administratifs.code_postal_id IS DISTINCT FROM source.code_postal_id OR + t_medecins_administratifs.ville IS DISTINCT FROM source.ville OR + t_medecins_administratifs.telephone IS DISTINCT FROM source.telephone OR + t_medecins_administratifs.fax IS DISTINCT FROM source.fax OR + t_medecins_administratifs.email IS DISTINCT FROM source.email OR + t_medecins_administratifs.no_adeli IS DISTINCT FROM COALESCE(source.no_adeli,'') OR + t_medecins_administratifs.code_rpps IS DISTINCT FROM CASE WHEN source.code_rpps <> '' AND length(source.code_rpps) = 11 THEN source.code_rpps ELSE '' END + ) + ; + + SELECT base.cti_execute('TRUNCATE activite.t_medecins_traitants_administratifs',1) + WHERE [IPX]=0 + ; + + INSERT INTO activite.t_medecins_traitants_administratifs(oid, code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT 0, '0', '****', 'Non renseigné', '', 0, 0 WHERE 0 NOT IN (SELECT oid FROM activite.t_medecins_administratifs); + + INSERT INTO activite.t_medecins_traitants_administratifs( + oid, + code, + code_original, + nom, + prenom, + statut, + specialite_id, + is_medecin_sejour, + medecin_id, + is_medecin_executant) + SELECT + oid + [IPX], + '[CPX]' || code, + '[TPX]' || code_original, + nom, + prenom, + statut, + specialite_id, + is_medecin_sejour, + medecin_id, + is_medecin_executant + FROM activite[PX].t_medecins_traitants_administratifs + WHERE oid <> 0 AND oid + [IPX] NOT IN (SELECT oid FROM activite.t_medecins_traitants_administratifs); + + UPDATE activite.t_medecins_traitants_administratifs + SET nom = source.nom, + prenom = source.prenom, + adresse = source.adresse, + code_postal_id = source.code_postal_id, + ville = source.ville, + no_adeli = COALESCE(source.no_adeli, ''), + no_rpps = CASE + WHEN source.no_rpps <> '' + AND length(source.no_rpps) = 11 THEN source.no_rpps + ELSE '' + END + FROM activite[PX].t_medecins_traitants_administratifs source + WHERE source.oid + [IPX] = t_medecins_traitants_administratifs.oid + AND '[TPX]' || source.code_original = t_medecins_traitants_administratifs.code_original + AND ( + t_medecins_traitants_administratifs.nom IS DISTINCT + FROM source.nom + OR t_medecins_traitants_administratifs.prenom IS DISTINCT + FROM source.prenom + OR t_medecins_traitants_administratifs.adresse IS DISTINCT + FROM source.adresse + OR t_medecins_traitants_administratifs.code_postal_id IS DISTINCT + FROM source.code_postal_id + OR t_medecins_traitants_administratifs.ville IS DISTINCT + FROM source.ville + OR t_medecins_traitants_administratifs.no_adeli IS DISTINCT + FROM COALESCE(source.no_adeli, '') + OR t_medecins_traitants_administratifs.no_rpps IS DISTINCT + FROM CASE + WHEN source.no_rpps <> '' + AND length(source.no_rpps) = 11 THEN source.no_rpps + ELSE '' + END + ); + + ]]> + + + + 0 AND oid + [IPX] NOT IN (SELECT oid FROM activite.t_services_facturation); + + UPDATE activite.t_services_facturation SET + code = t_services_facturation_in.code, + texte = t_services_facturation_in.texte, + texte_court = t_services_facturation_in.texte_court + FROM activite[PX].t_services_facturation t_services_facturation_in + WHERE t_services_facturation.oid = (t_services_facturation_in.oid + [IPX]) AND + ( + t_services_facturation.code IS DISTINCT FROM t_services_facturation_in.code OR + t_services_facturation.texte IS DISTINCT FROM t_services_facturation_in.texte OR + t_services_facturation.texte_court IS DISTINCT FROM t_services_facturation_in.texte_court + ) + ; + + UPDATE activite.t_services_facturation SET + code = t_services_facturation_in.code, + texte = t_services_facturation_in.texte, + texte_court = t_services_facturation_in.texte_court + FROM activite[PX].t_services_facturation t_services_facturation_in + WHERE t_services_facturation.oid = (t_services_facturation_in.oid + [IPX]) AND + ( + t_services_facturation.code IS DISTINCT FROM t_services_facturation_in.code OR + t_services_facturation.texte IS DISTINCT FROM t_services_facturation_in.texte OR + t_services_facturation.texte_court IS DISTINCT FROM t_services_facturation_in.texte_court + ) + ; + + -- Unités médicales + + INSERT INTO activite.t_unites_medicales(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite.t_unites_medicales); + + INSERT INTO activite.t_unites_medicales( + oid, + code, + code_original, + texte, + texte_court) + SELECT + oid + [IPX], + '[CPX]' || code, + '[TPX]' || code_original, + texte, + texte_court + FROM activite[PX].t_unites_medicales + WHERE oid <> 0 AND oid + [IPX] NOT IN (SELECT oid FROM activite.t_unites_medicales); + + UPDATE activite.t_unites_medicales SET + code = t_unites_medicales_in.code, + texte = t_unites_medicales_in.texte, + texte_court = t_unites_medicales_in.texte_court + FROM activite[PX].t_unites_medicales t_unites_medicales_in + WHERE t_unites_medicales.oid = (t_unites_medicales_in.oid + [IPX]) AND + ( + t_unites_medicales.code IS DISTINCT FROM t_unites_medicales_in.code OR + t_unites_medicales.texte IS DISTINCT FROM t_unites_medicales_in.texte OR + t_unites_medicales.texte_court IS DISTINCT FROM t_unites_medicales_in.texte_court + ) + ; + + -- Unités fonctionnelles + + INSERT INTO activite.t_unites_fonctionnelles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite.t_unites_fonctionnelles); + + INSERT INTO activite.t_unites_fonctionnelles( + oid, + code, + code_original, + texte, + texte_court) + SELECT + oid + [IPX], + '[CPX]' || code, + '[TPX]' || code_original, + texte, + texte_court + FROM activite[PX].t_unites_fonctionnelles + WHERE oid <> 0 AND oid + [IPX] NOT IN (SELECT oid FROM activite.t_unites_fonctionnelles); + + UPDATE activite.t_unites_fonctionnelles SET + code = t_unites_fonctionnelles_in.code, + texte = t_unites_fonctionnelles_in.texte, + texte_court = t_unites_fonctionnelles_in.texte_court + FROM activite[PX].t_unites_fonctionnelles t_unites_fonctionnelles_in + WHERE t_unites_fonctionnelles.oid = (t_unites_fonctionnelles_in.oid + [IPX]) AND + ( + t_unites_fonctionnelles.code IS DISTINCT FROM t_unites_fonctionnelles_in.code OR + t_unites_fonctionnelles.texte IS DISTINCT FROM t_unites_fonctionnelles_in.texte OR + t_unites_fonctionnelles.texte_court IS DISTINCT FROM t_unites_fonctionnelles_in.texte_court + ) + ; + + -- Activités + + INSERT INTO activite.t_activites(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite.t_activites); + + INSERT INTO activite.t_activites( + oid, + code, + code_original, + texte, + texte_court) + SELECT + oid + [IPX], + '[CPX]' || code, + '[TPX]' || code_original, + texte, + texte_court + FROM activite[PX].t_activites + WHERE oid <> 0 AND oid + [IPX] NOT IN (SELECT oid FROM activite.t_activites); + + UPDATE activite.t_activites SET + code = t_activites_in.code, + texte = t_activites_in.texte, + texte_court = t_activites_in.texte_court + FROM activite[PX].t_activites t_activites_in + WHERE t_activites.oid = (t_activites_in.oid + [IPX]) AND + ( + t_activites.code IS DISTINCT FROM t_activites_in.code OR + t_activites.texte IS DISTINCT FROM t_activites_in.texte OR + t_activites.texte_court IS DISTINCT FROM t_activites_in.texte_court + ) + ; + + + + -- Etages et lits + + INSERT INTO activite.t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE 0 NOT IN (SELECT oid FROM activite.t_etages); + + INSERT INTO activite.t_etages( + oid, + code, + code_original, + texte, + texte_court, + nb_lits, + nb_cp) + SELECT + oid + [IPX], + '[CPX]' || code, + '[TPX]' || code_original, + texte, + texte_court, + nb_lits, + nb_cp + FROM activite[PX].t_etages + WHERE oid <> 0 AND oid + [IPX] NOT IN (SELECT oid FROM activite.t_etages); + + UPDATE activite.t_etages SET + code = t_etages_in.code, + texte = t_etages_in.texte, + texte_court = t_etages_in.texte_court + FROM activite[PX].t_etages t_etages_in + WHERE t_etages.oid = (t_etages_in.oid + [IPX]) AND + ( + t_etages.code IS DISTINCT FROM t_etages_in.code OR + t_etages.texte IS DISTINCT FROM t_etages_in.texte OR + t_etages.texte_court IS DISTINCT FROM t_etages_in.texte_court + ) + ; + + + INSERT INTO activite.t_lits(oid, code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0, 'N' WHERE 0 NOT IN (SELECT oid FROM activite.t_lits); + + -- suppression des anciennes entrées + DELETE FROM activite.t_lits + USING activite[PX].t_lits t_lits_px + WHERE 1=1 + AND t_lits.code = '[CPX]' || t_lits_px.code + AND t_lits.etage_id = t_lits_px.etage_id + [IPX] + AND t_lits.oid IS DISTINCT FROM t_lits_px.oid + [IPX]; + + UPDATE activite.t_lits SET + code = t_lits_px.code || '_BAK', + texte = t_lits_px.texte, + texte_court = t_lits_px.texte_court, + etage_id = CASE WHEN t_lits_px.etage_id <> 0 THEN t_lits_px.etage_id + [IPX] ELSE 0 END + FROM activite[PX].t_lits t_lits_px + WHERE t_lits_px.oid + [IPX] = t_lits.oid AND + ( + t_lits.code IS DISTINCT FROM t_lits_px.code OR + t_lits.texte IS DISTINCT FROM t_lits_px.texte OR + t_lits.texte IS DISTINCT FROM t_lits_px.texte OR + t_lits.etage_id IS DISTINCT FROM (CASE WHEN t_lits_px.etage_id <> 0 THEN t_lits_px.etage_id + [IPX] ELSE 0 END) + ); + + INSERT INTO activite.t_lits( + oid, + code, + code_original, + texte, + texte_court, + chambre_particuliere, + etage_id) + SELECT + oid + [IPX], + '[CPX]' || code, + '[TPX]' || code_original, + texte, + texte_court, + chambre_particuliere, + CASE WHEN etage_id <> 0 THEN etage_id + [IPX] ELSE 0 END AS etage_id + FROM activite[PX].t_lits + WHERE oid <> 0 AND oid + [IPX] NOT IN (SELECT oid FROM activite.t_lits); + + UPDATE activite.t_lits SET + code = t_lits_px.code, + texte = t_lits_px.texte, + texte_court = t_lits_px.texte_court, + etage_id = CASE WHEN t_lits_px.etage_id <> 0 THEN t_lits_px.etage_id + [IPX] ELSE 0 END + FROM activite[PX].t_lits t_lits_px + WHERE t_lits_px.oid + [IPX] = t_lits.oid AND + ( + t_lits.code IS DISTINCT FROM t_lits_px.code OR + t_lits.texte IS DISTINCT FROM t_lits_px.texte OR + t_lits.texte IS DISTINCT FROM t_lits_px.texte OR + t_lits.etage_id IS DISTINCT FROM (CASE WHEN t_lits_px.etage_id <> 0 THEN t_lits_px.etage_id + [IPX] ELSE 0 END) + ); + + + ]]> + + + + 0 AND oid + [IPX] NOT IN (SELECT oid FROM activite.t_rubriques_facturation); + + UPDATE activite.t_rubriques_facturation SET + code = t_rubriques_facturation_in.code, + texte = t_rubriques_facturation_in.texte, + texte_court = t_rubriques_facturation_in.texte_court + FROM activite[PX].t_rubriques_facturation t_rubriques_facturation_in + WHERE t_rubriques_facturation.oid = (t_rubriques_facturation_in.oid + [IPX]) AND + ( + t_rubriques_facturation.code IS DISTINCT FROM t_rubriques_facturation_in.code OR + t_rubriques_facturation.texte IS DISTINCT FROM t_rubriques_facturation_in.texte OR + t_rubriques_facturation.texte_court IS DISTINCT FROM t_rubriques_facturation_in.texte_court + ) + ; + + + INSERT INTO activite.t_prestations(oid, code_original, code, texte, texte_court, clinique_honoraire) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée', '' WHERE 0 NOT IN (SELECT oid FROM activite.t_prestations); + + INSERT INTO activite[PX].t_prestations( + oid, + code, + code_original, + texte, + texte_court, + clinique_honoraire) + SELECT + oid, + code, + code_original, + texte, + texte_court, + clinique_honoraire + FROM activite.t_prestations + WHERE oid NOT IN (SELECT oid FROM activite[PX].t_prestations) AND + code NOT IN (SELECT code FROM activite[PX].t_prestations); + + + INSERT INTO activite.t_protocoles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '***', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECT oid FROM activite.t_protocoles); + + UPDATE activite.t_protocoles SET + code = '[CPX]'::text || prot_px.code::text, + texte = prot_px.texte, + texte_court = prot_px.texte + FROM + activite[PX].t_protocoles prot_px + WHERE 1=1 + AND t_protocoles.oid = (prot_px.oid + [IPX]) + AND ((t_protocoles.code::text <> ('[CPX]'::text || prot_px.code::text)) OR (t_protocoles.texte <> prot_px.texte)); + + INSERT INTO activite.t_protocoles( + oid, + code, + code_original, + texte, + texte_court) + SELECT + oid + [IPX], + '[CPX]' || code, + '[TPX]' || code_original, + texte, + texte_court + FROM activite[PX].t_protocoles + WHERE oid <> 0 AND oid + [IPX] NOT IN (SELECT oid FROM activite.t_protocoles); + + -- Motifs de non facturation + -- Attention, il y a des codes génériques + DELETE FROM activite.t_motif_non_facturation + USING activite[PX].t_motif_non_facturation t_motif_non_facturation_source + WHERE t_motif_non_facturation.oid = t_motif_non_facturation_source.oid AND + t_motif_non_facturation.code <> t_motif_non_facturation_source.code AND + [IPX] = 0 + ; + + DELETE FROM activite.t_motif_non_facturation + WHERE [IPX] = 0 AND + oid < 100000000000 AND + oid NOT IN (SELECT oid FROM activite[PX].t_motif_non_facturation) + ; + + INSERT INTO activite.t_motif_non_facturation( + oid, + code, + code_original, + texte, + texte_court) + SELECT + oid + [IPX], + '[CPX]' || code, + CASE WHEN [IPX] = 0 AND code_original LIKE '*CTI%' THEN '' ELSE '[TPX]' END || code_original, + texte, + texte_court + FROM activite[PX].t_motif_non_facturation + WHERE oid <> 0 AND + oid + [IPX] NOT IN (SELECT oid FROM activite.t_motif_non_facturation) + AND '[CPX]' || code NOT IN (SELECT code FROM activite.t_motif_non_facturation) + ; + + + + INSERT INTO activite.t_compte(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECt oid FROM activite.t_compte); + + INSERT INTO activite.t_compte( + code, + code_original, + texte, + texte_court) + SELECT + code, + code_original, + texte, + texte_court + FROM activite[PX].t_compte + WHERE oid <> 0 + AND code_original NOT IN (SELECT code_original FROM activite.t_compte) + ; + + + UPDATE activite.t_compte SET + texte = t_compte_from.texte, + texte_court = t_compte_from.texte_court, + taux_tva = CASE WHEN t_compte_from.taux_tva > 0 THEN t_compte_from.taux_tva ELSE t_compte.taux_tva END + FROM activite[PX].t_compte t_compte_from + WHERE t_compte.code = t_compte_from.code AND + [IPX] = 0 AND + ( + t_compte.texte <> t_compte_from.texte OR + t_compte.texte_court <> t_compte_from.texte_court OR + t_compte.taux_tva <> CASE WHEN t_compte_from.taux_tva > 0 THEN t_compte_from.taux_tva ELSE t_compte.taux_tva END + ) + ; + + + DROP TABLE IF EXISTS w_correspondances_compte; + CREATE TEMP TABLE w_correspondances_compte AS + SELECT + t_compte_source.oid AS oid_source, + coalesce(t_compte.oid,0) AS oid + FROM activite[PX].t_compte AS t_compte_source + LEFT JOIN activite.t_compte ON t_compte_source.code = t_compte.code AND t_compte_source.code <> ''; + + CREATE INDEX w_correspondances_compte_1 + ON w_correspondances_compte + USING btree + (oid_source); + + + INSERT INTO activite.t_journal(oid, code_original, code, texte) + SELECT 0, 0, '***', 'Non renseigné' WHERE 0 NOT IN (SELECT oid FROM activite.t_journal); + + UPDATE activite.t_journal SET + code = '[CPX]'::text || journal_from.code::text, + texte = journal_from.texte + FROM + activite[PX].t_journal journal_from + WHERE 1=1 + AND t_journal.oid = (journal_from.oid + [IPX]) + AND ((t_journal.code::text <> ('[CPX]'::text || journal_from.code::text)) OR (t_journal.texte <> journal_from.texte)); + + INSERT INTO activite.t_journal( + oid, + code, + code_original, + texte) + SELECT + oid + [IPX], + '[CPX]' || code, + '[TPX]' || code_original, + texte + FROM activite[PX].t_journal + WHERE oid <> 0 AND oid + [IPX] NOT IN (SELECT oid FROM activite.t_journal); + + + INSERT INTO activite.t_risque (oid, code, texte) + SELECT 0, '**', 'Non renseigné' WHERE 0 NOT IN (SELECT oid FROM activite.t_risque); + + INSERT INTO activite.t_risque ( + code, + texte) + SELECT + t_risque.code, + t_risque.texte + FROM + activite[PX].t_risque + LEFT JOIN activite.t_risque ris ON ris.code = t_risque.code + WHERE t_risque.oid <> 0 AND ris.code IS NULL; + + DROP TABLE IF EXISTS w_correspondances_risque; + CREATE TEMP TABLE w_correspondances_risque AS + SELECT + t_risque_source.oid AS oid_source, + coalesce(t_risque.oid,0) AS oid + FROM activite[PX].t_risque AS t_risque_source + LEFT JOIN activite.t_risque ON t_risque_source.code = t_risque.code; + + CREATE INDEX w_correspondances_risque_1 + ON w_correspondances_risque + USING btree + (oid_source); + + ]]> + + + + + + + + '' AND + p_mouvements_sejour.no_sejour = p_sejours_fusion.no_sejour AND + p_mouvements_sejour.date = p_sejours_fusion.date_entree AND + p_mouvements_sejour.nb_entrees_directes > 0; + + + UPDATE activite.p_mouvements_sejour SET + no_sejour = p_sejours.no_sejour, + sejour_id = p_sejours.oid, + nb_sorties_directes = 0, + est_dernier_mouvement_jour = CASE WHEN nb_sorties_directes > 0 OR (p_mouvements_sejour.date = p_sejours.date_entree AND p_mouvements_sejour.heure_fin = 240000) THEN '0' ELSE p_mouvements_sejour.est_dernier_mouvement_jour END, + heure_fin = CASE WHEN nb_sorties_directes > 0 OR (p_mouvements_sejour.date = p_sejours.date_entree AND p_mouvements_sejour.heure_fin = 240000) THEN to_char(to_timestamp(to_char(p_sejours.heure_entree,'FM000000'),'HH24MISS')::timestamp without time zone - interval '1 second','HH24MISS')::numeric ELSE p_mouvements_sejour.heure_fin END + FROM activite.t_sejour + JOIN activite.p_sejours ON t_sejour.no_sejour_fusion = p_sejours.no_sejour + WHERE t_sejour.no_sejour_fusion <> '' AND + p_mouvements_sejour.no_sejour = t_sejour.no_sejour AND + (p_mouvements_sejour.date < p_sejours.date_entree OR + (p_mouvements_sejour.date = p_sejours.date_entree AND + p_mouvements_sejour.heure_debut < p_sejours.heure_entree) + ); + + -- Fusion automatique sur nom, date de naissance (séjours présents chez les deux prestataires avec même date entrée) + DROP TABLE IF EXISTS w_fusion_sejours; + CREATE TEMP TABLE w_fusion_sejours AS + SELECT + p_sejours_1.no_sejour AS no_sejour_source, + p_sejours_1.oid AS oid_source, + p_sejours_1.date_entree AS date_entree_source, + p_patients_1.nom AS nom_source, + p_sejours_2.no_sejour AS no_sejour_cible, + p_sejours_2.oid AS oid_cible, + p_sejours_2.date_entree AS date_entree_cible, + p_patients_2.nom AS nom_cible + FROM activite.p_sejours p_sejours_1 + JOIN activite.p_patients p_patients_1 ON p_sejours_1.no_patient = p_patients_1.no_patient + JOIN activite.p_sejours p_sejours_2 ON + p_sejours_1.date_entree = p_sejours_2.date_entree AND + p_sejours_1.no_sejour <> p_sejours_2.no_sejour AND + p_sejours_1.oid >= 200000000000 AND + p_sejours_2.oid < 200000000000 AND + (p_sejours_1.date_sortie = p_sejours_2.date_sortie OR p_sejours_1.code_sorti <> '1') + JOIN activite.p_patients p_patients_2 ON p_sejours_2.no_patient = p_patients_2.no_patient + WHERE + (base.cti_soundex_nom(p_patients_1.nom) = base.cti_soundex_nom(p_patients_2.nom) AND + base.cti_soundex_nom(p_patients_1.prenom) = base.cti_soundex_nom(p_patients_2.prenom) AND + p_patients_1.date_naissance = p_patients_2.date_naissance) + OR + (base.cti_soundex_nom(p_patients_1.nom) = base.cti_soundex_nom(p_patients_2.nom_naissance) AND + base.cti_soundex_nom(p_patients_1.prenom) = base.cti_soundex_nom(p_patients_2.prenom) AND + p_patients_1.date_naissance = p_patients_2.date_naissance) + OR + (upper(p_patients_1.nom) = upper(p_patients_2.nom) AND + p_patients_1.date_naissance = p_patients_2.date_naissance); + + -- Fusion automatique sur n° de séjour + INSERT INTO w_fusion_sejours + SELECT + p_sejours_1.no_sejour AS no_sejour_source, + p_sejours_1.oid AS oid_source, + p_sejours_1.date_entree AS date_entree_source, + p_patients_1.nom AS nom_source, + p_sejours_2.no_sejour AS no_sejour_cible, + p_sejours_2.oid AS oid_cible, + p_sejours_2.date_entree AS date_entree_cible, + p_patients_2.nom AS nom_cible + FROM activite.p_sejours p_sejours_1 + JOIN activite.p_patients p_patients_1 ON p_sejours_1.no_patient = p_patients_1.no_patient + JOIN activite.p_sejours p_sejours_2 ON + substr(p_sejours_1.no_sejour,4) = p_sejours_2.no_sejour AND + p_sejours_1.oid >= 200000000000 AND + p_sejours_2.oid < 200000000000 AND + (p_sejours_1.date_entree = p_sejours_2.date_entree) + JOIN activite.p_patients p_patients_2 ON p_sejours_2.no_patient = p_patients_2.no_patient + WHERE + p_sejours_1.no_sejour NOT IN (SELECT no_sejour_source FROM w_fusion_sejours) AND + (base.cti_soundex_nom(p_patients_1.nom) = base.cti_soundex_nom(p_patients_2.nom) AND + base.cti_soundex_nom(p_patients_1.prenom) = base.cti_soundex_nom(p_patients_2.prenom) AND + p_patients_1.date_naissance = p_patients_2.date_naissance) + OR + (base.cti_soundex_nom(p_patients_1.nom) = base.cti_soundex_nom(p_patients_2.nom_naissance) AND + base.cti_soundex_nom(p_patients_1.prenom) = base.cti_soundex_nom(p_patients_2.prenom) AND + p_patients_1.date_naissance = p_patients_2.date_naissance) + OR + (upper(p_patients_1.nom) = upper(p_patients_2.nom) AND + p_patients_1.date_naissance = p_patients_2.date_naissance) + OR + (upper(p_patients_1.nom) = 'INDISPONIBLE'); + + -- Cas des doublons à supprimer complètement de l'ancien prestataire. + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'FUSION_DELETE', + 'Fusion. Suppression sejour ancien prestataire si sejour commun entre deux prestataires', + '0'::text, + '' + WHERE 'FUSION_DELETE' NOT IN (SELECT code FROM activite.t_divers); + + DELETE FROM activite.p_mouvements_sejour + USING activite.t_divers + WHERE t_divers.code = 'FUSION_DELETE' AND + t_divers.valeur = '1' AND + p_mouvements_sejour.no_sejour IN (SELECT oid_source FROM w_fusion_sejours) + ; + + DELETE FROM activite.p_sejours_assurance + USING activite.t_divers + WHERE t_divers.code = 'FUSION_DELETE' AND + t_divers.valeur = '1' AND + p_sejours_assurance.sejour_id IN (SELECT no_sejour_source FROM w_fusion_sejours) + ; + + DELETE FROM activite.p_factures_lignes_c + USING activite.p_factures, + activite.t_divers + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + t_divers.code = 'FUSION_DELETE' AND + t_divers.valeur = '1' AND + p_factures.no_sejour IN (SELECT no_sejour_source FROM w_fusion_sejours) + ; + + DELETE FROM activite.p_factures_lignes_h + USING activite.p_factures, + activite.t_divers + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + t_divers.code = 'FUSION_DELETE' AND + t_divers.valeur = '1' AND + p_factures.no_sejour IN (SELECT no_sejour_source FROM w_fusion_sejours) + ; + + DELETE FROM activite.p_factures_soldes_c + USING activite.p_factures, + activite.t_divers + WHERE p_factures_soldes_c.no_facture = p_factures.no_facture AND + t_divers.code = 'FUSION_DELETE' AND + t_divers.valeur = '1' AND + p_factures.no_sejour IN (SELECT no_sejour_source FROM w_fusion_sejours) + ; + + DELETE FROM activite.p_factures_soldes_h + USING activite.p_factures, + activite.t_divers + WHERE p_factures_soldes_h.no_facture = p_factures.no_facture AND + t_divers.code = 'FUSION_DELETE' AND + t_divers.valeur = '1' AND + p_factures.no_sejour IN (SELECT no_sejour_source FROM w_fusion_sejours) + ; + + DELETE FROM activite.p_factures + USING activite.t_divers + WHERE t_divers.code = 'FUSION_DELETE' AND + t_divers.valeur = '1' AND + p_factures.no_sejour IN (SELECT no_sejour_source FROM w_fusion_sejours) + ; + + DELETE FROM activite.p_factures_reference + USING activite.t_divers + WHERE t_divers.code = 'FUSION_DELETE' AND + t_divers.valeur = '1' AND + p_factures_reference.no_sejour IN (SELECT no_sejour_source FROM w_fusion_sejours) + ; + + DELETE FROM activite.p_factures_reference_tiers + USING activite.t_divers + WHERE t_divers.code = 'FUSION_DELETE' AND + t_divers.valeur = '1' AND + p_factures_reference_tiers.no_sejour IN (SELECT no_sejour_source FROM w_fusion_sejours) + ; + + + UPDATE activite.p_factures + SET sejour_id = oid_cible, + no_sejour = no_sejour_cible + FROM w_fusion_sejours + WHERE p_factures.no_sejour = no_sejour_source; + + UPDATE activite.p_factures_reference + SET sejour_id = oid_cible, + no_sejour = no_sejour_cible + FROM w_fusion_sejours + WHERE p_factures_reference.no_sejour = no_sejour_source; + + UPDATE activite.p_factures_reference_tiers + SET sejour_id = oid_cible, + no_sejour = no_sejour_cible + FROM w_fusion_sejours + WHERE p_factures_reference_tiers.no_sejour = no_sejour_source; + + UPDATE activite.p_factures_encours + SET sejour_id = oid_cible + FROM w_fusion_sejours + WHERE p_factures_encours.sejour_id = oid_source; + + UPDATE activite.p_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite.p_factures, + activite.p_mouvements_sejour + WHERE + p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour IN (SELECT no_sejour_cible FROM w_fusion_sejours) AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + p_factures_lignes_c.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + p_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + + UPDATE activite.p_factures_lignes_h + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite.p_factures, + activite.p_mouvements_sejour + WHERE + p_factures_lignes_h.no_facture = p_factures.no_facture AND + p_factures.no_sejour IN (SELECT no_sejour_cible FROM w_fusion_sejours) AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + p_factures_lignes_h.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + p_factures_lignes_h.lieu_id <> p_mouvements_sejour.lieu_id; + + -- Suppression des factures BG qui ont été récupérées 2 fois (on garde celle du provider en cours) + DROP TABLE IF EXISTS w_factures_bg_double; + CREATE TEMP TABLE w_factures_bg_double AS + SELECT no_sejour, (MAX(ARRAY[provider_id::text, no_facture]))[2] AS no_facture_double + FROM activite.p_factures + WHERE no_facture LIKE '%BG' AND + code_facture = '1' + GROUP BY 1 + HAVING count(DISTINCT provider_id) > 1 + ; + + ANALYSE w_factures_bg_double + ; + + INSERT INTO w_factures_bg_double + SELECT no_sejour, no_facture + FROM + ( + SELECT + MAX(CASE WHEN no_sejour = replace(no_facture,'.BG','') THEN '' ELSE no_sejour END) AS no_sejour, + MAX(CASE WHEN no_sejour = replace(no_facture,'.BG','') THEN '' ELSE no_facture END) AS no_facture, + CASE WHEN substr(no_facture,3,1) = '_' THEN substr(no_facture,4) ELSE no_facture END AS no_facture_g + FROM activite.p_factures + WHERE no_facture LIKE '%BG' AND + code_facture = '1' + GROUP BY 3 + HAVING count(DISTINCT no_sejour) > 1 AND + count(DISTINCT provider_id) > 1 AND + MAX(CASE WHEN no_sejour = replace(no_facture,'.BG','') THEN 1 ELSE 0 END) > 0 + ) subview + WHERE no_sejour NOT IN (SELECT w_factures_bg_double.no_sejour FROM w_factures_bg_double) + ; + + + -- BG sur ancien prestataire et en cours sur nouveau -> Supprimer encours + INSERT INTO w_factures_bg_double + SELECT no_sejour, (MIN(ARRAY[code_facture, no_facture]))[2] AS no_facture_double + FROM activite.p_factures + WHERE no_facture LIKE '%BG' AND + no_sejour NOT IN (SELECT w_factures_bg_double.no_sejour FROM w_factures_bg_double) + GROUP BY 1 + HAVING count(DISTINCT provider_id) > 1 AND MAX(code_facture) = '1' + ; + + INSERT INTO w_factures_bg_double + SELECT no_sejour, no_facture + FROM + ( + SELECT + MAX(CASE WHEN no_sejour = replace(no_facture,'.BG','') THEN '' ELSE no_sejour END) AS no_sejour, + MAX(CASE WHEN no_sejour = replace(no_facture,'.BG','') THEN '' ELSE no_facture END) AS no_facture, + CASE WHEN substr(no_facture,3,1) = '_' THEN substr(no_facture,4) ELSE no_facture END AS no_facture_g + FROM activite.p_factures + WHERE no_facture LIKE '%BG' + GROUP BY 3 + HAVING count(DISTINCT no_sejour) > 1 AND + count(DISTINCT provider_id) > 1 AND + MAX(CASE WHEN no_sejour = replace(no_facture,'.BG','') THEN 1 ELSE 0 END) > 0 + ) subview + WHERE no_sejour NOT IN (SELECT w_factures_bg_double.no_sejour FROM w_factures_bg_double) + ; + + + ANALYSE w_factures_bg_double + ; + + DELETE FROM activite.p_factures + USING w_factures_bg_double + WHERE no_facture = no_facture_double + ; + + DELETE FROM activite.p_factures_lignes_c + USING w_factures_bg_double + WHERE no_facture = no_facture_double + ; + + DELETE FROM activite.p_factures_lignes_h + USING w_factures_bg_double + WHERE no_facture = no_facture_double + ; + + + -- Suppression encours calculés chez les deux prestataires pour même séjour + UPDATE activite.p_factures + SET type_facture = 'E' + FROM activite.t_providers + WHERE provider_id = t_providers.oid AND + t_providers.code ILIKE 'SH' AND + code_facture = '0' AND type_facture = '0' + ; + + DROP TABLE IF EXISTS w_factures_encours_trop; + CREATE TEMP TABLE w_factures_encours_trop AS + SELECT p_factures.no_sejour + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.provider_id = 0 + GROUP BY 1 + HAVING count(DISTINCT CASE WHEN type_facture = 'E' AND p_factures.provider_id > 0 THEN no_facture ELSE NULL END) > 0 AND + count(DISTINCT CASE WHEN p_factures.provider_id = 0 THEN no_facture ELSE NULL END) > 0 AND + count(DISTINCT CASE WHEN p_factures.provider_id > 0 THEN no_facture ELSE NULL END) > 0 + ORDER BY 1; + + -- Transfert des lignes non facturées sur les autres factures + UPDATE activite.p_factures_lignes_non_facturees_c SET + no_facture = p_factures_0.no_facture, + facture_id = p_factures_0.oid + FROM activite.p_factures p_factures_2 + JOIN w_factures_encours_trop ON w_factures_encours_trop.no_sejour = p_factures_2.no_sejour + JOIN activite.p_factures p_factures_0 ON p_factures_2.no_sejour = p_factures_0.no_sejour AND + p_factures_0.provider_id = 0 AND + p_factures_0.type_facture = 'E' + WHERE p_factures_lignes_non_facturees_c.no_facture = p_factures_2.no_facture AND + p_factures_2.provider_id > 0 AND + p_factures_2.type_facture = 'E' AND + p_factures_lignes_non_facturees_c.date_debut BETWEEN p_factures_0.date_debut AND p_factures_0.date_fin AND + p_factures_0.no_facture || '-' || p_factures_lignes_non_facturees_c.prestation_id NOT IN + (SELECT p_factures_lignes_non_facturees_c.no_facture || '-' || p_factures_lignes_non_facturees_c.prestation_id + FROM activite.p_factures_lignes_non_facturees_c) + ; + + -- Suppression lignes en trop + DELETE + FROM activite.p_factures_lignes_c + USING activite.p_factures + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.type_facture = 'E' AND + p_factures.provider_id > 0 AND + p_factures.no_sejour IN (SELECT no_sejour FROM w_factures_encours_trop); + + -- Suppression factures en cours en trop + DELETE + FROM activite.p_factures + WHERE no_sejour IN (SELECT no_sejour FROM w_factures_encours_trop) AND + p_factures.type_facture = 'E' AND + p_factures.provider_id > 0; + + + -- Suppression factures en cours prestataire actuel qui ont été facturées par le précédent + DROP TABLE IF EXISTS w_factures_encours_trop; + CREATE TEMP TABLE w_factures_encours_trop AS + SELECT p_factures.no_sejour, + MIN(CASE WHEN p_factures.provider_id > 0 AND code_facture = '1' THEN date_debut ELSE null END) AS date_debut, + MAX(CASE WHEN p_factures.provider_id > 0 AND code_facture = '1' THEN date_fin ELSE null END) AS date_fin + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.provider_id = 0 + GROUP BY 1 + HAVING count(DISTINCT CASE WHEN type_facture = 'E' AND p_factures.provider_id = 0 THEN no_facture ELSE NULL END) > 0 AND + count(DISTINCT CASE WHEN type_facture <> 'E' AND p_factures.provider_id > 0 THEN no_facture ELSE NULL END) > 0 AND + MIN(CASE WHEN p_factures.provider_id = 0 AND code_facture <> '1' THEN date_debut ELSE null END) <= + MAX(CASE WHEN p_factures.provider_id > 0 AND code_facture = '1' THEN date_fin ELSE null END) + ORDER BY 1; + + + DELETE + FROM activite.p_factures_lignes_c + USING activite.p_factures + JOIN w_factures_encours_trop ON w_factures_encours_trop.no_sejour = p_factures.no_sejour AND + p_factures.date_debut < w_factures_encours_trop.date_fin + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.type_facture = 'E' AND + p_factures.provider_id = 0 ; + + + DELETE + FROM activite.p_factures + USING w_factures_encours_trop + WHERE w_factures_encours_trop.no_sejour = p_factures.no_sejour AND + p_factures.date_debut < w_factures_encours_trop.date_fin AND + p_factures.type_facture = 'E' AND + p_factures.provider_id = 0; + + DELETE FROM activite.p_sejours WHERE no_sejour IN (SELECT no_sejour_source FROM w_fusion_sejours); + DELETE FROM activite.p_mouvements_sejour WHERE no_sejour IN (SELECT no_sejour_source FROM w_fusion_sejours); + DELETE FROM activite.p_sejours_assurance WHERE sejour_id IN (SELECT oid_source FROM w_fusion_sejours); + + -- Si séjours en double complet, les factures ont été supprimées et donc le chiffrier ne veux plus rien dire + UPDATE activite.p_chiffrier_comptable SET + montant_ventes_c = 0, + montant_ventes_h = 0, + montant_reglements_c = 0, + montant_reglements_h = 0, + montant_solde_client_c = 0, + montant_solde_client_h = 0 + FROM activite.t_divers + WHERE t_divers.code = 'FUSION_DELETE' AND + t_divers.valeur = '1' AND + provider_id = 2 + ; + + + ]]> + + + + 0 AND + substr(p_factures_encours.no_sejour,3,1) <> '_' + ; + + ]]> + + + + = date_entree + AND date_sortie < '2099-12-31'::date + GROUP BY 2 + ORDER BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'c_postaux', code_postal_id + FROM activite.p_sejours + WHERE code_postal_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'c_postaux') + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'medecin_s', medecin_sejour_id + FROM activite.p_sejours + WHERE medecin_sejour_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'medecin_s') + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'medecin_s', medecin_sejour_id + FROM activite.p_mouvements_sejour + WHERE medecin_sejour_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'medecin_s') + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'ghs', ghs_id + FROM activite.p_sejours + WHERE ghs_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'ghs') + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'ghs', ghs_id + FROM activite.p_factures + WHERE ghs_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'ghs') + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'medecin_x', medecin_facture_id + FROM activite.p_factures_lignes_h + WHERE medecin_facture_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'medecin_x') + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'rubrique_c', rubrique_facturation_id + FROM activite.p_factures_lignes_c WHERE rubrique_facturation_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'rubrique_c') + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'rubrique_c', rubrique_comptabilisation_id + FROM activite.p_factures_lignes_c WHERE rubrique_comptabilisation_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'rubrique_c') + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'rubrique_c', rubrique_comptabilisee_id + FROM activite.p_factures_soldes_c WHERE rubrique_comptabilisee_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'rubrique_c') + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'prestation_c', prestation_id + FROM activite.p_factures_lignes_c WHERE prestation_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'prestation_c') + GROUP BY 2; + + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'prestation_c', prestation_id + FROM activite.p_factures_soldes_c WHERE prestation_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'prestation_c') + GROUP BY 2; + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'prestation_h', prestation_id + FROM activite.p_factures_lignes_h WHERE prestation_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'prestation_h') + GROUP BY 2; + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'acte_h', acte_id + FROM activite.p_factures_lignes_h WHERE acte_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'acte_h') + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'protocole_h', protocole_id + FROM activite.p_factures_lignes_h + WHERE protocole_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'protocole_h') + GROUP BY 2; + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'tiers_payant', tiers_payant_0_id + FROM activite.p_factures WHERE tiers_payant_0_id <> 0 AND tiers_payant_0_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'tiers_payant') + GROUP BY 2; + + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'tiers_payant', tiers_payant_1_id + FROM activite.p_factures WHERE tiers_payant_1_id <> 0 AND tiers_payant_1_id NOT IN (SELECT oid + FROM activite.p_oids WHERE code_table = 'tiers_payant') + GROUP BY 2; + + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'tiers_payant', tiers_payant_2_id + FROM activite.p_factures WHERE tiers_payant_2_id <> 0 AND tiers_payant_2_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'tiers_payant') + GROUP BY 2; + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'tiers_payant', tiers_payant_22_id + FROM activite.p_factures WHERE tiers_payant_22_id <> 0 AND tiers_payant_22_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'tiers_payant') + GROUP BY 2; + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'mode_traitement', t_services_facturation.mode_traitement_id + FROM activite.t_lieux JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE + t_services_facturation.mode_traitement_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'mode_traitement' AND oid IS NOT NULL) AND t_services_facturation.mode_traitement_id IS NOT NULL + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'lit', lit_id + FROM activite.t_lieux WHERE lit_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'lit') + GROUP BY 2; + + + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'service', service_facturation_id + FROM activite.t_lieux WHERE service_facturation_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'service') + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'etage', etage_id + FROM activite.t_lieux, activite.t_lits WHERE lit_id = t_lits.oid AND etage_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'etage') + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'uf', unite_fonctionnelle_id + FROM activite.t_lieux WHERE unite_fonctionnelle_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'uf') + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'um', unite_medicale_id + FROM activite.t_lieux WHERE unite_medicale_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'um') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'medecin_t', medecin_traitant_id + FROM activite[PX].p_sejours + WHERE medecin_traitant_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'medecin_t') + GROUP BY 2; + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/import_activite/iCTI_import_activite_HEMAT2A.XML b/import_activite/iCTI_import_activite_HEMAT2A.XML new file mode 100644 index 0000000..ac06c2a --- /dev/null +++ b/import_activite/iCTI_import_activite_HEMAT2A.XML @@ -0,0 +1,3221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + LEFT JOIN base.t_ghm ON ghm_code = t_ghm.code + LEFT JOIN base.t_ghs ON ghs_code = t_ghs.code + LEFT JOIN base.t_codes_postaux ON w_ASSURES.CP = t_codes_postaux.code + WHERE OK = 'O' + ; + + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_13'); + + -- Forcage type selon séjour + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour::int + FROM activite.t_sejour + WHERE t_sejour.no_sejour = w_sejours.no_sejour AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9') + AND t_sejour.type_sejour is not NULL ; + + INSERT INTO activite[PX].p_sejours ( + no_sejour, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + code_postal_id, + medecin_sejour_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + ghm_id, + ghs_id, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + est_budget_global, + finess + ) + SELECT + + w_sejours.no_sejour, + w_sejours.code_original, + w_sejours.no_patient, + w_sejours.date_entree, + w_sejours.heure_entree, + w_sejours.date_sortie, + w_sejours.heure_sortie, + w_sejours.code_sexe::char(1), + w_sejours.age, + w_sejours.code_sorti, + w_sejours.code_prevu, + w_sejours.type_sejour::char(1), + w_sejours.code_postal_id, + w_sejours.medecin_sejour_id, + w_sejours.date_groupage, + w_sejours.type_sejour::char(1), + w_sejours.mode_traitement_id, + w_sejours.mode_entree::char(1), + w_sejours.provenance::char(1), + w_sejours.mode_sortie::char(1), + w_sejours.destination::char(1), + w_sejours.ghm_id, + w_sejours.ghs_id, + w_sejours.tiers_payant_0_id, + w_sejours.tiers_payant_1_id, + w_sejours.tiers_payant_2_id, + w_sejours.tiers_payant_22_id, + w_sejours.est_budget_global, + w_sejours.finess + FROM w_sejours + ; + + ANALYSE activite.p_sejours + ; + + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '[PX]' = ''; + + -- GHM selon ghs dialyse + UPDATE activite.p_sejours + SET ghm_id = t_ghm.oid + FROM base.t_ghs, base.t_ghm + WHERE ghs_id = t_ghs.oid AND + t_ghm.code = '28Z04Z' AND + p_sejours.ghm_id = 0 + ; + + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '[PX]' = ''; + + + -- recréation index + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_13'); + + + -- assurance + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_4'); + + INSERT INTO activite.p_sejours_assurance( + sejour_id, + tiers_payant_0_id, + tiers_payant_1_id, + matricule_1, + tiers_payant_2_id, + matricule_2, + tiers_payant_22_id, + matricule_22) + SELECT + oid AS sejour_id, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + NUM_SECU, + p_sejours.tiers_payant_2_id, + '', + p_sejours.tiers_payant_22_id, + ''::text AS matricule_22 + FROM w_ASSURES + JOIN activite.p_sejours ON code_original = NUM_PAT AND p_sejours.etat = ''; + + + + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_4'); + + + + ]]> + + + + 1 + ) subview + WHERE w_mouvements_sejour.no_sejour = subview.no_sejour AND + w_mouvements_sejour.date = subview.date AND + w_mouvements_sejour.heure_debut = subview.heure_debut + ; + + DELETE FROM w_mouvements_sejour + USING ( + SELECT + no_sejour, date, heure_debut, MAX(CTID) AS fromCTID + FROM w_mouvements_sejour + GROUP BY 1,2,3 + HAVING count(*) > 1) subview + WHERE 1=1 + AND subview.no_sejour = w_mouvements_sejour.no_sejour + AND subview.date = w_mouvements_sejour.date + AND subview.heure_debut = w_mouvements_sejour.heure_debut + AND subview.fromCTID != w_mouvements_sejour.CTID; + + + + -- Mise en production des mouvements + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_1'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_2'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_3'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_4'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_5'); + + + INSERT INTO activite.p_mouvements_sejour( + sejour_id, no_sejour, date, est_mouvement_previsionnel, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + jour_semaine, is_weekend) + SELECT sejour_id, no_sejour, date, est_mouvement_previsionnel ,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + jour_semaine, is_weekend + FROM w_mouvements_sejour + WHERE heure_fin >= heure_debut + ORDER BY no_sejour; + + + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_5'); + + ANALYSE activite.p_mouvements_sejour + ; + + -- Ajout des séances non rapportées par la facturation selon la présence par jour des 28 derniers jours + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT p_mouvements_sejour.no_sejour, + date_part('dow',date) AS jour_semaine, + (MAX(ARRAY[date::text,lieu_id::text]))[2]::bigint AS lieu_id, + date(MAX(date_max + interval '1 day')) AS date_first, count(*), max(date_max) + FROM activite.p_mouvements_sejour + JOIN ( + SELECT p_mouvements_sejour.no_sejour, MAX(date) AS date_max + FROM activite.p_mouvements_sejour + JOIN activite.p_sejours ON p_mouvements_sejour.no_sejour = p_sejours.no_sejour + WHERE nb_seances > 0 AND code_sorti = 0 + GROUP BY 1 + ) subview ON + p_mouvements_sejour.no_sejour = subview.no_sejour AND + p_mouvements_sejour.date > date(date_max - interval '28 days') + WHERE nb_seances > 0 + GROUP BY 1,2 + HAVING count(*) >= 3 + ORDER BY 1,2,3 + ; + + ANALYSE w_sejours_seances + ; + + UPDATE w_sejours_seances + SET jour_semaine = 7 + WHERE jour_semaine = 0 + ; + + INSERT INTO activite.p_mouvements_sejour( + sejour_id, no_sejour, date, est_mouvement_previsionnel, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + jour_semaine, is_weekend) + SELECT p_sejours.oid AS sejour_id, + w_sejours_seances.no_sejour, + p_calendrier.date, + '0' AS est_mouvement_previsionnel , + 0 AS nb_jours_js_non_inclus, + w_sejours_seances.lieu_id, + 0 AS nb_entrees_directes, + 0 AS nb_sorties_directes, + 0 AS nb_urgences, + 0 AS nb_externes, + 0 AS nb_ambulatoires, + p_sejours.medecin_sejour_id, + 0 AS nb_jours_js_inclus, + 1 AS nb_seances, + 0 AS nb_entrees_mutation_service, + 0 AS nb_sorties_mutation_service, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + 0 AS nb_entrees_mutation_etage, + 0 AS nb_sorties_mutation_etage, + 0 AS nb_chambres_particulieres, + 080000 AS heure_debut, + 180000 AS heure_fin, + '0' AS est_jour_entree, + '0' AS est_jour_sortie, + '0' AS est_jour_hospitalisation, + '0' AS est_chambre_particuliere, + 0 AS nb_entrees_mutation_unite_medicale, + 0 AS nb_sorties_mutation_unite_medicale, + 0 AS nb_bebes, + p_calendrier.jour_semaine, + p_calendrier.is_weekend + FROM w_sejours_seances + JOIN activite.p_sejours ON w_sejours_seances.no_sejour = p_sejours.no_sejour + JOIN base.p_calendrier ON + p_calendrier.date BETWEEN date_first AND date(now()) AND + p_calendrier.jour_semaine = w_sejours_seances.jour_semaine + ; + + -- Lieux de sortie + + UPDATE activite.p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite.p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + UPDATE activite.p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite.p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie AND p_mouvements_sejour.nb_sorties_directes = 1 + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + UPDATE activite.p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite.p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL) ; + + UPDATE activite.p_sejours SET lieu_sortie_id = 0 + WHERE lieu_sortie_id IS NULL ; + + + UPDATE activite.p_sejours SET lieu_sortie_id = 0 + WHERE p_sejours.code_prevu = '1' AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL); + + + + ]]> + + + + + + + + + '6' AND p_sejours.type_sejour <> '9' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13; + + + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + code_cp_demandee, + ghs_id, + date_debut, + date_fin) + SELECT finess, + no_sejour, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || substr(p_calendrier.mois,3,4) ELSE '' END, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || substr(p_calendrier.mois,3,4) ELSE '' END, + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + code_cp_demandee , + ghs_id, + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date, CASE WHEN avec_facturation_intermediaire = '1' THEN date(date_trunc('month',p_calendrier.date) + interval '1 month' - interval '1 day') ELSE NULL END)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13 + HAVING MIN(GREATEST(date_debut_encours, p_calendrier.date)) >= '[ENV_ADM_ANNEEDEBUT]0101' + ; + + + + UPDATE activite[PX].p_factures SET + date_debut = date_entree, + date_fin = CASE WHEN code_sorti = 1 THEN date_sortie ELSE date_fin END + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid AND + avec_facturation_intermediaire IS DISTINCT FROM '1' + WHERE p_factures.no_sejour = p_sejours.no_sejour AND + CASE WHEN code_sorti = 1 THEN date_sortie ELSE date(now()) END - date_entree < 30 AND + ( + p_factures.date_debut <> date_entree OR + p_factures.date_fin <> CASE WHEN code_sorti = 1 THEN date_sortie ELSE date_fin END + ); + + + + + ]]> + + + + + + + + + 0 THEN PRIX_UNIT / PRIX_UNIT_NATIONAL ELSE 1 END AS coefficient_mco, + COALESCE(W_RUBRIQUE_FACTUR_source.rubrique_facturation_id,0) AS rubrique_facturation_id, + COALESCE(W_RUBRIQUE_FACTUR_source.rubrique_facturation_id,0) AS rubrique_comptabilisation_id, + COALESCE(W_RUBRIQUE_FACTUR_source.compte_produit_id,0) AS compte_produit_id, + COALESCE(W_RUBRIQUE_FACTUR_source.prestation_id,0) AS prestation_id, + MT_FACT AS montant_facture, + PART_ASS AS montant_facture_0, + PART_CAISSE AS montant_facture_1, + PART_MUT AS montant_facture_2, + 0::numeric AS montant_facture_22, + round(base.cti_division(PART_ASS,MT_FACT)*100.0,0) AS taux_0, + round(base.cti_division(PART_CAISSE,MT_FACT)*100.0,0) AS taux_1, + round(base.cti_division(PART_MUT,MT_FACT)*100.0,0) AS taux_2, + 0::numeric AS taux_22, + CASE WHEN PRIX_UNIT_NATIONAL > 0 THEN PRIX_UNIT_NATIONAL ELSE PRIX_UNIT END AS prix_unitaire, + COALESCE(t_lieux.oid,0) AS lieu_id, + + MT_FACT AS montant_comptabilise, + PART_ASS AS montant_comptabilise_0, + PART_CAISSE AS montant_comptabilise_1, + PART_MUT AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + + 0, + 0, + 0, + 0, + 0, + + 1::integer AS origine_facturation_id, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour + + FROM w_LIGNES_FACTURES + JOIN activite.p_factures ON w_LIGNES_FACTURES.NUM_FACT = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + LEFT JOIN w_RUBRIQUE_FACTUR_source ON w_RUBRIQUE_FACTUR_source.NUM_ACTE = w_LIGNES_FACTURES.NUM_ACTE + LEFT JOIN activite.t_lieux ON + t_lieux.code_original_1 = w_LIGNES_FACTURES.service_facturation_code_original AND + t_lieux.code_original_2 = '' AND + t_lieux.code_original_4 = '' AND + t_lieux.code_original_5 = w_LIGNES_FACTURES.unite_fonctionnelle_code_original AND + t_lieux.code_original_6 = w_LIGNES_FACTURES.unite_fonctionnelle_code_original + WHERE w_LIGNES_FACTURES.HONO_SEJ = 'false' + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_8'); + + ANALYSE activite.p_factures_lignes_c + ; + + + SELECT activite[PX].cti_reorganize_rubrique_facture_c('activite.p_factures_lignes_c'); + + + + -- Eclatement des supplements par jour + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + p_factures_lignes_c.CTID AS from_CTID, + t_prestations.code AS prestation_code, + CASE WHEN p_sejours.type_sejour <> '5' THEN date(p_sejours.date_entree) ELSE p_factures_lignes_c.date_debut END AS date_debut_ghs, + CASE WHEN p_sejours.type_sejour <> '5' THEN date(p_sejours.date_sortie - interval '1 day') ELSE p_factures_lignes_c.date_fin END AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN type_sejour = '5' THEN p_factures_lignes_c.date_debut WHEN t_prestations.code = 'GHS' THEN date(date_entree + interval '1 day') ELSE date(p_factures_lignes_c.date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN type_sejour = '5' THEN p_factures_lignes_c.date_fin WHEN t_prestations.code = 'GHS' THEN date(p_sejours.date_sortie - interval '1 day') ELSE date(p_factures_lignes_c.date_debut + ((ABS(nb_prestation)-1) || ' day')::interval) END AS date_fin_det, + ABS(CASE WHEN type_sejour <> '5' AND t_prestations.code = 'GHS' THEN date(date_sortie) - date(date_entree) ELSE nb_prestation END) AS nb_det, + p_factures_lignes_c.* + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code IN ('PJ', 'PJ1', 'PJ2', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (type_sejour <> '5' AND t_prestations.code = 'GHS' AND date(date_sortie) - date(date_entree) > 1)) ; + + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM activite[PX].p_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture; + + CREATE INDEX w_factures_lignes_sup_c_i1 + ON w_factures_lignes_sup_c + USING btree + (date_debut); + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + from_CTID, + no_facture, + date AS date_debut, + date AS date_fin, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + round(montant_facture / ABS(nb_det),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + round(montant_comptabilise / ABS(nb_det),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_det),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_det),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_det),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_det),2) AS montant_comptabilise_22, + round(montant_encours / ABS(nb_det),2) AS montant_encours, + round(montant_encours_0 / ABS(nb_det),2) AS montant_encours_0, + round(montant_encours_1 / ABS(nb_det),2) AS montant_encours_1, + round(montant_encours_2 / ABS(nb_det),2) AS montant_encours_2, + round(montant_encours_22 / ABS(nb_det),2) AS montant_encours_22, + round(montant_facture_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_actes_inclus_dans_sejour, + round(montant_facture_0_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_0_actes_inclus_dans_sejour, + round(montant_facture_1_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_1_actes_inclus_dans_sejour, + round(montant_facture_2_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_2_actes_inclus_dans_sejour, + round(montant_facture_22_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + round(montant_comptabilise_budget_global_1 / ABS(nb_det),2) AS montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_det AND date_fin_det + ; + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT from_CTID, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + + UPDATE activite[PX].p_factures_lignes_c + SET + date_fin = p_factures_lignes_c.date_debut, + nb_rubrique = p_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_sup_tot.nb_rubrique, + nb_prestation = p_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_sup_tot.nb_prestation, + montant_facture = p_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = p_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = p_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = p_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = p_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = p_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = p_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = p_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = p_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = p_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22, + montant_encours = p_factures_lignes_c.montant_encours - w_factures_lignes_sup_c_sup_tot.montant_encours, + montant_encours_0 = p_factures_lignes_c.montant_encours_0 - w_factures_lignes_sup_c_sup_tot.montant_encours_0, + montant_encours_1 = p_factures_lignes_c.montant_encours_1 - w_factures_lignes_sup_c_sup_tot.montant_encours_1, + montant_encours_2 = p_factures_lignes_c.montant_encours_2 - w_factures_lignes_sup_c_sup_tot.montant_encours_2, + montant_encours_22 = p_factures_lignes_c.montant_encours_22 - w_factures_lignes_sup_c_sup_tot.montant_encours_22, + montant_facture_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 = p_factures_lignes_c.montant_comptabilise_budget_global_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup_tot + WHERE p_factures_lignes_c.CTID = from_CTID; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_sup_c_sup'); + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c_sup; + + + DROP TABLE IF EXISTS w_mouvements_sejour_lieu_jour; + CREATE TEMP TABLE w_mouvements_sejour_lieu_jour AS + SELECT no_sejour, + date, + (MAX(CASE WHEN est_absence <> '1' THEN Array[heure_fin, lieu_id] ELSE NULL END))[2] AS lieu_id, + (MAX(Array[heure_fin, lieu_id]))[2] AS lieu_id_avec_absence + FROM activite[PX].p_mouvements_sejour + JOIN activite[PX].t_lieux ON lieu_id = t_lieux.oid + JOIN activite[PX].t_services_facturation On service_facturation_id = t_services_facturation.oid + GROUP BY 1,2 + ; + + UPDATE activite[PX].p_factures_lignes_c + SET lieu_id = COALESCE(w_mouvements_sejour_lieu_jour.lieu_id,w_mouvements_sejour_lieu_jour.lieu_id_avec_absence) + FROM activite[PX].p_factures, w_mouvements_sejour_lieu_jour + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = w_mouvements_sejour_lieu_jour.no_sejour AND + p_factures_lignes_c.date_debut = w_mouvements_sejour_lieu_jour.date AND + p_factures_lignes_c.lieu_id = 0 + ; + + + + + + ]]> + + + + 0 AND code_sorti = 0 AND + t_prestations.code <> 'GHS' AND + t_prestations.code NOT LIKE 'D%' AND + p_factures_lignes_c.date_fin > date(date_extraction - interval '56 days') + GROUP BY 1 + ) subview ON + p_factures.no_sejour = subview.no_sejour AND + p_factures_lignes_c.date_fin > date(date_max - interval '28 days') + WHERE montant_facture > 0 AND + t_prestations.code <> 'GHS' AND + t_prestations.code NOT LIKE 'D%' + GROUP BY 1,2,3,4,5 + HAVING count(*) >= 3 + ORDER BY 6,1,2,3 + ; + + ANALYSE w_prestations_jour + ; + + + INSERT INTO activite.p_factures_lignes_non_facturees_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + p_factures.no_facture, + p_calendrier.date AS date_debut, + p_calendrier.date AS date_fin, + 1::numeric AS nb_rubrique, + 1::numeric AS coefficient, + w_prestations_jour.rubrique_facturation_id, + w_prestations_jour.prestation_id, + w_prestations_jour.prix_unitaire, + w_prestations_jour.lieu_id + FROM w_prestations_jour + JOIN base.p_calendrier ON + p_calendrier.date BETWEEN date_first AND date(now()) AND + p_calendrier.jour_semaine = w_prestations_jour.jour_semaine + JOIN activite.p_factures ON + p_factures.no_sejour = w_prestations_jour.no_sejour AND + p_factures.type_facture = 'E' AND + p_calendrier.date BETWEEN p_factures.date_debut AND p_factures.date_fin + ; + + + + ]]> + + + + + '20991231' AND + ( + p_factures_lignes_c.montant_comptabilise <> 0 OR + p_factures_lignes_c.montant_comptabilise_0 <> 0 OR + p_factures_lignes_c.montant_comptabilise_1 <> 0 OR + p_factures_lignes_c.montant_comptabilise_2 <> 0 OR + p_factures_lignes_c.montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4 + ; + + + + -- Comptes clients (REG) + INSERT INTO activite.p_factures_soldes_c( + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + p_factures.no_facture, + w_REGLEMENTS.DATE_REGLE, + COALESCE(w_RUBRIQUE_FACTUR_source.rubrique_facturation_id,0), + COALESCE(w_RUBRIQUE_FACTUR_source.prestation_id,0), + 0, + 0, + 0, + 0, + 0, + SUM(w_REGLEMENTS.MTTOTAL) AS montant_regle, + SUM(w_REGLEMENTS.MTASS) AS montant_regle_0, + SUM(w_REGLEMENTS.MTCAISS) AS montant_regle_1, + SUM(w_REGLEMENTS.MTMUT) AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_REGLEMENTS + JOIN activite.p_factures ON w_REGLEMENTS.NUMFACT = p_factures.no_facture + LEFT JOIN w_RUBRIQUE_FACTUR_source ON w_REGLEMENTS.NUM_ACTE = w_RUBRIQUE_FACTUR_source.NUM_ACTE + WHERE DATE_REGLE IS NOT NULL AND + w_REGLEMENTS.HONO_SEJ = 'false' + GROUP BY 1,2,3,4 + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_8'); + + ANALYSE activite.p_factures_soldes_c + ; + + ]]> + + + + + 0 THEN PRIX_UNIT / PRIX_UNIT_NATIONAL ELSE 1 END AS coefficient_mco, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_facture_id, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_comptabilise_id, + COALESCE(W_RUBRIQUE_FACTUR_source.rubrique_facturation_id,0) AS rubrique_facturation_id, + COALESCE(W_RUBRIQUE_FACTUR_source.prestation_id,0) AS prestation_id, + MT_FACT AS montant_facture, + PART_ASS AS montant_facture_0, + PART_CAISSE AS montant_facture_1, + PART_MUT AS montant_facture_2, + 0::numeric AS montant_facture_22, + CASE WHEN MT_FACT = (PRIX_UNIT*COEF) + DEPASS THEN DEPASS ELSE 0 END AS montant_depassement, + round(base.cti_division(PART_ASS,MT_FACT)*100.0,0) AS taux_0, + round(base.cti_division(PART_CAISSE,MT_FACT)*100.0,0) AS taux_1, + round(base.cti_division(PART_MUT,MT_FACT)*100.0,0) AS taux_2, + 0::numeric AS taux_22, + CASE WHEN PRIX_UNIT_NATIONAL > 0 THEN PRIX_UNIT_NATIONAL ELSE PRIX_UNIT END AS prix_unitaire, + COALESCE(t_lieux.oid,0) AS lieu_id, + + LC_HON AS montant_comptabilise, + LC_HON_PAT AS montant_comptabilise_0, + LC_HON_AMO AS montant_comptabilise_1, + LC_HON_AMC AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + + 0, + 0, + 0, + 0, + 0, + + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + + COALESCE(w_RUBRIQUE_FACTUR_source.acte_id,0) AS acte_id + + FROM w_LIGNES_FACTURES + JOIN activite.p_factures ON w_LIGNES_FACTURES.NUM_FACT = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + LEFT JOIN w_RUBRIQUE_FACTUR_source ON w_RUBRIQUE_FACTUR_source.NUM_ACTE = w_LIGNES_FACTURES.NUM_ACTE + LEFT JOIN activite.t_medecins_administratifs ON medecin_executant_code_original = t_medecins_administratifs.code_original + LEFT JOIN activite.t_lieux ON + t_lieux.code_original_1 = w_LIGNES_FACTURES.service_facturation_code_original AND + t_lieux.code_original_2 = '' AND + t_lieux.code_original_4 = '' AND + t_lieux.code_original_5 = w_LIGNES_FACTURES.unite_fonctionnelle_code_original AND + t_lieux.code_original_6 = w_LIGNES_FACTURES.unite_fonctionnelle_code_original + WHERE w_LIGNES_FACTURES.HONO_SEJ = 'true' + ; + + + DROP TABLE IF EXISTS w_mouvements_sejour_lieu_jour; + CREATE TEMP TABLE w_mouvements_sejour_lieu_jour AS + SELECT no_sejour, + date, + (MAX(CASE WHEN est_absence <> '1' THEN Array[heure_fin, lieu_id] ELSE NULL END))[2] AS lieu_id, + (MAX(Array[heure_fin, lieu_id]))[2] AS lieu_id_avec_absence + FROM activite[PX].p_mouvements_sejour + JOIN activite[PX].t_lieux ON lieu_id = t_lieux.oid + JOIN activite[PX].t_services_facturation On service_facturation_id = t_services_facturation.oid + GROUP BY 1,2; + + + UPDATE activite[PX].p_factures_lignes_h + SET lieu_id = COALESCE(w_mouvements_sejour_lieu_jour.lieu_id,w_mouvements_sejour_lieu_jour.lieu_id_avec_absence) + FROM activite[PX].p_factures, w_mouvements_sejour_lieu_jour + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + p_factures.no_sejour = w_mouvements_sejour_lieu_jour.no_sejour AND + p_factures_lignes_h.date_debut = w_mouvements_sejour_lieu_jour.date AND + p_factures_lignes_h.lieu_id = 0; + + + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_9'); + + ANALYSE activite.p_factures_lignes_h + ; + + + ]]> + + + + 0 AND code_sorti = 0 AND + p_factures_lignes_h.date_fin > date(date_extraction - interval '56 days') + GROUP BY 1 + ) subview ON + p_factures.no_sejour = subview.no_sejour AND + p_factures_lignes_h.date_fin > date(date_max - interval '28 days') + WHERE montant_facture > 0 + GROUP BY 1,2,3,4,5,6,7 + HAVING count(*) >= 3 + + ; + + ANALYSE w_actes_jour + ; + + + INSERT INTO activite.p_factures_lignes_non_facturees_h( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id, + medecin_facture_id, + acte_id, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4) + SELECT + p_factures.no_facture, + p_calendrier.date AS date_debut, + p_calendrier.date AS date_fin, + 1::numeric AS nb_rubrique, + w_actes_jour.coefficient, + w_actes_jour.rubrique_facturation_id, + w_actes_jour.prestation_id, + w_actes_jour.prix_unitaire, + w_actes_jour.lieu_id, + w_actes_jour.medecin_facture_id, + w_actes_jour.acte_id, + ''::text AS phase_ccam, + '1'::text AS activite_ccam, + ''::text AS extension_ccam, + ''::text AS modificateur_ccam_1, + ''::text AS modificateur_ccam_2, + ''::text AS modificateur_ccam_3, + ''::text AS modificateur_ccam_4 + FROM w_actes_jour + JOIN base.p_calendrier ON + p_calendrier.date BETWEEN date_first AND date(now()) AND + p_calendrier.jour_semaine = w_actes_jour.jour_semaine + JOIN activite.p_factures ON + p_factures.no_sejour = w_actes_jour.no_sejour AND + p_factures.type_facture = 'E' AND + p_calendrier.date BETWEEN p_factures.date_debut AND p_factures.date_fin + order by 1,2 + ; + + ]]> + + + + + 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5 + ; + + -- Réglements + INSERT INTO activite.p_factures_soldes_h( + no_facture, + date_comptable, + medecin_comptabilise_id, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + p_factures.no_facture, + w_REGLEMENTS.DATE_REGLE, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_comptabilise_id, + COALESCE(w_RUBRIQUE_FACTUR_source.rubrique_facturation_id,0), + COALESCE(w_RUBRIQUE_FACTUR_source.prestation_id,0), + 0, + 0, + 0, + 0, + 0, + SUM(w_REGLEMENTS.MTTOTAL) AS montant_regle, + SUM(w_REGLEMENTS.MTASS) AS montant_regle_0, + SUM(w_REGLEMENTS.MTCAISS) AS montant_regle_1, + SUM(w_REGLEMENTS.MTMUT) AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_REGLEMENTS + JOIN activite.p_factures ON w_REGLEMENTS.NUMFACT = p_factures.no_facture + LEFT JOIN w_RUBRIQUE_FACTUR_source ON w_REGLEMENTS.NUM_ACTE = w_RUBRIQUE_FACTUR_source.NUM_ACTE + LEFT JOIN activite.t_medecins_administratifs On medecin_executant_code_original = t_medecins_administratifs.code_original + WHERE DATE_REGLE IS NOT NULL AND + w_REGLEMENTS.HONO_SEJ = 'true' + GROUP BY 1,2,3,4,5 + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_8'); + + ANALYSE activite.p_factures_soldes_h + ; + + ]]> + + + + + + + + + + + + = '20190101' + GROUP BY 1; + + + + ]]> + + + + + + + '00' THEN date((LEFT(NUM_FACT,6)||'01')::date + interval '1 month' - interval '1 day') + ELSE date((LEFT(NUM_FACT,4)||'1231')::date) + END AS date_vente, + TT_SEJ AS TT_SEJ_AMO, + 0::numeric AS TT_SEJ_AMC, + 0::numeric AS TT_SEJ_PAT, + TT_HONO AS TT_HON_AMO, + 0::numeric AS TT_HON_AMC, + 0::numeric AS TT_HON_PAT, + TT_HONO AS TC_HON, + TT_HONO AS TC_HON_AMO, + 0::numeric AS TC_HON_AMC, + 0::numeric AS TC_HON_PAT, + '20991231'::date AS DATE_REGLE, + 0::numeric AS TR_SEJ, + 0::numeric AS TR_SEJ_AMO, + 0::numeric AS TR_SEJ_AMC, + 0::numeric AS TR_SEJ_PAT, + 0::numeric AS TR_HON, + 0::numeric AS TR_HON_AMO, + 0::numeric AS TR_HON_AMC, + 0::numeric AS TR_HON_PAT + FROM prod_hemat2a.FACTURES + ; + + INSERT INTO w_FACTURES + SELECT + NUM_PAT, + NUM_FACT::text, + VALID, + TT_SEJOUR, + TT_HONO, + MT_CAISS, + MT_MUT, + MT_ASS, + DATE_EDIT, + DATE_TRANSMI, + EDITE, + TRANSMIS, + NUM_BORDEREAU, + DATE_GENE_COMPT, + GENE_CPT, + NUM_JNL, + RAPPEL, + COMPLET, + AVOIR, + SEJOUR_DU, + SEJOUR_AU, + MT_TT, + NUM_CAISS, + NUM_SOC, + TELETRANS, + NUMLOT, + GENAUTO, + REGUL_POSITIVE, + REGUL_NEGATIVE, + CPT_ANA, + NBR_ACT_DIAL, + MUTUELLE, + NUM_MUTUELLE, + AVOIR_FACTINITIALE::text, + FORCER_ARCHIVAGE, + AVOIR_NUMFACT, + '1'::text AS FACT_last, + date(SEJOUR_DU) AS SEJOUR_DU_D, + date(SEJOUR_AU) AS SEJOUR_AU_D, + '1'::text AS gen_sejour, + CASE + WHEN substr(num_fact,5,2) BETWEEN '01' AND '12' THEN date((LEFT(NUM_FACT,6)||'01')::date + interval '1 month' - interval '1 day') + ELSE date((LEFT(NUM_FACT,4)||'1231')::date) + END AS date_vente, + TT_SEJOUR AS TT_SEJ_AMO, + 0::numeric AS TT_SEJ_AMC, + 0::numeric AS TT_SEJ_PAT, + TT_HONO AS TT_HON_AMO, + 0::numeric AS TT_HON_AMC, + 0::numeric AS TT_HON_PAT, + TT_HONO AS TC_HON, + TT_HONO AS TC_HON_AMO, + 0::numeric AS TC_HON_AMC, + 0::numeric AS TC_HON_PAT, + '20991231'::date AS DATE_REGLE, + 0::numeric AS TR_SEJ, + 0::numeric AS TR_SEJ_AMO, + 0::numeric AS TR_SEJ_AMC, + 0::numeric AS TR_SEJ_PAT, + 0::numeric AS TR_HON, + 0::numeric AS TR_HON_AMO, + 0::numeric AS TR_HON_AMC, + 0::numeric AS TR_HON_PAT + FROM prod_hemat2a.ARCH_FACT + WHERE SEJOUR_AU >= '20100101' + ; + + ANALYSE w_FACTURES + ; + + + + DROP TABLE IF EXISTS w_LIGNES_FACTURES; + CREATE TEMP TABLE w_LIGNES_FACTURES AS + SELECT + NUM_FACT::text, + PRESTATION, + NUM_ACTE, + SEJOUR_DU, + SEJOUR_AU, + QUANTITE, + COEF, + PRIX_UNIT, + MAJORATION, + MT_FACT, + BASE_REMB, + DEPASS, + PART_CAISSE, + PART_MUT, + PART_ASS, + EXECUTANT, + DENOMBREMENT, + RMO, + NUM_PAT, + NUM_EXE, + CPT_COMPTA, + DMT, + CODE_TVA, + NUM_LIG, + HONO_SEJ, + CT_EPO, + XMT_EPO, + CODIF_AFF, + NUM_SOC, + TIERPERS, + FELEC, + TYPE_PRODUIT, + DATE_PRESCRIPTION_PRODUIT, + PRIX_UNIT_NATIONAL, + COEF_NATIONAL, + COEF_REGIONAL, + ACTE_PMSI, + CODE_PRODUIT, + TYPE_ETI, + CODE_ASSOCIATION, + NUM_PRODUIT, + ID_CLEFPRIMAIRE, + FINESS_ETAB_DESTINATAIRE, + ''::text AS medecin_executant_code_original, + NUM_SOC::text||'_'||LEFT(DMT,2) AS service_facturation_code_original, + CASE WHEN HONO_SEJ = 'false' AND PRESTATION LIKE 'D%' THEN NUM_SOC::text||'_'||PRESTATION ELSE '' END AS unite_fonctionnelle_code_original, + 0::numeric AS LC_HON, + 0::numeric AS LC_HON_AMO, + 0::numeric AS LC_HON_AMC, + 0::numeric AS LC_HON_PAT + FROM prod_hemat2a.LIGNES_FACTURES + ; + + + INSERT INTO w_LIGNES_FACTURES + SELECT + NUM_FACT::text, + PRESTATION, + NUM_ACTE, + SEJOUR_DU, + SEJOUR_AU, + QUANTITE, + COEF, + PRIX_UNIT, + MAJORATION, + MT_FACT, + BASE_REMB, + DEPASS, + PART_CAISS, + PART_MUT, + PART_ASS, + EXECUTANT, + DENOMBREMENT, + RMO, + NUM_PAT, + NUM_EXE, + CPT_COMPTA, + DMT, + CODE_TVA, + NUM_LIGG, + HONO_SEJ, + CPTEPO, + XMT_EPO, + CODIF_AFF, + NUM_SOC, + TIERPERS, + FELEC, + TYPE_PRODUIT, + DATE_PRESCRIPTION_PRODUIT, + PRIX_UNIT_NATIONAL, + COEF_NATIONAL, + COEF_REGIONAL, + ACTE_PMSI, + CODE_PRODUIT, + TYPE_ETI, + CODE_ASSOCIATION, + NUM_PRODUIT, + ID_CLEFPRIMAIRE, + FINESS_ETAB_DESTINATAIRE, + ''::text AS medecin_executant_code_original, + NUM_SOC::text||'_'||LEFT(DMT,2) AS service_facturation_code_original, + CASE WHEN HONO_SEJ = 'false' AND PRESTATION LIKE 'D%' THEN NUM_SOC::text||'_'||PRESTATION ELSE '' END AS unite_fonctionnelle_code_original, + 0::numeric AS LC_HON, + 0::numeric AS LC_HON_AMO, + 0::numeric AS LC_HON_AMC, + 0::numeric AS LC_HON_PAT + FROM prod_hemat2a.ARCH_LIG_FACT + ; + + ANALYSE w_LIGNES_FACTURES + ; + + UPDATE w_LIGNES_FACTURES + SET medecin_executant_code_original = MEDECINS.NUM_MED::text + FROM prod_hemat2a.MEDECINS + WHERE HONO_SEJ = 'true' AND + NUM_EXE = MEDECINS.FINESS AND + EXECUTANT = MEDECINS.NOM + ; + + UPDATE w_LIGNES_FACTURES + SET medecin_executant_code_original = MEDECINS.NUM_MED::text + FROM prod_hemat2a.MEDECINS + WHERE HONO_SEJ = 'true' AND + EXECUTANT = MEDECINS.NOM AND + medecin_executant_code_original = '' + ; + + UPDATE w_LIGNES_FACTURES SET + LC_HON = MT_FACT, + LC_HON_AMO = PART_CAISSE, + LC_HON_AMC = PART_MUT, + LC_HON_PAT = PART_ASS + FROM prod_hemat2a.MEDECINS + WHERE HONO_SEJ = 'true' AND + medecin_executant_code_original = NUM_MED::text AND + REGLEMENT_HONO = 'false' + ; + + + UPDATE w_FACTURES SET + SEJOUR_DU_D = subview.SEJOUR_DU_D, + SEJOUR_AU_D = subview.SEJOUR_AU_D + FROM + ( + SELECT NUM_FACT, + MIN(SEJOUR_DU) AS SEJOUR_DU_D, + MAX(SEJOUR_AU) AS SEJOUR_AU_D + FROM w_LIGNES_FACTURES + WHERE HONO_SEJ = 'false' AND + PRESTATION LIKE 'D%' AND + PRESTATION NOT LIKE 'DTP' + GROUP BY 1 + ) subview + WHERE subview.NUM_FACT = w_FACTURES.NUM_FACT AND + ( + w_FACTURES.SEJOUR_DU_D IS DISTINCT FROM subview.SEJOUR_DU_D OR + w_FACTURES.SEJOUR_AU_D IS DISTINCT FROM subview.SEJOUR_AU_D + ) + ; + + UPDATE w_FACTURES SET + TT_SEJ = subview.TT_SEJ, + TT_SEJ_AMO = subview.TT_SEJ_AMO, + TT_SEJ_AMC = subview.TT_SEJ_AMC, + TT_SEJ_PAT = subview.TT_SEJ_PAT, + TC_HON = subview.TC_HON, + TC_HON_AMO = subview.TC_HON_AMO, + TC_HON_AMC = subview.TC_HON_AMC, + TC_HON_PAT = subview.TC_HON_PAT, + TT_HONO = subview.TT_HON, + TT_HON_AMO = subview.TT_HON_AMO, + TT_HON_AMC = subview.TT_HON_AMC, + TT_HON_PAT = subview.TT_HON_PAT + FROM + ( + SELECT NUM_FACT, + SUM(CASE WHEN HONO_SEJ = 'false' THEN MT_FACT ELSE 0 END) AS TT_SEJ, + SUM(CASE WHEN HONO_SEJ = 'false' THEN PART_CAISSE ELSE 0 END) AS TT_SEJ_AMO, + SUM(CASE WHEN HONO_SEJ = 'false' THEN PART_MUT ELSE 0 END) AS TT_SEJ_AMC, + SUM(CASE WHEN HONO_SEJ = 'false' THEN PART_ASS ELSE 0 END) AS TT_SEJ_PAT, + SUM(CASE WHEN HONO_SEJ = 'true' THEN MT_FACT ELSE 0 END) AS TT_HON, + SUM(CASE WHEN HONO_SEJ = 'true' THEN PART_CAISSE ELSE 0 END) AS TT_HON_AMO, + SUM(CASE WHEN HONO_SEJ = 'true' THEN PART_MUT ELSE 0 END) AS TT_HON_AMC, + SUM(CASE WHEN HONO_SEJ = 'true' THEN PART_ASS ELSE 0 END) AS TT_HON_PAT, + SUM(CASE WHEN HONO_SEJ = 'true' THEN LC_HON ELSE 0 END) AS TC_HON, + SUM(CASE WHEN HONO_SEJ = 'true' THEN LC_HON_AMO ELSE 0 END) AS TC_HON_AMO, + SUM(CASE WHEN HONO_SEJ = 'true' THEN LC_HON_AMC ELSE 0 END) AS TC_HON_AMC, + SUM(CASE WHEN HONO_SEJ = 'true' THEN LC_HON_PAT ELSE 0 END) AS TC_HON_PAT + FROM w_LIGNES_FACTURES + GROUP BY 1 + ) subview + WHERE subview.NUM_FACT = w_FACTURES.NUM_FACT AND + ( + w_FACTURES.TT_SEJ IS DISTINCT FROM subview.TT_SEJ OR + w_FACTURES.TT_SEJ_AMO IS DISTINCT FROM subview.TT_SEJ_AMO OR + w_FACTURES.TT_SEJ_AMC IS DISTINCT FROM subview.TT_SEJ_AMC OR + w_FACTURES.TT_SEJ_PAT IS DISTINCT FROM subview.TT_SEJ_PAT OR + w_FACTURES.TC_HON IS DISTINCT FROM subview.TC_HON OR + w_FACTURES.TC_HON_AMO IS DISTINCT FROM subview.TC_HON_AMO OR + w_FACTURES.TC_HON_AMC IS DISTINCT FROM subview.TC_HON_AMC OR + w_FACTURES.TC_HON_PAT IS DISTINCT FROM subview.TC_HON_PAT OR + w_FACTURES.TT_HONO IS DISTINCT FROM subview.TT_HON OR + w_FACTURES.TT_HON_AMO IS DISTINCT FROM subview.TT_HON_AMO OR + w_FACTURES.TT_HON_AMC IS DISTINCT FROM subview.TT_HON_AMC OR + w_FACTURES.TT_HON_PAT IS DISTINCT FROM subview.TT_HON_PAT + ) + ; + + + DROP TABLE IF EXISTS w_REGLEMENTS; + CREATE TEMP TABLE w_REGLEMENTS AS + SELECT REGLEMENTS.NUMFACT::text, + REGLEMENTS.DATE_REGLE, + REGLEMENTS.MTCAISS, + REGLEMENTS.MTMUT, + REGLEMENTS.MTASS, + REGLEMENTS.MTTOTAL, + REGLEMENTS.NUMPAT, + REGLEMENTS.MEDECIN, + REGLEMENTS.NUMBORD, + REGLEMENTS.PRESTATION, + REGLEMENTS.NUMCAISS, + REGLEMENTS.NUM_SOC, + CASE WHEN MEDECIN = 'SEJOUR' THEN 'false'::text ELSE 'true' END AS HONO_SEJ, + 0::bigint AS NUM_ACTE, + ''::text AS medecin_executant_code_original + FROM prod_hemat2a.REGLEMENTS + JOIN w_FACTURES ON w_FACTURES.NUM_FACT = REGLEMENTS.NUMFACT + ; + + ANALYSE w_REGLEMENTS + ; + + UPDATE w_REGLEMENTS + SET HONO_SEJ = subview.HONO_SEJ + FROM + ( + SELECT PRESTATION, MAX(HONO_SEJ) AS HONO_SEJ + FROM w_LIGNES_FACTURES + GROUP BY 1 + ) subview + WHERE w_REGLEMENTS.PRESTATION = subview.PRESTATION AND + w_REGLEMENTS.HONO_SEJ IS DISTINCT FROM subview.HONO_SEJ + ; + + UPDATE w_REGLEMENTS + SET NUM_ACTE = subview.NUM_ACTE + FROM + ( + SELECT NUM_FACT, PRESTATION, MAX(NUM_ACTE) AS NUM_ACTE + FROM w_LIGNES_FACTURES + GROUP BY 1,2 + ) subview + WHERE w_REGLEMENTS.NUMFACT = subview.NUM_FACT AND + w_REGLEMENTS.PRESTATION = subview.PRESTATION + ; + + UPDATE w_REGLEMENTS + SET medecin_executant_code_original = MEDECINS.NUM_MED::text + FROM prod_hemat2a.MEDECINS + WHERE HONO_SEJ = 'true' AND + MEDECIN = MEDECINS.NOM AND + medecin_executant_code_original = '' + ; + + UPDATE w_FACTURES SET + DATE_REGLE = subview.DATE_REGLE, + TR_SEJ = subview.TR_SEJ, + TR_SEJ_AMO = subview.TR_SEJ_AMO, + TR_SEJ_AMC = subview.TR_SEJ_AMC, + TR_SEJ_PAT = subview.TR_SEJ_PAT, + TR_HON = subview.TR_HON, + TR_HON_AMO = subview.TR_HON_AMO, + TR_HON_AMC = subview.TR_HON_AMC, + TR_HON_PAT = subview.TR_HON_PAT + FROM + ( + SELECT NUMFACT AS NUM_FACT, + MAX(DATE_REGLE) AS DATE_REGLE, + SUM(CASE WHEN HONO_SEJ = 'false' THEN MTTOTAL ELSE 0 END) AS TR_SEJ, + SUM(CASE WHEN HONO_SEJ = 'false' THEN MTCAISS ELSE 0 END) AS TR_SEJ_AMO, + SUM(CASE WHEN HONO_SEJ = 'false' THEN MTMUT ELSE 0 END) AS TR_SEJ_AMC, + SUM(CASE WHEN HONO_SEJ = 'false' THEN MTASS ELSE 0 END) AS TR_SEJ_PAT, + SUM(CASE WHEN HONO_SEJ = 'true' THEN MTTOTAL ELSE 0 END) AS TR_HON, + SUM(CASE WHEN HONO_SEJ = 'true' THEN MTCAISS ELSE 0 END) AS TR_HON_AMO, + SUM(CASE WHEN HONO_SEJ = 'true' THEN MTMUT ELSE 0 END) AS TR_HON_AMC, + SUM(CASE WHEN HONO_SEJ = 'true' THEN MTASS ELSE 0 END) AS TR_HON_PAT + FROM w_REGLEMENTS + GROUP BY 1 + ) subview + WHERE subview.NUM_FACT = w_FACTURES.NUM_FACT + ; + + -- Ménage dans les factures anciennes + DELETE FROM w_factures + WHERE date(SEJOUR_AU) < '20150101' + ; + + DELETE FROM w_FACTURES + USING + ( + SELECT NUM_PAT, + date(COALESCE(MAX(CASE WHEN SEJOUR_DU <= '20190101' AND TT_SEJ <> TR_SEJ THEN SEJOUR_DU ELSE NULL END),'20190101')) AS SEJOUR_DU + FROM w_FACTURES + GROUP BY 1 + ) subview + WHERE w_FACTURES.NUM_PAT = subview.NUM_PAT AND + w_FACTURES.SEJOUR_DU < subview.SEJOUR_DU + ; + + -- Traitement des avoirs + + -- Regul sans avoir précisé, il faut tenter de le retrouver + UPDATE w_FACTURES + SET AVOIR_FACTINITIALE = subview.AVOIR_FACTINITIALE + FROM + ( + SELECT w_FACTURES.NUM_FACT, MIN(w_FACTURES_avoir.NUM_FACT) AS AVOIR_FACTINITIALE + FROM w_FACTURES + JOIN w_FACTURES w_FACTURES_avoir ON + w_FACTURES.NUM_PAT = w_FACTURES_avoir.NUM_PAT AND + w_FACTURES.SEJOUR_DU_D = w_FACTURES_avoir.SEJOUR_DU_D AND + w_FACTURES.SEJOUR_AU_D = w_FACTURES_avoir.SEJOUR_AU_D AND + w_FACTURES.NUM_FACT > w_FACTURES_avoir.NUM_FACT + WHERE w_FACTURES.REGUL_POSITIVE = 'true' AND + w_FACTURES.AVOIR_FACTINITIALE = '0' + GROUP BY 1 + ) subview + WHERE w_FACTURES.NUM_FACT = subview.NUM_FACT + ; + + -- Ajout des avoirs + INSERT INTO w_FACTURES + SELECT + w_FACTURES.NUM_PAT, + w_FACTURES.NUM_FACT || 'A'::text AS NUM_FACT, + w_FACTURES_regul.VALID, + 0-w_FACTURES.TT_SEJ, + 0-w_FACTURES.TT_HONO, + 0-w_FACTURES.MT_CAISSE, + 0-w_FACTURES.MT_MUT, + 0-w_FACTURES.MT_ASS, + w_FACTURES_regul.DATE_EDITION, + w_FACTURES_regul.DATE_TRANSMIS, + w_FACTURES_regul.EDITE, + w_FACTURES_regul.TRANSMIS, + w_FACTURES_regul.NUM_BORDEREAU, + w_FACTURES_regul.DATE_GENE_CPT, + w_FACTURES_regul.GENE_CPT, + w_FACTURES_regul.NUM_JNL, + w_FACTURES_regul.RAPPEL, + w_FACTURES_regul.COMPLET, + 'autocti'::text AS AVOIR, + w_FACTURES.SEJOUR_DU, + w_FACTURES.SEJOUR_AU, + 0-w_FACTURES.MT_TT, + w_FACTURES.NUM_CAISSE, + w_FACTURES.NUM_SOC, + w_FACTURES_regul.TELETRANS, + w_FACTURES_regul.NUMLOT, + w_FACTURES.GENAUTO, + 'false'::text AS REGUL_POSITIVE, + 'true'::text AS REGUL_NEGATIVE, + w_FACTURES.CPT_ANA, + w_FACTURES.NBR_ACT_DIAL, + w_FACTURES.MUTUELLE, + w_FACTURES.NUM_MUTUELLE, + w_FACTURES.NUM_FACT AS AVOIR_FACTINITIALE, + w_FACTURES.FORCER_ARCHIVAGE, + 0::numeric AS AVOIR_NUMFACT, + '0'::text AS FACT_last, + w_FACTURES.SEJOUR_DU_D, + w_FACTURES.SEJOUR_AU_D, + '0'::text AS gen_sejour, + w_FACTURES_regul.date_vente, + 0-w_FACTURES.TT_SEJ_AMO, + 0-w_FACTURES.TT_SEJ_AMC, + 0-w_FACTURES.TT_SEJ_PAT, + 0-w_FACTURES.TT_HON_AMO, + 0-w_FACTURES.TT_HON_AMC, + 0-w_FACTURES.TT_HON_PAT, + 0-w_FACTURES.TC_HON, + 0-w_FACTURES.TC_HON_AMO, + 0-w_FACTURES.TC_HON_AMC, + 0-w_FACTURES.TC_HON_PAT, + w_FACTURES_regul.DATE_REGLE, + 0-w_FACTURES.TR_SEJ, + 0-w_FACTURES.TR_SEJ_AMO, + 0-w_FACTURES.TR_SEJ_AMC, + 0-w_FACTURES.TR_SEJ_PAT, + 0-w_FACTURES.TR_HON, + 0-w_FACTURES.TR_HON_AMO, + 0-w_FACTURES.TR_HON_AMC, + 0-w_FACTURES.TR_HON_PAT + FROM w_FACTURES + JOIN w_FACTURES w_FACTURES_regul ON w_FACTURES.NUM_FACT = w_FACTURES_regul.AVOIR_FACTINITIALE + ; + + + INSERT INTO w_LIGNES_FACTURES + SELECT + w_FACTURES.NUM_FACT::text, + w_LIGNES_FACTURES.PRESTATION, + w_LIGNES_FACTURES.NUM_ACTE, + w_LIGNES_FACTURES.SEJOUR_DU, + w_LIGNES_FACTURES.SEJOUR_AU, + 0-w_LIGNES_FACTURES.QUANTITE, + w_LIGNES_FACTURES.COEF, + w_LIGNES_FACTURES.PRIX_UNIT, + w_LIGNES_FACTURES.MAJORATION, + 0-w_LIGNES_FACTURES.MT_FACT, + 0-w_LIGNES_FACTURES.BASE_REMB, + 0-w_LIGNES_FACTURES.DEPASS, + 0-w_LIGNES_FACTURES.PART_CAISSE, + 0-w_LIGNES_FACTURES.PART_MUT, + 0-w_LIGNES_FACTURES.PART_ASS, + w_LIGNES_FACTURES.EXECUTANT, + w_LIGNES_FACTURES.DENOMBREMENT, + w_LIGNES_FACTURES.RMO, + w_LIGNES_FACTURES.NUM_PAT, + w_LIGNES_FACTURES.NUM_EXE, + w_LIGNES_FACTURES.CPT_COMPTA, + w_LIGNES_FACTURES.DMT, + w_LIGNES_FACTURES.CODE_TVA, + w_LIGNES_FACTURES.NUM_LIG, + w_LIGNES_FACTURES.HONO_SEJ, + w_LIGNES_FACTURES.CT_EPO, + w_LIGNES_FACTURES.XMT_EPO, + w_LIGNES_FACTURES.CODIF_AFF, + w_LIGNES_FACTURES.NUM_SOC, + w_LIGNES_FACTURES.TIERPERS, + w_LIGNES_FACTURES.FELEC, + w_LIGNES_FACTURES.TYPE_PRODUIT, + w_LIGNES_FACTURES.DATE_PRESCRIPTION_PRODUIT, + w_LIGNES_FACTURES.PRIX_UNIT_NATIONAL, + w_LIGNES_FACTURES.COEF_NATIONAL, + w_LIGNES_FACTURES.COEF_REGIONAL, + w_LIGNES_FACTURES.ACTE_PMSI, + w_LIGNES_FACTURES.CODE_PRODUIT, + w_LIGNES_FACTURES.TYPE_ETI, + w_LIGNES_FACTURES.CODE_ASSOCIATION, + w_LIGNES_FACTURES.NUM_PRODUIT, + w_LIGNES_FACTURES.ID_CLEFPRIMAIRE, + w_LIGNES_FACTURES.FINESS_ETAB_DESTINATAIRE, + w_LIGNES_FACTURES.medecin_executant_code_original, + w_LIGNES_FACTURES.service_facturation_code_original, + w_LIGNES_FACTURES.unite_fonctionnelle_code_original, + 0-w_LIGNES_FACTURES.LC_HON, + 0-w_LIGNES_FACTURES.LC_HON_AMO, + 0-w_LIGNES_FACTURES.LC_HON_AMC, + 0-w_LIGNES_FACTURES.LC_HON_PAT + FROM w_LIGNES_FACTURES + JOIN w_FACTURES ON w_LIGNES_FACTURES.NUM_FACT || 'A'::text = w_FACTURES.NUM_FACT + ; + + INSERT INTO w_REGLEMENTS + SELECT + w_FACTURES.NUM_FACT, + w_FACTURES.date_vente AS DATE_REGLE, + 0-w_REGLEMENTS.MTCAISS, + 0-w_REGLEMENTS.MTMUT, + 0-w_REGLEMENTS.MTASS, + 0-w_REGLEMENTS.MTTOTAL, + w_REGLEMENTS.NUMPAT, + w_REGLEMENTS.MEDECIN, + w_REGLEMENTS.NUMBORD, + w_REGLEMENTS.PRESTATION, + w_REGLEMENTS.NUMCAISS, + w_REGLEMENTS.NUM_SOC, + w_REGLEMENTS.HONO_SEJ, + w_REGLEMENTS.NUM_ACTE, + w_REGLEMENTS.medecin_executant_code_original + FROM w_REGLEMENTS + JOIN w_FACTURES ON w_REGLEMENTS.NUMFACT || 'A'::text = w_FACTURES.NUM_FACT + ; + + + UPDATE w_FACTURES + SET AVOIR = 'autocti' + WHERE NUM_FACT IN (SELECT AVOIR_FACTINITIALE FROM w_FACTURES) AND + AVOIR = 'false' + ; + + + DROP TABLE IF EXISTS w_ASSURES; + CREATE TEMP TABLE w_ASSURES AS + SELECT + NUM_PAT + , NOM + , PRENOM + , NOM_JF + , CP + , DATE_NAISS + , SEXE + , CAISSE_NUM + , MUT_NUM + , NUM_SOCIETE::text AS service_facturation_code_original + , NUM_SECU + , 'N'::text AS OK + , NULL::date AS date_entree + , NULL::date AS date_sortie + , 0::numeric AS code_sorti + , ''::text AS medecin_sejour_code_original + , ''::text AS unite_fonctionnelle_code_original + , ''::text AS ghm_code + , 0::numeric AS ghs_code + FROM prod_hemat2a.ASSURES + WHERE NUM_PAT IN (SELECT NUM_PAT FROM w_FACTURES) + ; + + ANALYSE w_ASSURES + ; + + + UPDATE w_ASSURES + SET OK = 'O' + WHERE NUM_PAT IN ( + SELECT NUM_PAT FROM w_FACTURES + WHERE SEJOUR_DU >= '20190101' OR + DATE_EDITION >= '20190101' OR + DATE_TRANSMIS >= '20190101' + ) + ; + + UPDATE w_ASSURES + SET OK = 'O' + WHERE OK = 'N' AND + NUM_PAT IN ( + SELECT NUM_PAT + FROM w_FACTURES + JOIN prod_hemat2a.REGLEMENTS ON w_FACTURES.NUM_FACT = REGLEMENTS.NUMFACT + WHERE REGLEMENTS.DATE_REGLE >= '20190101' + ) + ; + + UPDATE w_ASSURES SET + date_entree = subview.date_entree, + date_sortie = subview.date_sortie, + code_sorti = subview.code_sorti, + CAISSE_NUM = subview.NUM_CAISSE, + MUT_NUM = subview.NUM_MUTUELLE + FROM + ( + SELECT w_FACTURES.NUM_PAT, + date(MIN(SEJOUR_DU)) AS date_entree, + CASE WHEN MAX(date_extraction) - date(MAX(LEAST(now(),SEJOUR_AU))) > 30 THEN date(MAX(LEAST(now(),SEJOUR_AU))) ELSE '20991231' END AS date_sortie, + CASE WHEN MAX(date_extraction) - date(MAX(LEAST(now(),SEJOUR_AU))) > 30 THEN 1 ELSE 0 END AS code_sorti, + (MAX(ARRAY[SEJOUR_AU::text,NUM_CAISSE::text]))[2]::numeric AS NUM_CAISSE, + (MAX(ARRAY[SEJOUR_AU::text,NUM_MUTUELLE::text]))[2]::numeric AS NUM_MUTUELLE + FROM w_FACTURES + JOIN w_ASSURES ON w_FACTURES.NUM_PAT = w_ASSURES.NUM_PAT + JOIN w_periode ON 1=1 + WHERE OK = 'O' + GROUP BY 1 + ) subview + WHERE w_ASSURES.NUM_PAT = subview.NUM_PAT + ; + + UPDATE w_ASSURES SET + service_facturation_code_original = subview.service_facturation_code_original, + unite_fonctionnelle_code_original = subview.unite_fonctionnelle_code_original, + ghm_code = CASE WHEN subview.ghm_code <> '' THEN '28'::text||subview.ghm_code ELSE '' END, + ghs_code = CASE WHEN subview.ghm_code <> '' THEN CASE WHEN subview.ghs_code <> '0' THEN subview.ghs_code::numeric ELSE 9999 END ELSE 0 END + FROM + ( + SELECT w_FACTURES.NUM_PAT, + (MAX(ARRAY[w_LIGNES_FACTURES.SEJOUR_AU::text,w_LIGNES_FACTURES.service_facturation_code_original]))[2] AS service_facturation_code_original, + (MAX(ARRAY[w_LIGNES_FACTURES.SEJOUR_AU::text,w_LIGNES_FACTURES.unite_fonctionnelle_code_original]))[2] AS unite_fonctionnelle_code_original, + (MAX(ARRAY[w_LIGNES_FACTURES.SEJOUR_AU::text,RUBRIQUE_FACTUR.PMSI_GHM_ASSOCIE]))[2] AS ghm_code, + (MAX(ARRAY[w_LIGNES_FACTURES.SEJOUR_AU::text,COALESCE(RUBRIQUE_FACTUR.NUMEROGHS,'0')::text]))[2]::numeric AS ghs_code + FROM w_FACTURES + JOIN w_ASSURES ON w_FACTURES.NUM_PAT = w_ASSURES.NUM_PAT + JOIN w_LIGNES_FACTURES ON w_FACTURES.NUM_FACT = w_LIGNES_FACTURES.NUM_FACT + LEFT JOIN prod_hemat2a.RUBRIQUE_FACTUR ON w_LIGNES_FACTURES.NUM_ACTE = RUBRIQUE_FACTUR.NUM_ACTE + WHERE OK = 'O' AND + w_LIGNES_FACTURES.HONO_SEJ = 'false' AND + w_LIGNES_FACTURES.PRESTATION LIKE 'D%' AND + w_LIGNES_FACTURES.PRESTATION NOT LIKE 'DTP' + GROUP BY 1 + ) subview + WHERE w_ASSURES.NUM_PAT = subview.NUM_PAT + ; + + UPDATE w_ASSURES + SET medecin_sejour_code_original = subview.medecin_sejour_code_original + FROM + ( + SELECT NUM_PAT, (MAX(ARRAY[SEJOUR_AU::text, medecin_executant_code_original]))[2] AS medecin_sejour_code_original + FROM w_LIGNES_FACTURES + JOIN prod_hemat2a.MEDECINS ON medecin_executant_code_original = NUM_MED::text + WHERE HONO_SEJ = 'true' AND + specialite <> 30 + GROUP BY 1 + ) subview + WHERE w_ASSURES.NUM_PAT = subview.NUM_PAT + ; + + + ]]> + + + + '' + GROUP BY 1; + + + + INSERT INTO activite.t_tiers_payant(oid, code, code_original, type_tiers_payant, texte, texte_court) + SELECT 0, '', '', '0', 'Non saisi', 'Non saisi' + WHERE 0 NOT IN (SELECT oid FROM activite.t_tiers_payant); + + INSERT INTO activite.t_tiers_payant(code, code_original, type_tiers_payant, texte, texte_court) + SELECT 'PATIENTS', '0', '0', 'Patients', 'Patients' + WHERE '0' NOT IN (SELECT code_original FROM activite.t_tiers_payant); + + INSERT INTO activite.t_tiers_payant(code_original, code, type_tiers_payant, texte, texte_court) + SELECT NUMERO::text, to_char(NUMERO,'FM9990000'), '1'::text, NOM, NOM + FROM prod_hemat2a.CAISSES + WHERE NUMERO IN (SELECT NUM_CAISSE FROM w_FACTURES) AND + NUMERO::text NOT IN (SELECT code_original FROM activite.t_tiers_payant WHERE code_original IS NOT NULL) + ; + + INSERT INTO activite.t_tiers_payant(code_original, code, type_tiers_payant, texte, texte_court) + SELECT NUMERO::text||'M', to_char(NUMERO,'FM9990000')||'M', '2'::text, NOM, NOM + FROM prod_hemat2a.CAISSES + WHERE NUMERO IN (SELECT NUM_MUTUELLE FROM w_FACTURES) AND + NUMERO::text||'M' NOT IN (SELECT code_original FROM activite.t_tiers_payant WHERE code_original IS NOT NULL) + ; + + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM prod_hemat2a.CAISSES + JOIN base.t_grands_regimes ON CODEGR = code + WHERE t_tiers_payant.code_original = NUMERO AND + grand_regime_id IS DISTINCT FROM t_grands_regimes.oid AND + CODEGR <> ''; + + UPDATE activite.t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM prod_hemat2a.CAISSES + JOIN base.t_grands_regimes ON CODEGR = code + WHERE t_tiers_payant.code_original = NUMERO::text||'M' AND + grand_regime_id IS DISTINCT FROM t_grands_regimes.oid AND + CODEGR <> ''; + + + ]]> + + + + w_medecins.NOM OR + t_medecins_administratifs.prenom <> w_medecins.PRENOM OR + t_medecins_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid,t_specialites_medecin_2.oid,0) OR + t_medecins_administratifs.medecin_id <> w_medecins.medecin_id + ); + + + + UPDATE activite.t_medecins_administratifs + SET specialite_id = subview.specialite_medecin_id + FROM + ( + SELECT t_medecins_administratifs.oid,t_specialites_medecin.oid AS specialite_medecin_id + FROM activite.t_medecins_administratifs + JOIN base.t_specialites_medecin t_specialites_medecin_2 ON specialite_id = t_specialites_medecin_2.oid + JOIN base.t_specialites_medecin ON t_specialites_medecin_2.code || '..' = t_specialites_medecin.code + ) subview + WHERE t_medecins_administratifs.oid = subview.oid; + + UPDATE base.t_medecins SET specialite_id = subview.specialite_id FROM + (SELECT t_medecins.oid, MIN(t_medecins_administratifs.specialite_id) as specialite_id + FROM base.t_medecins, activite.t_medecins_administratifs , base.t_specialites_medecin + WHERE t_medecins.oid = t_medecins_administratifs.medecin_id + AND t_medecins_administratifs.specialite_id = t_specialites_medecin.oid + GROUP BY t_medecins.oid) subview + WHERE t_medecins.oid = subview.oid AND t_medecins.oid <> 0 AND t_medecins.specialite_id = 0; + + + -- no_adeli + UPDATE activite.t_medecins_administratifs + SET no_adeli = ADELIE + FROM prod_hemat2a.MEDECINS + WHERE t_medecins_administratifs.code_original = NUM_MED::text AND + t_medecins_administratifs.NO_ADELI IS DISTINCT FROM ADELIE + ; + + ]]> + + + + + + + + '' THEN LIBELLE_ACTE ELSE COALESCE(t_prestations.code,CODE_CETEL) END) AS texte + FROM w_RUBRIQUE_FACTUR_source + LEFT JOIN activite.t_prestations ON CODE_CETEL = t_prestations.code + WHERE PRESTATION <> '' + GROUP BY 1 + ORDER BY 1 + ; + + INSERT INTO activite.t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT code_original, code_original, texte, texte + FROM w_rubriques_facturation + WHERE code_original NOT IN (SELECT code_original FROM activite.t_rubriques_facturation) + ; + + + INSERT INTO activite.t_prestations(code, code_original, texte, texte_court) + SELECT CODE_CETEL, CODE_CETEL,CODE_CETEL, CODE_CETEL + FROM w_RUBRIQUE_FACTUR_source + WHERE CODE_CETEL NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + GROUP BY 1 + ; + + + INSERT INTO activite.t_protocoles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '***', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECT oid FROM activite.t_protocoles); + + INSERT INTO base.t_actes(code, texte, texte_court, nomenclature) + SELECT + UPPER(CODE_CCAM), + UPPER(CODE_CCAM), + UPPER(CODE_CCAM), + 'CCAM' + FROM w_RUBRIQUE_FACTUR_source + WHERE + CODE_CCAM <> '' AND + UPPER(CODE_CCAM) NOT IN (SELECT code FROM base.t_actes WHERE code IS NOT NULL) + GROUP BY UPPER(CODE_CCAM) + ; + INSERT INTO base.t_actes(code, texte, texte_court, nomenclature) + SELECT + CODE_CETEL, + CODE_CETEL, + CODE_CETEL, + 'NGAP' + FROM w_RUBRIQUE_FACTUR_source + WHERE + HONO_SEJ = 'true' AND + ACTE_CCAM = 'false' AND + CODE_CETEL NOT IN (SELECT code FROM base.t_actes WHERE code IS NOT NULL) + GROUP BY CODE_CETEL + ; + + INSERT INTO activite[PX].t_compte(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_compte); + + INSERT INTO activite.t_compte(code_original, code, texte, texte_court) + SELECT CPT_COMPTA,CPT_COMPTA, CPT_COMPTA, CPT_COMPTA + FROM w_RUBRIQUE_FACTUR_source + WHERE CPT_COMPTA <> '' AND + CPT_COMPTA NOT IN (SELECT code FROM activite.t_compte WHERE code IS NOT NULL) + GROUP BY 1 + ORDER BY 1; + + INSERT INTO activite.t_compte(code_original, code, texte, texte_court) + SELECT CPT_COMPTA,CPT_COMPTA, CPT_COMPTA, CPT_COMPTA + FROM w_LIGNES_FACTURES + WHERE CPT_COMPTA <> '' AND + CPT_COMPTA NOT IN (SELECT code FROM activite.t_compte WHERE code IS NOT NULL) + GROUP BY 1 + ORDER BY 1; + + + UPDATE w_RUBRIQUE_FACTUR_source + SET rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite.t_rubriques_facturation + WHERE PRESTATION = t_rubriques_facturation.code_original + ; + + UPDATE w_RUBRIQUE_FACTUR_source + SET prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE CODE_CETEL = t_prestations.code + ; + + + UPDATE w_RUBRIQUE_FACTUR_source + SET acte_id = t_actes.oid + FROM base.t_actes + WHERE CODE_CETEL = t_actes.code AND + HONO_SEJ = 'true' + ; + + UPDATE w_RUBRIQUE_FACTUR_source + SET acte_id = t_actes.oid + FROM base.t_actes + WHERE CODE_CCAM = t_actes.code AND + HONO_SEJ = 'true' AND + CODE_CCAM <> '' + ; + + UPDATE w_RUBRIQUE_FACTUR_source + SET compte_produit_id = t_compte.oid + FROM activite.t_compte + WHERE CPT_COMPTA = t_compte.code AND + CPT_COMPTA <> '' + ; + + + + + ]]> + + + + + + + + + + + + + + + diff --git a/import_activite/iCTI_import_activite_HM.XML b/import_activite/iCTI_import_activite_HM.XML new file mode 100644 index 0000000..410e6c0 --- /dev/null +++ b/import_activite/iCTI_import_activite_HM.XML @@ -0,0 +1,9287 @@ + + + + + + + MAX(SEJO_ID_MEDE_COURANT) + ) subview + WHERE SEJO_ID_SEJO = MESE_ID_SEJO + ; + + + + -- Séjours bébés avec ind bgh différents de la mère + UPDATE prod_hm.IDE_SEJOUR + SET SEJO_IND_BGH = IDE_SEJOUR_MERE.SEJO_IND_BGH + FROM prod_hm.IDE_SEJOUR IDE_SEJOUR_MERE + WHERE IDE_SEJOUR.SEJO_ID_SEJO_MER_ENF = IDE_SEJOUR_MERE.SEJO_ID_SEJO AND + IDE_SEJOUR_MERE.SEJO_IND_BGH IS DISTINCT FROM IDE_SEJOUR.SEJO_IND_BGH AND + IDE_SEJOUR.SEJO_ID_SEJO_MER_ENF <> 0 + ; + + -- Forcage prestation + UPDATE prod_hm.PAD_PRESTATION_SEJOUR + SET PRSE_CODE = code_force + FROM activite[PX].t_rubriques_facturation + WHERE t_rubriques_facturation.code_original = PRSE_ID_PRSE AND + t_rubriques_facturation.code_force <> '' + ; + + UPDATE prod_hm.PAD_PRESTATION_HONORAIRE + SET PRHO_CODE = code_force + FROM activite[PX].t_rubriques_facturation + WHERE t_rubriques_facturation.code_original = PRHO_ID_PRHO AND + t_rubriques_facturation.code_force <> '' + ; + + UPDATE prod_hm.PAD_PRESTATION_SEJOUR + SET PRSE_LET_CLE = t_prestations.code + FROM activite[PX].t_rubriques_facturation + JOIN activite.t_prestations ON prestation_forcee_id = t_prestations.oid + WHERE t_rubriques_facturation.code_original = PRSE_ID_PRSE AND + t_rubriques_facturation.prestation_forcee_id > 0 + ; + + + UPDATE prod_hm.FAC_LIGNE_FACTURE + SET LFAC_LET_CLE = t_prestations.code + FROM activite[PX].t_rubriques_facturation + JOIN activite.t_prestations ON prestation_forcee_id = t_prestations.oid + WHERE t_rubriques_facturation.code_original = LFAC_ID_PRSE AND + t_rubriques_facturation.prestation_forcee_id > 0 + ; + + + -- Prestation vide dans lignes de facture + UPDATE prod_hm.FAC_LIGNE_FACTURE + SET LFAC_LET_CLE = LFAC_CODE + WHERE LFAC_LET_CLE = '' + ; + + -- Externes, mettre une date de fin cohérente + UPDATE prod_hm.IDE_SEJOUR + SET SEJO_DAT_FIN = SEJO_DAT_DEB + interval '2 hours' + FROM prod_hm.BAS_UF + JOIN prod_hm.BAS_CATEGORIE_UFM ON UNFO_ID_CUFM = CUFM_ID_CUFM + JOIN prod_hm.BAS_CATALOGUE_GEN BAS_CATALOGUE_GEN_MT ON CUFM_ID_CAGE_MT = BAS_CATALOGUE_GEN_MT.CAGE_ID_CAGE + WHERE SEJO_STATUT IN ('E','S') AND + ( + SEJO_DAT_FIN IS NULL OR + (date(SEJO_DAT_FIN) - date(SEJO_DAT_DEB)) > 1 + ) AND + SEJO_ID_UNFO = UNFO_ID_UNFO AND + BAS_CATALOGUE_GEN_MT.CAGE_CODE = '07' + ; + + -- Le code 'M' est aussi médecin salarié + UPDATE prod_hm.FAC_LIGNE_FACTURE + SET LFAC_CDT_EXC = 'S' + WHERE LFAC_CDT_EXC = 'M' + ; + + -- Conserver les encours HM + INSERT INTO activite.t_divers (code, texte, valeur, description, show_info_module) + SELECT + 'ENCOURSHM' + ,'Conservation des encours du prestataire HM' + ,'0' + ,'1=Conserver les encours HM 0=Ne pas conserver', + false + WHERE NOT EXISTS (SELECT 1 FROM activite.t_divers WHERE code = 'ENCOURSHM') + ; + + ]]> + + + + + + date_extraction; + + UPDATE w_periode + SET date_extraction = DAT_MOD + FROM ( + SELECT max(GREATEST(SEJO_DAT_MOD,SEJO_DAT_CRE)) AS DAT_MOD FROM prod_hm.IDE_SEJOUR WHERE GREATEST(SEJO_DAT_MOD,SEJO_DAT_CRE) < now() + ) subview + WHERE DAT_MOD > date_extraction; + + DROP TABLE IF EXISTS w_SEJOUR_compta; + CREATE TEMP TABLE w_SEJOUR_compta AS + SELECT + FACT_ID_SEJO + FROM prod_hm.CCL_LIGNE_ECRITURE, + prod_hm.CCL_ECRITURE, + w_CCL_JOURNAL, + w_CCL_COMPTE, + prod_hm.FAC_FACTURE_DEBITEUR, + prod_hm.FAC_FACTURE + WHERE + LECR_ID_ECRI = ECRI_ID_ECRI + AND LECR_ID_FACD = FACD_ID_FACD + AND FACD_ID_FACT = FACT_ID_FACT + AND ECRI_ID_JOUR = JOUR_ID_JOUR + AND LECR_ID_CPTE = CPTE_ID_CPTE + AND ECRI_DAT_SUP IS NULL + AND CPTE_CAGE_CODE IN ('CLIENT' , 'ACO85', 'ACO', 'CLIRMB') + AND ECRI_ID_ETAB IN ([ID_ETAB]) + AND ECRI_DAT_ECRITURE >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1 + ORDER BY 1; + + DROP TABLE IF EXISTS w_IDE_SEJOUR; + CREATE TEMP TABLE w_IDE_SEJOUR AS + SELECT + date_extraction, + SEJO_ID_SEJO AS w_SEJO_ID_SEJO, + MAX(CASE WHEN COALESCE(SEJO_NUM_SEJ,'') = '' THEN 'W' || SEJO_ID_SEJO::bigint ELSE SEJO_NUM_SEJ END) AS w_SEJO_NUM_SEJ + FROM w_periode , prod_hm.IDE_SEJOUR + WHERE SEJO_ID_ETAB_CON IN ([ID_ETAB]) + AND ((SEJO_DAT_SUP IS NULL AND SEJO_IND_INCOMPLET IS DISTINCT FROM '1')) + AND (SEJO_DAT_DEB BETWEEN date_debut_periode AND now() + interval '2 day' OR SEJO_DAT_FIN >= date_debut_periode OR SEJO_DAT_FIN IS NULL) + AND (SEJO_DAT_FIN IS NOT NULL AND SEJO_DAT_FIN <= date_extraction + interval '1 year' OR SEJO_DAT_FIN IS NULL) + AND (SEJO_STATUT NOT IN ('A', 'P') OR (SEJO_STATUT IN ('A', 'P') AND (SEJO_DAT_DEB >= date_extraction AND (SEJO_DAT_FIN IS NULL OR SEJO_DAT_FIN >= date_extraction)))) + GROUP BY 1,2; + + ALTER TABLE w_IDE_SEJOUR ADD CONSTRAINT w_IDE_SEJOUR_pk PRIMARY KEY(w_SEJO_ID_SEJO); + + INSERT INTO w_IDE_SEJOUR + SELECT date_extraction, + SEJO_ID_SEJO AS w_SEJO_ID_SEJO, + MAX(CASE WHEN COALESCE(SEJO_NUM_SEJ,'') = '' THEN 'W' || SEJO_ID_SEJO::bigint ELSE SEJO_NUM_SEJ END) AS w_SEJO_NUM_SEJ + FROM w_periode, prod_hm.FAC_FACTURE + JOIN prod_hm.IDE_SEJOUR ON FACT_ID_SEJO = SEJO_ID_SEJO + WHERE FACT_DAT_SUP IS NULL AND + SEJO_ID_ETAB_CON IN ([ID_ETAB]) AND + FACT_DAT_CRE >= '[ENV_ADM_ANNEEDEBUT]0101' AND + FACT_ID_SEJO NOT IN (SELECT w_SEJO_ID_SEJO FROM w_IDE_SEJOUR) + GROUP BY 1,2 + ; + + INSERT INTO w_IDE_SEJOUR + SELECT + date_extraction, + SEJO_ID_SEJO AS w_SEJO_ID_SEJO, + MAX(CASE WHEN COALESCE(SEJO_NUM_SEJ,'') = '' THEN 'W' || SEJO_ID_SEJO::bigint ELSE SEJO_NUM_SEJ END) AS w_SEJO_NUM_SEJ + FROM w_periode , prod_hm.IDE_SEJOUR + WHERE SEJO_ID_ETAB_CON IN ([ID_ETAB]) + AND SEJO_ID_SEJO IN (SELECT FACT_ID_SEJO FROM w_SEJOUR_compta) + AND SEJO_ID_SEJO NOT IN (SELECT w_SEJO_ID_SEJO FROM w_IDE_SEJOUR) + GROUP BY 1,2; + + + DROP TABLE IF EXISTS w_IDE_SEJOUR_complet; + CREATE TEMP TABLE w_IDE_SEJOUR_complet AS + SELECT + w_SEJO_NUM_SEJ, + w_SEJO_ID_SEJO, + date_extraction, + IDE_SEJOUR.* + FROM w_IDE_SEJOUR + JOIN prod_hm.IDE_SEJOUR ON SEJO_ID_SEJO = w_SEJO_ID_SEJO; + + ALTER TABLE w_IDE_SEJOUR_complet ADD CONSTRAINT w_IDE_SEJOUR_complet_pk PRIMARY KEY(SEJO_ID_SEJO); + + + UPDATE w_IDE_SEJOUR_complet SET + w_SEJO_NUM_SEJ = w_IDE_SEJOUR_complet.w_SEJO_NUM_SEJ || '_2' + FROM + (SELECT w_SEJO_NUM_SEJ, MAX(w_SEJO_ID_SEJO) AS w_SEJO_ID_SEJO + FROM w_IDE_SEJOUR_complet + GROUP BY 1 + HAVING count(*) > 1) subview + WHERE subview.w_SEJO_ID_SEJO = w_IDE_SEJOUR_complet.w_SEJO_ID_SEJO; + + UPDATE w_IDE_SEJOUR_complet SET + w_SEJO_NUM_SEJ = w_IDE_SEJOUR_complet.w_SEJO_NUM_SEJ || '_3' + FROM + (SELECT w_SEJO_NUM_SEJ, MAX(w_SEJO_ID_SEJO) AS w_SEJO_ID_SEJO + FROM w_IDE_SEJOUR_complet + GROUP BY 1 + HAVING count(*) > 1) subview + WHERE subview.w_SEJO_ID_SEJO = w_IDE_SEJOUR_complet.w_SEJO_ID_SEJO; + + UPDATE w_IDE_SEJOUR_complet SET + w_SEJO_NUM_SEJ = w_IDE_SEJOUR_complet.w_SEJO_NUM_SEJ || '_4' + FROM + (SELECT w_SEJO_NUM_SEJ, MAX(w_SEJO_ID_SEJO) AS w_SEJO_ID_SEJO + FROM w_IDE_SEJOUR_complet + GROUP BY 1 + HAVING count(*) > 1) subview + WHERE subview.w_SEJO_ID_SEJO = w_IDE_SEJOUR_complet.w_SEJO_ID_SEJO; + + UPDATE w_IDE_SEJOUR_complet SET + w_SEJO_NUM_SEJ = w_IDE_SEJOUR_complet.w_SEJO_NUM_SEJ || '_5' + FROM + (SELECT w_SEJO_NUM_SEJ, MAX(w_SEJO_ID_SEJO) AS w_SEJO_ID_SEJO + FROM w_IDE_SEJOUR_complet + GROUP BY 1 + HAVING count(*) > 1) subview + WHERE subview.w_SEJO_ID_SEJO = w_IDE_SEJOUR_complet.w_SEJO_ID_SEJO; + + UPDATE w_IDE_SEJOUR_complet SET + w_SEJO_NUM_SEJ = w_IDE_SEJOUR_complet.w_SEJO_NUM_SEJ || '_6' + FROM + (SELECT w_SEJO_NUM_SEJ, MAX(w_SEJO_ID_SEJO) AS w_SEJO_ID_SEJO + FROM w_IDE_SEJOUR_complet + GROUP BY 1 + HAVING count(*) > 1) subview + WHERE subview.w_SEJO_ID_SEJO = w_IDE_SEJOUR_complet.w_SEJO_ID_SEJO; + + UPDATE w_IDE_SEJOUR_complet + SET SEJO_NUM_SEJ = w_SEJO_NUM_SEJ + WHERE w_SEJO_NUM_SEJ <> SEJO_NUM_SEJ; + + + CREATE INDEX w_IDE_SEJOUR_complet_i1 + ON w_IDE_SEJOUR_complet + USING btree + (w_SEJO_NUM_SEJ); + + ANALYSE w_IDE_SEJOUR_complet + ; + + + -- Correction HM suppression anciennes factures provisoires + UPDATE prod_hm.FAC_FACTURE + SET FACT_DAT_SUP = subview.FACT_DAT_DER_CALCUL + FROM + ( + SELECT FACT_ID_SEJO, FACT_DAT_DEB_FAC, count(*), + (MAX(ARRAY[FACT_DAT_DER_CALCUL::text, FACT_ID_FACT::text]))[2]::bigint AS FACT_ID_DER_CALCUL, + MAX(FACT_DAT_DER_CALCUL) AS FACT_DAT_DER_CALCUL + FROM prod_hm.FAC_FACTURE + WHERE FACT_TYPE = 'P' AND FACT_DAT_SUP IS NULL + GROUP BY 1,2 + HAVING count(*) > 1 + ) subview + WHERE FAC_FACTURE.FACT_ID_SEJO = subview.FACT_ID_SEJO AND + FAC_FACTURE.FACT_DAT_DEB_FAC = subview.FACT_DAT_DEB_FAC AND + FAC_FACTURE.FACT_TYPE = 'P' AND + FAC_FACTURE.FACT_DAT_SUP IS NULL AND + FAC_FACTURE.FACT_ID_FACT <> FACT_ID_DER_CALCUL + ; + + -- Corrections base HM : Factures annulées comptabilisées + + UPDATE prod_hm.FAC_FACTURE + SET FACT_DAT_SUP = NULL + WHERE FACT_DAT_SUP IS NOT NULL AND + FACT_ID_FACT IN + ( + SELECT + FACT_ID_FACT + FROM prod_hm.CCL_LIGNE_ECRITURE, + prod_hm.CCL_ECRITURE, + w_CCL_JOURNAL, + w_CCL_COMPTE, + prod_hm.FAC_FACTURE_DEBITEUR, + prod_hm.FAC_FACTURE + WHERE + LECR_ID_ECRI = ECRI_ID_ECRI + AND LECR_ID_FACD = FACD_ID_FACD + AND FACD_ID_FACT = FACT_ID_FACT + AND ECRI_ID_JOUR = JOUR_ID_JOUR + AND LECR_ID_CPTE = CPTE_ID_CPTE + AND ECRI_DAT_SUP IS NULL + AND CPTE_CAGE_CODE IN ('CLIENT' , 'ACO85', 'ACO', 'CLIRMB') + AND ECRI_ID_ETAB IN ([ID_ETAB]) + AND ECRI_DAT_ECRITURE >= '[ENV_ADM_ANNEEDEBUT]0101' + AND FACT_TYPE <> 'P' + AND FACT_DAT_SUP IS NOT NULL + AND JOUR_CAGE_CODE= 'FACAV' + GROUP BY 1 + ORDER BY 1 + ); + + -- Numéros de factures en double + + ALTER TABLE prod_hm.fac_facture ALTER fact_num_fac TYPE text; + + SELECT base.cti_execute(' + UPDATE prod_hm.FAC_FACTURE + SET FACT_NUM_FAC = FAC_FACTURE.FACT_NUM_FAC || ''.'' || count + FROM ( + SELECT FACT_NUM_FAC, MAX(FACT_ID_FACT) AS FACT_ID_FACT, count(*) AS count + FROM prod_hm.FAC_FACTURE + WHERE + FACT_NUM_FAC <> '''' AND + FACT_TYPE <> ''E'' AND + (FACT_TYPE = ''P'' OR FACT_DAT_SUP IS NULL) + GROUP BY 1 + HAVING COUNT(*) > 1 + ) subview + WHERE FAC_FACTURE.FACT_ID_FACT = subview.FACT_ID_FACT',1000); + + + ]]> + + + + + + + + + + + + + + + + 0) ON (SEJO_ID_SEJO = PECH_ID_SEJO) + LEFT JOIN prod_hm.IDE_ASSURE ON ASSU_ID_ASSU = PECH_ID_ASSU + LEFT JOIN prod_hm.IDE_SEJOUR_AMC + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON (SEAM_ID_ORGA_AMC::bigint = t_tiers_payant_2.code_original AND SEAM_ID_ORGA_AMC <> 0) ON (SEJO_ID_SEJO = SEAM_ID_SEJO) + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_0 ON (t_tiers_payant_0.type_tiers_payant = '0' AND t_tiers_payant_0.oid <> 0) + GROUP BY 1; + + ALTER TABLE w_IDE_PEC ADD CONSTRAINT w_IDE_PEC_pkey PRIMARY KEY(PECH_ID_SEJO); + + DROP TABLE IF EXISTS w_IDE_MOUVEMENT_S; + CREATE TEMP TABLE w_IDE_MOUVEMENT_S AS + SELECT MOUV_ID_SEJO, 'S'::text AS MOUV_STATUT + FROM prod_hm.IDE_MOUVEMENT + JOIN w_IDE_SEJOUR ON MOUV_ID_SEJO = w_SEJO_ID_SEJO + JOIN prod_hm.BAS_CATALOGUE_GEN ON (MOUV_ID_CAGE = CAGE_ID_CAGE AND CAGE_CODE IN ('S')) + WHERE date(MOUV_DAT_MOU) <= date(now()) + GROUP BY 1; + + CREATE INDEX w_IDE_MOUVEMENT_S_i1 + ON w_IDE_MOUVEMENT_S + USING btree + (MOUV_ID_SEJO); + + + DROP TABLE IF EXISTS w_sejours; + CREATE TEMP TABLE w_sejours AS + SELECT + CASE WHEN SEJO_NUM_SEJ IS NULL OR SEJO_NUM_SEJ = '' THEN 'W' || SEJO_ID_SEJO ELSE SEJO_NUM_SEJ END as no_sejour, + w_SEJO_ID_SEJO::bigint as code_original, + CASE WHEN PATI_NIP = '' OR PATI_NIP IS NULL THEN 'W' || PATI_ID_PATI::bigint ELSE PATI_NIP END AS no_patient, + date(SEJO_DAT_DEB) as date_entree, + extract('hour' FROM SEJO_DAT_DEB) * 10000 + extract('minute' FROM SEJO_DAT_DEB) * 100 + extract('second' FROM SEJO_DAT_DEB) as heure_entree, + CASE WHEN SEJO_DAT_FIN IS NOT NULL AND (SEJO_STATUT IN ('S', 'M') OR MOUV_STATUT IN ('S')) THEN date(SEJO_DAT_FIN) ELSE '20991231' END::date as date_sortie, + CASE WHEN SEJO_DAT_FIN IS NOT NULL THEN extract('hour' FROM SEJO_DAT_FIN) * 10000 + extract('minute' FROM SEJO_DAT_FIN) * 100 + extract('second' FROM SEJO_DAT_FIN) ELSE 0 END as heure_sortie, + CASE WHEN PATI_SEXE = 'F' THEN '2' ELSE '1' END as code_sexe, + 0 AS age, + CASE WHEN SEJO_STATUT IN ('S', 'M') AND SEJO_DAT_FIN <= date(now()) OR MOUV_STATUT IN ('S') THEN 1 ELSE 0 END as code_sorti, + CASE WHEN SEJO_STATUT IN ('A', 'P') OR date(SEJO_DAT_DEB) > date(date_extraction) THEN 1 ELSE 0 END as code_prevu, + CASE + WHEN SEJO_DAT_SUP IS NOT NULL THEN '9' + WHEN SEJO_IND_INCOMPLET = '1' THEN '9' + WHEN SEJO_STATUT = 'Z' THEN '9' + + WHEN t_divers.valeur IN ('1', '2', '3', '4', '5', '6', '9') THEN t_divers.valeur + WHEN t_services_facturation.type_sejour IN ('1', '2', '3', '4', '5') THEN t_services_facturation.type_sejour + WHEN t_modes_traitement.code IN ('07') OR t_dmt.code In ('958') THEN '3' + WHEN t_modes_traitement.code IN ('19', '23') AND date(SEJO_DAT_FIN) = date(SEJO_DAT_DEB) THEN '2' + WHEN t_modes_traitement.code IN ('04') AND date(SEJO_DAT_FIN) = date(SEJO_DAT_DEB) THEN '2' + WHEN t_modes_traitement.code IN ('03') AND date(SEJO_DAT_FIN) = date(SEJO_DAT_DEB) THEN '2' + WHEN t_modes_traitement.code IN ('10') AND date(SEJO_DAT_FIN) <= date(SEJO_DAT_DEB) + interval '1 day' THEN '3' + ELSE '1' END as type_sejour, + t_medecins_administratifs.oid as medecin_sejour_id, + 0 as ghs_id, + '20991231'::date as date_groupage, + SEJO_IND_CHB_PAR as code_cp_demandee, + t_services_facturation.mode_traitement_id as mode_traitement_id, + '8'::character(1) as mode_entree, + '0'::character(1) as provenance, + '8'::character(1) as mode_sortie, + '0'::character(1) as destination, + COALESCE(tiers_payant_0_id,0) AS tiers_payant_0_id, + COALESCE(tiers_payant_1_id,0) AS tiers_payant_1_id, + COALESCE(tiers_payant_2_id,0) AS tiers_payant_2_id, + CASE WHEN COALESCE(tiers_payant_22_id,0) <> COALESCE(tiers_payant_2_id,0) THEN COALESCE(tiers_payant_22_id,0) ELSE 0 END AS tiers_payant_22_id, + CASE WHEN COALESCE(SEJO_IND_BGH,'0') = '1' THEN 1 ELSE 0 END AS est_budget_global, + COALESCE(t_divers.valeur,'') AS type_sejour_force_hm + + FROM w_IDE_SEJOUR_complet + LEFT JOIN w_IDE_PEC ON (PECH_ID_SEJO = SEJO_ID_SEJO) + JOIN prod_hm.IDE_PATIENT ON SEJO_ID_PATI = PATI_ID_PATI + JOIN prod_hm.BAS_CATALOGUE_PERS ON (SEJO_ID_CAPE_VEN = CAPE_ID_CAPE) + LEFT JOIN activite.t_divers ON t_divers.code = ('HM_TYPSEJ_' || CAPE_CODE) + JOIN activite[PX].t_services_facturation ON SEJO_ID_UNFO::bigint = t_services_facturation.code_original + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + JOIN activite[PX].t_medecins_administratifs ON SEJO_ID_MEDE_COURANT::bigint = t_medecins_administratifs.code_original + LEFT JOIN w_IDE_MOUVEMENT_S ON w_SEJO_ID_SEJO = MOUV_ID_SEJO + ; + + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_13'); + + -- Forcage type selon séjour + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour + FROM activite.t_sejour + WHERE t_sejour.no_sejour = w_sejours.no_sejour AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9'); + + UPDATE activite[PX].p_sejours SET + code_original = w_sejours.code_original, + no_patient = w_sejours.no_patient, + date_entree = w_sejours.date_entree, + heure_entree = w_sejours.heure_entree, + date_sortie = w_sejours.date_sortie, + heure_sortie = w_sejours.heure_sortie, + code_sexe = w_sejours.code_sexe, + age = w_sejours.age, + code_sorti = w_sejours.code_sorti, + code_prevu = w_sejours.code_prevu, + type_sejour = w_sejours.type_sejour, + medecin_sejour_id = w_sejours.medecin_sejour_id, + code_cp_demandee = w_sejours.code_cp_demandee, + mode_traitement_id = w_sejours.mode_traitement_id, + mode_entree = w_sejours.mode_entree, + provenance = w_sejours.provenance, + mode_sortie = w_sejours.mode_sortie, + destination = w_sejours.destination, + tiers_payant_0_id = w_sejours.tiers_payant_0_id, + tiers_payant_1_id = w_sejours.tiers_payant_1_id, + tiers_payant_2_id = w_sejours.tiers_payant_2_id, + tiers_payant_22_id = w_sejours.tiers_payant_22_id, + est_budget_global = w_sejours.est_budget_global + FROM w_sejours + WHERE w_sejours.no_sejour = p_sejours.no_sejour + AND ( + w_sejours.code_original IS DISTINCT FROM p_sejours.code_original OR + w_sejours.no_patient IS DISTINCT FROM p_sejours.no_patient OR + w_sejours.date_entree IS DISTINCT FROM p_sejours.date_entree OR + w_sejours.heure_entree IS DISTINCT FROM p_sejours.heure_entree OR + w_sejours.date_sortie IS DISTINCT FROM p_sejours.date_sortie OR + w_sejours.heure_sortie IS DISTINCT FROM p_sejours.heure_sortie OR + w_sejours.code_sexe IS DISTINCT FROM p_sejours.code_sexe OR + w_sejours.age IS DISTINCT FROM p_sejours.age OR + w_sejours.code_sorti IS DISTINCT FROM p_sejours.code_sorti OR + w_sejours.code_prevu IS DISTINCT FROM p_sejours.code_prevu OR + w_sejours.type_sejour IS DISTINCT FROM p_sejours.type_sejour OR + w_sejours.medecin_sejour_id IS DISTINCT FROM p_sejours.medecin_sejour_id OR + w_sejours.code_cp_demandee IS DISTINCT FROM p_sejours.code_cp_demandee OR + w_sejours.mode_traitement_id IS DISTINCT FROM p_sejours.mode_traitement_id OR + w_sejours.mode_entree IS DISTINCT FROM p_sejours.mode_entree OR + w_sejours.provenance IS DISTINCT FROM p_sejours.provenance OR + w_sejours.mode_sortie IS DISTINCT FROM p_sejours.mode_sortie OR + w_sejours.destination IS DISTINCT FROM p_sejours.destination OR + w_sejours.tiers_payant_0_id IS DISTINCT FROM p_sejours.tiers_payant_0_id OR + w_sejours.tiers_payant_1_id IS DISTINCT FROM p_sejours.tiers_payant_1_id OR + w_sejours.tiers_payant_2_id IS DISTINCT FROM p_sejours.tiers_payant_2_id OR + w_sejours.tiers_payant_22_id IS DISTINCT FROM p_sejours.tiers_payant_22_id OR + w_sejours.est_budget_global IS DISTINCT FROM p_sejours.est_budget_global + ); + + INSERT INTO activite[PX].p_sejours ( + no_sejour, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + medecin_sejour_id, + ghs_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + est_budget_global + ) + SELECT + w_sejours.no_sejour, + w_sejours.code_original, + w_sejours.no_patient, + w_sejours.date_entree, + w_sejours.heure_entree, + w_sejours.date_sortie, + w_sejours.heure_sortie, + w_sejours.code_sexe, + w_sejours.age, + w_sejours.code_sorti, + w_sejours.code_prevu, + w_sejours.type_sejour, + w_sejours.medecin_sejour_id, + w_sejours.ghs_id, + w_sejours.date_groupage, + w_sejours.code_cp_demandee, + w_sejours.mode_traitement_id, + w_sejours.mode_entree, + w_sejours.provenance, + w_sejours.mode_sortie, + w_sejours.destination, + w_sejours.tiers_payant_0_id, + w_sejours.tiers_payant_1_id, + w_sejours.tiers_payant_2_id, + w_sejours.tiers_payant_22_id, + w_sejours.est_budget_global + + FROM w_sejours LEFT JOIN activite[PX].p_sejours ON (w_sejours.no_sejour = p_sejours.no_sejour) + WHERE p_sejours.no_sejour IS NULL; + + + DELETE FROM activite[PX].p_sejours + USING activite[PX].p_sejours AS p_sejours_i LEFT JOIN w_sejours ON (w_sejours.no_sejour = p_sejours_i.no_sejour) + WHERE + p_sejours.no_sejour = p_sejours_i.no_sejour AND + w_sejours.no_sejour IS NULL; + + -- Modes entrée sortie selon mouvements + DROP TABLE IF EXISTS w_MOUV_MOD_SOR; + CREATE TEMP TABLE w_MOUV_MOD_SOR AS + SELECT MOUV_ID_SEJO, + (MAX(ARRAY[MOUV_DAT_MOU::text, CAPE_CODE]))[2]::text AS MOD_SOR + FROM prod_hm.IDE_MOUVEMENT + JOIN activite[PX].p_sejours ON MOUV_ID_SEJO::bigint = p_sejours.code_original + JOIN prod_hm.BAS_CATALOGUE_GEN ON (MOUV_ID_CAGE = CAGE_ID_CAGE AND CAGE_CODE IN ('E', 'D', 'M', 'S')) + JOIN prod_hm.BAS_CATALOGUE_PERS ON (MOUV_ID_CAPE_SOR = CAPE_ID_CAPE) + GROUP BY 1; + + UPDATE w_MOUV_MOD_SOR + SET MOD_SOR = '80' WHERE MOD_SOR = '8'; + + UPDATE activite[PX].p_sejours + SET mode_sortie = substr(MOD_SOR,1,1) + FROM w_MOUV_MOD_SOR + WHERE code_original = MOUV_ID_SEJO AND + substr(MOD_SOR,1,1) IS DISTINCT FROM mode_sortie AND + substr(MOD_SOR,1,1) IN (SELECT code FROM base.t_modes_sortie); + + UPDATE activite[PX].p_sejours + SET destination = substr(MOD_SOR,2,1) + FROM w_MOUV_MOD_SOR + WHERE code_original = MOUV_ID_SEJO AND + length(MOD_SOR) = 2 AND + substr(MOD_SOR,2,1) IS DISTINCT FROM destination AND + substr(MOD_SOR,2,1) IN (SELECT code FROM base.t_destinations_sortie); + + + + + DROP TABLE IF EXISTS w_MOUV_MOD_ENT; + CREATE TEMP TABLE w_MOUV_MOD_ENT AS + SELECT MOUV_ID_SEJO, + (MIN(ARRAY[MOUV_DAT_MOU::text, CAPE_CODE]))[2]::text AS MOD_ENT + FROM prod_hm.IDE_MOUVEMENT + JOIN activite[PX].p_sejours ON MOUV_ID_SEJO::bigint = p_sejours.code_original + JOIN prod_hm.BAS_CATALOGUE_GEN ON (MOUV_ID_CAGE = CAGE_ID_CAGE AND CAGE_CODE IN ('E', 'D', 'M', 'S')) + JOIN prod_hm.BAS_CATALOGUE_PERS ON (MOUV_ID_CAPE_ENT = CAPE_ID_CAPE) + GROUP BY 1; + + UPDATE w_MOUV_MOD_ENT + SET MOD_ENT = '80' WHERE MOD_ENT = '8'; + + UPDATE activite[PX].p_sejours + SET mode_entree = substr(MOD_ENT,1,1) + FROM w_MOUV_MOD_ENT + WHERE code_original = MOUV_ID_SEJO AND + substr(MOD_ENT,1,1) IS DISTINCT FROM mode_entree AND + substr(MOD_ENT,1,1) IN (SELECT code FROM base.t_modes_entree); + + UPDATE activite[PX].p_sejours + SET provenance = substr(MOD_ENT,2,1) + FROM w_MOUV_MOD_ENT + WHERE code_original = MOUV_ID_SEJO AND + length(MOD_ENT) = 2 AND + substr(MOD_ENT,2,1) IS DISTINCT FROM provenance AND + substr(MOD_ENT,2,1) IN (SELECT code FROM base.t_provenances_entree); + + + -- Modes entrée sortie selon PMSI MCO + UPDATE activite[PX].p_sejours + SET mode_entree = CASE WHEN TRUM_MOD_ENT < 8 THEN '0'::text ELSE SUBSTR(TRUM_MOD_ENT::bigint * 10,1,1) END, + provenance = CASE WHEN TRUM_MOD_ENT < 8 THEN TRUM_MOD_ENT::text ELSE SUBSTR(TRUM_MOD_ENT::bigint * 10,2,1) END + FROM w_IDE_SEJOUR_complet JOIN + (SELECT + TRUM_ID_SEJO, + MIN(TRUM_DAT_ENT_RUM) AS TRUM_DAT_ENT_RUM, + (MIN(ARRAY[TRUM_DAT_ENT_RUM::text,TRUM_MOD_ENT::text]))[2]::bigint AS TRUM_MOD_ENT + FROM + prod_hm.PMS_RUM + GROUP BY 1) sub ON SEJO_ID_SEJO = TRUM_ID_SEJO AND date(TRUM_DAT_ENT_RUM) = date(SEJO_DAT_DEB) + WHERE + no_sejour = w_SEJO_NUM_SEJ AND + ( + mode_entree <> CASE WHEN TRUM_MOD_ENT < 8 THEN '0'::text ELSE SUBSTR(TRUM_MOD_ENT::bigint * 10,1,1) END OR + provenance <> CASE WHEN TRUM_MOD_ENT < 8 THEN TRUM_MOD_ENT::text ELSE SUBSTR(TRUM_MOD_ENT::bigint * 10,2,1) END + ) + ; + + UPDATE activite[PX].p_sejours + SET mode_sortie = CASE WHEN TRUM_MOD_SOR < 8 THEN '0'::text ELSE SUBSTR(TRUM_MOD_SOR::bigint * 10,1,1) END, + destination = CASE WHEN TRUM_MOD_SOR < 8 THEN TRUM_MOD_SOR::text ELSE SUBSTR(TRUM_MOD_SOR::bigint * 10,2,1) END + FROM w_IDE_SEJOUR_complet JOIN + (SELECT + TRUM_ID_SEJO, + MAX(TRUM_DAT_SOR_RUM) AS TRUM_DAT_SOR_RUM, + (MAX(ARRAY[TRUM_DAT_SOR_RUM::text,TRUM_MOD_SOR::text]))[2]::bigint AS TRUM_MOD_SOR + FROM + prod_hm.PMS_RUM + GROUP BY 1) sub ON SEJO_ID_SEJO = TRUM_ID_SEJO AND date(TRUM_DAT_SOR_RUM) = date(SEJO_DAT_FIN) + WHERE + no_sejour = w_SEJO_NUM_SEJ AND + ( + mode_sortie <> CASE WHEN TRUM_MOD_SOR < 8 THEN '0'::text ELSE SUBSTR(TRUM_MOD_SOR::bigint * 10,1,1) END OR + destination <> CASE WHEN TRUM_MOD_SOR < 8 THEN TRUM_MOD_SOR::text ELSE SUBSTR(TRUM_MOD_SOR::bigint * 10,2,1) END + ); + + -- Etablissements de provenance et destination + -- insertion nouveaux etablissements + DROP TABLE IF EXISTS w_ETAB; + CREATE TEMP TABLE w_ETAB AS + SELECT * FROM prod_hm.IDE_ETABLISSEMENT_EXTERIEUR LEFT JOIN base.t_etablissements ON ETEX_CODE = code + WHERE ETEX_ID_ETEX = ANY(array(SELECT SEJO_ID_ETEX_PRO FROM prod_hm.IDE_SEJOUR)::bigint[]) + OR ETEX_ID_ETEX = ANY(array(SELECT SEJO_ID_ETEX_DES FROM prod_hm.IDE_SEJOUR)::bigint[]); + + INSERT INTO base.t_etablissements + ( + code, + texte, + texte_court + ) + SELECT + ETEX_CODE, + ETEX_NOM, + ETEX_NOM + FROM w_ETAB + WHERE code IS NULL; + + -- rechargements des etablissements + DROP TABLE IF EXISTS w_ETAB; + CREATE TEMP TABLE w_ETAB AS + SELECT * FROM prod_hm.IDE_ETABLISSEMENT_EXTERIEUR LEFT JOIN base.t_etablissements ON ETEX_CODE = code; + + -- insertion des données de correspondances (pas d'update car les tables sont vidées avant import) + DROP TABLE IF EXISTS w_TRANS; + CREATE TEMP TABLE w_TRANS AS + SELECT + CASE WHEN SEJO_NUM_SEJ IS NULL OR SEJO_NUM_SEJ = '' THEN 'W' || SEJO_ID_SEJO ELSE SEJO_NUM_SEJ END as no_sejour, + etex_pro.oid as oid_pro, + etex_des.oid as oid_des + FROM w_IDE_SEJOUR_complet + LEFT JOIN w_ETAB as etex_pro ON w_IDE_SEJOUR_complet.SEJO_ID_ETEX_PRO = etex_pro.ETEX_ID_ETEX + LEFT JOIN w_ETAB as etex_des ON w_IDE_SEJOUR_complet.SEJO_ID_ETEX_DES = etex_des.ETEX_ID_ETEX + WHERE SEJO_ID_ETEX_PRO <> 0 OR SEJO_ID_ETEX_DES <> 0; + + INSERT INTO activite[PX].p_sejours_transferts( + sejour_id, + provenance_id, + destination_id + ) + SELECT + p_sejours.oid, + MAX(COALESCE(oid_pro,0)), + MAX(COALESCE(oid_des,0)) + FROM activite[PX].p_sejours + JOIN w_TRANS ON w_TRANS.no_sejour = p_sejours.no_sejour + GROUP BY 1 + ; + + -- ghm et ghs + UPDATE activite[PX].p_sejours SET + ghs_id = COALESCE(t_ghs.oid,0), + ghm_id = COALESCE(t_ghm.oid,0), + date_groupage = CASE WHEN TGHM_NUMERO <> '' AND TGHM_NUMERO NOT LIKE '90%' THEN COALESCE(date(TRUM_DAT_DER_GROUPAGE),'20991231)') ELSE '20991231' END + FROM prod_hm.PMS_RSS + LEFT JOIN + ( + SELECT TRUM_ID_TRSS, MAX(TRUM_DAT_DER_GROUPAGE) AS TRUM_DAT_DER_GROUPAGE FROM prod_hm.PMS_RUM GROUP BY 1 + ) subview ON TRUM_ID_TRSS = TRSS_ID_TRSS + LEFT JOIN prod_hm.PMS_GHM ON (TRSS_ID_TGHM = TGHM_ID_TGHM) + LEFT JOIN base.t_ghs ON TRSS_SARGH_NUM_GHS = t_ghs.code + LEFT JOIN base.t_ghm ON TGHM_NUMERO = t_ghm.code AND t_ghm.code NOT LIKE '90%' + WHERE + p_sejours.code_original = TRSS_ID_SEJO_D AND + TGHM_NUMERO <> '' AND + ( + p_sejours.ghs_id IS DISTINCT FROM COALESCE(t_ghs.oid,0) OR + p_sejours.ghm_id IS DISTINCT FROM COALESCE(t_ghm.oid,0) OR + p_sejours.date_groupage IS DISTINCT FROM CASE WHEN TGHM_NUMERO <> '' AND TGHM_NUMERO NOT LIKE '90%' THEN COALESCE(date(TRUM_DAT_DER_GROUPAGE),'20991231)') ELSE '20991231' END + ) + ; + + -- Code postal ? + DROP TABLE IF EXISTS w_SEJO_COD_POS; + CREATE TEMP TABLE w_SEJO_COD_POS AS + SELECT SEJO_ID_SEJO, + (MAX(ARRAY[ADRE_DAT_MOD::text, ADRE_COD_POS]))[2]::text AS ADRE_COD_POS, + (MAX(ARRAY[ADRE_DAT_MOD::text, ADRE_VILLE]))[2]::text AS ADRE_VILLE, + (MAX(ARRAY[ADRE_DAT_MOD::text, COALESCE(t_codes_postaux.oid,0)::text]))[2]::bigint AS code_postal_id + FROM prod_hm.IDE_PATIENT + JOIN prod_hm.IDE_SEJOUR ON SEJO_ID_PATI = PATI_ID_PATI + JOIN prod_hm.IDE_ADRESSE ON PATI_ID_PATI = ADRE_ID_OBJ + JOIN base.t_codes_postaux ON ADRE_COD_POS = t_codes_postaux.code + JOIN prod_hm.BAS_CATALOGUE_GEN ON IDE_ADRESSE.ADRE_ID_CAGE = BAS_CATALOGUE_GEN.CAGE_ID_CAGE AND CAGE_CODE = 'ADR_PERSO' + WHERE ADRE_COD_POS <> '' AND LENGTH(ADRE_COD_POS) = 5 + GROUP BY 1; + + UPDATE activite[PX].p_sejours + SET code_postal_id = w_SEJO_COD_POS.code_postal_id + FROM w_SEJO_COD_POS + WHERE code_original = SEJO_ID_SEJO AND + p_sejours.code_postal_id IS DISTINCT FROM w_SEJO_COD_POS.code_postal_id; + + -- Type séance d'après GHM + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + FROM base.t_ghm, + activite[PX].t_lieux + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE p_sejours.type_sejour <> '5' AND + p_sejours.type_sejour <> '9' AND + ghm_id = t_ghm.oid AND + lieu_sortie_id = t_lieux.oid AND + t_services_facturation.type_sejour <> '0sauf5' AND + t_ghm.code LIKE '28%' AND + no_sejour NOT IN (SELECT no_sejour FROM w_sejours WHERE type_sejour_force_hm <> ''); + + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '[PX]' = ''; + + UPDATE activite[PX].p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND + '[PX]' = ''; + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '[PX]' = ''; + + + -- recréation index + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_13'); + + + -- assurance + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_4'); + + INSERT INTO activite[PX].p_sejours_assurance( + sejour_id, + tiers_payant_0_id, + tiers_payant_1_id, + matricule_1, + tiers_payant_2_id, + matricule_2, + tiers_payant_22_id, + matricule_22) + SELECT + oid AS sejour_id, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + substr(w_IDE_PEC.matricule_1,1,30), + p_sejours.tiers_payant_2_id, + substr(w_IDE_PEC.matricule_2,1,30), + p_sejours.tiers_payant_22_id, + ''::text AS matricule_22 + FROM w_IDE_PEC + JOIN activite[PX].p_sejours ON code_original = PECH_ID_SEJO AND p_sejours.etat = ''; + + + + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_4'); + + + -- SMR + -- Compléments d'informations + DROP TABLE IF EXISTS w_sejours_smr_groupes; + CREATE TEMP TABLE w_sejours_smr_groupes AS + WITH dernier_gme_valide_par_sejour AS ( + SELECT DISTINCT ON (trhs_id_sejo) + trhs_id_sejo AS sejour_id + , PMS_GME.TGME_CODE AS gme_code + , t_gme.oid AS gme_id + , trhs_dat_der_groupage AS date_groupage + FROM prod_hm.pms_rhs + JOIN prod_hm.PMS_GME ON PMS_GME.TGME_ID_TGME = PMS_RHS.TRHS_ID_TGME + JOIN base.t_gme ON PMS_GME.TGME_CODE = t_gme.code + ORDER BY trhs_id_sejo, trhs_dat_ent DESC, trhs_dat_der_groupage DESC + ) + SELECT + IDE_SEJOUR.SEJO_NUM_SEJ AS no_sejour + , IDE_SEJOUR.sejo_dat_deb AS date_entree + , IDE_SEJOUR.sejo_dat_fin AS date_sortie + , COALESCE(TRHS_DAT_DER_GROUPAGE, dernier_gme_valide_par_sejour.date_groupage) AS date_groupage + , dernier_gme_valide_par_sejour.gme_code AS gme_code + , dernier_gme_valide_par_sejour.gme_id AS gme_id + , PMS_RHS.TRHS_COD_GMT AS gmt_code + , 0 AS gmt_id + , PMS_RHS.TRHS_DAT_ENT AS date_debut_rhs + , PMS_RHS.TRHS_DAT_SOR AS date_fin_rhs + , PMS_RHS.TRHS_NBJ_PRES_HWE AS nb_jours_presence_semaine + , DATE_PART('day', pms_rhs.TRHS_DAT_SOR - sejo_dat_deb) + 1 AS nb_jours_presence_total + , CASE + WHEN DATE_PART('day', pms_rhs.TRHS_DAT_SOR - sejo_dat_deb) <= 90 THEN 'periode_1' + ELSE 'periode_2' + END AS periode + , ''::text AS types_gmt_code + FROM prod_hm.pms_rhs + JOIN prod_hm.ide_sejour ON ide_sejour.sejo_id_sejo = pms_rhs.trhs_id_sejo + JOIN dernier_gme_valide_par_sejour ON dernier_gme_valide_par_sejour.sejour_id = pms_rhs.trhs_id_sejo + JOIN activite[PX].p_sejours ON p_sejours.no_sejour = IDE_SEJOUR.SEJO_NUM_SEJ + WHERE 1 = 1 + AND SEJO_STATUT NOT IN ('A', 'P') + AND TRHS_DAT_SOR <= now() + ORDER BY SEJO_NUM_SEJ, TRHS_DAT_ENT + ; + + ANALYZE w_sejours_smr_groupes; + + WITH sejours_avec_gmt_9999 AS ( + SELECT DISTINCT(no_sejour) + FROM w_sejours_smr_groupes + WHERE gmt_code = '9999' + ), + gmt_hc_reconstitues_par_sejour AS ( + SELECT + w_sejours_smr_groupes.no_sejour + , gmt1.code AS code_gmt_90_premiers_jours + , gmt2.code AS gmt_post_90_jours + FROM w_sejours_smr_groupes + JOIN sejours_avec_gmt_9999 ON sejours_avec_gmt_9999.no_sejour = w_sejours_smr_groupes.no_sejour + JOIN base.v_tarifs_prive_gmt_hc_pre_90_jours gmt1 ON w_sejours_smr_groupes.gme_code = gmt1.gme_code + AND w_sejours_smr_groupes.date_debut_rhs BETWEEN gmt1.date_debut AND gmt1.date_fin + JOIN base.v_tarifs_prive_gmt_en_7 gmt2 ON w_sejours_smr_groupes.gme_code = gmt2.gme_code + AND w_sejours_smr_groupes.date_debut_rhs BETWEEN gmt2.date_debut AND gmt2.date_fin + ) + UPDATE w_sejours_smr_groupes + SET gmt_code = + CASE + WHEN periode = 'periode_1' THEN code_gmt_90_premiers_jours + ELSE gmt_post_90_jours + END + FROM gmt_hc_reconstitues_par_sejour + WHERE w_sejours_smr_groupes.no_sejour = gmt_hc_reconstitues_par_sejour.no_sejour + ; + + WITH dernier_gmt_valide_par_sejour AS ( + SELECT DISTINCT ON (no_sejour) + no_sejour + , gmt_code + FROM w_sejours_smr_groupes + WHERE gmt_code <> '' + ORDER BY no_sejour, date_fin_rhs DESC, date_groupage DESC + ) + UPDATE w_sejours_smr_groupes + SET gmt_code = dernier_gmt_valide_par_sejour.gmt_code + FROM dernier_gmt_valide_par_sejour + WHERE dernier_gmt_valide_par_sejour.no_sejour = w_sejours_smr_groupes.no_sejour + AND w_sejours_smr_groupes.gmt_code = '' + ; + + WITH affectation_dates_gmt AS ( + SELECT DISTINCT ON (periode, no_sejour) + periode + , no_sejour + , MIN(date_debut_rhs) AS date_debut_rhs + , MAX(date_fin_rhs) AS date_fin_rhs + FROM w_sejours_smr_groupes + GROUP BY + periode + , no_sejour + ) + UPDATE w_sejours_smr_groupes + SET + date_debut_rhs = affectation_dates_gmt.date_debut_rhs + , date_fin_rhs = affectation_dates_gmt.date_fin_rhs + FROM affectation_dates_gmt + WHERE affectation_dates_gmt.no_sejour = w_sejours_smr_groupes.no_sejour + AND w_sejours_smr_groupes.periode = affectation_dates_gmt.periode + ; + + WITH presence_moyenne_hebdomadaire AS ( + SELECT + no_sejour + , SUM(nb_jours_presence_semaine) AS total_presence_hebdomadaire + , GREATEST(COUNT(*), 1) AS nombre_semaines + FROM w_sejours_smr_groupes + WHERE nb_jours_presence_semaine <> 0 + GROUP BY no_sejour + ) + UPDATE w_sejours_smr_groupes + SET nb_jours_presence_semaine = (total_presence_hebdomadaire / nombre_semaines)::numeric + FROM presence_moyenne_hebdomadaire + WHERE presence_moyenne_hebdomadaire.no_sejour = w_sejours_smr_groupes.no_sejour + AND nb_jours_presence_semaine = 0 + ; + + WITH presence_hors_weekend_par_sejour AS ( + SELECT + no_sejour + , SUM(nb_jours_presence_semaine) AS total_jours_presence + FROM w_sejours_smr_groupes + GROUP BY 1 + ) + UPDATE w_sejours_smr_groupes + SET nb_jours_presence_semaine = total_jours_presence + FROM presence_hors_weekend_par_sejour + WHERE presence_hors_weekend_par_sejour.no_sejour = w_sejours_smr_groupes.no_sejour + ; + + UPDATE w_sejours_smr_groupes + SET nb_jours_presence_total = nb_jours_presence_total - 90 + WHERE + EXISTS (SELECT 1 FROM base.v_tarifs_prive_gmt_en_7 WHERE v_tarifs_prive_gmt_en_7.code = w_sejours_smr_groupes.gmt_code) + AND periode = 'periode_2' + ; + + UPDATE w_sejours_smr_groupes + SET types_gmt_code = + CASE + WHEN EXISTS (SELECT 1 FROM base.v_tarifs_prive_gmt_forfaitisables WHERE w_sejours_smr_groupes.gmt_code = v_tarifs_prive_gmt_forfaitisables.code) THEN 'hc_forfaitisable' + WHEN EXISTS (SELECT 1 FROM base.v_tarifs_prive_gmt_non_forfaitisables WHERE w_sejours_smr_groupes.gmt_code = v_tarifs_prive_gmt_non_forfaitisables.code) THEN 'hc_non_forfaitisable' + WHEN EXISTS (SELECT 1 FROM base.v_tarifs_prive_gmt_hospitalisation_partielle WHERE w_sejours_smr_groupes.gmt_code = v_tarifs_prive_gmt_hospitalisation_partielle.code) THEN 'hp_hebdomadaire' + ELSE 'hc_sans_zf' + END + ; + + DROP TABLE IF EXISTS w_codes_pour_sejours_avec_deux_gmt; + + CREATE TEMP TABLE w_codes_pour_sejours_avec_deux_gmt AS + SELECT code, gme_code, date_debut, date_fin FROM base.v_tarifs_prive_gmt_dzf_90 + UNION + SELECT code, gme_code, date_debut, date_fin FROM base.v_tarifs_prive_gmt_forfaitisables + UNION + SELECT code, gme_code, date_debut, date_fin FROM base.v_tarifs_prive_gmt_non_forfaitisables + UNION + SELECT code, gme_code, date_debut, date_fin FROM base.v_tarifs_prive_gmt_en_7 + ; + + -- Mise à jour des dates de début de rhs pour hospitalisations partielles de + 90jrs + WITH sejours_hp AS ( + SELECT + no_sejour + , MIN(date_debut_rhs) AS date_debut_rhs + FROM w_sejours_smr_groupes + WHERE types_gmt_code = 'hp_hebdomadaire' + GROUP BY no_sejour + ) + UPDATE w_sejours_smr_groupes + SET date_debut_rhs = sejours_hp.date_debut_rhs + FROM sejours_hp + WHERE sejours_hp.no_sejour = w_sejours_smr_groupes.no_sejour + ; + + -- Mise à jour des dates de fin de rhs en HC pour les patients encore présents + WITH sejours_hc_patients_presents AS ( + SELECT DISTINCT ON (no_sejour) + no_sejour + , periode + , date_sortie + FROM w_sejours_smr_groupes + WHERE + types_gmt_code ILIKE 'hc%' + AND ( + w_sejours_smr_groupes.date_sortie IS NULL + OR w_sejours_smr_groupes.date_sortie > now() + ) + ORDER BY + no_sejour + , periode DESC + ) + UPDATE w_sejours_smr_groupes + SET date_fin_rhs = now() + FROM sejours_hc_patients_presents + WHERE + sejours_hc_patients_presents.no_sejour = w_sejours_smr_groupes.no_sejour + AND sejours_hc_patients_presents.periode = w_sejours_smr_groupes.periode + ; + + WITH sejours_gmt_hospit_partielle AS ( + SELECT DISTINCT ON (no_sejour) + no_sejour + , date_entree + , date_sortie + , date_groupage + , gmt_code + , gmt_id + , gme_code + , gme_id + , date_debut_rhs + , date_fin_rhs + , nb_jours_presence_semaine + , types_gmt_code + FROM w_sejours_smr_groupes + WHERE types_gmt_code = 'hp_hebdomadaire' + ORDER BY + no_sejour + , date_fin_rhs DESC + ), + sejours_gmt_en_8 AS ( + SELECT DISTINCT ON (no_sejour) + no_sejour + , date_entree + , date_sortie + , date_groupage + , gmt_code + , gmt_id + , gme_code + , gme_id + , date_debut_rhs + , date_fin_rhs + , nb_jours_presence_total + , types_gmt_code + FROM w_sejours_smr_groupes + WHERE gmt_code LIKE '8%' + ORDER BY + no_sejour + , date_fin_rhs DESC + ), + sejours_gmt_multiples AS ( + SELECT DISTINCT ON (no_sejour, gmt_code, periode) + no_sejour + , date_entree + , date_sortie + , date_groupage + , gmt_code + , gmt_id + , gme_code + , gme_id + , date_debut_rhs + , date_fin_rhs + , nb_jours_presence_total + , types_gmt_code + FROM w_sejours_smr_groupes + WHERE EXISTS ( + SELECT 1 FROM w_codes_pour_sejours_avec_deux_gmt + WHERE w_sejours_smr_groupes.gmt_code = w_codes_pour_sejours_avec_deux_gmt.code + AND w_sejours_smr_groupes.gme_code = w_codes_pour_sejours_avec_deux_gmt.gme_code + AND w_sejours_smr_groupes.date_fin_rhs BETWEEN w_codes_pour_sejours_avec_deux_gmt.date_debut AND w_codes_pour_sejours_avec_deux_gmt.date_fin + ) + ORDER BY + no_sejour + , gmt_code, periode + , nb_jours_presence_total DESC + ) + INSERT INTO activite[PX].p_sejours_groupes_smr (no_sejour, date_entree, date_sortie, date_groupage, gmt_code, gmt_id, gme_code, gme_id, date_debut_gmt, date_fin_gmt, nb_jours_presence, types_gmt_code) + SELECT * + FROM sejours_gmt_multiples + UNION ALL + SELECT * FROM sejours_gmt_hospit_partielle + UNION ALL + SELECT * FROM sejours_gmt_en_8 + ON CONFLICT (no_sejour, gmt_code) + DO NOTHING + ; + + -- MAJ des séjours groupés dans la table des séjours + WITH dernier_groupage_par_sejour AS ( + SELECT DISTINCT ON (no_sejour) + p_sejours_groupes_smr.date_groupage::date + , t_gmt.oid AS gmt_id + , t_gmt.code AS gmt_code + , no_sejour + , p_sejours_groupes_smr.gme_id + FROM activite[PX].p_sejours_groupes_smr + JOIN base.t_gmt ON p_sejours_groupes_smr.gmt_code = t_gmt.code + ORDER BY + no_sejour + , date_debut_gmt DESC + ) + UPDATE activite[PX].p_sejours + SET + date_groupage = dernier_groupage_par_sejour.date_groupage + , gmt_id = dernier_groupage_par_sejour.gmt_id + , gme_id = dernier_groupage_par_sejour.gme_id + , delai_groupage = dernier_groupage_par_sejour.date_groupage - p_sejours.date_sortie + FROM dernier_groupage_par_sejour + WHERE dernier_groupage_par_sejour.no_sejour = p_sejours.no_sejour + ; + + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_IDE_PEC; + DROP TABLE IF EXISTS w_sejours; + DROP TABLE IF EXISTS w_IDE_MOUVEMENT_S; + DROP TABLE IF EXISTS w_sejours_smr_groupes; + DROP TABLE IF EXISTS w_codes_pour_sejours_avec_deux_gmt; + ]]> + + + + subview.CHAS_ID_UNFO THEN subview.MOUV_ID_UNFO::text || '-0' + ELSE subview.MOUV_ID_LIPO::text END AS MOUV_ID_LIPO, + ''::character(1) AS CAGE_CODE_before, + '0'::text AS MOUV_ID_UNFO_before, + '0'::text AS MOUV_ID_UNFO_MED_before, + 0::text AS MOUV_ID_LIPO_before, + ''::character(1) AS CAGE_CODE_next, + '0'::text AS MOUV_ID_UNFO_next, + '0'::text AS MOUV_ID_UNFO_MED_next, + 0::text AS MOUV_ID_LIPO_next + + FROM + ( + SELECT + CASE WHEN SEJO_NUM_SEJ IS NULL OR SEJO_NUM_SEJ = '' THEN 'W' || SEJO_ID_SEJO ELSE SEJO_NUM_SEJ END AS SEJO_NUM_SEJ, + MOUV_ID_SEJO, + CASE WHEN CAGE_CODE = 'E' THEN SEJO_DAT_DEB WHEN CAGE_CODE = 'S' THEN SEJO_DAT_FIN ELSE MOUV_DAT_MOU END AS MOUV_DAT_MOU, + CAGE_CODE, + COALESCE(TRUM_ID_UNME_principale,0) AS TRUM_ID_UNME_principale, + MOUV_ID_UNFO::text, + MOUV_ID_UNFO_MED::text, + MOUV_ID_LIPO, + COALESCE(CHAS_ID_UNFO,0) AS CHAS_ID_UNFO, + CAPE_CODE AS SEJO_CODE_CAPE_VEN, + SEJO_ID_SEJO_MER_ENF + FROM prod_hm.IDE_MOUVEMENT + JOIN activite[PX].p_sejours ON MOUV_ID_SEJO::bigint = p_sejours.code_original + JOIN w_IDE_SEJOUR_complet ON MOUV_ID_SEJO = SEJO_ID_SEJO + LEFT JOIN prod_hm.PAD_LIT_POSTE ON MOUV_ID_LIPO = LIPO_ID_LIPO + LEFT JOIN prod_hm.PAD_CHAMBRE_SALLE ON LIPO_ID_CHAS = CHAS_ID_CHAS + LEFT JOIN w_PMS_RUM_principal ON TRUM_ID_SEJO = MOUV_ID_SEJO + JOIN prod_hm.BAS_CATALOGUE_GEN ON (MOUV_ID_CAGE = CAGE_ID_CAGE AND CAGE_CODE IN ('E', 'D', 'M', 'S', 'C','P', 'F','T', 'A', 'R')) + JOIN prod_hm.BAS_CATALOGUE_PERS ON (SEJO_ID_CAPE_VEN = CAPE_ID_CAPE) + + ORDER BY CASE WHEN SEJO_NUM_SEJ IS NULL OR SEJO_NUM_SEJ = '' THEN 'W' || SEJO_ID_SEJO ELSE SEJO_NUM_SEJ END, MOUV_DAT_MOU, CAGE_CODE + ) subview; + + + -- calcul date fin + + UPDATE w_IDE_MOUVEMENT + SET MOUV_DAT_FIN = CASE WHEN w_IDE_MOUVEMENT_next.CAGE_CODE <> 'S' THEN w_IDE_MOUVEMENT_next.MOUV_DAT_MOU - interval '1 second' ELSE w_IDE_MOUVEMENT_next.MOUV_DAT_MOU END, + MOUV_DAT_FIN_DAT = date(CASE WHEN w_IDE_MOUVEMENT_next.CAGE_CODE <> 'S' THEN w_IDE_MOUVEMENT_next.MOUV_DAT_MOU - interval '1 second' ELSE w_IDE_MOUVEMENT_next.MOUV_DAT_MOU END), + MOUV_DAT_FIN_TIM = extract('hour' FROM CASE WHEN w_IDE_MOUVEMENT_next.CAGE_CODE <> 'S' THEN w_IDE_MOUVEMENT_next.MOUV_DAT_MOU - interval '1 second' ELSE w_IDE_MOUVEMENT_next.MOUV_DAT_MOU END) * 10000 + + extract('minute' FROM CASE WHEN w_IDE_MOUVEMENT_next.CAGE_CODE <> 'S' THEN w_IDE_MOUVEMENT_next.MOUV_DAT_MOU - interval '1 second' ELSE w_IDE_MOUVEMENT_next.MOUV_DAT_MOU END) * 100 + + extract('second' FROM CASE WHEN w_IDE_MOUVEMENT_next.CAGE_CODE <> 'S' THEN w_IDE_MOUVEMENT_next.MOUV_DAT_MOU - interval '1 second' ELSE w_IDE_MOUVEMENT_next.MOUV_DAT_MOU END), + CAGE_CODE_next = w_IDE_MOUVEMENT_next.CAGE_CODE, + MOUV_ID_UNFO_next = w_IDE_MOUVEMENT_next.MOUV_ID_UNFO, + MOUV_ID_UNFO_MED_next = w_IDE_MOUVEMENT_next.MOUV_ID_UNFO_MED, + MOUV_ID_LIPO_next = w_IDE_MOUVEMENT_next.MOUV_ID_LIPO + FROM w_IDE_MOUVEMENT w_IDE_MOUVEMENT_next + WHERE w_IDE_MOUVEMENT.SEJO_NUM_SEJ = w_IDE_MOUVEMENT_next.SEJO_NUM_SEJ + AND w_IDE_MOUVEMENT.sequence = w_IDE_MOUVEMENT_next.sequence - 1; + + + -- Si hopital de jour sans journée, + UPDATE w_IDE_MOUVEMENT + SET CAGE_CODE_next = 'C' + FROM activite[PX].p_sejours, + activite[PX].t_services_facturation + JOIN base.t_modes_traitement on t_services_facturation.mode_traitement_id = t_modes_traitement.oid + WHERE MOUV_ID_SEJO::bigint = p_sejours.code_original AND + code_prevu <> '1' AND + CAGE_CODE = 'E' AND + MOUV_ID_UNFO_MED = t_services_facturation.code_original AND + (CAGE_CODE_NEXT = '' OR CAGE_CODE_NEXT = 'S' AND date_entree <> date_sortie) AND + t_modes_traitement.code = '04' AND + t_services_facturation.type_t2a = '2'; + + + + + -- calcul mvt avant + + UPDATE w_IDE_MOUVEMENT + SET + CAGE_CODE_before = w_IDE_MOUVEMENT_before.CAGE_CODE, + MOUV_ID_UNFO_before = w_IDE_MOUVEMENT_before.MOUV_ID_UNFO, + MOUV_ID_UNFO_MED_before = w_IDE_MOUVEMENT_before.MOUV_ID_UNFO_MED, + MOUV_ID_LIPO_before = w_IDE_MOUVEMENT_before.MOUV_ID_LIPO + FROM w_IDE_MOUVEMENT w_IDE_MOUVEMENT_before + WHERE w_IDE_MOUVEMENT.SEJO_NUM_SEJ = w_IDE_MOUVEMENT_before.SEJO_NUM_SEJ + AND w_IDE_MOUVEMENT.sequence = w_IDE_MOUVEMENT_before.sequence + 1 + AND w_IDE_MOUVEMENT.CAGE_CODE <> 'S'; + + -- Absences + UPDATE w_IDE_MOUVEMENT + SET MOUV_ID_UNFO_MED = '*ABS' + WHERE CAGE_CODE = 'A'; + + -- Hopital de jour Dernière séance avant dans sortie + UPDATE w_IDE_MOUVEMENT SET + MOUV_DAT_MOU = MOUV_DAT_FIN, + MOUV_DAT_MOU_DAT = MOUV_DAT_FIN_DAT, + MOUV_DAT_MOU_TIM = MOUV_DAT_FIN_TIM + WHERE CAGE_CODE = 'P' AND CAGE_CODE_next = 'S' AND + MOUV_DAT_FIN <> MOUV_DAT_MOU; + + -- Hopital de jour Première séance après date entree + UPDATE w_IDE_MOUVEMENT SET + MOUV_DAT_FIN = MOUV_DAT_MOU, + MOUV_DAT_FIN_DAT = MOUV_DAT_MOU_DAT, + MOUV_DAT_FIN_TIM = MOUV_DAT_MOU_TIM + WHERE CAGE_CODE = 'E' AND CAGE_CODE_next = 'C' AND + MOUV_DAT_MOU <> MOUV_DAT_FIN; + + + -- creation mouvements par jour + + DROP TABLE IF EXISTS w_mouvements_sejour; + CREATE TEMP TABLE w_mouvements_sejour AS + SELECT + w_IDE_MOUVEMENT.MOUV_ID_SEJO, + w_IDE_MOUVEMENT.SEJO_NUM_SEJ AS no_sejour, + p_sejours.oid AS sejour_id, + sequence, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE WHEN p_calendrier.date = MOUV_DAT_MOU_DAT THEN MOUV_DAT_MOU_TIM ELSE 0 END AS heure_debut, + CASE WHEN p_calendrier.date = MOUV_DAT_FIN_DAT THEN MOUV_DAT_FIN_TIM ELSE 240000 END AS heure_fin, + CASE WHEN p_calendrier.date = MOUV_DAT_MOU_DAT AND CAGE_CODE = 'E' AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes, + CASE WHEN p_calendrier.date = MOUV_DAT_FIN_DAT AND CAGE_CODE_next = 'S' AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes, + CASE WHEN p_calendrier.date = MOUV_DAT_MOU_DAT AND CAGE_CODE = 'E' AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree, + CASE WHEN p_calendrier.date = MOUV_DAT_FIN_DAT AND CAGE_CODE_next = 'S' AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie, + CASE WHEN p_sejours.type_sejour = '1' AND CAGE_CODE_next <> 'C' AND CAGE_CODE <> 'P' THEN '1' ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN p_calendrier.date = MOUV_DAT_MOU_DAT AND CAGE_CODE = 'E' AND p_sejours.type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires, + CASE WHEN p_calendrier.date = MOUV_DAT_MOU_DAT AND CAGE_CODE = 'E' AND p_sejours.type_sejour = '3' THEN 1 ELSE 0 END AS nb_externes, + CASE WHEN p_calendrier.date = MOUV_DAT_MOU_DAT AND CAGE_CODE = 'E' AND p_sejours.type_sejour <> '9' AND t_dmt.code IN ('303', '307', '308', '401', '402', '403', '404', '405', '406', '407', '408', '409') THEN 1 ELSE 0 END AS nb_urgences, + 0 as nb_seances, + + CASE WHEN p_calendrier.date = MOUV_DAT_MOU_DAT AND CAGE_CODE IN ('D', 'M') AND p_sejours.type_sejour = '1' AND mouv_id_unfo_med <> mouv_id_unfo_med_before THEN 1 ELSE 0 END AS nb_entrees_mutation_service, + CASE WHEN p_calendrier.date = MOUV_DAT_FIN_DAT AND CAGE_CODE_next IN ('D', 'M') AND p_sejours.type_sejour = '1' AND mouv_id_unfo_med <> mouv_id_unfo_med_next THEN 1 ELSE 0 END AS nb_sorties_mutation_service, + CASE WHEN p_calendrier.date = MOUV_DAT_MOU_DAT AND CAGE_CODE IN ('D', 'M') AND p_sejours.type_sejour = '1' AND mouv_id_unfo <> mouv_id_unfo_before THEN 1 ELSE 0 END AS nb_entrees_mutation_etage, + CASE WHEN p_calendrier.date = MOUV_DAT_FIN_DAT AND CAGE_CODE_next IN ('D', 'M') AND p_sejours.type_sejour = '1' AND mouv_id_unfo <> mouv_id_unfo_next THEN 1 ELSE 0 END AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + 0 AS nb_entrees_mutation_unite_medicale, + 0 AS nb_sorties_mutation_unite_medicale, + + CASE WHEN p_sejours.type_sejour = '1' AND CAGE_CODE_next <> 'C' AND CAGE_CODE <> 'P' AND (p_calendrier.date <> MOUV_DAT_FIN_DAT OR CAGE_CODE_next = 'S') THEN 1 ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN p_sejours.type_sejour = '1' AND CAGE_CODE_next <> 'C' AND CAGE_CODE <> 'P' AND p_calendrier.date <> MOUV_DAT_FIN_DAT THEN 1 ELSE 0 END AS nb_jours_js_non_inclus, + + CASE WHEN p_sejours.type_sejour = '1' AND CAGE_CODE_next <> 'C' AND CAGE_CODE <> 'P' AND t_lits.chambre_particuliere = 'O' THEN '1' ELSE '0' END AS est_chambre_particuliere, + CASE WHEN p_sejours.type_sejour = '1' AND CAGE_CODE_next <> 'C' AND CAGE_CODE <> 'P' AND t_lits.chambre_particuliere = 'O' AND (p_calendrier.date <> MOUV_DAT_FIN_DAT OR CAGE_CODE_next = 'S') THEN 1 ELSE 0 END AS nb_chambres_particulieres, + + CASE WHEN p_calendrier.date = MOUV_DAT_MOU_DAT AND CAGE_CODE = 'E' AND (p_sejours.type_sejour = '6' OR COALESCE(w_IDE_MOUVEMENT.SEJO_ID_SEJO_MER_ENF) > 0) THEN 1 ELSE 0 END AS nb_bebes, + + TRUM_ID_UNME_principale, + MOUV_ID_UNFO_MED, + MOUV_ID_LIPO, + + COALESCE(t_lieux.oid,0) AS lieu_id, + + p_sejours.medecin_sejour_id as medecin_sejour_id, + + CASE WHEN p_sejours.code_prevu = '1' OR p_calendrier.date > date(date_extraction) THEN '1' ELSE '0' END AS est_mouvement_previsionnel, + + ''::text AS est_premier_mouvement_jour, + ''::text AS est_dernier_mouvement_jour + + + FROM w_IDE_MOUVEMENT + LEFT JOIN activite[PX].t_lieux ON + (t_lieux.code_original_1 = MOUV_ID_UNFO_MED::text AND + t_lieux.code_original_2 = TRUM_ID_UNME_principale AND + t_lieux.code_original_4 = MOUV_ID_LIPO AND + t_lieux.code_original_6 = MOUV_ID_UNFO_MED::text ) + JOIN w_IDE_SEJOUR_complet ON SEJO_ID_SEJO = MOUV_ID_SEJO + JOIN activite[PX].p_sejours ON w_IDE_MOUVEMENT.SEJO_NUM_SEJ = p_sejours.no_sejour AND p_sejours.etat = '' + JOIN activite[PX].t_lits ON MOUV_ID_LIPO = t_lits.code_original + JOIN activite[PX].t_services_facturation ON MOUV_ID_UNFO_MED::text = t_services_facturation.code_original + JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + JOIN base.p_calendrier ON p_calendrier.date BETWEEN MOUV_DAT_MOU_DAT AND MOUV_DAT_FIN_DAT AND p_calendrier.date <= date(date_extraction) + interval '1 month' + WHERE CAGE_CODE <> 'S' AND + (CAGE_CODE <> 'P' OR CAGE_CODE_next = 'S') AND + (p_sejours.type_sejour NOT IN ('3') OR (p_sejours.type_sejour IN ('3') AND CAGE_CODE = 'E' AND p_calendrier.date = MOUV_DAT_MOU_DAT)) AND + (p_sejours.code_prevu <> '1' AND p_calendrier.date <= date(date_extraction) OR p_calendrier.date >= date(date_extraction)) + ORDER BY sequence, p_calendrier.date; + + + DELETE FROM w_mouvements_sejour WHERE heure_fin < heure_debut; + + + + -- Actualisation lieux + UPDATE activite[PX].t_lieux SET + service_facturation_id = t_services_facturation.oid, + mode_traitement_id = t_services_facturation.mode_traitement_id + FROM activite[PX].t_services_facturation + WHERE + code_original_1 = t_services_facturation.code_original; + + UPDATE activite[PX].t_lieux SET + activite_id = t_activites.oid + FROM activite[PX].t_activites + WHERE + code_original_2 = t_activites.code_original; + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = t_unites_fonctionnelles.oid + FROM activite[PX].t_unites_fonctionnelles + WHERE + code_original_6 = t_unites_fonctionnelles.code_original; + + UPDATE activite[PX].t_lieux SET + lit_id = t_lits.oid + FROM activite[PX].t_lits + WHERE + code_original_4 = t_lits.code_original; + + + + -- creation nouveaux lieux + + INSERT INTO activite[PX].t_lieux( + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + code_original_6, + code_original_7, + service_facturation_id, + activite_id, + lit_id, + unite_medicale_id, + unite_fonctionnelle_id, + mode_traitement_id) + SELECT DISTINCT + MOUV_ID_UNFO_MED, + TRUM_ID_UNME_principale, + '', + MOUV_ID_LIPO, + '', + MOUV_ID_UNFO_MED, + '', + t_services_facturation.oid, + COALESCE(t_activites.oid,0), + t_lits.oid, + 0, + t_unites_fonctionnelles.oid, + t_services_facturation.mode_traitement_id + FROM w_mouvements_sejour + LEFT JOIN activite[PX].t_lieux ON + (t_lieux.code_original_1 = MOUV_ID_UNFO_MED::text AND + t_lieux.code_original_2 = TRUM_ID_UNME_principale::bigint AND + t_lieux.code_original_4 = MOUV_ID_LIPO AND + t_lieux.code_original_6 = MOUV_ID_UNFO_MED::text ) + JOIN activite[PX].t_services_facturation ON MOUV_ID_UNFO_MED::text = t_services_facturation.code_original + LEFT JOIN activite[PX].t_activites ON TRUM_ID_UNME_principale::bigint = t_activites.code_original + JOIN activite[PX].t_lits ON MOUV_ID_LIPO = t_lits.code_original + JOIN activite[PX].t_unites_fonctionnelles ON MOUV_ID_UNFO_MED::text = t_unites_fonctionnelles.code_original + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13; + + + + + -- Mise à jour lieux dans futurs mouvements + UPDATE w_mouvements_sejour SET lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE t_lieux.code_original_1 = MOUV_ID_UNFO_MED::text + AND t_lieux.code_original_2 = TRUM_ID_UNME_principale::bigint + AND t_lieux.code_original_4 = MOUV_ID_LIPO + AND t_lieux.code_original_6 = MOUV_ID_UNFO_MED::text + AND w_mouvements_sejour.lieu_id = 0; + + + + -- Médecin séjour (fonctionnalitée non supportée pour le moment) + + --UPDATE w_mouvements_sejour SET medecin_sejour_id = t_medecins_administratifs.oid + --FROM prod_hm.IDE_MED_VENUE, prod_hm.BAS_CATALOGUE_PERS, activite[PX].t_medecins_administratifs + --WHERE MOUV_ID_SEJO = MESE_ID_SEJO + --AND MESE_ID_CAPE = CAPE_ID_CAPE + --AND MESE_ID_MEDE::bigint = t_medecins_administratifs.code_original + --AND date BETWEEN date(MESE_DAT_DEB) AND date(MESE_DAT_FIN) + --AND CAPE_CODE IN ('1') + --AND w_mouvements_sejour.medecin_sejour_id <> t_medecins_administratifs.oid + --AND t_medecins_administratifs.oid <> 0; + + + -- Unité médicale selon UF + UPDATE activite[PX].t_lieux + SET unite_medicale_id = t_unites_medicales.oid, + code_original_5 = UNFO_ID_UNME + FROM prod_hm.BAS_UF + JOIN prod_hm.SAD_UM ON UNFO_ID_UNME = UNME_ID_UNME + JOIN activite[PX].t_unites_medicales ON UNME_ID_UNME =t_unites_medicales.code_original + WHERE UNFO_ID_UNFO = code_original_6 AND + (unite_medicale_id IS DISTINCT FROM t_unites_medicales.oid OR + code_original_5 IS DISTINCT FROM UNFO_ID_UNME); + + UPDATE activite[PX].t_lieux + SET unite_medicale_id = t_unites_medicales.oid, + code_original_5 = '*ABS' + FROM activite[PX].t_unites_medicales + WHERE code_original_6 = '*ABS' AND t_unites_medicales.code_original = '*ABS'; + + -- Unité médicale principale selon UF + UPDATE activite[PX].t_lieux SET + activite_id = t_activites.oid, + code_original_2 = UNFO_ID_UNME + FROM prod_hm.BAS_UF + JOIN prod_hm.SAD_UM ON UNFO_ID_UNME = UNME_ID_UNME + JOIN activite[PX].t_activites ON UNME_ID_UNME = t_activites.code_original + WHERE UNFO_ID_UNFO = code_original_6 AND + activite_id = 0; + + + -- Prise en compte mutations ambulatoire + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'MUTATIONAMBU', + 'Traitement des mutations / ambulatoire', + '0', + '0=Prendre en compte mouvement d''entrée, 1=Prendre en compte mouvement de sortie' + WHERE 'MUTATIONAMBU' NOT IN (SELECT code FROM activite.t_divers); + ; + + DROP TABLE IF EXISTS w_correction_ambu; + CREATE TEMP TABLE w_correction_ambu AS + SELECT p_mouvements_sejour.no_sejour, + (MAX(Array[to_char(heure_debut,'FM000000'),lieu_id::text]))[2]::bigint AS lieu_id, + MIN(heure_entree) AS heure_entree, + MAX(heure_sortie) AS heure_sortie + FROM w_mouvements_sejour p_mouvements_sejour + JOIN activite[PX].p_sejours ON p_mouvements_sejour.no_sejour = p_sejours.no_sejour + JOIN activite.t_divers ON t_divers.code = 'MUTATIONAMBU' ANd t_divers.valeur = '1' + WHERE type_sejour = '2' AND code_sorti = '1' AND date_sortie = date_entree + GROUP BY 1 + HAVING count(*) > 1 AND count(DISTINCT date) = 1 + ; + + DELETE FROM w_mouvements_sejour p_mouvements_sejour + WHERE nb_ambulatoires = '0' AND + no_sejour IN (SELECT no_sejour FROM w_correction_ambu) + ; + + UPDATE w_mouvements_sejour p_mouvements_sejour + SET lieu_id = w_correction_ambu.lieu_id, + heure_debut = heure_entree, + heure_fin = heure_sortie + FROM w_correction_ambu + WHERE p_mouvements_sejour.no_sejour = w_correction_ambu.no_sejour AND + p_mouvements_sejour.nb_ambulatoires = '1' + ; + + + -- Seances selon GHS pmsi + DROP TABLE IF EXISTS w_ghs_seances; + CREATE TEMP TABLE w_ghs_seances AS + SELECT ghs_id AS oid + FROM activite[PX].p_sejours + JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid AND t_ghm.code LIKE '28%' + JOIN base.t_ghs ON p_sejours.ghs_id = t_ghs.oid AND t_ghs.code <> 9999 AND t_ghs.code > 0 + WHERE ghs_id <> 0 + GROUP BY 1; + + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT + p_sejours.no_sejour, + date_entree AS date, + 1 AS nb_seances + FROM activite[PX].p_sejours + JOIN base.t_ghs ON p_sejours.ghs_id = t_ghs.oid + JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid + WHERE date_entree = date_sortie AND + (ghs_id IN (SELECT oid FROM w_ghs_seances) OR t_ghm.code LIKE '28%'); + + CREATE INDEX w_sejours_seances_i1 + ON w_sejours_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_sejours_seances.nb_seances + FROM w_sejours_seances + WHERE w_sejours_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_sejours_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_sejours_seances.nb_seances; + + + + -- seances selon GHS facturé + DROP TABLE IF EXISTS w_FAC_LIGNE_FACTURE_seances; + CREATE TEMP TABLE w_FAC_LIGNE_FACTURE_seances AS + SELECT + p_sejours.no_sejour, + date(LFAC_DAT_EXE_DEB) AS date, + SUM(LFAC_QTE_COEFFICIENT) AS nb_seances + FROM prod_hm.FAC_LIGNE_FACTURE + JOIN prod_hm.FAC_FACTURE ON LFAC_ID_FACT = FACT_ID_FACT AND FACT_TYPE <> 'P' AND FACT_TYPE <> 'E' AND FACT_DAT_SUP IS NULL + JOIN activite[PX].p_sejours ON LFAC_ID_SEJO_D::bigint = p_sejours.code_original + JOIN base.t_ghs ON to_number('0' || LFAC_NUM_GHS,'00000') = t_ghs.code + WHERE LFAC_LET_CLE = 'GHS' AND LFAC_ID_PRSE <> 0 AND + t_ghs.oid IN (SELECT oid FROM w_ghs_seances) + GROUP BY 1,2 + HAVING SUM(LFAC_QTE_COEFFICIENT) > 0; + + CREATE INDEX w_FAC_LIGNE_FACTURE_seances_i1 + ON w_FAC_LIGNE_FACTURE_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_FAC_LIGNE_FACTURE_seances.nb_seances + FROM w_FAC_LIGNE_FACTURE_seances + WHERE w_FAC_LIGNE_FACTURE_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_FAC_LIGNE_FACTURE_seances.date = w_mouvements_sejour.date; + + + + + -- seances selon D09, D11 facturé + DROP TABLE IF EXISTS w_FAC_LIGNE_FACTURE_seances; + CREATE TEMP TABLE w_FAC_LIGNE_FACTURE_seances AS + SELECT + p_sejours.no_sejour, + date(LFAC_DAT_EXE_DEB) AS date, + SUM(LFAC_QTE_COEFFICIENT) AS nb_seances + FROM prod_hm.FAC_LIGNE_FACTURE + JOIN prod_hm.FAC_FACTURE ON LFAC_ID_FACT = FACT_ID_FACT AND FACT_TYPE <> 'P' AND FACT_TYPE <> 'E' AND FACT_DAT_SUP IS NULL + JOIN activite[PX].p_sejours ON LFAC_ID_SEJO_D::bigint = p_sejours.code_original + WHERE LFAC_LET_CLE IN ('D09', 'D11') AND LFAC_ID_PRSE <> 0 + GROUP BY 1,2 + HAVING SUM(LFAC_QTE_COEFFICIENT) > 0; + + CREATE INDEX w_FAC_LIGNE_FACTURE_seances_i1 + ON w_FAC_LIGNE_FACTURE_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_FAC_LIGNE_FACTURE_seances.nb_seances + FROM w_FAC_LIGNE_FACTURE_seances + WHERE w_FAC_LIGNE_FACTURE_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_FAC_LIGNE_FACTURE_seances.date = w_mouvements_sejour.date; + + + -- seances selon Actes + DROP TABLE IF EXISTS w_SAD_ACTIVITE_SAISIES_seances; + CREATE TEMP TABLE w_SAD_ACTIVITE_SAISIES_seances AS + SELECT + p_sejours.no_sejour, + date(ACSA_DAT_EXE_DEB) AS date, + 1 AS nb_seances + FROM prod_hm.SAD_ACTIVITE_SAISIES + JOIN activite[PX].p_sejours ON ACSA_ID_SEJO::bigint = p_sejours.code_original + WHERE + ACSA_LET_CLE = 'K' AND + ACSA_QTE_COEFFICIENT = (SELECT + ACSA_QTE_COEFFICIENT + FROM prod_hm.SAD_ACTIVITE_SAISIES + JOIN activite[PX].p_sejours ON ACSA_ID_SEJO::bigint = p_sejours.code_original + JOIN w_FAC_LIGNE_FACTURE_seances ON p_sejours.no_sejour = w_FAC_LIGNE_FACTURE_seances.no_sejour AND w_FAC_LIGNE_FACTURE_seances.date = date(ACSA_DAT_EXE_DEB) + WHERE ACSA_LET_CLE = 'K' + GROUP BY 1 + ORDER BY 1 + LIMIT 1) + GROUP BY 1,2; + + UPDATE w_mouvements_sejour + SET nb_seances = w_SAD_ACTIVITE_SAISIES_seances.nb_seances + FROM w_SAD_ACTIVITE_SAISIES_seances + WHERE w_SAD_ACTIVITE_SAISIES_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_SAD_ACTIVITE_SAISIES_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances = 0; + + -- Séances d'après acte PMSI (ESPIC) + SELECT base.cti_execute('DROP TABLE IF EXISTS w_PMSI_seances',1) + WHERE 'p_rss_actes' IN ( + SELECT table_name + FROM information_schema.tables + WHERE table_schema = 'pmsi' + ) + ; + + SELECT base.cti_execute('CREATE TEMP TABLE w_PMSI_seances AS + SELECT + p_sejours.no_sejour, + date(p_rss_actes.date_acte) AS date, + 1 AS nb_seances + FROM pmsi.p_rss_actes + JOIN pmsi.t_actes ON acte_id = t_actes.oid + JOIN pmsi.p_rss ON rss_id = p_rss.oid + JOIN activite[PX].p_sejours ON p_sejours.no_sejour = p_rss.no_sejour_administratif + WHERE p_sejours.date_sortie > p_sejours.date_entree + AND est_budget_global = ''1'' + AND t_actes.code IN (''ZZLF900'',''JVJF004'') + GROUP BY + p_sejours.no_sejour, + date(p_rss_actes.date_acte)' + ,1) + WHERE 'p_rss_actes' IN ( + SELECT table_name + FROM information_schema.tables + WHERE table_schema = 'pmsi' + ) + ; + + SELECT base.cti_execute('ANALYSE w_PMSI_seances',1) + WHERE 'p_rss_actes' IN ( + SELECT table_name + FROM information_schema.tables + WHERE table_schema = 'pmsi' + ) + ; + + SELECT base.cti_execute('UPDATE w_mouvements_sejour + SET nb_seances = w_PMSI_seances.nb_seances + FROM w_PMSI_seances + WHERE w_PMSI_seances.no_sejour = w_mouvements_sejour.no_sejour + AND w_PMSI_seances.date = w_mouvements_sejour.date + AND w_mouvements_sejour.nb_seances = 0' + ,1) + WHERE 'p_rss_actes' IN ( + SELECT table_name + FROM information_schema.tables + WHERE table_schema = 'pmsi' + ) + ; + + -- seances selon D09 + DROP TABLE IF EXISTS w_SAD_ACTIVITE_SAISIES_seances; + CREATE TEMP TABLE w_SAD_ACTIVITE_SAISIES_seances AS + SELECT + p_sejours.no_sejour, + date(ACSA_DAT_EXE_DEB) AS date, + COUNT(*) AS nb_seances + FROM prod_hm.SAD_ACTIVITE_SAISIES + JOIN activite[PX].p_sejours ON ACSA_ID_SEJO::bigint = p_sejours.code_original + WHERE + ACSA_LET_CLE IN ('D09', 'D11') + GROUP BY 1,2; + + UPDATE w_mouvements_sejour + SET nb_seances = w_SAD_ACTIVITE_SAISIES_seances.nb_seances + FROM w_SAD_ACTIVITE_SAISIES_seances + WHERE w_SAD_ACTIVITE_SAISIES_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_SAD_ACTIVITE_SAISIES_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances = 0; + + + + -- Seances selon type sejour DE = DS + UPDATE w_mouvements_sejour + SET nb_seances = 1 + FROM activite[PX].p_sejours + WHERE p_sejours.no_sejour = w_mouvements_sejour.no_sejour AND + p_sejours.type_sejour = '5' AND + p_sejours.date_entree = p_sejours.date_sortie AND + p_sejours.date_entree = w_mouvements_sejour.date AND + w_mouvements_sejour.heure_debut > 0 AND + w_mouvements_sejour.nb_seances = 0 AND + w_mouvements_sejour.no_sejour NOT IN (SELECT no_sejour FROM w_mouvements_sejour WHERE nb_seances > 0); + + UPDATE w_mouvements_sejour + SET nb_seances = 1 + FROM activite[PX].p_sejours + JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid AND t_ghm.code LIKE '28%' + WHERE p_sejours.no_sejour = w_mouvements_sejour.no_sejour AND + p_sejours.type_sejour = '5' AND + p_sejours.date_entree = w_mouvements_sejour.date AND + w_mouvements_sejour.heure_debut > 0 AND + w_mouvements_sejour.nb_seances = 0 AND + w_mouvements_sejour.no_sejour NOT IN (SELECT no_sejour FROM w_mouvements_sejour WHERE nb_seances > 0) + ; + + -- plusieurs séances le même jour + + DROP TABLE IF EXISTS w_seances; + CREATE TEMP TABLE w_seances as + SELECT no_sejour, date, MAX(heure_debut) AS heure_debut + FROM w_mouvements_sejour + WHERE nb_seances > 0 + GROUP BY 1,2 + HAVING count(DISTINCT heure_debut) > 1; + + + UPDATE w_mouvements_sejour + SET nb_seances = 0 + FROM w_seances + WHERE w_mouvements_sejour.no_sejour = w_seances.no_sejour and + w_mouvements_sejour.date = w_seances.date and + w_mouvements_sejour.heure_debut <> w_seances.heure_debut; + + -- Lignes inutiles + DELETE FROM w_mouvements_sejour + WHERE + nb_entrees_directes = 0 AND + nb_sorties_directes = 0 AND + est_jour_hospitalisation <> '1' AND + nb_ambulatoires = 0 AND + nb_externes = 0 AND + nb_urgences = 0 AND + nb_seances = 0 AND + nb_entrees_mutation_service = 0 AND + nb_sorties_mutation_service = 0 AND + nb_entrees_mutation_etage = 0 AND + nb_sorties_mutation_etage = 0 AND + nb_entrees_mutation_activite = 0 AND + nb_sorties_mutation_activite = 0 AND + nb_entrees_mutation_unite_medicale = 0 AND + nb_sorties_mutation_unite_medicale = 0 AND + nb_jours_js_inclus = 0 AND + nb_jours_js_non_inclus = 0 AND + est_chambre_particuliere <> '1' AND + nb_chambres_particulieres = 0 AND + nb_bebes = 0 + ; + + + -- Doublons potentiels + DELETE FROM w_mouvements_sejour + USING ( + SELECT + no_sejour, date, heure_debut, MIN(CTID) AS keepCTID + FROM w_mouvements_sejour + WHERE heure_fin >= heure_debut + GROUP BY 1,2,3 + HAVING count(*) > 1) subview + WHERE w_mouvements_sejour.no_sejour = subview.no_sejour AND + w_mouvements_sejour.date = subview.date AND + w_mouvements_sejour.heure_debut = subview.heure_debut AND + subview.keepCTID <> w_mouvements_sejour.CTID; + + + + + -- Mise en production des mouvements + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_5'); + + INSERT INTO activite[PX].p_mouvements_sejour( + sejour_id, no_sejour, date, est_mouvement_previsionnel, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + jour_semaine, is_weekend) + SELECT sejour_id, no_sejour, date, est_mouvement_previsionnel ,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + jour_semaine, is_weekend + FROM w_mouvements_sejour + WHERE heure_fin >= heure_debut + ORDER BY no_sejour, sequence; + + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_5'); + + -- Lieux de sortie + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie AND p_mouvements_sejour.nb_sorties_directes = 1 + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL) ; + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = 0 + WHERE lieu_sortie_id IS NULL ; + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = 0 + WHERE p_sejours.code_prevu = '1' AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL); + + + UPDATE activite[PX].p_sejours + SET code_sorti = '1' + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + code_sorti = '0' AND + (nb_ambulatoires > 0 OR nb_externes > 0) AND + date_sortie <= now(); + + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + WHERE type_sejour <> '5' AND + type_sejour <> '1' AND + type_sejour <> '9' AND + no_sejour IN ( + SELECT no_sejour + FROM activite[PX].p_mouvements_sejour + WHERE nb_seances > 0); + + + UPDATE activite[PX].p_mouvements_sejour + SET nb_externes = 0, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + ( + nb_externes <> 0 OR + nb_ambulatoires <> 0 + ); + + + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_IDE_MOUVEMENT; + DROP TABLE IF EXISTS w_mouvements_sejour; + DROP TABLE IF EXISTS w_seances; + DROP TABLE IF EXISTS w_SAD_ACTIVITE_SAISIES_seances; + DROP TABLE IF EXISTS w_FAC_LIGNE_FACTURE_seances; + + + ]]> + + + + + + + + + 'E' AND + (FACT_TYPE = 'P' OR FACT_DAT_SUP IS NULL); + + + CREATE INDEX w_FAC_FACTURE_i1 + ON w_FAC_FACTURE + USING btree + (FACT_ID_FACT); + + -- En budget global, tous les honoraires ne sont pas facturés (inclus dans GHS) + + -- Honoraires comptabilisés -> Donc pas inclus + DROP TABLE IF EXISTS w_FAC_LIGNE_FACTURE_DEBITEUR_noninclus; + CREATE TEMP TABLE w_FAC_LIGNE_FACTURE_DEBITEUR_noninclus AS + SELECT LFAC_ID_FACT AS LFAC_ID_FACT_noninclus + FROM prod_hm.FAC_LIGNE_FACTURE_DEBITEUR + JOIN prod_hm.FAC_LIGNE_FACTURE ON LFAC_ID_LFAC = LFAD_ID_LFAC + WHERE '[ENV_TYPEETS]' IN ('2','3') AND + LFAC_ID_PRHO <> 0 AND LFAD_MTT_CRN <> 0 + GROUP BY 1 + ; + + UPDATE w_FAC_FACTURE SET + FAC_HON = '0', + FACT_ID_FACT_SEJ = FACT_ID_FACT, + FACT_NUM_FAC_SEJ = FACT_NUM_FAC + FROM prod_hm.FAC_LIGNE_FACTURE + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + FACT_ID_FACT = LFAC_ID_FACT AND + CRN_HON_TO_SEJ = '1' AND + ( + LFAC_LET_CLE IN ('GHS', 'PJ', 'AMP5', 'AMD', 'AMF', 'IPD') OR + LFAC_ID_PRSE::bigint IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE actes_inclus_public = '1') + ); + + + + UPDATE w_FAC_FACTURE SET + FAC_HON = '0', + FACT_ID_FACT_SEJ = FAC_FACTURE.FACT_ID_FACT, + FACT_NUM_FAC_SEJ = FAC_FACTURE.FACT_NUM_FAC + FROM prod_hm.FAC_LIGNE_FACTURE + JOIN prod_hm.FAC_FACTURE ON LFAC_ID_FACT = FACT_ID_FACT + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + w_FAC_FACTURE.FACT_ID_SEJO = FAC_FACTURE.FACT_ID_SEJO AND + CRN_HON_TO_SEJ = '1' AND + ( + LFAC_LET_CLE IN ('GHS', 'PJ', 'AMP5', 'AMD', 'AMF', 'IPD') OR + LFAC_ID_PRSE::bigint IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE actes_inclus_public = '1') + ) AND + FAC_FACTURE.FACT_TYPE <> 'P' AND + FAC_FACTURE.FACT_TYPE <> 'E' AND + FAC_FACTURE.FACT_DAT_SUP IS NULL AND + FAC_HON = '1' AND + LFAC_ID_FACT NOT IN (SELECT LFAC_ID_FACT_noninclus FROM w_FAC_LIGNE_FACTURE_DEBITEUR_noninclus) + ; + + + -- Informations montants factures et regles + + DROP TABLE IF EXISTS w_FAC_MONTANTS; + CREATE TEMP TABLE w_FAC_MONTANTS AS + SELECT FACD_ID_FACT::bigint, + SUM(CASE WHEN FACT_TYPE <> 'P' THEN FACD_MTT_SEJOUR ELSE 0 END) AS montant_facture_c, + SUM(CASE WHEN FACT_TYPE <> 'P' AND FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN FACD_MTT_SEJOUR ELSE 0 END) AS montant_facture_0_c, + SUM(CASE WHEN FACT_TYPE <> 'P' AND FACD_ID_ORGA_AMO > 0 THEN FACD_MTT_SEJOUR ELSE 0 END) AS montant_facture_1_c, + SUM(CASE WHEN FACT_TYPE <> 'P' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN FACD_MTT_SEJOUR ELSE 0 END) AS montant_facture_2_c, + SUM(CASE WHEN FACT_TYPE <> 'P' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN FACD_MTT_SEJOUR ELSE 0 END) AS montant_facture_22_c, + + SUM(CASE WHEN FACT_TYPE <> 'P' THEN FACD_MTT_CRN_SEJ ELSE 0 END) + + SUM(CASE WHEN FACT_TYPE <> 'P' AND CRN_HON_TO_SEJ = '1' THEN FACD_MTT_CRN_HON ELSE 0 END) AS montant_comptabilise_c, + SUM(CASE WHEN FACT_TYPE <> 'P' AND FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN FACD_MTT_CRN_SEJ ELSE 0 END) + + SUM(CASE WHEN FACT_TYPE <> 'P' AND CRN_HON_TO_SEJ = '1' AND FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN FACD_MTT_CRN_HON ELSE 0 END) AS montant_comptabilise_0_c, + SUM(CASE WHEN FACT_TYPE <> 'P' AND FACD_ID_ORGA_AMO > 0 THEN FACD_MTT_CRN_SEJ ELSE 0 END) + + SUM(CASE WHEN FACT_TYPE <> 'P' AND CRN_HON_TO_SEJ = '1' AND FACD_ID_ORGA_AMO > 0 THEN FACD_MTT_CRN_HON ELSE 0 END) AS montant_comptabilise_1_c, + SUM(CASE WHEN FACT_TYPE <> 'P' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN FACD_MTT_CRN_SEJ ELSE 0 END) + + SUM(CASE WHEN FACT_TYPE <> 'P' AND CRN_HON_TO_SEJ = '1' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN FACD_MTT_CRN_HON ELSE 0 END) AS montant_comptabilise_2_c, + SUM(CASE WHEN FACT_TYPE <> 'P' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN FACD_MTT_CRN_SEJ ELSE 0 END) + + SUM(CASE WHEN FACT_TYPE <> 'P' AND CRN_HON_TO_SEJ = '1' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN FACD_MTT_CRN_HON ELSE 0 END) AS montant_comptabilise_22_c, + + SUM(CASE WHEN (FACT_TYPE <> 'P' OR FACT_DAT_ARCHIVE IS NULL) THEN FACD_MTT_VEN_SEJ + FACD_MTT_A85_SEJ + FACD_MTT_ACO_SEJ + FACD_MTT_CAR_SEJ + FACD_MTT_PER_SEJ ELSE 0 END) AS montant_regle_c, + SUM(CASE WHEN (FACT_TYPE <> 'P' OR FACT_DAT_ARCHIVE IS NULL) AND FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN FACD_MTT_VEN_SEJ + FACD_MTT_A85_SEJ + FACD_MTT_ACO_SEJ + FACD_MTT_CAR_SEJ + FACD_MTT_PER_SEJ ELSE 0 END) AS montant_regle_0_c, + SUM(CASE WHEN (FACT_TYPE <> 'P' OR FACT_DAT_ARCHIVE IS NULL) AND FACD_ID_ORGA_AMO > 0 THEN FACD_MTT_VEN_SEJ + FACD_MTT_A85_SEJ + FACD_MTT_ACO_SEJ + FACD_MTT_CAR_SEJ + FACD_MTT_PER_SEJ ELSE 0 END) AS montant_regle_1_c, + SUM(CASE WHEN (FACT_TYPE <> 'P' OR FACT_DAT_ARCHIVE IS NULL) AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN FACD_MTT_VEN_SEJ + FACD_MTT_A85_SEJ + FACD_MTT_ACO_SEJ + FACD_MTT_CAR_SEJ + FACD_MTT_PER_SEJ ELSE 0 END) AS montant_regle_2_c, + SUM(CASE WHEN (FACT_TYPE <> 'P' OR FACT_DAT_ARCHIVE IS NULL) AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN FACD_MTT_VEN_SEJ + FACD_MTT_A85_SEJ + FACD_MTT_ACO_SEJ + FACD_MTT_CAR_SEJ + FACD_MTT_PER_SEJ ELSE 0 END) AS montant_regle_22_c, + + SUM(CASE WHEN FACT_TYPE <> 'P' THEN FACD_MTT_HON_HOR_DEH + FACD_MTT_DEH ELSE 0 END) AS montant_facture_h, + SUM(CASE WHEN FACT_TYPE <> 'P' AND FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN FACD_MTT_HON_HOR_DEH + FACD_MTT_DEH ELSE 0 END) AS montant_facture_0_h, + SUM(CASE WHEN FACT_TYPE <> 'P' AND FACD_ID_ORGA_AMO > 0 THEN FACD_MTT_HON_HOR_DEH + FACD_MTT_DEH ELSE 0 END) AS montant_facture_1_h, + SUM(CASE WHEN FACT_TYPE <> 'P' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN FACD_MTT_HON_HOR_DEH + FACD_MTT_DEH ELSE 0 END) AS montant_facture_2_h, + SUM(CASE WHEN FACT_TYPE <> 'P' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN FACD_MTT_HON_HOR_DEH + FACD_MTT_DEH ELSE 0 END) AS montant_facture_22_h, + + SUM(CASE WHEN FACT_TYPE <> 'P' AND CRN_HON_TO_SEJ <> '1' THEN FACD_MTT_CRN_HON ELSE 0 END) AS montant_comptabilise_h, + SUM(CASE WHEN FACT_TYPE <> 'P' AND CRN_HON_TO_SEJ <> '1' AND FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN FACD_MTT_CRN_HON ELSE 0 END) AS montant_comptabilise_0_h, + SUM(CASE WHEN FACT_TYPE <> 'P' AND CRN_HON_TO_SEJ <> '1' AND FACD_ID_ORGA_AMO > 0 THEN FACD_MTT_CRN_HON ELSE 0 END) AS montant_comptabilise_1_h, + SUM(CASE WHEN FACT_TYPE <> 'P' AND CRN_HON_TO_SEJ <> '1' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN FACD_MTT_CRN_HON ELSE 0 END) AS montant_comptabilise_2_h, + SUM(CASE WHEN FACT_TYPE <> 'P' AND CRN_HON_TO_SEJ <> '1' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN FACD_MTT_CRN_HON ELSE 0 END) AS montant_comptabilise_22_h, + + SUM(CASE WHEN (FACT_TYPE <> 'P' OR FACT_DAT_ARCHIVE IS NULL) THEN FACD_MTT_VEN_HON + FACD_MTT_ACO_HON + FACD_MTT_PER_HON ELSE 0 END) AS montant_regle_h, + SUM(CASE WHEN (FACT_TYPE <> 'P' OR FACT_DAT_ARCHIVE IS NULL) AND FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN FACD_MTT_VEN_HON + FACD_MTT_ACO_HON + FACD_MTT_PER_HON ELSE 0 END) AS montant_regle_0_h, + SUM(CASE WHEN (FACT_TYPE <> 'P' OR FACT_DAT_ARCHIVE IS NULL) AND FACD_ID_ORGA_AMO > 0 THEN FACD_MTT_VEN_HON + FACD_MTT_ACO_HON + FACD_MTT_PER_HON ELSE 0 END) AS montant_regle_1_h, + SUM(CASE WHEN (FACT_TYPE <> 'P' OR FACT_DAT_ARCHIVE IS NULL) AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN FACD_MTT_VEN_HON + FACD_MTT_ACO_HON + FACD_MTT_PER_HON ELSE 0 END) AS montant_regle_2_h, + SUM(CASE WHEN (FACT_TYPE <> 'P' OR FACT_DAT_ARCHIVE IS NULL) AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN FACD_MTT_VEN_HON + FACD_MTT_ACO_HON + FACD_MTT_PER_HON ELSE 0 END) AS montant_regle_22_h + + FROM prod_hm.FAC_FACTURE_DEBITEUR, w_FAC_FACTURE + WHERE FACD_ID_FACT = FACT_ID_FACT + GROUP BY FACD_ID_FACT; + + + CREATE INDEX w_FAC_MONTANTS_i1 + ON w_FAC_MONTANTS + USING btree + (FACD_ID_FACT); + + + -- Informations date dernier reglement + + DROP TABLE IF EXISTS w_FAC_REGLEMENT; + CREATE TEMP TABLE w_FAC_REGLEMENT AS + SELECT FACD_ID_FACT AS LECR_ID_FACT, + FACT_NUM_FAC AS LECR_NUM_FAC, + MAX(CASE WHEN LECR_PART <> 'HON' AND FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN ECRI_DAT_ECRITURE ELSE NULL END) AS date_dernier_reglement_0_c, + MAX(CASE WHEN LECR_PART <> 'HON' AND FACD_ID_ORGA_AMO > 0 THEN ECRI_DAT_ECRITURE ELSE NULL END) AS date_dernier_reglement_1_c, + MAX(CASE WHEN LECR_PART <> 'HON' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN ECRI_DAT_ECRITURE ELSE NULL END) AS date_dernier_reglement_2_c, + MAX(CASE WHEN LECR_PART <> 'HON' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN ECRI_DAT_ECRITURE ELSE NULL END) AS date_dernier_reglement_22_c, + MAX(CASE WHEN LECR_PART = 'HON' AND FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN ECRI_DAT_ECRITURE ELSE NULL END) AS date_dernier_reglement_0_h, + MAX(CASE WHEN LECR_PART = 'HON' AND FACD_ID_ORGA_AMO > 0 THEN ECRI_DAT_ECRITURE ELSE NULL END) AS date_dernier_reglement_1_h, + MAX(CASE WHEN LECR_PART = 'HON' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN ECRI_DAT_ECRITURE ELSE NULL END) AS date_dernier_reglement_2_h, + MAX(CASE WHEN LECR_PART = 'HON' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN ECRI_DAT_ECRITURE ELSE NULL END) AS date_dernier_reglement_22_h, + count(DISTINCT date_part('month',ECRI_DAT_ECRITURE)) AS nb_mois_reglement + FROM prod_hm.CCL_LIGNE_ECRITURE, + prod_hm.CCL_ECRITURE, + prod_hm.FAC_FACTURE_DEBITEUR, + w_CCL_JOURNAL, + w_CCL_COMPTE, + w_FAC_FACTURE + WHERE + LECR_ID_ECRI = ECRI_ID_ECRI + AND LECR_ID_FACD = FACD_ID_FACD + AND LECR_ID_CPTE = CPTE_ID_CPTE + AND ECRI_ID_JOUR = JOUR_ID_JOUR + AND FACD_ID_FACT = FACT_ID_FACT + AND JOUR_ISJVT = '0' + AND CPTE_CAGE_CODE = 'CLIENT' + AND ECRI_DAT_SUP IS NULL + GROUP BY 1,2; + + CREATE INDEX w_FAC_REGLEMENT_i1 + ON w_FAC_REGLEMENT + USING btree + (LECR_ID_FACT); + + + -- Informations date vente + + DROP TABLE IF EXISTS w_FAC_DATEVENTE; + CREATE TEMP TABLE w_FAC_DATEVENTE AS + SELECT FACD_ID_FACT AS LECR_ID_FACT_VENT, + MAX(date(ECRI_DAT_ECRITURE)) AS date_vente + FROM prod_hm.CCL_LIGNE_ECRITURE, + prod_hm.CCL_ECRITURE, + prod_hm.FAC_FACTURE_DEBITEUR, + w_CCL_JOURNAL, + w_CCL_COMPTE, + w_FAC_FACTURE + WHERE + LECR_ID_ECRI = ECRI_ID_ECRI + AND LECR_ID_FACD = FACD_ID_FACD + AND ECRI_ID_JOUR = JOUR_ID_JOUR + AND LECR_ID_CPTE = CPTE_ID_CPTE + AND FACD_ID_FACT = FACT_ID_FACT + AND ECRI_DAT_SUP IS NULL + AND CPTE_CAGE_CODE = 'CLIENT' + AND JOUR_ISJVT = '1' + GROUP BY 1; + + CREATE INDEX w_FAC_DATEVENTE_i1 + ON w_FAC_DATEVENTE + USING btree + (LECR_ID_FACT_VENT); + + -- Informations expedition + + -- L'organisme AMC n'est pas toujours renseigné dans la ligne de bordereau pour les CMU, on le retrouve dans les factures débuteur + + UPDATE prod_hm.FAC_BORDEREAU + SET FBOR_ID_ORGA_AMC = FACD_ID_ORGA_AMC + FROM + ( + SELECT FBOR_ID_FBOR, + MAX(FACD_ID_ORGA_AMC) AS FACD_ID_ORGA_AMC + FROM + ( + SELECT FBOR_ID_FBOR, + FACT_ID_FACT, + MAX(FBOR_ID_ORGA_AMO) AS FBOR_ID_ORGA_AMO, + MAX(FBOR_ID_ORGA_AMC) AS FBOR_ID_ORGA_AMC, + MAX(FACD_ID_ORGA_AMC) AS FACD_ID_ORGA_AMC + FROM prod_hm.FAC_BORDEREAU + JOIN prod_hm.FAC_LIGNE_BORDEREAU ON LBOR_ID_FBOR = FBOR_ID_FBOR + JOIN prod_hm.FAC_FACTURE ON LBOR_ID_FACT = FACT_ID_FACT + JOIN prod_hm.FAC_FACTURE_DEBITEUR ON LBOR_ID_FACT = FACD_ID_FACT + JOIN prod_hm.IDE_ORGANISME ON FACD_ID_ORGA_AMC = ORGA_ID_ORGA + WHERE LBOR_MTT_MUT_SEJ <> 0 AND + FBOR_ID_ORGA_AMO <> 0 AND + FBOR_ID_ORGA_AMC = 0 AND + ORGA_NOM LIKE 'CMU %' + GROUP BY 1,2 + HAVING MAX(FBOR_ID_ORGA_AMC) = 0 + ) subview + GROUP BY 1 + ) subview + WHERE FAC_BORDEREAU.FBOR_ID_FBOR = subview.FBOR_ID_FBOR + ; + + + -- L'organisme AMC n'est pas toujours renseigné dans la ligne de bordereau, on le retrouve dans les factures débuteur + UPDATE prod_hm.FAC_BORDEREAU + SET FBOR_ID_ORGA_AMC = FACD_ID_ORGA_AMC + FROM + ( + SELECT FBOR_ID_FBOR, FACD_ID_ORGA_AMC + FROM prod_hm.FAC_LIGNE_BORDEREAU + JOIN prod_hm.FAC_FACTURE_DEBITEUR ON LBOR_ID_FACD = FACD_ID_FACD + JOIN prod_hm.FAC_BORDEREAU ON LBOR_ID_FBOR = FBOR_ID_FBOR + WHERE FBOR_ID_ORGA_AMC = 0 AND FACD_ID_ORGA_AMC <> 0 AND + FACD_MTT_SEJOUR = LBOR_MTT_MUT_SEJ + ) subview + WHERE FAC_BORDEREAU.FBOR_ID_FBOR = subview.FBOR_ID_FBOR + ; + + DROP TABLE IF EXISTS w_FAC_BORDEREAU; + CREATE TEMP TABLE w_FAC_BORDEREAU AS + SELECT LBOR_ID_FACT::bigint, + '0'::text AS code_expedie_0, + MAX(CASE + WHEN FBOR_ID_ORGA_AMO > 0 THEN '1' + ELSE '0' + END) AS code_expedie_1, + MAX(CASE + WHEN FBOR_ID_ORGA_AMC > 0 AND FBOR_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN '1' + WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN '1' + ELSE '0' END) AS code_expedie_2, + MAX(CASE + WHEN FBOR_ID_ORGA_AMC > 0 AND FBOR_ID_ORGA_AMC = tiers_payant_22_orga_id THEN '1' + WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN '1' + ELSE '0' END) AS code_expedie_22, + ''::text AS no_bordereau_0, + MAX(CASE + WHEN FBOR_ID_ORGA_AMO > 0 THEN FBOR_NUM_LOT + ELSE 0 END) AS no_bordereau_1, + MAX(CASE + WHEN FBOR_ID_ORGA_AMC > 0 AND FBOR_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN FBOR_NUM_LOT + WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN FBOR_NUM_LOT + ELSE 0 END) AS no_bordereau_2, + MAX(CASE + WHEN FBOR_ID_ORGA_AMC > 0 AND FBOR_ID_ORGA_AMC = tiers_payant_22_orga_id THEN FBOR_NUM_LOT + WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN FBOR_NUM_LOT + ELSE 0 END) AS no_bordereau_22, + '20991231'::date AS date_expedition_0, + MIN(CASE + WHEN FBOR_ID_ORGA_AMO > 0 THEN GREATEST(FBOR_DAT_EXPEDITION, FBOR_DAT_CONSTITUTION) + ELSE '20991231' END) AS date_expedition_1, + MIN(CASE + WHEN FBOR_ID_ORGA_AMC > 0 AND FBOR_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN GREATEST(FBOR_DAT_EXPEDITION, FBOR_DAT_CONSTITUTION) + WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN GREATEST(FBOR_DAT_EXPEDITION, FBOR_DAT_CONSTITUTION) + ELSE '20991231' END) AS date_expedition_2, + MIN(CASE + WHEN FBOR_ID_ORGA_AMC > 0 AND FBOR_ID_ORGA_AMC = tiers_payant_22_orga_id THEN GREATEST(FBOR_DAT_EXPEDITION, FBOR_DAT_CONSTITUTION) + WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN GREATEST(FBOR_DAT_EXPEDITION, FBOR_DAT_CONSTITUTION) + ELSE '20991231' END) AS date_expedition_22 + FROM prod_hm.FAC_BORDEREAU + JOIN prod_hm.FAC_LIGNE_BORDEREAU ON LBOR_ID_FBOR = FBOR_ID_FBOR + JOIN w_FAC_FACTURE ON LBOR_ID_FACT = FACT_ID_FACT + LEFT JOIN prod_hm.FAC_FACTURE_DEBITEUR ON LBOR_ID_FACD = FACD_ID_FACD + WHERE FBOR_DAT_SUPPRESSION IS NULL + GROUP BY LBOR_ID_FACT; + + CREATE INDEX w_FAC_BORDEREAU_i1 + ON w_FAC_BORDEREAU + USING btree + (LBOR_ID_FACT); + + -- Informations rejets + + DROP TABLE IF EXISTS w_FAC_REJET; + CREATE TEMP TABLE w_FAC_REJET AS + SELECT NOER_ID_FACT::bigint, + COUNT(*) as nb_rejets + FROM prod_hm.CCL_NOEMIE_REJET, w_FAC_FACTURE + WHERE NOER_ID_FACT = FACT_ID_FACT AND TRIM(NOER_CDF_REJET) <> '0001' + GROUP BY NOER_ID_FACT; + + CREATE INDEX w_FAC_REJET_i1 + ON w_FAC_REJET + USING btree + (NOER_ID_FACT); + + + -- Ajout des factures + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_14'); + + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + date_solde, + montant_facture_c, + montant_facture_h, + montant_regle_c, + montant_regle_h, + delai_facture, + delai_solde, + date_expedition, + delai_expedition, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + ghs_id, + particularite_t2a, + code_cloture, + code_cp_demandee, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + + nb_rejets, + + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour + ) + SELECT + sejour_id, + no_sejour, + FACT_NUM_FAC AS no_facture, + date(FACT_DAT_DEB_FAC) AS date_debut, + date(FACT_DAT_FIN_FAC) AS date_fin, + CASE + WHEN FACT_TYPE IN ('P') THEN 'P' + WHEN FACT_TYPE IN ('F', 'P') AND FACT_TYP_FAC = 0 THEN '0' + WHEN FACT_TYPE = 'X' THEN 'X' + WHEN FACT_TYPE = 'F' AND FACT_TYP_FAC <> 0 THEN '2' + WHEN FACT_TYPE = 'A' THEN '1' + ELSE '0' END AS type_facture, + CASE WHEN FACT_TYPE = 'P' THEN '0' ELSE '1' END AS code_facture, + date(FACT_DAT_DER_CALCUL) AS date_facture, + CASE WHEN FACT_TYPE <> 'P' AND w_FAC_DATEVENTE.date_vente IS NOT NULL THEN '1' ELSE '0' END AS code_vente, + CASE WHEN FACT_TYPE <> 'P' AND w_FAC_DATEVENTE.date_vente IS NOT NULL THEN w_FAC_DATEVENTE.date_vente ELSE '20991231'::date END AS date_vente, + CASE WHEN FACT_TYPE <> 'P' AND w_FAC_DATEVENTE.date_vente IS NOT NULL THEN extract('year' FROM w_FAC_DATEVENTE.date_vente) * 100 + extract('month' FROM w_FAC_DATEVENTE.date_vente) ELSE extract('year' FROM '20991231'::date) * 100 + extract('month' FROM '20991231'::date) END AS mois_vente, + + COALESCE( + GREATEST( + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_0_c = 0 THEN date(FACT_DAT_FIN_FAC) ELSE date_dernier_reglement_0_c END, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_0_h = 0 THEN date(FACT_DAT_FIN_FAC) ELSE date_dernier_reglement_0_h END, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_1_c = 0 THEN date(FACT_DAT_FIN_FAC) ELSE date_dernier_reglement_1_c END, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_1_h = 0 THEN date(FACT_DAT_FIN_FAC) ELSE date_dernier_reglement_1_h END, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_2_c = 0 THEN date(FACT_DAT_FIN_FAC) ELSE date_dernier_reglement_2_c END, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_2_h = 0 THEN date(FACT_DAT_FIN_FAC) ELSE date_dernier_reglement_2_h END, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_22_c = 0 THEN date(FACT_DAT_FIN_FAC) ELSE date_dernier_reglement_22_c END, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_22_h = 0 THEN date(FACT_DAT_FIN_FAC) ELSE date_dernier_reglement_22_h END) + , '20991231') as date_solde, + + + w_FAC_MONTANTS.montant_facture_c AS montant_facture_c, + w_FAC_MONTANTS.montant_facture_h AS montant_facture_h, + w_FAC_MONTANTS.montant_regle_c AS montant_regle_c, + w_FAC_MONTANTS.montant_regle_h AS montant_regle_h, + date(FACT_DAT_DER_CALCUL) - date_sortie as delai_facture, + 0 as delai_solde, + LEAST(w_FAC_BORDEREAU.date_expedition_1, w_FAC_BORDEREAU.date_expedition_2) as date_expedition, + 0 as delai_expedition, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_0_c = 0 THEN date(FACT_DAT_FIN_FAC) + WHEN date_dernier_reglement_0_c IS NOT NULL THEN date_dernier_reglement_0_c ELSE '20991231' END as date_solde_0_c, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_0_h = 0 THEN date(FACT_DAT_FIN_FAC) + WHEN date_dernier_reglement_0_h IS NOT NULL THEN date_dernier_reglement_0_h ELSE '20991231' END as date_solde_0_h, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_1_c = 0 THEN date(FACT_DAT_FIN_FAC) + WHEN date_dernier_reglement_1_c IS NOT NULL THEN date_dernier_reglement_1_c ELSE '20991231' END as date_solde_1_c, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_1_h = 0 THEN date(FACT_DAT_FIN_FAC) + WHEN date_dernier_reglement_1_h IS NOT NULL THEN date_dernier_reglement_1_h ELSE '20991231' END as date_solde_1_h, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_2_c = 0 THEN date(FACT_DAT_FIN_FAC) + WHEN date_dernier_reglement_2_c IS NOT NULL THEN date_dernier_reglement_2_c ELSE '20991231' END as date_solde_2_c, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_2_h = 0 THEN date(FACT_DAT_FIN_FAC) + WHEN date_dernier_reglement_2_h IS NOT NULL THEN date_dernier_reglement_2_h ELSE '20991231' END as date_solde_2_h, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_22_c = 0 THEN date(FACT_DAT_FIN_FAC) + WHEN date_dernier_reglement_22_c IS NOT NULL THEN date_dernier_reglement_22_c ELSE '20991231' END as date_solde_22_c, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_22_h = 0 THEN date(FACT_DAT_FIN_FAC) + WHEN date_dernier_reglement_22_h IS NOT NULL THEN date_dernier_reglement_22_h ELSE '20991231' END as date_solde_22_h, + + w_FAC_BORDEREAU.date_expedition_0, + w_FAC_BORDEREAU.date_expedition_1, + w_FAC_BORDEREAU.date_expedition_2, + w_FAC_BORDEREAU.date_expedition_22, + w_FAC_BORDEREAU.code_expedie_0, + w_FAC_BORDEREAU.code_expedie_1, + w_FAC_BORDEREAU.code_expedie_2, + w_FAC_BORDEREAU.code_expedie_22, + w_FAC_BORDEREAU.no_bordereau_0, + w_FAC_BORDEREAU.no_bordereau_1, + w_FAC_BORDEREAU.no_bordereau_2, + w_FAC_BORDEREAU.no_bordereau_22, + + w_FAC_MONTANTS.montant_facture_0_c AS montant_facture_0_c, + w_FAC_MONTANTS.montant_facture_0_h AS montant_facture_0_h, + w_FAC_MONTANTS.montant_facture_1_c AS montant_facture_1_c, + w_FAC_MONTANTS.montant_facture_1_h AS montant_facture_1_h, + w_FAC_MONTANTS.montant_facture_2_c AS montant_facture_2_c, + w_FAC_MONTANTS.montant_facture_2_h AS montant_facture_2_h, + w_FAC_MONTANTS.montant_facture_22_c AS montant_facture_22_c, + w_FAC_MONTANTS.montant_facture_22_h AS montant_facture_22_h, + + w_FAC_MONTANTS.montant_regle_0_c AS montant_regle_0_c, + w_FAC_MONTANTS.montant_regle_0_h AS montant_regle_0_h, + w_FAC_MONTANTS.montant_regle_1_c AS montant_regle_1_c, + w_FAC_MONTANTS.montant_regle_1_h AS montant_regle_1_h, + w_FAC_MONTANTS.montant_regle_2_c AS montant_regle_2_c, + w_FAC_MONTANTS.montant_regle_2_h AS montant_regle_2_h, + w_FAC_MONTANTS.montant_regle_22_c AS montant_regle_22_c, + w_FAC_MONTANTS.montant_regle_22_h AS montant_regle_22_h, + + + 0 AS delai_expedition_0, + 0 AS delai_expedition_1, + 0 AS delai_expedition_2, + 0 AS delai_expedition_22, + 0 AS delai_solde_0_c, + 0 AS delai_solde_0_h, + 0 AS delai_solde_1_c, + 0 AS delai_solde_1_h, + 0 AS delai_solde_2_c, + 0 AS delai_solde_2_h, + 0 AS delai_solde_22_c, + 0 AS delai_solde_22_h, + + ghs_id, + '' as particularite_t2a, + + '0' as code_cloture, + '0' as code_cp_demandee, + 0 AS ghs_bebe1_id, + 0 AS ghs_bebe2_id, + 0 AS ghs_bebe3_id, + + w_FAC_MONTANTS.montant_comptabilise_c, + w_FAC_MONTANTS.montant_comptabilise_h, + w_FAC_MONTANTS.montant_comptabilise_0_c, + w_FAC_MONTANTS.montant_comptabilise_0_h, + w_FAC_MONTANTS.montant_comptabilise_1_c, + w_FAC_MONTANTS.montant_comptabilise_1_h, + w_FAC_MONTANTS.montant_comptabilise_2_c, + w_FAC_MONTANTS.montant_comptabilise_2_h, + w_FAC_MONTANTS.montant_comptabilise_22_c, + w_FAC_MONTANTS.montant_comptabilise_22_h, + + COALESCE(w_FAC_REJET.nb_rejets,0), + + 0, + 0 + + + FROM w_FAC_FACTURE + LEFT JOIN w_FAC_BORDEREAU ON (LBOR_ID_FACT = FACT_ID_FACT) + LEFT JOIN w_FAC_MONTANTS ON (FACD_ID_FACT = FACT_ID_FACT) + LEFT JOIN w_FAC_REGLEMENT ON (LECR_ID_FACT = FACT_ID_FACT) + LEFT JOIN w_FAC_DATEVENTE ON (LECR_ID_FACT_VENT = FACT_ID_FACT) + LEFT JOIN w_FAC_REJET ON (NOER_ID_FACT = FACT_ID_FACT) + ORDER BY 1,2; + + + -- Avoirs qui annulent des factures + + UPDATE activite[PX].p_factures SET no_facture_od_avoir = fac_facture_avoir.FACT_NUM_FAC + FROM prod_hm.FAC_FACTURE + JOIN prod_hm.FAC_FACTURE FAC_FACTURE_AVOIR ON FAC_FACTURE.FACT_ID_FACT_AVOIR = FAC_FACTURE_AVOIR.FACT_ID_FACT AND FAC_FACTURE.FACT_ID_FACT_AVOIR <> 0 + WHERE p_factures.no_facture = FAC_FACTURE.FACT_NUM_FAC + AND no_facture_od_avoir IS DISTINCT FROM fac_facture_avoir.FACT_NUM_FAC; + + + DROP TABLE IF EXISTS w_ods_avoir; + CREATE TEMP TABLE w_ods_avoir AS + + SELECT p_factures.no_facture, p_factures.no_facture_od_avoir, p_factures_avoir.date_facture AS date_od_avoir, + SUM(p_factures.montant_comptabilise_c + p_factures.montant_comptabilise_h) AS montant_comptabilise, + SUM(p_factures.montant_regle_c + p_factures.montant_regle_h) AS montant_regle, + SUM(p_factures_avoir.montant_comptabilise_c + p_factures_avoir.montant_comptabilise_h) AS montant_facture_avoir, + SUM(p_factures_avoir.montant_regle_c + p_factures_avoir.montant_regle_h) AS montant_regle_avoir + FROM activite[PX].p_factures + JOIN activite[PX].p_factures p_factures_avoir ON p_factures.no_facture = p_factures_avoir.no_facture_od_avoir + WHERE p_factures.type_facture = 'X' AND p_factures_avoir.type_facture = '1' + GROUP BY 1,2,3 + HAVING SUM(p_factures.montant_comptabilise_c + p_factures.montant_comptabilise_h) = 0 - SUM(p_factures_avoir.montant_comptabilise_c + p_factures_avoir.montant_comptabilise_h) AND + SUM(p_factures.montant_regle_c + p_factures.montant_regle_h) = 0 AND + SUM(p_factures_avoir.montant_regle_c + p_factures_avoir.montant_regle_h) = 0; + + + UPDATE activite[PX].p_factures SET + date_solde_c = date_od_avoir, + date_solde_0_c = date_od_avoir, + date_solde_1_c = date_od_avoir, + date_solde_2_c = date_od_avoir, + date_solde_22_c = date_od_avoir, + date_solde_h = date_od_avoir, + date_solde_0_h = date_od_avoir, + date_solde_1_h = date_od_avoir, + date_solde_2_h = date_od_avoir, + date_solde_22_h = date_od_avoir, + montant_regle_c = montant_comptabilise_c, + montant_regle_0_c = montant_comptabilise_0_c, + montant_regle_1_c = montant_comptabilise_1_c, + montant_regle_2_c = montant_comptabilise_2_c, + montant_regle_22_c = montant_comptabilise_22_c, + montant_regle_h = montant_comptabilise_h, + montant_regle_0_h = montant_comptabilise_0_h, + montant_regle_1_h = montant_comptabilise_1_h, + montant_regle_2_h = montant_comptabilise_2_h, + montant_regle_22_h = montant_comptabilise_22_h + FROM w_ods_avoir + WHERE p_factures.no_facture = w_ods_avoir.no_facture; + + UPDATE activite[PX].p_factures SET + date_solde_c = date_od_avoir, + date_solde_0_c = date_od_avoir, + date_solde_1_c = date_od_avoir, + date_solde_2_c = date_od_avoir, + date_solde_22_c = date_od_avoir, + date_solde_h = date_od_avoir, + date_solde_0_h = date_od_avoir, + date_solde_1_h = date_od_avoir, + date_solde_2_h = date_od_avoir, + date_solde_22_h = date_od_avoir, + montant_regle_c = montant_comptabilise_c, + montant_regle_0_c = montant_comptabilise_0_c, + montant_regle_1_c = montant_comptabilise_1_c, + montant_regle_2_c = montant_comptabilise_2_c, + montant_regle_22_c = montant_comptabilise_22_c, + montant_regle_h = montant_comptabilise_h, + montant_regle_0_h = montant_comptabilise_0_h, + montant_regle_1_h = montant_comptabilise_1_h, + montant_regle_2_h = montant_comptabilise_2_h, + montant_regle_22_h = montant_comptabilise_22_h + FROM w_ods_avoir + WHERE p_factures.no_facture = w_ods_avoir.no_facture_od_avoir; + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_14'); + + + + + + -- Séjours sans facture + + DROP TABLE IF EXISTS w_factures_trous; + CREATE TEMP TABLE w_factures_trous AS + SELECT + p_sejours.finess, + p_sejours.no_sejour, + p_sejours.date_entree, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.code_cp_demandee, + p_sejours.ghs_id, + COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire, + p_sejours.code_sorti, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours, + MAX(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END) AS date_fin_facture, + date(MAX(COALESCE(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours + FROM activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON + p_sejours.no_sejour = p_factures.no_sejour AND + no_facture NOT LIKE 'E%' AND + type_facture IS DISTINCT FROM 'P' AND + no_facture_od_avoir = '' + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE p_sejours.etat = '' AND p_sejours.code_prevu <> 1 AND p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND date_entree <= now() AND p_sejours.type_sejour <> '6' AND p_sejours.type_sejour <> '9' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13; + + + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + code_cp_demandee, + ghs_id, + date_debut, + date_fin) + SELECT finess, + no_sejour, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || substr(p_calendrier.mois,3,4) ELSE '' END, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || substr(p_calendrier.mois,3,4) ELSE '' END, + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + code_cp_demandee , + ghs_id, + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13; + + + + UPDATE activite[PX].p_factures SET + date_debut = date_entree, + date_fin = CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid AND + avec_facturation_intermediaire IS DISTINCT FROM '1' + WHERE p_factures.no_sejour = p_sejours.no_sejour AND + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END - date_entree < 30 AND + ( + p_factures.date_debut <> date_entree OR + p_factures.date_fin <> CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + ); + + + + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_sejours_orga CASCADE; + DROP TABLE IF EXISTS w_FAC_MONTANTS CASCADE; + DROP TABLE IF EXISTS w_FAC_REGLEMENT CASCADE; + DROP TABLE IF EXISTS w_FAC_BORDEREAU CASCADE; + DROP TABLE IF EXISTS w_factures_trous CASCADE; + + + ]]> + + + + '0001' AND TRIM(NOER_LIB_REJET) <> ''; + + INSERT INTO activite.t_rejets_noemie (texte, code) + SELECT rejet_texte, MAX(rejet_code) + FROM activite[PX].p_factures_rejets + LEFT JOIN activite.t_rejets_noemie ON (rejet_texte = t_rejets_noemie.texte) + WHERE t_rejets_noemie.oid IS NULL + GROUP BY 1; + + UPDATE activite[PX].p_factures_rejets + SET rejet_id = t_rejets_noemie.oid + FROM activite.t_rejets_noemie + WHERE rejet_texte = t_rejets_noemie.texte; + + ]]> + + + + 0 THEN p_mouvements_sejour.date ELSE p_sejours.date_entree END) AS date_mvt_max + FROM activite[PX].p_sejours + JOIN activite[PX].p_mouvements_sejour On p_sejours.no_sejour = p_mouvements_sejour.no_sejour + JOIN activite[PX].t_lieux ON p_mouvements_sejour.lieu_id = t_lieux.oid + JOIN activite[PX].t_services_facturation On service_facturation_id = t_services_facturation.oid + WHERE code_sorti = '1' AND code_prevu = '0' AND p_sejours.type_sejour = '5' AND + avec_facturation_intermediaire = '1' + GROUP BY 1 + HAVING MAX(date_sortie) > MAX(CASE WHEN nb_seances > 0 THEN p_mouvements_sejour.date ELSE p_sejours.date_entree END) AND + SUM(nb_seances) > 0 + ; + + + DROP TABLE IF EXISTS w_seances_sortie_fac; + CREATE TEMP TABLE w_seances_sortie_fac AS + SELECT p_sejours.no_sejour, MAX(p_factures.date_fin) AS date_fac_max + FROM activite[PX].p_sejours + JOIN w_seances_sortie_mvt ON p_sejours.no_sejour = w_seances_sortie_mvt.no_sejour + JOIN activite[PX].p_factures On p_sejours.no_sejour = p_factures.no_sejour + WHERE code_sorti = '1' AND code_prevu = '0' AND type_sejour = '5' AND + p_factures.code_facture >= '1' + GROUP BY 1 + ; + + + DROP TABLE IF EXISTS w_seances_sortie_maj; + CREATE TEMP TABLE w_seances_sortie_maj AS + SELECT p_sejours.no_sejour, p_sejours.date_sortie, date_mvt_max, date_fac_max, + GREATEST(date_mvt_max, date_fac_max) AS date_sortie_reelle + FROM activite[PX].p_sejours + JOIN w_seances_sortie_mvt ON p_sejours.no_sejour = w_seances_sortie_mvt.no_sejour + LEFT JOIN w_seances_sortie_fac ON p_sejours.no_sejour = w_seances_sortie_fac.no_sejour + WHERE date_sortie > GREATEST(date_mvt_max, date_fac_max) + ORDER BY 1 + ; + + + + UPDATE activite[PX].p_sejours + SET date_sortie = date_sortie_reelle + FROM w_seances_sortie_maj + WHERE p_sejours.no_sejour = w_seances_sortie_maj.no_sejour AND + p_sejours.date_sortie > date_sortie_reelle; + + + DELETE FROM activite[PX].p_factures + USING w_seances_sortie_maj + WHERE p_factures.no_sejour = w_seances_sortie_maj.no_sejour AND + p_factures.date_fin > date_sortie_reelle AND + p_factures.code_facture = '0' AND + montant_regle_c = 0 AND montant_facture_c = 0 AND + montant_regle_h = 0 AND montant_facture_h = 0 + ; + + + + DELETE FROM activite[PX].p_mouvements_sejour + USING w_seances_sortie_maj + WHERE p_mouvements_sejour.no_sejour = w_seances_sortie_maj.no_sejour AND + p_mouvements_sejour.date > date_sortie_reelle + ; + + ]]> + + + + '1' THEN MAX(LFAC_PRI_UNITAIRE) + ELSE base.cti_division(SUM(CASE WHEN LFAD_IND_BGH <> '1' THEN LFAD_MTT_HOR_DEH ELSE 0 END) , MAX(LFAC_QTE_COEFFICIENT)) END + AS prix_unitaire, + MAX(p_sejours.lieu_sortie_id) AS lieu_id, + MAX(COALESCE(t_ucd.oid)) AS ucd_id, + MAX(COALESCE(t_lpp.oid)) AS lpp_id + FROM prod_hm.FAC_LIGNE_FACTURE + JOIN prod_hm.FAC_FACTURE ON LFAC_ID_FACT = FACT_ID_FACT AND FACT_TYPE = 'P' + JOIN prod_hm.FAC_LIGNE_FACTURE_DEBITEUR ON LFAC_ID_LFAC = LFAD_ID_LFAC + JOIN activite[PX].p_sejours ON LFAC_ID_SEJO_D::bigint = p_sejours.code_original AND p_sejours.etat = '' + JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture = 'E' AND p_factures.no_facture NOT LIKE '%BG' + JOIN activite[PX].t_rubriques_facturation ON LFAC_ID_PRSE::bigint = t_rubriques_facturation.code_original + JOIN activite.t_prestations ON LFAC_LET_CLE = t_prestations.code + LEFT JOIN base.t_lpp ON LFAC_COD_LPP <> '' AND LFAC_COD_LPP = t_lpp.code + LEFT JOIN prod_hm.FAC_LIGNE_FACTURE_UCD ON LFAC_ID_LFAC = LFUC_ID_LFAC + LEFT JOIN base.t_ucd ON LFUC_COD_UCD <> '' AND LFUC_COD_UCD = t_ucd.code + WHERE LFAC_LET_CLE NOT IN ('GHS', 'GMT') AND LFAC_ID_PRSE <> 0 AND + FACT_DAT_SUP IS NULL AND + date(LFAC_DAT_EXE_DEB) BETWEEN p_factures.date_debut AND p_factures.date_fin + GROUP BY 1,2,3, LFAC_ID_LFAC + HAVING MIN(LFAD_IND_BGH) <> '1' + ; + + DROP TABLE IF EXISTS w_deja_non_factures; + CREATE TEMP TABLE w_deja_non_factures AS + SELECT LFAC_ID_ACSA + FROM prod_hm.FAC_LIGNE_FACTURE + JOIN prod_hm.FAC_FACTURE ON LFAC_ID_FACT = FACT_ID_FACT AND FACT_TYPE = 'P' + JOIN activite[PX].p_sejours ON LFAC_ID_SEJO_D::bigint = p_sejours.code_original + JOIN prod_hm.FAC_LIGNE_FACTURE_DEBITEUR ON LFAC_ID_LFAC = LFAD_ID_LFAC + WHERE LFAC_ID_PRSE <> 0 AND + FACT_DAT_SUP IS NULL AND + LFAC_ID_ACSA <> 0 + GROUP BY 1 + HAVING MIN(LFAD_IND_BGH) <> '1'; + + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + no_facture + , date_debut + , date_fin + , nb_rubrique + , coefficient + , rubrique_facturation_id + , prestation_id + , prix_unitaire + , lieu_id + ) + SELECT + p_factures.no_facture + , date(ACSA_DAT_EXE_DEB) AS date_debut + , date(COALESCE(ACSA_DAT_EXE_FIN, ACSA_DAT_EXE_DEB)) AS date_fin + , ACSA_QTE_COEFFICIENT AS nb_rubrique + , 1 AS coefficient + , t_rubriques_facturation.oid AS rubrique_facturation_id + , t_prestations.oid AS prestation_id + , CASE + WHEN acsa_qte_coefficient > 1 AND base.cti_division(acsa_qte_coefficient * acsa_pri_unitaire, acsa_mon_tot) > 2 THEN base.cti_division(acsa_pri_unitaire , acsa_qte_coefficient) + ELSE acsa_pri_unitaire END AS prix_unitaire + , p_sejours.lieu_sortie_id AS lieu_id + FROM prod_hm.SAD_ACTIVITE_SAISIES + JOIN activite[PX].p_sejours ON ACSA_ID_SEJO::bigint = p_sejours.code_original AND p_sejours.etat = '' + JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture = 'E' + JOIN activite[PX].t_rubriques_facturation ON ACSA_ID_PRSE::bigint = t_rubriques_facturation.code_original + JOIN activite.t_prestations ON ACSA_LET_CLE = t_prestations.code + LEFT JOIN w_deja_non_factures ON ACSA_ID_ACSA = LFAC_ID_ACSA + WHERE 1 = 1 + AND ACSA_LET_CLE NOT IN ('GHS', 'GMT', 'SZH') + AND ACSA_ID_PRSE <> 0 + AND LFAC_ID_ACSA IS NULL + AND date(ACSA_DAT_EXE_DEB) BETWEEN p_factures.date_debut AND p_factures.date_fin + ; + + -- Prestations pointées sur le dossier sans ligne générée + DROP TABLE IF EXISTS w_lignes_deja_non_facturees_sejour; + CREATE TEMP TABLE w_lignes_deja_non_facturees_sejour AS + SELECT no_sejour, prestation_id, rubrique_facturation_id + FROM activite[PX].p_factures_lignes_non_facturees_c + JOIN activite[PX].p_factures ON p_factures_lignes_non_facturees_c.no_facture = p_factures.no_facture + GROUP BY 1,2,3 + ; + + ANALYSE w_lignes_deja_non_facturees_sejour + ; + + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT p_factures.no_facture, + GREATEST(date(SEPR_DAT_DEB), p_factures.date_debut) AS date_debut, + LEAST(date(COALESCE(SEPR_DAT_FIN,'20991231')),p_factures.date_fin, date(now()+interval '1 day')) AS date_fin, + GREATEST(LEAST(date(COALESCE(SEPR_DAT_FIN,'20991231')),p_factures.date_fin, date(now()+interval '1 day')) - GREATEST(date(SEPR_DAT_DEB), p_factures.date_debut),1) AS nb_rubrique, + 1 AS coefficient, + t_rubriques_facturation.oid AS rubrique_facturation_id, + t_prestations.oid AS prestation_id, + LFAC_PRI_UNITAIRE AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id + FROM prod_hm.IDE_SEJOUR_PRESTATION + JOIN prod_hm.PAD_PRESTATION_SEJOUR ON SEPR_ID_PRSE = PRSE_ID_PRSE + JOIN activite[PX].p_sejours ON SEPR_ID_SEJO = code_original AND type_sejour IN ('1','2') + JOIN activite[PX].p_factures ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_rubriques_facturation ON SEPR_ID_PRSE::bigint = t_rubriques_facturation.code_original + JOIN activite.t_prestations ON PRSE_LET_CLE = t_prestations.code + JOIN + ( + SELECT LFAC_ID_PRSE, (MAX(ARRAY[LFAC_DAT_EXE_DEB::text,LFAC_PRI_UNITAIRE::text]))[2]::numeric AS LFAC_PRI_UNITAIRE + FROM prod_hm.FAC_LIGNE_FACTURE + WHERE LFAC_ID_PRSE = ANY (SELECT SEPR_ID_PRSE FROM prod_hm.IDE_SEJOUR_PRESTATION GROUP BY 1) + GROUP BY 1 + ) subview ON SEPR_ID_PRSE = subview.LFAC_ID_PRSE + LEFT JOIN w_lignes_deja_non_facturees_sejour ON + w_lignes_deja_non_facturees_sejour.no_sejour = p_sejours.no_sejour AND + ( + w_lignes_deja_non_facturees_sejour.prestation_id = t_prestations.oid OR + w_lignes_deja_non_facturees_sejour.rubrique_facturation_id = t_rubriques_facturation.oid + ) + WHERE SEPR_IND_ACTIF = '1' + AND SEPR_ID_PRSE <> 0 + AND p_factures.type_facture = 'E' + AND date(SEPR_DAT_DEB) <= p_factures.date_fin + AND (date(SEPR_DAT_FIN) >= p_factures.date_debut OR SEPR_DAT_FIN IS NULL) + AND w_lignes_deja_non_facturees_sejour.no_sejour IS NULL + -- evite les problèmes avec CPC + AND t_prestations.code != '' + AND PRSE_LET_CLE NOT IN ('GMT') + ; + + + ]]> + + + + 'P' AND w_FAC_DATEVENTE.date_vente IS NOT NULL THEN w_FAC_DATEVENTE.date_vente ELSE '20991231'::date END AS date_vente, + lieu_sortie_id, + LFAC_QTE_COEFFICIENT AS nb_rubrique, + LFAC_QTE_COEFFICIENT AS nb_prestations, + 1::numeric as coefficient, + LFAC_COE_MCO_HAD AS coefficient_mco, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + MAX(COALESCE(t_compte.oid::bigint, 0)) AS compte_produit_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + LFAC_PRI_UNITAIRE AS prix_unitaire, + + MAX(LFAC_COD_LPP) AS LFAC_COD_LPP, + 0::bigint AS ucd_id, + 0::bigint AS lpp_id, + + SUM(LFAD_MTT_HOR_DEH + LFAD_MTT_DEH) AS montant_facture, + SUM(CASE WHEN FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) as montant_facture_0, + SUM(CASE WHEN FACD_ID_ORGA_AMO > 0 THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) as montant_facture_1, + SUM(CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) as montant_facture_2, + SUM(CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) as montant_facture_22, + + 0 AS montant_facture_actes_inclus_dans_sejour, + 0 as montant_facture_0_actes_inclus_dans_sejour, + 0 as montant_facture_1_actes_inclus_dans_sejour, + 0 as montant_facture_2_actes_inclus_dans_sejour, + 0 as montant_facture_22_actes_inclus_dans_sejour, + + MAX(CASE WHEN FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN 100-LFAD_TAUX ELSE 0 END) as taux_0, + MAX(CASE WHEN FACD_ID_ORGA_AMO > 0 THEN LFAD_TAUX ELSE 0 END) as taux_1, + MAX(CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN 100-LFAD_TAUX ELSE 0 END) as taux_2, + MAX(CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN 100-LFAD_TAUX ELSE 0 END) as taux_22, + + + SUM(LFAD_MTT_CRN) AS montant_comptabilise, + SUM(CASE WHEN FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN LFAD_MTT_CRN ELSE 0 END) as montant_comptabilise_0, + SUM(CASE WHEN FACD_ID_ORGA_AMO > 0 THEN LFAD_MTT_CRN ELSE 0 END) as montant_comptabilise_1, + SUM(CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN LFAD_MTT_CRN ELSE 0 END) as montant_comptabilise_2, + SUM(CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN LFAD_MTT_CRN ELSE 0 END) as montant_comptabilise_22, + + 0::bigint AS rubrique_facture_id + + FROM prod_hm.FAC_LIGNE_FACTURE + LEFT JOIN activite[PX].t_rubriques_facturation ON (LFAC_ID_PRSE::bigint = t_rubriques_facturation.code_original) + LEFT JOIN activite.t_prestations ON (LFAC_LET_CLE = t_prestations.code) + JOIN w_FAC_FACTURE ON LFAC_ID_FACT = FACT_ID_FACT + LEFT JOIN w_FAC_DATEVENTE ON (LECR_ID_FACT_VENT = FACT_ID_FACT) + JOIN prod_hm.FAC_LIGNE_FACTURE_DEBITEUR ON LFAC_ID_LFAC = LFAD_ID_LFAC + LEFT JOIN w_FAC_LIGNE_FACTURE_DEBITEUR_compte ON LECR_ID_LFAD = LFAD_ID_LFAD + LEFT JOIN activite[PX].t_compte ON (LECR_NUM_COMPTE = t_compte.code_original) + JOIN prod_hm.FAC_FACTURE_DEBITEUR ON LFAD_ID_FACD = FACD_ID_FACD + WHERE + FACT_TYPE <> 'P' AND + LFAC_ID_PRSE <> 0 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,15,16; + + + + -- Médecin Salarié ? + + INSERT INTO w_FAC_FACTURE_LIGNE_C + SELECT + 1::integer AS origine_facturation_id, + LFAC_ID_LFAC, + FACT_NUM_FAC AS no_facture, + date(LFAC_DAT_EXE_DEB) AS date_debut, + date(LFAC_DAT_EXE_FIN) AS date_fin, + CASE WHEN FACT_TYPE <> 'P' AND w_FAC_DATEVENTE.date_vente IS NOT NULL THEN w_FAC_DATEVENTE.date_vente ELSE '20991231'::date END AS date_vente, + lieu_sortie_id, + LFAC_QTE_COEFFICIENT AS nb_rubrique, + LFAC_QTE_COEFFICIENT AS nb_prestations, + 1::numeric as coefficient, + LFAC_COE_MCO_HAD AS coefficient_mco, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + MAX(COALESCE(t_compte.oid::bigint, 0)) AS compte_produit_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + LFAC_PRI_UNITAIRE AS prix_unitaire, + + MAX(LFAC_COD_LPP) AS LFAC_COD_LPP, + 0::bigint AS ucd_id, + 0::bigint AS lpp_id, + + 0 AS montant_facture, + 0 as montant_facture_0, + 0 as montant_facture_1, + 0 as montant_facture_2, + 0 as montant_facture_22, + + 0 AS montant_facture_actes_inclus_dans_sejour, + 0 as montant_facture_0_actes_inclus_dans_sejour, + 0 as montant_facture_1_actes_inclus_dans_sejour, + 0 as montant_facture_2_actes_inclus_dans_sejour, + 0 as montant_facture_22_actes_inclus_dans_sejour, + + MAX(CASE WHEN FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN 100-LFAD_TAUX ELSE 0 END) as taux_0, + MAX(CASE WHEN FACD_ID_ORGA_AMO > 0 THEN LFAD_TAUX ELSE 0 END) as taux_1, + MAX(CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN 100-LFAD_TAUX ELSE 0 END) as taux_2, + MAX(CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN 100-LFAD_TAUX ELSE 0 END) as taux_22, + + SUM(LFAD_MTT_CRN) AS montant_comptabilise, + SUM(CASE WHEN FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN LFAD_MTT_CRN ELSE 0 END) as montant_comptabilise_0, + SUM(CASE WHEN FACD_ID_ORGA_AMO > 0 THEN LFAD_MTT_CRN ELSE 0 END) as montant_comptabilise_1, + SUM(CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN LFAD_MTT_CRN ELSE 0 END) as montant_comptabilise_2, + SUM(CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN LFAD_MTT_CRN ELSE 0 END) as montant_comptabilise_22, + + 0::bigint AS rubrique_facture_id + + FROM prod_hm.FAC_LIGNE_FACTURE + LEFT JOIN activite[PX].t_rubriques_facturation ON (LFAC_ID_PRHO::bigint = t_rubriques_facturation.code_original) + LEFT JOIN activite.t_prestations ON (LFAC_LET_CLE = t_prestations.code) + JOIN w_FAC_FACTURE ON LFAC_ID_FACT = FACT_ID_FACT + LEFT JOIN w_FAC_DATEVENTE ON (LECR_ID_FACT_VENT = FACT_ID_FACT) + JOIN prod_hm.FAC_LIGNE_FACTURE_DEBITEUR ON LFAC_ID_LFAC = LFAD_ID_LFAC + LEFT JOIN w_FAC_LIGNE_FACTURE_DEBITEUR_compte ON LECR_ID_LFAD = LFAD_ID_LFAD + LEFT JOIN activite[PX].t_compte ON (LECR_NUM_COMPTE = t_compte.code_original) + JOIN prod_hm.FAC_FACTURE_DEBITEUR ON LFAD_ID_FACD = FACD_ID_FACD + WHERE + SEJO_IND_BGH <> '1' AND + FACT_TYPE <> 'P' AND + LFAC_ID_PRHO <> 0 AND + LFAC_CDT_EXC = 'S' AND + CRN_HON_TO_SEJ <> '1' AND + LFAD_MTT_CRN <> 0 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,15,16; + + -- Public Honoraires -> Clinique + + INSERT INTO w_FAC_FACTURE_LIGNE_C + SELECT + CASE WHEN FAC_HON = '1' THEN 2::integer ELSE 3::integer END AS origine_facturation_id, + LFAC_ID_LFAC, + FACT_NUM_FAC AS no_facture, + date(LFAC_DAT_EXE_DEB) AS date_debut, + date(LFAC_DAT_EXE_FIN) AS date_fin, + CASE WHEN FACT_TYPE <> 'P' AND w_FAC_DATEVENTE.date_vente IS NOT NULL THEN w_FAC_DATEVENTE.date_vente ELSE '20991231'::date END AS date_vente, + lieu_sortie_id, + LFAC_QTE_COEFFICIENT AS nb_rubrique, + LFAC_QTE_COEFFICIENT AS nb_prestation, + 1 as coefficient, + LFAC_COE_MCO_HAD AS coefficient_mco, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + MAX(COALESCE(t_compte.oid::bigint, 0)) AS compte_produit_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + LFAC_PRI_UNITAIRE AS prix_unitaire, + + MAX(LFAC_COD_LPP) AS LFAC_COD_LPP, + 0::bigint AS ucd_id, + 0::bigint AS lpp_id, + + SUM(CASE WHEN FAC_HON = '1' THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) AS montant_facture, + SUM(CASE WHEN FAC_HON = '1' AND FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) as montant_facture_0, + SUM(CASE WHEN FAC_HON = '1' AND FACD_ID_ORGA_AMO > 0 THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) as montant_facture_1, + SUM(CASE WHEN FAC_HON = '1' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) as montant_facture_2, + SUM(CASE WHEN FAC_HON = '1' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) as montant_facture_22, + + SUM(CASE WHEN FAC_HON <> '1' THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) AS montant_facture_actes_inclus_dans_sejour, + SUM(CASE WHEN FAC_HON <> '1' AND FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) as montant_facture_0_actes_inclus_dans_sejour, + SUM(CASE WHEN FAC_HON <> '1' AND FACD_ID_ORGA_AMO > 0 THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) as montant_facture_1_actes_inclus_dans_sejour, + SUM(CASE WHEN FAC_HON <> '1' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) as montant_facture_2_actes_inclus_dans_sejour, + SUM(CASE WHEN FAC_HON <> '1' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) as montant_facture_22_actes_inclus_dans_sejour, + + MAX(CASE WHEN FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN 100-LFAD_TAUX ELSE 0 END) as taux_0, + MAX(CASE WHEN FACD_ID_ORGA_AMO > 0 THEN LFAD_TAUX ELSE 0 END) as taux_1, + MAX(CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN 100-LFAD_TAUX ELSE 0 END) as taux_2, + MAX(CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN 100-LFAD_TAUX ELSE 0 END) as taux_22, + + + SUM(LFAD_MTT_CRN) AS montant_comptabilise, + SUM(CASE WHEN FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN LFAD_MTT_CRN ELSE 0 END) as montant_comptabilise_0, + SUM(CASE WHEN FACD_ID_ORGA_AMO > 0 THEN LFAD_MTT_CRN ELSE 0 END) as montant_comptabilise_1, + SUM(CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN LFAD_MTT_CRN ELSE 0 END) as montant_comptabilise_2, + SUM(CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN LFAD_MTT_CRN ELSE 0 END) as montant_comptabilise_22, + + 0::bigint AS rubrique_facture_id + + FROM prod_hm.FAC_LIGNE_FACTURE + LEFT JOIN activite[PX].t_rubriques_facturation ON (LFAC_ID_PRHO::bigint = t_rubriques_facturation.code_original) + LEFT JOIN activite.t_prestations ON (LFAC_LET_CLE = t_prestations.code) + JOIN w_FAC_FACTURE ON LFAC_ID_FACT = FACT_ID_FACT + LEFT JOIN w_FAC_DATEVENTE ON (LECR_ID_FACT_VENT = FACT_ID_FACT) + JOIN prod_hm.FAC_LIGNE_FACTURE_DEBITEUR ON LFAC_ID_LFAC = LFAD_ID_LFAC + LEFT JOIN w_FAC_LIGNE_FACTURE_DEBITEUR_compte ON LECR_ID_LFAD = LFAD_ID_LFAD + LEFT JOIN activite[PX].t_compte ON (LECR_NUM_COMPTE = t_compte.code_original) + JOIN prod_hm.FAC_FACTURE_DEBITEUR ON LFAD_ID_FACD = FACD_ID_FACD + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + FACT_TYPE <> 'P' AND + LFAC_ID_PRHO <> 0 AND + CRN_HON_TO_SEJ = '1' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,15,16; + + UPDATE w_FAC_FACTURE_LIGNE_C + SET lpp_id = t_lpp.oid + FROM base.t_lpp + WHERE LFAC_COD_LPP = t_lpp.code + ; + + UPDATE w_FAC_FACTURE_LIGNE_C + SET ucd_id = t_ucd.oid + FROM prod_hm.FAC_LIGNE_FACTURE_UCD + JOIN base.t_ucd ON LFUC_COD_UCD = t_ucd.code + WHERE LFAC_ID_LFAC = LFUC_ID_LFAC + ; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_FAC_FACTURE_LIGNE_C'); + + -- lignes clinique + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_8'); + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + ucd_id, + lpp_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + + origine_facturation_id, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour) + + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestations, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + ucd_id, + lpp_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_sortie_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + 0, + 0, + 0, + 0, + 0, + + origine_facturation_id, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour + + FROM w_FAC_FACTURE_LIGNE_C; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_8'); + + + + + UPDATE activite[PX].p_factures_lignes_c + SET nb_prestation = coefficient * nb_prestation, + nb_rubrique = coefficient * nb_prestation, + coefficient = 1 + FROM activite.t_prestations + WHERE prestation_id = t_prestations.oid AND + coefficient > 1 AND + ( + prestation_id IN (SELECT oid FROM activite.t_prestations WHERE code IN ('PJ', 'PJ1', 'PJ2', 'FJ', 'PHJ', 'SSM', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO')) + OR + type_ventilation_jour = '1' + ); + + + -- Eclatement des supplements par jour + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + p_factures_lignes_c.CTID AS from_CTID, + t_prestations.code AS prestation_code, + CASE WHEN p_sejours.type_sejour <> '5' THEN date(p_sejours.date_entree) ELSE p_factures_lignes_c.date_debut END AS date_debut_ghs, + CASE WHEN p_sejours.type_sejour <> '5' THEN date(p_sejours.date_sortie - interval '1 day') ELSE p_factures_lignes_c.date_fin END AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN type_sejour = '5' THEN p_factures_lignes_c.date_debut WHEN t_prestations.code = 'GHS' THEN date(date_entree + interval '1 day') ELSE date(p_factures_lignes_c.date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN type_sejour = '5' THEN p_factures_lignes_c.date_fin WHEN t_prestations.code = 'GHS' THEN date(p_sejours.date_sortie - interval '1 day') ELSE date(p_factures_lignes_c.date_debut + ((ABS(nb_prestation)-1) || ' day')::interval) END AS date_fin_det, + ABS(CASE WHEN type_sejour <> '5' AND t_prestations.code = 'GHS' THEN date(date_sortie) - date(date_entree) ELSE nb_prestation END) AS nb_det, + p_factures_lignes_c.* + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + ( + code IN ('PJ', 'PJ1', 'PJ2', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (type_sejour <> '5' AND t_prestations.code = 'GHS' AND date(date_sortie) - date(date_entree) > 1)) ; + + + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM activite[PX].p_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture AND + prestation_code = 'GHS'; + + CREATE INDEX w_factures_lignes_sup_c_i1 + ON w_factures_lignes_sup_c + USING btree + (date_debut); + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + from_CTID, + no_facture, + date AS date_debut, + date AS date_fin, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + ucd_id, + lpp_id, + round(montant_facture / ABS(nb_det),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + round(montant_comptabilise / ABS(nb_det),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_det),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_det),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_det),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_det),2) AS montant_comptabilise_22, + round(montant_encours / ABS(nb_det),2) AS montant_encours, + round(montant_encours_0 / ABS(nb_det),2) AS montant_encours_0, + round(montant_encours_1 / ABS(nb_det),2) AS montant_encours_1, + round(montant_encours_2 / ABS(nb_det),2) AS montant_encours_2, + round(montant_encours_22 / ABS(nb_det),2) AS montant_encours_22, + round(montant_facture_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_actes_inclus_dans_sejour, + round(montant_facture_0_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_0_actes_inclus_dans_sejour, + round(montant_facture_1_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_1_actes_inclus_dans_sejour, + round(montant_facture_2_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_2_actes_inclus_dans_sejour, + round(montant_facture_22_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + round(montant_comptabilise_budget_global_1 / ABS(nb_det),2) AS montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_det AND date_fin_det + ; + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT from_CTID, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + + UPDATE activite[PX].p_factures_lignes_c + SET + date_fin = p_factures_lignes_c.date_debut, + nb_rubrique = p_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_sup_tot.nb_rubrique, + nb_prestation = p_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_sup_tot.nb_prestation, + montant_facture = p_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = p_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = p_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = p_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = p_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = p_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = p_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = p_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = p_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = p_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22, + montant_encours = p_factures_lignes_c.montant_encours - w_factures_lignes_sup_c_sup_tot.montant_encours, + montant_encours_0 = p_factures_lignes_c.montant_encours_0 - w_factures_lignes_sup_c_sup_tot.montant_encours_0, + montant_encours_1 = p_factures_lignes_c.montant_encours_1 - w_factures_lignes_sup_c_sup_tot.montant_encours_1, + montant_encours_2 = p_factures_lignes_c.montant_encours_2 - w_factures_lignes_sup_c_sup_tot.montant_encours_2, + montant_encours_22 = p_factures_lignes_c.montant_encours_22 - w_factures_lignes_sup_c_sup_tot.montant_encours_22, + montant_facture_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 = p_factures_lignes_c.montant_comptabilise_budget_global_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup_tot + WHERE p_factures_lignes_c.CTID = from_CTID; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_sup_c_sup'); + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + ucd_id, + lpp_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + ucd_id, + lpp_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c_sup; + + + + UPDATE activite[PX].p_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_factures, activite[PX].p_mouvements_sejour + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + activite[PX].p_factures_lignes_c.date_debut = p_mouvements_sejour.date AND + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_sorties_directes = 1) AND + p_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + + + + + + + + + + DROP TABLE IF EXISTS w_actes_inclus_dans_sejour; + CREATE TEMP TABLE w_actes_inclus_dans_sejour AS + SELECT FACT_NUM_FAC_SEJ AS no_facture, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour + FROM activite[PX].p_factures_lignes_c JOIN w_FAC_FACTURE ON no_facture = FACT_NUM_FAC + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + montant_facture_actes_inclus_dans_sejour <> 0 AND + origine_facturation_id = 3 + GROUP BY 1; + + DROP TABLE IF EXISTS w_ghs_pj; + CREATE TEMP TABLE w_ghs_pj AS + SELECT p_factures_lignes_c.no_facture, + p_sejours.no_sejour, + p_sejours.est_budget_global, + MIN(p_factures_lignes_c.ctid) AS ctid_min + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + origine_facturation_id = 1 AND + ( + prestation_id IN (SELECT oid FROM activite.t_prestations where code IN ('PJ', 'PJ1', 'PJ2', 'GHS', 'AMP5')) OR + rubrique_facturation_id IN (SELECT oid FROM activite[PX].t_rubriques_facturation where actes_inclus_public = '1') + ) + GROUP BY 1,2,3; + + + + UPDATE activite[PX].p_factures_lignes_c + SET + montant_facture_actes_inclus_dans_sejour = 0 - w_actes_inclus_dans_sejour.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = 0 - w_actes_inclus_dans_sejour.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = 0 - w_actes_inclus_dans_sejour.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = 0 - w_actes_inclus_dans_sejour.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = 0 - w_actes_inclus_dans_sejour.montant_facture_22_actes_inclus_dans_sejour + FROM w_actes_inclus_dans_sejour, w_ghs_pj + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + p_factures_lignes_c.no_facture = w_ghs_pj.no_facture AND p_factures_lignes_c.ctid = w_ghs_pj.ctid_min AND + w_actes_inclus_dans_sejour.no_facture = p_factures_lignes_c.no_facture AND + ( + prestation_id IN (SELECT oid FROM activite.t_prestations where code IN ('PJ', 'GHS', 'AMP5')) OR + rubrique_facturation_id IN (SELECT oid FROM activite[PX].t_rubriques_facturation where actes_inclus_public = '1') + ); + + + + DROP TABLE IF EXISTS w_actes_inclus_dans_sejour_t; + CREATE TEMP TABLE w_actes_inclus_dans_sejour_t AS + SELECT no_facture, + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_actes_inclus_dans_sejour ELSE 0 END) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(CASE WHEN origine_facturation_id = 3 THEN montant_facture_actes_inclus_dans_sejour ELSE 0 END) AS montant_facture_h_actes_inclus_dans_sejour + FROM activite[PX].p_factures_lignes_c + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + montant_facture_actes_inclus_dans_sejour <> 0 + GROUP BY 1; + + + UPDATE activite[PX].p_factures SET + montant_facture_c_actes_inclus_dans_sejour = w_actes_inclus_dans_sejour_t.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_actes_inclus_dans_sejour_t.montant_facture_h_actes_inclus_dans_sejour + FROM w_actes_inclus_dans_sejour_t + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + w_actes_inclus_dans_sejour_t.no_facture = p_factures.no_facture; + + + + + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_factures_lignes_sup_c CASCADE; + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot CASCADE; + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup CASCADE; + DROP TABLE IF EXISTS w_actes_inclus_dans_sejour CASCADE; + DROP TABLE IF EXISTS w_ghs_pj CASCADE; + DROP TABLE IF EXISTS w_actes_inclus_dans_sejour_t CASCADE; + + + + ]]> + + + + + + date_entree + ) subview + WHERE p_rsf_detail.rss_id = subview.rss_id AND + p_rsf_detail.prestation_id = subview.prestation_id AND + p_rsf_detail.date_debut = subview.date_debut AND + p_rsf_detail.date_fin = subview.date_fin AND + p_rsf_detail.nombre = subview.nombre + ; + + UPDATE pmsi.p_rss + SET no_sejour_administratif = + CASE WHEN SEJO_DAT_SUP IS NULL AND + SEJO_IND_INCOMPLET IS DISTINCT FROM '1' AND + p_rss.date_sortie = date(SEJO_DAT_FIN) + THEN sejo_num_sej ELSE no_sejour_administratif END + FROM prod_hm.pms_rss + JOIN w_IDE_SEJOUR_complet ON trss_id_sejo_d = sejo_id_sejo + WHERE p_rss.no_rss = TRSS_NUMERO AND ghm_id <> 0 AND + no_sejour_administratif IS DISTINCT FROM + CASE WHEN SEJO_DAT_SUP IS NULL AND + SEJO_IND_INCOMPLET IS DISTINCT FROM '1' AND + p_rss.date_sortie = date(SEJO_DAT_FIN) + THEN sejo_num_sej ELSE no_sejour_administratif END + ; + + + + UPDATE pmsi.p_rss + SET no_sejour_administratif = SEJO_NUM_SEJ + FROM w_IDE_SEJOUR_complet + WHERE p_rss.date_entree = date(SEJO_DAT_DEB) AND p_rss.date_sortie = date(SEJO_DAT_FIN) AND + SEJO_NUM_SEJ LIKE '%' || no_sejour_administratif AND SEJO_DAT_SUP IS NULL AND SEJO_IND_INCOMPLET IS DISTINCT FROM '1' AND + no_sejour_administratif IS DISTINCT FROM SEJO_NUM_SEJ + ; + + + + DROP TABLE IF EXISTS w_factures_lignes_bg; + + CREATE TEMP TABLE w_factures_lignes_bg AS + SELECT + trim(p_rss.no_sejour_administratif) AS no_sejour_administratif, + p_rss.date_sortie AS date_sortie_pmsi, + p_rss.date_entree AS date_entree_pmsi, + p_rss.date_naissance AS date_naissance_pmsi, + NULL::text AS no_sejour, + NULL::text AS no_facture, + NULL::bigint AS lieu_id, + NULL::date AS date_debut_facture, + NULL::date AS date_fin_facture, + NULL::date AS date_sortie, + NULL::bigint AS tiers_payant_0_id, + NULL::bigint AS tiers_payant_1_id, + 0 AS tiers_payant_2_id, + 0 AS tiers_payant_22_id, + NULL::bigint AS ghs_id, + NULL::bigint AS ghs_bebe1_id, + NULL::bigint AS ghs_bebe2_id, + NULL::bigint AS ghs_bebe3_id, + + p_rsf_detail.date_debut AS date_debut, + p_rsf_detail.date_fin AS date_fin, + + trim(replace(replace(t_prestations_pmsi.code, ' F', ''), ' N', '')) AS prestation_code, + + p_rsf_detail.nombre, + p_rsf_detail.coefficient, + p_rsf_detail.coefficient_mco, + p_rsf_detail.prix_unitaire, + p_rsf_detail.taux_remboursement, + + round(p_rsf_detail.sejour_remboursable,2) AS montant_comptabilise_budget_global_c + FROM pmsi.p_rss + JOIN pmsi.p_rsf_detail ON p_rss.oid = p_rsf_detail.rss_id + JOIN activite.t_divers ON t_divers.code = 'EXCLUSIONPRESTATIONPMSI' + JOIN pmsi.t_prestations t_prestations_pmsi ON prestation_id = t_prestations_pmsi.oid AND t_prestations_pmsi.code != ALL(string_to_array(replace(replace(t_divers.valeur,' ',''), '-', ' '),',')) + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement IN ('2','3') + WHERE p_rss.traitement_epmsi IN ('30','31','32','33') AND + en_cours = '0' AND + p_rss.etat = ''AND + p_rss.date_sortie >= '[ENV_ADM_ANNEEDEBUT]0101' AND + fides_detail <> 1 AND + p_rsf_detail.est_ligne_rss = '1' + ; + + ANALYSE w_factures_lignes_bg + ; + + CREATE INDEX i_w_factures_lignes_bg_1 + ON w_factures_lignes_bg + USING btree + (no_sejour_administratif); + + UPDATE w_factures_lignes_bg SET + no_sejour = p_sejours.no_sejour + FROM activite[PX].p_sejours + JOIN activite[PX].p_patients ON p_sejours.no_patient = p_patients.no_patient + WHERE no_sejour_administratif = p_sejours.no_sejour AND + date_trunc('month',date_sortie_pmsi) = date_trunc('month',p_sejours.date_sortie)AND + date_naissance_pmsi = p_patients.date_naissance + ; + + CREATE INDEX i_w_factures_lignes_bg_2 + ON w_factures_lignes_bg + USING btree + (no_sejour); + + UPDATE w_factures_lignes_bg SET + no_sejour = p_sejours.no_sejour + FROM activite[PX].p_sejours + WHERE no_sejour_administratif = p_sejours.no_sejour AND + date_trunc('month',date_sortie_pmsi) = date_trunc('month',p_sejours.date_sortie) AND + w_factures_lignes_bg.no_sejour IS NULL + ; + + UPDATE w_factures_lignes_bg SET + no_sejour = p_sejours.no_sejour + FROM activite[PX].p_sejours + WHERE no_sejour_administratif = substr(p_sejours.no_sejour,2) AND + date_trunc('month',date_sortie_pmsi) = date_trunc('month',p_sejours.date_sortie) AND + w_factures_lignes_bg.no_sejour IS NULL + ; + + UPDATE w_factures_lignes_bg SET + no_sejour = p_sejours.no_sejour + FROM activite[PX].p_sejours + WHERE no_sejour_administratif = p_sejours.no_sejour AND + date_entree_pmsi = date_entree AND + w_factures_lignes_bg.no_sejour IS NULL + ; + + UPDATE w_factures_lignes_bg SET + no_sejour = p_sejours.no_sejour + FROM activite[PX].p_sejours + WHERE no_sejour_administratif = substr(p_sejours.no_sejour,2) AND + date_entree_pmsi= date_entree AND + w_factures_lignes_bg.no_sejour IS NULL + ; + + + UPDATE w_factures_lignes_bg SET + no_sejour = p_sejours.no_sejour + FROM activite[PX].p_sejours + JOIN activite[PX].p_patients ON p_sejours.no_patient = p_patients.no_patient + WHERE no_sejour_administratif = substr(p_sejours.no_sejour,2) AND + date_naissance_pmsi = p_patients.date_naissance AND + w_factures_lignes_bg.no_sejour IS NULL + ; + + UPDATE w_factures_lignes_bg SET + no_sejour = p_sejours.no_sejour + FROM activite[PX].p_sejours + WHERE no_sejour_administratif = substr(p_sejours.no_sejour,2) AND + w_factures_lignes_bg.no_sejour IS NULL + ; + + UPDATE w_factures_lignes_bg + SET no_sejour = p_sejours.no_sejour + FROM activite[PX].p_sejours + WHERE no_sejour_administratif = p_sejours.no_sejour + AND w_factures_lignes_bg.no_sejour IS NULL + ; + + UPDATE w_factures_lignes_bg SET + no_facture = w_factures_lignes_bg.no_sejour || '.BG', + lieu_id = p_sejours.lieu_sortie_id, + date_debut_facture = p_sejours.date_entree, + date_fin_facture = p_sejours.date_sortie, + date_sortie = p_sejours.date_sortie, + tiers_payant_0_id = p_sejours.tiers_payant_0_id, + tiers_payant_1_id = p_sejours.tiers_payant_1_id, + ghs_id = p_sejours.ghs_id, + ghs_bebe1_id = p_sejours.ghs_bebe1_id, + ghs_bebe2_id = p_sejours.ghs_bebe2_id, + ghs_bebe3_id = p_sejours.ghs_bebe3_id + FROM activite[PX].p_sejours + WHERE w_factures_lignes_bg.no_sejour = p_sejours.no_sejour + ; + + DELETE FROM w_factures_lignes_bg + WHERE no_sejour IS NULL + ; + + ANALYSE w_factures_lignes_bg + ; + + + UPDATE w_factures_lignes_bg + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE + w_factures_lignes_bg.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_lignes_bg.date_debut = p_mouvements_sejour.date AND + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_sorties_directes = 1) AND + w_factures_lignes_bg.lieu_id <> p_mouvements_sejour.lieu_id + ; + + + INSERT INTO activite[PX].p_factures( + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + date_solde, + montant_facture_c, + montant_facture_h, + montant_regle_c, + montant_regle_h, + delai_facture, + delai_solde, + date_expedition, + delai_expedition, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + ghs_id, + particularite_t2a, + code_cloture, + code_cp_demandee, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + + nb_rejets, + + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + + montant_comptabilise_budget_global_c + ) + + SELECT + no_sejour, + no_facture, + no_facture, + date_debut_facture AS date_debut, + date_fin_facture AS date_fin, + 'G' AS type_facture, + '1' AS code_facture, + date_sortie AS date_facture, + '1' AS code_vente, + date_sortie AS date_vente, + extract('year' FROM date_sortie) * 100 + extract('month' FROM date_sortie), + date_sortie AS date_solde, + SUM(montant_comptabilise_budget_global_c) AS montant_facture_c, + 0 AS montant_facture_h, + 0 AS montant_regle_c, + 0 AS montant_regle_h, + 0 AS delai_facture, + 0 AS delai_solde, + date_sortie AS date_expedition, + 0 AS delai_expedition, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + date_sortie AS date_solde_0_c, + date_sortie AS date_solde_0_h, + date_sortie AS date_solde_1_c, + date_sortie AS date_solde_1_h, + date_sortie AS date_solde_2_c, + date_sortie AS date_solde_2_h, + date_sortie AS date_solde_22_c, + date_sortie AS date_solde_22_h, + date_sortie AS date_expedition_0, + date_sortie AS date_expedition_1, + date_sortie AS date_expedition_2, + date_sortie AS date_expedition_22, + '1' AS code_expedie_0, + '1' AS code_expedie_1, + '1' AS code_expedie_2, + '1' AS code_expedie_22, + '' AS no_bordereau_0, + '' AS no_bordereau_1, + '' AS no_bordereau_2, + '' AS no_bordereau_22, + 0 AS montant_facture_0_c, + 0 AS montant_facture_0_h, + SUM(montant_comptabilise_budget_global_c) AS montant_facture_1_c, + 0 AS montant_facture_1_h, + 0 AS montant_facture_2_c, + 0 AS montant_facture_2_h, + 0 AS montant_facture_22_c, + 0 AS montant_facture_22_h, + 0 AS montant_regle_0_c, + 0 AS montant_regle_0_h, + 0 AS montant_regle_1_c, + 0 AS montant_regle_1_h, + 0 AS montant_regle_2_c, + 0 AS montant_regle_2_h, + 0 AS montant_regle_22_c, + 0 AS montant_regle_22_h, + 0 AS delai_expedition_0, + 0 AS delai_expedition_1, + 0 AS delai_expedition_2, + 0 AS delai_expedition_22, + 0 AS delai_solde_0_c, + 0 AS delai_solde_0_h, + 0 AS delai_solde_1_c, + 0 AS delai_solde_1_h, + 0 AS delai_solde_2_c, + 0 AS delai_solde_2_h, + 0 AS delai_solde_22_c, + 0 AS delai_solde_22_h, + ghs_id AS ghs_id, + '' AS particularite_t2a, + '' AS code_cloture, + '0' AS code_cp_demandee, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + + 0 AS montant_comptabilise_c, + 0 AS montant_comptabilise_h, + 0 AS montant_comptabilise_0_c, + 0 AS montant_comptabilise_0_h, + 0 AS montant_comptabilise_1_c, + 0 AS montant_comptabilise_1_h, + 0 AS montant_comptabilise_2_c, + 0 AS montant_comptabilise_2_h, + 0 AS montant_comptabilise_22_c, + 0 AS montant_comptabilise_22_h, + + 0 AS nb_rejets, + + 0 AS montant_facture_c_actes_inclus_dans_sejour, + 0 AS montant_facture_h_actes_inclus_dans_sejour, + + SUM(montant_comptabilise_budget_global_c) + + FROM w_factures_lignes_bg + GROUP BY no_sejour, + no_facture, + date_debut_facture, + date_fin_facture, + date_sortie, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id + ; + + + + INSERT INTO activite.t_prestations(code, code_original, texte, texte_court) + SELECT prestation_code, prestation_code, prestation_code, prestation_code + FROM w_factures_lignes_bg + LEFT JOIN activite.t_prestations ON prestation_code = t_prestations.code + WHERE t_prestations.code IS NULL + GROUP BY prestation_code + ; + + UPDATE activite[PX].t_rubriques_facturation + SET code = PRSE_CODE, + texte = PRSE_LIBELLE, + texte_court = PRSE_LIBELLE + FROM prod_hm.PAD_PRESTATION_SEJOUR + WHERE PRSE_ID_PRSE::bigint = code_original + ; + + INSERT INTO activite[PX].t_rubriques_facturation(code, code_original, texte, texte_court) + SELECT prestation_code, prestation_code, prestation_code, prestation_code + FROM w_factures_lignes_bg + LEFT JOIN activite[PX].t_rubriques_facturation ON prestation_code = t_rubriques_facturation.code + WHERE t_rubriques_facturation.code IS NULL + GROUP BY prestation_code + ; + + DROP TABLE IF EXISTS w_rubriques_bg; + CREATE TEMP TABLE w_rubriques_bg AS + SELECT code, (MIN(ARRAY[CASE WHEN code <> code_original THEN 0 ELSE 1 END, oid]))[2]::bigint AS oid + FROM activite.t_rubriques_facturation + WHERE EXISTS (SELECT prestation_code FROM w_factures_lignes_bg WHERE w_factures_lignes_bg.prestation_code = t_rubriques_facturation.code) + GROUP BY 1 + ; + + ANALYSE w_rubriques_bg + ; + + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + + origine_facturation_id, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1) + + SELECT + + no_facture, + date_debut, + date_fin, + nombre AS nb_rubrique, + nombre AS nb_prestation, + coefficient AS coefficient, + coefficient_mco AS coefficient_mco, + COALESCE(w_rubriques_bg.oid,0) AS rubrique_facturation_id, + COALESCE(w_rubriques_bg.oid,0) AS rubrique_comptabilisation_id, + 0::bigint AS compte_produit_id, + COALESCE(t_prestations.oid,0) AS prestation_id, + montant_comptabilise_budget_global_c AS montant_facture, + 0 AS montant_facture_0, + montant_comptabilise_budget_global_c AS montant_facture_1, + 0 AS montant_facture_2, + 0 AS montant_facture_22, + + 0 AS taux_0, + taux_remboursement AS taux_1, + 0 AS taux_2, + 0 AS taux_22, + prix_unitaire, + lieu_id, + + 0 AS montant_comptabilise, + 0 AS montant_comptabilise_0, + 0 AS montant_comptabilise_1, + 0 AS montant_comptabilise_2, + 0 AS montant_comptabilise_22, + + 0 AS montant_encours, + 0 AS montant_encours_0, + 0 AS montant_encours_1, + 0 AS montant_encours_2, + 0 AS montant_encours_22, + + 1 AS origine_facturation_id, + 0 AS montant_facture_actes_inclus_dans_sejour, + 0 AS montant_facture_0_actes_inclus_dans_sejour, + 0 AS montant_facture_1_actes_inclus_dans_sejour, + 0 AS montant_facture_2_actes_inclus_dans_sejour, + 0 AS montant_facture_22_actes_inclus_dans_sejour, + + montant_comptabilise_budget_global_c AS montant_comptabilise_budget_global_1 + + FROM w_factures_lignes_bg + LEFT JOIN activite.t_prestations ON prestation_code = t_prestations.code + LEFT JOIN w_rubriques_bg ON prestation_code = w_rubriques_bg.code + ; + + + + DROP TABLE IF EXISTS w_factures_ventes_bg; + CREATE TEMP TABLE w_factures_ventes_bg AS + SELECT no_sejour, date_debut, date_fin, MAX(date_vente) AS date_vente + FROM activite[PX].p_factures + WHERE montant_comptabilise_budget_global_c <> 0 + GROUP BY 1,2,3; + + CREATE INDEX i_factures_ventes_bg_1 + ON w_factures_ventes_bg + USING btree + (no_sejour); + + UPDATE activite[PX].p_factures + SET date_vente= w_factures_ventes_bg.date_vente + FROM w_factures_ventes_bg + WHERE p_factures.date_vente = '20991231' AND + p_factures.code_facture = '1' AND + p_factures.no_sejour = w_factures_ventes_bg.no_sejour AND + p_factures.date_fin BETWEEN w_factures_ventes_bg.date_debut AND w_factures_ventes_bg.date_fin + ; + + DROP TABLE IF EXISTS w_factures_ventes_bg CASCADE + ; + DROP TABLE IF EXISTS w_factures_lignes_bg CASCADE + ; + + + -- RAZ montants facturé TP1 sur budget global (générés à tord par HM) + UPDATE activite[PX].p_factures_lignes_c + SET montant_facture = montant_facture - montant_facture_1, + montant_facture_1 = 0, + taux_1 = 0 + FROM prod_hm.FAC_FACTURE + WHERE p_factures_lignes_c.no_facture = FACT_NUM_FAC AND + montant_facture_1 <> 0 AND + montant_comptabilise_1 = 0 AND + p_factures_lignes_c.no_facture NOT LIKE '%BG%' AND + FACT_TYP_BGH = 'B' + ; + + UPDATE activite[PX].p_factures + SET montant_facture_c = p_factures.montant_facture_c - p_factures.montant_facture_1_c, + montant_facture_1_c = 0 + FROM prod_hm.FAC_FACTURE + WHERE p_factures.no_facture = FACT_NUM_FAC AND + p_factures.montant_facture_1_c <> 0 AND + p_factures.montant_comptabilise_1_c = 0 AND + p_factures.no_facture NOT LIKE '%BG%' AND + FACT_TYP_BGH = 'B' + ; + + + + + -- En cours PMSI public + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id) + SELECT + p_sejours.oid, + p_sejours.no_sejour, + MAX(p_sejours.no_sejour || '.BG'), + MAX(p_sejours.no_sejour || '.BG'), + MAX(p_sejours.date_entree), + MAX(p_sejours.date_sortie), + '0', + '0', + '20991231'::date, + MAX(p_sejours.tiers_payant_0_id), + MAX(p_sejours.tiers_payant_1_id), + MAX(p_sejours.tiers_payant_2_id), + MAX(p_sejours.tiers_payant_22_id), + MAX(p_sejours.ghs_id), + MAX(p_sejours.ghs_bebe1_id), + MAX(p_sejours.ghs_bebe2_id), + MAX(p_sejours.ghs_bebe3_id) + FROM pmsi.p_rss + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND p_factures.no_facture LIKE '%BG' + WHERE p_rss.en_cours = '1' AND p_factures.no_facture IS NULL AND + p_sejours.type_sejour IN ('1','2','5','6') + GROUP BY 1,2; + + -- Encours Externes BG avec facturation partielle SE, FFM, ATU + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id) + SELECT p_sejours.oid, + p_sejours.no_sejour, + p_sejours.no_sejour || '.BG', + p_sejours.no_sejour || '.BG', + p_sejours.date_entree, + p_sejours.date_sortie, + '0', + '0', + '20991231'::date, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE p_sejours.est_budget_global = '1' AND + p_sejours.type_sejour IN ('3') AND + p_sejours.etat = '' AND + date_sortie between date(date_trunc('year',now() - interval '1 year')) AND now() AND + code_sorti = '1' AND + no_sejour NOT IN (SELECt no_sejour FROM activite[PX].p_factures where no_facture like '%BG') AND + no_sejour IN ( + SELECT p_factures.no_sejour + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_prestations ON prestation_id = t_prestations.oid + WHERE p_sejours.est_budget_global = '1' AND + code_facture = '1' AND + t_prestations.code IN ('SE1','SE2','SE3','SE4','ATU', 'FPU','FFM') + GROUP BY 1 + HAVING SUM(nb_prestation) > 0 AND + round(base.cti_division(SUM(montant_facture_0+montant_facture_2),SUM(prix_unitaire*nb_prestation*coefficient*coefficient_mco)),2)<=0.21 + ) + ; + -- Récupération des lignes SE,FFM,ATU facturées à 0 au patient et à la mutuelle pour encours BG + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id, + coefficient_mco) + SELECT p_factures_bg.no_facture, + p_factures_bg.date_debut, + p_factures_bg.date_fin, + SUM(p_factures_lignes_c.nb_rubrique), + p_factures_lignes_c.coefficient, + p_factures_lignes_c.rubrique_facturation_id, + p_factures_lignes_c.prestation_id, + MAX(p_factures_lignes_c.prix_unitaire), + p_factures_lignes_c.lieu_id, + MAX(p_factures_lignes_c.coefficient_mco) + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_factures p_factures_bg ON + p_factures_bg.no_facture = p_factures.no_sejour || '.BG' AND + p_factures_bg.code_facture = '0' + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + LEFT JOIN activite[PX].p_factures_lignes_non_facturees_c ON + p_factures_lignes_non_facturees_c.no_facture = p_factures_bg.no_facture AND + p_factures_lignes_non_facturees_c.prestation_id = t_prestations.oid + WHERE p_sejours.est_budget_global = '1' AND + p_factures.code_facture = '1' AND + t_prestations.code IN ('SE1','SE2','SE3','SE4','ATU', 'FPU','FFM') AND + p_factures_lignes_non_facturees_c.no_facture IS NULL + GROUP BY 1,2,3,5,6,7,9 + HAVING SUM(nb_prestation) > 0 + ; + + -- Sejours BG PMSi qui ne sont pas dans les RSS + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id) + SELECT p_sejours.oid, + p_sejours.no_sejour, + p_sejours.no_sejour || '.BG', + p_sejours.no_sejour || '.BG', + p_sejours.date_entree, + p_sejours.date_sortie, + '0', + '0', + '20991231'::date, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE p_sejours.est_budget_global = '1' AND + p_sejours.type_sejour IN ('1','2','5') AND + type_t2a = '1' AND + date_sortie between date(date_trunc('year',now() - interval '1 year')) AND now() AND + code_sorti = '1' AND + no_sejour NOT IN (SELECt no_sejour FROm activite[PX].p_factures where no_facture like '%BG') AND + no_sejour NOT IN ( + SELECT p_factures.no_sejour + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_sejours.est_budget_global = '1' AND + code_facture = '1' AND + t_prestations.code = 'PJ' AND + (taux_2 = 100 OR taux_0 = 100) + GROUP BY 1 + HAVING SUM(montant_facture_0+montant_facture_2) > 0 + ); + + + + + -- Récupération lignes non facturées pour les factures BG + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + p_factures.no_facture, + date(LFAC_DAT_EXE_DEB) AS date_debut, + date(COALESCE(LFAC_DAT_EXE_FIN, LFAC_DAT_EXE_DEB)) AS date_fin, + MAX(LFAC_QTE_COEFFICIENT) AS nb_rubrique, + 1 AS coefficient, + MAX(t_rubriques_facturation.oid) AS rubrique_facturation_id, + MAX(t_prestations.oid) AS prestation_id, + CASE + WHEN MIN(LFAD_IND_BGH) = '1' THEN MAX(LFAC_PRI_UNITAIRE) + ELSE base.cti_division(SUM(CASE WHEN LFAD_IND_BGH = '1' THEN LFAD_MTT_HOR_DEH ELSE 0 END) , MAX(LFAC_QTE_COEFFICIENT)) END + AS prix_unitaire, + MAX(p_sejours.lieu_sortie_id) AS lieu_id + FROM prod_hm.FAC_LIGNE_FACTURE + JOIN prod_hm.FAC_FACTURE ON LFAC_ID_FACT = FACT_ID_FACT AND FACT_TYPE = 'P' + JOIN prod_hm.FAC_LIGNE_FACTURE_DEBITEUR ON LFAC_ID_LFAC = LFAD_ID_LFAC + JOIN activite[PX].p_sejours ON LFAC_ID_SEJO_D::bigint = p_sejours.code_original AND p_sejours.etat = '' + JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND code_facture = '0' AND p_factures.no_facture LIKE '%BG' + JOIN activite[PX].t_rubriques_facturation ON LFAC_ID_PRSE::bigint = t_rubriques_facturation.code_original + JOIN activite.t_prestations ON LFAC_LET_CLE = t_prestations.code + LEFT JOIN activite[PX].p_factures_lignes_non_facturees_c ON + p_factures_lignes_non_facturees_c.no_facture = p_factures.no_facture AND + p_factures_lignes_non_facturees_c.prestation_id = t_prestations.oid + WHERE LFAC_LET_CLE NOT IN ('GHS','PJ') AND LFAC_ID_PRSE <> 0 AND + FACT_DAT_SUP IS NULL AND + date(LFAC_DAT_EXE_DEB) BETWEEN p_factures.date_debut AND p_factures.date_fin AND + p_factures_lignes_non_facturees_c.no_facture IS NULL + GROUP BY 1,2,3, LFAC_ID_LFAC + HAVING MIN(LFAD_IND_BGH) = '1' + ; + + -- Il peut y avoir des lignes en double avec la récupération standard + DELETE FROM activite[PX].p_factures_lignes_non_facturees_c + USING + ( + SELECT no_sejour, prestation_id, + p_factures_lignes_non_facturees_c.date_debut, + p_factures_lignes_non_facturees_c.date_fin, + p_factures_lignes_non_facturees_c.prix_unitaire, + MAX(CASE WHEN p_factures.no_facture NOT LIKE '%.BG' THEN p_factures_lignes_non_facturees_c.no_facture ELSE NULL END) AS no_facture + FROm activite[PX].p_factures_lignes_non_facturees_c + JOIN activite[PX].p_factures ON p_factures_lignes_non_facturees_c.no_facture = p_factures.no_facture + GROUP BY 1,2,3,4,5 + HAVING count(DISTINCT p_factures.no_facture) > 1 AND + MAX(CASE WHEN p_factures.no_facture LIKE '%.BG' THEN 1 ELSE 0 END) = 1 AND + MIN(CASE WHEN p_factures.no_facture LIKE '%.BG' THEN 1 ELSE 0 END) = 0 + ) subview + WHERE p_factures_lignes_non_facturees_c.no_facture = subview.no_facture AND + p_factures_lignes_non_facturees_c.prestation_id = subview.prestation_id AND + p_factures_lignes_non_facturees_c.date_debut = subview.date_debut AND + p_factures_lignes_non_facturees_c.date_fin = subview.date_fin AND + p_factures_lignes_non_facturees_c.prix_unitaire = subview.prix_unitaire + ; + + -- Il peut y avoir des lignes en double avec la récupération standard + DELETE FROM activite[PX].p_factures_lignes_non_facturees_c + USING + ( + SELECT no_sejour, prestation_id, + p_factures_lignes_non_facturees_c.date_debut, + p_factures_lignes_non_facturees_c.date_fin, + p_factures_lignes_non_facturees_c.prix_unitaire, + MAX(CASE WHEN p_factures.no_facture NOT LIKE '%.BG' THEN p_factures_lignes_non_facturees_c.no_facture ELSE NULL END) AS no_facture + FROm activite[PX].p_factures_lignes_non_facturees_c + JOIN activite[PX].p_factures ON p_factures_lignes_non_facturees_c.no_facture = p_factures.no_facture + GROUP BY 1,2,3,4,5 + HAVING count(DISTINCT p_factures.no_facture) > 1 AND + MAX(CASE WHEN p_factures.no_facture LIKE '%.BG' THEN 1 ELSE 0 END) = 1 AND + MIN(CASE WHEN p_factures.no_facture LIKE '%.BG' THEN 1 ELSE 0 END) = 0 + ) subview + WHERE p_factures_lignes_non_facturees_c.no_facture = subview.no_facture AND + p_factures_lignes_non_facturees_c.prestation_id = subview.prestation_id AND + p_factures_lignes_non_facturees_c.date_debut = subview.date_debut AND + p_factures_lignes_non_facturees_c.date_fin = subview.date_fin AND + p_factures_lignes_non_facturees_c.prix_unitaire = subview.prix_unitaire + ; + + -- Ou des lignes en double avec la facturation + DELETE FROM activite[PX].p_factures_lignes_non_facturees_c + USING + ( + SELECT no_sejour, prestation_id, + p_factures_lignes_non_facturees_c.date_debut, + p_factures_lignes_non_facturees_c.date_fin, + MAX(CASE WHEN p_factures.no_facture NOT LIKE '%.BG' THEN p_factures_lignes_non_facturees_c.no_facture ELSE NULL END) AS no_facture + FROm activite[PX].p_factures_lignes_non_facturees_c + JOIN activite[PX].p_factures ON p_factures_lignes_non_facturees_c.no_facture = p_factures.no_facture + GROUP BY 1,2,3,4 + ) subview + JOIN + ( + SELECT no_sejour, prestation_id, + p_factures_lignes_c.date_debut, + p_factures_lignes_c.date_fin, + p_factures.no_facture + FROm activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + GROUP BY 1,2,3,4,5 + ) subview2 + ON subview2.no_sejour = subview.no_sejour AND + subview2.prestation_id = subview.prestation_id AND + subview2.date_debut = subview.date_debut AND + subview2.date_fin = subview.date_fin + WHERE p_factures_lignes_non_facturees_c.no_facture = subview.no_facture AND + p_factures_lignes_non_facturees_c.prestation_id = subview.prestation_id AND + p_factures_lignes_non_facturees_c.date_debut = subview.date_debut AND + p_factures_lignes_non_facturees_c.date_fin = subview.date_fin + ; + + -- Factures non assurés ajoutées à tord (on trouve un 100% dans patient ou tp1 + DROP TABLE IF EXISTS w_sejours_bg_24; + CREATE TEMP TABLE w_sejours_bg_24 AS + SELECT + p_factures.no_sejour, + SUM(montant_facture_0+montant_facture_1+montant_facture_2) AS montant_facture_100 + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + LEFT JOIN pmsi.p_rss ON p_factures.no_sejour = p_rss.no_sejour_administratif + AND p_rss.traitement_epmsi IN ('30','31','32','33') + AND p_rss.etat = '' + WHERE p_sejours.est_budget_global = '1' + AND code_facture = '1' + AND t_prestations.code = 'PJ' + AND (taux_1 + taux_2 + taux_0 = 100 + OR taux_0+taux_1+taux_2=0 AND (montant_facture_1+montant_facture_2+montant_facture_0) = montant_facture + ) + AND p_rss.oid IS NULL + AND montant_facture <> 0 + AND p_factures.no_facture NOT LIKE '%BG' + GROUP BY p_factures.no_sejour + HAVING SUM(montant_facture_0+montant_facture_1+montant_facture_2) > 0 + ORDER BY p_factures.no_sejour + ; + + DELETE FROM activite[PX].p_factures_lignes_c + USING activite[PX].p_factures + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour IN (SELECT no_sejour FROM w_sejours_bg_24) AND + p_factures_lignes_c.no_facture LIKE '%BG' AND + origine_facturation_id = 1; + + UPDATE activite[PX].p_factures SET + code_facture = '1', + montant_facture_c = 0, + montant_facture_1_c = 0, + montant_comptabilise_1_c =0, + montant_comptabilise_budget_global_c = 0 + WHERE no_sejour IN (SELECT no_sejour FROM w_sejours_bg_24) AND + no_facture LIKE '%BG' AND + montant_comptabilise_budget_global_c = 0; + + + + -- Eclatement des supplements par jour des lignes BG + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + p_factures_lignes_c.CTID AS from_CTID, + t_prestations.code AS prestation_code, + CASE WHEN p_sejours.type_sejour <> '5' THEN date(p_sejours.date_entree) ELSE p_factures_lignes_c.date_debut END AS date_debut_ghs, + CASE WHEN p_sejours.type_sejour <> '5' THEN date(p_sejours.date_sortie - interval '1 day') ELSE p_factures_lignes_c.date_fin END AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN type_sejour = '5' THEN p_factures_lignes_c.date_debut WHEN t_prestations.code = 'GHS' THEN date(date_entree + interval '1 day') ELSE date(p_factures_lignes_c.date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN type_sejour = '5' THEN p_factures_lignes_c.date_fin WHEN t_prestations.code = 'GHS' THEN date(p_sejours.date_sortie - interval '1 day') ELSE date(p_factures_lignes_c.date_debut + ((ABS(nb_prestation)-1) || ' day')::interval) END AS date_fin_det, + ABS(CASE WHEN type_sejour <> '5' AND t_prestations.code = 'GHS' THEN date(date_sortie) - date(date_entree) ELSE nb_prestation END) AS nb_det, + p_factures_lignes_c.* + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + ( + code IN ('PJ', 'PJ1', 'PJ2', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + WHERE p_factures_lignes_c.no_facture LIKE '%BG' AND + (nb_prestation > 1 or nb_prestation < -1 OR (type_sejour <> '5' AND t_prestations.code = 'GHS' AND date(date_sortie) - date(date_entree) > 1)) ; + + + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM activite[PX].p_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture AND + prestation_code = 'GHS'; + + CREATE INDEX w_factures_lignes_sup_c_i1 + ON w_factures_lignes_sup_c + USING btree + (date_debut); + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + from_CTID, + no_facture, + date AS date_debut, + date AS date_fin, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + ucd_id, + lpp_id, + round(montant_facture / ABS(nb_det),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + round(montant_comptabilise / ABS(nb_det),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_det),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_det),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_det),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_det),2) AS montant_comptabilise_22, + round(montant_encours / ABS(nb_det),2) AS montant_encours, + round(montant_encours_0 / ABS(nb_det),2) AS montant_encours_0, + round(montant_encours_1 / ABS(nb_det),2) AS montant_encours_1, + round(montant_encours_2 / ABS(nb_det),2) AS montant_encours_2, + round(montant_encours_22 / ABS(nb_det),2) AS montant_encours_22, + round(montant_facture_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_actes_inclus_dans_sejour, + round(montant_facture_0_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_0_actes_inclus_dans_sejour, + round(montant_facture_1_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_1_actes_inclus_dans_sejour, + round(montant_facture_2_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_2_actes_inclus_dans_sejour, + round(montant_facture_22_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + round(montant_comptabilise_budget_global_1 / ABS(nb_det),2) AS montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_det AND date_fin_det + ; + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT from_CTID, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + + UPDATE activite[PX].p_factures_lignes_c + SET + date_fin = p_factures_lignes_c.date_debut, + nb_rubrique = p_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_sup_tot.nb_rubrique, + nb_prestation = p_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_sup_tot.nb_prestation, + montant_facture = p_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = p_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = p_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = p_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = p_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = p_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = p_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = p_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = p_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = p_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22, + montant_encours = p_factures_lignes_c.montant_encours - w_factures_lignes_sup_c_sup_tot.montant_encours, + montant_encours_0 = p_factures_lignes_c.montant_encours_0 - w_factures_lignes_sup_c_sup_tot.montant_encours_0, + montant_encours_1 = p_factures_lignes_c.montant_encours_1 - w_factures_lignes_sup_c_sup_tot.montant_encours_1, + montant_encours_2 = p_factures_lignes_c.montant_encours_2 - w_factures_lignes_sup_c_sup_tot.montant_encours_2, + montant_encours_22 = p_factures_lignes_c.montant_encours_22 - w_factures_lignes_sup_c_sup_tot.montant_encours_22, + montant_facture_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 = p_factures_lignes_c.montant_comptabilise_budget_global_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup_tot + WHERE p_factures_lignes_c.CTID = from_CTID; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_sup_c_sup'); + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + ucd_id, + lpp_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + ucd_id, + lpp_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c_sup; + + + + UPDATE activite[PX].p_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_factures, activite[PX].p_mouvements_sejour + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures_lignes_c.no_facture LIKE '%BG' AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + activite[PX].p_factures_lignes_c.date_debut = p_mouvements_sejour.date AND + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_sorties_directes = 1) AND + p_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + + ]]> + + + + + 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4; + + DROP TABLE IF EXISTS w_FAC_REG; + CREATE TEMP TABLE w_FAC_REG AS + SELECT + FACT_NUM_FAC, + ECRI_DAT_ECRITURE, + VENT_MONTANT AS montant_regle, + CASE WHEN FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN VENT_MONTANT ELSE 0 END AS montant_regle_0, + CASE WHEN FACD_ID_ORGA_AMO > 0 THEN VENT_MONTANT ELSE 0 END AS montant_regle_1, + CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN VENT_MONTANT ELSE 0 END AS montant_regle_2, + CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN VENT_MONTANT ELSE 0 END AS montant_regle_22, + LFAC_ID_PRSE, + LFAC_LET_CLE, + ECRI_DAT_SUP, + CPTE_CAGE_CODE, + CRN_HON_TO_SEJ, + LFAC_CDT_EXC, + LFAC_ID_PRHO, + LFAC_ID_MEDE_EXE + FROM w_FAC_FACTURE + JOIN prod_hm.FAC_LIGNE_FACTURE ON LFAC_ID_FACT = FACT_ID_FACT + JOIN prod_hm.FAC_LIGNE_FACTURE_DEBITEUR ON LFAC_ID_LFAC = LFAD_ID_LFAC + JOIN prod_hm.CCL_VENTILATION ON VENT_ID_LFAD = LFAD_ID_LFAD + JOIN prod_hm.CCL_LIGNE_ECRITURE ON VENT_ID_LECR = LECR_ID_LECR + JOIN prod_hm.CCL_ECRITURE ON LECR_ID_ECRI = ECRI_ID_ECRI + JOIN w_CCL_JOURNAL ON ECRI_ID_JOUR = JOUR_ID_JOUR + JOIN w_CCL_COMPTE ON LECR_ID_CPTE = CPTE_ID_CPTE + JOIN prod_hm.FAC_FACTURE_DEBITEUR ON LFAD_ID_FACD = FACD_ID_FACD + WHERE ECRI_DAT_SUP IS NULL + AND JOUR_ISJVT = '0' + ; + + + DROP TABLE IF EXISTS w_FAC_REG_DEB; + CREATE TEMP TABLE w_FAC_REG_DEB AS + SELECT + FACT_NUM_FAC, + ECRI_DAT_ECRITURE, + CASE WHEN LECR_SENS = 'C' THEN LECR_MONTANT ELSE 0 - LECR_MONTANT END AS montant_regle, + CASE WHEN FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN CASE WHEN LECR_SENS = 'C' THEN LECR_MONTANT ELSE 0 - LECR_MONTANT END ELSE 0 END AS montant_regle_0, + CASE WHEN FACD_ID_ORGA_AMO > 0 THEN CASE WHEN LECR_SENS = 'C' THEN LECR_MONTANT ELSE 0 - LECR_MONTANT END ELSE 0 END AS montant_regle_1, + CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN CASE WHEN LECR_SENS = 'C' THEN LECR_MONTANT ELSE 0 - LECR_MONTANT END ELSE 0 END AS montant_regle_2, + CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN CASE WHEN LECR_SENS = 'C' THEN LECR_MONTANT ELSE 0 - LECR_MONTANT END ELSE 0 END AS montant_regle_22, + LECR_ID_LECR, + CPTE_CAGE_CODE, + LECR_PART + FROM prod_hm.FAC_FACTURE_DEBITEUR + , w_FAC_FACTURE, + prod_hm.CCL_LIGNE_ECRITURE, + prod_hm.CCL_ECRITURE, + w_CCL_JOURNAL, + w_CCL_COMPTE + WHERE LECR_ID_FACD = FACD_ID_FACD + AND FACD_ID_FACT = FACT_ID_FACT + AND LECR_ID_ECRI = ECRI_ID_ECRI + AND ECRI_ID_JOUR = JOUR_ID_JOUR + AND LECR_ID_CPTE = CPTE_ID_CPTE + AND ECRI_DAT_SUP IS NULL + AND JOUR_ISJVT = '0' + --AND LECR_PART = 'SFT' + ; + + -- Comptes clients (REG) + + DROP TABLE IF EXISTS w_FAC_REGLEMENT_LIGNE_C; + CREATE TEMP TABLE w_FAC_REGLEMENT_LIGNE_C AS + SELECT + FACT_NUM_FAC AS no_facture, + date(ECRI_DAT_ECRITURE) AS date_reglement, + + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + + SUM(montant_regle) AS montant_regle, + SUM(montant_regle_0) AS montant_regle_0, + SUM(montant_regle_1) AS montant_regle_1, + SUM(montant_regle_2) AS montant_regle_2, + SUM(montant_regle_22) AS montant_regle_22 + FROM w_FAC_REG + LEFT JOIN activite[PX].t_rubriques_facturation ON (LFAC_ID_PRSE::bigint = t_rubriques_facturation.code_original) + LEFT JOIN activite.t_prestations ON (LFAC_LET_CLE = t_prestations.code) + WHERE 1=1 + AND LFAC_ID_PRSE <> 0 + AND CPTE_CAGE_CODE = 'CLIENT' + GROUP BY 1,2,3,4; + + -- Médecins salariés + + INSERT INTO w_FAC_REGLEMENT_LIGNE_C + SELECT + FACT_NUM_FAC AS no_facture, + date(ECRI_DAT_ECRITURE) AS date_reglement, + + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + + SUM(montant_regle) AS montant_regle, + SUM(montant_regle_0) AS montant_regle_0, + SUM(montant_regle_1) AS montant_regle_1, + SUM(montant_regle_2) AS montant_regle_2, + SUM(montant_regle_22) AS montant_regle_22 + FROM w_FAC_REG + LEFT JOIN activite[PX].t_rubriques_facturation ON (LFAC_ID_PRHO = t_rubriques_facturation.code_original) + LEFT JOIN activite.t_prestations ON (LFAC_LET_CLE = t_prestations.code) + WHERE 1=1 + AND LFAC_ID_PRHO <> 0 + AND CRN_HON_TO_SEJ <> '1' + AND LFAC_CDT_EXC = 'S' + AND CPTE_CAGE_CODE = 'CLIENT' + GROUP BY 1,2,3,4; + + + -- Règlements + INSERT INTO w_FAC_REGLEMENT_LIGNE_C + SELECT + FACT_NUM_FAC AS no_facture, + date(ECRI_DAT_ECRITURE) AS date_reglement, + + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + + SUM(montant_regle) AS montant_regle, + SUM(montant_regle_0) AS montant_regle_0, + SUM(montant_regle_1) AS montant_regle_1, + SUM(montant_regle_2) AS montant_regle_2, + SUM(montant_regle_22) AS montant_regle_22 + FROM w_FAC_REG + LEFT JOIN activite[PX].t_rubriques_facturation ON (LFAC_ID_PRHO = t_rubriques_facturation.code_original) + LEFT JOIN activite.t_prestations ON (LFAC_LET_CLE = t_prestations.code) + WHERE 1=1 + AND LFAC_ID_PRHO <> 0 + AND CRN_HON_TO_SEJ = '1' + AND CPTE_CAGE_CODE = 'CLIENT' + GROUP BY 1,2,3,4; + + -- Acomptes 85% + INSERT INTO w_FAC_REGLEMENT_LIGNE_C + SELECT + FACT_NUM_FAC AS no_facture, + date(ECRI_DAT_ECRITURE) AS date_reglement, + + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + + SUM(montant_regle) AS montant_regle, + SUM(montant_regle_0) AS montant_regle_0, + SUM(montant_regle_1) AS montant_regle_1, + SUM(montant_regle_2) AS montant_regle_2, + SUM(montant_regle_22) AS montant_regle_22 + FROM w_FAC_REG_DEB + LEFT JOIN activite[PX].t_rubriques_facturation ON (t_rubriques_facturation.code_original = '*CTI_ACO85') + LEFT JOIN activite.t_prestations ON (t_prestations.code_original = '*CTI_ACO85') + WHERE 1=1 + AND CPTE_CAGE_CODE = 'ACO85' + AND LECR_PART = 'SFT' + GROUP BY 1,2,3,4 + ; + + -- Acomptes + INSERT INTO w_FAC_REGLEMENT_LIGNE_C + SELECT + FACT_NUM_FAC AS no_facture, + date(ECRI_DAT_ECRITURE) AS date_reglement, + + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + + SUM(montant_regle) AS montant_regle, + SUM(montant_regle_0) AS montant_regle_0, + SUM(montant_regle_1) AS montant_regle_1, + SUM(montant_regle_2) AS montant_regle_2, + SUM(montant_regle_22) AS montant_regle_22 + FROM w_FAC_REG_DEB + LEFT JOIN activite[PX].t_rubriques_facturation ON (t_rubriques_facturation.code_original = '*CTI_ACO') + LEFT JOIN activite.t_prestations ON (t_prestations.code_original = '*CTI_ACO') + WHERE 1=1 + AND CPTE_CAGE_CODE IN ('ACO', 'CLIRMB') + AND LECR_PART = 'SFT' + GROUP BY 1,2,3,4 + ; + + -- Ecritures clients non ventilees (solde centimes) + DROP TABLE IF EXISTS w_FAC_REGLEMENT_LIGNE_C_non_ventilees; + CREATE TEMP TABLE w_FAC_REGLEMENT_LIGNE_C_non_ventilees AS + SELECT + FACT_NUM_FAC AS no_facture, + date(ECRI_DAT_ECRITURE) AS date_reglement, + + 0 AS rubrique_comptabilisation_id, + 0 AS prestation_id, + + SUM(montant_regle) AS montant_regle, + SUM(montant_regle_0) AS montant_regle_0, + SUM(montant_regle_1) AS montant_regle_1, + SUM(montant_regle_2) AS montant_regle_2, + SUM(montant_regle_22) AS montant_regle_22 + FROM w_FAC_REG_DEB + LEFT JOIN prod_hm.CCL_VENTILATION ON CCL_VENTILATION.VENT_ID_LECR = w_FAC_REG_DEB.LECR_ID_LECR + WHERE 1=1 + AND CPTE_CAGE_CODE IN ('CLIENT') + AND LECR_PART = 'SFT' + AND CCL_VENTILATION.VENT_ID_LECR IS NULL + GROUP BY 1,2,3 + ; + + UPDATE activite[PX].p_factures SET + montant_regle_c = montant_regle + subview.montant_regle, + montant_regle_0_c = montant_regle_0_c + subview.montant_regle_0, + montant_regle_1_c = montant_regle_1_c + subview.montant_regle_1, + montant_regle_2_c = montant_regle_2_c + subview.montant_regle_2, + montant_regle_22_c = montant_regle_22_c + subview.montant_regle_22 + FROM + ( + SELECT no_facture, + SUM(montant_regle) AS montant_regle, + SUM(montant_regle_0) AS montant_regle_0, + SUM(montant_regle_1) AS montant_regle_1, + SUM(montant_regle_2) AS montant_regle_2, + SUM(montant_regle_22) AS montant_regle_22 + FROM w_FAC_REGLEMENT_LIGNE_C_non_ventilees + GROUP BY 1 + ) subview + WHERE subview.no_facture = p_factures.no_facture + ; + + INSERT INTO w_FAC_REGLEMENT_LIGNE_C + SELECT * + FROM w_FAC_REGLEMENT_LIGNE_C_non_ventilees + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_1'); + + + + UPDATE activite[PX].p_factures_soldes_c + SET + montant_regle = w_FAC_REGLEMENT_LIGNE_C.montant_regle, + montant_regle_0 = w_FAC_REGLEMENT_LIGNE_C.montant_regle_0, + montant_regle_1 = w_FAC_REGLEMENT_LIGNE_C.montant_regle_1, + montant_regle_2 = w_FAC_REGLEMENT_LIGNE_C.montant_regle_2, + montant_regle_22 = w_FAC_REGLEMENT_LIGNE_C.montant_regle_22 + FROM w_FAC_REGLEMENT_LIGNE_C + WHERE p_factures_soldes_c.no_facture = w_FAC_REGLEMENT_LIGNE_C.no_facture AND + p_factures_soldes_c.date_comptable = w_FAC_REGLEMENT_LIGNE_C.date_reglement AND + p_factures_soldes_c.rubrique_comptabilisee_id = w_FAC_REGLEMENT_LIGNE_C.rubrique_comptabilisation_id AND + p_factures_soldes_c.prestation_id = w_FAC_REGLEMENT_LIGNE_C.prestation_id; + + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + w_FAC_REGLEMENT_LIGNE_C.no_facture, + w_FAC_REGLEMENT_LIGNE_C.date_reglement, + w_FAC_REGLEMENT_LIGNE_C.rubrique_comptabilisation_id, + w_FAC_REGLEMENT_LIGNE_C.prestation_id, + 0, + 0, + 0, + 0, + 0, + w_FAC_REGLEMENT_LIGNE_C.montant_regle, + w_FAC_REGLEMENT_LIGNE_C.montant_regle_0, + w_FAC_REGLEMENT_LIGNE_C.montant_regle_1, + w_FAC_REGLEMENT_LIGNE_C.montant_regle_2, + w_FAC_REGLEMENT_LIGNE_C.montant_regle_22 + FROM w_FAC_REGLEMENT_LIGNE_C + LEFT JOIN activite[PX].p_factures_soldes_c + ON (p_factures_soldes_c.no_facture = w_FAC_REGLEMENT_LIGNE_C.no_facture + AND p_factures_soldes_c.date_comptable = w_FAC_REGLEMENT_LIGNE_C.date_reglement + AND p_factures_soldes_c.rubrique_comptabilisee_id = w_FAC_REGLEMENT_LIGNE_C.rubrique_comptabilisation_id + AND p_factures_soldes_c.prestation_id = w_FAC_REGLEMENT_LIGNE_C.prestation_id) + WHERE date_reglement IS NOT NULL AND p_factures_soldes_c.no_facture IS NULL AND + ( + w_FAC_REGLEMENT_LIGNE_C.montant_regle <> 0 OR + w_FAC_REGLEMENT_LIGNE_C.montant_regle_0 <> 0 OR + w_FAC_REGLEMENT_LIGNE_C.montant_regle_1 <> 0 OR + w_FAC_REGLEMENT_LIGNE_C.montant_regle_2 <> 0 OR + w_FAC_REGLEMENT_LIGNE_C.montant_regle_22 <> 0 + ) + ; + + + + -- Annulations par avoirs + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_avoir) + SELECT + p_factures_soldes_c.no_facture, + date_od_avoir, + rubrique_comptabilisee_id, + prestation_id, + 0, + 0, + 0, + 0, + 0, + p_factures_soldes_c.montant_comptabilise, + p_factures_soldes_c.montant_comptabilise_0, + p_factures_soldes_c.montant_comptabilise_1, + p_factures_soldes_c.montant_comptabilise_2, + p_factures_soldes_c.montant_comptabilise_22, + '1' + FROM activite[PX].p_factures_soldes_c JOIN w_ods_avoir ON p_factures_soldes_c.no_facture = w_ods_avoir.no_facture + WHERE p_factures_soldes_c.montant_comptabilise <> 0; + + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_avoir) + SELECT + p_factures_soldes_c.no_facture, + date_od_avoir, + rubrique_comptabilisee_id, + prestation_id, + 0, + 0, + 0, + 0, + 0, + p_factures_soldes_c.montant_comptabilise, + p_factures_soldes_c.montant_comptabilise_0, + p_factures_soldes_c.montant_comptabilise_1, + p_factures_soldes_c.montant_comptabilise_2, + p_factures_soldes_c.montant_comptabilise_22, + '1' + FROM activite[PX].p_factures_soldes_c JOIN w_ods_avoir ON p_factures_soldes_c.no_facture = w_ods_avoir.no_facture_od_avoir + WHERE p_factures_soldes_c.montant_comptabilise <> 0; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_8'); + + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_FAC_FACTURE_LIGNE_C CASCADE; + DROP TABLE IF EXISTS w_FAC_REGLEMENT_LIGNE_C CASCADE; + + + + ]]> + + + + 0 AND ACSA_QTE_COEFFICIENT = 1 THEN ACSA_MON_TOT ELSE ACSA_PRI_UNITAIRE END AS prix_unitaire, + ACSA_MON_DEP_HON AS montant_depassement, + p_sejours.lieu_sortie_id AS lieu_id, + COALESCE(t_actes.oid::bigint, 0) AS acte_id, + COALESCE(floor(ASAI_NUM_PHAS),0) AS phase_ccam, + COALESCE(floor(ACSA_COD_ACT_D),0) AS activite_ccam, + substr(ACSA_EXT_DOC,1,1) AS extension_ccam, + substr(ACSA_MODIF1,1,1) AS modificateur_ccam_1, + substr(ACSA_MODIF2,1,1) AS modificateur_ccam_2, + substr(ACSA_MODIF3,1,1) AS modificateur_ccam_3, + substr(ACSA_MODIF4,1,1) AS modificateur_ccam_4 + + FROM prod_hm.SAD_ACTIVITE_SAISIES + LEFT JOIN prod_hm.SAD_ACTES_SAISIS ON ACSA_ID_ASAI = ASAI_ID_ASAI + JOIN activite[PX].p_sejours ON ACSA_ID_SEJO::bigint = p_sejours.code_original AND p_sejours.etat = '' + JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture = 'E' + JOIN activite[PX].t_medecins_administratifs ON ACSA_ID_MEDE::bigint = t_medecins_administratifs.code_original + JOIN activite.t_prestations ON ACSA_LET_CLE = t_prestations.code + JOIN base.t_actes ON (substring(ACSA_CODE_D, 1, 7) = t_actes.code) + WHERE ACSA_ID_PRHO <> 0 + AND date(COALESCE(ACSA_DAT_EXE_FIN, ACSA_DAT_EXE_DEB)) BETWEEN p_factures.date_debut AND p_factures.date_fin + + ORDER BY p_sejours.no_sejour; + + + ]]> + + + + = 7 THEN 'CCAM' ELSE 'NGAP' END), + MIN(CASE WHEN length(trim(LFAC_CODE)) >= 7 THEN 0 ELSE t_ccam_regroupements.oid END), + MIN(CASE WHEN length(trim(LFAC_CODE)) >= 7 THEN 0 ELSE t_ccam_regroupements.oid END), + 0 + FROM w_FAC_FACTURE, prod_hm.FAC_LIGNE_FACTURE + LEFT JOIN base.t_actes ON (trim(substring(LFAC_CODE, 1, 7)) = trim(t_actes.code)), base.t_ccam_regroupements + WHERE + LFAC_ID_FACT = FACT_ID_FACT + AND LFAC_ID_PRHO <> 0 AND t_actes.oid is NULL + AND t_ccam_regroupements.code = 'NGAP' + GROUP BY 1,2,3; + + + + DROP TABLE IF EXISTS w_FAC_FACTURE_LIGNE_H; + + CREATE TEMP TABLE w_FAC_FACTURE_LIGNE_H AS + SELECT + LFAC_ID_LFAC, + FACT_NUM_FAC AS no_facture, + date(LFAC_DAT_EXE_DEB) AS date_debut, + date(LFAC_DAT_EXE_FIN) AS date_fin, + CASE WHEN FACT_TYPE <> 'P' AND w_FAC_DATEVENTE.date_vente IS NOT NULL THEN w_FAC_DATEVENTE.date_vente ELSE '20991231'::date END AS date_vente, + lieu_sortie_id, + CASE WHEN LFAC_QTE_COEFFICIENT >= 0 THEN 1 ELSE -1 END AS nb_rubrique, + CASE WHEN LFAC_QTE_COEFFICIENT >= 0 THEN 1 ELSE -1 END AS nb_prestations, + ABS(LFAC_QTE_COEFFICIENT) as coefficient, + LFAC_COE_MCO_HAD AS coefficient_mco, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + COALESCE(t_medecins_administratifs.oid::bigint, 0) AS medecin_facture_id, + COALESCE(t_medecins_administratifs.oid::bigint, 0) AS medecin_comptabilise_id, + LFAC_PRI_UNITAIRE AS prix_unitaire, + + COALESCE(t_actes.oid::bigint, 0) AS acte_id, + COALESCE(t_protocoles.oid::bigint, 0) AS protocole_id, + to_char(COALESCE(LFAC_HEU_MEDICALE, LFAC_DAT_EXE_DEB, '0001-01-01 00:00:00'),'HH24MISS')::numeric AS heure_debut, + '1' AS phase_ccam, + LFAC_COD_ACTIVITE::integer AS activite_ccam, + LFAC_EXT_DOC AS extension_ccam, + LFAC_MODIF1 AS modificateur_ccam_1, + LFAC_MODIF2 AS modificateur_ccam_2, + LFAC_MODIF3 AS modificateur_ccam_3, + LFAC_MODIF4 AS modificateur_ccam_4, + + SUM(CASE WHEN FAC_HON = '1' THEN coalesce(LFAD_MTT_HOR_DEH, 0) + coalesce(LFAD_MTT_DEH, 0) ELSE 0 END) AS montant_facture, + SUM(CASE WHEN FAC_HON = '1' AND FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN coalesce(LFAD_MTT_HOR_DEH, 0) + coalesce(LFAD_MTT_DEH, 0) ELSE 0 END) as montant_facture_0, + SUM(CASE WHEN FAC_HON = '1' AND FACD_ID_ORGA_AMO > 0 THEN coalesce(LFAD_MTT_HOR_DEH, 0) + coalesce(LFAD_MTT_DEH, 0) ELSE 0 END) as montant_facture_1, + SUM(CASE WHEN FAC_HON = '1' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN coalesce(LFAD_MTT_HOR_DEH, 0) + coalesce(LFAD_MTT_DEH, 0) ELSE 0 END) as montant_facture_2, + SUM(CASE WHEN FAC_HON = '1' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN coalesce(LFAD_MTT_HOR_DEH, 0) + coalesce(LFAD_MTT_DEH, 0) ELSE 0 END) as montant_facture_22, + SUM(coalesce(LFAD_MTT_DEH, 0)) as montant_depassement, + + SUM(CASE WHEN FAC_HON <> '1' THEN coalesce(LFAD_MTT_HOR_DEH, 0) + coalesce(LFAD_MTT_DEH, 0) ELSE 0 END) AS montant_facture_actes_inclus_dans_sejour, + SUM(CASE WHEN FAC_HON <> '1' AND FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN coalesce(LFAD_MTT_HOR_DEH, 0) + coalesce(LFAD_MTT_DEH, 0) ELSE 0 END) as montant_facture_0_actes_inclus_dans_sejour, + SUM(CASE WHEN FAC_HON <> '1' AND FACD_ID_ORGA_AMO > 0 THEN coalesce(LFAD_MTT_HOR_DEH, 0) + coalesce(LFAD_MTT_DEH, 0) ELSE 0 END) as montant_facture_1_actes_inclus_dans_sejour, + SUM(CASE WHEN FAC_HON <> '1' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN coalesce(LFAD_MTT_HOR_DEH, 0) + coalesce(LFAD_MTT_DEH, 0) ELSE 0 END) as montant_facture_2_actes_inclus_dans_sejour, + SUM(CASE WHEN FAC_HON <> '1' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN coalesce(LFAD_MTT_HOR_DEH, 0) + coalesce(LFAD_MTT_DEH, 0) ELSE 0 END) as montant_facture_22_actes_inclus_dans_sejour, + + MAX(CASE WHEN FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN 100-LFAD_TAUX ELSE 0 END) as taux_0, + MAX(CASE WHEN FACD_ID_ORGA_AMO > 0 THEN LFAD_TAUX ELSE 0 END) as taux_1, + MAX(CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN 100-LFAD_TAUX ELSE 0 END) as taux_2, + MAX(CASE WHEN FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN 100-LFAD_TAUX ELSE 0 END) as taux_22, + + SUM(CASE WHEN LFAD_IND_DIRECT <> 1 AND CRN_HON_TO_SEJ <> '1' AND LFAC_CDT_EXC <> 'S' THEN LFAD_MTT_CRN ELSE 0 END) AS montant_comptabilise, + SUM(CASE WHEN LFAD_IND_DIRECT <> 1 AND CRN_HON_TO_SEJ <> '1' AND LFAC_CDT_EXC <> 'S' AND FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN LFAD_MTT_CRN ELSE 0 END) as montant_comptabilise_0, + SUM(CASE WHEN LFAD_IND_DIRECT <> 1 AND CRN_HON_TO_SEJ <> '1' AND LFAC_CDT_EXC <> 'S' AND FACD_ID_ORGA_AMO > 0 THEN LFAD_MTT_CRN ELSE 0 END) as montant_comptabilise_1, + SUM(CASE WHEN LFAD_IND_DIRECT <> 1 AND CRN_HON_TO_SEJ <> '1' AND LFAC_CDT_EXC <> 'S' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC <> tiers_payant_22_orga_id THEN LFAD_MTT_CRN ELSE 0 END) as montant_comptabilise_2, + SUM(CASE WHEN LFAD_IND_DIRECT <> 1 AND CRN_HON_TO_SEJ <> '1' AND LFAC_CDT_EXC <> 'S' AND FACD_ID_ORGA_AMC > 0 AND FACD_ID_ORGA_AMC = tiers_payant_22_orga_id THEN LFAD_MTT_CRN ELSE 0 END) as montant_comptabilise_22 + + FROM prod_hm.FAC_LIGNE_FACTURE + LEFT JOIN activite[PX].t_rubriques_facturation ON (LFAC_ID_PRHO::bigint = t_rubriques_facturation.code_original) + LEFT JOIN activite.t_prestations ON (LFAC_LET_CLE = t_prestations.code) + LEFT JOIN activite[PX].t_medecins_administratifs ON (LFAC_ID_MEDE_EXE::bigint = t_medecins_administratifs.code_original) + LEFT JOIN base.t_actes ON (substring(LFAC_CODE, 1, 7) = t_actes.code) + LEFT JOIN activite[PX].t_protocoles ON (LFAC_ID_FAVO::bigint = t_protocoles.code_original) + LEFT JOIN prod_hm.FAC_LIGNE_FACTURE_DEBITEUR ON LFAC_ID_LFAC = LFAD_ID_LFAC + LEFT JOIN prod_hm.FAC_FACTURE_DEBITEUR ON LFAD_ID_FACD = FACD_ID_FACD + , w_FAC_FACTURE + LEFT JOIN w_FAC_DATEVENTE ON (LECR_ID_FACT_VENT = FACT_ID_FACT) + WHERE LFAC_ID_FACT = FACT_ID_FACT + AND FACT_TYPE <> 'P' + AND LFAC_ID_PRHO <> 0 + + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26; + + + -- Ajout des lignes ESPIC non valorisées + DROP TABLE IF EXISTS w_FAC_FACTURE_last; + CREATE TEMP TABLE w_FAC_FACTURE_last AS + SELECT FACT_ID_SEJO, + (MAX(ARRAY[FACT_DAT_CRE::text, FACT_TYPE, FACT_NUM_FAC::text]))[3]::text AS FACT_NUM_FAC_last, + (MAX(ARRAY[FACT_DAT_CRE::text, FACT_TYPE, lieu_sortie_id::text]))[3]::bigint AS lieu_sortie_id + FROM w_FAC_FACTURE + WHERE FACT_TYPE IN ('A','F') AND + SEJO_IND_BGH = '1' + GROUP BY 1 + HAVING (MAX(ARRAY[FACT_DAT_CRE::text, FACT_TYPE]))[2] = 'F' + ; + + ANALYSE w_FAC_FACTURE_last + ; + + CREATE INDEX w_FAC_FACTURE_last_i1 + ON w_FAC_FACTURE_last + USING btree + (FACT_ID_SEJO); + + INSERT INTO w_FAC_FACTURE_LIGNE_H + SELECT + 0::bigint AS FACT_ID_LFAC, + FACT_NUM_FAC_last AS no_facture, + date(ACSA_DAT_EXE_DEB) AS date_debut, + date(ACSA_DAT_EXE_DEB) AS date_fin, + '20991231'::date AS date_vente, + lieu_sortie_id, + CASE WHEN ACSA_QTE_COEFFICIENT >= 0 THEN 1 ELSE -1 END AS nb_rubrique, + CASE WHEN ACSA_QTE_COEFFICIENT >= 0 THEN 1 ELSE -1 END AS nb_prestations, + ABS(ACSA_QTE_COEFFICIENT) as coefficient, + 1::numeric AS coefficient_mco, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + COALESCE(t_medecins_administratifs.oid::bigint, 0) AS medecin_facture_id, + COALESCE(t_medecins_administratifs.oid::bigint, 0) AS medecin_comptabilise_id, + CASE WHEN ACSA_PRI_UNITAIRE > 0 THEN ACSA_PRI_UNITAIRE ELSE 0.0001 END AS prix_unitaire, + + COALESCE(t_actes.oid::bigint, 0) AS acte_id, + COALESCE(t_protocoles.oid::bigint, 0) AS protocole_id, + to_char(ACSA_DAT_EXE_DEB,'HH24MISS')::numeric AS heure_debut, + '1' AS phase_ccam, + ACSA_COD_ACT_D::integer AS activite_ccam, + ACSA_EXT_DOC AS extension_ccam, + ACSA_MODIF1 AS modificateur_ccam_1, + ACSA_MODIF2 AS modificateur_ccam_2, + ACSA_MODIF3 AS modificateur_ccam_3, + ACSA_MODIF4 AS modificateur_ccam_4, + + 0::numeric AS montant_facture, + 0::numeric AS montant_facture_0, + 0::numeric AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + 0::numeric AS montant_depassement, + + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + + 0::numeric AS taux_0, + 0::numeric AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_22, + + + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22 + + FROM prod_hm.SAD_ACTES_SAISIS + JOIN prod_hm.SAD_ACTIVITE_SAISIES ON ACSA_ID_ASAI = ASAI_ID_ASAI + JOIN prod_hm.IDE_SEJOUR ON ASAI_ID_SEJO = SEJO_ID_SEJO + JOIN w_FAC_FACTURE_last ON SEJO_ID_SEJO = w_FAC_FACTURE_last.FACT_ID_SEJO + LEFT JOIN activite[PX].t_medecins_administratifs ON (ACSA_ID_MEDE::bigint = t_medecins_administratifs.code_original) + LEFT JOIN base.t_actes ON (substring(ASAI_CODE_D, 1, 7) = t_actes.code) + LEFT JOIN activite.t_prestations ON (ACSA_LET_CLE = t_prestations.code) + LEFT JOIN activite[PX].t_rubriques_facturation ON (ACSA_ID_PRHO::bigint = t_rubriques_facturation.code_original) + LEFT JOIN activite[PX].t_protocoles ON (ACSA_ID_FAVO::bigint = t_protocoles.code_original) + WHERE ACSA_ID_PRHO <> 0 AND + ACSA_ASS_NON_PREV = '99' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 + ; + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_9'); + + INSERT INTO activite[PX].p_factures_lignes_h( + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + acte_id, + protocole_id + ) + + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestations, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_sortie_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + 0, + 0, + 0, + 0, + 0, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + acte_id, + protocole_id + + FROM w_FAC_FACTURE_LIGNE_H; + + + UPDATE activite[PX].p_factures_lignes_h + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_factures, activite[PX].p_mouvements_sejour + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + activite[PX].p_factures_lignes_h.date_debut = p_mouvements_sejour.date AND + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_sorties_directes = 1) AND + p_factures_lignes_h.lieu_id <> p_mouvements_sejour.lieu_id; + + -- ajout des lignes non facturées mais dont la prestations doit remonter quand même + + -- Les types de prestations exclues venant du PMSI MCO sont paramétrés + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'HM_ACTES_NON_FAC', + 'Actes avec tarif à 0 à rajouter en cas de non facturation mais présence d''un autre actes effectué par le même médecin', + '', + 'Actes non facturés devant être rajoutés' + WHERE 'HM_ACTES_NON_FAC' NOT IN (SELECT code FROM activite.t_divers); + ; + + DROP TABLE IF EXISTS w_SAD_ACTIVITE_SAISIES_to_add; + CREATE TEMP TABLE w_SAD_ACTIVITE_SAISIES_to_add AS + SELECT + ACSA_ID_SEJO, + ACSA_ID_FAVO, + ACSA_ID_MEDE, + SUM(CASE WHEN ACSA_CODE_D = ANY(string_to_array(valeur,',')) THEN 1 ELSE 0 END), + base.cti_array_accum(distinct CASE WHEN ACSA_CODE_D = ANY(string_to_array(valeur,',')) THEN ACSA_ID_ACSA ELSE null END) AS ids, + base.cti_array_accum(distinct CASE WHEN ACSA_CODE_D = ANY(string_to_array(valeur,',')) THEN ACSA_CODE_D ELSE null END) AS codes, + base.cti_array_accum(distinct CASE WHEN ACSA_CODE_D != ALL(string_to_array(valeur,',')) THEN ACSA_CODE_D ELSE null END) AS assocs + FROM prod_hm.SAD_ACTIVITE_SAISIES + JOIN activite.t_divers ON code = 'HM_ACTES_NON_FAC' + WHERE ACSA_ID_PRHO != 0 + GROUP BY 1,2,3 + HAVING + -- present dans les actes à ajouter + SUM(CASE WHEN ACSA_CODE_D = ANY(string_to_array(valeur,',')) THEN 1 ELSE 0 END) > 0 + -- avec au moins un autre acte saisi par le même médecin pour le même protocole (meme 0) + --AND cardinality(base.cti_array_accum(distinct CASE WHEN ACSA_CODE_D != ALL(string_to_array(valeur,',')) THEN ACSA_CODE_D ELSE null END)) > 1 + ; + + INSERT INTO activite[PX].p_factures_lignes_h( + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + acte_id, + protocole_id + ) + SELECT + p_factures.no_facture, + date(ACSA_DAT_EXE_DEB) AS date_debut, + date(COALESCE(ACSA_DAT_EXE_FIN, ACSA_DAT_EXE_DEB)) AS date_fin, + COALESCE(p_factures_lignes_h.nb_rubrique,1), + COALESCE(p_factures_lignes_h.nb_prestation,1), + ACSA_QTE_COEFFICIENT AS coefficient, + COALESCE(p_factures_lignes_h.coefficient_mco,1), + t_medecins_administratifs.oid AS medecin_facture_id, + t_medecins_administratifs.oid AS medecin_comptabilise_id, + + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + + 0 AS montant_facture, + 0 as montant_facture_0, + 0 as montant_facture_1, + 0 as montant_facture_2, + 0 as montant_facture_22, + 0 as montant_depassement, + + 0 as taux_0, + 0 as taux_1, + 0 as taux_2, + 0 as taux_22, + + ACSA_PRI_UNITAIRE AS prix_unitaire, + COALESCE(p_factures_lignes_h.lieu_id,0) AS lieu_sortie_id, + + 0 AS montant_comptabilise, + 0 as montant_comptabilise_0, + 0 as montant_comptabilise_1, + 0 as montant_comptabilise_2, + 0 as montant_comptabilise_22, + + 0 AS montant_encours, + 0 AS montant_encours_0, + 0 AS montant_encours_1, + 0 AS montant_encours_2, + 0 AS montant_encours_22, + + 0 AS montant_facture_actes_inclus_dans_sejour, + 0 as montant_facture_0_actes_inclus_dans_sejour, + 0 as montant_facture_1_actes_inclus_dans_sejour, + 0 as montant_facture_2_actes_inclus_dans_sejour, + 0 as montant_facture_22_actes_inclus_dans_sejour, + + COALESCE(t_actes.oid::bigint, 0) AS acte_id, + COALESCE(p_factures_lignes_h.protocole_id, t_protocoles.oid,0) + FROM ( + SELECT id, MAX(assoc) AS assoc FROM + (SELECT + unnest(ids) AS id, + unnest(assocs) AS assoc + FROM w_SAD_ACTIVITE_SAISIES_to_add ) + sub + GROUP BY 1 + ) sub + JOIN prod_hm.SAD_ACTIVITE_SAISIES ON id = ACSA_ID_ACSA + LEFT JOIN prod_hm.SAD_ACTES_SAISIS ON ACSA_ID_ASAI = ASAI_ID_ASAI + JOIN activite[PX].p_sejours ON ACSA_ID_SEJO::bigint = p_sejours.code_original AND p_sejours.etat = '' + JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture != 'E' + JOIN activite[PX].t_medecins_administratifs ON ACSA_ID_MEDE::bigint = t_medecins_administratifs.code_original + JOIN activite.t_prestations ON ACSA_LET_CLE = t_prestations.code + JOIN base.t_actes ON (substring(ACSA_CODE_D, 1, 7) = t_actes.code) + LEFT JOIN activite[PX].p_factures_lignes_h verif ON p_factures.no_facture = verif.no_facture AND t_actes.oid = verif.acte_id + LEFT JOIN base.t_actes acte_associe ON (substring(assoc, 1, 7) = acte_associe.code) + LEFT JOIN activite[PX].p_factures_lignes_h ON p_factures.no_facture = p_factures_lignes_h.no_facture AND acte_associe.oid = p_factures_lignes_h.acte_id + LEFT JOIN activite[PX].t_protocoles ON (ACSA_ID_FAVO::bigint = t_protocoles.code_original) + WHERE verif.no_facture IS NULL + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_9'); + + + -- Suppression des tables de travail non utilisées après + + ]]> + + + + 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_1'); + + + + + DROP TABLE IF EXISTS w_FAC_REGLEMENT_LIGNE_H; + + CREATE TEMP TABLE w_FAC_REGLEMENT_LIGNE_H AS + SELECT + FACT_NUM_FAC AS no_facture, + date(ECRI_DAT_ECRITURE) AS date_reglement, + + COALESCE(t_medecins_administratifs.oid::bigint, 0) AS medecin_comptabilise_id, + + SUM(montant_regle) AS montant_regle, + SUM(montant_regle_0) AS montant_regle_0, + SUM(montant_regle_1) AS montant_regle_1, + SUM(montant_regle_2) AS montant_regle_2, + SUM(montant_regle_22) AS montant_regle_22 + + FROM w_FAC_REG + LEFT JOIN activite[PX].t_medecins_administratifs ON (LFAC_ID_MEDE_EXE::bigint = t_medecins_administratifs.code_original) + WHERE 1=1 + AND LFAC_ID_PRHO <> 0 + AND CRN_HON_TO_SEJ <> '1' + AND LFAC_CDT_EXC <> 'S' + AND CPTE_CAGE_CODE = 'CLIENT' + GROUP BY 1,2,3; + + -- Acomptes + INSERT INTO w_FAC_REGLEMENT_LIGNE_H + SELECT + FACT_NUM_FAC AS no_facture, + date(ECRI_DAT_ECRITURE) AS date_reglement, + + 0 AS medecin_comptabilise_id, + + SUM(montant_regle) AS montant_regle, + SUM(montant_regle_0) AS montant_regle_0, + SUM(montant_regle_1) AS montant_regle_1, + SUM(montant_regle_2) AS montant_regle_2, + SUM(montant_regle_22) AS montant_regle_22 + FROM w_FAC_REG_DEB + WHERE 1=1 + AND CPTE_CAGE_CODE IN ('ACO', 'CLIRMB') + AND LECR_PART = 'HON' + GROUP BY 1,2,3 + ; + + + -- Ecritures clients non ventilees (solde centimes) + DROP TABLE IF EXISTS w_FAC_REGLEMENT_LIGNE_H_non_ventilees; + CREATE TEMP TABLE w_FAC_REGLEMENT_LIGNE_H_non_ventilees AS + SELECT + FACT_NUM_FAC AS no_facture, + date(ECRI_DAT_ECRITURE) AS date_reglement, + + 0 AS medecin_comptabilise_id, + + SUM(montant_regle) AS montant_regle, + SUM(montant_regle_0) AS montant_regle_0, + SUM(montant_regle_1) AS montant_regle_1, + SUM(montant_regle_2) AS montant_regle_2, + SUM(montant_regle_22) AS montant_regle_22 + + FROM w_FAC_REG_DEB + LEFT JOIN prod_hm.CCL_VENTILATION ON CCL_VENTILATION.VENT_ID_LECR = w_FAC_REG_DEB.LECR_ID_LECR + WHERE 1=1 + AND CPTE_CAGE_CODE IN ('CLIENT') + AND LECR_PART = 'HON' + AND CCL_VENTILATION.VENT_ID_LECR IS NULL + + GROUP BY 1,2,3 + ; + + UPDATE activite[PX].p_factures SET + montant_regle_h = montant_regle + subview.montant_regle, + montant_regle_0_h = montant_regle_0_h + subview.montant_regle_0, + montant_regle_1_h = montant_regle_1_h + subview.montant_regle_1, + montant_regle_2_h = montant_regle_2_h + subview.montant_regle_2, + montant_regle_22_h = montant_regle_22_h + subview.montant_regle_22 + FROM + ( + SELECT no_facture, + SUM(montant_regle) AS montant_regle, + SUM(montant_regle_0) AS montant_regle_0, + SUM(montant_regle_1) AS montant_regle_1, + SUM(montant_regle_2) AS montant_regle_2, + SUM(montant_regle_22) AS montant_regle_22 + FROM w_FAC_REGLEMENT_LIGNE_H_non_ventilees + GROUP BY 1 + ) subview + WHERE subview.no_facture = p_factures.no_facture + ; + + INSERT INTO w_FAC_REGLEMENT_LIGNE_H + SELECT * + FROM w_FAC_REGLEMENT_LIGNE_H_non_ventilees + ; + + -- Comptes clients (REG) + + UPDATE activite[PX].p_factures_soldes_h + SET + montant_regle = w_FAC_REGLEMENT_LIGNE_H.montant_regle, + montant_regle_0 = w_FAC_REGLEMENT_LIGNE_H.montant_regle_0, + montant_regle_1 = w_FAC_REGLEMENT_LIGNE_H.montant_regle_1, + montant_regle_2 = w_FAC_REGLEMENT_LIGNE_H.montant_regle_2, + montant_regle_22 = w_FAC_REGLEMENT_LIGNE_H.montant_regle_22 + FROM w_FAC_REGLEMENT_LIGNE_H + WHERE p_factures_soldes_h.no_facture = w_FAC_REGLEMENT_LIGNE_H.no_facture + AND p_factures_soldes_h.date_comptable = w_FAC_REGLEMENT_LIGNE_H.date_reglement + AND p_factures_soldes_h.medecin_comptabilise_id = w_FAC_REGLEMENT_LIGNE_H.medecin_comptabilise_id; + + + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + date_comptable, + medecin_comptabilise_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + w_FAC_REGLEMENT_LIGNE_H.no_facture, + w_FAC_REGLEMENT_LIGNE_H.date_reglement, + w_FAC_REGLEMENT_LIGNE_H.medecin_comptabilise_id, + 0, + 0, + 0, + 0, + 0, + w_FAC_REGLEMENT_LIGNE_H.montant_regle, + w_FAC_REGLEMENT_LIGNE_H.montant_regle_0, + w_FAC_REGLEMENT_LIGNE_H.montant_regle_1, + w_FAC_REGLEMENT_LIGNE_H.montant_regle_2, + w_FAC_REGLEMENT_LIGNE_H.montant_regle_22 + FROM w_FAC_REGLEMENT_LIGNE_H + LEFT JOIN activite[PX].p_factures_soldes_h + ON (p_factures_soldes_h.no_facture = w_FAC_REGLEMENT_LIGNE_H.no_facture + AND p_factures_soldes_h.date_comptable = w_FAC_REGLEMENT_LIGNE_H.date_reglement + AND p_factures_soldes_h.medecin_comptabilise_id = w_FAC_REGLEMENT_LIGNE_H.medecin_comptabilise_id) + WHERE date_reglement IS NOT NULL AND p_factures_soldes_h.no_facture IS NULL AND + ( + w_FAC_REGLEMENT_LIGNE_H.montant_regle <> 0 OR + w_FAC_REGLEMENT_LIGNE_H.montant_regle_0 <> 0 OR + w_FAC_REGLEMENT_LIGNE_H.montant_regle_1 <> 0 OR + w_FAC_REGLEMENT_LIGNE_H.montant_regle_2 <> 0 OR + w_FAC_REGLEMENT_LIGNE_H.montant_regle_22 <> 0 + ) + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_8'); + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_FAC_REGLEMENT_LIGNE_H CASCADE; + DROP TABLE IF EXISTS w_FAC_FACTURE_LIGNE_H CASCADE; + + + ]]> + + + + 'P' THEN p_factures.no_facture ELSE null END) AS no_facture_reference_last, + MAX(CASE WHEN type_facture <> '1' AND type_facture <> 'P' THEN p_factures.no_facture ELSE null END) AS no_facture_reference_last_2, + MAX(p_factures.oid) AS facture_id_last, + MAX(CASE WHEN type_facture = '0' AND type_facture <> 'P' THEN p_factures.oid ELSE null END) AS facture_id_reference_last, + MAX(CASE WHEN type_facture <> '1' AND type_facture <> 'P' THEN p_factures.oid ELSE null END) AS facture_id_reference_last_2 + FROM activite[PX].p_factures + WHERE type_facture <> 'P' + GROUP BY 1,2; + + CREATE INDEX w_sejours_facture_reference_i1 + ON w_sejours_facture_reference + USING btree + (no_sejour); + + UPDATE w_sejours_facture_reference + SET facture_id_last = p_factures_references.oid + FROM activite[PX].p_factures p_factures_references + WHERE w_sejours_facture_reference.no_facture_last = p_factures_references.no_facture + AND w_sejours_facture_reference.facture_id_last <> p_factures_references.oid; + + + UPDATE w_sejours_facture_reference + SET facture_id_reference_last = p_factures_references.oid + FROM activite[PX].p_factures p_factures_references + WHERE w_sejours_facture_reference.no_facture_reference_last = p_factures_references.no_facture + AND w_sejours_facture_reference.facture_id_reference_last <> p_factures_references.oid; + + UPDATE w_sejours_facture_reference + SET facture_id_reference_last_2 = p_factures_references.oid + FROM activite[PX].p_factures p_factures_references + WHERE w_sejours_facture_reference.no_facture_reference_last_2 = p_factures_references.no_facture + AND w_sejours_facture_reference.facture_id_reference_last_2 <> p_factures_references.oid; + + + + UPDATE activite[PX].p_factures + SET + no_facture_reference = COALESCE(no_facture_reference_last, no_facture_reference_last_2, no_facture_last), + facture_reference_id = COALESCE(facture_id_reference_last, facture_id_reference_last_2, facture_id_last) + FROM w_sejours_facture_reference + WHERE p_factures.no_sejour = w_sejours_facture_reference.no_sejour AND + p_factures.date_debut BETWEEN w_sejours_facture_reference.date_debut AND w_sejours_facture_reference.date_fin AND + ( + no_facture_reference IS DISTINCT FROM COALESCE(no_facture_reference_last, no_facture_reference_last_2, no_facture_last) OR + facture_reference_id IS DISTINCT FROM COALESCE(facture_id_reference_last, facture_id_reference_last_2, facture_id_last) + ); + + + + + UPDATE activite[PX].p_factures + SET no_facture_reference = no_facture + WHERE (no_facture_reference IS NULL OR no_facture_reference = ''); + + + UPDATE activite[PX].p_factures + SET type_facture = '0' + WHERE p_factures.type_facture = '2' AND + p_factures.no_facture = p_factures.no_facture_reference; + + UPDATE activite[PX].p_factures + SET type_facture = '2' + WHERE p_factures.type_facture = '0' AND + p_factures.no_facture <> p_factures.no_facture_reference; + + UPDATE activite[PX].p_factures + SET facture_reference_id = p_factures_references.oid + FROM activite[PX].p_factures p_factures_references + WHERE p_factures.no_facture_reference = p_factures_references.no_facture + AND p_factures.facture_reference_id <> p_factures_references.oid; + + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_sejours_facture_reference CASCADE; + + + -- Pour le budget global, il peut y avoir des lignes de factures facturées non comptabilisées avec montant aussi issu du pmsi + -- Il faut les enlever + DROP TABLE IF EXISTS w_factures_lignes_c_factord; + CREATE TEMP TABLE w_factures_lignes_c_factord AS + SELECT no_sejour, prestation_id + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].t_prestations ON prestation_id = t_prestations.oid + GROUP BY 1,2 + HAVING SUM(CASE WHEN p_factures_lignes_c.no_facture LIKE '%BG' THEN montant_facture_1 ELSE 0 END) <> 0 AND + SUM(CASE WHEN p_factures_lignes_c.no_facture NOT LIKE '%BG' AND montant_comptabilise_1 = 0 THEN montant_facture_1 ELSE 0 END) <> 0 + ORDER BY 1,2 + ; + + UPDATE activite[PX].p_factures_lignes_c + SET montant_facture_1 = 0, montant_facture = p_factures_lignes_c.montant_facture - p_factures_lignes_c.montant_facture_1 + FROM activite[PX].p_factures, + w_factures_lignes_c_factord + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + w_factures_lignes_c_factord.no_sejour = p_factures.no_sejour AND + p_factures_lignes_c.prestation_id = w_factures_lignes_c_factord.prestation_id AND + p_factures_lignes_c.no_facture NOT LIKE '%BG' AND + p_factures_lignes_c.montant_facture_1 <> 0 AND + p_factures_lignes_c.montant_comptabilise_1 = 0 + ; + + DELETE FROM activite[PX].p_factures_lignes_c + USING activite[PX].p_factures, + w_factures_lignes_c_factord + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + w_factures_lignes_c_factord.no_sejour = p_factures.no_sejour AND + p_factures_lignes_c.prestation_id = w_factures_lignes_c_factord.prestation_id AND + p_factures_lignes_c.no_facture NOT LIKE '%BG' AND + p_factures_lignes_c.montant_facture = 0 AND + p_factures_lignes_c.montant_comptabilise = 0 + ; + + + -- BG. Lignes PJ non comptabilisées avec GHS a supprimer + DROP TABLE IF EXISTS w_PJ_trop; + CREATE TEMP TABLE w_PJ_trop AS + SELECT p_factures.no_sejour, + MAX(CASE WHEN t_prestations.code = 'PJ' THEN prestation_id ELSE 0 END) AS pj_prestation_id, + SUM(CASE WHEN t_prestations.code = 'PJ' THEN montant_facture ELSE 0 END) AS pj_fac, + SUM(CASE WHEN t_prestations.code = 'PJ' THEN montant_comptabilise ELSE 0 END) AS pj_cpt, + SUM(CASE WHEN t_prestations.code = 'GHS' THEN montant_facture ELSE 0 END) AS ghs_fac + FROm activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE '[ENV_TYPEETS]' IN ('2','3') AND + t_prestations.code IN ('GHS','PJ') + GROUP BY 1 + HAVING + MAX(CASE WHEN p_factures.no_facture LIKE '%BG' THEN '1' ELSE '0' END) = '1' AND + SUM(CASE WHEN t_prestations.code = 'PJ' THEN montant_facture ELSE 0 END) <> + SUM(CASE WHEN t_prestations.code = 'PJ' THEN montant_comptabilise ELSE 0 END) AND + SUM(CASE WHEN t_prestations.code = 'GHS' THEN montant_facture ELSE 0 END) > 0 + ; + + ANALYSE w_PJ_trop + ; + + DELETE FROM activite[PX].p_factures_lignes_c + USING activite[PX].p_factures, + w_PJ_trop + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = w_PJ_trop.no_sejour AND + p_factures_lignes_c.prestation_id = pj_prestation_id AND + p_factures.no_facture NOT LIKE '%BG' + ; + + UPDATE activite[PX].p_factures SET + montant_facture_c = subview.montant_facture, + montant_facture_0_c = subview.montant_facture_0, + montant_facture_1_c = subview.montant_facture_1, + montant_facture_2_c = subview.montant_facture_2, + montant_facture_22_c = subview.montant_facture_22 + FROM + ( + SELECT p_factures.no_facture, + COALESCE(SUM(montant_facture),0) AS montant_facture, + COALESCE(SUM(montant_facture_0),0) AS montant_facture_0, + COALESCE(SUM(montant_facture_1),0) AS montant_facture_1, + COALESCE(SUM(montant_facture_2),0) AS montant_facture_2, + COALESCE(SUM(montant_facture_22),0) AS montant_facture_22 + FROM activite[PX].p_factures + LEFT JOIN activite[PX].p_factures_lignes_c ON p_factures_lignes_c.no_facture = p_factures.no_facture + WHERE p_factures.no_sejour IN (SELECT no_sejour FROM w_PJ_trop) AND + p_factures.no_facture NOT LIKE '%BG' + GROUP BY 1 + ) subview + WHERE p_factures.no_sejour IN (SELECT no_sejour FROM w_PJ_trop) AND + subview.no_facture = p_factures.no_facture + ; + + + ]]> + + + + + + + + '' + ) subview + WHERE CCL_LIGNE_ECRITURE.LECR_ID_ECRI = subview.LECR_ID_ECRI AND + CCL_LIGNE_ECRITURE.LECR_PART = '' + ; + + + + + + DROP TABLE IF EXISTS w_ecriture_comptable; + CREATE TEMP TABLE w_ecriture_comptable AS + SELECT + LECR_ID_LECR, + LECR_ID_LECR::text AS code_original, + date(ECRI_DAT_ECRITURE) AS date_comptable, + CASE + WHEN t_journal.type_journal = 'VE' AND CPTE_CODE LIKE '411%' THEN 'VCLI' + WHEN t_journal.type_journal = 'VE' AND CPTE_CODE LIKE '412%' THEN 'VCLI' + WHEN t_journal.type_journal = 'VE' AND CPTE_CODE LIKE '445%' THEN 'VTVA' + WHEN t_journal.type_journal = 'VE' AND LECR_PART NOT IN ('HON','HOD','HOL') THEN 'VPRD' + WHEN t_journal.type_journal = 'VE' AND LECR_PART IN ('HON','HOD','HOL') THEN 'VHON' + WHEN CPTE_CODE LIKE '758%' THEN 'PEPR' + WHEN CPTE_CODE LIKE '658%' THEN 'PEPR' + WHEN t_journal.type_journal <> 'VE' AND CPTE_CODE LIKE '468%' THEN 'ATT' + WHEN t_journal.type_journal <> 'VE' AND CPTE_CODE LIKE '471%' THEN 'ATT' + WHEN t_journal.type_journal <> 'VE' AND CPTE_CODE LIKE '411%' AND ECRI_LIBELLE NOT ILIKE '%NOEMIE%' THEN 'RCLI' + WHEN t_journal.type_journal <> 'VE' AND CPTE_CODE LIKE '412%' AND ECRI_LIBELLE NOT ILIKE '%NOEMIE%' THEN 'RCLI' + WHEN t_journal.type_journal <> 'VE' AND CPTE_CODE LIKE '411%' AND ECRI_LIBELLE ILIKE '%NOEMIE%' THEN 'RNOE' + WHEN t_journal.type_journal <> 'VE' AND CPTE_CODE LIKE '412%' AND ECRI_LIBELLE ILIKE '%NOEMIE%' THEN 'RNOE' + WHEN t_journal.type_journal <> 'VE' AND CPTE_CODE LIKE '419%' THEN 'ACPT' + WHEN t_journal.type_journal <> 'VE' AND CPTE_CODE LIKE '51%' THEN 'BANQ' + WHEN t_journal.type_journal <> 'VE' AND CPTE_CODE LIKE '531%' THEN 'BANQ' + WHEN t_journal.type_journal <> 'VE' AND CPTE_CODE LIKE '466%' THEN 'PHON' + ELSE LIBE_CODE END AS type_ecriture, + ECRI_ID_ECRI::text AS piece, + CASE WHEN LECR_PART IN ('HON','HOD','HOL') THEN 'H' ELSE 'C' END AS clinique_honoraire, + COALESCE(t_compte.oid,0) AS compte_id, + COALESCE(t_journal.oid,0) AS journal_id, + COALESCE(p_sejours.oid,0::bigint) AS sejour_id, + COALESCE(p_sejours.no_sejour,''::text) AS no_sejour, + COALESCE(p_factures.oid,0::bigint) AS facture_id, + COALESCE(FACT_NUM_FAC::text,'')::text AS no_facture, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_id, + 0::bigint AS tiers_payant_id, + ECRI_LIBELLE AS texte, + CASE WHEN LECR_SENS = 'C' THEN LECR_MONTANT ELSE 0 END AS montant_credit, + CASE WHEN LECR_SENS = 'D' THEN LECR_MONTANT ELSE 0 END AS montant_debit, + CASE + WHEN t_journal.type_journal = 'VE' THEN 'VENTE' + WHEN t_journal.code LIKE 'OD%' THEN 'OD' + ELSE '?'||t_journal.code END AS type_piece, + CASE + WHEN LIBE_CODE = 'ESP' THEN 'ESP' + WHEN LIBE_CODE = 'RCE' THEN 'ESP' + WHEN LIBE_CODE = 'CH' THEN 'CHQ' + WHEN LIBE_CODE = 'RCH' THEN 'CHQ' + WHEN LIBE_CODE = 'CB' THEN 'CB' + WHEN LIBE_CODE = 'RCB' THEN 'CB' + WHEN LIBE_CODE = 'VRT' THEN 'VIR' + WHEN LIBE_CODE = 'VRTP' THEN 'VIR' + ELSE ''::text END AS mode_reglement_code, + t_compte.taux_tva + FROM prod_hm.CCL_ECRITURE + JOIN prod_hm.CCL_LIGNE_ECRITURE ON ECRI_ID_ECRI = LECR_ID_ECRI + JOIN prod_hm.CCL_COMPTE ON LECR_ID_CPTE = CPTE_ID_CPTE + LEFT JOIN prod_hm.FAC_FACTURE_DEBITEUR ON LECR_ID_FACD = FACD_ID_FACD + LEFT JOIN prod_hm.FAC_FACTURE ON FACD_ID_FACT = FACT_ID_FACT + LEFT JOIN prod_hm.CCL_LIBELLE ON ECRI_ID_LIBE = LIBE_ID_LIBE + JOIN activite[PX].t_journal ON ECRI_ID_JOUR = t_journal.code_original + LEFT JOIN activite[PX].t_compte ON CPTE_CODE = t_compte.code + LEFT JOIN activite[PX].p_sejours ON LECR_ID_SEJO = p_sejours.code_original + LEFT JOIN activite[PX].p_factures ON FACT_NUM_FAC = p_factures.no_facture + LEFT JOIN activite[PX].t_medecins_administratifs ON LECR_ID_MEDE::text = t_medecins_administratifs.code_original + WHERE ECRI_DAT_SUP IS NULL AND + ECRI_ID_ETAB IN ([ID_ETAB]) AND + ECRI_DAT_ECRITURE >= '[ENV_ADM_ANNEEDEBUT]0101' + ; + + ANALYSE w_ecriture_comptable + ; + + + TRUNCATE activite[PX].p_ecriture_comptable; + INSERT INTO activite[PX].p_ecriture_comptable( + code_original, + date_comptable, + type_ecriture, + type_piece, + piece, + clinique_honoraire, + compte_id, + journal_id, + sejour_id, + no_sejour, + facture_id, + no_facture, + medecin_id, + tiers_payant_id, + texte, + montant_credit, + montant_debit, + est_comptabilise, + mode_reglement_code, + taux_tva) + SELECT + code_original, + date_comptable, + type_ecriture, + type_piece, + piece, + clinique_honoraire, + compte_id, + journal_id, + sejour_id, + no_sejour, + facture_id, + no_facture, + medecin_id, + tiers_payant_id, + texte, + montant_credit, + montant_debit, + '1'::text AS est_comptabilise, + mode_reglement_code, + taux_tva + FROM w_ecriture_comptable + ; + + + + ANALYSE activite[PX].p_ecriture_comptable + ; + + UPDATE activite[PX].p_ecriture_comptable + SET code_erreur = 'EQP' + FROM + ( + SELECT provider_id, clinique_honoraire, piece + FROM activite[PX].p_ecriture_comptable + GROUP BY 1,2,3 + HAVING SUM(montant_debit-montant_credit) <> 0 + ) subview + WHERE p_ecriture_comptable.provider_id = subview.provider_id AND + p_ecriture_comptable.piece = subview.piece AND + p_ecriture_comptable.clinique_honoraire = subview.clinique_honoraire + ; + + + + UPDATE activite[PX].p_ecriture_comptable + SET code_erreur = 'FAC' + FROM + ( + SELECT p_ecriture_comptable.provider_id AS provider_id, + p_ecriture_comptable.piece AS piece, + p_ecriture_comptable.clinique_honoraire AS clinique_honoraire + FROM activite[PX].p_ecriture_comptable + JOIN + ( + SELECT p_ecriture_comptable.provider_id, + p_ecriture_comptable.no_facture, + CASE WHEN round(SUM(CASE WHEN type_ecriture IN ('VPRD','VTVA') THEN montant_credit-montant_debit ELSE 0 END),2) IS DISTINCT FROM round(MAX(montant_comptabilise_c),2) THEN '1' ELSE '0' END AS erreur_vente_c, + CASE WHEN round(SUM(CASE WHEN type_ecriture IN ('VHON','VHOI') THEN montant_credit-montant_debit ELSE 0 END),2) IS DISTINCT FROM round(MAX(montant_comptabilise_h),2) THEN '1' ELSE '0' END AS erreur_vente_h + FROM activite[PX].p_ecriture_comptable + LEFT JOIN activite[PX].p_factures ON p_factures.no_facture = p_ecriture_comptable.no_facture + WHERE type_ecriture IN ('VPRD','VTVA','VHON','VHOI') + GROUP BY 1,2 + ) subview ON + p_ecriture_comptable.provider_id = subview.provider_id AND + p_ecriture_comptable.no_facture = subview.no_facture + WHERE p_ecriture_comptable.type_ecriture IN ('VPRD','VTVA','VHON','VHOI','VCLI') AND + ( + p_ecriture_comptable.clinique_honoraire = 'C' AND erreur_vente_c = '1' OR + p_ecriture_comptable.clinique_honoraire = 'H' AND erreur_vente_h = '1' + ) + GROUP BY 1,2,3 + ) subview + WHERE p_ecriture_comptable.provider_id = subview.provider_id AND + p_ecriture_comptable.piece = subview.piece AND + p_ecriture_comptable.clinique_honoraire = subview.clinique_honoraire + ; + + -- Il y a des pièces sans TVA + UPDATE activite[PX].p_ecriture_comptable + SET taux_tva = 0 + WHERE piece IN ( + SELECT piece + FROM activite[PX].p_ecriture_comptable + JOIN activite[PX].t_compte on compte_id = t_compte.oid + GROUP BY 1 + HAVING MAX(CASE WHEN t_compte.code LIKE '445%' THEN '1' ELSE '0' END) = '0' AND + MAX(CASE WHEN t_compte.code NOT LIKE '445%' THEN p_ecriture_comptable.taux_tva ELSE 0 END) > 0 + ) + ; + + + ]]> + + + + 0 OR LECR_ID_LFAD <> 0) THEN CASE WHEN LECR_SENS = 'D' THEN 0 - LECR_MONTANT ELSE LECR_MONTANT END ELSE 0 END) AS montant_reglements_c, + SUM(CASE WHEN LECR_PART = 'SFT' THEN CASE WHEN LECR_SENS = 'D' THEN 0 - LECR_MONTANT ELSE LECR_MONTANT END ELSE 0 END) AS montant_solde_client_c, + SUM(CASE WHEN LECR_PART = 'HON' AND JOUR_ISJVT = '1' THEN CASE WHEN LECR_SENS = 'D' THEN LECR_MONTANT ELSE 0 - LECR_MONTANT END ELSE 0 END) AS montant_ventes_h, + SUM(CASE WHEN LECR_PART = 'HON' AND JOUR_ISJVT = '0' AND (LECR_ID_FACD <> 0 OR LECR_ID_LFAD <> 0) THEN CASE WHEN LECR_SENS = 'D' THEN 0 - LECR_MONTANT ELSE LECR_MONTANT END ELSE 0 END) AS montant_reglements_h, + SUM(CASE WHEN LECR_PART = 'HON' THEN CASE WHEN LECR_SENS = 'D' THEN 0 - LECR_MONTANT ELSE LECR_MONTANT END ELSE 0 END) AS montant_solde_client_h + FROM prod_hm.CCL_LIGNE_ECRITURE + JOIN prod_hm.CCL_ECRITURE ON LECR_ID_ECRI = ECRI_ID_ECRI + JOIN w_CCL_JOURNAL ON ECRI_ID_JOUR = JOUR_ID_JOUR + JOIN w_CCL_COMPTE ON LECR_ID_CPTE = CPTE_ID_CPTE + WHERE + ECRI_DAT_SUP IS NULL AND + ECRI_ID_ETAB IN ([ID_ETAB]) AND + CPTE_CAGE_CODE IN ('CLIENT' , 'ACO85', 'ACO', 'CLIRMB') AND + ECRI_DAT_ECRITURE >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1 + ORDER BY 1; + + + TRUNCATE activite[PX].p_factures_comptables; + + INSERT INTO activite[PX].p_factures_comptables( + no_facture, + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_ventes_h, + montant_reglements_h + ) + SELECT + COALESCE(FACT_NUM_FAC,'00000000'), + date(ECRI_DAT_ECRITURE) AS date_comptable, + SUM(CASE WHEN LECR_PART = 'SFT' AND JOUR_ISJVT = '1' THEN CASE WHEN LECR_SENS = 'D' THEN LECR_MONTANT ELSE 0 - LECR_MONTANT END ELSE 0 END) AS montant_ventes_c, + SUM(CASE WHEN LECR_PART = 'SFT' AND JOUR_ISJVT = '0' AND (LECR_ID_FACD <> 0 OR LECR_ID_LFAD <> 0) THEN CASE WHEN LECR_SENS = 'D' THEN 0 - LECR_MONTANT ELSE LECR_MONTANT END ELSE 0 END) AS montant_reglements_c, + SUM(CASE WHEN LECR_PART = 'HON' AND JOUR_ISJVT = '1' THEN CASE WHEN LECR_SENS = 'D' THEN LECR_MONTANT ELSE 0 - LECR_MONTANT END ELSE 0 END) AS montant_ventes_h, + SUM(CASE WHEN LECR_PART = 'HON' AND JOUR_ISJVT = '0' AND (LECR_ID_FACD <> 0 OR LECR_ID_LFAD <> 0) THEN CASE WHEN LECR_SENS = 'D' THEN 0 - LECR_MONTANT ELSE LECR_MONTANT END ELSE 0 END) AS montant_reglements_h + FROM prod_hm.CCL_LIGNE_ECRITURE + JOIN prod_hm.CCL_ECRITURE ON LECR_ID_ECRI = ECRI_ID_ECRI + JOIN w_CCL_JOURNAL ON ECRI_ID_JOUR = JOUR_ID_JOUR + JOIN w_CCL_COMPTE ON LECR_ID_CPTE = CPTE_ID_CPTE + LEFT JOIN prod_hm.FAC_FACTURE_DEBITEUR ON LECR_ID_FACD = FACD_ID_FACD + LEFT JOIN prod_hm.FAC_FACTURE ON FACD_ID_FACT = FACT_ID_FACT + WHERE ECRI_DAT_SUP IS NULL AND + ECRI_ID_ETAB IN ([ID_ETAB]) AND + CPTE_CAGE_CODE IN ('CLIENT' , 'ACO85', 'ACO', 'CLIRMB') AND + ECRI_DAT_ECRITURE >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1,2 + HAVING + SUM(CASE WHEN LECR_PART = 'SFT' AND JOUR_ISJVT = '1' THEN CASE WHEN LECR_SENS = 'D' THEN LECR_MONTANT ELSE 0 - LECR_MONTANT END ELSE 0 END) <> 0 OR + SUM(CASE WHEN LECR_PART = 'SFT' AND JOUR_ISJVT = '0' AND (LECR_ID_FACD <> 0 OR LECR_ID_LFAD <> 0) THEN CASE WHEN LECR_SENS = 'D' THEN 0 - LECR_MONTANT ELSE LECR_MONTANT END ELSE 0 END) <> 0 OR + SUM(CASE WHEN LECR_PART = 'HON' AND JOUR_ISJVT = '1' THEN CASE WHEN LECR_SENS = 'D' THEN LECR_MONTANT ELSE 0 - LECR_MONTANT END ELSE 0 END) <> 0 OR + SUM(CASE WHEN LECR_PART = 'HON' AND JOUR_ISJVT = '0' AND (LECR_ID_FACD <> 0 OR LECR_ID_LFAD <> 0) THEN CASE WHEN LECR_SENS = 'D' THEN 0 - LECR_MONTANT ELSE LECR_MONTANT END ELSE 0 END) <> 0 + ORDER BY 1,2; + + + + ]]> + + + + + + + + + + + '00'; + + UPDATE activite[PX].t_tiers_payant SET + code = ORGA_CODE, + texte = ORGA_NOM, + texte_court = ORGA_NOM + FROM prod_hm.IDE_ORGANISME + WHERE t_tiers_payant.code_original = ORGA_ID_ORGA::bigint AND + ( + code IS DISTINCT FROM ORGA_CODE OR + texte IS DISTINCT FROM ORGA_NOM OR + texte_court IS DISTINCT FROM ORGA_NOM + ) + ; + + ]]> + + + + 0 + GROUP BY 1 + ; + + DROP TABLE IF EXISTS w_medecins; + CREATE TEMP TABLE w_medecins AS + SELECT MEDE_ID_MEDE::bigint, + CASE WHEN MEDE_CODE <> '' AND MEDE_CODE IS NOT NULL THEN MEDE_CODE ELSE MEDE_ID_MEDE::text END AS MEDE_CODE, + base.cti_soundex_nom(MEDE_NOM_USU) AS MEDE_NOM_USU_SOUNDEX, + base.cti_soundex_nom(COALESCE(MEDE_PRENOM,'')) AS MEDE_PRENOM_SOUNDEX, + MEDE_NOM_USU, + COALESCE(MEDE_PRENOM,'') AS MEDE_PRENOM, + COALESCE(MEDI_ADELI,'') AS MEDI_ADELI, + MEDE_ID_CAGE::bigint, + COALESCE(CAGE_CODE,'') AS CAGE_CODE, + COALESCE(t_medecins_administratifs.medecin_id,0) as medecin_id + FROM prod_hm.IDE_MEDECIN + LEFT JOIN (SELECT MEDI_ID_MEDE, MAX(MEDI_ADELI) AS MEDI_ADELI, MAX(MEDI_ID_CAGE) AS MEDI_ID_CAGE FROM prod_hm.IDE_MEDECIN_IMMAT WHERE MEDI_ID_ETAB IN ([ID_ETAB]) GROUP BY 1) subview + ON (MEDE_ID_MEDE = MEDI_ID_MEDE) + LEFT JOIN activite[PX].t_medecins_administratifs ON MEDE_ID_MEDE = t_medecins_administratifs.code_original + LEFT JOIN prod_hm.BAS_CATALOGUE_GEN ON MEDI_ID_CAGE = CAGE_ID_CAGE + WHERE MEDE_ID_MEDE = ANY(SELECT MEDE_ID_USED FROM w_medecins_USED); + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.MEDE_NOM_USU, w_medecins.MEDE_PRENOM, w_medecins.MEDI_ADELI, 0 FROM + (SELECT SUBSTR(MEDE_NOM_USU_SOUNDEX, 1, 8) AS MEDE_NOM_USU_SOUNDEX, SUBSTR(MEDE_PRENOM_SOUNDEX, 1, 8) AS MEDE_PRENOM_SOUNDEX, MEDI_ADELI, MIN(MEDE_ID_MEDE) AS MEDE_ID_MEDE + FROM w_medecins + GROUP BY 1,2,3) subview, w_medecins + WHERE w_medecins.MEDE_ID_MEDE = subview.MEDE_ID_MEDE + AND subview.MEDE_NOM_USU_SOUNDEX || ',' || subview.MEDE_PRENOM_SOUNDEX || ',' || subview.MEDI_ADELI NOT IN + (SELECT substr(base.cti_soundex_nom(nom),1,8) || ',' || substr(base.cti_soundex_nom(prenom),1,8) || ',' || numero_ordre FROM base.t_medecins); + + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.MEDE_NOM_USU, w_medecins.MEDE_PRENOM, w_medecins.MEDI_ADELI, 0 FROM + (SELECT MEDE_NOM_USU_SOUNDEX, MEDE_PRENOM_SOUNDEX, MIN(MEDE_ID_MEDE) AS MEDE_ID_MEDE + FROM w_medecins + GROUP BY 1,2) subview, w_medecins + WHERE w_medecins.MEDE_ID_MEDE = subview.MEDE_ID_MEDE + AND subview.MEDE_NOM_USU_SOUNDEX || ',' || subview.MEDE_PRENOM_SOUNDEX NOT IN + (SELECT base.cti_soundex_nom(nom) || ',' || base.cti_soundex_nom(prenom) FROM base.t_medecins); + + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT substr(base.cti_soundex_nom(nom),1,8) as nom , substr(base.cti_soundex_nom(prenom),1,8) as prenom, numero_ordre, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2,3) subview + WHERE SUBSTR(MEDE_NOM_USU_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(MEDE_PRENOM_SOUNDEX, 1, 8) = subview.prenom + AND MEDI_ADELI = subview.numero_ordre + AND w_medecins.medecin_id = 0; + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT base.cti_soundex_nom(nom) as nom , base.cti_soundex_nom(prenom) as prenom, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2) subview + WHERE SUBSTR(MEDE_NOM_USU_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(MEDE_PRENOM_SOUNDEX, 1, 8) = subview.prenom + AND w_medecins.medecin_id = 0; + + INSERT INTO activite[PX].t_medecins_administratifs(code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT DISTINCT MEDE_ID_MEDE, MEDE_CODE, MEDE_NOM_USU, MEDE_PRENOM, COALESCE(t_specialites_medecin.oid,0), medecin_id + FROM w_medecins + LEFT JOIN base.t_specialites_medecin ON (MEDE_ID_CAGE::bigint = t_specialites_medecin.code_original) + WHERE MEDE_ID_MEDE NOT IN (SELECT code_original FROM activite[PX].t_medecins_administratifs); + + UPDATE activite[PX].t_medecins_administratifs + SET nom = MEDE_NOM_USU, + prenom = MEDE_PRENOM, + specialite_id = COALESCE(t_specialites_medecin.oid,t_specialites_medecin_2.oid,0), + medecin_id = w_medecins.medecin_id + FROM w_medecins + LEFT JOIN base.t_specialites_medecin ON (CAGE_CODE || '..' = t_specialites_medecin.code) + LEFT JOIN base.t_specialites_medecin t_specialites_medecin_2 ON (CAGE_CODE = t_specialites_medecin_2.code) + WHERE w_medecins.MEDE_ID_MEDE = t_medecins_administratifs.code_original + AND ( + t_medecins_administratifs.nom <> MEDE_NOM_USU OR + t_medecins_administratifs.prenom <> MEDE_PRENOM OR + t_medecins_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid,t_specialites_medecin_2.oid,0) OR + t_medecins_administratifs.medecin_id <> w_medecins.medecin_id + ); + + + + UPDATE activite[PX].t_medecins_administratifs + SET specialite_id = subview.specialite_medecin_id + FROM + ( + SELECT t_medecins_administratifs.oid,t_specialites_medecin.oid AS specialite_medecin_id + FROM activite[PX].t_medecins_administratifs + JOIN base.t_specialites_medecin t_specialites_medecin_2 ON specialite_id = t_specialites_medecin_2.oid + JOIN base.t_specialites_medecin ON t_specialites_medecin_2.code || '..' = t_specialites_medecin.code + ) subview + WHERE t_medecins_administratifs.oid = subview.oid; + + UPDATE base.t_medecins SET specialite_id = subview.specialite_id FROM + (SELECT t_medecins.oid, MIN(t_medecins_administratifs.specialite_id) as specialite_id + FROM base.t_medecins, activite[PX].t_medecins_administratifs , base.t_specialites_medecin + WHERE t_medecins.oid = t_medecins_administratifs.medecin_id + AND t_medecins_administratifs.specialite_id = t_specialites_medecin.oid + GROUP BY t_medecins.oid) subview + WHERE t_medecins.oid = subview.oid AND t_medecins.oid <> 0 AND t_medecins.specialite_id = 0; + + -- ADELI + UPDATE activite[PX].t_medecins_administratifs + SET no_adeli = MEDI_ADELI + FROM prod_hm.IDE_MEDECIN + JOIN (SELECT MEDI_ID_MEDE, MAX(MEDI_ADELI) AS MEDI_ADELI FROM prod_hm.IDE_MEDECIN_IMMAT GROUP BY 1) subview + ON (MEDE_ID_MEDE = MEDI_ID_MEDE) + WHERE t_medecins_administratifs.code_original = MEDE_ID_MEDE AND + no_adeli IS DISTINCT FROM MEDI_ADELI + ; + + -- Code RPPS + UPDATE base.t_medecins + SET code_rpps = subview.RPPS + FROM + ( + SELECT medecin_id, count(DISTINCT MEIN_IDE_NATIONALE), MAX(MEIN_IDE_NATIONALE) AS RPPS + FROM activite[PX].t_medecins_administratifs + JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid + JOIN prod_hm.IDE_MEDECIN_IDENT_NATIONALE ON code_original = IDE_MEDECIN_IDENT_NATIONALE.MEIN_ID_MEDE + WHERE MEIN_IDE_NATIONALE <> '' AND + length(MEIN_IDE_NATIONALE) = 11 AND + t_medecins.code_rpps = '' AND + medecin_id <> 0 + GROUP BY 1 + HAVING count(DISTINCT MEIN_IDE_NATIONALE) = 1 + ) subview + WHERE t_medecins.oid = subview.medecin_id + ; + + -- Adresse + DROP TABLE IF EXISTS w_IDE_MEDECIN_ADRESSE; + CREATE TEMP TABLE w_IDE_MEDECIN_ADRESSE AS + SELECT MEDE_ID_MEDE, + MAX(CASE WHEN BAS_TYP_INFO_ADRE.TYIN_CODE = 'MEDECIN' AND BAS_CATALOGUE_GEN_ADRE.CAGE_CODE = 'ADR_PROF' THEN ADRE_LIGNE1 ELSE '' END) AS ADRE_LIGNE1, + MAX(CASE WHEN BAS_TYP_INFO_ADRE.TYIN_CODE = 'MEDECIN' AND BAS_CATALOGUE_GEN_ADRE.CAGE_CODE = 'ADR_PROF' THEN ADRE_LIGNE2 ELSE '' END) AS ADRE_LIGNE2, + MAX(CASE WHEN BAS_TYP_INFO_ADRE.TYIN_CODE = 'MEDECIN' AND BAS_CATALOGUE_GEN_ADRE.CAGE_CODE = 'ADR_PROF' THEN ADRE_LIGNE3 ELSE '' END) AS ADRE_LIGNE3, + MAX(CASE WHEN BAS_TYP_INFO_ADRE.TYIN_CODE = 'MEDECIN' AND BAS_CATALOGUE_GEN_ADRE.CAGE_CODE = 'ADR_PROF' THEN ADRE_COD_POS ELSE '' END) AS ADRE_COD_POS, + MAX(CASE WHEN BAS_TYP_INFO_ADRE.TYIN_CODE = 'MEDECIN' AND BAS_CATALOGUE_GEN_ADRE.CAGE_CODE = 'ADR_PROF' THEN ADRE_VILLE ELSE '' END) AS ADRE_VILLE, + MAX(CASE WHEN BAS_TYP_INFO_TELE.TYIN_CODE = 'MEDECIN' AND BAS_CATALOGUE_GEN_TELE.CAGE_CODE = 'TEL_PERS' THEN TELE_NUM_TEL ELSE '' END) AS TELE_NULM_TEL_FIXE, + MAX(CASE WHEN BAS_TYP_INFO_TELE.TYIN_CODE = 'MEDECIN' AND BAS_CATALOGUE_GEN_TELE.CAGE_CODE = 'TEL_PORT' THEN TELE_NUM_TEL ELSE '' END) AS TELE_NULM_TEL_PORT + FROM prod_hm.IDE_MEDECIN + LEFT JOIN prod_hm.IDE_ADRESSE ON MEDE_ID_MEDE = ADRE_ID_OBJ + LEFT JOIN prod_hm.BAS_TYPE_INFO BAS_TYP_INFO_ADRE ON ADRE_ID_TYIN = BAS_TYP_INFO_ADRE.TYIN_ID_TYIN AND BAS_TYP_INFO_ADRE.TYIN_CODE = 'MEDECIN' + LEFT JOIN prod_hm.BAS_CATALOGUE_GEN BAS_CATALOGUE_GEN_ADRE ON ADRE_ID_CAGE = BAS_CATALOGUE_GEN_ADRE.CAGE_ID_CAGE + LEFT JOIN prod_hm.IDE_TELEPHONE ON MEDE_ID_MEDE = TELE_ID_OBJ + LEFT JOIN prod_hm.BAS_TYPE_INFO BAS_TYP_INFO_TELE ON TELE_ID_TYIN = BAS_TYP_INFO_TELE.TYIN_ID_TYIN AND BAS_TYP_INFO_TELE.TYIN_CODE = 'MEDECIN' + LEFT JOIN prod_hm.BAS_CATALOGUE_GEN BAS_CATALOGUE_GEN_TELE ON TELE_ID_CAGE = BAS_CATALOGUE_GEN_TELE.CAGE_ID_CAGE + GROUP BY 1 + ; + + INSERT INTO base.t_codes_postaux(code, texte, texte_court, departement_id) + SELECT ADRE_COD_POS, MAX(ADRE_VILLE), MAX(ADRE_VILLE), MAX(t_departements.oid) + FROM w_IDE_MEDECIN_ADRESSE + LEFT JOIN base.t_codes_postaux ON ADRE_COD_POS = t_codes_postaux.code + JOIN base.t_departements ON + ADRE_COD_POS NOT LIKE '97%' AND substr(ADRE_COD_POS,1,2) = t_departements.code OR + ADRE_COD_POS LIKE '97%' AND substr(ADRE_COD_POS,1,3) = t_departements.code + WHERE t_codes_postaux.oid IS NULL AND + ADRE_COD_POS <> '' AND + length(ADRE_COD_POS) = 5 + GROUP BY 1 + ; + + UPDATE activite[PX].t_medecins_administratifs SET + adresse = ADRE_LIGNE1 || ' ' || ADRE_LIGNE2 || ' ' || ADRE_LIGNE3, + code_postal_id = COALESCE(t_codes_postaux.oid,0), + ville = ADRE_VILLE, + telephone = trim(TELE_NULM_TEL_FIXE || ' ' || TELE_NULM_TEL_PORT) + FROM w_IDE_MEDECIN_ADRESSE + LEFT JOIN base.t_codes_postaux ON ADRE_COD_POS = t_codes_postaux.code + WHERE t_medecins_administratifs.code_original = MEDE_ID_MEDE::text AND + ( + adresse IS DISTINCT FROM (ADRE_LIGNE1 || ' ' || ADRE_LIGNE2 || ' ' || ADRE_LIGNE3) OR + code_postal_id IS DISTINCT FROM COALESCE(t_codes_postaux.oid,0) OR + ville IS DISTINCT FROM ADRE_VILLE OR + telephone IS DISTINCT FROM trim(TELE_NULM_TEL_FIXE || ' ' || TELE_NULM_TEL_PORT) + ) + ; + + ]]> + + + + 1 AND + SEJO_STATUT NOT IN ('A','P') AND + SEJO_ID_ETAB_CON IN ([ID_ETAB]) + ) + ) AND + UNFO_ID_UNFO::bigint NOT IN (SELECT code_original FROM activite[PX].t_services_facturation) + ORDER BY UNFO_ID_UNFO; + + UPDATE activite[PX].t_services_facturation + SET mode_traitement_id = subview.mode_traitement_id, dmt_id = subview.dmt_id + FROM ( + SELECT UNFO_ID_UNFO::bigint, COALESCE(t_modes_traitement.oid,0) as mode_traitement_id, COALESCE(t_dmt.oid,0) as dmt_id + FROM prod_hm.BAS_UF + LEFT JOIN prod_hm.BAS_CATEGORIE_UFM ON UNFO_ID_CUFM = CUFM_ID_CUFM + LEFT JOIN prod_hm.BAS_CATALOGUE_GEN BAS_CATALOGUE_GEN_MT ON CUFM_ID_CAGE_MT = BAS_CATALOGUE_GEN_MT.CAGE_ID_CAGE + LEFT JOIN prod_hm.BAS_CATALOGUE_GEN BAS_CATALOGUE_GEN_DMT ON CUFM_ID_CAGE_DMT = BAS_CATALOGUE_GEN_DMT.CAGE_ID_CAGE + LEFT JOIN base.t_modes_traitement ON BAS_CATALOGUE_GEN_MT.CAGE_CODE = t_modes_traitement.code + LEFT JOIN base.t_dmt ON BAS_CATALOGUE_GEN_DMT.CAGE_CODE = t_dmt.code + WHERE + UNFO_ID_ETAB IN ([ID_ETAB]) AND + UNFO_IND_MED = 1 AND + (t_modes_traitement.oid IS NOT NULL OR t_dmt.oid IS NOT NULL) + ) subview + WHERE code_original = UNFO_ID_UNFO AND (t_services_facturation.mode_traitement_id = 0 OR t_services_facturation.dmt_id = 0); + + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, est_absence) + SELECT '*ABS', '*ABS', 'Absence', 'Absence', '1' WHERE '*ABS' NOT IN (SELECT code_original FROM activite[PX].t_services_facturation); + + UPDATE activite[PX].t_services_facturation SET + code = substr(translate(UNFO_CODE,' ',''),1,10), + texte = UNFO_LIBELLE, + texte_court = UNFO_LIBELLE + FROM prod_hm.BAS_UF + WHERE UNFO_ID_UNFO::text = code_original AND + ( + code IS DISTINCT FROM substr(translate(UNFO_CODE,' ',''),1,10) OR + texte IS DISTINCT FROM UNFO_LIBELLE OR + texte_court IS DISTINCT FROM UNFO_LIBELLE + ) + ; + + -- Unités fonctionnelles + + INSERT INTO activite[PX].t_unites_fonctionnelles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_fonctionnelles); + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT UNFO_ID_UNFO::bigint, substr(translate(UNFO_CODE,' ',''),1,10) AS UNFO_CODE, UNFO_LIBELLE, UNFO_LIBELLE + FROM prod_hm.BAS_UF + WHERE + UNFO_ID_ETAB IN ([ID_ETAB]) AND + UNFO_IND_MED = 1 AND + UNFO_ID_UNFO::bigint NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles) + ORDER BY UNFO_ID_UNFO; + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT '*ABS', '*ABS', 'Absence', 'Absence' WHERE '*ABS' NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles); + + UPDATE activite[PX].t_unites_fonctionnelles SET + code = substr(translate(UNFO_CODE,' ',''),1,10), + texte = UNFO_LIBELLE, + texte_court = UNFO_LIBELLE + FROM prod_hm.BAS_UF + WHERE UNFO_ID_UNFO::bigint = code_original AND + ( + code IS DISTINCT FROM substr(translate(UNFO_CODE,' ',''),1,10) OR + texte IS DISTINCT FROM UNFO_LIBELLE OR + texte_court IS DISTINCT FROM UNFO_LIBELLE + ) + ; + + -- Unités médicales + + INSERT INTO activite[PX].t_unites_medicales(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_medicales); + + INSERT INTO activite[PX].t_unites_medicales(code_original, code, texte, texte_court) + SELECT UNME_ID_UNME::bigint, UNME_CODE, UNME_LIBELLE, UNME_LIBELLE + FROM prod_hm.SAD_UM + WHERE + UNME_ID_ETAB IN ([ID_ETAB]) AND + UNME_ID_UNME::bigint NOT IN (SELECT code_original FROM activite[PX].t_unites_medicales) + ORDER BY UNME_ID_UNME; + + INSERT INTO activite[PX].t_unites_medicales(code_original, code, texte, texte_court) + SELECT '*ABS', '*ABS', 'Absence', 'Absence' WHERE '*ABS' NOT IN (SELECT code_original FROM activite[PX].t_unites_medicales); + + UPDATE activite[PX].t_unites_medicales SET + code = UNME_CODE, + texte = UNME_LIBELLE, + texte_court = UNME_LIBELLE + FROM prod_hm.SAD_UM + WHERE UNME_ID_UNME::bigint = code_original AND + ( + code IS DISTINCT FROM UNME_CODE OR + texte IS DISTINCT FROM UNME_LIBELLE OR + texte_court IS DISTINCT FROM UNME_LIBELLE + ) + ; + + -- Activités (um principale) + + INSERT INTO activite[PX].t_activites(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_activites); + + DROP TABLE IF EXISTS w_SAD_UM; + CREATE TEMP TABLE w_SAD_UM as + SELECT UNME_ID_UNME::BIGINT as UNME_ID_UNME + ,UNME_CODE + ,UNME_LIBELLE + FROM prod_hm.SAD_UM + WHERE UNME_ID_ETAB IN ([ID_ETAB]); + + -- suffixage des codes um en doublon dans la table HM + UPDATE w_SAD_UM SET + UNME_CODE = substr(w_SAD_UM.UNME_CODE, 1, 3) || '#'::text + FROM + (SELECT UNME_CODE FROM w_SAD_UM GROUP BY UNME_CODE HAVING count(*) > 1) w_doub, + activite[PX].t_activites + WHERE 1=1 + AND w_SAD_UM.UNME_CODE = w_doub.UNME_CODE + AND w_doub.UNME_CODE = t_activites.code + AND t_activites.code_original = w_SAD_UM.UNME_ID_UNME; + + -- Mise à jour du code suffixé dans la table CTI + UPDATE activite[PX].t_activites SET + code = w_SAD_UM.UNME_CODE + FROM w_SAD_UM + WHERE 1=1 + AND t_activites.code_original = w_SAD_UM.UNME_ID_UNME + AND t_activites.code IS DISTINCT FROM w_SAD_UM.UNME_CODE; + + INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court) + SELECT UNME_ID_UNME::bigint, UNME_CODE, UNME_LIBELLE, UNME_LIBELLE + FROM w_SAD_UM + WHERE + UNME_ID_UNME::bigint != ALL(ARRAY(SELECT code_original FROM activite[PX].t_activites WHERE code_original IS NOT NULL)::text[]) + ORDER BY UNME_ID_UNME; + + UPDATE activite[PX].t_activites SET + code = UNME_CODE, + texte = UNME_LIBELLE, + texte_court = UNME_LIBELLE + FROM w_SAD_UM + WHERE UNME_ID_UNME::bigint = code_original AND + ( + code IS DISTINCT FROM UNME_CODE OR + texte IS DISTINCT FROM UNME_LIBELLE OR + texte_court IS DISTINCT FROM UNME_LIBELLE + ) + ; + + -- Etages et lits + + INSERT INTO activite[PX].t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_etages); + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court) + SELECT UNFO_ID_UNFO::bigint, substr(translate(UNFO_CODE,' ',''),1,10) AS UNFO_CODE, UNFO_LIBELLE, UNFO_LIBELLE + FROM prod_hm.BAS_UF + WHERE + UNFO_ID_ETAB IN ([ID_ETAB]) AND + UNFO_IND_HEB = 1 AND + UNFO_ID_UNFO::bigint NOT IN (SELECT code_original FROM activite[PX].t_etages WHERE code_original IS NOT NULL ) + ORDER BY UNFO_ID_UNFO; + + UPDATE activite[PX].t_etages SET + code = substr(translate(UNFO_CODE,' ',''),1,10), + texte = UNFO_LIBELLE, + texte_court = UNFO_LIBELLE + FROM prod_hm.BAS_UF + WHERE UNFO_ID_UNFO::bigint = code_original AND + ( + code IS DISTINCT FROM substr(translate(UNFO_CODE,' ',''),1,10) OR + texte IS DISTINCT FROM UNFO_LIBELLE OR + texte_court IS DISTINCT FROM UNFO_LIBELLE + ) + ; + + -- Cas de changement de code lit + UPDATE activite[PX].t_lits + SET code = t_lits.code || '(2)' + FROM + ( + SELECT etage_id, CASE WHEN code_original LIKE '%-%' THEN split_part(code_original,'-',2) ELSE code_original END AS code_original, + MAX(CASE WHEN code_original NOT LIKE '%-%' THEN oid ELSE 0 END) AS keepoid, + MAX(CASE WHEN code_original NOT LIKE '%-%' THEN t_lits.code ELSE '' END) AS code, + count(*) + FROM activite[PX].t_lits + WHERE trim(code_original) NOT LIKE '%-0' + GROUP BY 1,2 + HAVING count(*) > 1 + ORDER BY 1,2 + ) subview + WHERE t_lits.code_original LIKE '%-%' AND + t_lits.code NOT LIKE '%(2)' AND + split_part(t_lits.code_original,'-',2) = subview.code_original AND + t_lits.etage_id = subview.etage_id AND + t_lits.oid <> subview.keepoid + ; + + UPDATE activite[PX].t_lits SET + code = LIPO_CODE || 'BAK', + texte = LIPO_LIBELLE, + texte_court = LIPO_LIBELLE, + etage_id = t_etages.oid + FROM prod_hm.PAD_LIT_POSTE, prod_hm.PAD_CHAMBRE_SALLE, activite[PX].t_etages + WHERE LIPO_ID_LIPO::bigint = t_lits.code_original + AND LIPO_ID_CHAS = CHAS_ID_CHAS + AND CHAS_ID_ETAB IN ([ID_ETAB]) + AND CHAS_ID_UNFO::bigint = t_etages.code_original AND + ( + t_lits.code IS DISTINCT FROM LIPO_CODE OR + t_lits.texte IS DISTINCT FROM LIPO_LIBELLE OR + t_lits.texte_court IS DISTINCT FROM LIPO_LIBELLE OR + t_lits.etage_id IS DISTINCT FROM t_etages.oid + ); + + UPDATE activite[PX].t_lits SET + code = LIPO_CODE, + texte = LIPO_LIBELLE, + texte_court = LIPO_LIBELLE, + etage_id = t_etages.oid + FROM prod_hm.PAD_LIT_POSTE, prod_hm.PAD_CHAMBRE_SALLE, activite[PX].t_etages + WHERE LIPO_ID_LIPO::bigint = t_lits.code_original + AND LIPO_ID_CHAS = CHAS_ID_CHAS + AND CHAS_ID_ETAB IN ([ID_ETAB]) + AND CHAS_ID_UNFO::bigint = t_etages.code_original AND + ( + t_lits.code IS DISTINCT FROM LIPO_CODE OR + t_lits.texte IS DISTINCT FROM LIPO_LIBELLE OR + t_lits.texte_court IS DISTINCT FROM LIPO_LIBELLE OR + t_lits.etage_id IS DISTINCT FROM t_etages.oid + ); + + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT LIPO_ID_LIPO::bigint, LIPO_CODE, LIPO_LIBELLE, LIPO_LIBELLE, t_etages.oid, CASE WHEN CHAS_CODE = LIPO_CODE THEN 'O' ELSE 'N' END AS CHAS_IND_CP + FROM prod_hm.PAD_LIT_POSTE, prod_hm.PAD_CHAMBRE_SALLE, activite[PX].t_etages + WHERE LIPO_ID_CHAS = CHAS_ID_CHAS + AND CHAS_ID_ETAB IN ([ID_ETAB]) + AND CHAS_ID_UNFO::bigint = t_etages.code_original + AND LIPO_ID_LIPO::bigint NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL ); + + -- Anciennes versions d'étages par lit + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT MOUV_ID_UNFO || '-' || LIPO_ID_LIPO, LIPO_CODE, LIPO_LIBELLE, LIPO_LIBELLE, t_etages.oid, CASE WHEN CHAS_CODE = LIPO_CODE THEN 'O' ELSE 'N' END AS CHAS_IND_CP + FROM prod_hm.IDE_MOUVEMENT + JOIN prod_hm.IDE_SEJOUR ON MOUV_ID_SEJO = SEJO_ID_SEJO AND SEJO_ID_ETAB_CON IN ([ID_ETAB]) + JOIN prod_hm.PAD_LIT_POSTE ON MOUV_ID_LIPO = LIPO_ID_LIPO + JOIN prod_hm.PAD_CHAMBRE_SALLE ON LIPO_ID_CHAS = CHAS_ID_CHAS + JOIN activite[PX].t_etages ON MOUV_ID_UNFO = t_etages.code_original + WHERE MOUV_ID_UNFO <> CHAS_ID_UNFO AND + (MOUV_ID_UNFO || '-' || LIPO_ID_LIPO) NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL ) + GROUP BY 1,2,3,4,5,6; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT code_original || '-0' , '', 'Non renseigné', 'Non renseigné', oid, 'O' + FROM activite[PX].t_etages + WHERE oid > 0 AND + code_original || '-0' NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL ); + + UPDATE activite[PX].t_lits SET code = '*****' WHERE code = ''; + ]]> + + + + 0 + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE t_compte.code = subview.code AND + oid <> keep_oid + ; + + UPDATE activite[PX].t_compte + SET code_original = code + WHERE oid <> 0 AND + code <> code_original + ; + + + DROP TABLE IF EXISTS w_LECR_COMPTE; + CREATE TEMP TABLE w_LECR_COMPTE AS + SELECT CASE + WHEN LECR_NUM_COMPTE <> '' THEN LECR_NUM_COMPTE + WHEN CPTE_NUM_COMPTE <> '' THEN CPTE_NUM_COMPTE + ELSE CPTE_CODE END AS LECR_NUM_COMPTE, + MAX(LECR_ID_CPTE) AS LECR_ID_CPTE, ''::text AS CPTE_LIBELLE + FROM prod_hm.CCL_LIGNE_ECRITURE + JOIN prod_hm.CCL_COMPTE ON LECR_ID_CPTE = CPTE_ID_CPTE + GROUP BY 1 + ; + + ANALYSE w_LECR_COMPTE + ; + + UPDATE w_LECR_COMPTE + SET CPTE_LIBELLE = CCL_COMPTE.CPTE_LIBELLE + FROM prod_hm.CCL_COMPTE + WHERE LECR_NUM_COMPTE = CPTE_NUM_COMPTE + ; + UPDATE w_LECR_COMPTE + SET CPTE_LIBELLE = CCL_COMPTE.CPTE_LIBELLE + FROM prod_hm.CCL_COMPTE + WHERE w_LECR_COMPTE.CPTE_LIBELLE = '' AND + LECR_NUM_COMPTE = CPTE_CODE + ; + UPDATE w_LECR_COMPTE + SET CPTE_LIBELLE = CCL_COMPTE.CPTE_LIBELLE + FROM prod_hm.CCL_COMPTE + WHERE w_LECR_COMPTE.CPTE_LIBELLE = '' AND + LECR_ID_CPTE = CPTE_ID_CPTE + ; + UPDATE w_LECR_COMPTE + SET CPTE_LIBELLE = LECR_NUM_COMPTE + WHERE CPTE_LIBELLE = '' + ; + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT LECR_NUM_COMPTE, + LECR_NUM_COMPTE, + CPTE_LIBELLE, + CPTE_LIBELLE + FROM w_LECR_COMPTE + WHERE LECR_NUM_COMPTE NOT IN (SELECT code_original FROM activite[PX].t_compte WHERE code_original IS NOT NULL) + ; + + UPDATE activite[PX].t_compte SET + code = LECR_NUM_COMPTE, + texte = CPTE_LIBELLE, + texte_court = CPTE_LIBELLE + FROM w_LECR_COMPTE + WHERE t_compte.code_original = LECR_NUM_COMPTE AND + ( + code IS DISTINCT FROM LECR_NUM_COMPTE OR + texte IS DISTINCT FROM CPTE_LIBELLE OR + texte_court IS DISTINCT FROM CPTE_LIBELLE + ) + ; + + -- Rubriques et prestations + + INSERT INTO activite[PX].t_rubriques_facturation(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_rubriques_facturation); + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT '*CTI_ACO85', 'ACO85', 'Acomptes 85%', 'Acomptes 85%' + WHERE '*CTI_ACO85' NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation); + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT '*CTI_ACO', 'ACOMPTE', 'Acomptes', 'Acomptes' + WHERE '*CTI_ACO' NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation); + + UPDATE activite[PX].t_rubriques_facturation + SET code = '#'||PRSE_CODE + FROM prod_hm.PAD_PRESTATION_SEJOUR + WHERE code_original = PRSE_ID_PRSE AND + code IS DISTINCT FROM PRSE_CODE; + + UPDATE activite[PX].t_rubriques_facturation + SET code = PRSE_CODE, + texte = PRSE_LIBELLE, + texte_court = PRSE_LIBELLE + FROM prod_hm.PAD_PRESTATION_SEJOUR + WHERE code_original = PRSE_ID_PRSE AND + ( + code IS DISTINCT FROM PRSE_CODE OR + texte IS DISTINCT FROM PRSE_LIBELLE OR + texte_court IS DISTINCT FROM PRSE_LIBELLE + ); + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT PRSE_ID_PRSE::bigint, PRSE_CODE, PRSE_LIBELLE, PRSE_LIBELLE + FROM prod_hm.PAD_PRESTATION_SEJOUR + WHERE PRSE_ID_ETAB IN ([ID_ETAB]) + AND PRSE_ID_PRSE::bigint NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation) + AND PRSE_ID_PRSE IN (SELECT LFAC_ID_PRSE FROM prod_hm.FAC_LIGNE_FACTURE) + ORDER BY PRSE_CODE; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT PRSE_ID_PRSE::bigint, PRSE_CODE, PRSE_LIBELLE, PRSE_LIBELLE + FROM prod_hm.PAD_PRESTATION_SEJOUR + WHERE + PRSE_ID_PRSE::bigint NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation) + AND PRSE_ID_PRSE IN (SELECT LFAC_ID_PRSE FROM prod_hm.FAC_LIGNE_FACTURE WHERE LFAC_ID_ETAB_D IN ([ID_ETAB]) ) + ORDER BY PRSE_CODE; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT PRSE_ID_PRSE::bigint, PRSE_CODE, PRSE_LIBELLE, PRSE_LIBELLE + FROM prod_hm.PAD_PRESTATION_SEJOUR + WHERE PRSE_ID_ETAB IN ([ID_ETAB]) + AND PRSE_ID_PRSE::bigint NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation) + AND PRSE_ID_PRSE IN (SELECT ACSA_ID_PRSE FROM prod_hm.SAD_ACTIVITE_SAISIES) + ORDER BY PRSE_CODE; + + UPDATE activite[PX].t_rubriques_facturation + SET code = '#' || PRHO_CODE || '_H' + FROM prod_hm.PAD_PRESTATION_HONORAIRE + WHERE code_original = PRHO_ID_PRHO AND + code IS DISTINCT FROM PRHO_CODE AND + code IS DISTINCT FROM (PRHO_CODE || '_H'); + + UPDATE activite[PX].t_rubriques_facturation + SET code = PRHO_CODE || '_H', + texte = PRHO_LIBELLE, + texte_court = PRHO_LIBELLE + FROM prod_hm.PAD_PRESTATION_HONORAIRE + WHERE code_original = PRHO_ID_PRHO AND + code IS DISTINCT FROM PRHO_CODE AND + ( + code IS DISTINCT FROM PRHO_CODE || '_H' OR + texte IS DISTINCT FROM PRHO_LIBELLE OR + texte_court IS DISTINCT FROM PRHO_LIBELLE + ); + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT PRHO_ID_PRHO::bigint, PRHO_CODE, PRHO_LIBELLE, PRHO_LIBELLE + FROM prod_hm.PAD_PRESTATION_HONORAIRE JOIN prod_hm.BAS_ETABLISSEMENT ON PRHO_ID_ETAB = ETAB_ID_ETAB AND ETAB_TYP_ETAB = 'PSPH' + WHERE PRHO_ID_ETAB IN ([ID_ETAB]) + AND PRHO_ID_PRHO::bigint NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation) + AND PRHO_CODE NOT IN (SELECT code FROM activite[PX].t_rubriques_facturation) + AND PRHO_ID_PRHO IN (SELECT LFAC_ID_PRHO FROM prod_hm.FAC_LIGNE_FACTURE) + ORDER BY PRHO_CODE; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT PRHO_ID_PRHO::bigint, PRHO_CODE || '_H', PRHO_LIBELLE, PRHO_LIBELLE + FROM prod_hm.PAD_PRESTATION_HONORAIRE JOIN prod_hm.BAS_ETABLISSEMENT ON PRHO_ID_ETAB = ETAB_ID_ETAB AND ETAB_TYP_ETAB = 'PSPH' + WHERE PRHO_ID_ETAB IN ([ID_ETAB]) + AND PRHO_ID_PRHO::bigint NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation) + AND PRHO_CODE IN (SELECT code FROM activite[PX].t_rubriques_facturation) + AND PRHO_CODE || '_H' NOT IN (SELECT code FROM activite[PX].t_rubriques_facturation) + AND PRHO_ID_PRHO IN (SELECT LFAC_ID_PRHO FROM prod_hm.FAC_LIGNE_FACTURE) + ORDER BY PRHO_CODE; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT PRHO_ID_PRHO::bigint, PRHO_CODE, PRHO_LIBELLE, PRHO_LIBELLE + FROM prod_hm.PAD_PRESTATION_HONORAIRE JOIN prod_hm.BAS_ETABLISSEMENT ON PRHO_ID_ETAB = ETAB_ID_ETAB AND ETAB_TYP_ETAB <> 'PSPH' + WHERE PRHO_ID_ETAB IN ([ID_ETAB]) + AND PRHO_ID_PRHO::bigint NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation) + AND PRHO_CODE NOT IN (SELECT code FROM activite[PX].t_rubriques_facturation) + AND PRHO_ID_PRHO IN (SELECT LFAC_ID_PRHO FROM prod_hm.FAC_LIGNE_FACTURE WHERE LFAC_CDT_EXC = 'S') + ORDER BY PRHO_CODE; + + -- Rubriques pour médecins salariés + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT PRHO_ID_PRHO::bigint, PRHO_CODE, PRHO_LIBELLE, PRHO_LIBELLE + FROM prod_hm.PAD_PRESTATION_HONORAIRE + WHERE PRHO_ID_ETAB IN ([ID_ETAB]) + AND PRHO_ID_PRHO::bigint NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation) + AND PRHO_CODE NOT IN (SELECT code FROM activite[PX].t_rubriques_facturation) + AND PRHO_ID_PRHO IN (SELECT LFAC_ID_PRHO FROM prod_hm.FAC_LIGNE_FACTURE WHERE LFAC_CDT_EXC = 'S') + ORDER BY PRHO_CODE; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT PRHO_ID_PRHO::bigint, PRHO_CODE, PRHO_LIBELLE, PRHO_LIBELLE + FROM prod_hm.PAD_PRESTATION_HONORAIRE + WHERE PRHO_ID_PRHO::bigint NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation) + AND PRHO_CODE NOT IN (SELECT code FROM activite[PX].t_rubriques_facturation) + AND PRHO_ID_PRHO IN (SELECT LFAC_ID_PRHO FROM prod_hm.FAC_LIGNE_FACTURE WHERE LFAC_ID_ETAB_D IN ([ID_ETAB]) AND LFAC_CDT_EXC = 'S') + ORDER BY PRHO_CODE; + + INSERT INTO activite.t_prestations(code, code_original, texte, texte_court) + SELECT CASE WHEN TRIM(PRSE_LET_CLE) <> '' THEN PRSE_LET_CLE ELSE PRSE_CODE END, CASE WHEN TRIM(PRSE_LET_CLE) <> '' THEN PRSE_LET_CLE ELSE PRSE_CODE END, MIN(PRSE_LIBELLE) , MIN(PRSE_LIBELLE) + FROM prod_hm.PAD_PRESTATION_SEJOUR + WHERE PRSE_ID_ETAB IN ([ID_ETAB]) + AND CASE WHEN TRIM(PRSE_LET_CLE) <> '' THEN PRSE_LET_CLE ELSE PRSE_CODE END NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + GROUP BY 1 + ORDER BY 1; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT '*CTI_ACO85', 'ACO85', 'Acomptes 85%', 'Acomptes 85%' + WHERE '*CTI_ACO85' NOT IN (SELECT code_original FROM activite.t_prestations WHERE code_original IS NOT NULL); + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT '*CTI_ACO', 'ACOMPTE', 'Acomptes', 'Acomptes' + WHERE '*CTI_ACO' NOT IN (SELECT code_original FROM activite.t_prestations WHERE code_original IS NOT NULL); + + INSERT INTO activite.t_prestations(code, code_original, texte, texte_court) + SELECT CASE WHEN TRIM(PRHO_LET_CLE) <> '' THEN PRHO_LET_CLE ELSE PRHO_CODE END, CASE WHEN TRIM(PRHO_LET_CLE) <> '' THEN PRHO_LET_CLE ELSE PRHO_CODE END, MIN(PRHO_LIBELLE) , MIN(PRHO_LIBELLE) + FROM prod_hm.PAD_PRESTATION_HONORAIRE + WHERE PRHO_ID_ETAB IN ([ID_ETAB]) + AND CASE WHEN TRIM(PRHO_LET_CLE) <> '' THEN PRHO_LET_CLE ELSE PRHO_CODE END NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + GROUP BY 1,2 + ORDER BY 1; + + INSERT INTO activite.t_prestations(code, code_original, texte, texte_court) + SELECT DISTINCT LFAC_LET_CLE, LFAC_LET_CLE, LFAC_LET_CLE , LFAC_LET_CLE + FROM prod_hm.FAC_LIGNE_FACTURE + WHERE LFAC_LET_CLE NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) AND + LFAC_LET_CLE <> '' + ORDER BY 1; + + + + UPDATE activite[PX].t_protocoles SET + code = FAVO_CODE::text, + texte = FAVO_LIBELLE::text, + texte_court = FAVO_LIBELLE::text + FROM + prod_hm.SAD_FAVORIS + WHERE 1=1 + AND FAVO_ID_FAVO = t_protocoles.code_original + AND (FAVO_CODE <> t_protocoles.code OR FAVO_LIBELLE <> t_protocoles.texte); + + + INSERT INTO activite[PX].t_protocoles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '***', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_protocoles); + + INSERT INTO activite[PX].t_protocoles(code_original, code, texte, texte_court) + SELECT FAVO_ID_FAVO::bigint, FAVO_CODE, FAVO_LIBELLE, FAVO_LIBELLE + FROM prod_hm.SAD_FAVORIS + WHERE FAVO_ID_FAVO IN (SELECT LFAC_ID_FAVO FROM prod_hm.FAC_LIGNE_FACTURE GROUP BY 1) AND + FAVO_ID_FAVO::bigint NOT IN (SELECT code_original FROM activite[PX].t_protocoles) + ORDER BY FAVO_CODE; + + + + + ]]> + + + + + + + + 'PJ' THEN t_prestations.code ELSE 'PJS' END AS prestation_mcode + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].t_lieux ON lieu_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_services_facturation.oid = service_facturation_id + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE date_fin >= '20170701' AND + date_debut >= '20170701' AND + type_t2a = '2' AND + prestation_id = ANY (SELECT to_id FROM activite.t_listes_contenu JOIN activite.t_listes ON liste_id = t_listes.oid AND t_listes.code = 'DMAP_MFS') AND + montant_comptabilise <> 0 AND + montant_comptabilise_1 <> 0 AND + round(prix_unitaire * nb_prestation,2) <> montant_comptabilise AND + abs(round(prix_unitaire * nb_prestation,2)) <> abs(montant_comptabilise)+(nb_prestation*18) + ORDER BY no_facture, prestation_id + ; + + -- Calcul tarif plein + UPDATE w_moins10 SET + montant_facture_1 = + CASE WHEN prestation_code = 'PJ' OR type_valorisation_non_facture = 'PJ' THEN round(prix_unitaire * nb_prestation * taux_1 / 100,2) - montant_fj + ELSE round(prix_unitaire * nb_prestation * taux_1 / 100,2) END, + montant_facture = + CASE WHEN prestation_code = 'PJ' OR type_valorisation_non_facture = 'PJ' THEN round(prix_unitaire * nb_prestation * taux_1 / 100,2) - montant_fj + ELSE round(prix_unitaire * nb_prestation * taux_1 / 100,2) END + + (montant_facture_2+montant_facture_22+montant_facture_0) + ; + + -- Génération prestations spécifiques + INSERT INTO activite.t_prestations (code, texte, texte_court) + SELECT prestation_mcode, t_prestations.texte || ' (-10%)', t_prestations.texte || ' (-10%)' + FROM w_moins10 + JOIN activite.t_prestations on prestation_id = t_prestations.oid + WHERE prestation_mcode NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + GROUP BY 1,2,3 + ; + + -- Maj tarif plein + UPDATE activite[PX].p_factures_lignes_c + SET montant_facture = w_moins10.montant_facture, montant_facture_1 = w_moins10.montant_facture_1 + FROM w_moins10 + WHERE p_factures_lignes_c.CTID = w_moins10.CTID_orig; + ; + + -- Génération -10% + UPDATE w_moins10 SET + montant_facture = montant_comptabilise - montant_facture, + montant_facture_1 = montant_comptabilise_1 - montant_facture_1, + montant_facture_2 = montant_comptabilise_2 - montant_facture_2, + montant_facture_22 = montant_comptabilise_22 - montant_facture_22, + montant_facture_0 = montant_comptabilise_0 - montant_facture_0, + montant_comptabilise = 0, + montant_comptabilise_1 = 0, + montant_comptabilise_2 = 0, + montant_comptabilise_22 = 0, + montant_comptabilise_0 = 0, + prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE t_prestations.code = prestation_mcode + ; + + ALTER TABLE w_moins10 DROP COLUMN CTID_orig; + ALTER TABLE w_moins10 DROP COLUMN montant_fj; + ALTER TABLE w_moins10 DROP COLUMN prestation_code; + ALTER TABLE w_moins10 DROP COLUMN prestation_mcode; + ALTER TABLE w_moins10 DROP COLUMN type_valorisation_non_facture; + + INSERT INTO activite[PX].p_factures_lignes_c + SELECT * + FROM w_moins10 + WHERE montant_facture <> 0 + ; + + + SELECT activite[PX].cti_reorganize_rubrique_facture_c('activite[PX].p_factures_lignes_c'); + ]]> + + + + '' AND MEDE_CODE IS NOT NULL THEN MEDE_CODE ELSE MEDE_ID_MEDE::text END AS MEDE_CODE, + MEDE_NOM_USU, + COALESCE(MEDE_PRENOM,'') AS MEDE_PRENOM, + 0, + '' + FROM prod_hm.IDE_MEDECIN + LEFT JOIN (SELECT MEDI_ID_MEDE, MAX(MEDI_ADELI) AS MEDI_ADELI FROM prod_hm.IDE_MEDECIN_IMMAT WHERE MEDI_ID_ETAB IN ([ID_ETAB]) GROUP BY 1) subview + ON (MEDE_ID_MEDE = MEDI_ID_MEDE) + WHERE MEDE_ID_MEDE IN (SELECT MESE_ID_MEDE FROM w_PATI_MED_TRT) AND + MEDE_ID_MEDE NOT IN (SELECT code_original FROM activite[PX].t_medecins_traitants_administratifs) + ; + + + UPDATE activite[PX].t_medecins_traitants_administratifs SET + code = CASE WHEN MEDE_CODE <> '' AND MEDE_CODE IS NOT NULL THEN MEDE_CODE ELSE MEDE_ID_MEDE::text END, + nom = MEDE_NOM_USU, + prenom = COALESCE(MEDE_PRENOM,'') + FROM prod_hm.IDE_MEDECIN + WHERE t_medecins_traitants_administratifs.code_original = MEDE_ID_MEDE::bigint AND + ( + code IS DISTINCT FROM CASE WHEN MEDE_CODE <> '' AND MEDE_CODE IS NOT NULL THEN MEDE_CODE ELSE MEDE_ID_MEDE::text END OR + nom IS DISTINCT FROM MEDE_NOM_USU OR + prenom IS DISTINCT FROM COALESCE(MEDE_PRENOM,'') + ) + ; + + -- maj code rpps + UPDATE activite[PX].t_medecins_traitants_administratifs + SET no_rpps = MEIN_IDE_NATIONALE + FROM prod_hm.IDE_MEDECIN_IDENT_NATIONALE + WHERE code_original = MEIN_ID_MEDE AND + t_medecins_traitants_administratifs.no_rpps IS DISTINCT FROM MEIN_IDE_NATIONALE; + + + -- maj id médecin_traitant dans séjours + UPDATE activite[PX].p_sejours + SET medecin_traitant_id = t_medecins_traitants_administratifs.oid + FROM w_PATI_MED_TRT + JOIN activite[PX].t_medecins_traitants_administratifs ON t_medecins_traitants_administratifs.code_original = MESE_ID_MEDE + WHERE no_patient = PATI_NIP AND + medecin_traitant_id IS DISTINCT FROM t_medecins_traitants_administratifs.oid; + ; + + -- ajout des coordonnées par séjour + INSERT INTO activite[PX].p_coordonnees_patient ( + sejour_id, + adresse, + code_postal_id, + commune, + telephone_fixe, + telephone_portable, + email + ) + WITH + w_TEL AS ( SELECT TELE_ID_OBJ, regexp_replace(TELE_NUM_TEL,'[^0-9]','','g') as TELE_NUM_TEL FROM prod_hm.IDE_TELEPHONE), + w_ADR AS ( SELECT DISTINCT ADRE_ID_OBJ, + last_value(ADRE_LIGNE1) OVER (PARTITION BY ADRE_ID_OBJ ORDER BY ADRE_DAT_MOD rows between unbounded preceding and unbounded following) AS ADRE_LIGNE1, + last_value(ADRE_LIGNE2) OVER (PARTITION BY ADRE_ID_OBJ ORDER BY ADRE_DAT_MOD rows between unbounded preceding and unbounded following) AS ADRE_LIGNE2, + last_value(ADRE_LIGNE3) OVER (PARTITION BY ADRE_ID_OBJ ORDER BY ADRE_DAT_MOD rows between unbounded preceding and unbounded following) AS ADRE_LIGNE3, + last_value(ADRE_COD_POS) OVER (PARTITION BY ADRE_ID_OBJ ORDER BY ADRE_DAT_MOD rows between unbounded preceding and unbounded following) AS ADRE_COD_POS, + last_value(ADRE_VILLE) OVER (PARTITION BY ADRE_ID_OBJ ORDER BY ADRE_DAT_MOD rows between unbounded preceding and unbounded following) AS ADRE_VILLE + FROM prod_hm.IDE_ADRESSE + WHERE ADRE_LIGNE1 != '' + ) + SELECT + p_sejours.oid, + ADRE_LIGNE1 || CASE WHEN ADRE_LIGNE2 != '' THEN ' - ' || ADRE_LIGNE2 ELSE '' END || CASE WHEN ADRE_LIGNE3 != '' THEN ' - ' || ADRE_LIGNE3 ELSE '' END, + COALESCE(t_codes_postaux.oid,0), + ADRE_VILLE, + STRING_AGG(CASE WHEN SUBSTR(TELE_NUM_TEL,2,1) IN (1,2,3,4,5,9) THEN TELE_NUM_TEL ELSE null END,','), + STRING_AGG(CASE WHEN SUBSTR(TELE_NUM_TEL,2,1) NOT IN (1,2,3,4,5,9) THEN TELE_NUM_TEL ELSE null END,','), + PATI_EMAIL + FROM activite[PX].p_sejours + JOIN prod_hm.IDE_SEJOUR ON SEJO_ID_SEJO = code_original + JOIN prod_hm.IDE_PATIENT ON SEJO_ID_PATI = PATI_ID_PATI + JOIN w_ADR ON PATI_ID_PATI = ADRE_ID_OBJ + LEFT JOIN base.t_codes_postaux ON ADRE_COD_POS = t_codes_postaux.code + LEFT JOIN w_TEL ON PATI_ID_PATI = TELE_ID_OBJ + GROUP BY 1,2,3,4,7 + ]]> + + + '2099-12-31' THEN date_facture ELSE date_expedition_0 END AS date_expedition_0, + + CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END AS date_solde, + CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END AS date_solde_c, + CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '20991231' END AS date_solde_h, + CASE WHEN montant_comptabilise_0_c = 0 THEN '00010101' WHEN montant_comptabilise_0_c = montant_regle_0_c THEN date_solde_0_c ELSE '20991231' END AS date_solde_0_c, + CASE WHEN montant_comptabilise_0_h = 0 THEN '00010101' WHEN montant_comptabilise_0_h = montant_regle_0_h THEN date_solde_0_h ELSE '20991231' END AS date_solde_0_h, + CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END AS date_solde_1_c, + CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '20991231' END AS date_solde_1_h, + CASE WHEN montant_comptabilise_2_c = 0 THEN '00010101' WHEN montant_comptabilise_2_c = montant_regle_2_c THEN date_solde_2_c ELSE '20991231' END AS date_solde_2_c, + CASE WHEN montant_comptabilise_2_h = 0 THEN '00010101' WHEN montant_comptabilise_2_h = montant_regle_2_h THEN date_solde_2_h ELSE '20991231' END AS date_solde_2_h, + CASE WHEN montant_comptabilise_22_c = 0 THEN '00010101' WHEN montant_comptabilise_22_c = montant_regle_22_c THEN date_solde_22_c ELSE '20991231' END AS date_solde_22_c, + CASE WHEN montant_comptabilise_22_h = 0 THEN '00010101' WHEN montant_comptabilise_22_h = montant_regle_22_h THEN date_solde_22_h ELSE '20991231' END AS date_solde_22_h + FROM activite[PX].p_factures; + + UPDATE w_factures SET + date_solde = GREATEST(date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h), + date_solde_c = GREATEST(date_solde_0_c, date_solde_1_c, date_solde_2_c, date_solde_22_c), + date_solde_h = GREATEST(date_solde_0_h, date_solde_1_h, date_solde_2_h, date_solde_22_h) + WHERE + date_solde IS DISTINCT FROM GREATEST(date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h) OR + date_solde_c IS DISTINCT FROM GREATEST(date_solde_0_c, date_solde_1_c, date_solde_2_c, date_solde_22_c) OR + date_solde_h IS DISTINCT FROM GREATEST(date_solde_0_h, date_solde_1_h, date_solde_2_h, date_solde_22_h) ; + + CREATE INDEX w_factures_i1 + ON w_factures + USING btree + (no_facture); + + CREATE INDEX w_factures_i2 + ON w_factures + USING btree + (no_facture_reference); + + + + DROP TABLE IF EXISTS w_factures_references_soldes; + + CREATE TEMP TABLE w_factures_references_soldes AS + SELECT + no_facture_reference, + MAX(date_solde) AS date_solde_reference, + MAX(date_solde_c) AS date_solde_reference_c, + MAX(date_solde_h) AS date_solde_reference_h, + MAX(date_solde_0_c) AS date_solde_reference_0_c, + MAX(date_solde_0_h) AS date_solde_reference_0_h, + MAX(date_solde_1_c) AS date_solde_reference_1_c, + MAX(date_solde_1_h) AS date_solde_reference_1_h, + MAX(date_solde_2_c) AS date_solde_reference_2_c, + MAX(date_solde_2_h) AS date_solde_reference_2_h, + MAX(date_solde_22_c) AS date_solde_reference_22_c, + MAX(date_solde_22_h) AS date_solde_reference_22_h + FROM w_factures + GROUP BY no_facture_reference; + + + CREATE INDEX w_factures_references_soldes_i1 + ON w_factures_references_soldes + USING btree + (no_facture_reference); + + + + + UPDATE activite[PX].p_factures + SET + date_expedition_0 = w_factures.date_expedition_0, + date_solde = w_factures.date_solde, + date_solde_c = w_factures.date_solde_c, + date_solde_h = w_factures.date_solde_h, + date_solde_0_c = w_factures.date_solde_0_c, + date_solde_0_h = w_factures.date_solde_0_h, + date_solde_1_c = w_factures.date_solde_1_c, + date_solde_1_h = w_factures.date_solde_1_h, + date_solde_2_c = w_factures.date_solde_2_c, + date_solde_2_h = w_factures.date_solde_2_h, + date_solde_22_c = w_factures.date_solde_22_c, + date_solde_22_h = w_factures.date_solde_22_h, + date_solde_reference = w_factures_references_soldes.date_solde_reference, + date_solde_reference_c = w_factures_references_soldes.date_solde_reference_c, + date_solde_reference_h = w_factures_references_soldes.date_solde_reference_h, + date_solde_reference_0_c = w_factures_references_soldes.date_solde_reference_0_c, + date_solde_reference_0_h = w_factures_references_soldes.date_solde_reference_0_h, + date_solde_reference_1_c = w_factures_references_soldes.date_solde_reference_1_c, + date_solde_reference_1_h = w_factures_references_soldes.date_solde_reference_1_h, + date_solde_reference_2_c = w_factures_references_soldes.date_solde_reference_2_c, + date_solde_reference_2_h = w_factures_references_soldes.date_solde_reference_2_h, + date_solde_reference_22_c = w_factures_references_soldes.date_solde_reference_22_c, + date_solde_reference_22_h = w_factures_references_soldes.date_solde_reference_22_h + FROM w_factures + JOIN w_factures_references_soldes ON w_factures_references_soldes.no_facture_reference = w_factures.no_facture_reference + WHERE p_factures.no_facture = w_factures.no_facture + AND ( + p_factures.date_expedition_0 IS DISTINCT FROM w_factures.date_expedition_0 OR + p_factures.date_solde IS DISTINCT FROM w_factures.date_solde OR + p_factures.date_solde_c IS DISTINCT FROM w_factures.date_solde_c OR + p_factures.date_solde_h IS DISTINCT FROM w_factures.date_solde_h OR + p_factures.date_solde_0_c IS DISTINCT FROM w_factures.date_solde_0_c OR + p_factures.date_solde_0_h IS DISTINCT FROM w_factures.date_solde_0_h OR + p_factures.date_solde_1_c IS DISTINCT FROM w_factures.date_solde_1_c OR + p_factures.date_solde_1_h IS DISTINCT FROM w_factures.date_solde_1_h OR + p_factures.date_solde_2_c IS DISTINCT FROM w_factures.date_solde_2_c OR + p_factures.date_solde_2_h IS DISTINCT FROM w_factures.date_solde_2_h OR + p_factures.date_solde_22_c IS DISTINCT FROM w_factures.date_solde_22_c OR + p_factures.date_solde_22_h IS DISTINCT FROM w_factures.date_solde_22_h OR + p_factures.date_solde_reference IS DISTINCT FROM w_factures_references_soldes.date_solde_reference OR + p_factures.date_solde_reference_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_c OR + p_factures.date_solde_reference_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_h OR + p_factures.date_solde_reference_0_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_0_c OR + p_factures.date_solde_reference_0_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_0_h OR + p_factures.date_solde_reference_1_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_1_c OR + p_factures.date_solde_reference_1_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_1_h OR + p_factures.date_solde_reference_2_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_2_c OR + p_factures.date_solde_reference_2_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_2_h OR + p_factures.date_solde_reference_22_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_22_c OR + p_factures.date_solde_reference_22_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_22_h + ); + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_factures CASCADE; + DROP TABLE IF EXISTS w_factures_references_soldes CASCADE; + + -- Elimination des protocoles sur avoirs et factures annulées pour comptage correct + DROP TABLE IF EXISTS w_correction_protocole + ; + CREATE TEMP TABLE w_correction_protocole AS + SELECT no_facture_reference, + (MAX(ARRAY[CASE WHEN p_factures_lignes_h.nb_prestation >= 0 THEN '1' ELSE '0' END, date_facture::text,p_factures.no_facture]))[3] AS no_facture_ok, + base.cti_array_accum(DISTINCT p_factures.no_facture) AS facture_array + FROM activite[PX].p_factures + JOIN activite[PX].p_factures_lignes_h ON p_factures.no_facture = p_factures_lignes_h.no_facture + WHERE p_factures.no_facture NOT LIKE '%BG' AND + protocole_id IS NOT NULL AND + protocole_id <> 0 + GROUP BY 1 + HAVING MIN(p_factures_lignes_h.montant_facture) < 0 + ; + ANALYSE w_correction_protocole + ; + + -- Etape internmédiaire pour avoir la colonne facture_array ligne par ligne (pour performance) + DROP TABLE IF EXISTS w_correction_protocole_factures_lignes; + CREATE TEMP TABLE w_correction_protocole_factures_lignes AS + SELECT no_facture_reference, + no_facture_ok, + UNNEST(facture_array::text[]) no_facture_par_ligne + FROM w_correction_protocole + ; + ANALYSE w_correction_protocole_factures_lignes + ; + + UPDATE activite[PX].p_factures_lignes_h + SET protocole_id = 0 + FROM w_correction_protocole_factures_lignes + WHERE p_factures_lignes_h.no_facture = no_facture_par_ligne AND + p_factures_lignes_h.no_facture <> no_facture_ok + ; + + -- Taux pour le budget global (actes inclus) + DROP TABLE IF EXISTS w_sejour_taux1; + CREATE TEMP TABLE w_sejour_taux1 AS + SELECT no_sejour, (MAX(ARRAY[p_factures.date_facture::text, taux_1::text]))[2]::numeric AS taux_1 + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE '[ENV_TYPEETS]' <> '1' AND + t_prestations.code = 'GHS' AND + code_facture = '1' AND + p_factures_lignes_c.montant_facture <> 0 + GROUP BY 1 + ; + + ANALYSE w_sejour_taux1 + ; + + INSERT INTO w_sejour_taux1 + SELECT p_factures.no_sejour, (MAX(ARRAY[p_factures.date_facture::text, p_factures_lignes_c.taux_1::text]))[2]::numeric AS taux_1 + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + LEFT JOIN w_sejour_taux1 ON p_factures.no_sejour = w_sejour_taux1.no_sejour + WHERE '[ENV_TYPEETS]' <> '1' AND + t_prestations.code = 'PJ' AND + code_facture = '1' AND + p_factures_lignes_c.montant_facture <> 0 AND + w_sejour_taux1.no_sejour IS NULL + GROUP BY 1 + ; + + UPDATE activite[PX].p_factures_lignes_h SET + taux_1 = w_sejour_taux1.taux_1 + FROM activite[PX].p_factures + JOIN w_sejour_taux1 ON p_factures.no_sejour = w_sejour_taux1.no_sejour + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + montant_facture_actes_inclus_dans_sejour <> 0 AND + p_factures_lignes_h.taux_1 <> w_sejour_taux1.taux_1 + ; + + + DROP TABLE IF EXISTS w_sejour_taux1_div; + CREATE TEMP TABLE w_sejour_taux1_div AS + SELECT no_sejour, acte_id, p_factures_lignes_h.date_debut, medecin_facture_id, MAX(taux_1) AS taux_1 + FROM activite[PX].p_factures_lignes_h + JOIN activite[PX].p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + WHERE '[ENV_TYPEETS]' <> '1' AND + montant_facture_actes_inclus_dans_sejour <> 0 + GROUP BY 1,2,3,4 + HAVING count(DISTINCT taux_1) > 1 + ; + + ANALYSE w_sejour_taux1_div + ; + + UPDATE activite[PX].p_factures_lignes_h SET + taux_1 = w_sejour_taux1_div.taux_1 + FROM activite[PX].p_factures + JOIN w_sejour_taux1_div ON p_factures.no_sejour = w_sejour_taux1_div.no_sejour + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + montant_facture_actes_inclus_dans_sejour <> 0 AND + p_factures.no_sejour = w_sejour_taux1_div.no_sejour AND + p_factures_lignes_h.acte_id = w_sejour_taux1_div.acte_id AND + p_factures_lignes_h.date_debut = w_sejour_taux1_div.date_debut AND + p_factures_lignes_h.medecin_facture_id = w_sejour_taux1_div.medecin_facture_id AND + p_factures_lignes_h.taux_1 <> w_sejour_taux1_div.taux_1 + ; + + ]]> + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.date_groupage, + p_sejours.ghs_id, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour, + + 0::numeric AS delai_groupage, + 0::numeric AS delai_facture, + 0::numeric AS delai_expedition, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_solde_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_solde_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_solde_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_22 + + FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY + p_sejours.no_sejour, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.date_groupage, + p_sejours.ghs_id + ; + + + UPDATE activite[PX].p_sejours + SET date_groupage = date_facture + WHERE (date_groupage IS null OR date_groupage = '20991231' OR date_groupage = '00010101') AND + date_facture <> '2099-12-31'; + + + UPDATE w_sejours_total SET + date_groupage = CASE WHEN date_groupage > '00010101' THEN date_groupage ELSE '20991231' END, + date_facture = CASE WHEN date_facture> '00010101' THEN date_facture ELSE '20991231' END, + date_expedition = CASE WHEN date_expedition > '00010101' THEN date_expedition ELSE '20991231' END, + date_solde = CASE WHEN date_solde > '00010101' THEN date_solde ELSE '20991231' END, + date_expedition_0 = CASE WHEN date_expedition_0 > '00010101' THEN date_expedition_0 ELSE '20991231' END, + date_solde_0 = CASE WHEN date_solde_0 > '00010101' THEN date_solde_0 ELSE '20991231' END, + date_expedition_1 = CASE WHEN date_expedition_1 > '00010101' THEN date_expedition_1 ELSE '20991231' END, + date_solde_1 = CASE WHEN date_solde_1 > '00010101' THEN date_solde_1 ELSE '20991231' END, + date_expedition_2 = CASE WHEN date_expedition_2 > '00010101' THEN date_expedition_2 ELSE '20991231' END, + date_solde_2 = CASE WHEN date_solde_2 > '00010101' THEN date_solde_2 ELSE '20991231' END, + date_expedition_22 = CASE WHEN date_expedition_22 > '00010101' THEN date_expedition_22 ELSE '20991231' END, + date_solde_22 = CASE WHEN date_solde_22 > '00010101' THEN date_solde_22 ELSE '20991231' END; + + + UPDATE w_sejours_total SET + delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END, + delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END, + delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END, + delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END, + delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END, + delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END, + delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END, + delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END, + delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END, + delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END, + delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END, + delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END; + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = w_sejours_total.date_expedition_0, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = w_sejours_total.date_expedition_1, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = w_sejours_total.date_expedition_2, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = w_sejours_total.date_expedition_22, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour, + + + delai_groupage = w_sejours_total.delai_groupage, + delai_facture = w_sejours_total.delai_facture, + delai_expedition = w_sejours_total.delai_expedition, + delai_solde = w_sejours_total.delai_solde, + delai_expedition_0 = w_sejours_total.delai_expedition_0, + delai_solde_0 = w_sejours_total.delai_solde_0, + delai_expedition_1 = w_sejours_total.delai_expedition_1, + delai_solde_1 = w_sejours_total.delai_solde_1, + delai_expedition_2 = w_sejours_total.delai_expedition_2, + delai_solde_2 = w_sejours_total.delai_solde_2, + delai_expedition_22 = w_sejours_total.delai_expedition_22, + delai_solde_22 = w_sejours_total.delai_solde_22 + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM w_sejours_total.date_expedition_0 OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM w_sejours_total.date_expedition_1 OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM w_sejours_total.date_expedition_2 OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM w_sejours_total.date_expedition_22 OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour OR + + p_sejours.delai_groupage IS DISTINCT FROM w_sejours_total.delai_groupage OR + p_sejours.delai_facture IS DISTINCT FROM w_sejours_total.delai_facture OR + p_sejours.delai_expedition IS DISTINCT FROM w_sejours_total.delai_expedition OR + p_sejours.delai_solde IS DISTINCT FROM w_sejours_total.delai_solde OR + p_sejours.delai_expedition_0 IS DISTINCT FROM w_sejours_total.delai_expedition_0 OR + p_sejours.delai_solde_0 IS DISTINCT FROM w_sejours_total.delai_solde_0 OR + p_sejours.delai_expedition_1 IS DISTINCT FROM w_sejours_total.delai_expedition_1 OR + p_sejours.delai_solde_1 IS DISTINCT FROM w_sejours_total.delai_solde_1 OR + p_sejours.delai_expedition_2 IS DISTINCT FROM w_sejours_total.delai_expedition_2 OR + p_sejours.delai_solde_2 IS DISTINCT FROM w_sejours_total.delai_solde_2 OR + p_sejours.delai_expedition_22 IS DISTINCT FROM w_sejours_total.delai_expedition_22 OR + p_sejours.delai_solde_22 IS DISTINCT FROM w_sejours_total.delai_solde_22 + + ); + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_sejours_total CASCADE; + + + ]]> + + + + + + + + + + + + + + + + = '[ENV_ADM_ANNEEDEBUT]1201' AND + FACT_DAT_SUP IS NULL + GROUP BY 1 + ORDER BY 1; + + CREATE INDEX w_FACT_DAT_DER_CALCUL_i1 ON w_FACT_DAT_DER_CALCUL USING btree (date_encours); + + -- encours sur medecins salaries + DROP TABLE IF EXISTS w_factures_encours_salaries; + CREATE TEMP TABLE w_factures_encours_salaries AS + SELECT + LFAC_ID_FACT, + SUM(LFAD_MTT_HOR_DEH + LFAD_MTT_DEH) AS montant_encours_salaries, + SUM(CASE WHEN FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) AS montant_encours_salaries_0, + SUM(CASE WHEN FACD_ID_ORGA_AMO > 0 THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) AS montant_encours_salaries_1, + SUM(CASE WHEN FACD_ID_ORGA_AMC > 0 THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) AS montant_encours_salaries_2, + 0::numeric AS montant_encours_22 + FROM prod_hm.FAC_LIGNE_FACTURE + JOIN prod_hm.FAC_LIGNE_FACTURE_DEBITEUR ON LFAD_ID_LFAC = LFAC_ID_LFAC + JOIN prod_hm.FAC_FACTURE_DEBITEUR ON LFAD_ID_FACD = FACD_ID_FACD + WHERE LFAC_ID_PRHO <> 0 AND LFAC_CDT_EXC = 'S' + GROUP BY 1 + ORDER BY 1; + + CREATE INDEX w_factures_encours_salaries_i1 ON w_factures_encours_salaries USING btree (LFAC_ID_FACT); + + + -- entetes factures encours + + DROP TABLE IF EXISTS w_factures_references; + CREATE TEMP TABLE w_factures_references AS + SELECT + no_sejour, + date_fin, + MIN(date_debut) AS date_debut, + MAX(no_facture) AS no_facture + FROM activite[PX].p_factures + WHERE no_facture_reference = no_facture AND code_facture >= '1' + GROUP BY 1,2; + + CREATE INDEX w_factures_references_i1 ON w_factures_references USING btree (no_sejour); + + + DROP TABLE IF EXISTS w_factures_encours; + CREATE TEMP TABLE w_factures_encours AS + SELECT + 0::bigint AS oid, + FACT_ID_FACT, + p_sejours.finess, + p_sejours.no_sejour, + p_sejours.date_entree, + p_sejours.date_sortie, + p_sejours.oid AS sejour_id, + p_sejours.lieu_sortie_id, + COALESCE(w_factures_references.no_facture,'ID' || FACT_ID_FACT) || '.EP' || substr(to_char(date_part('year', w_FACT_DAT_DER_CALCUL.date_encours),'FM0000'),3,2) || to_char(date_part('month', w_FACT_DAT_DER_CALCUL.date_encours),'FM00') AS no_facture, + w_factures_references.no_facture AS no_facture_reference, + date(FACT_DAT_DEB_FAC) AS date_debut, + date(FACT_DAT_FIN_FAC) AS date_fin, + w_FACT_DAT_DER_CALCUL.date_encours, + 'P'::text AS code_origine, + CASE WHEN date(FACT_DAT_FIN_FAC) > date_encours OR SEJO_STATUT NOT IN ('S', 'M') OR date(SEJO_DAT_FIN) > date_encours THEN '0' ELSE '1' END AS code_sorti, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.tiers_payant_0_id, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id, + p_sejours.code_cp_demandee, + FACT_MTT_CAI_SEJ + FACT_MTT_MUT_SEJ + FACT_MTT_PAT_SEJ + COALESCE(montant_encours_salaries,0) AS montant_encours_c, + FACT_MTT_PAT_SEJ + COALESCE(montant_encours_salaries_0,0) AS montant_encours_0_c, + FACT_MTT_CAI_SEJ + COALESCE(montant_encours_salaries_1,0) AS montant_encours_1_c, + FACT_MTT_MUT_SEJ + COALESCE(montant_encours_salaries_2,0) AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + p_sejours.type_sejour + FROM prod_hm.FAC_FACTURE + JOIN w_FACT_DAT_DER_CALCUL ON date(FAC_FACTURE.FACT_DAT_DER_CALCUL) = w_FACT_DAT_DER_CALCUL.FACT_DAT_DER_CALCUL AND + date(date_trunc('month', fact_dat_fac) + interval '1 month' - interval '1 day') = date_encours + JOIN prod_hm.IDE_SEJOUR ON FACT_ID_SEJO = SEJO_ID_SEJO + JOIN activite[PX].p_sejours ON code_original = FACT_ID_SEJO + LEFT JOIN w_factures_references ON p_sejours.no_sejour = w_factures_references.no_sejour AND + date(FACT_DAT_FIN_FAC) BETWEEN w_factures_references.date_debut AND w_factures_references.date_fin + LEFT JOIN w_factures_encours_salaries ON w_factures_encours_salaries.LFAC_ID_FACT = FACT_ID_FACT + WHERE FACT_TYPE = 'E' AND + FACT_ID_ECRI_ENC <> 0 + ; + + CREATE INDEX w_factures_encours_i1 ON w_factures_encours USING btree (FACT_ID_FACT); + + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_11'); + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_lignes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_lignes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_lignes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_lignes_c_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_lignes_c_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_lignes_c_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_lignes_c_8'); + + DELETE FROM activite[PX].p_factures_encours WHERE code_origine = 'P'; + DELETE FROM activite[PX].p_factures_encours_lignes_c + WHERE NOT EXISTS ( + SELECT no_facture FROM activite[PX].p_factures_encours + WHERE p_factures_encours.no_facture = p_factures_encours_lignes_c.no_facture + ) + ; + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_lignes_c_1'); + + INSERT INTO activite[PX].p_factures_encours( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + date_encours, + code_origine, + code_sorti, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + type_sejour + ) + SELECT + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + date_encours, + code_origine, + code_sorti, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + type_sejour + FROM w_factures_encours; + + UPDATE w_factures_encours SET oid = p_factures_encours.oid + FROM activite[PX].p_factures_encours + WHERE w_factures_encours.no_facture = p_factures_encours.no_facture; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_1'); + + DROP SEQUENCE IF EXISTS w_factures_encours_lignes_c_sequence; + CREATE TEMP SEQUENCE w_factures_encours_lignes_c_sequence; + + DROP TABLE IF EXISTS w_factures_encours_lignes_c; + CREATE TEMP TABLE w_factures_encours_lignes_c AS + SELECT + nextval('w_factures_encours_lignes_c_sequence'::regclass) AS oid, + no_sejour, + LFAC_ID_LFAC, + w_factures_encours.oid AS facture_id, + w_factures_encours.no_facture, + w_factures_encours.date_entree, + w_factures_encours.date_sortie, + date(LFAC_DAT_EXE_DEB) AS date_debut, + date(LFAC_DAT_EXE_FIN) AS date_fin, + LFAC_QTE_COEFFICIENT AS nb_rubrique, + 1::numeric AS coefficient, + LFAC_COE_MCO_HAD AS coefficient_mco, + COALESCE(t_rubriques_facturation_PRSE.oid,t_rubriques_facturation_PRHO.oid, 0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation_PRSE.oid,t_rubriques_facturation_PRHO.oid, 0) AS rubrique_comptabilisation_id, + MAX(COALESCE(t_compte.oid::bigint, 0)) AS compte_produit_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + + 0::numeric AS taux_22, + LFAC_PRI_UNITAIRE AS prix_unitaire, + w_factures_encours.lieu_sortie_id AS lieu_id, + LFAC_QTE_COEFFICIENT AS nb_prestation, + + MAX(LFAC_ID_PRSE) AS LFAC_ID_PRSE, + MAX(LFAC_ID_PRHO) AS LFAC_ID_PRHO, + + MAX(CASE WHEN FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN 100-LFAD_TAUX ELSE 0 END) AS taux_0, + MAX(CASE WHEN FACD_ID_ORGA_AMO > 0 THEN LFAD_TAUX ELSE 0 END) AS taux_1, + MAX(CASE WHEN FACD_ID_ORGA_AMC > 0 THEN 100-LFAD_TAUX ELSE 0 END) AS taux_2, + SUM(LFAD_MTT_HOR_DEH + LFAD_MTT_DEH) AS montant_encours, + SUM(CASE WHEN FACD_ID_ORGA_AMO = 0 AND FACD_ID_ORGA_AMC = 0 THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) AS montant_encours_0, + SUM(CASE WHEN FACD_ID_ORGA_AMO > 0 THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) AS montant_encours_1, + SUM(CASE WHEN FACD_ID_ORGA_AMC > 0 THEN LFAD_MTT_HOR_DEH + LFAD_MTT_DEH ELSE 0 END) AS montant_encours_2, + 0::numeric AS montant_encours_22 + FROM prod_hm.FAC_LIGNE_FACTURE + JOIN w_factures_encours ON FACT_ID_FACT = LFAC_ID_FACT + JOIN prod_hm.FAC_LIGNE_FACTURE_DEBITEUR ON LFAD_ID_LFAC = LFAC_ID_LFAC + JOIN prod_hm.FAC_FACTURE_DEBITEUR ON LFAD_ID_FACD = FACD_ID_FACD + LEFT JOIN activite[PX].t_rubriques_facturation t_rubriques_facturation_PRSE ON LFAC_ID_PRSE::bigint = t_rubriques_facturation_PRSE.code_original AND LFAC_ID_PRSE <> 0 + LEFT JOIN activite[PX].t_rubriques_facturation t_rubriques_facturation_PRHO ON LFAC_ID_PRHO::bigint = t_rubriques_facturation_PRHO.code_original AND LFAC_ID_PRHO <> 0 + LEFT JOIN activite.t_prestations ON LFAC_LET_CLE = t_prestations.code + LEFT JOIN w_FAC_LIGNE_FACTURE_DEBITEUR_compte ON LECR_ID_LFAD = LFAD_ID_LFAD + LEFT JOIN activite[PX].t_compte ON (LECR_NUM_COMPTE = t_compte.code_original) + WHERE (LFAC_ID_PRSE <> 0 OR (LFAC_ID_PRHO <> 0 AND LFAC_CDT_EXC = 'S')) AND + LFAD_IND_BGH <> '1' AND + (LFAD_MTT_HOR_DEH + LFAD_MTT_DEH) <> 0 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,18,19,20 + ORDER BY 1; + + -- Compte par défaut si pas trouvé en compta + DROP TABLE IF EXISTS w_PAD_PRESTATION_SEJOUR; + CREATE TEMP TABLE w_PAD_PRESTATION_SEJOUR AS + SELECT *, + ''::text AS CPTE_NUM_COMPTE_defaut, + 0::bigint AS compte_id + FROM prod_hm.PAD_PRESTATION_SEJOUR + ; + + UPDATE w_PAD_PRESTATION_SEJOUR + SET CPTE_NUM_COMPTE_defaut = CPTE_NUM_COMPTE + FROM (SELECT + CPTP_ID_PRSE, (MAX(ARRAY[CPTP_DAT_CRE::text,CPTE_NUM_COMPTE]))[2] AS CPTE_NUM_COMPTE + FROM prod_hm.CCL_COMPTE_PRESTATION + JOIN prod_hm.CCL_COMPTE ON CPTP_ID_CPTE = CPTE_ID_CPTE + WHERE CPTP_ID_PRSE <> 0 + GROUP BY 1 + ) subview + WHERE PRSE_ID_PRSE = CPTP_ID_PRSE + ; + + UPDATE w_PAD_PRESTATION_SEJOUR + SET CPTE_NUM_COMPTE_defaut = CPTE_NUM_COMPTE + FROM (SELECT + CPTP_ID_CAPR, (MAX(ARRAY[CPTP_DAT_CRE::text,CPTE_NUM_COMPTE]))[2] AS CPTE_NUM_COMPTE + FROM prod_hm.CCL_COMPTE_PRESTATION + JOIN prod_hm.CCL_COMPTE ON CPTP_ID_CPTE = CPTE_ID_CPTE + WHERE CPTP_ID_CAPR <> 0 + GROUP BY 1 + ) subview + WHERE CPTE_NUM_COMPTE_defaut = '' AND + PRSE_ID_CAPR = CPTP_ID_CAPR + ; + + UPDATE w_PAD_PRESTATION_SEJOUR + SET compte_id = t_compte.oid + FROM activite[PX].t_compte + WHERE CPTE_NUM_COMPTE_defaut = code_original + ; + + DROP TABLE IF EXISTS w_PAD_PRESTATION_HONORAIRE; + CREATE TEMP TABLE w_PAD_PRESTATION_HONORAIRE AS + SELECT *, + ''::text AS CPTE_NUM_COMPTE_defaut, + 0::bigint AS compte_id + FROM prod_hm.PAD_PRESTATION_HONORAIRE + ; + + UPDATE w_PAD_PRESTATION_HONORAIRE + SET CPTE_NUM_COMPTE_defaut = CPTE_NUM_COMPTE + FROM (SELECT + CPTP_ID_PRHO, (MAX(ARRAY[CPTP_DAT_CRE::text,CPTE_NUM_COMPTE]))[2] AS CPTE_NUM_COMPTE + FROM prod_hm.CCL_COMPTE_PRESTATION + JOIN prod_hm.CCL_COMPTE ON CPTP_ID_CPTE = CPTE_ID_CPTE + WHERE CPTP_ID_PRHO <> 0 + GROUP BY 1 + ) subview + WHERE PRHO_ID_PRHO = CPTP_ID_PRHO + ; + + UPDATE w_PAD_PRESTATION_HONORAIRE + SET CPTE_NUM_COMPTE_defaut = CPTE_NUM_COMPTE + FROM (SELECT + CPTP_ID_CAPR, (MAX(ARRAY[CPTP_DAT_CRE::text,CPTE_NUM_COMPTE]))[2] AS CPTE_NUM_COMPTE + FROM prod_hm.CCL_COMPTE_PRESTATION + JOIN prod_hm.CCL_COMPTE ON CPTP_ID_CPTE = CPTE_ID_CPTE + WHERE CPTP_ID_CAPR <> 0 + GROUP BY 1 + ) subview + WHERE CPTE_NUM_COMPTE_defaut = '' AND + PRHO_ID_CAPR = CPTP_ID_CAPR + ; + + UPDATE w_PAD_PRESTATION_honoraire + SET compte_id = t_compte.oid + FROM activite[PX].t_compte + WHERE CPTE_NUM_COMPTE_defaut = code_original + ; + + UPDATE w_factures_encours_lignes_c + SET compte_produit_id = compte_id + FROM w_PAD_PRESTATION_SEJOUR + WHERE LFAC_ID_PRSE <> 0 AND + compte_produit_id = 0 AND + LFAC_ID_PRSE = PRSE_ID_PRSE + ; + UPDATE w_factures_encours_lignes_c + SET compte_produit_id = compte_id + FROM w_PAD_PRESTATION_HONORAIRE + WHERE LFAC_ID_PRHO <> 0 AND + compte_produit_id = 0 AND + LFAC_ID_PRHO = PRHO_ID_PRHO + ; + + + + + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c; + CREATE TEMP TABLE w_factures_encours_lignes_sup_c AS + SELECT + w_factures_encours_lignes_c.oid AS from_oid, + t_prestations.code AS prestation_code, + date(date_debut) AS date_debut_ghs, + date(date_fin - interval '1 day') AS date_fin_ghs, + (date(date_fin) - date(date_debut)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN t_prestations.code = 'GHS' THEN date(w_factures_encours_lignes_c.date_entree + interval '1 day') ELSE date(w_factures_encours_lignes_c.date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN t_prestations.code = 'GHS' THEN date(w_factures_encours_lignes_c.date_sortie - interval '1 day') ELSE date(w_factures_encours_lignes_c.date_debut + ((ABS(nb_prestation)-1) || ' day')::interval) END AS date_fin_det, + ABS(CASE WHEN t_prestations.code = 'GHS' THEN date(w_factures_encours_lignes_c.date_sortie) - date(w_factures_encours_lignes_c.date_entree) ELSE nb_prestation END) AS nb_det, + w_factures_encours_lignes_c.* + FROM w_factures_encours_lignes_c + JOIN activite[PX].p_sejours ON w_factures_encours_lignes_c.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + ( + code IN ('PJ', 'PJ1', 'PJ2', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (t_prestations.code = 'GHS' AND date(date_fin) - date(date_debut) > 1)) ; + + + UPDATE w_factures_encours_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM w_factures_encours_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_encours_lignes_sup_c.no_facture = subview.no_facture; + + CREATE INDEX w_factures_encours_lignes_sup_c_i1 + ON w_factures_encours_lignes_sup_c + USING btree + (date_debut); + + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c_gen; + CREATE TEMP TABLE w_factures_encours_lignes_sup_c_gen AS + SELECT + from_oid, + ''::text AS finess, + no_sejour, + no_facture, + facture_id, + date AS date_debut, + date AS date_fin, + lieu_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + prix_unitaire, + oid, + taux_0, + taux_1, + taux_2, + taux_22, + round(montant_encours / ABS(nb_det),2) AS montant_encours, + round(montant_encours_0 / ABS(nb_det),2) AS montant_encours_0, + round(montant_encours_1 / ABS(nb_det),2) AS montant_encours_1, + round(montant_encours_2 / ABS(nb_det),2) AS montant_encours_2, + round(montant_encours_22 / ABS(nb_det),2) AS montant_encours_22 + FROM w_factures_encours_lignes_sup_c + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_det AND date_fin_det ; + + + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c_gen_tot; + CREATE TEMP TABLE w_factures_encours_lignes_sup_c_gen_tot AS + SELECT from_oid, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22 + FROM w_factures_encours_lignes_sup_c_gen + GROUP BY 1; + + + UPDATE w_factures_encours_lignes_c + SET + date_fin = w_factures_encours_lignes_c.date_debut, + nb_rubrique = w_factures_encours_lignes_c.nb_rubrique - w_factures_encours_lignes_sup_c_gen_tot.nb_rubrique, + nb_prestation = w_factures_encours_lignes_c.nb_prestation - w_factures_encours_lignes_sup_c_gen_tot.nb_prestation, + montant_encours = w_factures_encours_lignes_c.montant_encours - w_factures_encours_lignes_sup_c_gen_tot.montant_encours, + montant_encours_0 = w_factures_encours_lignes_c.montant_encours_0 - w_factures_encours_lignes_sup_c_gen_tot.montant_encours_0, + montant_encours_1 = w_factures_encours_lignes_c.montant_encours_1 - w_factures_encours_lignes_sup_c_gen_tot.montant_encours_1, + montant_encours_2 = w_factures_encours_lignes_c.montant_encours_2 - w_factures_encours_lignes_sup_c_gen_tot.montant_encours_2, + montant_encours_22 = w_factures_encours_lignes_c.montant_encours_22 - w_factures_encours_lignes_sup_c_gen_tot.montant_encours_22 + FROM w_factures_encours_lignes_sup_c_gen_tot + WHERE w_factures_encours_lignes_c.oid = from_oid; + + + INSERT INTO w_factures_encours_lignes_c( + oid, + no_sejour, + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22) + SELECT + nextval('w_factures_encours_lignes_c_sequence'::regclass) AS oid, + no_sejour, + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + FROM w_factures_encours_lignes_sup_c_gen; + + + + UPDATE w_factures_encours_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE w_factures_encours_lignes_c.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_encours_lignes_c.date_debut = p_mouvements_sejour.date AND + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_sorties_directes = 1) AND + w_factures_encours_lignes_c.lieu_id IS DISTINCT FROM p_mouvements_sejour.lieu_id; + + + + INSERT INTO activite[PX].p_factures_encours_lignes_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + FROM w_factures_encours_lignes_c; + + + SELECT base.cti_vacuum_table('activite[PX]','p_factures_encours'); + SELECT base.cti_vacuum_table('activite[PX]','p_factures_encours_lignes_c'); + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_8'); + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_11'); + + -- Correction pour factures encours HM en double + UPDATE activite[PX].p_factures_encours + SET no_facture = p_factures_encours.no_facture ||'('||nb::text||')' + FROM + ( + SELECT no_facture, count(*) AS nb, MAX(oid) AS oid_dup + FROM activite[PX].p_factures_encours + WHERE p_factures_encours.code_origine = 'P' + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE p_factures_encours.no_facture = subview.no_facture AND + p_factures_encours.oid = subview.oid_dup + ; + + UPDATE activite[PX].p_factures_encours_lignes_c + SET facture_id = p_factures_encours.oid + FROM activite[PX].p_factures_encours + WHERE p_factures_encours.no_facture = p_factures_encours_lignes_c.no_facture AND + p_factures_encours.code_origine = 'P' AND + facture_id <> p_factures_encours.oid + ; + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_factures_encours_salaries CASCADE; + DROP TABLE IF EXISTS w_factures_references CASCADE; + DROP TABLE IF EXISTS w_FAC_FACTURE_DAT_CRE CASCADE; + DROP TABLE IF EXISTS w_factures_encours CASCADE; + DROP TABLE IF EXISTS w_factures_encours_lignes_c CASCADE; + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c CASCADE; + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c_gen CASCADE; + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c_gen_tot CASCADE; + + ]]> + + + + + + diff --git a/import_activite/iCTI_import_activite_MEDERI.XML b/import_activite/iCTI_import_activite_MEDERI.XML new file mode 100644 index 0000000..4818f04 --- /dev/null +++ b/import_activite/iCTI_import_activite_MEDERI.XML @@ -0,0 +1,6296 @@ + + + + + + + + + + + + = '[ENV_ADM_ANNEEDEBUT]0101') sub, + (SELECT greatest( + max(CASE WHEN DATEENTREE <= now() THEN DATEENTREE ELSE '1900-01-01' END), + max(CASE WHEN DATESORTIE <= now() THEN DATESORTIE ELSE '1900-01-01' END)) + as max_sej FROM prod_mederi.KDOSSIER WHERE TYPDOS != 4 + AND DATEENTREE >= '[ENV_ADM_ANNEEDEBUT]0101' + ) sub2; + + -- Corrections TP + UPDATE prod_mederi.KDOSSIER + SET COORGDEST = subview.COORGDEST + FROM (SELECT substr(COORGDEST,1,10) AS COORGDEST10, MAX(COORGDEST) AS COORGDEST, count(*) FROM prod_mederi.KORGDEST WHERE LENGTH(COORGDEST) > 10 GROUP BY 1) subview + WHERE KDOSSIER.COORGDEST = subview.COORGDEST10 + ; + UPDATE prod_mederi.KDOSSIER + SET COORGDEST = 'PATIENT' + WHERE COALESCE(COORGDEST,'') = '' AND 'PATIENT' IN (SELECT trim(COORGDEST) FROM prod_mederi.KORGDEST WHERE COORGDEST LIKE 'PAT%') + ; + + -- Corrections RSS + DROP TABLE IF EXISTS w_KRSS; + CREATE TEMP TABLE w_KRSS AS + SELECT * + FROM prod_mederi.KRSS + ; + + ANALYSE w_KRSS + ; + + DELETE FROM w_KRSS + USING + ( + SELECT K5CLEUNIK, count(*), + (MAX(ARRAY[RSSCMDGHM, RSSSORT::text, CTID::text]))[3]::TID AS keep_CTID + FROM w_KRSS + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE w_KRSS.K5CLEUNIK = subview.K5CLEUNIK AND + w_KRSS.CTID <> subview.keep_CTID + ; + + DELETE FROM w_KRSS + USING + ( + SELECT NODOSSIER, count(*), + (MAX(ARRAY[RSSCMDGHM, RSSSORT::text, K5CLEUNIK::text, CTID::text]))[4]::TID AS keep_CTID + FROM w_KRSS + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE w_KRSS.NODOSSIER = subview.NODOSSIER AND + w_KRSS.CTID <> subview.keep_CTID + ; + + + -- vérifications des séjours + + + DROP TABLE IF EXISTS w_DOSSIER; + CREATE TEMP TABLE w_DOSSIER AS + SELECT + date_extraction, + NOFITNESS, + KDOSSIER.* , + COALESCE(DATESORTIE, '20991231') AS date_sortie, + 'N'::text AS CTI_OK, + ''::text AS dup_type_sejour, + '0'::text AS dup_code_prevu, + 0::bigint AS dup_sejour_id, + 0::bigint AS dup_medecin_sejour_id, + ''::text AS dup_etat, + rank() OVER (PARTITION BY KDOSSIER.NODOSSIER ORDER BY DATESORTIE, HEURESOR, K5CLEUNIK) as rank, + K5CLEUNIK + FROM w_periode,prod_mederi.KDOSSIER + LEFT JOIN w_KRSS KRSS ON KDOSSIER.NODOSSIER = KRSS.NODOSSIER + , prod_mederi.ETABLI --LEFT JOIN prod_mederi.ETABLI ON KDOSSIER.NOETABLI = ETABLI.NOETABLI + WHERE KDOSSIER.NODOSSIER IS NOT NULL AND + DATEENTREE IS NOT NULL AND + ( + COALESCE(DATESORTIE,RSSSORT,'20991231') >= '[ENV_ADM_ANNEEDEBUT]0101' OR + KDOSSIER.NODOSSIER IN (SELECT NODOSSIER FROM w_KFACTURE KFACTURE WHERE DATEFAC >= '[ENV_ADM_ANNEEDEBUT]0101' OR DATECOMPTA >= '[ENV_ADM_ANNEEDEBUT]0101' OR DATECOMPTA IS NULL) OR + KDOSSIER.NODOSSIER IN (SELECT NODOSSIER FROM w_KREGL KREGL WHERE DATE >= '[ENV_ADM_ANNEEDEBUT]0101' OR DATECOMPTA >= '[ENV_ADM_ANNEEDEBUT]0101' ) + ) + ORDER BY NODOSSIER, K5CLEUNIK; + + ANALYSE w_DOSSIER + ; + + + -- Suppression des séjours sans mouvemlent, sans facture, sans reglement + DELETE + FROM w_dossier + WHERE NODOSSIER NOT IN (SELECT KSEJOUR.NODOSSIER FROM prod_mederi.KSEJOUR WHERE KSEJOUR.NODOSSIER IS NOT NULL) AND + NODOSSIER NOT IN (SELECT KFACTURE.NODOSSIER FROM prod_mederi.KFACTURE WHERE KFACTURE.NODOSSIER IS NOT NULL) AND + NODOSSIER NOT IN (SELECT KRGLDET.NODOSSIER FROM prod_mederi.KRGLDET WHERE KRGLDET.NODOSSIER IS NOT NULL) + ; + + + -- Heure entrée non saisie + UPDATE w_DOSSIER + SET HEUREENT = '08:00:00' + WHERE HEUREENT IS NULL AND + DATEENTREE = DATESORTIE AND + HEURESOR > '08:00:00' + ; + UPDATE w_DOSSIER + SET HEUREENT = '07:00:00' + WHERE HEUREENT IS NULL AND + DATEENTREE = DATESORTIE AND + HEURESOR >= '07:00:00' + ; + + -- date entrée > datedeb + UPDATE w_DOSSIER + SET + DATEENTREE = KSEJOUR.DATEDEB, + HEUREENT = KSEJOUR.HEUREDEB + FROM prod_mederi.KSEJOUR + WHERE + DATEENTREE > w_DOSSIER.DATEDEB + AND KSEJOUR.NODOSSIER = w_DOSSIER.NODOSSIER + AND w_DOSSIER.DATEDEB = KSEJOUR.DATEDEB; + + + UPDATE w_DOSSIER + SET + NODOSSIER = NODOSSIER || '_' || rank + WHERE rank != 1; + + -- modification de la table des rss pour prendre en compte les rss multiples par séjour + + UPDATE w_KRSS KRSS + SET + NODOSSIER = w_DOSSIER.NODOSSIER + FROM w_DOSSIER + WHERE KRSS.K5CLEUNIK = w_DOSSIER.K5CLEUNIK + ; + + CREATE INDEX w_dossier_i1 + ON w_dossier + USING btree + (NODOSSIER); + + ANALYSE W_DOSSIER; + + -- Numéros de factures en double + + + + ]]> + + + + + + + + + + + + '') + ; + + DROP TABLE IF EXISTS w_prod_mederi_knip_2 + ; + + CREATE TEMP TABLE w_prod_mederi_knip_2 AS + SELECT + NIP, + NOMPAT, + PRENOMPAT, + MAX(NOMJFILLE) AS NOMJFILLE, + SEXE, + DATENAIS, + NOMUSUEL, + MAX(NIPEXT) AS NIPEXT, + NOSS, + CLESS, + INSC, + MAX(NICLEUNIK) AS NICLEUNIK + FROM w_prod_mederi_knip + GROUP BY NIP, + NOMPAT, + PRENOMPAT, + SEXE, + DATENAIS, + NOMUSUEL, + NOSS, + CLESS, + INSC + ; + + DROP TABLE IF EXISTS w_prod_mederi_knip_3 + ; + + CREATE TEMP TABLE w_prod_mederi_knip_3 AS + SELECT + NIP, + NIP AS NIP2, + NOMPAT, + PRENOMPAT, + NOMJFILLE, + SEXE, + DATENAIS, + NOMUSUEL, + NIPEXT, + NOSS, + CLESS, + INSC, + MAX(NICLEUNIK) AS NICLEUNIK + FROM w_prod_mederi_knip_2 + GROUP BY NIP, + NOMPAT, + PRENOMPAT, + NOMJFILLE, + SEXE, + DATENAIS, + NOMUSUEL, + NIPEXT, + NOSS, + CLESS, + INSC + ; + + UPDATE w_prod_mederi_knip_3 + SET NOMUSUEL = NOMPAT + WHERE NOMUSUEL IS NULL + ; + + -- Cas de NIP en double + UPDATE w_prod_mederi_knip_3 + SET NIP2 = subview.to_NIP2 + FROM + ( + SELECT NIP2, MAX(NICLEUNIK) AS NICLEUNIK, MAX(NIP)||'-'||count(*)::text AS to_NIP2 + FROM w_prod_mederi_knip_3 + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE w_prod_mederi_knip_3.NICLEUNIK = subview.NICLEUNIK + ; + + + INSERT INTO activite[PX].p_patients(finess, no_patient, nom, prenom, date_naissance, code_sexe) + SELECT '', NIP2, MAX(NOMUSUEL), max(PRENOMPAT), date(MAX(DATENAIS)), MAX(sexe) + FROM w_prod_mederi_knip_3 + LEFT JOIN activite[PX].p_patients ON (NIP = p_patients.no_patient) + WHERE p_patients.no_patient IS NULL and NIP IS NOT NULL + GROUP BY 2 + ; + + + + + UPDATE activite[PX].p_patients + SET nom = NOMUSUEL, + prenom = PRENOM, + date_naissance = date(DATENAIS), + code_sexe = SEXE + FROM w_prod_mederi_knip_3 + WHERE p_patients.no_patient = NIP2 + AND ( + p_patients.nom IS DISTINCT FROM NOMUSUEL OR + p_patients.prenom IS DISTINCT FROM PRENOMPAT OR + p_patients.date_naissance IS DISTINCT FROM date(DATENAIS) OR + p_patients.code_sexe IS DISTINCT FROM SEXE + ); + + + ]]> + + + + 0) + GROUP BY 1; + + ALTER TABLE w_PEC_DOSSIER ADD CONSTRAINT w_PEC_DOSSIER_pkey PRIMARY KEY(NODOSSIER); + + DROP TABLE IF EXISTS w_sejours; + CREATE TEMP TABLE w_sejours AS + SELECT + CASE WHEN DATEENTREE > now() THEN 'W' || w_DOSSIER.NODOSSIER ELSE w_DOSSIER.NODOSSIER END as no_sejour, + w_DOSSIER.NODOSSIER as code_original, + NIP as no_patient, + DATEENTREE as date_entree, + replace(HEUREENT,':','')::bigint as heure_entree, + CASE WHEN DATESORTIE IS NOT NULL THEN DATESORTIE ELSE '20991231'::date END as date_sortie, + replace(HEURESOR,':','')::numeric as heure_sortie, + w_DOSSIER.SEXE as code_sexe, + 0 AS age, + CASE WHEN DATESORTIE <= date(now()) THEN 1 ELSE 0 END as code_sorti, + CASE WHEN TYPDOS = 4 OR DATEENTREE > now() THEN 1 ELSE 0 END as code_prevu, + CASE + WHEN TYPDOS = 1 THEN 1::int + WHEN TYPDOS = 2 THEN 3::int + WHEN TYPDOS = 3 THEN CASE WHEN RSSCMDGHM LIKE '28%' THEN 5::int ELSE 2::int END + WHEN TYPDOS = 6 THEN 3::int + WHEN TYPDOS = 4 AND DATEENTREE = DATEPREV THEN 9::int + WHEN TYPDOS = 4 AND DATEENTREE != DATEPREV THEN 9::int + ELSE 1::int END as type_sejour, + COALESCE(t_medecins_administratifs.oid,0) as medecin_sejour_id, + 0 as ghs_id, + '20991231'::date as date_groupage, + CASE WHEN DUREECP > 1 THEN 1 ELSE 0 END AS code_cp_demandee, + 0 as mode_traitement_id, + '8'::character(1) as mode_entree, + '0'::character(1) as provenance, + '8'::character(1) as mode_sortie, + '0'::character(1) as destination, + COALESCE(tiers_payant_0_id,0) AS tiers_payant_0_id, + COALESCE(tiers_payant_1_id,0) AS tiers_payant_1_id, + COALESCE(tiers_payant_2_id,0) AS tiers_payant_2_id, + 0 AS tiers_payant_22_id, + 0 AS est_budget_global, -- seulement pour privé pour l'instant + w_DOSSIER.NOFITNESS as finess + FROM w_DOSSIER + LEFT JOIN w_KRSS KRSS ON w_DOSSIER.NODOSSIER = KRSS.NODOSSIER + LEFT JOIN activite[PX].t_medecins_administratifs ON w_DOSSIER.NOPRAT = t_medecins_administratifs.code_original + JOIN w_PEC_DOSSIER ON w_PEC_DOSSIER.NODOSSIER = w_DOSSIER.NODOSSIER + ; + + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_13'); + + -- Forcage type selon séjour + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour::int + FROM activite.t_sejour + WHERE t_sejour.no_sejour = w_sejours.no_sejour AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9') + AND t_sejour.type_sejour is not NULL ; + + UPDATE activite[PX].p_sejours SET + code_original = w_sejours.code_original, + no_patient = w_sejours.no_patient, + date_entree = w_sejours.date_entree, + heure_entree = w_sejours.heure_entree, + date_sortie = w_sejours.date_sortie, + heure_sortie = w_sejours.heure_sortie, + code_sexe = w_sejours.code_sexe, + age = w_sejours.age, + code_sorti = w_sejours.code_sorti, + code_prevu = w_sejours.code_prevu, + type_sejour = w_sejours.type_sejour::int, + medecin_sejour_id = w_sejours.medecin_sejour_id, + code_cp_demandee = w_sejours.code_cp_demandee, + mode_traitement_id = w_sejours.mode_traitement_id, + mode_entree = w_sejours.mode_entree, + provenance = w_sejours.provenance, + mode_sortie = w_sejours.mode_sortie, + destination = w_sejours.destination, + tiers_payant_0_id = w_sejours.tiers_payant_0_id, + tiers_payant_1_id = w_sejours.tiers_payant_1_id, + tiers_payant_2_id = w_sejours.tiers_payant_2_id, + tiers_payant_22_id = w_sejours.tiers_payant_22_id, + est_budget_global = w_sejours.est_budget_global, + finess = w_sejours.finess + FROM w_sejours + WHERE w_sejours.no_sejour = p_sejours.no_sejour + AND ( + w_sejours.code_original IS DISTINCT FROM p_sejours.code_original OR + w_sejours.no_patient IS DISTINCT FROM p_sejours.no_patient OR + w_sejours.date_entree IS DISTINCT FROM p_sejours.date_entree OR + w_sejours.heure_entree IS DISTINCT FROM p_sejours.heure_entree OR + w_sejours.date_sortie IS DISTINCT FROM p_sejours.date_sortie OR + w_sejours.heure_sortie IS DISTINCT FROM p_sejours.heure_sortie OR + w_sejours.code_sexe IS DISTINCT FROM p_sejours.code_sexe OR + w_sejours.age IS DISTINCT FROM p_sejours.age OR + w_sejours.code_sorti IS DISTINCT FROM p_sejours.code_sorti OR + w_sejours.code_prevu IS DISTINCT FROM p_sejours.code_prevu OR + w_sejours.type_sejour IS DISTINCT FROM p_sejours.type_sejour OR + w_sejours.medecin_sejour_id IS DISTINCT FROM p_sejours.medecin_sejour_id OR + w_sejours.code_cp_demandee IS DISTINCT FROM p_sejours.code_cp_demandee OR + w_sejours.mode_traitement_id IS DISTINCT FROM p_sejours.mode_traitement_id OR + w_sejours.mode_entree IS DISTINCT FROM p_sejours.mode_entree OR + w_sejours.provenance IS DISTINCT FROM p_sejours.provenance OR + w_sejours.mode_sortie IS DISTINCT FROM p_sejours.mode_sortie OR + w_sejours.destination IS DISTINCT FROM p_sejours.destination OR + w_sejours.tiers_payant_0_id IS DISTINCT FROM p_sejours.tiers_payant_0_id OR + w_sejours.tiers_payant_1_id IS DISTINCT FROM p_sejours.tiers_payant_1_id OR + w_sejours.tiers_payant_2_id IS DISTINCT FROM p_sejours.tiers_payant_2_id OR + w_sejours.tiers_payant_22_id IS DISTINCT FROM p_sejours.tiers_payant_22_id OR + w_sejours.est_budget_global IS DISTINCT FROM p_sejours.est_budget_global OR + w_sejours.finess IS DISTINCT FROM p_sejours.finess + ); + + INSERT INTO activite[PX].p_sejours ( + no_sejour, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + medecin_sejour_id, + ghs_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + est_budget_global, + finess + ) + SELECT + + w_sejours.no_sejour, + w_sejours.code_original, + w_sejours.no_patient, + w_sejours.date_entree, + w_sejours.heure_entree, + w_sejours.date_sortie, + w_sejours.heure_sortie, + w_sejours.code_sexe::char(1), + w_sejours.age, + w_sejours.code_sorti, + w_sejours.code_prevu, + w_sejours.type_sejour::char(1), + w_sejours.medecin_sejour_id, + w_sejours.ghs_id, + w_sejours.date_groupage, + w_sejours.type_sejour::char(1), + w_sejours.mode_traitement_id, + w_sejours.mode_entree::char(1), + w_sejours.provenance::char(1), + w_sejours.mode_sortie::char(1), + w_sejours.destination::char(1), + w_sejours.tiers_payant_0_id, + w_sejours.tiers_payant_1_id, + w_sejours.tiers_payant_2_id, + w_sejours.tiers_payant_22_id, + w_sejours.est_budget_global, + w_sejours.finess + FROM w_sejours LEFT JOIN activite[PX].p_sejours ON (w_sejours.no_sejour = p_sejours.no_sejour) + WHERE p_sejours.no_sejour IS NULL; + + + DELETE FROM activite[PX].p_sejours + USING activite[PX].p_sejours AS p_sejours_i LEFT JOIN w_sejours ON (w_sejours.no_sejour = p_sejours_i.no_sejour) + WHERE + p_sejours.no_sejour = p_sejours_i.no_sejour AND + w_sejours.no_sejour IS NULL; + + -- Modes es selon mouvements (1:entree, 10: sortie 2,11,3) a priori 1 seul enregistrement avec 1 ou 10 mais au cas ou... + UPDATE activite[PX].p_sejours + SET mode_entree = MPMSI::text, + provenance = CASE WHEN char_length(CPMSI) > 1 THEN '0' ELSE CPMSI END + FROM prod_mederi.KSEJOUR_MVT + WHERE no_sejour = NODOSSIER + AND TYPEMVT = 1; + + UPDATE activite[PX].p_sejours + SET mode_sortie = MPMSI::text, + destination = CASE WHEN char_length(CPMSI) > 1 THEN '0' ELSE CPMSI END + FROM prod_mederi.KSEJOUR_MVT + WHERE no_sejour = NODOSSIER + AND TYPEMVT = 10; + + -- Modes entrée sortie selon PMSI MCO + UPDATE activite[PX].p_sejours + SET + mode_entree = KRUM.MODEENTREE, + provenance = RIGHT(KRUM.PROVENANCE,1) + FROM prod_mederi.KRUM + WHERE no_sejour = NODOSSIER + AND RSSNO = '01'; + + DROP TABLE IF EXISTS w_mode_sortie; + CREATE TEMP TABLE w_mode_sortie AS + SELECT + NODOSSIER, + (MAX(Array[RSSNO::text, RIGHT(MODESORTIE::text,1)]))[2] as mode, + (MAX(Array[RSSNO::text, RIGHT(KRUM.DESTINATION,1)]))[2] as des + FROM prod_mederi.KRUM + GROUP BY NODOSSIER; + + UPDATE activite[PX].p_sejours + SET + mode_sortie = mode, + destination = des + FROM w_mode_sortie + WHERE no_sejour = NODOSSIER; + + -- Etablissements de provenance et destination + -- insertion nouveaux etablissements + DROP TABLE IF EXISTS w_ETAB; + CREATE TEMP TABLE w_ETAB AS + SELECT HOPITAL.*,t_etablissements.code FROM prod_mederi.HOPITAL LEFT JOIN base.t_etablissements ON CODEHOPIT = t_etablissements.code + WHERE CODEHOPIT = ANY(array(SELECT NOANEST FROM w_DOSSIER)::text[]) + OR CODEHOPIT = ANY(array(SELECT HOPITSORTIE FROM w_DOSSIER)::text[]); + + INSERT INTO base.t_etablissements + ( + code, + texte, + texte_court + ) + SELECT + CODEHOPIT, + NOM, + NOM + FROM w_ETAB + WHERE code IS NULL; + + -- rechargements des etablissements + DROP TABLE IF EXISTS w_ETAB; + CREATE TEMP TABLE w_ETAB AS + SELECT CODEHOPIT, t_etablissements.* FROM prod_mederi.HOPITAL LEFT JOIN base.t_etablissements ON CODEHOPIT = code + ; + + -- insertion des données de correspondances (pas d'update car les tables sont vidées avant import) + DROP TABLE IF EXISTS w_TRANS; + CREATE TEMP TABLE w_TRANS AS + SELECT + CASE WHEN DATEENTREE > now() THEN 'W' || NODOSSIER ELSE NODOSSIER END as no_sejour, + pro.oid as oid_pro, + des.oid as oid_des + FROM w_DOSSIER + LEFT JOIN w_ETAB as pro ON w_DOSSIER.NOANEST = pro.CODEHOPIT + LEFT JOIN w_ETAB as des ON w_DOSSIER.HOPITSORTIE = des.CODEHOPIT + WHERE NOANEST IS NOT NULL OR HOPITSORTIE IS NOT NULL; + + INSERT INTO activite[PX].p_sejours_transferts( + sejour_id, + provenance_id, + destination_id + ) + SELECT + p_sejours.oid, + oid_pro, + oid_des + FROM activite[PX].p_sejours + JOIN w_TRANS ON w_TRANS.no_sejour = p_sejours.no_sejour; + + -- ghm et ghs + DROP TABLE IF EXISTS w_KRSSLOG; + CREATE TEMP TABLE w_KRSSLOG AS + SELECT + KRSS.NODOSSIER, + COALESCE(MIN(CASE WHEN KRSSLOG.GHM <> '' AND PMSI_DEXPORT >= RSSSORT AND KRSSLOG.GHM = KRSS.RSSCMDGHM THEN date(PMSI_DEXPORT) ELSE NULL END),'20991231') AS PMSI_DEXPORT, + (MAX(Array[PMSI_DEXPORT::text, VERROUAP::text]))[2] AS VERROUAP, + (MAX(Array[PMSI_DEXPORT::text, GHM::text]))[2] AS GHM + FROM prod_mederi.KRSSLOG + JOIN w_KRSS KRSS ON KRSS.RSSNR = KRSSLOG.RSSNR + GROUP BY 1 + ; + + UPDATE activite[PX].p_sejours SET + ghs_id = COALESCE(t_ghs.oid,0), + ghm_id = COALESCE(t_ghm.oid,0), + date_groupage = CASE WHEN GHM IS NOT NULL THEN date(PMSI_DEXPORT) ELSE '20991231' END + FROM w_DOSSIER + JOIN w_KRSSLOG ON w_DOSSIER.NODOSSIER = w_KRSSLOG.NODOSSIER + LEFT JOIN base.t_ghs ON VERROUAP = t_ghs.code + LEFT JOIN base.t_ghm ON GHM = t_ghm.code AND t_ghm.code NOT LIKE '90%' + WHERE + p_sejours.code_original = w_DOSSIER.NODOSSIER AND + ( + p_sejours.ghs_id IS DISTINCT FROM COALESCE(t_ghs.oid,0) OR + p_sejours.ghm_id IS DISTINCT FROM COALESCE(t_ghm.oid,0) OR + p_sejours.date_groupage IS DISTINCT FROM CASE WHEN GHM IS NULL THEN date(PMSI_DEXPORT) ELSE '20991231' END + ) + ; + + -- Code postal ? + UPDATE activite[PX].p_sejours + SET code_postal_id = t_codes_postaux.oid + FROM w_DOSSIER + JOIN base.t_codes_postaux ON CPPAT = t_codes_postaux.code + WHERE code_original = NODOSSIER AND + p_sejours.code_postal_id IS DISTINCT FROM t_codes_postaux.oid; + + -- Type séance d'après GHM (dans création directement) + + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '[PX]' = ''; + + UPDATE activite[PX].p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND + '[PX]' = ''; + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '[PX]' = ''; + + + -- recréation index + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_13'); + + + -- assurance + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_assurance_4'); + + INSERT INTO activite[PX].p_sejours_assurance( + sejour_id, + tiers_payant_0_id, + tiers_payant_1_id, + matricule_1, + tiers_payant_2_id, + matricule_2, + tiers_payant_22_id, + matricule_22) + SELECT + oid AS sejour_id, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + substr(w_PEC_DOSSIER.matricule_1,1,30), + p_sejours.tiers_payant_2_id, + substr(w_PEC_DOSSIER.matricule_2,1,30), + p_sejours.tiers_payant_22_id, + ''::text AS matricule_22 + FROM w_PEC_DOSSIER + JOIN activite[PX].p_sejours ON code_original = NODOSSIER AND p_sejours.etat = ''; + + + + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_assurance_4'); + + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_PEC_DOSSIER; + + ]]> + + + + '08:00:00' + ; + UPDATE w_KSEJOUR + SET HEUREDEB = '07:00:00' + WHERE HEUREDEB IS NULL AND + HEUREFIN > '07:00:00' + ; + + -- Correction heures dossier nulles + UPDATE w_DOSSIER KDOSSIER + SET HEUREENT = subview.HEUREDEB + FROM + ( + SELECT KDOSSIER.NODOSSIER, MIN(KSEJOUR.HEUREDEB) AS HEUREDEB + FROM w_DOSSIER KDOSSIER + JOIN w_KSEJOUR KSEJOUR ON + KDOSSIER.NODOSSIER = KSEJOUR.NODOSSIER AND + KDOSSIER.DATEENTREE = KSEJOUR.DATEDEB + WHERE HEUREENT IS NULL AND + HEUREDEB IS NOT NULL + GROUP BY 1 + ) subview + WHERE KDOSSIER.NODOSSIER = subview.NODOSSIER + ; + + UPDATE w_DOSSIER KDOSSIER + SET HEURESOR = subview.HEUREFIN + FROM + ( + SELECT KDOSSIER.NODOSSIER, MAX(KSEJOUR.HEUREFIN) AS HEUREFIN + FROM w_DOSSIER KDOSSIER + JOIN w_KSEJOUR KSEJOUR ON + KDOSSIER.NODOSSIER = KSEJOUR.NODOSSIER AND + KDOSSIER.DATESORTIE = KSEJOUR.DATEFIN + WHERE HEURESOR IS NULL AND + HEUREFIN IS NOT NULL + GROUP BY 1 + ) subview + WHERE KDOSSIER.NODOSSIER = subview.NODOSSIER + ; + + -- L'heure de début du premier mouvement et l'heure de fin du dernier mouvement sont parfois différentes de l'heure d'entrée et de sortie du dossier. + -- On les fait correspondre + UPDATE w_ksejour SET + datefin = subview.datefin, + heurefin = subview.heurefin + FROM + ( + SELECT + ksejour.nodossier, + ((MAX(ARRAY[ksejour.datefin::text, ksejour.heurefin, secleunik])))[3]::numeric AS secleunik, + MAX(KDOSSIER.datesortie) AS datefin, + ((MAX(ARRAY[KDOSSIER.datesortie::text, KDOSSIER.heuresor])))[2] AS heurefin + FROM prod_mederi.KDOSSIER + JOIN w_ksejour ksejour ON KDOSSIER.nodossier = ksejour.nodossier + WHERE heurefin IS NOT NULL + GROUP BY 1 + HAVING MAX(kdossier.datesortie) <> MAX(ksejour.datefin) OR + ((MAX(ARRAY[datefin::text, heurefin])))[2] <> ((MAX(ARRAY[ksejour.datefin::text, ksejour.heurefin])))[2] + ) subview + WHERE w_ksejour.secleunik = subview.secleunik + ; + + UPDATE w_ksejour SET + datedeb = subview.dateentree, + heuredeb = subview.heureent + FROM + ( + SELECT + ksejour.nodossier, + ((MIN(ARRAY[ksejour.datedeb::text, ksejour.heuredeb, secleunik])))[3]::numeric AS secleunik, + MIN(KDOSSIER.dateentree) AS dateentree, + ((MIN(ARRAY[KDOSSIER.dateentree::text, KDOSSIER.heureent])))[2] AS heureent + FROM prod_mederi.KDOSSIER + JOIN w_ksejour ksejour ON KDOSSIER.nodossier = ksejour.nodossier + GROUP BY 1 + HAVING MIN(KDOSSIER.dateentree) <> MIN(ksejour.datedeb) OR + ((MIN(ARRAY[dateentree::text, heureent])))[2] <> ((MIN(ARRAY[ksejour.datedeb::text, ksejour.heuredeb])))[2] + ) subview + WHERE w_ksejour.secleunik = subview.secleunik + ; + + DROP TABLE IF EXISTS w_MOUVEMENT; + CREATE TEMP TABLE w_MOUVEMENT AS + SELECT row_number() OVER (PARTITION BY 1 ORDER BY KSEJOUR.NODOSSIER,KSEJOUR.DATEDEB, KSEJOUR.HEUREDEB) AS sequence, + KSEJOUR.NODOSSIER, + 0 as RSSBEBE, + (to_char(KSEJOUR.DATEDEB,'YYYY-MM-DD ') || KSEJOUR.HEUREDEB::text)::timestamp AS DATEDEB, + date(KSEJOUR.DATEDEB) AS DATEDEB_DAT, + replace(KSEJOUR.HEUREDEB,':','')::numeric(6,0) AS HEUREDEB, + (to_char(COALESCE(KSEJOUR.DATEFIN,'20991231'),'YYYY-MM-DD ') || COALESCE(KSEJOUR.HEUREFIN,'240000')::text)::timestamp AS DATEFIN, + COALESCE(KSEJOUR.DATEFIN,'20991231') AS DATEFIN_DAT, + replace(COALESCE(KSEJOUR.HEUREFIN,'240000'),':','')::numeric(6,0) AS HEUREFIN, + CASE + WHEN KSEJOUR.DATEDEB = DATEENTREE AND KSEJOUR.HEUREDEB = HEUREENT THEN 'E' + WHEN KSEJOUR.DATEFIN = DATESORTIE AND KSEJOUR.HEUREFIN = HEURESOR THEN 'S' + ELSE '0' END AS TYPEMVT, + w_SER_principal.NOSERVINT AS NOSERVINT_SEJ, + KSEJOUR.NOSERVINT, + NOSERVSS, + CODEUM, + CASE + WHEN NOCHAMBRE IS NULL THEN KSERVINT.NOSERVINT::text || '-0' + ELSE replace(NOCHAMBRE,' ','') END AS NOLIT, + SHO, + '0'::text AS TYPEMVT_before, + '0'::text AS NOSERVINT_before, + '0'::text AS NOSERVSS_before, + 0::text AS NOLIT_before, + '0'::text AS TYPEMVT_next, + '0'::text AS NOSERVINT_next, + '0'::text AS NOSERVSS_next, + 0::text AS NOLIT_next + FROM w_KSEJOUR KSEJOUR + JOIN activite[PX].p_sejours ON KSEJOUR.NODOSSIER = p_sejours.code_original + JOIN w_DOSSIER ON w_DOSSIER.NODOSSIER = KSEJOUR.NODOSSIER + JOIN w_SER_principal ON w_DOSSIER.NODOSSIER = w_SER_principal.NODOSSIER + LEFT JOIN prod_mederi.KSERVINT ON KSEJOUR.NOSERVINT = KSERVINT.NOSERVINT + + ORDER BY CASE WHEN DATEENTREE > now() THEN 'W' || w_DOSSIER.NODOSSIER ELSE w_DOSSIER.NODOSSIER END, KSEJOUR.DATEDEB + ; + + CREATE INDEX w_MOUVEMENT_i1 + ON w_MOUVEMENT + USING btree + (SEQUENCE); + + CREATE INDEX w_MOUVEMENT_i2 + ON w_MOUVEMENT + USING btree + (NODOSSIER); + + ANALYSE w_MOUVEMENT; + + -- calcul date fin + UPDATE w_MOUVEMENT SET + DATEDEB = w_MOUVEMENT_B.DATEFIN + INTERVAL '1 second' + FROM w_MOUVEMENT w_MOUVEMENT_B + WHERE w_MOUVEMENT.NODOSSIER = w_MOUVEMENT_B.NODOSSIER AND + w_MOUVEMENT.sequence = w_MOUVEMENT_B.sequence +1 AND + w_MOUVEMENT.HEUREDEB = 0 AND + w_MOUVEMENT_B.HEUREFIN <> 0; + + UPDATE w_MOUVEMENT SET + DATEFIN = w_MOUVEMENT_A.DATEDEB - INTERVAL '1 second' + FROM w_MOUVEMENT w_MOUVEMENT_A + WHERE w_MOUVEMENT.NODOSSIER = w_MOUVEMENT_A.NODOSSIER AND + w_MOUVEMENT.sequence = w_MOUVEMENT_A.sequence -1 AND + w_MOUVEMENT.HEUREFIN = 0; + + UPDATE w_MOUVEMENT SET + HEUREDEB = to_char(DATEDEB,'HH24MISS')::numeric, + DATEDEB_DAT = date(DATEDEB), + HEUREFIN = to_char(DATEFIN,'HH24MISS')::numeric, + DATEFIN_DAT = date(DATEFIN) + WHERE HEUREDEB = 0 OR HEUREFIN = 0 + ; + + UPDATE w_MOUVEMENT + SET DATEFIN = CASE WHEN w_MOUVEMENT_next.TYPEMVT <> 'S' THEN w_MOUVEMENT_next.DATEDEB - interval '1 second' ELSE w_MOUVEMENT_next.DATEDEB_DAT END, + DATEFIN_DAT = date(CASE WHEN w_MOUVEMENT_next.TYPEMVT <> 'S' THEN w_MOUVEMENT_next.DATEDEB - interval '1 second' ELSE w_MOUVEMENT_next.DATEDEB END), + HEUREFIN = extract('hour' FROM CASE WHEN w_MOUVEMENT_next.TYPEMVT <> 'S' THEN w_MOUVEMENT_next.DATEDEB - interval '1 second' ELSE w_MOUVEMENT.DATEDEB END) * 10000 + + extract('minute' FROM CASE WHEN w_MOUVEMENT_next.TYPEMVT <> 'S' THEN w_MOUVEMENT_next.DATEDEB - interval '1 second' ELSE w_MOUVEMENT.DATEDEB END) * 100 + + extract('second' FROM CASE WHEN w_MOUVEMENT_next.TYPEMVT <> 'S' THEN w_MOUVEMENT_next.DATEDEB - interval '1 second' ELSE w_MOUVEMENT.DATEDEB END), + TYPEMVT_next = w_MOUVEMENT_next.TYPEMVT, + NOSERVINT_next = w_MOUVEMENT_next.NOSERVINT, + NOSERVSS_next = w_MOUVEMENT_next.NOSERVSS, + NOLIT_next = w_MOUVEMENT_next.NOLIT + FROM w_MOUVEMENT w_MOUVEMENT_next + WHERE w_MOUVEMENT.NODOSSIER = w_MOUVEMENT_next.NODOSSIER + AND w_MOUVEMENT.sequence = w_MOUVEMENT_next.sequence - 1; + + + -- Si hopital de jour sans journée, + UPDATE w_MOUVEMENT + SET TYPEMVT_next = 'C' + FROM activite[PX].p_sejours, + activite[PX].t_services_facturation + JOIN base.t_modes_traitement on t_services_facturation.mode_traitement_id = t_modes_traitement.oid + WHERE NODOSSIER = p_sejours.code_original AND + code_prevu <> '1' AND + TYPEMVT = 'E' AND + NOSERVSS = t_services_facturation.code_original AND + (TYPEMVT_NEXT = '' OR TYPEMVT_NEXT = 'S' AND date_entree <> date_sortie) AND + t_modes_traitement.code = '04' AND + t_services_facturation.type_t2a = '2'; + + + + + -- calcul mvt avant + + UPDATE w_MOUVEMENT + SET + TYPEMVT_before = w_MOUVEMENT_before.TYPEMVT, + NOSERVINT_before = w_MOUVEMENT_before.NOSERVINT, + NOSERVSS_before = w_MOUVEMENT_before.NOSERVSS, + NOLIT_before = w_MOUVEMENT_before.NOLIT + FROM w_MOUVEMENT w_MOUVEMENT_before + WHERE w_MOUVEMENT.NODOSSIER = w_MOUVEMENT_before.NODOSSIER + AND w_MOUVEMENT.sequence = w_MOUVEMENT_before.sequence + 1 + AND w_MOUVEMENT.TYPEMVT <> 'S'; + + -- Absences + UPDATE w_MOUVEMENT + SET NOSERVINT = 'ABS' + WHERE TYPEMVT = 'A'; + + -- Hopital de jour Dernière séance avant dans sortie -- pas sur (c'est quoi P) + UPDATE w_MOUVEMENT SET + DATEDEB = DATEFIN, + DATEDEB_DAT = DATEFIN_DAT, + HEUREDEB = HEUREFIN + WHERE TYPEMVT = 'P' AND TYPEMVT_next = 'S' AND + DATEFIN <> DATEDEB; + + -- Hopital de jour Première séance après date entree + UPDATE w_MOUVEMENT SET + DATEFIN = DATEDEB, + DATEFIN_DAT = DATEDEB_DAT, + HEUREFIN = HEUREDEB + WHERE TYPEMVT = 'E' AND TYPEMVT_next = 'C' AND + DATEDEB <> DATEFIN; + + + -- creation mouvements par jour + + DROP TABLE IF EXISTS w_mouvements_sejour; + CREATE TEMP TABLE w_mouvements_sejour AS + SELECT + w_MOUVEMENT.NODOSSIER AS no_sejour, + p_sejours.oid AS sejour_id, + sequence, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE WHEN p_calendrier.date = DATEDEB_DAT THEN HEUREDEB ELSE 0 END AS heure_debut, + CASE WHEN p_calendrier.date = DATEFIN_DAT THEN HEUREFIN ELSE 240000 END AS heure_fin, + CASE WHEN p_calendrier.date = DATEDEB_DAT AND TYPEMVT = 'E' AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes, + CASE WHEN p_calendrier.date = DATEFIN_DAT AND (TYPEMVT = 'S' OR (TYPEMVT = 'E' AND DATEFIN_DAT = p_sejours.date_sortie)) AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes, + CASE WHEN p_calendrier.date = DATEDEB_DAT AND TYPEMVT = 'E' AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree, + CASE WHEN p_calendrier.date = DATEFIN_DAT AND (TYPEMVT = 'S' OR (TYPEMVT = 'E' AND DATEFIN_DAT = p_sejours.date_sortie)) AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie, + CASE WHEN p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN p_calendrier.date = DATEDEB_DAT AND TYPEMVT = 'E' AND p_sejours.type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires, + CASE WHEN p_calendrier.date = DATEDEB_DAT AND TYPEMVT = 'E' AND p_sejours.type_sejour = '3' THEN 1 ELSE 0 END AS nb_externes, + CASE WHEN p_calendrier.date = DATEDEB_DAT AND TYPEMVT = 'E' AND p_sejours.type_sejour <> '9' AND t_dmt.code IN ('303', '307', '308', '401', '402', '403', '404', '405', '406', '407', '408', '409') THEN 1 ELSE 0 END AS nb_urgences, + 0 as nb_seances, + + CASE WHEN p_calendrier.date = DATEDEB_DAT AND TYPEMVT <> 'E' AND p_sejours.type_sejour = '1' AND NOSERVSS <> NOSERVSS_before THEN 1 ELSE 0 END AS nb_entrees_mutation_service, + CASE WHEN p_calendrier.date = DATEFIN_DAT AND TYPEMVT <> 'E' AND p_sejours.type_sejour = '1' AND NOSERVSS <> NOSERVSS_next THEN 1 ELSE 0 END AS nb_sorties_mutation_service, + CASE WHEN p_calendrier.date = DATEDEB_DAT AND TYPEMVT <> 'E' AND p_sejours.type_sejour = '1' AND NOSERVINT <> NOSERVINT_before THEN 1 ELSE 0 END AS nb_entrees_mutation_etage, + CASE WHEN p_calendrier.date = DATEFIN_DAT AND TYPEMVT <> 'E' AND p_sejours.type_sejour = '1' AND NOSERVINT <> NOSERVINT_next THEN 1 ELSE 0 END AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + 0 AS nb_entrees_mutation_unite_medicale, + 0 AS nb_sorties_mutation_unite_medicale, + + CASE WHEN p_sejours.type_sejour = '1' AND (p_calendrier.date <> DATEFIN_DAT OR TYPEMVT_next = 'S') THEN 1 ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN p_sejours.type_sejour = '1' AND p_calendrier.date <> DATEFIN_DAT THEN 1 ELSE 0 END AS nb_jours_js_non_inclus, + + CASE WHEN p_sejours.type_sejour = '1' AND (t_lits.chambre_particuliere = 'O' OR SHO != 0) THEN '1' ELSE '0' END AS est_chambre_particuliere, + CASE WHEN p_sejours.type_sejour = '1' AND (t_lits.chambre_particuliere = 'O' OR SHO != 0) AND (p_calendrier.date <> DATEFIN_DAT OR TYPEMVT_next = 'S') THEN 1 ELSE 0 END AS nb_chambres_particulieres, + + CASE WHEN p_calendrier.date = DATEDEB_DAT AND TYPEMVT = 'E' AND (COALESCE(w_MOUVEMENT.RSSBEBE) > 0) THEN 1 ELSE 0 END AS nb_bebes, + + NOSERVINT, + NOSERVINT_SEJ, + NOSERVSS, + NOLIT, + CODEUM, + + COALESCE(t_lieux.oid,0) AS lieu_id, + + p_sejours.medecin_sejour_id as medecin_sejour_id, + + CASE WHEN p_sejours.code_prevu = '1' OR p_calendrier.date > date(date_extraction) THEN '1' ELSE '0' END AS est_mouvement_previsionnel, + + ''::text AS est_premier_mouvement_jour, + ''::text AS est_dernier_mouvement_jour + + + FROM w_MOUVEMENT + LEFT JOIN activite[PX].t_lieux ON + t_lieux.code_original_1 = NOSERVINT::text AND + t_lieux.code_original_2 = CODEUM::text AND + t_lieux.code_original_4 = NOLIT AND + t_lieux.code_original_5 = NOSERVSS::text + JOIN w_DOSSIER ON w_DOSSIER.NODOSSIER = w_MOUVEMENT.NODOSSIER + JOIN activite[PX].p_sejours ON w_MOUVEMENT.NODOSSIER = p_sejours.no_sejour AND p_sejours.etat = '' + LEFT JOIN activite[PX].t_lits ON NOLIT = t_lits.code_original + JOIN activite[PX].t_services_facturation ON NOSERVINT::text = t_services_facturation.code_original + JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + JOIN base.p_calendrier ON p_calendrier.date BETWEEN DATEDEB_DAT AND DATEFIN_DAT AND p_calendrier.date <= date(date_extraction) + interval '1 month' + WHERE + (TYPEMVT <> 'P' OR TYPEMVT_next = 'S') AND + (p_sejours.type_sejour NOT IN ('2', '3') OR (p_sejours.type_sejour IN ('2', '3') AND TYPEMVT = 'E' AND (p_calendrier.date = DATEDEB_DAT OR p_calendrier.date = DATEFIN_DAT))) AND + (p_sejours.code_prevu <> '1' AND p_calendrier.date <= date(date_extraction) OR p_calendrier.date >= date(date_extraction)) + ORDER BY sequence, p_calendrier.date; + + UPDATE w_mouvements_sejour SET + nb_sorties_mutation_etage = 0, + nb_sorties_mutation_service = 0, + nb_sorties_mutation_activite = 0, + nb_sorties_mutation_unite_medicale = 0 + WHERE nb_sorties_directes = 1 AND ( + nb_sorties_mutation_etage <> 0 OR + nb_sorties_mutation_service <> 0 OR + nb_sorties_mutation_activite <> 0 OR + nb_sorties_mutation_unite_medicale <> 0 + ) + ; + -- correction des heure E/S + + UPDATE activite[PX].p_sejours SET + heure_entree = heure_sortie, + heure_sortie = heure_entree + WHERE + heure_sortie < heure_entree + AND date_entree = date_sortie; + + UPDATE w_mouvements_sejour SET + heure_fin = heure_debut, + heure_debut = heure_fin + FROM activite[PX].p_sejours + WHERE + w_mouvements_sejour.no_sejour = p_sejours.no_sejour + AND date_entree = date_sortie + AND heure_fin < heure_debut; + + DELETE FROM w_mouvements_sejour WHERE heure_fin < heure_debut; + + -- Actualisation lieux + UPDATE activite[PX].t_lieux SET + service_facturation_id = t_services_facturation.oid, + mode_traitement_id = t_services_facturation.mode_traitement_id + FROM activite[PX].t_services_facturation + WHERE + code_original_1 = t_services_facturation.code_original; + + UPDATE activite[PX].t_lieux SET + unite_medicale_id = t_unites_medicales.oid + FROM activite[PX].t_unites_medicales + WHERE + code_original_2 = t_unites_medicales.code_original; + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = t_unites_fonctionnelles.oid + FROM activite[PX].t_unites_fonctionnelles + WHERE + code_original_6 = t_unites_fonctionnelles.code_original; + + UPDATE activite[PX].t_lieux SET + lit_id = t_lits.oid + FROM activite[PX].t_lits + WHERE + code_original_4 = t_lits.code; + + + + -- creation nouveaux lieux + + INSERT INTO activite[PX].t_lieux( + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + code_original_6, + code_original_7, + service_facturation_id, + activite_id, + lit_id, + unite_medicale_id, + unite_fonctionnelle_id, + mode_traitement_id) + SELECT DISTINCT + NOSERVINT, + CODEUM, + '', + NOLIT, + NOSERVSS, + '', + '', + t_services_facturation.oid, + COALESCE(t_activites.oid,0), + COALESCE(t_lits.oid,0), + COALESCE(t_unites_medicales.oid,0), + COALESCE(t_unites_fonctionnelles.oid,0), + t_services_facturation.mode_traitement_id + FROM w_mouvements_sejour + LEFT JOIN activite[PX].t_lieux ON + t_lieux.code_original_1 = NOSERVINT::text AND + t_lieux.code_original_2 = CODEUM::text AND + t_lieux.code_original_4 = NOLIT AND + t_lieux.code_original_5 = NOSERVSS::text + JOIN activite[PX].t_services_facturation ON w_mouvements_sejour.NOSERVINT::text = t_services_facturation.code_original + LEFT JOIN activite[PX].t_unites_medicales ON CODEUM::text = t_unites_medicales.code_original + LEFT JOIN activite[PX].t_activites ON NOSERVINT_SEJ = t_activites.code_original + LEFT JOIN activite[PX].t_lits ON NOLIT = t_lits.code_original + LEFT JOIN activite[PX].t_unites_fonctionnelles ON NOSERVSS::text = t_unites_fonctionnelles.code_original + WHERE t_lieux.oid IS NULL; + + + + + -- Mise à jour lieux dans futurs mouvements + UPDATE w_mouvements_sejour SET lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE + t_lieux.code_original_1 = NOSERVINT::text AND + t_lieux.code_original_4 = NOLIT AND + t_lieux.code_original_5 = NOSERVSS::text + AND w_mouvements_sejour.lieu_id = 0; + + + + -- Médecin séjour + + UPDATE w_mouvements_sejour SET medecin_sejour_id = t_medecins_administratifs.oid + FROM W_KPRAT, prod_mederi.KSEJOUR, activite[PX].t_medecins_administratifs + WHERE KSEJOUR.NOPRAT = t_medecins_administratifs.code_original + AND KSEJOUR.NODOSSIER = w_mouvements_sejour.no_sejour + AND date BETWEEN DATEDEB AND DATEFIN + AND w_mouvements_sejour.medecin_sejour_id <> t_medecins_administratifs.oid + AND t_medecins_administratifs.oid <> 0; + + -- mise à jour par le code insee (désactivé car Osny veut voir les erreurs de saisie) +-- UPDATE w_mouvements_sejour SET medecin_sejour_id = t_medecins_administratifs.oid +-- FROM W_KPRAT KPRAT, prod_mederi.KSEJOUR, activite[PX].t_medecins_administratifs +-- WHERE +-- KSEJOUR.NOPRAT = KPRAT.CODEINSEE +-- AND KPRAT.NOPRAT = t_medecins_administratifs.code_original +-- AND KSEJOUR.NODOSSIER = w_mouvements_sejour.no_sejour +-- AND date BETWEEN DATEDEB AND DATEFIN +-- AND w_mouvements_sejour.medecin_sejour_id <> t_medecins_administratifs.oid +-- AND t_medecins_administratifs.oid <> 0; +-- + + -- Unité médicale selon UF + UPDATE activite[PX].t_lieux + SET unite_medicale_id = t_unites_medicales.oid, + code_original_5 = NOSERVSS + FROM prod_mederi.KSERVINT + JOIN activite[PX].t_unites_medicales ON NOSERVSS =t_unites_medicales.code_original + WHERE NOSERVINT = code_original_6 AND + (unite_medicale_id IS DISTINCT FROM t_unites_medicales.oid OR + code_original_5 IS DISTINCT FROM NOSERVSS); + + UPDATE activite[PX].t_lieux + SET unite_medicale_id = t_unites_medicales.oid, + code_original_5 = '*ABS' + FROM activite[PX].t_unites_medicales + WHERE code_original_1 = '*ABS' AND t_unites_medicales.code_original = '*ABS'; + + -- Unité médicale principale selon UF + UPDATE activite[PX].t_lieux SET + activite_id = t_activites.oid, + code_original_1 = NOSERVINT + FROM prod_mederi.KSERVINT + JOIN activite[PX].t_activites ON NOSERVSS = t_activites.code_original + WHERE NOSERVINT = code_original_1 AND + activite_id = 0; + + + -- Seances selon GHS pmsi + DROP TABLE IF EXISTS w_ghs_seances; + CREATE TEMP TABLE w_ghs_seances AS + SELECT ghs_id AS oid + FROM activite[PX].p_sejours + JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid AND t_ghm.code LIKE '28%' + JOIN base.t_ghs ON p_sejours.ghs_id = t_ghs.oid AND t_ghs.code <> 9999 AND t_ghs.code > 0 + WHERE ghs_id <> 0 + GROUP BY 1; + + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT + p_sejours.no_sejour, + date_entree AS date, + 1 AS nb_seances + FROM activite[PX].p_sejours + JOIN base.t_ghs ON p_sejours.ghs_id = t_ghs.oid + JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid + WHERE date_entree = date_sortie AND + (ghs_id IN (SELECT oid FROM w_ghs_seances) OR t_ghm.code LIKE '28%'); + + CREATE INDEX w_sejours_seances_i1 + ON w_sejours_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_sejours_seances.nb_seances + FROM w_sejours_seances + WHERE w_sejours_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_sejours_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_sejours_seances.nb_seances; + + -- seances selon RSS + DROP TABLE IF EXISTS w_SEANCES_RSS; + CREATE TEMP TABLE w_SEANCES_RSS AS + SELECT + NODOSSIER, + DATEACTE as DATE_SEANCE, + count(*) as nb_seances + FROM prod_mederi.MSEANCES + JOIN prod_mederi.KRUM ON KRUM.RSSNR = MSEANCES.RSSNR + GROUP BY 1,2; + + UPDATE w_mouvements_sejour + SET nb_seances = w_SEANCES_RSS.nb_seances + FROM w_SEANCES_RSS + WHERE NODOSSIER = w_mouvements_sejour.no_sejour AND + w_SEANCES_RSS.DATE_SEANCE = w_mouvements_sejour.date; + + -- seances selon GHS facturé + DROP TABLE IF EXISTS w_KACTES_seances; + CREATE TEMP TABLE w_KACTES_seances AS + SELECT + p_sejours.no_sejour, + DATEACTE AS date, + SUM(QTE::int) AS nb_seances + FROM prod_mederi.KACTES + JOIN w_KFACTURE KFACTURE ON KFACTURE.NOFAC = KACTES.NOFAC AND est_doublon = '0' -- AND FACPARTIEL <> 9 + JOIN activite[PX].p_sejours ON KFACTURE.NODOSSIER = p_sejours.code_original + JOIN base.t_ghs ON GHS = t_ghs.code + WHERE + t_ghs.oid IN (SELECT oid FROM w_ghs_seances) + GROUP BY 1,2 + HAVING SUM(QTE::int) > 0; + + CREATE INDEX w_KACTES_seances_i1 + ON w_KACTES_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_KACTES_seances.nb_seances + FROM w_KACTES_seances + WHERE w_KACTES_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_KACTES_seances.date = w_mouvements_sejour.date; + + + + + -- seances selon D09, D11 facturé => pas de dialyse dans les actes + + + -- seances selon Actes + DROP TABLE IF EXISTS w_K_seances; + CREATE TEMP TABLE w_K_seances AS + SELECT + p_sejours.no_sejour, + DATEACTE AS date, + SUM(QTE::int) AS nb_seances + FROM prod_mederi.KACTES + JOIN activite[PX].p_sejours ON NODOSSIER = p_sejours.code_original + WHERE + NOACTE = 'K' AND + QTE > 0 + GROUP BY 1,2; + + UPDATE w_mouvements_sejour + SET nb_seances = w_K_seances.nb_seances + FROM w_K_seances + WHERE w_K_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_K_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances = 0; + + + + -- seances selon D09 + + + -- Seances selon type sejour DE = DS + UPDATE w_mouvements_sejour + SET nb_seances = 1 + FROM activite[PX].p_sejours + WHERE p_sejours.no_sejour = w_mouvements_sejour.no_sejour AND + p_sejours.type_sejour = '5' AND + p_sejours.date_entree = p_sejours.date_sortie AND + p_sejours.date_entree = w_mouvements_sejour.date AND + w_mouvements_sejour.heure_debut > 0 AND + w_mouvements_sejour.nb_seances = 0 AND + w_mouvements_sejour.no_sejour NOT IN (SELECT no_sejour FROM w_mouvements_sejour WHERE nb_seances > 0); + + + + -- plusieurs séances le même jour + + DROP TABLE IF EXISTS w_seances; + CREATE TEMP TABLE w_seances as + SELECT no_sejour, date, MAX(heure_debut) AS heure_debut + FROM w_mouvements_sejour + WHERE nb_seances > 0 + GROUP BY 1,2 + HAVING count(DISTINCT heure_debut) > 1; + + + UPDATE w_mouvements_sejour + SET nb_seances = 0 + FROM w_seances + WHERE w_mouvements_sejour.no_sejour = w_seances.no_sejour and + w_mouvements_sejour.date = w_seances.date and + w_mouvements_sejour.heure_debut <> w_seances.heure_debut; + + + -- Doublons potentiels + DELETE FROM w_mouvements_sejour + USING ( + SELECT + no_sejour, date, heure_debut, MAX(CTID) AS fromCTID + FROM w_mouvements_sejour + GROUP BY 1,2,3 + HAVING count(*) > 1) subview + WHERE 1=1 + AND subview.no_sejour = w_mouvements_sejour.no_sejour + AND subview.date = w_mouvements_sejour.date + AND subview.heure_debut = w_mouvements_sejour.heure_debut + AND subview.fromCTID != w_mouvements_sejour.CTID; + + + + + -- Mise en production des mouvements + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_5'); + +-- DROP TABLE IF EXISTS TEMP.w_MOUVEMENT; +-- CREATE TABLE temp.w_MOUVEMENT AS SELECT * FROM w_MOUVEMENT; + +-- DROP TABLE IF EXISTS TEMP.w_MOUVEMENTS_SEJOUR; +-- CREATE TABLE temp.w_MOUVEMENTS_SEJOUR AS SELECT * FROM w_MOUVEMENTS_SEJOUR; + + INSERT INTO activite[PX].p_mouvements_sejour( + sejour_id, no_sejour, date, est_mouvement_previsionnel, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + jour_semaine, is_weekend) + SELECT sejour_id, no_sejour, date, est_mouvement_previsionnel ,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + jour_semaine, is_weekend + FROM w_mouvements_sejour + WHERE heure_fin >= heure_debut + ORDER BY no_sejour, sequence; + + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_5'); + + -- Lieux de sortie + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie AND p_mouvements_sejour.nb_sorties_directes = 1 + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL) ; + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = 0 + WHERE lieu_sortie_id IS NULL ; + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = 0 + WHERE p_sejours.code_prevu = '1' AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL); + + + UPDATE activite[PX].p_sejours + SET code_sorti = '1' + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + code_sorti = '0' AND + (nb_ambulatoires > 0 OR nb_externes > 0) AND + date_sortie <= now(); + + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + WHERE type_sejour <> '5' AND + type_sejour <> '1' AND + no_sejour IN ( + SELECT no_sejour + FROM activite[PX].p_mouvements_sejour + WHERE nb_seances > 0); + + + UPDATE activite[PX].p_mouvements_sejour + SET nb_externes = 0, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + ( + nb_externes <> 0 OR + nb_ambulatoires <> 0 + ); + + + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_MOUVEMENT; + DROP TABLE IF EXISTS w_mouvements_sejour; + DROP TABLE IF EXISTS w_seances; + DROP TABLE IF EXISTS w_K_seances; + DROP TABLE IF EXISTS w_KACTES_seances; + + + ]]> + + + + + + + + + w_PEC_FACTURE.tiers_payant_2_id + AND w_FAC_FACTURE.NOFAC = w_PEC_FACTURE.NOFAC; + + -- En budget global, tous les honoraires ne sont pas facturés (inclus dans GHS) => non utile dans oqn (seul cas traité pour l'instant) + + + -- Informations montants factures et regles + + DROP TABLE IF EXISTS w_FAC_MONTANTS; + CREATE TEMP TABLE w_FAC_MONTANTS AS + SELECT + NOFAC, + + SUM(CASE WHEN FACPARTIEL != 9 THEN MNTPREST ELSE 0 END) AS montant_facture_c, + SUM(CASE WHEN FACPARTIEL != 9 THEN MNTPASS ELSE 0 END) AS montant_facture_0_c, + SUM(CASE WHEN FACPARTIEL != 9 THEN MNTPAM ELSE 0 END) AS montant_facture_1_c, + SUM(CASE WHEN FACPARTIEL != 9 THEN MNTPMUT ELSE 0 END) AS montant_facture_2_c, + 0 AS montant_facture_22_c, + + SUM(CASE WHEN FACPARTIEL != 9 AND DATEFAC IS NOT NULL THEN MNTPREST ELSE 0 END) AS montant_comptabilise_c, + SUM(CASE WHEN FACPARTIEL != 9 AND DATEFAC IS NOT NULL THEN MNTPASS ELSE 0 END) AS montant_comptabilise_0_c, + SUM(CASE WHEN FACPARTIEL != 9 AND DATEFAC IS NOT NULL THEN MNTPAM ELSE 0 END) AS montant_comptabilise_1_c, + SUM(CASE WHEN FACPARTIEL != 9 AND DATEFAC IS NOT NULL THEN MNTPMUT ELSE 0 END) AS montant_comptabilise_2_c, + SUM(CASE WHEN FACPARTIEL != 9 AND DATEFAC IS NOT NULL THEN 0 ELSE 0 END) AS montant_comptabilise_22_c, + + SUM(CASE WHEN FACPARTIEL != 9 THEN MNTPREST - (SLDPAM + SLDPMUT + SLDPASS) ELSE 0 END) AS montant_regle_c, + SUM(CASE WHEN FACPARTIEL != 9 THEN MNTPASS - SLDPASS ELSE 0 END) AS montant_regle_0_c, + SUM(CASE WHEN FACPARTIEL != 9 THEN MNTPAM - SLDPAM ELSE 0 END) AS montant_regle_1_c, + SUM(CASE WHEN FACPARTIEL != 9 THEN MNTPMUT - SLDPMUT ELSE 0 END) AS montant_regle_2_c, + SUM(CASE WHEN FACPARTIEL != 9 THEN 0 ELSE 0 END) AS montant_regle_22_c, + + SUM(CASE WHEN FACPARTIEL != 9 THEN MNTHONO ELSE 0 END) AS montant_facture_h, + SUM(CASE WHEN FACPARTIEL != 9 THEN MNTHASS ELSE 0 END) AS montant_facture_0_h, + SUM(CASE WHEN FACPARTIEL != 9 THEN MNTHAM ELSE 0 END) AS montant_facture_1_h, + SUM(CASE WHEN FACPARTIEL != 9 THEN MNTHMUT ELSE 0 END) AS montant_facture_2_h, + SUM(CASE WHEN FACPARTIEL != 9 THEN 0 ELSE 0 END) AS montant_facture_22_h, + + SUM(CASE WHEN FACPARTIEL != 9 AND DATEFAC IS NOT NULL THEN MNTHONO ELSE 0 END) AS montant_comptabilise_h, + SUM(CASE WHEN FACPARTIEL != 9 AND DATEFAC IS NOT NULL THEN MNTHASS ELSE 0 END) AS montant_comptabilise_0_h, + SUM(CASE WHEN FACPARTIEL != 9 AND DATEFAC IS NOT NULL THEN MNTHAM ELSE 0 END) AS montant_comptabilise_1_h, + SUM(CASE WHEN FACPARTIEL != 9 AND DATEFAC IS NOT NULL THEN MNTHMUT ELSE 0 END) AS montant_comptabilise_2_h, + SUM(CASE WHEN FACPARTIEL != 9 AND DATEFAC IS NOT NULL THEN 0 ELSE 0 END) AS montant_comptabilise_22_h, + + SUM(CASE WHEN FACPARTIEL != 9 THEN MNTHONO - (SLDHAM + SLDHMUT + SLDHASS) ELSE 0 END) AS montant_regle_h, + SUM(CASE WHEN FACPARTIEL != 9 THEN MNTHASS - SLDHASS ELSE 0 END) AS montant_regle_0_h, + SUM(CASE WHEN FACPARTIEL != 9 THEN MNTHAM - SLDHAM ELSE 0 END) AS montant_regle_1_h, + SUM(CASE WHEN FACPARTIEL != 9 THEN MNTHMUT - SLDHMUT ELSE 0 END) AS montant_regle_2_h, + SUM(CASE WHEN FACPARTIEL != 9 THEN 0 ELSE 0 END) AS montant_regle_22_h + + FROM w_FAC_FACTURE + WHERE NOFAC IS NOT NULL + GROUP BY NOFAC; + + + CREATE INDEX w_FAC_MONTANTS_i1 + ON w_FAC_MONTANTS + USING btree + (NOFAC); + + UPDATE w_FAC_MONTANTS + SET + montant_facture_c = -montant_facture_c, + montant_facture_0_c = -montant_facture_0_c , + montant_facture_1_c = -montant_facture_1_c, + montant_facture_2_c = -montant_facture_2_c, + montant_facture_22_c = montant_facture_22_c, + + montant_comptabilise_c = -montant_comptabilise_c, + montant_comptabilise_0_c = -montant_comptabilise_0_c, + montant_comptabilise_1_c = -montant_comptabilise_1_c, + montant_comptabilise_2_c = -montant_comptabilise_2_c, + montant_comptabilise_22_c = -montant_comptabilise_22_c, + + montant_regle_c = -montant_regle_c, + montant_regle_0_c = -montant_regle_0_c, + montant_regle_1_c = -montant_regle_1_c, + montant_regle_2_c = -montant_regle_2_c, + montant_regle_22_c = -montant_regle_22_c, + + montant_facture_h = -montant_facture_h, + montant_facture_0_h = -montant_facture_0_h, + montant_facture_1_h = -montant_facture_1_h, + montant_facture_2_h = -montant_facture_2_h, + montant_facture_22_h = -montant_facture_22_h, + + montant_comptabilise_h = -montant_comptabilise_h, + montant_comptabilise_0_h = -montant_comptabilise_0_h, + montant_comptabilise_1_h = -montant_comptabilise_1_h, + montant_comptabilise_2_h = -montant_comptabilise_2_h, + montant_comptabilise_22_h = -montant_comptabilise_22_h, + + montant_regle_h = -montant_regle_h, + montant_regle_0_h = -montant_regle_0_h, + montant_regle_1_h = -montant_regle_1_h, + montant_regle_2_h = -montant_regle_2_h, + montant_regle_22_h = -montant_regle_22_h + WHERE NOFAC IN (SELECT NOFAC FROM w_KFACTURE KFACTURE WHERE TYPEFAC IN ('2','4')); + + -- Informations date dernier reglement + + DROP TABLE IF EXISTS w_FAC_REGLEMENT; + CREATE TEMP TABLE w_FAC_REGLEMENT AS + SELECT + KACTES.NODOSSIER, + KACTES.NOFAC, + MAX(CASE WHEN TYPERUB <> 4 AND DEBITEUR = 3 THEN DATE ELSE NULL END) AS date_dernier_reglement_0_c, + MAX(CASE WHEN TYPERUB <> 4 AND DEBITEUR = 1 THEN DATE ELSE NULL END) AS date_dernier_reglement_1_c, + MAX(CASE WHEN TYPERUB <> 4 AND DEBITEUR = 2 THEN DATE ELSE NULL END) AS date_dernier_reglement_2_c, + date(NULL) AS date_dernier_reglement_22_c, + MAX(CASE WHEN TYPERUB = 4 AND DEBITEUR = 3 THEN DATE ELSE NULL END) AS date_dernier_reglement_0_h, + MAX(CASE WHEN TYPERUB = 4 AND DEBITEUR = 1 THEN DATE ELSE NULL END) AS date_dernier_reglement_1_h, + MAX(CASE WHEN TYPERUB = 4 AND DEBITEUR = 2 THEN DATE ELSE NULL END) AS date_dernier_reglement_2_h, + date(NULL) AS date_dernier_reglement_22_h, + count(DISTINCT date_part('month',DATE)) AS nb_mois_reglement + FROM w_KRGLDET KRGLDET + JOIN prod_mederi.KACTES ON KACTES.ACCLEUNIK = KRGLDET.ACCLEUNIK + JOIN w_KFACTURE KFACTURE ON KRGLDET.NOFAC = KFACTURE.NOFAC + WHERE est_doublon = '0' + GROUP BY 1,2; + + CREATE INDEX w_FAC_REGLEMENT_i1 + ON w_FAC_REGLEMENT + USING btree + (NOFAC); + + + -- Informations date vente (direct dans kfacture) + + + -- Informations expedition (factures et avoir) + + DROP TABLE IF EXISTS w_FAC_BORDEREAU; + CREATE TEMP TABLE w_FAC_BORDEREAU AS + SELECT NOFAC, + '0'::text AS code_expedie_0, + MAX(CASE WHEN NOBORD != '' AND NOBORD !='X' THEN '1' ELSE '0' END) AS code_expedie_1, + MAX(CASE WHEN NOBORDM != '' AND NOBORD != 'X' THEN '1' ELSE '0' END) AS code_expedie_2, + '0' AS code_expedie_22, + ''::text AS no_bordereau_0, + MAX(CASE WHEN NOBORD != '' AND NOBORD != 'X' THEN NOBORD::bigint ELSE '0' END) AS no_bordereau_1, + MAX(CASE WHEN NOBORDM != '' AND NOBORDM != 'X' THEN NOBORDM::bigint ELSE '0' END) AS no_bordereau_2, + NULL AS no_bordereau_22, + '20991231'::date AS date_expedition_0, + MIN(CASE WHEN NOBORD != '' AND NOBORD !='X' THEN DATEBORD ELSE '20991231' END) AS date_expedition_1, + MIN(CASE WHEN NOBORDM != '' AND NOBORDM !='X' THEN DATEBORD ELSE '20991231' END) AS date_expedition_2, + '20991231'::date AS date_expedition_22 + FROM w_KFACTURE KFACTURE + WHERE NOFAC IS NOT NULL AND est_doublon = '0' + GROUP BY 1; + + + CREATE INDEX w_FAC_BORDEREAU_i1 + ON w_FAC_BORDEREAU + USING btree + (NOFAC); + + -- Informations rejets + + DROP TABLE IF EXISTS w_FAC_REJET; + CREATE TEMP TABLE w_FAC_REJET AS + SELECT FACTURE AS NOFAC, + COUNT(*) as nb_rejets + FROM prod_mederi.KNOERJ + WHERE TRIM(ERRCODE) <> '0001' + GROUP BY FACTURE; + + CREATE INDEX w_FAC_REJET_i1 + ON w_FAC_REJET + USING btree + (NOFAC); + + + -- Ajout des factures + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_14'); + + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + date_solde, + montant_facture_c, + montant_facture_h, + montant_regle_c, + montant_regle_h, + delai_facture, + delai_solde, + date_expedition, + delai_expedition, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + ghs_id, + particularite_t2a, + code_cloture, + code_cp_demandee, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + + nb_rejets, + + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour + ) + SELECT + sejour_id, + no_sejour, + w_FAC_FACTURE.NOFAC AS no_facture, + date_debut_facture AS date_debut, + date_fin_facture AS date_fin, + CASE + WHEN TYPEFAC = '1' THEN '0' + WHEN TYPEFAC IN ('2','4') THEN '1' + WHEN TYPEFAC IN ('3') THEN 'P' + ELSE '0' END AS type_facture, + CASE WHEN FACPARTIEL != 9 THEN '1' ELSE '0' END AS code_facture, + DATEFAC AS date_facture, + CASE WHEN DATEFAC IS NOT NULL THEN '1' ELSE '0' END AS code_vente, + CASE WHEN DATEFAC IS NOT NULL THEN DATEFAC ELSE '20991231'::date END AS date_vente, + CASE WHEN DATEFAC IS NOT NULL THEN extract('year' FROM DATEFAC) * 100 + extract('month' FROM DATEFAC) ELSE extract('year' FROM '20991231'::date) * 100 + extract('month' FROM '20991231'::date) END AS mois_vente, + + COALESCE( + GREATEST( + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_0_c = 0 THEN date_sortie ELSE date_dernier_reglement_0_c END, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_0_h = 0 THEN date_sortie ELSE date_dernier_reglement_0_h END, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_1_c = 0 THEN date_sortie ELSE date_dernier_reglement_1_c END, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_1_h = 0 THEN date_sortie ELSE date_dernier_reglement_1_h END, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_2_c = 0 THEN date_sortie ELSE date_dernier_reglement_2_c END, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_2_h = 0 THEN date_sortie ELSE date_dernier_reglement_2_h END, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_22_c = 0 THEN date_sortie ELSE date_dernier_reglement_22_c END, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_22_h = 0 THEN date_sortie ELSE date_dernier_reglement_22_h END) + , '20991231') as date_solde, + + + w_FAC_MONTANTS.montant_facture_c AS montant_facture_c, + w_FAC_MONTANTS.montant_facture_h AS montant_facture_h, + w_FAC_MONTANTS.montant_regle_c AS montant_regle_c, + w_FAC_MONTANTS.montant_regle_h AS montant_regle_h, + DATEFAC - date_sortie as delai_facture, + 0 as delai_solde, + LEAST(w_FAC_BORDEREAU.date_expedition_1, w_FAC_BORDEREAU.date_expedition_2) as date_expedition, + 0 as delai_expedition, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_0_c = 0 THEN date_sortie + WHEN date_dernier_reglement_0_c IS NOT NULL THEN date_dernier_reglement_0_c ELSE '20991231' END as date_solde_0_c, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_0_h = 0 THEN date_sortie + WHEN date_dernier_reglement_0_h IS NOT NULL THEN date_dernier_reglement_0_h ELSE '20991231' END as date_solde_0_h, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_1_c = 0 THEN date_sortie + WHEN date_dernier_reglement_1_c IS NOT NULL THEN date_dernier_reglement_1_c ELSE '20991231' END as date_solde_1_c, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_1_h = 0 THEN date_sortie + WHEN date_dernier_reglement_1_h IS NOT NULL THEN date_dernier_reglement_1_h ELSE '20991231' END as date_solde_1_h, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_2_c = 0 THEN date_sortie + WHEN date_dernier_reglement_2_c IS NOT NULL THEN date_dernier_reglement_2_c ELSE '20991231' END as date_solde_2_c, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_2_h = 0 THEN date_sortie + WHEN date_dernier_reglement_2_h IS NOT NULL THEN date_dernier_reglement_2_h ELSE '20991231' END as date_solde_2_h, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_22_c = 0 THEN date_sortie + WHEN date_dernier_reglement_22_c IS NOT NULL THEN date_dernier_reglement_22_c ELSE '20991231' END as date_solde_22_c, + CASE + WHEN w_FAC_MONTANTS.montant_comptabilise_22_h = 0 THEN date_sortie + WHEN date_dernier_reglement_22_h IS NOT NULL THEN date_dernier_reglement_22_h ELSE '20991231' END as date_solde_22_h, + + w_FAC_BORDEREAU.date_expedition_0, + w_FAC_BORDEREAU.date_expedition_1, + w_FAC_BORDEREAU.date_expedition_2, + w_FAC_BORDEREAU.date_expedition_22, + w_FAC_BORDEREAU.code_expedie_0, + w_FAC_BORDEREAU.code_expedie_1, + w_FAC_BORDEREAU.code_expedie_2, + w_FAC_BORDEREAU.code_expedie_22, + w_FAC_BORDEREAU.no_bordereau_0, + w_FAC_BORDEREAU.no_bordereau_1, + w_FAC_BORDEREAU.no_bordereau_2, + w_FAC_BORDEREAU.no_bordereau_22, + + w_FAC_MONTANTS.montant_facture_0_c AS montant_facture_0_c, + w_FAC_MONTANTS.montant_facture_0_h AS montant_facture_0_h, + w_FAC_MONTANTS.montant_facture_1_c AS montant_facture_1_c, + w_FAC_MONTANTS.montant_facture_1_h AS montant_facture_1_h, + w_FAC_MONTANTS.montant_facture_2_c AS montant_facture_2_c, + w_FAC_MONTANTS.montant_facture_2_h AS montant_facture_2_h, + w_FAC_MONTANTS.montant_facture_22_c AS montant_facture_22_c, + w_FAC_MONTANTS.montant_facture_22_h AS montant_facture_22_h, + + w_FAC_MONTANTS.montant_regle_0_c AS montant_regle_0_c, + w_FAC_MONTANTS.montant_regle_0_h AS montant_regle_0_h, + w_FAC_MONTANTS.montant_regle_1_c AS montant_regle_1_c, + w_FAC_MONTANTS.montant_regle_1_h AS montant_regle_1_h, + w_FAC_MONTANTS.montant_regle_2_c AS montant_regle_2_c, + w_FAC_MONTANTS.montant_regle_2_h AS montant_regle_2_h, + w_FAC_MONTANTS.montant_regle_22_c AS montant_regle_22_c, + w_FAC_MONTANTS.montant_regle_22_h AS montant_regle_22_h, + + + 0 AS delai_expedition_0, + 0 AS delai_expedition_1, + 0 AS delai_expedition_2, + 0 AS delai_expedition_22, + 0 AS delai_solde_0_c, + 0 AS delai_solde_0_h, + 0 AS delai_solde_1_c, + 0 AS delai_solde_1_h, + 0 AS delai_solde_2_c, + 0 AS delai_solde_2_h, + 0 AS delai_solde_22_c, + 0 AS delai_solde_22_h, + + ghs_id, + '' as particularite_t2a, + + '0' as code_cloture, + '0' as code_cp_demandee, + 0 AS ghs_bebe1_id, + 0 AS ghs_bebe2_id, + 0 AS ghs_bebe3_id, + + w_FAC_MONTANTS.montant_comptabilise_c, + w_FAC_MONTANTS.montant_comptabilise_h, + w_FAC_MONTANTS.montant_comptabilise_0_c, + w_FAC_MONTANTS.montant_comptabilise_0_h, + w_FAC_MONTANTS.montant_comptabilise_1_c, + w_FAC_MONTANTS.montant_comptabilise_1_h, + w_FAC_MONTANTS.montant_comptabilise_2_c, + w_FAC_MONTANTS.montant_comptabilise_2_h, + w_FAC_MONTANTS.montant_comptabilise_22_c, + w_FAC_MONTANTS.montant_comptabilise_22_h, + + COALESCE(w_FAC_REJET.nb_rejets,0), + + 0, + 0 + + + FROM w_FAC_FACTURE + LEFT JOIN w_FAC_BORDEREAU ON (w_FAC_FACTURE.NOFAC = w_FAC_BORDEREAU.NOFAC) + LEFT JOIN w_FAC_MONTANTS ON (w_FAC_FACTURE.NOFAC = w_FAC_MONTANTS.NOFAC) + LEFT JOIN w_FAC_REGLEMENT ON (w_FAC_FACTURE.NOFAC = w_FAC_REGLEMENT.NOFAC) + LEFT JOIN w_FAC_REJET ON (w_FAC_FACTURE.NOFAC = w_FAC_REJET.NOFAC) + -- LEFT JOIN prod_mederi.KENCOURS ON w_FAC_FACTURE.NOFAC = KENCOURS.NOFAC + ORDER BY 1,2; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_14'); + + + -- Séjours sans facture + + DROP TABLE IF EXISTS w_factures_trous; + CREATE TEMP TABLE w_factures_trous AS + SELECT + p_sejours.finess, + p_sejours.no_sejour, + p_sejours.date_entree, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.code_cp_demandee, + p_sejours.ghs_id, + COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire, + p_sejours.code_sorti, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours, + MAX(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END) AS date_fin_facture, + date(MAX(COALESCE(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours + FROM activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND no_facture NOT LIKE 'E%' AND type_facture IS DISTINCT FROM 'P' + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE p_sejours.etat = '' AND p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND date_entree <= now() AND p_sejours.type_sejour <> '6' AND p_sejours.type_sejour <> '9' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13; + + + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + code_cp_demandee, + ghs_id, + date_debut, + date_fin) + SELECT finess, + no_sejour, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || substr(p_calendrier.mois,3,4) ELSE '' END, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || substr(p_calendrier.mois,3,4) ELSE '' END, + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + code_cp_demandee , + ghs_id, + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13 + HAVING MIN(GREATEST(date_debut_encours, p_calendrier.date)) >= '[ENV_ADM_ANNEEDEBUT]0101' + ; + + + + UPDATE activite[PX].p_factures SET + date_debut = date_entree, + date_fin = CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid AND + avec_facturation_intermediaire IS DISTINCT FROM '1' + WHERE p_factures.no_sejour = p_sejours.no_sejour AND + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END - date_entree < 30 AND + ( + p_factures.date_debut <> date_entree OR + p_factures.date_fin <> CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + ); + + + -- Avoirs qui annulent des factures + + UPDATE activite[PX].p_factures SET + no_facture_od_avoir = FAC_FACTURE_AVOIR.NOFAC, + type_facture = 'X' + FROM w_KFACTURE KFACTURE + JOIN w_KFACTURE FAC_FACTURE_AVOIR ON KFACTURE.NOFAC = FAC_FACTURE_AVOIR.FACAVOIR AND FAC_FACTURE_AVOIR.FACAVOIR != '' + WHERE p_factures.no_facture = KFACTURE.NOFAC + AND no_facture_od_avoir IS DISTINCT FROM FAC_FACTURE_AVOIR.NOFAC + AND KFACTURE.est_doublon = '0' + AND FAC_FACTURE_AVOIR.est_doublon = '0' + ; + + + DROP TABLE IF EXISTS w_ods_avoir; + CREATE TEMP TABLE w_ods_avoir AS + + SELECT p_factures.no_facture, p_factures.no_facture_od_avoir, p_factures_avoir.date_facture AS date_od_avoir, + SUM(p_factures.montant_comptabilise_c + p_factures.montant_comptabilise_h) AS montant_comptabilise, + SUM(p_factures.montant_regle_c + p_factures.montant_regle_h) AS montant_regle, + SUM(p_factures_avoir.montant_comptabilise_c + p_factures_avoir.montant_comptabilise_h) AS montant_facture_avoir, + SUM(p_factures_avoir.montant_regle_c + p_factures_avoir.montant_regle_h) AS montant_regle_avoir + FROM activite[PX].p_factures JOIN activite[PX].p_factures p_factures_avoir ON p_factures.no_facture = p_factures_avoir.no_facture_od_avoir + WHERE p_factures.type_facture = 'X' AND p_factures_avoir.type_facture = '1' + GROUP BY 1,2,3 + HAVING SUM(p_factures.montant_comptabilise_c + p_factures.montant_comptabilise_h) = 0 - SUM(p_factures_avoir.montant_comptabilise_c + p_factures_avoir.montant_comptabilise_h) + AND SUM(p_factures.montant_regle_c + p_factures.montant_regle_h) = 0 + AND SUM(p_factures_avoir.montant_regle_c + p_factures_avoir.montant_regle_h) = 0; + + + + UPDATE activite[PX].p_factures SET + date_solde_c = date_od_avoir, + date_solde_0_c = date_od_avoir, + date_solde_1_c = date_od_avoir, + date_solde_2_c = date_od_avoir, + date_solde_22_c = date_od_avoir, + date_solde_h = date_od_avoir, + date_solde_0_h = date_od_avoir, + date_solde_1_h = date_od_avoir, + date_solde_2_h = date_od_avoir, + date_solde_22_h = date_od_avoir, + montant_regle_c = montant_comptabilise_c, + montant_regle_0_c = montant_comptabilise_0_c, + montant_regle_1_c = montant_comptabilise_1_c, + montant_regle_2_c = montant_comptabilise_2_c, + montant_regle_22_c = montant_comptabilise_22_c, + montant_regle_h = montant_comptabilise_h, + montant_regle_0_h = montant_comptabilise_0_h, + montant_regle_1_h = montant_comptabilise_1_h, + montant_regle_2_h = montant_comptabilise_2_h, + montant_regle_22_h = montant_comptabilise_22_h + FROM w_ods_avoir + WHERE p_factures.no_facture = w_ods_avoir.no_facture; + + UPDATE activite[PX].p_factures SET + date_solde_c = date_od_avoir, + date_solde_0_c = date_od_avoir, + date_solde_1_c = date_od_avoir, + date_solde_2_c = date_od_avoir, + date_solde_22_c = date_od_avoir, + date_solde_h = date_od_avoir, + date_solde_0_h = date_od_avoir, + date_solde_1_h = date_od_avoir, + date_solde_2_h = date_od_avoir, + date_solde_22_h = date_od_avoir, + montant_regle_c = montant_comptabilise_c, + montant_regle_0_c = montant_comptabilise_0_c, + montant_regle_1_c = montant_comptabilise_1_c, + montant_regle_2_c = montant_comptabilise_2_c, + montant_regle_22_c = montant_comptabilise_22_c, + montant_regle_h = montant_comptabilise_h, + montant_regle_0_h = montant_comptabilise_0_h, + montant_regle_1_h = montant_comptabilise_1_h, + montant_regle_2_h = montant_comptabilise_2_h, + montant_regle_22_h = montant_comptabilise_22_h + FROM w_ods_avoir + WHERE p_factures.no_facture = w_ods_avoir.no_facture_od_avoir; + + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_sejours_orga CASCADE; + DROP TABLE IF EXISTS w_FAC_MONTANTS CASCADE; + DROP TABLE IF EXISTS w_FAC_REGLEMENT CASCADE; + DROP TABLE IF EXISTS w_FAC_BORDEREAU CASCADE; + DROP TABLE IF EXISTS w_factures_trous CASCADE; + + ]]> + + + + '0001' AND TRIM(ERRLIB) <> ''; + + INSERT INTO activite.t_rejets_noemie (texte, code) + SELECT rejet_texte, MAX(rejet_code) + FROM activite[PX].p_factures_rejets + LEFT JOIN activite.t_rejets_noemie ON (rejet_texte = t_rejets_noemie.texte) + WHERE t_rejets_noemie.oid IS NULL + GROUP BY 1; + + UPDATE activite[PX].p_factures_rejets + SET rejet_id = t_rejets_noemie.oid + FROM activite.t_rejets_noemie + WHERE rejet_texte = t_rejets_noemie.texte; + + ]]> + + + + 4 + AND KACTES.NOACTE <> 'GHS' + AND ( + KACTES.NOFAC IS NULL OR + KFACTURE.NOFAC IS NULL + ) + ; + + UPDATE w_KACTES_NF + SET no_facture = subview.no_facture + FROM + ( + SELECT no_sejour, (MAX(Array[date_fin::text,no_facture]))[2] AS no_facture + FROM activite[PX].p_factures + WHERE type_facture = 'E' + GROUP BY 1 + ) subview + WHERE w_KACTES_NF.no_facture = '' AND + w_KACTES_NF.no_sejour = subview.no_sejour + ; + + + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id + FROM w_KACTES_NF + WHERE no_facture <> '' + ; + + + + + ]]> + + + + 4 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16; + + -- Médecin Salarié + + INSERT INTO w_FAC_FACTURE_LIGNE_C + SELECT + 1::integer AS origine_facturation_id, + ACCLEUNIK, + KACTES.NOFAC AS no_facture, + date(DATEACTE) AS date_debut, + COALESCE(date(DATEFIN),date(DATEACTE)) AS date_fin, + CASE WHEN FACPARTIEL != 9 AND KACTES.NOFAC IS NOT NULL THEN DATEFAC ELSE '20991231'::date END AS date_vente, + lieu_sortie_id, + CASE WHEN TYPEFAC NOT IN ('2','4') THEN QTE ELSE 0-QTE END AS nb_rubrique, + CASE WHEN TYPEFAC NOT IN ('2','4') THEN QTE ELSE 0-QTE END AS nb_prestations, + KACTES.COEFF as coefficient, + 1 AS coefficient_mco, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + MAX(COALESCE(t_compte.oid::bigint, 0)) AS compte_produit_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + PRIXU AS prix_unitaire, + + 0 AS montant_facture, + 0 AS montant_facture_0, + 0 AS montant_facture_1, + 0 AS montant_facture_2, + 0 as montant_facture_22, + + 0 AS montant_facture_actes_inclus_dans_sejour, + 0 as montant_facture_0_actes_inclus_dans_sejour, + 0 as montant_facture_1_actes_inclus_dans_sejour, + 0 as montant_facture_2_actes_inclus_dans_sejour, + 0 as montant_facture_22_actes_inclus_dans_sejour, + + AVG(100-TAUXSS-TAUXMUT) as taux_0, + AVG(TAUXSS) as taux_1, + AVG(TAUXMUT) as taux_2, + 0 as taux_22, + + SUM(CASE WHEN DATEFAC IS NOT NULL THEN CASE WHEN TYPEFAC NOT IN ('2','4') THEN MNTASS + MNTMUT + MNTSS ELSE - (MNTASS + MNTMUT + MNTSS) END ELSE 0 END) AS montant_comptabilise, + SUM(CASE WHEN DATEFAC IS NOT NULL THEN CASE WHEN TYPEFAC NOT IN ('2','4') THEN MNTASS ELSE - MNTASS END ELSE 0 END) AS montant_comptabilise_0, + SUM(CASE WHEN DATEFAC IS NOT NULL THEN CASE WHEN TYPEFAC NOT IN ('2','4') THEN MNTSS ELSE - MNTSS END ELSE 0 END) AS montant_comptabilise_1, + SUM(CASE WHEN DATEFAC IS NOT NULL THEN CASE WHEN TYPEFAC NOT IN ('2','4') THEN MNTMUT ELSE - MNTMUT END ELSE 0 END) AS montant_comptabilise_2, + 0 AS montant_comptabilise_22, + + 0::bigint AS rubrique_facture_id + + FROM prod_mederi.KACTES + LEFT JOIN activite[PX].t_rubriques_facturation ON (NOACTE = t_rubriques_facturation.code_original) + JOIN w_FAC_FACTURE ON KACTES.NOFAC = w_FAC_FACTURE.NOFAC + LEFT JOIN (SELECT NOACTE, NOSERVINT, MAX(NOCOMPTE) AS NOCOMPTE FROM prod_mederi.KCPTRUB GROUP BY 1,2) sub ON KACTES.NOSERVINT = sub.NOSERVINT AND KACTES.NOACTE = sub.NOACTE + LEFT JOIN prod_mederi.KRUBINT ON KACTES.NOACTE = KRUBINT.NOACTE + LEFT JOIN activite.t_prestations ON (NOACTESS = t_prestations.code) + LEFT JOIN activite[PX].t_compte ON (NOCOMPTE IS NOT NULL AND NOCOMPTE::bigint = t_compte.code_original) OR (NOCOMPTE IS NULL AND NOCOMPTES::bigint = t_compte.code_original::bigint) + JOIN W_KPRAT KPRAT ON KACTES.NOPRAT = KPRAT.NOPRAT AND KPRAT.CODETAB = 3 + JOIN activite.t_divers ON t_divers.code = 'MEDSAL_COMPTACLI' AND valeur = 1 + WHERE + '[ENV_TYPEETS]' NOT IN ('2','3') AND + FACPARTIEL != 9 AND + KACTES.TYPERUB = 4 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,15,16; + + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_FAC_FACTURE_LIGNE_C'); + + -- lignes clinique + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_8'); + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + + origine_facturation_id, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour) + + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestations, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_sortie_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + 0, + 0, + 0, + 0, + 0, + + origine_facturation_id, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour + + FROM w_FAC_FACTURE_LIGNE_C; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_8'); + + + + + UPDATE activite[PX].p_factures_lignes_c + SET nb_prestation = coefficient * nb_prestation, + nb_rubrique = coefficient * nb_prestation, + coefficient = 1 + WHERE coefficient > 1 AND + prestation_id IN (SELECT oid FROM activite.t_prestations WHERE code IN ('PJ', 'PJ1', 'PJ2', 'FJ', 'PHJ', 'SSM', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO')); + + + -- Eclatement des supplements par jour + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + p_factures_lignes_c.CTID AS from_CTID, + t_prestations.code AS prestation_code, + CASE WHEN p_sejours.type_sejour <> '5' THEN date(p_sejours.date_entree) ELSE p_factures_lignes_c.date_debut END AS date_debut_ghs, + CASE WHEN p_sejours.type_sejour <> '5' THEN date(p_sejours.date_sortie - interval '1 day') ELSE p_factures_lignes_c.date_fin END AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN type_sejour = '5' THEN p_factures_lignes_c.date_debut WHEN t_prestations.code = 'GHS' THEN date(date_entree + interval '1 day') ELSE date(p_factures_lignes_c.date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN type_sejour = '5' THEN p_factures_lignes_c.date_fin WHEN t_prestations.code = 'GHS' THEN date(p_sejours.date_sortie - interval '1 day') ELSE date(p_factures_lignes_c.date_debut + ((ABS(nb_prestation)-1) || ' day')::interval) END AS date_fin_det, + ABS(CASE WHEN type_sejour <> '5' AND t_prestations.code = 'GHS' THEN date(date_sortie) - date(date_entree) ELSE nb_prestation END) AS nb_det, + p_factures_lignes_c.* + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code IN ('PJ', 'PJ1', 'PJ2', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (type_sejour <> '5' AND t_prestations.code = 'GHS' AND date(date_sortie) - date(date_entree) > 1)) ; + + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM activite[PX].p_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture; + + CREATE INDEX w_factures_lignes_sup_c_i1 + ON w_factures_lignes_sup_c + USING btree + (date_debut); + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + from_CTID, + no_facture, + date AS date_debut, + date AS date_fin, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + round(montant_facture / ABS(nb_det),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + round(montant_comptabilise / ABS(nb_det),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_det),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_det),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_det),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_det),2) AS montant_comptabilise_22, + round(montant_encours / ABS(nb_det),2) AS montant_encours, + round(montant_encours_0 / ABS(nb_det),2) AS montant_encours_0, + round(montant_encours_1 / ABS(nb_det),2) AS montant_encours_1, + round(montant_encours_2 / ABS(nb_det),2) AS montant_encours_2, + round(montant_encours_22 / ABS(nb_det),2) AS montant_encours_22, + round(montant_facture_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_actes_inclus_dans_sejour, + round(montant_facture_0_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_0_actes_inclus_dans_sejour, + round(montant_facture_1_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_1_actes_inclus_dans_sejour, + round(montant_facture_2_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_2_actes_inclus_dans_sejour, + round(montant_facture_22_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + round(montant_comptabilise_budget_global_1 / ABS(nb_det),2) AS montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_det AND date_fin_det + ; + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT from_CTID, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + + UPDATE activite[PX].p_factures_lignes_c + SET + date_fin = p_factures_lignes_c.date_debut, + nb_rubrique = p_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_sup_tot.nb_rubrique, + nb_prestation = p_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_sup_tot.nb_prestation, + montant_facture = p_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = p_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = p_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = p_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = p_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = p_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = p_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = p_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = p_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = p_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22, + montant_encours = p_factures_lignes_c.montant_encours - w_factures_lignes_sup_c_sup_tot.montant_encours, + montant_encours_0 = p_factures_lignes_c.montant_encours_0 - w_factures_lignes_sup_c_sup_tot.montant_encours_0, + montant_encours_1 = p_factures_lignes_c.montant_encours_1 - w_factures_lignes_sup_c_sup_tot.montant_encours_1, + montant_encours_2 = p_factures_lignes_c.montant_encours_2 - w_factures_lignes_sup_c_sup_tot.montant_encours_2, + montant_encours_22 = p_factures_lignes_c.montant_encours_22 - w_factures_lignes_sup_c_sup_tot.montant_encours_22, + montant_facture_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 = p_factures_lignes_c.montant_comptabilise_budget_global_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup_tot + WHERE p_factures_lignes_c.CTID = from_CTID; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_sup_c_sup'); + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c_sup; + + + DROP TABLE IF EXISTS w_mouvements_sejour_lieu_jour; + CREATE TEMP TABLE w_mouvements_sejour_lieu_jour AS + SELECT no_sejour, + date, + (MAX(CASE WHEN est_absence <> '1' THEN Array[heure_fin, lieu_id] ELSE NULL END))[2] AS lieu_id, + (MAX(Array[heure_fin, lieu_id]))[2] AS lieu_id_avec_absence + FROM activite[PX].p_mouvements_sejour + JOIN activite[PX].t_lieux ON lieu_id = t_lieux.oid + JOIN activite[PX].t_services_facturation On service_facturation_id = t_services_facturation.oid + GROUP BY 1,2 + ; + + UPDATE activite[PX].p_factures_lignes_c + SET lieu_id = COALESCE(w_mouvements_sejour_lieu_jour.lieu_id,w_mouvements_sejour_lieu_jour.lieu_id_avec_absence) + FROM activite[PX].p_factures, w_mouvements_sejour_lieu_jour + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = w_mouvements_sejour_lieu_jour.no_sejour AND + p_factures_lignes_c.date_debut = w_mouvements_sejour_lieu_jour.date AND + p_factures_lignes_c.lieu_id <> COALESCE(w_mouvements_sejour_lieu_jour.lieu_id,w_mouvements_sejour_lieu_jour.lieu_id_avec_absence) + ; + + + + + DROP TABLE IF EXISTS w_actes_inclus_dans_sejour; + CREATE TEMP TABLE w_actes_inclus_dans_sejour AS + SELECT NOFAC AS no_facture, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour + FROM activite[PX].p_factures_lignes_c JOIN w_FAC_FACTURE ON no_facture = NOFAC + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + montant_facture_actes_inclus_dans_sejour <> 0 AND + origine_facturation_id = 3 + GROUP BY 1; + + DROP TABLE IF EXISTS w_ghs_pj; + CREATE TEMP TABLE w_ghs_pj AS + SELECT p_factures_lignes_c.no_facture, + p_sejours.no_sejour, + p_sejours.est_budget_global, + MIN(p_factures_lignes_c.ctid) AS ctid_min + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + origine_facturation_id = 1 AND + ( + prestation_id IN (SELECT oid FROM activite.t_prestations where code IN ('PJ', 'PJ1', 'PJ2', 'GHS', 'AMP5')) OR + rubrique_facturation_id IN (SELECT oid FROM activite[PX].t_rubriques_facturation where actes_inclus_public = '1') + ) + GROUP BY 1,2,3; + + + + UPDATE activite[PX].p_factures_lignes_c + SET + montant_facture_actes_inclus_dans_sejour = 0 - w_actes_inclus_dans_sejour.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = 0 - w_actes_inclus_dans_sejour.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = 0 - w_actes_inclus_dans_sejour.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = 0 - w_actes_inclus_dans_sejour.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = 0 - w_actes_inclus_dans_sejour.montant_facture_22_actes_inclus_dans_sejour + FROM w_actes_inclus_dans_sejour, w_ghs_pj + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + p_factures_lignes_c.no_facture = w_ghs_pj.no_facture AND p_factures_lignes_c.ctid = w_ghs_pj.ctid_min AND + w_actes_inclus_dans_sejour.no_facture = p_factures_lignes_c.no_facture AND + ( + prestation_id IN (SELECT oid FROM activite.t_prestations where code IN ('PJ', 'GHS', 'AMP5')) OR + rubrique_facturation_id IN (SELECT oid FROM activite[PX].t_rubriques_facturation where actes_inclus_public = '1') + ); + + + + DROP TABLE IF EXISTS w_actes_inclus_dans_sejour_t; + CREATE TEMP TABLE w_actes_inclus_dans_sejour_t AS + SELECT no_facture, + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_actes_inclus_dans_sejour ELSE 0 END) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(CASE WHEN origine_facturation_id = 3 THEN montant_facture_actes_inclus_dans_sejour ELSE 0 END) AS montant_facture_h_actes_inclus_dans_sejour + FROM activite[PX].p_factures_lignes_c + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + montant_facture_actes_inclus_dans_sejour <> 0 + GROUP BY 1; + + + UPDATE activite[PX].p_factures SET + montant_facture_c_actes_inclus_dans_sejour = w_actes_inclus_dans_sejour_t.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_actes_inclus_dans_sejour_t.montant_facture_h_actes_inclus_dans_sejour + FROM w_actes_inclus_dans_sejour_t + WHERE + '[ENV_TYPEETS]' IN ('2','3') AND + w_actes_inclus_dans_sejour_t.no_facture = p_factures.no_facture; + + + + -- Montants depuis PMSI + + --UPDATE pmsi.p_rss + --SET no_sejour_administratif = + -- CASE WHEN p_rss.date_sortie = RSSSORT + -- THEN KRSS.NODOSSIER ELSE no_sejour_administratif END + --FROM prod_mederi.KRSS + --JOIN w_DOSSIER ON w_DOSSIER.NODOSSIER = KRSS.NODOSSIER + --WHERE p_rss.no_rss = KRSS.NODOSSIER AND ghm_id <> 0; + + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_compte CASCADE; + DROP TABLE IF EXISTS w_factures_lignes_sup_c CASCADE; + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot CASCADE; + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup CASCADE; + DROP TABLE IF EXISTS w_actes_inclus_dans_sejour CASCADE; + DROP TABLE IF EXISTS w_ghs_pj CASCADE; + DROP TABLE IF EXISTS w_actes_inclus_dans_sejour_t CASCADE; + DROP TABLE IF EXISTS w_factures_ventes_bg CASCADE; + DROP TABLE IF EXISTS w_factures_lignes_bg CASCADE; + + ]]> + + + + 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4; + + + + -- Comptes clients (REG) + + DROP TABLE IF EXISTS w_FAC_REGLEMENT_LIGNE_C; + CREATE TEMP TABLE w_FAC_REGLEMENT_LIGNE_C AS + SELECT + KACTES.NOFAC AS no_facture, + date(KRGLDET.DATE) AS date_reglement, + + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + + SUM(KRGLDET.MONTANT) AS montant_regle, + SUM(CASE WHEN KREGL.DEBITEUR = 3 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN KREGL.DEBITEUR = 1 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN KREGL.DEBITEUR = 2 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_KRGLDET KRGLDET + JOIN w_KREGL KREGL ON KRGLDET.NOREGL = KREGL.NOREGL + JOIN prod_mederi.KACTES ON KACTES.ACCLEUNIK = KRGLDET.ACCLEUNIK + LEFT JOIN prod_mederi.KRUBINT ON KACTES.NOACTE = KRUBINT.NOACTE + LEFT JOIN activite[PX].t_rubriques_facturation ON (KRUBINT.NOACTE = t_rubriques_facturation.code_original) + LEFT JOIN activite.t_prestations ON NOACTESS = t_prestations.code + WHERE 1=1 + AND NOT ((KREGL.ORIGINE = 13 AND KREGL.DEBITEUR = 1) OR (KREGL.ORIGINE = 1 AND KREGL.DEBITEUR = 3)) + AND KACTES.TYPERUB <> 4 + AND KACTES.NOFAC IS NOT NULL + GROUP BY 1,2,3,4; + + -- Règlements sans affectation + INSERT INTO w_FAC_REGLEMENT_LIGNE_C + SELECT + subview.no_facture AS no_facture, + date(KREGL.DATE) AS date_reglement, + + 0::bigint AS rubrique_comptabilisation_id, + 0::bigint AS prestation_id, + + SUM(KREGL.MONTANT) AS montant_regle, + SUM(CASE WHEN KREGL.DEBITEUR = 3 THEN KREGL.MONTANT ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN KREGL.DEBITEUR = 1 THEN KREGL.MONTANT ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN KREGL.DEBITEUR = 2 THEN KREGL.MONTANT ELSE 0 END) AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_KREGL KREGL + JOIN + ( + SELECT no_sejour, (MAX(ARRAY[date_facture::text, no_facture]))[2] AS no_facture + FROM activite[PX].p_factures + GROUP BY 1 + ) subview + ON subview.no_sejour = NODOSSIER + WHERE 1=1 AND + KREGL.DEBITEUR = '3' AND + NUMREGLD = '0' AND + ignore = '0' AND + forcehon = '0' + GROUP BY 1,2,3,4 + ; + + + -- Médecins salariés + + INSERT INTO w_FAC_REGLEMENT_LIGNE_C + SELECT + KACTES.NOFAC AS no_facture, + date(KRGLDET.DATE) AS date_reglement, + + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + + SUM(KRGLDET.MONTANT) AS montant_regle, + SUM(CASE WHEN KREGL.DEBITEUR = 3 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN KREGL.DEBITEUR = 1 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN KREGL.DEBITEUR = 2 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_KRGLDET KRGLDET + JOIN w_KREGL KREGL ON KRGLDET.NOREGL = KREGL.NOREGL + JOIN prod_mederi.KACTES ON KACTES.ACCLEUNIK = KRGLDET.ACCLEUNIK + LEFT JOIN prod_mederi.KRUBINT ON KACTES.NOACTE = KRUBINT.NOACTE + LEFT JOIN activite[PX].t_rubriques_facturation ON (KRUBINT.NOACTE = t_rubriques_facturation.code_original) + LEFT JOIN activite.t_prestations ON NOACTESS = t_prestations.code + JOIN W_KPRAT KPRAT ON KACTES.NOPRAT = KPRAT.NOPRAT AND CODETAB = 3 + JOIN activite.t_divers ON t_divers.code = 'MEDSAL_COMPTACLI' AND valeur = 1 + WHERE 1=1 + AND NOT ((KREGL.ORIGINE = 13 AND KREGL.DEBITEUR = 1) OR (KREGL.ORIGINE = 1 AND KREGL.DEBITEUR = 3)) + AND KACTES.TYPERUB <> 4 + GROUP BY 1,2,3,4; + + -- Règlements + + -- Acomptes 85% + INSERT INTO w_FAC_REGLEMENT_LIGNE_C + SELECT + KACTES.NOFAC AS no_facture, + date(KRGLDET.DATE) AS date_reglement, + + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + + SUM(KRGLDET.MONTANT) AS montant_regle, + SUM(CASE WHEN KREGL.DEBITEUR = 3 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN KREGL.DEBITEUR = 1 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN KREGL.DEBITEUR = 2 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_2, + 0 AS montant_regle_22 + + FROM w_KRGLDET KRGLDET + JOIN w_KREGL KREGL ON KRGLDET.NOREGL = KREGL.NOREGL + JOIN prod_mederi.KACTES ON KACTES.ACCLEUNIK = KRGLDET.ACCLEUNIK + LEFT JOIN activite[PX].t_rubriques_facturation ON (t_rubriques_facturation.code_original = '*CTI_ACO85') + LEFT JOIN activite.t_prestations ON (t_prestations.code_original = '*CTI_ACO85') + WHERE 1=1 + AND KREGL.ORIGINE = 13 + AND KREGL.DEBITEUR = 1 + AND KACTES.TYPERUB <> 4 + --AND JOUR_TYPEMVT <> 'FACAV' + + GROUP BY 1,2,3,4 + ; + + -- Acomptes + INSERT INTO w_FAC_REGLEMENT_LIGNE_C + SELECT + KACTES.NOFAC AS no_facture, + date(KRGLDET.DATE) AS date_reglement, + + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + + SUM(KRGLDET.MONTANT) AS montant_regle, + SUM(CASE WHEN KREGL.DEBITEUR = 3 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN KREGL.DEBITEUR = 1 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN KREGL.DEBITEUR = 2 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_2, + 0 AS montant_regle_22 + + FROM w_KRGLDET KRGLDET + JOIN w_KREGL KREGL ON KRGLDET.NOREGL = KREGL.NOREGL + JOIN prod_mederi.KACTES ON KACTES.ACCLEUNIK = KRGLDET.ACCLEUNIK + LEFT JOIN activite[PX].t_rubriques_facturation ON (t_rubriques_facturation.code_original = '*CTI_ACO') + LEFT JOIN activite.t_prestations ON (t_prestations.code_original = '*CTI_ACO') + WHERE 1=1 + AND KREGL.ORIGINE = 1 + AND KREGL.DEBITEUR = 3 + AND KACTES.TYPERUB <> 4 + + GROUP BY 1,2,3,4 + ; + + --correction par rapport aux règlement non affectés + -- verrouillé pour l'instant par ELA + + DROP TABLE IF EXISTS w_FAC_CORR; + CREATE TEMP TABLE w_FAC_CORR AS + SELECT NOREGL, DATE, MONTANT, SENS,DEBITEUR, KREGL.NODOSSIER, w_FAC_FACTURE.NOFAC, MNTPASS,MNTPAM,MNTPMUT,MNTHASS,MNTHAM,MNTHMUT,SLDPASS,SLDPAM,SLDPMUT,SLDHASS,SLDHAM,SLDHMUT, + COALESCE(t_rubriques_facturation.oid::bigint,0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint,0) AS prestation_id + FROM w_KREGL KREGL, prod_mederi.KDOSSIER, w_FAC_FACTURE + LEFT JOIN activite[PX].t_rubriques_facturation ON (t_rubriques_facturation.code_original = '*MED_REG_DOS') + LEFT JOIN activite.t_prestations ON (t_prestations.code_original = '*MED_REG_DOS') + WHERE NUMREGLD = 0 AND KREGL.DATECOMPTA IS NOT NULL + AND KDOSSIER.NODOSSIER = KREGL.NODOSSIER + AND KDOSSIER.NODOSSIER = w_FAC_FACTURE.NODOSSIER + AND w_FAC_FACTURE.NOFAC IS NOT NULL + AND FACAVOIR IS NULL AND + 1 <> 1; + + CREATE INDEX w_fac_corr_i1 + ON w_fac_corr + USING btree + (NOFAC); + + ANALYSE w_FAC_CORR; + + -- insertion de règlements dossier sans détail sur les factures et leurs lignes + + DROP TABLE IF EXISTS w_FAC_REG_SEJ; + CREATE TEMP TABLE w_FAC_REG_SEJ as + SELECT + NOREGL, + MAX(DEBITEUR) AS DEBITEUR, + MAX(NOFAC) AS NOFAC, + MAX(DATE) AS date_reglement, + + MAX(rubrique_comptabilisation_id) AS rubrique_comptabilisation_id, + prestation_id AS prestation_id, + + CASE WHEN MAX(SENS) IS DISTINCT FROM '-' THEN MAX(MONTANT) ELSE - MAX(MONTANT) END AS montant_regle , + CASE WHEN MAX(DEBITEUR) = 3 THEN CASE WHEN MAX(SENS) IS DISTINCT FROM '-' THEN MAX(MONTANT) ELSE - MAX(MONTANT) END ELSE 0 END AS montant_regle_0, + CASE WHEN MAX(DEBITEUR) = 1 THEN CASE WHEN MAX(SENS) IS DISTINCT FROM '-' THEN MAX(MONTANT) ELSE - MAX(MONTANT) END ELSE 0 END AS montant_regle_1, + CASE WHEN MAX(DEBITEUR) = 2 THEN CASE WHEN MAX(SENS) IS DISTINCT FROM '-' THEN MAX(MONTANT) ELSE - MAX(MONTANT) END ELSE 0 END AS montant_regle_2, + 0 as montant_regle_22 + FROM + (SELECT + NOREGL, + MONTANT, + w_FAC_CORR.NOFAC, + date(w_FAC_CORR.DATE) AS DATE, + w_FAC_CORR.rubrique_comptabilisation_id, + w_FAC_CORR.prestation_id, + SENS, + DEBITEUR +-- , +-- CASE +-- WHEN MONTANT = MNTPASS THEN montant_facture_0 +-- WHEN MONTANT = MNTPAM THEN montant_facture_1 +-- WHEN MONTANT = MNTPMUT THEN montant_facture_2 +-- WHEN MONTANT = SLDPASS THEN montant_facture_0 +-- WHEN MONTANT = SLDPAM THEN montant_facture_1 +-- WHEN MONTANT = SLDPMUT THEN montant_facture_2 +-- WHEN MONTANT = MNTHASS + MNTPASS THEN montant_facture_0 +-- WHEN MONTANT = MNTHAM + MNTPAM THEN montant_facture_1 +-- WHEN MONTANT = MNTHMUT + MNTPMUT THEN montant_facture_2 +-- WHEN MONTANT = SLDHASS + SLDPASS THEN montant_facture_0 +-- WHEN MONTANT = SLDHAM + SLDPAM THEN montant_facture_1 +-- WHEN MONTANT = SLDHMUT + SLDPMUT THEN montant_facture_2 +-- WHEN MONTANT = MNTHASS THEN 0 +-- WHEN MONTANT = MNTHAM THEN 0 +-- WHEN MONTANT = MNTHMUT THEN 0 +-- WHEN MONTANT = SLDHASS THEN 0 +-- WHEN MONTANT = SLDHAM THEN 0 +-- WHEN MONTANT = SLDHMUT THEN 0 +-- ELSE 0 END as MONTANT_CALC + FROM w_FAC_CORR + --,w_FAC_FACTURE_LIGNE_C + WHERE --w_FAC_CORR.NOFAC = w_FAC_FACTURE_LIGNE_C.no_facture + --AND + (((MONTANT = MNTPASS OR MONTANT = MNTPAM OR MONTANT = MNTPMUT + OR MONTANT = MNTHASS OR MONTANT = MNTHAM OR MONTANT = MNTHMUT + OR MONTANT = MNTHASS + MNTPASS OR MONTANT = MNTHAM+MNTPAM OR MONTANT = MNTHMUT+MNTPMUT)) + -- AND w_FAC_CORR.NOFAC NOT IN (SELECT no_facture FROM w_FAC_REGLEMENT_LIGNE_C)) + -- OR + -- ((MONTANT = SLDPASS OR MONTANT = SLDPAM OR MONTANT = SLDPMUT + -- OR MONTANT = SLDHASS OR MONTANT = SLDHAM OR MONTANT = SLDHMUT + -- OR MONTANT = SLDHASS + SLDPASS OR MONTANT = SLDHAM+SLDPAM OR MONTANT = SLDHMUT+SLDPMUT) + --) + )) as sub + -- WHERE MONTANT_CALC = MONTANT + GROUP BY NOREGL,prestation_id; + + INSERT INTO w_FAC_REGLEMENT_LIGNE_C + SELECT + NOFAC, + date_reglement, + + rubrique_comptabilisation_id, + prestation_id, + + montant_regle , + montant_regle_0, + montant_regle_1, + montant_regle_2, + 0 as montant_regle_22 + FROM w_FAC_REG_SEJ + WHERE montant_regle != 0; + + INSERT INTO w_FAC_REGLEMENT_LIGNE_C + SELECT + MAX(w_FAC_CORR.NOFAC) AS NOFAC, + MAX(DATE) AS date_reglement, + + MAX(rubrique_comptabilisation_id) AS rubrique_comptabilisation_id, + MAX(prestation_id) AS prestation_id, + + CASE WHEN MAX(SENS) IS DISTINCT FROM '-' THEN MAX(MONTANT) ELSE - MAX(MONTANT) END AS montant_regle , + CASE WHEN MAX(DEBITEUR) = 3 THEN CASE WHEN MAX(SENS) IS DISTINCT FROM '-' THEN MAX(MONTANT) ELSE - MAX(MONTANT) END ELSE 0 END AS montant_regle_0, + CASE WHEN MAX(DEBITEUR) = 1 THEN CASE WHEN MAX(SENS) IS DISTINCT FROM '-' THEN MAX(MONTANT) ELSE - MAX(MONTANT) END ELSE 0 END AS montant_regle_1, + CASE WHEN MAX(DEBITEUR) = 2 THEN CASE WHEN MAX(SENS) IS DISTINCT FROM '-' THEN MAX(MONTANT) ELSE - MAX(MONTANT) END ELSE 0 END AS montant_regle_2, + 0 as montant_regle_22 + FROM w_FAC_CORR + WHERE NOREGL NOT IN (SELECT NOREGL FROM w_FAC_REG_SEJ) + GROUP BY NOREGL; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_1'); + + UPDATE activite[PX].p_factures_soldes_c + SET + montant_regle = w_FAC_REGLEMENT_LIGNE_C.montant_regle, + montant_regle_0 = w_FAC_REGLEMENT_LIGNE_C.montant_regle_0, + montant_regle_1 = w_FAC_REGLEMENT_LIGNE_C.montant_regle_1, + montant_regle_2 = w_FAC_REGLEMENT_LIGNE_C.montant_regle_2, + montant_regle_22 = w_FAC_REGLEMENT_LIGNE_C.montant_regle_22 + FROM w_FAC_REGLEMENT_LIGNE_C + WHERE p_factures_soldes_c.no_facture = w_FAC_REGLEMENT_LIGNE_C.no_facture AND + p_factures_soldes_c.date_comptable = w_FAC_REGLEMENT_LIGNE_C.date_reglement AND + p_factures_soldes_c.rubrique_comptabilisee_id = w_FAC_REGLEMENT_LIGNE_C.rubrique_comptabilisation_id AND + p_factures_soldes_c.prestation_id = w_FAC_REGLEMENT_LIGNE_C.prestation_id; + + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + w_FAC_REGLEMENT_LIGNE_C.no_facture, + w_FAC_REGLEMENT_LIGNE_C.date_reglement, + w_FAC_REGLEMENT_LIGNE_C.rubrique_comptabilisation_id, + w_FAC_REGLEMENT_LIGNE_C.prestation_id, + 0, + 0, + 0, + 0, + 0, + w_FAC_REGLEMENT_LIGNE_C.montant_regle, + w_FAC_REGLEMENT_LIGNE_C.montant_regle_0, + w_FAC_REGLEMENT_LIGNE_C.montant_regle_1, + w_FAC_REGLEMENT_LIGNE_C.montant_regle_2, + w_FAC_REGLEMENT_LIGNE_C.montant_regle_22 + FROM w_FAC_REGLEMENT_LIGNE_C + LEFT JOIN activite[PX].p_factures_soldes_c + ON (p_factures_soldes_c.no_facture = w_FAC_REGLEMENT_LIGNE_C.no_facture + AND p_factures_soldes_c.date_comptable = w_FAC_REGLEMENT_LIGNE_C.date_reglement + AND p_factures_soldes_c.rubrique_comptabilisee_id = w_FAC_REGLEMENT_LIGNE_C.rubrique_comptabilisation_id + AND p_factures_soldes_c.prestation_id = w_FAC_REGLEMENT_LIGNE_C.prestation_id) + WHERE date_reglement IS NOT NULL AND p_factures_soldes_c.no_facture IS NULL; + + + + -- Annulations par avoirs + + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_avoir) + SELECT + p_factures_soldes_c.no_facture, + date_od_avoir, + rubrique_comptabilisee_id, + prestation_id, + 0, + 0, + 0, + 0, + 0, + p_factures_soldes_c.montant_comptabilise, + p_factures_soldes_c.montant_comptabilise_0, + p_factures_soldes_c.montant_comptabilise_1, + p_factures_soldes_c.montant_comptabilise_2, + p_factures_soldes_c.montant_comptabilise_22, + '1' + FROM activite[PX].p_factures_soldes_c JOIN w_ods_avoir ON p_factures_soldes_c.no_facture = w_ods_avoir.no_facture + WHERE p_factures_soldes_c.montant_comptabilise <> 0; + + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_avoir) + SELECT + p_factures_soldes_c.no_facture, + date_od_avoir, + rubrique_comptabilisee_id, + prestation_id, + 0, + 0, + 0, + 0, + 0, + p_factures_soldes_c.montant_comptabilise, + p_factures_soldes_c.montant_comptabilise_0, + p_factures_soldes_c.montant_comptabilise_1, + p_factures_soldes_c.montant_comptabilise_2, + p_factures_soldes_c.montant_comptabilise_22, + '1' + FROM activite[PX].p_factures_soldes_c JOIN w_ods_avoir ON p_factures_soldes_c.no_facture = w_ods_avoir.no_facture_od_avoir + WHERE p_factures_soldes_c.montant_comptabilise <> 0; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_8'); + + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_FAC_FACTURE_LIGNE_C CASCADE; + DROP TABLE IF EXISTS w_FAC_REGLEMENT_LIGNE_C CASCADE; + + -- maj soldes + UPDATE activite[PX].p_factures + SET + montant_regle_c = sub.montant_regle_c, + montant_regle_0_c = sub.montant_regle_0_c, + montant_regle_1_c = sub.montant_regle_1_c, + montant_regle_2_c = sub.montant_regle_2_c + FROM ( + SELECT + no_facture, + SUM(reg_c.montant_regle) AS montant_regle_c, + SUM(reg_c.montant_regle_0) AS montant_regle_0_c, + SUM(reg_c.montant_regle_1) AS montant_regle_1_c, + SUM(reg_c.montant_regle_2) AS montant_regle_2_c + FROM activite[PX].p_factures_soldes_c reg_c + GROUP BY 1) as sub + WHERE sub.no_facture = p_factures.no_facture; + + ]]> + + + + + + + + = 7 THEN 'CCAM' ELSE 'NGAP' END), + MIN(CASE WHEN length(trim(NCCAM)) >= 7 THEN 0 ELSE t_ccam_regroupements.oid END), + MIN(CASE WHEN length(trim(NCCAM)) >= 7 THEN 0 ELSE t_ccam_regroupements.oid END), + 0 + FROM w_FAC_FACTURE, prod_mederi.KACTES + LEFT JOIN base.t_actes ON (trim(substring(NCCAM, 1, 7)) = trim(t_actes.code)), base.t_ccam_regroupements + WHERE + w_FAC_FACTURE.NOFAC = KACTES.NOFAC + AND TYPERUB = 4 AND t_actes.oid is NULL + AND t_ccam_regroupements.code = 'NGAP' + AND NCCAM IS NOT NULL + GROUP BY 1,2,3; + + + + DROP TABLE IF EXISTS w_FAC_FACTURE_LIGNE_H; + + CREATE TEMP TABLE w_FAC_FACTURE_LIGNE_H AS + SELECT + ACCLEUNIK, + KACTES.NOFAC AS no_facture, + DATEACTE AS date_debut, + COALESCE(DATEFIN,DATEACTE) AS date_fin, + CASE WHEN FACPARTIEL != 9 AND DATEFAC IS NOT NULL THEN DATEFAC ELSE '20991231'::date END AS date_vente, + lieu_sortie_id, + CASE WHEN TYPEFAC NOT IN ('2','4') THEN QTE ELSE 0-QTE END AS nb_rubrique, + CASE WHEN TYPEFAC NOT IN ('2','4') THEN QTE ELSE 0-QTE END AS nb_prestations, + KACTES.COEFF as coefficient, + 1 AS coefficient_mco, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + COALESCE(t_medecins_administratifs.oid::bigint, 0) AS medecin_facture_id, + COALESCE(t_medecins_administratifs.oid::bigint, 0) AS medecin_comptabilise_id, + PRIXU::numeric AS prix_unitaire, + + COALESCE(t_actes.oid::bigint, 0) AS acte_id, + replace(HDEBUT,':','')::int AS heure_debut, + PHASE::int AS phase_ccam, + ACTIVITE::integer AS activite_ccam, + '' AS extension_ccam, + substr(MODIFICAT,1,1) AS modificateur_ccam_1, + substr(MODIFICAT,2,1) AS modificateur_ccam_2, + substr(MODIFICAT,3,1) AS modificateur_ccam_3, + substr(MODIFICAT,4,1) AS modificateur_ccam_4, + + SUM(CASE WHEN TYPEFAC NOT IN ('2','4') THEN MNTASS + MNTMUT + MNTSS ELSE - (MNTASS + MNTMUT + MNTSS) END) AS montant_facture, + SUM(CASE WHEN TYPEFAC NOT IN ('2','4') THEN MNTASS ELSE - MNTASS END) AS montant_facture_0, + SUM(CASE WHEN TYPEFAC NOT IN ('2','4') THEN MNTSS ELSE - MNTSS END) AS montant_facture_1, + SUM(CASE WHEN TYPEFAC NOT IN ('2','4') THEN MNTMUT ELSE - MNTMUT END) AS montant_facture_2, + 0 as montant_facture_22, + + SUM(CASE WHEN TYPEFAC NOT IN ('2','4') THEN MDCAI + MDMUT + MDASS ELSE - (MDCAI + MDMUT + MDASS) END) as montant_depassement, + + 0 AS montant_facture_actes_inclus_dans_sejour, + 0 as montant_facture_0_actes_inclus_dans_sejour, + 0 as montant_facture_1_actes_inclus_dans_sejour, + 0 as montant_facture_2_actes_inclus_dans_sejour, + 0 as montant_facture_22_actes_inclus_dans_sejour, + + AVG(1-TAUXSS-TAUXMUT) as taux_0, + AVG(TAUXSS) as taux_1, + AVG(TAUXMUT) as taux_2, + 0 as taux_22, + + SUM(CASE WHEN DATEFAC IS NOT NULL AND NOT (CODETAB = 3 AND valeur = 1) THEN CASE WHEN TYPEFAC NOT IN ('2','4') THEN MNTASS + MNTMUT + MNTSS ELSE - (MNTASS + MNTMUT + MNTSS) END ELSE 0 END) AS montant_comptabilise, + SUM(CASE WHEN DATEFAC IS NOT NULL AND NOT (CODETAB = 3 AND valeur = 1) THEN CASE WHEN TYPEFAC NOT IN ('2','4') THEN MNTASS ELSE - MNTASS END ELSE 0 END) AS montant_comptabilise_0, + SUM(CASE WHEN DATEFAC IS NOT NULL AND NOT (CODETAB = 3 AND valeur = 1) THEN CASE WHEN TYPEFAC NOT IN ('2','4') THEN MNTSS ELSE - MNTSS END ELSE 0 END) AS montant_comptabilise_1, + SUM(CASE WHEN DATEFAC IS NOT NULL AND NOT (CODETAB = 3 AND valeur = 1) THEN CASE WHEN TYPEFAC NOT IN ('2','4') THEN MNTMUT ELSE - MNTMUT END ELSE 0 END) AS montant_comptabilise_2, + 0 as montant_comptabilise_22 + + FROM prod_mederi.KACTES + LEFT JOIN w_FAC_FACTURE ON w_FAC_FACTURE.NOFAC = KACTES.NOFAC + LEFT JOIN activite[PX].t_rubriques_facturation ON (KACTES.NOACTE = t_rubriques_facturation.code_original) + LEFT JOIN prod_mederi.KRUBINT ON (KACTES.NOACTE = KRUBINT.NOACTE) + LEFT JOIN activite.t_prestations ON (NOACTESS = t_prestations.code) + LEFT JOIN activite[PX].t_medecins_administratifs ON (NOPRAT = t_medecins_administratifs.code_original) + LEFT JOIN base.t_actes ON (CASE WHEN NCCAM IS NULL THEN KACTES.NOACTE ELSE substring(NCCAM, 1, 7) END = t_actes.code) + LEFT JOIN W_KPRAT KPRAT ON KACTES.NOPRAT = KPRAT.NOPRAT + LEFT JOIN activite.t_divers ON t_divers.code = 'MEDSAL_COMPTACLI' AND valeur = 1 + WHERE 1=1 + AND TYPEFAC NOT IN (3,4) + AND KACTES.TYPERUB = 4 + + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25; + + -- modificationd es factures avec règlements sans détail (trop percus ) + + + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_9'); + + INSERT INTO activite[PX].p_factures_lignes_h( + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + acte_id + ) + + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestations, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_sortie_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + 0, + 0, + 0, + 0, + 0, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + acte_id + + FROM w_FAC_FACTURE_LIGNE_H; + + + DROP TABLE IF EXISTS w_mouvements_sejour_lieu_jour; + CREATE TEMP TABLE w_mouvements_sejour_lieu_jour AS + SELECT no_sejour, + date, + (MAX(CASE WHEN est_absence <> '1' THEN Array[heure_fin, lieu_id] ELSE NULL END))[2] AS lieu_id, + (MAX(Array[heure_fin, lieu_id]))[2] AS lieu_id_avec_absence + FROM activite[PX].p_mouvements_sejour + JOIN activite[PX].t_lieux ON lieu_id = t_lieux.oid + JOIN activite[PX].t_services_facturation On service_facturation_id = t_services_facturation.oid + GROUP BY 1,2; + + + UPDATE activite[PX].p_factures_lignes_h + SET lieu_id = COALESCE(w_mouvements_sejour_lieu_jour.lieu_id,w_mouvements_sejour_lieu_jour.lieu_id_avec_absence) + FROM activite[PX].p_factures, w_mouvements_sejour_lieu_jour + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + p_factures.no_sejour = w_mouvements_sejour_lieu_jour.no_sejour AND + p_factures_lignes_h.date_debut = w_mouvements_sejour_lieu_jour.date AND + p_factures_lignes_h.lieu_id <> COALESCE(w_mouvements_sejour_lieu_jour.lieu_id,w_mouvements_sejour_lieu_jour.lieu_id_avec_absence); + + + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_9'); + + + -- Suppression des tables de travail non utilisées après + + + + + ]]> + + + + 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + AND w_FAC_FACTURE_LIGNE_H.no_facture IS NOT NULL + GROUP BY 1,2,3; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_1'); + + DROP TABLE IF EXISTS w_FAC_REGLEMENT_LIGNE_H; + CREATE TEMP TABLE w_FAC_REGLEMENT_LIGNE_H AS + SELECT + KACTES.NOFAC AS no_facture, + KRGLDET.DATE AS date_reglement, + + COALESCE(t_medecins_administratifs.oid::bigint, 0) AS medecin_comptabilise_id, + + SUM(KRGLDET.MONTANT) AS montant_regle, + SUM(CASE WHEN KREGL.DEBITEUR = 3 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN KREGL.DEBITEUR = 1 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN KREGL.DEBITEUR = 2 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_2, + 0 AS montant_regle_22 + + FROM w_KRGLDET KRGLDET + JOIN w_KREGL KREGL ON KRGLDET.NOREGL = KREGL.NOREGL + JOIN prod_mederi.KACTES ON KACTES.ACCLEUNIK = KRGLDET.ACCLEUNIK + JOIN activite[PX].p_sejours ON KACTES.NODOSSIER = p_sejours.no_sejour + LEFT JOIN activite[PX].t_medecins_administratifs ON (KACTES.NOPRAT = t_medecins_administratifs.code_original) + LEFT JOIN activite.t_divers ON t_divers.code = 'MEDSAL_COMPTACLI' + JOIN W_KPRAT KPRAT ON KACTES.NOPRAT = KPRAT.NOPRAT AND (valeur != 1 OR CODETAB != 3) + WHERE 1=1 + AND NOT ((KREGL.ORIGINE = 13 AND KREGL.DEBITEUR = 1) OR (KREGL.ORIGINE = 1 AND KREGL.DEBITEUR = 3)) + AND TYPERUB = 4 + GROUP BY 1,2,3; + + -- Règlements sans affectation + INSERT INTO w_FAC_REGLEMENT_LIGNE_H + SELECT + subview.no_facture AS no_facture, + date(KREGL.DATE) AS date_reglement, + + 0::bigint AS medecin_comptabilise_id, + + SUM(KREGL.MONTANT) AS montant_regle, + SUM(CASE WHEN KREGL.DEBITEUR = 3 THEN KREGL.MONTANT ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN KREGL.DEBITEUR = 1 THEN KREGL.MONTANT ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN KREGL.DEBITEUR = 2 THEN KREGL.MONTANT ELSE 0 END) AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_KREGL KREGL + JOIN + ( + SELECT no_sejour, (MAX(ARRAY[date_facture::text, no_facture]))[2] AS no_facture + FROM activite[PX].p_factures + GROUP BY 1 + ) subview + ON subview.no_sejour = NODOSSIER + WHERE 1=1 AND + KREGL.DEBITEUR = '3' AND + NUMREGLD = '0' AND + ignore = '0' AND + forcehon = '1' + GROUP BY 1,2,3 + ; + + -- Acomptes + INSERT INTO w_FAC_REGLEMENT_LIGNE_H + SELECT + KACTES.NOFAC AS no_facture, + KRGLDET.DATE AS date_reglement, + + 0 AS medecin_comptabilise_id, + + SUM(KRGLDET.MONTANT) AS montant_regle, + SUM(CASE WHEN KREGL.DEBITEUR = 3 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN KREGL.DEBITEUR = 1 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN KREGL.DEBITEUR = 2 THEN KRGLDET.MONTANT ELSE 0 END) AS montant_regle_2, + 0 AS montant_regle_22 + + FROM w_KRGLDET KRGLDET + JOIN w_KREGL KREGL ON KRGLDET.NOREGL = KREGL.NOREGL + JOIN prod_mederi.KACTES ON KACTES.ACCLEUNIK = KRGLDET.ACCLEUNIK + JOIN activite[PX].p_sejours ON KACTES.NODOSSIER = p_sejours.no_sejour + LEFT JOIN activite[PX].t_medecins_administratifs ON (KACTES.NOPRAT = t_medecins_administratifs.code_original) + LEFT JOIN activite.t_divers ON t_divers.code = 'MEDSAL_COMPTACLI' + JOIN W_KPRAT KPRAT ON KACTES.NOPRAT = KPRAT.NOPRAT AND (valeur != 1 OR CODETAB != 3) + WHERE 1=1 + AND ((KREGL.ORIGINE = 13 AND KREGL.DEBITEUR = 1) OR (KREGL.ORIGINE = 1 AND KREGL.DEBITEUR = 3)) + AND TYPERUB = 4 + + GROUP BY 1,2,3 + ; + + + UPDATE w_FAC_REG_SEJ + SET + montant_regle = 0, + montant_regle_0 = 0, + montant_regle_1 = 0, + montant_regle_2 = 0 + ; + + UPDATE w_FAC_REG_SEJ + SET + montant_regle = CASE WHEN SENS IS DISTINCT FROM '-' THEN MONTANT ELSE - MONTANT END, + montant_regle_0 = CASE WHEN sub.DEBITEUR = 3 THEN CASE WHEN SENS IS DISTINCT FROM '-' THEN MONTANT ELSE - MONTANT END ELSE 0 END, + montant_regle_1 = CASE WHEN sub.DEBITEUR = 1 THEN CASE WHEN SENS IS DISTINCT FROM '-' THEN MONTANT ELSE - MONTANT END ELSE 0 END, + montant_regle_2 = CASE WHEN sub.DEBITEUR = 2 THEN CASE WHEN SENS IS DISTINCT FROM '-' THEN MONTANT ELSE - MONTANT END ELSE 0 END + FROM + (SELECT + NOREGL, + w_FAC_CORR.NOFAC, + date(w_FAC_CORR.DATE) AS DATE, + SENS, + DEBITEUR, + CASE + WHEN MONTANT = MNTHASS THEN montant_facture_0 + WHEN MONTANT = MNTHAM THEN montant_facture_1 + WHEN MONTANT = MNTHMUT THEN montant_facture_2 + WHEN MONTANT = SLDHASS THEN montant_facture_0 + WHEN MONTANT = SLDHAM THEN montant_facture_1 + WHEN MONTANT = SLDHMUT THEN montant_facture_2 + WHEN MONTANT = MNTHASS + MNTPASS THEN montant_facture_0 + WHEN MONTANT = MNTHAM + MNTPAM THEN montant_facture_1 + WHEN MONTANT = MNTHMUT + MNTPMUT THEN montant_facture_2 + WHEN MONTANT = SLDHASS + SLDPASS THEN montant_facture_0 + WHEN MONTANT = SLDHAM + SLDPAM THEN montant_facture_1 + WHEN MONTANT = SLDHMUT + SLDPMUT THEN montant_facture_2 + WHEN MONTANT = MNTPASS THEN 0 + WHEN MONTANT = MNTPAM THEN 0 + WHEN MONTANT = MNTPMUT THEN 0 + WHEN MONTANT = SLDPASS THEN 0 + WHEN MONTANT = SLDPAM THEN 0 + WHEN MONTANT = SLDPMUT THEN 0 + ELSE 0 END as MONTANT + FROM w_FAC_CORR ,w_FAC_FACTURE_LIGNE_H + WHERE w_FAC_CORR.NOFAC = w_FAC_FACTURE_LIGNE_H.no_facture + AND (((MONTANT = MNTPASS OR MONTANT = MNTPAM OR MONTANT = MNTPMUT + OR MONTANT = MNTHASS OR MONTANT = MNTHAM OR MONTANT = MNTHMUT + OR MONTANT = MNTHASS + MNTPASS OR MONTANT = MNTHAM+MNTPAM OR MONTANT = MNTHMUT+MNTPMUT) + AND w_FAC_CORR.NOFAC NOT IN (SELECT no_facture FROM w_FAC_REGLEMENT_LIGNE_H)) + OR + ((MONTANT = SLDPASS OR MONTANT = SLDPAM OR MONTANT = SLDPMUT + OR MONTANT = SLDHASS OR MONTANT = SLDHAM OR MONTANT = SLDHMUT + OR MONTANT = SLDHASS + SLDPASS OR MONTANT = SLDHAM+SLDPAM OR MONTANT = SLDHMUT+SLDPMUT) + )) + ) as sub + WHERE sub.NOFAC = w_FAC_REG_SEJ.NOFAC + AND sub.DEBITEUR = w_FAC_REG_SEJ.DEBITEUR + AND sub.DATE = w_FAC_REG_SEJ.date_reglement + ; + + INSERT INTO w_FAC_REGLEMENT_LIGNE_H + SELECT + NOFAC, + date_reglement, + + 0 as medecin_comptabilise_id, + + montant_regle , + montant_regle_0, + montant_regle_1, + montant_regle_2, + 0 as montant_regle_22 + FROM w_FAC_REG_SEJ + WHERE montant_regle != 0; + + DELETE FROM w_FAC_REGLEMENT_LIGNE_H + WHERE w_FAC_REGLEMENT_LIGNE_H.no_facture NOT IN (SELECT p_factures.no_facture FROM activite[PX].p_factures) + ; + + + -- Comptes clients (REG) + + UPDATE activite[PX].p_factures_soldes_h + SET + montant_regle = w_FAC_REGLEMENT_LIGNE_H.montant_regle, + montant_regle_0 = w_FAC_REGLEMENT_LIGNE_H.montant_regle_0, + montant_regle_1 = w_FAC_REGLEMENT_LIGNE_H.montant_regle_1, + montant_regle_2 = w_FAC_REGLEMENT_LIGNE_H.montant_regle_2, + montant_regle_22 = w_FAC_REGLEMENT_LIGNE_H.montant_regle_22 + FROM w_FAC_REGLEMENT_LIGNE_H + WHERE p_factures_soldes_h.no_facture = w_FAC_REGLEMENT_LIGNE_H.no_facture + AND p_factures_soldes_h.date_comptable = w_FAC_REGLEMENT_LIGNE_H.date_reglement + AND p_factures_soldes_h.medecin_comptabilise_id = w_FAC_REGLEMENT_LIGNE_H.medecin_comptabilise_id; + + + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + date_comptable, + medecin_comptabilise_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + w_FAC_REGLEMENT_LIGNE_H.no_facture, + w_FAC_REGLEMENT_LIGNE_H.date_reglement, + w_FAC_REGLEMENT_LIGNE_H.medecin_comptabilise_id, + 0, + 0, + 0, + 0, + 0, + w_FAC_REGLEMENT_LIGNE_H.montant_regle, + w_FAC_REGLEMENT_LIGNE_H.montant_regle_0, + w_FAC_REGLEMENT_LIGNE_H.montant_regle_1, + w_FAC_REGLEMENT_LIGNE_H.montant_regle_2, + w_FAC_REGLEMENT_LIGNE_H.montant_regle_22 + FROM w_FAC_REGLEMENT_LIGNE_H + LEFT JOIN activite[PX].p_factures_soldes_h + ON (p_factures_soldes_h.no_facture = w_FAC_REGLEMENT_LIGNE_H.no_facture + AND p_factures_soldes_h.date_comptable = w_FAC_REGLEMENT_LIGNE_H.date_reglement + AND p_factures_soldes_h.medecin_comptabilise_id = w_FAC_REGLEMENT_LIGNE_H.medecin_comptabilise_id) + WHERE TRUE + AND date_reglement IS NOT NULL + AND p_factures_soldes_h.no_facture IS NULL + AND w_FAC_REGLEMENT_LIGNE_H.no_facture IS NOT NULL; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_8'); + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_FAC_REGLEMENT_LIGNE_H CASCADE; + DROP TABLE IF EXISTS w_FAC_FACTURE_LIGNE_H CASCADE; + + -- maj soldes + UPDATE activite[PX].p_factures + SET + montant_regle_h = sub.montant_regle_h, + montant_regle_0_h = sub.montant_regle_0_h, + montant_regle_1_h = sub.montant_regle_1_h, + montant_regle_2_h = sub.montant_regle_2_h + FROM ( + SELECT + no_facture, + SUM(reg_h.montant_regle) AS montant_regle_h, + SUM(reg_h.montant_regle_0) AS montant_regle_0_h, + SUM(reg_h.montant_regle_1) AS montant_regle_1_h, + SUM(reg_h.montant_regle_2) AS montant_regle_2_h + FROM activite[PX].p_factures_soldes_h reg_h + GROUP BY 1) as sub + WHERE sub.no_facture = p_factures.no_facture; + ]]> + + + + '1' AND type_facture <> 'X' AND type_facture <> 'P' THEN p_factures.no_facture ELSE null END) AS no_facture_reference_last, + MAX(CASE WHEN type_facture <> '1' AND type_facture <> 'X' AND type_facture <> 'P' AND + (t_prestations.code IN ('GHS','PJ') OR (p_factures.no_facture LIKE '%BG' AND p_sejours.type_sejour IN ('1','2','5'))) THEN p_factures.no_facture ELSE null END) AS no_facture_reference_sejour_last, + COUNT(DISTINCT p_factures.no_facture) AS nb_factures, + MAX(avec_facturation_intermediaire) AS avec_facturation_intermediaire + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_lieux ON p_sejours.lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + LEFT JOIN activite[PX].p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + LEFT JOIN activite.t_prestations ON p_factures_lignes_c.prestation_id = t_prestations.oid AND t_prestations.code IN ('GHS','PJ') + GROUP BY 1,2; + + CREATE INDEX w_sejours_facture_reference_i1 + ON w_sejours_facture_reference + USING btree + (no_sejour); + + UPDATE activite[PX].p_factures + SET no_facture_reference = COALESCE(no_facture_reference_sejour_last, no_facture_reference_last, no_facture_last) + FROM w_sejours_facture_reference + JOIN activite[PX].p_sejours ON p_sejours.no_sejour = w_sejours_facture_reference.no_sejour + WHERE p_factures.no_sejour = w_sejours_facture_reference.no_sejour AND + ( + p_factures.date_fin = w_sejours_facture_reference.date_fin OR + p_factures.date_fin = p_sejours.date_sortie AND avec_facturation_intermediaire IS DISTINCT FROM '1' + + ) AND + p_factures.no_facture_reference <> COALESCE(no_facture_reference_sejour_last, no_facture_reference_last, no_facture_last); + + + UPDATE activite[PX].p_factures + SET type_facture = '0' + WHERE p_factures.type_facture = '2' AND + p_factures.no_facture = p_factures.no_facture_reference; + + UPDATE activite[PX].p_factures + SET type_facture = '2' + WHERE p_factures.type_facture = '0' AND + p_factures.no_facture <> p_factures.no_facture_reference; + + + + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_sejours_facture_reference CASCADE; + + ]]> + + + + + + + + = '[ENV_ADM_ANNEEDEBUT]0101' AND + NOFAC IS NOT NULL + GROUP BY 1 + UNION ALL + SELECT + date_trunc('month',DATE) AS date_comptable, + 0 AS montant_vente_c, + SUM(CASE WHEN NOPRAT IS NULL THEN KRGLDET.MONTANT ELSE 0 END) AS montant_reglements_c, + 0 AS montant_solde_c, + 0 AS montant_vente_h, + SUM(CASE WHEN NOPRAT IS NOT NULL THEN KRGLDET.MONTANT ELSE 0 END) AS montant_reglements_h, + 0 AS montant_solde_h + FROM w_KRGLDET KRGLDET + WHERE DATE > '[ENV_ADM_ANNEEDEBUT]0101' + AND KRGLDET.NOFAC IS NOT NULL + GROUP BY 1 + ORDER BY 1) AS sub + GROUP BY 1; + + TRUNCATE activite[PX].p_factures_comptables; + + INSERT INTO activite[PX].p_factures_comptables ( + no_facture, + date_comptable, + montant_ventes_c, + montant_ventes_h, + montant_reglements_c, + montant_reglements_h + ) + SELECT no_facture, + date_comptable, + SUM(montant_ventes_c) AS montant_ventes_c, + SUM(montant_ventes_h) AS montant_ventes_h, + SUM(montant_reglements_c) AS montant_reglements_c, + SUM(montant_reglements_h) AS montant_reglements_h + FROM ( + SELECT + COALESCE(NOFAC,'000000000') AS no_facture, + DATEFAC AS date_comptable, + SUM(CASE WHEN TYPEFAC NOT IN ('2','4') THEN MNTPREST ELSE 0 -MNTPREST END) AS montant_ventes_c, + SUM(CASE WHEN TYPEFAC NOT IN ('2','4') THEN MNTHONO ELSE 0 -MNTHONO END) AS montant_ventes_h, + 0::numeric AS montant_reglements_c, + 0::numeric AS montant_reglements_h + FROM w_KFACTURE KFACTURE + WHERE DATEFAC >= '[ENV_ADM_ANNEEDEBUT]0101' AND + NOFAC IS NOT NULL + GROUP BY 1,2 + HAVING + SUM(MNTPREST) <> 0 OR SUM(MNTHONO) <> 0 + UNION + SELECT + COALESCE(KRGLDET.NOFAC,'000000000') AS no_facture, + date_trunc('month',DATE) AS date_comptable, + 0 AS montant_vente_c, + 0 AS montant_vente_h, + SUM(CASE WHEN NOPRAT IS NULL THEN KRGLDET.MONTANT ELSE 0 END) AS montant_reglements_c, + SUM(CASE WHEN NOPRAT IS NOT NULL THEN KRGLDET.MONTANT ELSE 0 END) AS montant_reglements_h + FROM w_KRGLDET KRGLDET + WHERE DATE > '[ENV_ADM_ANNEEDEBUT]0101' + AND KRGLDET.NOFAC IS NOT NULL + GROUP BY 1,2 + ) subview + GROUP BY 1,2 + ORDER BY 1,2; + + + + ]]> + + + + + + + 1 AND + count(distinct TYPEFAC) = 1 + ) subview + WHERE w_KFACTURE.NOFAC = subview.NOFAC + ; + + + -- ELA Suppression des autres factures en double (en attendant mieux) + UPDATE w_KFACTURE + SET est_doublon = '1' + WHERE NOFAC IN + ( + SELECT NOFAC + FROM w_KFACTURE + WHERE NOFAC IS NOT NULL AND est_doublon = '0' + GROUP BY 1 + HAVING count(*) > 1 + ) + ; + + UPDATE w_KFACTURE + SET MNTPREST = MNTPREST - MNTPASS, + MNTPASS = MNTPREST - MNTPASS + WHERE NOFAC LIKE 'P%' AND + (MNTPREST IS DISTINCT FROM MNTPREST - MNTPASS OR + MNTPASS IS DISTINCT FROM MNTPREST - MNTPASS + ) + ; + + CREATE INDEX w_KFACTURE_ik_nofac + ON w_KFACTURE + USING btree + (nofac); + + CREATE INDEX w_KFACTURE_ik_nodossier + ON w_KFACTURE + USING btree + (nodossier); + + UPDATE w_KFACTURE + SET DATEFACPAR = subview.DATEFIN + FROM + (SELECT NOFAC, MAX(COALESCE(DATEFIN,DATEACTE)) AS DATEFIN + FROM prod_mederi.KACTES + WHERE NOACTE = 'PJ' + GROUP BY 1 + ) subview + WHERE w_KFACTURE.NOFAC = subview.NOFAC AND + DATEFACPAR IS NOT NULL AND + TYPEFAC = '1' AND + (DATEFACPAR - subview.DATEFIN) > 1 + ; + + -- Préparation table des reglements pour signer + DROP TABLE IF EXISTS w_KREGL; + CREATE TEMP TABLE w_KREGL AS + SELECT *, + '0'::text AS ignore, + '0'::text AS forcehon + FROM prod_mederi.KREGL + ; + + UPDATE w_KREGL + SET forcehon = '1' + WHERE NUMREGLD = 0 AND + libelle like 'Rglt %' AND + libelle like '% Hon N%' + ; + + UPDATE w_KREGL + SET ignore = '1' + WHERE NUMREGLD = 0 AND + ETATREGL <> '1' AND ORIGINE = 8 + ; + + + UPDATE w_KREGL SET + SENS = CASE WHEN ORIGINE IN ('4', '6', '8','10','12','14','15') THEN '-' ELSE '' END, + MONTANT = CASE WHEN ORIGINE IN ('4', '6', '8','10','12','14','15') THEN 0-MONTANT ELSE MONTANT END + ; + + ANALYSE w_KREGL + ; + + CREATE INDEX w_KREGL_ik_nodossier + ON w_KREGL + USING btree + (nodossier); + + CREATE INDEX w_KREGL_ik_noregl + ON w_KREGL + USING btree + (noregl); + + + DROP TABLE IF EXISTS w_KRGLDET; + CREATE TEMP TABLE w_KRGLDET AS + SELECT * + FROM prod_mederi.KRGLDET + ; + + UPDATE w_KRGLDET SET + MONTANT = CASE WHEN ORIGINE IN ('4', '6', '8','10','12','14','15') THEN 0-MONTANT ELSE MONTANT END + WHERE ORIGINE IN ('4', '6', '8','10','12','14','15') + ; + + ANALYSE w_KRGLDET + ; + + + CREATE INDEX w_KRGLDET_ik_nodossier + ON w_KRGLDET + USING btree + (nodossier); + + CREATE INDEX w_KRGLDET_ik_noregl + ON w_KRGLDET + USING btree + (noregl); + + CREATE INDEX w_KRGLDET_ik_nofac + ON w_KRGLDET + USING btree + (nofac); + + + -- N° dossier vide sur entete reglement + UPDATE w_KREGL + SET NODOSSIER = subview.NODOSSIER + FROM + ( + SELECT w_KREGL.NOREGL, MAX(w_KFACTURE.NODOSSIER) AS NODOSSIER + FROM w_KREGL + JOIN w_KRGLDET ON w_KREGL.NOREGL = w_KRGLDET.NOREGL + JOIN w_KFACTURE ON w_KRGLDET.NOFAC = w_KFACTURE.NOFAC + WHERE w_KREGL.NODOSSIER IS NULL + GROUP BY 1 + ) subview + WHERE w_KREGL.NOREGL = subview.NOREGL AND + w_KREGL.NODOSSIER IS NULL + ; + + + ]]> + + + + '00'; + + + ]]> + + + + NOMPRAT OR + t_medecins_administratifs.prenom <> PRENOMPRAT OR + t_medecins_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid,t_specialites_medecin_2.oid,0) OR + t_medecins_administratifs.medecin_id <> w_medecins.medecin_id + ); + + + + UPDATE activite[PX].t_medecins_administratifs + SET specialite_id = subview.specialite_medecin_id + FROM + ( + SELECT t_medecins_administratifs.oid,t_specialites_medecin.oid AS specialite_medecin_id + FROM activite[PX].t_medecins_administratifs + JOIN base.t_specialites_medecin t_specialites_medecin_2 ON specialite_id = t_specialites_medecin_2.oid + JOIN base.t_specialites_medecin ON t_specialites_medecin_2.code || '..' = t_specialites_medecin.code + ) subview + WHERE t_medecins_administratifs.oid = subview.oid; + + UPDATE base.t_medecins SET specialite_id = subview.specialite_id FROM + (SELECT t_medecins.oid, MIN(t_medecins_administratifs.specialite_id) as specialite_id + FROM base.t_medecins, activite[PX].t_medecins_administratifs , base.t_specialites_medecin + WHERE t_medecins.oid = t_medecins_administratifs.medecin_id + AND t_medecins_administratifs.specialite_id = t_specialites_medecin.oid + GROUP BY t_medecins.oid) subview + WHERE t_medecins.oid = subview.oid AND t_medecins.oid <> 0 AND t_medecins.specialite_id = 0; + + + -- no_adeli + UPDATE activite[PX].t_medecins_administratifs + SET no_adeli = CODEINSEE + FROM prod_mederi.KPRAT + WHERE t_medecins_administratifs.code_original = NOPRAT AND + t_medecins_administratifs.NO_ADELI IS DISTINCT FROM CODEINSEE + ; + + ]]> + + + + 2 + AND KCHAMBRE.NOLIT IS NULL + AND ch.NOLIT IS NOT NULL; + + -- cas nochambre = P, F ou rien et no lit = AC + UPDATE prod_mederi.KSEJOUR + SET NOCHAMBRE = ch.NOLIT + FROM prod_mederi.KSEJOUR mv + LEFT JOIN prod_mederi.KCHAMBRE ON mv.NOCHAMBRE = KCHAMBRE.NOLIT + LEFT JOIN prod_mederi.KCHAMBRE ch ON left(replace(ch.NOLIT,' ',''),-3) = replace (mv.NOCHAMBRE,' ','') + WHERE + KSEJOUR.SECLEUNIK = mv.SECLEUNIK + AND length(KSEJOUR.NOCHAMBRE) > 2 + AND KCHAMBRE.NOLIT IS NULL + AND ch.NOLIT IS NOT NULL; + + -- cas nochambre = XUSI + UPDATE prod_mederi.KSEJOUR + SET NOCHAMBRE = ch.NOLIT + FROM prod_mederi.KSEJOUR mv + LEFT JOIN prod_mederi.KCHAMBRE ON mv.NOCHAMBRE = KCHAMBRE.NOLIT + LEFT JOIN prod_mederi.KCHAMBRE ch ON replace(mv.NOCHAMBRE,'USI','') = ch.NOLIT + WHERE + KSEJOUR.SECLEUNIK = mv.SECLEUNIK + AND length(KSEJOUR.NOCHAMBRE) > 2 + AND KCHAMBRE.NOLIT IS NULL + AND ch.NOLIT IS NOT NULL; + + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT NOLIT, NOLIT, NOLIT, NOLIT, t_etages.oid, CASE WHEN NOACTE = 'CP' THEN 'O' ELSE 'N' END AS CP + FROM prod_mederi.KCHAMBRE, activite[PX].t_etages + WHERE + SECTEUR = t_etages.code_original + AND NOLIT NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL ) + GROUP BY NOLIT, NOLIT, NOLIT, NOLIT, t_etages.oid, NOACTE + ; + + -- Lits non définis + DROP TABLE IF EXISTS w_KSEJOUR_CHAMBRE; + CREATE TEMP TABLE w_KSEJOUR_CHAMBRE AS + SELECT NOCHAMBRE AS NOLIT, ''::text AS SECTEUR + FROM prod_mederi.KSEJOUR + WHERE NOCHAMBRE NOT IN (SELECT NOLIT FROM prod_mederi.KCHAMBRE WHERE NOLIT IS NOT NULL) + GROUP BY 1 + ORDER BY 1; + + UPDATE w_KSEJOUR_CHAMBRE + SET SECTEUR = subview.SECTEUR + FROM + ( + SELECT NOCHAMBRE, MAX(SECTEUR) AS SECTEUR + FROM prod_mederi.KCHAMBRE + WHERE NOCHAMBRE IS NOT NULL AND + NOCHAMBRE <> '' + GROUP BY 1 + HAVING count(DISTINCT SECTEUR) = 1 + ) subview + WHERE w_KSEJOUR_CHAMBRE.NOLIT LIKE subview.NOCHAMBRE || '%' + ; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT NOLIT, NOLIT, NOLIT, NOLIT, t_etages.oid, 'N' AS CP + FROM w_KSEJOUR_CHAMBRE, activite[PX].t_etages + WHERE + SECTEUR = t_etages.code_original + AND NOLIT NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL ) + GROUP BY NOLIT, NOLIT, NOLIT, NOLIT, t_etages.oid + ; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT code_original || '-0' , '', 'Non renseigné', 'Non renseigné', oid, 'O' + FROM activite[PX].t_etages + WHERE oid > 0 AND + code_original || '-0' NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL ); + + UPDATE activite[PX].t_lits SET code = '*****' WHERE code = ''; + ]]> + + + + '' AND substring(CODEACTE, 1, 7) NOT IN (SELECT code FROM base.t_actes WHERE code IS NOT NULL) + GROUP BY 1,2,3; + + + + + + ]]> + + + + + + + + '2099-12-31' THEN date_facture ELSE date_expedition_0 END AS date_expedition_0, + + CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END AS date_solde, + CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END AS date_solde_c, + CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '20991231' END AS date_solde_h, + CASE WHEN montant_comptabilise_0_c = 0 THEN '00010101' WHEN montant_comptabilise_0_c = montant_regle_0_c THEN date_solde_0_c ELSE '20991231' END AS date_solde_0_c, + CASE WHEN montant_comptabilise_0_h = 0 THEN '00010101' WHEN montant_comptabilise_0_h = montant_regle_0_h THEN date_solde_0_h ELSE '20991231' END AS date_solde_0_h, + CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END AS date_solde_1_c, + CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '20991231' END AS date_solde_1_h, + CASE WHEN montant_comptabilise_2_c = 0 THEN '00010101' WHEN montant_comptabilise_2_c = montant_regle_2_c THEN date_solde_2_c ELSE '20991231' END AS date_solde_2_c, + CASE WHEN montant_comptabilise_2_h = 0 THEN '00010101' WHEN montant_comptabilise_2_h = montant_regle_2_h THEN date_solde_2_h ELSE '20991231' END AS date_solde_2_h, + CASE WHEN montant_comptabilise_22_c = 0 THEN '00010101' WHEN montant_comptabilise_22_c = montant_regle_22_c THEN date_solde_22_c ELSE '20991231' END AS date_solde_22_c, + CASE WHEN montant_comptabilise_22_h = 0 THEN '00010101' WHEN montant_comptabilise_22_h = montant_regle_22_h THEN date_solde_22_h ELSE '20991231' END AS date_solde_22_h + FROM activite[PX].p_factures; + + UPDATE w_factures SET + date_solde = GREATEST(date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h), + date_solde_c = GREATEST(date_solde_0_c, date_solde_1_c, date_solde_2_c, date_solde_22_c), + date_solde_h = GREATEST(date_solde_0_h, date_solde_1_h, date_solde_2_h, date_solde_22_h) + WHERE + date_solde IS DISTINCT FROM GREATEST(date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h) OR + date_solde_c IS DISTINCT FROM GREATEST(date_solde_0_c, date_solde_1_c, date_solde_2_c, date_solde_22_c) OR + date_solde_h IS DISTINCT FROM GREATEST(date_solde_0_h, date_solde_1_h, date_solde_2_h, date_solde_22_h) ; + + CREATE INDEX w_factures_i1 + ON w_factures + USING btree + (no_facture); + + CREATE INDEX w_factures_i2 + ON w_factures + USING btree + (no_facture_reference); + + + + DROP TABLE IF EXISTS w_factures_references_soldes; + + CREATE TEMP TABLE w_factures_references_soldes AS + SELECT + no_facture_reference, + MAX(date_solde) AS date_solde_reference, + MAX(date_solde_c) AS date_solde_reference_c, + MAX(date_solde_h) AS date_solde_reference_h, + MAX(date_solde_0_c) AS date_solde_reference_0_c, + MAX(date_solde_0_h) AS date_solde_reference_0_h, + MAX(date_solde_1_c) AS date_solde_reference_1_c, + MAX(date_solde_1_h) AS date_solde_reference_1_h, + MAX(date_solde_2_c) AS date_solde_reference_2_c, + MAX(date_solde_2_h) AS date_solde_reference_2_h, + MAX(date_solde_22_c) AS date_solde_reference_22_c, + MAX(date_solde_22_h) AS date_solde_reference_22_h + FROM w_factures + GROUP BY no_facture_reference; + + + CREATE INDEX w_factures_references_soldes_i1 + ON w_factures_references_soldes + USING btree + (no_facture_reference); + + + + + UPDATE activite[PX].p_factures + SET + date_expedition_0 = w_factures.date_expedition_0, + date_solde = w_factures.date_solde, + date_solde_c = w_factures.date_solde_c, + date_solde_h = w_factures.date_solde_h, + date_solde_0_c = w_factures.date_solde_0_c, + date_solde_0_h = w_factures.date_solde_0_h, + date_solde_1_c = w_factures.date_solde_1_c, + date_solde_1_h = w_factures.date_solde_1_h, + date_solde_2_c = w_factures.date_solde_2_c, + date_solde_2_h = w_factures.date_solde_2_h, + date_solde_22_c = w_factures.date_solde_22_c, + date_solde_22_h = w_factures.date_solde_22_h, + date_solde_reference = w_factures_references_soldes.date_solde_reference, + date_solde_reference_c = w_factures_references_soldes.date_solde_reference_c, + date_solde_reference_h = w_factures_references_soldes.date_solde_reference_h, + date_solde_reference_0_c = w_factures_references_soldes.date_solde_reference_0_c, + date_solde_reference_0_h = w_factures_references_soldes.date_solde_reference_0_h, + date_solde_reference_1_c = w_factures_references_soldes.date_solde_reference_1_c, + date_solde_reference_1_h = w_factures_references_soldes.date_solde_reference_1_h, + date_solde_reference_2_c = w_factures_references_soldes.date_solde_reference_2_c, + date_solde_reference_2_h = w_factures_references_soldes.date_solde_reference_2_h, + date_solde_reference_22_c = w_factures_references_soldes.date_solde_reference_22_c, + date_solde_reference_22_h = w_factures_references_soldes.date_solde_reference_22_h + FROM w_factures + JOIN w_factures_references_soldes ON w_factures_references_soldes.no_facture_reference = w_factures.no_facture_reference + WHERE p_factures.no_facture = w_factures.no_facture + AND ( + p_factures.date_expedition_0 IS DISTINCT FROM w_factures.date_expedition_0 OR + p_factures.date_solde IS DISTINCT FROM w_factures.date_solde OR + p_factures.date_solde_c IS DISTINCT FROM w_factures.date_solde_c OR + p_factures.date_solde_h IS DISTINCT FROM w_factures.date_solde_h OR + p_factures.date_solde_0_c IS DISTINCT FROM w_factures.date_solde_0_c OR + p_factures.date_solde_0_h IS DISTINCT FROM w_factures.date_solde_0_h OR + p_factures.date_solde_1_c IS DISTINCT FROM w_factures.date_solde_1_c OR + p_factures.date_solde_1_h IS DISTINCT FROM w_factures.date_solde_1_h OR + p_factures.date_solde_2_c IS DISTINCT FROM w_factures.date_solde_2_c OR + p_factures.date_solde_2_h IS DISTINCT FROM w_factures.date_solde_2_h OR + p_factures.date_solde_22_c IS DISTINCT FROM w_factures.date_solde_22_c OR + p_factures.date_solde_22_h IS DISTINCT FROM w_factures.date_solde_22_h OR + p_factures.date_solde_reference IS DISTINCT FROM w_factures_references_soldes.date_solde_reference OR + p_factures.date_solde_reference_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_c OR + p_factures.date_solde_reference_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_h OR + p_factures.date_solde_reference_0_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_0_c OR + p_factures.date_solde_reference_0_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_0_h OR + p_factures.date_solde_reference_1_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_1_c OR + p_factures.date_solde_reference_1_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_1_h OR + p_factures.date_solde_reference_2_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_2_c OR + p_factures.date_solde_reference_2_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_2_h OR + p_factures.date_solde_reference_22_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_22_c OR + p_factures.date_solde_reference_22_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_22_h + ); + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_factures CASCADE; + DROP TABLE IF EXISTS w_factures_references_soldes CASCADE; + + + ]]> + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.date_groupage, + p_sejours.ghs_id, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour, + + 0::numeric AS delai_groupage, + 0::numeric AS delai_facture, + 0::numeric AS delai_expedition, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_solde_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_solde_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_solde_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_22 + + FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY 1,2,3,4,5; + + + UPDATE activite[PX].p_sejours + SET date_groupage = date_facture + WHERE (date_groupage IS null OR date_groupage = '20991231' OR date_groupage = '00010101') AND + date_facture <> '2099-12-31'; + + + UPDATE w_sejours_total SET + date_groupage = CASE WHEN date_groupage > '00010101' THEN date_groupage ELSE '20991231' END, + date_facture = CASE WHEN date_facture> '00010101' THEN date_facture ELSE '20991231' END, + date_expedition = CASE WHEN date_expedition > '00010101' THEN date_expedition ELSE '20991231' END, + date_solde = CASE WHEN date_solde > '00010101' THEN date_solde ELSE '20991231' END, + date_expedition_0 = CASE WHEN date_expedition_0 > '00010101' THEN date_expedition_0 ELSE '20991231' END, + date_solde_0 = CASE WHEN date_solde_0 > '00010101' THEN date_solde_0 ELSE '20991231' END, + date_expedition_1 = CASE WHEN date_expedition_1 > '00010101' THEN date_expedition_1 ELSE '20991231' END, + date_solde_1 = CASE WHEN date_solde_1 > '00010101' THEN date_solde_1 ELSE '20991231' END, + date_expedition_2 = CASE WHEN date_expedition_2 > '00010101' THEN date_expedition_2 ELSE '20991231' END, + date_solde_2 = CASE WHEN date_solde_2 > '00010101' THEN date_solde_2 ELSE '20991231' END, + date_expedition_22 = CASE WHEN date_expedition_22 > '00010101' THEN date_expedition_22 ELSE '20991231' END, + date_solde_22 = CASE WHEN date_solde_22 > '00010101' THEN date_solde_22 ELSE '20991231' END; + + + UPDATE w_sejours_total SET + delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END, + delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END, + delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END, + delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END, + delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END, + delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END, + delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END, + delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END, + delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END, + delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END, + delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END, + delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END; + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = w_sejours_total.date_expedition_0, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = w_sejours_total.date_expedition_1, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = w_sejours_total.date_expedition_2, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = w_sejours_total.date_expedition_22, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour, + + + delai_groupage = w_sejours_total.delai_groupage, + delai_facture = w_sejours_total.delai_facture, + delai_expedition = w_sejours_total.delai_expedition, + delai_solde = w_sejours_total.delai_solde, + delai_expedition_0 = w_sejours_total.delai_expedition_0, + delai_solde_0 = w_sejours_total.delai_solde_0, + delai_expedition_1 = w_sejours_total.delai_expedition_1, + delai_solde_1 = w_sejours_total.delai_solde_1, + delai_expedition_2 = w_sejours_total.delai_expedition_2, + delai_solde_2 = w_sejours_total.delai_solde_2, + delai_expedition_22 = w_sejours_total.delai_expedition_22, + delai_solde_22 = w_sejours_total.delai_solde_22 + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM w_sejours_total.date_expedition_0 OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM w_sejours_total.date_expedition_1 OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM w_sejours_total.date_expedition_2 OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM w_sejours_total.date_expedition_22 OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour OR + + p_sejours.delai_groupage IS DISTINCT FROM w_sejours_total.delai_groupage OR + p_sejours.delai_facture IS DISTINCT FROM w_sejours_total.delai_facture OR + p_sejours.delai_expedition IS DISTINCT FROM w_sejours_total.delai_expedition OR + p_sejours.delai_solde IS DISTINCT FROM w_sejours_total.delai_solde OR + p_sejours.delai_expedition_0 IS DISTINCT FROM w_sejours_total.delai_expedition_0 OR + p_sejours.delai_solde_0 IS DISTINCT FROM w_sejours_total.delai_solde_0 OR + p_sejours.delai_expedition_1 IS DISTINCT FROM w_sejours_total.delai_expedition_1 OR + p_sejours.delai_solde_1 IS DISTINCT FROM w_sejours_total.delai_solde_1 OR + p_sejours.delai_expedition_2 IS DISTINCT FROM w_sejours_total.delai_expedition_2 OR + p_sejours.delai_solde_2 IS DISTINCT FROM w_sejours_total.delai_solde_2 OR + p_sejours.delai_expedition_22 IS DISTINCT FROM w_sejours_total.delai_expedition_22 OR + p_sejours.delai_solde_22 IS DISTINCT FROM w_sejours_total.delai_solde_22 + + ); + + -- Ajout des coordonnées des patients par séjour + INSERT INTO activite[PX].p_coordonnees_patient ( + sejour_id, + adresse, + code_postal_id, + commune, + telephone_fixe, + telephone_portable, + email + ) + SELECT + p_sejours.oid, + COALESCE(ADRPAT1, '') || CASE WHEN COALESCE(ADRPAT2, '') != '' THEN ' - ' || ADRPAT2 ELSE '' END, + COALESCE(t_codes_postaux.oid,0), + VILLEPAT, + CASE + WHEN SUBSTRING(TELDOM, 1,2) NOT IN ('06', '07') AND TELDOM <> '' THEN TELDOM + WHEN SUBSTRING(TELBUR, 1,2) NOT IN ('06', '07') AND TELBUR <> '' THEN TELBUR + ELSE ''::text END AS numero_fixe, + CASE + WHEN SUBSTRING(TELDOM, 1,2) IN ('06', '07') AND TELDOM <> '' THEN TELDOM + WHEN SUBSTRING(TELBUR, 1,2) IN ('06', '07') AND TELBUR <> '' THEN TELBUR + ELSE ''::text END AS numero_portable, + COALESCE(COURRIEL1, COURRIEL2, ''::text) + FROM activite[PX].p_sejours + LEFT JOIN prod_mederi.KDOSSIER ON p_sejours.code_original = KDOSSIER.NODOSSIER + LEFT JOIN base.t_codes_postaux ON CPPAT = t_codes_postaux.code + ; + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_sejours_total CASCADE; + + + ]]> + + + + + + + + + + + + + + + + + = '[ENV_ADM_ANNEEDEBUT]1201' + GROUP BY 1 + ORDER BY 1; + + CREATE INDEX w_FAC_FACTURE_DAT_CRE_i1 ON w_FAC_FACTURE_DAT_CRE USING btree (date_encours); + + -- encours sur medecins salaries(vide dans les encours mederi) + DROP TABLE IF EXISTS w_factures_encours_salaries; + CREATE TEMP TABLE w_factures_encours_salaries AS + SELECT + NOFAC, + SUM(MONTANT + MNTCOMPL) AS montant_encours_salaries, + SUM(MNTASS + MDASS) AS montant_encours_salaries_0, + SUM(MNTSS + MDCAI) AS montant_encours_salaries_1, + SUM(MNTMUT + MDMUT) AS montant_encours_salaries_2, + 0::numeric AS montant_encours_22 + FROM prod_mederi.KENCOURS + JOIN W_KPRAT ON KENCOURS.NOPRAT = W_KPRAT.NOPRAT AND CODETAB = 3 + JOIN activite.t_divers ON t_divers.code = 'MEDSAL_COMPTACLI' AND valeur = 1 + WHERE TYPERUB = 4 + GROUP BY 1 + ORDER BY 1; + + CREATE INDEX w_factures_encours_salaries_i1 ON w_factures_encours_salaries USING btree (NOFAC); + + + -- entetes factures encours + DROP TABLE IF EXISTS w_factures_references; + CREATE TEMP TABLE w_factures_references AS + SELECT + no_sejour, + date_fin, + MIN(date_debut) AS date_debut, + MAX(no_facture) AS no_facture + FROM activite[PX].p_factures + WHERE no_facture_reference = no_facture AND code_facture >= '1' + GROUP BY 1,2; + + CREATE INDEX w_factures_references_i1 ON w_factures_references USING btree (no_sejour); + + + DROP TABLE IF EXISTS w_factures_encours; + CREATE TEMP TABLE w_factures_encours AS + SELECT + 0::bigint AS oid, + CASE WHEN KENCOURS.NOFAC != '' THEN KENCOURS.NOFAC ELSE KENCOURS.NODOSSIER END as NOFAC, + min(p_sejours.finess) as finess, + min(p_sejours.no_sejour) as no_sejour, + min(p_sejours.date_entree) as date_entree, + min(p_sejours.date_sortie) as date_sortie, + min(p_sejours.oid) AS sejour_id, + min(p_sejours.lieu_sortie_id) as lieu_sortie_id, + min(COALESCE(w_factures_references.no_facture,'ID' || KENCOURS.NOFAC) || '.EP' || substr(to_char(date_part('year', w_FAC_FACTURE_DAT_CRE.date_encours),'FM0000'),3,2) || to_char(date_part('month', w_FAC_FACTURE_DAT_CRE.date_encours),'FM00')) AS no_facture, + min(w_factures_references.no_facture) AS no_facture_reference, + min(DATEACTE) AS date_debut, + max(COALESCE(DATEFIN,DATEACTE)) AS date_fin, + min(w_FAC_FACTURE_DAT_CRE.date_encours) as date_encours, + 'P'::text AS code_origine, + min(CASE WHEN date_sortie > date_encours OR date(DATESORTIE) > date_encours THEN '0' ELSE '1' END) AS code_sorti, + min(p_sejours.tiers_payant_1_id) as tiers_payant_1_id, + min(p_sejours.tiers_payant_2_id) as tiers_payant_2_id, + min(p_sejours.tiers_payant_22_id) as tiers_payant_22_id, + min(p_sejours.tiers_payant_0_id) as tiers_payant_0_id, + min(p_sejours.ghs_id) as ghs_id, + min(p_sejours.ghs_bebe1_id) as ghs_bebe1_id, + min(p_sejours.ghs_bebe2_id) as ghs_bebe2_id, + min(p_sejours.ghs_bebe3_id) as ghs_bebe3_id, + min(p_sejours.code_cp_demandee) as code_cp_demandee, + SUM(MNTSS + MNTMUT + MNTASS) + SUM(COALESCE(montant_encours_salaries,0)) AS montant_encours_c, + SUM(MNTASS) + SUM(COALESCE(montant_encours_salaries_0,0)) AS montant_encours_0_c, + SUM(MNTSS) + SUM(COALESCE(montant_encours_salaries_1,0)) AS montant_encours_1_c, + SUM(MNTMUT) + SUM(COALESCE(montant_encours_salaries_2,0)) AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h + FROM prod_mederi.KENCOURS + LEFT JOIN prod_mederi.KFACTURE ON KENCOURS.NOFAC = KFACTURE.NOFAC + JOIN w_FAC_FACTURE_DAT_CRE ON date(KENCOURS.DATECREAT) = w_FAC_FACTURE_DAT_CRE.FACT_DAT_CRE AND + date(date_trunc('month', DATEFAC) + interval '1 month' - interval '1 day') = date_encours + JOIN prod_mederi.KDOSSIER ON KENCOURS.NODOSSIER = KDOSSIER.NODOSSIER + JOIN activite[PX].p_sejours ON code_original = KENCOURS.NODOSSIER + LEFT JOIN w_factures_references ON p_sejours.no_sejour = w_factures_references.no_sejour AND + date_sortie BETWEEN w_factures_references.date_debut AND w_factures_references.date_fin + LEFT JOIN w_factures_encours_salaries ON w_factures_encours_salaries.NOFAC = KENCOURS.NOFAC + GROUP BY 2; + + CREATE INDEX w_factures_encours_i1 ON w_factures_encours USING btree (NOFAC); + + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_11'); + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_lignes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_lignes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_lignes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_lignes_c_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_lignes_c_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_lignes_c_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_lignes_c_8'); + + DELETE FROM activite[PX].p_factures_encours WHERE code_origine = 'P'; + DELETE FROM activite[PX].p_factures_encours_lignes_c + WHERE no_facture NOT IN (SELECT no_facture FROM activite[PX].p_factures_encours); + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_encours_lignes_c_1'); + + INSERT INTO activite[PX].p_factures_encours( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + date_encours, + code_origine, + code_sorti, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h + ) + SELECT + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + date_encours, + code_origine, + code_sorti, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h + FROM w_factures_encours; + + UPDATE w_factures_encours SET oid = p_factures_encours.oid + FROM activite[PX].p_factures_encours + WHERE w_factures_encours.no_facture = p_factures_encours.no_facture; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_1'); + + DROP SEQUENCE IF EXISTS w_factures_encours_lignes_c_sequence; + CREATE TEMP SEQUENCE w_factures_encours_lignes_c_sequence; + + DROP TABLE IF EXISTS w_factures_encours_lignes_c; + CREATE TEMP TABLE w_factures_encours_lignes_c AS + SELECT + nextval('w_factures_encours_lignes_c_sequence'::regclass) AS oid, + no_sejour, + CASE WHEN KENCOURS.NOFAC != '' THEN KENCOURS.NOFAC ELSE KENCOURS.NODOSSIER END AS NOFAC, + w_factures_encours.oid AS facture_id, + w_factures_encours.no_facture, + w_factures_encours.date_entree, + w_factures_encours.date_sortie, + date(DATEACTE) AS date_debut, + COALESCE(date(DATEFIN),date(DATEACTE)) AS date_fin, + COEFF AS nb_rubrique, + 1::numeric AS coefficient, + 1 AS coefficient_mco, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + MAX(COALESCE(t_compte.oid::bigint, 0)) AS compte_produit_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + + + PRIXU AS prix_unitaire, + w_factures_encours.lieu_sortie_id AS lieu_id, + QTE AS nb_prestation, + + AVG(1-TAUXSS-TAUXMUT) as taux_0, + AVG(TAUXSS) as taux_1, + AVG(TAUXMUT) as taux_2, + 0::numeric as taux_22, + + SUM(MONTANT) AS montant_encours, + SUM(MNTASS) AS montant_encours_0, + SUM(MNTSS) AS montant_encours_1, + SUM(MNTMUT) AS montant_encours_2, + SUM(0) AS montant_encours_22 + + FROM prod_mederi.KENCOURS + JOIN w_factures_encours ON CASE WHEN KENCOURS.NOFAC = '' THEN KENCOURS.NODOSSIER = w_factures_encours.NOFAC ELSE KENCOURS.NOFAC = w_factures_encours.NOFAC END + LEFT JOIN activite[PX].t_rubriques_facturation ON KENCOURS.NOACTE = t_rubriques_facturation.code_original + LEFT JOIN prod_mederi.KRUBINT ON KENCOURS.NOACTE = KRUBINT.NOACTE + LEFT JOIN (SELECT NOACTE, NOSERVINT, MAX(NOCOMPTE) AS NOCOMPTE FROM prod_mederi.KCPTRUB GROUP BY 1,2) sub ON KENCOURS.NOSERVINT = sub.NOSERVINT AND KENCOURS.NOACTE = sub.NOACTE + LEFT JOIN activite.t_prestations ON NOACTESS = t_prestations.code + LEFT JOIN activite[PX].t_compte ON (NOCOMPTE IS NOT NULL AND NOCOMPTE::bigint = t_compte.code_original) OR (NOCOMPTE IS NULL AND NOCOMPTES::bigint = t_compte.code_original::bigint) + WHERE KENCOURS.TYPERUB <> 4 --pas d'encours mederiu sur salariés + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,18,19 + ORDER BY 1; + + + + + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c; + CREATE TEMP TABLE w_factures_encours_lignes_sup_c AS + SELECT + w_factures_encours_lignes_c.oid AS from_oid, + t_prestations.code AS prestation_code, + date(date_debut) AS date_debut_ghs, + date(date_fin - interval '1 day') AS date_fin_ghs, + (date(date_fin) - date(date_debut)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN t_prestations.code = 'GHS' THEN date(w_factures_encours_lignes_c.date_entree + interval '1 day') ELSE date(w_factures_encours_lignes_c.date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN t_prestations.code = 'GHS' THEN date(w_factures_encours_lignes_c.date_sortie - interval '1 day') ELSE date(w_factures_encours_lignes_c.date_debut + ((ABS(nb_prestation)-1) || ' day')::interval) END AS date_fin_det, + ABS(CASE WHEN t_prestations.code = 'GHS' THEN date(w_factures_encours_lignes_c.date_sortie) - date(w_factures_encours_lignes_c.date_entree) ELSE nb_prestation END) AS nb_det, + w_factures_encours_lignes_c.* + FROM w_factures_encours_lignes_c + JOIN activite[PX].p_sejours ON w_factures_encours_lignes_c.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + ( + code IN ('PJ', 'PJ1', 'PJ2', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (t_prestations.code = 'GHS' AND date(date_fin) - date(date_debut) > 1)) ; + + + UPDATE w_factures_encours_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM w_factures_encours_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_encours_lignes_sup_c.no_facture = subview.no_facture; + + CREATE INDEX w_factures_encours_lignes_sup_c_i1 + ON w_factures_encours_lignes_sup_c + USING btree + (date_debut); + + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c_gen; + CREATE TEMP TABLE w_factures_encours_lignes_sup_c_gen AS + SELECT + from_oid, + ''::text AS finess, + no_sejour, + no_facture, + facture_id, + date AS date_debut, + date AS date_fin, + lieu_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + prix_unitaire, + oid, + taux_0, + taux_1, + taux_2, + taux_22, + round(montant_encours / ABS(nb_det),2) AS montant_encours, + round(montant_encours_0 / ABS(nb_det),2) AS montant_encours_0, + round(montant_encours_1 / ABS(nb_det),2) AS montant_encours_1, + round(montant_encours_2 / ABS(nb_det),2) AS montant_encours_2, + round(montant_encours_22 / ABS(nb_det),2) AS montant_encours_22 + FROM w_factures_encours_lignes_sup_c + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_det AND date_fin_det ; + + + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c_gen_tot; + CREATE TEMP TABLE w_factures_encours_lignes_sup_c_gen_tot AS + SELECT from_oid, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22 + FROM w_factures_encours_lignes_sup_c_gen + GROUP BY 1; + + + UPDATE w_factures_encours_lignes_c + SET + date_fin = w_factures_encours_lignes_c.date_debut, + nb_rubrique = w_factures_encours_lignes_c.nb_rubrique - w_factures_encours_lignes_sup_c_gen_tot.nb_rubrique, + nb_prestation = w_factures_encours_lignes_c.nb_prestation - w_factures_encours_lignes_sup_c_gen_tot.nb_prestation, + montant_encours = w_factures_encours_lignes_c.montant_encours - w_factures_encours_lignes_sup_c_gen_tot.montant_encours, + montant_encours_0 = w_factures_encours_lignes_c.montant_encours_0 - w_factures_encours_lignes_sup_c_gen_tot.montant_encours_0, + montant_encours_1 = w_factures_encours_lignes_c.montant_encours_1 - w_factures_encours_lignes_sup_c_gen_tot.montant_encours_1, + montant_encours_2 = w_factures_encours_lignes_c.montant_encours_2 - w_factures_encours_lignes_sup_c_gen_tot.montant_encours_2, + montant_encours_22 = w_factures_encours_lignes_c.montant_encours_22 - w_factures_encours_lignes_sup_c_gen_tot.montant_encours_22 + FROM w_factures_encours_lignes_sup_c_gen_tot + WHERE w_factures_encours_lignes_c.oid = from_oid; + + + INSERT INTO w_factures_encours_lignes_c( + oid, + no_sejour, + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22) + SELECT + nextval('w_factures_encours_lignes_c_sequence'::regclass) AS oid, + no_sejour, + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + FROM w_factures_encours_lignes_sup_c_gen; + + + + UPDATE w_factures_encours_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE w_factures_encours_lignes_c.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_encours_lignes_c.date_debut = p_mouvements_sejour.date AND + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_sorties_directes = 1) AND + w_factures_encours_lignes_c.lieu_id IS DISTINCT FROM p_mouvements_sejour.lieu_id; + + + + INSERT INTO activite[PX].p_factures_encours_lignes_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + FROM w_factures_encours_lignes_c; + + + SELECT base.cti_vacuum_table('activite[PX]','p_factures_encours'); + SELECT base.cti_vacuum_table('activite[PX]','p_factures_encours_lignes_c'); + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_lignes_c_8'); + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_encours_11'); + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_compte CASCADE; + DROP TABLE IF EXISTS w_factures_encours_salaries CASCADE; + DROP TABLE IF EXISTS w_factures_references CASCADE; + DROP TABLE IF EXISTS w_FAC_FACTURE_DAT_CRE CASCADE; + DROP TABLE IF EXISTS w_factures_encours CASCADE; + DROP TABLE IF EXISTS w_factures_encours_lignes_c CASCADE; + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c CASCADE; + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c_gen CASCADE; + DROP TABLE IF EXISTS w_factures_encours_lignes_sup_c_gen_tot CASCADE; + + DROP TABLE IF EXISTS w_DOSSIER; + ]]> + + + + + + diff --git a/import_activite/iCTI_import_activite_QSP.XML b/import_activite/iCTI_import_activite_QSP.XML new file mode 100644 index 0000000..a7c4667 --- /dev/null +++ b/import_activite/iCTI_import_activite_QSP.XML @@ -0,0 +1,5579 @@ + + + + + + + + = '[ENV_ADM_ANNEEDEBUT]0101' AND NDOSSIER_T IS NULL + GROUP BY 1; + + + INSERT INTO w_DOSSIERS_atraiter + SELECT VENTIL_PAIEMENT.N_HOSPI, + ''::text AS type_sejour_force, + SUBSTR(to_char(VENTIL_PAIEMENT.N_HOSPI,'FM00000000'),1,1) AS prefixe, + ''::text AS type_sejour_defaut + FROM prod_qsp.VENTIL_PAIEMENT + JOIN prod_qsp.HOSPI ON VENTIL_PAIEMENT.N_HOSPI= HOSPI.N_HOSPI + LEFT JOIN w_DOSSIERS_atraiter ON VENTIL_PAIEMENT.N_HOSPI = NDOSSIER_T + WHERE DT_VENT >= '[ENV_ADM_ANNEEDEBUT]0101' AND NDOSSIER_T IS NULL AND TRANS_CPTA <> 0 + GROUP BY 1; + + + + -- Type de séjour forcé selon actes saisis + DROP TABLE IF EXISTS w_DOSSIER_type; + CREATE TEMP TABLE w_DOSSIER_type AS + SELECT SAISIE.N_HOSPI, + CASE + WHEN SUM(CASE WHEN CODE_NORM IN ('GHS','PJ','FJ') THEN QTE ELSE 0 END) > 0 THEN '12' + WHEN SUM(CASE WHEN CODE_NORM IN ('D09','D10','D11','D12','D13') THEN QTE ELSE 0 END) > 0 THEN '5' + WHEN SUM(CASE WHEN CODE_NORM IN ('SE1','SE2','SE3','SE4','SE5', 'SE6', 'SE7','ATU', 'FPU','FFM') THEN QTE ELSE 0 END) > 0 THEN '3' + ELSE '' END AS type_sejour_selon_saisie + FROM prod_qsp.SAISIE + JOIN w_DOSSIERS_atraiter ON SAISIE.N_HOSPI = NDOSSIER_T + JOIN prod_qsp.PRESTATION ON SAISIE.CODE_PREST = PRESTATION.CODE_PREST + WHERE SUPPRIME <> 1 + GROUP BY 1 + ; + + UPDATE w_DOSSIERS_atraiter + SET type_sejour_force = type_sejour_selon_saisie + FROM w_DOSSIER_type + WHERE w_DOSSIER_type.N_HOSPI = NDOSSIER_T AND + type_sejour_selon_saisie <> '' + ; + + + UPDATE w_DOSSIERS_atraiter + SET type_sejour_defaut = t_divers.valeur + FROM activite.t_divers + WHERE t_divers.code = 'QSP_TYPESEJ_'||prefixe AND + type_sejour_force = '' AND + t_divers.valeur <> '' + ; + + + ]]> + + + + ''; + + UPDATE cti_histolit + SET C_SECT = etage_code + FROM w_lit_force + WHERE NUM_LIT ILIKE ANY (lit_force_array); + + + ]]> + + + + now() + interval '5 year'); + + UPDATE prod_qsp.SAISIE + SET D_DEB = date(DATE_SORTIE), D_FIN = date(DATE_SORTIE) + FROM prod_qsp.DOSSIER + WHERE SAISIE.N_HOSPI = DOSSIER.NDOSSIER AND + date(D_DEB) > date(DATE_SORTIE) AND + DATE_SORTIE IS NOT NULL AND QTE = 1 + ; + UPDATE prod_qsp.SAISIE + SET D_DEB = date(DATE_ENTREE), D_FIN = date(DATE_ENTREE) + FROM prod_qsp.DOSSIER + WHERE SAISIE.N_HOSPI = DOSSIER.NDOSSIER AND + date(D_DEB) < date(DATE_ENTREE) AND QTE = 1 + ; + UPDATE prod_qsp.SAISIE + SET D_FIN = date(DATE_SORTIE) + FROM prod_qsp.DOSSIER + WHERE SAISIE.N_HOSPI = DOSSIER.NDOSSIER AND + date(D_FIN) > date(DATE_SORTIE) AND + DATE_SORTIE IS NOT NULL + ; + + ]]> + + + + + + + + + + + + 9999 + LEFT JOIN base.t_ghm ON PMSI_RESULT.GHM = t_ghm.code AND t_ghm.code NOT LIKE '90%' + WHERE PMSI_RESULT.N_SEQ = 0 + GROUP BY 1; + + CREATE INDEX W_PMSI_RESULT_i1 + ON W_PMSI_RESULT + USING btree + (NDOSSIER); + + -- Type de séjour forcé selon actes saisis + DROP TABLE IF EXISTS w_DOSSIER_type; + CREATE TEMP TABLE w_DOSSIER_type AS + SELECT SAISIE.N_HOSPI, + CASE + WHEN SUM(CASE WHEN CODE_NORM IN ('GHS','PJ','FJ') THEN QTE ELSE 0 END) > 0 THEN '12' + WHEN SUM(CASE WHEN CODE_NORM IN ('D09','D10','D11','D12','D13') THEN QTE ELSE 0 END) > 0 THEN '5' + WHEN SUM(CASE WHEN CODE_NORM IN ('SE1','SE2','SE3','SE4','SE5', 'SE6', 'SE7','ATU', 'FPU','FFM') THEN QTE ELSE 0 END) > 0 THEN '3' + ELSE '' END AS type_sejour_selon_saisie + FROM prod_qsp.SAISIE + JOIN prod_qsp.PRESTATION ON SAISIE.CODE_PREST = PRESTATION.CODE_PREST + WHERE SUPPRIME <> 1 + GROUP BY 1 + ; + + DROP TABLE IF EXISTS w_sejours; + CREATE TEMP TABLE w_sejours AS + SELECT + DOSSIER.NDOSSIER as no_sejour, + DOSSIER.NDOSSIER as code_original, + DOSSIER.NPATIENT as no_patient, + date(DOSSIER.DATE_ENTREE) as date_entree, + extract('hour' FROM DOSSIER.DATE_ENTREE) * 10000 + extract('minute' FROM DOSSIER.DATE_ENTREE) * 100 + extract('second' FROM DOSSIER.DATE_ENTREE) as heure_entree, + CASE WHEN DOSSIER.DATE_SORTIE IS NOT NULL THEN date(DOSSIER.DATE_SORTIE) ELSE '20991231' END::date as date_sortie, + CASE WHEN DOSSIER.DATE_SORTIE IS NOT NULL THEN extract('hour' FROM DOSSIER.DATE_SORTIE) * 10000 + extract('minute' FROM DOSSIER.DATE_SORTIE) * 100 + extract('second' FROM DOSSIER.DATE_SORTIE) ELSE 0 END as heure_sortie, + CASE WHEN PATIENT.SEXE = '2' THEN '2' ELSE '1' END as code_sexe, + 0 AS age, + CASE WHEN DOSSIER.DATE_SORTIE IS NOT NULL THEN 1 ELSE 0 END as code_sorti, + 0 as code_prevu, + CASE + WHEN DOSSIER.IN_TRANSIT = 1 OR HOSPI.ADMISSION = 1 THEN '9' + WHEN t_services_facturation.type_sejour IN ('1','2','3','5') THEN t_services_facturation.type_sejour + WHEN w_DOSSIERS_atraiter.type_sejour_force = '12' AND date(DOSSIER.DATE_ENTREE) = date(DOSSIER.DATE_SORTIE) THEN '2' + WHEN w_DOSSIERS_atraiter.type_sejour_force = '12' THEN '1' + WHEN w_DOSSIERS_atraiter.type_sejour_force = '3' AND date(DOSSIER.DATE_ENTREE) = date(DOSSIER.DATE_SORTIE) THEN '3' + WHEN w_DOSSIERS_atraiter.type_sejour_force = '5' AND date(DOSSIER.DATE_ENTREE) = date(DOSSIER.DATE_SORTIE) THEN '5' + WHEN w_DOSSIERS_atraiter.type_sejour_defaut = '1' AND date(DOSSIER.DATE_ENTREE) = date(DOSSIER.DATE_SORTIE) THEN '2' + WHEN w_DOSSIERS_atraiter.type_sejour_defaut = '1' THEN '1' + WHEN w_DOSSIERS_atraiter.type_sejour_defaut = '2' AND date(DOSSIER.DATE_ENTREE) = date(DOSSIER.DATE_SORTIE) THEN '2' + WHEN w_DOSSIERS_atraiter.type_sejour_defaut = '2' AND DOSSIER.DATE_SORTIE IS NULL THEN '2' + WHEN w_DOSSIERS_atraiter.type_sejour_defaut = '2' THEN '1' + WHEN w_DOSSIERS_atraiter.type_sejour_defaut = '3' AND date(DOSSIER.DATE_ENTREE) = date(DOSSIER.DATE_SORTIE) THEN '3' + WHEN w_DOSSIERS_atraiter.type_sejour_defaut = '3' AND DOSSIER.DATE_SORTIE IS NULL THEN '3' + WHEN w_DOSSIERS_atraiter.type_sejour_defaut = '5' AND date(DOSSIER.DATE_ENTREE) = date(DOSSIER.DATE_SORTIE) THEN '5' + WHEN w_DOSSIERS_atraiter.type_sejour_defaut = '5' AND DOSSIER.DATE_SORTIE IS NULL THEN '5' + WHEN t_modes_traitement.code IN ('07') OR t_dmt.code In ('958') THEN '3' + WHEN t_modes_traitement.code IN ('19', '23') AND date(DOSSIER.DATE_ENTREE) = date(DOSSIER.DATE_SORTIE) THEN '2' + WHEN t_modes_traitement.code IN ('04') AND date(DOSSIER.DATE_ENTREE) = date(DOSSIER.DATE_SORTIE) THEN '2' + WHEN t_modes_traitement.code IN ('03') AND date(DOSSIER.DATE_ENTREE) = date(DOSSIER.DATE_SORTIE) THEN '2' + WHEN date(DOSSIER.DATE_ENTREE) = date(DOSSIER.DATE_SORTIE) THEN '2' + ELSE '1' END as type_sejour, + COALESCE(t_medecins_administratifs.oid,0) as medecin_sejour_id, + COALESCE(w_PMSI_RESULT.ghs_id,0) AS ghs_id, + COALESCE(w_PMSI_RESULT.ghm_id,0) AS ghm_id, + COALESCE(w_PMSI_RESULT.date_groupage, '20991231') AS date_groupage, + CASE WHEN DOSSIER.DEM_CHP = 'O' THEN '1' ELSE '0' END as code_cp_demandee, + COALESCE(t_modes_traitement.oid,0) as mode_traitement_id, + COALESCE(w_PMSI_RESULT.mode_entree,'8') AS mode_entree, + COALESCE(w_PMSI_RESULT.provenance,'') AS provenance, + COALESCE(w_PMSI_RESULT.mode_sortie,'8') AS mode_sortie, + COALESCE(w_PMSI_RESULT.destination,'') AS destination, + COALESCE(t_tiers_payant_0.oid,0) AS tiers_payant_0_id, + COALESCE(t_tiers_payant_1.oid,0) AS tiers_payant_1_id, + COALESCE(t_tiers_payant_2.oid,0) AS tiers_payant_2_id, + 0 AS tiers_payant_22_id, + COALESCE(t_codes_postaux.oid, 0) AS code_postal_id + + FROM prod_qsp.DOSSIER + JOIN w_DOSSIERS_atraiter ON DOSSIER.NDOSSIER = NDOSSIER_T + JOIN prod_qsp.HOSPI ON DOSSIER.NDOSSIER = HOSPI.N_HOSPI + LEFT JOIN w_HISTOLIT_SERVICE ON DOSSIER.NDOSSIER = w_HISTOLIT_SERVICE.NDOSSIER + LEFT JOIN activite[PX].t_services_facturation ON w_HISTOLIT_SERVICE.C_SERV_CTI = t_services_facturation.code_original + LEFT JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + LEFT JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + LEFT JOIN prod_qsp.PATIENT ON DOSSIER.NPATIENT = PATIENT.NPATIENT + LEFT JOIN base.t_codes_postaux on t_codes_postaux.code = PATIENT.CPO_PAT + LEFT JOIN w_PMSI_RESULT ON DOSSIER.NDOSSIER = w_PMSI_RESULT.NDOSSIER + LEFT JOIN activite[PX].t_medecins_administratifs ON MEDSUIV = t_medecins_administratifs.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_0 ON 'PATIENT' = t_tiers_payant_0.code + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_1 ON HOSPI.CAISSE_DESTINATAIRE = t_tiers_payant_1.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON HOSPI.MUT_CODE = t_tiers_payant_2.code_original + WHERE DOSSIER.ANNULE = 0; + + UPDATE w_sejours + SET no_patient = subview.NPATIENT_GARDE + FROM ( + SELECT NPATIENT_FUSIONE, MAX(NPATIENT_GARDE) AS NPATIENT_GARDE FROM prod_qsp.HISTORIQUE_FUSIONS GROUP BY 1 + ) subview + WHERE w_sejours.no_patient = subview.NPATIENT_FUSIONE; + + + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_13'); + + -- Forcage type selon séjour + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour + FROM activite.t_sejour + WHERE t_sejour.no_sejour = '[CPX]' || w_sejours.no_sejour AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9'); + + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour + FROM activite.t_sejour + WHERE t_sejour.no_sejour ILIKE ('QS_' || w_sejours.no_sejour) AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9'); + + UPDATE activite[PX].p_sejours SET + code_original = w_sejours.code_original, + no_patient = w_sejours.no_patient, + date_entree = w_sejours.date_entree, + heure_entree = w_sejours.heure_entree, + date_sortie = w_sejours.date_sortie, + heure_sortie = w_sejours.heure_sortie, + code_sexe = w_sejours.code_sexe, + age = w_sejours.age, + code_sorti = w_sejours.code_sorti, + code_prevu = w_sejours.code_prevu, + type_sejour = w_sejours.type_sejour, + medecin_sejour_id = w_sejours.medecin_sejour_id, + code_cp_demandee = w_sejours.code_cp_demandee, + mode_traitement_id = w_sejours.mode_traitement_id, + mode_entree = w_sejours.mode_entree, + provenance = w_sejours.provenance, + mode_sortie = w_sejours.mode_sortie, + destination = w_sejours.destination, + tiers_payant_0_id = w_sejours.tiers_payant_0_id, + tiers_payant_1_id = w_sejours.tiers_payant_1_id, + tiers_payant_2_id = w_sejours.tiers_payant_2_id, + tiers_payant_22_id = w_sejours.tiers_payant_22_id, + ghs_id = w_sejours.ghs_id, + ghm_id = w_sejours.ghm_id, + date_groupage = w_sejours.date_groupage, + code_postal_id = w_sejours.code_postal_id + FROM w_sejours + WHERE w_sejours.no_sejour = p_sejours.no_sejour + AND ( + w_sejours.code_original IS DISTINCT FROM p_sejours.code_original OR + w_sejours.no_patient IS DISTINCT FROM p_sejours.no_patient OR + w_sejours.date_entree IS DISTINCT FROM p_sejours.date_entree OR + w_sejours.heure_entree IS DISTINCT FROM p_sejours.heure_entree OR + w_sejours.date_sortie IS DISTINCT FROM p_sejours.date_sortie OR + w_sejours.heure_sortie IS DISTINCT FROM p_sejours.heure_sortie OR + w_sejours.code_sexe IS DISTINCT FROM p_sejours.code_sexe OR + w_sejours.age IS DISTINCT FROM p_sejours.age OR + w_sejours.code_sorti IS DISTINCT FROM p_sejours.code_sorti OR + w_sejours.code_prevu IS DISTINCT FROM p_sejours.code_prevu OR + w_sejours.type_sejour IS DISTINCT FROM p_sejours.type_sejour OR + w_sejours.medecin_sejour_id IS DISTINCT FROM p_sejours.medecin_sejour_id OR + w_sejours.code_cp_demandee IS DISTINCT FROM p_sejours.code_cp_demandee OR + w_sejours.mode_traitement_id IS DISTINCT FROM p_sejours.mode_traitement_id OR + w_sejours.mode_entree IS DISTINCT FROM p_sejours.mode_entree OR + w_sejours.provenance IS DISTINCT FROM p_sejours.provenance OR + w_sejours.mode_sortie IS DISTINCT FROM p_sejours.mode_sortie OR + w_sejours.destination IS DISTINCT FROM p_sejours.destination OR + w_sejours.tiers_payant_0_id IS DISTINCT FROM p_sejours.tiers_payant_0_id OR + w_sejours.tiers_payant_1_id IS DISTINCT FROM p_sejours.tiers_payant_1_id OR + w_sejours.tiers_payant_2_id IS DISTINCT FROM p_sejours.tiers_payant_2_id OR + w_sejours.tiers_payant_22_id IS DISTINCT FROM p_sejours.tiers_payant_22_id OR + w_sejours.ghs_id IS DISTINCT FROM p_sejours.ghs_id OR + w_sejours.ghm_id IS DISTINCT FROM p_sejours.ghm_id OR + w_sejours.date_groupage IS DISTINCT FROM p_sejours.date_groupage OR + w_sejours.code_postal_id IS DISTINCT FROM p_sejours.code_postal_id + ); + + INSERT INTO activite[PX].p_sejours ( + no_sejour, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + medecin_sejour_id, + ghs_id, + ghm_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + code_postal_id + ) + SELECT + w_sejours.no_sejour, + w_sejours.code_original, + w_sejours.no_patient, + w_sejours.date_entree, + w_sejours.heure_entree, + w_sejours.date_sortie, + w_sejours.heure_sortie, + w_sejours.code_sexe, + w_sejours.age, + w_sejours.code_sorti, + w_sejours.code_prevu, + w_sejours.type_sejour, + w_sejours.medecin_sejour_id, + w_sejours.ghs_id, + w_sejours.ghm_id, + w_sejours.date_groupage, + w_sejours.code_cp_demandee, + w_sejours.mode_traitement_id, + w_sejours.mode_entree, + w_sejours.provenance, + w_sejours.mode_sortie, + w_sejours.destination, + w_sejours.tiers_payant_0_id, + w_sejours.tiers_payant_1_id, + w_sejours.tiers_payant_2_id, + w_sejours.tiers_payant_22_id, + w_sejours.code_postal_id + + FROM w_sejours LEFT JOIN activite[PX].p_sejours ON (w_sejours.no_sejour = p_sejours.no_sejour) + WHERE p_sejours.no_sejour IS NULL; + + + DELETE FROM activite[PX].p_sejours WHERE no_sejour NOT IN (SELECT no_sejour FROM w_sejours); + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '[PX]' = ''; + + UPDATE activite[PX].p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND + '[PX]' = ''; + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '[PX]' = ''; + + + -- recréation index + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_13'); + + + ]]> + + + + = DOSSIER.DATE_ENTREE THEN cti_histolit.DATECHG ELSE DOSSIER.DATE_ENTREE END AS DATECHG, MAX(N_UNIQUE) AS N_UNIQUE + FROM cti_histolit JOIN prod_qsp.DOSSIER ON DOSSIER.NDOSSIER = cti_histolit.NDOSSIER + GROUP BY 1,2; + + CREATE INDEX w_HISTOLIT_DOUBLONS_i1 + ON w_HISTOLIT_DOUBLONS + USING btree + (N_UNIQUE); + + DROP SEQUENCE IF EXISTS w_HISTOLIT_seq; + + CREATE TEMP SEQUENCE w_HISTOLIT_seq + INCREMENT 1 + MINVALUE 1; + + DROP TABLE IF EXISTS w_HISTOLIT; + + CREATE TEMP TABLE w_HISTOLIT AS + SELECT nextval('w_HISTOLIT_seq'::regclass) AS sequence, + subview.NDOSSIER, + subview.DATE_ENTREE_DOSSIER, + '1'::text AS CODE_ENTREE, + subview.DATE_SORTIE_DOSSIER, + CASE WHEN date(DATE_SORTIE_DOSSIER) <> '20991231' THEN '1'::text ELSE '0' END AS CODE_SORTIE, + subview.DATECHG, + date(subview.DATECHG) AS DATECHG_DAT, + extract('hour' FROM DATECHG) * 10000 + extract('minute' FROM DATECHG) * 100 + extract('second' FROM DATECHG) AS DATECHG_TIM, + date(subview.DATECHG) AS DATECHG_FIN, + date(DATE_SORTIE_DOSSIER) AS DATECHG_FIN_DAT, + extract('hour' FROM DATE_SORTIE_DOSSIER) * 10000 + extract('minute' FROM DATE_SORTIE_DOSSIER) * 100 + extract('second' FROM DATE_SORTIE_DOSSIER) AS DATECHG_FIN_TIM, + subview.C_SERV_CTI, + subview.C_UF_CTI, + subview.C_SECT, + subview.NUM_LIT, + subview.NUM_LIT_LIT, + subview.C_SERV_CTI AS C_SERV_before, + subview.C_SECT AS C_SECT_before, + subview.NUM_LIT AS NUM_LIT_before, + subview.C_SERV_CTI AS C_SERV_next, + subview.C_SECT AS C_SECT_next, + subview.NUM_LIT AS NUM_LIT_next, + medecin_sejour_id + FROM + ( + SELECT + DOSSIER.NDOSSIER, + DOSSIER.DATE_ENTREE AS DATE_ENTREE_DOSSIER, + CASE WHEN DOSSIER.DATE_SORTIE IS NOT NULL THEN DOSSIER.DATE_SORTIE ELSE '20991231' END AS DATE_SORTIE_DOSSIER, + CASE WHEN cti_histolit.DATECHG >= DOSSIER.DATE_ENTREE THEN cti_histolit.DATECHG ELSE DOSSIER.DATE_ENTREE END AS DATECHG, + C_SERV_CTI, + C_UF_CTI, + CASE WHEN C_SECT <> '' THEN COALESCE(C_SECT, C_SERV_CTI) ELSE C_SERV_CTI END AS C_SECT, + CASE WHEN NUM_LIT <> '' THEN CASE WHEN C_SECT <> '' THEN COALESCE(C_SECT, C_SERV_CTI) ELSE C_SERV_CTI END || '|' || REPLACE(UPPER(COALESCE(NUM_LIT,'')),' ', '') ELSE '' END AS NUM_LIT, + REPLACE(UPPER(COALESCE(NUM_LIT,'')),' ', '') AS NUM_LIT_LIT, + N_PREAD, + medecin_sejour_id + FROM cti_histolit, w_HISTOLIT_DOUBLONS, activite[PX].p_sejours, prod_qsp.DOSSIER + JOIN prod_qsp.HOSPI ON DOSSIER.NDOSSIER = HOSPI.N_HOSPI + JOIN w_DOSSIERS_atraiter ON DOSSIER.NDOSSIER = NDOSSIER_T + WHERE cti_histolit.N_UNIQUE = w_HISTOLIT_DOUBLONS.N_UNIQUE AND + cti_histolit.NDOSSIER = p_sejours.code_original AND + DOSSIER.NDOSSIER = cti_histolit.NDOSSIER AND ANNULE = 0 + ORDER BY DOSSIER.NDOSSIER, CASE WHEN cti_histolit.DATECHG >= DOSSIER.DATE_ENTREE THEN cti_histolit.DATECHG ELSE DOSSIER.DATE_ENTREE END + + ) subview; + + + CREATE INDEX w_HISTOLIT_i1 + ON w_HISTOLIT + USING btree + (NDOSSIER); + + UPDATE w_HISTOLIT + SET + CODE_SORTIE = '0', + DATECHG_FIN = w_HISTOLIT_next.DATECHG - interval '1 second', + DATECHG_FIN_DAT = date(w_HISTOLIT_next.DATECHG - interval '1 second'), + DATECHG_FIN_TIM = extract('hour' FROM w_HISTOLIT_next.DATECHG - interval '1 second') * 10000 + + extract('minute' FROM w_HISTOLIT_next.DATECHG - interval '1 second') * 100 + + extract('second' FROM w_HISTOLIT_next.DATECHG - interval '1 second'), + C_SERV_next = w_HISTOLIT_next.C_SERV_CTI, + C_SECT_next = w_HISTOLIT_next.C_SECT, + NUM_LIT_next = w_HISTOLIT_next.NUM_LIT + FROM w_HISTOLIT w_HISTOLIT_next + WHERE w_HISTOLIT.NDOSSIER = w_HISTOLIT_next.NDOSSIER + AND w_HISTOLIT.sequence = w_HISTOLIT_next.sequence - 1; + + UPDATE w_HISTOLIT + SET + CODE_ENTREE = '0', + C_SERV_before = w_HISTOLIT_before.C_SERV_CTI, + C_SECT_before = w_HISTOLIT_before.C_SECT, + NUM_LIT_before = w_HISTOLIT_before.NUM_LIT + FROM w_HISTOLIT w_HISTOLIT_before + WHERE w_HISTOLIT.NDOSSIER = w_HISTOLIT_before.NDOSSIER + AND w_HISTOLIT.sequence = w_HISTOLIT_before.sequence + 1; + + CREATE INDEX w_HISTOLIT_i2 + ON w_HISTOLIT + USING btree + (NUM_LIT); + + CREATE INDEX w_HISTOLIT_i3 + ON w_HISTOLIT + USING btree + (C_SERV_CTI); + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court) + SELECT DISTINCT C_SECT, C_SECT, C_SECT, C_SECT + FROM w_histolit + WHERE C_SECT <> '' AND C_SECT NOT IN (SELECT code_original FROM activite[PX].t_etages); + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT DISTINCT NUM_LIT, NUM_LIT_LIT, NUM_LIT_LIT, NUM_LIT_LIT, COALESCE(t_etages.oid,0), 'N' + FROM w_histolit LEFT JOIN activite[PX].t_etages ON C_SECT = t_etages.code_original + WHERE NUM_LIT NOT IN (SELECT code_original FROM activite[PX].t_lits) ORDER BY 1; + + ANALYSE w_HISTOLIT; + + DELETE + FROM activite[PX].t_lieux + USING + ( + SELECT + code_original_1, code_original_2, code_original_3, code_original_4, code_original_5 , code_original_6 , code_original_7 , count(*), min(ctid) AS keep_ctid from activite[PX].t_lieux + group by 1,2,3,4,5,6,7 + HAVING count(*) > 1 + ) subview + WHERE t_lieux.code_original_1 = subview.code_original_1 AND + t_lieux.code_original_2 = subview.code_original_2 AND + t_lieux.code_original_3 = subview.code_original_3 AND + t_lieux.code_original_4 = subview.code_original_4 AND + t_lieux.code_original_5 = subview.code_original_5 AND + t_lieux.code_original_6 = subview.code_original_6 AND + t_lieux.code_original_7 = subview.code_original_7 AND + t_lieux.CTID <> subview.keep_CTID + ; + + DROP TABLE IF EXISTS w_mouvements_sejour; + + CREATE TEMP TABLE w_mouvements_sejour AS + SELECT + w_HISTOLIT.NDOSSIER AS no_sejour, + sequence, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE WHEN p_calendrier.date = DATECHG_DAT THEN DATECHG_TIM ELSE 0 END AS heure_debut, + CASE WHEN p_calendrier.date = DATECHG_FIN_DAT THEN DATECHG_FIN_TIM ELSE 240000 END AS heure_fin, + CASE WHEN p_calendrier.date = DATECHG_DAT AND CODE_ENTREE = '1' AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes, + CASE WHEN p_calendrier.date = DATECHG_FIN_DAT AND CODE_SORTIE = '1' AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes, + CASE WHEN p_calendrier.date = DATECHG_DAT AND CODE_ENTREE = '1' AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree, + CASE WHEN p_calendrier.date = DATECHG_FIN_DAT AND CODE_SORTIE = '1' AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie, + CASE WHEN p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN p_calendrier.date = DATECHG_DAT AND CODE_ENTREE = '1' AND p_sejours.type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires, + CASE WHEN p_calendrier.date = DATECHG_DAT AND CODE_ENTREE = '1' AND p_sejours.type_sejour = '3' THEN 1 ELSE 0 END AS nb_externes, + CASE WHEN p_calendrier.date = DATECHG_DAT AND CODE_ENTREE = '1' AND (t_dmt.code IN ('303', '307', '308', '401', '402', '403', '404', '405', '406', '407', '408', '409') OR DOSSIER.URGENCE > 1 OR HOSPI.ENTREE_URG = 1) THEN 1 ELSE 0 END AS nb_urgences, + 0 as nb_seances, + 0 as nb_bebes, + + CASE WHEN p_calendrier.date = DATECHG_DAT AND p_sejours.type_sejour = '1' AND C_SERV_CTI <> C_SERV_before THEN 1 ELSE 0 END AS nb_entrees_mutation_service, + CASE WHEN p_calendrier.date = DATECHG_FIN_DAT AND p_sejours.type_sejour = '1' AND C_SERV_CTI <> C_SERV_next THEN 1 ELSE 0 END AS nb_sorties_mutation_service, + CASE WHEN p_calendrier.date = DATECHG_DAT AND p_sejours.type_sejour = '1' AND C_SECT <> C_SECT_before THEN 1 ELSE 0 END AS nb_entrees_mutation_etage, + CASE WHEN p_calendrier.date = DATECHG_FIN_DAT AND p_sejours.type_sejour = '1' AND C_SECT <> C_SECT_next THEN 1 ELSE 0 END AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + 0 AS nb_entrees_mutation_unite_medicale, + 0 AS nb_sorties_mutation_unite_medicale, + + CASE WHEN p_sejours.type_sejour = '1' AND (p_calendrier.date <> DATECHG_FIN_DAT OR CODE_SORTIE = '1') THEN 1 ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN p_sejours.type_sejour = '1' AND p_calendrier.date <> DATECHG_FIN_DAT THEN 1 ELSE 0 END AS nb_jours_js_non_inclus, + + CASE WHEN p_sejours.type_sejour = '1' AND t_lits.chambre_particuliere = 'O' THEN '1' ELSE '0' END AS est_chambre_particuliere, + CASE WHEN p_sejours.type_sejour = '1' AND t_lits.chambre_particuliere = 'O' AND (p_calendrier.date <> DATECHG_FIN_DAT OR CODE_SORTIE = '1') THEN 1 ELSE 0 END AS nb_chambres_particulieres, + + C_SERV_CTI, + C_UF_CTI, + C_SECT, + NUM_LIT, + + COALESCE(t_lieux.oid,0) AS lieu_id, + + p_sejours.medecin_sejour_id as medecin_sejour_id, + + CASE WHEN p_sejours.code_prevu = '1' OR p_calendrier.date > date(now()) THEN '1' ELSE '0' END AS est_mouvement_previsionnel, + + p_sejours.oid as sejour_id + + FROM w_HISTOLIT + JOIN activite[PX].p_sejours ON w_HISTOLIT.NDOSSIER = p_sejours.no_sejour AND p_sejours.etat = '' + LEFT JOIN activite[PX].t_lieux ON (t_lieux.code_original_1 = C_SERV_CTI AND t_lieux.code_original_4 = NUM_LIT ) + , prod_qsp.DOSSIER, prod_qsp.HOSPI, base.p_calendrier, activite[PX].t_lits, activite[PX].t_services_facturation, base.t_dmt + WHERE + w_HISTOLIT.NDOSSIER = DOSSIER.NDOSSIER + AND w_HISTOLIT.NDOSSIER = HOSPI.N_HOSPI + AND NUM_LIT = t_lits.code_original + AND C_SERV_CTI = t_services_facturation.code_original + AND t_services_facturation.dmt_id = t_dmt.oid + AND (p_calendrier.date BETWEEN DATECHG_DAT AND DATECHG_FIN_DAT AND p_calendrier.date <= now() OR (p_calendrier.date = p_sejours.date_entree AND CODE_ENTREE = '1')) + AND p_calendrier.date <= now() + AND p_sejours.code_prevu <> '1' + ORDER BY sequence, p_calendrier.date; + + + + + + -- seances + + + DROP TABLE IF EXISTS w_SAISIE_seances; + CREATE TEMP TABLE w_SAISIE_seances AS + SELECT + SAISIE.N_HOSPI, + date(D_DEB) AS D_DEB, + 1 AS nb_seances + FROM prod_qsp.SAISIE + JOIN w_DOSSIERS_atraiter ON (SAISIE.N_HOSPI = w_DOSSIERS_atraiter.NDOSSIER_T ) + WHERE SUPPRIME <> 1 AND + (CODE_PREST = 'GHS' AND N_GHS IN + ( + SELECT code FROM base.t_ghs WHERE ghm_id IN (SELECT oid FROM base.t_ghm WHERE code like '28%') + ) + ) OR + CODE_PREST IN ('D01', 'D02', 'D03', 'D04', 'D05', 'D06', 'D07', 'D08', 'D09', 'D10', 'D11', 'D12', 'D13', 'D14', 'D15', 'D16', 'D17', 'D18', 'D19') + GROUP BY 1,2 + HAVING SUM(QTE) > 0; + + + CREATE INDEX w_SAISIE_seances_i1 + ON w_SAISIE_seances + USING btree + (N_HOSPI); + + + + INSERT INTO w_SAISIE_seances + SELECT * FROM ( + SELECT + SAISIE.N_HOSPI, + date(D_DEB) AS D_DEB, + 1 AS nb_seances + FROM prod_qsp.SAISIE + JOIN w_DOSSIERS_atraiter ON (SAISIE.N_HOSPI = w_DOSSIERS_atraiter.NDOSSIER_T ) + WHERE SUPPRIME <> 1 AND CODE_PREST IN ('K15') + GROUP BY 1,2 + HAVING SUM(QTE) > 0) subview + WHERE N_HOSPI NOT IN (SELECT N_HOSPI FROM w_SAISIE_seances); + + + UPDATE w_mouvements_sejour + SET nb_seances = w_SAISIE_seances.nb_seances + FROM w_SAISIE_seances + WHERE w_SAISIE_seances.N_HOSPI = w_mouvements_sejour.no_sejour AND D_DEB = w_mouvements_sejour.date; + + + + -- bébés + + DROP TABLE IF EXISTS w_DOSSIER_CCAM_bebes; + + CREATE TEMP TABLE w_DOSSIER_CCAM_bebes AS + SELECT + NDOSSIER, + MAX(CASE WHEN t_actes.texte ILIKE '%multiple%' THEN 2 ELSE 1 END) AS nb_bebes + FROM prod_qsp.DOSSIER_CCAM + JOIN w_DOSSIERS_atraiter ON NDOSSIER = NDOSSIER_T + JOIN base.t_actes ON substring(CODE_ACTE, 1, 7) = t_actes.code AND + CODE_ACTE LIKE 'JQG%' AND + t_actes.texte ILIKE 'accouchement%' + GROUP BY 1; + + + CREATE INDEX w_DOSSIER_CCAM_bebes_i1 + ON w_DOSSIER_CCAM_bebes + USING btree + (NDOSSIER); + + + UPDATE w_mouvements_sejour + SET nb_bebes = w_DOSSIER_CCAM_bebes.nb_bebes + FROM w_DOSSIER_CCAM_bebes + WHERE w_DOSSIER_CCAM_bebes.NDOSSIER = w_mouvements_sejour.no_sejour AND + (nb_entrees_directes = 1 OR nb_externes = 1 OR nb_ambulatoires = 1); + + + + + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = t_services_facturation.oid, + lit_id = t_lits.oid, + unite_fonctionnelle_id = t_unites_fonctionnelles.oid, + mode_traitement_id = t_services_facturation.mode_traitement_id + FROM activite[PX].t_services_facturation, activite[PX].t_lits, activite[PX].t_unites_fonctionnelles + WHERE + code_original_1 = t_services_facturation.code_original + AND code_original_4 = t_lits.code_original + AND code_original_6 = t_unites_fonctionnelles.code_original; + + INSERT INTO activite[PX].t_lieux( + code_original_1, + code_original_2, + code_original_3, + code_original_4, + code_original_5, + code_original_6, + code_original_7, + service_facturation_id, + activite_id, + lit_id, + unite_medicale_id, + unite_fonctionnelle_id, + mode_traitement_id) + SELECT DISTINCT + C_SERV_CTI, + '', + '', + NUM_LIT, + '', + C_UF_CTI, + '', + t_services_facturation.oid, + 0, + t_lits.oid, + 0, + t_unites_fonctionnelles.oid, + t_services_facturation.mode_traitement_id + FROM w_mouvements_sejour + LEFT JOIN activite[PX].t_lieux ON (t_lieux.code_original_1 = C_SERV_CTI AND t_lieux.code_original_4 = NUM_LIT AND t_lieux.code_original_6 = C_UF_CTI ) + , activite[PX].t_services_facturation, activite[PX].t_lits, activite[PX].t_unites_fonctionnelles + WHERE + C_SERV_CTI = t_services_facturation.code_original + AND NUM_LIT = t_lits.code_original + AND C_UF_CTI = t_unites_fonctionnelles.code_original + AND t_lieux.oid IS NULL; + + UPDATE w_mouvements_sejour SET lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE t_lieux.code_original_1 = C_SERV_CTI + AND t_lieux.code_original_4 = NUM_LIT + AND t_lieux.code_original_6 = C_UF_CTI + AND w_mouvements_sejour.lieu_id = 0; + + DROP TABLE IF EXISTS w_mouvements_sejour_key; + CREATE TEMP TABLE w_mouvements_sejour_key AS + SELECT + no_sejour, + SUM(1 + + extract('day' FROM date) * 2 + + heure_debut * 3 + + heure_fin * 4 + + medecin_sejour_id * 5 + + lieu_id * 6 + + nb_jours_js_non_inclus * 7 + + nb_entrees_directes * 8 + + nb_entrees_directes * 9 + + nb_sorties_directes * 10 + + nb_urgences * 11 + + nb_externes * 12 + + nb_ambulatoires * 13 + + nb_jours_js_inclus * 14 + + nb_seances * 15 + + nb_entrees_mutation_service * 16 + + nb_sorties_mutation_service * 17 + + nb_entrees_mutation_activite * 18 + + nb_sorties_mutation_activite * 19 + + nb_entrees_mutation_etage * 20 + + nb_sorties_mutation_etage * 21 + + nb_chambres_particulieres * 22 + + nb_entrees_mutation_unite_medicale * 23 + + nb_sorties_mutation_unite_medicale * 24 + ) AS key + FROM w_mouvements_sejour + GROUP BY 1; + + CREATE INDEX w_mouvements_sejour_key_i1 + ON w_mouvements_sejour_key + USING btree + (no_sejour); + + + + + + + + + DROP TABLE IF EXISTS p_mouvements_sejour_key; + CREATE TEMP TABLE p_mouvements_sejour_key AS + SELECT + no_sejour, + SUM(1 + + extract('day' FROM date) * 2 + + heure_debut * 3 + + heure_fin * 4 + + medecin_sejour_id * 5 + + lieu_id * 6 + + nb_jours_js_non_inclus * 7 + + nb_entrees_directes * 8 + + nb_entrees_directes * 9 + + nb_sorties_directes * 10 + + nb_urgences * 11 + + nb_externes * 12 + + nb_ambulatoires * 13 + + nb_jours_js_inclus * 14 + + nb_seances * 15 + + nb_entrees_mutation_service * 16 + + nb_sorties_mutation_service * 17 + + nb_entrees_mutation_activite * 18 + + nb_sorties_mutation_activite * 19 + + nb_entrees_mutation_etage * 20 + + nb_sorties_mutation_etage * 21 + + nb_chambres_particulieres * 22 + + nb_entrees_mutation_unite_medicale * 23 + + nb_sorties_mutation_unite_medicale * 24 + ) AS key + FROM activite[PX].p_mouvements_sejour + GROUP BY 1; + + CREATE INDEX p_mouvements_sejour_key_i1 + ON p_mouvements_sejour_key + USING btree + (no_sejour); + + DROP TABLE IF EXISTS w_ecarts_mouvements; + + CREATE TEMP TABLE w_ecarts_mouvements AS + SELECT w_mouvements_sejour_key.no_sejour + FROM w_mouvements_sejour_key LEFT JOIN p_mouvements_sejour_key ON p_mouvements_sejour_key.no_sejour = w_mouvements_sejour_key.no_sejour + WHERE p_mouvements_sejour_key.key IS DISTINCT FROM w_mouvements_sejour_key.key; + + DELETE FROM activite[PX].p_mouvements_sejour WHERE no_sejour IN (SELECt no_sejour FROM w_ecarts_mouvements); + + + + + + -- generation + + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_5'); + + INSERT INTO activite[PX].p_mouvements_sejour( + sejour_id, no_sejour, date, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, jour_semaine, is_weekend, est_mouvement_previsionnel) + SELECT sejour_id, no_sejour, date,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, jour_semaine, is_weekend, est_mouvement_previsionnel + FROM w_mouvements_sejour WHERE no_sejour IN (SELECT no_sejour FROM w_ecarts_mouvements) + ORDER BY no_sejour, sequence; + + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_5'); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie + AND lieu_sortie_id IS DISTINCT FROM p_mouvements_sejour.lieu_id; + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie AND p_mouvements_sejour.nb_sorties_directes = 1 + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = 0 + WHERE lieu_sortie_id IS NULL; + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = 0 + WHERE p_sejours.code_prevu = '1' AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL); + + + + + + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + WHERE type_sejour <> '5' AND + type_sejour <> '1' AND + type_sejour <> '9' AND + no_sejour IN ( + SELECT no_sejour + FROM activite[PX].p_mouvements_sejour + WHERE nb_seances > 0); + + + UPDATE activite[PX].p_mouvements_sejour + SET nb_externes = 0, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + ( + nb_externes <> 0 OR + nb_ambulatoires <> 0 + ) + ; + + -- Présence HDJ + UPDATE activite.p_mouvements_sejour + SET est_jour_hospitalisation = '0' + FROM + ( + SELECT no_sejour, date + FROM activite.p_mouvements_sejour + LEFT JOIN prod_qsp.HOSPI_PLANNING ON no_sejour = N_HOSPI AND + code_journee = 'P' AND + code_calendrier = 'HDJ' AND + date = date(date_jour) + WHERE no_sejour IN (SELECT N_HOSPI FROM prod_qsp.HOSPI_PLANNING WHERE code_journee = 'P' AND code_calendrier = 'HDJ') AND + est_jour_hospitalisation = '1' AND + N_HOSPI IS NULL + ORDER BY 1,2 + ) subview + WHERE p_mouvements_sejour.no_sejour = subview.no_sejour AND + p_mouvements_sejour.date = subview.date + ; + + ]]> + + + + + + + + + 'H' THEN DT_VENT ELSE '00010101' END) AS DT_VENT_C, + MAX(CASE WHEN PRESTATION.TYPE_PREST = 'H' THEN DT_VENT ELSE '00010101' END) AS DT_VENT_H + FROM prod_qsp.VENTIL_PAIEMENT + JOIN prod_qsp.DET_VENT ON VENTIL_PAIEMENT.PAIEMENT_LIG = DET_VENT.PAIEMENT_LIG + JOIN prod_qsp.SAISIE ON DET_VENT.N_SAISIE = SAISIE.N_SAISIE + JOIN prod_qsp.PRESTATION ON SAISIE.CODE_PREST = PRESTATION.CODE_PREST + WHERE TRANS_CPTA <> 0 + GROUP BY 1; + + CREATE INDEX w_FACTURE_QSP_REG_i1 + ON w_FACTURE_QSP_REG + USING btree + (NUM_FACT); + + DROP TABLE IF EXISTS w_FACTURE_QSP_DATES; + + CREATE TEMP TABLE w_FACTURE_QSP_DATES AS + (SELECT NUM_FACT_AMO AS NUM_FACT, MIN(SAISIE.D_DEB) AS D_DEB, MAX(GREATEST(SAISIE.D_FIN,SAISIE.D_DEB)) AS D_FIN + FROM prod_qsp.FACT_LIGNE JOIN prod_qsp.SAISIE ON FACT_LIGNE.N_SAISIE = SAISIE.N_SAISIE + WHERE NUM_FACT_AMO <> 0 + GROUP BY 1); + + INSERT INTO w_FACTURE_QSP_DATES + (SELECT NUM_FACT_AMC AS NUM_FACT, MIN(SAISIE.D_DEB) AS D_DEB, MAX(GREATEST(SAISIE.D_FIN,SAISIE.D_DEB)) AS D_FIN + FROM prod_qsp.FACT_LIGNE JOIN prod_qsp.SAISIE ON FACT_LIGNE.N_SAISIE = SAISIE.N_SAISIE + WHERE NUM_FACT_AMC <> 0 + GROUP BY 1); + + INSERT INTO w_FACTURE_QSP_DATES + (SELECT NUM_FACT_ASS AS NUM_FACT, MIN(SAISIE.D_DEB) AS D_DEB, MAX(GREATEST(SAISIE.D_FIN,SAISIE.D_DEB)) AS D_FIN + FROM prod_qsp.FACT_LIGNE JOIN prod_qsp.SAISIE ON FACT_LIGNE.N_SAISIE = SAISIE.N_SAISIE + WHERE NUM_FACT_ASS <> 0 + GROUP BY 1); + + CREATE INDEX w_FACTURE_QSP_DATES_i1 + ON w_FACTURE_QSP_DATES + USING btree + (NUM_FACT); + + DROP TABLE IF EXISTS w_FACTURE_QSP_AVOIR; + + CREATE TEMP TABLE w_FACTURE_QSP_AVOIR AS + SELECT + N_HOSPI, + NUM_FACT, + trim(to_char(to_number(substr(FACTURE.NUM_FACT,2,7),999999999), '00000000')) AS no_facture_od_avoir + FROM prod_qsp.FACTURE + JOIN w_sejours_orga ON FACTURE.N_HOSPI = w_sejours_orga.code_original + WHERE NUM_FACT > 90000000 + UNION ALL + SELECT + N_HOSPI, + to_number(substr(FACTURE.NUM_FACT,2,7),999999999) AS NUM_FACT, + trim(to_char(FACTURE.NUM_FACT, '00000000')) AS no_facture_od_avoir + FROM prod_qsp.FACTURE + JOIN w_sejours_orga ON FACTURE.N_HOSPI = w_sejours_orga.code_original + WHERE NUM_FACT > 90000000; + + CREATE INDEX w_FACTURE_QSP_AVOIR_i1 + ON w_FACTURE_QSP_AVOIR + USING btree + (NUM_FACT); + + DROP TABLE IF EXISTS w_FACTURE_QSP_REF; + CREATE TEMP TABLE w_FACTURE_QSP_REF AS + SELECT + FACTURE.N_HOSPI, + MAX(CASE WHEN TIERS = '1' AND w_FACTURE_QSP_AVOIR IS NULL THEN FACTURE.NUM_FACT ELSE NULL END) AS NUM_FACT_REFERENCE, + MAX(CASE WHEN TIERS = '1' AND w_FACTURE_QSP_AVOIR IS NULL THEN FACTURE.NUM_FACT ELSE NULL END) AS NUM_FACT_1, + MAX(CASE WHEN TIERS = '2' AND w_FACTURE_QSP_AVOIR IS NULL THEN FACTURE.NUM_FACT ELSE NULL END) AS NUM_FACT_2, + MAX(CASE WHEN TIERS = '3' AND w_FACTURE_QSP_AVOIR IS NULL THEN FACTURE.NUM_FACT ELSE NULL END) AS NUM_FACT_0, + MAX(CASE WHEN TIERS = '1' AND ETAT IN (1, 2) THEN FACTURE.NUM_FACT ELSE NULL END) AS NUM_FACT_1_B, + MAX(CASE WHEN TIERS = '2' AND ETAT IN (1, 2) THEN FACTURE.NUM_FACT ELSE NULL END) AS NUM_FACT_2_B, + MAX(CASE WHEN TIERS = '3' AND ETAT IN (1, 2) THEN FACTURE.NUM_FACT ELSE NULL END) AS NUM_FACT_0_B + FROM prod_qsp.FACTURE + LEFT JOIN w_FACTURE_QSP_AVOIR ON FACTURE.NUM_FACT = w_FACTURE_QSP_AVOIR.NUM_FACT + GROUP BY 1; + + UPDATE w_FACTURE_QSP_REF SET NUM_FACT_REFERENCE = NUM_FACT_2 WHERE NUM_FACT_REFERENCE IS NULL AND NUM_FACT_2 IS NOT NULL; + UPDATE w_FACTURE_QSP_REF SET NUM_FACT_REFERENCE = NUM_FACT_0 WHERE NUM_FACT_REFERENCE IS NULL AND NUM_FACT_0 IS NOT NULL; + UPDATE w_FACTURE_QSP_REF SET NUM_FACT_REFERENCE = NUM_FACT_1_B WHERE NUM_FACT_REFERENCE IS NULL AND NUM_FACT_1_B IS NOT NULL; + UPDATE w_FACTURE_QSP_REF SET NUM_FACT_REFERENCE = NUM_FACT_2_B WHERE NUM_FACT_REFERENCE IS NULL AND NUM_FACT_2_B IS NOT NULL; + UPDATE w_FACTURE_QSP_REF SET NUM_FACT_REFERENCE = NUM_FACT_0_B WHERE NUM_FACT_REFERENCE IS NULL AND NUM_FACT_0_B IS NOT NULL; + + CREATE INDEX w_FACTURE_QSP_REF_i1 + ON w_FACTURE_QSP_REF + USING btree + (N_HOSPI); + + DROP TABLE IF EXISTS w_FACTURE_QSP; + CREATE TEMP TABLE w_FACTURE_QSP AS + SELECT + trim(to_char(FACTURE.NUM_FACT, '00000000')) AS no_facture, + + CASE + WHEN ETAT IN (1, 2) AND w_FACTURE_QSP_AVOIR.no_facture_od_avoir IS NOT NULL THEN 'X' + WHEN ETAT IN (1) THEN '0' + WHEN ETAT IN (2) THEN '2' + WHEN ETAT IN (3) THEN '1' + ELSE '0' END AS type_facture, + + '1'::text AS code_facture, + date(FACTURE.DATE_SYS) AS date_facture, + + trim(to_char(NUM_FACT_REFERENCE, '00000000')) AS no_facture_reference, + COALESCE(w_FACTURE_QSP_AVOIR.no_facture_od_avoir,'') AS no_facture_od_avoir, + + CASE WHEN TRANS_CMPTA = '1' THEN '1' ELSE '0' END AS code_vente, + CASE WHEN TRANS_CMPTA = '1' THEN date(FACTURE.DT_FACT) ELSE COALESCE(date(FACTURE.DT_FACT),'20991231') END AS date_vente, + CASE WHEN TRANS_CMPTA = '1' THEN extract('year' FROM FACTURE.DT_FACT) * 100 + extract('month' FROM FACTURE.DT_FACT) ELSE 209912 END AS mois_vente, + + TOT_SEJ AS montant_facture_c, + CASE WHEN tiers = '1' THEN TOT_SEJ ELSE 0 END AS montant_facture_1_c, + CASE WHEN tiers = '2' THEN TOT_SEJ ELSE 0 END AS montant_facture_2_c, + 0::numeric AS montant_facture_22_c, + CASE WHEN tiers = '3' THEN TOT_SEJ ELSE 0 END AS montant_facture_0_c, + + TOT_HON AS montant_facture_h, + CASE WHEN tiers = '1' THEN TOT_HON ELSE 0 END AS montant_facture_1_h, + CASE WHEN tiers = '2' THEN TOT_HON ELSE 0 END AS montant_facture_2_h, + 0::numeric AS montant_facture_22_h, + CASE WHEN tiers = '3' THEN TOT_HON ELSE 0 END AS montant_facture_0_h, + + TOT_SEJ AS montant_comptabilise_c, + CASE WHEN tiers = '1' THEN TOT_SEJ ELSE 0 END AS montant_comptabilise_1_c, + CASE WHEN tiers = '2' THEN TOT_SEJ ELSE 0 END AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_22_c, + CASE WHEN tiers = '3' THEN TOT_SEJ ELSE 0 END AS montant_comptabilise_0_c, + + TOT_HON AS montant_comptabilise_h, + CASE WHEN tiers = '1' THEN TOT_HON ELSE 0 END AS montant_comptabilise_1_h, + CASE WHEN tiers = '2' THEN TOT_HON ELSE 0 END AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_h, + CASE WHEN tiers = '3' THEN TOT_HON ELSE 0 END AS montant_comptabilise_0_h, + + ENC_SEJ AS montant_regle_c, + CASE WHEN tiers = '1' THEN ENC_SEJ ELSE 0 END AS montant_regle_1_c, + CASE WHEN tiers = '2' THEN ENC_SEJ ELSE 0 END AS montant_regle_2_c, + 0::numeric AS montant_regle_22_c, + CASE WHEN tiers = '3' THEN ENC_SEJ ELSE 0 END AS montant_regle_0_c, + + ENC_HON AS montant_regle_h, + CASE WHEN tiers = '1' THEN ENC_HON ELSE 0 END AS montant_regle_1_h, + CASE WHEN tiers = '2' THEN ENC_HON ELSE 0 END AS montant_regle_2_h, + 0::numeric AS montant_regle_22_h, + CASE WHEN tiers = '3' THEN ENC_HON ELSE 0 END AS montant_regle_0_h, + + CASE WHEN ghs_id <> 0 THEN date_entree + WHEN date_sortie - date_entree < 8 THEN date_entree + ELSE date(D_DEB) END AS date_debut, + CASE WHEN ghs_id <> 0 THEN date_sortie + WHEN date_sortie - date_entree < 8 THEN date_sortie + ELSE date(D_FIN) END AS date_fin, + + + CASE WHEN tiers = '1' THEN COALESCE(LOT.DATE_BORD,'00010101') ELSE '00010101' END AS date_expedition, + CASE WHEN tiers = '1' THEN COALESCE(LOT.DATE_BORD,'00010101') ELSE '00010101' END AS date_expedition_1, + CASE WHEN tiers = '2' THEN COALESCE(LOT.DATE_BORD,'00010101') ELSE '00010101' END AS date_expedition_2, + '00010101'::date AS date_expedition_22, + CASE WHEN tiers = '3' THEN COALESCE(LOT.DATE_BORD,'00010101') ELSE '00010101' END AS date_expedition_0, + CASE WHEN tiers = '1' THEN COALESCE(w_FACTURE_QSP_LOT.N_LOT::text,'') ELSE '' END AS no_bordereau_1, + CASE WHEN tiers = '2' THEN COALESCE(w_FACTURE_QSP_LOT.N_LOT::text,'') ELSE '' END AS no_bordereau_2, + ''::text AS no_bordereau_22, + CASE WHEN tiers = '3' THEN COALESCE(w_FACTURE_QSP_LOT.N_LOT::text,'') ELSE '' END AS no_bordereau_0, + CASE WHEN tiers = '1' AND w_FACTURE_QSP_LOT.N_LOT IS NOT NULL THEN '1' ELSE '0' END AS code_expedie_1, + CASE WHEN tiers = '2' AND w_FACTURE_QSP_LOT.N_LOT IS NOT NULL THEN '1' ELSE '0' END AS code_expedie_2, + '0'::text AS code_expedie_22, + CASE WHEN tiers = '3' AND w_FACTURE_QSP_LOT.N_LOT IS NOT NULL THEN '1' ELSE '0' END AS code_expedie_0, + + GREATEST(COALESCE(w_FACTURE_QSP_REG.DT_VENT_C,'00010101'), COALESCE(w_FACTURE_QSP_REG.DT_VENT_H,'00010101')) AS date_solde, + COALESCE(w_FACTURE_QSP_REG.DT_VENT_C,'00010101') AS date_solde_c, + COALESCE(w_FACTURE_QSP_REG.DT_VENT_H,'00010101') AS date_solde_h, + CASE WHEN tiers = '1' THEN COALESCE(w_FACTURE_QSP_REG.DT_VENT_C,'00010101') ELSE '00010101' END AS date_solde_1_c, + CASE WHEN tiers = '1' THEN COALESCE(w_FACTURE_QSP_REG.DT_VENT_H,'00010101') ELSE '00010101' END AS date_solde_1_h, + CASE WHEN tiers = '2' THEN COALESCE(w_FACTURE_QSP_REG.DT_VENT_C,'00010101') ELSE '00010101' END AS date_solde_2_c, + CASE WHEN tiers = '2' THEN COALESCE(w_FACTURE_QSP_REG.DT_VENT_H,'00010101') ELSE '00010101' END AS date_solde_2_h, + '00010101'::date AS date_solde_22_c, + '00010101'::date AS date_solde_22_h, + CASE WHEN tiers = '3' THEN COALESCE(w_FACTURE_QSP_REG.DT_VENT_C,'00010101') ELSE '00010101' END AS date_solde_0_c, + CASE WHEN tiers = '3' THEN COALESCE(w_FACTURE_QSP_REG.DT_VENT_H,'00010101') ELSE '00010101' END AS date_solde_0_h, + + + GREATEST(COALESCE(w_FACTURE_QSP_REG.DT_VENT_C,'00010101'), COALESCE(w_FACTURE_QSP_REG.DT_VENT_H,'00010101')) AS date_solde_reference, + COALESCE(w_FACTURE_QSP_REG.DT_VENT_C,'00010101') AS date_solde_reference_c, + COALESCE(w_FACTURE_QSP_REG.DT_VENT_H,'00010101') AS date_solde_reference_h, + CASE WHEN tiers = '1' THEN COALESCE(w_FACTURE_QSP_REG.DT_VENT_C,'00010101') ELSE '00010101' END AS date_solde_reference_1_c, + CASE WHEN tiers = '1' THEN COALESCE(w_FACTURE_QSP_REG.DT_VENT_H,'00010101') ELSE '00010101' END AS date_solde_reference_1_h, + CASE WHEN tiers = '2' THEN COALESCE(w_FACTURE_QSP_REG.DT_VENT_C,'00010101') ELSE '00010101' END AS date_solde_reference_2_c, + CASE WHEN tiers = '2' THEN COALESCE(w_FACTURE_QSP_REG.DT_VENT_H,'00010101') ELSE '00010101' END AS date_solde_reference_2_h, + '00010101'::date AS date_solde_reference_22_c, + '00010101'::date AS date_solde_reference_22_h, + CASE WHEN tiers = '3' THEN COALESCE(w_FACTURE_QSP_REG.DT_VENT_C,'00010101') ELSE '00010101' END AS date_solde_reference_0_c, + CASE WHEN tiers = '3' THEN COALESCE(w_FACTURE_QSP_REG.DT_VENT_H,'00010101') ELSE '00010101' END AS date_solde_reference_0_h, + + + + FACTURE.*, + w_sejours_orga.* + + FROM prod_qsp.FACTURE + JOIN w_sejours_orga ON FACTURE.N_HOSPI = w_sejours_orga.code_original + LEFT JOIN w_FACTURE_QSP_DATES ON FACTURE.NUM_FACT = w_FACTURE_QSP_DATES.NUM_FACT + LEFT JOIN w_FACTURE_QSP_LOT ON FACTURE.NUM_FACT = w_FACTURE_QSP_LOT.NUM_FACT + LEFT JOIN w_FACTURE_QSP_REG ON FACTURE.NUM_FACT = w_FACTURE_QSP_REG.NUM_FACT + LEFT JOIN prod_qsp.LOT ON w_FACTURE_QSP_LOT.N_LOT = LOT.N_LOT + LEFT JOIN w_FACTURE_QSP_AVOIR ON FACTURE.NUM_FACT = w_FACTURE_QSP_AVOIR.NUM_FACT + JOIN w_FACTURE_QSP_REF ON FACTURE.N_HOSPI = w_FACTURE_QSP_REF.N_HOSPI; + + CREATE INDEX w_FACTURE_QSP_i1 + ON w_FACTURE_QSP + USING btree + (NUM_FACT); + + CREATE INDEX w_FACTURE_QSP_i2 + ON w_FACTURE_QSP + USING btree + (no_facture); + + CREATE INDEX w_FACTURE_QSP_i3 + ON w_FACTURE_QSP + USING btree + (no_facture_od_avoir); + + CREATE INDEX w_FACTURE_QSP_i4 + ON w_FACTURE_QSP + USING btree + (no_facture_reference); + + DROP TABLE IF EXISTS w_ods_avoir; + + CREATE TEMP TABLE w_ods_avoir AS + SELECT p_factures.no_facture, p_factures.no_facture_od_avoir, p_factures_avoir.date_facture AS date_od_avoir, + SUM(p_factures.montant_comptabilise_c + p_factures.montant_comptabilise_h) AS montant_comptabilise, + SUM(p_factures.montant_regle_c + p_factures.montant_regle_h) AS montant_regle, + SUM(p_factures_avoir.montant_comptabilise_c + p_factures_avoir.montant_comptabilise_h) AS montant_facture_avoir, + SUM(p_factures_avoir.montant_regle_c + p_factures_avoir.montant_regle_h) AS montant_regle_avoir + FROM w_FACTURE_QSP p_factures JOIN w_FACTURE_QSP p_factures_avoir ON p_factures.no_facture = p_factures_avoir.no_facture_od_avoir + WHERE p_factures.type_facture = 'X' AND p_factures_avoir.type_facture = '1' + GROUP BY 1,2,3 + HAVING SUM(p_factures.montant_comptabilise_c + p_factures.montant_comptabilise_h) = 0 - SUM(p_factures_avoir.montant_comptabilise_c + p_factures_avoir.montant_comptabilise_h) + AND SUM(p_factures.montant_regle_c + p_factures.montant_regle_h) = 0 + AND SUM(p_factures_avoir.montant_regle_c + p_factures_avoir.montant_regle_h) = 0; + + CREATE INDEX w_ods_avoir_i1 + ON w_ods_avoir + USING btree + (no_facture); + + CREATE INDEX w_ods_avoir_i2 + ON w_ods_avoir + USING btree + (no_facture_od_avoir); + + UPDATE w_FACTURE_QSP SET + date_solde_c = date_od_avoir, + date_solde_0_c = date_od_avoir, + date_solde_1_c = date_od_avoir, + date_solde_2_c = date_od_avoir, + date_solde_22_c = date_od_avoir, + date_solde_h = date_od_avoir, + date_solde_0_h = date_od_avoir, + date_solde_1_h = date_od_avoir, + date_solde_2_h = date_od_avoir, + date_solde_22_h = date_od_avoir, + montant_regle_c = montant_comptabilise_c, + montant_regle_0_c = montant_comptabilise_0_c, + montant_regle_1_c = montant_comptabilise_1_c, + montant_regle_2_c = montant_comptabilise_2_c, + montant_regle_22_c = montant_comptabilise_22_c, + montant_regle_h = montant_comptabilise_h, + montant_regle_0_h = montant_comptabilise_0_h, + montant_regle_1_h = montant_comptabilise_1_h, + montant_regle_2_h = montant_comptabilise_2_h, + montant_regle_22_h = montant_comptabilise_22_h + FROM w_ods_avoir + WHERE w_FACTURE_QSP.no_facture = w_ods_avoir.no_facture AND w_FACTURE_QSP.no_facture_od_avoir <> ''; + + UPDATE w_FACTURE_QSP SET + date_solde_c = date_od_avoir, + date_solde_0_c = date_od_avoir, + date_solde_1_c = date_od_avoir, + date_solde_2_c = date_od_avoir, + date_solde_22_c = date_od_avoir, + date_solde_h = date_od_avoir, + date_solde_0_h = date_od_avoir, + date_solde_1_h = date_od_avoir, + date_solde_2_h = date_od_avoir, + date_solde_22_h = date_od_avoir, + montant_regle_c = montant_comptabilise_c, + montant_regle_0_c = montant_comptabilise_0_c, + montant_regle_1_c = montant_comptabilise_1_c, + montant_regle_2_c = montant_comptabilise_2_c, + montant_regle_22_c = montant_comptabilise_22_c, + montant_regle_h = montant_comptabilise_h, + montant_regle_0_h = montant_comptabilise_0_h, + montant_regle_1_h = montant_comptabilise_1_h, + montant_regle_2_h = montant_comptabilise_2_h, + montant_regle_22_h = montant_comptabilise_22_h + FROM w_ods_avoir + WHERE w_FACTURE_QSP.no_facture = w_ods_avoir.no_facture_od_avoir AND w_FACTURE_QSP.no_facture_od_avoir <> ''; + + UPDATE w_FACTURE_QSP + SET + date_solde_0_c = CASE WHEN montant_comptabilise_0_c = 0 THEN '00010101' WHEN montant_comptabilise_0_c = montant_regle_0_c THEN date_solde_0_c ELSE '00010101' END, + date_solde_0_h = CASE WHEN montant_comptabilise_0_h = 0 THEN '00010101' WHEN montant_comptabilise_0_h = montant_regle_0_h THEN date_solde_0_h ELSE '00010101' END, + date_solde_1_c = CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '00010101' END, + date_solde_1_h = CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '00010101' END, + date_solde_2_c = CASE WHEN montant_comptabilise_2_c = 0 THEN '00010101' WHEN montant_comptabilise_2_c = montant_regle_2_c THEN date_solde_2_c ELSE '00010101' END, + date_solde_2_h = CASE WHEN montant_comptabilise_2_h = 0 THEN '00010101' WHEN montant_comptabilise_2_h = montant_regle_2_h THEN date_solde_2_h ELSE '00010101' END, + date_solde_22_c = CASE WHEN montant_comptabilise_22_c = 0 THEN '00010101' WHEN montant_comptabilise_22_c = montant_regle_22_c THEN date_solde_22_c ELSE '00010101' END, + date_solde_22_h = CASE WHEN montant_comptabilise_22_h = 0 THEN '00010101' WHEN montant_comptabilise_22_h = montant_regle_22_h THEN date_solde_22_h ELSE '00010101' END + WHERE + ( + date_solde_0_c <> CASE WHEN montant_comptabilise_0_c = 0 THEN '00010101' WHEN montant_comptabilise_0_c = montant_regle_0_c THEN date_solde_0_c ELSE '00010101' END OR + date_solde_0_h <> CASE WHEN montant_comptabilise_0_h = 0 THEN '00010101' WHEN montant_comptabilise_0_h = montant_regle_0_h THEN date_solde_0_h ELSE '00010101' END OR + date_solde_1_c <> CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '00010101' END OR + date_solde_1_h <> CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '00010101' END OR + date_solde_2_c <> CASE WHEN montant_comptabilise_2_c = 0 THEN '00010101' WHEN montant_comptabilise_2_c = montant_regle_2_c THEN date_solde_2_c ELSE '00010101' END OR + date_solde_2_h <> CASE WHEN montant_comptabilise_2_h = 0 THEN '00010101' WHEN montant_comptabilise_2_h = montant_regle_2_h THEN date_solde_2_h ELSE '00010101' END OR + date_solde_22_c <> CASE WHEN montant_comptabilise_22_c = 0 THEN '00010101' WHEN montant_comptabilise_22_c = montant_regle_22_c THEN date_solde_22_c ELSE '00010101' END OR + date_solde_22_h <> CASE WHEN montant_comptabilise_22_h = 0 THEN '00010101' WHEN montant_comptabilise_22_h = montant_regle_22_h THEN date_solde_22_h ELSE '00010101' END + ) + ; + + UPDATE w_FACTURE_QSP + SET + date_solde = GREATEST(date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h), + date_solde_c = GREATEST(date_solde_0_c, date_solde_1_c, date_solde_2_c, date_solde_22_c), + date_solde_h = GREATEST(date_solde_0_h, date_solde_1_h, date_solde_2_h, date_solde_22_h) + + WHERE ( + date_solde IS DISTINCT FROM GREATEST(date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h) OR + date_solde_c IS DISTINCT FROM GREATEST(date_solde_0_c, date_solde_1_c, date_solde_2_c, date_solde_22_c) OR + date_solde_h IS DISTINCT FROM GREATEST(date_solde_0_h, date_solde_1_h, date_solde_2_h, date_solde_22_h) + ) + ; + + DROP TABLE IF EXISTS w_FACTURE_QSP_REF; + + CREATE TEMP TABLE w_FACTURE_QSP_REF AS + SELECT + no_facture_reference, + MAX(date_solde) AS date_solde_reference, + MAX(date_solde_c) AS date_solde_reference_c, + MAX(date_solde_h) AS date_solde_reference_h, + MAX(date_solde_0_c) AS date_solde_reference_0_c, + MAX(date_solde_0_h) AS date_solde_reference_0_h, + MAX(date_solde_1_c) AS date_solde_reference_1_c, + MAX(date_solde_1_h) AS date_solde_reference_1_h, + MAX(date_solde_2_c) AS date_solde_reference_2_c, + MAX(date_solde_2_h) AS date_solde_reference_2_h, + MAX(date_solde_22_c) AS date_solde_reference_22_c, + MAX(date_solde_22_h) AS date_solde_reference_22_h + FROM w_FACTURE_QSP + GROUP BY no_facture_reference; + + CREATE INDEX w_FACTURE_QSP_REF_1 + ON w_FACTURE_QSP_REF + USING btree + (no_facture_reference); + + UPDATE w_FACTURE_QSP + SET + date_expedition = CASE WHEN date_expedition <> '00010101' THEN date_expedition ELSE '20991231' END, + date_expedition_0 = CASE WHEN date_expedition_0 <> '00010101' THEN date_expedition_0 ELSE '20991231' END, + date_expedition_1 = CASE WHEN date_expedition_1 <> '00010101' THEN date_expedition_1 ELSE '20991231' END, + date_expedition_2 = CASE WHEN date_expedition_2 <> '00010101' THEN date_expedition_2 ELSE '20991231' END, + date_expedition_22 = CASE WHEN date_expedition_22 <> '00010101' THEN date_expedition_22 ELSE '20991231' END, + + date_solde = CASE WHEN date_solde <> '00010101' THEN date_solde ELSE '20991231' END, + date_solde_c = CASE WHEN date_solde_c <> '00010101' THEN date_solde_c ELSE '20991231' END, + date_solde_h = CASE WHEN date_solde_h <> '00010101' THEN date_solde_h ELSE '20991231' END, + date_solde_0_c = CASE WHEN date_solde_0_c <> '00010101' THEN date_solde_0_c ELSE '20991231' END, + date_solde_0_h = CASE WHEN date_solde_0_h <> '00010101' THEN date_solde_0_h ELSE '20991231' END, + date_solde_1_c = CASE WHEN date_solde_1_c <> '00010101' THEN date_solde_1_c ELSE '20991231' END, + date_solde_1_h = CASE WHEN date_solde_1_h <> '00010101' THEN date_solde_1_h ELSE '20991231' END, + date_solde_2_c = CASE WHEN date_solde_2_c <> '00010101' THEN date_solde_2_c ELSE '20991231' END, + date_solde_2_h = CASE WHEN date_solde_2_h <> '00010101' THEN date_solde_2_h ELSE '20991231' END, + date_solde_22_c = CASE WHEN date_solde_22_c <> '00010101' THEN date_solde_22_c ELSE '20991231' END, + date_solde_22_h = CASE WHEN date_solde_22_h <> '00010101' THEN date_solde_22_h ELSE '20991231' END, + + + date_solde_reference = CASE WHEN w_FACTURE_QSP_REF.date_solde_reference <> '00010101' THEN w_FACTURE_QSP_REF.date_solde_reference ELSE '20991231' END, + date_solde_reference_c = CASE WHEN w_FACTURE_QSP_REF.date_solde_reference_c <> '00010101' THEN w_FACTURE_QSP_REF.date_solde_reference_c ELSE '20991231' END, + date_solde_reference_h = CASE WHEN w_FACTURE_QSP_REF.date_solde_reference_h <> '00010101' THEN w_FACTURE_QSP_REF.date_solde_reference_h ELSE '20991231' END, + date_solde_reference_0_c = CASE WHEN w_FACTURE_QSP_REF.date_solde_reference_0_c <> '00010101' THEN w_FACTURE_QSP_REF.date_solde_reference_0_c ELSE '20991231' END, + date_solde_reference_0_h = CASE WHEN w_FACTURE_QSP_REF.date_solde_reference_0_h <> '00010101' THEN w_FACTURE_QSP_REF.date_solde_reference_0_h ELSE '20991231' END, + date_solde_reference_1_c = CASE WHEN w_FACTURE_QSP_REF.date_solde_reference_1_c <> '00010101' THEN w_FACTURE_QSP_REF.date_solde_reference_1_c ELSE '20991231' END, + date_solde_reference_1_h = CASE WHEN w_FACTURE_QSP_REF.date_solde_reference_1_h <> '00010101' THEN w_FACTURE_QSP_REF.date_solde_reference_1_h ELSE '20991231' END, + date_solde_reference_2_c = CASE WHEN w_FACTURE_QSP_REF.date_solde_reference_2_c <> '00010101' THEN w_FACTURE_QSP_REF.date_solde_reference_2_c ELSE '20991231' END, + date_solde_reference_2_h = CASE WHEN w_FACTURE_QSP_REF.date_solde_reference_2_h <> '00010101' THEN w_FACTURE_QSP_REF.date_solde_reference_2_h ELSE '20991231' END, + date_solde_reference_22_c = CASE WHEN w_FACTURE_QSP_REF.date_solde_reference_22_c <> '00010101' THEN w_FACTURE_QSP_REF.date_solde_reference_22_c ELSE '20991231' END, + date_solde_reference_22_h = CASE WHEN w_FACTURE_QSP_REF.date_solde_reference_22_h <> '00010101' THEN w_FACTURE_QSP_REF.date_solde_reference_22_h ELSE '20991231' END + FROM w_FACTURE_QSP_REF + WHERE w_FACTURE_QSP.no_facture_reference = w_FACTURE_QSP_REF.no_facture_reference; + + INSERT INTO activite[PX].p_factures( + no_sejour, + sejour_id, + no_facture, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + montant_facture_c, + montant_facture_h, + montant_regle_c, + montant_regle_h, + delai_facture, + delai_solde, + date_expedition, + delai_expedition, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + ghs_id, + particularite_t2a, + code_cloture, + code_cp_demandee, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + + nb_rejets, + no_facture_od_avoir, + + no_facture_reference, + date_solde_reference, + date_solde_reference_c, + date_solde_reference_h, + date_solde_reference_0_c, + date_solde_reference_0_h, + date_solde_reference_1_c, + date_solde_reference_1_h, + date_solde_reference_2_c, + date_solde_reference_2_h, + date_solde_reference_22_c, + date_solde_reference_22_h + ) + SELECT + no_sejour, + sejour_id, + no_facture, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + code_vente, + date_vente, + mois_vente, + + montant_facture_c, + montant_facture_h, + montant_regle_c, + montant_regle_h, + 0::numeric as delai_facture, + 0::numeric as delai_solde, + date_expedition, + 0::numeric as delai_expedition, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + '0'::text AS code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + ''::text AS no_bordereau_22, + + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + + + 0 AS delai_expedition_0, + 0 AS delai_expedition_1, + 0 AS delai_expedition_2, + 0 AS delai_expedition_22, + 0 AS delai_solde_0_c, + 0 AS delai_solde_0_h, + 0 AS delai_solde_1_c, + 0 AS delai_solde_1_h, + 0 AS delai_solde_2_c, + 0 AS delai_solde_2_h, + 0 AS delai_solde_22_c, + 0 AS delai_solde_22_h, + + ghs_id, + '' as particularite_t2a, + + '0' as code_cloture, + '0' as code_cp_demandee, + 0 AS ghs_bebe1_id, + 0 AS ghs_bebe2_id, + 0 AS ghs_bebe3_id, + + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + + COALESCE(w_FACTURE_QSP.REJET,0) AS nb_rejets, + no_facture_od_avoir, + + no_facture_reference, + date_solde_reference, + date_solde_reference_c, + date_solde_reference_h, + date_solde_reference_0_c, + date_solde_reference_0_h, + date_solde_reference_1_c, + date_solde_reference_1_h, + date_solde_reference_2_c, + date_solde_reference_2_h, + date_solde_reference_22_c, + date_solde_reference_22_h + + + FROM w_FACTURE_QSP; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_10'); + + -- Séjours sans facturation + UPDATE activite[PX].p_sejours + SET est_sans_facturation = '1' + WHERE lieu_sortie_id IN + (SELECT oid FROM activite[PX].t_lieux WHERE + service_facturation_id IN + (SELECT oid FROM activite[PX].t_services_facturation WHERE est_sans_facturation = '1') OR + unite_fonctionnelle_id IN + (SELECT oid FROM activite[PX].t_unites_fonctionnelles WHERE est_sans_facturation = '1') + ); + + + + -- Séjours facturés partiellement + CREATE TEMP TABLE w_sejours_factures_partiellement AS + SELECT no_sejour + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON p_sejours.lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid + WHERE tiers_payant_1_id <> 0 AND + no_sejour in (select no_sejour from activite[PX].p_factures where code_facture = '1') AND + no_sejour not in (select no_sejour from activite[PX].p_factures where montant_facture_1_c <> 0 OR montant_facture_1_h <> 0) AND + date_sortie >= '20130101' AND + p_sejours.type_sejour IN ('1','2') AND + t_services_facturation.texte NOT ILIKE '%ESTHETIQUE%'AND + t_ghm.code <> '09Z02A' + ORDER BY 1; + + DELETE FROM w_sejours_factures_partiellement + USING prod_qsp.FACT_LIGNE + JOIN prod_qsp.SAISIE ON SAISIE.N_SAISIE = fact_ligne.N_SAISIE AND CODE_PREST IN ('GHS','PJ') AND (NUM_FACT_AMO <> 0 OR NUM_FACT_AMC <> 0 OR NUM_FACT_ASS <> 0 AND TAUX = 0) + WHERE FACT_LIGNE.N_HOSPI = w_sejours_factures_partiellement.no_sejour; + + + -- Séjours sans facture + DROP TABLE IF EXISTS w_factures_trous; + CREATE TEMP TABLE w_factures_trous AS + SELECT + p_sejours.finess, + p_sejours.no_sejour, + p_sejours.oid as sejour_id, + p_sejours.date_entree, + p_sejours.ghs_id, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.code_cp_demandee, + COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire, + p_sejours.code_sorti, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie, + MAX( + CASE + WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie + ELSE p_factures.date_fin + END + ) AS date_fin_facture, + date(MAX(COALESCE( + CASE + WHEN w_sejours_factures_partiellement.no_sejour IS NOT NULL THEN NULL + WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie + ELSE p_factures.date_fin + END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours + FROM activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND no_facture NOT LIKE 'E%' + LEFT JOIN w_sejours_factures_partiellement ON p_sejours.no_sejour = w_sejours_factures_partiellement.no_sejour + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE p_sejours.etat = '' AND + p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND + date_entree <= now() AND + p_sejours.type_sejour <> '6' AND + p_sejours.type_sejour <> '9' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13; + + + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + sejour_id, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + ghs_id, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee, + date_debut, + date_fin) + SELECT finess, + no_sejour, + sejour_id, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + 'E', + '0', + '20991231'::date, + ghs_id, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee , + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14; + + + + UPDATE activite[PX].p_factures SET + date_debut = date_entree, + date_fin = CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid AND + avec_facturation_intermediaire IS DISTINCT FROM '1' + WHERE p_factures.no_sejour = p_sejours.no_sejour AND + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END - date_entree < 30 AND + ( + p_factures.date_debut <> date_entree OR + p_factures.date_fin <> CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + ); + + + + + ]]> + + + + '20991231' THEN date_expedition_1 ELSE '00010101' END, + CASE WHEN date_facture <> '20991231' THEN date_facture ELSE '00010101' END, + date_sortie + ) AS date_rejet, + ''::text AS code_rejet, + TRIM(MOTIF_REJ) AS texte_rejet + FROM w_FACTURE_QSP + WHERE REJET <> 0 + ORDER BY MOTIF_REJ; + + UPDATE w_REJETS SET + code_rejet = split_part(texte_rejet, ' ', 1), + texte_rejet = trim(substr(texte_rejet, length(split_part(texte_rejet, ' ', 1))+1, 9999)); + + UPDATE w_REJETS SET + texte_rejet = trim(substr(texte_rejet, 4, 9999)) + WHERE split_part(texte_rejet, ' ', 1) = '000'; + + UPDATE w_REJETS SET + code_rejet = code_rejet || '-' || split_part(texte_rejet, ' ', 1), + texte_rejet = trim(substr(texte_rejet, length(split_part(texte_rejet, ' ', 1))+1, 9999)) + WHERE split_part(texte_rejet, ' ', 1) BETWEEN '0' AND '9'; + + UPDATE w_REJETS SET + texte_rejet = trim(replace(texte_rejet, ':', '')) + WHERE texte_rejet like '%:%'; + + INSERT INTO activite[PX].p_factures_rejets( + no_facture, date_rejet, rejet_id, rejet_code, rejet_texte) + SELECT + no_facture , + date_rejet , + 0, + code_rejet , + texte_rejet + + FROM w_REJETS; + + INSERT INTO activite.t_rejets_noemie (texte, code) + SELECT DISTINCT rejet_texte, MAX(rejet_code) + FROM activite[PX].p_factures_rejets + LEFT JOIN activite.t_rejets_noemie ON (rejet_texte = t_rejets_noemie.texte) + WHERE t_rejets_noemie.oid IS NULL + GROUP BY 1; + + UPDATE activite[PX].p_factures_rejets SET rejet_id = t_rejets_noemie.oid + FROM activite.t_rejets_noemie + WHERE rejet_texte = t_rejets_noemie.texte; + + + ]]> + + + + 0 THEN DET_TIPS.PU ELSE DET_TIPS.PU_TTC_TIPS END, PRIX_PREST, 0) AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id + FROM prod_qsp.SAISIE + LEFT JOIN prod_qsp.DET_TIPS ON DET_TIPS.N_SAISIE = SAISIE.N_SAISIE + LEFT JOIN w_PRIX_PREST ON + SAISIE.N_DIS = w_PRIX_PREST.N_DIS AND + SAISIE.CODE_PREST = w_PRIX_PREST.CODE_PREST AND + date(SAISIE.D_DEB) BETWEEN w_PRIX_PREST.DATE_PRIX AND w_PRIX_PREST.DATE_PRIX_fin + LEFT JOIN prod_qsp.FACT_LIGNE ON FACT_LIGNE.N_SAISIE = SAISIE.N_SAISIE AND + ( + NUM_FACT_AMO <> 0 OR + NUM_FACT_AMC <> 0 OR + NUM_FACT_ASS <> 0 + ) + JOIN activite[PX].p_factures ON SAISIE.N_HOSPI = p_factures.no_sejour AND + date(SAISIE.D_DEB) BETWEEN p_factures.date_debut AND p_factures.date_fin + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.code_original AND p_sejours.etat = '' + JOIN prod_qsp.PRESTATION ON SAISIE.CODE_PREST = PRESTATION.CODE_PREST + LEFT JOIN activite[PX].t_rubriques_facturation ON PRESTATION.CODE_PREST = t_rubriques_facturation.code_original + LEFT JOIN activite.t_prestations ON PRESTATION.CODE_NORM = t_prestations.code_original + WHERE type_facture = 'E' AND + SUPPRIME <> '1' AND + SAISIE.CODE_PREST <> 'GHS' AND + PRESTATION.TYPE_PREST <> 'H' AND + FACT_LIGNE.N_SAISIE IS NULL AND + NOT (SAISIE.QTE > 1 AND + ( + (date(SAISIE.D_FIN) - date(SAISIE.D_DEB) + 1) = SAISIE.QTE OR + (date(SAISIE.D_FIN) - date(SAISIE.D_DEB) ) = SAISIE.QTE + ) + ); + + -- Multi prestations + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + p_factures.no_facture, + p_calendrier.date AS date_debut, + p_calendrier.date AS date_fin, + 1 * SAISIE.COEFF AS nb_rubrique, + 1 AS coefficient, + t_rubriques_facturation.oid AS rubrique_facturation_id, + t_prestations.oid AS prestation_id, + COALESCE(CASE WHEN DET_TIPS.PU <> 0 THEN DET_TIPS.PU ELSE DET_TIPS.PU_TTC_TIPS END, PRIX_PREST, 0) AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id + FROM prod_qsp.SAISIE + LEFT JOIN prod_qsp.DET_TIPS ON DET_TIPS.N_SAISIE = SAISIE.N_SAISIE + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date(SAISIE.D_DEB) AND date(SAISIE.D_FIN) + LEFT JOIN w_PRIX_PREST ON + SAISIE.N_DIS = w_PRIX_PREST.N_DIS AND + SAISIE.CODE_PREST = w_PRIX_PREST.CODE_PREST AND + date(SAISIE.D_DEB) BETWEEN w_PRIX_PREST.DATE_PRIX AND w_PRIX_PREST.DATE_PRIX_fin + LEFT JOIN prod_qsp.FACT_LIGNE ON FACT_LIGNE.N_SAISIE = SAISIE.N_SAISIE AND + ( + NUM_FACT_AMO <> 0 OR + NUM_FACT_AMC <> 0 OR + NUM_FACT_ASS <> 0 + ) + JOIN activite[PX].p_factures ON SAISIE.N_HOSPI = p_factures.no_sejour AND + p_calendrier.date BETWEEN date_debut AND date_fin + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.code_original AND p_sejours.etat = '' + JOIN prod_qsp.PRESTATION ON SAISIE.CODE_PREST = PRESTATION.CODE_PREST + LEFT JOIN activite[PX].t_rubriques_facturation ON PRESTATION.CODE_PREST = t_rubriques_facturation.code_original + LEFT JOIN activite.t_prestations ON PRESTATION.CODE_NORM = t_prestations.code_original + WHERE type_facture = 'E' AND + SUPPRIME <> '1' AND + SAISIE.CODE_PREST <> 'GHS' AND + PRESTATION.TYPE_PREST <> 'H' AND + FACT_LIGNE.N_SAISIE IS NULL AND + SAISIE.QTE > 1 AND + date(SAISIE.D_FIN) - date(SAISIE.D_DEB) + 1 = SAISIE.QTE + ; + + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + p_factures.no_facture, + p_calendrier.date AS date_debut, + p_calendrier.date AS date_fin, + 1 * SAISIE.COEFF AS nb_rubrique, + 1 AS coefficient, + t_rubriques_facturation.oid AS rubrique_facturation_id, + t_prestations.oid AS prestation_id, + COALESCE(CASE WHEN DET_TIPS.PU <> 0 THEN DET_TIPS.PU ELSE DET_TIPS.PU_TTC_TIPS END, PRIX_PREST, 0) AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id + FROM prod_qsp.SAISIE + LEFT JOIN prod_qsp.DET_TIPS ON DET_TIPS.N_SAISIE = SAISIE.N_SAISIE + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date(SAISIE.D_DEB) AND date(SAISIE.D_FIN - interval '1 day') + LEFT JOIN w_PRIX_PREST ON + SAISIE.N_DIS = w_PRIX_PREST.N_DIS AND + SAISIE.CODE_PREST = w_PRIX_PREST.CODE_PREST AND + date(SAISIE.D_DEB) BETWEEN w_PRIX_PREST.DATE_PRIX AND w_PRIX_PREST.DATE_PRIX_fin + LEFT JOIN prod_qsp.FACT_LIGNE ON FACT_LIGNE.N_SAISIE = SAISIE.N_SAISIE AND + ( + NUM_FACT_AMO <> 0 OR + NUM_FACT_AMC <> 0 OR + NUM_FACT_ASS <> 0 + ) + JOIN activite[PX].p_factures ON SAISIE.N_HOSPI = p_factures.no_sejour AND + p_calendrier.date BETWEEN date_debut AND date_fin + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.code_original AND p_sejours.etat = '' + JOIN prod_qsp.PRESTATION ON SAISIE.CODE_PREST = PRESTATION.CODE_PREST + LEFT JOIN activite[PX].t_rubriques_facturation ON PRESTATION.CODE_PREST = t_rubriques_facturation.code_original + LEFT JOIN activite.t_prestations ON PRESTATION.CODE_NORM = t_prestations.code_original + WHERE type_facture = 'E' AND + SUPPRIME <> '1' AND + SAISIE.CODE_PREST <> 'GHS' AND + PRESTATION.TYPE_PREST <> 'H' AND + FACT_LIGNE.N_SAISIE IS NULL AND + SAISIE.QTE > 1 AND + date(SAISIE.D_FIN) - date(SAISIE.D_DEB) = SAISIE.QTE + + + + ]]> + + + + 0 THEN FACT_LIGNE.AMO ELSE 0 END AS AMO, + CASE WHEN FACT_LIGNE.NUM_FACT_AMC <> 0 THEN FACT_LIGNE.AMC ELSE 0 END AS AMC, + CASE WHEN FACT_LIGNE.NUM_FACT_ASS <> 0 THEN FACT_LIGNE.ASS ELSE 0 END AS ASS, + CASE WHEN FACT_LIGNE.NUM_FACT_AMO <> 0 THEN COALESCE(FACT_LIGNE.SOL_AMO,0) ELSE 0 END AS SOL_AMO, + CASE WHEN FACT_LIGNE.NUM_FACT_AMC <> 0 THEN COALESCE(FACT_LIGNE.SOL_AMC,0) ELSE 0 END AS SOL_AMC, + CASE WHEN FACT_LIGNE.NUM_FACT_ASS <> 0 THEN COALESCE(FACT_LIGNE.SOL_ASS,0) ELSE 0 END AS SOL_ASS, + FACT_LIGNE.PU, + FACT_LIGNE.TAUX, + FACT_LIGNE.ENC_AMO, + FACT_LIGNE.ENC_AMC, + FACT_LIGNE.ENC_ASS, + SAISIE.CODE_PREST, + PRESTATION.TYPE_PREST, + PRESTATION.CODE_NORM, + COALESCE(SAISIE.C_PRAT,'') AS C_PRAT, + SAISIE.D_DEB, + GREATEST(SAISIE.D_FIN,SAISIE.D_DEB) AS D_FIN, + SAISIE.QTE, + SAISIE.COEFF, + SAISIE.MT_DP, + SAISIE.SUPPRIME, + SAISIE.GRATUIT, + SAISIE.N_GHS, + CASE WHEN SAISIE.COEFF_MCO = 0 THEN 1 ELSE COEFF_MCO END, + SAISIE.TAUX_ASS, + SAISIE.TAUX_AMC, + COALESCE(DOSSIER_CCAM.CODE_ACTE,SAISIE.CODE_PREST) AS CODE_ACTE, + DOSSIER_CCAM.EXT_DOC, + DOSSIER_CCAM.CODE_ACTIV, + DOSSIER_CCAM.PHASE_TRAIT, + DOSSIER_CCAM.MODIF_1, + DOSSIER_CCAM.MODIF_2, + DOSSIER_CCAM.MODIF_3, + DOSSIER_CCAM.MODIF_4, + DOSSIER_CCAM.ASSOC_NONP, + DOSSIER_CCAM.REMB_EXCEPT, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid::bigint, 0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid::bigint, 0) AS prestation_id, + COALESCE(t_medecins_administratifs.oid::bigint, 0) AS medecin_facture_id, + COALESCE(t_medecins_administratifs.oid::bigint, 0) AS medecin_comptabilise_id, + COALESCE(t_actes.oid::bigint, 0) AS acte_id, + COALESCE(t_medecins_administratifs.est_medecin_salarie, '0') AS est_medecin_salarie, + COALESCE(w_HOS_DIS.N_DIS,0) AS N_DIS, + 0::bigint AS compte_produit_id, + CASE WHEN COMPTE <> 0 THEN to_char(PRESTATION.COMPTE,'FM9999999999') ELSE '' END AS COMPTE + + FROM prod_qsp.FACT_LIGNE + JOIN W_FACTURE_QSP ON (FACT_LIGNE.NUM_FACT_AMO = W_FACTURE_QSP.NUM_FACT OR FACT_LIGNE.NUM_FACT_AMC = W_FACTURE_QSP.NUM_FACT OR FACT_LIGNE.NUM_FACT_ASS = W_FACTURE_QSP.NUM_FACT) + JOIN prod_qsp.SAISIE ON SAISIE.N_SAISIE = fact_ligne.N_SAISIE + LEFT JOIN w_HOS_DIS ON FACT_LIGNE.N_HOSPI = w_HOS_DIS.N_HOSPI + JOIN prod_qsp.PRESTATION ON SAISIE.CODE_PREST = PRESTATION.CODE_PREST + LEFT JOIN activite[PX].t_rubriques_facturation ON PRESTATION.CODE_PREST = t_rubriques_facturation.code_original + LEFT JOIN activite.t_prestations ON PRESTATION.CODE_NORM = t_prestations.code_original + LEFT JOIN prod_qsp.SAISIE_CCAM ON FACT_LIGNE.N_SAISIE = SAISIE_CCAM.N_SAISIE + LEFT JOIN prod_qsp.DOSSIER_CCAM ON SAISIE_CCAM.N_UNIQUE_CCAM = DOSSIER_CCAM.N_UNIQUE_CCAM AND SAISIE_CCAM.N_SEQ_CCAM = DOSSIER_CCAM.N_SEQ_CCAM AND + SAISIE_CCAM.N_HOSPI = DOSSIER_CCAM.NDOSSIER + LEFT JOIN activite[PX].t_medecins_administratifs ON SAISIE.C_PRAT = t_medecins_administratifs.code_original + LEFT JOIN base.t_actes ON (substring(COALESCE(DOSSIER_CCAM.CODE_ACTE,SAISIE.CODE_PREST), 1, 7) = t_actes.code); + + CREATE INDEX w_FACT_LIGNE_I1 + ON w_FACT_LIGNE + USING btree + (C_PRAT); + + CREATE INDEX w_FACT_LIGNE_I2 + ON w_FACT_LIGNE + USING btree + (CODE_PREST); + + CREATE INDEX w_FACT_LIGNE_I3 + ON w_FACT_LIGNE + USING btree + (N_HOSPI); + + UPDATE w_FACT_LIGNE + SET CODE_NORM = CODE_PREST, + prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE (CODE_NORM IS NULL OR CODE_NORM = '') AND + CODE_PREST = t_prestations.code_original + ; + + + + -- Compte produit + UPDATE w_FACT_LIGNE + SET COMPTE = PRESTATION_DISCIPLINE.COMPTE + FROM prod_qsp.PRESTATION_DISCIPLINE + WHERE w_FACT_LIGNE.CODE_PREST = PRESTATION_DISCIPLINE.CODE_PREST AND + w_FACT_LIGNE.N_DIS = PRESTATION_DISCIPLINE.N_DIS AND + PRESTATION_DISCIPLINE.COMPTE > 0; + + + UPDATE w_FACT_LIGNE + SET COMPTE = PRESTATION_GHS_GHS.COMPTE + FROM prod_qsp.PRESTATION_GHS_GHS + WHERE w_FACT_LIGNE.CODE_PREST = PRESTATION_GHS_GHS.CODE_PREST AND + w_FACT_LIGNE.N_GHS = PRESTATION_GHS_GHS.GHS AND + PRESTATION_GHS_GHS.COMPTE > 0; + + + UPDATE w_FACT_LIGNE + SET compte_produit_id = t_compte.oid + FROM activite[PX].t_compte + WHERE t_compte.code = w_FACT_LIGNE.COMPTE AND + w_FACT_LIGNE.COMPTE <> ''; + + -- Lieu + UPDATE w_FACT_LIGNE + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_mouvements_sejour + WHERE + w_FACT_LIGNE.N_HOSPI = p_mouvements_sejour.no_sejour AND + date(W_FACT_LIGNE.D_FIN) = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + w_FACT_LIGNE.lieu_id <> p_mouvements_sejour.lieu_id; + + + -- Mise à jour totaux comptabilisés pour médecins salariés + DROP TABLE IF EXISTS W_FACT_LIGNE_SALARIE; + CREATE TEMP TABLE W_FACT_LIGNE_SALARIE AS + SELECT + W_FACT_LIGNE.no_facture, + SUM(W_FACT_LIGNE.AMO) AS montant_comptabilise + FROM w_FACT_LIGNE + WHERE NUM_FACT_AMO <> 0 AND AMO <> 0 AND + est_medecin_salarie = '1' + GROUP BY 1; + + CREATE INDEX W_FACT_LIGNE_SALARIE_I1 + ON W_FACT_LIGNE_SALARIE + USING btree + (no_facture); + + UPDATE activite[PX].p_factures + SET + montant_comptabilise_c = montant_comptabilise_c + W_FACT_LIGNE_SALARIE.montant_comptabilise, + montant_comptabilise_h = montant_comptabilise_h - W_FACT_LIGNE_SALARIE.montant_comptabilise, + montant_comptabilise_1_c = montant_comptabilise_1_c + W_FACT_LIGNE_SALARIE.montant_comptabilise, + montant_comptabilise_1_h = montant_comptabilise_1_h - W_FACT_LIGNE_SALARIE.montant_comptabilise + FROM W_FACT_LIGNE_SALARIE + WHERE W_FACT_LIGNE_SALARIE.no_facture = p_factures.no_facture; + + + DROP TABLE IF EXISTS W_FACT_LIGNE_SALARIE; + CREATE TEMP TABLE W_FACT_LIGNE_SALARIE AS + SELECT + W_FACT_LIGNE.no_facture, + SUM(W_FACT_LIGNE.AMC) AS montant_comptabilise + FROM w_FACT_LIGNE + WHERE NUM_FACT_AMC <> 0 AND AMC <> 0 AND + est_medecin_salarie = '1' + GROUP BY 1; + + CREATE INDEX W_FACT_LIGNE_SALARIE_I1 + ON W_FACT_LIGNE_SALARIE + USING btree + (no_facture); + + UPDATE activite[PX].p_factures + SET + montant_comptabilise_c = montant_comptabilise_c + W_FACT_LIGNE_SALARIE.montant_comptabilise, + montant_comptabilise_h = montant_comptabilise_h - W_FACT_LIGNE_SALARIE.montant_comptabilise, + montant_comptabilise_2_c = montant_comptabilise_2_c + W_FACT_LIGNE_SALARIE.montant_comptabilise, + montant_comptabilise_2_h = montant_comptabilise_2_h - W_FACT_LIGNE_SALARIE.montant_comptabilise + FROM W_FACT_LIGNE_SALARIE + WHERE W_FACT_LIGNE_SALARIE.no_facture = p_factures.no_facture; + + + DROP TABLE IF EXISTS W_FACT_LIGNE_SALARIE; + CREATE TEMP TABLE W_FACT_LIGNE_SALARIE AS + SELECT + W_FACT_LIGNE.no_facture, + SUM(W_FACT_LIGNE.ASS) AS montant_comptabilise + FROM w_FACT_LIGNE + WHERE NUM_FACT_ASS <> 0 AND ASS <> 0 AND + est_medecin_salarie = '1' + GROUP BY 1; + + CREATE INDEX W_FACT_LIGNE_SALARIE_I1 + ON W_FACT_LIGNE_SALARIE + USING btree + (no_facture); + + UPDATE activite[PX].p_factures + SET + montant_comptabilise_c = montant_comptabilise_c + W_FACT_LIGNE_SALARIE.montant_comptabilise, + montant_comptabilise_h = montant_comptabilise_h - W_FACT_LIGNE_SALARIE.montant_comptabilise, + montant_comptabilise_0_c = montant_comptabilise_0_c + W_FACT_LIGNE_SALARIE.montant_comptabilise, + montant_comptabilise_0_h = montant_comptabilise_0_h - W_FACT_LIGNE_SALARIE.montant_comptabilise + FROM W_FACT_LIGNE_SALARIE + WHERE W_FACT_LIGNE_SALARIE.no_facture = p_factures.no_facture; + + + + + + + -- Génération lignes détail + + DROP TABLE IF EXISTS W_FACT_LIGNE_C_1; + CREATE TEMP TABLE W_FACT_LIGNE_C_1 AS + SELECT + W_FACT_LIGNE.N_HOSPI, + W_FACT_LIGNE.date_vente, + W_FACT_LIGNE.lieu_id, + W_FACT_LIGNE.no_facture, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + W_FACT_LIGNE.D_DEB AS date_debut, + W_FACT_LIGNE.D_FIN AS date_fin, + CASE WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE < 0 AND W_FACT_LIGNE.CODE_NORM = 'GHS' THEN -1 + WHEN W_FACT_LIGNE.ETAT <> 3 AND W_FACT_LIGNE.CODE_NORM = 'GHS' THEN 1 + WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE > 0 THEN 0 - W_FACT_LIGNE.QTE + ELSE W_FACT_LIGNE.QTE END AS nb_rubrique, + CASE WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE < 0 AND W_FACT_LIGNE.CODE_NORM = 'GHS' THEN -1 + WHEN W_FACT_LIGNE.ETAT <> 3 AND W_FACT_LIGNE.CODE_NORM = 'GHS' THEN 1 + WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE > 0 THEN 0 - W_FACT_LIGNE.QTE + ELSE W_FACT_LIGNE.QTE END AS nb_prestations, + W_FACT_LIGNE.COEFF AS coefficient, + W_FACT_LIGNE.GRATUIT, + W_FACT_LIGNE.N_GHS, + W_FACT_LIGNE.COEFF_MCO AS coefficient_mco, + W_FACT_LIGNE.PU AS prix_unitaire, + W_FACT_LIGNE.TAUX AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_0, + CASE WHEN est_medecin_salarie <> '1' THEN W_FACT_LIGNE.AMO ELSE 0 END AS montant_facture, + CASE WHEN est_medecin_salarie <> '1' THEN W_FACT_LIGNE.AMO ELSE 0 END AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_0, + CASE WHEN W_FACT_LIGNE.SOL_AMO <> 2 THEN W_FACT_LIGNE.AMO ELSE 0 END AS montant_comptabilise, + CASE WHEN W_FACT_LIGNE.SOL_AMO <> 2 THEN W_FACT_LIGNE.AMO ELSE 0 END AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_0, + W_FACT_LIGNE.ENC_AMO AS montant_regle_1, + 0::numeric AS montant_regle_2, + 0::numeric AS montant_regle_0, + 0::numeric AS rubrique_facture_id + + FROM w_FACT_LIGNE + WHERE NUM_FACT_AMO <> 0 + AND W_FACT_LIGNE.AMO <> 0 + AND (W_FACT_LIGNE.TYPE_PREST <> 'H' OR est_medecin_salarie = '1'); + + DROP TABLE IF EXISTS W_FACT_LIGNE_C_2; + + CREATE TEMP TABLE W_FACT_LIGNE_C_2 AS + + SELECT + W_FACT_LIGNE.N_HOSPI, + W_FACT_LIGNE.date_vente, + W_FACT_LIGNE.lieu_id, + W_FACT_LIGNE.no_facture, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + W_FACT_LIGNE.D_DEB AS date_debut, + W_FACT_LIGNE.D_FIN AS date_fin, + CASE + WHEN AMO <> 0 THEN 0 + WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE < 0 AND W_FACT_LIGNE.CODE_NORM = 'GHS' THEN -1 + WHEN W_FACT_LIGNE.ETAT <> 3 AND W_FACT_LIGNE.CODE_NORM = 'GHS' THEN 1 + WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE > 0 THEN 0 - W_FACT_LIGNE.QTE + ELSE W_FACT_LIGNE.QTE END AS nb_rubrique, + CASE + WHEN AMO <> 0 THEN 0 + WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE < 0 AND W_FACT_LIGNE.CODE_NORM = 'GHS' THEN -1 + WHEN W_FACT_LIGNE.ETAT <> 3 AND W_FACT_LIGNE.CODE_NORM = 'GHS' THEN 1 + WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE > 0 THEN 0 - W_FACT_LIGNE.QTE + ELSE W_FACT_LIGNE.QTE END AS nb_prestations, + W_FACT_LIGNE.COEFF AS coefficient, + W_FACT_LIGNE.GRATUIT, + W_FACT_LIGNE.N_GHS, + W_FACT_LIGNE.COEFF_MCO AS coefficient_mco, + W_FACT_LIGNE.PU AS prix_unitaire, + 0::numeric AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_0, + CASE WHEN est_medecin_salarie <> '1' THEN W_FACT_LIGNE.AMC ELSE 0 END AS montant_facture, + 0::numeric AS montant_facture_1, + CASE WHEN est_medecin_salarie <> '1' THEN W_FACT_LIGNE.AMC ELSE 0 END AS montant_facture_2, + 0::numeric AS montant_facture_0, + CASE WHEN W_FACT_LIGNE.SOL_AMC <> 2 THEN W_FACT_LIGNE.AMC ELSE 0 END AS montant_comptabilise, + 0::numeric AS montant_comptabilise_1, + CASE WHEN W_FACT_LIGNE.SOL_AMC <> 2 THEN W_FACT_LIGNE.AMC ELSE 0 END AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_regle_1, + W_FACT_LIGNE.ENC_AMC AS montant_regle_2, + 0::numeric AS montant_regle_0, + 0::numeric AS rubrique_facture_id + + FROM W_FACT_LIGNE + WHERE NUM_FACT_AMC <> 0 + AND W_FACT_LIGNE.AMC <> 0 + AND (W_FACT_LIGNE.TYPE_PREST <> 'H' OR est_medecin_salarie = '1'); + + DROP TABLE IF EXISTS W_FACT_LIGNE_C_0; + + CREATE TEMP TABLE W_FACT_LIGNE_C_0 AS + + SELECT + W_FACT_LIGNE.N_HOSPI, + W_FACT_LIGNE.date_vente, + W_FACT_LIGNE.lieu_id, + W_FACT_LIGNE.no_facture, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + W_FACT_LIGNE.D_DEB AS date_debut, + W_FACT_LIGNE.D_FIN AS date_fin, + CASE + WHEN AMO <> 0 THEN 0 + WHEN AMC <> 0 THEN 0 + WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE < 0 AND W_FACT_LIGNE.CODE_NORM = 'GHS' THEN -1 + WHEN W_FACT_LIGNE.ETAT <> 3 AND W_FACT_LIGNE.CODE_NORM = 'GHS' THEN 1 + WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE > 0 THEN 0 - W_FACT_LIGNE.QTE + ELSE W_FACT_LIGNE.QTE END AS nb_rubrique, + CASE + WHEN AMO <> 0 THEN 0 + WHEN AMC <> 0 THEN 0 + WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE < 0 AND W_FACT_LIGNE.CODE_NORM = 'GHS' THEN -1 + WHEN W_FACT_LIGNE.ETAT <> 3 AND W_FACT_LIGNE.CODE_NORM = 'GHS' THEN 1 + WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE > 0 THEN 0 - W_FACT_LIGNE.QTE + ELSE W_FACT_LIGNE.QTE END AS nb_prestations, + W_FACT_LIGNE.COEFF AS coefficient, + W_FACT_LIGNE.GRATUIT, + W_FACT_LIGNE.N_GHS, + W_FACT_LIGNE.COEFF_MCO AS coefficient_mco, + W_FACT_LIGNE.PU AS prix_unitaire, + 0::numeric AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_0, + CASE WHEN est_medecin_salarie <> '1' THEN W_FACT_LIGNE.ASS ELSE 0 END AS montant_facture, + 0::numeric AS montant_facture_1, + 0::numeric AS montant_facture_2, + CASE WHEN est_medecin_salarie <> '1' THEN W_FACT_LIGNE.ASS ELSE 0 END AS montant_facture_0, + CASE WHEN W_FACT_LIGNE.SOL_ASS <> 2 THEN W_FACT_LIGNE.ASS ELSE 0 END AS montant_comptabilise, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + CASE WHEN W_FACT_LIGNE.SOL_ASS <> 2 THEN W_FACT_LIGNE.ASS ELSE 0 END AS montant_comptabilise_0, + 0::numeric AS montant_regle_1, + 0::numeric AS montant_regle_2, + W_FACT_LIGNE.ENC_ASS AS montant_regle_0, + 0::numeric AS rubrique_facture_id + + FROM W_FACT_LIGNE + WHERE NUM_FACT_ASS <> 0 + AND W_FACT_LIGNE.ASS <> 0 + AND (W_FACT_LIGNE.TYPE_PREST <> 'H' OR est_medecin_salarie = '1'); + + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('W_FACT_LIGNE_C_1'); + SELECT activite[PX].cti_reorganize_rubrique_facture_c('W_FACT_LIGNE_C_2'); + SELECT activite[PX].cti_reorganize_rubrique_facture_c('W_FACT_LIGNE_C_0'); + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_8'); + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22) + + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestations, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + 0 AS montant_facture_22, + taux_0, + taux_1, + taux_2, + 0 AS taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + 0 AS montant_comptabilise_22, + + 0, + 0, + 0, + 0, + 0 + + FROM W_FACT_LIGNE_C_1 + + UNION ALL + + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestations, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + 0 AS montant_facture_22, + taux_0, + taux_1, + taux_2, + 0 AS taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + 0 AS montant_comptabilise_22, + + 0, + 0, + 0, + 0, + 0 + + FROM W_FACT_LIGNE_C_2 + + UNION ALL + + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestations, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + 0 AS montant_facture_22, + taux_0, + taux_1, + taux_2, + 0 AS taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + 0 AS montant_comptabilise_22, + + 0, + 0, + 0, + 0, + 0 + + FROM W_FACT_LIGNE_C_0; + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_8'); + + + + -- Eclatement des supplements par jour + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + p_factures_lignes_c.CTID AS from_CTID, + t_prestations.code AS prestation_code, + date(p_sejours.date_entree) AS date_debut_ghs, + date(p_sejours.date_sortie - interval '1 day') AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN t_prestations.code = 'GHS' THEN date(date_entree + interval '1 day') ELSE date(p_factures_lignes_c.date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN t_prestations.code = 'GHS' THEN date(p_sejours.date_sortie - interval '1 day') ELSE date(p_factures_lignes_c.date_debut + ((ABS(nb_prestation)-1) || ' day')::interval) END AS date_fin_det, + ABS(CASE WHEN t_prestations.code = 'GHS' THEN date(date_sortie) - date(date_entree) ELSE nb_prestation END) AS nb_det, + p_factures_lignes_c.* + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + ( + code IN ('PJ', 'PJ1', 'PJ2', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (t_prestations.code = 'GHS' AND date(date_sortie) - date(date_entree) > 1)) ; + + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM activite[PX].p_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture AND + w_factures_lignes_sup_c.prestation_code = 'GHS'; + + CREATE INDEX w_factures_lignes_sup_c_i1 + ON w_factures_lignes_sup_c + USING btree + (date_debut); + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + from_CTID, + no_facture, + date AS date_debut, + date AS date_fin, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + round(montant_facture / ABS(nb_det),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + round(montant_comptabilise / ABS(nb_det),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_det),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_det),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_det),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_det),2) AS montant_comptabilise_22, + round(montant_encours / ABS(nb_det),2) AS montant_encours, + round(montant_encours_0 / ABS(nb_det),2) AS montant_encours_0, + round(montant_encours_1 / ABS(nb_det),2) AS montant_encours_1, + round(montant_encours_2 / ABS(nb_det),2) AS montant_encours_2, + round(montant_encours_22 / ABS(nb_det),2) AS montant_encours_22, + round(montant_facture_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_actes_inclus_dans_sejour, + round(montant_facture_0_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_0_actes_inclus_dans_sejour, + round(montant_facture_1_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_1_actes_inclus_dans_sejour, + round(montant_facture_2_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_2_actes_inclus_dans_sejour, + round(montant_facture_22_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + round(montant_comptabilise_budget_global_1 / ABS(nb_det),2) AS montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_det AND date_fin_det + ; + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT from_CTID, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + + UPDATE activite[PX].p_factures_lignes_c + SET + date_fin = p_factures_lignes_c.date_debut, + nb_rubrique = p_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_sup_tot.nb_rubrique, + nb_prestation = p_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_sup_tot.nb_prestation, + montant_facture = p_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = p_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = p_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = p_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = p_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = p_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = p_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = p_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = p_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = p_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22, + montant_encours = p_factures_lignes_c.montant_encours - w_factures_lignes_sup_c_sup_tot.montant_encours, + montant_encours_0 = p_factures_lignes_c.montant_encours_0 - w_factures_lignes_sup_c_sup_tot.montant_encours_0, + montant_encours_1 = p_factures_lignes_c.montant_encours_1 - w_factures_lignes_sup_c_sup_tot.montant_encours_1, + montant_encours_2 = p_factures_lignes_c.montant_encours_2 - w_factures_lignes_sup_c_sup_tot.montant_encours_2, + montant_encours_22 = p_factures_lignes_c.montant_encours_22 - w_factures_lignes_sup_c_sup_tot.montant_encours_22, + montant_facture_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 = p_factures_lignes_c.montant_comptabilise_budget_global_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup_tot + WHERE p_factures_lignes_c.CTID = from_CTID; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_sup_c_sup'); + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c_sup; + + + + UPDATE activite[PX].p_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_factures, activite[PX].p_mouvements_sejour + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + activite[PX].p_factures_lignes_c.date_debut = p_mouvements_sejour.date AND + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_sorties_directes = 1) AND + p_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_5'); + + ]]> + + + + + + 0 + GROUP BY 1; + + CREATE INDEX w_VENTIL_PAIEMENT_SALARIE_I1 + ON w_VENTIL_PAIEMENT_SALARIE + USING btree + (no_facture); + + UPDATE activite[PX].p_factures + SET + montant_regle_c = montant_regle_c + w_VENTIL_PAIEMENT_SALARIE.montant_regle, + montant_regle_h = montant_regle_h - w_VENTIL_PAIEMENT_SALARIE.montant_regle, + montant_regle_1_c = montant_regle_1_c + w_VENTIL_PAIEMENT_SALARIE.montant_regle_1, + montant_regle_1_h = montant_regle_1_h - w_VENTIL_PAIEMENT_SALARIE.montant_regle_1, + montant_regle_2_c = montant_regle_2_c + w_VENTIL_PAIEMENT_SALARIE.montant_regle_2, + montant_regle_2_h = montant_regle_2_h - w_VENTIL_PAIEMENT_SALARIE.montant_regle_2, + montant_regle_0_c = montant_regle_0_c + w_VENTIL_PAIEMENT_SALARIE.montant_regle_0, + montant_regle_0_h = montant_regle_0_h - w_VENTIL_PAIEMENT_SALARIE.montant_regle_0 + FROM w_VENTIL_PAIEMENT_SALARIE + WHERE w_VENTIL_PAIEMENT_SALARIE.no_facture = p_factures.no_facture; + + -- génération règlements + + DROP TABLE IF EXISTS w_VENTIL_PAIEMENT_C; + + CREATE TEMP TABLE w_VENTIL_PAIEMENT_C AS + SELECT + W_FACTURE_QSP.no_facture, + date(DT_VENT) AS date_comptable, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_comptabilisee_id, + COALESCE(t_prestations.oid,0) AS prestation_id, + 0 AS montant_comptabilise, + 0 AS montant_comptabilise_0, + 0 AS montant_comptabilise_1, + 0 AS montant_comptabilise_2, + 0 AS montant_comptabilise_22, + SUM(DET_VENT.VERSE_CONV + DET_VENT.VERSE_DP) AS montant_regle, + SUM(CASE WHEN tiers = '3' THEN DET_VENT.VERSE_CONV + DET_VENT.VERSE_DP ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN tiers = '1' THEN DET_VENT.VERSE_CONV + DET_VENT.VERSE_DP ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN tiers = '2' THEN DET_VENT.VERSE_CONV + DET_VENT.VERSE_DP ELSE 0 END) AS montant_regle_2, + 0 AS montant_regle_22 + FROM prod_qsp.VENTIL_PAIEMENT + JOIN prod_qsp.DET_VENT ON VENTIL_PAIEMENT.PAIEMENT_LIG = DET_VENT.PAIEMENT_LIG + JOIN prod_qsp.SAISIE ON DET_VENT.N_SAISIE = SAISIE.N_SAISIE + JOIN W_FACTURE_QSP ON W_FACTURE_QSP.NUM_FACT = VENTIL_PAIEMENT.NUM_FACT + JOIN prod_qsp.PRESTATION ON SAISIE.CODE_PREST = PRESTATION.CODE_PREST + LEFT JOIN activite[PX].t_rubriques_facturation ON PRESTATION.CODE_PREST = t_rubriques_facturation.code_original + LEFT JOIN activite.t_prestations ON PRESTATION.CODE_NORM = t_prestations.code_original + LEFT JOIN activite[PX].t_medecins_administratifs ON SAISIE.C_PRAT = t_medecins_administratifs.code_original + WHERE (PRESTATION.TYPE_PREST <> 'H' OR COALESCE(t_medecins_administratifs.est_medecin_salarie,'0') = '1') AND + TRANS_CPTA <> 0 + GROUP BY 1,2,3,4; + + CREATE INDEX w_VENTIL_PAIEMENT_C_i1 + ON w_VENTIL_PAIEMENT_C + USING btree + (no_facture, date_comptable, rubrique_comptabilisee_id, prestation_id); + + + + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + w_VENTIL_PAIEMENT_C.no_facture, + w_VENTIL_PAIEMENT_C.date_comptable, + w_VENTIL_PAIEMENT_C.rubrique_comptabilisee_id, + w_VENTIL_PAIEMENT_C.prestation_id, + 0, + 0, + 0, + 0, + 0, + w_VENTIL_PAIEMENT_C.montant_regle, + w_VENTIL_PAIEMENT_C.montant_regle_0, + w_VENTIL_PAIEMENT_C.montant_regle_1, + w_VENTIL_PAIEMENT_C.montant_regle_2, + w_VENTIL_PAIEMENT_C.montant_regle_22 + FROM w_VENTIL_PAIEMENT_C + WHERE w_VENTIL_PAIEMENT_C.date_comptable IS NOT NULL; + + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_avoir) + SELECT + p_factures_soldes_c.no_facture, + date_od_avoir, + rubrique_comptabilisee_id, + prestation_id, + 0, + 0, + 0, + 0, + 0, + p_factures_soldes_c.montant_comptabilise, + p_factures_soldes_c.montant_comptabilise_0, + p_factures_soldes_c.montant_comptabilise_1, + p_factures_soldes_c.montant_comptabilise_2, + p_factures_soldes_c.montant_comptabilise_22, + '1' + FROM activite[PX].p_factures_soldes_c + JOIN w_ods_avoir ON p_factures_soldes_c.no_facture = w_ods_avoir.no_facture + WHERE p_factures_soldes_c.montant_comptabilise <> 0; + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_avoir) + SELECT + p_factures_soldes_c.no_facture, + date_od_avoir, + rubrique_comptabilisee_id, + prestation_id, + 0, + 0, + 0, + 0, + 0, + p_factures_soldes_c.montant_comptabilise, + p_factures_soldes_c.montant_comptabilise_0, + p_factures_soldes_c.montant_comptabilise_1, + p_factures_soldes_c.montant_comptabilise_2, + p_factures_soldes_c.montant_comptabilise_22, + '1' + FROM activite[PX].p_factures_soldes_c JOIN w_ods_avoir ON p_factures_soldes_c.no_facture = w_ods_avoir.no_facture_od_avoir + WHERE p_factures_soldes_c.montant_comptabilise <> 0; + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_1'); + + + + -- Correction avoirs qui ne sont pas des od + + DROP TABLE IF EXISTS w_factures_soldes_c_reg; + CREATE TEMP TABLE w_factures_soldes_c_reg AS + SELECT p_factures.no_sejour, p_factures.no_facture, no_facture_od_avoir, + SUM(montant_regle) AS montant_regle_s, + SUM(montant_regle_1) AS montant_regle_1_s, + SUM(montant_regle_2) AS montant_regle_2_s, + SUM(montant_regle_0) AS montant_regle_0_s, + MAX(p_factures.montant_regle_c) AS montant_regle_f , + MAX(CASE WHEN od_avoir = '1' THEN date_comptable ELSE NULL END) AS date_comptable_s + FROM activite[PX].p_factures_soldes_c + JOIN activite[PX].p_factures ON p_factures_soldes_c.no_facture = p_factures.no_facture + GROUP BY 1,2,3 + HAVING SUM(montant_regle) <> 0 AND SUM(montant_regle) = MAX(p_factures.montant_regle_c) * 2 ; + + CREATE INDEX w_factures_soldes_c_reg_i1 + ON w_factures_soldes_c_reg + USING btree + (no_facture); + + UPDATE activite[PX].p_factures_soldes_c + SET montant_regle = 0, + montant_regle_1 = 0, + montant_regle_2 = 0, + montant_regle_0 = 0 + FROM w_factures_soldes_c_reg + WHERE p_factures_soldes_c.no_facture = w_factures_soldes_c_reg.no_facture AND + p_factures_soldes_c.date_comptable = w_factures_soldes_c_reg.date_comptable_s AND + od_avoir = '1' AND + montant_regle_s = montant_regle_f * 2; + + + UPDATE activite[PX].p_factures_soldes_c + SET od_avoir = '0' + FROM w_factures_soldes_c_reg + WHERE p_factures_soldes_c.no_facture = w_factures_soldes_c_reg.no_facture_od_avoir AND + p_factures_soldes_c.date_comptable = w_factures_soldes_c_reg.date_comptable_s AND + od_avoir = '1' AND + montant_regle_s = montant_regle_f * 2; + + -- Correction discordance total réglé / détail régle + + DROP TABLE IF EXISTS w_factures_soldes_c_ecartreg; + CREATE TEMP TABLE w_factures_soldes_c_ecartreg AS + SELECT p_factures.no_sejour, p_factures.no_facture, + SUM(montant_regle) AS montant_regle_s, + SUM(montant_regle_1) AS montant_regle_1_s, + SUM(montant_regle_2) AS montant_regle_2_s, + SUM(montant_regle_0) AS montant_regle_0_s, + MAX(p_factures.montant_regle_c) AS montant_regle_f , + MAX(p_factures.montant_regle_1_c) AS montant_regle_1_f , + MAX(p_factures.montant_regle_2_c) AS montant_regle_2_f , + MAX(p_factures.montant_regle_0_c) AS montant_regle_0_f , + COALESCE(MAX(CASE WHEN montant_regle <> 0 THEN date_comptable ELSE NULL END),MAX(date_comptable)) AS date_comptable + FROM activite[PX].p_factures_soldes_c + JOIN activite[PX].p_factures ON p_factures_soldes_c.no_facture = p_factures.no_facture + GROUP BY 1,2 + HAVING SUM(montant_regle) <> MAX(p_factures.montant_regle_c); + + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + no_facture, + date_comptable, + 0::bigint AS rubrique_comptabilisee_id, + 0::bigint AS prestation_id, + 0, + 0, + 0, + 0, + 0, + montant_regle_f - montant_regle_s AS montant_regle, + montant_regle_1_f - montant_regle_1_s AS montant_regle_0, + montant_regle_2_f - montant_regle_2_s AS montant_regle_1, + montant_regle_0_f - montant_regle_0_s AS montant_regle_2, + 0::numeric AS montant_regle_22 + FROM w_factures_soldes_c_ecartreg + WHERE date_comptable IS NOT NULL; + + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_8'); + + + + ]]> + + + + + + + + '' AND t_actes.oid is NULL + GROUP BY 1; + + + DROP TABLE IF EXISTS W_FACT_LIGNE_H_1; + + CREATE TEMP TABLE W_FACT_LIGNE_H_1 AS + SELECT + W_FACT_LIGNE.N_HOSPI, + date_vente, + lieu_id, + no_facture, + W_FACT_LIGNE.ETAT, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + medecin_facture_id, + medecin_comptabilise_id, + + acte_id, + extract('hour' FROM W_FACT_LIGNE.D_DEB) AS heure_debut, + W_FACT_LIGNE.PHASE_TRAIT AS phase_ccam, + W_FACT_LIGNE.CODE_ACTIV AS activite_ccam, + W_FACT_LIGNE.EXT_DOC AS extension_ccam, + W_FACT_LIGNE.MODIF_1 AS modificateur_ccam_1, + W_FACT_LIGNE.MODIF_2 AS modificateur_ccam_2, + W_FACT_LIGNE.MODIF_3 AS modificateur_ccam_3, + W_FACT_LIGNE.MODIF_4 AS modificateur_ccam_4, + + date(W_FACT_LIGNE.D_DEB) AS date_debut, + date(W_FACT_LIGNE.D_DEB) AS date_fin, + CASE WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE > 0 THEN 0 - W_FACT_LIGNE.QTE + ELSE W_FACT_LIGNE.QTE END AS nb_rubrique, + CASE WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE > 0 THEN 0 - W_FACT_LIGNE.QTE + ELSE W_FACT_LIGNE.QTE END AS nb_prestations, + W_FACT_LIGNE.COEFF AS coefficient, + W_FACT_LIGNE.GRATUIT, + W_FACT_LIGNE.N_GHS, + W_FACT_LIGNE.COEFF_MCO AS coefficient_mco, + W_FACT_LIGNE.PU AS prix_unitaire, + + CASE WHEN amc = 0 AND ass = 0 AND W_FACT_LIGNE.etat <> 3 THEN W_FACT_LIGNE.MT_DP + WHEN amc = 0 AND ass = 0 AND W_FACT_LIGNE.etat = 3 THEN 0 - W_FACT_LIGNE.MT_DP + ELSE 0 END AS montant_depassement, + + W_FACT_LIGNE.TAUX AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_0, + W_FACT_LIGNE.AMO AS montant_facture, + W_FACT_LIGNE.AMO AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_0, + CASE WHEN est_medecin_salarie <> '1' AND SOL_AMO <> 2 THEN W_FACT_LIGNE.AMO ELSE 0 END AS montant_comptabilise, + CASE WHEN est_medecin_salarie <> '1' AND SOL_AMO <> 2 THEN W_FACT_LIGNE.AMO ELSE 0 END AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_0, + W_FACT_LIGNE.ENC_AMO AS montant_regle_1, + 0::numeric AS montant_regle_2, + 0::numeric AS montant_regle_0 + + FROM W_FACT_LIGNE + WHERE NUM_FACT_AMO <> 0 + AND W_FACT_LIGNE.TYPE_PREST = 'H' ; + + + DROP TABLE IF EXISTS W_FACT_LIGNE_H_2; + + CREATE TEMP TABLE W_FACT_LIGNE_H_2 AS + + SELECT + W_FACT_LIGNE.N_HOSPI, + W_FACT_LIGNE.date_vente AS date_vente, + W_FACT_LIGNE.lieu_id, + W_FACT_LIGNE.no_facture AS no_facture, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + medecin_facture_id, + medecin_comptabilise_id, + acte_id, + extract('hour' FROM W_FACT_LIGNE.D_DEB) AS heure_debut, + W_FACT_LIGNE.PHASE_TRAIT AS phase_ccam, + W_FACT_LIGNE.CODE_ACTIV AS activite_ccam, + W_FACT_LIGNE.EXT_DOC AS extension_ccam, + W_FACT_LIGNE.MODIF_1 AS modificateur_ccam_1, + W_FACT_LIGNE.MODIF_2 AS modificateur_ccam_2, + W_FACT_LIGNE.MODIF_3 AS modificateur_ccam_3, + W_FACT_LIGNE.MODIF_4 AS modificateur_ccam_4, + + date(W_FACT_LIGNE.D_DEB) AS date_debut, + date(W_FACT_LIGNE.D_FIN) AS date_fin, + CASE + WHEN AMO <> 0 THEN 0 + WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE > 0 THEN 0 - W_FACT_LIGNE.QTE + ELSE W_FACT_LIGNE.QTE END AS nb_rubrique, + CASE + WHEN AMO <> 0 THEN 0 + WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE > 0 THEN 0 - W_FACT_LIGNE.QTE + ELSE W_FACT_LIGNE.QTE END AS nb_prestations, + W_FACT_LIGNE.COEFF AS coefficient, + W_FACT_LIGNE.GRATUIT, + W_FACT_LIGNE.N_GHS, + W_FACT_LIGNE.COEFF_MCO AS coefficient_mco, + W_FACT_LIGNE.PU AS prix_unitaire, + + CASE WHEN amc = 0 AND ass = 0 THEN 0 + WHEN ass = 0 AND W_FACT_LIGNE.etat <> 3 THEN W_FACT_LIGNE.MT_DP + WHEN ass = 0 AND W_FACT_LIGNE.etat = 3 THEN 0 - W_FACT_LIGNE.MT_DP + ELSE 0 END AS montant_depassement, + + 0::numeric AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_0, + W_FACT_LIGNE.AMC AS montant_facture, + 0::numeric AS montant_facture_1, + W_FACT_LIGNE.AMC AS montant_facture_2, + 0::numeric AS montant_facture_0, + CASE WHEN est_medecin_salarie <> '1' AND SOL_AMC <> 2 THEN W_FACT_LIGNE.AMC ELSE 0 END AS montant_comptabilise, + 0::numeric AS montant_comptabilise_1, + CASE WHEN est_medecin_salarie <> '1' AND SOL_AMC <> 2 THEN W_FACT_LIGNE.AMC ELSE 0 END AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_regle_1, + W_FACT_LIGNE.ENC_AMC AS montant_regle_2, + 0::numeric AS montant_regle_0 + + FROM W_FACT_LIGNE + WHERE NUM_FACT_AMC <> 0 + AND W_FACT_LIGNE.TYPE_PREST = 'H'; + + + DROP TABLE IF EXISTS W_FACT_LIGNE_H_0; + + CREATE TEMP TABLE W_FACT_LIGNE_H_0 AS + + SELECT + W_FACT_LIGNE.N_HOSPI, + W_FACT_LIGNE.date_vente AS date_vente, + W_FACT_LIGNE.lieu_id, + W_FACT_LIGNE.no_facture AS no_facture, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + medecin_facture_id, + medecin_comptabilise_id, + acte_id, + extract('hour' FROM W_FACT_LIGNE.D_DEB) AS heure_debut, + W_FACT_LIGNE.PHASE_TRAIT AS phase_ccam, + W_FACT_LIGNE.CODE_ACTIV AS activite_ccam, + W_FACT_LIGNE.EXT_DOC AS extension_ccam, + W_FACT_LIGNE.MODIF_1 AS modificateur_ccam_1, + W_FACT_LIGNE.MODIF_2 AS modificateur_ccam_2, + W_FACT_LIGNE.MODIF_3 AS modificateur_ccam_3, + W_FACT_LIGNE.MODIF_4 AS modificateur_ccam_4, + + date(W_FACT_LIGNE.D_DEB) AS date_debut, + date(W_FACT_LIGNE.D_FIN) AS date_fin, + CASE + WHEN AMO <> 0 THEN 0 + WHEN AMC <> 0 THEN 0 + WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE > 0 THEN 0 - W_FACT_LIGNE.QTE + ELSE W_FACT_LIGNE.QTE END AS nb_rubrique, + CASE + WHEN AMO <> 0 THEN 0 + WHEN AMC <> 0 THEN 0 + WHEN W_FACT_LIGNE.ETAT = 3 AND W_FACT_LIGNE.QTE > 0 THEN 0 - W_FACT_LIGNE.QTE + ELSE W_FACT_LIGNE.QTE END AS nb_prestations, + W_FACT_LIGNE.COEFF AS coefficient, + W_FACT_LIGNE.GRATUIT, + W_FACT_LIGNE.N_GHS, + W_FACT_LIGNE.COEFF_MCO AS coefficient_mco, + W_FACT_LIGNE.PU AS prix_unitaire, + + CASE WHEN amc = 0 AND ass = 0 THEN 0 + WHEN ass = 0 THEN 0 + WHEN W_FACT_LIGNE.etat <> 3 THEN W_FACT_LIGNE.MT_DP + WHEN W_FACT_LIGNE.etat = 3 THEN 0 - W_FACT_LIGNE.MT_DP + ELSE 0 END AS montant_depassement, + + 0::numeric AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_0, + W_FACT_LIGNE.ASS AS montant_facture, + 0::numeric AS montant_facture_1, + 0::numeric AS montant_facture_2, + W_FACT_LIGNE.ASS AS montant_facture_0, + CASE WHEN est_medecin_salarie <> '1' AND SOL_ASS <> 2 THEN W_FACT_LIGNE.ASS ELSE 0 END AS montant_comptabilise, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + CASE WHEN est_medecin_salarie <> '1' AND SOL_ASS <> 2 THEN W_FACT_LIGNE.ASS ELSE 0 END AS montant_comptabilise_0, + 0::numeric AS montant_regle_1, + 0::numeric AS montant_regle_2, + W_FACT_LIGNE.ENC_ASS AS montant_regle_0 + FROM W_FACT_LIGNE + WHERE NUM_FACT_ASS <> 0 + AND TYPE_PREST = 'H'; + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_9'); + + + INSERT INTO activite[PX].p_factures_lignes_h( + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + + acte_id, + activite_ccam + ) + + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestations, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + 0 AS montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + 0 AS taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + 0 AS montant_comptabilise_22, + + 0, + 0, + 0, + 0, + 0, + + acte_id, + activite_ccam + + FROM W_FACT_LIGNE_H_1 + + UNION ALL + + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestations, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + 0 AS montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + 0 AS taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + 0 AS montant_comptabilise_22, + + 0, + 0, + 0, + 0, + 0, + + acte_id, + activite_ccam + + FROM W_FACT_LIGNE_H_2 + + UNION ALL + + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestations, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + 0 AS montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + 0 AS taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + 0 AS montant_comptabilise_22, + + 0, + 0, + 0, + 0, + 0, + + acte_id, + activite_ccam + + FROM W_FACT_LIGNE_H_0; + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_9'); + + + ]]> + + + + '1' AND + TRANS_CPTA <> 0 + GROUP BY 1,2,3; + + + CREATE INDEX w_VENTIL_PAIEMENT_H_i1 + ON w_VENTIL_PAIEMENT_H + USING btree + (no_facture, date_comptable, medecin_comptabilise_id); + + + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + date_comptable, + medecin_comptabilise_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + w_VENTIL_PAIEMENT_H.no_facture, + w_VENTIL_PAIEMENT_H.date_comptable, + w_VENTIL_PAIEMENT_H.medecin_comptabilise_id, + 0, + 0, + 0, + 0, + 0, + w_VENTIL_PAIEMENT_H.montant_regle, + w_VENTIL_PAIEMENT_H.montant_regle_0, + w_VENTIL_PAIEMENT_H.montant_regle_1, + w_VENTIL_PAIEMENT_H.montant_regle_2, + w_VENTIL_PAIEMENT_H.montant_regle_22 + FROM w_VENTIL_PAIEMENT_H + WHERE w_VENTIL_PAIEMENT_H.date_comptable IS NOT NULL ; + + + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + date_comptable, + medecin_comptabilise_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_avoir) + SELECT + p_factures_soldes_h.no_facture, + date_od_avoir, + medecin_comptabilise_id, + 0, + 0, + 0, + 0, + 0, + p_factures_soldes_h.montant_comptabilise, + p_factures_soldes_h.montant_comptabilise_0, + p_factures_soldes_h.montant_comptabilise_1, + p_factures_soldes_h.montant_comptabilise_2, + p_factures_soldes_h.montant_comptabilise_22, + '1' + FROM activite[PX].p_factures_soldes_h JOIN w_ods_avoir ON p_factures_soldes_h.no_facture = w_ods_avoir.no_facture + WHERE p_factures_soldes_h.montant_comptabilise <> 0; + + + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + date_comptable, + medecin_comptabilise_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_avoir) + SELECT + p_factures_soldes_h.no_facture, + date_od_avoir, + medecin_comptabilise_id, + 0, + 0, + 0, + 0, + 0, + p_factures_soldes_h.montant_comptabilise, + p_factures_soldes_h.montant_comptabilise_0, + p_factures_soldes_h.montant_comptabilise_1, + p_factures_soldes_h.montant_comptabilise_2, + p_factures_soldes_h.montant_comptabilise_22, + '1' + FROM activite[PX].p_factures_soldes_h JOIN w_ods_avoir ON p_factures_soldes_h.no_facture = w_ods_avoir.no_facture_od_avoir + WHERE p_factures_soldes_h.montant_comptabilise <> 0; + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_1'); + + + + + -- Avoirs qui ne sont pas des OD + + DROP TABLE IF EXISTS w_factures_soldes_h_reg; + CREATE TEMP TABLE w_factures_soldes_h_reg AS + SELECT p_factures.no_sejour, p_factures.no_facture, no_facture_od_avoir, + SUM(montant_regle) AS montant_regle_s, + SUM(montant_regle_1) AS montant_regle_1_s, + SUM(montant_regle_2) AS montant_regle_2_s, + SUM(montant_regle_0) AS montant_regle_0_s, + MAX(p_factures.montant_regle_h) AS montant_regle_f , + MAX(CASE WHEN od_avoir = '1' THEN date_comptable ELSE NULL END) AS date_comptable_s + FROM activite[PX].p_factures_soldes_h + JOIN activite[PX].p_factures ON p_factures_soldes_h.no_facture = p_factures.no_facture + GROUP BY 1,2,3 + HAVING SUM(montant_regle) <> 0 AND SUM(montant_regle) = MAX(p_factures.montant_regle_h) * 2 ; + + + CREATE INDEX w_factures_soldes_h_reg_i1 + ON w_factures_soldes_h_reg + USING btree + (no_facture); + + + UPDATE activite[PX].p_factures_soldes_h + SET montant_regle = 0, + montant_regle_1 = 0, + montant_regle_2 = 0, + montant_regle_0 = 0 + FROM w_factures_soldes_h_reg + WHERE p_factures_soldes_h.no_facture = w_factures_soldes_h_reg.no_facture AND + p_factures_soldes_h.date_comptable = w_factures_soldes_h_reg.date_comptable_s AND + od_avoir = '1' AND + montant_regle_s = montant_regle_f * 2; + + + UPDATE activite[PX].p_factures_soldes_h + SET od_avoir = '0' + FROM w_factures_soldes_h_reg + WHERE p_factures_soldes_h.no_facture = w_factures_soldes_h_reg.no_facture_od_avoir AND + p_factures_soldes_h.date_comptable = w_factures_soldes_h_reg.date_comptable_s AND + od_avoir = '1' AND + montant_regle_s = montant_regle_f * 2; + + + + -- discordance total detail reglement + + + DROP TABLE IF EXISTS w_factures_soldes_h_reg; + CREATE TEMP TABLE w_factures_soldes_h_reg AS + SELECT p_factures.no_sejour, p_factures.no_facture, no_facture_od_avoir, + SUM(montant_regle) AS montant_regle_s, + SUM(montant_regle_1) AS montant_regle_1_s, + SUM(montant_regle_2) AS montant_regle_2_s, + SUM(montant_regle_0) AS montant_regle_0_s, + MAX(p_factures.montant_regle_h) AS montant_regle_f , + MAX(CASE WHEN od_avoir = '1' THEN date_comptable ELSE NULL END) AS date_comptable_s + FROM activite[PX].p_factures_soldes_h + JOIN activite[PX].p_factures ON p_factures_soldes_h.no_facture = p_factures.no_facture + GROUP BY 1,2,3 + HAVING SUM(montant_regle) <> MAX(p_factures.montant_regle_h); + + + CREATE INDEX w_factures_soldes_h_reg_i1 + ON w_factures_soldes_h_reg + USING btree + (no_facture); + + + UPDATE activite[PX].p_factures SET + montant_regle_h = montant_regle_s, + montant_regle_1_h = montant_regle_1_s, + montant_regle_2_h = montant_regle_2_s, + montant_regle_0_h = montant_regle_0_s + FROM w_factures_soldes_h_reg + WHERE p_factures.no_facture = w_factures_soldes_h_reg.no_facture; + + + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_8'); + + + + ]]> + + + + + + + JN_VENTES THEN CREDIT - DEBIT ELSE 0 END) , + 0, + 0, + 0, + 0 + FROM prod_qsp.COMPTA_MVT + JOIN prod_qsp.ETABLISSEMENT ON ETABLISSEMENT.N_ETAB = COMPTA_MVT.N_ETAB + LEFT JOIN activite.t_divers ON t_divers.code = 'CHIFFIERCPTOMIT' + WHERE (N_CPT LIKE CPT_CL_SEJ_AMO || '%' OR + N_CPT LIKE CPT_CL_SEJ_AMC || '%' OR + N_CPT LIKE CPT_CL_SEJ_ASS || '%' + ) AND + D_ECR >= '[ENV_ADM_ANNEEDEBUT]0101' AND + (C_JAL = JN_VENTES OR C_JAL = JN_ENC OR C_JAL = JN_CAI OR C_JAL = C_JAL_SEJ) AND + piece BETWEEN '1' AND '999999' AND + piece = piece_int AND + N_CPT <> ALL(string_to_array(t_divers.valeur,',')) + GROUP BY 1 + UNION ALL + SELECT + date(D_ECR), + SUM(CASE WHEN C_JAL = JN_VENTES THEN DEBIT - CREDIT ELSE 0 END) , + SUM(CASE WHEN C_JAL <> JN_VENTES THEN CREDIT - DEBIT ELSE 0 END) , + 0, + 0, + 0, + 0 + FROM prod_qsp.COMPTA_MVT_HIST + JOIN prod_qsp.ETABLISSEMENT ON ETABLISSEMENT.N_ETAB = COMPTA_MVT_HIST.N_ETAB + LEFT JOIN activite.t_divers ON t_divers.code = 'CHIFFIERCPTOMIT' + WHERE (N_CPT LIKE CPT_CL_SEJ_AMO || '%' OR + N_CPT LIKE CPT_CL_SEJ_AMC || '%' OR + N_CPT LIKE CPT_CL_SEJ_ASS || '%' + ) AND + D_ECR >= '[ENV_ADM_ANNEEDEBUT]0101' AND + (C_JAL = JN_VENTES OR C_JAL = JN_ENC OR C_JAL = JN_CAI OR C_JAL = C_JAL_SEJ) AND + piece BETWEEN '1' AND '999999' AND + piece = piece_int AND + N_CPT <> ALL(string_to_array(t_divers.valeur,',')) + GROUP BY 1; + + TRUNCATE activite[PX].p_factures_comptables; + + INSERT INTO activite[PX].p_factures_comptables( + no_facture, + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_ventes_h, + montant_reglements_h) + SELECT + trim(to_char(to_number('0' || COALESCE(piece,''),'000000000'), '00000000')) AS no_facture, + date(D_ECR), + SUM(CASE WHEN C_JAL = JN_VENTES THEN DEBIT - CREDIT ELSE 0 END) , + SUM(CASE WHEN C_JAL <> JN_VENTES THEN CREDIT - DEBIT ELSE 0 END) , + 0, + 0 + FROM prod_qsp.COMPTA_MVT + JOIN prod_qsp.ETABLISSEMENT ON ETABLISSEMENT.N_ETAB = COMPTA_MVT.N_ETAB + LEFT JOIN activite.t_divers ON t_divers.code = 'CHIFFIERCPTOMIT' + WHERE (N_CPT LIKE CPT_CL_SEJ_AMO || '%' OR + N_CPT LIKE CPT_CL_SEJ_AMC || '%' OR + N_CPT LIKE CPT_CL_SEJ_ASS || '%' + ) AND + D_ECR >= '[ENV_ADM_ANNEEDEBUT]0101' AND + (C_JAL = JN_VENTES OR C_JAL = JN_ENC OR C_JAL = JN_CAI OR C_JAL = C_JAL_SEJ) AND + piece BETWEEN '1' AND '999999' AND + piece = piece_int AND + N_CPT <> ALL(string_to_array(t_divers.valeur,',')) + GROUP BY 1,2 + UNION ALL + SELECT + trim(to_char(to_number('0' || COALESCE(piece,''),'000000000'), '00000000')) AS no_facture, + date(D_ECR), + SUM(CASE WHEN C_JAL = JN_VENTES THEN DEBIT - CREDIT ELSE 0 END) , + SUM(CASE WHEN C_JAL <> JN_VENTES THEN CREDIT - DEBIT ELSE 0 END) , + 0, + 0 + FROM prod_qsp.COMPTA_MVT_HIST + JOIN prod_qsp.ETABLISSEMENT ON ETABLISSEMENT.N_ETAB = COMPTA_MVT_HIST.N_ETAB + LEFT JOIN activite.t_divers ON t_divers.code = 'CHIFFIERCPTOMIT' + WHERE (N_CPT LIKE CPT_CL_SEJ_AMO || '%' OR + N_CPT LIKE CPT_CL_SEJ_AMC || '%' OR + N_CPT LIKE CPT_CL_SEJ_ASS || '%' + ) AND + D_ECR >= '[ENV_ADM_ANNEEDEBUT]0101' AND + (C_JAL = JN_VENTES OR C_JAL = JN_ENC OR C_JAL = JN_CAI OR C_JAL = C_JAL_SEJ) AND + piece BETWEEN '1' AND '999999' AND + piece = piece_int AND + N_CPT <> ALL(string_to_array(t_divers.valeur,',')) + GROUP BY 1,2; + + ]]> + + + + + + + + + + + + + + + + 10 THEN trim(substr(NOM_PRATICIEN, 1, strpos(NOM_PRATICIEN, '*')-1)) ELSE NOM_PRATICIEN END) AS NOM_PRATICIEN_SOUNDEX, + ''::text AS PRENOM_PRATICIEN_SOUNDEX, + NOM_PRATICIEN, + ''::text AS PRENOM_PRATICIEN, + COALESCE(NUMID,'') AS NUMID, + TRIM(to_char(SPECIALITE,'00')) AS SPECIALITE, + COALESCE(t_medecins_administratifs.medecin_id,0) as medecin_id + FROM prod_qsp.DPRATICIEN + LEFT JOIN activite[PX].t_medecins_administratifs ON C_PRAT = t_medecins_administratifs.code_original + WHERE C_PRAT = ANY(ARRAY( + SELECT MEDSUIV::text FROM prod_qsp.DOSSIER + UNION + SELECT C_PRAT::text FROM prod_qsp.SAISIE + GROUP BY 1)::text[] + ); + + UPDATE w_medecins SET NOM_PRATICIEN_SOUNDEX = NOM_PRATICIEN WHERE NOM_PRATICIEN_SOUNDEX = ''; + + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id,code) + SELECT w_medecins.NOM_PRATICIEN, w_medecins.PRENOM_PRATICIEN, w_medecins.NUMID, 0, w_medecins.C_PRAT_ORIGINAL FROM + (SELECT SUBSTR(NOM_PRATICIEN_SOUNDEX, 1, 8) AS NOM_PRATICIEN_SOUNDEX, + SUBSTR(PRENOM_PRATICIEN_SOUNDEX, 1, 8) AS PRENOM_PRATICIEN_SOUNDEX, + NUMID, + C_PRAT_ORIGINAL + FROM w_medecins + GROUP BY 1,2,3,4) subview, w_medecins + WHERE w_medecins.C_PRAT_ORIGINAL = subview.C_PRAT_ORIGINAL + AND w_medecins.NUMID <> '' + AND substr(subview.NOM_PRATICIEN_SOUNDEX,1,8) || ',' || substr(subview.PRENOM_PRATICIEN_SOUNDEX,1,8) || ',' || subview.NUMID || ',' ||subview.C_PRAT_ORIGINAL NOT IN + (SELECT substr(base.cti_soundex_nom(nom),1,8) || ',' || substr(base.cti_soundex_nom(prenom),1,8) || ',' || numero_ordre|| ',' || code FROM base.t_medecins); + + + + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.NOM_PRATICIEN, w_medecins.PRENOM_PRATICIEN, w_medecins.NUMID, 0 FROM + (SELECT NOM_PRATICIEN_SOUNDEX, PRENOM_PRATICIEN_SOUNDEX, MIN(C_PRAT_ORIGINAL) AS MEDE_ID_MEDE + FROM w_medecins + GROUP BY 1,2) subview, w_medecins + WHERE w_medecins.C_PRAT_ORIGINAL = subview.MEDE_ID_MEDE + AND subview.NOM_PRATICIEN_SOUNDEX || ',' || subview.PRENOM_PRATICIEN_SOUNDEX NOT IN + (SELECT base.cti_soundex_nom(nom) || ',' || base.cti_soundex_nom(prenom) FROM base.t_medecins);; + + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT substr(base.cti_soundex_nom(nom),1,8) as nom , substr(base.cti_soundex_nom(prenom),1,8) as prenom, numero_ordre, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2,3) subview + WHERE SUBSTR(NOM_PRATICIEN_SOUNDEX, 1, 8) = SUBSTR(subview.nom,1,8) + AND SUBSTR(PRENOM_PRATICIEN_SOUNDEX, 1, 8) = SUBSTR(subview.prenom,1,8) + AND NUMID = subview.numero_ordre + AND NUMID <> '' + AND w_medecins.medecin_id = 0; + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT base.cti_soundex_nom(nom) as nom , base.cti_soundex_nom(prenom) as prenom, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2) subview + WHERE NOM_PRATICIEN_SOUNDEX = subview.nom + AND PRENOM_PRATICIEN_SOUNDEX = subview.prenom + AND w_medecins.medecin_id = 0; + + + + INSERT INTO activite[PX].t_medecins_administratifs(code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT DISTINCT C_PRAT_ORIGINAL, C_PRAT, NOM_PRATICIEN, PRENOM_PRATICIEN, COALESCE(t_specialites_medecin.oid,0), medecin_id + FROM w_medecins + LEFT JOIN base.t_specialites_medecin ON (SPECIALITE = t_specialites_medecin.code_original) + WHERE C_PRAT_ORIGINAL NOT IN (SELECT code_original FROM activite[PX].t_medecins_administratifs); + + UPDATE activite[PX].t_medecins_administratifs + SET nom = NOM_PRATICIEN, + prenom = PRENOM_PRATICIEN, + specialite_id = COALESCE(t_specialites_medecin.oid,0), + medecin_id = w_medecins.medecin_id + FROM w_medecins LEFT JOIN base.t_specialites_medecin ON (SPECIALITE = t_specialites_medecin.code_original) + WHERE w_medecins.C_PRAT_ORIGINAL = t_medecins_administratifs.code_original + AND ( + t_medecins_administratifs.nom <> NOM_PRATICIEN OR + t_medecins_administratifs.prenom <> PRENOM_PRATICIEN OR + t_medecins_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid,0) OR + t_medecins_administratifs.medecin_id <> w_medecins.medecin_id + ); + + + + UPDATE base.t_medecins SET specialite_id = subview.specialite_id FROM + (SELECT t_medecins.oid, MIN(t_medecins_administratifs.specialite_id) as specialite_id + FROM base.t_medecins, activite[PX].t_medecins_administratifs , base.t_specialites_medecin + WHERE t_medecins.oid = t_medecins_administratifs.medecin_id + AND t_medecins_administratifs.specialite_id = t_specialites_medecin.oid + GROUP BY t_medecins.oid) subview + WHERE t_medecins.oid = subview.oid AND t_medecins.oid <> 0 AND t_medecins.specialite_id = 0 + ; + + -- NO ADELI + UPDATE activite[PX].t_medecins_administratifs + SET no_adeli = NUMID + FROM prod_qsp.DPRATICIEN + WHERE t_medecins_administratifs.code_original = C_PRAT AND + t_medecins_administratifs.NO_ADELI IS DISTINCT FROM NUMID + ; + + ]]> + + + + '0' AND + NUM_LIT NOT IN (SELECT NUM_LIT FROM prod_qsp.DLIT) AND + UPPER(NUM_LIT) IN (SELECT NUM_LIT FROM prod_qsp.DLIT) AND + UPPER(NUM_LIT) <> NUM_LIT + ; + + -- Etage = service si parametre QSP_MDT_SERVICE = 1 + UPDATE cti_histolit + SET C_SECT = C_SERV + FROM activite.t_divers + WHERE t_divers.code = 'QSP_MDT_SERVICE' AND t_divers.valeur = '1' + ; + + -- Etage non renseigné, prendre le max par service et chambre + UPDATE cti_histolit + SET C_SECT = C_SECT_DEFAULT + FROM + ( + SELECT C_SERV, NUM_CHAMBRE, (MAX(Array[to_char(nb,'FM000000000'),C_SECT]))[2] AS C_SECT_DEFAULT + FROM + ( + SELECT C_SERV,NUM_CHAMBRE,C_SECT,count(*) aS nb + FROM cti_histolit + WHERE C_SECT <> '' AND NUM_LIT <> '0' AND + NUM_CHAMBRE IN (SELECT NUM_CHAMBRE FROM cti_histolit WHERE C_SECT = '') + GROUP BY 1,2,3 + ORDER BY 1,2,4 DESC + ) subview + GROUP BY 1,2 + ) subview + WHERE cti_histolit.C_SERV = subview.C_SERV AND + cti_histolit.NUM_CHAMBRE = subview.NUM_CHAMBRE AND + cti_histolit.C_SECT = '' AND + cti_histolit.NUM_LIT <> '0' + ; + + -- Etage non renseigné, prendre le max par service (si significatif = 95%) + UPDATE cti_histolit + SET C_SECT = C_SECT_DEFAULT, TRANSF_QSP = 'T' + FROM + ( + SELECT C_SERV, (MAX(Array[to_char(nb,'FM000000000'),C_SECT]))[2] AS C_SECT_DEFAULT, MAX(nb) / SUM(nb) + FROM + ( + SELECT C_SERV,C_SECT,count(*) aS nb + FROM cti_histolit + WHERE C_SECT <> '' AND NUM_LIT <> '0' AND NUM_LIT <> '' + GROUP BY 1,2 + ORDER BY 1,3 DESC + ) subview + GROUP BY 1 + HAVING MAX(nb) / SUM(nb) >= 0.95 + ) subview + WHERE cti_histolit.C_SERV = subview.C_SERV AND + cti_histolit.C_SECT = '' AND + cti_histolit.NUM_LIT <> '0' AND + cti_histolit.NUM_LIT <> '' + ; + + + + DROP TABLE IF EXISTS w_DSERVICE; + CREATE TEMP TABLE w_DSERVICE AS + SELECT + DSERVICE.C_SERV::text || CASE WHEN t_divers.valeur = '1' THEN '_'::text || lpad(DOSSIER.MODE_TRAIT, 2, '0') ELSE ''::text END as C_SERV + ,CASE WHEN t_divers.valeur = '1' THEN lpad(DOSSIER.MODE_TRAIT, 2, '0') ELSE lpad(DSERVICE.N_TRAIT, 2, '0') END as MODE_TRAIT + ,DSERVICE.L_DSERVICE || CASE WHEN t_divers.valeur = '1' THEN ' (' || lpad(DOSSIER.MODE_TRAIT, 2, '0') || ')' ELSE ''::text END as L_DSERVICE + ,DSERVICE.C_SERV as C_UF + ,DSERVICE.PMSI_SERV + ,DSERVICE.NB_LITS + ,DSERVICE.N_TRAIT + ,DSERVICE.N_DIS + ,DSERVICE.L_DSERVICE AS L_DUF + FROM + cti_histolit + JOIN prod_QSP.DOSSIER ON DOSSIER.NDOSSIER = cti_histolit.NDOSSIER + AND DOSSIER.N_CLINI = cti_histolit.N_CLINI + JOIN prod_QSP.DSERVICE ON DSERVICE.C_SERV = cti_histolit.C_SERV + AND DSERVICE.N_CLINI = cti_histolit.N_CLINI, + activite.t_divers + WHERE t_divers.code = 'QSP_MDT_SERVICE' + GROUP BY 1,2,3,4,5,6,7,8,9 + ORDER BY 1; + + -- Modes de traitement + + INSERT INTO base.t_modes_traitement(code, texte, texte_court) + SELECT trim(to_char(n_trait,'00')), libelle, libelle FROM prod_qsp.MODE_TRAIT + WHERE trim(to_char(n_trait,'00')) NOT IN (SELECt code FROM base.t_modes_traitement); + + INSERT INTO base.t_modes_traitement(oid, code, texte, texte_court) + SELECT 0, '**', 'Non renseigné', 'Non renseigné' + WHERE 0 NOT IN (SELECT oid FROM base.t_modes_traitement); + + -- DMT + + INSERT INTO base.t_dmt(code, texte, texte_court) + SELECT trim(to_char(n_dis,'000')), libelle, libelle FROM prod_qsp.discipline + WHERE n_dis <> 0 AND trim(to_char(n_dis,'000')) NOT IN (SELECt code FROM base.t_dmt); + + INSERT INTO base.t_dmt(oid, code, texte, texte_court) + SELECT 0, '***', 'Non renseignée', 'Non renseignée' + WHERE 0 NOT IN (SELECT oid FROM base.t_dmt); + + -- Services + + INSERT INTO activite[PX].t_services_facturation(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '****', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_services_facturation); + + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, type_t2a, nb_lits, mode_traitement_id, dmt_id) + SELECT + w_DSERVICE.C_SERV, + substr(translate(w_DSERVICE.C_SERV,' ',''),1,10), + w_DSERVICE.L_DSERVICE, + w_DSERVICE.L_DSERVICE, + CASE WHEN w_DSERVICE.PMSI_SERV <> '' THEN '1' ELSE '0' END, + w_DSERVICE.NB_LITS, + COALESCE(t_modes_traitement.oid,0), + COALESCE(t_dmt.oid,0) + FROM + w_DSERVICE + LEFT JOIN base.t_modes_traitement ON t_modes_traitement.code = w_DSERVICE.MODE_TRAIT + LEFT JOIN base.t_dmt ON (t_dmt.code = trim(to_char(w_DSERVICE.N_DIS,'000'))) + LEFT JOIN activite[PX].t_services_facturation ON t_services_facturation.code_original = w_DSERVICE.C_SERV + WHERE t_services_facturation.code_original IS NULL; + + + + -- Unités fonctionnelles + + INSERT INTO activite[PX].t_unites_fonctionnelles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_fonctionnelles); + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT w_DSERVICE.C_UF, substr(translate(C_UF,' ',''),1,10) , w_DSERVICE.L_DUF, w_DSERVICE.L_DUF + FROM w_DSERVICE + LEFT JOIN base.t_modes_traitement ON (t_modes_traitement.code = trim(to_char(w_DSERVICE.N_TRAIT,'00'))) + LEFT JOIN base.t_dmt ON (t_dmt.code = trim(to_char(w_DSERVICE.N_DIS,'000'))) + LEFT JOIN activite[PX].t_unites_fonctionnelles ON t_unites_fonctionnelles.code_original = w_DSERVICE.C_UF + WHERE t_unites_fonctionnelles.code_original IS NULL + GROUP BY 1,2,3,4; + + + -- Unités médicales + + INSERT INTO activite[PX].t_unites_medicales(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_medicales); + + INSERT INTO activite[PX].t_unites_medicales(code_original, code, texte, texte_court) + SELECT C_SERV, C_SERV, LIBELLE, LIBELLE + FROM prod_qsp.PMSI_SERVICE + WHERE C_SERV NOT IN (SELECT code_original FROM activite[PX].t_unites_medicales); + + + -- Activités + + INSERT INTO activite[PX].t_activites(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_activites); + + + + -- Etages et lits + + INSERT INTO activite[PX].t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_etages); + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court) + SELECT C_SECT, C_SECT, NOM_SECT, NOM_SECT + FROM prod_qsp.SECTEUR + WHERE C_SECT NOT IN (SELECT code_original FROM activite[PX].t_etages); + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court) + SELECT C_SERV, C_SERV, LIBELLE, LIBELLE + FROM prod_qsp.PMSI_SERVICE + WHERE C_SERV NOT IN (SELECT code_original FROM activite[PX].t_etages); + + DELETE FROM activite[PX].t_lits WHERE code_original IS NULL; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT CASE WHEN C_SECT <> '' THEN COALESCE(C_SECT, C_SERV) ELSE C_SERV END || '|' || NUM_LIT, NUM_LIT, NUM_LIT, NUM_LIT, COALESCE(t_etages.oid,0), CASE WHEN SEULE = 'O' THEN 'O' ELSE 'N' END + FROM prod_qsp.DLIT + LEFT JOIN activite[PX].t_etages ON C_SECT = t_etages.code_original + WHERE CASE WHEN C_SECT <> '' THEN COALESCE(C_SECT, C_SERV) ELSE C_SERV END || '|' || NUM_LIT NOT IN (SELECT code_original FROM activite[PX].t_lits); + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT t_etages.code_original || '|' , '****', 'Non renseigné', 'Non renseigné', t_etages.oid, 'N' + FROM activite[PX].t_etages + WHERE t_etages.code_original <> '' AND (t_etages.code_original || '|') NOT IN (SELECT code_original FROM activite[PX].t_lits); + + UPDATE activite[PX].t_lits SET code = '*****' WHERE code = ''; + ]]> + + + + ''*'' + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE PRESTATION.CODE_PREST = subview.CODE_PREST AND + PRESTATION.CTID = DELCTID',10); + + -- Rubriques et prestations + + INSERT INTO activite[PX].t_rubriques_facturation(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_rubriques_facturation); + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT CODE_PREST, CODE_PREST, LIBELLE, LIBELLE + FROM prod_qsp.PRESTATION + WHERE TYPE_PREST <> '*' AND + CODE_PREST <> '' AND + CODE_PREST NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation) + ORDER BY CODE_PREST; + + -- Mise à jour préalable du code original si absent ain d'éviter les erreurs de contrainte d'unicité sur la requête d'insertion suivante + UPDATE activite[PX].t_prestations SET + code_original = CODE_NORM + FROM + prod_qsp.PRESTATION + WHERE 1=1 + AND t_prestations.code = PRESTATION.CODE_NORM + AND TYPE_PREST <> '*' + AND CODE_NORM <> '' + AND t_prestations.code_original IS NULL; + + INSERT INTO activite[PX].t_prestations(code_original, code, texte, texte_court) + SELECT CODE_NORM, CODE_NORM, + TRIM(MAX(CASE WHEN CODE_NORM = CODE_PREST AND LIBELLE <> '' THEN LIBELLE ELSE ' ' || CODE_NORM END)), + TRIM(MAX(CASE WHEN CODE_NORM = CODE_PREST AND LIBELLE <> '' THEN LIBELLE ELSE ' ' || CODE_NORM END)) + FROM prod_qsp.PRESTATION + WHERE TYPE_PREST <> '*' AND + CODE_NORM NOT IN (SELECT code_original FROM activite[PX].t_prestations WHERE oid <> 0 AND code_original IS NOT NULL) AND + CODE_NORM <> '' + GROUP BY 1,2 + ORDER BY 1; + + INSERT INTO activite[PX].t_prestations(code_original, code, texte, texte_court) + SELECT CODE_PREST, CODE_PREST, + TRIM(MAX(CASE WHEN CODE_NORM = CODE_PREST AND LIBELLE <> '' THEN LIBELLE ELSE ' ' || CODE_NORM END)), + TRIM(MAX(CASE WHEN CODE_NORM = CODE_PREST AND LIBELLE <> '' THEN LIBELLE ELSE ' ' || CODE_NORM END)) + FROM prod_qsp.PRESTATION + WHERE TYPE_PREST <> '*' AND + CODE_PREST <> '' AND + COALESCE(CODE_NORM,'') = '' AND CODE_PREST NOT IN (SELECT code_original FROM activite[PX].t_prestations WHERE oid <> 0 AND code_original IS NOT NULL) AND + CODE_PREST <> '' + GROUP BY 1,2 + ORDER BY 1; + + -- Comptes + + INSERT INTO activite[PX].t_compte(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_compte); + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT N_CPT, N_CPT, MAX(LIB_CPT), MAX(LIB_CPT) + FROM prod_qsp.PLAN_C + JOIN prod_qsp.PRESTATION ON N_CPT = COMPTE::text + WHERE N_CPT <> '' AND N_CPT NOT IN (SELECT code FROM activite[PX].t_compte) + GROUP BY 1 + ORDER BY 1; + + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT N_CPT, N_CPT, MAX(LIB_CPT), MAX(LIB_CPT) + FROM prod_qsp.PLAN_C + JOIN prod_qsp.PRESTATION_DISCIPLINE ON N_CPT = COMPTE::text + WHERE N_CPT <> '' AND N_CPT NOT IN (SELECT code FROM activite[PX].t_compte) + GROUP BY 1 + ORDER BY 1; + + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT N_CPT, N_CPT, MAX(LIB_CPT), MAX(LIB_CPT) + FROM prod_qsp.PLAN_C + JOIN prod_qsp.PRESTATION_GHS ON N_CPT = COMPTE::text + WHERE N_CPT <> '' AND N_CPT NOT IN (SELECT code FROM activite[PX].t_compte) + GROUP BY 1 + ORDER BY 1; + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT N_CPT, N_CPT, MAX(LIB_CPT), MAX(LIB_CPT) + FROM prod_qsp.PLAN_C + JOIN prod_qsp.PRESTATION_GHS_GHS ON N_CPT = COMPTE::text + WHERE N_CPT <> '' AND N_CPT NOT IN (SELECT code FROM activite[PX].t_compte) + GROUP BY 1 + ORDER BY 1; + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT COMPTE, COMPTE, COMPTE, COMPTE + FROM prod_qsp.PRESTATION + WHERE COMPTE <> 0 AND to_char(COMPTE,'FM999999999') NOT IN (SELECT code FROM activite[PX].t_compte) + GROUP BY 1 + ORDER BY 1; + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT COMPTE, COMPTE, COMPTE, COMPTE + FROM prod_qsp.PRESTATION_GHS_GHS + WHERE COMPTE <> '' AND COMPTE NOT IN (SELECT code FROM activite[PX].t_compte) + GROUP BY 1 + ORDER BY 1; + + + ]]> + + + + + + + + 'PJ' THEN t_prestations.code ELSE 'PJS' END AS prestation_mcode, + type_valorisation_non_facture + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].t_lieux ON lieu_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_services_facturation.oid = service_facturation_id + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE date_fin >= '20170701' AND + date_debut >= '20170701' AND + type_t2a = '2' AND + prestation_id = ANY (SELECT to_id FROM activite.t_listes_contenu JOIN activite.t_listes ON liste_id = t_listes.oid AND t_listes.code = 'DMAP_MFS') AND + montant_comptabilise <> 0 AND + montant_comptabilise_1 <> 0 AND + round(prix_unitaire * nb_prestation,2) <> montant_comptabilise AND + abs(round(prix_unitaire * nb_prestation,2)) <> abs(montant_comptabilise)+(nb_prestation*18) + ORDER BY no_facture, prestation_id + ; + + -- Calcul tarif plein + UPDATE w_moins10 SET + montant_facture_1 = + CASE WHEN prestation_code = 'PJ' OR type_valorisation_non_facture = 'PJ' THEN round(prix_unitaire * nb_prestation * taux_1 / 100,2) - montant_fj + ELSE round(prix_unitaire * nb_prestation * taux_1 / 100,2) END, + montant_facture = + CASE WHEN prestation_code = 'PJ' OR type_valorisation_non_facture = 'PJ' THEN round(prix_unitaire * nb_prestation * taux_1 / 100,2) - montant_fj + ELSE round(prix_unitaire * nb_prestation * taux_1 / 100,2) END + + (montant_facture_2+montant_facture_22+montant_facture_0) + ; + + -- Génération prestations spécifiques + INSERT INTO activite.t_prestations (code, texte, texte_court) + SELECT prestation_mcode, t_prestations.texte || ' (-10%)', t_prestations.texte || ' (-10%)' + FROM w_moins10 + JOIN activite.t_prestations on prestation_id = t_prestations.oid + WHERE prestation_mcode NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + GROUP BY 1,2,3 + ; + + -- Maj tarif plein + UPDATE activite[PX].p_factures_lignes_c + SET montant_facture = w_moins10.montant_facture, montant_facture_1 = w_moins10.montant_facture_1 + FROM w_moins10 + WHERE p_factures_lignes_c.CTID = w_moins10.CTID_orig; + ; + + -- Génération -10% + UPDATE w_moins10 SET + nb_rubrique = 0, + montant_facture = montant_comptabilise - montant_facture, + montant_facture_1 = montant_comptabilise_1 - montant_facture_1, + montant_facture_2 = montant_comptabilise_2 - montant_facture_2, + montant_facture_22 = montant_comptabilise_22 - montant_facture_22, + montant_facture_0 = montant_comptabilise_0 - montant_facture_0, + montant_comptabilise = 0, + montant_comptabilise_1 = 0, + montant_comptabilise_2 = 0, + montant_comptabilise_22 = 0, + montant_comptabilise_0 = 0, + prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE t_prestations.code = prestation_mcode + ; + + ALTER TABLE w_moins10 DROP COLUMN CTID_orig; + ALTER TABLE w_moins10 DROP COLUMN montant_fj; + ALTER TABLE w_moins10 DROP COLUMN prestation_code; + ALTER TABLE w_moins10 DROP COLUMN prestation_mcode; + ALTER TABLE w_moins10 DROP COLUMN type_valorisation_non_facture; + + INSERT INTO activite[PX].p_factures_lignes_c + SELECT * + FROM w_moins10 + WHERE montant_facture <> 0 + ; + + + SELECT activite[PX].cti_reorganize_rubrique_facture_c('activite[PX].p_factures_lignes_c'); + ]]> + + + + '' + GROUP BY 1,2,3 + ; + + + INSERT INTO activite[PX].t_medecins_traitants_administratifs(code_original, code, nom, prenom, specialite_id, no_rpps) + SELECT + MED_TRAIT_CODE, + MED_TRAIT_CODE, + MAX(MED_TRAIT_NOM), + MAX(MED_TRAIT_PREN), + 0, + '' + FROM w_CORRESPONDANTS + LEFT JOIN activite[PX].t_medecins_traitants_administratifs ON + MED_TRAIT_CODE = t_medecins_traitants_administratifs.code_original + WHERE t_medecins_traitants_administratifs.oid IS NULL + GROUP BY 1 + ; + + UPDATE w_CORRESPONDANTS + SET medecin_cti_id = t_medecins_traitants_administratifs.oid + FROM activite[PX].t_medecins_traitants_administratifs + WHERE t_medecins_traitants_administratifs.code_original = MED_TRAIT_CODE + ; + + DROP TABLE IF EXISTS w_sejours; + CREATE TEMP TABLE w_sejours AS + SELECT no_sejour, + date_entree, + p_sejours.no_patient, + p_patients.nom, + ''::text AS MED_TRAIT_NOM, + ''::text AS MED_TRAIT_PREN + FROM activite[PX].p_sejours + JOIN activite[PX].p_patients ON p_sejours.no_patient = p_patients.no_patient + ; + + + UPDATE w_sejours + SET MED_TRAIT_NOM = HOSPI.MED_TRAIT_NOM, + MED_TRAIT_PREN = HOSPI.MED_TRAIT_PREN + FROM prod_QSP.HOSPI + WHERE to_char(N_HOSPI,'FM999999999') = no_sejour AND + date(HOSPI.DATE_ENTREE) = w_sejours.date_entree AND + HOSPI.MED_TRAIT_NOM <> '' + ; + + + + UPDATE activite[PX].p_sejours + SET medecin_traitant_id = medecin_cti_id + FROM w_sejours + JOIN w_CORRESPONDANTS ON w_sejours.MED_TRAIT_NOM = w_CORRESPONDANTS.MED_TRAIT_NOM AND + w_sejours.MED_TRAIT_PREN = w_CORRESPONDANTS.MED_TRAIT_PREN + WHERE p_sejours.no_sejour = w_sejours.no_sejour AND + w_sejours.MED_TRAIT_NOM <> '' AND + medecin_cti_id <> 0 + ; + + -- ajout des coordonnées par séjour + INSERT INTO activite[PX].p_coordonnees_patient ( + sejour_id, + adresse, + code_postal_id, + commune, + telephone_fixe, + telephone_portable, + email + ) + SELECT + p_sejours.oid, + ADR1_PAT || CASE WHEN ADR2_PAT != '' THEN ' - ' || ADR2_PAT ELSE '' END, + COALESCE(t_codes_postaux.oid,0), + VIL_PAT, + TEL1_PAT, + TEL2_PAT, + EMAIL + FROM activite[PX].p_sejours + LEFT JOIN prod_qsp.PATIENT ON no_patient = PATIENT.NPATIENT + LEFT JOIN base.t_codes_postaux ON t_codes_postaux.code = CPO_PAT + ; + + + -- Transferts + DROP TABLE IF EXISTS w_PROVENANCE; + CREATE TEMP TABLE w_PROVENANCE AS + SELECT SEQ_PROV, N_FINESS, LIB_PROV, CPO, ''::text AS A_FINESS, 0::bigint AS provenance_id + FROM prod_qsp.PROVENANCE + WHERE N_FINESS > 0 AND SEQ_PROV IN (SELECT HOSPI.SEQ_PROV FROM prod_qsp.HOSPI) + ; + + UPDATE w_PROVENANCE + SET A_FINESS = N_FINESS + WHERE N_FINESS BETWEEN 100000000 AND 999999999 + ; + + UPDATE w_PROVENANCE + SET A_FINESS = '0'||N_FINESS + WHERE N_FINESS BETWEEN 10000000 AND 99999999 AND + CPO LIKE '0%' AND + substr(CPO,2,1) = SUBSTR(N_FINESS,1,1) + ; + + + INSERT INTO base.t_etablissements(code, texte, texte_court) + SELECT A_FINESS, MIN(LIB_PROV), MIN(LIB_PROV) + FROM w_PROVENANCE + WHERE A_FINESS <> '' AND + A_FINESS NOT IN (SELECT code FROM base.t_etablissements WHERE code IS NOT NULL) + GROUP BY 1 + ; + + UPDATE base.t_etablissements SET + texte = subview.texte, + texte_court = subview.texte + FROM + ( + SELECT A_FINESS, MIN(LIB_PROV) AS texte + FROM w_PROVENANCE + WHERE A_FINESS <> '' AND LIB_PROV <> '' + GROUP BY 1 + ) subview + WHERE t_etablissements.code = A_FINESS AND + ( + t_etablissements.texte = t_etablissements.code OR + t_etablissements.texte = '' + ) + ; + + UPDATE w_PROVENANCE + SET provenance_id = t_etablissements.oid + FROM base.t_etablissements + WHERE A_FINESS = t_etablissements.code AND + A_FINESS <> '' + ; + + DROP TABLE IF EXISTS w_DESTINATION; + CREATE TEMP TABLE w_DESTINATION AS + SELECT SEQ_DEST, N_FINESS, LIB_DEST, CPO, ''::text AS A_FINESS, 0::bigint AS destination_id + FROM prod_qsp.DESTINATION + WHERE N_FINESS > 0 AND SEQ_DEST IN (SELECT HOSPI.SEQ_DEST FROM prod_qsp.HOSPI) + ; + + UPDATE w_DESTINATION + SET A_FINESS = N_FINESS + WHERE N_FINESS BETWEEN 100000000 AND 999999999 + ; + + UPDATE w_DESTINATION + SET A_FINESS = '0'||N_FINESS + WHERE N_FINESS BETWEEN 10000000 AND 99999999 AND + CPO LIKE '0%' AND + substr(CPO,2,1) = SUBSTR(N_FINESS,1,1) + ; + + + INSERT INTO base.t_etablissements(code, texte, texte_court) + SELECT A_FINESS, MIN(LIB_DEST), MIN(LIB_DEST) + FROM w_DESTINATION + WHERE A_FINESS <> '' AND + A_FINESS NOT IN (SELECT code FROM base.t_etablissements WHERE code IS NOT NULL) + GROUP BY 1 + ; + + UPDATE base.t_etablissements SET + texte = subview.texte, + texte_court = subview.texte + FROM + ( + SELECT A_FINESS, MIN(LIB_DEST) AS texte + FROM w_DESTINATION + WHERE A_FINESS <> '' AND + LIB_DEST <> '' + GROUP BY 1 + ) subview + WHERE t_etablissements.code = A_FINESS AND + ( + t_etablissements.texte = t_etablissements.code OR + t_etablissements.texte = '' + ) + ; + + UPDATE w_DESTINATION + SET destination_id = t_etablissements.oid + FROM base.t_etablissements + WHERE A_FINESS = t_etablissements.code AND + A_FINESS <> '' + ; + + + + INSERT INTO activite[PX].p_sejours_transferts (sejour_id, provenance_id, destination_id) + SELECT p_sejours.oid, MAX(COALESCE(provenance_id,0)), MAX(COALESCE(destination_id,0)) + FROM prod_QSP.HOSPI + JOIN activite.p_sejours ON N_HOSPI = p_sejours.code_original + LEFT JOIN w_PROVENANCE ON HOSPI.SEQ_PROV = w_PROVENANCE.SEQ_PROV AND provenance_id > 0 + LEFT JOIN w_DESTINATION ON HOSPI.SEQ_DEST = w_DESTINATION.SEQ_DEST AND destination_id > 0 + WHERE p_sejours.oid NOT IN (SELECT p_sejours_transferts.sejour_id FROM activite[PX].p_sejours_transferts) AND + ( + provenance_id > 0 OR + destination_id > 0 + ) + GROUP BY 1 + ; + + + ]]> + + + + CASE WHEN montant_comptabilise_0_c = 0 THEN '00010101' WHEN montant_comptabilise_0_c = montant_regle_0_c THEN date_solde_0_c ELSE '20991231' END OR + date_solde_0_h <> CASE WHEN montant_comptabilise_0_h = 0 THEN '00010101' WHEN montant_comptabilise_0_h = montant_regle_0_h THEN date_solde_0_h ELSE '20991231' END OR + date_solde_1_c <> CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END OR + date_solde_1_h <> CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '20991231' END OR + date_solde_2_c <> CASE WHEN montant_comptabilise_2_c = 0 THEN '00010101' WHEN montant_comptabilise_2_c = montant_regle_2_c THEN date_solde_2_c ELSE '20991231' END OR + date_solde_2_h <> CASE WHEN montant_comptabilise_2_h = 0 THEN '00010101' WHEN montant_comptabilise_2_h = montant_regle_2_h THEN date_solde_2_h ELSE '20991231' END OR + date_solde_22_c <> CASE WHEN montant_comptabilise_22_c = 0 THEN '00010101' WHEN montant_comptabilise_22_c = montant_regle_22_c THEN date_solde_22_c ELSE '20991231' END OR + date_solde_22_h <> CASE WHEN montant_comptabilise_22_h = 0 THEN '00010101' WHEN montant_comptabilise_22_h = montant_regle_22_h THEN date_solde_22_h ELSE '20991231' END + ); + + DROP TABLE IF EXISTS w_factures_soldes; + CREATE TEMP TABLE w_factures_soldes AS + SELECT + no_facture, + GREATEST(date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h) AS date_solde, + GREATEST(date_solde_0_c, date_solde_1_c, date_solde_2_c, date_solde_22_c) AS date_solde_c, + GREATEST(date_solde_0_h, date_solde_1_h, date_solde_2_h, date_solde_22_h) AS date_solde_h + FROM activite[PX].p_factures; + + CREATE INDEX i_factures_soldes_1 + ON w_factures_soldes + USING btree + (no_facture); + + + UPDATE activite[PX].p_factures + SET + date_solde = w_factures_soldes.date_solde, + date_solde_c = w_factures_soldes.date_solde_c, + date_solde_h = w_factures_soldes.date_solde_h + FROM w_factures_soldes + WHERE p_factures.no_facture = w_factures_soldes.no_facture AND + ( + p_factures.date_solde IS DISTINCT FROM w_factures_soldes.date_solde OR + p_factures.date_solde_c IS DISTINCT FROM w_factures_soldes.date_solde_c OR + p_factures.date_solde_h IS DISTINCT FROM w_factures_soldes.date_solde_h + ); + + DROP TABLE IF EXISTS w_factures_references_soldes; + + CREATE TEMP TABLE w_factures_references_soldes AS + SELECT + no_facture_reference, + MAX(date_solde) AS date_solde_reference, + MAX(date_solde_c) AS date_solde_reference_c, + MAX(date_solde_h) AS date_solde_reference_h, + MAX(date_solde_0_c) AS date_solde_reference_0_c, + MAX(date_solde_0_h) AS date_solde_reference_0_h, + MAX(date_solde_1_c) AS date_solde_reference_1_c, + MAX(date_solde_1_h) AS date_solde_reference_1_h, + MAX(date_solde_2_c) AS date_solde_reference_2_c, + MAX(date_solde_2_h) AS date_solde_reference_2_h, + MAX(date_solde_22_c) AS date_solde_reference_22_c, + MAX(date_solde_22_h) AS date_solde_reference_22_h + FROM activite[PX].p_factures + GROUP BY no_facture_reference; + + CREATE INDEX i_factures_references_soldes_1 + ON w_factures_references_soldes + USING btree + (no_facture_reference); + + + + UPDATE activite[PX].p_factures + SET + date_solde_reference = w_factures_references_soldes.date_solde_reference, + date_solde_reference_c = w_factures_references_soldes.date_solde_reference_c, + date_solde_reference_h = w_factures_references_soldes.date_solde_reference_h, + date_solde_reference_0_c = w_factures_references_soldes.date_solde_reference_0_c, + date_solde_reference_0_h = w_factures_references_soldes.date_solde_reference_0_h, + date_solde_reference_1_c = w_factures_references_soldes.date_solde_reference_1_c, + date_solde_reference_1_h = w_factures_references_soldes.date_solde_reference_1_h, + date_solde_reference_2_c = w_factures_references_soldes.date_solde_reference_2_c, + date_solde_reference_2_h = w_factures_references_soldes.date_solde_reference_2_h, + date_solde_reference_22_c = w_factures_references_soldes.date_solde_reference_22_c, + date_solde_reference_22_h = w_factures_references_soldes.date_solde_reference_22_h + FROM w_factures_references_soldes + WHERE p_factures.no_facture_reference = w_factures_references_soldes.no_facture_reference + AND ( + p_factures.date_solde_reference IS DISTINCT FROM w_factures_references_soldes.date_solde_reference OR + p_factures.date_solde_reference_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_c OR + p_factures.date_solde_reference_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_h OR + p_factures.date_solde_reference_0_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_0_c OR + p_factures.date_solde_reference_0_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_0_h OR + p_factures.date_solde_reference_1_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_1_c OR + p_factures.date_solde_reference_1_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_1_h OR + p_factures.date_solde_reference_2_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_2_c OR + p_factures.date_solde_reference_2_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_2_h OR + p_factures.date_solde_reference_22_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_22_c OR + p_factures.date_solde_reference_22_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_22_h + ); + + DELETE + FROM activite[PX].p_factures_lignes_c + USING activite[PX].p_factures + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + code_facture = '1' AND montant_facture_c = 0 AND montant_comptabilise_c = 0 AND + taux_0 + taux_1 + taux_2 + taux_22 = 0 AND + p_factures_lignes_c.montant_facture = 0 AND + p_factures_lignes_c.montant_comptabilise = 0 + ; + + + ]]> + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour + + FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY p_sejours.no_sejour; + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = CASE WHEN w_sejours_total.date_expedition_0 <> '0001-01-01' THEN w_sejours_total.date_expedition_0 ELSE '2099-12-31' END, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = CASE WHEN w_sejours_total.date_expedition_1 <> '0001-01-01' THEN w_sejours_total.date_expedition_1 ELSE '2099-12-31' END, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = CASE WHEN w_sejours_total.date_expedition_2 <> '0001-01-01' THEN w_sejours_total.date_expedition_2 ELSE '2099-12-31' END, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = CASE WHEN w_sejours_total.date_expedition_22 <> '0001-01-01' THEN w_sejours_total.date_expedition_22 ELSE '2099-12-31' END, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_0 <> '0001-01-01' THEN w_sejours_total.date_expedition_0 ELSE '2099-12-31' END OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_1 <> '0001-01-01' THEN w_sejours_total.date_expedition_1 ELSE '2099-12-31' END OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_2 <> '0001-01-01' THEN w_sejours_total.date_expedition_2 ELSE '2099-12-31' END OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_22 <> '0001-01-01' THEN w_sejours_total.date_expedition_22 ELSE '2099-12-31' END OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour + + ); + + + UPDATE activite[PX].p_sejours SET + + delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END, + delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END, + delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END, + delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END, + + delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END, + delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END, + + delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END, + delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END, + + delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END, + delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END, + + delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END, + delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END + + WHERE + + delai_groupage IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END + OR + delai_facture IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END + OR + delai_expedition IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END + OR + delai_solde IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END + OR + + delai_expedition_0 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END + OR + delai_solde_0 IS DISTINCT FROM CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END + OR + + delai_expedition_1 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END + OR + delai_solde_1 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END + OR + + delai_expedition_2 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END + OR + delai_solde_2 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END + OR + + delai_expedition_22 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END + OR + delai_solde_22 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END; + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/import_activite/iCTI_import_activite_SANO.XML b/import_activite/iCTI_import_activite_SANO.XML new file mode 100644 index 0000000..8831cca --- /dev/null +++ b/import_activite/iCTI_import_activite_SANO.XML @@ -0,0 +1,2969 @@ + + + + + + + + + + + + + + + + + + + + + + TNOM OR + p_patients.prenom <> TPRENOM OR + p_patients.nom_naissance <> TNOMJF OR + p_patients.date_naissance <> date(DNAISDATE) OR + p_patients.code_sexe <> CASE WHEN TSEXE = 'F' THEN '2' ELSE '1' END + ) + ; + + + ]]> + + + + + + date(now()) THEN 0 ELSE 1 END::numeric AS CODE_SORTI, + '80'::text AS MODE_SORTIE, + ''::text AS CODE_MEDECIN_SEJOUR, + '1'::text AS type_sejour, + + TRESCODPOST, + + 0::bigint AS medecin_sejour_id, + 0::bigint AS code_postal_id, + 0::bigint AS tiers_payant_0_id, + 0::bigint AS tiers_payant_1_id, + 0::bigint AS tiers_payant_2_id, + 0::bigint AS tiers_payant_22_id + + + FROM prod_sano.PATHOSP_TD + JOIN prod_sano.PATIPP_TD ON XNCLEPAT = NCLEPAT + + WHERE ABS(NSTATUTHOSP) NOT IN (4104, 257) AND XNCLEPAT > 0 + ORDER BY DENTREE + ; + + UPDATE w_PATHOSP + SET NHOSPI = w_PATHOSP.NHOSPI + 50000 + FROM + ( + SELECT NHOSPI, MIN(NCLEHOSP) AS NCLEHOSP_min + FROM w_PATHOSP + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE w_PATHOSP.NCLEHOSP = NCLEHOSP_min + ; + + + UPDATE w_PATHOSP + SET code_postal_id = t_codes_postaux.oid + FROM base.t_codes_postaux + WHERE TRESCODPOST = t_codes_postaux.code + ; + + UPDATE w_PATHOSP + SET tiers_payant_0_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE code_original = 'PATIENT' + ; + + UPDATE w_PATHOSP + SET tiers_payant_2_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE code_original = 'MUTDIV' + ; + + + + UPDATE w_PATHOSP + SET tiers_payant_1_id = subview.tiers_payant_id + FROM + (SELECT XNCLEHOSP, (MAX(Array[to_char(DDATEFACT,'YYYYMMDD'), t_tiers_payant.oid::text]))[2]::bigint AS tiers_payant_id + FROM prod_sano.PATFACT_TD + join activite[PX].t_tiers_payant ON code_original = TGDREGCACE + GROUP BY 1 + ) subview + WHERE w_PATHOSP.NCLEHOSP = subview.XNCLEHOSP + ; + + + UPDATE w_PATHOSP + SET tiers_payant_2_id = subview.tiers_payant_id + FROM + (SELECT XNCLEHOSP, (MAX(Array[to_char(DDATEFACT,'YYYYMMDD'), t_tiers_payant.oid::text]))[2]::bigint AS tiers_payant_id + FROM prod_sano.PATFACT_TD + join activite[PX].t_tiers_payant ON code_original = TSPECCODE AND TSPECCODE <> '' + GROUP BY 1 + ) subview + WHERE w_PATHOSP.NCLEHOSP = subview.XNCLEHOSP + ; + + UPDATE w_PATHOSP SET + XTMODENTPMSI = trim(translate(XTMODENTPMSI,' -','')), + XTMODSORTPMSI = trim(translate(XTMODSORTPMSI,' -','')) + ; + + UPDATE w_PATHOSP + SET XTMODENTPMSI = XTMODENTPMSI || '0' + WHERE length(XTMODENTPMSI) = 1 + ; + + + UPDATE w_PATHOSP + SET XTMODENTPMSI = '80' + WHERE XTMODENTPMSI = '' + ; + + UPDATE w_PATHOSP + SET XTMODSORTPMSI = XTMODSORTPMSI || '0' + WHERE length(XTMODSORTPMSI) = 1 + ; + + UPDATE w_PATHOSP + SET XTMODSORTPMSI = '80' + WHERE XTMODSORTPMSI = '' + ; + + -- Validation + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_13'); + + INSERT INTO activite[PX].p_sejours ( + no_sejour, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + lieu_sortie_id, + medecin_sejour_id, + ghs_id, + ghm_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + est_budget_global, + code_postal_id, + risque_id + ) + SELECT + w_PATHOSP.NHOSPI AS no_sejour, + w_PATHOSP.NCLEHOSP AS code_original, + w_PATHOSP.no_patient AS no_patient, + w_PATHOSP.date_entree, + w_PATHOSP.heure_entree, + w_PATHOSP.date_sortie, + w_PATHOSP.heure_sortie, + p_patients.code_sexe, + 0::numeric AS age, + w_PATHOSP.code_sorti, + '0' AS code_prevu, + w_PATHOSP.type_sejour, + 0 AS lieu_sortie_id, + w_PATHOSP.medecin_sejour_id, + 0 AS ghs_id, + 0 AS ghm_id, + 0 AS ghs_bebe1_id, + 0 AS ghs_bebe2_id, + 0 AS ghs_bebe3_id, + '20991231' AS date_groupage, + '0' AS code_cp_demandee, + 0 AS mode_traitement_id, + substr(w_PATHOSP.XTMODENTPMSI,1,1) AS mode_entree, + substr(w_PATHOSP.XTMODENTPMSI,2,1) AS provenance, + substr(w_PATHOSP.XTMODSORTPMSI,1,1) AS mode_sortie, + substr(w_PATHOSP.XTMODSORTPMSI,2,1) AS destination, + w_PATHOSP.tiers_payant_0_id, + w_PATHOSP.tiers_payant_1_id, + w_PATHOSP.tiers_payant_2_id, + 0 AS tiers_payant_22_id, + '0' AS est_budget_global, + w_PATHOSP.code_postal_id, + 0 AS risque_id + + FROM w_PATHOSP + JOIN activite.p_patients ON p_patients.no_patient = w_PATHOSP.no_patient + ; + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '[PX]' = ''; + + UPDATE activite[PX].p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND + '[PX]' = ''; + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '[PX]' = ''; + + + -- recréation index + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_13'); + + + + + + + + + ]]> + + + + DSORTIE + ; + + + + DELETE + FROM w_PATHISTLIT_CORR + WHERE DFIN <= DDEB + ; + + UPDATE w_PATHISTLIT_CORR + SET DDEB = w_PATHISTLIT_CORR.DENTREE + FROM + ( + SELECT XNCLEHOSP, (MIN(Array[DDEB::text, to_char(NINDEX,'FM000000000000')]))[2]::bigint AS NINDEX + FROM w_PATHISTLIT_CORR + GROUP BY 1 + HAVING MIN(DDEB) <> MIN(DENTREE) + ) subview + WHERE w_PATHISTLIT_CORR.XNCLEHOSP = subview.XNCLEHOSP AND + w_PATHISTLIT_CORR.NINDEX = subview.NINDEX + ; + + UPDATE w_PATHISTLIT_CORR + SET DFIN = w_PATHISTLIT_CORR.DSORTIE + FROM + ( + SELECT XNCLEHOSP, (MAX(Array[COALESCE(DFIN,'20991231')::text, to_char(NINDEX,'FM000000000000')]))[2]::bigint AS NINDEX + FROM w_PATHISTLIT_CORR + GROUP BY 1 + HAVING MAX(COALESCE(DFIN,'20991231')) <> MAX(DSORTIE) + ) subview + WHERE w_PATHISTLIT_CORR.XNCLEHOSP = subview.XNCLEHOSP AND + w_PATHISTLIT_CORR.NINDEX = subview.NINDEX + ; + + DELETE + FROM w_PATHISTLIT_CORR + WHERE DFIN <= DDEB + ; + + + + + + + DROP SEQUENCE IF EXISTS w_PATHISTLIT_seq; + CREATE TEMP SEQUENCE w_PATHISTLIT_seq; + + DROP TABLE IF EXISTS w_PATHISTLIT; + CREATE TEMP TABLE w_PATHISTLIT AS + SELECT *, + nextval('w_PATHISTLIT_seq'::regclass) AS sequence, + '1'::text AS entree_directe, + '1'::text AS sortie_directe, + date(MVT_DDEB) AS MVT_DDEB_date, + to_char(MVT_DDEB,'HH24MISS')::numeric AS MVT_DDEB_heure, + date(MVT_DFIN) AS MVT_DFIN_date, + to_char(MVT_DFIN,'HH24MISS')::numeric AS MVT_DFIN_heure, + SEJ_XNCLEUF AS service_code, + SEJ_XNCLEUF AS uf_code, + MVT_XNCLESECT AS etage_code, + MVT_XNCLELIT AS lit_code, + SEJ_XNCLEUF AS av_service_code, + SEJ_XNCLEUF AS av_uf_code, + MVT_XNCLESECT AS av_etage_code, + SEJ_XNCLEUF AS ap_service_code, + SEJ_XNCLEUF AS ap_uf_code, + MVT_XNCLESECT AS ap_etage_code, + '0'::text AS code_urgence, + 0::bigint AS lieu_id + FROM + ( + SELECT NHOSPI, + w_PATHOSP.NCLEHOSP, + w_PATHOSP.DENTREE AS SEJ_DDEB, + w_PATHOSP.DSORTIE AS SEJ_DFIN, + w_PATHOSP.XNCLEUF AS SEJ_XNCLEUF, + w_PATHOSP.XNCLESECT AS SEJ_XNCLESECT, + CASE WHEN w_PATHOSP.XNCLELIT <> 0 THEN w_PATHOSP.XNCLELIT ELSE w_PATHOSP.XNCLESECT END AS SEJ_XNCLELIT, + COALESCE(PATHISTLIT_TD.DDEB,w_PATHOSP.DENTREE) AS MVT_DDEB, + COALESCE(PATHISTLIT_TD.DFIN,w_PATHOSP.DSORTIE) AS MVT_DFIN, + COALESCE(PATHISTLIT_TD.XNCLESECT,w_PATHOSP.XNCLESECT) AS MVT_XNCLESECT, + COALESCE(CASE WHEN PATHISTLIT_TD.XNCLELIT <> 0 THEN PATHISTLIT_TD.XNCLELIT ELSE PATHISTLIT_TD.XNCLESECT END,CASE WHEN w_PATHOSP.XNCLELIT <> 0 THEN w_PATHOSP.XNCLELIT ELSE w_PATHOSP.XNCLESECT END) AS MVT_XNCLELIT + FROM w_PATHOSP + LEFT JOIN w_PATHISTLIT_CORR PATHISTLIT_TD ON + PATHISTLIT_TD.XNCLEHOSP = w_PATHOSP.NCLEHOSP + ORDER BY NHOSPI, w_PATHOSP.DENTREE, DDEB + ) subview + ; + + + + UPDATE w_PATHISTLIT + SET + sortie_directe = '0', + ap_service_code = w_PATHISTLIT_next.service_code, + ap_uf_code = w_PATHISTLIT_next.uf_code, + ap_etage_code = w_PATHISTLIT_next.etage_code + FROM w_PATHISTLIT w_PATHISTLIT_next + WHERE w_PATHISTLIT.NHOSPI = w_PATHISTLIT_next.NHOSPI + AND w_PATHISTLIT.sequence = w_PATHISTLIT_next.sequence - 1 + ; + + + + + UPDATE w_PATHISTLIT + SET + entree_directe = '0', + MVT_DDEB = w_PATHISTLIT_before.MVT_DFIN + interval '1 second', + MVT_DDEB_date = date(w_PATHISTLIT_before.MVT_DFIN + interval '1 second'), + MVT_DDEB_heure = to_char(w_PATHISTLIT_before.MVT_DFIN + interval '1 second','HH24MISS')::numeric, + av_service_code = w_PATHISTLIT_before.service_code, + av_uf_code = w_PATHISTLIT_before.uf_code, + av_etage_code = w_PATHISTLIT_before.etage_code + FROM w_PATHISTLIT w_PATHISTLIT_before + WHERE w_PATHISTLIT.NHOSPI = w_PATHISTLIT_before.NHOSPI + AND w_PATHISTLIT.sequence = w_PATHISTLIT_before.sequence + 1 + ; + + + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_6) + SELECT service_code, '', etage_code, lit_code, uf_code + FROM w_PATHISTLIT + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = service_code AND + code_original_2 = '' AND + code_original_3 = etage_code AND + code_original_4 = lit_code AND + code_original_6 = uf_code + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5; + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM + activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original + AND (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + + + UPDATE w_PATHISTLIT + SET lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = service_code AND + code_original_2 = '' AND + code_original_3 = etage_code AND + code_original_4 = lit_code AND + code_original_6 = uf_code + ; + + + DROP TABLE IF EXISTS w_mouvements_sejour; + + CREATE TEMP TABLE w_mouvements_sejour AS + SELECT + w_PATHISTLIT.NHOSPI, + w_PATHISTLIT.NHOSPI AS no_sejour, + p_sejours.oid AS sejour_id, + sequence, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE WHEN p_calendrier.date = date(w_PATHISTLIT.MVT_DDEB_date) THEN w_PATHISTLIT.MVT_DDEB_heure ELSE 0 END AS heure_debut, + CASE WHEN p_calendrier.date = date(w_PATHISTLIT.MVT_DFIN_date) THEN w_PATHISTLIT.MVT_DFIN_heure ELSE 240000 END AS heure_fin, + CASE WHEN entree_directe = '1' AND p_calendrier.date = date(p_sejours.date_entree) AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes, + CASE WHEN SORTIE_DIRECTE = '1' AND p_calendrier.date = date(p_sejours.date_sortie) AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes, + CASE WHEN entree_directe = '1' AND p_calendrier.date = date(p_sejours.date_entree) AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree, + CASE WHEN SORTIE_DIRECTE = '1' AND p_calendrier.date = date(p_sejours.date_sortie) AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie, + CASE WHEN p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN entree_directe = '1' AND p_calendrier.date = date(p_sejours.date_entree) AND p_sejours.type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires, + CASE WHEN entree_directe = '1' AND p_calendrier.date = date(p_sejours.date_entree) AND p_sejours.type_sejour = '3' THEN 1 ELSE 0 END AS nb_externes, + CASE WHEN code_urgence = '1' AND p_calendrier.date = date(p_sejours.date_entree) AND entree_directe = '1' THEN 1 ELSE 0 END AS nb_urgences, + CASE WHEN entree_directe = '1' AND p_calendrier.date = date(p_sejours.date_entree) AND p_sejours.type_sejour = '5' THEN 1 ELSE 0 END AS nb_seances, + + CASE WHEN p_calendrier.date = date(w_PATHISTLIT.MVT_DDEB_date) AND p_sejours.type_sejour = '1' AND entree_directe <> '1' AND service_code <> av_service_code THEN 1 ELSE 0 END AS nb_entrees_mutation_service, + CASE WHEN p_calendrier.date = date(w_PATHISTLIT.MVT_DFIN_date) AND p_sejours.type_sejour = '1' AND SORTIE_DIRECTE <> '1' AND service_code <> ap_service_code THEN 1 ELSE 0 END AS nb_sorties_mutation_service, + CASE WHEN p_calendrier.date = date(w_PATHISTLIT.MVT_DDEB_date) AND p_sejours.type_sejour = '1' AND entree_directe <> '1' AND etage_code <> av_etage_code THEN 1 ELSE 0 END AS nb_entrees_mutation_etage, + CASE WHEN p_calendrier.date = date(w_PATHISTLIT.MVT_DFIN_date) AND p_sejours.type_sejour = '1' AND SORTIE_DIRECTE <> '1' AND etage_code <> ap_etage_code THEN 1 ELSE 0 END AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + 0 AS nb_entrees_mutation_unite_medicale, + 0 AS nb_sorties_mutation_unite_medicale, + + CASE WHEN p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN p_sejours.type_sejour = '1' AND p_calendrier.date <> date(p_sejours.date_sortie) THEN 1 ELSE 0 END AS nb_jours_js_non_inclus, + + CASE WHEN p_sejours.type_sejour = '1' AND t_lits.chambre_particuliere = 'O' THEN '1' ELSE '0' END AS est_chambre_particuliere, + CASE WHEN p_sejours.type_sejour = '1' AND t_lits.chambre_particuliere = 'O' THEN 1 ELSE 0 END AS nb_chambres_particulieres, + + 0 AS nb_bebes, + + lieu_id, + + p_sejours.medecin_sejour_id as medecin_sejour_id, + + CASE WHEN p_sejours.code_prevu = '1' OR p_calendrier.date > date(now()) THEN '1' ELSE '0' END AS est_mouvement_previsionnel + FROM w_PATHISTLIT + JOIN activite[PX].p_sejours ON w_PATHISTLIT.NHOSPI = p_sejours.no_sejour AND p_sejours.etat = '' + LEFT JOIN activite[PX].t_lits ON lit_code = t_lits.code_original + JOIN base.p_calendrier ON (p_calendrier.date BETWEEN date(w_PATHISTLIT.MVT_DDEB_date) AND date(w_PATHISTLIT.MVT_DFIN_date) AND p_calendrier.date <= now() + interval '1 month' ) + ORDER BY sequence, p_calendrier.date; + + + -- Génération + DELETE FROM w_mouvements_sejour + WHERE + nb_entrees_directes = 0 AND + nb_sorties_directes = 0 AND + est_jour_hospitalisation <> '1' AND + nb_ambulatoires = 0 AND + nb_externes = 0 AND + nb_urgences = 0 AND + nb_seances = 0 AND + nb_entrees_mutation_service = 0 AND + nb_sorties_mutation_service = 0 AND + nb_entrees_mutation_etage = 0 AND + nb_sorties_mutation_etage = 0 AND + nb_entrees_mutation_activite = 0 AND + nb_sorties_mutation_activite = 0 AND + nb_entrees_mutation_unite_medicale = 0 AND + nb_sorties_mutation_unite_medicale = 0 AND + nb_jours_js_inclus = 0 AND + nb_jours_js_non_inclus = 0 AND + est_chambre_particuliere <> '1' AND + nb_chambres_particulieres = 0 AND + nb_bebes = 0; + + DELETE + FROM w_mouvements_sejour + WHERE heure_debut = heure_fin + ; + + + + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_1'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_2'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_3'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_4'); + SELECT base.cti_disable_index('activite', 'i_mouvements_sejour_5'); + + TRUNCATE activite[PX].p_mouvements_sejour; + + INSERT INTO activite[PX].p_mouvements_sejour( + sejour_id, no_sejour, date, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, + nb_bebes,est_mouvement_previsionnel, jour_semaine, is_weekend) + SELECT sejour_id, no_sejour, date,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, + nb_bebes,est_mouvement_previsionnel, jour_semaine, is_weekend + FROM w_mouvements_sejour + ORDER BY no_sejour, sequence; + + + + + + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite', 'i_mouvements_sejour_5'); + + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie + AND (lieu_sortie_id IS DISTINCT FROM p_mouvements_sejour.lieu_id); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie AND p_mouvements_sejour.nb_sorties_directes = 1 + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL); + + + + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + WHERE type_sejour <> '5' AND + type_sejour <> '1' AND + no_sejour IN ( + SELECT no_sejour + FROM activite[PX].p_mouvements_sejour + WHERE nb_seances > 0); + + + UPDATE activite[PX].p_mouvements_sejour + SET nb_externes = 0, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + ( + nb_externes <> 0 OR + nb_ambulatoires <> 0 + ) + + ; + + + ]]> + + + + + + + + + 0 + ORDER BY NHOSPI, DDATFINFACT, DDATEFACT + ) subview + ; + + DROP TABLE IF EXISTS w_PATFACT_PER; + DROP SEQUENCE IF EXISTS w_PATFACT_PER_seq; + CREATE TEMP SEQUENCE w_PATFACT_PER_seq; + CREATE TEMP TABLE w_PATFACT_PER AS + SELECT nextval('w_PATFACT_PER_seq'::regclass) AS sequence, + * + FROM + ( + SELECT XNCLEHOSP, DDATFINFACT, MIN(DDATDEBFACT) AS DDATDEBFACT + FROM w_PATFACT + GROUP BY 1,2 + ORDER BY 1,2 + ) subview + ; + + + UPDATE w_PATFACT_PER + SET DDATDEBFACT = w_PATFACT_PER_prev.DDATFINFACT + interval '1 day' + FROM w_PATFACT_PER w_PATFACT_PER_prev + WHERE w_PATFACT_PER.XNCLEHOSP = w_PATFACT_PER_prev.XNCLEHOSP AND + w_PATFACT_PER.sequence = w_PATFACT_PER_prev.sequence +1 + ; + + UPDATE w_PATFACT + SET DDATDEBFACT = w_PATFACT_PER.DDATDEBFACT + FROM w_PATFACT_PER + WHERE w_PATFACT_PER.XNCLEHOSP = w_PATFACT.XNCLEHOSP AND + w_PATFACT_PER.DDATFINFACT = w_PATFACT.DDATFINFACT + ; + + + + + -- Factures 'normales' + DROP TABLE IF EXISTS w_factures; + CREATE TEMP TABLE w_factures AS + SELECT + nextval('activite.s_factures'::regclass) AS oid, + p_sejours.oid AS sejour_id, + w_PATFACT.NHOSPI AS no_sejour, + w_PATFACT.NIDFACT, + w_PATFACT.NNOFACT::text AS no_facture, + w_PATFACT.NNOFACT::text AS no_facture_source, + w_PATFACT.NNOFACT::text AS no_facture_reference, + '0'::text AS zero_compta, + 0::bigint AS facture_reference_id, + ''::text AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id, + w_PATFACT.DDATDEBFACT AS date_debut, + w_PATFACT.DDATFINFACT AS date_fin, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id, + p_sejours.code_cp_demandee AS code_cp_demandee, + CASE WHEN w_PATFACT.NNOFACTORI < 1 THEN 'X' ELSE '0'::text END AS type_facture, + 0 AS nb_rejets, + + 1::numeric AS code_facture, + w_PATFACT.DDATEFACT AS date_facture, + '0' AS code_vente, + '20991231'::date AS date_vente, + 209912::numeric AS mois_vente, + ''::text AS code_cloture, + + CASE WHEN p_sejours.ghs_id > 0 THEN 'GHS' ELSE '' END AS particularite_t2a, + + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + + 0::numeric AS montant_facture_c, + 0::numeric AS montant_facture_h, + 0::numeric AS montant_facture_0_c, + 0::numeric AS montant_facture_0_h, + 0::numeric AS montant_facture_1_c, + 0::numeric AS montant_facture_1_h, + 0::numeric AS montant_facture_2_c, + 0::numeric AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_comptabilise_c, + 0::numeric AS montant_comptabilise_h, + 0::numeric AS montant_comptabilise_0_c, + 0::numeric AS montant_comptabilise_0_h, + 0::numeric AS montant_comptabilise_1_c, + 0::numeric AS montant_comptabilise_1_h, + 0::numeric AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + 0::numeric AS montant_regle_1_h, + 0::numeric AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + '1'::text AS code_expedie_0, + CASE WHEN DDATTELTRANS IS NOT NULL THEN '1' ELSE '0' END AS code_expedie_1, + CASE WHEN DDATTELTRANS IS NOT NULL THEN '1' ELSE '0' END AS code_expedie_2, + 0::numeric AS code_expedie_22, + CASE WHEN DDATTELTRANS > '00010101' THEN DDATTELTRANS ELSE '00010101' END AS date_expedition, + w_PATFACT.DDATEFACT AS date_expedition_0, + CASE WHEN DDATTELTRANS > '00010101' THEN DDATTELTRANS ELSE '00010101' END AS date_expedition_1, + CASE WHEN DDATTELTRANS > '00010101' THEN DDATTELTRANS ELSE '00010101' END AS date_expedition_2, + '00010101'::date AS date_expedition_22, + 0 AS no_bordereau_0, + 0 AS no_bordereau_1, + 0 AS no_bordereau_2, + 0::numeric AS no_bordereau_22, + + LEAST('20991231'::date) AS date_solde, + LEAST('20991231'::date) AS date_solde_c, + LEAST('20991231'::date) AS date_solde_h, + LEAST('20991231'::date) AS date_solde_0_c, + LEAST('20991231'::date) AS date_solde_0_h, + LEAST('20991231'::date) AS date_solde_1_c, + LEAST('20991231'::date) AS date_solde_1_h, + LEAST('20991231'::date) AS date_solde_2_c, + LEAST('20991231'::date) AS date_solde_2_h, + '20991231'::date AS date_solde_22_c, + '20991231'::date AS date_solde_22_h, + + + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + + '20991231'::date AS date_solde_reference, + '20991231'::date AS date_solde_reference_c, + '20991231'::date AS date_solde_reference_h, + '20991231'::date AS date_solde_reference_0_c, + '20991231'::date AS date_solde_reference_1_c, + '20991231'::date AS date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + '20991231'::date AS date_solde_reference_0_h, + '20991231'::date AS date_solde_reference_1_h, + '20991231'::date AS date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h, + + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + + + '20991231'::date AS date_encours, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_c + + FROM w_PATFACT + JOIN activite[PX].p_sejours ON w_PATFACT.XNCLEHOSP = p_sejours.code_original AND p_sejours.etat = '' + ; + + + + -- Avoirs + INSERT INTO w_factures + SELECT + nextval('activite.s_factures'::regclass) AS oid, + p_sejours.oid AS sejour_id, + w_PATFACT.NHOSPI AS no_sejour, + w_PATFACT.NIDFACT, + 'A'||w_PATFACT.NNOFACT AS no_facture, + w_PATFACT.NNOFACT AS no_facture_source, + w_PATFACT.NNOFACT AS no_facture_reference, + '0'::text AS zero_compta, + 0::bigint AS facture_reference_id, + COALESCE(w_PATFACT_refact.NNOFACT::text,'') AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id, + w_PATFACT.DDATDEBFACT AS date_debut, + w_PATFACT.DDATFINFACT AS date_fin, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id, + p_sejours.code_cp_demandee AS code_cp_demandee, + '1' AS type_facture, + 1 AS nb_rejets, + + 1::numeric AS code_facture, + COALESCE(w_PATFACT_refact.DDATEFACT,w_PATFACT.DDATEFACT) AS date_facture, + '0' AS code_vente, + '20991231'::date AS date_vente, + 209912::numeric AS mois_vente, + ''::text AS code_cloture, + + CASE WHEN p_sejours.ghs_id > 0 THEN 'GHS' ELSE '' END AS particularite_t2a, + + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + + 0::numeric AS montant_facture_c, + 0::numeric AS montant_facture_h, + 0::numeric AS montant_facture_0_c, + 0::numeric AS montant_facture_0_h, + 0::numeric AS montant_facture_1_c, + 0::numeric AS montant_facture_1_h, + 0::numeric AS montant_facture_2_c, + 0::numeric AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_comptabilise_c, + 0::numeric AS montant_comptabilise_h, + 0::numeric AS montant_comptabilise_0_c, + 0::numeric AS montant_comptabilise_0_h, + 0::numeric AS montant_comptabilise_1_c, + 0::numeric AS montant_comptabilise_1_h, + 0::numeric AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + 0::numeric AS montant_regle_1_h, + 0::numeric AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + '1'::text AS code_expedie_0, + CASE WHEN w_PATFACT.DDATTELTRANS IS NOT NULL THEN '1' ELSE '0' END AS code_expedie_1, + CASE WHEN w_PATFACT.DDATTELTRANS IS NOT NULL THEN '1' ELSE '0' END AS code_expedie_2, + 0::numeric AS code_expedie_22, + CASE WHEN w_PATFACT.DDATTELTRANS > '00010101' THEN w_PATFACT.DDATTELTRANS ELSE '00010101' END AS date_expedition, + w_PATFACT.DDATEFACT AS date_expedition_0, + CASE WHEN w_PATFACT.DDATTELTRANS > '00010101' THEN w_PATFACT.DDATTELTRANS ELSE '00010101' END AS date_expedition_1, + CASE WHEN w_PATFACT.DDATTELTRANS > '00010101' THEN w_PATFACT.DDATTELTRANS ELSE '00010101' END AS date_expedition_2, + '00010101'::date AS date_expedition_22, + 0 AS no_bordereau_0, + 0 AS no_bordereau_1, + 0 AS no_bordereau_2, + 0::numeric AS no_bordereau_22, + + LEAST('20991231'::date) AS date_solde, + LEAST('20991231'::date) AS date_solde_c, + LEAST('20991231'::date) AS date_solde_h, + LEAST('20991231'::date) AS date_solde_0_c, + LEAST('20991231'::date) AS date_solde_0_h, + LEAST('20991231'::date) AS date_solde_1_c, + LEAST('20991231'::date) AS date_solde_1_h, + LEAST('20991231'::date) AS date_solde_2_c, + LEAST('20991231'::date) AS date_solde_2_h, + '20991231'::date AS date_solde_22_c, + '20991231'::date AS date_solde_22_h, + + + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + + '20991231'::date AS date_solde_reference, + '20991231'::date AS date_solde_reference_c, + '20991231'::date AS date_solde_reference_h, + '20991231'::date AS date_solde_reference_0_c, + '20991231'::date AS date_solde_reference_1_c, + '20991231'::date AS date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + '20991231'::date AS date_solde_reference_0_h, + '20991231'::date AS date_solde_reference_1_h, + '20991231'::date AS date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h, + + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + + + '20991231'::date AS date_encours, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_c + + FROM w_PATFACT + LEFT JOIN prod_sano.PATFACT_TD w_PATFACT_refact ON w_PATFACT.NNOFACT = ABS(w_PATFACT_refact.NNOFACTORI) + JOIN activite[PX].p_sejours ON w_PATFACT.XNCLEHOSP = p_sejours.code_original AND p_sejours.etat = '' + WHERE w_PATFACT.NNOFACTORI < 0 + + ; + + DROP TABLE IF EXISTS w_PATFACTCPTA_TD; + CREATE TEMP TABLE w_PATFACTCPTA_TD AS + SELECT NNOFACT::text AS NNOFACT_CTI, ''::text AS type_tiers_payant, + '0'::text AS zero_compta, + * + FROM prod_sano.PATFACTCPTA_TD + ; + + UPDATE w_PATFACTCPTA_TD SET + zero_compta = '1' + FROM + ( + SELECT XNIDFACT, date(DDATECR) AS DDATECR, SUM(CSOMDUE) + FROM w_PATFACTCPTA_TD + WHERE CSOMDUE <> 0 + GROUP BY 1,2 + HAVING SUM(CSOMDUE) = 0 + ) subview + WHERE w_PATFACTCPTA_TD.XNIDFACT = subview.XNIDFACT AND + date(w_PATFACTCPTA_TD.DDATECR) = subview.DDATECR + ; + + + UPDATE w_PATFACTCPTA_TD + SET NNOFACT_CTI = 'A'||NNOFACT_CTI + FROM + ( + SELECT NNOFACT, date(DDATECR) AS DDATECR + FROM w_PATFACTCPTA_TD + JOIN w_factures ON w_PATFACTCPTA_TD.XNIDFACT = w_factures.NIDFACT AND + no_facture = 'A'||w_PATFACTCPTA_TD.NNOFACT + WHERE w_PATFACTCPTA_TD.zero_compta <> '1' AND NTYPLIG < 0 + GROUP BY 1,2 + HAVING SUM(CSOMDUE) <> 0 + ) subview + WHERE w_PATFACTCPTA_TD.NNOFACT = subview.NNOFACT AND + date(w_PATFACTCPTA_TD.DDATECR) = subview.DDATECR AND + CSOMDUE <> 0 + ; + + + UPDATE w_PATFACTCPTA_TD + SET type_tiers_payant = + CASE + WHEN TREFCPTE LIKE 'T%' THEN '1' + WHEN TREFCPTE LIKE 'C%' THEN '2' + WHEN TREFCPTE LIKE 'P%' THEN '0' + ELSE '' END + WHERE substr(TREFCPTE,1,1) in ('T','C','P') + ; + + UPDATE w_PATFACTCPTA_TD + SET type_tiers_payant = t_tiers_payant.type_tiers_payant + FROM activite[PX].t_tiers_payant + WHERE t_tiers_payant.code_original = TREFCPTE AND + w_PATFACTCPTA_TD.type_tiers_payant = '' + ; + + + UPDATE w_factures + SET code_vente = '1', + date_vente = date(DDATECR), + mois_vente = to_char(date(DDATECR),'YYYYMM')::numeric + FROM + ( + SELECT NNOFACT_CTI, MIN(DDATECR) AS DDATECR + FROM w_PATFACTCPTA_TD + WHERE CSOMDUE <> 0 AND zero_compta <> '1' + GROUP BY 1 + HAVING SUM(CSOMDUE) <> 0 + ) subview + WHERE w_factures.no_facture = NNOFACT_CTI AND + date_vente <> date(DDATECR) + ; + + -- Sur les factures qui d'annulent le même jour, enlever montant comptabilisé + UPDATE w_factures + SET zero_compta = '1'::text + WHERE NIDFACT IN (SELECT XNIDFACT FROM w_PATFACTCPTA_TD WHERE zero_compta = '1') + ; + + drop table if exists temp.w_w_factures; create table temp.w_w_factures AS select * from w_factures; + + + + -- Ajout des factures + + + UPDATE w_factures SET + montant_facture_1_c = CASE WHEN type_facture <> '1' THEN subview.montant_facture_1 ELSE 0 - subview.montant_facture_1 END, + montant_facture_2_c = CASE WHEN type_facture <> '1' THEN subview.montant_facture_2 ELSE 0 - subview.montant_facture_2 END, + montant_facture_0_c = CASE WHEN type_facture <> '1' THEN subview.montant_facture_0 ELSE 0 - subview.montant_facture_0 END, + montant_comptabilise_1_c = CASE WHEN zero_compta = '1' THEN 0 WHEN type_facture <> '1' THEN subview.montant_facture_1 ELSE 0 - subview.montant_facture_1 END, + montant_comptabilise_2_c = CASE WHEN zero_compta = '1' THEN 0 WHEN type_facture <> '1' THEN subview.montant_facture_2 ELSE 0 - subview.montant_facture_2 END, + montant_comptabilise_0_c = CASE WHEN zero_compta = '1' THEN 0 WHEN type_facture <> '1' THEN subview.montant_facture_0 ELSE 0 - subview.montant_facture_0 END + FROM + ( + SELECT XNIDFACT, + SUM(CPRIXACTSS) AS montant_facture_1, + SUM(CPRIXACTCMP) AS montant_facture_2, + SUM(CPRIXACTPAT) AS montant_facture_0 + FROm prod_sano.PATFACTACT_TD + GROUP BY 1 + ) subview + WHERE w_factures.NIDFACT = subview.XNIDFACT + ; + + + + + UPDATE w_factures SET + montant_facture_c = montant_facture_1_c + montant_facture_2_c + montant_facture_0_c, + montant_comptabilise_c = montant_comptabilise_1_c + montant_comptabilise_2_c + montant_comptabilise_0_c, + montant_facture_h = montant_facture_1_h + montant_facture_2_h + montant_facture_0_h, + montant_comptabilise_h = montant_comptabilise_1_h + montant_comptabilise_2_h + montant_comptabilise_0_h + ; + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_14'); + + + TRUNCATE activite[PX].p_factures + ; + + + INSERT INTO activite[PX].p_factures ( + oid, + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + type_facture, + nb_rejets, + code_facture, + date_facture, + code_vente, + mois_vente, + date_vente, + code_cloture, + + particularite_t2a, + + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + + + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + + date_solde_reference, + date_solde_reference_c, + date_solde_reference_h, + date_solde_reference_0_c, + date_solde_reference_1_c, + date_solde_reference_2_c, + date_solde_reference_22_c, + date_solde_reference_0_h, + date_solde_reference_1_h, + date_solde_reference_2_h, + date_solde_reference_22_h, + + delai_facture, + delai_solde, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + + + date_encours, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_c + + ) + + SELECT + oid, + sejour_id, + no_sejour, + no_facture, + w_factures.no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + type_facture, + nb_rejets, + code_facture, + date_facture, + code_vente, + mois_vente, + date_vente, + code_cloture, + + particularite_t2a, + + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + CASE WHEN date_expedition <> '00010101' THEN date_expedition ELSE '20991231' END, + CASE WHEN date_expedition_0 <> '00010101' THEN date_expedition_0 ELSE '20991231' END, + CASE WHEN date_expedition_1 <> '00010101' THEN date_expedition_1 ELSE '20991231' END, + CASE WHEN date_expedition_2 <> '00010101' THEN date_expedition_2 ELSE '20991231' END, + CASE WHEN date_expedition_22 <> '00010101' THEN date_expedition_22 ELSE '20991231' END, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + + CASE WHEN date_solde <> '00010101' THEN date_solde ELSE '20991231' END, + CASE WHEN date_solde_c <> '00010101' THEN date_solde_c ELSE '20991231' END, + CASE WHEN date_solde_h <> '00010101' THEN date_solde_h ELSE '20991231' END, + CASE WHEN date_solde_0_c <> '00010101' THEN date_solde_0_c ELSE '20991231' END, + CASE WHEN date_solde_0_h <> '00010101' THEN date_solde_0_h ELSE '20991231' END, + CASE WHEN date_solde_1_c <> '00010101' THEN date_solde_1_c ELSE '20991231' END, + CASE WHEN date_solde_1_h <> '00010101' THEN date_solde_1_h ELSE '20991231' END, + CASE WHEN date_solde_2_c <> '00010101' THEN date_solde_2_c ELSE '20991231' END, + CASE WHEN date_solde_2_h <> '00010101' THEN date_solde_2_h ELSE '20991231' END, + CASE WHEN date_solde_22_c <> '00010101' THEN date_solde_22_c ELSE '20991231' END, + CASE WHEN date_solde_22_h <> '00010101' THEN date_solde_22_h ELSE '20991231' END, + + + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + + '20991231', + '20991231', + '20991231', + '20991231', + '20991231', + '20991231', + '20991231', + '20991231', + '20991231', + '20991231', + '20991231', + + delai_facture, + delai_solde, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + + date_encours, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_c + + FROM w_factures + WHERE oid NOT IN (SELECT oid FROM activite[PX].p_factures); + + UPDATE activite[PX].p_factures + SET date_fin = p_sejours.date_sortie + FROM activite[PX].p_sejours + WHERE p_factures.no_sejour = p_sejours.no_sejour AND + p_factures.date_fin > p_sejours.date_sortie + ; + + UPDATE activite[PX].p_factures + SET date_debut = p_sejours.date_entree + FROM activite[PX].p_sejours + WHERE p_factures.no_sejour = p_sejours.no_sejour AND + p_factures.date_debut < p_sejours.date_entree + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_14'); + + + + + UPDATE activite[PX].p_factures + SET facture_od_avoir_id = p_factures_od_avoir.oid + FROM activite[PX].p_factures p_factures_od_avoir + WHERE p_factures.no_facture_od_avoir = p_factures_od_avoir.no_facture AND + p_factures.no_facture_od_avoir <> ''; + + + + UPDATE activite[PX].p_sejours + SET est_sans_facturation = '1' + WHERE lieu_sortie_id IN + (SELECT oid FROM activite[PX].t_lieux WHERE + service_facturation_id IN + (SELECT oid FROM activite[PX].t_services_facturation WHERE est_sans_facturation = '1') OR + unite_fonctionnelle_id IN + (SELECT oid FROM activite[PX].t_unites_fonctionnelles WHERE est_sans_facturation = '1') + ); + + + -- Séjours sans facture + + DROP TABLE IF EXISTS w_factures_trous; + CREATE TEMP TABLE w_factures_trous AS + SELECT + p_sejours.finess, + p_sejours.no_sejour, + p_sejours.date_entree, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.code_cp_demandee, + COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire, + p_sejours.code_sorti, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie, + MAX(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END) AS date_fin_facture, + date(MAX(COALESCE(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN date_sortie ELSE p_factures.date_fin END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours + FROM activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND no_facture NOT LIKE 'E%' + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE p_sejours.etat = '' AND p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND date_entree <= now() AND p_sejours.type_sejour <> '6' AND p_sejours.type_sejour <> '9' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11; + + + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee, + date_debut, + date_fin) + SELECT finess, + no_sejour, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee , + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12 + HAVING MAX(LEAST(date_fin_encours, p_calendrier.date)) >= '[ENV_ADM_ANNEEDEBUT]0101' + ; + + + + ]]> + + + + + + + + + + + + 0 THEN 100-(NTAUXSS*100) ELSE 0 END AS taux_0, + NTAUXSS*100 AS taux_1, + CASE WHEN CPRIXACTCMP <> 0 THEN 100-(NTAUXSS*100) ELSE 0 END AS taux_2, + 0::numeric AS taux_22, + PATFACTACT_TD.CPUACTHT, + 0::bigint AS lieu_id, + CASE WHEN type_facture = '1' THEN -1 ELSE 1 END * PATFACTACT_TD.NQTACTE AS nb_prestation, + CASE WHEN zero_compta = '1' THEN 0 WHEN type_facture = '1' THEN -1 ELSE 1 END * (CPRIXACTSS + CPRIXACTCMP + CPRIXACTPAT) AS montant_comptabilise, + CASE WHEN zero_compta = '1' THEN 0 WHEN type_facture = '1' THEN -1 ELSE 1 END * CPRIXACTPAT AS montant_comptabilise_0, + CASE WHEN zero_compta = '1' THEN 0 WHEN type_facture = '1' THEN -1 ELSE 1 END * CPRIXACTSS AS montant_comptabilise_1, + CASE WHEN zero_compta = '1' THEN 0 WHEN type_facture = '1' THEN -1 ELSE 1 END * CPRIXACTCMP AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_comptabilisation_id, + 1::bigint AS origine_facturation_id, + w_factures.oid AS facture_id, + 0::bigint AS compte_produit_id + FROM prod_sano.PATFACTACT_TD + JOIN w_factures ON w_factures.NIDFACT = PATFACTACT_TD.XNIDFACT + LEFT JOIN activite[PX].t_rubriques_facturation ON PATFACTACT_TD.XNNUMACT = t_rubriques_facturation.code_original + LEFT JOIN activite.t_prestations ON PATFACTACT_TD.TCODTELE = t_prestations.code + ; + + -- Regrouper Rubriques avec code en double + DROP TABLE IF EXISTS w_rubriques; + CREATE TEMP TABLE w_rubriques AS + SELECT code, (MIN(Array[CASE WHEN statut = 'P' THEN 0 ELSE 1 END::numeric,oid::numeric]))[2]::bigint AS oid, (MIN(Array[to_char(oid,'FM000000000000'),texte]))[2] AS texte, base.cti_array_accum(oid) AS oid_array + FROM activite[PX].t_rubriques_facturation + GROUP BY 1 + ; + + UPDATE activite[PX].t_rubriques_facturation + SET statut = CASE WHEN t_rubriques_facturation.oid = w_rubriques.oid THEN 'P' ELSE '' END + FROM w_rubriques + WHERE t_rubriques_facturation.oid = ANY(oid_array) AND + statut IS DISTINCT FROM CASE WHEN t_rubriques_facturation.oid = w_rubriques.oid THEN 'P' ELSE '' END + ; + + + UPDATE activite[PX].p_factures_lignes_c + SET rubrique_facturation_id = w_rubriques.oid, rubrique_comptabilisation_id = w_rubriques.oid + FROM w_rubriques + WHERE p_factures_lignes_c.rubrique_facturation_id = ANY(oid_array) AND + p_factures_lignes_c.rubrique_facturation_id <> w_rubriques.oid + ; + + + + -- Eclatement des supplements par jour + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + p_factures_lignes_c.CTID AS from_CTID, + t_prestations.code AS prestation_code, + date(p_sejours.date_entree) AS date_debut_ghs, + date(p_sejours.date_sortie - interval '1 day') AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN t_prestations.code = 'GHS' THEN date(date_entree + interval '1 day') ELSE date(p_factures_lignes_c.date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN t_prestations.code = 'GHS' THEN date(p_sejours.date_sortie - interval '1 day') ELSE date(p_factures_lignes_c.date_debut + ((ABS(nb_prestation)-1) || ' day')::interval) END AS date_fin_det, + ABS(CASE WHEN t_prestations.code = 'GHS' THEN date(date_sortie) - date(date_entree) ELSE nb_prestation END) AS nb_det, + p_factures_lignes_c.* + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND p_sejours.etat = '' + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + ( + code IN ('PJ', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (t_prestations.code = 'GHS' AND p_sejours.type_sejour != '5' AND date(date_sortie) - date(date_entree) > 1)) ; + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM activite[PX].p_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture AND + w_factures_lignes_sup_c.prestation_code = 'GHS'; + + + CREATE INDEX w_factures_lignes_sup_c_i1 + ON w_factures_lignes_sup_c + USING btree + (date_debut); + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + from_CTID, + no_facture, + date AS date_debut, + date AS date_fin, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + compte_produit_id, + round(montant_facture / ABS(nb_det),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + round(montant_comptabilise / ABS(nb_det),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_det),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_det),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_det),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_det),2) AS montant_comptabilise_22, + rubrique_comptabilisation_id, + round(montant_encours / ABS(nb_det),2) AS montant_encours, + round(montant_encours_0 / ABS(nb_det),2) AS montant_encours_0, + round(montant_encours_1 / ABS(nb_det),2) AS montant_encours_1, + round(montant_encours_2 / ABS(nb_det),2) AS montant_encours_2, + round(montant_encours_22 / ABS(nb_det),2) AS montant_encours_22, + round(montant_facture_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_actes_inclus_dans_sejour, + round(montant_facture_0_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_0_actes_inclus_dans_sejour, + round(montant_facture_1_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_1_actes_inclus_dans_sejour, + round(montant_facture_2_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_2_actes_inclus_dans_sejour, + round(montant_facture_22_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + round(montant_comptabilise_budget_global_1 / ABS(nb_det),2) AS montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON date_debut BETWEEN p_calendrier.date - ABS(nb_det)::integer + 1 AND p_calendrier.date AND + p_calendrier.date <> date_debut ; + ; + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT from_CTID, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + + UPDATE activite[PX].p_factures_lignes_c + SET + date_fin = p_factures_lignes_c.date_debut, + nb_rubrique = p_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_sup_tot.nb_rubrique, + nb_prestation = p_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_sup_tot.nb_prestation, + montant_facture = p_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = p_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = p_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = p_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = p_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = p_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = p_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = p_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = p_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = p_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22, + montant_encours = p_factures_lignes_c.montant_encours - w_factures_lignes_sup_c_sup_tot.montant_encours, + montant_encours_0 = p_factures_lignes_c.montant_encours_0 - w_factures_lignes_sup_c_sup_tot.montant_encours_0, + montant_encours_1 = p_factures_lignes_c.montant_encours_1 - w_factures_lignes_sup_c_sup_tot.montant_encours_1, + montant_encours_2 = p_factures_lignes_c.montant_encours_2 - w_factures_lignes_sup_c_sup_tot.montant_encours_2, + montant_encours_22 = p_factures_lignes_c.montant_encours_22 - w_factures_lignes_sup_c_sup_tot.montant_encours_22, + montant_facture_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 = p_factures_lignes_c.montant_comptabilise_budget_global_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup_tot + WHERE p_factures_lignes_c.CTID = from_CTID; + + + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c_sup; + + + -- Lieu exécution + + UPDATE activite[PX].p_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_factures , + activite[PX].p_mouvements_sejour + WHERE + p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + p_factures_lignes_c.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + p_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + + UPDATE activite[PX].p_factures_lignes_c + SET lieu_id = p_sejours.lieu_sortie_id + FROM + activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE + p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures_lignes_c.lieu_id = 0; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_8'); + + + SELECT activite[PX].cti_reorganize_rubrique_facture_c('activite[PX].p_factures_lignes_c'); + + ; + + -- Factures référence + DROP TABLE IF EXISTS w_sejours_facture_reference; + + CREATE TEMP TABLE w_sejours_facture_reference AS + SELECT + p_sejours.no_sejour, + CASE WHEN avec_facturation_intermediaire IS DISTINCT FROM '1' THEN p_sejours.date_sortie ELSE p_factures.date_fin END AS date_fin, + MIN(CASE WHEN avec_facturation_intermediaire IS DISTINCT FROM '1' THEN p_sejours.date_entree ELSE p_factures.date_debut END) AS date_debut, + MAX(p_factures.no_facture) AS no_facture_last, + MAX(CASE WHEN type_facture <> '1' AND type_facture <> 'X' AND type_facture <> 'P' THEN p_factures.no_facture ELSE null END) AS no_facture_reference_last, + (MAX(ARRAY[to_char(p_factures_lignes_c.taux_1,'FM00000'),CASE WHEN type_facture <> '1' AND type_facture <> 'X' AND type_facture <> 'P' AND + (t_prestations.code IN ('GHS','PJ') OR (p_factures.no_facture LIKE '%BG' AND p_sejours.type_sejour IN ('1','2','5'))) THEN p_factures.no_facture ELSE NULL END]))[2] AS no_facture_reference_sejour_last, + COUNT(DISTINCT p_factures.no_facture) AS nb_factures, + MAX(avec_facturation_intermediaire) AS avec_facturation_intermediaire + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_lieux ON p_sejours.lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + LEFT JOIN activite[PX].p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + LEFT JOIN activite.t_prestations ON p_factures_lignes_c.prestation_id = t_prestations.oid AND t_prestations.code IN ('GHS','PJ') + GROUP BY 1,2; + + + CREATE INDEX w_sejours_facture_reference_i1 + ON w_sejours_facture_reference + USING btree + (no_sejour); + + UPDATE activite[PX].p_factures + SET no_facture_reference = COALESCE(no_facture_reference_sejour_last, no_facture_reference_last, no_facture_last) + FROM w_sejours_facture_reference + JOIN activite[PX].p_sejours ON p_sejours.no_sejour = w_sejours_facture_reference.no_sejour + WHERE p_factures.no_sejour = w_sejours_facture_reference.no_sejour AND + ( + p_factures.date_fin = w_sejours_facture_reference.date_fin OR + p_factures.date_fin = p_sejours.date_sortie AND avec_facturation_intermediaire IS DISTINCT FROM '1' + + ) AND + p_factures.no_facture_reference <> COALESCE(no_facture_reference_sejour_last, no_facture_reference_last, no_facture_last); + + UPDATE activite[PX].p_factures + SET facture_reference_id = p_factures_references.oid + FROM activite[PX].p_factures p_factures_references + WHERE p_factures.no_facture_reference = p_factures_references.no_facture + AND p_factures.facture_reference_id <> p_factures_references.oid; + + + ]]> + + + + + 0 + GROUP BY 1,2,3,4,5 + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_8'); + + + -- Maj montants regles dans factures + UPDATE activite[PX].p_factures SET + montant_regle_c = subview.montant_regle, + montant_regle_0_c = subview.montant_regle_0, + montant_regle_1_c = subview.montant_regle_1, + montant_regle_2_c = subview.montant_regle_2, + date_solde_c = subview.date_solde, + date_solde_0_c = subview.date_solde_0, + date_solde_1_c = subview.date_solde_1, + date_solde_2_c = subview.date_solde_2 + FROM + ( + SELECT + no_facture, + SUM(montant_regle) AS montant_regle, + SUM(montant_regle_0) AS montant_regle_0, + SUM(montant_regle_1) AS montant_regle_1, + SUM(montant_regle_2) AS montant_regle_2, + MAX(date_comptable) AS date_solde, + MAX(CASE WHEN montant_regle_0 <> 0 THEN date_comptable ELSE '00010101' END) AS date_solde_0, + MAX(CASE WHEN montant_regle_1 <> 0 THEN date_comptable ELSE '00010101' END) AS date_solde_1, + MAX(CASE WHEN montant_regle_2 <> 0 THEN date_comptable ELSE '00010101' END) AS date_solde_2 + FROM activite[PX].p_factures_soldes_c + WHERE montant_regle <> 0 OR + montant_regle_0 <> 0 OR + montant_regle_1 <> 0 OR + montant_regle_2 <> 0 + GROUP BY 1 + ) subview + WHERE p_factures.no_facture = subview.no_facture + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + = '[ENV_ADM_ANNEEDEBUT]0101' AND + CSOMDUE <> 0 + GROUP BY 1 + UNION + SELECT + date(DDATENC) AS date_comptable, + 0::numeric AS montant_ventes_c, + SUM(CSOMENC) AS montant_reglements_c + FROM w_PATFACTCPTA_TD + WHERE date(DDATENC) >= '[ENV_ADM_ANNEEDEBUT]0101' AND + CSOMENC <> 0 + GROUP BY 1 + ) subview + GROUP BY 1; + + + + TRUNCATE activite[PX].p_factures_comptables; + + INSERT INTO activite[PX].p_factures_comptables( + no_facture, + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_ventes_h, + montant_reglements_h + ) + SELECT + no_facture, + date_comptable, + SUM(montant_ventes_c), + SUM(montant_reglements_c), + 0::numeric AS montant_ventes_h, + 0::numeric AS montant_reglements_h + FROM + ( + SELECT + NNOFACT_CTI AS no_facture, + date(DDATECR) AS date_comptable, + SUM(CSOMDUE) AS montant_ventes_c, + 0::numeric AS montant_reglements_c + FROM + w_PATFACTCPTA_TD + WHERE + date(DDATECR) >= '[ENV_ADM_ANNEEDEBUT]0101' AND + CSOMDUE <> 0 + GROUP BY 1,2 + UNION + SELECT + NNOFACT_CTI AS no_facture, + date(DDATENC) AS date_comptable, + 0::numeric AS montant_ventes_c, + SUM(CSOMENC) AS montant_reglements_c + FROM + w_PATFACTCPTA_TD + WHERE + date(DDATENC) >= '[ENV_ADM_ANNEEDEBUT]0101' AND + CSOMENC <> 0 + GROUP BY 1,2 + ) subview + GROUP BY 1,2 + ; + + ]]> + + + + + + + + + + + + + '' + GROUP BY TCODDEST; + + INSERT INTO activite[PX].t_tiers_payant(code_original, code, type_tiers_payant, texte, texte_court) + SELECT TCODDEST, TCODDEST, '2', MAX(TLIBELLE), MAX(TLIBELLE) + FROM prod_sano.LISTFACTDEST_TP + WHERE TCODDEST IN (SELECT TSPECCODE FROM prod_sano.PATFACT_TD) AND + TCODDEST NOT IN (SELECT code_original FROM activite[PX].t_tiers_payant WHERE code_original IS NOT NULL) AND + TCODDEST <> '' + GROUP BY TCODDEST; + + + + ]]> + + + + + + + + 0 AND + NINDEX NOT IN (SELECT code_original FROM activite[PX].t_services_facturation WHERE code_original IS NOT NULL) AND + NINDEX IN (SELECT XNCLEUF FROM prod_sano.PATHOSP_TD ) + ORDER BY 1; + + UPDATE activite[PX].t_services_facturation + SET mode_traitement_id = COALESCE(t_modes_traitement.oid,0) + FROM prod_sano.TOPOUF_TP + LEFT JOIN base.t_modes_traitement ON substr(TCODSSUF,1,2) = t_modes_traitement.code + WHERE t_services_facturation.code_original = NINDEX AND + COALESCE(mode_traitement_id,0) = 0 AND + COALESCE(mode_traitement_id,0) <> COALESCE(t_modes_traitement.oid,0); + + + UPDATE activite[PX].t_services_facturation + SET dmt_id = COALESCE(t_dmt.oid,0) + FROM prod_sano.TOPOUF_TP + LEFT JOIN base.t_dmt ON substr(TCODSSUF,3,3) = t_dmt.code + WHERE t_services_facturation.code_original = NINDEX AND + COALESCE(dmt_id,0) = 0 AND + COALESCE(dmt_id,0) <> COALESCE(t_dmt.oid,0); + + + + + -- Unités fonctionnelles + INSERT INTO activite[PX].t_unites_fonctionnelles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_fonctionnelles); + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT NINDEX, NINDEX, TLIBELLE, TLIBELLE + FROM prod_sano.TOPOUF_TP + WHERE NINDEX <> 0 AND + NINDEX NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles WHERE code_original IS NOT NULL) AND + NINDEX IN (SELECT XNCLEUF FROM prod_sano.PATHOSP_TD ) + ORDER BY 1; + + + + -- Unités médicales + INSERT INTO activite[PX].t_unites_medicales(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_medicales); + + + -- Activités + INSERT INTO activite[PX].t_activites(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_activites); + + + + + -- Etages et lits + + INSERT INTO activite[PX].t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_etages); + + + + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court) + SELECT to_char(NCLESECT,'FM999999999999'), to_char(NCLESECT,'FM999999999999'), to_char(NCLESECT,'FM999999999999'), to_char(NCLESECT,'FM999999999999') + FROM prod_sano.TOPOSECT_TP + WHERE NINDEX IN (SELECT XNCLELIT FROM prod_sano.PATHOSP_TD) AND + to_char(NCLESECT,'FM999999999999') NOT IN (SELECT code_original FROM activite[PX].t_etages WHERE code_original IS NOT NULL) + GROUP BY 1 + ; + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court) + SELECT to_char(NINDEX,'FM999999999999'), to_char(NINDEX,'FM999999999999'), to_char(NINDEX,'FM999999999999'), to_char(NINDEX,'FM999999999999') + FROM prod_sano.TOPOSECT_TP + WHERE NINDEX IN (SELECT NCLESECT FROM prod_sano.PATHOSP_TD) AND + to_char(NINDEX,'FM999999999999') NOT IN (SELECT code_original FROM activite[PX].t_etages WHERE code_original IS NOT NULL) + GROUP BY 1 + ; + + + UPDATE activite[PX].t_etages + SET texte = TLIBELLE, texte_court = TLIBELLE + FROM prod_sano.TOPOSECT_TP + WHERE t_etages.code_original = to_char(NINDEX,'FM999999999999') AND + t_etages.texte = t_etages.code_original + ; + + + + INSERT INTO activite[PX].t_lits(oid, code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0, 'N' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_lits); + + + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT to_char(NINDEX,'FM999999999999'), TLIBELLE, TLIBELLE, TLIBELLE, t_etages.oid, CASE WHEN TCODFAC = 'CPC' THEN 'O' ELSE 'N' END + FROM prod_sano.TOPOSECT_TP + JOIN activite[PX].t_etages ON t_etages.code_original = to_char(NCLESECT,'FM999999999999') + WHERE NINDEX IN (SELECT XNCLELIT FROM prod_sano.PATHOSP_TD) AND + to_char(NINDEX,'FM999999999999') NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL) + ; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT to_char(NINDEX,'FM999999999999'), TLIBELLE, TLIBELLE, TLIBELLE, t_etages.oid, CASE WHEN TCODFAC = 'CPC' THEN 'O' ELSE 'N' END + FROM prod_sano.TOPOSECT_TP + JOIN activite[PX].t_etages ON t_etages.code_original = to_char(NCLESECT,'FM999999999999') + WHERE NINDEX IN (SELECT XNCLELIT FROM prod_sano.PATHISTLIT_TD) AND + to_char(NINDEX,'FM999999999999') NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL) + ; + + + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT code_original, code, texte || ' - sans lit', texte_court || ' - sans lit', oid, 'N' + FROM activite[PX].t_etages + WHERE oid <> 0 AND + code_original NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL) + ; + + ]]> + + + + + + + + + + + + 'PJ' THEN t_prestations.code ELSE 'PJS' END AS prestation_mcode + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].t_lieux ON lieu_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_services_facturation.oid = service_facturation_id + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE date_fin >= '20170701' AND + date_debut >= '20170701' AND + type_t2a = '2' AND + prestation_id = ANY (SELECT to_id FROM activite.t_listes_contenu JOIN activite.t_listes ON liste_id = t_listes.oid AND t_listes.code = 'DMAP_MFS') AND + montant_comptabilise <> 0 AND + montant_comptabilise_1 <> 0 AND + round(prix_unitaire * nb_prestation,2) <> montant_comptabilise AND + abs(round(prix_unitaire * nb_prestation,2)) <> abs(montant_comptabilise)+(nb_prestation*18) + ORDER BY no_facture, prestation_id + ; + + -- Calcul tarif plein + UPDATE w_moins10 SET + montant_facture_1 = + CASE WHEN prestation_code = 'PJ' OR type_valorisation_non_facture = 'PJ' THEN round(prix_unitaire * nb_prestation * taux_1 / 100,2) - montant_fj + ELSE round(prix_unitaire * nb_prestation * taux_1 / 100,2) END, + montant_facture = + CASE WHEN prestation_code = 'PJ' OR type_valorisation_non_facture = 'PJ' THEN round(prix_unitaire * nb_prestation * taux_1 / 100,2) - montant_fj + ELSE round(prix_unitaire * nb_prestation * taux_1 / 100,2) END + + (montant_facture_2+montant_facture_22+montant_facture_0) + ; + + -- Génération prestations spécifiques + INSERT INTO activite.t_prestations (code, texte, texte_court) + SELECT prestation_mcode, t_prestations.texte || ' (-10%)', t_prestations.texte || ' (-10%)' + FROM w_moins10 + JOIN activite.t_prestations on prestation_id = t_prestations.oid + WHERE prestation_mcode NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + GROUP BY 1,2,3 + ; + + -- Maj tarif plein + UPDATE activite[PX].p_factures_lignes_c + SET montant_facture = w_moins10.montant_facture, montant_facture_1 = w_moins10.montant_facture_1 + FROM w_moins10 + WHERE p_factures_lignes_c.CTID = w_moins10.CTID_orig; + ; + + -- Génération -10% + UPDATE w_moins10 SET + montant_facture = montant_comptabilise - montant_facture, + montant_facture_1 = montant_comptabilise_1 - montant_facture_1, + montant_facture_2 = montant_comptabilise_2 - montant_facture_2, + montant_facture_22 = montant_comptabilise_22 - montant_facture_22, + montant_facture_0 = montant_comptabilise_0 - montant_facture_0, + montant_comptabilise = 0, + montant_comptabilise_1 = 0, + montant_comptabilise_2 = 0, + montant_comptabilise_22 = 0, + montant_comptabilise_0 = 0, + prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE t_prestations.code = prestation_mcode + ; + + ALTER TABLE w_moins10 DROP COLUMN CTID_orig; + ALTER TABLE w_moins10 DROP COLUMN montant_fj; + ALTER TABLE w_moins10 DROP COLUMN prestation_code; + ALTER TABLE w_moins10 DROP COLUMN prestation_mcode; + ALTER TABLE w_moins10 DROP COLUMN type_valorisation_non_facture; + + INSERT INTO activite[PX].p_factures_lignes_c + SELECT * + FROM w_moins10 + WHERE montant_facture <> 0 + ; + + + SELECT activite[PX].cti_reorganize_rubrique_facture_c('activite[PX].p_factures_lignes_c'); + ]]> + + + + + + + + + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour + + FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY p_sejours.no_sejour; + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = CASE WHEN w_sejours_total.date_expedition_0 <> '0001-01-01' THEN w_sejours_total.date_expedition_0 ELSE '2099-12-31' END, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = CASE WHEN w_sejours_total.date_expedition_1 <> '0001-01-01' THEN w_sejours_total.date_expedition_1 ELSE '2099-12-31' END, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = CASE WHEN w_sejours_total.date_expedition_2 <> '0001-01-01' THEN w_sejours_total.date_expedition_2 ELSE '2099-12-31' END, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = CASE WHEN w_sejours_total.date_expedition_22 <> '0001-01-01' THEN w_sejours_total.date_expedition_22 ELSE '2099-12-31' END, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_0 <> '0001-01-01' THEN w_sejours_total.date_expedition_0 ELSE '2099-12-31' END OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_1 <> '0001-01-01' THEN w_sejours_total.date_expedition_1 ELSE '2099-12-31' END OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_2 <> '0001-01-01' THEN w_sejours_total.date_expedition_2 ELSE '2099-12-31' END OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_22 <> '0001-01-01' THEN w_sejours_total.date_expedition_22 ELSE '2099-12-31' END OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour + + ); + + UPDATE activite[PX].p_sejours set + ghm_id = t_ghs.ghm_id::bigint + FROM base.t_ghs + WHERE + p_sejours.ghs_id = t_ghs.oid + AND p_sejours.ghm_id = 0 + AND p_sejours.ghs_id > 0; + + UPDATE activite[PX].p_sejours SET + + delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END, + delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END, + delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END, + delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END, + + delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END, + delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END, + + delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END, + delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END, + + delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END, + delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END, + + delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END, + delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END + + WHERE + + delai_groupage IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END + OR + delai_facture IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END + OR + delai_expedition IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END + OR + delai_solde IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END + OR + + delai_expedition_0 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END + OR + delai_solde_0 IS DISTINCT FROM CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END + OR + + delai_expedition_1 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END + OR + delai_solde_1 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END + OR + + delai_expedition_2 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END + OR + delai_solde_2 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END + OR + + delai_expedition_22 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END + OR + delai_solde_22 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END; + + + ]]> + + + + + + + + + + diff --git a/import_activite/iCTI_import_activite_SHARE.XML b/import_activite/iCTI_import_activite_SHARE.XML new file mode 100644 index 0000000..3096353 --- /dev/null +++ b/import_activite/iCTI_import_activite_SHARE.XML @@ -0,0 +1,6161 @@ + + + + + + + + + + + + + + + + + 0 + ; + + -- Services + UF vers service + UPDATE activite.t_lieux + SET service_facturation_id = t_transformation.to_id + FROM activite.t_transformation + WHERE t_lieux.service_facturation_id = t_transformation.service_facturation_id AND + t_lieux.unite_fonctionnelle_id = t_transformation.unite_fonctionnelle_id AND + t_transformation.type = 'UFSER' AND + t_transformation.to_id <> 0 + ; + + -- Services + UPDATE activite.t_lieux + SET service_facturation_id = t_transformation.to_id + FROM activite.t_transformation + WHERE t_lieux.service_facturation_id = t_transformation.service_facturation_id AND + t_transformation.type = 'SER' AND + t_transformation.to_id <> 0 + ; + + -- Unités fonctionnelles + UPDATE activite.t_lieux + SET unite_fonctionnelle_id = t_transformation.to_id + FROM activite.t_transformation + WHERE t_lieux.unite_fonctionnelle_id = t_transformation.unite_fonctionnelle_id AND + t_transformation.type = 'UF' AND + t_transformation.to_id <> 0 + ; + + -- Activites + UPDATE activite.t_lieux + SET activite_id = t_transformation.to_id + FROM activite.t_transformation + WHERE t_lieux.activite_id = t_transformation.activite_id AND + t_transformation.type = 'ACT' AND + t_transformation.to_id <> 0 + ; + + + -- Correction de comptes en double + UPDATE activite.t_compte + SET code = t_compte.code || '#' || indice::text + FROM + ( + SELECT code, max(oid) AS dupplicate_oid, count(*) AS indice + FROM activite.t_compte + WHERE oid <> 0 + GROUP BY 1 + HAVING count(*)>1 + ) subview + WHERE t_compte.oid = dupplicate_oid + ; + + UPDATE activite.t_compte + SET code = 'N/R' + WHERE oid = 0 + ; + + -- Prestation forcée + UPDATE activite.p_factures_lignes_c + SET prestation_id = t_service_rubrique.prestation_forcee_id + FROM activite.t_lieux, + activite.t_service_rubrique + WHERE lieu_id = t_lieux.oid AND + t_service_rubrique.service_facturation_id = t_lieux.service_facturation_id AND + t_service_rubrique.rubrique_facturation_id = p_factures_lignes_c.rubrique_facturation_id AND + t_service_rubrique.prestation_forcee_id <> 0 AND + p_factures_lignes_c.prestation_id IS DISTINCT FROM t_service_rubrique.prestation_forcee_id + ; + + UPDATE activite.p_factures_lignes_non_facturees_c p_factures_lignes_c + SET prestation_id = t_service_rubrique.prestation_forcee_id + FROM activite.t_lieux, + activite.t_service_rubrique + WHERE lieu_id = t_lieux.oid AND + t_service_rubrique.service_facturation_id = t_lieux.service_facturation_id AND + t_service_rubrique.rubrique_facturation_id = p_factures_lignes_c.rubrique_facturation_id AND + t_service_rubrique.prestation_forcee_id <> 0 AND + p_factures_lignes_c.prestation_id IS DISTINCT FROM t_service_rubrique.prestation_forcee_id + ; + + -- FJ non facturés qui sont à cheval sur plusieurs factures en cours SMR + -- Il faut ventiler par facture + DROP TABLE IF EXISTS w_factures_lignes_non_facturees_c_cheval; + CREATE TEMP TABLE w_factures_lignes_non_facturees_c_cheval AS + SELECT + p_factures_lignes_non_facturees_c.CTID AS from_ctid + , p_factures_lignes_non_facturees_c.no_facture + , facture_id + , p_factures_lignes_non_facturees_c.date_debut AS date_debut_ligne + , p_factures_lignes_non_facturees_c.date_fin AS date_fin_ligne + , p_factures_lignes_non_facturees_c.nb_rubrique + , p_factures_lignes_non_facturees_c.coefficient + , p_factures_lignes_non_facturees_c.rubrique_facturation_id + , p_factures_lignes_non_facturees_c.prestation_id + , p_factures_lignes_non_facturees_c.prix_unitaire + , p_factures_lignes_non_facturees_c.lieu_id + , p_factures_lignes_non_facturees_c.montant_encours + , p_factures_lignes_non_facturees_c.coefficient_mco + , p_factures_lignes_non_facturees_c.lpp_id + , p_factures_lignes_non_facturees_c.ucd_id + , p_factures.date_debut AS date_debut_facture + , p_factures.date_fin AS date_fin_facture + , p_factures_to.no_facture AS to_no_facture + , p_factures_to.oid AS to_facture_id + , base.cti_division( + p_factures_lignes_non_facturees_c.nb_rubrique * p_factures_lignes_non_facturees_c.prix_unitaire, + (p_factures_lignes_non_facturees_c.date_fin-p_factures_lignes_non_facturees_c.date_debut+1)::numeric + ) AS prix_unitaire_jour + , base.cti_division( + p_factures_lignes_non_facturees_c.montant_encours + , (p_factures_lignes_non_facturees_c.date_fin-p_factures_lignes_non_facturees_c.date_debut+1)::numeric + ) AS montant_encours_jour + , GREATEST(p_factures_to.date_debut, p_factures_lignes_non_facturees_c.date_debut) AS to_date_debut_ligne + , LEAST(p_factures_to.date_fin, p_factures_lignes_non_facturees_c.date_fin) AS to_date_fin_ligne + , 1::numeric AS to_nb_rubrique + , 0::numeric AS to_prix_unitaire + , 0::numeric AS to_montant_encours + FROM activite.p_factures_lignes_non_facturees_c + JOIN activite.p_factures on p_factures_lignes_non_facturees_c.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN activite.p_factures p_factures_to ON p_factures.no_sejour = p_factures_to.no_sejour + AND ( + p_factures_to.date_debut BETWEEN p_factures_lignes_non_facturees_c.date_debut AND p_factures_lignes_non_facturees_c.date_fin + OR p_factures_to.date_fin BETWEEN p_factures_lignes_non_facturees_c.date_debut AND p_factures_lignes_non_facturees_c.date_fin + ) + AND p_factures_to.code_facture = '0' + WHERE + p_factures.code_facture = '0' + AND t_services_facturation.avec_facturation_intermediaire = '1' + AND t_prestations.code IN ('FJ') + AND ( + p_factures_lignes_non_facturees_c.date_debut NOT BETWEEN p_factures.date_debut AND p_factures.date_fin + OR p_factures_lignes_non_facturees_c.date_fin NOT BETWEEN p_factures.date_debut AND p_factures.date_fin + ) + ; + + ANALYSE w_factures_lignes_non_facturees_c_cheval + ; + + + UPDATE w_factures_lignes_non_facturees_c_cheval SET + to_prix_unitaire = round((to_date_fin_ligne - to_date_debut_ligne + 1) * prix_unitaire_jour,2), + to_montant_encours = round((to_date_fin_ligne - to_date_debut_ligne + 1) * montant_encours_jour,2) + ; + + DELETE FROM activite.p_factures_lignes_non_facturees_c + WHERE CTID IN (SELECT from_CTID FROM w_factures_lignes_non_facturees_c_cheval) + ; + + INSERT INTO activite.p_factures_lignes_non_facturees_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id, + facture_id, + montant_encours, + coefficient_mco, + lpp_id, + ucd_id + ) + SELECT + to_no_facture, + to_date_debut_ligne, + to_date_fin_ligne, + to_nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + to_prix_unitaire, + lieu_id, + to_facture_id, + to_montant_encours, + coefficient_mco, + lpp_id, + ucd_id + FROM w_factures_lignes_non_facturees_c_cheval + ; + + ]]> + + + + + + + + 1 THEN email ELSE '' END + ; + + UPDATE activite.p_sejours + SET medecin_sejour_id = subview.medecin_sejour_id + FROM + ( + SELECT p_factures.no_sejour, + (MAX(ARRAY[to_char(p_factures_lignes_h.montant_facture,'FM000000000000'),medecin_facture_id::text]))[2]::bigint AS medecin_sejour_id + FROM activite.p_factures_lignes_h + JOIN activite.p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_sejours.type_sejour = '3' AND + p_sejours.medecin_sejour_id = 0 AND + medecin_facture_id <> 0 + GROUP BY 1 + ) subview + WHERE p_sejours.no_sejour = subview.no_sejour + ; + + ]]> + + + + + + + + 0 AND + montant_facture_0 = 0 AND + ( + taux_1+taux_2 = 100 AND + round(montant_facture_1,0) = round(montant_facture*taux_1/100,0) AND + round(montant_facture_2,0) = round(montant_facture*taux_2/100,0) + ) + ; + + UPDATE activite.p_factures_lignes_h SET + montant_facture = montant_facture+w_depassements_detail.montant_depassement, + montant_facture_0 = montant_facture_0+w_depassements_detail.montant_depassement + FROM w_depassements_detail + WHERE p_factures_lignes_h.no_facture = w_depassements_detail.no_facture AND + p_factures_lignes_h.CTID = fromCTID; + + UPDATE activite.p_factures SET + montant_facture_h = subview.montant_facture, + montant_facture_0_h = subview.montant_facture_0 + FROM ( + SELECT no_facture, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0 + FROM activite.p_factures_lignes_h + WHERE no_facture IN (SELECT no_facture FROM w_depassements_detail) + GROUP BY 1 + ) subview + WHERE p_factures.no_facture = subview.no_facture AND + p_factures.no_facture IN (SELECT no_facture FROM w_depassements_detail); + + UPDATE activite.p_sejours SET + montant_facture_h = subview.montant_facture_h, + montant_facture_0_h = subview.montant_facture_0_h + FROM ( + SELECT no_sejour, + SUM(montant_facture_h) AS montant_facture_h, + SUM(montant_facture_0_h) AS montant_facture_0_h + FROM activite.p_factures + WHERE no_facture IN (SELECT no_facture FROM w_depassements_detail) + GROUP BY 1 + ) subview + WHERE p_sejours.no_sejour = subview.no_sejour; + + -- Suppression montant dépassement sur avoirs et factures annulées (pour comptage des sejours avec dépassement) + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'DELDEPASSEMENTAVOIR', + 'Suppression dépassements sur avoirs', + '0', + '1=Suppression sur avoirs et factures annulées' + WHERE 'DELDEPASSEMENTAVOIR' NOT IN (SELECT code FROM activite.t_divers) + ; + + DROP TABLE IF EXISTS w_factures_avoir; + CREATE TEMP TABLE w_factures_avoir AS + SELECT p_factures.no_facture, p_factures.no_facture_od_avoir + FROM activite.p_factures + JOIN activite.p_factures p_factures_avoir ON p_factures.no_facture_od_avoir = p_factures_avoir.no_facture + JOIN activite.t_divers ON t_divers.code = 'DELDEPASSEMENTAVOIR' + WHERE t_divers.valeur = '1' AND + p_factures.type_facture = 'X' AND + p_factures.montant_facture_h = 0-p_factures_avoir.montant_facture_h AND + p_factures.montant_facture_h <> 0 + ; + ANALYSE w_factures_avoir + ; + + UPDATE activite.p_factures_lignes_h + SET montant_depassement = 0 + WHERE no_facture = ANY (SELECT w_factures_avoir.no_facture FROM w_factures_avoir) AND + montant_depassement <> 0 + ; + UPDATE activite.p_factures_lignes_h + SET montant_depassement = 0 + WHERE no_facture = ANY (SELECT w_factures_avoir.no_facture_od_avoir FROM w_factures_avoir) AND + montant_depassement <> 0 + ; + + ]]> + + + + + + + + '1' AND + p_sejours.code_sorti = '0' + GROUP BY 1 + HAVING ( + MAX(p_mouvements_sejour.date) < date((SELECT MAX(date) FROM activite.p_mouvements_sejour WHERE est_mouvement_previsionnel = '0') - interval '7 days') OR + (MAX(avec_facturation_intermediaire) <> '1' AND p_mouvements_sejour.no_sejour IN (SELECT no_sejour FROM activite.p_factures where code_facture = '1')) + ) + ) subview + WHERE p_sejours.no_sejour = subview.no_sejour + ; + + -- GHM et GHS selon PMSI + SELECT base.cti_execute( + 'DROP TABLE IF EXISTS w_sejours_ghm + ., + CREATE TEMP TABLE w_sejours_ghm AS + SELECT oid, no_sejour, date_naissance, p_sejours.ghm_id, p_sejours.ghs_id, date_entree, date_sortie, type_sejour + FROM activite.p_sejours + JOIN activite.p_patients ON p_sejours.no_patient = p_patients.no_patient + WHERE type_sejour IN (''1'',''2'',''5'',''6'') + ., + DROP TABLE IF EXISTS w_ghm_corres + ., + CREATE TEMP TABLE w_ghm_corres AS + SELECT t_ghm_p.code AS ghm_code, t_ghm_p.oid AS ghm_p_id, t_ghm_a.oid AS ghm_a_id + FROM pmsi.t_ghm t_ghm_p + JOIN base.t_ghm t_ghm_a ON t_ghm_a.code = t_ghm_p.code + WHERE t_ghm_p.code BETWEEN ''01 '' AND ''29 '' + ., + + DROP TABLE IF EXISTS w_ghs_corres + ., + CREATE TEMP TABLE w_ghs_corres AS + SELECT t_ghs_p.code AS ghs_code, t_ghs_p.oid AS ghs_p_id, t_ghs_a.oid AS ghs_a_id + FROM pmsi.t_ghs t_ghs_p + JOIN base.t_ghs t_ghs_a ON t_ghs_a.code = t_ghs_p.code + ., + UPDATE activite.p_sejours + SET + ghm_id = subview.ghm_id + ,ghs_id = CASE WHEN subview.ghs_id > 0 THEN subview.ghs_id ELSE p_sejours.ghs_id END + FROM + ( + SELECT p_sejours.no_sejour, ghm_a_id AS ghm_id, ghs_a_id AS ghs_id + FROM w_sejours_ghm p_sejours + JOIN activite.p_sejour_pmsi ON p_sejour_pmsi.sejour_id = p_sejours.oid + JOIN pmsi.p_rss ON p_sejour_pmsi.rss_id = p_rss.oid AND + date_trunc(''month'',p_sejours.date_sortie) = date_trunc(''month'',p_rss.date_sortie) AND + p_sejours.date_naissance = p_rss.date_naissance + JOIN w_ghm_corres ON p_rss.ghm_id = ghm_p_id + JOIN w_ghs_corres ON p_rss.ghs_id = ghs_p_id + WHERE (p_sejours.ghm_id <> ghm_a_id OR p_sejours.ghs_id <> ghs_a_id) AND + p_rss.ghm_id > 0 AND + p_rss.etat = '''' AND + (p_rss.en_cours = ''0'' OR p_rss.en_cours_etat IN (''V'',''F'')) + ) subview + WHERE p_sejours.no_sejour = subview.no_sejour + ',1) + WHERE 'p_rss' IN (SELECT tablename FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 'p_rss') + ; + + -- Date groupage selon PMSI + SELECT base.cti_execute( + 'UPDATE activite.p_sejours + SET date_groupage = subview.date_groupage + FROM + ( + SELECT + p_sejours.no_sejour + ,MAX(p_rss_etat.date_groupage) AS date_groupage + FROM activite.p_sejours + JOIN activite.p_sejour_pmsi ON p_sejour_pmsi.sejour_id = p_sejours.oid + JOIN pmsi.p_rss ON p_sejour_pmsi.rss_id = p_rss.oid AND + date_trunc(''month'',p_sejours.date_sortie) = date_trunc(''month'',p_rss.date_sortie) + JOIN pmsi.p_rss_etat ON p_rss_etat.rss_id = p_rss.oid + JOIN pmsi.t_ghm t_ghm_p ON p_rss.ghm_id = t_ghm_p.oid + WHERE type_sejour IN (''1'',''2'',''5'',''6'') AND + p_rss.ghm_id > 0 AND + p_rss_etat.date_groupage < ''20991231''::date AND + t_ghm_p.code NOT LIKE ''90%'' AND t_ghm_p.code NOT LIKE ''99%'' AND + (p_rss.en_cours = ''0'' OR p_rss.en_cours_etat IN (''V'',''F'')) + GROUP BY 1 + ) subview + WHERE p_sejours.no_sejour = subview.no_sejour AND + p_sejours.date_groupage IS DISTINCT FROM subview.date_groupage + ',1) + WHERE 'p_rss' IN (SELECT tablename FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 'p_rss') + ; + + UPDATE activite.p_factures SET + ghs_id = p_sejours.ghs_id, + gmt_id = p_sejours.gmt_id + FROM activite.p_sejours + WHERE p_factures.no_sejour = p_sejours.no_sejour AND + ( + p_factures.ghs_id IS DISTINCT FROM p_sejours.ghs_id OR + p_factures.gmt_id IS DISTINCT FROM p_sejours.gmt_id + ) + ; + + + -- Chambres particulières selon facturation + DROP TABLE IF EXISTS w_cp_facturees; + CREATE TEMP TABLE w_cp_facturees AS + SELECT no_sejour, p_factures_lignes_c.date_debut, SUM(montant_facture) + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_listes ON t_listes.code = 'CTI_SHO_R' + JOIN activite.t_listes_contenu ON t_listes.oid = t_listes_contenu.liste_id AND + rubrique_facturation_id = t_listes_contenu.to_id + WHERE p_factures_lignes_c.date_debut = p_factures_lignes_c.date_fin + GROUP BY 1,2 + HAVING SUM(montant_facture) > 0 + ; + + + UPDATE activite.p_mouvements_sejour SET + est_chambre_particuliere = '1', + nb_chambres_particulieres = 1, + est_chambre_particuliere_facturee = '1' + FROM w_cp_facturees + WHERE w_cp_facturees.no_sejour = p_mouvements_sejour.no_sejour AND + w_cp_facturees.date_debut = p_mouvements_sejour.date AND + ( + p_mouvements_sejour.heure_fin = 240000 OR + nb_sorties_directes = 1 OR + nb_ambulatoires = 1 OR + nb_externes = 1 + ) + ; + + -- Séjours ambulatoires avec prestation externe -> transformation + DROP TABLE IF EXISTS w_sejours_ambu_to_externe; + CREATE TEMP TABLE w_sejours_ambu_to_externe AS + SELECT p_sejours.no_sejour + FROM activite.p_sejours + JOIN activite.t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + JOIN activite.p_factures ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE t_prestations.code IN ('SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'ATU', 'FPU', 'FFM') AND + p_sejours.type_sejour = '2' AND + t_services_facturation.type_sejour NOT IN ('1','2','3','4','5','6','9') AND + montant_facture <> 0 + GROUP BY 1 + HAVING SUM(ABS(montant_facture)) > 0 AND SUM(montant_facture) <> 0 + ; + + UPDATE activite.p_sejours + SET type_sejour = '3' + WHERE no_sejour IN (SELECT no_sejour FROM w_sejours_ambu_to_externe) + ; + + UPDATE activite.p_mouvements_sejour + SET nb_externes = 1, nb_ambulatoires = 0 + WHERE nb_ambulatoires = 1 AND + no_sejour IN + (SELECT no_sejour FROM w_sejours_ambu_to_externe) + ; + + -- Séjours externes avec prestation ambu -> transformation + DROP TABLE IF EXISTS w_sejours_externe_to_ambu; + CREATE TEMP TABLE w_sejours_externe_to_ambu AS + SELECT p_sejours.no_sejour + FROM activite.p_sejours + JOIN activite.t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + JOIN activite.p_factures ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + LEFT JOIN activite.t_sejour ON p_sejours.no_sejour = t_sejour.no_sejour + WHERE t_prestations.code IN ('GHS') AND + p_sejours.type_sejour = '3' AND + ( + t_services_facturation.type_sejour NOT IN ('1','2','3','4','5','6','9') OR + p_sejours.ghm_id > 0 + ) AND + t_sejour.type_sejour IS DISTINCT FROM '3' AND + montant_facture <> 0 + GROUP BY 1 + HAVING SUM(ABS(montant_facture)) > 0 AND SUM(montant_facture) <> 0 + ; + + UPDATE activite.p_sejours + SET type_sejour = '2' + WHERE no_sejour IN (SELECT no_sejour FROM w_sejours_externe_to_ambu) + ; + + UPDATE activite.p_mouvements_sejour + SET nb_ambulatoires = 1, nb_externes= 0 + WHERE nb_externes = 1 AND + no_sejour IN + (SELECT no_sejour FROM w_sejours_externe_to_ambu) + ; + + -- Si Service sans facturation et sans mouvement, alors séjour fictif + UPDATE activite[PX].p_sejours + SET type_sejour = '9' + FROM activite[PX].t_lieux + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE lieu_sortie_id = t_lieux.oid AND + t_services_facturation.est_sans_mouvement = '1' AND + t_services_facturation.est_sans_facturation = '1' AND + p_sejours.type_sejour <> '9' + ; + + UPDATE activite[PX].p_sejours + SET lieu_sortie_id = 0 + WHERE lieu_sortie_id IS NULL + ; + + -- Idem si séjour sans acte et service sans acte fictif, alors séjour fictif + UPDATE activite[PX].p_sejours + SET type_sejour = '9' + WHERE + p_sejours.type_sejour != '9' AND + lieu_sortie_id = ANY( + SELECT t_lieux.oid FROM activite[PX].t_lieux + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE + t_services_facturation.sej_sans_acte_fictif = '1') AND + oid != ALL ( + SELECT DISTINCT p_sejours.oid FROM + activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour + LEFT JOIN activite[PX].p_factures_lignes_h ON p_factures.oid = p_factures_lignes_h.facture_id + LEFT JOIN activite[PX].p_factures_lignes_non_facturees_h ON p_factures.oid = p_factures_lignes_non_facturees_h.facture_id + WHERE (p_factures_lignes_h.facture_id IS NOT NULL OR + p_factures_lignes_non_facturees_h.facture_id IS NOT NULL) + ) + ; + + + -- Ajout ligne fictive dans mouvements séjour pour que chaque séjour ait au moins une ligne + -- dans les mouvements + INSERT INTO activite.p_mouvements_sejour + (no_sejour, date, heure_debut, heure_fin, lieu_id, medecin_sejour_id) + WITH w_mv AS (SELECT DISTINCT no_sejour FROM activite.p_mouvements_sejour) + SELECT + p_sejours.no_sejour + , p_sejours.date_entree + , p_sejours.heure_entree + , p_sejours.heure_sortie + , p_sejours.lieu_sortie_id + , p_sejours.medecin_sejour_id + FROM + activite.p_sejours + LEFT JOIN w_mv ON p_sejours.no_sejour = w_mv.no_sejour + WHERE 1=1 + AND type_sejour <> '9' + AND code_prevu <> 1 + AND p_sejours.etat NOT IN ('A', 'R', 'C') + AND w_mv.no_sejour IS NULL + ; + INSERT INTO activite.p_mouvements_sejour + (no_sejour, date, heure_debut, heure_fin, lieu_id, medecin_sejour_id) + SELECT p_sejours.no_sejour, date_sortie, 0, heure_sortie, lieu_sortie_id, p_sejours.medecin_sejour_id + FROM activite.p_sejours + LEFT JOIN activite.p_mouvements_sejour ON p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + p_mouvements_sejour.date = p_sejours.date_sortie + WHERE type_sejour <> '9' AND + code_prevu <> 1 AND + p_sejours.code_sorti = '1' AND + p_mouvements_sejour.no_sejour IS NULL + ; + + -- Ajout des séjours annulés dans les mouvements pour regroupement et tri dans les requêtes + INSERT INTO activite.p_mouvements_sejour + (no_sejour, date, lieu_id, medecin_sejour_id, is_annulation) + SELECT + p_sejours.no_sejour, + date_entree, + lieu_sortie_id, + p_sejours.medecin_sejour_id, + CASE WHEN date_entree = date(date_etat) THEN 1 ELSE 0 END AS is_annulation + FROM activite.p_sejours + LEFT JOIN activite.p_mouvements_sejour ON p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + p_mouvements_sejour.date = p_sejours.date_sortie + WHERE p_sejours.etat IN ('A', 'R', 'C') AND + p_mouvements_sejour.no_sejour IS NULL + ; + + -- Correction séjours à séance selon GHM + + DROP TABLE IF EXISTS w_correction_seances_28z14; + CREATE TEMP TABLE w_correction_seances_28z14 AS + SELECT p_factures.no_sejour, p_factures_lignes_h.date_debut, SUM(p_factures_lignes_h.nb_prestation) AS nb_seances + FROM activite.p_factures_lignes_h + JOIN activite.p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite.p_sejours On p_factures.no_sejour = p_sejours.no_sejour AND type_sejour = '1' + JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid AND t_ghm.code LIKE '28Z14%' + JOIN base.t_actes ON acte_id = t_actes.oid AND t_actes.code = 'FELF011' + GROUP BY 1,2 + HAVING SUM(p_factures_lignes_h.nb_prestation) > 0 + ; + + UPDATE activite.p_mouvements_sejour + SET nb_seances = w_correction_seances_28z14.nb_seances + FROM w_correction_seances_28z14 + WHERE p_mouvements_sejour.no_sejour = w_correction_seances_28z14.no_sejour AND + p_mouvements_sejour.date = w_correction_seances_28z14.date_debut AND + p_mouvements_sejour.nb_seances <> w_correction_seances_28z14.nb_seances; + + DROP TABLE IF EXISTS w_correction_seances; + CREATE TEMP TABLE w_correction_seances AS + SELECT p_sejours.no_sejour, + p_sejours.date_entree, + p_sejours.date_sortie, + COALESCE(t_services_facturation.type_sejour,'0') AS type_sejour_force, + t_ghm.code AS ghm_code, + SUM(nb_entrees_directes) AS nb_entrees_directes, + SUM(nb_sorties_directes)AS nb_sorties_directes, + SUM(nb_ambulatoires) AS nb_ambulatoires, + SUM(nb_externes) AS nb_externes, + SUM(nb_seances) AS nb_seances + FROM activite.p_sejours + JOIN activite.t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + LEFT JOIN activite.p_mouvements_sejour ON p_sejours.no_sejour = p_mouvements_sejour.no_sejour + JOIN base.t_ghm ON ghm_id = t_ghm.oid + WHERE p_sejours.type_sejour <> '9' AND + t_ghm.code LIKE '28%' AND + t_services_facturation.type_sejour IS DISTINCT FROM '0sauf5' + GROUP BY 1,2,3,4,5 + HAVING + ( + SUM(nb_entrees_directes) <> 0 OR + SUM(nb_ambulatoires) <> 0 OR + SUM(nb_externes) <> 0 OR + SUM(nb_seances) = 0 + ) + ; + + UPDATE activite.p_mouvements_sejour SET + nb_seances = 1, + nb_ambulatoires = CASE WHEN w_correction_seances.type_sejour_force <> '0sauf5' AND w_correction_seances.type_sejour_force <> '2' THEN 0 ELSE p_mouvements_sejour.nb_ambulatoires END + FROM w_correction_seances + WHERE w_correction_seances.no_sejour = p_mouvements_sejour.no_sejour AND + p_mouvements_sejour.nb_ambulatoires <> 0 AND + w_correction_seances.nb_seances = 0 AND + w_correction_seances.nb_ambulatoires <> 0; + + UPDATE activite.p_sejours SET + type_sejour = '5' + FROM w_correction_seances + WHERE w_correction_seances.type_sejour_force <> '0sauf5' AND + w_correction_seances.type_sejour_force <> '2' AND + w_correction_seances.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '2' AND + w_correction_seances.nb_seances = 0 AND + w_correction_seances.nb_ambulatoires <> 0; + + UPDATE activite.p_mouvements_sejour SET + nb_seances = 1 + FROM w_correction_seances + WHERE w_correction_seances.no_sejour = p_mouvements_sejour.no_sejour AND + p_mouvements_sejour.nb_entrees_directes <> 0 AND + p_mouvements_sejour.nb_seances = 0 AND + w_correction_seances.nb_seances = 0 AND + w_correction_seances.nb_ambulatoires = 0 AND + w_correction_seances.nb_entrees_directes <> 0; + + + -- Types séjours Hospitalisés vers séances + UPDATE activite.p_sejours + SET type_sejour = '5' + FROM activite.t_lieux + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE lieu_sortie_id = t_lieux.oid AND + t_services_facturation.type_sejour <> '0sauf5' AND + t_services_facturation.type_sejour <> '1' AND + t_services_facturation.type_sejour <> '2' AND + p_sejours.type_sejour <> '5' AND + p_sejours.type_sejour <> '9' AND + ghs_id > 0 AND + ghm_id in (SELECT oid FROm base.t_ghm where code LIKE '28%') + ; + + UPDATE activite.p_mouvements_sejour + SET nb_entrees_directes = 0, + nb_sorties_directes = 0, + est_jour_hospitalisation = '0', + nb_ambulatoires = 0, + nb_externes = 0, + nb_urgences = 0, + nb_entrees_mutation_service = 0, + nb_sorties_mutation_service = 0, + nb_entrees_mutation_etage = 0, + nb_sorties_mutation_etage = 0, + nb_entrees_mutation_activite = 0, + nb_sorties_mutation_activite = 0, + nb_entrees_mutation_unite_medicale = 0, + nb_sorties_mutation_unite_medicale = 0, + nb_jours_js_inclus = 0, + nb_jours_js_non_inclus = 0, + est_chambre_particuliere = '0', + nb_chambres_particulieres = 0, + nb_bebes = 0 + WHERE no_sejour IN (SELECT no_sejour FROM activite.p_sejours WHERE type_sejour = '5') AND + ( + nb_entrees_directes IS DISTINCT FROM 0 OR + nb_sorties_directes IS DISTINCT FROM 0 OR + est_jour_hospitalisation IS DISTINCT FROM '0' OR + nb_ambulatoires IS DISTINCT FROM 0 OR + nb_externes IS DISTINCT FROM 0 OR + nb_urgences IS DISTINCT FROM 0 OR + nb_entrees_mutation_service IS DISTINCT FROM 0 OR + nb_sorties_mutation_service IS DISTINCT FROM 0 OR + nb_entrees_mutation_etage IS DISTINCT FROM 0 OR + nb_sorties_mutation_etage IS DISTINCT FROM 0 OR + nb_entrees_mutation_activite IS DISTINCT FROM 0 OR + nb_sorties_mutation_activite IS DISTINCT FROM 0 OR + nb_entrees_mutation_unite_medicale IS DISTINCT FROM 0 OR + nb_sorties_mutation_unite_medicale IS DISTINCT FROM 0 OR + nb_jours_js_inclus IS DISTINCT FROM 0 OR + nb_jours_js_non_inclus IS DISTINCT FROM 0 OR + est_chambre_particuliere IS DISTINCT FROM '0' OR + nb_chambres_particulieres IS DISTINCT FROM 0 OR + nb_bebes IS DISTINCT FROM 0 + ) + ; + + -- Séjours hospît vers externe si duree séjour <= 1 + DROP TABLE IF EXISTS w_sejours_hospit_to_externe; + CREATE TEMP TABLE w_sejours_hospit_to_externe AS + SELECT p_sejours.no_sejour + FROM activite.p_sejours + JOIN activite.t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE p_sejours.type_sejour = '1' AND + date_sortie - date_entree <= 1 AND + code_sorti = '1' AND + t_services_facturation.type_sejour = '31' + ; + + UPDATE activite.p_sejours + SET type_sejour = '3' + WHERE no_sejour IN (SELECT no_sejour FROM w_sejours_hospit_to_externe) + ; + + + UPDATE activite.p_mouvements_sejour + SET nb_externes = 1, nb_entrees_directes = 0 + WHERE nb_entrees_directes = 1 AND + no_sejour IN + (SELECT no_sejour FROM w_sejours_hospit_to_externe) + ; + + + + UPDATE activite.p_mouvements_sejour + SET nb_entrees_directes = 0, + nb_sorties_directes = 0, + est_jour_hospitalisation = '0', + nb_ambulatoires = 0, + nb_seances = 0, + nb_urgences = 0, + nb_entrees_mutation_service = 0, + nb_sorties_mutation_service = 0, + nb_entrees_mutation_etage = 0, + nb_sorties_mutation_etage = 0, + nb_entrees_mutation_activite = 0, + nb_sorties_mutation_activite = 0, + nb_entrees_mutation_unite_medicale = 0, + nb_sorties_mutation_unite_medicale = 0, + nb_jours_js_inclus = 0, + nb_jours_js_non_inclus = 0, + est_chambre_particuliere = '0', + nb_chambres_particulieres = 0, + nb_bebes = 0 + WHERE no_sejour IN + (SELECT no_sejour FROM w_sejours_hospit_to_externe) + ; + + -- Forcage ambulatoires non traité dans import prestataire + DROP TABLE IF EXISTS w_correction_seances; + CREATE TEMP TABLE w_correction_seances AS + SELECT p_sejours.no_sejour + FROM activite.p_sejours + JOIN activite.t_lieux on lieu_sortie_id = t_lieux.oid + JOIN activite.t_services_facturation on service_facturation_id = t_services_facturation.oid + LEFT JOIN base.t_ghm on ghm_id = t_ghm.oid + WHERE p_sejours.type_sejour = '5' AND + t_services_facturation.type_sejour = '2' + ; + + UPDATE activite.p_sejours + SET type_sejour = '2' + FROM w_correction_seances + WHERE p_sejours.no_sejour = w_correction_seances.no_sejour + ; + + UPDATE activite.p_mouvements_sejour + SET nb_ambulatoires = 1 + FROM w_correction_seances + WHERE p_mouvements_sejour.no_sejour = w_correction_seances.no_sejour AND + nb_seances = 1 + ; + + -- Premiers et derniers mouvements par jour pour journées HDJ + UPDATE activite.p_mouvements_sejour SET + est_premier_mouvement_jour = '1' + FROM + ( + SELECT no_sejour, date, MIN(heure_fin) AS heure_fin + FROM activite.p_mouvements_sejour + GROUP BY 1,2 + HAVING MIN(heure_fin) < 240000 + ) subview + WHERE p_mouvements_sejour.no_sejour = subview.no_sejour AND + p_mouvements_sejour.heure_fin = subview.heure_fin AND + p_mouvements_sejour.date = subview.date AND + est_premier_mouvement_jour IS DISTINCT FROM '1' ; + + UPDATE activite.p_mouvements_sejour SET + est_dernier_mouvement_jour = '1' + FROM + ( + SELECT no_sejour, date, MAX(heure_debut) AS heure_debut + FROM activite.p_mouvements_sejour + GROUP BY 1,2 + HAVING MAX(heure_debut) <> 0 + ) subview + WHERE p_mouvements_sejour.no_sejour = subview.no_sejour AND + p_mouvements_sejour.heure_debut = subview.heure_debut AND + p_mouvements_sejour.date = subview.date AND + est_dernier_mouvement_jour IS DISTINCT FROM '1'; + + UPDATE activite.p_mouvements_sejour SET + est_premier_mouvement_jour = CASE WHEN heure_premier = heure_debut THEN '1' ELSE '0' END, + est_dernier_mouvement_jour = CASE WHEN heure_dernier = heure_debut THEN '1' ELSE '0' END + FROM + ( + SELECT no_sejour, date, + MIN(CASE WHEN est_jour_hospitalisation = '1' THEN heure_debut ELSE 999999 END) AS heure_premier, + MAX(CASE WHEN est_jour_hospitalisation = '1' THEN heure_debut ELSE -1 END) AS heure_dernier + FROM activite.p_mouvements_sejour + GROUP BY 1,2 + HAVING ( + MAX(nb_entrees_directes) = 1 OR + MAX(nb_sorties_directes) = 1 + ) AND + ( + MIN(heure_debut) <> MIN(CASE WHEN est_jour_hospitalisation = '1' THEN heure_debut ELSE 999999 END) OR + MAX(heure_debut) <> MAX(CASE WHEN est_jour_hospitalisation = '1' THEN heure_debut ELSE -1 END) + ) + ) subview + WHERE p_mouvements_sejour.no_sejour = subview.no_sejour AND + p_mouvements_sejour.date = subview.date AND + ( + est_premier_mouvement_jour IS DISTINCT FROM CASE WHEN heure_premier = heure_debut THEN '1' ELSE '0' END OR + est_dernier_mouvement_jour IS DISTINCT FROM CASE WHEN heure_dernier = heure_debut THEN '1' ELSE '0' END + ); + + -- Transformation UF selon type eclatement + SELECT activite.cti_transform_uf(); + + -- Mises à jour mouvements selon présence prestation (hdj) + SELECT activite[PX].cti_calcul_hdj_mouvements(); + + -- Calcul des journées dans la table des mouvements + SELECT activite[PX].cti_calcul_journees_mouvements(); + + ]]> + + + + + + + + 0 + ; + + WITH finess as ( + SELECT MAX(t_finess.code) AS code + FROM base.t_finess + WHERE secondaire = '0' + HAVING count(*) = 1 + ), empty_sejours as ( + SELECT p_sejours.oid, finess.code as finess_code, lieu_sortie_id + FROM activite.p_sejours + JOIN finess ON 1=1 + WHERE p_sejours.finess = '' OR p_sejours.finess = '000000000' + ), update_sejours as ( + SELECT empty_sejours.oid, finess_code FROM empty_sejours + JOIN activite.t_lieux ON empty_sejours.lieu_sortie_id = t_lieux.oid + JOIN activite.t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE t_services_facturation.finess_id = 0 + ) + UPDATE activite.p_sejours + SET finess = finess_code + FROM update_sejours + WHERE update_sejours.oid = p_sejours.oid + AND finess IS DISTINCT FROM finess_code + ; + + UPDATE activite.p_sejours + SET finess = subview.code + FROM + ( + SELECT MAX(code) AS code + FROM base.t_finess + WHERE secondaire = '0' + HAVING count(DISTINCT code) = 1 + ) subview + WHERE p_sejours.finess = '' OR + p_sejours.finess = '000000000' + ; + + -- Médecin séjour selon service + UPDATE activite.p_sejours + SET medecin_sejour_id = + CASE + WHEN COALESCE(t_services_facturation.medecin_force_id,0) > 0 THEN t_services_facturation.medecin_force_id + WHEN COALESCE(t_services_facturation.medecin_par_defaut_id,0) > 0 AND p_sejours.medecin_sejour_id = 0 THEN t_services_facturation.medecin_par_defaut_id + ELSE p_sejours.medecin_sejour_id END + FROM activite.t_lieux + JOIN activite.t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE lieu_sortie_id = t_lieux.oid AND + ( + t_services_facturation.medecin_force_id <> 0 OR + t_services_facturation.medecin_par_defaut_id <> 0 + ) + ; + + -- Correction date sortie dans séjours pour externes et ambu présents + UPDATE activite.p_sejours + SET date_sortie = subview.date_sortie, heure_sortie = subview.heure_sortie + FROM + ( + SELECT p_sejours.no_sejour, MAX(date) AS date_sortie, (MAX(Array[date::text, heure_fin::text]))[2]::numeric AS heure_sortie + FROM activite.p_sejours + JOIN activite.p_mouvements_sejour ON p_sejours.no_sejour = p_mouvements_sejour.no_sejour + WHERE p_sejours.type_sejour IN ('2','3') AND + p_sejours.code_sorti <> '1' AND + ( + p_mouvements_sejour.nb_ambulatoires = 1 OR + p_mouvements_sejour.nb_externes = 1 + ) + GROUP BY 1 + ) subview + WHERE p_sejours.no_sejour = subview.no_sejour + ; + + + -- Chambre particuliere demandee si facturee + + DROP TABLE IF EXISTS w_factures_lignes_c_cp; + + CREATE TEMP TABLE w_factures_lignes_c_cp AS + SELECT p_factures.no_sejour + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite[PX].p_sejours ON p_sejours.no_sejour = p_factures.no_sejour AND p_sejours.code_cp_demandee <> '1' + JOIN activite[PX].v_listes_3 ON liste_code = 'CTI_SHO_R' AND rubrique_facturation_id = to_id + WHERE p_factures_lignes_c.montant_facture <> 0 + GROUP BY 1 + HAVING SUM(nb_rubrique) > 0; + + + ALTER TABLE w_factures_lignes_c_cp ADD CONSTRAINT w_factures_lignes_c_cp_pkey PRIMARY KEY(no_sejour); + + UPDATE activite[PX].p_sejours + SET code_cp_demandee = '1' + FROM w_factures_lignes_c_cp + WHERE p_sejours.no_sejour = w_factures_lignes_c_cp.no_sejour AND + code_cp_demandee <> '1'; + + -- GHS esthétique + UPDATE activite[PX].p_sejours SET + ghs_id = (SELECT oid FROM base.t_ghs WHERE code = 9999) + WHERE ghs_id <= 0 AND + ghm_id IN (SELECT oid FROM base.t_ghm WHERE code LIKE '09Z02%' OR code LIKE '23Z03%'); + + -- GHS + UPDATE activite[PX].p_sejours SET + date_groupage = '20991231'::date, + ghs_id = + CASE + WHEN p_sejours.particularite_t2a::bpchar = 'SE1'::bpchar THEN - 9991::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE2'::bpchar THEN - 9992::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE3'::bpchar THEN - 9993::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE4'::bpchar THEN - 9994::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE5'::bpchar THEN - 9997::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE6'::bpchar THEN - 9998::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'ATU'::bpchar THEN - 9995::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'FFM'::bpchar THEN - 9996::bigint + WHEN t_services_facturation.type_t2a <> '1'::bpchar THEN - 9990::bigint + WHEN p_sejours.type_sejour NOT IN ('1','2','5','6') THEN - 9990::bigint + WHEN p_sejours.code_sorti <> 1::numeric THEN - 9980::bigint + WHEN p_sejours.date_groupage = '2099-12-31'::date THEN - 9981::bigint + ELSE - 9981::bigint + END, + ghm_id = + CASE + WHEN p_sejours.particularite_t2a::bpchar = 'SE1'::bpchar THEN - 9991::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE2'::bpchar THEN - 9992::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE3'::bpchar THEN - 9993::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE4'::bpchar THEN - 9994::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE5'::bpchar THEN - 9997::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE6'::bpchar THEN - 9998::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'ATU'::bpchar THEN - 9995::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'FFM'::bpchar THEN - 9996::bigint + WHEN t_services_facturation.type_t2a <> '1'::bpchar THEN - 9990::bigint + WHEN p_sejours.type_sejour NOT IN ('1','2','5','6') THEN - 9990::bigint + WHEN p_sejours.code_sorti <> 1::numeric THEN - 9980::bigint + WHEN p_sejours.date_groupage = '2099-12-31'::date THEN - 9981::bigint + ELSE - 9981::bigint + END + FROM activite[PX].t_lieux + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE p_sejours.lieu_sortie_id = t_lieux.oid AND + ghs_id <= 0 AND + gmt_id <= 0 AND + ( + date_groupage IS DISTINCT FROM '20991231'::date + OR + ghm_id IS DISTINCT FROM + CASE + WHEN p_sejours.particularite_t2a::bpchar = 'SE1'::bpchar THEN - 9991::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE2'::bpchar THEN - 9992::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE3'::bpchar THEN - 9993::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE4'::bpchar THEN - 9994::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE5'::bpchar THEN - 9997::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE6'::bpchar THEN - 9998::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'ATU'::bpchar THEN - 9995::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'FFM'::bpchar THEN - 9996::bigint + WHEN t_services_facturation.type_t2a <> '1'::bpchar THEN - 9990::bigint + WHEN p_sejours.type_sejour NOT IN ('1','2','5','6') THEN - 9990::bigint + WHEN p_sejours.code_sorti <> 1::numeric THEN - 9980::bigint + WHEN p_sejours.date_groupage = '2099-12-31'::date THEN - 9981::bigint + ELSE - 9981::bigint + END + OR + ghs_id IS DISTINCT FROM + CASE + WHEN p_sejours.particularite_t2a::bpchar = 'SE1'::bpchar THEN - 9991::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE2'::bpchar THEN - 9992::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE3'::bpchar THEN - 9993::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'SE4'::bpchar THEN - 9994::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'ATU'::bpchar THEN - 9995::bigint + WHEN p_sejours.particularite_t2a::bpchar = 'FFM'::bpchar THEN - 9996::bigint + WHEN t_services_facturation.type_t2a <> '1'::bpchar THEN - 9990::bigint + WHEN p_sejours.type_sejour NOT IN ('1','2','5','6') THEN - 9990::bigint + WHEN p_sejours.code_sorti <> 1::numeric THEN - 9980::bigint + WHEN p_sejours.date_groupage = '2099-12-31'::date THEN - 9981::bigint + ELSE - 9981::bigint + END + ) + ; + + -- Calcul des ages en années (date_entre - date_naissance ou -1 si une des deux dates absente) + + UPDATE activite.p_sejours SET age = NULL; + + -- Court séjour + UPDATE activite.p_sejours set + age = extract(year from age(date_entree, date_naissance)) + FROM + activite.p_patients + WHERE + p_patients.no_patient = p_sejours.no_patient + and (p_sejours.age = 0 OR p_sejours.age is null OR p_sejours.age = -1) + and date_naissance >= '1890-01-01'::date + and date_entree >= '2000-01-01'::date + AND + ( + code_sorti = '1' AND date_sortie - date_entree < 180 OR + code_sorti <> '1' AND date(now()) - date_entree < 180 + ) + and date_naissance <= date_sortie + and extract(year from age(date_entree, date_naissance)) <= 120 + ; + + -- longs sejours (> 6mois) age selondébut d'année + UPDATE activite.p_sejours set + age = extract(year from age(date_trunc('year',CASE WHEN code_sorti = '1' THEN date_sortie ELSE now() END), date_naissance)) + FROM + activite.p_patients + WHERE + p_patients.no_patient = p_sejours.no_patient + and (p_sejours.age = 0 OR p_sejours.age is null OR p_sejours.age = -1) + and date_naissance >= '1890-01-01'::date + AND + ( + code_sorti = '1' AND date_sortie - date_entree >= 180 OR + code_sorti <> '1' AND date(now()) - date_entree >= 180 + ) + and date_naissance <= date_sortie + and extract(year from age(date_trunc('year',CASE WHEN code_sorti = '1' THEN date_sortie ELSE now() END), date_naissance)) <= 120 + ; + + + UPDATE activite.p_sejours SET + age = -1 + WHERE p_sejours.age is null OR age < -1 + ; + + -- Codes de mode d'entree obsolètes + UPDATE activite[PX].p_sejours SET + mode_entree = CASE + WHEN mode_entree = 'T' THEN '7' + WHEN mode_entree = 'I' THEN '6' + ELSE '8' END + WHERE + mode_entree IN ('D', 'T', 'I'); + + -- Codes de modes de sortie obsolètes + UPDATE activite[PX].p_sejours SET + mode_sortie = CASE + WHEN mode_sortie = 'T' THEN '7' + WHEN mode_sortie = 'I' THEN '6' + ELSE '8' END + WHERE + mode_sortie IN ('D', 'T', 'I'); + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_factures_lignes_c_cp CASCADE; + + + -- Compléments séjours (type pmsi) + SELECT activite.cti_reorganize_sejours('activite.p_sejours'); + + ]]> + + + + + + + + + + + + + date facture = date groupage + UPDATE activite.p_factures + SET date_facture = p_sejours.date_groupage + FROM activite.p_sejours + WHERE p_factures.type_facture = 'G' AND + p_factures.no_sejour = p_sejours.no_sejour AND + p_sejours.date_groupage > p_factures.date_facture AND + p_sejours.date_groupage <> '20991231'; + + -- Factures BG récupérées depuis PMSI -> date facture = date derniere facture TP1 hbg + UPDATE activite.p_factures + SET date_facture = p_factures_x.date_facture + FROM activite.p_factures p_factures_x + JOIN activite.p_sejours ON p_factures_x.no_sejour = p_sejours.no_sejour + WHERE p_factures.type_facture = 'G' AND + p_factures_x.no_sejour = p_factures.no_sejour AND + p_factures_x.no_facture <> p_factures.no_facture AND + p_factures_x.type_facture <> 'G' AND + p_factures_x.date_facture > p_factures.date_facture AND + p_factures_x.code_facture = '1' AND + p_factures_x.montant_facture_1_c > 0 AND + p_factures_x.date_facture <> '20991231' + ; + + + ]]> + + + + + + + 1 AND + ( + t_prestations.code IN ('CPC') OR + type_ventilation_jour = '1' + ) AND + (date_fin - date_debut + 1) = nb_rubrique + ; + + UPDATE activite.p_factures_lignes_non_facturees_c SET + nb_rubrique = 1, + date_fin = p_factures_lignes_non_facturees_c.date_debut, + montant_encours = p_factures_lignes_non_facturees_c.montant_encours / p_factures_lignes_non_facturees_c.nb_rubrique + FROM w_factures_lignes_non_facturees_c_jour + WHERE p_factures_lignes_non_facturees_c.CTID = fromCTID + ; + + DROP TABLE IF EXISTS w_factures_lignes_non_facturees_c_jour_to; + CREATE TEMP TABLE w_factures_lignes_non_facturees_c_jour_to AS + SELECT w_factures_lignes_non_facturees_c_jour.*, + p_calendrier.date AS to_date + FROM w_factures_lignes_non_facturees_c_jour + JOIN base.p_calendrier ON p_calendrier.date > w_factures_lignes_non_facturees_c_jour.date_debut AND p_calendrier.date <= w_factures_lignes_non_facturees_c_jour.date_fin + ; + + UPDATE w_factures_lignes_non_facturees_c_jour_to SET + nb_rubrique = 1, + date_debut = to_date, + date_fin = to_date, + montant_encours = montant_encours / nb_rubrique + ; + + ALTER TABLE w_factures_lignes_non_facturees_c_jour_to DROP COLUMN fromCTID; + ALTER TABLE w_factures_lignes_non_facturees_c_jour_to DROP COLUMN to_date; + + -- Dans la table w_factures_lignes_non_facturees_c_jour_to, les lignes sont maintenant ventilees jour/jour + -- Pour les factures SSR (facturation intermediaires), il se peut que certaines lignes soient affectées à la mauvaise + -- facture intermédiaire + -- La sequence qui suit permet de reaffecter la bonne facture + ANALYSE w_factures_lignes_non_facturees_c_jour_to + ; + + DROP TABLE IF EXISTS w_factures_lignes_non_facturees_c_reaffect + ; + CREATE TEMP TABLE w_factures_lignes_non_facturees_c_reaffect AS + SELECT + w_factures_lignes_non_facturees_c_jour_to.no_facture, + w_factures_lignes_non_facturees_c_jour_to.date_debut, + MAX(p_factures_cible.no_facture) AS no_facture_cible + FROM w_factures_lignes_non_facturees_c_jour_to + JOIN activite.p_factures ON w_factures_lignes_non_facturees_c_jour_to.no_facture = p_factures.no_facture + JOIN activite.t_lieux ON w_factures_lignes_non_facturees_c_jour_to.lieu_id = t_lieux.oid + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + LEFT JOIN activite.p_factures p_factures_cible ON + p_factures_cible.no_sejour = p_factures.no_sejour AND + w_factures_lignes_non_facturees_c_jour_to.date_debut BETWEEN p_factures_cible.date_debut AND p_factures_cible.date_fin AND + p_factures_cible.type_facture = 'E' + WHERE avec_facturation_intermediaire = '1' AND + w_factures_lignes_non_facturees_c_jour_to.date_debut NOT BETWEEN p_factures.date_debut AND p_factures.date_fin + GROUP BY 1,2 + ; + + ANALYSE w_factures_lignes_non_facturees_c_reaffect + ; + + UPDATE w_factures_lignes_non_facturees_c_jour_to + SET no_facture = no_facture_cible + FROM w_factures_lignes_non_facturees_c_reaffect + WHERE w_factures_lignes_non_facturees_c_jour_to.no_facture = w_factures_lignes_non_facturees_c_reaffect.no_facture AND + w_factures_lignes_non_facturees_c_jour_to.date_debut = w_factures_lignes_non_facturees_c_reaffect.date_debut AND + no_facture_cible IS NOT NULL + ; + + -- Suppression des lignes sans facture cible + DELETE FROM w_factures_lignes_non_facturees_c_jour_to + USING w_factures_lignes_non_facturees_c_reaffect + WHERE w_factures_lignes_non_facturees_c_jour_to.no_facture = w_factures_lignes_non_facturees_c_reaffect.no_facture AND + w_factures_lignes_non_facturees_c_jour_to.date_debut = w_factures_lignes_non_facturees_c_reaffect.date_debut AND + no_facture_cible IS NULL + ; + + INSERT INTO activite.p_factures_lignes_non_facturees_c + SELECT * + FROM w_factures_lignes_non_facturees_c_jour_to + ; + + SELECT base.cti_vacuum_table('activite','p_factures'); + SELECT base.cti_vacuum_table('activite','p_sejours'); + + -- suppression des FJ pour les services maternite (idem encours CTI) + DELETE + FROM activite.p_factures_lignes_non_facturees_c + USING activite.t_lieux, + activite.t_services_facturation, + activite.t_prestations + WHERE lieu_id = t_lieux.oid AND + t_services_facturation.oid = t_lieux.service_facturation_id AND + t_services_facturation.particularites_encours = 'MAT' AND + t_prestations.oid = prestation_id AND + t_prestations.code IN ('FJ','FJA','FJS','FJR') + ; + + -- Recalculer totaux facture + UPDATE activite.p_factures SET + montant_facture_c = subview.montant_facture, + montant_facture_0_c = subview.montant_facture_0, + montant_facture_1_c = subview.montant_facture_1, + montant_facture_2_c = subview.montant_facture_2, + montant_facture_22_c = subview.montant_facture_22, + montant_comptabilise_budget_global_c = subview.montant_comptabilise_budget_global_c + FROM ( + SELECT p_factures.no_facture, + SUM(COALESCE(CASE WHEN origine_facturation_id = 1 THEN p_factures_lignes_c.montant_facture ELSE 0 END,0)) AS montant_facture, + MAX(p_factures.montant_facture_c), + SUM(COALESCE(CASE WHEN origine_facturation_id = 1 THEN p_factures_lignes_c.montant_facture_0 ELSE 0 END,0)) AS montant_facture_0, + MAX(p_factures.montant_facture_0_c), + SUM(COALESCE(CASE WHEN origine_facturation_id = 1 THEN p_factures_lignes_c.montant_facture_1 ELSE 0 END,0)) AS montant_facture_1, + MAX(p_factures.montant_facture_1_c), + SUM(COALESCE(CASE WHEN origine_facturation_id = 1 THEN p_factures_lignes_c.montant_facture_2 ELSE 0 END,0)) AS montant_facture_2, + MAX(p_factures.montant_facture_2_c), + SUM(COALESCE(CASE WHEN origine_facturation_id = 1 THEN p_factures_lignes_c.montant_facture_22 ELSE 0 END,0)) AS montant_facture_22, + MAX(p_factures.montant_facture_22_c), + SUM(COALESCE(p_factures_lignes_c.montant_comptabilise_budget_global_1,0)) AS montant_comptabilise_budget_global_c, + MAX(p_factures.montant_comptabilise_budget_global_c) + FROM activite.p_factures + LEFT JOIN activite.p_factures_lignes_c on p_factures_lignes_c.no_facture = p_factures.no_facture + GROUP BY 1 + HAVING + ( + SUM(COALESCE(CASE WHEN origine_facturation_id = 1 THEN p_factures_lignes_c.montant_facture ELSE 0 END,0)) <> MAX(p_factures.montant_facture_c) OR + SUM(COALESCE(CASE WHEN origine_facturation_id = 1 THEN p_factures_lignes_c.montant_facture_0 ELSE 0 END,0)) <> MAX(p_factures.montant_facture_0_c) OR + SUM(COALESCE(CASE WHEN origine_facturation_id = 1 THEN p_factures_lignes_c.montant_facture_1 ELSE 0 END,0)) <> MAX(p_factures.montant_facture_1_c) OR + SUM(COALESCE(CASE WHEN origine_facturation_id = 1 THEN p_factures_lignes_c.montant_facture_2 ELSE 0 END,0)) <> MAX(p_factures.montant_facture_2_c) OR + SUM(COALESCE(CASE WHEN origine_facturation_id = 1 THEN p_factures_lignes_c.montant_facture_22 ELSE 0 END,0)) <> MAX(p_factures.montant_facture_22_c) OR + SUM(COALESCE(p_factures_lignes_c.montant_comptabilise_budget_global_1,0)) <> MAX(p_factures.montant_comptabilise_budget_global_c) + ) + ) subview + WHERE p_factures.no_facture = subview.no_facture; + + -- Recalculer facture de référence + DROP TABLE IF EXISTS w_sejours_facture_reference; + + CREATE TEMP TABLE w_sejours_facture_reference AS + SELECT + p_sejours.no_sejour, + CASE WHEN avec_facturation_intermediaire IS DISTINCT FROM '1' THEN p_sejours.date_sortie ELSE p_factures.date_fin END AS date_fin, + MIN(CASE WHEN avec_facturation_intermediaire IS DISTINCT FROM '1' THEN p_sejours.date_entree ELSE p_factures.date_debut END) AS date_debut, + MAX(p_factures.no_facture) AS no_facture_last, + MAX(CASE WHEN p_factures.no_facture NOT LIKE '%.DMA' AND type_facture <> '1' AND type_facture <> 'X' AND type_facture <> 'P' THEN p_factures.no_facture ELSE null END) AS no_facture_reference_last, + (MAX(ARRAY[to_char( + CASE + WHEN p_factures.no_facture NOT LIKE '%.DMA' AND type_facture <> '1' AND type_facture <> 'X' AND type_facture <> 'P' AND (t_prestations.code IN ('GHS','GHT','PJ') OR (p_factures.no_facture LIKE '%BG' AND p_sejours.type_sejour IN ('1','2','5','6'))) THEN p_factures_lignes_c.taux_1 + ELSE 0 END + ,'FM00000'), + CASE + WHEN p_factures.no_facture NOT LIKE '%.DMA' AND type_facture <> '1' AND type_facture <> 'X' AND type_facture <> 'P' AND (t_prestations.code IN ('GHS','GHT','PJ') OR (p_factures.no_facture LIKE '%BG' AND p_sejours.type_sejour IN ('1','2','5','6'))) THEN p_factures.no_facture + ELSE NULL END + ] + ))[2] AS no_facture_reference_sejour_last, + COUNT(DISTINCT p_factures.no_facture) AS nb_factures, + MAX(avec_facturation_intermediaire) AS avec_facturation_intermediaire + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_lieux ON p_sejours.lieu_sortie_id = t_lieux.oid + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + LEFT JOIN activite.p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + LEFT JOIN activite.t_prestations ON p_factures_lignes_c.prestation_id = t_prestations.oid AND t_prestations.code IN ('GHS','GHT','PJ') + GROUP BY 1,2; + + + CREATE INDEX w_sejours_facture_reference_i1 + ON w_sejours_facture_reference + USING btree + (no_sejour); + + -- Cas d'une facture, d'un avoir et dune autre facture, il faut privilégier l'autre facture + UPDATE w_sejours_facture_reference + SET no_facture_reference_sejour_last = subview.no_facture_reference + FROM + ( + SELECT p_factures.no_sejour, + CASE WHEN avec_facturation_intermediaire IS DISTINCT FROM '1' THEN p_sejours.date_sortie ELSE p_factures.date_fin END AS date_fin, + MAX(CASE WHEN type_facture <> '1' AND type_facture <> 'X' THEN no_facture ELSE NULL END) AS no_facture_reference + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_lieux ON p_sejours.lieu_sortie_id = t_lieux.oid + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE p_factures.no_facture NOT LIKE '%.DMA' + GROUP BY 1,2 + HAVING SUM(CASE WHEN type_facture <> '1' AND type_facture <> 'X' THEN 1 ELSE 0 END) = 1 AND + SUM(CASE WHEN type_facture = '1' THEN 1 ELSE 0 END) = SUM(CASE WHEN type_facture = 'X' THEN 1 ELSE 0 END) AND + SUM(CASE WHEN type_facture = 'X' THEN 1 ELSE 0 END) > 0 + ) subview + WHERE w_sejours_facture_reference.no_sejour = subview.no_sejour AND + w_sejours_facture_reference.date_fin = subview.date_fin AND + no_facture_reference_sejour_last IS DISTINCT FROM subview.no_facture_reference + ; + + UPDATE activite.p_factures + SET no_facture_reference = COALESCE(no_facture_reference_sejour_last, no_facture_reference_last, no_facture_last) + FROM w_sejours_facture_reference + JOIN activite.p_sejours ON p_sejours.no_sejour = w_sejours_facture_reference.no_sejour + WHERE p_factures.no_sejour = w_sejours_facture_reference.no_sejour AND + ( + p_factures.date_fin = w_sejours_facture_reference.date_fin OR + p_factures.date_fin = p_sejours.date_sortie AND avec_facturation_intermediaire IS DISTINCT FROM '1' + + ) AND + p_factures.no_facture_reference <> COALESCE(no_facture_reference_sejour_last, no_facture_reference_last, no_facture_last); + + UPDATE activite.p_factures + SET facture_reference_id = p_factures_references.oid + FROM activite.p_factures p_factures_references + WHERE p_factures.no_facture_reference = p_factures_references.no_facture + AND p_factures.facture_reference_id <> p_factures_references.oid; + + + --Report Sur Encours + UPDATE activite.p_factures_encours + SET no_facture_reference = subview.no_facture_reference + FROM + (SELECT no_sejour, MAX(no_facture_reference) AS no_facture_reference + FROM activite.p_factures + GROUP BY 1 + HAVING count(distinct no_facture_reference) = 1 + ) subview + WHERE p_factures_encours.no_sejour = subview.no_sejour AND + p_factures_encours.no_facture_reference <> subview.no_facture_reference; + + + + + + -- Supprimer les factures de référence nulles sur séjours budget global + DROP TABLE IF EXISTS w_factures_references; + CREATE TEMP TABLE w_factures_references AS + SELECT p_factures.no_facture_reference + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + JOIN activite.p_factures_reference ON p_factures_reference.no_facture_reference = p_factures.no_facture_reference + WHERE p_factures_reference.nb_non_calcules > 0 AND + t_services_facturation.est_sans_facturation = '2' + GROUP BY 1 + HAVING SUM(CASE WHEN p_factures.code_facture = '1' AND p_factures.no_facture LIKE '%BG' THEN 1 ELSE 0 END) > 0 AND + SUM(CASE WHEN p_factures.code_facture = '0' AND + p_factures.montant_facture_c = 0 AND + p_factures.montant_facture_h = 0 AND + p_factures.montant_regle_c = 0 AND + p_factures.montant_regle_h = 0 + THEN 1 ELSE 0 END) > 0 + ORDER BY 1; + + DELETE FROM activite.p_factures + USING w_factures_references + WHERE w_factures_references.no_facture_reference = p_factures.no_facture_reference AND + p_factures.code_facture = '0' AND + p_factures.montant_facture_c = 0 AND + p_factures.montant_facture_h = 0 AND + p_factures.montant_regle_c = 0 AND + p_factures.montant_regle_h = 0; + + -- Reporter ghs sur factures + UPDATE activite.p_factures + SET ghs_id = p_sejours.ghs_id + FROM activite.p_sejours + WHERE p_factures.no_sejour = p_sejours.no_sejour AND p_factures.ghs_id IS DISTINCT FROM p_sejours.ghs_id; + + UPDATE activite.p_sejours + SET date_groupage = date_facture + WHERE (date_groupage IS null OR date_groupage = '20991231' OR date_groupage = '00010101') AND + date_facture <> '2099-12-31' AND ghs_id > 0; + + + -- Cas spécial de deux factures additives non facturées (pour génération encours) + UPDATE activite.p_factures + SET type_facture = '0' + WHERE no_facture IN + ( + SELECT no_facture_reference + FROM + ( + SELECT no_sejour, MAX(no_facture_reference) AS no_facture_reference + FROM activite.p_factures + WHERE code_facture = '0' + GROUP BY 1 + HAVING count(*) > 1 AND + SUM(CASE WHEN type_facture = '2' AND code_facture = '0' THEN 1 ELSE 0 END) = count(*) + ) subview + ) + ; + + + + + ]]> + + + + + + + = p_factures.date_debut + WHERE no_facture LIKE '%BG' AND + type_sejour = '5' AND + COALESCE(t_ghm.code,'') NOT IN ('28Z19Z', '28Z20Z') AND + date_trunc('month',p_factures.date_fin) > date_trunc('month',p_factures.date_debut) + ; + + SELECT setval('activite.s_factures', COALESCE((SELECT MAX(oid) FROM activite.p_factures),0)+1, true) + ; + + UPDATE w_factures_seances_bg + SET date_debut = date_seance_debut, + date_fin = date_seance_fin, + no_facture = CASE WHEN w_factures_seances_bg.date_debut = date_seance_debut THEN w_factures_seances_bg.no_facture_original ELSE replace(no_facture_original,'BG','') || to_char(date_seance_fin,'YYMM') || '.BG' END, + oid = CASE WHEN w_factures_seances_bg.date_debut = date_seance_debut THEN w_factures_seances_bg.oid ELSE nextval('activite.s_factures'::regclass) END + ; + + UPDATE w_factures_seances_bg SET + no_facture_reference = no_facture, + facture_reference_id = oid + ; + + ANALYSE w_factures_seances_bg; + + CREATE INDEX i_w_factures_seances_bg_1 + ON w_factures_seances_bg + USING btree + (no_facture_original); + + + CREATE INDEX i_w_factures_seances_bg_2 + ON w_factures_seances_bg + USING btree + (no_sejour); + + UPDATE w_factures_seances_bg + SET nb_seances = subview.nb_seances + FROM + ( + SELECT no_facture, COUNT(DISTINCT date) AS nb_seances + FROM activite.p_mouvements_sejour + JOIN w_factures_seances_bg ON + p_mouvements_sejour.no_sejour = w_factures_seances_bg.no_sejour AND + p_mouvements_sejour.date BETWEEN w_factures_seances_bg.date_debut AND w_factures_seances_bg.date_fin AND + p_mouvements_sejour.nb_seances > 0 + GROUP BY 1 + ) subview + WHERE subview.no_facture = w_factures_seances_bg.no_facture AND + subview.nb_seances > 0 + ; + + + + + UPDATE w_factures_seances_bg + SET nb_seances_facturees = subview.nb_seances + FROM + ( + SELECT w_factures_seances_bg.no_facture, COUNT(DISTINCT p_factures_lignes_c.date_debut) AS nb_seances + FROM activite.p_factures_lignes_c + JOIN w_factures_seances_bg ON + p_factures_lignes_c.no_facture = w_factures_seances_bg.no_facture_original AND + p_factures_lignes_c.date_debut BETWEEN w_factures_seances_bg.date_debut AND w_factures_seances_bg.date_fin AND + p_factures_lignes_c.montant_facture > 0 + GROUP BY 1 + ) subview + WHERE subview.no_facture = w_factures_seances_bg.no_facture AND + subview.nb_seances > 0 + ; + + + UPDATE w_factures_seances_bg SET + code_facture = CASE WHEN nb_seances_facturees > 0 THEN '1' WHEN nb_seances = 0 THEN '1' ELSE '0' END, + date_facture = CASE WHEN nb_seances_facturees > 0 THEN date_fin WHEN nb_seances = 0 THEN date_fin ELSE '20991231' END, + code_vente = CASE WHEN nb_seances_facturees > 0 THEN '1' WHEN nb_seances = 0 THEN '1' ELSE '0' END, + date_vente = CASE WHEN nb_seances_facturees > 0 THEN date_fin WHEN nb_seances = 0 THEN date_fin ELSE '20991231' END, + mois_vente = to_char(CASE WHEN nb_seances_facturees > 0 THEN date_fin WHEN nb_seances = 0 THEN date_fin ELSE '20991231' END,'YYYMM')::numeric + ; + + + + UPDATE activite.p_factures_lignes_c + SET no_facture = w_factures_seances_bg.no_facture, facture_id = w_factures_seances_bg.oid + FROM w_factures_seances_bg + WHERE p_factures_lignes_c.no_facture = w_factures_seances_bg.no_facture_original AND + p_factures_lignes_c.date_debut BETWEEN w_factures_seances_bg.date_debut AND w_factures_seances_bg.date_fin AND + p_factures_lignes_c.no_facture <> w_factures_seances_bg.no_facture + ; + + UPDATE activite.p_factures_lignes_h + SET no_facture = w_factures_seances_bg.no_facture, facture_id = w_factures_seances_bg.oid + FROM w_factures_seances_bg + WHERE p_factures_lignes_h.no_facture = w_factures_seances_bg.no_facture_original AND + p_factures_lignes_h.date_debut BETWEEN w_factures_seances_bg.date_debut AND w_factures_seances_bg.date_fin AND + p_factures_lignes_h.no_facture <> w_factures_seances_bg.no_facture + ; + + UPDATE w_factures_seances_bg SET + montant_facture_c = subview.montant_facture, + montant_facture_1_c = subview.montant_facture, + montant_comptabilise_budget_global_c = subview.montant_facture + FROM + ( + SELECT w_factures_seances_bg.no_facture, SUM(COALESCE(montant_facture,0)) AS montant_facture + FROM w_factures_seances_bg + LEFT JOIN activite.p_factures_lignes_c ON + p_factures_lignes_c.no_facture = w_factures_seances_bg.no_facture AND + p_factures_lignes_c.date_debut BETWEEN w_factures_seances_bg.date_debut AND w_factures_seances_bg.date_fin AND + p_factures_lignes_c.montant_facture > 0 + GROUP BY 1 + ) subview + WHERE subview.no_facture = w_factures_seances_bg.no_facture AND + w_factures_seances_bg.montant_facture_c <> subview.montant_facture + ; + + + DELETE + FROM activite.p_factures + WHERE no_facture IN (SELECT no_facture_original FROM w_factures_seances_bg) + ; + + ALTER TABLE w_factures_seances_bg DROP COLUMN nb_seances; + ALTER TABLE w_factures_seances_bg DROP COLUMN nb_seances_facturees; + ALTER TABLE w_factures_seances_bg DROP COLUMN date_seance_debut; + ALTER TABLE w_factures_seances_bg DROP COLUMN date_seance_fin; + ALTER TABLE w_factures_seances_bg DROP COLUMN no_facture_original; + + INSERT INTO activite.p_factures + SELECT * FROM w_factures_seances_bg + ; + + UPDATE activite.p_factures SET + no_facture_reference = p_factures_bg.no_facture, facture_reference_id = p_factures_bg.oid + FROM activite.p_factures p_factures_bg + JOIN activite.p_sejours ON p_factures_bg.no_sejour = p_sejours.no_sejour AND p_sejours.type_sejour = '5' + WHERE + p_factures.no_sejour = p_factures_bg.no_sejour AND + p_factures.no_facture NOT LIKE '%BG' AND + p_factures.no_facture_reference LIKE '%BG' AND + p_factures_bg.no_facture LIKE '%BG' AND + p_factures.date_fin BETWEEN p_factures_bg.date_debut AND p_factures_bg.date_fin AND + p_factures.no_facture_reference <> p_factures_bg.no_facture + ; + + + ]]> + + + + + + + '1' THEN Array[heure_fin, lieu_id] ELSE NULL END))[2] AS lieu_id, + (MAX(Array[heure_fin, lieu_id]))[2] AS lieu_id_avec_absence + FROM activite.p_mouvements_sejour + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + JOIN activite.t_services_facturation On service_facturation_id = t_services_facturation.oid + GROUP BY 1,2 + HAVING (MAX(CASE WHEN est_absence <> '1' THEN Array[heure_fin, lieu_id] ELSE NULL END))[2] IS DISTINCT FROM (MAX(Array[heure_fin, lieu_id]))[2] + ; + + UPDATE activite.p_factures_lignes_c + SET lieu_id = COALESCE(w_mouvements_sejour_lieu_jour.lieu_id,w_mouvements_sejour_lieu_jour.lieu_id_avec_absence) + FROM activite.p_factures, w_mouvements_sejour_lieu_jour + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = w_mouvements_sejour_lieu_jour.no_sejour AND + p_factures_lignes_c.date_fin = w_mouvements_sejour_lieu_jour.date AND + p_factures_lignes_c.lieu_id <> COALESCE(w_mouvements_sejour_lieu_jour.lieu_id,w_mouvements_sejour_lieu_jour.lieu_id_avec_absence) + ; + + UPDATE activite.p_factures_lignes_h + SET lieu_id = COALESCE(w_mouvements_sejour_lieu_jour.lieu_id,w_mouvements_sejour_lieu_jour.lieu_id_avec_absence) + FROM activite.p_factures, w_mouvements_sejour_lieu_jour + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + p_factures.no_sejour = w_mouvements_sejour_lieu_jour.no_sejour AND + p_factures_lignes_h.date_fin = w_mouvements_sejour_lieu_jour.date AND + p_factures_lignes_h.lieu_id <> COALESCE(w_mouvements_sejour_lieu_jour.lieu_id,w_mouvements_sejour_lieu_jour.lieu_id_avec_absence) + ; + + -- Dans le cas des ESPIC les prestations peuvent être facturées en partie sur la facture BG (part AMO) et et partie dans la GAP (part AMC/PATIENT) + -- Dans ce cas afin de ne pas doubler le nombre de prestations -> mise à 0 des coefficient (quantités) des prestations venant dans de la GAP si prestation identique venant de la facture BG + WITH prestations_importees_pmsi as ( + SELECT + p_factures.no_facture_reference, + t_prestations.oid as prestation_id + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.p_sejours ON p_sejours.no_sejour = p_factures.no_sejour -- Jointure sur séjour pour récupérer finess + JOIN base.t_finess ON t_finess.code = p_sejours.finess -- Jointure sur finess pour limiter l'impact aux espics + JOIN activite.t_prestations ON t_prestations.oid = p_factures_lignes_c.prestation_id + AND t_prestations.code IN ('PJ', 'FJ', 'SSM', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') -- filtre sur les prestations souhaitées + WHERE p_factures.no_facture = no_facture_reference + AND p_factures.no_facture ilike '%BG' -- ne conserver que les factures provenant du PMSI (BG) + AND taux_1 < 100 -- Exclure les lignes à 100% BG -> 100% AMO + AND type_etablissement IN ('2','3') -- Filtre sur espic + GROUP BY 1,2 + ) + UPDATE activite.p_factures_lignes_c + SET coefficient = 0 -- Mettre la quantité à 0 + FROM activite.p_factures, prestations_importees_pmsi + WHERE 1=1 + AND p_factures.no_facture = p_factures_lignes_c.no_facture + AND prestations_importees_pmsi.no_facture_reference = p_factures.no_facture_reference AND p_factures_lignes_c.prestation_id = prestations_importees_pmsi.prestation_id -- Si ligne avec prestation identique sur même facture de référence + AND p_factures.no_facture NOT LIKE '%BG' -- Ne pas mettre à jour ce qui vient du PMSI + AND ((taux_2 > 0 AND taux_2 < 100) OR (taux_0 > 0 AND taux_0 < 100)); -- Seulement si lignes n'est pas à 100% patient/AMC + + ]]> + + + + + + + + + + + + + + '1' THEN p_sejours.date_entree + ELSE date_debut END) AS date_debut_facture, + MAX(CASE + WHEN p_sejours.type_sejour = '3' THEN p_sejours.date_sortie + WHEN p_sejours.type_sejour IN ('5') AND no_facture_reference LIKE '%BG' THEN date_fin + WHEN p_sejours.type_sejour IN ('1','2','5') AND type_t2a = '1' THEN p_sejours.date_sortie + WHEN p_sejours.type_sejour IN ('1','2','5') AND avec_facturation_intermediaire <> '1' THEN p_sejours.date_sortie + ELSE date_fin END) AS date_fin_facture, + MAX(CASE WHEN no_facture = no_facture_reference THEN p_factures.type_facture ELSE NULL END) AS type_facture, + MAX(date_groupage) AS date_groupage, + NULL::numeric AS delai_groupage, + 0::numeric AS retard_groupage, + 0::numeric AS nb_groupe, + 0::numeric AS nb_non_groupe, + 0::numeric AS nb_calculable, + MAX(CASE WHEN no_facture = no_facture_reference THEN GREATEST(p_factures.ghs_id,0) ELSE 0 END) AS ghs_id, + MAX(CASE WHEN no_facture = no_facture_reference THEN p_factures.ghs_bebe1_id ELSE 0 END) AS ghs_bebe1_id, + MAX(CASE WHEN no_facture = no_facture_reference THEN p_factures.ghs_bebe2_id ELSE 0 END) AS ghs_bebe2_id, + MAX(CASE WHEN no_facture = no_facture_reference THEN p_factures.ghs_bebe3_id ELSE 0 END) AS ghs_bebe3_id, + MAX(CASE WHEN no_facture = no_facture_reference THEN GREATEST(p_factures.gmt_id,0) ELSE 0 END) AS gmt_id, + MAX(CASE WHEN no_facture = no_facture_reference THEN p_factures.tiers_payant_0_id ELSE 0 END) AS tiers_payant_0_id, + MAX(CASE WHEN no_facture = no_facture_reference THEN p_factures.tiers_payant_1_id ELSE 0 END) AS tiers_payant_1_id, + MAX(CASE WHEN no_facture = no_facture_reference THEN p_factures.tiers_payant_2_id ELSE 0 END) AS tiers_payant_2_id, + MAX(CASE WHEN no_facture = no_facture_reference THEN p_factures.tiers_payant_22_id ELSE 0 END) AS tiers_payant_22_id, + MAX(CASE WHEN no_facture = no_facture_reference AND p_factures.code_facture IN ('1', '2') THEN '1' ELSE '0' END) AS code_facture, + MAX(CASE WHEN no_facture = no_facture_reference THEN p_factures.date_facture ELSE '00010101' END) AS date_facture, + NULL::numeric AS delai_facture, + 0::numeric AS retard_facture, + MAX(CASE WHEN no_facture = no_facture_reference THEN p_factures.code_vente ELSE '0' END) AS code_vente, + MAX(CASE WHEN no_facture = no_facture_reference THEN p_factures.date_vente ELSE '00010101' END) AS date_vente, + COUNT(*) AS nb_factures, + MAX(CASE + WHEN p_sejours.code_sorti <> '1' AND avec_facturation_intermediaire <> '1' THEN 0 + WHEN p_factures.type_facture NOT IN ('P', 'G') AND p_factures.code_facture NOT IN ('1','2') THEN 1 + ELSE 0 END) AS nb_non_calcules, + COALESCE(MAX(CASE + WHEN p_sejours.code_sorti <> '1' AND avec_facturation_intermediaire <> '1' THEN 0 + WHEN p_factures.type_facture NOT IN ('P', 'G') AND p_factures.no_facture NOT LIKE '%BG' AND p_factures.code_facture NOT IN ('1','2') THEN 1 + ELSE 0 END),0) AS nb_non_calcules_horsbg, + COALESCE(MAX(CASE + WHEN p_sejours.code_sorti <> '1' AND avec_facturation_intermediaire <> '1' THEN 0 + WHEN p_factures.type_facture NOT IN ('P', 'G') AND p_factures.no_facture LIKE '%BG' AND p_factures.code_facture NOT IN ('1','2') THEN 1 + ELSE 0 END),0) AS nb_non_calcules_bg, + SUM(CASE + WHEN p_factures.type_facture = '0'::bpchar THEN 0 + WHEN p_factures.type_facture = 'P'::bpchar THEN 0 + WHEN p_factures.type_facture = 'E'::bpchar THEN 0 + WHEN p_factures.type_facture = 'X'::bpchar THEN 0 + ELSE 1 + END) AS nb_factures_regularisation, + SUM(p_factures.nb_rejets) AS nb_rejets, + + '1'::text AS code_expedie_0, + MAX(CASE WHEN no_facture = no_facture_reference AND p_factures.code_expedie_1 = '1' THEN p_factures.code_expedie_1 ELSE '0' END) AS code_expedie_1, + MAX(p_factures.code_expedie_2) AS code_expedie_2, + MAX(CASE WHEN no_facture = no_facture_reference THEN p_factures.date_expedition ELSE '00010101' END) AS date_expedition, + MAX(CASE WHEN p_factures.code_expedie_0 = '1' AND p_factures.date_expedition_0 < '20991231' THEN p_factures.date_expedition_0 ELSE '00010101' END) AS date_expedition_0, + MAX(CASE WHEN no_facture = no_facture_reference AND p_factures.code_expedie_1 = '1' THEN p_factures.date_expedition_1 ELSE '00010101' END) AS date_expedition_1, + MAX(CASE WHEN p_factures.code_expedie_2 = '1' AND p_factures.date_expedition_2 < '20991231' THEN p_factures.date_expedition_2 ELSE '00010101' END) AS date_expedition_2, + MAX(CASE WHEN p_factures.code_expedie_0 = '1' AND p_factures.date_expedition_0 < '20991231' THEN no_bordereau_0 ELSE '' END) AS no_bordereau_0, + MAX(CASE WHEN no_facture = no_facture_reference AND code_expedie_1 = '1' THEN no_bordereau_1 ELSE '' END) AS no_bordereau_1, + MAX(CASE WHEN p_factures.code_expedie_2 = '1' AND p_factures.date_expedition_2 < '20991231' THEN no_bordereau_2 ELSE '' END) AS no_bordereau_2, + NULL::numeric AS delai_expedition, + NULL::numeric AS delai_expedition_0, + NULL::numeric AS delai_expedition_1, + NULL::numeric AS delai_expedition_2, + 0::numeric AS nb_non_expedie, + 0::numeric AS nb_non_expedie_c, + 0::numeric AS nb_non_expedie_h, + 0::numeric AS nb_non_expedie_0, + 0::numeric AS nb_non_expedie_0_c, + 0::numeric AS nb_non_expedie_0_h, + 0::numeric AS nb_non_expedie_1, + 0::numeric AS nb_non_expedie_1_c, + 0::numeric AS nb_non_expedie_1_h, + 0::numeric AS nb_non_expedie_2, + 0::numeric AS nb_non_expedie_2_c, + 0::numeric AS nb_non_expedie_2_h, + + SUM(p_factures.montant_facture_c + p_factures.montant_facture_h) AS montant_facture, + SUM(p_factures.montant_facture_c) AS montant_facture_c, + SUM(p_factures.montant_facture_h) AS montant_facture_h, + SUM(p_factures.montant_facture_0_c + p_factures.montant_facture_0_h) AS montant_facture_0, + SUM(p_factures.montant_facture_0_c) AS montant_facture_0_c, + SUM(p_factures.montant_facture_0_h) AS montant_facture_0_h, + SUM(p_factures.montant_facture_1_c + p_factures.montant_facture_1_h) AS montant_facture_1, + SUM(p_factures.montant_facture_1_c) AS montant_facture_1_c, + SUM(p_factures.montant_facture_1_h) AS montant_facture_1_h, + SUM(p_factures.montant_facture_2_c + p_factures.montant_facture_2_h + p_factures.montant_facture_22_c + p_factures.montant_facture_22_h) AS montant_facture_2, + SUM(p_factures.montant_facture_2_c + p_factures.montant_facture_22_c) AS montant_facture_2_c, + SUM(p_factures.montant_facture_2_h + p_factures.montant_facture_22_h) AS montant_facture_2_h, + SUM(p_factures.montant_facture_c_actes_inclus_dans_sejour) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(p_factures.montant_facture_h_actes_inclus_dans_sejour) AS montant_facture_h_actes_inclus_dans_sejour, + + SUM(p_factures.montant_encours_c + p_factures.montant_encours_h) AS montant_encours, + SUM(p_factures.montant_encours_c) AS montant_encours_c, + SUM(p_factures.montant_encours_h) AS montant_encours_h, + SUM(p_factures.montant_encours_0_c + p_factures.montant_encours_0_h) AS montant_encours_0, + SUM(p_factures.montant_encours_0_c) AS montant_encours_0_c, + SUM(p_factures.montant_encours_0_h) AS montant_encours_0_h, + SUM(p_factures.montant_encours_1_c + p_factures.montant_encours_1_h) AS montant_encours_1, + SUM(p_factures.montant_encours_1_c) AS montant_encours_1_c, + SUM(p_factures.montant_encours_1_h) AS montant_encours_1_h, + SUM(p_factures.montant_encours_2_c + p_factures.montant_encours_2_h + p_factures.montant_encours_22_c + p_factures.montant_encours_22_h) AS montant_encours_2, + SUM(p_factures.montant_encours_2_c + p_factures.montant_encours_22_c) AS montant_encours_2_c, + SUM(p_factures.montant_encours_2_h + p_factures.montant_encours_22_h) AS montant_encours_2_h, + + SUM(p_factures.montant_comptabilise_c + p_factures.montant_comptabilise_h) AS montant_comptabilise, + SUM(p_factures.montant_comptabilise_c) AS montant_comptabilise_c, + SUM(p_factures.montant_comptabilise_h) AS montant_comptabilise_h, + SUM(p_factures.montant_comptabilise_0_c + p_factures.montant_comptabilise_0_h) AS montant_comptabilise_0, + SUM(p_factures.montant_comptabilise_0_c) AS montant_comptabilise_0_c, + SUM(p_factures.montant_comptabilise_0_h) AS montant_comptabilise_0_h, + SUM(p_factures.montant_comptabilise_1_c + p_factures.montant_comptabilise_1_h) AS montant_comptabilise_1, + SUM(p_factures.montant_comptabilise_1_c) AS montant_comptabilise_1_c, + SUM(p_factures.montant_comptabilise_1_h) AS montant_comptabilise_1_h, + SUM(p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_c + p_factures.montant_comptabilise_22_h) AS montant_comptabilise_2, + SUM(p_factures.montant_comptabilise_2_c + p_factures.montant_comptabilise_22_c) AS montant_comptabilise_2_c, + SUM(p_factures.montant_comptabilise_2_h + p_factures.montant_comptabilise_22_h) AS montant_comptabilise_2_h, + SUM(p_factures.montant_comptabilise_budget_global_c) AS montant_comptabilise_budget_global_c, + + SUM(p_factures.montant_regle_c + p_factures.montant_regle_h) AS montant_regle, + SUM(p_factures.montant_regle_c) AS montant_regle_c, + SUM(p_factures.montant_regle_h) AS montant_regle_h, + SUM(p_factures.montant_regle_0_c + p_factures.montant_regle_0_h) AS montant_regle_0, + SUM(p_factures.montant_regle_0_c) AS montant_regle_0_c, + SUM(p_factures.montant_regle_0_h) AS montant_regle_0_h, + SUM(p_factures.montant_regle_1_c + p_factures.montant_regle_1_h) AS montant_regle_1, + SUM(p_factures.montant_regle_1_c) AS montant_regle_1_c, + SUM(p_factures.montant_regle_1_h) AS montant_regle_1_h, + SUM(p_factures.montant_regle_2_c + p_factures.montant_regle_2_h + p_factures.montant_regle_22_c + p_factures.montant_regle_22_h) AS montant_regle_2, + SUM(p_factures.montant_regle_2_c + p_factures.montant_regle_22_c) AS montant_regle_2_c, + SUM(p_factures.montant_regle_2_h + p_factures.montant_regle_22_h) AS montant_regle_2_h, + + COALESCE( + CASE + WHEN SUM(p_factures.montant_regle_c) >= SUM(p_factures.montant_comptabilise_c) AND SUM(p_factures.montant_regle_h) >= SUM(p_factures.montant_comptabilise_h) THEN + MAX(CASE WHEN p_factures.date_solde < '20991231' AND p_factures.date_solde > '00010101' THEN p_factures.date_solde ELSE NULL END) + ELSE NULL END + ,'20991231') AS date_solde, + COALESCE( + CASE + WHEN SUM(p_factures.montant_regle_c) >= SUM(p_factures.montant_comptabilise_c) THEN + MAX(CASE WHEN p_factures.date_solde_c < '20991231' AND p_factures.date_solde_c > '00010101' THEN p_factures.date_solde_c ELSE NULL END) + ELSE NULL END + ,'20991231') AS date_solde_c, + COALESCE( + CASE + WHEN SUM(p_factures.montant_regle_h) >= SUM(p_factures.montant_comptabilise_h) THEN + MAX(CASE WHEN p_factures.date_solde_h < '20991231' AND p_factures.date_solde_h > '00010101' THEN p_factures.date_solde_h ELSE NULL END) + ELSE NULL END + ,'20991231') AS date_solde_h, + NULL::date AS date_solde_0, + COALESCE( + CASE + WHEN SUM(p_factures.montant_regle_0_c) >= SUM(p_factures.montant_comptabilise_0_c) THEN + MAX(CASE WHEN p_factures.date_solde_0_c < '20991231' AND p_factures.date_solde_0_c > '00010101' THEN p_factures.date_solde_0_c ELSE NULL END) + ELSE NULL END + ,'20991231') AS date_solde_0_c, + COALESCE( + CASE + WHEN SUM(p_factures.montant_regle_0_h) >= SUM(p_factures.montant_comptabilise_0_h) THEN + MAX(CASE WHEN p_factures.date_solde_0_h < '20991231' AND p_factures.date_solde_0_h > '00010101' THEN p_factures.date_solde_0_h ELSE NULL END) + ELSE NULL END + ,'20991231') AS date_solde_0_h, + NULL::date AS date_solde_1, + COALESCE( + CASE + WHEN SUM(p_factures.montant_regle_1_c) >= SUM(p_factures.montant_comptabilise_1_c) THEN + MAX(CASE WHEN p_factures.date_solde_1_c < '20991231' AND p_factures.date_solde_1_c > '00010101' THEN p_factures.date_solde_1_c ELSE NULL END) + ELSE NULL END + ,'20991231') AS date_solde_1_c, + COALESCE( + CASE + WHEN SUM(p_factures.montant_regle_1_h) >= SUM(p_factures.montant_comptabilise_1_h) THEN + MAX(CASE WHEN p_factures.date_solde_1_h < '20991231' AND p_factures.date_solde_1_h > '00010101' THEN p_factures.date_solde_1_h ELSE NULL END) + ELSE NULL END + ,'20991231') AS date_solde_1_h, + NULL::date AS date_solde_2, + COALESCE( + CASE + WHEN SUM(p_factures.montant_regle_2_c) >= SUM(p_factures.montant_comptabilise_2_c) THEN + MAX(CASE WHEN p_factures.date_solde_2_c < '20991231' AND p_factures.date_solde_2_c > '00010101' THEN p_factures.date_solde_2_c ELSE NULL END) + ELSE NULL END + ,'20991231') AS date_solde_2_c, + COALESCE( + CASE + WHEN SUM(p_factures.montant_regle_2_h) >= SUM(p_factures.montant_comptabilise_2_h) THEN + MAX(CASE WHEN p_factures.date_solde_2_h < '20991231' AND p_factures.date_solde_2_h > '00010101' THEN p_factures.date_solde_2_h ELSE NULL END) + ELSE NULL END + ,'20991231') AS date_solde_2_h, + + 0::numeric AS delai_solde, + 0::numeric AS delai_solde_c, + 0::numeric AS delai_solde_h, + 0::numeric AS delai_solde_0, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS nb_non_solde, + 0::numeric AS nb_non_solde_c, + 0::numeric AS nb_non_solde_h, + 0::numeric AS nb_non_solde_0, + 0::numeric AS nb_non_solde_0_c, + 0::numeric AS nb_non_solde_0_h, + 0::numeric AS nb_non_solde_1, + 0::numeric AS nb_non_solde_1_c, + 0::numeric AS nb_non_solde_1_h, + 0::numeric AS nb_non_solde_2, + 0::numeric AS nb_non_solde_2_c, + 0::numeric AS nb_non_solde_2_h, + MAX(CASE WHEN p_factures.montant_comptabilise_c <> p_factures.montant_regle_c OR p_factures.montant_comptabilise_h <> p_factures.montant_regle_h THEN 1 ELSE 0 END) AS nb_non_cloture, + MAX(CASE WHEN p_factures.montant_comptabilise_c <> p_factures.montant_regle_c THEN 1 ELSE 0 END) AS nb_non_cloture_c, + MAX(CASE WHEN p_factures.montant_comptabilise_h <> p_factures.montant_regle_h THEN 1 ELSE 0 END) AS nb_non_cloture_h, + MAX(CASE WHEN p_factures.montant_comptabilise_0_c <> p_factures.montant_regle_0_c OR p_factures.montant_comptabilise_0_h <> p_factures.montant_regle_0_h THEN 1 ELSE 0 END) AS nb_non_cloture_0, + MAX(CASE WHEN p_factures.montant_comptabilise_0_c <> p_factures.montant_regle_0_c THEN 1 ELSE 0 END) AS nb_non_cloture_0_c, + MAX(CASE WHEN p_factures.montant_comptabilise_0_h <> p_factures.montant_regle_0_h THEN 1 ELSE 0 END) AS nb_non_cloture_0_h, + MAX(CASE WHEN p_factures.montant_comptabilise_1_c <> p_factures.montant_regle_1_c OR p_factures.montant_comptabilise_1_h <> p_factures.montant_regle_1_h THEN 1 ELSE 0 END) AS nb_non_cloture_1, + MAX(CASE WHEN p_factures.montant_comptabilise_1_c <> p_factures.montant_regle_1_c THEN 1 ELSE 0 END) AS nb_non_cloture_1_c, + MAX(CASE WHEN p_factures.montant_comptabilise_1_h <> p_factures.montant_regle_1_h THEN 1 ELSE 0 END) AS nb_non_cloture_1_h, + MAX(CASE WHEN p_factures.montant_comptabilise_2_c <> p_factures.montant_regle_2_c OR p_factures.montant_comptabilise_2_h <> p_factures.montant_regle_2_h OR p_factures.montant_comptabilise_22_c <> p_factures.montant_regle_22_c OR p_factures.montant_comptabilise_22_h <> p_factures.montant_regle_22_h THEN 1 ELSE 0 END) AS nb_non_cloture_2, + MAX(CASE WHEN p_factures.montant_comptabilise_2_c <> p_factures.montant_regle_2_c OR p_factures.montant_comptabilise_22_c <> p_factures.montant_regle_22_c THEN 1 ELSE 0 END) AS nb_non_cloture_2_c, + MAX(CASE WHEN p_factures.montant_comptabilise_2_h <> p_factures.montant_regle_2_h OR p_factures.montant_comptabilise_22_h <> p_factures.montant_regle_22_h THEN 1 ELSE 0 END) AS nb_non_cloture_2_h, + 0::numeric AS nb_rubriques_c, + 0::numeric AS nb_rubriques_h + FROM activite.p_sejours + JOIN activite.p_factures ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_lieux ON p_sejours.lieu_sortie_id = t_lieux.oid + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE t_services_facturation.est_sans_facturation IS DISTINCT FROM '1' AND + code_prevu <> 1 + GROUP BY 1,2,3,4,5,6,7,8,9; + + -- Cas des seances avec un séjour sur l'année (découpées en mois au GHM Grenoble) + UPDATE w_factures_reference + SET date_debut_facture = p_factures.date_debut, date_fin_facture = p_factures.date_fin + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE w_factures_reference.no_facture_reference = p_factures.no_facture AND + w_factures_reference.no_facture_reference LIKE '%BG' AND + p_sejours.type_sejour = '5' + ; + + -- Cas des séjours SSR avec plusieurs factures de references 'recuperationde la bonne date de debut de facture' + UPDATE w_factures_reference + SET date_debut_facture = p_factures.date_debut, date_fin_facture = p_factures.date_fin + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE w_factures_reference.no_facture_reference = p_factures.no_facture + AND type_t2a = '2' ; + + -- comptage des rubriques dans les lignes clinique avant généaration des lignes cliniques 0ETS + WITH w_fac AS + ( + SELECT + p_factures.no_sejour, + COUNT(DISTINCT p_factures_lignes_c.rubrique_facturation_id) as nb_rubriques_c + FROM + activite.p_factures + JOIN activite.p_factures_lignes_c ON p_factures_lignes_c.no_facture = p_factures.no_facture + GROUP BY 1 + ) + UPDATE w_factures_reference SET + nb_rubriques_c = w_fac.nb_rubriques_c + FROM + w_fac + WHERE + w_fac.no_sejour = w_factures_reference.no_sejour; + + -- idem avec les lignes honoraires + WITH w_fac AS + ( + SELECT + p_factures.no_sejour, + COUNT(DISTINCT p_factures_lignes_h.rubrique_facturation_id) as nb_rubriques_h + FROM + activite.p_factures + JOIN activite.p_factures_lignes_h ON p_factures_lignes_h.no_facture = p_factures.no_facture + GROUP BY 1 + ) + UPDATE w_factures_reference SET + nb_rubriques_h = w_fac.nb_rubriques_h + FROM + w_fac + WHERE + w_fac.no_sejour = w_factures_reference.no_sejour; + + -- Mise à jour des dates + + UPDATE w_factures_reference + SET date_facture = date_fin_facture + WHERE date_facture < date_fin_facture; + + + UPDATE w_factures_reference + SET date_groupage = date_facture + WHERE date_groupage < date_sortie AND + date_groupage <> '20991231' AND + code_sorti = '1' AND + ghs_id <> 0; + + + + UPDATE w_factures_reference + SET date_groupage = date_facture + WHERE date_groupage > date_facture AND + date_groupage <> '20991231' AND + ghs_id <> 0; + + + UPDATE w_factures_reference + SET date_facture = '20991231' + WHERE nb_non_calcules = 1 AND date_facture <> '20991231'; + + + + UPDATE w_factures_reference SET + date_expedition = CASE WHEN date_expedition < '15000101' THEN '20991231' ELSE date_expedition END, + date_expedition_0 = CASE WHEN date_expedition_0 < '15000101' THEN '20991231' ELSE date_expedition_0 END, + date_expedition_1 = CASE WHEN date_expedition_1 < '15000101' THEN '20991231' ELSE date_expedition_1 END, + date_expedition_2 = CASE WHEN date_expedition_2 < '15000101' THEN '20991231' ELSE date_expedition_2 END, + date_solde = CASE WHEN date_solde < '15000101' THEN '20991231' ELSE date_solde END, + date_solde_c = CASE WHEN date_solde_c < '15000101' THEN '20991231' ELSE date_solde_c END, + date_solde_0_c = CASE WHEN date_solde_0_c < '15000101' THEN '20991231' ELSE date_solde_0_c END, + date_solde_1_c = CASE WHEN date_solde_1_c < '15000101' THEN '20991231' ELSE date_solde_1_c END, + date_solde_2_c = CASE WHEN date_solde_2_c < '15000101' THEN '20991231' ELSE date_solde_2_c END, + date_solde_h = CASE WHEN date_solde_h < '15000101' THEN '20991231' ELSE date_solde_h END, + date_solde_0_h = CASE WHEN date_solde_0_h < '15000101' THEN '20991231' ELSE date_solde_0_h END, + date_solde_1_h = CASE WHEN date_solde_1_h < '15000101' THEN '20991231' ELSE date_solde_1_h END, + date_solde_2_h = CASE WHEN date_solde_2_h < '15000101' THEN '20991231' ELSE date_solde_2_h END + WHERE ( + date_expedition < '15000101' OR + date_expedition_0 < '15000101' OR + date_expedition_1 < '15000101' OR + date_expedition_2 < '15000101' OR + date_solde < '15000101' OR + date_solde_c < '15000101' OR + date_solde_0_c < '15000101' OR + date_solde_1_c < '15000101' OR + date_solde_2_c < '15000101' OR + date_solde_h < '15000101' OR + date_solde_0_h < '15000101' OR + date_solde_1_h < '15000101' OR + date_solde_2_h < '15000101' + ); + + + UPDATE w_factures_reference SET + date_expedition = CASE WHEN date_expedition < date_facture THEN date_facture ELSE date_expedition END, + date_expedition_0 = CASE WHEN date_expedition_0 < date_facture AND code_expedie_0 = '1' THEN date_facture ELSE date_expedition_0 END, + date_expedition_1 = CASE WHEN date_expedition_1 < date_facture AND code_expedie_1 = '1' THEN date_facture ELSE date_expedition_1 END, + date_expedition_2 = CASE WHEN date_expedition_2 < date_facture AND code_expedie_2 = '1' THEN date_facture ELSE date_expedition_2 END + WHERE date_expedition < date_facture OR + date_expedition_0 < date_facture AND code_expedie_0 = '1' OR + date_expedition_1 < date_facture AND code_expedie_1 = '1' OR + date_expedition_2 < date_facture AND code_expedie_2 = '1' ; + + + -- Ajustement dates de solde + DROP TABLE IF EXISTS w_correction_date_c; + CREATE TEMP TABLE w_correction_date_c AS + SELECT p_factures.no_facture_reference, p_factures.no_sejour, + MAX(p_factures_reference.date_solde_0_c) AS date_solde_0_c_old, + MAX(p_factures_reference.date_solde_1_c) AS date_solde_1_c_old, + MAX(p_factures_reference.date_solde_2_c) AS date_solde_2_c_old, + MAX(CASE + WHEN p_factures_reference.montant_comptabilise_0_c = 0 THEN '00010101' + WHEN p_factures_reference.montant_comptabilise_0_c = p_factures_reference.montant_regle_0_c AND + p_factures_reference.date_solde_0_c = '20991231' AND + p_factures_reference.montant_comptabilise_0_c <> 0 AND + p_factures_soldes_c.montant_regle_0 <> 0 + THEN date_comptable + ELSE NULL END) AS date_solde_0_c_new, + MAX(CASE + WHEN p_factures_reference.montant_comptabilise_1_c = 0 THEN '00010101' + WHEN p_factures_reference.montant_comptabilise_1_c = p_factures_reference.montant_regle_1_c AND + p_factures_reference.date_solde_1_c = '20991231' AND + p_factures_reference.montant_comptabilise_1_c <> 0 AND + p_factures_reference.date_solde_1_c = '20991231' AND + p_factures_soldes_c.montant_regle_1 <> 0 + THEN date_comptable + ELSE NULL END) AS date_solde_1_c_new, + MAX(CASE + WHEN p_factures_reference.montant_comptabilise_2_c = 0 THEN '00010101' + WHEN p_factures_reference.montant_comptabilise_2_c = p_factures_reference.montant_regle_2_c AND + p_factures_reference.date_solde_2_c = '20991231' AND + p_factures_reference.montant_comptabilise_2_c <> 0 AND + p_factures_reference.date_solde_2_c = '20991231' AND + p_factures_soldes_c.montant_regle_2 <> 0 + THEN date_comptable + ELSE NULL END) AS date_solde_2_c_new + FROM activite.p_factures + JOIN w_factures_reference p_factures_reference ON p_factures.no_facture_reference = p_factures_reference.no_facture_reference + LEFT JOIN activite.p_factures_soldes_c ON p_factures.no_facture = p_factures_soldes_c.no_facture AND p_factures_soldes_c.montant_regle <> 0 + GROUP BY 1,2 + ; + + + UPDATE w_factures_reference p_factures_reference SET + date_solde_c = + CASE WHEN GREATEST(COALESCE(date_solde_0_c_new,date_solde_0_c),COALESCE(date_solde_1_c_new,date_solde_1_c),COALESCE(date_solde_2_c_new,date_solde_2_c)) <> '00010101' + THEN GREATEST(COALESCE(date_solde_0_c_new,date_solde_0_c),COALESCE(date_solde_1_c_new,date_solde_1_c),COALESCE(date_solde_2_c_new,date_solde_2_c)) + ELSE '20991231' END, + date_solde_0_c = CASE WHEN COALESCE(date_solde_0_c_new,date_solde_0_c) <> '00010101' THEN COALESCE(date_solde_0_c_new,date_solde_0_c) ELSE '20991231' END, + date_solde_1_c = CASE WHEN COALESCE(date_solde_1_c_new,date_solde_1_c) <> '00010101' THEN COALESCE(date_solde_1_c_new,date_solde_1_c) ELSE '20991231' END, + date_solde_2_c = CASE WHEN COALESCE(date_solde_2_c_new,date_solde_2_c) <> '00010101' THEN COALESCE(date_solde_2_c_new,date_solde_2_c) ELSE '20991231' END + FROM w_correction_date_c + WHERE p_factures_reference.no_facture_reference = w_correction_date_c.no_facture_reference AND + ( + date_solde_c <> CASE WHEN GREATEST(COALESCE(date_solde_0_c_new,date_solde_0_c),COALESCE(date_solde_1_c_new,date_solde_1_c),COALESCE(date_solde_2_c_new,date_solde_2_c)) <> '00010101' + THEN GREATEST(COALESCE(date_solde_0_c_new,date_solde_0_c),COALESCE(date_solde_1_c_new,date_solde_1_c),COALESCE(date_solde_2_c_new,date_solde_2_c)) + ELSE '20991231' END OR + date_solde_0_c <> CASE WHEN COALESCE(date_solde_0_c_new,date_solde_0_c) <> '00010101' THEN COALESCE(date_solde_0_c_new,date_solde_0_c) ELSE '20991231' END OR + date_solde_1_c <> CASE WHEN COALESCE(date_solde_1_c_new,date_solde_1_c) <> '00010101' THEN COALESCE(date_solde_1_c_new,date_solde_1_c) ELSE '20991231' END OR + date_solde_2_c <> CASE WHEN COALESCE(date_solde_2_c_new,date_solde_2_c) <> '00010101' THEN COALESCE(date_solde_2_c_new,date_solde_2_c) ELSE '20991231' END + ) + ; + + -- Ajustement dates de solde + DROP TABLE IF EXISTS w_correction_date_h; + CREATE TEMP TABLE w_correction_date_h AS + SELECT p_factures.no_facture_reference, p_factures.no_sejour, + MAX(p_factures_reference.date_solde_0_h) AS date_solde_0_h_old, + MAX(p_factures_reference.date_solde_1_h) AS date_solde_1_h_old, + MAX(p_factures_reference.date_solde_2_h) AS date_solde_2_h_old, + MAX(CASE + WHEN p_factures_reference.montant_comptabilise_0_h = 0 THEN '00010101' + WHEN p_factures_reference.montant_comptabilise_0_h = p_factures_reference.montant_regle_0_h AND + p_factures_reference.date_solde_0_h = '20991231' AND + p_factures_reference.montant_comptabilise_0_h <> 0 AND + p_factures_soldes_h.montant_regle_0 <> 0 + THEN date_comptable + ELSE NULL END) AS date_solde_0_h_new, + MAX(CASE + WHEN p_factures_reference.montant_comptabilise_1_h = 0 THEN '00010101' + WHEN p_factures_reference.montant_comptabilise_1_h = p_factures_reference.montant_regle_1_h AND + p_factures_reference.date_solde_1_h = '20991231' AND + p_factures_reference.montant_comptabilise_1_h <> 0 AND + p_factures_reference.date_solde_1_h = '20991231' AND + p_factures_soldes_h.montant_regle_1 <> 0 + THEN date_comptable + ELSE NULL END) AS date_solde_1_h_new, + MAX(CASE + WHEN p_factures_reference.montant_comptabilise_2_h = 0 THEN '00010101' + WHEN p_factures_reference.montant_comptabilise_2_h = p_factures_reference.montant_regle_2_h AND + p_factures_reference.date_solde_2_h = '20991231' AND + p_factures_reference.montant_comptabilise_2_h <> 0 AND + p_factures_reference.date_solde_2_h = '20991231' AND + p_factures_soldes_h.montant_regle_2 <> 0 + THEN date_comptable + ELSE NULL END) AS date_solde_2_h_new + FROM activite.p_factures + JOIN w_factures_reference p_factures_reference ON p_factures.no_facture_reference = p_factures_reference.no_facture_reference + LEFT JOIN activite.p_factures_soldes_h ON p_factures.no_facture = p_factures_soldes_h.no_facture AND p_factures_soldes_h.montant_regle <> 0 + GROUP BY 1,2 + ; + + + UPDATE w_factures_reference p_factures_reference SET + date_solde_h = + CASE WHEN GREATEST(COALESCE(date_solde_0_h_new,date_solde_0_h),COALESCE(date_solde_1_h_new,date_solde_1_h),COALESCE(date_solde_2_h_new,date_solde_2_h)) <> '00010101' + THEN GREATEST(COALESCE(date_solde_0_h_new,date_solde_0_h),COALESCE(date_solde_1_h_new,date_solde_1_h),COALESCE(date_solde_2_h_new,date_solde_2_h)) + ELSE '20991231' END, + date_solde_0_h = CASE WHEN COALESCE(date_solde_0_h_new,date_solde_0_h) <> '00010101' THEN COALESCE(date_solde_0_h_new,date_solde_0_h) ELSE '20991231' END, + date_solde_1_h = CASE WHEN COALESCE(date_solde_1_h_new,date_solde_1_h) <> '00010101' THEN COALESCE(date_solde_1_h_new,date_solde_1_h) ELSE '20991231' END, + date_solde_2_h = CASE WHEN COALESCE(date_solde_2_h_new,date_solde_2_h) <> '00010101' THEN COALESCE(date_solde_2_h_new,date_solde_2_h) ELSE '20991231' END + FROM w_correction_date_h + WHERE p_factures_reference.no_facture_reference = w_correction_date_h.no_facture_reference AND + ( + date_solde_h <> CASE WHEN GREATEST(COALESCE(date_solde_0_h_new,date_solde_0_h),COALESCE(date_solde_1_h_new,date_solde_1_h),COALESCE(date_solde_2_h_new,date_solde_2_h)) <> '00010101' + THEN GREATEST(COALESCE(date_solde_0_h_new,date_solde_0_h),COALESCE(date_solde_1_h_new,date_solde_1_h),COALESCE(date_solde_2_h_new,date_solde_2_h)) + ELSE '20991231' END OR + date_solde_0_h <> CASE WHEN COALESCE(date_solde_0_h_new,date_solde_0_h) <> '00010101' THEN COALESCE(date_solde_0_h_new,date_solde_0_h) ELSE '20991231' END OR + date_solde_1_h <> CASE WHEN COALESCE(date_solde_1_h_new,date_solde_1_h) <> '00010101' THEN COALESCE(date_solde_1_h_new,date_solde_1_h) ELSE '20991231' END OR + date_solde_2_h <> CASE WHEN COALESCE(date_solde_2_h_new,date_solde_2_h) <> '00010101' THEN COALESCE(date_solde_2_h_new,date_solde_2_h) ELSE '20991231' END + ) + ; + + + UPDATE w_factures_reference SET + date_solde_0 = COALESCE(GREATEST(CASE WHEN montant_facture_0_c <> 0 THEN date_solde_0_c ELSE NULL END,CASE WHEN montant_facture_0_h <> 0 THEN date_solde_0_h ELSE NULL END),'20991231'), + date_solde_1 = COALESCE(GREATEST(CASE WHEN montant_facture_1_c <> 0 THEN date_solde_1_c ELSE NULL END,CASE WHEN montant_facture_1_h <> 0 THEN date_solde_1_h ELSE NULL END),'20991231'), + date_solde_2 = COALESCE(GREATEST(CASE WHEN montant_facture_2_c <> 0 THEN date_solde_2_c ELSE NULL END,CASE WHEN montant_facture_2_h <> 0 THEN date_solde_2_h ELSE NULL END),'20991231'); + + + + UPDATE w_factures_reference SET + nb_groupe = CASE WHEN type_t2a = '1' AND type_sejour IN ('1','2','5') AND ghs_id > 0 THEN 1 ELSE 0 END, + nb_non_groupe = CASE WHEN type_t2a = '1' AND ghs_id = 0 AND nb_non_calcules = 1 THEN 1 ELSE 0 END, + nb_calculable = CASE WHEN type_t2a = '1' AND ghs_id > 0 AND nb_non_calcules = 1 THEN 1 + WHEN type_t2a <> '1' AND nb_non_calcules = 1 THEN 1 + ELSE 0 END, + nb_non_expedie = CASE WHEN montant_comptabilise_0 > montant_regle_0 AND code_expedie_0 <> '1' THEN 1 + WHEN montant_comptabilise_1 > montant_regle_1 AND code_expedie_1 <> '1' THEN 1 + WHEN montant_comptabilise_2 > montant_regle_2 AND code_expedie_2 <> '1' THEN 1 + ELSE 0 END, + nb_non_expedie_c = CASE WHEN montant_comptabilise_0_c > montant_regle_0_c AND code_expedie_0 <> '1' THEN 1 + WHEN montant_comptabilise_1_c > montant_regle_1_c AND code_expedie_1 <> '1' THEN 1 + WHEN montant_comptabilise_2_c > montant_regle_2_c AND code_expedie_2 <> '1' THEN 1 + ELSE 0 END, + nb_non_expedie_h = CASE WHEN montant_comptabilise_0_h > montant_regle_0_h AND code_expedie_0 <> '1' THEN 1 + WHEN montant_comptabilise_1_h > montant_regle_1_h AND code_expedie_1 <> '1' THEN 1 + WHEN montant_comptabilise_2_h > montant_regle_2_h AND code_expedie_2 <> '1' THEN 1 + ELSE 0 END, + nb_non_expedie_0 = CASE WHEN montant_comptabilise_0 > montant_regle_0 AND code_expedie_0 <> '1' THEN 1 + ELSE 0 END, + nb_non_expedie_0_c = CASE WHEN montant_comptabilise_0_c > montant_regle_0_c AND code_expedie_0 <> '1' THEN 1 + ELSE 0 END, + nb_non_expedie_0_h = CASE WHEN montant_comptabilise_0_h > montant_regle_0_h AND code_expedie_0 <> '1' THEN 1 + ELSE 0 END, + nb_non_expedie_1 = CASE WHEN montant_comptabilise_1 > montant_regle_1 AND code_expedie_1 <> '1' THEN 1 + ELSE 0 END, + nb_non_expedie_1_c = CASE WHEN montant_comptabilise_1_c > montant_regle_1_c AND code_expedie_1 <> '1' THEN 1 + ELSE 0 END, + nb_non_expedie_1_h = CASE WHEN montant_comptabilise_1_h > montant_regle_1_h AND code_expedie_1 <> '1' THEN 1 + ELSE 0 END, + nb_non_expedie_2 = CASE WHEN montant_comptabilise_2 > montant_regle_2 AND code_expedie_2 <> '1' THEN 1 + ELSE 0 END, + nb_non_expedie_2_c = CASE WHEN montant_comptabilise_2_c > montant_regle_2_c AND code_expedie_2 <> '1' THEN 1 + ELSE 0 END, + nb_non_expedie_2_h = CASE WHEN montant_comptabilise_2_h > montant_regle_2_h AND code_expedie_2 <> '1' THEN 1 + ELSE 0 END + ; + + + + + UPDATE w_factures_reference SET + delai_groupage = CASE + WHEN type_t2a = '1' AND ghs_id > 0 AND date_groupage <> '2099-12-31' AND code_sorti = '1' THEN date_groupage - date_sortie + ELSE NULL END, + delai_facture = CASE + WHEN date_facture <> '2099-12-31' THEN date_facture - date_fin_facture + ELSE NULL END, + delai_expedition = CASE + WHEN montant_facture_c + montant_facture_c <> 0 AND date_expedition <> '2099-12-31' THEN date_expedition - date_fin_facture + ELSE NULL END, + delai_expedition_0 = CASE + WHEN montant_facture_0_c + montant_facture_0_h <> 0 AND date_expedition_0 <> '2099-12-31'THEN date_expedition_0 - date_fin_facture + ELSE NULL END, + delai_expedition_1 = CASE + WHEN montant_facture_1_c + montant_facture_1_h <> 0 AND date_expedition_1 <> '2099-12-31'THEN date_expedition_1 - date_fin_facture + ELSE NULL END, + delai_expedition_2 = CASE + WHEN montant_facture_2_c + montant_facture_2_h <> 0 AND date_expedition_2 <> '2099-12-31'THEN date_expedition_2 - date_fin_facture + ELSE NULL END, + delai_solde = CASE + WHEN montant_comptabilise_c + montant_comptabilise_h <> 0 AND date_solde <> '2099-12-31' THEN date_solde - date_fin_facture + ELSE NULL END, + delai_solde_c = CASE + WHEN montant_comptabilise_c <> 0 AND date_solde_c <> '2099-12-31' THEN date_solde_c - date_fin_facture + ELSE NULL END, + delai_solde_h = CASE + WHEN montant_comptabilise_h <> 0 AND date_solde_h <> '2099-12-31' THEN date_solde_h - date_fin_facture + ELSE NULL END, + delai_solde_0 = CASE + WHEN montant_comptabilise_0 <> 0 AND date_solde_0 <> '2099-12-31' THEN date_solde_0 - date_fin_facture + ELSE NULL END, + delai_solde_0_c = CASE + WHEN montant_comptabilise_0_c <> 0 AND date_solde_0_c <> '2099-12-31' THEN date_solde_0_c - date_fin_facture + ELSE NULL END, + delai_solde_0_h = CASE + WHEN montant_comptabilise_0_h <> 0 AND date_solde_0_h <> '2099-12-31' THEN date_solde_0_h - date_fin_facture + ELSE NULL END, + delai_solde_1 = CASE + WHEN montant_comptabilise_1 <> 0 AND date_solde_1 <> '2099-12-31' THEN date_solde_1 - date_fin_facture + ELSE NULL END, + delai_solde_1_c = CASE + WHEN montant_comptabilise_1_c <> 0 AND date_solde_1_c <> '2099-12-31' THEN date_solde_1_c - date_fin_facture + ELSE NULL END, + delai_solde_1_h = CASE + WHEN montant_comptabilise_1_h <> 0 AND date_solde_1_h <> '2099-12-31' THEN date_solde_1_h - date_fin_facture + ELSE NULL END, + delai_solde_2 = CASE + WHEN montant_comptabilise_2 <> 0 AND date_solde_2 <> '2099-12-31' THEN date_solde_2 - date_fin_facture + ELSE NULL END, + delai_solde_2_c = CASE + WHEN montant_comptabilise_2_c <> 0 AND date_solde_2_c <> '2099-12-31' THEN date_solde_2_c - date_fin_facture + ELSE NULL END, + delai_solde_2_h = CASE + WHEN montant_comptabilise_2_h <> 0 AND date_solde_2_h <> '2099-12-31' THEN date_solde_2_h - date_fin_facture + ELSE NULL END, + nb_non_solde = CASE + WHEN code_facture <> '1'::bpchar THEN 0 + WHEN montant_comptabilise_0_c <> montant_regle_0_c THEN 1 + WHEN montant_comptabilise_0_h <> montant_regle_0_h THEN 1 + WHEN montant_comptabilise_1_c <> montant_regle_1_c THEN 1 + WHEN montant_comptabilise_1_h <> montant_regle_1_h THEN 1 + WHEN montant_comptabilise_2_c <> montant_regle_2_c THEN 1 + WHEN montant_comptabilise_2_h <> montant_regle_2_h THEN 1 + ELSE 0 + END, + nb_non_solde_c = CASE + WHEN code_facture <> '1'::bpchar THEN 0 + WHEN montant_comptabilise_0_c <> montant_regle_0_c THEN 1 + WHEN montant_comptabilise_1_c <> montant_regle_1_c THEN 1 + WHEN montant_comptabilise_2_c <> montant_regle_2_c THEN 1 + ELSE 0 + END, + nb_non_solde_h = CASE + WHEN code_facture <> '1'::bpchar THEN 0 + WHEN montant_comptabilise_0_h <> montant_regle_0_h THEN 1 + WHEN montant_comptabilise_1_h <> montant_regle_1_h THEN 1 + WHEN montant_comptabilise_2_h <> montant_regle_2_h THEN 1 + ELSE 0 + END, + nb_non_solde_0 = CASE + WHEN code_facture <> '1'::bpchar THEN 0 + WHEN montant_comptabilise_0_c <> montant_regle_0_c THEN 1 + WHEN montant_comptabilise_0_h <> montant_regle_0_h THEN 1 + ELSE 0 + END, + nb_non_solde_0_c = CASE + WHEN code_facture <> '1'::bpchar THEN 0 + WHEN montant_comptabilise_0_c <> montant_regle_0_c THEN 1 + ELSE 0 + END, + nb_non_solde_0_h = CASE + WHEN code_facture <> '1'::bpchar THEN 0 + WHEN montant_comptabilise_0_h <> montant_regle_0_h THEN 1 + ELSE 0 + END, + nb_non_solde_1 = CASE + WHEN code_facture <> '1'::bpchar THEN 0 + WHEN montant_comptabilise_1_c <> montant_regle_1_c THEN 1 + WHEN montant_comptabilise_1_h <> montant_regle_1_h THEN 1 + ELSE 0 + END, + nb_non_solde_1_c = CASE + WHEN code_facture <> '1'::bpchar THEN 0 + WHEN montant_comptabilise_1_c <> montant_regle_1_c THEN 1 + ELSE 0 + END, + nb_non_solde_1_h = CASE + WHEN code_facture <> '1'::bpchar THEN 0 + WHEN montant_comptabilise_1_h <> montant_regle_1_h THEN 1 + ELSE 0 + END, + nb_non_solde_2 = CASE + WHEN code_facture <> '1'::bpchar THEN 0 + WHEN montant_comptabilise_2_c <> montant_regle_2_c THEN 1 + WHEN montant_comptabilise_2_h <> montant_regle_2_h THEN 1 + ELSE 0 + END, + nb_non_solde_2_c = CASE + WHEN code_facture <> '1'::bpchar THEN 0 + WHEN montant_comptabilise_2_c <> montant_regle_2_c THEN 1 + ELSE 0 + END, + nb_non_solde_2_h = CASE + WHEN code_facture <> '1'::bpchar THEN 0 + WHEN montant_comptabilise_2_h <> montant_regle_2_h THEN 1 + ELSE 0 + END; + + + -- Retard de groupage et de facturation + + -- Période en semaine pleine pour calcul coefficients + DROP TABLE IF EXISTS w_periode; + CREATE TABLE w_periode AS + SELECT + MAX(CASE WHEN jour_semaine = 1 AND date <= date(t_divers.valeur_date - interval '1 year') THEN date ELSE NULL END) AS date_debut_periode, + MAX(CASE WHEN jour_semaine = 7 AND date <= t_divers.valeur_date THEN date ELSE NULL END) AS date_fin_periode, + (MAX(CASE WHEN jour_semaine = 7 AND date <= t_divers.valeur_date THEN date ELSE NULL END) - + MAX(CASE WHEN jour_semaine = 1 AND date <= date(t_divers.valeur_date - interval '1 year') THEN date ELSE NULL END) + + 1) AS duree_periode + FROM base.p_calendrier + JOIN activite.t_divers ON t_divers.code = 'NOW' AND p_calendrier.date <= t_divers.valeur_date; + + -- Calcul durée groupage par dossier (coeff journalier) + DROP TABLE IF EXISTS w_retard_groupage_coefficient; + CREATE TEMP TABLE w_retard_groupage_coefficient AS + SELECT + MAX(date_debut_periode) AS date_debut_periode, + MAX(duree_periode) AS duree_periode, + SUM(CASE WHEN type_sejour NOT IN ('2','5') THEN v_factures_reference_1.nb_groupe ELSE 0 END) AS nb_groupe_h, + SUM(CASE WHEN type_sejour NOT IN ('2','5') THEN v_factures_reference_1.delai_groupage ELSE 0 END) AS delai_groupe_h, + SUM(CASE WHEN type_sejour IN ('2','5') THEN v_factures_reference_1.nb_groupe ELSE 0 END) AS nb_groupe_a, + SUM(CASE WHEN type_sejour IN ('2','5') THEN v_factures_reference_1.delai_groupage ELSE 0 END) AS delai_groupe_a, + 0::numeric AS coefficient_groupage_h, + 0::numeric AS coefficient_groupage_a + FROM w_factures_reference v_factures_reference_1 + JOIN w_periode ON + ( + v_factures_reference_1.date_groupage BETWEEN w_periode.date_debut_periode AND w_periode.date_fin_periode + ) + WHERE nb_groupe = 1; + + + UPDATE w_retard_groupage_coefficient SET + coefficient_groupage_h = base.cti_division(base.cti_division(duree_periode, nb_groupe_h + nb_groupe_a) * base.cti_division(delai_groupe_h, nb_groupe_h) + , base.cti_division(delai_groupe_a + delai_groupe_h, nb_groupe_a + nb_groupe_h)), + coefficient_groupage_a = base.cti_division(base.cti_division(duree_periode, nb_groupe_h + nb_groupe_a) * base.cti_division(delai_groupe_a, nb_groupe_a) + , base.cti_division(delai_groupe_a + delai_groupe_h, nb_groupe_a + nb_groupe_h)) + ; + + -- Code sortie uniquement sur dernière facture si facturations intermédiaires + UPDATE w_factures_reference p_factures_reference + SET code_sorti = '0' + FROM activite.p_sejours + JOIN (SELECT no_sejour, (MAX(Array[date_fin_facture::text,no_facture_reference]))[2] AS no_facture_last FROM activite.p_factures_reference WHERE code_sorti = '1' GROUP BY 1 HAVING count(*) > 1) subview ON p_sejours.no_sejour = subview.no_sejour + WHERE p_factures_reference.no_sejour = p_sejours.no_sejour AND + p_factures_reference.code_sorti = '1' AND + p_sejours.type_sejour <> '3' AND + p_factures_reference.no_facture_reference <> no_facture_last + ; + + + -- Mise à jour dans table + UPDATE w_factures_reference + SET retard_groupage = + CASE WHEN type_sejour NOT IN ('2','5') THEN coefficient_groupage_h ELSE coefficient_groupage_a END + FROM w_retard_groupage_coefficient + WHERE nb_non_groupe = 1 AND date_sortie >= date_debut_periode; + + + -- Calcul durée facturation par dossier (coeff journalier) + DROP TABLE IF EXISTS w_retard_facture_coefficient; + CREATE TEMP TABLE w_retard_facture_coefficient AS + SELECT + MAX(date_debut_periode) AS date_debut_periode, + MAX(duree_periode) AS duree_periode, + SUM(CASE WHEN type_sejour NOT IN ('2','3','5') THEN 1 ELSE 0 END) AS nb_facture_h, + SUM(CASE WHEN type_sejour NOT IN ('2','3','5') THEN v_factures_reference_1.delai_facture ELSE 0 END) AS delai_facture_h, + SUM(CASE WHEN type_sejour IN ('2','5') THEN 1 ELSE 0 END) AS nb_facture_a, + SUM(CASE WHEN type_sejour IN ('2','5') THEN v_factures_reference_1.delai_facture ELSE 0 END) AS delai_facture_a, + SUM(CASE WHEN type_sejour IN ('3') THEN 1 ELSE 0 END) AS nb_facture_x, + SUM(CASE WHEN type_sejour IN ('3') THEN v_factures_reference_1.delai_facture ELSE 0 END) AS delai_facture_x, + + 0::numeric AS coefficient_facture_h, + 0::numeric AS coefficient_facture_a, + 0::numeric AS coefficient_facture_x + + FROM w_factures_reference v_factures_reference_1 + JOIN w_periode ON + ( + v_factures_reference_1.date_facture BETWEEN w_periode.date_debut_periode AND w_periode.date_fin_periode + ) + WHERE v_factures_reference_1.nb_non_calcules = 0; + + UPDATE w_retard_facture_coefficient SET + coefficient_facture_h = base.cti_division(base.cti_division(duree_periode, nb_facture_h + nb_facture_a + nb_facture_x) * base.cti_division(delai_facture_h, nb_facture_h) + , base.cti_division(delai_facture_a + delai_facture_h + delai_facture_x, nb_facture_a + nb_facture_h + nb_facture_x)), + coefficient_facture_a = base.cti_division(base.cti_division(duree_periode, nb_facture_h + nb_facture_a + nb_facture_x) * base.cti_division(delai_facture_a, nb_facture_a) + , base.cti_division(delai_facture_a + delai_facture_h + delai_facture_x, nb_facture_a + nb_facture_h + nb_facture_x)), + coefficient_facture_x = base.cti_division(duree_periode, nb_facture_h + nb_facture_a + nb_facture_x) * + base.cti_division(base.cti_division(delai_facture_x, nb_facture_x), base.cti_division(delai_facture_a + delai_facture_h + delai_facture_x, nb_facture_a + nb_facture_h + nb_facture_x)) + ; + + -- Mise à jour dans table + + UPDATE w_factures_reference + SET retard_facture = + CASE WHEN type_sejour IN ('2','5') THEN coefficient_facture_a WHEN type_sejour IN ('3') THEN coefficient_facture_x ELSE coefficient_facture_h END + FROM w_retard_facture_coefficient + WHERE nb_non_calcules = 1 AND date_sortie >= date_debut_periode; + + -- Validation données + SELECT base.cti_disable_index('activite', 'i_factures_reference_1'); + SELECT base.cti_disable_index('activite', 'i_factures_reference_2'); + SELECT base.cti_disable_index('activite', 'i_factures_reference_3'); + SELECT base.cti_disable_index('activite', 'i_factures_reference_4'); + + TRUNCATE activite.p_factures_reference; + + INSERT INTO activite.p_factures_reference ( + sejour_id, + no_sejour, + date_entree, + date_sortie, + code_sorti, + facture_reference_id, + no_facture_reference, + type_t2a, + date_debut_facture, + date_fin_facture, + type_facture, + date_groupage, + retard_groupage, + delai_groupage, + nb_groupe, + nb_non_groupe, + nb_calculable, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + gmt_id, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + code_facture, + date_facture, + retard_facture, + delai_facture, + code_vente, + date_vente, + nb_factures, + nb_non_calcules, + nb_non_calcules_horsbg, + nb_non_calcules_bg, + nb_factures_regularisation, + nb_rejets, + code_expedie_0, + code_expedie_1, + code_expedie_2, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + nb_non_expedie, + nb_non_expedie_c, + nb_non_expedie_h, + nb_non_expedie_0, + nb_non_expedie_0_c, + nb_non_expedie_0_h, + nb_non_expedie_1, + nb_non_expedie_1_c, + nb_non_expedie_1_h, + nb_non_expedie_2, + nb_non_expedie_2_c, + nb_non_expedie_2_h, + montant_facture, + montant_facture_c, + montant_facture_h, + montant_facture_0, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_encours, + montant_encours_c, + montant_encours_h, + montant_encours_0, + montant_encours_0_c, + montant_encours_0_h, + montant_encours_1, + montant_encours_1_c, + montant_encours_1_h, + montant_encours_2, + montant_encours_2_c, + montant_encours_2_h, + montant_comptabilise, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_budget_global_c, + montant_regle, + montant_regle_c, + montant_regle_h, + montant_regle_0, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2, + montant_regle_2_c, + montant_regle_2_h, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0, + date_solde_0_c, + date_solde_0_h, + date_solde_1, + date_solde_1_c, + date_solde_1_h, + date_solde_2, + date_solde_2_c, + date_solde_2_h, + delai_solde, + delai_solde_c, + delai_solde_h, + delai_solde_0, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2, + delai_solde_2_c, + delai_solde_2_h, + nb_non_solde, + nb_non_solde_c, + nb_non_solde_h, + nb_non_solde_0, + nb_non_solde_0_c, + nb_non_solde_0_h, + nb_non_solde_1, + nb_non_solde_1_c, + nb_non_solde_1_h, + nb_non_solde_2, + nb_non_solde_2_c, + nb_non_solde_2_h, + nb_non_cloture, + nb_non_cloture_c, + nb_non_cloture_h, + nb_non_cloture_0, + nb_non_cloture_0_c, + nb_non_cloture_0_h, + nb_non_cloture_1, + nb_non_cloture_1_c, + nb_non_cloture_1_h, + nb_non_cloture_2, + nb_non_cloture_2_c, + nb_non_cloture_2_h, + nb_rubriques_c, + nb_rubriques_h + ) + SELECT + sejour_id, + no_sejour, + date_entree, + date_sortie, + code_sorti, + facture_reference_id, + no_facture_reference, + type_t2a, + date_debut_facture, + date_fin_facture, + type_facture, + date_groupage, + retard_groupage, + delai_groupage, + nb_groupe, + nb_non_groupe, + nb_calculable, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + gmt_id, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + code_facture, + date_facture, + retard_facture, + delai_facture, + code_vente, + date_vente, + nb_factures, + nb_non_calcules, + nb_non_calcules_horsbg, + nb_non_calcules_bg, + nb_factures_regularisation, + nb_rejets, + code_expedie_0, + code_expedie_1, + code_expedie_2, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + nb_non_expedie, + nb_non_expedie_c, + nb_non_expedie_h, + nb_non_expedie_0, + nb_non_expedie_0_c, + nb_non_expedie_0_h, + nb_non_expedie_1, + nb_non_expedie_1_c, + nb_non_expedie_1_h, + nb_non_expedie_2, + nb_non_expedie_2_c, + nb_non_expedie_2_h, + montant_facture, + montant_facture_c, + montant_facture_h, + montant_facture_0, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_encours, + montant_encours_c, + montant_encours_h, + montant_encours_0, + montant_encours_0_c, + montant_encours_0_h, + montant_encours_1, + montant_encours_1_c, + montant_encours_1_h, + montant_encours_2, + montant_encours_2_c, + montant_encours_2_h, + montant_comptabilise, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_budget_global_c, + montant_regle, + montant_regle_c, + montant_regle_h, + montant_regle_0, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2, + montant_regle_2_c, + montant_regle_2_h, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0, + date_solde_0_c, + date_solde_0_h, + date_solde_1, + date_solde_1_c, + date_solde_1_h, + date_solde_2, + date_solde_2_c, + date_solde_2_h, + delai_solde, + delai_solde_c, + delai_solde_h, + delai_solde_0, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2, + delai_solde_2_c, + delai_solde_2_h, + nb_non_solde, + nb_non_solde_c, + nb_non_solde_h, + nb_non_solde_0, + nb_non_solde_0_c, + nb_non_solde_0_h, + nb_non_solde_1, + nb_non_solde_1_c, + nb_non_solde_1_h, + nb_non_solde_2, + nb_non_solde_2_c, + nb_non_solde_2_h, + nb_non_cloture, + nb_non_cloture_c, + nb_non_cloture_h, + nb_non_cloture_0, + nb_non_cloture_0_c, + nb_non_cloture_0_h, + nb_non_cloture_1, + nb_non_cloture_1_c, + nb_non_cloture_1_h, + nb_non_cloture_2, + nb_non_cloture_2_c, + nb_non_cloture_2_h, + nb_rubriques_c, + nb_rubriques_h + FROM w_factures_reference; + + ANALYSE activite.p_factures_reference + ; + + + SELECT base.cti_enable_index('activite', 'i_factures_reference_1'); + SELECT base.cti_enable_index('activite', 'i_factures_reference_2'); + SELECT base.cti_enable_index('activite', 'i_factures_reference_3'); + SELECT base.cti_enable_index('activite', 'i_factures_reference_4'); + + + + + SELECT base.cti_disable_index('activite', 'i_factures_reference_tiers_1'); + SELECT base.cti_disable_index('activite', 'i_factures_reference_tiers_2'); + SELECT base.cti_disable_index('activite', 'i_factures_reference_tiers_3'); + SELECT base.cti_disable_index('activite', 'i_factures_reference_tiers_4'); + + + TRUNCATE activite.p_factures_reference_tiers; + + + INSERT INTO activite.p_factures_reference_tiers ( + sejour_id, + no_sejour, + date_entree, + date_sortie, + code_sorti, + facture_reference_id, + no_facture_reference, + type_t2a, + date_debut_facture, + date_fin_facture, + type_facture, + date_groupage, + retard_groupage, + delai_groupage, + nb_groupe, + nb_non_groupe, + nb_calculable, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + gmt_id, + tiers_payant_id, + code_facture, + date_facture, + retard_facture, + delai_facture, + code_vente, + date_vente, + nb_factures, + nb_non_calcules, + nb_non_calcules_horsbg, + nb_non_calcules_bg, + nb_factures_regularisation, + nb_rejets, + code_expedie_0, + code_expedie_1, + code_expedie_2, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + nb_non_expedie, + nb_non_expedie_c, + nb_non_expedie_h, + nb_non_expedie_0, + nb_non_expedie_0_c, + nb_non_expedie_0_h, + nb_non_expedie_1, + nb_non_expedie_1_c, + nb_non_expedie_1_h, + nb_non_expedie_2, + nb_non_expedie_2_c, + nb_non_expedie_2_h, + montant_facture, + montant_facture_c, + montant_facture_h, + montant_facture_0, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_encours, + montant_encours_c, + montant_encours_h, + montant_encours_0, + montant_encours_0_c, + montant_encours_0_h, + montant_encours_1, + montant_encours_1_c, + montant_encours_1_h, + montant_encours_2, + montant_encours_2_c, + montant_encours_2_h, + montant_comptabilise, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_budget_global_c, + montant_regle, + montant_regle_c, + montant_regle_h, + montant_regle_0, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2, + montant_regle_2_c, + montant_regle_2_h, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0, + date_solde_0_c, + date_solde_0_h, + date_solde_1, + date_solde_1_c, + date_solde_1_h, + date_solde_2, + date_solde_2_c, + date_solde_2_h, + delai_solde, + delai_solde_c, + delai_solde_h, + delai_solde_0, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2, + delai_solde_2_c, + delai_solde_2_h, + nb_non_solde, + nb_non_solde_c, + nb_non_solde_h, + nb_non_solde_0, + nb_non_solde_0_c, + nb_non_solde_0_h, + nb_non_solde_1, + nb_non_solde_1_c, + nb_non_solde_1_h, + nb_non_solde_2, + nb_non_solde_2_c, + nb_non_solde_2_h, + nb_non_cloture, + nb_non_cloture_c, + nb_non_cloture_h, + nb_non_cloture_0, + nb_non_cloture_0_c, + nb_non_cloture_0_h, + nb_non_cloture_1, + nb_non_cloture_1_c, + nb_non_cloture_1_h, + nb_non_cloture_2, + nb_non_cloture_2_c, + nb_non_cloture_2_h + ) + SELECT + sejour_id, + no_sejour, + date_entree, + date_sortie, + code_sorti, + facture_reference_id, + no_facture_reference, + type_t2a, + date_debut_facture, + date_fin_facture, + type_facture, + date_groupage, + CASE WHEN tiers_payant_1_id = 0 AND tiers_payant_2_id = 0 THEN retard_groupage ELSE 0 END, + delai_groupage, + nb_groupe, + nb_non_groupe, + nb_calculable, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + gmt_id, + tiers_payant_0_id AS tiers_payant_id, + code_facture, + date_facture, + CASE WHEN tiers_payant_1_id = 0 AND tiers_payant_2_id = 0 THEN retard_facture ELSE 0 END, + delai_facture, + code_vente, + date_vente, + nb_factures, + nb_non_calcules, + nb_non_calcules_horsbg, + nb_non_calcules_bg, + nb_factures_regularisation, + nb_rejets, + code_expedie_0 AS code_expedie_0, + '0' AS code_expedie_1, + '0' AS code_expedie_2, + date_expedition_0 AS date_expedition, + date_expedition_0, + NULL::date AS date_expedition_1, + NULL::date AS date_expedition_2, + no_bordereau_0, + '' AS no_bordereau_1, + '' AS no_bordereau_2, + delai_expedition_0 AS delai_expedition, + delai_expedition_0, + NULL::numeric AS delai_expedition_1, + NULL::numeric AS delai_expedition_2, + nb_non_expedie_0 AS nb_non_expedie, + nb_non_expedie_0_c AS nb_non_expedie_c, + nb_non_expedie_0_h AS nb_non_expedie_h, + nb_non_expedie_0, + nb_non_expedie_0_c, + nb_non_expedie_0_h, + 0 AS nb_non_expedie_1, + 0 AS nb_non_expedie_1_c, + 0 AS nb_non_expedie_1_h, + 0 AS nb_non_expedie_2, + 0 AS nb_non_expedie_2_c, + 0 AS nb_non_expedie_2_h, + montant_facture_0 AS montant_facture, + montant_facture_0_c AS montant_facture_c, + montant_facture_0_h AS montant_facture_h, + montant_facture_0, + montant_facture_0_c, + montant_facture_0_h, + 0 AS montant_facture_1, + 0 AS montant_facture_1_c, + 0 AS montant_facture_1_h, + 0 AS montant_facture_2, + 0 AS montant_facture_2_c, + 0 AS montant_facture_2_h, + 0 AS montant_facture_c_actes_inclus_dans_sejour, + 0 AS montant_facture_h_actes_inclus_dans_sejour, + montant_encours_0 AS montant_encours, + montant_encours_0_c AS montant_encours_c, + montant_encours_0_h AS montant_encours_h, + montant_encours_0, + montant_encours_0_c, + montant_encours_0_h, + 0 AS montant_encours_1, + 0 AS montant_encours_1_c, + 0 AS montant_encours_1_h, + 0 AS montant_encours_2, + 0 AS montant_encours_2_c, + 0 AS montant_encours_2_h, + montant_comptabilise_0 AS montant_comptabilise, + montant_comptabilise_0_c AS montant_comptabilise_c, + montant_comptabilise_0_h AS montant_comptabilise_h, + montant_comptabilise_0, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + 0 AS montant_comptabilise_1, + 0 AS montant_comptabilise_1_c, + 0 AS montant_comptabilise_1_h, + 0 AS montant_comptabilise_2, + 0 AS montant_comptabilise_2_c, + 0 AS montant_comptabilise_2_h, + 0 AS montant_comptabilise_budget_global_c, + montant_regle_0 AS montant_regle, + montant_regle_0_c AS montant_regle_c, + montant_regle_0_h AS montant_regle_h, + montant_regle_0, + montant_regle_0_c, + montant_regle_0_h, + 0 AS montant_regle_1, + 0 AS montant_regle_1_c, + 0 AS montant_regle_1_h, + 0 AS montant_regle_2, + 0 AS montant_regle_2_c, + 0 AS montant_regle_2_h, + date_solde_0 AS date_solde, + date_solde_0_c AS date_solde_c, + date_solde_0_h AS date_solde_h, + date_solde_0, + date_solde_0_c, + date_solde_0_h, + NULL::date AS date_solde_1, + NULL::date AS date_solde_1_c, + NULL::date AS date_solde_1_h, + NULL::date AS date_solde_2, + NULL::date AS date_solde_2_c, + NULL::date AS date_solde_2_h, + delai_solde_0 AS delai_solde, + delai_solde_0_c AS delai_solde_c, + delai_solde_0_h AS delai_solde_h, + delai_solde_0, + delai_solde_0_c, + delai_solde_0_h, + NULL::numeric AS delai_solde_1, + NULL::numeric AS delai_solde_1_c, + NULL::numeric AS delai_solde_1_h, + NULL::numeric AS delai_solde_2, + NULL::numeric AS delai_solde_2_c, + NULL::numeric AS delai_solde_2_h, + nb_non_solde_0 AS nb_non_solde, + nb_non_solde_0_c AS nb_non_solde_c, + nb_non_solde_0_h AS nb_non_solde_h, + nb_non_solde_0, + nb_non_solde_0_c, + nb_non_solde_0_h, + 0 AS nb_non_solde_1, + 0 AS nb_non_solde_1_c, + 0 AS nb_non_solde_1_h, + 0 AS nb_non_solde_2, + 0 AS nb_non_solde_2_c, + 0 AS nb_non_solde_2_h, + nb_non_cloture_0 AS nb_non_cloture, + nb_non_cloture_0_c AS nb_non_cloture_c, + nb_non_cloture_0_h AS nb_non_cloture_h, + nb_non_cloture_0, + nb_non_cloture_0_c, + nb_non_cloture_0_h, + 0 AS nb_non_cloture_1, + 0 AS nb_non_cloture_1_c, + 0 AS nb_non_cloture_1_h, + 0 AS nb_non_cloture_2, + 0 AS nb_non_cloture_2_c, + 0 AS nb_non_cloture_2_h + FROM w_factures_reference + WHERE tiers_payant_0_id <> 0 + AND + ( + montant_facture_0 <> 0 OR + montant_comptabilise_0 <> 0 OR + montant_regle_0 <> 0 OR + montant_encours <> 0 + ) + ; + + + INSERT INTO activite.p_factures_reference_tiers ( + sejour_id, + no_sejour, + date_entree, + date_sortie, + code_sorti, + facture_reference_id, + no_facture_reference, + type_t2a, + date_debut_facture, + date_fin_facture, + type_facture, + date_groupage, + retard_groupage, + delai_groupage, + nb_groupe, + nb_non_groupe, + nb_calculable, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + gmt_id, + tiers_payant_id, + code_facture, + date_facture, + retard_facture, + delai_facture, + code_vente, + date_vente, + nb_factures, + nb_non_calcules, + nb_non_calcules_horsbg, + nb_non_calcules_bg, + nb_factures_regularisation, + nb_rejets, + code_expedie_0, + code_expedie_1, + code_expedie_2, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + nb_non_expedie, + nb_non_expedie_c, + nb_non_expedie_h, + nb_non_expedie_0, + nb_non_expedie_0_c, + nb_non_expedie_0_h, + nb_non_expedie_1, + nb_non_expedie_1_c, + nb_non_expedie_1_h, + nb_non_expedie_2, + nb_non_expedie_2_c, + nb_non_expedie_2_h, + montant_facture, + montant_facture_c, + montant_facture_h, + montant_facture_0, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_encours, + montant_encours_c, + montant_encours_h, + montant_encours_0, + montant_encours_0_c, + montant_encours_0_h, + montant_encours_1, + montant_encours_1_c, + montant_encours_1_h, + montant_encours_2, + montant_encours_2_c, + montant_encours_2_h, + montant_comptabilise, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_budget_global_c, + montant_regle, + montant_regle_c, + montant_regle_h, + montant_regle_0, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2, + montant_regle_2_c, + montant_regle_2_h, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0, + date_solde_0_c, + date_solde_0_h, + date_solde_1, + date_solde_1_c, + date_solde_1_h, + date_solde_2, + date_solde_2_c, + date_solde_2_h, + delai_solde, + delai_solde_c, + delai_solde_h, + delai_solde_0, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2, + delai_solde_2_c, + delai_solde_2_h, + nb_non_solde, + nb_non_solde_c, + nb_non_solde_h, + nb_non_solde_0, + nb_non_solde_0_c, + nb_non_solde_0_h, + nb_non_solde_1, + nb_non_solde_1_c, + nb_non_solde_1_h, + nb_non_solde_2, + nb_non_solde_2_c, + nb_non_solde_2_h, + nb_non_cloture, + nb_non_cloture_c, + nb_non_cloture_h, + nb_non_cloture_0, + nb_non_cloture_0_c, + nb_non_cloture_0_h, + nb_non_cloture_1, + nb_non_cloture_1_c, + nb_non_cloture_1_h, + nb_non_cloture_2, + nb_non_cloture_2_c, + nb_non_cloture_2_h + ) + SELECT + sejour_id, + no_sejour, + date_entree, + date_sortie, + code_sorti, + facture_reference_id, + no_facture_reference, + type_t2a, + date_debut_facture, + date_fin_facture, + type_facture, + date_groupage, + CASE WHEN tiers_payant_1_id <> 0 THEN retard_groupage ELSE 0 END, + delai_groupage, + nb_groupe, + nb_non_groupe, + nb_calculable, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + gmt_id, + tiers_payant_1_id AS tiers_payant_id, + code_facture, + date_facture, + CASE WHEN tiers_payant_1_id <> 0 THEN retard_facture ELSE 0 END, + delai_facture, + code_vente, + date_vente, + nb_factures, + nb_non_calcules, + nb_non_calcules_horsbg, + nb_non_calcules_bg, + nb_factures_regularisation, + nb_rejets, + '0' AS code_expedie_0, + code_expedie_1, + '0' AS code_expedie_2, + date_expedition_1 AS date_expedition, + NULL::date AS date_expedition_0, + date_expedition_1, + NULL::date AS date_expedition_2, + '' AS no_bordereau_0, + no_bordereau_1, + '' AS no_bordereau_2, + delai_expedition_1 AS delai_expedition, + NULL::numeric AS delai_expedition_0, + delai_expedition_1, + NULL::numeric AS delai_expedition_2, + nb_non_expedie_1 AS nb_non_expedie, + nb_non_expedie_1_c AS nb_non_expedie_c, + nb_non_expedie_1_h AS nb_non_expedie_h, + 0 AS nb_non_expedie_0, + 0 AS nb_non_expedie_0_c, + 0 AS nb_non_expedie_0_h, + nb_non_expedie_1, + nb_non_expedie_1_c, + nb_non_expedie_1_h, + 0 AS nb_non_expedie_2, + 0 AS nb_non_expedie_2_c, + 0 AS nb_non_expedie_2_h, + montant_facture_1 AS montant_facture, + montant_facture_1_c AS montant_facture_c, + montant_facture_1_h AS montant_facture_h, + 0 AS montant_facture_0, + 0 AS montant_facture_0_c, + 0 AS montant_facture_0_h, + montant_facture_1, + montant_facture_1_c, + montant_facture_1_h, + 0 AS montant_facture_2, + 0 AS montant_facture_2_c, + 0 AS montant_facture_2_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_encours_1 AS montant_encours, + montant_encours_1_c AS montant_encours_c, + montant_encours_1_h AS montant_encours_h, + 0 AS montant_encours_0, + 0 AS montant_encours_0_c, + 0 AS montant_encours_0_h, + montant_encours_1, + montant_encours_1_c, + montant_encours_1_h, + 0 AS montant_encours_2, + 0 AS montant_encours_2_c, + 0 AS montant_encours_2_h, + montant_comptabilise_1 AS montant_comptabilise, + montant_comptabilise_1_c AS montant_comptabilise_c, + montant_comptabilise_1_h AS montant_comptabilise_h, + 0 AS montant_comptabilise_0, + 0 AS montant_comptabilise_0_c, + 0 AS montant_comptabilise_0_h, + montant_comptabilise_1, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + 0 AS montant_comptabilise_2, + 0 AS montant_comptabilise_2_c, + 0 AS montant_comptabilise_2_h, + montant_comptabilise_budget_global_c, + montant_regle_1 AS montant_regle, + montant_regle_1_c AS montant_regle_c, + montant_regle_1_h AS montant_regle_h, + 0 AS montant_regle_0, + 0 AS montant_regle_0_c, + 0 AS montant_regle_0_h, + montant_regle_1, + montant_regle_1_c, + montant_regle_1_h, + 0 AS montant_regle_2, + 0 AS montant_regle_2_c, + 0 AS montant_regle_2_h, + date_solde_1 AS date_solde, + date_solde_1_c AS date_solde_c, + date_solde_1_h AS date_solde_h, + NULL::date AS date_solde_0, + NULL::date AS date_solde_0_c, + NULL::date AS date_solde_0_h, + date_solde_1, + date_solde_1_c, + date_solde_1_h, + NULL::date AS date_solde_2, + NULL::date AS date_solde_2_c, + NULL::date AS date_solde_2_h, + delai_solde_1 AS delai_solde, + delai_solde_1_c AS delai_solde_c, + delai_solde_1_h AS delai_solde_h, + NULL::numeric AS delai_solde_0, + NULL::numeric AS delai_solde_0_c, + NULL::numeric AS delai_solde_0_h, + delai_solde_1, + delai_solde_1_c, + delai_solde_1_h, + NULL::numeric AS delai_solde_2, + NULL::numeric AS delai_solde_2_c, + NULL::numeric AS delai_solde_2_h, + nb_non_solde_1 AS nb_non_solde, + nb_non_solde_1_c AS nb_non_solde_c, + nb_non_solde_1_h AS nb_non_solde_h, + 0 AS nb_non_solde_0, + 0 AS nb_non_solde_0_c, + 0 AS nb_non_solde_0_h, + nb_non_solde_1, + nb_non_solde_1_c, + nb_non_solde_1_h, + 0 AS nb_non_solde_2, + 0 AS nb_non_solde_2_c, + 0 AS nb_non_solde_2_h, + nb_non_cloture_1 AS nb_non_cloture, + nb_non_cloture_1_c AS nb_non_cloture_c, + nb_non_cloture_1_h AS nb_non_cloture_h, + 0 AS nb_non_cloture_0, + 0 AS nb_non_cloture_0_c, + 0 AS nb_non_cloture_0_h, + nb_non_cloture_1, + nb_non_cloture_1_c, + nb_non_cloture_1_h, + 0 AS nb_non_cloture_2, + 0 AS nb_non_cloture_2_c, + 0 AS nb_non_cloture_2_h + FROM w_factures_reference + WHERE tiers_payant_1_id <> 0 + AND + ( + montant_facture_1 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_regle_1 <> 0 OR + montant_encours <> 0 + ) + ; + + + INSERT INTO activite.p_factures_reference_tiers ( + sejour_id, + no_sejour, + date_entree, + date_sortie, + code_sorti, + facture_reference_id, + no_facture_reference, + type_t2a, + date_debut_facture, + date_fin_facture, + type_facture, + date_groupage, + retard_groupage, + delai_groupage, + nb_groupe, + nb_non_groupe, + nb_calculable, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + gmt_id, + tiers_payant_id, + code_facture, + date_facture, + retard_facture, + delai_facture, + code_vente, + date_vente, + nb_factures, + nb_non_calcules, + nb_non_calcules_horsbg, + nb_non_calcules_bg, + nb_factures_regularisation, + nb_rejets, + code_expedie_0, + code_expedie_1, + code_expedie_2, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + nb_non_expedie, + nb_non_expedie_c, + nb_non_expedie_h, + nb_non_expedie_0, + nb_non_expedie_0_c, + nb_non_expedie_0_h, + nb_non_expedie_1, + nb_non_expedie_1_c, + nb_non_expedie_1_h, + nb_non_expedie_2, + nb_non_expedie_2_c, + nb_non_expedie_2_h, + montant_facture, + montant_facture_c, + montant_facture_h, + montant_facture_0, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_encours, + montant_encours_c, + montant_encours_h, + montant_encours_0, + montant_encours_0_c, + montant_encours_0_h, + montant_encours_1, + montant_encours_1_c, + montant_encours_1_h, + montant_encours_2, + montant_encours_2_c, + montant_encours_2_h, + montant_comptabilise, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_budget_global_c, + montant_regle, + montant_regle_c, + montant_regle_h, + montant_regle_0, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2, + montant_regle_2_c, + montant_regle_2_h, + date_solde, + date_solde_c, + date_solde_h, + date_solde_0, + date_solde_0_c, + date_solde_0_h, + date_solde_1, + date_solde_1_c, + date_solde_1_h, + date_solde_2, + date_solde_2_c, + date_solde_2_h, + delai_solde, + delai_solde_c, + delai_solde_h, + delai_solde_0, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2, + delai_solde_2_c, + delai_solde_2_h, + nb_non_solde, + nb_non_solde_c, + nb_non_solde_h, + nb_non_solde_0, + nb_non_solde_0_c, + nb_non_solde_0_h, + nb_non_solde_1, + nb_non_solde_1_c, + nb_non_solde_1_h, + nb_non_solde_2, + nb_non_solde_2_c, + nb_non_solde_2_h, + nb_non_cloture, + nb_non_cloture_c, + nb_non_cloture_h, + nb_non_cloture_0, + nb_non_cloture_0_c, + nb_non_cloture_0_h, + nb_non_cloture_1, + nb_non_cloture_1_c, + nb_non_cloture_1_h, + nb_non_cloture_2, + nb_non_cloture_2_c, + nb_non_cloture_2_h + ) + SELECT + sejour_id, + no_sejour, + date_entree, + date_sortie, + code_sorti, + facture_reference_id, + no_facture_reference, + type_t2a, + date_debut_facture, + date_fin_facture, + type_facture, + date_groupage, + CASE WHEN tiers_payant_1_id = 0 AND tiers_payant_2_id <> 0 THEN retard_groupage ELSE 0 END, + delai_groupage, + nb_groupe, + nb_non_groupe, + nb_calculable, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + gmt_id, + tiers_payant_2_id AS tiers_payant_id, + code_facture, + date_facture, + CASE WHEN tiers_payant_1_id = 0 AND tiers_payant_2_id <> 0 THEN retard_facture ELSE 0 END, + delai_facture, + code_vente, + date_vente, + nb_factures, + nb_non_calcules, + nb_non_calcules_horsbg, + nb_non_calcules_bg, + nb_factures_regularisation, + nb_rejets, + '0' AS code_expedie_0, + '0' AS code_expedie_1, + code_expedie_2, + date_expedition_2 AS date_expedition, + NULL::date AS date_expedition_0, + NULL::date AS date_expedition_1, + date_expedition_2, + '' AS no_bordereau_0, + '' AS no_bordereau_1, + no_bordereau_2, + delai_expedition_2 AS delai_expedition, + NULL::numeric AS delai_expedition_0, + NULL::numeric AS delai_expedition_1, + delai_expedition_2, + nb_non_expedie_2 AS nb_non_expedie, + nb_non_expedie_2_c AS nb_non_expedie_c, + nb_non_expedie_2_h AS nb_non_expedie_h, + 0 AS nb_non_expedie_0, + 0 AS nb_non_expedie_0_c, + 0 AS nb_non_expedie_0_h, + 0 AS nb_non_expedie_1, + 0 AS nb_non_expedie_1_c, + 0 AS nb_non_expedie_1_h, + nb_non_expedie_2, + nb_non_expedie_2_c, + nb_non_expedie_2_h, + montant_facture_2 AS montant_facture, + montant_facture_2_c AS montant_facture_c, + montant_facture_2_h AS montant_facture_h, + 0 AS montant_facture_0, + 0 AS montant_facture_0_c, + 0 AS montant_facture_0_h, + 0 AS montant_facture_1, + 0 AS montant_facture_1_c, + 0 AS montant_facture_1_h, + montant_facture_2, + montant_facture_2_c, + montant_facture_2_h, + 0 AS montant_facture_c_actes_inclus_dans_sejour, + 0 AS montant_facture_h_actes_inclus_dans_sejour, + montant_encours_2 AS montant_encours, + montant_encours_2_c AS montant_encours_c, + montant_encours_2_h AS montant_encours_h, + 0 AS montant_encours_0, + 0 AS montant_encours_0_c, + 0 AS montant_encours_0_h, + 0 AS montant_encours_1, + 0 AS montant_encours_1_c, + 0 AS montant_encours_1_h, + montant_encours_2, + montant_encours_2_c, + montant_encours_2_h, + montant_comptabilise_2 AS montant_comptabilise, + montant_comptabilise_2_c AS montant_comptabilise_c, + montant_comptabilise_2_h AS montant_comptabilise_h, + 0 AS montant_comptabilise_0, + 0 AS montant_comptabilise_0_c, + 0 AS montant_comptabilise_0_h, + 0 AS montant_comptabilise_1, + 0 AS montant_comptabilise_1_c, + 0 AS montant_comptabilise_1_h, + montant_comptabilise_2, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + 0 AS montant_comptabilise_budget_global_c, + montant_regle_2 AS montant_regle, + montant_regle_2_c AS montant_regle_c, + montant_regle_2_h AS montant_regle_h, + 0 AS montant_regle_0, + 0 AS montant_regle_0_c, + 0 AS montant_regle_0_h, + 0 AS montant_regle_1, + 0 AS montant_regle_1_c, + 0 AS montant_regle_1_h, + montant_regle_2, + montant_regle_2_c, + montant_regle_2_h, + date_solde_2 AS date_solde, + date_solde_2_c AS date_solde_c, + date_solde_2_h AS date_solde_h, + NULL::date AS date_solde_0, + NULL::date AS date_solde_0_c, + NULL::date AS date_solde_0_h, + NULL::date AS date_solde_1, + NULL::date AS date_solde_1_c, + NULL::date AS date_solde_1_h, + date_solde_2, + date_solde_2_c, + date_solde_2_h, + delai_solde_2 AS delai_solde, + delai_solde_2_c AS delai_solde_c, + delai_solde_2_h AS delai_solde_h, + NULL::numeric AS delai_solde_0, + NULL::numeric AS delai_solde_0_c, + NULL::numeric AS delai_solde_0_h, + NULL::numeric AS delai_solde_1, + NULL::numeric AS delai_solde_1_c, + NULL::numeric AS delai_solde_1_h, + delai_solde_2, + delai_solde_2_c, + delai_solde_2_h, + nb_non_solde_2 AS nb_non_solde, + nb_non_solde_2_c AS nb_non_solde_c, + nb_non_solde_2_h AS nb_non_solde_h, + 0 AS nb_non_solde_0, + 0 AS nb_non_solde_0_c, + 0 AS nb_non_solde_0_h, + 0 AS nb_non_solde_1, + 0 AS nb_non_solde_1_c, + 0 AS nb_non_solde_1_h, + nb_non_solde_2, + nb_non_solde_2_c, + nb_non_solde_2_h, + nb_non_cloture_2 AS nb_non_cloture, + nb_non_cloture_2_c AS nb_non_cloture_c, + nb_non_cloture_2_h AS nb_non_cloture_h, + 0 AS nb_non_cloture_0, + 0 AS nb_non_cloture_0_c, + 0 AS nb_non_cloture_0_h, + 0 AS nb_non_cloture_1, + 0 AS nb_non_cloture_1_c, + 0 AS nb_non_cloture_1_h, + nb_non_cloture_2, + nb_non_cloture_2_c, + nb_non_cloture_2_h + FROM w_factures_reference + WHERE tiers_payant_2_id <> 0 + AND + ( + montant_facture_2 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_regle_2 <> 0 OR + montant_encours <> 0 + ) + ; + + ANALYSE activite.p_factures_reference_tiers + ; + + SELECT base.cti_enable_index('activite', 'i_factures_reference_tiers_1'); + SELECT base.cti_enable_index('activite', 'i_factures_reference_tiers_2'); + SELECT base.cti_enable_index('activite', 'i_factures_reference_tiers_3'); + SELECT base.cti_enable_index('activite', 'i_factures_reference_tiers_4'); + + + + UPDATE activite.p_factures + SET date_fin = date_fin_facture + FROM activite.p_factures_reference + WHERE p_factures.no_facture_reference = p_factures_reference.no_facture_reference AND + p_factures.date_fin <> p_factures_reference.date_fin_facture + ; + + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_factures_reference CASCADE; + + -- Report motifs de non facturation + + -- Annulation si facture OK + UPDATE activite.p_factures + SET motif_non_facturation_id = 0, motif_non_facturation_comment = '' + FROM activite.p_factures_reference + WHERE p_factures_reference.no_facture_reference = p_factures.no_facture_reference AND + p_factures.motif_non_facturation_id <> 0 AND + nb_non_calcules = 0 + ; + + UPDATE activite.p_factures_reference + SET motif_non_facturation_id = subview.motif_non_facturation_id, + motif_non_facturation_comment = subview.motif_non_facturation_comment + FROM + ( + SELECT no_facture_reference, + MAX(motif_non_facturation_id) AS motif_non_facturation_id, + MAX(motif_non_facturation_comment) AS motif_non_facturation_comment + FROM activite.p_factures + WHERE motif_non_facturation_id <> 0 + GROUP BY 1 + ) subview + WHERE p_factures_reference.no_facture_reference = subview.no_facture_reference AND + nb_non_calcules = 1 + ; + UPDATE activite.p_factures_reference_tiers + SET motif_non_facturation_id = subview.motif_non_facturation_id, + motif_non_facturation_comment = subview.motif_non_facturation_comment + FROM + ( + SELECT no_facture_reference, + MAX(motif_non_facturation_id) AS motif_non_facturation_id, + MAX(motif_non_facturation_comment) AS motif_non_facturation_comment + FROM activite.p_factures + WHERE motif_non_facturation_id <> 0 + GROUP BY 1 + ) subview + WHERE p_factures_reference_tiers.no_facture_reference = subview.no_facture_reference AND + nb_non_calcules = 1 + ; + + + UPDATE activite.p_factures_reference + SET motif_non_facturation_id = t_motif_non_facturation.oid + FROM activite.t_motif_non_facturation + WHERE t_motif_non_facturation.code_original = '*CTING' AND + nb_non_calcules = 1 AND + nb_non_groupe = 1 AND + motif_non_facturation_id = 0 + ; + + UPDATE activite.p_factures + SET motif_non_facturation_id = p_factures_reference.motif_non_facturation_id + FROm activite.p_factures_reference + WHERE p_factures_reference.no_facture_reference = p_factures.no_facture_reference AND + p_factures.motif_non_facturation_id IS DISTINCT FROM p_factures_reference.motif_non_facturation_id + ; + + UPDATE activite.p_factures_reference_tiers + SET motif_non_facturation_id = p_factures_reference.motif_non_facturation_id + FROM activite.p_factures_reference + WHERE p_factures_reference.no_facture_reference = p_factures_reference_tiers.no_facture_reference AND + p_factures_reference_tiers.motif_non_facturation_id IS DISTINCT FROM p_factures_reference.motif_non_facturation_id AND + p_factures_reference_tiers.nb_non_calcules = 1 + ; + + + -- Pointer les journées facturées dans occupation + DROP TABLE IF EXISTS w_sejours_non_factures; + CREATE TEMP TABLE w_sejours_non_factures AS + SELECT p_sejours.no_sejour, + COALESCE(p_factures_reference.date_entree, p_sejours.date_entree) AS date_debut, + COALESCE(p_factures_reference.date_sortie, p_sejours.date_sortie) AS date_fin + FROM activite.p_sejours + LEFT JOIN activite.p_factures_reference ON p_sejours.no_sejour = p_factures_reference.no_sejour + WHERE p_factures_reference.nb_non_calcules <> 0 + ORDER BY p_sejours.no_sejour, p_factures_reference.date_sortie; + + CREATE INDEX w_sejours_non_factures_i1 ON w_sejours_non_factures USING btree (no_sejour); + + UPDATE activite.p_mouvements_sejour + SET est_facture = '0' + WHERE p_mouvements_sejour.est_mouvement_previsionnel = '1' AND + est_facture IS DISTINCT FROM '0'; + + UPDATE activite.p_mouvements_sejour + SET est_facture = '0' + FROM w_sejours_non_factures + WHERE p_mouvements_sejour.no_sejour = w_sejours_non_factures.no_sejour AND + p_mouvements_sejour.date BETWEEN w_sejours_non_factures.date_debut AND w_sejours_non_factures.date_fin; + + + + -- Code facture complet dans séjours + DROP TABLE IF EXISTS w_sejours_etat_factures; + CREATE TEMP TABLE w_sejours_etat_factures AS + SELECT p_sejours.no_sejour, + MIN(CASE WHEN nb_non_calcules = 0 THEN '1' ELSE '0' END) AS code_facture_reference, + MAX(CASE WHEN nb_non_calcules = 0 THEN p_factures_reference.date_facture ELSE '20991231' END) AS date_facture_reference, + MIN(CASE WHEN p_sejours.date_facture < '2099-12-31'THEN '1' ELSE '0' END) AS code_facture_sejour + FROM activite.p_sejours + LEFT JOIN activite.p_factures_reference ON p_sejours.no_sejour = p_factures_reference.no_sejour + GROUP BY 1 + HAVING MIN(CASE WHEN nb_non_calcules = 0 THEN '1' ELSE '0' END) <> MIN(CASE WHEN p_sejours.date_facture < '2099-12-31'THEN '1' ELSE '0' END) + ORDER BY p_sejours.no_sejour; + + CREATE INDEX w_sejours_etat_factures_i1 ON w_sejours_etat_factures USING btree (no_sejour); + + UPDATE activite.p_sejours + SET date_facture = date_facture_reference + FROM w_sejours_etat_factures + WHERE p_sejours.no_sejour = w_sejours_etat_factures.no_sejour; + + + -- Actualisation facture de référence des encours + UPDATE activite.p_factures_encours + SET no_facture_reference = p_factures.no_facture + FROM activite.p_factures + WHERE p_factures_encours.no_sejour = p_factures.no_sejour AND + p_factures_encours.date_debut BETWEEN p_factures.date_debut AND p_factures.date_fin AND + p_factures.no_facture = p_factures.no_facture_reference AND + p_factures_encours.no_facture_reference <> p_factures.no_facture; + + -- Etat des séjours + + DROP TABLE IF EXISTS w_sejours_1; + CREATE TEMP TABLE w_sejours_1 as + SELECT + p_sejours.no_sejour, + SUM(CASE WHEN p_factures_reference.date_facture != '2099-12-31' THEN 1 ELSE 0 END) AS nb_facturation_partielle, + MAX(nb_non_groupe) AS nb_non_groupe, + MAX(nb_non_calcules) AS nb_non_calcules, + MAX(nb_non_solde) AS nb_non_solde + FROM activite.p_sejours + LEFT JOIN activite.p_factures_reference ON p_factures_reference.no_sejour = p_sejours.no_sejour + GROUP BY 1; + + ANALYSE w_sejours_1 + ; + + -- UPDATE Etat des séjours + + UPDATE activite.p_sejours SET etat_sejour = + CASE + WHEN type_sejour = 9 THEN '9' -- Fictif + + WHEN est_sans_facturation ='1' THEN '8' -- Non facturable ou recuse + + WHEN code_prevu = 1 THEN '0' -- prévu + + WHEN code_sorti <> 1 THEN CASE WHEN nb_facturation_partielle > 0 THEN '2' ELSE '1' END -- Présent(1) et présent avec faturation partielle (2) + + WHEN code_sorti = 1 AND nb_non_groupe = 1 THEN '3' -- sorti non groupé + + WHEN code_sorti = 1 AND nb_non_calcules = 1 AND date_groupage IS NULL THEN '3' -- Sorti non groupé dans le cas où il y a un pré-groupage mais pas de validation DIM + + WHEN code_sorti = 1 AND nb_non_calcules = 1 THEN CASE WHEN nb_facturation_partielle > 0 THEN '5' ELSE '4' END-- sorti non facturé(4) et sorti non facturé avec facturation partielle (5) + + WHEN nb_non_solde = 0 THEN '7' -- soldé + + WHEN nb_non_calcules = 0 AND nb_non_solde = 1 THEN '6' -- Facturé non soldé + + ELSE '?' + END + FROM w_sejours_1 + WHERE w_sejours_1.no_sejour = p_sejours.no_sejour; + + ]]> + + + + + + 0 THEN '5' ELSE '4' END + WHEN w_sejours.nb_non_solde = 0 THEN '7' + WHEN w_sejours.nb_non_calcules = 0 AND w_sejours.nb_non_solde = 1 THEN '6' + ELSE '0' + END AS etat_new + FROM w_sejours + ) + UPDATE pmsi.p_rss + SET etat_sejour = w_sejours_cal.etat_new + FROM w_sejours_cal + WHERE p_rss.oid = w_sejours_cal.rss_id + AND p_rss.etat_sejour IS DISTINCT FROM w_sejours_cal.etat_new + ; + + UPDATE pmsi.p_rss SET etat_sejour = '8' + WHERE etat_sejour is null or etat_sejour = '?'; + + -- Update champ transmission e-pmsi MCO,SSR,PSY,HAD,HORS PMSI + WITH sej_pmsi AS ( + SELECT DISTINCT no_sejour + ,traitement_epmsi + ,en_cours_pmsi FROM activite.p_sejour_pmsi + ) + UPDATE activite.p_sejours + SET traitement_epmsi_id = CASE + WHEN type_pmsi not in ('1','2','3','4') THEN 5 + WHEN type_pmsi = '1' AND sej_pmsi.en_cours_pmsi = '0' AND sej_pmsi.traitement_epmsi in ('11', '12', '13', '14', '15', '21', '22', '23', '24', '25', '26', '30', '31', '32', '33') THEN 11 + ELSE 10 END + FROM sej_pmsi + WHERE sej_pmsi.no_sejour = p_sejours.no_sejour; + ]]> + + + + + + + 0 + ; + + -- MAJ p_sejours.ghmgme_id pour le champ gme + + UPDATE activite[PX].p_sejours + SET ghmgme_id = t_ghmgme_c.ghmgme_id + FROM activite[PX].t_ghmgme_c + where t_ghmgme_c.ghmgme_id = p_sejours.gme_id + 10000 + AND p_sejours.gme_id > 0 + ; + + ]]> + + + + + + + date entrée et nombre à 1 et date début = date entrée et date fin = date sortie alors date début = date fin' + WHERE 'TRANSCPJS' NOT IN (SELECT code FROM activite.t_divers); + ; + + UPDATE activite.p_factures_lignes_c + SET date_debut = p_factures_lignes_c.date_fin + FROM activite.p_factures + JOIN activite.p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_divers ON t_divers.code = 'TRANSCPJS' AND t_divers.valeur = '1' + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + ( + nb_rubrique = 1 OR + nb_rubrique = -1 + ) AND + p_factures_lignes_c.date_fin > p_factures_lignes_c.date_debut AND + p_factures_lignes_c.date_fin = date_sortie AND + p_factures_lignes_c.date_debut = date_entree AND + rubrique_facturation_id IN + (SELECT to_id + FROM activite.t_listes + JOIN activite.t_listes_contenu ON liste_id = t_listes.oid + WHERE code = 'CTI_SHO_R' + ) + ; + + -- Compte produit + + -- Forcage depuis parametrage + UPDATE activite[PX].p_factures_lignes_c + SET compte_produit_id = + CASE + WHEN est_compte_force = '1' THEN t_service_rubrique.compte_id + WHEN p_factures_lignes_c.compte_produit_id = 0 THEN t_service_rubrique.compte_id + ELSE p_factures_lignes_c.compte_produit_id END + FROM activite[PX].t_lieux, + activite[PX].t_service_rubrique + WHERE lieu_id = t_lieux.oid AND + t_service_rubrique.service_facturation_id = t_lieux.service_facturation_id AND + t_service_rubrique.rubrique_facturation_id = p_factures_lignes_c.rubrique_facturation_id AND + t_service_rubrique.compte_id <> 0 AND + p_factures_lignes_c.compte_produit_id IS DISTINCT FROM + CASE + WHEN est_compte_force = '1' THEN t_service_rubrique.compte_id + WHEN p_factures_lignes_c.compte_produit_id = 0 THEN t_service_rubrique.compte_id + ELSE p_factures_lignes_c.compte_produit_id END + ; + + -- Déduction depuis historique service rubrique + DROP TABLE IF EXISTS w_factures_lignes_c_compte_serrub; + CREATE TEMP TABLE w_factures_lignes_c_compte_serrub AS + SELECT rubrique_facturation_id, service_facturation_id, (MAX(Array[date_vente::text || to_char(nb,'FM000000000000'), compte_produit_id::text]))[2]::bigint AS compte_produit_id + FROM + ( + SELECT rubrique_facturation_id, service_facturation_id, date(date_trunc('month',date_vente)) AS date_vente, compte_produit_id, count(*) AS nb + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_lieux ON p_factures_lignes_c.lieu_id = t_lieux.oid + WHERE compte_produit_id <> 0 AND date_vente < '20991231' + GROUP BY 1,2,3,4 + ) subview + GROUP BY 1,2; + + CREATE INDEX w_factures_lignes_c_compte_serrub_i1 + ON w_factures_lignes_c_compte_serrub + USING btree + (rubrique_facturation_id); + + + UPDATE activite.p_factures_lignes_c + SET compte_produit_id = w_factures_lignes_c_compte_serrub.compte_produit_id + FROM w_factures_lignes_c_compte_serrub, + activite.t_lieux + WHERE p_factures_lignes_c.compte_produit_id = 0 AND + p_factures_lignes_c.lieu_id = t_lieux.oid AND + p_factures_lignes_c.rubrique_facturation_id = w_factures_lignes_c_compte_serrub.rubrique_facturation_id AND + t_lieux.service_facturation_id = w_factures_lignes_c_compte_serrub.service_facturation_id; + + -- Déduction depuis historique service prestation + DROP TABLE IF EXISTS w_factures_lignes_c_compte_serpre; + CREATE TEMP TABLE w_factures_lignes_c_compte_serpre AS + SELECT prestation_id, service_facturation_id, (MAX(Array[date_vente::text || to_char(nb,'FM000000000000'), compte_produit_id::text]))[2]::bigint AS compte_produit_id + FROM + ( + SELECT prestation_id, service_facturation_id, date(date_trunc('month',date_vente)) AS date_vente, compte_produit_id, count(*) AS nb + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_lieux ON p_factures_lignes_c.lieu_id = t_lieux.oid + WHERE compte_produit_id <> 0 AND date_vente < '20991231' + GROUP BY 1,2,3,4 + ) subview + GROUP BY 1,2; + + CREATE INDEX w_factures_lignes_c_compte_serpre_i1 + ON w_factures_lignes_c_compte_serpre + USING btree + (prestation_id); + + UPDATE activite.p_factures_lignes_c + SET compte_produit_id = w_factures_lignes_c_compte_serpre.compte_produit_id + FROM w_factures_lignes_c_compte_serpre, + activite.t_lieux + WHERE p_factures_lignes_c.compte_produit_id = 0 AND + p_factures_lignes_c.lieu_id = t_lieux.oid AND + p_factures_lignes_c.prestation_id = w_factures_lignes_c_compte_serpre.prestation_id AND + t_lieux.service_facturation_id = w_factures_lignes_c_compte_serpre.service_facturation_id; + + -- Déduction depuis historique rubrique uniquement + DROP TABLE IF EXISTS w_factures_lignes_c_compte_rub; + CREATE TEMP TABLE w_factures_lignes_c_compte_rub AS + SELECT rubrique_facturation_id, (MAX(Array[date_vente::text || to_char(nb,'FM000000000000'), compte_produit_id::text]))[2]::bigint AS compte_produit_id + FROM + ( + SELECT rubrique_facturation_id, date(date_trunc('month',date_vente)) AS date_vente, compte_produit_id, count(*) AS nb + FROM activite.p_factures_lignes_c + JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + WHERE compte_produit_id <> 0 AND date_vente < '20991231' + GROUP BY 1,2,3 + ) subview + GROUP BY 1; + + CREATE INDEX w_factures_lignes_c_compte_rub_i1 + ON w_factures_lignes_c_compte_rub + USING btree + (rubrique_facturation_id); + + + UPDATE activite.p_factures_lignes_c + SET compte_produit_id = w_factures_lignes_c_compte_rub.compte_produit_id + FROM w_factures_lignes_c_compte_rub + WHERE p_factures_lignes_c.compte_produit_id = 0 AND + p_factures_lignes_c.rubrique_facturation_id = w_factures_lignes_c_compte_rub.rubrique_facturation_id; + + + + -- Forcage depuis parametrage + UPDATE activite[PX].p_factures_encours_lignes_c + SET compte_produit_id = + CASE + WHEN est_compte_force = '1' THEN t_service_rubrique.compte_id + WHEN p_factures_encours_lignes_c.compte_produit_id = 0 THEN t_service_rubrique.compte_id + ELSE p_factures_encours_lignes_c.compte_produit_id END + FROM activite[PX].t_lieux, + activite[PX].t_service_rubrique + WHERE lieu_id = t_lieux.oid AND + t_service_rubrique.service_facturation_id = t_lieux.service_facturation_id AND + t_service_rubrique.rubrique_facturation_id = p_factures_encours_lignes_c.rubrique_facturation_id AND + t_service_rubrique.compte_id <> 0 AND + p_factures_encours_lignes_c.compte_produit_id IS DISTINCT FROM + CASE + WHEN est_compte_force = '1' THEN t_service_rubrique.compte_id + WHEN p_factures_encours_lignes_c.compte_produit_id = 0 THEN t_service_rubrique.compte_id + ELSE p_factures_encours_lignes_c.compte_produit_id END + ; + + -- Déduction depuis historiques service rubrique + UPDATE activite[PX].p_factures_encours_lignes_c + SET compte_produit_id = w_factures_lignes_c_compte_serrub.compte_produit_id + FROM w_factures_lignes_c_compte_serrub, + activite[PX].t_lieux + WHERE (p_factures_encours_lignes_c.compte_produit_id = 0 OR p_factures_encours_lignes_c.compte_produit_id IS NULL) AND + p_factures_encours_lignes_c.lieu_id = t_lieux.oid AND + p_factures_encours_lignes_c.rubrique_facturation_id = w_factures_lignes_c_compte_serrub.rubrique_facturation_id AND + t_lieux.service_facturation_id = w_factures_lignes_c_compte_serrub.service_facturation_id; + + -- Déduction depuis historiques service prestation + UPDATE activite.p_factures_encours_lignes_c + SET compte_produit_id = w_factures_lignes_c_compte_serpre.compte_produit_id + FROM w_factures_lignes_c_compte_serpre, + activite.t_lieux + WHERE p_factures_encours_lignes_c.compte_produit_id = 0 AND + p_factures_encours_lignes_c.lieu_id = t_lieux.oid AND + p_factures_encours_lignes_c.prestation_id = w_factures_lignes_c_compte_serpre.prestation_id AND + t_lieux.service_facturation_id = w_factures_lignes_c_compte_serpre.service_facturation_id; + + -- Déduction depuis historiques rubrique uniquement + UPDATE activite[PX].p_factures_encours_lignes_c + SET compte_produit_id = w_factures_lignes_c_compte_rub.compte_produit_id + FROM w_factures_lignes_c_compte_rub + WHERE (p_factures_encours_lignes_c.compte_produit_id = 0 OR p_factures_encours_lignes_c.compte_produit_id IS NULL) AND + p_factures_encours_lignes_c.rubrique_facturation_id = w_factures_lignes_c_compte_rub.rubrique_facturation_id; + + + + + -- Maintenance rubrique_facturation CTI + SELECT activite[PX].cti_reorganize_rubrique_facture_c('activite[PX].p_factures_lignes_c'); + SELECT activite[PX].cti_reorganize_rubrique_facture_c('activite[PX].p_factures_encours_lignes_c'); + + + -- Valorisation des actes gratuits + UPDATE activite.p_factures_lignes_h + SET montant_non_facture = round(p_factures_lignes_h.prix_unitaire * p_factures_lignes_h.nb_prestation * p_factures_lignes_h.coefficient * p_factures_lignes_h.coefficient_mco, 2) + FROM base.t_actes, + activite.p_factures + JOIN activite.p_sejours ON p_sejours.no_sejour = p_factures.no_sejour + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + p_factures_lignes_h.acte_id = t_actes.oid AND + p_factures_lignes_h.montant_facture = 0 AND + (p_sejours.est_budget_global IS DISTINCT FROM '1' OR p_factures.code_facture <> '0') AND + COALESCE(p_factures_lignes_h.montant_facture_actes_inclus_dans_sejour, 0) = 0; + + + + + -- Regroupement des lignes de CP (cas de rubriques facturées deux fois sur même date pour pb tarif patient/mutuelle + DROP TABLE IF EXISTS w_cp_double; + CREATE TEMP TABLE w_cp_double AS + SELECT + no_facture, date_debut, date_fin, prestation_id, rubrique_facturation_id, nb_rubrique, nb_prestation, coefficient, + SUM(prix_unitaire) AS prix_unitaire, + round(base.cti_division(SUM(montant_facture_1),SUM(montant_facture))*100.00,0) AS taux_1, + round(base.cti_division(SUM(montant_facture_2),SUM(montant_facture))*100.00,0) AS taux_2, + round(base.cti_division(SUM(montant_facture_22),SUM(montant_facture))*100.00,0) AS taux_22, + round(base.cti_division(SUM(montant_facture_0),SUM(montant_facture))*100.00,0) AS taux_0, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + + MIN(p_factures_lignes_c.CTID) AS keepCTID + FROM activite.p_factures_lignes_c + WHERE rubrique_facturation_id IN (SELECT to_id FROM activite.v_listes_3 WHERE liste_code = 'CTI_SHO_R') AND + montant_facture <> 0 + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) > 1; + + + INSERT INTO w_cp_double + SELECT + no_facture, date_debut, date_fin, MAX(prestation_id) AS prestation_id, rubrique_facturation_id, 1 AS nb_rubrique, 1 AS nb_prestation, 1 AS coefficient, + SUM(montant_encours) AS prix_unitaire, + round(base.cti_division(SUM(montant_facture_1),SUM(montant_facture))*100.00,0) AS taux_1, + round(base.cti_division(SUM(montant_facture_2),SUM(montant_facture))*100.00,0) AS taux_2, + round(base.cti_division(SUM(montant_facture_22),SUM(montant_facture))*100.00,0) AS taux_22, + round(base.cti_division(SUM(montant_facture_0),SUM(montant_facture))*100.00,0) AS taux_0, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + + MIN(p_factures_lignes_c.CTID) AS keepCTID + FROM activite.p_factures_lignes_c + WHERE rubrique_facturation_id IN (SELECT to_id FROM activite.v_listes_3 WHERE liste_code = 'CTI_SHO_R') AND + montant_encours <> 0 + GROUP BY 1,2,3,5,6,7 + HAVING count(*) > 1; + + UPDATE w_cp_double + SET taux_0 = CASE WHEN taux_0 < 0 THEN 0 WHEN taux_0 > 100 THEN 100 ELSE taux_0 END + WHERE taux_0 <> CASE WHEN taux_0 < 0 THEN 0 WHEN taux_0 > 100 THEN 100 ELSE taux_0 END + ; + UPDATE w_cp_double + SET taux_1 = CASE WHEN taux_1 < 0 THEN 0 WHEN taux_1 > 100 THEN 100 ELSE taux_1 END + WHERE taux_1 <> CASE WHEN taux_1 < 0 THEN 0 WHEN taux_1 > 100 THEN 100 ELSE taux_1 END + ; + UPDATE w_cp_double + SET taux_2 = CASE WHEN taux_2 < 0 THEN 0 WHEN taux_2 > 100 THEN 100 ELSE taux_2 END + WHERE taux_2 <> CASE WHEN taux_2 < 0 THEN 0 WHEN taux_2 > 100 THEN 100 ELSE taux_2 END + ; + UPDATE w_cp_double + SET taux_22 = CASE WHEN taux_22 < 0 THEN 0 WHEN taux_22 > 100 THEN 100 ELSE taux_22 END + WHERE taux_22 <> CASE WHEN taux_22 < 0 THEN 0 WHEN taux_22 > 100 THEN 100 ELSE taux_22 END + ; + + + UPDATE w_cp_double + SET prestation_id = subview.prestation_id + FROM + ( + SELECT rubrique_facturation_id, (MAX(ARRAY[nb,prestation_id]))[2] AS prestation_id + FROM + ( + SELECT rubrique_facturation_id, prestation_id, count(*) AS nb + FROM w_cp_double + GROUP BY 1,2) subview + GROUP BY 1 + ) subview + WHERE w_cp_double.rubrique_facturation_id = subview.rubrique_facturation_id AND + w_cp_double.prestation_id <> subview.prestation_id; + + + + CREATE INDEX w_cp_double_i1 + ON w_cp_double + USING btree + (no_facture); + + DELETE FROM activite.p_factures_lignes_c + USING w_cp_double + WHERE p_factures_lignes_c.no_facture = w_cp_double.no_facture AND + p_factures_lignes_c.date_debut = w_cp_double.date_debut AND + p_factures_lignes_c.date_fin = w_cp_double.date_fin AND + (p_factures_lignes_c.prestation_id = w_cp_double.prestation_id OR w_cp_double.montant_encours <> 0) AND + p_factures_lignes_c.rubrique_facturation_id = w_cp_double.rubrique_facturation_id AND + (p_factures_lignes_c.nb_rubrique = w_cp_double.nb_rubrique OR w_cp_double.montant_encours <> 0) AND + (p_factures_lignes_c.nb_prestation = w_cp_double.nb_prestation OR w_cp_double.montant_encours <> 0) AND + (p_factures_lignes_c.coefficient = w_cp_double.coefficient OR w_cp_double.montant_encours <> 0) AND + p_factures_lignes_c.CTID <> keepCTID; + + + UPDATE activite.p_factures_lignes_c SET + prestation_id = w_cp_double.prestation_id, + nb_rubrique = w_cp_double.nb_rubrique, + nb_prestation = w_cp_double.nb_prestation, + coefficient = w_cp_double.coefficient, + prix_unitaire = w_cp_double.prix_unitaire, + taux_0 = w_cp_double.taux_0, + taux_1 = w_cp_double.taux_1, + taux_2 = w_cp_double.taux_2, + taux_22 = w_cp_double.taux_22, + montant_facture = w_cp_double.montant_facture, + montant_facture_0 = w_cp_double.montant_facture_0, + montant_facture_1 = w_cp_double.montant_facture_1, + montant_facture_2 = w_cp_double.montant_facture_2, + montant_facture_22 = w_cp_double.montant_facture_22, + montant_comptabilise = w_cp_double.montant_comptabilise, + montant_comptabilise_0 = w_cp_double.montant_comptabilise_0, + montant_comptabilise_1 = w_cp_double.montant_comptabilise_1, + montant_comptabilise_2 = w_cp_double.montant_comptabilise_2, + montant_comptabilise_22 = w_cp_double.montant_comptabilise_22, + montant_encours = w_cp_double.montant_encours, + montant_encours_0 = w_cp_double.montant_encours_0, + montant_encours_1 = w_cp_double.montant_encours_1, + montant_encours_2 = w_cp_double.montant_encours_2, + montant_encours_22 = w_cp_double.montant_encours_22 + FROM w_cp_double + WHERE p_factures_lignes_c.no_facture = w_cp_double.no_facture AND + p_factures_lignes_c.date_debut = w_cp_double.date_debut AND + p_factures_lignes_c.date_fin = w_cp_double.date_fin AND + (p_factures_lignes_c.prestation_id = w_cp_double.prestation_id OR w_cp_double.montant_encours <> 0) AND + p_factures_lignes_c.rubrique_facturation_id = w_cp_double.rubrique_facturation_id AND + (p_factures_lignes_c.nb_rubrique = w_cp_double.nb_rubrique OR w_cp_double.montant_encours <> 0) AND + (p_factures_lignes_c.nb_prestation = w_cp_double.nb_prestation OR w_cp_double.montant_encours <> 0) AND + (p_factures_lignes_c.coefficient = w_cp_double.coefficient OR w_cp_double.montant_encours <> 0); + + -- Report sur le lieu de sortie de sortie en cas d'absence + UPDATE activite.p_factures_lignes_c + SET lieu_id = p_sejours.lieu_sortie_id + FROM activite.p_factures, activite.p_mouvements_sejour, activite.p_sejours + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + activite.p_factures_lignes_c.date_debut = p_mouvements_sejour.date AND + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_sorties_directes = 1) AND + p_factures_lignes_c.lieu_id IN (SELECT oid FROM activite.t_lieux_c WHERE unite_fonctionnelle_id IN (SELECT oid FROM activite.t_unites_fonctionnelles WHERE code = '*ABS')) + ; + + ]]> + + + + + + + + + + 0 OR montant_facture_1_h <> 0) + ; + + UPDATE activite.p_factures + SET tiers_payant_2_id = t_tiers_payant.oid + FROM activite.t_tiers_payant + WHERE t_tiers_payant.code_original = '*CTINR2' AND + tiers_payant_2_id = 0 AND + (montant_facture_2_c <> 0 OR montant_facture_2_h <> 0) + ; + + + -- Nouvelle table des clients en attendant le dvp natif + + SELECT base.cti_disable_index('activite', 'i_facture_solde_tiers_c_1'); + SELECT base.cti_disable_index('activite', 'i_facture_solde_tiers_c_2'); + SELECT base.cti_disable_index('activite', 'i_facture_solde_tiers_c_3'); + SELECT base.cti_disable_index('activite', 'i_facture_solde_tiers_c_4'); + SELECT base.cti_disable_index('activite', 'i_facture_solde_tiers_c_5'); + SELECT base.cti_disable_index('activite', 'i_facture_solde_tiers_c_8'); + + INSERT INTO activite.p_facture_solde_tiers_c + ( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisation_id, + prestation_id, + tiers_payant_id, + montant_comptabilise, + montant_regle, + montant_comptabilise_0, + montant_regle_0, + od_avoir, + od_non_comptabilise + ) + SELECT + facture_id, + p_factures_soldes_c.no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + tiers_payant_0_id AS tiers_payant_id, + montant_comptabilise_0, + montant_regle_0, + montant_comptabilise_0, + montant_regle_0, + od_avoir, + od_non_comptabilise + FROM activite.p_factures_soldes_c + JOIN activite.p_factures ON p_factures_soldes_c.no_facture = p_factures.no_facture + WHERE p_factures.tiers_payant_0_id > 0 AND + ( + p_factures_soldes_c.montant_comptabilise_0 <> 0 OR + p_factures_soldes_c.montant_regle_0 <> 0 + ); + + INSERT INTO activite.p_facture_solde_tiers_c + ( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisation_id, + prestation_id, + tiers_payant_id, + montant_comptabilise, + montant_regle, + montant_comptabilise_1, + montant_regle_1, + od_avoir, + od_non_comptabilise + ) + SELECT + facture_id, + p_factures_soldes_c.no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + tiers_payant_1_id AS tiers_payant_id, + montant_comptabilise_1, + montant_regle_1, + montant_comptabilise_1, + montant_regle_1, + od_avoir, + od_non_comptabilise + FROM activite.p_factures_soldes_c + JOIN activite.p_factures ON p_factures_soldes_c.no_facture = p_factures.no_facture + WHERE p_factures.tiers_payant_1_id > 0 AND + ( + p_factures_soldes_c.montant_comptabilise_1 <> 0 OR + p_factures_soldes_c.montant_regle_1 <> 0 + ); + + INSERT INTO activite.p_facture_solde_tiers_c + ( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisation_id, + prestation_id, + tiers_payant_id, + montant_comptabilise, + montant_regle, + montant_comptabilise_2, + montant_regle_2, + od_avoir, + od_non_comptabilise + ) + SELECT + facture_id, + p_factures_soldes_c.no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + tiers_payant_2_id AS tiers_payant_id, + montant_comptabilise_2, + montant_regle_2, + montant_comptabilise_2, + montant_regle_2, + od_avoir, + od_non_comptabilise + FROM activite.p_factures_soldes_c + JOIN activite.p_factures ON p_factures_soldes_c.no_facture = p_factures.no_facture + WHERE p_factures.tiers_payant_2_id > 0 AND + ( + p_factures_soldes_c.montant_comptabilise_2 <> 0 OR + p_factures_soldes_c.montant_regle_2 <> 0 + ); + + INSERT INTO activite.p_facture_solde_tiers_c + ( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisation_id, + prestation_id, + tiers_payant_id, + montant_comptabilise, + montant_regle, + montant_comptabilise_2, + montant_regle_2, + od_avoir, + od_non_comptabilise + ) + SELECT + facture_id, + p_factures_soldes_c.no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + tiers_payant_22_id AS tiers_payant_id, + montant_comptabilise_22, + montant_regle_22, + montant_comptabilise_22, + montant_regle_22, + od_avoir, + od_non_comptabilise + FROM activite.p_factures_soldes_c + JOIN activite.p_factures ON p_factures_soldes_c.no_facture = p_factures.no_facture + WHERE p_factures.tiers_payant_22_id > 0 AND + ( + p_factures_soldes_c.montant_comptabilise_22 <> 0 OR + p_factures_soldes_c.montant_regle_22 <> 0 + ); + + SELECT base.cti_enable_index('activite', 'i_facture_solde_tiers_c_1'); + SELECT base.cti_enable_index('activite', 'i_facture_solde_tiers_c_2'); + SELECT base.cti_enable_index('activite', 'i_facture_solde_tiers_c_3'); + SELECT base.cti_enable_index('activite', 'i_facture_solde_tiers_c_4'); + SELECT base.cti_enable_index('activite', 'i_facture_solde_tiers_c_5'); + SELECT base.cti_enable_index('activite', 'i_facture_solde_tiers_c_8'); + + -- Nouvelle table des honoraires + + SELECT base.cti_disable_index('activite', 'i_facture_solde_tiers_h_1'); + SELECT base.cti_disable_index('activite', 'i_facture_solde_tiers_h_2'); + SELECT base.cti_disable_index('activite', 'i_facture_solde_tiers_h_3'); + SELECT base.cti_disable_index('activite', 'i_facture_solde_tiers_h_4'); + SELECT base.cti_disable_index('activite', 'i_facture_solde_tiers_h_5'); + SELECT base.cti_disable_index('activite', 'i_facture_solde_tiers_h_8'); + + INSERT INTO activite.p_facture_solde_tiers_h + ( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisation_id, + prestation_id, + tiers_payant_id, + montant_comptabilise, + montant_regle, + montant_comptabilise_0, + montant_regle_0, + od_avoir, + od_non_comptabilise + ) + SELECT + facture_id, + p_factures_soldes_h.no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + tiers_payant_0_id AS tiers_payant_id, + montant_comptabilise_0, + montant_regle_0, + montant_comptabilise_0, + montant_regle_0, + od_avoir, + od_non_comptabilise + FROM activite.p_factures_soldes_h + JOIN activite.p_factures ON p_factures_soldes_h.no_facture = p_factures.no_facture + WHERE p_factures.tiers_payant_0_id > 0 AND + ( + p_factures_soldes_h.montant_comptabilise_0 <> 0 OR + p_factures_soldes_h.montant_regle_0 <> 0 + ); + + INSERT INTO activite.p_facture_solde_tiers_h + ( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisation_id, + prestation_id, + tiers_payant_id, + montant_comptabilise, + montant_regle, + montant_comptabilise_1, + montant_regle_1, + od_avoir, + od_non_comptabilise + ) + SELECT + facture_id, + p_factures_soldes_h.no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + tiers_payant_1_id AS tiers_payant_id, + montant_comptabilise_1, + montant_regle_1, + montant_comptabilise_1, + montant_regle_1, + od_avoir, + od_non_comptabilise + FROM activite.p_factures_soldes_h + JOIN activite.p_factures ON p_factures_soldes_h.no_facture = p_factures.no_facture + WHERE p_factures.tiers_payant_1_id > 0 AND + ( + p_factures_soldes_h.montant_comptabilise_1 <> 0 OR + p_factures_soldes_h.montant_regle_1 <> 0 + ); + + INSERT INTO activite.p_facture_solde_tiers_h + ( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisation_id, + prestation_id, + tiers_payant_id, + montant_comptabilise, + montant_regle, + montant_comptabilise_2, + montant_regle_2, + od_avoir, + od_non_comptabilise + ) + SELECT + facture_id, + p_factures_soldes_h.no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + tiers_payant_2_id AS tiers_payant_id, + montant_comptabilise_2, + montant_regle_2, + montant_comptabilise_2, + montant_regle_2, + od_avoir, + od_non_comptabilise + FROM activite.p_factures_soldes_h + JOIN activite.p_factures ON p_factures_soldes_h.no_facture = p_factures.no_facture + WHERE p_factures.tiers_payant_2_id > 0 AND + ( + p_factures_soldes_h.montant_comptabilise_2 <> 0 OR + p_factures_soldes_h.montant_regle_2 <> 0 + ); + + INSERT INTO activite.p_facture_solde_tiers_h + ( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisation_id, + prestation_id, + tiers_payant_id, + montant_comptabilise, + montant_regle, + montant_comptabilise_2, + montant_regle_2, + od_avoir, + od_non_comptabilise + ) + SELECT + facture_id, + p_factures_soldes_h.no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + tiers_payant_22_id AS tiers_payant_id, + montant_comptabilise_22, + montant_regle_22, + montant_comptabilise_22, + montant_regle_22, + od_avoir, + od_non_comptabilise + FROM activite.p_factures_soldes_h + JOIN activite.p_factures ON p_factures_soldes_h.no_facture = p_factures.no_facture + WHERE p_factures.tiers_payant_22_id > 0 AND + ( + p_factures_soldes_h.montant_comptabilise_22 <> 0 OR + p_factures_soldes_h.montant_regle_22 <> 0 + ); + + SELECT base.cti_enable_index('activite', 'i_facture_solde_tiers_h_1'); + SELECT base.cti_enable_index('activite', 'i_facture_solde_tiers_h_2'); + SELECT base.cti_enable_index('activite', 'i_facture_solde_tiers_h_3'); + SELECT base.cti_enable_index('activite', 'i_facture_solde_tiers_h_4'); + SELECT base.cti_enable_index('activite', 'i_facture_solde_tiers_h_5'); + SELECT base.cti_enable_index('activite', 'i_facture_solde_tiers_h_8'); + + ]]> + + + + + + + 0 AND + SUM(nb_prestation) <> 0 + ORDER BY 1,2,3; + + INSERT INTO w_intervention + SELECT + sejour_id, + p_factures_lignes_non_facturees_h.date_debut, + p_factures_lignes_non_facturees_h.heure_debut, + (MAX(CASE WHEN t_prestations.code IN ('ADC','ACO') THEN Array[icr_1,COALESCE(acte_id,0)] ELSE null END))[2] AS acte_id, + (MAX(CASE WHEN t_prestations.code IN ('ADC','ACO') THEN Array[icr_1,medecin_facture_id] ELSE NULL END))[2] AS medecin_chirurgien_id, + (MAX(CASE WHEN t_prestations.code IN ('ADA') THEN Array[icr_1,medecin_facture_id] ELSE NULL END))[2] AS medecin_anesthesiste_id + FROM + activite.p_factures_lignes_non_facturees_h + JOIN activite.p_factures ON p_factures_lignes_non_facturees_h.no_facture = p_factures.no_facture + JOIN base.t_actes ON acte_id = t_actes.oid + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE + t_prestations.code IN ('ADC', 'ACO', 'ADA') AND + t_actes.code NOT LIKE 'YYYY%' AND + sejour_id NOT IN (SELECT sejour_id FROM w_intervention) + GROUP BY 1,2,3 + HAVING MAX(CASE WHEN t_prestations.code IN ('ADC','ACO') THEN acte_id ELSE 0 END) > 0 + ORDER BY 1,2,3; + + TRUNCATE activite.p_intervention; + + -- Ajout des conditions "sejour_id != 0 AND date_debut IS DISTINCT FROM NULL" pour dégager les lignes sans date de début et sans référence à un séjour existant + -- CLA 05/05/14 + + INSERT INTO activite.p_intervention ( + sejour_id, + date_debut, + heure_debut, + salle_id, + medecin_chirurgien_id, + medecin_anesthesiste_id, + acte_id + ) + SELECT + sejour_id, + date_debut, + heure_debut, + 0::bigint AS salle_id, + COALESCE(medecin_chirurgien_id,0), + COALESCE(medecin_anesthesiste_id,0), + acte_id + FROM w_intervention + WHERE + sejour_id != 0 AND date_debut IS DISTINCT FROM NULL; + + + -- Ventilation selon date intervention + SELECT activite.cti_ventilation_lignes('activite.p_factures_lignes_c'); + + -- Suppression des tables de travail non utilisées après + DROP TABLE IF EXISTS w_intervention CASCADE; + + + ]]> + + + + + + + + + + + + + + 0 AND + destination_id <> etablissement_destination_id AND + length(t_etablissements.code) = 9 + ., + + INSERT INTO activite.p_sejours_transferts(sejour_id, provenance_id, destination_id) + SELECT + sejour_id, + MAX(etablissement_provenance_id), + MAX(etablissement_destination_id) + FROM activite.p_sejour_pmsi + JOIN pmsi.p_rss_transferts ON p_sejour_pmsi.rss_id = p_rss_transferts.rss_id + WHERE + sejour_id NOT IN (SELECT sejour_id FROM activite.p_sejours_transferts) + GROUP BY 1 + HAVING + ( + MAX(etablissement_provenance_id) > 0 OR + MAX(etablissement_destination_id) > 0 + ) + ',1) + WHERE 'p_rss' IN (SELECT tablename FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 'p_rss') + ; + + -- Ajustement chiffre d'affaire fil de l'eau PMSI + SELECT activite.cti_ajust_fildeleau_rsf() + ; + + + + ]]> + + + + + + 0 + AND medecin_sejour_id = 0 + AND activite_ccam <> '4' + AND medecin_facture_id != 0 + AND type_sejour IN ('2','3','4') + GROUP BY 1; + + UPDATE activite.p_sejours SET + medecin_sejour_id = w_executants.medecin_id + FROM w_executants + WHERE 1=1 + AND w_executants.sejour_id = p_sejours.oid + AND p_sejours.medecin_sejour_id = 0; + + UPDATE activite.p_mouvements_sejour + SET medecin_sejour_id = p_sejours.medecin_sejour_id + FROM activite.p_sejours + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + p_sejours.medecin_sejour_id <> p_mouvements_sejour.medecin_sejour_id + ; + + ]]> + + + + + + = 20100101 AND to_char(date_sortie, 'YYYYMM')::numeric <= to_char(now() + interval '1 month', 'YYYYMM')::numeric + ) subview + ; + + DELETE FROM activite[PX].p_chiffrier WHERE mois > to_char(now() + interval '1 month', 'YYYYMM')::numeric + ; + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + = date_entree + AND date_sortie < '2099-12-31'::date + GROUP BY 2 + ORDER BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'c_postaux', code_postal_id + FROM activite[PX].p_sejours + WHERE code_postal_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'c_postaux') + GROUP BY 2; + + INSERT INTO activite.p_oids (code_table, oid) + SELECT 'forme_activite', forme_activite_id + FROM activite.p_sejours + WHERE forme_activite_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'forme_activite') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'medecin_s', medecin_sejour_id + FROM activite[PX].p_sejours + WHERE medecin_sejour_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'medecin_s') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'medecin_s', medecin_sejour_id + FROM activite[PX].p_mouvements_sejour + WHERE medecin_sejour_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'medecin_s') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'ghs', ghs_id + FROM activite[PX].p_sejours + WHERE ghs_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'ghs') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'ghm', ghm_id + FROM activite[PX].p_sejours + WHERE ghm_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'ghm') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'ghs', ghs_id + FROM activite[PX].p_factures + WHERE ghs_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'ghs') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'medecin_x', medecin_facture_id + FROM activite[PX].p_factures_lignes_h + WHERE medecin_facture_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'medecin_x') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'gme', gme_id + FROM activite[PX].p_sejours + WHERE gme_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'gme') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'ghmgme', ghmgme_id + FROM activite[PX].p_sejours + WHERE ghmgme_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'ghmgme') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'rubrique_c', rubrique_facturation_id + FROM activite[PX].p_factures_lignes_c WHERE rubrique_facturation_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'rubrique_c') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'rubrique_c', rubrique_comptabilisation_id + FROM activite[PX].p_factures_lignes_c WHERE rubrique_comptabilisation_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'rubrique_c') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'rubrique_c', rubrique_facturation_id + FROM activite[PX].p_factures_encours_lignes_c WHERE rubrique_facturation_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'rubrique_c') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'rubrique_c', rubrique_comptabilisee_id + FROM activite[PX].p_factures_soldes_c WHERE rubrique_comptabilisee_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'rubrique_c') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'prestation_c', prestation_id + FROM activite[PX].p_factures_lignes_c WHERE prestation_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'prestation_c') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'prestation_c', prestation_id + FROM activite[PX].p_factures_encours_lignes_c WHERE prestation_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'prestation_c') + GROUP BY 2; + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'lpp', lpp_id + FROM activite[PX].p_factures_lignes_c WHERE lpp_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'lpp') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'ucd', ucd_id + FROM activite[PX].p_factures_lignes_c WHERE ucd_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'ucd') + GROUP BY 2; + + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'prestation_c', prestation_id + FROM activite[PX].p_factures_soldes_c WHERE prestation_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'prestation_c') + GROUP BY 2; + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'prestation_h', prestation_id + FROM activite[PX].p_factures_lignes_h WHERE prestation_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'prestation_h') + GROUP BY 2; + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'acte_h', acte_id + FROM activite[PX].p_factures_lignes_h WHERE acte_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'acte_h') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'protocole_h', protocole_id + FROM activite[PX].p_factures_lignes_h WHERE protocole_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'protocole_h') + GROUP BY 2; + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'tiers_payant', tiers_payant_0_id + FROM activite[PX].p_factures WHERE tiers_payant_0_id <> 0 AND tiers_payant_0_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'tiers_payant') + GROUP BY 2; + + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'tiers_payant', tiers_payant_1_id + FROM activite[PX].p_factures WHERE tiers_payant_1_id <> 0 AND tiers_payant_1_id NOT IN (SELECT oid + FROM activite[PX].p_oids WHERE code_table = 'tiers_payant') + GROUP BY 2; + + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'tiers_payant', tiers_payant_2_id + FROM activite[PX].p_factures WHERE tiers_payant_2_id <> 0 AND tiers_payant_2_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'tiers_payant') + GROUP BY 2; + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'tiers_payant', tiers_payant_22_id + FROM activite[PX].p_factures WHERE tiers_payant_22_id <> 0 AND tiers_payant_22_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'tiers_payant') + GROUP BY 2; + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'mode_traitement', t_services_facturation.mode_traitement_id + FROM activite[PX].t_lieux JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE + t_services_facturation.mode_traitement_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'mode_traitement' AND oid IS NOT NULL) AND t_services_facturation.mode_traitement_id IS NOT NULL + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'lit', lit_id + FROM activite[PX].t_lieux WHERE lit_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'lit') + GROUP BY 2; + + + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'service', service_facturation_id + FROM activite[PX].t_lieux WHERE service_facturation_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'service') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'activite', activite_id + FROM activite[PX].t_lieux WHERE activite_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'activite') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'etage', etage_id + FROM activite[PX].t_lieux, activite[PX].t_lits WHERE lit_id = t_lits.oid AND etage_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'etage') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'compte', compte_produit_id + FROM activite[PX].p_factures_lignes_c WHERE compte_produit_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'compte') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'compte', compte_produit_analytique_id + FROM activite[PX].p_factures_lignes_c WHERE compte_produit_analytique_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'compte') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'uf', unite_fonctionnelle_id + FROM activite[PX].t_lieux WHERE unite_fonctionnelle_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'uf') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'um', unite_medicale_id + FROM activite[PX].t_lieux WHERE unite_medicale_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'um') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'medecin_t', medecin_traitant_id + FROM activite[PX].p_sejours + WHERE medecin_traitant_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'medecin_t') + GROUP BY 2; + + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'filiere_soin', filiere_soin_principale_id + FROM activite[PX].p_sejours + WHERE filiere_soin_principale_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'filiere_soin') + GROUP BY 2; + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '' + ; + + + + ]]> + + + + + 1 + ) + select + keep_oid, + unnest(all_oid) as all_oid + from lieux + ; + + ANALYSE w_lieux + ; + + UPDATE activite[PX].p_factures_encours SET + lieu_sortie_id = keep_oid + FROM w_lieux + WHERE 1=1 + AND lieu_sortie_id = all_oid + AND lieu_sortie_id != keep_oid + ; + + UPDATE activite[PX].p_factures_encours_lignes_c SET + lieu_id = keep_oid + FROM w_lieux + WHERE 1=1 + AND lieu_id = all_oid + AND lieu_id != keep_oid + ; + + -- Report sur justificatif encours + UPDATE activite.p_facture_encours_ligne_valorise_c + SET lieu_id = p_factures_encours_lignes_c.lieu_id + FROM activite.p_factures_encours_lignes_c + WHERE p_facture_encours_ligne_valorise_c.no_facture = p_factures_encours_lignes_c.no_facture AND + p_facture_encours_ligne_valorise_c.date_debut = p_factures_encours_lignes_c.date_debut AND + p_facture_encours_ligne_valorise_c.prestation_id = p_factures_encours_lignes_c.prestation_id AND + p_facture_encours_ligne_valorise_c.lieu_id <> p_factures_encours_lignes_c.lieu_id + ; + + DELETE FROM activite[PX].t_lieux + USING w_lieux + WHERE 1=1 + AND t_lieux.oid = w_lieux.all_oid + AND w_lieux.keep_oid != t_lieux.oid + ; + + --ALTER SEQUENCE activite[PX].s_lieux RESTART WITH 1; + + TRUNCATE activite[PX].p_factures; + + ALTER SEQUENCE activite[PX].s_factures RESTART WITH 1; + + TRUNCATE activite[PX].p_factures_lignes_non_facturees_c; + + TRUNCATE activite[PX].p_factures_lignes_non_facturees_h; + + TRUNCATE activite[PX].p_factures_lignes_c; + + TRUNCATE activite[PX].p_factures_lignes_h; + + TRUNCATE activite[PX].p_factures_rejets; + + TRUNCATE activite[PX].p_factures_soldes_c; + TRUNCATE activite[PX].p_facture_solde_tiers_c; + + TRUNCATE activite[PX].p_factures_soldes_h; + TRUNCATE activite[PX].p_facture_solde_tiers_h; + + TRUNCATE activite[PX].p_factures_comptables; + + TRUNCATE activite[PX].p_factures_reference; + TRUNCATE activite[PX].p_factures_reference_tiers; + + TRUNCATE activite[PX].p_intervention; + + ]]> + + + + + + + + + + + + + diff --git a/import_activite/iCTI_import_activite_SHS.XML b/import_activite/iCTI_import_activite_SHS.XML new file mode 100644 index 0000000..6342eee --- /dev/null +++ b/import_activite/iCTI_import_activite_SHS.XML @@ -0,0 +1,7700 @@ + + + + + + + '' AND L0COMP = 0 + GROUP BY 1; + + ALTER TABLE w_L0P01 ADD CONSTRAINT w_L0P01_pkey PRIMARY KEY(L0NDOS); + + + UPDATE w_L0P01 + SET L0NGHS = L0P01.L0NGHS + FROM prod_shs.[PMSISCHEMA]_L0P01 L0P01 + WHERE w_L0P01.L0NDOS = L0P01.L0NDOS AND w_L0P01.L0DTGR = L0P01.L0DTGR AND L0P01.L0COMP = 0 AND w_L0P01.L0NGHS <> L0P01.L0NGHS; + + + UPDATE w_L0P01 + SET L0GHM9 = L0P01.L0GHM9 + FROM prod_shs.[PMSISCHEMA]_L0P01 L0P01 + WHERE w_L0P01.L0NDOS = L0P01.L0NDOS AND w_L0P01.L0DTGR = L0P01.L0DTGR AND L0P01.L0COMP = 0 AND w_L0P01.L0GHM9 <> L0P01.L0GHM9 ; + + + UPDATE w_L0P01 + SET L0NGHS_BEBE_1 = L0P01.L0NGHS + FROM prod_shs.[PMSISCHEMA]_L0P01 L0P01 + WHERE w_L0P01.L0NDOS = L0P01.L0NDME AND w_L0P01.L0DTGR = L0P01.L0DTGR AND L0P01.L0COMP = 0 AND L0P01.L0NDCO = 0; + + -- Code facture incohérent avec code ventes + UPDATE prod_shs.[ACTIVITESCHEMA]_ADP01 + SET ADCFAC = '1' + WHERE ADCFAC <> '1' AND ADCJVT = '1' + ; + + + DROP TABLE IF EXISTS w_ADP01; + + CREATE TEMP TABLE w_ADP01 AS + SELECT 'H'::text AS w_CODENV, + ADDOSS AS w_ADDOSS, + ADDCPL AS w_ADDCPL, + to_char(ADDOSS,'FM00000000') AS w_ADDOSS_a, + to_char(ADDCPL,'FM00') AS w_ADDCPL_a, + to_char(CASE WHEN ADDOL1 <> 0 AND COALESCE(SFQSEJ,'1') NOT IN ('0','5') AND ADCPRP = '1' AND to_char(ADDOL1,'FM00000000') NOT LIKE '50%' THEN ADDOL1 ELSE ADDOSS END,'FM00000000') AS w_ADDOL1, + to_char(ADDOSS,'FM00000000') || '.' || to_char(ADDCPL,'FM00') AS w_ADDOSSDCPL, + ADCSER || '|' || ADACTI || '|' || ADETAG || '|' || ADCHLT || '|' || ADMEDR || '|' || COALESCE(w_L0P01.L0GHM9,'') || '|' || COALESCE(w_L0P01.L0NGHS,'0000') || '|' || COALESCE(w_L0P01.L0NGHS_BEBE_1,'0000') || '|' || COALESCE(w_L0P01.L0NGHS_BEBE_2,'0000') || '|' || COALESCE(w_L0P01.L0NGHS_BEBE_3,'0000') || '|' || ADCFSS || '|' || ADCFMC || '|' || ADCFMM || '|' || ADCODM || '|' || ADCRIS AS key, + ADCSER AS w_ADCSER, + ADACTI AS w_ADACTI, + ADETAG AS w_ADETAG, + ADCHLT AS w_ADCHLT, + CASE WHEN ADCPRP = '1' THEN ADDTE1 ELSE '20991231' END AS w_ADDTE1, + COALESCE(CASE WHEN ADCPRP = '1' THEN to_date(to_char(ADDTE1,'FM00000000'),'YYYYMMDD') ELSE '20991231' END,'20991231') AS w_ADDTE1_date, + ADHREN AS w_ADHREN, + CASE WHEN ADCPRP = '1' AND ADCSOR = '1' THEN ADDTS1 ELSE '20991231' END AS w_ADDTS1, + COALESCE(CASE WHEN ADCPRP = '1' AND ADCSOR = '1' THEN to_date(to_char(ADDTS1,'FM00000000'),'YYYYMMDD') ELSE '20991231' END,'20991231') AS w_ADDTS1_date, + ADHRSO AS w_ADHRSO, + to_timestamp( + CASE WHEN ADCPRP = '1' THEN ADDTE1 ELSE '20991231' END || + to_char(CASE WHEN ADHREN BETWEEN 0 AND 240000 THEN ADHREN ELSE 0 END,'0000'),'YYYYMMDD HH24MI' + )::timestamp without time zone AS w_ADDTHREN, + to_timestamp( + CASE WHEN ADCPRP = '1' AND ADCSOR = '1' THEN ADDTS1 ELSE '20991231' END || + to_char(CASE WHEN ADHRSO BETWEEN 0 AND 240000 THEN ADHRSO ELSE 0 END,'0000'),'YYYYMMDD HH24MI' + )::timestamp without time zone AS w_ADDTHRSO, + AD$$$6 AS w_AD$$$6, + CASE WHEN substr(AD$$$6, 1, 1) = '2' THEN '6' + WHEN substr(AD$$$6, 1, 1) = '3' THEN '7' + WHEN substr(AD$$$6, 1, 1) = '4' THEN '0' + ELSE '8' END as w_AD$$$6_ME, + CASE WHEN substr(AD$$$6, 2, 1) = '1' THEN '6' + WHEN substr(AD$$$6, 2, 1) = '2' THEN '6' + WHEN substr(AD$$$6, 2, 1) = '3' THEN '7' + WHEN substr(AD$$$6, 2, 1) = '5' THEN '9' + WHEN substr(AD$$$6, 2, 1) = '6' THEN '7' + ELSE '8' END as w_AD$$$6_MS, + COALESCE(SFQSEJ,'1') AS w_SFQSEJ, + to_char(CASE WHEN ADDOL1 <> 0 AND COALESCE(SFQSEJ,'1') NOT IN ('0','5') AND ADCPRP = '1' AND to_char(ADDOL1,'FM00000000') NOT LIKE '50%' THEN ADDOL1 ELSE ADDOSS END,'00000000') || CASE WHEN ADCPRP = '1' THEN ADDTE1 ELSE '20991231' END AS w_DTE1DOL1, + (CASE WHEN ADDCPL = 0 THEN '1' ELSE '0' END)::text AS w_DOL1UN, + ADSEXM AS w_ADSEXM, + ADDMED AS w_ADDMED, + to_char(ADMEDR,'FM0000') AS w_ADMEDR, + ADCPRP AS w_ADCPRP, + ADCSOR AS w_ADCSOR, + ADQURG AS w_ADQURG, + ADSPL1 AS w_ADSPL1, + COALESCE(w_L0P01.L0DTGR,0) AS L0DTGR, + COALESCE(to_date(to_char(w_L0P01.L0DTGR,'FM00000000'),'YYYYMMDD'),'20991231') AS L0DTGR_date, + COALESCE(L0NGHS,'0000') AS L0NGHS, + COALESCE(w_L0P01.L0GHM9,'') AS L0GHM9, + COALESCE(L0NGHS_BEBE_1,'0000') AS L0NGHS_BEBE_1, + COALESCE(L0NGHS_BEBE_2,'0000') AS L0NGHS_BEBE_2, + COALESCE(L0NGHS_BEBE_3,'0000') AS L0NGHS_BEBE_3, + ADCFSS AS w_ADCFSS, + ADCFMC AS w_ADCFMC, + ADCFMM AS w_ADCFMM, + ADCANN AS w_ADCANN, + ADADAV AS w_ADADAV, + ADCFAC AS w_ADCFAC, + ADPAD5 AS w_ADPAD5, + ADDTFA AS w_ADDTFA, + COALESCE(to_date(to_char(ADDTFA,'FM00000000'),'YYYYMMDD'), '20991231') AS w_ADDTFA_date, + ADCJVT AS w_ADCJVT, + ADAAJV AS w_ADAAJV, + ADMMJV AS w_ADMMJV, + COALESCE(to_date(to_char(ADAAJV * 10000 + ADMMJV * 100 + 01,'FM00000000'),'YYYYMMDD') + interval '1 month' - interval '1 day', '20991231') AS w_ADDTJV_date, + CASE WHEN ADAAJV >= [ENV_ADM_ANNEEDEBUT] AND ADAAJV < 2100 THEN '1' WHEN ADDTS1 >= [ENV_ADM_ANNEEDEBUT]0101 THEN '1' WHEN ADCJVT <> '1' THEN '1' ELSE '0' END AS CTIOK, + ADCODM AS w_ADCODM, + ADAD1M AS w_ADAD1M, + ADAD2M AS w_ADAD2M, + ADVILM AS w_ADVILM, + ADTELM AS w_ADTELM, + ADCRIS AS w_ADCRIS, + case when length(ADNMDT) > 3 AND ADMEDT IN ('0000', '9999') THEN ADNMDT ELSE to_char(ADMEDT,'FM0000') END AS w_ADMEDT, + ADNOM1 AS w_ADNOM1, + ADPREM AS w_ADPREM, + ADMTSS AS w_ADMTSS, + ADMTMc AS w_ADMTMC, + DMNOMM as nom + FROM prod_shs.[ACTIVITESCHEMA]h_ADP01H + LEFT JOIN prod_shs.[ACTIVITESCHEMA]_SFP01 ON ADCSER = SFCSER + LEFT JOIN w_L0P01 ON ADDOSS = L0NDOS + LEFT JOIN prod_shs.[ACTIVITESCHEMA]_DMP01 ON DMDMED = ADDMED; + + CREATE INDEX w_ADP01_i1 ON w_ADP01 USING btree (w_ADDOSS); + + INSERT INTO w_ADP01 + SELECT 'P' AS w_CODENV, + ADDOSS, + ADDCPL, + to_char(ADDOSS,'FM00000000') AS w_ADDOSS_a, + to_char(ADDCPL,'FM00') AS w_ADDCPL_a, + to_char(CASE WHEN ADDOL1 <> 0 AND COALESCE(SFQSEJ,'1') NOT IN ('0','5') AND ADCPRP = '1' AND to_char(ADDOL1,'FM00000000') NOT LIKE '50%' THEN ADDOL1 ELSE ADDOSS END,'FM00000000') AS w_ADDOL1, + to_char(ADDOSS,'FM00000000') || '.' || to_char(ADDCPL,'FM00') AS w_ADDOSSDCPL, + ADCSER || '|' || ADACTI || '|' || ADETAG || '|' || ADCHLT || '|' || ADMEDR || '|' || COALESCE(w_L0P01.L0GHM9,'') || '|' || COALESCE(w_L0P01.L0NGHS,'0000') || '|' || COALESCE(w_L0P01.L0NGHS_BEBE_1,'0000') || '|' || COALESCE(w_L0P01.L0NGHS_BEBE_2,'0000') || '|' || COALESCE(w_L0P01.L0NGHS_BEBE_3,'0000') || '|' || ADCFSS || '|' || ADCFMC || '|' || ADCFMM || '|' || ADCODM || '|' || ADCRIS AS key, + ADCSER AS w_ADCSER, + ADACTI AS w_ADACTI, + ADETAG AS w_ADETAG, + ADCHLT AS w_ADCHLT, + CASE WHEN ADCPRP = '1' THEN ADDTE1 ELSE '20991231' END AS w_ADDTE1, + COALESCE(CASE WHEN ADCPRP = '1' THEN to_date(to_char(ADDTE1,'FM00000000'),'YYYYMMDD') ELSE '20991231' END,'20991231') AS w_ADDTE1_date, + ADHREN AS w_ADHREN, + CASE WHEN ADCPRP = '1' AND ADCSOR = '1' THEN ADDTS1 ELSE '20991231' END AS w_ADDTS1, + COALESCE(CASE WHEN ADCPRP = '1' AND ADCSOR = '1' THEN to_date(to_char(ADDTS1,'FM00000000'),'YYYYMMDD') ELSE '20991231' END,'20991231') AS w_ADDTS1_date, + ADHRSO AS w_ADHRSO, + to_timestamp( + CASE WHEN ADCPRP = '1' THEN ADDTE1 ELSE '20991231' END || + to_char(CASE WHEN ADHREN BETWEEN 0 AND 240000 THEN ADHREN ELSE 0 END,'0000'),'YYYYMMDD HH24MI' + )::timestamp without time zone AS w_ADDTHREN, + to_timestamp( + CASE WHEN ADCPRP = '1' AND ADCSOR = '1' THEN ADDTS1 ELSE '20991231' END || + to_char(CASE WHEN ADHRSO BETWEEN 0 AND 240000 THEN ADHRSO ELSE 0 END,'0000'),'YYYYMMDD HH24MI' + )::timestamp without time zone AS w_ADDTHRSO, + AD$$$6, + CASE WHEN substr(AD$$$6, 1, 1) = '2' THEN '6' + WHEN substr(AD$$$6, 1, 1) = '3' THEN '7' + WHEN substr(AD$$$6, 1, 1) = '4' THEN '0' + ELSE '8' END as w_AD$$$6_ME, + CASE WHEN substr(AD$$$6, 2, 1) = '1' THEN '6' + WHEN substr(AD$$$6, 2, 1) = '2' THEN '6' + WHEN substr(AD$$$6, 2, 1) = '3' THEN '7' + WHEN substr(AD$$$6, 2, 1) = '5' THEN '9' + WHEN substr(AD$$$6, 2, 1) = '6' THEN '7' + ELSE '8' END as w_AD$$$6_MS, + COALESCE(SFQSEJ,'1') AS w_SFQSEJ, + to_char(CASE WHEN ADDOL1 <> 0 AND COALESCE(SFQSEJ,'1') NOT IN ('0','5') AND ADCPRP = '1' AND to_char(ADDOL1,'FM00000000') NOT LIKE '50%' THEN ADDOL1 ELSE ADDOSS END,'00000000') || CASE WHEN ADCPRP = '1' THEN ADDTE1 ELSE '20991231' END AS w_DTE1DOL1, + (CASE WHEN ADDCPL = 0 THEN '1' ELSE '0' END)::text AS w_DOL1UN, + ADSEXM AS w_ADSEXM, + ADDMED AS w_ADDMED, + to_char(ADMEDR,'FM0000') AS w_ADMEDR, + ADCPRP AS w_ADCPRP, + ADCSOR AS w_ADCSOR, + ADQURG AS w_ADQURG, + ADSPL1 AS w_ADSPL1, + COALESCE(w_L0P01.L0DTGR,0) AS L0DTGR, + COALESCE(to_date(to_char(w_L0P01.L0DTGR,'FM00000000'),'YYYYMMDD'),'20991231') AS L0DTGR_date, + COALESCE(w_L0P01.L0NGHS,'0000') AS L0NGHS, + COALESCE(w_L0P01.L0GHM9,'') AS L0GHM9, + COALESCE(w_L0P01.L0NGHS_BEBE_1,'0000') AS L0NGHS_BEBE_1, + COALESCE(w_L0P01.L0NGHS_BEBE_2,'0000') AS L0NGHS_BEBE_2, + COALESCE(w_L0P01.L0NGHS_BEBE_3,'0000') AS L0NGHS_BEBE_3, + ADCFSS AS w_ADCFSS, + ADCFMC AS w_ADCFMC, + ADCFMM AS w_ADCFMM, + ADCANN AS w_ADCANN, + ADADAV AS w_ADADAV, + ADCFAC AS w_ADCFAC, + ADPAD5 AS w_ADPAD5, + ADDTFA AS w_ADDTFA, + COALESCE(to_date(to_char(ADDTFA,'FM00000000'),'YYYYMMDD'), '20991231') AS w_ADDTFA_date, + ADCJVT AS w_ADCJVT, + ADAAJV AS w_ADAAJV, + ADMMJV AS w_ADMMJV, + COALESCE(to_date(to_char(ADAAJV * 10000 + ADMMJV * 100 + 01,'FM00000000'),'YYYYMMDD') + interval '1 month' - interval '1 day', '20991231') AS w_ADDTJV_date, + CASE WHEN ADAAJV >= [ENV_ADM_ANNEEDEBUT] AND ADAAJV < 2100 THEN '1' WHEN ADDTS1 >= [ENV_ADM_ANNEEDEBUT]0101 THEN '1' WHEN ADCJVT <> '1' THEN '1' ELSE '0' END AS CTIOK, + ADCODM AS w_ADCODM, + ADAD1M AS w_ADAD1M, + ADAD2M AS w_ADAD2M, + ADVILM AS w_ADVILM, + ADTELM AS w_ADTELM, + ADCRIS AS w_ADCRIS, + case when length(ADNMDT) > 3 AND ADMEDT IN ('0000', '9999') THEN ADNMDT ELSE to_char(ADMEDT,'FM0000') END AS w_ADMEDT, + ADNOM1 AS w_ADNOM1, + ADPREM AS w_ADPREM, + ADMTSS AS w_ADMTSS, + ADMTMc AS w_ADMTMC + FROM prod_shs.[ACTIVITESCHEMA]p_ADP01P + LEFT JOIN prod_shs.[ACTIVITESCHEMA]_SFP01 ON ADCSER = SFCSER + LEFT JOIN w_ADP01 ON ADDOSS = w_ADDOSS AND ADDCPL = w_ADDCPL + LEFT JOIN w_L0P01 ON ADDOSS = L0NDOS + WHERE w_ADDOSS IS NULL; + + + + INSERT INTO w_ADP01 + SELECT '' AS w_CODENV, + ADDOSS, + ADDCPL, + to_char(ADDOSS,'FM00000000') AS w_ADDOSS_a, + to_char(ADDCPL,'FM00') AS w_ADDCPL_a, + to_char(CASE WHEN ADDOL1 <> 0 AND COALESCE(SFQSEJ,'1') NOT IN ('0','5') AND ADCPRP = '1' AND to_char(ADDOL1,'FM00000000') NOT LIKE '50%' THEN ADDOL1 ELSE ADDOSS END,'FM00000000') AS w_ADDOL1, + to_char(ADDOSS,'FM00000000') || '.' || to_char(ADDCPL,'FM00') AS w_ADDOSSDCPL, + ADCSER || '|' || ADACTI || '|' || ADETAG || '|' || ADCHLT || '|' || ADMEDR || '|' || COALESCE(w_L0P01.L0GHM9,'') || '|' || COALESCE(w_L0P01.L0NGHS,'0000') || '|' || COALESCE(w_L0P01.L0NGHS_BEBE_1,'0000') || '|' || COALESCE(w_L0P01.L0NGHS_BEBE_2,'0000') || '|' || COALESCE(w_L0P01.L0NGHS_BEBE_3,'0000') || '|' || ADCFSS || '|' || ADCFMC || '|' || ADCFMM || '|' || ADCODM || '|' || ADCRIS AS key, + ADCSER AS w_ADCSER, + ADACTI AS w_ADACTI, + ADETAG AS w_ADETAG, + ADCHLT AS w_ADCHLT, + CASE WHEN ADCPRP = '1' THEN ADDTE1 ELSE '20991231' END AS w_ADDTE1, + COALESCE(CASE WHEN ADCPRP = '1' THEN to_date(to_char(ADDTE1,'FM00000000'),'YYYYMMDD') ELSE '20991231' END,'20991231') AS w_ADDTE1_date, + ADHREN AS w_ADHREN, + CASE WHEN ADCPRP = '1' AND ADCSOR = '1' THEN ADDTS1 ELSE '20991231' END AS w_ADDTS1, + COALESCE(CASE WHEN ADCPRP = '1' AND ADCSOR = '1' THEN to_date(to_char(ADDTS1,'FM00000000'),'YYYYMMDD') ELSE '20991231' END,'20991231') AS w_ADDTS1_date, + ADHRSO AS w_ADHRSO, + to_timestamp( + CASE WHEN ADCPRP = '1' THEN ADDTE1 ELSE '20991231' END || + to_char(CASE WHEN ADHREN BETWEEN 0 AND 240000 THEN ADHREN ELSE 0 END,'0000'),'YYYYMMDD HH24MI' + )::timestamp without time zone AS w_ADDTHREN, + to_timestamp( + CASE WHEN ADCPRP = '1' AND ADCSOR = '1' AND ADDTS1 != 0 THEN ADDTS1 ELSE '20991231' END || + to_char(CASE WHEN ADHRSO BETWEEN 0 AND 240000 THEN ADHRSO ELSE 0 END,'0000'),'YYYYMMDD HH24MI' + )::timestamp without time zone AS w_ADDTHRSO, + AD$$$6, + CASE WHEN substr(AD$$$6, 1, 1) = '2' THEN '6' + WHEN substr(AD$$$6, 1, 1) = '3' THEN '7' + WHEN substr(AD$$$6, 1, 1) = '4' THEN '0' + ELSE '8' END as w_AD$$$6_ME, + CASE WHEN substr(AD$$$6, 2, 1) = '1' THEN '6' + WHEN substr(AD$$$6, 2, 1) = '2' THEN '6' + WHEN substr(AD$$$6, 2, 1) = '3' THEN '7' + WHEN substr(AD$$$6, 2, 1) = '5' THEN '9' + WHEN substr(AD$$$6, 2, 1) = '6' THEN '7' + ELSE '8' END as w_AD$$$6_MS, + COALESCE(SFQSEJ,'1') AS w_SFQSEJ, + to_char(CASE WHEN ADDOL1 <> 0 AND SFQSEJ NOT IN ('0','5') AND ADCPRP = '1' AND to_char(ADDOL1,'FM00000000') NOT LIKE '50%' THEN ADDOL1 ELSE ADDOSS END,'00000000') || CASE WHEN ADCPRP = '1' THEN ADDTE1 ELSE '20991231' END AS w_DTE1DOL1, + (CASE WHEN ADDCPL = 0 THEN '1' ELSE '0' END)::text AS w_DOL1UN, + ADSEXM AS w_ADSEXM, + ADDMED AS w_ADDMED, + to_char(ADMEDR,'FM0000') AS w_ADMEDR, + ADCPRP AS w_ADCPRP, + ADCSOR AS w_ADCSOR, + ADQURG AS w_ADQURG, + ADSPL1 AS w_ADSPL1, + COALESCE(w_L0P01.L0DTGR,0) AS L0DTGR, + COALESCE(to_date(to_char(w_L0P01.L0DTGR,'FM00000000'),'YYYYMMDD'),'20991231') AS L0DTGR_date, + COALESCE(w_L0P01.L0NGHS,'0000') AS L0NGHS, + COALESCE(w_L0P01.L0GHM9,'') AS L0GHM9, + COALESCE(w_L0P01.L0NGHS_BEBE_1,'0000') AS L0NGHS_BEBE_1, + COALESCE(w_L0P01.L0NGHS_BEBE_2,'0000') AS L0NGHS_BEBE_2, + COALESCE(w_L0P01.L0NGHS_BEBE_3,'0000') AS L0NGHS_BEBE_3, + ADCFSS AS w_ADCFSS, + ADCFMC AS w_ADCFMC, + ADCFMM AS w_ADCFMM, + ADCANN AS w_ADCANN, + ADADAV AS w_ADADAV, + ADCFAC AS w_ADCFAC, + ADPAD5 AS w_ADPAD5, + ADDTFA AS w_ADDTFA, + COALESCE(to_date(to_char(ADDTFA,'FM00000000'),'YYYYMMDD'), '20991231') AS w_ADDTFA_date, + ADCJVT AS w_ADCJVT, + ADAAJV AS w_ADAAJV, + ADMMJV AS w_ADMMJV, + COALESCE(to_date(to_char(ADAAJV * 10000 + ADMMJV * 100 + 01,'FM00000000'),'YYYYMMDD') + interval '1 month' - interval '1 day', '20991231') AS w_ADDTJV_date, + CASE WHEN ADAAJV >= [ENV_ADM_ANNEEDEBUT] AND ADAAJV < 2100 THEN '1' WHEN ADDTS1 >= [ENV_ADM_ANNEEDEBUT]0101 THEN '1' WHEN ADCJVT <> '1' THEN '1' ELSE '0' END AS CTIOK, + ADCODM AS w_ADCODM, + ADAD1M AS w_ADAD1M, + ADAD2M AS w_ADAD2M, + ADVILM AS w_ADVILM, + ADTELM AS w_ADTELM, + ADCRIS AS w_ADCRIS, + case when length(ADNMDT) > 3 AND ADMEDT IN ('0000', '9999') THEN ADNMDT ELSE to_char(ADMEDT,'FM0000') END AS w_ADMEDT, + ADNOM1 AS w_ADNOM1, + ADPREM AS w_ADPREM, + ADMTSS AS w_ADMTSS, + ADMTMc AS w_ADMTMC + FROM prod_shs.[ACTIVITESCHEMA]_ADP01 + LEFT JOIN prod_shs.[ACTIVITESCHEMA]_SFP01 ON ADCSER = SFCSER + LEFT JOIN w_ADP01 ON ADDOSS = w_ADDOSS AND ADDCPL = w_ADDCPL + LEFT JOIN w_L0P01 ON ADDOSS = L0NDOS + WHERE w_ADDOSS IS NULL AND ADCPRP = '1'; + + -- Médecin de référence modifié sur les additifs, il faut modifier les additifs antérieus + UPDATE w_ADP01 SET + w_ADMEDR = subview.w_ADMEDR_last, + key = key || '|' || subview.w_ADMEDR_last + FROM + ( + SELECT w_ADDOSS, + (MAX(ARRAY[to_char(w_ADDCPL,'FM00'),w_ADMEDR]))[2] AS w_ADMEDR_last + FROM w_ADP01 + GROUP BY 1 + HAVING count(DISTINCT w_ADMEDR) > 1 + ) subview + WHERE w_ADP01.w_ADDOSS = subview.w_ADDOSS AND + w_ADP01.w_ADMEDR <> subview.w_ADMEDR_last + ; + + -- Dossiers séances ouverts à tord (services forcés séance) + UPDATE w_adp01 + SET w_ADCANN = 'A' + WHERE w_ADCSER IN (SELECT code_original FROM activite[PX].t_services_facturation WHERE type_sejour = '5') AND + w_ADCSOR = '0' AND + w_ADDTE1_date <= (now() - interval '7 days') AND + w_ADCANN <> 'A' AND + w_ADDOSS NOT IN (SELECT ACDOSS FROM prod_shs.[ACTIVITESCHEMA]_ACP01 WHERE ACCANN = '1'); + + -- Dossiers séances ouverts à tord (19-302) + UPDATE w_adp01 + SET w_ADCANN = 'A' + WHERE w_ADCSER IN ( + SELECT t_services_facturation.code_original + FROM activite[PX].t_services_facturation + JOIN base.t_modes_traitement ON mode_traitement_id = t_modes_traitement.oid + JOIN base.t_dmt ON dmt_id = t_dmt.oid + WHERE t_modes_traitement.code = '19' AND t_dmt.code = '302') AND + w_ADCSOR = '0' AND + w_ADDTE1_date <= (now() - interval '7 days') AND + w_ADCANN <> 'A' AND + w_ADDOSS NOT IN (SELECT ACDOSS FROM prod_shs.[ACTIVITESCHEMA]_ACP01 WHERE ACCANN = '1'); + + DELETE FROM w_ADP01 WHERE w_ADCANN <> ''; + + + + DROP TABLE IF EXISTS w_CCP01_next_jvt; + CREATE TEMP TABLE w_CCP01_next_jvt AS + SELECT + COALESCE(to_date(MAX(CCANEE * 10000 + CCMOIS * 100 + 01),'YYYYMMDD') + interval '2 month' - interval '1 day', '20991231') AS CCDTJV_date + FROM prod_shs.[ACTIVITESCHEMA]_CCP01 + WHERE CCCMON = 'E' AND CCMOIS <= 12 AND CCNOR3 IN (105) ; + + + UPDATE w_ADP01 + SET w_ADDTJV_date = CASE WHEN w_ADCSOR <> '1' THEN '20991231' WHEN w_ADDTS1_date <= CCDTJV_date THEN CCDTJV_date ELSE date_trunc('month', w_ADDTS1_date) + interval '1 month' - interval '1 day' END + FROM w_CCP01_next_jvt + WHERE w_ADCJVT <> '1'; + + UPDATE w_ADP01 + SET w_ADAAJV = date_part('year', w_ADDTJV_date), w_ADMMJV = date_part('month', w_ADDTJV_date) + WHERE w_ADCJVT <> '1'; + + DROP TABLE IF EXISTS w_ADP01_keys; + CREATE TEMP TABLE w_ADP01_keys AS + SELECT + key, + w_ADCSER, + w_ADACTI, + w_ADETAG, + w_ADCHLT, + w_ADMEDR, + L0NGHS, + L0GHM9, + L0NGHS_BEBE_1, + L0NGHS_BEBE_2, + L0NGHS_BEBE_3, + w_ADCFSS, + w_ADCFMC, + w_ADCFMM, + w_ADCODM, + w_ADCRIS, + ''::text AS mode_traitement_code, + ''::text AS dmt_code, + '0'::text AS type_sejour_force, + 0::bigint AS lieu_id, + 0::bigint AS medecin_sejour_id, + 0::bigint AS ghs_id, + 0::bigint AS ghm_id, + 0::bigint AS ghs_bebe1_id, + 0::bigint AS ghs_bebe2_id, + 0::bigint AS ghs_bebe3_id, + 0::bigint AS tiers_payant_0_id, + 0::bigint AS tiers_payant_1_id, + 0::bigint AS tiers_payant_2_id, + 0::bigint AS tiers_payant_22_id, + 0::bigint AS code_postal_id, + 0::bigint AS risque_id + FROM w_ADP01 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16; + + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4) + SELECT w_ADCSER, w_ADACTI, w_ADETAG, w_ADETAG || '|' || w_ADCHLT + FROM w_ADP01_keys + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = w_ADCSER AND + code_original_2 = w_ADACTI AND + code_original_3 = w_ADETAG AND + code_original_4 = w_ADETAG || '|' || w_ADCHLT + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4; + + + + UPDATE w_ADP01_keys + set lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = w_ADCSER AND + code_original_2 = w_ADACTI AND + code_original_3 = w_ADETAG AND + code_original_4 = w_ADETAG || '|' || w_ADCHLT; + + UPDATE w_ADP01_keys SET + mode_traitement_code = t_modes_traitement.code, + dmt_code = t_dmt.code, + type_sejour_force = CASE WHEN t_services_facturation.type_sejour IN ('1', '2', '3', '31', '4', '5') THEN t_services_facturation.type_sejour ELSE '0' END + FROM activite[PX].t_services_facturation + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + WHERE t_services_facturation.code_original = w_ADCSER ; + + + UPDATE w_ADP01_keys + set medecin_sejour_id = t_medecins_administratifs.oid + FROM activite[PX].t_medecins_administratifs + WHERE code_original = w_ADMEDR; + + UPDATE w_ADP01_keys + set ghs_id = t_ghs.oid + FROM base.t_ghs + WHERE L0NGHS <> '0000' AND to_char(t_ghs.code,'FM0000') = L0NGHS; + + UPDATE w_ADP01_keys + set ghm_id = t_ghm.oid + FROM base.t_ghm + WHERE t_ghm.code = L0GHM9 AND t_ghm.code NOT LIKE '90%'; + + UPDATE w_ADP01_keys + set ghs_bebe1_id = t_ghs.oid + FROM base.t_ghs + WHERE L0NGHS_BEBE_1 <> '0000' AND to_char(t_ghs.code,'FM0000') = L0NGHS_BEBE_1; + + UPDATE w_ADP01_keys + set ghs_bebe2_id = t_ghs.oid + FROM base.t_ghs + WHERE L0NGHS_BEBE_2 <> '0000' AND to_char(t_ghs.code,'FM0000') = L0NGHS_BEBE_2; + + UPDATE w_ADP01_keys + set ghs_bebe3_id = t_ghs.oid + FROM base.t_ghs + WHERE L0NGHS_BEBE_3 <> '0000' AND to_char(t_ghs.code,'FM0000') = L0NGHS_BEBE_3; + + ALTER TABLE w_ADP01_keys ADD CONSTRAINT w_ADP01_keys_pkey PRIMARY KEY(key); + + + UPDATE w_ADP01_keys + set tiers_payant_0_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE code_original = '0000'; + + UPDATE w_ADP01_keys + set tiers_payant_1_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE w_ADCFSS <> 0 AND w_ADCFSS <> 9999 AND code_original = w_ADCFSS; + + UPDATE w_ADP01_keys + set tiers_payant_2_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE w_ADCFMC <> 0 AND w_ADCFMC <> 9999 AND code_original = w_ADCFMC; + + UPDATE w_ADP01_keys + set tiers_payant_22_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE w_ADCFMM <> 0 AND w_ADCFMM <> 9999 AND code_original = w_ADCFMM; + + UPDATE w_ADP01_keys + set code_postal_id = t_codes_postaux.oid + FROM base.t_codes_postaux + WHERE w_ADCODM = t_codes_postaux.code; + + UPDATE w_ADP01_keys + set risque_id = t_risque.oid + FROM activite[PX].t_risque + WHERE w_ADCRIS = t_risque.code; + + + + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM + activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original + AND (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + activite_id = COALESCE(t_activites.oid,0) + FROM + activite[PX].t_activites + WHERE code_original_2 = t_activites.code_original AND + t_lieux.activite_id <> COALESCE(t_activites.oid,0) + ; + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM + activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + + DROP TABLE IF EXISTS w_ADP01_SEJOUR; + CREATE TEMP TABLE w_ADP01_SEJOUR AS + SELECT w_ADDOL1, + COUNT(CASE WHEN w_DOL1UN = '1' THEN w_ADDOSS ELSE NULl END) AS count, + MIN(w_ADDTE1) AS w_ADDTE1, + MIN(w_ADHREN) AS w_ADHREN, + MAX(w_ADDTS1) AS w_ADDTS1, + MAX(w_ADHRSO) AS w_ADHRSO, + MIN(w_AD$$$6_ME) AS w_AD$$$6_ME, + MIN(w_AD$$$6_MS) AS w_AD$$$6_MS, + MIN(w_DTE1DOL1) AS w_DTE1DOL1_1, + MAX(w_DTE1DOL1) AS w_DTE1DOL1_9 + FROM w_ADP01 + GROUP BY 1; + + UPDATE w_ADP01_SEJOUR + SET w_ADDTE1 = w_ADP01.w_ADDTE1, + w_ADHREN = w_ADP01.w_ADHREN, + w_AD$$$6_ME = w_ADP01.w_AD$$$6_ME + FROM w_ADP01 + WHERE w_ADP01_SEJOUR.w_ADDOL1 = w_ADP01.w_ADDOL1 AND w_ADP01_SEJOUR.w_DTE1DOL1_1 = w_ADP01.w_DTE1DOL1 + AND (w_ADP01_SEJOUR.w_ADDTE1 <> w_ADP01.w_ADDTE1 OR + w_ADP01_SEJOUR.w_ADHREN <> w_ADP01.w_ADHREN OR + w_ADP01_SEJOUR.w_AD$$$6_ME <> w_ADP01.w_AD$$$6_ME); + + UPDATE w_ADP01_SEJOUR + SET w_ADDTS1 = w_ADP01.w_ADDTS1, + w_ADHRSO = w_ADP01.w_ADHRSO, + w_AD$$$6_MS = w_ADP01.w_AD$$$6_MS + FROM w_ADP01 + WHERE w_ADP01_SEJOUR.w_ADDOL1 = w_ADP01.w_ADDOL1 AND w_ADP01_SEJOUR.w_DTE1DOL1_9 = w_ADP01.w_DTE1DOL1 + AND (w_ADP01_SEJOUR.w_ADDTS1 <> w_ADP01.w_ADDTS1 OR + w_ADP01_SEJOUR.w_ADHRSO <> w_ADP01.w_ADHRSO OR + w_ADP01_SEJOUR.w_AD$$$6_MS <> w_ADP01.w_AD$$$6_MS + ); + + + + + UPDATE w_ADP01 + SET w_DOL1UN = '0' + FROM w_ADP01_SEJOUR + WHERE w_ADP01.w_ADDOL1 = w_ADP01_SEJOUR.w_ADDOL1 AND COUNT > 1 AND w_DOL1UN = '1' AND w_ADP01.w_DTE1DOL1 <> w_ADP01_SEJOUR.w_DTE1DOL1_1; + + UPDATE w_ADP01 + SET w_DOL1UN = '0' + FROM + ( + SELECT w_ADDOL1, MIN(w_ADDOSS) AS first_ADDOSS + FROM w_ADP01 + GROUP BY 1 + HAVING count(CASE WHEN w_DOL1UN = '1' THEN 1 ELSE NULL END) > 1 + ) subview + WHERE w_ADP01.w_ADDOL1 = subview.w_ADDOL1 AND + w_ADDOSS <> first_ADDOSS AND + w_DOL1UN = '1'; + + + + CREATE INDEX w_ADP01_i2 + ON w_ADP01 + USING btree + (w_ADDOL1); + + CREATE INDEX w_ADP01_i5 + ON w_ADP01 + USING btree + (key); + + CREATE INDEX w_ADP01_i4 + ON w_ADP01 + USING btree + (w_CODENV); + + CREATE INDEX w_ADP01_i9 + ON w_ADP01 + USING btree + (w_ADDOSS_a); + + ALTER TABLE w_ADP01 ADD CONSTRAINT w_ADP01_pkey PRIMARY KEY(w_ADDOSSDCPL); + + ALTER TABLE w_ADP01_SEJOUR ADD CONSTRAINT w_ADP01_SEJOUR_pkey PRIMARY KEY(w_ADDOL1); + + + DROP TABLE IF EXISTS w_ADP01_autres; + CREATE TEMP TABLE w_ADP01_autres AS + SELECT FTDOSS AS ADDOSS FROM prod_shs.[ACTIVITESCHEMA]_FTP01 WHERE FTMTFA <> (FTMTRG + FTMTOD) GROUP BY 1 + UNION + SELECT FDDOSS AS ADDOSS FROM prod_shs.[ACTIVITESCHEMA]_FDP03 WHERE FDAMRG >= [ENV_ADM_ANNEEDEBUT]01 GROUP BY 1 + UNION + SELECT FDDOSS AS ADDOSS FROM prod_shs.[ACTIVITESCHEMA]p_FDP03P WHERE FDAMRG >= [ENV_ADM_ANNEEDEBUT]01 GROUP BY 1 + UNION + SELECT FDDOSS AS ADDOSS FROM prod_shs.[ACTIVITESCHEMA]h_FDP03H WHERE FDAMRG >= [ENV_ADM_ANNEEDEBUT]01 GROUP BY 1; + + UPDATE w_ADP01 SET CTIOK = '1' + WHERE CTIOK <> '1' AND w_ADDOSS IN + (SELECT ADDOSS FROM w_ADP01_autres); + + + + + UPDATE w_ADP01 SET CTIOK = '1' + WHERE CTIOK <> '1' AND + w_ADDOL1 IN (SELECT w_ADDOL1 FROM w_ADP01 WHERE CTIOK = '1'); + + + DELETE FROM w_ADP01 WHERE CTIOK <> '1'; + + UPDATE w_ADP01 + SET L0NGHS_BEBE_1 = '0000' + WHERE L0NGHS_BEBE_1 NOT BETWEEN '0000' AND '9999'; + + + + -- Suppression des tables de travail + + DROP TABLE IF EXISTS w_L0P01; + DROP TABLE IF EXISTS w_CCP01_next_jvt; + + ]]> + + + + + + + + + + + + DMNOMM OR + p_patients.prenom <> DMPREM OR + p_patients.date_naissance <> base.cti_to_date(DMAANM, DMMMNM, DMJJNM) OR + code_sexe <> CASE WHEN DMSEXM IN ('2','3', '5') THEN '2' ELSE '1' END + ); + + + ]]> + + + + 0 OR (MAX(MFNBRE_FOR) > 0 AND SUM(MFNBRE_GHS) = 0); + + CREATE INDEX w_MFP01_ext_i1 + ON w_MFP01_ext + USING btree + (w_MFDOSS); + + + + + + DROP TABLE IF EXISTS w_sejours; + + CREATE TEMP TABLE w_sejours AS + SELECT + ''::text AS finess, + w_ADP01.w_ADDOL1 as no_sejour, + w_ADDOSSDCPL as code_original, + w_ADDMED as no_patient, + COALESCE(to_date(to_char(w_ADP01_SEJOUR.w_ADDTE1,'FM00000000'),'YYYYMMDD'),'20991231') as date_entree, + w_ADP01_SEJOUR.w_ADHREN * 100 as heure_entree, + COALESCE(to_date(to_char(w_ADP01_SEJOUR.w_ADDTS1,'FM00000000'),'YYYYMMDD'),'20991231') as date_sortie, + w_ADP01_SEJOUR.w_ADHRSO * 100 as heure_sortie, + CASE WHEN w_ADSEXM IN ('2','3', '5') THEN '2' ELSE '1' END as code_sexe, + 0 AS age, + CASE WHEN w_ADCSOR = '1' THEN 1 ELSE 0 END as code_sorti, + CASE WHEN w_ADCPRP <> '1' THEN 1 ELSE 0 END as code_prevu, + CASE + WHEN type_sejour_force <> '0' AND type_sejour_force <> '31' THEN type_sejour_force + WHEN type_sejour_force = 31 AND to_date(to_char(w_ADP01.w_ADDTS1,'FM00000000'),'YYYYMMDD')::date - to_date(to_char(w_ADP01.w_ADDTE1,'FM00000000'),'YYYYMMDD')::date <= 1 THEN '3' + WHEN type_sejour_force = 31 THEN '1' + WHEN mode_traitement_code IN ('07') OR dmt_code IN ('958') THEN '3' + WHEN mode_traitement_code IN ('19') AND dmt_code IN ('302') THEN '5' + WHEN mode_traitement_code IN ('19', '23') THEN '2' + WHEN mode_traitement_code IN ('04') AND to_date(to_char(w_ADP01.w_ADDTS1,'FM00000000'),'YYYYMMDD') = to_date(to_char(w_ADP01.w_ADDTE1,'FM00000000'),'YYYYMMDD') THEN '2' + WHEN mode_traitement_code IN ('04') THEN '1' + WHEN mode_traitement_code IN ('03') AND to_date(to_char(w_ADP01.w_ADDTS1,'FM00000000'),'YYYYMMDD') = to_date(to_char(w_ADP01.w_ADDTE1,'FM00000000'),'YYYYMMDD') THEN '2' + WHEN mode_traitement_code IN ('10') AND w_SFQSEJ NOT IN ('0', '5') AND to_date(to_char(w_ADP01.w_ADDTS1,'FM00000000'),'YYYYMMDD') = to_date(to_char(w_ADP01.w_ADDTE1,'FM00000000'),'YYYYMMDD') THEN '2' + WHEN mode_traitement_code IN ('03') THEN '1' + WHEN w_SFQSEJ IN ('0', '5') THEN '3' + ELSE '1' END as type_sejour, + w_ADP01_keys.lieu_id AS lieu_sortie_id, + w_ADP01_keys.medecin_sejour_id, + w_ADP01_keys.ghs_id, + w_ADP01_keys.ghm_id, + w_ADP01_keys.ghs_bebe1_id, + w_ADP01_keys.ghs_bebe2_id, + w_ADP01_keys.ghs_bebe3_id, + L0DTGR_date as date_groupage, + CASE WHEN w_ADSPL1 = '' OR w_ADSPL1 = '0' THEN '0' ELSE '1' END as code_cp_demandee, + t_services_facturation.mode_traitement_id as mode_traitement_id, + w_ADP01_SEJOUR.w_AD$$$6_ME as mode_entree, + '0'::character(1) as provenance, + w_ADP01_SEJOUR.w_AD$$$6_MS as mode_sortie, + '0'::character(1) as destination, + w_ADP01_keys.tiers_payant_0_id, + w_ADP01_keys.tiers_payant_1_id, + w_ADP01_keys.tiers_payant_2_id, + w_ADP01_keys.tiers_payant_22_id, + CASE WHEN substr(w_AD$$$6, 3, 2) = 'BG' THEN 1 ELSE 0 END AS est_budget_global, + w_ADP01_keys.code_postal_id, + w_ADP01_keys.risque_id + + FROM w_ADP01_sejours_modifies w_ADP01 + JOIN w_ADP01_SEJOUR ON w_ADP01.w_ADDOL1 = w_ADP01_SEJOUR.w_ADDOL1 + JOIN w_ADP01_keys ON w_ADP01.key = w_ADP01_keys.key + JOIN activite[PX].t_services_facturation ON w_ADP01.w_ADCSER = t_services_facturation.code_original + WHERE w_DOL1UN = '1' AND w_ADCANN = ''; + + UPDATE w_sejours + SET type_sejour = '3' + WHERE type_sejour <> '3' AND + no_sejour IN (SELECT w_MFDOSS FROM w_MFP01_ext); + + -- Forcage type selon séjour + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour + FROM activite.t_sejour + WHERE t_sejour.no_sejour = w_sejours.no_sejour AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9'); + + + -- FINESS + UPDATE w_sejours + SET finess = t_finess.code + FROM activite[PX].t_lieux + JOIN activite[PX].t_services_facturation on service_facturation_id = t_services_facturation.oid + JOIN base.t_finess ON finess_id = t_finess.oid + WHERE lieu_sortie_id = t_lieux.oid; + + UPDATE w_sejours + SET finess = '000000000' + WHERE finess = ''; + + + + + UPDATE activite[PX].p_sejours SET + code_original = w_sejours.code_original, + finess = w_sejours.finess, + no_patient = w_sejours.no_patient, + date_entree = w_sejours.date_entree, + heure_entree = w_sejours.heure_entree, + date_sortie = w_sejours.date_sortie, + heure_sortie = w_sejours.heure_sortie, + code_sexe = w_sejours.code_sexe, + age = w_sejours.age, + code_sorti = w_sejours.code_sorti, + code_prevu = w_sejours.code_prevu, + type_sejour = w_sejours.type_sejour, + lieu_sortie_id = w_sejours.lieu_sortie_id, + medecin_sejour_id = w_sejours.medecin_sejour_id, + code_cp_demandee = w_sejours.code_cp_demandee, + mode_traitement_id = w_sejours.mode_traitement_id, + mode_entree = w_sejours.mode_entree, + provenance = w_sejours.provenance, + mode_sortie = w_sejours.mode_sortie, + destination = w_sejours.destination, + tiers_payant_0_id = w_sejours.tiers_payant_0_id, + tiers_payant_1_id = w_sejours.tiers_payant_1_id, + tiers_payant_2_id = w_sejours.tiers_payant_2_id, + tiers_payant_22_id = w_sejours.tiers_payant_22_id, + est_budget_global = w_sejours.est_budget_global, + date_groupage = w_sejours.date_groupage, + ghs_id = w_sejours.ghs_id, + ghm_id = w_sejours.ghm_id, + ghs_bebe1_id = w_sejours.ghs_bebe1_id, + ghs_bebe2_id = w_sejours.ghs_bebe2_id, + ghs_bebe3_id = w_sejours.ghs_bebe3_id, + code_postal_id = w_sejours.code_postal_id, + risque_id = w_sejours.risque_id + FROM w_sejours + WHERE w_sejours.no_sejour = p_sejours.no_sejour + AND ( + w_sejours.code_original IS DISTINCT FROM p_sejours.code_original OR + w_sejours.finess IS DISTINCT FROM p_sejours.finess OR + w_sejours.no_patient IS DISTINCT FROM p_sejours.no_patient OR + w_sejours.date_entree IS DISTINCT FROM p_sejours.date_entree OR + w_sejours.heure_entree IS DISTINCT FROM p_sejours.heure_entree OR + w_sejours.date_sortie IS DISTINCT FROM p_sejours.date_sortie OR + w_sejours.heure_sortie IS DISTINCT FROM p_sejours.heure_sortie OR + w_sejours.code_sexe IS DISTINCT FROM p_sejours.code_sexe OR + w_sejours.age IS DISTINCT FROM p_sejours.age OR + w_sejours.code_sorti IS DISTINCT FROM p_sejours.code_sorti OR + w_sejours.code_prevu IS DISTINCT FROM p_sejours.code_prevu OR + w_sejours.type_sejour IS DISTINCT FROM p_sejours.type_sejour OR + w_sejours.lieu_sortie_id IS DISTINCT FROM p_sejours.lieu_sortie_id OR + w_sejours.medecin_sejour_id IS DISTINCT FROM p_sejours.medecin_sejour_id OR + w_sejours.code_cp_demandee IS DISTINCT FROM p_sejours.code_cp_demandee OR + w_sejours.mode_traitement_id IS DISTINCT FROM p_sejours.mode_traitement_id OR + w_sejours.mode_entree IS DISTINCT FROM p_sejours.mode_entree OR + w_sejours.provenance IS DISTINCT FROM p_sejours.provenance OR + w_sejours.mode_sortie IS DISTINCT FROM p_sejours.mode_sortie OR + w_sejours.destination IS DISTINCT FROM p_sejours.destination OR + w_sejours.tiers_payant_0_id IS DISTINCT FROM p_sejours.tiers_payant_0_id OR + w_sejours.tiers_payant_1_id IS DISTINCT FROM p_sejours.tiers_payant_1_id OR + w_sejours.tiers_payant_2_id IS DISTINCT FROM p_sejours.tiers_payant_2_id OR + w_sejours.tiers_payant_22_id IS DISTINCT FROM p_sejours.tiers_payant_22_id OR + w_sejours.est_budget_global IS DISTINCT FROM p_sejours.est_budget_global OR + w_sejours.date_groupage IS DISTINCT FROM p_sejours.date_groupage OR + w_sejours.ghs_id IS DISTINCT FROM p_sejours.ghs_id OR + w_sejours.ghm_id IS DISTINCT FROM p_sejours.ghm_id OR + w_sejours.ghs_bebe1_id IS DISTINCT FROM p_sejours.ghs_bebe1_id OR + w_sejours.ghs_bebe2_id IS DISTINCT FROM p_sejours.ghs_bebe2_id OR + w_sejours.ghs_bebe3_id IS DISTINCT FROM p_sejours.ghs_bebe3_id OR + w_sejours.code_postal_id IS DISTINCT FROM p_sejours.code_postal_id OR + w_sejours.risque_id IS DISTINCT FROM p_sejours.risque_id + ); + + + INSERT INTO activite[PX].p_sejours ( + finess, + no_sejour, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + lieu_sortie_id, + medecin_sejour_id, + ghs_id, + ghm_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + est_budget_global, + code_postal_id, + risque_id + ) + SELECT + w_sejours.finess, + w_sejours.no_sejour, + w_sejours.code_original, + w_sejours.no_patient, + w_sejours.date_entree, + w_sejours.heure_entree, + w_sejours.date_sortie, + w_sejours.heure_sortie, + w_sejours.code_sexe, + w_sejours.age, + w_sejours.code_sorti, + w_sejours.code_prevu, + w_sejours.type_sejour, + w_sejours.lieu_sortie_id, + w_sejours.medecin_sejour_id, + w_sejours.ghs_id, + w_sejours.ghm_id, + w_sejours.ghs_bebe1_id, + w_sejours.ghs_bebe2_id, + w_sejours.ghs_bebe3_id, + w_sejours.date_groupage, + w_sejours.code_cp_demandee, + w_sejours.mode_traitement_id, + w_sejours.mode_entree, + w_sejours.provenance, + w_sejours.mode_sortie, + w_sejours.destination, + w_sejours.tiers_payant_0_id, + w_sejours.tiers_payant_1_id, + w_sejours.tiers_payant_2_id, + w_sejours.tiers_payant_22_id, + w_sejours.est_budget_global, + w_sejours.code_postal_id, + w_sejours.risque_id + + FROM w_sejours LEFT JOIN activite[PX].p_sejours ON (w_sejours.no_sejour = p_sejours.no_sejour) + WHERE p_sejours.no_sejour IS NULL; + + DELETE FROM activite[PX].p_sejours WHERE no_sejour NOT IN (SELECT w_ADDOL1 FROM w_ADP01 WHERE w_DOL1UN = '1' AND w_ADCANN = ''); + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '[PX]' = ''; + + UPDATE activite[PX].p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND + '[PX]' = ''; + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '[PX]' = ''; + + + -- recréation index + + -- Suppression tables de travail + DROP TABLE IF EXISTS w_ADP01_keys; + DROP TABLE IF EXISTS w_ADP01_SEJOUR; + DROP TABLE IF EXISTS w_sejours; + + + + -- transferts d'établissements + INSERT INTO base.t_etablissements(code, texte, texte_court) + SELECT + DDNDOP, + DDNDOP, + DDNDOP + FROM prod_shs.[ACTIVITESCHEMA]_DDP01 + WHERE DDNDOP NOT IN (SELECT code FROM base.t_etablissements) + GROUP BY 1,2,3 + ; + + -- transferts d'établissements + INSERT INTO base.t_etablissements(code, texte, texte_court) + SELECT + DDNDOD, + DDNDOD, + DDNDOD + FROM prod_shs.[ACTIVITESCHEMA]_DDP01 + WHERE DDNDOD NOT IN (SELECT code FROM base.t_etablissements) + GROUP BY 1,2,3 + ; + + INSERT INTO activite[PX].p_sejours_transferts (sejour_id, provenance_id, destination_id) + SELECT + p_sejours.oid, + (MAX(ARRAY[DDDCPL::text,provenance.oid::text]))[2]::bigint AS provenance_id, + (MAX(ARRAY[DDDCPL::text,destination.oid::text]))[2]::bigint AS destination_id + FROM + activite[PX].p_sejours + JOIN prod_shs.[ACTIVITESCHEMA]_DDP01 ON DDDOSS = no_sejour + LEFT JOIN base.t_etablissements provenance ON DDNDOP = provenance.code AND DDNDOP != '' + LEFT JOIN base.t_etablissements destination ON DDNDOD = destination.code AND DDNDOD != '' + WHERE 1!=1 OR + DDNDOD != '' OR + DDNDOP != '' + GROUP BY 1 + ; + + -- Assurance + INSERT INTO activite[PX].p_sejours_assurance( + sejour_id, + nom_assure, + prenom_assure, + tiers_payant_0_id, + tiers_payant_1_id, + matricule_1, + tiers_payant_2_id, + matricule_2, + tiers_payant_22_id, + matricule_22 + ) + SELECT + p_sejours.oid AS sejour_id, + MAX(w_ADNOM1) AS nom_assure, + MAX(w_ADPREM) prenom_assure, + MAX(p_sejours.tiers_payant_0_id), + MAX(p_sejours.tiers_payant_1_id), + MAX(substr(w_ADMTSS,1,13)), + MAX(p_sejours.tiers_payant_2_id), + MAX(CASE WHEN w_ADMTMC <> '' THEN w_ADMTMC ELSE substr(w_ADMTSS,1,13) END) AS matricule_2, + MAX(p_sejours.tiers_payant_22_id), + MAX(''::text) AS matricule_2 + FROM w_ADP01 + JOIN activite[PX].p_sejours ON code_original = w_ADDOSSDCPL + GROUP BY 1 + ; + + + ]]> + + + + + COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + activite_id = COALESCE(t_activites.oid,0) + FROM + activite[PX].t_activites + WHERE code_original_2 = t_activites.code_original AND + t_lieux.activite_id <> COALESCE(t_activites.oid,0) + ; + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM + activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + + DROP TABLE IF EXISTS w_SOP01_2; + CREATE TEMP TABLE w_SOP01_2 AS + SELECT + w_ADDOL1, + w_ADDTHREN, + w_ADDTHRSO, + w_ADQURG, + w_SODOSS, + w_SODCPL, + w_SOCSER, + w_SOACTI, + w_SOETAG, + w_SOCHLT, + w_SOMEDS, + w_SODTSS, + w_SOHRSO, + w_SODTE1, + w_SOHREN, + '1'::text AS w_QENTREE, + w_SODTHREN, + '1'::text AS w_QSORTIE, + w_SODTHRSO, + ''::text AS w_SOCSER_before, + ''::text AS w_SOETAG_before, + ''::text AS w_SOCSER_next, + ''::text AS w_SOETAG_next, + COALESCE(t_lieux.oid,0) AS lieu_id + FROM w_SOP01 + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = w_SOCSER AND + code_original_2 = w_SOACTI AND + code_original_3 = w_SOETAG AND + code_original_4 = w_SOETAG || '|' || w_SOCHLT + ) + ORDER BY w_ADDOL1, w_SODTHRSO; + + + DROP SEQUENCE IF EXISTS w_SOP01_seq; + CREATE TEMP SEQUENCE w_SOP01_seq + INCREMENT 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 1 + CACHE 1; + + DROP TABLE IF EXISTS w_SOP01; + CREATE TEMP TABLE w_SOP01 AS + SELECT + nextval('w_SOP01_seq'::regclass) AS sequence, + w_ADDOL1, + w_ADDTHREN, + w_ADDTHRSO, + w_ADQURG, + w_SODOSS, + w_SODCPL, + w_SOCSER, + w_SOACTI, + w_SOETAG, + w_SOCHLT, + w_SOMEDS, + w_SODTSS, + w_SOHRSO, + w_SODTE1, + w_SOHREN, + w_QENTREE, + w_SODTHREN, + w_QSORTIE, + w_SODTHRSO, + w_SOCSER_before, + w_SOETAG_before, + w_SOCSER_next, + w_SOETAG_next, + lieu_id + FROM w_SOP01_2 + ORDER BY w_ADDOL1, w_SODTHRSO; + + -- Correction mouvements erronés + UPDATE w_SOP01 + SET + w_SODTHREN = w_SOP01_before.w_SODTHRSO + interval '1 SECOND' + FROM w_SOP01 w_SOP01_before + WHERE w_SOP01.w_ADDOL1 = w_SOP01_before.w_ADDOL1 + AND w_SOP01.sequence = w_SOP01_before.sequence + 1; + + DROP TABLE IF EXISTS w_SOP01_SEJOUR; + CREATE TEMP TABLE w_SOP01_SEJOUR AS + SELECT + w_ADDOL1 + FROM w_SOP01 + GROUP BY 1 + HAVING count(*) > 1; + + DELETE FROM w_SOP01 + USING w_SOP01_SEJOUR + WHERE w_SOP01_SEJOUR.w_ADDOL1 = w_SOP01.w_ADDOL1 AND w_SODTHREN > w_ADDTHRSO; + + DELETE FROM w_SOP01 + USING w_SOP01_SEJOUR + WHERE w_SOP01_SEJOUR.w_ADDOL1 = w_SOP01.w_ADDOL1 AND w_SODTHRSO < w_ADDTHREN ; + + + -- + + DROP TABLE IF EXISTS w_SOP01_SEJOUR; + CREATE TEMP TABLE w_SOP01_SEJOUR AS + SELECT + w_ADDOL1, + MIN(sequence) AS sequence_1, + MAX(sequence) AS sequence_9 + FROM w_SOP01 + GROUP BY 1; + + + + UPDATE w_SOP01 + SET w_SODTHRSO = w_ADDTHRSO + FROM w_SOP01_SEJOUR + WHERE w_SOP01.w_ADDOL1 = w_SOP01_SEJOUR.w_ADDOL1 AND w_SOP01.sequence = w_SOP01_SEJOUR.sequence_9 AND + w_SODTHRSO <> w_ADDTHRSO + AND (w_SOP01_SEJOUR.sequence_1 <> w_SOP01_SEJOUR.sequence_9 OR (w_SOP01_SEJOUR.sequence_1 = w_SOP01_SEJOUR.sequence_9 AND w_SODTHRSO < w_ADDTHRSO)); + + + UPDATE w_SOP01 + SET w_SODTHREN = w_ADDTHREN + FROM w_SOP01_SEJOUR + WHERE w_SOP01.w_ADDOL1 = w_SOP01_SEJOUR.w_ADDOL1 AND w_SOP01.sequence = w_SOP01_SEJOUR.sequence_1 AND + w_SODTHREN <> w_ADDTHREN; + + + + + UPDATE w_SOP01 + SET + w_QSORTIE = '0', + w_SOCSER_next = w_SOP01_next.w_SOCSER, + w_SOETAG_next = w_SOP01_next.w_SOETAG + FROM w_SOP01 w_SOP01_next + WHERE w_SOP01.w_ADDOL1 = w_SOP01_next.w_ADDOL1 + AND w_SOP01.sequence = w_SOP01_next.sequence - 1; + + + + UPDATE w_SOP01 + SET + w_QENTREE = '0', + w_SODTHREN = w_SOP01_before.w_SODTHRSO + interval '1 SECOND', + w_SOCSER_before = w_SOP01_before.w_SOCSER, + w_SOETAG_before = w_SOP01_before.w_SOETAG + FROM w_SOP01 w_SOP01_before + WHERE w_SOP01.w_ADDOL1 = w_SOP01_before.w_ADDOL1 + AND w_SOP01.sequence = w_SOP01_before.sequence + 1; + + + -- + + + -- Génération fichier de base + + + + DROP TABLE IF EXISTS w_mouvements_sejour; + + CREATE TEMP TABLE w_mouvements_sejour AS + SELECT + w_SOP01.w_ADDOL1, + w_SOP01.w_ADDOL1 AS no_sejour, + p_sejours.oid AS sejour_id, + sequence, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE WHEN p_calendrier.date = date(w_SODTHREN) THEN extract('hour' from w_SODTHREN) * 10000 + extract('minute' from w_SODTHREN) * 100 + extract('second' from w_SODTHREN) ELSE 0 END AS heure_debut, + CASE WHEN p_calendrier.date = date(w_SODTHRSO) THEN extract('hour' from w_SODTHRSO) * 10000 + extract('minute' from w_SODTHRSO) * 100 + extract('second' from w_SODTHRSO) ELSE 240000 END AS heure_fin, + CASE WHEN w_QENTREE = '1' AND p_calendrier.date = date(w_SODTHREN) AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes, + CASE WHEN w_QSORTIE = '1' AND p_calendrier.date = date(w_SODTHRSO) AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes, + CASE WHEN w_QENTREE = '1' AND p_calendrier.date = date(w_SODTHREN) AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree, + CASE WHEN w_QSORTIE = '1' AND p_calendrier.date = date(w_SODTHRSO) AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie, + CASE WHEN p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN w_QENTREE = '1' AND p_calendrier.date = date(w_SODTHREN) AND p_sejours.type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires, + CASE WHEN w_QENTREE = '1' AND p_calendrier.date = date(w_SODTHREN) AND p_sejours.type_sejour = '3' THEN 1 ELSE 0 END AS nb_externes, + CASE WHEN w_ADQURG = '1' AND p_calendrier.date = date(w_SODTHREN) AND w_QENTREE = '1' THEN 1 ELSE 0 END AS nb_urgences, + 0 as nb_seances, + + CASE WHEN p_calendrier.date = date(w_SODTHREN) AND p_sejours.type_sejour = '1' AND w_QENTREE <> '1' AND w_SOCSER <> w_SOCSER_before THEN 1 ELSE 0 END AS nb_entrees_mutation_service, + CASE WHEN p_calendrier.date = date(w_SODTHRSO) AND p_sejours.type_sejour = '1' AND w_QSORTIE <> '1' AND w_SOCSER <> w_SOCSER_next THEN 1 ELSE 0 END AS nb_sorties_mutation_service, + CASE WHEN p_calendrier.date = date(w_SODTHREN) AND p_sejours.type_sejour = '1' AND w_QENTREE <> '1' AND w_SOETAG <> w_SOETAG_before THEN 1 ELSE 0 END AS nb_entrees_mutation_etage, + CASE WHEN p_calendrier.date = date(w_SODTHRSO) AND p_sejours.type_sejour = '1' AND w_QSORTIE <> '1' AND w_SOETAG <> w_SOETAG_next THEN 1 ELSE 0 END AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + 0 AS nb_entrees_mutation_unite_medicale, + 0 AS nb_sorties_mutation_unite_medicale, + + CASE WHEN p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN p_sejours.type_sejour = '1' AND (p_calendrier.date <> date(p_sejours.date_sortie) OR p_sejours.code_sorti <> '1') THEN 1 ELSE 0 END AS nb_jours_js_non_inclus, + + CASE + WHEN p_sejours.type_sejour = '1' AND t_lits.chambre_particuliere = 'O' THEN '1' + WHEN p_sejours.type_sejour = '2' AND t_lits.chambre_particuliere = 'O' AND w_QENTREE = '1' AND p_calendrier.date = date(w_SODTHREN) THEN '1' + ELSE '0' END AS est_chambre_particuliere, + CASE + WHEN p_sejours.type_sejour = '1' AND t_lits.chambre_particuliere = 'O' THEN 1 + WHEN p_sejours.type_sejour = '2' AND t_lits.chambre_particuliere = 'O' AND w_QENTREE = '1' AND p_calendrier.date = date(w_SODTHREN) THEN 1 + ELSE 0 END AS nb_chambres_particulieres, + + 0 AS nb_bebes, + + lieu_id, + + p_sejours.medecin_sejour_id as medecin_sejour_id + + FROM w_SOP01 + JOIN activite[PX].p_sejours ON w_SOP01.w_ADDOL1 = p_sejours.no_sejour AND p_sejours.etat = '' + JOIN activite[PX].t_lits ON w_SOETAG || '|' || w_SOCHLT = t_lits.code_original + JOIN base.p_calendrier ON (p_calendrier.date BETWEEN date(w_SODTHREN) AND date(w_SODTHRSO) AND p_calendrier.date <= now() ) + WHERE p_sejours.code_prevu <> '1' + ORDER BY sequence, p_calendrier.date; + + + DELETE FROM w_mouvements_sejour WHERE heure_fin < heure_debut ; + + CREATE INDEX w_mouvements_sejour_i1 + ON w_mouvements_sejour + USING btree + (no_sejour); + + -- Séances d'après actes + DROP TABLE IF EXISTS w_MFP01_seances; + CREATE TEMP TABLE w_MFP01_seances AS + SELECT + w_ADDOL1, + + COALESCE(to_date(to_char(MFDTA1,'FM00000000'),'YYYYMMDD'), w_ADDTE1_date) AS MFDTA1_date, + SUM(CASE WHEN MFMFA1 + MFMFA2 + MFMFA3 + MFMFAM < 0 AND MFNBRE > 0 THEN 0 - MFNBRE ELSE MFNBRE END) AS MFNBRE + FROM prod_shs.[ACTIVITESCHEMA]_MFP01CLI + JOIN w_ADP01_sejours_modifies w_ADP01 ON (MFDOSS = w_ADDOSS AND MFDCPL = w_ADDCPL AND W_ADCFAC = '1' AND w_CODENV = '') + WHERE + (MFRUPR = 189 OR + MFCCLE IN ('D01', 'D02', 'D03', 'D04', 'D05', 'D06', 'D07', 'D08', 'D09', 'D10', 'D11', 'D12', 'D13', 'D14', 'D15', 'D16', 'D17', 'D18', 'D19')) + GROUP BY 1,2; + + INSERT INTO w_MFP01_seances + SELECT + w_ADDOL1, + + COALESCE(to_date(to_char(ACDTA1,'FM00000000'),'YYYYMMDD'), w_ADDTE1_date) AS MFDTA1_date, + SUM(CASE WHEN w_ADADAV IN ('2', '4', '6') AND ACNBRE > 0 THEN 0 - ACNBRE ELSE ACNBRE END) AS ACNBRE + FROM prod_shs.[ACTIVITESCHEMA]_ACP01 + JOIN w_ADP01_sejours_modifies w_ADP01 ON (ACDOSS = w_ADDOSS AND ACDCPL = w_ADDCPL AND W_ADCFAC <> '1' AND w_CODENV = '') + WHERE W_ADCFAC <> '1' AND ACCCLE IN ('K', 'ATM') AND ACCNAT ='DIA' AND ACCCLH = '2' AND ACCANN = '1' + GROUP BY 1,2; + + + + + INSERT INTO w_MFP01_seances + SELECT + w_ADDOL1, + + COALESCE(to_date(to_char(MFDTA1,'FM00000000'),'YYYYMMDD'), w_ADDTE1_date) AS MFDTA1_date, + SUM(CASE WHEN MFMFA1 + MFMFA2 + MFMFA3 + MFMFAM < 0 AND MFNBRE > 0 THEN 0 - MFNBRE ELSE MFNBRE END) AS MFNBRE + FROM prod_shs.[ACTIVITESCHEMA]p_MFP01CLIP + JOIN w_ADP01_sejours_modifies w_ADP01 ON (MFDOSS = w_ADDOSS AND MFDCPL = w_ADDCPL AND W_ADCFAC = '1' AND w_CODENV = 'P') + WHERE + (MFRUPR = 189 OR + MFCCLE IN ('D01', 'D02', 'D03', 'D04', 'D05', 'D06', 'D07', 'D08', 'D09', 'D10', 'D11', 'D12', 'D13', 'D14', 'D15', 'D16', 'D17', 'D18', 'D19')) + GROUP BY 1,2; + + INSERT INTO w_MFP01_seances + SELECT + w_ADDOL1, + + COALESCE(to_date(to_char(MFDTA1,'FM00000000'),'YYYYMMDD'), w_ADDTE1_date) AS MFDTA1_date, + SUM(CASE WHEN MFMFA1 + MFMFA2 + MFMFA3 + MFMFAM < 0 AND MFNBRE > 0 THEN 0 - MFNBRE ELSE MFNBRE END) AS MFNBRE + FROM prod_shs.[ACTIVITESCHEMA]h_MFP01CLIH + JOIN w_ADP01_sejours_modifies w_ADP01 ON (MFDOSS = w_ADDOSS AND MFDCPL = w_ADDCPL AND W_ADCFAC = '1' AND w_CODENV = 'H') + WHERE + (MFRUPR = 189 OR + MFCCLE IN ('D01', 'D02', 'D03', 'D04', 'D05', 'D06', 'D07', 'D08', 'D09', 'D10', 'D11', 'D12', 'D13', 'D14', 'D15', 'D16', 'D17', 'D18', 'D19')) + GROUP BY 1,2; + + CREATE INDEX w_MFP01_seances_i1 + ON w_MFP01_seances + USING btree + (w_ADDOL1); + + + UPDATE w_mouvements_sejour + SET nb_seances = MFNBRE + FROM w_MFP01_seances, + activite[PX].t_lieux + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE w_MFP01_seances.w_ADDOL1 = w_mouvements_sejour.no_sejour AND + date(MFDTA1_date) = w_mouvements_sejour.date AND + lieu_id = t_lieux.oid AND t_services_facturation.type_t2a NOT IN ('2','3'); + + + -- seances selon GHS pmsi + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT + p_sejours.no_sejour, + date_entree AS date, + 1 AS nb_seances + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux On lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_services_facturation.oid = service_facturation_id + JOIN base.t_ghs ON p_sejours.ghs_id = t_ghs.oid + JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid + WHERE (date_sortie - date_entree) <= 1 AND p_sejours.type_sejour <> '5' AND + t_services_facturation.type_sejour NOT IN ('2','0sauf5') AND + (t_ghs.texte ilike '%séance%' OR + t_ghm.code LIKE '28%'); + + CREATE INDEX w_sejours_seances_i1 + ON w_sejours_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_sejours_seances.nb_seances + FROM w_sejours_seances + WHERE w_sejours_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_sejours_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_sejours_seances.nb_seances; + + -- Séances non trouvées sur séjours forcés + DROP TABLE IF EXISTS w_sejours_sans_seance; + CREATE TEMP TABLE w_sejours_sans_seance AS + SELECT w_mouvements_sejour.no_sejour, p_sejours.date_entree, MIN(CASE WHEN w_mouvements_sejour.date = date_entree THEN heure_debut ELSE 999999 END) AS heure_debut + FROM w_mouvements_sejour + JOIN activite[PX].p_sejours ON w_mouvements_sejour.no_sejour = p_sejours.no_sejour + JOIN activite[PX].p_patients ON p_sejours.no_patient = p_patients.no_patient + WHERE type_sejour = '5' + GROUP BY 1,2 + HAVING SUM(nb_seances) = 0; + + CREATE INDEX w_sejours_sans_seance_i1 + ON w_sejours_sans_seance + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = 1 + FROM w_sejours_sans_seance + WHERE w_mouvements_sejour.no_sejour = w_sejours_sans_seance.no_sejour AND + w_mouvements_sejour.date = w_sejours_sans_seance.date_entree AND + w_mouvements_sejour.heure_debut = w_sejours_sans_seance.heure_debut; + + -- Bébés + DROP TABLE IF EXISTS w_MFP01_bebes; + CREATE TEMP TABLE w_MFP01_bebes AS + SELECT + w_ADDOL1, + MAX(CASE WHEN t_actes.texte ILIKE '%multiple%' THEN 2 ELSE 1 END) AS nb_bebes + FROM prod_shs.[ACTIVITESCHEMA]_MFP01CCAM + JOIN w_ADP01_sejours_modifies w_ADP01 ON (MFDOSS = w_ADDOSS AND MFDCPL = w_ADDCPL AND W_ADCFAC = '1' AND w_CODENV = '') + JOIN base.t_actes ON substring(MFCCAM, 1, 7) = t_actes.code AND + MFCCAM LIKE 'JQG%' AND + t_actes.texte ILIKE 'accouchement%' + WHERE MFDCPL = 0 AND MFCCAC = '1' + GROUP BY 1; + + + INSERT INTO w_MFP01_bebes + SELECT + w_ADDOL1, + MAX(CASE WHEN t_actes.texte ILIKE '%multiple%' THEN 2 ELSE 1 END) AS nb_bebes + FROM prod_shs.[ACTIVITESCHEMA]_ACP01 + JOIN w_ADP01_sejours_modifies w_ADP01 ON (ACDOSS = w_ADDOSS AND ACDCPL = w_ADDCPL AND W_ADCFAC <> '1' AND w_CODENV = '') + JOIN base.t_actes ON substring(ACCCAM, 1, 7) = t_actes.code AND + ACCCAM LIKE 'JQG%' AND + t_actes.texte ILIKE 'accouchement%' + WHERE ACCCLH = '2' AND ACDCPL = 0 AND ACCCAC = '1' + GROUP BY 1; + + INSERT INTO w_MFP01_bebes + SELECT + w_ADDOL1, + MAX(CASE WHEN t_actes.texte ILIKE '%multiple%' THEN 2 ELSE 1 END) AS nb_bebes + FROM prod_shs.[ACTIVITESCHEMA]p_MFP01CCAMP + JOIN w_ADP01_sejours_modifies w_ADP01 ON (MFDOSS = w_ADDOSS AND MFDCPL = w_ADDCPL AND W_ADCFAC = '1' AND w_CODENV = '') + JOIN base.t_actes ON substring(MFCCAM, 1, 7) = t_actes.code AND + MFCCAM LIKE 'JQG%' AND + t_actes.texte ILIKE 'accouchement%' + WHERE MFDCPL = 0 AND MFCCAC = '1' + GROUP BY 1; + + INSERT INTO w_MFP01_bebes + SELECT + w_ADDOL1, + MAX(CASE WHEN t_actes.texte ILIKE '%multiple%' THEN 2 ELSE 1 END) AS nb_bebes + FROM prod_shs.[ACTIVITESCHEMA]h_MFP01CCAMH + JOIN w_ADP01_sejours_modifies w_ADP01 ON (MFDOSS = w_ADDOSS AND MFDCPL = w_ADDCPL AND W_ADCFAC = '1' AND w_CODENV = '') + JOIN base.t_actes ON substring(MFCCAM, 1, 7) = t_actes.code AND + MFCCAM LIKE 'JQG%' AND + t_actes.texte ILIKE 'accouchement%' + WHERE MFDCPL = 0 AND MFCCAC = '1' + GROUP BY 1; + + CREATE INDEX w_MFP01_bebes_i1 + ON w_MFP01_bebes + USING btree + (w_ADDOL1); + + + UPDATE w_mouvements_sejour + SET nb_bebes = w_MFP01_bebes.nb_bebes + FROM w_MFP01_bebes + WHERE w_MFP01_bebes.w_ADDOL1 = w_mouvements_sejour.no_sejour AND + (nb_entrees_directes = 1 OR nb_externes = 1 OR nb_ambulatoires = 1); + + + + + -- génération écarts + DELETE FROM w_mouvements_sejour + WHERE + nb_entrees_directes = 0 AND + nb_sorties_directes = 0 AND + est_jour_hospitalisation <> '1' AND + nb_ambulatoires = 0 AND + nb_externes = 0 AND + nb_urgences = 0 AND + nb_seances = 0 AND + nb_entrees_mutation_service = 0 AND + nb_sorties_mutation_service = 0 AND + nb_entrees_mutation_etage = 0 AND + nb_sorties_mutation_etage = 0 AND + nb_entrees_mutation_activite = 0 AND + nb_sorties_mutation_activite = 0 AND + nb_entrees_mutation_unite_medicale = 0 AND + nb_sorties_mutation_unite_medicale = 0 AND + nb_jours_js_inclus = 0 AND + nb_jours_js_non_inclus = 0 AND + est_chambre_particuliere <> '1' AND + nb_chambres_particulieres = 0 AND + nb_bebes = 0; + + + DELETE FROM activite[PX].p_mouvements_sejour WHERE no_sejour NOT IN (SELECT w_ADDOL1 FROM w_ADP01 WHERE w_DOL1UN = '1' AND w_ADCANN = ''); + DELETE FROM activite[PX].p_mouvements_sejour WHERE no_sejour IN (SELECT w_ADDOL1 FROM w_ADP01_sejours_modifies WHERE w_DOL1UN = '1' AND w_ADCANN = ''); + + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_5'); + + INSERT INTO activite[PX].p_mouvements_sejour( + sejour_id, no_sejour, date, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, + nb_bebes, jour_semaine, is_weekend) + SELECT sejour_id, no_sejour, date,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, + nb_bebes, jour_semaine, is_weekend + FROM w_mouvements_sejour + ORDER BY no_sejour, sequence; + + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_5'); + + + -- Suppression tables de travail + DROP TABLE IF EXISTS w_SOP01; + DROP TABLE IF EXISTS w_SOP01_2; + DROP TABLE IF EXISTS w_mouvements_sejour; + DROP TABLE IF EXISTS w_MFP01_seances; + DROP TABLE IF EXISTS w_MFP01_bebes; + + + + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + FROM activite[PX].t_lieux + JOIN activite[PX].t_services_facturation ON t_services_facturation.oid = service_facturation_id + WHERE lieu_sortie_id = t_lieux.oid AND + p_sejours.type_sejour <> '5' AND + p_sejours.type_sejour <> '1' AND + t_services_facturation.type_sejour NOT IN ('2','0sauf5') AND + no_sejour IN ( + SELECT no_sejour + FROM activite[PX].p_mouvements_sejour + WHERE nb_seances > 0); + + + UPDATE activite[PX].p_mouvements_sejour + SET nb_externes = 0, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + ( + nb_externes <> 0 OR + nb_ambulatoires <> 0 + ); + + + ]]> + + + + + + + + 0) THEN '1' ELSE '0' END) AS FTCEXP_0, + MAX(CASE WHEN FTTYPC = '0' THEN GREATEST(FTDTEX, w_ADDTFA) ELSE 0 END) AS FTDTEX_0, + COALESCE(to_date(to_char(MAX(CASE WHEN FTTYPC = '0' THEN FTDTEX ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS FTDTEX_0_date, + MAX(CASE WHEN FTTYPC = '0' THEN FTNBOR ELSE 0 END) AS FTNBOR_0, + SUM(CASE WHEN FTTYPC = '0' AND FTCCLH = '1' THEN FTMTFA ELSE 0 END) AS FTMTFA_0_C, + SUM(CASE WHEN FTTYPC = '0' AND FTCCLH = '2' THEN FTMTFA ELSE 0 END) AS FTMTFA_0_H, + SUM(CASE WHEN FTTYPC = '0' AND FTCCLH = '1' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_0_C, + SUM(CASE WHEN FTTYPC = '0' AND FTCCLH = '2' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_0_H, + + MAX(CASE WHEN FTTYPC = '1' THEN to_char(FTCCAI,'FM0000') ELSE NULL END) AS FTCCAI_1, + MAX(CASE WHEN FTTYPC = '1' THEN FTCEXP ELSE '' END) AS FTCEXP_1, + MAX(CASE WHEN FTTYPC = '1' THEN FTDTEX ELSE 0 END) AS FTDTEX_1, + COALESCE(to_date(to_char(MAX(CASE WHEN FTTYPC = '1' THEN FTDTEX ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS FTDTEX_1_date, + MAX(CASE WHEN FTTYPC = '1' THEN FTNBOR ELSE 0 END) AS FTNBOR_1, + SUM(CASE WHEN FTTYPC = '1' AND FTCCLH = '1' THEN FTMTFA ELSE 0 END) AS FTMTFA_1_C, + SUM(CASE WHEN FTTYPC = '1' AND FTCCLH = '2' THEN FTMTFA ELSE 0 END) AS FTMTFA_1_H, + SUM(CASE WHEN FTTYPC = '1' AND FTCCLH = '1' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_1_C, + SUM(CASE WHEN FTTYPC = '1' AND FTCCLH = '2' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_1_H, + + MAX(CASE WHEN FTTYPC = '2' THEN to_char(FTCCAI,'FM0000') ELSE NULL END) AS FTCCAI_2, + MAX(CASE WHEN FTTYPC = '2' THEN FTCEXP ELSE '' END) AS FTCEXP_2, + MAX(CASE WHEN FTTYPC = '2' THEN FTDTEX ELSE 0 END) AS FTDTEX_2, + COALESCE(to_date(to_char(MAX(CASE WHEN FTTYPC = '2' THEN FTDTEX ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS FTDTEX_2_date, + MAX(CASE WHEN FTTYPC = '2' THEN FTNBOR ELSE 0 END) AS FTNBOR_2, + SUM(CASE WHEN FTTYPC = '2' AND FTCCLH = '1' THEN FTMTFA ELSE 0 END) AS FTMTFA_2_C, + SUM(CASE WHEN FTTYPC = '2' AND FTCCLH = '2' THEN FTMTFA ELSE 0 END) AS FTMTFA_2_H, + SUM(CASE WHEN FTTYPC = '2' AND FTCCLH = '1' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_2_C, + SUM(CASE WHEN FTTYPC = '2' AND FTCCLH = '2' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_2_H, + + MAX(CASE WHEN FTTYPC = '3' THEN to_char(FTCCAI,'FM0000') ELSE NULL END) AS FTCCAI_22, + MAX(CASE WHEN FTTYPC = '3' THEN FTCEXP ELSE '' END) AS FTCEXP_22, + MAX(CASE WHEN FTTYPC = '3' THEN FTDTEX ELSE 0 END) AS FTDTEX_22, + COALESCE(to_date(to_char(MAX(CASE WHEN FTTYPC = '3' THEN FTDTEX ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS FTDTEX_22_date, + MAX(CASE WHEN FTTYPC = '3' THEN FTNBOR ELSE 0 END) AS FTNBOR_22, + SUM(CASE WHEN FTTYPC = '3' AND FTCCLH = '1' THEN FTMTFA ELSE 0 END) AS FTMTFA_22_C, + SUM(CASE WHEN FTTYPC = '3' AND FTCCLH = '2' THEN FTMTFA ELSE 0 END) AS FTMTFA_22_H, + SUM(CASE WHEN FTTYPC = '3' AND FTCCLH = '1' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_22_C, + SUM(CASE WHEN FTTYPC = '3' AND FTCCLH = '2' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_22_H + + FROM prod_shs.[ACTIVITESCHEMA]_FTP01 + JOIN w_ADP01_factures_modifiees w_ADP01 ON (FTDOSS = w_ADDOSS AND FTDCPL = w_ADDCPL AND w_CODENV = '') + + GROUP BY 1; + + + + + INSERT INTO w_FTP01_GROUP + SELECT + w_ADDOSSDCPL, + + MAX(CASE WHEN FTTYPC = '0' AND (FTCEXP = '1' OR FTDTEX <> 0) THEN '1' ELSE '0' END) AS FTCEXP_0, + MAX(CASE WHEN FTTYPC = '0' THEN GREATEST(FTDTEX, w_ADDTFA) ELSE 0 END) AS FTDTEX_0, + COALESCE(to_date(to_char(MAX(CASE WHEN FTTYPC = '0' THEN FTDTEX ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS FTDTEX_0_date, + MAX(CASE WHEN FTTYPC = '0' THEN FTNBOR ELSE 0 END) AS FTNBOR_0, + SUM(CASE WHEN FTTYPC = '0' AND FTCCLH = '1' THEN FTMTFA ELSE 0 END) AS FTMTFA_0_C, + SUM(CASE WHEN FTTYPC = '0' AND FTCCLH = '2' THEN FTMTFA ELSE 0 END) AS FTMTFA_0_H, + SUM(CASE WHEN FTTYPC = '0' AND FTCCLH = '1' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_0_C, + SUM(CASE WHEN FTTYPC = '0' AND FTCCLH = '2' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_0_H, + + MAX(CASE WHEN FTTYPC = '1' THEN to_char(FTCCAI,'FM0000') ELSE NULL END) AS FTCCAI_1, + MAX(CASE WHEN FTTYPC = '1' THEN FTCEXP ELSE '' END) AS FTCEXP_1, + MAX(CASE WHEN FTTYPC = '1' THEN FTDTEX ELSE 0 END) AS FTDTEX_1, + COALESCE(to_date(to_char(MAX(CASE WHEN FTTYPC = '1' THEN FTDTEX ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS FTDTEX_1_date, + MAX(CASE WHEN FTTYPC = '1' THEN FTNBOR ELSE 0 END) AS FTNBOR_1, + SUM(CASE WHEN FTTYPC = '1' AND FTCCLH = '1' THEN FTMTFA ELSE 0 END) AS FTMTFA_1_C, + SUM(CASE WHEN FTTYPC = '1' AND FTCCLH = '2' THEN FTMTFA ELSE 0 END) AS FTMTFA_1_H, + SUM(CASE WHEN FTTYPC = '1' AND FTCCLH = '1' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_1_C, + SUM(CASE WHEN FTTYPC = '1' AND FTCCLH = '2' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_1_H, + + MAX(CASE WHEN FTTYPC = '2' THEN to_char(FTCCAI,'FM0000') ELSE NULL END) AS FTCCAI_2, + MAX(CASE WHEN FTTYPC = '2' THEN FTCEXP ELSE '' END) AS FTCEXP_2, + MAX(CASE WHEN FTTYPC = '2' THEN FTDTEX ELSE 0 END) AS FTDTEX_2, + COALESCE(to_date(to_char(MAX(CASE WHEN FTTYPC = '2' THEN FTDTEX ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS FTDTEX_2_date, + MAX(CASE WHEN FTTYPC = '2' THEN FTNBOR ELSE 0 END) AS FTNBOR_2, + SUM(CASE WHEN FTTYPC = '2' AND FTCCLH = '1' THEN FTMTFA ELSE 0 END) AS FTMTFA_2_C, + SUM(CASE WHEN FTTYPC = '2' AND FTCCLH = '2' THEN FTMTFA ELSE 0 END) AS FTMTFA_2_H, + SUM(CASE WHEN FTTYPC = '2' AND FTCCLH = '1' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_2_C, + SUM(CASE WHEN FTTYPC = '2' AND FTCCLH = '2' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_2_H, + + MAX(CASE WHEN FTTYPC = '3' THEN to_char(FTCCAI,'FM0000') ELSE NULL END) AS FTCCAI_22, + MAX(CASE WHEN FTTYPC = '3' THEN FTCEXP ELSE '' END) AS FTCEXP_22, + MAX(CASE WHEN FTTYPC = '3' THEN FTDTEX ELSE 0 END) AS FTDTEX_22, + COALESCE(to_date(to_char(MAX(CASE WHEN FTTYPC = '3' THEN FTDTEX ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS FTDTEX_22_date, + MAX(CASE WHEN FTTYPC = '3' THEN FTNBOR ELSE 0 END) AS FTNBOR_22, + SUM(CASE WHEN FTTYPC = '3' AND FTCCLH = '1' THEN FTMTFA ELSE 0 END) AS FTMTFA_22_C, + SUM(CASE WHEN FTTYPC = '3' AND FTCCLH = '2' THEN FTMTFA ELSE 0 END) AS FTMTFA_22_H, + SUM(CASE WHEN FTTYPC = '3' AND FTCCLH = '1' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_22_C, + SUM(CASE WHEN FTTYPC = '3' AND FTCCLH = '2' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_22_H + + FROM prod_shs.[ACTIVITESCHEMA]p_FTP01P + JOIN w_ADP01_factures_modifiees w_ADP01 ON (FTDOSS = w_ADDOSS AND FTDCPL = w_ADDCPL AND w_CODENV = 'P') + + GROUP BY 1; + + + + + INSERT INTO w_FTP01_GROUP + SELECT + w_ADDOSSDCPL, + + MAX(CASE WHEN FTTYPC = '0' AND (FTCEXP = '1' OR FTDTEX <> 0) THEN '1' ELSE '0' END) AS FTCEXP_0, + MAX(CASE WHEN FTTYPC = '0' THEN GREATEST(FTDTEX, w_ADDTFA) ELSE 0 END) AS FTDTEX_0, + COALESCE(to_date(to_char(MAX(CASE WHEN FTTYPC = '0' THEN FTDTEX ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS FTDTEX_0_date, + MAX(CASE WHEN FTTYPC = '0' THEN FTNBOR ELSE 0 END) AS FTNBOR_0, + SUM(CASE WHEN FTTYPC = '0' AND FTCCLH = '1' THEN FTMTFA ELSE 0 END) AS FTMTFA_0_C, + SUM(CASE WHEN FTTYPC = '0' AND FTCCLH = '2' THEN FTMTFA ELSE 0 END) AS FTMTFA_0_H, + SUM(CASE WHEN FTTYPC = '0' AND FTCCLH = '1' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_0_C, + SUM(CASE WHEN FTTYPC = '0' AND FTCCLH = '2' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_0_H, + + MAX(CASE WHEN FTTYPC = '1' THEN to_char(FTCCAI,'FM0000') ELSE NULL END) AS FTCCAI_1, + MAX(CASE WHEN FTTYPC = '1' THEN FTCEXP ELSE '' END) AS FTCEXP_1, + MAX(CASE WHEN FTTYPC = '1' THEN FTDTEX ELSE 0 END) AS FTDTEX_1, + COALESCE(to_date(to_char(MAX(CASE WHEN FTTYPC = '1' THEN FTDTEX ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS FTDTEX_1_date, + MAX(CASE WHEN FTTYPC = '1' THEN FTNBOR ELSE 0 END) AS FTNBOR_1, + SUM(CASE WHEN FTTYPC = '1' AND FTCCLH = '1' THEN FTMTFA ELSE 0 END) AS FTMTFA_1_C, + SUM(CASE WHEN FTTYPC = '1' AND FTCCLH = '2' THEN FTMTFA ELSE 0 END) AS FTMTFA_1_H, + SUM(CASE WHEN FTTYPC = '1' AND FTCCLH = '1' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_1_C, + SUM(CASE WHEN FTTYPC = '1' AND FTCCLH = '2' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_1_H, + + MAX(CASE WHEN FTTYPC = '2' THEN to_char(FTCCAI,'FM0000') ELSE NULL END) AS FTCCAI_2, + MAX(CASE WHEN FTTYPC = '2' THEN FTCEXP ELSE '' END) AS FTCEXP_2, + MAX(CASE WHEN FTTYPC = '2' THEN FTDTEX ELSE 0 END) AS FTDTEX_2, + COALESCE(to_date(to_char(MAX(CASE WHEN FTTYPC = '2' THEN FTDTEX ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS FTDTEX_2_date, + MAX(CASE WHEN FTTYPC = '2' THEN FTNBOR ELSE 0 END) AS FTNBOR_2, + SUM(CASE WHEN FTTYPC = '2' AND FTCCLH = '1' THEN FTMTFA ELSE 0 END) AS FTMTFA_2_C, + SUM(CASE WHEN FTTYPC = '2' AND FTCCLH = '2' THEN FTMTFA ELSE 0 END) AS FTMTFA_2_H, + SUM(CASE WHEN FTTYPC = '2' AND FTCCLH = '1' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_2_C, + SUM(CASE WHEN FTTYPC = '2' AND FTCCLH = '2' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_2_H, + + MAX(CASE WHEN FTTYPC = '3' THEN to_char(FTCCAI,'FM0000') ELSE NULL END) AS FTCCAI_22, + MAX(CASE WHEN FTTYPC = '3' THEN FTCEXP ELSE '' END) AS FTCEXP_22, + MAX(CASE WHEN FTTYPC = '3' THEN FTDTEX ELSE 0 END) AS FTDTEX_22, + COALESCE(to_date(to_char(MAX(CASE WHEN FTTYPC = '3' THEN FTDTEX ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS FTDTEX_22_date, + MAX(CASE WHEN FTTYPC = '3' THEN FTNBOR ELSE 0 END) AS FTNBOR_22, + SUM(CASE WHEN FTTYPC = '3' AND FTCCLH = '1' THEN FTMTFA ELSE 0 END) AS FTMTFA_22_C, + SUM(CASE WHEN FTTYPC = '3' AND FTCCLH = '2' THEN FTMTFA ELSE 0 END) AS FTMTFA_22_H, + SUM(CASE WHEN FTTYPC = '3' AND FTCCLH = '1' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_22_C, + SUM(CASE WHEN FTTYPC = '3' AND FTCCLH = '2' THEN FTMTRG + FTMTRM + FTMTOD ELSE 0 END) AS FTMTRG_22_H + + FROM prod_shs.[ACTIVITESCHEMA]h_FTP01H + JOIN w_ADP01_factures_modifiees w_ADP01 ON (FTDOSS = w_ADDOSS AND FTDCPL = w_ADDCPL AND w_CODENV = 'H') + + GROUP BY 1; + + + ALTER TABLE w_FTP01_GROUP ADD CONSTRAINT w_FTP01_GROUP_pkey PRIMARY KEY(w_ADDOSSDCPL); + + + DROP TABLE IF EXISTS w_MCP01_GROUP; + CREATE TEMP TABLE w_MCP01_GROUP AS + SELECT + w_ADDOSSDCPL, + COALESCE(to_date(to_char(MAX(CASE WHEN MCCPTE = 41110000 OR MCCPTE = 41910000 THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_0_C_date, + COALESCE(to_date(to_char(MAX(CASE WHEN MCCPTE = 41210000 OR MCCPTE = 41920000 THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_0_H_date, + COALESCE(to_date(to_char(MAX(CASE WHEN (MCCPTE BETWEEN 41110001 AND 41111999) OR (MCCPTE BETWEEN 41113000 AND 41114999) THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_1_C_date , + COALESCE(to_date(to_char(MAX(CASE WHEN (MCCPTE BETWEEN 41210001 AND 41211999) OR (MCCPTE BETWEEN 41213000 AND 41214999) THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_1_H_date , + COALESCE(to_date(to_char(MAX(CASE WHEN (MCCPTE BETWEEN 41112001 AND 41112999) OR (MCCPTE BETWEEN 41115000 AND 41119999) THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_2_C_date , + COALESCE(to_date(to_char(MAX(CASE WHEN (MCCPTE BETWEEN 41212001 AND 41212999) OR (MCCPTE BETWEEN 41215000 AND 41219999) THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_2_H_date + FROM prod_shs.[ACTIVITESCHEMA]_MCP01ACTI + JOIN w_ADP01_factures_modifiees w_ADP01 ON (MCDOSA = w_ADDOSS_A AND MCDCPA = w_ADDCPL_A AND w_CODENV = '') + WHERE ((MCCPTE BETWEEN 41110000 AND 41119999) OR (MCCPTE BETWEEN 41210000 AND 41219999) OR (MCCPTE BETWEEN 41910000 AND 41920000)) AND MCDOSA != '' AND MCDOSA <> '00000000' AND MCCJAL >= 100 + + GROUP BY 1; + + + + INSERT INTO w_MCP01_GROUP + SELECT + w_ADDOSSDCPL, + COALESCE(to_date(to_char(MAX(CASE WHEN MCCPTE = 41110000 OR MCCPTE = 41910000 THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_0_C_date, + COALESCE(to_date(to_char(MAX(CASE WHEN MCCPTE = 41210000 OR MCCPTE = 41920000 THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_0_H_date, + COALESCE(to_date(to_char(MAX(CASE WHEN (MCCPTE BETWEEN 41110001 AND 41111999) OR (MCCPTE BETWEEN 41113000 AND 41114999) THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_1_C_date , + COALESCE(to_date(to_char(MAX(CASE WHEN (MCCPTE BETWEEN 41210001 AND 41211999) OR (MCCPTE BETWEEN 41213000 AND 41214999) THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_1_H_date , + COALESCE(to_date(to_char(MAX(CASE WHEN (MCCPTE BETWEEN 41112001 AND 41112999) OR (MCCPTE BETWEEN 41115000 AND 41119999) THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_2_C_date , + COALESCE(to_date(to_char(MAX(CASE WHEN (MCCPTE BETWEEN 41212001 AND 41212999) OR (MCCPTE BETWEEN 41215000 AND 41219999) THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_2_H_date + FROM prod_shs.[ACTIVITESCHEMA]p_MCP01ACTIP + JOIN w_ADP01_factures_modifiees w_ADP01 ON (MCDOSA = w_ADDOSS_A AND MCDCPA = w_ADDCPL_A AND w_CODENV = 'P') + WHERE ((MCCPTE BETWEEN 41110000 AND 41119999) OR (MCCPTE BETWEEN 41210000 AND 41219999) OR (MCCPTE BETWEEN 41910000 AND 41920000)) AND MCDOSA != '' AND MCDOSA <> '00000000' AND MCCJAL >= 100 + + GROUP BY 1; + + + + + INSERT INTO w_MCP01_GROUP + SELECT + w_ADDOSSDCPL, + COALESCE(to_date(to_char(MAX(CASE WHEN MCCPTE = 41110000 OR MCCPTE = 41910000 THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_0_C_date, + COALESCE(to_date(to_char(MAX(CASE WHEN MCCPTE = 41210000 OR MCCPTE = 41920000 THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_0_H_date, + COALESCE(to_date(to_char(MAX(CASE WHEN (MCCPTE BETWEEN 41110001 AND 41111999) OR (MCCPTE BETWEEN 41113000 AND 41114999) THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_1_C_date , + COALESCE(to_date(to_char(MAX(CASE WHEN (MCCPTE BETWEEN 41210001 AND 41211999) OR (MCCPTE BETWEEN 41213000 AND 41214999) THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_1_H_date , + COALESCE(to_date(to_char(MAX(CASE WHEN (MCCPTE BETWEEN 41112001 AND 41112999) OR (MCCPTE BETWEEN 41115000 AND 41119999) THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_2_C_date , + COALESCE(to_date(to_char(MAX(CASE WHEN (MCCPTE BETWEEN 41212001 AND 41212999) OR (MCCPTE BETWEEN 41215000 AND 41219999) THEN MCDTEC ELSE 00010101 END),'FM00000000'),'YYYYMMDD'),'00010101') AS MCDTEC_2_H_date + FROM prod_shs.[ACTIVITESCHEMA]h_MCP01ACTIH + JOIN w_ADP01_factures_modifiees w_ADP01 ON (MCDOSA = w_ADDOSS_A AND MCDCPA = w_ADDCPL_A AND w_CODENV = 'H') + WHERE ((MCCPTE BETWEEN 41110000 AND 41119999) OR (MCCPTE BETWEEN 41210000 AND 41219999) OR (MCCPTE BETWEEN 41910000 AND 41920000)) AND MCDOSA != '' AND MCDOSA <> '00000000' AND MCCJAL >= 100 + + GROUP BY 1; + + + + ALTER TABLE w_MCP01_GROUP ADD CONSTRAINT w_MCP01_GROUP_pkey PRIMARY KEY(w_ADDOSSDCPL); + + + DROP TABLE IF EXISTS w_factures; + CREATE TEMP TABLE w_factures AS + SELECT + COALESCE(p_factures.oid,nextval('activite[PX].s_factures'::regclass)) AS oid, + p_sejours.oid AS sejour_id, + w_ADDOL1 AS no_sejour, + w_ADP01.w_ADDOSS, + w_ADP01.w_ADDCPL, + w_ADP01.w_ADDOSSDCPL AS no_facture, + CASE WHEN w_ADADAV = '0' THEN w_ADP01.w_ADDOSSDCPL ELSE substr(w_ADP01.w_ADDOSSDCPL,1,9) || '00' END AS no_facture_reference, + CASE WHEN w_ADADAV = '0' THEN COALESCE(p_factures.oid,0) ELSE 0 END AS facture_reference_id, + ''::text AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id, + w_ADP01.w_ADDTE1_date AS date_debut, + w_ADP01.w_ADDTS1_date AS date_fin, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id, + p_sejours.code_cp_demandee AS code_cp_demandee, + CASE WHEN w_ADADAV IN ('2', '4', '6') THEN '1' WHEN w_ADADAV IN ('1', '3') THEN '2' WHEN w_ADADAV IN ('5') THEN '3' ELSE '0' END AS type_facture, + CASE WHEN w_ADADAV IN ('2', '4', '6') THEN 1::numeric ELSE 0::numeric END AS nb_rejets, + CASE WHEN w_ADPAD5 = '1' THEN '1' WHEN w_ADCFAC = '1' THEN '1' ELSE '0' END AS code_facture, + CASE WHEN w_ADPAD5 = '1' OR w_ADCFAC = '1' THEN CASE WHEN w_ADDTFA_date <> '20991231' THEN w_ADDTFA_date ELSE w_ADDTS1_date END ELSE '20991231' END AS date_facture, + w_ADCJVT AS code_vente, + w_ADAAJV * 100 + w_ADMMJV AS mois_vente, + w_ADDTJV_date AS date_vente, + w_CODENV AS code_cloture, + + CASE WHEN p_sejours.ghs_id > 0 THEN 'GHS' ELSE '' END AS particularite_t2a, + + COALESCE(t_tiers_payant_0.oid,0) AS tiers_payant_0_id, + COALESCE(t_tiers_payant_1.oid,0) AS tiers_payant_1_id, + COALESCE(t_tiers_payant_2.oid,0) AS tiers_payant_2_id, + COALESCE(t_tiers_payant_22.oid,0) AS tiers_payant_22_id, + COALESCE(FTMTFA_0_C + FTMTFA_1_C + FTMTFA_2_C + FTMTFA_22_C,0) AS montant_facture_c, + COALESCE(FTMTFA_0_H + FTMTFA_1_H + FTMTFA_2_H + FTMTFA_22_H,0) AS montant_facture_h, + COALESCE(FTMTFA_0_C,0) AS montant_facture_0_c, + COALESCE(FTMTFA_0_H,0) AS montant_facture_0_h, + COALESCE(FTMTFA_1_C,0) AS montant_facture_1_c, + COALESCE(FTMTFA_1_H,0) AS montant_facture_1_h, + COALESCE(FTMTFA_2_C,0) AS montant_facture_2_c, + COALESCE(FTMTFA_2_H,0) AS montant_facture_2_h, + COALESCE(FTMTFA_22_C,0) AS montant_facture_22_c, + COALESCE(FTMTFA_22_H,0) AS montant_facture_22_h, + COALESCE(FTMTFA_0_C + FTMTFA_1_C + FTMTFA_2_C + FTMTFA_22_C,0) AS montant_comptabilise_c, + COALESCE(FTMTFA_0_H + FTMTFA_1_H + FTMTFA_2_H + FTMTFA_22_H,0) AS montant_comptabilise_h, + COALESCE(FTMTFA_0_C,0) AS montant_comptabilise_0_c, + COALESCE(FTMTFA_0_H,0) AS montant_comptabilise_0_h, + COALESCE(FTMTFA_1_C,0) AS montant_comptabilise_1_c, + COALESCE(FTMTFA_1_H,0) AS montant_comptabilise_1_h, + COALESCE(FTMTFA_2_C,0) AS montant_comptabilise_2_c, + COALESCE(FTMTFA_2_H,0) AS montant_comptabilise_2_h, + COALESCE(FTMTFA_22_C,0) AS montant_comptabilise_22_c, + COALESCE(FTMTFA_22_H,0) AS montant_comptabilise_22_h, + COALESCE(FTMTRG_0_C + FTMTRG_1_C + FTMTRG_2_C + FTMTRG_22_C,0) AS montant_regle_c, + COALESCE(FTMTRG_0_H + FTMTRG_1_H + FTMTRG_2_H + FTMTRG_22_H,0) AS montant_regle_h, + COALESCE(FTMTRG_0_C,0) AS montant_regle_0_c, + COALESCE(FTMTRG_0_H,0) AS montant_regle_0_h, + COALESCE(FTMTRG_1_C,0) AS montant_regle_1_c, + COALESCE(FTMTRG_1_H,0) AS montant_regle_1_h, + COALESCE(FTMTRG_2_C,0) AS montant_regle_2_c, + COALESCE(FTMTRG_2_H,0) AS montant_regle_2_h, + COALESCE(FTMTRG_22_C,0) AS montant_regle_22_c, + COALESCE(FTMTRG_22_H,0) AS montant_regle_22_h, + COALESCE(FTCEXP_0,'0') AS code_expedie_0, + COALESCE(FTCEXP_1,'0') AS code_expedie_1, + COALESCE(FTCEXP_2,'0') AS code_expedie_2, + COALESCE(FTCEXP_22,'0') AS code_expedie_22, + COALESCE(CASE WHEN FTDTEX_1_date > '00010101' THEN FTDTEX_1_date + WHEN FTDTEX_2_date > '00010101' THEN FTDTEX_2_date + WHEN FTDTEX_0_date > '00010101' THEN FTDTEX_0_date + ELSE FTDTEX_2_date END, '00010101') AS date_expedition, + CASE WHEN w_ADDTFA_date <> '20991231' AND COALESCE(FTDTEX_0_date,'20991231') < w_ADDTFA_date THEN w_ADDTFA_date ELSE COALESCE(FTDTEX_0_date,'00010101') END AS date_expedition_0, + COALESCE(FTDTEX_1_date,'00010101') AS date_expedition_1, + COALESCE(FTDTEX_2_date,'00010101') AS date_expedition_2, + COALESCE(FTDTEX_22_date,'00010101') AS date_expedition_22, + COALESCE(FTNBOR_0,0) AS no_bordereau_0, + COALESCE(FTNBOR_1,0) AS no_bordereau_1, + COALESCE(FTNBOR_2,0) AS no_bordereau_2, + COALESCE(FTNBOR_22,0) AS no_bordereau_22, + + COALESCE(GREATEST(MCDTEC_0_C_date, MCDTEC_1_C_date, MCDTEC_2_C_date, MCDTEC_0_H_date, MCDTEC_1_H_date, MCDTEC_2_H_date),'20991231') AS date_solde, + COALESCE(GREATEST(MCDTEC_0_C_date, MCDTEC_1_C_date, MCDTEC_2_C_date),'20991231') AS date_solde_c, + COALESCE(GREATEST(MCDTEC_0_H_date, MCDTEC_1_H_date, MCDTEC_2_H_date),'20991231') AS date_solde_h, + COALESCE(MCDTEC_0_C_date,'20991231') AS date_solde_0_c, + COALESCE(MCDTEC_0_H_date,'20991231') AS date_solde_0_h, + COALESCE(MCDTEC_1_C_date,'20991231') AS date_solde_1_c, + COALESCE(MCDTEC_1_H_date,'20991231') AS date_solde_1_h, + COALESCE(MCDTEC_2_C_date,'20991231') AS date_solde_2_c, + COALESCE(MCDTEC_2_H_date,'20991231') AS date_solde_2_h, + COALESCE(MCDTEC_2_C_date,'20991231') AS date_solde_22_c, + COALESCE(MCDTEC_2_H_date,'20991231') AS date_solde_22_h, + + + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + + '20991231'::date AS date_solde_reference, + '20991231'::date AS date_solde_reference_c, + '20991231'::date AS date_solde_reference_h, + '20991231'::date AS date_solde_reference_0_c, + '20991231'::date AS date_solde_reference_1_c, + '20991231'::date AS date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + '20991231'::date AS date_solde_reference_0_h, + '20991231'::date AS date_solde_reference_1_h, + '20991231'::date AS date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h, + + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + + + '20991231'::date AS date_encours, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_c + + FROM w_ADP01_factures_modifiees w_ADP01 + JOIN activite[PX].p_sejours ON w_ADP01.w_ADDOL1 = p_sejours.no_sejour + LEFT JOIN w_FTP01_GROUP ON (w_FTP01_GROUP.w_ADDOSSDCPL = w_ADP01.w_ADDOSSDCPL) + LEFt JOIN w_MCP01_GROUP ON (w_MCP01_GROUP.w_ADDOSSDCPL = w_ADP01.w_ADDOSSDCPL) + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_0 ON '0000' = t_tiers_payant_0.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_1 ON FTCCAI_1 = t_tiers_payant_1.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON FTCCAI_2 = t_tiers_payant_2.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_22 ON FTCCAI_22 = t_tiers_payant_22.code_original + LEFT JOIN activite[PX].p_factures ON w_ADP01.w_ADDOSSDCPL = p_factures.no_facture; + + ALTER TABLE w_factures ADD CONSTRAINT w_factures_pkey PRIMARY KEY(no_facture); + + CREATE INDEX w_factures_i1 + ON w_factures + USING btree + (w_ADDOSS); + + CREATE INDEX w_factures_i2 + ON w_factures + USING btree + (no_facture_reference); + + DROP TABLE IF EXISTS w_factures_od_avoir; + CREATE TEMP TABLE w_factures_od_avoir AS + SELECT + oid AS facture_od_avoir_id, + no_facture AS no_facture_od_avoir, + ''::text AS no_facture, + 0::bigint AS facture_id, + w_ADDOSS, + w_ADDCPL, + montant_facture_c, + montant_facture_0_c, + montant_facture_1_c, + montant_facture_2_c, + montant_facture_22_c, + montant_facture_h, + montant_facture_0_h, + montant_facture_1_h, + montant_facture_2_h, + montant_facture_22_h + FROM w_factures + WHERE type_facture = '1'; + + ALTER TABLE w_factures_od_avoir ADD CONSTRAINT w_factures_od_avoir_od_pkey PRIMARY KEY(no_facture_od_avoir); + + CREATE INDEX w_factures_od_avoir_i1 + ON w_factures_od_avoir + USING btree + (w_ADDOSS); + + UPDATE w_factures_od_avoir SET no_facture = w_factures.no_facture, facture_id = w_factures.oid + FROM w_factures + WHERE + w_factures_od_avoir.w_ADDOSS = w_factures.w_ADDOSS AND w_factures_od_avoir.w_ADDCPL = w_factures.w_ADDCPL + 1 AND + w_factures_od_avoir.montant_facture_c = 0 - w_factures.montant_facture_c AND + w_factures_od_avoir.montant_facture_0_c = 0 - w_factures.montant_facture_0_c AND + w_factures_od_avoir.montant_facture_1_c = 0 - w_factures.montant_facture_1_c AND + w_factures_od_avoir.montant_facture_2_c = 0 - w_factures.montant_facture_2_c AND + w_factures_od_avoir.montant_facture_22_c = 0 - w_factures.montant_facture_22_c AND + w_factures_od_avoir.montant_facture_h = 0 - w_factures.montant_facture_h AND + w_factures_od_avoir.montant_facture_0_h = 0 - w_factures.montant_facture_0_h AND + w_factures_od_avoir.montant_facture_1_h = 0 - w_factures.montant_facture_1_h AND + w_factures_od_avoir.montant_facture_2_h = 0 - w_factures.montant_facture_2_h AND + w_factures_od_avoir.montant_facture_22_h = 0 - w_factures.montant_facture_22_h; + + UPDATE w_factures SET + type_facture = 'X' , + no_facture_od_avoir = w_factures_od_avoir.no_facture_od_avoir, + facture_od_avoir_id = w_factures_od_avoir.facture_od_avoir_id + FROM w_factures_od_avoir + WHERE w_factures.no_facture = w_factures_od_avoir.no_facture AND w_factures_od_avoir.no_facture <> '' AND w_factures_od_avoir.no_facture_od_avoir <> ''; + + UPDATE w_factures SET + no_facture_od_avoir = w_factures_od_avoir.no_facture, + facture_od_avoir_id = w_factures_od_avoir.facture_id + FROM w_factures_od_avoir + WHERE w_factures.no_facture = w_factures_od_avoir.no_facture_od_avoir AND w_factures_od_avoir.no_facture <> '' AND w_factures_od_avoir.no_facture_od_avoir <> ''; + + + DROP TABLE IF EXISTS w_factures_references; + CREATE TEMP TABLE w_factures_references AS + SELECT w_ADDOSS, COALESCE(MIN(CASE WHEN type_facture NOT IN ('X', '1') THEN no_facture ELSE NULL END), MIN(no_facture)) AS no_facture_reference + FROM w_factures + GROUP BY 1; + + + UPDATE w_factures SET + no_facture_reference = w_factures_references.no_facture_reference, + facture_reference_id = 0 + FROM w_factures_references + WHERE w_factures.w_ADDOSS = w_factures_references.w_ADDOSS AND + w_factures.no_facture_reference <> w_factures_references.no_facture_reference; + + UPDATE w_factures SET + type_facture = '0' + WHERE type_facture <> '0' AND no_facture = no_facture_reference; + + DROP TABLE IF EXISTS w_factures_references_soldes; + CREATE TEMP TABLE w_factures_references_soldes AS + SELECT + no_facture_reference, + MAX(date_solde) AS date_solde_reference, + MAX(date_solde_c) AS date_solde_reference_c, + MAX(date_solde_h) AS date_solde_reference_h, + MAX(date_solde_0_c) AS date_solde_reference_0_c, + MAX(date_solde_0_h) AS date_solde_reference_0_h, + MAX(date_solde_1_c) AS date_solde_reference_1_c, + MAX(date_solde_1_h) AS date_solde_reference_1_h, + MAX(date_solde_2_c) AS date_solde_reference_2_c, + MAX(date_solde_2_h) AS date_solde_reference_2_h, + MAX(date_solde_22_c) AS date_solde_reference_22_c, + MAX(date_solde_22_h) AS date_solde_reference_22_h + FROM w_factures + GROUP BY no_facture_reference; + + ALTER TABLE w_factures_references_soldes ADD CONSTRAINT w_factures_references_soldes_pkey PRIMARY KEY(no_facture_reference); + + + UPDATE w_factures + SET facture_reference_id = w_factures_references.oid + FROM w_factures w_factures_references + WHERE w_factures.no_facture_reference = w_factures_references.no_facture + AND w_factures.facture_reference_id <> w_factures_references.oid; + + UPDATE w_factures + SET facture_od_avoir_id = w_factures_od_avoir.oid + FROM w_factures w_factures_od_avoir + WHERE w_factures.no_facture_od_avoir = w_factures_od_avoir.no_facture + AND w_factures.facture_od_avoir_id <> w_factures_od_avoir.oid; + + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_14'); + + DELETE FROM activite[PX].p_factures WHERE no_facture IN (SELECT w_ADDOSSDCPL FROM w_ADP01_factures_modifiees); + + INSERT INTO activite[PX].p_factures ( + oid, + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + type_facture, + nb_rejets, + code_facture, + date_facture, + code_vente, + mois_vente, + date_vente, + code_cloture, + + particularite_t2a, + + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + + + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + + date_solde_reference, + date_solde_reference_c, + date_solde_reference_h, + date_solde_reference_0_c, + date_solde_reference_1_c, + date_solde_reference_2_c, + date_solde_reference_22_c, + date_solde_reference_0_h, + date_solde_reference_1_h, + date_solde_reference_2_h, + date_solde_reference_22_h, + + delai_facture, + delai_solde, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + + + date_encours, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_c + + ) + + SELECT + oid, + sejour_id, + no_sejour, + no_facture, + w_factures.no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + type_facture, + nb_rejets, + code_facture, + date_facture, + code_vente, + mois_vente, + date_vente, + code_cloture, + + particularite_t2a, + + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + CASE WHEN date_expedition <> '00010101' THEN date_expedition ELSE '20991231' END, + CASE WHEN date_expedition_0 <> '00010101' THEN date_expedition_0 ELSE '20991231' END, + CASE WHEN date_expedition_1 <> '00010101' THEN date_expedition_1 ELSE '20991231' END, + CASE WHEN date_expedition_2 <> '00010101' THEN date_expedition_2 ELSE '20991231' END, + CASE WHEN date_expedition_22 <> '00010101' THEN date_expedition_22 ELSE '20991231' END, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + + CASE WHEN date_solde <> '00010101' THEN date_solde ELSE '20991231' END, + CASE WHEN date_solde_c <> '00010101' THEN date_solde_c ELSE '20991231' END, + CASE WHEN date_solde_h <> '00010101' THEN date_solde_h ELSE '20991231' END, + CASE WHEN date_solde_0_c <> '00010101' THEN date_solde_0_c ELSE '20991231' END, + CASE WHEN date_solde_0_h <> '00010101' THEN date_solde_0_h ELSE '20991231' END, + CASE WHEN date_solde_1_c <> '00010101' THEN date_solde_1_c ELSE '20991231' END, + CASE WHEN date_solde_1_h <> '00010101' THEN date_solde_1_h ELSE '20991231' END, + CASE WHEN date_solde_2_c <> '00010101' THEN date_solde_2_c ELSE '20991231' END, + CASE WHEN date_solde_2_h <> '00010101' THEN date_solde_2_h ELSE '20991231' END, + CASE WHEN date_solde_22_c <> '00010101' THEN date_solde_22_c ELSE '20991231' END, + CASE WHEN date_solde_22_h <> '00010101' THEN date_solde_22_h ELSE '20991231' END, + + + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + + CASE WHEN w_factures_references_soldes.date_solde_reference <> '00010101' THEN w_factures_references_soldes.date_solde_reference ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_c <> '00010101' THEN w_factures_references_soldes.date_solde_reference_c ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_h <> '00010101' THEN w_factures_references_soldes.date_solde_reference_h ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_0_c <> '00010101' THEN w_factures_references_soldes.date_solde_reference_0_c ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_1_c <> '00010101' THEN w_factures_references_soldes.date_solde_reference_1_c ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_2_c <> '00010101' THEN w_factures_references_soldes.date_solde_reference_2_c ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_22_c <> '00010101' THEN w_factures_references_soldes.date_solde_reference_22_c ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_0_h <> '00010101' THEN w_factures_references_soldes.date_solde_reference_0_h ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_1_h <> '00010101' THEN w_factures_references_soldes.date_solde_reference_1_h ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_2_h <> '00010101' THEN w_factures_references_soldes.date_solde_reference_2_h ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_22_h <> '00010101' THEN w_factures_references_soldes.date_solde_reference_22_h ELSE '20991231' END, + + delai_facture, + delai_solde, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + + date_encours, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_c + + FROM w_factures + JOIN w_factures_references_soldes ON w_factures.no_facture_reference = w_factures_references_soldes.no_facture_reference + WHERE oid NOT IN (SELECT oid FROM activite[PX].p_factures); + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_14'); + + + + + + + + -- Suppression tables de travail + + DROP TABLE IF EXISTS w_FTP01_GROUP; + DROP TABLE IF EXISTS w_MCP01_GROUP; + DROP TABLE IF EXISTS w_factures; + ]]> + + + + ACNBRE + ; + + -- + DROP TABLE IF EXISTS w_ACP01; + CREATE TEMP TABLE w_ACP01 AS + SELECT + w_ADDOSSDCPL, + ACDTA1, + COALESCE(to_date(to_char(ACDTA1,'FM00000000'),'YYYYMMDD'), w_ADDTE1_date) AS ACDTA1_date, + COALESCE(to_date(to_char(CASE WHEN ACDTA9 >= ACDTA1 THEN ACDTA9 ELSE ACDTA1 END,'FM00000000'),'YYYYMMDD'), w_ADDTS1_date) AS ACDTA9_date, + w_ADCSER AS ACCSER, + w_ADACTI AS ACACTI, + w_ADETAG AS ACETAG, + w_ADCHLT AS ACCHLT, + substr(to_char(ACRUPR,'0000'),3,3) AS ACRUPR, + ACCCLE, + ACCLPP, + w_ADCSER || '|' || w_ADACTI || '|' || w_ADETAG || '|' || w_ADCHLT || '|' || ACCLPP || '|' || ACCCLE || '|' || substr(to_char(ACRUPR,'0000'),3,3) AS key, + CASE WHEN w_ADADAV IN ('2', '4', '6') AND ACNBRE > 0 THEN 0 - ACNBRE ELSE ACNBRE END AS ACNBRE, + CASE WHEN ACCOE1 <> 0 THEN ACCOE1 ELSE 1 END AS ACCOE1, + ACPRUA + FROM prod_shs.[ACTIVITESCHEMA]_ACP01 + JOIN w_ADP01 ON (ACDOSS = w_ADDOSS AND ACDCPL = w_ADDCPL AND W_ADCFAC <> '1' AND w_CODENV = '') + WHERE ACCCLH = '1' AND ACCANN = '1'; + + + UPDATE w_ACP01 SET ACPRUA = TRPRUE + FROM w_TRP01 + WHERE ACCSER = TRCSER AND ACRUPR = TRCRUB AND ACPRUA = 0 AND ACDTA1 BETWEEN TRDTT1 AND TRDTT9; + + + DROP TABLE IF EXISTS w_ACP01_keys; + CREATE TEMP TABLE w_ACP01_keys AS + SELECT + key, + ACCSER, + ACACTI, + ACETAG, + ACCHLT, + ACCCLE, + ACCLPP, + ACRUPR, + 0::bigint AS rubrique_facturation_id, + ''::text AS prestation_code, + 0::bigint AS prestation_id, + 0::bigint AS lieu_id, + 0::bigint AS ucd_id, + 0::bigint AS lpp_id + FROM w_ACP01 + GROUP BY 1,2,3,4,5,6,7,8; + + UPDATE w_ACP01_keys SET prestation_code = 'GHS' WHERE ACCCLE = 'GHS'; + + UPDATE w_ACP01_keys SET prestation_code = 'EXH' WHERE ACCCLE = 'EXH'; + + + UPDATE w_ACP01_keys + SET prestation_code = CASE WHEN TRPRST <> '' THEN TRPRST ELSE TRPRSA END + FROM prod_shs.[ACTIVITESCHEMA]_TRP01 + WHERE prestation_code = '' AND TRCENR = 'A51' AND TRSUJT = '' AND ACCSER = TRCSER AND ACRUPR = TRCRUB ; + + + DROP TABLE IF EXISTS w_TRP01; + CREATE TEMP TABLE w_TRP01 AS + SELECT TRCRUB, + CASE WHEN MAX(TRPRST) <> '' THEN MAX(TRPRST) ELSE MAX(TRPRSA) END AS TRPRST + FROM prod_shs.[ACTIVITESCHEMA]_TRP01 + WHERE TRCENR = 'A51' AND TRSUJT = '' AND (TRPRST <> '' OR TRPRSA <> '') + GROUP BY 1; + + UPDATE w_ACP01_keys + SET prestation_code = TRPRST + FROM w_TRP01 + WHERE prestation_code = '' AND ACRUPR = TRCRUB ; + + UPDATE w_ACP01_keys SET prestation_code = 'NOEMIE' WHERE prestation_code = '' AND ACRUPR = '998'; + + UPDATE w_ACP01_keys SET prestation_code = 'DIV' WHERE prestation_code = ''; + + ALTER TABLE w_ACP01_keys ADD CONSTRAINT w_ACP01_keys_pkey PRIMARY KEY(key); + + INSERT INTO activite[PX].t_lieux(code_original_1, code_original_2, code_original_3, code_original_4) + SELECT ACCSER, ACACTI, ACETAG, ACETAG || '|' || ACCHLT + FROM w_ACP01_keys + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = ACCSER AND + code_original_2 = ACACTI AND + code_original_3 = ACETAG AND + code_original_4 = ACETAG || '|' || ACCHLT + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court, clinique_honoraire) + SELECT prestation_code, prestation_code, prestation_code, prestation_code, '' + FROM w_ACP01_keys + WHERE prestation_code NOT IN (SELECT code FROM activite.t_prestations) + GROUP BY prestation_code + ORDER BY prestation_code; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT ACRUPR, ACRUPR, ACRUPR, ACRUPR + FROM w_ACP01_keys + WHERE ACRUPR NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation) + GROUP BY ACRUPR + ORDER BY ACRUPR; + + UPDATE w_ACP01_keys SET prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE prestation_code = t_prestations.code; + + UPDATE w_ACP01_keys SET rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + WHERE ACRUPR = t_rubriques_facturation.code_original; + + UPDATE w_ACP01_keys + set ucd_id = t_ucd.oid + FROM base.t_ucd + WHERE ACCLPP <> '' AND t_ucd.code = ACCLPP; + + UPDATE w_ACP01_keys + set lpp_id = t_lpp.oid + FROM base.t_lpp + WHERE ACCLPP <> '' AND t_lpp.code = ACCLPP; + + + UPDATE w_ACP01_keys SET lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = ACCSER AND + code_original_2 = ACACTI AND + code_original_3 = ACETAG AND + code_original_4 = ACETAG || '|' || ACCHLT; + + + DROP TABLE IF EXISTS w_factures_lignes_non_facturees_c; + CREATE TEMP TABLE w_factures_lignes_non_facturees_c AS + SELECT + p_factures.oid AS facture_id, + w_ADDOSSDCPL AS no_facture, + ACDTA1_date AS date_debut, + ACDTA9_date AS date_fin, + ACNBRE AS nb_rubrique, + ACCOE1 AS coefficient, + w_ACP01_keys.rubrique_facturation_id AS rubrique_facturation_id, + w_ACP01_keys.prestation_id AS prestation_id, + ACPRUA AS prix_unitaire, + w_ACP01_keys.lieu_id AS lieu_id, + w_ACP01_keys.ucd_id, + w_ACP01_keys.lpp_id + FROM w_ACP01 + JOIN activite[PX].p_factures ON w_ADDOSSDCPL = p_factures.no_facture + JOIN w_ACP01_keys ON w_ACP01.key = w_ACP01_keys.key; + + DELETE FROM activite[PX].p_factures_lignes_non_facturees_c WHERE no_facture IN (SELECT no_facture FROM w_factures_lignes_non_facturees_c GROUP BY 1); + DELETE FROM activite[PX].p_factures_lignes_non_facturees_c WHERE no_facture IN (SELECT no_facture FROM activite[PX].p_factures WHERE code_facture >= '1' GROUP BY 1); + + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id, + ucd_id, + lpp_id + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id, + ucd_id, + lpp_id + FROM w_factures_lignes_non_facturees_c; + + + -- Suppression tables de travail + + DROP TABLE IF EXISTS w_TRP01; + DROP TABLE IF EXISTS w_ACP01; + DROP TABLE IF EXISTS w_ACP01_keys; + DROP TABLE IF EXISTS w_factures_lignes_non_facturees_c; + + + ]]> + + + + = MFDTA1 THEN MFDTA9 ELSE MFDTA1 END,'FM00000000'),'YYYYMMDD'), w_ADDTS1_date) AS MFDTA9_date, + MFCSER, + MFACTI, + MFETAG, + MFCHLT, + substr(to_char(MFRUPR,'0000'),3,3) AS MFRUPR, + substr(to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'0000'),3,3) AS MFCPRC, + MFCCLE, + MFCGHS, + MFCLPP, + MFCGHS || '|' || MFCLPP || '|' || MFCSER || '|' || MFACTI || '|' || MFETAG || '|' || MFCHLT || '|' || MFCCLE || '|' || substr(to_char(MFRUPR,'0000'),3,3) || '|' || substr(to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'0000'),3,3) AS key, + CASE WHEN MFMFA1 + MFMFA2 + MFMFA3 + MFMFAM < 0 AND MFNBRE > 0 THEN 0 - MFNBRE ELSE MFNBRE END AS MFNBRE, + CASE WHEN MFCOE1 <> 0 THEN MFCOE1 ELSE 1 END AS MFCOE1, + CASE WHEN MFCOET <> 0 THEN MFCOET ELSE 1 END AS MFCOET, + ABS(MFPRUA) AS MFPRUA, + MFTFAM, + MFTFA1, + MFTFA2, + MFTFA3, + MFMFAM, + MFMFA1, + MFMFA2, + MFMFA3, + CASE WHEN w_ADPAD5 = '1' THEN MFMCAM ELSE MFMFAM END AS MFMCAM, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA1 ELSE MFMFA1 END AS MFMCA1, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA2 ELSE MFMFA2 END AS MFMCA2, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA3 ELSE MFMFA3 END AS MFMCA3 + FROM prod_shs.[ACTIVITESCHEMA]_MFP01CLI + JOIN w_ADP01_factures_modifiees ON (MFDOSS = w_ADDOSS AND MFDCPL = w_ADDCPL AND W_ADCFAC = '1' AND w_CODENV = '') + ; + + INSERT INTO w_MFP01 + SELECT + w_ADDOSSDCPL, + + COALESCE(to_date(to_char(MFDTA1,'FM00000000'),'YYYYMMDD'), w_ADDTE1_date) AS MFDTA1_date, + COALESCE(to_date(to_char(CASE WHEN MFDTA9 >= MFDTA1 THEN MFDTA9 ELSE MFDTA1 END,'FM00000000'),'YYYYMMDD'), w_ADDTS1_date) AS MFDTA9_date, + MFCSER, + MFACTI, + MFETAG, + MFCHLT, + substr(to_char(MFRUPR,'0000'),3,3) AS MFRUPR, + substr(to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'0000'),3,3) AS MFCPRC, + MFCCLE, + MFCGHS, + MFCLPP, + MFCGHS || '|' || MFCLPP || '|' || MFCSER || '|' || MFACTI || '|' || MFETAG || '|' || MFCHLT || '|' || MFCCLE || '|' || substr(to_char(MFRUPR,'0000'),3,3) || '|' || substr(to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'0000'),3,3) AS key, + CASE WHEN MFMFA1 + MFMFA2 + MFMFA3 + MFMFAM < 0 AND MFNBRE > 0 THEN 0 - MFNBRE ELSE MFNBRE END AS MFNBRE, + CASE WHEN MFCOE1 <> 0 THEN MFCOE1 ELSE 1 END AS MFCOE1, + CASE WHEN MFCOET <> 0 THEN MFCOET ELSE 1 END AS MFCOET, + ABS(MFPRUA) AS MFPRUA, + MFTFAM, + MFTFA1, + MFTFA2, + MFTFA3, + MFMFAM, + MFMFA1, + MFMFA2, + MFMFA3, + CASE WHEN w_ADPAD5 = '1' THEN MFMCAM ELSE MFMFAM END AS MFMCAM, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA1 ELSE MFMFA1 END AS MFMCA1, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA2 ELSE MFMFA2 END AS MFMCA2, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA3 ELSE MFMFA3 END AS MFMCA3 + FROM prod_shs.[ACTIVITESCHEMA]p_MFP01CLIP + JOIN w_ADP01_factures_modifiees ON (MFDOSS = w_ADDOSS AND MFDCPL = w_ADDCPL AND W_ADCFAC = '1' AND w_CODENV = 'P') + ; + + + INSERT INTO w_MFP01 + SELECT + w_ADDOSSDCPL, + + COALESCE(to_date(to_char(MFDTA1,'FM00000000'),'YYYYMMDD'), w_ADDTE1_date) AS MFDTA1_date, + COALESCE(to_date(to_char(CASE WHEN MFDTA9 >= MFDTA1 THEN MFDTA9 ELSE MFDTA1 END,'FM00000000'),'YYYYMMDD'), w_ADDTS1_date) AS MFDTA9_date, + MFCSER, + MFACTI, + MFETAG, + MFCHLT, + substr(to_char(MFRUPR,'0000'),3,3) AS MFRUPR, + substr(to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'0000'),3,3) AS MFCPRC, + MFCCLE, + MFCGHS, + MFCLPP, + MFCGHS || '|' || MFCLPP || '|' || MFCSER || '|' || MFACTI || '|' || MFETAG || '|' || MFCHLT || '|' || MFCCLE || '|' || substr(to_char(MFRUPR,'0000'),3,3) || '|' || substr(to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'0000'),3,3) AS key, + CASE WHEN MFMFA1 + MFMFA2 + MFMFA3 + MFMFAM < 0 AND MFNBRE > 0 THEN 0 - MFNBRE ELSE MFNBRE END AS MFNBRE, + CASE WHEN MFCOE1 <> 0 THEN MFCOE1 ELSE 1 END AS MFCOE1, + CASE WHEN MFCOET <> 0 THEN MFCOET ELSE 1 END AS MFCOET, + ABS(MFPRUA) AS MFPRUA, + MFTFAM, + MFTFA1, + MFTFA2, + MFTFA3, + MFMFAM, + MFMFA1, + MFMFA2, + MFMFA3, + CASE WHEN w_ADPAD5 = '1' THEN MFMCAM ELSE MFMFAM END AS MFMCAM, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA1 ELSE MFMFA1 END AS MFMCA1, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA2 ELSE MFMFA2 END AS MFMCA2, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA3 ELSE MFMFA3 END AS MFMCA3 + FROM prod_shs.[ACTIVITESCHEMA]h_MFP01CLIH + JOIN w_ADP01_factures_modifiees ON (MFDOSS = w_ADDOSS AND MFDCPL = w_ADDCPL AND W_ADCFAC = '1' AND w_CODENV = 'H') + ; + + + CREATE INDEX w_MFP01_i1 ON w_MFP01 USING btree (w_ADDOSSDCPL); + + CREATE INDEX w_MFP01_i2 ON w_MFP01 USING btree (key); + + DROP TABLE IF EXISTS w_MFP01_keys; + CREATE TEMP TABLE w_MFP01_keys AS + SELECT + key, + MFCSER, + MFACTI, + MFETAG, + MFCHLT, + MFCCLE, + MFRUPR, + MFCPRC, + MFCGHS, + MFCLPP, + 0::bigint AS rubrique_facturation_id, + 0::bigint AS rubrique_comptabilisation_id, + ''::text AS prestation_code, + 0::bigint AS prestation_id, + 0::bigint AS lieu_id, + 0::bigint AS ghs_id, + ''::text AS compte_produit, + 0::bigint AS compte_produit_id, + 0::bigint AS ucd_id, + 0::bigint AS lpp_id + FROM w_MFP01 + GROUP BY 1,2,3,4,5,6,7,8,9,10; + + UPDATE w_MFP01_keys SET prestation_code = 'GHS' WHERE MFCCLE = 'GHS'; + + UPDATE w_MFP01_keys SET prestation_code = 'EXH' WHERE MFCCLE = 'EXH'; + + + UPDATE w_MFP01_keys + set ghs_id = t_ghs.oid + FROM base.t_ghs + WHERE MFCGHS <> '0000' AND to_char(t_ghs.code,'FM0000') = MFCGHS; + + UPDATE w_MFP01_keys + set ucd_id = t_ucd.oid + FROM base.t_ucd + WHERE MFCLPP <> '' AND t_ucd.code = MFCLPP; + + UPDATE w_MFP01_keys + set lpp_id = t_lpp.oid + FROM base.t_lpp + WHERE MFCLPP <> '' AND t_lpp.code = MFCLPP; + + UPDATE w_MFP01_keys + SET prestation_code = CASE WHEN TRPRST <> '' THEN TRPRST ELSE TRPRSA END + FROM prod_shs.[ACTIVITESCHEMA]_TRP01 + WHERE prestation_code = '' AND TRCENR = 'A51' AND TRSUJT = '' AND MFCSER = TRCSER AND MFRUPR = TRCRUB ; + + + UPDATE w_MFP01_keys + SET compte_produit = TRCPTE + FROM prod_shs.[ACTIVITESCHEMA]_TRP01 + WHERE TRCENR = 'A51' AND TRSUJT = '' AND MFCSER = TRCSER AND MFRUPR = TRCRUB ; + + UPDATE w_MFP01_keys SET prestation_code = 'NOEMIE' WHERE prestation_code = '' AND MFRUPR = '998'; + + + UPDATE w_MFP01_keys SET prestation_code = 'DIV' WHERE prestation_code = ''; + + ALTER TABLE w_MFP01_keys ADD CONSTRAINT w_MFP01_keys_pkey PRIMARY KEY(key); + + INSERT INTO activite[PX].t_lieux(code_original_1, code_original_2, code_original_3, code_original_4) + SELECT MFCSER, MFACTI, MFETAG, MFETAG || '|' || MFCHLT + FROM w_MFP01_keys + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = MFCSER AND + code_original_2 = MFACTI AND + code_original_3 = MFETAG AND + code_original_4 = MFETAG || '|' || MFCHLT + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court, clinique_honoraire) + SELECT prestation_code, prestation_code, prestation_code, prestation_code, '' + FROM w_MFP01_keys + WHERE prestation_code NOT IN (SELECT code FROM activite.t_prestations) + GROUP BY prestation_code + ORDER BY prestation_code; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT MFRUPR, MFRUPR, MFRUPR, MFRUPR + FROM w_MFP01_keys + WHERE MFRUPR NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation) + GROUP BY MFRUPR + ORDER BY MFRUPR; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT MFCPRC, MFCPRC, MFCPRC, MFCPRC + FROM w_MFP01_keys + WHERE MFCPRC NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation) + GROUP BY MFCPRC + ORDER BY MFCPRC; + + UPDATE w_MFP01_keys SET prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE prestation_code = t_prestations.code; + + UPDATE w_MFP01_keys SET rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + WHERE MFRUPR = t_rubriques_facturation.code_original; + + UPDATE w_MFP01_keys SET rubrique_comptabilisation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + WHERE MFCPRC = t_rubriques_facturation.code_original; + + UPDATE w_MFP01_keys SET lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = MFCSER AND + code_original_2 = MFACTI AND + code_original_3 = MFETAG AND + code_original_4 = MFETAG || '|' || MFCHLT; + + + + INSERT INTO activite[PX].t_compte(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_compte); + + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT compte_produit, compte_produit, MAX(COALESCE(PEINT3,compte_produit)), MAX(COALESCE(PEINT3,compte_produit)) + FROM w_MFP01_keys + LEFT JOIN prod_shs.[ACTIVITESCHEMA]_PEP01 ON compte_produit = PECPTE + WHERE compte_produit NOT IN (SELECT code_original FROM activite[PX].t_compte WHERE code_original IS NOT NULL) + GROUP BY 1 + ORDER BY 1; + + + UPDATE w_MFP01_keys SET compte_produit_id = t_compte.oid + FROM activite[PX].t_compte + WHERE compte_produit = t_compte.code_original; + + -- Remplacement des codes dialyse + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'TRANSGHSDXX', + 'Transformation des GHS en Dxx', + '', + 'Transformation des prestations GHS en Dxx selong GHS, la rubrique de facturation prend la valeur du GHS' + WHERE 'TRANSGHSDXX' NOT IN (SELECT code FROM activite.t_divers); + ; + + INSERT INTO activite[PX].t_rubriques_facturation (code_original, code, texte, texte_court) + SELECT t_ghs.code::text, t_ghs.code::text, t_ghs.texte, t_ghs.texte + FROM base.t_ghs + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + WHERE t_ghs.code IN (9602,9603,9604,9605,9617) AND + t_ghs.code::text NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + ; + + INSERT INTO activite[PX].t_rubriques_facturation (code_original, code, texte, texte_court) + SELECT t_prestations.code::text, t_prestations.code::text, t_prestations.texte, t_prestations.texte + FROM activite.t_prestations + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + WHERE (t_prestations.code LIKE 'D1%' OR t_prestations.code LIKE 'D2%') AND + t_prestations.code::text NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + ; + + UPDATE w_MFP01_keys + SET prestation_code = 'D09', rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + WHERE MFCCLE = 'GHS' AND MFCGHS = 9605 AND t_rubriques_facturation.code = '9605'; + + UPDATE w_MFP01_keys + SET prestation_code = 'D10', rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + WHERE MFCCLE = 'GHS' AND MFCGHS = 9617 AND t_rubriques_facturation.code = '9617'; + + UPDATE w_MFP01_keys + SET prestation_code = 'D17', rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + WHERE MFCCLE = 'GHS' AND MFCGHS = 9604 AND t_rubriques_facturation.code = '9604'; + + UPDATE w_MFP01_keys + SET prestation_code = 'D18', rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + WHERE MFCCLE = 'GHS' AND MFCGHS = 9602 AND t_rubriques_facturation.code = '9602'; + + UPDATE w_MFP01_keys + SET prestation_code = 'D19', rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + WHERE MFCCLE = 'GHS' AND MFCGHS = 9603 AND t_rubriques_facturation.code = '9603'; + + UPDATE w_MFP01_keys + SET rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + WHERE MFRUPR IN (188,189) AND prestation_code IN ('D11','D13','D14','D15','D16','D20','D22') AND + t_rubriques_facturation.code_original = prestation_code AND + rubrique_facturation_id <> t_rubriques_facturation.oid; + + + UPDATE activite[PX].p_factures_lignes_non_facturees_c + SET rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite.t_prestations + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = t_prestations.code + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + WHERE prestation_id = t_prestations.oid AND + t_prestations.code IN ('D11','D13','D14','D15','D16','D20','D22') AND + rubrique_facturation_id <> t_rubriques_facturation.oid + ; + + UPDATE w_MFP01_keys SET prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE prestation_code = t_prestations.code AND + w_MFP01_keys.prestation_id IS DISTINCT FROM t_prestations.oid; + + + DROP TABLE IF EXISTS w_factures_lignes_c; + CREATE TEMP TABLE w_factures_lignes_c AS + SELECT + p_factures.oid AS facture_id, + w_MFP01.w_ADDOSSDCPL AS no_facture, + + MFCOE1 AS coefficient, + MFCOET AS coefficient_mco, + w_MFP01.MFCGHS, + w_MFP01_keys.ghs_id, + w_MFP01_keys.rubrique_facturation_id AS rubrique_facturation_id, + w_MFP01_keys.rubrique_comptabilisation_id AS rubrique_comptabilisation_id, + w_MFP01_keys.compte_produit_id AS compte_produit_id, + w_MFP01_keys.prestation_id AS prestation_id, + w_MFP01_keys.lieu_id AS lieu_id, + 1::bigint AS origine_facturation_id, + w_MFP01_keys.ucd_id, + w_MFP01_keys.lpp_id, + + date_trunc('month', MFDTA9_date) AS MFDTA9_month, + MFPRUA AS prix_unitaire, + MFTFAM AS taux_0, + MFTFA1 AS taux_1, + MFTFA2 AS taux_2, + MFTFA3 AS taux_22, + + w_MFP01.MFDTA1_date AS date_debut, + w_MFP01.MFDTA9_date AS date_fin, + w_MFP01.MFNBRE AS nb_rubrique, + CASE WHEN w_MFP01.MFCCLE = 'GHS' AND w_MFP01.MFRUPR = 111 THEN 0 ELSE w_MFP01.MFNBRE END AS nb_prestation, + MFMFAM + MFMFA1 + MFMFA2 + MFMFA3 AS montant_facture, + MFMFAM AS montant_facture_0, + MFMFA1 AS montant_facture_1, + MFMFA2 AS montant_facture_2, + MFMFA3 AS montant_facture_22, + MFMCAM + MFMCA1 + MFMCA2 + MFMCA3 AS montant_comptabilise, + MFMCAM AS montant_comptabilise_0, + MFMCA1 AS montant_comptabilise_1, + MFMCA2 AS montant_comptabilise_2, + MFMCA3 AS montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_1, + 0::numeric AS rubrique_facture_id + FROM w_MFP01 + JOIN activite[PX].p_factures ON w_ADDOSSDCPL = p_factures.no_facture + JOIN w_MFP01_keys ON w_MFP01.key = w_MFP01_keys.key; + + + UPDATE w_factures_lignes_c + SET nb_prestation = CASE WHEN nb_rubrique >=0 THEN 1 ELSE -1 END + FROM + (SELECT no_facture, ghs_id, prestation_id, rubrique_facturation_id, MAX(date_debut) AS date_debut + FROM w_factures_lignes_c + WHERE prestation_id IN (SELECT oid FROM activite.t_prestations WHERE code = 'GHS') AND + rubrique_facturation_id IN (SELECT oid FROM activite[PX].t_rubriques_facturation WHERE code = '111') + GROUP BY 1,2,3,4 + ) subview + WHERE w_factures_lignes_c.no_facture = subview.no_facture AND + w_factures_lignes_c.ghs_id = subview.ghs_id AND + w_factures_lignes_c.prestation_id = subview.prestation_id AND + w_factures_lignes_c.rubrique_facturation_id = subview.rubrique_facturation_id AND + w_factures_lignes_c.date_debut = subview.date_debut ; + + + + -- Supprimer les montants GHS qui chevauchent les EXH + + DROP TABLE IF EXISTS w_factures_exh; + CREATE TEMP TABLE w_factures_exh AS + SELECT no_facture, MIN(w_factures_lignes_c.date_debut) AS date_debut_exh + FROM w_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND t_prestations.code IN ('EXH') + GROUP BY 1; + + + DROP TABLE IF EXISTS w_factures_ghs; + CREATE TEMP TABLE w_factures_ghs AS + SELECT w_factures_lignes_c.no_facture, + MIN(date_debut_exh) AS date_debut_exh, + MAX(CASE WHEN w_factures_lignes_c.date_fin < date_debut_exh THEN date_fin ELSE NULL END) AS date_fin_ghs, + NULL::TID AS ctid_fin_ghs, + SUM(CASE WHEN w_factures_lignes_c.date_fin < date_debut_exh THEN 1 ELSE 0 END) AS nb_rubrique_ghs_ok, + SUM(CASE WHEN w_factures_lignes_c.date_fin >= date_debut_exh THEN 1 ELSE 0 END) AS nb_rubrique_ghs_ko, + SUM(prix_unitaire) AS prix_unitaire_total_ghs, + round(base.cti_division(SUM(montant_facture), SUM(CASE WHEN w_factures_lignes_c.date_fin < date_debut_exh THEN 1 ELSE 0 END * CASE WHEN montant_facture < 0 THEN -1 ELSE 1 END)),2) AS prix_unitaire_ghs, + 0::numeric AS prix_unitaire_ghs_last, + SUM(montant_facture) AS montant_facture_total_ghs, + round(base.cti_division(SUM(montant_facture), SUM(CASE WHEN w_factures_lignes_c.date_fin < date_debut_exh THEN 1 ELSE 0 END )),2) AS montant_facture_ghs, + 0::numeric AS montant_facture_ghs_last, + SUM(montant_facture_0) AS montant_facture_0_total_ghs, + round(base.cti_division(SUM(montant_facture_0), SUM(CASE WHEN w_factures_lignes_c.date_fin < date_debut_exh THEN 1 ELSE 0 END )),2) AS montant_facture_0_ghs, + 0::numeric AS montant_facture_0_ghs_last, + SUM(montant_facture_1) AS montant_facture_1_total_ghs, + round(base.cti_division(SUM(montant_facture_1), SUM(CASE WHEN w_factures_lignes_c.date_fin < date_debut_exh THEN 1 ELSE 0 END )),2) AS montant_facture_1_ghs, + 0::numeric AS montant_facture_1_ghs_last, + SUM(montant_facture_2) AS montant_facture_2_total_ghs, + round(base.cti_division(SUM(montant_facture_2), SUM(CASE WHEN w_factures_lignes_c.date_fin < date_debut_exh THEN 1 ELSE 0 END )),2) AS montant_facture_2_ghs, + 0::numeric AS montant_facture_2_ghs_last, + SUM(montant_facture_22) AS montant_facture_22_total_ghs, + round(base.cti_division(SUM(montant_facture_22), SUM(CASE WHEN w_factures_lignes_c.date_fin < date_debut_exh THEN 1 ELSE 0 END )),2) AS montant_facture_22_ghs, + 0::numeric AS montant_facture_22_ghs_last, + SUM(montant_comptabilise) AS montant_comptabilise_total_ghs, + round(base.cti_division(SUM(montant_comptabilise), SUM(CASE WHEN w_factures_lignes_c.date_fin < date_debut_exh THEN 1 ELSE 0 END )),2) AS montant_comptabilise_ghs, + 0::numeric AS montant_comptabilise_ghs_last, + SUM(montant_comptabilise_0) AS montant_comptabilise_0_total_ghs, + round(base.cti_division(SUM(montant_comptabilise_0), SUM(CASE WHEN w_factures_lignes_c.date_fin < date_debut_exh THEN 1 ELSE 0 END )),2) AS montant_comptabilise_0_ghs, + 0::numeric AS montant_comptabilise_0_ghs_last, + SUM(montant_comptabilise_1) AS montant_comptabilise_1_total_ghs, + round(base.cti_division(SUM(montant_comptabilise_1), SUM(CASE WHEN w_factures_lignes_c.date_fin < date_debut_exh THEN 1 ELSE 0 END )),2) AS montant_comptabilise_1_ghs, + 0::numeric AS montant_comptabilise_1_ghs_last, + SUM(montant_comptabilise_2) AS montant_comptabilise_2_total_ghs, + round(base.cti_division(SUM(montant_comptabilise_2), SUM(CASE WHEN w_factures_lignes_c.date_fin < date_debut_exh THEN 1 ELSE 0 END )),2) AS montant_comptabilise_2_ghs, + 0::numeric AS montant_comptabilise_2_ghs_last, + SUM(montant_comptabilise_22) AS montant_comptabilise_22_total_ghs, + round(base.cti_division(SUM(montant_comptabilise_22), SUM(CASE WHEN w_factures_lignes_c.date_fin < date_debut_exh THEN 1 ELSE 0 END )),2) AS montant_comptabilise_22_ghs, + 0::numeric AS montant_comptabilise_22_ghs_last + FROM w_factures_lignes_c + JOIN w_factures_exh ON w_factures_exh.no_facture = w_factures_lignes_c.no_facture + JOIN activite[PX].t_rubriques_facturation ON rubrique_facturation_id = t_rubriques_facturation.oid AND t_rubriques_facturation.code = '111' + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND t_prestations.code IN ('GHS') + WHERE montant_encours = 0 + GROUP BY 1 + HAVING SUM(CASE WHEN w_factures_lignes_c.date_fin >= date_debut_exh THEN nb_rubrique ELSE 0 END) <> 0; + + + UPDATE w_factures_ghs + SET ctid_fin_ghs = w_factures_lignes_c.CTID + FROM w_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND t_prestations.code IN ('GHS') + JOIN activite[PX].t_rubriques_facturation ON rubrique_facturation_id = t_rubriques_facturation.oid AND t_rubriques_facturation.code = '111' + WHERE w_factures_lignes_c.no_facture = w_factures_ghs.no_facture AND w_factures_lignes_c.date_fin = w_factures_ghs.date_fin_ghs; + + + + + UPDATE w_factures_ghs SET + montant_facture_ghs_last = montant_facture_total_ghs + montant_facture_ghs - nb_rubrique_ghs_ok * montant_facture_ghs, + montant_facture_0_ghs_last = montant_facture_0_total_ghs + montant_facture_0_ghs - nb_rubrique_ghs_ok * montant_facture_0_ghs, + montant_facture_1_ghs_last = montant_facture_1_total_ghs + montant_facture_1_ghs - nb_rubrique_ghs_ok * montant_facture_1_ghs, + montant_facture_2_ghs_last = montant_facture_2_total_ghs + montant_facture_2_ghs - nb_rubrique_ghs_ok * montant_facture_2_ghs, + montant_facture_22_ghs_last = montant_facture_22_total_ghs + montant_facture_22_ghs - nb_rubrique_ghs_ok * montant_facture_22_ghs, + montant_comptabilise_ghs_last = montant_comptabilise_total_ghs + montant_comptabilise_ghs - nb_rubrique_ghs_ok * montant_comptabilise_ghs, + montant_comptabilise_0_ghs_last = montant_comptabilise_0_total_ghs + montant_comptabilise_0_ghs - nb_rubrique_ghs_ok * montant_comptabilise_0_ghs, + montant_comptabilise_1_ghs_last = montant_comptabilise_1_total_ghs + montant_comptabilise_1_ghs - nb_rubrique_ghs_ok * montant_comptabilise_1_ghs, + montant_comptabilise_2_ghs_last = montant_comptabilise_2_total_ghs + montant_comptabilise_2_ghs - nb_rubrique_ghs_ok * montant_comptabilise_2_ghs, + montant_comptabilise_22_ghs_last = montant_comptabilise_22_total_ghs + montant_comptabilise_22_ghs - nb_rubrique_ghs_ok * montant_comptabilise_22_ghs; + + + UPDATE w_factures_lignes_c SET + nb_prestation = CASE WHEN w_factures_lignes_c.CTID = ctid_fin_ghs THEN 1 ELSE 0 END, + prix_unitaire = CASE WHEN date_fin > date_fin_ghs THEN 0 ELSE prix_unitaire_total_ghs END, + montant_facture = CASE WHEN date_fin > date_fin_ghs THEN 0 WHEN w_factures_lignes_c.CTID = ctid_fin_ghs THEN montant_facture_ghs_last ELSE montant_facture_ghs END, + montant_facture_0 = CASE WHEN date_fin > date_fin_ghs THEN 0 WHEN w_factures_lignes_c.CTID = ctid_fin_ghs THEN montant_facture_0_ghs_last ELSE montant_facture_0_ghs END, + montant_facture_1 = CASE WHEN date_fin > date_fin_ghs THEN 0 WHEN w_factures_lignes_c.CTID = ctid_fin_ghs THEN montant_facture_1_ghs_last ELSE montant_facture_1_ghs END, + montant_facture_2 = CASE WHEN date_fin > date_fin_ghs THEN 0 WHEN w_factures_lignes_c.CTID = ctid_fin_ghs THEN montant_facture_2_ghs_last ELSE montant_facture_2_ghs END, + montant_facture_22 = CASE WHEN date_fin > date_fin_ghs THEN 0 WHEN w_factures_lignes_c.CTID = ctid_fin_ghs THEN montant_facture_22_ghs_last ELSE montant_facture_22_ghs END, + montant_comptabilise = CASE WHEN date_fin > date_fin_ghs THEN 0 WHEN w_factures_lignes_c.CTID = ctid_fin_ghs THEN montant_comptabilise_ghs_last ELSE montant_comptabilise_ghs END, + montant_comptabilise_0 = CASE WHEN date_fin > date_fin_ghs THEN 0 WHEN w_factures_lignes_c.CTID = ctid_fin_ghs THEN montant_comptabilise_0_ghs_last ELSE montant_comptabilise_0_ghs END, + montant_comptabilise_1 = CASE WHEN date_fin > date_fin_ghs THEN 0 WHEN w_factures_lignes_c.CTID = ctid_fin_ghs THEN montant_comptabilise_1_ghs_last ELSE montant_comptabilise_1_ghs END, + montant_comptabilise_2 = CASE WHEN date_fin > date_fin_ghs THEN 0 WHEN w_factures_lignes_c.CTID = ctid_fin_ghs THEN montant_comptabilise_2_ghs_last ELSE montant_comptabilise_2_ghs END, + montant_comptabilise_22 = CASE WHEN date_fin > date_fin_ghs THEN 0 WHEN w_factures_lignes_c.CTID = ctid_fin_ghs THEN montant_comptabilise_22_ghs_last ELSE montant_comptabilise_22_ghs END + FROM w_factures_ghs, activite.t_prestations, activite[PX].t_rubriques_facturation + WHERE w_factures_ghs.no_facture = w_factures_lignes_c.no_facture AND + prestation_id = t_prestations.oid AND t_prestations.code IN ('GHS') AND + rubrique_facturation_id = t_rubriques_facturation.oid AND t_rubriques_facturation.code = '111'; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_c'); + + -- Valider les lignes + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_8'); + + DELETE FROM activite[PX].p_factures_lignes_c WHERE no_facture IN (SELECT w_ADDOSSDCPL FROM w_ADP01_factures_modifiees); + + INSERT INTO activite[PX].p_factures_lignes_c ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + ucd_id, + lpp_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1, + origine_facturation_id + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + ucd_id, + lpp_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1, + origine_facturation_id + FROM w_factures_lignes_c; + + + + + -- Mise à jour factures et séjour (GHS selon facturation) + DROP TABLE IF EXISTS w_MFP01_ghs; + CREATE TEMP TABLE w_MFP01_ghs AS + SELECT + p_factures.oid AS facture_id, + w_MFP01.w_ADDOSSDCPL AS no_facture, + MAX(CASE WHEN w_MFP01.MFCGHS < '5800' OR w_MFP01.MFCGHS > '5836' THEN w_MFP01_keys.ghs_id ELSE 0 END) AS ghs_id + FROM w_MFP01 + JOIN activite[PX].p_factures ON w_ADDOSSDCPL = p_factures.no_facture AND p_factures.ghs_id = 0 + JOIN w_MFP01_keys ON w_MFP01.key = w_MFP01_keys.key + WHERE w_MFP01.MFCCLE = 'GHS' + GROUP BY 1,2; + + CREATE INDEX w_MFP01_ghs_i1 ON w_MFP01_ghs USING btree (no_facture); + + UPDATE activite[PX].p_factures + SET ghs_id = w_MFP01_ghs.ghs_id + FROM w_MFP01_ghs + WHERE p_factures.ghs_id = 0 AND + w_MFP01_ghs.no_facture = p_factures.no_facture AND + w_MFP01_ghs.ghs_id <> 0; + + UPDATE activite[PX].p_sejours + SET ghs_id = p_factures.ghs_id + FROM activite[PX].p_factures + WHERE p_sejours.ghs_id = 0 AND + p_factures.no_sejour = p_sejours.no_sejour AND + p_factures.type_facture = '0' AND + p_factures.ghs_id <> 0; + + + + + + -- Eclatement des supplements par jour + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_2'); + + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + CTID AS from_CTID, * + FROM activite[PX].p_factures_lignes_c + WHERE prestation_id IN (SELECT oid FROM activite.t_prestations + WHERE code IN ('PJ', 'FJ', 'PHJ', 'SSM', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + AND (nb_prestation > 1 or nb_prestation < -1); + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + from_CTID, + no_facture, + date AS date_debut, + date AS date_fin, + CASE WHEN nb_rubrique < 0 THEN -1 ELSE 1 END AS nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + ucd_id, + lpp_id, + round(montant_facture / ABS(nb_prestation),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_prestation),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_prestation),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_prestation),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_prestation),2) AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + round(montant_comptabilise / ABS(nb_prestation),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_prestation),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_prestation),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_prestation),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_prestation),2) AS montant_comptabilise_22, + round(montant_encours / ABS(nb_prestation),2) AS montant_encours, + round(montant_encours_0 / ABS(nb_prestation),2) AS montant_encours_0, + round(montant_encours_1 / ABS(nb_prestation),2) AS montant_encours_1, + round(montant_encours_2 / ABS(nb_prestation),2) AS montant_encours_2, + round(montant_encours_22 / ABS(nb_prestation),2) AS montant_encours_22, + round(montant_facture_actes_inclus_dans_sejour / ABS(nb_prestation),2) AS montant_facture_actes_inclus_dans_sejour, + round(montant_facture_0_actes_inclus_dans_sejour / ABS(nb_prestation),2) AS montant_facture_0_actes_inclus_dans_sejour, + round(montant_facture_1_actes_inclus_dans_sejour / ABS(nb_prestation),2) AS montant_facture_1_actes_inclus_dans_sejour, + round(montant_facture_2_actes_inclus_dans_sejour / ABS(nb_prestation),2) AS montant_facture_2_actes_inclus_dans_sejour, + round(montant_facture_22_actes_inclus_dans_sejour / ABS(nb_prestation),2) AS montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + round(montant_comptabilise_budget_global_1 / ABS(nb_prestation),2) AS montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON date_debut BETWEEN p_calendrier.date - ABS(nb_prestation)::integer + 1 AND p_calendrier.date AND + p_calendrier.date <> date_debut + ; + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT from_CTID, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + + UPDATE activite[PX].p_factures_lignes_c + SET + date_fin = p_factures_lignes_c.date_debut, + nb_rubrique = CASE WHEN p_factures_lignes_c.nb_rubrique < 0 THEN -1 ELSE 1 END , + nb_prestation = CASE WHEN p_factures_lignes_c.nb_prestation < 0 THEN -1 ELSE 1 END , + montant_facture = p_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = p_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = p_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = p_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = p_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = p_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = p_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = p_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = p_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = p_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22, + montant_encours = p_factures_lignes_c.montant_encours - w_factures_lignes_sup_c_sup_tot.montant_encours, + montant_encours_0 = p_factures_lignes_c.montant_encours_0 - w_factures_lignes_sup_c_sup_tot.montant_encours_0, + montant_encours_1 = p_factures_lignes_c.montant_encours_1 - w_factures_lignes_sup_c_sup_tot.montant_encours_1, + montant_encours_2 = p_factures_lignes_c.montant_encours_2 - w_factures_lignes_sup_c_sup_tot.montant_encours_2, + montant_encours_22 = p_factures_lignes_c.montant_encours_22 - w_factures_lignes_sup_c_sup_tot.montant_encours_22, + montant_facture_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = p_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 = p_factures_lignes_c.montant_comptabilise_budget_global_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup_tot + WHERE p_factures_lignes_c.CTID = from_CTID; + + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + ucd_id, + lpp_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + compte_produit_id, + prestation_id, + ucd_id, + lpp_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + finess, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c_sup; + + + -- Lieu exécution + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_4'); + + UPDATE activite[PX].p_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_factures , + activite[PX].p_mouvements_sejour + WHERE + p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + p_factures_lignes_c.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + p_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_8'); + + + -- Pour les chambres particulières, regroupement des lignes si même rubrique + DROP TABLE IF EXISTS w_fact_cp; + CREATE TEMP TABLE w_fact_cp AS + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + SUM(prix_unitaire) AS prix_unitaire, + SUM(montant_facture) AS montant_facture, + SUM(montant_comptabilise) AS montant_comptabilise, + MAX(taux_1) AS taux_1, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + MAX(taux_2) AS taux_2, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + MAX(taux_22) AS taux_22, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + MAX(taux_0) AS taux_0, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + count(*) AS nb, + MIN(CTID) AS keep_CTID + FROM activite[PX].p_factures_lignes_c + WHERE montant_facture <> 0 AND + date_debut = date_fin AND + rubrique_facturation_id IN + (SELECT to_id + FROM activite[PX].t_listes + JOIN activite[PX].t_listes_contenu ON liste_id = t_listes.oid + WHERE t_listes.code = 'CTI_SHO_R') + GROUP BY 1,2,3,4,5,6,7,8 + HAVING count(*) > 1 + ORDER BY 1,2,3,4,5,6,7,8; + + UPDATE w_fact_cp SET + taux_1 = round(base.cti_division(montant_facture_1 * 100.00 , montant_facture),0), + taux_2 = round(base.cti_division(montant_facture_2 * 100.00 , montant_facture),0), + taux_22 = round(base.cti_division(montant_facture_22 * 100.00 , montant_facture),0); + + UPDATE w_fact_cp SET + taux_0 = 100 - taux_1 - taux_2 - taux_22; + + + UPDATE activite[PX].p_factures_lignes_c SET + rubrique_facturation_id = CASE WHEN p_factures_lignes_c.CTID = keep_CTID THEN p_factures_lignes_c.rubrique_facturation_id ELSE -123456789 END, + prix_unitaire = w_fact_cp.prix_unitaire, + montant_facture = w_fact_cp.montant_facture, + montant_comptabilise = w_fact_cp.montant_comptabilise, + taux_1 = w_fact_cp.taux_1, + montant_facture_1 = w_fact_cp.montant_facture_1, + montant_comptabilise_1 = w_fact_cp.montant_comptabilise_1, + taux_2 = w_fact_cp.taux_2, + montant_facture_2 = w_fact_cp.montant_facture_2, + montant_comptabilise_2 = w_fact_cp.montant_comptabilise_2, + taux_0 = w_fact_cp.taux_0, + montant_facture_0 = w_fact_cp.montant_facture_0, + montant_comptabilise_0 = w_fact_cp.montant_comptabilise_0 + FROM w_fact_cp + WHERE p_factures_lignes_c.no_facture = w_fact_cp.no_facture AND + p_factures_lignes_c.date_debut = w_fact_cp.date_debut AND + p_factures_lignes_c.date_fin = w_fact_cp.date_fin AND + p_factures_lignes_c.nb_rubrique = w_fact_cp.nb_rubrique AND + p_factures_lignes_c.nb_prestation = w_fact_cp.nb_prestation AND + p_factures_lignes_c.rubrique_facturation_id = w_fact_cp.rubrique_facturation_id AND + p_factures_lignes_c.rubrique_comptabilisation_id = w_fact_cp.rubrique_comptabilisation_id AND + p_factures_lignes_c.prestation_id = w_fact_cp.prestation_id; + + DELETE FROM activite[PX].p_factures_lignes_c WHERE rubrique_facturation_id = -123456789; + + ]]> + + + + '' THEN TRPRST ELSE TRPRSA END + FROM prod_shs.[ACTIVITESCHEMA]_TRP01 + WHERE MFCCLE = '' AND TRCENR = 'A51' AND TRSUJT = '' AND w_ADCSER = TRCSER AND FDRUPR = TRCRUB ; + + UPDATE w_FDP03_keys SET MFCCLE = 'NOEMIE' WHERE MFCCLE = '' AND FDRUPR = '998'; + + UPDATE w_FDP03_keys SET MFCCLE = 'DIV' WHERE MFCCLE = '' ; + + ALTER TABLE w_FDP03_keys ADD CONSTRAINT w_FDP03_keys_pkey PRIMARY KEY(key); + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court, clinique_honoraire) + SELECT MFCCLE, MFCCLE, MFCCLE, MFCCLE, '' + FROM w_FDP03_keys + WHERE MFCCLE NOT IN (SELECT code FROM activite.t_prestations) + GROUP BY MFCCLE + ORDER BY MFCCLE; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT FDRUPR, FDRUPR, FDRUPR, FDRUPR + FROM w_FDP03_keys + WHERE FDRUPR NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation) + GROUP BY FDRUPR + ORDER BY FDRUPR; + + UPDATE w_FDP03_keys SET prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE MFCCLE = t_prestations.code; + + UPDATE w_FDP03_keys SET rubrique_comptabilisee_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + WHERE FDRUPR = t_rubriques_facturation.code_original; + + + + -- Montants ventes + DROP TABLE IF EXISTS w_factures_soldes_c; + CREATE TEMP TABLE w_factures_soldes_c AS + SELECT + p_factures.oid AS facture_id, + w_ADDOSSDCPL AS no_facture, + date_vente AS date_comptable, + w_MFP01_keys.rubrique_comptabilisation_id AS rubrique_comptabilisee_id, + w_MFP01_keys.prestation_id AS prestation_id, + SUM(MFMCAM + MFMCA1 + MFMCA2 + MFMCA3) AS montant_comptabilise, + SUM(MFMCAM) AS montant_comptabilise_0, + SUM(MFMCA1) AS montant_comptabilise_1, + SUM(MFMCA2) AS montant_comptabilise_2, + SUM(MFMCA3) AS montant_comptabilise_22, + 0::numeric AS montant_regle, + 0::numeric AS montant_regle_0, + 0::numeric AS montant_regle_1, + 0::numeric AS montant_regle_2, + 0::numeric AS montant_regle_22, + '0'::text AS od_avoir + FROM w_MFP01 + JOIN activite[PX].p_factures ON w_ADDOSSDCPL = p_factures.no_facture + JOIN w_MFP01_keys ON w_MFP01.key = w_MFP01_keys.key + GROUP BY 1,2,3,4,5 + ; + + -- Montants réglés + INSERT INTO w_factures_soldes_c + SELECT + p_factures.oid AS facture_id, + w_ADDOSSDCPL AS no_facture, + w_FDDTRG_date AS date_comptable, + w_FDP03_keys.rubrique_comptabilisee_id AS rubrique_comptabilisee_id, + w_FDP03_keys.prestation_id AS prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(FDMTRG) AS montant_regle, + SUM(FDMTRG_0) AS montant_montant_regle_0, + SUM(FDMTRG_1) AS montant_montant_regle_1, + SUM(FDMTRG_2) AS montant_montant_regle_2, + SUM(FDMTRG_22) AS montant_montant_regle_22, + '0'::text AS od_avoir + FROM w_FDP03 + JOIN activite[PX].p_factures ON w_ADDOSSDCPL = p_factures.no_facture + JOIN w_FDP03_keys ON w_FDP03.key = w_FDP03_keys.key + GROUP BY 1,2,3,4,5; + + + -- Alimentation tables + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_soldes_c_8'); + + DELETE FROM activite[PX].p_factures_soldes_c WHERE no_facture IN (SELECT w_ADDOSSDCPL FROM w_ADP01_factures_modifiees); + + INSERT INTO activite[PX].p_factures_soldes_c ( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + od_avoir, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + od_avoir, + SUM(montant_comptabilise), + SUM(montant_comptabilise_0), + SUM(montant_comptabilise_1), + SUM(montant_comptabilise_2), + SUM(montant_comptabilise_22), + SUM(montant_regle), + SUM(montant_regle_0), + SUM(montant_regle_1), + SUM(montant_regle_2), + SUM(montant_regle_22) + FROM w_factures_soldes_c + GROUP BY 1,2,3,4,5,6; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_8'); + + -- Suppression tables de travail + + DROP TABLE IF EXISTS w_MFP01; + DROP TABLE IF EXISTS w_FDP03; + DROP TABLE IF EXISTS w_factures_lignes_c; + DROP TABLE IF EXISTS w_factures_soldes_c; + + ]]> + + + + '' + ORDER BY TRSUJT, TRDTTR; + + DROP SEQUENCE IF EXISTS w_TRP01_seq; + CREATE TEMP SEQUENCE w_TRP01_seq + INCREMENT 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 1 + CACHE 1; + + UPDATE w_TRP01 SET TRSEQU = nextval('w_TRP01_seq'::regclass); + + + UPDATE w_TRP01 + SET TRDTT9 = w_TRP01_next.TRDTT1 -1 + FROM w_TRP01 w_TRP01_next + WHERE w_TRP01.TRSUJT = w_TRP01_next.TRSUJT AND + w_TRP01.TRSEQU = w_TRP01_next.TRSEQU - 1; + + + DROP TABLE IF EXISTS w_ACP01; + CREATE TEMP TABLE w_ACP01 AS + SELECT + w_ADDOSSDCPL, + + ACDTA1, + COALESCE(to_date(to_char(ACDTA1,'FM00000000'),'YYYYMMDD'), w_ADDTE1_date) AS ACDTA1_date, + ACHRA1, + COALESCE(to_date(to_char(CASE WHEN ACDTA9 >= ACDTA1 THEN ACDTA9 ELSE ACDTA1 END,'FM00000000'),'YYYYMMDD'), w_ADDTS1_date) AS ACDTA9_date, + w_ADCSER AS ACCSER, + w_ADACTI AS ACACTI, + w_ADETAG AS ACETAG, + w_ADCHLT AS ACCHLT, + to_char(ACRUPR,'FM0000') AS ACRUPR, + ACCCLE, + CASE WHEN ACCCAM <> '' THEN ACCCAM ELSE ACCCLE END AS ACCCAM, + ACCCAC, + ACCCXD, + ACCCPT, + ACCCM1, + ACCCM2, + ACCCM3, + ACCCM4, + w_ADCSER || '|' || w_ADACTI || '|' || w_ADETAG || '|' || w_ADCHLT || '|' || ACCCLE || '|' || ACCCAM || '|' || to_char(ACRUPR,'FM0000') AS key, + CASE WHEN w_ADADAV IN ('2', '4', '6') AND ACNBRE > 0 THEN 0 - ACNBRE ELSE ACNBRE END AS ACNBRE, + CASE WHEN ACCOE1 <> 0 THEN ACCOE1 ELSE 1 END AS ACCOE1, + ACPRUA, + ACMTDP + FROM prod_shs.[ACTIVITESCHEMA]_ACP01 + JOIN w_ADP01 ON (ACDOSS = w_ADDOSS AND ACDCPL = w_ADDCPL AND W_ADCFAC <> '1' AND w_CODENV = '') + WHERE ACCCLH = '2' AND ACCANN = '1'; + + + + UPDATE w_ACP01 SET ACPRUA = TRPRUE + FROM w_TRP01 + WHERE ACCCLE = TRSUJT AND ACPRUA = 0 AND ACDTA1 BETWEEN TRDTT1 AND TRDTT9; + + + + + DROP TABLE IF EXISTS w_ACP01_keys; + CREATE TEMP TABLE w_ACP01_keys AS + SELECT + key, + ACCSER, + ACACTI, + ACETAG, + ACCHLT, + ACCCLE, + ACRUPR, + ACCCAM, + 0::bigint AS medecin_facture_id, + ''::text AS prestation_code, + 0::bigint AS prestation_id, + 0::bigint AS acte_id, + 0::bigint AS lieu_id + FROM w_ACP01 + GROUP BY 1,2,3,4,5,6,7,8; + + + + UPDATE w_ACP01_keys + SET prestation_code = CASE WHEN TRPRST <> '' THEN TRPRST WHEN TRPRSA <> '' THEN TRPRSA ELSE ACCCLE END + FROM prod_shs.[ACTIVITESCHEMA]_TRP01 + WHERE prestation_code = '' AND TRCENR = 'A59' AND TRSUJT = ACCCLE ; + + UPDATE w_ACP01_keys SET prestation_code = 'DIV' WHERE prestation_code = ''; + + ALTER TABLE w_ACP01_keys ADD CONSTRAINT w_ACP01_keys_pkey PRIMARY KEY(key); + + INSERT INTO activite[PX].t_lieux(code_original_1, code_original_2, code_original_3, code_original_4) + SELECT ACCSER, ACACTI, ACETAG, ACETAG || '|' || ACCHLT + FROM w_ACP01_keys + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = ACCSER AND + code_original_2 = ACACTI AND + code_original_3 = ACETAG AND + code_original_4 = ACETAG || '|' || ACCHLT + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4; + + + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court, clinique_honoraire) + SELECT prestation_code, prestation_code, prestation_code, prestation_code, '' + FROM w_ACP01_keys + WHERE prestation_code NOT IN (SELECT code FROM activite.t_prestations) + GROUP BY prestation_code + ORDER BY prestation_code; + + DROP TABLE IF EXISTS w_new_actes; + CREATE TEMP TABLE w_new_actes AS + SELECT + substring(ACCCAM, 1, 7) as acte_code, + substring(ACCCAM, 1, 7) as acte_texte, + substring(ACCCAM, 1, 7) as acte_texte_court, + CASE WHEN length(ACCCAM) >= 7 THEN 'CCAM' ELSE 'NGAP' END as nomenclature, + t_ccam_regroupements.oid as ccam_1_id, + t_ccam_regroupements.oid as ccam_4_id + FROM w_ACP01_keys + LEFT JOIN base.t_actes ON t_actes.code = substring(ACCCAM, 1, 7), + base.t_ccam_regroupements + WHERE 1=1 + AND t_ccam_regroupements.code = 'NGAP' + AND t_actes.code IS NULL; + + INSERT INTO base.t_actes(code, texte, texte_court, nomenclature, ccam_regroupement_id_1, ccam_regroupement_id_4) + SELECT acte_code, acte_texte, acte_texte_court, nomenclature, ccam_1_id, ccam_4_id FROM w_new_actes + GROUP BY acte_code, acte_texte, acte_texte_court, nomenclature, ccam_1_id, ccam_4_id; + + UPDATE w_ACP01_keys SET prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE prestation_code = t_prestations.code; + + + UPDATE w_ACP01_keys SET medecin_facture_id = t_medecins_administratifs.oid + FROM activite[PX].t_medecins_administratifs + WHERE ACRUPR = t_medecins_administratifs.code_original; + + UPDATE w_ACP01_keys SET acte_id = t_actes.oid + FROM base.t_actes + WHERE substring(ACCCAM, 1, 7) = t_actes.code; + + UPDATE w_ACP01_keys SET lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = ACCSER AND + code_original_2 = ACACTI AND + code_original_3 = ACETAG AND + code_original_4 = ACETAG || '|' || ACCHLT; + + + DROP TABLE IF EXISTS w_factures_lignes_non_facturees_h; + CREATE TEMP TABLE w_factures_lignes_non_facturees_h AS + SELECT + p_factures.oid AS facture_id, + w_ADDOSSDCPL AS no_facture, + ACDTA1_date AS date_debut, + ACHRA1 * 10000 AS heure_debut, + ACDTA9_date AS date_fin, + ACNBRE AS nb_rubrique, + ACCOE1 AS coefficient, + w_ACP01_keys.medecin_facture_id AS medecin_facture_id, + w_ACP01_keys.prestation_id AS prestation_id, + ACPRUA AS prix_unitaire, + ACMTDP AS montant_depassement, + w_ACP01_keys.lieu_id AS lieu_id, + w_ACP01_keys.acte_id AS acte_id, + ACCCAC AS activite_ccam, + ACCCXD AS extension_ccam, + ACCCPT AS phase_ccam, + ACCCM1 AS modificateur_ccam_1, + ACCCM2 AS modificateur_ccam_2, + ACCCM3 AS modificateur_ccam_3, + ACCCM4 AS modificateur_ccam_4 + FROM w_ACP01 + JOIN activite[PX].p_factures ON w_ADDOSSDCPL = p_factures.no_facture + JOIN w_ACP01_keys ON w_ACP01.key = w_ACP01_keys.key + + ; + + DELETE FROM activite[PX].p_factures_lignes_non_facturees_h WHERE no_facture IN (SELECT no_facture FROM w_factures_lignes_non_facturees_h GROUP BY 1); + DELETE FROM activite[PX].p_factures_lignes_non_facturees_h WHERE no_facture IN (SELECT no_facture FROM activite[PX].p_factures WHERE code_facture >= '1' GROUP BY 1); + + + INSERT INTO activite[PX].p_factures_lignes_non_facturees_h ( + facture_id, + no_facture, + date_debut, + heure_debut, + date_fin, + nb_rubrique, + coefficient, + medecin_facture_id, + prestation_id, + prix_unitaire, + montant_depassement, + lieu_id, + acte_id, + activite_ccam, + extension_ccam, + phase_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4 + + ) + SELECT + facture_id, + no_facture, + date_debut, + heure_debut, + date_fin, + nb_rubrique, + coefficient, + medecin_facture_id, + prestation_id, + prix_unitaire, + montant_depassement, + lieu_id, + acte_id, + activite_ccam, + extension_ccam, + phase_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4 + FROM w_factures_lignes_non_facturees_h; + + + ]]> + + + + = MFDTA1 THEN MFDTA9 ELSE MFDTA1 END,'FM00000000'),'YYYYMMDD'), w_ADDTS1_date) AS MFDTA9_date, + MFCSER, + MFACTI, + MFETAG, + MFCHLT, + to_char(MFRUPR,'FM0000') AS MFRUPR, + to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'FM0000') AS MFCPRC, + MFCCLE, + CASE WHEN MFCCAM <> '' THEN SUBSTR(MFCCAM,1,7) ELSE MFCCLE END AS MFCCAM, + MFCCAC, + MFCCXD, + MFCCPT, + MFCCM1, + MFCCM2, + MFCCM3, + MFCCM4, + MFCSER || '|' || MFACTI || '|' || MFETAG || '|' || MFCHLT || '|' || MFCCLE || '|' || SUBSTR(MFCCAM,1,7) || '|' || to_char(MFRUPR,'FM0000') || '|' || to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'FM0000') AS key, + CASE WHEN MFMFA1 + MFMFA2 + MFMFA3 + MFMFAM < 0 AND MFNBRE > 0 THEN 0 - MFNBRE ELSE MFNBRE END AS MFNBRE, + CASE WHEN MFCOE1 <> 0 THEN MFCOE1 ELSE 1 END AS MFCOE1, + CASE WHEN MFCOET <> 0 THEN MFCOET ELSE 1 END AS MFCOET, + ABS(MFPRUA) AS MFPRUA, + MFTFAM, + MFTFA1, + MFTFA2, + MFTFA3, + MFMFAM, + MFMFA1, + MFMFA2, + MFMFA3, + MFMTDP, + CASE WHEN w_ADPAD5 = '1' THEN MFMCAM ELSE MFMFAM END AS MFMCAM, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA1 ELSE MFMFA1 END AS MFMCA1, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA2 ELSE MFMFA2 END AS MFMCA2, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA3 ELSE MFMFA3 END AS MFMCA3 + FROM prod_shs.[ACTIVITESCHEMA]_MFP01CCAM + JOIN w_ADP01_factures_modifiees w_ADP01 ON (MFDOSS = w_ADDOSS AND MFDCPL = w_ADDCPL AND W_ADCFAC = '1' AND w_CODENV = '') + ; + + INSERT INTO w_MFP01 + SELECT + w_ADDOSSDCPL, + + COALESCE(to_date(to_char(MFDTA1,'FM00000000'),'YYYYMMDD'), w_ADDTE1_date) AS MFDTA1_date, + MFHRA1, + COALESCE(to_date(to_char(CASE WHEN MFDTA9 >= MFDTA1 THEN MFDTA9 ELSE MFDTA1 END,'FM00000000'),'YYYYMMDD'), w_ADDTS1_date) AS MFDTA9_date, + MFCSER, + MFACTI, + MFETAG, + MFCHLT, + to_char(MFRUPR,'FM0000') AS MFRUPR, + to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'FM0000') AS MFCPRC, + MFCCLE, + MFCCLE AS MFCCAM, + ''::text AS MFCCAC, + ''::text AS MFCCXD, + ''::text AS MFCCPT, + ''::text AS MFCCM1, + ''::text AS MFCCM2, + ''::text AS MFCCM3, + ''::text AS MFCCM4, + MFCSER || '|' || MFACTI || '|' || MFETAG || '|' || MFCHLT || '|' || MFCCLE || '||' || to_char(MFRUPR,'FM0000') || '|' || to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'FM0000') AS key, + CASE WHEN MFMFA1 + MFMFA2 + MFMFA3 + MFMFAM < 0 AND MFNBRE > 0 THEN 0 - MFNBRE ELSE MFNBRE END AS MFNBRE, + CASE WHEN MFCOE1 <> 0 THEN MFCOE1 ELSE 1 END AS MFCOE1, + CASE WHEN MFCOET <> 0 THEN MFCOET ELSE 1 END AS MFCOET, + ABS(MFPRUA) AS MFPRUA, + MFTFAM, + MFTFA1, + MFTFA2, + MFTFA3, + MFMFAM, + MFMFA1, + MFMFA2, + MFMFA3, + MFMTDP, + CASE WHEN w_ADPAD5 = '1' THEN MFMCAM ELSE MFMFAM END AS MFMCAM, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA1 ELSE MFMFA1 END AS MFMCA1, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA2 ELSE MFMFA2 END AS MFMCA2, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA3 ELSE MFMFA3 END AS MFMCA3 + FROM prod_shs.[ACTIVITESCHEMA]_MFP01HON + JOIN w_ADP01_factures_modifiees w_ADP01 ON (MFDOSS = w_ADDOSS AND MFDCPL = w_ADDCPL AND W_ADCFAC = '1' AND w_CODENV = '') + ; + + INSERT INTO w_MFP01 + SELECT + w_ADDOSSDCPL, + + COALESCE(to_date(to_char(MFDTA1,'FM00000000'),'YYYYMMDD'), w_ADDTE1_date) AS MFDTA1_date, + MFHRA1, + COALESCE(to_date(to_char(CASE WHEN MFDTA9 >= MFDTA1 THEN MFDTA9 ELSE MFDTA1 END,'FM00000000'),'YYYYMMDD'), w_ADDTS1_date) AS MFDTA9_date, + MFCSER, + MFACTI, + MFETAG, + MFCHLT, + to_char(MFRUPR,'FM0000') AS MFRUPR, + to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'FM0000') AS MFCPRC, + MFCCLE, + MFCCLE AS MFCCAM, + ''::text AS MFCCAC, + ''::text AS MFCCXD, + ''::text AS MFCCPT, + ''::text AS MFCCM1, + ''::text AS MFCCM2, + ''::text AS MFCCM3, + ''::text AS MFCCM4, + MFCSER || '|' || MFACTI || '|' || MFETAG || '|' || MFCHLT || '|' || MFCCLE || '||' || to_char(MFRUPR,'FM0000') || '|' || to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'FM0000') AS key, + CASE WHEN MFMFA1 + MFMFA2 + MFMFA3 + MFMFAM < 0 AND MFNBRE > 0 THEN 0 - MFNBRE ELSE MFNBRE END AS MFNBRE, + CASE WHEN MFCOE1 <> 0 THEN MFCOE1 ELSE 1 END AS MFCOE1, + CASE WHEN MFCOET <> 0 THEN MFCOET ELSE 1 END AS MFCOET, + ABS(MFPRUA) AS MFPRUA, + MFTFAM, + MFTFA1, + MFTFA2, + MFTFA3, + MFMFAM, + MFMFA1, + MFMFA2, + MFMFA3, + MFMTDP, + CASE WHEN w_ADPAD5 = '1' THEN MFMCAM ELSE MFMFAM END AS MFMCAM, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA1 ELSE MFMFA1 END AS MFMCA1, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA2 ELSE MFMFA2 END AS MFMCA2, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA3 ELSE MFMFA3 END AS MFMCA3 + FROM prod_shs.[ACTIVITESCHEMA]p_MFP01HONP + JOIN w_ADP01_factures_modifiees w_ADP01 ON (MFDOSS = w_ADDOSS AND MFDCPL = w_ADDCPL AND W_ADCFAC = '1' AND w_CODENV = 'P') + ; + + INSERT INTO w_MFP01 + SELECT + w_ADDOSSDCPL, + + COALESCE(to_date(to_char(MFDTA1,'FM00000000'),'YYYYMMDD'), w_ADDTE1_date) AS MFDTA1_date, + MFHRA1, + COALESCE(to_date(to_char(CASE WHEN MFDTA9 >= MFDTA1 THEN MFDTA9 ELSE MFDTA1 END,'FM00000000'),'YYYYMMDD'), w_ADDTS1_date) AS MFDTA9_date, + MFCSER, + MFACTI, + MFETAG, + MFCHLT, + to_char(MFRUPR,'FM0000') AS MFRUPR, + to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'FM0000') AS MFCPRC, + MFCCLE, + CASE WHEN MFCCAM <> '' THEN SUBSTR(MFCCAM,1,7) ELSE MFCCLE END AS MFCCAM, + MFCCAC, + MFCCXD, + MFCCPT, + MFCCM1, + MFCCM2, + MFCCM3, + MFCCM4, + MFCSER || '|' || MFACTI || '|' || MFETAG || '|' || MFCHLT || '|' || MFCCLE || '|' || SUBSTR(MFCCAM,1,7) || '|' || to_char(MFRUPR,'FM0000') || '|' || to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'FM0000') AS key, + CASE WHEN MFMFA1 + MFMFA2 + MFMFA3 + MFMFAM < 0 AND MFNBRE > 0 THEN 0 - MFNBRE ELSE MFNBRE END AS MFNBRE, + CASE WHEN MFCOE1 <> 0 THEN MFCOE1 ELSE 1 END AS MFCOE1, + CASE WHEN MFCOET <> 0 THEN MFCOET ELSE 1 END AS MFCOET, + ABS(MFPRUA) AS MFPRUA, + MFTFAM, + MFTFA1, + MFTFA2, + MFTFA3, + MFMFAM, + MFMFA1, + MFMFA2, + MFMFA3, + MFMTDP, + CASE WHEN w_ADPAD5 = '1' THEN MFMCAM ELSE MFMFAM END AS MFMCAM, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA1 ELSE MFMFA1 END AS MFMCA1, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA2 ELSE MFMFA2 END AS MFMCA2, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA3 ELSE MFMFA3 END AS MFMCA3 + FROM prod_shs.[ACTIVITESCHEMA]p_MFP01CCAMP + JOIN w_ADP01_factures_modifiees w_ADP01 ON (MFDOSS = w_ADDOSS AND MFDCPL = w_ADDCPL AND W_ADCFAC = '1' AND w_CODENV = 'P') + ; + + INSERT INTO w_MFP01 + SELECT + w_ADDOSSDCPL, + + COALESCE(to_date(to_char(MFDTA1,'FM00000000'),'YYYYMMDD'), w_ADDTE1_date) AS MFDTA1_date, + MFHRA1, + COALESCE(to_date(to_char(CASE WHEN MFDTA9 >= MFDTA1 THEN MFDTA9 ELSE MFDTA1 END,'FM00000000'),'YYYYMMDD'), w_ADDTS1_date) AS MFDTA9_date, + MFCSER, + MFACTI, + MFETAG, + MFCHLT, + to_char(MFRUPR,'FM0000') AS MFRUPR, + to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'FM0000') AS MFCPRC, + MFCCLE, + MFCCLE AS MFCCAM, + ''::text AS MFCCAC, + ''::text AS MFCCXD, + ''::text AS MFCCPT, + ''::text AS MFCCM1, + ''::text AS MFCCM2, + ''::text AS MFCCM3, + ''::text AS MFCCM4, + MFCSER || '|' || MFACTI || '|' || MFETAG || '|' || MFCHLT || '|' || MFCCLE || '||' || to_char(MFRUPR,'FM0000') || '|' || to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'FM0000') AS key, + CASE WHEN MFMFA1 + MFMFA2 + MFMFA3 + MFMFAM < 0 AND MFNBRE > 0 THEN 0 - MFNBRE ELSE MFNBRE END AS MFNBRE, + CASE WHEN MFCOE1 <> 0 THEN MFCOE1 ELSE 1 END AS MFCOE1, + CASE WHEN MFCOET <> 0 THEN MFCOET ELSE 1 END AS MFCOET, + ABS(MFPRUA) AS MFPRUA, + MFTFAM, + MFTFA1, + MFTFA2, + MFTFA3, + MFMFAM, + MFMFA1, + MFMFA2, + MFMFA3, + MFMTDP, + CASE WHEN w_ADPAD5 = '1' THEN MFMCAM ELSE MFMFAM END AS MFMCAM, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA1 ELSE MFMFA1 END AS MFMCA1, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA2 ELSE MFMFA2 END AS MFMCA2, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA3 ELSE MFMFA3 END AS MFMCA3 + FROM prod_shs.[ACTIVITESCHEMA]h_MFP01HONH + JOIN w_ADP01_factures_modifiees w_ADP01 ON (MFDOSS = w_ADDOSS AND MFDCPL = w_ADDCPL AND W_ADCFAC = '1' AND w_CODENV = 'H') + ; + + INSERT INTO w_MFP01 + SELECT + w_ADDOSSDCPL, + + COALESCE(to_date(to_char(MFDTA1,'FM00000000'),'YYYYMMDD'), w_ADDTE1_date) AS MFDTA1_date, + MFHRA1, + COALESCE(to_date(to_char(CASE WHEN MFDTA9 >= MFDTA1 THEN MFDTA9 ELSE MFDTA1 END,'FM00000000'),'YYYYMMDD'), w_ADDTS1_date) AS MFDTA9_date, + MFCSER, + MFACTI, + MFETAG, + MFCHLT, + to_char(MFRUPR,'FM0000') AS MFRUPR, + to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'FM0000') AS MFCPRC, + MFCCLE, + CASE WHEN MFCCAM <> '' THEN SUBSTR(MFCCAM,1,7) ELSE MFCCLE END AS MFCCAM, + MFCCAC, + MFCCXD, + MFCCPT, + MFCCM1, + MFCCM2, + MFCCM3, + MFCCM4, + MFCSER || '|' || MFACTI || '|' || MFETAG || '|' || MFCHLT || '|' || MFCCLE || '|' || SUBSTR(MFCCAM,1,7) || '|' || to_char(MFRUPR,'FM0000') || '|' || to_char(CASE WHEN MFCPRC <> 0 THEN MFCPRC ELSE MFRUPR END,'FM0000') AS key, + CASE WHEN MFMFA1 + MFMFA2 + MFMFA3 + MFMFAM < 0 AND MFNBRE > 0 THEN 0 - MFNBRE ELSE MFNBRE END AS MFNBRE, + CASE WHEN MFCOE1 <> 0 THEN MFCOE1 ELSE 1 END AS MFCOE1, + CASE WHEN MFCOET <> 0 THEN MFCOET ELSE 1 END AS MFCOET, + ABS(MFPRUA) AS MFPRUA, + MFTFAM, + MFTFA1, + MFTFA2, + MFTFA3, + MFMFAM, + MFMFA1, + MFMFA2, + MFMFA3, + MFMTDP, + CASE WHEN w_ADPAD5 = '1' THEN MFMCAM ELSE MFMFAM END AS MFMCAM, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA1 ELSE MFMFA1 END AS MFMCA1, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA2 ELSE MFMFA2 END AS MFMCA2, + CASE WHEN w_ADPAD5 = '1' THEN MFMCA3 ELSE MFMFA3 END AS MFMCA3 + FROM prod_shs.[ACTIVITESCHEMA]h_MFP01CCAMH + JOIN w_ADP01_factures_modifiees w_ADP01 ON (MFDOSS = w_ADDOSS AND MFDCPL = w_ADDCPL AND W_ADCFAC = '1' AND w_CODENV = 'H') + ; + + CREATE INDEX w_MFP01_i1 ON w_MFP01 USING btree (w_ADDOSSDCPL); + + CREATE INDEX w_MFP01_i2 ON w_MFP01 USING btree (key); + + DROP TABLE IF EXISTS w_MFP01_keys; + CREATE TEMP TABLE w_MFP01_keys AS + SELECT + key, + MFCSER, + MFACTI, + MFETAG, + MFCHLT, + MFCCLE, + MFRUPR, + MFCPRC, + MFCCAM, + 0::bigint AS medecin_facture_id, + 0::bigint AS medecin_comptabilise_id, + ''::text AS prestation_code, + 0::bigint AS prestation_id, + 0::bigint AS acte_id, + 0::bigint AS lieu_id + FROM w_MFP01 + GROUP BY 1,2,3,4,5,6,7,8,9; + + + + UPDATE w_MFP01_keys + SET prestation_code = CASE WHEN TRPRST <> '' THEN TRPRST WHEN TRPRSA <> '' THEN TRPRSA ELSE MFCCLE END + FROM prod_shs.[ACTIVITESCHEMA]_TRP01 + WHERE prestation_code = '' AND TRCENR = 'A59' AND TRSUJT = MFCCLE ; + + UPDATE w_MFP01_keys SET prestation_code = 'DIV' WHERE prestation_code = ''; + + ALTER TABLE w_MFP01_keys ADD CONSTRAINT w_MFP01_keys_pkey PRIMARY KEY(key); + + INSERT INTO activite[PX].t_lieux(code_original_1, code_original_2, code_original_3, code_original_4) + SELECT MFCSER, MFACTI, MFETAG, MFETAG || '|' || MFCHLT + FROM w_MFP01_keys + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = MFCSER AND + code_original_2 = MFACTI AND + code_original_3 = MFETAG AND + code_original_4 = MFETAG || '|' || MFCHLT + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4; + + + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court, clinique_honoraire) + SELECT prestation_code, prestation_code, prestation_code, prestation_code, '' + FROM w_MFP01_keys + WHERE prestation_code NOT IN (SELECT code FROM activite.t_prestations) + GROUP BY prestation_code + ORDER BY prestation_code; + + DROP TABLE IF EXISTS w_actes; + CREATE TEMP TABLE w_actes AS + SELECT + substring(MFCCAM, 1, 7) as acte_code, + substring(MFCCAM, 1, 7) as acte_texte, + substring(MFCCAM, 1, 7) as acte_texte_court, + CASE WHEN length(MFCCAM) >= 7 THEN 'CCAM' ELSE 'NGAP' END as nomenclature, + t_ccam_regroupements .oid as ccam_id_1, + t_ccam_regroupements.oid as ccam_id_4 + FROM w_MFP01_keys + LEFT JOIN base.t_actes ON t_actes.code = substring(MFCCAM, 1, 7), + base.t_ccam_regroupements + WHERE 1=1 + AND t_actes.code IS NULL + AND t_ccam_regroupements.code = 'NGAP'; + + INSERT INTO base.t_actes(code, texte, texte_court, nomenclature, ccam_regroupement_id_1, ccam_regroupement_id_4) + SELECT + acte_code, + acte_texte, + acte_texte_court, + nomenclature, + ccam_id_1, + ccam_id_4 + FROM w_actes + GROUP BY acte_code,acte_texte,acte_texte_court, nomenclature, ccam_id_1,ccam_id_4; + + UPDATE w_MFP01_keys SET prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE prestation_code = t_prestations.code; + + UPDATE w_MFP01_keys SET medecin_facture_id = t_medecins_administratifs.oid + FROM activite[PX].t_medecins_administratifs + WHERE MFRUPR = t_medecins_administratifs.code_original; + + UPDATE w_MFP01_keys SET medecin_comptabilise_id = t_medecins_administratifs.oid + FROM activite[PX].t_medecins_administratifs + WHERE MFCPRC = t_medecins_administratifs.code_original; + + UPDATE w_MFP01_keys SET acte_id = t_actes.oid + FROM base.t_actes + WHERE substring(MFCCAM, 1, 7) = t_actes.code; + + UPDATE w_MFP01_keys SET lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = MFCSER AND + code_original_2 = MFACTI AND + code_original_3 = MFETAG AND + code_original_4 = MFETAG || '|' || MFCHLT; + + + DROP TABLE IF EXISTS w_factures_lignes_h; + CREATE TEMP TABLE w_factures_lignes_h AS + SELECT + p_factures.oid AS facture_id, + w_ADDOSSDCPL AS no_facture, + MFDTA1_date AS date_debut, + MFHRA1 * 10000 AS heure_debut, + MFDTA9_date AS date_fin, + MFNBRE AS nb_rubrique, + MFNBRE AS nb_prestation, + MFCOE1 AS coefficient, + MFCOET AS coefficient_mco, + w_MFP01_keys.medecin_facture_id AS medecin_facture_id, + w_MFP01_keys.medecin_comptabilise_id AS medecin_comptabilise_id, + w_MFP01_keys.prestation_id AS prestation_id, + w_MFP01_keys.acte_id AS acte_id, + MFCCAC AS activite_ccam, + MFCCXD AS extension_ccam, + MFCCPT AS phase_ccam, + MFCCM1 AS modificateur_ccam_1, + MFCCM2 AS modificateur_ccam_2, + MFCCM3 AS modificateur_ccam_3, + MFCCM4 AS modificateur_ccam_4, + MFMFAM + MFMFA1 + MFMFA2 + MFMFA3 AS montant_facture, + MFMFAM AS montant_facture_0, + MFMFA1 AS montant_facture_1, + MFMFA2 AS montant_facture_2, + MFMFA3 AS montant_facture_22, + MFMTDP AS montant_depassement, + MFTFAM AS taux_0, + MFTFA1 AS taux_1, + MFTFA2 AS taux_2, + MFTFA3 AS taux_22, + MFPRUA AS prix_unitaire, + w_MFP01_keys.lieu_id AS lieu_id, + MFMCAM + MFMCA1 + MFMCA2 + MFMCA3 AS montant_comptabilise, + MFMCAM AS montant_comptabilise_0, + MFMCA1 AS montant_comptabilise_1, + MFMCA2 AS montant_comptabilise_2, + MFMCA3 AS montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour + FROM w_MFP01 + JOIN activite[PX].p_factures ON w_ADDOSSDCPL = p_factures.no_facture + JOIN w_MFP01_keys ON w_MFP01.key = w_MFP01_keys.key + + ; + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_9'); + + DELETE FROM activite[PX].p_factures_lignes_h WHERE no_facture IN (SELECT w_ADDOSSDCPL FROM w_ADP01_factures_modifiees); + + INSERT INTO activite[PX].p_factures_lignes_h ( + facture_id, + no_facture, + date_debut, + heure_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + acte_id, + activite_ccam, + extension_ccam, + phase_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour + ) + SELECT + facture_id, + no_facture, + date_debut, + heure_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + acte_id, + activite_ccam, + extension_ccam, + phase_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour + FROM w_factures_lignes_h; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_9'); + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + '' THEN TRPRST ELSE TRPRSA END AS prestation_code, + MAX(TRCRUB) AS rubrique_code + FROM prod_shs.[ACTIVITESCHEMA]_trp01 WHERE TRCENR = 'A51' + GROUP BY 1 + ORDER BY 1; + + + UPDATE w_factures_lignes_bg SET rubrique_code = w_prestations.rubrique_code + FROM w_prestations + WHERE w_factures_lignes_bg.rubrique_code = w_prestations.prestation_code ; + + + + INSERT INTO activite.t_prestations(code, code_original, texte, texte_court) + SELECT prestation_code, prestation_code, prestation_code, prestation_code + FROM w_factures_lignes_bg + LEFT JOIN activite.t_prestations ON prestation_code = t_prestations.code + WHERE t_prestations.code IS NULL + GROUP BY prestation_code; + + + + INSERT INTO activite[PX].t_rubriques_facturation(code, code_original, texte, texte_court) + SELECT rubrique_code, rubrique_code, rubrique_code, rubrique_code + FROM w_factures_lignes_bg + LEFT JOIN activite[PX].t_rubriques_facturation ON rubrique_code = t_rubriques_facturation.code + WHERE t_rubriques_facturation.code IS NULL + GROUP BY rubrique_code; + + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + + origine_facturation_id, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1) + + SELECT + + no_facture, + date_debut, + date_fin, + nombre AS nb_rubrique, + nombre AS nb_prestation, + coefficient AS coefficient, + coefficient_mco AS coefficient_mco, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_comptabilisation_id, + COALESCE(t_prestations.oid,0) AS prestation_id, + 0 AS montant_facture, + 0 AS montant_facture_0, + 0 AS montant_facture_1, + 0 AS montant_facture_2, + 0 AS montant_facture_22, + + 0 AS taux_0, + taux_remboursement AS taux_1, + 0 AS taux_2, + 0 AS taux_22, + prix_unitaire, + lieu_id, + + 0 AS montant_comptabilise, + 0 AS montant_comptabilise_0, + 0 AS montant_comptabilise_1, + 0 AS montant_comptabilise_2, + 0 AS montant_comptabilise_22, + + 0 AS montant_encours, + 0 AS montant_encours_0, + 0 AS montant_encours_1, + 0 AS montant_encours_2, + 0 AS montant_encours_22, + + 4 AS origine_facturation_id, + 0 AS montant_facture_actes_inclus_dans_sejour, + 0 AS montant_facture_0_actes_inclus_dans_sejour, + 0 AS montant_facture_1_actes_inclus_dans_sejour, + 0 AS montant_facture_2_actes_inclus_dans_sejour, + 0 AS montant_facture_22_actes_inclus_dans_sejour, + + montant_comptabilise_budget_global_c AS montant_comptabilise_budget_global_1 + + FROM w_factures_lignes_bg + LEFT JOIN activite.t_prestations ON prestation_code = t_prestations.code + LEFT JOIN activite[PX].t_rubriques_facturation ON rubrique_code = t_rubriques_facturation.code + ; + + + ]]> + + + + + + + + 0 THEN MCAMTC::text||'01' ELSE NULL END,'YYYYMMDD') AS date_comptable, + ''::text AS no_sejour, + 0::bigint AS sejour_id, + ''::text AS no_facture, + 0::bigint AS facture_id, + 0::bigint AS medecin_administratif_id, + 0::bigint AS tiers_payant_id, + ''::text AS mode_reglement_code, + '':: text AS type_ecriture, + '':: text AS type_piece, + CASE WHEN MCCCLH = '1' THEN 'C' ELSE 'H' END AS clinique_honoraire + FROM prod_shs.[ACTIVITESCHEMA]_MCP01 + WHERE MCTYMV = 0 AND MCCANN <> 'A' AND + MCCJAL NOT IN (1,2) + ; + + UPDATE w_MCP01 SET + no_sejour = p_factures.no_sejour, + sejour_id = p_factures.sejour_id, + no_facture = p_factures.no_facture, + facture_id = p_factures.oid + FROM activite[PX].p_factures + WHERE (MCDOSA||'.'||MCDCPA) = p_factures.no_facture + ; + + DROP TABLE IF EXISTS w_CCP01_next; + CREATE TEMP TABLE w_CCP01_next AS + SELECT MAX(CCANEE*100+CCMOIS + CASE WHEN CCMOIS <> 12 THEN 1 ELSE 89 END) AS CCAMTC + FROM prod_shs.[ACTIVITESCHEMA]_CCP01 + WHERE CCMOIS <= 12 AND CCMLTT <> 0 AND + CCNOR3 IN (320) ; + + + UPDATE w_MCP01 SET + MCAMTC = CASE + WHEN to_number(substr(MCDTEC,1,6),'FM999999') < CCAMTC THEN CCAMTC + ELSE to_number(substr(MCDTEC,1,6),'FM999999') END, + date_comptable = to_date(CASE + WHEN to_number(substr(MCDTEC,1,6),'FM999999') < CCAMTC THEN CCAMTC + ELSE to_number(substr(MCDTEC,1,6),'FM999999') END || '01','YYYYMMDD') + FROM w_CCP01_next + WHERE MCPOIC <> '1' AND + MCAMTC <> CASE + WHEN to_number(substr(MCDTEC,1,6),'FM999999') < CCAMTC THEN CCAMTC + ELSE to_number(substr(MCDTEC,1,6),'FM999999') END AND + MCTYMV = 0 AND MCCANN <> 'A' + ; + + UPDATE w_MCP01 + SET MCCPTE = CLCPTE, MCTYPE = CLTYPG + FROM prod_shs.[ACTIVITESCHEMA]_CLP01 + WHERE MCTYPE = CLTYPE AND MCSANA = CLCCOL AND + ( + MCCPTE <> CLCPTE OR + MCTYPE <> CLTYPG + ) + ; + + + + DELETE FROM activite[PX].p_ecriture_comptable + USING (SELECT COALESCE(MIN(date_comptable),'0001-01-01') AS date_comptable_min FROM w_MCP01) subview + WHERE p_ecriture_comptable.date_comptable >= date_comptable_min + ; + + INSERT INTO activite[PX].p_ecriture_comptable( + code_original, + date_comptable, + type_ecriture, + type_piece, + piece, + mode_reglement_code, + clinique_honoraire, + compte_id, + journal_id, + sejour_id, + no_sejour, + facture_id, + no_facture, + medecin_id, + tiers_payant_id, + texte, + montant_credit, + montant_debit, + est_comptabilise, + taux_tva) + SELECT + to_char(MCFOLI,'FM00000')||'.'||to_char(MCLIGN,'FM00') AS code_original, + w_MCP01.date_comptable, + CASE + WHEN t_journal.type_journal = 'VE' AND MCCPTE LIKE '411%' THEN 'VCLI' + WHEN t_journal.type_journal = 'VE' AND MCCPTE LIKE '412%' THEN 'VCLI' + WHEN t_journal.type_journal = 'VE' AND MCCPTE LIKE '445%' THEN 'VTVA' + WHEN t_journal.type_journal = 'VE' AND w_MCP01.clinique_honoraire = 'C' THEN 'VPRD' + WHEN t_journal.type_journal = 'VE' AND w_MCP01.clinique_honoraire = 'H' THEN 'VHON' + WHEN MCCPTE LIKE '758%' THEN 'PEPR' + WHEN MCCPTE LIKE '658%' THEN 'PEPR' + WHEN t_journal.type_journal <> 'VE' AND MCCPTE LIKE '468%' THEN 'ATT' + WHEN t_journal.type_journal <> 'VE' AND MCCPTE LIKE '471%' THEN 'ATT' + WHEN t_journal.type_journal <> 'VE' AND MCCPTE LIKE '411%' THEN 'RCLI' + WHEN t_journal.type_journal <> 'VE' AND MCCPTE LIKE '412%' THEN 'RCLI' + WHEN t_journal.type_journal <> 'VE' AND MCCPTE LIKE '419%' THEN 'ACPT' + WHEN t_journal.type_journal <> 'VE' AND MCCPTE LIKE '51%' THEN 'BANQ' + WHEN t_journal.type_journal <> 'VE' AND MCCPTE LIKE '531%' THEN 'BANQ' + WHEN t_journal.type_journal <> 'VE' AND MCCPTE LIKE '466%' THEN 'PHON' + WHEN t_journal.type_journal <> 'VE' AND MCCPTE LIKE '7%' THEN 'XPRD' + WHEN t_journal.type_journal <> 'VE' AND MCCPTE LIKE '445%' THEN 'XTVA' + ELSE '?'||to_char(MCCJAL,'FM000') END AS type_ecriture, + CASE + WHEN t_journal.type_journal = 'VE' THEN 'VENTE' + ELSE t_journal.type_journal END AS type_piece, + MCAMTC::text || to_char(MCCJAL,'FM000') AS piece, + w_MCP01.mode_reglement_code, + w_MCP01.clinique_honoraire, + COALESCE(t_compte.oid,0) AS compte_id, + COALESCE(t_journal.oid,0) AS journal_id, + w_MCP01.sejour_id, + w_MCP01.no_sejour, + w_MCP01.facture_id, + w_MCP01.no_facture, + w_MCP01.medecin_administratif_id, + w_MCP01.tiers_payant_id, + MCINT3 AS texte, + CASE WHEN MCSENS = 'C' THEN MCMONT ELSE 0.00 END AS CREDIT, + CASE WHEN MCSENS = 'D' THEN MCMONT ELSE 0.00 END AS DEBIT, + + CASE WHEN MCPOIC = '1' THEN '1'::text ELSE '0'::text END AS est_comptabilise, + COALESCE(t_compte.taux_tva,0) AS taux_tva + FROM w_MCP01 + LEFT JOIN activite[PX].t_compte ON MCCPTE = t_compte.code + LEFT JOIN activite[PX].t_journal ON w_MCP01.MCCJAL = t_journal.code_original + WHERE t_journal.type_journal IS DISTINCT FROM 'IGNORE' + ; + ]]> + + + + = [ENV_ADM_ANNEEDEBUT] + GROUP BY 1 + HAVING SUM(CASE WHEN CCNOR3 = 235 THEN CCMLCL ELSE 0 END) <> 0 + ORDER BY 1; + + + TRUNCATE activite[PX].p_chiffrier_comptable; + + INSERT INTO activite[PX].p_chiffrier_comptable( + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_solde_client_c, + montant_ventes_h, + montant_reglements_h, + montant_solde_client_h) + SELECT + COALESCE(to_date(CCANEE * 10000 + CCMOIS * 100 + 01, 'YYYYMMDD') + interval '1 month' - interval '1 day', '20991231') AS date_comptable, + SUM(CASE WHEN CCNOR3 = 105 THEN CCMLCL ELSE 0 END) AS montant_ventes_c, + SUM(CASE WHEN CCNOR3 = 230 THEN CCMLCL ELSE 0 END) AS montant_reglements_c, + SUM(CASE WHEN CCNOR3 = 235 THEN CCMLCL ELSE 0 END) AS montant_solde_client_c, + SUM(CASE WHEN CCNOR3 = 105 THEN CCMLHO ELSE 0 END) AS montant_ventes_h, + SUM(CASE WHEN CCNOR3 = 230 THEN CCMLHO ELSE 0 END) AS montant_reglements_h, + SUM(CASE WHEN CCNOR3 = 235 THEN CCMLHO ELSE 0 END) AS montant_solde_client_h + FROM prod_shs.[ACTIVITESCHEMA]_CCP01 + WHERE CCCMON = 'E' AND CCMOIS <= 12 AND CCNOR3 IN (105, 230, 235) AND + CCANEE >= [ENV_ADM_ANNEEDEBUT] + GROUP BY 1 + ORDER BY 1; + + + + TRUNCATE activite[PX].p_factures_comptables; + + DROP TABLE IF EXISTS w_factures_comptables; + + CREATE TEMP TABLE w_factures_comptables AS + SELECT + 'H'::text AS historique, + FTDOSS, + FTDCPL, + 0 AS facture_id, + to_char(FTDOSS,'FM00000000') || '.' || to_char(FTDCPL,'FM00') AS no_facture, + to_date(to_char(FTDTJV,'FM00000000'),'YYYYMMDD') AS date_comptable, + SUM(CASE WHEN FTCCLH = '1' THEN FTMTFA ELSE 0 END) AS montant_ventes_c, + 0::numeric AS montant_reglements_c, + SUM(CASE WHEN FTCCLH = '2' THEN FTMTFA ELSE 0 END) AS montant_ventes_h, + 0::numeric AS montant_reglements_h + FROM prod_shs.[ACTIVITESCHEMA]h_FTP01H + GROUP BY 1,2,3,4,5,6; + + CREATE INDEX w_factures_comptables_i1 + ON w_factures_comptables + USING btree + (FTDOSS); + + INSERT INTO w_factures_comptables + SELECT + 'P'::text AS historique, + FTP01.FTDOSS, + FTP01.FTDCPL, + 0 AS facture_id, + to_char(FTP01.FTDOSS,'FM00000000') || '.' || to_char(FTP01.FTDCPL,'FM00') AS no_facture, + to_date(to_char(FTDTJV,'FM00000000'),'YYYYMMDD') AS date_comptable, + SUM(CASE WHEN FTCCLH = '1' THEN FTMTFA ELSE 0 END) AS montant_ventes_c, + 0::numeric AS montant_reglements_c, + SUM(CASE WHEN FTCCLH = '2' THEN FTMTFA ELSE 0 END) AS montant_ventes_h, + 0::numeric AS montant_reglements_h + FROM prod_shs.[ACTIVITESCHEMA]p_FTP01P FTP01 + LEFT JOIN w_factures_comptables ON FTP01.FTDOSS = w_factures_comptables.FTDOSS AND + FTP01.FTDCPL = w_factures_comptables.FTDCPL + WHERE w_factures_comptables.FTDOSS IS NULL + GROUP BY 1,2,3,4,5,6; + + + INSERT INTO w_factures_comptables + SELECT + ''::text AS historique, + FTP01.FTDOSS, + FTP01.FTDCPL, + 0 AS facture_id, + to_char(FTP01.FTDOSS,'FM00000000') || '.' || to_char(FTP01.FTDCPL,'FM00') AS no_facture, + to_date(to_char(FTDTJV,'FM00000000'),'YYYYMMDD') AS date_comptable, + SUM(CASE WHEN FTCCLH = '1' THEN FTMTFA ELSE 0 END) AS montant_ventes_c, + 0::numeric AS montant_reglements_c, + SUM(CASE WHEN FTCCLH = '2' THEN FTMTFA ELSE 0 END) AS montant_ventes_h, + 0::numeric AS montant_reglements_h + FROM prod_shs.[ACTIVITESCHEMA]_FTP01 FTP01 + LEFT JOIN w_factures_comptables ON FTP01.FTDOSS = w_factures_comptables.FTDOSS AND + FTP01.FTDCPL = w_factures_comptables.FTDCPL + WHERE w_factures_comptables.FTDOSS IS NULL + GROUP BY 1,2,3,4,5,6; + + + INSERT INTO w_factures_comptables + SELECT + 'H'::text AS historique, + FDDOSS, + FDDCPL, + 0 AS facture_id, + to_char(FDDOSS,'FM00000000') || '.' || to_char(FDDCPL,'FM00') AS no_facture, + to_date(to_char(FDAMRG * 100 + 01,'FM00000000'), 'YYYYMMDD') + interval '1 month' - interval '1 day' AS date_comptable, + 0::numeric AS montant_ventes_c, + SUM(CASE WHEN FDCCLH = '1' THEN FDMPRM + FDMPOD ELSE 0 END) AS montant_reglements_c, + 0::numeric AS montant_ventes_h, + SUM(CASE WHEN FDCCLH = '2' THEN FDMPRM + FDMPOD ELSE 0 END) AS montant_reglements_h + FROM prod_shs.[ACTIVITESCHEMA]h_FDP03H + JOIN w_factures_comptables ON FDDOSS = w_factures_comptables.FTDOSS AND + FDDCPL = w_factures_comptables.FTDCPL AND + historique = 'H' + WHERE FDAMRG >= [ENV_ADM_ANNEEDEBUT]01 + GROUP BY 1,2,3,4,5,6; + + INSERT INTO w_factures_comptables + SELECT + 'P'::text AS historique, + FDDOSS, + FDDCPL, + 0 AS facture_id, + to_char(FDDOSS,'FM00000000') || '.' || to_char(FDDCPL,'FM00') AS no_facture, + to_date(to_char(FDAMRG * 100 + 01,'FM00000000'), 'YYYYMMDD') + interval '1 month' - interval '1 day' AS date_comptable, + 0::numeric AS montant_ventes_c, + SUM(CASE WHEN FDCCLH = '1' THEN FDMPRM + FDMPOD ELSE 0 END) AS montant_reglements_c, + 0::numeric AS montant_ventes_h, + SUM(CASE WHEN FDCCLH = '2' THEN FDMPRM + FDMPOD ELSE 0 END) AS montant_reglements_h + FROM prod_shs.[ACTIVITESCHEMA]p_FDP03P + JOIN w_factures_comptables ON FDDOSS = w_factures_comptables.FTDOSS AND + FDDCPL = w_factures_comptables.FTDCPL AND + historique = 'P' + WHERE FDAMRG >= [ENV_ADM_ANNEEDEBUT]01 + GROUP BY 1,2,3,4,5,6; + + + INSERT INTO w_factures_comptables + SELECT + ''::text AS historique, + FDDOSS, + FDDCPL, + 0 AS facture_id, + to_char(FDDOSS,'FM00000000') || '.' || to_char(FDDCPL,'FM00') AS no_facture, + to_date(to_char(FDAMRG * 100 + 01,'FM00000000'), 'YYYYMMDD') + interval '1 month' - interval '1 day' AS date_comptable, + 0::numeric AS montant_ventes_c, + SUM(CASE WHEN FDCCLH = '1' THEN FDMPRM + FDMPOD ELSE 0 END) AS montant_reglements_c, + 0::numeric AS montant_ventes_h, + SUM(CASE WHEN FDCCLH = '2' THEN FDMPRM + FDMPOD ELSE 0 END) AS montant_reglements_h + FROM prod_shs.[ACTIVITESCHEMA]_FDP03 + JOIN w_factures_comptables ON FDDOSS = w_factures_comptables.FTDOSS AND + FDDCPL = w_factures_comptables.FTDCPL AND + historique = '' + WHERE FDAMRG >= [ENV_ADM_ANNEEDEBUT]01 + GROUP BY 1,2,3,4,5,6; + + + + + + INSERT INTO activite[PX].p_factures_comptables( + facture_id, + no_facture, + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_ventes_h, + montant_reglements_h) + + SELECT + facture_id, + no_facture, + date_comptable, + SUM(montant_ventes_c), + SUM(montant_reglements_c), + SUM(montant_ventes_h), + SUM(montant_reglements_h) + FROM w_factures_comptables + WHERE date_comptable >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1,2,3; + + ]]> + + + + + + + + + + + + + + 0 + WHERE t_tiers_payant.code_original = CFCCAI AND + COALESCE(t_tiers_payant.grand_regime_id,0) = 0 AND + t_grands_regimes.oid <> 0; + + -- Adresses des tiers + INSERT INTO base.t_codes_postaux(code, texte, texte_court, departement_id) + SELECT CACODP, MAX(CAVILE), MAX(CAVILE), MAX(t_departements.oid) + FROM prod_shs.[ACTIVITESCHEMA]_CAP01 + LEFT JOIN base.t_codes_postaux ON CACODP = t_codes_postaux.code + JOIN base.t_departements ON + CACODP NOT LIKE '97%' AND substr(CACODP,1,2) = t_departements.code OR + CACODP LIKE '97%' AND substr(CACODP,1,3) = t_departements.code + WHERE t_codes_postaux.oid IS NULL + GROUP BY 1 + ; + + + UPDATE activite[PX].t_tiers_payant SET + adresse = CAADRE || ' ' || CAADRS, + code_postal_id = COALESCE(t_codes_postaux.oid,0), + ville = CAVILE, + telephone = CATLPH, + fax = CAFAXC + FROM prod_shs.[ACTIVITESCHEMA]_CAP01 + LEFT JOIN base.t_codes_postaux ON CACODP = t_codes_postaux.code + WHERE t_tiers_payant.code_original = CACCAI AND + ( + adresse IS DISTINCT FROM (CAADRE || ' ' || CAADRS) OR + code_postal_id IS DISTINCT FROM COALESCE(t_codes_postaux.oid,0) OR + ville IS DISTINCT FROM CAVILE OR + telephone IS DISTINCT FROM CATLPH OR + fax IS DISTINCT FROM CAFAXC + ) + ; + + ]]> + + + + '' + AND spe.code_original IS NULL + ORDER BY SPCSPE; + + INSERT INTO activite[PX].t_specialites_medecin(oid, code, code_original, texte, texte_court) + SELECT 0, '', '0', 'Non saisie', 'Non saisie' + WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_specialites_medecin); + + + + + INSERT INTO base.t_medecins(oid, nom, prenom, numero_ordre, specialite_id ) + SELECT 0, 'Non renseigné', '', '', 0 WHERE 0 NOT IN (SELECT oid FROM base.t_medecins); + + INSERT INTO activite[PX].t_medecins_administratifs(oid, code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT 0, '0', '****', 'Non renseigné', '', 0, 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_medecins_administratifs); + + DROP TABLE IF EXISTS w_medecins; + CREATE TEMP TABLE w_medecins AS + SELECT + to_char(MDPRAT,'FM0000') AS MDPRAT, + base.cti_soundex_nom(MDNOMS) AS MDNOMS_SOUNDEX, + base.cti_soundex_nom(COALESCE(MDPRES,'')) AS MDPRES_SOUNDEX, + MDNOMS, + COALESCE(MDPRES,'') AS MDPRES, + COALESCE(MDNIOM,'') AS MDNIOM, + MDCSPE, + COALESCE(t_medecins_administratifs.medecin_id,0) as medecin_id + FROM prod_shs.[ACTIVITESCHEMA]_MDP01 + LEFT JOIN activite[PX].t_medecins_administratifs ON to_char(MDPRAT,'FM0000') = t_medecins_administratifs.code_original; + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.MDNOMS, w_medecins.MDPRES, w_medecins.MDNIOM, 0 FROM + (SELECT SUBSTR(MDNOMS_SOUNDEX, 1, 8) AS MDNOMS_SOUNDEX, SUBSTR(MDPRES_SOUNDEX, 1, 8) AS MDPRES_SOUNDEX, MDNIOM, MIN(MDPRAT) AS MDPRAT + FROM w_medecins + GROUP BY 1,2,3) subview, w_medecins + WHERE w_medecins.MDPRAT = subview.MDPRAT + AND subview.MDNOMS_SOUNDEX || ',' || subview.MDPRES_SOUNDEX || ',' || subview.MDNIOM NOT IN + (SELECT substr(base.cti_soundex_nom(nom),1,8) || ',' || substr(base.cti_soundex_nom(prenom),1,8) || ',' || numero_ordre FROM base.t_medecins); + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.MDNOMS, w_medecins.MDPRES, w_medecins.MDNIOM, 0 FROM + (SELECT MDNOMS_SOUNDEX, MDPRES_SOUNDEX, MIN(MDPRAT) AS MDPRAT + FROM w_medecins + GROUP BY 1,2) subview, w_medecins + WHERE w_medecins.MDPRAT = subview.MDPRAT + AND subview.MDNOMS_SOUNDEX || ',' || subview.MDPRES_SOUNDEX NOT IN + (SELECT base.cti_soundex_nom(nom) || ',' || base.cti_soundex_nom(prenom) FROM base.t_medecins); + + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT substr(base.cti_soundex_nom(nom),1,8) as nom , substr(base.cti_soundex_nom(prenom),1,8) as prenom, numero_ordre, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2,3) subview + WHERE SUBSTR(MDNOMS_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(MDPRES_SOUNDEX, 1, 8) = subview.prenom + AND MDNIOM = subview.numero_ordre + AND w_medecins.medecin_id = 0; + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT base.cti_soundex_nom(nom) as nom , base.cti_soundex_nom(prenom) as prenom, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2) subview + WHERE SUBSTR(MDNOMS_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(MDPRES_SOUNDEX, 1, 8) = subview.prenom + AND w_medecins.medecin_id = 0; + + INSERT INTO activite[PX].t_medecins_administratifs(code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT DISTINCT MDPRAT, MDPRAT, MDNOMS, MDPRES, COALESCE(t_specialites_medecin.oid,0), medecin_id + FROM w_medecins + LEFT JOIN base.t_specialites_medecin ON (MDCSPE = t_specialites_medecin.code_original) + WHERE MDPRAT NOT IN (SELECT code_original FROM activite[PX].t_medecins_administratifs); + + UPDATE activite[PX].t_medecins_administratifs + SET nom = MDNOMS, + prenom = MDPRES, + specialite_id = COALESCE(t_specialites_medecin.oid,0), + medecin_id = w_medecins.medecin_id + FROM w_medecins LEFT JOIN base.t_specialites_medecin ON (MDCSPE = t_specialites_medecin.code_original) + WHERE w_medecins.MDPRAT = t_medecins_administratifs.code_original + AND ( + t_medecins_administratifs.nom <> MDNOMS OR + t_medecins_administratifs.prenom <> MDPRES OR + t_medecins_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid,0) OR + t_medecins_administratifs.medecin_id <> w_medecins.medecin_id + ); + + UPDATE base.t_medecins SET specialite_id = subview.specialite_id + FROM + (SELECT t_medecins.oid, MIN(t_medecins_administratifs.specialite_id) as specialite_id + FROM base.t_medecins, activite[PX].t_medecins_administratifs , base.t_specialites_medecin + WHERE t_medecins.oid = t_medecins_administratifs.medecin_id + AND t_medecins_administratifs.specialite_id = t_specialites_medecin.oid + GROUP BY t_medecins.oid) subview + WHERE t_medecins.oid = subview.oid AND t_medecins.oid <> 0 AND t_medecins.specialite_id = 0; + + -- Code rpps + UPDATE base.t_medecins + SET code_rpps = subview.RPPS + FROM + ( + SELECT medecin_id, count(DISTINCT MDRPPS), MAX(MDRPPS::text) AS RPPS + FROM activite[PX].t_medecins_administratifs + JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid + JOIN prod_shs.[ACTIVITESCHEMA]_MDP03 ON code_original = to_char(MDPRAT,'FM0000') + WHERE MDRPPS <> 0 AND + t_medecins.code_rpps = '' AND + medecin_id <> 0 + GROUP BY 1 + HAVING count(DISTINCT MDRPPS) = 1 + ) subview + WHERE t_medecins.oid = subview.medecin_id + ; + + -- Adresse + INSERT INTO base.t_codes_postaux(code, texte, texte_court, departement_id) + SELECT MDCODP, MAX(MDVIL1), MAX(MDVIL1), MAX(t_departements.oid) + FROM prod_shs.[ACTIVITESCHEMA]_MDP01 + LEFT JOIN base.t_codes_postaux ON MDCODP = t_codes_postaux.code + JOIN base.t_departements ON + MDCODP NOT LIKE '97%' AND substr(MDCODP,1,2) = t_departements.code OR + MDCODP LIKE '97%' AND substr(MDCODP,1,3) = t_departements.code + WHERE t_codes_postaux.oid IS NULL + GROUP BY 1 + ; + + + UPDATE activite[PX].t_medecins_administratifs SET + adresse = MDADRE || ' ' || MDADS1, + code_postal_id = COALESCE(t_codes_postaux.oid,0), + ville = MDVIL1, + telephone = MDTLPH, + fax = MDTLPF, + no_adeli = MDNIOM + FROM prod_shs.[ACTIVITESCHEMA]_MDP01 + LEFT JOIN base.t_codes_postaux ON MDCODP = t_codes_postaux.code + WHERE t_medecins_administratifs.code_original = to_char(MDPRAT,'FM0000') AND + ( + adresse IS DISTINCT FROM (MDADRE || ' ' || MDADS1) OR + code_postal_id IS DISTINCT FROM COALESCE(t_codes_postaux.oid,0) OR + ville IS DISTINCT FROM MDVIL1 OR + telephone IS DISTINCT FROM MDTLPH OR + fax IS DISTINCT FROM MDTLPF OR + no_adeli IS DISTINCT FROM MDNIOM + ) + ; + + + + ]]> + + + + 0 + AND t_codes_postaux.departement_id = 0 + AND t_departements.code = substring(t_codes_postaux.code, 1, 2); + + UPDATE base.t_codes_postaux SET + departement_id = t_departements.oid + FROM base.t_departements + WHERE 1=1 + AND substring(t_codes_postaux.code, 1, 2) IN ('97', '98') + AND t_codes_postaux.oid <> 0 + AND t_codes_postaux.departement_id = 0 + AND t_departements.code = substring(t_codes_postaux.code, 1, 3); + + + SELECT base.cti_reorganize_codes_postaux_c('activite'); + + ]]> + + + + '' AND + SOCSER NOT IN (SELECT code_original FROM activite[PX].t_services_facturation) + GROUP BY SOCSER + ORDER BY 1; + + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, nb_lits) + SELECT SOCSER, SOCSER,SOCSER, SOCSER, 0 + FROM prod_shs.[ACTIVITESCHEMA]p_SOP01P + WHERE SOCSER <> '' AND + SOCSER NOT IN (SELECT code_original FROM activite[PX].t_services_facturation) + GROUP BY SOCSER + ORDER BY 1; + + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, nb_lits) + SELECT SOCSER, SOCSER,SOCSER, SOCSER, 0 + FROM prod_shs.[ACTIVITESCHEMA]h_SOP01H + WHERE SOCSER <> '' AND + SOCSER NOT IN (SELECT code_original FROM activite[PX].t_services_facturation) + GROUP BY SOCSER + ORDER BY 1; + + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, nb_lits) + SELECT ADCSER, ADCSER,ADCSER, ADCSER, 0 + FROM prod_shs.[ACTIVITESCHEMA]_ADP01 + WHERE ADCSER <> '' AND + ADCSER NOT IN (SELECT code_original FROM activite[PX].t_services_facturation) + GROUP BY ADCSER + ORDER BY 1; + + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, nb_lits) + SELECT ADCSER, ADCSER,ADCSER, ADCSER, 0 + FROM prod_shs.[ACTIVITESCHEMA]p_ADP01P + WHERE ADCSER <> '' AND + ADCSER NOT IN (SELECT code_original FROM activite[PX].t_services_facturation) + GROUP BY ADCSER + ORDER BY 1; + + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, nb_lits) + SELECT ADCSER, ADCSER,ADCSER, ADCSER, 0 + FROM prod_shs.[ACTIVITESCHEMA]h_ADP01H + WHERE ADCSER <> '' AND + ADCSER NOT IN (SELECT code_original FROM activite[PX].t_services_facturation) + GROUP BY ADCSER + ORDER BY 1; + + + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, nb_lits) + SELECT MFCSER, MFCSER,MFCSER, MFCSER, 0 + FROM prod_shs.[ACTIVITESCHEMA]_MFP01CLI + WHERE MFCSER <> '' AND + MFCSER NOT IN (SELECT code_original FROM activite[PX].t_services_facturation) + GROUP BY MFCSER + ORDER BY 1; + + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, nb_lits) + SELECT MFCSER, MFCSER,MFCSER, MFCSER, 0 + FROM prod_shs.[ACTIVITESCHEMA]p_MFP01CLIP + WHERE MFCSER <> '' AND + MFCSER NOT IN (SELECT code_original FROM activite[PX].t_services_facturation) + GROUP BY MFCSER + ORDER BY 1; + + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, nb_lits) + SELECT MFCSER, MFCSER,MFCSER, MFCSER, 0 + FROM prod_shs.[ACTIVITESCHEMA]h_MFP01CLIH + WHERE MFCSER <> '' AND + MFCSER NOT IN (SELECT code_original FROM activite[PX].t_services_facturation) + GROUP BY MFCSER + ORDER BY 1; + + + UPDATE activite[PX].t_services_facturation + SET mode_traitement_id = COALESCE(t_modes_traitement.oid,0) + FROM prod_shs.[ACTIVITESCHEMA]_SFP01 + LEFT JOIN base.t_modes_traitement ON substr(SFCDMT,1,2) = t_modes_traitement.code + WHERE t_services_facturation.code_original = SFCSER AND + COALESCE(mode_traitement_id,0) = 0 AND + COALESCE(mode_traitement_id,0) <> COALESCE(t_modes_traitement.oid,0); + + UPDATE activite[PX].t_services_facturation + SET dmt_id = COALESCE(t_dmt.oid,0) + FROM prod_shs.[ACTIVITESCHEMA]_SFP01 + LEFT JOIN base.t_dmt ON substr(SFCDMT,3,3) = t_dmt.code + WHERE t_services_facturation.code_original = SFCSER AND + COALESCE(dmt_id,0) = 0 AND + COALESCE(dmt_id,0) <> COALESCE(t_dmt.oid,0); + + + -- Unités médicales + + INSERT INTO activite[PX].t_unites_medicales(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_medicales); + + INSERT INTO activite[PX].t_unites_medicales(code_original, code, texte, texte_court) + SELECT L3CDUM, L3CDUM, L3LBUM, L3LBUM + FROM prod_shs.[PMSISCHEMA]_L3P01 + WHERE L3CDUM NOT IN (SELECT code_original FROM activite[PX].t_unites_medicales) + ORDER BY L3CDUM; + + + -- Activités + + INSERT INTO activite[PX].t_activites(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_activites); + + INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court) + SELECT ASACTI, ASACTI, ASINTS, ASINTS + FROM prod_shs.[ACTIVITESCHEMA]_ASP01 + WHERE ASACTI NOT IN (SELECT code_original FROM activite[PX].t_activites) + ORDER BY ASACTI; + + + INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court) + SELECT SOACTI, SOACTI,SOACTI, SOACTI + FROM prod_shs.[ACTIVITESCHEMA]_SOP01 + WHERE SOACTI <> '' AND + SOACTI NOT IN (SELECT code_original FROM activite[PX].t_activites) + GROUP BY SOACTI + ORDER BY 1; + + INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court) + SELECT SOACTI, SOACTI,SOACTI, SOACTI + FROM prod_shs.[ACTIVITESCHEMA]p_SOP01P + WHERE SOACTI <> '' AND + SOACTI NOT IN (SELECT code_original FROM activite[PX].t_activites) + GROUP BY SOACTI + ORDER BY 1; + + INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court) + SELECT SOACTI, SOACTI,SOACTI, SOACTI + FROM prod_shs.[ACTIVITESCHEMA]h_SOP01H + WHERE SOACTI <> '' AND + SOACTI NOT IN (SELECT code_original FROM activite[PX].t_activites) + GROUP BY SOACTI + ORDER BY 1; + + INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court) + SELECT ADACTI, ADACTI,ADACTI, ADACTI + FROM prod_shs.[ACTIVITESCHEMA]_ADP01 + WHERE ADACTI <> '' AND + ADACTI NOT IN (SELECT code_original FROM activite[PX].t_activites) + GROUP BY ADACTI + ORDER BY 1; + + INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court) + SELECT ADACTI, ADACTI,ADACTI, ADACTI + FROM prod_shs.[ACTIVITESCHEMA]p_ADP01P + WHERE ADACTI <> '' AND + ADACTI NOT IN (SELECT code_original FROM activite[PX].t_activites) + GROUP BY ADACTI + ORDER BY 1; + + INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court) + SELECT ADACTI, ADACTI,ADACTI, ADACTI + FROM prod_shs.[ACTIVITESCHEMA]h_ADP01H + WHERE ADACTI <> '' AND + ADACTI NOT IN (SELECT code_original FROM activite[PX].t_activites) + GROUP BY ADACTI + ORDER BY 1; + + INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court) + SELECT MFACTI, MFACTI,MFACTI, MFACTI + FROM prod_shs.[ACTIVITESCHEMA]_MFP01CLI + WHERE MFACTI <> '' AND + MFACTI NOT IN (SELECT code_original FROM activite[PX].t_activites) + GROUP BY MFACTI + ORDER BY 1; + + INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court) + SELECT MFACTI, MFACTI,MFACTI, MFACTI + FROM prod_shs.[ACTIVITESCHEMA]p_MFP01CLIP + WHERE MFACTI <> '' AND + MFACTI NOT IN (SELECT code_original FROM activite[PX].t_activites) + GROUP BY MFACTI + ORDER BY 1; + + INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court) + SELECT MFACTI, MFACTI,MFACTI, MFACTI + FROM prod_shs.[ACTIVITESCHEMA]h_MFP01CLIH + WHERE MFACTI <> '' AND + MFACTI NOT IN (SELECT code_original FROM activite[PX].t_activites) + GROUP BY MFACTI + ORDER BY 1; + + -- Etages et lits + + INSERT INTO activite[PX].t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_etages); + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT CHETAG, CHETAG, MAX(CASE WHEN CHINTS <> '' THEN CHINTS ELSE CHETAG END),MAX( CASE WHEN CHINTS <> '' THEN CHINTS ELSE CHETAG END), MAX(CHNLIT) + FROM prod_shs.[ACTIVITESCHEMA]_CHP01 + WHERE CHACTI = '' AND CHCHLT = '' AND + CHETAG NOT IN (SELECT code_original FROM activite[PX].t_etages) + GROUP BY 1,2 + ORDER BY 1; + + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT SOETAG, SOETAG,SOETAG, SOETAG, 0 + FROM prod_shs.[ACTIVITESCHEMA]_SOP01 + WHERE SOETAG <> '' AND + SOETAG NOT IN (SELECT code_original FROM activite[PX].t_etages) + GROUP BY SOETAG + ORDER BY 1; + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT SOETAG, SOETAG,SOETAG, SOETAG, 0 + FROM prod_shs.[ACTIVITESCHEMA]p_SOP01P + WHERE SOETAG <> '' AND + SOETAG NOT IN (SELECT code_original FROM activite[PX].t_etages) + GROUP BY SOETAG + ORDER BY 1; + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT SOETAG, SOETAG,SOETAG, SOETAG, 0 + FROM prod_shs.[ACTIVITESCHEMA]h_SOP01H + WHERE SOETAG <> '' AND + SOETAG NOT IN (SELECT code_original FROM activite[PX].t_etages) + GROUP BY SOETAG + ORDER BY 1; + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT ADETAG, ADETAG, ADETAG, ADETAG, 0 + FROM prod_shs.[ACTIVITESCHEMA]_ADP01 + WHERE ADETAG <> '' AND + ADETAG NOT IN (SELECT code_original FROM activite[PX].t_etages) + GROUP BY ADETAG + ORDER BY 1; + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT ADETAG, ADETAG, ADETAG, ADETAG, 0 + FROM prod_shs.[ACTIVITESCHEMA]p_ADP01P + WHERE ADETAG <> '' AND + ADETAG NOT IN (SELECT code_original FROM activite[PX].t_etages) + GROUP BY ADETAG + ORDER BY 1; + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT ADETAG, ADETAG, ADETAG, ADETAG, 0 + FROM prod_shs.[ACTIVITESCHEMA]h_ADP01H + WHERE ADETAG <> '' AND + ADETAG NOT IN (SELECT code_original FROM activite[PX].t_etages) + GROUP BY ADETAG + ORDER BY 1; + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT MFETAG, MFETAG, MFETAG, MFETAG, 0 + FROM prod_shs.[ACTIVITESCHEMA]_MFP01CLI + WHERE MFETAG <> '' AND + MFETAG NOT IN (SELECT code_original FROM activite[PX].t_etages) + GROUP BY MFETAG + ORDER BY 1; + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT MFETAG, MFETAG, MFETAG, MFETAG, 0 + FROM prod_shs.[ACTIVITESCHEMA]p_MFP01CLIP + WHERE MFETAG <> '' AND + MFETAG NOT IN (SELECT code_original FROM activite[PX].t_etages) + GROUP BY MFETAG + ORDER BY 1; + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT MFETAG, MFETAG, MFETAG, MFETAG, 0 + FROM prod_shs.[ACTIVITESCHEMA]h_MFP01CLIH + WHERE MFETAG <> '' AND + MFETAG NOT IN (SELECT code_original FROM activite[PX].t_etages) + GROUP BY MFETAG + ORDER BY 1; + + UPDATE activite[PX].t_lits + SET code_original = t_etages.code_original || '|' || t_lits.code_original + FROM activite[PX].t_etages + WHERE t_lits.etage_id = t_etages.oid AND t_lits.code_original NOT LIKE '%|%'; + + UPDATE activite[PX].t_lits + SET code_original = '|' + WHERE oid = 0; + + INSERT INTO activite[PX].t_lits(oid, code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0, 'N' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_lits); + + INSERT INTO activite[PX].t_lits(code, code_original, texte, texte_court, etage_id) + SELECT '****', t_etages.code_original || '|' , 'Non renseigné', 'Non renseigné', t_etages.oid + FROM activite[PX].t_etages LEFT JOIN activite[PX].t_lits ON t_etages.oid = t_lits.etage_id AND t_lits.code_original = t_etages.code_original || '|' + WHERE t_etages.code_original <> '' AND t_lits.oid IS NULL; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT CHETAG || '|' || CHCHLT, CHCHLT, CASE WHEN CHINTS <> '' THEN CHINTS ELSE CHCHLT END, CASE WHEN CHINTS <> '' THEN CHINTS ELSE CHCHLT END, + t_etages.oid, CASE WHEN CHCHLT <> '' AND SUBSTR(CHCHLT,5,1) = '' THEN 'O' ELSE 'N' END + FROM prod_shs.[ACTIVITESCHEMA]_CHP01 JOIN activite[PX].t_etages ON CHETAG = t_etages.code_original + WHERE CHACTI = '' AND CHCHLT <> '' AND + CHETAG || '|' || CHCHLT NOT IN (SELECT code_original FROM activite[PX].t_lits) + ORDER BY 1; + + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT SOETAG || '|' || SOCHLT, SOCHLT, SOCHLT, SOCHLT, + t_etages.oid, CASE WHEN SOCHLT <> '' AND SUBSTR(SOCHLT,5,1) = '' THEN 'O' ELSE 'N' END + FROM prod_shs.[ACTIVITESCHEMA]_SOP01 JOIN activite[PX].t_etages ON SOETAG = t_etages.code_original + WHERE SOETAG <> '' AND SOCHLT <> '' AND + SOETAG || '|' || SOCHLT NOT IN (SELECT code_original FROM activite[PX].t_lits) + GROUP BY SOETAG, SOCHLT, t_etages.oid + ORDER BY SOETAG, SOCHLT; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT SOETAG || '|' || SOCHLT, SOCHLT, SOCHLT, SOCHLT, + t_etages.oid, CASE WHEN SOCHLT <> '' AND SUBSTR(SOCHLT,5,1) = '' THEN 'O' ELSE 'N' END + FROM prod_shs.[ACTIVITESCHEMA]p_SOP01P JOIN activite[PX].t_etages ON SOETAG = t_etages.code_original + WHERE SOETAG <> '' AND SOCHLT <> '' AND + SOETAG || '|' || SOCHLT NOT IN (SELECT code_original FROM activite[PX].t_lits) + GROUP BY SOETAG, SOCHLT, t_etages.oid + ORDER BY SOETAG, SOCHLT; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT SOETAG || '|' || SOCHLT, SOCHLT, SOCHLT, SOCHLT, + t_etages.oid, CASE WHEN SOCHLT <> '' AND SUBSTR(SOCHLT,5,1) = '' THEN 'O' ELSE 'N' END + FROM prod_shs.[ACTIVITESCHEMA]h_SOP01H JOIN activite[PX].t_etages ON SOETAG = t_etages.code_original + WHERE SOETAG <> '' AND SOCHLT <> '' AND + SOETAG || '|' || SOCHLT NOT IN (SELECT code_original FROM activite[PX].t_lits) + GROUP BY SOETAG, SOCHLT, t_etages.oid + ORDER BY SOETAG, SOCHLT; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT ADETAG || '|' || ADCHLT, ADCHLT, ADCHLT, ADCHLT, + t_etages.oid, CASE WHEN ADCHLT <> '' AND SUBSTR(ADCHLT,5,1) = '' THEN 'O' ELSE 'N' END + FROM prod_shs.[ACTIVITESCHEMA]_ADP01 JOIN activite[PX].t_etages ON ADETAG = t_etages.code_original + WHERE ADETAG <> '' AND ADCHLT <> '' AND + ADETAG || '|' || ADCHLT NOT IN (SELECT code_original FROM activite[PX].t_lits) + GROUP BY ADETAG, ADCHLT, t_etages.oid + ORDER BY ADETAG, ADCHLT; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT ADETAG || '|' || ADCHLT, ADCHLT, ADCHLT, ADCHLT, + t_etages.oid, CASE WHEN ADCHLT <> '' AND SUBSTR(ADCHLT,5,1) = '' THEN 'O' ELSE 'N' END + FROM prod_shs.[ACTIVITESCHEMA]p_ADP01P JOIN activite[PX].t_etages ON ADETAG = t_etages.code_original + WHERE ADETAG <> '' AND ADCHLT <> '' AND + ADETAG || '|' || ADCHLT NOT IN (SELECT code_original FROM activite[PX].t_lits) + GROUP BY ADETAG, ADCHLT, t_etages.oid + ORDER BY ADETAG, ADCHLT; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT ADETAG || '|' || ADCHLT, ADCHLT, ADCHLT, ADCHLT, + t_etages.oid, CASE WHEN ADCHLT <> '' AND SUBSTR(ADCHLT,5,1) = '' THEN 'O' ELSE 'N' END + FROM prod_shs.[ACTIVITESCHEMA]h_ADP01H JOIN activite[PX].t_etages ON ADETAG = t_etages.code_original + WHERE ADETAG <> '' AND ADCHLT <> '' AND + ADETAG || '|' || ADCHLT NOT IN (SELECT code_original FROM activite[PX].t_lits) + GROUP BY ADETAG, ADCHLT, t_etages.oid + ORDER BY ADETAG, ADCHLT; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT MFETAG || '|' || MFCHLT, MFCHLT, MFCHLT, MFCHLT, + t_etages.oid, CASE WHEN MFCHLT <> '' AND SUBSTR(MFCHLT,5,1) = '' THEN 'O' ELSE 'N' END + FROM prod_shs.[ACTIVITESCHEMA]_MFP01CLI JOIN activite[PX].t_etages ON MFETAG = t_etages.code_original + WHERE MFETAG <> '' AND MFCHLT <> '' AND + MFETAG || '|' || MFCHLT NOT IN (SELECT code_original FROM activite[PX].t_lits) + GROUP BY MFETAG, MFCHLT, t_etages.oid + ORDER BY MFETAG, MFCHLT; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT MFETAG || '|' || MFCHLT, MFCHLT, MFCHLT, MFCHLT, + t_etages.oid, CASE WHEN MFCHLT <> '' AND SUBSTR(MFCHLT,5,1) = '' THEN 'O' ELSE 'N' END + FROM prod_shs.[ACTIVITESCHEMA]p_MFP01CLIP JOIN activite[PX].t_etages ON MFETAG = t_etages.code_original + WHERE MFETAG <> '' AND MFCHLT <> '' AND + MFETAG || '|' || MFCHLT NOT IN (SELECT code_original FROM activite[PX].t_lits) + GROUP BY MFETAG, MFCHLT, t_etages.oid + ORDER BY MFETAG, MFCHLT; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT MFETAG || '|' || MFCHLT, MFCHLT, MFCHLT, MFCHLT, + t_etages.oid, CASE WHEN MFCHLT <> '' AND SUBSTR(MFCHLT,5,1) = '' THEN 'O' ELSE 'N' END + FROM prod_shs.[ACTIVITESCHEMA]h_MFP01CLIH JOIN activite[PX].t_etages ON MFETAG = t_etages.code_original + WHERE MFETAG <> '' AND MFCHLT <> '' AND + MFETAG || '|' || MFCHLT NOT IN (SELECT code_original FROM activite[PX].t_lits) + GROUP BY MFETAG, MFCHLT, t_etages.oid + ORDER BY MFETAG, MFCHLT; + + UPDATE activite[PX].t_lits + SET chambre_particuliere = CASE WHEN split_part(code_original, '|', 2) <> '' AND SUBSTR(split_part(code_original, '|', 2),5,1) = '' THEN 'O' ELSE 'N' END + WHERE chambre_particuliere <> CASE WHEN split_part(code_original, '|', 2) <> '' AND SUBSTR(split_part(code_original, '|', 2),5,1) = '' THEN 'O' ELSE 'N' END AND + chambre_particuliere = ''; + + ]]> + + + + 'F' AND SUBSTR(SXCACA, 5 , 1) <> 'N' AND + SXCACA NOT IN (SELECT code FROM activite.t_prestations) + ORDER BY SXCACA; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court, clinique_honoraire) + SELECT SXCACA, SXCACA, SXINTS, SXINTS, CASE WHEN SXCCLH = '1' THEN 'C' WHEN SXCCLH = '2' THEN 'H' ELSE '' END + FROM + ( + SELECT 'FJ' AS SXCACA, 'FORFAIT JOURNALIER' AS SXINTS, '1' AS SXCCLH + UNION + SELECT 'N' AS SXCACA, 'SUPPLEMENT NUIT' AS SXINTS, '2' AS SXCCLH + UNION + SELECT 'F' AS SXCACA, 'SUPPLEMENT FERIE' AS SXINTS, '2' AS SXCCLH + UNION + SELECT 'DIV' AS SXCACA, 'DIVERS' AS SXINTS, '' AS SXCCLH + UNION + SELECT 'NOEMIE' AS SXCACA, 'ACOMPTES NOEMIE' AS SXINTS, '1' AS SXCCLH + ) SXP01 + WHERE SXCACA NOT IN (SELECT code FROM activite.t_prestations) + ORDER BY SXCACA; + + INSERT INTO activite[PX].t_risque(code, texte) + SELECT + ADCRIS, ADCRIS + FROM + prod_shs.[ACTIVITESCHEMA]_ADP01 + LEFT JOIN activite[PX].t_risque ON t_risque.code = ADCRIS + WHERE 1=1 + AND ADCRIS IS DISTINCT FROM NULL + AND t_risque.code IS NULL + GROUP BY 1,2; + + ]]> + + + + + + + + 'PJ' THEN t_prestations.code ELSE 'PJS' END AS prestation_mcode + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].t_lieux ON lieu_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_services_facturation.oid = service_facturation_id + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE date_fin >= '20170701' AND + date_debut >= '20170701' AND + type_t2a = '2' AND + prestation_id = ANY (SELECT to_id FROM activite.t_listes_contenu JOIN activite.t_listes ON liste_id = t_listes.oid AND t_listes.code = 'DMAP_MFS') AND + montant_comptabilise <> 0 AND + montant_comptabilise_1 <> 0 AND + round(prix_unitaire * nb_prestation,2) <> montant_comptabilise AND + abs(round(prix_unitaire * nb_prestation,2)) <> abs(montant_comptabilise)+(nb_prestation*18) + ORDER BY no_facture, prestation_id + ; + + -- Calcul tarif plein + UPDATE w_moins10 SET + montant_facture_1 = + CASE WHEN prestation_code = 'PJ' THEN round(prix_unitaire * nb_prestation * taux_1 / 100,2) - montant_fj + ELSE round(prix_unitaire * nb_prestation * taux_1 / 100,2) END, + montant_facture = + CASE WHEN prestation_code = 'PJ' THEN round(prix_unitaire * nb_prestation * taux_1 / 100,2) - montant_fj + ELSE round(prix_unitaire * nb_prestation * taux_1 / 100,2) END + + (montant_facture_2+montant_facture_22+montant_facture_0) + ; + + -- Génération prestations spécifiques + INSERT INTO activite.t_prestations (code, texte, texte_court) + SELECT prestation_mcode, t_prestations.texte || ' (-10%)', t_prestations.texte || ' (-10%)' + FROM w_moins10 + JOIN activite.t_prestations on prestation_id = t_prestations.oid + WHERE prestation_mcode NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + GROUP BY 1,2,3 + ; + + -- Maj tarif plein + UPDATE activite[PX].p_factures_lignes_c + SET montant_facture = w_moins10.montant_facture, montant_facture_1 = w_moins10.montant_facture_1 + FROM w_moins10 + WHERE p_factures_lignes_c.CTID = w_moins10.CTID_orig; + ; + + -- Génération -10% + UPDATE w_moins10 SET + montant_facture = montant_comptabilise - montant_facture, + montant_facture_1 = montant_comptabilise_1 - montant_facture_1, + montant_facture_2 = montant_comptabilise_2 - montant_facture_2, + montant_facture_22 = montant_comptabilise_22 - montant_facture_22, + montant_facture_0 = montant_comptabilise_0 - montant_facture_0, + montant_comptabilise = 0, + montant_comptabilise_1 = 0, + montant_comptabilise_2 = 0, + montant_comptabilise_22 = 0, + montant_comptabilise_0 = 0, + prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE t_prestations.code = prestation_mcode + ; + + ALTER TABLE w_moins10 DROP COLUMN CTID_orig; + ALTER TABLE w_moins10 DROP COLUMN montant_fj; + ALTER TABLE w_moins10 DROP COLUMN prestation_code; + ALTER TABLE w_moins10 DROP COLUMN prestation_mcode; + + INSERT INTO activite[PX].p_factures_lignes_c + SELECT * + FROM w_moins10 + WHERE montant_facture <> 0 + ; + + + SELECT activite[PX].cti_reorganize_rubrique_facture_c('activite[PX].p_factures_lignes_c'); + ]]> + + + + + 0 OR p_factures.montant_comptabilise_h <> 0) AND + p_factures.no_facture NOT IN (SELECT no_facture FROM activite[PX].p_factures_lignes_c WHERE date_fin < '20110101' ) AND + p_factures.no_facture NOT IN (SELECT no_facture FROM activite[PX].p_factures_lignes_h WHERE date_fin < '20110101' ); + + + INSERT INTO activite[PX].p_factures_lignes_c ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1, + origine_facturation_id + ) + SELECT + oid AS facture_id, + no_facture, + date_debut, + date_fin, + 0 AS nb_rubrique, + 0 AS nb_prestation, + 1 AS coefficient, + 1 AS coefficient_mco, + 0 AS rubrique_facturation_id, + 0 AS rubrique_comptabilisation_id, + 0 AS prestation_id, + montant_facture_c, + montant_facture_0_c, + montant_facture_1_c, + montant_facture_2_c, + montant_facture_22_c, + 0 AS taux_0, + 0 AS taux_1, + 0 AS taux_2, + 0 AS taux_22, + montant_facture_c AS prix_unitaire, + lieu_sortie_id AS lieu_id, + montant_comptabilise_c, + montant_comptabilise_0_c, + montant_comptabilise_1_c, + montant_comptabilise_2_c, + montant_comptabilise_22_c, + 0 AS montant_encours, + 0 AS montant_encours_0, + 0 AS montant_encours_1, + 0 AS montant_encours_2, + 0 AS montant_encours_22, + 0 AS montant_facture_actes_inclus_dans_sejour, + 0 AS montant_facture_0_actes_inclus_dans_sejour, + 0 AS montant_facture_1_actes_inclus_dans_sejour, + 0 AS montant_facture_2_actes_inclus_dans_sejour, + 0 AS montant_facture_22_actes_inclus_dans_sejour, + 0 AS montant_comptabilise_budget_global_1, + 1 AS origine_facturation_id + FROM w_factures_anciennes + WHERE montant_comptabilise_c <> 0; + + + INSERT INTO activite[PX].p_factures_soldes_c ( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + od_avoir, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + oid AS facture_id, + no_facture, + date_vente AS date_comptable, + 0 AS rubrique_comptabilisee_id, + 0 AS prestation_id, + '0' AS od_avoir, + montant_comptabilise_c, + montant_comptabilise_0_c, + montant_comptabilise_1_c, + montant_comptabilise_2_c, + montant_comptabilise_22_c, + 0 AS montant_regle, + 0 AS montant_regle_0, + 0 AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_factures_anciennes + WHERE montant_comptabilise_c <> 0; + + + + INSERT INTO activite[PX].p_factures_lignes_h ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + acte_id, + activite_ccam, + extension_ccam, + phase_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour + ) + SELECT + oid AS facture_id, + no_facture, + date_debut, + date_fin, + 0 AS nb_rubrique, + 0 AS nb_prestation, + 1 AS coefficient, + 1 AS coefficient_mco, + 0 AS medecin_facture_id, + 0 AS medecin_comptabilise_id, + 0 AS prestation_id, + 0 AS acte_id, + '' AS activite_ccam, + '' AS aextension_ccam, + '' AS aphase_ccam, + '' AS amodificateur_ccam_1, + '' AS amodificateur_ccam_2, + '' AS amodificateur_ccam_3, + '' AS amodificateur_ccam_4, + montant_facture_h, + montant_facture_0_h, + montant_facture_1_h, + montant_facture_2_h, + montant_facture_22_h, + 0 AS montant_depassement, + 0 AS taux_0, + 0 AS taux_1, + 0 AS taux_2, + 0 AS taux_22, + montant_facture_h AS prix_unitaire, + lieu_sortie_id AS lieu_id, + montant_comptabilise_h, + montant_comptabilise_0_h, + montant_comptabilise_1_h, + montant_comptabilise_2_h, + montant_comptabilise_22_h, + 0 AS montant_encours, + 0 AS montant_encours_0, + 0 AS montant_encours_1, + 0 AS montant_encours_2, + 0 AS montant_encours_22, + 0 AS montant_facture_actes_inclus_dans_sejour, + 0 AS montant_facture_0_actes_inclus_dans_sejour, + 0 AS montant_facture_1_actes_inclus_dans_sejour, + 0 AS montant_facture_2_actes_inclus_dans_sejour, + 0 AS montant_facture_22_actes_inclus_dans_sejour + FROM w_factures_anciennes + WHERE montant_comptabilise_h <> 0; + + + INSERT INTO activite[PX].p_factures_soldes_h ( + facture_id, + no_facture, + date_comptable, + medecin_comptabilise_id, + od_avoir, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + oid AS facture_id, + no_facture, + date_vente AS date_comptable, + 0 AS medecin_comptabilise_id, + '0' AS od_avoir, + montant_comptabilise_h, + montant_comptabilise_0_h, + montant_comptabilise_1_h, + montant_comptabilise_2_h, + montant_comptabilise_22_h, + 0 AS montant_regle, + 0 AS montant_regle_0, + 0 AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_factures_anciennes + WHERE montant_comptabilise_h <> 0; + + + ]]> + + + + '' + GROUP BY 1,2,3 + ORDER BY 1; + + -- Maj code postal sur séjours + UPDATE activite[PX].p_sejours + SET code_postal_id = t_codes_postaux.oid + FROM base.t_codes_postaux, w_ADP01 + WHERE w_ADP01.w_ADCODM = t_codes_postaux.code AND + p_sejours.no_sejour = '[CPX]' || w_ADP01.w_ADDOSS_a AND + w_ADP01.w_ADCODM IS NOT NULL AND w_ADP01.w_ADCODM <> '' AND + p_sejours.code_postal_id = 0; + + -- Maj table OID + INSERT INTO activite[PX].p_oids (code_table, oid) + SELECT 'c_postaux', code_postal_id + FROM activite[PX].p_sejours + WHERE code_postal_id NOT IN (SELECT oid FROM activite[PX].p_oids WHERE code_table = 'c_postaux') + GROUP BY 2; + + -- Ajout médecins traitants dans ACTIVITE (Ajouter dans BASE) + INSERT INTO activite[PX].t_medecins_traitants_administratifs(code_original, code, nom, prenom, specialite_id, no_rpps) + SELECT DISTINCT w_ADP01.w_ADMEDT, w_ADP01.w_ADMEDT, w_ADP01.w_ADMEDT, '', 0, '' + FROM w_ADP01 + WHERE w_ADMEDT NOT IN (SELECT code FROM activite[PX].t_medecins_traitants_administratifs); + + + -- maj code rpps + UPDATE activite[PX].t_medecins_traitants_administratifs + SET no_rpps = MDRPPS + FROM prod_shs.[ACTIVITESCHEMA]_MDP03 + WHERE MDPRAT = t_medecins_traitants_administratifs.code + AND (t_medecins_traitants_administratifs.no_rpps IS NULL OR t_medecins_traitants_administratifs.no_rpps = '' OR t_medecins_traitants_administratifs.no_rpps <> MDRPPS + AND MDRPPS IS not NULL AND MDRPPS <> 0 ); + + + -- maj nom prenom spe medecin de référence + UPDATE activite[PX].t_medecins_traitants_administratifs + SET nom = MDNOMS, + prenom = MDPRES, + specialite_id = COALESCE(t_specialites_medecin.oid,0) + FROM prod_shs.[ACTIVITESCHEMA]_MDP03 + JOIN prod_shs.[ACTIVITESCHEMA]_MDP01 ON [ACTIVITESCHEMA]_MDP03.MDPRAT = [ACTIVITESCHEMA]_MDP01.MDPRAT + LEFT JOIN base.t_specialites_medecin ON (MDCSPE = t_specialites_medecin.code_original) + WHERE [ACTIVITESCHEMA]_MDP03.MDPRAT = t_medecins_traitants_administratifs.code_original + AND ( + t_medecins_traitants_administratifs.nom <> MDNOMS OR + t_medecins_traitants_administratifs.prenom <> MDPRES OR + t_medecins_traitants_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid,0) + ); + + -- maj id médecin_traitant dans séjours + + UPDATE activite[PX].p_sejours + SET medecin_traitant_id = t_medecins_traitants_administratifs.oid + FROM w_ADP01 + JOIN activite[PX].t_medecins_traitants_administratifs ON w_ADP01.w_ADMEDT = t_medecins_traitants_administratifs.code + WHERE w_ADP01.w_ADDOSS_a = p_sejours.no_sejour AND + w_ADP01.w_ADMEDT IS NOT NULL AND + w_ADP01.w_ADMEDT <> '0000' AND + medecin_traitant_id IS DISTINCT FROM t_medecins_traitants_administratifs.oid + ; + + + + -- ajout des coordonnees par sejour + + DROP TABLE IF EXISTS w_ADP09 + ; + + CREATE TEMP TABLE w_ADP09 AS + SELECT * FROM ( + SELECT * FROM prod_shs.[ACTIVITESCHEMA]h_ADP09H + UNION + SELECT * FROM prod_shs.[ACTIVITESCHEMA]p_ADP09p + UNION + SELECT * FROM prod_shs.[ACTIVITESCHEMA]_ADP09 + ) subq + GROUP BY 1,2,3 + ; + + -- ajout des coordonnees par sejour + + DROP TABLE IF EXISTS w_ADP09 + ; + + CREATE TEMP TABLE w_ADP09 AS + SELECT * FROM ( + SELECT * FROM prod_shs.[ACTIVITESCHEMA]h_ADP09H + UNION + SELECT * FROM prod_shs.[ACTIVITESCHEMA]p_ADP09p + UNION + SELECT * FROM prod_shs.[ACTIVITESCHEMA]_ADP09 + ) subq + GROUP BY 1,2,3 + ; + + -- ajout des coordonnees par sejour + INSERT INTO activite[PX].p_coordonnees_patient ( + sejour_id, + adresse, + code_postal_id, + commune, + telephone_fixe, + telephone_portable, + email + ) + SELECT + p_sejours.oid, + MAX(w_ADAD1M || CASE WHEN w_ADAD2M != '' THEN ' - ' || w_ADAD2M ELSE '' END), + MAX(COALESCE(t_codes_postaux.oid,0)), + MAX(w_ADVILM), + MAX(w_ADTELM), + MAX(ADPORM), + MAX(ADMAIL) + FROM w_ADP01 + LEFT JOIN w_ADP09 ON w_ADDOSS = ADDOSS + LEFT JOIN base.t_codes_postaux ON w_ADCODM = t_codes_postaux.code + JOIN activite[PX].p_sejours ON code_original = w_ADDOSSDCPL + GROUP BY 1 + ; + ]]> + + + + '2099-12-31'; + + -- Montants facturés pour calculées non passées en fin de journée + UPDATE activite[PX].p_factures SET + montant_facture_c = subview.montant_facture_c, + montant_facture_0_c = subview.montant_facture_0_c, + montant_facture_1_c = subview.montant_facture_1_c, + montant_facture_2_c = subview.montant_facture_2_c, + montant_facture_22_c = subview.montant_facture_22_c + FROM + ( + SELECT p_factures.no_facture, + SUM(p_factures_lignes_c.montant_facture) AS montant_facture_c, + SUM(p_factures_lignes_c.montant_facture_0) AS montant_facture_0_c, + SUM(p_factures_lignes_c.montant_facture_1) AS montant_facture_1_c, + SUM(p_factures_lignes_c.montant_facture_2) AS montant_facture_2_c, + SUM(p_factures_lignes_c.montant_facture_22) AS montant_facture_22_c + from activite[PX].p_factures + join activite[PX].p_factures_lignes_c on p_factures.no_facture = p_factures_lignes_c.no_facture + WHERE p_factures.code_facture = '2' + GROUP BY 1 + ) subview + WHERE p_factures.no_facture = subview.no_facture AND + ( + p_factures.montant_facture_c IS DISTINCT FROM subview.montant_facture_c OR + p_factures.montant_facture_0_c IS DISTINCT FROM subview.montant_facture_0_c OR + p_factures.montant_facture_1_c IS DISTINCT FROM subview.montant_facture_1_c OR + p_factures.montant_facture_2_c IS DISTINCT FROM subview.montant_facture_2_c OR + p_factures.montant_facture_22_c IS DISTINCT FROM subview.montant_facture_22_c + ); + + UPDATE activite[PX].p_factures SET + montant_facture_h = subview.montant_facture_h, + montant_facture_0_h = subview.montant_facture_0_h, + montant_facture_1_h = subview.montant_facture_1_h, + montant_facture_2_h = subview.montant_facture_2_h, + montant_facture_22_h = subview.montant_facture_22_h + FROM + ( + SELECT p_factures.no_facture, + SUM(p_factures_lignes_h.montant_facture) AS montant_facture_h, + SUM(p_factures_lignes_h.montant_facture_0) AS montant_facture_0_h, + SUM(p_factures_lignes_h.montant_facture_1) AS montant_facture_1_h, + SUM(p_factures_lignes_h.montant_facture_2) AS montant_facture_2_h, + SUM(p_factures_lignes_h.montant_facture_22) AS montant_facture_22_h + from activite[PX].p_factures + join activite[PX].p_factures_lignes_h on p_factures.no_facture = p_factures_lignes_h.no_facture + WHERE p_factures.code_facture = '2' + GROUP BY 1 + ) subview + WHERE p_factures.no_facture = subview.no_facture AND + ( + p_factures.montant_facture_h IS DISTINCT FROM subview.montant_facture_h OR + p_factures.montant_facture_0_h IS DISTINCT FROM subview.montant_facture_0_h OR + p_factures.montant_facture_1_h IS DISTINCT FROM subview.montant_facture_1_h OR + p_factures.montant_facture_2_h IS DISTINCT FROM subview.montant_facture_2_h OR + p_factures.montant_facture_22_h IS DISTINCT FROM subview.montant_facture_22_h + ); + + + + ]]> + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour + + FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY p_sejours.no_sejour; + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = CASE WHEN w_sejours_total.date_expedition_0 <> '0001-01-01' THEN w_sejours_total.date_expedition_0 ELSE '2099-12-31' END, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = CASE WHEN w_sejours_total.date_expedition_1 <> '0001-01-01' THEN w_sejours_total.date_expedition_1 ELSE '2099-12-31' END, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = CASE WHEN w_sejours_total.date_expedition_2 <> '0001-01-01' THEN w_sejours_total.date_expedition_2 ELSE '2099-12-31' END, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = CASE WHEN w_sejours_total.date_expedition_22 <> '0001-01-01' THEN w_sejours_total.date_expedition_22 ELSE '2099-12-31' END, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_0 <> '0001-01-01' THEN w_sejours_total.date_expedition_0 ELSE '2099-12-31' END OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_1 <> '0001-01-01' THEN w_sejours_total.date_expedition_1 ELSE '2099-12-31' END OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_2 <> '0001-01-01' THEN w_sejours_total.date_expedition_2 ELSE '2099-12-31' END OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM CASE WHEN w_sejours_total.date_expedition_22 <> '0001-01-01' THEN w_sejours_total.date_expedition_22 ELSE '2099-12-31' END OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour + + ); + + + UPDATE activite[PX].p_sejours SET + + delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END, + delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END, + delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END, + delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END, + + delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END, + delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END, + + delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END, + delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END, + + delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END, + delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END, + + delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END, + delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END + + WHERE + + delai_groupage IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END + OR + delai_facture IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END + OR + delai_expedition IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END + OR + delai_solde IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END + OR + + delai_expedition_0 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END + OR + delai_solde_0 IS DISTINCT FROM CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END + OR + + delai_expedition_1 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END + OR + delai_solde_1 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END + OR + + delai_expedition_2 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END + OR + delai_solde_2 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END + OR + + delai_expedition_22 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END + OR + delai_solde_22 IS DISTINCT FROM CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END; + + -- SHS a la possibilité de fusionner des patients en double + -- Le lien se fait au travers du nom du patient dans lequel on retrouver la référence vers le "nouveau" patient / patient "maitre" + WITH lien_fusion_patient AS ( + SELECT p_sejours.no_sejour, ltrim(trim(split_part(p_patients.nom, 'VOIR IDENTITE', 2)), 0) as new_no_patient + FROM activite[PX].p_sejours + JOIN activite[PX].p_patients ON p_patients.no_patient = p_sejours.no_patient + WHERE p_patients.nom ilike '%VOIR IDENTITE%' + ) + UPDATE activite[PX].p_sejours + SET no_patient = lien_fusion_patient.new_no_patient + FROM lien_fusion_patient + WHERE 1=1 + AND p_sejours.no_sejour = lien_fusion_patient.no_sejour + AND p_sejours.no_patient IS DISTINCT FROM lien_fusion_patient.new_no_patient + ; + ]]> + + + + 0 AND + oid NOT IN (SELECT oid FROM activite[PX].t_unites_fonctionnelles); + ; + UPDATE activite[PX].t_lieux + SET unite_fonctionnelle_id = service_facturation_id + ; + ]]> + + + + + + + + + + + diff --git a/import_activite/iCTI_import_activite_SIGEMS.XML b/import_activite/iCTI_import_activite_SIGEMS.XML new file mode 100644 index 0000000..7898973 --- /dev/null +++ b/import_activite/iCTI_import_activite_SIGEMS.XML @@ -0,0 +1,12436 @@ + + + + + + + + to_char(to_number('00' || HEU_DOS,'0000'),'FM00'); + + + UPDATE prod_sigems.DOSSIER + SET MIN_DOS = to_char(to_number('00' || MIN_DOS,'0000'),'FM00') + WHERE MIN_DOS <> to_char(to_number('00' || MIN_DOS,'0000'),'FM00'); + + + UPDATE prod_sigems.SEJOUR + SET HEU_SEJ = to_char(to_number('00' || HEU_SEJ,'0000'),'FM00') + WHERE HEU_SEJ <> to_char(to_number('00' || HEU_SEJ,'0000'),'FM00'); + + + UPDATE prod_sigems.SEJOUR + SET MIN_SEJ = to_char(to_number('00' || MIN_SEJ,'0000'),'FM00') + WHERE MIN_SEJ <> to_char(to_number('00' || MIN_SEJ,'0000'),'FM00'); + + + UPDATE prod_sigems.DOSSIER + SET HEU_DOS = MIN_DOS + WHERE DEN_DOS = DSO_DOS AND MIN_DOS > HEU_DOS AND HEU_DOS = '00'; + + -- Correction médecin séjour pour récupérer médecin à la sortie + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'SIGEMS_MEDSEJ', + 'Transformation code médecin selon historique médecins', + '1', + '1=Récupérer médecin à la sortie, 0=Récupérer uniquement médecin séjour' + WHERE 'SIGEMS_MEDSEJ' NOT IN (SELECT code FROM activite.t_divers); + ; + + SELECT * + FROM base.cti_execute(' + UPDATE prod_sigems.DOSSIER + SET CCH_DOS = CCH_DOS_sortie + FROM + ( + SELECT annee, code, (MAX(Array[COALESCE(FIN,''20991231'')::text,SEJOUR_CLINIQUE.PRATICIEN]))[2] AS CCH_DOS_sortie + FROM prod_sigems.SEJOUR_CLINIQUE + JOIN prod_sigems.PRATICIEN ON SEJOUR_CLINIQUE.PRATICIEN = COD_PRA + WHERE praticien <> '''' + GROUP BY 1,2 + HAVING count(DISTINCT PRATICIEN) > 1 + ) subview + WHERE ANN_DOS = ANNEE AND COD_DOS = CODE AND + CCH_DOS <> CCH_DOS_sortie + ',1) + WHERE 'SIGEMS_MEDSEJ' IN (SELECT code FROM activite.t_divers WHERE code = 'SIGEMS_MEDSEJ' AND valeur = '1') + ; + + -- Transformation UF (refonte FICOM GHM Grenoble) + UPDATE prod_SIGEMS.DOSSIER + SET SER_DOS = TO_UF + FROM prod_sigems.DOSSIER_MDT, + activite.t_sigems_transformation_uf + WHERE DOSSIER.ANN_DOS = DOSSIER_MDT.ANN_DOS AND + DOSSIER.COD_DOS = DOSSIER_MDT.COD_DOS AND + SER_DOS = FROM_UF AND + MDT_REEL = FROM_MODE AND + CCH_DOS = FROM_MEDECIN AND + SER_DOS <> TO_UF + ; + + UPDATE prod_SIGEMS.SEJOUR + SET SER_SEJ = TO_UF + FROM prod_SIGEMS.DOSSIER, + prod_sigems.DOSSIER_MDT, + activite.t_sigems_transformation_uf + WHERE DOSSIER.ANN_DOS = SEJOUR.ANN_SEJ AND + DOSSIER.COD_DOS = SEJOUR.COD_SEJ AND + DOSSIER.ANN_DOS = DOSSIER_MDT.ANN_DOS AND + DOSSIER.COD_DOS = DOSSIER_MDT.COD_DOS AND + SER_SEJ = FROM_UF AND + MDT_REEL = FROM_MODE AND + CCH_DOS = FROM_MEDECIN AND + SER_SEJ <> TO_UF + ; + + + -- Correction etat factures sur factures nulles non éditées -> comptabilisées + UPDATE prod_sigems.dos2 + SET ETA_DOS2 = 5 + WHERE ETA_DOS2 = 2 AND DFA_DOS2 IS NOT NULL AND + SJ1_DOS2 = 0 AND SJ2_DOS2 = 0 AND SJ3_DOS2 = 0 AND + HO1_DOS2 = 0 AND HO2_DOS2 = 0 AND HO3_DOS2 = 0 + ; + + -- Correction TP1 (99999999 = patient) + UPDATE prod_sigems.DOS2 + SET CP1_DOS2 = '' + WHERE CP1_DOS2 = '99999999' AND + SJ1_DOS2 = 0 AND + HO1_DOS2 = 0 + ; + -- Correction TP2 (99999999 = patient) + UPDATE prod_sigems.DOS2 + SET CA2_DOS2 = '' + WHERE CA2_DOS2 = '99999999' AND + SJ2_DOS2 = 0 AND + HO2_DOS2 = 0 + ; + + -- Correction anomalie : séjours en double chez SIGEMS + SELECT base.cti_execute( + 'DELETE FROM prod_sigems.DOSSIER + USING + ( + SELECT ANN_DOS, COD_DOS, MAX(CTID) AS del_CTID + FROM prod_sigems.DOSSIER + GROUP BY 1,2 + HAVING count(*) > 1 + ) subview + WHERE DOSSIER.CTID = del_CTID',20); + + + -- Correction anomalie : Factures en double chez SIGEMS + DROP TABLE IF EXISTS w_DOS2_double; + CREATE TEMP TABLE w_DOS2_double AS + SELECT ANN_DOS2, + COD_DOS2, + IND_DOS2 + FROM prod_sigems.DOS2 + GROUP BY 1,2,3 + HAVING count(*) > 1 AND + SUM(CASE WHEN ETA_DOS2 >= 2 THEN 1 ELSE 0 END) = 1; + + DELETE FROM prod_sigems.DOS2 + USING w_DOS2_double + WHERE DOS2.ANN_DOS2 = w_DOS2_double.ANN_DOS2 AND + DOS2.COD_DOS2 = w_DOS2_double.COD_DOS2 AND + DOS2.IND_DOS2 = w_DOS2_double.IND_DOS2 AND + ETA_DOS2 <= 1; + + DELETE FROM prod_sigems.DOS2 + USING + ( + SELECT ANN_DOS2, COD_DOS2, IND_DOS2, MAX(CTID) AS del_CTID + FROM prod_sigems.dos2 + GROUP BY 1,2,3 + HAVING count(*) > 1 + ) subview + WHERE DOS2.CTID = del_CTID; + + DELETE FROM prod_sigems.DOS2 + USING + ( + SELECT ANN_DOS2, COD_DOS2, IND_DOS2, MAX(CTID) AS del_CTID + FROM prod_sigems.dos2 + GROUP BY 1,2,3 + HAVING count(*) > 1 + ) subview + WHERE DOS2.CTID = del_CTID; + + + -- Correction lignes affectée à indice 0 au lieu de 1 + UPDATE prod_sigems.LIG_CLINI + SET IND_LCL = 1 + FROM + ( + SELECT ANN_LCL, COD_LCL + FROM prod_sigems.LIG_CLINI + JOIN prod_sigems.DOS2 ON ANN_LCL = ANN_DOS2 AND COD_LCl = COD_DOS2 AND IND_DOS2 = 1 AND ETA_DOS2 >= 4 + WHERE IND_LCL IN (0,1) AND + (ML1_LCL <> 0 OR ML2_LCL <> 0 OR ML3_LCL <> 0) + GROUP BY 1,2 + HAVING MIN(IND_LCL) = 0 AND + MAX(SJ1_DOS2) = SUM(ML1_LCL) AND + MAX(SJ2_DOS2) = SUM(ML2_LCL) AND + MAX(SJ3_DOS2) = SUM(ML3_LCL) + ) SUBVIEW + WHERE LIG_CLINI.ANN_LCL = subview.ANN_LCL AND + LIG_CLINI.COD_LCL = subview.COD_LCL AND + LIG_CLINI.IND_LCL = 0; + + -- Lignes non facturées -> facture non calculée + UPDATE prod_sigems.LIG_CLINI + SET IND_LCL = IND_DOS2 + FROM prod_sigems.DOS2 + WHERE IND_LCL = 0 AND + ANN_LCL = ANN_DOS2 AND COD_LCL = COD_DOS2 AND + ETA_DOS2 <= 2 AND DDE_LCL BETWEEN DEN_DOS2 AND DSO_DOS2 AND + (ML1_LCL <> 0 OR + ML2_LCL <> 0 OR + ML3_LCL <> 0 OR + PUN_LCL <> 0); + + UPDATE prod_sigems.LIG_HONOR + SET IND_LHO = 1 + FROM + ( SELECT ANN_LHO, COD_LHO + FROM prod_sigems.LIG_HONOR + JOIN prod_sigems.DOS2 ON ANN_LHO = ANN_DOS2 AND COD_LHO = COD_DOS2 AND IND_DOS2 = 1 AND ETA_DOS2 >= 4 + WHERE IND_LHO IN (0,1) AND + (ML1_LHO <> 0 OR ML2_LHO <> 0 OR ML3_LHO <> 0) + GROUP BY 1,2 + HAVING MIN(IND_LHO) = 0 AND + MAX(HO1_DOS2) >= SUM(ML1_LHO) AND + MAX(HO2_DOS2) >= SUM(ML2_LHO) AND + MAX(HO3_DOS2) >= SUM(ML3_LHO) + ) SUBVIEW + WHERE LIG_HONOR.ANN_LHO = subview.ANN_LHO AND + LIG_HONOR.COD_LHO = subview.COD_LHO AND + LIG_HONOR.IND_LHO = 0; + + -- Lignes restées avec indice à 0 sur dossier en état 3 + UPDATE prod_sigems.LIG_CLINI + SET IND_LCL = subview.IND_DOS2 + FROM + ( + SELECT + ANN_DOS2, + COD_DOS2, + MAX(IND_DOS2) AS IND_DOS2, + SUM(LIG_CLINI_0.ML1_LCL), + SUM(LIG_CLINI_0.ML2_LCL), + SUM(LIG_CLINI_0.ML3_LCL) + FROM prod_sigems.DOS2 + LEFT JOIN prod_sigems.LIG_CLINI ON + LIG_CLINI.ANN_LCL = ANN_DOS2 AND + LIG_CLINI.COD_LCL = COD_DOS2 AND + LIG_CLINI.IND_LCL = IND_DOS2 AND + LIG_CLINI.PRO_LCL <> 'REGC' + JOIN prod_sigems.LIG_CLINI LIG_CLINI_0 ON + LIG_CLINI_0.ANN_LCL = ANN_DOS2 AND + LIG_CLINI_0.COD_LCL = COD_DOS2 AND + LIG_CLINI_0.IND_LCL = 0 + WHERE ETA_DOS2 IN (3,4) AND + ( + SJ1_DOS2 <> 0 OR + SJ2_DOS2 <> 0 OR + SJ3_DOS2 <> 0 + ) AND + LIG_CLINI.ANN_LCL IS NULL + GROUP BY 1,2 + HAVING + MAX(SJ1_DOS2) = SUM(LIG_CLINI_0.ML1_LCL) AND + MAX(SJ2_DOS2) = SUM(LIG_CLINI_0.ML2_LCL) AND + MAX(SJ3_DOS2) = SUM(LIG_CLINI_0.ML3_LCL) AND + count(DISTINCT IND_DOS2) = 1 + ) subview + WHERE LIG_CLINI.ANN_LCL = subview.ANN_DOS2 AND + LIG_CLINI.COD_LCL = subview.COD_DOS2 AND + LIG_CLINI.IND_LCL = 0 + ; + + + UPDATE prod_sigems.LIG_HONOR + SET IND_LHO = subview.IND_DOS2 + FROM + ( + SELECT + ANN_DOS2, + COD_DOS2, + MAX(IND_DOS2) AS IND_DOS2, + SUM(LIG_HONOR_0.ML1_LHO), + SUM(LIG_HONOR_0.ML2_LHO), + SUM(LIG_HONOR_0.ML3_LHO) + FROM prod_sigems.DOS2 + LEFT JOIN prod_sigems.LIG_HONOR ON + LIG_HONOR.ANN_LHO = ANN_DOS2 AND + LIG_HONOR.COD_LHO = COD_DOS2 AND + LIG_HONOR.IND_LHO = IND_DOS2 AND + LIG_HONOR.CPH_LHO <> 'REGH' + JOIN prod_sigems.LIG_HONOR LIG_HONOR_0 ON + LIG_HONOR_0.ANN_LHO = ANN_DOS2 AND + LIG_HONOR_0.COD_LHO = COD_DOS2 AND + LIG_HONOR_0.IND_LHO = 0 + WHERE ETA_DOS2 IN (3,4) AND + ( + HO1_DOS2 <> 0 OR + HO2_DOS2 <> 0 OR + HO3_DOS2 <> 0 + ) AND + LIG_HONOR.ANN_LHO IS NULL + GROUP BY 1,2 + HAVING + MAX(HO1_DOS2) = SUM(LIG_HONOR_0.ML1_LHO) AND + MAX(HO2_DOS2) = SUM(LIG_HONOR_0.ML2_LHO) AND + MAX(HO3_DOS2) = SUM(LIG_HONOR_0.ML3_LHO) AND + count(DISTINCT IND_DOS2) = 1 + ) subview + WHERE LIG_HONOR.ANN_LHO = subview.ANN_DOS2 AND + LIG_HONOR.COD_LHO = subview.COD_DOS2 AND + LIG_HONOR.IND_LHO = 0 + ; + + -- Lignes de factures clinique avec règlements sans facture correspondante + DROP TABLE IF EXISTS w_LIG_CLINI_corr; + CREATE TEMP TABLE w_LIG_CLINI_corr AS + SELECT ANN_LCL, COD_LCL, IND_LCL, + CASE + WHEN IND_LCL > 1 AND right(IND_LCL::text,1) IN ('2','4','6','8','0') THEN IND_LCL - 1 + WHEN IND_LCL > 2 THEN IND_LCL - 2 + ELSE -1::numeric END AS TO_IND_LCL + FROM prod_sigems.LIG_CLINI + JOIN prod_sigems.REG4 ON NUM_CLI = NUM_LCL + LEFT JOIN prod_sigems.dos2 ON + ANN_LCL = ANN_DOS2 AND + COD_LCL = COD_DOS2 AND + IND_LCL = IND_DOS2 + WHERE IND_LCL <> 0 AND + PRO_LCL = 'REGC' AND + ANN_DOS2 IS NULL + GROUP BY 1,2,3,4 + ; + + ANALYSE w_LIG_CLINI_corr + ; + + UPDATE w_LIG_CLINI_corr + SET TO_IND_LCL = -2 + FROM + ( + SELECT ANN_LCL, COD_LCL, IND_LCL + FROM w_LIG_CLINI_corr + LEFT JOIN prod_sigems.DOS2 ON + ANN_LCL = ANN_DOS2 AND + COD_LCL = COD_DOS2 AND + TO_IND_LCL = IND_DOS2 + WHERE TO_IND_LCL > 0 AND + ANN_DOS2 IS NULL + ) subview + WHERE + subview.ANN_LCL = w_LIG_CLINI_corr.ANN_LCL AND + subview.COD_LCL = w_LIG_CLINI_corr.COD_LCL AND + subview.IND_LCL = w_LIG_CLINI_corr.IND_LCL + ; + + UPDATE w_LIG_CLINI_corr + SET TO_IND_LCL = subview.TO_IND_LCL + FROM + ( + SELECT ANN_LCL, COD_LCL, IND_LCL, MAX(IND_DOS2) AS TO_IND_LCL + FROM w_LIG_CLINI_corr + JOIN prod_sigems.DOS2 ON + ANN_LCL = ANN_DOS2 AND + COD_LCL = COD_DOS2 AND + IND_LCL > IND_DOS2 + WHERE TO_IND_LCL < 0 + GROUP BY 1,2,3 + ) subview + WHERE + subview.ANN_LCL = w_LIG_CLINI_corr.ANN_LCL AND + subview.COD_LCL = w_LIG_CLINI_corr.COD_LCL AND + subview.IND_LCL = w_LIG_CLINI_corr.IND_LCL + ; + + UPDATE prod_sigems.LIG_CLINI + SET IND_LCL = w_LIG_CLINI_corr.TO_IND_LCL + FROM w_LIG_CLINI_corr + WHERE LIG_CLINI.ANN_LCL = w_LIG_CLINI_corr.ANN_LCL AND + LIG_CLINI.COD_LCL = w_LIG_CLINI_corr.COD_LCL AND + LIG_CLINI.IND_LCL = w_LIG_CLINI_corr.IND_LCL AND + w_LIG_CLINI_corr.TO_IND_LCL > 0 + ; + + -- Lignes de factures honoraire avec règlements sans facture correspondante + DROP TABLE IF EXISTS w_LIG_HONOR_corr; + CREATE TEMP TABLE w_LIG_HONOR_corr AS + SELECT ANN_LHO, COD_LHO, IND_LHO, + CASE + WHEN IND_LHO > 1 AND right(IND_LHO::text,1) IN ('2','4','6','8','0') THEN IND_LHO - 1 + WHEN IND_LHO > 2 THEN IND_LHO - 2 + ELSE -1::numeric END AS TO_IND_LHO + FROM prod_sigems.LIG_HONOR + JOIN prod_sigems.REG3 ON LHO_REG3 = NUM_LHO + LEFT JOIN prod_sigems.dos2 ON + ANN_LHO = ANN_DOS2 AND + COD_LHO = COD_DOS2 AND + IND_LHO = IND_DOS2 + WHERE IND_LHO <> 0 AND + CPH_LHO = 'REGH' AND + ANN_DOS2 IS NULL + GROUP BY 1,2,3,4 + ; + + UPDATE w_LIG_HONOR_corr + SET TO_IND_LHO = -2 + FROM + ( + SELECT ANN_LHO, COD_LHO, IND_LHO + FROM w_LIG_HONOR_corr + LEFT JOIN prod_sigems.DOS2 ON + ANN_LHO = ANN_DOS2 AND + COD_LHO = COD_DOS2 AND + TO_IND_LHO = IND_DOS2 + WHERE TO_IND_LHO > 0 AND + ANN_DOS2 IS NULL + ) subview + WHERE + subview.ANN_LHO = w_LIG_HONOR_corr.ANN_LHO AND + subview.COD_LHO = w_LIG_HONOR_corr.COD_LHO AND + subview.IND_LHO = w_LIG_HONOR_corr.IND_LHO + ; + + UPDATE w_LIG_HONOR_corr + SET TO_IND_LHO = subview.TO_IND_LHO + FROM + ( + SELECT ANN_LHO, COD_LHO, IND_LHO, MAX(IND_DOS2) AS TO_IND_LHO + FROM w_LIG_HONOR_corr + JOIN prod_sigems.DOS2 ON + ANN_LHO = ANN_DOS2 AND + COD_LHO = COD_DOS2 AND + IND_LHO > IND_DOS2 + WHERE TO_IND_LHO < 0 + GROUP BY 1,2,3 + ) subview + WHERE + subview.ANN_LHO = w_LIG_HONOR_corr.ANN_LHO AND + subview.COD_LHO = w_LIG_HONOR_corr.COD_LHO AND + subview.IND_LHO = w_LIG_HONOR_corr.IND_LHO + ; + + UPDATE prod_sigems.LIG_HONOR + SET IND_LHO = w_LIG_HONOR_corr.TO_IND_LHO + FROM w_LIG_HONOR_corr + WHERE LIG_HONOR.ANN_LHO = w_LIG_HONOR_corr.ANN_LHO AND + LIG_HONOR.COD_LHO = w_LIG_HONOR_corr.COD_LHO AND + LIG_HONOR.IND_LHO = w_LIG_HONOR_corr.IND_LHO AND + w_LIG_HONOR_corr.TO_IND_LHO > 0 + ; + + + UPDATE prod_sigems.LIG_CLINI + SET SER_LCL = '*CDL' + FROM + ( + SELECT ANN_LCL, COD_LCL + FROM prod_sigems.LIG_CLINI + JOIN + (SELECT ANN_DOS2 AS ANN_DOS2_fac, + COD_DOS2 AS COD_DOS2_fac + FROM prod_sigems.DOS2 + WHERE ETA_DOS2 >= 4 + GROUP BY 1,2 + ) subview ON + ANN_LCL = ANN_DOS2_fac AND + COD_LCL = COD_DOS2_fac + LEFT JOIN prod_sigems.DOS2 ON + ANN_DOS2 = ANN_LCL AND + COD_DOS2 = COD_LCL AND + IND_DOS2 = IND_LCL + WHERE IND_LCL = 0 AND + COD_DOS2 IS NULL + GROUP BY 1,2 + ) subview + WHERE LIG_CLINI.ANN_LCL = subview.ANN_LCL AND + LIG_CLINI.COD_LCL = subview.COD_LCL AND + LIG_CLINI.IND_LCL = 0 + ; + + UPDATE prod_sigems.LIG_HONOR + SET SER_LHO = '*CDL' + FROM + ( + SELECT ANN_LHO, COD_LHO + FROM prod_sigems.LIG_HONOR + JOIN + (SELECT ANN_DOS2 AS ANN_DOS2_fac, + COD_DOS2 AS COD_DOS2_fac + FROM prod_sigems.DOS2 + WHERE ETA_DOS2 >= 4 + GROUP BY 1,2 + ) subview ON + ANN_LHO = ANN_DOS2_fac AND + COD_LHO = COD_DOS2_fac + LEFT JOIN prod_sigems.DOS2 ON + ANN_DOS2 = ANN_LHO AND + COD_DOS2 = COD_LHO AND + IND_DOS2 = IND_LHO + WHERE IND_LHO = 0 AND + COD_DOS2 IS NULL + GROUP BY 1,2 + ) subview + WHERE LIG_HONOR.ANN_LHO = subview.ANN_LHO AND + LIG_HONOR.COD_LHO = subview.COD_LHO AND + LIG_HONOR.IND_LHO = 0 + ; + + -- Correction doublons + UPDATE prod_sigems.dossier_x + SET ANN_DOX = 'KO' + FROM + ( + select ann_dox, cod_dox, min(CTID) AS koctid from prod_sigems.dossier_x + group by 1,2 + having count(*) > 1 + ) subview + where CTID = koctid; + + UPDATE prod_sigems.DOSSIER_Y + SET ANNEE = 'KO' + FROM + ( + SELECT ANNEE, CODE, min(CTID) AS okctid + FROM prod_sigems.DOSSIER_Y + GROUP BY 1,2 + HAVING count(*) > 1 + ) subview + WHERE DOSSIER_Y.ANNEE = subview.ANNEE AND + DOSSIER_Y.CODE = subview.CODE AND + CTID <> okctid; + + UPDATE prod_sigems.DOSSIER_MDT + SET ANN_DOS = 'KO' + FROM + ( + SELECT ANN_DOS, COD_DOS, min(CTID) AS koctid + FROM prod_sigems.DOSSIER_MDT + GROUP BY 1,2 + HAVING count(*) > 1 + ) subview + WHERE CTID = koctid; + + -- Correction provenance (5) pour les urgences + UPDATE prod_sigems.DOSSIER_X + SET ADM_DOS = CASE WHEN substr(ADM_DOS,1,1) <> '' THEN substr(ADM_DOS,1,1) ELSE '8' END || '5' + FROM prod_sigems.DOSSIER_Y + WHERE DOSSIER_X.ANN_DOX = DOSSIER_Y.ANNEE AND + DOSSIER_X.COD_DOX = DOSSIER_Y.CODE AND + DOSSIER_X.ANN_DOX <> 'KO' AND + DOSSIER_Y.URGENCE = 'U' AND + substr(ADM_DOS,2,1) <> '5' + ; + + -- Correction de liens avoir farfelus + UPDATE prod_sigems.DOS2_LIEN_AVOIR + SET ANN = 'K'||substr(DOS2_LIEN_AVOIR.ANN,2) + FROM + ( + SELECT ANN, COD, IND, MAX(CASE WHEN COP_DOS2 = '4' THEN IND_DOS2 ELSE 0 END) AS IND_AVOIR_OK + FROM prod_sigems.DOS2_LIEN_AVOIR + LEFT JOIN prod_sigems.DOS2 ON + ANN = ANN_DOS2 AND + COD = COD_DOS2 AND + IND_AVOIR = IND_DOS2 + GROUP BY 1,2,3 + having count(*) > 1 + ) subview + WHERE DOS2_LIEN_AVOIR.ANN = subview.ANN AND + DOS2_LIEN_AVOIR.COD = subview.COD AND + DOS2_LIEN_AVOIR.IND = subview.IND AND + IND_AVOIR <> IND_AVOIR_OK AND + IND_AVOIR_OK <> 0 + ; + + -- Correction des montants réglés (incohérences base entre factures, lignes et ecritures) + UPDATE prod_sigems.DOS2 SET + SR1_DOS2 = SJ1_DOS2, + SR2_DOS2 = SJ2_DOS2, + SR3_DOS2 = SJ3_DOS2, + HR1_DOS2 = HO1_DOS2, + HR2_DOS2 = HO2_DOS2, + HR3_DOS2 = HO3_DOS2 + FROM prod_sigems.DOS2_LIEN_AVOIR + WHERE ANN_DOS2 = ANN AND COD_DOS2 = COD AND IND_DOS2 = IND_AVOIR AND + ( + SR1_DOS2 <> SJ1_DOS2 OR + SR2_DOS2 <> SJ2_DOS2 OR + SR3_DOS2 <> SJ3_DOS2 OR + HR1_DOS2 <> HO1_DOS2 OR + HR2_DOS2 <> HO2_DOS2 OR + HR3_DOS2 <> HO3_DOS2 + ) + ; + + + UPDATE prod_sigems.DOS2 DOS2F SET + HR1_DOS2 = 0-DOS2A.HR1_DOS2, + HR2_DOS2 = 0-DOS2A.HR2_DOS2, + HR3_DOS2 = 0-DOS2A.HR3_DOS2 + FROM prod_sigems.DOS2_LIEN_AVOIR + JOIN prod_sigems.DOS2 DOS2A ON DOS2A.ANN_DOS2 = ANN AND DOS2A.COD_DOS2 = COD AND DOS2A.IND_DOS2 = IND_AVOIR + WHERE DOS2F.ANN_DOS2 = ANN AND DOS2F.COD_DOS2 = COD AND DOS2F.IND_DOS2 = IND AND + NOT (DOS2F.HR1_DOS2 = 0-DOS2A.HR1_DOS2 AND DOS2F.HR2_DOS2 = 0-DOS2A.HR2_DOS2 AND DOS2F.HR3_DOS2 = 0-DOS2A.HR3_DOS2) AND + (DOS2A.HR1_DOS2 <> 0 OR DOS2A.HR2_DOS2 <> 0 OR DOS2A.HR3_DOS2 <> 0) + + ; + + + + UPDATE prod_sigems.DOS2 DOS2F SET + SR1_DOS2 = 0-DOS2A.SR1_DOS2, + SR2_DOS2 = 0-DOS2A.SR2_DOS2, + SR3_DOS2 = 0-DOS2A.SR3_DOS2 + FROM prod_sigems.DOS2_LIEN_AVOIR + JOIN prod_sigems.DOS2 DOS2A ON DOS2A.ANN_DOS2 = ANN AND DOS2A.COD_DOS2 = COD AND DOS2A.IND_DOS2 = IND_AVOIR + WHERE DOS2F.ANN_DOS2 = ANN AND DOS2F.COD_DOS2 = COD AND DOS2F.IND_DOS2 = IND AND + NOT (DOS2F.SR1_DOS2 = 0-DOS2A.SR1_DOS2 AND DOS2F.SR2_DOS2 = 0-DOS2A.SR2_DOS2 AND DOS2F.SR3_DOS2 = 0-DOS2A.SR3_DOS2) AND + (DOS2A.SR1_DOS2 <> 0 OR DOS2A.SR2_DOS2 <> 0 OR DOS2A.SR3_DOS2 <> 0) + ; + + + UPDATE prod_sigems.LIG_CLINI SET + MR1_LCL = ML1_LCL + FROM prod_sigems.DOS2 + WHERE ANN_DOS2 = ANN_LCL AND + COD_DOS2 = COD_LCL AND + IND_DOS2 = IND_LCL AND + SR1_DOS2 = SJ1_DOS2 AND + SR1_DOS2 <> 0 AND + MR1_LCL <> ML1_LCL + ; + + UPDATE prod_sigems.LIG_CLINI SET + MR2_LCL = ML2_LCL + FROM prod_sigems.DOS2 + WHERE ANN_DOS2 = ANN_LCL AND + COD_DOS2 = COD_LCL AND + IND_DOS2 = IND_LCL AND + SR2_DOS2 = SJ2_DOS2 AND + SR2_DOS2 <> 0 AND + MR2_LCL <> ML2_LCL + ; + + UPDATE prod_sigems.LIG_CLINI SET + MR3_LCL = ML3_LCL + FROM prod_sigems.DOS2 + WHERE ANN_DOS2 = ANN_LCL AND + COD_DOS2 = COD_LCL AND + IND_DOS2 = IND_LCL AND + SR3_DOS2 = SJ3_DOS2 AND + SR3_DOS2 <> 0 AND + MR3_LCL <> ML3_LCL + ; + + + + + UPDATE prod_sigems.LIG_HONOR SET + MR1_LHO = ML1_LHO + FROM prod_sigems.DOS2 + WHERE ANN_DOS2 = ANN_LHO AND + COD_DOS2 = COD_LHO AND + IND_DOS2 = IND_LHO AND + HR1_DOS2 = HO1_DOS2 AND + HR1_DOS2 <> 0 AND + MR1_LHO <> ML1_LHO + ; + + UPDATE prod_sigems.LIG_HONOR SET + MR2_LHO = ML2_LHO + FROM prod_sigems.DOS2 + WHERE ANN_DOS2 = ANN_LHO AND + COD_DOS2 = COD_LHO AND + IND_DOS2 = IND_LHO AND + HR2_DOS2 = HO2_DOS2 AND + HR2_DOS2 <> 0 AND + MR2_LHO <> ML2_LHO + ; + + UPDATE prod_sigems.LIG_HONOR SET + MR3_LHO = ML3_LHO + FROM prod_sigems.DOS2 + WHERE ANN_DOS2 = ANN_LHO AND + COD_DOS2 = COD_LHO AND + IND_DOS2 = IND_LHO AND + HR3_DOS2 = HO3_DOS2 AND + HR3_DOS2 <> 0 AND + MR3_LHO <> ML3_LHO + ; + + UPDATE prod_sigems.DOS2 + SET SR1_DOS2 = MR1_DOS2 + FROM + ( + SELECT ANN_LCL, COD_LCL, IND_LCL, + SUM(MR1_LCL) AS MR1_DOS2 + FROM prod_sigems.DOS2 + JOIN prod_sigems.LIG_CLINI ON + ANN_DOS2 = ANN_LCL AND + COD_DOS2 = COD_LCL AND + IND_DOS2 = IND_LCL AND + PRO_LCL <> 'ECAC' + GROUP BY 1,2,3 + HAVING MAX(SR1_DOS2) <> SUM(MR1_LCL) + ) subview + WHERE ANN_DOS2 = ANN_LCL AND + COD_DOS2 = COD_LCL AND + IND_DOS2 = IND_LCL + ; + + UPDATE prod_sigems.DOS2 + SET SR2_DOS2 = MR2_DOS2 + FROM + ( + SELECT ANN_LCL, COD_LCL, IND_LCL, + SUM(MR2_LCL) AS MR2_DOS2 + FROM prod_sigems.DOS2 + JOIN prod_sigems.LIG_CLINI ON + ANN_DOS2 = ANN_LCL AND + COD_DOS2 = COD_LCL AND + IND_DOS2 = IND_LCL AND + PRO_LCL <> 'ECAC' + GROUP BY 1,2,3 + HAVING MAX(SR2_DOS2) <> SUM(MR2_LCL) + ) subview + WHERE ANN_DOS2 = ANN_LCL AND + COD_DOS2 = COD_LCL AND + IND_DOS2 = IND_LCL + ; + + UPDATE prod_sigems.DOS2 + SET SR3_DOS2 = MR3_DOS2 + FROM + ( + SELECT ANN_LCL, COD_LCL, IND_LCL, + SUM(MR3_LCL) AS MR3_DOS2 + FROM prod_sigems.DOS2 + JOIN prod_sigems.LIG_CLINI ON + ANN_DOS2 = ANN_LCL AND + COD_DOS2 = COD_LCL AND + IND_DOS2 = IND_LCL AND + PRO_LCL <> 'ECAC' + GROUP BY 1,2,3 + HAVING MAX(SR3_DOS2) <> SUM(MR3_LCL) + ) subview + WHERE ANN_DOS2 = ANN_LCL AND + COD_DOS2 = COD_LCL AND + IND_DOS2 = IND_LCL + ; + + + UPDATE prod_sigems.DOS2 + SET HR1_DOS2 = MR1_DOS2 + FROM + ( + SELECT ANN_LHO, COD_LHO, IND_LHO, + SUM(MR1_LHO) AS MR1_DOS2 + FROM prod_sigems.DOS2 + JOIN prod_sigems.LIG_HONOR ON + ANN_DOS2 = ANN_LHO AND + COD_DOS2 = COD_LHO AND + IND_DOS2 = IND_LHO AND + CPH_LHO <> 'ECAH' + GROUP BY 1,2,3 + HAVING MAX(HR1_DOS2) <> SUM(MR1_LHO) + ) subview + WHERE ANN_DOS2 = ANN_LHO AND + COD_DOS2 = COD_LHO AND + IND_DOS2 = IND_LHO + ; + + UPDATE prod_sigems.DOS2 + SET HR2_DOS2 = MR2_DOS2 + FROM + ( + SELECT ANN_LHO, COD_LHO, IND_LHO, + SUM(MR2_LHO) AS MR2_DOS2 + FROM prod_sigems.DOS2 + JOIN prod_sigems.LIG_HONOR ON + ANN_DOS2 = ANN_LHO AND + COD_DOS2 = COD_LHO AND + IND_DOS2 = IND_LHO AND + CPH_LHO <> 'ECAH' + GROUP BY 1,2,3 + HAVING MAX(HR2_DOS2) <> SUM(MR2_LHO) + ) subview + WHERE ANN_DOS2 = ANN_LHO AND + COD_DOS2 = COD_LHO AND + IND_DOS2 = IND_LHO + ; + + UPDATE prod_sigems.DOS2 + SET HR3_DOS2 = MR3_DOS2 + FROM + ( + SELECT ANN_LHO, COD_LHO, IND_LHO, + SUM(MR3_LHO) AS MR3_DOS2 + FROM prod_sigems.DOS2 + JOIN prod_sigems.LIG_HONOR ON + ANN_DOS2 = ANN_LHO AND + COD_DOS2 = COD_LHO AND + IND_DOS2 = IND_LHO AND + CPH_LHO <> 'ECAH' + GROUP BY 1,2,3 + HAVING MAX(HR3_DOS2) <> SUM(MR3_LHO) + ) subview + WHERE ANN_DOS2 = ANN_LHO AND + COD_DOS2 = COD_LHO AND + IND_DOS2 = IND_LHO + ; + + + -- Références à des factures inexistantes + DROP TABLE IF EXISTS w_DOS_ECRIT_err; + CREATE TEMP TABLE w_DOS_ECRIT_ERR AS + SELECT DOS_ECRIT.*, NULL::numeric AS IND_DOS2 + FROM prod_sigems.DOS_ECRIT + LEFT JOIN prod_sigems.DOS2 ON + ANNEE = DOS2.ANN_DOS2 AND + CODE = DOS2.COD_DOS2 AND + INDICE = DOS2.IND_DOS2 + WHERE DOS2.ANN_DOS2 IS NULL + ; + + UPDATE prod_sigems.DOS_ECRIT + SET INDICE = subview.IND_DOS2 + FROM + ( + SELECT ANNEE, CODE, INDICE, MAX(DOS2.IND_DOS2) AS IND_DOS2 + FROM prod_sigems.DOS2 + JOIN w_DOS_ECRIT_err ON + ANNEE = DOS2.ANN_DOS2 AND + CODE = DOS2.COD_DOS2 + GROUP BY 1,2,3 + ) subview + WHERE DOS_ECRIT.ANNEE = subview.ANNEE AND + DOS_ECRIT.CODE = subview.CODE AND + DOS_ECRIT.INDICE = subview.INDICE + ; + + DROP TABLE IF EXISTS w_REG2_err; + CREATE TEMP TABLE w_REG2_ERR AS + SELECT REG2.*, NULL::numeric AS IND_DOS2 + FROM prod_sigems.REG2 + LEFT JOIN prod_sigems.DOS2 ON + ANN_REG2 = DOS2.ANN_DOS2 AND + COD_REG2 = DOS2.COD_DOS2 AND + IND_REG2 = DOS2.IND_DOS2 + WHERE DOS2.ANN_DOS2 IS NULL AND + ANN_REG2 BETWEEN '00' AND '99' + ; + + UPDATE prod_sigems.REG2 + SET IND_REG2 = subview.IND_DOS2 + FROM + ( + SELECT ANN_REG2, COD_REG2, IND_REG2, MAX(DOS2.IND_DOS2) AS IND_DOS2 + FROM prod_sigems.DOS2 + JOIN w_REG2_err ON + ANN_REG2 = DOS2.ANN_DOS2 AND + COD_REG2 = DOS2.COD_DOS2 + GROUP BY 1,2,3 + ) subview + WHERE REG2.ANN_REG2 = subview.ANN_REG2 AND + REG2.COD_REG2 = subview.COD_REG2 AND + REG2.IND_REG2 = subview.IND_REG2 + ; + + ]]> + + + + + + + + 0 + ) sub, + ( + SELECT 1,MAX(DAE_SEJ) as DT_MOUV_SIGEMS + FROM prod_sigems.SEJOUR + WHERE 1=1 + AND ANN_SEJ != 'PA' + AND DAE_SEJ <= now() + GROUP BY 1 + ) sub2; + + + INSERT INTO w_PERIODE + SELECT + 0::bigint AS periode_id, + CASE WHEN date_part('hour', DT_CREATION) < 9 THEN DATE(DT_CREATION - INTERVAL '1 day') ELSE date(DT_CREATION) END AS now_sigems, + CASE WHEN date_part('hour', DT_CREATION) < 9 THEN DATE(DT_CREATION) ELSE date(DT_CREATION + INTERVAL '1 day') END AS now_sigems_1 + FROM ( + SELECT now() AS DT_CREATION WHERE (SELECT COUNT(*) FROM w_PERIODE) = 0 + ) subview; + + + -- Selection + + DROP TABLE IF EXISTS w_DOSSIER_SELECT; + + CREATE TEMP TABLE w_DOSSIER_SELECT AS + SELECT + ANN_DOS AS ANN_SELECT, + COD_DOS AS COD_SELECT, + ANN_DOS || to_char(COD_DOS,'FM900000') AS no_sejour_SELECT, + 0::text AS type_t2a, + 0::text AS est_budget_global, + 0::text AS avec_facturation_intermediaire, + ''::text AS CMD_DOS + FROM prod_sigems.DOSSIER + WHERE DSO_DOS >= '[ENV_ADM_ANNEEDEBUT]0101' OR DSO_DOS IS NULL; + + CREATE INDEX w_DOSSIER_SELECT_i1 + ON w_DOSSIER_SELECT + USING btree + (COD_SELECT); + + DELETE FROM w_DOSSIER_SELECT + USING prod_sigems.SUPPRESSION_DOS + WHERE ANN_SELECT = ANNEE AND + COD_SELECT = CODE; + + + -- Séances pré saisies à tord + DELETE FROM w_DOSSIER_SELECT + USING + ( + SELECT ANN_DOS, COD_DOS + FROM prod_sigems.DOSSIER + JOIN prod_sigems.service ON SER_DOS = COD_SER + LEFT JOIN prod_sigems.SEJOUR ON ANN_SEJ = ANN_DOS AND COD_SEJ = COD_DOS + LEFT JOIN prod_sigems.DOS2 ON ANN_DOS2 = ANN_DOS AND COD_DOS2 = COD_DOS + LEFT JOIN prod_sigems.LIG_CLINI ON ANN_LCL = ANN_DOS AND COD_LCL = COD_DOS + LEFT JOIN prod_sigems.LIG_HONOR ON ANN_LHO = ANN_DOS AND COD_LHO = COD_DOS + WHERE DMT_SER IN ('198','302') AND + ANN_DOS <> 'PA' AND + DSO_DOS IS NULL AND + DEN_DOS <= now() - interval '10 days' AND + ANN_SEJ IS NULL AND + ANN_DOS2 IS NULL AND + ANN_LCL IS NULL AND + ANN_LHO IS NULL + ) subview + WHERE ANN_SELECT = ANN_DOS AND + COD_SELECT = COD_DOS + ; + + + INSERT INTO w_DOSSIER_SELECT + SELECT + ANN_DOS2, + COD_DOS2, + ANN_DOS2 || to_char(COD_DOS2,'FM900000'), + 0::text AS type_t2a, + 0::text AS est_budget_global, + 0::text AS avec_facturation_intermediaire, + ''::text AS CMD_DOS + FROM prod_sigems.DOS2 + LEFT JOIN w_DOSSIER_SELECT ON ANN_DOS2 = ANN_SELECT AND COD_DOS2 = COD_SELECT + WHERE ETA_DOS2 >= 3 AND ANN_SELECT IS NULL + GROUP BY 1,2,3 + HAVING ( + MAX(COALESCE(DFA_DOS2, '20991231')) >= '[ENV_ADM_ANNEEDEBUT]0101' + ) + ORDER BY 1,2; + + + + INSERT INTO w_DOSSIER_SELECT + SELECT + ANN_LCL, + COD_LCL, + ANN_LCL || to_char(COD_LCL,'FM900000'), + 0::text AS type_t2a, + 0::text AS est_budget_global, + 0::text AS avec_facturation_intermediaire, + ''::text AS CMD_DOS + FROM + ( + SELECT ANN_LCL, COD_LCL FROM prod_sigems.LIG_CLINI + JOIN prod_sigems.REG4 ON NUM_LCL = NUM_CLI + JOIN prod_sigems.REG ON NUM_REG4 = SER_REG + WHERE DAT_REG >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1,2 + ) subview + LEFT JOIN w_DOSSIER_SELECT ON ANN_LCL = ANN_SELECT AND COD_LCL = COD_SELECT + WHERE ANN_SELECT IS NULL; + + INSERT INTO w_DOSSIER_SELECT + SELECT + ANN_LHO, + COD_LHO, + ANN_LHO || to_char(COD_LHO,'FM900000') + FROM + ( + SELECT ANN_LHO, COD_LHO FROM prod_sigems.LIG_HONOR + JOIN w_REG3 ON NUM_LHO = LHO_REG3 + WHERE DAT_REG >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1,2 + ) subview + LEFT JOIN w_DOSSIER_SELECT ON ANN_LHO = ANN_SELECT AND COD_LHO = COD_SELECT + WHERE ANN_SELECT IS NULL; + + -- Suppression des dossiers pour les services ignorés + DELETE FROM w_DOSSIER_SELECT + USING prod_sigems.DOSSIER + JOIN activite[PX].t_services_facturation ON (DOSSIER.SER_DOS || '_' || MDT_DOS) = t_services_facturation.code_original + WHERE ANN_SELECT = ANN_DOS AND + COD_SELECT = COD_DOS AND + t_services_facturation.type_sejour = '9' + ; + + -- Suppression des prévus non rentrés ou prévus dans plus d'un mois + DELETE FROM w_DOSSIER_SELECT + USING prod_sigems.DOSSIER + WHERE ANN_SELECT = 'PA' AND + ANN_SELECT = ANN_DOS AND + COD_SELECT = COD_DOS AND + DEN_DOS <= date(NOW() - interval '1 days'); + + DELETE FROM w_DOSSIER_SELECT + USING prod_sigems.DOSSIER + WHERE ANN_SELECT = 'PA' AND + ANN_SELECT = ANN_DOS AND + COD_SELECT = COD_DOS AND + DEN_DOS > date(NOW() + interval '1 month'); + + + CREATE INDEX w_DOSSIER_SELECT_i2 + ON w_DOSSIER_SELECT + USING btree + (no_sejour_SELECT); + + + + + -- Montants 10% SSR sans quantité + UPDATE prod_sigems.LIG_CLINI + SET QTE_LCL = QTE_LCL * (date(DFI_LCL) - date(DDE_LCL) + 1) + WHERE PRO_LCL IN ('MPJ','MPHJ') AND + date(DFI_LCL) > date(DDE_LCL) AND + QTE_LCL IN (1, -1) + ; + + + ]]> + + + + + + + + + '' THEN NMA_PAT ELSE NOM_PAT END) AS NOM_PAT, + MAX(PRE_PAT) AS PRE_PAT, + MAX(NOM_PAT) AS NNA_PAT, + MAX(date(DNA_PAT)) AS DNA_PAT, + MAX(SEX_PAT) AS SEX_PAT, + MAX(AD1_PAT) AS AD1_PAT, + MAX(AD2_PAT) AS AD2_PAT, + MAX(CPO_PAT) AS CPO_PAT, + MAX(VIL_PAT) AS VIL_PAT, + MAX(TEL_PAT) AS TEL_PAT + FROM prod_sigems.PATIENT + JOIN (SELECT CPH_DOS, ANN_DOS, COD_DOS FROM prod_sigems.DOSSIER + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_DOS = ANN_SELECT AND COD_DOS = COD_SELECT) s_dos ON CPH_DOS = COD_PAT + GROUP BY 1,2,3; + + UPDATE w_PATIENT SET + NOM_PAT = pool.NOM_PAT, + PRE_PAT = pool.PRE_PAT, + DNA_PAT = pool.DNA_PAT, + NNA_PAT = pool.NNA_PAT + FROM ( + SELECT + DISTINCT no_patient, + last_value(NOM_PAT) OVER (PARTITION BY no_patient ORDER BY SEJ_NUM rows between unbounded preceding and unbounded following) AS NOM_PAT, + last_value(PRE_PAT) OVER (PARTITION BY no_patient ORDER BY SEJ_NUM rows between unbounded preceding and unbounded following) AS PRE_PAT, + last_value(DNA_PAT) OVER (PARTITION BY no_patient ORDER BY SEJ_NUM rows between unbounded preceding and unbounded following) AS DNA_PAT, + last_value(NNA_PAT) OVER (PARTITION BY no_patient ORDER BY SEJ_NUM rows between unbounded preceding and unbounded following) AS NNA_PAT + FROM w_patient) pool + WHERE pool.no_patient = w_PATIENT.no_patient; + + CREATE INDEX w_PATIENT_i1 + ON w_PATIENT + USING btree + (COD_PAT); + + CREATE INDEX w_PATIENT_i2 + ON w_PATIENT + USING btree + (no_patient); + + UPDATE activite[PX].p_patients + SET nom = NOM_PAT, + nom_naissance = NNA_PAT, + prenom = PRE_PAT, + date_naissance = DNA_PAT, + code_sexe = CASE WHEN SEX_PAT IN ('F') THEN '2' ELSE '1' END + FROM w_PATIENT + WHERE p_patients.no_patient = w_PATIENT.no_patient + AND ( + p_patients.nom IS DISTINCT FROM NOM_PAT OR + p_patients.prenom IS DISTINCT FROM PRE_PAT OR + p_patients.nom_naissance IS DISTINCT FROM NNA_PAT OR + p_patients.date_naissance IS DISTINCT FROM date(DNA_PAT) OR + p_patients.code_sexe IS DISTINCT FROM CASE WHEN SEX_PAT IN ('F') THEN '2' ELSE '1' END + ); + + INSERT INTO activite[PX].p_patients(finess, no_patient, nom, prenom, nom_naissance, date_naissance, code_sexe) + SELECT '', w_PATIENT.no_patient, MAX(NOM_PAT), MAX(PRE_PAT), MAX(NNA_PAT), MAX(DNA_PAT), MAX(CASE WHEN SEX_PAT IN ('F') THEN '2' ELSE '1' END) + FROM w_PATIENT + LEFT JOIN activite[PX].p_patients ON (w_PATIENT.no_patient = p_patients.no_patient) + WHERE p_patients.no_patient IS NULL + GROUP BY 1,2 + ; + ]]> + + + + 0 THEN COALESCE(to_number('0' || GHS,'00000'),0) ELSE 0 END) AS GHS_BEBE1, + ''::text AS CLE_GHM + FROM prod_sigems.GHS_VALORISE + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANNEE = ANN_SELECT AND CODE = COD_SELECT + GROUP BY 1,2,3; + + + UPDATE w_GHS_VALORISE + SET GHS = 0, GHS_BEBE1 = 0 + WHERE (GHS <> 0 OR GHS_BEBE1 <> 0) AND + NUM_RSS IN ( + SELECT + NUM_RSS + FROM prod_sigems.UN_RUM + JOIN prod_sigems.PMSI_GHM ON UN_RUM.GHM = PMSI_GHM.CODE_GHM + WHERE NUM_RSS IN (SELECT NUM_RSS FROM w_GHS_VALORISE WHERE GHS = 9999) + GROUP BY 1 + HAVING MAX(CLE_GHM) LIKE '90%' + ); + + UPDATE w_GHS_VALORISE + SET GHS = 0, GHS_BEBE1 = 0 + WHERE (GHS <> 0 OR GHS_BEBE1 <> 0) AND + NUM_RSS IN ( + SELECT + NUM_RSS + FROM prod_sigems.UN_RUM + LEFT JOIN prod_sigems.PMSI_GHM ON UN_RUM.GHM = PMSI_GHM.CODE_GHM + WHERE NUM_RSS IN (SELECT NUM_RSS FROM w_GHS_VALORISE WHERE GHS = 9999) AND + PMSI_GHM.CODE_GHM IS NULL + GROUP BY 1 + ); + + UPDATE w_GHS_VALORISE + SET CLE_GHM = PMSI_GHM.CLE_GHM + FROM prod_sigems.UN_RUM + JOIN prod_sigems.PMSI_GHM ON UN_RUM.GHM = PMSI_GHM.CODE_GHM + WHERE w_GHS_VALORISE.NUM_RSS = UN_RUM.NUM_RSS AND + UN_RUM.NUM_RUM < 50 AND + PMSI_GHM.CLE_GHM <> '' AND PMSI_GHM.CLE_GHM NOT LIKE '90%' + ; + + + DROP TABLE IF EXISTS w_LIG_CLINI_forfaits; + CREATE TEMP TABLE w_LIG_CLINI_forfaits AS + SELECT + ANN_LCL, + COD_LCL + FROM prod_sigems.LIG_CLINI + WHERE PRO_LCL IN ('SE1', 'SE2', 'SE3', 'SE4','SE5', 'SE6', 'SE7', 'ATU', 'FPU', 'FFM') + GROUP BY 1,2 + HAVING SUM(QTE_LCL) > 0; + + CREATE INDEX w_LIG_CLINI_forfaits_i1 + ON w_LIG_CLINI_forfaits + USING btree + (COD_LCL); + + + UPDATE w_GHS_VALORISE + SET CLE_GHM = '', GHS = 0, GHS_BEBE1 = 0 + FROM w_LIG_CLINI_forfaits + WHERE ANN_GHSV = ANN_LCL AND COD_GHSV = COD_LCL AND + (CLE_GHM <> '' OR GHS <> 0 OR GHS_BEBE1 <> 0) ; + + DROP TABLE IF EXISTS w_LIG_CLINI_forfaits; + + INSERT INTO activite.t_divers(code, texte, valeur, description) + SELECT 'SIGETAGRP','Prise en compte état groupage','2','2=Ne traiter que les dossiers validés (si pas validé = equivalent pas groupe)' + WHERE 'SIGETAGRP' NOT IN (SELECT code FROM activite.t_divers) + ; + + DROP TABLE IF EXISTS w_CONTROLE_DIM; + CREATE TEMP TABLE w_CONTROLE_DIM AS + SELECT + ANNEE AS ANN_CTLD, + CODE AS COD_CTLD, + (MAX(Array[to_char(CONTROLE_DIM.NL,'FM0000'), CASE WHEN CONTROLE_DIM.ETAT >= 0 THEN CONTROLE_DIM.DATE_ACTION::text ELSE '00010101' END]))[2]::date AS DATE_GROUPAGE, + (MAX(Array[to_char(CONTROLE_DIM.NL,'FM0000'), CASE WHEN CONTROLE_DIM.ETAT >= 1 THEN CONTROLE_DIM.DATE_ACTION::text ELSE '00010101' END]))[2]::date AS DATE_VALIDATION + FROM prod_sigems.CONTROLE_DIM + WHERE ETAT <> 2 + GROUP BY 1,2 + ORDER BY 1,2; + + UPDATE w_CONTROLE_DIM + SET DATE_VALIDATION = NULL + WHERE DATE_VALIDATION = '00010101' + ; + + UPDATE w_CONTROLE_DIM + SET DATE_GROUPAGE = NULL + WHERE DATE_GROUPAGE = '00010101' + ; + + UPDATE w_CONTROLE_DIM + SET DATE_GROUPAGE = DATE_VALIDATION + WHERE DATE_GROUPAGE IS NULL AND DATE_VALIDATION IS NOT NULL; + + + UPDATE w_CONTROLE_DIM + SET DATE_GROUPAGE = CASE WHEN DATE_VALIDATION >= DATE_GROUPAGE THEN DATE_VALIDATION ELSE NULL END + FROM activite.t_divers + WHERE t_divers.code = 'SIGETAGRP' AND t_divers.valeur = '2' AND + DATE_GROUPAGE IS DISTINCT FROM DATE_VALIDATION; + + + UPDATE w_GHS_VALORISE + SET CLE_GHM = '', GHS = 0, GHS_BEBE1 = 0 + FROM w_CONTROLE_DIM + WHERE ANN_GHSV = ANN_CTLD AND COD_GHSV = COD_CTLD AND DATE_GROUPAGE IS NULL AND + (CLE_GHM <> '' OR GHS <> 0 OR GHS_BEBE1 <> 0) ; + + UPDATE w_GHS_VALORISE + SET CLE_GHM = '', GHS = 0, GHS_BEBE1 = 0 + WHERE (ANN_GHSV ,COD_GHSV ) NOT IN (SELECT ANN_CTLD,COD_CTLD FROM w_CONTROLE_DIM) + AND GHS != 0 + ; + + -- Séjour + + DROP TABLE IF EXISTS w_DOSSIER_SEJOUR; + CREATE TEMP TABLE w_DOSSIER_SEJOUR AS + SELECT + ANN_DOS, + COD_DOS, + MAX(COALESCE(SER_SEJ,SER_DOS,'')) AS SER_DOS, + MAX(COALESCE(NCH_SEJ,NCH_DOS,'')) AS NCH_DOS + FROM prod_sigems.DOSSIER + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_DOS = ANN_SELECT AND COD_DOS = COD_SELECT + LEFT JOIN prod_sigems.SEJOUR ON ANN_DOS = ANN_SEJ AND COD_DOS = COD_SEJ + GROUP BY 1,2; + + CREATE INDEX w_DOSSIER_SEJOUR_i1 + ON w_DOSSIER_SEJOUR + USING btree + (COD_DOS); + + + -- RIS_DOS2 represente le risque d'un dossier. Cette donnee peut varier au fil des refacturations, il faut prendre la derniere utilisee + DROP TABLE IF EXISTS w_DOS2; + CREATE TEMP TABLE w_DOS2 AS + SELECT + ANN_DOS2, + COD_DOS2, + MAX(CP1_DOS2) AS CP1_DOS2, + MAX(CA2_DOS2) AS CA2_DOS2, + (MAX(array[to_char(ind_dos2, 'FM999'), ris_dos2]))[2] as RIS_DOS2, + COUNT(*) + FROM prod_sigems.DOS2 + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_DOS2 = ANN_SELECT AND COD_DOS2 = COD_SELECT + WHERE ETA_DOS2 >= 2 + GROUP BY 1,2; + + CREATE INDEX w_DOS2_i1 + ON w_DOS2 + USING btree + (COD_DOS2); + + DROP TABLE IF EXISTS w_LIG_CLINI_externes; + CREATE TEMP TABLE w_LIG_CLINI_externes AS + SELECT + ANN_LCL, + COD_LCL, + '07'::text AS MDT_LCL + FROM prod_sigems.LIG_CLINI + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LCL = ANN_SELECT AND COD_LCL = COD_SELECT + WHERE pro_lcl IN ('SE1', 'SE2', 'SE3', 'SE4','SE5', 'SE6', 'SE7', 'ATU', 'FPU', 'FFM') + GROUP BY 1,2 + HAVING SUM(QTE_LCL) > 0; + + CREATE INDEX w_LIG_CLINI_externes_i1 + ON w_LIG_CLINI_externes + USING btree + (COD_LCL); + + DROP TABLE IF EXISTS w_LIG_CLINI_hospit; + CREATE TEMP TABLE w_LIG_CLINI_hospit AS + SELECT + ANN_LCL, + COD_LCL, + MAX(CASE WHEN w_GHS_VALORISE.GHS IN (SELECT code FROM base.t_ghs WHERE texte like '%séance%') THEN '19'::text ELSE '03'::text END) AS MDT_LCL + FROM prod_sigems.LIG_CLINI + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LCL = ANN_SELECT AND COD_LCL = COD_SELECT + LEFT JOIN w_GHS_VALORISE ON ANN_GHSV = ANN_LCL AND COD_GHSV = COD_LCL + WHERE pro_lcl IN ('GHS') + GROUP BY 1,2 + HAVING SUM(QTE_LCL) > 0; + + CREATE INDEX w_LIG_CLINI_hospit_i1 + ON w_LIG_CLINI_hospit + USING btree + (COD_LCL); + + + -- Concernant le risque du dossier, on privilegie le risque present sur les factures (RIS_DOS2) au risque saisi a l'ouverture du dossier (RIS_DOS) + DROP TABLE IF EXISTS w_DOSSIER; + CREATE TEMP TABLE w_DOSSIER AS + SELECT + DOSSIER.ANN_DOS || to_char(DOSSIER.COD_DOS,'FM900000') AS SEJ_DOS, + DOSSIER.ANN_DOS, + DOSSIER.COD_DOS, + COALESCE(MDT_REEL,MDT_DOS) AS MDT_DOS, + COALESCE(w_LIG_CLINI_externes.MDT_LCL, w_LIG_CLINI_hospit.MDT_LCL, '') AS MDT_LCL, + DMT_SER AS DMT_DOS, + w_DOSSIER_SEJOUR.SER_DOS AS SER_DOS, + w_DOSSIER_SEJOUR.SER_DOS || '_' || COALESCE(MDT_REEL,MDT_DOS) AS SER_DOS_MDT, + COALESCE(SER_CHA,'') AS ETA_DOS, + COALESCE(SER_CHA || '|' || w_DOSSIER_SEJOUR.NCH_DOS, '|') AS NCH_DOS, + CCH_DOS, + CPH_DOS, + COALESCE(CHP_DOX,'') AS CHP_DOX, + DEN_DOS, + to_number('00' || MIN_DOS,'0000')*100 AS MIN_DOS, + to_timestamp(to_char(DEN_DOS,'YYYYMMDD') || MIN_DOS,'YYYYMMDDHH24')::timestamp without time zone AS w_DHEN_DOS, + COALESCE(DSO_DOS,'20991231') AS DSO_DOS, + to_number('00' || HEU_DOS,'0000')*100 AS HEU_DOS, + to_timestamp(to_char(COALESCE(DSO_DOS,'20991231'),'YYYYMMDD') || HEU_DOS,'YYYYMMDDHH24')::timestamp without time zone AS w_DHSO_DOS, + COALESCE(CP1_DOS2,'') AS CP1_DOS2, + COALESCE(CA2_DOS2,'') AS CA2_DOS2, + CASE WHEN LENGTH(MSO_DOS) = 2 THEN MSO_DOS ELSE '80' END AS MSO_DOS, + COALESCE(DATE_GROUPAGE,'20991231'::date) AS DATE_GROUPAGE, + COALESCE(GHS,0) AS GHS, + COALESCE(CLE_GHM,'') AS CLE_GHM, + COALESCE(GHS_BEBE1,0) AS GHS_BEBE1, + COALESCE(w_DOS2.RIS_DOS2, DOSSIER.RIS_DOS) AS RIS_DOS, + w_DOSSIER_SEJOUR.SER_DOS || '|' || + COALESCE(MDT_REEL,MDT_DOS) || '|' || + w_DOSSIER_SEJOUR.NCH_DOS || '|' || + COALESCE(CCH_DOS,'|') || '|' || + COALESCE(CP1_DOS2,'') || '|' || + COALESCE(CA2_DOS2,'') || '|' || + COALESCE(GHS,0) || '|' || + COALESCE(CLE_GHM,'') || '|' || + COALESCE(GHS_BEBE1,0) AS key + FROM prod_sigems.DOSSIER + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_DOS = ANN_SELECT AND COD_DOS = COD_SELECT + LEFT JOIN prod_sigems.DOSSIER_X ON DOSSIER.ANN_DOS = DOSSIER_X.ANN_DOX AND DOSSIER.COD_DOS = DOSSIER_X.COD_DOX AND CHP_DOX <> '' + LEFT JOIN prod_sigems.DOSSIER_MDT ON DOSSIER.ANN_DOS = DOSSIER_MDT.ANN_DOS AND DOSSIER.COD_DOS = DOSSIER_MDT.COD_DOS + LEFT JOIN w_LIG_CLINI_externes ON DOSSIER.ANN_DOS = w_LIG_CLINI_externes.ANN_LCL AND DOSSIER.COD_DOS = w_LIG_CLINI_externes.COD_LCL + LEFT JOIN w_LIG_CLINI_hospit ON DOSSIER.ANN_DOS = w_LIG_CLINI_hospit.ANN_LCL AND DOSSIER.COD_DOS = w_LIG_CLINI_hospit.COD_LCL + LEFT JOIN w_DOSSIER_SEJOUR ON DOSSIER.ANN_DOS = w_DOSSIER_SEJOUR.ANN_DOS AND DOSSIER.COD_DOS = w_DOSSIER_SEJOUR.COD_DOS + LEFT JOIN w_GHS_VALORISE ON ANN_GHSV = DOSSIER.ANN_DOS AND COD_GHSV = DOSSIER.COD_DOS + LEFT JOIN w_CONTROLE_DIM ON ANN_CTLD = DOSSIER.ANN_DOS AND COD_CTLD = DOSSIER.COD_DOS + LEFT JOIN w_DOS2 ON ANN_DOS2 = DOSSIER.ANN_DOS AND COD_DOS2 = DOSSIER.COD_DOS + LEFT JOIN prod_sigems.SERVICE ON w_DOSSIER_SEJOUR.SER_DOS = COD_SER + LEFT JOIN w_CHAMBRE ON w_DOSSIER_SEJOUR.NCH_DOS = COD_CHA AND w_DOSSIER_SEJOUR.NCH_DOS <> '' AND w_DOSSIER_SEJOUR.NCH_DOS <> '0' + WHERE DEN_DOS IS NOT NULL; + + -- Code chambre particulière demandée selon historique facturation + UPDATE w_DOSSIER + SET CHP_DOX = 'P*'||CHP_DOX + WHERE CHP_DOX <> '' AND CHP_DOX NOT LIKE 'P%' AND CHP_DOX <> 'CC' AND + CHP_DOX IN + ( + SELECT + CHP_DOX + FROM + ( + SELECT CHP_DOX, + count(DISTINCT ANN_DOX||to_char(COD_DOX,'FM900000')), + count(DISTINCT CASE WHEN ACT_PRC IS NOT NULL THEN ANN_DOX||to_char(COD_DOX,'FM900000') ELSE NULL END), + base.cti_division( + count(DISTINCT CASE WHEN ACT_PRC IS NOT NULL THEN ANN_DOX||to_char(COD_DOX,'FM900000') ELSE NULL END)::numeric , count(DISTINCT ANN_DOX||to_char(COD_DOX,'FM900000'))) AS pct + FROM prod_sigems.dossier_x + JOIN prod_sigems.dos2 ON ann_dox = ann_dos2 AND cod_dox = COD_DOS2 AND ETA_DOS2 >= 4 + LEFT JOIN prod_sigems.lig_clini ON ANN_DOx = ANN_LCL AND COD_LCL = COD_DOX + LEFT JOIN prod_sigems.prod_clini ON PRO_LCL = COD_PRC AND (ACT_PRC LIKE 'CP%' OR ACT_PRC = 'SHO') + WHERE CHP_DOX <> '' AND CHP_DOX NOT LIKE 'P%' AND CHP_DOX <> 'CC' + GROUP BY 1 + ORDER BY 1 + ) subview + WHERE pct >= 0.75 + ) + ; + + UPDATE w_DOSSIER SET + HEU_DOS = HEU_DOS + HEU_DOS_MIN, + w_DHSO_DOS = to_timestamp(to_char(COALESCE(DSO_DOS,'20991231'),'YYYYMMDD') || to_char(HEU_DOS+HEU_DOS_MIN,'FM0000'),'YYYYMMDDHH24MI')::timestamp without time zone + FROM + ( + SELECT ANN_DOS, COD_DOS, substr(MAX(HEU_SEJ||MIN_SEJ),3,2)::numeric AS HEU_DOS_MIN + FROM prod_sigems.dossier + JOIN prod_sigems.sejour ON + ann_dos = ann_sej AND + COD_DOS = COD_SEJ + WHERE DSO_DOS < now() AND + DSO_DOS = DAS_SEJ AND + DSO_DOS IS NOT NULL AND + ANN_DOS NOT LIKE 'P%' + GROUP BY 1,2 + HAVING substr(MAX(HEU_SEJ||MIN_SEJ),3,2) <> '00' + ) subview + WHERE w_DOSSIER.ANN_DOS = subview.ANN_DOS AND + w_DOSSIER.COD_DOS = subview.COD_DOS + ; + + UPDATE w_DOSSIER + SET ETA_DOS = substr(NCH_DOS,2), NCH_DOS = substr(NCH_DOS,2) || NCH_DOS + WHERE ETA_DOS = '' AND NCH_DOS <> '|' AND NCH_DOS LIKE '|%'; + + + CREATE INDEX w_DOSSIER_i1 + ON w_DOSSIER + USING btree + (SEJ_DOS); + + CREATE INDEX w_DOSSIER_i2 + ON w_DOSSIER + USING btree + (COD_DOS); + + + + DROP TABLE IF EXISTS w_DOSSIER_key; + CREATE TEMP TABLE w_DOSSIER_key AS + SELECT + key, + SER_DOS, + SER_DOS_MDT, + ETA_DOS, + NCH_DOS, + CCH_DOS, + CP1_DOS2, + CA2_DOS2, + GHS, + CLE_GHM, + GHS_BEBE1, + 0 AS mode_traitement_id, + ''::text AS mode_traitement_code, + ''::text AS dmt_code, + '0'::text AS type_sejour_force, + 0::bigint AS lieu_id, + 0::bigint AS unite_fonctionnelle_id, + 0::bigint AS medecin_sejour_id, + 0::bigint AS ghs_id, + 0::bigint AS ghm_id, + 0::bigint AS ghs_bebe1_id, + 0::bigint AS ghs_bebe2_id, + 0::bigint AS ghs_bebe3_id, + 0::bigint AS tiers_payant_0_id, + 0::bigint AS tiers_payant_1_id, + 0::bigint AS tiers_payant_2_id, + 0::bigint AS tiers_payant_22_id + FROM w_DOSSIER + GROUP BY 1,2,3,4,5,6,7,8,9,10,11; + + UPDATE w_DOSSIER_key SET + mode_traitement_id = t_modes_traitement.oid, + mode_traitement_code = t_modes_traitement.code, + dmt_code = t_dmt.code, + type_sejour_force = CASE WHEN t_services_facturation.type_sejour IN ('1', '2', '3', '4', '5', '9') THEN t_services_facturation.type_sejour ELSE '0' END + FROM activite[PX].t_services_facturation + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + WHERE t_services_facturation.code_original = SER_DOS_MDT; + + UPDATE w_DOSSIER_key + set medecin_sejour_id = t_medecins_administratifs.oid + FROM activite[PX].t_medecins_administratifs + WHERE CCH_DOS <> '' AND code_original = CCH_DOS; + + UPDATE w_DOSSIER_key + set tiers_payant_0_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE code_original = 'PATIENT'; + + UPDATE w_DOSSIER_key + set tiers_payant_1_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE CP1_DOS2 <> '' AND code_original = CP1_DOS2 AND type_tiers_payant = '1'; + + UPDATE w_DOSSIER_key + set tiers_payant_2_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE CA2_DOS2 <> '' AND code_original = CA2_DOS2 AND type_tiers_payant = '2'; + + UPDATE w_DOSSIER_key + set ghs_id = t_ghs.oid + FROM base.t_ghs + WHERE GHS <> 0 AND t_ghs.code = GHS; + + UPDATE w_DOSSIER_key + set ghm_id = t_ghm.oid + FROM base.t_ghm + WHERE CLE_GHM <> '' AND t_ghm.code = CLE_GHM AND t_ghm.code NOT LIKE '90%'; + + UPDATE w_DOSSIER_key + set ghs_bebe1_id = t_ghs.oid + FROM base.t_ghs + WHERE GHS_BEBE1 <> 0 AND t_ghs.code = GHS_BEBE1; + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_6) + SELECT SER_DOS_MDT, '', ETA_DOS, NCH_DOS, SER_DOS + FROM w_DOSSIER_key + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = SER_DOS_MDT AND + code_original_2 = '' AND + code_original_3 = ETA_DOS AND + code_original_4 = NCH_DOS AND + code_original_6 = SER_DOS + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5; + + UPDATE w_DOSSIER_key + set lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = SER_DOS_MDT AND + code_original_2 = '' AND + code_original_3 = ETA_DOS AND + code_original_4 = NCH_DOS AND + code_original_6 = SER_DOS; + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM + activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original + AND (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM + activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + -- Si forcage service séance et groupage dans une autre cmd, + UPDATE w_DOSSIER_key + SET type_sejour_force = '0' + WHERE type_sejour_force = '5' AND + substr(cle_ghm,1,2) BETWEEN '01' AND '27' + ; + + + + DROP TABLE IF EXISTS w_sejours; + CREATE TEMP TABLE w_sejours AS + SELECT + ''::text AS finess, + SEJ_DOS as no_sejour, + SEJ_DOS as code_original, + CPH_DOS as no_patient, + DEN_DOS as date_entree, + MIN_DOS * 100 as heure_entree, + DSO_DOS as date_sortie, + HEU_DOS * 100 as heure_sortie, + CASE WHEN SEX_PAT IN ('F') THEN '2' ELSE '1' END as code_sexe, + 0 AS age, + CASE + WHEN DSO_DOS IS NOT NULL AND DSO_DOS < '20991231' AND SEJ_DOS NOT LIKE 'P%' AND DSO_DOS <= date(now())THEN 1 ELSE 0 END::numeric as code_sorti, + CASE + WHEN SEJ_DOS LIKE 'P%' THEN 1::numeric + WHEN DEN_DOS > date(now()) THEN 1::numeric + ELSE 0::numeric END AS code_prevu, + CASE + WHEN type_sejour_force <> '0' THEN type_sejour_force + WHEN MDT_LCL IN ('03') AND DSO_DOS = DEN_DOS THEN '2' + WHEN MDT_LCL IN ('03') THEN '1' + WHEN MDT_LCL IN ('07') THEN '3' + WHEN mode_traitement_code IN ('07') OR dmt_code IN ('958') THEN '3' + WHEN mode_traitement_code IN ('19', '23') AND DSO_DOS = DEN_DOS THEN '2' + WHEN mode_traitement_code IN ('04') AND DSO_DOS = DEN_DOS THEN '2' + WHEN mode_traitement_code IN ('03') AND DSO_DOS = DEN_DOS THEN '2' + WHEN mode_traitement_code IN ('03') THEN '1' + ELSE '1' END as type_sejour, + lieu_id AS lieu_sortie_id, + unite_fonctionnelle_id, + w_DOSSIER_key.medecin_sejour_id AS medecin_sejour_id, + ghs_id, + ghm_id, + ghs_bebe1_id, + 0::numeric AS ghs_bebe2_id, + 0::numeric AS ghs_bebe3_id, + DATE_GROUPAGE, + CASE WHEN w_DOSSIER.CHP_DOX LIKE ANY(string_to_array(t_divers.valeur, ',')) THEN '1'::text ELSE '0'::text END AS code_cp_demandee, + mode_traitement_id, + CASE WHEN SUBSTR(ADM_DOS,1,1) <> '' THEN (CASE WHEN ANU_ADM <> '' THEN (CASE WHEN DAF_ADM IS NULL THEN ANU_ADM ELSE (CASE WHEN SUBSTR(ADM_DOS,1,1) IN ('6','7','8') THEN SUBSTR(ADM_DOS,1,1) ELSE '8' END) END) ELSE (CASE WHEN SUBSTR(ADM_DOS,1,1) IN ('6','7','8') THEN SUBSTR(ADM_DOS,1,1) ELSE '8' END) END)::text ELSE '8'::text END as mode_entree, + CASE WHEN SUBSTR(ADM_DOS,2,1) <> '' THEN (CASE WHEN ANU_ADM <> '' AND DAF_ADM IS NULL THEN (CASE WHEN (SUBSTR(ADM_DOS,1,1) = 'S' OR SUBSTR(ADM_DOS,2,1) = 'R') THEN '1' ELSE SUBSTR(ADM_DOS,2,1) END) ELSE SUBSTR(ADM_DOS,2,1) END)::text ELSE '0'::text END as provenance, + COALESCE(SUBSTR(MSO_DOS,1,1)::character(1), '8'::text) as mode_sortie, + COALESCE(SUBSTR(MSO_DOS,2,1)::character(1), '0'::text) as destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + 0 AS est_budget_global, + COALESCE(t_codes_postaux.oid, 0) as code_postal_id, + COALESCE(t_risque.oid, 0) as risque_id + + FROM w_DOSSIER + JOIN activite.t_divers ON t_divers.code = 'SIGEMS_CHPDOX' + LEFT JOIN prod_sigems.DOSSIER_X ON w_DOSSIER.ANN_DOS = DOSSIER_X.ANN_DOX AND w_DOSSIER.COD_DOS = DOSSIER_X.COD_DOX + LEFT JOIN prod_sigems.ADMISSION ON COD_ADM = ADM_DOS + JOIN w_DOSSIER_key ON w_DOSSIER.key = w_DOSSIER_key.key + LEFT JOIN w_PATIENT ON CPH_DOS = COD_PAT AND SEJ_DOS = SEJ_NUM + LEFT JOIN base.t_codes_postaux on t_codes_postaux.code = w_PATIENT.CPO_PAT + LEFT JOIN activite.t_risque ON t_risque.code = w_DOSSIER.RIS_DOS + ; + + + --Récupération de l'heure exacte d'entrée via le timestamp du premier mouvement du séjour + UPDATE w_sejours + SET heure_entree = (TO_CHAR(dt_debut, 'HH24MI') || '00')::numeric + FROM prod_sigems.SEJOUR + WHERE dt_debut IS NOT NULL AND + w_sejours.no_sejour = ANN_SEJ || to_char(COD_SEJ, 'FM900000') + ; + + + + + -- Forcage type selon séjour + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour + FROM activite.t_sejour + WHERE t_sejour.no_sejour = w_sejours.no_sejour AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9'); + + -- Forcage '9' pour Séjours ABANDON (prestation ABAN) + UPDATE w_sejours + SET type_sejour = '9' + WHERE type_sejour <> '9' AND no_sejour IN + ( + SELECT ANN_LCL || to_char(COD_LCL,'FM900000') + FROM prod_sigems.DOS2 + JOIN + ( + SELECT ANN_LCL, COD_LCL + FROM prod_sigems.LIG_CLINI + JOIN prod_sigems.DOS2 ON ANN_DOS2 = ANN_LCL AND COD_DOS2 = COD_LCL AND IND_DOS2 = IND_LCL + WHERE PRO_LCL = 'ABAN' AND ETA_DOS2 >= 4 + GROUP BY 1,2 + ) subview ON ANN_DOS2 = ANN_LCL AND COD_DOS2 = COD_LCL + GROUP BY 1 + HAVING SUM(SJ1_DOS2+SJ2_DOS2+SJ2_DOS2+HO1_DOS2+HO2_DOS2+HO3_DOS2) = 0 + ) + ; + + -- Calcul dates sortie prévisionnelles + + DROP TABLE IF EXISTS w_DOSSIER_DMS; + CREATE TEMP TABLE w_DOSSIER_DMS AS + SELECT SER_DOS, round(AVG(date(DSO_DOS) - date(DEN_DOS)),0) AS dms + FROM prod_sigems.DOSSIER + JOIN w_PERIODE ON periode_id = 0 + WHERE DEN_DOS IS NOT NULL AND DSO_DOS >= DEN_DOS AND DSO_DOS <= now_sigems + GROUP BY 1; + + + + UPDATE w_sejours + SET date_sortie = GREATEST(date_entree + (dms || ' days')::interval, now_sigems_1) + FROM w_DOSSIER_select + JOIN w_PERIODE ON periode_id = 0 + JOIN prod_sigems.DOSSIER ON ANN_SELECT = ANN_DOS AND COD_SELECT = COD_DOS + JOIN w_DOSSIER_DMS ON DOSSIER.SER_DOS = w_DOSSIER_DMS.SER_DOS + WHERE no_sejour = no_sejour_SELECT AND + date_sortie = '20991231' AND code_sorti <> '1'; + + + DROP TABLE IF EXISTS w_sejours_DMS; + CREATE TEMP TABLE w_sejours_DMS AS + SELECT medecin_sejour_id, unite_fonctionnelle_id, round(AVG(date(date_sortie) - date(date_entree)),0) AS dms + FROM w_sejours + JOIN w_PERIODE ON periode_id = 0 + WHERE code_sorti = '1' AND date_sortie >= date_entree AND date_sortie <= now_sigems + GROUP BY 1,2; + + + UPDATE w_sejours + SET date_sortie = GREATEST(date_entree + (dms || ' days')::interval, now_sigems_1) + FROM w_sejours_DMS + JOIN w_PERIODE ON periode_id = 0 + WHERE w_sejours.medecin_sejour_id = w_sejours_DMS.medecin_sejour_id AND + w_sejours.unite_fonctionnelle_id = w_sejours_DMS.unite_fonctionnelle_id AND + date_sortie = '20991231' AND code_sorti <> '1'; + + + DROP TABLE IF EXISTS w_sejours_DMS; + CREATE TEMP TABLE w_sejours_DMS AS + SELECT medecin_sejour_id, round(AVG(date(date_sortie) - date(date_entree)),0) AS dms + FROM w_sejours + JOIN w_PERIODE ON periode_id = 0 + WHERE code_sorti = '1' AND date_sortie >= date_entree AND date_sortie <= now_sigems + GROUP BY 1; + + + UPDATE w_sejours + SET date_sortie = GREATEST(date_entree + (dms || ' days')::interval, now_sigems_1) + FROM w_sejours_DMS + JOIN w_PERIODE ON periode_id = 0 + WHERE w_sejours.medecin_sejour_id = w_sejours_DMS.medecin_sejour_id AND + date_sortie = '20991231' AND code_sorti <> '1'; + + + DROP TABLE IF EXISTS w_sejours_DMS; + CREATE TEMP TABLE w_sejours_DMS AS + SELECT round(AVG(date(date_sortie) - date(date_entree)),0) AS dms + FROM w_sejours + JOIN w_PERIODE ON periode_id = 0 + WHERE code_sorti = '1' AND date_sortie >= date_entree AND date_sortie <= now_sigems; + + + UPDATE w_sejours + SET date_sortie = GREATEST(date_entree + (dms || ' days')::interval, now_sigems_1) + FROM w_sejours_DMS + JOIN w_PERIODE ON periode_id = 0 + WHERE date_sortie = '20991231' AND code_sorti <> '1'; + + + UPDATE w_sejours SET heure_sortie = heure_entree + 40000 + WHERE code_sorti <> '1' AND date_sortie = date_entree AND heure_entree <= 190000; + + UPDATE w_sejours SET heure_sortie = 235959 + WHERE code_sorti <> '1' AND date_sortie = date_entree AND heure_entree > 190000; + + UPDATE w_sejours SET heure_sortie = 130000 + WHERE code_sorti <> '1' AND date_sortie > date_entree ; + + + UPDATE w_DOSSIER + SET w_DHSO_DOS = to_timestamp(to_char(COALESCE(date_sortie,'20991231'),'YYYYMMDD') || to_char(heure_sortie,'FM000000'),'YYYYMMDDHH24') + FROM w_sejours + WHERE SEJ_DOS = no_sejour AND + (code_sorti <> '1' OR code_prevu = '1'); + + + -- Pointage séjours Budget Global + UPDATE w_sejours + SET est_budget_global = 1 + FROM activite[PX].t_lieux + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid AND t_services_facturation.est_budget_global = '1' + WHERE lieu_sortie_id = t_lieux.oid AND + w_sejours.est_budget_global IS DISTINCT FROM 1; + + + -- FINESS + UPDATE w_sejours + SET finess = t_finess.code + FROM activite[PX].t_lieux + JOIN activite[PX].t_services_facturation on service_facturation_id = t_services_facturation.oid + JOIN base.t_finess ON finess_id = t_finess.oid + WHERE lieu_sortie_id = t_lieux.oid; + + UPDATE w_sejours + SET finess = '000000000' + WHERE finess = ''; + + -- Validation des séjours + + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_13'); + + UPDATE activite[PX].p_sejours SET + finess = w_sejours.finess, + code_original = w_sejours.code_original, + no_patient = w_sejours.no_patient, + date_entree = w_sejours.date_entree, + heure_entree = w_sejours.heure_entree, + date_sortie = w_sejours.date_sortie, + heure_sortie = w_sejours.heure_sortie, + code_sexe = w_sejours.code_sexe, + age = w_sejours.age, + code_sorti = w_sejours.code_sorti, + code_prevu = w_sejours.code_prevu, + type_sejour = w_sejours.type_sejour, + lieu_sortie_id = w_sejours.lieu_sortie_id, + medecin_sejour_id = w_sejours.medecin_sejour_id, + code_cp_demandee = w_sejours.code_cp_demandee, + mode_traitement_id = w_sejours.mode_traitement_id, + mode_entree = w_sejours.mode_entree, + provenance = w_sejours.provenance, + mode_sortie = w_sejours.mode_sortie, + destination = w_sejours.destination, + tiers_payant_0_id = w_sejours.tiers_payant_0_id, + tiers_payant_1_id = w_sejours.tiers_payant_1_id, + tiers_payant_2_id = w_sejours.tiers_payant_2_id, + tiers_payant_22_id = w_sejours.tiers_payant_22_id, + est_budget_global = w_sejours.est_budget_global, + date_groupage = w_sejours.date_groupage, + ghs_id = w_sejours.ghs_id, + ghm_id = w_sejours.ghm_id, + ghs_bebe1_id = w_sejours.ghs_bebe1_id, + ghs_bebe2_id = w_sejours.ghs_bebe2_id, + ghs_bebe3_id = w_sejours.ghs_bebe3_id, + code_postal_id = w_sejours.code_postal_id, + risque_id = w_sejours.risque_id + FROM w_sejours + WHERE w_sejours.no_sejour = p_sejours.no_sejour + AND ( + w_sejours.finess IS DISTINCT FROM p_sejours.finess OR + w_sejours.code_original IS DISTINCT FROM p_sejours.code_original OR + w_sejours.no_patient IS DISTINCT FROM p_sejours.no_patient OR + w_sejours.date_entree IS DISTINCT FROM p_sejours.date_entree OR + w_sejours.heure_entree IS DISTINCT FROM p_sejours.heure_entree OR + w_sejours.date_sortie IS DISTINCT FROM p_sejours.date_sortie OR + w_sejours.heure_sortie IS DISTINCT FROM p_sejours.heure_sortie OR + w_sejours.code_sexe IS DISTINCT FROM p_sejours.code_sexe OR + w_sejours.age IS DISTINCT FROM p_sejours.age OR + w_sejours.code_sorti IS DISTINCT FROM p_sejours.code_sorti OR + w_sejours.code_prevu IS DISTINCT FROM p_sejours.code_prevu OR + w_sejours.type_sejour IS DISTINCT FROM p_sejours.type_sejour OR + w_sejours.lieu_sortie_id IS DISTINCT FROM p_sejours.lieu_sortie_id OR + w_sejours.medecin_sejour_id IS DISTINCT FROM p_sejours.medecin_sejour_id OR + w_sejours.code_cp_demandee IS DISTINCT FROM p_sejours.code_cp_demandee OR + w_sejours.mode_traitement_id IS DISTINCT FROM p_sejours.mode_traitement_id OR + w_sejours.mode_entree IS DISTINCT FROM p_sejours.mode_entree OR + w_sejours.provenance IS DISTINCT FROM p_sejours.provenance OR + w_sejours.mode_sortie IS DISTINCT FROM p_sejours.mode_sortie OR + w_sejours.destination IS DISTINCT FROM p_sejours.destination OR + w_sejours.tiers_payant_0_id IS DISTINCT FROM p_sejours.tiers_payant_0_id OR + w_sejours.tiers_payant_1_id IS DISTINCT FROM p_sejours.tiers_payant_1_id OR + w_sejours.tiers_payant_2_id IS DISTINCT FROM p_sejours.tiers_payant_2_id OR + w_sejours.tiers_payant_22_id IS DISTINCT FROM p_sejours.tiers_payant_22_id OR + w_sejours.est_budget_global IS DISTINCT FROM p_sejours.est_budget_global OR + w_sejours.date_groupage IS DISTINCT FROM p_sejours.date_groupage OR + w_sejours.ghs_id IS DISTINCT FROM p_sejours.ghs_id OR + w_sejours.ghm_id IS DISTINCT FROM p_sejours.ghm_id OR + w_sejours.ghs_bebe1_id IS DISTINCT FROM p_sejours.ghs_bebe1_id OR + w_sejours.ghs_bebe2_id IS DISTINCT FROM p_sejours.ghs_bebe2_id OR + w_sejours.ghs_bebe3_id IS DISTINCT FROM p_sejours.ghs_bebe3_id OR + w_sejours.code_postal_id IS DISTINCT FROM p_sejours.code_postal_id OR + w_sejours.risque_id IS DISTINCT FROM p_sejours.risque_id + ); + + + INSERT INTO activite[PX].p_sejours ( + finess, + no_sejour, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + lieu_sortie_id, + medecin_sejour_id, + ghs_id, + ghm_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + est_budget_global, + code_postal_id, + risque_id + ) + SELECT + w_sejours.finess, + w_sejours.no_sejour, + w_sejours.code_original, + w_sejours.no_patient, + w_sejours.date_entree, + w_sejours.heure_entree, + w_sejours.date_sortie, + w_sejours.heure_sortie, + w_sejours.code_sexe, + w_sejours.age, + w_sejours.code_sorti, + w_sejours.code_prevu, + w_sejours.type_sejour, + w_sejours.lieu_sortie_id, + w_sejours.medecin_sejour_id, + w_sejours.ghs_id, + w_sejours.ghm_id, + w_sejours.ghs_bebe1_id, + w_sejours.ghs_bebe2_id, + w_sejours.ghs_bebe3_id, + w_sejours.date_groupage, + w_sejours.code_cp_demandee, + w_sejours.mode_traitement_id, + w_sejours.mode_entree, + w_sejours.provenance, + w_sejours.mode_sortie, + w_sejours.destination, + w_sejours.tiers_payant_0_id, + w_sejours.tiers_payant_1_id, + w_sejours.tiers_payant_2_id, + w_sejours.tiers_payant_22_id, + w_sejours.est_budget_global, + w_sejours.code_postal_id, + w_sejours.risque_id + + FROM w_sejours LEFT JOIN activite[PX].p_sejours ON (w_sejours.no_sejour = p_sejours.no_sejour) + WHERE p_sejours.no_sejour IS NULL; + + DELETE FROM activite[PX].p_sejours WHERE no_sejour NOT IN (SELECT no_sejour_SELECT FROM w_DOSSIER_SELECT); + + DELETE FROM activite[PX].p_sejours USING + ( + SELECT no_sejour, min(CTID) AS koctid + FROM activite[PX].p_sejours + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE CTID = koctid; + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '[PX]' = ''; + + UPDATE activite[PX].p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND + '[PX]' = ''; + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '[PX]' = ''; + + -- recréation index + + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_13'); + + -- transferts d'établissements + INSERT INTO base.t_etablissements (code, texte, texte_court) + SELECT + NUM_FINESS, + NOM, + NOM + FROM + prod_sigems.ETAB_CONV + WHERE 1=1 AND + CODE IN (SELECT DISTINCT ETAB FROM prod_sigems.DOSSIER_Y) AND + NUM_FINESS NOT IN (SELECT code FROM base.t_etablissements) + ; + + INSERT INTO base.t_etablissements (code, texte, texte_court) + SELECT + NUM_FINESS, + NOM, + NOM + FROM + prod_sigems.ETAB_CONV + WHERE 1=1 AND + CODE IN (SELECT DISTINCT CH2 FROM prod_sigems.DOSSIER_Y) AND + NUM_FINESS NOT IN (SELECT code FROM base.t_etablissements) + ; + + INSERT INTO activite[PX].p_sejours_transferts (sejour_id, provenance_id, destination_id) + SELECT + p_sejours.oid, + MIN(CASE WHEN mode_entree = 7 THEN provenance.oid ELSE null END) AS provenance_id, + MIN(CASE WHEN mode_sortie = 7 THEN destination.oid ELSE null END) AS destination_id + FROM + activite[PX].p_sejours + JOIN prod_sigems.DOSSIER_Y ON ANNEE || to_char(DOSSIER_Y.CODE,'FM900000') = no_sejour + LEFT JOIN prod_sigems.ETAB_CONV PROV ON CH2 = PROV.CODE + LEFT JOIN prod_sigems.ETAB_CONV DEST ON ETAB = DEST.CODE + LEFT JOIN base.t_etablissements provenance ON PROV.NUM_FINESS = provenance.code + LEFT JOIN base.t_etablissements destination ON DEST.NUM_FINESS = destination.code + WHERE 1!=1 OR + ETAB != '' OR + CH2 != '' + GROUP BY 1 + ; + + -- assurance + INSERT INTO activite[PX].p_sejours_assurance( + sejour_id, + nom_assure, + prenom_assure, + tiers_payant_0_id, + tiers_payant_1_id, + matricule_1, + tiers_payant_2_id, + matricule_2, + tiers_payant_22_id, + matricule_22 + ) + SELECT + p_sejours.oid AS sejour_id, + ''::text AS nom_assure, + ''::text prenom_assure, + MAX(p_sejours.tiers_payant_0_id), + MAX(p_sejours.tiers_payant_1_id), + MAX(substr(NC1_DOS,1,13)) AS matricule_1, + MAX(p_sejours.tiers_payant_2_id), + MAX(CASE WHEN NC2_DOS <> '' THEN NC2_DOS ELSE substr(NC1_DOS,1,13) END) AS matricule_2, + MAX(p_sejours.tiers_payant_22_id), + ''::text AS matricule_22 + FROM prod_sigems.DOSSIER + JOIN activite[PX].p_sejours ON code_original = ANN_DOS || to_char(COD_DOS,'FM900000') + GROUP BY 1 + ; + + ]]> + + + + '' AND NCH_SEJ <> '0' + WHERE DAE_SEJ <= DAS_SEJ OR DAS_SEJ IS NULL OR SEJOUR.ANN_SEJ IS NULL + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 + ORDER BY SEJ_DOS + ; + + + UPDATE w_SEJOUR + SET ETA_SEJ = substr(NCH_SEJ,2), NCH_SEJ = substr(NCH_SEJ,2) || NCH_SEJ + WHERE ETA_SEJ = '' AND NCH_SEJ <> '|' AND NCH_SEJ LIKE '|%'; + + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_6) + SELECT SER_SEJ_MDT, '', ETA_SEJ, NCH_SEJ, SER_SEJ + FROM w_SEJOUR + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = SER_SEJ_MDT AND + code_original_2 = '' AND + code_original_3 = ETA_SEJ AND + code_original_4 = NCH_SEJ AND + code_original_6 = SER_SEJ + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5; + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM + activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original + AND (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + + -- L'étage 'NULL' est faux + UPDATE activite[PX].t_lieux + SET lit_id = 0 + WHERE code_original_3 = 'NULL'; + + -- Le lit 'NULL' est faux + UPDATE activite[PX].t_lieux + SET lit_id = t_lits_g.oid + FROM activite[PX].t_lits + JOIN activite[PX].t_lits t_lits_g ON t_lits.etage_id = t_lits_g.etage_id AND t_lits_g.code_original LIKE '%|0' + WHERE t_lieux.lit_id = t_lits.oid AND + code_original_4 LIKE '%|NULL%' AND + code_original_3 <> ''; + + + DROP TABLE IF EXISTS w_SEJOUR_2; + CREATE TEMP TABLE w_SEJOUR_2 AS + SELECT + SEJ_DOS, + ANN_DOS, + COD_DOS, + w_DHEN_DOS, + w_DHSO_DOS, + URG, + SER_SEJ, + SER_SEJ_MDT, + ETA_SEJ, + NCH_SEJ, + '1'::text AS w_QENTREE, + DAE_SEJ, + w_DHAE_SEJ, + '1'::text AS w_QSORTIE, + DAS_SEJ, + HEU_SEJ, + w_DHAS_SEJ, + ''::text AS SER_SEJ_MDT_before, + ''::text AS ETA_SEJ_before, + ''::text AS SER_SEJ_MDT_next, + ''::text AS ETA_SEJ_next, + COALESCE(t_lieux.oid,0) AS lieu_id + FROM w_SEJOUR + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = SER_SEJ_MDT AND + code_original_2 = '' AND + code_original_3 = ETA_SEJ AND + code_original_4 = NCH_SEJ AND + code_original_6 = SER_SEJ + ) + ORDER BY SEJ_DOS, w_DHAS_SEJ; + + + + + DROP SEQUENCE IF EXISTS w_SEJOUR_seq; + CREATE TEMP SEQUENCE w_SEJOUR_seq + INCREMENT 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 1 + CACHE 1; + + + DROP TABLE IF EXISTS w_SEJOUR; + CREATE TEMP TABLE w_SEJOUR AS + SELECT + nextval('w_SEJOUR_seq'::regclass) AS sequence, + SEJ_DOS, + ANN_DOS, + COD_DOS, + w_DHEN_DOS, + w_DHSO_DOS, + URG, + SER_SEJ, + SER_SEJ_MDT, + ETA_SEJ, + NCH_SEJ, + w_QENTREE, + DAE_SEJ, + w_DHAE_SEJ, + w_QSORTIE, + DAS_SEJ, + HEU_SEJ, + w_DHAS_SEJ, + SER_SEJ_MDT_before, + ETA_SEJ_before, + SER_SEJ_MDT_next, + ETA_SEJ_next, + lieu_id + FROM w_SEJOUR_2 + ORDER BY SEJ_DOS, w_DHAS_SEJ; + + CREATE INDEX w_SEJOUR_i1 + ON w_SEJOUR + USING btree + (SEJ_DOS); + + + + + UPDATE w_SEJOUR + SET + w_DHAE_SEJ = w_SEJOUR_before.w_DHAS_SEJ + interval '1 SECOND' + FROM w_SEJOUR w_SEJOUR_before + WHERE w_SEJOUR.SEJ_DOS = w_SEJOUR_before.SEJ_DOS + AND w_SEJOUR.sequence = w_SEJOUR_before.sequence + 1; + + + + + DROP TABLE IF EXISTS w_SEJOUR_SEJOUR; + CREATE TEMP TABLE w_SEJOUR_SEJOUR AS + SELECT + SEJ_DOS + FROM w_SEJOUR + GROUP BY 1 + HAVING count(*) > 1; + + DELETE FROM w_SEJOUR + USING w_SEJOUR_SEJOUR + WHERE w_SEJOUR_SEJOUR.SEJ_DOS = w_SEJOUR.SEJ_DOS AND w_DHAE_SEJ > w_DHSO_DOS; + + DELETE FROM w_SEJOUR + USING w_SEJOUR_SEJOUR + WHERE w_SEJOUR_SEJOUR.SEJ_DOS = w_SEJOUR.SEJ_DOS AND w_DHAS_SEJ < w_DHEN_DOS ; + + DROP TABLE IF EXISTS w_SEJOUR_SEJOUR; + CREATE TEMP TABLE w_SEJOUR_SEJOUR AS + SELECT + SEJ_DOS, + MIN(sequence) AS sequence_1, + MAX(sequence) AS sequence_9 + FROM w_SEJOUR + GROUP BY 1; + + + + UPDATE w_SEJOUR + SET w_DHAS_SEJ = w_DHSO_DOS + FROM w_SEJOUR_SEJOUR + WHERE w_SEJOUR.SEJ_DOS = w_SEJOUR_SEJOUR.SEJ_DOS AND w_SEJOUR.sequence = w_SEJOUR_SEJOUR.sequence_9 AND + w_DHAS_SEJ <> w_DHSO_DOS; + + + UPDATE w_SEJOUR + SET w_DHAE_SEJ = w_DHEN_DOS + FROM w_SEJOUR_SEJOUR + WHERE w_SEJOUR.SEJ_DOS = w_SEJOUR_SEJOUR.SEJ_DOS AND w_SEJOUR.sequence = w_SEJOUR_SEJOUR.sequence_1 AND + w_DHAE_SEJ <> w_DHEN_DOS; + + + + + UPDATE w_SEJOUR + SET + w_QSORTIE = '0', + SER_SEJ_MDT_next = w_SEJOUR_next.SER_SEJ_MDT, + ETA_SEJ_next = w_SEJOUR_next.ETA_SEJ + FROM w_SEJOUR w_SEJOUR_next + WHERE w_SEJOUR.SEJ_DOS = w_SEJOUR_next.SEJ_DOS + AND w_SEJOUR.sequence = w_SEJOUR_next.sequence - 1; + + + + UPDATE w_SEJOUR + SET + w_QENTREE = '0', + w_DHAE_SEJ = w_SEJOUR_before.w_DHAS_SEJ + interval '1 SECOND', + SER_SEJ_MDT_before = w_SEJOUR_before.SER_SEJ_MDT, + ETA_SEJ_before = w_SEJOUR_before.ETA_SEJ + FROM w_SEJOUR w_SEJOUR_before + WHERE w_SEJOUR.SEJ_DOS = w_SEJOUR_before.SEJ_DOS + AND w_SEJOUR.sequence = w_SEJOUR_before.sequence + 1; + + + DELETE FROM w_SEJOUR WHERE w_DHAE_SEJ > w_DHAS_SEJ; + + + + + + DROP TABLE IF EXISTS w_mouvements_sejour; + + CREATE TEMP TABLE w_mouvements_sejour AS + SELECT + w_SEJOUR.SEJ_DOS, + w_SEJOUR.SEJ_DOS AS no_sejour, + p_sejours.oid AS sejour_id, + sequence, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE WHEN p_calendrier.date = date(w_DHAE_SEJ) THEN extract('hour' from w_DHAE_SEJ) * 10000 + extract('minute' from w_DHAE_SEJ) * 100 + extract('second' from w_DHAE_SEJ) ELSE 0 END AS heure_debut, + CASE WHEN p_calendrier.date = date(w_DHAS_SEJ) THEN extract('hour' from w_DHAS_SEJ) * 10000 + extract('minute' from w_DHAS_SEJ) * 100 + extract('second' from w_DHAS_SEJ) ELSE 240000 END AS heure_fin, + CASE WHEN w_QENTREE = '1' AND p_calendrier.date = date(w_DHAE_SEJ) AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes, + CASE WHEN w_QSORTIE = '1' AND p_calendrier.date = date(w_DHAS_SEJ) AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes, + CASE WHEN w_QENTREE = '1' AND p_calendrier.date = date(w_DHAE_SEJ) AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree, + CASE WHEN w_QSORTIE = '1' AND p_calendrier.date = date(w_DHAS_SEJ) AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie, + CASE WHEN p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN w_QENTREE = '1' AND p_calendrier.date = date(w_DHAE_SEJ) AND p_sejours.type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires, + CASE WHEN w_QENTREE = '1' AND p_calendrier.date = date(w_DHAE_SEJ) AND p_sejours.type_sejour = '3' THEN 1 ELSE 0 END AS nb_externes, + CASE WHEN URG = '1' AND p_calendrier.date = date(w_DHAE_SEJ) AND w_QENTREE = '1' THEN 1 ELSE 0 END AS nb_urgences, + 0 as nb_seances, + + CASE WHEN p_calendrier.date = date(w_DHAE_SEJ) AND p_sejours.type_sejour = '1' AND w_QENTREE <> '1' AND SER_SEJ_MDT <> SER_SEJ_MDT_before THEN 1 ELSE 0 END AS nb_entrees_mutation_service, + CASE WHEN p_calendrier.date = date(w_DHAS_SEJ) AND p_sejours.type_sejour = '1' AND w_QSORTIE <> '1' AND SER_SEJ_MDT <> SER_SEJ_MDT_next THEN 1 ELSE 0 END AS nb_sorties_mutation_service, + CASE WHEN p_calendrier.date = date(w_DHAE_SEJ) AND p_sejours.type_sejour = '1' AND w_QENTREE <> '1' AND ETA_SEJ <> ETA_SEJ_before THEN 1 ELSE 0 END AS nb_entrees_mutation_etage, + CASE WHEN p_calendrier.date = date(w_DHAS_SEJ) AND p_sejours.type_sejour = '1' AND w_QSORTIE <> '1' AND ETA_SEJ <> ETA_SEJ_next THEN 1 ELSE 0 END AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + 0 AS nb_entrees_mutation_unite_medicale, + 0 AS nb_sorties_mutation_unite_medicale, + + CASE WHEN p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN p_sejours.type_sejour = '1' AND p_calendrier.date <> date(w_DHAS_SEJ) THEN 1 ELSE 0 END AS nb_jours_js_non_inclus, + + CASE WHEN (p_sejours.type_sejour = '1' OR p_sejours.type_sejour = '2') AND t_lits.chambre_particuliere = 'O' THEN '1' ELSE '0' END AS est_chambre_particuliere, + CASE WHEN (p_sejours.type_sejour = '1' OR p_sejours.type_sejour = '2') AND t_lits.chambre_particuliere = 'O' THEN 1 ELSE 0 END AS nb_chambres_particulieres, + + 0 AS nb_bebes, + + lieu_id, + + p_sejours.medecin_sejour_id as medecin_sejour_id, + + CASE WHEN p_sejours.code_prevu = '1' OR p_calendrier.date > date(now_sigems) THEN '1' ELSE '0' END AS est_mouvement_previsionnel + FROM w_SEJOUR + JOIN w_PERIODE ON periode_id = 0 + JOIN activite[PX].p_sejours ON w_SEJOUR.SEJ_DOS = p_sejours.no_sejour AND p_sejours.etat = '' + LEFT JOIN activite[PX].t_lits ON NCH_SEJ = t_lits.code_original + JOIN base.p_calendrier ON (p_calendrier.date BETWEEN date(w_DHAE_SEJ) AND date(w_DHAS_SEJ) AND p_calendrier.date <= now() + interval '1 month' ) + ORDER BY sequence, p_calendrier.date; + + + -- Bébés + DROP TABLE IF EXISTS w_CCAM_RUM_bebes; + + CREATE TEMP TABLE w_CCAM_RUM_bebes AS + SELECT jointure AS no_sejour, + MAX(CASE WHEN t_actes.texte ILIKE '%multiple%' THEN 2 ELSE 1 END) AS nb_bebes + FROM prod_sigems.CCAM_RUM + JOIN base.t_actes ON substring(CCAM_RUM.CODE, 1, 7) = t_actes.code AND + CCAM_RUM.CODE LIKE 'JQG%' AND + t_actes.texte ILIKE 'accouchement%' + WHERE ACTIVITE = '1' + GROUP BY 1; + + UPDATE w_mouvements_sejour + SET nb_bebes = w_CCAM_RUM_bebes.nb_bebes + FROM w_CCAM_RUM_bebes + WHERE w_CCAM_RUM_bebes.no_sejour = w_mouvements_sejour.no_sejour AND + (nb_entrees_directes = 1 OR nb_externes = 1 OR nb_ambulatoires = 1); + + -- Séances + SELECT base.cti_execute('INSERT INTO activite.t_divers (code, description, texte, valeur) + VALUES (''K15_SEANCE'', + ''Création de séances pour les actes K coefficient 15 : 0 = Jamais, 1 = Toujours, 2 = Sauf pour les séjours Hospitalisation'', + ''Règle de création de séances pour les actes K coefficient 15'', + ''1'')',1) + WHERE (SELECT valeur FROM activite.t_divers WHERE code = 'K15_SEANCE') IS NULL; + + DROP TABLE IF EXISTS w_LIG_HONOR_seances; + + CREATE TEMP TABLE w_LIG_HONOR_seances AS + SELECT + SEJ_DOS, + date(dde_lho) AS date, + 1::numeric AS nb_seances + FROM prod_sigems.LIG_HONOR + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LHO = ANN_SELECT AND COD_LHO = COD_SELECT + JOIN w_DOSSIER ON ANN_LHO = ANN_DOS AND COD_LHO = COD_DOS + JOIN prod_sigems.PROD_HONOR ON CPH_LHO = COD_PRH + LEFT JOIN prod_sigems.CCAM_RUM ON LIG_HONOR.NUM_LHO = CCAM_RUM.NUM_LHO AND date(DDE_LHO) = date(CCAM_RUM.DAT) + JOIN w_sejours ON SEJ_DOS = no_sejour + JOIN activite.t_divers ON t_divers.code = 'K15_SEANCE' + WHERE + ( + ACT_PRH = 'K' AND + (COF_LHO = 30 OR (COF_LHO = 15 AND (valeur = 1 OR (valeur = 2 AND type_sejour != 1)))) AND + (CPH_LHO = 'CHI' OR DMT_LHO = '302') + ) OR + CCAM_RUM.CODE = ANY(Array['JVJF003','JVJF004','JVJF008','GLLP006','GLLP007','ZZNL051','ZZNL063','ZZNL065']) OR + DMT_LHO = '796' + GROUP BY 1,2 + HAVING SUM(QTE_LHO) > 0; + + CREATE INDEX w_LIG_HONOR_seances_i1 + ON w_LIG_HONOR_seances + USING btree + (SEJ_DOS); + + UPDATE w_mouvements_sejour + SET nb_seances = w_LIG_HONOR_seances.nb_seances + FROM w_LIG_HONOR_seances + WHERE w_LIG_HONOR_seances.SEJ_DOS = w_mouvements_sejour.no_sejour AND + w_LIG_HONOR_seances.date = w_mouvements_sejour.date; + + -- Séances chimio ESPIC + DROP TABLE IF EXISTS w_LIG_CLINI_seances302; + CREATE TEMP TABLE w_LIG_CLINI_seances302 AS + SELECT + SEJ_DOS, + p_calendrier.date AS date, + SUM(CASE WHEN QTE_LCL > 0 THEN 1 ELSE -1 END) AS nb_seances + FROM prod_sigems.LIG_CLINI + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LCL = ANN_SELECT AND COD_LCL = COD_SELECT + JOIN w_DOSSIER ON ANN_LCL = ANN_DOS AND COD_LCL = COD_DOS + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date(DDE_LCL) AND COALESCE(DFI_LCL,date(DDE_LCL + (abs(QTE_LCL)-1||' days)')::interval)) + WHERE PRO_LCL IN ('PJ') AND DMT_LCL = '302' AND QTE_LCL <> 0 + GROUP BY 1,2 + ; + + CREATE INDEX w_LIG_CLINI_seances302_i1 + ON w_LIG_CLINI_seances302 + USING btree + (SEJ_DOS); + + UPDATE w_mouvements_sejour + SET nb_seances = w_LIG_CLINI_seances302.nb_seances + FROM w_LIG_CLINI_seances302 + WHERE w_LIG_CLINI_seances302.SEJ_DOS = w_mouvements_sejour.no_sejour AND + w_LIG_CLINI_seances302.date = w_mouvements_sejour.date + ; + + -- Selon PMSI + DROP TABLE IF EXISTS w_ETAT_PMSI_seances; + CREATE TEMP TABLE w_ETAT_PMSI_seances AS + SELECT JOINTURE, date(ETAT_PMSI.ENTREE) AS date + FROM prod_sigems.ETAT_PMSI + JOIN prod_sigems.UN_RUM ON NUM_RSS = JOINTURE + JOIN prod_sigems.PMSI_GHM ON UN_RUM.GHM = PMSI_GHM.CODE_GHM + WHERE CLE_GHM LIKE '28%' + AND JOINTURE NOT IN (SELECT no_sejour FROM w_mouvements_sejour WHERE nb_seances > 0 ) + ; + + UPDATE w_mouvements_sejour + SET nb_seances = 1 + FROM w_ETAT_PMSI_seances + WHERE w_ETAT_PMSI_seances.JOINTURE = w_mouvements_sejour.no_sejour AND + w_ETAT_PMSI_seances.date = w_mouvements_sejour.date + ; + + -- Séances dialyse + DROP TABLE IF EXISTS w_LIG_CLINI_seances; + + CREATE TEMP TABLE w_LIG_CLINI_seances AS + SELECT + SEJ_DOS, + date(DDE_LCL) AS date, + SUM(QTE_LCL) AS nb_seances + FROM prod_sigems.LIG_CLINI + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LCL = ANN_SELECT AND COD_LCL = COD_SELECT + JOIN w_DOSSIER ON ANN_LCL = ANN_DOS AND COD_LCL = COD_DOS + WHERE PRO_LCL IN ('D01', 'D02', 'D03', 'D04', 'D05', 'D06', 'D07', 'D08', 'D09', 'D10', 'D11', 'D12', 'D13', 'D14', 'D15', 'D16', 'D17', 'D18', 'D19') + GROUP BY 1,2; + + CREATE INDEX w_LIG_CLINI_seances_i1 + ON w_LIG_CLINI_seances + USING btree + (SEJ_DOS); + + UPDATE w_mouvements_sejour + SET nb_seances = w_LIG_CLINI_seances.nb_seances + FROM w_LIG_CLINI_seances + WHERE w_LIG_CLINI_seances.SEJ_DOS = w_mouvements_sejour.no_sejour AND + w_LIG_CLINI_seances.date = w_mouvements_sejour.date; + + + + + -- seances selon GHS pmsi + DROP TABLE IF EXISTS w_ghs_seances; + CREATE TEMP TABLE w_ghs_seances AS + SELECT ghs_id AS oid + FROM activite[PX].p_sejours + JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid AND t_ghm.code LIKE '28%' + JOIN base.t_ghs ON p_sejours.ghs_id = t_ghs.oid AND t_ghs.code <> 9999 AND t_ghs.code > 0 + WHERE ghs_id <> 0 + GROUP BY 1; + + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT + p_sejours.no_sejour, + date_entree AS date, + 1 AS nb_seances + FROM activite[PX].p_sejours + JOIN base.t_ghs ON p_sejours.ghs_id = t_ghs.oid + JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid + WHERE date_entree = date_sortie AND type_sejour <> '5' AND + date_groupage < '20991231' AND + (ghs_id IN (SELECT oid FROM w_ghs_seances) OR t_ghm.code LIKE '28%'); + + CREATE INDEX w_sejours_seances_i1 + ON w_sejours_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_sejours_seances.nb_seances + FROM w_sejours_seances + WHERE w_sejours_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_sejours_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_sejours_seances.nb_seances; + + WITH update_sejours as ( + SELECT + w_mouvements_sejour.no_sejour, + w_mouvements_sejour.date + FROM w_mouvements_sejour + JOIN activite[PX].p_sejours ON w_mouvements_sejour.no_sejour = p_sejours.no_sejour AND w_mouvements_sejour.date = p_sejours.date_entree AND p_sejours.type_sejour = '5' + WHERE 1=1 + AND nb_seances = 0 + AND w_mouvements_sejour.no_sejour NOT IN (SELECT no_sejour FROM w_mouvements_sejour WHERE nb_seances > 0 ) + ) + UPDATE w_mouvements_sejour + SET nb_seances = 1 + FROM update_sejours + WHERE 1=1 + AND w_mouvements_sejour.no_sejour = update_sejours.no_sejour + AND w_mouvements_sejour.date = update_sejours.date; + + -- Génération + DELETE FROM w_mouvements_sejour + WHERE + nb_entrees_directes = 0 AND + nb_sorties_directes = 0 AND + est_jour_hospitalisation <> '1' AND + nb_ambulatoires = 0 AND + nb_externes = 0 AND + nb_urgences = 0 AND + nb_seances = 0 AND + nb_entrees_mutation_service = 0 AND + nb_sorties_mutation_service = 0 AND + nb_entrees_mutation_etage = 0 AND + nb_sorties_mutation_etage = 0 AND + nb_entrees_mutation_activite = 0 AND + nb_sorties_mutation_activite = 0 AND + nb_entrees_mutation_unite_medicale = 0 AND + nb_sorties_mutation_unite_medicale = 0 AND + nb_jours_js_inclus = 0 AND + nb_jours_js_non_inclus = 0 AND + est_chambre_particuliere <> '1' AND + nb_chambres_particulieres = 0 AND + nb_bebes = 0; + + + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_5'); + + INSERT INTO activite[PX].p_mouvements_sejour( + sejour_id, no_sejour, date, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, + nb_bebes,est_mouvement_previsionnel, jour_semaine, is_weekend) + SELECT sejour_id, no_sejour, date,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, + nb_bebes,est_mouvement_previsionnel, jour_semaine, is_weekend + FROM w_mouvements_sejour + ORDER BY no_sejour, sequence; + + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_5'); + + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie + AND (lieu_sortie_id IS DISTINCT FROM p_mouvements_sejour.lieu_id); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie AND p_mouvements_sejour.nb_sorties_directes = 1 + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL); + + + + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + WHERE type_sejour <> '5' AND + type_sejour <> '1' AND + no_sejour IN ( + SELECT no_sejour + FROM activite[PX].p_mouvements_sejour + WHERE nb_seances > 0); + + + UPDATE activite[PX].p_mouvements_sejour + SET nb_externes = 0, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + ( + nb_externes <> 0 OR + nb_ambulatoires <> 0 + ) + + + + + ]]> + + + + + + + 12 AND + substr(trim(no_sejour_administratif),length(trim(no_sejour_administratif))-7,8) = to_char(date_entree,'YYYYMMDD') + ; + + UPDATE pmsi.p_rss + SET no_sejour_administratif = trim(substr(trim(no_sejour_administratif),1,length(trim(no_sejour_administratif))-8)) + WHERE length(trim(no_sejour_administratif)) > 12 AND + substr(trim(no_sejour_administratif),length(trim(no_sejour_administratif))-7,8) = '00000000' + ; + + -- CAS des sejours pmsi avec 8 caracteres alors qu'ils sont à 7 dans activite + UPDATE pmsi.p_rss + SET no_sejour_administratif = trim(substr(no_sejour_administratif,1,2) || substr(no_sejour_administratif,4)) + FROM activite[PX].p_sejours + WHERE length(trim(no_sejour_administratif)) = 8 AND + length(no_sejour) = 7 AND + substr(no_sejour_administratif,3,1) = '0' AND + trim(substr(no_sejour_administratif,1,2) || substr(no_sejour_administratif,4)) = no_sejour AND + ( + p_rss.date_entree BETWEEN p_sejours.date_entree AND p_sejours.date_sortie OR + p_rss.date_sortie BETWEEN p_sejours.date_entree AND p_sejours.date_sortie + ) + ; + + -- Séjours bébés préfixés par 1,2,3 + UPDATE pmsi.p_rss + SET no_sejour_administratif = trim(substr(no_sejour_administratif,2)) + FROM activite[PX].p_sejours + WHERE substr(no_sejour_administratif,1,1) IN ('1','2','3') AND + p_rss.date_naissance BETWEEN p_rss.date_entree AND p_rss.date_sortie AND + trim(substr(no_sejour_administratif,2)) = no_sejour AND + ( + p_rss.date_entree BETWEEN p_sejours.date_entree AND p_sejours.date_sortie OR + p_rss.date_sortie BETWEEN p_sejours.date_entree AND p_sejours.date_sortie + ) + ; + UPDATE pmsi.p_rss + SET no_sejour_administratif = trim(substr(no_sejour_administratif,2,2)||substr(no_sejour_administratif,5)) + FROM activite[PX].p_sejours + WHERE substr(no_sejour_administratif,1,1) IN ('1','2','3') AND + substr(no_sejour_administratif,4,1) = '0' AND + length(trim(no_sejour_administratif)) = 9 AND + length(no_sejour) = 7 AND + p_rss.date_naissance BETWEEN p_rss.date_entree AND p_rss.date_sortie AND + trim(substr(no_sejour_administratif,2,2)||substr(no_sejour_administratif,5)) = no_sejour AND + ( + p_rss.date_entree BETWEEN p_sejours.date_entree AND p_sejours.date_sortie OR + p_rss.date_sortie BETWEEN p_sejours.date_entree AND p_sejours.date_sortie + ) + ; + + -- S'il en reste (pb de dates pmsi ou activité discordantes) + UPDATE pmsi.p_rss + SET no_sejour_administratif = trim(substr(no_sejour_administratif,1,2) || substr(no_sejour_administratif,4)) + FROM activite[PX].p_sejours + JOIN activite[PX].p_patients ON p_sejours.no_patient = p_patients.no_patient + WHERE length(trim(no_sejour_administratif)) = 8 AND + length(no_sejour) = 7 AND + substr(no_sejour_administratif,3,1) = '0' AND + trim(substr(no_sejour_administratif,1,2) || substr(no_sejour_administratif,4)) = no_sejour AND + p_rss.date_naissance = p_patients.date_naissance AND + trim(no_sejour_administratif) not in (select no_sejour from activite[PX].p_sejours) + ; + + + + ANALYSE pmsi.p_rss + ; + + ]]> + + + + + + + + + + + + + + + + + 0; + + + + DROP TABLE IF EXISTS w_DOS2_fictif_hon; + CREATE TEMP TABLE w_DOS2_fictif_hon AS + SELECT ANN_LHO AS ANN_DOS2, COD_LHO AS COD_DOS2, IND_LHO AS IND_DOS2, MAX(DAT_REG) AS DAT_REG, + 0::numeric AS SR1_DOS2, + 0::numeric AS SR2_DOS2, + 0::numeric AS SR3_DOS2, + SUM(CASE WHEN CAI_REG = CP1_DOS2_S THEN MON_REG3 ELSE 0 END) AS HR1_DOS2, + SUM(CASE WHEN CAI_REG = CA2_DOS2_S THEN MON_REG3 ELSE 0 END) AS HR2_DOS2, + SUM(CASE WHEN CAI_REG IS DISTINCT FROM CP1_DOS2_S AND CAI_REG IS DISTINCT FROM CA2_DOS2_S THEN MON_REG3 ELSE 0 END) AS HR3_DOS2 + FROM prod_sigems.LIG_HONOR + JOIN w_REG3 ON NUM_LHO = LHO_REG3 + LEFT JOIN w_DOS2_caisse ON ANN_LHO = ANN_DOS2_S AND COD_LHO = COD_DOS2_S + LEFT JOIN prod_sigems.DOS2 ON ANN_LHO = ANN_DOS2 AND COD_LHO = COD_DOS2 AND IND_LHO = IND_DOS2 + WHERE ANN_DOS2 IS NULL + GROUP BY 1,2,3 + HAVING SUM(MON_REG3) <> 0; + + + INSERT INTO prod_sigems.DOS2( + ANN_DOS2, + COD_DOS2, + IND_DOS2, + ETA_DOS2, + DEN_DOS2, + DSO_DOS2, + HEU_DOS2, + RIS_DOS2, + JEX_DOS2, + CFA_DOS2, + COP_DOS2, + DFA_DOS2, + NDK_DOS2, + DDK_DOS2, + NB1_DOS2, + DB1_DOS2, + NB2_DOS2, + DB2_DOS2, + SJ1_DOS2, + HO1_DOS2, + SJ2_DOS2, + HO2_DOS2, + SJ3_DOS2, + HO3_DOS2, + SR1_DOS2, + HR1_DOS2, + SR2_DOS2, + HR2_DOS2, + SR3_DOS2, + HR3_DOS2, + CP1_DOS2, + CA1_DOS2, + CA2_DOS2, + LOT_DOS2, + REG_DOS2) + SELECT + ANN_DOS2, + COD_DOS2, + IND_DOS2, + '9', + DEN_DOS, + DSO_DOS, + HEU_DOS, + '' AS RIS_DOS2, + 0 AS JEX_DOS2, + '' AS CFA_DOS2, + '' AS COP_DOS2, + MIN(DAT_REG) AS DFA_DOS2, + '' AS NDK_DOS2, + NULL::date AS DDK_DOS2, + 0 AS NB1_DOS2, + NULL::date AS DB1_DOS2, + 0 AS NB2_DOS2, + NULL::date AS DB2_DOS2, + 0 AS SJ1_DOS2, + 0 AS HO1_DOS2, + 0 AS SJ2_DOS2, + 0 AS HO2_DOS2, + 0 AS SJ3_DOS2, + 0 AS HO3_DOS2, + SUM(SR1_DOS2) AS SR1_DOS2, + SUM(HR1_DOS2) AS HR1_DOS2, + SUM(SR2_DOS2) AS SR2_DOS2, + SUM(HR2_DOS2) AS HR2_DOS2, + SUM(SR3_DOS2) AS SR3_DOS2, + SUM(HR3_DOS2) AS HR3_DOS2, + CP1_DOS2_S AS CP1_DOS2, + CA1_DOS2_S AS CA1_DOS2, + CA2_DOS2_S AS CA2_DOS2, + '' AS LOT_DOS2, + '' AS REG_DOS2 + FROM + (SELECT * FROM w_DOS2_fictif_cli + UNION + SELECt * FROM w_DOS2_fictif_hon + ) subview + JOIN prod_sigems.DOSSIER ON ANN_DOS2 = ANN_DOS AND COD_DOS2 = COD_DOS + JOIN w_DOS2_caisse ON ANN_DOS2 = ANN_DOS2_S AND COD_DOS2 = COD_DOS2_S + GROUP BY ANN_DOS2, + COD_DOS2, + IND_DOS2, + DEN_DOS, + DSO_DOS, + HEU_DOS, + CP1_DOS2_S, + CA1_DOS2_S, + CA2_DOS2_S; + + ]]> + + + + 0 AND substr(t_ghm.code,1,2) <> '90' THEN substr(t_ghm.code,1,2) ELSE '' END + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation on service_facturation_id = t_services_facturation.oid + JOIN base.t_ghm ON ghm_id = t_ghm.oid + WHERE no_sejour = no_sejour_SELECT AND + ( + w_DOSSIER_SELECT.est_budget_global IS DISTINCT FROM p_sejours.est_budget_global OR + w_DOSSIER_SELECT.type_t2a IS DISTINCT FROM t_services_facturation.type_t2a OR + w_DOSSIER_SELECT.avec_facturation_intermediaire IS DISTINCT FROM t_services_facturation.avec_facturation_intermediaire + ); + + -- Préparation lignes clinique (pour budget global SSR) + + DROP TABLE IF EXISTS w_ANALYG; + CREATE TEMP TABLE w_ANALYG AS + SELECT PRD_ANA, + CASE WHEN DMT_ANA NOT LIKE '@%' THEN DMT_ANA ELSE '***' END AS DMT_ANA, + CASE WHEN DMT_ANA LIKE '@%' THEN substr(DMT_ANA,2) ELSE '' END AS CMD_ANA, + MDT_ANA, + SER_ANA, + MAX(CPT_ANA) AS CPT_ANA + FROM prod_sigems.ANALYG + WHERE CPT_ANA <> '' + GROUP BY 1,2,3,4,5 + ORDER BY 1,2,3,4; + + CREATE INDEX w_ANALYG_i1 + ON w_ANALYG + USING btree + (PRD_ANA); + + DROP TABLE IF EXISTS w_LIG_CLINI; + CREATE TEMP TABLE w_LIG_CLINI AS + SELECT + LIG_CLINI.*, + ''::text AS CODE_UCD, + 0::bigint AS ucd_id, + ''::text AS CODE_LPP, + 0::bigint AS lpp_id, + CASE WHEN type_t2a = '2' AND est_budget_global = '1' THEN '1' ELSE '0' END AS BG_SSR, + CASE WHEN TX1_LCL <> 0 AND ML1_LCL = 0 AND type_t2a = '2' AND est_budget_global = '1' THEN TAR_LCL - ML2_LCL - ML3_LCL ELSE 0 END AS ML1_LCL_BG, + ANN_LCL || to_char(COD_LCL,'FM900000') AS SEJ_DOS, + ANN_LCL || to_char(COD_LCL,'FM900000') || '.' || to_char(CASE WHEN IND_LCL <> 0 THEN IND_LCL ELSE COALESCE(IND_DOS2_ETA2, IND_LCL) END,'FM9999900') AS no_facture, + CMD_DOS, + COALESCE(MDT_REEL,MDT_DOS) AS MDT_LCL, + COALESCE(ACT_PRC,PRO_LCL) AS ACT_LCL, + COALESCE(w_ANALYG_SER.CPT_ANA,w_ANALYG.CPT_ANA, AFA_PRC,'') AS CPT_ANA, + PRO_LCL || '|' || + COALESCE(ACT_PRC,PRO_LCL) || + COALESCE(w_ANALYG_SER.CPT_ANA,w_ANALYG.CPT_ANA, AFA_PRC,'') AS key, + CASE WHEN CASE WHEN IND_LCL <> 0 THEN IND_LCL ELSE COALESCE(IND_DOS2_ETA2, IND_LCL) END = 0 THEN '1' ELSE '0' END AS non_facturee + FROM prod_sigems.LIG_CLINI + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LCL = ANN_SELECT AND COD_LCL = COD_SELECT + JOIN prod_sigems.DOSSIER ON DOSSIER.ANN_DOS = ANN_LCL AND DOSSIER.COD_DOS = COD_LCL + LEFT JOIN prod_sigems.DOSSIER_MDT ON DOSSIER.ANN_DOS = DOSSIER_MDT.ANN_DOS AND DOSSIER.COD_DOS = DOSSIER_MDT.COD_DOS + LEFT JOIN w_DOS2_ETA2 ON ANN_LCL = ANN_DOS2 AND COD_LCL = COD_DOS2 + LEFT JOIN prod_sigems.PROD_CLINI ON PRO_LCL = COD_PRC + LEFT JOIN w_ANALYG ON PRO_LCL = w_ANALYG.PRD_ANA AND w_ANALYG.DMT_ANA = '' AND w_ANALYG.MDT_ANA = '' AND w_ANALYG.SER_ANA = '' + LEFT JOIN w_ANALYG w_ANALYG_SER ON PRO_LCL = w_ANALYG_SER.PRD_ANA AND w_ANALYG_SER.DMT_ANA = '' AND w_ANALYG_SER.MDT_ANA = '' AND w_ANALYG_SER.SER_ANA = SER_LCL + WHERE + PRO_LCL <> 'ECAC' AND + PRO_LCL <> 'GMOY' AND + SER_LCL <> '*CDL'; + + UPDATE w_LIG_CLINI + SET MDT_LCL = '04' + WHERE MDT_LCL = '23'; + + ANALYSE w_LIG_CLINI; + + UPDATE w_LIG_CLINI + SET CODE_UCD = UCD_LCL_HON.CODE_UCD, ucd_id = t_ucd.oid + FROM prod_sigems.UCD_LCL_HON + JOIN base.t_ucd ON UCD_LCL_HON.CODE_UCD = t_ucd.code + WHERE NUM_LIGNE = NUM_LCL AND + UCD_LCL_HON.TYP = 2 + ; + + UPDATE w_LIG_CLINI + SET CODE_LPP = LCL_BIS.COD_LPP, lpp_id = t_lpp.oid + FROM prod_sigems.LCL_BIS + JOIN base.t_lpp ON LCL_BIS.COD_LPP = t_lpp.code + WHERE NUM_LCL = NUM + ; + + CREATE INDEX w_LIG_CLINI_i1 + ON w_LIG_CLINI + USING btree + (COD_LCL); + + CREATE INDEX w_LIG_CLINI_i2 + ON w_LIG_CLINI + USING btree + (NUM_LCL); + + CREATE INDEX w_LIG_CLINI_i3 + ON w_LIG_CLINI + USING btree + (PRO_LCL); + + CREATE INDEX w_LIG_CLINI_i4 + ON w_LIG_CLINI + USING btree + (key); + + CREATE INDEX w_LIG_CLINI_i5 + ON w_LIG_CLINI + USING btree + (no_facture); + + CREATE INDEX w_LIG_CLINI_i6 + ON w_LIG_CLINI + USING btree + (SEJ_DOS); + + + + + UPDATE w_LIG_CLINI + SET CPT_ANA = w_ANALYG.CPT_ANA, + key = PRO_LCL || '|' || + ACT_LCL || '|' || + w_ANALYG.CPT_ANA + FROM w_ANALYG + WHERE PRO_LCL = PRD_ANA AND SER_ANA = '' AND DMT_ANA = DMT_LCL AND MDT_ANA = '' AND + w_LIG_CLINI.CPT_ANA IS DISTINCT FROM w_ANALYG.CPT_ANA; + + UPDATE w_LIG_CLINI + SET CPT_ANA = w_ANALYG.CPT_ANA, + key = PRO_LCL || '|' || + ACT_LCL || '|' || + w_ANALYG.CPT_ANA + FROM w_ANALYG + WHERE PRO_LCL = PRD_ANA AND SER_ANA = '' AND DMT_ANA = '' AND MDT_ANA = MDT_LCL AND + w_LIG_CLINI.CPT_ANA IS DISTINCT FROM w_ANALYG.CPT_ANA; + + + UPDATE w_LIG_CLINI + SET CPT_ANA = w_ANALYG.CPT_ANA, + key = PRO_LCL || '|' || + ACT_LCL || '|' || + w_ANALYG.CPT_ANA + FROM w_ANALYG + WHERE PRO_LCL = PRD_ANA AND SER_ANA = '' AND DMT_ANA = DMT_LCL AND MDT_ANA = MDT_LCL AND + w_LIG_CLINI.CPT_ANA IS DISTINCT FROM w_ANALYG.CPT_ANA; + + + UPDATE w_LIG_CLINI + SET CPT_ANA = w_ANALYG.CPT_ANA, + key = PRO_LCL || '|' || + ACT_LCL || '|' || + w_ANALYG.CPT_ANA + FROM w_ANALYG + WHERE PRO_LCL = PRD_ANA AND SER_ANA = SER_LCL AND DMT_ANA = '' AND MDT_ANA = '' AND + w_LIG_CLINI.CPT_ANA IS DISTINCT FROM w_ANALYG.CPT_ANA; + + + UPDATE w_LIG_CLINI + SET CPT_ANA = w_ANALYG.CPT_ANA, + key = PRO_LCL || '|' || + ACT_LCL || '|' || + w_ANALYG.CPT_ANA + FROM w_ANALYG + WHERE PRO_LCL = PRD_ANA AND SER_ANA = SER_LCL AND DMT_ANA = DMT_LCL AND MDT_ANA = '' AND + w_LIG_CLINI.CPT_ANA IS DISTINCT FROM w_ANALYG.CPT_ANA; + + UPDATE w_LIG_CLINI + SET CPT_ANA = w_ANALYG.CPT_ANA, + key = PRO_LCL || '|' || + ACT_LCL || '|' || + w_ANALYG.CPT_ANA + FROM w_ANALYG + WHERE PRO_LCL = PRD_ANA AND SER_ANA = SER_LCL AND DMT_ANA = '' AND MDT_ANA = MDT_LCL AND + w_LIG_CLINI.CPT_ANA IS DISTINCT FROM w_ANALYG.CPT_ANA; + + UPDATE w_LIG_CLINI + SET CPT_ANA = w_ANALYG.CPT_ANA, + key = PRO_LCL || '|' || + ACT_LCL || '|' || + w_ANALYG.CPT_ANA + FROM w_ANALYG + WHERE PRO_LCL = PRD_ANA AND SER_ANA = SER_LCL AND DMT_ANA = DMT_LCL AND MDT_ANA = MDT_LCL AND + w_LIG_CLINI.CPT_ANA IS DISTINCT FROM w_ANALYG.CPT_ANA; + + UPDATE w_LIG_CLINI + SET CPT_ANA = w_ANALYG.CPT_ANA, + key = PRO_LCL || '|' || + ACT_LCL || '|' || + w_ANALYG.CPT_ANA + FROM w_ANALYG + WHERE PRO_LCL = PRD_ANA AND CMD_ANA = CMD_DOS AND CMD_ANA <> '' AND MDT_ANA = '' AND SER_ANA = '' AND + w_LIG_CLINI.CPT_ANA IS DISTINCT FROM w_ANALYG.CPT_ANA; + + + DROP TABLE IF EXISTS w_factures_last; + CREATE TEMP TABLE w_factures_last AS + SELECT no_sejour, + MAX(no_facture) AS no_facture, + MAX(CASE WHEN code_facture <> '1' THEN no_facture ELSE NULL END) AS no_facture_nf + FROM activite[PX].p_factures + GROUP BY 1; + + UPDATE w_LIG_CLINI + SET no_facture = CASE WHEN PRO_LCL <> 'ACPT' THEN COALESCE(w_factures_last.no_facture_nf,w_factures_last.no_facture) ELSE w_factures_last.no_facture END + FROM w_factures_last + WHERE w_LIG_CLINI.SEJ_DOS = w_factures_last.no_sejour AND + w_LIG_CLINI.no_facture NOT IN (SELECT no_facture FROM activite[PX].p_factures); + + + DROP TABLE IF EXISTS w_LIG_CLINI_keys; + CREATE TEMP TABLE w_LIG_CLINI_keys AS + SELECT key, + PRO_LCL, + ACT_LCL, + CPT_ANA, + 0::bigint AS rubrique_facturation_id, + 0::bigint AS rubrique_comptabilisation_id, + 0::bigint AS prestation_id, + 0::bigint AS compte_produit_id + FROM w_LIG_CLINI + GROUP BY 1,2,3,4; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT trim(PRO_LCL), trim(PRO_LCL), trim(PRO_LCL), trim(PRO_LCL) + FROM w_LIG_CLINI_keys + WHERE trim(PRO_LCL) <> '' AND + trim(PRO_LCL) NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + GROUP BY trim(PRO_LCL) + ORDER BY trim(PRO_LCL); + + UPDATE activite.t_prestations SET + code_original = ACT_LCL + FROM w_LIG_CLINI_keys + where t_prestations.code_original IS DISTINCT FROM ACT_LCL + AND t_prestations.code = ACT_LCL; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT ACT_LCL, ACT_LCL, ACT_LCL, ACT_LCL + FROM w_LIG_CLINI_keys + WHERE ACT_LCL <> '' AND + ACT_LCL NOT IN (SELECT code_original FROM activite.t_prestations WHERE code_original IS NOT NULL) + GROUP BY ACT_LCL + ORDER BY ACT_LCL; + + UPDATE activite.t_prestations SET + code = ACT_LCL, + texte = ACT_LCL, + texte_court = ACT_LCL + FROM w_LIG_CLINI_keys + WHERE code_original = ACT_LCL AND + ( + code IS DISTINCT FROM ACT_LCL OR + texte IS DISTINCT FROM ACT_LCL OR + texte_court IS DISTINCT FROM ACT_LCL + ) + ; + + UPDATE w_LIG_CLINI_keys SET prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE ACT_LCL = t_prestations.code_original; + + UPDATE w_LIG_CLINI_keys SET + rubrique_facturation_id = t_rubriques_facturation.oid, + rubrique_comptabilisation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + WHERE PRO_LCL = t_rubriques_facturation.code_original; + + + UPDATE w_LIG_CLINI_keys SET compte_produit_id = t_compte.oid + FROM activite[PX].t_compte + WHERE CPT_ANA = t_compte.code; + + CREATE INDEX w_LIG_CLINI_keys_i1 + ON w_LIG_CLINI_keys + USING btree + (key); + + + -- préparation + DROP TABLE IF EXISTS w_DOS2_TP; + CREATE TEMP TABLE w_DOS2_TP AS + SELECT ANN_DOS2 AS ANN_DOS2_TP, + COD_DOS2 AS COD_DOS2_TP, + base.cti_array_accum(DISTINCT CASE WHEN CP1_DOS2 <> '' THEN CP1_DOS2 ELSE 'ABCDEFG1' END) AS CP1_DOS2_array, + base.cti_array_accum(DISTINCT CASE WHEN CA2_DOS2 <> '' THEN CA2_DOS2 ELSE 'ABCDEFG1' END) AS CA2_DOS2_array + FROM prod_sigems.DOS2 + WHERE ANN_DOS2 <> '' + GROUP BY 1,2 + HAVING + ( + count(DISTINCT CASE WHEN CP1_DOS2 <> '' THEN CP1_DOS2 ELSE NULL END) > 1 OR + count(DISTINCT CASE WHEN CA2_DOS2 <> '' THEN CA2_DOS2 ELSE NULL END) > 1 + ) + ; + + + DROP TABLE IF EXISTS w_LIG_CLINI_mrx; + CREATE TEMP TABLE w_LIG_CLINI_mrx AS + SELECT + ANN_LCL, + COD_LCL, + IND_LCL, + NUM_LCL, + DAT_REG, + CAI_REG, + MONT + TVA AS MNT_REG, + CASE + WHEN CAI_REG = '99999999' THEN '3' + WHEN CAI_REG = CP1_DOS2 AND (MR1_LCL != 0 OR HR1_DOS2 != 0) THEN '1' + WHEN CAI_REG = CA2_DOS2 THEN '2' + WHEN CAI_REG = ANY(CP1_DOS2_array) AND CP1_DOS2_array IS NOT NULL THEN '1' + WHEN CAI_REG = ANY(CA2_DOS2_array) AND CA2_DOS2_array IS NOT NULL THEN '2' + WHEN CAI_REG = CP1_DOS2 THEN '1' + ELSE '3' END AS TTP_LCL, + CASE WHEN CAI_REG <> '99999999' AND (CAI_REG = CP1_DOS2 OR CAI_REG = ANY(CP1_DOS2_array)) AND (MR1_LCL != 0 OR HR1_DOS2 != 0) THEN DAT_REG ELSE '00010101' END AS DR1_LCL, + CASE WHEN CAI_REG <> '99999999' AND (CAI_REG = CA2_DOS2 OR CAI_REG = ANY(CA2_DOS2_array)) AND (CAI_REG <> CP1_DOS2 OR MR1_LCL = 0) THEN DAT_REG ELSE '00010101' END AS DR2_LCL, + CASE WHEN CAI_REG = '99999999' OR (CAI_REG IS DISTINCT FROM CP1_DOS2 AND CAI_REG IS DISTINCT FROM CA2_DOS2 AND (CAI_REG <> ALL(CP1_DOS2_array) OR CP1_DOS2_array IS NULL) AND (CAI_REG <> ALL(CA2_DOS2_array) OR CA2_DOS2_array IS NULL)) THEN DAT_REG ELSE '00010101' END AS DR3_LCL, + CASE WHEN CAI_REG <> '99999999' AND (CAI_REG = CP1_DOS2 OR CAI_REG = ANY(CP1_DOS2_array)) AND (MR1_LCL != 0 OR HR1_DOS2 != 0) THEN MONT + TVA ELSE 0 END AS MR1_LCL, + CASE WHEN CAI_REG <> '99999999' AND (CAI_REG = CA2_DOS2 OR CAI_REG = ANY(CA2_DOS2_array)) AND (CAI_REG <> CP1_DOS2 OR MR1_LCL = 0) THEN MONT + TVA ELSE 0 END AS MR2_LCL, + CASE WHEN CAI_REG = '99999999' OR (CAI_REG IS DISTINCT FROM CP1_DOS2 AND CAI_REG IS DISTINCT FROM CA2_DOS2 AND (CAI_REG <> ALL(CP1_DOS2_array) OR CP1_DOS2_array IS NULL) AND (CAI_REG <> ALL(CA2_DOS2_array) OR CA2_DOS2_array IS NULL)) THEN MONT + TVA ELSE 0 END AS MR3_LCL + FROM prod_sigems.LIG_CLINI + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LCL = ANN_SELECT AND COD_LCL = COD_SELECT + JOIN prod_sigems.DOS2 ON ANN_LCL = ANN_DOS2 AND COD_LCL = COD_DOS2 AND IND_LCL = IND_DOS2 AND ETA_DOS2 >= 1 + LEFT JOIN w_DOS2_TP ON ANN_LCL = ANN_DOS2_TP AND COD_LCL = COD_DOS2_TP + JOIN prod_sigems.REG4 ON NUM_LCL = NUM_CLI + JOIN prod_sigems.REG ON NUM_REG4 = SER_REG; + + ANALYSE w_LIG_CLINI_mrx + ; + + -- Si pas de ventilation fine, ventiler selon TP1 + UPDATE w_LIG_CLINI_mrx SET + TTP_LCL = '1', + MR1_LCL = MNT_REG + FROM prod_sigems.DOS2 + WHERE ANN_LCL = ANN_DOS2 AND + COD_LCL = COD_DOS2 AND + IND_LCL = IND_DOS2 AND + MR1_LCL = 0 AND MR2_LCL = 0 AND MR3_LCL = 0 AND + CAI_REG = CP1_DOS2 + ; + + -- Ajuster montants selon tiers + UPDATE w_lig_clini_mrx SET + MR1_LCL = CASE WHEN TTP_LCL = '1' THEN MNT_REG ELSE 0 END, + MR2_LCL = CASE WHEN TTP_LCL = '2' THEN MNT_REG ELSE 0 END, + MR3_LCL = CASE WHEN TTP_LCL = '3' THEN MNT_REG ELSE 0 END + WHERE + MR1_LCL IS DISTINCT FROM CASE WHEN TTP_LCL = '1' THEN MNT_REG ELSE 0 END OR + MR2_LCL IS DISTINCT FROM CASE WHEN TTP_LCL = '2' THEN MNT_REG ELSE 0 END OR + MR3_LCL IS DISTINCT FROM CASE WHEN TTP_LCL = '3' THEN MNT_REG ELSE 0 END + ; + + UPDATE w_LIG_CLINI_mrx SET + DR1_LCL = '00010101', + MR1_LCL = 0 + WHERE TTP_LCL <> '1' AND + ( + DR1_LCL <> '00010101' OR + MR1_LCL <> 0 + ) + ; + UPDATE w_LIG_CLINI_mrx SET + DR2_LCL = '00010101', + MR2_LCL = 0 + WHERE TTP_LCL <> '2' AND + ( + DR2_LCL <> '00010101' OR + MR2_LCL <> 0 + ) + ; + UPDATE w_LIG_CLINI_mrx SET + DR3_LCL = '00010101', + MR3_LCL = 0 + WHERE TTP_LCL <> '3' AND + ( + DR3_LCL <> '00010101' OR + MR3_LCL <> 0 + ) + ; + + CREATE INDEX w_LIG_CLINI_mrx_i1 + ON w_LIG_CLINI_mrx + USING btree + (NUM_LCL); + + CREATE INDEX w_LIG_CLINI_mrx_i2 + ON w_LIG_CLINI_mrx + USING btree + (COD_LCL); + + + DROP TABLE IF EXISTS w_LIG_CLINI_tmrx; + CREATE TEMP TABLE w_LIG_CLINI_tmrx AS + SELECT ANN_LCL, + COD_LCL, + IND_LCL, + MAX(DR1_LCL) AS DR1_LCL, + MAX(DR2_LCL) AS DR2_LCL, + MAX(DR3_LCL) AS DR3_LCL, + SUM(MR1_LCL) AS MR1_LCL, + SUM(MR2_LCL) AS MR2_LCL, + SUM(MR3_LCL) AS MR3_LCL + FROM w_LIG_CLINI_mrx + GROUP BY 1,2,3; + + CREATE INDEX w_LIG_CLINI_tmrx_i1 + ON w_LIG_CLINI_tmrx + USING btree + (COD_LCL); + + DROP TABLE IF EXISTS w_LIG_HONOR_mrx; + CREATE TEMP TABLE w_LIG_HONOR_mrx AS + SELECT + ANN_LHO, + COD_LHO, + IND_LHO, + NUM_LHO, + DAT_REG, + CAI_REG, + MON_REG3 AS MNT_REG, + CASE + WHEN CAI_REG = '99999999' THEN '3' + WHEN CAI_REG = CP1_DOS2 AND (MR1_LHO != 0 OR HR1_DOS2 != 0) THEN '1' + WHEN CAI_REG = CA2_DOS2 THEN '2' + WHEN CAI_REG = ANY(CP1_DOS2_array) AND CP1_DOS2_array IS NOT NULL THEN '1' + WHEN CAI_REG = ANY(CA2_DOS2_array) AND CA2_DOS2_array IS NOT NULL THEN '2' + WHEN CAI_REG = CP1_DOS2 THEN '1' + ELSE '3' END AS TTP_LHO, + CASE WHEN CEX_LHO = 'ACOMPT' THEN '1'::text ELSE '0'::text END AS is_acompte, + CASE WHEN CAI_REG <> '99999999' AND (CAI_REG = CP1_DOS2 OR CAI_REG = ANY(CP1_DOS2_array)) AND (MR1_LHO != 0 OR HR1_DOS2 != 0) THEN DAT_REG ELSE '00010101' END AS DR1_LHO, + CASE WHEN CAI_REG <> '99999999' AND (CAI_REG = CA2_DOS2 OR CAI_REG = ANY(CA2_DOS2_array)) AND (CAI_REG <> CP1_DOS2 OR MR1_LHO = 0) THEN DAT_REG ELSE '00010101' END AS DR2_LHO, + CASE WHEN CAI_REG = '99999999' OR (CAI_REG IS DISTINCT FROM CP1_DOS2 AND CAI_REG IS DISTINCT FROM CA2_DOS2 AND (CAI_REG <> ALL(CP1_DOS2_array) OR CP1_DOS2_array IS NULL) AND (CAI_REG <> ALL(CA2_DOS2_array) OR CA2_DOS2_array IS NULL)) THEN DAT_REG ELSE '00010101' END AS DR3_LHO, + CASE WHEN CAI_REG <> '99999999' AND (CAI_REG = CP1_DOS2 OR CAI_REG = ANY(CP1_DOS2_array)) AND (MR1_LHO != 0 OR HR1_DOS2 != 0) THEN MON_REG3 ELSE 0 END AS MR1_LHO, + CASE WHEN CAI_REG <> '99999999' AND (CAI_REG = CA2_DOS2 OR CAI_REG = ANY(CA2_DOS2_array)) AND (CAI_REG <> CP1_DOS2 OR MR1_LHO = 0) THEN MON_REG3 ELSE 0 END AS MR2_LHO, + CASE WHEN CAI_REG = '99999999' OR (CAI_REG IS DISTINCT FROM CP1_DOS2 AND CAI_REG IS DISTINCT FROM CA2_DOS2 AND (CAI_REG <> ALL(CP1_DOS2_array) OR CP1_DOS2_array IS NULL) AND (CAI_REG <> ALL(CA2_DOS2_array) OR CA2_DOS2_array IS NULL)) THEN MON_REG3 ELSE 0 END AS MR3_LHO + FROM prod_sigems.LIG_HONOR + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LHO = ANN_SELECT AND COD_LHO = COD_SELECT + JOIN prod_sigems.DOS2 ON ANN_LHO = ANN_DOS2 AND COD_LHO = COD_DOS2 AND IND_LHO = IND_DOS2 AND ETA_DOS2 >= 1 + LEFT JOIN w_DOS2_TP ON ANN_LHO = ANN_DOS2_TP AND COD_LHO = COD_DOS2_TP + JOIN w_REG3 ON NUM_LHO = LHO_REG3; + + ANALYSE w_LIG_HONOR_mrx + ; + + -- Si pas de ventilation fine, ventiler selon TP1 + UPDATE w_LIG_HONOR_mrx SET + TTP_LHO = '1', + MR1_LHO = MNT_REG + FROM prod_sigems.DOS2 + WHERE ANN_LHO = ANN_DOS2 AND + COD_LHO = COD_DOS2 AND + IND_LHO = IND_DOS2 AND + MR1_LHO = 0 AND MR2_LHO = 0 AND MR3_LHO = 0 AND + CAI_REG = CP1_DOS2 + ; + + -- Ajuster montants selon tiers + UPDATE w_LIG_HONOR_mrx SET + MR1_LHO = CASE WHEN TTP_LHO = '1' THEN MNT_REG ELSE 0 END, + MR2_LHO = CASE WHEN TTP_LHO = '2' THEN MNT_REG ELSE 0 END, + MR3_LHO = CASE WHEN TTP_LHO = '3' THEN MNT_REG ELSE 0 END + WHERE + MR1_LHO IS DISTINCT FROM CASE WHEN TTP_LHO = '1' THEN MNT_REG ELSE 0 END OR + MR2_LHO IS DISTINCT FROM CASE WHEN TTP_LHO = '2' THEN MNT_REG ELSE 0 END OR + MR3_LHO IS DISTINCT FROM CASE WHEN TTP_LHO = '3' THEN MNT_REG ELSE 0 END + ; + + UPDATE w_LIG_HONOR_mrx SET + DR1_LHO = '00010101', + MR1_LHO = 0 + WHERE TTP_LHO <> '1' AND + ( + DR1_LHO <> '00010101' OR + MR1_LHO <> 0 + ) + ; + UPDATE w_LIG_HONOR_mrx SET + DR2_LHO = '00010101', + MR2_LHO = 0 + WHERE TTP_LHO <> '2' AND + ( + DR2_LHO <> '00010101' OR + MR2_LHO <> 0 + ) + ; + UPDATE w_LIG_HONOR_mrx SET + DR3_LHO = '00010101', + MR3_LHO = 0 + WHERE TTP_LHO <> '3' AND + ( + DR3_LHO <> '00010101' OR + MR3_LHO <> 0 + ) + ; + + CREATE INDEX w_LIG_HONOR_mrx_i1 + ON w_LIG_HONOR_mrx + USING btree + (NUM_LHO); + + CREATE INDEX w_LIG_HONOR_mrx_i2 + ON w_LIG_HONOR_mrx + USING btree + (COD_LHO); + + + + + DROP TABLE IF EXISTS w_LIG_HONOR_tmrx; + CREATE TEMP TABLE w_LIG_HONOR_tmrx AS + SELECT ANN_LHO, + COD_LHO, + IND_LHO, + MAX(DR1_LHO) AS DR1_LHO, + MAX(DR2_LHO) AS DR2_LHO, + MAX(DR3_LHO) AS DR3_LHO, + SUM(MR1_LHO) AS MR1_LHO, + SUM(MR2_LHO) AS MR2_LHO, + SUM(MR3_LHO) AS MR3_LHO + FROM w_LIG_HONOR_mrx + GROUP BY 1,2,3; + + CREATE INDEX w_LIG_HONOR_tmrx_i1 + ON w_LIG_HONOR_tmrx + USING btree + (COD_LHO); + + -- Factures 'normales' + DROP TABLE IF EXISTS w_factures; + CREATE TEMP TABLE w_factures AS + SELECT + nextval('activite[PX].s_factures'::regclass) AS oid, + p_sejours.oid AS sejour_id, + SEJ_DOS AS no_sejour, + ANN_DOS, + COD_DOS, + IND_DOS2, + SEJ_DOS || '.' || to_char(IND_DOS2,'FM9999900') AS no_facture, + CASE WHEN (SJ1_DOS2 < 0 OR HO1_DOS2 < 0 OR SJ2_DOS2 < 0 OR HO2_DOS2 < 0 OR SJ3_DOS2 < 0 OR HO3_DOS2 < 0) THEN SEJ_DOS || '.' || to_char(IND_DOS2,'FM9999900') ELSE SEJ_DOS || '.01' END AS no_facture_reference, + CASE WHEN (SJ1_DOS2 < 0 OR HO1_DOS2 < 0 OR SJ2_DOS2 < 0 OR HO2_DOS2 < 0 OR SJ3_DOS2 < 0 OR HO3_DOS2 < 0) THEN 0 ELSE 0 END AS facture_reference_id, + ''::text AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id, + DEN_DOS2 AS date_debut, + GREATEST(DSO_DOS2,DEN_DOS2) AS date_fin, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id, + p_sejours.code_cp_demandee AS code_cp_demandee, + CASE WHEN (SJ1_DOS2 < 0 OR HO1_DOS2 < 0 OR SJ2_DOS2 < 0 OR HO2_DOS2 < 0 OR SJ3_DOS2 < 0 OR HO3_DOS2 < 0) THEN '1' WHEN IND_DOS2 > 1 AND avec_facturation_intermediaire IS DISTINCT FROM '1' THEN '2' ELSE '0' END AS type_facture, + CASE WHEN (SJ1_DOS2 < 0 OR HO1_DOS2 < 0 OR SJ2_DOS2 < 0 OR HO2_DOS2 < 0 OR SJ3_DOS2 < 0 OR HO3_DOS2 < 0) THEN 1::numeric ELSE 0::numeric END AS nb_rejets, + + CASE WHEN ETA_DOS2 >= 3 THEN 1::numeric ELSE 0::numeric END AS code_facture, + CASE WHEN ETA_DOS2 >= 3 THEN COALESCE(DFA_DOS2, date(now())) ELSE '20991231' END AS date_facture, + CASE WHEN ETA_DOS2 >= 3 AND DFA_DOS2 IS NOT NULL THEN 1::numeric ELSE 0::numeric END AS code_vente, + CASE WHEN ETA_DOS2 >= 3 AND DFA_DOS2 IS NOT NULL THEN date_part('year', DFA_DOS2) * 100 + date_part('month', DFA_DOS2) ELSE 209912 END AS mois_vente, + CASE WHEN ETA_DOS2 >= 3 AND DFA_DOS2 IS NOT NULL THEN DFA_DOS2 ELSE '20991231' END AS date_vente, + ''::text AS code_cloture, + + CASE WHEN p_sejours.ghs_id > 0 THEN 'GHS' ELSE '' END AS particularite_t2a, + + COALESCE(t_tiers_payant_0.oid,0) AS tiers_payant_0_id, + COALESCE(t_tiers_payant_1.oid,0) AS tiers_payant_1_id, + COALESCE(t_tiers_payant_2.oid,0) AS tiers_payant_2_id, + 0::bigint AS tiers_payant_22_id, + + CASE WHEN ETA_DOS2 >= 3 THEN SJ1_DOS2 + SJ2_DOS2 + SJ3_DOS2 ELSE 0 END AS montant_facture_c, + CASE WHEN ETA_DOS2 >= 3 THEN HO1_DOS2 + HO2_DOS2 + HO3_DOS2 ELSE 0 END AS montant_facture_h, + CASE WHEN ETA_DOS2 >= 3 THEN SJ3_DOS2 ELSE 0 END AS montant_facture_0_c, + CASE WHEN ETA_DOS2 >= 3 THEN HO3_DOS2 ELSE 0 END AS montant_facture_0_h, + CASE WHEN ETA_DOS2 >= 3 THEN SJ1_DOS2 ELSE 0 END AS montant_facture_1_c, + CASE WHEN ETA_DOS2 >= 3 THEN HO1_DOS2 ELSE 0 END AS montant_facture_1_h, + CASE WHEN ETA_DOS2 >= 3 THEN SJ2_DOS2 ELSE 0 END AS montant_facture_2_c, + CASE WHEN ETA_DOS2 >= 3 THEN HO2_DOS2 ELSE 0 END AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + CASE WHEN ETA_DOS2 >= 3 THEN SJ1_DOS2 + SJ2_DOS2 + SJ3_DOS2 ELSE 0 END AS montant_comptabilise_c, + CASE WHEN ETA_DOS2 >= 3 THEN HO1_DOS2 + HO2_DOS2 + HO3_DOS2 ELSE 0 END AS montant_comptabilise_h, + CASE WHEN ETA_DOS2 >= 3 THEN SJ3_DOS2 ELSE 0 END AS montant_comptabilise_0_c, + CASE WHEN ETA_DOS2 >= 3 THEN HO3_DOS2 ELSE 0 END AS montant_comptabilise_0_h, + CASE WHEN ETA_DOS2 >= 3 THEN SJ1_DOS2 ELSE 0 END AS montant_comptabilise_1_c, + CASE WHEN ETA_DOS2 >= 3 THEN HO1_DOS2 ELSE 0 END AS montant_comptabilise_1_h, + CASE WHEN ETA_DOS2 >= 3 THEN SJ2_DOS2 ELSE 0 END AS montant_comptabilise_2_c, + CASE WHEN ETA_DOS2 >= 3 THEN HO2_DOS2 ELSE 0 END AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + COALESCE(MR1_LCL,0) + COALESCE(MR2_LCL,0) + COALESCE(MR3_LCL,0) AS montant_regle_c, + COALESCE(MR1_LHO,0) + COALESCE(MR2_LHO,0) + COALESCE(MR3_LHO,0) AS montant_regle_h, + COALESCE(MR3_LCL,0) AS montant_regle_0_c, + COALESCE(MR3_LHO,0) AS montant_regle_0_h, + COALESCE(MR1_LCL,0) AS montant_regle_1_c, + COALESCE(MR1_LHO,0) AS montant_regle_1_h, + COALESCE(MR2_LCL,0) AS montant_regle_2_c, + COALESCE(MR2_LHO,0) AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + '1'::text AS code_expedie_0, + CASE WHEN COALESCE(DB1_DOS2,'00010101')::date > '00010101'::date THEN '1' ELSE '0' END AS code_expedie_1, + CASE WHEN COALESCE(DB2_DOS2,'00010101')::date > '00010101'::date THEN '1' ELSE '0' END AS code_expedie_2, + 0::numeric AS code_expedie_22, + CASE WHEN COALESCE(DB1_DOS2,'00010101')::date > '00010101' THEN COALESCE(DB1_DOS2,'00010101') ELSE COALESCE(DB2_DOS2,'00010101') END AS date_expedition, + DFA_DOS2 AS date_expedition_0, + COALESCE(DB1_DOS2,'00010101') AS date_expedition_1, + COALESCE(DB2_DOS2,'00010101') AS date_expedition_2, + '00010101'::date AS date_expedition_22, + 0 AS no_bordereau_0, + NB1_DOS2 AS no_bordereau_1, + NB2_DOS2 AS no_bordereau_2, + 0::numeric AS no_bordereau_22, + + LEAST(GREATEST(DR1_LCL, DR2_LCL, DR3_LCL, DR1_LHO, DR2_LHO, DR3_LHO), '20991231') AS date_solde, + LEAST(GREATEST(DR1_LCL, DR2_LCL, DR3_LCL), '20991231') AS date_solde_c, + LEAST(GREATEST(DR1_LHO, DR2_LHO, DR3_LHO), '20991231') AS date_solde_h, + LEAST(DR3_LCL, '20991231') AS date_solde_0_c, + LEAST(DR3_LHO, '20991231') AS date_solde_0_h, + LEAST(DR1_LCL, '20991231') AS date_solde_1_c, + LEAST(DR1_LHO, '20991231') AS date_solde_1_h, + LEAST(DR2_LCL, '20991231') AS date_solde_2_c, + LEAST(DR2_LHO, '20991231') AS date_solde_2_h, + '20991231'::date AS date_solde_22_c, + '20991231'::date AS date_solde_22_h, + + + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + + '20991231'::date AS date_solde_reference, + '20991231'::date AS date_solde_reference_c, + '20991231'::date AS date_solde_reference_h, + '20991231'::date AS date_solde_reference_0_c, + '20991231'::date AS date_solde_reference_1_c, + '20991231'::date AS date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + '20991231'::date AS date_solde_reference_0_h, + '20991231'::date AS date_solde_reference_1_h, + '20991231'::date AS date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h, + + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + + + '20991231'::date AS date_encours, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_c + + FROM prod_sigems.DOS2 + JOIN w_DOSSIER ON ANN_DOS2 = ANN_DOS AND COD_DOS2 = COD_DOS + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_DOS2 = ANN_SELECT AND COD_DOS2 = COD_SELECT + JOIN activite[PX].p_sejours ON SEJ_DOS = p_sejours.code_original AND p_sejours.etat = '' + LEFT JOIN w_LIG_CLINI_tmrx ON ANN_DOS2 = ANN_LCL AND COD_DOS2 = COD_LCL AND IND_DOS2 = IND_LCL + LEFT JOIN w_LIG_HONOR_tmrx ON ANN_DOS2 = ANN_LHO AND COD_DOS2 = COD_LHO AND IND_DOS2 = IND_LHO + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_0 ON 'PATIENT' = t_tiers_payant_0.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_1 ON t_tiers_payant_1.type_tiers_payant = 1 AND DOS2.CP1_DOS2 = split_part(t_tiers_payant_1.code_original,'(1)',1) + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON t_tiers_payant_2.type_tiers_payant = 2 AND DOS2.CA2_DOS2 = split_part(t_tiers_payant_2.code_original,'(2)',1) + WHERE ETA_DOS2 >= 1; + + + -- Factures 'Budget global SSR' + DROP TABLE IF EXISTS w_DOS2_BG; + CREATE TEMP TABLE w_DOS2_BG AS + SELECT + ANN_LCL AS ANN_DOS2_BG, + COD_LCL AS COD_DOS2_BG, + IND_LCL AS IND_DOS2_BG, + SUM(ML1_LCL_BG) AS SJ1_DOS2_BG + FROM w_LIG_CLINI + WHERE ML1_LCL_BG <> 0 + GROUP BY 1,2,3; + + CREATE INDEX w_DOS2_BG_i1 + ON w_DOS2_BG + USING btree + (COD_DOS2_BG); + + INSERT INTO w_factures + SELECT + nextval('activite[PX].s_factures'::regclass) AS oid, + p_sejours.oid AS sejour_id, + SEJ_DOS AS no_sejour, + ANN_DOS, + COD_DOS, + IND_DOS2, + SEJ_DOS || '.' || to_char(IND_DOS2,'FM9999900') || '.BG' AS no_facture, + SEJ_DOS || '.' || to_char(IND_DOS2,'FM9999900') || '.BG' AS no_facture_reference, + 0 AS facture_reference_id, + ''::text AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id, + DEN_DOS2 AS date_debut, + GREATEST(DSO_DOS2,DEN_DOS2) AS date_fin, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id, + p_sejours.code_cp_demandee AS code_cp_demandee, + CASE WHEN (SJ1_DOS2 < 0 OR HO1_DOS2 < 0 OR SJ2_DOS2 < 0 OR HO2_DOS2 < 0 OR SJ3_DOS2 < 0 OR HO3_DOS2 < 0) THEN '1' WHEN IND_DOS2 > 1 AND avec_facturation_intermediaire IS DISTINCT FROM '1' THEN '2' ELSE '0' END AS type_facture, + CASE WHEN (SJ1_DOS2_BG < 0 OR SJ1_DOS2 < 0 OR HO1_DOS2 < 0 OR SJ2_DOS2 < 0 OR HO2_DOS2 < 0 OR SJ3_DOS2 < 0 OR HO3_DOS2 < 0) THEN 1::numeric ELSE 0::numeric END AS nb_rejets, + + CASE WHEN ETA_DOS2 >= 3 THEN 1::numeric ELSE 0::numeric END AS code_facture, + CASE WHEN ETA_DOS2 >= 3 THEN COALESCE(DFA_DOS2, date(now())) ELSE '20991231' END AS date_facture, + CASE WHEN ETA_DOS2 >= 3 AND DFA_DOS2 IS NOT NULL THEN 1::numeric ELSE 0::numeric END AS code_vente, + CASE WHEN ETA_DOS2 >= 3 AND DFA_DOS2 IS NOT NULL THEN date_part('year', DFA_DOS2) * 100 + date_part('month', DFA_DOS2) ELSE 209912 END AS mois_vente, + CASE WHEN ETA_DOS2 >= 3 AND DFA_DOS2 IS NOT NULL THEN DFA_DOS2 ELSE '20991231' END AS date_vente, + ''::text AS code_cloture, + + CASE WHEN p_sejours.ghs_id > 0 THEN 'GHS' ELSE '' END AS particularite_t2a, + + COALESCE(t_tiers_payant_0.oid,0) AS tiers_payant_0_id, + COALESCE(t_tiers_payant_1.oid,0) AS tiers_payant_1_id, + COALESCE(t_tiers_payant_2.oid,0) AS tiers_payant_2_id, + 0::bigint AS tiers_payant_22_id, + + CASE WHEN ETA_DOS2 >= 3 THEN SJ1_DOS2_BG ELSE 0 END AS montant_facture_c, + 0::numeric AS montant_facture_h, + 0::numeric AS montant_facture_0_c, + 0::numeric AS montant_facture_0_h, + CASE WHEN ETA_DOS2 >= 3 THEN SJ1_DOS2_BG ELSE 0 END AS montant_facture_1_c, + 0::numeric AS montant_facture_1_h, + 0::numeric AS montant_facture_2_c, + 0::numeric AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_comptabilise_c, + 0::numeric AS montant_comptabilise_h, + 0::numeric AS montant_comptabilise_0_c, + 0::numeric AS montant_comptabilise_0_h, + 0::numeric AS montant_comptabilise_1_c, + 0::numeric AS montant_comptabilise_1_h, + 0::numeric AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + COALESCE(MR1_LHO,0) AS montant_regle_1_h, + 0::numeric AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + '0'::text AS code_expedie_0, + CASE WHEN COALESCE(DB1_DOS2,'00010101')::date > '00010101'::date THEN '1' ELSE '0' END AS code_expedie_1, + '0' AS code_expedie_2, + 0::numeric AS code_expedie_22, + CASE WHEN COALESCE(DB1_DOS2,'00010101')::date > '00010101' THEN COALESCE(DB1_DOS2,'00010101') ELSE '00010101'::date END AS date_expedition, + '00010101'::date AS date_expedition_0, + COALESCE(DB1_DOS2,'00010101') AS date_expedition_1, + '00010101'::date AS date_expedition_2, + '00010101'::date AS date_expedition_22, + 0::numeric AS no_bordereau_0, + NB1_DOS2 AS no_bordereau_1, + 0::numeric AS no_bordereau_2, + 0::numeric AS no_bordereau_22, + + '20991231'::date AS date_solde, + '20991231'::date AS date_solde_c, + '20991231'::date AS date_solde_h, + '20991231'::date AS date_solde_0_c, + '20991231'::date AS date_solde_0_h, + '20991231'::date AS date_solde_1_c, + '20991231'::date AS date_solde_1_h, + '20991231'::date AS date_solde_2_c, + '20991231'::date AS date_solde_2_h, + '20991231'::date AS date_solde_22_c, + '20991231'::date AS date_solde_22_h, + + + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + + '20991231'::date AS date_solde_reference, + '20991231'::date AS date_solde_reference_c, + '20991231'::date AS date_solde_reference_h, + '20991231'::date AS date_solde_reference_0_c, + '20991231'::date AS date_solde_reference_1_c, + '20991231'::date AS date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + '20991231'::date AS date_solde_reference_0_h, + '20991231'::date AS date_solde_reference_1_h, + '20991231'::date AS date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h, + + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + + + '20991231'::date AS date_encours, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + SJ1_DOS2_BG AS montant_comptabilise_budget_global_c + + FROM prod_sigems.DOS2 + JOIN w_DOSSIER ON ANN_DOS2 = ANN_DOS AND COD_DOS2 = COD_DOS + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_DOS2 = ANN_SELECT AND COD_DOS2 = COD_SELECT + JOIN activite[PX].p_sejours ON SEJ_DOS = p_sejours.code_original AND p_sejours.etat = '' + JOIN w_DOS2_BG ON ANN_DOS2 = ANN_DOS2_BG AND COD_DOS2 = COD_DOS2_BG AND IND_DOS2 = IND_DOS2_BG + LEFT JOIN w_LIG_CLINI_tmrx ON ANN_DOS2 = ANN_LCL AND COD_DOS2 = COD_LCL AND IND_DOS2 = IND_LCL + LEFT JOIN w_LIG_HONOR_tmrx ON ANN_DOS2 = ANN_LHO AND COD_DOS2 = COD_LHO AND IND_DOS2 = IND_LHO + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_0 ON 'PATIENT' = t_tiers_payant_0.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_1 ON t_tiers_payant_1.type_tiers_payant = 1 AND DOS2.CP1_DOS2 = split_part(t_tiers_payant_1.code_original,'(1)',1) + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON t_tiers_payant_2.type_tiers_payant = 2 AND DOS2.CA2_DOS2 = split_part(t_tiers_payant_2.code_original,'(2)',1) + WHERE ETA_DOS2 >= 3; + + + ALTER TABLE w_factures ADD CONSTRAINT w_factures_pkey PRIMARY KEY(no_facture); + + CREATE INDEX w_factures_i1 + ON w_factures + USING btree + (no_sejour); + + CREATE INDEX w_factures_i2 + ON w_factures + USING btree + (no_facture_reference); + + + + + DROP TABLE IF EXISTS w_factures_od_avoir; + CREATE TEMP TABLE w_factures_od_avoir AS + SELECT + oid AS facture_od_avoir_id, + no_facture AS no_facture_od_avoir, + ''::text AS no_facture, + 0::bigint AS facture_id, + no_sejour, + IND_DOS2, + montant_facture_c, + montant_facture_0_c, + montant_facture_1_c, + montant_facture_2_c, + montant_facture_22_c, + montant_facture_h, + montant_facture_0_h, + montant_facture_1_h, + montant_facture_2_h, + montant_facture_22_h + FROM w_factures + WHERE type_facture = '1'; + + + + ALTER TABLE w_factures_od_avoir ADD CONSTRAINT w_factures_od_avoir_od_pkey PRIMARY KEY(no_facture_od_avoir); + + CREATE INDEX w_factures_od_avoir_i1 + ON w_factures_od_avoir + USING btree + (no_sejour); + + UPDATE w_factures_od_avoir SET no_facture = w_factures.no_facture, facture_id = w_factures.oid + FROM w_factures + WHERE + w_factures_od_avoir.no_sejour = w_factures.no_sejour AND w_factures_od_avoir.IND_DOS2 = w_factures.IND_DOS2 + 1 AND + w_factures_od_avoir.montant_facture_c = 0 - w_factures.montant_facture_c AND + w_factures_od_avoir.montant_facture_0_c = 0 - w_factures.montant_facture_0_c AND + w_factures_od_avoir.montant_facture_1_c = 0 - w_factures.montant_facture_1_c AND + w_factures_od_avoir.montant_facture_2_c = 0 - w_factures.montant_facture_2_c AND + w_factures_od_avoir.montant_facture_22_c = 0 - w_factures.montant_facture_22_c AND + w_factures_od_avoir.montant_facture_h = 0 - w_factures.montant_facture_h AND + w_factures_od_avoir.montant_facture_0_h = 0 - w_factures.montant_facture_0_h AND + w_factures_od_avoir.montant_facture_1_h = 0 - w_factures.montant_facture_1_h AND + w_factures_od_avoir.montant_facture_2_h = 0 - w_factures.montant_facture_2_h AND + w_factures_od_avoir.montant_facture_22_h = 0 - w_factures.montant_facture_22_h; + + + UPDATE w_factures SET + type_facture = 'X' , + no_facture_od_avoir = w_factures_od_avoir.no_facture_od_avoir, + facture_od_avoir_id = w_factures_od_avoir.facture_od_avoir_id + FROM w_factures_od_avoir + WHERE w_factures.no_facture = w_factures_od_avoir.no_facture AND w_factures_od_avoir.no_facture <> '' AND w_factures_od_avoir.no_facture_od_avoir <> ''; + + UPDATE w_factures SET + no_facture_od_avoir = w_factures_od_avoir.no_facture, + facture_od_avoir_id = w_factures_od_avoir.facture_id + FROM w_factures_od_avoir + WHERE w_factures.no_facture = w_factures_od_avoir.no_facture_od_avoir AND w_factures_od_avoir.no_facture <> '' AND w_factures_od_avoir.no_facture_od_avoir <> ''; + + + + DROP TABLE IF EXISTS w_factures_references; + CREATE TEMP TABLE w_factures_references AS + SELECT no_sejour, COALESCE(MIN(CASE WHEN type_facture NOT IN ('X', '1') THEN no_facture ELSE NULL END), MIN(no_facture)) AS no_facture_reference + FROM w_factures + GROUP BY 1; + + + UPDATE w_factures SET + no_facture_reference = w_factures_references.no_facture_reference, + facture_reference_id = 0 + FROM w_factures_references + WHERE w_factures.no_sejour = w_factures_references.no_sejour AND + w_factures.no_facture_reference <> w_factures_references.no_facture_reference; + + + DROP TABLE IF EXISTS w_factures_references_soldes; + CREATE TEMP TABLE w_factures_references_soldes AS + SELECT + no_facture_reference, + MAX(date_solde) AS date_solde_reference, + MAX(date_solde_c) AS date_solde_reference_c, + MAX(date_solde_h) AS date_solde_reference_h, + MAX(date_solde_0_c) AS date_solde_reference_0_c, + MAX(date_solde_0_h) AS date_solde_reference_0_h, + MAX(date_solde_1_c) AS date_solde_reference_1_c, + MAX(date_solde_1_h) AS date_solde_reference_1_h, + MAX(date_solde_2_c) AS date_solde_reference_2_c, + MAX(date_solde_2_h) AS date_solde_reference_2_h, + MAX(date_solde_22_c) AS date_solde_reference_22_c, + MAX(date_solde_22_h) AS date_solde_reference_22_h + FROM w_factures + GROUP BY no_facture_reference; + + ALTER TABLE w_factures_references_soldes ADD CONSTRAINT w_factures_references_soldes_pkey PRIMARY KEY(no_facture_reference); + + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_14'); + + + + INSERT INTO activite[PX].p_factures ( + oid, + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + type_facture, + nb_rejets, + code_facture, + date_facture, + code_vente, + mois_vente, + date_vente, + code_cloture, + + particularite_t2a, + + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + + + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + + date_solde_reference, + date_solde_reference_c, + date_solde_reference_h, + date_solde_reference_0_c, + date_solde_reference_1_c, + date_solde_reference_2_c, + date_solde_reference_22_c, + date_solde_reference_0_h, + date_solde_reference_1_h, + date_solde_reference_2_h, + date_solde_reference_22_h, + + delai_facture, + delai_solde, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + + + date_encours, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_c + + ) + + SELECT + oid, + sejour_id, + no_sejour, + no_facture, + w_factures.no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + type_facture, + nb_rejets, + code_facture, + date_facture, + code_vente, + mois_vente, + date_vente, + code_cloture, + + particularite_t2a, + + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + CASE WHEN date_expedition <> '00010101' THEN date_expedition ELSE '20991231' END, + CASE WHEN date_expedition_0 <> '00010101' THEN date_expedition_0 ELSE '20991231' END, + CASE WHEN date_expedition_1 <> '00010101' THEN date_expedition_1 ELSE '20991231' END, + CASE WHEN date_expedition_2 <> '00010101' THEN date_expedition_2 ELSE '20991231' END, + CASE WHEN date_expedition_22 <> '00010101' THEN date_expedition_22 ELSE '20991231' END, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + + CASE WHEN date_solde <> '00010101' THEN date_solde ELSE '20991231' END, + CASE WHEN date_solde_c <> '00010101' THEN date_solde_c ELSE '20991231' END, + CASE WHEN date_solde_h <> '00010101' THEN date_solde_h ELSE '20991231' END, + CASE WHEN date_solde_0_c <> '00010101' THEN date_solde_0_c ELSE '20991231' END, + CASE WHEN date_solde_0_h <> '00010101' THEN date_solde_0_h ELSE '20991231' END, + CASE WHEN date_solde_1_c <> '00010101' THEN date_solde_1_c ELSE '20991231' END, + CASE WHEN date_solde_1_h <> '00010101' THEN date_solde_1_h ELSE '20991231' END, + CASE WHEN date_solde_2_c <> '00010101' THEN date_solde_2_c ELSE '20991231' END, + CASE WHEN date_solde_2_h <> '00010101' THEN date_solde_2_h ELSE '20991231' END, + CASE WHEN date_solde_22_c <> '00010101' THEN date_solde_22_c ELSE '20991231' END, + CASE WHEN date_solde_22_h <> '00010101' THEN date_solde_22_h ELSE '20991231' END, + + + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + + CASE WHEN w_factures_references_soldes.date_solde_reference <> '00010101' THEN w_factures_references_soldes.date_solde_reference ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_c <> '00010101' THEN w_factures_references_soldes.date_solde_reference_c ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_h <> '00010101' THEN w_factures_references_soldes.date_solde_reference_h ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_0_c <> '00010101' THEN w_factures_references_soldes.date_solde_reference_0_c ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_1_c <> '00010101' THEN w_factures_references_soldes.date_solde_reference_1_c ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_2_c <> '00010101' THEN w_factures_references_soldes.date_solde_reference_2_c ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_22_c <> '00010101' THEN w_factures_references_soldes.date_solde_reference_22_c ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_0_h <> '00010101' THEN w_factures_references_soldes.date_solde_reference_0_h ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_1_h <> '00010101' THEN w_factures_references_soldes.date_solde_reference_1_h ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_2_h <> '00010101' THEN w_factures_references_soldes.date_solde_reference_2_h ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_22_h <> '00010101' THEN w_factures_references_soldes.date_solde_reference_22_h ELSE '20991231' END, + + delai_facture, + delai_solde, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + + date_encours, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_c + + FROM w_factures + JOIN w_factures_references_soldes ON w_factures.no_facture_reference = w_factures_references_soldes.no_facture_reference + WHERE oid NOT IN (SELECT oid FROM activite[PX].p_factures); + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_14'); + + + UPDATE activite[PX].p_sejours + SET tiers_payant_2_id = subview.tiers_payant_2_id + FROM + ( + SELECT p_sejours.no_sejour, + p_sejours.tiers_payant_1_id, + t_tiers_payant_2.oid AS tiers_payant_2_id + FROM activite[PX].p_sejours + JOIN activite[PX].t_tiers_payant ON p_sejours.tiers_payant_1_id = t_tiers_payant.oid + JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON t_tiers_payant_2.code_original = (t_tiers_payant.code_original || '(2)') + WHERE est_budget_global = '1' AND + p_sejours.tiers_payant_1_id = p_sejours.tiers_payant_2_id AND + p_sejours.tiers_payant_1_id <> 0 + GROUP BY 1,2,3 + ) subview + WHERE p_sejours.no_sejour = subview.no_sejour; + + INSERT INTO activite[PX].t_tiers_payant(code_original, code, type_tiers_payant, texte, texte_court) + SELECT t_tiers_payant.code_original || '(2)', + t_tiers_payant.code, + '2'::text, + t_tiers_payant.texte || ' (AMC)', + t_tiers_payant.texte_court || ' (AMC)' + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_tiers_payant ON p_factures.tiers_payant_1_id = t_tiers_payant.oid + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON t_tiers_payant_2.code_original = (t_tiers_payant.code_original || '(2)') + WHERE est_budget_global = '1' AND + p_factures.tiers_payant_1_id = p_factures.tiers_payant_2_id AND + p_factures.tiers_payant_1_id <> 0 AND + t_tiers_payant_2.oid IS NULL + GROUP BY 1,2,3,4,5; + + + UPDATE activite[PX].p_factures + SET tiers_payant_2_id = subview.tiers_payant_2_id + FROM + ( + SELECT p_factures.no_facture, + p_factures.tiers_payant_1_id, + t_tiers_payant_2.oid AS tiers_payant_2_id + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_tiers_payant ON p_factures.tiers_payant_1_id = t_tiers_payant.oid + JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON t_tiers_payant_2.code_original = (t_tiers_payant.code_original || '(2)') + WHERE est_budget_global = '1' AND + p_factures.tiers_payant_1_id = p_factures.tiers_payant_2_id AND + p_factures.tiers_payant_1_id <> 0 + GROUP BY 1,2,3 + ) subview + WHERE p_factures.no_facture = subview.no_facture; + + + + -- Séjours sans facture + + DROP TABLE IF EXISTS w_factures_trous; + CREATE TEMP TABLE w_factures_trous AS + SELECT + p_sejours.finess, + p_sejours.no_sejour, + p_sejours.type_sejour, + p_sejours.date_entree, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.code_cp_demandee, + COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire, + p_sejours.code_sorti, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie, + MAX(CASE WHEN p_factures.date_fin IS NULL THEN date_sortie ELSE p_factures.date_fin END) AS date_fin_facture_0, + MAX(CASE WHEN p_factures.date_fin IS NOT NULL AND (date_sortie - date_entree < 30 OR p_sejours.type_sejour <> '1') AND t_services_facturation.avec_facturation_intermediaire IS DISTINCT FROM '1' THEN date_sortie ELSE p_factures.date_fin END) AS date_fin_facture, + date(MAX(COALESCE(CASE WHEN p_factures.date_fin IS NOT NULL AND (date_sortie - date_entree < 30 OR p_sejours.type_sejour <> '1') AND t_services_facturation.avec_facturation_intermediaire IS DISTINCT FROM '1' THEN date_sortie ELSE p_factures.date_fin END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours + FROM activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND no_facture NOT LIKE 'E%' + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE p_sejours.etat = '' AND p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND date_entree <= now() AND p_sejours.type_sejour <> '6' AND p_sejours.type_sejour <> '9' AND code_prevu <> 1 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12; + + -- Spécial séances avec facturation multiple + UPDATE w_factures_trous + SET date_fin_facture = date_fin_facture_0, + date_debut_encours = date(date_fin_facture_0+interval '1 day') + WHERE no_sejour IN + ( + SELECT no_sejour + FROM prod_sigems.LIG_CLINI + JOIN w_factures_trous ON ANN_LCL || to_char(COD_LCL,'FM900000') = no_sejour AND w_factures_trous.type_sejour = '5' + WHERE PRO_LCL <> 'ACPT' AND PRO_LCL <> 'ECAC' AND PRO_LCL <> 'REGC' AND IND_LCL = 0 AND date(dde_lcl) > date_fin_facture_0 + ) + ; + + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee, + date_debut, + date_fin) + SELECT finess, + no_sejour, + no_sejour || '.00' || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + no_sejour || '.00' || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee , + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12; + + + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id) + SELECT finess, + ANN_LCL || to_char(COD_LCL,'FM900000'), + ANN_LCL || to_char(COD_LCL,'FM900000') || '.00', + ANN_LCL || to_char(COD_LCL,'FM900000') || '.00', + date_entree, + date_sortie, + '0', + '0', + '20991231'::date, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id + FROM prod_sigems.LIG_CLINI + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LCL = ANN_SELECT AND COD_LCL = COD_SELECT + JOIN activite[PX].p_sejours ON ANN_LCL || to_char(COD_LCL,'FM900000') = no_sejour AND p_sejours.etat = '' + WHERE PRO_LCL <> 'ACPT' AND PRO_LCL <> 'ECAC' AND + ANN_LCL || to_char(COD_LCL,'FM900000') || '.' || to_char(IND_LCL,'FM9999900') NOT IN (SELECT no_facture FROM activite[PX].p_factures) AND + ANN_LCL || to_char(COD_LCL,'FM900000') NOT IN (SELECT no_sejour FROM activite[PX].p_factures) AND + SER_LCL <> '*CDL' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14; + + INSERT INTO activite[PX].p_factures( + finess, + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id) + SELECT finess, + p_sejours.oid, + ANN_LHO || to_char(COD_LHO,'FM900000'), + ANN_LHO || to_char(COD_LHO,'FM900000') || '.00', + ANN_LHO || to_char(COD_LHO,'FM900000') || '.00', + date_entree, + date_sortie, + '0', + '0', + '20991231'::date, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id + FROM prod_sigems.LIG_HONOR + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LHO = ANN_SELECT AND COD_LHO = COD_SELECT + JOIN activite[PX].p_sejours ON ANN_LHO || to_char(COD_LHO,'FM900000') = no_sejour AND p_sejours.etat = '' + WHERE CPH_LHO <> 'ACPT' AND CPH_LHO <> 'ECAH' AND CPH_LHO <> 'REGH' AND + ANN_LHO || to_char(COD_LHO,'FM900000') || '.' || to_char(IND_LHO,'FM9999900') NOT IN (SELECT no_facture FROM activite[PX].p_factures) AND + ANN_LHO || to_char(COD_LHO,'FM900000') NOT IN (SELECT no_sejour FROM activite[PX].p_factures) AND + SER_LHO <> '*CDL' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15; + + + + UPDATE activite[PX].p_factures SET + date_debut = date_entree, + date_fin = CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid AND + avec_facturation_intermediaire IS DISTINCT FROM '1' + WHERE p_factures.no_sejour = p_sejours.no_sejour AND + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END - date_entree < 30 AND + ( + p_factures.date_debut <> date_entree OR + p_factures.date_fin <> CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + ); + + + + UPDATE activite[PX].p_factures + SET facture_od_avoir_id = p_factures_od_avoir.oid + FROM activite[PX].p_factures p_factures_od_avoir + WHERE p_factures.no_facture_od_avoir = p_factures_od_avoir.no_facture + AND p_factures.facture_od_avoir_id <> p_factures_od_avoir.oid; + + + -- premiere facture initiale (cas des annulations + UPDATE activite[PX].p_factures + SET type_facture = '0' WHERE no_facture IN + ( + SELECT no_facture_0 FROM + ( + SELECT no_sejour, MAX(no_facture_reference) AS no_facture_0 + FROM activite[PX].p_factures + GROUP BY 1 + HAVING SUM(CASE WHEN type_facture = '0' THEN 1 ELSE 0 END) = 0 AND MAX(no_facture_reference) IS NOT NULL + ) subview + ); + + + + + -- Répartition montants comptabilisés tp2 sur tp1 quand tp1 = tp2 + UPDATE activite[PX].p_factures SET + montant_comptabilise_1_c = montant_comptabilise_1_c + montant_comptabilise_2_c, + montant_comptabilise_1_h = montant_comptabilise_1_h + montant_comptabilise_2_h, + montant_regle_1_c = montant_regle_1_c + montant_regle_2_c, + montant_regle_1_h = montant_regle_1_h + montant_regle_2_h, + montant_comptabilise_2_c = 0, + montant_comptabilise_2_h = 0, + montant_regle_2_c = 0, + montant_regle_2_h = 0 + WHERE tiers_payant_1_id = tiers_payant_2_id AND tiers_payant_1_id <> 0 AND + (montant_comptabilise_2_c <> 0 OR montant_comptabilise_2_h <> 0 OR montant_regle_2_c <> 0 OR montant_regle_2_h <> 0); + + + + ]]> + + + + 0 THEN COG_LCL ELSE 1 END AS coefficient, + w_LIG_CLINI_keys.rubrique_facturation_id AS rubrique_facturation_id, + w_LIG_CLINI_keys.prestation_id AS prestation_id, + CASE + WHEN w_LIG_CLINI.PRO_LCL = 'PJ' AND QTE_LCL <> 0 AND (ML1_LCL+ML2_LCL+ML3_LCL) <> 0 THEN (ML1_LCL+ML2_LCL+ML3_LCL)/QTE_LCL + WHEN TAR_LCL <> 0 AND QTE_LCL <> 0 THEN TAR_LCL/QTE_LCL + WHEN PUN_LCL <> 0 THEN PUN_LCL + WHEN QTE_LCL <> 0 AND (ML1_LCL+ML2_LCL+ML3_LCL) <> 0 THEN (ML1_LCL+ML2_LCL+ML3_LCL)/QTE_LCL + ELSE PUN_LCL + END AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id, + w_LIG_CLINI.ucd_id, + w_LIG_CLINI.lpp_id + FROM w_LIG_CLINI + JOIN activite[PX].p_factures ON w_LIG_CLINI.no_facture = split_part(p_factures.no_facture,'_',1) AND + ( + DDE_LCL BETWEEN p_factures.date_debut AND p_factures.date_fin OR + DFI_LCL BETWEEN p_factures.date_debut AND p_factures.date_fin + ) + JOIN activite[PX].p_sejours ON w_LIG_CLINI.SEJ_DOS = p_sejours.code_original AND p_sejours.etat = '' + JOIN w_LIG_CLINI_keys ON w_LIG_CLINI.key = w_LIG_CLINI_keys.key + WHERE p_factures.code_facture <> '1' AND w_LIG_CLINI.PRO_LCL <> 'ACPT' + ; + + + -- Prestations spéciale I01 provenant du PMSI + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture AS no_facture, + p_factures.date_debut AS date_debut, + p_factures.date_debut AS date_fin, + 1::numeric AS nb_rubrique, + 1::numeric AS coefficient, + 0.9935::numeric AS coefficient_mco, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_facturation_id, + COALESCE(t_prestations.oid,0) AS prestation_id, + 6047::numeric AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id + FROM prod_sigems.GHS_VALORISE + JOIN activite[PX].p_factures ON JOINTURE = p_factures.no_sejour + JOIN activite[PX].p_sejours ON JOINTURE = p_sejours.code_original AND p_sejours.etat = '' + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = 'I01' + JOIN activite.t_prestations ON t_prestations.code = 'I01' + WHERE p_factures.code_facture <> '1' AND GHS_VALORISE.GHS = 'I01' + ; + + -- Suppression de lignes en double (cas d'un dossier de tronquiere en SSR) + DELETE FROM activite[PX].p_factures_lignes_non_facturees_c + USING activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_sejours.no_sejour = p_factures.no_sejour AND p_factures.date_debut > p_sejours.date_entree + WHERE p_factures_lignes_non_facturees_c.no_facture = p_factures.no_facture AND + p_factures_lignes_non_facturees_c.date_debut NOT BETWEEN p_factures.date_debut AND p_factures.date_fin + ; + + + + DROP TABLE IF EXISTS w_LIG_CLINI_tmrx; + CREATE TEMP TABLE w_LIG_CLINI_tmrx AS + SELECT no_facture, + SUM(MR1_LCL) AS MR1_LCL, + SUM(MR2_LCL) AS MR2_LCL, + SUM(MR3_LCL) AS MR3_LCL + FROM w_LIG_CLINI + LEFT JOIN prod_sigems.DOS2_LIEN_AVOIR DOS2_LIEN_AVOIR_F ON + DOS2_LIEN_AVOIR_F.ANN = ANN_LCL AND + DOS2_LIEN_AVOIR_F.COD = COD_LCL AND + DOS2_LIEN_AVOIR_F.IND = IND_LCL + LEFT JOIN prod_sigems.DOS2_LIEN_AVOIR DOS2_LIEN_AVOIR_A ON + DOS2_LIEN_AVOIR_A.ANN = ANN_LCL AND + DOS2_LIEN_AVOIR_A.COD = COD_LCL AND + DOS2_LIEN_AVOIR_A.IND_AVOIR = IND_LCL + WHERE PRO_LCL <> 'ECAC' AND + DOS2_LIEN_AVOIR_F.COD IS NULL AND + DOS2_LIEN_AVOIR_A.COD IS NULL + GROUP BY 1; + + CREATE INDEX w_LIG_CLINI_tmrx_i1 + ON w_LIG_CLINI_tmrx + USING btree + (no_facture); + + + UPDATE activite[PX].p_factures SET + montant_regle_c = w_LIG_CLINI_tmrx.MR1_LCL + w_LIG_CLINI_tmrx.MR2_LCL + w_LIG_CLINI_tmrx.MR3_LCL, + montant_regle_1_c = w_LIG_CLINI_tmrx.MR1_LCL + CASE WHEN tiers_payant_1_id = tiers_payant_2_id AND tiers_payant_1_id <> 0 THEN w_LIG_CLINI_tmrx.MR2_LCL ELSE 0 END, + montant_regle_2_c = CASE WHEN tiers_payant_1_id <> tiers_payant_2_id THEN w_LIG_CLINI_tmrx.MR2_LCL ELSE 0 END, + montant_regle_0_c = w_LIG_CLINI_tmrx.MR3_LCL + FROM w_LIG_CLINI_tmrx + WHERE p_factures.no_facture = w_LIG_CLINI_tmrx.no_facture AND + ( + montant_regle_c <> w_LIG_CLINI_tmrx.MR1_LCL + w_LIG_CLINI_tmrx.MR2_LCL + w_LIG_CLINI_tmrx.MR3_LCL OR + montant_regle_1_c <> (w_LIG_CLINI_tmrx.MR1_LCL + CASE WHEN tiers_payant_1_id = tiers_payant_2_id AND tiers_payant_1_id <> 0 THEN w_LIG_CLINI_tmrx.MR2_LCL ELSE 0 END) OR + montant_regle_2_c <> (CASE WHEN tiers_payant_1_id <> tiers_payant_2_id THEN w_LIG_CLINI_tmrx.MR2_LCL ELSE 0 END) OR + montant_regle_0_c <> w_LIG_CLINI_tmrx.MR3_LCL + ); + + + + + ]]> + + + + 0 THEN COG_LCL ELSE 1 END AS coefficient, + CASE WHEN COO_LCL > 0 THEN COO_LCL / 100 ELSE 1 END AS coefficient_mco, + w_LIG_CLINI.PRO_LCL, + w_LIG_CLINI_keys.rubrique_facturation_id AS rubrique_facturation_id, + w_LIG_CLINI_keys.rubrique_comptabilisation_id AS rubrique_comptabilisation_id, + w_LIG_CLINI_keys.prestation_id AS prestation_id, + w_LIG_CLINI_keys.compte_produit_id AS compte_produit_id, + w_LIG_CLINI.ucd_id, + w_LIG_CLINI.lpp_id, + p_sejours.lieu_sortie_id AS lieu_id, + 1::bigint AS origine_facturation_id, + + PUN_LCL AS prix_unitaire, + TX3_LCL AS taux_0, + CASE WHEN BG_SSR = '0' AND ML1_LCL <> 0 OR ML1_LCL_BG <> 0 THEN TX1_LCL ELSE 0 END AS taux_1, + TX2_LCL AS taux_2, + 0::numeric AS taux_22, + + date(DDE_LCL) AS date_debut, + date(COALESCE(DFI_LCL,DDE_LCL)) AS date_fin, + QTE_LCL AS nb_rubrique, + QTE_LCL AS nb_prestation, + w_LIG_CLINI.TVA_LCL AS taux_tva, + ML1_LCL + ML2_LCL + ML3_LCL AS montant_facture, + ML3_LCL AS montant_facture_0, + ML1_LCL AS montant_facture_1, + ML2_LCL AS montant_facture_2, + 0::numeric AS montant_facture_22, + ML1_LCL + ML2_LCL + ML3_LCL AS montant_comptabilise, + ML3_LCL AS montant_comptabilise_0, + ML1_LCL + CASE WHEN p_factures.tiers_payant_1_id = p_factures.tiers_payant_2_id AND p_factures.tiers_payant_1_id <> 0 THEN ML2_LCL ELSE 0 END AS montant_comptabilise_1, + CASE WHEN p_factures.tiers_payant_1_id <> p_factures.tiers_payant_2_id THEN ML2_LCL ELSE 0 END AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + MR1_LCL + MR2_LCL + MR3_LCL AS montant_regle, + MR3_LCL AS montant_regle_0, + MR1_LCL + CASE WHEN p_factures.tiers_payant_1_id = p_factures.tiers_payant_2_id AND p_factures.tiers_payant_1_id <> 0 THEN MR2_LCL ELSE 0 END AS montant_regle_1, + CASE WHEN p_factures.tiers_payant_1_id <> p_factures.tiers_payant_2_id THEN MR2_LCL ELSE 0 END AS montant_regle_2, + 0::numeric AS montant_regle_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_1, + 0::numeric AS rubrique_facture_id + FROM w_LIG_CLINI + JOIN activite[PX].p_factures ON w_LIG_CLINI.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON w_LIG_CLINI.SEJ_DOS = p_sejours.code_original AND p_sejours.etat = '' + JOIN w_LIG_CLINI_keys ON w_LIG_CLINI.key = w_LIG_CLINI_keys.key + LEFT JOIN w_REG4_un ON NUM_LCL = NUM_CLI + WHERE (p_factures.code_facture = '1' AND w_LIG_CLINI.non_facturee <> '1') OR w_LIG_CLINI.PRO_LCL = 'ACPT' OR NUM_CLI IS NOT NULL; + + -- Lignes Budget global SSR + INSERT INTO w_factures_lignes_c + SELECT + nextval('w_factures_lignes_c_seq'::regclass) AS sequence, + p_factures.no_sejour, + + NUM_LCL, + + p_factures.oid AS facture_id, + w_LIG_CLINI.no_facture || '.BG' AS no_facture, + p_factures.code_facture, + p_factures.date_vente, + + CASE WHEN COG_LCL <> 0 THEN COG_LCL ELSE 1 END AS coefficient, + CASE WHEN COO_LCL > 0 THEN COO_LCL / 100 ELSE 1 END AS coefficient_mco, + w_LIG_CLINI.PRO_LCL, + w_LIG_CLINI_keys.rubrique_facturation_id AS rubrique_facturation_id, + w_LIG_CLINI_keys.rubrique_comptabilisation_id AS rubrique_comptabilisation_id, + w_LIG_CLINI_keys.prestation_id AS prestation_id, + w_LIG_CLINI_keys.compte_produit_id AS compte_produit_id, + w_LIG_CLINI.ucd_id, + w_LIG_CLINI.lpp_id, + p_sejours.lieu_sortie_id AS lieu_id, + 1::bigint AS origine_facturation_id, + + PUN_LCL AS prix_unitaire, + 0::numeric AS taux_0, + TX1_LCL AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_22, + + date(DDE_LCL) AS date_debut, + date(COALESCE(DFI_LCL,DDE_LCL)) AS date_fin, + QTE_LCL AS nb_rubrique, + QTE_LCL AS nb_prestation, + TVA_LCL AS taux_tva, + ML1_LCL_BG AS montant_facture, + 0::numeric AS montant_facture_0, + ML1_LCL_BG AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS montant_regle, + 0::numeric AS montant_regle_0, + 0::numeric AS montant_regle_1, + 0::numeric AS montant_regle_2, + 0::numeric AS montant_regle_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + ML1_LCL_BG AS montant_comptabilise_budget_global_1, + 0::numeric AS rubrique_facture_id + FROM w_LIG_CLINI + JOIN activite[PX].p_factures ON w_LIG_CLINI.no_facture || '.BG' = p_factures.no_facture + JOIN activite[PX].p_sejours ON w_LIG_CLINI.SEJ_DOS = p_sejours.code_original AND p_sejours.etat = '' + JOIN w_LIG_CLINI_keys ON w_LIG_CLINI.key = w_LIG_CLINI_keys.key + WHERE ML1_LCL_BG <> 0 AND + p_factures.code_facture = '1' AND w_LIG_CLINI.non_facturee <> '1'; + + + CREATE INDEX w_factures_lignes_c_i1 + ON w_factures_lignes_c + USING btree + (NUM_LCL); + + CREATE INDEX w_factures_lignes_c_i2 + ON w_factures_lignes_c + USING btree + (sequence); + + CREATE INDEX w_factures_lignes_c_i3 + ON w_factures_lignes_c + USING btree + (no_sejour); + + + -- Remplacement des codes dialyse + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'TRANSGHSDXX', + 'Transformation des GHS en Dxx', + '', + 'Transformation des prestations GHS en Dxx selong GHS, la rubrique de facturation prend la valeur du GHS' + WHERE 'TRANSGHSDXX' NOT IN (SELECT code FROM activite.t_divers); + ; + + INSERT INTO activite[PX].t_rubriques_facturation (code_original, code, texte, texte_court) + WITH w_rub AS + ( + SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL + ) + SELECT t_ghs.code::text, t_ghs.code::text, t_ghs.texte, t_ghs.texte + FROM base.t_ghs + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + LEFT JOIN w_rub ON w_rub.code_original = t_ghs.code::text + WHERE t_ghs.code IN (9602,9603,9604,9605,9617) AND + w_rub.code_original IS NULL + ; + + INSERT INTO activite[PX].t_rubriques_facturation (code_original, code, texte, texte_court) + WITH w_rub AS + ( + SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL + ) + SELECT t_prestations.code::text, t_prestations.code::text, t_prestations.texte, t_prestations.texte + FROM activite.t_prestations + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + LEFT JOIN w_rub ON w_rub.code_original = t_prestations.code::text + WHERE t_prestations.code IN ('D11') AND + w_rub.code_original IS NULL + ; + + DROP TABLE IF EXISTS w_transform_dxx; + CREATE TEMP TABLE w_transform_dxx AS + SELECT p_factures_lignes_c.no_facture, + p_factures_lignes_c.CTID AS CTID_source, + t_prestations.code, + t_ghs.code AS ghs_code, + CASE t_ghs.code + WHEN 9602 THEN 'D18' + WHEN 9603 THEN 'D19' + WHEN 9604 THEN 'D17' + WHEN 9605 THEN 'D09' + WHEN 9617 THEN 'D10' + ELSE '' END AS dxx_prestation_code + FROM w_factures_lignes_c p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN base.t_ghs ON p_sejours.ghs_id = t_ghs.oid + JOIN activite.t_prestations ON t_prestations.oid = prestation_id + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + WHERE t_prestations.code = 'GHS' AND + t_ghs.code IN (9602,9603,9604,9605,9617); + + CREATE INDEX w_transform_dxx_i1 + ON w_transform_dxx + USING btree + (no_facture) + ; + + UPDATE w_factures_lignes_c p_factures_lignes_c SET + prestation_id = t_prestations.oid, + rubrique_facturation_id = t_rubriques_facturation.oid + FROM w_transform_dxx + JOIN activite.t_prestations ON dxx_prestation_code = t_prestations.code + JOIN activite[PX].t_rubriques_facturation ON ghs_code = t_rubriques_facturation.code_original + WHERE p_factures_lignes_c.no_facture = w_transform_dxx.no_facture AND + p_factures_lignes_c.CTID = w_transform_dxx.CTID_source + ; + + + -- Eclatement des supplements par jour + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + t_prestations.code AS prestation_code, + date(p_sejours.date_entree) AS date_debut_ghs, + date(p_sejours.date_sortie - interval '1 day') AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN t_prestations.code = 'GHS' THEN date(date_entree + interval '1 day') ELSE date(date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN t_prestations.code = 'GHS' THEN date(p_sejours.date_sortie - interval '1 day') ELSE date(date_debut + ABS(nb_prestation)-1) END AS date_fin_det, + ABS(CASE WHEN t_prestations.code = 'GHS' THEN date(date_sortie) - date(date_entree) ELSE nb_prestation END) AS nb_det, + w_factures_lignes_c.* + FROM w_factures_lignes_c + JOIN activite[PX].p_sejours ON w_factures_lignes_c.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + ( + code IN ('PJ', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (t_prestations.code = 'GHS' AND p_sejours.type_sejour != '5' AND date(date_sortie) - date(date_entree) > 1)) + ; + + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM w_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture AND + w_factures_lignes_sup_c.prestation_code = 'GHS'; + + CREATE INDEX w_factures_lignes_sup_c_i1 + ON w_factures_lignes_sup_c + USING btree + (date_debut); + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + sequence, + NUM_LCL, + PRO_LCL, + no_sejour, + no_facture, + code_facture, + date AS date_debut, + date AS date_fin, + date_vente, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + compte_produit_id, + ucd_id, + lpp_id, + taux_tva, + round(montant_facture / ABS(nb_det),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + round(montant_comptabilise / ABS(nb_det),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_det),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_det),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_det),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_det),2) AS montant_comptabilise_22, + rubrique_comptabilisation_id, + round(montant_encours / ABS(nb_det),2) AS montant_encours, + round(montant_encours_0 / ABS(nb_det),2) AS montant_encours_0, + round(montant_encours_1 / ABS(nb_det),2) AS montant_encours_1, + round(montant_encours_2 / ABS(nb_det),2) AS montant_encours_2, + round(montant_encours_22 / ABS(nb_det),2) AS montant_encours_22, + round(montant_facture_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_actes_inclus_dans_sejour, + round(montant_facture_0_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_0_actes_inclus_dans_sejour, + round(montant_facture_1_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_1_actes_inclus_dans_sejour, + round(montant_facture_2_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_2_actes_inclus_dans_sejour, + round(montant_facture_22_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + round(montant_comptabilise_budget_global_1 / ABS(nb_det),2) AS montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_det AND date_fin_det + ; + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT sequence, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + + UPDATE w_factures_lignes_c + SET + date_fin = w_factures_lignes_c.date_debut, + nb_rubrique = w_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_sup_tot.nb_rubrique, + nb_prestation = w_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_sup_tot.nb_prestation, + montant_facture = w_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = w_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = w_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = w_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = w_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = w_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = w_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = w_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = w_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = w_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22, + montant_encours = w_factures_lignes_c.montant_encours - w_factures_lignes_sup_c_sup_tot.montant_encours, + montant_encours_0 = w_factures_lignes_c.montant_encours_0 - w_factures_lignes_sup_c_sup_tot.montant_encours_0, + montant_encours_1 = w_factures_lignes_c.montant_encours_1 - w_factures_lignes_sup_c_sup_tot.montant_encours_1, + montant_encours_2 = w_factures_lignes_c.montant_encours_2 - w_factures_lignes_sup_c_sup_tot.montant_encours_2, + montant_encours_22 = w_factures_lignes_c.montant_encours_22 - w_factures_lignes_sup_c_sup_tot.montant_encours_22, + montant_facture_actes_inclus_dans_sejour = w_factures_lignes_c.montant_facture_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = w_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = w_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = w_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = w_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 = w_factures_lignes_c.montant_comptabilise_budget_global_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup_tot + WHERE w_factures_lignes_c.sequence = w_factures_lignes_sup_c_sup_tot.sequence; + + + + INSERT INTO w_factures_lignes_c( + NUM_LCL, + PRO_LCL, + no_facture, + code_facture, + no_sejour, + date_debut, + date_fin, + date_vente, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + compte_produit_id, + ucd_id, + lpp_id, + taux_tva, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id) + SELECT + 0 - NUM_LCL, + PRO_LCL, + no_facture, + code_facture, + no_sejour, + date_debut, + date_fin, + date_vente, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + compte_produit_id, + ucd_id, + lpp_id, + taux_tva, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c_sup; + + + -- Lieu exécution + + + UPDATE w_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_mouvements_sejour + WHERE + w_factures_lignes_c.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_lignes_c.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + w_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + + + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_c'); + + + -- Validation des lignes de facture + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_8'); + + INSERT INTO activite[PX].p_factures_lignes_c ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + ucd_id, + lpp_id, + taux_tva, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1, + origine_facturation_id + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + ucd_id, + lpp_id, + taux_tva, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1, + origine_facturation_id + FROM w_factures_lignes_c + WHERE PRO_LCL <> 'ACPT' AND montant_facture <> 0 AND code_facture >= '1'; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_8'); + + + + + + + DROP TABLE IF EXISTS w_sejours_facture_reference; + + CREATE TEMP TABLE w_sejours_facture_reference AS + SELECT + no_sejour, + COALESCE( + MAX(CASE WHEN type_facture <> '1' AND type_facture <> 'X' AND t_prestations.code = 'GHS' THEN p_factures.no_facture ELSE null END), + MAX(CASE WHEN type_facture <> '1' AND type_facture <> 'X' THEN p_factures.no_facture ELSE null END), + MAX(p_factures.no_facture) + ) AS no_facture_reference + FROM activite[PX].p_factures + LEFT JOIN activite[PX].p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + LEFT JOIN activite.t_prestations ON p_factures_lignes_c.prestation_id = t_prestations.oid AND t_prestations.code = 'GHS' + GROUP BY no_sejour; + + + CREATE INDEX w_sejours_facture_reference_i1 + ON w_sejours_facture_reference + USING btree + (no_sejour); + + CREATE INDEX w_sejours_facture_reference_i2 + ON w_sejours_facture_reference + USING btree + (no_facture_reference); + + + UPDATE activite[PX].p_factures SET + no_facture_reference = w_sejours_facture_reference.no_facture_reference, + facture_reference_id = p_factures_references.oid + FROM w_sejours_facture_reference + JOIN activite[PX].p_factures p_factures_references ON p_factures_references.no_facture = w_sejours_facture_reference.no_facture_reference + WHERE p_factures.no_sejour = w_sejours_facture_reference.no_sejour AND + (p_factures.no_facture_reference IS DISTINCT FROM w_sejours_facture_reference.no_facture_reference OR + p_factures.facture_reference_id IS DISTINCT FROM p_factures_references.oid + ) + ; + + + ]]> + + + + 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5; + + + + + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + facture_id, + no_facture, + date(DAT_REG), + rubrique_comptabilisation_id, + prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(MR1_LCL + MR2_LCL + MR3_LCL) AS montant_regle, + SUM(MR3_LCL) AS montant_regle_0, + SUM(MR1_LCL) AS montant_regle_1, + SUM(MR2_LCL) AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_factures_lignes_c + JOIN w_LIG_CLINI_mrx ON w_factures_lignes_c.NUM_LCL = w_LIG_CLINI_mrx.NUM_LCL + WHERE no_facture NOT LIKE '%BG' + GROUP BY 1,2,3,4,5; + + -- Acomptes NOEMIE (85%) + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT '*CTI_ACO85', 'ACO85', 'Acomptes 85%', 'Acomptes 85%' + WHERE '*CTI_ACO85' NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation); + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT '*CTI_ACO85', 'ACO85', 'Acomptes 85%', 'Acomptes 85%' + WHERE '*CTI_ACO85' NOT IN (SELECT code_original FROM activite.t_prestations WHERE code_original IS NOT NULL); + + + DROP TABLE IF EXISTS w_ACOMPTE_NOEMIE; + CREATE TEMP TABLE w_ACOMPTE_NOEMIE AS + SELECT *, + DATE_CPTA AS ECR_DATE, + CASE + WHEN DATE_CPTA < date(now() - interval '30 days') THEN '1'::text + ELSE '0'::text END AS ACOMPTE_EST_COMPTABILISE, + 0::NUMERIC AS MONTANT_REGLE_SI_REPRISE + FROM prod_sigems.ACOMPTE_NOEMIE + ; + + ANALYSE w_ACOMPTE_NOEMIE + ; + + CREATE INDEX w_ACOMPTE_NOEMIE_i1 + ON w_ACOMPTE_NOEMIE + USING btree + (CODE); + + -- Récupérer la vraie date comptable + UPDATE w_ACOMPTE_NOEMIE ACOMPTE_NOEMIE SET + ECR_DATE = ECRIT.ECR_DATE, + ACOMPTE_EST_COMPTABILISE = '1' + FROM prod_sigems.DOS_ECRIT + JOIN prod_sigems.ECRIT ON (SERI = ECR_NUM OR SERI = ECR_LIAIS) + WHERE ACOMPTE_NOEMIE.ANNEE = DOS_ECRIT.ANNEE AND + ACOMPTE_NOEMIE.CODE = DOS_ECRIT.CODE AND + ACOMPTE_NOEMIE.INDICE = DOS_ECRIT.INDICE AND + ECR_CPTE = 'NOEMIE' AND + ECR_JNAL NOT LIKE 'AN%' AND + ECR_CREDIT = ACOMPTE_NOEMIE.MONTANT AND + ( + ACOMPTE_NOEMIE.ECR_DATE IS DISTINCT FROM ECRIT.ECR_DATE OR + ACOMPTE_EST_COMPTABILISE = '0' + ) + ; + + -- Retrouver le montant réglé total si reprise d'acompte nom comptabilisée + UPDATE w_ACOMPTE_NOEMIE + SET MONTANT_REGLE_SI_REPRISE = SJ1_DOS2 + FROM prod_sigems.DOS2 + WHERE ACOMPTE_EST_COMPTABILISE = '0' AND + MONTANT < 0 AND + ANNEE = ANN_DOS2 AND + CODE = COD_DOS2 AND + INDICE = IND_DOS2 AND + SR1_DOS2 = 0 AND + round(base.cti_division(0-MONTANT, SJ1_DOS2)*100.00,0) = 85 + ; + + -- Eliminer les anomalies + DROP TABLE IF EXISTS w_ACOMPTE_NOEMIE_err; + CREATE TEMP TABLE w_ACOMPTE_NOEMIE_err AS + SELECT ANNEE AS ANNEE_err, CODE AS CODE_err, INDICE AS INDICE_err + FROM w_ACOMPTE_NOEMIE ACOMPTE_NOEMIE + JOIN activite[PX].p_factures ON annee || to_char(code,'FM900000') || '.' || to_char(indice,'FM00') = no_facture + WHERE ECR_DATE IS NOT NULL + GROUP BY 1,2,3 + HAVING ( + SUM(MONTANT) <> 0 AND MAX(ECR_DATE) < (now() - interval '1 year') OR + SUM(MONTANT) <> 0 AND count(*) <> 1 OR + SUM(MONTANT) < 0 + ) + ; + + DELETE FROM w_ACOMPTE_NOEMIE + USING w_ACOMPTE_NOEMIE_err + WHERE ANNEE = ANNEE_err AND + CODE = CODE_err AND + INDICE = INDICE_err + ; + + -- Ecriture d'acompte + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date(ECR_DATE) AS date_comptable, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + ACOMPTE_NOEMIE.MONTANT AS montant_regle, + 0 AS montant_regle_0, + ACOMPTE_NOEMIE.MONTANT AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22, + '1' AS od_non_comptabilise + FROM w_ACOMPTE_NOEMIE ACOMPTE_NOEMIE + JOIN activite[PX].p_factures ON annee || to_char(code,'FM900000') || '.' || to_char(indice,'FM00') = no_facture + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = '*CTI_ACO85' + JOIN activite.t_prestations ON t_prestations.code_original = '*CTI_ACO85' + WHERE ECR_DATE IS NOT NULL + ; + + -- Ecriture de règlement si reprise d'acompte non comptabilisée + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date(ECR_DATE) AS date_comptable, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + ACOMPTE_NOEMIE.MONTANT_REGLE_SI_REPRISE AS montant_regle, + 0 AS montant_regle_0, + ACOMPTE_NOEMIE.MONTANT_REGLE_SI_REPRISE AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22, + '1' AS od_non_comptabilise + FROM w_ACOMPTE_NOEMIE ACOMPTE_NOEMIE + JOIN activite[PX].p_factures ON annee || to_char(code,'FM900000') || '.' || to_char(indice,'FM00') = no_facture + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = '*CTI_ACO85' + JOIN activite.t_prestations ON t_prestations.code_original = '*CTI_ACO85' + WHERE ECR_DATE IS NOT NULL AND + ACOMPTE_NOEMIE.MONTANT_REGLE_SI_REPRISE <> 0 + ; + + UPDATE activite[PX].p_factures SET + montant_regle_c = montant_regle_c + montant_acompte, + montant_regle_1_c = montant_regle_1_c + montant_acompte + FROM + ( + SELECT no_facture, SUM(montant_regle_1) AS montant_acompte + FROM activite[PX].p_factures_soldes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + t_prestations.code_original = '*CTI_ACO85' + GROUP BY 1 + HAVING SUM(montant_regle_1) <> 0 + ) subview + WHERE p_factures.no_facture = subview.no_facture + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_8'); + + + + ]]> + + + + 0 THEN IND_LHO ELSE COALESCE(IND_DOS2_ETA2, IND_LHO) END,'FM9999900') AS no_facture, + COALESCE(ACT_PRH,CPH_LHO) || '|' || + CPH_LHO || '|' || + COALESCE(CCAM_RUM.CODE,ACT_PRH,CPH_LHO) || '|' || + CEX_LHO AS key, + CASE WHEN CASE WHEN IND_LHO <> 0 THEN IND_LHO ELSE COALESCE(IND_DOS2_ETA2, IND_LHO) END = 0 THEN '1' ELSE '0' END AS non_facturee + FROM prod_sigems.LIG_HONOR + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LHO = ANN_SELECT AND COD_LHO = COD_SELECT + LEFT JOIN w_DOS2_ETA2 ON ANN_LHO = ANN_DOS2 AND COD_LHO = COD_DOS2 + LEFT JOIN prod_sigems.CCAM_RUM ON LIG_HONOR.NUM_LHO = CCAM_RUM.NUM_LHO AND date(DDE_LHO) = date(CCAM_RUM.DAT) + LEFT JOIN prod_sigems.PROD_HONOR ON CPH_LHO = COD_PRH + WHERE + CPH_LHO <> 'ECAH' AND + SER_LHO <> '*CDL'; + + + CREATE INDEX w_LIG_HONOR_i1 + ON w_LIG_HONOR + USING btree + (SEJ_DOS); + + CREATE INDEX w_LIG_HONOR_i2 + ON w_LIG_HONOR + USING btree + (no_facture); + + CREATE INDEX w_LIG_HONOR_i3 + ON w_LIG_HONOR + USING btree + (NUM_LHO); + + CREATE INDEX w_LIG_HONOR_i4 + ON w_LIG_HONOR + USING btree + (key); + + + DROP TABLE IF EXISTS w_factures_last; + CREATE TEMP TABLE w_factures_last AS + SELECT no_sejour, + MAX(no_facture) AS no_facture, + MAX(CASE WHEN code_facture <> '1' THEN no_facture ELSE NULL END) AS no_facture_nf + FROM activite[PX].p_factures + GROUP BY 1; + + WITH update_lig_honor AS ( + SELECT + w_LIG_HONOR.no_facture, + CASE WHEN ACT_LHO <> 'ACPT' THEN COALESCE(w_factures_last.no_facture_nf,w_factures_last.no_facture) ELSE w_factures_last.no_facture END as new_no_facture + FROM w_LIG_HONOR + JOIN w_factures_last ON w_factures_last.no_sejour = w_LIG_HONOR.SEJ_DOS + LEFT JOIN activite[PX].p_factures ON p_factures.no_facture = w_LIG_HONOR.no_facture + WHERE p_factures.no_facture IS NULL + ) + UPDATE w_LIG_HONOR + SET no_facture = new_no_facture + FROM update_lig_honor + WHERE update_lig_honor.no_facture = w_LIG_HONOR.no_facture; + + DROP TABLE IF EXISTS w_LIG_HONOR_keys; + CREATE TEMP TABLE w_LIG_HONOR_keys AS + SELECT key, + ACT_LHO, + CCAM_ACTE, + CEX_LHO, + CPH_LHO, + 0::bigint AS prestation_id, + 0::bigint AS rubrique_facturation_id, + 0::bigint AS medecin_facture_id, + 0::bigint AS medecin_comptabilise_id, + 0::bigint AS acte_id + FROM w_LIG_HONOR + GROUP BY 1,2,3,4,5; + + UPDATE activite.t_prestations SET + code_original = ACT_LHO + FROM w_LIG_HONOR_keys + where t_prestations.code_original IS DISTINCT FROM ACT_LHO + AND t_prestations.code = ACT_LHO; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT ACT_LHO, ACT_LHO, ACT_LHO, ACT_LHO + FROM w_LIG_HONOR_keys + WHERE ACT_LHO <> '' AND + ACT_LHO NOT IN (SELECT code_original FROM activite.t_prestations WHERE code_original IS NOT NULL) + GROUP BY ACT_LHO + ORDER BY ACT_LHO; + + UPDATE activite.t_prestations SET + code = ACT_LHO, + texte = ACT_LHO, + texte_court = ACT_LHO + FROM w_LIG_HONOR_keys + WHERE code_original = ACT_LHO AND + ( + code IS DISTINCT FROM ACT_LHO OR + texte IS DISTINCT FROM ACT_LHO OR + texte_court IS DISTINCT FROM ACT_LHO + ) + ; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT ACT_LHO, ACT_LHO, ACT_LHO, ACT_LHO + FROM w_LIG_HONOR_keys + WHERE ACT_LHO <> '' AND + ACT_LHO NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + GROUP BY ACT_LHO + ORDER BY ACT_LHO + ; + + INSERT INTO base.t_actes(code, texte, texte_court, nomenclature, ccam_regroupement_id_1, ccam_regroupement_id_4) + SELECT substring(CCAM_ACTE, 1, 7), substring(CCAM_ACTE, 1, 7), substring(CCAM_ACTE, 1, 7), CASE WHEN length(CCAM_ACTE) >= 7 THEN 'CCAM' ELSE 'NGAP' END, + (SELECT oid FROM base.t_ccam_regroupements WHERE code = 'NGAP'), (SELECt oid FROM base.t_ccam_regroupements WHERE code = 'NGAP') + FROM w_LIG_HONOR_keys + WHERE substring(CCAM_ACTE, 1, 7) NOT IN (SELECT code FROM base.t_actes) AND length(CCAM_ACTE) < 7 + GROUP BY substring(CCAM_ACTE, 1, 7) ,CASE WHEN length(CCAM_ACTE) >= 7 THEN 'CCAM' ELSE 'NGAP' END + ORDER BY substring(CCAM_ACTE, 1, 7) ; + + + + + UPDATE w_LIG_HONOR_keys SET prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE ACT_LHO = t_prestations.code_original; + + UPDATE w_LIG_HONOR_keys SET rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + WHERE CPH_LHO = t_rubriques_facturation.code_original; + + UPDATE w_LIG_HONOR_keys SET + acte_id = t_actes.oid + FROM base.t_actes + WHERE substring(CCAM_ACTE, 1, 7) = t_actes.code; + + UPDATE w_LIG_HONOR_keys SET + medecin_facture_id = t_medecins_administratifs.oid, + medecin_comptabilise_id = t_medecins_administratifs.oid + FROM activite[PX].t_medecins_administratifs + WHERE CEX_LHO = t_medecins_administratifs.code_original; + + + CREATE INDEX w_LIG_HONOR_keys_i1 + ON w_LIG_HONOR_keys + USING btree + (key); + + + + TRUNCATE activite[PX].p_factures_lignes_non_facturees_h + ; + + INSERT INTO activite[PX].p_factures_lignes_non_facturees_h( + no_facture, + facture_id, + date_debut, + date_fin, + heure_debut, + nb_rubrique, + coefficient, + medecin_facture_id, + prestation_id, + rubrique_facturation_id, + prix_unitaire, + montant_depassement, + lieu_id, + acte_id, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4 + ) + + SELECT + p_factures.no_facture, + p_factures.oid AS facture_id, + date(DDE_LHO) AS date_debut, + date(DDE_LHO) AS date_fin, + to_number('00' || HEU_LHO, '0000') * 10000 AS heure_debut, + QTE_LHO AS nb_rubrique, + round(CASE WHEN COF_LHO <> 0 THEN COF_LHO ELSE 1.00 END::numeric,2) AS coefficient, + w_LIG_HONOR_keys.medecin_facture_id AS medecin_facture_id, + w_LIG_HONOR_keys.prestation_id AS prestation_id, + w_LIG_HONOR_keys.rubrique_facturation_id AS rubrique_facturation_id, + CASE WHEN (ML1_LHO + ML2_LHO + ML3_LHO) <> 0 AND (QTE_LHO * COF_LHO <> 0) THEN base.cti_division(ML1_LHO + ML2_LHO + ML3_LHO,QTE_LHO * COF_LHO) ELSE round(base.cti_division(BAR_LHO, QTE_LHO * COF_LHO),2) END AS prix_unitaire, + CASE WHEN DEP_LHO IN ('A', 'B', 'C', 'D', 'E', 'F', 'M', 'N') THEN TAR_LHO - BAR_LHO ELSE 0 END AS montant_depassement, + p_sejours.lieu_sortie_id AS lieu_id, + w_LIG_HONOR_keys.acte_id AS acte_id, + CCAM_PHASE AS phase_ccam, + CCAM_ACTIVITE AS activite_ccam, + CCAM_EXT_DOC AS extension_ccam, + CCAM_MODIF1 AS modificateur_ccam_1, + CCAM_MODIF2 AS modificateur_ccam_2, + CCAM_MODIF3 AS modificateur_ccam_3, + CCAM_MODIF4 AS modificateur_ccam_4 + FROM w_LIG_HONOR + JOIN activite[PX].p_factures ON w_LIG_HONOR.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON w_LIG_HONOR.SEJ_DOS = p_sejours.code_original + JOIN w_LIG_HONOR_keys ON w_LIG_HONOR.key = w_LIG_HONOR_keys.key + WHERE p_factures.code_facture <> '1' AND + (CASE WHEN (ML1_LHO + ML2_LHO + ML3_LHO) <> 0 AND (QTE_LHO * COF_LHO <> 0) THEN base.cti_division(ML1_LHO + ML2_LHO + ML3_LHO,QTE_LHO * COF_LHO) ELSE round(base.cti_division(BAR_LHO, QTE_LHO * COF_LHO),2) END) <> 0 + ; + + + + DROP TABLE IF EXISTS w_LIG_HONOR_tmrx; + CREATE TEMP TABLE w_LIG_HONOR_tmrx AS + SELECT no_facture, + SUM(MR1_LHO) AS MR1_LHO, + SUM(MR2_LHO) AS MR2_LHO, + SUM(MR3_LHO) AS MR3_LHO + FROM w_LIG_HONOR + LEFT JOIN prod_sigems.DOS2_LIEN_AVOIR DOS2_LIEN_AVOIR_F ON + DOS2_LIEN_AVOIR_F.ANN = ANN_LHO AND + DOS2_LIEN_AVOIR_F.COD = COD_LHO AND + DOS2_LIEN_AVOIR_F.IND = IND_LHO + LEFT JOIN prod_sigems.DOS2_LIEN_AVOIR DOS2_LIEN_AVOIR_A ON + DOS2_LIEN_AVOIR_A.ANN = ANN_LHO AND + DOS2_LIEN_AVOIR_A.COD = COD_LHO AND + DOS2_LIEN_AVOIR_A.IND_AVOIR = IND_LHO + WHERE ACT_LHO <> 'ECAC' AND + DOS2_LIEN_AVOIR_F.COD IS NULL AND + DOS2_LIEN_AVOIR_A.COD IS NULL + GROUP BY 1; + + CREATE INDEX w_LIG_HONOR_tmrx_i1 + ON w_LIG_HONOR_tmrx + USING btree + (no_facture); + + + UPDATE activite[PX].p_factures SET + montant_regle_h = w_LIG_HONOR_tmrx.MR1_LHO + w_LIG_HONOR_tmrx.MR2_LHO + w_LIG_HONOR_tmrx.MR3_LHO, + montant_regle_1_h = w_LIG_HONOR_tmrx.MR1_LHO + CASE WHEN tiers_payant_1_id = tiers_payant_2_id AND tiers_payant_1_id <> 0 THEN w_LIG_HONOR_tmrx.MR2_LHO ELSE 0 END, + montant_regle_2_h = CASE WHEN tiers_payant_1_id <> tiers_payant_2_id THEN w_LIG_HONOR_tmrx.MR2_LHO ELSE 0 END, + montant_regle_0_h = w_LIG_HONOR_tmrx.MR3_LHO + FROM w_LIG_HONOR_tmrx + WHERE p_factures.no_facture = w_LIG_HONOR_tmrx.no_facture AND + ( + montant_regle_h <> w_LIG_HONOR_tmrx.MR1_LHO + w_LIG_HONOR_tmrx.MR2_LHO + w_LIG_HONOR_tmrx.MR3_LHO OR + montant_regle_1_h <> (w_LIG_HONOR_tmrx.MR1_LHO + CASE WHEN tiers_payant_1_id = tiers_payant_2_id AND tiers_payant_1_id <> 0 THEN w_LIG_HONOR_tmrx.MR2_LHO ELSE 0 END) OR + montant_regle_2_h <> (CASE WHEN tiers_payant_1_id <> tiers_payant_2_id THEN w_LIG_HONOR_tmrx.MR2_LHO ELSE 0 END) OR + montant_regle_0_h <> w_LIG_HONOR_tmrx.MR3_LHO + ); + + + ]]> + + + + 0 THEN COF_LHO ELSE 1.00 END::numeric,2) AS coefficient, + 1::numeric AS coefficient_mco, + w_LIG_HONOR_keys.medecin_facture_id AS medecin_facture_id, + w_LIG_HONOR_keys.medecin_comptabilise_id AS medecin_comptabilise_id, + w_LIG_HONOR.ACT_LHO, + w_LIG_HONOR_keys.prestation_id AS prestation_id, + w_LIG_HONOR_keys.rubrique_facturation_id AS rubrique_facturation_id, + w_LIG_HONOR_keys.acte_id AS acte_id, + CCAM_ACTIVITE AS activite_ccam, + CCAM_EXT_DOC AS extension_ccam, + CCAM_PHASE AS phase_ccam, + CCAM_MODIF1 AS modificateur_ccam_1, + CCAM_MODIF2 AS modificateur_ccam_2, + CCAM_MODIF3 AS modificateur_ccam_3, + CCAM_MODIF4 AS modificateur_ccam_4, + ML1_LHO + ML2_LHO + ML3_LHO AS montant_facture, + ML3_LHO AS montant_facture_0, + ML1_LHO AS montant_facture_1, + ML2_LHO AS montant_facture_2, + 0::numeric AS montant_facture_22, + CASE WHEN DEP_LHO IN ('A', 'B', 'C', 'D', 'E', 'F', 'M', 'N') THEN TAR_LHO - BAR_LHO ELSE 0 END AS montant_depassement, + TX3_LHO AS taux_0, + TX1_LHO AS taux_1, + TX2_LHO AS taux_2, + 0::numeric AS taux_22, + round(base.cti_division(BAR_LHO, QTE_LHO * COF_LHO),2) AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id, + ML1_LHO + ML2_LHO + ML3_LHO AS montant_comptabilise, + ML3_LHO AS montant_comptabilise_0, + ML1_LHO + CASE WHEN p_factures.tiers_payant_1_id = p_factures.tiers_payant_2_id AND p_factures.tiers_payant_1_id <> 0 THEN ML2_LHO ELSE 0 END AS montant_comptabilise_1, + CASE WHEN p_factures.tiers_payant_1_id <> p_factures.tiers_payant_2_id THEN ML2_LHO ELSE 0 END AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + MR1_LHO + MR2_LHO + MR3_LHO AS montant_regle, + MR3_LHO AS montant_regle_0, + MR1_LHO + CASE WHEN p_factures.tiers_payant_1_id = p_factures.tiers_payant_2_id AND p_factures.tiers_payant_1_id <> 0 THEN MR2_LHO ELSE 0 END AS montant_regle_1, + CASE WHEN p_factures.tiers_payant_1_id <> p_factures.tiers_payant_2_id THEN MR2_LHO ELSE 0 END AS montant_regle_2, + 0::numeric AS montant_regle_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour + FROM w_LIG_HONOR + JOIN activite[PX].p_factures ON w_LIG_HONOR.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON w_LIG_HONOR.SEJ_DOS = p_sejours.code_original + JOIN w_LIG_HONOR_keys ON w_LIG_HONOR.key = w_LIG_HONOR_keys.key + LEFT JOIN w_REG3_LHO ON w_LIG_HONOR.NUM_LHO = w_REG3_LHO.LHO_REG3 + WHERE (p_factures.code_facture = '1' AND w_LIG_HONOR.non_facturee <> '1') OR + (w_LIG_HONOR.ACT_LHO <> 'ECAH' AND w_LIG_HONOR.ACT_LHO <> 'REGH') OR + w_REG3_LHO.LHO_REG3 IS NOT NULL; + ; + + + CREATE INDEX w_factures_lignes_h_i1 + ON w_factures_lignes_h + USING btree + (NUM_LHO); + + CREATE INDEX w_factures_lignes_h_i2 + ON w_factures_lignes_h + USING btree + (no_sejour); + + + -- Lieu exécution + + UPDATE w_factures_lignes_h + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_mouvements_sejour + WHERE + w_factures_lignes_h.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_lignes_h.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + w_factures_lignes_h.lieu_id <> p_mouvements_sejour.lieu_id; + + + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_9'); + + + + INSERT INTO activite[PX].p_factures_lignes_h ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + rubrique_facturation_id, + acte_id, + activite_ccam, + extension_ccam, + phase_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + rubrique_facturation_id, + acte_id, + activite_ccam, + extension_ccam, + phase_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour + FROM w_factures_lignes_h + WHERE code_facture = '1' AND ACT_LHO <> 'ACPT' ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_9'); + + + + + + ]]> + + + + + = '1' AND + p_factures.no_facture NOT LIKE '%BG' AND + t_rubriques_facturation.code NOT LIKE '%-TM' AND + t_rubriques_facturation.code NOT LIKE '%-LIB' AND + (montant_comptabilise_1 <> 0 OR montant_comptabilise_2 <> 0 OR montant_comptabilise_0 <> 0) + GROUP BY 1,2,3 + ; + + CREATE INDEX w_transform_ghm_honlib_i1 + ON w_transform_ghm_honlib + USING btree + (no_facture) + ; + CREATE INDEX w_transform_ghm_honlib_i2 + ON w_transform_ghm_honlib + USING btree + (rubrique_facturation_id) + ; + + + INSERT INTO activite[PX].t_rubriques_facturation (code_original, code, texte, texte_court) + SELECT t_rubriques_facturation.code_original || '-LIB', t_rubriques_facturation.code || '-LIB', 'Libéraux ' || t_rubriques_facturation.texte, 'Libéraux ' || t_rubriques_facturation.texte + FROM w_transform_ghm_honlib + JOIN activite[PX].t_rubriques_facturation ON rubrique_facturation_id = t_rubriques_facturation.oid + WHERE (t_rubriques_facturation.code_original || '-LIB') NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + GROUP BY 1,2,3,4 + ; + + UPDATE w_transform_ghm_honlib + SET rubrique_facturation_lib_id = t_rubriques_facturation_dep.oid + FROM activite[PX].t_rubriques_facturation + JOIN activite[PX].t_rubriques_facturation t_rubriques_facturation_dep ON (t_rubriques_facturation.code_original || '-LIB') = t_rubriques_facturation_dep.code_original + WHERE w_transform_ghm_honlib.rubrique_facturation_id = t_rubriques_facturation.oid + ; + + + UPDATE activite[PX].p_factures_lignes_h SET + rubrique_facturation_id = rubrique_facturation_lib_id, + rubrique_comptabilisation_id = rubrique_facturation_lib_id + FROM w_transform_ghm_honlib + WHERE p_factures_lignes_h.no_facture = w_transform_ghm_honlib.no_facture AND + p_factures_lignes_h.medecin_facture_id = w_transform_ghm_honlib.medecin_facture_id AND + p_factures_lignes_h.rubrique_facturation_id = w_transform_ghm_honlib.rubrique_facturation_id + ; + + -- ticket modérateur des actes hospitalisés + -- Transformation de la rubrique en rubrioque-TM pour isoler du chiffre d'affaires + DROP TABLE IF EXISTS w_transform_ghm_tmhosp; + CREATE TEMP TABLE w_transform_ghm_tmhosp AS + SELECT p_factures_lignes_h.no_facture, + rubrique_facturation_id, + 0::bigint AS rubrique_facturation_tm_id + FROM activite[PX].p_factures_lignes_h + JOIN activite[PX].p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_rubriques_facturation ON rubrique_facturation_id = t_rubriques_facturation.oid + WHERE type_sejour <> '3' AND + type_sejour <> '9' AND + code_facture >= '1' AND + p_factures.no_facture NOT LIKE '%BG' AND + t_rubriques_facturation.code NOT LIKE '%-TM' AND + t_rubriques_facturation.code NOT LIKE '%-LIB' AND + (montant_comptabilise_1 <> 0 OR montant_comptabilise_2 <> 0 OR montant_comptabilise_0 <> 0) + GROUP BY 1,2 + ; + + CREATE INDEX w_transform_ghm_tmhosp_i1 + ON w_transform_ghm_tmhosp + USING btree + (no_facture) + ; + CREATE INDEX w_transform_ghm_tmhosp_i2 + ON w_transform_ghm_tmhosp + USING btree + (rubrique_facturation_id) + ; + + + INSERT INTO activite[PX].t_rubriques_facturation (code_original, code, texte, texte_court) + SELECT t_rubriques_facturation.code_original || '-TM', t_rubriques_facturation.code || '-TM', 'Ticket modérateur ' || t_rubriques_facturation.texte, 'Ticket modérateur ' || t_rubriques_facturation.texte + FROM w_transform_ghm_tmhosp + JOIN activite[PX].t_rubriques_facturation ON rubrique_facturation_id = t_rubriques_facturation.oid + WHERE (t_rubriques_facturation.code_original || '-TM') NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + GROUP BY 1,2,3,4 + ; + + UPDATE w_transform_ghm_tmhosp + SET rubrique_facturation_tm_id = t_rubriques_facturation_dep.oid + FROM activite[PX].t_rubriques_facturation + JOIN activite[PX].t_rubriques_facturation t_rubriques_facturation_dep ON (t_rubriques_facturation.code_original || '-TM') = t_rubriques_facturation_dep.code_original + WHERE w_transform_ghm_tmhosp.rubrique_facturation_id = t_rubriques_facturation.oid + ; + + + UPDATE activite[PX].p_factures_lignes_h SET + rubrique_facturation_id = rubrique_facturation_tm_id, + rubrique_comptabilisation_id = rubrique_facturation_tm_id + FROM w_transform_ghm_tmhosp + WHERE p_factures_lignes_h.no_facture = w_transform_ghm_tmhosp.no_facture AND + p_factures_lignes_h.rubrique_facturation_id = w_transform_ghm_tmhosp.rubrique_facturation_id + ; + + ]]> + + + + 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5,6; + + + + INSERT INTO activite[PX].p_factures_soldes_h( + facture_id, + no_facture, + date_comptable, + medecin_comptabilise_id, + prestation_id, + rubrique_comptabilisee_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + + ) + SELECT + facture_id, + no_facture, + date(DAT_REG), + medecin_comptabilise_id, + prestation_id, + rubrique_facturation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(MR1_LHO + MR2_LHO + MR3_LHO) AS montant_regle, + SUM(MR3_LHO) AS montant_regle_0, + SUM(MR1_LHO) AS montant_regle_1, + SUM(MR2_LHO) AS montant_regle_2, + 0 AS montant_regle_22, + CASE WHEN is_acompte = '1' THEN '1' ELSE '0' END AS od_non_comptabilise + FROM w_factures_lignes_h + JOIN activite[PX].p_sejours ON w_factures_lignes_h.no_sejour = p_sejours.no_sejour AND p_sejours.est_budget_global IS DISTINCT FROM '1' + JOIN w_LIG_HONOR_mrx ON w_factures_lignes_h.NUM_LHO = w_LIG_HONOR_mrx.NUM_LHO + GROUP BY 1,2,3,4,5,6, is_acompte; + + -- Montants réguls ou depassement non affectés + INSERT INTO activite[PX].p_factures_soldes_h( + facture_id, + no_facture, + date_comptable, + medecin_comptabilise_id, + prestation_id, + rubrique_comptabilisee_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + DAT_REG AS date_comptable, + 0::bigint AS medecin_comptabilise_id, + 0::bigint AS prestation_id, + 0::bigint AS rubrique_comptabilisee_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(COALESCE(MON_REG2::numeric,0)) AS montant_regle, + SUM(CASE WHEN CAI_REG IS DISTINCT FROM CP1_DOS2 AND CAI_REG IS DISTINCT FROM CA2_DOS2 AND (CAI_REG <> ALL(CP1_DOS2_array) OR CP1_DOS2_array IS NULL) AND (CAI_REG <> ALL(CA2_DOS2_array) OR CA2_DOS2_array IS NULL) THEN COALESCE(MON_REG2::numeric,0) ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN CAI_REG = CP1_DOS2 OR CAI_REG = ANY(CP1_DOS2_array) THEN COALESCE(MON_REG2::numeric,0) ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN (CAI_REG = CA2_DOS2 OR CAI_REG = ANY(CA2_DOS2_array)) AND CAI_REG <> CP1_DOS2 THEN COALESCE(MON_REG2::numeric,0) ELSE 0 END) AS montant_regle_2, + 0::numeric AS montant_regle_22 + FROM prod_sigems.REG2 + JOIN prod_sigems.REG ON SER_REG2 = SER_REG + JOIN prod_sigems.DOS2 ON ANN_REG2 = ANN_DOS2 AND COD_REG2 = COD_DOS2 AND IND_REG2 = IND_DOS2 AND ETA_DOS2 >= 1 + JOIN activite[PX].p_factures ON no_facture = ANN_REG2 || to_char(COD_REG2,'FM900000') || '.' || to_char(IND_REG2,'FM00') + LEFT JOIN w_DOS2_TP ON ANN_REG2 = ANN_DOS2_TP AND COD_REG2 = COD_DOS2_TP + WHERE HOC_REG2 = 'a' + GROUP BY 1,2,3 + ; + + + -- Budget Global (sur ets) + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + facture_id, + no_facture, + date_vente, + rubrique_facturation_id, + prestation_id, + SUM(montant_comptabilise), + SUM(montant_comptabilise_0), + SUM(montant_comptabilise_1), + SUM(montant_comptabilise_2), + SUM(montant_comptabilise_22), + 0, + 0, + 0, + 0, + 0 + FROM w_factures_lignes_h + JOIN activite[PX].p_sejours ON w_factures_lignes_h.no_sejour = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + WHERE date_vente IS NOT NULL AND + code_facture = '1' AND + (montant_comptabilise <> 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5; + + + + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + facture_id, + no_facture, + date(DAT_REG), + rubrique_facturation_id, + prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(MR1_LHO + MR2_LHO + MR3_LHO) AS montant_regle, + SUM(MR3_LHO) AS montant_regle_0, + SUM(MR1_LHO) AS montant_regle_1, + SUM(MR2_LHO) AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_factures_lignes_h + JOIN activite[PX].p_sejours ON w_factures_lignes_h.no_sejour = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + JOIN w_LIG_HONOR_mrx ON w_factures_lignes_h.NUM_LHO = w_LIG_HONOR_mrx.NUM_LHO + GROUP BY 1,2,3,4,5; + + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_8'); + + + ]]> + + + + + 0 AND + p_sejours.ghm_id <= 0 AND + t_ghm_pmsi.code NOT LIKE '90%' AND + t_ghm_pmsi.code NOT LIKE '99%' + ; + + ANALYSE activite[PX].p_sejours; + ANALYSE activite[PX].p_factures; + ANALYSE activite[PX].p_factures_lignes_c; + + -- Mise à jour date début PMSI pour EXH + UPDATE pmsi.p_rsf_detail + SET date_debut = date_debut_new + FROM + ( + SELECT rss_id, prestation_id, date_debut, date_fin, nombre, date(date_sortie - (nombre||' days')::interval) AS date_debut_new + FROM pmsi.p_rsf_detail + JOIN pmsi.t_prestations on prestation_id = t_prestations.oid + JOIN pmsi.p_rss ON rss_id = p_rss.oid + WHERE t_prestations.code = 'EXH' AND + date_debut = date_entree AND + date(date_sortie - (nombre||' days')::interval) > date_entree + ) subview + WHERE p_rsf_detail.rss_id = subview.rss_id AND + p_rsf_detail.prestation_id = subview.prestation_id AND + p_rsf_detail.date_debut = subview.date_debut AND + p_rsf_detail.date_fin = subview.date_fin AND + p_rsf_detail.nombre = subview.nombre + ; + + -- Ajout des prestations PMSI aux prestations activité + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT + t_prestations_pmsi.code, + t_prestations_pmsi.code, + t_prestations_pmsi.texte, + t_prestations_pmsi.texte + FROM pmsi.p_rsf_detail + JOIN pmsi.p_rss ON p_rss.oid = p_rsf_detail.rss_id AND p_rss.etat = '' AND p_rss.en_cours = '0' + JOIN pmsi.t_prestations t_prestations_pmsi ON t_prestations_pmsi.oid = p_rsf_detail.prestation_id + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code = t_prestations_pmsi.code + WHERE est_ligne_rss = '1' AND p_rss.en_cours = '0' AND + operation_lamda IS DISTINCT FROM '1' AND + operation_lamda IS DISTINCT FROM '2' AND + t_rubriques_facturation.oid IS NULL + GROUP BY 1,2,3,4; + + -- Ajout des prestations PMSI aux rubriques activité + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT + t_prestations_pmsi.code, + t_prestations_pmsi.code, + t_prestations_pmsi.texte, + t_prestations_pmsi.texte + FROM pmsi.p_rsf_detail + JOIN pmsi.p_rss ON p_rss.oid = p_rsf_detail.rss_id AND p_rss.etat = '' AND p_rss.en_cours = '0' + JOIN pmsi.t_prestations t_prestations_pmsi ON t_prestations_pmsi.oid = p_rsf_detail.prestation_id + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite.t_prestations t_prestations_activite ON t_prestations_activite.code = t_prestations_pmsi.code + WHERE est_ligne_rss = '1' AND p_rss.en_cours = '0' AND + operation_lamda IS DISTINCT FROM '1' AND + operation_lamda IS DISTINCT FROM '2' AND + t_prestations_activite.oid IS NULL + GROUP BY 1,2,3,4; + + -- Lignes PMSI à ajouter + DROP TABLE IF EXISTS w_factures_lignes_pmsi; + CREATE TEMP TABLE w_factures_lignes_pmsi AS + SELECT + row_number() OVER() AS sequence, + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour || '.BG' AS no_facture, + 0::bigint AS facture_id, + p_rss.traitement_epmsi, + CASE WHEN p_rsf_detail.type = 'C' THEN 'H' ELSE 'C' END AS clinique_honoraire, + p_rsf_detail.date_debut, + CASE WHEN p_sejours.type_sejour <> '5' THEN p_rsf_detail.date_fin ELSE p_rsf_detail.date_debut END AS date_fin, + p_rsf_detail.nombre AS nb_rubrique, + p_rsf_detail.nombre AS nb_prestation, + p_rsf_detail.coefficient AS coefficient, + p_rsf_detail.coefficient_mco, + COALESCE(t_rubriques_facturation.oid,0::bigint) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid,0::bigint) AS rubrique_comptabilisation_id, + COALESCE(t_prestations_activite.oid,0::bigint) AS prestation_id, + CASE WHEN p_rss.traitement_epmsi IN ('30','31','32','33') THEN p_rsf_detail.sejour_remboursable ELSE 0 END AS montant_facture, + 0::numeric AS montant_facture_0, + CASE WHEN p_rss.traitement_epmsi IN ('30','31','32','33') THEN p_rsf_detail.sejour_remboursable ELSE 0 END AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + 0::numeric AS taux_0, + p_rsf_detail.taux_remboursement AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_22, + p_rsf_detail.prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + CASE WHEN p_rsf_detail.type = 'C' THEN 2::bigint ELSE 1::bigint END AS origine_facturation_id, + CASE WHEN p_rss.traitement_epmsi IN ('30','31','32','33') THEN p_rsf_detail.sejour_remboursable ELSE 0 END AS montant_comptabilise_budget_global_1, + 0::numeric AS protocole_id, + 0::numeric AS compte_produit_id, + t_prestations_pmsi.code AS prestation_code, + ''::text AS uf_code, + ''::text AS dmt_code, + ''::text AS mt_code + FROM pmsi.p_rsf_detail + JOIN pmsi.p_rss ON p_rss.oid = p_rsf_detail.rss_id AND p_rss.etat = '' AND p_rss.en_cours = '0' + JOIN pmsi.t_prestations t_prestations_pmsi ON t_prestations_pmsi.oid = p_rsf_detail.prestation_id + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejour_pmsi ON p_rss.oid = p_sejour_pmsi.rss_id + JOIN activite[PX].p_sejours on p_sejour_pmsi.no_sejour = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite.t_prestations t_prestations_activite ON t_prestations_activite.code = t_prestations_pmsi.code + LEFT JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code = t_prestations_pmsi.code + WHERE est_ligne_rss = '1' AND p_rss.en_cours = '0' AND + p_rss.etat = '' AND + operation_lamda IS DISTINCT FROM '1' AND + operation_lamda IS DISTINCT FROM '2' AND + p_rsf_detail.fides_detail = 0 + ; + + -- Eclatement des supplements par jour + DROP TABLE IF EXISTS w_factures_lignes_pmsi_sup_c; + + CREATE TEMP TABLE w_factures_lignes_pmsi_sup_c AS + SELECT + date(p_sejours.date_entree) AS date_debut_ghs, + date(p_sejours.date_sortie - interval '1 day') AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN t_prestations.code = 'GHS' THEN date(date_entree + interval '1 day') ELSE date(date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN t_prestations.code = 'GHS' THEN date(p_sejours.date_sortie - interval '1 day') ELSE date(date_debut + ((ABS(nb_prestation)-1)||' days')::interval) END AS date_fin_det, + ABS(CASE WHEN t_prestations.code = 'GHS' THEN date(date_sortie) - date(date_entree) ELSE nb_prestation END) AS nb_det, + w_factures_lignes_pmsi.* + FROM w_factures_lignes_pmsi + JOIN activite[PX].p_sejours ON w_factures_lignes_pmsi.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + ( + code IN ('PJ', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (t_prestations.code = 'GHS' AND p_sejours.type_sejour != '5' AND date(date_sortie) - date(date_entree) > 1)) + ; + + + UPDATE w_factures_lignes_pmsi_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM w_factures_lignes_pmsi + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_pmsi_sup_c.no_facture = subview.no_facture AND + w_factures_lignes_pmsi_sup_c.prestation_code = 'GHS'; + + CREATE INDEX w_factures_lignes_pmsi_sup_c_i1 + ON w_factures_lignes_pmsi_sup_c + USING btree + (date_debut); + + DROP TABLE IF EXISTS w_factures_lignes_pmsi_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_pmsi_sup_c_sup AS + SELECT sequence, + w_factures_lignes_pmsi_sup_c.no_sejour, + w_factures_lignes_pmsi_sup_c.sejour_id, + w_factures_lignes_pmsi_sup_c.no_facture, + w_factures_lignes_pmsi_sup_c.facture_id, + w_factures_lignes_pmsi_sup_c.traitement_epmsi, + w_factures_lignes_pmsi_sup_c.clinique_honoraire, + p_calendrier.date AS date_debut, + p_calendrier.date AS date_fin, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + w_factures_lignes_pmsi_sup_c.coefficient, + w_factures_lignes_pmsi_sup_c.coefficient_mco, + w_factures_lignes_pmsi_sup_c.rubrique_facturation_id, + w_factures_lignes_pmsi_sup_c.rubrique_comptabilisation_id, + w_factures_lignes_pmsi_sup_c.prestation_id, + round(montant_facture / ABS(nb_det),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22, + w_factures_lignes_pmsi_sup_c.taux_0, + w_factures_lignes_pmsi_sup_c.taux_1, + w_factures_lignes_pmsi_sup_c.taux_2, + w_factures_lignes_pmsi_sup_c.taux_22, + w_factures_lignes_pmsi_sup_c.prix_unitaire, + w_factures_lignes_pmsi_sup_c.lieu_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + w_factures_lignes_pmsi_sup_c.origine_facturation_id, + round(montant_comptabilise_budget_global_1 / ABS(nb_det),2) AS montant_comptabilise_budget_global_1, + w_factures_lignes_pmsi_sup_c.protocole_id, + w_factures_lignes_pmsi_sup_c.compte_produit_id, + w_factures_lignes_pmsi_sup_c.prestation_code, + w_factures_lignes_pmsi_sup_c.uf_code, + w_factures_lignes_pmsi_sup_c.dmt_code, + w_factures_lignes_pmsi_sup_c.mt_code + FROM w_factures_lignes_pmsi_sup_c + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_det AND date_fin_det + ; + + DROP TABLE IF EXISTS w_factures_lignes_pmsi_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_pmsi_sup_c_sup_tot AS + + SELECT sequence, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_pmsi_sup_c_sup + GROUP BY 1; + + + UPDATE w_factures_lignes_pmsi + SET + date_fin = w_factures_lignes_pmsi.date_debut, + nb_rubrique = w_factures_lignes_pmsi.nb_rubrique - w_factures_lignes_pmsi_sup_c_sup_tot.nb_rubrique, + nb_prestation = w_factures_lignes_pmsi.nb_prestation - w_factures_lignes_pmsi_sup_c_sup_tot.nb_prestation, + montant_facture = w_factures_lignes_pmsi.montant_facture - w_factures_lignes_pmsi_sup_c_sup_tot.montant_facture, + montant_facture_0 = w_factures_lignes_pmsi.montant_facture_0 - w_factures_lignes_pmsi_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = w_factures_lignes_pmsi.montant_facture_1 - w_factures_lignes_pmsi_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = w_factures_lignes_pmsi.montant_facture_2 - w_factures_lignes_pmsi_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = w_factures_lignes_pmsi.montant_facture_22 - w_factures_lignes_pmsi_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = w_factures_lignes_pmsi.montant_comptabilise - w_factures_lignes_pmsi_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = w_factures_lignes_pmsi.montant_comptabilise_0 - w_factures_lignes_pmsi_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = w_factures_lignes_pmsi.montant_comptabilise_1 - w_factures_lignes_pmsi_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = w_factures_lignes_pmsi.montant_comptabilise_2 - w_factures_lignes_pmsi_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = w_factures_lignes_pmsi.montant_comptabilise_22 - w_factures_lignes_pmsi_sup_c_sup_tot.montant_comptabilise_22, + montant_encours = w_factures_lignes_pmsi.montant_encours - w_factures_lignes_pmsi_sup_c_sup_tot.montant_encours, + montant_encours_0 = w_factures_lignes_pmsi.montant_encours_0 - w_factures_lignes_pmsi_sup_c_sup_tot.montant_encours_0, + montant_encours_1 = w_factures_lignes_pmsi.montant_encours_1 - w_factures_lignes_pmsi_sup_c_sup_tot.montant_encours_1, + montant_encours_2 = w_factures_lignes_pmsi.montant_encours_2 - w_factures_lignes_pmsi_sup_c_sup_tot.montant_encours_2, + montant_encours_22 = w_factures_lignes_pmsi.montant_encours_22 - w_factures_lignes_pmsi_sup_c_sup_tot.montant_encours_22, + montant_facture_actes_inclus_dans_sejour = w_factures_lignes_pmsi.montant_facture_actes_inclus_dans_sejour - w_factures_lignes_pmsi_sup_c_sup_tot.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = w_factures_lignes_pmsi.montant_facture_0_actes_inclus_dans_sejour - w_factures_lignes_pmsi_sup_c_sup_tot.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = w_factures_lignes_pmsi.montant_facture_1_actes_inclus_dans_sejour - w_factures_lignes_pmsi_sup_c_sup_tot.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = w_factures_lignes_pmsi.montant_facture_2_actes_inclus_dans_sejour - w_factures_lignes_pmsi_sup_c_sup_tot.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = w_factures_lignes_pmsi.montant_facture_22_actes_inclus_dans_sejour - w_factures_lignes_pmsi_sup_c_sup_tot.montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 = w_factures_lignes_pmsi.montant_comptabilise_budget_global_1 - w_factures_lignes_pmsi_sup_c_sup_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_pmsi_sup_c_sup_tot + WHERE w_factures_lignes_pmsi.sequence = w_factures_lignes_pmsi_sup_c_sup_tot.sequence; + + + + INSERT INTO w_factures_lignes_pmsi( + sequence, + no_sejour, + sejour_id, + no_facture, + facture_id, + traitement_epmsi, + clinique_honoraire, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + protocole_id, + compte_produit_id, + prestation_code, + uf_code, + dmt_code, + mt_code + ) + SELECT + sequence, + no_sejour, + sejour_id, + no_facture, + facture_id, + traitement_epmsi, + clinique_honoraire, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + protocole_id, + compte_produit_id, + prestation_code, + uf_code, + dmt_code, + mt_code + FROM w_factures_lignes_pmsi_sup_c_sup + ; + + -- compte + UPDATE w_factures_lignes_pmsi + SET uf_code = t_unites_fonctionnelles.code, + dmt_code = CASE WHEN t_dmt.oid <> 0 THEN t_dmt.code ELSE '' END, + mt_code = CASE WHEN t_modes_traitement.oid <> 0 THEN CASE WHEN t_modes_traitement.code <> '23' THEN t_modes_traitement.code ELSE '04' END ELSE '' END + FROM activite[PX].t_lieux + JOIN activite[PX].t_unites_fonctionnelles ON unite_fonctionnelle_id = t_unites_fonctionnelles.oid + JOIN activite[PX].t_services_facturation On service_facturation_id = t_services_facturation.oid + JOIN base.t_dmt ON dmt_id = t_dmt.oid + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + WHERE lieu_id = t_lieux.oid; + + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = prestation_code AND + SER_ANA = uf_code AND + DMT_ANA = dmt_code AND + MDT_ANA = mt_code AND + CPT_ANA <> ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = prestation_code AND + SER_ANA = uf_code AND + DMT_ANA = '' AND + MDT_ANA = mt_code AND + CPT_ANA <> ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = prestation_code AND + SER_ANA = uf_code AND + DMT_ANA = dmt_code AND + MDT_ANA = '' AND + CPT_ANA <> ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = prestation_code AND + SER_ANA = uf_code AND + DMT_ANA = '' AND + MDT_ANA = '' AND + CPT_ANA <> ''; + + + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = prestation_code AND + SER_ANA = '' AND + DMT_ANA = dmt_code AND + MDT_ANA = mt_code AND + CPT_ANA <> ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = prestation_code AND + SER_ANA = '' AND + DMT_ANA = '' AND + MDT_ANA = mt_code AND + CPT_ANA <> ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = prestation_code AND + SER_ANA = '' AND + DMT_ANA = dmt_code AND + MDT_ANA = '' AND + CPT_ANA <> ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = prestation_code AND + SER_ANA = '' AND + DMT_ANA = '' AND + MDT_ANA = '' AND + CPT_ANA <> ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems.PROD_CLINI + JOIN activite[PX].t_compte ON AFA_PRC = t_compte.code + WHERE compte_produit_id = 0 AND + COD_PRC = prestation_code; + + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems.PROD_CLINI + JOIN activite[PX].t_compte ON AFA_PRC = t_compte.code + WHERE compte_produit_id = 0 AND + LIB_PRC = prestation_code; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = trim(substr(prestation_code,1,4)) AND + SER_ANA = '' AND + DMT_ANA = '' AND + MDT_ANA = '' AND + CPT_ANA <> ''; + + CREATE INDEX w_factures_lignes_pmsi_i1 + ON w_factures_lignes_pmsi + USING btree + (no_sejour); + + + -- Factures de base + DROP TABLE IF EXISTS w_factures_pmsi_base; + CREATE TEMP TABLE w_factures_pmsi_base AS + SELECT p_factures.no_sejour, + (MAX(Array[CASE WHEN p_factures.code_facture <> '0' THEN p_factures.date_facture ELSE '00010101' END::text,p_factures.no_facture]))[2] AS no_facture_base + FROM pmsi.p_rss + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejour_pmsi ON p_rss.oid = p_sejour_pmsi.rss_id + JOIN activite[PX].p_sejours on p_sejour_pmsi.no_sejour = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour + WHERE p_rss.etat = '' AND + p_rss.en_cours = '0' + GROUP BY 1; + + CREATE INDEX w_factures_pmsi_base_i1 + ON w_factures_pmsi_base + USING btree + (no_sejour); + + CREATE INDEX w_factures_pmsi_base_i2 + ON w_factures_pmsi_base + USING btree + (no_facture_base); + + -- Factures à créer + DROP TABLE IF EXISTS w_factures_pmsi; + CREATE TEMP TABLE w_factures_pmsi AS + SELECT + w_factures_lignes_pmsi.no_sejour, + w_factures_lignes_pmsi.sejour_id, + w_factures_lignes_pmsi.no_facture, + p_sejours.date_entree AS date_debut, + p_sejours.date_sortie AS date_fin, + '0'::text AS type_facture, + MAX(CASE WHEN w_factures_lignes_pmsi.traitement_epmsi IN ('30','31','32','33') THEN '1'::text ELSE '0' END) AS code_facture, + MAX(CASE + WHEN p_factures_base.date_facture IS NULL THEN p_sejours.date_sortie + WHEN p_factures_base.date_facture <> '20991231' THEN p_factures_base.date_facture + WHEN p_sejours.date_groupage <> '20991231' THEN p_sejours.date_groupage + ELSE p_sejours.date_sortie END)::date AS date_facture, + MAX(COALESCE(p_factures_base.code_vente,'1')) AS code_vente, + MAX(COALESCE(p_factures_base.mois_vente,209912)) AS mois_vente, + MAX(COALESCE(p_factures_base.date_facture,p_sejours.date_sortie)) AS date_solde, + '0'::text AS particularite_t2a, + MAX(COALESCE(p_factures_base.date_vente,p_sejours.date_sortie)) AS date_vente, + ''::text AS code_cloture, + MAX(p_sejours.code_cp_demandee) AS code_cp_demandee, + '20991231'::date AS date_encours, + MAX(p_sejours.ghs_id) AS ghs_id, + MAX(p_sejours.ghs_bebe1_id) AS ghs_bebe1_id, + MAX(p_sejours.ghs_bebe2_id) AS ghs_bebe2_id, + MAX(p_sejours.ghs_bebe3_id) AS ghs_bebe3_id, + MAX(p_sejours.ghm_id) AS ghm_id, + SUM(montant_facture) AS montant_facture_c, + 0::numeric AS montant_facture_h, + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + '20991231'::date AS date_expedition, + 0::numeric AS delai_expedition, + MAX(p_sejours.tiers_payant_1_id) AS tiers_payant_1_id, + MAX(p_sejours.tiers_payant_2_id) AS tiers_payant_2_id, + MAX(p_sejours.tiers_payant_22_id) AS tiers_payant_22_id, + MAX(p_sejours.tiers_payant_0_id) AS tiers_payant_0_id, + '20991231'::date AS date_solde_0_c, + '20991231'::date AS date_solde_0_h, + '20991231'::date AS date_solde_1_c, + '20991231'::date AS date_solde_1_h, + '20991231'::date AS date_solde_2_c, + '20991231'::date AS date_solde_2_h, + '20991231'::date AS date_solde_22_c, + '20991231'::date AS date_solde_22_h, + '20991231'::date AS date_expedition_0, + '20991231'::date AS date_expedition_1, + '20991231'::date AS date_expedition_2, + '20991231'::date AS date_expedition_22, + '0'::text AS code_expedie_0, + '0'::text AS code_expedie_1, + '0'::text AS code_expedie_2, + '0'::text AS code_expedie_22, + ''::text AS no_bordereau_0, + ''::text AS no_bordereau_1, + ''::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + 0::numeric AS montant_facture_0_c, + 0::numeric AS montant_facture_0_h, + SUM(montant_facture) AS montant_facture_1_c, + 0::numeric AS montant_facture_1_h, + 0::numeric AS montant_facture_2_c, + 0::numeric AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + 0::numeric AS montant_regle_1_h, + 0::numeric AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + 0::numeric AS nb_rejets, + 0::numeric AS montant_comptabilise_c, + 0::numeric AS montant_comptabilise_h, + 0::numeric AS montant_comptabilise_0_c, + 0::numeric AS montant_comptabilise_0_h, + 0::numeric AS montant_comptabilise_1_c, + 0::numeric AS montant_comptabilise_1_h, + 0::numeric AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + w_factures_lignes_pmsi.no_facture AS no_facture_reference, + 0::bigint AS facture_reference_id, + '20991231'::date AS date_solde_reference, + '20991231'::date AS date_solde_reference_c, + '20991231'::date AS date_solde_reference_h, + '20991231'::date AS date_solde_reference_0_c, + '20991231'::date AS date_solde_reference_1_c, + '20991231'::date AS date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + '20991231'::date AS date_solde_reference_0_h, + '20991231'::date AS date_solde_reference_1_h, + '20991231'::date AS date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h, + '20991231'::date AS date_solde_c, + '20991231'::date AS date_solde_h, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_c, + '' AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id + FROM w_factures_lignes_pmsi + JOIN activite[PX].p_sejours ON w_factures_lignes_pmsi.no_sejour = p_sejours.no_sejour + JOIN w_factures_pmsi_base ON w_factures_lignes_pmsi.no_sejour = w_factures_pmsi_base.no_sejour + LEFT JOIN activite[PX].p_factures p_factures_base ON w_factures_pmsi_base.no_facture_base = p_factures_base.no_facture AND 1 <> 1 + GROUP BY 1,2,3,4,5; + + INSERT INTO w_factures_pmsi + SELECT + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour || '.BG', + p_sejours.date_entree AS date_debut, + p_sejours.date_sortie AS date_fin, + '0'::text AS type_facture, + '1'::text AS code_facture, + MAX(CASE + WHEN p_sejours.date_groupage <> '20991231' THEN p_sejours.date_groupage + ELSE p_sejours.date_sortie END)::date AS date_facture, + '1' AS code_vente, + 209912 AS mois_vente, + '20991231' AS date_solde, + '0'::text AS particularite_t2a, + '20991231' AS date_vente, + ''::text AS code_cloture, + MAX(p_sejours.code_cp_demandee) AS code_cp_demandee, + '20991231'::date AS date_encours, + MAX(p_sejours.ghs_id) AS ghs_id, + MAX(p_sejours.ghs_bebe1_id) AS ghs_bebe1_id, + MAX(p_sejours.ghs_bebe2_id) AS ghs_bebe2_id, + MAX(p_sejours.ghs_bebe3_id) AS ghs_bebe3_id, + MAX(p_sejours.ghm_id) AS ghm_id, + 0 AS montant_facture_c, + 0::numeric AS montant_facture_h, + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + '20991231'::date AS date_expedition, + 0::numeric AS delai_expedition, + MAX(p_sejours.tiers_payant_1_id) AS tiers_payant_1_id, + MAX(p_sejours.tiers_payant_2_id) AS tiers_payant_2_id, + MAX(p_sejours.tiers_payant_22_id) AS tiers_payant_22_id, + MAX(p_sejours.tiers_payant_0_id) AS tiers_payant_0_id, + '20991231'::date AS date_solde_0_c, + '20991231'::date AS date_solde_0_h, + '20991231'::date AS date_solde_1_c, + '20991231'::date AS date_solde_1_h, + '20991231'::date AS date_solde_2_c, + '20991231'::date AS date_solde_2_h, + '20991231'::date AS date_solde_22_c, + '20991231'::date AS date_solde_22_h, + '20991231'::date AS date_expedition_0, + '20991231'::date AS date_expedition_1, + '20991231'::date AS date_expedition_2, + '20991231'::date AS date_expedition_22, + '0'::text AS code_expedie_0, + '0'::text AS code_expedie_1, + '0'::text AS code_expedie_2, + '0'::text AS code_expedie_22, + ''::text AS no_bordereau_0, + ''::text AS no_bordereau_1, + ''::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + 0::numeric AS montant_facture_0_c, + 0::numeric AS montant_facture_0_h, + 0::numeric AS montant_facture_1_c, + 0::numeric AS montant_facture_1_h, + 0::numeric AS montant_facture_2_c, + 0::numeric AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + 0::numeric AS montant_regle_1_h, + 0::numeric AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + 0::numeric AS nb_rejets, + 0::numeric AS montant_comptabilise_c, + 0::numeric AS montant_comptabilise_h, + 0::numeric AS montant_comptabilise_0_c, + 0::numeric AS montant_comptabilise_0_h, + 0::numeric AS montant_comptabilise_1_c, + 0::numeric AS montant_comptabilise_1_h, + 0::numeric AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + p_sejours.no_sejour || '.BG' AS no_facture_reference, + 0::bigint AS facture_reference_id, + '20991231'::date AS date_solde_reference, + '20991231'::date AS date_solde_reference_c, + '20991231'::date AS date_solde_reference_h, + '20991231'::date AS date_solde_reference_0_c, + '20991231'::date AS date_solde_reference_1_c, + '20991231'::date AS date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + '20991231'::date AS date_solde_reference_0_h, + '20991231'::date AS date_solde_reference_1_h, + '20991231'::date AS date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h, + '20991231'::date AS date_solde_c, + '20991231'::date AS date_solde_h, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_c, + '' AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id + FROM pmsi.p_rss + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN w_factures_pmsi ON p_sejours.no_sejour = w_factures_pmsi.no_sejour + WHERE p_rss.en_cours = '0' AND + p_rss.etat = '' AND + p_rss.traitement_epmsi IN ('30','31','32','33') AND + w_factures_pmsi.no_facture IS NULL AND + p_sejours.date_sortie >= '[ENV_ADM_ANNEEDEBUT]0101' AND + p_sejours.no_sejour NOT IN + ( + SELECT p_factures.no_sejour + FROM activite[PX].p_factures + WHERE montant_facture_1_c <> 0 + ) + GROUP BY 1,2,3,4,5; + + + UPDATE w_factures_pmsi + SET date_vente = date_facture, mois_vente = date_part('year',date_facture)*100 + date_part('month',date_facture) + WHERE date_vente = '20991231' AND + code_facture = '1'; + + UPDATE w_factures_pmsi + SET date_solde = date_facture + WHERE date_vente IS DISTINCT FROM date_facture; + + + -- Ajout des factures + INSERT INTO activite[PX].p_factures + (no_sejour, no_facture, date_debut, date_fin, type_facture, + code_facture, date_facture, code_vente, mois_vente, date_solde, + montant_facture_c, montant_facture_h, montant_regle_c, montant_regle_h, + delai_facture, delai_solde, date_expedition, delai_expedition, + tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, tiers_payant_0_id, + date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, + date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h, + date_expedition_0, date_expedition_1, date_expedition_2, date_expedition_22, + code_expedie_0, code_expedie_1, code_expedie_2, code_expedie_22, + no_bordereau_0, no_bordereau_1, no_bordereau_2, no_bordereau_22, + montant_facture_0_c, montant_facture_0_h, montant_facture_1_c, + montant_facture_1_h, montant_facture_2_c, montant_facture_2_h, + montant_facture_22_c, montant_facture_22_h, montant_regle_0_c, + montant_regle_0_h, montant_regle_1_c, montant_regle_1_h, montant_regle_2_c, + montant_regle_2_h, montant_regle_22_c, montant_regle_22_h, delai_expedition_0, + delai_expedition_1, delai_expedition_2, delai_expedition_22, + delai_solde_0_c, delai_solde_0_h, delai_solde_1_c, delai_solde_1_h, + delai_solde_2_c, delai_solde_2_h, delai_solde_22_c, delai_solde_22_h, + ghs_id, particularite_t2a, date_vente, code_cloture, montant_encours_c, + montant_encours_0_c, montant_encours_1_c, montant_encours_2_c, + montant_encours_22_c, montant_encours_h, montant_encours_0_h, + montant_encours_1_h, montant_encours_2_h, montant_encours_22_h, + code_cp_demandee, date_encours, ghs_bebe1_id, ghs_bebe2_id, ghs_bebe3_id, + nb_rejets, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0_c, + montant_comptabilise_0_h, montant_comptabilise_1_c, montant_comptabilise_1_h, + montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_22_c, + montant_comptabilise_22_h, no_facture_reference, date_solde_reference, + date_solde_reference_c, date_solde_reference_h, date_solde_reference_0_c, + date_solde_reference_1_c, date_solde_reference_2_c, date_solde_reference_22_c, + date_solde_reference_0_h, date_solde_reference_1_h, date_solde_reference_2_h, + date_solde_reference_22_h, date_solde_c, date_solde_h, montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, montant_comptabilise_budget_global_c, + no_facture_od_avoir, sejour_id, facture_reference_id, facture_od_avoir_id, + ghm_id) + SELECt no_sejour, no_facture, date_debut, date_fin, type_facture, + code_facture, date_facture, code_vente, mois_vente, date_solde, + montant_facture_c, montant_facture_h, montant_regle_c, montant_regle_h, + delai_facture, delai_solde, date_expedition, delai_expedition, + tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, tiers_payant_0_id, + date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, + date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h, + date_expedition_0, date_expedition_1, date_expedition_2, date_expedition_22, + code_expedie_0, code_expedie_1, code_expedie_2, code_expedie_22, + no_bordereau_0, no_bordereau_1, no_bordereau_2, no_bordereau_22, + montant_facture_0_c, montant_facture_0_h, montant_facture_1_c, + montant_facture_1_h, montant_facture_2_c, montant_facture_2_h, + montant_facture_22_c, montant_facture_22_h, montant_regle_0_c, + montant_regle_0_h, montant_regle_1_c, montant_regle_1_h, montant_regle_2_c, + montant_regle_2_h, montant_regle_22_c, montant_regle_22_h, delai_expedition_0, + delai_expedition_1, delai_expedition_2, delai_expedition_22, + delai_solde_0_c, delai_solde_0_h, delai_solde_1_c, delai_solde_1_h, + delai_solde_2_c, delai_solde_2_h, delai_solde_22_c, delai_solde_22_h, + ghs_id, particularite_t2a, date_vente, code_cloture, montant_encours_c, + montant_encours_0_c, montant_encours_1_c, montant_encours_2_c, + montant_encours_22_c, montant_encours_h, montant_encours_0_h, + montant_encours_1_h, montant_encours_2_h, montant_encours_22_h, + code_cp_demandee, date_encours, ghs_bebe1_id, ghs_bebe2_id, ghs_bebe3_id, + nb_rejets, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0_c, + montant_comptabilise_0_h, montant_comptabilise_1_c, montant_comptabilise_1_h, + montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_22_c, + montant_comptabilise_22_h, no_facture_reference, date_solde_reference, + date_solde_reference_c, date_solde_reference_h, date_solde_reference_0_c, + date_solde_reference_1_c, date_solde_reference_2_c, date_solde_reference_22_c, + date_solde_reference_0_h, date_solde_reference_1_h, date_solde_reference_2_h, + date_solde_reference_22_h, date_solde_c, date_solde_h, montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, montant_comptabilise_budget_global_c, + no_facture_od_avoir, sejour_id, facture_reference_id, facture_od_avoir_id, + ghm_id + FROM w_factures_pmsi; + + + + -- Ajout des lignes + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, date_debut, date_fin, nb_rubrique, coefficient, coefficient_mco, + rubrique_facturation_id, prestation_id, montant_facture, montant_facture_0, + montant_facture_1, montant_facture_2, montant_facture_22, taux_0, + taux_1, taux_2, taux_22, finess, prix_unitaire, lieu_id, nb_prestation, + montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, + montant_comptabilise_2, montant_comptabilise_22, rubrique_comptabilisation_id, + montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, + montant_encours_22, montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, montant_comptabilise_budget_global_1, + facture_id, protocole_id, compte_produit_id) + SELECT + p_factures.no_facture, w_factures_lignes_pmsi.date_debut, w_factures_lignes_pmsi.date_fin, nb_rubrique, coefficient, coefficient_mco, + rubrique_facturation_id, prestation_id, montant_facture, montant_facture_0, + montant_facture_1, montant_facture_2, montant_facture_22, taux_0, + taux_1, taux_2, taux_22, finess, prix_unitaire, lieu_id, nb_prestation, + montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, + montant_comptabilise_2, montant_comptabilise_22, rubrique_comptabilisation_id, + montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, + montant_encours_22, montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, montant_comptabilise_budget_global_1, + p_factures.oid AS facture_id, protocole_id, compte_produit_id + FROM w_factures_lignes_pmsi + JOIN activite[PX].p_factures ON w_factures_lignes_pmsi.no_facture = p_factures.no_facture ; + + -- Lieu exécution + UPDATE activite[PX].p_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_factures , + activite[PX].p_mouvements_sejour + WHERE + p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour = p_mouvements_sejour.no_sejour AND + p_factures_lignes_c.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + p_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + + -- En cours PMSI public + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id) + SELECT + p_sejours.oid, + p_sejours.no_sejour, + MAX(p_sejours.no_sejour || '.BG'), + MAX(p_sejours.no_sejour || '.BG'), + MAX(p_sejours.date_entree), + MAX(p_sejours.date_sortie), + '0', + '0', + '20991231'::date, + MAX(p_sejours.tiers_payant_0_id), + MAX(p_sejours.tiers_payant_1_id), + MAX(p_sejours.tiers_payant_2_id), + MAX(p_sejours.tiers_payant_22_id), + MAX(p_sejours.ghs_id), + MAX(p_sejours.ghs_bebe1_id), + MAX(p_sejours.ghs_bebe2_id), + MAX(p_sejours.ghs_bebe3_id) + FROM pmsi.p_rss + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + JOIN base.t_ghm On p_sejours.ghm_id = t_ghm.oid + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND p_factures.no_facture LIKE '%BG' + WHERE p_rss.en_cours = '1' AND p_factures.no_facture IS NULL AND + p_sejours.type_sejour IN ('1','2','5') AND + t_ghm.code NOT IN ('09Z02A') + GROUP BY 1,2; + + -- Sejours BG PMSi qui ne sont pas dans les RSS + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id) + SELECT p_sejours.oid, + p_sejours.no_sejour, + p_sejours.no_sejour || '.BG', + p_sejours.no_sejour || '.BG', + p_sejours.date_entree, + p_sejours.date_sortie, + '0', + '0', + '20991231'::date, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + JOIN base.t_ghm On p_sejours.ghm_id = t_ghm.oid + WHERE p_sejours.est_budget_global = '1' AND + p_sejours.type_sejour IN ('1','2','5') AND + type_t2a = '1' AND + t_ghm.code NOT IN ('09Z02A') AND + date_sortie between date(date_trunc('year',now() - interval '1 year')) AND now() AND + code_sorti = '1' AND + no_sejour NOT IN (SELECt no_sejour FROm activite[PX].p_factures where no_facture like '%BG') AND + no_sejour NOT IN ( + SELECT p_factures.no_sejour + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_sejours.est_budget_global = '1' AND + p_factures_lignes_c.no_facture NOT LIKE '%BG' AND + code_facture = '1' AND + (t_prestations.code = 'PJ' OR t_prestations.code LIKE 'GHS%') AND + (taux_1 = 100 OR taux_2 = 100 OR taux_0 = 100) + GROUP BY 1 + HAVING SUM(montant_facture_1+montant_facture_0+montant_facture_2) > 0 + ); + + -- Séances pour séjour présents + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id) + SELECT p_sejours.oid, + p_sejours.no_sejour, + p_sejours.no_sejour || '.BG', + p_sejours.no_sejour || '.BG', + p_sejours.date_entree, + date(date_trunc('month',now()) + interval '1 month' - interval '1 day'), + '0', + '0', + '20991231'::date, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE p_sejours.est_budget_global = '1' AND + type_t2a = '1' AND + date_entree between date(date_trunc('year',now() - interval '1 year')) AND now() AND + p_sejours.type_sejour IN ('5') AND + code_sorti <> '1' AND + no_sejour NOT IN (SELECt no_sejour FROm activite[PX].p_factures where no_facture like '%BG') AND + no_sejour NOT IN ( + SELECT p_factures.no_sejour + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_sejours.est_budget_global = '1' AND + code_facture = '1' AND + t_prestations.code = 'PJ' AND + (taux_2 = 100 OR taux_0 = 100) + GROUP BY 1 + HAVING SUM(montant_facture_0+montant_facture_2) > 0 + ); + + + + -- Factures non assurés ajoutées à tord (on trouve un 100% dans patient ou tp1 + DROP TABLE IF EXISTS w_sejours_bg_24; + CREATE TEMP TABLE w_sejours_bg_24 AS + SELECT p_factures.no_sejour, SUM(montant_facture_0+montant_facture_1+montant_facture_2) AS montant_facture_100 + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid + JOIN activite[PX].p_sejour_pmsi ON p_sejour_pmsi.sejour_id = p_sejours.oid + JOIN pmsi.p_rss ON p_sejour_pmsi.rss_id = p_rss.oid + WHERE p_sejours.est_budget_global = '1' AND + code_facture = '1' AND + p_factures_lignes_c.no_facture NOT LIKE '%BG' AND + ( + t_prestations.code = 'PJ' OR + t_prestations.code LIKE 'GHS%' OR + t_ghm.code IN ('09Z02A') OR + t_prestations.code IN ('SE1','SE2','SE3','SE4','SE5','SE6','SE7','ATU') + ) AND + (taux_1 + taux_2 + taux_0 = 100 OR + taux_0+taux_1+taux_2=0 AND montant_facture_1 = montant_facture + ) AND + p_rss.traitement_epmsi NOT IN ('30','31','32','33') + GROUP BY 1 + HAVING SUM(montant_facture_0+montant_facture_1+montant_facture_2) > 0 + ORDER BY 1; + + DELETE FROM activite[PX].p_factures_lignes_c + USING activite[PX].p_factures + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour IN (SELECT no_sejour FROM w_sejours_bg_24) AND + p_factures_lignes_c.no_facture LIKE '%BG' AND + origine_facturation_id = 1; + + UPDATE activite[PX].p_factures SET + code_facture = '1', + date_facture = date_fin, + montant_facture_c = 0, + montant_facture_1_c = 0, + montant_comptabilise_1_c =0, + montant_comptabilise_budget_global_c = 0 + WHERE no_sejour IN (SELECT no_sejour FROM w_sejours_bg_24) AND + no_facture LIKE '%BG' AND + montant_comptabilise_budget_global_c = 0; + + + -- TRansfert de lignes non facturées vers budget global + UPDATE activite[PX].p_factures_lignes_non_facturees_c + SET no_facture = subview.no_facture_bg + FROM + ( + SELECT p_sejours.no_sejour, t_prestations.code, t_prestations.texte, p_factures_lignes_non_facturees_c.*, + p_factures_bg.code_facture,p_factures_bg.no_facture AS no_facture_bg + FROM activite[PX].p_factures_lignes_non_facturees_c + JOIN activite[PX].p_factures ON p_factures_lignes_non_facturees_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND type_sejour IN ('1','2','5') + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid AND type_t2a = '1' + JOIN activite.t_prestations ON p_factures_lignes_non_facturees_c.prestation_id = t_prestations.oid + JOIN activite[PX].p_factures p_factures_bg ON p_factures_bg.no_sejour = p_factures.no_sejour AND p_factures_bg.no_facture LIKE '%BG' AND + p_factures_lignes_non_facturees_c.date_debut BETWEEN p_factures_bg.date_debut AND p_factures_bg.date_fin + WHERE p_factures_lignes_non_facturees_c.no_facture NOT LIKE '%BG' AND + t_prestations.code IN ('EMI','ETI','PII','PME','PH8','PHU') AND + p_factures_bg.code_facture = '0' + ) subview + WHERE p_factures_lignes_non_facturees_c.no_facture = subview.no_facture and + p_factures_lignes_non_facturees_c.prestation_id = subview.prestation_id + ; + + -- factures ajoutées à tord depuis SIGEMS alors que traitées par PMSI BG + DROP TABLE IF EXISTS w_factures_00_bg; + CREATE TEMP TABLE w_factures_00_bg AS + SELECT p_factures.no_facture + FROM activite[PX].p_factures + WHERE p_factures.no_facture LIKE '%.00' AND + p_factures.code_facture = '0' AND + p_factures.no_sejour IN (SELECT p_factures_bg.no_sejour FROM activite[PX].p_factures p_factures_bg WHERE p_factures_bg.no_facture LIKE '%BG' AND p_factures_bg.code_facture = '1') + order by 1 + ; + + DELETE FROM activite[PX].p_factures_lignes_non_facturees_c + WHERE no_facture IN (SELECT * FROM w_factures_00_bg) + ; + + DELETE FROM activite[PX].p_factures_lignes_non_facturees_h + WHERE no_facture IN (SELECT * FROM w_factures_00_bg) + ; + + DELETE FROM activite[PX].p_factures + WHERE no_facture IN (SELECT * FROM w_factures_00_bg) + ; + + + + + + ]]> + + + + + 0 AND + montant_facture_actes_inclus_dans_sejour = 0 AND + (montant_facture_1 + montant_facture_2 + montant_facture_0) = 0 AND + (taux_0 <> 0 OR taux_1 <> 0 OR taux_2 <> 0 OR taux_22 <> 0); + + UPDATE activite[PX].p_factures_lignes_h + SET + montant_facture_actes_inclus_dans_sejour = (prix_unitaire * nb_prestation * coefficient), + montant_facture_1_actes_inclus_dans_sejour = (prix_unitaire * nb_prestation * coefficient) + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 1 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND prix_unitaire <> 0 AND + montant_facture_actes_inclus_dans_sejour = 0 AND + (montant_facture_1 + montant_facture_2 + montant_facture_0) = 0 AND + taux_1 = 0 AND taux_2 = 0 AND taux_0 = 0; + + + UPDATE activite[PX].p_factures_lignes_h + SET + montant_facture_actes_inclus_dans_sejour = (prix_unitaire * nb_prestation * coefficient) * taux_1 / 100.00, + montant_facture_1_actes_inclus_dans_sejour = (prix_unitaire * nb_prestation * coefficient) * taux_1 / 100.00 + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 1 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND prix_unitaire <> 0 AND + montant_facture_actes_inclus_dans_sejour = 0 AND + (montant_facture_2 + montant_facture_0) <> 0 AND montant_facture_1 = 0; + + + --arrondis + UPDATE activite[PX].p_factures_lignes_h + SET montant_facture_1_actes_inclus_dans_sejour = montant_facture_actes_inclus_dans_sejour - (montant_facture_0_actes_inclus_dans_sejour+montant_facture_1_actes_inclus_dans_sejour+montant_facture_2_actes_inclus_dans_sejour+montant_facture_22_actes_inclus_dans_sejour) + WHERE montant_facture_1_actes_inclus_dans_sejour <> 0 AND montant_facture_actes_inclus_dans_sejour <> (montant_facture_0_actes_inclus_dans_sejour+montant_facture_1_actes_inclus_dans_sejour+montant_facture_2_actes_inclus_dans_sejour+montant_facture_22_actes_inclus_dans_sejour); + + + + -- actes externes + UPDATE activite[PX].p_factures_lignes_h + SET + montant_facture = prix_unitaire * nb_prestation * coefficient, + montant_facture_1 = (prix_unitaire * nb_prestation * coefficient) * taux_1 / 100.00, + montant_facture_2 = (prix_unitaire * nb_prestation * coefficient) * taux_2 / 100.00, + montant_facture_0 = (prix_unitaire * nb_prestation * coefficient) * taux_0 / 100.00 + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 2 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND prix_unitaire <> 0 AND + (montant_facture_1 + montant_facture_2 + montant_facture_0) = 0; + + UPDATE activite[PX].p_factures_lignes_h + SET + montant_facture = prix_unitaire * nb_prestation * coefficient, + montant_facture_1 = (prix_unitaire * nb_prestation * coefficient) * taux_1 / 100.00 + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 2 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND prix_unitaire <> 0 AND + taux_1 <> 0 AND (montant_facture_2 + montant_facture_0) <> 0 AND montant_facture_1 = 0; + + + -- Arrondis + UPDATE activite[PX].p_factures_lignes_h + SET montant_facture_1 = montant_facture - (montant_facture_0+montant_facture_1+montant_facture_2+montant_facture_22) + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 2 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + montant_facture_1 <> 0 AND + montant_facture <> (montant_facture_0+montant_facture_1+montant_facture_2+montant_facture_22); + + + -- Ajout des honoraires budget global dans la partie CLINIQUE + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id, + protocole_id, + compte_produit_id) + SELECT + p_factures.no_facture, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + CASE WHEN p_factures_lignes_h.rubrique_facturation_id <> 0 THEN p_factures_lignes_h.rubrique_facturation_id ELSE COALESCE(t_rubriques_facturation.oid,0) END AS rubrique_facturation_id, + prestation_id, + CASE WHEN montant_comptabilise_0 <> 0 THEN montant_facture_0 ELSE 0 END + + CASE WHEN montant_comptabilise_1 <> 0 THEN montant_facture_1 ELSE 0 END + + CASE WHEN montant_comptabilise_2 <> 0 THEN montant_facture_2 ELSE 0 END + + CASE WHEN montant_comptabilise_22 <> 0 THEN montant_facture_22 ELSE 0 END AS montant_facture, + CASE WHEN montant_comptabilise_0 <> 0 THEN montant_facture_0 ELSE 0 END AS montant_facture_0, + CASE WHEN montant_comptabilise_1 <> 0 THEN montant_facture_1 ELSE 0 END AS montant_facture_1, + CASE WHEN montant_comptabilise_2 <> 0 THEN montant_facture_2 ELSE 0 END AS montant_facture_2, + CASE WHEN montant_comptabilise_22 <> 0 THEN montant_facture_22 ELSE 0 END AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + CASE WHEN montant_comptabilise_1 <> 0 THEN nb_prestation ELSE 0 END, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + CASE WHEN p_factures_lignes_h.rubrique_facturation_id <> 0 THEN p_factures_lignes_h.rubrique_facturation_id ELSE COALESCE(t_rubriques_facturation.oid,0) END AS rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + 2::bigint AS origine_facturation_id, + 0::numeric AS montant_comptabilise_budget_global_1, + p_factures.oid AS facture_id, + protocole_id, + 0::bigint AS compte_produit_id + FROM activite[PX].p_factures_lignes_h + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + LEFT JOIN activite[PX].t_rubriques_facturation ON t_prestations.code = t_rubriques_facturation.code + JOIN activite[PX].p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND est_budget_global = '1' + WHERE p_factures.code_facture = '1' AND + ((p_sejours.type_sejour = '3' AND p_factures_lignes_h.no_facture NOT LIKE '%BG') OR + montant_comptabilise <> 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0) ; + + + UPDATE activite[PX].p_factures_lignes_h + SET montant_comptabilise = 0, montant_comptabilise_0 = 0, montant_comptabilise_1 = 0, montant_comptabilise_2 = 0 + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND est_budget_global = '1' + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + (montant_comptabilise <> 0 OR montant_comptabilise_0 <> 0 OR montant_comptabilise_1 <> 0 OR montant_comptabilise_2 <> 0) ; + + + -- Ajout des actes inclus dans séjour dans la partie clinique (verrouillé) + DROP TABLE IF EXISTS w_actes_inclus; + CREATE TEMP TABLE w_actes_inclus AS + SELECT + p_factures.no_sejour, + p_factures.no_facture AS no_facture, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_facturation_id, + prestation_id, + 0::numeric AS montant_facture, + 0::numeric AS montant_facture_0, + 0::numeric AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + 3::bigint AS origine_facturation_id, + 0::numeric AS montant_comptabilise_budget_global_1, + p_factures.oid AS facture_id, + protocole_id, + 0::bigint AS compte_produit_id + FROM activite[PX].p_factures_lignes_h + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + LEFT JOIN activite[PX].t_rubriques_facturation ON t_prestations.code = t_rubriques_facturation.code + JOIN activite[PX].p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND est_budget_global = '1' + WHERE 1<>1 AND + (montant_facture_actes_inclus_dans_sejour <> 0 OR + montant_facture_0_actes_inclus_dans_sejour <> 0 OR + montant_facture_1_actes_inclus_dans_sejour <> 0 OR + montant_facture_2_actes_inclus_dans_sejour <> 0) ; + + + UPDATE w_actes_inclus + SET no_facture = p_factures.no_facture, facture_id = p_factures.oid + FROM activite[PX].p_factures + WHERE w_actes_inclus.no_sejour = p_factures.no_sejour AND + p_factures.no_facture LIKE '%BG' ; + + + INSERT INTO activite[PX].p_factures_lignes_c + ( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id, + protocole_id, + compte_produit_id + ) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + 0::numeric AS montant_facture, + 0::numeric AS montant_facture_0, + 0::numeric AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id, + protocole_id, + compte_produit_id + FROM w_actes_inclus; + + -- Correction n° facture + UPDATE activite[PX].p_factures_lignes_c + SET no_facture = p_factures.no_facture, facture_id = p_factures.oid + FROM activite[PX].p_factures + WHERE p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour <> 0 AND + split_part(p_factures_lignes_c.no_facture,'.',1) = p_factures.no_sejour AND + p_factures.no_facture LIKE '%BG' AND + p_factures_lignes_c.no_facture NOT LIKE '%BG' AND + p_factures_lignes_c.montant_facture = 0 AND + p_factures_lignes_c.montant_comptabilise = 0; + + UPDATE activite[PX].p_factures_lignes_h + SET no_facture = p_factures.no_facture, facture_id = p_factures.oid + FROM activite[PX].p_factures + WHERE p_factures_lignes_h.montant_facture_actes_inclus_dans_sejour <> 0 AND + split_part(p_factures_lignes_h.no_facture,'.',1) = p_factures.no_sejour AND + p_factures.no_facture LIKE '%BG' AND + p_factures_lignes_h.no_facture NOT LIKE '%BG' AND + p_factures_lignes_h.montant_facture = 0 AND + p_factures_lignes_h.montant_comptabilise = 0; + + + -- Cumuls factures + DROP TABLE IF EXISTS w_factures_corrigees; + CREATE TEMP TABLE w_factures_corrigees AS + SELECT + p_factures_lignes_c.no_facture, + + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture ELSE 0 END),0) AS ligne_facture_c, + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_0 ELSE 0 END),0) AS ligne_facture_0_c, + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_1 ELSE 0 END),0) AS ligne_facture_1_c, + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_2 ELSE 0 END),0) AS ligne_facture_2_c, + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_22 ELSE 0 END),0) AS ligne_facture_22_c, + COALESCE(SUM(montant_comptabilise),0) AS ligne_comptabilise_c, + COALESCE(SUM(montant_comptabilise_0),0) AS ligne_comptabilise_0_c, + COALESCE(SUM(montant_comptabilise_1),0) AS ligne_comptabilise_1_c, + COALESCE(SUM(montant_comptabilise_2),0) AS ligne_comptabilise_2_c, + COALESCE(SUM(montant_comptabilise_22),0) AS ligne_comptabilise_22_c, + + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture ELSE 0 END),0) AS ligne_facture_h, + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_0 ELSE 0 END),0) AS ligne_facture_0_h, + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_1 ELSE 0 END),0) AS ligne_facture_1_h, + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_2 ELSE 0 END),0) AS ligne_facture_2_h, + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_22 ELSE 0 END),0) AS ligne_facture_22_h, + 0::numeric AS ligne_comptabilise_h, + 0::numeric AS ligne_comptabilise_0_h, + 0::numeric AS ligne_comptabilise_1_h, + 0::numeric AS ligne_comptabilise_2_h, + 0::numeric AS ligne_comptabilise_22_h + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND est_budget_global = '1' + LEFT JOIN activite[PX].p_factures_lignes_c ON p_factures_lignes_c.no_facture = p_factures.no_facture + GROUP BY 1 + HAVING SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_c) OR + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_0 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_0_c) OR + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_1 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_1_c) OR + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_2 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_2_c) OR + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_22 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_22_c) OR + SUM(montant_comptabilise) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_c) OR + SUM(montant_comptabilise_0) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_0_c) OR + SUM(montant_comptabilise_1) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_1_c) OR + SUM(montant_comptabilise_2) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_2_c) OR + SUM(montant_comptabilise_22) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_22_c) OR + + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_h) OR + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_0 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_0_h) OR + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_1 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_1_h) OR + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_2 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_2_h) OR + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_22 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_22_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_0_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_1_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_2_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_22_h) ; + + UPDATE activite[PX].p_factures + SET + montant_facture_c = w_factures_corrigees.ligne_facture_c, + montant_facture_0_c = w_factures_corrigees.ligne_facture_0_c, + montant_facture_1_c = w_factures_corrigees.ligne_facture_1_c, + montant_facture_2_c = w_factures_corrigees.ligne_facture_2_c, + montant_facture_22_c = w_factures_corrigees.ligne_facture_22_c, + montant_comptabilise_c = w_factures_corrigees.ligne_comptabilise_c, + montant_comptabilise_0_c = w_factures_corrigees.ligne_comptabilise_0_c, + montant_comptabilise_1_c = w_factures_corrigees.ligne_comptabilise_1_c, + montant_comptabilise_2_c = w_factures_corrigees.ligne_comptabilise_2_c, + montant_comptabilise_22_c = w_factures_corrigees.ligne_comptabilise_22_c, + montant_facture_h = w_factures_corrigees.ligne_facture_h, + montant_facture_0_h = w_factures_corrigees.ligne_facture_0_h, + montant_facture_1_h = w_factures_corrigees.ligne_facture_1_h, + montant_facture_2_h = w_factures_corrigees.ligne_facture_2_h, + montant_facture_22_h = w_factures_corrigees.ligne_facture_22_h, + montant_comptabilise_h = w_factures_corrigees.ligne_comptabilise_h, + montant_comptabilise_0_h = w_factures_corrigees.ligne_comptabilise_0_h, + montant_comptabilise_1_h = w_factures_corrigees.ligne_comptabilise_1_h, + montant_comptabilise_2_h = w_factures_corrigees.ligne_comptabilise_2_h, + montant_comptabilise_22_h = w_factures_corrigees.ligne_comptabilise_22_h + FROM w_factures_corrigees + WHERE w_factures_corrigees.no_facture = p_factures.no_facture; + + + -- Report des actes non facturés honoraires budget global pour encours + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture AS no_facture, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.date_fin, + p_factures_lignes_h.nb_rubrique, + p_factures_lignes_h.coefficient, + p_factures_lignes_h.rubrique_facturation_id, + p_factures_lignes_h.prestation_id, + p_factures_lignes_h.prix_unitaire, + p_factures_lignes_h.lieu_id + FROM activite[PX].p_factures_lignes_h + JOIN activite[PX].p_factures on p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_factures.code_facture = '0' AND + p_sejours.est_budget_global = '1' AND + p_sejours.type_sejour = '3' AND + p_factures.no_sejour NOT IN (SELECT no_sejour FROM activite[PX].p_factures WHERE code_facture = '1') AND + p_factures_lignes_h.no_facture NOT IN (SELECT no_facture FROM activite[PX].p_factures_lignes_non_facturees_c) + ; + + -- Report des actes non facturés honoraires budget global pour encours + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture AS no_facture, + p_factures_lignes_non_facturees_h.date_debut, + p_factures_lignes_non_facturees_h.date_fin, + p_factures_lignes_non_facturees_h.nb_rubrique, + p_factures_lignes_non_facturees_h.coefficient, + p_factures_lignes_non_facturees_h.rubrique_facturation_id, + p_factures_lignes_non_facturees_h.prestation_id, + p_factures_lignes_non_facturees_h.prix_unitaire, + p_factures_lignes_non_facturees_h.lieu_id + FROM activite[PX].p_factures_lignes_non_facturees_h + JOIN activite[PX].p_factures on p_factures_lignes_non_facturees_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_factures.code_facture = '0' AND + p_sejours.est_budget_global = '1' AND + p_sejours.type_sejour = '3' AND + p_factures.no_sejour NOT IN (SELECT no_sejour FROM activite[PX].p_factures WHERE code_facture = '1') --AND + ; + + TRUNCATE activite[PX].p_factures_lignes_non_facturees_h + ; + + ]]> + + + + + + '1' AND + p_sejours.type_sejour = '3' AND + date_entree between now() - interval '1 year' AND now() AND + code_sorti = '1' AND + no_sejour NOT IN (SELECT no_sejour FROM activite[PX].p_factures WHERE no_facture like '%BG') AND + no_sejour NOT IN + ( + SELECT no_sejour + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + WHERE p_factures_lignes_c.no_facture NOT LIKE '%BG' AND montant_comptabilise_1 <> 0 + ) + ; + + -- Sur Externes, Récupérer actes facturés partiellement + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + facture_id, + no_facture, + date_debut, + rubrique_facturation_id, + prestation_id, + date_fin, + nb_rubrique, + coefficient, + lieu_id, + prix_unitaire + ) + SELECT + p_factures_bg.oid AS facture_id, + p_factures_bg.no_facture AS no_facture, + p_factures_lignes_c.date_debut, + p_factures_lignes_c.rubrique_facturation_id, + p_factures_lignes_c.prestation_id, + MAX(p_factures_lignes_c.date_fin), + 1, + 1, + MAX(p_factures_lignes_c.lieu_id), + (MAX(prix_unitaire) * MAX(coefficient) * SUM(nb_rubrique)) - SUM(montant_facture) AS prix_unitaire + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures on p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_factures p_factures_bg ON p_factures_bg.no_sejour = p_factures.no_sejour and p_factures_bg.no_facture LIKE '%BG' + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_sejours.type_sejour = '3' AND + p_factures_bg.code_facture = '0' AND + p_factures_lignes_c.no_facture nOT LIKE '%BG' AND + montant_encours = 0 AND p_factures_bg.montant_encours_c = 0 + GROUP BY 1,2,3,4,5 + HAVING + SUM(nb_rubrique) > 0 AND + ((MAX(prix_unitaire) * MAX(coefficient) * SUM(nb_rubrique)) - SUM(montant_facture)) > 1 + ; + + + + + ]]> + + + + 0 OR + montant_comptabilise_h <> 0 + ) AND + (SELECT count(*) FROM prod_sigems.dos2_lien_avoir) = 0 + ; + + + UPDATE w_sans_dos2_lien + SET no_facture_annulee = subview.no_facture_annulee + FROM + ( + SELECT p_factures.no_sejour , + w_sans_dos2_lien.no_facture_avoir, + MAX(p_factures.no_facture) AS no_facture_annulee + FROM activite[PX].p_factures + JOIN w_sans_dos2_lien ON p_factures.no_sejour = w_sans_dos2_lien.no_sejour + WHERE p_factures.no_facture <> w_sans_dos2_lien.no_facture_avoir AND + p_factures.date_facture <= avoir_date_facture AND + p_factures.date_debut BETWEEN w_sans_dos2_lien.date_debut AND w_sans_dos2_lien.date_fin AND + p_factures.no_facture < w_sans_dos2_lien.no_facture_avoir AND + p_factures.montant_comptabilise_c = 0-avoir_montant_comptabilise_c AND + p_factures.montant_comptabilise_h = 0-avoir_montant_comptabilise_h + GROUP BY 1,2 + ) subview + WHERE w_sans_dos2_lien.no_facture_avoir = subview.no_facture_avoir + ; + + INSERT INTO w_lien_avoir + SELECT no_facture_annulee, no_facture_avoir + FROM w_sans_dos2_lien + WHERE no_facture_annulee <> '' AND + no_facture_annulee NOT IN (SELECT no_facture_annulee FROM w_sans_dos2_lien GROUP BY 1 HAVING count(*) > 1) + ; + + -- Traitement + UPDATE activite[PX].p_factures SET + no_facture_od_avoir = no_facture_avoir, + facture_od_avoir_id = p_factures_od.oid, + + montant_regle_c = p_factures.montant_regle_c - p_factures_od.montant_comptabilise_c, + montant_regle_1_c = p_factures.montant_regle_1_c - p_factures_od.montant_comptabilise_1_c, + montant_regle_2_c = p_factures.montant_regle_2_c - p_factures_od.montant_comptabilise_2_c, + montant_regle_22_c = p_factures.montant_regle_22_c - p_factures_od.montant_comptabilise_22_c, + montant_regle_0_c = p_factures.montant_regle_0_c - p_factures_od.montant_comptabilise_0_c, + montant_regle_h = p_factures.montant_regle_h - p_factures_od.montant_comptabilise_h, + montant_regle_1_h = p_factures.montant_regle_1_h - p_factures_od.montant_comptabilise_1_h, + montant_regle_2_h = p_factures.montant_regle_2_h - p_factures_od.montant_comptabilise_2_h, + montant_regle_22_h = p_factures.montant_regle_22_h - p_factures_od.montant_comptabilise_22_h, + montant_regle_0_h = p_factures.montant_regle_0_h - p_factures_od.montant_comptabilise_0_h + FROM w_lien_avoir + JOIN activite[PX].p_factures p_factures_od ON p_factures_od.no_facture = no_facture_avoir + WHERE p_factures.no_facture = no_facture_annulee + ; + + UPDATE activite[PX].p_factures SET + no_facture_od_avoir = no_facture_annulee, + facture_od_avoir_id = p_factures_od.oid, + + montant_regle_c = p_factures.montant_regle_c + p_factures.montant_comptabilise_c, + montant_regle_1_c = p_factures.montant_regle_1_c + p_factures.montant_comptabilise_1_c, + montant_regle_2_c = p_factures.montant_regle_2_c + p_factures.montant_comptabilise_2_c, + montant_regle_22_c = p_factures.montant_regle_22_c + p_factures.montant_comptabilise_22_c, + montant_regle_0_c = p_factures.montant_regle_0_c + p_factures.montant_comptabilise_0_c, + montant_regle_h = p_factures.montant_regle_h + p_factures.montant_comptabilise_h, + montant_regle_1_h = p_factures.montant_regle_1_h + p_factures.montant_comptabilise_1_h, + montant_regle_2_h = p_factures.montant_regle_2_h + p_factures.montant_comptabilise_2_h, + montant_regle_22_h = p_factures.montant_regle_22_h + p_factures.montant_comptabilise_22_h, + montant_regle_0_h = p_factures.montant_regle_0_h + p_factures.montant_comptabilise_0_h + FROM w_lien_avoir + JOIN activite[PX].p_factures p_factures_od ON p_factures_od.no_facture = no_facture_annulee + WHERE p_factures.no_facture = no_facture_avoir + ; + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + facture_id, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_avoir + ) + SELECT + p_factures_annulee.no_facture, + p_factures_annulee.oid AS facture_id, + p_factures_avoir.date_vente AS date_comptable, + p_factures_soldes_od.rubrique_comptabilisee_id, + p_factures_soldes_od.prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0-p_factures_soldes_od.montant_comptabilise AS montant_regle, + 0-p_factures_soldes_od.montant_comptabilise_0 AS montant_regle_0, + 0-p_factures_soldes_od.montant_comptabilise_1 AS montant_regle_1, + 0-p_factures_soldes_od.montant_comptabilise_2 AS montant_regle_2, + 0-p_factures_soldes_od.montant_comptabilise_22 AS montant_regle_22, + '1'::text AS od_avoir + FROM w_lien_avoir + JOIN activite[PX].p_factures_soldes_c p_factures_soldes_od ON p_factures_soldes_od.no_facture = no_facture_avoir + JOIN activite[PX].p_factures p_factures_avoir ON p_factures_avoir.no_facture = no_facture_avoir + JOIN activite[PX].p_factures p_factures_annulee ON p_factures_annulee.no_facture = no_facture_annulee + WHERE p_factures_soldes_od.montant_comptabilise <> 0 + ; + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + facture_id, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_avoir + ) + SELECT + p_factures_avoir.no_facture, + p_factures_avoir.oid AS facture_id, + p_factures_avoir.date_vente AS date_comptable, + p_factures_soldes_od.rubrique_comptabilisee_id, + p_factures_soldes_od.prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + p_factures_soldes_od.montant_comptabilise AS montant_regle, + p_factures_soldes_od.montant_comptabilise_0 AS montant_regle_0, + p_factures_soldes_od.montant_comptabilise_1 AS montant_regle_1, + p_factures_soldes_od.montant_comptabilise_2 AS montant_regle_2, + p_factures_soldes_od.montant_comptabilise_22 AS montant_regle_22, + '1'::text AS od_avoir + FROM w_lien_avoir + JOIN activite[PX].p_factures_soldes_c p_factures_soldes_od ON p_factures_soldes_od.no_facture = no_facture_avoir + JOIN activite[PX].p_factures p_factures_avoir ON p_factures_avoir.no_facture = no_facture_avoir + JOIN activite[PX].p_factures p_factures_annulee ON p_factures_annulee.no_facture = no_facture_annulee + WHERE p_factures_soldes_od.montant_comptabilise <> 0 + ; + + + + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + facture_id, + date_comptable, + medecin_comptabilise_id, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_avoir + ) + SELECT + p_factures_annulee.no_facture, + p_factures_annulee.oid AS facture_id, + p_factures_avoir.date_vente AS date_comptable, + p_factures_soldes_od.medecin_comptabilise_id, + p_factures_soldes_od.rubrique_comptabilisee_id, + p_factures_soldes_od.prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0-p_factures_soldes_od.montant_comptabilise AS montant_regle, + 0-p_factures_soldes_od.montant_comptabilise_0 AS montant_regle_0, + 0-p_factures_soldes_od.montant_comptabilise_1 AS montant_regle_1, + 0-p_factures_soldes_od.montant_comptabilise_2 AS montant_regle_2, + 0-p_factures_soldes_od.montant_comptabilise_22 AS montant_regle_22, + '1'::text AS od_avoir + FROM w_lien_avoir + JOIN activite[PX].p_factures_soldes_h p_factures_soldes_od ON p_factures_soldes_od.no_facture = no_facture_avoir + JOIN activite[PX].p_factures p_factures_avoir ON p_factures_avoir.no_facture = no_facture_avoir + JOIN activite[PX].p_factures p_factures_annulee ON p_factures_annulee.no_facture = no_facture_annulee + WHERE p_factures_soldes_od.montant_comptabilise <> 0 + ; + + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + facture_id, + date_comptable, + medecin_comptabilise_id, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_avoir + ) + SELECT + p_factures_avoir.no_facture, + p_factures_avoir.oid AS facture_id, + p_factures_avoir.date_vente AS date_comptable, + p_factures_soldes_od.medecin_comptabilise_id, + p_factures_soldes_od.rubrique_comptabilisee_id, + p_factures_soldes_od.prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + p_factures_soldes_od.montant_comptabilise AS montant_regle, + p_factures_soldes_od.montant_comptabilise_0 AS montant_regle_0, + p_factures_soldes_od.montant_comptabilise_1 AS montant_regle_1, + p_factures_soldes_od.montant_comptabilise_2 AS montant_regle_2, + p_factures_soldes_od.montant_comptabilise_22 AS montant_regle_22, + '1'::text AS od_avoir + FROM w_lien_avoir + JOIN activite[PX].p_factures_soldes_h p_factures_soldes_od ON p_factures_soldes_od.no_facture = no_facture_avoir + JOIN activite[PX].p_factures p_factures_avoir ON p_factures_avoir.no_facture = no_facture_avoir + JOIN activite[PX].p_factures p_factures_annulee ON p_factures_annulee.no_facture = no_facture_annulee + WHERE p_factures_soldes_od.montant_comptabilise <> 0 + ; + + -- Ecarts total réglé et detail regle par OD + DROP TABLE IF EXISTS w_factures_solde; + CREATE TEMP TABLE w_factures_solde AS + SELECT + ANN_DOS2|| to_char(COD_DOS2,'FM900000') || '.' || to_char(IND_DOS2,'FM00') AS no_facture, + date(DFA_DOS2) AS DFA_DOS2, + CASE WHEN SJ1_DOS2 = SR1_DOS2 THEN '1' ELSE '0' END AS solde1c, + CASE WHEN SJ2_DOS2 = SR2_DOS2 THEN '1' ELSE '0' END AS solde2c, + CASE WHEN SJ3_DOS2 = SR3_DOS2 THEN '1' ELSE '0' END AS solde0c, + CASE WHEN HO1_DOS2 = HR1_DOS2 THEN '1' ELSE '0' END AS solde1h, + CASE WHEN HO2_DOS2 = HR2_DOS2 THEN '1' ELSE '0' END AS solde2h, + CASE WHEN HO3_DOS2 = HR3_DOS2 THEN '1' ELSE '0' END AS solde0h + FROM prod_sigems.DOS2 + ; + + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + prestation_id, + rubrique_comptabilisee_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + facture_id, + p_factures_soldes_c.no_facture, + MAX(date_comptable), + prestation_id, + rubrique_comptabilisee_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + + SUM(CASE WHEN solde0c = '1' THEN montant_comptabilise_0-montant_regle_0 ELSE 0 END)+ + SUM(CASE WHEN solde1c = '1' THEN montant_comptabilise_1-montant_regle_1 ELSE 0 END)+ + SUM(CASE WHEN solde2c = '1' THEN montant_comptabilise_2-montant_regle_2 ELSE 0 END) AS montant_regle, + SUM(CASE WHEN solde0c = '1' THEN montant_comptabilise_0-montant_regle_0 ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN solde1c = '1' THEN montant_comptabilise_1-montant_regle_1 ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN solde2c = '1' THEN montant_comptabilise_2-montant_regle_2 ELSE 0 END) AS montant_regle_2, + 0 AS montant_regle_22, + '1' AS od_non_comptabilise + FROM activite[PX].p_factures_soldes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN w_factures_solde ON w_factures_solde.no_facture = p_factures_soldes_c.no_facture + WHERE t_prestations.code_original <> '*CTI_ACO85' + GROUP BY 1,2,4,5,6 + HAVING SUM(montant_comptabilise-montant_regle) <> 0 + ; + + + + INSERT INTO activite[PX].p_factures_soldes_h( + facture_id, + no_facture, + date_comptable, + medecin_comptabilise_id, + prestation_id, + rubrique_comptabilisee_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + facture_id, + p_factures_soldes_h.no_facture, + MAX(date_comptable), + medecin_comptabilise_id, + prestation_id, + rubrique_comptabilisee_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + + SUM(CASE WHEN solde0h = '1' THEN montant_comptabilise_0-montant_regle_0 ELSE 0 END)+ + SUM(CASE WHEN solde1h = '1' THEN montant_comptabilise_1-montant_regle_1 ELSE 0 END)+ + SUM(CASE WHEN solde2h = '1' THEN montant_comptabilise_2-montant_regle_2 ELSE 0 END) AS montant_regle, + SUM(CASE WHEN solde0h = '1' THEN montant_comptabilise_0-montant_regle_0 ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN solde1h = '1' THEN montant_comptabilise_1-montant_regle_1 ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN solde2h = '1' THEN montant_comptabilise_2-montant_regle_2 ELSE 0 END) AS montant_regle_2, + 0 AS montant_regle_22, + '1' AS od_non_comptabilise + FROM activite[PX].p_factures_soldes_h + JOIN w_factures_solde ON w_factures_solde.no_facture = p_factures_soldes_h.no_facture + WHERE p_factures_soldes_h.no_facture NOT IN (SELECT no_facture FROM activite[PX].p_factures_soldes_h WHERE medecin_comptabilise_id = 0) + GROUP BY 1,2,4,5,6 + HAVING SUM(montant_comptabilise-montant_regle) <> 0 AND + ( + SUM(CASE WHEN solde0h = '1' THEN montant_comptabilise_0-montant_regle_0 ELSE 0 END)+ + SUM(CASE WHEN solde1h = '1' THEN montant_comptabilise_1-montant_regle_1 ELSE 0 END)+ + SUM(CASE WHEN solde2h = '1' THEN montant_comptabilise_2-montant_regle_2 ELSE 0 END) + ) <> 0 + ; + + UPDATE activite[PX].p_factures SET + montant_regle_0_c = CASE WHEN solde0c = '1' THEN montant_comptabilise_0_c ELSE p_factures.montant_regle_0_c END, + montant_regle_1_c = CASE WHEN solde1c = '1' THEN montant_comptabilise_1_c ELSE p_factures.montant_regle_1_c END, + montant_regle_2_c = CASE WHEN solde2c = '1' THEN montant_comptabilise_2_c ELSE p_factures.montant_regle_2_c END, + montant_regle_0_h = CASE WHEN solde0h = '1' THEN montant_comptabilise_0_h ELSE p_factures.montant_regle_0_h END, + montant_regle_1_h = CASE WHEN solde1h = '1' THEN montant_comptabilise_1_h ELSE p_factures.montant_regle_1_h END, + montant_regle_2_h = CASE WHEN solde2h = '1' THEN montant_comptabilise_2_h ELSE p_factures.montant_regle_2_h END + FROM w_factures_solde + WHERE w_factures_solde.no_facture = p_factures.no_facture AND + ( + montant_regle_0_c IS DIStinct from CASE WHEN solde0c = '1' THEN montant_comptabilise_0_c ELSE p_factures.montant_regle_0_c END OR + montant_regle_1_c IS DIStinct from CASE WHEN solde1c = '1' THEN montant_comptabilise_1_c ELSE p_factures.montant_regle_1_c END OR + montant_regle_2_c IS DIStinct from CASE WHEN solde2c = '1' THEN montant_comptabilise_2_c ELSE p_factures.montant_regle_2_c END OR + montant_regle_0_h IS DIStinct from CASE WHEN solde0h = '1' THEN montant_comptabilise_0_h ELSE p_factures.montant_regle_0_h END OR + montant_regle_1_h IS DIStinct from CASE WHEN solde1h = '1' THEN montant_comptabilise_1_h ELSE p_factures.montant_regle_1_h END OR + montant_regle_2_h IS DIStinct from CASE WHEN solde2h = '1' THEN montant_comptabilise_2_h ELSE p_factures.montant_regle_2_h END + ) + ; + + UPDATE activite[PX].p_factures SET + montant_regle_c = montant_regle_0_c+montant_regle_1_c+montant_regle_2_c, + montant_regle_h = montant_regle_0_h+montant_regle_1_h+montant_regle_2_h + WHERE + ( + montant_regle_c IS DISTINCT FROM montant_regle_0_c+montant_regle_1_c+montant_regle_2_c OR + montant_regle_h IS DISTINCT FROM montant_regle_0_h+montant_regle_1_h+montant_regle_2_h + ) + ; + ]]> + + + + + + '9' AND + p_factures.date_fin >= date(now() - interval '2 days') AND + DFI_LCL <> date_fin + ) subview + WHERE p_factures.no_facture = subview.no_facture + ; + + + -- Facture de référence + + DROP TABLE IF EXISTS w_factures_reference; + CREATE TEMP TABLE w_factures_reference AS + SELECT + p_factures.no_sejour, + CASE WHEN avec_facturation_intermediaire = '1' THEN date_debut ELSE '00010101' END AS date_debut_reference, + MAX(CASE WHEN avec_facturation_intermediaire = '1' THEN date_fin ELSE '20991231' END) AS date_fin_reference, + (MAX(Array[ + CASE WHEN type_facture NOT IN ('1','X') THEN '9' ELSE '0' END || + CASE WHEN no_facture LIKE '%BG' THEN '9' ELSE '0' END || + CASE WHEN p_factures.montant_facture_1_c + p_factures.montant_facture_1_h <> 0 OR p_factures.montant_facture_c + p_factures.montant_facture_h = 0 THEN '9' ELSE '0' END || + p_factures.date_facture::text,no_facture + ]))[2] AS no_facture_reference + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + GROUP BY 1,2 + ORDER BY 1,2; + + CREATE INDEX w_factures_reference_i1 + ON w_factures_reference + USING btree + (no_sejour); + + CREATE INDEX w_factures_reference_i2 + ON w_factures_reference + USING btree + (no_facture_reference); + + + UPDATE activite[PX].p_factures SET + no_facture_reference = w_factures_reference.no_facture_reference, + facture_reference_id = p_factures_reference.oid + FROM w_factures_reference + JOIN activite[PX].p_factures p_factures_reference ON p_factures_reference.no_facture = w_factures_reference.no_facture_reference + WHERE w_factures_reference.no_sejour = p_factures.no_sejour AND + p_factures.date_debut BETWEEN date_debut_reference AND date_fin_reference AND + ( + p_factures.no_facture_reference IS DISTINCT FROM w_factures_reference.no_facture_reference OR + p_factures.facture_reference_id IS DISTINCT FROM p_factures_reference.oid + ); + + UPDATE activite[PX].p_factures SET + facture_reference_id = p_factures_references.oid + FROM activite[PX].p_factures p_factures_references + WHERE p_factures.no_facture_reference = p_factures_references.no_facture AND + p_factures.facture_reference_id IS DISTINCT FROM p_factures_references.oid + ; + ]]> + + + + + + + + 0 + ; + + DROP TABLE IF EXISTS w_factures_h_ets; + CREATE TEMP TABLE w_factures_h_ets AS + SELECT + p_factures_lignes_h.no_facture, + SUM(p_factures_lignes_h.montant_comptabilise) AS montant_comptabilise, + SUM(p_factures_lignes_h.montant_comptabilise_0) AS montant_comptabilise_0, + SUM(p_factures_lignes_h.montant_comptabilise_1) AS montant_comptabilise_1, + SUM(p_factures_lignes_h.montant_comptabilise_2) AS montant_comptabilise_2, + SUM(p_factures_lignes_h.montant_comptabilise_22) AS montant_comptabilise_22 + FROM activite[PX].p_factures_lignes_h + JOIN activite[PX].t_medecins_administratifs ON medecin_comptabilise_id = t_medecins_administratifs.oid + JOIN activite[PX].p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + --JOIN activite[PX].t_rubriques_facturation ON rubrique_facturation_id = t_rubriques_facturation.oid + WHERE est_budget_global IS DISTINCT FROM '1' AND + est_medecin_salarie = 1 AND + p_factures_lignes_h.montant_comptabilise <> 0 + GROUP BY 1; + + CREATE INDEX w_factures_h_ets_i1 ON w_factures_h_ets USING btree (no_facture); + + UPDATE activite[PX].p_factures SET + montant_comptabilise_c = montant_comptabilise_c + montant_comptabilise, + montant_comptabilise_0_c = montant_comptabilise_0_c + montant_comptabilise_0, + montant_comptabilise_1_c = montant_comptabilise_1_c + montant_comptabilise_1, + montant_comptabilise_2_c = montant_comptabilise_2_c + montant_comptabilise_2, + montant_comptabilise_22_c = montant_comptabilise_22_c + montant_comptabilise_22, + montant_comptabilise_h = montant_comptabilise_h - montant_comptabilise, + montant_comptabilise_0_h = montant_comptabilise_0_h - montant_comptabilise_0, + montant_comptabilise_1_h = montant_comptabilise_1_h - montant_comptabilise_1, + montant_comptabilise_2_h = montant_comptabilise_2_h - montant_comptabilise_2, + montant_comptabilise_22_h = montant_comptabilise_22_h - montant_comptabilise_22 + FROM w_factures_h_ets + WHERE w_factures_h_ets.no_facture = p_factures.no_facture; + + UPDATE activite[PX].p_factures_lignes_h + SET + montant_comptabilise = 0, + montant_comptabilise_0 = 0, + montant_comptabilise_1 = 0, + montant_comptabilise_2 = 0, + montant_comptabilise_22 = 0 + FROM activite[PX].t_medecins_administratifs + WHERE medecin_comptabilise_id = t_medecins_administratifs.oid AND + est_medecin_salarie = 1 AND + p_factures_lignes_h.montant_comptabilise <> 0; + + DROP TABLE IF EXISTS w_factures_soldes_h_ets; + CREATE TEMP TABLE w_factures_soldes_h_ets AS + SELECT + p_factures_soldes_h.no_facture, + p_factures_soldes_h.date_comptable, + SUM(p_factures_soldes_h.montant_comptabilise) AS montant_comptabilise, + SUM(p_factures_soldes_h.montant_comptabilise_0) AS montant_comptabilise_0, + SUM(p_factures_soldes_h.montant_comptabilise_1) AS montant_comptabilise_1, + SUM(p_factures_soldes_h.montant_comptabilise_2) AS montant_comptabilise_2, + SUM(p_factures_soldes_h.montant_comptabilise_22) AS montant_comptabilise_22, + SUM(p_factures_soldes_h.montant_regle) AS montant_regle, + SUM(p_factures_soldes_h.montant_regle_0) AS montant_regle_0, + SUM(p_factures_soldes_h.montant_regle_1) AS montant_regle_1, + SUM(p_factures_soldes_h.montant_regle_2) AS montant_regle_2, + SUM(p_factures_soldes_h.montant_regle_22) AS montant_regle_22 + FROM activite[PX].p_factures_soldes_h + JOIN activite[PX].t_medecins_administratifs ON medecin_comptabilise_id = t_medecins_administratifs.oid + WHERE est_medecin_salarie = 1 AND + ( + p_factures_soldes_h.montant_comptabilise <> 0 OR + p_factures_soldes_h.montant_regle <> 0 + ) + GROUP BY 1,2; + + DROP TABLE IF EXISTS w_factures_h_ets; + CREATE TEMP TABLE w_factures_h_ets AS + SELECT + no_facture, + SUM(montant_regle) AS montant_regle, + SUM(montant_regle_0) AS montant_regle_0, + SUM(montant_regle_1) AS montant_regle_1, + SUM(montant_regle_2) AS montant_regle_2, + SUM(montant_regle_22) AS montant_regle_22 + FROM w_factures_soldes_h_ets + GROUP BY 1; + + CREATE INDEX w_factures_h_ets_i1 ON w_factures_h_ets USING btree (no_facture); + + UPDATE activite[PX].p_factures SET + montant_regle_c = montant_regle_c + montant_regle, + montant_regle_0_c = montant_regle_0_c + montant_regle_0, + montant_regle_1_c = montant_regle_1_c + montant_regle_1, + montant_regle_2_c = montant_regle_2_c + montant_regle_2, + montant_regle_22_c = montant_regle_22_c + montant_regle_22, + montant_regle_h = montant_regle_h - montant_regle, + montant_regle_0_h = montant_regle_0_h - montant_regle_0, + montant_regle_1_h = montant_regle_1_h - montant_regle_1, + montant_regle_2_h = montant_regle_2_h - montant_regle_2, + montant_regle_22_h = montant_regle_22_h - montant_regle_22 + FROM w_factures_h_ets + WHERE w_factures_h_ets.no_facture = p_factures.no_facture; + + + INSERT INTO activite[PX].p_factures_soldes_c + ( + no_facture, + facture_id, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_avoir, + od_non_comptabilise + ) + SELECT + p_factures_soldes_h.no_facture, + p_factures_soldes_h.facture_id, + p_factures_soldes_h.date_comptable, + p_factures_soldes_h.rubrique_comptabilisee_id, + p_factures_soldes_h.prestation_id, + p_factures_soldes_h.montant_comptabilise, + p_factures_soldes_h.montant_comptabilise_0, + p_factures_soldes_h.montant_comptabilise_1, + p_factures_soldes_h.montant_comptabilise_2, + p_factures_soldes_h.montant_comptabilise_22, + p_factures_soldes_h.montant_regle, + p_factures_soldes_h.montant_regle_0, + p_factures_soldes_h.montant_regle_1, + p_factures_soldes_h.montant_regle_2, + p_factures_soldes_h.montant_regle_22, + p_factures_soldes_h.od_avoir, + '1'::text AS od_non_comptabilise + FROM activite[PX].p_factures_soldes_h + JOIN activite[PX].t_medecins_administratifs ON medecin_comptabilise_id = t_medecins_administratifs.oid + WHERE est_medecin_salarie = 1 AND + ( + p_factures_soldes_h.montant_comptabilise <> 0 OR + p_factures_soldes_h.montant_regle <> 0 + ); + + DELETE FROM activite[PX].p_factures_soldes_h + USING activite[PX].t_medecins_administratifs + WHERE medecin_comptabilise_id = t_medecins_administratifs.oid AND + est_medecin_salarie = 1 AND + ( + p_factures_soldes_h.montant_comptabilise <> 0 OR + p_factures_soldes_h.montant_regle <> 0 + ) + ; + + + ]]> + + + + + + + + + + = date_trunc('year',now())-interval '1 year' + GROUP BY 1 + ) subview + ; + + DROP TABLE IF EXISTS w_ECRIT_CLI; + CREATE TEMP TABLE w_ECRIT_CLI AS + SELECT ''::text AS ANNEE, + 0::numeric AS CODE, + 0::numeric AS INDICE, + ''::text AS no_sejour, + ''::text AS no_facture, + ECRIT.*, + COALESCE(ECR_LIBEL,'') AS ECR_LIBEL, + COALESCE(SER_REG,0) AS SER_REG, + '0'::text AS ECR_ACOMPTE, + 0::bigint AS medecin_administratif_id, + 0::bigint AS tiers_payant_id, + ''::text AS mode_reglement_code + FROM prod_sigems.ECRIT + JOIN w_STE ON ECR_STE = ECR_STE_cli + LEFT JOIN prod_sigems.ECRIT_COMPTALIBEL ON ECRIT.ECR_NUM = ECRIT_COMPTALIBEL.ECR_NUM + LEFT JOIN prod_sigems.MAGIC ON ECRIT.ECR_NUM = MAGIC.NUM_ECR + WHERE ECR_DATE >= '[ENV_ADM_ANNEEDEBUT]0101' AND + ECRIT.ECR_JNAL <> 'AN' AND + ECRIT.ECR_JNAL <> 'ANH' AND + ECRIT.ECR_JNAL <> 'ACHAT' AND + ECRIT.ECR_JNAL <> 'ACHA' AND + ECRIT.ECR_JNAL <> 'SITU' AND + ECRIT.ECR_ANNUL <> 'S' AND + ECRIT.ECR_PIECE <> 'CENTRALI' AND + ECRIT.ECR_PLAN NOT IN ('A','B') + ; + + + UPDATE w_ECRIT_CLI + SET ECR_CEMT = ECR_CPTE + WHERE ECR_CEMT = '' + ; + + UPDATE w_ECRIT_CLI SET + ANNEE = DOS_ECRIT.ANNEE, + CODE = DOS_ECRIT.CODE, + INDICE = DOS_ECRIT.INDICE, + no_sejour = DOS_ECRIT.ANNEE || to_char(DOS_ECRIT.CODE, 'FM900000'), + no_facture = DOS_ECRIT.ANNEE || to_char(DOS_ECRIT.CODE, 'FM900000') || '.' || to_char(DOS_ECRIT.INDICE,'FM00') + FROM prod_sigems.DOS_ECRIT + WHERE SERI = ECR_NUM + ; + + + UPDATE w_ECRIT_CLI SET + ANNEE = subview.ANNEE, + CODE = subview.CODE, + INDICE = subview.INDICE, + no_sejour = subview.no_sejour, + no_facture = subview.no_facture + FROM + ( + SELECT SER_REG, ECR_JNAL, ECR_DATE, + MAX(ANNEE) AS ANNEE, + MAX(CODE) AS CODE, + MAX(INDICE) AS INDICE, + MAX(no_sejour) AS no_sejour, + MAX(no_facture) AS no_facture + FROM w_ECRIT_CLI + GROUP BY 1,2,3 + HAVING MAX(CODE) > 0 AND MIN(CODE) = 0 AND + count(DISTINCT CASE WHEN no_facture <> '' THEN no_facture ELSE NULL END) = 1 + ) subview + WHERE w_ECRIT_CLI.SER_REG = subview.SER_REG AND + w_ECRIT_CLI.ECR_JNAL = subview.ECR_JNAL AND + w_ECRIT_CLI.ECR_DATE = subview.ECR_DATE AND + w_ECRIT_CLI.CODE = 0 + ; + + + UPDATE w_ECRIT_CLI SET + ANNEE = subview.ANNEE, + CODE = subview.CODE, + INDICE = subview.INDICE, + no_sejour = subview.no_sejour, + no_facture = subview.no_facture + FROM + ( + SELECT ECR_PIECE, ECR_JNAL, ECR_DATE, + MAX(ANNEE) AS ANNEE, + MAX(CODE) AS CODE, + MAX(INDICE) AS INDICE, + MAX(no_sejour) AS no_sejour, + MAX(no_facture) AS no_facture + FROM w_ECRIT_CLI + GROUP BY 1,2,3 + HAVING MAX(CODE) > 0 AND MIN(CODE) = 0 AND + count(DISTINCT CASE WHEN no_facture <> '' THEN no_facture ELSE NULL END) = 1 + ) subview + WHERE w_ECRIT_CLI.ECR_PIECE = subview.ECR_PIECE AND + w_ECRIT_CLI.ECR_JNAL = subview.ECR_JNAL AND + w_ECRIT_CLI.ECR_DATE = subview.ECR_DATE AND + w_ECRIT_CLI.CODE = 0 + ; + + + + UPDATE w_ECRIT_CLI + SET ECR_ACOMPTE = '1' + WHERE ECR_CEMT LIKE '41%' AND SER_REG IN + ( + SELECT SER_REG + FROM w_ECRIT_CLI + WHERE + ecr_jnal NOT LIKE 'VEN%' AND ecr_plan <> 'C' AND ecr_plan <> 'G' + GROUP BY 1 + HAVING SUM(CASE WHEN ECR_CEMT LIKE '41%' THEN ECR_CREDIT-ECR_DEBIT ELSE 0 END) = + SUM(CASE WHEN ECR_CPTE = 'ACOMPT' THEN ECR_DEBIT-ECR_CREDIT ELSE 0 END) AND + SUM(CASE WHEN ECR_CPTE = 'ACOMPT' THEN 1 ELSE 0 END) > 0 + ) + ; + + + + UPDATE w_ECRIT_CLI + SET medecin_administratif_id = t_medecins_administratifs.oid + FROM activite[PX].t_medecins_administratifs + WHERE ECR_PLAN = 'M' AND + ECR_CPTE = t_medecins_administratifs.code_original + ; + + UPDATE w_ECRIT_CLI + SET tiers_payant_id = + CASE substr(ECR_CPTE,4,1) + WHEN '1' THEN tiers_payant_1_id + WHEN '2' THEN tiers_payant_2_id + WHEN '3' THEN tiers_payant_0_id + END + FROM activite[PX].p_factures + WHERE w_ECRIT_CLI.no_facture = p_factures.no_facture AND + tiers_payant_id = 0 AND + ECR_PLAN = ANY(ARRAY['C','P']) AND substr(ECR_CPTE,4,1) IN ('1','2','3') + ; + + UPDATE w_ECRIT_CLI + SET tiers_payant_id = + CASE substr(ECR_CPTE,4,1) + WHEN '1' THEN tiers_payant_1_id + WHEN '2' THEN tiers_payant_2_id + WHEN '3' THEN tiers_payant_0_id + END + FROM activite[PX].p_sejours + WHERE w_ECRIT_CLI.no_sejour = p_sejours.no_sejour AND + tiers_payant_id = 0 AND + ECR_PLAN = ANY(ARRAY['C','P']) AND substr(ECR_CPTE,4,1) IN ('1','2','3') + ; + + + UPDATE w_ECRIT_CLI + SET tiers_payant_id = tiers_payant_0_id + FROM activite[PX].p_sejours, + prod_sigems.REG + WHERE w_ECRIT_CLI.no_sejour = p_sejours.no_sejour AND + w_ECRIT_CLI.SER_REG = REG.SER_REG AND + CAI_REG = '99999999' AND + tiers_payant_id = 0 AND + ECR_PLAN = ANY(ARRAY['C','P']) + ; + + + + UPDATE w_ECRIT_CLI + SET tiers_payant_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE t_tiers_payant.code_original = 'PATIENT' AND + tiers_payant_id = 0 AND + ECR_PLAN = ANY(ARRAY['C','P']) AND + ANNEE = 'PA' + ; + + + UPDATE w_ECRIT_CLI + SET tiers_payant_id = tiers_payant_1_id + FROM activite[PX].p_factures + WHERE w_ECRIT_CLI.no_facture = p_factures.no_facture AND + tiers_payant_id = 0 AND + ECR_PLAN = ANY(ARRAY['C','P']) AND + ECR_CPTE = 'NOEMIE' + ; + + + -- Journal + INSERT INTO activite[PX].t_journal (code_original, code, texte) + SELECT CODEJ, + CODEJ, + MAX(LIBEL) + FROM prod_sigems.JNAL + WHERE CODEJ NOT IN (SELECT code_original FROM activite[PX].t_journal WHERE code_original IS NOT NULL) + GROUP BY 1,2 + ; + + INSERT INTO activite[PX].t_journal (code_original, code, texte) + SELECT ECR_JNAL, ECR_JNAL, ECR_JNAL + FROM w_ECRIT_cli + WHERE ECR_JNAL NOT IN (SELECT code_original FROM activite[PX].t_journal WHERE code_original IS NOT NULL) + GROUP BY 1 + ; + + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT NUM, NUM, (MIN(ARRAY[TYP,INT1]))[2], (MIN(ARRAY[TYP,INT1||INT2]))[2] + FROM prod_sigems.COMPTE + WHERE TYP IN ('G','H') AND + NUM IN (SELECT ECR_CEMT FROM w_ECRIT_cli) AND + NUM <> '' AND + NUM <> '0' AND + NUM NOT LIKE '0' AND + NUM IS NOT NULL AND + NUM NOT IN (SELECT code_original FROM activite[PX].t_compte) + GROUP BY 1 + ORDER BY 1 + ; + + WITH comptes AS ( + SELECT NUM, + (MIN(ARRAY[TYP,INT1]))[2] AS texte, + (MIN(ARRAY[TYP,INT1||INT2]))[2] AS texte_court + FROM prod_sigems.COMPTE + WHERE TYP IN ('G','H') AND + NUM IN (SELECT ECR_CEMT FROM w_ECRIT_cli) AND + NUM <> '' AND + NUM <> '0' AND + NUM NOT LIKE '0' AND + NUM IS NOT NULL + GROUP BY 1 + ORDER BY 1 + ) + UPDATE activite[PX].t_compte SET + code = comptes.NUM, + texte = comptes.texte, + texte_court = comptes.texte_court + FROM comptes + WHERE NUM = code_original AND + ( + t_compte.code IS DISTINCT FROM NUM OR + t_compte.texte IS DISTINCT FROM comptes.texte OR + t_compte.texte_court IS DISTINCT FROM comptes.texte_court + ) + ; + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT ECR_CEMT, ECR_CEMT, ECR_CEMT, ECR_CEMT + FROM w_ECRIT_CLI + WHERE ECR_CEMT <> '' AND + ECR_CEMT NOT LIKE '0' AND + ECR_CEMT IS NOT NULL AND + ECR_CEMT NOT IN (SELECT code_original FROM activite[PX].t_compte) + GROUP BY 1 + ORDER BY 1 + ; + + -- Mode règlement + UPDATE w_ECRIT_CLI + SET mode_reglement_code = 'CHQ' + WHERE (ECR_CEMT LIKE '51%' OR ECR_CEMT LIKE '53%') AND + ECR_REDUI = 'c' + ; + UPDATE w_ECRIT_CLI + SET mode_reglement_code = 'CB' + WHERE (ECR_CEMT LIKE '51%' OR ECR_CEMT LIKE '53%') AND + ECR_REDUI = 'b' + ; + UPDATE w_ECRIT_CLI + SET mode_reglement_code = 'ESP' + WHERE (ECR_CEMT LIKE '51%' OR ECR_CEMT LIKE '53%') AND + ECR_REDUI = 'e' + ; + UPDATE w_ECRIT_CLI + SET mode_reglement_code = 'VIR' + WHERE (ECR_CEMT LIKE '51%' OR ECR_CEMT LIKE '53%') AND + ECR_REDUI = 'v' + ; + + UPDATE w_ECRIT_CLI + SET mode_reglement_code = 'VIR' + WHERE (ECR_CEMT LIKE '51%' OR ECR_CEMT LIKE '53%') AND + mode_reglement_code = '' AND + (ECR_CHEQ ILIKE 'V%' OR ECR_LIBEL ILIKE 'VRT%' OR ECR_PIECE ILIKE 'VRT%' OR ECR_LIBEL ILIKE 'VIREMENT%') + ; + + UPDATE w_ECRIT_CLI + SET mode_reglement_code = 'CHQ' + WHERE (ECR_CEMT LIKE '51%' OR ECR_CEMT LIKE '53%') AND + mode_reglement_code = '' AND + length(ECR_CHEQ) = 7 AND + to_char(base.cti_to_number(ECR_CHEQ),'FM0000000') = ECR_CHEQ + ; + + UPDATE w_ECRIT_CLI + SET mode_reglement_code = 'CHQ' + WHERE (ECR_CEMT LIKE '51%' OR ECR_CEMT LIKE '53%') AND + mode_reglement_code = '' AND + (ECR_LIBEL ILIKE 'REMISE CHQ%' OR ECR_PIECE LIKE 'CHQ%') + ; + + UPDATE w_ECRIT_CLI + SET mode_reglement_code = 'CB' + WHERE (ECR_CEMT LIKE '51%' OR ECR_CEMT LIKE '53%') AND + mode_reglement_code = '' AND + ECR_LIBEL ILIKE 'REMISE C.B%' + ; + + + UPDATE w_ECRIT_CLI + SET mode_reglement_code = 'VIR' + FROM + ( + SELECT ECR_DATE, ECR_JNAL, ECR_PIECE + FROM w_ECRIT_CLI + GROUP BY 1,2,3 + HAVING MAX(CASE WHEN ECR_CPTE = 'NOEMIE' THEN 1 ELSE 0 END) > 0 AND + MAX(CASE WHEN ECR_CEMT LIKE '51%' OR ECR_CEMT LIKE '53%' THEN 1 ELSE 0 END) > 0 + ) subview + WHERE w_ECRIT_CLI.ECR_DATE = subview.ECR_DATE AND + w_ECRIT_CLI.ECR_JNAL = subview.ECR_JNAL AND + w_ECRIT_CLI.ECR_PIECE = subview.ECR_PIECE AND + mode_reglement_code = '' AND + (w_ECRIT_CLI.ECR_CEMT LIKE '51%' OR w_ECRIT_CLI.ECR_CEMT LIKE '53%') + ; + + UPDATE w_ECRIT_CLI + SET mode_reglement_code = 'VIR' + WHERE (ECR_CEMT LIKE '51%' OR ECR_CEMT LIKE '53%') AND + mode_reglement_code = '' AND + ECR_REDUI = '1' + ; + + UPDATE w_ECRIT_CLI + SET mode_reglement_code = 'ESP' + WHERE (ECR_CEMT LIKE '51%' OR ECR_CEMT LIKE '53%') AND + mode_reglement_code = '' AND + ECR_LIBEL LIKE '%ESPECE%' + ; + + UPDATE w_ECRIT_CLI + SET mode_reglement_code = 'CHQ' + WHERE (ECR_CEMT LIKE '51%' OR ECR_CEMT LIKE '53%') AND + mode_reglement_code = '' AND + ECR_LIBEL LIKE '%CHEQUE%' + ; + + + UPDATE w_ECRIT_CLI + SET mode_reglement_code = subview.mode_reglement_code + FROM + ( + SELECT ECR_DATE, ECR_JNAL, ECR_PIECE, MAX(mode_reglement_code) AS mode_reglement_code + FROM w_ECRIT_CLI + WHERE (ECR_CEMT LIKE '51%' OR ECR_CEMT LIKE '53%') + GROUP BY 1,2,3 + HAVING count(DISTINCT CASE WHEN mode_reglement_code <> '' THEN mode_reglement_code ELSE NULL END) = 1 AND + MAX(CASE WHEN mode_reglement_code = '' THEN 1 ELSE 0 END) > 0 + ) subview + WHERE w_ECRIT_CLI.ECR_DATE = subview.ECR_DATE AND + w_ECRIT_CLI.ECR_JNAL = subview.ECR_JNAL AND + w_ECRIT_CLI.ECR_PIECE = subview.ECR_PIECE AND + w_ECRIT_CLI.mode_reglement_code = '' AND + (w_ECRIT_CLI.ECR_CEMT LIKE '51%' OR w_ECRIT_CLI.ECR_CEMT LIKE '53%') + ; + + + + DROP TABLE IF EXISTS w_ecriture_comptable; + CREATE TEMP TABLE w_ecriture_comptable AS + SELECT + ECR_NUM::text AS code_original, + date(ECR_DATE) AS date_comptable, + CASE + WHEN t_journal.type_journal = 'VE' AND ECR_CEMT LIKE '411%' THEN 'VCLI' + WHEN t_journal.type_journal = 'VE' AND ECR_CEMT LIKE '412%' THEN 'VCLI' + WHEN t_journal.type_journal = 'VE' AND ECR_CEMT LIKE '445%' THEN 'VTVA' + WHEN t_journal.type_journal = 'VE' AND ECR_PLAN = 'G' THEN 'VPRD' + WHEN t_journal.type_journal = 'VE' AND ECR_PLAN = 'M' THEN 'VHON' + WHEN ECR_CEMT LIKE '758%' THEN 'PEPR' + WHEN ECR_CEMT LIKE '658%' THEN 'PEPR' + WHEN t_journal.type_journal <> 'VE' AND ECR_CEMT LIKE '468%' THEN 'ATT' + WHEN t_journal.type_journal <> 'VE' AND ECR_CEMT LIKE '471%' THEN 'ATT' + WHEN t_journal.type_journal <> 'VE' AND ECR_CPTE LIKE 'ACOMPT%' THEN 'ACPT' + WHEN t_journal.type_journal <> 'VE' AND ECR_CPTE LIKE 'NOEMIE%' THEN 'RNOE' + WHEN t_journal.type_journal <> 'VE' AND ECR_CEMT LIKE '411%' THEN 'RCLI' + WHEN t_journal.type_journal <> 'VE' AND ECR_CEMT LIKE '412%' THEN 'RCLI' + WHEN t_journal.type_journal <> 'VE' AND ECR_CEMT LIKE '419%' THEN 'ACPT' + WHEN t_journal.type_journal <> 'VE' AND ECR_CEMT LIKE '51%' THEN 'BANQ' + WHEN t_journal.type_journal <> 'VE' AND ECR_CEMT LIKE '531%' THEN 'BANQ' + WHEN t_journal.type_journal <> 'VE' AND ECR_CEMT LIKE '466%' THEN 'PHON' + WHEN t_journal.type_journal <> 'VE' AND ECR_CEMT LIKE '7%' THEN 'XPRD' + WHEN t_journal.type_journal <> 'VE' AND ECR_CEMT LIKE '445%' THEN 'XTVA' + ELSE '?'||ECR_JNAL END AS type_ecriture, + CASE + WHEN t_journal.type_journal = 'VE' THEN 'VENTE' + ELSE t_journal.type_journal END AS type_piece, + ECR_PIECE||'-'||ECR_JNAL||'-'||to_char(ECR_DATE,'YYYYMMDD') AS piece, + CASE WHEN JNAL.REFBASE = 'H' THEN 'H' ELSE 'C' END AS clinique_honoraire, + COALESCE(t_compte.oid,0) AS compte_id, + COALESCE(t_journal.oid,0) AS journal_id, + COALESCE(p_sejours.oid,0::bigint) AS sejour_id, + COALESCE(p_sejours.no_sejour,''::text) AS no_sejour, + COALESCE(p_factures.oid,0::bigint) AS facture_id, + COALESCE(p_factures.no_facture,'')::text AS no_facture, + medecin_administratif_id, + tiers_payant_id, + mode_reglement_code, + ECR_LIBEL AS texte, + ECR_DEBIT AS montant_debit, + ECR_CREDIT AS montant_credit + FROM w_ECRIT_CLI + JOIN prod_sigems.JNAL ON ECR_JNAL = JNAL.CODEJ + JOIN activite[PX].t_journal ON ECR_JNAL = t_journal.code_original + LEFT JOIN activite[PX].t_compte ON ECR_CEMT = t_compte.code + LEFT JOIN activite[PX].p_sejours ON w_ECRIT_CLI.no_sejour = p_sejours.no_sejour AND w_ECRIT_CLI.no_sejour <> '' + LEFT JOIN activite[PX].p_factures ON w_ECRIT_CLI.no_facture = p_factures.no_facture AND w_ECRIT_CLI.no_facture <> '' + WHERE ECR_DATE >= '[ENV_ADM_ANNEEDEBUT]0101' + ; + + + TRUNCATE activite[PX].p_ecriture_comptable; + INSERT INTO activite[PX].p_ecriture_comptable( + code_original, + date_comptable, + type_ecriture, + type_piece, + piece, + mode_reglement_code, + clinique_honoraire, + compte_id, + journal_id, + sejour_id, + no_sejour, + facture_id, + no_facture, + medecin_id, + tiers_payant_id, + texte, + montant_credit, + montant_debit, + est_comptabilise) + SELECT + code_original, + date_comptable, + type_ecriture, + type_piece, + piece, + mode_reglement_code, + clinique_honoraire, + compte_id, + journal_id, + sejour_id, + no_sejour, + facture_id, + no_facture, + medecin_administratif_id, + tiers_payant_id, + texte, + montant_credit, + montant_debit, + '1'::text AS est_comptabilise + FROM w_ecriture_comptable + ; + + + + ANALYSE activite[PX].p_ecriture_comptable + ; + REINDEX TABLE activite[PX].p_ecriture_comptable + ; + + UPDATE activite[PX].p_ecriture_comptable + SET code_erreur = 'EQP' + FROM + ( + SELECT provider_id, clinique_honoraire, piece + FROM activite[PX].p_ecriture_comptable + GROUP BY 1,2,3 + HAVING SUM(montant_debit-montant_credit) <> 0 + ) subview + WHERE p_ecriture_comptable.provider_id = subview.provider_id AND + p_ecriture_comptable.piece = subview.piece AND + p_ecriture_comptable.clinique_honoraire = subview.clinique_honoraire + ; + + UPDATE activite[PX].p_ecriture_comptable + SET code_erreur = 'FAC' + FROM + ( + SELECT p_ecriture_comptable.provider_id AS provider_id, + p_ecriture_comptable.piece AS piece, + p_ecriture_comptable.clinique_honoraire AS clinique_honoraire + FROM activite[PX].p_ecriture_comptable + JOIN + ( + SELECT p_ecriture_comptable.provider_id, + p_ecriture_comptable.no_facture, + CASE WHEN SUM(CASE WHEN type_ecriture IN ('VPRD','VTVA') THEN montant_credit-montant_debit ELSE 0 END) IS DISTINCT FROM MAX(montant_comptabilise_c) THEN '1' ELSE '0' END AS erreur_vente_c, + CASE WHEN SUM(CASE WHEN type_ecriture IN ('VHON') THEN montant_credit-montant_debit ELSE 0 END) IS DISTINCT FROM MAX(montant_comptabilise_h) THEN '1' ELSE '0' END AS erreur_vente_h + FROM activite[PX].p_ecriture_comptable + LEFT JOIN activite[PX].p_factures ON p_factures.no_facture = p_ecriture_comptable.no_facture + WHERE type_ecriture IN ('VPRD','VTVA','VHON') + GROUP BY 1,2 + ) subview ON + p_ecriture_comptable.provider_id = subview.provider_id AND + p_ecriture_comptable.no_facture = subview.no_facture + WHERE p_ecriture_comptable.type_ecriture IN ('VPRD','VTVA','VHON','VCLI') AND + ( + p_ecriture_comptable.clinique_honoraire = 'C' AND erreur_vente_c = '1' OR + p_ecriture_comptable.clinique_honoraire = 'H' AND erreur_vente_h = '1' + ) + GROUP BY 1,2,3 + ) subview + WHERE p_ecriture_comptable.provider_id = subview.provider_id AND + p_ecriture_comptable.piece = subview.piece AND + p_ecriture_comptable.clinique_honoraire = subview.clinique_honoraire + ; + + + -- Recherche taux TVA + + -- D'après paramétrage + UPDATE activite[PX].p_ecriture_comptable + SET taux_tva = t_compte.taux_tva + FROM activite[PX].t_compte + WHERE p_ecriture_comptable.compte_id = t_compte.oid AND + t_compte.taux_tva <> 0 + ; + + + + + + -- D'abord dans les lignes en 1 pour 1 entre produit et TVA + DROP TABLE IF EXISTS w_ecriture_comptable_tva; + CREATE TEMP TABLE w_ecriture_comptable_tva AS + SELECT p_ecriture_comptable_tva.code_original AS code_original_tva, + p_ecriture_comptable_ht.code_original AS code_original_ht, + p_ecriture_comptable_tva.no_facture, + p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit AS montant_tva, + p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit AS montant_ht, + CASE + WHEN round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.2,2) = p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit THEN 20 + WHEN round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.021,2) = p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit THEN 2.1 + ELSE 0 END AS taux_tva + FROM activite[PX].p_ecriture_comptable p_ecriture_comptable_tva + JOIN activite[PX].p_ecriture_comptable p_ecriture_comptable_ht ON + p_ecriture_comptable_tva.no_facture = p_ecriture_comptable_ht.no_facture AND + p_ecriture_comptable_tva.piece = p_ecriture_comptable_ht.piece AND + p_ecriture_comptable_tva.journal_id = p_ecriture_comptable_ht.journal_id AND + p_ecriture_comptable_tva.clinique_honoraire = p_ecriture_comptable_ht.clinique_honoraire + WHERE p_ecriture_comptable_tva.type_ecriture IN ('VTVA','XTVA') AND + p_ecriture_comptable_tva.taux_tva = 0 AND + p_ecriture_comptable_ht.taux_tva = 0 AND + p_ecriture_comptable_ht.type_ecriture IN ('VPRD','XPRD') AND + ( + round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.2,2) = p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit OR + round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.021,2) = p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit + ) + ; + + DELETE FROM w_ecriture_comptable_tva + USING + ( + SELECT code_original_tva, MIN(code_original_ht) AS code_original_ht + FROM w_ecriture_comptable_tva + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE w_ecriture_comptable_tva.code_original_tva = subview.code_original_tva AND + w_ecriture_comptable_tva.code_original_ht <> subview.code_original_ht + ; + + DELETE FROM w_ecriture_comptable_tva + USING + ( + SELECT code_original_ht, MIN(code_original_tva) AS code_original_tva + FROM w_ecriture_comptable_tva + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE w_ecriture_comptable_tva.code_original_ht = subview.code_original_ht AND + w_ecriture_comptable_tva.code_original_tva <> subview.code_original_tva + ; + + UPDATE activite[PX].p_ecriture_comptable + SET taux_tva = w_ecriture_comptable_tva.taux_tva + FROM w_ecriture_comptable_tva + WHERE p_ecriture_comptable.code_original = w_ecriture_comptable_tva.code_original_tva AND + w_ecriture_comptable_tva.taux_tva <> 0 + ; + + UPDATE activite[PX].p_ecriture_comptable + SET taux_tva = w_ecriture_comptable_tva.taux_tva + FROM w_ecriture_comptable_tva + WHERE p_ecriture_comptable.code_original = w_ecriture_comptable_tva.code_original_ht AND + w_ecriture_comptable_tva.taux_tva <> 0 + ; + + + -- Ensuite dans les lignes en 1 pour 1 entre produit et TVA (cas de montants en double) + DROP TABLE IF EXISTS w_ecriture_comptable_tva; + CREATE TEMP TABLE w_ecriture_comptable_tva AS + SELECT p_ecriture_comptable_tva.code_original AS code_original_tva, + p_ecriture_comptable_ht.code_original AS code_original_ht, + p_ecriture_comptable_tva.no_facture, + p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit AS montant_tva, + p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit AS montant_ht, + CASE + WHEN round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.2,2) = p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit THEN 20 + WHEN round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.021,2) = p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit THEN 2.1 + ELSE 0 END AS taux_tva + FROM activite[PX].p_ecriture_comptable p_ecriture_comptable_tva + JOIN activite[PX].p_ecriture_comptable p_ecriture_comptable_ht ON + p_ecriture_comptable_tva.no_facture = p_ecriture_comptable_ht.no_facture AND + p_ecriture_comptable_tva.piece = p_ecriture_comptable_ht.piece AND + p_ecriture_comptable_tva.journal_id = p_ecriture_comptable_ht.journal_id AND + p_ecriture_comptable_tva.clinique_honoraire = p_ecriture_comptable_ht.clinique_honoraire + WHERE p_ecriture_comptable_tva.type_ecriture IN ('VTVA','XTVA') AND + p_ecriture_comptable_tva.taux_tva = 0 AND + p_ecriture_comptable_ht.taux_tva = 0 AND + p_ecriture_comptable_ht.type_ecriture IN ('VPRD','XPRD') AND + ( + round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.2,2) = p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit OR + round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.021,2) = p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit + ) + ; + + DELETE FROM w_ecriture_comptable_tva + USING + ( + SELECT code_original_tva, MIN(code_original_ht) AS code_original_ht + FROM w_ecriture_comptable_tva + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE w_ecriture_comptable_tva.code_original_tva = subview.code_original_tva AND + w_ecriture_comptable_tva.code_original_ht <> subview.code_original_ht + ; + + DELETE FROM w_ecriture_comptable_tva + USING + ( + SELECT code_original_ht, MIN(code_original_tva) AS code_original_tva + FROM w_ecriture_comptable_tva + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE w_ecriture_comptable_tva.code_original_ht = subview.code_original_ht AND + w_ecriture_comptable_tva.code_original_tva <> subview.code_original_tva + ; + + UPDATE activite[PX].p_ecriture_comptable + SET taux_tva = w_ecriture_comptable_tva.taux_tva + FROM w_ecriture_comptable_tva + WHERE p_ecriture_comptable.code_original = w_ecriture_comptable_tva.code_original_tva AND + w_ecriture_comptable_tva.taux_tva <> 0 + ; + + UPDATE activite[PX].p_ecriture_comptable + SET taux_tva = w_ecriture_comptable_tva.taux_tva + FROM w_ecriture_comptable_tva + WHERE p_ecriture_comptable.code_original = w_ecriture_comptable_tva.code_original_ht AND + w_ecriture_comptable_tva.taux_tva <> 0 + ; + + + + + -- Dans les pieces avec plusieurs lignes de TVA pour une seule ligne de produits + DROP TABLE IF EXISTS w_ecriture_comptable_2; + CREATE TEMP TABLE w_ecriture_comptable_2 AS + SELECT clinique_honoraire, + piece, + journal_id, + no_facture, + type_ecriture, + CASE WHEN type_ecriture IN ('VTVA','XTVA') THEN 0 ELSE compte_id END AS compte_id, + taux_tva, + base.cti_array_accum(code_original) AS code_original_array, + SUM(montant_credit) AS montant_credit, + SUM(montant_debit) AS montant_debit + FROM activite[PX].p_ecriture_comptable + WHERE taux_tva = 0 AND type_ecriture IN ('VPRD','VTVA','XPRD','XTVA') + GROUP BY 1,2,3,4,5,6,7 + ; + + ANALYSE w_ecriture_comptable_2 + ; + + DROP TABLE IF EXISTS w_ecriture_comptable_tva; + CREATE TEMP TABLE w_ecriture_comptable_tva AS + SELECT p_ecriture_comptable_tva.code_original_array AS code_original_array_tva, + p_ecriture_comptable_ht.code_original_array AS code_original_array_ht, + p_ecriture_comptable_tva.no_facture, + p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit AS montant_tva, + p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit AS montant_ht, + CASE + WHEN round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.2,0) = round(p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit,0) THEN 20 + WHEN floor((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.2) = floor(p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit) THEN 20 + WHEN round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.021,1) = round(p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit,1) THEN 2.1 + ELSE 0 END AS taux_tva + FROM w_ecriture_comptable_2 p_ecriture_comptable_tva + JOIN w_ecriture_comptable_2 p_ecriture_comptable_ht ON + p_ecriture_comptable_tva.no_facture = p_ecriture_comptable_ht.no_facture AND + p_ecriture_comptable_tva.piece = p_ecriture_comptable_ht.piece AND + p_ecriture_comptable_tva.journal_id = p_ecriture_comptable_ht.journal_id AND + p_ecriture_comptable_tva.clinique_honoraire = p_ecriture_comptable_ht.clinique_honoraire + WHERE p_ecriture_comptable_tva.type_ecriture IN ('VTVA','XTVA') AND + p_ecriture_comptable_tva.taux_tva = 0 AND + p_ecriture_comptable_ht.taux_tva = 0 AND + p_ecriture_comptable_ht.type_ecriture IN ('VPRD','XPRD') AND + ( + round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.2,0) = round(p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit,0) OR + floor((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.2) = floor(p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit) OR + round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.021,1) = round(p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit,1) + ) + ; + + DELETE FROM w_ecriture_comptable_tva + WHERE code_original_array_tva IN + ( + SELECT code_original_array_tva + FROM w_ecriture_comptable_tva + GROUP BY 1 + HAVING count(*) > 1 + ) + ; + + DELETE FROM w_ecriture_comptable_tva + WHERE code_original_array_ht IN + ( + SELECT code_original_array_ht + FROM w_ecriture_comptable_tva + GROUP BY 1 + HAVING count(*) > 1 + ) + ; + + ANALYSE w_ecriture_comptable_tva + ; + + UPDATE activite[PX].p_ecriture_comptable + SET taux_tva = w_ecriture_comptable_tva.taux_tva + FROM w_ecriture_comptable_tva + WHERE p_ecriture_comptable.code_original = ANY(w_ecriture_comptable_tva.code_original_array_tva) AND + type_ecriture IN ('VTVA','XTVA') AND + w_ecriture_comptable_tva.taux_tva <> 0 + ; + + UPDATE activite[PX].p_ecriture_comptable + SET taux_tva = w_ecriture_comptable_tva.taux_tva + FROM w_ecriture_comptable_tva + WHERE p_ecriture_comptable.code_original = ANY(w_ecriture_comptable_tva.code_original_array_ht) AND + type_ecriture IN ('VPRD','XPRD') AND + w_ecriture_comptable_tva.taux_tva <> 0 + ; + + -- Dans les pieces avec plusieurs lignes de TVA et plusieurs lignes de produit (Avec TVA paramétrée) + DROP TABLE IF EXISTS w_ecriture_comptable_2; + CREATE TEMP TABLE w_ecriture_comptable_2 AS + SELECT clinique_honoraire, + piece, + journal_id, + no_facture, + type_ecriture, + CASE WHEN t_compte.taux_tva <> 0 THEN '1' ELSE '0' END AS has_tva, + p_ecriture_comptable.taux_tva, + base.cti_array_accum(p_ecriture_comptable.code_original) AS code_original_array, + SUM(montant_credit) AS montant_credit, + SUM(montant_debit) AS montant_debit + FROM activite[PX].p_ecriture_comptable + JOIN activite[PX].t_compte ON compte_id = t_compte.oid + WHERE p_ecriture_comptable.taux_tva = 0 AND + ( + type_ecriture IN ('VPRD','XPRD') AND t_compte.taux_tva <> 0 OR + type_ecriture IN ('VTVA','XTVA') + ) + GROUP BY 1,2,3,4,5,6,7 + ; + + ANALYSE w_ecriture_comptable_2 + ; + + DROP TABLE IF EXISTS w_ecriture_comptable_tva; + CREATE TEMP TABLE w_ecriture_comptable_tva AS + SELECT p_ecriture_comptable_tva.code_original_array AS code_original_array_tva, + p_ecriture_comptable_ht.code_original_array AS code_original_array_ht, + p_ecriture_comptable_tva.no_facture, + p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit AS montant_tva, + p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit AS montant_ht, + CASE + WHEN round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.2,0) = round(p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit,0) THEN 20 + WHEN floor((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.2) = floor(p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit) THEN 20 + WHEN round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.021,1) = round(p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit,1) THEN 2.1 + ELSE 0 END AS taux_tva + FROM w_ecriture_comptable_2 p_ecriture_comptable_tva + JOIN w_ecriture_comptable_2 p_ecriture_comptable_ht ON + p_ecriture_comptable_tva.no_facture = p_ecriture_comptable_ht.no_facture AND + p_ecriture_comptable_tva.piece = p_ecriture_comptable_ht.piece AND + p_ecriture_comptable_tva.journal_id = p_ecriture_comptable_ht.journal_id AND + p_ecriture_comptable_tva.clinique_honoraire = p_ecriture_comptable_ht.clinique_honoraire + WHERE p_ecriture_comptable_tva.type_ecriture IN ('VTVA','XTVA') AND + p_ecriture_comptable_tva.taux_tva = 0 AND + p_ecriture_comptable_ht.taux_tva = 0 AND + p_ecriture_comptable_ht.type_ecriture IN ('VPRD','XPRD') AND + ( + round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.2,0) = round(p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit,0) OR + floor((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.2) = floor(p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit) OR + round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.021,1) = round(p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit,1) + ) + ; + + DELETE FROM w_ecriture_comptable_tva + WHERE code_original_array_tva IN + ( + SELECT code_original_array_tva + FROM w_ecriture_comptable_tva + GROUP BY 1 + HAVING count(*) > 1 + ) + ; + + DELETE FROM w_ecriture_comptable_tva + WHERE code_original_array_ht IN + ( + SELECT code_original_array_ht + FROM w_ecriture_comptable_tva + GROUP BY 1 + HAVING count(*) > 1 + ) + ; + + ANALYSE w_ecriture_comptable_tva + ; + + UPDATE activite[PX].p_ecriture_comptable + SET taux_tva = w_ecriture_comptable_tva.taux_tva + FROM w_ecriture_comptable_tva + WHERE p_ecriture_comptable.code_original = ANY(w_ecriture_comptable_tva.code_original_array_tva) AND + type_ecriture IN ('VTVA','XTVA') AND + w_ecriture_comptable_tva.taux_tva <> 0 + ; + + UPDATE activite[PX].p_ecriture_comptable + SET taux_tva = w_ecriture_comptable_tva.taux_tva + FROM w_ecriture_comptable_tva + WHERE p_ecriture_comptable.code_original = ANY(w_ecriture_comptable_tva.code_original_array_ht) AND + type_ecriture IN ('VPRD','XPRD') AND + w_ecriture_comptable_tva.taux_tva <> 0 + ; + + + -- Dans les pieces avec plusieurs lignes de TVA et plusieurs lignes de produit (avec nombre significatif > 100) + DROP TABLE IF EXISTS w_ecriture_comptable_2; + CREATE TEMP TABLE w_ecriture_comptable_2 AS + SELECT clinique_honoraire, + piece, + journal_id, + no_facture, + type_ecriture, + CASE WHEN t_compte.taux_tva <> 0 THEN '1' ELSE '0' END AS has_tva, + p_ecriture_comptable.taux_tva, + base.cti_array_accum(code_original) AS code_original_array, + SUM(montant_credit) AS montant_credit, + SUM(montant_debit) AS montant_debit + FROM activite[PX].p_ecriture_comptable + JOIN (SELECT compte_id AS oid, MAX(p_ecriture_comptable.taux_tva) AS taux_tva FROm activite[PX].p_ecriture_comptable WHERE p_ecriture_comptable.taux_tva <> 0 GROUP BY 1 HAVING count(*) > 100) t_compte ON p_ecriture_comptable.compte_id = t_compte.oid + WHERE p_ecriture_comptable.taux_tva = 0 AND + ( + type_ecriture IN ('VPRD','XPRD') AND t_compte.taux_tva <> 0 OR + type_ecriture IN ('VTVA','XTVA') + ) + GROUP BY 1,2,3,4,5,6,7 + ; + + ANALYSE w_ecriture_comptable_2 + ; + + DROP TABLE IF EXISTS w_ecriture_comptable_tva; + CREATE TEMP TABLE w_ecriture_comptable_tva AS + SELECT p_ecriture_comptable_tva.code_original_array AS code_original_array_tva, + p_ecriture_comptable_ht.code_original_array AS code_original_array_ht, + p_ecriture_comptable_tva.no_facture, + p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit AS montant_tva, + p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit AS montant_ht, + CASE + WHEN round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.2,0) = round(p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit,0) THEN 20 + WHEN floor((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.2) = floor(p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit) THEN 20 + ELSE 0 END AS taux_tva + FROM w_ecriture_comptable_2 p_ecriture_comptable_tva + JOIN w_ecriture_comptable_2 p_ecriture_comptable_ht ON + p_ecriture_comptable_tva.no_facture = p_ecriture_comptable_ht.no_facture AND + p_ecriture_comptable_tva.piece = p_ecriture_comptable_ht.piece AND + p_ecriture_comptable_tva.journal_id = p_ecriture_comptable_ht.journal_id AND + p_ecriture_comptable_tva.clinique_honoraire = p_ecriture_comptable_ht.clinique_honoraire + WHERE p_ecriture_comptable_tva.type_ecriture IN ('VTVA','XTVA') AND + p_ecriture_comptable_tva.taux_tva = 0 AND + p_ecriture_comptable_ht.taux_tva = 0 AND + p_ecriture_comptable_ht.type_ecriture IN ('VPRD','XPRD') AND + ( + round((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.2,0) = round(p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit,0) OR + floor((p_ecriture_comptable_ht.montant_credit-p_ecriture_comptable_ht.montant_debit)*0.2) = floor(p_ecriture_comptable_tva.montant_credit-p_ecriture_comptable_tva.montant_debit) + ) + ; + + DELETE FROM w_ecriture_comptable_tva + WHERE code_original_array_tva IN + ( + SELECT code_original_array_tva + FROM w_ecriture_comptable_tva + GROUP BY 1 + HAVING count(*) > 1 + ) + ; + + DELETE FROM w_ecriture_comptable_tva + WHERE code_original_array_ht IN + ( + SELECT code_original_array_ht + FROM w_ecriture_comptable_tva + GROUP BY 1 + HAVING count(*) > 1 + ) + ; + + ANALYSE w_ecriture_comptable_tva + ; + + UPDATE activite[PX].p_ecriture_comptable + SET taux_tva = w_ecriture_comptable_tva.taux_tva + FROM w_ecriture_comptable_tva + WHERE p_ecriture_comptable.code_original = ANY(w_ecriture_comptable_tva.code_original_array_tva) AND + type_ecriture IN ('VTVA','XTVA') AND + w_ecriture_comptable_tva.taux_tva <> 0 + ; + + UPDATE activite[PX].p_ecriture_comptable + SET taux_tva = w_ecriture_comptable_tva.taux_tva + FROM w_ecriture_comptable_tva + WHERE p_ecriture_comptable.code_original = ANY(w_ecriture_comptable_tva.code_original_array_ht) AND + type_ecriture IN ('VPRD','XPRD') AND + w_ecriture_comptable_tva.taux_tva <> 0 + ; + + + -- Taux par defaut TVA + UPDATE activite[PX].p_ecriture_comptable + SET taux_tva = subview.taux_tva + FROM + ( + SELECT compte_id, MAX(taux_tva) AS taux_tva + FROM activite[PX].p_ecriture_comptable + WHERE type_ecriture IN ('VTVA','XTVA') AND taux_tva <> 0 + GROUP BY 1 + ) subview + WHERE type_ecriture IN ('VTVA','XTVA') AND p_ecriture_comptable.taux_tva = 0 AND + p_ecriture_comptable.compte_id = subview.compte_id + ; + + -- Taux par defaut produits + UPDATE activite[PX].p_ecriture_comptable + SET taux_tva = t_compte.taux_tva + FROM activite[PX].t_compte, + ( + SELECT clinique_honoraire, journal_id, piece, no_facture, MAX(taux_tva) AS taux_tva + FROM activite[PX].p_ecriture_comptable + WHERE type_ecriture IN ('VTVA','XTVA') + GROUP BY 1,2,3,4 + ) subview + WHERE p_ecriture_comptable.compte_id = t_compte.oid AND + t_compte.taux_tva <> 0 AND + p_ecriture_comptable.clinique_honoraire = subview.clinique_honoraire AND + p_ecriture_comptable.journal_id = subview.journal_id AND + p_ecriture_comptable.piece = subview.piece AND + p_ecriture_comptable.no_facture = subview.no_facture AND + p_ecriture_comptable.taux_tva = 0 + ; + + -- Taux de TVA qui ne devraient pas être (pieces sans TVA) + DROP TABLE IF EXISTS w_ecriture_piece_calc_tva; + CREATE TEMP TABLE w_ecriture_piece_calc_tva AS + SELECT clinique_honoraire, + piece, + SUM(COALESCE(total_tva,0)) AS total_tva, + SUM(COALESCE(total_tva_calc,0)) AS total_tva_calc, + SUM(COALESCE(total_tva_calc_021,0)) AS total_tva_calc_021, + SUM(COALESCE(total_tva_calc_20,0)) AS total_tva_calc_20, + SUM(COALESCE(total_tva_calc_10,0)) AS total_tva_calc_10, + SUM(COALESCE(total_tva_calc_55,0)) AS total_tva_calc_55 + FROM + ( + SELECT clinique_honoraire, + piece, + t_compte.code, + t_compte.texte, + SUM(montant_credit-montant_debit) , + SUM(CASE WHEN t_compte.code LIKE '445%' THEN montant_credit-montant_debit ELSE NULL END) AS total_tva, + SUM(CASE WHEN t_compte.code NOT LIKE '445%' AND p_ecriture_comptable.taux_tva <> 0 THEN (montant_credit-montant_debit)*p_ecriture_comptable.taux_tva/100 ELSE null END ) AS total_tva_calc, + SUM(CASE WHEN t_compte.code NOT LIKE '445%' AND p_ecriture_comptable.taux_tva = 2.1 THEN (montant_credit-montant_debit)*p_ecriture_comptable.taux_tva/100 ELSE null END ) AS total_tva_calc_021, + SUM(CASE WHEN t_compte.code NOT LIKE '445%' AND p_ecriture_comptable.taux_tva = 20 THEN (montant_credit-montant_debit)*p_ecriture_comptable.taux_tva/100 ELSE null END ) AS total_tva_calc_20, + SUM(CASE WHEN t_compte.code NOT LIKE '445%' AND p_ecriture_comptable.taux_tva = 10 THEN (montant_credit-montant_debit)*p_ecriture_comptable.taux_tva/100 ELSE null END ) AS total_tva_calc_10, + SUM(CASE WHEN t_compte.code NOT LIKE '445%' AND p_ecriture_comptable.taux_tva = 5.5 THEN (montant_credit-montant_debit)*p_ecriture_comptable.taux_tva/100 ELSE null END ) AS total_tva_calc_55 + FROM activite[PX].p_ecriture_comptable + JOIN activite[PX].t_compte ON compte_id = t_compte.oid + WHERE type_ecriture IN ('VPRD','VTVA') + GROUP BY 1,2,3,4 + ORDER BY 1,2,4 + ) subview + GROUP BY 1,2 + HAVING abs(sum(COALESCE(total_tva,0)) - sum(COALESCE(total_tva_calc,0))) > 1 + ; + + ANALYSE w_ecriture_piece_calc_tva + ; + + UPDATE activite[PX].p_ecriture_comptable + SET taux_tva = 0 + FROM w_ecriture_piece_calc_tva + WHERE p_ecriture_comptable.clinique_honoraire = w_ecriture_piece_calc_tva.clinique_honoraire AND + p_ecriture_comptable.piece = w_ecriture_piece_calc_tva.piece AND + p_ecriture_comptable.taux_tva <> 0 AND + total_tva = 0 + ; + + UPDATE activite[PX].p_ecriture_comptable + SET taux_tva = 0 + FROM w_ecriture_piece_calc_tva + WHERE p_ecriture_comptable.clinique_honoraire = w_ecriture_piece_calc_tva.clinique_honoraire AND + p_ecriture_comptable.piece = w_ecriture_piece_calc_tva.piece AND + p_ecriture_comptable.taux_tva = 2.1 AND + ( + round(total_tva,0) = round(total_tva_calc_20+total_tva_calc_10+total_tva_calc_55,0) OR + floor(total_tva) = floor(total_tva_calc_20+total_tva_calc_10+total_tva_calc_55) + ) + ; + + ]]> + + + + 0 THEN '1' ELSE '0' END AS une_ecriture + FROM prod_sigems.ECRIT; + + DROP TABLE IF EXISTS w_ECRIT_comptes_clients; + CREATE TEMP TABLE w_ECRIT_comptes_clients AS + SELECT ECR_PLAN, ECR_CEMT AS ECR_CPTE + FROM w_ECRIT_CLI + JOIN prod_sigems.COMPTE ON COMPTE.NUM = ECR_CPTE AND ECR_PLAN = COMPTE.TYP + WHERE ECR_PLAN IN ('C','P') AND + w_ECRIT_CLI.ECR_AGE <> '*S' -- specifique ELSAN pour ignorer ecritures calabet dans esquirol + GROUP BY 1,2 + ; + + CREATE INDEX w_ECRIT_comptes_clients_i1 + ON w_ECRIT_comptes_clients + USING btree + (ECR_CPTE); + + DROP TABLE IF EXISTS w_factures_comptables; + + CREATE TEMP TABLE w_factures_comptables AS + SELECT + 0 AS facture_id, + CASE WHEN ECRIT.ANNEE <> '' THEN ECRIT.ANNEE || to_char(ECRIT.CODE,'FM900000') || '.' || to_char(ECRIT.INDICE,'FM9999900') ELSE NULL END AS no_facture, + date_trunc('month', ECR_DATE) + interval '1 month' - interval '1 day' AS date_comptable, + SUM(CASE WHEN JNAL.REFBASE = 'G' AND ECR_JNAL LIKE 'VEN%' THEN ECR_DEBIT - ECR_CREDIT ELSE 0 END) AS montant_ventes_c, + SUM(CASE WHEN JNAL.REFBASE = 'G' AND ECR_JNAL NOT LIKE 'VEN%' THEN ECR_CREDIT - ECR_DEBIT ELSE 0 END) AS montant_reglements_c, + SUM(CASE WHEN JNAL.REFBASE = 'H' AND ECR_JNAL LIKE 'VEN%' THEN ECR_DEBIT - ECR_CREDIT ELSE 0 END) AS montant_ventes_h, + SUM(CASE WHEN JNAL.REFBASE = 'H' AND ECR_JNAL NOT LIKE 'VEN%' THEN ECR_CREDIT - ECR_DEBIT ELSE 0 END) AS montant_reglements_h + FROM w_ECRIT_cli ECRIT + JOIN prod_sigems.JNAL ON ECR_JNAL = JNAL.CODEJ + JOIN w_ECRIT_comptes_clients ON + ECRIT.ECR_CEMT = w_ECRIT_comptes_clients.ECR_CPTE AND + ECRIT.ECR_PLAN = w_ECRIT_comptes_clients.ECR_PLAN + WHERE + ECR_DATE >= '[ENV_ADM_ANNEEDEBUT]0101' AND + ECRIT.ECR_CPTE <> 'NOEMIE' AND + ECRIT.ECR_CPTE <> 'ANCIEN' AND + ECRIT.ECR_CPTE <> 'ACOMPT' AND + ECRIT.ECR_CPTE NOT LIKE 'ECART%' AND + ECRIT.ECR_CPTE NOT LIKE 'ACPT%' AND + ECRIT.ECR_CPTE <> '411FTN' AND + ECRIT.ECR_JNAL <> 'OD' AND + ECRIT.ECR_PLAN = ANY(ARRAY['C','P']) AND + ECRIT.ECR_AGE <> '*S' -- specifique ELSAN pour ignorer ecritures calabet dans esquirol + GROUP BY 1,2,3; + + -- Dans certains cas, les honoraires des médecins salariés ne sont pas dans la comptabilisée + -- On ajoute alors fictivement ces honoraires aux montants retrouvés en compta pour que le chiffrier soit juste + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'SIGEMS_CPTMEDSAL', + 'Comptabilisation honoraires des médecins salariés', + '0', + '1=Honoraires non comptabilisés, ajout fictif dans chiffrier' + WHERE 'SIGEMS_CPTMEDSAL' NOT IN (SELECT code FROM activite.t_divers); + ; + + INSERT INTO w_factures_comptables + SELECT + 0::bigint AS facture_id, + p_factures.no_facture AS no_facture, + p_factures.date_vente AS date_comptable, + SUM(p_factures_lignes_c.montant_comptabilise) AS montant_ventes_c, + 0::numeric AS montant_reglements_c, + 0::numeric AS montant_ventes_h, + 0::numeric AS montant_reglements_h + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite.t_divers ON + t_divers.code = 'SIGEMS_CPTMEDSAL' AND + t_divers.valeur = '1' + WHERE p_factures.date_vente >= '[ENV_ADM_ANNEEDEBUT]0101' AND + p_factures.date_vente <= date(now()) AND + p_factures_lignes_c.montant_comptabilise <> 0 AND + p_factures_lignes_c.montant_facture = 0 + GROUP BY 1,2,3 + ; + + + TRUNCATE activite[PX].p_chiffrier_comptable; + + INSERT INTO activite[PX].p_chiffrier_comptable( + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_solde_client_c, + montant_ventes_h, + montant_reglements_h, + montant_solde_client_h) + SELECT + date_comptable, + SUM(montant_ventes_c), + SUM(montant_reglements_c), + 0 AS montant_solde_client_c, + SUM(montant_ventes_h), + SUM(montant_reglements_h), + 0 AS montant_solde_client_h + FROM w_factures_comptables + WHERE no_facture IS NOT NULL AND + date_comptable >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1; + + TRUNCATE activite[PX].p_factures_comptables; + + INSERT INTO activite[PX].p_factures_comptables( + facture_id, + no_facture, + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_ventes_h, + montant_reglements_h) + + SELECT + facture_id, + no_facture, + date_comptable, + SUM(montant_ventes_c), + SUM(montant_reglements_c), + SUM(montant_ventes_h), + SUM(montant_reglements_h) + FROM w_factures_comptables + WHERE no_facture IS NOT NULL AND + date_comptable >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1,2,3; + + + + ]]> + + + + + + + + + + + + + 'PA' AND CH1 <> '' + GROUP BY 1,2 + ORDER BY 1,2 + ) subview + GROUP BY 1 + HAVING count(*) > 1; + + CREATE INDEX w_services_type_exception_i1 + ON w_services_type_exception + USING btree + (SER); + + INSERT INTO w_services_type_exception + SELECT SER_SEJ AS SER, (MIN(Array[to_char(nb,'FM000000000'),CH1]))[2] AS CH1_exeption + FROM + ( + SELECT + SER_SEJ, CH1, count(*) AS nb + FROM prod_sigems.SEJOUR + JOIN prod_sigems.DOSSIER_Y ON SEJOUR.COD_SEJ = DOSSIER_Y.CODE AND + SEJOUR.ANN_SEJ = DOSSIER_Y.ANNEE + LEFT JOIN w_services_type_exception ON SER_SEJ = SER + WHERE ANN_SEJ <> 'PA' AND CH1 <> '' AND w_services_type_exception.SER IS NULL + GROUP BY 1,2 + ORDER BY 1,2 + ) subview + GROUP BY 1 + HAVING count(*) > 1; + + DROP TABLE IF EXISTS w_DOSSIER_CH1; + CREATE TEMP TABLE w_DOSSIER_CH1 AS + SELECT + ANN_DOS AS ANN_CH1, COD_DOS AS COD_CH1, SER_DOS AS SER_CH1, trim(SER_DOS) || (CASE WHEN CH1 = 'PSPH' THEN 'E' ELSE 'O' END) AS SER_CH1_NEW + FROM prod_sigems.DOSSIER + JOIN prod_sigems.DOSSIER_Y ON DOSSIER.COD_DOS = DOSSIER_Y.CODE AND + DOSSIER.ANN_DOS = DOSSIER_Y.ANNEE + JOIN w_services_type_exception ON SER_DOS = SER + WHERE ANN_DOS <> 'PA' AND CH1 = CH1_exeption + GROUP BY 1,2,3,4 + ORDER BY 1,2,3; + + CREATE INDEX w_DOSSIER_CH1_i1 + ON w_DOSSIER_CH1 + USING btree + (COD_CH1); + + INSERT INTO w_DOSSIER_CH1 + SELECT + ANN_SEJ AS ANN_CH1, COD_SEJ AS COD_CH1, SER_SEJ AS SER_CH1, trim(SER_SEJ) || (CASE WHEN CH1 = 'PSPH' THEN 'E' ELSE 'O' END) AS SER_CH1_NEW + FROM prod_sigems.SEJOUR + JOIN prod_sigems.DOSSIER_Y ON SEJOUR.COD_SEJ = DOSSIER_Y.CODE AND + SEJOUR.ANN_SEJ = DOSSIER_Y.ANNEE + JOIN w_services_type_exception ON SER_SEJ = SER + LEFT JOIN w_DOSSIER_CH1 ON SEJOUR.COD_SEJ = w_DOSSIER_CH1.COD_CH1 AND + SEJOUR.ANN_SEJ = w_DOSSIER_CH1.ANN_CH1 AND + SEJOUR.SER_SEJ = w_DOSSIER_CH1.SER_CH1 + WHERE ANN_SEJ <> 'PA' AND CH1 = CH1_exeption AND + w_DOSSIER_CH1.SER_CH1 IS NULL + GROUP BY 1,2,3,4 + ORDER BY 1,2,3; + + ALTER TABLE prod_sigems.DOSSIER ALTER COLUMN SER_DOS TYPE text; + + UPDATE prod_sigems.DOSSIER + SET SER_DOS = SER_CH1_NEW + FROM w_DOSSIER_CH1 + WHERE ANN_CH1 = ANN_DOS AND + COD_CH1 = COD_DOS AND + SER_CH1 = SER_DOS; + + ALTER TABLE prod_sigems.SEJOUR ALTER COLUMN SER_SEJ TYPE text; + + UPDATE prod_sigems.SEJOUR + SET SER_SEJ = SER_CH1_NEW + FROM w_DOSSIER_CH1 + WHERE ANN_CH1 = ANN_SEJ AND + COD_CH1 = COD_SEJ AND + SER_CH1 = SER_SEJ; + + ALTER TABLE prod_sigems.LIG_CLINI ALTER COLUMN SER_LCL TYPE text; + + UPDATE prod_sigems.LIG_CLINI + SET SER_LCL = SER_CH1_NEW + FROM w_DOSSIER_CH1 + WHERE ANN_CH1 = ANN_LCL AND + COD_CH1 = COD_LCL AND + SER_CH1 = SER_LCL; + + ALTER TABLE prod_sigems.LIG_HONOR ALTER COLUMN SER_LHO TYPE text; + + UPDATE prod_sigems.LIG_HONOR + SET SER_LHO = SER_CH1_NEW + FROM w_DOSSIER_CH1 + WHERE ANN_CH1 = ANN_LHO AND + COD_CH1 = COD_LHO AND + SER_CH1 = SER_LHO; + + ALTER TABLE prod_sigems.SERVICE + ALTER COLUMN COD_SER TYPE text, + ALTER COLUMN NOM_SER TYPE text; + + INSERT INTO prod_sigems.SERVICE (COD_SER, NOM_SER, DMT_SER) + SELECT trim(COD_SER) || (CASE WHEN CH1_exeption = 'PSPH' THEN 'E' ELSE 'O' END), + replace(replace(replace(NOM_SER,'ESPIC',''),'OQN',''),' ',' ') || (CASE WHEN CH1_exeption = 'PSPH' THEN ' ESPIC' ELSE ' OQN' END), + DMT_SER + FROM prod_sigems.SERVICE + JOIN w_services_type_exception ON COD_SER = SER + WHERE (trim(COD_SER) || (CASE WHEN CH1_exeption = 'PSPH' THEN 'E' ELSE 'O' END)) NOT IN + (SELECT COD_SER FROM prod_sigems.SERVICE); + + ALTER TABLE prod_sigems.ANALYG ALTER COLUMN SER_ANA TYPE text; + + INSERT INTO prod_sigems.ANALYG(PRD_ANA, SER_ANA, DMT_ANA, MDT_ANA, RIS_ANA, ISO_ANA, TAU_ANA, CPT_ANA) + SELECT ANALYG.PRD_ANA, COD_SER, ANALYG.DMT_ANA, ANALYG.MDT_ANA, ANALYG.RIS_ANA, ANALYG.ISO_ANA, ANALYG.TAU_ANA, ANALYG.CPT_ANA + FROM prod_sigems.ANALYG + JOIN prod_sigems.SERVICE ON SER_ANA = substr(COD_SER,1,4) AND + substr(COD_SER,5,1) IN ('E', 'O') + LEFT JOIN prod_sigems.ANALYG ANALYG_deja ON + ANALYG.PRD_ANA = ANALYG_deja.PRD_ANA AND + COD_SER = ANALYG_deja.SER_ANA AND + ANALYG.DMT_ANA = ANALYG_deja.DMT_ANA AND + ANALYG.MDT_ANA = ANALYG_deja.MDT_ANA AND + ANALYG.RIS_ANA = ANALYG_deja.RIS_ANA AND + ANALYG.ISO_ANA = ANALYG_deja.ISO_ANA AND + ANALYG.TAU_ANA = ANALYG_deja.TAU_ANA AND + ANALYG.CPT_ANA = ANALYG_deja.CPT_ANA + WHERE ANALYG_deja.PRD_ANA IS NULL; + + + + ]]> + + + + '2' AND + replace(code_original,'(2)','(1)') NOT IN (select code_original FROM activite[PX].t_tiers_payant) + ; + + UPDATE activite[PX].t_tiers_payant + SET code_original = replace(code_original,'(1)','(2)') + WHERE code_original like '%(1)' AND + type_tiers_payant <> '1' AND + replace(code_original,'(1)','(2)') NOT IN (select code_original FROM activite[PX].t_tiers_payant) + ; + + + INSERT INTO activite[PX].t_tiers_payant(code_original, code, type_tiers_payant, texte, texte_court) + SELECT COD_TPA, COD_TPA, + MAX(CASE WHEN length(COD_TPA) = 8 AND substr(COD_TPA,1,2) BETWEEN '01' AND '99' THEN '1' ELSE '2' END), + MAX(NOM_TPA), MAX(NOM_TPA) + FROM prod_sigems.TIERS_PAYANT + WHERE COD_TPA NOT IN (SELECT code_original FROM activite[PX].t_tiers_payant WHERE code_original IS NOT NULL) + GROUP BY 1,2 + HAVING COD_TPA || MAX(CASE WHEN length(COD_TPA) = 8 AND substr(COD_TPA,1,2) BETWEEN '01' AND '99' THEN '(1)' ELSE '(2)' END) + NOT IN (SELECT code_original FROM activite[PX].t_tiers_payant WHERE code_original IS NOT NULL) + ; + + + WITH tiers_payant_sìgems AS ( + SELECT COD_TPA, + MAX(NOM_TPA) AS NOM_TPA + FROM prod_sigems.TIERS_PAYANT + GROUP BY 1 + ) + UPDATE activite[PX].t_tiers_payant SET + code = COD_TPA, + texte = NOM_TPA, + texte_court = NOM_TPA + FROM tiers_payant_sìgems + WHERE COD_TPA = code_original AND + ( + code IS DISTINCT FROM COD_TPA OR + texte IS DISTINCT FROM NOM_TPA OR + texte_court IS DISTINCT FROM NOM_TPA + ) + ; + + -- Si tiers payant mutuelle utilisé dans AMO ajout + INSERT INTO activite[PX].t_tiers_payant(code_original, code, type_tiers_payant, texte, texte_court) + SELECT + COD_TPA || '(1)', + COD_TPA, + '1'::text, + MAX(NOM_TPA )|| ' (AMO)', + MAX(NOM_TPA) || ' (AMO)' + FROM prod_sigems.TIERS_PAYANT + JOIN activite[PX].t_tiers_payant current ON current.code = COD_TPA AND current.type_tiers_payant = '2' + WHERE 1=1 AND + COD_TPA IN (SELECT CP1_DOS2 from prod_sigems.DOS2 GROUP BY 1) AND + COD_TPA NOT IN (SELECT code FROM activite[PX].t_tiers_payant WHERE type_tiers_payant = '1') + GROUP BY 1,2 + ORDER BY 1 + ; + + -- Si tiers payant amo utilisé dans AMC ajout + INSERT INTO activite[PX].t_tiers_payant(code_original, code, type_tiers_payant, texte, texte_court) + SELECT + COD_TPA || '(2)', + COD_TPA, + '2'::text, + MAX(NOM_TPA )|| ' (AMC)', + MAX(NOM_TPA) || ' (AMC)' + FROM prod_sigems.TIERS_PAYANT + JOIN activite[PX].t_tiers_payant current ON current.code = COD_TPA AND current.type_tiers_payant = '1' + WHERE 1=1 AND + COD_TPA IN (SELECT CA2_DOS2 from prod_sigems.DOS2 GROUP BY 1) AND + COD_TPA NOT IN (SELECT code FROM activite[PX].t_tiers_payant WHERE type_tiers_payant = '2') + GROUP BY 1,2 + ; + + UPDATE activite[PX].t_tiers_payant + SET grand_regime_id = t_grands_regimes.oid + FROM base.t_grands_regimes + WHERE t_grands_regimes.code = substr(t_tiers_payant.code,1,2) AND + t_tiers_payant.code between '01' AND '999' AND + (grand_regime_id = 0 OR grand_regime_id IS NULL) + ; + + INSERT INTO base.t_codes_postaux(code, texte, texte_court, departement_id) + SELECT CPO_TPA, MAX(VIL_TPA), MAX(VIL_TPA), MAX(t_departements.oid) + FROM prod_SIGEMS.TIERS_PAYANT + LEFT JOIN base.t_codes_postaux ON CPO_TPA = t_codes_postaux.code + JOIN base.t_departements ON + CPO_TPA NOT LIKE '97%' AND substr(CPO_TPA,1,2) = t_departements.code OR + CPO_TPA LIKE '97%' AND substr(CPO_TPA,1,3) = t_departements.code + WHERE CPO_TPA <> '' AND + length(CPO_TPA) = 5 AND + t_codes_postaux.code IS NULL + GROUP BY 1 + ; + + UPDATE activite[PX].t_tiers_payant SET + adresse = AD1_TPA || ' ' || AD2_TPA, + code_postal_id = COALESCE(t_codes_postaux.oid,0), + ville = VIL_TPA, + telephone = AGR_TPA, + fax = COALESCE(TIERS_PAYANT_COMPL.FAX,''), + email = COALESCE(TIERS_PAYANT_COMPL.MAIL,'') + FROM prod_SIGEMS.TIERS_PAYANT + LEFT JOIN prod_SIGEMS.TIERS_PAYANT_COMPL ON TIERS_PAYANT.COD_TPA = TIERS_PAYANT_COMPL.COD_TPA + LEFT JOIN base.t_codes_postaux ON CPO_TPA = t_codes_postaux.code + WHERE ( + t_tiers_payant.code_original = TIERS_PAYANT.COD_TPA OR + t_tiers_payant.code_original = TIERS_PAYANT.COD_TPA||'(1)' OR + t_tiers_payant.code_original = TIERS_PAYANT.COD_TPA||'(2)' + ) AND + ( + t_tiers_payant.adresse IS DISTINCT FROM (AD1_TPA || ' ' || AD2_TPA) OR + t_tiers_payant.code_postal_id IS DISTINCT FROM COALESCE(t_codes_postaux.oid,0) OR + ville IS DISTINCT FROM VIL_TPA OR + t_tiers_payant.telephone IS DISTINCT FROM AGR_TPA OR + t_tiers_payant.fax IS DISTINCT FROM COALESCE(TIERS_PAYANT_COMPL.FAX,'') OR + t_tiers_payant.email IS DISTINCT FROM COALESCE(TIERS_PAYANT_COMPL.MAIL,'') + ) + ; + + + ]]> + + + + ''::text + GROUP BY 1,2,3,4 + ORDER BY 1; + + INSERT INTO activite[PX].t_specialites_medecin(oid, code, code_original, texte, texte_court) + SELECT 0, '**', '0', 'Non saisie', 'Non saisie' + WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_specialites_medecin); + + INSERT INTO base.t_specialites_medecin(oid, code, code_original, texte, texte_court) + SELECT 0, '', '0', 'Non saisie', 'Non saisie' + WHERE 0 NOT IN (SELECT oid FROM base.t_specialites_medecin); + + + INSERT INTO base.t_medecins(oid, nom, prenom, numero_ordre, specialite_id ) + SELECT 0, 'Non renseigné', '', '', 0 WHERE 0 NOT IN (SELECT oid FROM base.t_medecins); + + INSERT INTO activite[PX].t_medecins_administratifs(oid, code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT 0, '0', '****', 'Non renseigné', '', 0, 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_medecins_administratifs); + + DROP TABLE IF EXISTS w_medecins; + CREATE TEMP TABLE w_medecins AS + SELECT + COD_PRA AS COD_PRA, + base.cti_soundex_nom(NOM_PRA) AS NOM_PRA_SOUNDEX, + base.cti_soundex_nom(PRE_PRA) AS PRE_PRA_SOUNDEX, + NOM_PRA, + PRE_PRA AS PRE_PRA, + SUBSTR(COALESCE(NID_PRA,''),1,9) AS NID_PRA, + CSP_PRA AS CSP_PRA, + COALESCE(t_medecins_administratifs.medecin_id,0) as medecin_id + FROM prod_sigems.PRATICIEN + LEFT JOIN activite[PX].t_medecins_administratifs ON COD_PRA = t_medecins_administratifs.code_original; + + + + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.NOM_PRA, w_medecins.PRE_PRA, w_medecins.NID_PRA, 0 FROM + (SELECT SUBSTR(NOM_PRA_SOUNDEX, 1, 8) AS NOM_PRA_SOUNDEX, SUBSTR(PRE_PRA_SOUNDEX, 1, 8) AS PRE_PRA_SOUNDEX, NID_PRA, MIN(COD_PRA) AS COD_PRA + FROM w_medecins + GROUP BY 1,2,3) subview, w_medecins + WHERE w_medecins.COD_PRA = subview.COD_PRA + AND subview.NOM_PRA_SOUNDEX || ',' || subview.PRE_PRA_SOUNDEX || ',' || subview.NID_PRA NOT IN + (SELECT substr(base.cti_soundex_nom(nom),1,8) || ',' || substr(base.cti_soundex_nom(prenom),1,8) || ',' || numero_ordre FROM base.t_medecins); + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.NOM_PRA, w_medecins.PRE_PRA, w_medecins.NID_PRA, 0 FROM + (SELECT NOM_PRA_SOUNDEX, PRE_PRA_SOUNDEX, MIN(COD_PRA) AS COD_PRA + FROM w_medecins + GROUP BY 1,2) subview, w_medecins + WHERE w_medecins.COD_PRA = subview.COD_PRA + AND subview.NOM_PRA_SOUNDEX || ',' || subview.PRE_PRA_SOUNDEX NOT IN + (SELECT base.cti_soundex_nom(nom) || ',' || base.cti_soundex_nom(prenom) FROM base.t_medecins); + + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT substr(base.cti_soundex_nom(nom),1,8) as nom , substr(base.cti_soundex_nom(prenom),1,8) as prenom, numero_ordre, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2,3) subview + WHERE SUBSTR(NOM_PRA_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(PRE_PRA_SOUNDEX, 1, 8) = subview.prenom + AND NID_PRA = subview.numero_ordre + AND w_medecins.medecin_id = 0; + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT base.cti_soundex_nom(nom) as nom , base.cti_soundex_nom(prenom) as prenom, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2) subview + WHERE SUBSTR(NOM_PRA_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(PRE_PRA_SOUNDEX, 1, 8) = subview.prenom + AND w_medecins.medecin_id = 0; + + INSERT INTO activite[PX].t_medecins_administratifs(code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT DISTINCT COD_PRA, COD_PRA, NOM_PRA, PRE_PRA, COALESCE(t_specialites_medecin.oid,0), medecin_id + FROM w_medecins + LEFT JOIN base.t_specialites_medecin ON CSP_PRA = t_specialites_medecin.code_original + WHERE COD_PRA NOT IN (SELECT code_original FROM activite[PX].t_medecins_administratifs); + + UPDATE activite[PX].t_medecins_administratifs + SET code = COD_PRA, + nom = NOM_PRA, + prenom = PRE_PRA, + specialite_id = COALESCE(t_specialites_medecin.oid,0), + medecin_id = w_medecins.medecin_id + FROM w_medecins LEFT JOIN base.t_specialites_medecin ON CSP_PRA = t_specialites_medecin.code_original + WHERE w_medecins.COD_PRA = t_medecins_administratifs.code_original + AND ( + t_medecins_administratifs.code <> COD_PRA OR + t_medecins_administratifs.nom <> NOM_PRA OR + t_medecins_administratifs.prenom <> PRE_PRA OR + t_medecins_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid,0) OR + t_medecins_administratifs.medecin_id <> w_medecins.medecin_id + ); + + UPDATE base.t_medecins SET specialite_id = subview.specialite_id + FROM + (SELECT t_medecins.oid, MIN(t_medecins_administratifs.specialite_id) as specialite_id + FROM base.t_medecins, activite[PX].t_medecins_administratifs , base.t_specialites_medecin + WHERE t_medecins.oid = t_medecins_administratifs.medecin_id + AND t_medecins_administratifs.specialite_id = t_specialites_medecin.oid + GROUP BY t_medecins.oid) subview + WHERE t_medecins.oid = subview.oid AND t_medecins.oid <> 0 AND t_medecins.specialite_id = 0; + + -- no_adeli + UPDATE activite[PX].t_medecins_administratifs + SET no_adeli = NID_PRA + FROM prod_sigems.PRATICIEN + WHERE t_medecins_administratifs.code_original = COD_PRA AND + t_medecins_administratifs.NO_ADELI IS DISTINCT FROM NID_PRA + ; + + -- Code RPPS + UPDATE base.t_medecins + SET code_rpps = subview.RPPS + FROM + ( + SELECT medecin_id, count(DISTINCT rpps), MAX(RPPS) AS RPPS + FROM activite[PX].t_medecins_administratifs + JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid + JOIN prod_sigems.PRAT_COMPL ON code_original = COD_PRA + WHERE RPPS <> '' AND + t_medecins.code_rpps = '' AND + medecin_id <> 0 + GROUP BY 1 + HAVING count(DISTINCT rpps) = 1 + ) subview + WHERE t_medecins.oid = subview.medecin_id + ; + + -- Adresse + INSERT INTO base.t_codes_postaux(code, texte, texte_court, departement_id) + SELECT CPO_PRA, MAX(VIL_PRA), MAX(VIL_PRA), MAX(t_departements.oid) + FROM prod_sigems.PRATICIEN + LEFT JOIN base.t_codes_postaux ON CPO_PRA = t_codes_postaux.code + JOIN base.t_departements ON + CPO_PRA NOT LIKE '97%' AND substr(CPO_PRA,1,2) = t_departements.code OR + CPO_PRA LIKE '97%' AND substr(CPO_PRA,1,3) = t_departements.code + WHERE CPO_PRA <> '' AND + length(CPO_PRA) = 5 AND + t_codes_postaux.code is NULL + GROUP BY 1 + ; + + UPDATE activite[PX].t_medecins_administratifs SET + adresse = AD1_PRA || ' ' || AD2_PRA, + code_postal_id = COALESCE(t_codes_postaux.oid,0), + ville = VIL_PRA, + telephone = COALESCE(trim(PRAT_COMPL.TEL||' '||PRAT_COMPL.PORTABLE),''), + email = COALESCE(PRAT_COMPL.MAIL,'') + FROM prod_sigems.PRATICIEN + LEFT JOIN prod_sigems.PRAT_COMPL ON PRATICIEN.COD_PRA = PRAT_COMPL.COD_PRA + LEFT JOIN base.t_codes_postaux ON CPO_PRA = t_codes_postaux.code + WHERE t_medecins_administratifs.code_original = PRATICIEN.COD_PRA AND + ( + t_medecins_administratifs.adresse IS DISTINCT FROM (AD1_PRA || ' ' || AD2_PRA) OR + t_medecins_administratifs.code_postal_id IS DISTINCT FROM COALESCE(t_codes_postaux.oid,0) OR + t_medecins_administratifs.ville IS DISTINCT FROM VIL_PRA OR + t_medecins_administratifs.telephone IS DISTINCT FROM COALESCE(trim(PRAT_COMPL.TEL||' '||PRAT_COMPL.PORTABLE),'') OR + t_medecins_administratifs.email IS DISTINCT FROM COALESCE(PRAT_COMPL.MAIL,'') + ) + ; + + + ]]> + + + + COALESCE(t_modes_traitement.oid,0); + + DROP TABLE IF EXISTS w_SERVICE; + CREATE TEMP TABLE w_SERVICE AS + SELECT + SER_SEJ || '_' || COALESCE(MDT_REEL,MDT_DOS) AS COD_SER, + NOM_SER || ' (' || COALESCE(MDT_REEL,MDT_DOS) || ')' AS NOM_SER, + COALESCE(MDT_REEL,MDT_DOS) AS MDT_SER, + DMT_SER + FROM prod_sigems.DOSSIER + JOIN prod_sigems.SEJOUR ON ANN_SEJ = ANN_DOS AND COD_SEJ = COD_DOS + JOIN prod_sigems.SERVICE ON SER_SEJ = COD_SER + LEFT JOIN prod_sigems.DOSSIER_MDT ON DOSSIER.ANN_DOS = DOSSIER_MDT.ANN_DOS AND DOSSIER.COD_DOS = DOSSIER_MDT.COD_DOS + GROUP BY 1,2,3,4; + + + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, nb_lits, type_t2a) + SELECT COD_SER, COD_SER, NOM_SER, NOM_SER, 0 AS nb_lits, '0' AS type_t2a + FROM w_SERVICE + WHERE COD_SER NOT IN (SELECT code_original FROM activite[PX].t_services_facturation) + ORDER BY COD_SER; + + UPDATE activite[PX].t_services_facturation SET + code = COD_SER, + texte = NOM_SER, + texte_court = CASE WHEN texte_court = texte THEN NOM_SER ELSE texte_court END + FROM w_SERVICE + WHERE COD_SER = code_original AND + ( + code IS DISTINCT FROM COD_SER OR + texte IS DISTINCT FROM NOM_SER OR + texte_court IS DISTINCT FROM CASE WHEN texte_court = texte THEN NOM_SER ELSE texte_court END + ); + + + UPDATE activite[PX].t_services_facturation + SET mode_traitement_id = COALESCE(t_modes_traitement.oid,0) + FROM w_SERVICE + LEFT JOIN base.t_modes_traitement ON MDT_SER = t_modes_traitement.code + WHERE t_services_facturation.code_original = COD_SER AND + COALESCE(mode_traitement_id,0) = 0 AND + COALESCE(mode_traitement_id,0) <> COALESCE(t_modes_traitement.oid,0); + + UPDATE activite[PX].t_services_facturation + SET dmt_id = COALESCE(t_dmt.oid,0) + FROM w_SERVICE + LEFT JOIN base.t_dmt ON DMT_SER = t_dmt.code + WHERE t_services_facturation.code_original = COD_SER AND + COALESCE(dmt_id,0) = 0 AND + COALESCE(dmt_id,0) <> COALESCE(t_dmt.oid,0); + + -- Unités fonctionnelles + + INSERT INTO activite[PX].t_unites_fonctionnelles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_fonctionnelles); + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT COD_SER, COD_SER, NOM_SER, NOM_SER + FROM prod_sigems.SERVICE + WHERE COD_SER NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles) + ORDER BY COD_SER; + + UPDATE activite[PX].t_unites_fonctionnelles SET + code = COD_SER, + texte = NOM_SER, + texte_court = CASE WHEN texte_court = texte THEN NOM_SER ELSE texte_court END + FROM prod_SIGEMS.SERVICE + WHERE COD_SER = code_original AND + ( + code IS DISTINCT FROM COD_SER OR + texte IS DISTINCT FROM NOM_SER OR + texte_court IS DISTINCT FROM CASE WHEN texte_court = texte THEN NOM_SER ELSE texte_court END + ); + + -- Unités médicales + + INSERT INTO activite[PX].t_unites_medicales(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_medicales); + + INSERT INTO activite[PX].t_unites_medicales(code_original, code, texte, texte_court) + SELECT CODE, CODE, LIB, LIB + FROM prod_sigems.UNITE_MEDICALE + WHERE CODE NOT IN (SELECT code_original FROM activite[PX].t_unites_medicales) + ORDER BY CODE; + + UPDATE activite[PX].t_unites_medicales SET + code = UM.CODE, + texte = LIB, + texte_court = LIB + FROM prod_SIGEMS.UNITE_MEDICALE UM + WHERE UM.CODE = code_original AND + ( + t_unites_medicales.code IS DISTINCT FROM UM.CODE OR + texte IS DISTINCT FROM UM.LIB OR + texte_court IS DISTINCT FROM UM.LIB + ); + + + -- Activités + + INSERT INTO activite[PX].t_activites(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_activites); + + + + -- Etages et lits + + DROP TABLE IF EXISTS w_CHAMBRE; + CREATE TEMP TABLE W_CHAMBRE AS + SELECT COD_CHA, NOM_CHA, TYP_CHA, NBL_CHA, SER_CHA::text, CHAMBRE + FROM prod_sigems.CHAMBRE + WHERE COD_CHA <> '' AND + COD_CHA <> '0' + GROUP BY 1,2,3,4,5,6; + + CREATE INDEX w_CHAMBRE_i1 + ON w_CHAMBRE + USING btree + (COD_CHA); + + UPDATE w_CHAMBRE + SET SER_CHA = COD_CHA + WHERE SER_CHA = ''; + + + + INSERT INTO w_CHAMBRE + SELECT NCH_DOS, NCH_DOS, '', 0, MAX(SECT_ENTREE), NCH_DOS + FROM prod_sigems.DOSSIER + JOIN prod_sigems.DOSSIER_SUPPL ON DOSSIER_SUPPL.COD_DOS = DOSSIER.COD_DOS AND + DOSSIER_SUPPL.ANN_DOS = DOSSIER.ANN_DOS + WHERE SECT_ENTREE <> '' AND + NCH_DOS NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_DOS NOT IN ('','0','NULL') + GROUP BY 1 + ORDER BY 1; + + INSERT INTO w_CHAMBRE + SELECT NCH_SEJ, NCH_SEJ, '', 0, MAX(SECT_ENTREE), NCH_SEJ + FROM prod_sigems.SEJOUR + JOIN prod_sigems.DOSSIER_SUPPL ON DOSSIER_SUPPL.COD_DOS = SEJOUR.COD_SEJ AND + DOSSIER_SUPPL.ANN_DOS = SEJOUR.ANN_SEJ + WHERE SECT_ENTREE <> '' AND + NCH_SEJ NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_SEJ NOT IN ('','0','NULL') + GROUP BY 1 + ORDER BY 1; + + + INSERT INTO w_CHAMBRE + SELECT NCH_DOS, NCH_DOS, MAX(TYP_CHA), MAX(NBL_CHA), MAX(SER_CHA), MAX(COD_CHA) + FROM prod_sigems.DOSSIER + JOIN w_CHAMBRE ON SUBSTR(NCH_DOS,1,3) = COD_CHA + WHERE LENGTH(NCH_DOS) > 3 AND LENGTH(COD_CHA) = 3 AND + NCH_DOS NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_DOS NOT IN ('','0','NULL') + GROUP BY 1 + ORDER BY 1; + + + INSERT INTO w_CHAMBRE + SELECT NCH_SEJ, NCH_SEJ, MAX(TYP_CHA), MAX(NBL_CHA), MAX(SER_CHA), MAX(COD_CHA) + FROM prod_sigems.SEJOUR + JOIN w_CHAMBRE ON SUBSTR(NCH_SEJ,1,3) = COD_CHA + WHERE LENGTH(NCH_SEJ) > 3 AND LENGTH(COD_CHA) = 3 AND + NCH_SEJ NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_SEJ NOT IN ('','0','NULL') + GROUP BY 1 + ORDER BY 1; + + + INSERT INTO w_CHAMBRE + SELECT NCH_DOS, NCH_DOS, MAX(TYP_CHA), MAX(NBL_CHA), MAX(SER_CHA), MAX(COD_CHA) + FROM prod_sigems.DOSSIER + JOIN w_CHAMBRE ON SUBSTR(NCH_DOS,1,3) = SUBSTR(COD_CHA,1,3) + WHERE NCH_DOS NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_DOS NOT IN ('','0','NULL') + GROUP BY 1 + ORDER BY 1; + + + INSERT INTO w_CHAMBRE + SELECT NCH_DOS, NCH_DOS, MAX(TYP_CHA), MAX(NBL_CHA), MAX(SER_CHA), MAX(COD_CHA) + FROM prod_sigems.DOSSIER + JOIN w_CHAMBRE ON SUBSTR(NCH_DOS,1,2) = SUBSTR(COD_CHA,1,2) + WHERE NCH_DOS NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_DOS NOT IN ('','0','NULL') + GROUP BY 1 + ORDER BY 1; + + + INSERT INTO w_CHAMBRE + SELECT NCH_DOS, NCH_DOS, MAX(TYP_CHA), MAX(NBL_CHA), MAX(SER_CHA), MAX(COD_CHA) + FROM prod_sigems.DOSSIER + JOIN w_CHAMBRE ON SUBSTR(NCH_DOS,1,1) = SUBSTR(COD_CHA,1,1) + WHERE NCH_DOS NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_DOS NOT IN ('','0','NULL') + GROUP BY 1 + ORDER BY 1; + + + + INSERT INTO w_CHAMBRE + SELECT NCH_SEJ, NCH_SEJ, MAX(TYP_CHA), MAX(NBL_CHA), MAX(SER_CHA), MAX(COD_CHA) + FROM prod_sigems.SEJOUR + JOIN w_CHAMBRE ON SUBSTR(NCH_SEJ,1,3) = SUBSTR(COD_CHA,1,3) + WHERE NCH_SEJ NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_SEJ NOT IN ('','0','NULL') + GROUP BY 1 + ORDER BY 1; + + + INSERT INTO w_CHAMBRE + SELECT NCH_SEJ, NCH_SEJ, MAX(TYP_CHA), MAX(NBL_CHA), MAX(SER_CHA), MAX(COD_CHA) + FROM prod_sigems.SEJOUR + JOIN w_CHAMBRE ON SUBSTR(NCH_SEJ,1,2) = SUBSTR(COD_CHA,1,2) + WHERE NCH_SEJ NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_SEJ NOT IN ('','0','NULL') + GROUP BY 1 + ORDER BY 1; + + + INSERT INTO w_CHAMBRE + SELECT NCH_SEJ, NCH_SEJ, MAX(TYP_CHA), MAX(NBL_CHA), MAX(SER_CHA), MAX(COD_CHA) + FROM prod_sigems.SEJOUR + JOIN w_CHAMBRE ON SUBSTR(NCH_SEJ,1,1) = SUBSTR(COD_CHA,1,1) + WHERE NCH_SEJ NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_SEJ NOT IN ('','0','NULL') + GROUP BY 1 + ORDER BY 1; + + DELETE FROM w_CHAMBRE + USING + ( + SELECT COD_CHA, MIN(CTID) AS keep_CTID + FROM w_CHAMBRE + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE w_CHAMBRE.COD_CHA = subview.COD_CHA AND + w_CHAMBRE.CTID <> keep_CTID + ; + + + INSERT INTO activite[PX].t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_etages); + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT SER_CHA, SER_CHA, SER_CHA, SER_CHA, 0 AS nb_lits + FROM w_CHAMBRE + WHERE SER_CHA <> '' AND SER_CHA NOT IN (SELECT code_original FROM activite[PX].t_etages WHERE code_original IS NOT NULL) + GROUP BY SER_CHA + ORDER BY SER_CHA; + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT COD_CHA, COD_CHA, MAX(NOM_CHA), MAX(NOM_CHA), 0 AS nb_lits + FROM w_CHAMBRE + WHERE COD_CHA <> '' AND SER_CHA = '' AND COD_CHA NOT IN (SELECT code_original FROM activite[PX].t_etages WHERE code_original IS NOT NULL) + GROUP BY COD_CHA + ORDER BY COD_CHA; + + + UPDATE activite[PX].t_etages SET + code = SER_CHA, + texte = SER_CHA, + texte_court = SER_CHA + FROM w_CHAMBRE + WHERE SER_CHA <> '' AND + SER_CHA = code_original AND + ( + code IS DISTINCT FROM SER_CHA OR + texte IS DISTINCT FROM SER_CHA OR + texte_court IS DISTINCT FROM SER_CHA + ) + ; + + UPDATE activite[PX].t_etages SET + code = COD_SER, + texte = NOM_SER, + texte_court = NOM_SER + FROM prod_sigems.SERVICE + WHERE COD_SER <> '' AND + NOM_SER <> '' AND + COD_SER = code_original AND + ( + code IS DISTINCT FROM COD_SER OR + texte IS DISTINCT FROM NOM_SER OR + texte_court IS DISTINCT FROM NOM_SER + ) + ; + + INSERT INTO activite[PX].t_lits(oid, code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0, 'N' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_lits); + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT SER_CHA || '|' || COD_CHA, COD_CHA, NOM_CHA, NOM_CHA, + t_etages.oid, CASE WHEN TYP_CHA LIKE 'P%' THEN 'O' ELSE 'N' END + FROM w_CHAMBRE + JOIN activite[PX].t_etages ON SER_CHA = t_etages.code_original + WHERE COD_CHA <> '' AND SER_CHA || '|' || COD_CHA NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL) + ORDER BY 1; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT COD_CHA || '|' || COD_CHA, COD_CHA, NOM_CHA, NOM_CHA, + t_etages.oid, CASE WHEN TYP_CHA LIKE 'P%' THEN 'O' ELSE 'N' END + FROM w_CHAMBRE + JOIN activite[PX].t_etages ON COD_CHA = t_etages.code_original + WHERE COD_CHA <> '' AND SER_CHA = '' AND COD_CHA || '|' || COD_CHA NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL) + ORDER BY 1; + + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT code_original || '|0' , '', 'Non renseigné', 'Non renseigné', oid, 'O' + FROM activite[PX].t_etages + WHERE oid > 0 AND + code_original || '|0' NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL ); + + UPDATE activite[PX].t_lits SET + code = COD_CHA, + texte = NOM_CHA, + texte_court = NOM_CHA + FROM w_CHAMBRE + WHERE COD_CHA || '|' || COD_CHA = code_original AND + ( + code IS DISTINCT FROM COD_CHA OR + texte IS DISTINCT FROM NOM_CHA OR + texte_court IS DISTINCT FROM NOM_CHA + ) + ; + + ]]> + + + + 0 + AND code_original NOT LIKE '*CTI%' + AND code_original IS DISTINCT FROM code + ; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT ACT_PRC, ACT_PRC, MAX(ACT_PRC), MAX(ACT_PRC) + FROM prod_sigems.PROD_CLINI + WHERE ACT_PRC NOT IN (SELECT code_original FROM activite.t_prestations) + AND ACT_PRC <> '' + GROUP BY 1,2 + ORDER BY ACT_PRC; + + WITH prod_clini AS + ( + SELECT + ACT_PRC AS code_prod_clini, + MAX(ACT_PRC) AS texte_prod_clini + FROM prod_sigems.PROD_CLINI + WHERE ACT_PRC <> '' + GROUP BY 1 + ) + UPDATE activite.t_prestations SET + code = code_prod_clini, + texte = texte_prod_clini, + texte_court = texte_prod_clini + FROM prod_clini + WHERE code_original = code_prod_clini AND + ( + code IS DISTINCT FROM code_prod_clini OR + texte IS DISTINCT FROM texte_prod_clini OR + texte_court IS DISTINCT FROM texte_prod_clini + ) + ; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT CASE WHEN ACT_PRH <> '' THEN ACT_PRH ELSE COD_PRH END , + CASE WHEN ACT_PRH <> '' THEN ACT_PRH ELSE COD_PRH END, + MAX(CASE WHEN ACT_PRH <> '' THEN ACT_PRH ELSE COD_PRH END), + MAX(CASE WHEN ACT_PRH <> '' THEN ACT_PRH ELSE COD_PRH END) + FROM prod_sigems.PROD_HONOR + WHERE CASE WHEN ACT_PRH <> '' THEN ACT_PRH ELSE COD_PRH END NOT IN (SELECT code_original FROM activite.t_prestations) + GROUP BY 1,2 + ORDER BY 1; + + WITH prod_honor AS + ( + SELECT + CASE WHEN ACT_PRH <> '' THEN ACT_PRH ELSE COD_PRH END AS code_prod_honor, + MAX(CASE WHEN ACT_PRH <> '' THEN ACT_PRH ELSE COD_PRH END) AS texte_prod_honor + FROM prod_sigems.PROD_HONOR + GROUP BY 1 + ) + UPDATE activite.t_prestations SET + code = code_prod_honor, + texte = texte_prod_honor, + texte_court = texte_prod_honor + FROM prod_honor + WHERE code_prod_honor NOT IN + ( + SELECT code + FROM base.t_ccam_regroupements + WHERE code NOT IN ('NGAP','CCAM','CDAM') AND + length(code) = 3 AND + oid IN (SELECT ccam_regroupement_id_1 FROM base.t_actes) AND + code <> '' + ) AND + code_original = code_prod_honor AND + ( + code IS DISTINCT FROM code_prod_honor OR + texte IS DISTINCT FROM texte_prod_honor OR + texte_court IS DISTINCT FROM texte_prod_honor + ) + ; + + INSERT INTO activite[PX].t_compte(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_compte); + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT AFA_PRC, AFA_PRC, MAX(COALESCE(INT1,AFA_PRC)), MAX(COALESCE(INT1,AFA_PRC)) + FROM prod_sigems.PROD_CLINI + LEFT JOIN prod_sigems.COMPTE ON AFA_PRC = NUM + WHERE AFA_PRC <> '' AND AFA_PRC NOT IN (SELECT code_original FROM activite[PX].t_compte) + GROUP BY 1 + ORDER BY 1; + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT CPT_ANA, CPT_ANA, MAX(COALESCE(INT1,CPT_ANA)), MAX(COALESCE(INT1,CPT_ANA)) + FROM prod_sigems.ANALYG + LEFT JOIN prod_sigems.COMPTE ON CPT_ANA = num AND ANALYG.TYP_ANA = COMPTE.TYP + WHERE CPT_ANA NOT IN (SELECT code_original FROM activite[PX].t_compte) + GROUP BY 1 + ORDER BY 1; + + + WITH comptes AS ( + SELECT trim(AFA_PRC) AS AFA_PRC, + MAX(COALESCE(INT1,AFA_PRC)) AS INT1 + FROM prod_sigems.PROD_CLINI + LEFT JOIN prod_sigems.COMPTE ON AFA_PRC = NUM + GROUP BY trim(AFA_PRC) + ) + UPDATE activite[PX].t_compte SET + code = AFA_PRC, + texte = INT1, + texte_court = INT1 + FROM comptes + WHERE AFA_PRC = code_original AND + ( + code IS DISTINCT FROM AFA_PRC OR + texte IS DISTINCT FROM INT1 OR + texte_court IS DISTINCT FROM INT1 + ) + ; + + + WITH comptes_analytique AS ( + SELECT trim(CPT_ANA) AS CPT_ANA, + MAX(COALESCE(INT1,CPT_ANA)) AS INT1 + FROM prod_sigems.ANALYG + LEFT JOIN prod_sigems.COMPTE ON CPT_ANA = num AND ANALYG.TYP_ANA = COMPTE.TYP + GROUP BY trim(CPT_ANA) + ) + UPDATE activite[PX].t_compte SET + code = CPT_ANA, + texte = INT1, + texte_court = INT1 + FROM comptes_analytique + WHERE CPT_ANA = code_original AND + ( + code IS DISTINCT FROM CPT_ANA OR + texte IS DISTINCT FROM INT1 OR + texte_court IS DISTINCT FROM INT1 + ) + ; + + -- Codes risques + INSERT INTO activite[PX].t_risque(code, texte) + SELECT + COD_RIS, LIB_RIS + FROM + prod_sigems.RISQUE + LEFT JOIN activite[PX].t_risque ON t_risque.code = COD_RIS + WHERE + t_risque.code IS NULL + ; + + -- Motifs non facturation + INSERT INTO activite[PX].t_motif_non_facturation(code_original, code, texte, texte_court) + SELECT NUM, NUM, MAX(LIB), MAX(LIB) + FROM prod_sigems.MOTIF_ATTENTE + WHERE NUM <> '' AND NUM NOT IN (SELECT code FROM activite[PX].t_motif_non_facturation) + GROUP BY 1 + ORDER BY 1 + ; + + + ]]> + + + + + + + + '' AND ME1_DOS IS NOT NULL THEN ME1_DOS || ' ' || ME2_DOS ELSE COALESCE(CMT_DOS,'') END AS CMT_DOS, + CASE WHEN ME1_DOS <> '' AND ME1_DOS IS NOT NULL THEN ME1_DOS ELSE COALESCE(CMT_DOS,'') END AS nom_med, + CASE WHEN ME2_DOS <> '' AND ME2_DOS IS NOT NULL THEN ME2_DOS ELSE '' END AS pre_med + FROM prod_sigems.dossier + left join prod_sigems.dossier_x on (dossier.ann_dos = dossier_x.ann_dox and dossier.cod_dos = dossier_x.cod_dox) + WHERE DSO_DOS >= '20120101' OR DSO_DOS IS NULL; + + UPDATE w_DOSSIER_SELECT SET + nom_med = w_medecins.nom_pra, + pre_med = w_medecins.pre_pra + FROM w_medecins + WHERE + CMT_DOS = w_medecins.COD_PRA + AND (nom_med <> w_medecins.nom_pra OR pre_med <> w_medecins.pre_pra) + ; + + UPDATE w_DOSSIER_SELECT SET + pre_med = CMT_DOS + WHERE + CMT_DOS IN ('DIVERS', '', '?', '0') + AND nom_med = CMT_DOS + and pre_med != CMT_DOS + ; + + CREATE INDEX w_DOSSIER_SELECT_i1 + ON w_DOSSIER_SELECT + USING btree + (no_sejour_SELECT); + + + -- Ajout médecins traitants dans ACTIVITE (Ajouter dans BASE) + INSERT INTO activite[PX].t_medecins_traitants_administratifs(code_original, code, nom, prenom, specialite_id, no_rpps) + SELECT trim(CMT_DOS), trim(CMT_DOS), MAX(nom_med), MAX(pre_med), 0, '' + FROM w_DOSSIER_SELECT + WHERE TRUE + AND trim(CMT_DOS) NOT IN (SELECT code_original FROM activite[PX].t_medecins_traitants_administratifs) + AND CMT_DOS <> 0 + AND trim(CMT_DOS) <> '' + AND trim(CMT_DOS) <> '0' + AND CMT_DOS IS NOT NULL + GROUP BY trim(CMT_DOS) + ; + + + + WITH medecins AS ( + SELECT trim(CMT_DOS) AS CMT_DOS, + MAX(nom_med) AS nom_med, + MAX(pre_med) AS pre_med + FROM w_DOSSIER_SELECT + GROUP BY trim(CMT_DOS) + ) + UPDATE activite[PX].t_medecins_traitants_administratifs SET + code = CMT_DOS, + nom = nom_med, + prenom = pre_med + FROM medecins + WHERE CMT_DOS = code_original AND + ( + code IS DISTINCT FROM CMT_DOS OR + nom IS DISTINCT FROM nom_med OR + prenom IS DISTINCT FROM pre_med + ) + ; + + + -- maj code rpps + UPDATE activite[PX].t_medecins_traitants_administratifs + SET no_rpps = rpps + FROM prod_sigems.PRAT_COMPL + WHERE PRAT_COMPL.COD_PRA = t_medecins_traitants_administratifs.code + AND (t_medecins_traitants_administratifs.no_rpps IS NULL OR t_medecins_traitants_administratifs.no_rpps = '' + AND rpps IS not NULL AND rpps <>'' ); + + + -- maj id médecin_traitant dans séjours + UPDATE activite[PX].p_sejours + SET medecin_traitant_id = t_medecins_traitants_administratifs.oid + FROM w_DOSSIER_SELECT, activite[PX].t_medecins_traitants_administratifs + WHERE w_DOSSIER_SELECT.no_sejour_SELECT = p_sejours.no_sejour AND + w_DOSSIER_SELECT.CMT_DOS = t_medecins_traitants_administratifs.code AND + w_DOSSIER_SELECT.CMT_DOS IS NOT NULL AND w_DOSSIER_SELECT.CMT_DOS <> '' AND + medecin_traitant_id IS DISTINCT FROM t_medecins_traitants_administratifs.oid + ; + + -- ajout des coordonnées par séjour + INSERT INTO activite[PX].p_coordonnees_patient ( + sejour_id, + adresse, + code_postal_id, + commune, + telephone_fixe, + telephone_portable, + email + ) + SELECT + p_sejours.oid, + AD1_PAT || CASE WHEN AD2_PAT != '' THEN ' - ' || AD2_PAT ELSE '' END, + COALESCE(t_codes_postaux.oid,0), + VIL_PAT, + TEL_PAT, + PORTABLE, + MAIL + FROM w_PATIENT + LEFT JOIN prod_sigems.PAT_COMPL ON w_PATIENT.COD_PAT = PAT_COMPL.COD_PAT + LEFT JOIN base.t_codes_postaux ON CPO_PAT = t_codes_postaux.code + JOIN activite[PX].p_sejours ON no_sejour = SEJ_NUM + ; + ]]> + + + + '2099-12-31'; + + + ]]> + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.date_groupage, + p_sejours.ghs_id, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour, + + 0::numeric AS delai_groupage, + 0::numeric AS delai_facture, + 0::numeric AS delai_expedition, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_solde_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_solde_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_solde_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_22 + + FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY 1,2,3,4,5; + + + UPDATE w_sejours_total + SET date_groupage = date_facture + WHERE (date_groupage IS null OR date_groupage = '20991231' OR date_groupage = '00010101') AND + date_facture <> '2099-12-31'; + + + UPDATE w_sejours_total SET + date_groupage = CASE WHEN date_groupage > '00010101' THEN date_groupage ELSE '20991231' END, + date_facture = CASE WHEN date_facture> '00010101' THEN date_facture ELSE '20991231' END, + date_expedition = CASE WHEN date_expedition > '00010101' THEN date_expedition ELSE '20991231' END, + date_solde = CASE WHEN date_solde > '00010101' THEN date_solde ELSE '20991231' END, + date_expedition_0 = CASE WHEN date_expedition_0 > '00010101' THEN date_expedition_0 ELSE '20991231' END, + date_solde_0 = CASE WHEN date_solde_0 > '00010101' THEN date_solde_0 ELSE '20991231' END, + date_expedition_1 = CASE WHEN date_expedition_1 > '00010101' THEN date_expedition_1 ELSE '20991231' END, + date_solde_1 = CASE WHEN date_solde_1 > '00010101' THEN date_solde_1 ELSE '20991231' END, + date_expedition_2 = CASE WHEN date_expedition_2 > '00010101' THEN date_expedition_2 ELSE '20991231' END, + date_solde_2 = CASE WHEN date_solde_2 > '00010101' THEN date_solde_2 ELSE '20991231' END, + date_expedition_22 = CASE WHEN date_expedition_22 > '00010101' THEN date_expedition_22 ELSE '20991231' END, + date_solde_22 = CASE WHEN date_solde_22 > '00010101' THEN date_solde_22 ELSE '20991231' END; + + + UPDATE w_sejours_total SET + delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END, + delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END, + delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END, + delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END, + delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END, + delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END, + delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END, + delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END, + delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END, + delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END, + delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END, + delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END; + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = w_sejours_total.date_expedition_0, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = w_sejours_total.date_expedition_1, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = w_sejours_total.date_expedition_2, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = w_sejours_total.date_expedition_22, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour, + + + delai_groupage = w_sejours_total.delai_groupage, + delai_facture = w_sejours_total.delai_facture, + delai_expedition = w_sejours_total.delai_expedition, + delai_solde = w_sejours_total.delai_solde, + delai_expedition_0 = w_sejours_total.delai_expedition_0, + delai_solde_0 = w_sejours_total.delai_solde_0, + delai_expedition_1 = w_sejours_total.delai_expedition_1, + delai_solde_1 = w_sejours_total.delai_solde_1, + delai_expedition_2 = w_sejours_total.delai_expedition_2, + delai_solde_2 = w_sejours_total.delai_solde_2, + delai_expedition_22 = w_sejours_total.delai_expedition_22, + delai_solde_22 = w_sejours_total.delai_solde_22 + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM w_sejours_total.date_expedition_0 OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM w_sejours_total.date_expedition_1 OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM w_sejours_total.date_expedition_2 OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM w_sejours_total.date_expedition_22 OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour OR + + p_sejours.delai_groupage IS DISTINCT FROM w_sejours_total.delai_groupage OR + p_sejours.delai_facture IS DISTINCT FROM w_sejours_total.delai_facture OR + p_sejours.delai_expedition IS DISTINCT FROM w_sejours_total.delai_expedition OR + p_sejours.delai_solde IS DISTINCT FROM w_sejours_total.delai_solde OR + p_sejours.delai_expedition_0 IS DISTINCT FROM w_sejours_total.delai_expedition_0 OR + p_sejours.delai_solde_0 IS DISTINCT FROM w_sejours_total.delai_solde_0 OR + p_sejours.delai_expedition_1 IS DISTINCT FROM w_sejours_total.delai_expedition_1 OR + p_sejours.delai_solde_1 IS DISTINCT FROM w_sejours_total.delai_solde_1 OR + p_sejours.delai_expedition_2 IS DISTINCT FROM w_sejours_total.delai_expedition_2 OR + p_sejours.delai_solde_2 IS DISTINCT FROM w_sejours_total.delai_solde_2 OR + p_sejours.delai_expedition_22 IS DISTINCT FROM w_sejours_total.delai_expedition_22 OR + p_sejours.delai_solde_22 IS DISTINCT FROM w_sejours_total.delai_solde_22 + + ); + + + ]]> + + + + + SUM(montant_regle_1) + ; + + INSERT INTO activite[PX].p_factures_soldes_h( + facture_id, + no_facture, + date_comptable, + prestation_id, + rubrique_comptabilisee_id, + medecin_comptabilise_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures_soldes_h.facture_id, + p_factures_soldes_h.no_facture, + MAX(date_comptable) AS date_comptable, + p_factures_soldes_h.prestation_id, + p_factures_soldes_h.rubrique_comptabilisee_id, + p_factures_soldes_h.medecin_comptabilise_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS montant_regle, + 0::numeric AS montant_regle_0, + SUM(montant_comptabilise_1)-SUM(montant_regle_1), + SUM(montant_comptabilise_2)-SUM(montant_regle_2), + 0::numeric AS montant_regle_22, + '1' AS od_non_comptabilise + FROM activite[PX].p_factures_soldes_h + JOIN activite[PX].p_factures ON p_factures_soldes_h.no_facture = p_factures.no_facture + JOIN activite[PX].t_tiers_payant t_tiers_payant_1 ON tiers_payant_1_id = t_tiers_payant_1.oid + JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON tiers_payant_2_id = t_tiers_payant_2.oid + WHERE t_tiers_payant_1.code = t_tiers_payant_2.code + GROUP BY 1,2,4,5,6 + HAVING SUM(montant_comptabilise_1)+SUM(montant_comptabilise_2)=SUM(montant_regle_1)+SUM(montant_regle_2) AND + SUM(montant_comptabilise_1) <> SUM(montant_regle_1) + ; + + ]]> + + + + + + + + + 0 + FROM activite[PX].t_medecins_administratifs + WHERE KIWEE_SIGEMS_HONPATCPT = '0' OR + KIWEE_SIGEMS_HONPATCPTDEP = '0' ; + ]]> + + + + + + + + + + + + + diff --git a/import_activite/iCTI_import_activite_SIGEMS2.XML b/import_activite/iCTI_import_activite_SIGEMS2.XML new file mode 100644 index 0000000..3523221 --- /dev/null +++ b/import_activite/iCTI_import_activite_SIGEMS2.XML @@ -0,0 +1,7692 @@ + + + + + + + + to_char(to_number('00' || HEU_DOS,'0000'),'FM00'); + + + UPDATE prod_sigems2.DOSSIER + SET MIN_DOS = to_char(to_number('00' || MIN_DOS,'0000'),'FM00') + WHERE MIN_DOS <> to_char(to_number('00' || MIN_DOS,'0000'),'FM00'); + + + UPDATE prod_sigems2.SEJOUR + SET HEU_SEJ = to_char(to_number('00' || HEU_SEJ,'0000'),'FM00') + WHERE HEU_SEJ <> to_char(to_number('00' || HEU_SEJ,'0000'),'FM00'); + + + UPDATE prod_sigems2.DOSSIER + SET HEU_DOS = MIN_DOS + WHERE DEN_DOS = DSO_DOS AND MIN_DOS > HEU_DOS AND HEU_DOS = '00'; + + + -- Correction etat factures sur factures nulles non éditées -> comptabilisées + UPDATE prod_sigems2.dos2 + SET ETA_DOS2 = 5 + WHERE ETA_DOS2 = 2 AND DFA_DOS2 IS NOT NULL AND + SJ1_DOS2 = 0 AND SJ2_DOS2 = 0 AND SJ3_DOS2 = 0 AND + HO1_DOS2 = 0 AND HO2_DOS2 = 0 AND HO3_DOS2 = 0; + + -- Correction anomalie : séjours en double chez SIGEMS + SELECT base.cti_execute( + 'DELETE FROM prod_sigems2.DOSSIER + USING + ( + SELECT ANN_DOS, COD_DOS, MAX(CTID) AS del_CTID + FROM prod_sigems2.DOSSIER + GROUP BY 1,2 + HAVING count(*) > 1 + ) subview + WHERE DOSSIER.CTID = del_CTID',20); + + + -- Correction anomalie : Factures en double chez SIGEMS + DROP TABLE IF EXISTS w_DOS2_double; + CREATE TEMP TABLE w_DOS2_double AS + SELECT ANN_DOS2, + COD_DOS2, + IND_DOS2 + FROM prod_sigems2.DOS2 + GROUP BY 1,2,3 + HAVING count(*) > 1 AND + SUM(CASE WHEN ETA_DOS2 >= 2 THEN 1 ELSE 0 END) = 1; + + DELETE FROM prod_sigems2.DOS2 + USING w_DOS2_double + WHERE DOS2.ANN_DOS2 = w_DOS2_double.ANN_DOS2 AND + DOS2.COD_DOS2 = w_DOS2_double.COD_DOS2 AND + DOS2.IND_DOS2 = w_DOS2_double.IND_DOS2 AND + ETA_DOS2 <= 1; + + DELETE FROM prod_sigems2.DOS2 + USING + ( + SELECT ANN_DOS2, COD_DOS2, IND_DOS2, MAX(CTID) AS del_CTID + FROM prod_sigems2.dos2 + GROUP BY 1,2,3 + HAVING count(*) > 1 + ) subview + WHERE DOS2.CTID = del_CTID; + + DELETE FROM prod_sigems2.DOS2 + USING + ( + SELECT ANN_DOS2, COD_DOS2, IND_DOS2, MAX(CTID) AS del_CTID + FROM prod_sigems2.dos2 + GROUP BY 1,2,3 + HAVING count(*) > 1 + ) subview + WHERE DOS2.CTID = del_CTID; + + -- Correction montants réglés sur factures annulées + + UPDATE prod_sigems2.DOS2 + SET + SR1_DOS2 = SJ1_DOS2, + SR2_DOS2 = SJ2_DOS2, + SR3_DOS2 = SJ3_DOS2, + HR1_DOS2 = HO1_DOS2, + HR2_DOS2 = HO2_DOS2, + HR3_DOS2 = HO3_DOS2 + WHERE ETA_DOS2 IN ('4','5') AND + COP_DOS2 = '1' AND + ( + SR1_DOS2 IS DISTINCT FROM SJ1_DOS2 OR + SR2_DOS2 IS DISTINCT FROM SJ2_DOS2 OR + SR3_DOS2 IS DISTINCT FROM SJ3_DOS2 OR + HR1_DOS2 IS DISTINCT FROM HO1_DOS2 OR + HR2_DOS2 IS DISTINCT FROM HO2_DOS2 OR + HR3_DOS2 IS DISTINCT FROM HO3_DOS2 + ); + + -- Correction lignes affectée à indice 0 au lieu de 1 + UPDATE prod_sigems2.LIG_CLINI + SET IND_LCL = 1 + FROM + ( + SELECT ANN_LCL, COD_LCL + FROM prod_sigems2.LIG_CLINI + JOIN prod_sigems2.DOS2 ON ANN_LCL = ANN_DOS2 AND COD_LCl = COD_DOS2 AND IND_DOS2 = 1 AND ETA_DOS2 >= 4 + WHERE IND_LCL IN (0,1) AND + (ML1_LCL <> 0 OR ML2_LCL <> 0 OR ML3_LCL <> 0) + GROUP BY 1,2 + HAVING MIN(IND_LCL) = 0 AND + MAX(SJ1_DOS2) = SUM(ML1_LCL) AND + MAX(SJ2_DOS2) = SUM(ML2_LCL) AND + MAX(SJ3_DOS2) = SUM(ML3_LCL) + ) SUBVIEW + WHERE LIG_CLINI.ANN_LCL = subview.ANN_LCL AND + LIG_CLINI.COD_LCL = subview.COD_LCL AND + LIG_CLINI.IND_LCL = 0; + + -- Lignes non facturées -> facture non calculée + UPDATE prod_sigems2.LIG_CLINI + SET IND_LCL = IND_DOS2 + FROM prod_sigems2.DOS2 + WHERE IND_LCL = 0 AND + ANN_LCL = ANN_DOS2 AND COD_LCL = COD_DOS2 AND + ETA_DOS2 <= 2 AND DDE_LCL BETWEEN DEN_DOS2 AND DSO_DOS2 AND + (ML1_LCL <> 0 OR + ML2_LCL <> 0 OR + ML3_LCL <> 0 OR + PUN_LCL <> 0); + + + -- Correction doublons + UPDATE prod_sigems2.dossier_x + SET ANN_DOX = 'KO' + FROM + ( + select ann_dox, cod_dox, min(CTID) AS koctid from prod_sigems2.dossier_x + group by 1,2 + having count(*) > 1 + ) subview + where CTID = koctid; + + UPDATE prod_sigems2.DOSSIER_MDT + SET ANN_DOS = 'KO' + FROM + ( + SELECT ANN_DOS, COD_DOS, min(CTID) AS koctid + FROM prod_sigems2.DOSSIER_MDT + GROUP BY 1,2 + HAVING count(*) > 1 + ) subview + WHERE CTID = koctid; + + -- Table de travail règlements clinique + + DROP TABLE IF EXISTS w_REG4; + CREATE TEMP TABLE w_REG4 AS + SELECT * + FROM prod_sigems2.REG + JOIN prod_sigems2.REG4 ON NUM_REG4 = SER_REG; + + CREATE INDEX w_REG4_i1 + ON w_REG4 + USING btree + (NUM_CLI); + + + + -- Table de travail règlements honoraires + + DROP TABLE IF EXISTS w_REG3; + CREATE TEMP TABLE w_REG3 AS + SELECT * + FROM prod_sigems2.REG + JOIN prod_sigems2.REG3 ON SER_REG3 = SER_REG; + + CREATE INDEX w_REG3_i1 + ON w_REG3 + USING btree + (LHO_REG3); + + -- Période (dernier mouvement pour détection now()) + DROP TABLE IF EXISTS w_PERIODE; + CREATE TEMP TABLE w_PERIODE AS + SELECT + 0::bigint AS periode_id, + CASE WHEN date_part('hour', DT_SIGEMS) < 9 THEN DATE(DT_SIGEMS - INTERVAL '1 day') ELSE date(DT_SIGEMS) END AS now_sigems, + CASE WHEN date_part('hour', DT_SIGEMS) < 9 THEN DATE(DT_SIGEMS) ELSE date(DT_SIGEMS + INTERVAL '1 day') END AS now_sigems_1 + FROM ( + SELECT greatest(max(DT_CREATION), max(DT_VALIDATION), max(DT_CALCUL), max(DT_EDITION), max(DT_TELETRANS)) as DT_SIGEMS + FROM prod_sigems2.HISTO_DOS + WHERE 1=1 + AND (DT_CREATION is null OR DT_CREATION <= now()) + AND (DT_VALIDATION is null OR DT_VALIDATION <= now()) + AND (DT_CALCUL is null OR DT_CALCUL <= now()) + AND (DT_EDITION is null OR DT_EDITION <= now()) + AND (DT_TELETRANS is null OR DT_TELETRANS <= now()) + HAVING count(*) > 0 + ) subview; + + + INSERT INTO w_PERIODE + SELECT + 0::bigint AS periode_id, + CASE WHEN date_part('hour', DT_CREATION) < 9 THEN DATE(DT_CREATION - INTERVAL '1 day') ELSE date(DT_CREATION) END AS now_sigems, + CASE WHEN date_part('hour', DT_CREATION) < 9 THEN DATE(DT_CREATION) ELSE date(DT_CREATION + INTERVAL '1 day') END AS now_sigems_1 + FROM ( + SELECT now() AS DT_CREATION WHERE (SELECT COUNT(*) FROM w_PERIODE) = 0 + ) subview; + + + -- Selection + + DROP TABLE IF EXISTS w_DOSSIER_SELECT; + + CREATE TEMP TABLE w_DOSSIER_SELECT AS + SELECT + ANN_DOS AS ANN_SELECT, + COD_DOS AS COD_SELECT, + ANN_DOS || to_char(COD_DOS,'FM900000') AS no_sejour_SELECT, + 0::text AS type_t2a, + 0::text AS est_budget_global, + 0::text AS avec_facturation_intermediaire + FROM prod_sigems2.DOSSIER + WHERE DSO_DOS >= '[ENV_ADM_ANNEEDEBUT]0101' OR DSO_DOS IS NULL; + + CREATE INDEX w_DOSSIER_SELECT_i1 + ON w_DOSSIER_SELECT + USING btree + (COD_SELECT); + + DELETE FROM w_DOSSIER_SELECT + USING prod_sigems2.SUPPRESSION_DOS + WHERE ANN_SELECT = ANNEE AND + COD_SELECT = CODE; + + + INSERT INTO w_DOSSIER_SELECT + SELECT + ANN_DOS2, + COD_DOS2, + ANN_DOS2 || to_char(COD_DOS2,'FM900000') + FROM prod_sigems2.DOS2 + LEFT JOIN w_DOSSIER_SELECT ON ANN_DOS2 = ANN_SELECT AND COD_DOS2 = COD_SELECT + WHERE ETA_DOS2 >= 3 AND ANN_SELECT IS NULL + GROUP BY 1,2,3 + HAVING ( + MAX(COALESCE(DFA_DOS2, '20991231')) >= '[ENV_ADM_ANNEEDEBUT]0101' OR + SUM(SR1_DOS2) <> SUM(SJ1_DOS2) OR + SUM(SR2_DOS2) <> SUM(SJ2_DOS2) OR + SUM(SR3_DOS2) <> SUM(SJ3_DOS2) OR + SUM(HR1_DOS2) <> SUM(HO1_DOS2) OR + SUM(HR2_DOS2) <> SUM(HO2_DOS2) OR + SUM(HR3_DOS2) <> SUM(HO3_DOS2) + ) + ORDER BY 1,2; + + + + INSERT INTO w_DOSSIER_SELECT + SELECT + ANN_LCL, + COD_LCL, + ANN_LCL || to_char(COD_LCL,'FM900000') + FROM + ( + SELECT ANN_LCL, COD_LCL FROM prod_sigems2.LIG_CLINI + JOIN prod_sigems2.REG4 ON NUM_LCL = NUM_CLI + JOIN prod_sigems2.REG ON NUM_REG4 = SER_REG + WHERE DAT_REG >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1,2 + ) subview + LEFT JOIN w_DOSSIER_SELECT ON ANN_LCL = ANN_SELECT AND COD_LCL = COD_SELECT + WHERE ANN_SELECT IS NULL; + + INSERT INTO w_DOSSIER_SELECT + SELECT + ANN_LHO, + COD_LHO, + ANN_LHO || to_char(COD_LHO,'FM900000') + FROM + ( + SELECT ANN_LHO, COD_LHO FROM prod_sigems2.LIG_HONOR + JOIN w_REG3 ON NUM_LHO = LHO_REG3 + WHERE DAT_REG >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1,2 + ) subview + LEFT JOIN w_DOSSIER_SELECT ON ANN_LHO = ANN_SELECT AND COD_LHO = COD_SELECT + WHERE ANN_SELECT IS NULL; + + -- Suppression des prévus non rentrés ou prévus dans plus d'un mois + DELETE FROM w_DOSSIER_SELECT + USING prod_sigems2.DOSSIER + WHERE ANN_SELECT = 'PA' AND + ANN_SELECT = ANN_DOS AND + COD_SELECT = COD_DOS AND + DEN_DOS <= date(NOW() - interval '1 days'); + + DELETE FROM w_DOSSIER_SELECT + USING prod_sigems2.DOSSIER + WHERE ANN_SELECT = 'PA' AND + ANN_SELECT = ANN_DOS AND + COD_SELECT = COD_DOS AND + DEN_DOS > date(NOW() + interval '1 month'); + + + CREATE INDEX w_DOSSIER_SELECT_i2 + ON w_DOSSIER_SELECT + USING btree + (no_sejour_SELECT); + + + + + + + + ]]> + + + + + + + + + '' THEN NMA_PAT ELSE NOM_PAT END) AS NOM_PAT, + MAX(PRE_PAT) AS PRE_PAT, + MAX(NOM_PAT) AS NNA_PAT, + MAX(date(DNA_PAT)) AS DNA_PAT, + MAX(SEX_PAT) AS SEX_PAT, + MAX(AD1_PAT) AS AD1_PAT, + MAX(AD2_PAT) AS AD2_PAT, + MAX(CPO_PAT) AS CPO_PAT, + MAX(VIL_PAT) AS VIL_PAT, + MAX(TEL_PAT) AS TEL_PAT + FROM prod_sigems2.PATIENT + JOIN (SELECT CPH_DOS, ANN_DOS, COD_DOS FROM prod_sigems2.DOSSIER + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_DOS = ANN_SELECT AND COD_DOS = COD_SELECT) s_dos ON CPH_DOS = COD_PAT + LEFT JOIN ( + SELECT + ANN_DOS, COD_DOS, (MAX(Array[id_fic,ipp]))[2] AS IPP + FROM + prod_sigems2.HPRIM_FIC_DETAIL GROUP BY 1,2) s_ipp ON s_ipp.COD_DOS = s_dos.COD_DOS AND s_ipp.ANN_DOS = s_dos.ANN_DOS + GROUP BY 1,2,3; + + UPDATE w_PATIENT SET + NOM_PAT = pool.NOM_PAT, + PRE_PAT = pool.PRE_PAT, + DNA_PAT = pool.DNA_PAT, + NNA_PAT = pool.NNA_PAT + FROM ( + SELECT + DISTINCT no_patient, + last_value(NOM_PAT) OVER (PARTITION BY no_patient ORDER BY SEJ_NUM rows between unbounded preceding and unbounded following) AS NOM_PAT, + last_value(PRE_PAT) OVER (PARTITION BY no_patient ORDER BY SEJ_NUM rows between unbounded preceding and unbounded following) AS PRE_PAT, + last_value(DNA_PAT) OVER (PARTITION BY no_patient ORDER BY SEJ_NUM rows between unbounded preceding and unbounded following) AS DNA_PAT, + last_value(NOM_PAT) OVER (PARTITION BY no_patient ORDER BY SEJ_NUM rows between unbounded preceding and unbounded following) AS NNA_PAT + FROM w_patient) pool + WHERE pool.no_patient = w_PATIENT.no_patient; + + CREATE INDEX w_PATIENT_i1 + ON w_PATIENT + USING btree + (COD_PAT); + + CREATE INDEX w_PATIENT_i2 + ON w_PATIENT + USING btree + (no_patient); + + UPDATE activite[PX].p_patients + SET nom = NOM_PAT, + nom_naissance = NNA_PAT, + prenom = PRE_PAT, + date_naissance = DNA_PAT + FROM w_PATIENT + WHERE p_patients.no_patient = w_PATIENT.no_patient + AND ( + p_patients.nom IS DISTINCT FROM NOM_PAT OR + p_patients.prenom IS DISTINCT FROM PRE_PAT OR + nom_naissance IS DISTINCT FROM NNA_PAT OR + p_patients.date_naissance IS DISTINCT FROM date(DNA_PAT) + ); + + INSERT INTO activite[PX].p_patients(finess, no_patient, nom, prenom, nom_naissance, date_naissance) + SELECT '', w_PATIENT.no_patient, MAX(NOM_PAT), MAX(PRE_PAT), MAX(NNA_PAT), MAX(DNA_PAT) + FROM w_PATIENT + LEFT JOIN activite[PX].p_patients ON (w_PATIENT.no_patient = p_patients.no_patient) + WHERE p_patients.no_patient IS NULL + GROUP BY 1,2 + ; + + + + ]]> + + + + 0 THEN COALESCE(to_number('0' || GHS,'00000'),0) ELSE 0 END) AS GHS_BEBE1, + ''::text AS CLE_GHM + FROM prod_sigems2.GHS_VALORISE + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANNEE = ANN_SELECT AND CODE = COD_SELECT + GROUP BY 1,2,3; + + + UPDATE w_GHS_VALORISE + SET GHS = 0, GHS_BEBE1 = 0 + WHERE (GHS <> 0 OR GHS_BEBE1 <> 0) AND + NUM_RSS IN ( + SELECT + NUM_RSS + FROM prod_sigems2.UN_RUM + JOIN prod_sigems2.PMSI_GHM ON UN_RUM.GHM = PMSI_GHM.CODE_GHM + WHERE NUM_RSS IN (SELECT NUM_RSS FROM w_GHS_VALORISE WHERE GHS = 9999) + GROUP BY 1 + HAVING MAX(CLE_GHM) LIKE '90%' + ); + + UPDATE w_GHS_VALORISE + SET GHS = 0, GHS_BEBE1 = 0 + WHERE (GHS <> 0 OR GHS_BEBE1 <> 0) AND + NUM_RSS IN ( + SELECT + NUM_RSS + FROM prod_sigems2.UN_RUM + LEFT JOIN prod_sigems2.PMSI_GHM ON UN_RUM.GHM = PMSI_GHM.CODE_GHM + WHERE NUM_RSS IN (SELECT NUM_RSS FROM w_GHS_VALORISE WHERE GHS = 9999) AND + PMSI_GHM.CODE_GHM IS NULL + GROUP BY 1 + ); + + UPDATE w_GHS_VALORISE + SET CLE_GHM = PMSI_GHM.CLE_GHM + FROM prod_sigems2.UN_RUM + JOIN prod_sigems2.PMSI_GHM ON UN_RUM.GHM = PMSI_GHM.CODE_GHM + WHERE w_GHS_VALORISE.NUM_RSS = UN_RUM.NUM_RSS AND + UN_RUM.NUM_RUM < 50 AND + PMSI_GHM.CLE_GHM <> '' AND PMSI_GHM.CLE_GHM NOT LIKE '90%' + ; + + + DROP TABLE IF EXISTS w_LIG_CLINI_forfaits; + CREATE TEMP TABLE w_LIG_CLINI_forfaits AS + SELECT + ANN_LCL, + COD_LCL + FROM prod_sigems2.LIG_CLINI + WHERE PRO_LCL IN ('SE1', 'SE2', 'SE3', 'SE4','SE5', 'SE6', 'ATU', 'FPU', 'FFM') + GROUP BY 1,2 + HAVING SUM(QTE_LCL) > 0; + + CREATE INDEX w_LIG_CLINI_forfaits_i1 + ON w_LIG_CLINI_forfaits + USING btree + (COD_LCL); + + + UPDATE w_GHS_VALORISE + SET CLE_GHM = '', GHS = 0, GHS_BEBE1 = 0 + FROM w_LIG_CLINI_forfaits + WHERE ANN_GHSV = ANN_LCL AND COD_GHSV = COD_LCL AND + (CLE_GHM <> '' OR GHS <> 0 OR GHS_BEBE1 <> 0) ; + + DROP TABLE IF EXISTS w_LIG_CLINI_forfaits; + + + DROP TABLE IF EXISTS w_CONTROLE_DIM; + CREATE TEMP TABLE w_CONTROLE_DIM AS + SELECT + ANNEE AS ANN_CTLD, + CODE AS COD_CTLD, + (MAX(Array[to_char(CONTROLE_DIM.NL,'FM0000'), CASE WHEN CONTROLE_DIM.ETAT >= 0 THEN CONTROLE_DIM.DATE_ACTION::text ELSE NULL END]))[2]::date AS DATE_GROUPAGE, + (MAX(Array[to_char(CONTROLE_DIM.NL,'FM0000'), CASE WHEN CONTROLE_DIM.ETAT = 1 THEN CONTROLE_DIM.DATE_ACTION::text ELSE NULL END]))[2]::date AS DATE_VALIDATION + FROM prod_sigems2.CONTROLE_DIM + GROUP BY 1,2 + ORDER BY 1,2; + + UPDATE w_CONTROLE_DIM + SET DATE_GROUPAGE = DATE_VALIDATION + WHERE DATE_GROUPAGE IS NULL AND DATE_VALIDATION IS NOT NULL; + + + UPDATE w_CONTROLE_DIM + SET DATE_GROUPAGE = DATE_VALIDATION + FROM activite.t_divers + WHERE t_divers.code = 'SIGETAGRP' AND t_divers.valeur = '2' AND + DATE_GROUPAGE IS DISTINCT FROM DATE_VALIDATION; + + + UPDATE w_GHS_VALORISE + SET GHS = 0, GHS_BEBE1 = 0 + FROM w_CONTROLE_DIM + WHERE ANN_GHSV = ANN_CTLD AND COD_GHSV = COD_CTLD AND DATE_GROUPAGE IS NULL AND + (GHS <> 0 OR GHS_BEBE1 <> 0); + + + + -- Séjour + + DROP TABLE IF EXISTS w_DOSSIER_SEJOUR; + CREATE TEMP TABLE w_DOSSIER_SEJOUR AS + SELECT + ANN_DOS, + COD_DOS, + MAX(COALESCE(SER_SEJ,SER_DOS,'')) AS SER_DOS, + MAX(COALESCE(NCH_SEJ,NCH_DOS,'')) AS NCH_DOS + FROM prod_sigems2.DOSSIER + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_DOS = ANN_SELECT AND COD_DOS = COD_SELECT + LEFT JOIN prod_sigems2.SEJOUR ON ANN_DOS = ANN_SEJ AND COD_DOS = COD_SEJ + GROUP BY 1,2; + + CREATE INDEX w_DOSSIER_SEJOUR_i1 + ON w_DOSSIER_SEJOUR + USING btree + (COD_DOS); + + + + -- RIS_DOS2 represente le risque d'un dossier. Cette donnee peut varier au fil des refacturations, il faut prendre la derniere utilisee + DROP TABLE IF EXISTS w_DOS2; + CREATE TEMP TABLE w_DOS2 AS + SELECT + ANN_DOS2, + COD_DOS2, + MAX(CP1_DOS2) AS CP1_DOS2, + MAX(CA2_DOS2) AS CA2_DOS2, + (MAX(array[to_char(ind_dos2, 'FM999'), ris_dos2]))[2] as RIS_DOS2, + COUNT(*) + FROM prod_sigems2.DOS2 + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_DOS2 = ANN_SELECT AND COD_DOS2 = COD_SELECT + WHERE ETA_DOS2 >= 2 + GROUP BY 1,2; + + CREATE INDEX w_DOS2_i1 + ON w_DOS2 + USING btree + (COD_DOS2); + + DROP TABLE IF EXISTS w_LIG_CLINI_externes; + CREATE TEMP TABLE w_LIG_CLINI_externes AS + SELECT + ANN_LCL, + COD_LCL, + '07'::text AS MDT_LCL + FROM prod_sigems2.LIG_CLINI + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LCL = ANN_SELECT AND COD_LCL = COD_SELECT + WHERE pro_lcl IN ('SE1', 'SE2', 'SE3', 'SE4','SE5', 'SE6', 'ATU', 'FPU') + GROUP BY 1,2 + HAVING SUM(QTE_LCL) > 0; + + CREATE INDEX w_LIG_CLINI_externes_i1 + ON w_LIG_CLINI_externes + USING btree + (COD_LCL); + + DROP TABLE IF EXISTS w_LIG_CLINI_hospit; + CREATE TEMP TABLE w_LIG_CLINI_hospit AS + SELECT + ANN_LCL, + COD_LCL, + MAX(CASE WHEN w_GHS_VALORISE.GHS IN (SELECT code FROM base.t_ghs WHERE texte like '%séance%') THEN '19'::text ELSE '03'::text END) AS MDT_LCL + FROM prod_sigems2.LIG_CLINI + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LCL = ANN_SELECT AND COD_LCL = COD_SELECT + LEFT JOIN w_GHS_VALORISE ON ANN_GHSV = ANN_LCL AND COD_GHSV = COD_LCL + WHERE pro_lcl IN ('GHS') + GROUP BY 1,2 + HAVING SUM(QTE_LCL) > 0; + + CREATE INDEX w_LIG_CLINI_hospit_i1 + ON w_LIG_CLINI_hospit + USING btree + (COD_LCL); + + + + -- Concernant le risque du dossier, on privilegie le risque present sur les factures (RIS_DOS2) au risque saisi a l'ouverture du dossier (RIS_DOS) + DROP TABLE IF EXISTS w_DOSSIER; + CREATE TEMP TABLE w_DOSSIER AS + SELECT + DOSSIER.ANN_DOS || to_char(DOSSIER.COD_DOS,'FM900000') AS SEJ_DOS, + DOSSIER.ANN_DOS, + DOSSIER.COD_DOS, + COALESCE(MDT_REEL,MDT_DOS) AS MDT_DOS, + COALESCE(w_LIG_CLINI_externes.MDT_LCL, w_LIG_CLINI_hospit.MDT_LCL, '') AS MDT_LCL, + DMT_SER AS DMT_DOS, + w_DOSSIER_SEJOUR.SER_DOS AS SER_DOS, + w_DOSSIER_SEJOUR.SER_DOS || '_' || COALESCE(MDT_REEL,MDT_DOS) AS SER_DOS_MDT, + COALESCE(SER_CHA,'') AS ETA_DOS, + COALESCE(SER_CHA || '|' || w_DOSSIER_SEJOUR.NCH_DOS, '|') AS NCH_DOS, + CCH_DOS, + CPH_DOS, + COALESCE(CHP_DOX,'') AS CHP_DOX, + DEN_DOS, + to_number('00' || MIN_DOS,'0000') AS MIN_DOS, + to_timestamp(to_char(DEN_DOS,'YYYYMMDD') || MIN_DOS,'YYYYMMDDHH24')::timestamp without time zone AS w_DHEN_DOS, + COALESCE(DSO_DOS,'20991231') AS DSO_DOS, + to_number('00' || HEU_DOS,'0000') AS HEU_DOS, + to_timestamp(to_char(COALESCE(DSO_DOS,'20991231'),'YYYYMMDD') || HEU_DOS,'YYYYMMDDHH24')::timestamp without time zone AS w_DHSO_DOS, + COALESCE(CP1_DOS2,'') AS CP1_DOS2, + COALESCE(CA2_DOS2,'') AS CA2_DOS2, + CASE WHEN MSO_DOS <> '' THEN MSO_DOS ELSE '80' END AS MSO_DOS, + COALESCE(DATE_GROUPAGE,'20991231'::date) AS DATE_GROUPAGE, + COALESCE(GHS,0) AS GHS, + COALESCE(CLE_GHM,'') AS CLE_GHM, + COALESCE(GHS_BEBE1,0) AS GHS_BEBE1, + COALESCE(w_DOS2.RIS_DOS2, DOSSIER.RIS_DOS) AS RIS_DOS, + w_DOSSIER_SEJOUR.SER_DOS || '|' || + COALESCE(MDT_REEL,MDT_DOS) || '|' || + w_DOSSIER_SEJOUR.NCH_DOS || '|' || + COALESCE(CCH_DOS,'|') || '|' || + COALESCE(CP1_DOS2,'') || '|' || + COALESCE(CA2_DOS2,'') || '|' || + COALESCE(GHS,0) || '|' || + COALESCE(CLE_GHM,'') || '|' || + COALESCE(GHS_BEBE1,0) AS key + FROM prod_sigems2.DOSSIER + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_DOS = ANN_SELECT AND COD_DOS = COD_SELECT + LEFT JOIN prod_sigems2.DOSSIER_X ON DOSSIER.ANN_DOS = DOSSIER_X.ANN_DOX AND DOSSIER.COD_DOS = DOSSIER_X.COD_DOX AND CHP_DOX <> '' + LEFT JOIN prod_sigems2.DOSSIER_MDT ON DOSSIER.ANN_DOS = DOSSIER_MDT.ANN_DOS AND DOSSIER.COD_DOS = DOSSIER_MDT.COD_DOS + LEFT JOIN w_LIG_CLINI_externes ON DOSSIER.ANN_DOS = w_LIG_CLINI_externes.ANN_LCL AND DOSSIER.COD_DOS = w_LIG_CLINI_externes.COD_LCL + LEFT JOIN w_LIG_CLINI_hospit ON DOSSIER.ANN_DOS = w_LIG_CLINI_hospit.ANN_LCL AND DOSSIER.COD_DOS = w_LIG_CLINI_hospit.COD_LCL + LEFT JOIN w_DOSSIER_SEJOUR ON DOSSIER.ANN_DOS = w_DOSSIER_SEJOUR.ANN_DOS AND DOSSIER.COD_DOS = w_DOSSIER_SEJOUR.COD_DOS + LEFT JOIN w_GHS_VALORISE ON ANN_GHSV = DOSSIER.ANN_DOS AND COD_GHSV = DOSSIER.COD_DOS + LEFT JOIN w_CONTROLE_DIM ON ANN_CTLD = DOSSIER.ANN_DOS AND COD_CTLD = DOSSIER.COD_DOS + LEFT JOIN w_DOS2 ON ANN_DOS2 = DOSSIER.ANN_DOS AND COD_DOS2 = DOSSIER.COD_DOS + LEFT JOIN prod_sigems2.SERVICE ON w_DOSSIER_SEJOUR.SER_DOS = COD_SER + LEFT JOIN w_CHAMBRE ON w_DOSSIER_SEJOUR.NCH_DOS = COD_CHA AND w_DOSSIER_SEJOUR.NCH_DOS <> '' AND w_DOSSIER_SEJOUR.NCH_DOS <> '0' + WHERE DEN_DOS IS NOT NULL; + + + UPDATE w_DOSSIER + SET ETA_DOS = substr(NCH_DOS,2), NCH_DOS = substr(NCH_DOS,2) || NCH_DOS + WHERE ETA_DOS = '' AND NCH_DOS <> '|' AND NCH_DOS LIKE '|%'; + + + CREATE INDEX w_DOSSIER_i1 + ON w_DOSSIER + USING btree + (SEJ_DOS); + + CREATE INDEX w_DOSSIER_i2 + ON w_DOSSIER + USING btree + (COD_DOS); + + + UPDATE w_DOSSIER + SET DSO_DOS = base.cti_to_date(date_part('year',DEN_DOS),date_part('month',DSO_DOS),date_part('day',DSO_DOS)) + WHERE DSO_DOS > '20201001' and DSO_DOS <> '20991231'; + + + + DROP TABLE IF EXISTS w_DOSSIER_key; + CREATE TEMP TABLE w_DOSSIER_key AS + SELECT + key, + SER_DOS, + SER_DOS_MDT, + ETA_DOS, + NCH_DOS, + CCH_DOS, + CP1_DOS2, + CA2_DOS2, + GHS, + CLE_GHM, + GHS_BEBE1, + 0 AS mode_traitement_id, + ''::text AS mode_traitement_code, + ''::text AS dmt_code, + '0'::text AS type_sejour_force, + 0::bigint AS lieu_id, + 0::bigint AS unite_fonctionnelle_id, + 0::bigint AS medecin_sejour_id, + 0::bigint AS ghs_id, + 0::bigint AS ghm_id, + 0::bigint AS ghs_bebe1_id, + 0::bigint AS ghs_bebe2_id, + 0::bigint AS ghs_bebe3_id, + 0::bigint AS tiers_payant_0_id, + 0::bigint AS tiers_payant_1_id, + 0::bigint AS tiers_payant_2_id, + 0::bigint AS tiers_payant_22_id + FROM w_DOSSIER + GROUP BY 1,2,3,4,5,6,7,8,9,10,11; + + UPDATE w_DOSSIER_key SET + mode_traitement_id = t_modes_traitement.oid, + mode_traitement_code = t_modes_traitement.code, + dmt_code = t_dmt.code, + type_sejour_force = CASE WHEN t_services_facturation.type_sejour IN ('1', '2', '3', '4', '5') THEN t_services_facturation.type_sejour ELSE '0' END + FROM activite[PX].t_services_facturation + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + JOIN base.t_dmt ON t_services_facturation.dmt_id = t_dmt.oid + WHERE t_services_facturation.code_original = SER_DOS_MDT; + + UPDATE w_DOSSIER_key + set medecin_sejour_id = t_medecins_administratifs.oid + FROM activite[PX].t_medecins_administratifs + WHERE CCH_DOS <> '' AND code_original = CCH_DOS; + + UPDATE w_DOSSIER_key + set tiers_payant_0_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE code_original = 'PATIENT'; + + UPDATE w_DOSSIER_key + set tiers_payant_1_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE CP1_DOS2 <> '' AND code_original = CP1_DOS2; + + UPDATE w_DOSSIER_key + set tiers_payant_2_id = t_tiers_payant.oid + FROM activite[PX].t_tiers_payant + WHERE CA2_DOS2 <> '' AND code_original = CA2_DOS2; + + UPDATE w_DOSSIER_key + set ghs_id = t_ghs.oid + FROM base.t_ghs + WHERE GHS <> 0 AND t_ghs.code = GHS; + + UPDATE w_DOSSIER_key + set ghm_id = t_ghm.oid + FROM base.t_ghm + WHERE CLE_GHM <> '' AND t_ghm.code = CLE_GHM AND t_ghm.code NOT LIKE '90%'; + + UPDATE w_DOSSIER_key + set ghs_bebe1_id = t_ghs.oid + FROM base.t_ghs + WHERE GHS_BEBE1 <> 0 AND t_ghs.code = GHS_BEBE1; + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_6) + SELECT SER_DOS_MDT, '', ETA_DOS, NCH_DOS, SER_DOS + FROM w_DOSSIER_key + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = SER_DOS_MDT AND + code_original_2 = '' AND + code_original_3 = ETA_DOS AND + code_original_4 = NCH_DOS AND + code_original_6 = SER_DOS + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5; + + UPDATE w_DOSSIER_key + set lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = SER_DOS_MDT AND + code_original_2 = '' AND + code_original_3 = ETA_DOS AND + code_original_4 = NCH_DOS AND + code_original_6 = SER_DOS; + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM + activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original + AND (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM + activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + DROP TABLE IF EXISTS w_sejours; + CREATE TEMP TABLE w_sejours AS + SELECT + ''::text AS finess, + SEJ_DOS as no_sejour, + SEJ_DOS as code_original, + no_patient, + DEN_DOS as date_entree, + MIN_DOS * 10000 as heure_entree, + DSO_DOS as date_sortie, + HEU_DOS * 10000 as heure_sortie, + CASE WHEN SEX_PAT IN ('F') THEN '2' ELSE '1' END as code_sexe, + 0 AS age, + CASE WHEN DSO_DOS IS NOT NULL AND DSO_DOS < '20991231' AND SEJ_DOS NOT LIKE 'P%' THEN 1 ELSE 0 END::numeric as code_sorti, + CASE WHEN SEJ_DOS LIKE 'P%' THEN 1::numeric ELSE 0::numeric END AS code_prevu, + CASE + WHEN type_sejour_force <> '0' THEN type_sejour_force + WHEN MDT_LCL IN ('03') AND DSO_DOS = DEN_DOS THEN '2' + WHEN MDT_LCL IN ('03') THEN '1' + WHEN MDT_LCL IN ('07') THEN '3' + WHEN mode_traitement_code IN ('07') OR dmt_code IN ('958') THEN '3' + WHEN mode_traitement_code IN ('19', '23') AND DSO_DOS = DEN_DOS THEN '2' + WHEN mode_traitement_code IN ('04') AND DSO_DOS = DEN_DOS THEN '2' + WHEN mode_traitement_code IN ('03') AND DSO_DOS = DEN_DOS THEN '2' + WHEN mode_traitement_code IN ('03') THEN '1' + ELSE '1' END as type_sejour, + lieu_id AS lieu_sortie_id, + unite_fonctionnelle_id, + w_DOSSIER_key.medecin_sejour_id AS medecin_sejour_id, + ghs_id, + ghm_id, + ghs_bebe1_id, + 0::numeric AS ghs_bebe2_id, + 0::numeric AS ghs_bebe3_id, + DATE_GROUPAGE, + CASE WHEN w_DOSSIER.CHP_DOX LIKE 'P%' THEN '1'::text ELSE '0'::text END AS code_cp_demandee, + mode_traitement_id, + CASE WHEN SUBSTR(ADM_DOS,1,1) <> '' THEN (CASE WHEN ANU_ADM <> '' THEN (CASE WHEN DAF_ADM IS NULL THEN ANU_ADM ELSE (CASE WHEN SUBSTR(ADM_DOS,1,1) IN ('6','7','8') THEN SUBSTR(ADM_DOS,1,1) ELSE '8' END) END) ELSE (CASE WHEN SUBSTR(ADM_DOS,1,1) IN ('6','7','8') THEN SUBSTR(ADM_DOS,1,1) ELSE '8' END) END)::text ELSE '0'::text END as mode_entree, + CASE WHEN SUBSTR(ADM_DOS,2,1) <> '' THEN (CASE WHEN ANU_ADM <> '' AND DAF_ADM IS NULL THEN (CASE WHEN (SUBSTR(ADM_DOS,1,1) = 'S' OR SUBSTR(ADM_DOS,2,1) = 'R') THEN '1' ELSE SUBSTR(ADM_DOS,2,1) END) ELSE SUBSTR(ADM_DOS,2,1) END)::text ELSE '0'::text END as provenance, + SUBSTR(MSO_DOS,1,1)::character(1) as mode_sortie, + SUBSTR(MSO_DOS,2,1)::character(1) as destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + 0 AS est_budget_global, + COALESCE(t_codes_postaux.oid, 0) as code_postal_id, + COALESCE(t_risque.oid, 0) as risque_id + FROM w_DOSSIER + LEFT JOIN prod_sigems2.DOSSIER_X ON w_DOSSIER.ANN_DOS = DOSSIER_X.ANN_DOX AND w_DOSSIER.COD_DOS = DOSSIER_X.COD_DOX + LEFT JOIN prod_sigems2.ADMISSION ON COD_ADM = ADM_DOS + JOIN w_DOSSIER_key ON w_DOSSIER.key = w_DOSSIER_key.key + LEFT JOIN w_PATIENT ON CPH_DOS = COD_PAT AND SEJ_DOS = SEJ_NUM + LEFT JOIN base.t_codes_postaux on t_codes_postaux.code = w_PATIENT.CPO_PAT + LEFT JOIN activite.t_risque ON t_risque.code = w_DOSSIER.RIS_DOS; + + -- Forcage type selon séjour + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour + FROM activite.t_sejour + WHERE t_sejour.no_sejour = w_sejours.no_sejour AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9'); + + -- Calcul dates sortie prévisionnelles + + DROP TABLE IF EXISTS w_DOSSIER_DMS; + CREATE TEMP TABLE w_DOSSIER_DMS AS + SELECT PTH_DOS, round(AVG(date(DSO_DOS) - date(DEN_DOS)),0) AS dms + FROM prod_sigems2.DOSSIER + JOIN w_PERIODE ON periode_id = 0 + WHERE DEN_DOS IS NOT NULL AND DSO_DOS >= DEN_DOS AND DSO_DOS <= now_sigems + GROUP BY 1; + + + + UPDATE w_sejours + SET date_sortie = GREATEST(date_entree + (dms || ' days')::interval, now_sigems_1) + FROM w_DOSSIER_select + JOIN w_PERIODE ON periode_id = 0 + JOIN prod_sigems2.DOSSIER ON ANN_SELECT = ANN_DOS AND COD_SELECT = COD_DOS + JOIN w_DOSSIER_DMS ON DOSSIER.PTH_DOS = w_DOSSIER_DMS.PTH_DOS + WHERE no_sejour = no_sejour_SELECT AND + date_sortie = '20991231' AND code_sorti <> '1'; + + + DROP TABLE IF EXISTS w_sejours_DMS; + CREATE TEMP TABLE w_sejours_DMS AS + SELECT medecin_sejour_id, unite_fonctionnelle_id, round(AVG(date(date_sortie) - date(date_entree)),0) AS dms + FROM w_sejours + JOIN w_PERIODE ON periode_id = 0 + WHERE code_sorti = '1' AND date_sortie >= date_entree AND date_sortie <= now_sigems + GROUP BY 1,2; + + + UPDATE w_sejours + SET date_sortie = GREATEST(date_entree + (dms || ' days')::interval, now_sigems_1) + FROM w_sejours_DMS + JOIN w_PERIODE ON periode_id = 0 + WHERE w_sejours.medecin_sejour_id = w_sejours_DMS.medecin_sejour_id AND + w_sejours.unite_fonctionnelle_id = w_sejours_DMS.unite_fonctionnelle_id AND + date_sortie = '20991231' AND code_sorti <> '1'; + + + DROP TABLE IF EXISTS w_sejours_DMS; + CREATE TEMP TABLE w_sejours_DMS AS + SELECT medecin_sejour_id, round(AVG(date(date_sortie) - date(date_entree)),0) AS dms + FROM w_sejours + JOIN w_PERIODE ON periode_id = 0 + WHERE code_sorti = '1' AND date_sortie >= date_entree AND date_sortie <= now_sigems + GROUP BY 1; + + + UPDATE w_sejours + SET date_sortie = GREATEST(date_entree + (dms || ' days')::interval, now_sigems_1) + FROM w_sejours_DMS + JOIN w_PERIODE ON periode_id = 0 + WHERE w_sejours.medecin_sejour_id = w_sejours_DMS.medecin_sejour_id AND + date_sortie = '20991231' AND code_sorti <> '1'; + + + DROP TABLE IF EXISTS w_sejours_DMS; + CREATE TEMP TABLE w_sejours_DMS AS + SELECT round(AVG(date(date_sortie) - date(date_entree)),0) AS dms + FROM w_sejours + JOIN w_PERIODE ON periode_id = 0 + WHERE code_sorti = '1' AND date_sortie >= date_entree AND date_sortie <= now_sigems; + + + UPDATE w_sejours + SET date_sortie = GREATEST(date_entree + (dms || ' days')::interval, now_sigems_1) + FROM w_sejours_DMS + JOIN w_PERIODE ON periode_id = 0 + WHERE date_sortie = '20991231' AND code_sorti <> '1'; + + + UPDATE w_sejours SET heure_sortie = heure_entree + 40000 + WHERE code_sorti <> '1' AND date_sortie = date_entree AND heure_entree <= 190000; + + UPDATE w_sejours SET heure_sortie = 235959 + WHERE code_sorti <> '1' AND date_sortie = date_entree AND heure_entree > 190000; + + UPDATE w_sejours SET heure_sortie = 130000 + WHERE code_sorti <> '1' AND date_sortie > date_entree ; + + + UPDATE w_DOSSIER + SET w_DHSO_DOS = to_timestamp(to_char(COALESCE(date_sortie,'20991231'),'YYYYMMDD') || to_char(heure_sortie,'FM000000'),'YYYYMMDDHH24') + FROM w_sejours + WHERE SEJ_DOS = no_sejour AND + (code_sorti <> '1' OR code_prevu = '1'); + + + -- Pointage séjours Budget Global + UPDATE w_sejours + SET est_budget_global = 1 + FROM activite[PX].t_lieux + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid AND t_services_facturation.est_budget_global = '1' + WHERE lieu_sortie_id = t_lieux.oid AND + w_sejours.est_budget_global IS DISTINCT FROM 1; + + + -- FINESS + UPDATE w_sejours + SET finess = t_finess.code + FROM activite[PX].t_lieux + JOIN activite[PX].t_services_facturation on service_facturation_id = t_services_facturation.oid + JOIN base.t_finess ON finess_id = t_finess.oid + WHERE lieu_sortie_id = t_lieux.oid; + + UPDATE w_sejours + SET finess = '000000000' + WHERE finess = ''; + + -- Validation des séjours + + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_13'); + + UPDATE activite[PX].p_sejours SET + finess = w_sejours.finess, + code_original = w_sejours.code_original, + no_patient = w_sejours.no_patient, + date_entree = w_sejours.date_entree, + heure_entree = w_sejours.heure_entree, + date_sortie = w_sejours.date_sortie, + heure_sortie = w_sejours.heure_sortie, + code_sexe = w_sejours.code_sexe, + age = w_sejours.age, + code_sorti = w_sejours.code_sorti, + code_prevu = w_sejours.code_prevu, + type_sejour = w_sejours.type_sejour, + lieu_sortie_id = w_sejours.lieu_sortie_id, + medecin_sejour_id = w_sejours.medecin_sejour_id, + code_cp_demandee = w_sejours.code_cp_demandee, + mode_traitement_id = w_sejours.mode_traitement_id, + mode_entree = w_sejours.mode_entree, + provenance = w_sejours.provenance, + mode_sortie = w_sejours.mode_sortie, + destination = w_sejours.destination, + tiers_payant_0_id = w_sejours.tiers_payant_0_id, + tiers_payant_1_id = w_sejours.tiers_payant_1_id, + tiers_payant_2_id = w_sejours.tiers_payant_2_id, + tiers_payant_22_id = w_sejours.tiers_payant_22_id, + est_budget_global = w_sejours.est_budget_global, + date_groupage = w_sejours.date_groupage, + ghs_id = w_sejours.ghs_id, + ghm_id = w_sejours.ghm_id, + ghs_bebe1_id = w_sejours.ghs_bebe1_id, + ghs_bebe2_id = w_sejours.ghs_bebe2_id, + ghs_bebe3_id = w_sejours.ghs_bebe3_id, + code_postal_id = w_sejours.code_postal_id, + risque_id = w_sejours.risque_id + FROM w_sejours + WHERE w_sejours.no_sejour = p_sejours.no_sejour + AND ( + w_sejours.finess IS DISTINCT FROM p_sejours.finess OR + w_sejours.code_original IS DISTINCT FROM p_sejours.code_original OR + w_sejours.no_patient IS DISTINCT FROM p_sejours.no_patient OR + w_sejours.date_entree IS DISTINCT FROM p_sejours.date_entree OR + w_sejours.heure_entree IS DISTINCT FROM p_sejours.heure_entree OR + w_sejours.date_sortie IS DISTINCT FROM p_sejours.date_sortie OR + w_sejours.heure_sortie IS DISTINCT FROM p_sejours.heure_sortie OR + w_sejours.code_sexe IS DISTINCT FROM p_sejours.code_sexe OR + w_sejours.age IS DISTINCT FROM p_sejours.age OR + w_sejours.code_sorti IS DISTINCT FROM p_sejours.code_sorti OR + w_sejours.code_prevu IS DISTINCT FROM p_sejours.code_prevu OR + w_sejours.type_sejour IS DISTINCT FROM p_sejours.type_sejour OR + w_sejours.lieu_sortie_id IS DISTINCT FROM p_sejours.lieu_sortie_id OR + w_sejours.medecin_sejour_id IS DISTINCT FROM p_sejours.medecin_sejour_id OR + w_sejours.code_cp_demandee IS DISTINCT FROM p_sejours.code_cp_demandee OR + w_sejours.mode_traitement_id IS DISTINCT FROM p_sejours.mode_traitement_id OR + w_sejours.mode_entree IS DISTINCT FROM p_sejours.mode_entree OR + w_sejours.provenance IS DISTINCT FROM p_sejours.provenance OR + w_sejours.mode_sortie IS DISTINCT FROM p_sejours.mode_sortie OR + w_sejours.destination IS DISTINCT FROM p_sejours.destination OR + w_sejours.tiers_payant_0_id IS DISTINCT FROM p_sejours.tiers_payant_0_id OR + w_sejours.tiers_payant_1_id IS DISTINCT FROM p_sejours.tiers_payant_1_id OR + w_sejours.tiers_payant_2_id IS DISTINCT FROM p_sejours.tiers_payant_2_id OR + w_sejours.tiers_payant_22_id IS DISTINCT FROM p_sejours.tiers_payant_22_id OR + w_sejours.est_budget_global IS DISTINCT FROM p_sejours.est_budget_global OR + w_sejours.date_groupage IS DISTINCT FROM p_sejours.date_groupage OR + w_sejours.ghs_id IS DISTINCT FROM p_sejours.ghs_id OR + w_sejours.ghm_id IS DISTINCT FROM p_sejours.ghm_id OR + w_sejours.ghs_bebe1_id IS DISTINCT FROM p_sejours.ghs_bebe1_id OR + w_sejours.ghs_bebe2_id IS DISTINCT FROM p_sejours.ghs_bebe2_id OR + w_sejours.ghs_bebe3_id IS DISTINCT FROM p_sejours.ghs_bebe3_id OR + w_sejours.code_postal_id IS DISTINCT FROM p_sejours.code_postal_id OR + w_sejours.risque_id IS DISTINCT FROM p_sejours.risque_id + ); + + + INSERT INTO activite[PX].p_sejours ( + finess, + no_sejour, + code_original, + no_patient, + date_entree, + heure_entree, + date_sortie, + heure_sortie, + code_sexe, + age, + code_sorti, + code_prevu, + type_sejour, + lieu_sortie_id, + medecin_sejour_id, + ghs_id, + ghm_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + date_groupage, + code_cp_demandee, + mode_traitement_id, + mode_entree, + provenance, + mode_sortie, + destination, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + est_budget_global, + code_postal_id, + risque_id + ) + SELECT + w_sejours.finess, + w_sejours.no_sejour, + w_sejours.code_original, + w_sejours.no_patient, + w_sejours.date_entree, + w_sejours.heure_entree, + w_sejours.date_sortie, + w_sejours.heure_sortie, + w_sejours.code_sexe, + w_sejours.age, + w_sejours.code_sorti, + w_sejours.code_prevu, + w_sejours.type_sejour, + w_sejours.lieu_sortie_id, + w_sejours.medecin_sejour_id, + w_sejours.ghs_id, + w_sejours.ghm_id, + w_sejours.ghs_bebe1_id, + w_sejours.ghs_bebe2_id, + w_sejours.ghs_bebe3_id, + w_sejours.date_groupage, + w_sejours.code_cp_demandee, + w_sejours.mode_traitement_id, + w_sejours.mode_entree, + w_sejours.provenance, + w_sejours.mode_sortie, + w_sejours.destination, + w_sejours.tiers_payant_0_id, + w_sejours.tiers_payant_1_id, + w_sejours.tiers_payant_2_id, + w_sejours.tiers_payant_22_id, + w_sejours.est_budget_global, + w_sejours.code_postal_id, + w_sejours.risque_id + + FROM w_sejours LEFT JOIN activite[PX].p_sejours ON (w_sejours.no_sejour = p_sejours.no_sejour) + WHERE p_sejours.no_sejour IS NULL; + + DELETE FROM activite[PX].p_sejours WHERE no_sejour NOT IN (SELECT no_sejour_SELECT FROM w_DOSSIER_SELECT); + + DELETE FROM activite[PX].p_sejours USING + ( + SELECT no_sejour, min(CTID) AS koctid + FROM activite[PX].p_sejours + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE CTID = koctid; + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '[PX]' = ''; + + UPDATE activite[PX].p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND + '[PX]' = ''; + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '[PX]' = ''; + + + -- recréation index + + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_13'); + + + ]]> + + + + '' AND NCH_SEJ <> '0' + WHERE DAE_SEJ <= DAS_SEJ OR DAS_SEJ IS NULL OR SEJOUR.ANN_SEJ IS NULL + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 + ORDER BY SEJ_DOS + ; + + + UPDATE w_SEJOUR + SET ETA_SEJ = substr(NCH_SEJ,2), NCH_SEJ = substr(NCH_SEJ,2) || NCH_SEJ + WHERE ETA_SEJ = '' AND NCH_SEJ <> '|' AND NCH_SEJ LIKE '|%'; + + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_6) + SELECT SER_SEJ_MDT, '', ETA_SEJ, NCH_SEJ, SER_SEJ + FROM w_SEJOUR + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = SER_SEJ_MDT AND + code_original_2 = '' AND + code_original_3 = ETA_SEJ AND + code_original_4 = NCH_SEJ AND + code_original_6 = SER_SEJ + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5; + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM + activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original + AND (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM activite[PX].t_lits + WHERE code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + + -- L'étage 'NULL' est faux + UPDATE activite[PX].t_lieux + SET lit_id = 0 + WHERE code_original_3 = 'NULL'; + + -- Le lit 'NULL' est faux + UPDATE activite[PX].t_lieux + SET lit_id = t_lits_g.oid + FROM activite[PX].t_lits + JOIN activite[PX].t_lits t_lits_g ON t_lits.etage_id = t_lits_g.etage_id AND t_lits_g.code_original LIKE '%|0' + WHERE t_lieux.lit_id = t_lits.oid AND + code_original_4 LIKE '%|NULL%' AND + code_original_3 <> ''; + + + DROP TABLE IF EXISTS w_SEJOUR_2; + CREATE TEMP TABLE w_SEJOUR_2 AS + SELECT + SEJ_DOS, + ANN_DOS, + COD_DOS, + w_DHEN_DOS, + w_DHSO_DOS, + URG, + SER_SEJ, + SER_SEJ_MDT, + ETA_SEJ, + NCH_SEJ, + '1'::text AS w_QENTREE, + DAE_SEJ, + w_DHAE_SEJ, + '1'::text AS w_QSORTIE, + DAS_SEJ, + HEU_SEJ, + w_DHAS_SEJ, + ''::text AS SER_SEJ_MDT_before, + ''::text AS ETA_SEJ_before, + ''::text AS SER_SEJ_MDT_next, + ''::text AS ETA_SEJ_next, + COALESCE(t_lieux.oid,0) AS lieu_id + FROM w_SEJOUR + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = SER_SEJ_MDT AND + code_original_2 = '' AND + code_original_3 = ETA_SEJ AND + code_original_4 = NCH_SEJ AND + code_original_6 = SER_SEJ + ) + ORDER BY SEJ_DOS, w_DHAS_SEJ; + + + + + DROP SEQUENCE IF EXISTS w_SEJOUR_seq; + CREATE TEMP SEQUENCE w_SEJOUR_seq + INCREMENT 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 1 + CACHE 1; + + + DROP TABLE IF EXISTS w_SEJOUR; + CREATE TEMP TABLE w_SEJOUR AS + SELECT + nextval('w_SEJOUR_seq'::regclass) AS sequence, + SEJ_DOS, + ANN_DOS, + COD_DOS, + w_DHEN_DOS, + w_DHSO_DOS, + URG, + SER_SEJ, + SER_SEJ_MDT, + ETA_SEJ, + NCH_SEJ, + w_QENTREE, + DAE_SEJ, + w_DHAE_SEJ, + w_QSORTIE, + DAS_SEJ, + HEU_SEJ, + w_DHAS_SEJ, + SER_SEJ_MDT_before, + ETA_SEJ_before, + SER_SEJ_MDT_next, + ETA_SEJ_next, + lieu_id + FROM w_SEJOUR_2 + ORDER BY SEJ_DOS, w_DHAS_SEJ; + + CREATE INDEX w_SEJOUR_i1 + ON w_SEJOUR + USING btree + (SEJ_DOS); + + + + + UPDATE w_SEJOUR + SET + w_DHAE_SEJ = w_SEJOUR_before.w_DHAS_SEJ + interval '1 SECOND' + FROM w_SEJOUR w_SEJOUR_before + WHERE w_SEJOUR.SEJ_DOS = w_SEJOUR_before.SEJ_DOS + AND w_SEJOUR.sequence = w_SEJOUR_before.sequence + 1; + + + + + DROP TABLE IF EXISTS w_SEJOUR_SEJOUR; + CREATE TEMP TABLE w_SEJOUR_SEJOUR AS + SELECT + SEJ_DOS + FROM w_SEJOUR + GROUP BY 1 + HAVING count(*) > 1; + + DELETE FROM w_SEJOUR + USING w_SEJOUR_SEJOUR + WHERE w_SEJOUR_SEJOUR.SEJ_DOS = w_SEJOUR.SEJ_DOS AND w_DHAE_SEJ > w_DHSO_DOS; + + DELETE FROM w_SEJOUR + USING w_SEJOUR_SEJOUR + WHERE w_SEJOUR_SEJOUR.SEJ_DOS = w_SEJOUR.SEJ_DOS AND w_DHAS_SEJ < w_DHEN_DOS ; + + DROP TABLE IF EXISTS w_SEJOUR_SEJOUR; + CREATE TEMP TABLE w_SEJOUR_SEJOUR AS + SELECT + SEJ_DOS, + MIN(sequence) AS sequence_1, + MAX(sequence) AS sequence_9 + FROM w_SEJOUR + GROUP BY 1; + + + + UPDATE w_SEJOUR + SET w_DHAS_SEJ = w_DHSO_DOS + FROM w_SEJOUR_SEJOUR + WHERE w_SEJOUR.SEJ_DOS = w_SEJOUR_SEJOUR.SEJ_DOS AND w_SEJOUR.sequence = w_SEJOUR_SEJOUR.sequence_9 AND + w_DHAS_SEJ <> w_DHSO_DOS; + + + UPDATE w_SEJOUR + SET w_DHAE_SEJ = w_DHEN_DOS + FROM w_SEJOUR_SEJOUR + WHERE w_SEJOUR.SEJ_DOS = w_SEJOUR_SEJOUR.SEJ_DOS AND w_SEJOUR.sequence = w_SEJOUR_SEJOUR.sequence_1 AND + w_DHAE_SEJ <> w_DHEN_DOS; + + + + + UPDATE w_SEJOUR + SET + w_QSORTIE = '0', + SER_SEJ_MDT_next = w_SEJOUR_next.SER_SEJ_MDT, + ETA_SEJ_next = w_SEJOUR_next.ETA_SEJ + FROM w_SEJOUR w_SEJOUR_next + WHERE w_SEJOUR.SEJ_DOS = w_SEJOUR_next.SEJ_DOS + AND w_SEJOUR.sequence = w_SEJOUR_next.sequence - 1; + + + + UPDATE w_SEJOUR + SET + w_QENTREE = '0', + w_DHAE_SEJ = w_SEJOUR_before.w_DHAS_SEJ + interval '1 SECOND', + SER_SEJ_MDT_before = w_SEJOUR_before.SER_SEJ_MDT, + ETA_SEJ_before = w_SEJOUR_before.ETA_SEJ + FROM w_SEJOUR w_SEJOUR_before + WHERE w_SEJOUR.SEJ_DOS = w_SEJOUR_before.SEJ_DOS + AND w_SEJOUR.sequence = w_SEJOUR_before.sequence + 1; + + + DELETE FROM w_SEJOUR WHERE w_DHAE_SEJ > w_DHAS_SEJ; + + + + + + DROP TABLE IF EXISTS w_mouvements_sejour; + + CREATE TEMP TABLE w_mouvements_sejour AS + SELECT + w_SEJOUR.SEJ_DOS, + w_SEJOUR.SEJ_DOS AS no_sejour, + p_sejours.oid AS sejour_id, + sequence, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE WHEN p_calendrier.date = date(w_DHAE_SEJ) THEN extract('hour' from w_DHAE_SEJ) * 10000 + extract('minute' from w_DHAE_SEJ) * 100 + extract('second' from w_DHAE_SEJ) ELSE 0 END AS heure_debut, + CASE WHEN p_calendrier.date = date(w_DHAS_SEJ) THEN extract('hour' from w_DHAS_SEJ) * 10000 + extract('minute' from w_DHAS_SEJ) * 100 + extract('second' from w_DHAS_SEJ) ELSE 240000 END AS heure_fin, + CASE WHEN w_QENTREE = '1' AND p_calendrier.date = date(w_DHAE_SEJ) AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes, + CASE WHEN w_QSORTIE = '1' AND p_calendrier.date = date(w_DHAS_SEJ) AND p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes, + CASE WHEN w_QENTREE = '1' AND p_calendrier.date = date(w_DHAE_SEJ) AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree, + CASE WHEN w_QSORTIE = '1' AND p_calendrier.date = date(w_DHAS_SEJ) AND p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie, + CASE WHEN p_sejours.type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN w_QENTREE = '1' AND p_calendrier.date = date(w_DHAE_SEJ) AND p_sejours.type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires, + CASE WHEN w_QENTREE = '1' AND p_calendrier.date = date(w_DHAE_SEJ) AND p_sejours.type_sejour = '3' THEN 1 ELSE 0 END AS nb_externes, + CASE WHEN URG = '1' AND p_calendrier.date = date(w_DHAE_SEJ) AND w_QENTREE = '1' THEN 1 ELSE 0 END AS nb_urgences, + 0 as nb_seances, + + CASE WHEN p_calendrier.date = date(w_DHAE_SEJ) AND p_sejours.type_sejour = '1' AND w_QENTREE <> '1' AND SER_SEJ_MDT <> SER_SEJ_MDT_before THEN 1 ELSE 0 END AS nb_entrees_mutation_service, + CASE WHEN p_calendrier.date = date(w_DHAS_SEJ) AND p_sejours.type_sejour = '1' AND w_QSORTIE <> '1' AND SER_SEJ_MDT <> SER_SEJ_MDT_next THEN 1 ELSE 0 END AS nb_sorties_mutation_service, + CASE WHEN p_calendrier.date = date(w_DHAE_SEJ) AND p_sejours.type_sejour = '1' AND w_QENTREE <> '1' AND ETA_SEJ <> ETA_SEJ_before THEN 1 ELSE 0 END AS nb_entrees_mutation_etage, + CASE WHEN p_calendrier.date = date(w_DHAS_SEJ) AND p_sejours.type_sejour = '1' AND w_QSORTIE <> '1' AND ETA_SEJ <> ETA_SEJ_next THEN 1 ELSE 0 END AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + 0 AS nb_entrees_mutation_unite_medicale, + 0 AS nb_sorties_mutation_unite_medicale, + + CASE WHEN p_sejours.type_sejour = '1' THEN 1 ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN p_sejours.type_sejour = '1' AND p_calendrier.date <> date(w_DHAS_SEJ) THEN 1 ELSE 0 END AS nb_jours_js_non_inclus, + + CASE WHEN p_sejours.type_sejour = '1' AND t_lits.chambre_particuliere = 'O' THEN '1' ELSE '0' END AS est_chambre_particuliere, + CASE WHEN p_sejours.type_sejour = '1' AND t_lits.chambre_particuliere = 'O' THEN 1 ELSE 0 END AS nb_chambres_particulieres, + + 0 AS nb_bebes, + + lieu_id, + + p_sejours.medecin_sejour_id as medecin_sejour_id, + + CASE WHEN p_sejours.code_prevu = '1' OR p_calendrier.date > date(now_sigems) THEN '1' ELSE '0' END AS est_mouvement_previsionnel + FROM w_SEJOUR + JOIN w_PERIODE ON periode_id = 0 + JOIN activite[PX].p_sejours ON w_SEJOUR.SEJ_DOS = p_sejours.no_sejour AND p_sejours.etat = '' + LEFT JOIN activite[PX].t_lits ON NCH_SEJ = t_lits.code_original + JOIN base.p_calendrier ON (p_calendrier.date BETWEEN date(w_DHAE_SEJ) AND date(w_DHAS_SEJ) AND p_calendrier.date <= now() + interval '1 month' ) + ORDER BY sequence, p_calendrier.date; + + + -- Bébés + DROP TABLE IF EXISTS w_CCAM_RUM_bebes; + + CREATE TEMP TABLE w_CCAM_RUM_bebes AS + SELECT jointure AS no_sejour, + MAX(CASE WHEN t_actes.texte ILIKE '%multiple%' THEN 2 ELSE 1 END) AS nb_bebes + FROM prod_sigems2.CCAM_RUM + JOIN base.t_actes ON substring(CCAM_RUM.CODE, 1, 7) = t_actes.code AND + CCAM_RUM.CODE LIKE 'JQG%' AND + t_actes.texte ILIKE 'accouchement%' + WHERE ACTIVITE = '1' + GROUP BY 1; + + UPDATE w_mouvements_sejour + SET nb_bebes = w_CCAM_RUM_bebes.nb_bebes + FROM w_CCAM_RUM_bebes + WHERE w_CCAM_RUM_bebes.no_sejour = w_mouvements_sejour.no_sejour AND + (nb_entrees_directes = 1 OR nb_externes = 1 OR nb_ambulatoires = 1); + + -- Séances + DROP TABLE IF EXISTS w_LIG_HONOR_seances; + + CREATE TEMP TABLE w_LIG_HONOR_seances AS + SELECT + SEJ_DOS, + date(dde_lho) AS date, + SUM(QTE_LHO) AS nb_seances + FROM prod_sigems2.LIG_HONOR + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LHO = ANN_SELECT AND COD_LHO = COD_SELECT + JOIN w_DOSSIER ON ANN_LHO = ANN_DOS AND COD_LHO = COD_DOS + JOIN prod_sigems2.PROD_HONOR ON CPH_LHO = COD_PRH + WHERE ACT_PRH = 'K' AND + COF_LHO IN (15 , 30) AND + (CPH_LHO = 'CHI' OR DMT_LHO = '302') + GROUP BY 1,2; + + CREATE INDEX w_LIG_HONOR_seances_i1 + ON w_LIG_HONOR_seances + USING btree + (SEJ_DOS); + + UPDATE w_mouvements_sejour + SET nb_seances = w_LIG_HONOR_seances.nb_seances + FROM w_LIG_HONOR_seances + WHERE w_LIG_HONOR_seances.SEJ_DOS = w_mouvements_sejour.no_sejour AND + w_LIG_HONOR_seances.date = w_mouvements_sejour.date; + + + + + DROP TABLE IF EXISTS w_LIG_CLINI_seances; + + CREATE TEMP TABLE w_LIG_CLINI_seances AS + SELECT + SEJ_DOS, + date(DDE_LCL) AS date, + SUM(QTE_LCL) AS nb_seances + FROM prod_sigems2.LIG_CLINI + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LCL = ANN_SELECT AND COD_LCL = COD_SELECT + JOIN w_DOSSIER ON ANN_LCL = ANN_DOS AND COD_LCL = COD_DOS + WHERE PRO_LCL IN ('D01', 'D02', 'D03', 'D04', 'D05', 'D06', 'D07', 'D08', 'D09', 'D10', 'D11', 'D12', 'D13', 'D14', 'D15', 'D16', 'D17', 'D18', 'D19') + GROUP BY 1,2; + + CREATE INDEX w_LIG_CLINI_seances_i1 + ON w_LIG_CLINI_seances + USING btree + (SEJ_DOS); + + UPDATE w_mouvements_sejour + SET nb_seances = w_LIG_CLINI_seances.nb_seances + FROM w_LIG_CLINI_seances + WHERE w_LIG_CLINI_seances.SEJ_DOS = w_mouvements_sejour.no_sejour AND + w_LIG_CLINI_seances.date = w_mouvements_sejour.date; + + + + + -- seances selon GHS pmsi + DROP TABLE IF EXISTS w_ghs_seances; + CREATE TEMP TABLE w_ghs_seances AS + SELECT ghs_id AS oid + FROM activite[PX].p_sejours + JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid AND t_ghm.code LIKE '28%' + JOIN base.t_ghs ON p_sejours.ghs_id = t_ghs.oid AND t_ghs.code <> 9999 AND t_ghs.code > 0 + WHERE ghs_id <> 0 + GROUP BY 1; + + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT + p_sejours.no_sejour, + date_entree AS date, + 1 AS nb_seances + FROM activite[PX].p_sejours + JOIN base.t_ghs ON p_sejours.ghs_id = t_ghs.oid + JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid + WHERE date_entree = date_sortie AND type_sejour <> '5' AND + date_groupage < '20991231' AND + (ghs_id IN (SELECT oid FROM w_ghs_seances) OR t_ghm.code LIKE '28%'); + + CREATE INDEX w_sejours_seances_i1 + ON w_sejours_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_sejours_seances.nb_seances + FROM w_sejours_seances + WHERE w_sejours_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_sejours_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_sejours_seances.nb_seances; + + + + -- Génération + DELETE FROM w_mouvements_sejour + WHERE + nb_entrees_directes = 0 AND + nb_sorties_directes = 0 AND + est_jour_hospitalisation <> '1' AND + nb_ambulatoires = 0 AND + nb_externes = 0 AND + nb_urgences = 0 AND + nb_seances = 0 AND + nb_entrees_mutation_service = 0 AND + nb_sorties_mutation_service = 0 AND + nb_entrees_mutation_etage = 0 AND + nb_sorties_mutation_etage = 0 AND + nb_entrees_mutation_activite = 0 AND + nb_sorties_mutation_activite = 0 AND + nb_entrees_mutation_unite_medicale = 0 AND + nb_sorties_mutation_unite_medicale = 0 AND + nb_jours_js_inclus = 0 AND + nb_jours_js_non_inclus = 0 AND + est_chambre_particuliere <> '1' AND + nb_chambres_particulieres = 0 AND + nb_bebes = 0; + + + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_5'); + + INSERT INTO activite[PX].p_mouvements_sejour( + sejour_id, no_sejour, date, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, + nb_bebes,est_mouvement_previsionnel, jour_semaine, is_weekend) + SELECT sejour_id, no_sejour, date,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, + nb_bebes,est_mouvement_previsionnel, jour_semaine, is_weekend + FROM w_mouvements_sejour + ORDER BY no_sejour, sequence; + + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_5'); + + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie + AND (lieu_sortie_id IS DISTINCT FROM p_mouvements_sejour.lieu_id); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie AND p_mouvements_sejour.nb_sorties_directes = 1 + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL); + + + + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + WHERE type_sejour <> '5' AND + type_sejour <> '1' AND + no_sejour IN ( + SELECT no_sejour + FROM activite[PX].p_mouvements_sejour + WHERE nb_seances > 0); + + + UPDATE activite[PX].p_mouvements_sejour + SET nb_externes = 0, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + ( + nb_externes <> 0 OR + nb_ambulatoires <> 0 + ) + + + + + ]]> + + + + + + + + + + + + + + + + 0; + + + + DROP TABLE IF EXISTS w_DOS2_fictif_hon; + CREATE TEMP TABLE w_DOS2_fictif_hon AS + SELECT ANN_LHO AS ANN_DOS2, COD_LHO AS COD_DOS2, IND_LHO AS IND_DOS2, MAX(DAT_REG) AS DAT_REG, + 0::numeric AS SR1_DOS2, + 0::numeric AS SR2_DOS2, + 0::numeric AS SR3_DOS2, + SUM(CASE WHEN CAI_REG = CP1_DOS2_S THEN MON_REG3 ELSE 0 END) AS HR1_DOS2, + SUM(CASE WHEN CAI_REG = CA2_DOS2_S THEN MON_REG3 ELSE 0 END) AS HR2_DOS2, + SUM(CASE WHEN CAI_REG IS DISTINCT FROM CP1_DOS2_S AND CAI_REG IS DISTINCT FROM CA2_DOS2_S THEN MON_REG3 ELSE 0 END) AS HR3_DOS2 + FROM prod_sigems2.LIG_HONOR + JOIN w_REG3 ON NUM_LHO = LHO_REG3 + LEFT JOIN w_DOS2_caisse ON ANN_LHO = ANN_DOS2_S AND COD_LHO = COD_DOS2_S + LEFT JOIN prod_sigems2.DOS2 ON ANN_LHO = ANN_DOS2 AND COD_LHO = COD_DOS2 AND IND_LHO = IND_DOS2 + WHERE ANN_DOS2 IS NULL + GROUP BY 1,2,3 + HAVING SUM(MON_REG3) <> 0; + + + INSERT INTO prod_sigems2.DOS2( + ANN_DOS2, + COD_DOS2, + IND_DOS2, + ETA_DOS2, + DEN_DOS2, + DSO_DOS2, + HEU_DOS2, + RIS_DOS2, + JEX_DOS2, + CFA_DOS2, + COP_DOS2, + DFA_DOS2, + NDK_DOS2, + DDK_DOS2, + NB1_DOS2, + DB1_DOS2, + NB2_DOS2, + DB2_DOS2, + SJ1_DOS2, + HO1_DOS2, + SJ2_DOS2, + HO2_DOS2, + SJ3_DOS2, + HO3_DOS2, + SR1_DOS2, + HR1_DOS2, + SR2_DOS2, + HR2_DOS2, + SR3_DOS2, + HR3_DOS2, + CP1_DOS2, + CA1_DOS2, + CA2_DOS2, + LOT_DOS2, + REG_DOS2) + SELECT + ANN_DOS2, + COD_DOS2, + IND_DOS2, + '9', + DEN_DOS, + DSO_DOS, + HEU_DOS, + '' AS RIS_DOS2, + 0 AS JEX_DOS2, + '' AS CFA_DOS2, + '' AS COP_DOS2, + MIN(DAT_REG) AS DFA_DOS2, + '' AS NDK_DOS2, + NULL::date AS DDK_DOS2, + 0 AS NB1_DOS2, + NULL::date AS DB1_DOS2, + 0 AS NB2_DOS2, + NULL::date AS DB2_DOS2, + 0 AS SJ1_DOS2, + 0 AS HO1_DOS2, + 0 AS SJ2_DOS2, + 0 AS HO2_DOS2, + 0 AS SJ3_DOS2, + 0 AS HO3_DOS2, + SUM(SR1_DOS2) AS SR1_DOS2, + SUM(HR1_DOS2) AS HR1_DOS2, + SUM(SR2_DOS2) AS SR2_DOS2, + SUM(HR2_DOS2) AS HR2_DOS2, + SUM(SR3_DOS2) AS SR3_DOS2, + SUM(HR3_DOS2) AS HR3_DOS2, + CP1_DOS2_S AS CP1_DOS2, + CA1_DOS2_S AS CA1_DOS2, + CA2_DOS2_S AS CA2_DOS2, + '' AS LOT_DOS2, + '' AS REG_DOS2 + FROM + (SELECT * FROM w_DOS2_fictif_cli + UNION + SELECt * FROM w_DOS2_fictif_hon + ) subview + JOIN prod_sigems2.DOSSIER ON ANN_DOS2 = ANN_DOS AND COD_DOS2 = COD_DOS + JOIN w_DOS2_caisse ON ANN_DOS2 = ANN_DOS2_S AND COD_DOS2 = COD_DOS2_S + GROUP BY ANN_DOS2, + COD_DOS2, + IND_DOS2, + DEN_DOS, + DSO_DOS, + HEU_DOS, + CP1_DOS2_S, + CA1_DOS2_S, + CA2_DOS2_S; + + ]]> + + + + '' + GROUP BY 1,2,3,4 + ORDER BY 1,2,3,4; + + CREATE INDEX w_ANALYG_i1 + ON w_ANALYG + USING btree + (PRD_ANA); + + DROP TABLE IF EXISTS w_LIG_CLINI; + CREATE TEMP TABLE w_LIG_CLINI AS + SELECT + LIG_CLINI.*, + CASE WHEN TX1_LCL <> 0 AND ML1_LCL = 0 AND type_t2a = '2' AND est_budget_global = '1' THEN TAR_LCL - ML2_LCL - ML3_LCL ELSE 0 END AS ML1_LCL_BG, + ANN_LCL || to_char(COD_LCL,'FM900000') AS SEJ_DOS, + ANN_LCL || to_char(COD_LCL,'FM900000') || '.' || to_char(CASE WHEN IND_LCL <> 0 THEN IND_LCL ELSE COALESCE(IND_DOS2_ETA2, IND_LCL) END,'FM9999900') AS no_facture, + COALESCE(MDT_REEL,MDT_DOS) AS MDT_LCL, + COALESCE(ACT_PRC,PRO_LCL) AS ACT_LCL, + COALESCE(w_ANALYG_SER.CPT_ANA,w_ANALYG.CPT_ANA, AFA_PRC,'') AS CPT_ANA, + PRO_LCL || '|' || + COALESCE(ACT_PRC,PRO_LCL) || + COALESCE(w_ANALYG_SER.CPT_ANA,w_ANALYG.CPT_ANA, AFA_PRC,'') AS key, + CASE WHEN CASE WHEN IND_LCL <> 0 THEN IND_LCL ELSE COALESCE(IND_DOS2_ETA2, IND_LCL) END = 0 THEN '1' ELSE '0' END AS non_facturee + FROM prod_sigems2.LIG_CLINI + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LCL = ANN_SELECT AND COD_LCL = COD_SELECT + JOIN prod_sigems2.DOSSIER ON DOSSIER.ANN_DOS = ANN_LCL AND DOSSIER.COD_DOS = COD_LCL + LEFT JOIN prod_sigems2.DOSSIER_MDT ON DOSSIER.ANN_DOS = DOSSIER_MDT.ANN_DOS AND DOSSIER.COD_DOS = DOSSIER_MDT.COD_DOS + LEFT JOIN w_DOS2_ETA2 ON ANN_LCL = ANN_DOS2 AND COD_LCL = COD_DOS2 + LEFT JOIN prod_sigems2.PROD_CLINI ON PRO_LCL = COD_PRC + LEFT JOIN w_ANALYG ON PRO_LCL = w_ANALYG.PRD_ANA AND w_ANALYG.DMT_ANA = '' AND w_ANALYG.MDT_ANA = '' AND w_ANALYG.SER_ANA = '' + LEFT JOIN w_ANALYG w_ANALYG_SER ON PRO_LCL = w_ANALYG_SER.PRD_ANA AND w_ANALYG_SER.DMT_ANA = '' AND w_ANALYG_SER.MDT_ANA = '' AND w_ANALYG_SER.SER_ANA = SER_LCL + WHERE + PRO_LCL <> 'ECAC' AND + PRO_LCL <> 'GMOY'; + + UPDATE w_LIG_CLINI + SET MDT_LCL = '04' + WHERE MDT_LCL = '23'; + + CREATE INDEX w_LIG_CLINI_i1 + ON w_LIG_CLINI + USING btree + (COD_LCL); + + CREATE INDEX w_LIG_CLINI_i2 + ON w_LIG_CLINI + USING btree + (NUM_LCL); + + CREATE INDEX w_LIG_CLINI_i3 + ON w_LIG_CLINI + USING btree + (PRO_LCL); + + CREATE INDEX w_LIG_CLINI_i4 + ON w_LIG_CLINI + USING btree + (key); + + CREATE INDEX w_LIG_CLINI_i5 + ON w_LIG_CLINI + USING btree + (no_facture); + + CREATE INDEX w_LIG_CLINI_i6 + ON w_LIG_CLINI + USING btree + (SEJ_DOS); + + + + + UPDATE w_LIG_CLINI + SET CPT_ANA = w_ANALYG.CPT_ANA, + key = PRO_LCL || '|' || + ACT_LCL || '|' || + w_ANALYG.CPT_ANA + FROM w_ANALYG + WHERE PRO_LCL = PRD_ANA AND SER_ANA = '' AND DMT_ANA = DMT_LCL AND MDT_ANA = '' AND + w_LIG_CLINI.CPT_ANA IS DISTINCT FROM w_ANALYG.CPT_ANA; + + UPDATE w_LIG_CLINI + SET CPT_ANA = w_ANALYG.CPT_ANA, + key = PRO_LCL || '|' || + ACT_LCL || '|' || + w_ANALYG.CPT_ANA + FROM w_ANALYG + WHERE PRO_LCL = PRD_ANA AND SER_ANA = '' AND DMT_ANA = '' AND MDT_ANA = MDT_LCL AND + w_LIG_CLINI.CPT_ANA IS DISTINCT FROM w_ANALYG.CPT_ANA; + + + UPDATE w_LIG_CLINI + SET CPT_ANA = w_ANALYG.CPT_ANA, + key = PRO_LCL || '|' || + ACT_LCL || '|' || + w_ANALYG.CPT_ANA + FROM w_ANALYG + WHERE PRO_LCL = PRD_ANA AND SER_ANA = '' AND DMT_ANA = DMT_LCL AND MDT_ANA = MDT_LCL AND + w_LIG_CLINI.CPT_ANA IS DISTINCT FROM w_ANALYG.CPT_ANA; + + + UPDATE w_LIG_CLINI + SET CPT_ANA = w_ANALYG.CPT_ANA, + key = PRO_LCL || '|' || + ACT_LCL || '|' || + w_ANALYG.CPT_ANA + FROM w_ANALYG + WHERE PRO_LCL = PRD_ANA AND SER_ANA = SER_LCL AND DMT_ANA = '' AND MDT_ANA = '' AND + w_LIG_CLINI.CPT_ANA IS DISTINCT FROM w_ANALYG.CPT_ANA; + + + UPDATE w_LIG_CLINI + SET CPT_ANA = w_ANALYG.CPT_ANA, + key = PRO_LCL || '|' || + ACT_LCL || '|' || + w_ANALYG.CPT_ANA + FROM w_ANALYG + WHERE PRO_LCL = PRD_ANA AND SER_ANA = SER_LCL AND DMT_ANA = DMT_LCL AND MDT_ANA = '' AND + w_LIG_CLINI.CPT_ANA IS DISTINCT FROM w_ANALYG.CPT_ANA; + + UPDATE w_LIG_CLINI + SET CPT_ANA = w_ANALYG.CPT_ANA, + key = PRO_LCL || '|' || + ACT_LCL || '|' || + w_ANALYG.CPT_ANA + FROM w_ANALYG + WHERE PRO_LCL = PRD_ANA AND SER_ANA = SER_LCL AND DMT_ANA = '' AND MDT_ANA = MDT_LCL AND + w_LIG_CLINI.CPT_ANA IS DISTINCT FROM w_ANALYG.CPT_ANA; + + UPDATE w_LIG_CLINI + SET CPT_ANA = w_ANALYG.CPT_ANA, + key = PRO_LCL || '|' || + ACT_LCL || '|' || + w_ANALYG.CPT_ANA + FROM w_ANALYG + WHERE PRO_LCL = PRD_ANA AND SER_ANA = SER_LCL AND DMT_ANA = DMT_LCL AND MDT_ANA = MDT_LCL AND + w_LIG_CLINI.CPT_ANA IS DISTINCT FROM w_ANALYG.CPT_ANA; + + + + UPDATE w_LIG_CLINI + SET + MR1_LCL = ML1_LCL, + MR2_LCL = ML2_LCL, + MR3_LCL = ML3_LCL + FROM prod_sigems2.DOS2 + WHERE ANN_DOS2 = ANN_LCL AND + COD_DOS2 = COD_LCL AND + IND_DOS2 = IND_LCL AND + ETA_DOS2 = '5' AND + COP_DOS2 = '1' AND + ( + MR1_LCL IS DISTINCT FROM ML1_LCL OR + MR2_LCL IS DISTINCT FROM ML2_LCL OR + MR3_LCL IS DISTINCT FROM ML3_LCL + ); + + DROP TABLE IF EXISTS w_factures_last; + CREATE TEMP TABLE w_factures_last AS + SELECT no_sejour, + MAX(no_facture) AS no_facture, + MAX(CASE WHEN code_facture <> '1' THEN no_facture ELSE NULL END) AS no_facture_nf + FROM activite[PX].p_factures + GROUP BY 1; + + UPDATE w_LIG_CLINI + SET no_facture = CASE WHEN PRO_LCL <> 'ACPT' THEN COALESCE(w_factures_last.no_facture_nf,w_factures_last.no_facture) ELSE w_factures_last.no_facture END + FROM w_factures_last + WHERE w_LIG_CLINI.SEJ_DOS = w_factures_last.no_sejour AND + w_LIG_CLINI.no_facture NOT IN (SELECT no_facture FROM activite[PX].p_factures); + + + DROP TABLE IF EXISTS w_LIG_CLINI_keys; + CREATE TEMP TABLE w_LIG_CLINI_keys AS + SELECT key, + PRO_LCL, + ACT_LCL, + CPT_ANA, + 0::bigint AS rubrique_facturation_id, + 0::bigint AS rubrique_comptabilisation_id, + 0::bigint AS prestation_id, + 0::bigint AS compte_produit_id + FROM w_LIG_CLINI + GROUP BY 1,2,3,4; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT trim(PRO_LCL), trim(PRO_LCL), trim(PRO_LCL), trim(PRO_LCL) + FROM w_LIG_CLINI_keys + WHERE trim(PRO_LCL) <> '' AND + trim(PRO_LCL) NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + GROUP BY trim(PRO_LCL) + ORDER BY trim(PRO_LCL); + + UPDATE activite.t_prestations SET + code_original = ACT_LCL + FROM w_LIG_CLINI_keys + where t_prestations.code_original IS DISTINCT FROM ACT_LCL + AND t_prestations.code = ACT_LCL; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT ACT_LCL, ACT_LCL, ACT_LCL, ACT_LCL + FROM w_LIG_CLINI_keys + WHERE ACT_LCL <> '' AND + ACT_LCL NOT IN (SELECT code_original FROM activite.t_prestations WHERE code_original IS NOT NULL) + GROUP BY ACT_LCL + ORDER BY ACT_LCL; + + + UPDATE w_LIG_CLINI_keys SET prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE ACT_LCL = t_prestations.code_original; + + UPDATE w_LIG_CLINI_keys SET + rubrique_facturation_id = t_rubriques_facturation.oid, + rubrique_comptabilisation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + WHERE PRO_LCL = t_rubriques_facturation.code_original; + + + UPDATE w_LIG_CLINI_keys SET compte_produit_id = t_compte.oid + FROM activite[PX].t_compte + WHERE CPT_ANA = t_compte.code; + + CREATE INDEX w_LIG_CLINI_keys_i1 + ON w_LIG_CLINI_keys + USING btree + (key); + + + -- préparation + + + DROP TABLE IF EXISTS w_LIG_CLINI_mrx; + CREATE TEMP TABLE w_LIG_CLINI_mrx AS + SELECT + ANN_LCL, + COD_LCL, + IND_LCL, + NUM_LCL, + DAT_REG, + CASE WHEN CAI_REG = CP1_DOS2 THEN DAT_REG ELSE '00010101' END AS DR1_LCL, + CASE WHEN CAI_REG = CA2_DOS2 AND CAI_REG <> CP1_DOS2 THEN DAT_REG ELSE '00010101' END AS DR2_LCL, + CASE WHEN CAI_REG <> CP1_DOS2 AND CAI_REG <> CA2_DOS2 THEN DAT_REG ELSE '00010101' END AS DR3_LCL, + CASE WHEN CAI_REG = CP1_DOS2 THEN MONT + TVA ELSE 0 END AS MR1_LCL, + CASE WHEN CAI_REG = CA2_DOS2 AND CAI_REG <> CP1_DOS2 THEN MONT + TVA ELSE 0 END AS MR2_LCL, + CASE WHEN CAI_REG <> CP1_DOS2 AND CAI_REG <> CA2_DOS2 THEN MONT + TVA ELSE 0 END AS MR3_LCL + FROM prod_sigems2.LIG_CLINI + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LCL = ANN_SELECT AND COD_LCL = COD_SELECT + JOIN prod_sigems2.DOS2 ON ANN_LCL = ANN_DOS2 AND COD_LCL = COD_DOS2 AND IND_LCL = IND_DOS2 AND ETA_DOS2 >= 1 + JOIN prod_sigems2.REG4 ON NUM_LCL = NUM_CLI + JOIN prod_sigems2.REG ON NUM_REG4 = SER_REG; + + CREATE INDEX w_LIG_CLINI_mrx_i1 + ON w_LIG_CLINI_mrx + USING btree + (NUM_LCL); + + CREATE INDEX w_LIG_CLINI_mrx_i2 + ON w_LIG_CLINI_mrx + USING btree + (COD_LCL); + + + DROP TABLE IF EXISTS w_LIG_CLINI_tmrx; + CREATE TEMP TABLE w_LIG_CLINI_tmrx AS + SELECT ANN_LCL, + COD_LCL, + IND_LCL, + MAX(DR1_LCL) AS DR1_LCL, + MAX(DR2_LCL) AS DR2_LCL, + MAX(DR3_LCL) AS DR3_LCL, + SUM(MR1_LCL) AS MR1_LCL, + SUM(MR2_LCL) AS MR2_LCL, + SUM(MR3_LCL) AS MR3_LCL + FROM w_LIG_CLINI_mrx + GROUP BY 1,2,3; + + CREATE INDEX w_LIG_CLINI_tmrx_i1 + ON w_LIG_CLINI_tmrx + USING btree + (COD_LCL); + + + DROP TABLE IF EXISTS w_LIG_HONOR_mrx; + CREATE TEMP TABLE w_LIG_HONOR_mrx AS + SELECT + ANN_LHO, + COD_LHO, + IND_LHO, + NUM_LHO, + DAT_REG, + CASE WHEN CAI_REG = CP1_DOS2 THEN DAT_REG ELSE '00010101' END AS DR1_LHO, + CASE WHEN CAI_REG = CA2_DOS2 AND CAI_REG <> CP1_DOS2 THEN DAT_REG ELSE '00010101' END AS DR2_LHO, + CASE WHEN CAI_REG <> CP1_DOS2 AND CAI_REG <> CA2_DOS2 THEN DAT_REG ELSE '00010101' END AS DR3_LHO, + CASE WHEN CAI_REG = CP1_DOS2 THEN MON_REG3 ELSE 0 END AS MR1_LHO, + CASE WHEN CAI_REG = CA2_DOS2 AND CAI_REG <> CP1_DOS2 THEN MON_REG3 ELSE 0 END AS MR2_LHO, + CASE WHEN CAI_REG <> CP1_DOS2 AND CAI_REG <> CA2_DOS2 THEN MON_REG3 ELSE 0 END AS MR3_LHO + FROM prod_sigems2.LIG_HONOR + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LHO = ANN_SELECT AND COD_LHO = COD_SELECT + JOIN prod_sigems2.DOS2 ON ANN_LHO = ANN_DOS2 AND COD_LHO = COD_DOS2 AND IND_LHO = IND_DOS2 AND ETA_DOS2 >= 1 + JOIN w_REG3 ON NUM_LHO = LHO_REG3; + + CREATE INDEX w_LIG_HONOR_mrx_i1 + ON w_LIG_HONOR_mrx + USING btree + (NUM_LHO); + + CREATE INDEX w_LIG_HONOR_mrx_i2 + ON w_LIG_HONOR_mrx + USING btree + (COD_LHO); + + + + + DROP TABLE IF EXISTS w_LIG_HONOR_tmrx; + CREATE TEMP TABLE w_LIG_HONOR_tmrx AS + SELECT ANN_LHO, + COD_LHO, + IND_LHO, + MAX(DR1_LHO) AS DR1_LHO, + MAX(DR2_LHO) AS DR2_LHO, + MAX(DR3_LHO) AS DR3_LHO, + SUM(MR1_LHO) AS MR1_LHO, + SUM(MR2_LHO) AS MR2_LHO, + SUM(MR3_LHO) AS MR3_LHO + FROM w_LIG_HONOR_mrx + GROUP BY 1,2,3; + + CREATE INDEX w_LIG_HONOR_tmrx_i1 + ON w_LIG_HONOR_tmrx + USING btree + (COD_LHO); + + -- Factures 'normales' + DROP TABLE IF EXISTS w_factures; + CREATE TEMP TABLE w_factures AS + SELECT + nextval('activite[PX].s_factures'::regclass) AS oid, + p_sejours.oid AS sejour_id, + SEJ_DOS AS no_sejour, + ANN_DOS, + COD_DOS, + IND_DOS2, + SEJ_DOS || '.' || to_char(IND_DOS2,'FM9999900') AS no_facture, + CASE WHEN (SJ1_DOS2 < 0 OR HO1_DOS2 < 0 OR SJ2_DOS2 < 0 OR HO2_DOS2 < 0 OR SJ3_DOS2 < 0 OR HO3_DOS2 < 0) THEN SEJ_DOS || '.' || to_char(IND_DOS2,'FM9999900') ELSE SEJ_DOS || '.01' END AS no_facture_reference, + CASE WHEN (SJ1_DOS2 < 0 OR HO1_DOS2 < 0 OR SJ2_DOS2 < 0 OR HO2_DOS2 < 0 OR SJ3_DOS2 < 0 OR HO3_DOS2 < 0) THEN 0 ELSE 0 END AS facture_reference_id, + ''::text AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id, + DEN_DOS2 AS date_debut, + GREATEST(DSO_DOS2,DEN_DOS2) AS date_fin, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id, + p_sejours.code_cp_demandee AS code_cp_demandee, + CASE WHEN (SJ1_DOS2 < 0 OR HO1_DOS2 < 0 OR SJ2_DOS2 < 0 OR HO2_DOS2 < 0 OR SJ3_DOS2 < 0 OR HO3_DOS2 < 0) THEN '1' WHEN IND_DOS2 > 1 AND avec_facturation_intermediaire IS DISTINCT FROM '1' THEN '2' ELSE '0' END AS type_facture, + CASE WHEN (SJ1_DOS2 < 0 OR HO1_DOS2 < 0 OR SJ2_DOS2 < 0 OR HO2_DOS2 < 0 OR SJ3_DOS2 < 0 OR HO3_DOS2 < 0) THEN 1::numeric ELSE 0::numeric END AS nb_rejets, + + CASE WHEN ETA_DOS2 >= 3 THEN 1::numeric ELSE 0::numeric END AS code_facture, + CASE WHEN ETA_DOS2 >= 3 THEN COALESCE(DFA_DOS2, date(now())) ELSE '20991231' END AS date_facture, + CASE WHEN ETA_DOS2 >= 3 AND DFA_DOS2 IS NOT NULL THEN 1::numeric ELSE 0::numeric END AS code_vente, + CASE WHEN ETA_DOS2 >= 3 AND DFA_DOS2 IS NOT NULL THEN date_part('year', DFA_DOS2) * 100 + date_part('month', DFA_DOS2) ELSE 209912 END AS mois_vente, + CASE WHEN ETA_DOS2 >= 3 AND DFA_DOS2 IS NOT NULL THEN DFA_DOS2 ELSE '20991231' END AS date_vente, + ''::text AS code_cloture, + + CASE WHEN p_sejours.ghs_id > 0 THEN 'GHS' ELSE '' END AS particularite_t2a, + + COALESCE(t_tiers_payant_0.oid,0) AS tiers_payant_0_id, + COALESCE(t_tiers_payant_1.oid,0) AS tiers_payant_1_id, + COALESCE(t_tiers_payant_2.oid,0) AS tiers_payant_2_id, + 0::bigint AS tiers_payant_22_id, + + CASE WHEN ETA_DOS2 >= 3 THEN SJ1_DOS2 + SJ2_DOS2 + SJ3_DOS2 ELSE 0 END AS montant_facture_c, + CASE WHEN ETA_DOS2 >= 3 THEN HO1_DOS2 + HO2_DOS2 + HO3_DOS2 ELSE 0 END AS montant_facture_h, + CASE WHEN ETA_DOS2 >= 3 THEN SJ3_DOS2 ELSE 0 END AS montant_facture_0_c, + CASE WHEN ETA_DOS2 >= 3 THEN HO3_DOS2 ELSE 0 END AS montant_facture_0_h, + CASE WHEN ETA_DOS2 >= 3 THEN SJ1_DOS2 ELSE 0 END AS montant_facture_1_c, + CASE WHEN ETA_DOS2 >= 3 THEN HO1_DOS2 ELSE 0 END AS montant_facture_1_h, + CASE WHEN ETA_DOS2 >= 3 THEN SJ2_DOS2 ELSE 0 END AS montant_facture_2_c, + CASE WHEN ETA_DOS2 >= 3 THEN HO2_DOS2 ELSE 0 END AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + CASE WHEN ETA_DOS2 >= 3 THEN SJ1_DOS2 + SJ2_DOS2 + SJ3_DOS2 ELSE 0 END AS montant_comptabilise_c, + CASE WHEN ETA_DOS2 >= 3 THEN HO1_DOS2 + HO2_DOS2 + HO3_DOS2 ELSE 0 END AS montant_comptabilise_h, + CASE WHEN ETA_DOS2 >= 3 THEN SJ3_DOS2 ELSE 0 END AS montant_comptabilise_0_c, + CASE WHEN ETA_DOS2 >= 3 THEN HO3_DOS2 ELSE 0 END AS montant_comptabilise_0_h, + CASE WHEN ETA_DOS2 >= 3 THEN SJ1_DOS2 ELSE 0 END AS montant_comptabilise_1_c, + CASE WHEN ETA_DOS2 >= 3 THEN HO1_DOS2 ELSE 0 END AS montant_comptabilise_1_h, + CASE WHEN ETA_DOS2 >= 3 THEN SJ2_DOS2 ELSE 0 END AS montant_comptabilise_2_c, + CASE WHEN ETA_DOS2 >= 3 THEN HO2_DOS2 ELSE 0 END AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + COALESCE(MR1_LCL,0) + COALESCE(MR2_LCL,0) + COALESCE(MR3_LCL,0) AS montant_regle_c, + COALESCE(MR1_LHO,0) + COALESCE(MR2_LHO,0) + COALESCE(MR3_LHO,0) AS montant_regle_h, + COALESCE(MR3_LCL,0) AS montant_regle_0_c, + COALESCE(MR3_LHO,0) AS montant_regle_0_h, + COALESCE(MR1_LCL,0) AS montant_regle_1_c, + COALESCE(MR1_LHO,0) AS montant_regle_1_h, + COALESCE(MR2_LCL,0) AS montant_regle_2_c, + COALESCE(MR2_LHO,0) AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + '1'::text AS code_expedie_0, + CASE WHEN COALESCE(DB1_DOS2,'00010101')::date > '00010101'::date THEN '1' ELSE '0' END AS code_expedie_1, + CASE WHEN COALESCE(DB2_DOS2,'00010101')::date > '00010101'::date THEN '1' ELSE '0' END AS code_expedie_2, + 0::numeric AS code_expedie_22, + CASE WHEN COALESCE(DB1_DOS2,'00010101')::date > '00010101' THEN COALESCE(DB1_DOS2,'00010101') ELSE COALESCE(DB2_DOS2,'00010101') END AS date_expedition, + DFA_DOS2 AS date_expedition_0, + COALESCE(DB1_DOS2,'00010101') AS date_expedition_1, + COALESCE(DB2_DOS2,'00010101') AS date_expedition_2, + '00010101'::date AS date_expedition_22, + 0 AS no_bordereau_0, + NB1_DOS2 AS no_bordereau_1, + NB2_DOS2 AS no_bordereau_2, + 0::numeric AS no_bordereau_22, + + LEAST(GREATEST(DR1_LCL, DR2_LCL, DR3_LCL, DR1_LHO, DR2_LHO, DR3_LHO), '20991231') AS date_solde, + LEAST(GREATEST(DR1_LCL, DR2_LCL, DR3_LCL), '20991231') AS date_solde_c, + LEAST(GREATEST(DR1_LHO, DR2_LHO, DR3_LHO), '20991231') AS date_solde_h, + LEAST(DR3_LCL, '20991231') AS date_solde_0_c, + LEAST(DR3_LHO, '20991231') AS date_solde_0_h, + LEAST(DR1_LCL, '20991231') AS date_solde_1_c, + LEAST(DR1_LHO, '20991231') AS date_solde_1_h, + LEAST(DR2_LCL, '20991231') AS date_solde_2_c, + LEAST(DR2_LHO, '20991231') AS date_solde_2_h, + '20991231'::date AS date_solde_22_c, + '20991231'::date AS date_solde_22_h, + + + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + + '20991231'::date AS date_solde_reference, + '20991231'::date AS date_solde_reference_c, + '20991231'::date AS date_solde_reference_h, + '20991231'::date AS date_solde_reference_0_c, + '20991231'::date AS date_solde_reference_1_c, + '20991231'::date AS date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + '20991231'::date AS date_solde_reference_0_h, + '20991231'::date AS date_solde_reference_1_h, + '20991231'::date AS date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h, + + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + + + '20991231'::date AS date_encours, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_c + + FROM prod_sigems2.DOS2 + JOIN w_DOSSIER ON ANN_DOS2 = ANN_DOS AND COD_DOS2 = COD_DOS + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_DOS2 = ANN_SELECT AND COD_DOS2 = COD_SELECT + JOIN activite[PX].p_sejours ON SEJ_DOS = p_sejours.code_original AND p_sejours.etat = '' + LEFT JOIN w_LIG_CLINI_tmrx ON ANN_DOS2 = ANN_LCL AND COD_DOS2 = COD_LCL AND IND_DOS2 = IND_LCL + LEFT JOIN w_LIG_HONOR_tmrx ON ANN_DOS2 = ANN_LHO AND COD_DOS2 = COD_LHO AND IND_DOS2 = IND_LHO + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_0 ON 'PATIENT' = t_tiers_payant_0.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_1 ON DOS2.CP1_DOS2 = t_tiers_payant_1.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON DOS2.CA2_DOS2 = t_tiers_payant_2.code_original + WHERE ETA_DOS2 >= 1; + + + -- Factures 'Budget global SSR' + DROP TABLE IF EXISTS w_DOS2_BG; + CREATE TEMP TABLE w_DOS2_BG AS + SELECT + ANN_LCL AS ANN_DOS2_BG, + COD_LCL AS COD_DOS2_BG, + IND_LCL AS IND_DOS2_BG, + SUM(ML1_LCL_BG) AS SJ1_DOS2_BG + FROM w_LIG_CLINI + WHERE ML1_LCL_BG <> 0 + GROUP BY 1,2,3; + + CREATE INDEX w_DOS2_BG_i1 + ON w_DOS2_BG + USING btree + (COD_DOS2_BG); + + INSERT INTO w_factures + SELECT + nextval('activite[PX].s_factures'::regclass) AS oid, + p_sejours.oid AS sejour_id, + SEJ_DOS AS no_sejour, + ANN_DOS, + COD_DOS, + IND_DOS2, + SEJ_DOS || '.' || to_char(IND_DOS2,'FM9999900') || '.BG' AS no_facture, + SEJ_DOS || '.' || to_char(IND_DOS2,'FM9999900') || '.BG' AS no_facture_reference, + 0 AS facture_reference_id, + ''::text AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id, + DEN_DOS2 AS date_debut, + GREATEST(DSO_DOS2,DEN_DOS2) AS date_fin, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id, + p_sejours.code_cp_demandee AS code_cp_demandee, + CASE WHEN (SJ1_DOS2 < 0 OR HO1_DOS2 < 0 OR SJ2_DOS2 < 0 OR HO2_DOS2 < 0 OR SJ3_DOS2 < 0 OR HO3_DOS2 < 0) THEN '1' WHEN IND_DOS2 > 1 AND avec_facturation_intermediaire IS DISTINCT FROM '1' THEN '2' ELSE '0' END AS type_facture, + CASE WHEN (SJ1_DOS2_BG < 0 OR SJ1_DOS2 < 0 OR HO1_DOS2 < 0 OR SJ2_DOS2 < 0 OR HO2_DOS2 < 0 OR SJ3_DOS2 < 0 OR HO3_DOS2 < 0) THEN 1::numeric ELSE 0::numeric END AS nb_rejets, + + CASE WHEN ETA_DOS2 >= 3 THEN 1::numeric ELSE 0::numeric END AS code_facture, + CASE WHEN ETA_DOS2 >= 3 THEN COALESCE(DFA_DOS2, date(now())) ELSE '20991231' END AS date_facture, + CASE WHEN ETA_DOS2 >= 3 AND DFA_DOS2 IS NOT NULL THEN 1::numeric ELSE 0::numeric END AS code_vente, + CASE WHEN ETA_DOS2 >= 3 AND DFA_DOS2 IS NOT NULL THEN date_part('year', DFA_DOS2) * 100 + date_part('month', DFA_DOS2) ELSE 209912 END AS mois_vente, + CASE WHEN ETA_DOS2 >= 3 AND DFA_DOS2 IS NOT NULL THEN DFA_DOS2 ELSE '20991231' END AS date_vente, + ''::text AS code_cloture, + + CASE WHEN p_sejours.ghs_id > 0 THEN 'GHS' ELSE '' END AS particularite_t2a, + + COALESCE(t_tiers_payant_0.oid,0) AS tiers_payant_0_id, + COALESCE(t_tiers_payant_1.oid,0) AS tiers_payant_1_id, + COALESCE(t_tiers_payant_2.oid,0) AS tiers_payant_2_id, + 0::bigint AS tiers_payant_22_id, + + CASE WHEN ETA_DOS2 >= 3 THEN SJ1_DOS2_BG ELSE 0 END AS montant_facture_c, + 0::numeric AS montant_facture_h, + 0::numeric AS montant_facture_0_c, + 0::numeric AS montant_facture_0_h, + CASE WHEN ETA_DOS2 >= 3 THEN SJ1_DOS2_BG ELSE 0 END AS montant_facture_1_c, + 0::numeric AS montant_facture_1_h, + 0::numeric AS montant_facture_2_c, + 0::numeric AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_comptabilise_c, + 0::numeric AS montant_comptabilise_h, + 0::numeric AS montant_comptabilise_0_c, + 0::numeric AS montant_comptabilise_0_h, + 0::numeric AS montant_comptabilise_1_c, + 0::numeric AS montant_comptabilise_1_h, + 0::numeric AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + COALESCE(MR1_LHO,0) AS montant_regle_1_h, + 0::numeric AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + '0'::text AS code_expedie_0, + CASE WHEN COALESCE(DB1_DOS2,'00010101')::date > '00010101'::date THEN '1' ELSE '0' END AS code_expedie_1, + '0' AS code_expedie_2, + 0::numeric AS code_expedie_22, + CASE WHEN COALESCE(DB1_DOS2,'00010101')::date > '00010101' THEN COALESCE(DB1_DOS2,'00010101') ELSE '00010101'::date END AS date_expedition, + '00010101'::date AS date_expedition_0, + COALESCE(DB1_DOS2,'00010101') AS date_expedition_1, + '00010101'::date AS date_expedition_2, + '00010101'::date AS date_expedition_22, + 0::numeric AS no_bordereau_0, + NB1_DOS2 AS no_bordereau_1, + 0::numeric AS no_bordereau_2, + 0::numeric AS no_bordereau_22, + + '20991231'::date AS date_solde, + '20991231'::date AS date_solde_c, + '20991231'::date AS date_solde_h, + '20991231'::date AS date_solde_0_c, + '20991231'::date AS date_solde_0_h, + '20991231'::date AS date_solde_1_c, + '20991231'::date AS date_solde_1_h, + '20991231'::date AS date_solde_2_c, + '20991231'::date AS date_solde_2_h, + '20991231'::date AS date_solde_22_c, + '20991231'::date AS date_solde_22_h, + + + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + + '20991231'::date AS date_solde_reference, + '20991231'::date AS date_solde_reference_c, + '20991231'::date AS date_solde_reference_h, + '20991231'::date AS date_solde_reference_0_c, + '20991231'::date AS date_solde_reference_1_c, + '20991231'::date AS date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + '20991231'::date AS date_solde_reference_0_h, + '20991231'::date AS date_solde_reference_1_h, + '20991231'::date AS date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h, + + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + + + '20991231'::date AS date_encours, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + SJ1_DOS2_BG AS montant_comptabilise_budget_global_c + + FROM prod_sigems2.DOS2 + JOIN w_DOSSIER ON ANN_DOS2 = ANN_DOS AND COD_DOS2 = COD_DOS + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_DOS2 = ANN_SELECT AND COD_DOS2 = COD_SELECT + JOIN activite[PX].p_sejours ON SEJ_DOS = p_sejours.code_original AND p_sejours.etat = '' + JOIN w_DOS2_BG ON ANN_DOS2 = ANN_DOS2_BG AND COD_DOS2 = COD_DOS2_BG AND IND_DOS2 = IND_DOS2_BG + LEFT JOIN w_LIG_CLINI_tmrx ON ANN_DOS2 = ANN_LCL AND COD_DOS2 = COD_LCL AND IND_DOS2 = IND_LCL + LEFT JOIN w_LIG_HONOR_tmrx ON ANN_DOS2 = ANN_LHO AND COD_DOS2 = COD_LHO AND IND_DOS2 = IND_LHO + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_0 ON 'PATIENT' = t_tiers_payant_0.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_1 ON DOS2.CP1_DOS2 = t_tiers_payant_1.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON DOS2.CA2_DOS2 = t_tiers_payant_2.code_original + WHERE ETA_DOS2 >= 3; + + + ALTER TABLE w_factures ADD CONSTRAINT w_factures_pkey PRIMARY KEY(no_facture); + + CREATE INDEX w_factures_i1 + ON w_factures + USING btree + (no_sejour); + + CREATE INDEX w_factures_i2 + ON w_factures + USING btree + (no_facture_reference); + + + + + DROP TABLE IF EXISTS w_factures_od_avoir; + CREATE TEMP TABLE w_factures_od_avoir AS + SELECT + oid AS facture_od_avoir_id, + no_facture AS no_facture_od_avoir, + ''::text AS no_facture, + 0::bigint AS facture_id, + no_sejour, + IND_DOS2, + montant_facture_c, + montant_facture_0_c, + montant_facture_1_c, + montant_facture_2_c, + montant_facture_22_c, + montant_facture_h, + montant_facture_0_h, + montant_facture_1_h, + montant_facture_2_h, + montant_facture_22_h + FROM w_factures + WHERE type_facture = '1'; + + + + ALTER TABLE w_factures_od_avoir ADD CONSTRAINT w_factures_od_avoir_od_pkey PRIMARY KEY(no_facture_od_avoir); + + CREATE INDEX w_factures_od_avoir_i1 + ON w_factures_od_avoir + USING btree + (no_sejour); + + UPDATE w_factures_od_avoir SET no_facture = w_factures.no_facture, facture_id = w_factures.oid + FROM w_factures + WHERE + w_factures_od_avoir.no_sejour = w_factures.no_sejour AND w_factures_od_avoir.IND_DOS2 = w_factures.IND_DOS2 + 1 AND + w_factures_od_avoir.montant_facture_c = 0 - w_factures.montant_facture_c AND + w_factures_od_avoir.montant_facture_0_c = 0 - w_factures.montant_facture_0_c AND + w_factures_od_avoir.montant_facture_1_c = 0 - w_factures.montant_facture_1_c AND + w_factures_od_avoir.montant_facture_2_c = 0 - w_factures.montant_facture_2_c AND + w_factures_od_avoir.montant_facture_22_c = 0 - w_factures.montant_facture_22_c AND + w_factures_od_avoir.montant_facture_h = 0 - w_factures.montant_facture_h AND + w_factures_od_avoir.montant_facture_0_h = 0 - w_factures.montant_facture_0_h AND + w_factures_od_avoir.montant_facture_1_h = 0 - w_factures.montant_facture_1_h AND + w_factures_od_avoir.montant_facture_2_h = 0 - w_factures.montant_facture_2_h AND + w_factures_od_avoir.montant_facture_22_h = 0 - w_factures.montant_facture_22_h; + + + UPDATE w_factures SET + type_facture = 'X' , + no_facture_od_avoir = w_factures_od_avoir.no_facture_od_avoir, + facture_od_avoir_id = w_factures_od_avoir.facture_od_avoir_id + FROM w_factures_od_avoir + WHERE w_factures.no_facture = w_factures_od_avoir.no_facture AND w_factures_od_avoir.no_facture <> '' AND w_factures_od_avoir.no_facture_od_avoir <> ''; + + UPDATE w_factures SET + no_facture_od_avoir = w_factures_od_avoir.no_facture, + facture_od_avoir_id = w_factures_od_avoir.facture_id + FROM w_factures_od_avoir + WHERE w_factures.no_facture = w_factures_od_avoir.no_facture_od_avoir AND w_factures_od_avoir.no_facture <> '' AND w_factures_od_avoir.no_facture_od_avoir <> ''; + + + + DROP TABLE IF EXISTS w_factures_references; + CREATE TEMP TABLE w_factures_references AS + SELECT no_sejour, COALESCE(MIN(CASE WHEN type_facture NOT IN ('X', '1') THEN no_facture ELSE NULL END), MIN(no_facture)) AS no_facture_reference + FROM w_factures + GROUP BY 1; + + + UPDATE w_factures SET + no_facture_reference = w_factures_references.no_facture_reference, + facture_reference_id = 0 + FROM w_factures_references + WHERE w_factures.no_sejour = w_factures_references.no_sejour AND + w_factures.no_facture_reference <> w_factures_references.no_facture_reference; + + + DROP TABLE IF EXISTS w_factures_references_soldes; + CREATE TEMP TABLE w_factures_references_soldes AS + SELECT + no_facture_reference, + MAX(date_solde) AS date_solde_reference, + MAX(date_solde_c) AS date_solde_reference_c, + MAX(date_solde_h) AS date_solde_reference_h, + MAX(date_solde_0_c) AS date_solde_reference_0_c, + MAX(date_solde_0_h) AS date_solde_reference_0_h, + MAX(date_solde_1_c) AS date_solde_reference_1_c, + MAX(date_solde_1_h) AS date_solde_reference_1_h, + MAX(date_solde_2_c) AS date_solde_reference_2_c, + MAX(date_solde_2_h) AS date_solde_reference_2_h, + MAX(date_solde_22_c) AS date_solde_reference_22_c, + MAX(date_solde_22_h) AS date_solde_reference_22_h + FROM w_factures + GROUP BY no_facture_reference; + + ALTER TABLE w_factures_references_soldes ADD CONSTRAINT w_factures_references_soldes_pkey PRIMARY KEY(no_facture_reference); + + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_14'); + + + + INSERT INTO activite[PX].p_factures ( + oid, + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + type_facture, + nb_rejets, + code_facture, + date_facture, + code_vente, + mois_vente, + date_vente, + code_cloture, + + particularite_t2a, + + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + + + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + + date_solde_reference, + date_solde_reference_c, + date_solde_reference_h, + date_solde_reference_0_c, + date_solde_reference_1_c, + date_solde_reference_2_c, + date_solde_reference_22_c, + date_solde_reference_0_h, + date_solde_reference_1_h, + date_solde_reference_2_h, + date_solde_reference_22_h, + + delai_facture, + delai_solde, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + + + date_encours, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_c + + ) + + SELECT + oid, + sejour_id, + no_sejour, + no_facture, + w_factures.no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + date_debut, + date_fin, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + type_facture, + nb_rejets, + code_facture, + date_facture, + code_vente, + mois_vente, + date_vente, + code_cloture, + + particularite_t2a, + + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + CASE WHEN date_expedition <> '00010101' THEN date_expedition ELSE '20991231' END, + CASE WHEN date_expedition_0 <> '00010101' THEN date_expedition_0 ELSE '20991231' END, + CASE WHEN date_expedition_1 <> '00010101' THEN date_expedition_1 ELSE '20991231' END, + CASE WHEN date_expedition_2 <> '00010101' THEN date_expedition_2 ELSE '20991231' END, + CASE WHEN date_expedition_22 <> '00010101' THEN date_expedition_22 ELSE '20991231' END, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + + CASE WHEN date_solde <> '00010101' THEN date_solde ELSE '20991231' END, + CASE WHEN date_solde_c <> '00010101' THEN date_solde_c ELSE '20991231' END, + CASE WHEN date_solde_h <> '00010101' THEN date_solde_h ELSE '20991231' END, + CASE WHEN date_solde_0_c <> '00010101' THEN date_solde_0_c ELSE '20991231' END, + CASE WHEN date_solde_0_h <> '00010101' THEN date_solde_0_h ELSE '20991231' END, + CASE WHEN date_solde_1_c <> '00010101' THEN date_solde_1_c ELSE '20991231' END, + CASE WHEN date_solde_1_h <> '00010101' THEN date_solde_1_h ELSE '20991231' END, + CASE WHEN date_solde_2_c <> '00010101' THEN date_solde_2_c ELSE '20991231' END, + CASE WHEN date_solde_2_h <> '00010101' THEN date_solde_2_h ELSE '20991231' END, + CASE WHEN date_solde_22_c <> '00010101' THEN date_solde_22_c ELSE '20991231' END, + CASE WHEN date_solde_22_h <> '00010101' THEN date_solde_22_h ELSE '20991231' END, + + + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + + CASE WHEN w_factures_references_soldes.date_solde_reference <> '00010101' THEN w_factures_references_soldes.date_solde_reference ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_c <> '00010101' THEN w_factures_references_soldes.date_solde_reference_c ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_h <> '00010101' THEN w_factures_references_soldes.date_solde_reference_h ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_0_c <> '00010101' THEN w_factures_references_soldes.date_solde_reference_0_c ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_1_c <> '00010101' THEN w_factures_references_soldes.date_solde_reference_1_c ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_2_c <> '00010101' THEN w_factures_references_soldes.date_solde_reference_2_c ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_22_c <> '00010101' THEN w_factures_references_soldes.date_solde_reference_22_c ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_0_h <> '00010101' THEN w_factures_references_soldes.date_solde_reference_0_h ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_1_h <> '00010101' THEN w_factures_references_soldes.date_solde_reference_1_h ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_2_h <> '00010101' THEN w_factures_references_soldes.date_solde_reference_2_h ELSE '20991231' END, + CASE WHEN w_factures_references_soldes.date_solde_reference_22_h <> '00010101' THEN w_factures_references_soldes.date_solde_reference_22_h ELSE '20991231' END, + + delai_facture, + delai_solde, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + + date_encours, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_c + + FROM w_factures + JOIN w_factures_references_soldes ON w_factures.no_facture_reference = w_factures_references_soldes.no_facture_reference + WHERE oid NOT IN (SELECT oid FROM activite[PX].p_factures); + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_14'); + + + -- Sur budget global, il faut deux tiers identiques + INSERT INTO activite[PX].t_tiers_payant(code_original, code, type_tiers_payant, texte, texte_court) + SELECT t_tiers_payant.code_original || '(2)', + t_tiers_payant.code, + '2'::text, + t_tiers_payant.texte || ' (AMC)', + t_tiers_payant.texte_court || ' (AMC)' + FROM activite[PX].p_sejours + JOIN activite[PX].t_tiers_payant ON p_sejours.tiers_payant_1_id = t_tiers_payant.oid + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON t_tiers_payant_2.code_original = (t_tiers_payant.code_original || '(2)') + WHERE est_budget_global = '1' AND + p_sejours.tiers_payant_1_id = p_sejours.tiers_payant_2_id AND + p_sejours.tiers_payant_1_id <> 0 AND + t_tiers_payant_2.oid IS NULL + GROUP BY 1,2,3,4,5; + + UPDATE activite[PX].p_sejours + SET tiers_payant_2_id = subview.tiers_payant_2_id + FROM + ( + SELECT p_sejours.no_sejour, + p_sejours.tiers_payant_1_id, + t_tiers_payant_2.oid AS tiers_payant_2_id + FROM activite[PX].p_sejours + JOIN activite[PX].t_tiers_payant ON p_sejours.tiers_payant_1_id = t_tiers_payant.oid + JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON t_tiers_payant_2.code_original = (t_tiers_payant.code_original || '(2)') + WHERE est_budget_global = '1' AND + p_sejours.tiers_payant_1_id = p_sejours.tiers_payant_2_id AND + p_sejours.tiers_payant_1_id <> 0 + GROUP BY 1,2,3 + ) subview + WHERE p_sejours.no_sejour = subview.no_sejour; + + INSERT INTO activite[PX].t_tiers_payant(code_original, code, type_tiers_payant, texte, texte_court) + SELECT t_tiers_payant.code_original || '(2)', + t_tiers_payant.code, + '2'::text, + t_tiers_payant.texte || ' (AMC)', + t_tiers_payant.texte_court || ' (AMC)' + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_tiers_payant ON p_factures.tiers_payant_1_id = t_tiers_payant.oid + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON t_tiers_payant_2.code_original = (t_tiers_payant.code_original || '(2)') + WHERE est_budget_global = '1' AND + p_factures.tiers_payant_1_id = p_factures.tiers_payant_2_id AND + p_factures.tiers_payant_1_id <> 0 AND + t_tiers_payant_2.oid IS NULL + GROUP BY 1,2,3,4,5; + + + UPDATE activite[PX].p_factures + SET tiers_payant_2_id = subview.tiers_payant_2_id + FROM + ( + SELECT p_factures.no_facture, + p_factures.tiers_payant_1_id, + t_tiers_payant_2.oid AS tiers_payant_2_id + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_tiers_payant ON p_factures.tiers_payant_1_id = t_tiers_payant.oid + JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON t_tiers_payant_2.code_original = (t_tiers_payant.code_original || '(2)') + WHERE est_budget_global = '1' AND + p_factures.tiers_payant_1_id = p_factures.tiers_payant_2_id AND + p_factures.tiers_payant_1_id <> 0 + GROUP BY 1,2,3 + ) subview + WHERE p_factures.no_facture = subview.no_facture; + + + + -- Séjours sans facture + + DROP TABLE IF EXISTS w_factures_trous; + CREATE TEMP TABLE w_factures_trous AS + SELECT + p_sejours.finess, + p_sejours.no_sejour, + p_sejours.type_sejour, + p_sejours.date_entree, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.code_cp_demandee, + COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire, + p_sejours.code_sorti, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie, + MAX(CASE WHEN p_factures.date_fin IS NULL THEN date_sortie ELSE p_factures.date_fin END) AS date_fin_facture_0, + MAX(CASE WHEN p_factures.date_fin IS NOT NULL AND (date_sortie - date_entree < 30 OR p_sejours.type_sejour <> '1') AND t_services_facturation.avec_facturation_intermediaire IS DISTINCT FROM '1' THEN date_sortie ELSE p_factures.date_fin END) AS date_fin_facture, + date(MAX(COALESCE(CASE WHEN p_factures.date_fin IS NOT NULL AND (date_sortie - date_entree < 30 OR p_sejours.type_sejour <> '1') AND t_services_facturation.avec_facturation_intermediaire IS DISTINCT FROM '1' THEN date_sortie ELSE p_factures.date_fin END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours + FROM activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND no_facture NOT LIKE 'E%' + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE p_sejours.etat = '' AND p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND date_entree <= now() AND p_sejours.type_sejour <> '6' AND p_sejours.type_sejour <> '9' AND code_prevu <> 1 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12; + + -- Spécial séances avec facturation multiple + UPDATE w_factures_trous + SET date_fin_facture = date_fin_facture_0, + date_debut_encours = date(date_fin_facture_0+interval '1 day') + WHERE no_sejour IN + ( + SELECT no_sejour + FROM prod_sigems2.LIG_CLINI + JOIN w_factures_trous ON ANN_LCL || to_char(COD_LCL,'FM900000') = no_sejour AND w_factures_trous.type_sejour = '5' + WHERE PRO_LCL <> 'ACPT' AND PRO_LCL <> 'ECAC' AND PRO_LCL <> 'REGC' AND IND_LCL = 0 AND date(dde_lcl) > date_fin_facture_0 + ) + ; + + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee, + date_debut, + date_fin) + SELECT finess, + no_sejour, + no_sejour || '.00' || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + no_sejour || '.00' || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || p_calendrier.mois ELSE '' END, + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee , + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12; + + + INSERT INTO activite[PX].p_factures( + finess, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id) + SELECT finess, + ANN_LCL || to_char(COD_LCL,'FM900000'), + ANN_LCL || to_char(COD_LCL,'FM900000') || '.00', + ANN_LCL || to_char(COD_LCL,'FM900000') || '.00', + date_entree, + date_sortie, + '0', + '0', + '20991231'::date, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id + FROM prod_sigems2.LIG_CLINI + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LCL = ANN_SELECT AND COD_LCL = COD_SELECT + JOIN activite[PX].p_sejours ON ANN_LCL || to_char(COD_LCL,'FM900000') = no_sejour AND p_sejours.etat = '' + WHERE PRO_LCL <> 'ACPT' AND PRO_LCL <> 'ECAC' AND + ANN_LCL || to_char(COD_LCL,'FM900000') || '.' || to_char(IND_LCL,'FM9999900') NOT IN (SELECT no_facture FROM activite[PX].p_factures) AND + ANN_LCL || to_char(COD_LCL,'FM900000') NOT IN (SELECT no_sejour FROM activite[PX].p_factures) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14; + + INSERT INTO activite[PX].p_factures( + finess, + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id) + SELECT finess, + p_sejours.oid, + ANN_LHO || to_char(COD_LHO,'FM900000'), + ANN_LHO || to_char(COD_LHO,'FM900000') || '.00', + ANN_LHO || to_char(COD_LHO,'FM900000') || '.00', + date_entree, + date_sortie, + '0', + '0', + '20991231'::date, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id + FROM prod_sigems2.LIG_HONOR + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LHO = ANN_SELECT AND COD_LHO = COD_SELECT + JOIN activite[PX].p_sejours ON ANN_LHO || to_char(COD_LHO,'FM900000') = no_sejour AND p_sejours.etat = '' + WHERE CPH_LHO <> 'ACPT' AND CPH_LHO <> 'ECAH' AND + ANN_LHO || to_char(COD_LHO,'FM900000') || '.' || to_char(IND_LHO,'FM9999900') NOT IN (SELECT no_facture FROM activite[PX].p_factures) AND + ANN_LHO || to_char(COD_LHO,'FM900000') NOT IN (SELECT no_sejour FROM activite[PX].p_factures) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15; + + + + UPDATE activite[PX].p_factures SET + date_debut = date_entree, + date_fin = CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid AND + avec_facturation_intermediaire IS DISTINCT FROM '1' + WHERE p_factures.no_sejour = p_sejours.no_sejour AND + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END - date_entree < 30 AND + ( + p_factures.date_debut <> date_entree OR + p_factures.date_fin <> CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + ); + + + + UPDATE activite[PX].p_factures + SET facture_od_avoir_id = p_factures_od_avoir.oid + FROM activite[PX].p_factures p_factures_od_avoir + WHERE p_factures.no_facture_od_avoir = p_factures_od_avoir.no_facture + AND p_factures.facture_od_avoir_id <> p_factures_od_avoir.oid; + + + -- premiere facture initiale (cas des annulations + UPDATE activite[PX].p_factures + SET type_facture = '0' WHERE no_facture IN + ( + SELECT no_facture_0 FROM + ( + SELECT no_sejour, MAX(no_facture_reference) AS no_facture_0 + FROM activite[PX].p_factures + GROUP BY 1 + HAVING SUM(CASE WHEN type_facture = '0' THEN 1 ELSE 0 END) = 0 AND MAX(no_facture_reference) IS NOT NULL + ) subview + ); + + + + + -- Répartition montants comptabilisés tp2 sur tp1 quand tp1 = tp2 + UPDATE activite[PX].p_factures SET + montant_comptabilise_1_c = montant_comptabilise_1_c + montant_comptabilise_2_c, + montant_comptabilise_1_h = montant_comptabilise_1_h + montant_comptabilise_2_h, + montant_regle_1_c = montant_regle_1_c + montant_regle_2_c, + montant_regle_1_h = montant_regle_1_h + montant_regle_2_h + WHERE tiers_payant_1_id = tiers_payant_2_id AND tiers_payant_1_id <> 0 AND + (montant_comptabilise_2_c <> 0 OR montant_comptabilise_2_h <> 0 OR montant_regle_2_c <> 0 OR montant_regle_2_h <> 0); + + + + ]]> + + + + '_' THEN date(DDE_LCL) + WHEN QTE_LCL = 1 THEN date(DDE_LCL) + WHEN date(DDE_LCL) = date(COALESCE(DFI_LCL,DDE_LCL)) THEN date(DDE_LCL) + ELSE GREATEST(p_factures.date_debut, date(DDE_LCL)) + END AS date_debut, + CASE + WHEN substr(p_factures.no_facture,11,1) <> '_' THEN date(COALESCE(DFI_LCL,DDE_LCL)) + WHEN QTE_LCL = 1 THEN date(COALESCE(DFI_LCL,DDE_LCL)) + WHEN date(DDE_LCL) = date(COALESCE(DFI_LCL,DDE_LCL)) THEN date(COALESCE(DFI_LCL,DDE_LCL)) + ELSE LEAST(p_factures.date_fin, date(COALESCE(DFI_LCL,DDE_LCL))) + END AS date_fin, + CASE + WHEN substr(p_factures.no_facture,11,1) <> '_' THEN QTE_LCL + WHEN QTE_LCL = 1 THEN QTE_LCL + WHEN date(DDE_LCL) = date(COALESCE(DFI_LCL,DDE_LCL)) THEN QTE_LCL + ELSE LEAST(p_factures.date_fin, date(COALESCE(DFI_LCL,DDE_LCL))) - GREATEST(p_factures.date_debut, date(DDE_LCL)) + 1 + END AS nb_rubrique, + CASE WHEN COG_LCL <> 0 THEN COG_LCL ELSE 1 END AS coefficient, + w_LIG_CLINI_keys.rubrique_facturation_id AS rubrique_facturation_id, + w_LIG_CLINI_keys.prestation_id AS prestation_id, + CASE + WHEN TAR_LCL <> 0 AND QTE_LCL <> 0 THEN TAR_LCL/QTE_LCL + WHEN PUN_LCL <> 0 THEN PUN_LCL + WHEN QTE_LCL <> 0 AND (ML1_LCL+ML2_LCL+ML3_LCL) <> 0 THEN (ML1_LCL+ML2_LCL+ML3_LCL)/QTE_LCL + ELSE PUN_LCL + END AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id + FROM w_LIG_CLINI + JOIN activite[PX].p_factures ON w_LIG_CLINI.no_facture = substr(p_factures.no_facture,1,10) AND + ( + DDE_LCL BETWEEN p_factures.date_debut AND p_factures.date_fin OR + DFI_LCL BETWEEN p_factures.date_debut AND p_factures.date_fin + ) + JOIN activite[PX].p_sejours ON w_LIG_CLINI.SEJ_DOS = p_sejours.code_original AND p_sejours.etat = '' + JOIN w_LIG_CLINI_keys ON w_LIG_CLINI.key = w_LIG_CLINI_keys.key + WHERE p_factures.code_facture <> '1' AND w_LIG_CLINI.PRO_LCL <> 'ACPT' + ; + + + DROP TABLE IF EXISTS w_LIG_CLINI_tmrx; + CREATE TEMP TABLE w_LIG_CLINI_tmrx AS + SELECT no_facture, + SUM(MR1_LCL) AS MR1_LCL, + SUM(MR2_LCL) AS MR2_LCL, + SUM(MR3_LCL) AS MR3_LCL + FROM w_LIG_CLINI + WHERE PRO_LCL <> 'ECAC' + GROUP BY 1; + + CREATE INDEX w_LIG_CLINI_tmrx_i1 + ON w_LIG_CLINI_tmrx + USING btree + (no_facture); + + + UPDATE activite[PX].p_factures SET + montant_regle_c = w_LIG_CLINI_tmrx.MR1_LCL + w_LIG_CLINI_tmrx.MR2_LCL + w_LIG_CLINI_tmrx.MR3_LCL, + montant_regle_1_c = w_LIG_CLINI_tmrx.MR1_LCL, + montant_regle_2_c = w_LIG_CLINI_tmrx.MR2_LCL, + montant_regle_0_c = w_LIG_CLINI_tmrx.MR3_LCL + FROM w_LIG_CLINI_tmrx + WHERE p_factures.no_facture = w_LIG_CLINI_tmrx.no_facture AND + ( + montant_regle_c <> w_LIG_CLINI_tmrx.MR1_LCL + w_LIG_CLINI_tmrx.MR2_LCL + w_LIG_CLINI_tmrx.MR3_LCL OR + montant_regle_1_c <> w_LIG_CLINI_tmrx.MR1_LCL OR + montant_regle_2_c <> w_LIG_CLINI_tmrx.MR2_LCL OR + montant_regle_0_c <> w_LIG_CLINI_tmrx.MR3_LCL + ); + + + + + ]]> + + + + 0 THEN COG_LCL ELSE 1 END AS coefficient, + CASE WHEN COO_LCL > 0 THEN COO_LCL / 100 ELSE 1 END AS coefficient_mco, + w_LIG_CLINI.PRO_LCL, + w_LIG_CLINI_keys.rubrique_facturation_id AS rubrique_facturation_id, + w_LIG_CLINI_keys.rubrique_comptabilisation_id AS rubrique_comptabilisation_id, + w_LIG_CLINI_keys.prestation_id AS prestation_id, + w_LIG_CLINI_keys.compte_produit_id AS compte_produit_id, + p_sejours.lieu_sortie_id AS lieu_id, + 1::bigint AS origine_facturation_id, + + PUN_LCL AS prix_unitaire, + TX3_LCL AS taux_0, + CASE WHEN ML1_LCL_BG <> 0 THEN TX1_LCL ELSE 0 END AS taux_1, + TX2_LCL AS taux_2, + 0::numeric AS taux_22, + + date(DDE_LCL) AS date_debut, + date(COALESCE(DFI_LCL,DDE_LCL)) AS date_fin, + QTE_LCL AS nb_rubrique, + QTE_LCL AS nb_prestation, + ML1_LCL + ML2_LCL + ML3_LCL AS montant_facture, + ML3_LCL AS montant_facture_0, + ML1_LCL AS montant_facture_1, + ML2_LCL AS montant_facture_2, + 0::numeric AS montant_facture_22, + ML1_LCL + ML2_LCL + ML3_LCL AS montant_comptabilise, + ML3_LCL AS montant_comptabilise_0, + ML1_LCL + CASE WHEN p_factures.tiers_payant_1_id = p_factures.tiers_payant_2_id AND p_factures.tiers_payant_1_id <> 0 THEN ML2_LCL ELSE 0 END AS montant_comptabilise_1, + CASE WHEN p_factures.tiers_payant_1_id <> p_factures.tiers_payant_2_id THEN ML2_LCL ELSE 0 END AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + MR1_LCL + MR2_LCL + MR3_LCL AS montant_regle, + MR3_LCL AS montant_regle_0, + MR1_LCL + CASE WHEN p_factures.tiers_payant_1_id = p_factures.tiers_payant_2_id AND p_factures.tiers_payant_1_id <> 0 THEN MR2_LCL ELSE 0 END AS montant_regle_1, + CASE WHEN p_factures.tiers_payant_1_id <> p_factures.tiers_payant_2_id THEN MR2_LCL ELSE 0 END AS montant_regle_2, + 0::numeric AS montant_regle_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_1, + 0::numeric AS rubrique_facture_id + FROM w_LIG_CLINI + JOIN activite[PX].p_factures ON w_LIG_CLINI.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON w_LIG_CLINI.SEJ_DOS = p_sejours.code_original AND p_sejours.etat = '' + JOIN w_LIG_CLINI_keys ON w_LIG_CLINI.key = w_LIG_CLINI_keys.key + LEFT JOIN w_REG4_un ON NUM_LCL = NUM_CLI + WHERE (p_factures.code_facture = '1' AND w_LIG_CLINI.non_facturee <> '1') OR w_LIG_CLINI.PRO_LCL = 'ACPT' OR NUM_CLI IS NOT NULL; + + -- Lignes Budget global SSR + INSERT INTO w_factures_lignes_c + SELECT + nextval('w_factures_lignes_c_seq'::regclass) AS sequence, + p_factures.no_sejour, + + NUM_LCL, + + p_factures.oid AS facture_id, + w_LIG_CLINI.no_facture || '.BG' AS no_facture, + p_factures.date_vente, + + CASE WHEN COG_LCL <> 0 THEN COG_LCL ELSE 1 END AS coefficient, + CASE WHEN COO_LCL > 0 THEN COO_LCL / 100 ELSE 1 END AS coefficient_mco, + w_LIG_CLINI.PRO_LCL, + w_LIG_CLINI_keys.rubrique_facturation_id AS rubrique_facturation_id, + w_LIG_CLINI_keys.rubrique_comptabilisation_id AS rubrique_comptabilisation_id, + w_LIG_CLINI_keys.prestation_id AS prestation_id, + w_LIG_CLINI_keys.compte_produit_id AS compte_produit_id, + p_sejours.lieu_sortie_id AS lieu_id, + 1::bigint AS origine_facturation_id, + + PUN_LCL AS prix_unitaire, + 0::numeric AS taux_0, + TX1_LCL AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_22, + + date(DDE_LCL) AS date_debut, + date(COALESCE(DFI_LCL,DDE_LCL)) AS date_fin, + QTE_LCL AS nb_rubrique, + QTE_LCL AS nb_prestation, + ML1_LCL_BG AS montant_facture, + 0::numeric AS montant_facture_0, + ML1_LCL_BG AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS montant_regle, + 0::numeric AS montant_regle_0, + 0::numeric AS montant_regle_1, + 0::numeric AS montant_regle_2, + 0::numeric AS montant_regle_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + ML1_LCL_BG AS montant_comptabilise_budget_global_1, + 0::numeric AS rubrique_facture_id + FROM w_LIG_CLINI + JOIN activite[PX].p_factures ON w_LIG_CLINI.no_facture || '.BG' = p_factures.no_facture + JOIN activite[PX].p_sejours ON w_LIG_CLINI.SEJ_DOS = p_sejours.code_original AND p_sejours.etat = '' + JOIN w_LIG_CLINI_keys ON w_LIG_CLINI.key = w_LIG_CLINI_keys.key + WHERE ML1_LCL_BG <> 0 AND + p_factures.code_facture = '1' AND w_LIG_CLINI.non_facturee <> '1'; + + + CREATE INDEX w_factures_lignes_c_i1 + ON w_factures_lignes_c + USING btree + (NUM_LCL); + + CREATE INDEX w_factures_lignes_c_i2 + ON w_factures_lignes_c + USING btree + (sequence); + + CREATE INDEX w_factures_lignes_c_i3 + ON w_factures_lignes_c + USING btree + (no_sejour); + + + + + + -- Eclatement des supplements par jour + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + t_prestations.code AS prestation_code, + date(p_sejours.date_entree) AS date_debut_ghs, + date(p_sejours.date_sortie - interval '1 day') AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + CASE WHEN t_prestations.code = 'GHS' THEN date(date_entree + interval '1 day') ELSE date(date_debut + interval '1 day') END AS date_debut_det, + CASE WHEN t_prestations.code = 'GHS' THEN date(p_sejours.date_sortie - interval '1 day') ELSE date(date_debut + ABS(nb_prestation)-1) END AS date_fin_det, + ABS(CASE WHEN t_prestations.code = 'GHS' THEN date(date_sortie) - date(date_entree) ELSE nb_prestation END) AS nb_det, + w_factures_lignes_c.* + FROM w_factures_lignes_c + JOIN activite[PX].p_sejours ON w_factures_lignes_c.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + ( + code IN ('PJ', 'FJ', 'SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (t_prestations.code = 'GHS' AND date(date_sortie) - date(date_entree) > 1)) ; + + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + date_fin_det = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1, + nb_det = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM w_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture AND + w_factures_lignes_sup_c.prestation_code = 'GHS'; + + CREATE INDEX w_factures_lignes_sup_c_i1 + ON w_factures_lignes_sup_c + USING btree + (date_debut); + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup AS + SELECT + sequence, + NUM_LCL, + PRO_LCL, + no_sejour, + no_facture, + date AS date_debut, + date AS date_fin, + date_vente, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_rubrique, + CASE WHEN prestation_code = 'GHS' AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + compte_produit_id, + round(montant_facture / ABS(nb_det),2) AS montant_facture, + round(montant_facture_0 / ABS(nb_det),2) AS montant_facture_0, + round(montant_facture_1 / ABS(nb_det),2) AS montant_facture_1, + round(montant_facture_2 / ABS(nb_det),2) AS montant_facture_2, + round(montant_facture_22 / ABS(nb_det),2) AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + round(montant_comptabilise / ABS(nb_det),2) AS montant_comptabilise, + round(montant_comptabilise_0 / ABS(nb_det),2) AS montant_comptabilise_0, + round(montant_comptabilise_1 / ABS(nb_det),2) AS montant_comptabilise_1, + round(montant_comptabilise_2 / ABS(nb_det),2) AS montant_comptabilise_2, + round(montant_comptabilise_22 / ABS(nb_det),2) AS montant_comptabilise_22, + rubrique_comptabilisation_id, + round(montant_encours / ABS(nb_det),2) AS montant_encours, + round(montant_encours_0 / ABS(nb_det),2) AS montant_encours_0, + round(montant_encours_1 / ABS(nb_det),2) AS montant_encours_1, + round(montant_encours_2 / ABS(nb_det),2) AS montant_encours_2, + round(montant_encours_22 / ABS(nb_det),2) AS montant_encours_22, + round(montant_facture_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_actes_inclus_dans_sejour, + round(montant_facture_0_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_0_actes_inclus_dans_sejour, + round(montant_facture_1_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_1_actes_inclus_dans_sejour, + round(montant_facture_2_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_2_actes_inclus_dans_sejour, + round(montant_facture_22_actes_inclus_dans_sejour / ABS(nb_det),2) AS montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + round(montant_comptabilise_budget_global_1 / ABS(nb_det),2) AS montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_det AND date_fin_det + ; + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_sup_tot; + + CREATE TEMP TABLE w_factures_lignes_sup_c_sup_tot AS + + SELECT sequence, + SUM(nb_rubrique) AS nb_rubrique, + SUM(nb_prestation) AS nb_prestation, + SUM(montant_facture) AS montant_facture, + SUM(montant_facture_0) AS montant_facture_0, + SUM(montant_facture_1) AS montant_facture_1, + SUM(montant_facture_2) AS montant_facture_2, + SUM(montant_facture_22) AS montant_facture_22, + SUM(montant_comptabilise) AS montant_comptabilise, + SUM(montant_comptabilise_0) AS montant_comptabilise_0, + SUM(montant_comptabilise_1) AS montant_comptabilise_1, + SUM(montant_comptabilise_2) AS montant_comptabilise_2, + SUM(montant_comptabilise_22) AS montant_comptabilise_22, + SUM(montant_encours) AS montant_encours, + SUM(montant_encours_0) AS montant_encours_0, + SUM(montant_encours_1) AS montant_encours_1, + SUM(montant_encours_2) AS montant_encours_2, + SUM(montant_encours_22) AS montant_encours_22, + SUM(montant_facture_actes_inclus_dans_sejour) AS montant_facture_actes_inclus_dans_sejour, + SUM(montant_facture_0_actes_inclus_dans_sejour) AS montant_facture_0_actes_inclus_dans_sejour, + SUM(montant_facture_1_actes_inclus_dans_sejour) AS montant_facture_1_actes_inclus_dans_sejour, + SUM(montant_facture_2_actes_inclus_dans_sejour) AS montant_facture_2_actes_inclus_dans_sejour, + SUM(montant_facture_22_actes_inclus_dans_sejour) AS montant_facture_22_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup + GROUP BY 1; + + + UPDATE w_factures_lignes_c + SET + date_fin = w_factures_lignes_c.date_debut, + nb_rubrique = w_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_sup_tot.nb_rubrique, + nb_prestation = w_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_sup_tot.nb_prestation, + montant_facture = w_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_sup_tot.montant_facture, + montant_facture_0 = w_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_sup_tot.montant_facture_0, + montant_facture_1 = w_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_sup_tot.montant_facture_1, + montant_facture_2 = w_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_sup_tot.montant_facture_2, + montant_facture_22 = w_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_sup_tot.montant_facture_22, + montant_comptabilise = w_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_sup_tot.montant_comptabilise, + montant_comptabilise_0 = w_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_0, + montant_comptabilise_1 = w_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_1, + montant_comptabilise_2 = w_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_2, + montant_comptabilise_22 = w_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_22, + montant_encours = w_factures_lignes_c.montant_encours - w_factures_lignes_sup_c_sup_tot.montant_encours, + montant_encours_0 = w_factures_lignes_c.montant_encours_0 - w_factures_lignes_sup_c_sup_tot.montant_encours_0, + montant_encours_1 = w_factures_lignes_c.montant_encours_1 - w_factures_lignes_sup_c_sup_tot.montant_encours_1, + montant_encours_2 = w_factures_lignes_c.montant_encours_2 - w_factures_lignes_sup_c_sup_tot.montant_encours_2, + montant_encours_22 = w_factures_lignes_c.montant_encours_22 - w_factures_lignes_sup_c_sup_tot.montant_encours_22, + montant_facture_actes_inclus_dans_sejour = w_factures_lignes_c.montant_facture_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour = w_factures_lignes_c.montant_facture_0_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour = w_factures_lignes_c.montant_facture_1_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour = w_factures_lignes_c.montant_facture_2_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour = w_factures_lignes_c.montant_facture_22_actes_inclus_dans_sejour - w_factures_lignes_sup_c_sup_tot.montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1 = w_factures_lignes_c.montant_comptabilise_budget_global_1 - w_factures_lignes_sup_c_sup_tot.montant_comptabilise_budget_global_1 + FROM w_factures_lignes_sup_c_sup_tot + WHERE w_factures_lignes_c.sequence = w_factures_lignes_sup_c_sup_tot.sequence; + + + + INSERT INTO w_factures_lignes_c( + NUM_LCL, + PRO_LCL, + no_facture, + no_sejour, + date_debut, + date_fin, + date_vente, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id) + SELECT + 0 - NUM_LCL, + PRO_LCL, + no_facture, + no_sejour, + date_debut, + date_fin, + date_vente, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id + FROM w_factures_lignes_sup_c_sup; + + + -- Lieu exécution + + + UPDATE w_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_mouvements_sejour + WHERE + w_factures_lignes_c.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_lignes_c.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + w_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_c'); + + + -- Validation des lignes de facture + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_8'); + + INSERT INTO activite[PX].p_factures_lignes_c ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1, + origine_facturation_id + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + compte_produit_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + montant_comptabilise_budget_global_1, + origine_facturation_id + FROM w_factures_lignes_c + WHERE PRO_LCL <> 'ACPT' AND montant_facture <> 0; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_8'); + + + + + + + DROP TABLE IF EXISTS w_sejours_facture_reference; + + CREATE TEMP TABLE w_sejours_facture_reference AS + SELECT + no_sejour, + COALESCE( + MAX(CASE WHEN type_facture <> '1' AND type_facture <> 'X' AND t_prestations.code = 'GHS' THEN p_factures.no_facture ELSE null END), + MAX(CASE WHEN type_facture <> '1' AND type_facture <> 'X' THEN p_factures.no_facture ELSE null END), + MAX(p_factures.no_facture) + ) AS no_facture_reference + FROM activite[PX].p_factures + LEFT JOIN activite[PX].p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + LEFT JOIN activite.t_prestations ON p_factures_lignes_c.prestation_id = t_prestations.oid AND t_prestations.code = 'GHS' + GROUP BY no_sejour; + + + CREATE INDEX w_sejours_facture_reference_i1 + ON w_sejours_facture_reference + USING btree + (no_sejour); + + CREATE INDEX w_sejours_facture_reference_i2 + ON w_sejours_facture_reference + USING btree + (no_facture_reference); + + + UPDATE activite[PX].p_factures SET + no_facture_reference = w_sejours_facture_reference.no_facture_reference, + facture_reference_id = p_factures_references.oid + FROM w_sejours_facture_reference + JOIN activite[PX].p_factures p_factures_references ON p_factures_references.no_facture = w_sejours_facture_reference.no_facture_reference + WHERE p_factures.no_sejour = w_sejours_facture_reference.no_sejour AND + (p_factures.no_facture_reference IS DISTINCT FROM w_sejours_facture_reference.no_facture_reference OR + p_factures.facture_reference_id IS DISTINCT FROM p_factures_references.oid + ) + ; + + + ]]> + + + + 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5; + + + + + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + facture_id, + no_facture, + date_trunc('month',DAT_REG) + interval '1 month' - interval '1 day', + rubrique_comptabilisation_id, + prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(MR1_LCL + MR2_LCL + MR3_LCL) AS montant_regle, + SUM(MR3_LCL) AS montant_regle_0, + SUM(MR1_LCL) AS montant_regle_1, + SUM(MR2_LCL) AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_factures_lignes_c + JOIN w_LIG_CLINI_mrx ON w_factures_lignes_c.NUM_LCL = w_LIG_CLINI_mrx.NUM_LCL + WHERE no_facture NOT LIKE '%BG' + GROUP BY 1,2,3,4,5; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_8'); + + + + ]]> + + + + 0 THEN IND_LHO ELSE COALESCE(IND_DOS2_ETA2, IND_LHO) END,'FM9999900') AS no_facture, + COALESCE(ACT_PRH,CPH_LHO) || '|' || + COALESCE(CCAM_RUM.CODE,ACT_PRH,CPH_LHO) || '|' || + CEX_LHO AS key, + CASE WHEN CASE WHEN IND_LHO <> 0 THEN IND_LHO ELSE COALESCE(IND_DOS2_ETA2, IND_LHO) END = 0 THEN '1' ELSE '0' END AS non_facturee + FROM prod_sigems2.LIG_HONOR + JOIN w_DOSSIER_SELECT w_DOSSIER_SELECT ON ANN_LHO = ANN_SELECT AND COD_LHO = COD_SELECT + LEFT JOIN w_DOS2_ETA2 ON ANN_LHO = ANN_DOS2 AND COD_LHO = COD_DOS2 + LEFT JOIN prod_sigems2.CCAM_RUM ON LIG_HONOR.NUM_LHO = CCAM_RUM.NUM_LHO + LEFT JOIN prod_sigems2.PROD_HONOR ON CPH_LHO = COD_PRH + WHERE + CPH_LHO <> 'ECAH'; + + + CREATE INDEX w_LIG_HONOR_i1 + ON w_LIG_HONOR + USING btree + (SEJ_DOS); + + CREATE INDEX w_LIG_HONOR_i2 + ON w_LIG_HONOR + USING btree + (no_facture); + + CREATE INDEX w_LIG_HONOR_i3 + ON w_LIG_HONOR + USING btree + (NUM_LHO); + + CREATE INDEX w_LIG_HONOR_i4 + ON w_LIG_HONOR + USING btree + (key); + + UPDATE w_LIG_HONOR + SET + MR1_LHO = ML1_LHO, + MR2_LHO = ML2_LHO, + MR3_LHO = ML3_LHO + FROM prod_sigems2.DOS2 + WHERE ANN_DOS2 = ANN_LHO AND + COD_DOS2 = COD_LHO AND + IND_DOS2 = IND_LHO AND + ETA_DOS2 = '5' AND + COP_DOS2 = '1' AND + ( + MR1_LHO IS DISTINCT FROM ML1_LHO OR + MR2_LHO IS DISTINCT FROM ML2_LHO OR + MR3_LHO IS DISTINCT FROM ML3_LHO + ); + + + + + DROP TABLE IF EXISTS w_factures_last; + CREATE TEMP TABLE w_factures_last AS + SELECT no_sejour, + MAX(no_facture) AS no_facture, + MAX(CASE WHEN code_facture <> '1' THEN no_facture ELSE NULL END) AS no_facture_nf + FROM activite[PX].p_factures WHERE code_facture <> '1' + GROUP BY 1; + + UPDATE w_LIG_HONOR + SET no_facture = CASE WHEN ACT_LHO <> 'ACPT' THEN COALESCE(w_factures_last.no_facture_nf,w_factures_last.no_facture) ELSE w_factures_last.no_facture END + FROM w_factures_last + WHERE w_LIG_HONOR.SEJ_DOS = w_factures_last.no_sejour AND + w_LIG_HONOR.no_facture NOT IN (SELECT no_facture FROM activite[PX].p_factures); + + + DROP TABLE IF EXISTS w_LIG_HONOR_keys; + CREATE TEMP TABLE w_LIG_HONOR_keys AS + SELECT key, + ACT_LHO, + CCAM_ACTE, + CEX_LHO, + 0::bigint AS prestation_id, + 0::bigint AS rubrique_facturation_id, + 0::bigint AS medecin_facture_id, + 0::bigint AS medecin_comptabilise_id, + 0::bigint AS acte_id + FROM w_LIG_HONOR + GROUP BY 1,2,3,4; + + UPDATE activite.t_prestations SET + code_original = ACT_LHO + FROM w_LIG_HONOR_keys + where t_prestations.code_original IS DISTINCT FROM ACT_LHO + AND t_prestations.code = ACT_LHO; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT ACT_LHO, ACT_LHO, ACT_LHO, ACT_LHO + FROM w_LIG_HONOR_keys + WHERE ACT_LHO <> '' AND + ACT_LHO NOT IN (SELECT code_original FROM activite.t_prestations WHERE code_original IS NOT NULL) + GROUP BY ACT_LHO + ORDER BY ACT_LHO; + + INSERT INTO base.t_actes(code, texte, texte_court, nomenclature, ccam_regroupement_id_1, ccam_regroupement_id_4) + SELECT substring(CCAM_ACTE, 1, 7), substring(CCAM_ACTE, 1, 7), substring(CCAM_ACTE, 1, 7), CASE WHEN length(CCAM_ACTE) >= 7 THEN 'CCAM' ELSE 'NGAP' END, + (SELECT oid FROM base.t_ccam_regroupements WHERE code = 'NGAP'), (SELECt oid FROM base.t_ccam_regroupements WHERE code = 'NGAP') + FROM w_LIG_HONOR_keys + WHERE substring(CCAM_ACTE, 1, 7) NOT IN (SELECT code FROM base.t_actes) AND length(CCAM_ACTE) < 7 + GROUP BY substring(CCAM_ACTE, 1, 7) ,CASE WHEN length(CCAM_ACTE) >= 7 THEN 'CCAM' ELSE 'NGAP' END + ORDER BY substring(CCAM_ACTE, 1, 7) ; + + + + + UPDATE w_LIG_HONOR_keys SET prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE ACT_LHO = t_prestations.code_original; + + UPDATE w_LIG_HONOR_keys SET rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + WHERE ACT_LHO = t_rubriques_facturation.code_original; + + UPDATE w_LIG_HONOR_keys SET + acte_id = t_actes.oid + FROM base.t_actes + WHERE substring(CCAM_ACTE, 1, 7) = t_actes.code; + + UPDATE w_LIG_HONOR_keys SET + medecin_facture_id = t_medecins_administratifs.oid, + medecin_comptabilise_id = t_medecins_administratifs.oid + FROM activite[PX].t_medecins_administratifs + WHERE CEX_LHO = t_medecins_administratifs.code_original; + + + CREATE INDEX w_LIG_HONOR_keys_i1 + ON w_LIG_HONOR_keys + USING btree + (key); + + DROP TABLE IF EXISTS w_LIG_HONOR_tmrx; + CREATE TEMP TABLE w_LIG_HONOR_tmrx AS + SELECT no_facture, + SUM(MR1_LHO) AS MR1_LHO, + SUM(MR2_LHO) AS MR2_LHO, + SUM(MR3_LHO) AS MR3_LHO + FROM w_LIG_HONOR + WHERE ACT_LHO <> 'ECAC' + GROUP BY 1; + + CREATE INDEX w_LIG_HONOR_tmrx_i1 + ON w_LIG_HONOR_tmrx + USING btree + (no_facture); + + + UPDATE activite[PX].p_factures SET + montant_regle_h = w_LIG_HONOR_tmrx.MR1_LHO + w_LIG_HONOR_tmrx.MR2_LHO + w_LIG_HONOR_tmrx.MR3_LHO, + montant_regle_1_h = w_LIG_HONOR_tmrx.MR1_LHO, + montant_regle_2_h = w_LIG_HONOR_tmrx.MR2_LHO, + montant_regle_0_h = w_LIG_HONOR_tmrx.MR3_LHO + FROM w_LIG_HONOR_tmrx + WHERE p_factures.no_facture = w_LIG_HONOR_tmrx.no_facture AND + ( + montant_regle_h <> w_LIG_HONOR_tmrx.MR1_LHO + w_LIG_HONOR_tmrx.MR2_LHO + w_LIG_HONOR_tmrx.MR3_LHO OR + montant_regle_1_h <> w_LIG_HONOR_tmrx.MR1_LHO OR + montant_regle_2_h <> w_LIG_HONOR_tmrx.MR2_LHO OR + montant_regle_0_h <> w_LIG_HONOR_tmrx.MR3_LHO + ); + + + ]]> + + + + 0 THEN COF_LHO * DNB_LHO ELSE 1.00 END::numeric,2) AS coefficient, + 1::numeric AS coefficient_mco, + w_LIG_HONOR_keys.medecin_facture_id AS medecin_facture_id, + w_LIG_HONOR_keys.medecin_comptabilise_id AS medecin_comptabilise_id, + w_LIG_HONOR.ACT_LHO, + w_LIG_HONOR_keys.prestation_id AS prestation_id, + w_LIG_HONOR_keys.rubrique_facturation_id AS rubrique_facturation_id, + w_LIG_HONOR_keys.acte_id AS acte_id, + CCAM_ACTIVITE AS activite_ccam, + CCAM_EXT_DOC AS extension_ccam, + CCAM_PHASE AS phase_ccam, + CCAM_MODIF1 AS modificateur_ccam_1, + CCAM_MODIF2 AS modificateur_ccam_2, + CCAM_MODIF3 AS modificateur_ccam_3, + CCAM_MODIF4 AS modificateur_ccam_4, + ML1_LHO + ML2_LHO + ML3_LHO AS montant_facture, + ML3_LHO AS montant_facture_0, + ML1_LHO AS montant_facture_1, + ML2_LHO AS montant_facture_2, + 0::numeric AS montant_facture_22, + CASE WHEN DEP_LHO IN ('A', 'B', 'C', 'D', 'E', 'F', 'M', 'N') THEN TAR_LHO - BAR_LHO ELSE 0 END AS montant_depassement, + TX3_LHO AS taux_0, + TX1_LHO AS taux_1, + TX2_LHO AS taux_2, + 0::numeric AS taux_22, + round(base.cti_division(BAR_LHO, QTE_LHO * COF_LHO),2) AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id, + ML1_LHO + ML2_LHO + ML3_LHO AS montant_comptabilise, + ML3_LHO AS montant_comptabilise_0, + ML1_LHO + CASE WHEN p_factures.tiers_payant_1_id = p_factures.tiers_payant_2_id AND p_factures.tiers_payant_1_id <> 0 THEN ML2_LHO ELSE 0 END AS montant_comptabilise_1, + CASE WHEN p_factures.tiers_payant_1_id <> p_factures.tiers_payant_2_id THEN ML2_LHO ELSE 0 END AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + MR1_LHO + MR2_LHO + MR3_LHO AS montant_regle, + MR3_LHO AS montant_regle_0, + MR1_LHO + CASE WHEN p_factures.tiers_payant_1_id = p_factures.tiers_payant_2_id AND p_factures.tiers_payant_1_id <> 0 THEN MR2_LHO ELSE 0 END AS montant_regle_1, + CASE WHEN p_factures.tiers_payant_1_id <> p_factures.tiers_payant_2_id THEN MR2_LHO ELSE 0 END AS montant_regle_2, + 0::numeric AS montant_regle_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour + FROM w_LIG_HONOR + JOIN activite[PX].p_factures ON w_LIG_HONOR.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON w_LIG_HONOR.SEJ_DOS = p_sejours.code_original + JOIN w_LIG_HONOR_keys ON w_LIG_HONOR.key = w_LIG_HONOR_keys.key + LEFT JOIN w_REG3_LHO ON w_LIG_HONOR.NUM_LHO = w_REG3_LHO.LHO_REG3 + WHERE (p_factures.code_facture = '1' AND w_LIG_HONOR.non_facturee <> '1') OR w_LIG_HONOR.ACT_LHO <> 'ECAH' OR w_REG3_LHO.LHO_REG3 IS NOT NULL; + ; + + + CREATE INDEX w_factures_lignes_h_i1 + ON w_factures_lignes_h + USING btree + (NUM_LHO); + + CREATE INDEX w_factures_lignes_h_i2 + ON w_factures_lignes_h + USING btree + (no_sejour); + + + -- Lieu exécution + + UPDATE w_factures_lignes_h + SET lieu_id = p_mouvements_sejour.lieu_id + FROM + activite[PX].p_mouvements_sejour + WHERE + w_factures_lignes_h.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_lignes_h.date_fin = p_mouvements_sejour.date AND + (230000 BETWEEN p_mouvements_sejour.heure_debut AND p_mouvements_sejour.heure_fin OR + nb_entrees_directes = 1 AND heure_fin = 240000 OR + nb_sorties_directes = 1 ) AND + w_factures_lignes_h.lieu_id <> p_mouvements_sejour.lieu_id; + + + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_9'); + + + + INSERT INTO activite[PX].p_factures_lignes_h ( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + rubrique_facturation_id, + acte_id, + activite_ccam, + extension_ccam, + phase_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour + ) + SELECT + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + medecin_facture_id, + medecin_comptabilise_id, + prestation_id, + rubrique_facturation_id, + acte_id, + activite_ccam, + extension_ccam, + phase_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + montant_depassement, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour + FROM w_factures_lignes_h + WHERE ACT_LHO <> 'ACPT' ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_9'); + + + + + + ]]> + + + + 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5,6; + + + + INSERT INTO activite[PX].p_factures_soldes_h( + facture_id, + no_facture, + date_comptable, + medecin_comptabilise_id, + prestation_id, + rubrique_comptabilisee_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + facture_id, + no_facture, + date_trunc('month',DAT_REG) + interval '1 month' - interval '1 day', + medecin_comptabilise_id, + prestation_id, + rubrique_facturation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(MR1_LHO + MR2_LHO + MR3_LHO) AS montant_regle, + SUM(MR3_LHO) AS montant_regle_0, + SUM(MR1_LHO) AS montant_regle_1, + SUM(MR2_LHO) AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_factures_lignes_h + JOIN activite[PX].p_sejours ON w_factures_lignes_h.no_sejour = p_sejours.no_sejour AND p_sejours.est_budget_global IS DISTINCT FROM '1' + JOIN w_LIG_HONOR_mrx ON w_factures_lignes_h.NUM_LHO = w_LIG_HONOR_mrx.NUM_LHO + GROUP BY 1,2,3,4,5,6; + + -- Budget Global (sur ets) + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + facture_id, + no_facture, + date_trunc('month',date_vente) + interval '1 month' - interval '1 day', + rubrique_facturation_id, + prestation_id, + SUM(montant_comptabilise), + SUM(montant_comptabilise_0), + SUM(montant_comptabilise_1), + SUM(montant_comptabilise_2), + SUM(montant_comptabilise_22), + 0, + 0, + 0, + 0, + 0 + FROM w_factures_lignes_h + JOIN activite[PX].p_sejours ON w_factures_lignes_h.no_sejour = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + WHERE date_vente IS NOT NULL AND + (montant_comptabilise <> 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5; + + + + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + facture_id, + no_facture, + date_trunc('month',DAT_REG) + interval '1 month' - interval '1 day', + rubrique_facturation_id, + prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(MR1_LHO + MR2_LHO + MR3_LHO) AS montant_regle, + SUM(MR3_LHO) AS montant_regle_0, + SUM(MR1_LHO) AS montant_regle_1, + SUM(MR2_LHO) AS montant_regle_2, + 0 AS montant_regle_22 + FROM w_factures_lignes_h + JOIN activite[PX].p_sejours ON w_factures_lignes_h.no_sejour = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + JOIN w_LIG_HONOR_mrx ON w_factures_lignes_h.NUM_LHO = w_LIG_HONOR_mrx.NUM_LHO + GROUP BY 1,2,3,4,5; + + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_8'); + + + ]]> + + + + + '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code = t_prestations_pmsi.code + WHERE est_ligne_rss = '1' AND p_rss.en_cours = '0' AND + operation_lamda IS DISTINCT FROM '1' AND + operation_lamda IS DISTINCT FROM '2' AND + t_rubriques_facturation.oid IS NULL + GROUP BY 1,2,3,4; + + -- Ajout des prestations PMSI aux rubriques activité + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT + t_prestations_pmsi.code, + t_prestations_pmsi.code, + t_prestations_pmsi.texte, + t_prestations_pmsi.texte + FROM pmsi.p_rsf_detail + JOIN pmsi.p_rss ON p_rss.oid = p_rsf_detail.rss_id AND p_rss.etat = '' AND p_rss.en_cours = '0' + JOIN pmsi.t_prestations t_prestations_pmsi ON t_prestations_pmsi.oid = p_rsf_detail.prestation_id + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite.t_prestations t_prestations_activite ON t_prestations_activite.code = t_prestations_pmsi.code + WHERE est_ligne_rss = '1' AND p_rss.en_cours = '0' AND + operation_lamda IS DISTINCT FROM '1' AND + operation_lamda IS DISTINCT FROM '2' AND + t_prestations_activite.oid IS NULL + GROUP BY 1,2,3,4; + + -- Lignes PMSI à ajouter + DROP TABLE IF EXISTS w_factures_lignes_pmsi; + CREATE TEMP TABLE w_factures_lignes_pmsi AS + SELECT + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour || '.BG' AS no_facture, + 0::bigint AS facture_id, + CASE WHEN p_rsf_detail.type = 'C' THEN 'H' ELSE 'C' END AS clinique_honoraire, + p_rsf_detail.date_debut, + p_rsf_detail.date_fin, + p_rsf_detail.nombre AS nb_rubrique, + p_rsf_detail.nombre AS nb_prestation, + p_rsf_detail.coefficient AS coefficient, + p_rsf_detail.coefficient_mco, + COALESCE(t_rubriques_facturation.oid,0::bigint) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid,0::bigint) AS rubrique_comptabilisation_id, + COALESCE(t_prestations_activite.oid,0::bigint) AS prestation_id, + p_rsf_detail.sejour_remboursable AS montant_facture, + 0::numeric AS montant_facture_0, + p_rsf_detail.sejour_remboursable AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + 0::numeric AS taux_0, + p_rsf_detail.taux_remboursement AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_22, + p_rsf_detail.prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + CASE WHEN p_rsf_detail.type = 'C' THEN 2::bigint ELSE 1::bigint END AS origine_facturation_id, + CASE WHEN p_rss.traitement_epmsi IN ('30','31','32','33') THEN p_rsf_detail.sejour_remboursable ELSE 0 END AS montant_comptabilise_budget_global_1, + 0::numeric AS protocole_id, + 0::numeric AS compte_produit_id, + t_prestations_pmsi.code AS prestation_code, + ''::text AS uf_code, + ''::text AS dmt_code, + ''::text AS mt_code + FROM pmsi.p_rsf_detail + JOIN pmsi.p_rss ON p_rss.oid = p_rsf_detail.rss_id AND p_rss.etat = '' AND p_rss.en_cours = '0' + JOIN pmsi.p_rsf_total ON p_rss.oid = p_rsf_total.rss_id AND p_rsf_total.valorise_fides IS DISTINCT FROM 1 + JOIN pmsi.t_prestations t_prestations_pmsi ON t_prestations_pmsi.oid = p_rsf_detail.prestation_id + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejour_pmsi ON p_rss.oid = p_sejour_pmsi.rss_id + JOIN activite[PX].p_sejours on p_sejour_pmsi.no_sejour = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite.t_prestations t_prestations_activite ON t_prestations_activite.code = t_prestations_pmsi.code + LEFT JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code = t_prestations_pmsi.code + WHERE est_ligne_rss = '1' AND p_rss.en_cours = '0' AND + operation_lamda IS DISTINCT FROM '1' AND + operation_lamda IS DISTINCT FROM '2' AND + p_rss.traitement_epmsi NOT IN ('12') ; + + -- compte + UPDATE w_factures_lignes_pmsi + SET uf_code = t_unites_fonctionnelles.code, + dmt_code = CASE WHEN t_dmt.oid <> 0 THEN t_dmt.code ELSE '' END, + mt_code = CASE WHEN t_modes_traitement.oid <> 0 THEN CASE WHEN t_modes_traitement.code <> '23' THEN t_modes_traitement.code ELSE '04' END ELSE '' END + FROM activite[PX].t_lieux + JOIN activite[PX].t_unites_fonctionnelles ON unite_fonctionnelle_id = t_unites_fonctionnelles.oid + JOIN activite[PX].t_services_facturation On service_facturation_id = t_services_facturation.oid + JOIN base.t_dmt ON dmt_id = t_dmt.oid + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + WHERE lieu_id = t_lieux.oid; + + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems2.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = prestation_code AND + SER_ANA = uf_code AND + DMT_ANA = dmt_code AND + MDT_ANA = mt_code AND + CPT_ANA <> ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems2.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = prestation_code AND + SER_ANA = uf_code AND + DMT_ANA = '' AND + MDT_ANA = mt_code AND + CPT_ANA <> ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems2.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = prestation_code AND + SER_ANA = uf_code AND + DMT_ANA = dmt_code AND + MDT_ANA = '' AND + CPT_ANA <> ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems2.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = prestation_code AND + SER_ANA = uf_code AND + DMT_ANA = '' AND + MDT_ANA = '' AND + CPT_ANA <> ''; + + + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems2.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = prestation_code AND + SER_ANA = '' AND + DMT_ANA = dmt_code AND + MDT_ANA = mt_code AND + CPT_ANA <> ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems2.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = prestation_code AND + SER_ANA = '' AND + DMT_ANA = '' AND + MDT_ANA = mt_code AND + CPT_ANA <> ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems2.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = prestation_code AND + SER_ANA = '' AND + DMT_ANA = dmt_code AND + MDT_ANA = '' AND + CPT_ANA <> ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems2.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = prestation_code AND + SER_ANA = '' AND + DMT_ANA = '' AND + MDT_ANA = '' AND + CPT_ANA <> ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems2.PROD_CLINI + JOIN activite[PX].t_compte ON AFA_PRC = t_compte.code + WHERE compte_produit_id = 0 AND + COD_PRC = prestation_code; + + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems2.PROD_CLINI + JOIN activite[PX].t_compte ON AFA_PRC = t_compte.code + WHERE compte_produit_id = 0 AND + LIB_PRC = prestation_code; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = t_compte.oid + FROM prod_sigems2.ANALYG + JOIN activite[PX].t_compte ON CPT_ANA = t_compte.code + WHERE compte_produit_id = 0 AND + PRD_ANA = trim(substr(prestation_code,1,4)) AND + SER_ANA = '' AND + DMT_ANA = '' AND + MDT_ANA = '' AND + CPT_ANA <> ''; + + CREATE INDEX w_factures_lignes_pmsi_i1 + ON w_factures_lignes_pmsi + USING btree + (no_sejour); + + + -- Factures de base + DROP TABLE IF EXISTS w_factures_pmsi_base; + CREATE TEMP TABLE w_factures_pmsi_base AS + SELECT p_factures.no_sejour, + (MAX(Array[CASE WHEN p_factures.code_facture <> '0' THEN p_factures.date_facture ELSE '00010101' END::text,p_factures.no_facture]))[2] AS no_facture_base + FROM pmsi.p_rss + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejour_pmsi ON p_rss.oid = p_sejour_pmsi.rss_id + JOIN activite[PX].p_sejours on p_sejour_pmsi.no_sejour = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour + WHERE p_rss.etat = '' AND + p_rss.en_cours = '0' + GROUP BY 1; + + CREATE INDEX w_factures_pmsi_base_i1 + ON w_factures_pmsi_base + USING btree + (no_sejour); + + CREATE INDEX w_factures_pmsi_base_i2 + ON w_factures_pmsi_base + USING btree + (no_facture_base); + + -- Factures à créer + DROP TABLE IF EXISTS w_factures_pmsi; + CREATE TEMP TABLE w_factures_pmsi AS + SELECT + w_factures_lignes_pmsi.no_sejour, + w_factures_lignes_pmsi.sejour_id, + w_factures_lignes_pmsi.no_facture, + p_sejours.date_entree AS date_debut, + p_sejours.date_sortie AS date_fin, + '0'::text AS type_facture, + '1'::text AS code_facture, + MAX(CASE + WHEN p_factures_base.date_facture IS NULL THEN p_sejours.date_sortie + WHEN p_factures_base.date_facture <> '20991231' THEN p_factures_base.date_facture + WHEN p_sejours.date_groupage <> '20991231' THEN p_sejours.date_groupage + ELSE p_sejours.date_sortie END)::date AS date_facture, + MAX(COALESCE(p_factures_base.code_vente,'1')) AS code_vente, + MAX(COALESCE(p_factures_base.mois_vente,209912)) AS mois_vente, + MAX(COALESCE(p_factures_base.date_facture,p_sejours.date_sortie)) AS date_solde, + '0'::text AS particularite_t2a, + MAX(COALESCE(p_factures_base.date_vente,p_sejours.date_sortie)) AS date_vente, + ''::text AS code_cloture, + MAX(p_sejours.code_cp_demandee) AS code_cp_demandee, + '20991231'::date AS date_encours, + MAX(p_sejours.ghs_id) AS ghs_id, + MAX(p_sejours.ghs_bebe1_id) AS ghs_bebe1_id, + MAX(p_sejours.ghs_bebe2_id) AS ghs_bebe2_id, + MAX(p_sejours.ghs_bebe3_id) AS ghs_bebe3_id, + MAX(p_sejours.ghm_id) AS ghm_id, + SUM(montant_facture) AS montant_facture_c, + 0::numeric AS montant_facture_h, + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + '20991231'::date AS date_expedition, + 0::numeric AS delai_expedition, + MAX(p_sejours.tiers_payant_1_id) AS tiers_payant_1_id, + MAX(p_sejours.tiers_payant_2_id) AS tiers_payant_2_id, + MAX(p_sejours.tiers_payant_22_id) AS tiers_payant_22_id, + MAX(p_sejours.tiers_payant_0_id) AS tiers_payant_0_id, + '20991231'::date AS date_solde_0_c, + '20991231'::date AS date_solde_0_h, + '20991231'::date AS date_solde_1_c, + '20991231'::date AS date_solde_1_h, + '20991231'::date AS date_solde_2_c, + '20991231'::date AS date_solde_2_h, + '20991231'::date AS date_solde_22_c, + '20991231'::date AS date_solde_22_h, + '20991231'::date AS date_expedition_0, + '20991231'::date AS date_expedition_1, + '20991231'::date AS date_expedition_2, + '20991231'::date AS date_expedition_22, + '0'::text AS code_expedie_0, + '0'::text AS code_expedie_1, + '0'::text AS code_expedie_2, + '0'::text AS code_expedie_22, + ''::text AS no_bordereau_0, + ''::text AS no_bordereau_1, + ''::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + 0::numeric AS montant_facture_0_c, + 0::numeric AS montant_facture_0_h, + SUM(montant_facture) AS montant_facture_1_c, + 0::numeric AS montant_facture_1_h, + 0::numeric AS montant_facture_2_c, + 0::numeric AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + 0::numeric AS montant_regle_1_h, + 0::numeric AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + 0::numeric AS nb_rejets, + 0::numeric AS montant_comptabilise_c, + 0::numeric AS montant_comptabilise_h, + 0::numeric AS montant_comptabilise_0_c, + 0::numeric AS montant_comptabilise_0_h, + 0::numeric AS montant_comptabilise_1_c, + 0::numeric AS montant_comptabilise_1_h, + 0::numeric AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + w_factures_lignes_pmsi.no_facture AS no_facture_reference, + 0::bigint AS facture_reference_id, + '20991231'::date AS date_solde_reference, + '20991231'::date AS date_solde_reference_c, + '20991231'::date AS date_solde_reference_h, + '20991231'::date AS date_solde_reference_0_c, + '20991231'::date AS date_solde_reference_1_c, + '20991231'::date AS date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + '20991231'::date AS date_solde_reference_0_h, + '20991231'::date AS date_solde_reference_1_h, + '20991231'::date AS date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h, + '20991231'::date AS date_solde_c, + '20991231'::date AS date_solde_h, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_c, + '' AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id + FROM w_factures_lignes_pmsi + JOIN activite[PX].p_sejours ON w_factures_lignes_pmsi.no_sejour = p_sejours.no_sejour + JOIN w_factures_pmsi_base ON w_factures_lignes_pmsi.no_sejour = w_factures_pmsi_base.no_sejour + LEFT JOIN activite[PX].p_factures p_factures_base ON w_factures_pmsi_base.no_facture_base = p_factures_base.no_facture + GROUP BY 1,2,3,4,5; + + INSERT INTO w_factures_pmsi + SELECT + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour || '.BG', + p_sejours.date_entree AS date_debut, + p_sejours.date_sortie AS date_fin, + '0'::text AS type_facture, + '1'::text AS code_facture, + MAX(CASE + WHEN p_sejours.date_groupage <> '20991231' THEN p_sejours.date_groupage + ELSE p_sejours.date_sortie END)::date AS date_facture, + '1' AS code_vente, + 209912 AS mois_vente, + '20991231' AS date_solde, + '0'::text AS particularite_t2a, + '20991231' AS date_vente, + ''::text AS code_cloture, + MAX(p_sejours.code_cp_demandee) AS code_cp_demandee, + '20991231'::date AS date_encours, + MAX(p_sejours.ghs_id) AS ghs_id, + MAX(p_sejours.ghs_bebe1_id) AS ghs_bebe1_id, + MAX(p_sejours.ghs_bebe2_id) AS ghs_bebe2_id, + MAX(p_sejours.ghs_bebe3_id) AS ghs_bebe3_id, + MAX(p_sejours.ghm_id) AS ghm_id, + 0 AS montant_facture_c, + 0::numeric AS montant_facture_h, + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + '20991231'::date AS date_expedition, + 0::numeric AS delai_expedition, + MAX(p_sejours.tiers_payant_1_id) AS tiers_payant_1_id, + MAX(p_sejours.tiers_payant_2_id) AS tiers_payant_2_id, + MAX(p_sejours.tiers_payant_22_id) AS tiers_payant_22_id, + MAX(p_sejours.tiers_payant_0_id) AS tiers_payant_0_id, + '20991231'::date AS date_solde_0_c, + '20991231'::date AS date_solde_0_h, + '20991231'::date AS date_solde_1_c, + '20991231'::date AS date_solde_1_h, + '20991231'::date AS date_solde_2_c, + '20991231'::date AS date_solde_2_h, + '20991231'::date AS date_solde_22_c, + '20991231'::date AS date_solde_22_h, + '20991231'::date AS date_expedition_0, + '20991231'::date AS date_expedition_1, + '20991231'::date AS date_expedition_2, + '20991231'::date AS date_expedition_22, + '0'::text AS code_expedie_0, + '0'::text AS code_expedie_1, + '0'::text AS code_expedie_2, + '0'::text AS code_expedie_22, + ''::text AS no_bordereau_0, + ''::text AS no_bordereau_1, + ''::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + 0::numeric AS montant_facture_0_c, + 0::numeric AS montant_facture_0_h, + 0::numeric AS montant_facture_1_c, + 0::numeric AS montant_facture_1_h, + 0::numeric AS montant_facture_2_c, + 0::numeric AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + 0::numeric AS montant_regle_1_h, + 0::numeric AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + 0::numeric AS nb_rejets, + 0::numeric AS montant_comptabilise_c, + 0::numeric AS montant_comptabilise_h, + 0::numeric AS montant_comptabilise_0_c, + 0::numeric AS montant_comptabilise_0_h, + 0::numeric AS montant_comptabilise_1_c, + 0::numeric AS montant_comptabilise_1_h, + 0::numeric AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + p_sejours.no_sejour || '.BG' AS no_facture_reference, + 0::bigint AS facture_reference_id, + '20991231'::date AS date_solde_reference, + '20991231'::date AS date_solde_reference_c, + '20991231'::date AS date_solde_reference_h, + '20991231'::date AS date_solde_reference_0_c, + '20991231'::date AS date_solde_reference_1_c, + '20991231'::date AS date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + '20991231'::date AS date_solde_reference_0_h, + '20991231'::date AS date_solde_reference_1_h, + '20991231'::date AS date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h, + '20991231'::date AS date_solde_c, + '20991231'::date AS date_solde_h, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_c, + '' AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id + FROM pmsi.p_rss + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN w_factures_pmsi ON p_sejours.no_sejour = w_factures_pmsi.no_sejour + WHERE p_rss.en_cours = '0' AND + w_factures_pmsi.no_facture IS NULL AND + p_sejours.date_sortie >= '[ENV_ADM_ANNEEDEBUT]0101' AND + p_sejours.no_sejour NOT IN + ( + SELECT p_factures.no_sejour + FROM activite[PX].p_factures + WHERE montant_facture_1_c <> 0 + ) + GROUP BY 1,2,3,4,5; + + + UPDATE w_factures_pmsi + SET date_vente = date_facture, mois_vente = date_part('year',date_facture)*100 + date_part('month',date_facture) + WHERE date_vente = '20991231'; + + UPDATE w_factures_pmsi + SET date_solde = date_facture + WHERE date_vente IS DISTINCT FROM date_facture; + + + -- Ajout des factures + INSERT INTO activite[PX].p_factures + (no_sejour, no_facture, date_debut, date_fin, type_facture, + code_facture, date_facture, code_vente, mois_vente, date_solde, + montant_facture_c, montant_facture_h, montant_regle_c, montant_regle_h, + delai_facture, delai_solde, date_expedition, delai_expedition, + tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, tiers_payant_0_id, + date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, + date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h, + date_expedition_0, date_expedition_1, date_expedition_2, date_expedition_22, + code_expedie_0, code_expedie_1, code_expedie_2, code_expedie_22, + no_bordereau_0, no_bordereau_1, no_bordereau_2, no_bordereau_22, + montant_facture_0_c, montant_facture_0_h, montant_facture_1_c, + montant_facture_1_h, montant_facture_2_c, montant_facture_2_h, + montant_facture_22_c, montant_facture_22_h, montant_regle_0_c, + montant_regle_0_h, montant_regle_1_c, montant_regle_1_h, montant_regle_2_c, + montant_regle_2_h, montant_regle_22_c, montant_regle_22_h, delai_expedition_0, + delai_expedition_1, delai_expedition_2, delai_expedition_22, + delai_solde_0_c, delai_solde_0_h, delai_solde_1_c, delai_solde_1_h, + delai_solde_2_c, delai_solde_2_h, delai_solde_22_c, delai_solde_22_h, + ghs_id, particularite_t2a, date_vente, code_cloture, montant_encours_c, + montant_encours_0_c, montant_encours_1_c, montant_encours_2_c, + montant_encours_22_c, montant_encours_h, montant_encours_0_h, + montant_encours_1_h, montant_encours_2_h, montant_encours_22_h, + code_cp_demandee, date_encours, ghs_bebe1_id, ghs_bebe2_id, ghs_bebe3_id, + nb_rejets, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0_c, + montant_comptabilise_0_h, montant_comptabilise_1_c, montant_comptabilise_1_h, + montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_22_c, + montant_comptabilise_22_h, no_facture_reference, date_solde_reference, + date_solde_reference_c, date_solde_reference_h, date_solde_reference_0_c, + date_solde_reference_1_c, date_solde_reference_2_c, date_solde_reference_22_c, + date_solde_reference_0_h, date_solde_reference_1_h, date_solde_reference_2_h, + date_solde_reference_22_h, date_solde_c, date_solde_h, montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, montant_comptabilise_budget_global_c, + no_facture_od_avoir, sejour_id, facture_reference_id, facture_od_avoir_id, + ghm_id) + SELECt no_sejour, no_facture, date_debut, date_fin, type_facture, + code_facture, date_facture, code_vente, mois_vente, date_solde, + montant_facture_c, montant_facture_h, montant_regle_c, montant_regle_h, + delai_facture, delai_solde, date_expedition, delai_expedition, + tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, tiers_payant_0_id, + date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, + date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h, + date_expedition_0, date_expedition_1, date_expedition_2, date_expedition_22, + code_expedie_0, code_expedie_1, code_expedie_2, code_expedie_22, + no_bordereau_0, no_bordereau_1, no_bordereau_2, no_bordereau_22, + montant_facture_0_c, montant_facture_0_h, montant_facture_1_c, + montant_facture_1_h, montant_facture_2_c, montant_facture_2_h, + montant_facture_22_c, montant_facture_22_h, montant_regle_0_c, + montant_regle_0_h, montant_regle_1_c, montant_regle_1_h, montant_regle_2_c, + montant_regle_2_h, montant_regle_22_c, montant_regle_22_h, delai_expedition_0, + delai_expedition_1, delai_expedition_2, delai_expedition_22, + delai_solde_0_c, delai_solde_0_h, delai_solde_1_c, delai_solde_1_h, + delai_solde_2_c, delai_solde_2_h, delai_solde_22_c, delai_solde_22_h, + ghs_id, particularite_t2a, date_vente, code_cloture, montant_encours_c, + montant_encours_0_c, montant_encours_1_c, montant_encours_2_c, + montant_encours_22_c, montant_encours_h, montant_encours_0_h, + montant_encours_1_h, montant_encours_2_h, montant_encours_22_h, + code_cp_demandee, date_encours, ghs_bebe1_id, ghs_bebe2_id, ghs_bebe3_id, + nb_rejets, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0_c, + montant_comptabilise_0_h, montant_comptabilise_1_c, montant_comptabilise_1_h, + montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_22_c, + montant_comptabilise_22_h, no_facture_reference, date_solde_reference, + date_solde_reference_c, date_solde_reference_h, date_solde_reference_0_c, + date_solde_reference_1_c, date_solde_reference_2_c, date_solde_reference_22_c, + date_solde_reference_0_h, date_solde_reference_1_h, date_solde_reference_2_h, + date_solde_reference_22_h, date_solde_c, date_solde_h, montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, montant_comptabilise_budget_global_c, + no_facture_od_avoir, sejour_id, facture_reference_id, facture_od_avoir_id, + ghm_id + FROM w_factures_pmsi; + + + + -- Ajout des lignes + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, date_debut, date_fin, nb_rubrique, coefficient, coefficient_mco, + rubrique_facturation_id, prestation_id, montant_facture, montant_facture_0, + montant_facture_1, montant_facture_2, montant_facture_22, taux_0, + taux_1, taux_2, taux_22, finess, prix_unitaire, lieu_id, nb_prestation, + montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, + montant_comptabilise_2, montant_comptabilise_22, rubrique_comptabilisation_id, + montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, + montant_encours_22, montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, montant_comptabilise_budget_global_1, + facture_id, protocole_id, compte_produit_id) + SELECT + p_factures.no_facture, w_factures_lignes_pmsi.date_debut, w_factures_lignes_pmsi.date_fin, nb_rubrique, coefficient, coefficient_mco, + rubrique_facturation_id, prestation_id, montant_facture, montant_facture_0, + montant_facture_1, montant_facture_2, montant_facture_22, taux_0, + taux_1, taux_2, taux_22, finess, prix_unitaire, lieu_id, nb_prestation, + montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, + montant_comptabilise_2, montant_comptabilise_22, rubrique_comptabilisation_id, + montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, + montant_encours_22, montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, montant_comptabilise_budget_global_1, + p_factures.oid AS facture_id, protocole_id, compte_produit_id + FROM w_factures_lignes_pmsi + JOIN activite[PX].p_factures ON w_factures_lignes_pmsi.no_facture = p_factures.no_facture ; + + + + + -- En cours PMSI public + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id) + SELECT + p_sejours.oid, + p_sejours.no_sejour, + p_sejours.no_sejour || '.BG', + p_sejours.no_sejour || '.BG', + p_sejours.date_entree, + p_sejours.date_sortie, + '0', + '0', + '20991231'::date, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.ghs_id + FROM pmsi.p_rss + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND p_factures.no_facture LIKE '%BG' + WHERE p_rss.en_cours = '1' AND p_factures.no_facture IS NULL + GROUP BY 1,2,3,4,5,6,10,11,12; + + -- Sejours BG PMSi qui ne sont pas dans les RSS + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id) + SELECT p_sejours.oid, + p_sejours.no_sejour, + p_sejours.no_sejour || '.BG', + p_sejours.no_sejour || '.BG', + p_sejours.date_entree, + p_sejours.date_sortie, + '0', + '0', + '20991231'::date, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.ghs_id + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE p_sejours.est_budget_global = '1' AND + type_t2a = '1' AND + date_entree between now() - interval '1 year' AND now() AND + code_sorti = '1' AND + no_sejour NOT IN (SELECt no_sejour FROm activite[PX].p_factures where no_facture like '%BG') AND + no_sejour NOT IN ( + SELECT p_factures.no_sejour + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_sejours.est_budget_global = '1' AND + code_facture = '1' AND + t_prestations.code = 'PJ' AND + (taux_2 = 100 OR taux_0 = 100) + GROUP BY 1 + HAVING SUM(montant_facture_0+montant_facture_2) > 0 + ); + + + + -- Factures non assurés ajoutées à tord (on trouve un 100% dans patient ou tp1 + DROP TABLE IF EXISTS w_sejours_bg_24; + CREATE TEMP TABLE w_sejours_bg_24 AS + SELECT p_factures.no_sejour, SUM(montant_facture_0+montant_facture_1+montant_facture_2) AS montant_facture_100 + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN activite[PX].p_sejour_pmsi ON p_sejour_pmsi.sejour_id = p_sejours.oid + JOIN pmsi.p_rss ON p_sejour_pmsi.rss_id = p_rss.oid + WHERE p_sejours.est_budget_global = '1' AND + code_facture = '1' AND + t_prestations.code = 'PJ' AND + (taux_1 = 100 OR + taux_2 = 100 OR + taux_0 = 100 OR + taux_0+taux_1+taux_2=0 AND montant_facture_1 = montant_facture + ) AND + p_rss.traitement_epmsi NOT IN ('30','31','32','33') + GROUP BY 1 + HAVING SUM(montant_facture_0+montant_facture_1+montant_facture_2) > 0 + ORDER BY 1; + + DELETE FROM activite[PX].p_factures_lignes_c + USING activite[PX].p_factures + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour IN (SELECT no_sejour FROM w_sejours_bg_24) AND + p_factures_lignes_c.no_facture LIKE '%BG' AND + origine_facturation_id = 1; + + UPDATE activite[PX].p_factures SET + montant_facture_c = 0, + montant_facture_1_c = 0, + montant_comptabilise_1_c =0, + montant_comptabilise_budget_global_c = 0 + WHERE no_sejour IN (SELECT no_sejour FROM w_sejours_bg_24) AND + no_facture LIKE '%BG' AND + montant_comptabilise_budget_global_c = 0; + + + ]]> + + + + + 0 AND + montant_facture_actes_inclus_dans_sejour = 0 AND + (montant_facture_1 + montant_facture_2 + montant_facture_0) = 0 AND + (taux_0 <> 0 OR taux_1 <> 0 OR taux_2 <> 0 OR taux_22 <> 0); + + UPDATE activite[PX].p_factures_lignes_h + SET + montant_facture_actes_inclus_dans_sejour = (prix_unitaire * nb_prestation * coefficient), + montant_facture_1_actes_inclus_dans_sejour = (prix_unitaire * nb_prestation * coefficient) + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 1 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND prix_unitaire <> 0 AND + montant_facture_actes_inclus_dans_sejour = 0 AND + (montant_facture_1 + montant_facture_2 + montant_facture_0) = 0 AND + taux_1 = 0 AND taux_2 = 0 AND taux_0 = 0; + + + UPDATE activite[PX].p_factures_lignes_h + SET + montant_facture_actes_inclus_dans_sejour = (prix_unitaire * nb_prestation * coefficient) * taux_1 / 100.00, + montant_facture_1_actes_inclus_dans_sejour = (prix_unitaire * nb_prestation * coefficient) * taux_1 / 100.00 + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 1 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND prix_unitaire <> 0 AND + montant_facture_actes_inclus_dans_sejour = 0 AND + (montant_facture_2 + montant_facture_0) <> 0 AND montant_facture_1 = 0; + + + --arrondis + UPDATE activite[PX].p_factures_lignes_h + SET montant_facture_1_actes_inclus_dans_sejour = montant_facture_actes_inclus_dans_sejour - (montant_facture_0_actes_inclus_dans_sejour+montant_facture_1_actes_inclus_dans_sejour+montant_facture_2_actes_inclus_dans_sejour+montant_facture_22_actes_inclus_dans_sejour) + WHERE montant_facture_1_actes_inclus_dans_sejour <> 0 AND montant_facture_actes_inclus_dans_sejour <> (montant_facture_0_actes_inclus_dans_sejour+montant_facture_1_actes_inclus_dans_sejour+montant_facture_2_actes_inclus_dans_sejour+montant_facture_22_actes_inclus_dans_sejour); + + + + -- actes externes + UPDATE activite[PX].p_factures_lignes_h + SET + montant_facture = prix_unitaire * nb_prestation * coefficient, + montant_facture_1 = (prix_unitaire * nb_prestation * coefficient) * taux_1 / 100.00, + montant_facture_2 = (prix_unitaire * nb_prestation * coefficient) * taux_2 / 100.00, + montant_facture_0 = (prix_unitaire * nb_prestation * coefficient) * taux_0 / 100.00 + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 2 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND prix_unitaire <> 0 AND + (montant_facture_1 + montant_facture_2 + montant_facture_0) = 0; + + UPDATE activite[PX].p_factures_lignes_h + SET + montant_facture = prix_unitaire * nb_prestation * coefficient, + montant_facture_1 = (prix_unitaire * nb_prestation * coefficient) * taux_1 / 100.00 + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 2 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND prix_unitaire <> 0 AND + taux_1 <> 0 AND (montant_facture_2 + montant_facture_0) <> 0 AND montant_facture_1 = 0; + + + -- Arrondis + UPDATE activite[PX].p_factures_lignes_h + SET montant_facture_1 = montant_facture - (montant_facture_0+montant_facture_1+montant_facture_2+montant_facture_22) + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 2 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + montant_facture_1 <> 0 AND + montant_facture <> (montant_facture_0+montant_facture_1+montant_facture_2+montant_facture_22); + + + -- Ajout des honoraires budget global dans la partie CLINIQUE + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id, + protocole_id, + compte_produit_id) + SELECT + p_factures.no_facture, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_facturation_id, + prestation_id, + CASE WHEN montant_comptabilise_0 <> 0 THEN montant_facture_0 ELSE 0 END + + CASE WHEN montant_comptabilise_1 <> 0 THEN montant_facture_1 ELSE 0 END + + CASE WHEN montant_comptabilise_2 <> 0 THEN montant_facture_2 ELSE 0 END + + CASE WHEN montant_comptabilise_22 <> 0 THEN montant_facture_22 ELSE 0 END AS montant_facture, + CASE WHEN montant_comptabilise_0 <> 0 THEN montant_facture_0 ELSE 0 END AS montant_facture_0, + CASE WHEN montant_comptabilise_1 <> 0 THEN montant_facture_1 ELSE 0 END AS montant_facture_1, + CASE WHEN montant_comptabilise_2 <> 0 THEN montant_facture_2 ELSE 0 END AS montant_facture_2, + CASE WHEN montant_comptabilise_22 <> 0 THEN montant_facture_22 ELSE 0 END AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + CASE WHEN montant_comptabilise_1 <> 0 THEN nb_prestation ELSE 0 END, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + 2::bigint AS origine_facturation_id, + 0::numeric AS montant_comptabilise_budget_global_1, + p_factures.oid AS facture_id, + protocole_id, + 0::bigint AS compte_produit_id + FROM activite[PX].p_factures_lignes_h + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + LEFT JOIN activite[PX].t_rubriques_facturation ON t_prestations.code = t_rubriques_facturation.code + JOIN activite[PX].p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND est_budget_global = '1' + WHERE p_factures.code_facture = '1' AND + (montant_comptabilise <> 0 OR montant_comptabilise_0 <> 0 OR montant_comptabilise_1 <> 0 OR montant_comptabilise_2 <> 0) ; + + + UPDATE activite[PX].p_factures_lignes_h + SET montant_comptabilise = 0, montant_comptabilise_0 = 0, montant_comptabilise_1 = 0, montant_comptabilise_2 = 0 + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND est_budget_global = '1' + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + (montant_comptabilise <> 0 OR montant_comptabilise_0 <> 0 OR montant_comptabilise_1 <> 0 OR montant_comptabilise_2 <> 0) ; + + + -- Ajout des actes inclus dans séjour dans la partie clinique + DROP TABLE IF EXISTS w_actes_inclus; + CREATE TEMP TABLE w_actes_inclus AS + SELECT + p_factures.no_sejour, + p_factures.no_facture AS no_facture, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_facturation_id, + prestation_id, + 0::numeric AS montant_facture, + 0::numeric AS montant_facture_0, + 0::numeric AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + 3::bigint AS origine_facturation_id, + 0::numeric AS montant_comptabilise_budget_global_1, + p_factures.oid AS facture_id, + protocole_id, + 0::bigint AS compte_produit_id + FROM activite[PX].p_factures_lignes_h + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + LEFT JOIN activite[PX].t_rubriques_facturation ON t_prestations.code = t_rubriques_facturation.code + JOIN activite[PX].p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND est_budget_global = '1' + WHERE + (montant_facture_actes_inclus_dans_sejour <> 0 OR + montant_facture_0_actes_inclus_dans_sejour <> 0 OR + montant_facture_1_actes_inclus_dans_sejour <> 0 OR + montant_facture_2_actes_inclus_dans_sejour <> 0) ; + + + UPDATE w_actes_inclus + SET no_facture = p_factures.no_facture, facture_id = p_factures.oid + FROM activite[PX].p_factures + WHERE w_actes_inclus.no_sejour = p_factures.no_sejour AND + p_factures.no_facture LIKE '%BG' ; + + + INSERT INTO activite[PX].p_factures_lignes_c + ( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id, + protocole_id, + compte_produit_id + ) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + 0::numeric AS montant_facture, + 0::numeric AS montant_facture_0, + 0::numeric AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id, + protocole_id, + compte_produit_id + FROM w_actes_inclus; + + -- Correction n° facture + UPDATE activite[PX].p_factures_lignes_c + SET no_facture = p_factures.no_facture, facture_id = p_factures.oid + FROM activite[PX].p_factures + WHERE p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour <> 0 AND + substr(p_factures_lignes_c.no_facture,1,7) = p_factures.no_sejour AND + p_factures.no_facture LIKE '%BG' AND + p_factures_lignes_c.no_facture NOT LIKE '%BG' AND + p_factures_lignes_c.montant_facture = 0 AND + p_factures_lignes_c.montant_comptabilise = 0; + + UPDATE activite[PX].p_factures_lignes_h + SET no_facture = p_factures.no_facture, facture_id = p_factures.oid + FROM activite[PX].p_factures + WHERE p_factures_lignes_h.montant_facture_actes_inclus_dans_sejour <> 0 AND + substr(p_factures_lignes_h.no_facture,1,7) = p_factures.no_sejour AND + p_factures.no_facture LIKE '%BG' AND + p_factures_lignes_h.no_facture NOT LIKE '%BG' AND + p_factures_lignes_h.montant_facture = 0 AND + p_factures_lignes_h.montant_comptabilise = 0; + + + -- Cumuls factures + DROP TABLE IF EXISTS w_factures_corrigees; + CREATE TEMP TABLE w_factures_corrigees AS + SELECT + p_factures_lignes_c.no_facture, + + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture ELSE 0 END),0) AS ligne_facture_c, + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_0 ELSE 0 END),0) AS ligne_facture_0_c, + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_1 ELSE 0 END),0) AS ligne_facture_1_c, + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_2 ELSE 0 END),0) AS ligne_facture_2_c, + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_22 ELSE 0 END),0) AS ligne_facture_22_c, + COALESCE(SUM(montant_comptabilise),0) AS ligne_comptabilise_c, + COALESCE(SUM(montant_comptabilise_0),0) AS ligne_comptabilise_0_c, + COALESCE(SUM(montant_comptabilise_1),0) AS ligne_comptabilise_1_c, + COALESCE(SUM(montant_comptabilise_2),0) AS ligne_comptabilise_2_c, + COALESCE(SUM(montant_comptabilise_22),0) AS ligne_comptabilise_22_c, + + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture ELSE 0 END),0) AS ligne_facture_h, + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_0 ELSE 0 END),0) AS ligne_facture_0_h, + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_1 ELSE 0 END),0) AS ligne_facture_1_h, + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_2 ELSE 0 END),0) AS ligne_facture_2_h, + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_22 ELSE 0 END),0) AS ligne_facture_22_h, + 0::numeric AS ligne_comptabilise_h, + 0::numeric AS ligne_comptabilise_0_h, + 0::numeric AS ligne_comptabilise_1_h, + 0::numeric AS ligne_comptabilise_2_h, + 0::numeric AS ligne_comptabilise_22_h + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND est_budget_global = '1' + LEFT JOIN activite[PX].p_factures_lignes_c ON p_factures_lignes_c.no_facture = p_factures.no_facture + GROUP BY 1 + HAVING SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_c) OR + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_0 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_0_c) OR + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_1 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_1_c) OR + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_2 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_2_c) OR + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_22 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_22_c) OR + SUM(montant_comptabilise) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_c) OR + SUM(montant_comptabilise_0) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_0_c) OR + SUM(montant_comptabilise_1) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_1_c) OR + SUM(montant_comptabilise_2) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_2_c) OR + SUM(montant_comptabilise_22) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_22_c) OR + + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_h) OR + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_0 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_0_h) OR + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_1 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_1_h) OR + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_2 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_2_h) OR + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_22 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_22_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_0_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_1_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_2_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_22_h) ; + + UPDATE activite[PX].p_factures + SET + montant_facture_c = w_factures_corrigees.ligne_facture_c, + montant_facture_0_c = w_factures_corrigees.ligne_facture_0_c, + montant_facture_1_c = w_factures_corrigees.ligne_facture_1_c, + montant_facture_2_c = w_factures_corrigees.ligne_facture_2_c, + montant_facture_22_c = w_factures_corrigees.ligne_facture_22_c, + montant_comptabilise_c = w_factures_corrigees.ligne_comptabilise_c, + montant_comptabilise_0_c = w_factures_corrigees.ligne_comptabilise_0_c, + montant_comptabilise_1_c = w_factures_corrigees.ligne_comptabilise_1_c, + montant_comptabilise_2_c = w_factures_corrigees.ligne_comptabilise_2_c, + montant_comptabilise_22_c = w_factures_corrigees.ligne_comptabilise_22_c, + montant_facture_h = w_factures_corrigees.ligne_facture_h, + montant_facture_0_h = w_factures_corrigees.ligne_facture_0_h, + montant_facture_1_h = w_factures_corrigees.ligne_facture_1_h, + montant_facture_2_h = w_factures_corrigees.ligne_facture_2_h, + montant_facture_22_h = w_factures_corrigees.ligne_facture_22_h, + montant_comptabilise_h = w_factures_corrigees.ligne_comptabilise_h, + montant_comptabilise_0_h = w_factures_corrigees.ligne_comptabilise_0_h, + montant_comptabilise_1_h = w_factures_corrigees.ligne_comptabilise_1_h, + montant_comptabilise_2_h = w_factures_corrigees.ligne_comptabilise_2_h, + montant_comptabilise_22_h = w_factures_corrigees.ligne_comptabilise_22_h + FROM w_factures_corrigees + WHERE w_factures_corrigees.no_facture = p_factures.no_facture; + + + -- Report des actes non facturés honoraires budget global pour encours + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture AS no_facture, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.date_fin, + p_factures_lignes_h.nb_rubrique, + p_factures_lignes_h.coefficient, + p_factures_lignes_h.rubrique_facturation_id, + p_factures_lignes_h.prestation_id, + p_factures_lignes_h.prix_unitaire, + p_factures_lignes_h.lieu_id + FROM activite[PX].p_factures_lignes_h + JOIN activite[PX].p_factures on p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_factures.code_facture = '0' AND + p_sejours.est_budget_global = '1' AND + p_sejours.type_sejour = '3' AND + p_factures.no_sejour NOT IN (SELECT no_sejour FROM activite[PX].p_factures WHERE code_facture = '1') AND + p_factures_lignes_h.no_facture NOT IN (SELECT no_facture FROM activite[PX].p_factures_lignes_non_facturees_c) + ; + + + ]]> + + + + 0 OR p_factures.montant_facture_c + p_factures.montant_facture_h = 0 THEN '9' ELSE '0' END || + p_factures.date_facture::text,no_facture + ]))[2] AS no_facture_reference + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + GROUP BY 1,2 + ORDER BY 1,2; + + CREATE INDEX w_factures_reference_i1 + ON w_factures_reference + USING btree + (no_sejour); + + CREATE INDEX w_factures_reference_i2 + ON w_factures_reference + USING btree + (no_facture_reference); + + + UPDATE activite[PX].p_factures SET + no_facture_reference = w_factures_reference.no_facture_reference, + facture_reference_id = p_factures_reference.oid + FROM w_factures_reference + JOIN activite[PX].p_factures p_factures_reference ON p_factures_reference.no_facture = w_factures_reference.no_facture_reference + WHERE w_factures_reference.no_sejour = p_factures.no_sejour AND + p_factures.date_debut BETWEEN date_debut_reference AND date_fin_reference AND + ( + p_factures.no_facture_reference IS DISTINCT FROM w_factures_reference.no_facture_reference OR + p_factures.facture_reference_id IS DISTINCT FROM p_factures_reference.oid + ); + + UPDATE activite[PX].p_factures SET + facture_reference_id = p_factures_references.oid + FROM activite[PX].p_factures p_factures_references + WHERE p_factures.no_facture_reference = p_factures_references.no_facture AND + p_factures.facture_reference_id IS DISTINCT FROM p_factures_references.oid + ; + ]]> + + + + + + + + + 0 THEN '1' ELSE '0' END AS une_ecriture + FROM prod_sigems2.ECRIT; + + DROP TABLE IF EXISTS w_JNAL; + CREATE TEMP TABLE w_JNAL AS + SELECT * + FROM prod_sigems2.JNAL + WHERE JNAL.TYP IN ('A') OR JNAL.CODEJ = 'VENT'; + + CREATE INDEX w_JNAL_i1 + ON w_JNAL + USING btree + (CODEJ); + + DROP TABLE IF EXISTS w_ECRIT_comptes_clients; + CREATE TEMP TABLE w_ECRIT_comptes_clients AS + SELECT + NUM AS ECR_CPTE + FROM prod_sigems2.COMPTE + WHERE + TYP = 'C' AND + NUM NOT IN (SELECT COD_PRA FROM prod_sigems2.praticien) AND + NUM NOT IN (SELECT CO2_PRA FROM prod_sigems2.praticien) + GROUP BY 1; + + CREATE INDEX w_ECRIT_comptes_clients_i1 + ON w_ECRIT_comptes_clients + USING btree + (ECR_CPTE); + + + DROP TABLE IF EXISTS w_factures_comptables; + + CREATE TEMP TABLE w_factures_comptables AS + SELECT + 0 AS facture_id, + CASE WHEN SERI IS NOT NULL THEN ANNEE || to_char(DOS_ECRIT.CODE,'FM900000') || '.' || to_char(INDICE,'FM9999900') ELSE NULL END AS no_facture, + date_trunc('month', ECR_DATE) + interval '1 month' - interval '1 day' AS date_comptable, + SUM(CASE WHEN ECR_JNAL = 'VENT' THEN ECR_DEBIT - ECR_CREDIT ELSE 0 END) AS montant_ventes_c, + SUM(CASE WHEN t_divers.valeur IS DISTINCT FROM '1' AND ECR_JNAL <> 'VENT' THEN ECR_CREDIT - ECR_DEBIT ELSE 0 END) AS montant_reglements_c, + 0::numeric AS montant_ventes_h, + 0::numeric AS montant_reglements_h + FROM prod_sigems2.ECRIT + JOIN w_JNAL ON ECR_JNAL = w_JNAL.CODEJ + JOIN w_ECRIT_comptes_clients ON ECRIT.ECR_CPTE = w_ECRIT_comptes_clients.ECR_CPTE + LEFT JOIN prod_sigems2.DOS_ECRIT ON SERI = ECR_NUM + LEFT JOIN activite.t_divers ON t_divers.code = 'CHIFERRREG' + WHERE + ECR_PLAN <> 'G' AND + ECR_PLAN <> 'H' AND + ECR_ANNUL <> 'S' AND + ECR_DATE >= '[ENV_ADM_ANNEEDEBUT]0101' AND + ECRIT.ECR_CPTE <> 'NOEMIE' AND + ECRIT.ECR_CPTE <> 'ANCIEN' AND + ECRIT.ECR_CPTE <> 'ACOMPT' AND + ECRIT.ECR_CPTE NOT LIKE 'ECART%' AND + ECRIT.ECR_CPTE NOT LIKE 'ACPT%' AND + ECRIT.ECR_CPTE <> '411FTN' + GROUP BY 1,2,3; + -- parametrer liste CPTE a exclure + + INSERT INTO w_factures_comptables + SELECT + 0::bigint AS facture_id, + ANN_DOS2 || to_char(COD_DOS2,'FM900000') || '.' || to_char(IND_DOS2,'FM9999900') AS no_facture, + date_trunc('month',DFA_DOS2) + interval '1 month' - interval '1 day' AS date_comptable, + SUM(SJ1_DOS2 + SJ2_DOS2 + SJ3_DOS2) AS montant_ventes_c, + 0::numeric AS montant_reglements_c, + 0::numeric AS montant_ventes_h, + 0::numeric AS montant_reglements_h + FROM prod_sigems2.DOS2 + JOIN w_ecrit_une ON une_ecriture = '0' + LEFT JOIN activite[PX].p_sejours ON ANN_DOS2 || to_char(COD_DOS2,'FM900000') = p_sejours.no_sejour + WHERE DFA_DOS2 IS NOT NULL AND ETA_DOS2 >= 3 AND DFA_DOS2 >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1,2,3; + + INSERT INTO w_factures_comptables + SELECT + 0::bigint AS facture_id, + ANN_DOS2 || to_char(COD_DOS2,'FM900000') || '.' || to_char(IND_DOS2,'FM9999900') AS no_facture, + date_trunc('month',DFA_DOS2) + interval '1 month' - interval '1 day' AS date_comptable, + SUM(CASE WHEN est_budget_global = '1' THEN HO1_DOS2 + HO2_DOS2 + HO3_DOS2 ELSE 0 END) AS montant_ventes_c, + 0::numeric AS montant_reglements_c, + SUM(CASE WHEN est_budget_global IS DISTINCT FROM '1' THEN HO1_DOS2 + HO2_DOS2 + HO3_DOS2 ELSE 0 END) AS montant_ventes_h, + 0::numeric AS montant_reglements_h + FROM prod_sigems2.DOS2 + LEFT JOIN activite[PX].p_sejours ON ANN_DOS2 || to_char(COD_DOS2,'FM900000') = p_sejours.no_sejour + WHERE DFA_DOS2 IS NOT NULL AND ETA_DOS2 >= 3 AND DFA_DOS2 >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1,2,3; + + INSERT INTO w_factures_comptables + SELECT + 0::bigint AS facture_id, + ANN_LCL || to_char(COD_LCL ,'FM900000') || '.' || to_char(IND_LCL ,'FM9999900') AS no_facture, + date_trunc('month', DAT_REG) + interval '1 month' - interval '1 day' AS date_comptable, + 0::numeric AS montant_ventes_c, + SUM(MONT) AS montant_reglements_c, + 0::numeric AS montant_ventes_h, + 0::numeric AS montant_reglements_h + FROM w_REG4 + JOIN prod_sigems2.LIG_CLINI ON NUM_LCL = NUM_CLI + JOIN prod_sigems2.DOS2 ON ANN_LCL = ANN_DOS2 AND COD_LCL = COD_DOS2 AND IND_LCL = IND_DOS2 AND ETA_DOS2 >= 2 + JOIN activite.t_divers ON t_divers.code = 'CHIFERRREG' AND t_divers.code = 'CHIFERRREG' AND t_divers.valeur = '1' + LEFT JOIN activite[PX].p_sejours ON ANN_DOS2 || to_char(COD_DOS2,'FM900000') = p_sejours.no_sejour + WHERE DAT_REG >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1,2,3; + + + + INSERT INTO w_factures_comptables + SELECT + 0::bigint AS facture_id, + ANN_LHO || to_char(COD_LHO ,'FM900000') || '.' || to_char(IND_LHO ,'FM9999900') AS no_facture, + date_trunc('month', DAT_REG) + interval '1 month' - interval '1 day' AS date_comptable, + 0::numeric AS montant_ventes_c, + SUM(CASE WHEN est_budget_global = '1' THEN MON_REG3 ELSE 0 END) AS montant_reglements_c, + 0::numeric AS montant_ventes_h, + SUM(CASE WHEN est_budget_global IS DISTINCT FROM '1' THEN MON_REG3 ELSE 0 END) AS montant_reglements_h + FROM w_REG3 + JOIN prod_sigems2.LIG_HONOR ON NUM_LHO = LHO_REG3 + JOIN prod_sigems2.DOS2 ON ANN_LHO = ANN_DOS2 AND COD_LHO = COD_DOS2 AND IND_LHO = IND_DOS2 AND ETA_DOS2 >= 2 + LEFT JOIN activite[PX].p_sejours ON ANN_DOS2 || to_char(COD_DOS2,'FM900000') = p_sejours.no_sejour + WHERE DAT_REG >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1,2,3; + + + TRUNCATE activite[PX].p_chiffrier_comptable; + + INSERT INTO activite[PX].p_chiffrier_comptable( + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_solde_client_c, + montant_ventes_h, + montant_reglements_h, + montant_solde_client_h) + SELECT + date_comptable, + SUM(montant_ventes_c), + SUM(montant_reglements_c), + 0 AS montant_solde_client_c, + SUM(montant_ventes_h), + SUM(montant_reglements_h), + 0 AS montant_solde_client_h + FROM w_factures_comptables + WHERE date_comptable >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1; + + TRUNCATE activite[PX].p_factures_comptables; + + INSERT INTO activite[PX].p_factures_comptables( + facture_id, + no_facture, + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_ventes_h, + montant_reglements_h) + + SELECT + facture_id, + no_facture, + date_comptable, + SUM(montant_ventes_c), + SUM(montant_reglements_c), + SUM(montant_ventes_h), + SUM(montant_reglements_h) + FROM w_factures_comptables + WHERE no_facture IS NOT NULL AND + date_comptable >= '[ENV_ADM_ANNEEDEBUT]0101' + GROUP BY 1,2,3; + + + + ]]> + + + + + + + + + + + + + 'PA' AND CH1 <> '' + GROUP BY 1,2 + ORDER BY 1,2 + ) subview + GROUP BY 1 + HAVING count(*) > 1; + + CREATE INDEX w_services_type_exception_i1 + ON w_services_type_exception + USING btree + (SER); + + INSERT INTO w_services_type_exception + SELECT SER_SEJ AS SER, (MIN(Array[to_char(nb,'FM000000000'),CH1]))[2] AS CH1_exeption + FROM + ( + SELECT + SER_SEJ, CH1, count(*) AS nb + FROM prod_sigems2.SEJOUR + JOIN prod_sigems2.DOSSIER_Y ON SEJOUR.COD_SEJ = DOSSIER_Y.CODE AND + SEJOUR.ANN_SEJ = DOSSIER_Y.ANNEE + LEFT JOIN w_services_type_exception ON SER_SEJ = SER + WHERE ANN_SEJ <> 'PA' AND CH1 <> '' AND w_services_type_exception.SER IS NULL + GROUP BY 1,2 + ORDER BY 1,2 + ) subview + GROUP BY 1 + HAVING count(*) > 1; + + DROP TABLE IF EXISTS w_DOSSIER_CH1; + CREATE TEMP TABLE w_DOSSIER_CH1 AS + SELECT + ANN_DOS AS ANN_CH1, COD_DOS AS COD_CH1, SER_DOS AS SER_CH1, trim(SER_DOS) || (CASE WHEN CH1 = 'PSPH' THEN 'E' ELSE 'O' END) AS SER_CH1_NEW + FROM prod_sigems2.DOSSIER + JOIN prod_sigems2.DOSSIER_Y ON DOSSIER.COD_DOS = DOSSIER_Y.CODE AND + DOSSIER.ANN_DOS = DOSSIER_Y.ANNEE + JOIN w_services_type_exception ON SER_DOS = SER + WHERE ANN_DOS <> 'PA' AND CH1 = CH1_exeption + GROUP BY 1,2,3,4 + ORDER BY 1,2,3; + + CREATE INDEX w_DOSSIER_CH1_i1 + ON w_DOSSIER_CH1 + USING btree + (COD_CH1); + + INSERT INTO w_DOSSIER_CH1 + SELECT + ANN_SEJ AS ANN_CH1, COD_SEJ AS COD_CH1, SER_SEJ AS SER_CH1, trim(SER_SEJ) || (CASE WHEN CH1 = 'PSPH' THEN 'E' ELSE 'O' END) AS SER_CH1_NEW + FROM prod_sigems2.SEJOUR + JOIN prod_sigems2.DOSSIER_Y ON SEJOUR.COD_SEJ = DOSSIER_Y.CODE AND + SEJOUR.ANN_SEJ = DOSSIER_Y.ANNEE + JOIN w_services_type_exception ON SER_SEJ = SER + LEFT JOIN w_DOSSIER_CH1 ON SEJOUR.COD_SEJ = w_DOSSIER_CH1.COD_CH1 AND + SEJOUR.ANN_SEJ = w_DOSSIER_CH1.ANN_CH1 AND + SEJOUR.SER_SEJ = w_DOSSIER_CH1.SER_CH1 + WHERE ANN_SEJ <> 'PA' AND CH1 = CH1_exeption AND + w_DOSSIER_CH1.SER_CH1 IS NULL + GROUP BY 1,2,3,4 + ORDER BY 1,2,3; + + ALTER TABLE prod_sigems2.DOSSIER ALTER COLUMN SER_DOS TYPE text; + + UPDATE prod_sigems2.DOSSIER + SET SER_DOS = SER_CH1_NEW + FROM w_DOSSIER_CH1 + WHERE ANN_CH1 = ANN_DOS AND + COD_CH1 = COD_DOS AND + SER_CH1 = SER_DOS; + + ALTER TABLE prod_sigems2.SEJOUR ALTER COLUMN SER_SEJ TYPE text; + + UPDATE prod_sigems2.SEJOUR + SET SER_SEJ = SER_CH1_NEW + FROM w_DOSSIER_CH1 + WHERE ANN_CH1 = ANN_SEJ AND + COD_CH1 = COD_SEJ AND + SER_CH1 = SER_SEJ; + + ALTER TABLE prod_sigems2.LIG_CLINI ALTER COLUMN SER_LCL TYPE text; + + UPDATE prod_sigems2.LIG_CLINI + SET SER_LCL = SER_CH1_NEW + FROM w_DOSSIER_CH1 + WHERE ANN_CH1 = ANN_LCL AND + COD_CH1 = COD_LCL AND + SER_CH1 = SER_LCL; + + ALTER TABLE prod_sigems2.LIG_HONOR ALTER COLUMN SER_LHO TYPE text; + + UPDATE prod_sigems2.LIG_HONOR + SET SER_LHO = SER_CH1_NEW + FROM w_DOSSIER_CH1 + WHERE ANN_CH1 = ANN_LHO AND + COD_CH1 = COD_LHO AND + SER_CH1 = SER_LHO; + + ALTER TABLE prod_sigems2.SERVICE + ALTER COLUMN COD_SER TYPE text, + ALTER COLUMN NOM_SER TYPE text; + + INSERT INTO prod_sigems2.SERVICE (COD_SER, NOM_SER, DMT_SER) + SELECT trim(COD_SER) || (CASE WHEN CH1_exeption = 'PSPH' THEN 'E' ELSE 'O' END), + replace(replace(replace(NOM_SER,'ESPIC',''),'OQN',''),' ',' ') || (CASE WHEN CH1_exeption = 'PSPH' THEN ' ESPIC' ELSE ' OQN' END), + DMT_SER + FROM prod_sigems2.SERVICE + JOIN w_services_type_exception ON COD_SER = SER + WHERE (trim(COD_SER) || (CASE WHEN CH1_exeption = 'PSPH' THEN 'E' ELSE 'O' END)) NOT IN + (SELECT COD_SER FROM prod_sigems2.SERVICE); + + ALTER TABLE prod_sigems2.ANALYG ALTER COLUMN SER_ANA TYPE text; + + INSERT INTO prod_sigems2.ANALYG(PRD_ANA, SER_ANA, DMT_ANA, MDT_ANA, RIS_ANA, ISO_ANA, TAU_ANA, CPT_ANA) + SELECT ANALYG.PRD_ANA, COD_SER, ANALYG.DMT_ANA, ANALYG.MDT_ANA, ANALYG.RIS_ANA, ANALYG.ISO_ANA, ANALYG.TAU_ANA, ANALYG.CPT_ANA + FROM prod_sigems2.ANALYG + JOIN prod_sigems2.SERVICE ON SER_ANA = substr(COD_SER,1,4) AND + substr(COD_SER,5,1) IN ('E', 'O') + LEFT JOIN prod_sigems2.ANALYG ANALYG_deja ON + ANALYG.PRD_ANA = ANALYG_deja.PRD_ANA AND + COD_SER = ANALYG_deja.SER_ANA AND + ANALYG.DMT_ANA = ANALYG_deja.DMT_ANA AND + ANALYG.MDT_ANA = ANALYG_deja.MDT_ANA AND + ANALYG.RIS_ANA = ANALYG_deja.RIS_ANA AND + ANALYG.ISO_ANA = ANALYG_deja.ISO_ANA AND + ANALYG.TAU_ANA = ANALYG_deja.TAU_ANA AND + ANALYG.CPT_ANA = ANALYG_deja.CPT_ANA + WHERE ANALYG_deja.PRD_ANA IS NULL; + + + + ]]> + + + + + + + + ''::text + GROUP BY 1,2,3,4 + ORDER BY 1; + + INSERT INTO activite[PX].t_specialites_medecin(oid, code, code_original, texte, texte_court) + SELECT 0, '**', '0', 'Non saisie', 'Non saisie' + WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_specialites_medecin); + + INSERT INTO base.t_specialites_medecin(oid, code, code_original, texte, texte_court) + SELECT 0, '', '0', 'Non saisie', 'Non saisie' + WHERE 0 NOT IN (SELECT oid FROM base.t_specialites_medecin); + + + INSERT INTO base.t_medecins(oid, nom, prenom, numero_ordre, specialite_id ) + SELECT 0, 'Non renseigné', '', '', 0 WHERE 0 NOT IN (SELECT oid FROM base.t_medecins); + + INSERT INTO activite[PX].t_medecins_administratifs(oid, code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT 0, '0', '****', 'Non renseigné', '', 0, 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_medecins_administratifs); + + DROP TABLE IF EXISTS w_medecins; + CREATE TEMP TABLE w_medecins AS + SELECT + COD_PRA AS COD_PRA, + base.cti_soundex_nom(NOM_PRA) AS NOM_PRA_SOUNDEX, + base.cti_soundex_nom(PRE_PRA) AS PRE_PRA_SOUNDEX, + NOM_PRA, + PRE_PRA AS PRE_PRA, + SUBSTR(COALESCE(NID_PRA,''),1,9) AS NID_PRA, + CSP_PRA AS CSP_PRA, + COALESCE(t_medecins_administratifs.medecin_id,0) as medecin_id + FROM prod_sigems2.PRATICIEN + LEFT JOIN activite[PX].t_medecins_administratifs ON COD_PRA = t_medecins_administratifs.code_original; + + + + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.NOM_PRA, w_medecins.PRE_PRA, w_medecins.NID_PRA, 0 FROM + (SELECT SUBSTR(NOM_PRA_SOUNDEX, 1, 8) AS NOM_PRA_SOUNDEX, SUBSTR(PRE_PRA_SOUNDEX, 1, 8) AS PRE_PRA_SOUNDEX, NID_PRA, MIN(COD_PRA) AS COD_PRA + FROM w_medecins + GROUP BY 1,2,3) subview, w_medecins + WHERE w_medecins.COD_PRA = subview.COD_PRA + AND subview.NOM_PRA_SOUNDEX || ',' || subview.PRE_PRA_SOUNDEX || ',' || subview.NID_PRA NOT IN + (SELECT substr(base.cti_soundex_nom(nom),1,8) || ',' || substr(base.cti_soundex_nom(prenom),1,8) || ',' || numero_ordre FROM base.t_medecins); + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, specialite_id) + SELECT w_medecins.NOM_PRA, w_medecins.PRE_PRA, w_medecins.NID_PRA, 0 FROM + (SELECT NOM_PRA_SOUNDEX, PRE_PRA_SOUNDEX, MIN(COD_PRA) AS COD_PRA + FROM w_medecins + GROUP BY 1,2) subview, w_medecins + WHERE w_medecins.COD_PRA = subview.COD_PRA + AND subview.NOM_PRA_SOUNDEX || ',' || subview.PRE_PRA_SOUNDEX NOT IN + (SELECT base.cti_soundex_nom(nom) || ',' || base.cti_soundex_nom(prenom) FROM base.t_medecins); + + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT substr(base.cti_soundex_nom(nom),1,8) as nom , substr(base.cti_soundex_nom(prenom),1,8) as prenom, numero_ordre, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2,3) subview + WHERE SUBSTR(NOM_PRA_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(PRE_PRA_SOUNDEX, 1, 8) = subview.prenom + AND NID_PRA = subview.numero_ordre + AND w_medecins.medecin_id = 0; + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT base.cti_soundex_nom(nom) as nom , base.cti_soundex_nom(prenom) as prenom, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2) subview + WHERE SUBSTR(NOM_PRA_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(PRE_PRA_SOUNDEX, 1, 8) = subview.prenom + AND w_medecins.medecin_id = 0; + + INSERT INTO activite[PX].t_medecins_administratifs(code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT DISTINCT COD_PRA, COD_PRA, NOM_PRA, PRE_PRA, COALESCE(t_specialites_medecin.oid,0), medecin_id + FROM w_medecins + LEFT JOIN base.t_specialites_medecin ON CSP_PRA = t_specialites_medecin.code_original + WHERE COD_PRA NOT IN (SELECT code_original FROM activite[PX].t_medecins_administratifs); + + UPDATE activite[PX].t_medecins_administratifs + SET nom = NOM_PRA, + prenom = PRE_PRA, + specialite_id = COALESCE(t_specialites_medecin.oid,0), + medecin_id = w_medecins.medecin_id + FROM w_medecins LEFT JOIN base.t_specialites_medecin ON CSP_PRA = t_specialites_medecin.code_original + WHERE w_medecins.COD_PRA = t_medecins_administratifs.code_original + AND ( + t_medecins_administratifs.nom <> NOM_PRA OR + t_medecins_administratifs.prenom <> PRE_PRA OR + t_medecins_administratifs.specialite_id <> COALESCE(t_specialites_medecin.oid,0) OR + t_medecins_administratifs.medecin_id <> w_medecins.medecin_id + ); + + UPDATE base.t_medecins SET specialite_id = subview.specialite_id + FROM + (SELECT t_medecins.oid, MIN(t_medecins_administratifs.specialite_id) as specialite_id + FROM base.t_medecins, activite[PX].t_medecins_administratifs , base.t_specialites_medecin + WHERE t_medecins.oid = t_medecins_administratifs.medecin_id + AND t_medecins_administratifs.specialite_id = t_specialites_medecin.oid + GROUP BY t_medecins.oid) subview + WHERE t_medecins.oid = subview.oid AND t_medecins.oid <> 0 AND t_medecins.specialite_id = 0; + + + + ]]> + + + + COALESCE(t_modes_traitement.oid,0); + + DROP TABLE IF EXISTS w_SERVICE; + CREATE TEMP TABLE w_SERVICE AS + SELECT + SER_SEJ || '_' || COALESCE(MDT_REEL,MDT_DOS) AS COD_SER, + NOM_SER || ' (' || COALESCE(MDT_REEL,MDT_DOS) || ')' AS NOM_SER, + COALESCE(MDT_REEL,MDT_DOS) AS MDT_SER, + DMT_SER + FROM prod_sigems2.DOSSIER + JOIN prod_sigems2.SEJOUR ON ANN_SEJ = ANN_DOS AND COD_SEJ = COD_DOS + JOIN prod_sigems2.SERVICE ON SER_SEJ = COD_SER + LEFT JOIN prod_sigems2.DOSSIER_MDT ON DOSSIER.ANN_DOS = DOSSIER_MDT.ANN_DOS AND DOSSIER.COD_DOS = DOSSIER_MDT.COD_DOS + GROUP BY 1,2,3,4; + + + INSERT INTO activite[PX].t_services_facturation(code_original, code, texte, texte_court, nb_lits, type_t2a) + SELECT COD_SER, COD_SER, NOM_SER, NOM_SER, 0 AS nb_lits, '0' AS type_t2a + FROM w_SERVICE + WHERE COD_SER NOT IN (SELECT code_original FROM activite[PX].t_services_facturation) + ORDER BY COD_SER; + + UPDATE activite[PX].t_services_facturation SET + texte = NOM_SER, + texte_court = CASE WHEN texte_court = texte THEN NOM_SER ELSE texte_court END + FROM w_SERVICE + WHERE COD_SER = code_original AND + ( + texte IS DISTINCT FROM NOM_SER OR + texte_court IS DISTINCT FROM CASE WHEN texte_court = texte THEN NOM_SER ELSE texte_court END + ); + + + UPDATE activite[PX].t_services_facturation + SET mode_traitement_id = COALESCE(t_modes_traitement.oid,0) + FROM w_SERVICE + LEFT JOIN base.t_modes_traitement ON MDT_SER = t_modes_traitement.code + WHERE t_services_facturation.code_original = COD_SER AND + COALESCE(mode_traitement_id,0) = 0 AND + COALESCE(mode_traitement_id,0) <> COALESCE(t_modes_traitement.oid,0); + + UPDATE activite[PX].t_services_facturation + SET dmt_id = COALESCE(t_dmt.oid,0) + FROM w_SERVICE + LEFT JOIN base.t_dmt ON DMT_SER = t_dmt.code + WHERE t_services_facturation.code_original = COD_SER AND + COALESCE(dmt_id,0) = 0 AND + COALESCE(dmt_id,0) <> COALESCE(t_dmt.oid,0); + + -- Unités fonctionnelles + + INSERT INTO activite[PX].t_unites_fonctionnelles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_fonctionnelles); + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT COD_SER, COD_SER, NOM_SER, NOM_SER + FROM prod_sigems2.SERVICE + WHERE COD_SER NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles) + ORDER BY COD_SER; + + UPDATE activite[PX].t_unites_fonctionnelles SET + texte = NOM_SER, + texte_court = CASE WHEN texte_court = texte THEN NOM_SER ELSE texte_court END + FROM prod_sigems2.SERVICE + WHERE COD_SER = code_original AND + ( + texte IS DISTINCT FROM NOM_SER OR + texte_court IS DISTINCT FROM CASE WHEN texte_court = texte THEN NOM_SER ELSE texte_court END + ); + + -- Unités médicales + + INSERT INTO activite[PX].t_unites_medicales(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_unites_medicales); + + INSERT INTO activite[PX].t_unites_medicales(code_original, code, texte, texte_court) + SELECT CODE, CODE, LIB, LIB + FROM prod_sigems2.UNITE_MEDICALE + WHERE CODE NOT IN (SELECT code_original FROM activite[PX].t_unites_medicales) + ORDER BY CODE; + + + -- Activités + + INSERT INTO activite[PX].t_activites(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_activites); + + + + -- Etages et lits + + DROP TABLE IF EXISTS w_CHAMBRE; + CREATE TEMP TABLE W_CHAMBRE AS + SELECT COD_CHA, NOM_CHA, TYP_CHA, NBL_CHA, SER_CHA, CHAMBRE + FROM prod_sigems2.CHAMBRE + WHERE COD_CHA <> '' AND + COD_CHA <> '0'; + + CREATE INDEX w_CHAMBRE_i1 + ON w_CHAMBRE + USING btree + (COD_CHA); + + UPDATE w_CHAMBRE + SET SER_CHA = COD_CHA + WHERE SER_CHA = ''; + + + + INSERT INTO w_CHAMBRE + SELECT NCH_DOS, NCH_DOS, '', 0, MAX(SECT_ENTREE), NCH_DOS + FROM prod_sigems2.DOSSIER + JOIN prod_sigems2.DOSSIER_SUPPL ON DOSSIER_SUPPL.COD_DOS = DOSSIER.COD_DOS AND + DOSSIER_SUPPL.ANN_DOS = DOSSIER.ANN_DOS + WHERE SECT_ENTREE <> '' AND + NCH_DOS NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_DOS <> '' AND + NCH_DOS <> '0' + GROUP BY 1 + ORDER BY 1; + + INSERT INTO w_CHAMBRE + SELECT NCH_SEJ, NCH_SEJ, '', 0, MAX(SECT_ENTREE), NCH_SEJ + FROM prod_sigems2.SEJOUR + JOIN prod_sigems2.DOSSIER_SUPPL ON DOSSIER_SUPPL.COD_DOS = SEJOUR.COD_SEJ AND + DOSSIER_SUPPL.ANN_DOS = SEJOUR.ANN_SEJ + WHERE SECT_ENTREE <> '' AND + NCH_SEJ NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_SEJ <> '' AND + NCH_SEJ <> '0' + GROUP BY 1 + ORDER BY 1; + + + INSERT INTO w_CHAMBRE + SELECT NCH_DOS, NCH_DOS, MAX(TYP_CHA), MAX(NBL_CHA), MAX(SER_CHA), MAX(COD_CHA) + FROM prod_sigems2.DOSSIER + JOIN w_CHAMBRE ON SUBSTR(NCH_DOS,1,3) = COD_CHA + WHERE LENGTH(NCH_DOS) > 3 AND LENGTH(COD_CHA) = 3 AND + NCH_DOS NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_DOS <> '' AND + NCH_DOS <> '0' + GROUP BY 1 + ORDER BY 1; + + + INSERT INTO w_CHAMBRE + SELECT NCH_SEJ, NCH_SEJ, MAX(TYP_CHA), MAX(NBL_CHA), MAX(SER_CHA), MAX(COD_CHA) + FROM prod_sigems2.SEJOUR + JOIN w_CHAMBRE ON SUBSTR(NCH_SEJ,1,3) = COD_CHA + WHERE LENGTH(NCH_SEJ) > 3 AND LENGTH(COD_CHA) = 3 AND + NCH_SEJ NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_SEJ <> '' AND + NCH_SEJ <> '0' + GROUP BY 1 + ORDER BY 1; + + + INSERT INTO w_CHAMBRE + SELECT NCH_DOS, NCH_DOS, MAX(TYP_CHA), MAX(NBL_CHA), MAX(SER_CHA), MAX(COD_CHA) + FROM prod_sigems2.DOSSIER + JOIN w_CHAMBRE ON SUBSTR(NCH_DOS,1,3) = SUBSTR(COD_CHA,1,3) + WHERE NCH_DOS NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_DOS <> '' AND + NCH_DOS <> '0' + GROUP BY 1 + ORDER BY 1; + + + INSERT INTO w_CHAMBRE + SELECT NCH_DOS, NCH_DOS, MAX(TYP_CHA), MAX(NBL_CHA), MAX(SER_CHA), MAX(COD_CHA) + FROM prod_sigems2.DOSSIER + JOIN w_CHAMBRE ON SUBSTR(NCH_DOS,1,2) = SUBSTR(COD_CHA,1,2) + WHERE NCH_DOS NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_DOS <> '' AND + NCH_DOS <> '0' + GROUP BY 1 + ORDER BY 1; + + + INSERT INTO w_CHAMBRE + SELECT NCH_DOS, NCH_DOS, MAX(TYP_CHA), MAX(NBL_CHA), MAX(SER_CHA), MAX(COD_CHA) + FROM prod_sigems2.DOSSIER + JOIN w_CHAMBRE ON SUBSTR(NCH_DOS,1,1) = SUBSTR(COD_CHA,1,1) + WHERE NCH_DOS NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_DOS <> '' AND + NCH_DOS <> '0' + GROUP BY 1 + ORDER BY 1; + + + + INSERT INTO w_CHAMBRE + SELECT NCH_SEJ, NCH_SEJ, MAX(TYP_CHA), MAX(NBL_CHA), MAX(SER_CHA), MAX(COD_CHA) + FROM prod_sigems2.SEJOUR + JOIN w_CHAMBRE ON SUBSTR(NCH_SEJ,1,3) = SUBSTR(COD_CHA,1,3) + WHERE NCH_SEJ NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_SEJ <> '' AND + NCH_SEJ <> '0' + GROUP BY 1 + ORDER BY 1; + + + INSERT INTO w_CHAMBRE + SELECT NCH_SEJ, NCH_SEJ, MAX(TYP_CHA), MAX(NBL_CHA), MAX(SER_CHA), MAX(COD_CHA) + FROM prod_sigems2.SEJOUR + JOIN w_CHAMBRE ON SUBSTR(NCH_SEJ,1,2) = SUBSTR(COD_CHA,1,2) + WHERE NCH_SEJ NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_SEJ <> '' AND + NCH_SEJ <> '0' + GROUP BY 1 + ORDER BY 1; + + + INSERT INTO w_CHAMBRE + SELECT NCH_SEJ, NCH_SEJ, MAX(TYP_CHA), MAX(NBL_CHA), MAX(SER_CHA), MAX(COD_CHA) + FROM prod_sigems2.SEJOUR + JOIN w_CHAMBRE ON SUBSTR(NCH_SEJ,1,1) = SUBSTR(COD_CHA,1,1) + WHERE NCH_SEJ NOT IN (SELECT COD_CHA FROM w_CHAMBRE) AND + NCH_SEJ <> '' AND + NCH_SEJ <> '0' + GROUP BY 1 + ORDER BY 1; + + + + + INSERT INTO activite[PX].t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_etages); + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT SER_CHA, SER_CHA, SER_CHA, SER_CHA, 0 AS nb_lits + FROM w_CHAMBRE + WHERE SER_CHA <> '' AND SER_CHA NOT IN (SELECT code_original FROM activite[PX].t_etages WHERE code_original IS NOT NULL) + GROUP BY SER_CHA + ORDER BY SER_CHA; + + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court, nb_lits) + SELECT COD_CHA, COD_CHA, MAX(NOM_CHA), MAX(NOM_CHA), 0 AS nb_lits + FROM w_CHAMBRE + WHERE COD_CHA <> '' AND SER_CHA = '' AND COD_CHA NOT IN (SELECT code_original FROM activite[PX].t_etages WHERE code_original IS NOT NULL) + GROUP BY COD_CHA + ORDER BY COD_CHA; + + + INSERT INTO activite[PX].t_lits(oid, code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0, 'N' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_lits); + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT SER_CHA || '|' || COD_CHA, COD_CHA, NOM_CHA, NOM_CHA, + t_etages.oid, CASE WHEN TYP_CHA LIKE 'P%' THEN 'O' ELSE 'N' END + FROM w_CHAMBRE + JOIN activite[PX].t_etages ON SER_CHA = t_etages.code_original + WHERE COD_CHA <> '' AND SER_CHA || '|' || COD_CHA NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL) + ORDER BY 1; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT COD_CHA || '|' || COD_CHA, COD_CHA, NOM_CHA, NOM_CHA, + t_etages.oid, CASE WHEN TYP_CHA LIKE 'P%' THEN 'O' ELSE 'N' END + FROM w_CHAMBRE + JOIN activite[PX].t_etages ON COD_CHA = t_etages.code_original + WHERE COD_CHA <> '' AND SER_CHA = '' AND COD_CHA || '|' || COD_CHA NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL) + ORDER BY 1; + + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT code_original || '|0' , '', 'Non renseigné', 'Non renseigné', oid, 'O' + FROM activite[PX].t_etages + WHERE oid > 0 AND + code_original || '|0' NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL ); + + + + ]]> + + + + 0 + AND code_original NOT LIKE '*CTI%' + AND code_original IS DISTINCT FROM code + ; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT ACT_PRC, ACT_PRC, MAX(ACT_PRC), MAX(ACT_PRC) + FROM prod_sigems2.PROD_CLINI + WHERE ACT_PRC NOT IN (SELECT code_original FROM activite.t_prestations) + GROUP BY 1,2 + ORDER BY ACT_PRC; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT CASE WHEN ACT_PRH <> '' THEN ACT_PRH ELSE COD_PRH END , + CASE WHEN ACT_PRH <> '' THEN ACT_PRH ELSE COD_PRH END, + MAX(CASE WHEN ACT_PRH <> '' THEN ACT_PRH ELSE COD_PRH END), + MAX(CASE WHEN ACT_PRH <> '' THEN ACT_PRH ELSE COD_PRH END) + FROM prod_sigems2.PROD_HONOR + WHERE CASE WHEN ACT_PRH <> '' THEN ACT_PRH ELSE COD_PRH END NOT IN (SELECT code_original FROM activite.t_prestations) + GROUP BY 1,2 + ORDER BY 1; + + + + INSERT INTO activite[PX].t_compte(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_compte); + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT AFA_PRC, AFA_PRC, MAX(INT1), MAX(INT1) + FROM prod_sigems2.PROD_CLINI + JOIN prod_sigems2.COMPTE ON AFA_PRC = NUM + WHERE AFA_PRC <> '' AND AFA_PRC NOT IN (SELECT code FROM activite[PX].t_compte) + GROUP BY 1 + ORDER BY 1; + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT CPT_ANA, CPT_ANA, MAX(INT1), MAX(INT1) + FROM prod_sigems2.ANALYG + JOIN prod_sigems2.COMPTE ON CPT_ANA = num AND ANALYG.TYP_ANA = COMPTE.TYP + WHERE CPT_ANA NOT IN (SELECT code FROM activite[PX].t_compte) + GROUP BY 1 + ORDER BY 1; + + -- Codes risques + INSERT INTO activite[PX].t_risque(code, texte) + SELECT + COD_RIS, LIB_RIS + FROM + prod_sigems.RISQUE + LEFT JOIN activite[PX].t_risque ON t_risque.code = COD_RIS + WHERE + t_risque.code IS NULL; + + ]]> + + + + + + + + + = '[ENV_ADM_ANNEEDEBUT]0101'; + + + ]]> + + + + + + + + '2099-12-31'; + + + ]]> + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.date_groupage, + p_sejours.ghs_id, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour, + + 0::numeric AS delai_groupage, + 0::numeric AS delai_facture, + 0::numeric AS delai_expedition, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_solde_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_solde_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_solde_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_22 + + FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY 1,2,3,4,5; + + + UPDATE w_sejours_total + SET date_groupage = date_facture + WHERE (date_groupage IS null OR date_groupage = '20991231' OR date_groupage = '00010101') AND + date_facture <> '2099-12-31'; + + + UPDATE w_sejours_total SET + date_groupage = CASE WHEN date_groupage > '00010101' THEN date_groupage ELSE '20991231' END, + date_facture = CASE WHEN date_facture> '00010101' THEN date_facture ELSE '20991231' END, + date_expedition = CASE WHEN date_expedition > '00010101' THEN date_expedition ELSE '20991231' END, + date_solde = CASE WHEN date_solde > '00010101' THEN date_solde ELSE '20991231' END, + date_expedition_0 = CASE WHEN date_expedition_0 > '00010101' THEN date_expedition_0 ELSE '20991231' END, + date_solde_0 = CASE WHEN date_solde_0 > '00010101' THEN date_solde_0 ELSE '20991231' END, + date_expedition_1 = CASE WHEN date_expedition_1 > '00010101' THEN date_expedition_1 ELSE '20991231' END, + date_solde_1 = CASE WHEN date_solde_1 > '00010101' THEN date_solde_1 ELSE '20991231' END, + date_expedition_2 = CASE WHEN date_expedition_2 > '00010101' THEN date_expedition_2 ELSE '20991231' END, + date_solde_2 = CASE WHEN date_solde_2 > '00010101' THEN date_solde_2 ELSE '20991231' END, + date_expedition_22 = CASE WHEN date_expedition_22 > '00010101' THEN date_expedition_22 ELSE '20991231' END, + date_solde_22 = CASE WHEN date_solde_22 > '00010101' THEN date_solde_22 ELSE '20991231' END; + + + UPDATE w_sejours_total SET + delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END, + delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END, + delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END, + delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END, + delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END, + delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END, + delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END, + delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END, + delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END, + delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END, + delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END, + delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END; + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = w_sejours_total.date_expedition_0, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = w_sejours_total.date_expedition_1, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = w_sejours_total.date_expedition_2, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = w_sejours_total.date_expedition_22, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour, + + + delai_groupage = w_sejours_total.delai_groupage, + delai_facture = w_sejours_total.delai_facture, + delai_expedition = w_sejours_total.delai_expedition, + delai_solde = w_sejours_total.delai_solde, + delai_expedition_0 = w_sejours_total.delai_expedition_0, + delai_solde_0 = w_sejours_total.delai_solde_0, + delai_expedition_1 = w_sejours_total.delai_expedition_1, + delai_solde_1 = w_sejours_total.delai_solde_1, + delai_expedition_2 = w_sejours_total.delai_expedition_2, + delai_solde_2 = w_sejours_total.delai_solde_2, + delai_expedition_22 = w_sejours_total.delai_expedition_22, + delai_solde_22 = w_sejours_total.delai_solde_22 + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM w_sejours_total.date_expedition_0 OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM w_sejours_total.date_expedition_1 OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM w_sejours_total.date_expedition_2 OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM w_sejours_total.date_expedition_22 OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour OR + + p_sejours.delai_groupage IS DISTINCT FROM w_sejours_total.delai_groupage OR + p_sejours.delai_facture IS DISTINCT FROM w_sejours_total.delai_facture OR + p_sejours.delai_expedition IS DISTINCT FROM w_sejours_total.delai_expedition OR + p_sejours.delai_solde IS DISTINCT FROM w_sejours_total.delai_solde OR + p_sejours.delai_expedition_0 IS DISTINCT FROM w_sejours_total.delai_expedition_0 OR + p_sejours.delai_solde_0 IS DISTINCT FROM w_sejours_total.delai_solde_0 OR + p_sejours.delai_expedition_1 IS DISTINCT FROM w_sejours_total.delai_expedition_1 OR + p_sejours.delai_solde_1 IS DISTINCT FROM w_sejours_total.delai_solde_1 OR + p_sejours.delai_expedition_2 IS DISTINCT FROM w_sejours_total.delai_expedition_2 OR + p_sejours.delai_solde_2 IS DISTINCT FROM w_sejours_total.delai_solde_2 OR + p_sejours.delai_expedition_22 IS DISTINCT FROM w_sejours_total.delai_expedition_22 OR + p_sejours.delai_solde_22 IS DISTINCT FROM w_sejours_total.delai_solde_22 + + ); + + + ]]> + + + + + + + + + + + + diff --git a/import_activite/iCTI_import_activite_WEB100T.XML b/import_activite/iCTI_import_activite_WEB100T.XML new file mode 100644 index 0000000..e160b49 --- /dev/null +++ b/import_activite/iCTI_import_activite_WEB100T.XML @@ -0,0 +1,9975 @@ + + + + + + + + + + + + '1' + WHERE MVT_TYPE IN (1,4) AND + LIT_OID <> 0 AND + LIT_OID = MVT_LIT AND + CHA_UF <> MVT_UF_GEO; + + -- Unité de soin non renseignée -> attribution de l'unité géo + UPDATE w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + SET MVT_UF_SOIN = MVT_UF_GEO + WHERE MVT_UF_SOIN = 0 AND MVT_UF_GEO <> 0 AND MVT_TYPE IN (1,4); + + -- Unité geo non renseignée -> attribution de l'unité de soin + UPDATE w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + SET MVT_UF_GEO = MVT_UF_SOIN + WHERE MVT_UF_SOIN <> 0 AND MVT_UF_GEO = 0 AND MVT_TYPE IN (1,4); + + -- Pointage de mouvements en double + DROP TABLE IF EXISTS w_REGUL_MOUVEMENTS_double; + CREATE TEMP TABLE w_REGUL_MOUVEMENTS_double AS + SELECT MVT_SEJ_OID, MVT_DATE, + (MAX(ARRAY[MVT_INDEX,MVT_RESP]))[2] AS MVT_RESP, + (MAX(ARRAY[MVT_INDEX,MVT_UF_SOIN]))[2] AS MVT_UF_SOIN, + (MAX(ARRAY[MVT_INDEX,MVT_UF_GEO]))[2] AS MVT_UF_GEO, + (MAX(ARRAY[MVT_INDEX,MVT_CHAMBRE]))[2] AS MVT_CHAMBRE, + (MAX(ARRAY[MVT_INDEX,MVT_LIT]))[2] AS MVT_LIT, + MIN(MVT_OID) AS MVT_OID + FROM w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + WHERE MVT_TYPE IN (1,4) + GROUP BY 1,2 + HAVING count(*) > 1; + + UPDATE w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS SET + MVT_RESP = w_REGUL_MOUVEMENTS_double.MVT_RESP, + MVT_UF_SOIN = w_REGUL_MOUVEMENTS_double.MVT_UF_SOIN, + MVT_UF_GEO = w_REGUL_MOUVEMENTS_double.MVT_UF_GEO, + MVT_CHAMBRE = w_REGUL_MOUVEMENTS_double.MVT_CHAMBRE, + MVT_LIT = w_REGUL_MOUVEMENTS_double.MVT_LIT + FROM w_REGUL_MOUVEMENTS_double + WHERE REGUL_MOUVEMENTS.MVT_SEJ_OID = w_REGUL_MOUVEMENTS_double.MVT_SEJ_OID AND + REGUL_MOUVEMENTS.MVT_DATE = w_REGUL_MOUVEMENTS_double.MVT_DATE AND + REGUL_MOUVEMENTS.MVT_OID = w_REGUL_MOUVEMENTS_double.MVT_OID AND + REGUL_MOUVEMENTS.MVT_TYPE IN (1,4); + + UPDATE w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS SET + MVT_TYPE = 49 + FROM w_REGUL_MOUVEMENTS_double + WHERE REGUL_MOUVEMENTS.MVT_SEJ_OID = w_REGUL_MOUVEMENTS_double.MVT_SEJ_OID AND + REGUL_MOUVEMENTS.MVT_DATE = w_REGUL_MOUVEMENTS_double.MVT_DATE AND + REGUL_MOUVEMENTS.MVT_OID <> w_REGUL_MOUVEMENTS_double.MVT_OID AND + REGUL_MOUVEMENTS.MVT_TYPE IN (1,4); + + -- UF selon mode de calcul PMSI (Cas des retrocessions,FSD,FFM) + DROP TABLE IF EXISTS w_DIM_MODE_FACT_default + ; + CREATE TEMP TABLE w_DIM_MODE_FACT_default AS + SELECT DA_DIM_MODE_FACT, + MAX(NMCL_UNITEFONCTIONNELLE.OID::bigint) AS UF_OID, + count(*) + FROM prod_web100t.NMCL_UNITEFONCTIONNELLE + JOIN w_SGN_NMCL_DATA ON ND_INVARIANT_OID = OID + JOIN prod_web100t.DAT_DA ON + DA_DIM_MODE_FACT IN ('FSE','FSD','FFM','RETRO') AND + DA_DIM_MODE_FACT = ND_CODE + WHERE NMCL_IDENT = 'UNITEFONCTIONNELLE' + GROUP BY 1 + ; + + ANALYSE w_DIM_MODE_FACT_default + ; + + UPDATE w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + SET MVT_UF_SOIN = UF_OID + FROM prod_web100t.DAT_SEJOUR + JOIN prod_web100t.DAT_DA ON SEJ_DA = DA_OID + JOIN w_DIM_MODE_FACT_default ON w_DIM_MODE_FACT_default.DA_DIM_MODE_FACT = DAT_DA.DA_DIM_MODE_FACT + WHERE PHASE_OID = MVT_SEJ_OID AND + MVT_TYPE IN (1,2,4) AND + MVT_UF_SOIN = 0 + ; + + UPDATE w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + SET MVT_UF_SOIN = UF_OID + FROM prod_web100t.DAT_SEJOUR + JOIN prod_web100t.DAT_DA ON SEJ_DA = DA_OID + JOIN w_DIM_MODE_FACT_default ON w_DIM_MODE_FACT_default.DA_DIM_MODE_FACT = DAT_DA.DA_SUGG_MODE_FACT + WHERE PHASE_OID = MVT_SEJ_OID AND + MVT_TYPE IN (1,2,4) AND + MVT_UF_SOIN = 0 + ; + + -- Statut séjour présent alors que facturé depuis plus de 6 mois + UPDATE prod_web100T.DAT_DA + SET DA_STATUT = '3' + WHERE DA_DATE_FIN <= now() - interval '2 month' AND + DA_DATE_FIN >= DA_DATE_DEBUT AND + DA_STATUT = 2 AND + DA_DIM_VALID <= now() - interval '2 month' AND + DA_OID = ANY (ARRAY(SELECT DISTINCT FACT_DA FROM prod_web100T.FAC_FACTURE WHERE FACT_DATE <= now() - interval '2 month')::double precision[]) + ; + + -- Sejour ambulatoire présent à convertir en sorti + UPDATE PROD_WEB100T.DAT_DA SET + DA_STATUT = CASE WHEN DA_STATUT < 3 THEN 3 ELSE DA_STATUT END, + DA_DATE_FIN = DA_DATE_DEBUT, + DA_HEURE_FIN = LEAST(DA_HEURE_DEBUT + 0.2,0.9) + WHERE + DA_STATUT >= 2 AND + DA_CLASSE IN (2,3) AND + DA_DATE_FIN IS NULL + ; + + -- Forcage code prestation + UPDATE prod_web100t.FAC_FACT_LIGNE_TIER SET + FLT_CODE_PREST = t_prestations.code + FROM activite[PX].t_rubriques_facturation + JOIN activite.t_prestations ON prestation_forcee_id = t_prestations.oid AND prestation_forcee_id <> 0 + WHERE FLT_ARTICLE::text = t_rubriques_facturation.code_original + ; + + + -- Placer l'heure dans les lignes d'actes + -- Parametre car trop long sur certains sites (CCN) + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'WEB100T_INITHEUREACTE', + 'Recuperation heures des actes', + '1', + '1=Les heures des actes son recuperees' + WHERE 'WEB100T_INITHEUREACTE' NOT IN (SELECT code FROM activite.t_divers); + ; + + -- en attendant de trouver la bonnjointure + DROP TABLE IF EXISTS w_heures_actes; + CREATE TEMP TABLE w_heures_actes AS + SELECT PREST_DA, + PREST_ARTICLE, + ART_CODE, + PREST_EXECUTANT, + DATE(PREST_DATE_DEBUT) AS PREST_DATE, + MAX(PREST_DATE_DEBUT-date(PREST_DATE_DEBUT)) AS PREST_HEURE, + count(DISTINCT date_part('hour',PREST_DATE_DEBUT)) AS nb_heure + FROM prod_web100t.DAT_PRESTATIONS_GAP + JOIN activite.t_divers ON t_divers.code = 'WEB100T_INITHEUREACTE' + JOIN prod_web100t.ART_ARTICLES ON PREST_ARTICLE = ART_OID + WHERE + t_divers.valeur = '1' AND + PREST_DELETED <> 1 AND + PREST_EXECUTANT > 0 AND + PREST_DATE_DEBUT <> date(PREST_DATE_DEBUT) + GROUP BY 1,2,3,4,5 + ; + + ANALYSE w_heures_actes + ; + + UPDATE prod_web100t.FAC_FACT_LIGNE_TIER + SET FLT_DATE_DEBUT = date_trunc('day',FLT_DATE_DEBUT) + PREST_HEURE + FROM prod_web100t.FAC_FACTURE, + w_heures_actes + WHERE FLT_FACTURE = FAC_FACTURE.FACT_OID AND + FACT_DA = PREST_DA AND + FLT_ARTICLE = PREST_ARTICLE AND + date(FLT_DATE_DEBUT) = PREST_DATE AND + FLT_INTERVENANT = PREST_EXECUTANT + ; + + -- Date de règlement selon ecritures comptable + UPDATE prod_web100t.FAC_REGLEMENTS + SET FR_DATE_ENC = ECR_DATE + FROM prod_web100t.FAC_RGLMT_DETAILS + JOIN w_CPT_ECRITURE_source ON RD_COMPTA = ECR_OPERATION + WHERE FR_OID = RD_REGLEMENT AND + FR_DATE_ENC IS NULL AND + FR_DATE_DEPOT_GUESS IS NOT NULL AND + ECR_REF_TYPE = 'FACTURE' AND + ECR_TYPE = 'CLIENT' + ; + + DROP TABLE IF EXISTS w_max_ECR_UPDATED; + CREATE TEMP TABLE w_max_ECR_UPDATED AS + SELECT MAX(ECR_UPDATED) AS ECR_UPDATED_MAX FROM w_CPT_ECRITURE_source + ; + + DROP TABLE IF EXISTS w_CPT_ECRITURE_source; + + -- Pour identification de la deuxième mutuelle + UPDATE prod_web100t.FAC_FACT_TIER + SET FT_TYPE_TIER = 'AMD' + FROM + ( + SELECT FT_FACTURE, + (MIN(ARRAY[abs(ft_total_ets+ft_total_ho),FT_ORGANISME]))[2]::numeric AS FT_ORGANISME_AMD + FROM prod_web100t.FAC_FACT_TIER + WHERE FT_TYPE_TIER = 'AMC' + GROUP BY 1 + HAVING count(DISTINCT FT_ORGANISME) > 1 + ) subview + WHERE FAC_FACT_TIER.FT_FACTURE = subview.FT_FACTURE AND + FAC_FACT_TIER.FT_ORGANISME = subview.FT_ORGANISME_AMD + ; + + -- Identification des honoraires directs selon compta + DROP TABLE IF EXISTS w_FAC_RGLMT_DETAILS_FACT_LINE; + CREATE TEMP TABLE w_FAC_RGLMT_DETAILS_FACT_LINE AS + SELECT RD_FACT_LINE + FROM prod_web100t.FAC_RGLMT_DETAILS + WHERE RD_ETS = 0 + GROUP BY 1 + ; + + ANALYSE w_FAC_RGLMT_DETAILS_FACT_LINE + ; + + DROP TABLE IF EXISTS w_FAC_FACT_LIGNE_TIER; + CREATE TEMP TABLE w_FAC_FACT_LIGNE_TIER AS + SELECT *, + CASE WHEN FLT_IS_DIRECT <> 1 THEN FLT_TOTAL_TTC ELSE 0 END AS FLT_TOTAL_TTC_comptable, + CASE WHEN RD_FACT_LINE IS NULL THEN '0' ELSE '1' END AS QRGMT + FROM prod_web100t.FAC_FACT_LIGNE_TIER + JOIN prod_web100t.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN prod_web100t.FAC_FACTURE ON FLT_FACTURE = FACT_OID + LEFT JOIN w_FAC_RGLMT_DETAILS_FACT_LINE ON RD_FACT_LINE = FLT_OID + WHERE FLT_IS_ETS = 0 AND + ( + SELECT count(*) + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t.CPT_COMPTES ON CPT_OID = ECR_COMPTE + WHERE ECR_IS_ETS = 0 AND + LNK_JOURNAL = 'VE' AND + (CPT_CODE LIKE '411%' OR CPT_CODE LIKE '412%') + ) > 0 + ; + + ANALYSE w_FAC_FACT_LIGNE_TIER + ; + + -- Ajout colonne si absente de prod_web100t + SELECT base.cti_execute('ALTER TABLE w_FAC_FACT_LIGNE_TIER ADD COLUMN FLT_PRED_LIGNE bigint',1) + WHERE 'flt_pred_ligne' NOT IN (SELECT column_name FROM information_schema.columns WHERE table_name = 'w_fac_fact_ligne_tier') + ; + + + -- reporter indicateur vente directe dans avoir depuis facture initiale + UPDATE w_FAC_FACT_LIGNE_TIER FAC_FACT_LIGNE_TIER SET + FLT_IS_DIRECT = FAC_FACT_LIGNE_TIER2.FLT_IS_DIRECT, + FLT_TOTAL_TTC_comptable = CASE WHEN FAC_FACT_LIGNE_TIER2.FLT_IS_DIRECT <> 1 THEN FAC_FACT_LIGNE_TIER.FLT_TOTAL_TTC ELSE 0 END + FROM w_FAC_FACT_LIGNE_TIER FAC_FACT_LIGNE_TIER2 + WHERE FAC_FACT_LIGNE_TIER.FLT_PRED_LIGNE = FAC_FACT_LIGNE_TIER2.FLT_OID AND + FAC_FACT_LIGNE_TIER.FLT_TOTAL_TTC < 0 AND + FAC_FACT_LIGNE_TIER.FLT_IS_ETS = 0 AND + FAC_FACT_LIGNE_TIER.FLT_IS_DIRECT <> FAC_FACT_LIGNE_TIER2.FLT_IS_DIRECT + ; + + + -- Honoraires directs comptabilisés ? + DROP TABLE IF EXISTS w_ECR_vente_hon; + CREATE TEMP TABLE w_ECR_vente_hon AS + SELECT FT_OID, FACT_NUMERO, MAX(FT_TOTAL_HO) AS FT_TOTAL_HO + + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t.CPT_COMPTES ON CPT_OID = ECR_COMPTE + JOIN prod_web100t.FAC_FACT_TIER ON ECR_REF_FTIERS = FT_OID + JOIN prod_web100t.FAC_FACTURE ON FT_FACTURE = FACT_OID + WHERE ECR_IS_ETS = 0 AND + LNK_JOURNAL = 'VE' AND + (CPT_CODE LIKE '411%' OR CPT_CODE LIKE '412%') + GROUP BY 1,2 + HAVING MAX(FT_TOTAL_HO) = SUM(ECR_DEBIT-ECR_CREDIT) + ; + + UPDATE w_FAC_FACT_LIGNE_TIER FAC_FACT_LIGNE_TIER + SET FLT_IS_DIRECT = + CASE + WHEN FLT_FACTURE IN ( + SELECT ECR_REF_FACT + FROM w_CPT_ECRITURE_source_OP_LINK + WHERE ECR_TYPE = 'VENTE-DIRECTE' + ) THEN -1 + WHEN QRGMT = '0' THEN -1 + ELSE 0 END, + FLT_TOTAL_TTC_comptable = FLT_TOTAL_TTC + WHERE FLT_FACTURE_TIER = + ANY( + SELECT w_ECR_vente_hon.FT_OID + FROm w_ECR_vente_hon + LEFT JOIN w_FAC_FACT_LIGNE_TIER ON + FLT_FACTURE_TIER = w_ECR_vente_hon.FT_OID AND + FLT_IS_ETS = 0 + GROUP BY 1 + HAVING round(MAX(w_ECR_vente_hon.FT_TOTAL_HO)::numeric,2) = round(SUM(FLT_TOTAL_TTC)::numeric,2) + ) AND + FLT_IS_DIRECT = 1 + ; + + + + DROP TABLE IF EXISTS w_FLT_INTERVENANT; + CREATE TEMP TABLE w_FLT_INTERVENANT AS + WITH vente_directe AS ( + SELECT ECR_REF_FACT + FROM w_CPT_ECRITURE_source_OP_LINK + WHERE ECR_TYPE = 'VENTE-DIRECTE' + ), + journal_vente AS ( + SELECT ECR_REF_FACT + FROM w_CPT_ECRITURE_source_OP_LINK + WHERE LNK_JOURNAL = 'VE' + ) + SELECT FLT_FACTURE, + FACT_NUMERO, + FT_TYPE_TIER, + FLT_INTERVENANT, + round(SUM(FLT_TOTAL_TTC)::numeric,2) AS FLT_TOTAL_TTC, + round(SUM(FLT_TOTAL_TTC_comptable)::numeric,2) AS FLT_TOTAL_TTC_comptable + FROM w_FAC_FACT_LIGNE_TIER FAC_FACT_LIGNE_TIER + LEFT JOIN vente_directe ON vente_directe.ECR_REF_FACT = FLT_FACTURE + LEFT JOIN journal_vente ON journal_vente.ECR_REF_FACT = FLT_FACTURE + WHERE FLT_IS_ETS = 0 AND + FLT_IS_DIRECT >= 0 AND + ( + journal_vente.ECR_REF_FACT IS NOT NULL + OR date(FACT_DATE) <= (SELECT date(MAX(ECR_DATE)) FROM w_CPT_ECRITURE_source_OP_LINK WHERE ECR_LOCKED = 1) + ) + AND vente_directe.ECR_REF_FACT IS NULL + GROUP BY 1,2,3,4 + ; + + ANALYSE w_FLT_INTERVENANT + ; + + DROP TABLE IF EXISTS w_ECR_INTERVENANT; + CREATE TEMP TABLE w_ECR_INTERVENANT AS + SELECT ECR_REF_FACT, + FACT_NUMERO, + CASE + WHEN ECR_DETAILS LIKE '%AMO%' THEN 'AMO'::text + WHEN ECR_DETAILS LIKE '%AMC%' THEN 'AMC'::text + WHEN ECR_DETAILS LIKE '%CLI%' THEN 'CLI'::text + WHEN ECR_DETAILS LIKE '%Part client%' THEN 'CLI'::text + ELSE '???' END AS ECR_TYPE_TIER, + CASE WHEN CPT_REF_TYPE = 'PRATICIEN' THEN CPT_REF ELSE -1 END AS CPT_REF, + round(SUM(ECR_CREDIT-ECR_DEBIT)::numeric,2) AS ECR_MONTANT + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t.FAC_FACTURE ON ECR_REF_FACT = FACT_OID + JOIN prod_web100t.CPT_COMPTES ON CPT_OID = ECR_COMPTE + WHERE ECR_IS_ETS = 0 AND + LNK_JOURNAL = 'VE' AND + (CPT_REF_TYPE = 'PRATICIEN' OR CPT_CODE LIKE '466%' OR CPT_CODE LIKE '4781%' OR (CPT_REF_TYPE = '' AND CPT_CODE IN ( + SELECT CPT_CODE + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t.FAC_FACTURE ON ECR_REF_FACT = FACT_OID + JOIN prod_web100t.CPT_COMPTES ON CPT_OID = ECR_COMPTE + WHERE ECR_IS_ETS = 0 AND LNK_JOURNAL = 'VE' AND CPT_REF_TYPE != '' + GROUP BY 1 + HAVING COUNT(DISTINCT CPT_REF_TYPE) = 1 + AND MIN(CPT_REF_TYPE) = 'PRATICIEN' + ))) + GROUP BY 1,2,3,4 + ; + + ANALYSE w_ECR_INTERVENANT + ; + + DROP TABLE IF EXISTS w_FLT_INTERVENANT_compta; + CREATE TEMP TABLE w_FLT_INTERVENANT_compta AS + SELECT FLT_FACTURE, FT_TYPE_TIER, FLT_INTERVENANT + FROM w_FLT_INTERVENANT + LEFT JOIN w_ECR_INTERVENANT ON + FLT_FACTURE = ECR_REF_FACT AND + FT_TYPE_TIER = ECR_TYPE_TIER AND + FLT_INTERVENANT = CPT_REF + WHERE FLT_TOTAL_TTC_comptable <> COALESCE(ECR_MONTANT,0) AND + FLT_TOTAL_TTC = COALESCE(ECR_MONTANT,0) + GROUP BY 1,2,3 + ; + + ANALYSE w_FLT_INTERVENANT_compta + ; + + UPDATE w_FAC_FACT_LIGNE_TIER SET + FLT_TOTAL_TTC_comptable = FLT_TOTAL_TTC + FROM w_FLT_INTERVENANT_compta + WHERE w_FAC_FACT_LIGNE_TIER.FLT_FACTURE = w_FLT_INTERVENANT_compta.FLT_FACTURE AND + w_FAC_FACT_LIGNE_TIER.FT_TYPE_TIER = w_FLT_INTERVENANT_compta.FT_TYPE_TIER AND + w_FAC_FACT_LIGNE_TIER.FLT_INTERVENANT = w_FLT_INTERVENANT_compta.FLT_INTERVENANT AND + FLT_IS_DIRECT = 1 + ; + + DROP TABLE IF EXISTS w_FLT_INTERVENANT_compta; + CREATE TEMP TABLE w_FLT_INTERVENANT_compta AS + SELECT FLT_FACTURE, FT_TYPE_TIER, FLT_INTERVENANT + FROM w_FLT_INTERVENANT + LEFT JOIN w_ECR_INTERVENANT ON + FLT_FACTURE = ECR_REF_FACT AND + FT_TYPE_TIER = ECR_TYPE_TIER AND + (FLT_INTERVENANT = CPT_REF OR CPT_REF = -1) + WHERE FLT_TOTAL_TTC_comptable <> COALESCE(ECR_MONTANT,0) AND + COALESCE(ECR_MONTANT,0) = 0 + GROUP BY 1,2,3 + ORDER BY 1,2,3 + ; + + ANALYSE w_FLT_INTERVENANT_compta + ; + + UPDATE w_FAC_FACT_LIGNE_TIER SET + FLT_TOTAL_TTC_comptable = 0 + FROM w_FLT_INTERVENANT_compta + WHERE w_FAC_FACT_LIGNE_TIER.FLT_FACTURE = w_FLT_INTERVENANT_compta.FLT_FACTURE AND + w_FAC_FACT_LIGNE_TIER.FT_TYPE_TIER = w_FLT_INTERVENANT_compta.FT_TYPE_TIER AND + w_FAC_FACT_LIGNE_TIER.FLT_INTERVENANT = w_FLT_INTERVENANT_compta.FLT_INTERVENANT AND + FLT_TOTAL_TTC_comptable <> 0 + ; + + UPDATE w_FAC_FACT_LIGNE_TIER + SET FLT_IS_DIRECT = 1 + WHERE FLT_IS_DIRECT = 0 AND FLT_TOTAL_TTC_comptable = 0 + ; + + UPDATE w_FAC_FACT_LIGNE_TIER + SET FLT_IS_DIRECT = CASE WHEN QRGMT = '0' THEN -1 ELSE 0 END + WHERE FLT_IS_DIRECT = 1 AND FLT_TOTAL_TTC_comptable <> 0 + ; + + UPDATE prod_web100t.FAC_FACT_LIGNE_TIER + SET FLT_IS_DIRECT = w_FAC_FACT_LIGNE_TIER.FLT_IS_DIRECT + FROM w_FAC_FACT_LIGNE_TIER + WHERE w_FAC_FACT_LIGNE_TIER.FLT_OID = FAC_FACT_LIGNE_TIER.FLT_OID AND + w_FAC_FACT_LIGNE_TIER.FLT_IS_DIRECT <> FAC_FACT_LIGNE_TIER.FLT_IS_DIRECT + ; + + + -- Forçage des prestations comptabilisees clinique en facture clinique + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'WEB100T_FORCEPRESTA_ETSB24', + 'Forçage des prestations comptabilisees clinique en facture clinique', + '0', + '1=Les prestations établissements avec type B2 = 4 sont forcées en facturation établissement' + WHERE 'WEB100T_FORCEPRESTA_ETSB24' NOT IN (SELECT code FROM activite.t_divers); + ; + + UPDATE prod_web100t.FAC_FACT_LIGNE + SET LI_TYPE_B2 = '3' + FROM prod_web100t.FAC_FACT_LIGNE_TIER, + activite.t_divers + WHERE FLT_LIGNE_FACTURE = LI_OID AND + FLT_IS_ETS = '1' AND + LI_TYPE_B2 = '4' AND + t_divers.code = 'WEB100T_FORCEPRESTA_ETSB24' AND + t_divers.valeur = '1' + ; + + + ]]> + + + + '' AND + (DA_DATE_FIN >= '[ENV_ADM_ANNEEDEBUT]0101' OR DA_DATE_FIN IS NULL); + + + UPDATE w_DAT_DA + SET CTI_OK = 'O' + WHERE CTI_OK <> 'O' AND + DA_OID = ANY (ARRAY (SELECT DISTINCT FACT_DA FROM prod_web100t.FAC_FACTURE)); + + + -- Séjours cloturés sans facture à supprimer (fausses venues) + UPDATE w_DAT_DA + SET CTI_OK = 'N' + WHERE CTI_OK = 'O' AND + DA_STATUT = 4 AND + DA_OID = ANY (ARRAY (SELECT DISTINCT DA_OID FROM w_DAT_DA LEFT JOIN prod_web100t.FAC_FACTURE ON FACT_DA = DA_OID WHERE FACT_DA IS NULL)) + ; + + -- Séances (séjours avec plusieurs jour - préparés à l'avance) sans prestation saisie ni facture + + DROP TABLE IF EXISTS w_exclude_da; + CREATE TEMP TABLE w_exclude_da AS + ( + SELECT + DISTINCT PREST_DA AS exclude_da + FROM + prod_web100t.DAT_PRESTATIONS_GAP + WHERE 1=1 + AND PREST_DELETED = 0 + AND PREST_DATE_DEBUT >= '[ENV_ADM_ANNEEDEBUT]0101'::timestamp without time zone + ) + UNION + ( + SELECT + DISTINCT FACT_DA AS exclude_da + FROM + prod_web100t.FAC_FACTURE + WHERE + FACT_DATE >= '[ENV_ADM_ANNEEDEBUT]0101'::timestamp without time zone + ); + + UPDATE w_DAT_DA + SET CTI_OK = 'N' + WHERE CTI_OK = 'O' AND + DA_STATUT IN ('3','4') AND + DA_CLASSE = '4' AND + date(DA_DATE_FIN) > date(DA_DATE_DEBUT) AND + DA_OID != ALL (ARRAY(SELECT exclude_da FROM w_exclude_da)::double precision[]) + ; + UPDATE w_DAT_DA + SET CTI_OK = 'N' + WHERE CTI_OK = 'O' AND + DA_STATUT NOT IN ('3','4') AND + DA_CLASSE = '4' AND + DA_OID != ALL (ARRAY(SELECT exclude_da FROM w_exclude_da)::double precision[]) AND + date(DA_DATE_DEBUT) < date(now() - interval '7 day') + ; + + DROP TABLE w_exclude_da; + + -- Enlever les dossiers trop anciens + UPDATE w_DAT_DA + SET CTI_OK = 'N' + FROM + ( + SELECT FACT_DA, + SUM(FT_TOTAL), + SUM(RD_TOTAL), + MAX(FACT_DATE), + MAX(FR_DATE_ENC) + FROM + ( + SELECT FACT_DA, + FT_OID, + MAX(FT_TOTAL_ETS+FT_TOTAL_HO) AS FT_TOTAL, + SUM(RD_MONTANT) AS RD_TOTAL, + date(MAX(FACT_DATE)) AS FACT_DATE, + date(MAX(GREATEST(RD_DATE,FR_DATE_ENC))) AS FR_DATE_ENC + FROM prod_web100t.FAC_FACTURE + JOIN W_DAT_DA ON FACT_DA = DA_OID AND + CTI_OK = 'O' AND + DA_STATUT IN ('3','4') AND + DA_DATE_FIN <= '[ENV_ADM_ANNEEDEBUT]0101' + LEFT JOIN prod_web100t.FAC_FACT_TIER ON FACT_OID = FT_FACTURE + LEFT JOIN prod_web100t.FAC_RGLMT_DETAILS ON RD_FACT_TIER = FT_OID + LEFT JOIN prod_web100t.FAC_REGLEMENTS ON FR_OID = RD_REGLEMENT + GROUP BY 1,2 + ) subview + GROUP BY 1 + HAVING round(SUM(FT_TOTAL)::numeric,2) = round(SUM(RD_TOTAL)::numeric,2) AND + MAX(FACT_DATE) < '[ENV_ADM_ANNEEDEBUT]0101' AND + MAX(FR_DATE_ENC) < '[ENV_ADM_ANNEEDEBUT]0101' + ) subview + WHERE FACT_DA = DA_OID + ; + + -- Identification séjour suspndus/annulés/refusés + DROP TABLE IF EXISTS w_REGUL_PHASES + ; + CREATE TEMP TABLE w_REGUL_PHASES AS + SELECT RPH_SEJOUR_OID, + (MAX(ARRAY[RPH_MODIFIED::text, RPH_ETAT::text]))[2]::numeric AS RPH_ETAT, + MAX(RPH_MODIFIED) AS RPH_MODIFIED + FROM prod_web100T.REGUL_PHASES + GROUP BY 1 + ; + + ANALYSE w_REGUL_PHASES + ; + + UPDATE w_DAT_DA SET + CTI_OK = 'O', + RPH_ETAT = w_REGUL_PHASES.RPH_ETAT, + RPH_MODIFIED = w_REGUL_PHASES.RPH_MODIFIED + FROM w_REGUL_PHASES + WHERE PHASE_OID = RPH_SEJOUR_OID AND + w_REGUL_PHASES.RPH_ETAT IN (6,7,8) AND + DA_DATE_DEBUT >= '[ENV_ADM_ANNEEDEBUT]0101' AND + CTI_OK = 'N' + ; + + + DELETE FROM w_DAT_DA + WHERE CTI_OK <> 'O'; + + + UPDATE w_DAT_DA + SET SEJ_NO_ENTREE = 'W' || DA_OID + WHERE SEJ_NO_ENTREE = ''; + + + UPDATE w_DAT_DA + SET DA_DATE_FIN = date(MVT_DATE_DAY), DA_HEURE_FIN = MVT_DATE_HOUR + FROM w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + WHERE DA_DATE_FIN IS NULL AND + PHASE_OID = MVT_SEJ_OID AND + DA_STATUT IN (3,4) AND + MVT_TYPE = 2; + + -- Sejours en double (Analyser différence entre DA_NUMERO et SEJ_NO_ENTREE) + SELECT base.cti_execute(' + DELETE + FROM w_DAT_DA + USING + (SELECT DA_OID, (MAX(ARRAY[to_char(999-SEJ_NBRE_BB,''FM999'')::text || to_char(PHASE_OID,''FM999999999999'')::text,SEJ_NO_ENTREE::text]))[2] AS SEJ_NO_ENTREE FROM w_DAT_DA WHERE CTI_OK = ''O'' GROUP BY 1 HAVING COUNT(*) > 1) subview + WHERE w_DAT_DA.DA_OID = subview.DA_OID AND w_DAT_DA.SEJ_NO_ENTREE = subview.SEJ_NO_ENTREE AND SEJ_NBRE_BB > 0',20); + + -- Sejours en double (Analyser différence entre DA_NUMERO et SEJ_NO_ENTREE) + SELECT base.cti_execute(' + DELETE + FROM w_DAT_DA + USING + (SELECT DA_OID, (MAX(ARRAY[to_char(999-SEJ_NBRE_BB,''FM999'')::text || to_char(PHASE_OID,''FM999999999999'')::text,SEJ_NO_ENTREE::text]))[2] AS SEJ_NO_ENTREE FROM w_DAT_DA WHERE CTI_OK = ''O'' GROUP BY 1 HAVING COUNT(*) > 1) subview + WHERE w_DAT_DA.DA_OID = subview.DA_OID AND w_DAT_DA.SEJ_NO_ENTREE = subview.SEJ_NO_ENTREE',20); + + -- Sejours en double (Suffixer no sejour pour le reste) + SELECT base.cti_execute(' + UPDATE w_DAT_DA + SET DA_NUMERO = w_DAT_DA.DA_NUMERO || ''_'' || nb::text + FROM ( + SELECT DA_NUMERO, MAX(DA_OID) AS DA_OID, count(*) AS nb + FROM w_DAT_DA + WHERE DA_NUMERO IN ( + SELECT da_numero + FROM w_DAT_DA + GROUP BY 1 + HAVING count(*) > 1) AND + SEJ_NO_ENTREE <> DA_NUMERO + GROUP BY 1) subview + WHERE w_DAT_DA.DA_OID = subview.DA_OID' + ,20); + + + SELECT base.cti_execute(' + UPDATE w_DAT_DA + SET DA_NUMERO = w_DAT_DA.DA_NUMERO || ''_'' || nb::text + FROM ( + SELECT DA_NUMERO, MAX(DA_OID) AS DA_OID, count(*) AS nb + FROM w_DAT_DA + WHERE DA_NUMERO IN ( + SELECT da_numero + FROM w_DAT_DA + GROUP BY 1 + HAVING count(*) > 1) + GROUP BY 1) subview + WHERE w_DAT_DA.DA_OID = subview.DA_OID' + ,20); + + VACUUM ANALYSE w_DAT_DA; + + + + -- Si mouvement d'entrée sans lit, prendre le lit suivant (si même UF) + DROP TABLE IF EXISTS w_REGUL_MOUVEMENTS_lit_entree; + CREATE TEMP TABLE w_REGUL_MOUVEMENTS_lit_entree AS + SELECT w_REGUL_MOUVEMENTS_source.MVT_OID, MAX(w_REGUL_MOUVEMENTS_source.MVT_SEJ_OID) AS MVT_SEJ_OID, + (MIN(ARRAY[w_REGUL_MOUVEMENTS_source_2.MVT_INDEX, w_REGUL_MOUVEMENTS_source_2.MVT_CHAMBRE]))[2] AS MVT_CHAMBRE, + (MIN(ARRAY[w_REGUL_MOUVEMENTS_source_2.MVT_INDEX, w_REGUL_MOUVEMENTS_source_2.MVT_LIT]))[2] AS MVT_LIT + FROM w_REGUL_MOUVEMENTS_source + JOIN w_DAT_DA ON PHASE_OID = w_REGUL_MOUVEMENTS_source.MVT_SEJ_OID + JOIN w_REGUL_MOUVEMENTS_source w_REGUL_MOUVEMENTS_source_2 ON + w_REGUL_MOUVEMENTS_source.MVT_SEJ_OID = w_REGUL_MOUVEMENTS_source_2.MVT_SEJ_OID AND + w_REGUL_MOUVEMENTS_source_2.MVT_INDEX > w_REGUL_MOUVEMENTS_source.MVT_INDEX AND + w_REGUL_MOUVEMENTS_source_2.MVT_TYPE IN (1,2,4) + WHERE + w_REGUL_MOUVEMENTS_source.MVT_INDEX = 1 AND + w_REGUL_MOUVEMENTS_source.MVT_UF_GEO <> 0 AND + w_REGUL_MOUVEMENTS_source.MVT_LIT = 0 AND + w_REGUL_MOUVEMENTS_source.MVT_CHAMBRE = 0 + GROUP BY 1 + HAVING (MIN(ARRAY[w_REGUL_MOUVEMENTS_source_2.MVT_INDEX, w_REGUL_MOUVEMENTS_source_2.MVT_UF_GEO]))[2] = MAX(w_REGUL_MOUVEMENTS_source.MVT_UF_GEO) AND + (MIN(ARRAY[w_REGUL_MOUVEMENTS_source_2.MVT_INDEX, w_REGUL_MOUVEMENTS_source_2.MVT_LIT]))[2] <> 0 + ; + + ANALYSE w_REGUL_MOUVEMENTS_lit_entree + ; + + UPDATE w_REGUL_MOUVEMENTS_source SET + MVT_CHAMBRE = w_REGUL_MOUVEMENTS_lit_entree.MVT_CHAMBRE, + MVT_LIT = w_REGUL_MOUVEMENTS_lit_entree.MVT_LIT + FROM w_REGUL_MOUVEMENTS_lit_entree + WHERE w_REGUL_MOUVEMENTS_source.MVT_OID = w_REGUL_MOUVEMENTS_lit_entree.MVT_OID + ; + + + + ]]> + + + + + + + + 1 + ) subview + WHERE w_patients.w_PAT_ID = subview.w_PAT_ID; + + + INSERT INTO activite[PX].p_patients( + no_patient, + nom, + prenom, + nom_naissance, + date_naissance, + code_sexe) + SELECT + w_PAT_IPP, + PAT_NOM, + PAT_PRENOM, + PAT_NOMNAISS, + date(PAT_NAISSANCE), + CASE WHEN PAT_SEXE = '2' THEN '2' ELSE '1' END + FROM w_patients + JOIN prod_web100t.PATIENTS ON PAT_ID = w_PAT_ID + LEFT JOIN activite[PX].p_patients ON (w_PAT_IPP = p_patients.no_patient) + WHERE p_patients.no_patient IS NULL; + + UPDATE activite[PX].p_patients + SET + nom = PAT_NOM, + prenom = PAT_PRENOM, + nom_naissance = PAT_NOMNAISS, + date_naissance = date(PAT_NAISSANCE), + code_sexe = CASE WHEN PAT_SEXE = '2' THEN '2' ELSE '1' END + FROM prod_web100t.PATIENTS + JOIN w_patients ON PAT_ID = w_PAT_ID + WHERE w_PAT_IPP = p_patients.no_patient + AND ( + nom IS DISTINCT FROM PAT_NOM OR + prenom IS DISTINCT FROM PAT_PRENOM OR + nom_naissance IS DISTINCT FROM PAT_NOMNAISS OR + date_naissance IS DISTINCT FROM date(PAT_NAISSANCE) OR + code_sexe IS DISTINCT FROM CASE WHEN PAT_SEXE = '2' THEN '2' ELSE '1' END + ); + + + ]]> + + + + 0 + GROUp BY 1 + HAVING count(DISTINCT RSS_OID) > 1 + ORDER BY 1 + ) subview + WHERE DAT_RSS.RSS_NO_HOSPIT = subview.RSS_NO_HOSPIT AND + RSS_OID <> RES_OID_OK + ; + + -- Détection GHM + + DROP TABLE IF EXISTS w_DAT_GROUPAGE; + CREATE TEMP TABLE w_DAT_GROUPAGE AS + SELECT + RSS_NO_HOSPIT, + to_number((MAX(Array[GRP_DATE::text, COALESCE(t_ghs.oid,0)::text]))[2],'00000000000000') AS ghs_id, + to_number((MAX(Array[GRP_DATE::text, COALESCE(t_ghm.oid,0)::text]))[2],'00000000000000') AS ghm_id, + (MAX(Array[GRP_DATE::text, w_SGN_NMCL_DATA_GHS.ND_CODE]))[2] AS ND_CODE_GHS, + (MAX(Array[GRP_DATE::text, w_SGN_NMCL_DATA_GHM.ND_CODE]))[2] AS ND_CODE_GHM + FROM prod_web100t.DAT_GROUPAGE + JOIN prod_web100t.DAT_RESUME ON GRP_RESUME = RES_OID + JOIN prod_web100t.DAT_RSS ON RES_OID = RSS_OID + JOIN prod_web100t.DAT_HOSPIT ON RES_HOSPIT = HOSP_OID + LEFT JOIN w_SGN_NMCL_DATA w_SGN_NMCL_DATA_GHS ON + GRP_CODE_GHS = w_SGN_NMCL_DATA_GHS.ND_OID + LEFT JOIN w_SGN_NMCL_DATA w_SGN_NMCL_DATA_GHM ON + GRP_GHM = w_SGN_NMCL_DATA_GHM.ND_OID + LEFT JOIN base.t_ghs ON t_ghs.code = to_number('0' || w_SGN_NMCL_DATA_GHS.ND_CODE,'00000') + LEFT JOIN base.t_ghm ON t_ghm.code = w_SGN_NMCL_DATA_GHM.ND_CODE + WHERE GRP_CODE_GHS <> 0 OR GRP_GHM <> 0 + GROUP BY 1; + + UPDATE w_DAT_GROUPAGE SET + ghs_id = 0, ghm_id = 0 + WHERE ND_CODE_GHM LIKE '90%' AND + (ghs_id <> 0 OR ghm_id <> 0); + + ALTER TABLE w_DAT_GROUPAGE ADD CONSTRAINT w_DAT_GROUPAGE_pkey PRIMARY KEY(RSS_NO_HOSPIT); + + + DROP TABLE IF EXISTS w_DAT_CONDITIONS_HEB; + CREATE TEMP TABLE w_DAT_CONDITIONS_HEB AS + SELECT + CH_SEJOUR, + (MAX(Array[CH_DATE_DEMANDE::text,CH_CP_DEMANDEE::text]))[2] AS CH_CP_DEMANDEE + FROM prod_web100t.DAT_CONDITIONS_HEB + WHERE CH_CP_DEMANDEE <> 0 + GROUP BY 1; + + ALTER TABLE w_DAT_CONDITIONS_HEB ADD CONSTRAINT w_DAT_CONDITIONS_HEB_pkey PRIMARY KEY(CH_SEJOUR); + + + DROP TABLE IF EXISTS w_DAT_IDENTITE; + CREATE TEMP TABLE w_DAT_IDENTITE AS + SELECT + IDT_DA, + (MAX(CASE WHEN IDT_TYPE = 'AMO' AND IDT_ORGANISME <> 0 THEN Array[IDT_CREATED::text, COALESCE(t_tiers_payant.oid,0)::text] ELSE Array['',0::text] END))[2]::bigint AS tiers_payant_1_id, + (MAX(CASE WHEN IDT_TYPE = 'AMC' AND IDT_ORGANISME <> 0 THEN Array[IDT_CREATED::text, COALESCE(t_tiers_payant.oid,0)::text] ELSE Array['',0::text] END))[2]::bigint AS tiers_payant_2_id, + (MAX(Array[IDT_CREATED::text, COALESCE(t_codes_postaux.oid,0)::text]))[2]::bigint AS code_postal_id + FROM prod_web100t.DAT_IDENTITE + LEFT JOIN activite[PX].t_tiers_payant ON IDT_ORGANISME = code_original + LEFT JOIN base.t_codes_postaux on IDT_CP = t_codes_postaux.code + GROUP BY 1; + + ALTER TABLE w_DAT_IDENTITE ADD CONSTRAINT w_DAT_IDENTITE_pkey PRIMARY KEY(IDT_DA); + + DROP TABLE IF EXISTS w_REGUL_MOUVEMENTS_SORTIE; + CREATE TEMP TABLE w_REGUL_MOUVEMENTS_SORTIE AS + SELECT + DA_OID, + SEJ_SPECIALITE, + SEJ_RESPONSABLE, + DA_NODE_RESP, + COALESCE((MAX(Array[MVT_DATE::text || MVT_INDEX, MVT_RESP::text]))[2]::bigint,0) AS MVT_RESP, + COALESCE((MAX(Array[MVT_DATE::text || MVT_INDEX, MVT_UF_SOIN::text]))[2]::bigint,0) AS MVT_UF_SOIN, + COALESCE((MAX(Array[MVT_DATE::text || MVT_INDEX, MVT_UF_GEO::text]))[2]::bigint,0) AS MVT_UF_GEO, + COALESCE((MAX(Array[MVT_DATE::text || MVT_INDEX, MVT_LIT::text]))[2]::bigint,0) AS MVT_LIT, + + SEJ_SPECIALITE || '|' || + SEJ_RESPONSABLE || '|' || + DA_NODE_RESP || '|' || + COALESCE((MAX(Array[MVT_DATE::text || MVT_INDEX, MVT_RESP::text]))[2],'') || '|' || + COALESCE((MAX(Array[MVT_DATE::text || MVT_INDEX, MVT_UF_SOIN::text]))[2],'') || '|' || + COALESCE((MAX(Array[MVT_DATE::text || MVT_INDEX, MVT_UF_GEO::text]))[2],'') || '|' || + COALESCE((MAX(Array[MVT_DATE::text || MVT_INDEX, MVT_LIT::text]))[2],'') + AS key + FROM w_DAT_DA + LEFT JOIN w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS ON PHASE_OID = MVT_SEJ_OID AND MVT_TYPE IN (1,4) + GROUP BY 1,2,3,4; + + + DROP TABLE IF EXISTS w_REGUL_MOUVEMENTS_SORTIE_keys; + CREATE TEMP TABLE w_REGUL_MOUVEMENTS_SORTIE_keys AS + SELECT + key, + SEJ_RESPONSABLE, + DA_NODE_RESP, + MVT_RESP, + MVT_UF_SOIN, + SEJ_SPECIALITE, + MVT_UF_GEO, + MVT_LIT, + + 0 AS mode_traitement_id, + ''::text AS mode_traitement_code, + ''::text AS dmt_code, + '0'::text AS type_sejour_force, + '0'::text AS type_sejour_seances_autorise, + '0'::text AS type_t2a, + 0::bigint AS lieu_id, + 0::bigint AS medecin_sejour_id + FROM w_REGUL_MOUVEMENTS_SORTIE + GROUP BY 1,2,3,4,5,6,7,8; + + + UPDATE w_REGUL_MOUVEMENTS_SORTIE_keys SET + mode_traitement_id = w_NMCL_UNITEFONCTIONNELLE.mode_traitement_id, + mode_traitement_code = w_NMCL_UNITEFONCTIONNELLE.mode_traitement_code, + dmt_code = w_NMCL_UNITEFONCTIONNELLE.dmt_code, + type_sejour_force = CASE WHEN w_NMCL_UNITEFONCTIONNELLE.type_sejour IN ('1', '2', '3', '31', '4', '5', '9') THEN w_NMCL_UNITEFONCTIONNELLE.type_sejour ELSE '0' END, + type_sejour_seances_autorise = CASE WHEN w_NMCL_UNITEFONCTIONNELLE.type_sejour IN ('1', '2', '3', '31', '4', '0sauf5') THEN '0' ELSE '1' END, + type_t2a = w_NMCL_UNITEFONCTIONNELLE.type_t2a + FROM w_NMCL_UNITEFONCTIONNELLE + WHERE w_NMCL_UNITEFONCTIONNELLE.WEB100T_OID = MVT_UF_SOIN; + + + + + UPDATE w_REGUL_MOUVEMENTS_SORTIE_keys + set medecin_sejour_id = w_NMCL_INTERVENANT.medecin_administratif_id + FROM w_NMCL_INTERVENANT + WHERE MVT_RESP <> 0 AND NODE_OID = MVT_RESP; + + UPDATE w_REGUL_MOUVEMENTS_SORTIE_keys + set medecin_sejour_id = w_NMCL_INTERVENANT.medecin_administratif_id + FROM w_NMCL_INTERVENANT + WHERE medecin_sejour_id = 0 AND SEJ_RESPONSABLE <> 0 AND NODE_OID = SEJ_RESPONSABLE; + + UPDATE w_REGUL_MOUVEMENTS_SORTIE_keys + set medecin_sejour_id = w_NMCL_INTERVENANT.medecin_administratif_id + FROM w_NMCL_INTERVENANT + WHERE medecin_sejour_id = 0 AND DA_NODE_RESP <> 0 AND NODE_OID = DA_NODE_RESP; + + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_6) + SELECT MVT_UF_SOIN, SEJ_SPECIALITE, MVT_UF_GEO, MVT_LIT, MVT_UF_SOIN + FROM w_REGUL_MOUVEMENTS_SORTIE_keys + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = MVT_UF_SOIN AND + code_original_2 = SEJ_SPECIALITE AND + code_original_3 = MVT_UF_GEO AND + code_original_4 = MVT_LIT AND + code_original_6 = MVT_UF_SOIN + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5; + + + + + + + UPDATE w_REGUL_MOUVEMENTS_SORTIE_keys + set lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = MVT_UF_SOIN AND + code_original_2 = SEJ_SPECIALITE AND + code_original_3 = MVT_UF_GEO AND + code_original_4 = MVT_LIT AND + code_original_6 = MVT_UF_SOIN; + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM + activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original + AND (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + activite_id = COALESCE(t_activites.oid,0) + FROM + activite[PX].t_activites + WHERE code_original_2 = t_activites.code_original + AND activite_id <> COALESCE(t_activites.oid,0); + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM + activite[PX].t_lits + WHERE code_original_3 || '-' || code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + + + ALTER TABLE w_REGUL_MOUVEMENTS_SORTIE ADD CONSTRAINT w_REGUL_MOUVEMENTS_SORTIE_pkey PRIMARY KEY(DA_OID); + + CREATE INDEX w_REGUL_MOUVEMENTS_SORTIE_i1 + ON w_REGUL_MOUVEMENTS_SORTIE + USING btree + (key); + + + + DROP TABLE IF EXISTS w_DAT_DA_type_sejour; + CREATE TEMP TABLE w_DAT_DA_type_sejour AS + SELECT + DA_OID, + CASE WHEN date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '1' ELSE '0' END AS de_ds, + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_TOTAL_TTC >= 0 AND FLT_CODE_PREST IN ('GHS','PJ') THEN 1 + WHEN FLT_IS_ETS = 1 AND FLT_TOTAL_TTC < 0 AND FLT_CODE_PREST IN ('GHS','PJ') THEN -1 + ELSE 0 END) AS nb_sej, + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_TOTAL_TTC >= 0 AND FLT_CODE_PREST IN ('SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'SE7', 'ATU', 'FPU', 'FFM') THEN 1 + WHEN FLT_IS_ETS = 1 AND FLT_TOTAL_TTC < 0 AND FLT_CODE_PREST IN ('SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'SE7', 'ATU', 'FPU', 'FFM') THEN -1 + ELSE 0 END) AS nb_ext, + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_TOTAL_TTC >= 0 AND FLT_CODE_PREST BETWEEN 'D01' AND 'D19' THEN 1 + WHEN FLT_IS_ETS = 1 AND FLT_TOTAL_TTC < 0 AND FLT_CODE_PREST BETWEEN 'D01' AND 'D19' THEN -1 + ELSE 0 END) AS nb_dia, + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_TOTAL_TTC >= 0 THEN 1 + WHEN FLT_IS_ETS = 1 AND FLT_TOTAL_TTC < 0 THEN -1 + ELSE 0 END) AS nb_ets, + SUM(CASE WHEN FLT_IS_ETS <> 1 AND FLT_TOTAL_TTC >= 0 THEN 1 + WHEN FLT_IS_ETS <> 1 AND FLT_TOTAL_TTC < 0 THEN -1 + ELSE 0 END) AS nb_hon, + '0'::text AS type_sejour_facture + FROM w_DAT_DA + JOIN prod_web100t.FAC_FACT_TIER ON FT_DA = DA_OID + JOIN prod_web100t.FAC_FACT_LIGNE_TIER ON FLT_FACTURE_TIER = FT_OID + WHERE FLT_RECAP <> 0 + GROUP BY 1,2 + ORDER BY 1 + ; + + UPDATE w_DAT_DA_type_sejour SET type_sejour_facture = '1' WHERE nb_sej > 0 AND nb_ext = 0 AND de_ds = '0'; + UPDATE w_DAT_DA_type_sejour SET type_sejour_facture = '2' WHERE nb_sej > 0 AND nb_ext = 0 AND de_ds = '1'; + UPDATE w_DAT_DA_type_sejour SET type_sejour_facture = '3' WHERE nb_sej = 0 AND nb_ext > 0 AND nb_dia = 0; + UPDATE w_DAT_DA_type_sejour SET type_sejour_facture = '5' WHERE nb_sej = 0 AND nb_ext = 0 AND nb_dia > 0; + UPDATE w_DAT_DA_type_sejour SET type_sejour_facture = '3' WHERE type_sejour_facture = '0' AND de_ds = '1' AND nb_ets = 0 AND nb_hon = 1; + + ALTER TABLE w_DAT_DA_type_sejour ADD CONSTRAINT w_DAT_DA_type_sejour_pkey PRIMARY KEY(DA_OID); + + -- Table de travail pour la préadmission des séjours + + DROP TABLE IF EXISTS w_sejours_preadmission; + CREATE TEMP TABLE w_sejours_preadmission( + no_sejour text PRIMARY KEY, + date_entree timestamp, + date_validation_preadmission timestamp, + "preadmission_j1" smallint, + "preadmission_j2" smallint + ) + ; + + INSERT INTO w_sejours_preadmission( + no_sejour, + date_entree, + date_validation_preadmission, + "preadmission_j1", + "preadmission_j2" + ) + SELECT + DA_NUMERO, + DA_DATE_DEBUT, + SEJ_VALIDATION_PREAD_LE, + CASE WHEN (DA_DATE_DEBUT - SEJ_VALIDATION_PREAD_LE) >= '10:00:00' THEN 1 ELSE 0 END, + CASE WHEN (DA_DATE_DEBUT - SEJ_VALIDATION_PREAD_LE) >= '1 day 06:00:00' THEN 1 ELSE 0 END + FROM w_DAT_DA + ; + + ANALYZE w_sejours_preadmission + ; + + -- Insertion des colonnes de la table w_sejours_preadmission + -- dans table CTI p_sejours_preadmission + + INSERT INTO activite[PX].p_sejours_preadmission( + no_sejour, + date_entree, + date_validation_preadmission, + "preadmission_j1", + "preadmission_j2" + ) + SELECT + no_sejour, + date_entree, + date_validation_preadmission, + "preadmission_j1", + "preadmission_j2" + FROM w_sejours_preadmission + WHERE NOT EXISTS ( + SELECT no_sejour + FROM activite[PX].p_sejours_preadmission + WHERE w_sejours_preadmission.no_sejour = p_sejours_preadmission.no_sejour + ) + ; + + DROP TABLE IF EXISTS w_sejours ; + CREATE TEMP TABLE w_sejours AS + SELECT + finess, + nextval('activite[PX].s_sejours'::regclass) AS sejour_id, + w_DAT_DA.DA_OID AS code_original, + DA_NUMERO AS no_sejour, + PAT_IPP AS no_patient, + CASE WHEN PAT_SEXE = '2' THEN '2' ELSE '1' END AS code_sexe, + DA_DATE_DEBUT + DA_HEURE_DEBUT * interval '1 day' AS date_heure_entree, + date(DA_DATE_DEBUT) AS date_entree, + extract('hour' FROM DA_HEURE_DEBUT * interval '1 day') * 10000 + + extract('minute' FROM DA_HEURE_DEBUT * interval '1 day') * 100 + + extract('second' FROM DA_HEURE_DEBUT * interval '1 day') AS heure_entree, + COALESCE(substr(w_SGN_NMCL_DATA_MODEENTREE.ND_CODE,1,1),'8') AS mode_entree, + COALESCE(substr(w_SGN_NMCL_DATA_MODEENTREE.ND_CODE,2,1),'') AS provenance, + COALESCE(DA_DATE_FIN + DA_HEURE_FIN * interval '1 day', '20991231') AS date_heure_sortie, + COALESCE(date(DA_DATE_FIN), '20991231') AS date_sortie, + COALESCE(extract('hour' FROM DA_HEURE_FIN * interval '1 day') * 10000 + + extract('minute' FROM DA_HEURE_FIN * interval '1 day') * 100 + + extract('second' FROM DA_HEURE_FIN * interval '1 day'),0) AS heure_sortie, + COALESCE(substr(w_SGN_NMCL_DATA_MODESORTIE.ND_CODE,1,1),'8') AS mode_sortie, + COALESCE(substr(w_SGN_NMCL_DATA_MODESORTIE.ND_CODE,2,1),'') AS destination, + CASE + WHEN DA_STATUT IN ('3','4') AND DA_DATE_FIN IS NOT NULL THEN 1 + ELSE 0 END AS code_sorti, + CASE + WHEN DA_STATUT <= 1 THEN 1 + ELSE 0 END AS code_prevu, + CASE + WHEN type_sejour_seances_autorise = '1' AND ND_CODE_GHM LIKE '28%' THEN '5' + WHEN type_sejour_force <> '0' AND type_sejour_force <> '31' THEN type_sejour_force + WHEN type_sejour_force = 31 AND date(DA_DATE_FIN) - date(DA_DATE_DEBUT) <= 1 THEN '3' + WHEN type_sejour_force = 31 THEN '1' + WHEN type_sejour_facture <> '0' THEN type_sejour_facture + WHEN DA_CLASSE IN (1,2) AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) AND DA_SUGG_MODE_FACT IN ('ATU','FSU','HON','SEH') THEN '3' + WHEN DA_CLASSE IN (1,2) AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '2' + WHEN DA_CLASSE IN (1,2) THEN '1' + WHEN DA_CLASSE IN (3,5) THEN '3' + WHEN DA_CLASSE IN (4) THEN '5' + WHEN mode_traitement_code IN ('03') AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '2' + WHEN mode_traitement_code IN ('03') THEN '1' + WHEN mode_traitement_code IN ('07') THEN '3' + WHEN mode_traitement_code IN ('07') OR dmt_code IN ('958') THEN '3' + WHEN mode_traitement_code IN ('19', '23') AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '2' + WHEN mode_traitement_code IN ('04') AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '2' + WHEN mode_traitement_code IN ('03') AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '2' + WHEN mode_traitement_code IN ('03') THEN '1' + WHEN mode_traitement_id = 0 AND type_t2a = '1' AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '2' + WHEN mode_traitement_id = 0 AND ghs_id <> 0 AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '2' + WHEN mode_traitement_id = 0 AND type_t2a <> '1' AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '3' + ELSE '1' END AS type_sejour, + mode_traitement_id, + w_REGUL_MOUVEMENTS_SORTIE_keys.lieu_id AS lieu_sortie_id, + medecin_sejour_id, + COALESCE(tiers_payant_1_id,0) AS tiers_payant_1_id, + COALESCE(tiers_payant_2_id,0) AS tiers_payant_2_id, + (SELECT MIN(oid) FROM activite[PX].t_tiers_payant WHERE code = 'PATIENTS') AS tiers_payant_0_id, + 0::bigint AS tiers_payant_22_id, + COALESCE(ghs_id,0) AS ghs_id, + COALESCE(ghm_id,0) AS ghm_id, + 0::bigint AS ghs_bebe1_id, + 0::bigint AS ghs_bebe2_id, + 0::bigint AS ghs_bebe3_id, + DATE(DA_DIM_VALID) AS date_groupage, + CASE RPH_ETAT + WHEN 6 THEN 'R' + WHEN 7 THEN 'A' + WHEN 8 THEN 'C' + ELSE ''::text + END AS etat, + CASE WHEN RPH_ETAT > 0 THEN RPH_MODIFIED ELSE NULL END AS date_etat, + COALESCE(CH_CP_DEMANDEE,'0') AS code_cp_demandee, + 0::numeric AS est_budget_global, + '0'::text AS est_sans_facturation, + 0::bigint AS provider_id, + w_DAT_IDENTITE.code_postal_id + FROM w_DAT_DA + JOIN prod_web100t.PATIENTS ON DA_PATIENT = PAT_ID + LEFT JOIN w_SGN_NMCL_DATA w_SGN_NMCL_DATA_MODEENTREE ON + SEJ_MODE_ENTREE = w_SGN_NMCL_DATA_MODEENTREE.ND_INVARIANT_OID AND + w_SGN_NMCL_DATA_MODEENTREE.NMCL_IDENT = 'MODEENTREE' + LEFT JOIN w_SGN_NMCL_DATA w_SGN_NMCL_DATA_MODESORTIE ON + SEJ_MODE_SORTIE = w_SGN_NMCL_DATA_MODESORTIE.ND_INVARIANT_OID AND + w_SGN_NMCL_DATA_MODESORTIE.NMCL_IDENT = 'MODESORTIE' + JOIN w_REGUL_MOUVEMENTS_SORTIE ON w_DAT_DA.DA_OID = w_REGUL_MOUVEMENTS_SORTIE.DA_OID + JOIN w_REGUL_MOUVEMENTS_SORTIE_keys ON w_REGUL_MOUVEMENTS_SORTIE.key = w_REGUL_MOUVEMENTS_SORTIE_keys.key + LEFT JOIN w_DAT_GROUPAGE ON DA_NUMERO = RSS_NO_HOSPIT + LEFT JOIN w_DAT_CONDITIONS_HEB ON PHASE_OID = CH_SEJOUR + LEFT JOIN w_DAT_IDENTITE ON IDT_DA = w_DAT_DA.DA_OID + LEFT JOIN w_DAT_DA_type_sejour ON w_DAT_DA.DA_OID = w_DAT_DA_type_sejour.DA_OID; + + + -- correction mode de sortie + UPDATE w_sejours + SET mode_sortie = '' + WHERE mode_sortie != ALL (ARRAY(SELECT code from base.t_modes_sortie)::text[]) + ; + -- correction mode entree + UPDATE w_sejours + SET mode_entree = '' + WHERE mode_entree != ALL (ARRAY(SELECT code from base.t_modes_entree)::text[]) + ; + + -- Forcage type selon séjour + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour + FROM activite.t_sejour + WHERE t_sejour.no_sejour = w_sejours.no_sejour AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9'); + + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_13'); + + INSERT INTO activite[PX].p_sejours ( + finess, + oid, + code_original, + no_sejour, + no_patient, + code_sexe, + date_entree, + heure_entree, + mode_entree, + provenance, + date_sortie, + heure_sortie, + mode_sortie, + destination, + code_sorti, + code_prevu, + type_sejour, + mode_traitement_id, + lieu_sortie_id, + medecin_sejour_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_0_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + date_groupage, + ghm_id, + etat, + date_etat, + code_cp_demandee, + est_budget_global, + est_sans_facturation, + provider_id, + code_postal_id + ) + SELECT + finess, + sejour_id, + code_original, + no_sejour, + no_patient, + code_sexe, + date_entree, + heure_entree, + mode_entree, + provenance, + date_sortie, + heure_sortie, + mode_sortie, + destination, + code_sorti, + code_prevu, + type_sejour, + mode_traitement_id, + lieu_sortie_id, + medecin_sejour_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_0_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + date_groupage, + ghm_id, + etat, + date_etat, + code_cp_demandee, + est_budget_global, + est_sans_facturation, + provider_id, + code_postal_id + FROM w_sejours ; + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '[PX]' = ''; + + UPDATE activite[PX].p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND + '[PX]' = ''; + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '[PX]' = ''; + + + -- recréation index + + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_13'); + + -- transferts d'établissements + INSERT INTO base.t_etablissements (code, texte, texte_court) + SELECT + ND_CODE, + ND_LIB, + ND_LIB + FROM + w_SGN_NMCL_DATA + WHERE 1=1 AND + NMCL_IDENT = 'FINESS' AND + ND_INVARIANT_OID IN (SELECT DISTINCT MVT_AUTRE_ETS FROM prod_web100t.REGUL_MOUVEMENTS) AND + ND_CODE NOT IN (SELECT CODE FROM base.t_etablissements) + ; + + INSERT INTO activite[PX].p_sejours_transferts (sejour_id, provenance_id, destination_id) + SELECT + p_sejours.oid, + MIN(CASE WHEN MVT_TYPE = 1 THEN t_etablissements.oid ELSE null END) AS provenance_id, + MIN(CASE WHEN MVT_TYPE = 2 THEN t_etablissements.oid ELSE null END) AS destination_id + FROM + activite[PX].p_sejours + JOIN prod_web100t.DAT_SEJOUR ON SEJ_DA = code_original + JOIN prod_web100t.REGUL_MOUVEMENTS ON MVT_SEJ_OID = PHASE_OID + LEFT JOIN w_SGN_NMCL_DATA ON MVT_AUTRE_ETS = ND_INVARIANT_OID AND NMCL_IDENT = 'FINESS' + LEFT JOIN base.t_etablissements ON ND_CODE = code + WHERE 1!=1 OR + MVT_AUTRE_ETS != 0 + GROUP BY 1 + ; + + -- Assurance + SELECT base.cti_execute( + 'INSERT INTO activite[PX].p_sejours_assurance( + sejour_id, + nom_assure, + prenom_assure, + tiers_payant_0_id, + tiers_payant_1_id, + matricule_1, + tiers_payant_2_id, + matricule_2, + tiers_payant_22_id, + matricule_22 + ) + SELECT + p_sejours.oid AS sejour_id, + (MAX(ARRAY[CASE WHEN IDT_TYPE = ''AMO'' THEN ''1'' ELSE ''2'' END::text,IDT_NOM]))[2] AS nom_assure, + (MAX(ARRAY[CASE WHEN IDT_TYPE = ''AMO'' THEN ''1'' ELSE ''2'' END::text,IDT_PRENOM]))[2] AS prenom_assure, + MAX(p_sejours.tiers_payant_0_id), + MAX(p_sejours.tiers_payant_1_id), + MAX(CASE WHEN AMO_MATRICULE_BENEF <> '''' THEN AMO_MATRICULE_BENEF ELSE AMO_MATRICULE END) AS matricule_1, + MAX(p_sejours.tiers_payant_2_id), + MAX(CASE WHEN AMC_MATRICULE <> '''' THEN AMO_MATRICULE ELSE AMC_NUM_CONTRAT END) AS matricule_2, + MAX(p_sejours.tiers_payant_22_id), + ''''::text AS matricule_22 + FROM prod_web100t.DAT_IDENTITE + JOIN prod_web100t.DAT_DA ON IDT_DA = DA_OID + JOIN prod_web100t.PATIENTS ON DA_PATIENT = PAT_ID + LEFT JOIN prod_web100t.DAT_ASSURE_AMO ON DA_ASSURE_AMO = AMO_OID + LEFT JOIN prod_web100t.DAT_ASSURE_AMC ON DA_ASSURE_AMC_1 = AMC_OID + JOIN activite[PX].p_sejours ON code_original = DA_OID + WHERE IDT_TYPE = ANY(ARRAY[''AMO'',''AMC'']) + GROUP BY 1',1) + FROM pg_tables + WHERE schemaname = 'prod_web100t' AND tablename = 'dat_assure_amo' + ; + + ]]> + + + + 2 + GROUP BY 1,2,3,4,5; + + UPDATE w_REGUL_MOUVEMENTS_keys SET + mode_traitement_code = w_NMCL_UNITEFONCTIONNELLE.mode_traitement_code, + dmt_code = w_NMCL_UNITEFONCTIONNELLE.dmt_code + FROM w_NMCL_UNITEFONCTIONNELLE + WHERE w_NMCL_UNITEFONCTIONNELLE.WEB100T_OID = MVT_UF_SOIN; + + + + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_6) + SELECT MVT_UF_SOIN, SEJ_SPECIALITE, MVT_UF_GEO, MVT_LIT, MVT_UF_SOIN + FROM w_REGUL_MOUVEMENTS_keys + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = MVT_UF_SOIN AND + code_original_2 = SEJ_SPECIALITE AND + code_original_3 = MVT_UF_GEO AND + code_original_4 = MVT_LIT AND + code_original_6 = MVT_UF_SOIN + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5; + + + + + + + UPDATE w_REGUL_MOUVEMENTS_keys + set lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = MVT_UF_SOIN AND + code_original_2 = SEJ_SPECIALITE AND + code_original_3 = MVT_UF_GEO AND + code_original_4 = MVT_LIT AND + code_original_6 = MVT_UF_SOIN; + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM + activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original + AND (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + activite_id = COALESCE(t_activites.oid,0) + FROM + activite[PX].t_activites + WHERE code_original_2 = t_activites.code_original + AND activite_id <> COALESCE(t_activites.oid,0); + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM + activite[PX].t_lits + WHERE code_original_3 || '-' || code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + UPDATE w_REGUL_MOUVEMENTS_keys + SET chambre_particuliere = t_lits.chambre_particuliere + FROM activite[PX].t_lieux + JOIN activite[PX].t_lits ON lit_id = t_lits.oid + WHERE w_REGUL_MOUVEMENTS_keys.lieu_id = t_lieux.oid; + + + CREATE INDEX w_REGUL_MOUVEMENTS_i1 + ON w_REGUL_MOUVEMENTS + USING btree + (key); + + + + -- calcul date fin + + UPDATE w_REGUL_MOUVEMENTS + SET MVT_DATE_FIN = CASE WHEN w_REGUL_MOUVEMENTS_next.MVT_TYPE <> 2 THEN w_REGUL_MOUVEMENTS_next.MVT_DATE - interval '1 second' ELSE w_REGUL_MOUVEMENTS_next.MVT_DATE END, + MVT_DATE_FIN_DAT = date(CASE WHEN w_REGUL_MOUVEMENTS_next.MVT_TYPE <> 2 THEN w_REGUL_MOUVEMENTS_next.MVT_DATE - interval '1 second' ELSE w_REGUL_MOUVEMENTS_next.MVT_DATE END), + MVT_DATE_FIN_TIM = extract('hour' FROM CASE WHEN w_REGUL_MOUVEMENTS_next.MVT_TYPE <> 2 THEN w_REGUL_MOUVEMENTS_next.MVT_DATE - interval '1 second' ELSE w_REGUL_MOUVEMENTS_next.MVT_DATE END) * 10000 + + extract('minute' FROM CASE WHEN w_REGUL_MOUVEMENTS_next.MVT_TYPE <> 2 THEN w_REGUL_MOUVEMENTS_next.MVT_DATE - interval '1 second' ELSE w_REGUL_MOUVEMENTS_next.MVT_DATE END) * 100 + + extract('second' FROM CASE WHEN w_REGUL_MOUVEMENTS_next.MVT_TYPE <> 2 THEN w_REGUL_MOUVEMENTS_next.MVT_DATE - interval '1 second' ELSE w_REGUL_MOUVEMENTS_next.MVT_DATE END), + MVT_TYPE_next = w_REGUL_MOUVEMENTS_next.MVT_TYPE, + MVT_UF_SOIN_next = w_REGUL_MOUVEMENTS_next.MVT_UF_SOIN, + MVT_UF_GEO_next = w_REGUL_MOUVEMENTS_next.MVT_UF_GEO + FROM w_REGUL_MOUVEMENTS w_REGUL_MOUVEMENTS_next + WHERE w_REGUL_MOUVEMENTS.DA_OID = w_REGUL_MOUVEMENTS_next.DA_OID + AND w_REGUL_MOUVEMENTS.sequence = w_REGUL_MOUVEMENTS_next.sequence - 1; + + + + -- calcul mvt avant + + UPDATE w_REGUL_MOUVEMENTS + SET + MVT_TYPE_before = w_REGUL_MOUVEMENTS_before.MVT_TYPE, + MVT_UF_SOIN_before = w_REGUL_MOUVEMENTS_before.MVT_UF_SOIN, + MVT_UF_GEO_before = w_REGUL_MOUVEMENTS_before.MVT_UF_GEO + FROM w_REGUL_MOUVEMENTS w_REGUL_MOUVEMENTS_before + WHERE w_REGUL_MOUVEMENTS.DA_OID = w_REGUL_MOUVEMENTS_before.DA_OID + AND w_REGUL_MOUVEMENTS.sequence = w_REGUL_MOUVEMENTS_before.sequence + 1 + AND w_REGUL_MOUVEMENTS.MVT_TYPE <> 2; + + + UPDATE w_DAT_DA SET + dup_type_sejour = p_sejours.type_sejour, + dup_code_prevu = p_sejours.code_prevu, + dup_sejour_id = p_sejours.oid, + dup_no_sejour = p_sejours.no_sejour, + dup_medecin_sejour_id = p_sejours.medecin_sejour_id, + dup_etat = p_sejours.etat + FROM activite[PX].p_sejours + WHERE DA_OID = p_sejours.code_original; + + -- creation mouvements par jour + CREATE INDEX w_REGUL_MOUVEMENTS_i2 + ON w_REGUL_MOUVEMENTS + USING btree + (DA_OID); + + CREATE INDEX w_REGUL_MOUVEMENTS_i3 + ON w_REGUL_MOUVEMENTS + USING btree + (MVT_DATE_DAT); + + VACUUM ANALYSE w_REGUL_MOUVEMENTS + ; + VACUUM ANALYSE w_DAT_DA + ; + VACUUM ANALYSE w_REGUL_MOUVEMENTS_keys + ; + + DROP TABLE IF EXISTS w_mouvements_sejour; + CREATE TEMP TABLE w_mouvements_sejour AS + SELECT + w_REGUL_MOUVEMENTS.DA_OID, + w_DAT_DA.dup_no_sejour AS no_sejour, + w_DAT_DA.dup_sejour_id AS sejour_id, + sequence, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE WHEN p_calendrier.date = MVT_DATE_DAT THEN MVT_DATE_TIM ELSE 0 END AS heure_debut, + CASE WHEN p_calendrier.date = MVT_DATE_FIN_DAT THEN MVT_DATE_FIN_TIM ELSE 240000 END AS heure_fin, + CASE WHEN p_calendrier.date = MVT_DATE_DAT AND MVT_TYPE = 1 AND w_DAT_DA.dup_type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes, + CASE WHEN p_calendrier.date = MVT_DATE_FIN_DAT AND MVT_TYPE_next = 2 AND w_DAT_DA.dup_type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes, + CASE WHEN p_calendrier.date = MVT_DATE_DAT AND MVT_TYPE = 1 AND w_DAT_DA.dup_type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree, + CASE WHEN p_calendrier.date = MVT_DATE_FIN_DAT AND MVT_TYPE_next = 2 AND w_DAT_DA.dup_type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie, + CASE WHEN w_DAT_DA.dup_type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN p_calendrier.date = MVT_DATE_DAT AND MVT_TYPE = 1 AND w_DAT_DA.dup_type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires, + CASE WHEN p_calendrier.date = MVT_DATE_DAT AND MVT_TYPE = 1 AND w_DAT_DA.dup_type_sejour = '3' THEN 1 ELSE 0 END AS nb_externes, + CASE WHEN p_calendrier.date = MVT_DATE_DAT AND MVT_TYPE = 1 AND w_DAT_DA.dup_type_sejour <> '9' THEN + CASE WHEN dmt_code IN ('303', '307', '308', '401', '402', '403', '404', '405', '406', '407', '408', '409') THEN 1 + WHEN SEJ_URGENCE = 1 THEN 1 + ELSE 0 END + ELSE 0 END AS nb_urgences, + 0 as nb_seances, + + CASE WHEN p_calendrier.date = MVT_DATE_DAT AND MVT_TYPE = 4 AND w_DAT_DA.dup_type_sejour = '1' AND w_REGUL_MOUVEMENTS.MVT_UF_SOIN <> MVT_UF_SOIN_before THEN 1 ELSE 0 END AS nb_entrees_mutation_service, + CASE WHEN p_calendrier.date = MVT_DATE_FIN_DAT AND MVT_TYPE_next = 4 AND w_DAT_DA.dup_type_sejour = '1' AND w_REGUL_MOUVEMENTS.MVT_UF_SOIN <> MVT_UF_SOIN_next THEN 1 ELSE 0 END AS nb_sorties_mutation_service, + CASE WHEN p_calendrier.date = MVT_DATE_DAT AND MVT_TYPE = 4 AND w_DAT_DA.dup_type_sejour = '1' AND w_REGUL_MOUVEMENTS.MVT_UF_GEO <> MVT_UF_GEO_before THEN 1 ELSE 0 END AS nb_entrees_mutation_etage, + CASE WHEN p_calendrier.date = MVT_DATE_FIN_DAT AND MVT_TYPE_next = 4 AND w_DAT_DA.dup_type_sejour = '1' AND w_REGUL_MOUVEMENTS.MVT_UF_GEO <> MVT_UF_GEO_next THEN 1 ELSE 0 END AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + 0 AS nb_entrees_mutation_unite_medicale, + 0 AS nb_sorties_mutation_unite_medicale, + + CASE WHEN w_DAT_DA.dup_type_sejour = '1' AND (p_calendrier.date <> MVT_DATE_FIN_DAT OR MVT_TYPE_next = 2) THEN 1 ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN w_DAT_DA.dup_type_sejour = '1' AND p_calendrier.date <> MVT_DATE_FIN_DAT THEN 1 ELSE 0 END AS nb_jours_js_non_inclus, + + CASE WHEN w_DAT_DA.dup_type_sejour IN ('1','2') AND chambre_particuliere = 'O' THEN '1' ELSE '0' END AS est_chambre_particuliere, + CASE WHEN w_DAT_DA.dup_type_sejour IN ('1','2') AND chambre_particuliere = 'O' AND (p_calendrier.date <> MVT_DATE_FIN_DAT OR MVT_TYPE_next = 2) THEN 1 ELSE 0 END AS nb_chambres_particulieres, + + 0::numeric AS nb_bebes, + + lieu_id, + + w_DAT_DA.dup_medecin_sejour_id as medecin_sejour_id, + + CASE WHEN w_DAT_DA.dup_code_prevu = '1' OR p_calendrier.date > date(now()) THEN '1' ELSE '0' END AS est_mouvement_previsionnel + + FROM w_REGUL_MOUVEMENTS + JOIN w_DAT_DA ON w_DAT_DA.DA_OID = w_REGUL_MOUVEMENTS.DA_OID + JOIN w_REGUL_MOUVEMENTS_keys ON w_REGUL_MOUVEMENTS.key = w_REGUL_MOUVEMENTS_keys.key + JOIN base.p_calendrier ON p_calendrier.date BETWEEN MVT_DATE_DAT AND MVT_DATE_FIN_DAT AND p_calendrier.date <= date(now()) + interval '1 month' + WHERE MVT_TYPE <> 2 + AND w_DAT_DA.dup_etat = '' + AND (w_DAT_DA.dup_type_sejour NOT IN ('3') OR (w_DAT_DA.dup_type_sejour IN ('3') AND MVT_TYPE = 1 AND p_calendrier.date = MVT_DATE_DAT)) + AND (w_DAT_DA.dup_code_prevu <> '1' AND p_calendrier.date <= date(now()) OR p_calendrier.date >= date(now())) + ORDER BY sequence, p_calendrier.date; + + -- bébés + DROP TABLE IF EXISTS w_CCAM_bebes; + + CREATE TEMP TABLE w_CCAM_bebes AS + SELECT + p_sejours.no_sejour, + MAX(CASE WHEN t_actes.texte ILIKE '%multiple%' THEN 2 ELSE 1 END) AS nb_bebes + FROM prod_web100t.DAT_PRESTATIONS_GAP + JOIN activite[PX].p_sejours ON PREST_DA = p_sejours.code_original + JOIN w_ART_ARTICLES ON PREST_ARTICLE = ART_OID + JOIN base.t_actes ON t_actes.oid = acte_id AND + t_actes.code LIKE 'JQG%' AND + t_actes.texte ILIKE 'accouchement%' + WHERE PREST_DELETED = 0 + GROUP BY 1; + + CREATE INDEX w_CCAM_bebes_i1 + ON w_CCAM_bebes + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_bebes = w_CCAM_bebes.nb_bebes + FROM w_CCAM_bebes + WHERE w_CCAM_bebes.no_sejour = w_mouvements_sejour.no_sejour AND + (nb_entrees_directes = 1 OR nb_externes = 1 OR nb_ambulatoires = 1); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- seances selon prestation Dxx facturées + + + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT + p_sejours.no_sejour, + date(FLT_DATE_DEBUT) AS date, + SUM(CASE WHEN FLT_TOTAL_TTC >= 0 THEN 1 ELSE -1 END) AS nb_seances + FROM activite[PX].p_sejours + JOIN prod_web100t.FAC_FACT_TIER ON FT_DA = code_original + JOIN prod_web100t.FAC_FACT_LIGNE_TIER ON FLT_FACTURE_TIER = FT_OID AND FLT_CODE_PREST BETWEEN 'D01' AND 'D19' + WHERE FLT_IS_ETS = 1 AND FLT_RECAP <> 0 + GROUP BY 1,2 + ORDER BY 1,2 + ; + + CREATE INDEX w_sejours_seances_i1 + ON w_sejours_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_sejours_seances.nb_seances + FROM w_sejours_seances + WHERE w_sejours_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_sejours_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_sejours_seances.nb_seances; + + + -- seances selon Actes (JV Séances Facturés) + + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT + p_sejours.no_sejour, + date(FLT_DATE_DEBUT) AS date, + SUM(CASE WHEN FLT_TOTAL_TTC >= 0 THEN 1 ELSE -1 END) AS nb_seances + FROM activite[PX].p_sejours + JOIN prod_web100t.FAC_FACT_TIER ON FT_DA = code_original + JOIN prod_web100t.FAC_FACT_LIGNE_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN w_ART_ARTICLES ON FLT_ARTICLE = ART_OID AND + ( + ART_CODE_ACTE LIKE 'JV%' AND (ART_LIB_ACTE ILIKE '%seance%' OR ART_LIB_ACTE ILIKE '%séance%' ) OR + ART_CODE_ACTE LIKE 'JVJF%' + ) + WHERE FLT_IS_ETS = 0 AND FLT_RECAP <> 0 + GROUP BY 1,2 + ORDER BY 1,2 + ; + + + CREATE INDEX w_sejours_seances_i1 + ON w_sejours_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_sejours_seances.nb_seances + FROM w_sejours_seances + WHERE w_sejours_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_sejours_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_sejours_seances.nb_seances; + + + -- seances selon prestation Dxx saisies + + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT + p_sejours.no_sejour, + date(PREST_DATE_DEBUT) AS date, + SUM(CASE WHEN PREST_QUANTITE <> 0 THEN PREST_QUANTITE ELSE 1 END) AS nb_seances + FROM prod_web100t.DAT_PRESTATIONS_GAP + JOIN prod_web100t.DAT_DA ON PREST_DA = DA_OID + JOIN activite[PX].p_sejours ON DA_OID = p_sejours.code_original AND date(PREST_DATE_DEBUT) BETWEEN date_entree AND date_sortie + JOIN w_ART_ARTICLES ON PREST_ARTICLE = ART_OID + WHERE ART_CODE BETWEEN 'D01' AND 'D19' AND PREST_DELETED = 0 + GROUP BY 1,2; + + CREATE INDEX w_sejours_seances_i1 + ON w_sejours_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_sejours_seances.nb_seances + FROM w_sejours_seances + WHERE w_sejours_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_sejours_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_sejours_seances.nb_seances; + + + -- seances selon actes JV séance saisis + + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT + p_sejours.no_sejour, + date(PREST_DATE_DEBUT) AS date, + SUM(CASE WHEN PREST_QUANTITE <> 0 THEN PREST_QUANTITE ELSE 1 END) AS nb_seances + FROM prod_web100t.DAT_PRESTATIONS_GAP + JOIN prod_web100t.DAT_DA ON PREST_DA = DA_OID + JOIN activite[PX].p_sejours ON DA_OID = p_sejours.code_original AND date(PREST_DATE_DEBUT) BETWEEN date_entree AND date_sortie + JOIN w_ART_ARTICLES ON PREST_ARTICLE = ART_OID AND + ( + ART_CODE_ACTE LIKE 'JV%' AND (ART_LIB_ACTE ILIKE '%seance%' OR ART_LIB_ACTE ILIKE '%séance%' ) OR + ART_CODE_ACTE LIKE 'JVJF%' + ) + WHERE PREST_DELETED = 0 + GROUP BY 1,2; + + + CREATE INDEX w_sejours_seances_i1 + ON w_sejours_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_sejours_seances.nb_seances + FROM w_sejours_seances + WHERE w_sejours_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_sejours_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_sejours_seances.nb_seances; + + -- seances selon K 15 ou 9606 + + INSERT INTO activite.t_divers (code, description, texte, valeur) + SELECT 'K15_SEANCE', + 'Création de séances pour les actes K coefficient 15 : 0 = Jamais, 1 = Toujours, 2 = Sauf pour les séjours Hospitalisation', + 'Règle de création de séances pour les actes K coefficient 15', + '1' + WHERE 'K15_SEANCE' NOT IN (SELECT code FROM activite.t_divers) + ; + + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT + p_sejours.no_sejour, + date(PREST_DATE_DEBUT) AS date, + 1::numeric AS nb_seances + FROM prod_web100t.DAT_PRESTATIONS_GAP + JOIN prod_web100t.DAT_DA ON PREST_DA = DA_OID + JOIN activite[PX].p_sejours ON DA_OID = p_sejours.code_original AND date(PREST_DATE_DEBUT) BETWEEN date_entree AND date_sortie + JOIN activite.t_divers ON t_divers.code = 'K15_SEANCE' + WHERE PREST_DELETED = 0 AND + ( + PREST_CODE = 'K' AND PREST_COEFF = 15 AND t_divers.valeur IN ('1','2') OR + PREST_CODE IN ('9605','9606') + ) + GROUP BY 1,2; + + INSERT INTO w_sejours_seances(no_sejour,date,nb_seances) + SELECT + p_sejours.no_sejour, + date(PREST_DATE_DEBUT) AS date, + 1::numeric AS nb_seances + FROM prod_web100t.DAT_PRESTATIONS_GAP + JOIN prod_web100t.DAT_DA ON PREST_DA = DA_OID + JOIN activite[PX].p_sejours ON DA_OID = p_sejours.code_original AND date(PREST_DATE_DEBUT) BETWEEN date_entree AND date_sortie + JOIN activite.t_divers ON t_divers.code = 'K15_SEANCE' + LEFT JOIN w_sejours_seances from_ghs ON from_ghs.no_sejour = p_sejours.no_sejour + WHERE from_ghs.no_sejour IS NULL AND + PREST_DELETED = 0 AND + ( + PREST_CODE = 'K' AND PREST_COEFF = 15 AND t_divers.valeur IN ('1','2') OR + PREST_CODE IN ('9605','9606') + ) + GROUP BY 1,2 + ; + + CREATE INDEX w_sejours_seances_i1 + ON w_sejours_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_sejours_seances.nb_seances + FROM w_sejours_seances + WHERE w_sejours_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_sejours_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_sejours_seances.nb_seances; + + -- seances selon GHS pmsi + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT + p_sejours.no_sejour, + date_entree AS date, + 1 AS nb_seances + FROM activite[PX].p_sejours + JOIN base.t_ghs ON p_sejours.ghs_id = t_ghs.oid + LEFT JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid + WHERE date_sortie - date_entree <= 1 AND + no_sejour != ALL (ARRAY (SELECT DISTINCT no_sejour FROM w_mouvements_sejour WHERE nb_seances > 0)::text[]) AND + ( + t_ghs.texte ilike '%séance%' OR + t_ghm.code LIKE '28%' + ); + + CREATE INDEX w_sejours_seances_i1 + ON w_sejours_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_sejours_seances.nb_seances + FROM w_sejours_seances + WHERE w_sejours_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_sejours_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_sejours_seances.nb_seances; + + + -- Nombre de seances pour forcage service seances + UPDATE w_mouvements_sejour + SET nb_seances = 1 + FROM activite[PX].p_sejours + WHERE p_sejours.no_sejour = w_mouvements_sejour.no_sejour AND + p_sejours.date_entree = w_mouvements_sejour.date AND + p_sejours.type_sejour = '5' AND + p_sejours.no_sejour != ALL (ARRAY (SELECT no_sejour FROM w_mouvements_sejour WHERE nb_seances <> 0)::text[]); + + -- une seule séance par jour pour un séjour de type séance + UPDATE w_mouvements_sejour + SET nb_seances = 0 + FROM ( + SELECT + w_mouvements_sejour.no_sejour, + date, + MAX(w_mouvements_sejour.heure_debut) as heure_debut + FROM w_mouvements_sejour + JOIN activite[PX].p_sejours ON sejour_id = p_sejours.oid + WHERE nb_seances > 0 AND type_sejour = '5' + GROUP BY 1,2 + HAVING COUNT(*) > 1 + ) ref + WHERE 1=1 + AND ref.no_sejour = w_mouvements_sejour.no_sejour + AND ref.date = w_mouvements_sejour.date + AND ref.heure_debut != w_mouvements_sejour.heure_debut + ; + + -- Prise en compte mutations ambulatoire + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'MUTATIONAMBU', + 'Traitement des mutations / ambulatoire', + '0', + '0=Prendre en compte mouvement d''entrée, 1=Prendre en compte mouvement de sortie' + WHERE 'MUTATIONAMBU' NOT IN (SELECT code FROM activite.t_divers); + ; + + DROP TABLE IF EXISTS w_correction_ambu; + CREATE TEMP TABLE w_correction_ambu AS + SELECT p_mouvements_sejour.no_sejour, + (MAX(Array[COALESCE(t_lits.est_prioritaire,'0'), to_char(heure_debut,'FM000000'),lieu_id::text]))[3]::bigint AS lieu_id, + MIN(heure_entree) AS heure_entree, + MAX(heure_sortie) AS heure_sortie + FROM w_mouvements_sejour p_mouvements_sejour + JOIN activite[PX].p_sejours ON p_mouvements_sejour.no_sejour = p_sejours.no_sejour + JOIN activite.t_divers ON t_divers.code = 'MUTATIONAMBU' ANd t_divers.valeur = '1' + JOIN activite[PX].t_lieux ON lieu_id = t_lieux.oid + JOIN activite[PX].t_lits ON t_lieux.lit_id = t_lits.oid + WHERE type_sejour = '2' AND code_sorti = '1' AND date_sortie = date_entree + GROUP BY 1 + HAVING count(*) > 1 AND count(DISTINCT date) = 1 + ; + + DELETE FROM w_mouvements_sejour p_mouvements_sejour + WHERE nb_ambulatoires = '0' AND + no_sejour = ANY (ARRAY (SELECT DISTINCT no_sejour FROM w_correction_ambu)::text[]) + ; + + UPDATE w_mouvements_sejour p_mouvements_sejour + SET lieu_id = w_correction_ambu.lieu_id, + heure_debut = heure_entree, + heure_fin = heure_sortie + FROM w_correction_ambu + WHERE p_mouvements_sejour.no_sejour = w_correction_ambu.no_sejour AND + p_mouvements_sejour.nb_ambulatoires = '1' + ; + + -- Lignes inutiles + DELETE FROM w_mouvements_sejour + WHERE + nb_entrees_directes = 0 AND + nb_sorties_directes = 0 AND + est_jour_hospitalisation <> '1' AND + nb_ambulatoires = 0 AND + nb_externes = 0 AND + nb_urgences = 0 AND + nb_seances = 0 AND + nb_entrees_mutation_service = 0 AND + nb_sorties_mutation_service = 0 AND + nb_entrees_mutation_etage = 0 AND + nb_sorties_mutation_etage = 0 AND + nb_entrees_mutation_activite = 0 AND + nb_sorties_mutation_activite = 0 AND + nb_entrees_mutation_unite_medicale = 0 AND + nb_sorties_mutation_unite_medicale = 0 AND + nb_jours_js_inclus = 0 AND + nb_jours_js_non_inclus = 0 AND + est_chambre_particuliere <> '1' AND + nb_chambres_particulieres = 0 AND + nb_bebes = 0; + + -- Doublons potentiels + DELETE FROM w_mouvements_sejour + USING ( + SELECT + no_sejour, date, heure_debut, MIN(CTID) AS keepCTID + FROM w_mouvements_sejour + WHERE heure_fin >= heure_debut + GROUP BY 1,2,3 + HAVING count(*) > 1) subview + WHERE w_mouvements_sejour.no_sejour = subview.no_sejour AND + w_mouvements_sejour.date = subview.date AND + w_mouvements_sejour.heure_debut = subview.heure_debut AND + subview.keepCTID <> w_mouvements_sejour.CTID; + + + -- Mise en production des mouvements + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_5'); + + INSERT INTO activite[PX].p_mouvements_sejour( + sejour_id, no_sejour, date, est_mouvement_previsionnel, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + jour_semaine, is_weekend) + SELECT sejour_id, no_sejour, date, est_mouvement_previsionnel ,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + jour_semaine, is_weekend + FROM w_mouvements_sejour + WHERE heure_fin >= heure_debut + ORDER BY no_sejour, sequence; + + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_5'); + + -- Lieux de sortie + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie AND p_mouvements_sejour.nb_sorties_directes = 1 + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL) ; + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = 0 + WHERE lieu_sortie_id IS NULL ; + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = 0 + WHERE p_sejours.code_prevu = '1' AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL); + + + UPDATE activite[PX].p_sejours + SET code_sorti = '1' + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + code_sorti = '0' AND + (nb_ambulatoires > 0 OR nb_externes > 0) AND + date_sortie <= now(); + + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + FROM activite[PX].t_lieux + JOIN activite[PX].t_services_facturation ON t_services_facturation.oid = service_facturation_id + WHERE lieu_sortie_id = t_lieux.oid AND + p_sejours.type_sejour <> '5' AND + p_sejours.type_sejour <> '1' AND + t_services_facturation.type_sejour NOT IN ('2','0sauf5') AND + no_sejour IN ( + SELECT no_sejour + FROM activite[PX].p_mouvements_sejour + WHERE nb_seances > 0); + + + UPDATE activite[PX].p_mouvements_sejour + SET nb_externes = 0, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + ( + nb_externes <> 0 OR + nb_ambulatoires <> 0 + ); + + + + + + -- Forcage service selon etage + UPDATE activite[PX].t_lieux + SET service_facturation_id = t_etages.service_force_id + FROM activite[PX].t_lits + JOIN activite[PX].t_etages ON etage_id = t_etages.oid + WHERE lit_id = t_lits.oid AND + service_force_id <> 0 AND + service_facturation_id IS DISTINCT FROM t_etages.service_force_id; + + + ]]> + + + + + + + + 1 + ) subview + WHERE FAC_FACTURE.FACT_OID = subview.FACT_OID',20); + + + ]]> + + + + + 1 AND FLT_IS_DIRECT = 0 THEN RD_MONTANT ELSE 0 END) AS RD_MONTANT_HON, + MAX(CASE WHEN RD_ETS = 1 THEN FR_DATE_ENC ELSE NULL END) AS FR_DATE_ENC_ETS, + MAX(CASE WHEN RD_ETS <> 1 AND FLT_IS_DIRECT = 0 THEN FR_DATE_ENC ELSE NULL END) AS FR_DATE_ENC_HON + FROM w_DAT_DA + JOIN prod_web100t.FAC_RGLMT_DETAILS ON RD_DA = DA_OID + JOIN prod_web100t.FAC_REGLEMENTS ON FR_OID = RD_REGLEMENT + JOIN prod_web100t.FAC_FACT_LIGNE_TIER ON RD_FACT_LINE = FLT_OID + GROUP BY 1; + + ALTER TABLE w_FAC_RGLMT_DETAILS ADD CONSTRAINT w_FAC_RGLMT_DETAILS_pkey PRIMARY KEY(RD_FACT_TIER); + + -- Extraction règlements si paiement direct comptabilisé + DROP TABLE IF EXISTS w_FAC_DIRECT_compta; + CREATE TEMP TABLE w_FAC_DIRECT_compta AS + SELECT FLT_FACTURE_TIER, + SUM(FLT_TOTAL_TTC) AS FLT_TOTAL_TTC + FROM prod_web100t.FAC_FACT_LIGNE_TIER + WHERE FLT_IS_ETS = 0 AND + FLT_IS_DIRECT = -1 + GROUP BY 1 + ; + + ALTER TABLE w_FAC_DIRECT_compta ADD CONSTRAINT w_FAC_DIRECT_compta_pkey PRIMARY KEY(FLT_FACTURE_TIER); + + + + DROP TABLE IF EXISTS w_ENV_FACTURE; + CREATE TEMP TABLE w_ENV_FACTURE AS + SELECT FACT_OID, + MAX(CASE WHEN ENV_TYPE_TIER = 'AMO' THEN COALESCE(ENV_TELETRANS, ENV_CREATED) ELSE NULL END) AS ENV_TELETRANS_AMO, + MAX(CASE WHEN ENV_TYPE_TIER = 'AMC' THEN COALESCE(ENV_TELETRANS, ENV_CREATED) ELSE NULL END) AS ENV_TELETRANS_AMC, + MAX(CASE WHEN ENV_TYPE_TIER = 'AMD' THEN COALESCE(ENV_TELETRANS, ENV_CREATED) ELSE NULL END) AS ENV_TELETRANS_AMD, + MAX(FACT_DATE) AS ENV_TELETRANS_CLI + FROM prod_web100t.FAC_FACTURE + JOIN prod_web100t.FAC_FACT_TIER ON FT_FACTURE = FACT_OID + LEFT JOIN prod_web100t.ENV_FACTURE ON FT_OID = EF_FACTURE + LEFT JOIN prod_web100t.ENV_ENVOI ON ENV_OID = EF_ENVOI + GROUP BY 1; + + ALTER TABLE w_ENV_FACTURE ADD CONSTRAINT w_ENV_FACTURE_pkey PRIMARY KEY(FACT_OID); + + + DROP TABLE IF EXISTS w_FAC_FACTURE_od; + CREATE TEMP TABLE w_FAC_FACTURE_od AS + SELECT FAC_FACTURE.FACT_OID, + CASE + WHEN FAC_FACTURE.FACT_TYPE = 2 AND FAC_FACTURE.FACT_TYPE <> FAC_FACTURE_PRED.FACT_TYPE THEN FAC_FACTURE_PRED.FACT_NUMERO + WHEN FAC_FACTURE.FACT_TYPE <> 2 AND FAC_FACTURE.FACT_TYPE <> FAC_FACTURE_NEXT.FACT_TYPE THEN FAC_FACTURE_NEXT.FACT_NUMERO + ELSE NULL END AS FACT_NUMERO_OD + FROM prod_web100t.FAC_FACTURE + LEFT JOIN prod_web100t.FAC_FACTURE FAC_FACTURE_PRED ON FAC_FACTURE.FACT_PRED_FACTURE = FAC_FACTURE_PRED.FACT_OID + LEFT JOIN prod_web100t.FAC_FACTURE FAC_FACTURE_NEXT ON FAC_FACTURE.FACT_NEXT_FACTURE = FAC_FACTURE_NEXT.FACT_OID + WHERE FAC_FACTURE.FACT_PRED_FACTURE <> 0 OR FAC_FACTURE.FACT_NEXT_FACTURE <> 0; + + ALTER TABLE w_FAC_FACTURE_od ADD CONSTRAINT w_FAC_FACTURE_od_pkey PRIMARY KEY(FACT_OID); + + + -- Date de comptabilisation + DROP TABLE IF EXISTS w_FAC_FACTURE_vente; + CREATE TEMP TABLE w_FAC_FACTURE_vente AS + SELECT FAC_FACTURE.FACT_OID, + MAX(FACT_TOTAL_ETS) AS w_FACT_TOTAL_ETS, + MAX(FACT_TOTAL_HO) AS w_FACT_TOTAL_HO, + MAX(FACT_DATE) AS w_FACT_DATE, + COALESCE(MIN(CASE + WHEN LNK_TYPE = 'FACT' THEN ECR_DATE + ELSE NULL END) + ,'20991231') AS ECR_DATE + FROM prod_web100t.FAC_FACTURE + LEFT JOIN w_CPT_ECRITURE_source_OP_LINK ON + FACT_OID = ECR_REF_OID AND + ECR_REF_TYPE = 'FACTURE' AND + LNK_TYPE IN ('FACT') AND + ( + ECR_TYPE IN ('CLIENT','IMPAYE','VENTE-DIRECTE','VENTE-DEP','VENTE-HON') AND LNK_ERROR = '' OR + LNK_JOURNAL = 'VE' + ) + GROUP BY 1; + + ALTER TABLE w_FAC_FACTURE_vente ADD CONSTRAINT w_FAC_FACTURE_vente_pkey PRIMARY KEY(FACT_OID); + + -- Forcage date ventes pour facturés non comptabilisés (sur les factures non comptabilisées, placer la date du jour) + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'WEB100T_FORCE_DATE_VENTE', + 'Antériorité date facture (jours) pour forçage date vente si non comptabilisé', + '3', + 'Antériorité date facture (jours) pour forçage date vente si non comptabilisé' + WHERE 'WEB100T_FORCE_DATE_VENTE' NOT IN (SELECT code FROM activite.t_divers); + ; + + + UPDATE w_FAC_FACTURE_vente + SET ECR_DATE = date(now()) + FROM prod_web100t.FAC_FACTURE + JOIN activite.t_divers ON t_divers.code = 'WEB100T_FORCE_DATE_VENTE' + WHERE FAC_FACTURE.FACT_OID = w_FAC_FACTURE_vente.FACT_OID AND + ECR_DATE = '20991231' AND + date(FACT_DATE) >= date(now() - (t_divers.valeur||' day')::interval) + ; + + -- Cas spécial de factures additives honoraires qui ne seraient pas trouvées (cf Saint Claude) + UPDATE w_FAC_FACTURE_vente + SET ECR_DATE = date_trunc('month',w_FACT_DATE)+interval '1 month' - interval '1 day' + WHERE date(ECR_DATE) = '20991231' AND + w_FACT_TOTAL_ETS = 0 AND + w_FACT_TOTAL_HO <> 0 + ; + + + DROP TABLE IF EXISTS w_FAC_FACTURE_cpt; + CREATE TEMP TABLE w_FAC_FACTURE_cpt AS + SELECT + FACT_OID, + + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER <> 'ETS' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_ETS, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'CLI' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_ETS_CLI, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMO' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_ETS_AMO, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMC' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_ETS_AMC, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMD' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_ETS_AMD, + + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER <> 'ETS' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_HON, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'CLI' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_HON_CLI, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMO' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_HON_AMO, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMC' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_HON_AMC, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMD' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_HON_AMD, + + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER <> 'ETS' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'CLI' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS_CLI, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMO' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS_AMO, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMC' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS_AMC, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMD' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS_AMD, + + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER <> 'ETS' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'CLI' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON_CLI, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMO' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON_AMO, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMC' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON_AMC, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMD' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON_AMD + + FROM prod_web100t.FAC_FACT_LIGNE_TIER + JOIN prod_web100t.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN w_FAC_FACTURE_vente ON FLT_FACTURE = FACT_OID + WHERE FLT_RECAP <> 0 + GROUP BY 1; + + ALTER TABLE w_FAC_FACTURE_cpt ADD CONSTRAINT w_FAC_FACTURE_cpt_pkey PRIMARY KEY(FACT_OID); + + + + + DROP TABLE IF EXISTS w_FAC_FACTURE; + CREATE TEMP TABLE w_FAC_FACTURE AS + SELECT FAC_FACTURE.FACT_OID, + FAC_FACTURE.FACT_NUMERO, + FAC_FACTURE.FACT_DA, + FAC_FACTURE.FACT_TYPE, + FAC_FACTURE.FACT_PERIODE, + FAC_FACTURE.FACT_DATE, + + MAX(CASE WHEN FT_TYPE_TIER = 'AMO' THEN FT_ORGANISME::text ELSE '' END) AS FT_ORGANISME_AMO, + MAX(CASE WHEN FT_TYPE_TIER = 'AMC' THEN FT_ORGANISME::text ELSE '' END) AS FT_ORGANISME_AMC, + MAX(CASE WHEN FT_TYPE_TIER = 'AMD' THEN FT_ORGANISME::text ELSE '' END) AS FT_ORGANISME_AMD, + + SUM(CASE WHEN FT_TYPE_TIER <> 'ETS' THEN FT_TOTAL_ETS ELSE 0 END) AS FACT_TOTAL_ETS, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN FT_TOTAL_ETS ELSE 0 END) AS FT_TOTAL_ETS_AMO, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN FT_TOTAL_ETS ELSE 0 END) AS FT_TOTAL_ETS_AMC, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN FT_TOTAL_ETS ELSE 0 END) AS FT_TOTAL_ETS_AMD, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN FT_TOTAL_ETS ELSE 0 END) AS FT_TOTAL_ETS_CLI, + + SUM(CASE WHEN FT_TYPE_TIER <> 'ETS' THEN FT_TOTAL_HO ELSE 0 END) AS FACT_TOTAL_HO, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN FT_TOTAL_HO ELSE 0 END) AS FT_TOTAL_HO_AMO, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN FT_TOTAL_HO ELSE 0 END) AS FT_TOTAL_HO_AMC, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN FT_TOTAL_HO ELSE 0 END) AS FT_TOTAL_HO_AMD, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN FT_TOTAL_HO ELSE 0 END) AS FT_TOTAL_HO_CLI, + + '20991231'::date AS ENV_TELETRANS, + MAX(CASE WHEN FT_TYPE_TIER = 'AMO' THEN COALESCE(ENV_TELETRANS_AMO,'20991231') ELSE '00010101' END) AS ENV_TELETRANS_AMO, + MAX(CASE WHEN FT_TYPE_TIER = 'AMC' THEN COALESCE(ENV_TELETRANS_AMC,'20991231') ELSE '00010101' END) AS ENV_TELETRANS_AMC, + MAX(CASE WHEN FT_TYPE_TIER = 'AMD' THEN COALESCE(ENV_TELETRANS_AMD,'20991231') ELSE '00010101' END) AS ENV_TELETRANS_AMD, + MAX(CASE WHEN FT_TYPE_TIER = 'CLI' THEN COALESCE(ENV_TELETRANS_CLI,'20991231') ELSE '00010101' END) AS ENV_TELETRANS_CLI, + + '1'::text AS ENV_Q_TELETRANS, + '1'::text AS ENV_Q_TELETRANS_AMO, + '1'::text AS ENV_Q_TELETRANS_AMC, + '1'::text AS ENV_Q_TELETRANS_AMD, + '1'::text AS ENV_Q_TELETRANS_CLI, + + SUM(COALESCE(RD_MONTANT_ETS,0)) AS RD_MONTANT_ETS, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN COALESCE(RD_MONTANT_ETS,0) ELSE 0 END) AS RD_MONTANT_ETS_AMO, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN COALESCE(RD_MONTANT_ETS,0) ELSE 0 END) AS RD_MONTANT_ETS_AMC, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN COALESCE(RD_MONTANT_ETS,0) ELSE 0 END) AS RD_MONTANT_ETS_AMD, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN COALESCE(RD_MONTANT_ETS,0) ELSE 0 END) AS RD_MONTANT_ETS_CLI, + + SUM(COALESCE(RD_MONTANT_HON,0)+COALESCE(FLT_TOTAL_TTC,0)) AS RD_MONTANT_HON, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN COALESCE(RD_MONTANT_HON,0)+COALESCE(FLT_TOTAL_TTC,0) ELSE 0 END) AS RD_MONTANT_HON_AMO, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN COALESCE(RD_MONTANT_HON,0)+COALESCE(FLT_TOTAL_TTC,0) ELSE 0 END) AS RD_MONTANT_HON_AMC, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN COALESCE(RD_MONTANT_HON,0)+COALESCE(FLT_TOTAL_TTC,0) ELSE 0 END) AS RD_MONTANT_HON_AMD, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN COALESCE(RD_MONTANT_HON,0)+COALESCE(FLT_TOTAL_TTC,0) ELSE 0 END) AS RD_MONTANT_HON_CLI, + + MAX(GREATEST(COALESCE(FR_DATE_ENC_ETS,'00010101'), COALESCE(FR_DATE_ENC_HON,'00010101'))) AS FR_DATE_ENC, + + MAX(COALESCE(FR_DATE_ENC_ETS,'00010101')) AS FR_DATE_ENC_ETS, + MAX(CASE WHEN FT_TYPE_TIER = 'AMO' THEN COALESCE(FR_DATE_ENC_ETS,'00010101') ELSE '00010101' END) AS FR_DATE_ENC_ETS_AMO, + MAX(CASE WHEN FT_TYPE_TIER = 'AMC' THEN COALESCE(FR_DATE_ENC_ETS,'00010101') ELSE '00010101' END) AS FR_DATE_ENC_ETS_AMC, + MAX(CASE WHEN FT_TYPE_TIER = 'AMD' THEN COALESCE(FR_DATE_ENC_ETS,'00010101') ELSE '00010101' END) AS FR_DATE_ENC_ETS_AMD, + MAX(CASE WHEN FT_TYPE_TIER = 'CLI' THEN COALESCE(FR_DATE_ENC_ETS,'00010101') ELSE '00010101' END) AS FR_DATE_ENC_ETS_CLI, + + MAX(COALESCE(FR_DATE_ENC_HON,'00010101')) AS FR_DATE_ENC_HON, + MAX(CASE WHEN FT_TYPE_TIER = 'AMO' THEN COALESCE(FR_DATE_ENC_HON,'00010101') ELSE '00010101' END) AS FR_DATE_ENC_HON_AMO, + MAX(CASE WHEN FT_TYPE_TIER = 'AMC' THEN COALESCE(FR_DATE_ENC_HON,'00010101') ELSE '00010101' END) AS FR_DATE_ENC_HON_AMC, + MAX(CASE WHEN FT_TYPE_TIER = 'AMD' THEN COALESCE(FR_DATE_ENC_HON,'00010101') ELSE '00010101' END) AS FR_DATE_ENC_HON_AMD, + MAX(CASE WHEN FT_TYPE_TIER = 'CLI' THEN COALESCE(FR_DATE_ENC_HON,'00010101') ELSE '00010101' END) AS FR_DATE_ENC_HON_CLI + + + FROM w_DAT_DA + JOIN prod_web100t.FAC_FACTURE ON FACT_DA = DA_OID + LEFT JOIN prod_web100t.FAC_FACT_TIER ON FT_FACTURE = FAC_FACTURE.FACT_OID + LEFT JOIN w_FAC_RGLMT_DETAILS ON FT_OID = RD_FACT_TIER + LEFT JOIN w_FAC_DIRECT_compta ON FT_OID = FLT_FACTURE_TIER + LEFT JOIN w_ENV_FACTURE ON FT_FACTURE = w_ENV_FACTURE.FACT_OID + GROUP BY 1,2,3,4,5,6 + ORDER BY 1; + + ALTER TABLE w_FAC_FACTURE ADD CONSTRAINT w_FAC_FACTURE_pkey PRIMARY KEY(FACT_OID); + + + UPDATE w_FAC_FACTURE + SET ENV_TELETRANS_AMO = FACT_DATE, + ENV_Q_TELETRANS_AMO = '0' + WHERE ENV_TELETRANS_AMO IN ('20991231', '00010101') AND FT_TOTAL_ETS_AMO = 0 AND FT_TOTAL_HO_AMO = 0; + + UPDATE w_FAC_FACTURE + SET ENV_Q_TELETRANS_AMO = '0' + WHERE ENV_TELETRANS_AMO IN ('20991231', '00010101') ; + + UPDATE w_FAC_FACTURE + SET ENV_TELETRANS_AMC = FACT_DATE, + ENV_Q_TELETRANS_AMC = '0' + WHERE ENV_TELETRANS_AMC IN ('20991231', '00010101') AND FT_TOTAL_ETS_AMC = 0 AND FT_TOTAL_HO_AMC = 0; + + UPDATE w_FAC_FACTURE + SET ENV_Q_TELETRANS_AMC = '0' + WHERE ENV_TELETRANS_AMC IN ('20991231', '00010101') ; + + UPDATE w_FAC_FACTURE + SET ENV_TELETRANS_AMD = FACT_DATE, + ENV_Q_TELETRANS_AMD = '0' + WHERE ENV_TELETRANS_AMD IN ('20991231', '00010101') AND FT_TOTAL_ETS_AMD = 0 AND FT_TOTAL_HO_AMD = 0; + + UPDATE w_FAC_FACTURE + SET ENV_Q_TELETRANS_AMD = '0' + WHERE ENV_TELETRANS_AMD IN ('20991231', '00010101') ; + + + UPDATE w_FAC_FACTURE + SET ENV_TELETRANS = GREATEST(ENV_TELETRANS_AMO,ENV_TELETRANS_AMC,ENV_TELETRANS_AMD,ENV_TELETRANS_CLI); + + + UPDATE w_FAC_FACTURE + SET ENV_Q_TELETRANS = '0' + WHERE ENV_TELETRANS IN ('20991231', '00010101') ; + + -- Montants honoraires comptabilisés en clinique + -- Ces montants ne sont pas compté en montant facturé chez Web100T. Il faut les changer de type dans les totaux + + DROP TABLE IF EXISTS w_FAC_FACTURE_HON_ETS; + CREATE TEMP TABLE w_FAC_FACTURE_HON_ETS AS + SELECT FAC_FACTURE.FACT_OID, + SUM(FLT_TOTAL_TTC) AS HON_ETS, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN FLT_TOTAL_TTC ELSE 0 END) AS HON_ETS_AMO, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN FLT_TOTAL_TTC ELSE 0 END) AS HON_ETS_AMC, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN FLT_TOTAL_TTC ELSE 0 END) AS HON_ETS_AMD, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN FLT_TOTAL_TTC ELSE 0 END) AS HON_ETS_CLI + FROM prod_web100t.FAC_FACT_LIGNE_TIER + JOIN prod_web100t.FAC_FACTURE ON FLT_FACTURE = FACT_OID + JOIN prod_web100t.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN prod_web100t.FAC_FACT_LIGNE ON FLT_LIGNE_FACTURE = LI_OID + WHERE FLT_IS_ETS = 1 AND LI_TYPE_B2 = '4' AND FLT_RECAP <> 0 + GROUP BY 1; + + UPDATE w_FAC_FACTURE SET + FACT_TOTAL_ETS = FACT_TOTAL_ETS - HON_ETS, + FT_TOTAL_ETS_AMO = FT_TOTAL_ETS_AMO - HON_ETS_AMO, + FT_TOTAL_ETS_AMC = FT_TOTAL_ETS_AMC - HON_ETS_AMC, + FT_TOTAL_ETS_AMD = FT_TOTAL_ETS_AMD - HON_ETS_AMD, + FT_TOTAL_ETS_CLI = FT_TOTAL_ETS_CLI - HON_ETS_CLI, + FACT_TOTAL_HO = FACT_TOTAL_HO + HON_ETS, + FT_TOTAL_HO_AMO = FT_TOTAL_HO_AMO + HON_ETS_AMO, + FT_TOTAL_HO_AMC = FT_TOTAL_HO_AMC + HON_ETS_AMC, + FT_TOTAL_HO_AMD = FT_TOTAL_HO_AMD + HON_ETS_AMD, + FT_TOTAL_HO_CLI = FT_TOTAL_HO_CLI + HON_ETS_CLI + FROM w_FAC_FACTURE_HON_ETS + WHERE w_FAC_FACTURE_HON_ETS.FACT_OID = w_FAC_FACTURE.FACT_OID; + + + + -- Traitement des impayés comptabilisés en ventes + DROP TABLE IF EXISTS w_FAC_FACT_LIGNE_TIER_IMPAYE; + CREATE TEMP TABLE w_FAC_FACT_LIGNE_TIER_IMPAYE AS + SELECT + FI_FACTURE AS FACT_IMPAYE_OID, + to_char(FI_DATE,'YYMM') AS MOIS_IMPAYE, + FIL_CREANCE AS FLT_IMPAYE_OID, + FI_COMPTA, + date(MAX(FI_DATE)) AS ECR_IMPAYE_DATE, + + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS, + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'CLI' THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS_CLI, + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMO' THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS_AMO, + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMC' THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS_AMC, + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMD' THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS_AMD, + + SUM(CASE WHEN FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON, + SUM(CASE WHEN FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'CLI' THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON_CLI, + SUM(CASE WHEN FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMO' THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON_AMO, + SUM(CASE WHEN FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMC' THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON_AMC, + SUM(CASE WHEN FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMD' THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON_AMD + FROM prod_web100t.FAC_FACT_IMPAYE + JOIN prod_web100t.FAC_FACT_IMPAYE_LINE ON FIL_IMPAYE = FAC_FACT_IMPAYE.FI_OID + JOIN prod_web100t.FAC_FACT_LIGNE_TIER ON FIL_CREANCE = FLT_OID + JOIN prod_web100t.FAC_FACT_TIER ON FI_FACT_TIER = FT_OID + JOIN w_FAC_FACTURE ON FI_FACTURE = FACT_OID + GROUP BY 1,2,3,4 + ORDER BY 1,2,3; + + DROP TABLE IF EXISTS w_FAC_FACT_IMPAYE; + CREATE Temp table w_FAC_FACT_IMPAYE AS + SELECT + FACT_IMPAYE_OID, + MOIS_IMPAYE, + FI_COMPTA, + MAX(ECR_IMPAYE_DATE) AS ECR_IMPAYE_DATE, + + SUM(FLT_TOTAL_IMPAYE_ETS) AS FT_TOTAL_IMPAYE_ETS, + SUM(FLT_TOTAL_IMPAYE_ETS_CLI) AS FT_TOTAL_IMPAYE_ETS_CLI, + SUM(FLT_TOTAL_IMPAYE_ETS_AMO) AS FT_TOTAL_IMPAYE_ETS_AMO, + SUM(FLT_TOTAL_IMPAYE_ETS_AMC) AS FT_TOTAL_IMPAYE_ETS_AMC, + SUM(FLT_TOTAL_IMPAYE_ETS_AMD) AS FT_TOTAL_IMPAYE_ETS_AMD, + + SUM(FLT_TOTAL_IMPAYE_HON) AS FT_TOTAL_IMPAYE_HON, + SUM(FLT_TOTAL_IMPAYE_HON_CLI) AS FT_TOTAL_IMPAYE_HON_CLI, + SUM(FLT_TOTAL_IMPAYE_HON_AMO) AS FT_TOTAL_IMPAYE_HON_AMO, + SUM(FLT_TOTAL_IMPAYE_HON_AMC) AS FT_TOTAL_IMPAYE_HON_AMC, + SUM(FLT_TOTAL_IMPAYE_HON_AMD) AS FT_TOTAL_IMPAYE_HON_AMD + FROM w_FAC_FACT_LIGNE_TIER_IMPAYE + GROUP BY 1,2,3; + + + + DROP TABLE IF EXISTS w_factures; + CREATE TEMP TABLE w_factures AS + SELECT + w_FAC_FACTURE.FACT_OID, + + nextval('activite[PX].s_factures'::regclass) AS oid, + no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.lieu_sortie_id, + FACT_NUMERO AS no_facture, + + FACT_NUMERO AS no_facture_reference, + 0::bigint AS facture_reference_id, + COALESCE(FACT_NUMERO_OD,'') AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id, + + 0::bigint AS IMPAYE, + + COALESCE(t_tiers_payant_1.oid,0) AS tiers_payant_1_id, + COALESCE(t_tiers_payant_2.oid,0) AS tiers_payant_2_id, + COALESCE(t_tiers_payant_22.oid,0) AS tiers_payant_22_id, + p_sejours.tiers_payant_0_id, + + COALESCE(PF_DEBUT,date_entree) AS date_debut, + COALESCE(PF_FIN,date_sortie) AS date_fin, + CASE + WHEN FACT_TYPE = 1 AND FACT_NUMERO_OD IS NOT NULL THEN 'X' + WHEN FACT_TYPE = 4 AND FACT_NUMERO_OD IS NOT NULL THEN 'X' + WHEN FACT_TYPE = 1 THEN '0' + WHEN FACT_TYPE = 2 THEN '1' + WHEN FACT_TYPE = 4 THEN '2' + ELSE '0' END AS type_facture, + + '1'::text AS code_facture, + w_FAC_FACTURE.FACT_DATE AS date_facture, + 0::numeric AS delai_facture, + + CASE WHEN ECR_DATE <> '20991231' THEN '1'::text ELSE '0'::text END AS code_vente, + ECR_DATE AS date_vente, + extract('year' FROM ECR_DATE) * 100 + extract('month' FROM ECR_DATE) AS mois_vente, + + '0'::text AS code_cloture, + + '20991231'::date AS date_encours, + + ''::text AS particularite_t2a, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id, + p_sejours.code_cp_demandee, + + 0::numeric AS nb_rejets, + + FACT_TOTAL_ETS AS montant_facture_c, + FACT_TOTAL_HO AS montant_facture_h, + FT_TOTAL_ETS_CLI AS montant_facture_0_c, + FT_TOTAL_HO_CLI AS montant_facture_0_h, + FT_TOTAL_ETS_AMO AS montant_facture_1_c, + FT_TOTAL_HO_AMO AS montant_facture_1_h, + FT_TOTAL_ETS_AMC AS montant_facture_2_c, + FT_TOTAL_HO_AMC AS montant_facture_2_h, + FT_TOTAL_ETS_AMD AS montant_facture_22_c, + FT_TOTAL_HO_AMD AS montant_facture_22_h, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_ETS,0) AS montant_comptabilise_c, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_HON,0) AS montant_comptabilise_h, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_ETS_CLI,0) AS montant_comptabilise_0_c, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_HON_CLI,0) AS montant_comptabilise_0_h, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_ETS_AMO,0) AS montant_comptabilise_1_c, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_HON_AMO,0) AS montant_comptabilise_1_h, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_ETS_AMC,0) AS montant_comptabilise_2_c, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_HON_AMC,0) AS montant_comptabilise_2_h, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_ETS_AMD,0) AS montant_comptabilise_22_c, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_HON_AMD,0) AS montant_comptabilise_22_h, + 0::numeric AS montant_comptabilise_budget_global_c, + + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + + ENV_TELETRANS AS date_expedition, + ENV_TELETRANS_CLI AS date_expedition_0, + ENV_TELETRANS_AMO AS date_expedition_1, + ENV_TELETRANS_AMC AS date_expedition_2, + ENV_TELETRANS_AMD AS date_expedition_22, + ENV_Q_TELETRANS_CLI AS code_expedie_0, + ENV_Q_TELETRANS_AMO AS code_expedie_1, + ENV_Q_TELETRANS_AMC AS code_expedie_2, + ENV_Q_TELETRANS_AMD AS code_expedie_22, + ''::text AS no_bordereau_0, + ''::text AS no_bordereau_1, + ''::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + 0::numeric AS delai_expedition, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + + RD_MONTANT_ETS AS montant_regle_c, + RD_MONTANT_HON AS montant_regle_h, + RD_MONTANT_ETS_CLI AS montant_regle_0_c, + RD_MONTANT_HON_CLI AS montant_regle_0_h, + RD_MONTANT_ETS_AMO AS montant_regle_1_c, + RD_MONTANT_HON_AMO AS montant_regle_1_h, + RD_MONTANT_ETS_AMC AS montant_regle_2_c, + RD_MONTANT_HON_AMC AS montant_regle_2_h, + RD_MONTANT_ETS_AMD AS montant_regle_22_c, + RD_MONTANT_HON_AMD AS montant_regle_22_h, + + FR_DATE_ENC AS date_solde, + FR_DATE_ENC_ETS AS date_solde_c, + FR_DATE_ENC_HON AS date_solde_h, + FR_DATE_ENC_ETS_CLI AS date_solde_0_c, + FR_DATE_ENC_HON_CLI AS date_solde_0_h, + FR_DATE_ENC_ETS_AMO AS date_solde_1_c, + FR_DATE_ENC_HON_AMO AS date_solde_1_h, + FR_DATE_ENC_ETS_AMC AS date_solde_2_c, + FR_DATE_ENC_HON_AMC AS date_solde_2_h, + FR_DATE_ENC_ETS_AMD AS date_solde_22_c, + FR_DATE_ENC_HON_AMD AS date_solde_22_h, + 0::numeric AS delai_solde, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + + '00010101'::date AS date_solde_reference, + '00010101'::date AS date_solde_reference_c, + '00010101'::date AS date_solde_reference_h, + '00010101'::date AS date_solde_reference_0_c, + '00010101'::date AS date_solde_reference_1_c, + '00010101'::date AS date_solde_reference_2_c, + '00010101'::date AS date_solde_reference_22_c, + '00010101'::date AS date_solde_reference_0_h, + '00010101'::date AS date_solde_reference_1_h, + '00010101'::date AS date_solde_reference_2_h, + '00010101'::date AS date_solde_reference_22_h + + FROM w_FAC_FACTURE + JOIN activite[PX].p_sejours ON FACT_DA = p_sejours.code_original AND p_sejours.etat = '' + LEFT JOIN w_FAC_FACTURE_vente ON w_FAC_FACTURE.FACT_OID = w_FAC_FACTURE_vente.FACT_OID + LEFT JOIN w_FAC_FACTURE_cpt ON w_FAC_FACTURE.FACT_OID = w_FAC_FACTURE_cpt.FACT_OID + LEFT JOIN prod_web100t.FAC_PERIODE_FACTU ON FACT_PERIODE = PF_OID + LEFT JOIN w_FAC_FACTURE_od ON w_FAC_FACTURE.FACT_OID = w_FAC_FACTURE_od.FACT_OID + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_1 ON FT_ORGANISME_AMO = t_tiers_payant_1.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON FT_ORGANISME_AMC = t_tiers_payant_2.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_22 ON FT_ORGANISME_AMD = t_tiers_payant_22.code_original; + + ANALYSE w_factures + ; + + CREATE INDEX w_factures_i1 ON w_factures USING btree (FACT_OID) + ; + + + -- Facture fictive pour impayés + INSERT INTo w_factures + SELECT + w_FAC_FACTURE.FACT_OID, + + nextval('activite[PX].s_factures'::regclass) AS oid, + no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.lieu_sortie_id, + FACT_NUMERO || '-IM' || FI_COMPTA::text AS no_facture, + + FACT_NUMERO AS no_facture_reference, + 0::bigint AS facture_reference_id, + FACT_NUMERO AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id, + + FI_COMPTA AS IMPAYE, + + COALESCE(t_tiers_payant_1.oid,0) AS tiers_payant_1_id, + COALESCE(t_tiers_payant_2.oid,0) AS tiers_payant_2_id, + COALESCE(t_tiers_payant_22.oid,0) AS tiers_payant_22_id, + p_sejours.tiers_payant_0_id, + + COALESCE(PF_DEBUT,date_entree) AS date_debut, + COALESCE(PF_FIN,date_sortie) AS date_fin, + 'X' AS type_facture, + + '1'::text AS code_facture, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_facture, + 0::numeric AS delai_facture, + + '1' AS code_vente, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_vente, + extract('year' FROM w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE) * 100 + extract('month' FROM w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE) AS mois_vente, + + '0'::text AS code_cloture, + + '20991231'::date AS date_encours, + + ''::text AS particularite_t2a, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id, + p_sejours.code_cp_demandee, + + 0::numeric AS nb_rejets, + + 0 AS montant_facture_c, + 0 AS montant_facture_h, + 0 AS montant_facture_0_c, + 0 AS montant_facture_0_h, + 0 AS montant_facture_1_c, + 0 AS montant_facture_1_h, + 0 AS montant_facture_2_c, + 0 AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_ETS AS montant_comptabilise_c, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_HON AS montant_comptabilise_h, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_ETS_CLI AS montant_comptabilise_0_c, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_HON_CLI AS montant_comptabilise_0_h, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_ETS_AMO AS montant_comptabilise_1_c, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_HON_AMO AS montant_comptabilise_1_h, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_ETS_AMC AS montant_comptabilise_2_c, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_HON_AMC AS montant_comptabilise_2_h, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_ETS_AMD AS montant_comptabilise_22_c, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_HON_AMD AS montant_comptabilise_22_h, + 0::numeric AS montant_comptabilise_budget_global_c, + + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + + '20991231'::date AS date_expedition, + '20991231'::date AS date_expedition_0, + '20991231'::date AS date_expedition_1, + '20991231'::date AS date_expedition_2, + '20991231'::date AS date_expedition_22, + '0'::text AS code_expedie_0, + '0'::text AS code_expedie_1, + '0'::text AS code_expedie_2, + '0'::text AS code_expedie_22, + ''::text AS no_bordereau_0, + ''::text AS no_bordereau_1, + ''::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + 0::numeric AS delai_expedition, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + 0::numeric AS montant_regle_1_h, + 0::numeric AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde_c, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde_h, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde_0_c, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde_0_h, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde_1_c, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde_1_h, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde_2_c, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde_2_h, + '00010101'::date AS date_solde_22_c, + '00010101'::date AS date_solde_22_h, + 0::numeric AS delai_solde, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + + '00010101'::date AS date_solde_reference, + '00010101'::date AS date_solde_reference_c, + '00010101'::date AS date_solde_reference_h, + '00010101'::date AS date_solde_reference_0_c, + '00010101'::date AS date_solde_reference_1_c, + '00010101'::date AS date_solde_reference_2_c, + '00010101'::date AS date_solde_reference_22_c, + '00010101'::date AS date_solde_reference_0_h, + '00010101'::date AS date_solde_reference_1_h, + '00010101'::date AS date_solde_reference_2_h, + '00010101'::date AS date_solde_reference_22_h + + FROM w_FAC_FACTURE + JOIN activite[PX].p_sejours ON FACT_DA = p_sejours.code_original AND p_sejours.etat = '' + JOIN w_FAC_FACT_IMPAYE ON w_FAC_FACTURE.FACT_OID = w_FAC_FACT_IMPAYE.FACT_IMPAYE_OID + LEFT JOIN prod_web100t.FAC_PERIODE_FACTU ON FACT_PERIODE = PF_OID + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_1 ON FT_ORGANISME_AMO = t_tiers_payant_1.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON FT_ORGANISME_AMC = t_tiers_payant_2.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_22 ON FT_ORGANISME_AMD = t_tiers_payant_22.code_original; + + UPDATE w_factures SET + facture_od_avoir_id = w_factures_od_avoir.oid + FROM w_factures w_factures_od_avoir + WHERE w_factures.no_facture_od_avoir = w_factures_od_avoir.no_facture AND w_factures.no_facture_od_avoir <> ''; + + + + + + UPDATE w_factures SET + date_debut = date_entree, + date_fin = CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid AND + avec_facturation_intermediaire IS DISTINCT FROM '1' + WHERE w_factures.no_sejour = p_sejours.no_sejour AND + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END - date_entree < 30 AND + ( + w_factures.date_debut <> date_entree OR + w_factures.date_fin <> CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + ); + + + + DROP TABLE IF EXISTS w_sejours_facture_reference; + CREATE TEMP TABLE w_sejours_facture_reference AS + SELECT + no_sejour, + date_debut, + MAX(date_fin) AS date_fin, + MAX(w_factures.no_facture) AS no_facture_last, + MAX(CASE WHEN type_facture = '0' THEN w_factures.no_facture ELSE null END) AS no_facture_reference_last, + MAX(CASE WHEN type_facture <> '1' THEN w_factures.no_facture ELSE null END) AS no_facture_reference_last_2, + MAX(w_factures.oid) AS facture_id_last, + MAX(CASE WHEN type_facture = '0' THEN w_factures.oid ELSE null END) AS facture_id_reference_last, + MAX(CASE WHEN type_facture <> '1' THEN w_factures.oid ELSE null END) AS facture_id_reference_last_2 + FROM w_factures + GROUP BY 1,2; + + CREATE INDEX w_sejours_facture_reference_i1 + ON w_sejours_facture_reference + USING btree + (no_sejour); + + UPDATE w_sejours_facture_reference + SET facture_id_last = w_factures_references.oid + FROM w_factures w_factures_references + WHERE w_sejours_facture_reference.no_facture_last = w_factures_references.no_facture + AND w_sejours_facture_reference.facture_id_last <> w_factures_references.oid; + + + UPDATE w_sejours_facture_reference + SET facture_id_reference_last = w_factures_references.oid + FROM w_factures w_factures_references + WHERE w_sejours_facture_reference.no_facture_reference_last = w_factures_references.no_facture + AND w_sejours_facture_reference.facture_id_reference_last <> w_factures_references.oid; + + UPDATE w_sejours_facture_reference + SET facture_id_reference_last_2 = w_factures_references.oid + FROM w_factures w_factures_references + WHERE w_sejours_facture_reference.no_facture_reference_last_2 = w_factures_references.no_facture + AND w_sejours_facture_reference.facture_id_reference_last_2 <> w_factures_references.oid; + + + + UPDATE w_factures + SET + no_facture_reference = COALESCE(no_facture_reference_last, no_facture_reference_last_2, no_facture_last), + facture_reference_id = COALESCE(facture_id_reference_last, facture_id_reference_last_2, facture_id_last) + FROM w_sejours_facture_reference + WHERE w_factures.no_sejour = w_sejours_facture_reference.no_sejour AND + w_factures.date_debut BETWEEN w_sejours_facture_reference.date_debut AND w_sejours_facture_reference.date_fin AND + ( + no_facture_reference IS DISTINCT FROM COALESCE(no_facture_reference_last, no_facture_reference_last_2, no_facture_last) OR + facture_reference_id IS DISTINCT FROM COALESCE(facture_id_reference_last, facture_id_reference_last_2, facture_id_last) + ); + + + + + UPDATE w_factures + SET no_facture_reference = no_facture + WHERE (no_facture_reference IS NULL OR no_facture_reference = ''); + + + UPDATE w_factures + SET type_facture = '0' + WHERE w_factures.type_facture = '2' AND + w_factures.no_facture = w_factures.no_facture_reference; + + UPDATE w_factures + SET type_facture = '2' + WHERE w_factures.type_facture = '0' AND + w_factures.no_facture <> w_factures.no_facture_reference; + + UPDATE w_factures + SET facture_reference_id = w_factures_references.oid + FROM w_factures w_factures_references + WHERE w_factures.no_facture_reference = w_factures_references.no_facture + AND w_factures.facture_reference_id <> w_factures_references.oid; + + + + -- Ajout des factures + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_14'); + + INSERT INTO activite[PX].p_factures( + oid, + no_sejour, + sejour_id, + no_facture, + + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + + date_debut, + date_fin, + type_facture, + + code_facture, + date_facture, + delai_facture, + + code_vente, + date_vente, + mois_vente, + + code_cloture, + + date_encours, + + particularite_t2a, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + + nb_rejets, + + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_comptabilise_budget_global_c, + + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + delai_solde, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + + date_solde_reference, + date_solde_reference_c, + date_solde_reference_h, + date_solde_reference_0_c, + date_solde_reference_1_c, + date_solde_reference_2_c, + date_solde_reference_22_c, + date_solde_reference_0_h, + date_solde_reference_1_h, + date_solde_reference_2_h, + date_solde_reference_22_h + + + + ) + SELECT + oid, + no_sejour, + sejour_id, + no_facture, + + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + + date_debut, + date_fin, + type_facture, + + code_facture, + date_facture, + delai_facture, + + code_vente, + date_vente, + mois_vente, + + code_cloture, + + date_encours, + + particularite_t2a, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + + nb_rejets, + + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_comptabilise_budget_global_c, + + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + delai_solde, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + + date_solde_reference, + date_solde_reference_c, + date_solde_reference_h, + date_solde_reference_0_c, + date_solde_reference_1_c, + date_solde_reference_2_c, + date_solde_reference_22_c, + date_solde_reference_0_h, + date_solde_reference_1_h, + date_solde_reference_2_h, + date_solde_reference_22_h + + FROM w_factures; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_14'); + + + + -- Séjours cloturés sans facture, créer une facture fictive + + + -- Séjours sans facture + + DROP TABLE IF EXISTS w_factures_trous; + CREATE TEMP TABLE w_factures_trous AS + SELECT + p_sejours.finess, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour, + p_sejours.date_entree, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.code_cp_demandee, + COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire, + p_sejours.code_sorti, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie, + MAX(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END ELSE p_factures.date_fin END) AS date_fin_facture, + date(MAX(COALESCE(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 AND code_sorti = '1' THEN date_sortie ELSE p_factures.date_fin END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours + FROM activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND no_facture NOT LIKE 'E%' AND type_facture IS DISTINCT FROM 'P' + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE p_sejours.etat = '' AND p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND date_entree <= now() AND p_sejours.type_sejour <> '6' AND p_sejours.type_sejour <> '9' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12; + + + INSERT INTO activite[PX].p_factures( + finess, + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee, + date_debut, + date_fin) + SELECT + finess, + sejour_id, + no_sejour, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || substr(p_calendrier.mois,3,4) ELSE '' END, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || substr(p_calendrier.mois,3,4) ELSE '' END, + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee , + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13; + + ]]> + + + + + + + + 0 AND ART_CODE NOT IN ('TDE', 'TSE', 'ST1', 'ST2', 'ST3') THEN PREST_QUANTITE ELSE 1 END AS nb_rubrique, + CASE WHEN PREST_COEFF <> 0 AND PREST_PU <> 0 THEN PREST_COEFF ELSE 1 END AS coefficient, + rubrique_facturation_id, + prestation_id, + CASE + WHEN PREST_PU <> 0 THEN PREST_PU + WHEN PREST_QUANTITE <> 0 THEN PREST_MFE_ETS / CASE WHEN ART_CODE NOT IN ('TDE', 'TSE', 'ST1', 'ST2', 'ST3') THEN PREST_QUANTITE ELSE 1 END + ELSE PREST_MFE_ETS END AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id, + w_ART_ARTICLES.ucd_id, + w_ART_ARTICLES.lpp_id + FROM prod_web100t.DAT_PRESTATIONS_GAP + JOIN prod_web100t.DAT_DA ON PREST_DA = DA_OID + JOIN activite[PX].p_sejours ON DA_OID = p_sejours.code_original AND date(PREST_DATE_DEBUT) BETWEEN date_entree AND date_sortie + JOIN activite[PX].p_factures ON p_factures.no_sejour = p_sejours.no_sejour AND type_facture = 'E' AND date(PREST_DATE_DEBUT) BETWEEN date_debut AND date_fin + JOIN w_ART_ARTICLES ON PREST_ARTICLE = ART_OID + WHERE ART_CODE NOT IN ('GHS', 'EXH', 'I01', 'CCAM') AND PREST_MFE_ETS > 0 AND PREST_ENTENTE_DIRECTE = 0 AND PREST_DELETED = 0 AND + PREST_QUANTITE < 99999 AND + NOT (PREST_QUANTITE > 1 AND (date(PREST_DATE_FIN) - date(PREST_DATE_DEBUT) + 1) = PREST_QUANTITE ) + ; + + + -- Eclatement des prestations par jour + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + no_facture, + facture_id, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id, + ucd_id, + lpp_id) + SELECT + p_factures.no_facture, + p_factures.oid AS facture_id, + p_calendrier.date AS date_debut, + p_calendrier.date AS date_fin, + 1 AS nb_rubrique, + CASE WHEN PREST_COEFF <> 0 AND PREST_PU <> 0 THEN PREST_COEFF ELSE 1 END AS coefficient, + rubrique_facturation_id, + prestation_id, + CASE + WHEN PREST_PU <> 0 THEN PREST_PU + WHEN PREST_QUANTITE <> 0 THEN PREST_MFE_ETS / PREST_QUANTITE + ELSE PREST_MFE_ETS END AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id, + w_ART_ARTICLES.ucd_id, + w_ART_ARTICLES.lpp_id + FROM prod_web100t.DAT_PRESTATIONS_GAP + JOIN prod_web100t.DAT_DA ON PREST_DA = DA_OID + JOIN activite[PX].p_sejours ON DA_OID = p_sejours.code_original AND date(PREST_DATE_DEBUT) BETWEEN date_entree AND date_sortie + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date(PREST_DATE_DEBUT) AND date(PREST_DATE_FIN) + JOIN activite[PX].p_factures ON p_factures.no_sejour = p_sejours.no_sejour AND type_facture = 'E' AND p_calendrier.date BETWEEN date_debut AND date_fin + JOIN w_ART_ARTICLES ON PREST_ARTICLE = ART_OID + WHERE ART_CODE NOT IN ('GHS', 'EXH', 'I01', 'CCAM') AND PREST_MFE_ETS > 0 AND PREST_ENTENTE_DIRECTE = 0 AND PREST_DELETED = 0 AND + PREST_QUANTITE < 99999 AND + PREST_QUANTITE > 1 AND (date(PREST_DATE_FIN) - date(PREST_DATE_DEBUT) + 1) = PREST_QUANTITE + ; + + -- Prestation I01 (innovation) venant du PMSI + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + no_facture, + facture_id, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + p_factures.no_facture, + MAX(p_factures.oid) AS facture_id, + MAX(p_sejours.date_entree) AS date_debut, + MAX(p_sejours.date_sortie) AS date_fin, + 1::numeric AS nb_rubrique, + 1::numeric AS coefficient, + 0.9935::numeric AS coefficient_mco, + MAX(t_rubriques_facturation.oid) AS rubrique_facturation_id, + MAX(t_prestations.oid) AS prestation_id, + 6047::numeric AS prix_unitaire, + MAX(p_sejours.lieu_sortie_id) AS lieu_id + FROM prod_web100t.DAT_RUM + JOIN prod_web100t.SGN_NMCL_DATA ON RUM_NUM_INNOVATION = ND_INVARIANT_OID AND ND_CODE = 'INNOV1441001H' + JOIN prod_web100t.DAT_RESUME ON RUM_OID = RES_OID + JOIN prod_web100t.DAT_DA ON RES_NUM = DA_NUMERO + JOIN activite[PX].p_sejours ON DA_OID = p_sejours.code_original + JOIN activite[PX].p_factures ON p_factures.no_sejour = p_sejours.no_sejour AND code_facture <> '1' + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code = 'I01' + JOIN activite.t_prestations ON t_prestations.code = 'I01' + GROUP BY 1 + ; + + + + + + ]]> + + + + 0 THEN B2T_TOTAL_TTC ELSE 0 END)::numeric - SUM(B2T_DEPASSEMENT)::numeric, + MAX(B2T_QUANTITE)::numeric + ) AS B2T_PU, + SUM(B2T_TOTAL_TTC) AS B2T_TOTAL, + SUM(B2T_DEPASSEMENT) AS B2T_DEPASSEMENT, + round(base.cti_division( + SUM(CASE WHEN B2T_TYPE_TIER = 'AMO' THEN B2T_TOTAL_TTC ELSE 0 END)::numeric - SUM(CASE WHEN B2T_TYPE_TIER = 'AMO' THEN B2T_DEPASSEMENT ELSE 0 END)::numeric, + SUM(B2T_TOTAL_TTC)::numeric - SUM(B2T_DEPASSEMENT)::numeric + ) * 100,0) AS B2T_TAUX_AMO, + round(base.cti_division( + SUM(CASE WHEN B2T_TYPE_TIER = 'AMC' THEN B2T_TOTAL_TTC ELSE 0 END)::numeric - SUM(CASE WHEN B2T_TYPE_TIER = 'AMC' THEN B2T_DEPASSEMENT ELSE 0 END)::numeric, + SUM(B2T_TOTAL_TTC)::numeric - SUM(B2T_DEPASSEMENT)::numeric + ) * 100,0) AS B2T_TAUX_AMC, + round(base.cti_division( + SUM(CASE WHEN B2T_TYPE_TIER = 'AMD' THEN B2T_TOTAL_TTC ELSE 0 END)::numeric - SUM(CASE WHEN B2T_TYPE_TIER = 'AMD' THEN B2T_DEPASSEMENT ELSE 0 END)::numeric, + SUM(B2T_TOTAL_TTC)::numeric - SUM(B2T_DEPASSEMENT)::numeric + ) * 100,0) AS B2T_TAUX_AMD, + round(base.cti_division( + SUM(CASE WHEN B2T_TYPE_TIER = 'CLI' THEN B2T_TOTAL_TTC ELSE 0 END)::numeric - SUM(CASE WHEN B2T_TYPE_TIER = 'CLI' THEN B2T_DEPASSEMENT ELSE 0 END)::numeric, + SUM(B2T_TOTAL_TTC)::numeric - SUM(B2T_DEPASSEMENT)::numeric + ) * 100,0) AS B2T_TAUX_CLI, + SUM(CASE WHEN B2T_TYPE_TIER = 'AMO' THEN B2T_TOTAL_TTC ELSE 0 END) AS B2T_TOTAL_AMO, + SUM(CASE WHEN B2T_TYPE_TIER = 'AMC' THEN B2T_TOTAL_TTC ELSE 0 END) AS B2T_TOTAL_AMC, + SUM(CASE WHEN B2T_TYPE_TIER = 'AMD' THEN B2T_TOTAL_TTC ELSE 0 END) AS B2T_TOTAL_AMD, + SUM(CASE WHEN B2T_TYPE_TIER = 'CLI' THEN B2T_TOTAL_TTC ELSE 0 END) AS B2T_TOTAL_CLI + FROM prod_web100t.FAC_B2_TIER + GROUP BY 1 + ORDER BY 1; + + ALTER TABLE w_FAC_B2_TIER ADD CONSTRAINT w_FAC_B2_TIER_pkey PRIMARY KEY(B2T_LIGNE); + + + -- Comptes par ligne + + DROP TABLE IF EXISTS w_LIGNE_CPT; + CREATE TEMP TABLE w_LIGNE_CPT AS + SELECT FLT_OID, + LI_OID, + LI_PRED_LIGNE, + LI_NEXT_LIGNE, + MAX(COALESCE(CPT_OID,0)) AS ECR_COMPTE, + MAX(COALESCE(CPT_CODE,'')) AS CPT_CODE, + 0::bigint AS compte_produit_id + FROM PROD_WEB100T.FAC_FACT_LIGNE_TIER + JOIN PROD_WEB100T.FAC_FACT_LIGNE ON FLT_LIGNE_FACTURE = LI_OID + LEFT JOIN w_CPT_ECRITURE_source_OP_LINK ON ECR_DATA = LI_OID AND ECR_TYPE = 'PRODUIT_ETS' + LEFT JOIN PROD_WEB100T.CPT_COMPTES ON ECR_COMPTE = CPT_OID + WHERE FLT_IS_ETS = 1 + GROUP BY 1,2,3,4; + + UPDATE w_LIGNE_CPT + SET ECR_COMPTE = w_LIGNE_CPT_NEXT.ECR_COMPTE, CPT_CODE = w_LIGNE_CPT_NEXT.CPT_CODE + FROM w_LIGNE_CPT w_LIGNE_CPT_NEXT + WHERE w_LIGNE_CPT.ECR_COMPTE = 0 AND + w_LIGNE_CPT.LI_NEXT_LIGNE = w_LIGNE_CPT_NEXT.LI_OID; + + UPDATE w_LIGNE_CPT + SET ECR_COMPTE = w_LIGNE_CPT_PRED.ECR_COMPTE, CPT_CODE = w_LIGNE_CPT_PRED.CPT_CODE + FROM w_LIGNE_CPT w_LIGNE_CPT_PRED + WHERE w_LIGNE_CPT.ECR_COMPTE = 0 AND + w_LIGNE_CPT.LI_PRED_LIGNE = w_LIGNE_CPT_PRED.LI_OID; + + DELETE FROM w_LIGNE_CPT + WHERE CPT_CODE LIKE '445%'; + + UPDATE w_LIGNE_CPT + SET compte_produit_id = t_compte.oid + FROM activite[PX].t_compte + WHERE t_compte.code = CPT_CODE; + + ALTER TABLE w_LIGNE_CPT ADD CONSTRAINT w_LIGNE_CPT_pkey PRIMARY KEY(FLT_OID); + + + -- Table temporaire lignes + DROP TABLE IF EXISTS w_factures_lignes_c; + CREATE TEMP TABLE w_factures_lignes_c AS + SELECT + FLT_LIGNE_FACTURE, + + w_factures.no_sejour, + w_factures.no_facture, + w_factures.oid AS facture_id, + date_vente, + + lieu_sortie_id AS lieu_id, + 1::numeric AS origine_facturation_id, + + rubrique_facturation_id, + rubrique_facturation_id AS rubrique_comptabilisation_id, + prestation_id, + 0::bigint AS protocole_id, + COALESCE(w_LIGNE_CPT.compte_produit_id,0::bigint) AS compte_produit_id, + w_ART_ARTICLES.ucd_id, + w_ART_ARTICLES.lpp_id, + + date(MIN(FLT_DATE_DEBUT)) AS date_debut, + date(MAX(FLT_DATE_FIN)) AS date_fin, + + MAX(COALESCE(B2T_PU,FLT_TOTAL_TTC)) AS prix_unitaire, + + CASE WHEN SUM(FLT_TOTAL_TTC) >= 0 THEN 1 ELSE -1 END * MAX(COALESCE(B2T_QUANTITE,1)) AS nb_rubrique, + CASE WHEN SUM(FLT_TOTAL_TTC) >= 0 THEN 1 ELSE -1 END * MAX(COALESCE(B2T_QUANTITE,1)) AS nb_prestation, + 1::numeric AS coefficient, + 1::numeric AS coefficient_mco, + + MAX(COALESCE(B2T_TAUX_CLI,0)) AS taux_0, + MAX(COALESCE(B2T_TAUX_AMO,0)) AS taux_1, + MAX(COALESCE(B2T_TAUX_AMC,0)) AS taux_2, + MAX(COALESCE(B2T_TAUX_AMD,0)) AS taux_22, + + base.cti_division(SUM(FLT_TOTAL_TVA)::numeric , SUM(FLT_TOTAL_TTC)::numeric-SUM(FLT_TOTAL_TVA)::numeric)*100 AS taux_tva, + + SUM(CASE WHEN LI_TYPE_B2 IS DISTINCT FROM '4' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture, + SUM(CASE WHEN LI_TYPE_B2 IS DISTINCT FROM '4' AND FT_TYPE_TIER = 'CLI' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_0, + SUM(CASE WHEN LI_TYPE_B2 IS DISTINCT FROM '4' AND FT_TYPE_TIER IN ('AMO','ETS') THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_1, + SUM(CASE WHEN LI_TYPE_B2 IS DISTINCT FROM '4' AND FT_TYPE_TIER = 'AMC' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_2, + SUM(CASE WHEN LI_TYPE_B2 IS DISTINCT FROM '4' AND FT_TYPE_TIER = 'AMD' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_22, + SUM(CASE WHEN LI_TYPE_B2 IS DISTINCT FROM '4' AND FT_TYPE_TIER = 'ETS' THEN 0-FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_dma, + + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + + SUM(CASE WHEN code_vente = '1' AND FT_TYPE_TIER <> 'ETS' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise, + SUM(CASE WHEN code_vente = '1' AND FT_TYPE_TIER = 'CLI' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise_0, + SUM(CASE WHEN code_vente = '1' AND FT_TYPE_TIER = 'AMO' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise_1, + SUM(CASE WHEN code_vente = '1' AND FT_TYPE_TIER = 'AMC' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise_2, + SUM(CASE WHEN code_vente = '1' AND FT_TYPE_TIER = 'AMD' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise_22, + 0::numeric AS montant_comptabilise_budget_global_1, + + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + + 0::bigint AS rubrique_facture_id, + + MAX(ART_CODE) AS ART_CODE, + MAX(ART_CODE_2) AS ART_CODE_2 + + FROM prod_web100t.FAC_FACT_LIGNE_TIER + JOIN w_factures ON FLT_FACTURE = FACT_OID AND IMPAYE = 0 + JOIN prod_web100t.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN prod_web100t.FAC_FACT_LIGNE ON FLT_LIGNE_FACTURE = LI_OID + JOIN w_ART_ARTICLES ON FLT_ARTICLE = ART_OID + LEFT JOIN w_FAC_B2_TIER ON LI_LIGNE_SOURCE = B2T_LIGNE + LEFT JOIN w_LIGNE_CPT ON FAC_FACT_LIGNE_TIER.FLT_OID = w_LIGNE_CPT.FLT_OID + WHERE FLT_IS_ETS = 1 AND FLT_RECAP <> 0 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14; + + + + -- Montants impayés + INSERT INTO w_factures_lignes_c + SELECT + FLT_LIGNE_FACTURE, + + w_factures.no_sejour, + w_factures.no_facture, + w_factures.oid AS facture_id, + date_vente, + + lieu_sortie_id AS lieu_id, + 1::numeric AS origine_facturation_id, + + rubrique_facturation_id, + rubrique_facturation_id AS rubrique_comptabilisation_id, + prestation_id, + 0::bigint AS protocole_id, + COALESCE(w_LIGNE_CPT.compte_produit_id,0::bigint) AS compte_produit_id, + w_ART_ARTICLES.ucd_id, + w_ART_ARTICLES.lpp_id, + + date(MIN(FLT_DATE_DEBUT)) AS date_debut, + date(MAX(FLT_DATE_FIN)) AS date_fin, + + MAX(COALESCE(B2T_PU,FLT_TOTAL_TTC)) AS prix_unitaire, + + 0 AS nb_rubrique, + 0 AS nb_prestation, + 1::numeric AS coefficient, + 1::numeric AS coefficient_mco, + + MAX(COALESCE(B2T_TAUX_CLI,0)) AS taux_0, + MAX(COALESCE(B2T_TAUX_AMO,0)) AS taux_1, + MAX(COALESCE(B2T_TAUX_AMC,0)) AS taux_2, + MAX(COALESCE(B2T_TAUX_AMD,0)) AS taux_22, + + 0::numeric AS taux_tva, + + 0 AS montant_facture, + 0 AS montant_facture_0, + 0 AS montant_facture_1, + 0 AS montant_facture_2, + 0::numeric AS montant_facture_22, + 0::numeric AS montant_facture_dma, + + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + + SUM(FLT_TOTAL_IMPAYE_ETS) AS montant_comptabilise, + SUM(FLT_TOTAL_IMPAYE_ETS_CLI) AS montant_comptabilise_0, + SUM(FLT_TOTAL_IMPAYE_ETS_AMO) AS montant_comptabilise_1, + SUM(FLT_TOTAL_IMPAYE_ETS_AMC) AS montant_comptabilise_2, + SUM(FLT_TOTAL_IMPAYE_ETS_AMD) AS montant_comptabilise_22, + 0::numeric AS montant_comptabilise_budget_global_1, + + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + + 0::bigint AS rubrique_facture_id, + + MAX(ART_CODE) AS ART_CODE, + MAX(ART_CODE_2) AS ART_CODE_2 + FROM prod_web100t.FAC_FACT_LIGNE_TIER + JOIN w_FAC_FACT_LIGNE_TIER_IMPAYE ON FAC_FACT_LIGNE_TIER.FLT_OID = FLT_IMPAYE_OID + JOIN w_factures ON FLT_FACTURE = FACT_OID AND IMPAYE = w_FAC_FACT_LIGNE_TIER_IMPAYE.FI_COMPTA + JOIN prod_web100t.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN prod_web100t.FAC_FACT_LIGNE ON FLT_LIGNE_FACTURE = LI_OID + JOIN w_ART_ARTICLES ON FLT_ARTICLE = ART_OID + LEFT JOIN w_FAC_B2_TIER ON LI_LIGNE_SOURCE = B2T_LIGNE + LEFT JOIN w_LIGNE_CPT ON FAC_FACT_LIGNE_TIER.FLT_OID = w_LIGNE_CPT.FLT_OID + WHERE FLT_IS_ETS = 1 AND FLT_RECAP <> 0 AND FLT_TOTAL_IMPAYE_ETS <> 0 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14; + + + + -- Remplacement des codes dialyse + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'TRANSGHSDXX', + 'Transformation des GHS en Dxx', + '', + 'Transformation des prestations GHS en Dxx selong GHS, la rubrique de facturation prend la valeur du GHS' + WHERE 'TRANSGHSDXX' NOT IN (SELECT code FROM activite.t_divers); + ; + + INSERT INTO activite[PX].t_rubriques_facturation (code_original, code, texte, texte_court) + SELECT t_ghs.code::text, t_ghs.code::text, t_ghs.texte, t_ghs.texte + FROM base.t_ghs + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + WHERE t_ghs.code IN (9602,9603,9604,9605,9617) AND + t_ghs.code::text NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + ; + + INSERT INTO activite[PX].t_rubriques_facturation (code_original, code, texte, texte_court) + SELECT t_prestations.code::text, t_prestations.code::text, t_prestations.texte, t_prestations.texte + FROM activite.t_prestations + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + WHERE t_prestations.code IN ('D11') AND + t_prestations.code::text NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) AND + t_prestations.code::text NOT IN (SELECT code FROM activite[PX].t_rubriques_facturation WHERE code IS NOT NULL) + ; + + DROP TABLE IF EXISTS w_transform_dxx; + CREATE TEMP TABLE w_transform_dxx AS + SELECT p_factures_lignes_c.no_facture, + p_factures_lignes_c.CTID AS CTID_source, + t_prestations.code, + CASE WHEN t_ghs.code IN (9602,9603,9604,9605,9617) THEN t_ghs.code::text ELSE ART_CODE_2 END AS ghs_code, + CASE + WHEN t_ghs.code = 9602 THEN 'D18' + WHEN t_ghs.code = 9603 THEN 'D19' + WHEN t_ghs.code = 9604 THEN 'D17' + WHEN t_ghs.code = 9605 THEN 'D09' + WHEN t_ghs.code = 9617 THEN 'D10' + WHEN ART_CODE_2 = '9602' THEN 'D18' + WHEN ART_CODE_2 = '9603' THEN 'D19' + WHEN ART_CODE_2 = '9604' THEN 'D17' + WHEN ART_CODE_2 = '9605' THEN 'D09' + WHEN ART_CODE_2 = '9617' THEN 'D10' + ELSE '' END AS dxx_prestation_code + FROM w_factures_lignes_c p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN base.t_ghs ON p_sejours.ghs_id = t_ghs.oid + JOIN activite.t_prestations ON t_prestations.oid = prestation_id + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + WHERE t_prestations.code = 'GHS' AND + ( + t_ghs.code IN (9602,9603,9604,9605,9617) OR + ART_CODE_2 IN ('9602','9603','9604','9605','9617') + ); + + CREATE INDEX w_transform_dxx_i1 + ON w_transform_dxx + USING btree + (no_facture) + ; + + UPDATE w_factures_lignes_c p_factures_lignes_c SET + prestation_id = t_prestations.oid, + rubrique_facturation_id = t_rubriques_facturation.oid + FROM w_transform_dxx + JOIN activite.t_prestations ON dxx_prestation_code = t_prestations.code + JOIN activite[PX].t_rubriques_facturation ON ghs_code = t_rubriques_facturation.code_original + WHERE p_factures_lignes_c.no_facture = w_transform_dxx.no_facture AND + p_factures_lignes_c.CTID = w_transform_dxx.CTID_source + ; + + + + -- Eclatement des GHS, GMT et suppléments par jour + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + w_factures_lignes_c.CTID AS from_CTID, + t_prestations.code AS prestation_code, + date(p_sejours.date_entree) AS date_debut_ghs, + date(p_sejours.date_sortie - interval '1 day') AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + w_factures_lignes_c.* + FROM w_factures_lignes_c + JOIN activite[PX].p_sejours ON w_factures_lignes_c.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + ( + code IN ('PJ', 'FJ', 'PHJ','SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (t_prestations.code IN ('GHS', 'GMT') AND p_sejours.type_sejour != '5' AND date(date_sortie) - date(date_entree) > 1)) + ; + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM w_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture; + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_gen; + CREATE TEMP TABLE w_factures_lignes_sup_c_gen AS + SELECT + w_factures_lignes_sup_c.* + ,date AS new_date_debut + ,date AS new_date_fin + ,CASE WHEN prestation_code IN ('GHS', 'GMT') AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS new_nb_rubrique + ,CASE WHEN prestation_code IN ('GHS', 'GMT') AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS new_nb_prestation + ,round((montant_facture / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_facture + ,round((montant_facture_0 / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_facture_0 + ,round((montant_facture_1 / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_facture_1 + ,round((montant_facture_2 / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_facture_2 + ,round((montant_facture_22 / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_facture_22 + ,round((montant_facture_dma / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_facture_dma + ,round((montant_comptabilise / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_comptabilise + ,round((montant_comptabilise_0 / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_comptabilise_0 + ,round((montant_comptabilise_1 / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_comptabilise_1 + ,round((montant_comptabilise_2 / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_comptabilise_2 + ,round((montant_comptabilise_22 / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_comptabilise_22 + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON date_debut BETWEEN p_calendrier.date - ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END)::integer + 1 + AND p_calendrier.date + AND p_calendrier.date <> date_debut + ; + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_gen_tot; + CREATE TEMP TABLE w_factures_lignes_sup_c_gen_tot AS + SELECT from_CTID, + SUM(new_nb_rubrique) AS nb_rubrique, + SUM(new_nb_prestation) AS nb_prestation, + SUM(new_montant_facture) AS montant_facture, + SUM(new_montant_facture_0) AS montant_facture_0, + SUM(new_montant_facture_1) AS montant_facture_1, + SUM(new_montant_facture_2) AS montant_facture_2, + SUM(new_montant_facture_22) AS montant_facture_22, + SUM(new_montant_facture_dma) AS montant_facture_dma, + SUM(new_montant_comptabilise) AS montant_comptabilise, + SUM(new_montant_comptabilise_0) AS montant_comptabilise_0, + SUM(new_montant_comptabilise_1) AS montant_comptabilise_1, + SUM(new_montant_comptabilise_2) AS montant_comptabilise_2, + SUM(new_montant_comptabilise_22) AS montant_comptabilise_22 + FROM w_factures_lignes_sup_c_gen + GROUP BY 1; + + + + UPDATE w_factures_lignes_c + SET + date_fin = w_factures_lignes_c.date_debut, + nb_rubrique = w_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_gen_tot.nb_rubrique, + nb_prestation = w_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_gen_tot.nb_prestation, + montant_facture = w_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_gen_tot.montant_facture, + montant_facture_0 = w_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_gen_tot.montant_facture_0, + montant_facture_1 = w_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_gen_tot.montant_facture_1, + montant_facture_2 = w_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_gen_tot.montant_facture_2, + montant_facture_22 = w_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_gen_tot.montant_facture_22, + montant_facture_dma = w_factures_lignes_c.montant_facture_dma - w_factures_lignes_sup_c_gen_tot.montant_facture_dma, + montant_comptabilise = w_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_gen_tot.montant_comptabilise, + montant_comptabilise_0 = w_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_gen_tot.montant_comptabilise_0, + montant_comptabilise_1 = w_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_gen_tot.montant_comptabilise_1, + montant_comptabilise_2 = w_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_gen_tot.montant_comptabilise_2, + montant_comptabilise_22 = w_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_gen_tot.montant_comptabilise_22 + FROM w_factures_lignes_sup_c_gen_tot + WHERE w_factures_lignes_c.CTID = from_CTID; + + + INSERT INTO w_factures_lignes_c + SELECT + FLT_LIGNE_FACTURE, + + no_sejour, + no_facture, + facture_id, + date_vente, + + lieu_id, + origine_facturation_id, + + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + protocole_id, + compte_produit_id, + ucd_id, + lpp_id, + + new_date_debut, + new_date_fin, + + prix_unitaire, + + new_nb_rubrique, + new_nb_prestation, + coefficient, + coefficient_mco, + + taux_0, + taux_1, + taux_2, + taux_22, + + taux_tva, + + new_montant_facture, + new_montant_facture_0, + new_montant_facture_1, + new_montant_facture_2, + new_montant_facture_22, + new_montant_facture_dma, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + new_montant_comptabilise, + new_montant_comptabilise_0, + new_montant_comptabilise_1, + new_montant_comptabilise_2, + new_montant_comptabilise_22, + montant_comptabilise_budget_global_1, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + + 0::bigint AS rubrique_facture_id + FROM w_factures_lignes_sup_c_gen; + + -- arrondi tva + UPDATE w_factures_lignes_c + SET taux_tva = 2.1 + WHERE taux_tva BETWEEN 1.2 AND 3 AND + taux_tva <> 2.1 + ; + + UPDATE w_factures_lignes_c + SET taux_tva = 5.5 + WHERE taux_tva BETWEEN 4.6 AND 6.4 AND + taux_tva <> 5.5 + ; + + UPDATE w_factures_lignes_c + SET taux_tva = 10 + WHERE taux_tva BETWEEN 9.1 AND 10.9 AND + taux_tva <> 10 + ; + + UPDATE w_factures_lignes_c + SET taux_tva = 20 + WHERE taux_tva >= 15 AND + taux_tva <> 20 + ; + + + -- Lieux d'exécution + + + UPDATE w_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE w_factures_lignes_c.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_lignes_c.date_debut = p_mouvements_sejour.date AND + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_sorties_directes = 1) AND + w_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_c'); + + -- Validation + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_8'); + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + facture_id, + date_debut, + date_fin, + + lieu_id, + origine_facturation_id, + + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + protocole_id, + compte_produit_id, + ucd_id, + lpp_id, + + prix_unitaire, + + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + + taux_0, + taux_1, + taux_2, + taux_22, + + taux_tva, + + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_comptabilise_budget_global_1, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + + + ) + SELECT + no_facture, + facture_id, + date_debut, + date_fin, + + lieu_id, + origine_facturation_id, + + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + protocole_id, + compte_produit_id, + ucd_id, + lpp_id, + + prix_unitaire, + + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + + taux_0, + taux_1, + taux_2, + taux_22, + + taux_tva, + + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_comptabilise_budget_global_1, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + FROM w_factures_lignes_c; + + + -- DMA SSR + DROP TABLE IF EXISTS w_factures_lignes_c_dma; + CREATE TEMP TABLE w_factures_lignes_c_dma AS + SELECT * + FROM w_factures_lignes_c + WHERE montant_facture_dma <> 0 + ; + + UPDATE w_factures_lignes_c_dma SET + nb_rubrique = 0-nb_rubrique, + nb_prestation = 0-nb_prestation, + taux_0 = 0, + taux_2 = 0, + taux_22 = 0, + montant_facture = montant_facture_dma, + montant_facture_1 = montant_facture_dma, + montant_facture_2 = 0, + montant_facture_22 = 0, + montant_facture_0 = 0, + montant_facture_actes_inclus_dans_sejour = 0, + montant_facture_0_actes_inclus_dans_sejour = 0, + montant_facture_1_actes_inclus_dans_sejour = 0, + montant_facture_2_actes_inclus_dans_sejour = 0, + montant_facture_22_actes_inclus_dans_sejour = 0, + montant_comptabilise = 0, + montant_comptabilise_0 = 0, + montant_comptabilise_1 = 0, + montant_comptabilise_2 = 0, + montant_comptabilise_22 = 0, + montant_comptabilise_budget_global_1 = 0, + montant_encours = 0, + montant_encours_0 = 0, + montant_encours_1 = 0, + montant_encours_2 = 0, + montant_encours_22 = 0 + WHERE montant_facture_dma <> 0 + ; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT 'DMAM'||code, 'DMAM'||code, 'Diminution SSR ' || code, 'Diminution SSR ' || code + FROM + ( + SELECT t_prestations.code AS code + FROM w_factures_lignes_c_dma + JOIN activite.t_prestations ON t_prestations.oid = prestation_id + GROUP BY 1 + ) subview + WHERE ('DMAM'||code) NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + ; + + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT '*DMAM'||code, 'DMAM'||code, 'Diminution SSR ' || code, 'Diminution SSR ' || code + FROM + ( + SELECT t_rubriques_facturation.code AS code + FROM w_factures_lignes_c_dma + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.oid = rubrique_facturation_id + GROUP BY 1 + ) subview + WHERE ('*DMAM'||code) NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + ; + + UPDATE w_factures_lignes_c_dma SET + rubrique_facturation_id = t_rubriques_facturation_dmam.oid, + rubrique_comptabilisation_id = t_rubriques_facturation_dmam.oid + FROM activite[PX].t_rubriques_facturation + JOIN activite[PX].t_rubriques_facturation t_rubriques_facturation_dmam ON t_rubriques_facturation_dmam.code_original = '*DMAM'||t_rubriques_facturation.code + WHERE rubrique_facturation_id = t_rubriques_facturation.oid + ; + UPDATE w_factures_lignes_c_dma SET + prestation_id = t_prestations_dmam.oid + FROM activite.t_prestations + JOIN activite.t_prestations t_prestations_dmam ON t_prestations_dmam.code = 'DMAM'||t_prestations.code + WHERE prestation_id = t_prestations.oid + ; + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + facture_id, + date_debut, + date_fin, + + lieu_id, + origine_facturation_id, + + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + protocole_id, + compte_produit_id, + ucd_id, + lpp_id, + + prix_unitaire, + + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + + taux_0, + taux_1, + taux_2, + taux_22, + + taux_tva, + + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_comptabilise_budget_global_1, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + + + ) + SELECT + no_facture, + facture_id, + date_debut, + date_fin, + + lieu_id, + origine_facturation_id, + + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + protocole_id, + compte_produit_id, + ucd_id, + lpp_id, + + prix_unitaire, + + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + + taux_0, + taux_1, + taux_2, + taux_22, + + 0::numeric AS taux_tva, + + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_comptabilise_budget_global_1, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + FROM w_factures_lignes_c_dma + WHERE montant_facture_dma <> 0 + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_8'); + + + ]]> + + + + 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5; + + + DROP TABLE IF EXISTS w_CPT_OP_LINK; + CREATE TEMP TABLE w_CPT_OP_LINK AS + SELECT LNK_OPERATION, + MAX(ECR_DATE) AS ECR_DATE + FROM w_CPT_OP_LINK_source_agg + JOIN + ( + SELECT + LNK_MASTER_OP, MAX(ECR_DATE) AS ECR_DATE + FROM w_CPT_ECRITURE_source_OP_LINK + WHERE LNK_ERROR = '' + GROUP BY 1 + ) subview ON w_CPT_OP_LINK_source_agg.LNK_MASTER_OP = subview.LNK_MASTER_OP + GROUP BY 1; + + ALTER TABLE w_CPT_OP_LINK ADD CONSTRAINT w_CPT_OP_LINK_pkey PRIMARY KEY(LNK_OPERATION); + + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + facture_id, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + od_non_comptabilise, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + w_factures.no_facture, + w_factures.oid AS facture_id, + date(COALESCE(ECR_DATE,RD_DATE,FR_DATE_ENC)) AS date_comptable, + rubrique_facturation_id AS rubrique_comptabilisation_id, + prestation_id, + CASE + WHEN FR_DATE_DEPOT_GUESS IS NOT NULL AND FR_DATE_ENC IS NULL THEN '1' + WHEN RD_CREATED > ECR_UPDATED_MAX THEN '1' + ELSE '0' END AS od_non_comptabilise, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(RD_MONTANT) As montant_regle, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN RD_MONTANT ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN RD_MONTANT ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN RD_MONTANT ELSE 0 END) AS montant_regle_2, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN RD_MONTANT ELSE 0 END) AS montant_regle_22 + FROM prod_web100t.FAC_RGLMT_DETAILS + JOIN prod_web100t.FAC_REGLEMENTS ON FR_OID = RD_REGLEMENT + JOIN w_factures ON RD_FACTURE = FACT_OID AND IMPAYE = 0 + JOIN prod_web100t.FAC_FACT_TIER ON RD_FACT_TIER = FT_OID + JOIN prod_web100t.FAC_FACT_LIGNE_TIER ON RD_FACT_LINE = FLT_OID + JOIN w_ART_ARTICLES ON FLT_ARTICLE = ART_OID + LEFT JOIN w_CPT_OP_LINK ON RD_COMPTA = LNK_OPERATION + JOIN w_max_ECR_UPDATED ON 1=1 + WHERE RD_ETS = 1 + GROUP BY 1,2,3,4,5,6; + + + -- Acomptes noemie 85% + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT '*CTI_ACO85', 'ACO85', 'Acomptes 85%', 'Acomptes 85%' + WHERE '*CTI_ACO85' NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation); + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT '*CTI_ACO85', 'ACO85', 'Acomptes 85%', 'Acomptes 85%' + WHERE '*CTI_ACO85' NOT IN (SELECT code_original FROM activite.t_prestations WHERE code_original IS NOT NULL); + + -- Correction tables noemie car quelque fois il manque la reprise d'acompte sur le règlement + UPDATE prod_web100t.NOE_PAI_FACT + SET NPF_TOTAL_ACOMPTE = 0-NPF_TOTAL_ACOMPTE_1 + FROM + ( + SELECT NPF_FACT_TIER, + MAX(CASE WHEN NPF_TOTAL_ACOMPTE <> 0 THEN NPF_OID ELSE 0 END) AS NPF_OID_1, + MAX(CASE WHEN NPF_TOTAL_ACOMPTE <> 0 THEN NPF_TOTAL_ACOMPTE ELSE NULL END) AS NPF_TOTAL_ACOMPTE_1, + MAX(CASE WHEN NPF_TOTAL_ACOMPTE = 0 THEN NPF_OID ELSE 0 END) AS NPF_OID_2 + FROM prod_web100t.NOE_PAI_FACT + JOIN prod_web100t.NOE_PAIEMENT ON NPF_PAIEMENT = NP_OID AND NP_PAIEMENT_ETS = 1 + GROUP BY 1 + HAVING count(*) = 2 AND + SUM(NPF_TOTAL_ACOMPTE) > 0 AND + MAX(CASE WHEN NPF_TOTAL_ACOMPTE = 0 THEN NPF_OID ELSE 0 END) <> 0 + ) subview + WHERE NPF_OID = NPF_OID_2 AND + NPF_TOTAL_ACOMPTE = 0 + ; + + -- Exploitation des tables noemie + DROP TABLE IF EXISTS w_NOE_PAI_FACT; + CREATE TEMP TABLE w_NOE_PAI_FACT AS + SELECT FACT_NUMERO, + NPF_FACT_TIER, + NPF_TOTAL_AMO, + NPF_TOTAL_ACOMPTE, + NPF_PAIEMENT, + NP_DATE_COMPTABLE, + NP_REGLEMENT, + date(COALESCE(FR_DATE_ENC,NP_DATE_COMPTABLE)) AS date_imputation, + '1'::text AS ok + FROM prod_web100t.NOE_PAI_FACT + JOIN prod_web100t.NOE_PAIEMENT ON NPF_PAIEMENT = NP_OID AND NP_PAIEMENT_ETS = 1 + LEFT JOIN prod_web100T.FAC_REGLEMENTS ON NP_REGLEMENT = FR_OID + JOIN prod_web100t.FAC_FACT_TIER ON NPF_FACT_TIER = FT_OID + JOIN prod_web100t.FAC_FACTURE ON FT_FACTURE = FACT_OID + WHERE NPF_TOTAL_ACOMPTE <> 0 AND + FACT_DA = ANY(SELECT DA_OID FROM prod_web100t.DAT_DA WHERE DA_EG_ENTREE = ANY(SELECT ets_oid FROM w_NMCL_ETABLISSEMENT)) + ; + + -- Date imputation reprise acompte selon date encaissement AMO + UPDATE w_NOE_PAI_FACT + SET date_imputation = subview.date_imputation + FROM + ( + SELECT NPF_PAIEMENT, max(date_imputation) AS date_imputation + FROM + ( + + SELECT p_factures.no_facture, + MAX(NPF_PAIEMENT) AS npf_paiement, + MIN(NP_DATE_COMPTABLE), + MIN(p_factures_soldes_c.date_comptable) AS date_imputation, + date(MIN(p_factures_soldes_c.date_comptable)) - date(MIN(NP_DATE_COMPTABLE)) AS ecart + FROM w_NOE_PAI_FACT + JOIN activite[PX].p_factures ON FACT_NUMERO = p_factures.no_facture + JOIN activite[PX].p_factures_soldes_c ON p_factures_soldes_c.no_facture = p_factures.no_facture + WHERE p_factures.montant_comptabilise_1_c = p_factures_soldes_c.montant_regle_1 AND + NPF_TOTAL_ACOMPTE < 0 AND + NPF_TOTAL_AMO = montant_regle_1 + GROUP BY 1 + HAVING count(*) = 1 + ORDER BY 2,5 desc + ) subview + GROUP BY 1 + HAVING count(DISTINCT ecart) = 1 + ) subview + WHERE w_NOE_PAI_FACT.NPF_PAIEMENT = subview.NPF_PAIEMENT + ; + + UPDATE w_NOE_PAI_FACT + SET OK = '0' + FROM + ( + SELECT NPF_FACT_TIER, SUM(NPF_TOTAL_ACOMPTE), MAX(NP_DATE_COMPTABLE) + FROM w_NOE_PAI_FACT + GROUP BY 1 + HAVING ( + SUM(NPF_TOTAL_ACOMPTE) <> 0 AND MAX(NP_DATE_COMPTABLE) < (now() - interval '1 year') OR + SUM(NPF_TOTAL_ACOMPTE) < 0 OR + SUM(NPF_TOTAL_ACOMPTE) > 0 AND count(*) > 1 + ) + ) subview + WHERE w_NOE_PAI_FACT.NPF_FACT_TIER = subview.NPF_FACT_TIER + ; + + + + -- Acompte et reprise d'acompte + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date_imputation AS date_comptable, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + NPF_TOTAL_ACOMPTE AS montant_regle, + 0 AS montant_regle_0, + NPF_TOTAL_ACOMPTE AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22, + '1' AS od_non_comptabilise + FROM w_NOE_PAI_FACT + JOIN activite[PX].p_factures ON FACT_NUMERO = no_facture + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = '*CTI_ACO85' + JOIN activite.t_prestations ON t_prestations.code_original = '*CTI_ACO85' + WHERE w_NOE_PAI_FACT.ok = '1' + ; + + -- Règlement si mouvement non comptabilisé + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date_imputation AS date_comptable, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + NPF_TOTAL_AMO AS montant_regle, + 0 AS montant_regle_0, + NPF_TOTAL_AMO AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22, + '1' AS od_non_comptabilise + FROM w_NOE_PAI_FACT + JOIN activite[PX].p_factures ON FACT_NUMERO = no_facture + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = '*CTI_ACO85' + JOIN activite.t_prestations ON t_prestations.code_original = '*CTI_ACO85' + WHERE w_NOE_PAI_FACT.ok = '1' AND + NP_REGLEMENT = 0 AND + NPF_TOTAL_ACOMPTE < 0 AND + NPF_TOTAL_AMO > 0 AND + date_imputation >= date(now() - interval '1 month') + ; + + UPDATE activite[PX].p_factures SET + montant_regle_c = montant_regle_c + montant_acompte, + montant_regle_1_c = montant_regle_1_c + montant_acompte + FROM + ( + SELECT no_facture, SUM(montant_regle_1) AS montant_acompte + FROM activite[PX].p_factures_soldes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + t_prestations.code_original = '*CTI_ACO85' + GROUP BY 1 + HAVING SUM(montant_regle_1) <> 0 + ) subview + WHERE p_factures.no_facture = subview.no_facture + ; + + + + + -- Solder les factures soldées par une facture d'impayé + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + facture_id, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures_soldes_c.no_facture, + p_factures_soldes_c.facture_id, + p_factures_soldes_c.date_comptable, + p_factures_soldes_c.rubrique_comptabilisee_id, + p_factures_soldes_c.prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + p_factures_soldes_c.montant_comptabilise AS montant_regle, + p_factures_soldes_c.montant_comptabilise_0 AS montant_regle_0, + p_factures_soldes_c.montant_comptabilise_1 AS montant_regle_1, + p_factures_soldes_c.montant_comptabilise_2 AS montant_regle_2, + p_factures_soldes_c.montant_comptabilise_22 AS montant_regle_22, + '1'::text AS od_non_comptabilise + FROM activite[PX].p_factures_soldes_c + JOIN activite[PX].p_factures ON split_part(p_factures_soldes_c.no_facture,'-IM',1) = p_factures.no_facture + WHERE p_factures_soldes_c.no_facture LIKE '%-IM%' AND p_factures_soldes_c.montant_comptabilise <> 0 + ; + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + facture_id, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures.no_facture, + p_factures.oid AS facture_id, + p_factures_soldes_c.date_comptable, + p_factures_soldes_c.rubrique_comptabilisee_id, + p_factures_soldes_c.prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0-p_factures_soldes_c.montant_comptabilise AS montant_regle, + 0-p_factures_soldes_c.montant_comptabilise_0 AS montant_regle_0, + 0-p_factures_soldes_c.montant_comptabilise_1 AS montant_regle_1, + 0-p_factures_soldes_c.montant_comptabilise_2 AS montant_regle_2, + 0-p_factures_soldes_c.montant_comptabilise_22 AS montant_regle_22, + '1'::text AS od_non_comptabilise + FROM activite[PX].p_factures_soldes_c + JOIN activite[PX].p_factures ON split_part(p_factures_soldes_c.no_facture,'-IM',1) = p_factures.no_facture + WHERE p_factures_soldes_c.no_facture LIKE '%-IM%' AND montant_comptabilise <> 0 + ; + + DROP TABLE IF EXISTS w_facture_total_impaye; + CREATE TEMP TABLE w_facture_total_impaye AS + SELECT split_part(p_factures.no_facture,'-IM',1) AS impaye_no_facture, + SUM(montant_comptabilise_c) AS impaye_montant_comptabilise_c, + SUM(montant_comptabilise_1_c) AS impaye_montant_comptabilise_1_c, + SUM(montant_comptabilise_2_c) AS impaye_montant_comptabilise_2_c, + SUM(montant_comptabilise_22_c) AS impaye_montant_comptabilise_22_c, + SUM(montant_comptabilise_0_c) AS impaye_montant_comptabilise_0_c + FROM activite[PX].p_factures + WHERE no_facture LIKE '%-IM%' AND montant_comptabilise_c <> 0 + GROUP BY 1 + ; + + UPDATE activite[PX].p_factures SET + montant_regle_c = montant_regle_c - impaye_montant_comptabilise_c, + montant_regle_1_c = montant_regle_1_c - impaye_montant_comptabilise_1_c, + montant_regle_2_c = montant_regle_2_c - impaye_montant_comptabilise_2_c, + montant_regle_22_c = montant_regle_22_c - impaye_montant_comptabilise_22_c, + montant_regle_0_c = montant_regle_0_c - impaye_montant_comptabilise_0_c + FROM w_facture_total_impaye + WHERE p_factures.no_facture = impaye_no_facture + ; + + UPDATE activite[PX].p_factures SET + montant_regle_c = montant_regle_c + montant_comptabilise_c, + montant_regle_1_c = montant_regle_1_c + montant_comptabilise_1_c, + montant_regle_2_c = montant_regle_2_c + montant_comptabilise_2_c, + montant_regle_22_c = montant_regle_22_c + montant_comptabilise_22_c, + montant_regle_0_c = montant_regle_0_c + montant_comptabilise_0_c + FROM w_facture_total_impaye + WHERE p_factures.no_facture LIKE '%-IM%' AND + split_part(p_factures.no_facture,'-IM',1) = w_facture_total_impaye.impaye_no_facture + ; + + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_8'); + + + + ]]> + + + + 0 + GROUP BY 1 + ; + + UPDATE prod_web100t.DAT_PRESTATIONS_GAP SET + PREST_PU = PU, + PREST_QUANTITE = (date(prest_date_fin)-date(prest_date_debut)+1), + PREST_MFE_HON = round(((date(prest_date_fin)-date(prest_date_debut)+1)*PU*PREST_COEFF)::numeric,2) + FROM w_DAT_PRESTATIONS_GAP_PU + WHERE DAT_PRESTATIONS_GAP.PREST_CODE = w_DAT_PRESTATIONS_GAP_PU.PREST_CODE AND + PREST_DATE_DEBUT <> PREST_DATE_FIN + ; + + TRUNCATE activite[PX].p_factures_lignes_non_facturees_h; + + INSERT INTO activite[PX].p_factures_lignes_non_facturees_h( + no_facture, + facture_id, + date_debut, + date_fin, + heure_debut, + nb_rubrique, + coefficient, + medecin_facture_id, + prestation_id, + prix_unitaire, + montant_depassement, + lieu_id, + acte_id, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4) + SELECT + p_factures.no_facture, + p_factures.oid AS facture_id, + date(PREST_DATE_DEBUT) AS date_debut, + date(COALESCE(PREST_DATE_FIN, PREST_DATE_DEBUT)) AS date_fin, + extract('hour' FROM COALESCE(PREST_DATE_FIN, PREST_DATE_DEBUT)) AS heure_debut, + CASE WHEN PREST_QUANTITE <> 0 AND PREST_PU <> 0 THEN PREST_QUANTITE ELSE 1 END AS nb_rubrique, + CASE WHEN PREST_COEFF <> 0 AND PREST_PU <> 0 THEN PREST_COEFF ELSE 1 END AS coefficient, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_facture_id, + prestation_id, + CASE WHEN PREST_PU <> 0 THEN PREST_PU ELSE PREST_MFE_HON END AS prix_unitaire, + PREST_DEPASSEMENT AS montant_depassement, + p_sejours.lieu_sortie_id AS lieu_id, + acte_id, + ART_CODE_PHASE AS phase_ccam, + ART_CODE_ACTIVITE AS activite_ccam, + PREST_EXTENSION_DOC AS extension_ccam, + substr(PREST_MODIFICATEURS,1,1) AS modificateur_ccam_1, + substr(PREST_MODIFICATEURS,2,1) AS modificateur_ccam_2, + substr(PREST_MODIFICATEURS,3,1) AS modificateur_ccam_3, + substr(PREST_MODIFICATEURS,4,1) AS modificateur_ccam_4 + + FROM prod_web100t.DAT_PRESTATIONS_GAP + JOIN prod_web100t.DAT_DA ON PREST_DA = DA_OID + JOIN activite[PX].p_sejours ON DA_OID = p_sejours.code_original AND date(PREST_DATE_DEBUT) BETWEEN date_entree AND date_sortie + JOIN activite[PX].p_factures ON p_factures.no_sejour = p_sejours.no_sejour AND type_facture = 'E' AND date(PREST_DATE_DEBUT) BETWEEN date_debut AND date_fin + JOIN w_ART_ARTICLES ON PREST_ARTICLE = ART_OID + LEFT JOIN activite[PX].t_medecins_administratifs ON PREST_EXECUTANT = t_medecins_administratifs.code_original + WHERE PREST_MFE_HON > 0 AND PREST_ENTENTE_DIRECTE = 0 AND PREST_DELETED = 0 + + + ORDER BY p_sejours.no_sejour; + + + ]]> + + + + = 0 THEN 1 ELSE -1 END AS nb_rubrique, + CASE WHEN SUM(FLT_TOTAL_TTC) >= 0 THEN 1 ELSE -1 END AS nb_prestation, + MAX(COALESCE(B2T_QUANTITE,1)) AS coefficient, + 1::numeric AS coefficient_mco, + + MAX(COALESCE(B2T_TAUX_CLI,0)) AS taux_0, + MAX(COALESCE(B2T_TAUX_AMO,0)) AS taux_1, + MAX(COALESCE(B2T_TAUX_AMC,0)) AS taux_2, + MAX(COALESCE(B2T_TAUX_AMD,0)) AS taux_22, + + SUM(FLT_TOTAL_TTC) AS montant_facture, + SUM(CASE WHEN FLT_IS_DEP = 1 THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_depassement, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_0, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_1, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_2, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_22, + + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + + SUM(CASE WHEN code_vente = '1' AND FLT_IS_DIRECT <= 0 AND FLT_IS_ETS = 0 AND FT_TYPE_TIER <> 'ETS' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise, + SUM(CASE WHEN code_vente = '1' AND FLT_IS_DIRECT <= 0 AND FLT_IS_ETS = 0 AND FT_TYPE_TIER = 'CLI' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise_0, + SUM(CASE WHEN code_vente = '1' AND FLT_IS_DIRECT <= 0 AND FLT_IS_ETS = 0 AND FT_TYPE_TIER = 'AMO' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise_1, + SUM(CASE WHEN code_vente = '1' AND FLT_IS_DIRECT <= 0 AND FLT_IS_ETS = 0 AND FT_TYPE_TIER = 'AMC' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise_2, + SUM(CASE WHEN code_vente = '1' AND FLT_IS_DIRECT <= 0 AND FLT_IS_ETS = 0 AND FT_TYPE_TIER = 'AMD' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise_22, + 0::numeric AS montant_comptabilise_budget_global_1, + + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + + MAX(CASE WHEN FT_TYPE_TIER = 'CLI' THEN FLT_OID ELSE 0 END) AS FLT_OID_0, + MAX(CASE WHEN FT_TYPE_TIER = 'AMO' THEN FLT_OID ELSE 0 END) AS FLT_OID_1, + MAX(CASE WHEN FT_TYPE_TIER = 'AMC' THEN FLT_OID ELSE 0 END) AS FLT_OID_2, + MAX(CASE WHEN FT_TYPE_TIER = 'AMD' THEN FLT_OID ELSE 0 END) AS FLT_OID_22 + + FROM prod_web100t.FAC_FACT_LIGNE_TIER + JOIN w_factures ON FLT_FACTURE = FACT_OID AND IMPAYE = 0 + JOIN prod_web100t.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN prod_web100t.FAC_FACT_LIGNE ON FLT_LIGNE_FACTURE = LI_OID + JOIN w_ART_ARTICLES ON FLT_ARTICLE = ART_OID + LEFT JOIN activite[PX].t_medecins_administratifs ON FLT_INTERVENANT = code_original + LEFT JOIN w_FAC_B2_TIER ON LI_LIGNE_SOURCE = B2T_LIGNE + WHERE (FLT_IS_ETS = 0 OR LI_TYPE_B2 = '4') AND FLT_RECAP <> 0 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,FLT_DATE_DEBUT; + + + -- Impayés + INSERT INTO w_factures_lignes_h + SELECT + FLT_LIGNE_FACTURE, + + w_factures.no_facture, + w_factures.oid AS facture_id, + date_vente, + + lieu_sortie_id AS lieu_id, + 1::numeric AS origine_facturation_id, + + COALESCE(t_medecins_administratifs.oid,0) AS medecin_facture_id, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_comptabilise_id, + + acte_id, + ART_CODE_PHASE AS phase_ccam, + ART_CODE_ACTIVITE AS activite_ccam, + ''::text AS extension_ccam, + ''::text AS modificateur_ccam_1, + ''::text AS modificateur_ccam_2, + ''::text AS modificateur_ccam_3, + ''::text AS modificateur_ccam_4, + + rubrique_facturation_id, + rubrique_facturation_id AS rubrique_comptabilisation_id, + prestation_id, + 0::bigint AS protocole_id, + 0::bigint AS compte_produit_id, + + date(MIN(FLT_DATE_DEBUT)) AS date_debut, + date(MAX(FLT_DATE_FIN)) AS date_fin, + date_part('hour', FLT_DATE_DEBUT)*10000 + date_part('minute', FLT_DATE_DEBUT)*100 + date_part('second', FLT_DATE_DEBUT) AS heure_debut, + + + MAX(COALESCE(B2T_PU,FLT_TOTAL_TTC)) AS prix_unitaire, + + 0 AS nb_rubrique, + 0 AS nb_prestation, + MAX(COALESCE(B2T_QUANTITE,1)) AS coefficient, + 1::numeric AS coefficient_mco, + + MAX(COALESCE(B2T_TAUX_CLI,0)) AS taux_0, + MAX(COALESCE(B2T_TAUX_AMO,0)) AS taux_1, + MAX(COALESCE(B2T_TAUX_AMC,0)) AS taux_2, + MAX(COALESCE(B2T_TAUX_AMD,0)) AS taux_22, + + 0 AS montant_facture, + 0 AS montant_depassement, + 0 AS montant_facture_0, + 0 AS montant_facture_1, + 0 AS montant_facture_2, + 0::numeric AS montant_facture_22, + + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + + SUM(FLT_TOTAL_IMPAYE_HON) AS montant_comptabilise, + SUM(FLT_TOTAL_IMPAYE_HON_CLI) AS montant_comptabilise_0, + SUM(FLT_TOTAL_IMPAYE_HON_AMO) AS montant_comptabilise_1, + SUM(FLT_TOTAL_IMPAYE_HON_AMC) AS montant_comptabilise_2, + SUM(FLT_TOTAL_IMPAYE_HON_AMD) AS montant_comptabilise_22, + 0::numeric AS montant_comptabilise_budget_global_1, + + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + + MAX(CASE WHEN FT_TYPE_TIER = 'CLI' THEN FLT_OID ELSE 0 END) AS FLT_OID_0, + MAX(CASE WHEN FT_TYPE_TIER = 'AMO' THEN FLT_OID ELSE 0 END) AS FLT_OID_1, + MAX(CASE WHEN FT_TYPE_TIER = 'AMC' THEN FLT_OID ELSE 0 END) AS FLT_OID_2, + MAX(CASE WHEN FT_TYPE_TIER = 'AMD' THEN FLT_OID ELSE 0 END) AS FLT_OID_22 + + FROM prod_web100t.FAC_FACT_LIGNE_TIER + JOIN w_FAC_FACT_LIGNE_TIER_IMPAYE ON FLT_OID = FLT_IMPAYE_OID + JOIN w_factures ON FLT_FACTURE = FACT_OID AND IMPAYE = w_FAC_FACT_LIGNE_TIER_IMPAYE.FI_COMPTA + JOIN prod_web100t.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN prod_web100t.FAC_FACT_LIGNE ON FLT_LIGNE_FACTURE = LI_OID + JOIN w_ART_ARTICLES ON FLT_ARTICLE = ART_OID + LEFT JOIN activite[PX].t_medecins_administratifs ON FLT_INTERVENANT = code_original + LEFT JOIN w_FAC_B2_TIER ON LI_LIGNE_SOURCE = B2T_LIGNE + WHERE (FLT_IS_ETS = 0 OR LI_TYPE_B2 = '4') AND FLT_RECAP <> 0 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,FLT_DATE_DEBUT; + + + + + + -- Actes honoraires comptabilisés en clinique, recherche véritable exécutant d'après les prestations + DROP TABLE IF EXISTS w_DAT_PRESTATIONS_GAP; + CREATE TEMP TABLE w_DAT_PRESTATIONS_GAP AS + SELECT PREST_DA, PREST_DATE_DEBUT, PREST_DATE_FIN, PREST_CODE, PREST_ARTICLE, MAX(PREST_EXECUTANT) AS PREST_EXECUTANT + FROM prod_web100t.DAT_PRESTATIONS_GAP + WHERE PREST_EXECUTANT <> 0 AND PREST_DELETED = 0 + GROUP BY 1,2,3,4,5; + + DROP TABLE IF EXISTS w_FAC_FACT_LIGNE_TIER_EXEC; + CREATE TEMP TABLE w_FAC_FACT_LIGNE_TIER_EXEC AS + SELECT FLT_OID, + MAX(COALESCE(w_DAT_PRESTATIONS_GAP_1.PREST_EXECUTANT,w_DAT_PRESTATIONS_GAP_2.PREST_EXECUTANT,FLT_INTERVENANT)) AS FLT_INTERVENANT + FROM prod_web100t.FAC_FACT_LIGNE_TIER + JOIN prod_web100t.FAC_FACTURE ON FLT_FACTURE = FACT_OID + JOIN prod_web100t.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN prod_web100t.FAC_FACT_LIGNE ON FLT_LIGNE_FACTURE = LI_OID + JOIN prod_web100t.DAT_DA ON FT_DA = DA_OID + LEFT JOIN w_DAT_PRESTATIONS_GAP w_DAT_PRESTATIONS_GAP_1 ON + w_DAT_PRESTATIONS_GAP_1.PREST_DA = FT_DA AND + (date(FLT_DATE_DEBUT) = date(w_DAT_PRESTATIONS_GAP_1.PREST_DATE_DEBUT) OR + date(FLT_DATE_FIN) = date(w_DAT_PRESTATIONS_GAP_1.PREST_DATE_FIN) + ) AND + (FLT_ARTICLE = w_DAT_PRESTATIONS_GAP_1.PREST_ARTICLE OR FLT_CODE_PREST = PREST_CODE) + LEFT JOIN w_DAT_PRESTATIONS_GAP w_DAT_PRESTATIONS_GAP_2 ON + w_DAT_PRESTATIONS_GAP_2.PREST_DA = FT_DA AND + (FLT_ARTICLE = w_DAT_PRESTATIONS_GAP_2.PREST_ARTICLE OR FLT_CODE_PREST = w_DAT_PRESTATIONS_GAP_2.PREST_CODE) + WHERE FLT_IS_ETS = 1 AND LI_TYPE_B2 = '4' AND FLT_RECAP <> 0 + GROUP BY 1; + + + UPDATE w_factures_lignes_h SET + medecin_facture_id = t_medecins_administratifs.oid, + medecin_comptabilise_id = t_medecins_administratifs.oid + FROM w_FAC_FACT_LIGNE_TIER_EXEC + JOIN activite[PX].t_medecins_administratifs ON FLT_INTERVENANT = code_original + WHERE w_factures_lignes_h.FLT_OID_0 = w_FAC_FACT_LIGNE_TIER_EXEC.FLT_OID AND + medecin_facture_id IS DISTINCT FROM t_medecins_administratifs.oid; + + UPDATE w_factures_lignes_h SET + medecin_facture_id = t_medecins_administratifs.oid, + medecin_comptabilise_id = t_medecins_administratifs.oid + FROM w_FAC_FACT_LIGNE_TIER_EXEC + JOIN activite[PX].t_medecins_administratifs ON FLT_INTERVENANT = code_original + WHERE w_factures_lignes_h.FLT_OID_1 = w_FAC_FACT_LIGNE_TIER_EXEC.FLT_OID AND + medecin_facture_id IS DISTINCT FROM t_medecins_administratifs.oid; + + UPDATE w_factures_lignes_h SET + medecin_facture_id = t_medecins_administratifs.oid, + medecin_comptabilise_id = t_medecins_administratifs.oid + FROM w_FAC_FACT_LIGNE_TIER_EXEC + JOIN activite[PX].t_medecins_administratifs ON FLT_INTERVENANT = code_original + WHERE w_factures_lignes_h.FLT_OID_2 = w_FAC_FACT_LIGNE_TIER_EXEC.FLT_OID AND + medecin_facture_id IS DISTINCT FROM t_medecins_administratifs.oid; + + UPDATE w_factures_lignes_h SET + medecin_facture_id = t_medecins_administratifs.oid, + medecin_comptabilise_id = t_medecins_administratifs.oid + FROM w_FAC_FACT_LIGNE_TIER_EXEC + JOIN activite[PX].t_medecins_administratifs ON FLT_INTERVENANT = code_original + WHERE w_factures_lignes_h.FLT_OID_22 = w_FAC_FACT_LIGNE_TIER_EXEC.FLT_OID AND + medecin_facture_id IS DISTINCT FROM t_medecins_administratifs.oid; + + -- Correction de taux bizarres + UPDATE w_factures_lignes_h SET + taux_0 = CASE WHEN taux_0 > 100 THEN 100 WHEN taux_0 < -100 THEN -100 ELSE taux_0 END, + taux_1 = CASE WHEN taux_1 > 100 THEN 100 WHEN taux_1 < -100 THEN -100 ELSE taux_1 END, + taux_2 = CASE WHEN taux_2 > 100 THEN 100 WHEN taux_2 < -100 THEN -100 ELSE taux_2 END, + taux_22 = CASE WHEN taux_22 > 100 THEN 100 WHEN taux_22 < -100 THEN -100 ELSE taux_22 END + WHERE + taux_0 > 100 OR + taux_1 > 100 OR + taux_2 > 100 OR + taux_22 > 100 OR + taux_0 < -100 OR + taux_1 < -100 OR + taux_2 < -100 OR + taux_22 < -100 + ; + + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_9'); + + + INSERT INTO activite[PX].p_factures_lignes_h( + no_facture, + facture_id, + + lieu_id, + + medecin_facture_id, + medecin_comptabilise_id, + + acte_id, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + protocole_id, + + date_debut, + date_fin, + heure_debut, + + + prix_unitaire, + + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + + taux_0, + taux_1, + taux_2, + taux_22, + + montant_facture, + montant_depassement, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + + + ) + SELECT + no_facture, + facture_id, + + lieu_id, + + medecin_facture_id, + medecin_comptabilise_id, + + acte_id, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + + rubrique_facturation_id, + rubrique_facturation_id AS rubrique_comptabilisation_id, + prestation_id, + protocole_id, + + date_debut, + date_fin, + heure_debut, + + + prix_unitaire, + + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + + taux_0, + taux_1, + taux_2, + taux_22, + + montant_facture, + montant_depassement, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + FROM w_factures_lignes_h; + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_9'); + + + + + ]]> + + + + 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4; + + + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + facture_id, + date_comptable, + medecin_comptabilise_id, + od_non_comptabilise, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + w_factures.no_facture, + w_factures.oid AS facture_id, + date(COALESCE(ECR_DATE,RD_DATE,FR_DATE_ENC)) AS date_comptable, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_comptabilise_id, + CASE + WHEN FR_DATE_DEPOT_GUESS IS NOT NULL AND FR_DATE_ENC IS NULL THEN '1' + WHEN RD_CREATED > ECR_UPDATED_MAX THEN '1' + ELSE '0' END AS od_non_comptabilise, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(RD_MONTANT) As montant_regle, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN RD_MONTANT ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN RD_MONTANT ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN RD_MONTANT ELSE 0 END) AS montant_regle_2, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN RD_MONTANT ELSE 0 END) AS montant_regle_22 + FROM prod_web100t.FAC_RGLMT_DETAILS + JOIN prod_web100t.FAC_REGLEMENTS ON FR_OID = RD_REGLEMENT + JOIN w_factures ON RD_FACTURE = FACT_OID AND IMPAYE = 0 + JOIN prod_web100t.FAC_FACT_TIER ON RD_FACT_TIER = FT_OID + JOIN prod_web100t.FAC_FACT_LIGNE_TIER ON RD_FACT_LINE = FLT_OID + LEFT JOIN activite[PX].t_medecins_administratifs ON FLT_INTERVENANT = code_original + LEFT JOIN w_CPT_OP_LINK ON RD_COMPTA = LNK_OPERATION + JOIN w_max_ECR_UPDATED ON 1=1 + WHERE RD_ETS = 0 AND FLT_IS_DIRECT = 0 + GROUP BY 1,2,3,4,5; + + -- Paiements directs comptabilisés + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + facture_id, + date_comptable, + medecin_comptabilise_id, + od_non_comptabilise, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + w_factures.no_facture, + w_factures.oid AS facture_id, + w_factures.date_vente AS date_comptable, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_comptabilise_id, + '0'::text AS od_non_comptabilise, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(FLT_TOTAL_TTC) As montant_regle, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_regle_2, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_regle_22 + FROM prod_web100t.FAC_FACT_LIGNE_TIER + JOIN w_factures ON FLT_FACTURE = FACT_OID AND IMPAYE = 0 + JOIN prod_web100t.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + LEFT JOIN activite[PX].t_medecins_administratifs ON FLT_INTERVENANT = code_original + WHERE FLT_IS_ETS = 0 AND FLT_IS_DIRECT = -1 + GROUP BY 1,2,3,4,5; + + -- Solder les factures soldées par une facture d'impayé + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + facture_id, + date_comptable, + medecin_comptabilise_id, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures_soldes_h.no_facture, + p_factures_soldes_h.facture_id, + p_factures_soldes_h.date_comptable, + p_factures_soldes_h.medecin_comptabilise_id, + p_factures_soldes_h.rubrique_comptabilisee_id, + p_factures_soldes_h.prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + p_factures_soldes_h.montant_comptabilise AS montant_regle, + p_factures_soldes_h.montant_comptabilise_0 AS montant_regle_0, + p_factures_soldes_h.montant_comptabilise_1 AS montant_regle_1, + p_factures_soldes_h.montant_comptabilise_2 AS montant_regle_2, + p_factures_soldes_h.montant_comptabilise_22 AS montant_regle_22, + '1'::text AS od_non_comptabilise + FROM activite[PX].p_factures_soldes_h + JOIN activite[PX].p_factures ON split_part(p_factures_soldes_h.no_facture,'-IM',1) = p_factures.no_facture + WHERE p_factures_soldes_h.no_facture LIKE '%-IM%' AND p_factures_soldes_h.montant_comptabilise <> 0 + ; + + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + facture_id, + date_comptable, + medecin_comptabilise_id, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures.no_facture, + p_factures.oid AS facture_id, + p_factures_soldes_h.date_comptable, + p_factures_soldes_h.medecin_comptabilise_id, + p_factures_soldes_h.rubrique_comptabilisee_id, + p_factures_soldes_h.prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0-p_factures_soldes_h.montant_comptabilise AS montant_regle, + 0-p_factures_soldes_h.montant_comptabilise_0 AS montant_regle_0, + 0-p_factures_soldes_h.montant_comptabilise_1 AS montant_regle_1, + 0-p_factures_soldes_h.montant_comptabilise_2 AS montant_regle_2, + 0-p_factures_soldes_h.montant_comptabilise_22 AS montant_regle_22, + '1'::text AS od_non_comptabilise + FROM activite[PX].p_factures_soldes_h + JOIN activite[PX].p_factures ON split_part(p_factures_soldes_h.no_facture,'-IM',1) = p_factures.no_facture + WHERE p_factures_soldes_h.no_facture LIKE '%-IM%' AND montant_comptabilise <> 0 + ; + + DROP TABLE IF EXISTS w_facture_total_impaye; + CREATE TEMP TABLE w_facture_total_impaye AS + SELECT split_part(p_factures.no_facture,'-IM',1) AS impaye_no_facture, + SUM(montant_comptabilise_h) AS impaye_montant_comptabilise_h, + SUM(montant_comptabilise_1_h) AS impaye_montant_comptabilise_1_h, + SUM(montant_comptabilise_2_h) AS impaye_montant_comptabilise_2_h, + SUM(montant_comptabilise_22_h) AS impaye_montant_comptabilise_22_h, + SUM(montant_comptabilise_0_h) AS impaye_montant_comptabilise_0_h + FROM activite[PX].p_factures + WHERE no_facture LIKE '%-IM%' AND montant_comptabilise_h <> 0 + GROUP BY 1 + ; + + UPDATE activite[PX].p_factures SET + montant_regle_h = montant_regle_h - impaye_montant_comptabilise_h, + montant_regle_1_h = montant_regle_1_h - impaye_montant_comptabilise_1_h, + montant_regle_2_h = montant_regle_2_h - impaye_montant_comptabilise_2_h, + montant_regle_22_h = montant_regle_22_h - impaye_montant_comptabilise_22_h, + montant_regle_0_h = montant_regle_0_h - impaye_montant_comptabilise_0_h + FROM w_facture_total_impaye + WHERE p_factures.no_facture = impaye_no_facture + ; + + UPDATE activite[PX].p_factures SET + montant_regle_h = montant_regle_h + montant_comptabilise_h, + montant_regle_1_h = montant_regle_1_h + montant_comptabilise_1_h, + montant_regle_2_h = montant_regle_2_h + montant_comptabilise_2_h, + montant_regle_22_h = montant_regle_22_h + montant_comptabilise_22_h, + montant_regle_0_h = montant_regle_0_h + montant_comptabilise_0_h + FROM w_facture_total_impaye + WHERE p_factures.no_facture LIKE '%-IM%' AND + split_part(p_factures.no_facture,'-IM',1) = w_facture_total_impaye.impaye_no_facture + ; + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_8'); + + + ]]> + + + + + + + + + 0 AND + p_sejours.ghm_id <= 0 AND + t_ghm_pmsi.code NOT LIKE '90%' AND + t_ghm_pmsi.code NOT LIKE '99%' + ; + + ANALYSE activite[PX].p_sejours; + ANALYSE activite[PX].p_factures; + ANALYSE activite[PX].p_factures_lignes_c; + + -- Ajout des prestations PMSI aux prestations activité + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT + t_prestations_pmsi.code, + t_prestations_pmsi.code, + t_prestations_pmsi.texte, + t_prestations_pmsi.texte + FROM pmsi.p_rsf_detail + JOIN pmsi.p_rss ON p_rss.oid = p_rsf_detail.rss_id AND p_rss.etat = '' AND p_rss.en_cours = '0' + JOIN pmsi.t_prestations t_prestations_pmsi ON t_prestations_pmsi.oid = p_rsf_detail.prestation_id + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code = t_prestations_pmsi.code + WHERE est_ligne_rss = '1' AND p_rss.en_cours = '0' AND + operation_lamda IS DISTINCT FROM '1' AND + operation_lamda IS DISTINCT FROM '2' AND + t_rubriques_facturation.oid IS NULL + GROUP BY 1,2,3,4; + + -- Ajout des prestations PMSI aux rubriques activité + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT + t_prestations_pmsi.code, + t_prestations_pmsi.code, + t_prestations_pmsi.texte, + t_prestations_pmsi.texte + FROM pmsi.p_rsf_detail + JOIN pmsi.p_rss ON p_rss.oid = p_rsf_detail.rss_id AND p_rss.etat = '' AND p_rss.en_cours = '0' + JOIN pmsi.t_prestations t_prestations_pmsi ON t_prestations_pmsi.oid = p_rsf_detail.prestation_id + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite.t_prestations t_prestations_activite ON t_prestations_activite.code = t_prestations_pmsi.code + WHERE est_ligne_rss = '1' AND p_rss.en_cours = '0' AND + operation_lamda IS DISTINCT FROM '1' AND + operation_lamda IS DISTINCT FROM '2' AND + t_prestations_activite.oid IS NULL + GROUP BY 1,2,3,4; + + -- Lignes PMSI à ajouter + DROP TABLE IF EXISTS w_factures_lignes_pmsi; + CREATE TEMP TABLE w_factures_lignes_pmsi AS + SELECT + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour || '.BG' AS no_facture, + 0::bigint AS facture_id, + CASE WHEN p_rsf_detail.type = 'C' THEN 'H' ELSE 'C' END AS clinique_honoraire, + p_rsf_detail.date_debut, + CASE WHEN p_sejours.type_sejour <> '5' THEN p_rsf_detail.date_fin ELSE p_rsf_detail.date_debut END AS date_fin, + p_rsf_detail.nombre AS nb_rubrique, + p_rsf_detail.nombre AS nb_prestation, + p_rsf_detail.coefficient AS coefficient, + p_rsf_detail.coefficient_mco, + COALESCE(t_rubriques_facturation.oid,0::bigint) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid,0::bigint) AS rubrique_comptabilisation_id, + COALESCE(t_prestations_activite.oid,0::bigint) AS prestation_id, + CASE WHEN p_rss.traitement_epmsi IN ('30','31','32','33') THEN p_rsf_detail.sejour_remboursable ELSE 0 END AS montant_facture, + 0::numeric AS montant_facture_0, + CASE WHEN p_rss.traitement_epmsi IN ('30','31','32','33') THEN p_rsf_detail.sejour_remboursable ELSE 0 END AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + 0::numeric AS taux_0, + p_rsf_detail.taux_remboursement AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_22, + p_rsf_detail.prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + CASE WHEN p_rsf_detail.type = 'C' THEN 2::bigint ELSE 1::bigint END AS origine_facturation_id, + CASE WHEN p_rss.traitement_epmsi IN ('30','31','32','33') THEN p_rsf_detail.sejour_remboursable ELSE 0 END AS montant_comptabilise_budget_global_1, + 0::numeric AS protocole_id, + 0::numeric AS compte_produit_id, + t_prestations_pmsi.code AS prestation_code, + ''::text AS uf_code, + ''::text AS dmt_code, + ''::text AS mt_code + FROM pmsi.p_rsf_detail + JOIN pmsi.p_rss ON p_rss.oid = p_rsf_detail.rss_id AND p_rss.etat = '' AND p_rss.en_cours = '0' + JOIN pmsi.p_rsf_total ON p_rss.oid = p_rsf_total.rss_id AND p_rsf_total.valorise_fides IS DISTINCT FROM 1 + JOIN pmsi.t_prestations t_prestations_pmsi ON t_prestations_pmsi.oid = p_rsf_detail.prestation_id + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejour_pmsi ON p_rss.oid = p_sejour_pmsi.rss_id + JOIN activite[PX].p_sejours on p_sejour_pmsi.no_sejour = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite.t_prestations t_prestations_activite ON t_prestations_activite.code = t_prestations_pmsi.code + LEFT JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code = t_prestations_pmsi.code + WHERE est_ligne_rss = '1' AND p_rss.en_cours = '0' AND + p_rss.etat = '' AND + operation_lamda IS DISTINCT FROM '1' AND + operation_lamda IS DISTINCT FROM '2' AND + p_rss.traitement_epmsi NOT IN ('11', '12') ; + + -- compte + UPDATE w_factures_lignes_pmsi + SET uf_code = t_unites_fonctionnelles.code, + dmt_code = CASE WHEN t_dmt.oid <> 0 THEN t_dmt.code ELSE '' END, + mt_code = CASE WHEN t_modes_traitement.oid <> 0 THEN CASE WHEN t_modes_traitement.code <> '23' THEN t_modes_traitement.code ELSE '04' END ELSE '' END + FROM activite[PX].t_lieux + JOIN activite[PX].t_unites_fonctionnelles ON unite_fonctionnelle_id = t_unites_fonctionnelles.oid + JOIN activite[PX].t_services_facturation On service_facturation_id = t_services_facturation.oid + JOIN base.t_dmt ON dmt_id = t_dmt.oid + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + WHERE lieu_id = t_lieux.oid; + + DROP TABLE IF EXISTS w_last_comptes_produits; + CREATE TEMP TABLE w_last_comptes_produits AS + SELECT t_prestations.code AS last_prestation_code, + t_unites_fonctionnelles.code AS last_uf_code, + t_dmt.code AS last_dmt_code, + t_modes_traitement.code AS last_mt_code, + (MAX(ARRAY[date_fin::text,compte_produit_id::text]))[2]::bigint AS last_compte_produit_id + FROM activite[PX].p_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN activite[PX].t_lieux ON lieu_id = t_lieux.oid + JOIN activite[PX].t_unites_fonctionnelles ON unite_fonctionnelle_id = t_unites_fonctionnelles.oid + JOIN activite[PX].t_services_facturation On service_facturation_id = t_services_facturation.oid + JOIN base.t_dmt ON dmt_id = t_dmt.oid + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + WHERE compte_produit_id != 0 + GROUP BY 1,2,3,4; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = last_compte_produit_id + FROM w_last_comptes_produits + WHERE compte_produit_id = 0 AND + last_prestation_code = prestation_code AND + last_uf_code = uf_code AND + last_dmt_code = dmt_code AND + last_mt_code = mt_code; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = last_compte_produit_id + FROM w_last_comptes_produits + WHERE compte_produit_id = 0 AND + last_prestation_code = prestation_code AND + last_uf_code = uf_code AND + last_dmt_code = '' AND + last_mt_code = mt_code; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = last_compte_produit_id + FROM w_last_comptes_produits + WHERE compte_produit_id = 0 AND + last_prestation_code = prestation_code AND + last_uf_code = uf_code AND + last_dmt_code = dmt_code AND + last_mt_code = ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = last_compte_produit_id + FROM w_last_comptes_produits + WHERE compte_produit_id = 0 AND + last_prestation_code = prestation_code AND + last_uf_code = uf_code AND + last_dmt_code = '' AND + last_mt_code = ''; + + + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = last_compte_produit_id + FROM w_last_comptes_produits + WHERE compte_produit_id = 0 AND + last_prestation_code = prestation_code AND + last_uf_code = '' AND + last_dmt_code = dmt_code AND + last_mt_code = mt_code; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = last_compte_produit_id + FROM w_last_comptes_produits + WHERE compte_produit_id = 0 AND + last_prestation_code = prestation_code AND + last_uf_code = '' AND + last_dmt_code = '' AND + last_mt_code = mt_code; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = last_compte_produit_id + FROM w_last_comptes_produits + WHERE compte_produit_id = 0 AND + last_prestation_code = prestation_code AND + last_uf_code = '' AND + last_dmt_code = dmt_code AND + last_mt_code = ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = last_compte_produit_id + FROM w_last_comptes_produits + WHERE compte_produit_id = 0 AND + last_prestation_code = prestation_code AND + last_uf_code = '' AND + last_dmt_code = '' AND + last_mt_code = ''; + + UPDATE w_factures_lignes_pmsi + SET prestation_id = (SELECT oid FROM activite.t_prestations WHERE code = 'UCD') + WHERE prestation_id IN (SELECT oid FROM activite.t_prestations WHERE code = 'PHH') + ; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_pmsi'); + + + CREATE INDEX w_factures_lignes_pmsi_i1 + ON w_factures_lignes_pmsi + USING btree + (no_sejour); + + + -- Factures de base + DROP TABLE IF EXISTS w_factures_pmsi_base; + CREATE TEMP TABLE w_factures_pmsi_base AS + SELECT p_factures.no_sejour, + (MAX(Array[CASE WHEN p_factures.code_facture <> '0' THEN p_factures.date_facture ELSE '00010101' END::text,p_factures.no_facture]))[2] AS no_facture_base + FROM pmsi.p_rss + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejour_pmsi ON p_rss.oid = p_sejour_pmsi.rss_id + JOIN activite[PX].p_sejours on p_sejour_pmsi.no_sejour = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour + WHERE p_rss.etat = '' AND + p_rss.en_cours = '0' + GROUP BY 1; + + CREATE INDEX w_factures_pmsi_base_i1 + ON w_factures_pmsi_base + USING btree + (no_sejour); + + CREATE INDEX w_factures_pmsi_base_i2 + ON w_factures_pmsi_base + USING btree + (no_facture_base); + + -- Factures à créer + DROP TABLE IF EXISTS w_factures_pmsi; + CREATE TEMP TABLE w_factures_pmsi AS + SELECT + w_factures_lignes_pmsi.no_sejour, + w_factures_lignes_pmsi.sejour_id, + w_factures_lignes_pmsi.no_facture, + p_sejours.date_entree AS date_debut, + p_sejours.date_sortie AS date_fin, + '0'::text AS type_facture, + '1'::text AS code_facture, + MAX(CASE + WHEN p_factures_base.date_facture IS NULL THEN p_sejours.date_sortie + WHEN p_factures_base.date_facture <> '20991231' THEN p_factures_base.date_facture + WHEN p_sejours.date_groupage <> '20991231' THEN p_sejours.date_groupage + ELSE p_sejours.date_sortie END)::date AS date_facture, + MAX(COALESCE(p_factures_base.code_vente,'1')) AS code_vente, + MAX(COALESCE(p_factures_base.mois_vente,209912)) AS mois_vente, + MAX(COALESCE(p_factures_base.date_facture,p_sejours.date_sortie)) AS date_solde, + '0'::text AS particularite_t2a, + MAX(COALESCE(p_factures_base.date_vente,p_sejours.date_sortie)) AS date_vente, + ''::text AS code_cloture, + MAX(p_sejours.code_cp_demandee) AS code_cp_demandee, + '20991231'::date AS date_encours, + MAX(p_sejours.ghs_id) AS ghs_id, + MAX(p_sejours.ghs_bebe1_id) AS ghs_bebe1_id, + MAX(p_sejours.ghs_bebe2_id) AS ghs_bebe2_id, + MAX(p_sejours.ghs_bebe3_id) AS ghs_bebe3_id, + MAX(p_sejours.ghm_id) AS ghm_id, + SUM(montant_facture) AS montant_facture_c, + 0::numeric AS montant_facture_h, + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + '20991231'::date AS date_expedition, + 0::numeric AS delai_expedition, + MAX(p_sejours.tiers_payant_1_id) AS tiers_payant_1_id, + MAX(p_sejours.tiers_payant_2_id) AS tiers_payant_2_id, + MAX(p_sejours.tiers_payant_22_id) AS tiers_payant_22_id, + MAX(p_sejours.tiers_payant_0_id) AS tiers_payant_0_id, + '20991231'::date AS date_solde_0_c, + '20991231'::date AS date_solde_0_h, + '20991231'::date AS date_solde_1_c, + '20991231'::date AS date_solde_1_h, + '20991231'::date AS date_solde_2_c, + '20991231'::date AS date_solde_2_h, + '20991231'::date AS date_solde_22_c, + '20991231'::date AS date_solde_22_h, + '20991231'::date AS date_expedition_0, + '20991231'::date AS date_expedition_1, + '20991231'::date AS date_expedition_2, + '20991231'::date AS date_expedition_22, + '0'::text AS code_expedie_0, + '0'::text AS code_expedie_1, + '0'::text AS code_expedie_2, + '0'::text AS code_expedie_22, + ''::text AS no_bordereau_0, + ''::text AS no_bordereau_1, + ''::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + 0::numeric AS montant_facture_0_c, + 0::numeric AS montant_facture_0_h, + SUM(montant_facture) AS montant_facture_1_c, + 0::numeric AS montant_facture_1_h, + 0::numeric AS montant_facture_2_c, + 0::numeric AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + 0::numeric AS montant_regle_1_h, + 0::numeric AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + 0::numeric AS nb_rejets, + 0::numeric AS montant_comptabilise_c, + 0::numeric AS montant_comptabilise_h, + 0::numeric AS montant_comptabilise_0_c, + 0::numeric AS montant_comptabilise_0_h, + 0::numeric AS montant_comptabilise_1_c, + 0::numeric AS montant_comptabilise_1_h, + 0::numeric AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + w_factures_lignes_pmsi.no_facture AS no_facture_reference, + 0::bigint AS facture_reference_id, + '20991231'::date AS date_solde_reference, + '20991231'::date AS date_solde_reference_c, + '20991231'::date AS date_solde_reference_h, + '20991231'::date AS date_solde_reference_0_c, + '20991231'::date AS date_solde_reference_1_c, + '20991231'::date AS date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + '20991231'::date AS date_solde_reference_0_h, + '20991231'::date AS date_solde_reference_1_h, + '20991231'::date AS date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h, + '20991231'::date AS date_solde_c, + '20991231'::date AS date_solde_h, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_c, + '' AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id + FROM w_factures_lignes_pmsi + JOIN activite[PX].p_sejours ON w_factures_lignes_pmsi.no_sejour = p_sejours.no_sejour + JOIN w_factures_pmsi_base ON w_factures_lignes_pmsi.no_sejour = w_factures_pmsi_base.no_sejour + LEFT JOIN activite[PX].p_factures p_factures_base ON w_factures_pmsi_base.no_facture_base = p_factures_base.no_facture AND 1 <> 1 + GROUP BY 1,2,3,4,5; + + INSERT INTO w_factures_pmsi + SELECT + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour || '.BG', + p_sejours.date_entree AS date_debut, + p_sejours.date_sortie AS date_fin, + '0'::text AS type_facture, + '1'::text AS code_facture, + MAX(CASE + WHEN p_sejours.date_groupage <> '20991231' THEN p_sejours.date_groupage + ELSE p_sejours.date_sortie END)::date AS date_facture, + '1' AS code_vente, + 209912 AS mois_vente, + '20991231' AS date_solde, + '0'::text AS particularite_t2a, + '20991231' AS date_vente, + ''::text AS code_cloture, + MAX(p_sejours.code_cp_demandee) AS code_cp_demandee, + '20991231'::date AS date_encours, + MAX(p_sejours.ghs_id) AS ghs_id, + MAX(p_sejours.ghs_bebe1_id) AS ghs_bebe1_id, + MAX(p_sejours.ghs_bebe2_id) AS ghs_bebe2_id, + MAX(p_sejours.ghs_bebe3_id) AS ghs_bebe3_id, + MAX(p_sejours.ghm_id) AS ghm_id, + 0 AS montant_facture_c, + 0::numeric AS montant_facture_h, + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + '20991231'::date AS date_expedition, + 0::numeric AS delai_expedition, + MAX(p_sejours.tiers_payant_1_id) AS tiers_payant_1_id, + MAX(p_sejours.tiers_payant_2_id) AS tiers_payant_2_id, + MAX(p_sejours.tiers_payant_22_id) AS tiers_payant_22_id, + MAX(p_sejours.tiers_payant_0_id) AS tiers_payant_0_id, + '20991231'::date AS date_solde_0_c, + '20991231'::date AS date_solde_0_h, + '20991231'::date AS date_solde_1_c, + '20991231'::date AS date_solde_1_h, + '20991231'::date AS date_solde_2_c, + '20991231'::date AS date_solde_2_h, + '20991231'::date AS date_solde_22_c, + '20991231'::date AS date_solde_22_h, + '20991231'::date AS date_expedition_0, + '20991231'::date AS date_expedition_1, + '20991231'::date AS date_expedition_2, + '20991231'::date AS date_expedition_22, + '0'::text AS code_expedie_0, + '0'::text AS code_expedie_1, + '0'::text AS code_expedie_2, + '0'::text AS code_expedie_22, + ''::text AS no_bordereau_0, + ''::text AS no_bordereau_1, + ''::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + 0::numeric AS montant_facture_0_c, + 0::numeric AS montant_facture_0_h, + 0::numeric AS montant_facture_1_c, + 0::numeric AS montant_facture_1_h, + 0::numeric AS montant_facture_2_c, + 0::numeric AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + 0::numeric AS montant_regle_1_h, + 0::numeric AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + 0::numeric AS nb_rejets, + 0::numeric AS montant_comptabilise_c, + 0::numeric AS montant_comptabilise_h, + 0::numeric AS montant_comptabilise_0_c, + 0::numeric AS montant_comptabilise_0_h, + 0::numeric AS montant_comptabilise_1_c, + 0::numeric AS montant_comptabilise_1_h, + 0::numeric AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + p_sejours.no_sejour || '.BG' AS no_facture_reference, + 0::bigint AS facture_reference_id, + '20991231'::date AS date_solde_reference, + '20991231'::date AS date_solde_reference_c, + '20991231'::date AS date_solde_reference_h, + '20991231'::date AS date_solde_reference_0_c, + '20991231'::date AS date_solde_reference_1_c, + '20991231'::date AS date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + '20991231'::date AS date_solde_reference_0_h, + '20991231'::date AS date_solde_reference_1_h, + '20991231'::date AS date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h, + '20991231'::date AS date_solde_c, + '20991231'::date AS date_solde_h, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_c, + '' AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id + FROM pmsi.p_rss + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN w_factures_pmsi ON p_sejours.no_sejour = w_factures_pmsi.no_sejour + WHERE p_rss.en_cours = '0' AND + p_rss.etat = '' AND + p_rss.traitement_epmsi NOT IN ('11', '12') AND + w_factures_pmsi.no_facture IS NULL AND + p_sejours.date_sortie >= '[ENV_ADM_ANNEEDEBUT]0101' AND + p_sejours.no_sejour NOT IN + ( + SELECT p_factures.no_sejour + FROM activite[PX].p_factures + WHERE montant_facture_1_c <> 0 + ) + GROUP BY 1,2,3,4,5; + + + UPDATE w_factures_pmsi + SET date_vente = date_facture, mois_vente = date_part('year',date_facture)*100 + date_part('month',date_facture) + WHERE date_vente = '20991231'; + + UPDATE w_factures_pmsi + SET date_solde = date_facture + WHERE date_vente IS DISTINCT FROM date_facture; + + + -- Ajout des factures + INSERT INTO activite[PX].p_factures + (no_sejour, no_facture, date_debut, date_fin, type_facture, + code_facture, date_facture, code_vente, mois_vente, date_solde, + montant_facture_c, montant_facture_h, montant_regle_c, montant_regle_h, + delai_facture, delai_solde, date_expedition, delai_expedition, + tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, tiers_payant_0_id, + date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, + date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h, + date_expedition_0, date_expedition_1, date_expedition_2, date_expedition_22, + code_expedie_0, code_expedie_1, code_expedie_2, code_expedie_22, + no_bordereau_0, no_bordereau_1, no_bordereau_2, no_bordereau_22, + montant_facture_0_c, montant_facture_0_h, montant_facture_1_c, + montant_facture_1_h, montant_facture_2_c, montant_facture_2_h, + montant_facture_22_c, montant_facture_22_h, montant_regle_0_c, + montant_regle_0_h, montant_regle_1_c, montant_regle_1_h, montant_regle_2_c, + montant_regle_2_h, montant_regle_22_c, montant_regle_22_h, delai_expedition_0, + delai_expedition_1, delai_expedition_2, delai_expedition_22, + delai_solde_0_c, delai_solde_0_h, delai_solde_1_c, delai_solde_1_h, + delai_solde_2_c, delai_solde_2_h, delai_solde_22_c, delai_solde_22_h, + ghs_id, particularite_t2a, date_vente, code_cloture, montant_encours_c, + montant_encours_0_c, montant_encours_1_c, montant_encours_2_c, + montant_encours_22_c, montant_encours_h, montant_encours_0_h, + montant_encours_1_h, montant_encours_2_h, montant_encours_22_h, + code_cp_demandee, date_encours, ghs_bebe1_id, ghs_bebe2_id, ghs_bebe3_id, + nb_rejets, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0_c, + montant_comptabilise_0_h, montant_comptabilise_1_c, montant_comptabilise_1_h, + montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_22_c, + montant_comptabilise_22_h, no_facture_reference, date_solde_reference, + date_solde_reference_c, date_solde_reference_h, date_solde_reference_0_c, + date_solde_reference_1_c, date_solde_reference_2_c, date_solde_reference_22_c, + date_solde_reference_0_h, date_solde_reference_1_h, date_solde_reference_2_h, + date_solde_reference_22_h, date_solde_c, date_solde_h, montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, montant_comptabilise_budget_global_c, + no_facture_od_avoir, sejour_id, facture_reference_id, facture_od_avoir_id, + ghm_id) + SELECt no_sejour, no_facture, date_debut, date_fin, type_facture, + code_facture, date_facture, code_vente, mois_vente, date_solde, + montant_facture_c, montant_facture_h, montant_regle_c, montant_regle_h, + delai_facture, delai_solde, date_expedition, delai_expedition, + tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, tiers_payant_0_id, + date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, + date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h, + date_expedition_0, date_expedition_1, date_expedition_2, date_expedition_22, + code_expedie_0, code_expedie_1, code_expedie_2, code_expedie_22, + no_bordereau_0, no_bordereau_1, no_bordereau_2, no_bordereau_22, + montant_facture_0_c, montant_facture_0_h, montant_facture_1_c, + montant_facture_1_h, montant_facture_2_c, montant_facture_2_h, + montant_facture_22_c, montant_facture_22_h, montant_regle_0_c, + montant_regle_0_h, montant_regle_1_c, montant_regle_1_h, montant_regle_2_c, + montant_regle_2_h, montant_regle_22_c, montant_regle_22_h, delai_expedition_0, + delai_expedition_1, delai_expedition_2, delai_expedition_22, + delai_solde_0_c, delai_solde_0_h, delai_solde_1_c, delai_solde_1_h, + delai_solde_2_c, delai_solde_2_h, delai_solde_22_c, delai_solde_22_h, + ghs_id, particularite_t2a, date_vente, code_cloture, montant_encours_c, + montant_encours_0_c, montant_encours_1_c, montant_encours_2_c, + montant_encours_22_c, montant_encours_h, montant_encours_0_h, + montant_encours_1_h, montant_encours_2_h, montant_encours_22_h, + code_cp_demandee, date_encours, ghs_bebe1_id, ghs_bebe2_id, ghs_bebe3_id, + nb_rejets, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0_c, + montant_comptabilise_0_h, montant_comptabilise_1_c, montant_comptabilise_1_h, + montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_22_c, + montant_comptabilise_22_h, no_facture_reference, date_solde_reference, + date_solde_reference_c, date_solde_reference_h, date_solde_reference_0_c, + date_solde_reference_1_c, date_solde_reference_2_c, date_solde_reference_22_c, + date_solde_reference_0_h, date_solde_reference_1_h, date_solde_reference_2_h, + date_solde_reference_22_h, date_solde_c, date_solde_h, montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, montant_comptabilise_budget_global_c, + no_facture_od_avoir, sejour_id, facture_reference_id, facture_od_avoir_id, + ghm_id + FROM w_factures_pmsi; + + + + -- Ajout des lignes + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, date_debut, date_fin, nb_rubrique, coefficient, coefficient_mco, + rubrique_facturation_id, prestation_id, montant_facture, montant_facture_0, + montant_facture_1, montant_facture_2, montant_facture_22, taux_0, + taux_1, taux_2, taux_22, finess, prix_unitaire, lieu_id, nb_prestation, + montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, + montant_comptabilise_2, montant_comptabilise_22, rubrique_comptabilisation_id, + montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, + montant_encours_22, montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, montant_comptabilise_budget_global_1, + facture_id, protocole_id, compte_produit_id) + SELECT + p_factures.no_facture, w_factures_lignes_pmsi.date_debut, w_factures_lignes_pmsi.date_fin, nb_rubrique, coefficient, coefficient_mco, + rubrique_facturation_id, prestation_id, montant_facture, montant_facture_0, + montant_facture_1, montant_facture_2, montant_facture_22, taux_0, + taux_1, taux_2, taux_22, finess, prix_unitaire, lieu_id, nb_prestation, + montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, + montant_comptabilise_2, montant_comptabilise_22, rubrique_comptabilisation_id, + montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, + montant_encours_22, montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, montant_comptabilise_budget_global_1, + p_factures.oid AS facture_id, protocole_id, compte_produit_id + FROM w_factures_lignes_pmsi + JOIN activite[PX].p_factures ON w_factures_lignes_pmsi.no_facture = p_factures.no_facture ; + + + + + -- En cours PMSI public + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id) + SELECT + p_sejours.oid, + p_sejours.no_sejour, + MAX(p_sejours.no_sejour || '.BG'), + MAX(p_sejours.no_sejour || '.BG'), + MAX(p_sejours.date_entree), + MAX(p_sejours.date_sortie), + '0', + '0', + '20991231'::date, + MAX(p_sejours.tiers_payant_0_id), + MAX(p_sejours.tiers_payant_1_id), + MAX(p_sejours.tiers_payant_2_id), + MAX(p_sejours.tiers_payant_22_id), + MAX(p_sejours.ghs_id), + MAX(p_sejours.ghs_bebe1_id), + MAX(p_sejours.ghs_bebe2_id), + MAX(p_sejours.ghs_bebe3_id) + FROM pmsi.p_rss + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND p_factures.no_facture LIKE '%BG' + WHERE p_rss.en_cours = '1' AND p_factures.no_facture IS NULL AND + p_sejours.type_sejour IN ('1','2','5') + GROUP BY 1,2; + + -- Sejours BG PMSi qui ne sont pas dans les RSS + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id) + SELECT p_sejours.oid, + p_sejours.no_sejour, + p_sejours.no_sejour || '.BG', + p_sejours.no_sejour || '.BG', + p_sejours.date_entree, + p_sejours.date_sortie, + '0', + '0', + '20991231'::date, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE p_sejours.est_budget_global = '1' AND + p_sejours.type_sejour IN ('1','2','5') AND + type_t2a = '1' AND + date_sortie between date(date_trunc('year',now() - interval '1 year')) AND now() AND + code_sorti = '1' AND + no_sejour NOT IN (SELECt no_sejour FROm activite[PX].p_factures where no_facture like '%BG') AND + no_sejour NOT IN ( + SELECT p_factures.no_sejour + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_sejours.est_budget_global = '1' AND + p_factures_lignes_c.no_facture NOT LIKE '%BG' AND + code_facture = '1' AND + (t_prestations.code = 'PJ' OR t_prestations.code LIKE 'GHS%') AND + (taux_1 = 100 OR taux_2 = 100 OR taux_0 = 100) + GROUP BY 1 + HAVING SUM(montant_facture_1+montant_facture_0+montant_facture_2) > 0 + ); + + -- Séances pour séjour présents + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id) + SELECT p_sejours.oid, + p_sejours.no_sejour, + p_sejours.no_sejour || '.BG', + p_sejours.no_sejour || '.BG', + p_sejours.date_entree, + date(date_trunc('month',now()) + interval '1 month' - interval '1 day'), + '0', + '0', + '20991231'::date, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE p_sejours.est_budget_global = '1' AND + type_t2a = '1' AND + date_entree between date(date_trunc('year',now() - interval '1 year')) AND now() AND + p_sejours.type_sejour IN ('5') AND + code_sorti <> '1' AND + no_sejour NOT IN (SELECt no_sejour FROm activite[PX].p_factures where no_facture like '%BG') AND + no_sejour NOT IN ( + SELECT p_factures.no_sejour + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_sejours.est_budget_global = '1' AND + code_facture = '1' AND + t_prestations.code = 'PJ' AND + (taux_2 = 100 OR taux_0 = 100) + GROUP BY 1 + HAVING SUM(montant_facture_0+montant_facture_2) > 0 + ); + + + -- Il peut y avoir des lignes en double avec la récupération standard + DELETE FROM activite[PX].p_factures_lignes_non_facturees_c + USING + ( + SELECT no_sejour, prestation_id, + p_factures_lignes_non_facturees_c.date_debut, + p_factures_lignes_non_facturees_c.date_fin, + p_factures_lignes_non_facturees_c.prix_unitaire, + MAX(CASE WHEN p_factures.no_facture NOT LIKE '%.BG' THEN p_factures_lignes_non_facturees_c.no_facture ELSE NULL END) AS no_facture + FROm activite[PX].p_factures_lignes_non_facturees_c + JOIN activite[PX].p_factures ON p_factures_lignes_non_facturees_c.no_facture = p_factures.no_facture + GROUP BY 1,2,3,4,5 + HAVING count(DISTINCT p_factures.no_facture) > 1 AND + MAX(CASE WHEN p_factures.no_facture LIKE '%.BG' THEN 1 ELSE 0 END) = 1 AND + MIN(CASE WHEN p_factures.no_facture LIKE '%.BG' THEN 1 ELSE 0 END) = 0 + ) subview + WHERE p_factures_lignes_non_facturees_c.no_facture = subview.no_facture AND + p_factures_lignes_non_facturees_c.prestation_id = subview.prestation_id AND + p_factures_lignes_non_facturees_c.date_debut = subview.date_debut AND + p_factures_lignes_non_facturees_c.date_fin = subview.date_fin AND + p_factures_lignes_non_facturees_c.prix_unitaire = subview.prix_unitaire + ; + + -- Ou des lignes en double avec la facturation + DELETE FROM activite[PX].p_factures_lignes_non_facturees_c + USING + ( + SELECT no_sejour, prestation_id, + p_factures_lignes_non_facturees_c.date_debut, + p_factures_lignes_non_facturees_c.date_fin, + p_factures_lignes_non_facturees_c.prix_unitaire, + MAX(CASE WHEN p_factures.no_facture NOT LIKE '%.BG' THEN p_factures_lignes_non_facturees_c.no_facture ELSE NULL END) AS no_facture + FROm activite[PX].p_factures_lignes_non_facturees_c + JOIN activite[PX].p_factures ON p_factures_lignes_non_facturees_c.no_facture = p_factures.no_facture + GROUP BY 1,2,3,4,5 + ) subview + JOIN + ( + SELECT no_sejour, prestation_id, + p_factures_lignes_c.date_debut, + p_factures_lignes_c.date_fin, + p_factures_lignes_c.prix_unitaire, + p_factures.no_facture + FROm activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + GROUP BY 1,2,3,4,5,6 + ) subview2 + ON subview2.prestation_id = subview.prestation_id AND + subview2.date_debut = subview.date_debut AND + subview2.date_fin = subview.date_fin AND + subview2.prix_unitaire = subview.prix_unitaire + WHERE p_factures_lignes_non_facturees_c.no_facture = subview.no_facture AND + p_factures_lignes_non_facturees_c.prestation_id = subview.prestation_id AND + p_factures_lignes_non_facturees_c.date_debut = subview.date_debut AND + p_factures_lignes_non_facturees_c.date_fin = subview.date_fin AND + p_factures_lignes_non_facturees_c.prix_unitaire = subview.prix_unitaire + ; + + + -- Factures non assurés ajoutées à tord (on trouve un 100% dans patient ou tp1 + DROP TABLE IF EXISTS w_sejours_bg_24; + CREATE TEMP TABLE w_sejours_bg_24 AS + SELECT p_factures.no_sejour, SUM(montant_facture_0+montant_facture_1+montant_facture_2) AS montant_facture_100 + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN activite[PX].p_sejour_pmsi ON p_sejour_pmsi.sejour_id = p_sejours.oid + JOIN pmsi.p_rss ON p_sejour_pmsi.rss_id = p_rss.oid + WHERE p_sejours.est_budget_global = '1' AND + code_facture = '1' AND + ( + t_prestations.code = 'PJ' OR + t_prestations.code LIKE 'GHS%' + ) AND + (taux_1 + taux_2 + taux_0 = 100 OR + taux_0+taux_1+taux_2=0 AND montant_facture_1 = montant_facture + ) AND + p_rss.traitement_epmsi NOT IN ('30','31','32','33') + GROUP BY 1 + HAVING SUM(montant_facture_0+montant_facture_1+montant_facture_2) > 0 + ORDER BY 1; + + DELETE FROM activite[PX].p_factures_lignes_c + USING activite[PX].p_factures + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour IN (SELECT no_sejour FROM w_sejours_bg_24) AND + p_factures_lignes_c.no_facture LIKE '%BG' AND + origine_facturation_id = 1; + + UPDATE activite[PX].p_factures SET + code_facture = '1', + date_facture = date_fin, + montant_facture_c = 0, + montant_facture_1_c = 0, + montant_comptabilise_1_c =0, + montant_comptabilise_budget_global_c = 0 + WHERE no_sejour IN (SELECT no_sejour FROM w_sejours_bg_24) AND + no_facture LIKE '%BG' AND + montant_comptabilise_budget_global_c = 0; + + + -- Transfert de lignes non facturées vers budget global + UPDATE activite[PX].p_factures_lignes_non_facturees_c + SET no_facture = subview.no_facture_bg + FROM + ( + SELECT p_sejours.no_sejour, t_prestations.code, t_prestations.texte, p_factures_lignes_non_facturees_c.*, + p_factures_bg.code_facture,p_factures_bg.no_facture AS no_facture_bg + FROM activite[PX].p_factures_lignes_non_facturees_c + JOIN activite[PX].p_factures ON p_factures_lignes_non_facturees_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND type_sejour IN ('1','2','5') + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid AND type_t2a = '1' + JOIN activite.t_prestations ON p_factures_lignes_non_facturees_c.prestation_id = t_prestations.oid + JOIN activite[PX].p_factures p_factures_bg ON p_factures_bg.no_sejour = p_factures.no_sejour AND p_factures_bg.no_facture LIKE '%BG' AND + p_factures_lignes_non_facturees_c.date_debut BETWEEN p_factures_bg.date_debut AND p_factures_bg.date_fin + WHERE p_factures_lignes_non_facturees_c.no_facture NOT LIKE '%BG' AND + t_prestations.code IN ('EMI','ETI','PII','PME','PH8','PHU') AND + p_factures_bg.code_facture = '0' + ) subview + WHERE p_factures_lignes_non_facturees_c.no_facture = subview.no_facture and + p_factures_lignes_non_facturees_c.prestation_id = subview.prestation_id + ; + + + + + + + ]]> + + + + + 0 AND + montant_facture_actes_inclus_dans_sejour = 0 AND + (montant_facture_1 + montant_facture_2 + montant_facture_0) = 0 AND + (taux_0 <> 0 OR taux_1 <> 0 OR taux_2 <> 0 OR taux_22 <> 0); + + UPDATE activite[PX].p_factures_lignes_h + SET + montant_facture_actes_inclus_dans_sejour = (prix_unitaire * nb_prestation * coefficient), + montant_facture_1_actes_inclus_dans_sejour = (prix_unitaire * nb_prestation * coefficient) + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 1 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND prix_unitaire <> 0 AND + montant_facture_actes_inclus_dans_sejour = 0 AND + (montant_facture_1 + montant_facture_2 + montant_facture_0) = 0 AND + taux_1 = 0 AND taux_2 = 0 AND taux_0 = 0; + + + UPDATE activite[PX].p_factures_lignes_h + SET + montant_facture_actes_inclus_dans_sejour = (prix_unitaire * nb_prestation * coefficient) * taux_1 / 100.00, + montant_facture_1_actes_inclus_dans_sejour = (prix_unitaire * nb_prestation * coefficient) * taux_1 / 100.00 + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 1 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND prix_unitaire <> 0 AND + montant_facture_actes_inclus_dans_sejour = 0 AND + (montant_facture_2 + montant_facture_0) <> 0 AND montant_facture_1 = 0; + + + --arrondis + UPDATE activite[PX].p_factures_lignes_h + SET montant_facture_1_actes_inclus_dans_sejour = montant_facture_actes_inclus_dans_sejour - (montant_facture_0_actes_inclus_dans_sejour+montant_facture_1_actes_inclus_dans_sejour+montant_facture_2_actes_inclus_dans_sejour+montant_facture_22_actes_inclus_dans_sejour) + WHERE montant_facture_1_actes_inclus_dans_sejour <> 0 AND montant_facture_actes_inclus_dans_sejour <> (montant_facture_0_actes_inclus_dans_sejour+montant_facture_1_actes_inclus_dans_sejour+montant_facture_2_actes_inclus_dans_sejour+montant_facture_22_actes_inclus_dans_sejour); + + + + -- actes externes + UPDATE activite[PX].p_factures_lignes_h + SET + montant_facture = prix_unitaire * nb_prestation * coefficient, + montant_facture_1 = (prix_unitaire * nb_prestation * coefficient) * taux_1 / 100.00, + montant_facture_2 = (prix_unitaire * nb_prestation * coefficient) * taux_2 / 100.00, + montant_facture_0 = (prix_unitaire * nb_prestation * coefficient) * taux_0 / 100.00 + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 2 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND prix_unitaire <> 0 AND + (montant_facture_1 + montant_facture_2 + montant_facture_0) = 0; + + UPDATE activite[PX].p_factures_lignes_h + SET + montant_facture = prix_unitaire * nb_prestation * coefficient, + montant_facture_1 = (prix_unitaire * nb_prestation * coefficient) * taux_1 / 100.00 + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 2 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND prix_unitaire <> 0 AND + taux_1 <> 0 AND (montant_facture_2 + montant_facture_0) <> 0 AND montant_facture_1 = 0; + + + -- Arrondis + UPDATE activite[PX].p_factures_lignes_h + SET montant_facture_1 = montant_facture - (montant_facture_0+montant_facture_1+montant_facture_2+montant_facture_22) + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 2 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + montant_facture_1 <> 0 AND + montant_facture <> (montant_facture_0+montant_facture_1+montant_facture_2+montant_facture_22); + + + -- Ajout des honoraires budget global dans la partie CLINIQUE + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id, + protocole_id, + compte_produit_id) + SELECT + p_factures.no_facture, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + CASE WHEN p_factures_lignes_h.rubrique_facturation_id <> 0 THEN p_factures_lignes_h.rubrique_facturation_id ELSE COALESCE(t_rubriques_facturation.oid,0) END AS rubrique_facturation_id, + prestation_id, + CASE WHEN montant_comptabilise_0 <> 0 THEN montant_facture_0 ELSE 0 END + + CASE WHEN montant_comptabilise_1 <> 0 THEN montant_facture_1 ELSE 0 END + + CASE WHEN montant_comptabilise_2 <> 0 THEN montant_facture_2 ELSE 0 END + + CASE WHEN montant_comptabilise_22 <> 0 THEN montant_facture_22 ELSE 0 END AS montant_facture, + CASE WHEN montant_comptabilise_0 <> 0 THEN montant_facture_0 ELSE 0 END AS montant_facture_0, + CASE WHEN montant_comptabilise_1 <> 0 THEN montant_facture_1 ELSE 0 END AS montant_facture_1, + CASE WHEN montant_comptabilise_2 <> 0 THEN montant_facture_2 ELSE 0 END AS montant_facture_2, + CASE WHEN montant_comptabilise_22 <> 0 THEN montant_facture_22 ELSE 0 END AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + CASE WHEN montant_comptabilise_1 <> 0 THEN nb_prestation ELSE 0 END, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + CASE WHEN p_factures_lignes_h.rubrique_facturation_id <> 0 THEN p_factures_lignes_h.rubrique_facturation_id ELSE COALESCE(t_rubriques_facturation.oid,0) END AS rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + 2::bigint AS origine_facturation_id, + 0::numeric AS montant_comptabilise_budget_global_1, + p_factures.oid AS facture_id, + protocole_id, + 0::bigint AS compte_produit_id + FROM activite[PX].p_factures_lignes_h + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + LEFT JOIN activite[PX].t_rubriques_facturation ON t_prestations.code = t_rubriques_facturation.code + JOIN activite[PX].p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND est_budget_global = '1' + WHERE p_factures.code_facture = '1' AND + ((p_sejours.type_sejour = '3' AND p_factures_lignes_h.no_facture NOT LIKE '%BG') OR + montant_comptabilise <> 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0) ; + + + UPDATE activite[PX].p_factures_lignes_h + SET montant_comptabilise = 0, montant_comptabilise_0 = 0, montant_comptabilise_1 = 0, montant_comptabilise_2 = 0 + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND est_budget_global = '1' + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + (montant_comptabilise <> 0 OR montant_comptabilise_0 <> 0 OR montant_comptabilise_1 <> 0 OR montant_comptabilise_2 <> 0) ; + + + -- Ajout des actes inclus dans séjour dans la partie clinique (verrouillé) + DROP TABLE IF EXISTS w_actes_inclus; + CREATE TEMP TABLE w_actes_inclus AS + SELECT + p_factures.no_sejour, + p_factures.no_facture AS no_facture, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_facturation_id, + prestation_id, + 0::numeric AS montant_facture, + 0::numeric AS montant_facture_0, + 0::numeric AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + 3::bigint AS origine_facturation_id, + 0::numeric AS montant_comptabilise_budget_global_1, + p_factures.oid AS facture_id, + protocole_id, + 0::bigint AS compte_produit_id + FROM activite[PX].p_factures_lignes_h + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + LEFT JOIN activite[PX].t_rubriques_facturation ON t_prestations.code = t_rubriques_facturation.code + JOIN activite[PX].p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND est_budget_global = '1' + WHERE 1<>1 AND + (montant_facture_actes_inclus_dans_sejour <> 0 OR + montant_facture_0_actes_inclus_dans_sejour <> 0 OR + montant_facture_1_actes_inclus_dans_sejour <> 0 OR + montant_facture_2_actes_inclus_dans_sejour <> 0) ; + + + UPDATE w_actes_inclus + SET no_facture = p_factures.no_facture, facture_id = p_factures.oid + FROM activite[PX].p_factures + WHERE w_actes_inclus.no_sejour = p_factures.no_sejour AND + p_factures.no_facture LIKE '%BG' ; + + + INSERT INTO activite[PX].p_factures_lignes_c + ( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id, + protocole_id, + compte_produit_id + ) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + 0::numeric AS montant_facture, + 0::numeric AS montant_facture_0, + 0::numeric AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id, + protocole_id, + compte_produit_id + FROM w_actes_inclus; + + -- Correction n° facture + UPDATE activite[PX].p_factures_lignes_c + SET no_facture = p_factures.no_facture, facture_id = p_factures.oid + FROM activite[PX].p_factures + WHERE p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour <> 0 AND + split_part(p_factures_lignes_c.no_facture,'.',1) = p_factures.no_sejour AND + p_factures.no_facture LIKE '%BG' AND + p_factures_lignes_c.no_facture NOT LIKE '%BG' AND + p_factures_lignes_c.montant_facture = 0 AND + p_factures_lignes_c.montant_comptabilise = 0; + + UPDATE activite[PX].p_factures_lignes_h + SET no_facture = p_factures.no_facture, facture_id = p_factures.oid + FROM activite[PX].p_factures + WHERE p_factures_lignes_h.montant_facture_actes_inclus_dans_sejour <> 0 AND + split_part(p_factures_lignes_h.no_facture,'.',1) = p_factures.no_sejour AND + p_factures.no_facture LIKE '%BG' AND + p_factures_lignes_h.no_facture NOT LIKE '%BG' AND + p_factures_lignes_h.montant_facture = 0 AND + p_factures_lignes_h.montant_comptabilise = 0; + + + -- Cumuls factures + DROP TABLE IF EXISTS w_factures_corrigees; + CREATE TEMP TABLE w_factures_corrigees AS + SELECT + p_factures_lignes_c.no_facture, + + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture ELSE 0 END),0) AS ligne_facture_c, + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_0 ELSE 0 END),0) AS ligne_facture_0_c, + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_1 ELSE 0 END),0) AS ligne_facture_1_c, + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_2 ELSE 0 END),0) AS ligne_facture_2_c, + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_22 ELSE 0 END),0) AS ligne_facture_22_c, + COALESCE(SUM(montant_comptabilise),0) AS ligne_comptabilise_c, + COALESCE(SUM(montant_comptabilise_0),0) AS ligne_comptabilise_0_c, + COALESCE(SUM(montant_comptabilise_1),0) AS ligne_comptabilise_1_c, + COALESCE(SUM(montant_comptabilise_2),0) AS ligne_comptabilise_2_c, + COALESCE(SUM(montant_comptabilise_22),0) AS ligne_comptabilise_22_c, + + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture ELSE 0 END),0) AS ligne_facture_h, + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_0 ELSE 0 END),0) AS ligne_facture_0_h, + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_1 ELSE 0 END),0) AS ligne_facture_1_h, + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_2 ELSE 0 END),0) AS ligne_facture_2_h, + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_22 ELSE 0 END),0) AS ligne_facture_22_h, + 0::numeric AS ligne_comptabilise_h, + 0::numeric AS ligne_comptabilise_0_h, + 0::numeric AS ligne_comptabilise_1_h, + 0::numeric AS ligne_comptabilise_2_h, + 0::numeric AS ligne_comptabilise_22_h + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND est_budget_global = '1' + LEFT JOIN activite[PX].p_factures_lignes_c ON p_factures_lignes_c.no_facture = p_factures.no_facture + GROUP BY 1 + HAVING SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_c) OR + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_0 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_0_c) OR + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_1 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_1_c) OR + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_2 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_2_c) OR + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_22 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_22_c) OR + SUM(montant_comptabilise) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_c) OR + SUM(montant_comptabilise_0) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_0_c) OR + SUM(montant_comptabilise_1) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_1_c) OR + SUM(montant_comptabilise_2) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_2_c) OR + SUM(montant_comptabilise_22) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_22_c) OR + + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_h) OR + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_0 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_0_h) OR + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_1 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_1_h) OR + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_2 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_2_h) OR + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_22 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_22_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_0_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_1_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_2_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_22_h) ; + + UPDATE activite[PX].p_factures + SET + montant_facture_c = w_factures_corrigees.ligne_facture_c, + montant_facture_0_c = w_factures_corrigees.ligne_facture_0_c, + montant_facture_1_c = w_factures_corrigees.ligne_facture_1_c, + montant_facture_2_c = w_factures_corrigees.ligne_facture_2_c, + montant_facture_22_c = w_factures_corrigees.ligne_facture_22_c, + montant_comptabilise_c = w_factures_corrigees.ligne_comptabilise_c, + montant_comptabilise_0_c = w_factures_corrigees.ligne_comptabilise_0_c, + montant_comptabilise_1_c = w_factures_corrigees.ligne_comptabilise_1_c, + montant_comptabilise_2_c = w_factures_corrigees.ligne_comptabilise_2_c, + montant_comptabilise_22_c = w_factures_corrigees.ligne_comptabilise_22_c, + montant_facture_h = w_factures_corrigees.ligne_facture_h, + montant_facture_0_h = w_factures_corrigees.ligne_facture_0_h, + montant_facture_1_h = w_factures_corrigees.ligne_facture_1_h, + montant_facture_2_h = w_factures_corrigees.ligne_facture_2_h, + montant_facture_22_h = w_factures_corrigees.ligne_facture_22_h, + montant_comptabilise_h = w_factures_corrigees.ligne_comptabilise_h, + montant_comptabilise_0_h = w_factures_corrigees.ligne_comptabilise_0_h, + montant_comptabilise_1_h = w_factures_corrigees.ligne_comptabilise_1_h, + montant_comptabilise_2_h = w_factures_corrigees.ligne_comptabilise_2_h, + montant_comptabilise_22_h = w_factures_corrigees.ligne_comptabilise_22_h + FROM w_factures_corrigees + WHERE w_factures_corrigees.no_facture = p_factures.no_facture; + + + -- Report des actes non facturés honoraires budget global pour encours + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture AS no_facture, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.date_fin, + p_factures_lignes_h.nb_rubrique, + p_factures_lignes_h.coefficient, + p_factures_lignes_h.rubrique_facturation_id, + p_factures_lignes_h.prestation_id, + p_factures_lignes_h.prix_unitaire, + p_factures_lignes_h.lieu_id + FROM activite[PX].p_factures_lignes_h + JOIN activite[PX].p_factures on p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_factures.code_facture = '0' AND + p_sejours.est_budget_global = '1' AND + p_sejours.type_sejour = '3' AND + p_factures.no_sejour NOT IN (SELECT no_sejour FROM activite[PX].p_factures WHERE code_facture = '1') AND + p_factures_lignes_h.no_facture NOT IN (SELECT no_facture FROM activite[PX].p_factures_lignes_non_facturees_c) + ; + + -- Report des actes non facturés honoraires budget global pour encours + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture AS no_facture, + p_factures_lignes_non_facturees_h.date_debut, + p_factures_lignes_non_facturees_h.date_fin, + p_factures_lignes_non_facturees_h.nb_rubrique, + p_factures_lignes_non_facturees_h.coefficient, + p_factures_lignes_non_facturees_h.rubrique_facturation_id, + p_factures_lignes_non_facturees_h.prestation_id, + p_factures_lignes_non_facturees_h.prix_unitaire, + p_factures_lignes_non_facturees_h.lieu_id + FROM activite[PX].p_factures_lignes_non_facturees_h + JOIN activite[PX].p_factures on p_factures_lignes_non_facturees_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_factures.code_facture = '0' AND + p_sejours.est_budget_global = '1' AND + p_sejours.type_sejour = '3' AND + p_factures.no_sejour NOT IN (SELECT no_sejour FROM activite[PX].p_factures WHERE code_facture = '1') --AND + ; + + TRUNCATE activite[PX].p_factures_lignes_non_facturees_h + ; + + ]]> + + + + + '1' AND + p_sejours.type_sejour = '3' AND + date_entree between now() - interval '1 year' AND now() AND + code_sorti = '1' AND + no_sejour NOT IN (SELECT no_sejour FROM activite[PX].p_factures WHERE no_facture like '%BG') AND + no_sejour NOT IN + ( + SELECT no_sejour + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + WHERE p_factures_lignes_c.no_facture NOT LIKE '%BG' AND montant_comptabilise_1 <> 0 + ) + ; + + -- Sur Externes, Récupérer actes facturés partiellement + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + facture_id, + no_facture, + date_debut, + rubrique_facturation_id, + prestation_id, + date_fin, + nb_rubrique, + coefficient, + lieu_id, + prix_unitaire + ) + SELECT + p_factures_bg.oid AS facture_id, + p_factures_bg.no_facture AS no_facture, + p_factures_lignes_c.date_debut, + p_factures_lignes_c.rubrique_facturation_id, + p_factures_lignes_c.prestation_id, + MAX(p_factures_lignes_c.date_fin), + 1, + 1, + MAX(p_factures_lignes_c.lieu_id), + (MAX(prix_unitaire) * MAX(coefficient) * SUM(nb_rubrique)) - SUM(montant_facture) AS prix_unitaire + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures on p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_factures p_factures_bg ON p_factures_bg.no_sejour = p_factures.no_sejour and p_factures_bg.no_facture LIKE '%BG' + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_sejours.type_sejour = '3' AND + p_factures_bg.code_facture = '0' AND + p_factures_lignes_c.no_facture nOT LIKE '%BG' AND + montant_encours = 0 AND p_factures_bg.montant_encours_c = 0 + GROUP BY 1,2,3,4,5 + HAVING + SUM(nb_rubrique) > 0 AND + ((MAX(prix_unitaire) * MAX(coefficient) * SUM(nb_rubrique)) - SUM(montant_facture)) > 1 + ; + + + + + ]]> + + + + + + + + + + 'VE' AND CPT_CODE LIKE '468%' THEN 'ATT' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '471%' THEN 'ATT' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '411%' AND ECR_REF_TYPE = 'FACTURE' THEN 'RCLI' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '412%' AND ECR_REF_TYPE = 'FACTURE' THEN 'RCLI' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '411%' AND ECR_DETAILS LIKE '%NOEMIE%' THEN 'RNOE' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '412%' AND ECR_DETAILS LIKE '%NOEMIE%' THEN 'RNOE' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '419%' THEN 'ACPT' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '51%' THEN 'BANQ' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '531%' THEN 'BANQ' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '466%' THEN 'PHON' + WHEN ECR_TYPE = 'IMPAYE' THEN 'PEPR' + WHEN LNK_JOURNAL <> 'VE' AND ECR_TYPE = 'VENTE-DIRECTE' THEN 'RDIR' + WHEN ECR_TYPE LIKE '%PIVOT%' THEN 'PIVO' + WHEN ECR_TYPE LIKE 'REVERS' THEN 'REVP' + WHEN ECR_TYPE LIKE 'OD' THEN 'OD' + ELSE '?'||ECR_TYPE END AS type_ecriture, + ECR_OPERATION::text AS piece, + CASE ECR_IS_ETS WHEN 1 THEN 'C' ELSE 'H' END AS clinique_honoraire, + COALESCE(t_compte.oid,0) AS compte_id, + COALESCE(t_journal.oid,0) AS journal_id, + COALESCE(p_sejours.oid,0::bigint) AS sejour_id, + COALESCE(p_sejours.no_sejour,''::text) AS no_sejour, + COALESCE(p_factures.oid,0::bigint) AS facture_id, + COALESCE(FACT_NUMERO::text,'')::text AS no_facture, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_id, + COALESCE(t_tiers_payant.oid,t_tiers_payant0.oid,0) AS tiers_payant_id, + ECR_DETAILS AS texte, + ECR_CREDIT AS montant_credit, + ECR_DEBIT AS montant_debit, + ECR_OPERATION, + CASE + WHEN LNK_SOURCE = 'FACTURE' THEN 'VENTE' + WHEN LNK_SOURCE = 'IMPAYE' THEN 'VENTE' + WHEN LNK_SOURCE = 'RGLMT' THEN 'RGLMT' + WHEN LNK_SOURCE = 'ENC' THEN 'RGLMT' + WHEN LNK_SOURCE = 'DEPOT' THEN 'ODBANQ' + ELSE LNK_SOURCE END AS type_piece, + LNK_SOURCE, + LNK_SOURCE_OID, + ECR_LOCKED, + ''::text AS mode_reglement_code, + ECR_TVA_TAUX*100 AS taux_tva + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t.CPT_COMPTES ON CPT_OID = ECR_COMPTE + LEFT JOIN prod_web100t.DAT_DA ON ECR_REF_DA = DA_OID AND ECR_REF_DA > 0 + LEFT JOIN prod_web100t.FAC_FACTURE ON ECR_REF_FACT = FACT_OID AND ECR_REF_FACT > 0 + JOIN activite[PX].t_journal ON LNK_JOURNAL = t_journal.code_original + LEFT JOIN activite[PX].t_compte ON CPT_CODE = t_compte.code + LEFT JOIN activite[PX].p_sejours ON ECR_REF_DA = p_sejours.code_original AND ECR_REF_DA > 0 + LEFT JOIN activite[PX].p_factures ON FACT_NUMERO = p_factures.no_facture AND ECR_REF_FACT > 0 + LEFT JOIN activite[PX].t_tiers_payant ON CPT_REF = t_tiers_payant.code_original AND CPT_REF >0 AND CPT_REF_TYPE IN ('AMO','AMC') + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant0 ON CPT_REF_TYPE IN ('DA') AND t_tiers_payant0.code = 'PATIENTS' + LEFT JOIN activite[PX].t_medecins_administratifs ON CPT_REF = t_medecins_administratifs.code_original AND CPT_REF > 0 AND CPT_REF_TYPE IN ('PRATICIEN') + WHERE + ECR_TYPE <> 'ERREUR' AND + ECR_TYPE <> 'ENCOURS' AND + LNK_ERROR = '' AND + ECR_DATE >= '[ENV_ADM_ANNEEDEBUT]0101' + ; + + ANALYSE w_ecriture_comptable + ; + + CREATE INDEX w_ecriture_comptable_ik_ECR_OID + ON w_ecriture_comptable + USING btree + (ECR_OID); + + CREATE INDEX w_ecriture_comptable_ik_ECR_OPERATION + ON w_ecriture_comptable + USING btree + (ECR_OPERATION); + + + CREATE INDEX w_ecriture_comptable_ik_LNK_SOURCE_OID + ON w_ecriture_comptable + USING btree + (LNK_SOURCE_OID); + + CREATE INDEX w_ecriture_comptable_ik_PIECE + ON w_ecriture_comptable + USING btree + (PIECE); + + CREATE INDEX w_ecriture_comptable_ik_compte_id + ON w_ecriture_comptable + USING btree + (compte_id); + + UPDATE w_ecriture_comptable SET + no_facture = w_ecriture_comptable.no_facture || '-IM'||ECR_OPERATION::text, + facture_id = p_factures.oid + FROM activite[PX].p_factures + WHERE p_factures.no_facture = w_ecriture_comptable.no_facture || '-IM'||ECR_OPERATION::text AND + LNK_SOURCE = 'IMPAYE' + ; + + DROP TABLE IF EXISTS w_mode_reg; + CREATE TEMP TABLE w_mode_reg AS + SELECT ECR_OID, + LNK_SOURCE, + MAX( + CASE FR_MODE + WHEN 1 THEN 'CHQ' + WHEN 2 THEN 'CB' + WHEN 3 THEN 'ESP' + WHEN 4 THEN 'VIR' + ELSE 'A' END) AS mode_reglement_code + FROM prod_web100t.CPT_ECRITURE + JOIN prod_web100t.CPT_OP_LINK ON LNK_OPERATION = ECR_OPERATION + JOIN prod_web100t.CPT_COMPTES ON ecr_compte = cpt_oid + JOIN prod_web100t.FAC_REGLEMENTS ON LNK_SOURCE_OID = FR_OID + WHERE LNK_SOURCE IN ('RGLMT','ENC') AND + ECR_TYPE IN ('VALEUR_ENC','PIVOT','CAISSE') + GROUP BY 1,2 + ; + + CREATE INDEX w_mode_reg_i1 + ON w_mode_reg + USING btree + (ECR_OID); + + UPDATE w_ecriture_comptable + SET mode_reglement_code = w_mode_reg.mode_reglement_code + FROM + w_mode_reg + WHERE w_ecriture_comptable.ECR_OID = w_mode_reg.ECR_OID + AND w_mode_reg.LNK_SOURCE = 'RGLMT' + ; + + UPDATE w_ecriture_comptable + SET mode_reglement_code = w_mode_reg.mode_reglement_code + FROM + w_mode_reg + WHERE w_ecriture_comptable.ECR_OID = w_mode_reg.ECR_OID + AND w_mode_reg.LNK_SOURCE = 'ENC' + ; + + DROP TABLE IF EXISTS w_ecr_par_piece; + CREATE TEMP TABLE w_ecr_par_piece AS + SELECT piece, MAX(mode_reglement_code) AS mode_reglement_code + FROM w_ecriture_comptable + WHERE mode_reglement_code <> '' + GROUP BY 1 + HAVING count(DISTINCT mode_reglement_code) = 1 + ; + + CREATE INDEX w_ecr_par_piece_i1 + ON w_ecr_par_piece + USING btree + (PIECE); + + UPDATE w_ecriture_comptable + SET mode_reglement_code = w_ecr_par_piece.mode_reglement_code + FROM + w_ecr_par_piece + , activite[PX].t_compte + WHERE w_ecriture_comptable.compte_id = t_compte.oid AND + (t_compte.code LIKE '4%' OR t_compte.code LIKE '5%') AND + t_compte.code NOT LIKE '41%' AND + t_compte.code NOT LIKE '445%' AND + w_ecriture_comptable.piece = w_ecr_par_piece.piece AND + w_ecriture_comptable.mode_reglement_code = '' + ; + + + TRUNCATE activite[PX].p_ecriture_comptable; + INSERT INTO activite[PX].p_ecriture_comptable( + code_original, + date_comptable, + type_ecriture, + type_piece, + piece, + clinique_honoraire, + compte_id, + journal_id, + sejour_id, + no_sejour, + facture_id, + no_facture, + medecin_id, + tiers_payant_id, + texte, + montant_credit, + montant_debit, + est_comptabilise, + mode_reglement_code, + taux_tva) + SELECT + code_original, + date_comptable, + type_ecriture, + type_piece, + piece, + clinique_honoraire, + compte_id, + journal_id, + sejour_id, + no_sejour, + facture_id, + no_facture, + medecin_id, + tiers_payant_id, + texte, + montant_credit, + montant_debit, + CASE WHEN ECR_LOCKED = 1 THEN '1' ELSE 0 END AS est_comptabilise, + mode_reglement_code, + taux_tva + FROM w_ecriture_comptable + ; + + + + ANALYSE activite[PX].p_ecriture_comptable + ; + + UPDATE activite[PX].p_ecriture_comptable + SET code_erreur = 'EQP' + FROM + ( + SELECT provider_id, clinique_honoraire, piece + FROM activite[PX].p_ecriture_comptable + GROUP BY 1,2,3 + HAVING SUM(montant_debit-montant_credit) <> 0 + ) subview + WHERE p_ecriture_comptable.provider_id = subview.provider_id AND + p_ecriture_comptable.piece = subview.piece AND + p_ecriture_comptable.clinique_honoraire = subview.clinique_honoraire + ; + + + + UPDATE activite[PX].p_ecriture_comptable + SET code_erreur = 'FAC' + FROM + ( + SELECT p_ecriture_comptable.provider_id AS provider_id, + p_ecriture_comptable.piece AS piece, + p_ecriture_comptable.clinique_honoraire AS clinique_honoraire + FROM activite[PX].p_ecriture_comptable + JOIN + ( + SELECT p_ecriture_comptable.provider_id, + p_ecriture_comptable.no_facture, + CASE WHEN round(SUM(CASE WHEN type_ecriture IN ('VPRD','VTVA') THEN montant_credit-montant_debit ELSE 0 END),2) IS DISTINCT FROM round(MAX(montant_comptabilise_c),2) THEN '1' ELSE '0' END AS erreur_vente_c, + CASE WHEN round(SUM(CASE WHEN type_ecriture IN ('VHON','VHOI') THEN montant_credit-montant_debit ELSE 0 END),2) IS DISTINCT FROM round(MAX(montant_comptabilise_h),2) THEN '1' ELSE '0' END AS erreur_vente_h + FROM activite[PX].p_ecriture_comptable + LEFT JOIN activite[PX].p_factures ON p_factures.no_facture = p_ecriture_comptable.no_facture + WHERE type_ecriture IN ('VPRD','VTVA','VHON','VHOI') + GROUP BY 1,2 + ) subview ON + p_ecriture_comptable.provider_id = subview.provider_id AND + p_ecriture_comptable.no_facture = subview.no_facture + WHERE p_ecriture_comptable.type_ecriture IN ('VPRD','VTVA','VHON','VHOI','VCLI') AND + ( + p_ecriture_comptable.clinique_honoraire = 'C' AND erreur_vente_c = '1' OR + p_ecriture_comptable.clinique_honoraire = 'H' AND erreur_vente_h = '1' + ) + GROUP BY 1,2,3 + ) subview + WHERE p_ecriture_comptable.provider_id = subview.provider_id AND + p_ecriture_comptable.piece = subview.piece AND + p_ecriture_comptable.clinique_honoraire = subview.clinique_honoraire + ; + + ]]> + + + + 'VE' AND ECR_IS_ETS = 1 THEN ECR_CREDIT - ECR_DEBIT ELSE 0 END) AS montant_reglements_c, + 0::numeric AS montant_solde_client_c, + SUM(CASE + WHEN LNK_JOURNAL = 'VE' AND ECR_IS_ETS = 0 THEN ECR_DEBIT - ECR_CREDIT + ELSE 0 END + ) AS montant_ventes_h, + SUM(CASE + WHEN LNK_JOURNAL <> 'VE' AND LNK_JOURNAL <> 'HONO' AND ECR_IS_ETS = 0 THEN ECR_CREDIT - ECR_DEBIT + WHEN LNK_JOURNAL = 'HONO' AND ECR_IS_ETS = 0 THEN ECR_CREDIT - ECR_DEBIT + ELSE 0 END + ) AS montant_reglements_h, + 0::numeric AS montant_solde_client_h + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t.CPT_COMPTES ON ECR_COMPTE = CPT_OID AND CPT_CODE LIKE '41%' + JOIN prod_web100t.FAC_FACTURE ON FACT_OID = ECR_REF_OID + JOIN activite[PX].p_sejours ON code_original = FACT_DA + WHERE LNK_ERROR = '' AND + date(ECR_DATE) >= '[ENV_ADM_ANNEEDEBUT]0101' AND + ECR_TYPE IN ('CLIENT','VENTE-DIRECTE','VENTE-DEP') AND ECR_REF_TYPE = 'FACTURE' + GROUP BY 1; + + + + TRUNCATE activite[PX].p_factures_comptables; + + INSERT INTO activite[PX].p_factures_comptables( + no_facture, + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_ventes_h, + montant_reglements_h + ) + SELECT + COALESCE(FACT_NUMERO, 'ID_' || LNK_SOURCE_OID), + date(ECR_DATE) AS date_comptable, + SUM(CASE WHEN LNK_JOURNAL = 'VE' AND ECR_IS_ETS = 1 THEN ECR_DEBIT - ECR_CREDIT ELSE 0 END) AS montant_ventes_c, + SUM(CASE WHEN LNK_JOURNAL <> 'VE' AND ECR_IS_ETS = 1 THEN ECR_CREDIT - ECR_DEBIT ELSE 0 END) AS montant_reglements_c, + SUM(CASE + WHEN LNK_JOURNAL = 'VE' AND ECR_IS_ETS = 0 THEN ECR_DEBIT - ECR_CREDIT + ELSE 0 END + ) AS montant_ventes_h, + SUM(CASE + WHEN LNK_JOURNAL <> 'VE' AND LNK_JOURNAL <> 'HONO' AND ECR_IS_ETS = 0 THEN ECR_CREDIT - ECR_DEBIT + WHEN LNK_JOURNAL = 'HONO' AND ECR_IS_ETS = 0 THEN ECR_CREDIT - ECR_DEBIT + ELSE 0 END + ) AS montant_reglements_h + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t.CPT_COMPTES ON ECR_COMPTE = CPT_OID AND CPT_CODE LIKE '41%' + JOIN prod_web100t.FAC_FACTURE ON FACT_OID = ECR_REF_OID + JOIN activite[PX].p_sejours ON code_original = FACT_DA + WHERE LNK_ERROR = '' AND + date(ECR_DATE) >= '[ENV_ADM_ANNEEDEBUT]0101' AND + ECR_TYPE IN ('CLIENT','VENTE-DIRECTE','VENTE-DEP') AND ECR_REF_TYPE = 'FACTURE' + GROUP BY 1,2; + + + -- Attention, les ventes directes ne sont peut être pas encore générées + + -- Date dernière génération ventes directes + -- Attention : Il faut que la dernière génération ne soit pas antérieure à 1 mois + DROP TABLE IF EXISTS w_last_direct; + CREATE TEMP TABLE w_last_direct AS + SELECT + date(max(ECR_DATE)) AS LAST_ECR_DATE + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t.CPT_COMPTES ON ECR_COMPTE = CPT_OID AND CPT_CODE LIKE '41%' + JOIN prod_web100t.FAC_FACTURE ON FACT_OID = ECR_REF_OID + JOIN activite[PX].p_sejours ON code_original = FACT_DA + WHERE LNK_ERROR = '' AND + ECR_TYPE IN ('VENTE-DIRECTE') AND ECR_REF_TYPE = 'FACTURE' and ECR_IS_ETS = 0 + HAVING date(max(ECR_DATE)) >= date(now() - interval '1 month'); + + -- Factures comptabilisées après cette date + DROP TABLE IF EXISTS w_factures_direct; + CREATE TEMP TABLE w_factures_direct AS + SELECT + FACT_OID, + date(MAX(ECR_DATE)) AS ECR_DATE + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t.CPT_COMPTES ON ECR_COMPTE = CPT_OID AND CPT_CODE LIKE '41%' + JOIN prod_web100t.FAC_FACTURE ON FACT_OID = ECR_REF_OID + JOIN w_last_direct ON ECR_DATE > LAST_ECR_DATE + JOIN activite[PX].p_sejours ON code_original = FACT_DA + WHERE LNK_ERROR = '' AND + ECR_TYPE IN ('CLIENT','VENTE-DEP') AND ECR_REF_TYPE = 'FACTURE' AND + LNK_JOURNAL = 'VE' AND + ECR_IS_ETS = 0 + GROUP BY 1; + + + -- Mise à jour chiffrier + DROP TABLE IF EXISTS w_factures_comptables; + CREATE TEMP TABLE w_factures_comptables AS + SELECT FACT_NUMERO AS no_facture, + date(ECR_DATE) AS date_comptable, + SUM(0-FLT_TOTAL_TTC) AS montant_ventes_h + FROM prod_web100t.fac_fact_ligne_tier + JOIN prod_web100t.fac_facture on fac_facture.FACT_OID = FLT_FACTURE + JOIN w_factures_direct ON w_factures_direct.FACT_OID = FLT_FACTURE + WHERE FLT_IS_ETS = 0 AND FLT_IS_DIRECT = 1 + GROUP BY 1,2 + ORDER BY 1,2; + + + UPDATE activite[PX].p_factures_comptables + SET montant_ventes_h = p_factures_comptables.montant_ventes_h + w_factures_comptables.montant_ventes_h + FROM w_factures_comptables + WHERE p_factures_comptables.no_facture = w_factures_comptables.no_facture AND + p_factures_comptables.date_comptable = w_factures_comptables.date_comptable; + + + DROP TABLE IF EXISTS w_chiffrier_comptable; + CREATE TEMP TABLE w_chiffrier_comptable AS + SELECT date(ECR_DATE) AS date_comptable, + SUM(0-FLT_TOTAL_TTC) AS montant_ventes_h + FROM prod_web100t.fac_fact_ligne_tier + JOIN prod_web100t.fac_facture on fac_facture.FACT_OID = FLT_FACTURE + JOIN w_factures_direct ON w_factures_direct.FACT_OID = FLT_FACTURE + WHERE FLT_IS_ETS = 0 AND FLT_IS_DIRECT = 1 + GROUP BY 1 + ORDER BY 1; + + + UPDATE activite[PX].p_chiffrier_comptable + SET montant_ventes_h = p_chiffrier_comptable.montant_ventes_h + w_chiffrier_comptable.montant_ventes_h + FROM w_chiffrier_comptable + WHERE p_chiffrier_comptable.date_comptable = w_chiffrier_comptable.date_comptable; + + ]]> + + + + + + + + = '[ENV_ADM_ANNEEDEBUT]0101' + ; + + ANALYSE w_CPT_OP_LINK_source + ; + + CREATE INDEX w_CPT_OP_LINK_source_ik_lnk_operation + ON w_CPT_OP_LINK_source + USING btree + (lnk_operation); + + CREATE INDEX w_CPT_OP_LINK_source_ik_lnk_master_op + ON w_CPT_OP_LINK_source + USING btree + (lnk_master_op); + + DROP TABLE IF EXISTS w_CPT_ECRITURE_source; + CREATE TEMP TABLE w_CPT_ECRITURE_source AS + SELECT * + FROM prod_web100t.CPT_ECRITURE + WHERE ECR_EF = ANY(SELECT ETS_EF_OID FROM w_NMCL_ETABLISSEMENT) + AND ECR_DATE >= '[ENV_ADM_ANNEEDEBUT]0101' + ; + + ANALYSE w_CPT_ECRITURE_source + ; + + CREATE INDEX w_CPT_ECRITURE_source_ik_ecr_operation + ON w_CPT_ECRITURE_source + USING btree + (ecr_operation); + + DROP TABLE IF EXISTS w_CPT_ECRITURE_source_OP_LINK; + CREATE TEMP TABLE w_CPT_ECRITURE_source_OP_LINK AS + SELECT *, + 0::bigint AS ECR_REF_FACT + FROM w_CPT_ECRITURE_source + JOIN w_CPT_OP_LINK_source ON ECR_OPERATION = LNK_OPERATION + ; + + ANALYSE w_CPT_ECRITURE_source_OP_LINK + ; + + CREATE INDEX w_CPT_ECRITURE_source_OP_LINK_ik_ecr_operation + ON w_CPT_ECRITURE_source_OP_LINK + USING btree + (ecr_operation) + ; + + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_REF_OID = LNK_SOURCE_OID + WHERE ECR_OPERATION = LNK_OPERATION AND + LNK_TYPE IN ('FACT') AND + ECR_REF_TYPE = 'FACTURE' AND + ECR_REF_OID <> LNK_SOURCE_OID + ; + + DROP TABLE IF EXISTS w_CPT_ECRITURE_work; + CREATE TEMP TABLE w_CPT_ECRITURE_work AS + SELECT ECR_OPERATION, MAX(ECR_REF_DA) AS ECR_REF_DA + FROM w_CPT_ECRITURE_source_OP_LINK + WHERE ECR_REF_DA > 0 + GROUP BY 1 + HAVING count(DISTINCT ECR_REF_DA) = 1 + ; + + ANALYSE w_CPT_ECRITURE_work + ; + + CREATE INDEX w_CPT_ECRITURE_work_ik_ecr_operation + ON w_CPT_ECRITURE_work + USING btree + (ECR_OPERATION) + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_REF_DA = w_CPT_ECRITURE_work.ECR_REF_DA + FROM w_CPT_ECRITURE_work + WHERE w_CPT_ECRITURE_source_OP_LINK.ECR_OPERATION = w_CPT_ECRITURE_work.ECR_OPERATION AND + w_CPT_ECRITURE_source_OP_LINK.ECR_REF_DA = 0 + ; + + + + DROP TABLE IF EXISTS w_CPT_ECRITURE_work; + CREATE TEMP TABLE w_CPT_ECRITURE_work AS + SELECT ECR_MASTER, MAX(ECR_REF_DA) AS ECR_REF_DA + FROM w_CPT_ECRITURE_source_OP_LINK + WHERE ECR_REF_DA > 0 + GROUP BY 1 + HAVING count(DISTINCT ECR_REF_DA) = 1 + ; + + ANALYSE w_CPT_ECRITURE_work + ; + + CREATE INDEX w_CPT_ECRITURE_work_ik_ecr_master + ON w_CPT_ECRITURE_work + USING btree + (ECR_MASTER) + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_REF_DA = w_CPT_ECRITURE_work.ECR_REF_DA + FROM w_CPT_ECRITURE_work + WHERE w_CPT_ECRITURE_source_OP_LINK.ECR_MASTER = w_CPT_ECRITURE_work.ECR_MASTER AND + w_CPT_ECRITURE_source_OP_LINK.ECR_REF_DA = 0 + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_REF_FACT = LNK_SOURCE_OID + WHERE LNK_SOURCE = 'FACTURE' AND + ECR_REF_OID <> LNK_SOURCE_OID + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_REF_FACT = ECR_REF_OID + WHERE ECR_REF_TYPE = 'FACTURE' AND + ECR_REF_FACT = 0 + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_REF_FACT = FACT_OID + FROM prod_web100t.FAC_FACTURE + WHERE ECR_DETAILS LIKE 'Facture n?%' AND + substr(ECR_DETAILS,11,9) = lpad(FACT_NUMERO,9,'0') AND + ECR_REF_FACT = 0 + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_REF_FACT = FACT_OID + FROM prod_web100t.FAC_FACTURE + WHERE ECR_REF_KEY LIKE 'F%' AND + substr(ECR_REF_KEY,2) = FACT_OID::text AND + ECR_REF_DA = FACT_DA AND + ECR_REF_FACT = 0 + ; + + + DROP TABLE IF EXISTS w_CPT_ECRITURE_work; + CREATE TEMP TABLE w_CPT_ECRITURE_work AS + SELECT ECR_OPERATION, ECR_REF_DA, MAX(ECR_REF_FACT) AS ECR_REF_FACT + FROM w_CPT_ECRITURE_source_OP_LINK + WHERE ECR_REF_FACT > 0 + GROUP BY 1,2 + HAVING count(DISTINCT ECR_REF_FACT) = 1 + ; + + ANALYSE w_CPT_ECRITURE_work + ; + + CREATE INDEX w_CPT_ECRITURE_work_ik_ecr_operation + ON w_CPT_ECRITURE_work + USING btree + (ECR_OPERATION) + ; + + ANALYSE w_CPT_ECRITURE_source_OP_LINK + ; + + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_REF_FACT = w_CPT_ECRITURE_work.ECR_REF_FACT + FROM w_CPT_ECRITURE_work + WHERE w_CPT_ECRITURE_source_OP_LINK.ECR_OPERATION = w_CPT_ECRITURE_work.ECR_OPERATION AND + w_CPT_ECRITURE_source_OP_LINK.ECR_REF_DA = w_CPT_ECRITURE_work.ECR_REF_DA AND + w_CPT_ECRITURE_source_OP_LINK.ECR_REF_FACT = 0 + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_TYPE = 'VENTE-DEP' + WHERE ECR_TYPE = 'VENTE_DEP' + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_TYPE = 'VENTE-HON' + WHERE ECR_TYPE = 'VENTE_HON' + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_TYPE = 'VENTE-DIRECTE' + WHERE ECR_TYPE = 'VENTE_DIRECTE' + ; + + ANALYSE w_CPT_ECRITURE_source_OP_LINK + ; + + CREATE INDEX w_cpt_ecriture_op_link_ik_ecr_compte + ON w_CPT_ECRITURE_source_OP_LINK + USING btree + (ecr_compte); + + + CREATE INDEX w_cpt_ecriture_op_link_ik_ecr_ref_oid + ON w_CPT_ECRITURE_source_OP_LINK + USING btree + (ecr_ref_oid); + + CREATE INDEX w_cpt_ecriture_op_link_ik_ecr_data + ON w_CPT_ECRITURE_source_OP_LINK + USING btree + (ecr_data); + + CREATE INDEX w_cpt_ecriture_op_link_ik_ECR_REF_DA + ON w_CPT_ECRITURE_source_OP_LINK + USING btree + (ECR_REF_DA); + + CREATE INDEX w_cpt_ecriture_op_link_ik_ECR_REF_FACT + ON w_CPT_ECRITURE_source_OP_LINK + USING btree + (ECR_REF_FACT); + + CREATE INDEX w_cpt_ecriture_op_link_ik_LNK_JOURNAL + ON w_CPT_ECRITURE_source_OP_LINK + USING btree + (LNK_JOURNAL); + + + + + -- Correction tiers dans les comptes car dans certains cas, ils ne correspondent pas aux factures + UPDATE prod_web100t.CPT_COMPTES + SET CPT_REF = subview.FT_ORGANISME + FROM + ( + SELECT ECR_COMPTE, CPT_CODE, CPT_COMPTES.CPT_REF, MAX(FT_ORGANISME) AS FT_ORGANISME + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t.CPT_COMPTES ON ECR_COMPTE = CPT_OID + JOIN prod_web100t.FAC_FACT_TIER ON ECR_REF_FTIERS = FT_OID + WHERE CPT_COMPTES.CPT_REF_TYPE = 'AMC' + GROUP BY 1,2,3 + HAVING MAX(CASE WHEN CPT_COMPTES.CPT_REF <> FT_ORGANISME THEN '1' ELSE '0' END) = '1' AND + count(DISTINCT FT_ORGANISME) = 1 + ORDER BY 1,2,3 + ) subview + WHERE CPT_COMPTES.CPT_OID = ECR_COMPTE + ; + + + -- + + + DROP TABLE IF EXISTS w_REGUL_MOUVEMENTS_source; + CREATE TEMP TABLE w_REGUL_MOUVEMENTS_source AS + SELECT * + FROM prod_web100t.REGUL_MOUVEMENTS + WHERE MVT_SEJ_OID = ANY(SELECT PHASE_OID FROM prod_web100t.DAT_SEJOUR WHERE SEJ_DA = ANY(SELECT DA_OID FROM prod_web100t.DAT_DA WHERE DA_EG_ENTREE = ANY(SELECT ets_oid FROM w_NMCL_ETABLISSEMENT))) + ; + + ANALYSE w_REGUL_MOUVEMENTS_source + ; + + + CREATE INDEX w_REGUL_MOUVEMENTS_source_ik_MVT_SEJ_OID + ON w_REGUL_MOUVEMENTS_source + USING btree + (MVT_SEJ_OID); + + + + + -- + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'WEB100T_ETAGE', + 'Traitement étage WEB100T ', + '0', + '1 = Prendre UF GEO dans mouvements (pas dans chambres)' + WHERE 'WEB100T_ETAGE' NOT IN (SELECT code FROM activite.t_divers); + + -- UF chambre selon mouvements + UPDATE prod_web100t.CHAMBRES + SET CHA_UF = MVT_UF_GEO + FROM ( + SELECT MVT_CHAMBRE, (MAX(ARRAY[MVT_DATE::text,MVT_UF_GEO::text]))[2]::bigint AS MVT_UF_GEO + FROM w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + JOIN activite.t_divers ON t_divers.code = 'WEB100T_ETAGE' AND t_divers.valeur ='1' + WHERE MVT_TYPE IN (1,4) AND + MVT_CHAMBRE <> 0 + GROUP BY 1 + ) subview + WHERE CHA_OID = MVT_CHAMBRE + ; + + + + + ]]> + + + + '00'; + + + INSERT INTO activite[PX].t_tiers_payant(code_original, code, type_tiers_payant, texte, texte_court) + SELECT NMCL_AMC.OID::bigint, w_SGN_NMCL_DATA.ND_CODE, '2', w_SGN_NMCL_DATA.ND_LIB, w_SGN_NMCL_DATA.ND_LIB + FROM prod_web100t.NMCL_AMC + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = OID + WHERE NMCL_IDENT = 'AMC' AND NMCL_AMC.OID::bigint NOT IN (SELECT code_original FROM activite[PX].t_tiers_payant); + + -- Dans certains cas, les tiers ne sont pas dans NMCL_DATA + INSERT INTO activite[PX].t_tiers_payant(code_original, code, type_tiers_payant, texte, texte_court) + SELECT NMCL_AMC.OID::bigint, MAX(CPT_AUXILIAIRE), '2', MAX(CPT_LIB), MAX(CPT_LIB) + FROM prod_web100t.NMCL_AMC + JOIN prod_web100t.CPT_COMPTES ON CPT_REF_TYPE = 'AMC' AND CPT_REF = NMCL_AMC.OID + WHERE NMCL_AMC.OID::bigint NOT IN (SELECT code_original FROM activite[PX].t_tiers_payant) + GROUP BY 1; + + UPDATE activite[PX].t_tiers_payant SET + code = w_SGN_NMCL_DATA.ND_CODE, + texte = w_SGN_NMCL_DATA.ND_LIB, + texte_court = w_SGN_NMCL_DATA.ND_LIB + FROM prod_web100t.NMCL_AMO + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = OID + WHERE NMCL_AMO.OID::bigint = code_original AND + ( + code IS DISTINCT FROM w_SGN_NMCL_DATA.ND_CODE OR + texte IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB OR + texte_court IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB + ) + ; + + UPDATE activite[PX].t_tiers_payant SET + code = w_SGN_NMCL_DATA.ND_CODE, + texte = w_SGN_NMCL_DATA.ND_LIB, + texte_court = w_SGN_NMCL_DATA.ND_LIB + FROM prod_web100t.NMCL_AMC + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = OID + WHERE NMCL_AMC.OID::bigint = code_original AND + ( + code IS DISTINCT FROM w_SGN_NMCL_DATA.ND_CODE OR + texte IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB OR + texte_court IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB + ) + ; + + -- Adresses des tiers payant + INSERT INTO base.t_codes_postaux(code, texte, texte_court, departement_id) + SELECT FLD_CODEPOSTAL, MAX(FLD_COMMUNE), MAX(FLD_COMMUNE), MAX(t_departements.oid) + FROM prod_web100t.NMCL_AMO + LEFT JOIN base.t_codes_postaux ON FLD_CODEPOSTAL = t_codes_postaux.code + JOIN base.t_departements ON + FLD_CODEPOSTAL NOT LIKE '97%' AND substr(FLD_CODEPOSTAL,1,2) = t_departements.code OR + FLD_CODEPOSTAL LIKE '97%' AND substr(FLD_CODEPOSTAL,1,3) = t_departements.code + WHERE t_codes_postaux.oid IS NULL AND + FLD_CODEPOSTAL <> '' AND + length(FLD_CODEPOSTAL) = 5 + GROUP BY 1 + ; + + UPDATE activite[PX].t_tiers_payant SET + adresse = FLD_ADRESSE1 || ' ' || FLD_ADRESSE2 || ' ' || FLD_ADRESSE3, + code_postal_id = COALESCE(t_codes_postaux.oid,0), + ville = FLD_COMMUNE, + telephone = FLD_TELEPHONE, + fax = FLD_FAX, + email = FLD_EMAIL + FROM prod_web100t.NMCL_AMO + LEFT JOIN base.t_codes_postaux ON FLD_CODEPOSTAL = t_codes_postaux.code + WHERE t_tiers_payant.code_original = NMCL_AMO.OID::bigint AND + ( + adresse IS DISTINCT FROM (FLD_ADRESSE1 || ' ' || FLD_ADRESSE2 || ' ' || FLD_ADRESSE3) OR + code_postal_id IS DISTINCT FROM COALESCE(t_codes_postaux.oid,0) OR + ville IS DISTINCT FROM FLD_COMMUNE OR + telephone IS DISTINCT FROM FLD_TELEPHONE OR + fax IS DISTINCT FROM FLD_FAX OR + email IS DISTINCT FROM FLD_EMAIL + ) + ; + + INSERT INTO base.t_codes_postaux(code, texte, texte_court, departement_id) + SELECT FLD_CODEPOSTAL, MAX(FLD_COMMUNE), MAX(FLD_COMMUNE), MAX(t_departements.oid) + FROM prod_web100t.NMCL_AMC + LEFT JOIN base.t_codes_postaux ON FLD_CODEPOSTAL = t_codes_postaux.code + JOIN base.t_departements ON + FLD_CODEPOSTAL NOT LIKE '97%' AND substr(FLD_CODEPOSTAL,1,2) = t_departements.code OR + FLD_CODEPOSTAL LIKE '97%' AND substr(FLD_CODEPOSTAL,1,3) = t_departements.code + WHERE t_codes_postaux.oid IS NULL AND + FLD_CODEPOSTAL <> '' AND + length(FLD_CODEPOSTAL) = 5 + GROUP BY 1 + ; + + UPDATE activite[PX].t_tiers_payant SET + adresse = FLD_ADRESSE1 || ' ' || FLD_ADRESSE2 || ' ' || FLD_ADRESSE3, + code_postal_id = COALESCE(t_codes_postaux.oid,0), + ville = FLD_COMMUNE, + telephone = FLD_TELEPHONE, + fax = FLD_FAX, + email = FLD_EMAIL + FROM prod_web100t.NMCL_AMC + LEFT JOIN base.t_codes_postaux ON FLD_CODEPOSTAL = t_codes_postaux.code + WHERE t_tiers_payant.code_original = NMCL_AMC.OID::bigint AND + ( + adresse IS DISTINCT FROM (FLD_ADRESSE1 || ' ' || FLD_ADRESSE2 || ' ' || FLD_ADRESSE3) OR + code_postal_id IS DISTINCT FROM COALESCE(t_codes_postaux.oid,0) OR + ville IS DISTINCT FROM FLD_COMMUNE OR + telephone IS DISTINCT FROM FLD_TELEPHONE OR + fax IS DISTINCT FROM FLD_FAX OR + email IS DISTINCT FROM FLD_EMAIL + ) + ; + + + + + ]]> + + + + '' THEN FLD_NOM ELSE TRIM(REPLACE(w_SGN_NMCL_DATA.ND_LIB, FLD_PRENOM, '')) END) AS FLD_NOM_SOUNDEX, + base.cti_soundex_nom(FLD_PRENOM) AS FLD_PRENOM_SOUNDEX, + CASE WHEN FLD_NOM <> '' THEN FLD_NOM ELSE TRIM(REPLACE(w_SGN_NMCL_DATA.ND_LIB, FLD_PRENOM, '')) END AS FLD_NOM, + FLD_PRENOM, + FLD_CODEADELI, + FLD_SPECIALITE, + COALESCE(SUBSTR(w_SGN_NMCL_DATA_spe.ND_CODE,1,10),'') AS FLD_SPECIALITE_CODE, + COALESCE(t_medecins_administratifs.medecin_id,0) as medecin_id, + FLD_CODERPPS + FROM prod_web100t.NMCL_INTERVENANT + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = OID AND w_SGN_NMCL_DATA.NMCL_IDENT = 'INTERVENANT' + LEFT JOIN w_SGN_NMCL_DATA w_SGN_NMCL_DATA_spe ON FLD_SPECIALITE = w_SGN_NMCL_DATA_spe.ND_INVARIANT_OID + LEFT JOIN activite[PX].t_medecins_administratifs ON NMCL_INTERVENANT.OID::bigint = t_medecins_administratifs.code_original; + + INSERT INTO w_medecins ( + NMCL_INTERVENANT_OID + ,ND_CODE + ,FLD_NOM_SOUNDEX + ,FLD_PRENOM_SOUNDEX + ,FLD_NOM + ,FLD_PRENOM + ,FLD_CODEADELI + ,FLD_SPECIALITE + ,FLD_SPECIALITE_CODE + ,medecin_id + ,FLD_CODERPPS + ) + SELECT w_SGN_NMCL_DATA.ND_INVARIANT_OID::bigint + ,w_SGN_NMCL_DATA.ND_CODE + ,base.cti_soundex_nom(w_SGN_NMCL_DATA.ND_LIB) + ,base.cti_soundex_nom('') AS FLD_PRENOM_SOUNDEX + ,w_SGN_NMCL_DATA.ND_LIB AS FLD_NOM + ,''::text AS FLD_PRENOM + ,''::text AS FLD_CODEADELI + ,0 AS FLD_SPECIALITE + ,'' + ,COALESCE(t_medecins_administratifs.medecin_id,0) as medecin_id + ,NULL + FROM w_SGN_NMCL_DATA + LEFT JOIN activite[PX].t_medecins_administratifs ON w_SGN_NMCL_DATA.ND_INVARIANT_OID::bigint = t_medecins_administratifs.code_original + WHERE NMCL_IDENT IN ('ENTITEFACTURATION','ETABLISSEMENT') + ; + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, code_rpps, specialite_id) + SELECT w_medecins.FLD_NOM, w_medecins.FLD_PRENOM, w_medecins.FLD_CODEADELI, w_medecins.FLD_CODERPPS, 0 FROM + (SELECT SUBSTR(FLD_NOM_SOUNDEX, 1, 8) AS FLD_NOM_SOUNDEX, SUBSTR(FLD_PRENOM_SOUNDEX, 1, 8) AS FLD_PRENOM_SOUNDEX, FLD_CODEADELI, FLD_CODERPPS, MIN(NMCL_INTERVENANT_OID) AS NMCL_INTERVENANT_OID + FROM w_medecins + GROUP BY 1,2,3,4) subview, w_medecins + WHERE w_medecins.NMCL_INTERVENANT_OID = subview.NMCL_INTERVENANT_OID + AND subview.FLD_NOM_SOUNDEX || ',' || subview.FLD_PRENOM_SOUNDEX || ',' || subview.FLD_CODEADELI NOT IN + (SELECT substr(base.cti_soundex_nom(nom),1,8) || ',' || substr(base.cti_soundex_nom(prenom),1,8) || ',' || numero_ordre FROM base.t_medecins); + + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, code_rpps, specialite_id) + SELECT w_medecins.FLD_NOM, w_medecins.FLD_PRENOM, w_medecins.FLD_CODEADELI, w_medecins.FLD_CODERPPS, 0 FROM + (SELECT FLD_NOM_SOUNDEX, FLD_PRENOM_SOUNDEX, MIN(NMCL_INTERVENANT_OID) AS NMCL_INTERVENANT_OID + FROM w_medecins + GROUP BY 1,2) subview, w_medecins + WHERE w_medecins.NMCL_INTERVENANT_OID = subview.NMCL_INTERVENANT_OID + AND subview.FLD_NOM_SOUNDEX || ',' || subview.FLD_PRENOM_SOUNDEX NOT IN + (SELECT base.cti_soundex_nom(nom) || ',' || base.cti_soundex_nom(prenom) FROM base.t_medecins); + + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT substr(base.cti_soundex_nom(nom),1,8) as nom , substr(base.cti_soundex_nom(prenom),1,8) as prenom, numero_ordre, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2,3) subview + WHERE SUBSTR(FLD_NOM_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(FLD_PRENOM_SOUNDEX, 1, 8) = subview.prenom + AND FLD_CODEADELI = subview.numero_ordre + AND w_medecins.medecin_id = 0; + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT base.cti_soundex_nom(nom) as nom , base.cti_soundex_nom(prenom) as prenom, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2) subview + WHERE SUBSTR(FLD_NOM_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(FLD_PRENOM_SOUNDEX, 1, 8) = subview.prenom + AND w_medecins.medecin_id = 0; + + INSERT INTO activite[PX].t_medecins_administratifs(code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT DISTINCT NMCL_INTERVENANT_OID, ND_CODE, FLD_NOM, FLD_PRENOM, COALESCE(t_specialites_medecin.oid,0), medecin_id + FROM w_medecins + LEFT JOIN base.t_specialites_medecin ON (FLD_SPECIALITE::bigint = t_specialites_medecin.code_original) + WHERE NMCL_INTERVENANT_OID NOT IN (SELECT code_original FROM activite[PX].t_medecins_administratifs); + + UPDATE activite[PX].t_medecins_administratifs SET + code = ND_CODE, + nom = FLD_NOM, + prenom = FLD_PRENOM + FROM w_medecins + WHERE t_medecins_administratifs.code_original = NMCL_INTERVENANT_OID AND + ( + code IS DISTINCT FROM ND_CODE OR + nom IS DISTINCT FROM FLD_NOM OR + prenom IS DISTINCT FROM FLD_PRENOM + ) + ; + + UPDATE activite[PX].t_medecins_administratifs + SET code = ND_CODE, + nom = FLD_NOM, + prenom = FLD_PRENOM, + specialite_id = COALESCE(t_specialites_medecin.oid,0), + medecin_id = w_medecins.medecin_id, + no_adeli = FLD_CODEADELI, + code_rpps = FLD_CODERPPS + FROM w_medecins LEFT JOIN base.t_specialites_medecin ON (FLD_SPECIALITE_CODE = t_specialites_medecin.code) + WHERE w_medecins.NMCL_INTERVENANT_OID = t_medecins_administratifs.code_original + AND ( + t_medecins_administratifs.code IS DISTINCT FROM ND_CODE OR + t_medecins_administratifs.nom IS DISTINCT FROM FLD_NOM OR + t_medecins_administratifs.prenom IS DISTINCT FROM FLD_PRENOM OR + t_medecins_administratifs.specialite_id IS DISTINCT FROM COALESCE(t_specialites_medecin.oid,0) OR + t_medecins_administratifs.medecin_id IS DISTINCT FROM w_medecins.medecin_id OR + t_medecins_administratifs.no_adeli IS DISTINCT FROM w_medecins.FLD_CODEADELI OR + t_medecins_administratifs.code_rpps IS DISTINCT FROM w_medecins.FLD_CODERPPS + ); + + UPDATE base.t_medecins SET specialite_id = subview.specialite_id FROM + (SELECT t_medecins.oid, MIN(t_medecins_administratifs.specialite_id) as specialite_id + FROM base.t_medecins, activite[PX].t_medecins_administratifs , base.t_specialites_medecin + WHERE t_medecins.oid = t_medecins_administratifs.medecin_id AND + t_medecins_administratifs.specialite_id = t_specialites_medecin.oid AND + t_medecins_administratifs.specialite_id <> 0 + GROUP BY t_medecins.oid) subview + WHERE t_medecins.oid = subview.oid AND t_medecins.oid <> 0 AND t_medecins.specialite_id = 0; + + -- Code RPPS + UPDATE base.t_medecins + SET code_rpps = subview.RPPS + FROM + ( + SELECT medecin_id, count(DISTINCT FLD_CODERPPS), MAX(FLD_CODERPPS) AS RPPS + FROM activite[PX].t_medecins_administratifs + JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid + JOIN prod_web100t.NMCL_INTERVENANT ON code_original = NMCL_INTERVENANT.OID + WHERE FLD_CODERPPS <> '' AND + length(FLD_CODERPPS) = 11 AND + t_medecins.code_rpps = '' AND + medecin_id <> 0 + GROUP BY 1 + HAVING count(DISTINCT FLD_CODERPPS) = 1 + ) subview + WHERE t_medecins.oid = subview.medecin_id + ; + + -- adresse + INSERT INTO base.t_codes_postaux(code, texte, texte_court, departement_id) + SELECT FLD_CODEPOSTAL, MAX(FLD_COMMUNE), MAX(FLD_COMMUNE), MAX(t_departements.oid) + FROM prod_web100t.NMCL_INTERVENANT + LEFT JOIN base.t_codes_postaux ON FLD_CODEPOSTAL = t_codes_postaux.code + JOIN base.t_departements ON + FLD_CODEPOSTAL NOT LIKE '97%' AND substr(FLD_CODEPOSTAL,1,2) = t_departements.code OR + FLD_CODEPOSTAL LIKE '97%' AND substr(FLD_CODEPOSTAL,1,3) = t_departements.code + WHERE t_codes_postaux.oid IS NULL AND + FLD_CODEPOSTAL <> '' AND + length(FLD_CODEPOSTAL) = 5 + GROUP BY 1 + ; + + UPDATE activite[PX].t_medecins_administratifs SET + adresse = FLD_ADRESSE1 || ' ' || FLD_ADRESSE2 || ' ' || FLD_ADRESSE3, + code_postal_id = COALESCE(t_codes_postaux.oid,0), + ville = FLD_COMMUNE, + telephone = FLD_TELEPHONE, + fax = FLD_FAX, + email = FLD_EMAIL + FROM prod_web100t.NMCL_INTERVENANT + LEFT JOIN base.t_codes_postaux ON FLD_CODEPOSTAL = t_codes_postaux.code + WHERE t_medecins_administratifs.code_original = NMCL_INTERVENANT.OID::bigint AND + ( + adresse IS DISTINCT FROM (FLD_ADRESSE1 || ' ' || FLD_ADRESSE2 || ' ' || FLD_ADRESSE3) OR + code_postal_id IS DISTINCT FROM COALESCE(t_codes_postaux.oid,0) OR + ville IS DISTINCT FROM FLD_COMMUNE OR + telephone IS DISTINCT FROM FLD_TELEPHONE OR + fax IS DISTINCT FROM FLD_FAX OR + email IS DISTINCT FROM FLD_EMAIL + ) + ; + + + DROP TABLE IF EXISTS w_NMCL_INTERVENANT; + CREATE TEMP TABLE w_NMCL_INTERVENANT AS + SELECT NODE_OID, NMCL_INTERVENANT.OID, COALESCE(t_medecins_administratifs.oid,0) AS medecin_administratif_id + FROM prod_web100t.SGN_TREE_NODES + JOIN prod_web100t.NMCL_INTERVENANT ON NODE_INVARIANT_OID = NMCL_INTERVENANT.OID + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = OID AND NMCL_IDENT = 'INTERVENANT' + JOIN activite[PX].t_medecins_administratifs ON NMCL_INTERVENANT.OID = code_original; + + INSERT INTO w_NMCL_INTERVENANT + SELECT NODE_OID, NODE_INVARIANT_OID, COALESCE(t_medecins_administratifs.oid,0) AS medecin_administratif_id + FROM prod_web100t.SGN_TREE_NODES + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = NODE_INVARIANT_OID AND NMCL_IDENT IN ('ENTITEFACTURATION','ETABLISSEMENT') + JOIN activite[PX].t_medecins_administratifs ON NODE_INVARIANT_OID = code_original; + + + + CREATE INDEX w_NMCL_INTERVENANT_i1 + ON w_NMCL_INTERVENANT + USING btree + (NODE_OID); + + + ]]> + + + + 0 + LEFT JOIN w_SGN_NMCL_DATA SGN_NMCL_DATA_DMT ON FLD_DMT = SGN_NMCL_DATA_DMT.ND_INVARIANT_OID AND FLD_DMT <> 0 + LEFT JOIN base.t_modes_traitement ON SGN_NMCL_DATA_MT.ND_CODE = t_modes_traitement.code + LEFT JOIN base.t_dmt ON SGN_NMCL_DATA_DMT.ND_CODE = t_dmt.code + WHERE COALESCE(t_modes_traitement.oid,0) <> 0 OR COALESCE(t_dmt.oid,0) <> 0 + ) subview + WHERE code_original = subview.OID AND (t_services_facturation.mode_traitement_id = 0 OR t_services_facturation.dmt_id = 0); + + + UPDATE activite[PX].t_services_facturation SET + code = w_SGN_NMCL_DATA.ND_CODE, + texte = w_SGN_NMCL_DATA.ND_LIB, + texte_court = w_SGN_NMCL_DATA.ND_LIB + FROM prod_web100t.NMCL_UNITEFONCTIONNELLE + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = NMCL_UNITEFONCTIONNELLE.OID + WHERE NMCL_UNITEFONCTIONNELLE.OID::bigint = code_original AND + ( + code IS DISTINCT FROM w_SGN_NMCL_DATA.ND_CODE OR + texte IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB OR + texte_court IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB + ) + ; + + -- Unités fonctionnelles + + INSERT INTO activite[PX].t_unites_fonctionnelles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_unites_fonctionnelles); + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT OID::bigint, ND_CODE, ND_LIB, ND_LIB + FROM prod_web100t.NMCL_UNITEFONCTIONNELLE + JOIN w_SGN_NMCL_DATA ON ND_INVARIANT_OID = OID + WHERE NMCL_IDENT = 'UNITEFONCTIONNELLE' AND + OID::bigint NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles) + ORDER BY ND_CODE; + + UPDATE activite[PX].t_unites_fonctionnelles SET + code = w_SGN_NMCL_DATA.ND_CODE, + texte = w_SGN_NMCL_DATA.ND_LIB, + texte_court = w_SGN_NMCL_DATA.ND_LIB + FROM prod_web100t.NMCL_UNITEFONCTIONNELLE + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = NMCL_UNITEFONCTIONNELLE.OID + WHERE NMCL_UNITEFONCTIONNELLE.OID::bigint = code_original AND + ( + code IS DISTINCT FROM w_SGN_NMCL_DATA.ND_CODE OR + texte IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB OR + texte_court IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB + ) + ; + + -- Unités médicales + + INSERT INTO activite[PX].t_unites_medicales(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_unites_medicales); + + INSERT INTO activite[PX].t_unites_medicales(code_original, code, texte, texte_court) + SELECT OID::bigint, ND_CODE, ND_LIB, ND_LIB + FROM prod_web100t.NMCL_UNITEMEDICALE + JOIN w_SGN_NMCL_DATA ON ND_INVARIANT_OID = OID + WHERE NMCL_IDENT = 'UNITEMEDICALE' AND + OID::bigint NOT IN (SELECT code_original FROM activite[PX].t_unites_medicales) + ORDER BY ND_CODE; + + UPDATE activite[PX].t_unites_medicales SET + code = w_SGN_NMCL_DATA.ND_CODE, + texte = w_SGN_NMCL_DATA.ND_LIB, + texte_court = w_SGN_NMCL_DATA.ND_LIB + FROM prod_web100t.NMCL_UNITEMEDICALE + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = NMCL_UNITEMEDICALE.OID + WHERE NMCL_UNITEMEDICALE.OID::bigint = code_original AND + ( + code IS DISTINCT FROM w_SGN_NMCL_DATA.ND_CODE OR + texte IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB OR + texte_court IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB + ) + ; + + -- Activités + + INSERT INTO activite[PX].t_activites(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_activites); + + --Traitements des spécialités + INSERT INTO w_SGN_NMCL_DATA (NMCL_IDENT, ND_CODE, ND_OID, ND_INVARIANT_OID, ND_LIB) + SELECT DISTINCT ON (ND_LIB) + NMCL_IDENT + ,ND_CODE + ,null + ,ND_INVARIANT_OID + ,ND_LIB + FROM prod_web100t.SGN_NMCL_DATA + JOIN prod_web100t.SGN_NMCLS ON ND_NMCL_OID = NMCL_OID + WHERE NMCL_IDENT = 'SPECIALITE' + ORDER BY ND_LIB, ND_VALIDE_DE, ND_INVARIANT_OID DESC + ; + + -- Modification du code_original des spécialités déjà présentes dans CTI + UPDATE activite[PX].t_activites + SET code_original = ND_INVARIANT_OID + FROM w_SGN_NMCL_DATA + WHERE + NMCL_IDENT = 'SPECIALITE' + AND activite[PX].t_activites.code = substr(ND_CODE,1,10) + AND activite[PX].t_activites.code_original <> ND_INVARIANT_OID + ; + + -- Insertion des nouvelles spécialités + INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court) + SELECT ND_INVARIANT_OID, substr(ND_CODE,1,10), ND_LIB, ND_LIB + FROM w_SGN_NMCL_DATA + LEFT JOIN activite[PX].t_activites ON t_activites.code_original = ND_INVARIANT_OID + WHERE NMCL_IDENT = 'SPECIALITE' + AND t_activites.code_original IS NULL + AND NOT EXISTS (SELECT 1 FROM activite[PX].t_activites WHERE t_activites.code = substr(w_SGN_NMCL_DATA.ND_CODE,1,10)) + ORDER BY ND_CODE; + + -- Correction car avant, le code_original pouvait être doublé. + DELETE FROM activite[PX].t_activites + USING( + SELECT code_original, MIN(oid) AS keep_oid + FROM activite[PX].t_activites + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE t_activites.code_original = subview.code_original AND + t_activites.oid <> keep_oid + ; + + UPDATE activite[PX].t_activites SET + code = substr(ND_CODE,1,10), + texte = ND_LIB, + texte_court = ND_LIB + FROM w_SGN_NMCL_DATA + WHERE ND_INVARIANT_OID = t_activites.code_original AND + ( + t_activites.code IS DISTINCT FROM substr(w_SGN_NMCL_DATA.ND_CODE,1,10) OR + t_activites.texte IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB OR + t_activites.texte_court IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB + ) + ; + + -- Etages et lits + + INSERT INTO activite[PX].t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_etages); + + UPDATE prod_web100t.CHAMBRES + SET CHA_UF = NODE_INVARIANT_OID + FROM prod_web100t.SGN_TREE_NODES + WHERE CHA_UF = 0 AND + CHA_LIEU = NODE_OID; + + -- Avec lit + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court) + SELECT CHA_UF::bigint,ND_CODE, ND_LIB , ND_LIB + FROM prod_web100t.CHAMBRES + JOIN w_SGN_NMCL_DATA ON CHA_UF = ND_INVARIANT_OID + WHERE NMCL_IDENT = 'UNITEFONCTIONNELLE' AND + CHA_UF::bigint NOT IN (SELECT code_original FROM activite[PX].t_etages) + GROUP BY 1,2,3,4 + ORDER BY ND_CODE; + + -- Sans lit + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court) + SELECT MVT_UF_GEO::bigint,ND_CODE, ND_LIB , ND_LIB + FROM w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + JOIN w_SGN_NMCL_DATA ON MVT_UF_GEO = ND_INVARIANT_OID + WHERE NMCL_IDENT = 'UNITEFONCTIONNELLE' AND + MVT_LIT = 0 AND + MVT_UF_GEO::bigint NOT IN (SELECT code_original FROM activite[PX].t_etages) + GROUP BY 1,2,3,4 + ORDER BY ND_CODE; + + UPDATE activite[PX].t_etages SET + code = w_SGN_NMCL_DATA.ND_CODE, + texte = w_SGN_NMCL_DATA.ND_LIB, + texte_court = w_SGN_NMCL_DATA.ND_LIB + FROM w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = REGUL_MOUVEMENTS.MVT_UF_GEO + WHERE REGUL_MOUVEMENTS.MVT_UF_GEO::bigint = code_original AND + ( + code IS DISTINCT FROM w_SGN_NMCL_DATA.ND_CODE OR + texte IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB OR + texte_court IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB + ) + ; + + -- Les codes lits peuvent changer + UPDATE activite[PX].t_lits SET + code = LIT_CODE, + texte = CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END, + texte_court = CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END + FROM prod_web100t.CHAMBRES + JOIN prod_web100t.LITS ON CHA_OID = LIT_CHAMBRE + JOIN activite[PX].t_etages ON CHA_UF::bigint = t_etages.code_original + WHERE t_lits.code_original = (CHA_UF || '-' || LIT_OID) AND + (t_lits.code <> LIT_CODE OR + t_lits.texte <> CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END OR + t_lits.texte_court <> CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END + ) + ; + + UPDATE activite[PX].t_lits SET + code = LIT_CODE, + texte = CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END, + texte_court = CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END, + etage_id = t_etages.oid + FROM + prod_web100t.CHAMBRES + JOIN prod_web100t.LITS ON CHA_OID = LIT_CHAMBRE + JOIN activite[PX].t_etages ON CHA_UF::bigint = t_etages.code_original + WHERE 1=1 + AND CHA_UF::text || '-'::text || LIT_OID::text = t_lits.code_original + AND (1!=1 + OR t_lits.code != LIT_CODE + OR t_lits.texte != CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END + OR t_lits.texte_court != CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END + OR t_lits.etage_id != t_etages.oid + ); + + -- Mise à jour par rapport au code du lit et à l'étage si l'oid a changé + UPDATE activite[PX].t_lits SET + code_original = (CHA_UF::text || '-'::text || LIT_OID::text) + FROM + prod_web100t.CHAMBRES + JOIN prod_web100t.LITS ON CHA_OID = LIT_CHAMBRE + ,activite[PX].t_etages + WHERE 1=1 + AND t_lits.etage_id = t_etages.oid + AND t_lits.code = LITS.LIT_CODE + AND t_etages.code_original = CHAMBRES.CHA_UF + AND t_lits.code_original IS DISTINCT FROM (CHA_UF::text || '-'::text || LIT_OID::text) + ; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT CHA_UF || '-' || MAX(LIT_OID), + LIT_CODE, + CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END, + CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END, + t_etages.oid, + CASE WHEN CHA_COMMUNE = '1' THEN 'N' ELSE 'O' END AS chambre_particuliere + FROM prod_web100t.CHAMBRES + JOIN prod_web100t.LITS ON CHA_OID = LIT_CHAMBRE + JOIN activite[PX].t_etages ON CHA_UF::bigint = t_etages.code_original + GROUP BY CHA_UF,2,3,4,5,6 + HAVING + CHA_UF || '-' || MAX(LIT_OID) NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL) + ORDER BY LIT_CODE; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT code_original || '-0' , '', 'Non renseigné', 'Non renseigné', oid, 'N' + FROM activite[PX].t_etages + WHERE oid > 0 AND + code_original || '-0' NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL); + + UPDATE activite[PX].t_lits SET code = '*****' WHERE code = ''; + + UPDATE activite[PX].t_lits SET + code = LIT_CODE, + texte = CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END, + texte_court = CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END + FROM + ( + with max_lit_oid AS ( + SELECT CHAMBRES.CHA_OID, CHAMBRES.CHA_UF, MAX(LITS.LIT_OID) AS MAX_LIT_OID + FROM prod_web100t.CHAMBRES + JOIN prod_web100t.LITS ON CHA_OID = LIT_CHAMBRE + GROUP BY 1,2 + ) + SELECT + CHAMBRES.CHA_UF, + CHAMBRES.CHA_CODE, + max_lit_oid.MAX_LIT_OID, + LITS.LIT_CODE, + LITS.LIT_DESCR + FROM max_lit_oid + JOIN prod_web100t.CHAMBRES ON CHAMBRES.CHA_OID = max_lit_oid.CHA_OID + JOIN prod_web100t.LITS ON LIT_OID = max_lit_oid.MAX_LIT_OID + JOIN activite[PX].t_etages ON t_etages.code_original = CHAMBRES.CHA_UF::bigint + ) AS subview + WHERE subview.CHA_UF || '-' || subview.MAX_LIT_OID = code_original AND + ( + code IS DISTINCT FROM LIT_CODE OR + texte IS DISTINCT FROM CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END OR + texte_court IS DISTINCT FROM CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END + ) + ; + + + DROP TABLE IF EXISTS w_NMCL_UNITEFONCTIONNELLE; + CREATE TEMP TABLE w_NMCL_UNITEFONCTIONNELLE AS + SELECT + ND_INVARIANT_OID AS WEB100T_OID, + COALESCE(t_services_facturation.oid,0) AS service_facturation_id, + COALESCE(t_unites_fonctionnelles.oid,0) AS unite_fonctionnelle_id, + COALESCE(mode_traitement_id,0) AS mode_traitement_id, + COALESCE(t_modes_traitement.code,'') AS mode_traitement_code, + COALESCE(dmt_id,0) AS dmt_id, + COALESCE(t_dmt.code,'') AS dmt_code, + COALESCE(t_services_facturation.type_sejour,'') AS type_sejour, + COALESCE(t_services_facturation.type_t2a,'0') AS type_t2a + FROM w_SGN_NMCL_DATA + LEFT JOIN activite[PX].t_services_facturation ON ND_INVARIANT_OID::bigint = t_services_facturation.code_original + LEFT JOIN activite[PX].t_unites_fonctionnelles ON ND_INVARIANT_OID::bigint = t_unites_fonctionnelles.code_original + LEFT JOIN base.t_modes_traitement ON mode_traitement_id = t_modes_traitement.oid + LEFT JOIN base.t_dmt ON mode_traitement_id = t_dmt.oid + WHERE NMCL_IDENT = 'UNITEFONCTIONNELLE'; + + + ]]> + + + + 0 + WHERE ART_OID::text = t_rubriques_facturation.code_original + ; + + UPDATE w_ART_ARTICLES SET ART_CODE_B2 = ART_CODE WHERE ART_CODE_B2 = '' AND ART_CODE <> ''; + + -- Codes ou texte modifiés + UPDATE activite[PX].t_rubriques_facturation SET + code = ART_CODE, + texte = ART_LIB, + texte_court = ART_LIB + FROM prod_web100T.ART_ARTICLES + WHERE code_original = ART_OID AND + ART_ARTICLES.ART_CLASS NOT IN ('GRP', 'CCAM', 'UCD', 'LPP', 'GHS', 'GHT') AND + ( + t_rubriques_facturation.code <> ART_CODE OR + t_rubriques_facturation.texte <> ART_LIB OR + t_rubriques_facturation.texte_court <> ART_LIB + ) + ; + + -- code changé avec code original inchangé + UPDATE activite[PX].t_rubriques_facturation SET + code = ART_CODE + FROM + ( + SELECT + (MAX(Array[ART_DEBUT_VALIDITE::text,ART_OID_rub::text]))[2]::bigint AS ART_OID_rub, + ART_CODE, + (MAX(Array[ART_DEBUT_VALIDITE::text,ART_LIB]))[2] AS ART_LIB, + (MAX(Array[ART_DEBUT_VALIDITE::text,ART_LIB]))[2] AS ART_LIB + FROM w_ART_ARTICLES + GROUP BY ART_CODE + ) as subq + WHERE code_original = ART_OID_rub + AND code != ART_CODE + ; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT + (MAX(Array[ART_DEBUT_VALIDITE::text,ART_OID_rub::text]))[2]::bigint AS ART_OID_rub, + ART_CODE, + (MAX(Array[ART_DEBUT_VALIDITE::text,ART_LIB]))[2] AS ART_LIB, + (MAX(Array[ART_DEBUT_VALIDITE::text,ART_LIB]))[2] AS ART_LIB + FROM w_ART_ARTICLES + GROUP BY ART_CODE + HAVING (MAX(Array[ART_DEBUT_VALIDITE::text,ART_OID_rub::text]))[2] NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation) AND + ART_CODE NOT IN (SELECT code FROM activite[PX].t_rubriques_facturation WHERE t_rubriques_facturation.code IS NOT NULL) + ; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT + ART_CODE_B2, + ART_CODE_B2, + ART_CODE_B2, + ART_CODE_B2 + FROM w_ART_ARTICLES + WHERE ART_CODE_B2 NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + GROUP BY ART_CODE_B2 + ORDER BY ART_CODE_B2; + + INSERT INTO base.t_actes( + code, texte, texte_court, nomenclature, ccam_regroupement_id_1, ccam_regroupement_id_4, + geste_marqueur_id) + SELECT + substring(ART_CODE_ACTE, 1, 7), + (MAX(Array[ART_DEBUT_VALIDITE::text,ART_LIB_ACTE]))[2] AS ART_LIB_ACTE, + (MAX(Array[ART_DEBUT_VALIDITE::text,ART_LIB_ACTE]))[2] AS ART_LIB_ACTE, + MIN(CASE WHEN length(trim(ART_CODE_ACTE)) >= 7 THEN 'CCAM' ELSE 'NGAP' END), + MIN(COALESCE(t_ccam_regroupements_1.oid,0)), + MIN(COALESCE(t_ccam_regroupements_4.oid,0)), + 0 + FROM w_ART_ARTICLES + LEFT JOIN base.t_ccam_regroupements t_ccam_regroupements_1 ON t_ccam_regroupements_1.code = CASE WHEN length(trim(ART_CODE_ACTE)) >= 7 THEN ART_CODE_B2 ELSE 'NGAP' END + LEFT JOIN base.t_ccam_regroupements t_ccam_regroupements_4 ON t_ccam_regroupements_4.code = CASE WHEN length(trim(ART_CODE_ACTE)) >= 7 THEN 'ADA' ELSE 'NGAP' END + WHERE + substring(ART_CODE_ACTE, 1, 7) NOT IN (SELECT code FROM base.t_actes) AND + ART_OID = ANY (ARRAY (SELECT DISTINCT FLT_ARTICLE FROM prod_web100t.FAC_FACT_LIGNE_TIER WHERE FLT_IS_ETS = 0 AND FLT_DATE_DEBUT >= '[ENV_ADM_ANNEEDEBUT]0101'::timestamp without time zone)::double precision[]) + GROUP BY 1; + + + + + UPDATE w_ART_ARTICLES + SET prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE ART_CODE_B2 = code; + + + UPDATE w_ART_ARTICLES + SET rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + WHERE ART_CODE = code; + + + UPDATE w_ART_ARTICLES + SET acte_id = t_actes.oid + FROM base.t_actes + WHERE substring(ART_CODE_ACTE, 1, 7) = code; + + UPDATE w_ART_ARTICLES + SET ucd_id = t_ucd.oid + FROM base.t_ucd + WHERE ART_CODE_2 = t_ucd.code; + + UPDATE w_ART_ARTICLES + SET lpp_id = t_lpp.oid + FROM base.t_lpp + WHERE ART_CODE_2 = t_lpp.code; + + + ALTER TABLE w_ART_ARTICLES ADD CONSTRAINT w_ART_ARTICLES_pkey PRIMARY KEY(ART_OID); + + -- Journal + INSERT INTO activite[PX].t_journal (code_original, code, texte) + SELECT JOUR_TYPE, + JOUR_TYPE, + SPLIT_PART(JOUR_LIB,' ',1) + FROM prod_web100t.CPT_JOURNAL + WHERE JOUR_TYPE NOT IN (SELECT code_original FROM activite[PX].t_journal WHERE code_original IS NOT NULL) + GROUP BY 1,2,3 + ; + + INSERT INTO activite[PX].t_journal (code_original, code, texte) + SELECT LNK_JOURNAL, LNK_JOURNAL, + CASE LNK_JOURNAL + WHEN 'VE' THEN 'Ventes' + WHEN 'HONO' THEN 'Honoraires' + WHEN 'RGLMT' THEN 'Règlements' + WHEN 'ENCRS' THEN 'En cours' + ELSE LNK_JOURNAL END + FROM w_CPT_OP_LINK_source + WHERE LNK_JOURNAL NOT IN (SELECT code_original FROM activite[PX].t_journal WHERE code_original IS NOT NULL) + GROUP BY 1,2,3 + ; + + -- Comptes + INSERT INTO activite[PX].t_compte(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_compte); + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT + CPT_CODE, + CPT_CODE, + (max(DISTINCT ARRAY[cpt_created::text, CPT_LIB]))[2], + (max(DISTINCT ARRAY[cpt_created::text, CPT_LIB]))[2] + FROM PROD_WEB100T.CPT_COMPTES + WHERE CPT_CODE <> '' AND + CPT_OID = ANY(SELECT ECR_COMPTE FROM w_CPT_ECRITURE_source) AND + CPT_CODE NOT IN (SELECT code FROM activite[PX].t_compte) AND + CPT_CODE NOT IN (SELECT code_original FROM activite[PX].t_compte) + GROUP BY 1 + ORDER BY 1; + + UPDATE activite[PX].t_compte SET + code = subview.CPT_CODE, + texte = subview.MAX_CPT_LIB, + texte_court = subview.MAX_CPT_LIB + FROM + ( + SELECT CPT_CODE, (max(DISTINCT ARRAY[cpt_created::text, CPT_LIB]))[2] AS MAX_CPT_LIB + FROM PROD_WEB100T.CPT_COMPTES + GROUP BY 1 + ) AS subview + WHERE subview.CPT_CODE = code_original AND + ( + code IS DISTINCT FROM subview.CPT_CODE OR + texte IS DISTINCT FROM subview.MAX_CPT_LIB OR + texte_court IS DISTINCT FROM subview.MAX_CPT_LIB + ) + ; + + with last_libelle as ( + select + CPT_CODE, + (max(DISTINCT ARRAY[cpt_created::text, CPT_LIB]))[2] as CPT_LIB + from PROD_WEB100T.CPT_COMPTES + where CPT_TYPE = '1' + group by 1 + ) + UPDATE activite[PX].t_compte SET + texte = last_libelle.CPT_LIB, + texte_court = last_libelle.CPT_LIB + FROM last_libelle + WHERE 1=1 + AND t_compte.code = last_libelle.CPT_CODE + AND (1!=1 + OR texte IS DISTINCT FROM CPT_LIB + OR texte_court IS DISTINCT FROM CPT_LIB) + ; + + UPDATE activite[PX].t_compte + SET taux_tva = subview.taux_tva*100 + FROM + ( + SELECT CPT_CODE, (MAX(ARRAY[nb,ECR_TVA_TAUX]))[2]::numeric AS taux_tva + FROM + ( + SELECT CPT_CODE, ECR_TVA_TAUX, count(*) AS nb + FROM prod_web100t.CPT_ECRITURE + JOIN prod_web100t.CPT_COMPTES ON CPT_OID = ECR_COMPTE + WHERE ECR_TYPE LIKE 'PRODUIT%' + GROUP BY 1,2 + ) subview + GROUP BY 1 + ORDER BY 1 + ) subview + WHERE t_compte.code = CPT_CODE AND + subview.taux_tva <> 0 AND + subview.taux_tva <> 0 AND + t_compte.taux_tva = 0 + ; + + DROP TABLE IF EXISTS w_CPT_OP_LINK_source_agg; + CREATE TEMP TABLE w_CPT_OP_LINK_source_agg AS + SELECT LNK_OPERATION, + LNK_MASTER_OP + FROM w_CPT_OP_LINK_source + ; + + CREATE INDEX w_CPT_OP_LINK_source_agg_ik_LNK_MASTER_OP + ON w_CPT_OP_LINK_source_agg + USING btree + (LNK_MASTER_OP) + ; + + + DROP TABLE IF EXISTS w_CPT_OP_LINK_source; + + ]]> + + + + + + + + + + + '' THEN FLD_NOM ELSE TRIM(REPLACE(SGN_NMCL_DATA_COR.ND_LIB, FLD_PRENOM, '')) END || ' '|| FLD_PRENOM AS NMCL_CORRESPONDANT_OID2, + NULL::bigint[] AS COR_ID_array, + SGN_NMCL_DATA_COR.ND_CODE::text, + CASE WHEN FLD_NOM <> '' THEN trim(FLD_NOM) ELSE TRIM(REPLACE(SGN_NMCL_DATA_COR.ND_LIB, FLD_PRENOM, ''))::text END AS FLD_NOM, + FLD_PRENOM::text, + FLD_CODEADELI::text, + FLD_SPECIALITE, + FLD_CODERPPS, + COALESCE(SUBSTR(SGN_NMCL_DATA_SPE.ND_CODE,1,10),'')::text AS FLD_SPECIALITE_CODE, + row_number() OVER (PARTITION BY UPPER(CASE WHEN FLD_NOM <> '' THEN trim(FLD_NOM) ELSE TRIM(REPLACE(SGN_NMCL_DATA_COR.ND_LIB, FLD_PRENOM, '')) END), UPPER(trim(FLD_PRENOM)) ORDER BY MWS_NMCL_CORRESPONDANT.OID) AS rang, + 0::bigint AS specialite_id, + 0::bigint AS medecin_traitant_id + FROM prod_web100t.MWS_NMCL_CORRESPONDANT + JOIN prod_web100t.SGN_NMCL_DATA SGN_NMCL_DATA_COR ON SGN_NMCL_DATA_COR.ND_INVARIANT_OID = MWS_NMCL_CORRESPONDANT.OID + JOIN prod_web100t.SGN_NMCLS SGN_NMCLS_COR ON SGN_NMCL_DATA_COR.ND_NMCL_OID = SGN_NMCLS_COR.NMCL_OID AND SGN_NMCLS_COR.NMCL_IDENT = 'CORRESPONDANT' + LEFT JOIN prod_web100t.SGN_NMCL_DATA SGN_NMCL_DATA_SPE ON SGN_NMCL_DATA_SPE.ND_INVARIANT_OID = MWS_NMCL_CORRESPONDANT.FLD_SPECIALITE + LEFT JOIN prod_web100t.SGN_NMCLS SGN_NMCLS_SPE ON SGN_NMCL_DATA_SPE.ND_NMCL_OID = SGN_NMCLS_SPE.NMCL_OID AND SGN_NMCLS_SPE.NMCL_IDENT = 'SPECIALITE' + WHERE FLD_NOM <> '' OR SGN_NMCL_DATA_COR.ND_LIB <> '' + ; + + ANALYSE w_CORRESPONDANT + ; + + UPDATE w_CORRESPONDANT + SET COR_ID_array = subview.COR_ID_array + FROM + ( + SELECT UPPER(trim(COR_NOM)) AS COR_NOM, UPPER(trim(COR_PRENOM)) AS COR_PRENOM, base.cti_array_accum(COR_ID) AS COR_ID_array + FROM prod_web100t.CORRESPONDANTS + GROUP BY 1,2 + ) subview + WHERE COR_NOM ILIKE FLD_NOM AND + COR_PRENOM ILIKE FLD_PRENOM AND + rang = 1 + ; + + DROP TABLE IF EXISTS w_CORRESPONDANTS_ok; + CREATE TEMP TABLE w_CORRESPONDANTS_ok AS + SELECT unnest(COR_ID_array) AS COR_ID_ok + FROM w_CORRESPONDANT + WHERE rang = 1 + GROUP BY 1 + ; + + INSERT INTO w_CORRESPONDANT + SELECT + MAX('OLDCOR'::text || COR_ID) AS NMCL_CORRESPONDANT_OID, + MAX(CASE WHEN COR_CODE <> '' THEN COR_CODE ELSE COR_NOM || ' '|| COR_PRENOM END) AS NMCL_CORRESPONDANT_OID2, + base.cti_array_accum(COR_ID) AS COR_ID_array, + MAX(CASE WHEN COR_CODE <> '' THEN COR_CODE ELSE COR_NOM || ' '|| COR_PRENOM END) AS ND_CODE, + trim(COR_NOM) AS FLD_NOM, + trim(COR_PRENOM) AS FLD_PRENOM, + MAX(COR_ADELI) AS COR_ADELI, + 0::numeric AS FLD_SPECIALITE, + MAX(COR_RPPS) AS FLD_CODERPPS, + ''::text AS FLD_SPECIALITE_CODE, + 1::numeric AS rang, + 0::bigint AS specialite_id, + 0::bigint AS medecin_traitant_id + FROM prod_web100t.CORRESPONDANTS + LEFT JOIN w_CORRESPONDANTS_ok ON COR_ID = COR_ID_ok + WHERE COR_NOM <> '' AND + COR_ID_ok IS NULL + GROUP BY 5,6 + ; + + UPDATE w_CORRESPONDANT + SET specialite_id = t_specialites_medecin.oid + FROM base.t_specialites_medecin + WHERE FLD_SPECIALITE_CODE <> '' AND + t_specialites_medecin.code = (FLD_SPECIALITE_CODE||'..') AND + rang = 1 + ; + UPDATE w_CORRESPONDANT + SET specialite_id = t_specialites_medecin.oid + FROM base.t_specialites_medecin + WHERE FLD_SPECIALITE_CODE <> '' AND + specialite_id = 0 AND + t_specialites_medecin.code = (FLD_SPECIALITE_CODE)AND + rang = 1 + ; + + UPDATE activite[PX].t_medecins_traitants_administratifs SET + code_original = w_CORRESPONDANT.NMCL_CORRESPONDANT_OID + FROM w_CORRESPONDANT + LEFT JOIN activite[PX].t_medecins_traitants_administratifs t_medecins_traitants_administratifs_2 ON t_medecins_traitants_administratifs_2.code_original = NMCL_CORRESPONDANT_OID + WHERE t_medecins_traitants_administratifs_2.code_original IS NULL AND + t_medecins_traitants_administratifs.code_original = NMCL_CORRESPONDANT_OID2 AND + t_medecins_traitants_administratifs.code_original <> w_CORRESPONDANT.NMCL_CORRESPONDANT_OID + ; + + UPDATE activite[PX].t_medecins_traitants_administratifs SET + code = w_CORRESPONDANT.ND_CODE, + nom = w_CORRESPONDANT.FLD_NOM, + prenom = w_CORRESPONDANT.FLD_PRENOM, + no_rpps = CASE WHEN FLD_CODERPPS <> '' AND length(w_CORRESPONDANT.FLD_CODERPPS) = 11 THEN FLD_CODERPPS ELSE no_rpps END + FROM w_CORRESPONDANT + WHERE code_original = NMCL_CORRESPONDANT_OID AND + ( + code IS DISTINCT FROM w_CORRESPONDANT.ND_CODE OR + nom IS DISTINCT FROM w_CORRESPONDANT.FLD_NOM OR + prenom IS DISTINCT FROM w_CORRESPONDANT.FLD_PRENOM OR + no_rpps IS DISTINCT FROM w_CORRESPONDANT.FLD_CODERPPS AND w_CORRESPONDANT.FLD_CODERPPS <> '' AND length(w_CORRESPONDANT.FLD_CODERPPS) = 11 + ) + ; + + INSERT INTO activite[PX].t_medecins_traitants_administratifs(code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT NMCL_CORRESPONDANT_OID, NMCL_CORRESPONDANT_OID, min(FLD_NOM), min(FLD_PRENOM),min(COALESCE(t_specialites_medecin.oid,0)), 0 + FROM w_CORRESPONDANT + LEFT JOIN base.t_specialites_medecin ON (FLD_SPECIALITE::bigint = t_specialites_medecin.code_original) + WHERE rang = 1 AND + NMCL_CORRESPONDANT_OID NOT IN (SELECT code_original FROM activite[PX].t_medecins_traitants_administratifs) + GROUP BY 1, 2 + ; + + UPDATE w_CORRESPONDANT + SET medecin_traitant_id = t_medecins_traitants_administratifs.oid + FROM activite[PX].t_medecins_traitants_administratifs + WHERE t_medecins_traitants_administratifs.code_original = NMCL_CORRESPONDANT_OID + ; + + UPDATE w_CORRESPONDANT + SET medecin_traitant_id = t_medecins_traitants_administratifs.oid + FROM w_CORRESPONDANT w_CORRESPONDANT1 + JOIN activite[PX].t_medecins_traitants_administratifs ON + w_CORRESPONDANT1.rang = 1 AND + t_medecins_traitants_administratifs.code_original = w_CORRESPONDANT1.NMCL_CORRESPONDANT_OID + WHERE upper(w_CORRESPONDANT.FLD_NOM) = upper(w_CORRESPONDANT1.FLD_NOM) AND + upper(w_CORRESPONDANT.FLD_PRENOM) = upper(w_CORRESPONDANT1.FLD_PRENOM) AND + w_CORRESPONDANT.rang > 1 + ; + + + DROP TABLE IF EXISTS w_sejours; + CREATE TEMP TABLE w_sejours AS + SELECT no_sejour, + date_entree, + p_sejours.no_patient, + p_patients.nom, + ''::text AS no_patient_web100t, + ''::text AS nom_web100t, + 0::numeric AS PAT_MED_TRAITANT, + 0::bigint AS medecin_traitant_id + FROM activite[PX].p_sejours + JOIN activite[PX].p_patients ON p_sejours.no_patient = p_patients.no_patient + ; + + + + ANALYSE w_sejours + ; + + UPDATE w_sejours + SET no_patient_web100t = PAT_IPP, nom_web100T = PAT_NOM, PAT_MED_TRAITANT = PATIENTS.PAT_MED_TRAITANT + FROM prod_web100T.PATIENTS + WHERE lpad(no_patient,10,'0') = lpad(PAT_IPP,10,'0') AND PATIENTS.PAT_MED_TRAITANT <> 0 + ; + + ANALYSE w_sejours + ; + + UPDATE w_sejours + SET medecin_traitant_id = w_CORRESPONDANT.medecin_traitant_id + FROM w_CORRESPONDANT + WHERE PAT_MED_TRAITANT = NMCL_CORRESPONDANT_OID + ; + + DROP TABLE IF EXISTS w_CORRESPONDANTS_ok; + CREATE TEMP TABLE w_CORRESPONDANTS_ok AS + SELECT unnest(COR_ID_array) AS COR_ID_ok, MAX(medecin_traitant_id) AS medecin_traitant_id + FROM w_CORRESPONDANT + WHERE rang = 1 AND + medecin_traitant_id <> 0 + GROUP BY 1 + ; + + UPDATE w_sejours + SET medecin_traitant_id = w_CORRESPONDANTS_ok.medecin_traitant_id + FROM w_CORRESPONDANTS_ok + WHERE w_sejours.medecin_traitant_id = 0 AND + PAT_MED_TRAITANT = COR_ID_ok + ; + + + UPDATE activite[PX].p_sejours + SET medecin_traitant_id = w_sejours.medecin_traitant_id + FROM w_sejours + WHERE p_sejours.no_sejour = w_sejours.no_sejour AND + w_sejours.medecin_traitant_id <> 0 AND + p_sejours.medecin_traitant_id <> w_sejours.medecin_traitant_id + ; + + + -- ajout des coordonnées par séjour + INSERT INTO activite[PX].p_coordonnees_patient ( + sejour_id, + adresse, + code_postal_id, + commune, + telephone_fixe, + telephone_portable, + email + ) + SELECT + p_sejours.oid, + ADR_ADRESSE, + COALESCE(t_codes_postaux.oid,0), + ADR_COMMUNE, + ADR_TEL_1, + ADR_TEL_2, + ADR_EMAIL + FROM activite[PX].p_sejours + LEFT JOIN prod_web100t.DAT_DA w_DAT_DA ON code_original = DA_OID + LEFT JOIN prod_web100t.PATIENTS ON w_DAT_DA.DA_PATIENT = PATIENTS.PAT_ID + LEFT JOIN prod_web100t.ADRESSES ON PAT_ADRESSE = ADR_ID + LEFT JOIN base.t_codes_postaux ON ADR_CODE_POSTAL = t_codes_postaux.code + + ; + ]]> + + + '2099-12-31' THEN date_facture ELSE date_expedition_0 END AS date_expedition_0, + + CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END AS date_solde, + CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END AS date_solde_c, + CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '20991231' END AS date_solde_h, + CASE WHEN montant_comptabilise_0_c = 0 THEN '00010101' WHEN montant_comptabilise_0_c = montant_regle_0_c THEN date_solde_0_c ELSE '20991231' END AS date_solde_0_c, + CASE WHEN montant_comptabilise_0_h = 0 THEN '00010101' WHEN montant_comptabilise_0_h = montant_regle_0_h THEN date_solde_0_h ELSE '20991231' END AS date_solde_0_h, + CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END AS date_solde_1_c, + CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '20991231' END AS date_solde_1_h, + CASE WHEN montant_comptabilise_2_c = 0 THEN '00010101' WHEN montant_comptabilise_2_c = montant_regle_2_c THEN date_solde_2_c ELSE '20991231' END AS date_solde_2_c, + CASE WHEN montant_comptabilise_2_h = 0 THEN '00010101' WHEN montant_comptabilise_2_h = montant_regle_2_h THEN date_solde_2_h ELSE '20991231' END AS date_solde_2_h, + CASE WHEN montant_comptabilise_22_c = 0 THEN '00010101' WHEN montant_comptabilise_22_c = montant_regle_22_c THEN date_solde_22_c ELSE '20991231' END AS date_solde_22_c, + CASE WHEN montant_comptabilise_22_h = 0 THEN '00010101' WHEN montant_comptabilise_22_h = montant_regle_22_h THEN date_solde_22_h ELSE '20991231' END AS date_solde_22_h + FROM activite[PX].p_factures; + + UPDATE w_factures SET + date_solde = GREATEST(date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h), + date_solde_c = GREATEST(date_solde_0_c, date_solde_1_c, date_solde_2_c, date_solde_22_c), + date_solde_h = GREATEST(date_solde_0_h, date_solde_1_h, date_solde_2_h, date_solde_22_h) + WHERE + date_solde IS DISTINCT FROM GREATEST(date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h) OR + date_solde_c IS DISTINCT FROM GREATEST(date_solde_0_c, date_solde_1_c, date_solde_2_c, date_solde_22_c) OR + date_solde_h IS DISTINCT FROM GREATEST(date_solde_0_h, date_solde_1_h, date_solde_2_h, date_solde_22_h) ; + + CREATE INDEX w_factures_i1 + ON w_factures + USING btree + (no_facture); + + CREATE INDEX w_factures_i2 + ON w_factures + USING btree + (no_facture_reference); + + + + DROP TABLE IF EXISTS w_factures_references_soldes; + + CREATE TEMP TABLE w_factures_references_soldes AS + SELECT + no_facture_reference, + MAX(date_solde) AS date_solde_reference, + MAX(date_solde_c) AS date_solde_reference_c, + MAX(date_solde_h) AS date_solde_reference_h, + MAX(date_solde_0_c) AS date_solde_reference_0_c, + MAX(date_solde_0_h) AS date_solde_reference_0_h, + MAX(date_solde_1_c) AS date_solde_reference_1_c, + MAX(date_solde_1_h) AS date_solde_reference_1_h, + MAX(date_solde_2_c) AS date_solde_reference_2_c, + MAX(date_solde_2_h) AS date_solde_reference_2_h, + MAX(date_solde_22_c) AS date_solde_reference_22_c, + MAX(date_solde_22_h) AS date_solde_reference_22_h + FROM w_factures + GROUP BY no_facture_reference; + + + CREATE INDEX w_factures_references_soldes_i1 + ON w_factures_references_soldes + USING btree + (no_facture_reference); + + + + + UPDATE activite[PX].p_factures + SET + date_expedition_0 = w_factures.date_expedition_0, + date_solde = w_factures.date_solde, + date_solde_c = w_factures.date_solde_c, + date_solde_h = w_factures.date_solde_h, + date_solde_0_c = w_factures.date_solde_0_c, + date_solde_0_h = w_factures.date_solde_0_h, + date_solde_1_c = w_factures.date_solde_1_c, + date_solde_1_h = w_factures.date_solde_1_h, + date_solde_2_c = w_factures.date_solde_2_c, + date_solde_2_h = w_factures.date_solde_2_h, + date_solde_22_c = w_factures.date_solde_22_c, + date_solde_22_h = w_factures.date_solde_22_h, + date_solde_reference = w_factures_references_soldes.date_solde_reference, + date_solde_reference_c = w_factures_references_soldes.date_solde_reference_c, + date_solde_reference_h = w_factures_references_soldes.date_solde_reference_h, + date_solde_reference_0_c = w_factures_references_soldes.date_solde_reference_0_c, + date_solde_reference_0_h = w_factures_references_soldes.date_solde_reference_0_h, + date_solde_reference_1_c = w_factures_references_soldes.date_solde_reference_1_c, + date_solde_reference_1_h = w_factures_references_soldes.date_solde_reference_1_h, + date_solde_reference_2_c = w_factures_references_soldes.date_solde_reference_2_c, + date_solde_reference_2_h = w_factures_references_soldes.date_solde_reference_2_h, + date_solde_reference_22_c = w_factures_references_soldes.date_solde_reference_22_c, + date_solde_reference_22_h = w_factures_references_soldes.date_solde_reference_22_h + FROM w_factures + JOIN w_factures_references_soldes ON w_factures_references_soldes.no_facture_reference = w_factures.no_facture_reference + WHERE p_factures.no_facture = w_factures.no_facture + AND ( + p_factures.date_expedition_0 IS DISTINCT FROM w_factures.date_expedition_0 OR + p_factures.date_solde IS DISTINCT FROM w_factures.date_solde OR + p_factures.date_solde_c IS DISTINCT FROM w_factures.date_solde_c OR + p_factures.date_solde_h IS DISTINCT FROM w_factures.date_solde_h OR + p_factures.date_solde_0_c IS DISTINCT FROM w_factures.date_solde_0_c OR + p_factures.date_solde_0_h IS DISTINCT FROM w_factures.date_solde_0_h OR + p_factures.date_solde_1_c IS DISTINCT FROM w_factures.date_solde_1_c OR + p_factures.date_solde_1_h IS DISTINCT FROM w_factures.date_solde_1_h OR + p_factures.date_solde_2_c IS DISTINCT FROM w_factures.date_solde_2_c OR + p_factures.date_solde_2_h IS DISTINCT FROM w_factures.date_solde_2_h OR + p_factures.date_solde_22_c IS DISTINCT FROM w_factures.date_solde_22_c OR + p_factures.date_solde_22_h IS DISTINCT FROM w_factures.date_solde_22_h OR + p_factures.date_solde_reference IS DISTINCT FROM w_factures_references_soldes.date_solde_reference OR + p_factures.date_solde_reference_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_c OR + p_factures.date_solde_reference_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_h OR + p_factures.date_solde_reference_0_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_0_c OR + p_factures.date_solde_reference_0_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_0_h OR + p_factures.date_solde_reference_1_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_1_c OR + p_factures.date_solde_reference_1_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_1_h OR + p_factures.date_solde_reference_2_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_2_c OR + p_factures.date_solde_reference_2_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_2_h OR + p_factures.date_solde_reference_22_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_22_c OR + p_factures.date_solde_reference_22_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_22_h + ); + + + ]]> + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.date_groupage, + p_sejours.ghs_id, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour, + + 0::numeric AS delai_groupage, + 0::numeric AS delai_facture, + 0::numeric AS delai_expedition, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_solde_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_solde_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_solde_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_22 + + FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY 1,2,3,4,5; + + + UPDATE activite[PX].p_sejours + SET date_groupage = date_facture + WHERE (date_groupage IS null OR date_groupage = '20991231' OR date_groupage = '00010101') AND + date_facture <> '2099-12-31'; + + + UPDATE w_sejours_total SET + date_groupage = CASE WHEN date_groupage > '00010101' THEN date_groupage ELSE '20991231' END, + date_facture = CASE WHEN date_facture> '00010101' THEN date_facture ELSE '20991231' END, + date_expedition = CASE WHEN date_expedition > '00010101' THEN date_expedition ELSE '20991231' END, + date_solde = CASE WHEN date_solde > '00010101' THEN date_solde ELSE '20991231' END, + date_expedition_0 = CASE WHEN date_expedition_0 > '00010101' THEN date_expedition_0 ELSE '20991231' END, + date_solde_0 = CASE WHEN date_solde_0 > '00010101' THEN date_solde_0 ELSE '20991231' END, + date_expedition_1 = CASE WHEN date_expedition_1 > '00010101' THEN date_expedition_1 ELSE '20991231' END, + date_solde_1 = CASE WHEN date_solde_1 > '00010101' THEN date_solde_1 ELSE '20991231' END, + date_expedition_2 = CASE WHEN date_expedition_2 > '00010101' THEN date_expedition_2 ELSE '20991231' END, + date_solde_2 = CASE WHEN date_solde_2 > '00010101' THEN date_solde_2 ELSE '20991231' END, + date_expedition_22 = CASE WHEN date_expedition_22 > '00010101' THEN date_expedition_22 ELSE '20991231' END, + date_solde_22 = CASE WHEN date_solde_22 > '00010101' THEN date_solde_22 ELSE '20991231' END; + + + UPDATE w_sejours_total SET + delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END, + delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END, + delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END, + delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END, + delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END, + delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END, + delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END, + delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END, + delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END, + delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END, + delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END, + delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END; + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = w_sejours_total.date_expedition_0, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = w_sejours_total.date_expedition_1, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = w_sejours_total.date_expedition_2, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = w_sejours_total.date_expedition_22, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour, + + + delai_groupage = w_sejours_total.delai_groupage, + delai_facture = w_sejours_total.delai_facture, + delai_expedition = w_sejours_total.delai_expedition, + delai_solde = w_sejours_total.delai_solde, + delai_expedition_0 = w_sejours_total.delai_expedition_0, + delai_solde_0 = w_sejours_total.delai_solde_0, + delai_expedition_1 = w_sejours_total.delai_expedition_1, + delai_solde_1 = w_sejours_total.delai_solde_1, + delai_expedition_2 = w_sejours_total.delai_expedition_2, + delai_solde_2 = w_sejours_total.delai_solde_2, + delai_expedition_22 = w_sejours_total.delai_expedition_22, + delai_solde_22 = w_sejours_total.delai_solde_22 + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM w_sejours_total.date_expedition_0 OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM w_sejours_total.date_expedition_1 OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM w_sejours_total.date_expedition_2 OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM w_sejours_total.date_expedition_22 OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour OR + + p_sejours.delai_groupage IS DISTINCT FROM w_sejours_total.delai_groupage OR + p_sejours.delai_facture IS DISTINCT FROM w_sejours_total.delai_facture OR + p_sejours.delai_expedition IS DISTINCT FROM w_sejours_total.delai_expedition OR + p_sejours.delai_solde IS DISTINCT FROM w_sejours_total.delai_solde OR + p_sejours.delai_expedition_0 IS DISTINCT FROM w_sejours_total.delai_expedition_0 OR + p_sejours.delai_solde_0 IS DISTINCT FROM w_sejours_total.delai_solde_0 OR + p_sejours.delai_expedition_1 IS DISTINCT FROM w_sejours_total.delai_expedition_1 OR + p_sejours.delai_solde_1 IS DISTINCT FROM w_sejours_total.delai_solde_1 OR + p_sejours.delai_expedition_2 IS DISTINCT FROM w_sejours_total.delai_expedition_2 OR + p_sejours.delai_solde_2 IS DISTINCT FROM w_sejours_total.delai_solde_2 OR + p_sejours.delai_expedition_22 IS DISTINCT FROM w_sejours_total.delai_expedition_22 OR + p_sejours.delai_solde_22 IS DISTINCT FROM w_sejours_total.delai_solde_22 + + ); + + + ]]> + + + + + + + + + + + + + + diff --git a/import_activite/iCTI_import_activite_WEB100T2.XML b/import_activite/iCTI_import_activite_WEB100T2.XML new file mode 100644 index 0000000..3d281e2 --- /dev/null +++ b/import_activite/iCTI_import_activite_WEB100T2.XML @@ -0,0 +1,9975 @@ + + + + + + + + + + + + '1' + WHERE MVT_TYPE IN (1,4) AND + LIT_OID <> 0 AND + LIT_OID = MVT_LIT AND + CHA_UF <> MVT_UF_GEO; + + -- Unité de soin non renseignée -> attribution de l'unité géo + UPDATE w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + SET MVT_UF_SOIN = MVT_UF_GEO + WHERE MVT_UF_SOIN = 0 AND MVT_UF_GEO <> 0 AND MVT_TYPE IN (1,4); + + -- Unité geo non renseignée -> attribution de l'unité de soin + UPDATE w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + SET MVT_UF_GEO = MVT_UF_SOIN + WHERE MVT_UF_SOIN <> 0 AND MVT_UF_GEO = 0 AND MVT_TYPE IN (1,4); + + -- Pointage de mouvements en double + DROP TABLE IF EXISTS w_REGUL_MOUVEMENTS_double; + CREATE TEMP TABLE w_REGUL_MOUVEMENTS_double AS + SELECT MVT_SEJ_OID, MVT_DATE, + (MAX(ARRAY[MVT_INDEX,MVT_RESP]))[2] AS MVT_RESP, + (MAX(ARRAY[MVT_INDEX,MVT_UF_SOIN]))[2] AS MVT_UF_SOIN, + (MAX(ARRAY[MVT_INDEX,MVT_UF_GEO]))[2] AS MVT_UF_GEO, + (MAX(ARRAY[MVT_INDEX,MVT_CHAMBRE]))[2] AS MVT_CHAMBRE, + (MAX(ARRAY[MVT_INDEX,MVT_LIT]))[2] AS MVT_LIT, + MIN(MVT_OID) AS MVT_OID + FROM w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + WHERE MVT_TYPE IN (1,4) + GROUP BY 1,2 + HAVING count(*) > 1; + + UPDATE w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS SET + MVT_RESP = w_REGUL_MOUVEMENTS_double.MVT_RESP, + MVT_UF_SOIN = w_REGUL_MOUVEMENTS_double.MVT_UF_SOIN, + MVT_UF_GEO = w_REGUL_MOUVEMENTS_double.MVT_UF_GEO, + MVT_CHAMBRE = w_REGUL_MOUVEMENTS_double.MVT_CHAMBRE, + MVT_LIT = w_REGUL_MOUVEMENTS_double.MVT_LIT + FROM w_REGUL_MOUVEMENTS_double + WHERE REGUL_MOUVEMENTS.MVT_SEJ_OID = w_REGUL_MOUVEMENTS_double.MVT_SEJ_OID AND + REGUL_MOUVEMENTS.MVT_DATE = w_REGUL_MOUVEMENTS_double.MVT_DATE AND + REGUL_MOUVEMENTS.MVT_OID = w_REGUL_MOUVEMENTS_double.MVT_OID AND + REGUL_MOUVEMENTS.MVT_TYPE IN (1,4); + + UPDATE w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS SET + MVT_TYPE = 49 + FROM w_REGUL_MOUVEMENTS_double + WHERE REGUL_MOUVEMENTS.MVT_SEJ_OID = w_REGUL_MOUVEMENTS_double.MVT_SEJ_OID AND + REGUL_MOUVEMENTS.MVT_DATE = w_REGUL_MOUVEMENTS_double.MVT_DATE AND + REGUL_MOUVEMENTS.MVT_OID <> w_REGUL_MOUVEMENTS_double.MVT_OID AND + REGUL_MOUVEMENTS.MVT_TYPE IN (1,4); + + -- UF selon mode de calcul PMSI (Cas des retrocessions,FSD,FFM) + DROP TABLE IF EXISTS w_DIM_MODE_FACT_default + ; + CREATE TEMP TABLE w_DIM_MODE_FACT_default AS + SELECT DA_DIM_MODE_FACT, + MAX(NMCL_UNITEFONCTIONNELLE.OID::bigint) AS UF_OID, + count(*) + FROM prod_web100t2.NMCL_UNITEFONCTIONNELLE + JOIN w_SGN_NMCL_DATA ON ND_INVARIANT_OID = OID + JOIN prod_web100t2.DAT_DA ON + DA_DIM_MODE_FACT IN ('FSE','FSD','FFM','RETRO') AND + DA_DIM_MODE_FACT = ND_CODE + WHERE NMCL_IDENT = 'UNITEFONCTIONNELLE' + GROUP BY 1 + ; + + ANALYSE w_DIM_MODE_FACT_default + ; + + UPDATE w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + SET MVT_UF_SOIN = UF_OID + FROM prod_web100t2.DAT_SEJOUR + JOIN prod_web100t2.DAT_DA ON SEJ_DA = DA_OID + JOIN w_DIM_MODE_FACT_default ON w_DIM_MODE_FACT_default.DA_DIM_MODE_FACT = DAT_DA.DA_DIM_MODE_FACT + WHERE PHASE_OID = MVT_SEJ_OID AND + MVT_TYPE IN (1,2,4) AND + MVT_UF_SOIN = 0 + ; + + UPDATE w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + SET MVT_UF_SOIN = UF_OID + FROM prod_web100t2.DAT_SEJOUR + JOIN prod_web100t2.DAT_DA ON SEJ_DA = DA_OID + JOIN w_DIM_MODE_FACT_default ON w_DIM_MODE_FACT_default.DA_DIM_MODE_FACT = DAT_DA.DA_SUGG_MODE_FACT + WHERE PHASE_OID = MVT_SEJ_OID AND + MVT_TYPE IN (1,2,4) AND + MVT_UF_SOIN = 0 + ; + + -- Statut séjour présent alors que facturé depuis plus de 6 mois + UPDATE prod_web100t2.DAT_DA + SET DA_STATUT = '3' + WHERE DA_DATE_FIN <= now() - interval '2 month' AND + DA_DATE_FIN >= DA_DATE_DEBUT AND + DA_STATUT = 2 AND + DA_DIM_VALID <= now() - interval '2 month' AND + DA_OID = ANY (ARRAY(SELECT DISTINCT FACT_DA FROM prod_web100t2.FAC_FACTURE WHERE FACT_DATE <= now() - interval '2 month')::double precision[]) + ; + + -- Sejour ambulatoire présent à convertir en sorti + UPDATE prod_web100t2.DAT_DA SET + DA_STATUT = CASE WHEN DA_STATUT < 3 THEN 3 ELSE DA_STATUT END, + DA_DATE_FIN = DA_DATE_DEBUT, + DA_HEURE_FIN = LEAST(DA_HEURE_DEBUT + 0.2,0.9) + WHERE + DA_STATUT >= 2 AND + DA_CLASSE IN (2,3) AND + DA_DATE_FIN IS NULL + ; + + -- Forcage code prestation + UPDATE prod_web100t2.FAC_FACT_LIGNE_TIER SET + FLT_CODE_PREST = t_prestations.code + FROM activite[PX].t_rubriques_facturation + JOIN activite.t_prestations ON prestation_forcee_id = t_prestations.oid AND prestation_forcee_id <> 0 + WHERE FLT_ARTICLE::text = t_rubriques_facturation.code_original + ; + + + -- Placer l'heure dans les lignes d'actes + -- Parametre car trop long sur certains sites (CCN) + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'WEB100T_INITHEUREACTE', + 'Recuperation heures des actes', + '1', + '1=Les heures des actes son recuperees' + WHERE 'WEB100T_INITHEUREACTE' NOT IN (SELECT code FROM activite.t_divers); + ; + + -- en attendant de trouver la bonnjointure + DROP TABLE IF EXISTS w_heures_actes; + CREATE TEMP TABLE w_heures_actes AS + SELECT PREST_DA, + PREST_ARTICLE, + ART_CODE, + PREST_EXECUTANT, + DATE(PREST_DATE_DEBUT) AS PREST_DATE, + MAX(PREST_DATE_DEBUT-date(PREST_DATE_DEBUT)) AS PREST_HEURE, + count(DISTINCT date_part('hour',PREST_DATE_DEBUT)) AS nb_heure + FROM prod_web100t2.DAT_PRESTATIONS_GAP + JOIN activite.t_divers ON t_divers.code = 'WEB100T_INITHEUREACTE' + JOIN prod_web100t2.ART_ARTICLES ON PREST_ARTICLE = ART_OID + WHERE + t_divers.valeur = '1' AND + PREST_DELETED <> 1 AND + PREST_EXECUTANT > 0 AND + PREST_DATE_DEBUT <> date(PREST_DATE_DEBUT) + GROUP BY 1,2,3,4,5 + ; + + ANALYSE w_heures_actes + ; + + UPDATE prod_web100t2.FAC_FACT_LIGNE_TIER + SET FLT_DATE_DEBUT = date_trunc('day',FLT_DATE_DEBUT) + PREST_HEURE + FROM prod_web100t2.FAC_FACTURE, + w_heures_actes + WHERE FLT_FACTURE = FAC_FACTURE.FACT_OID AND + FACT_DA = PREST_DA AND + FLT_ARTICLE = PREST_ARTICLE AND + date(FLT_DATE_DEBUT) = PREST_DATE AND + FLT_INTERVENANT = PREST_EXECUTANT + ; + + -- Date de règlement selon ecritures comptable + UPDATE prod_web100t2.FAC_REGLEMENTS + SET FR_DATE_ENC = ECR_DATE + FROM prod_web100t2.FAC_RGLMT_DETAILS + JOIN w_CPT_ECRITURE_source ON RD_COMPTA = ECR_OPERATION + WHERE FR_OID = RD_REGLEMENT AND + FR_DATE_ENC IS NULL AND + FR_DATE_DEPOT_GUESS IS NOT NULL AND + ECR_REF_TYPE = 'FACTURE' AND + ECR_TYPE = 'CLIENT' + ; + + DROP TABLE IF EXISTS w_max_ECR_UPDATED; + CREATE TEMP TABLE w_max_ECR_UPDATED AS + SELECT MAX(ECR_UPDATED) AS ECR_UPDATED_MAX FROM w_CPT_ECRITURE_source + ; + + DROP TABLE IF EXISTS w_CPT_ECRITURE_source; + + -- Pour identification de la deuxième mutuelle + UPDATE prod_web100t2.FAC_FACT_TIER + SET FT_TYPE_TIER = 'AMD' + FROM + ( + SELECT FT_FACTURE, + (MIN(ARRAY[abs(ft_total_ets+ft_total_ho),FT_ORGANISME]))[2]::numeric AS FT_ORGANISME_AMD + FROM prod_web100t2.FAC_FACT_TIER + WHERE FT_TYPE_TIER = 'AMC' + GROUP BY 1 + HAVING count(DISTINCT FT_ORGANISME) > 1 + ) subview + WHERE FAC_FACT_TIER.FT_FACTURE = subview.FT_FACTURE AND + FAC_FACT_TIER.FT_ORGANISME = subview.FT_ORGANISME_AMD + ; + + -- Identification des honoraires directs selon compta + DROP TABLE IF EXISTS w_FAC_RGLMT_DETAILS_FACT_LINE; + CREATE TEMP TABLE w_FAC_RGLMT_DETAILS_FACT_LINE AS + SELECT RD_FACT_LINE + FROM prod_web100t2.FAC_RGLMT_DETAILS + WHERE RD_ETS = 0 + GROUP BY 1 + ; + + ANALYSE w_FAC_RGLMT_DETAILS_FACT_LINE + ; + + DROP TABLE IF EXISTS w_FAC_FACT_LIGNE_TIER; + CREATE TEMP TABLE w_FAC_FACT_LIGNE_TIER AS + SELECT *, + CASE WHEN FLT_IS_DIRECT <> 1 THEN FLT_TOTAL_TTC ELSE 0 END AS FLT_TOTAL_TTC_comptable, + CASE WHEN RD_FACT_LINE IS NULL THEN '0' ELSE '1' END AS QRGMT + FROM prod_web100t2.FAC_FACT_LIGNE_TIER + JOIN prod_web100t2.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN prod_web100t2.FAC_FACTURE ON FLT_FACTURE = FACT_OID + LEFT JOIN w_FAC_RGLMT_DETAILS_FACT_LINE ON RD_FACT_LINE = FLT_OID + WHERE FLT_IS_ETS = 0 AND + ( + SELECT count(*) + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t2.CPT_COMPTES ON CPT_OID = ECR_COMPTE + WHERE ECR_IS_ETS = 0 AND + LNK_JOURNAL = 'VE' AND + (CPT_CODE LIKE '411%' OR CPT_CODE LIKE '412%') + ) > 0 + ; + + ANALYSE w_FAC_FACT_LIGNE_TIER + ; + + -- Ajout colonne si absente de prod_web100t2 + SELECT base.cti_execute('ALTER TABLE w_FAC_FACT_LIGNE_TIER ADD COLUMN FLT_PRED_LIGNE bigint',1) + WHERE 'flt_pred_ligne' NOT IN (SELECT column_name FROM information_schema.columns WHERE table_name = 'w_fac_fact_ligne_tier') + ; + + + -- reporter indicateur vente directe dans avoir depuis facture initiale + UPDATE w_FAC_FACT_LIGNE_TIER FAC_FACT_LIGNE_TIER SET + FLT_IS_DIRECT = FAC_FACT_LIGNE_TIER2.FLT_IS_DIRECT, + FLT_TOTAL_TTC_comptable = CASE WHEN FAC_FACT_LIGNE_TIER2.FLT_IS_DIRECT <> 1 THEN FAC_FACT_LIGNE_TIER.FLT_TOTAL_TTC ELSE 0 END + FROM w_FAC_FACT_LIGNE_TIER FAC_FACT_LIGNE_TIER2 + WHERE FAC_FACT_LIGNE_TIER.FLT_PRED_LIGNE = FAC_FACT_LIGNE_TIER2.FLT_OID AND + FAC_FACT_LIGNE_TIER.FLT_TOTAL_TTC < 0 AND + FAC_FACT_LIGNE_TIER.FLT_IS_ETS = 0 AND + FAC_FACT_LIGNE_TIER.FLT_IS_DIRECT <> FAC_FACT_LIGNE_TIER2.FLT_IS_DIRECT + ; + + + -- Honoraires directs comptabilisés ? + DROP TABLE IF EXISTS w_ECR_vente_hon; + CREATE TEMP TABLE w_ECR_vente_hon AS + SELECT FT_OID, FACT_NUMERO, MAX(FT_TOTAL_HO) AS FT_TOTAL_HO + + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t2.CPT_COMPTES ON CPT_OID = ECR_COMPTE + JOIN prod_web100t2.FAC_FACT_TIER ON ECR_REF_FTIERS = FT_OID + JOIN prod_web100t2.FAC_FACTURE ON FT_FACTURE = FACT_OID + WHERE ECR_IS_ETS = 0 AND + LNK_JOURNAL = 'VE' AND + (CPT_CODE LIKE '411%' OR CPT_CODE LIKE '412%') + GROUP BY 1,2 + HAVING MAX(FT_TOTAL_HO) = SUM(ECR_DEBIT-ECR_CREDIT) + ; + + UPDATE w_FAC_FACT_LIGNE_TIER FAC_FACT_LIGNE_TIER + SET FLT_IS_DIRECT = + CASE + WHEN FLT_FACTURE IN ( + SELECT ECR_REF_FACT + FROM w_CPT_ECRITURE_source_OP_LINK + WHERE ECR_TYPE = 'VENTE-DIRECTE' + ) THEN -1 + WHEN QRGMT = '0' THEN -1 + ELSE 0 END, + FLT_TOTAL_TTC_comptable = FLT_TOTAL_TTC + WHERE FLT_FACTURE_TIER = + ANY( + SELECT w_ECR_vente_hon.FT_OID + FROm w_ECR_vente_hon + LEFT JOIN w_FAC_FACT_LIGNE_TIER ON + FLT_FACTURE_TIER = w_ECR_vente_hon.FT_OID AND + FLT_IS_ETS = 0 + GROUP BY 1 + HAVING round(MAX(w_ECR_vente_hon.FT_TOTAL_HO)::numeric,2) = round(SUM(FLT_TOTAL_TTC)::numeric,2) + ) AND + FLT_IS_DIRECT = 1 + ; + + + + DROP TABLE IF EXISTS w_FLT_INTERVENANT; + CREATE TEMP TABLE w_FLT_INTERVENANT AS + WITH vente_directe AS ( + SELECT ECR_REF_FACT + FROM w_CPT_ECRITURE_source_OP_LINK + WHERE ECR_TYPE = 'VENTE-DIRECTE' + ), + journal_vente AS ( + SELECT ECR_REF_FACT + FROM w_CPT_ECRITURE_source_OP_LINK + WHERE LNK_JOURNAL = 'VE' + ) + SELECT FLT_FACTURE, + FACT_NUMERO, + FT_TYPE_TIER, + FLT_INTERVENANT, + round(SUM(FLT_TOTAL_TTC)::numeric,2) AS FLT_TOTAL_TTC, + round(SUM(FLT_TOTAL_TTC_comptable)::numeric,2) AS FLT_TOTAL_TTC_comptable + FROM w_FAC_FACT_LIGNE_TIER FAC_FACT_LIGNE_TIER + LEFT JOIN vente_directe ON vente_directe.ECR_REF_FACT = FLT_FACTURE + LEFT JOIN journal_vente ON journal_vente.ECR_REF_FACT = FLT_FACTURE + WHERE FLT_IS_ETS = 0 AND + FLT_IS_DIRECT >= 0 AND + ( + journal_vente.ECR_REF_FACT IS NOT NULL + OR date(FACT_DATE) <= (SELECT date(MAX(ECR_DATE)) FROM w_CPT_ECRITURE_source_OP_LINK WHERE ECR_LOCKED = 1) + ) + AND vente_directe.ECR_REF_FACT IS NULL + GROUP BY 1,2,3,4 + ; + + ANALYSE w_FLT_INTERVENANT + ; + + DROP TABLE IF EXISTS w_ECR_INTERVENANT; + CREATE TEMP TABLE w_ECR_INTERVENANT AS + SELECT ECR_REF_FACT, + FACT_NUMERO, + CASE + WHEN ECR_DETAILS LIKE '%AMO%' THEN 'AMO'::text + WHEN ECR_DETAILS LIKE '%AMC%' THEN 'AMC'::text + WHEN ECR_DETAILS LIKE '%CLI%' THEN 'CLI'::text + WHEN ECR_DETAILS LIKE '%Part client%' THEN 'CLI'::text + ELSE '???' END AS ECR_TYPE_TIER, + CASE WHEN CPT_REF_TYPE = 'PRATICIEN' THEN CPT_REF ELSE -1 END AS CPT_REF, + round(SUM(ECR_CREDIT-ECR_DEBIT)::numeric,2) AS ECR_MONTANT + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t2.FAC_FACTURE ON ECR_REF_FACT = FACT_OID + JOIN prod_web100t2.CPT_COMPTES ON CPT_OID = ECR_COMPTE + WHERE ECR_IS_ETS = 0 AND + LNK_JOURNAL = 'VE' AND + (CPT_REF_TYPE = 'PRATICIEN' OR CPT_CODE LIKE '466%' OR CPT_CODE LIKE '4781%' OR (CPT_REF_TYPE = '' AND CPT_CODE IN ( + SELECT CPT_CODE + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t2.FAC_FACTURE ON ECR_REF_FACT = FACT_OID + JOIN prod_web100t2.CPT_COMPTES ON CPT_OID = ECR_COMPTE + WHERE ECR_IS_ETS = 0 AND LNK_JOURNAL = 'VE' AND CPT_REF_TYPE != '' + GROUP BY 1 + HAVING COUNT(DISTINCT CPT_REF_TYPE) = 1 + AND MIN(CPT_REF_TYPE) = 'PRATICIEN' + ))) + GROUP BY 1,2,3,4 + ; + + ANALYSE w_ECR_INTERVENANT + ; + + DROP TABLE IF EXISTS w_FLT_INTERVENANT_compta; + CREATE TEMP TABLE w_FLT_INTERVENANT_compta AS + SELECT FLT_FACTURE, FT_TYPE_TIER, FLT_INTERVENANT + FROM w_FLT_INTERVENANT + LEFT JOIN w_ECR_INTERVENANT ON + FLT_FACTURE = ECR_REF_FACT AND + FT_TYPE_TIER = ECR_TYPE_TIER AND + FLT_INTERVENANT = CPT_REF + WHERE FLT_TOTAL_TTC_comptable <> COALESCE(ECR_MONTANT,0) AND + FLT_TOTAL_TTC = COALESCE(ECR_MONTANT,0) + GROUP BY 1,2,3 + ; + + ANALYSE w_FLT_INTERVENANT_compta + ; + + UPDATE w_FAC_FACT_LIGNE_TIER SET + FLT_TOTAL_TTC_comptable = FLT_TOTAL_TTC + FROM w_FLT_INTERVENANT_compta + WHERE w_FAC_FACT_LIGNE_TIER.FLT_FACTURE = w_FLT_INTERVENANT_compta.FLT_FACTURE AND + w_FAC_FACT_LIGNE_TIER.FT_TYPE_TIER = w_FLT_INTERVENANT_compta.FT_TYPE_TIER AND + w_FAC_FACT_LIGNE_TIER.FLT_INTERVENANT = w_FLT_INTERVENANT_compta.FLT_INTERVENANT AND + FLT_IS_DIRECT = 1 + ; + + DROP TABLE IF EXISTS w_FLT_INTERVENANT_compta; + CREATE TEMP TABLE w_FLT_INTERVENANT_compta AS + SELECT FLT_FACTURE, FT_TYPE_TIER, FLT_INTERVENANT + FROM w_FLT_INTERVENANT + LEFT JOIN w_ECR_INTERVENANT ON + FLT_FACTURE = ECR_REF_FACT AND + FT_TYPE_TIER = ECR_TYPE_TIER AND + (FLT_INTERVENANT = CPT_REF OR CPT_REF = -1) + WHERE FLT_TOTAL_TTC_comptable <> COALESCE(ECR_MONTANT,0) AND + COALESCE(ECR_MONTANT,0) = 0 + GROUP BY 1,2,3 + ORDER BY 1,2,3 + ; + + ANALYSE w_FLT_INTERVENANT_compta + ; + + UPDATE w_FAC_FACT_LIGNE_TIER SET + FLT_TOTAL_TTC_comptable = 0 + FROM w_FLT_INTERVENANT_compta + WHERE w_FAC_FACT_LIGNE_TIER.FLT_FACTURE = w_FLT_INTERVENANT_compta.FLT_FACTURE AND + w_FAC_FACT_LIGNE_TIER.FT_TYPE_TIER = w_FLT_INTERVENANT_compta.FT_TYPE_TIER AND + w_FAC_FACT_LIGNE_TIER.FLT_INTERVENANT = w_FLT_INTERVENANT_compta.FLT_INTERVENANT AND + FLT_TOTAL_TTC_comptable <> 0 + ; + + UPDATE w_FAC_FACT_LIGNE_TIER + SET FLT_IS_DIRECT = 1 + WHERE FLT_IS_DIRECT = 0 AND FLT_TOTAL_TTC_comptable = 0 + ; + + UPDATE w_FAC_FACT_LIGNE_TIER + SET FLT_IS_DIRECT = CASE WHEN QRGMT = '0' THEN -1 ELSE 0 END + WHERE FLT_IS_DIRECT = 1 AND FLT_TOTAL_TTC_comptable <> 0 + ; + + UPDATE prod_web100t2.FAC_FACT_LIGNE_TIER + SET FLT_IS_DIRECT = w_FAC_FACT_LIGNE_TIER.FLT_IS_DIRECT + FROM w_FAC_FACT_LIGNE_TIER + WHERE w_FAC_FACT_LIGNE_TIER.FLT_OID = FAC_FACT_LIGNE_TIER.FLT_OID AND + w_FAC_FACT_LIGNE_TIER.FLT_IS_DIRECT <> FAC_FACT_LIGNE_TIER.FLT_IS_DIRECT + ; + + + -- Forçage des prestations comptabilisees clinique en facture clinique + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'WEB100T_FORCEPRESTA_ETSB24', + 'Forçage des prestations comptabilisees clinique en facture clinique', + '0', + '1=Les prestations établissements avec type B2 = 4 sont forcées en facturation établissement' + WHERE 'WEB100T_FORCEPRESTA_ETSB24' NOT IN (SELECT code FROM activite.t_divers); + ; + + UPDATE prod_web100t2.FAC_FACT_LIGNE + SET LI_TYPE_B2 = '3' + FROM prod_web100t2.FAC_FACT_LIGNE_TIER, + activite.t_divers + WHERE FLT_LIGNE_FACTURE = LI_OID AND + FLT_IS_ETS = '1' AND + LI_TYPE_B2 = '4' AND + t_divers.code = 'WEB100T_FORCEPRESTA_ETSB24' AND + t_divers.valeur = '1' + ; + + + ]]> + + + + '' AND + (DA_DATE_FIN >= '[ENV_ADM_ANNEEDEBUT]0101' OR DA_DATE_FIN IS NULL); + + + UPDATE w_DAT_DA + SET CTI_OK = 'O' + WHERE CTI_OK <> 'O' AND + DA_OID = ANY (ARRAY (SELECT DISTINCT FACT_DA FROM prod_web100t2.FAC_FACTURE)); + + + -- Séjours cloturés sans facture à supprimer (fausses venues) + UPDATE w_DAT_DA + SET CTI_OK = 'N' + WHERE CTI_OK = 'O' AND + DA_STATUT = 4 AND + DA_OID = ANY (ARRAY (SELECT DISTINCT DA_OID FROM w_DAT_DA LEFT JOIN prod_web100t2.FAC_FACTURE ON FACT_DA = DA_OID WHERE FACT_DA IS NULL)) + ; + + -- Séances (séjours avec plusieurs jour - préparés à l'avance) sans prestation saisie ni facture + + DROP TABLE IF EXISTS w_exclude_da; + CREATE TEMP TABLE w_exclude_da AS + ( + SELECT + DISTINCT PREST_DA AS exclude_da + FROM + prod_web100t2.DAT_PRESTATIONS_GAP + WHERE 1=1 + AND PREST_DELETED = 0 + AND PREST_DATE_DEBUT >= '[ENV_ADM_ANNEEDEBUT]0101'::timestamp without time zone + ) + UNION + ( + SELECT + DISTINCT FACT_DA AS exclude_da + FROM + prod_web100t2.FAC_FACTURE + WHERE + FACT_DATE >= '[ENV_ADM_ANNEEDEBUT]0101'::timestamp without time zone + ); + + UPDATE w_DAT_DA + SET CTI_OK = 'N' + WHERE CTI_OK = 'O' AND + DA_STATUT IN ('3','4') AND + DA_CLASSE = '4' AND + date(DA_DATE_FIN) > date(DA_DATE_DEBUT) AND + DA_OID != ALL (ARRAY(SELECT exclude_da FROM w_exclude_da)::double precision[]) + ; + UPDATE w_DAT_DA + SET CTI_OK = 'N' + WHERE CTI_OK = 'O' AND + DA_STATUT NOT IN ('3','4') AND + DA_CLASSE = '4' AND + DA_OID != ALL (ARRAY(SELECT exclude_da FROM w_exclude_da)::double precision[]) AND + date(DA_DATE_DEBUT) < date(now() - interval '7 day') + ; + + DROP TABLE w_exclude_da; + + -- Enlever les dossiers trop anciens + UPDATE w_DAT_DA + SET CTI_OK = 'N' + FROM + ( + SELECT FACT_DA, + SUM(FT_TOTAL), + SUM(RD_TOTAL), + MAX(FACT_DATE), + MAX(FR_DATE_ENC) + FROM + ( + SELECT FACT_DA, + FT_OID, + MAX(FT_TOTAL_ETS+FT_TOTAL_HO) AS FT_TOTAL, + SUM(RD_MONTANT) AS RD_TOTAL, + date(MAX(FACT_DATE)) AS FACT_DATE, + date(MAX(GREATEST(RD_DATE,FR_DATE_ENC))) AS FR_DATE_ENC + FROM prod_web100t2.FAC_FACTURE + JOIN W_DAT_DA ON FACT_DA = DA_OID AND + CTI_OK = 'O' AND + DA_STATUT IN ('3','4') AND + DA_DATE_FIN <= '[ENV_ADM_ANNEEDEBUT]0101' + LEFT JOIN prod_web100t2.FAC_FACT_TIER ON FACT_OID = FT_FACTURE + LEFT JOIN prod_web100t2.FAC_RGLMT_DETAILS ON RD_FACT_TIER = FT_OID + LEFT JOIN prod_web100t2.FAC_REGLEMENTS ON FR_OID = RD_REGLEMENT + GROUP BY 1,2 + ) subview + GROUP BY 1 + HAVING round(SUM(FT_TOTAL)::numeric,2) = round(SUM(RD_TOTAL)::numeric,2) AND + MAX(FACT_DATE) < '[ENV_ADM_ANNEEDEBUT]0101' AND + MAX(FR_DATE_ENC) < '[ENV_ADM_ANNEEDEBUT]0101' + ) subview + WHERE FACT_DA = DA_OID + ; + + -- Identification séjour suspndus/annulés/refusés + DROP TABLE IF EXISTS w_REGUL_PHASES + ; + CREATE TEMP TABLE w_REGUL_PHASES AS + SELECT RPH_SEJOUR_OID, + (MAX(ARRAY[RPH_MODIFIED::text, RPH_ETAT::text]))[2]::numeric AS RPH_ETAT, + MAX(RPH_MODIFIED) AS RPH_MODIFIED + FROM prod_web100t2.REGUL_PHASES + GROUP BY 1 + ; + + ANALYSE w_REGUL_PHASES + ; + + UPDATE w_DAT_DA SET + CTI_OK = 'O', + RPH_ETAT = w_REGUL_PHASES.RPH_ETAT, + RPH_MODIFIED = w_REGUL_PHASES.RPH_MODIFIED + FROM w_REGUL_PHASES + WHERE PHASE_OID = RPH_SEJOUR_OID AND + w_REGUL_PHASES.RPH_ETAT IN (6,7,8) AND + DA_DATE_DEBUT >= '[ENV_ADM_ANNEEDEBUT]0101' AND + CTI_OK = 'N' + ; + + + DELETE FROM w_DAT_DA + WHERE CTI_OK <> 'O'; + + + UPDATE w_DAT_DA + SET SEJ_NO_ENTREE = 'W' || DA_OID + WHERE SEJ_NO_ENTREE = ''; + + + UPDATE w_DAT_DA + SET DA_DATE_FIN = date(MVT_DATE_DAY), DA_HEURE_FIN = MVT_DATE_HOUR + FROM w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + WHERE DA_DATE_FIN IS NULL AND + PHASE_OID = MVT_SEJ_OID AND + DA_STATUT IN (3,4) AND + MVT_TYPE = 2; + + -- Sejours en double (Analyser différence entre DA_NUMERO et SEJ_NO_ENTREE) + SELECT base.cti_execute(' + DELETE + FROM w_DAT_DA + USING + (SELECT DA_OID, (MAX(ARRAY[to_char(999-SEJ_NBRE_BB,''FM999'')::text || to_char(PHASE_OID,''FM999999999999'')::text,SEJ_NO_ENTREE::text]))[2] AS SEJ_NO_ENTREE FROM w_DAT_DA WHERE CTI_OK = ''O'' GROUP BY 1 HAVING COUNT(*) > 1) subview + WHERE w_DAT_DA.DA_OID = subview.DA_OID AND w_DAT_DA.SEJ_NO_ENTREE = subview.SEJ_NO_ENTREE AND SEJ_NBRE_BB > 0',20); + + -- Sejours en double (Analyser différence entre DA_NUMERO et SEJ_NO_ENTREE) + SELECT base.cti_execute(' + DELETE + FROM w_DAT_DA + USING + (SELECT DA_OID, (MAX(ARRAY[to_char(999-SEJ_NBRE_BB,''FM999'')::text || to_char(PHASE_OID,''FM999999999999'')::text,SEJ_NO_ENTREE::text]))[2] AS SEJ_NO_ENTREE FROM w_DAT_DA WHERE CTI_OK = ''O'' GROUP BY 1 HAVING COUNT(*) > 1) subview + WHERE w_DAT_DA.DA_OID = subview.DA_OID AND w_DAT_DA.SEJ_NO_ENTREE = subview.SEJ_NO_ENTREE',20); + + -- Sejours en double (Suffixer no sejour pour le reste) + SELECT base.cti_execute(' + UPDATE w_DAT_DA + SET DA_NUMERO = w_DAT_DA.DA_NUMERO || ''_'' || nb::text + FROM ( + SELECT DA_NUMERO, MAX(DA_OID) AS DA_OID, count(*) AS nb + FROM w_DAT_DA + WHERE DA_NUMERO IN ( + SELECT da_numero + FROM w_DAT_DA + GROUP BY 1 + HAVING count(*) > 1) AND + SEJ_NO_ENTREE <> DA_NUMERO + GROUP BY 1) subview + WHERE w_DAT_DA.DA_OID = subview.DA_OID' + ,20); + + + SELECT base.cti_execute(' + UPDATE w_DAT_DA + SET DA_NUMERO = w_DAT_DA.DA_NUMERO || ''_'' || nb::text + FROM ( + SELECT DA_NUMERO, MAX(DA_OID) AS DA_OID, count(*) AS nb + FROM w_DAT_DA + WHERE DA_NUMERO IN ( + SELECT da_numero + FROM w_DAT_DA + GROUP BY 1 + HAVING count(*) > 1) + GROUP BY 1) subview + WHERE w_DAT_DA.DA_OID = subview.DA_OID' + ,20); + + VACUUM ANALYSE w_DAT_DA; + + + + -- Si mouvement d'entrée sans lit, prendre le lit suivant (si même UF) + DROP TABLE IF EXISTS w_REGUL_MOUVEMENTS_lit_entree; + CREATE TEMP TABLE w_REGUL_MOUVEMENTS_lit_entree AS + SELECT w_REGUL_MOUVEMENTS_source.MVT_OID, MAX(w_REGUL_MOUVEMENTS_source.MVT_SEJ_OID) AS MVT_SEJ_OID, + (MIN(ARRAY[w_REGUL_MOUVEMENTS_source_2.MVT_INDEX, w_REGUL_MOUVEMENTS_source_2.MVT_CHAMBRE]))[2] AS MVT_CHAMBRE, + (MIN(ARRAY[w_REGUL_MOUVEMENTS_source_2.MVT_INDEX, w_REGUL_MOUVEMENTS_source_2.MVT_LIT]))[2] AS MVT_LIT + FROM w_REGUL_MOUVEMENTS_source + JOIN w_DAT_DA ON PHASE_OID = w_REGUL_MOUVEMENTS_source.MVT_SEJ_OID + JOIN w_REGUL_MOUVEMENTS_source w_REGUL_MOUVEMENTS_source_2 ON + w_REGUL_MOUVEMENTS_source.MVT_SEJ_OID = w_REGUL_MOUVEMENTS_source_2.MVT_SEJ_OID AND + w_REGUL_MOUVEMENTS_source_2.MVT_INDEX > w_REGUL_MOUVEMENTS_source.MVT_INDEX AND + w_REGUL_MOUVEMENTS_source_2.MVT_TYPE IN (1,2,4) + WHERE + w_REGUL_MOUVEMENTS_source.MVT_INDEX = 1 AND + w_REGUL_MOUVEMENTS_source.MVT_UF_GEO <> 0 AND + w_REGUL_MOUVEMENTS_source.MVT_LIT = 0 AND + w_REGUL_MOUVEMENTS_source.MVT_CHAMBRE = 0 + GROUP BY 1 + HAVING (MIN(ARRAY[w_REGUL_MOUVEMENTS_source_2.MVT_INDEX, w_REGUL_MOUVEMENTS_source_2.MVT_UF_GEO]))[2] = MAX(w_REGUL_MOUVEMENTS_source.MVT_UF_GEO) AND + (MIN(ARRAY[w_REGUL_MOUVEMENTS_source_2.MVT_INDEX, w_REGUL_MOUVEMENTS_source_2.MVT_LIT]))[2] <> 0 + ; + + ANALYSE w_REGUL_MOUVEMENTS_lit_entree + ; + + UPDATE w_REGUL_MOUVEMENTS_source SET + MVT_CHAMBRE = w_REGUL_MOUVEMENTS_lit_entree.MVT_CHAMBRE, + MVT_LIT = w_REGUL_MOUVEMENTS_lit_entree.MVT_LIT + FROM w_REGUL_MOUVEMENTS_lit_entree + WHERE w_REGUL_MOUVEMENTS_source.MVT_OID = w_REGUL_MOUVEMENTS_lit_entree.MVT_OID + ; + + + + ]]> + + + + + + + + 1 + ) subview + WHERE w_patients.w_PAT_ID = subview.w_PAT_ID; + + + INSERT INTO activite[PX].p_patients( + no_patient, + nom, + prenom, + nom_naissance, + date_naissance, + code_sexe) + SELECT + w_PAT_IPP, + PAT_NOM, + PAT_PRENOM, + PAT_NOMNAISS, + date(PAT_NAISSANCE), + CASE WHEN PAT_SEXE = '2' THEN '2' ELSE '1' END + FROM w_patients + JOIN prod_web100t2.PATIENTS ON PAT_ID = w_PAT_ID + LEFT JOIN activite[PX].p_patients ON (w_PAT_IPP = p_patients.no_patient) + WHERE p_patients.no_patient IS NULL; + + UPDATE activite[PX].p_patients + SET + nom = PAT_NOM, + prenom = PAT_PRENOM, + nom_naissance = PAT_NOMNAISS, + date_naissance = date(PAT_NAISSANCE), + code_sexe = CASE WHEN PAT_SEXE = '2' THEN '2' ELSE '1' END + FROM prod_web100t2.PATIENTS + JOIN w_patients ON PAT_ID = w_PAT_ID + WHERE w_PAT_IPP = p_patients.no_patient + AND ( + nom IS DISTINCT FROM PAT_NOM OR + prenom IS DISTINCT FROM PAT_PRENOM OR + nom_naissance IS DISTINCT FROM PAT_NOMNAISS OR + date_naissance IS DISTINCT FROM date(PAT_NAISSANCE) OR + code_sexe IS DISTINCT FROM CASE WHEN PAT_SEXE = '2' THEN '2' ELSE '1' END + ); + + + ]]> + + + + 0 + GROUp BY 1 + HAVING count(DISTINCT RSS_OID) > 1 + ORDER BY 1 + ) subview + WHERE DAT_RSS.RSS_NO_HOSPIT = subview.RSS_NO_HOSPIT AND + RSS_OID <> RES_OID_OK + ; + + -- Détection GHM + + DROP TABLE IF EXISTS w_DAT_GROUPAGE; + CREATE TEMP TABLE w_DAT_GROUPAGE AS + SELECT + RSS_NO_HOSPIT, + to_number((MAX(Array[GRP_DATE::text, COALESCE(t_ghs.oid,0)::text]))[2],'00000000000000') AS ghs_id, + to_number((MAX(Array[GRP_DATE::text, COALESCE(t_ghm.oid,0)::text]))[2],'00000000000000') AS ghm_id, + (MAX(Array[GRP_DATE::text, w_SGN_NMCL_DATA_GHS.ND_CODE]))[2] AS ND_CODE_GHS, + (MAX(Array[GRP_DATE::text, w_SGN_NMCL_DATA_GHM.ND_CODE]))[2] AS ND_CODE_GHM + FROM prod_web100t2.DAT_GROUPAGE + JOIN prod_web100t2.DAT_RESUME ON GRP_RESUME = RES_OID + JOIN prod_web100t2.DAT_RSS ON RES_OID = RSS_OID + JOIN prod_web100t2.DAT_HOSPIT ON RES_HOSPIT = HOSP_OID + LEFT JOIN w_SGN_NMCL_DATA w_SGN_NMCL_DATA_GHS ON + GRP_CODE_GHS = w_SGN_NMCL_DATA_GHS.ND_OID + LEFT JOIN w_SGN_NMCL_DATA w_SGN_NMCL_DATA_GHM ON + GRP_GHM = w_SGN_NMCL_DATA_GHM.ND_OID + LEFT JOIN base.t_ghs ON t_ghs.code = to_number('0' || w_SGN_NMCL_DATA_GHS.ND_CODE,'00000') + LEFT JOIN base.t_ghm ON t_ghm.code = w_SGN_NMCL_DATA_GHM.ND_CODE + WHERE GRP_CODE_GHS <> 0 OR GRP_GHM <> 0 + GROUP BY 1; + + UPDATE w_DAT_GROUPAGE SET + ghs_id = 0, ghm_id = 0 + WHERE ND_CODE_GHM LIKE '90%' AND + (ghs_id <> 0 OR ghm_id <> 0); + + ALTER TABLE w_DAT_GROUPAGE ADD CONSTRAINT w_DAT_GROUPAGE_pkey PRIMARY KEY(RSS_NO_HOSPIT); + + + DROP TABLE IF EXISTS w_DAT_CONDITIONS_HEB; + CREATE TEMP TABLE w_DAT_CONDITIONS_HEB AS + SELECT + CH_SEJOUR, + (MAX(Array[CH_DATE_DEMANDE::text,CH_CP_DEMANDEE::text]))[2] AS CH_CP_DEMANDEE + FROM prod_web100t2.DAT_CONDITIONS_HEB + WHERE CH_CP_DEMANDEE <> 0 + GROUP BY 1; + + ALTER TABLE w_DAT_CONDITIONS_HEB ADD CONSTRAINT w_DAT_CONDITIONS_HEB_pkey PRIMARY KEY(CH_SEJOUR); + + + DROP TABLE IF EXISTS w_DAT_IDENTITE; + CREATE TEMP TABLE w_DAT_IDENTITE AS + SELECT + IDT_DA, + (MAX(CASE WHEN IDT_TYPE = 'AMO' AND IDT_ORGANISME <> 0 THEN Array[IDT_CREATED::text, COALESCE(t_tiers_payant.oid,0)::text] ELSE Array['',0::text] END))[2]::bigint AS tiers_payant_1_id, + (MAX(CASE WHEN IDT_TYPE = 'AMC' AND IDT_ORGANISME <> 0 THEN Array[IDT_CREATED::text, COALESCE(t_tiers_payant.oid,0)::text] ELSE Array['',0::text] END))[2]::bigint AS tiers_payant_2_id, + (MAX(Array[IDT_CREATED::text, COALESCE(t_codes_postaux.oid,0)::text]))[2]::bigint AS code_postal_id + FROM prod_web100t2.DAT_IDENTITE + LEFT JOIN activite[PX].t_tiers_payant ON IDT_ORGANISME = code_original + LEFT JOIN base.t_codes_postaux on IDT_CP = t_codes_postaux.code + GROUP BY 1; + + ALTER TABLE w_DAT_IDENTITE ADD CONSTRAINT w_DAT_IDENTITE_pkey PRIMARY KEY(IDT_DA); + + DROP TABLE IF EXISTS w_REGUL_MOUVEMENTS_SORTIE; + CREATE TEMP TABLE w_REGUL_MOUVEMENTS_SORTIE AS + SELECT + DA_OID, + SEJ_SPECIALITE, + SEJ_RESPONSABLE, + DA_NODE_RESP, + COALESCE((MAX(Array[MVT_DATE::text || MVT_INDEX, MVT_RESP::text]))[2]::bigint,0) AS MVT_RESP, + COALESCE((MAX(Array[MVT_DATE::text || MVT_INDEX, MVT_UF_SOIN::text]))[2]::bigint,0) AS MVT_UF_SOIN, + COALESCE((MAX(Array[MVT_DATE::text || MVT_INDEX, MVT_UF_GEO::text]))[2]::bigint,0) AS MVT_UF_GEO, + COALESCE((MAX(Array[MVT_DATE::text || MVT_INDEX, MVT_LIT::text]))[2]::bigint,0) AS MVT_LIT, + + SEJ_SPECIALITE || '|' || + SEJ_RESPONSABLE || '|' || + DA_NODE_RESP || '|' || + COALESCE((MAX(Array[MVT_DATE::text || MVT_INDEX, MVT_RESP::text]))[2],'') || '|' || + COALESCE((MAX(Array[MVT_DATE::text || MVT_INDEX, MVT_UF_SOIN::text]))[2],'') || '|' || + COALESCE((MAX(Array[MVT_DATE::text || MVT_INDEX, MVT_UF_GEO::text]))[2],'') || '|' || + COALESCE((MAX(Array[MVT_DATE::text || MVT_INDEX, MVT_LIT::text]))[2],'') + AS key + FROM w_DAT_DA + LEFT JOIN w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS ON PHASE_OID = MVT_SEJ_OID AND MVT_TYPE IN (1,4) + GROUP BY 1,2,3,4; + + + DROP TABLE IF EXISTS w_REGUL_MOUVEMENTS_SORTIE_keys; + CREATE TEMP TABLE w_REGUL_MOUVEMENTS_SORTIE_keys AS + SELECT + key, + SEJ_RESPONSABLE, + DA_NODE_RESP, + MVT_RESP, + MVT_UF_SOIN, + SEJ_SPECIALITE, + MVT_UF_GEO, + MVT_LIT, + + 0 AS mode_traitement_id, + ''::text AS mode_traitement_code, + ''::text AS dmt_code, + '0'::text AS type_sejour_force, + '0'::text AS type_sejour_seances_autorise, + '0'::text AS type_t2a, + 0::bigint AS lieu_id, + 0::bigint AS medecin_sejour_id + FROM w_REGUL_MOUVEMENTS_SORTIE + GROUP BY 1,2,3,4,5,6,7,8; + + + UPDATE w_REGUL_MOUVEMENTS_SORTIE_keys SET + mode_traitement_id = w_NMCL_UNITEFONCTIONNELLE.mode_traitement_id, + mode_traitement_code = w_NMCL_UNITEFONCTIONNELLE.mode_traitement_code, + dmt_code = w_NMCL_UNITEFONCTIONNELLE.dmt_code, + type_sejour_force = CASE WHEN w_NMCL_UNITEFONCTIONNELLE.type_sejour IN ('1', '2', '3', '31', '4', '5', '9') THEN w_NMCL_UNITEFONCTIONNELLE.type_sejour ELSE '0' END, + type_sejour_seances_autorise = CASE WHEN w_NMCL_UNITEFONCTIONNELLE.type_sejour IN ('1', '2', '3', '31', '4', '0sauf5') THEN '0' ELSE '1' END, + type_t2a = w_NMCL_UNITEFONCTIONNELLE.type_t2a + FROM w_NMCL_UNITEFONCTIONNELLE + WHERE w_NMCL_UNITEFONCTIONNELLE.WEB100T_OID = MVT_UF_SOIN; + + + + + UPDATE w_REGUL_MOUVEMENTS_SORTIE_keys + set medecin_sejour_id = w_NMCL_INTERVENANT.medecin_administratif_id + FROM w_NMCL_INTERVENANT + WHERE MVT_RESP <> 0 AND NODE_OID = MVT_RESP; + + UPDATE w_REGUL_MOUVEMENTS_SORTIE_keys + set medecin_sejour_id = w_NMCL_INTERVENANT.medecin_administratif_id + FROM w_NMCL_INTERVENANT + WHERE medecin_sejour_id = 0 AND SEJ_RESPONSABLE <> 0 AND NODE_OID = SEJ_RESPONSABLE; + + UPDATE w_REGUL_MOUVEMENTS_SORTIE_keys + set medecin_sejour_id = w_NMCL_INTERVENANT.medecin_administratif_id + FROM w_NMCL_INTERVENANT + WHERE medecin_sejour_id = 0 AND DA_NODE_RESP <> 0 AND NODE_OID = DA_NODE_RESP; + + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_6) + SELECT MVT_UF_SOIN, SEJ_SPECIALITE, MVT_UF_GEO, MVT_LIT, MVT_UF_SOIN + FROM w_REGUL_MOUVEMENTS_SORTIE_keys + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = MVT_UF_SOIN AND + code_original_2 = SEJ_SPECIALITE AND + code_original_3 = MVT_UF_GEO AND + code_original_4 = MVT_LIT AND + code_original_6 = MVT_UF_SOIN + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5; + + + + + + + UPDATE w_REGUL_MOUVEMENTS_SORTIE_keys + set lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = MVT_UF_SOIN AND + code_original_2 = SEJ_SPECIALITE AND + code_original_3 = MVT_UF_GEO AND + code_original_4 = MVT_LIT AND + code_original_6 = MVT_UF_SOIN; + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM + activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original + AND (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + activite_id = COALESCE(t_activites.oid,0) + FROM + activite[PX].t_activites + WHERE code_original_2 = t_activites.code_original + AND activite_id <> COALESCE(t_activites.oid,0); + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM + activite[PX].t_lits + WHERE code_original_3 || '-' || code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + + + ALTER TABLE w_REGUL_MOUVEMENTS_SORTIE ADD CONSTRAINT w_REGUL_MOUVEMENTS_SORTIE_pkey PRIMARY KEY(DA_OID); + + CREATE INDEX w_REGUL_MOUVEMENTS_SORTIE_i1 + ON w_REGUL_MOUVEMENTS_SORTIE + USING btree + (key); + + + + DROP TABLE IF EXISTS w_DAT_DA_type_sejour; + CREATE TEMP TABLE w_DAT_DA_type_sejour AS + SELECT + DA_OID, + CASE WHEN date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '1' ELSE '0' END AS de_ds, + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_TOTAL_TTC >= 0 AND FLT_CODE_PREST IN ('GHS','PJ') THEN 1 + WHEN FLT_IS_ETS = 1 AND FLT_TOTAL_TTC < 0 AND FLT_CODE_PREST IN ('GHS','PJ') THEN -1 + ELSE 0 END) AS nb_sej, + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_TOTAL_TTC >= 0 AND FLT_CODE_PREST IN ('SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'SE7', 'ATU', 'FPU', 'FFM') THEN 1 + WHEN FLT_IS_ETS = 1 AND FLT_TOTAL_TTC < 0 AND FLT_CODE_PREST IN ('SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'SE7', 'ATU', 'FPU', 'FFM') THEN -1 + ELSE 0 END) AS nb_ext, + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_TOTAL_TTC >= 0 AND FLT_CODE_PREST BETWEEN 'D01' AND 'D19' THEN 1 + WHEN FLT_IS_ETS = 1 AND FLT_TOTAL_TTC < 0 AND FLT_CODE_PREST BETWEEN 'D01' AND 'D19' THEN -1 + ELSE 0 END) AS nb_dia, + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_TOTAL_TTC >= 0 THEN 1 + WHEN FLT_IS_ETS = 1 AND FLT_TOTAL_TTC < 0 THEN -1 + ELSE 0 END) AS nb_ets, + SUM(CASE WHEN FLT_IS_ETS <> 1 AND FLT_TOTAL_TTC >= 0 THEN 1 + WHEN FLT_IS_ETS <> 1 AND FLT_TOTAL_TTC < 0 THEN -1 + ELSE 0 END) AS nb_hon, + '0'::text AS type_sejour_facture + FROM w_DAT_DA + JOIN prod_web100t2.FAC_FACT_TIER ON FT_DA = DA_OID + JOIN prod_web100t2.FAC_FACT_LIGNE_TIER ON FLT_FACTURE_TIER = FT_OID + WHERE FLT_RECAP <> 0 + GROUP BY 1,2 + ORDER BY 1 + ; + + UPDATE w_DAT_DA_type_sejour SET type_sejour_facture = '1' WHERE nb_sej > 0 AND nb_ext = 0 AND de_ds = '0'; + UPDATE w_DAT_DA_type_sejour SET type_sejour_facture = '2' WHERE nb_sej > 0 AND nb_ext = 0 AND de_ds = '1'; + UPDATE w_DAT_DA_type_sejour SET type_sejour_facture = '3' WHERE nb_sej = 0 AND nb_ext > 0 AND nb_dia = 0; + UPDATE w_DAT_DA_type_sejour SET type_sejour_facture = '5' WHERE nb_sej = 0 AND nb_ext = 0 AND nb_dia > 0; + UPDATE w_DAT_DA_type_sejour SET type_sejour_facture = '3' WHERE type_sejour_facture = '0' AND de_ds = '1' AND nb_ets = 0 AND nb_hon = 1; + + ALTER TABLE w_DAT_DA_type_sejour ADD CONSTRAINT w_DAT_DA_type_sejour_pkey PRIMARY KEY(DA_OID); + + -- Table de travail pour la préadmission des séjours + + DROP TABLE IF EXISTS w_sejours_preadmission; + CREATE TEMP TABLE w_sejours_preadmission( + no_sejour text PRIMARY KEY, + date_entree timestamp, + date_validation_preadmission timestamp, + "preadmission_j1" smallint, + "preadmission_j2" smallint + ) + ; + + INSERT INTO w_sejours_preadmission( + no_sejour, + date_entree, + date_validation_preadmission, + "preadmission_j1", + "preadmission_j2" + ) + SELECT + DA_NUMERO, + DA_DATE_DEBUT, + SEJ_VALIDATION_PREAD_LE, + CASE WHEN (DA_DATE_DEBUT - SEJ_VALIDATION_PREAD_LE) >= '10:00:00' THEN 1 ELSE 0 END, + CASE WHEN (DA_DATE_DEBUT - SEJ_VALIDATION_PREAD_LE) >= '1 day 06:00:00' THEN 1 ELSE 0 END + FROM w_DAT_DA + ; + + ANALYZE w_sejours_preadmission + ; + + -- Insertion des colonnes de la table w_sejours_preadmission + -- dans table CTI p_sejours_preadmission + + INSERT INTO activite[PX].p_sejours_preadmission( + no_sejour, + date_entree, + date_validation_preadmission, + "preadmission_j1", + "preadmission_j2" + ) + SELECT + no_sejour, + date_entree, + date_validation_preadmission, + "preadmission_j1", + "preadmission_j2" + FROM w_sejours_preadmission + WHERE NOT EXISTS ( + SELECT no_sejour + FROM activite[PX].p_sejours_preadmission + WHERE w_sejours_preadmission.no_sejour = p_sejours_preadmission.no_sejour + ) + ; + + DROP TABLE IF EXISTS w_sejours ; + CREATE TEMP TABLE w_sejours AS + SELECT + finess, + nextval('activite[PX].s_sejours'::regclass) AS sejour_id, + w_DAT_DA.DA_OID AS code_original, + DA_NUMERO AS no_sejour, + PAT_IPP AS no_patient, + CASE WHEN PAT_SEXE = '2' THEN '2' ELSE '1' END AS code_sexe, + DA_DATE_DEBUT + DA_HEURE_DEBUT * interval '1 day' AS date_heure_entree, + date(DA_DATE_DEBUT) AS date_entree, + extract('hour' FROM DA_HEURE_DEBUT * interval '1 day') * 10000 + + extract('minute' FROM DA_HEURE_DEBUT * interval '1 day') * 100 + + extract('second' FROM DA_HEURE_DEBUT * interval '1 day') AS heure_entree, + COALESCE(substr(w_SGN_NMCL_DATA_MODEENTREE.ND_CODE,1,1),'8') AS mode_entree, + COALESCE(substr(w_SGN_NMCL_DATA_MODEENTREE.ND_CODE,2,1),'') AS provenance, + COALESCE(DA_DATE_FIN + DA_HEURE_FIN * interval '1 day', '20991231') AS date_heure_sortie, + COALESCE(date(DA_DATE_FIN), '20991231') AS date_sortie, + COALESCE(extract('hour' FROM DA_HEURE_FIN * interval '1 day') * 10000 + + extract('minute' FROM DA_HEURE_FIN * interval '1 day') * 100 + + extract('second' FROM DA_HEURE_FIN * interval '1 day'),0) AS heure_sortie, + COALESCE(substr(w_SGN_NMCL_DATA_MODESORTIE.ND_CODE,1,1),'8') AS mode_sortie, + COALESCE(substr(w_SGN_NMCL_DATA_MODESORTIE.ND_CODE,2,1),'') AS destination, + CASE + WHEN DA_STATUT IN ('3','4') AND DA_DATE_FIN IS NOT NULL THEN 1 + ELSE 0 END AS code_sorti, + CASE + WHEN DA_STATUT <= 1 THEN 1 + ELSE 0 END AS code_prevu, + CASE + WHEN type_sejour_seances_autorise = '1' AND ND_CODE_GHM LIKE '28%' THEN '5' + WHEN type_sejour_force <> '0' AND type_sejour_force <> '31' THEN type_sejour_force + WHEN type_sejour_force = 31 AND date(DA_DATE_FIN) - date(DA_DATE_DEBUT) <= 1 THEN '3' + WHEN type_sejour_force = 31 THEN '1' + WHEN type_sejour_facture <> '0' THEN type_sejour_facture + WHEN DA_CLASSE IN (1,2) AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) AND DA_SUGG_MODE_FACT IN ('ATU','FSU','HON','SEH') THEN '3' + WHEN DA_CLASSE IN (1,2) AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '2' + WHEN DA_CLASSE IN (1,2) THEN '1' + WHEN DA_CLASSE IN (3,5) THEN '3' + WHEN DA_CLASSE IN (4) THEN '5' + WHEN mode_traitement_code IN ('03') AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '2' + WHEN mode_traitement_code IN ('03') THEN '1' + WHEN mode_traitement_code IN ('07') THEN '3' + WHEN mode_traitement_code IN ('07') OR dmt_code IN ('958') THEN '3' + WHEN mode_traitement_code IN ('19', '23') AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '2' + WHEN mode_traitement_code IN ('04') AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '2' + WHEN mode_traitement_code IN ('03') AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '2' + WHEN mode_traitement_code IN ('03') THEN '1' + WHEN mode_traitement_id = 0 AND type_t2a = '1' AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '2' + WHEN mode_traitement_id = 0 AND ghs_id <> 0 AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '2' + WHEN mode_traitement_id = 0 AND type_t2a <> '1' AND date(DA_DATE_DEBUT) = date(DA_DATE_FIN) THEN '3' + ELSE '1' END AS type_sejour, + mode_traitement_id, + w_REGUL_MOUVEMENTS_SORTIE_keys.lieu_id AS lieu_sortie_id, + medecin_sejour_id, + COALESCE(tiers_payant_1_id,0) AS tiers_payant_1_id, + COALESCE(tiers_payant_2_id,0) AS tiers_payant_2_id, + (SELECT MIN(oid) FROM activite[PX].t_tiers_payant WHERE code = 'PATIENTS') AS tiers_payant_0_id, + 0::bigint AS tiers_payant_22_id, + COALESCE(ghs_id,0) AS ghs_id, + COALESCE(ghm_id,0) AS ghm_id, + 0::bigint AS ghs_bebe1_id, + 0::bigint AS ghs_bebe2_id, + 0::bigint AS ghs_bebe3_id, + DATE(DA_DIM_VALID) AS date_groupage, + CASE RPH_ETAT + WHEN 6 THEN 'R' + WHEN 7 THEN 'A' + WHEN 8 THEN 'C' + ELSE ''::text + END AS etat, + CASE WHEN RPH_ETAT > 0 THEN RPH_MODIFIED ELSE NULL END AS date_etat, + COALESCE(CH_CP_DEMANDEE,'0') AS code_cp_demandee, + 0::numeric AS est_budget_global, + '0'::text AS est_sans_facturation, + 0::bigint AS provider_id, + w_DAT_IDENTITE.code_postal_id + FROM w_DAT_DA + JOIN prod_web100t2.PATIENTS ON DA_PATIENT = PAT_ID + LEFT JOIN w_SGN_NMCL_DATA w_SGN_NMCL_DATA_MODEENTREE ON + SEJ_MODE_ENTREE = w_SGN_NMCL_DATA_MODEENTREE.ND_INVARIANT_OID AND + w_SGN_NMCL_DATA_MODEENTREE.NMCL_IDENT = 'MODEENTREE' + LEFT JOIN w_SGN_NMCL_DATA w_SGN_NMCL_DATA_MODESORTIE ON + SEJ_MODE_SORTIE = w_SGN_NMCL_DATA_MODESORTIE.ND_INVARIANT_OID AND + w_SGN_NMCL_DATA_MODESORTIE.NMCL_IDENT = 'MODESORTIE' + JOIN w_REGUL_MOUVEMENTS_SORTIE ON w_DAT_DA.DA_OID = w_REGUL_MOUVEMENTS_SORTIE.DA_OID + JOIN w_REGUL_MOUVEMENTS_SORTIE_keys ON w_REGUL_MOUVEMENTS_SORTIE.key = w_REGUL_MOUVEMENTS_SORTIE_keys.key + LEFT JOIN w_DAT_GROUPAGE ON DA_NUMERO = RSS_NO_HOSPIT + LEFT JOIN w_DAT_CONDITIONS_HEB ON PHASE_OID = CH_SEJOUR + LEFT JOIN w_DAT_IDENTITE ON IDT_DA = w_DAT_DA.DA_OID + LEFT JOIN w_DAT_DA_type_sejour ON w_DAT_DA.DA_OID = w_DAT_DA_type_sejour.DA_OID; + + + -- correction mode de sortie + UPDATE w_sejours + SET mode_sortie = '' + WHERE mode_sortie != ALL (ARRAY(SELECT code from base.t_modes_sortie)::text[]) + ; + -- correction mode entree + UPDATE w_sejours + SET mode_entree = '' + WHERE mode_entree != ALL (ARRAY(SELECT code from base.t_modes_entree)::text[]) + ; + + -- Forcage type selon séjour + UPDATE w_sejours + SET type_sejour = t_sejour.type_sejour + FROM activite.t_sejour + WHERE t_sejour.no_sejour = w_sejours.no_sejour AND + t_sejour.type_sejour IN ('1','2','3','4','5','6','9'); + + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_sejours_13'); + + INSERT INTO activite[PX].p_sejours ( + finess, + oid, + code_original, + no_sejour, + no_patient, + code_sexe, + date_entree, + heure_entree, + mode_entree, + provenance, + date_sortie, + heure_sortie, + mode_sortie, + destination, + code_sorti, + code_prevu, + type_sejour, + mode_traitement_id, + lieu_sortie_id, + medecin_sejour_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_0_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + date_groupage, + ghm_id, + etat, + date_etat, + code_cp_demandee, + est_budget_global, + est_sans_facturation, + provider_id, + code_postal_id + ) + SELECT + finess, + sejour_id, + code_original, + no_sejour, + no_patient, + code_sexe, + date_entree, + heure_entree, + mode_entree, + provenance, + date_sortie, + heure_sortie, + mode_sortie, + destination, + code_sorti, + code_prevu, + type_sejour, + mode_traitement_id, + lieu_sortie_id, + medecin_sejour_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_0_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + date_groupage, + ghm_id, + etat, + date_etat, + code_cp_demandee, + est_budget_global, + est_sans_facturation, + provider_id, + code_postal_id + FROM w_sejours ; + + -- Séjours ignorés + UPDATE activite[PX].p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I' AND + '[PX]' = ''; + + UPDATE activite[PX].p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1') AND + '[PX]' = ''; + + -- Médecin séjour forcé + UPDATE activite[PX].p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id AND + '[PX]' = ''; + + + -- recréation index + + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_sejours_13'); + + -- transferts d'établissements + INSERT INTO base.t_etablissements (code, texte, texte_court) + SELECT + ND_CODE, + ND_LIB, + ND_LIB + FROM + w_SGN_NMCL_DATA + WHERE 1=1 AND + NMCL_IDENT = 'FINESS' AND + ND_INVARIANT_OID IN (SELECT DISTINCT MVT_AUTRE_ETS FROM prod_web100t2.REGUL_MOUVEMENTS) AND + ND_CODE NOT IN (SELECT CODE FROM base.t_etablissements) + ; + + INSERT INTO activite[PX].p_sejours_transferts (sejour_id, provenance_id, destination_id) + SELECT + p_sejours.oid, + MIN(CASE WHEN MVT_TYPE = 1 THEN t_etablissements.oid ELSE null END) AS provenance_id, + MIN(CASE WHEN MVT_TYPE = 2 THEN t_etablissements.oid ELSE null END) AS destination_id + FROM + activite[PX].p_sejours + JOIN prod_web100t2.DAT_SEJOUR ON SEJ_DA = code_original + JOIN prod_web100t2.REGUL_MOUVEMENTS ON MVT_SEJ_OID = PHASE_OID + LEFT JOIN w_SGN_NMCL_DATA ON MVT_AUTRE_ETS = ND_INVARIANT_OID AND NMCL_IDENT = 'FINESS' + LEFT JOIN base.t_etablissements ON ND_CODE = code + WHERE 1!=1 OR + MVT_AUTRE_ETS != 0 + GROUP BY 1 + ; + + -- Assurance + SELECT base.cti_execute( + 'INSERT INTO activite[PX].p_sejours_assurance( + sejour_id, + nom_assure, + prenom_assure, + tiers_payant_0_id, + tiers_payant_1_id, + matricule_1, + tiers_payant_2_id, + matricule_2, + tiers_payant_22_id, + matricule_22 + ) + SELECT + p_sejours.oid AS sejour_id, + (MAX(ARRAY[CASE WHEN IDT_TYPE = ''AMO'' THEN ''1'' ELSE ''2'' END::text,IDT_NOM]))[2] AS nom_assure, + (MAX(ARRAY[CASE WHEN IDT_TYPE = ''AMO'' THEN ''1'' ELSE ''2'' END::text,IDT_PRENOM]))[2] AS prenom_assure, + MAX(p_sejours.tiers_payant_0_id), + MAX(p_sejours.tiers_payant_1_id), + MAX(CASE WHEN AMO_MATRICULE_BENEF <> '''' THEN AMO_MATRICULE_BENEF ELSE AMO_MATRICULE END) AS matricule_1, + MAX(p_sejours.tiers_payant_2_id), + MAX(CASE WHEN AMC_MATRICULE <> '''' THEN AMO_MATRICULE ELSE AMC_NUM_CONTRAT END) AS matricule_2, + MAX(p_sejours.tiers_payant_22_id), + ''''::text AS matricule_22 + FROM prod_web100t2.DAT_IDENTITE + JOIN prod_web100t2.DAT_DA ON IDT_DA = DA_OID + JOIN prod_web100t2.PATIENTS ON DA_PATIENT = PAT_ID + LEFT JOIN prod_web100t2.DAT_ASSURE_AMO ON DA_ASSURE_AMO = AMO_OID + LEFT JOIN prod_web100t2.DAT_ASSURE_AMC ON DA_ASSURE_AMC_1 = AMC_OID + JOIN activite[PX].p_sejours ON code_original = DA_OID + WHERE IDT_TYPE = ANY(ARRAY[''AMO'',''AMC'']) + GROUP BY 1',1) + FROM pg_tables + WHERE schemaname = 'prod_web100t2' AND tablename = 'dat_assure_amo' + ; + + ]]> + + + + 2 + GROUP BY 1,2,3,4,5; + + UPDATE w_REGUL_MOUVEMENTS_keys SET + mode_traitement_code = w_NMCL_UNITEFONCTIONNELLE.mode_traitement_code, + dmt_code = w_NMCL_UNITEFONCTIONNELLE.dmt_code + FROM w_NMCL_UNITEFONCTIONNELLE + WHERE w_NMCL_UNITEFONCTIONNELLE.WEB100T_OID = MVT_UF_SOIN; + + + + + INSERT INTO activite[PX].t_lieux( + code_original_1, code_original_2, code_original_3, code_original_4, code_original_6) + SELECT MVT_UF_SOIN, SEJ_SPECIALITE, MVT_UF_GEO, MVT_LIT, MVT_UF_SOIN + FROM w_REGUL_MOUVEMENTS_keys + LEFT JOIN activite[PX].t_lieux ON ( + code_original_1 = MVT_UF_SOIN AND + code_original_2 = SEJ_SPECIALITE AND + code_original_3 = MVT_UF_GEO AND + code_original_4 = MVT_LIT AND + code_original_6 = MVT_UF_SOIN + ) + WHERE t_lieux.oid IS NULL + GROUP BY 1,2,3,4,5; + + + + + + + UPDATE w_REGUL_MOUVEMENTS_keys + set lieu_id = t_lieux.oid + FROM activite[PX].t_lieux + WHERE code_original_1 = MVT_UF_SOIN AND + code_original_2 = SEJ_SPECIALITE AND + code_original_3 = MVT_UF_GEO AND + code_original_4 = MVT_LIT AND + code_original_6 = MVT_UF_SOIN; + + + UPDATE activite[PX].t_lieux SET + service_facturation_id = COALESCE(t_services_facturation.oid,0), + mode_traitement_id = COALESCE(t_services_facturation.mode_traitement_id,0) + FROM + activite[PX].t_services_facturation + WHERE code_original_1 = t_services_facturation.code_original + AND (t_lieux.service_facturation_id <> COALESCE(t_services_facturation.oid,0) OR + t_lieux.mode_traitement_id <> COALESCE(t_services_facturation.mode_traitement_id,0) + ) + ; + + UPDATE activite[PX].t_lieux SET + activite_id = COALESCE(t_activites.oid,0) + FROM + activite[PX].t_activites + WHERE code_original_2 = t_activites.code_original + AND activite_id <> COALESCE(t_activites.oid,0); + + UPDATE activite[PX].t_lieux SET + unite_fonctionnelle_id = COALESCE(t_unites_fonctionnelles.oid,0) + FROM + activite[PX].t_unites_fonctionnelles + WHERE code_original_6 = t_unites_fonctionnelles.code_original + AND unite_fonctionnelle_id <> COALESCE(t_unites_fonctionnelles.oid,0); + + + UPDATE activite[PX].t_lieux SET + lit_id = COALESCE(t_lits.oid,0) + FROM + activite[PX].t_lits + WHERE code_original_3 || '-' || code_original_4 = t_lits.code_original AND + t_lieux.lit_id <> COALESCE(t_lits.oid,0) + ; + + UPDATE w_REGUL_MOUVEMENTS_keys + SET chambre_particuliere = t_lits.chambre_particuliere + FROM activite[PX].t_lieux + JOIN activite[PX].t_lits ON lit_id = t_lits.oid + WHERE w_REGUL_MOUVEMENTS_keys.lieu_id = t_lieux.oid; + + + CREATE INDEX w_REGUL_MOUVEMENTS_i1 + ON w_REGUL_MOUVEMENTS + USING btree + (key); + + + + -- calcul date fin + + UPDATE w_REGUL_MOUVEMENTS + SET MVT_DATE_FIN = CASE WHEN w_REGUL_MOUVEMENTS_next.MVT_TYPE <> 2 THEN w_REGUL_MOUVEMENTS_next.MVT_DATE - interval '1 second' ELSE w_REGUL_MOUVEMENTS_next.MVT_DATE END, + MVT_DATE_FIN_DAT = date(CASE WHEN w_REGUL_MOUVEMENTS_next.MVT_TYPE <> 2 THEN w_REGUL_MOUVEMENTS_next.MVT_DATE - interval '1 second' ELSE w_REGUL_MOUVEMENTS_next.MVT_DATE END), + MVT_DATE_FIN_TIM = extract('hour' FROM CASE WHEN w_REGUL_MOUVEMENTS_next.MVT_TYPE <> 2 THEN w_REGUL_MOUVEMENTS_next.MVT_DATE - interval '1 second' ELSE w_REGUL_MOUVEMENTS_next.MVT_DATE END) * 10000 + + extract('minute' FROM CASE WHEN w_REGUL_MOUVEMENTS_next.MVT_TYPE <> 2 THEN w_REGUL_MOUVEMENTS_next.MVT_DATE - interval '1 second' ELSE w_REGUL_MOUVEMENTS_next.MVT_DATE END) * 100 + + extract('second' FROM CASE WHEN w_REGUL_MOUVEMENTS_next.MVT_TYPE <> 2 THEN w_REGUL_MOUVEMENTS_next.MVT_DATE - interval '1 second' ELSE w_REGUL_MOUVEMENTS_next.MVT_DATE END), + MVT_TYPE_next = w_REGUL_MOUVEMENTS_next.MVT_TYPE, + MVT_UF_SOIN_next = w_REGUL_MOUVEMENTS_next.MVT_UF_SOIN, + MVT_UF_GEO_next = w_REGUL_MOUVEMENTS_next.MVT_UF_GEO + FROM w_REGUL_MOUVEMENTS w_REGUL_MOUVEMENTS_next + WHERE w_REGUL_MOUVEMENTS.DA_OID = w_REGUL_MOUVEMENTS_next.DA_OID + AND w_REGUL_MOUVEMENTS.sequence = w_REGUL_MOUVEMENTS_next.sequence - 1; + + + + -- calcul mvt avant + + UPDATE w_REGUL_MOUVEMENTS + SET + MVT_TYPE_before = w_REGUL_MOUVEMENTS_before.MVT_TYPE, + MVT_UF_SOIN_before = w_REGUL_MOUVEMENTS_before.MVT_UF_SOIN, + MVT_UF_GEO_before = w_REGUL_MOUVEMENTS_before.MVT_UF_GEO + FROM w_REGUL_MOUVEMENTS w_REGUL_MOUVEMENTS_before + WHERE w_REGUL_MOUVEMENTS.DA_OID = w_REGUL_MOUVEMENTS_before.DA_OID + AND w_REGUL_MOUVEMENTS.sequence = w_REGUL_MOUVEMENTS_before.sequence + 1 + AND w_REGUL_MOUVEMENTS.MVT_TYPE <> 2; + + + UPDATE w_DAT_DA SET + dup_type_sejour = p_sejours.type_sejour, + dup_code_prevu = p_sejours.code_prevu, + dup_sejour_id = p_sejours.oid, + dup_no_sejour = p_sejours.no_sejour, + dup_medecin_sejour_id = p_sejours.medecin_sejour_id, + dup_etat = p_sejours.etat + FROM activite[PX].p_sejours + WHERE DA_OID = p_sejours.code_original; + + -- creation mouvements par jour + CREATE INDEX w_REGUL_MOUVEMENTS_i2 + ON w_REGUL_MOUVEMENTS + USING btree + (DA_OID); + + CREATE INDEX w_REGUL_MOUVEMENTS_i3 + ON w_REGUL_MOUVEMENTS + USING btree + (MVT_DATE_DAT); + + VACUUM ANALYSE w_REGUL_MOUVEMENTS + ; + VACUUM ANALYSE w_DAT_DA + ; + VACUUM ANALYSE w_REGUL_MOUVEMENTS_keys + ; + + DROP TABLE IF EXISTS w_mouvements_sejour; + CREATE TEMP TABLE w_mouvements_sejour AS + SELECT + w_REGUL_MOUVEMENTS.DA_OID, + w_DAT_DA.dup_no_sejour AS no_sejour, + w_DAT_DA.dup_sejour_id AS sejour_id, + sequence, + p_calendrier.date, + p_calendrier.jour_semaine, + p_calendrier.is_weekend, + CASE WHEN p_calendrier.date = MVT_DATE_DAT THEN MVT_DATE_TIM ELSE 0 END AS heure_debut, + CASE WHEN p_calendrier.date = MVT_DATE_FIN_DAT THEN MVT_DATE_FIN_TIM ELSE 240000 END AS heure_fin, + CASE WHEN p_calendrier.date = MVT_DATE_DAT AND MVT_TYPE = 1 AND w_DAT_DA.dup_type_sejour = '1' THEN 1 ELSE 0 END AS nb_entrees_directes, + CASE WHEN p_calendrier.date = MVT_DATE_FIN_DAT AND MVT_TYPE_next = 2 AND w_DAT_DA.dup_type_sejour = '1' THEN 1 ELSE 0 END AS nb_sorties_directes, + CASE WHEN p_calendrier.date = MVT_DATE_DAT AND MVT_TYPE = 1 AND w_DAT_DA.dup_type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_entree, + CASE WHEN p_calendrier.date = MVT_DATE_FIN_DAT AND MVT_TYPE_next = 2 AND w_DAT_DA.dup_type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_sortie, + CASE WHEN w_DAT_DA.dup_type_sejour = '1' THEN '1' ELSE '0' END AS est_jour_hospitalisation, + CASE WHEN p_calendrier.date = MVT_DATE_DAT AND MVT_TYPE = 1 AND w_DAT_DA.dup_type_sejour = '2' THEN 1 ELSE 0 END AS nb_ambulatoires, + CASE WHEN p_calendrier.date = MVT_DATE_DAT AND MVT_TYPE = 1 AND w_DAT_DA.dup_type_sejour = '3' THEN 1 ELSE 0 END AS nb_externes, + CASE WHEN p_calendrier.date = MVT_DATE_DAT AND MVT_TYPE = 1 AND w_DAT_DA.dup_type_sejour <> '9' THEN + CASE WHEN dmt_code IN ('303', '307', '308', '401', '402', '403', '404', '405', '406', '407', '408', '409') THEN 1 + WHEN SEJ_URGENCE = 1 THEN 1 + ELSE 0 END + ELSE 0 END AS nb_urgences, + 0 as nb_seances, + + CASE WHEN p_calendrier.date = MVT_DATE_DAT AND MVT_TYPE = 4 AND w_DAT_DA.dup_type_sejour = '1' AND w_REGUL_MOUVEMENTS.MVT_UF_SOIN <> MVT_UF_SOIN_before THEN 1 ELSE 0 END AS nb_entrees_mutation_service, + CASE WHEN p_calendrier.date = MVT_DATE_FIN_DAT AND MVT_TYPE_next = 4 AND w_DAT_DA.dup_type_sejour = '1' AND w_REGUL_MOUVEMENTS.MVT_UF_SOIN <> MVT_UF_SOIN_next THEN 1 ELSE 0 END AS nb_sorties_mutation_service, + CASE WHEN p_calendrier.date = MVT_DATE_DAT AND MVT_TYPE = 4 AND w_DAT_DA.dup_type_sejour = '1' AND w_REGUL_MOUVEMENTS.MVT_UF_GEO <> MVT_UF_GEO_before THEN 1 ELSE 0 END AS nb_entrees_mutation_etage, + CASE WHEN p_calendrier.date = MVT_DATE_FIN_DAT AND MVT_TYPE_next = 4 AND w_DAT_DA.dup_type_sejour = '1' AND w_REGUL_MOUVEMENTS.MVT_UF_GEO <> MVT_UF_GEO_next THEN 1 ELSE 0 END AS nb_sorties_mutation_etage, + 0 AS nb_entrees_mutation_activite, + 0 AS nb_sorties_mutation_activite, + 0 AS nb_entrees_mutation_unite_medicale, + 0 AS nb_sorties_mutation_unite_medicale, + + CASE WHEN w_DAT_DA.dup_type_sejour = '1' AND (p_calendrier.date <> MVT_DATE_FIN_DAT OR MVT_TYPE_next = 2) THEN 1 ELSE 0 END AS nb_jours_js_inclus, + CASE WHEN w_DAT_DA.dup_type_sejour = '1' AND p_calendrier.date <> MVT_DATE_FIN_DAT THEN 1 ELSE 0 END AS nb_jours_js_non_inclus, + + CASE WHEN w_DAT_DA.dup_type_sejour IN ('1','2') AND chambre_particuliere = 'O' THEN '1' ELSE '0' END AS est_chambre_particuliere, + CASE WHEN w_DAT_DA.dup_type_sejour IN ('1','2') AND chambre_particuliere = 'O' AND (p_calendrier.date <> MVT_DATE_FIN_DAT OR MVT_TYPE_next = 2) THEN 1 ELSE 0 END AS nb_chambres_particulieres, + + 0::numeric AS nb_bebes, + + lieu_id, + + w_DAT_DA.dup_medecin_sejour_id as medecin_sejour_id, + + CASE WHEN w_DAT_DA.dup_code_prevu = '1' OR p_calendrier.date > date(now()) THEN '1' ELSE '0' END AS est_mouvement_previsionnel + + FROM w_REGUL_MOUVEMENTS + JOIN w_DAT_DA ON w_DAT_DA.DA_OID = w_REGUL_MOUVEMENTS.DA_OID + JOIN w_REGUL_MOUVEMENTS_keys ON w_REGUL_MOUVEMENTS.key = w_REGUL_MOUVEMENTS_keys.key + JOIN base.p_calendrier ON p_calendrier.date BETWEEN MVT_DATE_DAT AND MVT_DATE_FIN_DAT AND p_calendrier.date <= date(now()) + interval '1 month' + WHERE MVT_TYPE <> 2 + AND w_DAT_DA.dup_etat = '' + AND (w_DAT_DA.dup_type_sejour NOT IN ('3') OR (w_DAT_DA.dup_type_sejour IN ('3') AND MVT_TYPE = 1 AND p_calendrier.date = MVT_DATE_DAT)) + AND (w_DAT_DA.dup_code_prevu <> '1' AND p_calendrier.date <= date(now()) OR p_calendrier.date >= date(now())) + ORDER BY sequence, p_calendrier.date; + + -- bébés + DROP TABLE IF EXISTS w_CCAM_bebes; + + CREATE TEMP TABLE w_CCAM_bebes AS + SELECT + p_sejours.no_sejour, + MAX(CASE WHEN t_actes.texte ILIKE '%multiple%' THEN 2 ELSE 1 END) AS nb_bebes + FROM prod_web100t2.DAT_PRESTATIONS_GAP + JOIN activite[PX].p_sejours ON PREST_DA = p_sejours.code_original + JOIN w_ART_ARTICLES ON PREST_ARTICLE = ART_OID + JOIN base.t_actes ON t_actes.oid = acte_id AND + t_actes.code LIKE 'JQG%' AND + t_actes.texte ILIKE 'accouchement%' + WHERE PREST_DELETED = 0 + GROUP BY 1; + + CREATE INDEX w_CCAM_bebes_i1 + ON w_CCAM_bebes + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_bebes = w_CCAM_bebes.nb_bebes + FROM w_CCAM_bebes + WHERE w_CCAM_bebes.no_sejour = w_mouvements_sejour.no_sejour AND + (nb_entrees_directes = 1 OR nb_externes = 1 OR nb_ambulatoires = 1); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- seances selon prestation Dxx facturées + + + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT + p_sejours.no_sejour, + date(FLT_DATE_DEBUT) AS date, + SUM(CASE WHEN FLT_TOTAL_TTC >= 0 THEN 1 ELSE -1 END) AS nb_seances + FROM activite[PX].p_sejours + JOIN prod_web100t2.FAC_FACT_TIER ON FT_DA = code_original + JOIN prod_web100t2.FAC_FACT_LIGNE_TIER ON FLT_FACTURE_TIER = FT_OID AND FLT_CODE_PREST BETWEEN 'D01' AND 'D19' + WHERE FLT_IS_ETS = 1 AND FLT_RECAP <> 0 + GROUP BY 1,2 + ORDER BY 1,2 + ; + + CREATE INDEX w_sejours_seances_i1 + ON w_sejours_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_sejours_seances.nb_seances + FROM w_sejours_seances + WHERE w_sejours_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_sejours_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_sejours_seances.nb_seances; + + + -- seances selon Actes (JV Séances Facturés) + + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT + p_sejours.no_sejour, + date(FLT_DATE_DEBUT) AS date, + SUM(CASE WHEN FLT_TOTAL_TTC >= 0 THEN 1 ELSE -1 END) AS nb_seances + FROM activite[PX].p_sejours + JOIN prod_web100t2.FAC_FACT_TIER ON FT_DA = code_original + JOIN prod_web100t2.FAC_FACT_LIGNE_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN w_ART_ARTICLES ON FLT_ARTICLE = ART_OID AND + ( + ART_CODE_ACTE LIKE 'JV%' AND (ART_LIB_ACTE ILIKE '%seance%' OR ART_LIB_ACTE ILIKE '%séance%' ) OR + ART_CODE_ACTE LIKE 'JVJF%' + ) + WHERE FLT_IS_ETS = 0 AND FLT_RECAP <> 0 + GROUP BY 1,2 + ORDER BY 1,2 + ; + + + CREATE INDEX w_sejours_seances_i1 + ON w_sejours_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_sejours_seances.nb_seances + FROM w_sejours_seances + WHERE w_sejours_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_sejours_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_sejours_seances.nb_seances; + + + -- seances selon prestation Dxx saisies + + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT + p_sejours.no_sejour, + date(PREST_DATE_DEBUT) AS date, + SUM(CASE WHEN PREST_QUANTITE <> 0 THEN PREST_QUANTITE ELSE 1 END) AS nb_seances + FROM prod_web100t2.DAT_PRESTATIONS_GAP + JOIN prod_web100t2.DAT_DA ON PREST_DA = DA_OID + JOIN activite[PX].p_sejours ON DA_OID = p_sejours.code_original AND date(PREST_DATE_DEBUT) BETWEEN date_entree AND date_sortie + JOIN w_ART_ARTICLES ON PREST_ARTICLE = ART_OID + WHERE ART_CODE BETWEEN 'D01' AND 'D19' AND PREST_DELETED = 0 + GROUP BY 1,2; + + CREATE INDEX w_sejours_seances_i1 + ON w_sejours_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_sejours_seances.nb_seances + FROM w_sejours_seances + WHERE w_sejours_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_sejours_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_sejours_seances.nb_seances; + + + -- seances selon actes JV séance saisis + + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT + p_sejours.no_sejour, + date(PREST_DATE_DEBUT) AS date, + SUM(CASE WHEN PREST_QUANTITE <> 0 THEN PREST_QUANTITE ELSE 1 END) AS nb_seances + FROM prod_web100t2.DAT_PRESTATIONS_GAP + JOIN prod_web100t2.DAT_DA ON PREST_DA = DA_OID + JOIN activite[PX].p_sejours ON DA_OID = p_sejours.code_original AND date(PREST_DATE_DEBUT) BETWEEN date_entree AND date_sortie + JOIN w_ART_ARTICLES ON PREST_ARTICLE = ART_OID AND + ( + ART_CODE_ACTE LIKE 'JV%' AND (ART_LIB_ACTE ILIKE '%seance%' OR ART_LIB_ACTE ILIKE '%séance%' ) OR + ART_CODE_ACTE LIKE 'JVJF%' + ) + WHERE PREST_DELETED = 0 + GROUP BY 1,2; + + + CREATE INDEX w_sejours_seances_i1 + ON w_sejours_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_sejours_seances.nb_seances + FROM w_sejours_seances + WHERE w_sejours_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_sejours_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_sejours_seances.nb_seances; + + -- seances selon K 15 ou 9606 + + INSERT INTO activite.t_divers (code, description, texte, valeur) + SELECT 'K15_SEANCE', + 'Création de séances pour les actes K coefficient 15 : 0 = Jamais, 1 = Toujours, 2 = Sauf pour les séjours Hospitalisation', + 'Règle de création de séances pour les actes K coefficient 15', + '1' + WHERE 'K15_SEANCE' NOT IN (SELECT code FROM activite.t_divers) + ; + + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT + p_sejours.no_sejour, + date(PREST_DATE_DEBUT) AS date, + 1::numeric AS nb_seances + FROM prod_web100t2.DAT_PRESTATIONS_GAP + JOIN prod_web100t2.DAT_DA ON PREST_DA = DA_OID + JOIN activite[PX].p_sejours ON DA_OID = p_sejours.code_original AND date(PREST_DATE_DEBUT) BETWEEN date_entree AND date_sortie + JOIN activite.t_divers ON t_divers.code = 'K15_SEANCE' + WHERE PREST_DELETED = 0 AND + ( + PREST_CODE = 'K' AND PREST_COEFF = 15 AND t_divers.valeur IN ('1','2') OR + PREST_CODE IN ('9605','9606') + ) + GROUP BY 1,2; + + INSERT INTO w_sejours_seances(no_sejour,date,nb_seances) + SELECT + p_sejours.no_sejour, + date(PREST_DATE_DEBUT) AS date, + 1::numeric AS nb_seances + FROM prod_web100t2.DAT_PRESTATIONS_GAP + JOIN prod_web100t2.DAT_DA ON PREST_DA = DA_OID + JOIN activite[PX].p_sejours ON DA_OID = p_sejours.code_original AND date(PREST_DATE_DEBUT) BETWEEN date_entree AND date_sortie + JOIN activite.t_divers ON t_divers.code = 'K15_SEANCE' + LEFT JOIN w_sejours_seances from_ghs ON from_ghs.no_sejour = p_sejours.no_sejour + WHERE from_ghs.no_sejour IS NULL AND + PREST_DELETED = 0 AND + ( + PREST_CODE = 'K' AND PREST_COEFF = 15 AND t_divers.valeur IN ('1','2') OR + PREST_CODE IN ('9605','9606') + ) + GROUP BY 1,2 + ; + + CREATE INDEX w_sejours_seances_i1 + ON w_sejours_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_sejours_seances.nb_seances + FROM w_sejours_seances + WHERE w_sejours_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_sejours_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_sejours_seances.nb_seances; + + -- seances selon GHS pmsi + DROP TABLE IF EXISTS w_sejours_seances; + CREATE TEMP TABLE w_sejours_seances AS + SELECT + p_sejours.no_sejour, + date_entree AS date, + 1 AS nb_seances + FROM activite[PX].p_sejours + JOIN base.t_ghs ON p_sejours.ghs_id = t_ghs.oid + LEFT JOIN base.t_ghm ON p_sejours.ghm_id = t_ghm.oid + WHERE date_sortie - date_entree <= 1 AND + no_sejour != ALL (ARRAY (SELECT DISTINCT no_sejour FROM w_mouvements_sejour WHERE nb_seances > 0)::text[]) AND + ( + t_ghs.texte ilike '%séance%' OR + t_ghm.code LIKE '28%' + ); + + CREATE INDEX w_sejours_seances_i1 + ON w_sejours_seances + USING btree + (no_sejour); + + UPDATE w_mouvements_sejour + SET nb_seances = w_sejours_seances.nb_seances + FROM w_sejours_seances + WHERE w_sejours_seances.no_sejour = w_mouvements_sejour.no_sejour AND + w_sejours_seances.date = w_mouvements_sejour.date AND + w_mouvements_sejour.nb_seances IS DISTINCT FROM w_sejours_seances.nb_seances; + + + -- Nombre de seances pour forcage service seances + UPDATE w_mouvements_sejour + SET nb_seances = 1 + FROM activite[PX].p_sejours + WHERE p_sejours.no_sejour = w_mouvements_sejour.no_sejour AND + p_sejours.date_entree = w_mouvements_sejour.date AND + p_sejours.type_sejour = '5' AND + p_sejours.no_sejour != ALL (ARRAY (SELECT no_sejour FROM w_mouvements_sejour WHERE nb_seances <> 0)::text[]); + + -- une seule séance par jour pour un séjour de type séance + UPDATE w_mouvements_sejour + SET nb_seances = 0 + FROM ( + SELECT + w_mouvements_sejour.no_sejour, + date, + MAX(w_mouvements_sejour.heure_debut) as heure_debut + FROM w_mouvements_sejour + JOIN activite[PX].p_sejours ON sejour_id = p_sejours.oid + WHERE nb_seances > 0 AND type_sejour = '5' + GROUP BY 1,2 + HAVING COUNT(*) > 1 + ) ref + WHERE 1=1 + AND ref.no_sejour = w_mouvements_sejour.no_sejour + AND ref.date = w_mouvements_sejour.date + AND ref.heure_debut != w_mouvements_sejour.heure_debut + ; + + -- Prise en compte mutations ambulatoire + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'MUTATIONAMBU', + 'Traitement des mutations / ambulatoire', + '0', + '0=Prendre en compte mouvement d''entrée, 1=Prendre en compte mouvement de sortie' + WHERE 'MUTATIONAMBU' NOT IN (SELECT code FROM activite.t_divers); + ; + + DROP TABLE IF EXISTS w_correction_ambu; + CREATE TEMP TABLE w_correction_ambu AS + SELECT p_mouvements_sejour.no_sejour, + (MAX(Array[COALESCE(t_lits.est_prioritaire,'0'), to_char(heure_debut,'FM000000'),lieu_id::text]))[3]::bigint AS lieu_id, + MIN(heure_entree) AS heure_entree, + MAX(heure_sortie) AS heure_sortie + FROM w_mouvements_sejour p_mouvements_sejour + JOIN activite[PX].p_sejours ON p_mouvements_sejour.no_sejour = p_sejours.no_sejour + JOIN activite.t_divers ON t_divers.code = 'MUTATIONAMBU' ANd t_divers.valeur = '1' + JOIN activite[PX].t_lieux ON lieu_id = t_lieux.oid + JOIN activite[PX].t_lits ON t_lieux.lit_id = t_lits.oid + WHERE type_sejour = '2' AND code_sorti = '1' AND date_sortie = date_entree + GROUP BY 1 + HAVING count(*) > 1 AND count(DISTINCT date) = 1 + ; + + DELETE FROM w_mouvements_sejour p_mouvements_sejour + WHERE nb_ambulatoires = '0' AND + no_sejour = ANY (ARRAY (SELECT DISTINCT no_sejour FROM w_correction_ambu)::text[]) + ; + + UPDATE w_mouvements_sejour p_mouvements_sejour + SET lieu_id = w_correction_ambu.lieu_id, + heure_debut = heure_entree, + heure_fin = heure_sortie + FROM w_correction_ambu + WHERE p_mouvements_sejour.no_sejour = w_correction_ambu.no_sejour AND + p_mouvements_sejour.nb_ambulatoires = '1' + ; + + -- Lignes inutiles + DELETE FROM w_mouvements_sejour + WHERE + nb_entrees_directes = 0 AND + nb_sorties_directes = 0 AND + est_jour_hospitalisation <> '1' AND + nb_ambulatoires = 0 AND + nb_externes = 0 AND + nb_urgences = 0 AND + nb_seances = 0 AND + nb_entrees_mutation_service = 0 AND + nb_sorties_mutation_service = 0 AND + nb_entrees_mutation_etage = 0 AND + nb_sorties_mutation_etage = 0 AND + nb_entrees_mutation_activite = 0 AND + nb_sorties_mutation_activite = 0 AND + nb_entrees_mutation_unite_medicale = 0 AND + nb_sorties_mutation_unite_medicale = 0 AND + nb_jours_js_inclus = 0 AND + nb_jours_js_non_inclus = 0 AND + est_chambre_particuliere <> '1' AND + nb_chambres_particulieres = 0 AND + nb_bebes = 0; + + -- Doublons potentiels + DELETE FROM w_mouvements_sejour + USING ( + SELECT + no_sejour, date, heure_debut, MIN(CTID) AS keepCTID + FROM w_mouvements_sejour + WHERE heure_fin >= heure_debut + GROUP BY 1,2,3 + HAVING count(*) > 1) subview + WHERE w_mouvements_sejour.no_sejour = subview.no_sejour AND + w_mouvements_sejour.date = subview.date AND + w_mouvements_sejour.heure_debut = subview.heure_debut AND + subview.keepCTID <> w_mouvements_sejour.CTID; + + + -- Mise en production des mouvements + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_mouvements_sejour_5'); + + INSERT INTO activite[PX].p_mouvements_sejour( + sejour_id, no_sejour, date, est_mouvement_previsionnel, nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + jour_semaine, is_weekend) + SELECT sejour_id, no_sejour, date, est_mouvement_previsionnel ,nb_jours_js_non_inclus, + lieu_id, nb_entrees_directes, nb_sorties_directes, + nb_urgences, nb_externes, nb_ambulatoires, medecin_sejour_id, + nb_jours_js_inclus, nb_seances, nb_entrees_mutation_service, + nb_sorties_mutation_service, nb_entrees_mutation_activite, nb_sorties_mutation_activite, + nb_entrees_mutation_etage, nb_sorties_mutation_etage, nb_chambres_particulieres, + heure_debut, heure_fin, est_jour_entree, est_jour_sortie, est_jour_hospitalisation, + est_chambre_particuliere, + nb_entrees_mutation_unite_medicale, nb_sorties_mutation_unite_medicale, nb_bebes, + jour_semaine, is_weekend + FROM w_mouvements_sejour + WHERE heure_fin >= heure_debut + ORDER BY no_sejour, sequence; + + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_mouvements_sejour_5'); + + -- Lieux de sortie + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND p_mouvements_sejour.date = p_sejours.date_sortie AND p_mouvements_sejour.nb_sorties_directes = 1 + AND (lieu_sortie_id <> p_mouvements_sejour.lieu_id OR lieu_sortie_id IS NULL); + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour + AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL) ; + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = 0 + WHERE lieu_sortie_id IS NULL ; + + + UPDATE activite[PX].p_sejours SET lieu_sortie_id = 0 + WHERE p_sejours.code_prevu = '1' AND (p_sejours.lieu_sortie_id = 0 OR lieu_sortie_id IS NULL); + + + UPDATE activite[PX].p_sejours + SET code_sorti = '1' + FROM activite[PX].p_mouvements_sejour + WHERE p_sejours.no_sejour = p_mouvements_sejour.no_sejour AND + code_sorti = '0' AND + (nb_ambulatoires > 0 OR nb_externes > 0) AND + date_sortie <= now(); + + UPDATE activite[PX].p_sejours + SET type_sejour = '5' + FROM activite[PX].t_lieux + JOIN activite[PX].t_services_facturation ON t_services_facturation.oid = service_facturation_id + WHERE lieu_sortie_id = t_lieux.oid AND + p_sejours.type_sejour <> '5' AND + p_sejours.type_sejour <> '1' AND + t_services_facturation.type_sejour NOT IN ('2','0sauf5') AND + no_sejour IN ( + SELECT no_sejour + FROM activite[PX].p_mouvements_sejour + WHERE nb_seances > 0); + + + UPDATE activite[PX].p_mouvements_sejour + SET nb_externes = 0, nb_ambulatoires = 0 + FROM activite[PX].p_sejours + WHERE p_mouvements_sejour.no_sejour = p_sejours.no_sejour AND + p_sejours.type_sejour = '5' AND + ( + nb_externes <> 0 OR + nb_ambulatoires <> 0 + ); + + + + + + -- Forcage service selon etage + UPDATE activite[PX].t_lieux + SET service_facturation_id = t_etages.service_force_id + FROM activite[PX].t_lits + JOIN activite[PX].t_etages ON etage_id = t_etages.oid + WHERE lit_id = t_lits.oid AND + service_force_id <> 0 AND + service_facturation_id IS DISTINCT FROM t_etages.service_force_id; + + + ]]> + + + + + + + + 1 + ) subview + WHERE FAC_FACTURE.FACT_OID = subview.FACT_OID',20); + + + ]]> + + + + + 1 AND FLT_IS_DIRECT = 0 THEN RD_MONTANT ELSE 0 END) AS RD_MONTANT_HON, + MAX(CASE WHEN RD_ETS = 1 THEN FR_DATE_ENC ELSE NULL END) AS FR_DATE_ENC_ETS, + MAX(CASE WHEN RD_ETS <> 1 AND FLT_IS_DIRECT = 0 THEN FR_DATE_ENC ELSE NULL END) AS FR_DATE_ENC_HON + FROM w_DAT_DA + JOIN prod_web100t2.FAC_RGLMT_DETAILS ON RD_DA = DA_OID + JOIN prod_web100t2.FAC_REGLEMENTS ON FR_OID = RD_REGLEMENT + JOIN prod_web100t2.FAC_FACT_LIGNE_TIER ON RD_FACT_LINE = FLT_OID + GROUP BY 1; + + ALTER TABLE w_FAC_RGLMT_DETAILS ADD CONSTRAINT w_FAC_RGLMT_DETAILS_pkey PRIMARY KEY(RD_FACT_TIER); + + -- Extraction règlements si paiement direct comptabilisé + DROP TABLE IF EXISTS w_FAC_DIRECT_compta; + CREATE TEMP TABLE w_FAC_DIRECT_compta AS + SELECT FLT_FACTURE_TIER, + SUM(FLT_TOTAL_TTC) AS FLT_TOTAL_TTC + FROM prod_web100t2.FAC_FACT_LIGNE_TIER + WHERE FLT_IS_ETS = 0 AND + FLT_IS_DIRECT = -1 + GROUP BY 1 + ; + + ALTER TABLE w_FAC_DIRECT_compta ADD CONSTRAINT w_FAC_DIRECT_compta_pkey PRIMARY KEY(FLT_FACTURE_TIER); + + + + DROP TABLE IF EXISTS w_ENV_FACTURE; + CREATE TEMP TABLE w_ENV_FACTURE AS + SELECT FACT_OID, + MAX(CASE WHEN ENV_TYPE_TIER = 'AMO' THEN COALESCE(ENV_TELETRANS, ENV_CREATED) ELSE NULL END) AS ENV_TELETRANS_AMO, + MAX(CASE WHEN ENV_TYPE_TIER = 'AMC' THEN COALESCE(ENV_TELETRANS, ENV_CREATED) ELSE NULL END) AS ENV_TELETRANS_AMC, + MAX(CASE WHEN ENV_TYPE_TIER = 'AMD' THEN COALESCE(ENV_TELETRANS, ENV_CREATED) ELSE NULL END) AS ENV_TELETRANS_AMD, + MAX(FACT_DATE) AS ENV_TELETRANS_CLI + FROM prod_web100t2.FAC_FACTURE + JOIN prod_web100t2.FAC_FACT_TIER ON FT_FACTURE = FACT_OID + LEFT JOIN prod_web100t2.ENV_FACTURE ON FT_OID = EF_FACTURE + LEFT JOIN prod_web100t2.ENV_ENVOI ON ENV_OID = EF_ENVOI + GROUP BY 1; + + ALTER TABLE w_ENV_FACTURE ADD CONSTRAINT w_ENV_FACTURE_pkey PRIMARY KEY(FACT_OID); + + + DROP TABLE IF EXISTS w_FAC_FACTURE_od; + CREATE TEMP TABLE w_FAC_FACTURE_od AS + SELECT FAC_FACTURE.FACT_OID, + CASE + WHEN FAC_FACTURE.FACT_TYPE = 2 AND FAC_FACTURE.FACT_TYPE <> FAC_FACTURE_PRED.FACT_TYPE THEN FAC_FACTURE_PRED.FACT_NUMERO + WHEN FAC_FACTURE.FACT_TYPE <> 2 AND FAC_FACTURE.FACT_TYPE <> FAC_FACTURE_NEXT.FACT_TYPE THEN FAC_FACTURE_NEXT.FACT_NUMERO + ELSE NULL END AS FACT_NUMERO_OD + FROM prod_web100t2.FAC_FACTURE + LEFT JOIN prod_web100t2.FAC_FACTURE FAC_FACTURE_PRED ON FAC_FACTURE.FACT_PRED_FACTURE = FAC_FACTURE_PRED.FACT_OID + LEFT JOIN prod_web100t2.FAC_FACTURE FAC_FACTURE_NEXT ON FAC_FACTURE.FACT_NEXT_FACTURE = FAC_FACTURE_NEXT.FACT_OID + WHERE FAC_FACTURE.FACT_PRED_FACTURE <> 0 OR FAC_FACTURE.FACT_NEXT_FACTURE <> 0; + + ALTER TABLE w_FAC_FACTURE_od ADD CONSTRAINT w_FAC_FACTURE_od_pkey PRIMARY KEY(FACT_OID); + + + -- Date de comptabilisation + DROP TABLE IF EXISTS w_FAC_FACTURE_vente; + CREATE TEMP TABLE w_FAC_FACTURE_vente AS + SELECT FAC_FACTURE.FACT_OID, + MAX(FACT_TOTAL_ETS) AS w_FACT_TOTAL_ETS, + MAX(FACT_TOTAL_HO) AS w_FACT_TOTAL_HO, + MAX(FACT_DATE) AS w_FACT_DATE, + COALESCE(MIN(CASE + WHEN LNK_TYPE = 'FACT' THEN ECR_DATE + ELSE NULL END) + ,'20991231') AS ECR_DATE + FROM prod_web100t2.FAC_FACTURE + LEFT JOIN w_CPT_ECRITURE_source_OP_LINK ON + FACT_OID = ECR_REF_OID AND + ECR_REF_TYPE = 'FACTURE' AND + LNK_TYPE IN ('FACT') AND + ( + ECR_TYPE IN ('CLIENT','IMPAYE','VENTE-DIRECTE','VENTE-DEP','VENTE-HON') AND LNK_ERROR = '' OR + LNK_JOURNAL = 'VE' + ) + GROUP BY 1; + + ALTER TABLE w_FAC_FACTURE_vente ADD CONSTRAINT w_FAC_FACTURE_vente_pkey PRIMARY KEY(FACT_OID); + + -- Forcage date ventes pour facturés non comptabilisés (sur les factures non comptabilisées, placer la date du jour) + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'WEB100T_FORCE_DATE_VENTE', + 'Antériorité date facture (jours) pour forçage date vente si non comptabilisé', + '3', + 'Antériorité date facture (jours) pour forçage date vente si non comptabilisé' + WHERE 'WEB100T_FORCE_DATE_VENTE' NOT IN (SELECT code FROM activite.t_divers); + ; + + + UPDATE w_FAC_FACTURE_vente + SET ECR_DATE = date(now()) + FROM prod_web100t2.FAC_FACTURE + JOIN activite.t_divers ON t_divers.code = 'WEB100T_FORCE_DATE_VENTE' + WHERE FAC_FACTURE.FACT_OID = w_FAC_FACTURE_vente.FACT_OID AND + ECR_DATE = '20991231' AND + date(FACT_DATE) >= date(now() - (t_divers.valeur||' day')::interval) + ; + + -- Cas spécial de factures additives honoraires qui ne seraient pas trouvées (cf Saint Claude) + UPDATE w_FAC_FACTURE_vente + SET ECR_DATE = date_trunc('month',w_FACT_DATE)+interval '1 month' - interval '1 day' + WHERE date(ECR_DATE) = '20991231' AND + w_FACT_TOTAL_ETS = 0 AND + w_FACT_TOTAL_HO <> 0 + ; + + + DROP TABLE IF EXISTS w_FAC_FACTURE_cpt; + CREATE TEMP TABLE w_FAC_FACTURE_cpt AS + SELECT + FACT_OID, + + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER <> 'ETS' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_ETS, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'CLI' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_ETS_CLI, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMO' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_ETS_AMO, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMC' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_ETS_AMC, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMD' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_ETS_AMD, + + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER <> 'ETS' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_HON, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'CLI' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_HON_CLI, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMO' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_HON_AMO, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMC' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_HON_AMC, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMD' THEN FLT_TOTAL_TTC ELSE 0 END) AS FLT_TOTAL_CPT_HON_AMD, + + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER <> 'ETS' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'CLI' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS_CLI, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMO' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS_AMO, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMC' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS_AMC, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMD' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS_AMD, + + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER <> 'ETS' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'CLI' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON_CLI, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMO' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON_AMO, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMC' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON_AMC, + SUM(CASE WHEN COALESCE(ECR_DATE,'20991231') <> '20991231' AND FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMD' THEN 0-FLT_IMPAYE ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON_AMD + + FROM prod_web100t2.FAC_FACT_LIGNE_TIER + JOIN prod_web100t2.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN w_FAC_FACTURE_vente ON FLT_FACTURE = FACT_OID + WHERE FLT_RECAP <> 0 + GROUP BY 1; + + ALTER TABLE w_FAC_FACTURE_cpt ADD CONSTRAINT w_FAC_FACTURE_cpt_pkey PRIMARY KEY(FACT_OID); + + + + + DROP TABLE IF EXISTS w_FAC_FACTURE; + CREATE TEMP TABLE w_FAC_FACTURE AS + SELECT FAC_FACTURE.FACT_OID, + FAC_FACTURE.FACT_NUMERO, + FAC_FACTURE.FACT_DA, + FAC_FACTURE.FACT_TYPE, + FAC_FACTURE.FACT_PERIODE, + FAC_FACTURE.FACT_DATE, + + MAX(CASE WHEN FT_TYPE_TIER = 'AMO' THEN FT_ORGANISME::text ELSE '' END) AS FT_ORGANISME_AMO, + MAX(CASE WHEN FT_TYPE_TIER = 'AMC' THEN FT_ORGANISME::text ELSE '' END) AS FT_ORGANISME_AMC, + MAX(CASE WHEN FT_TYPE_TIER = 'AMD' THEN FT_ORGANISME::text ELSE '' END) AS FT_ORGANISME_AMD, + + SUM(CASE WHEN FT_TYPE_TIER <> 'ETS' THEN FT_TOTAL_ETS ELSE 0 END) AS FACT_TOTAL_ETS, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN FT_TOTAL_ETS ELSE 0 END) AS FT_TOTAL_ETS_AMO, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN FT_TOTAL_ETS ELSE 0 END) AS FT_TOTAL_ETS_AMC, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN FT_TOTAL_ETS ELSE 0 END) AS FT_TOTAL_ETS_AMD, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN FT_TOTAL_ETS ELSE 0 END) AS FT_TOTAL_ETS_CLI, + + SUM(CASE WHEN FT_TYPE_TIER <> 'ETS' THEN FT_TOTAL_HO ELSE 0 END) AS FACT_TOTAL_HO, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN FT_TOTAL_HO ELSE 0 END) AS FT_TOTAL_HO_AMO, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN FT_TOTAL_HO ELSE 0 END) AS FT_TOTAL_HO_AMC, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN FT_TOTAL_HO ELSE 0 END) AS FT_TOTAL_HO_AMD, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN FT_TOTAL_HO ELSE 0 END) AS FT_TOTAL_HO_CLI, + + '20991231'::date AS ENV_TELETRANS, + MAX(CASE WHEN FT_TYPE_TIER = 'AMO' THEN COALESCE(ENV_TELETRANS_AMO,'20991231') ELSE '00010101' END) AS ENV_TELETRANS_AMO, + MAX(CASE WHEN FT_TYPE_TIER = 'AMC' THEN COALESCE(ENV_TELETRANS_AMC,'20991231') ELSE '00010101' END) AS ENV_TELETRANS_AMC, + MAX(CASE WHEN FT_TYPE_TIER = 'AMD' THEN COALESCE(ENV_TELETRANS_AMD,'20991231') ELSE '00010101' END) AS ENV_TELETRANS_AMD, + MAX(CASE WHEN FT_TYPE_TIER = 'CLI' THEN COALESCE(ENV_TELETRANS_CLI,'20991231') ELSE '00010101' END) AS ENV_TELETRANS_CLI, + + '1'::text AS ENV_Q_TELETRANS, + '1'::text AS ENV_Q_TELETRANS_AMO, + '1'::text AS ENV_Q_TELETRANS_AMC, + '1'::text AS ENV_Q_TELETRANS_AMD, + '1'::text AS ENV_Q_TELETRANS_CLI, + + SUM(COALESCE(RD_MONTANT_ETS,0)) AS RD_MONTANT_ETS, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN COALESCE(RD_MONTANT_ETS,0) ELSE 0 END) AS RD_MONTANT_ETS_AMO, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN COALESCE(RD_MONTANT_ETS,0) ELSE 0 END) AS RD_MONTANT_ETS_AMC, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN COALESCE(RD_MONTANT_ETS,0) ELSE 0 END) AS RD_MONTANT_ETS_AMD, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN COALESCE(RD_MONTANT_ETS,0) ELSE 0 END) AS RD_MONTANT_ETS_CLI, + + SUM(COALESCE(RD_MONTANT_HON,0)+COALESCE(FLT_TOTAL_TTC,0)) AS RD_MONTANT_HON, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN COALESCE(RD_MONTANT_HON,0)+COALESCE(FLT_TOTAL_TTC,0) ELSE 0 END) AS RD_MONTANT_HON_AMO, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN COALESCE(RD_MONTANT_HON,0)+COALESCE(FLT_TOTAL_TTC,0) ELSE 0 END) AS RD_MONTANT_HON_AMC, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN COALESCE(RD_MONTANT_HON,0)+COALESCE(FLT_TOTAL_TTC,0) ELSE 0 END) AS RD_MONTANT_HON_AMD, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN COALESCE(RD_MONTANT_HON,0)+COALESCE(FLT_TOTAL_TTC,0) ELSE 0 END) AS RD_MONTANT_HON_CLI, + + MAX(GREATEST(COALESCE(FR_DATE_ENC_ETS,'00010101'), COALESCE(FR_DATE_ENC_HON,'00010101'))) AS FR_DATE_ENC, + + MAX(COALESCE(FR_DATE_ENC_ETS,'00010101')) AS FR_DATE_ENC_ETS, + MAX(CASE WHEN FT_TYPE_TIER = 'AMO' THEN COALESCE(FR_DATE_ENC_ETS,'00010101') ELSE '00010101' END) AS FR_DATE_ENC_ETS_AMO, + MAX(CASE WHEN FT_TYPE_TIER = 'AMC' THEN COALESCE(FR_DATE_ENC_ETS,'00010101') ELSE '00010101' END) AS FR_DATE_ENC_ETS_AMC, + MAX(CASE WHEN FT_TYPE_TIER = 'AMD' THEN COALESCE(FR_DATE_ENC_ETS,'00010101') ELSE '00010101' END) AS FR_DATE_ENC_ETS_AMD, + MAX(CASE WHEN FT_TYPE_TIER = 'CLI' THEN COALESCE(FR_DATE_ENC_ETS,'00010101') ELSE '00010101' END) AS FR_DATE_ENC_ETS_CLI, + + MAX(COALESCE(FR_DATE_ENC_HON,'00010101')) AS FR_DATE_ENC_HON, + MAX(CASE WHEN FT_TYPE_TIER = 'AMO' THEN COALESCE(FR_DATE_ENC_HON,'00010101') ELSE '00010101' END) AS FR_DATE_ENC_HON_AMO, + MAX(CASE WHEN FT_TYPE_TIER = 'AMC' THEN COALESCE(FR_DATE_ENC_HON,'00010101') ELSE '00010101' END) AS FR_DATE_ENC_HON_AMC, + MAX(CASE WHEN FT_TYPE_TIER = 'AMD' THEN COALESCE(FR_DATE_ENC_HON,'00010101') ELSE '00010101' END) AS FR_DATE_ENC_HON_AMD, + MAX(CASE WHEN FT_TYPE_TIER = 'CLI' THEN COALESCE(FR_DATE_ENC_HON,'00010101') ELSE '00010101' END) AS FR_DATE_ENC_HON_CLI + + + FROM w_DAT_DA + JOIN prod_web100t2.FAC_FACTURE ON FACT_DA = DA_OID + LEFT JOIN prod_web100t2.FAC_FACT_TIER ON FT_FACTURE = FAC_FACTURE.FACT_OID + LEFT JOIN w_FAC_RGLMT_DETAILS ON FT_OID = RD_FACT_TIER + LEFT JOIN w_FAC_DIRECT_compta ON FT_OID = FLT_FACTURE_TIER + LEFT JOIN w_ENV_FACTURE ON FT_FACTURE = w_ENV_FACTURE.FACT_OID + GROUP BY 1,2,3,4,5,6 + ORDER BY 1; + + ALTER TABLE w_FAC_FACTURE ADD CONSTRAINT w_FAC_FACTURE_pkey PRIMARY KEY(FACT_OID); + + + UPDATE w_FAC_FACTURE + SET ENV_TELETRANS_AMO = FACT_DATE, + ENV_Q_TELETRANS_AMO = '0' + WHERE ENV_TELETRANS_AMO IN ('20991231', '00010101') AND FT_TOTAL_ETS_AMO = 0 AND FT_TOTAL_HO_AMO = 0; + + UPDATE w_FAC_FACTURE + SET ENV_Q_TELETRANS_AMO = '0' + WHERE ENV_TELETRANS_AMO IN ('20991231', '00010101') ; + + UPDATE w_FAC_FACTURE + SET ENV_TELETRANS_AMC = FACT_DATE, + ENV_Q_TELETRANS_AMC = '0' + WHERE ENV_TELETRANS_AMC IN ('20991231', '00010101') AND FT_TOTAL_ETS_AMC = 0 AND FT_TOTAL_HO_AMC = 0; + + UPDATE w_FAC_FACTURE + SET ENV_Q_TELETRANS_AMC = '0' + WHERE ENV_TELETRANS_AMC IN ('20991231', '00010101') ; + + UPDATE w_FAC_FACTURE + SET ENV_TELETRANS_AMD = FACT_DATE, + ENV_Q_TELETRANS_AMD = '0' + WHERE ENV_TELETRANS_AMD IN ('20991231', '00010101') AND FT_TOTAL_ETS_AMD = 0 AND FT_TOTAL_HO_AMD = 0; + + UPDATE w_FAC_FACTURE + SET ENV_Q_TELETRANS_AMD = '0' + WHERE ENV_TELETRANS_AMD IN ('20991231', '00010101') ; + + + UPDATE w_FAC_FACTURE + SET ENV_TELETRANS = GREATEST(ENV_TELETRANS_AMO,ENV_TELETRANS_AMC,ENV_TELETRANS_AMD,ENV_TELETRANS_CLI); + + + UPDATE w_FAC_FACTURE + SET ENV_Q_TELETRANS = '0' + WHERE ENV_TELETRANS IN ('20991231', '00010101') ; + + -- Montants honoraires comptabilisés en clinique + -- Ces montants ne sont pas compté en montant facturé chez Web100T. Il faut les changer de type dans les totaux + + DROP TABLE IF EXISTS w_FAC_FACTURE_HON_ETS; + CREATE TEMP TABLE w_FAC_FACTURE_HON_ETS AS + SELECT FAC_FACTURE.FACT_OID, + SUM(FLT_TOTAL_TTC) AS HON_ETS, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN FLT_TOTAL_TTC ELSE 0 END) AS HON_ETS_AMO, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN FLT_TOTAL_TTC ELSE 0 END) AS HON_ETS_AMC, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN FLT_TOTAL_TTC ELSE 0 END) AS HON_ETS_AMD, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN FLT_TOTAL_TTC ELSE 0 END) AS HON_ETS_CLI + FROM prod_web100t2.FAC_FACT_LIGNE_TIER + JOIN prod_web100t2.FAC_FACTURE ON FLT_FACTURE = FACT_OID + JOIN prod_web100t2.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN prod_web100t2.FAC_FACT_LIGNE ON FLT_LIGNE_FACTURE = LI_OID + WHERE FLT_IS_ETS = 1 AND LI_TYPE_B2 = '4' AND FLT_RECAP <> 0 + GROUP BY 1; + + UPDATE w_FAC_FACTURE SET + FACT_TOTAL_ETS = FACT_TOTAL_ETS - HON_ETS, + FT_TOTAL_ETS_AMO = FT_TOTAL_ETS_AMO - HON_ETS_AMO, + FT_TOTAL_ETS_AMC = FT_TOTAL_ETS_AMC - HON_ETS_AMC, + FT_TOTAL_ETS_AMD = FT_TOTAL_ETS_AMD - HON_ETS_AMD, + FT_TOTAL_ETS_CLI = FT_TOTAL_ETS_CLI - HON_ETS_CLI, + FACT_TOTAL_HO = FACT_TOTAL_HO + HON_ETS, + FT_TOTAL_HO_AMO = FT_TOTAL_HO_AMO + HON_ETS_AMO, + FT_TOTAL_HO_AMC = FT_TOTAL_HO_AMC + HON_ETS_AMC, + FT_TOTAL_HO_AMD = FT_TOTAL_HO_AMD + HON_ETS_AMD, + FT_TOTAL_HO_CLI = FT_TOTAL_HO_CLI + HON_ETS_CLI + FROM w_FAC_FACTURE_HON_ETS + WHERE w_FAC_FACTURE_HON_ETS.FACT_OID = w_FAC_FACTURE.FACT_OID; + + + + -- Traitement des impayés comptabilisés en ventes + DROP TABLE IF EXISTS w_FAC_FACT_LIGNE_TIER_IMPAYE; + CREATE TEMP TABLE w_FAC_FACT_LIGNE_TIER_IMPAYE AS + SELECT + FI_FACTURE AS FACT_IMPAYE_OID, + to_char(FI_DATE,'YYMM') AS MOIS_IMPAYE, + FIL_CREANCE AS FLT_IMPAYE_OID, + FI_COMPTA, + date(MAX(FI_DATE)) AS ECR_IMPAYE_DATE, + + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS, + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'CLI' THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS_CLI, + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMO' THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS_AMO, + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMC' THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS_AMC, + SUM(CASE WHEN FLT_IS_ETS = 1 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMD' THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_ETS_AMD, + + SUM(CASE WHEN FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON, + SUM(CASE WHEN FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'CLI' THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON_CLI, + SUM(CASE WHEN FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMO' THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON_AMO, + SUM(CASE WHEN FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMC' THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON_AMC, + SUM(CASE WHEN FLT_IS_ETS = 0 AND FLT_IS_DIRECT <= 0 AND FT_TYPE_TIER = 'AMD' THEN 0-FIL_MONTANT ELSE 0 END) AS FLT_TOTAL_IMPAYE_HON_AMD + FROM prod_web100t2.FAC_FACT_IMPAYE + JOIN prod_web100t2.FAC_FACT_IMPAYE_LINE ON FIL_IMPAYE = FAC_FACT_IMPAYE.FI_OID + JOIN prod_web100t2.FAC_FACT_LIGNE_TIER ON FIL_CREANCE = FLT_OID + JOIN prod_web100t2.FAC_FACT_TIER ON FI_FACT_TIER = FT_OID + JOIN w_FAC_FACTURE ON FI_FACTURE = FACT_OID + GROUP BY 1,2,3,4 + ORDER BY 1,2,3; + + DROP TABLE IF EXISTS w_FAC_FACT_IMPAYE; + CREATE Temp table w_FAC_FACT_IMPAYE AS + SELECT + FACT_IMPAYE_OID, + MOIS_IMPAYE, + FI_COMPTA, + MAX(ECR_IMPAYE_DATE) AS ECR_IMPAYE_DATE, + + SUM(FLT_TOTAL_IMPAYE_ETS) AS FT_TOTAL_IMPAYE_ETS, + SUM(FLT_TOTAL_IMPAYE_ETS_CLI) AS FT_TOTAL_IMPAYE_ETS_CLI, + SUM(FLT_TOTAL_IMPAYE_ETS_AMO) AS FT_TOTAL_IMPAYE_ETS_AMO, + SUM(FLT_TOTAL_IMPAYE_ETS_AMC) AS FT_TOTAL_IMPAYE_ETS_AMC, + SUM(FLT_TOTAL_IMPAYE_ETS_AMD) AS FT_TOTAL_IMPAYE_ETS_AMD, + + SUM(FLT_TOTAL_IMPAYE_HON) AS FT_TOTAL_IMPAYE_HON, + SUM(FLT_TOTAL_IMPAYE_HON_CLI) AS FT_TOTAL_IMPAYE_HON_CLI, + SUM(FLT_TOTAL_IMPAYE_HON_AMO) AS FT_TOTAL_IMPAYE_HON_AMO, + SUM(FLT_TOTAL_IMPAYE_HON_AMC) AS FT_TOTAL_IMPAYE_HON_AMC, + SUM(FLT_TOTAL_IMPAYE_HON_AMD) AS FT_TOTAL_IMPAYE_HON_AMD + FROM w_FAC_FACT_LIGNE_TIER_IMPAYE + GROUP BY 1,2,3; + + + + DROP TABLE IF EXISTS w_factures; + CREATE TEMP TABLE w_factures AS + SELECT + w_FAC_FACTURE.FACT_OID, + + nextval('activite[PX].s_factures'::regclass) AS oid, + no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.lieu_sortie_id, + FACT_NUMERO AS no_facture, + + FACT_NUMERO AS no_facture_reference, + 0::bigint AS facture_reference_id, + COALESCE(FACT_NUMERO_OD,'') AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id, + + 0::bigint AS IMPAYE, + + COALESCE(t_tiers_payant_1.oid,0) AS tiers_payant_1_id, + COALESCE(t_tiers_payant_2.oid,0) AS tiers_payant_2_id, + COALESCE(t_tiers_payant_22.oid,0) AS tiers_payant_22_id, + p_sejours.tiers_payant_0_id, + + COALESCE(PF_DEBUT,date_entree) AS date_debut, + COALESCE(PF_FIN,date_sortie) AS date_fin, + CASE + WHEN FACT_TYPE = 1 AND FACT_NUMERO_OD IS NOT NULL THEN 'X' + WHEN FACT_TYPE = 4 AND FACT_NUMERO_OD IS NOT NULL THEN 'X' + WHEN FACT_TYPE = 1 THEN '0' + WHEN FACT_TYPE = 2 THEN '1' + WHEN FACT_TYPE = 4 THEN '2' + ELSE '0' END AS type_facture, + + '1'::text AS code_facture, + w_FAC_FACTURE.FACT_DATE AS date_facture, + 0::numeric AS delai_facture, + + CASE WHEN ECR_DATE <> '20991231' THEN '1'::text ELSE '0'::text END AS code_vente, + ECR_DATE AS date_vente, + extract('year' FROM ECR_DATE) * 100 + extract('month' FROM ECR_DATE) AS mois_vente, + + '0'::text AS code_cloture, + + '20991231'::date AS date_encours, + + ''::text AS particularite_t2a, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id, + p_sejours.code_cp_demandee, + + 0::numeric AS nb_rejets, + + FACT_TOTAL_ETS AS montant_facture_c, + FACT_TOTAL_HO AS montant_facture_h, + FT_TOTAL_ETS_CLI AS montant_facture_0_c, + FT_TOTAL_HO_CLI AS montant_facture_0_h, + FT_TOTAL_ETS_AMO AS montant_facture_1_c, + FT_TOTAL_HO_AMO AS montant_facture_1_h, + FT_TOTAL_ETS_AMC AS montant_facture_2_c, + FT_TOTAL_HO_AMC AS montant_facture_2_h, + FT_TOTAL_ETS_AMD AS montant_facture_22_c, + FT_TOTAL_HO_AMD AS montant_facture_22_h, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_ETS,0) AS montant_comptabilise_c, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_HON,0) AS montant_comptabilise_h, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_ETS_CLI,0) AS montant_comptabilise_0_c, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_HON_CLI,0) AS montant_comptabilise_0_h, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_ETS_AMO,0) AS montant_comptabilise_1_c, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_HON_AMO,0) AS montant_comptabilise_1_h, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_ETS_AMC,0) AS montant_comptabilise_2_c, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_HON_AMC,0) AS montant_comptabilise_2_h, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_ETS_AMD,0) AS montant_comptabilise_22_c, + COALESCE(w_FAC_FACTURE_cpt.FLT_TOTAL_CPT_HON_AMD,0) AS montant_comptabilise_22_h, + 0::numeric AS montant_comptabilise_budget_global_c, + + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + + ENV_TELETRANS AS date_expedition, + ENV_TELETRANS_CLI AS date_expedition_0, + ENV_TELETRANS_AMO AS date_expedition_1, + ENV_TELETRANS_AMC AS date_expedition_2, + ENV_TELETRANS_AMD AS date_expedition_22, + ENV_Q_TELETRANS_CLI AS code_expedie_0, + ENV_Q_TELETRANS_AMO AS code_expedie_1, + ENV_Q_TELETRANS_AMC AS code_expedie_2, + ENV_Q_TELETRANS_AMD AS code_expedie_22, + ''::text AS no_bordereau_0, + ''::text AS no_bordereau_1, + ''::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + 0::numeric AS delai_expedition, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + + RD_MONTANT_ETS AS montant_regle_c, + RD_MONTANT_HON AS montant_regle_h, + RD_MONTANT_ETS_CLI AS montant_regle_0_c, + RD_MONTANT_HON_CLI AS montant_regle_0_h, + RD_MONTANT_ETS_AMO AS montant_regle_1_c, + RD_MONTANT_HON_AMO AS montant_regle_1_h, + RD_MONTANT_ETS_AMC AS montant_regle_2_c, + RD_MONTANT_HON_AMC AS montant_regle_2_h, + RD_MONTANT_ETS_AMD AS montant_regle_22_c, + RD_MONTANT_HON_AMD AS montant_regle_22_h, + + FR_DATE_ENC AS date_solde, + FR_DATE_ENC_ETS AS date_solde_c, + FR_DATE_ENC_HON AS date_solde_h, + FR_DATE_ENC_ETS_CLI AS date_solde_0_c, + FR_DATE_ENC_HON_CLI AS date_solde_0_h, + FR_DATE_ENC_ETS_AMO AS date_solde_1_c, + FR_DATE_ENC_HON_AMO AS date_solde_1_h, + FR_DATE_ENC_ETS_AMC AS date_solde_2_c, + FR_DATE_ENC_HON_AMC AS date_solde_2_h, + FR_DATE_ENC_ETS_AMD AS date_solde_22_c, + FR_DATE_ENC_HON_AMD AS date_solde_22_h, + 0::numeric AS delai_solde, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + + '00010101'::date AS date_solde_reference, + '00010101'::date AS date_solde_reference_c, + '00010101'::date AS date_solde_reference_h, + '00010101'::date AS date_solde_reference_0_c, + '00010101'::date AS date_solde_reference_1_c, + '00010101'::date AS date_solde_reference_2_c, + '00010101'::date AS date_solde_reference_22_c, + '00010101'::date AS date_solde_reference_0_h, + '00010101'::date AS date_solde_reference_1_h, + '00010101'::date AS date_solde_reference_2_h, + '00010101'::date AS date_solde_reference_22_h + + FROM w_FAC_FACTURE + JOIN activite[PX].p_sejours ON FACT_DA = p_sejours.code_original AND p_sejours.etat = '' + LEFT JOIN w_FAC_FACTURE_vente ON w_FAC_FACTURE.FACT_OID = w_FAC_FACTURE_vente.FACT_OID + LEFT JOIN w_FAC_FACTURE_cpt ON w_FAC_FACTURE.FACT_OID = w_FAC_FACTURE_cpt.FACT_OID + LEFT JOIN prod_web100t2.FAC_PERIODE_FACTU ON FACT_PERIODE = PF_OID + LEFT JOIN w_FAC_FACTURE_od ON w_FAC_FACTURE.FACT_OID = w_FAC_FACTURE_od.FACT_OID + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_1 ON FT_ORGANISME_AMO = t_tiers_payant_1.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON FT_ORGANISME_AMC = t_tiers_payant_2.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_22 ON FT_ORGANISME_AMD = t_tiers_payant_22.code_original; + + ANALYSE w_factures + ; + + CREATE INDEX w_factures_i1 ON w_factures USING btree (FACT_OID) + ; + + + -- Facture fictive pour impayés + INSERT INTo w_factures + SELECT + w_FAC_FACTURE.FACT_OID, + + nextval('activite[PX].s_factures'::regclass) AS oid, + no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.lieu_sortie_id, + FACT_NUMERO || '-IM' || FI_COMPTA::text AS no_facture, + + FACT_NUMERO AS no_facture_reference, + 0::bigint AS facture_reference_id, + FACT_NUMERO AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id, + + FI_COMPTA AS IMPAYE, + + COALESCE(t_tiers_payant_1.oid,0) AS tiers_payant_1_id, + COALESCE(t_tiers_payant_2.oid,0) AS tiers_payant_2_id, + COALESCE(t_tiers_payant_22.oid,0) AS tiers_payant_22_id, + p_sejours.tiers_payant_0_id, + + COALESCE(PF_DEBUT,date_entree) AS date_debut, + COALESCE(PF_FIN,date_sortie) AS date_fin, + 'X' AS type_facture, + + '1'::text AS code_facture, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_facture, + 0::numeric AS delai_facture, + + '1' AS code_vente, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_vente, + extract('year' FROM w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE) * 100 + extract('month' FROM w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE) AS mois_vente, + + '0'::text AS code_cloture, + + '20991231'::date AS date_encours, + + ''::text AS particularite_t2a, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id, + p_sejours.code_cp_demandee, + + 0::numeric AS nb_rejets, + + 0 AS montant_facture_c, + 0 AS montant_facture_h, + 0 AS montant_facture_0_c, + 0 AS montant_facture_0_h, + 0 AS montant_facture_1_c, + 0 AS montant_facture_1_h, + 0 AS montant_facture_2_c, + 0 AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_ETS AS montant_comptabilise_c, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_HON AS montant_comptabilise_h, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_ETS_CLI AS montant_comptabilise_0_c, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_HON_CLI AS montant_comptabilise_0_h, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_ETS_AMO AS montant_comptabilise_1_c, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_HON_AMO AS montant_comptabilise_1_h, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_ETS_AMC AS montant_comptabilise_2_c, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_HON_AMC AS montant_comptabilise_2_h, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_ETS_AMD AS montant_comptabilise_22_c, + w_FAC_FACT_IMPAYE.FT_TOTAL_IMPAYE_HON_AMD AS montant_comptabilise_22_h, + 0::numeric AS montant_comptabilise_budget_global_c, + + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + + '20991231'::date AS date_expedition, + '20991231'::date AS date_expedition_0, + '20991231'::date AS date_expedition_1, + '20991231'::date AS date_expedition_2, + '20991231'::date AS date_expedition_22, + '0'::text AS code_expedie_0, + '0'::text AS code_expedie_1, + '0'::text AS code_expedie_2, + '0'::text AS code_expedie_22, + ''::text AS no_bordereau_0, + ''::text AS no_bordereau_1, + ''::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + 0::numeric AS delai_expedition, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + 0::numeric AS montant_regle_1_h, + 0::numeric AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde_c, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde_h, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde_0_c, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde_0_h, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde_1_c, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde_1_h, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde_2_c, + w_FAC_FACT_IMPAYE.ECR_IMPAYE_DATE AS date_solde_2_h, + '00010101'::date AS date_solde_22_c, + '00010101'::date AS date_solde_22_h, + 0::numeric AS delai_solde, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + + '00010101'::date AS date_solde_reference, + '00010101'::date AS date_solde_reference_c, + '00010101'::date AS date_solde_reference_h, + '00010101'::date AS date_solde_reference_0_c, + '00010101'::date AS date_solde_reference_1_c, + '00010101'::date AS date_solde_reference_2_c, + '00010101'::date AS date_solde_reference_22_c, + '00010101'::date AS date_solde_reference_0_h, + '00010101'::date AS date_solde_reference_1_h, + '00010101'::date AS date_solde_reference_2_h, + '00010101'::date AS date_solde_reference_22_h + + FROM w_FAC_FACTURE + JOIN activite[PX].p_sejours ON FACT_DA = p_sejours.code_original AND p_sejours.etat = '' + JOIN w_FAC_FACT_IMPAYE ON w_FAC_FACTURE.FACT_OID = w_FAC_FACT_IMPAYE.FACT_IMPAYE_OID + LEFT JOIN prod_web100t2.FAC_PERIODE_FACTU ON FACT_PERIODE = PF_OID + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_1 ON FT_ORGANISME_AMO = t_tiers_payant_1.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_2 ON FT_ORGANISME_AMC = t_tiers_payant_2.code_original + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant_22 ON FT_ORGANISME_AMD = t_tiers_payant_22.code_original; + + UPDATE w_factures SET + facture_od_avoir_id = w_factures_od_avoir.oid + FROM w_factures w_factures_od_avoir + WHERE w_factures.no_facture_od_avoir = w_factures_od_avoir.no_facture AND w_factures.no_facture_od_avoir <> ''; + + + + + + UPDATE w_factures SET + date_debut = date_entree, + date_fin = CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid AND + avec_facturation_intermediaire IS DISTINCT FROM '1' + WHERE w_factures.no_sejour = p_sejours.no_sejour AND + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END - date_entree < 30 AND + ( + w_factures.date_debut <> date_entree OR + w_factures.date_fin <> CASE WHEN code_sorti = '1' THEN date_sortie ELSE date_fin END + ); + + + + DROP TABLE IF EXISTS w_sejours_facture_reference; + CREATE TEMP TABLE w_sejours_facture_reference AS + SELECT + no_sejour, + date_debut, + MAX(date_fin) AS date_fin, + MAX(w_factures.no_facture) AS no_facture_last, + MAX(CASE WHEN type_facture = '0' THEN w_factures.no_facture ELSE null END) AS no_facture_reference_last, + MAX(CASE WHEN type_facture <> '1' THEN w_factures.no_facture ELSE null END) AS no_facture_reference_last_2, + MAX(w_factures.oid) AS facture_id_last, + MAX(CASE WHEN type_facture = '0' THEN w_factures.oid ELSE null END) AS facture_id_reference_last, + MAX(CASE WHEN type_facture <> '1' THEN w_factures.oid ELSE null END) AS facture_id_reference_last_2 + FROM w_factures + GROUP BY 1,2; + + CREATE INDEX w_sejours_facture_reference_i1 + ON w_sejours_facture_reference + USING btree + (no_sejour); + + UPDATE w_sejours_facture_reference + SET facture_id_last = w_factures_references.oid + FROM w_factures w_factures_references + WHERE w_sejours_facture_reference.no_facture_last = w_factures_references.no_facture + AND w_sejours_facture_reference.facture_id_last <> w_factures_references.oid; + + + UPDATE w_sejours_facture_reference + SET facture_id_reference_last = w_factures_references.oid + FROM w_factures w_factures_references + WHERE w_sejours_facture_reference.no_facture_reference_last = w_factures_references.no_facture + AND w_sejours_facture_reference.facture_id_reference_last <> w_factures_references.oid; + + UPDATE w_sejours_facture_reference + SET facture_id_reference_last_2 = w_factures_references.oid + FROM w_factures w_factures_references + WHERE w_sejours_facture_reference.no_facture_reference_last_2 = w_factures_references.no_facture + AND w_sejours_facture_reference.facture_id_reference_last_2 <> w_factures_references.oid; + + + + UPDATE w_factures + SET + no_facture_reference = COALESCE(no_facture_reference_last, no_facture_reference_last_2, no_facture_last), + facture_reference_id = COALESCE(facture_id_reference_last, facture_id_reference_last_2, facture_id_last) + FROM w_sejours_facture_reference + WHERE w_factures.no_sejour = w_sejours_facture_reference.no_sejour AND + w_factures.date_debut BETWEEN w_sejours_facture_reference.date_debut AND w_sejours_facture_reference.date_fin AND + ( + no_facture_reference IS DISTINCT FROM COALESCE(no_facture_reference_last, no_facture_reference_last_2, no_facture_last) OR + facture_reference_id IS DISTINCT FROM COALESCE(facture_id_reference_last, facture_id_reference_last_2, facture_id_last) + ); + + + + + UPDATE w_factures + SET no_facture_reference = no_facture + WHERE (no_facture_reference IS NULL OR no_facture_reference = ''); + + + UPDATE w_factures + SET type_facture = '0' + WHERE w_factures.type_facture = '2' AND + w_factures.no_facture = w_factures.no_facture_reference; + + UPDATE w_factures + SET type_facture = '2' + WHERE w_factures.type_facture = '0' AND + w_factures.no_facture <> w_factures.no_facture_reference; + + UPDATE w_factures + SET facture_reference_id = w_factures_references.oid + FROM w_factures w_factures_references + WHERE w_factures.no_facture_reference = w_factures_references.no_facture + AND w_factures.facture_reference_id <> w_factures_references.oid; + + + + -- Ajout des factures + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_14'); + + INSERT INTO activite[PX].p_factures( + oid, + no_sejour, + sejour_id, + no_facture, + + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + + date_debut, + date_fin, + type_facture, + + code_facture, + date_facture, + delai_facture, + + code_vente, + date_vente, + mois_vente, + + code_cloture, + + date_encours, + + particularite_t2a, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + + nb_rejets, + + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_comptabilise_budget_global_c, + + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + delai_solde, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + + date_solde_reference, + date_solde_reference_c, + date_solde_reference_h, + date_solde_reference_0_c, + date_solde_reference_1_c, + date_solde_reference_2_c, + date_solde_reference_22_c, + date_solde_reference_0_h, + date_solde_reference_1_h, + date_solde_reference_2_h, + date_solde_reference_22_h + + + + ) + SELECT + oid, + no_sejour, + sejour_id, + no_facture, + + no_facture_reference, + facture_reference_id, + no_facture_od_avoir, + facture_od_avoir_id, + + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + tiers_payant_0_id, + + date_debut, + date_fin, + type_facture, + + code_facture, + date_facture, + delai_facture, + + code_vente, + date_vente, + mois_vente, + + code_cloture, + + date_encours, + + particularite_t2a, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id, + code_cp_demandee, + + nb_rejets, + + montant_facture_c, + montant_facture_h, + montant_facture_0_c, + montant_facture_0_h, + montant_facture_1_c, + montant_facture_1_h, + montant_facture_2_c, + montant_facture_2_h, + montant_facture_22_c, + montant_facture_22_h, + montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, + + montant_comptabilise_c, + montant_comptabilise_h, + montant_comptabilise_0_c, + montant_comptabilise_0_h, + montant_comptabilise_1_c, + montant_comptabilise_1_h, + montant_comptabilise_2_c, + montant_comptabilise_2_h, + montant_comptabilise_22_c, + montant_comptabilise_22_h, + montant_comptabilise_budget_global_c, + + montant_encours_c, + montant_encours_0_c, + montant_encours_1_c, + montant_encours_2_c, + montant_encours_22_c, + montant_encours_h, + montant_encours_0_h, + montant_encours_1_h, + montant_encours_2_h, + montant_encours_22_h, + + date_expedition, + date_expedition_0, + date_expedition_1, + date_expedition_2, + date_expedition_22, + code_expedie_0, + code_expedie_1, + code_expedie_2, + code_expedie_22, + no_bordereau_0, + no_bordereau_1, + no_bordereau_2, + no_bordereau_22, + delai_expedition, + delai_expedition_0, + delai_expedition_1, + delai_expedition_2, + delai_expedition_22, + + montant_regle_c, + montant_regle_h, + montant_regle_0_c, + montant_regle_0_h, + montant_regle_1_c, + montant_regle_1_h, + montant_regle_2_c, + montant_regle_2_h, + montant_regle_22_c, + montant_regle_22_h, + + date_solde, + date_solde_c, + date_solde_h, + date_solde_0_c, + date_solde_0_h, + date_solde_1_c, + date_solde_1_h, + date_solde_2_c, + date_solde_2_h, + date_solde_22_c, + date_solde_22_h, + delai_solde, + delai_solde_0_c, + delai_solde_0_h, + delai_solde_1_c, + delai_solde_1_h, + delai_solde_2_c, + delai_solde_2_h, + delai_solde_22_c, + delai_solde_22_h, + + date_solde_reference, + date_solde_reference_c, + date_solde_reference_h, + date_solde_reference_0_c, + date_solde_reference_1_c, + date_solde_reference_2_c, + date_solde_reference_22_c, + date_solde_reference_0_h, + date_solde_reference_1_h, + date_solde_reference_2_h, + date_solde_reference_22_h + + FROM w_factures; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_9'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_10'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_11'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_12'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_13'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_14'); + + + + -- Séjours cloturés sans facture, créer une facture fictive + + + -- Séjours sans facture + + DROP TABLE IF EXISTS w_factures_trous; + CREATE TEMP TABLE w_factures_trous AS + SELECT + p_sejours.finess, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour, + p_sejours.date_entree, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.code_cp_demandee, + COALESCE(t_services_facturation.avec_facturation_intermediaire,'') AS avec_facturation_intermediaire, + p_sejours.code_sorti, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_sortie, + MAX(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 THEN CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END ELSE p_factures.date_fin END) AS date_fin_facture, + date(MAX(COALESCE(CASE WHEN p_factures.date_fin IS NOT NULL AND date_sortie - date_entree < 30 AND code_sorti = '1' THEN date_sortie ELSE p_factures.date_fin END + interval '1 day', p_sejours.date_entree))) AS date_debut_encours, + CASE WHEN code_sorti = '1' THEN date_sortie ELSE date(now()) END AS date_fin_encours + FROM activite[PX].p_sejours + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND no_facture NOT LIKE 'E%' AND type_facture IS DISTINCT FROM 'P' + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON t_lieux.service_facturation_id = t_services_facturation.oid + WHERE p_sejours.etat = '' AND p_sejours.est_sans_facturation IS DISTINCT FROM '1' AND date_entree <= now() AND p_sejours.type_sejour <> '6' AND p_sejours.type_sejour <> '9' + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12; + + + INSERT INTO activite[PX].p_factures( + finess, + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee, + date_debut, + date_fin) + SELECT + finess, + sejour_id, + no_sejour, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || substr(p_calendrier.mois,3,4) ELSE '' END, + 'E' || no_sejour || CASE WHEN avec_facturation_intermediaire = '1' THEN '_' || substr(p_calendrier.mois,3,4) ELSE '' END, + 'E', + '0', + '20991231'::date, + tiers_payant_0_id, tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, + code_cp_demandee , + MIN(GREATEST(date_debut_encours, p_calendrier.date)), + MAX(LEAST(date_fin_encours, p_calendrier.date)) + FROM w_factures_trous + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date_debut_encours AND date_fin_encours + WHERE (date_debut_encours <= date_fin_encours or date_fin_facture is null) + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13; + + ]]> + + + + + + + + 0 AND ART_CODE NOT IN ('TDE', 'TSE', 'ST1', 'ST2', 'ST3') THEN PREST_QUANTITE ELSE 1 END AS nb_rubrique, + CASE WHEN PREST_COEFF <> 0 AND PREST_PU <> 0 THEN PREST_COEFF ELSE 1 END AS coefficient, + rubrique_facturation_id, + prestation_id, + CASE + WHEN PREST_PU <> 0 THEN PREST_PU + WHEN PREST_QUANTITE <> 0 THEN PREST_MFE_ETS / CASE WHEN ART_CODE NOT IN ('TDE', 'TSE', 'ST1', 'ST2', 'ST3') THEN PREST_QUANTITE ELSE 1 END + ELSE PREST_MFE_ETS END AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id, + w_ART_ARTICLES.ucd_id, + w_ART_ARTICLES.lpp_id + FROM prod_web100t2.DAT_PRESTATIONS_GAP + JOIN prod_web100t2.DAT_DA ON PREST_DA = DA_OID + JOIN activite[PX].p_sejours ON DA_OID = p_sejours.code_original AND date(PREST_DATE_DEBUT) BETWEEN date_entree AND date_sortie + JOIN activite[PX].p_factures ON p_factures.no_sejour = p_sejours.no_sejour AND type_facture = 'E' AND date(PREST_DATE_DEBUT) BETWEEN date_debut AND date_fin + JOIN w_ART_ARTICLES ON PREST_ARTICLE = ART_OID + WHERE ART_CODE NOT IN ('GHS', 'EXH', 'I01', 'CCAM') AND PREST_MFE_ETS > 0 AND PREST_ENTENTE_DIRECTE = 0 AND PREST_DELETED = 0 AND + PREST_QUANTITE < 99999 AND + NOT (PREST_QUANTITE > 1 AND (date(PREST_DATE_FIN) - date(PREST_DATE_DEBUT) + 1) = PREST_QUANTITE ) + ; + + + -- Eclatement des prestations par jour + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + no_facture, + facture_id, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id, + ucd_id, + lpp_id) + SELECT + p_factures.no_facture, + p_factures.oid AS facture_id, + p_calendrier.date AS date_debut, + p_calendrier.date AS date_fin, + 1 AS nb_rubrique, + CASE WHEN PREST_COEFF <> 0 AND PREST_PU <> 0 THEN PREST_COEFF ELSE 1 END AS coefficient, + rubrique_facturation_id, + prestation_id, + CASE + WHEN PREST_PU <> 0 THEN PREST_PU + WHEN PREST_QUANTITE <> 0 THEN PREST_MFE_ETS / PREST_QUANTITE + ELSE PREST_MFE_ETS END AS prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id, + w_ART_ARTICLES.ucd_id, + w_ART_ARTICLES.lpp_id + FROM prod_web100t2.DAT_PRESTATIONS_GAP + JOIN prod_web100t2.DAT_DA ON PREST_DA = DA_OID + JOIN activite[PX].p_sejours ON DA_OID = p_sejours.code_original AND date(PREST_DATE_DEBUT) BETWEEN date_entree AND date_sortie + JOIN base.p_calendrier ON p_calendrier.date BETWEEN date(PREST_DATE_DEBUT) AND date(PREST_DATE_FIN) + JOIN activite[PX].p_factures ON p_factures.no_sejour = p_sejours.no_sejour AND type_facture = 'E' AND p_calendrier.date BETWEEN date_debut AND date_fin + JOIN w_ART_ARTICLES ON PREST_ARTICLE = ART_OID + WHERE ART_CODE NOT IN ('GHS', 'EXH', 'I01', 'CCAM') AND PREST_MFE_ETS > 0 AND PREST_ENTENTE_DIRECTE = 0 AND PREST_DELETED = 0 AND + PREST_QUANTITE < 99999 AND + PREST_QUANTITE > 1 AND (date(PREST_DATE_FIN) - date(PREST_DATE_DEBUT) + 1) = PREST_QUANTITE + ; + + -- Prestation I01 (innovation) venant du PMSI + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + no_facture, + facture_id, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + p_factures.no_facture, + MAX(p_factures.oid) AS facture_id, + MAX(p_sejours.date_entree) AS date_debut, + MAX(p_sejours.date_sortie) AS date_fin, + 1::numeric AS nb_rubrique, + 1::numeric AS coefficient, + 0.9935::numeric AS coefficient_mco, + MAX(t_rubriques_facturation.oid) AS rubrique_facturation_id, + MAX(t_prestations.oid) AS prestation_id, + 6047::numeric AS prix_unitaire, + MAX(p_sejours.lieu_sortie_id) AS lieu_id + FROM prod_web100t2.DAT_RUM + JOIN prod_web100t2.SGN_NMCL_DATA ON RUM_NUM_INNOVATION = ND_INVARIANT_OID AND ND_CODE = 'INNOV1441001H' + JOIN prod_web100t2.DAT_RESUME ON RUM_OID = RES_OID + JOIN prod_web100t2.DAT_DA ON RES_NUM = DA_NUMERO + JOIN activite[PX].p_sejours ON DA_OID = p_sejours.code_original + JOIN activite[PX].p_factures ON p_factures.no_sejour = p_sejours.no_sejour AND code_facture <> '1' + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code = 'I01' + JOIN activite.t_prestations ON t_prestations.code = 'I01' + GROUP BY 1 + ; + + + + + + ]]> + + + + 0 THEN B2T_TOTAL_TTC ELSE 0 END)::numeric - SUM(B2T_DEPASSEMENT)::numeric, + MAX(B2T_QUANTITE)::numeric + ) AS B2T_PU, + SUM(B2T_TOTAL_TTC) AS B2T_TOTAL, + SUM(B2T_DEPASSEMENT) AS B2T_DEPASSEMENT, + round(base.cti_division( + SUM(CASE WHEN B2T_TYPE_TIER = 'AMO' THEN B2T_TOTAL_TTC ELSE 0 END)::numeric - SUM(CASE WHEN B2T_TYPE_TIER = 'AMO' THEN B2T_DEPASSEMENT ELSE 0 END)::numeric, + SUM(B2T_TOTAL_TTC)::numeric - SUM(B2T_DEPASSEMENT)::numeric + ) * 100,0) AS B2T_TAUX_AMO, + round(base.cti_division( + SUM(CASE WHEN B2T_TYPE_TIER = 'AMC' THEN B2T_TOTAL_TTC ELSE 0 END)::numeric - SUM(CASE WHEN B2T_TYPE_TIER = 'AMC' THEN B2T_DEPASSEMENT ELSE 0 END)::numeric, + SUM(B2T_TOTAL_TTC)::numeric - SUM(B2T_DEPASSEMENT)::numeric + ) * 100,0) AS B2T_TAUX_AMC, + round(base.cti_division( + SUM(CASE WHEN B2T_TYPE_TIER = 'AMD' THEN B2T_TOTAL_TTC ELSE 0 END)::numeric - SUM(CASE WHEN B2T_TYPE_TIER = 'AMD' THEN B2T_DEPASSEMENT ELSE 0 END)::numeric, + SUM(B2T_TOTAL_TTC)::numeric - SUM(B2T_DEPASSEMENT)::numeric + ) * 100,0) AS B2T_TAUX_AMD, + round(base.cti_division( + SUM(CASE WHEN B2T_TYPE_TIER = 'CLI' THEN B2T_TOTAL_TTC ELSE 0 END)::numeric - SUM(CASE WHEN B2T_TYPE_TIER = 'CLI' THEN B2T_DEPASSEMENT ELSE 0 END)::numeric, + SUM(B2T_TOTAL_TTC)::numeric - SUM(B2T_DEPASSEMENT)::numeric + ) * 100,0) AS B2T_TAUX_CLI, + SUM(CASE WHEN B2T_TYPE_TIER = 'AMO' THEN B2T_TOTAL_TTC ELSE 0 END) AS B2T_TOTAL_AMO, + SUM(CASE WHEN B2T_TYPE_TIER = 'AMC' THEN B2T_TOTAL_TTC ELSE 0 END) AS B2T_TOTAL_AMC, + SUM(CASE WHEN B2T_TYPE_TIER = 'AMD' THEN B2T_TOTAL_TTC ELSE 0 END) AS B2T_TOTAL_AMD, + SUM(CASE WHEN B2T_TYPE_TIER = 'CLI' THEN B2T_TOTAL_TTC ELSE 0 END) AS B2T_TOTAL_CLI + FROM prod_web100t2.FAC_B2_TIER + GROUP BY 1 + ORDER BY 1; + + ALTER TABLE w_FAC_B2_TIER ADD CONSTRAINT w_FAC_B2_TIER_pkey PRIMARY KEY(B2T_LIGNE); + + + -- Comptes par ligne + + DROP TABLE IF EXISTS w_LIGNE_CPT; + CREATE TEMP TABLE w_LIGNE_CPT AS + SELECT FLT_OID, + LI_OID, + LI_PRED_LIGNE, + LI_NEXT_LIGNE, + MAX(COALESCE(CPT_OID,0)) AS ECR_COMPTE, + MAX(COALESCE(CPT_CODE,'')) AS CPT_CODE, + 0::bigint AS compte_produit_id + FROM prod_web100t2.FAC_FACT_LIGNE_TIER + JOIN prod_web100t2.FAC_FACT_LIGNE ON FLT_LIGNE_FACTURE = LI_OID + LEFT JOIN w_CPT_ECRITURE_source_OP_LINK ON ECR_DATA = LI_OID AND ECR_TYPE = 'PRODUIT_ETS' + LEFT JOIN prod_web100t2.CPT_COMPTES ON ECR_COMPTE = CPT_OID + WHERE FLT_IS_ETS = 1 + GROUP BY 1,2,3,4; + + UPDATE w_LIGNE_CPT + SET ECR_COMPTE = w_LIGNE_CPT_NEXT.ECR_COMPTE, CPT_CODE = w_LIGNE_CPT_NEXT.CPT_CODE + FROM w_LIGNE_CPT w_LIGNE_CPT_NEXT + WHERE w_LIGNE_CPT.ECR_COMPTE = 0 AND + w_LIGNE_CPT.LI_NEXT_LIGNE = w_LIGNE_CPT_NEXT.LI_OID; + + UPDATE w_LIGNE_CPT + SET ECR_COMPTE = w_LIGNE_CPT_PRED.ECR_COMPTE, CPT_CODE = w_LIGNE_CPT_PRED.CPT_CODE + FROM w_LIGNE_CPT w_LIGNE_CPT_PRED + WHERE w_LIGNE_CPT.ECR_COMPTE = 0 AND + w_LIGNE_CPT.LI_PRED_LIGNE = w_LIGNE_CPT_PRED.LI_OID; + + DELETE FROM w_LIGNE_CPT + WHERE CPT_CODE LIKE '445%'; + + UPDATE w_LIGNE_CPT + SET compte_produit_id = t_compte.oid + FROM activite[PX].t_compte + WHERE t_compte.code = CPT_CODE; + + ALTER TABLE w_LIGNE_CPT ADD CONSTRAINT w_LIGNE_CPT_pkey PRIMARY KEY(FLT_OID); + + + -- Table temporaire lignes + DROP TABLE IF EXISTS w_factures_lignes_c; + CREATE TEMP TABLE w_factures_lignes_c AS + SELECT + FLT_LIGNE_FACTURE, + + w_factures.no_sejour, + w_factures.no_facture, + w_factures.oid AS facture_id, + date_vente, + + lieu_sortie_id AS lieu_id, + 1::numeric AS origine_facturation_id, + + rubrique_facturation_id, + rubrique_facturation_id AS rubrique_comptabilisation_id, + prestation_id, + 0::bigint AS protocole_id, + COALESCE(w_LIGNE_CPT.compte_produit_id,0::bigint) AS compte_produit_id, + w_ART_ARTICLES.ucd_id, + w_ART_ARTICLES.lpp_id, + + date(MIN(FLT_DATE_DEBUT)) AS date_debut, + date(MAX(FLT_DATE_FIN)) AS date_fin, + + MAX(COALESCE(B2T_PU,FLT_TOTAL_TTC)) AS prix_unitaire, + + CASE WHEN SUM(FLT_TOTAL_TTC) >= 0 THEN 1 ELSE -1 END * MAX(COALESCE(B2T_QUANTITE,1)) AS nb_rubrique, + CASE WHEN SUM(FLT_TOTAL_TTC) >= 0 THEN 1 ELSE -1 END * MAX(COALESCE(B2T_QUANTITE,1)) AS nb_prestation, + 1::numeric AS coefficient, + 1::numeric AS coefficient_mco, + + MAX(COALESCE(B2T_TAUX_CLI,0)) AS taux_0, + MAX(COALESCE(B2T_TAUX_AMO,0)) AS taux_1, + MAX(COALESCE(B2T_TAUX_AMC,0)) AS taux_2, + MAX(COALESCE(B2T_TAUX_AMD,0)) AS taux_22, + + base.cti_division(SUM(FLT_TOTAL_TVA)::numeric , SUM(FLT_TOTAL_TTC)::numeric-SUM(FLT_TOTAL_TVA)::numeric)*100 AS taux_tva, + + SUM(CASE WHEN LI_TYPE_B2 IS DISTINCT FROM '4' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture, + SUM(CASE WHEN LI_TYPE_B2 IS DISTINCT FROM '4' AND FT_TYPE_TIER = 'CLI' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_0, + SUM(CASE WHEN LI_TYPE_B2 IS DISTINCT FROM '4' AND FT_TYPE_TIER IN ('AMO','ETS') THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_1, + SUM(CASE WHEN LI_TYPE_B2 IS DISTINCT FROM '4' AND FT_TYPE_TIER = 'AMC' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_2, + SUM(CASE WHEN LI_TYPE_B2 IS DISTINCT FROM '4' AND FT_TYPE_TIER = 'AMD' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_22, + SUM(CASE WHEN LI_TYPE_B2 IS DISTINCT FROM '4' AND FT_TYPE_TIER = 'ETS' THEN 0-FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_dma, + + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + + SUM(CASE WHEN code_vente = '1' AND FT_TYPE_TIER <> 'ETS' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise, + SUM(CASE WHEN code_vente = '1' AND FT_TYPE_TIER = 'CLI' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise_0, + SUM(CASE WHEN code_vente = '1' AND FT_TYPE_TIER = 'AMO' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise_1, + SUM(CASE WHEN code_vente = '1' AND FT_TYPE_TIER = 'AMC' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise_2, + SUM(CASE WHEN code_vente = '1' AND FT_TYPE_TIER = 'AMD' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise_22, + 0::numeric AS montant_comptabilise_budget_global_1, + + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + + 0::bigint AS rubrique_facture_id, + + MAX(ART_CODE) AS ART_CODE, + MAX(ART_CODE_2) AS ART_CODE_2 + + FROM prod_web100t2.FAC_FACT_LIGNE_TIER + JOIN w_factures ON FLT_FACTURE = FACT_OID AND IMPAYE = 0 + JOIN prod_web100t2.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN prod_web100t2.FAC_FACT_LIGNE ON FLT_LIGNE_FACTURE = LI_OID + JOIN w_ART_ARTICLES ON FLT_ARTICLE = ART_OID + LEFT JOIN w_FAC_B2_TIER ON LI_LIGNE_SOURCE = B2T_LIGNE + LEFT JOIN w_LIGNE_CPT ON FAC_FACT_LIGNE_TIER.FLT_OID = w_LIGNE_CPT.FLT_OID + WHERE FLT_IS_ETS = 1 AND FLT_RECAP <> 0 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14; + + + + -- Montants impayés + INSERT INTO w_factures_lignes_c + SELECT + FLT_LIGNE_FACTURE, + + w_factures.no_sejour, + w_factures.no_facture, + w_factures.oid AS facture_id, + date_vente, + + lieu_sortie_id AS lieu_id, + 1::numeric AS origine_facturation_id, + + rubrique_facturation_id, + rubrique_facturation_id AS rubrique_comptabilisation_id, + prestation_id, + 0::bigint AS protocole_id, + COALESCE(w_LIGNE_CPT.compte_produit_id,0::bigint) AS compte_produit_id, + w_ART_ARTICLES.ucd_id, + w_ART_ARTICLES.lpp_id, + + date(MIN(FLT_DATE_DEBUT)) AS date_debut, + date(MAX(FLT_DATE_FIN)) AS date_fin, + + MAX(COALESCE(B2T_PU,FLT_TOTAL_TTC)) AS prix_unitaire, + + 0 AS nb_rubrique, + 0 AS nb_prestation, + 1::numeric AS coefficient, + 1::numeric AS coefficient_mco, + + MAX(COALESCE(B2T_TAUX_CLI,0)) AS taux_0, + MAX(COALESCE(B2T_TAUX_AMO,0)) AS taux_1, + MAX(COALESCE(B2T_TAUX_AMC,0)) AS taux_2, + MAX(COALESCE(B2T_TAUX_AMD,0)) AS taux_22, + + 0::numeric AS taux_tva, + + 0 AS montant_facture, + 0 AS montant_facture_0, + 0 AS montant_facture_1, + 0 AS montant_facture_2, + 0::numeric AS montant_facture_22, + 0::numeric AS montant_facture_dma, + + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + + SUM(FLT_TOTAL_IMPAYE_ETS) AS montant_comptabilise, + SUM(FLT_TOTAL_IMPAYE_ETS_CLI) AS montant_comptabilise_0, + SUM(FLT_TOTAL_IMPAYE_ETS_AMO) AS montant_comptabilise_1, + SUM(FLT_TOTAL_IMPAYE_ETS_AMC) AS montant_comptabilise_2, + SUM(FLT_TOTAL_IMPAYE_ETS_AMD) AS montant_comptabilise_22, + 0::numeric AS montant_comptabilise_budget_global_1, + + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + + 0::bigint AS rubrique_facture_id, + + MAX(ART_CODE) AS ART_CODE, + MAX(ART_CODE_2) AS ART_CODE_2 + FROM prod_web100t2.FAC_FACT_LIGNE_TIER + JOIN w_FAC_FACT_LIGNE_TIER_IMPAYE ON FAC_FACT_LIGNE_TIER.FLT_OID = FLT_IMPAYE_OID + JOIN w_factures ON FLT_FACTURE = FACT_OID AND IMPAYE = w_FAC_FACT_LIGNE_TIER_IMPAYE.FI_COMPTA + JOIN prod_web100t2.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN prod_web100t2.FAC_FACT_LIGNE ON FLT_LIGNE_FACTURE = LI_OID + JOIN w_ART_ARTICLES ON FLT_ARTICLE = ART_OID + LEFT JOIN w_FAC_B2_TIER ON LI_LIGNE_SOURCE = B2T_LIGNE + LEFT JOIN w_LIGNE_CPT ON FAC_FACT_LIGNE_TIER.FLT_OID = w_LIGNE_CPT.FLT_OID + WHERE FLT_IS_ETS = 1 AND FLT_RECAP <> 0 AND FLT_TOTAL_IMPAYE_ETS <> 0 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14; + + + + -- Remplacement des codes dialyse + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'TRANSGHSDXX', + 'Transformation des GHS en Dxx', + '', + 'Transformation des prestations GHS en Dxx selong GHS, la rubrique de facturation prend la valeur du GHS' + WHERE 'TRANSGHSDXX' NOT IN (SELECT code FROM activite.t_divers); + ; + + INSERT INTO activite[PX].t_rubriques_facturation (code_original, code, texte, texte_court) + SELECT t_ghs.code::text, t_ghs.code::text, t_ghs.texte, t_ghs.texte + FROM base.t_ghs + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + WHERE t_ghs.code IN (9602,9603,9604,9605,9617) AND + t_ghs.code::text NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + ; + + INSERT INTO activite[PX].t_rubriques_facturation (code_original, code, texte, texte_court) + SELECT t_prestations.code::text, t_prestations.code::text, t_prestations.texte, t_prestations.texte + FROM activite.t_prestations + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + WHERE t_prestations.code IN ('D11') AND + t_prestations.code::text NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) AND + t_prestations.code::text NOT IN (SELECT code FROM activite[PX].t_rubriques_facturation WHERE code IS NOT NULL) + ; + + DROP TABLE IF EXISTS w_transform_dxx; + CREATE TEMP TABLE w_transform_dxx AS + SELECT p_factures_lignes_c.no_facture, + p_factures_lignes_c.CTID AS CTID_source, + t_prestations.code, + CASE WHEN t_ghs.code IN (9602,9603,9604,9605,9617) THEN t_ghs.code::text ELSE ART_CODE_2 END AS ghs_code, + CASE + WHEN t_ghs.code = 9602 THEN 'D18' + WHEN t_ghs.code = 9603 THEN 'D19' + WHEN t_ghs.code = 9604 THEN 'D17' + WHEN t_ghs.code = 9605 THEN 'D09' + WHEN t_ghs.code = 9617 THEN 'D10' + WHEN ART_CODE_2 = '9602' THEN 'D18' + WHEN ART_CODE_2 = '9603' THEN 'D19' + WHEN ART_CODE_2 = '9604' THEN 'D17' + WHEN ART_CODE_2 = '9605' THEN 'D09' + WHEN ART_CODE_2 = '9617' THEN 'D10' + ELSE '' END AS dxx_prestation_code + FROM w_factures_lignes_c p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN base.t_ghs ON p_sejours.ghs_id = t_ghs.oid + JOIN activite.t_prestations ON t_prestations.oid = prestation_id + JOIN activite.t_divers ON t_divers.code = 'TRANSGHSDXX' AND t_divers.valeur = '1' + WHERE t_prestations.code = 'GHS' AND + ( + t_ghs.code IN (9602,9603,9604,9605,9617) OR + ART_CODE_2 IN ('9602','9603','9604','9605','9617') + ); + + CREATE INDEX w_transform_dxx_i1 + ON w_transform_dxx + USING btree + (no_facture) + ; + + UPDATE w_factures_lignes_c p_factures_lignes_c SET + prestation_id = t_prestations.oid, + rubrique_facturation_id = t_rubriques_facturation.oid + FROM w_transform_dxx + JOIN activite.t_prestations ON dxx_prestation_code = t_prestations.code + JOIN activite[PX].t_rubriques_facturation ON ghs_code = t_rubriques_facturation.code_original + WHERE p_factures_lignes_c.no_facture = w_transform_dxx.no_facture AND + p_factures_lignes_c.CTID = w_transform_dxx.CTID_source + ; + + + + -- Eclatement des GHS, GMT et suppléments par jour + DROP TABLE IF EXISTS w_factures_lignes_sup_c; + CREATE TEMP TABLE w_factures_lignes_sup_c AS + SELECT + w_factures_lignes_c.CTID AS from_CTID, + t_prestations.code AS prestation_code, + date(p_sejours.date_entree) AS date_debut_ghs, + date(p_sejours.date_sortie - interval '1 day') AS date_fin_ghs, + (date(date_sortie) - date(date_entree)) * CASE WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS nb_prestation_ghs, + w_factures_lignes_c.* + FROM w_factures_lignes_c + JOIN activite[PX].p_sejours ON w_factures_lignes_c.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + ( + code IN ('PJ', 'FJ', 'PHJ','SSM', 'GHS', 'EXH', 'SRC', 'REA', 'STF', 'NN1', 'NN2', 'NN3', 'CP', 'CPC', 'SHO') OR + t_prestations.type_ventilation_jour = '1' + ) + WHERE (nb_prestation > 1 or nb_prestation < -1 OR (t_prestations.code IN ('GHS', 'GMT') AND p_sejours.type_sejour != '5' AND date(date_sortie) - date(date_entree) > 1)) + ; + + UPDATE w_factures_lignes_sup_c SET + date_fin_ghs = date(date_debut_exh - interval '1 day'), + nb_prestation_ghs = date(date_debut_exh - interval '1 day') - date_debut_ghs + 1 + FROM ( + SELECT no_facture, date(MIN(date_debut)) AS date_debut_exh + FROM w_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND code = 'EXH' + GROUP BY 1) subview + WHERE w_factures_lignes_sup_c.no_facture = subview.no_facture; + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_gen; + CREATE TEMP TABLE w_factures_lignes_sup_c_gen AS + SELECT + w_factures_lignes_sup_c.* + ,date AS new_date_debut + ,date AS new_date_fin + ,CASE WHEN prestation_code IN ('GHS', 'GMT') AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS new_nb_rubrique + ,CASE WHEN prestation_code IN ('GHS', 'GMT') AND date <> date_fin_ghs THEN 0 WHEN nb_prestation < 0 THEN -1 ELSE 1 END AS new_nb_prestation + ,round((montant_facture / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_facture + ,round((montant_facture_0 / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_facture_0 + ,round((montant_facture_1 / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_facture_1 + ,round((montant_facture_2 / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_facture_2 + ,round((montant_facture_22 / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_facture_22 + ,round((montant_facture_dma / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_facture_dma + ,round((montant_comptabilise / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_comptabilise + ,round((montant_comptabilise_0 / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_comptabilise_0 + ,round((montant_comptabilise_1 / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_comptabilise_1 + ,round((montant_comptabilise_2 / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_comptabilise_2 + ,round((montant_comptabilise_22 / ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END))::numeric,2) AS new_montant_comptabilise_22 + FROM w_factures_lignes_sup_c + JOIN base.p_calendrier ON date_debut BETWEEN p_calendrier.date - ABS(CASE WHEN prestation_code NOT IN ('GHS', 'GMT') THEN nb_prestation ELSE nb_prestation_ghs END)::integer + 1 + AND p_calendrier.date + AND p_calendrier.date <> date_debut + ; + + + DROP TABLE IF EXISTS w_factures_lignes_sup_c_gen_tot; + CREATE TEMP TABLE w_factures_lignes_sup_c_gen_tot AS + SELECT from_CTID, + SUM(new_nb_rubrique) AS nb_rubrique, + SUM(new_nb_prestation) AS nb_prestation, + SUM(new_montant_facture) AS montant_facture, + SUM(new_montant_facture_0) AS montant_facture_0, + SUM(new_montant_facture_1) AS montant_facture_1, + SUM(new_montant_facture_2) AS montant_facture_2, + SUM(new_montant_facture_22) AS montant_facture_22, + SUM(new_montant_facture_dma) AS montant_facture_dma, + SUM(new_montant_comptabilise) AS montant_comptabilise, + SUM(new_montant_comptabilise_0) AS montant_comptabilise_0, + SUM(new_montant_comptabilise_1) AS montant_comptabilise_1, + SUM(new_montant_comptabilise_2) AS montant_comptabilise_2, + SUM(new_montant_comptabilise_22) AS montant_comptabilise_22 + FROM w_factures_lignes_sup_c_gen + GROUP BY 1; + + + + UPDATE w_factures_lignes_c + SET + date_fin = w_factures_lignes_c.date_debut, + nb_rubrique = w_factures_lignes_c.nb_rubrique - w_factures_lignes_sup_c_gen_tot.nb_rubrique, + nb_prestation = w_factures_lignes_c.nb_prestation - w_factures_lignes_sup_c_gen_tot.nb_prestation, + montant_facture = w_factures_lignes_c.montant_facture - w_factures_lignes_sup_c_gen_tot.montant_facture, + montant_facture_0 = w_factures_lignes_c.montant_facture_0 - w_factures_lignes_sup_c_gen_tot.montant_facture_0, + montant_facture_1 = w_factures_lignes_c.montant_facture_1 - w_factures_lignes_sup_c_gen_tot.montant_facture_1, + montant_facture_2 = w_factures_lignes_c.montant_facture_2 - w_factures_lignes_sup_c_gen_tot.montant_facture_2, + montant_facture_22 = w_factures_lignes_c.montant_facture_22 - w_factures_lignes_sup_c_gen_tot.montant_facture_22, + montant_facture_dma = w_factures_lignes_c.montant_facture_dma - w_factures_lignes_sup_c_gen_tot.montant_facture_dma, + montant_comptabilise = w_factures_lignes_c.montant_comptabilise - w_factures_lignes_sup_c_gen_tot.montant_comptabilise, + montant_comptabilise_0 = w_factures_lignes_c.montant_comptabilise_0 - w_factures_lignes_sup_c_gen_tot.montant_comptabilise_0, + montant_comptabilise_1 = w_factures_lignes_c.montant_comptabilise_1 - w_factures_lignes_sup_c_gen_tot.montant_comptabilise_1, + montant_comptabilise_2 = w_factures_lignes_c.montant_comptabilise_2 - w_factures_lignes_sup_c_gen_tot.montant_comptabilise_2, + montant_comptabilise_22 = w_factures_lignes_c.montant_comptabilise_22 - w_factures_lignes_sup_c_gen_tot.montant_comptabilise_22 + FROM w_factures_lignes_sup_c_gen_tot + WHERE w_factures_lignes_c.CTID = from_CTID; + + + INSERT INTO w_factures_lignes_c + SELECT + FLT_LIGNE_FACTURE, + + no_sejour, + no_facture, + facture_id, + date_vente, + + lieu_id, + origine_facturation_id, + + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + protocole_id, + compte_produit_id, + ucd_id, + lpp_id, + + new_date_debut, + new_date_fin, + + prix_unitaire, + + new_nb_rubrique, + new_nb_prestation, + coefficient, + coefficient_mco, + + taux_0, + taux_1, + taux_2, + taux_22, + + taux_tva, + + new_montant_facture, + new_montant_facture_0, + new_montant_facture_1, + new_montant_facture_2, + new_montant_facture_22, + new_montant_facture_dma, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + new_montant_comptabilise, + new_montant_comptabilise_0, + new_montant_comptabilise_1, + new_montant_comptabilise_2, + new_montant_comptabilise_22, + montant_comptabilise_budget_global_1, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + + 0::bigint AS rubrique_facture_id + FROM w_factures_lignes_sup_c_gen; + + -- arrondi tva + UPDATE w_factures_lignes_c + SET taux_tva = 2.1 + WHERE taux_tva BETWEEN 1.2 AND 3 AND + taux_tva <> 2.1 + ; + + UPDATE w_factures_lignes_c + SET taux_tva = 5.5 + WHERE taux_tva BETWEEN 4.6 AND 6.4 AND + taux_tva <> 5.5 + ; + + UPDATE w_factures_lignes_c + SET taux_tva = 10 + WHERE taux_tva BETWEEN 9.1 AND 10.9 AND + taux_tva <> 10 + ; + + UPDATE w_factures_lignes_c + SET taux_tva = 20 + WHERE taux_tva >= 15 AND + taux_tva <> 20 + ; + + + -- Lieux d'exécution + + + UPDATE w_factures_lignes_c + SET lieu_id = p_mouvements_sejour.lieu_id + FROM activite[PX].p_mouvements_sejour + WHERE w_factures_lignes_c.no_sejour = p_mouvements_sejour.no_sejour AND + w_factures_lignes_c.date_debut = p_mouvements_sejour.date AND + (p_mouvements_sejour.heure_fin = 240000 OR p_mouvements_sejour.nb_sorties_directes = 1) AND + w_factures_lignes_c.lieu_id <> p_mouvements_sejour.lieu_id; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_c'); + + -- Validation + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_c_8'); + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + facture_id, + date_debut, + date_fin, + + lieu_id, + origine_facturation_id, + + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + protocole_id, + compte_produit_id, + ucd_id, + lpp_id, + + prix_unitaire, + + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + + taux_0, + taux_1, + taux_2, + taux_22, + + taux_tva, + + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_comptabilise_budget_global_1, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + + + ) + SELECT + no_facture, + facture_id, + date_debut, + date_fin, + + lieu_id, + origine_facturation_id, + + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + protocole_id, + compte_produit_id, + ucd_id, + lpp_id, + + prix_unitaire, + + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + + taux_0, + taux_1, + taux_2, + taux_22, + + taux_tva, + + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_comptabilise_budget_global_1, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + FROM w_factures_lignes_c; + + + -- DMA SSR + DROP TABLE IF EXISTS w_factures_lignes_c_dma; + CREATE TEMP TABLE w_factures_lignes_c_dma AS + SELECT * + FROM w_factures_lignes_c + WHERE montant_facture_dma <> 0 + ; + + UPDATE w_factures_lignes_c_dma SET + nb_rubrique = 0-nb_rubrique, + nb_prestation = 0-nb_prestation, + taux_0 = 0, + taux_2 = 0, + taux_22 = 0, + montant_facture = montant_facture_dma, + montant_facture_1 = montant_facture_dma, + montant_facture_2 = 0, + montant_facture_22 = 0, + montant_facture_0 = 0, + montant_facture_actes_inclus_dans_sejour = 0, + montant_facture_0_actes_inclus_dans_sejour = 0, + montant_facture_1_actes_inclus_dans_sejour = 0, + montant_facture_2_actes_inclus_dans_sejour = 0, + montant_facture_22_actes_inclus_dans_sejour = 0, + montant_comptabilise = 0, + montant_comptabilise_0 = 0, + montant_comptabilise_1 = 0, + montant_comptabilise_2 = 0, + montant_comptabilise_22 = 0, + montant_comptabilise_budget_global_1 = 0, + montant_encours = 0, + montant_encours_0 = 0, + montant_encours_1 = 0, + montant_encours_2 = 0, + montant_encours_22 = 0 + WHERE montant_facture_dma <> 0 + ; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT 'DMAM'||code, 'DMAM'||code, 'Diminution SSR ' || code, 'Diminution SSR ' || code + FROM + ( + SELECT t_prestations.code AS code + FROM w_factures_lignes_c_dma + JOIN activite.t_prestations ON t_prestations.oid = prestation_id + GROUP BY 1 + ) subview + WHERE ('DMAM'||code) NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + ; + + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT '*DMAM'||code, 'DMAM'||code, 'Diminution SSR ' || code, 'Diminution SSR ' || code + FROM + ( + SELECT t_rubriques_facturation.code AS code + FROM w_factures_lignes_c_dma + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.oid = rubrique_facturation_id + GROUP BY 1 + ) subview + WHERE ('*DMAM'||code) NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation WHERE code_original IS NOT NULL) + ; + + UPDATE w_factures_lignes_c_dma SET + rubrique_facturation_id = t_rubriques_facturation_dmam.oid, + rubrique_comptabilisation_id = t_rubriques_facturation_dmam.oid + FROM activite[PX].t_rubriques_facturation + JOIN activite[PX].t_rubriques_facturation t_rubriques_facturation_dmam ON t_rubriques_facturation_dmam.code_original = '*DMAM'||t_rubriques_facturation.code + WHERE rubrique_facturation_id = t_rubriques_facturation.oid + ; + UPDATE w_factures_lignes_c_dma SET + prestation_id = t_prestations_dmam.oid + FROM activite.t_prestations + JOIN activite.t_prestations t_prestations_dmam ON t_prestations_dmam.code = 'DMAM'||t_prestations.code + WHERE prestation_id = t_prestations.oid + ; + + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + facture_id, + date_debut, + date_fin, + + lieu_id, + origine_facturation_id, + + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + protocole_id, + compte_produit_id, + ucd_id, + lpp_id, + + prix_unitaire, + + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + + taux_0, + taux_1, + taux_2, + taux_22, + + taux_tva, + + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_comptabilise_budget_global_1, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + + + ) + SELECT + no_facture, + facture_id, + date_debut, + date_fin, + + lieu_id, + origine_facturation_id, + + rubrique_facture_id, + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + protocole_id, + compte_produit_id, + ucd_id, + lpp_id, + + prix_unitaire, + + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + + taux_0, + taux_1, + taux_2, + taux_22, + + 0::numeric AS taux_tva, + + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_comptabilise_budget_global_1, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + FROM w_factures_lignes_c_dma + WHERE montant_facture_dma <> 0 + ; + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_c_8'); + + + ]]> + + + + 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4,5; + + + DROP TABLE IF EXISTS w_CPT_OP_LINK; + CREATE TEMP TABLE w_CPT_OP_LINK AS + SELECT LNK_OPERATION, + MAX(ECR_DATE) AS ECR_DATE + FROM w_CPT_OP_LINK_source_agg + JOIN + ( + SELECT + LNK_MASTER_OP, MAX(ECR_DATE) AS ECR_DATE + FROM w_CPT_ECRITURE_source_OP_LINK + WHERE LNK_ERROR = '' + GROUP BY 1 + ) subview ON w_CPT_OP_LINK_source_agg.LNK_MASTER_OP = subview.LNK_MASTER_OP + GROUP BY 1; + + ALTER TABLE w_CPT_OP_LINK ADD CONSTRAINT w_CPT_OP_LINK_pkey PRIMARY KEY(LNK_OPERATION); + + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + facture_id, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + od_non_comptabilise, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + w_factures.no_facture, + w_factures.oid AS facture_id, + date(COALESCE(ECR_DATE,RD_DATE,FR_DATE_ENC)) AS date_comptable, + rubrique_facturation_id AS rubrique_comptabilisation_id, + prestation_id, + CASE + WHEN FR_DATE_DEPOT_GUESS IS NOT NULL AND FR_DATE_ENC IS NULL THEN '1' + WHEN RD_CREATED > ECR_UPDATED_MAX THEN '1' + ELSE '0' END AS od_non_comptabilise, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(RD_MONTANT) As montant_regle, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN RD_MONTANT ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN RD_MONTANT ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN RD_MONTANT ELSE 0 END) AS montant_regle_2, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN RD_MONTANT ELSE 0 END) AS montant_regle_22 + FROM prod_web100t2.FAC_RGLMT_DETAILS + JOIN prod_web100t2.FAC_REGLEMENTS ON FR_OID = RD_REGLEMENT + JOIN w_factures ON RD_FACTURE = FACT_OID AND IMPAYE = 0 + JOIN prod_web100t2.FAC_FACT_TIER ON RD_FACT_TIER = FT_OID + JOIN prod_web100t2.FAC_FACT_LIGNE_TIER ON RD_FACT_LINE = FLT_OID + JOIN w_ART_ARTICLES ON FLT_ARTICLE = ART_OID + LEFT JOIN w_CPT_OP_LINK ON RD_COMPTA = LNK_OPERATION + JOIN w_max_ECR_UPDATED ON 1=1 + WHERE RD_ETS = 1 + GROUP BY 1,2,3,4,5,6; + + + -- Acomptes noemie 85% + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT '*CTI_ACO85', 'ACO85', 'Acomptes 85%', 'Acomptes 85%' + WHERE '*CTI_ACO85' NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation); + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT '*CTI_ACO85', 'ACO85', 'Acomptes 85%', 'Acomptes 85%' + WHERE '*CTI_ACO85' NOT IN (SELECT code_original FROM activite.t_prestations WHERE code_original IS NOT NULL); + + -- Correction tables noemie car quelque fois il manque la reprise d'acompte sur le règlement + UPDATE prod_web100t2.NOE_PAI_FACT + SET NPF_TOTAL_ACOMPTE = 0-NPF_TOTAL_ACOMPTE_1 + FROM + ( + SELECT NPF_FACT_TIER, + MAX(CASE WHEN NPF_TOTAL_ACOMPTE <> 0 THEN NPF_OID ELSE 0 END) AS NPF_OID_1, + MAX(CASE WHEN NPF_TOTAL_ACOMPTE <> 0 THEN NPF_TOTAL_ACOMPTE ELSE NULL END) AS NPF_TOTAL_ACOMPTE_1, + MAX(CASE WHEN NPF_TOTAL_ACOMPTE = 0 THEN NPF_OID ELSE 0 END) AS NPF_OID_2 + FROM prod_web100t2.NOE_PAI_FACT + JOIN prod_web100t2.NOE_PAIEMENT ON NPF_PAIEMENT = NP_OID AND NP_PAIEMENT_ETS = 1 + GROUP BY 1 + HAVING count(*) = 2 AND + SUM(NPF_TOTAL_ACOMPTE) > 0 AND + MAX(CASE WHEN NPF_TOTAL_ACOMPTE = 0 THEN NPF_OID ELSE 0 END) <> 0 + ) subview + WHERE NPF_OID = NPF_OID_2 AND + NPF_TOTAL_ACOMPTE = 0 + ; + + -- Exploitation des tables noemie + DROP TABLE IF EXISTS w_NOE_PAI_FACT; + CREATE TEMP TABLE w_NOE_PAI_FACT AS + SELECT FACT_NUMERO, + NPF_FACT_TIER, + NPF_TOTAL_AMO, + NPF_TOTAL_ACOMPTE, + NPF_PAIEMENT, + NP_DATE_COMPTABLE, + NP_REGLEMENT, + date(COALESCE(FR_DATE_ENC,NP_DATE_COMPTABLE)) AS date_imputation, + '1'::text AS ok + FROM prod_web100t2.NOE_PAI_FACT + JOIN prod_web100t2.NOE_PAIEMENT ON NPF_PAIEMENT = NP_OID AND NP_PAIEMENT_ETS = 1 + LEFT JOIN prod_web100t2.FAC_REGLEMENTS ON NP_REGLEMENT = FR_OID + JOIN prod_web100t2.FAC_FACT_TIER ON NPF_FACT_TIER = FT_OID + JOIN prod_web100t2.FAC_FACTURE ON FT_FACTURE = FACT_OID + WHERE NPF_TOTAL_ACOMPTE <> 0 AND + FACT_DA = ANY(SELECT DA_OID FROM prod_web100t2.DAT_DA WHERE DA_EG_ENTREE = ANY(SELECT ets_oid FROM w_NMCL_ETABLISSEMENT)) + ; + + -- Date imputation reprise acompte selon date encaissement AMO + UPDATE w_NOE_PAI_FACT + SET date_imputation = subview.date_imputation + FROM + ( + SELECT NPF_PAIEMENT, max(date_imputation) AS date_imputation + FROM + ( + + SELECT p_factures.no_facture, + MAX(NPF_PAIEMENT) AS npf_paiement, + MIN(NP_DATE_COMPTABLE), + MIN(p_factures_soldes_c.date_comptable) AS date_imputation, + date(MIN(p_factures_soldes_c.date_comptable)) - date(MIN(NP_DATE_COMPTABLE)) AS ecart + FROM w_NOE_PAI_FACT + JOIN activite[PX].p_factures ON FACT_NUMERO = p_factures.no_facture + JOIN activite[PX].p_factures_soldes_c ON p_factures_soldes_c.no_facture = p_factures.no_facture + WHERE p_factures.montant_comptabilise_1_c = p_factures_soldes_c.montant_regle_1 AND + NPF_TOTAL_ACOMPTE < 0 AND + NPF_TOTAL_AMO = montant_regle_1 + GROUP BY 1 + HAVING count(*) = 1 + ORDER BY 2,5 desc + ) subview + GROUP BY 1 + HAVING count(DISTINCT ecart) = 1 + ) subview + WHERE w_NOE_PAI_FACT.NPF_PAIEMENT = subview.NPF_PAIEMENT + ; + + UPDATE w_NOE_PAI_FACT + SET OK = '0' + FROM + ( + SELECT NPF_FACT_TIER, SUM(NPF_TOTAL_ACOMPTE), MAX(NP_DATE_COMPTABLE) + FROM w_NOE_PAI_FACT + GROUP BY 1 + HAVING ( + SUM(NPF_TOTAL_ACOMPTE) <> 0 AND MAX(NP_DATE_COMPTABLE) < (now() - interval '1 year') OR + SUM(NPF_TOTAL_ACOMPTE) < 0 OR + SUM(NPF_TOTAL_ACOMPTE) > 0 AND count(*) > 1 + ) + ) subview + WHERE w_NOE_PAI_FACT.NPF_FACT_TIER = subview.NPF_FACT_TIER + ; + + + + -- Acompte et reprise d'acompte + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date_imputation AS date_comptable, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + NPF_TOTAL_ACOMPTE AS montant_regle, + 0 AS montant_regle_0, + NPF_TOTAL_ACOMPTE AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22, + '1' AS od_non_comptabilise + FROM w_NOE_PAI_FACT + JOIN activite[PX].p_factures ON FACT_NUMERO = no_facture + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = '*CTI_ACO85' + JOIN activite.t_prestations ON t_prestations.code_original = '*CTI_ACO85' + WHERE w_NOE_PAI_FACT.ok = '1' + ; + + -- Règlement si mouvement non comptabilisé + INSERT INTO activite[PX].p_factures_soldes_c( + facture_id, + no_facture, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture, + date_imputation AS date_comptable, + t_rubriques_facturation.oid AS rubrique_comptabilisation_id, + t_prestations.oid AS prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + NPF_TOTAL_AMO AS montant_regle, + 0 AS montant_regle_0, + NPF_TOTAL_AMO AS montant_regle_1, + 0 AS montant_regle_2, + 0 AS montant_regle_22, + '1' AS od_non_comptabilise + FROM w_NOE_PAI_FACT + JOIN activite[PX].p_factures ON FACT_NUMERO = no_facture + JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code_original = '*CTI_ACO85' + JOIN activite.t_prestations ON t_prestations.code_original = '*CTI_ACO85' + WHERE w_NOE_PAI_FACT.ok = '1' AND + NP_REGLEMENT = 0 AND + NPF_TOTAL_ACOMPTE < 0 AND + NPF_TOTAL_AMO > 0 AND + date_imputation >= date(now() - interval '1 month') + ; + + UPDATE activite[PX].p_factures SET + montant_regle_c = montant_regle_c + montant_acompte, + montant_regle_1_c = montant_regle_1_c + montant_acompte + FROM + ( + SELECT no_facture, SUM(montant_regle_1) AS montant_acompte + FROM activite[PX].p_factures_soldes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND + t_prestations.code_original = '*CTI_ACO85' + GROUP BY 1 + HAVING SUM(montant_regle_1) <> 0 + ) subview + WHERE p_factures.no_facture = subview.no_facture + ; + + + + + -- Solder les factures soldées par une facture d'impayé + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + facture_id, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures_soldes_c.no_facture, + p_factures_soldes_c.facture_id, + p_factures_soldes_c.date_comptable, + p_factures_soldes_c.rubrique_comptabilisee_id, + p_factures_soldes_c.prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + p_factures_soldes_c.montant_comptabilise AS montant_regle, + p_factures_soldes_c.montant_comptabilise_0 AS montant_regle_0, + p_factures_soldes_c.montant_comptabilise_1 AS montant_regle_1, + p_factures_soldes_c.montant_comptabilise_2 AS montant_regle_2, + p_factures_soldes_c.montant_comptabilise_22 AS montant_regle_22, + '1'::text AS od_non_comptabilise + FROM activite[PX].p_factures_soldes_c + JOIN activite[PX].p_factures ON split_part(p_factures_soldes_c.no_facture,'-IM',1) = p_factures.no_facture + WHERE p_factures_soldes_c.no_facture LIKE '%-IM%' AND p_factures_soldes_c.montant_comptabilise <> 0 + ; + + INSERT INTO activite[PX].p_factures_soldes_c( + no_facture, + facture_id, + date_comptable, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures.no_facture, + p_factures.oid AS facture_id, + p_factures_soldes_c.date_comptable, + p_factures_soldes_c.rubrique_comptabilisee_id, + p_factures_soldes_c.prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0-p_factures_soldes_c.montant_comptabilise AS montant_regle, + 0-p_factures_soldes_c.montant_comptabilise_0 AS montant_regle_0, + 0-p_factures_soldes_c.montant_comptabilise_1 AS montant_regle_1, + 0-p_factures_soldes_c.montant_comptabilise_2 AS montant_regle_2, + 0-p_factures_soldes_c.montant_comptabilise_22 AS montant_regle_22, + '1'::text AS od_non_comptabilise + FROM activite[PX].p_factures_soldes_c + JOIN activite[PX].p_factures ON split_part(p_factures_soldes_c.no_facture,'-IM',1) = p_factures.no_facture + WHERE p_factures_soldes_c.no_facture LIKE '%-IM%' AND montant_comptabilise <> 0 + ; + + DROP TABLE IF EXISTS w_facture_total_impaye; + CREATE TEMP TABLE w_facture_total_impaye AS + SELECT split_part(p_factures.no_facture,'-IM',1) AS impaye_no_facture, + SUM(montant_comptabilise_c) AS impaye_montant_comptabilise_c, + SUM(montant_comptabilise_1_c) AS impaye_montant_comptabilise_1_c, + SUM(montant_comptabilise_2_c) AS impaye_montant_comptabilise_2_c, + SUM(montant_comptabilise_22_c) AS impaye_montant_comptabilise_22_c, + SUM(montant_comptabilise_0_c) AS impaye_montant_comptabilise_0_c + FROM activite[PX].p_factures + WHERE no_facture LIKE '%-IM%' AND montant_comptabilise_c <> 0 + GROUP BY 1 + ; + + UPDATE activite[PX].p_factures SET + montant_regle_c = montant_regle_c - impaye_montant_comptabilise_c, + montant_regle_1_c = montant_regle_1_c - impaye_montant_comptabilise_1_c, + montant_regle_2_c = montant_regle_2_c - impaye_montant_comptabilise_2_c, + montant_regle_22_c = montant_regle_22_c - impaye_montant_comptabilise_22_c, + montant_regle_0_c = montant_regle_0_c - impaye_montant_comptabilise_0_c + FROM w_facture_total_impaye + WHERE p_factures.no_facture = impaye_no_facture + ; + + UPDATE activite[PX].p_factures SET + montant_regle_c = montant_regle_c + montant_comptabilise_c, + montant_regle_1_c = montant_regle_1_c + montant_comptabilise_1_c, + montant_regle_2_c = montant_regle_2_c + montant_comptabilise_2_c, + montant_regle_22_c = montant_regle_22_c + montant_comptabilise_22_c, + montant_regle_0_c = montant_regle_0_c + montant_comptabilise_0_c + FROM w_facture_total_impaye + WHERE p_factures.no_facture LIKE '%-IM%' AND + split_part(p_factures.no_facture,'-IM',1) = w_facture_total_impaye.impaye_no_facture + ; + + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_c_8'); + + + + ]]> + + + + 0 + GROUP BY 1 + ; + + UPDATE prod_web100t2.DAT_PRESTATIONS_GAP SET + PREST_PU = PU, + PREST_QUANTITE = (date(prest_date_fin)-date(prest_date_debut)+1), + PREST_MFE_HON = round(((date(prest_date_fin)-date(prest_date_debut)+1)*PU*PREST_COEFF)::numeric,2) + FROM w_DAT_PRESTATIONS_GAP_PU + WHERE DAT_PRESTATIONS_GAP.PREST_CODE = w_DAT_PRESTATIONS_GAP_PU.PREST_CODE AND + PREST_DATE_DEBUT <> PREST_DATE_FIN + ; + + TRUNCATE activite[PX].p_factures_lignes_non_facturees_h; + + INSERT INTO activite[PX].p_factures_lignes_non_facturees_h( + no_facture, + facture_id, + date_debut, + date_fin, + heure_debut, + nb_rubrique, + coefficient, + medecin_facture_id, + prestation_id, + prix_unitaire, + montant_depassement, + lieu_id, + acte_id, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4) + SELECT + p_factures.no_facture, + p_factures.oid AS facture_id, + date(PREST_DATE_DEBUT) AS date_debut, + date(COALESCE(PREST_DATE_FIN, PREST_DATE_DEBUT)) AS date_fin, + extract('hour' FROM COALESCE(PREST_DATE_FIN, PREST_DATE_DEBUT)) AS heure_debut, + CASE WHEN PREST_QUANTITE <> 0 AND PREST_PU <> 0 THEN PREST_QUANTITE ELSE 1 END AS nb_rubrique, + CASE WHEN PREST_COEFF <> 0 AND PREST_PU <> 0 THEN PREST_COEFF ELSE 1 END AS coefficient, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_facture_id, + prestation_id, + CASE WHEN PREST_PU <> 0 THEN PREST_PU ELSE PREST_MFE_HON END AS prix_unitaire, + PREST_DEPASSEMENT AS montant_depassement, + p_sejours.lieu_sortie_id AS lieu_id, + acte_id, + ART_CODE_PHASE AS phase_ccam, + ART_CODE_ACTIVITE AS activite_ccam, + PREST_EXTENSION_DOC AS extension_ccam, + substr(PREST_MODIFICATEURS,1,1) AS modificateur_ccam_1, + substr(PREST_MODIFICATEURS,2,1) AS modificateur_ccam_2, + substr(PREST_MODIFICATEURS,3,1) AS modificateur_ccam_3, + substr(PREST_MODIFICATEURS,4,1) AS modificateur_ccam_4 + + FROM prod_web100t2.DAT_PRESTATIONS_GAP + JOIN prod_web100t2.DAT_DA ON PREST_DA = DA_OID + JOIN activite[PX].p_sejours ON DA_OID = p_sejours.code_original AND date(PREST_DATE_DEBUT) BETWEEN date_entree AND date_sortie + JOIN activite[PX].p_factures ON p_factures.no_sejour = p_sejours.no_sejour AND type_facture = 'E' AND date(PREST_DATE_DEBUT) BETWEEN date_debut AND date_fin + JOIN w_ART_ARTICLES ON PREST_ARTICLE = ART_OID + LEFT JOIN activite[PX].t_medecins_administratifs ON PREST_EXECUTANT = t_medecins_administratifs.code_original + WHERE PREST_MFE_HON > 0 AND PREST_ENTENTE_DIRECTE = 0 AND PREST_DELETED = 0 + + + ORDER BY p_sejours.no_sejour; + + + ]]> + + + + = 0 THEN 1 ELSE -1 END AS nb_rubrique, + CASE WHEN SUM(FLT_TOTAL_TTC) >= 0 THEN 1 ELSE -1 END AS nb_prestation, + MAX(COALESCE(B2T_QUANTITE,1)) AS coefficient, + 1::numeric AS coefficient_mco, + + MAX(COALESCE(B2T_TAUX_CLI,0)) AS taux_0, + MAX(COALESCE(B2T_TAUX_AMO,0)) AS taux_1, + MAX(COALESCE(B2T_TAUX_AMC,0)) AS taux_2, + MAX(COALESCE(B2T_TAUX_AMD,0)) AS taux_22, + + SUM(FLT_TOTAL_TTC) AS montant_facture, + SUM(CASE WHEN FLT_IS_DEP = 1 THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_depassement, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_0, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_1, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_2, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_facture_22, + + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + + SUM(CASE WHEN code_vente = '1' AND FLT_IS_DIRECT <= 0 AND FLT_IS_ETS = 0 AND FT_TYPE_TIER <> 'ETS' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise, + SUM(CASE WHEN code_vente = '1' AND FLT_IS_DIRECT <= 0 AND FLT_IS_ETS = 0 AND FT_TYPE_TIER = 'CLI' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise_0, + SUM(CASE WHEN code_vente = '1' AND FLT_IS_DIRECT <= 0 AND FLT_IS_ETS = 0 AND FT_TYPE_TIER = 'AMO' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise_1, + SUM(CASE WHEN code_vente = '1' AND FLT_IS_DIRECT <= 0 AND FLT_IS_ETS = 0 AND FT_TYPE_TIER = 'AMC' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise_2, + SUM(CASE WHEN code_vente = '1' AND FLT_IS_DIRECT <= 0 AND FLT_IS_ETS = 0 AND FT_TYPE_TIER = 'AMD' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_comptabilise_22, + 0::numeric AS montant_comptabilise_budget_global_1, + + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + + MAX(CASE WHEN FT_TYPE_TIER = 'CLI' THEN FLT_OID ELSE 0 END) AS FLT_OID_0, + MAX(CASE WHEN FT_TYPE_TIER = 'AMO' THEN FLT_OID ELSE 0 END) AS FLT_OID_1, + MAX(CASE WHEN FT_TYPE_TIER = 'AMC' THEN FLT_OID ELSE 0 END) AS FLT_OID_2, + MAX(CASE WHEN FT_TYPE_TIER = 'AMD' THEN FLT_OID ELSE 0 END) AS FLT_OID_22 + + FROM prod_web100t2.FAC_FACT_LIGNE_TIER + JOIN w_factures ON FLT_FACTURE = FACT_OID AND IMPAYE = 0 + JOIN prod_web100t2.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN prod_web100t2.FAC_FACT_LIGNE ON FLT_LIGNE_FACTURE = LI_OID + JOIN w_ART_ARTICLES ON FLT_ARTICLE = ART_OID + LEFT JOIN activite[PX].t_medecins_administratifs ON FLT_INTERVENANT = code_original + LEFT JOIN w_FAC_B2_TIER ON LI_LIGNE_SOURCE = B2T_LIGNE + WHERE (FLT_IS_ETS = 0 OR LI_TYPE_B2 = '4') AND FLT_RECAP <> 0 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,FLT_DATE_DEBUT; + + + -- Impayés + INSERT INTO w_factures_lignes_h + SELECT + FLT_LIGNE_FACTURE, + + w_factures.no_facture, + w_factures.oid AS facture_id, + date_vente, + + lieu_sortie_id AS lieu_id, + 1::numeric AS origine_facturation_id, + + COALESCE(t_medecins_administratifs.oid,0) AS medecin_facture_id, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_comptabilise_id, + + acte_id, + ART_CODE_PHASE AS phase_ccam, + ART_CODE_ACTIVITE AS activite_ccam, + ''::text AS extension_ccam, + ''::text AS modificateur_ccam_1, + ''::text AS modificateur_ccam_2, + ''::text AS modificateur_ccam_3, + ''::text AS modificateur_ccam_4, + + rubrique_facturation_id, + rubrique_facturation_id AS rubrique_comptabilisation_id, + prestation_id, + 0::bigint AS protocole_id, + 0::bigint AS compte_produit_id, + + date(MIN(FLT_DATE_DEBUT)) AS date_debut, + date(MAX(FLT_DATE_FIN)) AS date_fin, + date_part('hour', FLT_DATE_DEBUT)*10000 + date_part('minute', FLT_DATE_DEBUT)*100 + date_part('second', FLT_DATE_DEBUT) AS heure_debut, + + + MAX(COALESCE(B2T_PU,FLT_TOTAL_TTC)) AS prix_unitaire, + + 0 AS nb_rubrique, + 0 AS nb_prestation, + MAX(COALESCE(B2T_QUANTITE,1)) AS coefficient, + 1::numeric AS coefficient_mco, + + MAX(COALESCE(B2T_TAUX_CLI,0)) AS taux_0, + MAX(COALESCE(B2T_TAUX_AMO,0)) AS taux_1, + MAX(COALESCE(B2T_TAUX_AMC,0)) AS taux_2, + MAX(COALESCE(B2T_TAUX_AMD,0)) AS taux_22, + + 0 AS montant_facture, + 0 AS montant_depassement, + 0 AS montant_facture_0, + 0 AS montant_facture_1, + 0 AS montant_facture_2, + 0::numeric AS montant_facture_22, + + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + + SUM(FLT_TOTAL_IMPAYE_HON) AS montant_comptabilise, + SUM(FLT_TOTAL_IMPAYE_HON_CLI) AS montant_comptabilise_0, + SUM(FLT_TOTAL_IMPAYE_HON_AMO) AS montant_comptabilise_1, + SUM(FLT_TOTAL_IMPAYE_HON_AMC) AS montant_comptabilise_2, + SUM(FLT_TOTAL_IMPAYE_HON_AMD) AS montant_comptabilise_22, + 0::numeric AS montant_comptabilise_budget_global_1, + + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + + MAX(CASE WHEN FT_TYPE_TIER = 'CLI' THEN FLT_OID ELSE 0 END) AS FLT_OID_0, + MAX(CASE WHEN FT_TYPE_TIER = 'AMO' THEN FLT_OID ELSE 0 END) AS FLT_OID_1, + MAX(CASE WHEN FT_TYPE_TIER = 'AMC' THEN FLT_OID ELSE 0 END) AS FLT_OID_2, + MAX(CASE WHEN FT_TYPE_TIER = 'AMD' THEN FLT_OID ELSE 0 END) AS FLT_OID_22 + + FROM prod_web100t2.FAC_FACT_LIGNE_TIER + JOIN w_FAC_FACT_LIGNE_TIER_IMPAYE ON FLT_OID = FLT_IMPAYE_OID + JOIN w_factures ON FLT_FACTURE = FACT_OID AND IMPAYE = w_FAC_FACT_LIGNE_TIER_IMPAYE.FI_COMPTA + JOIN prod_web100t2.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN prod_web100t2.FAC_FACT_LIGNE ON FLT_LIGNE_FACTURE = LI_OID + JOIN w_ART_ARTICLES ON FLT_ARTICLE = ART_OID + LEFT JOIN activite[PX].t_medecins_administratifs ON FLT_INTERVENANT = code_original + LEFT JOIN w_FAC_B2_TIER ON LI_LIGNE_SOURCE = B2T_LIGNE + WHERE (FLT_IS_ETS = 0 OR LI_TYPE_B2 = '4') AND FLT_RECAP <> 0 + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,FLT_DATE_DEBUT; + + + + + + -- Actes honoraires comptabilisés en clinique, recherche véritable exécutant d'après les prestations + DROP TABLE IF EXISTS w_DAT_PRESTATIONS_GAP; + CREATE TEMP TABLE w_DAT_PRESTATIONS_GAP AS + SELECT PREST_DA, PREST_DATE_DEBUT, PREST_DATE_FIN, PREST_CODE, PREST_ARTICLE, MAX(PREST_EXECUTANT) AS PREST_EXECUTANT + FROM prod_web100t2.DAT_PRESTATIONS_GAP + WHERE PREST_EXECUTANT <> 0 AND PREST_DELETED = 0 + GROUP BY 1,2,3,4,5; + + DROP TABLE IF EXISTS w_FAC_FACT_LIGNE_TIER_EXEC; + CREATE TEMP TABLE w_FAC_FACT_LIGNE_TIER_EXEC AS + SELECT FLT_OID, + MAX(COALESCE(w_DAT_PRESTATIONS_GAP_1.PREST_EXECUTANT,w_DAT_PRESTATIONS_GAP_2.PREST_EXECUTANT,FLT_INTERVENANT)) AS FLT_INTERVENANT + FROM prod_web100t2.FAC_FACT_LIGNE_TIER + JOIN prod_web100t2.FAC_FACTURE ON FLT_FACTURE = FACT_OID + JOIN prod_web100t2.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + JOIN prod_web100t2.FAC_FACT_LIGNE ON FLT_LIGNE_FACTURE = LI_OID + JOIN prod_web100t2.DAT_DA ON FT_DA = DA_OID + LEFT JOIN w_DAT_PRESTATIONS_GAP w_DAT_PRESTATIONS_GAP_1 ON + w_DAT_PRESTATIONS_GAP_1.PREST_DA = FT_DA AND + (date(FLT_DATE_DEBUT) = date(w_DAT_PRESTATIONS_GAP_1.PREST_DATE_DEBUT) OR + date(FLT_DATE_FIN) = date(w_DAT_PRESTATIONS_GAP_1.PREST_DATE_FIN) + ) AND + (FLT_ARTICLE = w_DAT_PRESTATIONS_GAP_1.PREST_ARTICLE OR FLT_CODE_PREST = PREST_CODE) + LEFT JOIN w_DAT_PRESTATIONS_GAP w_DAT_PRESTATIONS_GAP_2 ON + w_DAT_PRESTATIONS_GAP_2.PREST_DA = FT_DA AND + (FLT_ARTICLE = w_DAT_PRESTATIONS_GAP_2.PREST_ARTICLE OR FLT_CODE_PREST = w_DAT_PRESTATIONS_GAP_2.PREST_CODE) + WHERE FLT_IS_ETS = 1 AND LI_TYPE_B2 = '4' AND FLT_RECAP <> 0 + GROUP BY 1; + + + UPDATE w_factures_lignes_h SET + medecin_facture_id = t_medecins_administratifs.oid, + medecin_comptabilise_id = t_medecins_administratifs.oid + FROM w_FAC_FACT_LIGNE_TIER_EXEC + JOIN activite[PX].t_medecins_administratifs ON FLT_INTERVENANT = code_original + WHERE w_factures_lignes_h.FLT_OID_0 = w_FAC_FACT_LIGNE_TIER_EXEC.FLT_OID AND + medecin_facture_id IS DISTINCT FROM t_medecins_administratifs.oid; + + UPDATE w_factures_lignes_h SET + medecin_facture_id = t_medecins_administratifs.oid, + medecin_comptabilise_id = t_medecins_administratifs.oid + FROM w_FAC_FACT_LIGNE_TIER_EXEC + JOIN activite[PX].t_medecins_administratifs ON FLT_INTERVENANT = code_original + WHERE w_factures_lignes_h.FLT_OID_1 = w_FAC_FACT_LIGNE_TIER_EXEC.FLT_OID AND + medecin_facture_id IS DISTINCT FROM t_medecins_administratifs.oid; + + UPDATE w_factures_lignes_h SET + medecin_facture_id = t_medecins_administratifs.oid, + medecin_comptabilise_id = t_medecins_administratifs.oid + FROM w_FAC_FACT_LIGNE_TIER_EXEC + JOIN activite[PX].t_medecins_administratifs ON FLT_INTERVENANT = code_original + WHERE w_factures_lignes_h.FLT_OID_2 = w_FAC_FACT_LIGNE_TIER_EXEC.FLT_OID AND + medecin_facture_id IS DISTINCT FROM t_medecins_administratifs.oid; + + UPDATE w_factures_lignes_h SET + medecin_facture_id = t_medecins_administratifs.oid, + medecin_comptabilise_id = t_medecins_administratifs.oid + FROM w_FAC_FACT_LIGNE_TIER_EXEC + JOIN activite[PX].t_medecins_administratifs ON FLT_INTERVENANT = code_original + WHERE w_factures_lignes_h.FLT_OID_22 = w_FAC_FACT_LIGNE_TIER_EXEC.FLT_OID AND + medecin_facture_id IS DISTINCT FROM t_medecins_administratifs.oid; + + -- Correction de taux bizarres + UPDATE w_factures_lignes_h SET + taux_0 = CASE WHEN taux_0 > 100 THEN 100 WHEN taux_0 < -100 THEN -100 ELSE taux_0 END, + taux_1 = CASE WHEN taux_1 > 100 THEN 100 WHEN taux_1 < -100 THEN -100 ELSE taux_1 END, + taux_2 = CASE WHEN taux_2 > 100 THEN 100 WHEN taux_2 < -100 THEN -100 ELSE taux_2 END, + taux_22 = CASE WHEN taux_22 > 100 THEN 100 WHEN taux_22 < -100 THEN -100 ELSE taux_22 END + WHERE + taux_0 > 100 OR + taux_1 > 100 OR + taux_2 > 100 OR + taux_22 > 100 OR + taux_0 < -100 OR + taux_1 < -100 OR + taux_2 < -100 OR + taux_22 < -100 + ; + + + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_disable_index('activite[PX]', 'i_factures_lignes_h_9'); + + + INSERT INTO activite[PX].p_factures_lignes_h( + no_facture, + facture_id, + + lieu_id, + + medecin_facture_id, + medecin_comptabilise_id, + + acte_id, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + + rubrique_facturation_id, + rubrique_comptabilisation_id, + prestation_id, + protocole_id, + + date_debut, + date_fin, + heure_debut, + + + prix_unitaire, + + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + + taux_0, + taux_1, + taux_2, + taux_22, + + montant_facture, + montant_depassement, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + + + ) + SELECT + no_facture, + facture_id, + + lieu_id, + + medecin_facture_id, + medecin_comptabilise_id, + + acte_id, + phase_ccam, + activite_ccam, + extension_ccam, + modificateur_ccam_1, + modificateur_ccam_2, + modificateur_ccam_3, + modificateur_ccam_4, + + rubrique_facturation_id, + rubrique_facturation_id AS rubrique_comptabilisation_id, + prestation_id, + protocole_id, + + date_debut, + date_fin, + heure_debut, + + + prix_unitaire, + + nb_rubrique, + nb_prestation, + coefficient, + coefficient_mco, + + taux_0, + taux_1, + taux_2, + taux_22, + + montant_facture, + montant_depassement, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22 + FROM w_factures_lignes_h; + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_2'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_5'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_6'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_7'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_8'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_lignes_h_9'); + + + + + ]]> + + + + 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0 OR + montant_comptabilise_22 <> 0 + ) + GROUP BY 1,2,3,4; + + + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + facture_id, + date_comptable, + medecin_comptabilise_id, + od_non_comptabilise, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + w_factures.no_facture, + w_factures.oid AS facture_id, + date(COALESCE(ECR_DATE,RD_DATE,FR_DATE_ENC)) AS date_comptable, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_comptabilise_id, + CASE + WHEN FR_DATE_DEPOT_GUESS IS NOT NULL AND FR_DATE_ENC IS NULL THEN '1' + WHEN RD_CREATED > ECR_UPDATED_MAX THEN '1' + ELSE '0' END AS od_non_comptabilise, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(RD_MONTANT) As montant_regle, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN RD_MONTANT ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN RD_MONTANT ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN RD_MONTANT ELSE 0 END) AS montant_regle_2, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN RD_MONTANT ELSE 0 END) AS montant_regle_22 + FROM prod_web100t2.FAC_RGLMT_DETAILS + JOIN prod_web100t2.FAC_REGLEMENTS ON FR_OID = RD_REGLEMENT + JOIN w_factures ON RD_FACTURE = FACT_OID AND IMPAYE = 0 + JOIN prod_web100t2.FAC_FACT_TIER ON RD_FACT_TIER = FT_OID + JOIN prod_web100t2.FAC_FACT_LIGNE_TIER ON RD_FACT_LINE = FLT_OID + LEFT JOIN activite[PX].t_medecins_administratifs ON FLT_INTERVENANT = code_original + LEFT JOIN w_CPT_OP_LINK ON RD_COMPTA = LNK_OPERATION + JOIN w_max_ECR_UPDATED ON 1=1 + WHERE RD_ETS = 0 AND FLT_IS_DIRECT = 0 + GROUP BY 1,2,3,4,5; + + -- Paiements directs comptabilisés + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + facture_id, + date_comptable, + medecin_comptabilise_id, + od_non_comptabilise, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22 + ) + SELECT + w_factures.no_facture, + w_factures.oid AS facture_id, + w_factures.date_vente AS date_comptable, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_comptabilise_id, + '0'::text AS od_non_comptabilise, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + SUM(FLT_TOTAL_TTC) As montant_regle, + SUM(CASE WHEN FT_TYPE_TIER = 'CLI' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_regle_0, + SUM(CASE WHEN FT_TYPE_TIER = 'AMO' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_regle_1, + SUM(CASE WHEN FT_TYPE_TIER = 'AMC' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_regle_2, + SUM(CASE WHEN FT_TYPE_TIER = 'AMD' THEN FLT_TOTAL_TTC ELSE 0 END) AS montant_regle_22 + FROM prod_web100t2.FAC_FACT_LIGNE_TIER + JOIN w_factures ON FLT_FACTURE = FACT_OID AND IMPAYE = 0 + JOIN prod_web100t2.FAC_FACT_TIER ON FLT_FACTURE_TIER = FT_OID + LEFT JOIN activite[PX].t_medecins_administratifs ON FLT_INTERVENANT = code_original + WHERE FLT_IS_ETS = 0 AND FLT_IS_DIRECT = -1 + GROUP BY 1,2,3,4,5; + + -- Solder les factures soldées par une facture d'impayé + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + facture_id, + date_comptable, + medecin_comptabilise_id, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures_soldes_h.no_facture, + p_factures_soldes_h.facture_id, + p_factures_soldes_h.date_comptable, + p_factures_soldes_h.medecin_comptabilise_id, + p_factures_soldes_h.rubrique_comptabilisee_id, + p_factures_soldes_h.prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + p_factures_soldes_h.montant_comptabilise AS montant_regle, + p_factures_soldes_h.montant_comptabilise_0 AS montant_regle_0, + p_factures_soldes_h.montant_comptabilise_1 AS montant_regle_1, + p_factures_soldes_h.montant_comptabilise_2 AS montant_regle_2, + p_factures_soldes_h.montant_comptabilise_22 AS montant_regle_22, + '1'::text AS od_non_comptabilise + FROM activite[PX].p_factures_soldes_h + JOIN activite[PX].p_factures ON split_part(p_factures_soldes_h.no_facture,'-IM',1) = p_factures.no_facture + WHERE p_factures_soldes_h.no_facture LIKE '%-IM%' AND p_factures_soldes_h.montant_comptabilise <> 0 + ; + + INSERT INTO activite[PX].p_factures_soldes_h( + no_facture, + facture_id, + date_comptable, + medecin_comptabilise_id, + rubrique_comptabilisee_id, + prestation_id, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + montant_regle, + montant_regle_0, + montant_regle_1, + montant_regle_2, + montant_regle_22, + od_non_comptabilise + ) + SELECT + p_factures.no_facture, + p_factures.oid AS facture_id, + p_factures_soldes_h.date_comptable, + p_factures_soldes_h.medecin_comptabilise_id, + p_factures_soldes_h.rubrique_comptabilisee_id, + p_factures_soldes_h.prestation_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0-p_factures_soldes_h.montant_comptabilise AS montant_regle, + 0-p_factures_soldes_h.montant_comptabilise_0 AS montant_regle_0, + 0-p_factures_soldes_h.montant_comptabilise_1 AS montant_regle_1, + 0-p_factures_soldes_h.montant_comptabilise_2 AS montant_regle_2, + 0-p_factures_soldes_h.montant_comptabilise_22 AS montant_regle_22, + '1'::text AS od_non_comptabilise + FROM activite[PX].p_factures_soldes_h + JOIN activite[PX].p_factures ON split_part(p_factures_soldes_h.no_facture,'-IM',1) = p_factures.no_facture + WHERE p_factures_soldes_h.no_facture LIKE '%-IM%' AND montant_comptabilise <> 0 + ; + + DROP TABLE IF EXISTS w_facture_total_impaye; + CREATE TEMP TABLE w_facture_total_impaye AS + SELECT split_part(p_factures.no_facture,'-IM',1) AS impaye_no_facture, + SUM(montant_comptabilise_h) AS impaye_montant_comptabilise_h, + SUM(montant_comptabilise_1_h) AS impaye_montant_comptabilise_1_h, + SUM(montant_comptabilise_2_h) AS impaye_montant_comptabilise_2_h, + SUM(montant_comptabilise_22_h) AS impaye_montant_comptabilise_22_h, + SUM(montant_comptabilise_0_h) AS impaye_montant_comptabilise_0_h + FROM activite[PX].p_factures + WHERE no_facture LIKE '%-IM%' AND montant_comptabilise_h <> 0 + GROUP BY 1 + ; + + UPDATE activite[PX].p_factures SET + montant_regle_h = montant_regle_h - impaye_montant_comptabilise_h, + montant_regle_1_h = montant_regle_1_h - impaye_montant_comptabilise_1_h, + montant_regle_2_h = montant_regle_2_h - impaye_montant_comptabilise_2_h, + montant_regle_22_h = montant_regle_22_h - impaye_montant_comptabilise_22_h, + montant_regle_0_h = montant_regle_0_h - impaye_montant_comptabilise_0_h + FROM w_facture_total_impaye + WHERE p_factures.no_facture = impaye_no_facture + ; + + UPDATE activite[PX].p_factures SET + montant_regle_h = montant_regle_h + montant_comptabilise_h, + montant_regle_1_h = montant_regle_1_h + montant_comptabilise_1_h, + montant_regle_2_h = montant_regle_2_h + montant_comptabilise_2_h, + montant_regle_22_h = montant_regle_22_h + montant_comptabilise_22_h, + montant_regle_0_h = montant_regle_0_h + montant_comptabilise_0_h + FROM w_facture_total_impaye + WHERE p_factures.no_facture LIKE '%-IM%' AND + split_part(p_factures.no_facture,'-IM',1) = w_facture_total_impaye.impaye_no_facture + ; + + + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_1'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_3'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_4'); + SELECT base.cti_enable_index('activite[PX]', 'i_factures_soldes_h_8'); + + + ]]> + + + + + + + + + 0 AND + p_sejours.ghm_id <= 0 AND + t_ghm_pmsi.code NOT LIKE '90%' AND + t_ghm_pmsi.code NOT LIKE '99%' + ; + + ANALYSE activite[PX].p_sejours; + ANALYSE activite[PX].p_factures; + ANALYSE activite[PX].p_factures_lignes_c; + + -- Ajout des prestations PMSI aux prestations activité + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT + t_prestations_pmsi.code, + t_prestations_pmsi.code, + t_prestations_pmsi.texte, + t_prestations_pmsi.texte + FROM pmsi.p_rsf_detail + JOIN pmsi.p_rss ON p_rss.oid = p_rsf_detail.rss_id AND p_rss.etat = '' AND p_rss.en_cours = '0' + JOIN pmsi.t_prestations t_prestations_pmsi ON t_prestations_pmsi.oid = p_rsf_detail.prestation_id + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code = t_prestations_pmsi.code + WHERE est_ligne_rss = '1' AND p_rss.en_cours = '0' AND + operation_lamda IS DISTINCT FROM '1' AND + operation_lamda IS DISTINCT FROM '2' AND + t_rubriques_facturation.oid IS NULL + GROUP BY 1,2,3,4; + + -- Ajout des prestations PMSI aux rubriques activité + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT + t_prestations_pmsi.code, + t_prestations_pmsi.code, + t_prestations_pmsi.texte, + t_prestations_pmsi.texte + FROM pmsi.p_rsf_detail + JOIN pmsi.p_rss ON p_rss.oid = p_rsf_detail.rss_id AND p_rss.etat = '' AND p_rss.en_cours = '0' + JOIN pmsi.t_prestations t_prestations_pmsi ON t_prestations_pmsi.oid = p_rsf_detail.prestation_id + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite.t_prestations t_prestations_activite ON t_prestations_activite.code = t_prestations_pmsi.code + WHERE est_ligne_rss = '1' AND p_rss.en_cours = '0' AND + operation_lamda IS DISTINCT FROM '1' AND + operation_lamda IS DISTINCT FROM '2' AND + t_prestations_activite.oid IS NULL + GROUP BY 1,2,3,4; + + -- Lignes PMSI à ajouter + DROP TABLE IF EXISTS w_factures_lignes_pmsi; + CREATE TEMP TABLE w_factures_lignes_pmsi AS + SELECT + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour || '.BG' AS no_facture, + 0::bigint AS facture_id, + CASE WHEN p_rsf_detail.type = 'C' THEN 'H' ELSE 'C' END AS clinique_honoraire, + p_rsf_detail.date_debut, + CASE WHEN p_sejours.type_sejour <> '5' THEN p_rsf_detail.date_fin ELSE p_rsf_detail.date_debut END AS date_fin, + p_rsf_detail.nombre AS nb_rubrique, + p_rsf_detail.nombre AS nb_prestation, + p_rsf_detail.coefficient AS coefficient, + p_rsf_detail.coefficient_mco, + COALESCE(t_rubriques_facturation.oid,0::bigint) AS rubrique_facturation_id, + COALESCE(t_rubriques_facturation.oid,0::bigint) AS rubrique_comptabilisation_id, + COALESCE(t_prestations_activite.oid,0::bigint) AS prestation_id, + CASE WHEN p_rss.traitement_epmsi IN ('30','31','32','33') THEN p_rsf_detail.sejour_remboursable ELSE 0 END AS montant_facture, + 0::numeric AS montant_facture_0, + CASE WHEN p_rss.traitement_epmsi IN ('30','31','32','33') THEN p_rsf_detail.sejour_remboursable ELSE 0 END AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + 0::numeric AS taux_0, + p_rsf_detail.taux_remboursement AS taux_1, + 0::numeric AS taux_2, + 0::numeric AS taux_22, + p_rsf_detail.prix_unitaire, + p_sejours.lieu_sortie_id AS lieu_id, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + 0::numeric AS montant_encours, + 0::numeric AS montant_encours_0, + 0::numeric AS montant_encours_1, + 0::numeric AS montant_encours_2, + 0::numeric AS montant_encours_22, + 0::numeric AS montant_facture_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_0_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_1_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_2_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_22_actes_inclus_dans_sejour, + CASE WHEN p_rsf_detail.type = 'C' THEN 2::bigint ELSE 1::bigint END AS origine_facturation_id, + CASE WHEN p_rss.traitement_epmsi IN ('30','31','32','33') THEN p_rsf_detail.sejour_remboursable ELSE 0 END AS montant_comptabilise_budget_global_1, + 0::numeric AS protocole_id, + 0::numeric AS compte_produit_id, + t_prestations_pmsi.code AS prestation_code, + ''::text AS uf_code, + ''::text AS dmt_code, + ''::text AS mt_code + FROM pmsi.p_rsf_detail + JOIN pmsi.p_rss ON p_rss.oid = p_rsf_detail.rss_id AND p_rss.etat = '' AND p_rss.en_cours = '0' + JOIN pmsi.p_rsf_total ON p_rss.oid = p_rsf_total.rss_id AND p_rsf_total.valorise_fides IS DISTINCT FROM 1 + JOIN pmsi.t_prestations t_prestations_pmsi ON t_prestations_pmsi.oid = p_rsf_detail.prestation_id + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejour_pmsi ON p_rss.oid = p_sejour_pmsi.rss_id + JOIN activite[PX].p_sejours on p_sejour_pmsi.no_sejour = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite.t_prestations t_prestations_activite ON t_prestations_activite.code = t_prestations_pmsi.code + LEFT JOIN activite[PX].t_rubriques_facturation ON t_rubriques_facturation.code = t_prestations_pmsi.code + WHERE est_ligne_rss = '1' AND p_rss.en_cours = '0' AND + p_rss.etat = '' AND + operation_lamda IS DISTINCT FROM '1' AND + operation_lamda IS DISTINCT FROM '2' AND + p_rss.traitement_epmsi NOT IN ('11', '12') ; + + -- compte + UPDATE w_factures_lignes_pmsi + SET uf_code = t_unites_fonctionnelles.code, + dmt_code = CASE WHEN t_dmt.oid <> 0 THEN t_dmt.code ELSE '' END, + mt_code = CASE WHEN t_modes_traitement.oid <> 0 THEN CASE WHEN t_modes_traitement.code <> '23' THEN t_modes_traitement.code ELSE '04' END ELSE '' END + FROM activite[PX].t_lieux + JOIN activite[PX].t_unites_fonctionnelles ON unite_fonctionnelle_id = t_unites_fonctionnelles.oid + JOIN activite[PX].t_services_facturation On service_facturation_id = t_services_facturation.oid + JOIN base.t_dmt ON dmt_id = t_dmt.oid + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + WHERE lieu_id = t_lieux.oid; + + DROP TABLE IF EXISTS w_last_comptes_produits; + CREATE TEMP TABLE w_last_comptes_produits AS + SELECT t_prestations.code AS last_prestation_code, + t_unites_fonctionnelles.code AS last_uf_code, + t_dmt.code AS last_dmt_code, + t_modes_traitement.code AS last_mt_code, + (MAX(ARRAY[date_fin::text,compte_produit_id::text]))[2]::bigint AS last_compte_produit_id + FROM activite[PX].p_factures_lignes_c + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN activite[PX].t_lieux ON lieu_id = t_lieux.oid + JOIN activite[PX].t_unites_fonctionnelles ON unite_fonctionnelle_id = t_unites_fonctionnelles.oid + JOIN activite[PX].t_services_facturation On service_facturation_id = t_services_facturation.oid + JOIN base.t_dmt ON dmt_id = t_dmt.oid + JOIN base.t_modes_traitement ON t_services_facturation.mode_traitement_id = t_modes_traitement.oid + WHERE compte_produit_id != 0 + GROUP BY 1,2,3,4; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = last_compte_produit_id + FROM w_last_comptes_produits + WHERE compte_produit_id = 0 AND + last_prestation_code = prestation_code AND + last_uf_code = uf_code AND + last_dmt_code = dmt_code AND + last_mt_code = mt_code; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = last_compte_produit_id + FROM w_last_comptes_produits + WHERE compte_produit_id = 0 AND + last_prestation_code = prestation_code AND + last_uf_code = uf_code AND + last_dmt_code = '' AND + last_mt_code = mt_code; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = last_compte_produit_id + FROM w_last_comptes_produits + WHERE compte_produit_id = 0 AND + last_prestation_code = prestation_code AND + last_uf_code = uf_code AND + last_dmt_code = dmt_code AND + last_mt_code = ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = last_compte_produit_id + FROM w_last_comptes_produits + WHERE compte_produit_id = 0 AND + last_prestation_code = prestation_code AND + last_uf_code = uf_code AND + last_dmt_code = '' AND + last_mt_code = ''; + + + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = last_compte_produit_id + FROM w_last_comptes_produits + WHERE compte_produit_id = 0 AND + last_prestation_code = prestation_code AND + last_uf_code = '' AND + last_dmt_code = dmt_code AND + last_mt_code = mt_code; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = last_compte_produit_id + FROM w_last_comptes_produits + WHERE compte_produit_id = 0 AND + last_prestation_code = prestation_code AND + last_uf_code = '' AND + last_dmt_code = '' AND + last_mt_code = mt_code; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = last_compte_produit_id + FROM w_last_comptes_produits + WHERE compte_produit_id = 0 AND + last_prestation_code = prestation_code AND + last_uf_code = '' AND + last_dmt_code = dmt_code AND + last_mt_code = ''; + + UPDATE w_factures_lignes_pmsi + SET compte_produit_id = last_compte_produit_id + FROM w_last_comptes_produits + WHERE compte_produit_id = 0 AND + last_prestation_code = prestation_code AND + last_uf_code = '' AND + last_dmt_code = '' AND + last_mt_code = ''; + + UPDATE w_factures_lignes_pmsi + SET prestation_id = (SELECT oid FROM activite.t_prestations WHERE code = 'UCD') + WHERE prestation_id IN (SELECT oid FROM activite.t_prestations WHERE code = 'PHH') + ; + + -- Rubriques internes cti + SELECT activite[PX].cti_reorganize_rubrique_facture_c('w_factures_lignes_pmsi'); + + + CREATE INDEX w_factures_lignes_pmsi_i1 + ON w_factures_lignes_pmsi + USING btree + (no_sejour); + + + -- Factures de base + DROP TABLE IF EXISTS w_factures_pmsi_base; + CREATE TEMP TABLE w_factures_pmsi_base AS + SELECT p_factures.no_sejour, + (MAX(Array[CASE WHEN p_factures.code_facture <> '0' THEN p_factures.date_facture ELSE '00010101' END::text,p_factures.no_facture]))[2] AS no_facture_base + FROM pmsi.p_rss + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejour_pmsi ON p_rss.oid = p_sejour_pmsi.rss_id + JOIN activite[PX].p_sejours on p_sejour_pmsi.no_sejour = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour + WHERE p_rss.etat = '' AND + p_rss.en_cours = '0' + GROUP BY 1; + + CREATE INDEX w_factures_pmsi_base_i1 + ON w_factures_pmsi_base + USING btree + (no_sejour); + + CREATE INDEX w_factures_pmsi_base_i2 + ON w_factures_pmsi_base + USING btree + (no_facture_base); + + -- Factures à créer + DROP TABLE IF EXISTS w_factures_pmsi; + CREATE TEMP TABLE w_factures_pmsi AS + SELECT + w_factures_lignes_pmsi.no_sejour, + w_factures_lignes_pmsi.sejour_id, + w_factures_lignes_pmsi.no_facture, + p_sejours.date_entree AS date_debut, + p_sejours.date_sortie AS date_fin, + '0'::text AS type_facture, + '1'::text AS code_facture, + MAX(CASE + WHEN p_factures_base.date_facture IS NULL THEN p_sejours.date_sortie + WHEN p_factures_base.date_facture <> '20991231' THEN p_factures_base.date_facture + WHEN p_sejours.date_groupage <> '20991231' THEN p_sejours.date_groupage + ELSE p_sejours.date_sortie END)::date AS date_facture, + MAX(COALESCE(p_factures_base.code_vente,'1')) AS code_vente, + MAX(COALESCE(p_factures_base.mois_vente,209912)) AS mois_vente, + MAX(COALESCE(p_factures_base.date_facture,p_sejours.date_sortie)) AS date_solde, + '0'::text AS particularite_t2a, + MAX(COALESCE(p_factures_base.date_vente,p_sejours.date_sortie)) AS date_vente, + ''::text AS code_cloture, + MAX(p_sejours.code_cp_demandee) AS code_cp_demandee, + '20991231'::date AS date_encours, + MAX(p_sejours.ghs_id) AS ghs_id, + MAX(p_sejours.ghs_bebe1_id) AS ghs_bebe1_id, + MAX(p_sejours.ghs_bebe2_id) AS ghs_bebe2_id, + MAX(p_sejours.ghs_bebe3_id) AS ghs_bebe3_id, + MAX(p_sejours.ghm_id) AS ghm_id, + SUM(montant_facture) AS montant_facture_c, + 0::numeric AS montant_facture_h, + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + '20991231'::date AS date_expedition, + 0::numeric AS delai_expedition, + MAX(p_sejours.tiers_payant_1_id) AS tiers_payant_1_id, + MAX(p_sejours.tiers_payant_2_id) AS tiers_payant_2_id, + MAX(p_sejours.tiers_payant_22_id) AS tiers_payant_22_id, + MAX(p_sejours.tiers_payant_0_id) AS tiers_payant_0_id, + '20991231'::date AS date_solde_0_c, + '20991231'::date AS date_solde_0_h, + '20991231'::date AS date_solde_1_c, + '20991231'::date AS date_solde_1_h, + '20991231'::date AS date_solde_2_c, + '20991231'::date AS date_solde_2_h, + '20991231'::date AS date_solde_22_c, + '20991231'::date AS date_solde_22_h, + '20991231'::date AS date_expedition_0, + '20991231'::date AS date_expedition_1, + '20991231'::date AS date_expedition_2, + '20991231'::date AS date_expedition_22, + '0'::text AS code_expedie_0, + '0'::text AS code_expedie_1, + '0'::text AS code_expedie_2, + '0'::text AS code_expedie_22, + ''::text AS no_bordereau_0, + ''::text AS no_bordereau_1, + ''::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + 0::numeric AS montant_facture_0_c, + 0::numeric AS montant_facture_0_h, + SUM(montant_facture) AS montant_facture_1_c, + 0::numeric AS montant_facture_1_h, + 0::numeric AS montant_facture_2_c, + 0::numeric AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + 0::numeric AS montant_regle_1_h, + 0::numeric AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + 0::numeric AS nb_rejets, + 0::numeric AS montant_comptabilise_c, + 0::numeric AS montant_comptabilise_h, + 0::numeric AS montant_comptabilise_0_c, + 0::numeric AS montant_comptabilise_0_h, + 0::numeric AS montant_comptabilise_1_c, + 0::numeric AS montant_comptabilise_1_h, + 0::numeric AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + w_factures_lignes_pmsi.no_facture AS no_facture_reference, + 0::bigint AS facture_reference_id, + '20991231'::date AS date_solde_reference, + '20991231'::date AS date_solde_reference_c, + '20991231'::date AS date_solde_reference_h, + '20991231'::date AS date_solde_reference_0_c, + '20991231'::date AS date_solde_reference_1_c, + '20991231'::date AS date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + '20991231'::date AS date_solde_reference_0_h, + '20991231'::date AS date_solde_reference_1_h, + '20991231'::date AS date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h, + '20991231'::date AS date_solde_c, + '20991231'::date AS date_solde_h, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + SUM(montant_comptabilise_budget_global_1) AS montant_comptabilise_budget_global_c, + '' AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id + FROM w_factures_lignes_pmsi + JOIN activite[PX].p_sejours ON w_factures_lignes_pmsi.no_sejour = p_sejours.no_sejour + JOIN w_factures_pmsi_base ON w_factures_lignes_pmsi.no_sejour = w_factures_pmsi_base.no_sejour + LEFT JOIN activite[PX].p_factures p_factures_base ON w_factures_pmsi_base.no_facture_base = p_factures_base.no_facture AND 1 <> 1 + GROUP BY 1,2,3,4,5; + + INSERT INTO w_factures_pmsi + SELECT + p_sejours.no_sejour, + p_sejours.oid AS sejour_id, + p_sejours.no_sejour || '.BG', + p_sejours.date_entree AS date_debut, + p_sejours.date_sortie AS date_fin, + '0'::text AS type_facture, + '1'::text AS code_facture, + MAX(CASE + WHEN p_sejours.date_groupage <> '20991231' THEN p_sejours.date_groupage + ELSE p_sejours.date_sortie END)::date AS date_facture, + '1' AS code_vente, + 209912 AS mois_vente, + '20991231' AS date_solde, + '0'::text AS particularite_t2a, + '20991231' AS date_vente, + ''::text AS code_cloture, + MAX(p_sejours.code_cp_demandee) AS code_cp_demandee, + '20991231'::date AS date_encours, + MAX(p_sejours.ghs_id) AS ghs_id, + MAX(p_sejours.ghs_bebe1_id) AS ghs_bebe1_id, + MAX(p_sejours.ghs_bebe2_id) AS ghs_bebe2_id, + MAX(p_sejours.ghs_bebe3_id) AS ghs_bebe3_id, + MAX(p_sejours.ghm_id) AS ghm_id, + 0 AS montant_facture_c, + 0::numeric AS montant_facture_h, + 0::numeric AS montant_regle_c, + 0::numeric AS montant_regle_h, + 0::numeric AS delai_facture, + 0::numeric AS delai_solde, + '20991231'::date AS date_expedition, + 0::numeric AS delai_expedition, + MAX(p_sejours.tiers_payant_1_id) AS tiers_payant_1_id, + MAX(p_sejours.tiers_payant_2_id) AS tiers_payant_2_id, + MAX(p_sejours.tiers_payant_22_id) AS tiers_payant_22_id, + MAX(p_sejours.tiers_payant_0_id) AS tiers_payant_0_id, + '20991231'::date AS date_solde_0_c, + '20991231'::date AS date_solde_0_h, + '20991231'::date AS date_solde_1_c, + '20991231'::date AS date_solde_1_h, + '20991231'::date AS date_solde_2_c, + '20991231'::date AS date_solde_2_h, + '20991231'::date AS date_solde_22_c, + '20991231'::date AS date_solde_22_h, + '20991231'::date AS date_expedition_0, + '20991231'::date AS date_expedition_1, + '20991231'::date AS date_expedition_2, + '20991231'::date AS date_expedition_22, + '0'::text AS code_expedie_0, + '0'::text AS code_expedie_1, + '0'::text AS code_expedie_2, + '0'::text AS code_expedie_22, + ''::text AS no_bordereau_0, + ''::text AS no_bordereau_1, + ''::text AS no_bordereau_2, + ''::text AS no_bordereau_22, + 0::numeric AS montant_facture_0_c, + 0::numeric AS montant_facture_0_h, + 0::numeric AS montant_facture_1_c, + 0::numeric AS montant_facture_1_h, + 0::numeric AS montant_facture_2_c, + 0::numeric AS montant_facture_2_h, + 0::numeric AS montant_facture_22_c, + 0::numeric AS montant_facture_22_h, + 0::numeric AS montant_regle_0_c, + 0::numeric AS montant_regle_0_h, + 0::numeric AS montant_regle_1_c, + 0::numeric AS montant_regle_1_h, + 0::numeric AS montant_regle_2_c, + 0::numeric AS montant_regle_2_h, + 0::numeric AS montant_regle_22_c, + 0::numeric AS montant_regle_22_h, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_0_c, + 0::numeric AS delai_solde_0_h, + 0::numeric AS delai_solde_1_c, + 0::numeric AS delai_solde_1_h, + 0::numeric AS delai_solde_2_c, + 0::numeric AS delai_solde_2_h, + 0::numeric AS delai_solde_22_c, + 0::numeric AS delai_solde_22_h, + 0::numeric AS montant_encours_c, + 0::numeric AS montant_encours_0_c, + 0::numeric AS montant_encours_1_c, + 0::numeric AS montant_encours_2_c, + 0::numeric AS montant_encours_22_c, + 0::numeric AS montant_encours_h, + 0::numeric AS montant_encours_0_h, + 0::numeric AS montant_encours_1_h, + 0::numeric AS montant_encours_2_h, + 0::numeric AS montant_encours_22_h, + 0::numeric AS nb_rejets, + 0::numeric AS montant_comptabilise_c, + 0::numeric AS montant_comptabilise_h, + 0::numeric AS montant_comptabilise_0_c, + 0::numeric AS montant_comptabilise_0_h, + 0::numeric AS montant_comptabilise_1_c, + 0::numeric AS montant_comptabilise_1_h, + 0::numeric AS montant_comptabilise_2_c, + 0::numeric AS montant_comptabilise_2_h, + 0::numeric AS montant_comptabilise_22_c, + 0::numeric AS montant_comptabilise_22_h, + p_sejours.no_sejour || '.BG' AS no_facture_reference, + 0::bigint AS facture_reference_id, + '20991231'::date AS date_solde_reference, + '20991231'::date AS date_solde_reference_c, + '20991231'::date AS date_solde_reference_h, + '20991231'::date AS date_solde_reference_0_c, + '20991231'::date AS date_solde_reference_1_c, + '20991231'::date AS date_solde_reference_2_c, + '20991231'::date AS date_solde_reference_22_c, + '20991231'::date AS date_solde_reference_0_h, + '20991231'::date AS date_solde_reference_1_h, + '20991231'::date AS date_solde_reference_2_h, + '20991231'::date AS date_solde_reference_22_h, + '20991231'::date AS date_solde_c, + '20991231'::date AS date_solde_h, + 0::numeric AS montant_facture_c_actes_inclus_dans_sejour, + 0::numeric AS montant_facture_h_actes_inclus_dans_sejour, + 0::numeric AS montant_comptabilise_budget_global_c, + '' AS no_facture_od_avoir, + 0::bigint AS facture_od_avoir_id + FROM pmsi.p_rss + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN w_factures_pmsi ON p_sejours.no_sejour = w_factures_pmsi.no_sejour + WHERE p_rss.en_cours = '0' AND + p_rss.etat = '' AND + p_rss.traitement_epmsi NOT IN ('11', '12') AND + w_factures_pmsi.no_facture IS NULL AND + p_sejours.date_sortie >= '[ENV_ADM_ANNEEDEBUT]0101' AND + p_sejours.no_sejour NOT IN + ( + SELECT p_factures.no_sejour + FROM activite[PX].p_factures + WHERE montant_facture_1_c <> 0 + ) + GROUP BY 1,2,3,4,5; + + + UPDATE w_factures_pmsi + SET date_vente = date_facture, mois_vente = date_part('year',date_facture)*100 + date_part('month',date_facture) + WHERE date_vente = '20991231'; + + UPDATE w_factures_pmsi + SET date_solde = date_facture + WHERE date_vente IS DISTINCT FROM date_facture; + + + -- Ajout des factures + INSERT INTO activite[PX].p_factures + (no_sejour, no_facture, date_debut, date_fin, type_facture, + code_facture, date_facture, code_vente, mois_vente, date_solde, + montant_facture_c, montant_facture_h, montant_regle_c, montant_regle_h, + delai_facture, delai_solde, date_expedition, delai_expedition, + tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, tiers_payant_0_id, + date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, + date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h, + date_expedition_0, date_expedition_1, date_expedition_2, date_expedition_22, + code_expedie_0, code_expedie_1, code_expedie_2, code_expedie_22, + no_bordereau_0, no_bordereau_1, no_bordereau_2, no_bordereau_22, + montant_facture_0_c, montant_facture_0_h, montant_facture_1_c, + montant_facture_1_h, montant_facture_2_c, montant_facture_2_h, + montant_facture_22_c, montant_facture_22_h, montant_regle_0_c, + montant_regle_0_h, montant_regle_1_c, montant_regle_1_h, montant_regle_2_c, + montant_regle_2_h, montant_regle_22_c, montant_regle_22_h, delai_expedition_0, + delai_expedition_1, delai_expedition_2, delai_expedition_22, + delai_solde_0_c, delai_solde_0_h, delai_solde_1_c, delai_solde_1_h, + delai_solde_2_c, delai_solde_2_h, delai_solde_22_c, delai_solde_22_h, + ghs_id, particularite_t2a, date_vente, code_cloture, montant_encours_c, + montant_encours_0_c, montant_encours_1_c, montant_encours_2_c, + montant_encours_22_c, montant_encours_h, montant_encours_0_h, + montant_encours_1_h, montant_encours_2_h, montant_encours_22_h, + code_cp_demandee, date_encours, ghs_bebe1_id, ghs_bebe2_id, ghs_bebe3_id, + nb_rejets, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0_c, + montant_comptabilise_0_h, montant_comptabilise_1_c, montant_comptabilise_1_h, + montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_22_c, + montant_comptabilise_22_h, no_facture_reference, date_solde_reference, + date_solde_reference_c, date_solde_reference_h, date_solde_reference_0_c, + date_solde_reference_1_c, date_solde_reference_2_c, date_solde_reference_22_c, + date_solde_reference_0_h, date_solde_reference_1_h, date_solde_reference_2_h, + date_solde_reference_22_h, date_solde_c, date_solde_h, montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, montant_comptabilise_budget_global_c, + no_facture_od_avoir, sejour_id, facture_reference_id, facture_od_avoir_id, + ghm_id) + SELECt no_sejour, no_facture, date_debut, date_fin, type_facture, + code_facture, date_facture, code_vente, mois_vente, date_solde, + montant_facture_c, montant_facture_h, montant_regle_c, montant_regle_h, + delai_facture, delai_solde, date_expedition, delai_expedition, + tiers_payant_1_id, tiers_payant_2_id, tiers_payant_22_id, tiers_payant_0_id, + date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, + date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h, + date_expedition_0, date_expedition_1, date_expedition_2, date_expedition_22, + code_expedie_0, code_expedie_1, code_expedie_2, code_expedie_22, + no_bordereau_0, no_bordereau_1, no_bordereau_2, no_bordereau_22, + montant_facture_0_c, montant_facture_0_h, montant_facture_1_c, + montant_facture_1_h, montant_facture_2_c, montant_facture_2_h, + montant_facture_22_c, montant_facture_22_h, montant_regle_0_c, + montant_regle_0_h, montant_regle_1_c, montant_regle_1_h, montant_regle_2_c, + montant_regle_2_h, montant_regle_22_c, montant_regle_22_h, delai_expedition_0, + delai_expedition_1, delai_expedition_2, delai_expedition_22, + delai_solde_0_c, delai_solde_0_h, delai_solde_1_c, delai_solde_1_h, + delai_solde_2_c, delai_solde_2_h, delai_solde_22_c, delai_solde_22_h, + ghs_id, particularite_t2a, date_vente, code_cloture, montant_encours_c, + montant_encours_0_c, montant_encours_1_c, montant_encours_2_c, + montant_encours_22_c, montant_encours_h, montant_encours_0_h, + montant_encours_1_h, montant_encours_2_h, montant_encours_22_h, + code_cp_demandee, date_encours, ghs_bebe1_id, ghs_bebe2_id, ghs_bebe3_id, + nb_rejets, montant_comptabilise_c, montant_comptabilise_h, montant_comptabilise_0_c, + montant_comptabilise_0_h, montant_comptabilise_1_c, montant_comptabilise_1_h, + montant_comptabilise_2_c, montant_comptabilise_2_h, montant_comptabilise_22_c, + montant_comptabilise_22_h, no_facture_reference, date_solde_reference, + date_solde_reference_c, date_solde_reference_h, date_solde_reference_0_c, + date_solde_reference_1_c, date_solde_reference_2_c, date_solde_reference_22_c, + date_solde_reference_0_h, date_solde_reference_1_h, date_solde_reference_2_h, + date_solde_reference_22_h, date_solde_c, date_solde_h, montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour, montant_comptabilise_budget_global_c, + no_facture_od_avoir, sejour_id, facture_reference_id, facture_od_avoir_id, + ghm_id + FROM w_factures_pmsi; + + + + -- Ajout des lignes + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, date_debut, date_fin, nb_rubrique, coefficient, coefficient_mco, + rubrique_facturation_id, prestation_id, montant_facture, montant_facture_0, + montant_facture_1, montant_facture_2, montant_facture_22, taux_0, + taux_1, taux_2, taux_22, finess, prix_unitaire, lieu_id, nb_prestation, + montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, + montant_comptabilise_2, montant_comptabilise_22, rubrique_comptabilisation_id, + montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, + montant_encours_22, montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, montant_comptabilise_budget_global_1, + facture_id, protocole_id, compte_produit_id) + SELECT + p_factures.no_facture, w_factures_lignes_pmsi.date_debut, w_factures_lignes_pmsi.date_fin, nb_rubrique, coefficient, coefficient_mco, + rubrique_facturation_id, prestation_id, montant_facture, montant_facture_0, + montant_facture_1, montant_facture_2, montant_facture_22, taux_0, + taux_1, taux_2, taux_22, finess, prix_unitaire, lieu_id, nb_prestation, + montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, + montant_comptabilise_2, montant_comptabilise_22, rubrique_comptabilisation_id, + montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, + montant_encours_22, montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, montant_comptabilise_budget_global_1, + p_factures.oid AS facture_id, protocole_id, compte_produit_id + FROM w_factures_lignes_pmsi + JOIN activite[PX].p_factures ON w_factures_lignes_pmsi.no_facture = p_factures.no_facture ; + + + + + -- En cours PMSI public + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id) + SELECT + p_sejours.oid, + p_sejours.no_sejour, + MAX(p_sejours.no_sejour || '.BG'), + MAX(p_sejours.no_sejour || '.BG'), + MAX(p_sejours.date_entree), + MAX(p_sejours.date_sortie), + '0', + '0', + '20991231'::date, + MAX(p_sejours.tiers_payant_0_id), + MAX(p_sejours.tiers_payant_1_id), + MAX(p_sejours.tiers_payant_2_id), + MAX(p_sejours.tiers_payant_22_id), + MAX(p_sejours.ghs_id), + MAX(p_sejours.ghs_bebe1_id), + MAX(p_sejours.ghs_bebe2_id), + MAX(p_sejours.ghs_bebe3_id) + FROM pmsi.p_rss + JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1' + JOIN activite[PX].p_sejours on no_sejour_administratif = p_sejours.no_sejour AND p_sejours.est_budget_global = '1' + LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND p_factures.no_facture LIKE '%BG' + WHERE p_rss.en_cours = '1' AND p_factures.no_facture IS NULL AND + p_sejours.type_sejour IN ('1','2','5') + GROUP BY 1,2; + + -- Sejours BG PMSi qui ne sont pas dans les RSS + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id) + SELECT p_sejours.oid, + p_sejours.no_sejour, + p_sejours.no_sejour || '.BG', + p_sejours.no_sejour || '.BG', + p_sejours.date_entree, + p_sejours.date_sortie, + '0', + '0', + '20991231'::date, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE p_sejours.est_budget_global = '1' AND + p_sejours.type_sejour IN ('1','2','5') AND + type_t2a = '1' AND + date_sortie between date(date_trunc('year',now() - interval '1 year')) AND now() AND + code_sorti = '1' AND + no_sejour NOT IN (SELECt no_sejour FROm activite[PX].p_factures where no_facture like '%BG') AND + no_sejour NOT IN ( + SELECT p_factures.no_sejour + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_sejours.est_budget_global = '1' AND + p_factures_lignes_c.no_facture NOT LIKE '%BG' AND + code_facture = '1' AND + (t_prestations.code = 'PJ' OR t_prestations.code LIKE 'GHS%') AND + (taux_1 = 100 OR taux_2 = 100 OR taux_0 = 100) + GROUP BY 1 + HAVING SUM(montant_facture_1+montant_facture_0+montant_facture_2) > 0 + ); + + -- Séances pour séjour présents + INSERT INTO activite[PX].p_factures( + sejour_id, + no_sejour, + no_facture, + no_facture_reference, + date_debut, + date_fin, + type_facture, + code_facture, + date_facture, + tiers_payant_0_id, + tiers_payant_1_id, + tiers_payant_2_id, + tiers_payant_22_id, + ghs_id, + ghs_bebe1_id, + ghs_bebe2_id, + ghs_bebe3_id) + SELECT p_sejours.oid, + p_sejours.no_sejour, + p_sejours.no_sejour || '.BG', + p_sejours.no_sejour || '.BG', + p_sejours.date_entree, + date(date_trunc('month',now()) + interval '1 month' - interval '1 day'), + '0', + '0', + '20991231'::date, + p_sejours.tiers_payant_0_id, + p_sejours.tiers_payant_1_id, + p_sejours.tiers_payant_2_id, + p_sejours.tiers_payant_22_id, + p_sejours.ghs_id, + p_sejours.ghs_bebe1_id, + p_sejours.ghs_bebe2_id, + p_sejours.ghs_bebe3_id + FROM activite[PX].p_sejours + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid + WHERE p_sejours.est_budget_global = '1' AND + type_t2a = '1' AND + date_entree between date(date_trunc('year',now() - interval '1 year')) AND now() AND + p_sejours.type_sejour IN ('5') AND + code_sorti <> '1' AND + no_sejour NOT IN (SELECt no_sejour FROm activite[PX].p_factures where no_facture like '%BG') AND + no_sejour NOT IN ( + SELECT p_factures.no_sejour + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + WHERE p_sejours.est_budget_global = '1' AND + code_facture = '1' AND + t_prestations.code = 'PJ' AND + (taux_2 = 100 OR taux_0 = 100) + GROUP BY 1 + HAVING SUM(montant_facture_0+montant_facture_2) > 0 + ); + + + -- Il peut y avoir des lignes en double avec la récupération standard + DELETE FROM activite[PX].p_factures_lignes_non_facturees_c + USING + ( + SELECT no_sejour, prestation_id, + p_factures_lignes_non_facturees_c.date_debut, + p_factures_lignes_non_facturees_c.date_fin, + p_factures_lignes_non_facturees_c.prix_unitaire, + MAX(CASE WHEN p_factures.no_facture NOT LIKE '%.BG' THEN p_factures_lignes_non_facturees_c.no_facture ELSE NULL END) AS no_facture + FROm activite[PX].p_factures_lignes_non_facturees_c + JOIN activite[PX].p_factures ON p_factures_lignes_non_facturees_c.no_facture = p_factures.no_facture + GROUP BY 1,2,3,4,5 + HAVING count(DISTINCT p_factures.no_facture) > 1 AND + MAX(CASE WHEN p_factures.no_facture LIKE '%.BG' THEN 1 ELSE 0 END) = 1 AND + MIN(CASE WHEN p_factures.no_facture LIKE '%.BG' THEN 1 ELSE 0 END) = 0 + ) subview + WHERE p_factures_lignes_non_facturees_c.no_facture = subview.no_facture AND + p_factures_lignes_non_facturees_c.prestation_id = subview.prestation_id AND + p_factures_lignes_non_facturees_c.date_debut = subview.date_debut AND + p_factures_lignes_non_facturees_c.date_fin = subview.date_fin AND + p_factures_lignes_non_facturees_c.prix_unitaire = subview.prix_unitaire + ; + + -- Ou des lignes en double avec la facturation + DELETE FROM activite[PX].p_factures_lignes_non_facturees_c + USING + ( + SELECT no_sejour, prestation_id, + p_factures_lignes_non_facturees_c.date_debut, + p_factures_lignes_non_facturees_c.date_fin, + p_factures_lignes_non_facturees_c.prix_unitaire, + MAX(CASE WHEN p_factures.no_facture NOT LIKE '%.BG' THEN p_factures_lignes_non_facturees_c.no_facture ELSE NULL END) AS no_facture + FROm activite[PX].p_factures_lignes_non_facturees_c + JOIN activite[PX].p_factures ON p_factures_lignes_non_facturees_c.no_facture = p_factures.no_facture + GROUP BY 1,2,3,4,5 + ) subview + JOIN + ( + SELECT no_sejour, prestation_id, + p_factures_lignes_c.date_debut, + p_factures_lignes_c.date_fin, + p_factures_lignes_c.prix_unitaire, + p_factures.no_facture + FROm activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + GROUP BY 1,2,3,4,5,6 + ) subview2 + ON subview2.prestation_id = subview.prestation_id AND + subview2.date_debut = subview.date_debut AND + subview2.date_fin = subview.date_fin AND + subview2.prix_unitaire = subview.prix_unitaire + WHERE p_factures_lignes_non_facturees_c.no_facture = subview.no_facture AND + p_factures_lignes_non_facturees_c.prestation_id = subview.prestation_id AND + p_factures_lignes_non_facturees_c.date_debut = subview.date_debut AND + p_factures_lignes_non_facturees_c.date_fin = subview.date_fin AND + p_factures_lignes_non_facturees_c.prix_unitaire = subview.prix_unitaire + ; + + + -- Factures non assurés ajoutées à tord (on trouve un 100% dans patient ou tp1 + DROP TABLE IF EXISTS w_sejours_bg_24; + CREATE TEMP TABLE w_sejours_bg_24 AS + SELECT p_factures.no_sejour, SUM(montant_facture_0+montant_facture_1+montant_facture_2) AS montant_facture_100 + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN activite[PX].p_sejour_pmsi ON p_sejour_pmsi.sejour_id = p_sejours.oid + JOIN pmsi.p_rss ON p_sejour_pmsi.rss_id = p_rss.oid + WHERE p_sejours.est_budget_global = '1' AND + code_facture = '1' AND + ( + t_prestations.code = 'PJ' OR + t_prestations.code LIKE 'GHS%' + ) AND + (taux_1 + taux_2 + taux_0 = 100 OR + taux_0+taux_1+taux_2=0 AND montant_facture_1 = montant_facture + ) AND + p_rss.traitement_epmsi NOT IN ('30','31','32','33') + GROUP BY 1 + HAVING SUM(montant_facture_0+montant_facture_1+montant_facture_2) > 0 + ORDER BY 1; + + DELETE FROM activite[PX].p_factures_lignes_c + USING activite[PX].p_factures + WHERE p_factures_lignes_c.no_facture = p_factures.no_facture AND + p_factures.no_sejour IN (SELECT no_sejour FROM w_sejours_bg_24) AND + p_factures_lignes_c.no_facture LIKE '%BG' AND + origine_facturation_id = 1; + + UPDATE activite[PX].p_factures SET + code_facture = '1', + date_facture = date_fin, + montant_facture_c = 0, + montant_facture_1_c = 0, + montant_comptabilise_1_c =0, + montant_comptabilise_budget_global_c = 0 + WHERE no_sejour IN (SELECT no_sejour FROM w_sejours_bg_24) AND + no_facture LIKE '%BG' AND + montant_comptabilise_budget_global_c = 0; + + + -- TRansfert de lignes non facturées vers budget global + UPDATE activite[PX].p_factures_lignes_non_facturees_c + SET no_facture = subview.no_facture_bg + FROM + ( + SELECT p_sejours.no_sejour, t_prestations.code, t_prestations.texte, p_factures_lignes_non_facturees_c.*, + p_factures_bg.code_facture,p_factures_bg.no_facture AS no_facture_bg + FROM activite[PX].p_factures_lignes_non_facturees_c + JOIN activite[PX].p_factures ON p_factures_lignes_non_facturees_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND type_sejour IN ('1','2','5') + JOIN activite[PX].t_lieux ON lieu_sortie_id = t_lieux.oid + JOIN activite[PX].t_services_facturation ON service_facturation_id = t_services_facturation.oid AND type_t2a = '1' + JOIN activite.t_prestations ON p_factures_lignes_non_facturees_c.prestation_id = t_prestations.oid + JOIN activite[PX].p_factures p_factures_bg ON p_factures_bg.no_sejour = p_factures.no_sejour AND p_factures_bg.no_facture LIKE '%BG' AND + p_factures_lignes_non_facturees_c.date_debut BETWEEN p_factures_bg.date_debut AND p_factures_bg.date_fin + WHERE p_factures_lignes_non_facturees_c.no_facture NOT LIKE '%BG' AND + t_prestations.code IN ('EMI','ETI','PII','PME','PH8','PHU') AND + p_factures_bg.code_facture = '0' + ) subview + WHERE p_factures_lignes_non_facturees_c.no_facture = subview.no_facture and + p_factures_lignes_non_facturees_c.prestation_id = subview.prestation_id + ; + + + + + + + ]]> + + + + + 0 AND + montant_facture_actes_inclus_dans_sejour = 0 AND + (montant_facture_1 + montant_facture_2 + montant_facture_0) = 0 AND + (taux_0 <> 0 OR taux_1 <> 0 OR taux_2 <> 0 OR taux_22 <> 0); + + UPDATE activite[PX].p_factures_lignes_h + SET + montant_facture_actes_inclus_dans_sejour = (prix_unitaire * nb_prestation * coefficient), + montant_facture_1_actes_inclus_dans_sejour = (prix_unitaire * nb_prestation * coefficient) + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 1 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND prix_unitaire <> 0 AND + montant_facture_actes_inclus_dans_sejour = 0 AND + (montant_facture_1 + montant_facture_2 + montant_facture_0) = 0 AND + taux_1 = 0 AND taux_2 = 0 AND taux_0 = 0; + + + UPDATE activite[PX].p_factures_lignes_h + SET + montant_facture_actes_inclus_dans_sejour = (prix_unitaire * nb_prestation * coefficient) * taux_1 / 100.00, + montant_facture_1_actes_inclus_dans_sejour = (prix_unitaire * nb_prestation * coefficient) * taux_1 / 100.00 + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 1 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND prix_unitaire <> 0 AND + montant_facture_actes_inclus_dans_sejour = 0 AND + (montant_facture_2 + montant_facture_0) <> 0 AND montant_facture_1 = 0; + + + --arrondis + UPDATE activite[PX].p_factures_lignes_h + SET montant_facture_1_actes_inclus_dans_sejour = montant_facture_actes_inclus_dans_sejour - (montant_facture_0_actes_inclus_dans_sejour+montant_facture_1_actes_inclus_dans_sejour+montant_facture_2_actes_inclus_dans_sejour+montant_facture_22_actes_inclus_dans_sejour) + WHERE montant_facture_1_actes_inclus_dans_sejour <> 0 AND montant_facture_actes_inclus_dans_sejour <> (montant_facture_0_actes_inclus_dans_sejour+montant_facture_1_actes_inclus_dans_sejour+montant_facture_2_actes_inclus_dans_sejour+montant_facture_22_actes_inclus_dans_sejour); + + + + -- actes externes + UPDATE activite[PX].p_factures_lignes_h + SET + montant_facture = prix_unitaire * nb_prestation * coefficient, + montant_facture_1 = (prix_unitaire * nb_prestation * coefficient) * taux_1 / 100.00, + montant_facture_2 = (prix_unitaire * nb_prestation * coefficient) * taux_2 / 100.00, + montant_facture_0 = (prix_unitaire * nb_prestation * coefficient) * taux_0 / 100.00 + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 2 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND prix_unitaire <> 0 AND + (montant_facture_1 + montant_facture_2 + montant_facture_0) = 0; + + UPDATE activite[PX].p_factures_lignes_h + SET + montant_facture = prix_unitaire * nb_prestation * coefficient, + montant_facture_1 = (prix_unitaire * nb_prestation * coefficient) * taux_1 / 100.00 + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 2 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND prix_unitaire <> 0 AND + taux_1 <> 0 AND (montant_facture_2 + montant_facture_0) <> 0 AND montant_facture_1 = 0; + + + -- Arrondis + UPDATE activite[PX].p_factures_lignes_h + SET montant_facture_1 = montant_facture - (montant_facture_0+montant_facture_1+montant_facture_2+montant_facture_22) + FROM activite[PX].p_factures + JOIN w_sejours_hospit_bg ON p_factures.no_sejour = w_sejours_hospit_bg.no_sejour_bg AND origine_facturation_id = 2 + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + montant_facture_1 <> 0 AND + montant_facture <> (montant_facture_0+montant_facture_1+montant_facture_2+montant_facture_22); + + + -- Ajout des honoraires budget global dans la partie CLINIQUE + INSERT INTO activite[PX].p_factures_lignes_c( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id, + protocole_id, + compte_produit_id) + SELECT + p_factures.no_facture, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + CASE WHEN p_factures_lignes_h.rubrique_facturation_id <> 0 THEN p_factures_lignes_h.rubrique_facturation_id ELSE COALESCE(t_rubriques_facturation.oid,0) END AS rubrique_facturation_id, + prestation_id, + CASE WHEN montant_comptabilise_0 <> 0 THEN montant_facture_0 ELSE 0 END + + CASE WHEN montant_comptabilise_1 <> 0 THEN montant_facture_1 ELSE 0 END + + CASE WHEN montant_comptabilise_2 <> 0 THEN montant_facture_2 ELSE 0 END + + CASE WHEN montant_comptabilise_22 <> 0 THEN montant_facture_22 ELSE 0 END AS montant_facture, + CASE WHEN montant_comptabilise_0 <> 0 THEN montant_facture_0 ELSE 0 END AS montant_facture_0, + CASE WHEN montant_comptabilise_1 <> 0 THEN montant_facture_1 ELSE 0 END AS montant_facture_1, + CASE WHEN montant_comptabilise_2 <> 0 THEN montant_facture_2 ELSE 0 END AS montant_facture_2, + CASE WHEN montant_comptabilise_22 <> 0 THEN montant_facture_22 ELSE 0 END AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + CASE WHEN montant_comptabilise_1 <> 0 THEN nb_prestation ELSE 0 END, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + CASE WHEN p_factures_lignes_h.rubrique_facturation_id <> 0 THEN p_factures_lignes_h.rubrique_facturation_id ELSE COALESCE(t_rubriques_facturation.oid,0) END AS rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + 2::bigint AS origine_facturation_id, + 0::numeric AS montant_comptabilise_budget_global_1, + p_factures.oid AS facture_id, + protocole_id, + 0::bigint AS compte_produit_id + FROM activite[PX].p_factures_lignes_h + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + LEFT JOIN activite[PX].t_rubriques_facturation ON t_prestations.code = t_rubriques_facturation.code + JOIN activite[PX].p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND est_budget_global = '1' + WHERE p_factures.code_facture = '1' AND + ((p_sejours.type_sejour = '3' AND p_factures_lignes_h.no_facture NOT LIKE '%BG') OR + montant_comptabilise <> 0 OR + montant_comptabilise_0 <> 0 OR + montant_comptabilise_1 <> 0 OR + montant_comptabilise_2 <> 0) ; + + + UPDATE activite[PX].p_factures_lignes_h + SET montant_comptabilise = 0, montant_comptabilise_0 = 0, montant_comptabilise_1 = 0, montant_comptabilise_2 = 0 + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND est_budget_global = '1' + WHERE p_factures_lignes_h.no_facture = p_factures.no_facture AND + (montant_comptabilise <> 0 OR montant_comptabilise_0 <> 0 OR montant_comptabilise_1 <> 0 OR montant_comptabilise_2 <> 0) ; + + + -- Ajout des actes inclus dans séjour dans la partie clinique (verrouillé) + DROP TABLE IF EXISTS w_actes_inclus; + CREATE TEMP TABLE w_actes_inclus AS + SELECT + p_factures.no_sejour, + p_factures.no_facture AS no_facture, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_facturation_id, + prestation_id, + 0::numeric AS montant_facture, + 0::numeric AS montant_facture_0, + 0::numeric AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + 0::numeric AS montant_comptabilise, + 0::numeric AS montant_comptabilise_0, + 0::numeric AS montant_comptabilise_1, + 0::numeric AS montant_comptabilise_2, + 0::numeric AS montant_comptabilise_22, + COALESCE(t_rubriques_facturation.oid,0) AS rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + 3::bigint AS origine_facturation_id, + 0::numeric AS montant_comptabilise_budget_global_1, + p_factures.oid AS facture_id, + protocole_id, + 0::bigint AS compte_produit_id + FROM activite[PX].p_factures_lignes_h + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + LEFT JOIN activite[PX].t_rubriques_facturation ON t_prestations.code = t_rubriques_facturation.code + JOIN activite[PX].p_factures ON p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND est_budget_global = '1' + WHERE 1<>1 AND + (montant_facture_actes_inclus_dans_sejour <> 0 OR + montant_facture_0_actes_inclus_dans_sejour <> 0 OR + montant_facture_1_actes_inclus_dans_sejour <> 0 OR + montant_facture_2_actes_inclus_dans_sejour <> 0) ; + + + UPDATE w_actes_inclus + SET no_facture = p_factures.no_facture, facture_id = p_factures.oid + FROM activite[PX].p_factures + WHERE w_actes_inclus.no_sejour = p_factures.no_sejour AND + p_factures.no_facture LIKE '%BG' ; + + + INSERT INTO activite[PX].p_factures_lignes_c + ( + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + montant_facture, + montant_facture_0, + montant_facture_1, + montant_facture_2, + montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id, + protocole_id, + compte_produit_id + ) + SELECT + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + coefficient_mco, + rubrique_facturation_id, + prestation_id, + 0::numeric AS montant_facture, + 0::numeric AS montant_facture_0, + 0::numeric AS montant_facture_1, + 0::numeric AS montant_facture_2, + 0::numeric AS montant_facture_22, + taux_0, + taux_1, + taux_2, + taux_22, + prix_unitaire, + lieu_id, + nb_prestation, + montant_comptabilise, + montant_comptabilise_0, + montant_comptabilise_1, + montant_comptabilise_2, + montant_comptabilise_22, + rubrique_comptabilisation_id, + montant_encours, + montant_encours_0, + montant_encours_1, + montant_encours_2, + montant_encours_22, + montant_facture_actes_inclus_dans_sejour, + montant_facture_0_actes_inclus_dans_sejour, + montant_facture_1_actes_inclus_dans_sejour, + montant_facture_2_actes_inclus_dans_sejour, + montant_facture_22_actes_inclus_dans_sejour, + origine_facturation_id, + montant_comptabilise_budget_global_1, + facture_id, + protocole_id, + compte_produit_id + FROM w_actes_inclus; + + -- Correction n° facture + UPDATE activite[PX].p_factures_lignes_c + SET no_facture = p_factures.no_facture, facture_id = p_factures.oid + FROM activite[PX].p_factures + WHERE p_factures_lignes_c.montant_facture_actes_inclus_dans_sejour <> 0 AND + split_part(p_factures_lignes_c.no_facture,'.',1) = p_factures.no_sejour AND + p_factures.no_facture LIKE '%BG' AND + p_factures_lignes_c.no_facture NOT LIKE '%BG' AND + p_factures_lignes_c.montant_facture = 0 AND + p_factures_lignes_c.montant_comptabilise = 0; + + UPDATE activite[PX].p_factures_lignes_h + SET no_facture = p_factures.no_facture, facture_id = p_factures.oid + FROM activite[PX].p_factures + WHERE p_factures_lignes_h.montant_facture_actes_inclus_dans_sejour <> 0 AND + split_part(p_factures_lignes_h.no_facture,'.',1) = p_factures.no_sejour AND + p_factures.no_facture LIKE '%BG' AND + p_factures_lignes_h.no_facture NOT LIKE '%BG' AND + p_factures_lignes_h.montant_facture = 0 AND + p_factures_lignes_h.montant_comptabilise = 0; + + + -- Cumuls factures + DROP TABLE IF EXISTS w_factures_corrigees; + CREATE TEMP TABLE w_factures_corrigees AS + SELECT + p_factures_lignes_c.no_facture, + + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture ELSE 0 END),0) AS ligne_facture_c, + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_0 ELSE 0 END),0) AS ligne_facture_0_c, + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_1 ELSE 0 END),0) AS ligne_facture_1_c, + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_2 ELSE 0 END),0) AS ligne_facture_2_c, + COALESCE(SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_22 ELSE 0 END),0) AS ligne_facture_22_c, + COALESCE(SUM(montant_comptabilise),0) AS ligne_comptabilise_c, + COALESCE(SUM(montant_comptabilise_0),0) AS ligne_comptabilise_0_c, + COALESCE(SUM(montant_comptabilise_1),0) AS ligne_comptabilise_1_c, + COALESCE(SUM(montant_comptabilise_2),0) AS ligne_comptabilise_2_c, + COALESCE(SUM(montant_comptabilise_22),0) AS ligne_comptabilise_22_c, + + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture ELSE 0 END),0) AS ligne_facture_h, + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_0 ELSE 0 END),0) AS ligne_facture_0_h, + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_1 ELSE 0 END),0) AS ligne_facture_1_h, + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_2 ELSE 0 END),0) AS ligne_facture_2_h, + COALESCE(SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_22 ELSE 0 END),0) AS ligne_facture_22_h, + 0::numeric AS ligne_comptabilise_h, + 0::numeric AS ligne_comptabilise_0_h, + 0::numeric AS ligne_comptabilise_1_h, + 0::numeric AS ligne_comptabilise_2_h, + 0::numeric AS ligne_comptabilise_22_h + FROM activite[PX].p_factures + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour AND est_budget_global = '1' + LEFT JOIN activite[PX].p_factures_lignes_c ON p_factures_lignes_c.no_facture = p_factures.no_facture + GROUP BY 1 + HAVING SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_c) OR + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_0 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_0_c) OR + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_1 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_1_c) OR + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_2 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_2_c) OR + SUM(CASE WHEN origine_facturation_id = 1 THEN montant_facture_22 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_22_c) OR + SUM(montant_comptabilise) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_c) OR + SUM(montant_comptabilise_0) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_0_c) OR + SUM(montant_comptabilise_1) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_1_c) OR + SUM(montant_comptabilise_2) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_2_c) OR + SUM(montant_comptabilise_22) IS DISTINCT FROM MAX(p_factures.montant_comptabilise_22_c) OR + + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_h) OR + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_0 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_0_h) OR + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_1 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_1_h) OR + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_2 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_2_h) OR + SUM(CASE WHEN origine_facturation_id = 2 THEN montant_facture_22 ELSE 0 END) IS DISTINCT FROM MAX(p_factures.montant_facture_22_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_0_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_1_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_2_h) OR + 0::numeric IS DISTINCT FROM MAX(p_factures.montant_comptabilise_22_h) ; + + UPDATE activite[PX].p_factures + SET + montant_facture_c = w_factures_corrigees.ligne_facture_c, + montant_facture_0_c = w_factures_corrigees.ligne_facture_0_c, + montant_facture_1_c = w_factures_corrigees.ligne_facture_1_c, + montant_facture_2_c = w_factures_corrigees.ligne_facture_2_c, + montant_facture_22_c = w_factures_corrigees.ligne_facture_22_c, + montant_comptabilise_c = w_factures_corrigees.ligne_comptabilise_c, + montant_comptabilise_0_c = w_factures_corrigees.ligne_comptabilise_0_c, + montant_comptabilise_1_c = w_factures_corrigees.ligne_comptabilise_1_c, + montant_comptabilise_2_c = w_factures_corrigees.ligne_comptabilise_2_c, + montant_comptabilise_22_c = w_factures_corrigees.ligne_comptabilise_22_c, + montant_facture_h = w_factures_corrigees.ligne_facture_h, + montant_facture_0_h = w_factures_corrigees.ligne_facture_0_h, + montant_facture_1_h = w_factures_corrigees.ligne_facture_1_h, + montant_facture_2_h = w_factures_corrigees.ligne_facture_2_h, + montant_facture_22_h = w_factures_corrigees.ligne_facture_22_h, + montant_comptabilise_h = w_factures_corrigees.ligne_comptabilise_h, + montant_comptabilise_0_h = w_factures_corrigees.ligne_comptabilise_0_h, + montant_comptabilise_1_h = w_factures_corrigees.ligne_comptabilise_1_h, + montant_comptabilise_2_h = w_factures_corrigees.ligne_comptabilise_2_h, + montant_comptabilise_22_h = w_factures_corrigees.ligne_comptabilise_22_h + FROM w_factures_corrigees + WHERE w_factures_corrigees.no_facture = p_factures.no_facture; + + + -- Report des actes non facturés honoraires budget global pour encours + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture AS no_facture, + p_factures_lignes_h.date_debut, + p_factures_lignes_h.date_fin, + p_factures_lignes_h.nb_rubrique, + p_factures_lignes_h.coefficient, + p_factures_lignes_h.rubrique_facturation_id, + p_factures_lignes_h.prestation_id, + p_factures_lignes_h.prix_unitaire, + p_factures_lignes_h.lieu_id + FROM activite[PX].p_factures_lignes_h + JOIN activite[PX].p_factures on p_factures_lignes_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_factures.code_facture = '0' AND + p_sejours.est_budget_global = '1' AND + p_sejours.type_sejour = '3' AND + p_factures.no_sejour NOT IN (SELECT no_sejour FROM activite[PX].p_factures WHERE code_facture = '1') AND + p_factures_lignes_h.no_facture NOT IN (SELECT no_facture FROM activite[PX].p_factures_lignes_non_facturees_c) + ; + + -- Report des actes non facturés honoraires budget global pour encours + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + facture_id, + no_facture, + date_debut, + date_fin, + nb_rubrique, + coefficient, + rubrique_facturation_id, + prestation_id, + prix_unitaire, + lieu_id) + SELECT + p_factures.oid AS facture_id, + p_factures.no_facture AS no_facture, + p_factures_lignes_non_facturees_h.date_debut, + p_factures_lignes_non_facturees_h.date_fin, + p_factures_lignes_non_facturees_h.nb_rubrique, + p_factures_lignes_non_facturees_h.coefficient, + p_factures_lignes_non_facturees_h.rubrique_facturation_id, + p_factures_lignes_non_facturees_h.prestation_id, + p_factures_lignes_non_facturees_h.prix_unitaire, + p_factures_lignes_non_facturees_h.lieu_id + FROM activite[PX].p_factures_lignes_non_facturees_h + JOIN activite[PX].p_factures on p_factures_lignes_non_facturees_h.no_facture = p_factures.no_facture + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_factures.code_facture = '0' AND + p_sejours.est_budget_global = '1' AND + p_sejours.type_sejour = '3' AND + p_factures.no_sejour NOT IN (SELECT no_sejour FROM activite[PX].p_factures WHERE code_facture = '1') --AND + ; + + TRUNCATE activite[PX].p_factures_lignes_non_facturees_h + ; + + ]]> + + + + + '1' AND + p_sejours.type_sejour = '3' AND + date_entree between now() - interval '1 year' AND now() AND + code_sorti = '1' AND + no_sejour NOT IN (SELECT no_sejour FROM activite[PX].p_factures WHERE no_facture like '%BG') AND + no_sejour NOT IN + ( + SELECT no_sejour + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture + WHERE p_factures_lignes_c.no_facture NOT LIKE '%BG' AND montant_comptabilise_1 <> 0 + ) + ; + + -- Sur Externes, Récupérer actes facturés partiellement + INSERT INTO activite[PX].p_factures_lignes_non_facturees_c( + facture_id, + no_facture, + date_debut, + rubrique_facturation_id, + prestation_id, + date_fin, + nb_rubrique, + coefficient, + lieu_id, + prix_unitaire + ) + SELECT + p_factures_bg.oid AS facture_id, + p_factures_bg.no_facture AS no_facture, + p_factures_lignes_c.date_debut, + p_factures_lignes_c.rubrique_facturation_id, + p_factures_lignes_c.prestation_id, + MAX(p_factures_lignes_c.date_fin), + 1, + 1, + MAX(p_factures_lignes_c.lieu_id), + (MAX(prix_unitaire) * MAX(coefficient) * SUM(nb_rubrique)) - SUM(montant_facture) AS prix_unitaire + FROM activite[PX].p_factures_lignes_c + JOIN activite[PX].p_factures on p_factures_lignes_c.no_facture = p_factures.no_facture + JOIN activite[PX].p_factures p_factures_bg ON p_factures_bg.no_sejour = p_factures.no_sejour and p_factures_bg.no_facture LIKE '%BG' + JOIN activite[PX].p_sejours ON p_factures.no_sejour = p_sejours.no_sejour + WHERE p_sejours.type_sejour = '3' AND + p_factures_bg.code_facture = '0' AND + p_factures_lignes_c.no_facture nOT LIKE '%BG' AND + montant_encours = 0 AND p_factures_bg.montant_encours_c = 0 + GROUP BY 1,2,3,4,5 + HAVING + SUM(nb_rubrique) > 0 AND + ((MAX(prix_unitaire) * MAX(coefficient) * SUM(nb_rubrique)) - SUM(montant_facture)) > 1 + ; + + + + + ]]> + + + + + + + + + + 'VE' AND CPT_CODE LIKE '468%' THEN 'ATT' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '471%' THEN 'ATT' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '411%' AND ECR_REF_TYPE = 'FACTURE' THEN 'RCLI' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '412%' AND ECR_REF_TYPE = 'FACTURE' THEN 'RCLI' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '411%' AND ECR_DETAILS LIKE '%NOEMIE%' THEN 'RNOE' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '412%' AND ECR_DETAILS LIKE '%NOEMIE%' THEN 'RNOE' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '419%' THEN 'ACPT' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '51%' THEN 'BANQ' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '531%' THEN 'BANQ' + WHEN LNK_JOURNAL <> 'VE' AND CPT_CODE LIKE '466%' THEN 'PHON' + WHEN ECR_TYPE = 'IMPAYE' THEN 'PEPR' + WHEN LNK_JOURNAL <> 'VE' AND ECR_TYPE = 'VENTE-DIRECTE' THEN 'RDIR' + WHEN ECR_TYPE LIKE '%PIVOT%' THEN 'PIVO' + WHEN ECR_TYPE LIKE 'REVERS' THEN 'REVP' + WHEN ECR_TYPE LIKE 'OD' THEN 'OD' + ELSE '?'||ECR_TYPE END AS type_ecriture, + ECR_OPERATION::text AS piece, + CASE ECR_IS_ETS WHEN 1 THEN 'C' ELSE 'H' END AS clinique_honoraire, + COALESCE(t_compte.oid,0) AS compte_id, + COALESCE(t_journal.oid,0) AS journal_id, + COALESCE(p_sejours.oid,0::bigint) AS sejour_id, + COALESCE(p_sejours.no_sejour,''::text) AS no_sejour, + COALESCE(p_factures.oid,0::bigint) AS facture_id, + COALESCE(FACT_NUMERO::text,'')::text AS no_facture, + COALESCE(t_medecins_administratifs.oid,0) AS medecin_id, + COALESCE(t_tiers_payant.oid,t_tiers_payant0.oid,0) AS tiers_payant_id, + ECR_DETAILS AS texte, + ECR_CREDIT AS montant_credit, + ECR_DEBIT AS montant_debit, + ECR_OPERATION, + CASE + WHEN LNK_SOURCE = 'FACTURE' THEN 'VENTE' + WHEN LNK_SOURCE = 'IMPAYE' THEN 'VENTE' + WHEN LNK_SOURCE = 'RGLMT' THEN 'RGLMT' + WHEN LNK_SOURCE = 'ENC' THEN 'RGLMT' + WHEN LNK_SOURCE = 'DEPOT' THEN 'ODBANQ' + ELSE LNK_SOURCE END AS type_piece, + LNK_SOURCE, + LNK_SOURCE_OID, + ECR_LOCKED, + ''::text AS mode_reglement_code, + ECR_TVA_TAUX*100 AS taux_tva + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t2.CPT_COMPTES ON CPT_OID = ECR_COMPTE + LEFT JOIN prod_web100t2.DAT_DA ON ECR_REF_DA = DA_OID AND ECR_REF_DA > 0 + LEFT JOIN prod_web100t2.FAC_FACTURE ON ECR_REF_FACT = FACT_OID AND ECR_REF_FACT > 0 + JOIN activite[PX].t_journal ON LNK_JOURNAL = t_journal.code_original + LEFT JOIN activite[PX].t_compte ON CPT_CODE = t_compte.code + LEFT JOIN activite[PX].p_sejours ON ECR_REF_DA = p_sejours.code_original AND ECR_REF_DA > 0 + LEFT JOIN activite[PX].p_factures ON FACT_NUMERO = p_factures.no_facture AND ECR_REF_FACT > 0 + LEFT JOIN activite[PX].t_tiers_payant ON CPT_REF = t_tiers_payant.code_original AND CPT_REF >0 AND CPT_REF_TYPE IN ('AMO','AMC') + LEFT JOIN activite[PX].t_tiers_payant t_tiers_payant0 ON CPT_REF_TYPE IN ('DA') AND t_tiers_payant0.code = 'PATIENTS' + LEFT JOIN activite[PX].t_medecins_administratifs ON CPT_REF = t_medecins_administratifs.code_original AND CPT_REF > 0 AND CPT_REF_TYPE IN ('PRATICIEN') + WHERE + ECR_TYPE <> 'ERREUR' AND + ECR_TYPE <> 'ENCOURS' AND + LNK_ERROR = '' AND + ECR_DATE >= '[ENV_ADM_ANNEEDEBUT]0101' + ; + + ANALYSE w_ecriture_comptable + ; + + CREATE INDEX w_ecriture_comptable_ik_ECR_OID + ON w_ecriture_comptable + USING btree + (ECR_OID); + + CREATE INDEX w_ecriture_comptable_ik_ECR_OPERATION + ON w_ecriture_comptable + USING btree + (ECR_OPERATION); + + + CREATE INDEX w_ecriture_comptable_ik_LNK_SOURCE_OID + ON w_ecriture_comptable + USING btree + (LNK_SOURCE_OID); + + CREATE INDEX w_ecriture_comptable_ik_PIECE + ON w_ecriture_comptable + USING btree + (PIECE); + + CREATE INDEX w_ecriture_comptable_ik_compte_id + ON w_ecriture_comptable + USING btree + (compte_id); + + UPDATE w_ecriture_comptable SET + no_facture = w_ecriture_comptable.no_facture || '-IM'||ECR_OPERATION::text, + facture_id = p_factures.oid + FROM activite[PX].p_factures + WHERE p_factures.no_facture = w_ecriture_comptable.no_facture || '-IM'||ECR_OPERATION::text AND + LNK_SOURCE = 'IMPAYE' + ; + + DROP TABLE IF EXISTS w_mode_reg; + CREATE TEMP TABLE w_mode_reg AS + SELECT ECR_OID, + LNK_SOURCE, + MAX( + CASE FR_MODE + WHEN 1 THEN 'CHQ' + WHEN 2 THEN 'CB' + WHEN 3 THEN 'ESP' + WHEN 4 THEN 'VIR' + ELSE 'A' END) AS mode_reglement_code + FROM prod_web100t2.CPT_ECRITURE + JOIN prod_web100t2.CPT_OP_LINK ON LNK_OPERATION = ECR_OPERATION + JOIN prod_web100t2.CPT_COMPTES ON ecr_compte = cpt_oid + JOIN prod_web100t2.FAC_REGLEMENTS ON LNK_SOURCE_OID = FR_OID + WHERE LNK_SOURCE IN ('RGLMT','ENC') AND + ECR_TYPE IN ('VALEUR_ENC','PIVOT','CAISSE') + GROUP BY 1,2 + ; + + CREATE INDEX w_mode_reg_i1 + ON w_mode_reg + USING btree + (ECR_OID); + + UPDATE w_ecriture_comptable + SET mode_reglement_code = w_mode_reg.mode_reglement_code + FROM + w_mode_reg + WHERE w_ecriture_comptable.ECR_OID = w_mode_reg.ECR_OID + AND w_mode_reg.LNK_SOURCE = 'RGLMT' + ; + + UPDATE w_ecriture_comptable + SET mode_reglement_code = w_mode_reg.mode_reglement_code + FROM + w_mode_reg + WHERE w_ecriture_comptable.ECR_OID = w_mode_reg.ECR_OID + AND w_mode_reg.LNK_SOURCE = 'ENC' + ; + + DROP TABLE IF EXISTS w_ecr_par_piece; + CREATE TEMP TABLE w_ecr_par_piece AS + SELECT piece, MAX(mode_reglement_code) AS mode_reglement_code + FROM w_ecriture_comptable + WHERE mode_reglement_code <> '' + GROUP BY 1 + HAVING count(DISTINCT mode_reglement_code) = 1 + ; + + CREATE INDEX w_ecr_par_piece_i1 + ON w_ecr_par_piece + USING btree + (PIECE); + + UPDATE w_ecriture_comptable + SET mode_reglement_code = w_ecr_par_piece.mode_reglement_code + FROM + w_ecr_par_piece + , activite[PX].t_compte + WHERE w_ecriture_comptable.compte_id = t_compte.oid AND + (t_compte.code LIKE '4%' OR t_compte.code LIKE '5%') AND + t_compte.code NOT LIKE '41%' AND + t_compte.code NOT LIKE '445%' AND + w_ecriture_comptable.piece = w_ecr_par_piece.piece AND + w_ecriture_comptable.mode_reglement_code = '' + ; + + + TRUNCATE activite[PX].p_ecriture_comptable; + INSERT INTO activite[PX].p_ecriture_comptable( + code_original, + date_comptable, + type_ecriture, + type_piece, + piece, + clinique_honoraire, + compte_id, + journal_id, + sejour_id, + no_sejour, + facture_id, + no_facture, + medecin_id, + tiers_payant_id, + texte, + montant_credit, + montant_debit, + est_comptabilise, + mode_reglement_code, + taux_tva) + SELECT + code_original, + date_comptable, + type_ecriture, + type_piece, + piece, + clinique_honoraire, + compte_id, + journal_id, + sejour_id, + no_sejour, + facture_id, + no_facture, + medecin_id, + tiers_payant_id, + texte, + montant_credit, + montant_debit, + CASE WHEN ECR_LOCKED = 1 THEN '1' ELSE 0 END AS est_comptabilise, + mode_reglement_code, + taux_tva + FROM w_ecriture_comptable + ; + + + + ANALYSE activite[PX].p_ecriture_comptable + ; + + UPDATE activite[PX].p_ecriture_comptable + SET code_erreur = 'EQP' + FROM + ( + SELECT provider_id, clinique_honoraire, piece + FROM activite[PX].p_ecriture_comptable + GROUP BY 1,2,3 + HAVING SUM(montant_debit-montant_credit) <> 0 + ) subview + WHERE p_ecriture_comptable.provider_id = subview.provider_id AND + p_ecriture_comptable.piece = subview.piece AND + p_ecriture_comptable.clinique_honoraire = subview.clinique_honoraire + ; + + + + UPDATE activite[PX].p_ecriture_comptable + SET code_erreur = 'FAC' + FROM + ( + SELECT p_ecriture_comptable.provider_id AS provider_id, + p_ecriture_comptable.piece AS piece, + p_ecriture_comptable.clinique_honoraire AS clinique_honoraire + FROM activite[PX].p_ecriture_comptable + JOIN + ( + SELECT p_ecriture_comptable.provider_id, + p_ecriture_comptable.no_facture, + CASE WHEN round(SUM(CASE WHEN type_ecriture IN ('VPRD','VTVA') THEN montant_credit-montant_debit ELSE 0 END),2) IS DISTINCT FROM round(MAX(montant_comptabilise_c),2) THEN '1' ELSE '0' END AS erreur_vente_c, + CASE WHEN round(SUM(CASE WHEN type_ecriture IN ('VHON','VHOI') THEN montant_credit-montant_debit ELSE 0 END),2) IS DISTINCT FROM round(MAX(montant_comptabilise_h),2) THEN '1' ELSE '0' END AS erreur_vente_h + FROM activite[PX].p_ecriture_comptable + LEFT JOIN activite[PX].p_factures ON p_factures.no_facture = p_ecriture_comptable.no_facture + WHERE type_ecriture IN ('VPRD','VTVA','VHON','VHOI') + GROUP BY 1,2 + ) subview ON + p_ecriture_comptable.provider_id = subview.provider_id AND + p_ecriture_comptable.no_facture = subview.no_facture + WHERE p_ecriture_comptable.type_ecriture IN ('VPRD','VTVA','VHON','VHOI','VCLI') AND + ( + p_ecriture_comptable.clinique_honoraire = 'C' AND erreur_vente_c = '1' OR + p_ecriture_comptable.clinique_honoraire = 'H' AND erreur_vente_h = '1' + ) + GROUP BY 1,2,3 + ) subview + WHERE p_ecriture_comptable.provider_id = subview.provider_id AND + p_ecriture_comptable.piece = subview.piece AND + p_ecriture_comptable.clinique_honoraire = subview.clinique_honoraire + ; + + ]]> + + + + 'VE' AND ECR_IS_ETS = 1 THEN ECR_CREDIT - ECR_DEBIT ELSE 0 END) AS montant_reglements_c, + 0::numeric AS montant_solde_client_c, + SUM(CASE + WHEN LNK_JOURNAL = 'VE' AND ECR_IS_ETS = 0 THEN ECR_DEBIT - ECR_CREDIT + ELSE 0 END + ) AS montant_ventes_h, + SUM(CASE + WHEN LNK_JOURNAL <> 'VE' AND LNK_JOURNAL <> 'HONO' AND ECR_IS_ETS = 0 THEN ECR_CREDIT - ECR_DEBIT + WHEN LNK_JOURNAL = 'HONO' AND ECR_IS_ETS = 0 THEN ECR_CREDIT - ECR_DEBIT + ELSE 0 END + ) AS montant_reglements_h, + 0::numeric AS montant_solde_client_h + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t2.CPT_COMPTES ON ECR_COMPTE = CPT_OID AND CPT_CODE LIKE '41%' + JOIN prod_web100t2.FAC_FACTURE ON FACT_OID = ECR_REF_OID + JOIN activite[PX].p_sejours ON code_original = FACT_DA + WHERE LNK_ERROR = '' AND + date(ECR_DATE) >= '[ENV_ADM_ANNEEDEBUT]0101' AND + ECR_TYPE IN ('CLIENT','VENTE-DIRECTE','VENTE-DEP') AND ECR_REF_TYPE = 'FACTURE' + GROUP BY 1; + + + + TRUNCATE activite[PX].p_factures_comptables; + + INSERT INTO activite[PX].p_factures_comptables( + no_facture, + date_comptable, + montant_ventes_c, + montant_reglements_c, + montant_ventes_h, + montant_reglements_h + ) + SELECT + COALESCE(FACT_NUMERO, 'ID_' || LNK_SOURCE_OID), + date(ECR_DATE) AS date_comptable, + SUM(CASE WHEN LNK_JOURNAL = 'VE' AND ECR_IS_ETS = 1 THEN ECR_DEBIT - ECR_CREDIT ELSE 0 END) AS montant_ventes_c, + SUM(CASE WHEN LNK_JOURNAL <> 'VE' AND ECR_IS_ETS = 1 THEN ECR_CREDIT - ECR_DEBIT ELSE 0 END) AS montant_reglements_c, + SUM(CASE + WHEN LNK_JOURNAL = 'VE' AND ECR_IS_ETS = 0 THEN ECR_DEBIT - ECR_CREDIT + ELSE 0 END + ) AS montant_ventes_h, + SUM(CASE + WHEN LNK_JOURNAL <> 'VE' AND LNK_JOURNAL <> 'HONO' AND ECR_IS_ETS = 0 THEN ECR_CREDIT - ECR_DEBIT + WHEN LNK_JOURNAL = 'HONO' AND ECR_IS_ETS = 0 THEN ECR_CREDIT - ECR_DEBIT + ELSE 0 END + ) AS montant_reglements_h + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t2.CPT_COMPTES ON ECR_COMPTE = CPT_OID AND CPT_CODE LIKE '41%' + JOIN prod_web100t2.FAC_FACTURE ON FACT_OID = ECR_REF_OID + JOIN activite[PX].p_sejours ON code_original = FACT_DA + WHERE LNK_ERROR = '' AND + date(ECR_DATE) >= '[ENV_ADM_ANNEEDEBUT]0101' AND + ECR_TYPE IN ('CLIENT','VENTE-DIRECTE','VENTE-DEP') AND ECR_REF_TYPE = 'FACTURE' + GROUP BY 1,2; + + + -- Attention, les ventes directes ne sont peut être pas encore générées + + -- Date dernière génération ventes directes + -- Attention : Il faut que la dernière génération ne soit pas antérieure à 1 mois + DROP TABLE IF EXISTS w_last_direct; + CREATE TEMP TABLE w_last_direct AS + SELECT + date(max(ECR_DATE)) AS LAST_ECR_DATE + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t2.CPT_COMPTES ON ECR_COMPTE = CPT_OID AND CPT_CODE LIKE '41%' + JOIN prod_web100t2.FAC_FACTURE ON FACT_OID = ECR_REF_OID + JOIN activite[PX].p_sejours ON code_original = FACT_DA + WHERE LNK_ERROR = '' AND + ECR_TYPE IN ('VENTE-DIRECTE') AND ECR_REF_TYPE = 'FACTURE' and ECR_IS_ETS = 0 + HAVING date(max(ECR_DATE)) >= date(now() - interval '1 month'); + + -- Factures comptabilisées après cette date + DROP TABLE IF EXISTS w_factures_direct; + CREATE TEMP TABLE w_factures_direct AS + SELECT + FACT_OID, + date(MAX(ECR_DATE)) AS ECR_DATE + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t2.CPT_COMPTES ON ECR_COMPTE = CPT_OID AND CPT_CODE LIKE '41%' + JOIN prod_web100t2.FAC_FACTURE ON FACT_OID = ECR_REF_OID + JOIN w_last_direct ON ECR_DATE > LAST_ECR_DATE + JOIN activite[PX].p_sejours ON code_original = FACT_DA + WHERE LNK_ERROR = '' AND + ECR_TYPE IN ('CLIENT','VENTE-DEP') AND ECR_REF_TYPE = 'FACTURE' AND + LNK_JOURNAL = 'VE' AND + ECR_IS_ETS = 0 + GROUP BY 1; + + + -- Mise à jour chiffrier + DROP TABLE IF EXISTS w_factures_comptables; + CREATE TEMP TABLE w_factures_comptables AS + SELECT FACT_NUMERO AS no_facture, + date(ECR_DATE) AS date_comptable, + SUM(0-FLT_TOTAL_TTC) AS montant_ventes_h + FROM prod_web100t2.fac_fact_ligne_tier + JOIN prod_web100t2.fac_facture on fac_facture.FACT_OID = FLT_FACTURE + JOIN w_factures_direct ON w_factures_direct.FACT_OID = FLT_FACTURE + WHERE FLT_IS_ETS = 0 AND FLT_IS_DIRECT = 1 + GROUP BY 1,2 + ORDER BY 1,2; + + + UPDATE activite[PX].p_factures_comptables + SET montant_ventes_h = p_factures_comptables.montant_ventes_h + w_factures_comptables.montant_ventes_h + FROM w_factures_comptables + WHERE p_factures_comptables.no_facture = w_factures_comptables.no_facture AND + p_factures_comptables.date_comptable = w_factures_comptables.date_comptable; + + + DROP TABLE IF EXISTS w_chiffrier_comptable; + CREATE TEMP TABLE w_chiffrier_comptable AS + SELECT date(ECR_DATE) AS date_comptable, + SUM(0-FLT_TOTAL_TTC) AS montant_ventes_h + FROM prod_web100t2.fac_fact_ligne_tier + JOIN prod_web100t2.fac_facture on fac_facture.FACT_OID = FLT_FACTURE + JOIN w_factures_direct ON w_factures_direct.FACT_OID = FLT_FACTURE + WHERE FLT_IS_ETS = 0 AND FLT_IS_DIRECT = 1 + GROUP BY 1 + ORDER BY 1; + + + UPDATE activite[PX].p_chiffrier_comptable + SET montant_ventes_h = p_chiffrier_comptable.montant_ventes_h + w_chiffrier_comptable.montant_ventes_h + FROM w_chiffrier_comptable + WHERE p_chiffrier_comptable.date_comptable = w_chiffrier_comptable.date_comptable; + + ]]> + + + + + + + + = '[ENV_ADM_ANNEEDEBUT]0101' + ; + + ANALYSE w_CPT_OP_LINK_source + ; + + CREATE INDEX w_CPT_OP_LINK_source_ik_lnk_operation + ON w_CPT_OP_LINK_source + USING btree + (lnk_operation); + + CREATE INDEX w_CPT_OP_LINK_source_ik_lnk_master_op + ON w_CPT_OP_LINK_source + USING btree + (lnk_master_op); + + DROP TABLE IF EXISTS w_CPT_ECRITURE_source; + CREATE TEMP TABLE w_CPT_ECRITURE_source AS + SELECT * + FROM prod_web100t2.CPT_ECRITURE + WHERE ECR_EF = ANY(SELECT ETS_EF_OID FROM w_NMCL_ETABLISSEMENT) + AND ECR_DATE >= '[ENV_ADM_ANNEEDEBUT]0101' + ; + + ANALYSE w_CPT_ECRITURE_source + ; + + CREATE INDEX w_CPT_ECRITURE_source_ik_ecr_operation + ON w_CPT_ECRITURE_source + USING btree + (ecr_operation); + + DROP TABLE IF EXISTS w_CPT_ECRITURE_source_OP_LINK; + CREATE TEMP TABLE w_CPT_ECRITURE_source_OP_LINK AS + SELECT *, + 0::bigint AS ECR_REF_FACT + FROM w_CPT_ECRITURE_source + JOIN w_CPT_OP_LINK_source ON ECR_OPERATION = LNK_OPERATION + ; + + ANALYSE w_CPT_ECRITURE_source_OP_LINK + ; + + CREATE INDEX w_CPT_ECRITURE_source_OP_LINK_ik_ecr_operation + ON w_CPT_ECRITURE_source_OP_LINK + USING btree + (ecr_operation) + ; + + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_REF_OID = LNK_SOURCE_OID + WHERE ECR_OPERATION = LNK_OPERATION AND + LNK_TYPE IN ('FACT') AND + ECR_REF_TYPE = 'FACTURE' AND + ECR_REF_OID <> LNK_SOURCE_OID + ; + + DROP TABLE IF EXISTS w_CPT_ECRITURE_work; + CREATE TEMP TABLE w_CPT_ECRITURE_work AS + SELECT ECR_OPERATION, MAX(ECR_REF_DA) AS ECR_REF_DA + FROM w_CPT_ECRITURE_source_OP_LINK + WHERE ECR_REF_DA > 0 + GROUP BY 1 + HAVING count(DISTINCT ECR_REF_DA) = 1 + ; + + ANALYSE w_CPT_ECRITURE_work + ; + + CREATE INDEX w_CPT_ECRITURE_work_ik_ecr_operation + ON w_CPT_ECRITURE_work + USING btree + (ECR_OPERATION) + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_REF_DA = w_CPT_ECRITURE_work.ECR_REF_DA + FROM w_CPT_ECRITURE_work + WHERE w_CPT_ECRITURE_source_OP_LINK.ECR_OPERATION = w_CPT_ECRITURE_work.ECR_OPERATION AND + w_CPT_ECRITURE_source_OP_LINK.ECR_REF_DA = 0 + ; + + + + DROP TABLE IF EXISTS w_CPT_ECRITURE_work; + CREATE TEMP TABLE w_CPT_ECRITURE_work AS + SELECT ECR_MASTER, MAX(ECR_REF_DA) AS ECR_REF_DA + FROM w_CPT_ECRITURE_source_OP_LINK + WHERE ECR_REF_DA > 0 + GROUP BY 1 + HAVING count(DISTINCT ECR_REF_DA) = 1 + ; + + ANALYSE w_CPT_ECRITURE_work + ; + + CREATE INDEX w_CPT_ECRITURE_work_ik_ecr_master + ON w_CPT_ECRITURE_work + USING btree + (ECR_MASTER) + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_REF_DA = w_CPT_ECRITURE_work.ECR_REF_DA + FROM w_CPT_ECRITURE_work + WHERE w_CPT_ECRITURE_source_OP_LINK.ECR_MASTER = w_CPT_ECRITURE_work.ECR_MASTER AND + w_CPT_ECRITURE_source_OP_LINK.ECR_REF_DA = 0 + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_REF_FACT = LNK_SOURCE_OID + WHERE LNK_SOURCE = 'FACTURE' AND + ECR_REF_OID <> LNK_SOURCE_OID + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_REF_FACT = ECR_REF_OID + WHERE ECR_REF_TYPE = 'FACTURE' AND + ECR_REF_FACT = 0 + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_REF_FACT = FACT_OID + FROM prod_web100t2.FAC_FACTURE + WHERE ECR_DETAILS LIKE 'Facture n?%' AND + substr(ECR_DETAILS,11,9) = lpad(FACT_NUMERO,9,'0') AND + ECR_REF_FACT = 0 + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_REF_FACT = FACT_OID + FROM prod_web100t2.FAC_FACTURE + WHERE ECR_REF_KEY LIKE 'F%' AND + substr(ECR_REF_KEY,2) = FACT_OID::text AND + ECR_REF_DA = FACT_DA AND + ECR_REF_FACT = 0 + ; + + + DROP TABLE IF EXISTS w_CPT_ECRITURE_work; + CREATE TEMP TABLE w_CPT_ECRITURE_work AS + SELECT ECR_OPERATION, ECR_REF_DA, MAX(ECR_REF_FACT) AS ECR_REF_FACT + FROM w_CPT_ECRITURE_source_OP_LINK + WHERE ECR_REF_FACT > 0 + GROUP BY 1,2 + HAVING count(DISTINCT ECR_REF_FACT) = 1 + ; + + ANALYSE w_CPT_ECRITURE_work + ; + + CREATE INDEX w_CPT_ECRITURE_work_ik_ecr_operation + ON w_CPT_ECRITURE_work + USING btree + (ECR_OPERATION) + ; + + ANALYSE w_CPT_ECRITURE_source_OP_LINK + ; + + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_REF_FACT = w_CPT_ECRITURE_work.ECR_REF_FACT + FROM w_CPT_ECRITURE_work + WHERE w_CPT_ECRITURE_source_OP_LINK.ECR_OPERATION = w_CPT_ECRITURE_work.ECR_OPERATION AND + w_CPT_ECRITURE_source_OP_LINK.ECR_REF_DA = w_CPT_ECRITURE_work.ECR_REF_DA AND + w_CPT_ECRITURE_source_OP_LINK.ECR_REF_FACT = 0 + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_TYPE = 'VENTE-DEP' + WHERE ECR_TYPE = 'VENTE_DEP' + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_TYPE = 'VENTE-HON' + WHERE ECR_TYPE = 'VENTE_HON' + ; + + UPDATE w_CPT_ECRITURE_source_OP_LINK + SET ECR_TYPE = 'VENTE-DIRECTE' + WHERE ECR_TYPE = 'VENTE_DIRECTE' + ; + + ANALYSE w_CPT_ECRITURE_source_OP_LINK + ; + + CREATE INDEX w_cpt_ecriture_op_link_ik_ecr_compte + ON w_CPT_ECRITURE_source_OP_LINK + USING btree + (ecr_compte); + + + CREATE INDEX w_cpt_ecriture_op_link_ik_ecr_ref_oid + ON w_CPT_ECRITURE_source_OP_LINK + USING btree + (ecr_ref_oid); + + CREATE INDEX w_cpt_ecriture_op_link_ik_ecr_data + ON w_CPT_ECRITURE_source_OP_LINK + USING btree + (ecr_data); + + CREATE INDEX w_cpt_ecriture_op_link_ik_ECR_REF_DA + ON w_CPT_ECRITURE_source_OP_LINK + USING btree + (ECR_REF_DA); + + CREATE INDEX w_cpt_ecriture_op_link_ik_ECR_REF_FACT + ON w_CPT_ECRITURE_source_OP_LINK + USING btree + (ECR_REF_FACT); + + CREATE INDEX w_cpt_ecriture_op_link_ik_LNK_JOURNAL + ON w_CPT_ECRITURE_source_OP_LINK + USING btree + (LNK_JOURNAL); + + + + + -- Correction tiers dans les comptes car dans certains cas, ils ne correspondent pas aux factures + UPDATE prod_web100t2.CPT_COMPTES + SET CPT_REF = subview.FT_ORGANISME + FROM + ( + SELECT ECR_COMPTE, CPT_CODE, CPT_COMPTES.CPT_REF, MAX(FT_ORGANISME) AS FT_ORGANISME + FROM w_CPT_ECRITURE_source_OP_LINK + JOIN prod_web100t2.CPT_COMPTES ON ECR_COMPTE = CPT_OID + JOIN prod_web100t2.FAC_FACT_TIER ON ECR_REF_FTIERS = FT_OID + WHERE CPT_COMPTES.CPT_REF_TYPE = 'AMC' + GROUP BY 1,2,3 + HAVING MAX(CASE WHEN CPT_COMPTES.CPT_REF <> FT_ORGANISME THEN '1' ELSE '0' END) = '1' AND + count(DISTINCT FT_ORGANISME) = 1 + ORDER BY 1,2,3 + ) subview + WHERE CPT_COMPTES.CPT_OID = ECR_COMPTE + ; + + + -- + + + DROP TABLE IF EXISTS w_REGUL_MOUVEMENTS_source; + CREATE TEMP TABLE w_REGUL_MOUVEMENTS_source AS + SELECT * + FROM prod_web100t2.REGUL_MOUVEMENTS + WHERE MVT_SEJ_OID = ANY(SELECT PHASE_OID FROM prod_web100t2.DAT_SEJOUR WHERE SEJ_DA = ANY(SELECT DA_OID FROM prod_web100t2.DAT_DA WHERE DA_EG_ENTREE = ANY(SELECT ets_oid FROM w_NMCL_ETABLISSEMENT))) + ; + + ANALYSE w_REGUL_MOUVEMENTS_source + ; + + + CREATE INDEX w_REGUL_MOUVEMENTS_source_ik_MVT_SEJ_OID + ON w_REGUL_MOUVEMENTS_source + USING btree + (MVT_SEJ_OID); + + + + + -- + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'WEB100T_ETAGE', + 'Traitement étage WEB100T ', + '0', + '1 = Prendre UF GEO dans mouvements (pas dans chambres)' + WHERE 'WEB100T_ETAGE' NOT IN (SELECT code FROM activite.t_divers); + + -- UF chambre selon mouvements + UPDATE prod_web100t2.CHAMBRES + SET CHA_UF = MVT_UF_GEO + FROM ( + SELECT MVT_CHAMBRE, (MAX(ARRAY[MVT_DATE::text,MVT_UF_GEO::text]))[2]::bigint AS MVT_UF_GEO + FROM w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + JOIN activite.t_divers ON t_divers.code = 'WEB100T_ETAGE' AND t_divers.valeur ='1' + WHERE MVT_TYPE IN (1,4) AND + MVT_CHAMBRE <> 0 + GROUP BY 1 + ) subview + WHERE CHA_OID = MVT_CHAMBRE + ; + + + + + ]]> + + + + '00'; + + + INSERT INTO activite[PX].t_tiers_payant(code_original, code, type_tiers_payant, texte, texte_court) + SELECT NMCL_AMC.OID::bigint, w_SGN_NMCL_DATA.ND_CODE, '2', w_SGN_NMCL_DATA.ND_LIB, w_SGN_NMCL_DATA.ND_LIB + FROM prod_web100t2.NMCL_AMC + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = OID + WHERE NMCL_IDENT = 'AMC' AND NMCL_AMC.OID::bigint NOT IN (SELECT code_original FROM activite[PX].t_tiers_payant); + + -- Dans certains cas, les tiers ne sont pas dans NMCL_DATA + INSERT INTO activite[PX].t_tiers_payant(code_original, code, type_tiers_payant, texte, texte_court) + SELECT NMCL_AMC.OID::bigint, MAX(CPT_AUXILIAIRE), '2', MAX(CPT_LIB), MAX(CPT_LIB) + FROM prod_web100t2.NMCL_AMC + JOIN prod_web100t2.CPT_COMPTES ON CPT_REF_TYPE = 'AMC' AND CPT_REF = NMCL_AMC.OID + WHERE NMCL_AMC.OID::bigint NOT IN (SELECT code_original FROM activite[PX].t_tiers_payant) + GROUP BY 1; + + UPDATE activite[PX].t_tiers_payant SET + code = w_SGN_NMCL_DATA.ND_CODE, + texte = w_SGN_NMCL_DATA.ND_LIB, + texte_court = w_SGN_NMCL_DATA.ND_LIB + FROM prod_web100t2.NMCL_AMO + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = OID + WHERE NMCL_AMO.OID::bigint = code_original AND + ( + code IS DISTINCT FROM w_SGN_NMCL_DATA.ND_CODE OR + texte IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB OR + texte_court IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB + ) + ; + + UPDATE activite[PX].t_tiers_payant SET + code = w_SGN_NMCL_DATA.ND_CODE, + texte = w_SGN_NMCL_DATA.ND_LIB, + texte_court = w_SGN_NMCL_DATA.ND_LIB + FROM prod_web100t2.NMCL_AMC + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = OID + WHERE NMCL_AMC.OID::bigint = code_original AND + ( + code IS DISTINCT FROM w_SGN_NMCL_DATA.ND_CODE OR + texte IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB OR + texte_court IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB + ) + ; + + -- Adresses des tiers payant + INSERT INTO base.t_codes_postaux(code, texte, texte_court, departement_id) + SELECT FLD_CODEPOSTAL, MAX(FLD_COMMUNE), MAX(FLD_COMMUNE), MAX(t_departements.oid) + FROM prod_web100t2.NMCL_AMO + LEFT JOIN base.t_codes_postaux ON FLD_CODEPOSTAL = t_codes_postaux.code + JOIN base.t_departements ON + FLD_CODEPOSTAL NOT LIKE '97%' AND substr(FLD_CODEPOSTAL,1,2) = t_departements.code OR + FLD_CODEPOSTAL LIKE '97%' AND substr(FLD_CODEPOSTAL,1,3) = t_departements.code + WHERE t_codes_postaux.oid IS NULL AND + FLD_CODEPOSTAL <> '' AND + length(FLD_CODEPOSTAL) = 5 + GROUP BY 1 + ; + + UPDATE activite[PX].t_tiers_payant SET + adresse = FLD_ADRESSE1 || ' ' || FLD_ADRESSE2 || ' ' || FLD_ADRESSE3, + code_postal_id = COALESCE(t_codes_postaux.oid,0), + ville = FLD_COMMUNE, + telephone = FLD_TELEPHONE, + fax = FLD_FAX, + email = FLD_EMAIL + FROM prod_web100t2.NMCL_AMO + LEFT JOIN base.t_codes_postaux ON FLD_CODEPOSTAL = t_codes_postaux.code + WHERE t_tiers_payant.code_original = NMCL_AMO.OID::bigint AND + ( + adresse IS DISTINCT FROM (FLD_ADRESSE1 || ' ' || FLD_ADRESSE2 || ' ' || FLD_ADRESSE3) OR + code_postal_id IS DISTINCT FROM COALESCE(t_codes_postaux.oid,0) OR + ville IS DISTINCT FROM FLD_COMMUNE OR + telephone IS DISTINCT FROM FLD_TELEPHONE OR + fax IS DISTINCT FROM FLD_FAX OR + email IS DISTINCT FROM FLD_EMAIL + ) + ; + + INSERT INTO base.t_codes_postaux(code, texte, texte_court, departement_id) + SELECT FLD_CODEPOSTAL, MAX(FLD_COMMUNE), MAX(FLD_COMMUNE), MAX(t_departements.oid) + FROM prod_web100t2.NMCL_AMC + LEFT JOIN base.t_codes_postaux ON FLD_CODEPOSTAL = t_codes_postaux.code + JOIN base.t_departements ON + FLD_CODEPOSTAL NOT LIKE '97%' AND substr(FLD_CODEPOSTAL,1,2) = t_departements.code OR + FLD_CODEPOSTAL LIKE '97%' AND substr(FLD_CODEPOSTAL,1,3) = t_departements.code + WHERE t_codes_postaux.oid IS NULL AND + FLD_CODEPOSTAL <> '' AND + length(FLD_CODEPOSTAL) = 5 + GROUP BY 1 + ; + + UPDATE activite[PX].t_tiers_payant SET + adresse = FLD_ADRESSE1 || ' ' || FLD_ADRESSE2 || ' ' || FLD_ADRESSE3, + code_postal_id = COALESCE(t_codes_postaux.oid,0), + ville = FLD_COMMUNE, + telephone = FLD_TELEPHONE, + fax = FLD_FAX, + email = FLD_EMAIL + FROM prod_web100t2.NMCL_AMC + LEFT JOIN base.t_codes_postaux ON FLD_CODEPOSTAL = t_codes_postaux.code + WHERE t_tiers_payant.code_original = NMCL_AMC.OID::bigint AND + ( + adresse IS DISTINCT FROM (FLD_ADRESSE1 || ' ' || FLD_ADRESSE2 || ' ' || FLD_ADRESSE3) OR + code_postal_id IS DISTINCT FROM COALESCE(t_codes_postaux.oid,0) OR + ville IS DISTINCT FROM FLD_COMMUNE OR + telephone IS DISTINCT FROM FLD_TELEPHONE OR + fax IS DISTINCT FROM FLD_FAX OR + email IS DISTINCT FROM FLD_EMAIL + ) + ; + + + + + ]]> + + + + '' THEN FLD_NOM ELSE TRIM(REPLACE(w_SGN_NMCL_DATA.ND_LIB, FLD_PRENOM, '')) END) AS FLD_NOM_SOUNDEX, + base.cti_soundex_nom(FLD_PRENOM) AS FLD_PRENOM_SOUNDEX, + CASE WHEN FLD_NOM <> '' THEN FLD_NOM ELSE TRIM(REPLACE(w_SGN_NMCL_DATA.ND_LIB, FLD_PRENOM, '')) END AS FLD_NOM, + FLD_PRENOM, + FLD_CODEADELI, + FLD_SPECIALITE, + COALESCE(SUBSTR(w_SGN_NMCL_DATA_spe.ND_CODE,1,10),'') AS FLD_SPECIALITE_CODE, + COALESCE(t_medecins_administratifs.medecin_id,0) as medecin_id, + FLD_CODERPPS + FROM prod_web100t2.NMCL_INTERVENANT + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = OID AND w_SGN_NMCL_DATA.NMCL_IDENT = 'INTERVENANT' + LEFT JOIN w_SGN_NMCL_DATA w_SGN_NMCL_DATA_spe ON FLD_SPECIALITE = w_SGN_NMCL_DATA_spe.ND_INVARIANT_OID + LEFT JOIN activite[PX].t_medecins_administratifs ON NMCL_INTERVENANT.OID::bigint = t_medecins_administratifs.code_original; + + INSERT INTO w_medecins ( + NMCL_INTERVENANT_OID + ,ND_CODE + ,FLD_NOM_SOUNDEX + ,FLD_PRENOM_SOUNDEX + ,FLD_NOM + ,FLD_PRENOM + ,FLD_CODEADELI + ,FLD_SPECIALITE + ,FLD_SPECIALITE_CODE + ,medecin_id + ,FLD_CODERPPS + ) + SELECT w_SGN_NMCL_DATA.ND_INVARIANT_OID::bigint + ,w_SGN_NMCL_DATA.ND_CODE + ,base.cti_soundex_nom(w_SGN_NMCL_DATA.ND_LIB) + ,base.cti_soundex_nom('') AS FLD_PRENOM_SOUNDEX + ,w_SGN_NMCL_DATA.ND_LIB AS FLD_NOM + ,''::text AS FLD_PRENOM + ,''::text AS FLD_CODEADELI + ,0 AS FLD_SPECIALITE + ,'' + ,COALESCE(t_medecins_administratifs.medecin_id,0) as medecin_id + ,NULL + FROM w_SGN_NMCL_DATA + LEFT JOIN activite[PX].t_medecins_administratifs ON w_SGN_NMCL_DATA.ND_INVARIANT_OID::bigint = t_medecins_administratifs.code_original + WHERE NMCL_IDENT IN ('ENTITEFACTURATION','ETABLISSEMENT'); + + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, code_rpps, specialite_id) + SELECT w_medecins.FLD_NOM, w_medecins.FLD_PRENOM, w_medecins.FLD_CODEADELI, w_medecins.FLD_CODERPPS, 0 FROM + (SELECT SUBSTR(FLD_NOM_SOUNDEX, 1, 8) AS FLD_NOM_SOUNDEX, SUBSTR(FLD_PRENOM_SOUNDEX, 1, 8) AS FLD_PRENOM_SOUNDEX, FLD_CODEADELI, FLD_CODERPPS, MIN(NMCL_INTERVENANT_OID) AS NMCL_INTERVENANT_OID + FROM w_medecins + GROUP BY 1,2,3,4) subview, w_medecins + WHERE w_medecins.NMCL_INTERVENANT_OID = subview.NMCL_INTERVENANT_OID + AND subview.FLD_NOM_SOUNDEX || ',' || subview.FLD_PRENOM_SOUNDEX || ',' || subview.FLD_CODEADELI NOT IN + (SELECT substr(base.cti_soundex_nom(nom),1,8) || ',' || substr(base.cti_soundex_nom(prenom),1,8) || ',' || numero_ordre FROM base.t_medecins); + + + INSERT INTO base.t_medecins(nom, prenom, numero_ordre, code_rpps, specialite_id) + SELECT w_medecins.FLD_NOM, w_medecins.FLD_PRENOM, w_medecins.FLD_CODEADELI, w_medecins.FLD_CODERPPS, 0 FROM + (SELECT FLD_NOM_SOUNDEX, FLD_PRENOM_SOUNDEX, MIN(NMCL_INTERVENANT_OID) AS NMCL_INTERVENANT_OID + FROM w_medecins + GROUP BY 1,2) subview, w_medecins + WHERE w_medecins.NMCL_INTERVENANT_OID = subview.NMCL_INTERVENANT_OID + AND subview.FLD_NOM_SOUNDEX || ',' || subview.FLD_PRENOM_SOUNDEX NOT IN + (SELECT base.cti_soundex_nom(nom) || ',' || base.cti_soundex_nom(prenom) FROM base.t_medecins); + + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT substr(base.cti_soundex_nom(nom),1,8) as nom , substr(base.cti_soundex_nom(prenom),1,8) as prenom, numero_ordre, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2,3) subview + WHERE SUBSTR(FLD_NOM_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(FLD_PRENOM_SOUNDEX, 1, 8) = subview.prenom + AND FLD_CODEADELI = subview.numero_ordre + AND w_medecins.medecin_id = 0; + + UPDATE w_medecins SET medecin_id = subview.medecin_id + FROM + (SELECT base.cti_soundex_nom(nom) as nom , base.cti_soundex_nom(prenom) as prenom, MIN(oid) AS medecin_id FROM base.t_medecins GROUP BY 1,2) subview + WHERE SUBSTR(FLD_NOM_SOUNDEX, 1, 8) = subview.nom + AND SUBSTR(FLD_PRENOM_SOUNDEX, 1, 8) = subview.prenom + AND w_medecins.medecin_id = 0; + + INSERT INTO activite[PX].t_medecins_administratifs(code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT DISTINCT NMCL_INTERVENANT_OID, ND_CODE, FLD_NOM, FLD_PRENOM, COALESCE(t_specialites_medecin.oid,0), medecin_id + FROM w_medecins + LEFT JOIN base.t_specialites_medecin ON (FLD_SPECIALITE::bigint = t_specialites_medecin.code_original) + WHERE NMCL_INTERVENANT_OID NOT IN (SELECT code_original FROM activite[PX].t_medecins_administratifs); + + UPDATE activite[PX].t_medecins_administratifs SET + code = ND_CODE, + nom = FLD_NOM, + prenom = FLD_PRENOM + FROM w_medecins + WHERE t_medecins_administratifs.code_original = NMCL_INTERVENANT_OID AND + ( + code IS DISTINCT FROM ND_CODE OR + nom IS DISTINCT FROM FLD_NOM OR + prenom IS DISTINCT FROM FLD_PRENOM + ) + ; + + UPDATE activite[PX].t_medecins_administratifs + SET code = ND_CODE, + nom = FLD_NOM, + prenom = FLD_PRENOM, + specialite_id = COALESCE(t_specialites_medecin.oid,0), + medecin_id = w_medecins.medecin_id, + no_adeli = FLD_CODEADELI, + code_rpps = FLD_CODERPPS + FROM w_medecins LEFT JOIN base.t_specialites_medecin ON (FLD_SPECIALITE_CODE = t_specialites_medecin.code) + WHERE w_medecins.NMCL_INTERVENANT_OID = t_medecins_administratifs.code_original + AND ( + t_medecins_administratifs.code IS DISTINCT FROM ND_CODE OR + t_medecins_administratifs.nom IS DISTINCT FROM FLD_NOM OR + t_medecins_administratifs.prenom IS DISTINCT FROM FLD_PRENOM OR + t_medecins_administratifs.specialite_id IS DISTINCT FROM COALESCE(t_specialites_medecin.oid,0) OR + t_medecins_administratifs.medecin_id IS DISTINCT FROM w_medecins.medecin_id OR + t_medecins_administratifs.no_adeli IS DISTINCT FROM w_medecins.FLD_CODEADELI OR + t_medecins_administratifs.code_rpps IS DISTINCT FROM w_medecins.FLD_CODERPPS + ); + + UPDATE base.t_medecins SET specialite_id = subview.specialite_id FROM + (SELECT t_medecins.oid, MIN(t_medecins_administratifs.specialite_id) as specialite_id + FROM base.t_medecins, activite[PX].t_medecins_administratifs , base.t_specialites_medecin + WHERE t_medecins.oid = t_medecins_administratifs.medecin_id AND + t_medecins_administratifs.specialite_id = t_specialites_medecin.oid AND + t_medecins_administratifs.specialite_id <> 0 + GROUP BY t_medecins.oid) subview + WHERE t_medecins.oid = subview.oid AND t_medecins.oid <> 0 AND t_medecins.specialite_id = 0; + + -- Code RPPS + UPDATE base.t_medecins + SET code_rpps = subview.RPPS + FROM + ( + SELECT medecin_id, count(DISTINCT FLD_CODERPPS), MAX(FLD_CODERPPS) AS RPPS + FROM activite[PX].t_medecins_administratifs + JOIN base.t_medecins ON t_medecins_administratifs.medecin_id = t_medecins.oid + JOIN prod_web100t2.NMCL_INTERVENANT ON code_original = NMCL_INTERVENANT.OID + WHERE FLD_CODERPPS <> '' AND + length(FLD_CODERPPS) = 11 AND + t_medecins.code_rpps = '' AND + medecin_id <> 0 + GROUP BY 1 + HAVING count(DISTINCT FLD_CODERPPS) = 1 + ) subview + WHERE t_medecins.oid = subview.medecin_id + ; + + -- adresse + INSERT INTO base.t_codes_postaux(code, texte, texte_court, departement_id) + SELECT FLD_CODEPOSTAL, MAX(FLD_COMMUNE), MAX(FLD_COMMUNE), MAX(t_departements.oid) + FROM prod_web100t2.NMCL_INTERVENANT + LEFT JOIN base.t_codes_postaux ON FLD_CODEPOSTAL = t_codes_postaux.code + JOIN base.t_departements ON + FLD_CODEPOSTAL NOT LIKE '97%' AND substr(FLD_CODEPOSTAL,1,2) = t_departements.code OR + FLD_CODEPOSTAL LIKE '97%' AND substr(FLD_CODEPOSTAL,1,3) = t_departements.code + WHERE t_codes_postaux.oid IS NULL AND + FLD_CODEPOSTAL <> '' AND + length(FLD_CODEPOSTAL) = 5 + GROUP BY 1 + ; + + UPDATE activite[PX].t_medecins_administratifs SET + adresse = FLD_ADRESSE1 || ' ' || FLD_ADRESSE2 || ' ' || FLD_ADRESSE3, + code_postal_id = COALESCE(t_codes_postaux.oid,0), + ville = FLD_COMMUNE, + telephone = FLD_TELEPHONE, + fax = FLD_FAX, + email = FLD_EMAIL + FROM prod_web100t2.NMCL_INTERVENANT + LEFT JOIN base.t_codes_postaux ON FLD_CODEPOSTAL = t_codes_postaux.code + WHERE t_medecins_administratifs.code_original = NMCL_INTERVENANT.OID::bigint AND + ( + adresse IS DISTINCT FROM (FLD_ADRESSE1 || ' ' || FLD_ADRESSE2 || ' ' || FLD_ADRESSE3) OR + code_postal_id IS DISTINCT FROM COALESCE(t_codes_postaux.oid,0) OR + ville IS DISTINCT FROM FLD_COMMUNE OR + telephone IS DISTINCT FROM FLD_TELEPHONE OR + fax IS DISTINCT FROM FLD_FAX OR + email IS DISTINCT FROM FLD_EMAIL + ) + ; + + + DROP TABLE IF EXISTS w_NMCL_INTERVENANT; + CREATE TEMP TABLE w_NMCL_INTERVENANT AS + SELECT NODE_OID, NMCL_INTERVENANT.OID, COALESCE(t_medecins_administratifs.oid,0) AS medecin_administratif_id + FROM prod_web100t2.SGN_TREE_NODES + JOIN prod_web100t2.NMCL_INTERVENANT ON NODE_INVARIANT_OID = NMCL_INTERVENANT.OID + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = OID AND NMCL_IDENT = 'INTERVENANT' + JOIN activite[PX].t_medecins_administratifs ON NMCL_INTERVENANT.OID = code_original; + + INSERT INTO w_NMCL_INTERVENANT + SELECT NODE_OID, NODE_INVARIANT_OID, COALESCE(t_medecins_administratifs.oid,0) AS medecin_administratif_id + FROM prod_web100t2.SGN_TREE_NODES + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = NODE_INVARIANT_OID AND NMCL_IDENT IN ('ENTITEFACTURATION','ETABLISSEMENT') + JOIN activite[PX].t_medecins_administratifs ON NODE_INVARIANT_OID = code_original; + + + + CREATE INDEX w_NMCL_INTERVENANT_i1 + ON w_NMCL_INTERVENANT + USING btree + (NODE_OID); + + + ]]> + + + + 0 + LEFT JOIN w_SGN_NMCL_DATA SGN_NMCL_DATA_DMT ON FLD_DMT = SGN_NMCL_DATA_DMT.ND_INVARIANT_OID AND FLD_DMT <> 0 + LEFT JOIN base.t_modes_traitement ON SGN_NMCL_DATA_MT.ND_CODE = t_modes_traitement.code + LEFT JOIN base.t_dmt ON SGN_NMCL_DATA_DMT.ND_CODE = t_dmt.code + WHERE COALESCE(t_modes_traitement.oid,0) <> 0 OR COALESCE(t_dmt.oid,0) <> 0 + ) subview + WHERE code_original = subview.OID AND (t_services_facturation.mode_traitement_id = 0 OR t_services_facturation.dmt_id = 0); + + + UPDATE activite[PX].t_services_facturation SET + code = w_SGN_NMCL_DATA.ND_CODE, + texte = w_SGN_NMCL_DATA.ND_LIB, + texte_court = w_SGN_NMCL_DATA.ND_LIB + FROM prod_web100t2.NMCL_UNITEFONCTIONNELLE + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = NMCL_UNITEFONCTIONNELLE.OID + WHERE NMCL_UNITEFONCTIONNELLE.OID::bigint = code_original AND + ( + code IS DISTINCT FROM w_SGN_NMCL_DATA.ND_CODE OR + texte IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB OR + texte_court IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB + ) + ; + + -- Unités fonctionnelles + + INSERT INTO activite[PX].t_unites_fonctionnelles(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_unites_fonctionnelles); + + INSERT INTO activite[PX].t_unites_fonctionnelles(code_original, code, texte, texte_court) + SELECT OID::bigint, ND_CODE, ND_LIB, ND_LIB + FROM prod_web100t2.NMCL_UNITEFONCTIONNELLE + JOIN w_SGN_NMCL_DATA ON ND_INVARIANT_OID = OID + WHERE NMCL_IDENT = 'UNITEFONCTIONNELLE' AND + OID::bigint NOT IN (SELECT code_original FROM activite[PX].t_unites_fonctionnelles) + ORDER BY ND_CODE; + + UPDATE activite[PX].t_unites_fonctionnelles SET + code = w_SGN_NMCL_DATA.ND_CODE, + texte = w_SGN_NMCL_DATA.ND_LIB, + texte_court = w_SGN_NMCL_DATA.ND_LIB + FROM prod_web100t2.NMCL_UNITEFONCTIONNELLE + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = NMCL_UNITEFONCTIONNELLE.OID + WHERE NMCL_UNITEFONCTIONNELLE.OID::bigint = code_original AND + ( + code IS DISTINCT FROM w_SGN_NMCL_DATA.ND_CODE OR + texte IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB OR + texte_court IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB + ) + ; + + -- Unités médicales + + INSERT INTO activite[PX].t_unites_medicales(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_unites_medicales); + + INSERT INTO activite[PX].t_unites_medicales(code_original, code, texte, texte_court) + SELECT OID::bigint, ND_CODE, ND_LIB, ND_LIB + FROM prod_web100t2.NMCL_UNITEMEDICALE + JOIN w_SGN_NMCL_DATA ON ND_INVARIANT_OID = OID + WHERE NMCL_IDENT = 'UNITEMEDICALE' AND + OID::bigint NOT IN (SELECT code_original FROM activite[PX].t_unites_medicales) + ORDER BY ND_CODE; + + UPDATE activite[PX].t_unites_medicales SET + code = w_SGN_NMCL_DATA.ND_CODE, + texte = w_SGN_NMCL_DATA.ND_LIB, + texte_court = w_SGN_NMCL_DATA.ND_LIB + FROM prod_web100t2.NMCL_UNITEMEDICALE + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = NMCL_UNITEMEDICALE.OID + WHERE NMCL_UNITEMEDICALE.OID::bigint = code_original AND + ( + code IS DISTINCT FROM w_SGN_NMCL_DATA.ND_CODE OR + texte IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB OR + texte_court IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB + ) + ; + + -- Activités + + INSERT INTO activite[PX].t_activites(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseignée', 'Non renseignée' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_activites); + + --Traitements des spécialités + INSERT INTO w_SGN_NMCL_DATA (NMCL_IDENT, ND_CODE, ND_OID, ND_INVARIANT_OID, ND_LIB) + SELECT DISTINCT ON (ND_LIB) + NMCL_IDENT + ,ND_CODE + ,null + ,ND_INVARIANT_OID + ,ND_LIB + FROM prod_web100t2.SGN_NMCL_DATA + JOIN prod_web100t2.SGN_NMCLS ON ND_NMCL_OID = NMCL_OID + WHERE NMCL_IDENT = 'SPECIALITE' + ORDER BY ND_LIB, ND_VALIDE_DE, ND_INVARIANT_OID DESC + ; + + -- Modification du code_original des spécialités déjà présentes dans CTI + UPDATE activite[PX].t_activites + SET code_original = ND_INVARIANT_OID + FROM w_SGN_NMCL_DATA + WHERE + NMCL_IDENT = 'SPECIALITE' + AND activite[PX].t_activites.code = substr(ND_CODE,1,10) + AND activite[PX].t_activites.code_original <> ND_INVARIANT_OID + ; + + -- Insertion des nouvelles spécialités + INSERT INTO activite[PX].t_activites(code_original, code, texte, texte_court) + SELECT ND_INVARIANT_OID, substr(ND_CODE,1,10), ND_LIB, ND_LIB + FROM w_SGN_NMCL_DATA + LEFT JOIN activite[PX].t_activites ON t_activites.code_original = ND_INVARIANT_OID + WHERE NMCL_IDENT = 'SPECIALITE' + AND t_activites.code_original IS NULL + AND NOT EXISTS (SELECT 1 FROM activite[PX].t_activites WHERE t_activites.code = substr(w_SGN_NMCL_DATA.ND_CODE,1,10)) + ORDER BY ND_CODE; + + -- Correction car avant, le code_original pouvait être doublé. + DELETE FROM activite[PX].t_activites + USING( + SELECT code_original, MIN(oid) AS keep_oid + FROM activite[PX].t_activites + GROUP BY 1 + HAVING count(*) > 1 + ) subview + WHERE t_activites.code_original = subview.code_original AND + t_activites.oid <> keep_oid + ; + + UPDATE activite[PX].t_activites SET + code = substr(ND_CODE,1,10), + texte = ND_LIB, + texte_court = ND_LIB + FROM w_SGN_NMCL_DATA + WHERE ND_INVARIANT_OID = t_activites.code_original AND + ( + t_activites.code IS DISTINCT FROM substr(w_SGN_NMCL_DATA.ND_CODE,1,10) OR + t_activites.texte IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB OR + t_activites.texte_court IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB + ) + ; + + -- Etages et lits + + INSERT INTO activite[PX].t_etages(oid, code_original, code, texte, texte_court, nb_lits) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné', 0 WHERE 0 NOT IN (SELECT oid FROM activite[PX].t_etages); + + UPDATE prod_web100t2.CHAMBRES + SET CHA_UF = NODE_INVARIANT_OID + FROM prod_web100t2.SGN_TREE_NODES + WHERE CHA_UF = 0 AND + CHA_LIEU = NODE_OID; + + -- Avec lit + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court) + SELECT CHA_UF::bigint,ND_CODE, ND_LIB , ND_LIB + FROM prod_web100t2.CHAMBRES + JOIN w_SGN_NMCL_DATA ON CHA_UF = ND_INVARIANT_OID + WHERE NMCL_IDENT = 'UNITEFONCTIONNELLE' AND + CHA_UF::bigint NOT IN (SELECT code_original FROM activite[PX].t_etages) + GROUP BY 1,2,3,4 + ORDER BY ND_CODE; + + -- Sans lit + INSERT INTO activite[PX].t_etages(code_original, code, texte, texte_court) + SELECT MVT_UF_GEO::bigint,ND_CODE, ND_LIB , ND_LIB + FROM w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + JOIN w_SGN_NMCL_DATA ON MVT_UF_GEO = ND_INVARIANT_OID + WHERE NMCL_IDENT = 'UNITEFONCTIONNELLE' AND + MVT_LIT = 0 AND + MVT_UF_GEO::bigint NOT IN (SELECT code_original FROM activite[PX].t_etages) + GROUP BY 1,2,3,4 + ORDER BY ND_CODE; + + UPDATE activite[PX].t_etages SET + code = w_SGN_NMCL_DATA.ND_CODE, + texte = w_SGN_NMCL_DATA.ND_LIB, + texte_court = w_SGN_NMCL_DATA.ND_LIB + FROM w_REGUL_MOUVEMENTS_source REGUL_MOUVEMENTS + JOIN w_SGN_NMCL_DATA ON w_SGN_NMCL_DATA.ND_INVARIANT_OID = REGUL_MOUVEMENTS.MVT_UF_GEO + WHERE REGUL_MOUVEMENTS.MVT_UF_GEO::bigint = code_original AND + ( + code IS DISTINCT FROM w_SGN_NMCL_DATA.ND_CODE OR + texte IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB OR + texte_court IS DISTINCT FROM w_SGN_NMCL_DATA.ND_LIB + ) + ; + + -- Les codes lits peuvent changer + UPDATE activite[PX].t_lits SET + code = LIT_CODE, + texte = CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END, + texte_court = CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END + FROM prod_web100t2.CHAMBRES + JOIN prod_web100t2.LITS ON CHA_OID = LIT_CHAMBRE + JOIN activite[PX].t_etages ON CHA_UF::bigint = t_etages.code_original + WHERE t_lits.code_original = (CHA_UF || '-' || LIT_OID) AND + (t_lits.code <> LIT_CODE OR + t_lits.texte <> CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END OR + t_lits.texte_court <> CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END + ) + ; + + UPDATE activite[PX].t_lits SET + code = LIT_CODE, + texte = CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END, + texte_court = CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END, + etage_id = t_etages.oid + FROM + prod_web100t2.CHAMBRES + JOIN prod_web100t2.LITS ON CHA_OID = LIT_CHAMBRE + JOIN activite[PX].t_etages ON CHA_UF::bigint = t_etages.code_original + WHERE 1=1 + AND CHA_UF::text || '-'::text || LIT_OID::text = t_lits.code_original + AND (1!=1 + OR t_lits.code != LIT_CODE + OR t_lits.texte != CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END + OR t_lits.texte_court != CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END + OR t_lits.etage_id != t_etages.oid + ); + + -- Mise à jour par rapport au code du lit et à l'étage si l'oid a changé + UPDATE activite[PX].t_lits SET + code_original = (CHA_UF::text || '-'::text || LIT_OID::text) + FROM + prod_web100t2.CHAMBRES + JOIN prod_web100t2.LITS ON CHA_OID = LIT_CHAMBRE + ,activite[PX].t_etages + WHERE 1=1 + AND t_lits.etage_id = t_etages.oid + AND t_lits.code = LITS.LIT_CODE + AND t_etages.code_original = CHAMBRES.CHA_UF + AND t_lits.code_original IS DISTINCT FROM (CHA_UF::text || '-'::text || LIT_OID::text) + ; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT CHA_UF || '-' || MAX(LIT_OID), + LIT_CODE, + CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END, + CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END, + t_etages.oid, + CASE WHEN CHA_COMMUNE = '1' THEN 'N' ELSE 'O' END AS chambre_particuliere + FROM prod_web100t2.CHAMBRES + JOIN prod_web100t2.LITS ON CHA_OID = LIT_CHAMBRE + JOIN activite[PX].t_etages ON CHA_UF::bigint = t_etages.code_original + GROUP BY CHA_UF,2,3,4,5,6 + HAVING + CHA_UF || '-' || MAX(LIT_OID) NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL) + ORDER BY LIT_CODE; + + INSERT INTO activite[PX].t_lits(code_original, code, texte, texte_court, etage_id, chambre_particuliere) + SELECT code_original || '-0' , '', 'Non renseigné', 'Non renseigné', oid, 'N' + FROM activite[PX].t_etages + WHERE oid > 0 AND + code_original || '-0' NOT IN (SELECT code_original FROM activite[PX].t_lits WHERE code_original IS NOT NULL); + + UPDATE activite[PX].t_lits SET code = '*****' WHERE code = ''; + + UPDATE activite[PX].t_lits SET + code = LIT_CODE, + texte = CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END, + texte_court = CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END + FROM + ( + with max_lit_oid AS ( + SELECT CHAMBRES.CHA_OID, CHAMBRES.CHA_UF, MAX(LITS.LIT_OID) AS MAX_LIT_OID + FROM prod_web100t2.CHAMBRES + JOIN prod_web100t2.LITS ON CHA_OID = LIT_CHAMBRE + GROUP BY 1,2 + ) + SELECT + CHAMBRES.CHA_UF, + CHAMBRES.CHA_CODE, + max_lit_oid.MAX_LIT_OID, + LITS.LIT_CODE, + LITS.LIT_DESCR + FROM max_lit_oid + JOIN prod_web100t2.CHAMBRES ON CHAMBRES.CHA_OID = max_lit_oid.CHA_OID + JOIN prod_web100t2.LITS ON LIT_OID = max_lit_oid.MAX_LIT_OID + JOIN activite[PX].t_etages ON t_etages.code_original = CHAMBRES.CHA_UF::bigint + ) AS subview + WHERE subview.CHA_UF || '-' || subview.MAX_LIT_OID = code_original AND + ( + code IS DISTINCT FROM LIT_CODE OR + texte IS DISTINCT FROM CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END OR + texte_court IS DISTINCT FROM CASE WHEN LIT_DESCR <> '' THEN LIT_DESCR ELSE CHA_CODE || CASE WHEN LIT_CODE <> CHA_CODE THEN '. ' || LIT_CODE ELSE '' END END + ) + ; + + + DROP TABLE IF EXISTS w_NMCL_UNITEFONCTIONNELLE; + CREATE TEMP TABLE w_NMCL_UNITEFONCTIONNELLE AS + SELECT + ND_INVARIANT_OID AS WEB100T_OID, + COALESCE(t_services_facturation.oid,0) AS service_facturation_id, + COALESCE(t_unites_fonctionnelles.oid,0) AS unite_fonctionnelle_id, + COALESCE(mode_traitement_id,0) AS mode_traitement_id, + COALESCE(t_modes_traitement.code,'') AS mode_traitement_code, + COALESCE(dmt_id,0) AS dmt_id, + COALESCE(t_dmt.code,'') AS dmt_code, + COALESCE(t_services_facturation.type_sejour,'') AS type_sejour, + COALESCE(t_services_facturation.type_t2a,'0') AS type_t2a + FROM w_SGN_NMCL_DATA + LEFT JOIN activite[PX].t_services_facturation ON ND_INVARIANT_OID::bigint = t_services_facturation.code_original + LEFT JOIN activite[PX].t_unites_fonctionnelles ON ND_INVARIANT_OID::bigint = t_unites_fonctionnelles.code_original + LEFT JOIN base.t_modes_traitement ON mode_traitement_id = t_modes_traitement.oid + LEFT JOIN base.t_dmt ON mode_traitement_id = t_dmt.oid + WHERE NMCL_IDENT = 'UNITEFONCTIONNELLE'; + + + ]]> + + + + 0 + WHERE ART_OID::text = t_rubriques_facturation.code_original + ; + + UPDATE w_ART_ARTICLES SET ART_CODE_B2 = ART_CODE WHERE ART_CODE_B2 = '' AND ART_CODE <> ''; + + -- Codes ou texte modifiés + UPDATE activite[PX].t_rubriques_facturation SET + code = ART_CODE, + texte = ART_LIB, + texte_court = ART_LIB + FROM prod_web100t2.ART_ARTICLES + WHERE code_original = ART_OID AND + ART_ARTICLES.ART_CLASS NOT IN ('GRP', 'CCAM', 'UCD', 'LPP', 'GHS', 'GHT') AND + ( + t_rubriques_facturation.code <> ART_CODE OR + t_rubriques_facturation.texte <> ART_LIB OR + t_rubriques_facturation.texte_court <> ART_LIB + ) + ; + + -- code changé avec code original inchangé + UPDATE activite[PX].t_rubriques_facturation SET + code = ART_CODE + FROM + ( + SELECT + (MAX(Array[ART_DEBUT_VALIDITE::text,ART_OID_rub::text]))[2]::bigint AS ART_OID_rub, + ART_CODE, + (MAX(Array[ART_DEBUT_VALIDITE::text,ART_LIB]))[2] AS ART_LIB, + (MAX(Array[ART_DEBUT_VALIDITE::text,ART_LIB]))[2] AS ART_LIB + FROM w_ART_ARTICLES + GROUP BY ART_CODE + ) as subq + WHERE code_original = ART_OID_rub + AND code != ART_CODE + ; + + INSERT INTO activite[PX].t_rubriques_facturation(code_original, code, texte, texte_court) + SELECT + (MAX(Array[ART_DEBUT_VALIDITE::text,ART_OID_rub::text]))[2]::bigint AS ART_OID_rub, + ART_CODE, + (MAX(Array[ART_DEBUT_VALIDITE::text,ART_LIB]))[2] AS ART_LIB, + (MAX(Array[ART_DEBUT_VALIDITE::text,ART_LIB]))[2] AS ART_LIB + FROM w_ART_ARTICLES + GROUP BY ART_CODE + HAVING (MAX(Array[ART_DEBUT_VALIDITE::text,ART_OID_rub::text]))[2] NOT IN (SELECT code_original FROM activite[PX].t_rubriques_facturation) AND + ART_CODE NOT IN (SELECT code FROM activite[PX].t_rubriques_facturation WHERE t_rubriques_facturation.code IS NOT NULL) + ; + + INSERT INTO activite.t_prestations(code_original, code, texte, texte_court) + SELECT + ART_CODE_B2, + ART_CODE_B2, + ART_CODE_B2, + ART_CODE_B2 + FROM w_ART_ARTICLES + WHERE ART_CODE_B2 NOT IN (SELECT code FROM activite.t_prestations WHERE code IS NOT NULL) + GROUP BY ART_CODE_B2 + ORDER BY ART_CODE_B2; + + INSERT INTO base.t_actes( + code, texte, texte_court, nomenclature, ccam_regroupement_id_1, ccam_regroupement_id_4, + geste_marqueur_id) + SELECT + substring(ART_CODE_ACTE, 1, 7), + (MAX(Array[ART_DEBUT_VALIDITE::text,ART_LIB_ACTE]))[2] AS ART_LIB_ACTE, + (MAX(Array[ART_DEBUT_VALIDITE::text,ART_LIB_ACTE]))[2] AS ART_LIB_ACTE, + MIN(CASE WHEN length(trim(ART_CODE_ACTE)) >= 7 THEN 'CCAM' ELSE 'NGAP' END), + MIN(COALESCE(t_ccam_regroupements_1.oid,0)), + MIN(COALESCE(t_ccam_regroupements_4.oid,0)), + 0 + FROM w_ART_ARTICLES + LEFT JOIN base.t_ccam_regroupements t_ccam_regroupements_1 ON t_ccam_regroupements_1.code = CASE WHEN length(trim(ART_CODE_ACTE)) >= 7 THEN ART_CODE_B2 ELSE 'NGAP' END + LEFT JOIN base.t_ccam_regroupements t_ccam_regroupements_4 ON t_ccam_regroupements_4.code = CASE WHEN length(trim(ART_CODE_ACTE)) >= 7 THEN 'ADA' ELSE 'NGAP' END + WHERE + substring(ART_CODE_ACTE, 1, 7) NOT IN (SELECT code FROM base.t_actes) AND + ART_OID = ANY (ARRAY (SELECT DISTINCT FLT_ARTICLE FROM prod_web100t2.FAC_FACT_LIGNE_TIER WHERE FLT_IS_ETS = 0 AND FLT_DATE_DEBUT >= '[ENV_ADM_ANNEEDEBUT]0101'::timestamp without time zone)::double precision[]) + GROUP BY 1; + + + + + UPDATE w_ART_ARTICLES + SET prestation_id = t_prestations.oid + FROM activite.t_prestations + WHERE ART_CODE_B2 = code; + + + UPDATE w_ART_ARTICLES + SET rubrique_facturation_id = t_rubriques_facturation.oid + FROM activite[PX].t_rubriques_facturation + WHERE ART_CODE = code; + + + UPDATE w_ART_ARTICLES + SET acte_id = t_actes.oid + FROM base.t_actes + WHERE substring(ART_CODE_ACTE, 1, 7) = code; + + UPDATE w_ART_ARTICLES + SET ucd_id = t_ucd.oid + FROM base.t_ucd + WHERE ART_CODE_2 = t_ucd.code; + + UPDATE w_ART_ARTICLES + SET lpp_id = t_lpp.oid + FROM base.t_lpp + WHERE ART_CODE_2 = t_lpp.code; + + + ALTER TABLE w_ART_ARTICLES ADD CONSTRAINT w_ART_ARTICLES_pkey PRIMARY KEY(ART_OID); + + -- Journal + INSERT INTO activite[PX].t_journal (code_original, code, texte) + SELECT JOUR_TYPE, + JOUR_TYPE, + SPLIT_PART(JOUR_LIB,' ',1) + FROM prod_web100t2.CPT_JOURNAL + WHERE JOUR_TYPE NOT IN (SELECT code_original FROM activite[PX].t_journal WHERE code_original IS NOT NULL) + GROUP BY 1,2,3 + ; + + INSERT INTO activite[PX].t_journal (code_original, code, texte) + SELECT LNK_JOURNAL, LNK_JOURNAL, + CASE LNK_JOURNAL + WHEN 'VE' THEN 'Ventes' + WHEN 'HONO' THEN 'Honoraires' + WHEN 'RGLMT' THEN 'Règlements' + WHEN 'ENCRS' THEN 'En cours' + ELSE LNK_JOURNAL END + FROM w_CPT_OP_LINK_source + WHERE LNK_JOURNAL NOT IN (SELECT code_original FROM activite[PX].t_journal WHERE code_original IS NOT NULL) + GROUP BY 1,2,3 + ; + + -- Comptes + INSERT INTO activite[PX].t_compte(oid, code_original, code, texte, texte_court) + SELECT 0, 0, '', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECt oid FROM activite[PX].t_compte); + + INSERT INTO activite[PX].t_compte(code_original, code, texte, texte_court) + SELECT + CPT_CODE, + CPT_CODE, + (max(DISTINCT ARRAY[cpt_created::text, CPT_LIB]))[2], + (max(DISTINCT ARRAY[cpt_created::text, CPT_LIB]))[2] + FROM prod_web100t2.CPT_COMPTES + WHERE CPT_CODE <> '' AND + CPT_OID = ANY(SELECT ECR_COMPTE FROM w_CPT_ECRITURE_source) AND + CPT_CODE NOT IN (SELECT code FROM activite[PX].t_compte) AND + CPT_CODE NOT IN (SELECT code_original FROM activite[PX].t_compte) + GROUP BY 1 + ORDER BY 1; + + UPDATE activite[PX].t_compte SET + code = subview.CPT_CODE, + texte = subview.MAX_CPT_LIB, + texte_court = subview.MAX_CPT_LIB + FROM + ( + SELECT CPT_CODE, (max(DISTINCT ARRAY[cpt_created::text, CPT_LIB]))[2] AS MAX_CPT_LIB + FROM prod_web100t2.CPT_COMPTES + GROUP BY 1 + ) AS subview + WHERE subview.CPT_CODE = code_original AND + ( + code IS DISTINCT FROM subview.CPT_CODE OR + texte IS DISTINCT FROM subview.MAX_CPT_LIB OR + texte_court IS DISTINCT FROM subview.MAX_CPT_LIB + ) + ; + + with last_libelle as ( + select + CPT_CODE, + (max(DISTINCT ARRAY[cpt_created::text, CPT_LIB]))[2] as CPT_LIB + from prod_web100t2.CPT_COMPTES + where CPT_TYPE = '1' + group by 1 + ) + UPDATE activite[PX].t_compte SET + texte = last_libelle.CPT_LIB, + texte_court = last_libelle.CPT_LIB + FROM last_libelle + WHERE 1=1 + AND t_compte.code = last_libelle.CPT_CODE + AND (1!=1 + OR texte IS DISTINCT FROM CPT_LIB + OR texte_court IS DISTINCT FROM CPT_LIB) + ; + + UPDATE activite[PX].t_compte + SET taux_tva = subview.taux_tva*100 + FROM + ( + SELECT CPT_CODE, (MAX(ARRAY[nb,ECR_TVA_TAUX]))[2]::numeric AS taux_tva + FROM + ( + SELECT CPT_CODE, ECR_TVA_TAUX, count(*) AS nb + FROM prod_web100t2.CPT_ECRITURE + JOIN prod_web100t2.CPT_COMPTES ON CPT_OID = ECR_COMPTE + WHERE ECR_TYPE LIKE 'PRODUIT%' + GROUP BY 1,2 + ) subview + GROUP BY 1 + ORDER BY 1 + ) subview + WHERE t_compte.code = CPT_CODE AND + subview.taux_tva <> 0 AND + subview.taux_tva <> 0 AND + t_compte.taux_tva = 0 + ; + + DROP TABLE IF EXISTS w_CPT_OP_LINK_source_agg; + CREATE TEMP TABLE w_CPT_OP_LINK_source_agg AS + SELECT LNK_OPERATION, + LNK_MASTER_OP + FROM w_CPT_OP_LINK_source + ; + + CREATE INDEX w_CPT_OP_LINK_source_agg_ik_LNK_MASTER_OP + ON w_CPT_OP_LINK_source_agg + USING btree + (LNK_MASTER_OP) + ; + + + DROP TABLE IF EXISTS w_CPT_OP_LINK_source; + + ]]> + + + + + + + + + + + '' THEN FLD_NOM ELSE TRIM(REPLACE(SGN_NMCL_DATA_COR.ND_LIB, FLD_PRENOM, '')) END || ' '|| FLD_PRENOM AS NMCL_CORRESPONDANT_OID2, + NULL::bigint[] AS COR_ID_array, + SGN_NMCL_DATA_COR.ND_CODE::text, + CASE WHEN FLD_NOM <> '' THEN trim(FLD_NOM) ELSE TRIM(REPLACE(SGN_NMCL_DATA_COR.ND_LIB, FLD_PRENOM, ''))::text END AS FLD_NOM, + FLD_PRENOM::text, + FLD_CODEADELI::text, + FLD_SPECIALITE, + FLD_CODERPPS, + COALESCE(SUBSTR(SGN_NMCL_DATA_SPE.ND_CODE,1,10),'')::text AS FLD_SPECIALITE_CODE, + row_number() OVER (PARTITION BY UPPER(CASE WHEN FLD_NOM <> '' THEN trim(FLD_NOM) ELSE TRIM(REPLACE(SGN_NMCL_DATA_COR.ND_LIB, FLD_PRENOM, '')) END), UPPER(trim(FLD_PRENOM)) ORDER BY MWS_NMCL_CORRESPONDANT.OID) AS rang, + 0::bigint AS specialite_id, + 0::bigint AS medecin_traitant_id + FROM prod_web100t2.MWS_NMCL_CORRESPONDANT + JOIN prod_web100t2.SGN_NMCL_DATA SGN_NMCL_DATA_COR ON SGN_NMCL_DATA_COR.ND_INVARIANT_OID = MWS_NMCL_CORRESPONDANT.OID + JOIN prod_web100t2.SGN_NMCLS SGN_NMCLS_COR ON SGN_NMCL_DATA_COR.ND_NMCL_OID = SGN_NMCLS_COR.NMCL_OID AND SGN_NMCLS_COR.NMCL_IDENT = 'CORRESPONDANT' + LEFT JOIN prod_web100t2.SGN_NMCL_DATA SGN_NMCL_DATA_SPE ON SGN_NMCL_DATA_SPE.ND_INVARIANT_OID = MWS_NMCL_CORRESPONDANT.FLD_SPECIALITE + LEFT JOIN prod_web100t2.SGN_NMCLS SGN_NMCLS_SPE ON SGN_NMCL_DATA_SPE.ND_NMCL_OID = SGN_NMCLS_SPE.NMCL_OID AND SGN_NMCLS_SPE.NMCL_IDENT = 'SPECIALITE' + WHERE FLD_NOM <> '' OR SGN_NMCL_DATA_COR.ND_LIB <> '' + ; + + ANALYSE w_CORRESPONDANT + ; + + UPDATE w_CORRESPONDANT + SET COR_ID_array = subview.COR_ID_array + FROM + ( + SELECT UPPER(trim(COR_NOM)) AS COR_NOM, UPPER(trim(COR_PRENOM)) AS COR_PRENOM, base.cti_array_accum(COR_ID) AS COR_ID_array + FROM prod_web100t2.CORRESPONDANTS + GROUP BY 1,2 + ) subview + WHERE COR_NOM ILIKE FLD_NOM AND + COR_PRENOM ILIKE FLD_PRENOM AND + rang = 1 + ; + + DROP TABLE IF EXISTS w_CORRESPONDANTS_ok; + CREATE TEMP TABLE w_CORRESPONDANTS_ok AS + SELECT unnest(COR_ID_array) AS COR_ID_ok + FROM w_CORRESPONDANT + WHERE rang = 1 + GROUP BY 1 + ; + + INSERT INTO w_CORRESPONDANT + SELECT + MAX('OLDCOR'::text || COR_ID) AS NMCL_CORRESPONDANT_OID, + MAX(CASE WHEN COR_CODE <> '' THEN COR_CODE ELSE COR_NOM || ' '|| COR_PRENOM END) AS NMCL_CORRESPONDANT_OID2, + base.cti_array_accum(COR_ID) AS COR_ID_array, + MAX(CASE WHEN COR_CODE <> '' THEN COR_CODE ELSE COR_NOM || ' '|| COR_PRENOM END) AS ND_CODE, + trim(COR_NOM) AS FLD_NOM, + trim(COR_PRENOM) AS FLD_PRENOM, + MAX(COR_ADELI) AS COR_ADELI, + 0::numeric AS FLD_SPECIALITE, + MAX(COR_RPPS) AS FLD_CODERPPS, + ''::text AS FLD_SPECIALITE_CODE, + 1::numeric AS rang, + 0::bigint AS specialite_id, + 0::bigint AS medecin_traitant_id + FROM prod_web100t2.CORRESPONDANTS + LEFT JOIN w_CORRESPONDANTS_ok ON COR_ID = COR_ID_ok + WHERE COR_NOM <> '' AND + COR_ID_ok IS NULL + GROUP BY 5,6 + ; + + UPDATE w_CORRESPONDANT + SET specialite_id = t_specialites_medecin.oid + FROM base.t_specialites_medecin + WHERE FLD_SPECIALITE_CODE <> '' AND + t_specialites_medecin.code = (FLD_SPECIALITE_CODE||'..') AND + rang = 1 + ; + UPDATE w_CORRESPONDANT + SET specialite_id = t_specialites_medecin.oid + FROM base.t_specialites_medecin + WHERE FLD_SPECIALITE_CODE <> '' AND + specialite_id = 0 AND + t_specialites_medecin.code = (FLD_SPECIALITE_CODE)AND + rang = 1 + ; + + UPDATE activite[PX].t_medecins_traitants_administratifs SET + code_original = w_CORRESPONDANT.NMCL_CORRESPONDANT_OID + FROM w_CORRESPONDANT + LEFT JOIN activite[PX].t_medecins_traitants_administratifs t_medecins_traitants_administratifs_2 ON t_medecins_traitants_administratifs_2.code_original = NMCL_CORRESPONDANT_OID + WHERE t_medecins_traitants_administratifs_2.code_original IS NULL AND + t_medecins_traitants_administratifs.code_original = NMCL_CORRESPONDANT_OID2 AND + t_medecins_traitants_administratifs.code_original <> w_CORRESPONDANT.NMCL_CORRESPONDANT_OID + ; + + UPDATE activite[PX].t_medecins_traitants_administratifs SET + code = w_CORRESPONDANT.ND_CODE, + nom = w_CORRESPONDANT.FLD_NOM, + prenom = w_CORRESPONDANT.FLD_PRENOM, + no_rpps = CASE WHEN FLD_CODERPPS <> '' AND length(w_CORRESPONDANT.FLD_CODERPPS) = 11 THEN FLD_CODERPPS ELSE no_rpps END + FROM w_CORRESPONDANT + WHERE code_original = NMCL_CORRESPONDANT_OID AND + ( + code IS DISTINCT FROM w_CORRESPONDANT.ND_CODE OR + nom IS DISTINCT FROM w_CORRESPONDANT.FLD_NOM OR + prenom IS DISTINCT FROM w_CORRESPONDANT.FLD_PRENOM OR + no_rpps IS DISTINCT FROM w_CORRESPONDANT.FLD_CODERPPS AND w_CORRESPONDANT.FLD_CODERPPS <> '' AND length(w_CORRESPONDANT.FLD_CODERPPS) = 11 + ) + ; + + INSERT INTO activite[PX].t_medecins_traitants_administratifs(code_original, code, nom, prenom, specialite_id, medecin_id) + SELECT NMCL_CORRESPONDANT_OID, NMCL_CORRESPONDANT_OID, min(FLD_NOM), min(FLD_PRENOM),min(COALESCE(t_specialites_medecin.oid,0)), 0 + FROM w_CORRESPONDANT + LEFT JOIN base.t_specialites_medecin ON (FLD_SPECIALITE::bigint = t_specialites_medecin.code_original) + WHERE rang = 1 AND + NMCL_CORRESPONDANT_OID NOT IN (SELECT code_original FROM activite[PX].t_medecins_traitants_administratifs) + GROUP BY 1, 2 + ; + + UPDATE w_CORRESPONDANT + SET medecin_traitant_id = t_medecins_traitants_administratifs.oid + FROM activite[PX].t_medecins_traitants_administratifs + WHERE t_medecins_traitants_administratifs.code_original = NMCL_CORRESPONDANT_OID + ; + + UPDATE w_CORRESPONDANT + SET medecin_traitant_id = t_medecins_traitants_administratifs.oid + FROM w_CORRESPONDANT w_CORRESPONDANT1 + JOIN activite[PX].t_medecins_traitants_administratifs ON + w_CORRESPONDANT1.rang = 1 AND + t_medecins_traitants_administratifs.code_original = w_CORRESPONDANT1.NMCL_CORRESPONDANT_OID + WHERE upper(w_CORRESPONDANT.FLD_NOM) = upper(w_CORRESPONDANT1.FLD_NOM) AND + upper(w_CORRESPONDANT.FLD_PRENOM) = upper(w_CORRESPONDANT1.FLD_PRENOM) AND + w_CORRESPONDANT.rang > 1 + ; + + + DROP TABLE IF EXISTS w_sejours; + CREATE TEMP TABLE w_sejours AS + SELECT no_sejour, + date_entree, + p_sejours.no_patient, + p_patients.nom, + ''::text AS no_patient_web100t, + ''::text AS nom_web100t, + 0::numeric AS PAT_MED_TRAITANT, + 0::bigint AS medecin_traitant_id + FROM activite[PX].p_sejours + JOIN activite[PX].p_patients ON p_sejours.no_patient = p_patients.no_patient + ; + + + + ANALYSE w_sejours + ; + + UPDATE w_sejours + SET no_patient_web100t = PAT_IPP, nom_web100T = PAT_NOM, PAT_MED_TRAITANT = PATIENTS.PAT_MED_TRAITANT + FROM prod_web100t2.PATIENTS + WHERE lpad(no_patient,10,'0') = lpad(PAT_IPP,10,'0') AND PATIENTS.PAT_MED_TRAITANT <> 0 + ; + + ANALYSE w_sejours + ; + + UPDATE w_sejours + SET medecin_traitant_id = w_CORRESPONDANT.medecin_traitant_id + FROM w_CORRESPONDANT + WHERE PAT_MED_TRAITANT = NMCL_CORRESPONDANT_OID + ; + + DROP TABLE IF EXISTS w_CORRESPONDANTS_ok; + CREATE TEMP TABLE w_CORRESPONDANTS_ok AS + SELECT unnest(COR_ID_array) AS COR_ID_ok, MAX(medecin_traitant_id) AS medecin_traitant_id + FROM w_CORRESPONDANT + WHERE rang = 1 AND + medecin_traitant_id <> 0 + GROUP BY 1 + ; + + UPDATE w_sejours + SET medecin_traitant_id = w_CORRESPONDANTS_ok.medecin_traitant_id + FROM w_CORRESPONDANTS_ok + WHERE w_sejours.medecin_traitant_id = 0 AND + PAT_MED_TRAITANT = COR_ID_ok + ; + + + UPDATE activite[PX].p_sejours + SET medecin_traitant_id = w_sejours.medecin_traitant_id + FROM w_sejours + WHERE p_sejours.no_sejour = w_sejours.no_sejour AND + w_sejours.medecin_traitant_id <> 0 AND + p_sejours.medecin_traitant_id <> w_sejours.medecin_traitant_id + ; + + + -- ajout des coordonnées par séjour + INSERT INTO activite[PX].p_coordonnees_patient ( + sejour_id, + adresse, + code_postal_id, + commune, + telephone_fixe, + telephone_portable, + email + ) + SELECT + p_sejours.oid, + ADR_ADRESSE, + COALESCE(t_codes_postaux.oid,0), + ADR_COMMUNE, + ADR_TEL_1, + ADR_TEL_2, + ADR_EMAIL + FROM activite[PX].p_sejours + LEFT JOIN prod_web100t2.DAT_DA w_DAT_DA ON code_original = DA_OID + LEFT JOIN prod_web100t2.PATIENTS ON w_DAT_DA.DA_PATIENT = PATIENTS.PAT_ID + LEFT JOIN prod_web100t2.ADRESSES ON PAT_ADRESSE = ADR_ID + LEFT JOIN base.t_codes_postaux ON ADR_CODE_POSTAL = t_codes_postaux.code + + ; + ]]> + + + '2099-12-31' THEN date_facture ELSE date_expedition_0 END AS date_expedition_0, + + CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END AS date_solde, + CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END AS date_solde_c, + CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '20991231' END AS date_solde_h, + CASE WHEN montant_comptabilise_0_c = 0 THEN '00010101' WHEN montant_comptabilise_0_c = montant_regle_0_c THEN date_solde_0_c ELSE '20991231' END AS date_solde_0_c, + CASE WHEN montant_comptabilise_0_h = 0 THEN '00010101' WHEN montant_comptabilise_0_h = montant_regle_0_h THEN date_solde_0_h ELSE '20991231' END AS date_solde_0_h, + CASE WHEN montant_comptabilise_1_c = 0 THEN '00010101' WHEN montant_comptabilise_1_c = montant_regle_1_c THEN date_solde_1_c ELSE '20991231' END AS date_solde_1_c, + CASE WHEN montant_comptabilise_1_h = 0 THEN '00010101' WHEN montant_comptabilise_1_h = montant_regle_1_h THEN date_solde_1_h ELSE '20991231' END AS date_solde_1_h, + CASE WHEN montant_comptabilise_2_c = 0 THEN '00010101' WHEN montant_comptabilise_2_c = montant_regle_2_c THEN date_solde_2_c ELSE '20991231' END AS date_solde_2_c, + CASE WHEN montant_comptabilise_2_h = 0 THEN '00010101' WHEN montant_comptabilise_2_h = montant_regle_2_h THEN date_solde_2_h ELSE '20991231' END AS date_solde_2_h, + CASE WHEN montant_comptabilise_22_c = 0 THEN '00010101' WHEN montant_comptabilise_22_c = montant_regle_22_c THEN date_solde_22_c ELSE '20991231' END AS date_solde_22_c, + CASE WHEN montant_comptabilise_22_h = 0 THEN '00010101' WHEN montant_comptabilise_22_h = montant_regle_22_h THEN date_solde_22_h ELSE '20991231' END AS date_solde_22_h + FROM activite[PX].p_factures; + + UPDATE w_factures SET + date_solde = GREATEST(date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h), + date_solde_c = GREATEST(date_solde_0_c, date_solde_1_c, date_solde_2_c, date_solde_22_c), + date_solde_h = GREATEST(date_solde_0_h, date_solde_1_h, date_solde_2_h, date_solde_22_h) + WHERE + date_solde IS DISTINCT FROM GREATEST(date_solde_0_c, date_solde_0_h, date_solde_1_c, date_solde_1_h, date_solde_2_c, date_solde_2_h, date_solde_22_c, date_solde_22_h) OR + date_solde_c IS DISTINCT FROM GREATEST(date_solde_0_c, date_solde_1_c, date_solde_2_c, date_solde_22_c) OR + date_solde_h IS DISTINCT FROM GREATEST(date_solde_0_h, date_solde_1_h, date_solde_2_h, date_solde_22_h) ; + + CREATE INDEX w_factures_i1 + ON w_factures + USING btree + (no_facture); + + CREATE INDEX w_factures_i2 + ON w_factures + USING btree + (no_facture_reference); + + + + DROP TABLE IF EXISTS w_factures_references_soldes; + + CREATE TEMP TABLE w_factures_references_soldes AS + SELECT + no_facture_reference, + MAX(date_solde) AS date_solde_reference, + MAX(date_solde_c) AS date_solde_reference_c, + MAX(date_solde_h) AS date_solde_reference_h, + MAX(date_solde_0_c) AS date_solde_reference_0_c, + MAX(date_solde_0_h) AS date_solde_reference_0_h, + MAX(date_solde_1_c) AS date_solde_reference_1_c, + MAX(date_solde_1_h) AS date_solde_reference_1_h, + MAX(date_solde_2_c) AS date_solde_reference_2_c, + MAX(date_solde_2_h) AS date_solde_reference_2_h, + MAX(date_solde_22_c) AS date_solde_reference_22_c, + MAX(date_solde_22_h) AS date_solde_reference_22_h + FROM w_factures + GROUP BY no_facture_reference; + + + CREATE INDEX w_factures_references_soldes_i1 + ON w_factures_references_soldes + USING btree + (no_facture_reference); + + + + + UPDATE activite[PX].p_factures + SET + date_expedition_0 = w_factures.date_expedition_0, + date_solde = w_factures.date_solde, + date_solde_c = w_factures.date_solde_c, + date_solde_h = w_factures.date_solde_h, + date_solde_0_c = w_factures.date_solde_0_c, + date_solde_0_h = w_factures.date_solde_0_h, + date_solde_1_c = w_factures.date_solde_1_c, + date_solde_1_h = w_factures.date_solde_1_h, + date_solde_2_c = w_factures.date_solde_2_c, + date_solde_2_h = w_factures.date_solde_2_h, + date_solde_22_c = w_factures.date_solde_22_c, + date_solde_22_h = w_factures.date_solde_22_h, + date_solde_reference = w_factures_references_soldes.date_solde_reference, + date_solde_reference_c = w_factures_references_soldes.date_solde_reference_c, + date_solde_reference_h = w_factures_references_soldes.date_solde_reference_h, + date_solde_reference_0_c = w_factures_references_soldes.date_solde_reference_0_c, + date_solde_reference_0_h = w_factures_references_soldes.date_solde_reference_0_h, + date_solde_reference_1_c = w_factures_references_soldes.date_solde_reference_1_c, + date_solde_reference_1_h = w_factures_references_soldes.date_solde_reference_1_h, + date_solde_reference_2_c = w_factures_references_soldes.date_solde_reference_2_c, + date_solde_reference_2_h = w_factures_references_soldes.date_solde_reference_2_h, + date_solde_reference_22_c = w_factures_references_soldes.date_solde_reference_22_c, + date_solde_reference_22_h = w_factures_references_soldes.date_solde_reference_22_h + FROM w_factures + JOIN w_factures_references_soldes ON w_factures_references_soldes.no_facture_reference = w_factures.no_facture_reference + WHERE p_factures.no_facture = w_factures.no_facture + AND ( + p_factures.date_expedition_0 IS DISTINCT FROM w_factures.date_expedition_0 OR + p_factures.date_solde IS DISTINCT FROM w_factures.date_solde OR + p_factures.date_solde_c IS DISTINCT FROM w_factures.date_solde_c OR + p_factures.date_solde_h IS DISTINCT FROM w_factures.date_solde_h OR + p_factures.date_solde_0_c IS DISTINCT FROM w_factures.date_solde_0_c OR + p_factures.date_solde_0_h IS DISTINCT FROM w_factures.date_solde_0_h OR + p_factures.date_solde_1_c IS DISTINCT FROM w_factures.date_solde_1_c OR + p_factures.date_solde_1_h IS DISTINCT FROM w_factures.date_solde_1_h OR + p_factures.date_solde_2_c IS DISTINCT FROM w_factures.date_solde_2_c OR + p_factures.date_solde_2_h IS DISTINCT FROM w_factures.date_solde_2_h OR + p_factures.date_solde_22_c IS DISTINCT FROM w_factures.date_solde_22_c OR + p_factures.date_solde_22_h IS DISTINCT FROM w_factures.date_solde_22_h OR + p_factures.date_solde_reference IS DISTINCT FROM w_factures_references_soldes.date_solde_reference OR + p_factures.date_solde_reference_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_c OR + p_factures.date_solde_reference_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_h OR + p_factures.date_solde_reference_0_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_0_c OR + p_factures.date_solde_reference_0_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_0_h OR + p_factures.date_solde_reference_1_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_1_c OR + p_factures.date_solde_reference_1_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_1_h OR + p_factures.date_solde_reference_2_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_2_c OR + p_factures.date_solde_reference_2_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_2_h OR + p_factures.date_solde_reference_22_c IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_22_c OR + p_factures.date_solde_reference_22_h IS DISTINCT FROM w_factures_references_soldes.date_solde_reference_22_h + ); + + + ]]> + + + + '2099-12-31'; + + + DROP TABLE IF EXISTS w_sejours_total; + CREATE TEMP TABLE w_sejours_total AS + SELECT + p_sejours.no_sejour AS no_sejour, + p_sejours.code_sorti, + p_sejours.date_sortie, + p_sejours.date_groupage, + p_sejours.ghs_id, + + MAX(COALESCE(p_factures.date_facture,'20991231')) AS date_facture, + MAX(COALESCE(p_factures.date_expedition,'20991231')) AS date_expedition, + MAX(COALESCE(p_factures.date_solde,'20991231')) AS date_solde, + SUM(COALESCE(p_factures.montant_facture_c,0)) AS montant_facture_c, + SUM(COALESCE(p_factures.montant_facture_h,0)) AS montant_facture_h, + SUM(COALESCE(p_factures.montant_regle_c,0)) AS montant_regle_c, + SUM(COALESCE(p_factures.montant_regle_h,0)) AS montant_regle_h, + SUM(COALESCE(CASE WHEN p_factures.type_facture <> 'P' AND p_factures.type_facture <> 'E' AND p_factures.type_facture <> 'G' THEN 1 ELSE 0 END,0)) AS nb_factures, + SUM(COALESCE(CASE WHEN p_factures.type_facture = '0' THEN 0 ELSE 1 END,0)) AS nb_factures_regularisation, + SUM(COALESCE(p_factures.nb_rejets,0)) AS nb_rejets, + + SUM(COALESCE(p_factures.montant_facture_0_c,0)) AS montant_facture_0_c, + SUM(COALESCE(p_factures.montant_facture_0_h,0)) AS montant_facture_0_h, + SUM(COALESCE(p_factures.montant_regle_0_c,0)) AS montant_regle_0_c, + SUM(COALESCE(p_factures.montant_regle_0_h,0)) AS montant_regle_0_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_0_c <> 0 OR p_factures.montant_facture_0_h <> 0) THEN p_factures.date_expedition_0 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_0, + MAX(COALESCE(CASE WHEN p_factures.date_solde_0_c < '2099-12-31' AND p_factures.date_solde_0_c > p_factures.date_solde_0_h THEN p_factures.date_solde_0_c ELSE p_factures.date_solde_0_h END,'20991231' )) AS date_solde_0, + + + SUM(COALESCE(p_factures.montant_facture_1_c,0)) AS montant_facture_1_c, + SUM(COALESCE(p_factures.montant_facture_1_h,0)) AS montant_facture_1_h, + SUM(COALESCE(p_factures.montant_regle_1_c,0)) AS montant_regle_1_c, + SUM(COALESCE(p_factures.montant_regle_1_h,0)) AS montant_regle_1_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_1_c <> 0 OR p_factures.montant_facture_1_h <> 0) THEN p_factures.date_expedition_1 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_1, + MAX(COALESCE(CASE WHEN p_factures.date_solde_1_c < '2099-12-31' AND p_factures.date_solde_1_c > p_factures.date_solde_1_h THEN p_factures.date_solde_1_c ELSE p_factures.date_solde_1_h END,'20991231' )) AS date_solde_1, + + SUM(COALESCE(p_factures.montant_facture_2_c,0)) AS montant_facture_2_c, + SUM(COALESCE(p_factures.montant_facture_2_h,0)) AS montant_facture_2_h, + SUM(COALESCE(p_factures.montant_regle_2_c,0)) AS montant_regle_2_c, + SUM(COALESCE(p_factures.montant_regle_2_h,0)) AS montant_regle_2_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_2_c <> 0 OR p_factures.montant_facture_2_h <> 0) THEN p_factures.date_expedition_2 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_2, + MAX(COALESCE(CASE WHEN p_factures.date_solde_2_c < '2099-12-31' AND p_factures.date_solde_2_c > p_factures.date_solde_2_h THEN p_factures.date_solde_2_c ELSE p_factures.date_solde_2_h END,'20991231' )) AS date_solde_2, + + SUM(COALESCE(p_factures.montant_facture_22_c,0)) AS montant_facture_22_c, + SUM(COALESCE(p_factures.montant_facture_22_h,0)) AS montant_facture_22_h, + SUM(COALESCE(p_factures.montant_regle_22_c,0)) AS montant_regle_22_c, + SUM(COALESCE(p_factures.montant_regle_22_h,0)) AS montant_regle_22_h, + MAX(COALESCE(CASE WHEN (p_factures.montant_facture_22_c <> 0 OR p_factures.montant_facture_22_h <> 0) THEN p_factures.date_expedition_22 ELSE '0001-01-01' END,'20991231' )) AS date_expedition_22, + MAX(COALESCE(CASE WHEN p_factures.date_solde_22_c < '2099-12-31' AND p_factures.date_solde_22_c > p_factures.date_solde_22_h THEN p_factures.date_solde_22_c ELSE p_factures.date_solde_22_h END,'20991231' )) AS date_solde_22 , + + + SUM(COALESCE(p_factures.montant_comptabilise_c,0)) AS montant_comptabilise_c, + SUM(COALESCE(p_factures.montant_comptabilise_h,0)) AS montant_comptabilise_h, + SUM(COALESCE(p_factures.montant_comptabilise_0_c,0)) AS montant_comptabilise_0_c, + SUM(COALESCE(p_factures.montant_comptabilise_0_h,0)) AS montant_comptabilise_0_h, + SUM(COALESCE(p_factures.montant_comptabilise_1_c,0)) AS montant_comptabilise_1_c, + SUM(COALESCE(p_factures.montant_comptabilise_1_h,0)) AS montant_comptabilise_1_h, + SUM(COALESCE(p_factures.montant_comptabilise_2_c,0)) AS montant_comptabilise_2_c, + SUM(COALESCE(p_factures.montant_comptabilise_2_h,0)) AS montant_comptabilise_2_h, + SUM(COALESCE(p_factures.montant_comptabilise_22_c,0)) AS montant_comptabilise_22_c, + SUM(COALESCE(p_factures.montant_comptabilise_22_h,0)) AS montant_comptabilise_22_h, + + SUM(COALESCE(p_factures.montant_comptabilise_budget_global_c,0)) AS montant_comptabilise_budget_global_c, + + SUM(COALESCE(p_factures.montant_facture_c_actes_inclus_dans_sejour,0)) AS montant_facture_c_actes_inclus_dans_sejour, + SUM(COALESCE(p_factures.montant_facture_h_actes_inclus_dans_sejour,0)) AS montant_facture_h_actes_inclus_dans_sejour, + + 0::numeric AS delai_groupage, + 0::numeric AS delai_facture, + 0::numeric AS delai_expedition, + 0::numeric AS delai_solde, + 0::numeric AS delai_expedition_0, + 0::numeric AS delai_solde_0, + 0::numeric AS delai_expedition_1, + 0::numeric AS delai_solde_1, + 0::numeric AS delai_expedition_2, + 0::numeric AS delai_solde_2, + 0::numeric AS delai_expedition_22, + 0::numeric AS delai_solde_22 + + FROM activite[PX].p_sejours LEFT JOIN activite[PX].p_factures ON p_sejours.no_sejour = p_factures.no_sejour AND type_facture <> 'P' + GROUP BY 1,2,3,4,5; + + + UPDATE activite[PX].p_sejours + SET date_groupage = date_facture + WHERE (date_groupage IS null OR date_groupage = '20991231' OR date_groupage = '00010101') AND + date_facture <> '2099-12-31'; + + + UPDATE w_sejours_total SET + date_groupage = CASE WHEN date_groupage > '00010101' THEN date_groupage ELSE '20991231' END, + date_facture = CASE WHEN date_facture> '00010101' THEN date_facture ELSE '20991231' END, + date_expedition = CASE WHEN date_expedition > '00010101' THEN date_expedition ELSE '20991231' END, + date_solde = CASE WHEN date_solde > '00010101' THEN date_solde ELSE '20991231' END, + date_expedition_0 = CASE WHEN date_expedition_0 > '00010101' THEN date_expedition_0 ELSE '20991231' END, + date_solde_0 = CASE WHEN date_solde_0 > '00010101' THEN date_solde_0 ELSE '20991231' END, + date_expedition_1 = CASE WHEN date_expedition_1 > '00010101' THEN date_expedition_1 ELSE '20991231' END, + date_solde_1 = CASE WHEN date_solde_1 > '00010101' THEN date_solde_1 ELSE '20991231' END, + date_expedition_2 = CASE WHEN date_expedition_2 > '00010101' THEN date_expedition_2 ELSE '20991231' END, + date_solde_2 = CASE WHEN date_solde_2 > '00010101' THEN date_solde_2 ELSE '20991231' END, + date_expedition_22 = CASE WHEN date_expedition_22 > '00010101' THEN date_expedition_22 ELSE '20991231' END, + date_solde_22 = CASE WHEN date_solde_22 > '00010101' THEN date_solde_22 ELSE '20991231' END; + + + UPDATE w_sejours_total SET + delai_groupage = CASE WHEN code_sorti = '1' AND date_groupage > date_sortie AND date_groupage < '2099-12-31' AND ghs_id <> 0 + THEN date_groupage - date_sortie ELSE 0 END, + delai_facture = CASE WHEN code_sorti = '1' AND date_facture > date_sortie AND date_facture < '2099-12-31' AND date_facture > date_sortie + THEN date_facture - date_sortie ELSE 0 END, + delai_expedition = CASE WHEN code_sorti = '1' AND date_expedition > date_sortie AND date_facture < '2099-12-31' AND date_expedition < '2099-12-31' + THEN date_expedition - date_sortie ELSE 0 END, + delai_solde = CASE WHEN code_sorti = '1' AND date_solde > date_sortie AND date_facture < '2099-12-31' AND date_solde < '2099-12-31' + THEN date_solde - date_sortie ELSE 0 END, + delai_expedition_0 = CASE WHEN code_sorti = '1' AND date_expedition_0 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_0 < '2099-12-31' + THEN date_expedition_0 - date_sortie ELSE 0 END, + delai_solde_0 = CASE WHEN code_sorti = '1'AND date_solde_0 > date_sortie AND date_facture < '2099-12-31' AND date_solde_0 < '2099-12-31' + THEN date_solde_0 - date_sortie ELSE 0 END, + delai_expedition_1 = CASE WHEN code_sorti = '1' AND date_expedition_1 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_1 < '2099-12-31' + THEN date_expedition_1 - date_sortie ELSE 0 END, + delai_solde_1 = CASE WHEN code_sorti = '1' AND date_solde_1 > date_sortie AND date_facture < '2099-12-31' AND date_solde_1 < '2099-12-31' + THEN date_solde_1 - date_sortie ELSE 0 END, + delai_expedition_2 = CASE WHEN code_sorti = '1' AND date_expedition_2 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_2 < '2099-12-31' + THEN date_expedition_2 - date_sortie ELSE 0 END, + delai_solde_2 = CASE WHEN code_sorti = '1' AND date_solde_2 > date_sortie AND date_facture < '2099-12-31' AND date_solde_2 < '2099-12-31' + THEN date_solde_2 - date_sortie ELSE 0 END, + delai_expedition_22 = CASE WHEN code_sorti = '1' AND date_expedition_22 > date_sortie AND date_facture < '2099-12-31' AND date_expedition_22 < '2099-12-31' + THEN date_expedition_22 - date_sortie ELSE 0 END, + delai_solde_22 = CASE WHEN code_sorti = '1' AND date_solde_22 > date_sortie AND date_facture < '2099-12-31' AND date_solde_22 < '2099-12-31' + THEN date_solde_22 - date_sortie ELSE 0 END; + + ALTER TABLE w_sejours_total ADD CONSTRAINT w_sejours_total_pkey PRIMARY KEY(no_sejour); + + + + UPDATE activite[PX].p_sejours SET + + date_facture = w_sejours_total.date_facture, + date_expedition = w_sejours_total.date_expedition, + date_solde = w_sejours_total.date_solde, + montant_facture_c = w_sejours_total.montant_facture_c, + montant_facture_h = w_sejours_total.montant_facture_h, + montant_regle_c = w_sejours_total.montant_regle_c, + montant_regle_h = w_sejours_total.montant_regle_h, + nb_factures = w_sejours_total.nb_factures, + nb_factures_regularisation = w_sejours_total.nb_factures_regularisation, + nb_factures_rejet = w_sejours_total.nb_rejets, + + montant_facture_0_c = w_sejours_total.montant_facture_0_c, + montant_facture_0_h = w_sejours_total.montant_facture_0_h, + montant_regle_0_c = w_sejours_total.montant_regle_0_c, + montant_regle_0_h = w_sejours_total.montant_regle_0_h, + date_expedition_0 = w_sejours_total.date_expedition_0, + date_solde_0 = w_sejours_total.date_solde_0, + + montant_facture_1_c = w_sejours_total.montant_facture_1_c, + montant_facture_1_h = w_sejours_total.montant_facture_1_h, + montant_regle_1_c = w_sejours_total.montant_regle_1_c, + montant_regle_1_h = w_sejours_total.montant_regle_1_h, + date_expedition_1 = w_sejours_total.date_expedition_1, + date_solde_1 = w_sejours_total.date_solde_1, + + montant_facture_2_c = w_sejours_total.montant_facture_2_c, + montant_facture_2_h = w_sejours_total.montant_facture_2_h, + montant_regle_2_c = w_sejours_total.montant_regle_2_c, + montant_regle_2_h = w_sejours_total.montant_regle_2_h, + date_expedition_2 = w_sejours_total.date_expedition_2, + date_solde_2 = w_sejours_total.date_solde_2, + + montant_facture_22_c = w_sejours_total.montant_facture_22_c, + montant_facture_22_h = w_sejours_total.montant_facture_22_h, + montant_regle_22_c = w_sejours_total.montant_regle_22_c, + montant_regle_22_h = w_sejours_total.montant_regle_22_h, + date_expedition_22 = w_sejours_total.date_expedition_22, + date_solde_22 = w_sejours_total.date_solde_22, + + montant_comptabilise_c = w_sejours_total.montant_comptabilise_c, + montant_comptabilise_h = w_sejours_total.montant_comptabilise_h, + montant_comptabilise_0_c = w_sejours_total.montant_comptabilise_0_c, + montant_comptabilise_0_h = w_sejours_total.montant_comptabilise_0_h, + montant_comptabilise_1_c = w_sejours_total.montant_comptabilise_1_c, + montant_comptabilise_1_h = w_sejours_total.montant_comptabilise_1_h, + montant_comptabilise_2_c = w_sejours_total.montant_comptabilise_2_c, + montant_comptabilise_2_h = w_sejours_total.montant_comptabilise_2_h, + montant_comptabilise_22_c = w_sejours_total.montant_comptabilise_22_c, + montant_comptabilise_22_h = w_sejours_total.montant_comptabilise_22_h, + + montant_comptabilise_budget_global_c = w_sejours_total.montant_comptabilise_budget_global_c, + + montant_facture_c_actes_inclus_dans_sejour = w_sejours_total.montant_facture_c_actes_inclus_dans_sejour, + montant_facture_h_actes_inclus_dans_sejour = w_sejours_total.montant_facture_h_actes_inclus_dans_sejour, + + + delai_groupage = w_sejours_total.delai_groupage, + delai_facture = w_sejours_total.delai_facture, + delai_expedition = w_sejours_total.delai_expedition, + delai_solde = w_sejours_total.delai_solde, + delai_expedition_0 = w_sejours_total.delai_expedition_0, + delai_solde_0 = w_sejours_total.delai_solde_0, + delai_expedition_1 = w_sejours_total.delai_expedition_1, + delai_solde_1 = w_sejours_total.delai_solde_1, + delai_expedition_2 = w_sejours_total.delai_expedition_2, + delai_solde_2 = w_sejours_total.delai_solde_2, + delai_expedition_22 = w_sejours_total.delai_expedition_22, + delai_solde_22 = w_sejours_total.delai_solde_22 + + FROM w_sejours_total + WHERE w_sejours_total.no_sejour = p_sejours.no_sejour + + AND ( + p_sejours.date_facture IS DISTINCT FROM w_sejours_total.date_facture OR + p_sejours.date_expedition IS DISTINCT FROM w_sejours_total.date_expedition OR + p_sejours.date_solde IS DISTINCT FROM w_sejours_total.date_solde OR + p_sejours.montant_facture_c IS DISTINCT FROM w_sejours_total.montant_facture_c OR + p_sejours.montant_facture_h IS DISTINCT FROM w_sejours_total.montant_facture_h OR + p_sejours.montant_regle_c IS DISTINCT FROM w_sejours_total.montant_regle_c OR + p_sejours.montant_regle_h IS DISTINCT FROM w_sejours_total.montant_regle_h OR + p_sejours.nb_factures IS DISTINCT FROM w_sejours_total.nb_factures OR + p_sejours.nb_factures_regularisation IS DISTINCT FROM w_sejours_total.nb_factures_regularisation OR + p_sejours.nb_factures_rejet IS DISTINCT FROM w_sejours_total.nb_rejets OR + + p_sejours.montant_facture_0_c IS DISTINCT FROM w_sejours_total.montant_facture_0_c OR + p_sejours.montant_facture_0_h IS DISTINCT FROM w_sejours_total.montant_facture_0_h OR + p_sejours.montant_regle_0_c IS DISTINCT FROM w_sejours_total.montant_regle_0_c OR + p_sejours.montant_regle_0_h IS DISTINCT FROM w_sejours_total.montant_regle_0_h OR + p_sejours.date_expedition_0 IS DISTINCT FROM w_sejours_total.date_expedition_0 OR + p_sejours.date_solde_0 IS DISTINCT FROM w_sejours_total.date_solde_0 OR + + p_sejours.montant_facture_1_c IS DISTINCT FROM w_sejours_total.montant_facture_1_c OR + p_sejours.montant_facture_1_h IS DISTINCT FROM w_sejours_total.montant_facture_1_h OR + p_sejours.montant_regle_1_c IS DISTINCT FROM w_sejours_total.montant_regle_1_c OR + p_sejours.montant_regle_1_h IS DISTINCT FROM w_sejours_total.montant_regle_1_h OR + p_sejours.date_expedition_1 IS DISTINCT FROM w_sejours_total.date_expedition_1 OR + p_sejours.date_solde_1 IS DISTINCT FROM w_sejours_total.date_solde_1 OR + + p_sejours.montant_facture_2_c IS DISTINCT FROM w_sejours_total.montant_facture_2_c OR + p_sejours.montant_facture_2_h IS DISTINCT FROM w_sejours_total.montant_facture_2_h OR + p_sejours.montant_regle_2_c IS DISTINCT FROM w_sejours_total.montant_regle_2_c OR + p_sejours.montant_regle_2_h IS DISTINCT FROM w_sejours_total.montant_regle_2_h OR + p_sejours.date_expedition_2 IS DISTINCT FROM w_sejours_total.date_expedition_2 OR + p_sejours.date_solde_2 IS DISTINCT FROM w_sejours_total.date_solde_2 OR + + p_sejours.montant_facture_22_c IS DISTINCT FROM w_sejours_total.montant_facture_22_c OR + p_sejours.montant_facture_22_h IS DISTINCT FROM w_sejours_total.montant_facture_22_h OR + p_sejours.montant_regle_22_c IS DISTINCT FROM w_sejours_total.montant_regle_22_c OR + p_sejours.montant_regle_22_h IS DISTINCT FROM w_sejours_total.montant_regle_22_h OR + p_sejours.date_expedition_22 IS DISTINCT FROM w_sejours_total.date_expedition_22 OR + p_sejours.date_solde_22 IS DISTINCT FROM w_sejours_total.date_solde_22 OR + + p_sejours.montant_comptabilise_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_c OR + p_sejours.montant_comptabilise_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_h OR + p_sejours.montant_comptabilise_0_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_c OR + p_sejours.montant_comptabilise_0_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_0_h OR + p_sejours.montant_comptabilise_1_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_c OR + p_sejours.montant_comptabilise_1_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_1_h OR + p_sejours.montant_comptabilise_2_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_c OR + p_sejours.montant_comptabilise_2_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_2_h OR + p_sejours.montant_comptabilise_22_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_c OR + p_sejours.montant_comptabilise_22_h IS DISTINCT FROM w_sejours_total.montant_comptabilise_22_h OR + + p_sejours.montant_comptabilise_budget_global_c IS DISTINCT FROM w_sejours_total.montant_comptabilise_budget_global_c OR + + p_sejours.montant_facture_c_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_c_actes_inclus_dans_sejour OR + p_sejours.montant_facture_h_actes_inclus_dans_sejour IS DISTINCT FROM w_sejours_total.montant_facture_h_actes_inclus_dans_sejour OR + + p_sejours.delai_groupage IS DISTINCT FROM w_sejours_total.delai_groupage OR + p_sejours.delai_facture IS DISTINCT FROM w_sejours_total.delai_facture OR + p_sejours.delai_expedition IS DISTINCT FROM w_sejours_total.delai_expedition OR + p_sejours.delai_solde IS DISTINCT FROM w_sejours_total.delai_solde OR + p_sejours.delai_expedition_0 IS DISTINCT FROM w_sejours_total.delai_expedition_0 OR + p_sejours.delai_solde_0 IS DISTINCT FROM w_sejours_total.delai_solde_0 OR + p_sejours.delai_expedition_1 IS DISTINCT FROM w_sejours_total.delai_expedition_1 OR + p_sejours.delai_solde_1 IS DISTINCT FROM w_sejours_total.delai_solde_1 OR + p_sejours.delai_expedition_2 IS DISTINCT FROM w_sejours_total.delai_expedition_2 OR + p_sejours.delai_solde_2 IS DISTINCT FROM w_sejours_total.delai_solde_2 OR + p_sejours.delai_expedition_22 IS DISTINCT FROM w_sejours_total.delai_expedition_22 OR + p_sejours.delai_solde_22 IS DISTINCT FROM w_sejours_total.delai_solde_22 + + ); + + + ]]> + + + + + + + + + + + + + + diff --git a/import_activite/orchestration_sql.yaml b/import_activite/orchestration_sql.yaml new file mode 100644 index 0000000..2e20579 --- /dev/null +++ b/import_activite/orchestration_sql.yaml @@ -0,0 +1,33 @@ +aliases: + 'PX': '[ADMPROVIDER_PREFIX]' + 'ENV_TYPEETS': '[TYPEETS]' + 'ENV_ADM_ANNEEDEBUT': '[OPTADM_ANNEEDEBUT]' + +orchestration: + - id: "share_raz" + file: "iCTI_import_activite_SHARE.XML" + nodes: + - RAZ + + - id: "fusion_init" + file: "iCTI_import_activite_FUSION.XML" + condition: '[ADMPROVIDER_PREFIX]' + nodes: + - INIT_SI_FUSION + + - id: "provider" + file: "iCTI_import_activite_{ADMPROVIDER}.XML" + nodes: + - PARAM + - INIT + - SEJOUR + - FACTURE + - ENCOURS + - CHIFFRIER + - POST + + - id: "share_post_vacuum" + file: "iCTI_import_activite_SHARE.XML" + nodes: + - POST + - VACUUM \ No newline at end of file diff --git a/php/ACTI_getTableRecords.php b/php/ACTI_getTableRecords.php new file mode 100644 index 0000000..712d02c --- /dev/null +++ b/php/ACTI_getTableRecords.php @@ -0,0 +1,5285 @@ +"; +$httpString .= "\n"; + +if ($tableName == "t_services_facturation") { + $httpString .= getRecords_services_facturation(); +} +if ($tableName == "t_activites") { + $httpString .= getRecords_activites(); +} +if ($tableName == "t_divers") { + $httpString .= getRecords_divers(); +} +if ($tableName == "t_unites_medicales") { + $httpString .= getRecords_unites_medicales(); +} +if ($tableName == "t_unites_fonctionnelles") { + $httpString .= getRecords_unites_fonctionnelles(); +} +if ($tableName == "t_etages") { + $httpString .= getRecords_etages(); + $httpString .= getCombo_services(); + $httpString .= getCombo_finess(); +} +if ($tableName == "t_lits") { + $httpString .= getRecords_lits(); + $httpString .= getCombo_etages(); +} +if ($tableName == "t_compte") { + $httpString = $httpString . getRecords_compte(); + $httpString = $httpString . getCombo_compte_tva(); +} +if ($tableName == "t_service_rubrique") { + $httpString = $httpString . getRecords_service_rubrique(); + $httpString = $httpString . getCombo_compte(); + $httpString .= getCombo_prestations(); +} +if ($tableName == "t_service_rubrique_dotation") { + $httpString .= getRecords_service_rubrique_dotation(); + $httpString .= getCombo_services(); + $httpString .= getCombo_rubriques(); + $httpString .= getCombo_prestations(); +} +if ($tableName == "t_prestations_c") { + $httpString .= getRecords_prestations_c(); +} +if ($tableName == "t_prestations_h") { + $httpString .= getRecords_prestations_h(); +} +if ($tableName == "t_rubriques_facturation") { + $httpString .= getRecords_rubriques_facturation(); +} +if ($tableName == "t_types_tiers_payant") { + $httpString .= getRecords_types_tiers_payant(); +} +if ($tableName == "t_tiers_payant") { + $httpString .= getRecords_tiers_payant(); +} +if ($tableName == "t_ccam_regroupements") { + $httpString .= getRecords_ccam_regroupements(); +} +if ($tableName == "t_actes") { + $httpString .= getRecords_actes(); +} +if ($tableName == "t_ghs") { + $httpString .= getRecords_ghs(); +} +if ($tableName == "t_specialites_medecin") { + $httpString .= getRecords_specialites_internes_medecin(); +} +if ($tableName == "t_medecins_administratifs") { + $httpString .= getRecords_medecins_administratifs(); +} +if ($tableName == "t_medecins_traitants_administratifs") { + $httpString .= getRecords_medecins_traitants_administratifs(); +} + +if ($tableName == "t_medecins") { + $httpString .= getRecords_medecins(); + $httpString .= getList_medecins_administratifs(); + $httpString .= getCombo_specialites_internes_medecin(); +} +if ($tableName == "t_sejour") { + $httpString .= getRecords_sejour(); + if ($firstCall == "1") { + $httpString .= getCombo_medecins_administratifs(); + $httpString .= getCombo_services(); + $httpString .= getCombo_etages(); + $httpString .= getCombo_mois_encours(); + $httpString .= getArray_sejours(); + } +} + +if ($tableName == "t_budget") { + $httpString .= getRecords_budget(); + $httpString .= getCombo_indicateurs(); +} +if ($tableName == "t_budget_cle") { + $httpString .= getRecords_budget_cle(); +} +if ($tableName == "t_budget_cle_rule") { + $httpString .= getRecords_budget_cle_rule(); + $httpString .= getCombo_budget_cle(); +} +if ($tableName == "t_budget_cle_budget") { + $httpString .= getRecords_budget_cle_budget(); +} +if ($tableName == "t_expert_controle") { + if ($getOption != "getRefSettings") { + $httpString .= getRecords_expert_controle(); + } + else { + $httpString .= getRecords_expert_controle_refsettings($refPrefix); + } +} + + +if ($tableName == "t_forme_activite") { + $httpString = $httpString . getRecords_forme_activite(); +} + +if ($tableName == "t_forme_activite_rule") { + $httpString = $httpString . getRecords_forme_activite_rule(); + $httpString = $httpString . getCombo_forme_activite(); +} + +if ($tableName == "t_filiere_soin") { + $httpString = $httpString . getRecords_filiere_soin(); +} + +if ($tableName == "t_filiere_soin_rule") { + $httpString = $httpString . getRecords_filiere_soin_rule(); + $httpString = $httpString . getCombo_filiere_soin(); +} + +if ($tableName == "t_pole_rule") { + $httpString = $httpString . getRecords_pole_rule(); + $httpString = $httpString . getCombo_pole(); +} + +if ($tableName == "t_compte_produit_analytique_rule") { + $httpString = $httpString . getRecords_compte_analytique_rule(); + $httpString = $httpString . getCombo_compte(); +} + +if ($tableName == "t_calcul_encours") { + $httpString = $httpString . getRecords_calcul_encours(); +} + +if ($tableName == "t_kiwee_params") { + $httpString = $httpString . getRecords_kiwee_params(); +} + + +$httpString .= "\n"; + +$httpString = compress64($httpString); + +echo "$httpString"; + + + +function getRecords_services_facturation() { + +global $database; + + $httpString = ""; + + $sqlcmd = "SELECT t_services_facturation.oid as ser_id, + t_services_facturation.code as ser_code, + t_services_facturation.texte as ser_texte, + t_services_facturation.texte_court as ser_texte_court, + t_services_facturation.code_original as ser_code_original, + t_services_facturation.nb_lits as ser_nb_lits, + t_services_facturation.nb_cp as ser_nb_cp, + t_services_facturation.type_t2a as ser_type_t2a, + t_services_facturation.est_budget_global as ser_est_budget_global, + t_services_facturation.mode_traitement_id as mode_traitement_id, + t_modes_traitement.code as mode_traitement_code, + t_services_facturation.dmt_id as dmt_id, + t_dmt.code as dmt_code, + t_services_facturation.est_sans_mouvement as ser_est_sans_mouvement, + t_services_facturation.est_sans_facturation as ser_est_sans_facturation, + t_services_facturation.sej_sans_acte_fictif as sej_sans_acte_fictif, + t_services_facturation.avec_facturation_intermediaire as ser_avec_facturation_intermediaire, + t_services_facturation.type_sejour as ser_type_sejour, + t_services_facturation.etage_par_defaut_id as ser_etage_par_defaut, + t_services_facturation.etage_force_id as ser_etage_force_id, + t_services_facturation.finess_id as finess_id, + COALESCE(t_finess.code,''::text) as finess_code, + t_services_facturation.option_jour_ferme, + t_services_facturation.prestations_presence, + t_services_facturation.particularites_encours, + t_services_facturation.mode_calcul_journees, + t_services_facturation.activite_par_defaut_id as ser_activite_par_defaut, + t_services_facturation.activite_force_id as ser_activite_force_id, + t_services_facturation.medecin_par_defaut_id as ser_medecin_par_defaut, + t_services_facturation.medecin_force_id as ser_medecin_force_id, + subview.xmlnodes as xmlnodes + FROM activite.t_services_facturation + LEFT JOIN base.t_finess ON (finess_id = t_finess.oid) + LEFT JOIN base.t_modes_traitement ON (mode_traitement_id = t_modes_traitement.oid) + LEFT JOIN base.t_dmt ON (dmt_id = t_dmt.oid) + LEFT JOIN + ( + SELECT + service_facturation_id, + base.cti_group_concat_without_sep(xmlnode) AS xmlnodes + FROM ( + SELECT + service_facturation_id, + '' AS xmlnode + FROM activite.t_services_facturation_historique + ORDER BY service_facturation_id, date DESC + ) subview + GROUP BY service_facturation_id) subview ON subview.service_facturation_id = t_services_facturation.oid + WHERE t_services_facturation.oid > 0 + AND t_services_facturation.oid IN (SELECT DISTINCT service_facturation_id FROM activite.t_lieux) + ORDER BY t_services_facturation.code "; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = ctiFloatVal(trim($record['ser_id'])); + $code = toHTML(trim($record['ser_code'])); + $texte = toHTML(trim($record['ser_texte'])); + $texte_court = toHTML(trim($record['ser_texte_court'])); + $code_original = toHTML(trim($record['ser_code_original'])); + $nb_lits = toHTML(trim($record['ser_nb_lits'])); + $nb_cp = toHTML(trim($record['ser_nb_cp'])); + $type_t2a = toHTML(trim($record['ser_type_t2a'])); + + $est_budget_global = toHTML(trim($record['ser_est_budget_global'])); + $mode_traitement_id = trim($record['mode_traitement_id']) + 0 ; + $mode_traitement_code = toHTML(trim($record['mode_traitement_code'])) ; + $dmt_id = trim($record['dmt_id']) + 0 ; + $dmt_code = toHTML(trim($record['dmt_code'])) ; + + $est_sans_mouvement = toHTML(trim($record['ser_est_sans_mouvement'])); + $est_sans_facturation = toHTML(trim($record['ser_est_sans_facturation'])); + $sej_sans_acte_fictif = toHTML(trim($record['sej_sans_acte_fictif'])); + $avec_facturation_intermediaire = toHTML(trim($record['ser_avec_facturation_intermediaire'])); + $type_sejour = toHTML(trim($record['ser_type_sejour'])); + + $etage_par_defaut_id = ctiFloatVal(trim($record['ser_etage_par_defaut'])); + $etage_force_id = ctiFloatVal(trim($record['ser_etage_force_id'])); + + $activite_par_defaut_id = ctiFloatVal(trim($record['ser_activite_par_defaut'])); + $activite_force_id = ctiFloatVal(trim($record['ser_activite_force_id'])); + + $medecin_par_defaut_id = ctiFloatVal(trim($record['ser_medecin_par_defaut'])); + $medecin_force_id = ctiFloatVal(trim($record['ser_medecin_force_id'])); + + $finess_id = ctiFloatVal(trim($record['finess_id'])); + $finess_code = trim($record['finess_code']); + + $option_jour_ferme = toHTML(trim($record['option_jour_ferme'])); + $prestations_presence = toHTML(trim($record['prestations_presence'])); + $particularites_encours = toHTML(trim($record['particularites_encours'])); + + $mode_calcul_journees = toHTML(trim($record['mode_calcul_journees'])); + + $xmlHISTO = trim($record['xmlnodes']); + + $mtdmt = ""; + if ($mode_traitement_id > 0) { + $mtdmt = $mtdmt . $mode_traitement_code; + } + if ($dmt_id > 0) { + $mtdmt = $mtdmt . $dmt_code; + } + $mtdmt = trim($mtdmt); + + $comment = ""; + if ($type_t2a == "1") { + $comment = $comment . "PMSI MCO"; + } + if ($type_t2a == "2") { + $comment = $comment . "PMSI SSR"; + } + if ($type_t2a == "3") { + $comment = $comment . "PMSI PSY"; + } + if ($type_t2a == "4") { + $comment = $comment . "PMSI HAD"; + } + if ($est_budget_global == "1") { + $comment = $comment . " BG"; + } + if ($est_sans_mouvement == "1") { + $comment = $comment . " Sans mouvement"; + } + if ($est_sans_facturation == "1") { + $comment = $comment . " Sans facturation"; + } + if ($sej_sans_acte_fictif == "1") { + $comment = $comment . " Séjours sans acte sont fictifs"; + } + if ($mode_calcul_journees == "1") { + $comment = $comment . " JS non inclus"; + } + if ($mode_calcul_journees == "2") { + $comment = $comment . " JS inclus"; + } + $comment = trim($comment); + + $nbref = 0; + + $httpString .= + "\r\n + $xmlHISTO + \r\n"; + } + } + } + $httpString = $httpString . + getCombo_finess() . + getCombo_modes_traitement() . + getCombo_dmt() . + getCombo_etages("t_services_facturation") . + getCombo_activites("t_services_facturation") . + getCombo_medecins_administratifs("t_services_facturation") . + getCombo_unites_medicales() . + getCombo_unites_medicales_exceptions(); + + return $httpString; +} + +function getRecords_activites() { + +global $database; + + $httpString = ""; + + $sqlcmd = " SELECT + oid as act_id, + code as act_code, + texte as act_texte, + texte_court as act_texte_court, + code_original as act_code_original, + t_activites.etage_par_defaut_id as eta_default_id, + t_activites.etage_force_id as est_force_id + FROM + activite.t_activites + WHERE + oid > 0 + AND oid IN (SELECT DISTINCT activite_id FROM activite.t_lieux) + ORDER BY code "; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['act_id']; + $code = toHTML(trim($record['act_code'])); + $texte = toHTML(trim($record['act_texte'])); + $texte_court = toHTML(trim($record['act_texte_court'])); + $code_original = toHTML(trim($record['act_code_original'])); + $etage_par_defaut_id = ctiFloatVal(trim($record['eta_default_id'])); + $etage_force_id = ctiFloatVal(trim($record['est_force_id'])); + $nbref = 0; + + $httpString .= "\r\n"; + } + } + } + + $httpString .= getCombo_etages(); + + return $httpString; +} + +function getRecords_divers() { + +global $database; + + $httpString = ""; + + $sqlcmd = " SELECT + 1::bigint AS div_id, + code as div_code, + texte as div_texte, + valeur as div_valeur, + description as div_desc, + valeur2 as div_valeur2, + CASE WHEN show_info_module THEN 1 ELSE 0 END AS show_info_module + FROM activite.t_divers + ORDER BY code "; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = 1; + $code = toHTML(trim($record['div_code'])); + $texte = toHTML(trim($record['div_texte'])); + $valeur = toHTML(trim($record['div_valeur'])); + $description = toHTML(trim($record['div_desc'])); + $valeur2 = toHTML(trim($record['div_valeur2'])); + $show_info_module = toHTML(trim($record['show_info_module'])); + $nbref = 1; + + $httpString .= "\r\n"; + } + } + } + return $httpString; +} + +function getRecords_unites_medicales() { + +global $database; + + $httpString = ""; + + $sqlcmd = "SELECT + oid as um_id, + code as um_code, + texte as um_texte, + texte_court as um_texte_court, + code_original as um_code_original, + t_unites_medicales.etage_par_defaut_id as umd_etage_par_defaut, + t_unites_medicales.etage_force_id as umd_etage_force_id, + subview.xmlnodes as xmlnodes + FROM activite.t_unites_medicales + LEFT JOIN + ( + SELECT + unite_medicale_id, + base.cti_group_concat_without_sep(xmlnode) AS xmlnodes + FROM ( + SELECT + unite_medicale_id, + '' AS xmlnode + FROM activite.t_unites_medicales_historique + ORDER BY unite_medicale_id, date DESC + ) subview + GROUP BY unite_medicale_id) subview ON subview.unite_medicale_id = t_unites_medicales.oid + WHERE oid > 0 + ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['um_id']; + $code = toHTML(trim($record['um_code'])); + $texte = toHTML(trim($record['um_texte'])); + $texte_court = toHTML(trim($record['um_texte_court'])); + $code_original = toHTML(trim($record['um_code_original'])); + $etage_par_defaut_id = ctiFloatVal(trim($record['ser_etage_par_defaut'])); + $etage_force_id = ctiFloatVal(trim($record['ser_etage_force_id'])); + $xmlHISTO = trim($record['xmlnodes']); + $nbref = 0; + + $httpString .= "\r\n + > + $xmlHISTO + \r\n"; + } + } + } + + $httpString = $httpString . getCombo_etages("t_services_facturation"); + + return $httpString; +} + +function getRecords_unites_fonctionnelles() { + +global $database; + + $httpString = ""; + + $sqlcmd = " SELECT + oid as uf_id, + code as uf_code, + texte as uf_texte, + texte_court as uf_texte_court, + code_original as uf_code_original, + est_sans_facturation as uf_est_sans_facturation, + subview.xmlnodes as xmlnodes + FROM activite.t_unites_fonctionnelles + LEFT JOIN + ( + SELECT + unite_fonctionnelle_id, + base.cti_group_concat_without_sep(xmlnode) AS xmlnodes + FROM ( + SELECT + unite_fonctionnelle_id, + '' AS xmlnode + FROM activite.t_unites_fonctionnelles_historique + ORDER BY unite_fonctionnelle_id, date DESC + ) subview + GROUP BY unite_fonctionnelle_id) subview ON subview.unite_fonctionnelle_id = t_unites_fonctionnelles.oid + WHERE oid > 0 + ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['uf_id']; + $code = toHTML(trim($record['uf_code'])); + $texte = toHTML(trim($record['uf_texte'])); + $texte_court = toHTML(trim($record['uf_texte_court'])); + $code_original = toHTML(trim($record['uf_code_original'])); + $est_sans_facturation = toHTML(trim($record['uf_est_sans_facturation'])); + $xmlHISTO = trim($record['xmlnodes']); + $nbref = 0; + + $httpString .= + "\r\n + $xmlHISTO + \r\n"; + } + } + } + return $httpString; +} + +function getRecords_etages() { + +global $database; + + $httpString = ""; + + $sqlcmd = " SELECT + t_etages.oid as eta_id, + t_etages.code as eta_code, + t_etages.texte as eta_texte, + t_etages.texte_court as eta_texte_court, + t_etages.code_original as eta_code_original, + t_etages.nb_lits as eta_nb_lits, + t_etages.nb_cp as eta_nb_cp, + t_etages.service_force_id, + t_etages.est_urgence, + t_etages.finess_id as finess_id, + COALESCE(t_finess.code,''::text) as finess_code, + t_etages.remplacer_par_valeur_par_defaut, + ARRAY(SELECT code FROM activite.t_lits WHERE etage_id = t_etages.oid AND code <> '' ORDER BY code ) as lit_codes, + COALESCE(subview.xmlnodes,'') || COALESCE(subview2.xmlnodes,'') as xmlnodes + FROM activite.t_etages + LEFT JOIN base.t_finess ON (finess_id = t_finess.oid) + LEFT JOIN + ( + SELECT + etage_id, + base.cti_group_concat_without_sep(xmlnode) AS xmlnodes + FROM ( + SELECT + etage_id, + '' AS xmlnode + FROM activite.t_etages_historique + ORDER BY etage_id, date DESC + ) subview + GROUP BY etage_id) subview ON subview.etage_id = t_etages.oid + LEFT JOIN + ( + SELECT + etage_id, + base.cti_group_concat_without_sep(xmlnode) AS xmlnodes + FROM ( + SELECT + etage_id, + '' AS xmlnode + FROM activite.t_lits + WHERE code NOT LIKE '%**%' + ORDER BY etage_id, code + ) subview + GROUP BY etage_id) subview2 ON subview2.etage_id = t_etages.oid + + WHERE t_etages.oid > 0 + ORDER BY t_etages.code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + + if ($record != FALSE) { + $ok = TRUE; + + $oid = ctiFloatVal($record['eta_id']); + $code = toHTML(trim($record['eta_code'])); + $texte = toHTML(trim($record['eta_texte'])); + $texte_court = toHTML(trim($record['eta_texte_court'])); + $code_original = toHTML(trim($record['eta_code_original'])); + $nb_lits = toHTML(trim($record['eta_nb_lits'])); + $nb_cp = toHTML(trim($record['eta_nb_cp'])); + $lits = toHTML(trim($record['lit_codes'])); + $service_force_id = ctiFloatVal(trim($record['service_force_id'])); + $est_urgence = toHTML(trim($record['est_urgence'])); + $remplacer_par_valeur_par_defaut = toHTML(trim($record['remplacer_par_valeur_par_defaut'])); + $finess_id = ctiFloatVal(trim($record['finess_id'])); + $finess_code = trim($record['finess_code']); + $xmlHISTO = trim($record['xmlnodes']); + $nbref = 0; + + $lits = str_replace("{", "", $lits); + $lits = str_replace("}", "", $lits); + $lits = str_replace(",", ", ", $lits); + + $httpString .= + "\r\n + $xmlHISTO + \r\n"; + } + } + } + return $httpString; +} + +function getRecords_lits() { + +global $database; + + $httpString = ""; + $httpString_tmp = ""; + + $sqlcmd = "SELECT + COALESCE(subview.etage_id,t_etages.oid) as etage_id, + COALESCE(subview.etage_code,t_etages.code) as etage_code, + COALESCE(subview.etage_texte,t_etages.texte) as etage_texte, + t_lits.oid as lit_id, + t_lits.code as lit_code, + t_lits.texte as lit_texte, + t_lits.texte_court as lit_texte_court, + t_lits.code_original as lit_code_original, + CASE WHEN COALESCE(chambre_particuliere,'N') = 'O' THEN '1' ELSE '0' END AS est_chambre_particuliere, + COALESCE(subview.xmlnodes,'') as xmlnodes + FROM activite.t_lits + JOIN activite.t_etages ON etage_id = t_etages.oid + LEFT JOIN + ( + SELECT + lit_id, + (MAX(ARRAY[date_fin::text, etage_id::text]))[2]::bigint AS etage_id, + (MAX(ARRAY[date_fin::text, etage_code::text]))[2] AS etage_code, + (MAX(ARRAY[date_fin::text, etage_texte::text]))[2] AS etage_texte, + base.cti_group_concat_without_sep(xmlnode) AS xmlnodes + FROM ( + SELECT + lit_id, + etage_id, + t_etages.code AS etage_code, + t_etages.texte AS etage_texte, + date_debut, + date_fin, + ''::text AS xmlnode + FROM activite.t_lit_historique + JOIN activite.t_etages ON etage_id = t_etages.oid + ORDER BY lit_id, date_debut DESC + ) subview + GROUP BY lit_id) subview ON subview.lit_id = t_lits.oid + WHERE t_lits.oid > 0 + ORDER BY 2,5"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + + if ($record != FALSE) { + $ok = TRUE; + + $oid = ctiFloatVal($record['lit_id']); + $code = toHTML(trim($record['lit_code'])); + $texte = toHTML(trim($record['lit_texte'])); + $texte_court = toHTML(trim($record['lit_texte_court'])); + $code_original = toHTML(trim($record['lit_code_original'])); + $etage_id = ctiFloatVal($record['etage_id']); + $etage_code = toHTML(trim($record['etage_code'])); + $etage_texte = toHTML(trim($record['etage_texte'])); + $est_chambre_particuliere = toHTML(trim($record['est_chambre_particuliere'])); + $xmlHISTO = trim($record['xmlnodes']); + $nbref = 0; + + $httpString_tmp .= + "\r\n + $xmlHISTO + \r\n"; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + + $httpString .= $httpString_tmp; + return $httpString; +} + +function getRecords_compte() { + +global $database; + + $httpString = ""; + + $sqlcmd = "SELECT t_compte.oid, t_compte.code, t_compte.texte, t_compte.texte_court, t_compte.code_original, t_compte.compte_tva_id, t_compte.taux_tva, + CASE WHEN t_compte.taux_tva <> 0 THEN COALESCE(t_compte_tva.code::text || ' '::text || t_compte.taux_tva::text || '%'::text,''::text) ELSE ''::text END + FROM activite.t_compte + LEFT JOIN activite.t_compte t_compte_tva ON t_compte.compte_tva_id = t_compte_tva.oid + WHERE t_compte.oid > 0 + ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $code = toHTML(trim($record[1])); + $texte = toHTML(trim($record[2])); + $texte_court = toHTML(trim($record[3])); + $code_original = toHTML(trim($record[4])); + $compte_tva_id = ctiFloatVal(trim($record[5])); + $taux_tva = ctiFloatVal(trim($record[6])); + $tva_texte = toHTML(trim($record[7])); + $nbref = 0; + + $httpString = $httpString . "\r\n"; + + } + } + + + } + + return $httpString; + + + +} + +function getRecords_service_rubrique() { + +global $database; + + $httpString = ""; + + $sqlcmd = "DROP TABLE IF EXISTS w_factures_lignes_c; + CREATE TEMP TABLE w_factures_lignes_c AS + SELECT + t_lieux.service_facturation_id, + p_factures_lignes_c.rubrique_facturation_id, + count(*) AS nb_ref + FROM activite.p_factures_lignes_c + JOIN activite.t_lieux ON lieu_id = t_lieux.oid + WHERE t_lieux.service_facturation_id <> 0 AND p_factures_lignes_c.rubrique_facturation_id <> 0 + GROUP BY 1,2; + + SELECT + COALESCE(t_service_rubrique.oid,-1) AS service_rubrique_id, + t_services_facturation.code || '-' || t_rubriques_facturation.code AS service_rubrique_code, + t_services_facturation.texte || '-' || t_rubriques_facturation.texte AS service_rubrique_texte, + t_services_facturation.texte_court || '-' || t_rubriques_facturation.code AS service_rubrique_texte_court, + t_services_facturation.code || '-' || t_rubriques_facturation.code AS service_rubrique_code_original, + w_factures_lignes_c.service_facturation_id, + t_services_facturation.code || '-' || t_services_facturation.texte AS service_facturation_texte, + w_factures_lignes_c.rubrique_facturation_id, + t_rubriques_facturation.code || '-' || t_rubriques_facturation.texte AS rubrique_facturation_texte, + t_service_rubrique.est_compte_force, + COALESCE(t_compte.oid,0) AS compte_id, + COALESCE(t_compte.code || '-' || t_compte.texte,'') AS compte_texte, + COALESCE(t_prestations.oid,0) AS prestation_forcee_id, + COALESCE(t_prestations.code || '-' || t_prestations.texte,'') AS prestations_texte, + nb_ref + FROM w_factures_lignes_c + JOIN activite.t_services_facturation ON w_factures_lignes_c.service_facturation_id = t_services_facturation.oid + JOIN activite.t_rubriques_facturation ON w_factures_lignes_c.rubrique_facturation_id = t_rubriques_facturation.oid + LEFT JOIN activite.t_service_rubrique ON + w_factures_lignes_c.service_facturation_id = t_service_rubrique.service_facturation_id AND + w_factures_lignes_c.rubrique_facturation_id = t_service_rubrique.rubrique_facturation_id + LEFT JOIN activite.t_compte ON t_compte.oid = t_service_rubrique.compte_id AND t_compte.oid <> 0 + LEFT JOIN activite.t_prestations ON t_prestations.oid = t_service_rubrique.prestation_forcee_id AND t_prestations.oid <> 0 + ORDER BY 2,3"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $code = toHTML(trim($record[1])); + $texte = toHTML(trim($record[2])); + $texte_court = ""; + $code_original = ""; + $service_id = $record[5] + 0; + $service = toHTML(trim($record[6])); + $rubrique_id = $record[7] + 0; + $rubrique = toHTML(trim($record[8])); + $est_compte_force = toHTML(trim($record[9])); + $compte_id = $record[10] + 0; + $compte = toHTML(trim($record[11])); + $prestation_forcee_id = $record[12] + 0; + $prestation_forcee = toHTML(trim($record[13])); + $nbref = $record[14] + 0; + + if ($est_compte_force == "1") { + $compte = "$compte (Forcé)"; + } + + + $httpString = $httpString . "\r\n"; + + } + } + + + } + + return $httpString; + + + +} + + + +function getRecords_service_rubrique_dotation() { + +global $database; + + $httpString = ""; + + $sqlcmd = " + SELECT + t_service_rubrique_dotation.oid, + t_service_rubrique_dotation.texte, + t_service_rubrique_dotation.annee, + t_service_rubrique_dotation.montant_dotation, + COALESCE(t_services_facturation_1.code,'') || ' ' || + COALESCE(', '||t_services_facturation_2.code,'') || ' ' || + COALESCE(', '||t_services_facturation_3.code,'') || ' ' || + COALESCE(', '||t_services_facturation_4.code,'') || ' ' || + COALESCE(', '||t_services_facturation_5.code,'') AS service, + COALESCE(t_rubriques_facturation_1.code) || ' ' || + COALESCE(', '||t_rubriques_facturation_2.code,'') || ' ' || + COALESCE(', '||t_rubriques_facturation_3.code,'') || ' ' || + COALESCE(', '||t_rubriques_facturation_4.code,'') || ' ' || + COALESCE(', '||t_rubriques_facturation_5.code,'') As rubrique, + COALESCE(t_service_rubrique_dotation.service_facturation_id_array[1],0) AS service_1_id, + COALESCE(t_service_rubrique_dotation.service_facturation_id_array[2],0) AS service_2_id, + COALESCE(t_service_rubrique_dotation.service_facturation_id_array[3],0) AS service_3_id, + COALESCE(t_service_rubrique_dotation.service_facturation_id_array[4],0) AS service_4_id, + COALESCE(t_service_rubrique_dotation.service_facturation_id_array[5],0) AS service_5_id, + COALESCE(t_service_rubrique_dotation.service_facturation_id_array[6],0) AS service_6_id, + COALESCE(t_service_rubrique_dotation.service_facturation_id_array[7],0) AS service_7_id, + COALESCE(t_service_rubrique_dotation.service_facturation_id_array[8],0) AS service_8_id, + COALESCE(t_service_rubrique_dotation.service_facturation_id_array[9],0) AS service_9_id, + + COALESCE(t_service_rubrique_dotation.rubrique_facturation_id_array[1],0) AS rubrique_1_id, + COALESCE(t_service_rubrique_dotation.rubrique_facturation_id_array[2],0) AS rubrique_2_id, + COALESCE(t_service_rubrique_dotation.rubrique_facturation_id_array[3],0) AS rubrique_3_id, + COALESCE(t_service_rubrique_dotation.rubrique_facturation_id_array[4],0) AS rubrique_4_id, + COALESCE(t_service_rubrique_dotation.rubrique_facturation_id_array[5],0) AS rubrique_5_id, + COALESCE(t_service_rubrique_dotation.rubrique_facturation_id_array[6],0) AS rubrique_6_id, + COALESCE(t_service_rubrique_dotation.rubrique_facturation_id_array[7],0) AS rubrique_7_id, + COALESCE(t_service_rubrique_dotation.rubrique_facturation_id_array[8],0) AS rubrique_8_id, + COALESCE(t_service_rubrique_dotation.rubrique_facturation_id_array[9],0) AS rubrique_9_id, + COALESCE(t_service_rubrique_dotation.rubrique_facturation_id_array[10],0) AS rubrique_10_id, + + COALESCE(t_to_rubriques_facturation.code) As to_rubrique, + to_rubrique_facturation_id, + to_prestation_id + + FROM activite.t_service_rubrique_dotation + LEFT JOIN activite.t_services_facturation t_services_facturation_1 ON t_service_rubrique_dotation.service_facturation_id_array[1] = t_services_facturation_1.oid + LEFT JOIN activite.t_services_facturation t_services_facturation_2 ON t_service_rubrique_dotation.service_facturation_id_array[2] = t_services_facturation_2.oid + LEFT JOIN activite.t_services_facturation t_services_facturation_3 ON t_service_rubrique_dotation.service_facturation_id_array[3] = t_services_facturation_3.oid + LEFT JOIN activite.t_services_facturation t_services_facturation_4 ON t_service_rubrique_dotation.service_facturation_id_array[4] = t_services_facturation_4.oid + LEFT JOIN activite.t_services_facturation t_services_facturation_5 ON t_service_rubrique_dotation.service_facturation_id_array[5] = t_services_facturation_5.oid + LEFT JOIN activite.t_rubriques_facturation t_rubriques_facturation_1 ON t_service_rubrique_dotation.rubrique_facturation_id_array[1] = t_rubriques_facturation_1.oid + LEFT JOIN activite.t_rubriques_facturation t_rubriques_facturation_2 ON t_service_rubrique_dotation.rubrique_facturation_id_array[2] = t_rubriques_facturation_2.oid + LEFT JOIN activite.t_rubriques_facturation t_rubriques_facturation_3 ON t_service_rubrique_dotation.rubrique_facturation_id_array[3] = t_rubriques_facturation_3.oid + LEFT JOIN activite.t_rubriques_facturation t_rubriques_facturation_4 ON t_service_rubrique_dotation.rubrique_facturation_id_array[4] = t_rubriques_facturation_4.oid + LEFT JOIN activite.t_rubriques_facturation t_rubriques_facturation_5 ON t_service_rubrique_dotation.rubrique_facturation_id_array[5] = t_rubriques_facturation_5.oid + LEFT JOIN activite.t_rubriques_facturation t_to_rubriques_facturation ON t_service_rubrique_dotation.to_rubrique_facturation_id = t_to_rubriques_facturation.oid AND t_to_rubriques_facturation.oid <> 0 + ORDER BY 2,3"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $texte = toHTML(trim($record[1])); + $annee = $record[2] + 0; + $dotation = $record[3] + 0; + $service = toHTML(trim($record[4])); + $rubrique = toHTML(trim($record[5])); + $service_1_id = $record[6] + 0; + $service_2_id = $record[7] + 0; + $service_3_id = $record[8] + 0; + $service_4_id = $record[9] + 0; + $service_5_id = $record[10] + 0; + $service_6_id = $record[11] + 0; + $service_7_id = $record[12] + 0; + $service_8_id = $record[13] + 0; + $service_9_id = $record[14] + 0; + $rubrique_1_id = $record[15] + 0; + $rubrique_2_id = $record[16] + 0; + $rubrique_3_id = $record[17] + 0; + $rubrique_4_id = $record[18] + 0; + $rubrique_5_id = $record[19] + 0; + $rubrique_6_id = $record[20] + 0; + $rubrique_7_id = $record[21] + 0; + $rubrique_8_id = $record[22] + 0; + $rubrique_9_id = $record[23] + 0; + $rubrique_10_id = $record[24] + 0; + + $to_rubrique = toHTML(trim($record[25])); + $to_rubrique_id = $record[26] + 0; + $to_prestation_id = $record[27] + 0; + + + $httpString = $httpString . "\r\n"; + + } + } + + + } + + return $httpString; + + + +} + +function getRecords_prestations_c() { + +global $database; + + $httpString = ""; + + $sqlcmd = " SELECT + oid as presta_id, + code as preste_code, + texte as presta_texte, + texte_court as presta_texte_court, + code_original as presta_code_original, + type_valorisation_non_facture, + type_ventilation_jour, + norme as presta_norme + FROM + activite.t_prestations + WHERE + oid > 0 + AND oid IN (SELECT oid FROM activite.p_oids WHERE code_table = 'prestation_c') + ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['presta_id']; + $code = toHTML(trim($record['preste_code'])); + $texte = toHTML(trim($record['presta_texte'])); + $texte_court = toHTML(trim($record['presta_texte_court'])); + $code_original = toHTML(trim($record['presta_code_original'])); + $type_valorisation_non_facture = toHTML(trim($record['type_valorisation_non_facture'])); + $type_ventilation_jour = toHTML(trim($record['type_ventilation_jour'])); + $complement = toHTML(trim($record['presta_norme'])); + $nbref = 0; + + $httpString .= "\r\n"; + } + } + } + return $httpString; +} + +function getRecords_prestations_h() { + +global $database; + + $httpString = ""; + + $sqlcmd = " SELECT + oid as presta_id, + code as presta_code, + texte as presta_texte, + texte_court as presta_texte_court, + code_original as presta_code_original, + norme as presta_norme + FROM + activite.t_prestations + WHERE + oid > 0 + AND oid IN (SELECT oid FROM activite.p_oids WHERE code_table = 'prestation_h') + ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['presta_id']; + $code = toHTML(trim($record['presta_code'])); + $texte = toHTML(trim($record['presta_texte'])); + $texte_court = toHTML(trim($record['presta_texte_court'])); + $code_original = toHTML(trim($record['presta_code_original'])); + $complement = toHTML(trim($record['presta_norme'])); + $nbref = 0; + + $httpString .= "\r\n"; + } + } + } + return $httpString; +} + +function getRecords_rubriques_facturation() { + +global $database; + + $httpString = ""; + + $sqlcmd = " SELECT + oid as rub_id, + code as rub_code, + texte as rub_texte, + texte_court as rub_texte_court, + code_original as rub_code_original, + actes_inclus_public as rub_actes_inclus_public, + est_force_etablissement as rub_est_force_etablissement + FROM + activite.t_rubriques_facturation + WHERE + oid > 0 + AND oid IN (SELECT oid FROM activite.p_oids WHERE code_table = 'rubrique_c') + ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['rub_id']; + $code = toHTML(trim($record['rub_code'])); + $texte = toHTML(trim($record['rub_texte'])); + $texte_court = toHTML(trim($record['rub_texte_court'])); + $code_original = toHTML(trim($record['rub_code_original'])); + $actes_inclus_public = toHTML(trim($record['rub_actes_inclus_public'])); + $est_force_etablissement = toHTML(trim($record['rub_est_force_etablissement'])); + $nbref = 0; + + $httpString .= "\r\n"; + } + } + } + return $httpString; +} + +function getRecords_types_tiers_payant() { + +global $database; + + $httpString = ""; + + $sqlcmd = " SELECT + code as tp_id, + code as tp_code, + texte as tp_texte, + texte_court as tp_texte_court + FROM + activite.t_types_tiers_payant + ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['tp_id']; + $code = toHTML(trim($record['tp_code'])); + $texte = toHTML(trim($record['tp_texte'])); + $texte_court = toHTML(trim($record['tp_texte_court'])); + $nbref = 0; + + $httpString .= "\r\n"; + } + } + } + return $httpString; +} + +function getRecords_tiers_payant() { + +global $database; + + $httpString = ""; + + $httpString_tmp = ""; + + $sqlcmd = " SELECT + t_tiers_payant.oid as tp_id, + t_tiers_payant.code as tp_code, + t_tiers_payant.texte as tp_texte, + t_tiers_payant.texte_court as tp_texte_court, + t_tiers_payant.code_original as tp_code_original, + t_types_tiers_payant.texte_court as type_tp_texte_court, + COALESCE(t_tiers_payant.grand_regime_id, 0) as grand_regime_id, + CASE WHEN t_tiers_payant.grand_regime_id > 0 THEN t_grands_regimes.code || ' '::text || t_grands_regimes.texte_court ELSE '' END as grand_regime_texte + FROM + activite.t_tiers_payant + JOIN activite.t_types_tiers_payant ON t_tiers_payant.type_tiers_payant = t_types_tiers_payant.code + LEFT JOIN base.t_grands_regimes ON t_tiers_payant.grand_regime_id = t_grands_regimes.oid + WHERE + t_tiers_payant.oid > 0 AND + t_tiers_payant.oid IN (SELECT oid FROM activite.p_oids WHERE code_table = 'tiers_payant') + ORDER BY t_tiers_payant.code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['tp_id']; + $code = toHTML(trim($record['tp_code'])); + $texte = toHTML(trim($record['tp_texte'])); + $texte_court = toHTML(trim($record['tp_texte_court'])); + $code_original = toHTML(trim($record['tp_code_original'])); + $type_tiers_payant = toHTML(trim($record['type_tp_texte_court'])); + $grand_regime_id = $record['grand_regime_id']; + $grand_regime = toHTML(trim($record['grand_regime_texte'])); + $nbref = 0; + + $httpString_tmp .= "\r\n"; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + + $httpString .= $httpString_tmp; + + $httpString .= getCombo_grands_regimes(); + return $httpString; +} + +function getRecords_ccam_regroupements() { + +global $database; + + $httpString = ""; + + $sqlcmd = " SELECT + oid as ccam_id, + code as ccam_code, + texte as ccam_texte, + texte_court as ccam_texte_court + FROM base.t_ccam_regroupements + WHERE oid > 0 + ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['ccam_id']; + $code = toHTML(trim($record['ccam_code'])); + $texte = toHTML(trim($record['ccam_texte'])); + $texte_court = toHTML(trim($record['ccam_texte_court'])); + + $httpString .= "\r\n"; + } + } + } + return $httpString; +} + +function getRecords_actes() { + +global $database; + + $httpString = ""; + + $httpString_tmp = ""; + + $sqlcmd = " SELECT + t_actes.oid as act_id, + t_actes.code as act_code, + t_actes.texte as act_texte, + t_ccam_regroupements_1.code as regroupement_1, + t_ccam_regroupements_4.code as regroupement_4 + FROM + base.t_actes, + base.t_ccam_regroupements t_ccam_regroupements_1, + base.t_ccam_regroupements t_ccam_regroupements_4 + WHERE + t_actes.oid > 0 + AND t_actes.oid IN (SELECT oid FROM activite.p_oids WHERE code_table = 'acte_h') + AND ccam_regroupement_id_1 = t_ccam_regroupements_1.oid + AND ccam_regroupement_id_4 = t_ccam_regroupements_4.oid + AND nomenclature IN ('CCAM', 'NGAP') + ORDER BY t_actes.code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['act_id']; + $code = toHTML(trim($record['act_code'])); + $texte = toHTML(trim($record['act_texte'])); + $regroupement_1 = toHTML(trim($record['regroupement_1'])); + $regroupement_4 = toHTML(trim($record['regroupement_4'])); + $nbref = 0; + + $httpString_tmp .= "\r\n"; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + $httpString .= $httpString_tmp; + + return $httpString; +} + +function getRecords_ghs() { + +global $database; + + $httpString = ""; + + $httpString_tmp = ""; + + $sqlcmd = " SELECT + ghs_id, + ghs_code, + ghs_texte + FROM + activite.t_ghs_c + WHERE + ghs_id > 0 + AND ghs_id IN (SELECT oid FROM activite.p_oids WHERE code_table = 'ghs') + ORDER BY ghs_code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['ghs_id']; + $code = toHTML(trim($record['ghs_code'])); + $texte = toHTML(trim($record['ghs_texte'])); + + $httpString_tmp .= "\r\n"; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + + $httpString .= $httpString_tmp; + + return $httpString; +} + +function getRecords_specialites_internes_medecin() { + +global $database; + + $httpString = ""; + + $sqlcmd = " SELECT + oid as spe_id, + code as spe_code, + texte as spe_texte, + texte_court as spe_texte_court, + subview.count as nb_ref + FROM + base.t_specialites_medecin + LEFT JOIN + ( + SELECT specialite_id, count(*) as count + FROM base.t_medecins + GROUP BY specialite_id + ) subview ON (t_specialites_medecin.oid = subview.specialite_id) + WHERE + oid > 0 + ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['spe_id']; + $code = toHTML(trim($record['spe_code'])); + $texte = toHTML(trim($record['spe_texte'])); + $texte_court = toHTML(trim($record['spe_texte_court'])); + + $nbref = $record['nb_ref'] + 0; + + $httpString .= "\r\n"; + } + } + } + return $httpString; +} + +function getRecords_medecins_administratifs() { + +global $database; + + $httpString = ""; + + $httpString_tmp = ""; + + $sqlcmd = " SELECT + t_medecins_administratifs.oid as med_id, + t_medecins_administratifs.code as med_code, + t_medecins_administratifs.nom as med_nom, + t_medecins_administratifs.prenom as med_prenom, + t_medecins.numero_ordre as med_numero_ordre, + COALESCE(t_specialites_medecin.code || ' '::text || t_specialites_medecin.texte,'') as spe_texte, + CASE WHEN t_medecins_administratifs.medecin_id > 0 THEN t_medecins.nom || ' '::text || t_medecins.prenom || ' ('::text || t_medecins.code || ')'::text ELSE ''::text END as med_ref, + t_medecins_administratifs.code_original as med_code_original, + t_medecins_administratifs.est_medecin_salarie as med_est_medecin_salarie, + t_medecins_administratifs.kiwee_sigems_honpatcpt as med_kiwee_sigems_honpatcpt, + t_medecins_administratifs.kiwee_sigems_honpatcptdep as med_kiwee_sigems_honpatcptdep, + CASE WHEN t_medecins_administratifs.est_medecin_salarie = '1' THEN 'Salarié' ELSE '' END AS complement + FROM + activite.t_medecins_administratifs + JOIN base.t_medecins ON medecin_id = t_medecins.oid + LEFT JOIN base.t_specialites_medecin ON t_medecins.specialite_id = t_specialites_medecin.oid AND t_medecins.specialite_id <> 0 + WHERE + t_medecins_administratifs.oid > 0 AND + t_medecins_administratifs.oid IN (SELECT oid FROM activite.p_oids WHERE code_table = 'medecin_s' OR code_table = 'medecin_x') + ORDER BY t_medecins_administratifs.nom, t_medecins_administratifs.prenom"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['med_id']; + $code = toHTML(trim($record['med_code'])); + $nom = toHTML(trim($record['med_nom'])); + $prenom = toHTML(trim($record['med_prenom'])); + $no_adeli = toHTML(trim($record['med_numero_ordre'])); + $specialite = toHTML(trim($record['spe_texte'])); + $medecin_reference = toHTML(trim($record['med_ref'])); + $code_original = toHTML(trim($record['med_code_original'])); + $est_medecin_salarie = toHTML(trim($record['med_est_medecin_salarie'])); + $kiwee_sigems_honpatcpt = toHTML(trim($record['med_kiwee_sigems_honpatcpt'])); + $kiwee_sigems_honpatcptdep = toHTML(trim($record['med_kiwee_sigems_honpatcptdep'])); + $complement = toHTML(trim($record['complement'])); + $nbref = 0; + + $httpString_tmp .= "\r\n"; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + $httpString .= $httpString_tmp; + + return $httpString; +} + + +function getRecords_medecins_traitants_administratifs() { + +global $database; + + $httpString = ""; + + $httpString_tmp = ""; + + $sqlcmd = " SELECT + t_medecins_traitants_administratifs.oid as med_id, + t_medecins_traitants_administratifs.code as med_code, + t_medecins_traitants_administratifs.nom as med_nom, + t_medecins_traitants_administratifs.prenom as med_prenom, + t_medecins_traitants_administratifs.no_adeli as med_numero_ordre, + t_medecins_traitants_administratifs.code_original as med_code_original, + t_medecins_traitants_administratifs.no_rpps as no_rpps , + COALESCE(t_codes_postaux.code,'') as code_postal, + t_medecins_traitants_administratifs.ville as ville, + t_medecins_traitants_administratifs.adresse as adresse + FROM + activite.t_medecins_traitants_administratifs + LEFT JOIN base.t_codes_postaux ON code_postal_id = t_codes_postaux.oid and code_postal_id != 0 + WHERE + t_medecins_traitants_administratifs.oid > 0 AND + t_medecins_traitants_administratifs.oid IN (SELECT oid FROM activite.p_oids WHERE code_table = 'medecin_t') + ORDER BY t_medecins_traitants_administratifs.nom, t_medecins_traitants_administratifs.prenom"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['med_id']; + $code = toHTML(trim($record['med_code'])); + $nom = toHTML(trim($record['med_nom'])); + $prenom = toHTML(trim($record['med_prenom'])); + $no_adeli = toHTML(trim($record['med_numero_ordre'])); + $medecin_reference = toHTML(trim($record['med_ref'])); + $code_original = toHTML(trim($record['med_code_original'])); + $no_rpps = toHTML(trim($record['no_rpps'])); + $code_postal = toHTML(trim($record['code_postal'])); + $ville = toHTML(trim($record['ville'])); + $adresse = toHTML(trim($record['adresse'])); + $nbref = 0; + + $httpString_tmp .= "\r\n"; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + $httpString .= $httpString_tmp; + + return $httpString; +} + + +function getRecords_forme_activite() { + +global $database; + + $httpString = ""; + + $sqlcmd = " + SELECT + t_forme_activite.oid, + t_forme_activite.code, + t_forme_activite.texte, + t_forme_activite.texte_court + FROM activite.t_forme_activite + WHERE oid <> 0 + ORDER BY 2,3"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $code = toHTML(trim($record[1])); + $texte = toHTML(trim($record[2])); + $texte_court = toHTML(trim($record[3])); + $code_original = $code ; + + + $httpString = $httpString . "\r\n"; + + } + } + + + } + + return $httpString; + + + +} + + +function getRecords_forme_activite_rule() { + +global $database; + + $httpString = ""; + + $sqlcmd = "SELECT t_forme_activite_rule.oid as rule_id, + t_forme_activite_rule.code as rule_code, + t_forme_activite_rule.texte as rule_texte, + t_forme_activite_rule.priorite as rule_priorite, + t_forme_activite_rule.forme_activite_id as forme_activite_id, + t_forme_activite.code || ' '::text || t_forme_activite.texte as cle_texte, + + CASE WHEN liste_type_sejour <> '' THEN ' Typ:'::text || liste_type_sejour ELSE ''::text END || + CASE WHEN liste_specialite <> '' THEN ' Spé:'::text || liste_specialite ELSE ''::text END || + CASE WHEN liste_medecin <> '' THEN ' Med:'::text || liste_medecin ELSE ''::text END || + CASE WHEN liste_unite_fonctionnelle <> '' THEN ' UF (S):'::text || liste_unite_fonctionnelle ELSE ''::text END || + CASE WHEN liste_service <> '' THEN ' Ser (S):'::text || liste_service ELSE ''::text END || + CASE WHEN liste_etage <> '' THEN ' Eta (S):'::text || liste_etage ELSE ''::text END || + CASE WHEN liste_unite_fonctionnelle_entree <> '' THEN ' UF (E):'::text || liste_unite_fonctionnelle_entree ELSE ''::text END || + CASE WHEN liste_service_entree <> '' THEN ' Ser (E):'::text || liste_service_entree ELSE ''::text END || + CASE WHEN liste_etage_entree <> '' THEN ' Eta (E):'::text || liste_etage_entree ELSE ''::text END || + CASE WHEN liste_acte <> '' THEN ' Act:'::text || liste_acte ELSE ''::text END || + CASE WHEN liste_prestation <> '' THEN ' Presta:'::text || liste_prestation ELSE ''::text END || + CASE WHEN liste_rubrique <> '' THEN ' Rub:'::text || liste_rubrique ELSE ''::text END || + CASE WHEN liste_ghm <> '' THEN ' GHM:'::text || liste_ghm ELSE ''::text END || + CASE WHEN liste_sauf_ghm <> '' THEN ' GHMx:'::text || liste_sauf_ghm ELSE ''::text END || + CASE WHEN liste_diagnostic_principal <> '' THEN ' DP:'::text || liste_diagnostic_principal ELSE ''::text END || + CASE WHEN liste_diagnostic_relie <> '' THEN ' DR:'::text || liste_diagnostic_relie ELSE ''::text END || + CASE WHEN liste_diagnostic_associe <> '' THEN ' DA:'::text || liste_diagnostic_associe ELSE ''::text END || + CASE WHEN liste_finess <> '' THEN ' Ets:'::text || liste_finess ELSE ''::text END as rule_resume, + + liste_type_sejour, + liste_specialite, + liste_medecin, + liste_unite_fonctionnelle, + liste_etage, + liste_service, + liste_unite_fonctionnelle_entree, + liste_etage_entree, + liste_service_entree, + liste_acte, + liste_prestation, + liste_rubrique, + liste_ghm, + liste_sauf_ghm, + liste_diagnostic_principal, + liste_diagnostic_relie, + liste_diagnostic_associe, + liste_finess + FROM activite.t_forme_activite_rule + LEFT JOIN activite.t_forme_activite ON t_forme_activite_rule.forme_activite_id = t_forme_activite.oid + WHERE t_forme_activite_rule.oid > 0 + ORDER BY t_forme_activite_rule.priorite, t_forme_activite.code, t_forme_activite_rule.code "; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['rule_id']; + $code = toHTML(trim($record['rule_code'])); + $texte = toHTML(trim($record['rule_texte'])); + $priorite = toHTML(trim($record['rule_priorite'])); + $forme_activite_id = toHTML(trim($record['forme_activite_id'])); + $forme_activite_texte = toHTML(trim($record['cle_texte'])); + + $rule_resume = toHTML(trim($record['rule_resume'])); + + $liste_type_sejour = toHTML(trim($record['liste_type_sejour'])); + $liste_specialite = toHTML(trim($record['liste_specialite'])); + $liste_medecin = toHTML(trim($record['liste_medecin'])); + $liste_unite_fonctionnelle = toHTML(trim($record['liste_unite_fonctionnelle'])); + $liste_service = toHTML(trim($record['liste_service'])); + $liste_etage = toHTML(trim($record['liste_etage'])); + $liste_unite_fonctionnelle_entree = toHTML(trim($record['liste_unite_fonctionnelle_entree'])); + $liste_service_entree = toHTML(trim($record['liste_service_entree'])); + $liste_etage_entree = toHTML(trim($record['liste_etage_entree'])); + $liste_acte = toHTML(trim($record['liste_acte'])); + $liste_prestation = toHTML(trim($record['liste_prestation'])); + $liste_rubrique = toHTML(trim($record['liste_rubrique'])); + $liste_ghm = toHTML(trim($record['liste_ghm'])); + $liste_sauf_ghm = toHTML(trim($record['liste_sauf_ghm'])); + $liste_diagnostic_principal = toHTML(trim($record['liste_diagnostic_principal'])); + $liste_diagnostic_relie = toHTML(trim($record['liste_diagnostic_relie'])); + $liste_diagnostic_associe = toHTML(trim($record['liste_diagnostic_associe'])); + $liste_finess = toHTML(trim($record['liste_finess'])); + + $httpString .= "\r\n"; + } + } + } + return $httpString; +} + + + +function getRecords_filiere_soin() { + +global $database; + + $httpString = ""; + + $sqlcmd = " + SELECT + t_filiere_soin.oid, + t_filiere_soin.code, + t_filiere_soin.texte, + t_filiere_soin.texte_court + FROM activite.t_filiere_soin + WHERE oid <> 0 + ORDER BY 2,3"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $code = toHTML(trim($record[1])); + $texte = toHTML(trim($record[2])); + $texte_court = toHTML(trim($record[3])); + $code_original = $code ; + + + $httpString = $httpString . "\r\n"; + + } + } + + + } + + return $httpString; + + + +} + + +function getRecords_filiere_soin_rule() { + +global $database; + + $httpString = ""; + + $sqlcmd = "SELECT t_filiere_soin_rule.oid as rule_id, + t_filiere_soin_rule.code as rule_code, + t_filiere_soin_rule.texte as rule_texte, + t_filiere_soin_rule.priorite as rule_priorite, + t_filiere_soin_rule.filiere_soin_id as filiere_soin_id, + t_filiere_soin.code || ' '::text || t_filiere_soin.texte as cle_texte, + + CASE WHEN liste_type_sejour <> '' THEN ' Typ:'::text || liste_type_sejour ELSE ''::text END || + CASE WHEN liste_specialite <> '' THEN ' Spé:'::text || liste_specialite ELSE ''::text END || + CASE WHEN liste_medecin <> '' THEN ' Med:'::text || liste_medecin ELSE ''::text END || + CASE WHEN liste_unite_fonctionnelle <> '' THEN ' UF (S):'::text || liste_unite_fonctionnelle ELSE ''::text END || + CASE WHEN liste_service <> '' THEN ' Ser (S):'::text || liste_service ELSE ''::text END || + CASE WHEN liste_etage <> '' THEN ' Eta (S):'::text || liste_etage ELSE ''::text END || + CASE WHEN liste_unite_fonctionnelle_entree <> '' THEN ' UF (E):'::text || liste_unite_fonctionnelle_entree ELSE ''::text END || + CASE WHEN liste_service_entree <> '' THEN ' Ser (E):'::text || liste_service_entree ELSE ''::text END || + CASE WHEN liste_etage_entree <> '' THEN ' Eta (E):'::text || liste_etage_entree ELSE ''::text END || + CASE WHEN liste_acte <> '' THEN ' Act:'::text || liste_acte ELSE ''::text END || + CASE WHEN liste_prestation <> '' THEN ' Presta:'::text || liste_prestation ELSE ''::text END || + CASE WHEN liste_rubrique <> '' THEN ' Rub:'::text || liste_rubrique ELSE ''::text END || + CASE WHEN liste_ghm <> '' THEN ' GHM:'::text || liste_ghm ELSE ''::text END || + CASE WHEN liste_sauf_ghm <> '' THEN ' GHMx:'::text || liste_sauf_ghm ELSE ''::text END || + CASE WHEN liste_diagnostic_principal <> '' THEN ' DP:'::text || liste_diagnostic_principal ELSE ''::text END || + CASE WHEN liste_diagnostic_relie <> '' THEN ' DR:'::text || liste_diagnostic_relie ELSE ''::text END || + CASE WHEN liste_diagnostic_associe <> '' THEN ' DA:'::text || liste_diagnostic_associe ELSE ''::text END || + CASE WHEN liste_finess <> '' THEN ' Ets:'::text || liste_finess ELSE ''::text END as rule_resume, + + liste_type_sejour, + liste_specialite, + liste_medecin, + liste_unite_fonctionnelle, + liste_etage, + liste_service, + liste_unite_fonctionnelle_entree, + liste_etage_entree, + liste_service_entree, + liste_acte, + liste_prestation, + liste_rubrique, + liste_ghm, + liste_sauf_ghm, + liste_diagnostic_principal, + liste_diagnostic_relie, + liste_diagnostic_associe, + liste_finess + FROM activite.t_filiere_soin_rule + LEFT JOIN activite.t_filiere_soin ON t_filiere_soin_rule.filiere_soin_id = t_filiere_soin.oid + WHERE t_filiere_soin_rule.oid > 0 + ORDER BY t_filiere_soin_rule.priorite, t_filiere_soin.code, t_filiere_soin_rule.code "; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['rule_id']; + $code = toHTML(trim($record['rule_code'])); + $texte = toHTML(trim($record['rule_texte'])); + $priorite = toHTML(trim($record['rule_priorite'])); + $filiere_soin_id = toHTML(trim($record['filiere_soin_id'])); + $filiere_soin_texte = toHTML(trim($record['cle_texte'])); + + $rule_resume = toHTML(trim($record['rule_resume'])); + + $liste_type_sejour = toHTML(trim($record['liste_type_sejour'])); + $liste_specialite = toHTML(trim($record['liste_specialite'])); + $liste_medecin = toHTML(trim($record['liste_medecin'])); + $liste_unite_fonctionnelle = toHTML(trim($record['liste_unite_fonctionnelle'])); + $liste_service = toHTML(trim($record['liste_service'])); + $liste_etage = toHTML(trim($record['liste_etage'])); + $liste_unite_fonctionnelle_entree = toHTML(trim($record['liste_unite_fonctionnelle_entree'])); + $liste_service_entree = toHTML(trim($record['liste_service_entree'])); + $liste_etage_entree = toHTML(trim($record['liste_etage_entree'])); + $liste_acte = toHTML(trim($record['liste_acte'])); + $liste_prestation = toHTML(trim($record['liste_prestation'])); + $liste_rubrique = toHTML(trim($record['liste_rubrique'])); + $liste_ghm = toHTML(trim($record['liste_ghm'])); + $liste_sauf_ghm = toHTML(trim($record['liste_sauf_ghm'])); + $liste_diagnostic_principal = toHTML(trim($record['liste_diagnostic_principal'])); + $liste_diagnostic_relie = toHTML(trim($record['liste_diagnostic_relie'])); + $liste_diagnostic_associe = toHTML(trim($record['liste_diagnostic_associe'])); + $liste_finess = toHTML(trim($record['liste_finess'])); + + $httpString .= "\r\n"; + } + } + } + return $httpString; +} + + +function getRecords_pole_rule() { + +global $database; + + $httpString = ""; + + $sqlcmd = "SELECT t_pole_rule.oid as rule_id, + t_pole_rule.code as rule_code, + t_pole_rule.texte as rule_texte, + t_pole_rule.priorite as rule_priorite, + t_pole_rule.pole_id as pole_id, + t_pole.code || ' '::text || t_pole.texte as cle_texte, + + CASE WHEN liste_type_sejour <> '' THEN ' Typ:'::text || liste_type_sejour ELSE ''::text END || + CASE WHEN liste_specialite <> '' THEN ' Spé:'::text || liste_specialite ELSE ''::text END || + CASE WHEN liste_medecin <> '' THEN ' Med:'::text || liste_medecin ELSE ''::text END || + CASE WHEN liste_unite_fonctionnelle <> '' THEN ' UF:'::text || liste_unite_fonctionnelle ELSE ''::text END || + CASE WHEN liste_service <> '' THEN ' Ser:'::text || liste_service ELSE ''::text END || + CASE WHEN liste_etage <> '' THEN ' Eta:'::text || liste_etage ELSE ''::text END || + CASE WHEN liste_acte <> '' THEN ' Act:'::text || liste_acte ELSE ''::text END || + CASE WHEN liste_prestation <> '' THEN ' Presta:'::text || liste_prestation ELSE ''::text END || + CASE WHEN liste_rubrique <> '' THEN ' Rub:'::text || liste_rubrique ELSE ''::text END || + CASE WHEN liste_ghm <> '' THEN ' GHM:'::text || liste_ghm ELSE ''::text END || + CASE WHEN liste_sauf_ghm <> '' THEN ' GHMx:'::text || liste_sauf_ghm ELSE ''::text END || + CASE WHEN liste_diagnostic_principal <> '' THEN ' DP:'::text || liste_diagnostic_principal ELSE ''::text END || + CASE WHEN liste_diagnostic_relie <> '' THEN ' DR:'::text || liste_diagnostic_relie ELSE ''::text END || + CASE WHEN liste_diagnostic_associe <> '' THEN ' DA:'::text || liste_diagnostic_associe ELSE ''::text END || + CASE WHEN liste_finess <> '' THEN ' Ets:'::text || liste_finess ELSE ''::text END as rule_resume, + + liste_type_sejour, + liste_specialite, + liste_medecin, + liste_unite_fonctionnelle, + liste_etage, + liste_service, + liste_acte, + liste_prestation, + liste_rubrique, + liste_ghm, + liste_sauf_ghm, + liste_diagnostic_principal, + liste_diagnostic_relie, + liste_diagnostic_associe, + liste_finess + FROM activite.t_pole_rule + LEFT JOIN base.t_pole ON t_pole_rule.pole_id = t_pole.oid + WHERE t_pole_rule.oid > 0 + ORDER BY t_pole_rule.priorite, t_pole.code, t_pole_rule.code "; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['rule_id']; + $code = toHTML(trim($record['rule_code'])); + $texte = toHTML(trim($record['rule_texte'])); + $priorite = toHTML(trim($record['rule_priorite'])); + $pole_id = toHTML(trim($record['pole_id'])); + $pole_texte = toHTML(trim($record['cle_texte'])); + + $rule_resume = toHTML(trim($record['rule_resume'])); + + $liste_type_sejour = toHTML(trim($record['liste_type_sejour'])); + $liste_specialite = toHTML(trim($record['liste_specialite'])); + $liste_medecin = toHTML(trim($record['liste_medecin'])); + $liste_unite_fonctionnelle = toHTML(trim($record['liste_unite_fonctionnelle'])); + $liste_service = toHTML(trim($record['liste_service'])); + $liste_etage = toHTML(trim($record['liste_etage'])); + $liste_acte = toHTML(trim($record['liste_acte'])); + $liste_prestation = toHTML(trim($record['liste_prestation'])); + $liste_rubrique = toHTML(trim($record['liste_rubrique'])); + $liste_ghm = toHTML(trim($record['liste_ghm'])); + $liste_sauf_ghm = toHTML(trim($record['liste_sauf_ghm'])); + $liste_diagnostic_principal = toHTML(trim($record['liste_diagnostic_principal'])); + $liste_diagnostic_relie = toHTML(trim($record['liste_diagnostic_relie'])); + $liste_diagnostic_associe = toHTML(trim($record['liste_diagnostic_associe'])); + $liste_finess = toHTML(trim($record['liste_finess'])); + + $httpString .= "\r\n"; + } + } + } + return $httpString; +} + + +function getRecords_compte_analytique_rule() { + +global $database; + + $httpString = ""; + + $sqlcmd = "SELECT t_compte_produit_analytique_rule.oid as rule_id, + t_compte_produit_analytique_rule.code as rule_code, + t_compte_produit_analytique_rule.texte as rule_texte, + t_compte_produit_analytique_rule.priorite as rule_priorite, + t_compte_produit_analytique_rule.compte_produit_analytique_id as compte_produit_analytique_id, + COALESCE(t_compte.code || ' '::text || t_compte.texte,'') as cle_texte, + + CASE WHEN liste_type_sejour <> '' THEN ' Typ:'::text || liste_type_sejour ELSE ''::text END || + CASE WHEN liste_specialite <> '' THEN ' Spé:'::text || liste_specialite ELSE ''::text END || + CASE WHEN liste_medecin <> '' THEN ' Med:'::text || liste_medecin ELSE ''::text END || + CASE WHEN liste_ghm <> '' THEN ' GHM:'::text || liste_ghm ELSE ''::text END || + CASE WHEN liste_sauf_ghm <> '' THEN ' Sauf GHM:'::text || liste_sauf_ghm ELSE ''::text END || + CASE WHEN liste_diagnostic_principal <> '' THEN ' DP:'::text || liste_diagnostic_principal ELSE ''::text END || + CASE WHEN liste_diagnostic_relie <> '' THEN ' DR:'::text || liste_diagnostic_relie ELSE ''::text END || + CASE WHEN liste_diagnostic_associe <> '' THEN ' DA:'::text || liste_diagnostic_associe ELSE ''::text END || + CASE WHEN liste_acte <> '' THEN ' Acte:'::text || liste_acte ELSE ''::text END || + CASE WHEN liste_unite_fonctionnelle <> '' THEN ' UF:'::text || liste_unite_fonctionnelle ELSE ''::text END || + CASE WHEN liste_service <> '' THEN ' Ser:'::text || liste_service ELSE ''::text END || + CASE WHEN liste_etage <> '' THEN ' Eta:'::text || liste_etage ELSE ''::text END || + CASE WHEN liste_compte_produit <> '' THEN ' Cpt:'::text || liste_compte_produit ELSE ''::text END || + CASE WHEN liste_sauf_compte_produit <> '' THEN ' Sauf Cpt:'::text || liste_sauf_compte_produit ELSE ''::text END || + CASE WHEN liste_prestation <> '' THEN ' Presta:'::text || liste_prestation ELSE ''::text END || + CASE WHEN liste_sauf_prestation <> '' THEN ' Sauf Presta:'::text || liste_sauf_prestation ELSE ''::text END || + CASE WHEN liste_rubrique <> '' THEN ' Rub:'::text || liste_rubrique ELSE ''::text END || + CASE WHEN liste_finess <> '' THEN ' Ets:'::text || liste_finess ELSE ''::text END as rule_resume, + + liste_type_sejour, + liste_specialite, + liste_medecin, + liste_ghm, + liste_sauf_ghm, + liste_diagnostic_principal, + liste_diagnostic_relie, + liste_diagnostic_associe, + liste_acte, + liste_unite_fonctionnelle, + liste_etage, + liste_service, + liste_compte_produit, + liste_sauf_compte_produit, + liste_prestation, + liste_sauf_prestation, + liste_rubrique, + liste_finess + FROM activite.t_compte_produit_analytique_rule + LEFT JOIN activite.t_compte ON t_compte_produit_analytique_rule.compte_produit_analytique_id = t_compte.oid AND t_compte.oid > 0 + ORDER BY t_compte_produit_analytique_rule.priorite, t_compte.code, t_compte_produit_analytique_rule.code "; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['rule_id']; + $code = toHTML(trim($record['rule_code'])); + $texte = toHTML(trim($record['rule_texte'])); + $priorite = toHTML(trim($record['rule_priorite'])); + $compte_produit_analytique_id = toHTML(trim($record['compte_produit_analytique_id'])); + $compte_produit_analytique_texte = toHTML(trim($record['cle_texte'])); + + $rule_resume = toHTML(trim($record['rule_resume'])); + + $liste_type_sejour = toHTML(trim($record['liste_type_sejour'])); + $liste_specialite = toHTML(trim($record['liste_specialite'])); + $liste_medecin = toHTML(trim($record['liste_medecin'])); + $liste_ghm = toHTML(trim($record['liste_ghm'])); + $liste_sauf_ghm = toHTML(trim($record['liste_sauf_ghm'])); + $liste_diagnostic_principal = toHTML(trim($record['liste_diagnostic_principal'])); + $liste_diagnostic_relie = toHTML(trim($record['liste_diagnostic_relie'])); + $liste_diagnostic_associe = toHTML(trim($record['liste_diagnostic_associe'])); + $liste_acte = toHTML(trim($record['liste_acte'])); + $liste_unite_fonctionnelle = toHTML(trim($record['liste_unite_fonctionnelle'])); + $liste_service = toHTML(trim($record['liste_service'])); + $liste_etage = toHTML(trim($record['liste_etage'])); + $liste_compte_produit = toHTML(trim($record['liste_compte_produit'])); + $liste_sauf_compte_produit = toHTML(trim($record['liste_sauf_compte_produit'])); + $liste_prestation = toHTML(trim($record['liste_prestation'])); + $liste_sauf_prestation = toHTML(trim($record['liste_sauf_prestation'])); + $liste_rubrique = toHTML(trim($record['liste_rubrique'])); + $liste_finess = toHTML(trim($record['liste_finess'])); + + $httpString .= "\r\n"; + } + } + } + return $httpString; +} + +function getRecords_calcul_encours() { + +global $database; + + $httpString_tmp = ""; + + $sqlcmd = " + SELECT + t_calcul_encours.oid, + CASE + WHEN type_ligne LIKE 'PRESTA%' THEN '3'::text + WHEN type_ligne LIKE 'GHSNG%' THEN '4'::text + WHEN type_ligne LIKE 'PRESEJ%' THEN '5'::text + WHEN type_ligne LIKE 'FACTURE' THEN '8'::text + ELSE '9'::text END AS type_parametre, + type_ligne, + t_services_facturation.texte || '(' || t_services_facturation.code || ')' || + CASE WHEN t_unites_fonctionnelles.oid <> 0 AND t_unites_fonctionnelles.texte <> t_services_facturation.texte THEN ' UF ' || t_unites_fonctionnelles.texte ELSE '' END, + t_prestations.code || ' ' || t_prestations.texte, + t_rubriques_facturation.code || ' ' || t_rubriques_facturation.texte, + CASE WHEN coefficient_calcule > 0 THEN to_char(coefficient_calcule,'FM9999990D00') ELSE '' END, + coefficient_is_force, + CASE WHEN coefficient_is_force = '1' THEN to_char(coefficient_force,'FM9999990D00') ELSE '' END, + CASE WHEN prix_unitaire_calcule > 0 THEN to_char(prix_unitaire_calcule,'FM9999990D00') ELSE '' END, + prix_unitaire_is_force, + CASE WHEN prix_unitaire_is_force = '1' THEN to_char(prix_unitaire_force,'FM9999990D00') ELSE '' END, + t_calcul_encours.no_sejour, + p_patients.nom, + t_calcul_encours.no_facture, + ''::text AS code, + ''::text AS texte, + ''::text AS valeur, + ''::text AS description, + ''::text AS type_valorisation, + t_calcul_encours.ignorer + FROM activite.t_calcul_encours + JOIN activite.t_services_facturation ON lieu_service_id = t_services_facturation.oid + JOIN activite.t_unites_fonctionnelles ON lieu_unite_fonctionnelle_id = t_unites_fonctionnelles.oid + JOIN activite.t_prestations ON prestation_id = t_prestations.oid + JOIN activite.t_rubriques_facturation ON rubrique_facturation_id = t_rubriques_facturation.oid + LEFT JOIN activite.p_sejours ON t_calcul_encours.no_sejour = p_sejours.no_sejour AND t_calcul_encours.no_sejour <> '' + LEFT JOIN activite.p_patients ON p_patients.no_patient = p_sejours.no_patient + WHERE type_ligne LIKE 'PRESTA%' OR + type_ligne = 'GHSNG' OR + type_ligne LIKE 'PRESEJ%' OR + type_ligne = 'FACTURE' + + UNION + + SELECT + 99999::bigint AS oid, + CASE t_divers.code + WHEN 'ENCOURSNOW' THEN '0'::text + ELSE '1'::text END AS type_parametre, + 'GEN'::text AS type_ligne, + CASE t_divers.code + WHEN 'ENCOURSNOW' THEN 'GEN1'::text + WHEN 'DATEENCOURS' THEN 'GEN2'::text + WHEN 'NBSEJMIN_HISTOGHS' THEN 'GEN3'::text + WHEN 'ENCOURSGHMSANSGHS' THEN 'GEN4'::text + WHEN 'ENCOURSGHSMBB' THEN 'GEN5'::text + WHEN 'ENCOURSBORNEHAUTE' THEN 'GEN6'::text + WHEN 'ENCOURSEXHMOYEN' THEN 'GEN7'::text + WHEN 'ENCOURSVALOCP' THEN 'GEN8'::text + ELSE 'GEN9'::text || code END, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + t_divers.code AS code, + t_divers.texte AS texte, + CASE + WHEN t_divers.valeur != '' AND t_divers.code = 'ENCOURSNOW' THEN to_char(t_divers.valeur_date,'MM/YYYY') + WHEN t_divers.valeur = '' AND t_divers.code = 'ENCOURSNOW' THEN 'INACTIF' + ELSE t_divers.valeur END, + t_divers.description, + ''::text AS type_valorisation, + '0'::text AS ignorer + FROM activite.t_divers + WHERE code IN + ( + 'DATEENCOURS', + 'ENCOURSBORNEHAUTE', + 'ENCOURSEXHMOYEN', + 'ENCOURSGHMSANSGHS', + 'ENCOURSGHSMBB', + 'ENCOURSNOW', + 'ENCOURSVALOCP', + 'NBSEJMIN_HISTOGHS' + ) OR + code LIKE 'ENCOURS%' + UNION + SELECT + oid, + '2'::text type_parametre, + 'GENPRESTA'::text AS type_ligne, + ''::text, + t_prestations.code || ' ' || t_prestations.texte, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + CASE type_valorisation_non_facture + WHEN 'PJ' THEN 'Prix de journée' + WHEN 'CP' THEN 'Chambre particulière' + WHEN 'ENT' THEN 'Forfait Entrée' + WHEN '*AVGJOUSER' THEN 'Moyenne par journée de présence service' + WHEN '*SAISIE' THEN 'Uniquement prestations saisies' + ELSE '' END, + type_valorisation_non_facture, + '0'::text AS ignorer + FROM activite.t_prestations + WHERE oid IN (SELECT oid FROM activite.p_oids WHERE code_table = 'prestation_c') + UNION + SELECT + 99999::bigint AS oid, + '0'::text type_parametre, + 'GEN'::text AS type_ligne, + 'GEN0'::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + ''::text, + 'ENCOURSNEXT'::text AS code, + 'Date des prochains encours'::text AS texte, + CASE WHEN t_divers.valeur = '1' THEN to_char(LEAST(date_vente_shs,date_encours,date_fermeture),'MM/YYYY') ELSE 'INACTIF' END, + 'Date des prochains encours'::text AS description, + ''::text AS type_valorisation, + '0'::text AS ignorer + FROM activite.t_divers + JOIN ( + SELECT date(CASE WHEN EXTRACT('day' FROM now()) <= base.cti_to_number(valeur) THEN date_trunc('month', now()) - interval '1 day' ELSE date_trunc('month', now()) + interval '1 month' - interval '1 day' END) AS date_encours + FROM activite.t_divers + WHERE code = 'DATEENCOURS' + ) subview ON 1=1 + LEFT JOIN ( + SELECT valeur::date AS date_fermeture + FROM activite.t_divers + WHERE code = 'DATEFERMETURE' AND + valeur <> '' AND + valeur < to_char(now(),'YYYYMMDD') + ) subview_datefermeture ON 1=1 + JOIN + ( + SELECT date(date_trunc('month', MAX(date_vente)) + interval '2 month' - interval '1 day') AS date_vente_shs + FROM activite.p_factures + JOIN activite.p_factures_lignes_c ON p_factures.no_facture = p_factures_lignes_c.no_facture + JOIN activite.t_rubriques_facturation ON rubrique_facturation_id = t_rubriques_facturation.oid AND + t_rubriques_facturation.code_original = '111' + WHERE provider_id = 0 AND code_vente = '1' + ) subview_2 ON 1=1 + WHERE t_divers.code = 'ENCOURSACTIVE' + + ORDER BY 13,15,2,3,4,5"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $type_parametre = toHTML(trim($record[1])); + $type_ligne = toHTML(trim($record[2])); + $service = toHTML(trim($record[3])); + $prestation = toHTML(trim($record[4])); + $rubrique = toHTML(trim($record[5])); + $coefficient_calcule = toHTML(trim($record[6])); + $coefficient_is_force = toHTML(trim($record[7])); + $coefficient_force = toHTML(trim($record[8])); + $prix_unitaire_calcule = toHTML(trim($record[9])); + $prix_unitaire_is_force = toHTML(trim($record[10])); + $prix_unitaire_force = toHTML(trim($record[11])); + $sejour = toHTML(trim($record[12])); + $nom = toHTML(trim($record[13])); + $facture = toHTML(trim($record[14])); + $code = toHTML(trim($record[15])); + $texte = toHTML(trim($record[16])); + $valeur = toHTML(trim($record[17])); + $description = toHTML(trim($record[18])); + $type_valorisation = toHTML(trim($record[19])); + $ignorer = toHTML(trim($record[20])); + + + $httpString_tmp = $httpString_tmp . "\r\n"; + + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + + } + } + + $httpString .= $httpString_tmp; + + + } + + return $httpString; + + + +} + + +function getCombo_compte() { + +global $database; + + $httpString = ""; + + + $httpString = $httpString . "\r\n"; + + $httpString = $httpString . "\r\n"; + + $sqlcmd = "SELECT oid, code || ' ' || texte FROM activite.t_compte WHERE oid > 0 ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $texte = toHTML(trim($record[1])); + + $httpString = $httpString . "\r\n"; + + } + } + + + } + + $httpString = $httpString . "\r\n"; + + return $httpString; + + + +} + + +function getCombo_compte_tva() { + +global $database; + + $httpString = ""; + + + $httpString = $httpString . "\r\n"; + + $httpString = $httpString . "\r\n"; + + $sqlcmd = "SELECT oid, code::text || ' '::text || texte::text FROM activite.t_compte WHERE oid > 0 AND code LIKE '445%'::text ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $texte = toHTML(trim($record[1])); + + $httpString = $httpString . "\r\n"; + + } + } + + + } + + $httpString = $httpString . "\r\n"; + + return $httpString; + + + +} + + +function getCombo_forme_activite() { + +global $database; + + $httpString = ""; + + + $httpString = $httpString . "\r\n"; + + $sqlcmd = "SELECT oid, code::text || ' '::text || texte::text FROM activite.t_forme_activite WHERE oid > 0 ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $texte = toHTML(trim($record[1])); + + $httpString = $httpString . "\r\n"; + + } + } + + + } + + $httpString = $httpString . "\r\n"; + + return $httpString; + + + +} + + +function getCombo_filiere_soin() { + +global $database; + + $httpString = ""; + + + $httpString = $httpString . "\r\n"; + + $sqlcmd = "SELECT oid, code::text || ' '::text || texte::text FROM activite.t_filiere_soin ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $texte = toHTML(trim($record[1])); + + $httpString = $httpString . "\r\n"; + + } + } + + + } + + $httpString = $httpString . "\r\n"; + + return $httpString; + + + +} + + +function getCombo_pole() { + +global $database; + + $httpString = ""; + + + $httpString = $httpString . "\r\n"; + + $sqlcmd = "SELECT oid, code::text || ' '::text || texte::text FROM base.t_pole WHERE oid > 0 ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $texte = toHTML(trim($record[1])); + + $httpString = $httpString . "\r\n"; + + } + } + + + } + + $httpString = $httpString . "\r\n"; + + return $httpString; + + + +} + + +function getCombo_specialites_internes_medecin() { + +global $database; + + $httpString = "\r\n"; + + $sqlcmd = "SELECT oid, code || ' '::text || texte FROM base.t_specialites_medecin WHERE oid >= 0 ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $texte = toHTML(trim($record[1])); + + $httpString .= "\r\n"; + } + } + } + $httpString .= "\r\n"; + + return $httpString; +} + +function getRecords_medecins() { + +global $database; + + $httpString = ""; + + $httpString_tmp = ""; + + $sqlcmd = " SELECT + t_medecins.oid as med_id, + 'CTI' || trim(to_char(t_medecins.oid, '00000')) as med_code, + t_medecins.nom as med_nom, + t_medecins.prenom as med_prenom, + 'CTI' || trim(to_char(t_medecins.oid, '00000')) as med_code_original, + t_medecins.numero_ordre as med_numero_ordre, + t_medecins.specialite_id as spe_id, + t_specialites_medecin.code || ' ' || t_specialites_medecin.texte_court as spe_texte, + ARRAY(SELECT oid FROM activite.t_medecins_administratifs WHERE medecin_id = t_medecins.oid AND oid <> 0 ) as med_regroupes, + subview.count as nb_ref + FROM + base.t_medecins + LEFT JOIN + ( SELECT + medecin_id, count(*) as count + FROM + activite.t_medecins_administratifs + GROUP BY medecin_id + ) subview ON (t_medecins.oid = subview.medecin_id) + LEFT JOIN + base.t_specialites_medecin ON (t_medecins.specialite_id = t_specialites_medecin.oid) + WHERE + t_medecins.oid > 0 + ORDER BY t_medecins.nom, t_medecins.prenom"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['med_id']; + $code = toHTML(trim($record['med_code'])); + $nom = toHTML(trim($record['med_nom'])); + $prenom = toHTML(trim($record['med_prenom'])); + $code_original = toHTML(trim($record['med_code_original'])); + $numero_ordre = toHTML(trim($record['med_numero_ordre'])); + $specialite_interne_id = toHTML(trim($record['spe_id'])); + $specialite_interne_texte = toHTML(trim($record['spe_texte'])); + $medecins_regroupes_oids = toHTML(trim($record['med_regroupes'])); + $nbref = $record['nb_ref'] + 0; + + $medecins_regroupes_oids = str_replace("{", "", $medecins_regroupes_oids); + $medecins_regroupes_oids = str_replace("}", "", $medecins_regroupes_oids); + if ($medecins_regroupes_oids != "") { + $medecins_regroupes_oids = "," . trim($medecins_regroupes_oids) . ","; + } + else { + $medecins_regroupes_oids = ","; + } + + $httpString_tmp .= "\r\n"; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + + $httpString .= $httpString_tmp; + + return $httpString; +} + +function getRecords_sejour() { + +global $database; + + $httpString = ""; + + $sqlcmd = "SELECT + t_sejour.oid as sej_id, + t_sejour.no_sejour as sej_no_sejour, + p_patients.nom || ' ' || p_patients.prenom as pat_nom, + t_sejour.est_ignore as sej_est_ignore_code, + CASE WHEN t_sejour.est_ignore = '1' THEN 'Ignoré' ELSE '' END as sej_est_ignore_texte, + t_sejour.medecin_sejour_id as med_sej_id, + COALESCE(t_medecins_administratifs.nom || ' ' || t_medecins_administratifs.prenom || ' (' || t_medecins_administratifs.code || ')','') as med_sej_nom, + t_sejour.service_facturation_id, + COALESCE(t_services_facturation.texte || ' (' || t_services_facturation.code || ')','') as service_facturation_texte, + t_sejour.etage_id, + COALESCE(t_etages.texte || ' (' || t_etages.code || ')','') as etage_texte, + t_sejour.type_sejour, + COALESCE(t_type_sejour.texte,'') AS type_sejour_texte, + COALESCE(encours_from_date[1],'2099-12-31') AS encours_1_from_date, + COALESCE(encours_est_ignore[1],'0') AS encours_1_est_ignore, + CASE WHEN COALESCE(encours_from_date[1],'2099-12-31') <> '20991231' AND encours_est_ignore[1] = '1' + THEN '>='||to_char(encours_from_date[1],'MMYYYY') || + CASE WHEN encours_est_ignore[1] = '1' THEN ' Ignorer' ELSE '' END + ELSE '' END AS encours_texte + FROM activite.t_sejour + LEFT JOIN activite.p_sejours ON t_sejour.no_sejour = p_sejours.no_sejour + LEFT JOIN activite.p_patients ON p_sejours.no_patient = p_patients.no_patient + LEFT JOIN activite.t_medecins_administratifs ON t_sejour.medecin_sejour_id = t_medecins_administratifs.oid AND t_sejour.medecin_sejour_id <> 0 + LEFT JOIN activite.t_services_facturation ON t_sejour.service_facturation_id = t_services_facturation.oid AND t_sejour.service_facturation_id <> 0 + LEFT JOIN activite.t_etages ON t_sejour.etage_id = t_etages.oid AND t_sejour.etage_id <> 0 + LEFT JOIN activite.t_type_sejour ON t_type_sejour.code = t_sejour.type_sejour AND t_sejour.type_sejour IN ('1','2','3','4','5','6','9') + ORDER BY t_sejour.no_sejour"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = ctiFloatVal($record['sej_id']); + $code = toHTML(trim($record['sej_no_sejour'])); + $texte = toHTML(trim($record['pat_nom'])); + $est_ignore = toHTML(trim($record['sej_est_ignore_code'])); + $est_ignore_texte = toHTML(trim($record['sej_est_ignore_texte'])); + $medecin_sejour_id = ctiFloatVal($record['med_sej_id']); + $medecin_sejour_texte = toHTML(trim($record['med_sej_nom'])); + $service_facturation_id = ctiFloatVal($record['service_facturation_id']); + $service_facturation_texte = toHTML(trim($record['service_facturation_texte'])); + $etage_id = ctiFloatVal($record['etage_id']); + $etage_texte = toHTML(trim($record['etage_texte'])); + $type_sejour = ctiFloatVal($record['type_sejour']); + $type_sejour_texte = toHTML(trim($record['type_sejour_texte'])); + + $encours_texte = toHTML(trim($record['encours_texte'])); + + $encours_1_from_date = toHTML(trim($record['encours_1_from_date'])); + $encours_1_est_ignore = toHTML(trim($record['encours_1_est_ignore'])); + + $httpString .= "\r\n"; + } + } + } + return $httpString; +} + +function getRecords_budget() { + +global $database; + + $httpString = ""; + + $sqlcmd = "SELECT oid, code, texte, + to_char(date_debut,'DD/MM/YYYY'), + to_char(date_fin,'DD/MM/YYYY'), + COALESCE(xmlnodes,'') + FROM activite.t_budget + LEFT JOIN + ( + SELECT + budget_id, + base.cti_group_concat_without_sep(xmlnode) AS xmlnodes + FROM ( + SELECT + budget_id, + ''AS xmlnode + FROM activite.t_budget_indicateur + ) subview + GROUP BY 1 + ) subview ON t_budget.oid = subview.budget_id + WHERE oid > 0 + ORDER BY code "; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $code = toHTML(trim($record[1])); + $texte = toHTML(trim($record[2])); + $date_debut = toHTML(trim($record[3])); + $date_fin = toHTML(trim($record[4])); + $XMLindicateurs = $record[5]; + + $httpString .= "\r\n + $XMLindicateurs + "; + } + } + } + return $httpString; +} + +function getRecords_budget_cle() { + +global $database; + + $httpString = ""; + + $sqlcmd = "SELECT oid, code, texte, texte_court, code_original + FROM activite.t_budget_cle + WHERE oid > 0 + ORDER BY code "; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $code = toHTML(trim($record[1])); + $texte = toHTML(trim($record[2])); + $texte_court = toHTML(trim($record[3])); + $code_original = toHTML(trim($record[4])); + $nbref = 0; + + $httpString .= "\r\n"; + } + } + } + return $httpString; +} + +function getRecords_budget_cle_rule() { + +global $database; + + $httpString = ""; + + $sqlcmd = "SELECT t_budget_cle_rule.oid as rule_id, + t_budget_cle_rule.code as rule_code, + t_budget_cle_rule.texte as rule_texte, + t_budget_cle_rule.priorite as rule_priorite, + t_budget_cle_rule.budget_cle_id as cle_id, + t_budget_cle.code || ' '::text || t_budget_cle.texte as cle_texte, + + CASE WHEN liste_specialite <> '' THEN ' Spé:'::text || liste_specialite ELSE ''::text END || + CASE WHEN liste_medecin <> '' THEN ' Med:'::text || liste_medecin ELSE ''::text END || + CASE WHEN liste_service <> '' THEN ' Ser:'::text || liste_service ELSE ''::text END || + CASE WHEN liste_acte <> '' THEN ' Act:'::text || liste_acte ELSE ''::text END || + CASE WHEN liste_rubrique <> '' THEN ' Rub:'::text || liste_rubrique ELSE ''::text END || + CASE WHEN liste_ghm <> '' THEN ' GHM:'::text || liste_ghm ELSE ''::text END || + CASE WHEN liste_sauf_ghm <> '' THEN ' GHMx:'::text || liste_sauf_ghm ELSE ''::text END || + CASE WHEN liste_diagnostic_principal <> '' THEN ' DP:'::text || liste_diagnostic_principal ELSE ''::text END || + CASE WHEN liste_diagnostic_relie <> '' THEN ' DR:'::text || liste_diagnostic_relie ELSE ''::text END || + CASE WHEN liste_diagnostic_associe <> '' THEN ' DA:'::text || liste_diagnostic_associe ELSE ''::text END || + CASE WHEN liste_finess <> '' THEN ' Ets:'::text || liste_finess ELSE ''::text END as rule_resume, + + liste_specialite, + liste_medecin, + liste_service, + liste_acte, + liste_rubrique, + liste_ghm, + liste_sauf_ghm, + liste_diagnostic_principal, + liste_diagnostic_relie, + liste_diagnostic_associe, + liste_finess + FROM activite.t_budget_cle_rule + LEFT JOIN activite.t_budget_cle ON t_budget_cle_rule.budget_cle_id = t_budget_cle.oid + WHERE t_budget_cle_rule.oid > 0 + ORDER BY t_budget_cle_rule.priorite, t_budget_cle.code, t_budget_cle_rule.code "; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['rule_id']; + $code = toHTML(trim($record['rule_code'])); + $texte = toHTML(trim($record['rule_texte'])); + $priorite = toHTML(trim($record['rule_priorite'])); + $budget_cle_id = toHTML(trim($record['cle_id'])); + $budget_cle_texte = toHTML(trim($record['cle_texte'])); + + $rule_resume = toHTML(trim($record['rule_resume'])); + + $liste_specialite = toHTML(trim($record['liste_specialite'])); + $liste_medecin = toHTML(trim($record['liste_medecin'])); + $liste_service = toHTML(trim($record['liste_service'])); + $liste_acte = toHTML(trim($record['liste_acte'])); + $liste_rubrique = toHTML(trim($record['liste_rubrique'])); + $liste_ghm = toHTML(trim($record['liste_ghm'])); + $liste_sauf_ghm = toHTML(trim($record['liste_sauf_ghm'])); + $liste_diagnostic_principal = toHTML(trim($record['liste_diagnostic_principal'])); + $liste_diagnostic_relie = toHTML(trim($record['liste_diagnostic_relie'])); + $liste_diagnostic_associe = toHTML(trim($record['liste_diagnostic_associe'])); + $liste_finess = toHTML(trim($record['liste_finess'])); + + $httpString .= "\r\n"; + } + } + } + return $httpString; +} + +function getRecords_budget_cle_budget() { + +global $database; + + $httpString = ""; + + $sqlcmd = "SELECT oid, code, texte, + to_char(date_debut,'DD/MM/YYYY'), + to_char(date_fin,'DD/MM/YYYY'), + COALESCE(xmlnodes,'') + FROM activite.t_budget + LEFT JOIN + ( + + SELECT budget_id, + base.cti_group_concat_without_sep( + '' || xmlnodes || '' || chr(10) + ) AS xmlnodes + + FROM + + ( + SELECT budget_id, + budget_indicateur_id, + budget_indicateur_texte, + date_01, + date_02, + date_03, + date_04, + date_05, + date_06, + date_07, + date_08, + date_09, + date_10, + date_11, + date_12, + dateh_01, + dateh_02, + dateh_03, + dateh_04, + dateh_05, + dateh_06, + dateh_07, + dateh_08, + dateh_09, + dateh_10, + dateh_11, + dateh_12, + base.cti_group_concat_without_sep( + '' || chr(10) + ) AS xmlnodes + FROM + ( + SELECT + t_budget.oid AS budget_id, + t_budget_indicateur.oid AS budget_indicateur_id, + t_budget_indicateur.code || ' ' || t_budget_indicateur.texte AS budget_indicateur_texte, + t_budget_cle.oid AS budget_cle_id, + t_budget_cle.code || ' ' || t_budget_cle.texte AS budget_cle_texte, + SUM(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 0 AND 10 THEN t_budget_cle_budget.budget ELSE 0 END) AS budget_01, + SUM(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 30 AND 40 THEN t_budget_cle_budget.budget ELSE 0 END) AS budget_02, + SUM(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 59 AND 70 THEN t_budget_cle_budget.budget ELSE 0 END) AS budget_03, + SUM(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 90 AND 100 THEN t_budget_cle_budget.budget ELSE 0 END) AS budget_04, + SUM(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 120 AND 130 THEN t_budget_cle_budget.budget ELSE 0 END) AS budget_05, + SUM(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 150 AND 160 THEN t_budget_cle_budget.budget ELSE 0 END) AS budget_06, + SUM(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 180 AND 190 THEN t_budget_cle_budget.budget ELSE 0 END) AS budget_07, + SUM(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 210 AND 220 THEN t_budget_cle_budget.budget ELSE 0 END) AS budget_08, + SUM(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 240 AND 250 THEN t_budget_cle_budget.budget ELSE 0 END) AS budget_09, + SUM(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 270 AND 280 THEN t_budget_cle_budget.budget ELSE 0 END) AS budget_10, + SUM(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 300 AND 310 THEN t_budget_cle_budget.budget ELSE 0 END) AS budget_11, + SUM(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 330 AND 340 THEN t_budget_cle_budget.budget ELSE 0 END) AS budget_12, + + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 0 AND 10 THEN date(date_trunc('month',p_calendrier_mois.date_debut)) ELSE NULL END) AS date_01, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 30 AND 40 THEN date(date_trunc('month',p_calendrier_mois.date_debut)) ELSE NULL END) AS date_02, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 59 AND 70 THEN date(date_trunc('month',p_calendrier_mois.date_debut)) ELSE NULL END) AS date_03, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 90 AND 100 THEN date(date_trunc('month',p_calendrier_mois.date_debut)) ELSE NULL END) AS date_04, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 120 AND 130 THEN date(date_trunc('month',p_calendrier_mois.date_debut)) ELSE NULL END) AS date_05, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 150 AND 160 THEN date(date_trunc('month',p_calendrier_mois.date_debut)) ELSE NULL END) AS date_06, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 180 AND 190 THEN date(date_trunc('month',p_calendrier_mois.date_debut)) ELSE NULL END) AS date_07, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 210 AND 220 THEN date(date_trunc('month',p_calendrier_mois.date_debut)) ELSE NULL END) AS date_08, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 240 AND 250 THEN date(date_trunc('month',p_calendrier_mois.date_debut)) ELSE NULL END) AS date_09, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 270 AND 280 THEN date(date_trunc('month',p_calendrier_mois.date_debut)) ELSE NULL END) AS date_10, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 300 AND 310 THEN date(date_trunc('month',p_calendrier_mois.date_debut)) ELSE NULL END) AS date_11, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 330 AND 340 THEN date(date_trunc('month',p_calendrier_mois.date_debut)) ELSE NULL END) AS date_12, + + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 0 AND 10 THEN to_char(p_calendrier_mois.date_debut,'MM/YYYY') ELSE NULL END) AS dateh_01, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 30 AND 40 THEN to_char(p_calendrier_mois.date_debut,'MM/YYYY') ELSE NULL END) AS dateh_02, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 59 AND 70 THEN to_char(p_calendrier_mois.date_debut,'MM/YYYY') ELSE NULL END) AS dateh_03, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 90 AND 100 THEN to_char(p_calendrier_mois.date_debut,'MM/YYYY') ELSE NULL END) AS dateh_04, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 120 AND 130 THEN to_char(p_calendrier_mois.date_debut,'MM/YYYY') ELSE NULL END) AS dateh_05, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 150 AND 160 THEN to_char(p_calendrier_mois.date_debut,'MM/YYYY') ELSE NULL END) AS dateh_06, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 180 AND 190 THEN to_char(p_calendrier_mois.date_debut,'MM/YYYY') ELSE NULL END) AS dateh_07, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 210 AND 220 THEN to_char(p_calendrier_mois.date_debut,'MM/YYYY') ELSE NULL END) AS dateh_08, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 240 AND 250 THEN to_char(p_calendrier_mois.date_debut,'MM/YYYY') ELSE NULL END) AS dateh_09, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 270 AND 280 THEN to_char(p_calendrier_mois.date_debut,'MM/YYYY') ELSE NULL END) AS dateh_10, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 300 AND 310 THEN to_char(p_calendrier_mois.date_debut,'MM/YYYY') ELSE NULL END) AS dateh_11, + MAX(CASE WHEN date(date_trunc('month',p_calendrier_mois.date_fin)) - date(date_trunc('month',t_budget.date_debut)) BETWEEN 330 AND 340 THEN to_char(p_calendrier_mois.date_debut,'MM/YYYY') ELSE NULL END) AS dateh_12 + + FROM + activite.t_budget + JOIN activite.t_budget_cle ON 1=1 + JOIN activite.t_budget_indicateur ON t_budget_indicateur.budget_id = t_budget.oid + JOIN base.p_calendrier_mois ON p_calendrier_mois.date_debut BETWEEN t_budget.date_debut AND t_budget.date_fin + LEFT JOIN activite.t_budget_cle_budget ON t_budget_cle_budget.budget_id = t_budget.oid AND + t_budget_cle_budget.budget_cle_id = t_budget_cle.oid AND + t_budget_cle_budget.budget_indicateur_id = t_budget_indicateur.oid AND + date(date_trunc('month',t_budget_cle_budget.date)) = date(date_trunc('month',p_calendrier_mois.date_fin)) + GROUP BY 1,2,3,4,5 + ORDER BY 1,2,5 + ) subview + GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27 + ORDER BY 1,3 + ) subview + GROUP BY 1 + ORDER BY 1 + ) subview ON t_budget.oid = subview.budget_id + WHERE oid > 0 + ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $code = toHTML(trim($record[1])); + $texte = toHTML(trim($record[2])); + $date_debut = toHTML(trim($record[3])); + $date_fin = toHTML(trim($record[4])); + $XMLindicateurs = $record[5]; + + $httpString .= "\r\n + $XMLindicateurs + "; + } + } + } + return $httpString; +} + +function getList_medecins_administratifs() { + +global $database; + + $httpString_tmp = ""; + + $httpString = "\r\n"; + + $sqlcmd = " SELECT + t_medecins_administratifs.oid, + t_medecins_administratifs.nom || ' ' || t_medecins_administratifs.prenom || ' (' || t_medecins_administratifs.code || ')', + t_medecins.nom || ' ' || t_medecins.prenom || ' (' || CASE WHEN t_medecins.oid <> 0 THEN 'CTI' || trim(to_char(t_medecins.oid, '00000')) ELSE 'Non associé' END || ')' + FROM + activite.t_medecins_administratifs + LEFT JOIN base.t_medecins ON (t_medecins_administratifs.medecin_id = t_medecins.oid) + WHERE + t_medecins_administratifs.oid > 0 + ORDER BY t_medecins_administratifs.nom, t_medecins_administratifs.prenom "; + $result = $database->exec($sqlcmd); + + if ($result != false) { + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = toHTML(trim($record[0])); + $nom_adm = toHTML(trim($record[1])); + $nom_ref = toHTML(trim($record[2])); + + $httpString_tmp .= "\r\n"; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + + $httpString .= $httpString_tmp; + + $httpString .= "\r\n"; + + return $httpString; +} + + +function getList_medecins_traitants_administratifs() { + +global $database; + + $httpString_tmp = ""; + + $httpString = "\r\n"; + + $sqlcmd = " SELECT + t_medecins_traitants_administratifs.oid, + t_medecins_traitants_administratifs.nom || ' ' || t_medecins_traitants_administratifs.prenom || ' (' || t_medecins_traitants_administratifs.code || ')', + t_medecins.nom || ' ' || t_medecins.prenom || ' (' || CASE WHEN t_medecins.oid <> 0 THEN 'CTI' || trim(to_char(t_medecins.oid, '00000')) ELSE 'Non associé' END || ')' + FROM + activite.t_medecins_traitants_administratifs + LEFT JOIN base.t_medecins ON (t_medecins_traitants_administratifs.medecin_id = t_medecins.oid) + WHERE + t_medecins_traitants_administratifs.oid > 0 + ORDER BY t_medecins_traitants_administratifs.nom, t_medecins_traitants_administratifs.prenom "; + $result = $database->exec($sqlcmd); + + if ($result != false) { + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = toHTML(trim($record[0])); + $nom_adm = toHTML(trim($record[1])); + $nom_ref = toHTML(trim($record[2])); + + $httpString_tmp .= "\r\n"; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + + $httpString .= $httpString_tmp; + + $httpString .= "\r\n"; + + return $httpString; +} + +function getCombo_modes_traitement() { + +global $database; + + $httpString = "\r\n"; + + $httpString .= "\r\n"; + + $sqlcmd = "SELECT oid, code || ' '::text || texte FROM base.t_modes_traitement WHERE oid > 0 ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $texte = toHTML(trim($record[1])); + + $httpString .= "\r\n"; + } + } + } + + $httpString .= "\r\n"; + + return $httpString; +} + +function getCombo_finess() { + +global $database; + + $httpString = "\r\n"; + + $httpString .= "\r\n"; + + $sqlcmd = "SELECT oid, code || ' '::text || texte FROM base.t_finess WHERE oid > 0 ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $texte = toHTML(trim($record[1])); + + $httpString .= "\r\n"; + } + } + } + + $httpString .= "\r\n"; + + return $httpString; +} + +function getCombo_dmt() { + +global $database; + + $httpString = "\r\n"; + + $httpString .= "\r\n"; + + $sqlcmd = "SELECT oid, code || ' '::text || texte FROM base.t_dmt WHERE oid > 0 ORDER BY code"; + + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $texte = toHTML(trim($record[1])); + + $httpString .= "\r\n"; + } + } + } + + $httpString .= "\r\n"; + + return $httpString; +} + +function getCombo_unites_medicales() { + +global $database; + + $httpString = "\r\n"; + + $httpString .= "\r\n"; + + $sqlcmd = "SELECT oid, code || ' '::text || texte FROM activite.t_unites_medicales WHERE oid > 0 ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $texte = toHTML(trim($record[1])); + + $httpString .= "\r\n"; + } + } + } + + $httpString .= "\r\n"; + + return $httpString; +} + +function getCombo_unites_medicales_exceptions() { + +global $database; + + $httpString = "\r\n"; + + $httpString .= "\r\n"; + + $sqlcmd = " + SELECT + oid, + 'A'::text, + 'Si activité = '::text || code || ' '::text || texte + FROM + activite.t_activites + WHERE + oid > 0 + AND oid IN (SELECT DISTINCT activite_id FROM activite.t_lieux) + UNION ALL + SELECT + oid, + 'E'::text, + 'Si étage = '::text || code || ' '::text || texte + FROM + activite.t_etages + WHERE + oid > 0 + AND oid IN (SELECT DISTINCT t_lits.etage_id FROM activite.t_lieux, activite.t_lits WHERE t_lieux.lit_id = t_lits.oid) + ORDER BY 2"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $type = toHTML(trim($record[1])); + $texte = toHTML(trim($record[2])); + + $httpString .= "\r\n"; + } + } + } + $httpString .= "\r\n"; + + return $httpString; +} + +function getCombo_etages($tableName="") { + +global $database; + + if ($tableName == "t_services_facturation") { + $httpString_tmp = "\r\n"; + } + else { + $httpString_tmp = "\r\n"; + } + + $httpString = "\r\n"; + + $sqlcmd = "SELECT oid, code || ' '::text || texte FROM activite.t_etages WHERE oid > 0 ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $code = ctiFloatVal(trim($record[0])); + $texte = toHTML(trim($record[1])); + + $httpString_tmp .= "\r\n"; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + + $httpString .= $httpString_tmp; + $httpString .= "\r\n"; + + return $httpString; +} + + +function getCombo_activites($tableName="") { + +global $database; + + if ($tableName == "t_services_facturation") { + $httpString_tmp = "\r\n"; + } + else { + $httpString_tmp = "\r\n"; + } + + $httpString = "\r\n"; + + $sqlcmd = "SELECT oid, code || ' '::text || texte FROM activite.t_activites WHERE oid > 0 ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $code = ctiFloatVal(trim($record[0])); + $texte = toHTML(trim($record[1])); + + $httpString_tmp .= "\r\n"; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + + $httpString .= $httpString_tmp; + $httpString .= "\r\n"; + + return $httpString; +} + + + +function getCombo_services($tableName="") { + +global $database; + + + $httpString_tmp = "\r\n"; + + + $httpString = "\r\n"; + + $sqlcmd = "SELECT oid, code || ' '::text || texte FROM activite.t_services_facturation WHERE oid > 0 ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $code = ctiFloatVal(trim($record[0])); + $texte = toHTML(trim($record[1])); + + $httpString_tmp .= "\r\n"; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + + $httpString .= $httpString_tmp; + $httpString .= "\r\n"; + + return $httpString; +} + + +function getCombo_rubriques($tableName="") { + +global $database; + + + $httpString_tmp = "\r\n"; + + + $httpString = "\r\n"; + + $sqlcmd = "SELECT oid, code || ' '::text || texte FROM activite.t_rubriques_facturation WHERE oid > 0 ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $code = ctiFloatVal(trim($record[0])); + $texte = toHTML(trim($record[1])); + + $httpString_tmp .= "\r\n"; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + + $httpString .= $httpString_tmp; + $httpString .= "\r\n"; + + return $httpString; +} + + + +function getCombo_prestations($tableName="") { + +global $database; + + + $httpString_tmp = "\r\n"; + + + $httpString = "\r\n"; + + $sqlcmd = "SELECT oid, code || ' '::text || texte FROM activite.t_prestations WHERE oid > 0 ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $code = ctiFloatVal(trim($record[0])); + $texte = toHTML(trim($record[1])); + + $httpString_tmp .= "\r\n"; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + + $httpString .= $httpString_tmp; + $httpString .= "\r\n"; + + return $httpString; +} + +function getCombo_mois() { + +global $database; + + $httpString_tmp = ""; + + $httpString = "\r\n"; + + $sqlcmd = " SELECT + mois, + texte + FROM + base.p_calendrier_mois + WHERE + exercice_comptable IN (SELECT DISTINCT exercice_comptable FROM activite.p_mois_comptables) + ORDER BY mois DESC "; + $result = $database->exec($sqlcmd); + + if ($result != false) { + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $code = toHTML(trim($record[0])); + $texte = toHTML(trim($record[1])); + + $httpString_tmp .= "\r\n"; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + + $httpString .= $httpString_tmp; + $httpString .= "\r\n"; + + return $httpString; +} + + +function getCombo_mois_encours() { + +global $database; + + $httpString_tmp = ""; + + $httpString = "\r\n"; + + $sqlcmd = "SELECT MIN(p_calendrier_mois.date_debut) AS date_encours, p_calendrier_mois.texte, p_calendrier_mois.mois + FROM activite.p_factures_encours + JOIN base.p_calendrier_mois ON date_encours BETWEEN p_calendrier_mois.date_debut AND p_calendrier_mois.date_fin + GROUP BY 2,3 + UNION + SELECT '20991231'::date, 'Pas de forçage encours', 209912 + ORDER BY 3 DESC"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $code = toHTML(trim($record[0])); + $texte = toHTML(trim($record[1])); + + $httpString_tmp .= "\r\n"; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + + $httpString .= $httpString_tmp; + $httpString .= "\r\n"; + + return $httpString; +} + +function getCombo_comptes() { + +global $database; + + $httpString_tmp = ""; + + $httpString = "\r\n"; + + $sqlcmd = " + ( + SELECT + numero, + texte, + CASE WHEN clinique_honoraire = 'C' THEN '1'::text ELSE '0'::text END, + CASE WHEN clinique_honoraire = 'H' THEN '1'::text ELSE '0'::text END, + '0'::text + FROM + activite.t_comptes + WHERE t_comptes.compte_general_id = t_comptes.oid + ) + UNION ALL + ( + SELECT + numero, + texte, + CASE WHEN clinique_honoraire = 'C' THEN '1'::text ELSE '0'::text END, + CASE WHEN clinique_honoraire = 'H' THEN '1'::text ELSE '0'::text END, + '1'::text + FROM + activite.t_comptes + WHERE + t_comptes.compte_general_id <> t_comptes.oid + ) + ORDER BY 1, 5 "; + $result = $database->exec($sqlcmd); + + if ($result != false) { + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + + if ($record != FALSE) { + $ok = TRUE; + + $numero = toHTML(trim($record[0])); + $texte = toHTML(trim($record[1])); + $clinique = toHTML(trim($record[2])); + $honoraire = toHTML(trim($record[3])); + + $httpString_tmp .= "\r\n"; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + + $httpString .= $httpString_tmp; + $httpString .= "\r\n"; + + return $httpString; +} + +function getCombo_grands_regimes() { + +global $database; + + $httpString = "\r\n"; + + $httpString .= "\r\n"; + + $sqlcmd = "SELECT oid, code || ' '::text || texte FROM base.t_grands_regimes WHERE oid > 0 ORDER BY code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $texte = toHTML(trim($record[1])); + + $httpString .= "\r\n"; + } + } + } + $httpString .= "\r\n"; + + return $httpString; +} + +function getCombo_indicateurs() { + +global $database; + + $httpString = "\r\n"; + + $httpString .= "\r\n"; + + $sqlcmd = " SELECT + t_indicateurs.oid, + CASE + WHEN indicateur_reference_id = 0 THEN t_indicateurs.texte + WHEN dimension_date = '1' THEN t_indicateurs.texte || ' (date '::text || dimensions_date_texte[1] || ')'::text + WHEN dimension_date = '2' THEN t_indicateurs.texte || ' (date '::text || dimensions_date_texte[2] || ')'::text + WHEN dimension_date = '3' THEN t_indicateurs.texte || ' (date '::text || dimensions_date_texte[3] || ')'::text + WHEN dimension_date = '4' THEN t_indicateurs.texte || ' (date '::text || dimensions_date_texte[4] || ')'::text + WHEN dimension_date = '5' THEN t_indicateurs.texte || ' (date '::text || dimensions_date_texte[5] || ')'::text + ELSE t_indicateurs.texte END AS texte + FROM + activite.t_indicateurs + LEFT JOIN activite.v_rapports_tables_indicateurs_1 ON t_indicateurs.table_name = v_rapports_tables_indicateurs_1.code + WHERE + t_indicateurs.oid > 0 AND + t_indicateurs.table_name <> '*CALC' AND + (indicateur_reference_id <> 0 OR COALESCE(dimension_date_2,'') = '') + ORDER BY 2"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $texte = toHTML(trim($record[1])); + + $httpString .= "\r\n"; + } + } + } + $httpString .= "\r\n"; + + return $httpString; +} + +function getCombo_medecins_administratifs($tableName="") { + +global $database; + + $httpString = "\r\n"; + + if ($tableName == "t_services_facturation") { + $httpString .= "\r\n"; + } + else { + $httpString .= "\r\n"; + } + + $sqlcmd = " SELECT + oid, + nom || ' '::text || prenom || ' ('::text || code || ')'::text + FROM + activite.t_medecins_administratifs + WHERE + oid > 0 + ORDER BY 2"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $texte = toHTML(trim($record[1])); + + $httpString .= "\r\n"; + } + } + } + $httpString .= "\r\n"; + + return $httpString; +} + +function getArray_sejours() { + +global $database; + + $httpString = "\r\n"; + + $httpString_tmp = ""; + + $sqlcmd = " SELECT + p_sejours.no_sejour, + p_patients.nom || ' '::text || p_patients.prenom + FROM + activite.p_sejours + LEFT JOIN activite.p_patients ON p_sejours.no_patient = p_patients.no_patient + ORDER BY no_sejour"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $code = toHTML(trim($record[0])); + $texte = toHTML(trim($record[1])); + + $httpString_tmp .= ""; + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + $httpString .= $httpString_tmp; + $httpString .= "\r\n"; + + return $httpString; +} + + +function getCombo_budget_cle() { + +global $database; + + $httpString = "\r\n"; + + $httpString .= "\r\n"; + + $sqlcmd = "SELECT + oid, + code || ' '::text || texte + FROM activite.t_budget_cle + WHERE oid > 0 + ORDER BY 2"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $texte = toHTML(trim($record[1])); + + $httpString .= "\r\n"; + } + } + } + $httpString .= "\r\n"; + + return $httpString; +} + +function getRecords_expert_controle() { + +global $database; + + $httpString = ""; + $httpString_tmp = ""; + + // Activation module EXPERT + $sqlcmd = " + INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'EXPERT_ACTIVE', + 'Module EXPERT activé', + '0', + '1=Activé' + WHERE 'EXPERT_ACTIVE' NOT IN (SELECT code FROM activite.t_divers); + INSERT INTO activite.t_divers (code, texte, valeur, description, valeur_date) + SELECT + 'EXPERT_DATE_DEBUT', + 'Date séjours à contrôler', + '20130101', + 'Date de début des séjours à contrôler', + '20130101' + WHERE 'EXPERT_DATE_DEBUT' NOT IN (SELECT code FROM activite.t_divers);"; + $result = $database->exec($sqlcmd); + + // Correction données antérieures + $sqlcmd = "UPDATE activite.t_expert_controle_rule + SET numero = 1 + WHERE numero NOT IN (1,2,3) OR numero IS NULL; + + UPDATE activite.t_expert_controle + SET gravite_id = 5 + WHERE gravite_id NOT IN (0,5,9) OR gravite_id IS NULL; + + UPDATE activite.t_expert_controle + SET etat_cible = 0 + WHERE etat_cible NOT IN (0,1,2) OR etat_cible IS NULL;"; + $result = $database->exec($sqlcmd); + + // Paramètres généraux + $EXPERT_ACTIVE = "0"; + $EXPERT_DATE_DEBUT = "2013-01-01"; + + $sqlcmd = "SELECT code, valeur, to_char(valeur_date,'DD/MM/YYYY') + FROM activite.t_divers + WHERE code LIKE 'EXPERT%'"; + $result = $database->exec($sqlcmd); + if ($result != false) { + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + switch(trim($record[0])) { + case "EXPERT_ACTIVE" : + $EXPERT_ACTIVE = trim($record[1]); + break; + case "EXPERT_DATE_DEBUT" : + $EXPERT_DATE_DEBUT = trim($record[2]); + break; + } + } + } + } + + // Chargement des Prestataires activité + $sqlcmd = " + (SELECT + -1 as oid, + 'Tous'::text as texte, + 0 as tri + UNION + SELECT + oid, + texte, + 1 as tri + FROM base.t_prestataires + WHERE 'activite' = ANY (modules) + ) + ORDER BY tri,texte"; + $result = $database->exec($sqlcmd); + + if ($result !== false) { + + while ($row = pg_fetch_array($result)) { + + $oid = $row['oid']; + $texte = $row['texte']; + + $httpString .= "" . PHP_EOL; + } + } + + $httpString_tmp .= ""; + + // Liste des controles + $sqlcmd = "SELECT + t_expert_controle.oid as controle_id, + t_expert_controle.code as controle_code, + t_expert_controle.texte as controle_texte, + COALESCE(t_expert_controle.texte_court,t_expert_controle.texte) as controle_texte_court, + COALESCE(t_expert_controle.texte_court,t_expert_controle.texte,t_expert_controle.texte_abrege) as controle_texte_abrege, + t_expert_controle.description as controle_description, + t_expert_controle.is_cti as controle_is_cti, + t_expert_controle.is_hide as controle_is_hide, + t_expert_controle.gravite_id as controle_gravite, + COALESCE(t_expert_controle.etat_cible,0) as controle_etat_cible, + t_expert_controle.last_execution_timestamp as controle_last_execution_timestamp, + t_expert_controle.last_execution_ok as controle_last_execution_ok, + t_expert_controle.prestataire_id, + t_expert_controle.is_active as controle_is_active, + COALESCE(t_prestataires.texte, 'Tous') as prestataire_texte, + COALESCE(t_expert_controle_rule_1.oid,0) as rule1_oid, + COALESCE(t_expert_controle_rule_1.sqlcmd_where) as rule1_sqlcmd_where, + COALESCE(t_expert_controle_rule_1.sqlcmd_justificatif) as rule1_sqlcmd_justificatif, + COALESCE(t_expert_controle_rule_1.table_id,0) as rule1_table_id, + COALESCE(t_expert_controle_rule_2.oid,0) as rule2_oid, + COALESCE(t_expert_controle_rule_2.sqlcmd_where) as rule2_sqlcmd_where, + COALESCE(t_expert_controle_rule_2.sqlcmd_justificatif) as rule2_sqlcmd_justificatif, + COALESCE(t_expert_controle_rule_2.table_id,0) as rule2_table_id, + COALESCE(t_expert_controle_rule_3.oid,0) as rule3_oid, + COALESCE(t_expert_controle_rule_3.sqlcmd_where) as rule3_sqlcmd_where, + COALESCE(t_expert_controle_rule_3.sqlcmd_justificatif) as rule3_sqlcmd_justificatif, + COALESCE(t_expert_controle_rule_3.table_id,0) as rule3_table_id, + COALESCE(subview.nbref, 0) as nb_ref, + COALESCE(t_expert_controle.alert_exp,'0') as is_alert + FROM activite.t_expert_controle + LEFT JOIN base.t_prestataires ON t_prestataires.oid = t_expert_controle.prestataire_id + LEFT JOIN activite.t_expert_controle_rule t_expert_controle_rule_1 ON t_expert_controle_rule_1.controle_id = t_expert_controle.oid AND t_expert_controle_rule_1.numero = 1 + LEFT JOIN activite.t_expert_controle_rule t_expert_controle_rule_2 ON t_expert_controle_rule_2.controle_id = t_expert_controle.oid AND t_expert_controle_rule_2.numero = 2 + LEFT JOIN activite.t_expert_controle_rule t_expert_controle_rule_3 ON t_expert_controle_rule_3.controle_id = t_expert_controle.oid AND t_expert_controle_rule_3.numero = 3 + LEFT JOIN (SELECT controle_id, count(*) AS nbref FROM activite.p_expert_sejour_controle GROUP BY 1) subview ON t_expert_controle.oid = subview.controle_id + WHERE t_expert_controle.oid > 0 AND is_global <> 1 + ORDER BY t_expert_controle.code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordAssoc(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['controle_id']; + $code = toHTML(trim($record['controle_code'])); + $texte = toHTML(trim($record['controle_texte'])); + $texte_court = toHTML(trim($record['controle_texte_court'])); + $texte_abrege = toHTML(trim($record['controle_texte_abrege'])); + $description = toHTML(trim($record['controle_description'])); + $is_cti = toHTML(trim($record['controle_is_cti'])); + $is_active = toHTML(trim($record['controle_is_active'])); + $is_hide = toHTML(trim($record['controle_is_hide'])); + $etat_cible = ctiFloatVal(trim($record['controle_etat_cible'])); + $gravite = ctiFloatVal(trim($record['controle_gravite'])); + $rule_oid1 = ctiFloatVal(trim($record['rule1_oid'])); + $sqlcmd_where1 = toHTML(trim($record['rule1_sqlcmd_where'])); + $sqlcmd_justificatif1 = toHTML(trim($record['rule1_sqlcmd_justificatif'])); + $table1 = ctiFloatVal(trim($record['rule1_table_id'])); + $rule_oid2 = ctiFloatVal(trim($record['rule2_oid'])); + $sqlcmd_where2 = toHTML(trim($record['rule2_sqlcmd_where'])); + $sqlcmd_justificatif2 = toHTML(trim($record['rule2_sqlcmd_justificatif'])); + $table2 = ctiFloatVal(trim($record['rule2_table_id'])); + $rule_oid3 = ctiFloatVal(trim($record['rule3_oid'])); + $sqlcmd_where3 = toHTML(trim($record['rule3_sqlcmd_where'])); + $sqlcmd_justificatif3 = toHTML(trim($record['rule3_sqlcmd_justificatif'])); + $table3 = ctiFloatVal(trim($record['rule3_table_id'])); + $nbref = ctiFloatVal(trim($record['nb_ref'])); + $last_execution_timestamp = trim($record['controle_last_execution_timestamp']); + $last_execution_ok = ctiFloatVal(trim($record['controle_last_execution_ok'])); + $prestataire_id = ctiFloatVal(trim($record['prestataire_id'])); + $prestataire_texte = toHTML(trim($record['prestataire_texte'])); + $is_alert = toHTML(trim($record['is_alert'])); + + if ($last_execution_timestamp == "") { + $last_execution_timestamp = "jamais exécuté"; + $last_execution_ok = ""; + } + else { + if ($last_execution_ok == "1") { + $last_execution_ok = "OK"; + } + if ($last_execution_ok == "0") { + $last_execution_ok = "KO"; + } + } + + $complement = ""; + if ($is_cti == "1") { + $complement = "$complement CTI"; + } + else { + $is_cti = "0"; + } + if ($is_hide == "1") { + $complement = "$complement Masqué"; + } + else { + $is_hide = "0"; + } + if ($is_alert == "1") { + $complement = "$complement Alerte"; + } + else { + $is_alert = "0"; + } + if ($gravite == 0) { + $gravite_texte = "INFO"; + } + else { + if ($gravite == 9) { + $gravite_texte = "ERREUR"; + } + else { + $gravite_texte = "ATT"; + } + } + switch ($etat_cible) { + case 1 : + $etat_cible_texte = "Présents"; + break; + case 2 : + $etat_cible_texte = "Non facturés"; + break; + default : + $etat_cible_texte = "Tous"; + break; + } + $is_active_texte = $is_active == "1" ? "Actif" : "Inactif"; + + $md5_def = refmd5("$code$texte$texte_court$texte_abrege$description$is_cti$etat_cible$prestataire_id"); + $md5_sql = refmd5("$code$sqlcmd_where1$sqlcmd_justificatif1$table1$sqlcmd_where2$sqlcmd_justificatif2$table2$sqlcmd_where3$sqlcmd_justificatif3$table3"); + + $httpString_tmp .= " + "; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + + $httpString .= $httpString_tmp; + + // Référence + $httpString .= getRefSettings("t_expert_controle", $httpString); + + return $httpString; +} + +function getRecords_expert_controle_refsettings($refPrefix) { + +global $database; + + $httpString = ""; + $httpString_tmp = ""; + + // Liste des controles + $sqlcmd = "SELECT + t_expert_controle.oid AS controle_id, + t_expert_controle.code AS controle_code, + t_expert_controle.texte AS controle_texte, + COALESCE(t_expert_controle.texte_court,t_expert_controle.texte) AS controle_texte_court, + COALESCE(t_expert_controle.texte_court,t_expert_controle.texte,t_expert_controle.texte_abrege) AS controle_texte_abrege, + t_expert_controle.description AS controle_description, + t_expert_controle.is_cti AS controle_is_cti, + t_expert_controle.is_hide AS controle_is_hide, + t_expert_controle.gravite_id AS controle_gravite, + COALESCE(t_expert_controle.etat_cible,0) AS controle_etat_cible, + t_expert_controle.last_execution_timestamp AS controle_last_execution_timestamp, + t_expert_controle.last_execution_ok AS controle_last_execution_ok, + t_expert_controle.prestataire_id, + COALESCE(t_prestataires.texte, 'Tous') as prestataire_texte, + COALESCE(t_expert_controle_rule_1.oid,0) AS rule1_oid, + COALESCE(t_expert_controle_rule_1.sqlcmd_where) AS rule1_sqlcmd_where, + COALESCE(t_expert_controle_rule_1.sqlcmd_justificatif) AS rule1_sqlcmd_justificatif, + COALESCE(t_expert_controle_rule_1.table_id,0) AS rule1_table_id, + COALESCE(t_expert_controle_rule_2.oid,0) AS rule2_oid, + COALESCE(t_expert_controle_rule_2.sqlcmd_where) AS rule2_sqlcmd_where, + COALESCE(t_expert_controle_rule_2.sqlcmd_justificatif) AS rule2_sqlcmd_justificatif, + COALESCE(t_expert_controle_rule_2.table_id,0) AS rule2_table_id, + COALESCE(t_expert_controle_rule_3.oid,0) AS rule3_oid, + COALESCE(t_expert_controle_rule_3.sqlcmd_where) AS rule3_sqlcmd_where, + COALESCE(t_expert_controle_rule_3.sqlcmd_justificatif) AS rule3_sqlcmd_justificatif, + COALESCE(t_expert_controle_rule_3.table_id,0) AS rule3_table_id, + t_expert_controle.alert_exp as is_alert + FROM activite.t_expert_controle + LEFT JOIN base.t_prestataires ON t_prestataires.oid = t_expert_controle.prestataire_id + LEFT JOIN activite.t_expert_controle_rule t_expert_controle_rule_1 ON t_expert_controle_rule_1.controle_id = t_expert_controle.oid AND t_expert_controle_rule_1.numero = 1 + LEFT JOIN activite.t_expert_controle_rule t_expert_controle_rule_2 ON t_expert_controle_rule_2.controle_id = t_expert_controle.oid AND t_expert_controle_rule_2.numero = 2 + LEFT JOIN activite.t_expert_controle_rule t_expert_controle_rule_3 ON t_expert_controle_rule_3.controle_id = t_expert_controle.oid AND t_expert_controle_rule_3.numero = 3 + WHERE t_expert_controle.oid > 0 AND is_global <> 1 AND t_expert_controle.code ILIKE '$refPrefix%' + ORDER BY t_expert_controle.code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record['controle_id']; + $code = toHTML(trim($record['controle_code'])); + $texte = toHTML(trim($record['controle_texte'])); + $texte_court = toHTML(trim($record['controle_texte_court'])); + $texte_abrege = toHTML(trim($record['controle_texte_abrege'])); + $description = toHTML(trim($record['controle_description'])); + $is_cti = toHTML(trim($record['controle_is_cti'])); + $is_hide = toHTML(trim($record['controle_is_hide'])); + $gravite = ctiFloatVal(trim($record['controle_gravite'])); + $etat_cible = ctiFloatVal(trim($record['controle_etat_cible'])); + $last_execution_timestamp = toHTML(trim($record['controle_last_execution_timestamp'])); + $last_execution_ok = toHTML(trim($record['controle_last_execution_ok'])); + $rule_oid1 = ctiFloatVal(trim($record['rule1_oid'])); + $sqlcmd_where1 = toHTML(trim($record['rule1_sqlcmd_where'])); + $sqlcmd_justificatif1 = toHTML(trim($record['rule1_sqlcmd_justificatif'])); + $table1 = ctiFloatVal(trim($record['rule1_table_id'])); + $rule_oid2 = ctiFloatVal(trim($record['rule2_oid'])); + $sqlcmd_where2 = toHTML(trim($record['rule2_sqlcmd_where'])); + $sqlcmd_justificatif2 = toHTML(trim($record['rule2_sqlcmd_justificatif'])); + $table2 = ctiFloatVal(trim($record['rule2_table_id'])); + $rule_oid3 = ctiFloatVal(trim($record['rule3_oid'])); + $sqlcmd_where3 = toHTML(trim($record['rule3_sqlcmd_where'])); + $sqlcmd_justificatif3 = toHTML(trim($record['rule3_sqlcmd_justificatif'])); + $table3 = ctiFloatVal(trim($record['rule3_table_id'])); + $prestataire_id = ctiFloatVal(trim($record['prestataire_id'])); + $prestataire_texte = toHTML(trim($record['prestataire_texte'])); + $is_alert = toHTML(trim($record['is_alert'])); + + if ($last_execution_timestamp == "") { + $last_execution_ok = ""; + } + else { + if ($last_execution_ok == "1") { + $last_execution_ok = "OK"; + } + if ($last_execution_ok == "0") { + $last_execution_ok = "KO"; + } + } + + $complement = ""; + if ($is_cti == "1") { + $complement = "$complement CTI"; + } + else { + $is_cti = "0"; + } + if ($is_hide == "1") { + $complement = "$complement Masqué"; + } + else { + $is_hide = "0"; + } + if ($gravite == 0) { + $gravite_texte = "INFO"; + } + else { + if ($gravite == 9) { + $gravite_texte = "ERREUR"; + } + else { + $gravite_texte = "ATT"; + } + } + switch ($etat_cible) { + case 1 : + $etat_cible_texte = "Présents"; + break; + case 2 : + $etat_cible_texte = "Non facturés"; + break; + default : + $etat_cible_texte = "Tous"; + break; + } + $complement = trim($complement); + + $md5_def = refmd5("$code$texte$texte_court$texte_abrege$description$is_cti$etat_cible$prestataire_id"); + $md5_sql = refmd5("$code$sqlcmd_where1$sqlcmd_justificatif1$table1$sqlcmd_where2$sqlcmd_justificatif2$table2$sqlcmd_where3$sqlcmd_justificatif3$table3"); + + $httpString_tmp .= " + "; + + if (strlen($httpString_tmp) > 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + + $httpString .= $httpString_tmp; + return $httpString; +} + +function getRecords_kiwee_params() { + + global $database; + + $httpString = ""; + + $sqlcmd = " SELECT + oid AS kiwee_params_oid, + code AS kiwee_params_code, + texte AS kiwee_params_texte, + valeur::int AS kiwee_params_valeur, + description AS kiwee_params_desc + FROM activite.t_kiwee_params + ORDER BY code "; + + $result = $database->exec($sqlcmd); + + if ($result != false) { + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecord(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = toHTML(trim($record['kiwee_params_oid'])); + $code = toHTML(trim($record['kiwee_params_code'])); + $texte = toHTML(trim($record['kiwee_params_texte'])); + $valeur = $record['kiwee_params_valeur']; + $description = toHTML(trim($record['kiwee_params_desc'])); + + $httpString .= "\r\n"; + } + } + } + + return $httpString; +} + + +// recherche des listes de réference +function getRefSettings($tableName, $httpString_base) { + + global $getOption; + + $httpString = ""; + + $SETTINGS_file = rootDir() . "settings/settings.XML"; + $SETTINGS_xml = simplexml_load_file($SETTINGS_file); + $REFSETTINGS_URL = getProperty($SETTINGS_xml, "REFSETTINGS", 'URL'); + $REFSETTINGS_PREFIX = getProperty($SETTINGS_xml, "REFSETTINGS", 'PREFIX'); + + if ($REFSETTINGS_URL != "" && extension_loaded('curl')) { + + // Recherche des indicateurs de l'environnement de référence + $REFSETTINGS_table_url = "$REFSETTINGS_URL/modules/activite/php/ACTI_getTableRecords.php"; + + // Recherche http pour indicateurs + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $REFSETTINGS_table_url); + curl_setopt($ch, CURLOPT_POST, 2); + curl_setopt($ch, CURLOPT_POSTFIELDS, "tableName=$tableName&getOption=getRefSettings&refPrefix=$REFSETTINGS_PREFIX"); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); + $REFSETTINGS_data = @curl_exec($ch); + curl_close($ch); + + if ($REFSETTINGS_data) { + + if (substr($REFSETTINGS_data, 0, 12) == "") { + $REFSETTINGS_data = substr($REFSETTINGS_data, 12, strlen($REFSETTINGS_data) - 25); + } + + $REFSETTINGS_data = uncompress($REFSETTINGS_data); + $REFSETTINGS_data = str_replace("","",$REFSETTINGS_data); + $REFSETTINGS_xml = simplexml_load_string($REFSETTINGS_data); + if ($REFSETTINGS_xml) { + + foreach ($REFSETTINGS_xml->REFRECORD as $recordNode) { + $md5_def = trim($recordNode["md5_def"]); + $md5_sql = trim($recordNode["md5_sql"]); + $recordNode["ok"] = ""; + if (stripos($httpString_base, $md5_def) === false) { + $recordNode["ok"] = "Définition"; + } + if (stripos($httpString_base, $md5_sql) === false) { + $recordNode["ok"] = "Règles"; + } + //if ($recordNode["ok"] != "") { + $httpString .= $recordNode->asXML(); + //} + } + } + } + } + return $httpString; +} + +function refmd5($string) { + $string = str_replace("\r","",$string); + $string = str_replace("\n","",$string); + $string = md5(trim($string)); + return $string; +} + + +/** + * Convertie une chaîne de caractère en double à la manière de ctiFloatVal(). + * Si la chaîne de caractère dépasse la limite de taille que ctiFloatVal() est capable de traiter, + * la fonction retourne la chaîne de caractère sans conversion. + */ +function ctiFloatVal($stringValue) { + $ret = 0; + if (strlen($stringValue) <= 14) { + $ret = floatval($stringValue); + } else { + if (preg_match("/[^0-9]/", $stringValue) === 0) { + $ret = $stringValue; + } + } + return $ret; +} +?> \ No newline at end of file diff --git a/php/ACTI_setTableRecord.php b/php/ACTI_setTableRecord.php new file mode 100644 index 0000000..f52f532 --- /dev/null +++ b/php/ACTI_setTableRecord.php @@ -0,0 +1,3168 @@ +" . utf8_decode($recordXML)); + +$database = new Database("iCTI"); + +$settingsLogger = new SettingsChangesLogger; + +try { + $settingsLogger->logParameterChanges('activite', $tableName, $recordNode, $database); +} catch (Exception $e) { + echo $e->getMessage(); +} + +$httpString = ""; +$httpString = $httpString . ""; +$httpString = $httpString . "\n"; + +$settersByTableToUpdate = array( + 't_services_facturation' => 'setRecords_services_facturation', + 't_activites' => 'setRecords_activites', + 't_divers' => 'setRecords_divers', + 't_unites_medicales' => 'setRecords_unites_medicales', + 't_unites_fonctionnelles' => 'setRecords_unites_fonctionnelles', + 't_etages' => 'setRecords_etages', + 't_lits' => 'setRecords_lits', + 't_compte' => 'setRecords_compte', + 't_service_rubrique' => 'setRecords_service_rubrique', + 't_service_rubrique_dotation' => 'setRecords_service_rubrique_dotation', + 't_prestations_c' => 'setRecords_prestations_c', + 't_prestations_h' => 'setRecords_prestations_h', + 't_rubriques_facturation' => 'setRecords_rubriques_facturation', + 't_types_tiers_payant' => 'setRecords_types_tiers_payant', + 't_tiers_payant' => 'setRecords_tiers_payant', + 't_specialites_medecin' => 'setRecords_specialites_internes_medecin', + 't_medecins_administratifs' => 'setRecords_medecins_administratifs', + 't_medecins_traitants_administratifs' => 'setRecords_medecins_traitants_administratifs', + 't_medecins' => 'setRecords_medecins', + 't_sejour' => 'setRecords_sejour', + 't_budget' => 'setRecords_budget', + 't_budget_cle' => 'setRecords_budget_cle', + 't_budget_cle_rule' => 'setRecords_budget_cle_rule', + 't_budget_cle_budget' => 'setRecords_budget_cle_budget', + 't_expert_controle' => 'setRecords_expert_controle', + 't_forme_activite' => 'setRecords_forme_activite', + 't_forme_activite_rule' => 'setRecords_forme_activite_rule', + 't_filiere_soin' => 'setRecords_filiere_soin', + 't_filiere_soin_rule' => 'setRecords_filiere_soin_rule', + 't_pole_rule' => 'setRecords_pole_rule', + 't_compte_produit_analytique_rule' => 'setRecords_compte_produit_analytique_rule', + 't_calcul_encours' => 'setRecords_calcul_encours', + 't_kiwee_params' => 'setRecords_kiwee_params' +); + +$httpString = $httpString . $settersByTableToUpdate[$tableName](); + +// Effacer le cache après maj parametre +erase_cache(); + +$httpString = $httpString . "\n"; + +$httpString = compress64($httpString); + + +echo "$httpString"; + + +function setRecords_services_facturation() { + + global $database; + global $action; + global $propagate; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $texte_court = utf8_decode($recordNode["texte_court"]); + $code_original = utf8_decode($recordNode["code_original"]); + $nb_lits = utf8_decode($recordNode["nb_lits"]); + $nb_cp = utf8_decode($recordNode["nb_cp"]); + $type_t2a = utf8_decode($recordNode["type_t2a"]); + $est_budget_global = utf8_decode($recordNode["est_budget_global"]); + $est_sans_mouvement = utf8_decode($recordNode["est_sans_mouvement"]); + if ($est_sans_mouvement != "1") { + $est_sans_mouvement = "0"; + } + $est_sans_facturation = utf8_decode($recordNode["est_sans_facturation"]); + if ($est_sans_facturation != "1" && $est_sans_facturation != "2") { + $est_sans_facturation = "0"; + } + $avec_facturation_intermediaire = utf8_decode($recordNode["avec_facturation_intermediaire"]); + if ($avec_facturation_intermediaire != "1") { + $avec_facturation_intermediaire = "0"; + } + $sej_sans_acte_fictif = utf8_decode($recordNode["sej_sans_acte_fictif"]); + if ($sej_sans_acte_fictif != "1") { + $sej_sans_acte_fictif = "0"; + } + $finess_id = utf8_decode($recordNode["finess_id"]) + 0; + $mode_traitement_id = utf8_decode($recordNode["mode_traitement_id"]) + 0; + $dmt_id = utf8_decode($recordNode["dmt_id"]) + 0; + $type_sejour = utf8_decode($recordNode["type_sejour"]); + $etage_par_defaut_id = ctiFloatVal($recordNode["etage_par_defaut_id"]); + $etage_force_id = ctiFloatVal($recordNode["etage_force_id"]); + $activite_par_defaut_id = ctiFloatVal($recordNode["activite_par_defaut_id"]); + $activite_force_id = ctiFloatVal($recordNode["activite_force_id"]); + $medecin_par_defaut_id = ctiFloatVal($recordNode["medecin_par_defaut_id"]); + $medecin_force_id = ctiFloatVal($recordNode["medecin_force_id"]); + + $option_jour_ferme = utf8_decode($recordNode["option_jour_ferme"]); + if ($option_jour_ferme != "1") { + $option_jour_ferme = "0"; + } + $prestations_presence = utf8_decode($recordNode["prestations_presence"]); + $particularites_encours = utf8_decode($recordNode["particularites_encours"]); + $mode_calcul_journees = utf8_decode($recordNode["mode_calcul_journees"]); + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + $code_original = toSQL($code_original); + + $prestations_presence = toSQL($prestations_presence); + $particularites_encours = toSQL($particularites_encours); + $mode_calcul_journees = toSQL($mode_calcul_journees); + + $nb_lits = $nb_lits + 0; + $nb_cp = $nb_cp + 0; + + // creation ou mise à jour de la liste + if ($oid != -1) { + + $sqlcmd = "UPDATE activite.t_services_facturation SET + code = '$code', + texte = '$texte', + texte_court = '$texte_court', + nb_lits = $nb_lits, + nb_cp = $nb_cp, + type_t2a = '$type_t2a', + est_budget_global = '$est_budget_global', + est_sans_mouvement = '$est_sans_mouvement', + est_sans_facturation = '$est_sans_facturation', + sej_sans_acte_fictif = '$sej_sans_acte_fictif', + avec_facturation_intermediaire = '$avec_facturation_intermediaire', + finess_id = $finess_id, + mode_traitement_id = $mode_traitement_id, + dmt_id = $dmt_id, + type_sejour = '$type_sejour', + etage_par_defaut_id = $etage_par_defaut_id, + etage_force_id = $etage_force_id, + activite_par_defaut_id = $activite_par_defaut_id, + activite_force_id = $activite_force_id, + medecin_par_defaut_id = $medecin_par_defaut_id, + medecin_force_id = $medecin_force_id, + option_jour_ferme = '$option_jour_ferme', + prestations_presence = '$prestations_presence', + particularites_encours = '$particularites_encours', + mode_calcul_journees='$mode_calcul_journees' + WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + + $sqlcmd = "DELETE FROM activite.t_services_facturation_historique WHERE service_facturation_id = $oid; "; + + + foreach ($recordNode->HISTO as $place_node) { + $date = trim($place_node["date"]); + if (strlen($date) == 10) { + $date = substr($date,6,4) . substr($date,3,2) . substr($date,0,2); + $nb_lits_theoriques = ctiFloatVal($place_node["nb_lits_theoriques"]); + $nb_lits_ouverts = ctiFloatVal($place_node["nb_lits_ouverts"]); + $nb_box_ambulatoires_theoriques = ctiFloatVal($place_node["nb_box_ambulatoires_theoriques"]); + $nb_box_ambulatoires_ouverts = ctiFloatVal($place_node["nb_box_ambulatoires_ouverts"]); + $nb_box_seances_theoriques = ctiFloatVal($place_node["nb_box_seances_theoriques"]); + $nb_box_seances_ouverts = ctiFloatVal($place_node["nb_box_seances_ouverts"]); + $est_ouvert_1 = ctiFloatVal($place_node["est_ouvert_1"]); + $est_ouvert_2 = ctiFloatVal($place_node["est_ouvert_2"]); + $est_ouvert_3 = ctiFloatVal($place_node["est_ouvert_3"]); + $est_ouvert_4 = ctiFloatVal($place_node["est_ouvert_4"]); + $est_ouvert_5 = ctiFloatVal($place_node["est_ouvert_5"]); + $est_ouvert_6 = ctiFloatVal($place_node["est_ouvert_6"]); + $est_ouvert_7 = ctiFloatVal($place_node["est_ouvert_7"]); + $sqlcmd = $sqlcmd . "INSERT INTO activite.t_services_facturation_historique( + service_facturation_id, + date, + nb_lits_theoriques, + nb_lits_ouverts, + nb_box_ambulatoires_theoriques, + nb_box_ambulatoires_ouverts, + nb_box_seances_theoriques, + nb_box_seances_ouverts, + est_ouvert_1, + est_ouvert_2, + est_ouvert_3, + est_ouvert_4, + est_ouvert_5, + est_ouvert_6, + est_ouvert_7) + VALUES( + $oid, + '$date', + $nb_lits_theoriques, + $nb_lits_ouverts, + $nb_box_ambulatoires_theoriques, + $nb_box_ambulatoires_ouverts, + $nb_box_seances_theoriques, + $nb_box_seances_ouverts, + '$est_ouvert_1', + '$est_ouvert_2', + '$est_ouvert_3', + '$est_ouvert_4', + '$est_ouvert_5', + '$est_ouvert_6', + '$est_ouvert_7' + ); "; + } + } + + + + $result = $database->exec($sqlcmd); + + + if ($propagate != "false") { + $result = $database->exec("SELECT activite.cti_reorganize_lieux_c(); "); + + + $sqlcmd = "INSERT INTO activite.p_oids (code_table, oid) + SELECT DISTINCT 'mode_traitement', t_services_facturation.mode_traitement_id FROM activite.t_lieux, activite.t_services_facturation + WHERE + service_facturation_id = t_services_facturation.oid AND + t_services_facturation.mode_traitement_id NOT IN (SELECT oid FROM activite.p_oids WHERE code_table = 'mode_traitement' AND oid IS NOT NULL) AND t_services_facturation.mode_traitement_id IS NOT NULL"; + $result = $database->exec($sqlcmd); + + } + + + } + } +} + + + +function setRecords_activites() { + + global $database; + global $action; + global $propagate; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $texte_court = utf8_decode($recordNode["texte_court"]); + $code_original = utf8_decode($recordNode["code_original"]); + $etage_par_defaut_id = ctiFloatVal($recordNode["etage_par_defaut_id"]); + $etage_force_id = ctiFloatVal($recordNode["etage_force_id"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + $code_original = toSQL($code_original); + + // creation ou mise à jour de la liste + if ($oid != -1) { + $sqlcmd = "UPDATE activite.t_activites SET + code = '$code', + texte = '$texte', + texte_court = '$texte_court', + etage_par_defaut_id = $etage_par_defaut_id, + etage_force_id = $etage_force_id + WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + if ($propagate != "false") { + $result = $database->exec("SELECT activite.cti_reorganize_lieux_c(); "); + } + } + } +} + + +function setRecords_divers() { + + global $database; + global $action; + global $propagate; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $valeur = utf8_decode($recordNode["valeur"]); + $description = utf8_decode($recordNode["description"]); + $valeur2 = utf8_decode($recordNode["valeur2"]); + $show_info_module = utf8_decode($recordNode["show_info_module"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $valeur = toSQL($valeur); + $description = toSQL($description); + $show_info_module = ctiFloatVal($show_info_module); + + // creation ou mise à jour de la liste + if ($oid != -1) { + + $sqlcmd = "UPDATE activite.t_divers SET "; + $sqlcmd = $sqlcmd . "valeur = '$valeur', "; + $sqlcmd = $sqlcmd . "valeur2 = '$valeur2', "; + $sqlcmd = $sqlcmd . "show_info_module = ($show_info_module = 1) "; + $sqlcmd = $sqlcmd . "WHERE code = '$code'"; + $result = $database->exec($sqlcmd); + + if ($propagate != "false") { + if ($code == "PLACESREF") { + $result = $database->exec("SELECT activite.cti_reorganize_lieux_c(); "); + } + if ($code == 'OPTADM_DAYOUT') { + $result = $database->exec("SELECT activite.cti_calcul_journees_mouvements(); "); + $result = $database->exec("SELECT activite.cti_calcul_hdj_mouvements(); "); + } + } + } + } +} + + + +function setRecords_unites_medicales() { + + global $database; + global $action; + global $propagate; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $texte_court = utf8_decode($recordNode["texte_court"]); + $code_original = utf8_decode($recordNode["code_original"]); + $etage_par_defaut_id = ctiFloatVal($recordNode["etage_par_defaut_id"]); + $etage_force_id = ctiFloatVal($recordNode["etage_force_id"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + $code_original = toSQL($code_original); + + // creation ou mise à jour de la liste + if ($oid != -1) { + $sqlcmd = "UPDATE activite.t_unites_medicales SET + code = '$code', + texte = '$texte', + texte_court = '$texte_court', + etage_par_defaut_id = $etage_par_defaut_id, + etage_force_id = $etage_force_id + WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + $sqlcmd = "DELETE FROM activite.t_unites_medicales_historique WHERE unite_medicale_id = $oid; "; + + + foreach ($recordNode->HISTO as $place_node) { + $date = trim($place_node["date"]); + if (strlen($date) == 10) { + $date = substr($date,6,4) . substr($date,3,2) . substr($date,0,2); + $nb_lits_theoriques = ctiFloatVal($place_node["nb_lits_theoriques"]); + $nb_lits_ouverts = ctiFloatVal($place_node["nb_lits_ouverts"]); + $nb_box_ambulatoires_theoriques = ctiFloatVal($place_node["nb_box_ambulatoires_theoriques"]); + $nb_box_ambulatoires_ouverts = ctiFloatVal($place_node["nb_box_ambulatoires_ouverts"]); + $nb_box_seances_theoriques = ctiFloatVal($place_node["nb_box_seances_theoriques"]); + $nb_box_seances_ouverts = ctiFloatVal($place_node["nb_box_seances_ouverts"]); + $est_ouvert_1 = ctiFloatVal($place_node["est_ouvert_1"]); + $est_ouvert_2 = ctiFloatVal($place_node["est_ouvert_2"]); + $est_ouvert_3 = ctiFloatVal($place_node["est_ouvert_3"]); + $est_ouvert_4 = ctiFloatVal($place_node["est_ouvert_4"]); + $est_ouvert_5 = ctiFloatVal($place_node["est_ouvert_5"]); + $est_ouvert_6 = ctiFloatVal($place_node["est_ouvert_6"]); + $est_ouvert_7 = ctiFloatVal($place_node["est_ouvert_7"]); + $sqlcmd = $sqlcmd . "INSERT INTO activite.t_unites_medicales_historique( + unite_medicale_id, + date, + nb_lits_theoriques, + nb_lits_ouverts, + nb_box_ambulatoires_theoriques, + nb_box_ambulatoires_ouverts, + nb_box_seances_theoriques, + nb_box_seances_ouverts, + est_ouvert_1, + est_ouvert_2, + est_ouvert_3, + est_ouvert_4, + est_ouvert_5, + est_ouvert_6, + est_ouvert_7) + VALUES( + $oid, + '$date', + $nb_lits_theoriques, + $nb_lits_ouverts, + $nb_box_ambulatoires_theoriques, + $nb_box_ambulatoires_ouverts, + $nb_box_seances_theoriques, + $nb_box_seances_ouverts, + '$est_ouvert_1', + '$est_ouvert_2', + '$est_ouvert_3', + '$est_ouvert_4', + '$est_ouvert_5', + '$est_ouvert_6', + '$est_ouvert_7' + ); "; + } + } + + + + $result = $database->exec($sqlcmd); + + if ($propagate != "false") { + $result = $database->exec("SELECT activite.cti_reorganize_lieux_c(); "); + } + } + } +} + + +function setRecords_unites_fonctionnelles() { + + global $database; + global $action; + global $propagate; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $texte_court = utf8_decode($recordNode["texte_court"]); + $code_original = utf8_decode($recordNode["code_original"]); + $est_sans_facturation = utf8_decode($recordNode["est_sans_facturation"]); + if ($est_sans_facturation != "1" && $est_sans_facturation != "2") { + $est_sans_facturation = "0"; + } + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + $code_original = toSQL($code_original); + + // creation ou mise à jour de la liste + if ($oid != -1) { + $sqlcmd = "UPDATE activite.t_unites_fonctionnelles SET "; + $sqlcmd = $sqlcmd . "code = '$code', "; + $sqlcmd = $sqlcmd . "texte = '$texte', "; + $sqlcmd = $sqlcmd . "texte_court = '$texte_court', "; + $sqlcmd = $sqlcmd . "est_sans_facturation = '$est_sans_facturation' "; + $sqlcmd = $sqlcmd . "WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + $sqlcmd = "DELETE FROM activite.t_unites_fonctionnelles_historique WHERE unite_fonctionnelle_id = $oid; "; + + + foreach ($recordNode->HISTO as $place_node) { + $date = trim($place_node["date"]); + if (strlen($date) == 10) { + $date = substr($date,6,4) . substr($date,3,2) . substr($date,0,2); + $nb_lits_theoriques = ctiFloatVal($place_node["nb_lits_theoriques"]); + $nb_lits_ouverts = ctiFloatVal($place_node["nb_lits_ouverts"]); + $nb_box_ambulatoires_theoriques = ctiFloatVal($place_node["nb_box_ambulatoires_theoriques"]); + $nb_box_ambulatoires_ouverts = ctiFloatVal($place_node["nb_box_ambulatoires_ouverts"]); + $nb_box_seances_theoriques = ctiFloatVal($place_node["nb_box_seances_theoriques"]); + $nb_box_seances_ouverts = ctiFloatVal($place_node["nb_box_seances_ouverts"]); + $est_ouvert_1 = ctiFloatVal($place_node["est_ouvert_1"]); + $est_ouvert_2 = ctiFloatVal($place_node["est_ouvert_2"]); + $est_ouvert_3 = ctiFloatVal($place_node["est_ouvert_3"]); + $est_ouvert_4 = ctiFloatVal($place_node["est_ouvert_4"]); + $est_ouvert_5 = ctiFloatVal($place_node["est_ouvert_5"]); + $est_ouvert_6 = ctiFloatVal($place_node["est_ouvert_6"]); + $est_ouvert_7 = ctiFloatVal($place_node["est_ouvert_7"]); + $sqlcmd = $sqlcmd . "INSERT INTO activite.t_unites_fonctionnelles_historique( + unite_fonctionnelle_id, + date, + nb_lits_theoriques, + nb_lits_ouverts, + nb_box_ambulatoires_theoriques, + nb_box_ambulatoires_ouverts, + nb_box_seances_theoriques, + nb_box_seances_ouverts, + est_ouvert_1, + est_ouvert_2, + est_ouvert_3, + est_ouvert_4, + est_ouvert_5, + est_ouvert_6, + est_ouvert_7) + VALUES( + $oid, + '$date', + $nb_lits_theoriques, + $nb_lits_ouverts, + $nb_box_ambulatoires_theoriques, + $nb_box_ambulatoires_ouverts, + $nb_box_seances_theoriques, + $nb_box_seances_ouverts, + '$est_ouvert_1', + '$est_ouvert_2', + '$est_ouvert_3', + '$est_ouvert_4', + '$est_ouvert_5', + '$est_ouvert_6', + '$est_ouvert_7' + ); "; + } + } + + + + $result = $database->exec($sqlcmd); + + + if ($propagate != "false") { + $result = $database->exec("SELECT activite.cti_reorganize_lieux_c(); "); + } + } + } +} + + +function setRecords_etages() { + + global $database; + global $action; + global $propagate; + global $recordNode; + + $etage_id = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $texte_court = utf8_decode($recordNode["texte_court"]); + $code_original = utf8_decode($recordNode["code_original"]); + $nb_lits = utf8_decode($recordNode["nb_lits"]); + $nb_cp = utf8_decode($recordNode["nb_cp"]); + $remplacer_par_valeur_par_defaut = utf8_decode($recordNode["remplacer_par_valeur_par_defaut"]); + $est_urgence = utf8_decode($recordNode["est_urgence"]); + $service_force_id = ctiFloatVal($recordNode["service_force_id"]); + $finess_id = utf8_decode($recordNode["finess_id"]) + 0; + + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + $code_original = toSQL($code_original); + + $nb_lits = $nb_lits + 0; + $nb_cp = $nb_cp + 0; + + // creation ou mise à jour de la liste + if ($etage_id != -1) { + $sqlcmd = "UPDATE activite.t_etages SET + code = '$code', + texte = '$texte', + texte_court = '$texte_court', + nb_lits = $nb_lits, + nb_cp = $nb_cp, + remplacer_par_valeur_par_defaut = '$remplacer_par_valeur_par_defaut', + est_urgence = '$est_urgence', + service_force_id = $service_force_id, + finess_id = $finess_id + WHERE oid = $etage_id"; + $result = $database->exec($sqlcmd); + + $sqlcmd = ""; + + foreach ($recordNode->LIT as $lit_node) { + $oid = ctiFloatVal($lit_node["oid"]); + $chambre_particuliere = trim($lit_node["chambre_particuliere"]); + if ($chambre_particuliere == "1") { + $chambre_particuliere = "O"; + } + else { + $chambre_particuliere = "N"; + } + $sqlcmd = $sqlcmd . "UPDATE activite.t_lits + SET chambre_particuliere = '$chambre_particuliere' + WHERE oid = $oid AND oid > 0 AND chambre_particuliere IS DISTINCT FROM '$chambre_particuliere';"; + } + + $result = $database->exec($sqlcmd); + + + + + $sqlcmd = "DELETE FROM activite.t_etages_historique WHERE etage_id = $etage_id; "; + + + foreach ($recordNode->HISTO as $place_node) { + $date = trim($place_node["date"]); + if (strlen($date) == 10) { + $date = substr($date,6,4) . substr($date,3,2) . substr($date,0,2); + $nb_lits_theoriques = ctiFloatVal($place_node["nb_lits_theoriques"]); + $nb_lits_ouverts = ctiFloatVal($place_node["nb_lits_ouverts"]); + $nb_lits_cp_theoriques = ctiFloatVal($place_node["nb_lits_cp_theoriques"]); + $nb_lits_cp_ouverts = ctiFloatVal($place_node["nb_lits_cp_ouverts"]); + $nb_box_ambulatoires_theoriques = ctiFloatVal($place_node["nb_box_ambulatoires_theoriques"]); + $nb_box_ambulatoires_ouverts = ctiFloatVal($place_node["nb_box_ambulatoires_ouverts"]); + $nb_box_seances_theoriques = ctiFloatVal($place_node["nb_box_seances_theoriques"]); + $nb_box_seances_ouverts = ctiFloatVal($place_node["nb_box_seances_ouverts"]); + $est_ouvert_1 = ctiFloatVal($place_node["est_ouvert_1"]); + $est_ouvert_2 = ctiFloatVal($place_node["est_ouvert_2"]); + $est_ouvert_3 = ctiFloatVal($place_node["est_ouvert_3"]); + $est_ouvert_4 = ctiFloatVal($place_node["est_ouvert_4"]); + $est_ouvert_5 = ctiFloatVal($place_node["est_ouvert_5"]); + $est_ouvert_6 = ctiFloatVal($place_node["est_ouvert_6"]); + $est_ouvert_7 = ctiFloatVal($place_node["est_ouvert_7"]); + $lit_force = trim($place_node["lit_force"]); + $sqlcmd = $sqlcmd . "INSERT INTO activite.t_etages_historique( + etage_id, + date, + nb_lits_theoriques, + nb_lits_ouverts, + nb_lits_cp_theoriques, + nb_lits_cp_ouverts, + nb_box_ambulatoires_theoriques, + nb_box_ambulatoires_ouverts, + nb_box_seances_theoriques, + nb_box_seances_ouverts, + est_ouvert_1, + est_ouvert_2, + est_ouvert_3, + est_ouvert_4, + est_ouvert_5, + est_ouvert_6, + est_ouvert_7, + lit_force) + VALUES( + $etage_id, + '$date', + $nb_lits_theoriques, + $nb_lits_ouverts, + $nb_lits_cp_theoriques, + $nb_lits_cp_ouverts, + $nb_box_ambulatoires_theoriques, + $nb_box_ambulatoires_ouverts, + $nb_box_seances_theoriques, + $nb_box_seances_ouverts, + '$est_ouvert_1', + '$est_ouvert_2', + '$est_ouvert_3', + '$est_ouvert_4', + '$est_ouvert_5', + '$est_ouvert_6', + '$est_ouvert_7', + '$lit_force' + ); "; + } + } + + + + $result = $database->exec($sqlcmd); + + + if ($propagate != "false") { + $result = $database->exec("SELECT activite.cti_reorganize_lieux_c(); "); + } + } + } +} + + + +function setRecords_lits() { + + global $database; + global $action; + global $propagate; + global $recordNode; + + $lit_id = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $texte_court = utf8_decode($recordNode["texte_court"]); + $code_original = utf8_decode($recordNode["code_original"]); + $est_chambre_particuliere = utf8_decode($recordNode["est_chambre_particuliere"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + $code_original = toSQL($code_original); + if ($est_chambre_particuliere == "1") { + $chambre_particuliere = "O"; + } + else { + $chambre_particuliere = "N"; + } + + + // creation ou mise à jour de la liste + if ($lit_id != -1) { + $sqlcmd = "UPDATE activite.t_lits SET + code = '$code', + texte = '$texte', + texte_court = '$texte_court', + chambre_particuliere = '$chambre_particuliere' + WHERE oid = $lit_id"; + $result = $database->exec($sqlcmd); + + + + // Historique des étages par lit + $sqlcmd = "DELETE FROM activite.t_lit_historique WHERE lit_id = $lit_id; "; + $one_historique = FALSE; + foreach ($recordNode->ETAGE as $etage_node) { + $date = trim($etage_node["date"]); + if (strlen($date) == 10) { + $date = substr($date,6,4) . substr($date,3,2) . substr($date,0,2); + $etage_id = ctiFloatVal($etage_node["oid"]); + $sqlcmd = $sqlcmd . "INSERT INTO activite.t_lit_historique( + lit_id, + date_debut, + date_fin, + etage_id) + VALUES( + $lit_id, + '$date', + '20991231', + $etage_id + ); "; + + $one_historique = TRUE; + } + } + + if ($one_historique == TRUE) { + $sqlcmd = $sqlcmd . "UPDATE activite.t_lits + SET etage_id = subview.etage_id + FROM ( + SELECT + lit_id, + (MAX(ARRAY[date_fin::text, etage_id::text]))[2]::bigint AS etage_id + FROM ( + SELECT + lit_id, + etage_id, + date_debut, + date_fin + FROM activite.t_lit_historique + WHERE lit_id = $lit_id + ORDER BY lit_id + ) subview + GROUP BY lit_id + ) subview + WHERE t_lits.oid = subview.lit_id AND + t_lits.etage_id IS DISTINCT FROM subview.etage_id;"; + + $sqlcmd = $sqlcmd . "UPDATE activite.t_lit_historique + SET date_fin = subview.date_fin + FROM ( + SELECT + oid, + lit_id, + date(COALESCE((SELECT MIN(date_debut) - interval '1 day' + FROM activite.t_lit_historique t_lit_historique_next + WHERE + t_lit_historique.lit_id = t_lit_historique_next.lit_id AND + t_lit_historique.date_debut < t_lit_historique_next.date_debut + ),'20991231')) AS date_fin + FROM activite.t_lit_historique + WHERE lit_id = $lit_id + ) subview + WHERE t_lit_historique.oid = subview.oid AND + t_lit_historique.date_fin IS DISTINCT FROM subview.date_fin;"; + + } + + + $result = $database->exec($sqlcmd); + + + if ($propagate != "false") { + $result = $database->exec("SELECT activite.cti_reorganize_lieux_c(); "); + } + } + } +} + + +function setRecords_compte() { + + global $database; + global $action; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $texte_court = utf8_decode($recordNode["texte_court"]); + $code_original = utf8_decode($recordNode["code_original"]); + $taux_tva = ctiFloatVal($recordNode["taux_tva"]); + $compte_tva_id = ctiFloatVal($recordNode["compte_tva_id"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + $code_original = toSQL($code_original); + + + // creation ou mise à jour de la liste + if ($oid == -1) { + $sqlcmd = "INSERT INTO activite.t_compte (code, code_original, texte, texte_court, taux_tva, compte_tva_id) VALUES('$code','$code','$texte','$texte_court', $taux_tva, $compte_tva_id )"; + $result = $database->exec($sqlcmd); + + } + else { + + $sqlcmd = "UPDATE activite.t_compte SET "; + $sqlcmd = $sqlcmd . "code = '$code', "; + $sqlcmd = $sqlcmd . "texte = '$texte', "; + $sqlcmd = $sqlcmd . "texte_court = '$texte_court', "; + $sqlcmd = $sqlcmd . "taux_tva = $taux_tva, "; + $sqlcmd = $sqlcmd . "compte_tva_id = $compte_tva_id "; + $sqlcmd = $sqlcmd . "WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + } + + + } + + +} + +function setRecords_service_rubrique() { + + global $database; + global $action; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $service_id = ctiFloatVal($recordNode["service_id"]); + $rubrique_id = ctiFloatVal($recordNode["rubrique_id"]); + $compte_id = ctiFloatVal($recordNode["compte_id"]); + $est_compte_force = utf8_decode($recordNode["est_compte_force"]); + $prestation_forcee_id = ctiFloatVal($recordNode["prestation_forcee_id"]); + + + if ($action != "delete" && $action != "copy") { + + $sqlcmd = " + UPDATE activite.t_service_rubrique SET + compte_id = $compte_id, + est_compte_force = '$est_compte_force', + prestation_forcee_id = $prestation_forcee_id + WHERE service_facturation_id = $service_id AND + rubrique_facturation_id = $rubrique_id; + INSERT INTO activite.t_service_rubrique + (service_facturation_id, rubrique_facturation_id, compte_id, est_compte_force, prestation_forcee_id) + SELECT $service_id,$rubrique_id,$compte_id,'$est_compte_force', $prestation_forcee_id + WHERE $service_id::text || '-' || $rubrique_id::text NOT IN ( + SELECT service_facturation_id::text || '-' || rubrique_facturation_id::text FROM activite.t_service_rubrique + );"; + + $result = $database->exec($sqlcmd); + + } + + +} + + +function setRecords_service_rubrique_dotation() { + + global $database; + global $action; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $texte = utf8_decode($recordNode["texte"]); + $texte = toSQL($texte); + $annee = ctiFloatVal($recordNode["annee"]); + $dotation = ctiFloatVal(str_replace(',','.',$recordNode["dotation"])); + + $service_1_id = ctiFloatVal($recordNode["service_1_id"]); + $service_2_id = ctiFloatVal($recordNode["service_2_id"]); + $service_3_id = ctiFloatVal($recordNode["service_3_id"]); + $service_4_id = ctiFloatVal($recordNode["service_4_id"]); + $service_5_id = ctiFloatVal($recordNode["service_5_id"]); + $service_6_id = ctiFloatVal($recordNode["service_6_id"]); + $service_7_id = ctiFloatVal($recordNode["service_7_id"]); + $service_8_id = ctiFloatVal($recordNode["service_8_id"]); + $service_9_id = ctiFloatVal($recordNode["service_9_id"]); + $rubrique_1_id = ctiFloatVal($recordNode["rubrique_1_id"]); + $rubrique_2_id = ctiFloatVal($recordNode["rubrique_2_id"]); + $rubrique_3_id = ctiFloatVal($recordNode["rubrique_3_id"]); + $rubrique_4_id = ctiFloatVal($recordNode["rubrique_4_id"]); + $rubrique_5_id = ctiFloatVal($recordNode["rubrique_5_id"]); + $rubrique_6_id = ctiFloatVal($recordNode["rubrique_6_id"]); + $rubrique_7_id = ctiFloatVal($recordNode["rubrique_7_id"]); + $rubrique_8_id = ctiFloatVal($recordNode["rubrique_8_id"]); + $rubrique_9_id = ctiFloatVal($recordNode["rubrique_9_id"]); + $rubrique_10_id = ctiFloatVal($recordNode["rubrique_10_id"]); + + $to_rubrique_id = ctiFloatVal($recordNode["to_rubrique_id"]); + $to_prestation_id = ctiFloatVal($recordNode["to_prestation_id"]); + + $service_id_array = ""; + if ($service_1_id != 0) { + $service_id_array = "$service_1_id"; + } + if ($service_2_id != 0) { + if ($service_id_array != "") { + $service_id_array = "$service_id_array,"; + } + $service_id_array = "$service_id_array$service_2_id"; + } + if ($service_3_id != 0) { + if ($service_id_array != "") { + $service_id_array = "$service_id_array,"; + } + $service_id_array = "$service_id_array$service_3_id"; + } + if ($service_4_id != 0) { + if ($service_id_array != "") { + $service_id_array = "$service_id_array,"; + } + $service_id_array = "$service_id_array$service_4_id"; + } + if ($service_5_id != 0) { + if ($service_id_array != "") { + $service_id_array = "$service_id_array,"; + } + $service_id_array = "$service_id_array$service_5_id"; + } + if ($service_6_id != 0) { + if ($service_id_array != "") { + $service_id_array = "$service_id_array,"; + } + $service_id_array = "$service_id_array$service_6_id"; + } + if ($service_7_id != 0) { + if ($service_id_array != "") { + $service_id_array = "$service_id_array,"; + } + $service_id_array = "$service_id_array$service_7_id"; + } + if ($service_8_id != 0) { + if ($service_id_array != "") { + $service_id_array = "$service_id_array,"; + } + $service_id_array = "$service_id_array$service_8_id"; + } + if ($service_9_id != 0) { + if ($service_id_array != "") { + $service_id_array = "$service_id_array,"; + } + $service_id_array = "$service_id_array$service_9_id"; + } + if ($service_id_array != "") { + $service_id_array = "ARRAY[$service_id_array]"; + } + else { + $service_id_array = "NULL"; + } + + $rubrique_id_array = ""; + if ($rubrique_1_id != 0) { + $rubrique_id_array = "$rubrique_1_id"; + } + if ($rubrique_2_id != 0) { + if ($rubrique_id_array != "") { + $rubrique_id_array = "$rubrique_id_array,"; + } + $rubrique_id_array = "$rubrique_id_array$rubrique_2_id"; + } + if ($rubrique_3_id != 0) { + if ($rubrique_id_array != "") { + $rubrique_id_array = "$rubrique_id_array,"; + } + $rubrique_id_array = "$rubrique_id_array$rubrique_3_id"; + } + if ($rubrique_4_id != 0) { + if ($rubrique_id_array != "") { + $rubrique_id_array = "$rubrique_id_array,"; + } + $rubrique_id_array = "$rubrique_id_array$rubrique_4_id"; + } + if ($rubrique_5_id != 0) { + if ($rubrique_id_array != "") { + $rubrique_id_array = "$rubrique_id_array,"; + } + $rubrique_id_array = "$rubrique_id_array$rubrique_5_id"; + } + if ($rubrique_6_id != 0) { + if ($rubrique_id_array != "") { + $rubrique_id_array = "$rubrique_id_array,"; + } + $rubrique_id_array = "$rubrique_id_array$rubrique_6_id"; + } + if ($rubrique_7_id != 0) { + if ($rubrique_id_array != "") { + $rubrique_id_array = "$rubrique_id_array,"; + } + $rubrique_id_array = "$rubrique_id_array$rubrique_7_id"; + } + if ($rubrique_8_id != 0) { + if ($rubrique_id_array != "") { + $rubrique_id_array = "$rubrique_id_array,"; + } + $rubrique_id_array = "$rubrique_id_array$rubrique_8_id"; + } + if ($rubrique_9_id != 0) { + if ($rubrique_id_array != "") { + $rubrique_id_array = "$rubrique_id_array,"; + } + $rubrique_id_array = "$rubrique_id_array$rubrique_9_id"; + } + if ($rubrique_10_id != 0) { + if ($rubrique_id_array != "") { + $rubrique_id_array = "$rubrique_id_array,"; + } + $rubrique_id_array = "$rubrique_id_array$rubrique_10_id"; + } + if ($rubrique_id_array != "") { + $rubrique_id_array = "ARRAY[$rubrique_id_array]"; + } + else { + $rubrique_id_array = "NULL"; + } + + + if ($action != "delete" && $action != "copy") { + + $sqlcmd = " + UPDATE activite.t_service_rubrique_dotation SET + annee = $annee, + texte = '$texte', + montant_dotation = $dotation, + service_facturation_id_array = $service_id_array, + rubrique_facturation_id_array = $rubrique_id_array, + to_rubrique_facturation_id = $to_rubrique_id, + to_prestation_id = $to_prestation_id + WHERE oid = $oid;"; + + $result = $database->exec($sqlcmd); + + } +} + + + +function setRecords_prestations_c() { + + global $database; + global $action; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $texte_court = utf8_decode($recordNode["texte_court"]); + $code_original = utf8_decode($recordNode["code_original"]); + $type_valorisation_non_facture = utf8_decode($recordNode["type_valorisation_non_facture"]); + $type_ventilation_jour = utf8_decode($recordNode["type_ventilation_jour"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + $code_original = toSQL($code_original); + $type_valorisation_non_facture = toSQL($type_valorisation_non_facture); + $type_ventilation_jour = toSQL($type_ventilation_jour); + + // creation ou mise à jour de la liste + if ($oid != -1) { + $sqlcmd = "UPDATE activite.t_prestations SET "; + $sqlcmd = $sqlcmd . "code = '$code', "; + $sqlcmd = $sqlcmd . "texte = '$texte', "; + $sqlcmd = $sqlcmd . "texte_court = '$texte_court', "; + $sqlcmd = $sqlcmd . "type_valorisation_non_facture = '$type_valorisation_non_facture', "; + $sqlcmd = $sqlcmd . "type_ventilation_jour = '$type_ventilation_jour' "; + $sqlcmd = $sqlcmd . "WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + } + } + +} + +function setRecords_prestations_h() { + + global $database; + global $action; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $texte_court = utf8_decode($recordNode["texte_court"]); + $code_original = utf8_decode($recordNode["code_original"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + $code_original = toSQL($code_original); + + + // creation ou mise à jour de la liste + if ($oid != -1) { + $sqlcmd = "UPDATE activite.t_prestations SET "; + $sqlcmd = $sqlcmd . "code = '$code', "; + $sqlcmd = $sqlcmd . "texte = '$texte', "; + $sqlcmd = $sqlcmd . "texte_court = '$texte_court' "; + $sqlcmd = $sqlcmd . "WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + } + } +} + + +function setRecords_rubriques_facturation() { + + global $database; + global $action; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $texte_court = utf8_decode($recordNode["texte_court"]); + $code_original = utf8_decode($recordNode["code_original"]); + $actes_inclus_public = utf8_decode($recordNode["actes_inclus_public"]); + $est_force_etablissement = utf8_decode($recordNode["est_force_etablissement"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + $code_original = toSQL($code_original); + $actes_inclus_public = toSQL($actes_inclus_public); + $est_force_etablissement = toSQL($est_force_etablissement); + + + // creation ou mise à jour de la liste + if ($oid != -1) { + $sqlcmd = "UPDATE activite.t_rubriques_facturation SET "; + $sqlcmd = $sqlcmd . "code = '$code', "; + $sqlcmd = $sqlcmd . "texte = '$texte', "; + $sqlcmd = $sqlcmd . "texte_court = '$texte_court', "; + $sqlcmd = $sqlcmd . "actes_inclus_public = '$actes_inclus_public', "; + $sqlcmd = $sqlcmd . "est_force_etablissement = '$est_force_etablissement' "; + $sqlcmd = $sqlcmd . "WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + } + } +} + + +function setRecords_types_tiers_payant() { + + global $database; + global $action; + global $recordNode; + + $oid = $recordNode["oid"]; + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $texte_court = utf8_decode($recordNode["texte_court"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + + // creation ou mise à jour de la liste + if ($oid != -1) { + $sqlcmd = "UPDATE activite.t_types_tiers_payant SET "; + $sqlcmd = $sqlcmd . "texte = '$texte', "; + $sqlcmd = $sqlcmd . "texte_court = '$texte_court' "; + $sqlcmd = $sqlcmd . "WHERE code = '$oid'"; + $result = $database->exec($sqlcmd); + } + } + +} + +function setRecords_tiers_payant() { + + global $database; + global $action; + global $propagate; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $texte_court = utf8_decode($recordNode["texte_court"]); + $code_original = utf8_decode($recordNode["code_original"]); + $grand_regime_id = ctiFloatVal($recordNode["grand_regime_id"]); + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + $code_original = toSQL($code_original); + + + // creation ou mise à jour de la liste + if ($oid != -1) { + $sqlcmd = "UPDATE activite.t_tiers_payant SET + code = '$code', + texte = '$texte', + texte_court = '$texte_court', + grand_regime_id = $grand_regime_id + WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + } + } + + + if ($propagate != "false") { + $result = $database->exec("SELECT activite.cti_reorganize_tiers_payant(); "); + } + + +} + + +function setRecords_specialites_internes_medecin() { + + global $database; + global $action; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $texte_court = utf8_decode($recordNode["texte_court"]); + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + + // creation ou mise à jour de la liste + if ($oid == -1) { + + $sqlcmd = "INSERT INTO base.t_specialites_medecin "; + $sqlcmd = $sqlcmd . "( "; + $sqlcmd = $sqlcmd . "code, texte, texte_court"; + $sqlcmd = $sqlcmd . ") "; + $sqlcmd = $sqlcmd . "VALUES("; + $sqlcmd = $sqlcmd . "'$code', '$texte', '$texte_court'"; + $sqlcmd = $sqlcmd . ") "; + $result = $database->exec($sqlcmd); + if ($result == FALSE) { + + } + } + else { + + $sqlcmd = "UPDATE base.t_specialites_medecin SET "; + $sqlcmd = $sqlcmd . "code = '$code', "; + $sqlcmd = $sqlcmd . "texte = '$texte', "; + $sqlcmd = $sqlcmd . "texte_court = '$texte_court' "; + $sqlcmd = $sqlcmd . "WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + + $sqlcmd = "UPDATE activite.t_medecins_administratifs_c SET "; + $sqlcmd = $sqlcmd . "adm_code = t_medecins_administratifs.code, "; + $sqlcmd = $sqlcmd . "adm_nom = t_medecins_administratifs.nom, "; + $sqlcmd = $sqlcmd . "adm_prenom = t_medecins_administratifs.prenom, "; + $sqlcmd = $sqlcmd . "adm_nom_prenom = t_medecins_administratifs.nom || ' ' || t_medecins_administratifs.prenom, "; + $sqlcmd = $sqlcmd . "medecin_id = t_medecins_administratifs.medecin_id, "; + $sqlcmd = $sqlcmd . "nom = t_medecins.nom, "; + $sqlcmd = $sqlcmd . "prenom = t_medecins.prenom, "; + $sqlcmd = $sqlcmd . "nom_prenom = t_medecins.nom || ' ' || t_medecins.prenom, "; + $sqlcmd = $sqlcmd . "specialite_id = t_medecins.specialite_id, "; + $sqlcmd = $sqlcmd . "specialite_code = t_specialites_medecin.code, "; + $sqlcmd = $sqlcmd . "specialite_texte = t_specialites_medecin.texte_court "; + $sqlcmd = $sqlcmd . "FROM activite.t_medecins_administratifs, base.t_medecins, base.t_specialites_medecin "; + $sqlcmd = $sqlcmd . "WHERE t_medecins_administratifs_c.oid = t_medecins_administratifs.oid "; + $sqlcmd = $sqlcmd . "AND t_medecins_administratifs.medecin_id = t_medecins.oid "; + $sqlcmd = $sqlcmd . "AND t_medecins.specialite_id = t_specialites_medecin.oid "; + $sqlcmd = $sqlcmd . "AND t_medecins.specialite_id = $oid "; + $result = $database->exec($sqlcmd); + + + } + + + } + + if ($action == "delete") { + $sqlcmd = "DELETE FROM base.t_specialites_medecin WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + } + + +} + + +function setRecords_medecins_administratifs() { + + global $database; + global $action; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $nom = utf8_decode($recordNode["nom"]); + $prenom = utf8_decode($recordNode["prenom"]); + $code_original = utf8_decode($recordNode["code_original"]); + $est_medecin_salarie = utf8_decode($recordNode["est_medecin_salarie"]); + $kiwee_sigems_honpatcpt = utf8_decode($recordNode["kiwee_sigems_honpatcpt"]); + $kiwee_sigems_honpatcptdep = utf8_decode($recordNode["kiwee_sigems_honpatcptdep"]); + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $nom = toSQL($nom); + $prenom = toSQL($prenom); + $code_original = toSQL($code_original); + + + // creation ou mise à jour de la liste + if ($oid != -1) { + $sqlcmd = "UPDATE activite.t_medecins_administratifs SET "; + $sqlcmd = $sqlcmd . "code = '$code', "; + $sqlcmd = $sqlcmd . "nom = '$nom', "; + $sqlcmd = $sqlcmd . "prenom = '$prenom', "; + $sqlcmd = $sqlcmd . "est_medecin_salarie = '$est_medecin_salarie', "; + $sqlcmd = $sqlcmd . "kiwee_sigems_honpatcpt = '$kiwee_sigems_honpatcpt', "; + $sqlcmd = $sqlcmd . "kiwee_sigems_honpatcptdep = '$kiwee_sigems_honpatcptdep' "; + $sqlcmd = $sqlcmd . "WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + + $sqlcmd = "UPDATE activite.t_medecins_administratifs_c SET "; + $sqlcmd = $sqlcmd . "adm_code = t_medecins_administratifs.code, "; + $sqlcmd = $sqlcmd . "adm_nom = t_medecins_administratifs.nom, "; + $sqlcmd = $sqlcmd . "adm_prenom = t_medecins_administratifs.prenom, "; + $sqlcmd = $sqlcmd . "adm_nom_prenom = t_medecins_administratifs.nom || ' ' || t_medecins_administratifs.prenom, "; + $sqlcmd = $sqlcmd . "medecin_id = t_medecins_administratifs.medecin_id, "; + $sqlcmd = $sqlcmd . "nom = t_medecins.nom, "; + $sqlcmd = $sqlcmd . "prenom = t_medecins.prenom, "; + $sqlcmd = $sqlcmd . "nom_prenom = t_medecins.nom || ' ' || t_medecins.prenom, "; + $sqlcmd = $sqlcmd . "specialite_id = t_medecins.specialite_id, "; + $sqlcmd = $sqlcmd . "specialite_code = t_specialites_medecin.code, "; + $sqlcmd = $sqlcmd . "specialite_texte = t_specialites_medecin.texte_court "; + $sqlcmd = $sqlcmd . "FROM activite.t_medecins_administratifs, base.t_medecins, base.t_specialites_medecin "; + $sqlcmd = $sqlcmd . "WHERE t_medecins_administratifs_c.oid = t_medecins_administratifs.oid "; + $sqlcmd = $sqlcmd . "AND t_medecins_administratifs.medecin_id = t_medecins.oid "; + $sqlcmd = $sqlcmd . "AND t_medecins.specialite_id = t_specialites_medecin.oid "; + $sqlcmd = $sqlcmd . "AND t_medecins_administratifs.oid = $oid "; + $result = $database->exec($sqlcmd); + } + } + $result = $database->exec("SELECT activite.cti_reorganize_medecins_administratifs_c(); "); +} + + +function setRecords_medecins_traitants_administratifs() { + + global $database; + global $action; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $nom = utf8_decode($recordNode["nom"]); + $prenom = utf8_decode($recordNode["prenom"]); + $code_original = utf8_decode($recordNode["code_original"]); + $no_rpps = utf8_decode($recordNode["no_rpps"]); + $code_postal = utf8_decode($recordNode["code_postal"]); + $ville = str_replace("'","''",utf8_decode($recordNode["ville"])); + $adresse = str_replace("'","''",utf8_decode($recordNode["adresse"])); + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $nom = toSQL($nom); + $prenom = toSQL($prenom); + $code_original = toSQL($code_original); + + + // creation ou mise à jour de la liste + if ($oid != -1) { + $sqlcmd = "UPDATE activite.t_medecins_traitants_administratifs SET "; + $sqlcmd = $sqlcmd . "code = '$code', "; + $sqlcmd = $sqlcmd . "nom = '$nom', "; + $sqlcmd = $sqlcmd . "prenom = '$prenom', "; + $sqlcmd = $sqlcmd . "no_rpps = '$no_rpps', "; + $sqlcmd = $sqlcmd . "ville = '$ville', "; + $sqlcmd = $sqlcmd . "adresse = '$adresse' "; + $sqlcmd = $sqlcmd . "WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + $sqlcmd = "UPDATE activite.t_medecins_traitants_administratifs SET "; + $sqlcmd = $sqlcmd . "code_postal_id = 0"; + $result = $database->exec($sqlcmd); + + $sqlcmd = "UPDATE activite.t_medecins_traitants_administratifs SET "; + $sqlcmd = $sqlcmd . "code_postal_id = t_codes_postaux.oid "; + $sqlcmd = $sqlcmd . "FROM base.t_codes_postaux "; + $sqlcmd = $sqlcmd . "WHERE t_codes_postaux.code = '$code_postal' AND t_medecins_traitants_administratifs.oid = $oid"; + $result = $database->exec($sqlcmd); + } + } +} + +function setRecords_medecins() { + + global $database; + global $action; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $nom = utf8_decode($recordNode["nom"]); + $prenom = utf8_decode($recordNode["prenom"]); + $code_original = utf8_decode($recordNode["code_original"]); + $numero_ordre = utf8_decode($recordNode["numero_ordre"]); + $specialite_interne_id = utf8_decode($recordNode["specialite_interne_id"]); + $medecins_regroupes_oids = utf8_decode($recordNode["medecins_regroupes_oids"]); + + $medecins_regroupes_oids = "-1$medecins_regroupes_oids-1"; + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $nom = toSQL($nom); + $prenom = toSQL($prenom); + $code_original = toSQL($code_original); + $numero_ordre = toSQL($numero_ordre); + $specialite_interne_id = toSQL($specialite_interne_id); + $medecins_regroupes_oids = toSQL($medecins_regroupes_oids); + + + // creation ou mise à jour de la liste + if ($oid == -1) { + + $sqlcmd = "INSERT INTO base.t_medecins "; + $sqlcmd = $sqlcmd . "( "; + $sqlcmd = $sqlcmd . "nom, prenom, numero_ordre, specialite_id"; + $sqlcmd = $sqlcmd . ") "; + $sqlcmd = $sqlcmd . "VALUES("; + $sqlcmd = $sqlcmd . "'$nom', '$prenom', '$numero_ordre', $specialite_interne_id"; + $sqlcmd = $sqlcmd . ") "; + $result = $database->exec($sqlcmd); + if ($result !== FALSE) { + $sqlcmd = "SELECT MAX(oid) "; + $sqlcmd = $sqlcmd . "FROM base.t_medecins "; + $sqlcmd = $sqlcmd . "WHERE nom = '$nom' AND prenom = '$prenom' AND numero_ordre = '$numero_ordre' AND specialite_id = $specialite_interne_id"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + $record = $database->nextRecordInto(); + if ($record != FALSE) { + $oid = ctiFloatVal($record[0]); + + if ($oid > 0) { + $sqlcmd = "UPDATE activite.t_medecins_administratifs SET "; + $sqlcmd = $sqlcmd . "medecin_id = $oid "; + $sqlcmd = $sqlcmd . "WHERE oid IN ($medecins_regroupes_oids)"; + $result = $database->exec($sqlcmd); + } + } + } + } + + } + else { + + $sqlcmd = "UPDATE base.t_medecins SET "; + $sqlcmd = $sqlcmd . "nom = '$nom', "; + $sqlcmd = $sqlcmd . "prenom = '$prenom', "; + $sqlcmd = $sqlcmd . "numero_ordre = '$numero_ordre', "; + $sqlcmd = $sqlcmd . "specialite_id = $specialite_interne_id "; + $sqlcmd = $sqlcmd . "WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + $sqlcmd = "UPDATE activite.t_medecins_administratifs SET "; + $sqlcmd = $sqlcmd . "medecin_id = $oid "; + $sqlcmd = $sqlcmd . "WHERE oid IN ($medecins_regroupes_oids)"; + $result = $database->exec($sqlcmd); + + $sqlcmd = "UPDATE activite.t_medecins_administratifs SET "; + $sqlcmd = $sqlcmd . "medecin_id = 0 "; + $sqlcmd = $sqlcmd . "WHERE medecin_id = $oid"; + $sqlcmd = $sqlcmd . "AND oid NOT IN ($medecins_regroupes_oids)"; + $result = $database->exec($sqlcmd); + } + + + } + if ($oid >= 0) { + + $sqlcmd = "UPDATE activite.t_medecins_administratifs_c SET "; + $sqlcmd = $sqlcmd . "adm_code = t_medecins_administratifs.code, "; + $sqlcmd = $sqlcmd . "adm_nom = t_medecins_administratifs.nom, "; + $sqlcmd = $sqlcmd . "adm_prenom = t_medecins_administratifs.prenom, "; + $sqlcmd = $sqlcmd . "adm_nom_prenom = t_medecins_administratifs.nom || ' ' || t_medecins_administratifs.prenom, "; + $sqlcmd = $sqlcmd . "medecin_id = t_medecins_administratifs.medecin_id, "; + $sqlcmd = $sqlcmd . "nom = t_medecins.nom, "; + $sqlcmd = $sqlcmd . "prenom = t_medecins.prenom, "; + $sqlcmd = $sqlcmd . "nom_prenom = t_medecins.nom || ' ' || t_medecins.prenom, "; + $sqlcmd = $sqlcmd . "specialite_id = t_medecins.specialite_id, "; + $sqlcmd = $sqlcmd . "specialite_code = t_specialites_medecin.code, "; + $sqlcmd = $sqlcmd . "specialite_texte = t_specialites_medecin.texte_court "; + $sqlcmd = $sqlcmd . "FROM activite.t_medecins_administratifs, base.t_medecins, base.t_specialites_medecin "; + $sqlcmd = $sqlcmd . "WHERE t_medecins_administratifs_c.oid = t_medecins_administratifs.oid "; + $sqlcmd = $sqlcmd . "AND t_medecins_administratifs.medecin_id = t_medecins.oid "; + $sqlcmd = $sqlcmd . "AND t_medecins.specialite_id = t_specialites_medecin.oid "; + $sqlcmd = $sqlcmd . "AND (t_medecins_administratifs.medecin_id = $oid OR t_medecins_administratifs.medecin_id = 0) "; + $result = $database->exec($sqlcmd); + + + } + + $result = $database->exec("SELECT activite.cti_reorganize_medecins_administratifs_c(); "); + + +} + + + +function setRecords_sejour() { + + global $database; + global $action; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $est_ignore = utf8_decode($recordNode["est_ignore"]); + if ($est_ignore != "1") { + $est_ignore = "0"; + } + $medecin_sejour_id = utf8_decode($recordNode["medecin_sejour_id"]); + $medecin_sejour_id = ctiFloatVal($medecin_sejour_id); + $service_facturation_id = utf8_decode($recordNode["service_facturation_id"]); + $service_facturation_id = ctiFloatVal($service_facturation_id); + $etage_id = utf8_decode($recordNode["etage_id"]); + $etage_id = ctiFloatVal($etage_id); + $type_sejour = utf8_decode($recordNode["type_sejour"]); + $type_sejour = ctiFloatVal($type_sejour); + + $encours_1_from_date = utf8_decode($recordNode["encours_1_from_date"]); + $encours_1_est_ignore = utf8_decode($recordNode["encours_1_est_ignore"]); + if ($encours_1_est_ignore != "1") { + $encours_1_est_ignore = "0"; + } + + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + + + // creation ou mise à jour de la liste + if ($oid == -1) { + + $sqlcmd = "INSERT INTO activite.t_sejour ( + no_sejour, + est_ignore, + medecin_sejour_id, + service_facturation_id, + etage_id, + type_sejour, + encours_from_date, + encours_est_ignore + ) + VALUES( + '$code', + '$est_ignore', + $medecin_sejour_id, + $service_facturation_id, + $etage_id, + '$type_sejour', + ARRAY['$encours_1_from_date'::date], + ARRAY['$encours_1_est_ignore'::text] + ) "; + $result = $database->exec($sqlcmd); + if ($result == FALSE) { + + } + } + else { + + $sqlcmd = "UPDATE activite.t_sejour SET + no_sejour = '$code', + est_ignore = '$est_ignore', + medecin_sejour_id = $medecin_sejour_id, + service_facturation_id = $service_facturation_id, + etage_id = $etage_id, + type_sejour = '$type_sejour', + encours_from_date = ARRAY['$encours_1_from_date'::date], + encours_est_ignore = ARRAY['$encours_1_est_ignore'::text] + WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + } + } + + if ($action == "delete") { + $sqlcmd = "DELETE FROM activite.t_sejour WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + } + + + // Application à la table des séjours + $sqlcmd = "UPDATE activite.p_sejours + SET etat = 'I' + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + est_ignore = '1' AND + etat <> 'I'; + + UPDATE activite.p_sejours + SET etat = '' + WHERE etat = 'I' AND + no_sejour NOT IN (SELECT no_sejour FROM activite.t_sejour WHERE est_ignore = '1'); + + UPDATE activite.p_sejours + SET medecin_sejour_id = t_sejour.medecin_sejour_id + FROM activite.t_sejour + WHERE t_sejour.no_sejour = p_sejours.no_sejour AND + t_sejour.medecin_sejour_id <> 0 AND + p_sejours.medecin_sejour_id IS DISTINCT FROM t_sejour.medecin_sejour_id;"; + $result = $database->exec($sqlcmd); + +} + + + +function setRecords_budget() { + + global $database; + global $action; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $date_debut = utf8_decode($recordNode["date_debut"]); + $date_fin = utf8_decode($recordNode["date_fin"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $date_debut = toSQL($date_debut); + $date_fin = toSQL($date_fin); + + // creation ou mise à jour de la liste + if ($oid == -1) { + $sqlcmd = "INSERT INTO activite.t_budget (code, texte, date_debut, date_fin) + VALUES('$code', '$texte', to_date('$date_debut','DD/MM/YYYY'), to_date('$date_fin','DD/MM/YYYY'))"; + $result = $database->exec($sqlcmd); + } + else { + $sqlcmd = "UPDATE activite.t_budget SET + code = '$code', + texte = '$texte', + date_debut = to_date('$date_debut','DD/MM/YYYY') , + date_fin = to_date('$date_fin','DD/MM/YYYY') + WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + } + + // Modification des indicateurs déjà existant + + $indicators = "0"; + foreach ($recordNode->INDICATEUR as $indicateur_node) { + $budget_indicateur_oid = ctiFloatVal($indicateur_node["oid"]); + $budget_indicateur_code = trim($indicateur_node["code"]); + $budget_indicateur_texte = trim($indicateur_node["texte"]); + $budget_indicateur_indicateur_id = ctiFloatVal($indicateur_node["indicateur_id"]); + $budget_indicateur_code = toSQL($budget_indicateur_code); + $budget_indicateur_texte = toSQL($budget_indicateur_texte); + + if ($budget_indicateur_oid > 0) { + $sqlcmd = "UPDATE activite.t_budget_indicateur SET + code = '$budget_indicateur_code', + texte = '$budget_indicateur_texte', + indicateur_id = $budget_indicateur_indicateur_id + WHERE oid = $budget_indicateur_oid"; + $result = $database->exec($sqlcmd); + $indicators = "$indicators, $budget_indicateur_oid"; + } + } + + // Suppression des indicateurs qui n'existent plus + $sqlcmd = "DELETE FROM activite.t_budget_indicateur WHERE oid NOT IN ($indicators)"; + $result = $database->exec($sqlcmd); + + // Ajout des nouveaux indicateurs + foreach ($recordNode->INDICATEUR as $indicateur_node) { + $budget_indicateur_oid = ctiFloatVal($indicateur_node["oid"]); + $budget_indicateur_code = trim($indicateur_node["code"]); + $budget_indicateur_texte = trim($indicateur_node["texte"]); + $budget_indicateur_indicateur_id = ctiFloatVal($indicateur_node["indicateur_id"]); + $budget_indicateur_code = toSQL($budget_indicateur_code); + $budget_indicateur_texte = toSQL($budget_indicateur_texte); + + + if ($budget_indicateur_oid <= 0) { + $sqlcmd = "INSERT INTO activite.t_budget_indicateur (code, texte, budget_id, indicateur_id) + VALUES('$budget_indicateur_code', '$budget_indicateur_texte', $oid, $budget_indicateur_indicateur_id)"; + $result = $database->exec($sqlcmd); + } + } + + } + + if ($action == "delete") { + $sqlcmd = "DELETE FROM activite.t_budget WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + } + + +} + + + +function setRecords_expert_controle() { + + global $database; + global $action; + global $recordNode; + + $httpString = ""; + + $mode = ctiFloatVal($recordNode["mode"]); + + // Mise à jour controles unitaires + if ($mode == 0) { + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $texte_court = utf8_decode($recordNode["texte_court"]); + if ($texte_court == "") { + $texte_court = $texte; + } + $texte_abrege = utf8_decode($recordNode["texte_abrege"]); + if ($texte_abrege == "") { + $texte_abrege = $texte_court; + } + $description = $recordNode["description"]; + $is_cti = utf8_decode($recordNode["is_cti"]); + $is_active = utf8_decode($recordNode["is_active"]); + $is_hide = utf8_decode($recordNode["is_hide"]); + $gravite = ctiFloatVal($recordNode["gravite"]); + $etat_cible = ctiFloatVal($recordNode["etat_cible"]); + $prestataire_id = ctiFloatVal($recordNode["prestataire_id"]); + $is_alert = utf8_decode($recordNode["is_alert"]); + + $rule_oid1 = ctiFloatVal($recordNode["rule_oid1"]); + $sqlcmd_where1 = utf8_decode($recordNode["sqlcmd_where1"]); + $sqlcmd_justificatif1 = utf8_decode($recordNode["sqlcmd_justificatif1"]); + $table1 = ctiFloatVal($recordNode["table1"]); + + $rule_oid2 = ctiFloatVal($recordNode["rule_oid2"]); + $sqlcmd_where2 = utf8_decode($recordNode["sqlcmd_where2"]); + $sqlcmd_justificatif2 = utf8_decode($recordNode["sqlcmd_justificatif2"]); + $table2 = ctiFloatVal($recordNode["table2"]); + + $rule_oid3 = ctiFloatVal($recordNode["rule_oid3"]); + $sqlcmd_where3 = utf8_decode($recordNode["sqlcmd_where3"]); + $sqlcmd_justificatif3 = utf8_decode($recordNode["sqlcmd_justificatif3"]); + $table3 = ctiFloatVal($recordNode["table3"]); + + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + $texte_abrege = toSQL($texte_abrege); + $description = toSQL($description); + $is_cti = toSQL($is_cti); + $is_hide = toSQL($is_hide); + $is_active = toSQL($is_active); + $sqlcmd_where1 = toSQL($sqlcmd_where1); + $sqlcmd_justificatif1 = toSQL($sqlcmd_justificatif1); + $sqlcmd_where2 = toSQL($sqlcmd_where2); + $sqlcmd_justificatif2 = toSQL($sqlcmd_justificatif2); + $sqlcmd_where3 = toSQL($sqlcmd_where3); + $sqlcmd_justificatif3 = toSQL($sqlcmd_justificatif3); + + if ($action != "delete" && $action != "copy" && $action != "execute_rules" && $action != "purge_history") { + + // creation ou mise à jour de la liste + if ($oid == -1) { + + $sqlcmd = "INSERT INTO activite.t_expert_controle + ( + code, + texte, + texte_court, + texte_abrege, + description, + is_cti, + is_hide, + gravite_id, + etat_cible, + prestataire_id, + is_active, + alert_exp + ) + VALUES( + '$code', + '$texte', + '$texte_court', + '$texte_abrege', + '$description', + '$is_cti', + '$is_hide', + $gravite, + $etat_cible, + $prestataire_id, + '$is_active', + '$is_alert' + ) "; + $result = $database->exec($sqlcmd); + if ($result == FALSE) { + + } + else { + $result = $database->exec( + "SELECT max(oid) as oid FROM + activite.t_expert_controle + WHERE code = '$code' AND texte = '$texte'" + ); + if ($result != false) { + $record = $database->nextRecordInto(); + if ($record != FALSE) { + $oid = $record[0] + 0; + } + } + } + } + + else { + + $sqlcmd = "UPDATE activite.t_expert_controle SET + texte = '$texte', + texte_court = '$texte_court', + texte_abrege = '$texte_abrege', + description = '$description', + is_cti = '$is_cti' , + is_hide = '$is_hide' , + gravite_id = $gravite, + etat_cible = $etat_cible, + prestataire_id = $prestataire_id, + is_active = '$is_active', + alert_exp = '$is_alert' + WHERE oid = $oid; + UPDATE activite.t_expert_controle SET + code = '$code' + WHERE oid = $oid; + "; + $result = $database->exec($sqlcmd); + } + + // Ajout des règles + $sqlcmd = "DELETE FROM activite.t_expert_controle_rule + USING + ( + SELECT t_expert_controle_rule.oid + FROM activite.t_expert_controle_rule + LEFT JOIN activite.t_expert_controle ON t_expert_controle_rule.controle_id = t_expert_controle.oid + WHERE t_expert_controle.oid IS NULL + ) subview + WHERE t_expert_controle_rule.oid = subview.oid; + + INSERT INTO activite.t_expert_controle_rule ( + controle_id, + numero, + sqlcmd_where, + sqlcmd_justificatif, + table_id + ) + SELECT t_expert_controle.oid AS controle_id, + 1::bigint AS numero, + '' AS sqlcmd_where, + '' AS sqlcmd_justificatif, + 0::bigint as table_id + FROM activite.t_expert_controle + LEFT JOIN activite.t_expert_controle_rule ON t_expert_controle_rule.controle_id = t_expert_controle.oid AND t_expert_controle_rule.numero = 1 + WHERE t_expert_controle_rule.oid IS NULL + UNION + SELECT t_expert_controle.oid AS controle_id, + 2::bigint AS numero, + '' AS sqlcmd_where, + '' AS sqlcmd_justificatif, + 0::bigint as table_id + FROM activite.t_expert_controle + LEFT JOIN activite.t_expert_controle_rule ON t_expert_controle_rule.controle_id = t_expert_controle.oid AND t_expert_controle_rule.numero = 2 + WHERE t_expert_controle_rule.oid IS NULL + UNION ALL + SELECT t_expert_controle.oid AS controle_id, + 3::bigint AS numero, + '' AS sqlcmd_where, + '' AS sqlcmd_justificatif, + 0::bigint as table_id + FROM activite.t_expert_controle + LEFT JOIN activite.t_expert_controle_rule ON t_expert_controle_rule.controle_id = t_expert_controle.oid AND t_expert_controle_rule.numero = 3 + WHERE t_expert_controle_rule.oid IS NULL;"; + $result = $database->exec($sqlcmd); + + if ($oid != 0) { + + $sqlcmd = + "UPDATE activite.t_expert_controle_rule + SET sqlcmd_where = '$sqlcmd_where1', + sqlcmd_justificatif = '$sqlcmd_justificatif1', + table_id = $table1 + WHERE controle_id = $oid AND + numero = 1; + + UPDATE activite.t_expert_controle_rule + SET sqlcmd_where = '$sqlcmd_where2', + sqlcmd_justificatif = '$sqlcmd_justificatif2', + table_id = $table2 + WHERE controle_id = $oid AND + numero = 2; + + UPDATE activite.t_expert_controle_rule + SET sqlcmd_where = '$sqlcmd_where3', + sqlcmd_justificatif = '$sqlcmd_justificatif3', + table_id = $table3 + WHERE controle_id = $oid AND + numero = 3"; + $result = $database->exec($sqlcmd); + } + } + + if ($action == "copy") { + + $pos = stripos($code, "_"); + if ($pos === false) { + $fromcode = $code . "_"; + } + else { + $fromcode = substr($code,0,$pos) . "_"; + } + + $last_oid = 1; + $result = $database->exec("SELECT max(to_number(substr(code,length('$fromcode')+1,10), '999999')) as oid from activite.t_expert_controle WHERE code LIKE '$fromcode%'"); + if ($result != false) { + $record = $database->nextRecordInto(); + if ($record != FALSE) { + $last_oid = $record[0] + 0; + } + } + if ($last_oid == 0) { + $last_oid = 1; + } + $last_oid++; + + $sqlcmd = "INSERT INTO activite.t_expert_controle(code, texte, texte_court) "; + $sqlcmd = $sqlcmd . "SELECT '$fromcode$last_oid', 'Copie de ' || texte , 'Copie de ' || texte_court "; + $sqlcmd = $sqlcmd . "FROM activite.t_expert_controle WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + $oid = 0; + $result = $database->exec( + "SELECT max(oid) as oid FROM + activite.t_expert_controle + WHERE code = '$fromcode$last_oid' " + ); + if ($result != false) { + $record = $database->nextRecordInto(); + if ($record != FALSE) { + $oid = $record[0] + 0; + } + } + } + + if ($action == "delete") { + $sqlcmd = "DELETE FROM activite.t_expert_controle WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + $sqlcmd = "DELETE FROM activite.t_expert_controle_rule WHERE controle_id = $oid"; + $result = $database->exec($sqlcmd); + } + + if ($action == "purge_history") { + $sqlcmd = "DELETE FROM activite.p_expert_rss_controle WHERE controle_id = $oid"; + $result = $database->exec($sqlcmd); + } + } + + + // Mise à jour paramètres généraux + if ($mode == 2) { + $EXPERT_ACTIVE = utf8_decode($recordNode["EXPERT_ACTIVE"]); + $EXPERT_DATE_DEBUT = utf8_decode($recordNode["EXPERT_DATE_DEBUT"]); + + if ($action == "save") { + + $sqlcmd = "UPDATE activite.t_divers + SET valeur = '$EXPERT_ACTIVE' + WHERE code = 'EXPERT_ACTIVE' AND + valeur IS DISTINCT FROM '$EXPERT_ACTIVE'; "; + $result = $database->exec($sqlcmd); + + $sqlcmd = "UPDATE activite.t_divers + SET valeur_date = to_date('$EXPERT_DATE_DEBUT','DD/MM/YYYY'), + valeur = '$EXPERT_DATE_DEBUT' + WHERE code = 'EXPERT_DATE_DEBUT' AND + valeur_date IS DISTINCT FROM to_date('$EXPERT_DATE_DEBUT','DD/MM/YYYY'); "; + $result = $database->exec($sqlcmd); + } + } + + + + // exécution des règles + if ($action == "execute_rules") { + $return_code = ""; + $return_message = ""; + + // Liste des oids des controles à exécuter. Ils doivent être dans une chaine de caractères séparés par + // un espace, une virgule, un point-virgule, un double-points ou une barre verticale + $oids = @$_POST["oids"]; + if ($oids == "") { + $oids = @$_GET["oids"]; + } + if (strlen($oids) > 0) { + $oids_to_control = preg_split("/[\s,;:\|]+/", $oids); + } + + $exp_manager = new ControleExpertManager('activite'); + $exp_manager->prestataire = $_SESSION['admProvider']; + $exp_manager->dictionary = $_SESSION['rootDir'] .'modules/activite/php/expert/dictionary.json'; + if ($exp_manager->run_controls($oids_to_control)) { + $exp_return_code = 'OK'; + $exp_message = $exp_manager->msg; + } + else { + $exp_return_code = 'KO'; + $exp_message = $exp_manager->error_msg; + } + + $httpString = ""; + } + + // exécution des règles + if ($action == "create_documentation" || $action == "save" || $action == "delete") { + + $reference_template_file = "../references/iCTI_ACTI_ExpertControle.template.HTML"; + $reference_file = "../references/iCTI_ACTI_ExpertControle.HTML"; + if (file_exists($reference_template_file)) { + $reference_template_handle = @fopen($reference_template_file, "r"); + $reference_handle = @fopen($reference_file, "w"); + if ($reference_template_handle) { + $currentIsControle = false; + $controleString = ""; + while (!feof($reference_template_handle)) { + $buffer = fgets($reference_template_handle, 99999); + if (trim($buffer) == "") { + $currentIsControle = true; + } + else { + if (trim($buffer) == "") { + + $sqlcmd = "SELECT + t_expert_controle.oid, + t_expert_controle.code, + t_expert_controle.texte, + t_expert_controle.description, + t_expert_controle.is_cti + FROM activite.t_expert_controle + WHERE t_expert_controle.oid > 0 AND is_datim <> 1 AND is_global <> 1 AND is_hide <> 1 AND description <> '' + ORDER BY t_expert_controle.code"; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + if ($record != FALSE) { + $ok = TRUE; + + $oid = $record[0]; + $code = toHTML(trim($record[1])); + $texte = toHTML(trim($record[2])); + $description = trim($record[3]); + $is_cti = toHTML(trim($record[4])); + + if (substr($description,0,3) == "_c_") { + $description = uncompress64(substr($description, 3)); + } + $description = str_replace('SIZE="10"','SIZE="3"',$description); + $description = str_replace('SIZE="12"','SIZE="3"',$description); + $description = str_replace('SIZE="14"','SIZE="3"',$description); + + $controleStringControle = $controleString; + $controleStringControle = str_replace("[CONTROLE_CODE]",$code,$controleStringControle); + $controleStringControle = str_replace("[CONTROLE_TEXT]",$texte,$controleStringControle); + $controleStringControle = str_replace("[CONTROLE_DESCRIPTION]",$description,$controleStringControle); + + fwrite($reference_handle,$controleStringControle); + } + } + } + + $currentIsControle = false; + } + else { + if ($currentIsControle == false) { + fwrite($reference_handle,$buffer); + } + else { + $controleString = "$controleString$buffer"; + } + } + } + } + } + @fclose($reference_template_handle); + @fclose($reference_handle); + } + } + + return $httpString; +} + + + +function setRecords_budget_cle() { + + global $database; + global $action; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $texte_court = utf8_decode($recordNode["texte_court"]); + $code_original = utf8_decode($recordNode["code_original"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + $code_original = toSQL($code_original); + + // creation ou mise à jour de la liste + if ($oid == -1) { + $sqlcmd = "INSERT INTO activite.t_budget_cle (code, texte, texte_court) + VALUES('$code', '$texte', '$texte_court')"; + $result = $database->exec($sqlcmd); + + } + else { + + $sqlcmd = "UPDATE activite.t_budget_cle SET + code = '$code', + texte = '$texte', + texte_court = '$texte_court' + WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + } + + + } + + if ($action == "delete") { + $sqlcmd = "UPDATE activite.p_sejours_budget_cle SET budget_cle_id = 0 WHERE budget_cle_id = $oid; + DELETE FROM activite.t_budget_cle_rule WHERE budget_cle_id = $oid; + DELETE FROM activite.t_budget_cle WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + } + + +} + + + +function setRecords_budget_cle_rule() { + + global $database; + global $action; + global $recordNode; + + // Action spécifique : executer les règles + if ($action == "BUR_execute_rules") { + $sqlcmd = "SELECT * FROM activite.cti_budget_execute_rules()"; + $result = $database->exec($sqlcmd); + return; + } + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $priorite = utf8_decode($recordNode["priorite"]); + $budget_cle_id = utf8_decode($recordNode["budget_cle_id"]); + + $liste_specialite = utf8_decode($recordNode["liste_specialite"]); + $liste_medecin = utf8_decode($recordNode["liste_medecin"]); + $liste_service = utf8_decode($recordNode["liste_service"]); + $liste_acte = utf8_decode($recordNode["liste_acte"]); + $liste_rubrique = utf8_decode($recordNode["liste_rubrique"]); + $liste_ghm = utf8_decode($recordNode["liste_ghm"]); + $liste_sauf_ghm = utf8_decode($recordNode["liste_sauf_ghm"]); + $liste_diagnostic_principal = utf8_decode($recordNode["liste_diagnostic_principal"]); + $liste_diagnostic_relie = utf8_decode($recordNode["liste_diagnostic_relie"]); + $liste_diagnostic_associe = utf8_decode($recordNode["liste_diagnostic_associe"]); + $liste_finess = utf8_decode($recordNode["liste_finess"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $priorite = ctiFloatVal($priorite); + $budget_cle_id = ctiFloatVal($budget_cle_id); + + // creation ou mise à jour de la liste + if ($oid == -1) { + $sqlcmd = "INSERT INTO activite.t_budget_cle_rule (code, texte, priorite, budget_cle_id, + liste_specialite, + liste_medecin, + liste_service, + liste_acte, + liste_rubrique, + liste_ghm, + liste_sauf_ghm, + liste_diagnostic_principal, + liste_diagnostic_relie, + liste_diagnostic_associe, + liste_finess + ) + VALUES('$code', '$texte', $priorite, $budget_cle_id, + activite.cti_budget_translate_list('$liste_specialite'), + activite.cti_budget_translate_list('$liste_medecin'), + activite.cti_budget_translate_list('$liste_service'), + activite.cti_budget_translate_list('$liste_acte'), + activite.cti_budget_translate_list('$liste_rubrique'), + activite.cti_budget_translate_list('$liste_ghm'), + activite.cti_budget_translate_list('$liste_sauf_ghm'), + activite.cti_budget_translate_list('$liste_diagnostic_principal'), + activite.cti_budget_translate_list('$liste_diagnostic_relie'), + activite.cti_budget_translate_list('$liste_diagnostic_associe'), + activite.cti_budget_translate_list('$liste_finess') + )"; + $result = $database->exec($sqlcmd); + + } + else { + + $sqlcmd = "UPDATE activite.t_budget_cle_rule SET + code = '$code', + texte = '$texte', + priorite = $priorite, + budget_cle_id = $budget_cle_id, + liste_specialite = activite.cti_budget_translate_list('$liste_specialite'), + liste_medecin = activite.cti_budget_translate_list('$liste_medecin'), + liste_service = activite.cti_budget_translate_list('$liste_service'), + liste_acte = activite.cti_budget_translate_list('$liste_acte'), + liste_rubrique = activite.cti_budget_translate_list('$liste_rubrique'), + liste_ghm = activite.cti_budget_translate_list('$liste_ghm'), + liste_sauf_ghm = activite.cti_budget_translate_list('$liste_sauf_ghm'), + liste_diagnostic_principal = activite.cti_budget_translate_list('$liste_diagnostic_principal'), + liste_diagnostic_relie = activite.cti_budget_translate_list('$liste_diagnostic_relie'), + liste_diagnostic_associe = activite.cti_budget_translate_list('$liste_diagnostic_associe'), + liste_finess= activite.cti_budget_translate_list('$liste_finess') + WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + } + + + } + + if ($action == "delete") { + $sqlcmd = "DELETE FROM activite.t_budget_cle_rule WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + } + + +} + + + + +function setRecords_budget_cle_budget() { + + global $database; + global $action; + global $recordNode; + + $budget_id = ctiFloatVal($recordNode["oid"]); + + // initialisation budget + $sqlcmd = "UPDATE activite.t_budget_cle_budget + SET indicateur_id = t_budget_indicateur.indicateur_id + FROM activite.t_budget_indicateur + WHERE t_budget_indicateur.oid = t_budget_cle_budget.budget_indicateur_id AND + t_budget_cle_budget.indicateur_id IS DISTINCT FROM t_budget_indicateur.indicateur_id; + + + INSERT INTO activite.t_budget_cle_budget ( + budget_id, + budget_cle_id, + date, + budget_indicateur_id, + indicateur_id, + budget + ) + SELECT + t_budget.oid AS budget_id, + t_budget_cle.oid AS budget_cle_id, + date(date_trunc('month',p_calendrier_mois.date_fin)) AS date, + t_budget_indicateur.oid AS budget_indicateur_id, + t_budget_indicateur.indicateur_id AS indicateur_id, + 0::numeric AS budget + FROM + activite.t_budget + JOIN activite.t_budget_cle ON 1=1 + JOIN activite.t_budget_indicateur ON t_budget_indicateur.budget_id = t_budget.oid + JOIN base.p_calendrier_mois ON p_calendrier_mois.date_debut BETWEEN t_budget.date_debut AND t_budget.date_fin + LEFT JOIN activite.t_budget_cle_budget ON t_budget_cle_budget.budget_id = t_budget.oid AND + t_budget_cle_budget.budget_cle_id = t_budget_cle.oid AND + t_budget_cle_budget.budget_indicateur_id = t_budget_indicateur.oid AND + date(date_trunc('month',t_budget_cle_budget.date)) = date(date_trunc('month',p_calendrier_mois.date_fin)) + WHERE t_budget_cle_budget.budget_id IS NULL;"; + $result = $database->exec($sqlcmd); + + // Modification des valeurs de budget + + + foreach ($recordNode->INDICATEUR as $indicateur_node) { + $budget_indicateur_id = ctiFloatVal($indicateur_node["budget_indicateur_id"]); + foreach ($indicateur_node->CLE as $cle_node) { + $budget_cle_id = ctiFloatVal($cle_node["budget_cle_id"]); + $sqlcmd = ""; + for ($m = 1; $m <= 12; $m++) { + if ($m < 10) { + $mm = "0$m"; + } + else { + $mm = "$m"; + } + $budget_date = $indicateur_node["date_$mm"]; + $budget_value = str_replace(',','.',$cle_node["budget_$mm"]); + $budget_value = ctiFloatVal($budget_value); + + $sqlcmd = "$sqlcmd UPDATE activite.t_budget_cle_budget + SET budget = $budget_value + WHERE budget_id = $budget_id AND + budget_cle_id = $budget_cle_id AND + budget_indicateur_id = $budget_indicateur_id AND + date = '$budget_date' AND + budget IS DISTINCT FROM $budget_value; "; + + } + $result = $database->exec($sqlcmd); + + } + } + + +} + + + +function setRecords_forme_activite() { + + global $database; + global $action; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $texte_court = utf8_decode($recordNode["texte_court"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + + // creation ou mise à jour de la liste + if ($oid == -1) { + $sqlcmd = "INSERT INTO activite.t_forme_activite (code, texte, texte_court) + VALUES('$code', '$texte', '$texte_court')"; + $result = $database->exec($sqlcmd); + + } + else { + + $sqlcmd = "UPDATE activite.t_forme_activite SET + code = '$code', + texte = '$texte', + texte_court = '$texte_court' + WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + } + + + } + + if ($action == "delete") { + $sqlcmd = "DELETE FROM activite.t_forme_activite WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + } + + +} + + + + +function setRecords_forme_activite_rule() { + + global $database; + global $action; + global $recordNode; + + // Action spécifique : executer les règles + if ($action == "FAR_execute_rules") { + $sqlcmd = "SELECT activite.cti_reorganize_forme_activite();"; + $result = $database->exec($sqlcmd); + return; + } + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $priorite = utf8_decode($recordNode["priorite"]); + $forme_activite_id = utf8_decode($recordNode["forme_activite_id"]); + + $liste_type_sejour = utf8_decode($recordNode["liste_type_sejour"]); + $liste_specialite = utf8_decode($recordNode["liste_specialite"]); + $liste_medecin = utf8_decode($recordNode["liste_medecin"]); + $liste_unite_fonctionnelle = utf8_decode($recordNode["liste_unite_fonctionnelle"]); + $liste_service = utf8_decode($recordNode["liste_service"]); + $liste_etage = utf8_decode($recordNode["liste_etage"]); + $liste_unite_fonctionnelle_entree = utf8_decode($recordNode["liste_unite_fonctionnelle_entree"]); + $liste_service_entree = utf8_decode($recordNode["liste_service_entree"]); + $liste_etage_entree = utf8_decode($recordNode["liste_etage_entree"]); + $liste_acte = utf8_decode($recordNode["liste_acte"]); + $liste_rubrique = utf8_decode($recordNode["liste_rubrique"]); + $liste_prestation = utf8_decode($recordNode["liste_prestation"]); + $liste_ghm = utf8_decode($recordNode["liste_ghm"]); + $liste_sauf_ghm = utf8_decode($recordNode["liste_sauf_ghm"]); + $liste_diagnostic_principal = utf8_decode($recordNode["liste_diagnostic_principal"]); + $liste_diagnostic_relie = utf8_decode($recordNode["liste_diagnostic_relie"]); + $liste_diagnostic_associe = utf8_decode($recordNode["liste_diagnostic_associe"]); + $liste_finess = utf8_decode($recordNode["liste_finess"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $priorite = ctiFloatVal($priorite); + $forme_activite_id = ctiFloatVal($forme_activite_id); + + // creation ou mise à jour de la liste + if ($oid == -1) { + $sqlcmd = "INSERT INTO activite.t_forme_activite_rule (code, texte, priorite, forme_activite_id, + liste_type_sejour, + liste_specialite, + liste_medecin, + liste_unite_fonctionnelle, + liste_service, + liste_etage, + liste_unite_fonctionnelle_entree, + liste_service_entree, + liste_etage_entree, + liste_acte, + liste_rubrique, + liste_prestation, + liste_ghm, + liste_sauf_ghm, + liste_diagnostic_principal, + liste_diagnostic_relie, + liste_diagnostic_associe, + liste_finess + ) + VALUES('$code', '$texte', $priorite, $forme_activite_id, + activite.cti_budget_translate_list('$liste_type_sejour'), + activite.cti_budget_translate_list('$liste_specialite'), + activite.cti_budget_translate_list('$liste_medecin'), + activite.cti_budget_translate_list('$liste_unite_fonctionnelle'), + activite.cti_budget_translate_list('$liste_service'), + activite.cti_budget_translate_list('$liste_etage'), + activite.cti_budget_translate_list('$liste_unite_fonctionnelle_entree'), + activite.cti_budget_translate_list('$liste_service_entree'), + activite.cti_budget_translate_list('$liste_etage_entree'), + activite.cti_budget_translate_list('$liste_acte'), + activite.cti_budget_translate_list('$liste_rubrique'), + activite.cti_budget_translate_list('$liste_prestation'), + activite.cti_budget_translate_list('$liste_ghm'), + activite.cti_budget_translate_list('$liste_sauf_ghm'), + activite.cti_budget_translate_list('$liste_diagnostic_principal'), + activite.cti_budget_translate_list('$liste_diagnostic_relie'), + activite.cti_budget_translate_list('$liste_diagnostic_associe'), + activite.cti_budget_translate_list('$liste_finess') + )"; + $result = $database->exec($sqlcmd); + + } + else { + + $sqlcmd = "UPDATE activite.t_forme_activite_rule SET + code = '$code', + texte = '$texte', + priorite = $priorite, + forme_activite_id = $forme_activite_id, + liste_type_sejour = activite.cti_budget_translate_list('$liste_type_sejour'), + liste_specialite = activite.cti_budget_translate_list('$liste_specialite'), + liste_medecin = activite.cti_budget_translate_list('$liste_medecin'), + liste_unite_fonctionnelle = activite.cti_budget_translate_list('$liste_unite_fonctionnelle'), + liste_service = activite.cti_budget_translate_list('$liste_service'), + liste_etage = activite.cti_budget_translate_list('$liste_etage'), + liste_unite_fonctionnelle_entree = activite.cti_budget_translate_list('$liste_unite_fonctionnelle_entree'), + liste_service_entree = activite.cti_budget_translate_list('$liste_service_entree'), + liste_etage_entree = activite.cti_budget_translate_list('$liste_etage_entree'), + liste_acte = activite.cti_budget_translate_list('$liste_acte'), + liste_rubrique = activite.cti_budget_translate_list('$liste_rubrique'), + liste_prestation = activite.cti_budget_translate_list('$liste_prestation'), + liste_ghm = activite.cti_budget_translate_list('$liste_ghm'), + liste_sauf_ghm = activite.cti_budget_translate_list('$liste_sauf_ghm'), + liste_diagnostic_principal = activite.cti_budget_translate_list('$liste_diagnostic_principal'), + liste_diagnostic_relie = activite.cti_budget_translate_list('$liste_diagnostic_relie'), + liste_diagnostic_associe = activite.cti_budget_translate_list('$liste_diagnostic_associe'), + liste_finess= activite.cti_budget_translate_list('$liste_finess') + WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + } + + + } + + if ($action == "delete") { + $sqlcmd = "DELETE FROM activite.t_forme_activite_rule WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + } + + +} + + + + +function setRecords_filiere_soin() { + + global $database; + global $action; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $texte_court = utf8_decode($recordNode["texte_court"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + + // creation ou mise à jour de la liste + if ($oid == -1) { + $sqlcmd = "INSERT INTO activite.t_filiere_soin (code, texte, texte_court) + VALUES('$code', '$texte', '$texte_court')"; + $result = $database->exec($sqlcmd); + + } + else { + + $sqlcmd = "UPDATE activite.t_filiere_soin SET + code = '$code', + texte = '$texte', + texte_court = '$texte_court' + WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + } + + + } + + if ($action == "delete") { + $sqlcmd = "DELETE FROM activite.t_filiere_soin WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + } + + +} + + + + +function setRecords_filiere_soin_rule() { + + global $database; + global $action; + global $recordNode; + + // Action spécifique : executer les règles + if ($action == "FRU_execute_rules") { + $sqlcmd = "SELECT activite.cti_filiere_soin_execute_rule()"; + $result = $database->exec($sqlcmd); + return; + } + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $priorite = utf8_decode($recordNode["priorite"]); + $filiere_soin_id = utf8_decode($recordNode["filiere_soin_id"]); + + $liste_type_sejour = utf8_decode($recordNode["liste_type_sejour"]); + $liste_specialite = utf8_decode($recordNode["liste_specialite"]); + $liste_medecin = utf8_decode($recordNode["liste_medecin"]); + $liste_unite_fonctionnelle = utf8_decode($recordNode["liste_unite_fonctionnelle"]); + $liste_service = utf8_decode($recordNode["liste_service"]); + $liste_etage = utf8_decode($recordNode["liste_etage"]); + $liste_unite_fonctionnelle_entree = utf8_decode($recordNode["liste_unite_fonctionnelle_entree"]); + $liste_service_entree = utf8_decode($recordNode["liste_service_entree"]); + $liste_etage_entree = utf8_decode($recordNode["liste_etage_entree"]); + $liste_acte = utf8_decode($recordNode["liste_acte"]); + $liste_rubrique = utf8_decode($recordNode["liste_rubrique"]); + $liste_prestation = utf8_decode($recordNode["liste_prestation"]); + $liste_ghm = utf8_decode($recordNode["liste_ghm"]); + $liste_sauf_ghm = utf8_decode($recordNode["liste_sauf_ghm"]); + $liste_diagnostic_principal = utf8_decode($recordNode["liste_diagnostic_principal"]); + $liste_diagnostic_relie = utf8_decode($recordNode["liste_diagnostic_relie"]); + $liste_diagnostic_associe = utf8_decode($recordNode["liste_diagnostic_associe"]); + $liste_finess = utf8_decode($recordNode["liste_finess"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $priorite = ctiFloatVal($priorite); + $filiere_soin_id = ctiFloatVal($filiere_soin_id); + + // creation ou mise à jour de la liste + if ($oid == -1) { + $sqlcmd = "INSERT INTO activite.t_filiere_soin_rule (code, texte, priorite, filiere_soin_id, + liste_type_sejour, + liste_specialite, + liste_medecin, + liste_unite_fonctionnelle, + liste_service, + liste_etage, + liste_unite_fonctionnelle_entree, + liste_service_entree, + liste_etage_entree, + liste_acte, + liste_rubrique, + liste_prestation, + liste_ghm, + liste_sauf_ghm, + liste_diagnostic_principal, + liste_diagnostic_relie, + liste_diagnostic_associe, + liste_finess + ) + VALUES('$code', '$texte', $priorite, $filiere_soin_id, + activite.cti_budget_translate_list('$liste_type_sejour'), + activite.cti_budget_translate_list('$liste_specialite'), + activite.cti_budget_translate_list('$liste_medecin'), + activite.cti_budget_translate_list('$liste_unite_fonctionnelle'), + activite.cti_budget_translate_list('$liste_service'), + activite.cti_budget_translate_list('$liste_etage'), + activite.cti_budget_translate_list('$liste_unite_fonctionnelle_entree'), + activite.cti_budget_translate_list('$liste_service_entree'), + activite.cti_budget_translate_list('$liste_etage_entree'), + activite.cti_budget_translate_list('$liste_acte'), + activite.cti_budget_translate_list('$liste_rubrique'), + activite.cti_budget_translate_list('$liste_prestation'), + activite.cti_budget_translate_list('$liste_ghm'), + activite.cti_budget_translate_list('$liste_sauf_ghm'), + activite.cti_budget_translate_list('$liste_diagnostic_principal'), + activite.cti_budget_translate_list('$liste_diagnostic_relie'), + activite.cti_budget_translate_list('$liste_diagnostic_associe'), + activite.cti_budget_translate_list('$liste_finess') + )"; + $result = $database->exec($sqlcmd); + + } + else { + + $sqlcmd = "UPDATE activite.t_filiere_soin_rule SET + code = '$code', + texte = '$texte', + priorite = $priorite, + filiere_soin_id = $filiere_soin_id, + liste_type_sejour = activite.cti_budget_translate_list('$liste_type_sejour'), + liste_specialite = activite.cti_budget_translate_list('$liste_specialite'), + liste_medecin = activite.cti_budget_translate_list('$liste_medecin'), + liste_unite_fonctionnelle = activite.cti_budget_translate_list('$liste_unite_fonctionnelle'), + liste_service = activite.cti_budget_translate_list('$liste_service'), + liste_etage = activite.cti_budget_translate_list('$liste_etage'), + liste_unite_fonctionnelle_entree = activite.cti_budget_translate_list('$liste_unite_fonctionnelle_entree'), + liste_service_entree = activite.cti_budget_translate_list('$liste_service_entree'), + liste_etage_entree = activite.cti_budget_translate_list('$liste_etage_entree'), + liste_acte = activite.cti_budget_translate_list('$liste_acte'), + liste_rubrique = activite.cti_budget_translate_list('$liste_rubrique'), + liste_prestation = activite.cti_budget_translate_list('$liste_prestation'), + liste_ghm = activite.cti_budget_translate_list('$liste_ghm'), + liste_sauf_ghm = activite.cti_budget_translate_list('$liste_sauf_ghm'), + liste_diagnostic_principal = activite.cti_budget_translate_list('$liste_diagnostic_principal'), + liste_diagnostic_relie = activite.cti_budget_translate_list('$liste_diagnostic_relie'), + liste_diagnostic_associe = activite.cti_budget_translate_list('$liste_diagnostic_associe'), + liste_finess= activite.cti_budget_translate_list('$liste_finess') + WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + } + + + } + + if ($action == "delete") { + $sqlcmd = "DELETE FROM activite.t_filiere_soin_rule WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + } + + +} + + + +function setRecords_pole_rule() { + + global $database; + global $action; + global $recordNode; + + // Action spécifique : executer les règles + if ($action == "POR_execute_rules") { + $sqlcmd = "SELECT activite.cti_reorganize_pole();"; + $result = $database->exec($sqlcmd); + return; + } + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $priorite = utf8_decode($recordNode["priorite"]); + $pole_id = utf8_decode($recordNode["pole_id"]); + + $liste_type_sejour = utf8_decode($recordNode["liste_type_sejour"]); + $liste_specialite = utf8_decode($recordNode["liste_specialite"]); + $liste_medecin = utf8_decode($recordNode["liste_medecin"]); + $liste_unite_fonctionnelle = utf8_decode($recordNode["liste_unite_fonctionnelle"]); + $liste_service = utf8_decode($recordNode["liste_service"]); + $liste_etage = utf8_decode($recordNode["liste_etage"]); + $liste_acte = utf8_decode($recordNode["liste_acte"]); + $liste_rubrique = utf8_decode($recordNode["liste_rubrique"]); + $liste_prestation = utf8_decode($recordNode["liste_prestation"]); + $liste_ghm = utf8_decode($recordNode["liste_ghm"]); + $liste_sauf_ghm = utf8_decode($recordNode["liste_sauf_ghm"]); + $liste_diagnostic_principal = utf8_decode($recordNode["liste_diagnostic_principal"]); + $liste_diagnostic_relie = utf8_decode($recordNode["liste_diagnostic_relie"]); + $liste_diagnostic_associe = utf8_decode($recordNode["liste_diagnostic_associe"]); + $liste_finess = utf8_decode($recordNode["liste_finess"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $priorite = ctiFloatVal($priorite); + $pole_id = ctiFloatVal($pole_id); + + // creation ou mise à jour de la liste + if ($oid == -1) { + $sqlcmd = "INSERT INTO activite.t_pole_rule (code, texte, priorite, pole_id, + liste_type_sejour, + liste_specialite, + liste_medecin, + liste_unite_fonctionnelle, + liste_service, + liste_etage, + liste_acte, + liste_rubrique, + liste_prestation, + liste_ghm, + liste_sauf_ghm, + liste_diagnostic_principal, + liste_diagnostic_relie, + liste_diagnostic_associe, + liste_finess + ) + VALUES('$code', '$texte', $priorite, $pole_id, + activite.cti_budget_translate_list('$liste_type_sejour'), + activite.cti_budget_translate_list('$liste_specialite'), + activite.cti_budget_translate_list('$liste_medecin'), + activite.cti_budget_translate_list('$liste_unite_fonctionnelle'), + activite.cti_budget_translate_list('$liste_service'), + activite.cti_budget_translate_list('$liste_etage'), + activite.cti_budget_translate_list('$liste_acte'), + activite.cti_budget_translate_list('$liste_rubrique'), + activite.cti_budget_translate_list('$liste_prestation'), + activite.cti_budget_translate_list('$liste_ghm'), + activite.cti_budget_translate_list('$liste_sauf_ghm'), + activite.cti_budget_translate_list('$liste_diagnostic_principal'), + activite.cti_budget_translate_list('$liste_diagnostic_relie'), + activite.cti_budget_translate_list('$liste_diagnostic_associe'), + activite.cti_budget_translate_list('$liste_finess') + )"; + $result = $database->exec($sqlcmd); + + } + else { + + $sqlcmd = "UPDATE activite.t_pole_rule SET + code = '$code', + texte = '$texte', + priorite = $priorite, + pole_id = $pole_id, + liste_type_sejour = activite.cti_budget_translate_list('$liste_type_sejour'), + liste_specialite = activite.cti_budget_translate_list('$liste_specialite'), + liste_medecin = activite.cti_budget_translate_list('$liste_medecin'), + liste_unite_fonctionnelle = activite.cti_budget_translate_list('$liste_unite_fonctionnelle'), + liste_service = activite.cti_budget_translate_list('$liste_service'), + liste_etage = activite.cti_budget_translate_list('$liste_etage'), + liste_acte = activite.cti_budget_translate_list('$liste_acte'), + liste_rubrique = activite.cti_budget_translate_list('$liste_rubrique'), + liste_prestation = activite.cti_budget_translate_list('$liste_prestation'), + liste_ghm = activite.cti_budget_translate_list('$liste_ghm'), + liste_sauf_ghm = activite.cti_budget_translate_list('$liste_sauf_ghm'), + liste_diagnostic_principal = activite.cti_budget_translate_list('$liste_diagnostic_principal'), + liste_diagnostic_relie = activite.cti_budget_translate_list('$liste_diagnostic_relie'), + liste_diagnostic_associe = activite.cti_budget_translate_list('$liste_diagnostic_associe'), + liste_finess= activite.cti_budget_translate_list('$liste_finess') + WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + } + + + } + + if ($action == "delete") { + $sqlcmd = "DELETE FROM activite.t_pole_rule WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + } + + +} + +function setRecords_compte_produit_analytique_rule() { + + global $database; + global $action; + global $recordNode; + + // Action spécifique : executer les règles + if ($action == "CAR_execute_rules") { + $sqlcmd = "SELECT activite.cti_reorganize_compte_analytique();"; + $result = $database->exec($sqlcmd); + return; + } + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $priorite = utf8_decode($recordNode["priorite"]); + $compte_produit_analytique_id = utf8_decode($recordNode["compte_produit_analytique_id"]); + + $liste_type_sejour = utf8_decode($recordNode["liste_type_sejour"]); + $liste_specialite = utf8_decode($recordNode["liste_specialite"]); + $liste_medecin = utf8_decode($recordNode["liste_medecin"]); + $liste_ghm = utf8_decode($recordNode["liste_ghm"]); + $liste_sauf_ghm = utf8_decode($recordNode["liste_sauf_ghm"]); + $liste_diagnostic_principal = utf8_decode($recordNode["liste_diagnostic_principal"]); + $liste_diagnostic_relie = utf8_decode($recordNode["liste_diagnostic_relie"]); + $liste_diagnostic_associe = utf8_decode($recordNode["liste_diagnostic_associe"]); + $liste_acte = utf8_decode($recordNode["liste_acte"]); + $liste_unite_fonctionnelle = utf8_decode($recordNode["liste_unite_fonctionnelle"]); + $liste_service = utf8_decode($recordNode["liste_service"]); + $liste_etage = utf8_decode($recordNode["liste_etage"]); + $liste_rubrique = utf8_decode($recordNode["liste_rubrique"]); + $liste_compte_produit = utf8_decode($recordNode["liste_compte_produit"]); + $liste_sauf_compte_produit = utf8_decode($recordNode["liste_sauf_compte_produit"]); + $liste_prestation = utf8_decode($recordNode["liste_prestation"]); + $liste_sauf_prestation = utf8_decode($recordNode["liste_sauf_prestation"]); + + $liste_finess = utf8_decode($recordNode["liste_finess"]); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $priorite = ctiFloatVal($priorite); + $compte_produit_analytique_id = ctiFloatVal($compte_produit_analytique_id); + + // creation ou mise à jour de la liste + if ($oid == -1) { + $sqlcmd = "INSERT INTO activite.t_compte_produit_analytique_rule (code, texte, priorite, compte_produit_analytique_id, + liste_type_sejour, + liste_specialite, + liste_medecin, + liste_ghm, + liste_sauf_ghm, + liste_diagnostic_principal, + liste_diagnostic_relie, + liste_diagnostic_associe, + liste_acte, + liste_unite_fonctionnelle, + liste_service, + liste_etage, + liste_rubrique, + liste_compte_produit, + liste_sauf_compte_produit, + liste_prestation, + liste_sauf_prestation, + liste_finess + ) + VALUES('$code', '$texte', $priorite, $compte_produit_analytique_id, + activite.cti_budget_translate_list('$liste_type_sejour'), + activite.cti_budget_translate_list('$liste_specialite'), + activite.cti_budget_translate_list('$liste_medecin'), + activite.cti_budget_translate_list('$liste_ghm'), + activite.cti_budget_translate_list('$liste_sauf_ghm'), + activite.cti_budget_translate_list('$liste_diagnostic_principal'), + activite.cti_budget_translate_list('$liste_diagnostic_relie'), + activite.cti_budget_translate_list('$liste_diagnostic_associe'), + activite.cti_budget_translate_list('$liste_acte'), + activite.cti_budget_translate_list('$liste_unite_fonctionnelle'), + activite.cti_budget_translate_list('$liste_service'), + activite.cti_budget_translate_list('$liste_etage'), + activite.cti_budget_translate_list('$liste_rubrique'), + activite.cti_budget_translate_list('$liste_compte_produit'), + activite.cti_budget_translate_list('$liste_sauf_compte_produit'), + activite.cti_budget_translate_list('$liste_prestation'), + activite.cti_budget_translate_list('$liste_sauf_prestation'), + activite.cti_budget_translate_list('$liste_finess') + )"; + $result = $database->exec($sqlcmd); + + } + else { + + $sqlcmd = "UPDATE activite.t_compte_produit_analytique_rule SET + code = '$code', + texte = '$texte', + priorite = $priorite, + compte_produit_analytique_id = $compte_produit_analytique_id, + liste_type_sejour = activite.cti_budget_translate_list('$liste_type_sejour'), + liste_specialite = activite.cti_budget_translate_list('$liste_specialite'), + liste_medecin = activite.cti_budget_translate_list('$liste_medecin'), + liste_ghm = activite.cti_budget_translate_list('$liste_ghm'), + liste_sauf_ghm = activite.cti_budget_translate_list('$liste_sauf_ghm'), + liste_diagnostic_principal = activite.cti_budget_translate_list('$liste_diagnostic_principal'), + liste_diagnostic_relie = activite.cti_budget_translate_list('$liste_diagnostic_relie'), + liste_diagnostic_associe = activite.cti_budget_translate_list('$liste_diagnostic_associe'), + liste_acte = activite.cti_budget_translate_list('$liste_acte'), + liste_unite_fonctionnelle = activite.cti_budget_translate_list('$liste_unite_fonctionnelle'), + liste_service = activite.cti_budget_translate_list('$liste_service'), + liste_etage = activite.cti_budget_translate_list('$liste_etage'), + liste_rubrique = activite.cti_budget_translate_list('$liste_rubrique'), + liste_compte_produit = activite.cti_budget_translate_list('$liste_compte_produit'), + liste_sauf_compte_produit = activite.cti_budget_translate_list('$liste_sauf_compte_produit'), + liste_prestation = activite.cti_budget_translate_list('$liste_prestation'), + liste_sauf_prestation = activite.cti_budget_translate_list('$liste_sauf_prestation'), + liste_finess= activite.cti_budget_translate_list('$liste_finess') + WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + } + + + } + + if ($action == "delete") { + $sqlcmd = "DELETE FROM activite.t_compte_produit_analytique_rule WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + } + + +} + + + +function setRecords_calcul_encours() { + + global $database; + global $action; + global $recordNode; + + $type_ligne = trim($recordNode["type_ligne"]); + + $oid = ctiFloatVal($recordNode["oid"]); + $coefficient_is_force = toSQL($recordNode["coefficient_is_force"]); + $coefficient_force = toSQL($recordNode["coefficient_force"]); + $coefficient_force = str_replace(",",".",$coefficient_force); + $coefficient_force = ctiFloatVal($coefficient_force); + $prix_unitaire_is_force = toSQL($recordNode["prix_unitaire_is_force"]); + $prix_unitaire_force = toSQL($recordNode["prix_unitaire_force"]); + $prix_unitaire_force = str_replace(",",".",$prix_unitaire_force); + $prix_unitaire_force = ctiFloatVal($prix_unitaire_force); + $type_valorisation = toSQL($recordNode["type_valorisation"]); + $ignorer = toSQL($recordNode["ignorer"]); + + $code = toSQL($recordNode["code"]); + $valeur = toSQL($recordNode["valeur"]); + + + if ($action != "delete" && $action != "copy" && $action != "execute") { + $code = toSQL($code); + $texte = toSQL($texte); + $texte_court = toSQL($texte_court); + + // creation ou mise à jour + if ($oid != -1) { + if ($type_ligne != "GEN" && $type_ligne != "GENPRESTA") { + $sqlcmd = " + UPDATE activite.t_calcul_encours SET + coefficient_is_force = '$coefficient_is_force', + coefficient_force = $coefficient_force, + prix_unitaire_is_force = '$prix_unitaire_is_force', + prix_unitaire_force = $prix_unitaire_force, + ignorer = '$ignorer' + WHERE oid = $oid ; + + "; + } + if ($type_ligne == "GENPRESTA") { + $sqlcmd = " + UPDATE activite.t_prestations SET + type_valorisation_non_facture = '$type_valorisation' + WHERE oid = $oid ; + + "; + } + if ($type_ligne == "GEN") { + $sqlcmd = " + UPDATE activite.t_divers SET + valeur = '$valeur' + WHERE code = '$code' ; + + "; + } + + $result = $database->exec($sqlcmd); + + } + } + + + if ($action == "execute") { + $submitCmd = "..\import_activite\iCTI_calcul_encours.exe"; + $return = exec($submitCmd); + } +} + +function setRecords_kiwee_params() { + + global $database; + global $action; + global $recordNode; + + $oid = ctiFloatVal($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $valeur = utf8_decode($recordNode["valeur"]); + $description = utf8_decode($recordNode["description"]); + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + $valeur = $valeur; + $description = toSQL($description); + + // Mise à jour de données du paramètre + if ($oid != -1) { + $sqlcmd = "UPDATE activite.t_kiwee_params SET + code = '$code', + texte = '$texte', + valeur = '$valeur'::boolean, + description = '$description' + WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + } + } +} + + +function erase_cache() { + + global $database; + + // Ancienne version + if ($database->cticache == "true") { + $sqlcmd = "SELECT cti_cache_erase as result from cache.cti_cache_erase('iCTI_activite')"; + $result = $database->exec($sqlcmd); + } + + // Nouvelle version + cleanAllCache("iCTI_activite"); + + +} + +/** + * Convertie une chaîne de caractère en double à la manière de ctiFloatVal(). + * Si la chaîne de caractère dépasse la limite de taille que ctiFloatVal() est capable de traiter, + * la fonction retourne la chaîne de caractère sans conversion. + */ +function ctiFloatVal($stringValue) { + $ret = 0; + if (strlen($stringValue) <= 14) { + $ret = floatval($stringValue); + } else { + if (preg_match("/[^0-9]/", $stringValue) === 0) { + $ret = $stringValue; + } + } + return $ret; +} + + +?> \ No newline at end of file diff --git a/php/expert/ControleExpert.class.php b/php/expert/ControleExpert.class.php new file mode 100644 index 0000000..e43006c --- /dev/null +++ b/php/expert/ControleExpert.class.php @@ -0,0 +1,279 @@ +database = $db; + $this->oid = -1; + $this->code = ''; + $this->texte = ''; + $this->date_validite_debut = ''; + $this->date_validite_fin = ''; + $this->is_hide = false;; + $this->is_global = false; + $this->gravite = -1; + $this->etat_cible = array(); + $this->is_cti = 0; + $this->rules = array(); + $this->results = array(); + $this->tables = array(); + $this->expert_date_debut = ''; + $this->last_execution_timestamp = ''; + $this->last_execution_ok = ''; + $this->error_msg = ''; + $this->actif = true; + $this->prestataire = true; + $this->realisable = true; + } + + + + /** + * Setter 'magique' + * à remplacer éventuellemenet par un Setter par propriété + */ + public function __set($property, $value) { + if (property_exists($this, $property)) { + $this->$property = $value; + } + return $this; + } + + + + /** + * Getter 'magique' + * à remplacer éventuellemenet par un getter par propriété + */ + public function __get($property) { + if (property_exists($this, $property)) { + return $this->$property; + } + } + + + + /** + * Lance l'excution du contrôle expert : + * Pour chaque règle du contrôle, exécute la règle et compile les réultats + * dans le tableau $this->results[] + * + * Si toutes les règles se sont bien exécutées, retroune TRUE, si non retourne FALSE + */ + public function run() { + + $nb_rules = count($this->rules); + $nb_success = 0; + + foreach($this->rules as $rule) { + // N'exécute la règle que si elle possède réellement une condition d'exécution + if (strlen($rule->sqlcmd_where) > 0) { + if($rule->run()) { + $this->aggregate_results($rule->results); + $nb_success++; + } + else { + // Empile les erreurs des règles + $this->error_msg .= $rule->error; + } + } + } + // Si des règles ont engendré des erreurs, on améliore le message d'erreur en préfixant avec le code du contrôle + if (strlen($this->error_msg) > 0) { + $this->error_msg = " Contrôle " . $this->code . ". " . $this->error_msg; + } + // Trie le tableau des résultas + ksort($this->results); + + $this->last_execution_ok = $nb_success == $nb_rules ? '1' : '0'; + $this->last_execution_timestamp = date('Y-m-d H:i:s'); + + return $nb_success == $nb_rules; + } + + + + /** + * Récupère les informations des règles associées au contrôle expert. + * Les règles sont stockées par leurs oids dans le tableau $this->rules[] + */ + public function get_rules() { + + if (is_null($this->database)) { + return false; + } + + $request = " + + SELECT + rule.oid as rule_id, + rule.controle_id, + rule.sqlcmd_where, + rule.sqlcmd_justificatif, + rule.numero, + rule.table_id + FROM + activite.t_expert_controle_rule rule + JOIN activite.t_expert_controle controle ON controle.oid = rule.controle_id + WHERE + controle.oid = $this->oid + "; + $result = $this->database->exec($request); + if ($result === false) { + $this->error_msg = 'Erreur pendant la récupération des règles _ requête erronée'; + return false; + } + + while ($row = pg_fetch_array($result)) { + if (strlen($row['sqlcmd_where']) > 0) { + $rule = new RegleExpert(); + $rule->oid = $row['rule_id']; + $rule->sqlcmd_where = $row['sqlcmd_where']; + $rule->sqlcmd_justificatif = $row['sqlcmd_justificatif']; + $rule->numero = $row['numero']; + $rule->table_id = $row['table_id']; + $rule->table = $this->tables[$row['table_id']]; + $rule->expert_date_debut = $this->expert_date_debut; + $rule->etat_cible = $this->etat_cible; + $rule->database = $this->database; + $this->rules[$rule->oid] = $rule; + } + } + return true; + } + + + + //******************************************************************************************** + // + // PRIVATE FUNCTIONS + // + //********************************************************************************************/ + + /** + * Aggrège les résultats des différentes règles d'un contrôle + * Rajoute des justificatifs à un contrôle dont une précédente règle à déjà produit des résultats + * + * @param $new_results : tableu de résultats d'une règle expert + * + * $new_results[$sejour_id] + * | + * |___['infos'] + * | |_____ $info1 = $valeur1 + * | |_____ $info2 = $valeur2 + * | ... + * | + * |___['justificatifs'] + * | |_____ $justif1 = $valeur1 + * | |_____ $justif2 = $valeur2 + * | ... + + */ + private function aggregate_results($new_results) { + + // Le tableau à traiter devient le tableau final si ce dernier est vide + if (count($this->results) == 0) { + $this->results = $new_results; + } + else { + // Détecte les résultats dont la clé (séjour_id) apparait dans le tabelau final et dans le tableau à traiter + $doublons = array_intersect_key($new_results, $this->results); + foreach($doublons as $dossier => $doublon) { + // Rajoute chaque justificatif du résultat du tableau à traiter à la suite + // des justificatifs du résultat final possédant la même clé + foreach($doublon['justificatifs'] as $justif_code => $new_justif) { + $this->results[$dossier]['justificatifs'][$justif_code] = $new_justif; + } + } + // Ajoute les nouveaux résultats au tableau final de résultats + $this->results += $new_results; + } + } +} + +?> \ No newline at end of file diff --git a/php/expert/ControleExpertManager.class.php b/php/expert/ControleExpertManager.class.php new file mode 100644 index 0000000..6b7f41a --- /dev/null +++ b/php/expert/ControleExpertManager.class.php @@ -0,0 +1,619 @@ + array( "name" => 'Tous', + "where" => ''), + + 1 => array( "name" => 'Présents', + "where" => 'AND ((code_sorti IS DISTINCT FROM 1) OR (date_sortie >= date(now())))'), + + 2 => array( "name" => 'Non facturés', + "where" => "AND date_facture = '2099-12-31'::date") + ); + + const JUSTIF_SEPARATOR = ":"; + + // Nom de la base de données iCTI + const DATABASE_NAME = 'iCTI'; + // Classe de la connexion à la base iCTI + const DATABASE_CLASS = 'Database'; + + // Tables sur lequelles on peut faire tourner des règles + private $tables = array( + // séjours + 0 => array( "name" => 'v_sejours_1', + "fictive" => false, + "from" => 'activite.v_sejours_1', + "fields" => array(), + "defaults" => array('v_sejours_1.sejour_id', 'v_sejours_1.no_sejour', 'v_sejours_1.date_sortie')), + // mouvements + 1 => array( "name" => 'v_mouvements_sejour_r_1', + "fictive" => false, + "from" => 'activite.v_mouvements_sejour_r_1', + "fields" => array(), + "defaults" => array('v_mouvements_sejour_r_1.sejour_id', 'v_mouvements_sejour_r_1.no_sejour', 'v_mouvements_sejour_r_1.date_sortie')), + // factures + 2 => array( "name" => 'v_factures_reference_r_2', + "fictive" => false, + "from" => 'activite.v_factures_reference_r_2', + "fields" => array(), + "defaults" => array('v_factures_reference_r_2.sejour_id', 'v_factures_reference_r_2.no_sejour', 'v_factures_reference_r_2.date_sortie')), + // lignes factures honoraires + 3 => array( "name" => 'v_factures_lignes_h_r_1', + "fictive" => false, + "from" => 'activite.v_factures_lignes_h_r_1', + "fields" => array(), + "defaults" => array('v_factures_lignes_h_r_1.sejour_id', 'v_factures_lignes_h_r_1.no_sejour', 'v_factures_lignes_h_r_1.date_sortie')), + // sql brut + 99 => array( "name" => '', + "fictive" => true, + "from" => '', + "fields" => array(), + "defaults" => array('v_sejours_1.sejour_id', 'v_sejours_1.no_sejour', 'v_sejours_1.date_sortie')) + ); + + // Tableau des contrôles + private $controls; + + // Connexion à la base de données + private $database; + + // Indique le que le manager de controle expert est prêt à fonctionner (Connction DB OK et + // initialisations réalisées + private $ready; + + // Message d'erreur en cas d'erreur justement + private $error_msg; + + // Indique si le module expert est activé + private $expert_active; + + // Date à partir de laquelle les séjours sont contrôlables + private $expert_date_debut; + + // Nombre de résultats positifs aux contrôles expert + private $nb_results; + + // Message de retour + private $msg; + + // Nombre de contrôles chargés + private $nb_controls; + + // Emplacement absolu du fichier de traduction des champs des justificatifs + private $dictionary; + + // Tableau des valeurs du dictionnaire de traduction + private $dict_array; + + // Module qui exécute le contrôle expert (activite, pmsi...) + private $module; + + // Nombre de controles activés + private $nb_realisables; + + // Prestataire + private $prestataire; + + + //******************************************************************************************** + // + // PUBLIC FUNCTIONS + // + //********************************************************************************************/ + + + /** + * Constructeur + * + */ + function __construct($schema) { + + $this->ready = false; + $this->error_msg = ''; + $this->msg = ''; + $this->database = null; + $this->expert_active = false; + $this->expert_date_debut = '2013-01-01'; + $this->nb_controls = 0; + $this->nb_results = 0; + $this->dictionary = ''; + $this->module = $schema; + $this->init(); + } + + + + public function __set($property, $value) { + if (property_exists($this, $property)) { + $this->$property = $value; + } + return $this; + } + + + + public function __get($property) { + if (property_exists($this, $property)) { + return $this->$property; + } + } + + + /** + * Execute les controles dont la liste est passée en paramètre. + * Si aucun paramètre n'est passé, tous les contrôles sont exécutés + * + * @param $oids : tableau des oid des controles à exécuter + */ + public function run_controls($oids=null) { + + // SI le module expert n'est pas activé, on sort + if (!$this->expert_active) { + $this->error_msg = "Le module expert n'est pas activé"; + return false; + } + + // Récupère la liste des contrôles si ça n'a pas déjà été fait + if (count($this->controls) == 0) { + if (!$this->get_controls($oids)) { + return false; + }; + } + + // EXECUTION DS CONTROLES ---------------------------------------------------------- + + // Nombre de contrôles réalisés avec succès (avec ou sans résultats) + $nb_succes = 0; + + // Un contrôle est réalisé s'il est actif et si le prestataire pour lequel il doit s'exécuter est celui configuré dans l'environnement + $controles_realises = array(); + + // Détermine si on exécute des contrôles précis via une liste d'oids ou si on les exécute tous + $specific = is_array($oids); + + foreach($this->controls as $key => $control) { + // Vérifie si le controle est bien dans la liste des controles à exécuter + if (!$specific || in_array($control->oid, $oids)) { + // Vérifie que le contrôle est réalisable (activé et bon prestataire) + if ($control->realisable) { + if($control->run()) { + $nb_succes++; + } + else { + // En cas d'erreur, on récupère le message d'erreur du controle + $this->error_msg .= $control->error_msg; + } + $controles_realises[] = $control->oid; + } + } + } + + // ECRITURE DES RESULTATS ------------------------------------------------------------ + + + // Désactive les indexes de la table de stockage des résultats + $i = 0; + while(++$i < 7) { + $result = $this->database->exec("SELECT base.cti_disable_index('activite', 'i_expert_sejour_controle_$i')"); + } + + // Suppression des résultats précédents pour les contrôles exécutés + if (count($controles_realises) > 0) { + $request = "DELETE FROM activite.p_expert_sejour_controle WHERE controle_id IN (" . implode(',', $controles_realises) . ")"; + $result = $this->database->exec($request); + } + + // Préparation de la requête de stockage des résultats + $request = "INSERT INTO activite.p_expert_sejour_controle (sejour_id, no_sejour, date_sortie, controle_id, date_signalement, code_justificatif) VALUES "; + + // Nombre de séjours positifs aux controles experts + $nb_results = 0; + // Tableau de mise en forme de chaque résultat + $values = array(); + + foreach($this->controls as $control_id => $control) { + + // Mise à jour des infos du controle + if ($control->last_execution_timestamp != '' && $control->last_execution_ok != '') { + $update_request = " UPDATE activite.t_expert_controle SET + last_execution_timestamp = '" . $control->last_execution_timestamp . "'::timestamp, + last_execution_ok = '" . $control->last_execution_ok . "' + WHERE oid = " . $control_id . "::bigint;"; + $result = $this->database->exec($update_request); + if ($result === false) { + $this->error_msg .= "Impossible de mettre à jour les informations du contrôle " . $control->code . PHP_EOL; + } + } + + // Lecture des résultats de chaque contrôle + foreach($control->results as $sejour_id => $result) { + + $nb_results ++; + + $date_sortie = $result['infos']['date_sortie']; + $no_sejour = $result['infos']['no_sejour']; + + $justifs = array(); + foreach($result['justificatifs'] as $name => $justif) { + $justifs[] = $this->decode_key($name) . self::JUSTIF_SEPARATOR . $justif; + } + // S'il y a plusieurs justificatifs, ils seront séparés par une barre verticale + $code_justificatif = implode(' | ', $justifs); + $values[] = "(" . $sejour_id . "::bigint, '" . $no_sejour . "'::text, '" . $date_sortie . "'::date, " . $control_id . "::bigint, CURRENT_DATE, '" . $code_justificatif . "'::text)"; + } + } + + if ($nb_results > 0) { + // la commande implode génère une erreur de dépassement de taille mémoire si trop de résultats sont retournés, + // elle a été remplacée par une boucle sur les résultats + $request .= implode(', ', $values); + /*foreach($values as $value) { + $request .= $value . ', '; + } + if (substr($request, -2) == ', ') { + $request = substr($request, 0, -2); + } + */ + $result = $this->database->exec($request); + if ($result === false) { + $this->error_msg = "Impossible de peupler la table des résultats des contrôles"; + } + } + + // Ré-active les indexes de la table de stockage des résultats + $i = 0; + while(++$i < 7) { + $result = $this->database->exec("SELECT base.cti_enable_index('activite', 'i_expert_sejour_controle_$i')"); + } + + + // Nettoyage et rangement de la table des contrôles experts + $result = $this->database->exec("VACUUM ANALYSE activite.p_expert_sejour_controle;"); + + $pluriel_lances = $this->nb_controls > 1 ? " contrôles lancés, " : " contrôle lancé, "; + $pluriel_realises = $this->nb_realisables > 1 ? " contrôles réalisés, " : " contrôle réalisé, "; + $pluriel_resultats = $nb_results > 1 ? " résultats positifs. " : " résultat positif. "; + $this->msg = PHP_EOL . $this->nb_controls . $pluriel_lances . PHP_EOL . $this->nb_realisables . $pluriel_realises . PHP_EOL . $nb_results . $pluriel_resultats; + + $this->database->close(); + + if (strlen($this->error_msg) > 0) { + return false; + } + else { + return true; + } + } + + + + /** + * Récupère la liste des contrôles expert + */ + public function get_controls($oids=null) { + + $success = true; + + if (!$this->init()) { + if($this->error_msg === ''){ + $this->error_msg = 'Initialisation des paramètres des contrôles expert en erreur'; + } + return false; + } + + $this->nb_controls = 0; + $this->nb_realisables = 0; + + // Si aucune liste d'oids n'est passsée en paramètre, on récupère tous les contrôles + $nb_oids = count($oids); + if ($nb_oids == 1) { + $where = " AND t_expert_controle.oid =" . $oids[0] . " "; + } + else if ($nb_oids > 1) { + $where = " AND t_expert_controle.oid IN (" . implode(',', $oids) . ") "; + } + else { + $where = ""; + } + + $request = " + + SELECT + t_expert_controle.oid as control_id, + t_expert_controle.code, + t_expert_controle.texte, + t_expert_controle.date_validite_debut, + t_expert_controle.date_validite_fin, + t_expert_controle.last_execution_timestamp, + t_expert_controle.last_execution_ok, + t_expert_controle.gravite_id as gravite, + COALESCE(t_expert_controle.etat_cible, 0) as etat_cible, + t_expert_controle.is_active, + COALESCE(t_prestataires.alias, 'tous') as prestataire + FROM + activite.t_expert_controle + LEFT JOIN base.t_prestataires ON t_prestataires.oid = t_expert_controle.prestataire_id + WHERE 1=1 + " . $where; + $result = $this->database->exec($request); + if ($result === false) { + $this->error_msg = 'Erreur pendant la récupération des contrôles. Requête erronée'; + $success = false; + } + else { + while ($row = pg_fetch_array($result)) { + + $control = new ControleExpert($this->database); + $control->oid = $row['control_id']; + $control->code = $row['code']; + $control->texte = $row['texte']; + $control->date_validite_debut = $row['date_validite_debut']; + $control->date_validite_fin = $row['date_validite_fin']; + $control->last_execution_timestamp = $row['last_execution_timestamp']; + $control->last_execution_ok = $row['last_execution_ok']; + $control->gravite = $row['gravite']; + $control->actif = $row['is_active'] == "1" ? true : false; + $control->expert_date_debut = $this->expert_date_debut; + $control->etat_cible = $this->etat_cible[$row['etat_cible']]; + $control->tables = $this->tables; + $control->prestataire = $row['prestataire']; + if(!$control->get_rules()) { + $this->error_msg = 'Impossible de récupérer la liste des règles du contrôle ' . $control->code; + $success = false; + break; + } + $this->controls[$row['control_id']] = $control; + $this->nb_controls++; + // Vérifie que le contrôle est actif et qu'il s'exécute sur le prestataire de l'environnement qui exécute les contrôles + if ($control->actif && ($control->prestataire == 'tous' || $control->prestataire == $this->prestataire)) { + $control->realisable = true; + $this->nb_realisables++; + } + else { + $control->realisable = false; + } + } + } + + return $success; + } + + + + //******************************************************************************************** + // + // PRIVATE FUNCTIONS + // + //********************************************************************************************/ + + + + private function connect_db() { + + if (get_class($this->database) != self::DATABASE_CLASS) { + + $this->database = new Database(self::DATABASE_NAME); + + if (get_class($this->database) == self::DATABASE_CLASS) { + return true; + } + else { + return false; + } + } + else { + return true; + } + } + + + /** + * Remplace le code justificatif par un code à 3 ou 4 lettres plus court. + * Le dictionnaire de traduction (format JSON) peut/doit être complété + * modules/base/php/expert/dictionary.json + * + * @param $key code à traduire + */ + private function decode_key($key) { + + // Chargement du dictionnaire de traduction des codes des justificatifs si jamais chargé auparavant + if (!is_array($this->dict_array)) { + if (file_exists($this->dictionary)) { + + // Parsage du JSON pour ne récupérer que la section du module qui va bien + // http://stackoverflow.com/questions/4343596/parsing-json-file-with-php?answertab=votes#tab-top + $string = file_get_contents($this->dictionary); + $dict = json_decode($string, true); + + $jsonIterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($dict), RecursiveIteratorIterator::SELF_FIRST); + foreach ($jsonIterator as $mod => $entries) { + if ($mod == $this->module) { + $this->dict_array = $entries; + break; + } + } + } + } + + $s = strtolower($key); + + // Parcours du dictionnaire pour remplacer le justificatif + if (is_array($this->dict_array)) { + foreach ($this->dict_array as $old => $new) { + $s = str_replace($old, $new, $s); + } + } + + return $s; + } + + + + private function init() { + + + if ($this->ready) { + return true; + } + else { + if (!$this->connect_db()) { + $this->ready = false; + $this->error_msg = 'Connexion impossible à la base CTI'; + return false; + } + } + + // Initialisation des variables + $this->controls = array(); + $this->ready = true; + + // Récupération des champs pour les justificatifs. + // Pour chaque table, on récupère et on stocke le nom de chaque colonne + // La table fictive 'SQL brut' est ignorée par cette boucle + foreach($this->tables as $key => $table) { + if (strlen($table['from']) > 0) { + $fields = array(); + $request = "SELECT array_to_string(base.cti_array_accum(column_name),'|') AS fields + FROM + ( + SELECT column_name::text + FROM information_schema.columns + WHERE (table_schema || '.' || table_name) = '" . $table['from'] . "' + ORDER BY ordinal_position + ) subview"; + $result = $this->database->exec($request); + if ($result === false) { + $this->error_msg = 'Récupération des tables _ requête erronée'; + $this->ready = false; + return false; + } + $record = $this->database->nextRecordAssoc(); + $fields = explode("|",trim($record["fields"])); + $this->tables[$key]['fields'] = $fields; + } + } + + // Initialisation des paramètres Expert + $request = " INSERT INTO activite.t_divers (code, texte, valeur, description) + SELECT + 'EXPERT_ACTIVE', + 'Module EXPERT activé', + '0', + '1=Activé' + WHERE 'EXPERT_ACTIVE' NOT IN (SELECT code FROM activite.t_divers); "; + $result = $this->database->exec($request); + if ($result === false) { + $this->error_msg = 'Initilisation des paramètres : Erreur d\'insertion dans la table activite.t_divers'; + } + + $request = " INSERT INTO activite.t_divers (code, texte, valeur, description, valeur_date) + SELECT + 'EXPERT_DATE_DEBUT', + 'Date séjours à contrôler', + '20130101', + 'Date de début des séjours à contrôler', + '20130101' + WHERE 'EXPERT_DATE_DEBUT' NOT IN (SELECT code FROM activite.t_divers); "; + $result = $this->database->exec($request); + if ($result === false) { + $this->error_msg = 'Initilisation des paramètres : Erreur d\'insertion de la date de début des séjours à contrôler'; + } + + // Désactivation controles inutiles + $request = " + UPDATE activite.t_expert_controle + SET is_active = subview.is_active + FROM + ( + SELECT t_expert_controle.oid, CASE WHEN MAX(to_id) > 0 THEN '1' ELSE '0' END AS is_active + FROM activite.t_expert_controle + JOIN + ( + SELECT 'CTI_SEJ_AMB_03'::text AS controle_code, 'CTI_UF_AMBU'::text AS liste_code + UNION + SELECT 'CTI_MVT_SER_KO', 'CTI_SER_KO' + UNION + SELECT 'CTI_MVT_ETA_KO', 'CTI_ETA_KO' + UNION + SELECT 'CTI_SEJ_MED_KO', 'CTI_MED_KO' + ) subview + ON t_expert_controle.code = controle_code + LEFT JOIN activite.t_listes ON t_listes.code = liste_code + LEFT JOIN activite.t_listes_contenu ON liste_id = t_listes.oid + GROUP BY 1 + ) subview + WHERE t_expert_controle.oid = subview.oid AND + t_expert_controle.is_active <> subview.is_active + ; + + UPDATE activite.t_expert_controle + SET is_active = '0' + WHERE t_expert_controle.code = 'CTI_SEJ_SER_FINESS' AND + is_active = '1' AND + (SELECT MAX(finess_id) FROM activite.t_services_facturation ) = 0 + ; + "; + $result = $this->database->exec($request); + if ($result === false) { + $this->error_msg = 'Initilisation des paramètres : La désactivation des controles inutiles a échoué'; + } + + // Ménage / désactivés + $request = " + DELETE + FROM activite.p_expert_sejour_controle + WHERE controle_id IN (SELECT oid FROM activite.t_expert_controle WHERE is_active <> '1') + "; + $result = $this->database->exec($request); + if ($result === false) { + $this->error_msg = 'Initilisation des paramètres : La suppression des contrôles désactivés a échoué'; + } + + // Vérification de l'activation du module Expert + $request = " SELECT * FROM activite.t_divers WHERE code = 'EXPERT_ACTIVE' AND valeur = '1'; "; + $result = $this->database->exec($request); + if ($result !== false) { + if (pg_num_rows($result) == 0) { + $this->error_msg = 'Module Expert inactif'; + $this->expert_active = false; + } + else { + $this->expert_active = true; + } + } + + // Récupération de la date de départ des controles expert + $request = " SELECT valeur_date FROM activite.t_divers WHERE code = 'EXPERT_DATE_DEBUT'; "; + $result = $this->database->exec($request); + if ($result !== false) { + while ($row = pg_fetch_array($result)) { + $this->expert_date_debut = $row['valeur_date']; + } + } + + // Vérification de l'existance de règles + $request = " SELECT * FROM pmsi.t_expert_controle_rule LIMIT 1; "; + $result = $this->database->exec($request); + if ($result !== false && pg_num_rows($result) == 0) { + $this->error_msg = 'Pas de règles'; + } + + if (strlen($this->error_msg) > 0) { + $this->ready = false; + } + return $this->ready; + } +} + +?> \ No newline at end of file diff --git a/php/expert/RegleExpert.class.php b/php/expert/RegleExpert.class.php new file mode 100644 index 0000000..cc1b256 --- /dev/null +++ b/php/expert/RegleExpert.class.php @@ -0,0 +1,276 @@ +aggregate_retults() pour détails) + private $results; + + // Date de sortie des séjours à partir de laquelle on peut lancer les contrôles expert + private $expert_date_debut; + + // Etat des dossiers ciblés 0:Tous, 1:Présents, 2:Non facturés, ... + private $etat_cible; + + //******************************************************************************************** + // + // PUBLIC FUNCTIONS + // + //********************************************************************************************/ + + function __construct() { + + // Initialisation des paramètres + $this->oid = -1; + $this->controle_id = -1; + $this->sqlcmd_where = ''; + $this->sqlcmd_justificatif = ''; + $this->numero = 0; + $this->table_id = -1; + $this->table = array(); + $this->database = null; + $this->error = ''; + $this->results = array(); + $this->expert_date_debut = ''; + $this->etat_cible = array(); + } + + + + public function __set($property, $value) { + if (property_exists($this, $property)) { + $this->$property = $value; + } + return $this; + } + + + + public function __get($property) { + if (property_exists($this, $property)) { + return $this->$property; + } + } + + + + /** + * Exécute la règle expert + * + * Deux tableaux seront générés pour chaque ligne (séjour) retournée : un pour les informations fixes et un pour les + * justiicatigs de la règle. Ces tableaux sont ajoutés au tableau $results[sejour_id] + */ + public function run() { + + $succes = false; + + // Vérifie l'existance des justificatifs dans la table à interroger et ajoute les champs à sélectionner d'office + $what = $this->what_to_select(); + // Met en forme le where de la requete de sélection + $where_conditions = $this->which_conditions($this->table['fictive']); + + if (strlen($what) > 0 || $this->table['fictive'] == true) { + + // Construit et exécute prprement dit la requête de la règle + if ($this->table['fictive'] == true) { + $request = $this->sqlcmd_where . $where_conditions . ";"; + } + else { + $request = "SELECT " . $what . " FROM " . $this->table['from'] . $where_conditions . ";"; + } + // file_put_contents('yep.txt', $request . PHP_EOL , FILE_APPEND); + $result = $this->database->exec($request); + if ($result === false) { + // N'écrase pas une erreur déjà explicitée par les sous-fonctions + if (strlen($this->error) == 0) { + $this->error = "Erreur pendant l'exécution de la règle n°" . $this->numero . " : requête erronée." . PHP_EOL; + } + } + else { + + while ($row = pg_fetch_array($result)) { + + $i = pg_num_fields($result); + // Tableau des justificatifs demandés + $justificatifs = array(); + // Tableau des infos fixes + $infos = array(); + + for ($j = 0; $j < $i; $j++) { + // Si le champ retourné fait partie des justificatifs, on le stocke daans le tableau $justificatifs + // Si non dans le tablau des infos + $field_name = pg_field_name($result, $j); + if (stripos($this->sqlcmd_justificatif, $field_name) === false) { + $infos[$field_name] = $row[$j]; + } + else { + $justificatifs[$field_name] = $row[$j]; + } + } + // Stocke les infos et les justificatifs dans les réultats du séjour + $this->results[$row['sejour_id']]['infos'] = $infos; + $this->results[$row['sejour_id']]['justificatifs'] = $justificatifs; + } + $succes = true; + } + } + else { + $this->error .= "Règle" . $this->numero . " ignorée, justificatif non traité." . PHP_EOL; + } + return $succes; + } + + + + //******************************************************************************************** + // + // PRIVATE FUNCTIONS + // + //********************************************************************************************/ + + /** + * $this->sqlcmd_justificatif représente une suite de champs à retourner comme justificatif du contrôle. + * Ces champs peuvent être délimités par un espace (\s) ou les caractètres ,;:| + * + * On cherche l'existance de chacun de ces champs dans la table $table sur laquelle est exécutée la règle et + * on les concatène dans une chaîne de caractère séparée par des virgules. + * Cette fonction permet donc de valider l'existance des champs à retourner et les met en forme + */ + private function what_to_select() { + + $rets = array(); + // Par défaut, on va toujours récupérer les chaps définis dans la variable $this->table['defaults'] + foreach($this->table['defaults'] as $default) { + $rets[] = $default; + } + + // Les champs de la variable $this->sqlcmd_justificati peuvent être séparés par un espace, une virgule, un point-virgule, deux-points ou une barre verticale + $fields = preg_split("/[\s,;:\|]+/", $this->sqlcmd_justificatif); + foreach($fields as $field) { + // Si le champ à retourner existe ben en base (= dans la propritété 'fields' de $this->table), on l'ajoute à la liste des champs à retourner + if (in_array($field, $this->table['fields'])) { + $rets[] = $this->table['name'] . '.' . $field; + } + } + return implode(', ', $rets); + } + + + + /** + * Construit le filtre de la requête de sélection du contrôle expert + * Notez que les règles ne s'éxécutent pas sur les séjours prévus + */ + private function which_conditions($sql_brut=false) { + + $partie_fixe = " AND date_sortie >= '" . $this->expert_date_debut . "'::date " . + $this->etat_cible['where'] . + " AND code_prevu <> '1' " . + " AND type_sejour <> '9' "; + + if (strlen($this->sqlcmd_where) == 0) { + return ''; + } + else if ($sql_brut == true) { + return $partie_fixe; + } + else { + return " WHERE 1=1 AND (" . $this->explicit_where($this->sqlcmd_where) . ") " . $partie_fixe; + } + } + + + /** + * Analyse le WHERE de la requête de sélection de la règle et tente de remplacer les éventuels TAGS + * + * [LI:xxxx] : remplace ce tag par la liste des oids pointés par la liste xxxx + * + * @param $where Chaîne de caractère à analyser + */ + private function explicit_where($where) { + + // Recherche toutes les occurences du pattern suivant [LI:xxxx] où xxxx est le code de la liste concernée + // Les résultats sont stockés dans le tableau $listes. + // $listes + // [0] => + // [0] => [LI:zzzz] + // [1] => zzzz + // [1] => + // [0] => [LI:yyyy] + // [1] => yyyy + // quelques tags intéressants pour les regexp : http://fr2.php.net/manual/fr/function.preg-match.php#105924 + $listes = array(); + + if (preg_match_all('/\[LI:([^\]]*)\]/', $where, $listes, PREG_SET_ORDER) > 0) { + foreach($listes as $liste) { + $oids = ' (' . $this->get_liste_oids(trim($liste[1])) . ') '; + $where = str_replace($liste[0], $oids, $where); + } + } + return $where; + } + + + /** + * Cherche le contenu de la liste $liste et renvoie la liste des oids pointés par la liste de code $liste + * + * @param $liste Code de la liste dont il faut récupérer les oids + * @return Chaîne de caractère des oids séparés par des virgules, exemple : 'oid1, oid2, oid3' + */ + private function get_liste_oids($liste) { + + $oids = array(); + + $request = "SELECT to_id + FROM activite.t_listes JOIN activite.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid + WHERE t_listes.code = '" . $liste. "' ;"; + $result = $this->database->exec($request); + if ($result === false) { + $this->error .= "Erreur pendant l'exécution de la règle n°" . $this->numero . " : Impossible de récupérer les données de la liste " . $liste . "." . PHP_EOL; + } + else { + if (pg_num_rows($result) < 1) { + $this->error .= "Erreur pendant l'exécution de la règle n°" . $this->numero . " : Liste '" . $liste . "' vide ou inexisante." . PHP_EOL; + } + while ($row = $this->database->nextRecord($result)) { + $oids[] = $row[0]; + } + } + return implode(', ', $oids); + } +} + +?> \ No newline at end of file diff --git a/php/expert/dictionary.json b/php/expert/dictionary.json new file mode 100644 index 0000000..df76c40 --- /dev/null +++ b/php/expert/dictionary.json @@ -0,0 +1,24 @@ +{ + "activite" : { + "acte_code" : "ACT", + "date_entree" : "DENT", + "date_sortie" : "DSOR", + "destination" : "DEST", + "duree" : "DUR", + "finess" : "FIN", + "ghm_code" : "GHM", + "lieu_etage_code" : "ETA", + "lieu_service_code" : "SER", + "lieu_sortie_service_code" : "SER", + "medecin_mouvement_specialite_code" : "SPE", + "mode_entree" : "MEN", + "mode_sortie" : "MSO", + "mode_traitement_code" : "MDT", + "nb_ambulatoires" : "AMB", + "nb_entrees_directes" : "ENT", + "nb_externes" : "EXT", + "nb_seances" : "SEA", + "provenance" : "PROV", + "service_facturation_code" : "SER" + } +} \ No newline at end of file diff --git a/php/httpService_ACTI_budgetManager_getBudget.php b/php/httpService_ACTI_budgetManager_getBudget.php new file mode 100644 index 0000000..6cb7991 --- /dev/null +++ b/php/httpService_ACTI_budgetManager_getBudget.php @@ -0,0 +1,69 @@ +"; +$httpString = $httpString . "\n"; + + + + $sqlcmd = "SELECT xmldef + FROM activite.v_budgets_saisis_1 + WHERE budget_id = $budget_id "; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + + if ($record != FALSE) { + $ok = TRUE; + + $xmldef = trim($record[0]); + + + $httpString = $httpString . "\r\n$xmldef"; + + + } + } + + + } + + +$httpString = $httpString . "\n"; + + +$httpString = compress64($httpString); + +echo "$httpString"; + + + + + + +?> \ No newline at end of file diff --git a/php/httpService_ACTI_budgetManager_getBudgets.php b/php/httpService_ACTI_budgetManager_getBudgets.php new file mode 100644 index 0000000..185293d --- /dev/null +++ b/php/httpService_ACTI_budgetManager_getBudgets.php @@ -0,0 +1,69 @@ +"; +$httpString = $httpString . "\n"; + + + + $sqlcmd = "SELECT oid, code, texte + FROM activite.t_budgets + ORDER BY code "; + $result = $database->exec($sqlcmd); + + if ($result != false) { + + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + + if ($record != FALSE) { + $ok = TRUE; + + $oid = floatval(trim($record[0])); + $code = toHTML(trim($record[1])); + $texte = toHTML(trim($record[2])); + + $httpString = $httpString . + "\r\n + \r\n"; + + } + } + + + } + + +$httpString = $httpString . "\n"; + + +$httpString = compress64($httpString); + +echo "$httpString"; + + + + + + +?> \ No newline at end of file diff --git a/php/httpService_ACTI_budgetManager_setBudget.php b/php/httpService_ACTI_budgetManager_setBudget.php new file mode 100644 index 0000000..1cc2cfc --- /dev/null +++ b/php/httpService_ACTI_budgetManager_setBudget.php @@ -0,0 +1,121 @@ +"; + $httpString = $httpString . "\n"; + + $oid = floatval($xmldef["oid"]); + $code = toSQL(utf8_decode($xmldef["code"])); + $texte = toSQL(utf8_decode($xmldef["texte"])); + + + if ($action != "delete" && $action != "copy") { + $code = toSQL($code); + $texte = toSQL($texte); + + // creation ou mise à jour de la liste + if ($oid == -1) { + + + } + else { + + $sqlcmd = "UPDATE activite.t_budgets SET + code = '$code', + texte = '$texte' + WHERE oid = $oid"; + $result = $database->exec($sqlcmd); + + + foreach ($xmldef->PARENT as $parentNode) { + $oid = floatval($parentNode["oid"]); + $type = trim($parentNode["type"]); + $budget_value = floatval($parentNode["budget_value"]); + $repartition_type = floatval($parentNode["repartition_type"]); + + $sqlcmd = "UPDATE activite.t_budgets_saisis SET + repartition_type = '$repartition_type' + WHERE oid = $oid; "; + + foreach ($parentNode->ITEM as $itemNode) { + $sqlcmd = $sqlcmd . "UPDATE activite.t_budgets_saisis SET " . indicatorUpdateQuery($itemNode) . " WHERE oid = $oid; "; + } + + + + $result = $database->exec($sqlcmd); + } + + } + + + } + + if ($action == "copy") { + + + + } + + + if ($action == "delete") { + + } + + + +$httpString = $httpString . "\n"; + +$httpString = compress64($httpString); + + +echo "$httpString"; + + + +function indicatorUpdateQuery($itemNode) { + + $item_indicator = trim($itemNode["item_indicator"]); + $budget_nb_array_total = floatval($itemNode["budget_value_0"]); + $budget_nb_array_mois_1 = floatval($itemNode["budget_value_1"]); + $budget_nb_array_mois_2 = floatval($itemNode["budget_value_2"]); + $budget_nb_array_mois_3 = floatval($itemNode["budget_value_3"]); + $budget_nb_array_mois_4 = floatval($itemNode["budget_value_4"]); + $budget_nb_array_mois_5 = floatval($itemNode["budget_value_5"]); + $budget_nb_array_mois_6 = floatval($itemNode["budget_value_6"]); + $budget_nb_array_mois_7 = floatval($itemNode["budget_value_7"]); + $budget_nb_array_mois_8 = floatval($itemNode["budget_value_8"]); + $budget_nb_array_mois_9 = floatval($itemNode["budget_value_9"]); + $budget_nb_array_mois_10 = floatval($itemNode["budget_value_10"]); + $budget_nb_array_mois_11 = floatval($itemNode["budget_value_11"]); + $budget_nb_array_mois_12 = floatval($itemNode["budget_value_12"]); + $sqlcmd = "budget_$item_indicator" . "_total = $budget_nb_array_total, budget_$item_indicator" . "_mois = Array[$budget_nb_array_mois_1, $budget_nb_array_mois_2,$budget_nb_array_mois_3, $budget_nb_array_mois_4, $budget_nb_array_mois_5, $budget_nb_array_mois_6, $budget_nb_array_mois_7, $budget_nb_array_mois_8, $budget_nb_array_mois_9, $budget_nb_array_mois_10, $budget_nb_array_mois_11, $budget_nb_array_mois_12] "; + + return $sqlcmd; + +} + + + +?> \ No newline at end of file diff --git a/php/httpService_ACTI_consoManager_getData.php b/php/httpService_ACTI_consoManager_getData.php new file mode 100644 index 0000000..6ff0504 --- /dev/null +++ b/php/httpService_ACTI_consoManager_getData.php @@ -0,0 +1,171 @@ +"; +$httpString .= "\n"; +if ($tableName != "") { + $httpString .= getRecords($database, $tableName, $firstCall, $updatedOids); +} +$httpString .= "\n"; +if ($compress64) { + $httpString = compress64($httpString); +} +echo "$httpString"; + +// DEFINITIONS DE FONCTION + + +/** + * + * @param Database $db + * @param string $tableName + * @return string + */ +function getRecords($db, $tableName, $firstCall=0, $updatedOids="") { + + if ($tableName == "encours") { + return getRecords_encours($db, $tableName, $firstCall, $updatedOids); + } + + +} +/** + * + * @param Database $db + * @param string $tableName + * @return string + */ +function getRecords_encours($db, $tableName, $firstCall=0, $updatedOids="") { + $httpString = ''; + + $httpString_tmp = ""; + + /** Informations d'autentification communes */ + $dbuser = $db->user; + $dbpassword = $db->password; + + $sqlcmd = " + DROP TABLE IF EXISTS w_database; + CREATE TEMP TABLE w_database AS + SELECT + t_finess.oid, + replace(t_finess_database.dbname,'icti_','') AS code, + t_finess.texte, + dbname, + dbhost, + dbport, + '0'::text AS disabled + FROM base.t_finess + JOIN base.t_finess_database ON finess_id = t_finess.oid + JOIN dblink('host=' || dbhost || ' dbname=postgres port=' || dbport || ' user=$dbuser password=$dbpassword', + 'SELECT ''1''::text AS ok + FROM pg_database + WHERE datname = ''' || dbname || ''' ') + AS dblink(ok text) ON ok='1' + ORDER BY 4 + ; + + DROP TABLE IF EXISTS w_encours_status; + CREATE TEMP TABLE w_encours_status AS + SELECT + oid, + code, + texte, + encoursactive, + dateencours, + encoursnow + FROM w_database + JOIN dblink('host=' || dbhost || ' dbname=' || dbname || ' port=' || dbport || ' user=$dbuser password=$dbpassword', + 'SELECT ''1''::text AS ok + FROM pg_tables + WHERE schemaname = ''activite'' AND tablename= ''t_divers''') + AS dblink(ok text) ON ok='1' + JOIN dblink('host=' || dbhost || ' dbname=' || dbname || ' port=' || dbport || ' user=$dbuser password=$dbpassword', + 'SELECT + COALESCE(MAX(CASE WHEN code = ''ACT_DAT_FIN'' THEN valeur ELSE '''' END),'''') AS actdatefin + FROM activite.t_divers + WHERE code IN (''ACT_DAT_FIN'')') + AS dblinkactive(actdatefin text) ON actdatefin = '' + JOIN dblink('host=' || dbhost || ' dbname=' || dbname || ' port=' || dbport || ' user=$dbuser password=$dbpassword', + 'SELECT + MAX(CASE WHEN code = ''ENCOURSACTIVE'' THEN valeur ELSE '''' END) AS encoursactive, + MAX(CASE WHEN code = ''DATEENCOURS'' THEN lpad(valeur,2,''0'') ELSE '''' END) AS dateencours, + MAX(CASE WHEN code = ''ENCOURSNOW'' THEN valeur ELSE '''' END) AS encoursnow + FROM activite.t_divers + WHERE code IN (''ENCOURSACTIVE'',''DATEENCOURS'',''ENCOURSNOW'') + ') + AS dblink_data(encoursactive text, dateencours text, encoursnow text) ON encoursactive='1' + ; + INSERT INTO w_encours_status + SELECT 0, + '***', + 'Modifier tous les environnements', + '1', + MIN(dateencours), + MAX(encoursnow) + FROM w_encours_status + WHERE encoursactive='1'; + SELECT * + FROM w_encours_status + WHERE encoursactive='1'" ; + + if ($updatedOids != "") { + $sqlcmd.= "AND + oid in ($updatedOids) "; + } + $sqlcmd.= " + ORDER BY 2"; + + + $result = $db->exec($sqlcmd); + + if ($result != false) { + // lignes + $ok = TRUE; + while ($ok == TRUE) { + $ok = FALSE; + $record = $db->nextRecordAssoc(); + if ($record != FALSE) { + $ok = TRUE; + $httpString_tmp .= '\r\n 64000) { + $httpString .= $httpString_tmp; + $httpString_tmp = ""; + } + } + } + } + $httpString .= $httpString_tmp; + + if ($firstCall != "0") { + + } + + return $httpString; +} + + +?> \ No newline at end of file diff --git a/php/httpService_ACTI_consoManager_setData.php b/php/httpService_ACTI_consoManager_setData.php new file mode 100644 index 0000000..6a0d866 --- /dev/null +++ b/php/httpService_ACTI_consoManager_setData.php @@ -0,0 +1,210 @@ +"; +if ($tableName != "" && $action != "" && $recordNode !== FALSE) { + $httpString .= setRecords($database, $tableName, $action, $recordNode); +} +else { + $httpString .= "\n"; + $httpString .= "\n"; +} + +//if ($compress64) { + //$httpString = compress64($httpString); +//} +//echo "$httpString"; + +echo "$httpString"; + + + +/** + * + * @param Database $db + * @param string $tableName + * @param string $action + * @param object $recordNode + */ +function setRecords($db, $tableName, $action, $recordNode) { + if ($tableName == "encours") { + return setRecords_encours($db, $tableName, $action, $recordNode); + } +} + +// DEFINITIONS DE FONCTION + +/** + * + * @param Database $db + * @param string $tableName + * @param string $action + * @param object $recordNode + */ +function setRecords_encours($db, $tableName, $action, $recordNode) { + + + $returnCode = "OK"; + $returnTexte = ""; + + /** Informations d'autentification communes */ + $dbuser = $db->user; + $dbpassword = $db->password; + + $oid = floatval($recordNode["oid"]); + $code = utf8_decode($recordNode["code"]); + $texte = utf8_decode($recordNode["texte"]); + $dateencours = floatval($recordNode["dateencours"]); + + + + $updatedOids = ""; + + switch ($action) { + case SAVE : + $dateencours = toSQL($dateencours); + + // creation ou mise à jour de la liste + if ($oid != -1) { + // Oids Impactés + $sqlcmd = " + SELECT base.cti_group_concat(oid) AS updatedOids + FROM base.t_finess WHERE oid = $oid or $oid = 0"; + $result = $db->exec($sqlcmd); + if ($result != false) { + $record = $db->nextRecordAssoc(); + if ($record != FALSE) { + $updatedOids = toHTML(trim($record['updatedoids'])) . ",$oid"; + } + } + + // Mise à jour + $sqlcmd = " + DROP TABLE IF EXISTS w_database; + CREATE TEMP TABLE w_database AS + SELECT + t_finess.oid, + replace(t_finess_database.dbname,'icti_','') AS code, + t_finess.texte, + dbname, + dbhost, + dbport, + '0'::text AS disabled + FROM base.t_finess + JOIN base.t_finess_database ON finess_id = t_finess.oid + JOIN dblink('host=' || dbhost || ' dbname=postgres port=' || dbport || ' user=$dbuser password=$dbpassword', + 'SELECT ''1''::text AS ok + FROM pg_database + WHERE datname = ''' || dbname || ''' ') + AS dblink(ok text) ON ok='1' + WHERE oid = $oid OR $oid = 0 + ORDER BY 4 + ; + + SELECT + dblink_exec('host=' || dbhost || ' dbname=' || dbname || ' port=' || dbport || ' user=$dbuser password=$dbpassword', + 'UPDATE activite.t_divers + SET valeur = ''$dateencours'' + WHERE code = ''DATEENCOURS'' + ') + FROM w_database + JOIN dblink('host=' || dbhost || ' dbname=' || dbname || ' port=' || dbport || ' user=$dbuser password=$dbpassword', + 'SELECT ''1''::text AS ok + FROM pg_tables + WHERE schemaname = ''activite'' AND tablename= ''t_divers''') + AS dblink(ok text) ON ok='1' + "; + + + $result = $db->exec($sqlcmd); + if ($db->lastResult) { + + } + else { + $updatedOids = ""; + $returnCode = "KO"; + $returnTexte = "Erreur SQL : $db->lastError"; + } + + + } + break; + case UPDATE : + // nothing to do yet + break; + case COPY : + // nothing to do yet + break; + case DELETE : + // nothing to do yet + break; + case UPLOAD : + // nothing to do yet + break; + default: + // nothing to do yet + break; + } + + + + $httpString = ""; + $httpString .= "\n"; + + return $httpString; +} + +/** + * + * @param Database $db + * @param string eco + */ +function erase_cache($db) { + + // Effacer cache ancienne version + if ($db->cticache == "true") { + $sqlcmd = "SELECT cti_cache_erase as result from cache.cti_cache_erase('iCTI_eco')"; + $result = $db->exec($sqlcmd); + } + + // Effacer cache nouvelle version + cleanAllCache("iCTI_eco"); +} + +?> \ No newline at end of file diff --git a/php/httpService_ACTI_tableManager_copyRef.php b/php/httpService_ACTI_tableManager_copyRef.php new file mode 100644 index 0000000..2e78494 --- /dev/null +++ b/php/httpService_ACTI_tableManager_copyRef.php @@ -0,0 +1,58 @@ +"; +$httpString = $httpString . "\n"; + +$database = new Database("iCTI"); + +$SETTINGS_file = rootDir() . "settings/settings.XML"; +$SETTINGS_xml = simplexml_load_file($SETTINGS_file); +$REFSETTINGS_URL = getProperty($SETTINGS_xml, "REFSETTINGS", 'URL'); +$REFSETTINGS_PREFIX = getProperty($SETTINGS_xml, "REFSETTINGS", 'PREFIX'); + +if ($REFSETTINGS_URL != "" && extension_loaded('curl')) { + + // Recherche script SQL depuis environnement de référence + $REFSETTINGS_table_url = "$REFSETTINGS_URL/modules/activite/php/httpService_ACTI_tableManager_getSqlScript.php"; + WebAppLog("","DEBUG",$REFSETTINGS_table_url); + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $REFSETTINGS_table_url); + curl_setopt($ch, CURLOPT_POST, 2); + curl_setopt($ch, CURLOPT_POSTFIELDS, "tableName=$tableName&oids=$oids"); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); + $REFSETTINGS_script = @curl_exec($ch); + curl_close($ch); + + if ($REFSETTINGS_script) { + $sqlcmd = $REFSETTINGS_script; + $result = $database->exec($sqlcmd); + } + +} + +$httpString = $httpString . "\n"; + + +$httpString = gzcompress($httpString,9); +$httpString = "_c_" . base64_encode($httpString); + +echo "$httpString"; + + + +?> \ No newline at end of file diff --git a/php/httpService_ACTI_tableManager_getSqlScript.php b/php/httpService_ACTI_tableManager_getSqlScript.php new file mode 100644 index 0000000..0eef97c --- /dev/null +++ b/php/httpService_ACTI_tableManager_getSqlScript.php @@ -0,0 +1,311 @@ + '';"; + $oids = ""; + $result = $database->exec($sqlcmd); + if ($result != false) { + $record = $database->nextRecordInto(); + if ($record != FALSE) { + $oids = trim($record[0]); + } + } + + if ($oids == "") { + $oids = "0"; + } + } + + + $sqlScript = ""; + + + // Entetes des controles + + $sqlScript = $sqlScript . " + DROP TABLE IF EXISTS w_dbsetup;"; + $sqlScript = $sqlScript . " + CREATE TEMP TABLE w_dbsetup + ( + code text, + texte text, + texte_court text, + texte_abrege text, + description text, + is_cti text, + date_validite_debut text, + date_validite_fin text, + is_hide text, + is_global text, + gravite_id text, + etat_cible text, + prestataire_code text + );"; + + $sqlcmd = "SELECT + 'INSERT INTO w_dbsetup VALUES(' || + array_to_string(ARRAY[ + quote_literal(t_expert_controle.code), + quote_literal(t_expert_controle.texte), + quote_literal(COALESCE(t_expert_controle.texte_court, t_expert_controle.texte)), + quote_literal(COALESCE(t_expert_controle.texte_abrege, t_expert_controle.texte_court, t_expert_controle.texte)), + quote_literal(t_expert_controle.description), + quote_literal(COALESCE(t_expert_controle.is_cti, '0')), + quote_literal(COALESCE(t_expert_controle.date_validite_debut, '20100101'::date)::text), + quote_literal(COALESCE(t_expert_controle.date_validite_fin, '20991231'::date)::text), + quote_literal(COALESCE(t_expert_controle.is_hide, '0')), + quote_literal(COALESCE(t_expert_controle.is_global, '0')), + quote_literal(COALESCE(t_expert_controle.gravite_id, 5)::text), + quote_literal(COALESCE(t_expert_controle.etat_cible, 0)::text), + quote_literal(COALESCE(t_prestataires.code,'ALL')) + ],',') + || ');' AS cmd + FROM activite.t_expert_controle + LEFT JOIN base.t_prestataires ON t_prestataires.oid = t_expert_controle.prestataire_id + WHERE t_expert_controle.code <> '' AND t_expert_controle.oid IN ($oids) + ORDER BY t_expert_controle.code + ;"; + + + $result = $database->exec($sqlcmd); + + if ($result != false) { + + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + + if ($record != FALSE) { + $ok = TRUE; + + $r++; + + $cmd = $record[0]; + + $sqlScript = $sqlScript . "\r\n\t\t$cmd"; + } + } + + } + + if ($cmd == "") { + return "ERREUR. Cette classe ne peux être choisie (Vérifiez le code)"; + } + + $sqlScript = $sqlScript . " + UPDATE activite.t_expert_controle SET + texte = w_dbsetup.texte, + texte_court = w_dbsetup.texte_court, + texte_abrege = w_dbsetup.texte_abrege, + description = w_dbsetup.description, + is_cti = w_dbsetup.is_cti, + is_global = w_dbsetup.is_global, + date_validite_debut = w_dbsetup.date_validite_debut::date, + date_validite_fin = w_dbsetup.date_validite_fin::date, + etat_cible = w_dbsetup.etat_cible::bigint, + prestataire_id = COALESCE(t_prestataires.oid, -1) + FROM w_dbsetup + LEFT JOIN base.t_prestataires ON t_prestataires.code = w_dbsetup.prestataire_code + WHERE t_expert_controle.code = w_dbsetup.code + AND ( + t_expert_controle.texte IS DISTINCT FROM w_dbsetup.texte OR + t_expert_controle.texte_court IS DISTINCT FROM w_dbsetup.texte_court OR + t_expert_controle.texte_abrege IS DISTINCT FROM w_dbsetup.texte_abrege OR + t_expert_controle.description IS DISTINCT FROM w_dbsetup.description OR + t_expert_controle.is_cti IS DISTINCT FROM w_dbsetup.is_cti OR + t_expert_controle.is_global IS DISTINCT FROM w_dbsetup.is_global OR + t_expert_controle.date_validite_debut IS DISTINCT FROM w_dbsetup.date_validite_debut::date OR + t_expert_controle.date_validite_fin IS DISTINCT FROM w_dbsetup.date_validite_fin::date OR + t_expert_controle.etat_cible IS DISTINCT FROM w_dbsetup.etat_cible::bigint OR + t_expert_controle.prestataire_id IS DISTINCT FROM t_prestataires.oid + ); + + + + INSERT INTO activite.t_expert_controle( + code, + texte, + texte_court, + date_validite_debut, + date_validite_fin, + is_global, + texte_abrege, + description, + is_cti, + gravite_id, + is_hide, + etat_cible, + prestataire_id) + SELECT + w_dbsetup.code, + w_dbsetup.texte, + w_dbsetup.texte_court, + w_dbsetup.date_validite_debut::date, + w_dbsetup.date_validite_fin::date, + w_dbsetup.is_global, + w_dbsetup.texte_abrege, + w_dbsetup.description, + w_dbsetup.is_cti, + 5, + '0', + w_dbsetup.etat_cible::bigint, + COALESCE(t_prestataires.oid, -1) + FROM w_dbsetup + LEFT JOIN base.t_prestataires ON t_prestataires.code = w_dbsetup.prestataire_code + WHERE w_dbsetup.code NOT IN (SELECT code FROM activite.t_expert_controle WHERE code IS NOT NULL); + "; + + + + + + // Règles SQL + + $sqlScript = $sqlScript . " + DROP TABLE IF EXISTS w_dbsetup;"; + $sqlScript = $sqlScript . " + CREATE TEMP TABLE w_dbsetup + ( + controle_code text, + numero text, + sqlcmd_where text, + sqlcmd_justificatif text, + table_id text + );"; + + $sqlcmd = "SELECT + 'INSERT INTO w_dbsetup VALUES(' || + array_to_string(ARRAY[ + quote_literal(t_expert_controle.code), + quote_literal(COALESCE(t_expert_controle_rule.numero, 1)::text), + quote_literal(COALESCE(t_expert_controle_rule.sqlcmd_where, '')), + quote_literal(COALESCE(t_expert_controle_rule.sqlcmd_justificatif, '')), + quote_literal(COALESCE(t_expert_controle_rule.table_id, 0)::text) + ],',') + || ');' AS cmd + FROM activite.t_expert_controle_rule + JOIN activite.t_expert_controle ON controle_id = t_expert_controle.oid + WHERE t_expert_controle.code <> '' AND t_expert_controle.oid IN ($oids) + ORDER BY t_expert_controle.code, t_expert_controle_rule.numero + ;"; + + + $result = $database->exec($sqlcmd); + + if ($result != false) { + + + // lignes + $ok = TRUE; + + while ($ok == TRUE) { + $ok = FALSE; + + $record = $database->nextRecordInto(); + + + if ($record != FALSE) { + $ok = TRUE; + + $r++; + + $cmd = $record[0]; + + $sqlScript = $sqlScript . "\r\n\t\t$cmd"; + } + } + + } + + + $sqlScript = $sqlScript . " + UPDATE activite.t_expert_controle_rule + SET numero = 1 + WHERE numero IS NULL or NUMERO NOT IN (1,2,3); + + UPDATE activite.t_expert_controle_rule SET + sqlcmd_where = w_dbsetup.sqlcmd_where, + sqlcmd_justificatif = w_dbsetup.sqlcmd_justificatif, + table_id = w_dbsetup.table_id::bigint + FROM w_dbsetup + JOIN activite.t_expert_controle ON t_expert_controle.code = w_dbsetup.controle_code + WHERE t_expert_controle_rule.controle_id = t_expert_controle.oid AND + t_expert_controle_rule.numero = w_dbsetup.numero::numeric AND + ( + t_expert_controle_rule.sqlcmd_where IS DISTINCT FROM w_dbsetup.sqlcmd_where OR + t_expert_controle_rule.sqlcmd_justificatif IS DISTINCT FROM w_dbsetup.sqlcmd_justificatif OR + t_expert_controle_rule.table_id IS DISTINCT FROM w_dbsetup.table_id::bigint + ); + + INSERT INTO activite.t_expert_controle_rule ( + controle_id, + numero, + sqlcmd_where, + sqlcmd_justificatif, + table_id + ) + SELECT + t_expert_controle.oid, + w_dbsetup.numero::numeric, + w_dbsetup.sqlcmd_where, + w_dbsetup.sqlcmd_justificatif, + w_dbsetup.table_id::bigint + FROM w_dbsetup + JOIN activite.t_expert_controle ON t_expert_controle.code = w_dbsetup.controle_code + LEFT JOIN activite.t_expert_controle_rule ON + t_expert_controle_rule.controle_id = t_expert_controle.oid AND + t_expert_controle_rule.numero = w_dbsetup.numero::numeric + WHERE t_expert_controle_rule.oid IS NULL; + "; + + + + + + return $sqlScript; + + + +} + +?> \ No newline at end of file diff --git a/settings.XML b/settings.XML new file mode 100644 index 0000000..fda3af9 --- /dev/null +++ b/settings.XML @@ -0,0 +1,273 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000001.XML b/settings/ACTI000001.XML new file mode 100644 index 0000000..3080655 --- /dev/null +++ b/settings/ACTI000001.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000002.XML b/settings/ACTI000002.XML new file mode 100644 index 0000000..a50c892 --- /dev/null +++ b/settings/ACTI000002.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000003.XML b/settings/ACTI000003.XML new file mode 100644 index 0000000..1c63e84 --- /dev/null +++ b/settings/ACTI000003.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000004-2.XML b/settings/ACTI000004-2.XML new file mode 100644 index 0000000..d6aceac --- /dev/null +++ b/settings/ACTI000004-2.XML @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000004-3.XML b/settings/ACTI000004-3.XML new file mode 100644 index 0000000..460afa1 --- /dev/null +++ b/settings/ACTI000004-3.XML @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000004-4.XML b/settings/ACTI000004-4.XML new file mode 100644 index 0000000..b28894e --- /dev/null +++ b/settings/ACTI000004-4.XML @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000004.XML b/settings/ACTI000004.XML new file mode 100644 index 0000000..170f85b --- /dev/null +++ b/settings/ACTI000004.XML @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000006.XML b/settings/ACTI000006.XML new file mode 100644 index 0000000..1eff810 --- /dev/null +++ b/settings/ACTI000006.XML @@ -0,0 +1,545 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000007.XML b/settings/ACTI000007.XML new file mode 100644 index 0000000..5fc2c88 --- /dev/null +++ b/settings/ACTI000007.XML @@ -0,0 +1,265 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000010.XML b/settings/ACTI000010.XML new file mode 100644 index 0000000..86082ca --- /dev/null +++ b/settings/ACTI000010.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000013.XML b/settings/ACTI000013.XML new file mode 100644 index 0000000..d85bbc0 --- /dev/null +++ b/settings/ACTI000013.XML @@ -0,0 +1,265 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000014.XML b/settings/ACTI000014.XML new file mode 100644 index 0000000..f08f795 --- /dev/null +++ b/settings/ACTI000014.XML @@ -0,0 +1,443 @@ + + + + + + + + + + + + + + montant_tot_c"; + } + return $status_select; + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000016.XML b/settings/ACTI000016.XML new file mode 100644 index 0000000..8699aa2 --- /dev/null +++ b/settings/ACTI000016.XML @@ -0,0 +1,1840 @@ + + + + + + + + + + + + + + + + + + + + + + 0 or p_factures_reference.montant_comptabilise_budget_global_c > 0 or p_factures_reference.montant_comptabilise_h > 0)"; + } + if ('[QUELMONTANT]' == 'VAL') { + $status_select = "AND p_factures_reference.code_facture = '0'"; + } + if ('[QUELMONTANT]' == 'FAV') { + $status_select = ""; + } + if ('[QUELMONTANT]' == 'CPV') { + $status_select = ""; + } + if ('[QUELMONTANT]' == 'FACTIE') { + $status_select = "AND (p_factures_reference.code_facture = '1') "; + } + if ('[QUELMONTANT]' == 'CPTTIE') { + $status_select = "AND (p_factures_reference.montant_comptabilise_c > 0 or p_factures_reference.montant_comptabilise_budget_global_c > 0 or p_factures_reference.montant_comptabilise_h > 0)"; + } + return $status_select; + EVAL]]]> + + + + 1"; + } + if ('[QUELMONTANT]' == 'CPTTIE') { + $qmvt_select = "AND 1<>1"; + } + if ('[QUELLEDATE]' != '1' && '[QUELLEDATE]' != '2') { + $qmvt_select = "AND 1<>1"; + } + return $qmvt_select; + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Equivalent Malade Complet Facturé + + Calculé d'après l'occupation des dossiers facturés sur la base de + - 1 EMC par séjour en Hospitalisation Complète MCO + - 1 EMC par jour en Hospitalisation de jour MCO + - 1 EMC par séance en Hospitalisation séance MCO + - 1 EMC par semaine en Hospitalisation Complète SMR ou PSY + - 1 EMC par jour en Hospitalisation de jour SMR ou PSY + - 1 EMC par séjour pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + Nombre de journées Facturées + + Calculé d'après l'occupation des dossiers facturés sur la base de + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO + - Nombre de jours de présence en Hospitalisation de jour MCO + - Nombre de séances en Hospitalisation séance MCO + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SMR ou PSY + - Nombre de jours de présence en Hospitalisation de jour SMR ou PSY + - 0 pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + Nombre de prestations Facturées + + (éventuellement coefficienté) + Pour les GHS, le nombre est affecté au jour de sortie + ]]> + + + + + + + Chiffre d'affaires en Hospitalisation Complète + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + Chiffre d'affaires en Hospitalisation de Jour + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + Chiffre d'affaires en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + + Equivalent Malade Complet Facturé + + Calculé d'après l'occupation des dossiers comptabilisés sur la base de + - 1 EMC par séjour en Hospitalisation Complète MCO + - 1 EMC par jour en Hospitalisation de jour MCO + - 1 EMC par séance en Hospitalisation séance MCO + - 1 EMC par semaine en Hospitalisation Complète SMR ou PSY + - 1 EMC par jour en Hospitalisation de jour SMR ou PSY + - 1 EMC par séjour pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + Nombre de journées Facturées + + Calculé d'après l'occupation des dossiers comptabilisés sur la base de + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO + - Nombre de jours de présence en Hospitalisation de jour MCO + - Nombre de séances en Hospitalisation séance MCO + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SMR ou PSY + - Nombre de jours de présence en Hospitalisation de jour SMR ou PSY + - 0 pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + Nombre de prestations Facturées + + (éventuellement coefficienté) + Pour les GHS, le nombre est affecté au jour de sortie + ]]> + + + + + + Chiffre d'affaires en Hospitalisation Complète + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + Chiffre d'affaires en Hospitalisation de Jour + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + Chiffre d'affaires en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + + Equivalent Malade Complet valorisé + + Calculé d'après l'occupation des dossiers valorisé sur la base de + - 1 EMC par séjour en Hospitalisation Complète MCO + - 1 EMC par jour en Hospitalisation de jour MCO + - 1 EMC par séance en Hospitalisation séance MCO + - 1 EMC par semaine en Hospitalisation Complète SMR ou PSY + - 1 EMC par jour en Hospitalisation de jour SMR ou PSY + - 1 EMC par séjour pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + Nombre de journées valorisées + + Calculé d'après l'occupation des dossiers valorisés sur la base de + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO + - Nombre de jours de présence en Hospitalisation de jour MCO + - Nombre de séances en Hospitalisation séance MCO + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SMR ou PSY + - Nombre de jours de présence en Hospitalisation de jour SMR ou PSY + - 0 pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + Nombre de prestations valorisées + + (éventuellement coefficienté) + Pour les GHS, le nombre est affecté au jour de sortie + ]]> + + + + + + + Chiffre d'affaires valorisé + + Pour les séjours + - Groupés dans le champ PMSI MCO + - Hors du champ PMSI MCO + ]]> + + + + Chiffre d'affaires valorisé + + Pour les séjours + - Sorties non Groupés dans le champ PMSI MCO + ]]> + + + + Chiffre d'affaires valorisé + + Pour les séjours + - Présents quelque soit le champ PMSI + + Cette colonne n'est visible qu'en mode 'date activité' + ]]> + + + + Chiffre d'affaires valorisé pour les séjours groupés en Hospitalisation Complète + + Pour les séjours + - Groupés dans le champ PMSI MCO + - Hors du champ PMSI MCO + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + Chiffre d'affaires valorisé pour les séjours non groupés en Hospitalisation Complète + + Pour les séjours + - Sorties non Groupés dans le champ PMSI MCO + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + Chiffre d'affaires valorisé pour les séjours groupés en Hospitalisation de Jour + + Pour les séjours + - Groupés dans le champ PMSI MCO + - Hors du champ PMSI MCO + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + Chiffre d'affaires valorisé pour les séjours non groupés en Hospitalisation de Jour + + Pour les séjours + - Sorties non Groupés dans le champ PMSI MCO + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + Chiffre d'affaires valorisé pour les séjours en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + + Equivalent Malade Complet Facturé ou Valorisé + + Calculé d'après l'occupation des dossiers facturés ou valorisés sur la base de + - 1 EMC par séjour en Hospitalisation Complète MCO + - 1 EMC par jour en Hospitalisation de jour MCO + - 1 EMC par séance en Hospitalisation séance MCO + - 1 EMC par semaine en Hospitalisation Complète SMR ou PSY + - 1 EMC par jour en Hospitalisation de jour SMR ou PSY + - 1 EMC par séjour pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + Nombre de journées Facturées ou Valorisées + + Calculé d'après l'occupation des dossiers facturés ou valorisés sur la base de + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO + - Nombre de jours de présence en Hospitalisation de jour MCO + - Nombre de séances en Hospitalisation séance MCO + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SMR ou PSY + - Nombre de jours de présence en Hospitalisation de jour SMR ou PSY + - 0 pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + Nombre de prestations Facturées ou Valorisées + + (éventuellement coefficienté) + Pour les GHS, le nombre est affecté au jour de sortie + ]]> + + + + + + + + Chiffre d'affaires en Hospitalisation Complète + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + Chiffre d'affaires en Hospitalisation de Jour + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + Chiffre d'affaires en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + Equivalent Malade Complet Facturé ou Valorisé + + Calculé d'après l'occupation des dossiers comptabilisés ou valorisés sur la base de + - 1 EMC par séjour en Hospitalisation Complète MCO + - 1 EMC par jour en Hospitalisation de jour MCO + - 1 EMC par séance en Hospitalisation séance MCO + - 1 EMC par semaine en Hospitalisation Complète SMR ou PSY + - 1 EMC par jour en Hospitalisation de jour SMR ou PSY + - 1 EMC par séjour pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + Nombre de journées Facturées ou Valorisées + + Calculé d'après l'occupation des dossiers comptabilisés ou valorisés sur la base de + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO + - Nombre de jours de présence en Hospitalisation de jour MCO + - Nombre de séances en Hospitalisation séance MCO + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SMR ou PSY + - Nombre de jours de présence en Hospitalisation de jour SMR ou PSY + - 0 pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + Nombre de prestations Facturées ou Valorisées + + (éventuellement coefficienté) + Pour les GHS, le nombre est affecté au jour de sortie + ]]> + + + + + + + Chiffre d'affaires en Hospitalisation Complète + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + Nombre de séjours comptabilisés ou valorisés en Hospitalisation de Jour + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + Chiffre d'affaires en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + + Chiffre d'affaires facturé à l'AMO + ]]> + + + + Chiffre d'affaires facturé à la mutuelle + ]]> + + + + Chiffre d'affaires facturé au patient + ]]> + + + + Chiffre d'affaires Provenant de l'expédition PMSI et RAFAEL (Espic ou Public) + ]]> + + + Chiffre d'affaires Provenant de la Facturation + ]]> + + + + Chiffre d'affaires Provenant de l'expédition PMSI et RAFAEL (Espic ou Public) + ]]> + + + Chiffre d'affaires Provenant de la Facturation AMO (fides) + ]]> + + + + Chiffre d'affaires comptabilisé à l'AMO + ]]> + + + + Chiffre d'affaires comptabilisé à la mutuelle + ]]> + + + + Chiffre d'affaires comptabilisé au patient + ]]> + + + + + + + diff --git a/settings/ACTI000017.XML b/settings/ACTI000017.XML new file mode 100644 index 0000000..e6603ca --- /dev/null +++ b/settings/ACTI000017.XML @@ -0,0 +1,7 @@ + + + diff --git a/settings/ACTI000018.XML b/settings/ACTI000018.XML new file mode 100644 index 0000000..52ae132 --- /dev/null +++ b/settings/ACTI000018.XML @@ -0,0 +1,4064 @@ + + + + + + + + + 0) { + return "1"; + } + else { + return "-1"; + } + EVAL] + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + 1"; + } + return $qmvt_select; + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nombre de séjours facturés + + Nombre de séjours avec au moins une ligne facturée + ]]> + + + + Equivalent Malade Complet Facturé + + Calculé d'après l'occupation des dossiers facturés sur la base de + - 1 EMC par séjour en Hospitalisation Complète MCO + - 1 EMC par jour en Hospitalisation de jour MCO + - 1 EMC par séance en Hospitalisation séance MCO + - 1 EMC par semaine en Hospitalisation Complète SSR ou PSY + - 1 EMC par jour en Hospitalisation de jour SSR ou PSY + - 1 EMC par séjour pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + + Nombre de journées Facturées + + Calculé d'après l'occupation des dossiers facturés sur la base de + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO + - Nombre de jours de présence en Hospitalisation de jour MCO + - Nombre de séances en Hospitalisation séance MCO + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SSR ou PSY + - Nombre de jours de présence en Hospitalisation de jour SSR ou PSY + - 0 pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + + Nombre de prestations Facturées + + (éventuellement coefficienté) + Pour les GHS, le nombre est affecté au jour de sortie + ]]> + + + + + + + + + + + Chiffre d'affaires Moyen par Séjour + ]]> + + + + Nombre de séjours facturés en Hospitalisation Complète + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + Chiffre d'affaires en Hospitalisation Complète + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + + + + + Chiffre d'affaires Moyen par Séjour en Hospitalisation Complète + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + Nombre de séjours facturés en Hospitalisation de Jour + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + Chiffre d'affaires en Hospitalisation de Jour + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + + + + + Chiffre d'affaires Moyen par Séjour en Hospitalisation de Jour + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + Nombre de séjours facturés en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + Chiffre d'affaires en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + + + + + Chiffre d'affaires Moyen par Séjour en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + + + Nombre de séjours comptabilisés + + Nombre de séjours avec au moins une ligne comptabilisée + ]]> + + + + Equivalent Malade Complet Facturé + + Calculé d'après l'occupation des dossiers comptabilisés sur la base de + - 1 EMC par séjour en Hospitalisation Complète MCO + - 1 EMC par jour en Hospitalisation de jour MCO + - 1 EMC par séance en Hospitalisation séance MCO + - 1 EMC par semaine en Hospitalisation Complète SSR ou PSY + - 1 EMC par jour en Hospitalisation de jour SSR ou PSY + - 1 EMC par séjour pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + + Nombre de journées Facturées + + Calculé d'après l'occupation des dossiers comptabilisés sur la base de + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO + - Nombre de jours de présence en Hospitalisation de jour MCO + - Nombre de séances en Hospitalisation séance MCO + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SSR ou PSY + - Nombre de jours de présence en Hospitalisation de jour SSR ou PSY + - 0 pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + + Nombre de prestations Facturées + + (éventuellement coefficienté) + Pour les GHS, le nombre est affecté au jour de sortie + ]]> + + + + + + + + + + + + Chiffre d'affaires Moyen par Séjour + ]]> + + + + Nombre de séjours comptabilisés en Hospitalisation Complète + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + Chiffre d'affaires en Hospitalisation Complète + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + + + + + Chiffre d'affaires Moyen par Séjour en Hospitalisation Complète + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + Nombre de séjours comptabilisés en Hospitalisation de Jour + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + Chiffre d'affaires en Hospitalisation de Jour + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + + + + + Chiffre d'affaires Moyen par Séjour en Hospitalisation de Jour + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + Nombre de séjours comptabilisés en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + Chiffre d'affaires en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + + + + + Chiffre d'affaires Moyen par Séjour en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nombre de séjours valorisés + + Nombre de séjours avec au moins une ligne valorisée + ]]> + + + + Equivalent Malade Complet valorisé + + Calculé d'après l'occupation des dossiers valorisé sur la base de + - 1 EMC par séjour en Hospitalisation Complète MCO + - 1 EMC par jour en Hospitalisation de jour MCO + - 1 EMC par séance en Hospitalisation séance MCO + - 1 EMC par semaine en Hospitalisation Complète SSR ou PSY + - 1 EMC par jour en Hospitalisation de jour SSR ou PSY + - 1 EMC par séjour pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + + Nombre de journées valorisées + + Calculé d'après l'occupation des dossiers valorisés sur la base de + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO + - Nombre de jours de présence en Hospitalisation de jour MCO + - Nombre de séances en Hospitalisation séance MCO + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SSR ou PSY + - Nombre de jours de présence en Hospitalisation de jour SSR ou PSY + - 0 pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + + Nombre de prestations valorisées + + (éventuellement coefficienté) + Pour les GHS, le nombre est affecté au jour de sortie + ]]> + + + + + + + + + + + + + Chiffre d'affaires Moyen par Séjour valorisé + ]]> + + + + + Nombre de séjours valorisés + + Pour les séjours + - Groupés dans le champ PMSI MCO + - Hors du champ PMSI MCO + ]]> + + + + Chiffre d'affaires valorisé + + Pour les séjours + - Groupés dans le champ PMSI MCO + - Hors du champ PMSI MCO + ]]> + + + + Nombre de séjours valorisés + + Pour les séjours + - Sorties non Groupés dans le champ PMSI MCO + ]]> + + + + Chiffre d'affaires valorisé + + Pour les séjours + - Sorties non Groupés dans le champ PMSI MCO + ]]> + + + + Nombre de séjours valorisés + + Pour les séjours + - Présents quelque soit le champ PMSI + + Cette colonne n'est visible qu'en mode 'date activité' + ]]> + + + + Chiffre d'affaires valorisé + + Pour les séjours + - Présents quelque soit le champ PMSI + + Cette colonne n'est visible qu'en mode 'date activité' + ]]> + + + + + Chiffre d'affaires valorisé pour les séjours groupés en Hospitalisation Complète + + Pour les séjours + - Groupés dans le champ PMSI MCO + - Hors du champ PMSI MCO + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + Chiffre d'affaires valorisé pour les séjours non groupés en Hospitalisation Complète + + Pour les séjours + - Sorties non Groupés dans le champ PMSI MCO + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + Chiffre d'affaires valorisé pour les séjours groupés en Hospitalisation de Jour + + Pour les séjours + - Groupés dans le champ PMSI MCO + - Hors du champ PMSI MCO + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + Chiffre d'affaires valorisé pour les séjours non groupés en Hospitalisation de Jour + + Pour les séjours + - Sorties non Groupés dans le champ PMSI MCO + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + Chiffre d'affaires valorisé pour les séjours en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nombre de séjours facturés + + Nombre de séjours avec au moins une ligne facturée ou valorisée + ]]> + + + + Equivalent Malade Complet Facturé ou Valorisé + + Calculé d'après l'occupation des dossiers facturés ou valorisés sur la base de + - 1 EMC par séjour en Hospitalisation Complète MCO + - 1 EMC par jour en Hospitalisation de jour MCO + - 1 EMC par séance en Hospitalisation séance MCO + - 1 EMC par semaine en Hospitalisation Complète SSR ou PSY + - 1 EMC par jour en Hospitalisation de jour SSR ou PSY + - 1 EMC par séjour pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + + Nombre de journées Facturées ou Valorisées + + Calculé d'après l'occupation des dossiers facturés ou valorisés sur la base de + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO + - Nombre de jours de présence en Hospitalisation de jour MCO + - Nombre de séances en Hospitalisation séance MCO + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SSR ou PSY + - Nombre de jours de présence en Hospitalisation de jour SSR ou PSY + - 0 pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + + Nombre de prestations Facturées ou Valorisées + + (éventuellement coefficienté) + Pour les GHS, le nombre est affecté au jour de sortie + ]]> + + + + + + + + + + + + + + + + + + Chiffre d'affaires Moyen par Séjour + ]]> + + + + Nombre de séjours facturés ou valorisés en Hospitalisation Complète + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + Chiffre d'affaires en Hospitalisation Complète + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + + + + + Chiffre d'affaires Moyen par Séjour en Hospitalisation Complète + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + Nombre de séjours facturés ou valorisés en Hospitalisation de Jour + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + Chiffre d'affaires en Hospitalisation de Jour + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + + + + + Chiffre d'affaires Moyen par Séjour en Hospitalisation de Jour + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + Nombre de séjours facturés ou valorisés en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + Chiffre d'affaires en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + + + + + Chiffre d'affaires Moyen par Séjour en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + + + Nombre de séjours comptabilisés ou valorisés + + Nombre de séjours avec au moins une ligne comptabilisée ou valorisée + ]]> + + + + Equivalent Malade Complet Facturé ou Valorisé + + Calculé d'après l'occupation des dossiers comptabilisés ou valorisés sur la base de + - 1 EMC par séjour en Hospitalisation Complète MCO + - 1 EMC par jour en Hospitalisation de jour MCO + - 1 EMC par séance en Hospitalisation séance MCO + - 1 EMC par semaine en Hospitalisation Complète SSR ou PSY + - 1 EMC par jour en Hospitalisation de jour SSR ou PSY + - 1 EMC par séjour pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + + Nombre de journées Facturées ou Valorisées + + Calculé d'après l'occupation des dossiers comptabilisés ou valorisés sur la base de + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète MCO + - Nombre de jours de présence en Hospitalisation de jour MCO + - Nombre de séances en Hospitalisation séance MCO + - Durée de séjour (sauf jour de sortie) en Hospitalisation Complète SSR ou PSY + - Nombre de jours de présence en Hospitalisation de jour SSR ou PSY + - 0 pour les autres cas (Externes) + Cet indicateur n'est pas calculé pour les regroupements par prestation, rubrique ou compte + + Visible que par date d'activité ou date de sortie + ]]> + + + + Nombre de prestations Facturées ou Valorisées + + (éventuellement coefficienté) + Pour les GHS, le nombre est affecté au jour de sortie + ]]> + + + + + + + + + + + + + + + + Chiffre d'affaires Moyen par Séjour + ]]> + + + + Nombre de séjours comptabilisés ou valorisés en Hospitalisation Complète + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + Chiffre d'affaires en Hospitalisation Complète + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + + + + + Chiffre d'affaires Moyen par Séjour en Hospitalisation Complète + + Hospitalisation Complète = Type séjour CTI Hospitalisé + ]]> + + + + Nombre de séjours comptabilisés ou valorisés en Hospitalisation de Jour + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + Chiffre d'affaires en Hospitalisation de Jour + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + + + + + Chiffre d'affaires Moyen par Séjour en Hospitalisation de Jour + + Hospitalisation de Jour = Types séjour CTI Ambulatoire et séances + ]]> + + + + Nombre de séjours comptabilisés ou valorisés en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + Chiffre d'affaires en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + + + + + Chiffre d'affaires Moyen par Séjour en Hospitalisation autre que HC ou HJ + + Hospitalisation autre que HC ou HJ = Types séjour CTI Externes + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nombre de séjours facturés + + Nombre de séjours avec au moins une ligne facturée + ]]> + + + + Nombre de prestations Facturées + + (éventuellement coefficienté) + Pour les GHS, le nombre est affecté au jour de sortie + ]]> + + + + + + + + + + + + + Nombre de séjours facturés à l'AMO + + Nombre de séjours avec au moins une ligne facturée à l'AMO + ]]> + + + + Chiffre d'affaires facturé à l'AMO + ]]> + + + + + + + + Nombre de séjours facturés à la mutuelle + + Nombre de séjours avec au moins une ligne facturée à la mutuelle + ]]> + + + + Chiffre d'affaires facturé à la mutuelle + ]]> + + + + Nombre de séjours facturés au patient + + Nombre de séjours avec au moins une ligne facturée au patient + ]]> + + + + Chiffre d'affaires facturé au patient + ]]> + + + + + + Nombre de séjours comptabilisés + + Nombre de séjours avec au moins une ligne comptabilisée + ]]> + + + + Nombre de prestations Comptabilisées + + (éventuellement coefficienté) + Pour les GHS, le nombre est affecté au jour de sortie + ]]> + + + + + + + + + + + + + Chiffre d'affaires Provenant de l'expédition PMSI et RAFAEL (Espic ou Public) + ]]> + + + + Chiffre d'affaires Provenant de la Facturation + ]]> + + + + + Chiffre d'affaires Provenant de l'expédition PMSI et RAFAEL (Espic ou Public) + ]]> + + + Chiffre d'affaires Provenant de la Facturation AMO (fides) + ]]> + + + + Nombre de séjours facturés à l'AMO + + Nombre de séjours avec au moins une ligne facturée à l'AMO + ]]> + + + + Chiffre d'affaires comptabilisé à l'AMO + ]]> + + + + Nombre de séjours facturés à la mutuelle + + Nombre de séjours avec au moins une ligne facturée à la mutuelle + ]]> + + + + Chiffre d'affaires comptabilisé à la mutuelle + ]]> + + + + Nombre de séjours facturés au patient + + Nombre de séjours avec au moins une ligne facturée au patient + ]]> + + + + Chiffre d'affaires comptabilisé au patient + ]]> + + + + + + + diff --git a/settings/ACTI000019.XML b/settings/ACTI000019.XML new file mode 100644 index 0000000..4d4be93 --- /dev/null +++ b/settings/ACTI000019.XML @@ -0,0 +1,384 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000020.XML b/settings/ACTI000020.XML new file mode 100644 index 0000000..cf98ed2 --- /dev/null +++ b/settings/ACTI000020.XML @@ -0,0 +1,3013 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000021.XML b/settings/ACTI000021.XML new file mode 100644 index 0000000..b9e4445 --- /dev/null +++ b/settings/ACTI000021.XML @@ -0,0 +1,498 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 OR montant_depassement <> 0 OR montant_non_facture <> 0)'; + break; + case '2': + return 'AND (montant_comptabilise <> 0)'; + break; + case 'MTFACI': + return 'AND (montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 OR COALESCE(montant_facture_actes_inclus_dans_sejour,0) <> 0)'; + break; + case 'MTI': + return 'AND (COALESCE(montant_facture_actes_inclus_dans_sejour,0) <> 0)'; + break; + case '3': + return 'AND (montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0)'; + break; + default: + return ''; + } + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000022.XML b/settings/ACTI000022.XML new file mode 100644 index 0000000..2545498 --- /dev/null +++ b/settings/ACTI000022.XML @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000023.XML b/settings/ACTI000023.XML new file mode 100644 index 0000000..f7d0497 --- /dev/null +++ b/settings/ACTI000023.XML @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000024.XML b/settings/ACTI000024.XML new file mode 100644 index 0000000..aae27b5 --- /dev/null +++ b/settings/ACTI000024.XML @@ -0,0 +1,502 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000025.XML b/settings/ACTI000025.XML new file mode 100644 index 0000000..2502f4a --- /dev/null +++ b/settings/ACTI000025.XML @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000026.XML b/settings/ACTI000026.XML new file mode 100644 index 0000000..8ae6a8f --- /dev/null +++ b/settings/ACTI000026.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000027.XML b/settings/ACTI000027.XML new file mode 100644 index 0000000..32fb0d3 --- /dev/null +++ b/settings/ACTI000027.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000028.XML b/settings/ACTI000028.XML new file mode 100644 index 0000000..c739d00 --- /dev/null +++ b/settings/ACTI000028.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000029.XML b/settings/ACTI000029.XML new file mode 100644 index 0000000..b352342 --- /dev/null +++ b/settings/ACTI000029.XML @@ -0,0 +1,1495 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000030.XML b/settings/ACTI000030.XML new file mode 100644 index 0000000..2140121 --- /dev/null +++ b/settings/ACTI000030.XML @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000031.XML b/settings/ACTI000031.XML new file mode 100644 index 0000000..1e80111 --- /dev/null +++ b/settings/ACTI000031.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000032.XML b/settings/ACTI000032.XML new file mode 100644 index 0000000..2aeb9b0 --- /dev/null +++ b/settings/ACTI000032.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000033.XML b/settings/ACTI000033.XML new file mode 100644 index 0000000..cb0c760 --- /dev/null +++ b/settings/ACTI000033.XML @@ -0,0 +1,362 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ='[PERIODE]' "; + } + if ('[QUELLEDATE]' == 'EN') { + return " AND v_sejours_1.date_entree BETWEEN '[PERIODE]' AND '[TOPERIODE]' "; + } + if ('[QUELLEDATE]' == 'SO') { + return " AND code_sorti = '1' AND v_sejours_1.date_sortie BETWEEN '[PERIODE]' AND '[TOPERIODE]' "; + } + EVAL] + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000034.XML b/settings/ACTI000034.XML new file mode 100644 index 0000000..ed85400 --- /dev/null +++ b/settings/ACTI000034.XML @@ -0,0 +1,1049 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000035.XML b/settings/ACTI000035.XML new file mode 100644 index 0000000..dc4e58d --- /dev/null +++ b/settings/ACTI000035.XML @@ -0,0 +1,990 @@ + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY != '-1') { + group_by_label = ' par ' + SELECT.GROUPBY_LABEL; + } + if (SELECT.GROUPBY_2 != '-1') { + group_by_label = group_by_label + ' et ' + SELECT.GROUPBY_2_LABEL; + } + + return SELECT.RAPPORT_LABEL + ' comparatif ' + group_by_label + ' (' + VIEW.DATECOMPTITLE + ') - ' + VIEW.JOUROUVRE_LABEL; + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000036.XML b/settings/ACTI000036.XML new file mode 100644 index 0000000..19c03b9 --- /dev/null +++ b/settings/ACTI000036.XML @@ -0,0 +1,1132 @@ + + + + + + + '1'"; + EVAL] + ]]> + + + + + + + + + 0'; + break; + case 'NEM': + return 'AND (nb_entrees_directes > 0 OR nb_entrees_mutation_[VIEW.MUTATION_FIELD] > 0)'; + break; + case 'NSD': + return 'AND nb_sorties_directes > 0'; + break; + case 'NSM': + return 'AND (nb_sorties_directes > 0 OR nb_sorties_mutation_[VIEW.MUTATION_FIELD] > 0)'; + break; + case 'NJN': + return 'AND [VIEW.JOURNEES_FIELD] > 0'; + break; + case 'NJNS': + return 'AND nb_jour_sejour_sorti > 0'; + break; + case 'NEX': + return 'AND nb_externes > 0'; + break; + case 'NAM': + return 'AND nb_ambulatoires > 0'; + break; + case 'NEDA': + return 'AND (nb_entrees_directes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NSDA': + return 'AND (nb_sorties_directes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NEDXA': + return 'AND (nb_entrees_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NSDXA': + return 'AND (nb_sorties_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NSDXBB': + return 'AND (nb_sorties_directes > 0 OR nb_bebes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NJNXA': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_externes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NEDXAS': + return 'AND (nb_entrees_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0 OR nb_seances > 0)'; + break; + case 'NSDXAS': + return 'AND (nb_sorties_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0 OR nb_seances_dans_taux > 0)'; + break; + case 'NSDXASSH': + return "AND (nb_sorties_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0 OR CASE WHEN type_sejour = '5' THEN nb_seances_dans_taux ELSE 0 END > 0)"; + break; + case 'NJNXAS': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_externes > 0 OR nb_ambulatoires > 0 OR nb_seances_dans_taux > 0)'; + break; + case 'NSE': + return "AND nb_seances > 0"; + break; + case 'NSEDIA': + return "AND nb_seances_dialyse > 0"; + break; + case 'NSECHM': + return "AND nb_seances_chimio > 0"; + break; + case 'NSEDIV': + return "AND nb_seances_autre > 0"; + break; + case 'NBB': + return "AND nb_bebes > 0"; + break; + case 'NBP': + return "AND no_patient > 0"; + break; + case 'NCP': + return "AND [VIEW.CP_FIELD] > 0"; + break; + case 'NJO': + return ""; + break; + case 'NJNM': + return 'AND [VIEW.JOURNEES_FIELD] > 0'; + break; + case 'NEXM': + return 'AND nb_externes > 0'; + break; + case 'NAMM': + return 'AND nb_ambulatoires > 0'; + break; + case 'NSEM': + return "AND nb_seances > 0"; + break; + case 'NJNXAM': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_externes > 0 OR nb_ambulatoires > 0)'; + break; + case 'TAU': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_ambulatoires > 0 OR nb_seances_dans_taux > 0)'; + break; + case 'NSHP': + return "AND v_sejours_1.date_sortie > '[TOPERIODE]' AND v_sejours_1.code_sorti = 1"; + break; + case 'NJNAS': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_ambulatoires > 0 OR nb_seances_dans_taux > 0)'; + break; + case 'NSFAC': + return "AND v_mouvements_sejour_2.est_facture = '1'"; + break; + case 'NSNFAC': + return "AND v_mouvements_sejour_2.est_facture = '0'"; + break; + case 'JRNSORFAC': + return "AND v_mouvements_sejour_2.est_facture = '1' AND [VIEW.JOURNEES_FIELD] > 0"; + break; + case 'JRNSORHONFAC': + return "AND v_mouvements_sejour_2.est_facture = '1' AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_ambulatoires > 0 OR nb_seances_dans_taux > 0)"; + break; + case 'URG': + return "AND nb_urgences > 0"; + break; + case 'EMC': + return 'AND equivalent_malade_complet > 0'; + break; + default: + return ''; + } + EVAL]]]> + + + '[TOPERIODE]' AND v_sejours_1.code_sorti = 1 THEN v_sejours_1.no_sejour ELSE null END ELSE null END)"; + break; + case 'NJNAS': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN [VIEW.JOURNEES_FIELD] + nb_ambulatoires + nb_seances_dans_taux ELSE null END)"; + break; + case 'NAD': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND v_sejours_1.date_entree BETWEEN '[PERIODE]' AND '[TOPERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NADPRE': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND v_sejours_1.date_entree < '[PERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NSEJ': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NNONSOR': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND code_sorti = 0 THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NFULL': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND v_sejours_1.date_entree BETWEEN '[PERIODE]' AND '[TOPERIODE]' AND v_sejours_1.date_sortie BETWEEN '[PERIODE]' AND '[TOPERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NSFAC': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND date_sortie <= '[TOPERIODE]'::date AND code_sorti = '1' AND v_mouvements_sejour_2.est_facture = '1' THEN v_sejours_1.no_sejour ELSE NULL END)"; + break; + case 'NSNFAC': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND date_sortie <= '[TOPERIODE]'::date AND code_sorti = '1' AND v_mouvements_sejour_2.est_facture = '0' THEN v_sejours_1.no_sejour ELSE NULL END)"; + break; + case 'JRNSORFAC': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE AND date_sortie <= '[TOPERIODE]' AND v_mouvements_sejour_2.est_facture = '1' THEN [VIEW.JOURNEES_FIELD] ELSE null END)"; + break; + case 'JRNSORHONFAC': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE AND date_sortie <= '[TOPERIODE]' AND v_mouvements_sejour_2.est_facture = '1' THEN [VIEW.JOURNEES_FIELD] + nb_ambulatoires + nb_seances_dans_taux ELSE null END)"; + break; + case 'DMSHES': + return "base.cti_division(SUM(CASE WHEN COLUMNCHECKSEQUENCE AND type_sejour = '1' AND nb_sorties_directes = 1 THEN duree ELSE 0 END), SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN nb_sorties_directes ELSE null END))"; + break; + case 'DMSHON': + return "base.cti_division(SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN CASE WHEN type_sejour = '1' AND nb_sorties_directes = 1 THEN duree WHEN type_sejour = '2' THEN nb_ambulatoires WHEN type_sejour = '5' THEN nb_seances ELSE 0 END ELSE 0 END), SUM(CASE WHEN v_sejours_1.date_sortie BETWEEN '[PERIODE]' AND '[TOPERIODE]' AND nb_sorties_directes + nb_ambulatoires + nb_seances_dans_taux > 0 THEN 1 ELSE 0 END))"; + break; + case 'URG': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN nb_urgences ELSE 0 END)"; + break; + case 'EMC': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN equivalent_malade_complet ELSE 0 END)"; + break; + case 'GMP': + return "base.cti_division( + SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN gir_gmp_base*gir_gmp_coefficient ELSE 0 END), + SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN gir_gmp_base ELSE 0 END) + )"; + break; + default: + return '0'; + } + EVAL]]]> + + + '[TOPERIODE]' AND v_sejours_1.code_sorti = 1 THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NJNAS': + return "SUM([VIEW.JOURNEES_FIELD] + nb_ambulatoires + nb_seances_dans_taux)"; + break; + case 'NAD': + return "COUNT(DISTINCT CASE WHEN v_sejours_1.date_entree BETWEEN '[PERIODE]' AND '[TOPERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NADPRE': + return "COUNT(DISTINCT CASE WHEN v_sejours_1.date_entree < '[PERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NSEJ': + return "COUNT(DISTINCT v_sejours_1.no_sejour)"; + break; + case 'NNONSOR': + return "COUNT(DISTINCT CASE WHEN code_sorti = 0 THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NFULL': + return "COUNT(DISTINCT CASE WHEN v_sejours_1.date_entree BETWEEN '[PERIODE]' AND '[TOPERIODE]' AND v_sejours_1.date_sortie BETWEEN '[PERIODE]' AND '[TOPERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NSFAC': + return "COUNT(DISTINCT CASE WHEN date_sortie <= '[TOPERIODE]'::date AND code_sorti = '1' AND v_mouvements_sejour_2.est_facture = '1' THEN v_sejours_1.no_sejour ELSE NULL END)"; + break; + case 'NSNFAC': + return "COUNT(DISTINCT CASE WHEN date_sortie <= '[TOPERIODE]'::date AND code_sorti = '1' AND v_mouvements_sejour_2.est_facture = '0' THEN v_sejours_1.no_sejour ELSE NULL END)"; + break; + case 'JRNSORFAC': + return "SUM(CASE WHEN date_sortie <= '[TOPERIODE]' AND v_mouvements_sejour_2.est_facture = '1' THEN [VIEW.JOURNEES_FIELD] ELSE null END)"; + break; + case 'JRNSORHONFAC': + return "SUM(CASE WHEN date_sortie <= '[TOPERIODE]' AND v_mouvements_sejour_2.est_facture = '1' THEN [VIEW.JOURNEES_FIELD] + nb_ambulatoires + nb_seances_dans_taux ELSE null END)"; + break; + case 'DMSHES': + return "base.cti_division(SUM(CASE WHEN type_sejour = '1' AND nb_sorties_directes = 1 THEN duree ELSE 0 END), SUM(nb_sorties_directes))"; + break; + case 'DMSHON': + return "base.cti_division(SUM(CASE WHEN type_sejour = '1' AND nb_sorties_directes = 1 THEN duree WHEN type_sejour = '2' THEN nb_ambulatoires WHEN type_sejour = '5' THEN nb_seances ELSE 0 END), SUM(CASE WHEN v_sejours_1.date_sortie BETWEEN '[PERIODE]' AND '[TOPERIODE]' AND nb_sorties_directes + nb_ambulatoires + nb_seances_dans_taux > 0 THEN 1 ELSE 0 END))"; + break; + case 'URG': + return "SUM(nb_urgences)"; + break; + case 'EMC': + return "SUM(equivalent_malade_complet)"; + break; + case 'GMP': + return "base.cti_division( + SUM(gir_gmp_base*gir_gmp_coefficient), + SUM(gir_gmp_base) + )"; + default: + return '0'; + } + EVAL]]]> + + + 0) { + return "DEFAULT"; + } + else { + return "indicateurs[2]"; + } + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000037.XML b/settings/ACTI000037.XML new file mode 100644 index 0000000..6d68ea4 --- /dev/null +++ b/settings/ACTI000037.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000038.XML b/settings/ACTI000038.XML new file mode 100644 index 0000000..7b17799 --- /dev/null +++ b/settings/ACTI000038.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000039.XML b/settings/ACTI000039.XML new file mode 100644 index 0000000..bc48478 --- /dev/null +++ b/settings/ACTI000039.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000039PLC.XML b/settings/ACTI000039PLC.XML new file mode 100644 index 0000000..a4461cc --- /dev/null +++ b/settings/ACTI000039PLC.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000040.XML b/settings/ACTI000040.XML new file mode 100644 index 0000000..aff9425 --- /dev/null +++ b/settings/ACTI000040.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000041.XML b/settings/ACTI000041.XML new file mode 100644 index 0000000..9fc58c1 --- /dev/null +++ b/settings/ACTI000041.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000042.XML b/settings/ACTI000042.XML new file mode 100644 index 0000000..5a10569 --- /dev/null +++ b/settings/ACTI000042.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000043.XML b/settings/ACTI000043.XML new file mode 100644 index 0000000..e015ec8 --- /dev/null +++ b/settings/ACTI000043.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000044.XML b/settings/ACTI000044.XML new file mode 100644 index 0000000..1e3b03f --- /dev/null +++ b/settings/ACTI000044.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000045.XML b/settings/ACTI000045.XML new file mode 100644 index 0000000..7004f6e --- /dev/null +++ b/settings/ACTI000045.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000046.XML b/settings/ACTI000046.XML new file mode 100644 index 0000000..3a1fb53 --- /dev/null +++ b/settings/ACTI000046.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000047.XML b/settings/ACTI000047.XML new file mode 100644 index 0000000..65d46d3 --- /dev/null +++ b/settings/ACTI000047.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000048.XML b/settings/ACTI000048.XML new file mode 100644 index 0000000..7c3e1bf --- /dev/null +++ b/settings/ACTI000048.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000049.XML b/settings/ACTI000049.XML new file mode 100644 index 0000000..8c48dd8 --- /dev/null +++ b/settings/ACTI000049.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000050.XML b/settings/ACTI000050.XML new file mode 100644 index 0000000..94b2098 --- /dev/null +++ b/settings/ACTI000050.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000051.XML b/settings/ACTI000051.XML new file mode 100644 index 0000000..1c84e0b --- /dev/null +++ b/settings/ACTI000051.XML @@ -0,0 +1,351 @@ + + + + + + + + '1'"; + EVAL] + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000052.XML b/settings/ACTI000052.XML new file mode 100644 index 0000000..4a3d173 --- /dev/null +++ b/settings/ACTI000052.XML @@ -0,0 +1,1100 @@ + + + + + + + + + + '1'"; + EVAL] + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000053.XML b/settings/ACTI000053.XML new file mode 100644 index 0000000..6337cf1 --- /dev/null +++ b/settings/ACTI000053.XML @@ -0,0 +1,932 @@ + + + + + + + '1'"; + EVAL] + ]]> + + + + + + + + + + + + + + 0'; + break; + case 'NEM': + return 'AND (nb_entrees_directes > 0 OR nb_entrees_mutation_[VIEW.MUTATION_FIELD] > 0)'; + break; + case 'NSD': + return 'AND nb_sorties_directes > 0'; + break; + case 'NSM': + return 'AND (nb_sorties_directes > 0 OR nb_sorties_mutation_[VIEW.MUTATION_FIELD] > 0)'; + break; + case 'NJN': + return 'AND [VIEW.JOURNEES_FIELD] > 0'; + break; + case 'NJNA': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_ambulatoires > 0)'; + break; + case 'NEX': + return 'AND nb_externes > 0'; + break; + case 'NAM': + return 'AND nb_ambulatoires > 0'; + break; + case 'NEDA': + return 'AND (nb_entrees_directes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NSDA': + return 'AND (nb_sorties_directes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NEDXA': + return 'AND (nb_entrees_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NSDXA': + return 'AND (nb_sorties_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NJNXA': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_externes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NSDXBB': + return 'AND (nb_sorties_directes > 0 OR nb_ambulatoires > 0 OR nb_bebes > 0)'; + break; + case 'NEDXAS': + return 'AND (nb_entrees_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0 OR nb_seances > 0)'; + break; + case 'NSDXAS': + return 'AND (nb_sorties_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0 OR nb_seances > 0)'; + break; + case 'NSDXASSH': + return "AND (nb_sorties_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0 OR CASE WHEN type_sejour = '5' THEN nb_seances ELSE 0 END > 0)"; + break; + case 'NJNXAS': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_externes > 0 OR nb_ambulatoires > 0 OR nb_seances > 0)'; + break; + case 'NSE': + return "AND nb_seances > 0"; + break; + case 'NBB': + return "AND nb_bebes > 0"; + break; + case 'NCP': + return "AND [VIEW.CP_FIELD] > 0"; + break; + case 'NJO': + return ""; + break; + case 'NJNM': + return 'AND [VIEW.JOURNEES_FIELD] > 0'; + break; + case 'NEXM': + return 'AND nb_externes > 0'; + break; + case 'NAMM': + return 'AND nb_ambulatoires > 0'; + break; + case 'NJNXAM': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_externes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NSEM': + return "AND nb_seances > 0"; + break; + case 'TAU': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_ambulatoires > 0 OR nb_seances_dans_taux > 0)'; + break; + default: + return ''; + } + EVAL]]]> + + + + + + + + + 0) { + return "'[VIEW.TOPERIODE]'::date - [NBJOURS] + 1"; + } + else { + return "'[VIEW.TOPERIODE]'::date - date_part('day', '[VIEW.TOPERIODE]'::date)::int + 1"; + } + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000054.XML b/settings/ACTI000054.XML new file mode 100644 index 0000000..4e9687d --- /dev/null +++ b/settings/ACTI000054.XML @@ -0,0 +1,1390 @@ + + + + + + + '1'"; + EVAL] + ]]> + + + + + + + + + + + + + + 0'; + break; + case 'NEM': + return 'AND (nb_entrees_directes > 0 OR nb_entrees_mutation_[VIEW.MUTATION_FIELD] > 0)'; + break; + case 'NSD': + return 'AND nb_sorties_directes > 0'; + break; + case 'NSM': + return 'AND (nb_sorties_directes > 0 OR nb_sorties_mutation_[VIEW.MUTATION_FIELD] > 0)'; + break; + case 'NSDAM': + return 'AND (nb_sorties_directes > 0 OR nb_sorties_mutation_[VIEW.MUTATION_FIELD] > 0 OR nb_ambulatoires > 0)'; + break; + case 'NJN': + return 'AND [VIEW.JOURNEES_FIELD] > 0'; + break; + case 'NEX': + return 'AND nb_externes > 0'; + break; + case 'NPX': + return 'AND nb_passage_externe > 0'; + break; + case 'NAM': + return 'AND nb_ambulatoires > 0'; + break; + case 'NEDA': + return 'AND (nb_entrees_directes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NSDA': + return 'AND (nb_sorties_directes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NEDXA': + return 'AND (nb_entrees_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NSDXA': + return 'AND (nb_sorties_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NSDXBB': + return 'AND (nb_sorties_directes > 0 OR nb_bebes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NJNXA': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_externes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NEDXAS': + return 'AND (nb_entrees_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0 OR nb_seances > 0)'; + break; + case 'NSDXAS': + return 'AND (nb_sorties_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0 OR nb_seances > 0)'; + break; + case 'NSDXASSH': + return "AND (nb_sorties_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0 OR CASE WHEN type_sejour = '5' THEN nb_seances ELSE 0 END > 0)"; + break; + case 'NJNXAS': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_externes > 0 OR nb_ambulatoires > 0 OR nb_seances > 0)'; + break; + case 'NSE': + return "AND nb_seances > 0"; + break; + case 'NSEDIA': + return "AND nb_seances_dialyse > 0"; + break; + case 'NSECHM': + return "AND nb_seances_chimio > 0"; + break; + case 'NSEDIV': + return "AND nb_seances_autre > 0"; + break; + case 'NBB': + return "AND nb_bebes > 0"; + break; + case 'NBP': + return "AND no_patient > 0"; + break; + case 'NCP': + return "AND [VIEW.CP_FIELD] > 0"; + break; + case 'NJO': + return ""; + break; + case 'NJNM': + return 'AND [VIEW.JOURNEES_FIELD] > 0'; + break; + case 'NEXM': + return 'AND nb_externes > 0'; + break; + case 'NAMM': + return 'AND nb_ambulatoires > 0'; + break; + case 'NSEM': + return "AND nb_seances > 0"; + break; + case 'NJNXAM': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_externes > 0 OR nb_ambulatoires > 0)'; + break; + case 'TAU': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_ambulatoires > 0 OR nb_seances_dans_taux > 0)'; + break; + case 'NSHP': + return "AND v_sejours_1.date_sortie > '[TOPERIODE]' AND v_sejours_1.code_sorti = 1"; + break; + case 'NJNAS': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_ambulatoires > 0 OR nb_seances > 0)'; + break; + case 'NSFAC': + return "AND v_mouvements_sejour_2.est_facture = '1'"; + break; + case 'NSNFAC': + return "AND v_mouvements_sejour_2.est_facture = '0'"; + break; + case 'JRNSORFAC': + return "AND v_mouvements_sejour_2.est_facture = '1' AND [VIEW.JOURNEES_FIELD] > 0"; + break; + case 'JRNSORHONFAC': + return "AND v_mouvements_sejour_2.est_facture = '1' AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_ambulatoires > 0 OR nb_seances > 0)"; + break; + case 'URG': + return "AND nb_urgences > 0"; + break; + case 'EMC': + return 'AND equivalent_malade_complet > 0'; + break; + default: + return ''; + } + EVAL]]]> + + + '[TOPERIODE]' AND v_sejours_1.code_sorti = 1 THEN v_sejours_1.no_sejour ELSE null END ELSE null END)"; + break; + case 'NJNAS': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN [VIEW.JOURNEES_FIELD] + nb_ambulatoires + nb_seances_dans_taux ELSE null END)"; + break; + case 'NAD': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND v_sejours_1.date_entree BETWEEN '[PERIODE]' AND '[TOPERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NADPRE': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND v_sejours_1.date_entree < '[PERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NSEJ': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NNONSOR': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND code_sorti = 0 THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NFULL': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND v_sejours_1.date_entree BETWEEN '[PERIODE]' AND '[TOPERIODE]' AND v_sejours_1.date_sortie BETWEEN '[PERIODE]' AND '[TOPERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NSFAC': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND date_sortie <= '[TOPERIODE]'::date AND code_sorti = '1' AND v_mouvements_sejour_2.est_facture = '1' THEN v_sejours_1.no_sejour ELSE NULL END)"; + break; + case 'NSNFAC': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND date_sortie <= '[TOPERIODE]'::date AND code_sorti = '1' AND v_mouvements_sejour_2.est_facture = '0' THEN v_sejours_1.no_sejour ELSE NULL END)"; + break; + case 'JRNSORFAC': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE AND date_sortie <= '[TOPERIODE]' AND v_mouvements_sejour_2.est_facture = '1' THEN [VIEW.JOURNEES_FIELD] ELSE null END)"; + break; + case 'JRNSORHONFAC': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE AND date_sortie <= '[TOPERIODE]' AND v_mouvements_sejour_2.est_facture = '1' THEN [VIEW.JOURNEES_FIELD] + nb_ambulatoires + nb_seances_dans_taux ELSE null END)"; + break; + case 'DMSHES': + return "base.cti_division(SUM(CASE WHEN COLUMNCHECKSEQUENCE AND type_sejour = '1' AND nb_sorties_directes = 1 THEN duree ELSE 0 END), SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN nb_sorties_directes ELSE null END))"; + break; + case 'DMSHON': + return "base.cti_division(SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN CASE WHEN type_sejour = '1' AND nb_sorties_directes = 1 THEN duree WHEN type_sejour = '2' THEN nb_ambulatoires WHEN type_sejour = '5' THEN nb_seances ELSE 0 END ELSE 0 END), SUM(CASE WHEN COLUMNCHECKSEQUENCE AND v_sejours_1.date_sortie BETWEEN '[PERIODE]' AND '[TOPERIODE]' AND nb_sorties_directes + nb_ambulatoires + nb_seances_dans_taux > 0 THEN 1 ELSE 0 END))"; + break; + case 'URG': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN nb_urgences ELSE 0 END)"; + break; + case 'EMC': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN equivalent_malade_complet ELSE 0 END)"; + break; + case 'GMP': + return "base.cti_division( + SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN gir_gmp_base*gir_gmp_coefficient ELSE 0 END), + SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN gir_gmp_base ELSE 0 END) + )"; + break; + default: + return '0'; + } + EVAL]]]> + + + '[TOPERIODE]' AND v_sejours_1.code_sorti = 1 THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NJNAS': + return "SUM([VIEW.JOURNEES_FIELD] + nb_ambulatoires + nb_seances_dans_taux)"; + break; + case 'NAD': + return "COUNT(DISTINCT CASE WHEN v_sejours_1.date_entree BETWEEN '[PERIODE]' AND '[TOPERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NADPRE': + return "COUNT(DISTINCT CASE WHEN v_sejours_1.date_entree < '[PERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NSEJ': + return "COUNT(DISTINCT v_sejours_1.no_sejour)"; + break; + case 'NNONSOR': + return "COUNT(DISTINCT CASE WHEN code_sorti = 0 THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NFULL': + return "COUNT(DISTINCT CASE WHEN v_sejours_1.date_entree BETWEEN '[PERIODE]' AND '[TOPERIODE]' AND v_sejours_1.date_sortie BETWEEN '[PERIODE]' AND '[TOPERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NSFAC': + return "COUNT(DISTINCT CASE WHEN date_sortie <= '[TOPERIODE]'::date AND code_sorti = '1' AND v_mouvements_sejour_2.est_facture = '1' THEN v_sejours_1.no_sejour ELSE NULL END)"; + break; + case 'NSNFAC': + return "COUNT(DISTINCT CASE WHEN date_sortie <= '[TOPERIODE]'::date AND code_sorti = '1' AND v_mouvements_sejour_2.est_facture = '0' THEN v_sejours_1.no_sejour ELSE NULL END)"; + break; + case 'JRNSORFAC': + return "SUM(CASE WHEN date_sortie <= '[TOPERIODE]' AND v_mouvements_sejour_2.est_facture = '1' THEN [VIEW.JOURNEES_FIELD] ELSE null END)"; + break; + case 'JRNSORHONFAC': + return "SUM(CASE WHEN date_sortie <= '[TOPERIODE]' AND v_mouvements_sejour_2.est_facture = '1' THEN [VIEW.JOURNEES_FIELD] + nb_ambulatoires + nb_seances_dans_taux ELSE null END)"; + break; + case 'DMSHES': + return "base.cti_division(SUM(CASE WHEN type_sejour = '1' AND nb_sorties_directes = 1 THEN duree ELSE 0 END), SUM(nb_sorties_directes))"; + break; + case 'DMSHON': + return "base.cti_division(SUM(CASE WHEN type_sejour = '1' AND nb_sorties_directes = 1 THEN duree WHEN type_sejour = '2' THEN nb_ambulatoires WHEN type_sejour = '5' THEN nb_seances ELSE 0 END), SUM(CASE WHEN v_sejours_1.date_sortie BETWEEN '[PERIODE]' AND '[TOPERIODE]' AND nb_sorties_directes + nb_ambulatoires + nb_seances_dans_taux > 0 THEN 1 ELSE 0 END))"; + break; + case 'URG': + return "SUM(nb_urgences)"; + break; + case 'EMC': + return "SUM(equivalent_malade_complet)"; + break; + case 'GMP': + return "base.cti_division( + SUM(gir_gmp_base*gir_gmp_coefficient), + SUM(gir_gmp_base) + )"; + default: + return '0'; + } + EVAL]]]> + + + 0) { + return "DEFAULT"; + } + else { + return "indicateurs[2]"; + } + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000055.XML b/settings/ACTI000055.XML new file mode 100644 index 0000000..cd92e12 --- /dev/null +++ b/settings/ACTI000055.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000056.XML b/settings/ACTI000056.XML new file mode 100644 index 0000000..011883d --- /dev/null +++ b/settings/ACTI000056.XML @@ -0,0 +1,1920 @@ + + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY != '-1') { + group_by_label = ' par ' + SELECT.GROUPBY_LABEL; + } + if (SELECT.GROUPBY_2 != '-1') { + group_by_label = group_by_label + ' et ' + SELECT.GROUPBY_2_LABEL; + } + + var date_label = '(' + 'N-1 : '+ VIEW.PERIODE_D_LABEL + ' à ' + VIEW.TOPERIODE_D_LABEL + ' vs ' + ' N : '+ SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL + ')'; + + return 'Comparaison occupation ' + group_by_label + ' ' + date_label; + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0) { + return "DEFAULT"; + } + else { + return "indicateurs[24]"; + } + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000057.XML b/settings/ACTI000057.XML new file mode 100755 index 0000000..f3c21cf --- /dev/null +++ b/settings/ACTI000057.XML @@ -0,0 +1,1356 @@ + + + + + + + 0) { + return "DEFAULT"; + } + else { + return "indicateurs[52]"; + } + + EVAL]]]> + + + 0) { + return "1"; + } + else { + return "-1"; + } + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000058.XML b/settings/ACTI000058.XML new file mode 100644 index 0000000..1985875 --- /dev/null +++ b/settings/ACTI000058.XML @@ -0,0 +1,502 @@ + + + + + + + 0 ";} + if ('[QGROUPE]' == '2') {$select = $select . "AND v_factures_reference_1.nb_groupe > 0 ";} + if ('[QGROUPE]' == '3') {$select = $select . "AND v_factures_reference_1.nb_non_groupe = 0 ";} + if ('[QFACTURE]' == '1') {$select = $select . "AND v_factures_reference_1.nb_non_calcules > 0";} + if ('[QFACTURE]' == '1HBG') {$select = $select . "AND v_factures_reference_1.nb_non_calcules_horsbg > 0";} + if ('[QFACTURE]' == '1BG') {$select = $select . "AND v_factures_reference_1.nb_non_calcules_bg > 0";} + if ('[QFACTURE]' == '2') {$select = $select . "AND v_factures_reference_1.nb_non_calcules = 0";} + if ('[QEXPEDIE]' == '1') {$select = $select . "AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] > 0";} + if ('[QEXPEDIE]' == '2') {$select = $select . "AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] = 0 ";} + if ('[QSOLDE]' == '1') {$select = $select . "AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] > 0";} + if ('[QSOLDE]' == '2') {$select = $select . "AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] = 0 ";} + if ('[QCLOTURE]' == '1') {$select = $select . "AND v_factures_reference_1.nb_non_cloture[VIEW.CLIHON] > 0";} + if ('[QCLOTURE]' == '2') {$select = $select . "AND v_factures_reference_1.nb_non_cloture[VIEW.CLIHON] = 0 AND v_factures_reference_1.nb_non_calcules = 0";} + + + return $select; + EVAL] + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000059.XML b/settings/ACTI000059.XML new file mode 100755 index 0000000..af67e06 --- /dev/null +++ b/settings/ACTI000059.XML @@ -0,0 +1,934 @@ + + + + + + 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTEXPHC': + return "SUM( CASE WHEN type_sejour = '1' AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTEXPHJ': + return "SUM( CASE WHEN (type_sejour = '2' OR type_sejour = '5') AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTEXPA': + return "SUM( CASE WHEN type_sejour = '3' AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTSOL': + return "SUM(CASE WHEN v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTSOLHC': + return "SUM(CASE WHEN type_sejour = '1' AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTSOLHJ': + return "SUM(CASE WHEN (type_sejour = '2' OR type_sejour = '5') AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTSOLA': + return "SUM(CASE WHEN type_sejour = '3' AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + default: + return 'SUM(v_factures_reference_1.nb_factures)'; + } + EVAL]]]> + + + 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTEXPHC': + return "SUM( CASE WHEN COLUMNCHECKSEQUENCE AND type_sejour = '1' AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTEXPHJ': + return "SUM( CASE WHEN COLUMNCHECKSEQUENCE AND (type_sejour = '2' OR type_sejour = '5') AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTEXPA': + return "SUM( CASE WHEN COLUMNCHECKSEQUENCE AND type_sejour = '3' AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTSOL': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTSOLHC': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE AND type_sejour = '1' AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTSOLHJ': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE AND (type_sejour = '2' OR type_sejour = '5') AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTSOLA': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE AND type_sejour = '3' AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + default: + return 'SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN v_factures_reference_1.nb_factures ELSE NULL END)'; + } + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000060.XML b/settings/ACTI000060.XML new file mode 100755 index 0000000..f165ae4 --- /dev/null +++ b/settings/ACTI000060.XML @@ -0,0 +1,1349 @@ + + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY != '-1') { + group_by_label = ' par ' + SELECT.GROUPBY_LABEL; + } + if (SELECT.GROUPBY_2 != '-1') { + group_by_label = group_by_label + ' et ' + SELECT.GROUPBY_2_LABEL; + } + + var date_label = '(' + VIEW.COMPAREPERIODETXT + ' : '+ VIEW.PERIODE_D_LABEL + ' à ' + VIEW.TOPERIODE_D_LABEL + ' vs ' + ' N : '+ SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL + ')'; + + return 'Comparaison suivi des délais de traitements ' + group_by_label + ' ' + date_label; + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0) { + return "DEFAULT"; + } + else { + return "4"; + } + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000061.XML b/settings/ACTI000061.XML new file mode 100644 index 0000000..116222c --- /dev/null +++ b/settings/ACTI000061.XML @@ -0,0 +1,377 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000062.XML b/settings/ACTI000062.XML new file mode 100644 index 0000000..4dad897 --- /dev/null +++ b/settings/ACTI000062.XML @@ -0,0 +1,1210 @@ + + + + + + + + + + + + + + + + + + 1"; + } + return $qmvt_select; + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000063.XML b/settings/ACTI000063.XML new file mode 100644 index 0000000..6b081ff --- /dev/null +++ b/settings/ACTI000063.XML @@ -0,0 +1,3646 @@ + + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY != '-1') { + group_by_label = ' par ' + SELECT.GROUPBY_LABEL; + } + if (SELECT.GROUPBY_2 != '-1') { + group_by_label = group_by_label + ' et ' + SELECT.GROUPBY_2_LABEL; + } + + var date_label = '(' + VIEW.COMPAREPERIODETXT + ' : '+ VIEW.PERIODE_D_LABEL + ' à ' + VIEW.TOPERIODE_D_LABEL + ' vs ' + ' N : '+ SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL + ')'; + + + return 'Comparaison facturation ' + group_by_label + ' ' + date_label; + + ]]> + + + + + + + + + + + + + + + + + + + 1"; + } + return $qmvt_select; + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0) { + return "1"; + } + else { + return "0"; + } + + EVAL]]]> + + + 0) { + return "DEFAULT"; + } + else { + return 'indicateurs[5]'; + } + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000064.XML b/settings/ACTI000064.XML new file mode 100644 index 0000000..f8a8f35 --- /dev/null +++ b/settings/ACTI000064.XML @@ -0,0 +1,711 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000065.XML b/settings/ACTI000065.XML new file mode 100644 index 0000000..eba3695 --- /dev/null +++ b/settings/ACTI000065.XML @@ -0,0 +1,242 @@ + + + + + + + + + + + '1'"; + EVAL] + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000066.XML b/settings/ACTI000066.XML new file mode 100644 index 0000000..697b0b8 --- /dev/null +++ b/settings/ACTI000066.XML @@ -0,0 +1,384 @@ + + + + + + + + + + + + '1'"; + EVAL] + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000067.XML b/settings/ACTI000067.XML new file mode 100644 index 0000000..aaf209e --- /dev/null +++ b/settings/ACTI000067.XML @@ -0,0 +1,7 @@ + + + diff --git a/settings/ACTI000069.XML b/settings/ACTI000069.XML new file mode 100644 index 0000000..4294fc9 --- /dev/null +++ b/settings/ACTI000069.XML @@ -0,0 +1,7 @@ + + + diff --git a/settings/ACTI000070.XML b/settings/ACTI000070.XML new file mode 100644 index 0000000..844d3ac --- /dev/null +++ b/settings/ACTI000070.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000071.XML b/settings/ACTI000071.XML new file mode 100644 index 0000000..9fbea2f --- /dev/null +++ b/settings/ACTI000071.XML @@ -0,0 +1,578 @@ + + + + + + + + + + + + '1'"; + EVAL] + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000072.XML b/settings/ACTI000072.XML new file mode 100644 index 0000000..b5d9479 --- /dev/null +++ b/settings/ACTI000072.XML @@ -0,0 +1,941 @@ + + + + + + + '1'"; + EVAL] + ]]> + + + 0'; + break; + case 'NEM': + return 'AND (nb_entrees_directes > 0 OR nb_entrees_mutation_[VIEW.MUTATION_FIELD] > 0)'; + break; + case 'NSD': + return 'AND nb_sorties_directes > 0'; + break; + case 'NSM': + return 'AND (nb_sorties_directes > 0 OR nb_sorties_mutation_[VIEW.MUTATION_FIELD] > 0)'; + break; + case 'NJN': + return 'AND [VIEW.JOURNEES_FIELD] > 0'; + break; + case 'NJNS': + return 'AND nb_jour_sejour_sorti > 0'; + break; + case 'NEX': + return 'AND nb_externes > 0'; + break; + case 'NAM': + return 'AND nb_ambulatoires > 0'; + break; + case 'NEDA': + return 'AND (nb_entrees_directes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NSDA': + return 'AND (nb_sorties_directes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NEDXA': + return 'AND (nb_entrees_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NSDXA': + return 'AND (nb_sorties_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NSDXBB': + return 'AND (nb_sorties_directes > 0 OR nb_bebes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NJNXA': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_externes > 0 OR nb_ambulatoires > 0)'; + break; + case 'NEDXAS': + return 'AND (nb_entrees_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0 OR nb_seances > 0)'; + break; + case 'NSDXAS': + return 'AND (nb_sorties_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0 OR nb_seances > 0)'; + break; + case 'NSDXASSH': + return "AND (nb_sorties_directes > 0 OR nb_externes > 0 OR nb_ambulatoires > 0 OR CASE WHEN type_sejour = '5' THEN nb_seances ELSE 0 END > 0)"; + break; + case 'NJNXAS': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_externes > 0 OR nb_ambulatoires > 0 OR nb_seances > 0)'; + break; + case 'NSE': + return "AND nb_seances > 0"; + break; + case 'NSEDIA': + return "AND nb_seances_dialyse > 0"; + break; + case 'NSECHM': + return "AND nb_seances_chimio > 0"; + break; + case 'NSEDIV': + return "AND nb_seances_autre > 0"; + break; + case 'NBB': + return "AND nb_bebes > 0"; + break; + case 'NBP': + return "AND no_patient > 0"; + break; + case 'NCP': + return "AND [VIEW.CP_FIELD] > 0"; + break; + case 'NJO': + return ""; + break; + case 'NJNM': + return 'AND [VIEW.JOURNEES_FIELD] > 0'; + break; + case 'NEXM': + return 'AND nb_externes > 0'; + break; + case 'NAMM': + return 'AND nb_ambulatoires > 0'; + break; + case 'NSEM': + return "AND nb_seances > 0"; + break; + case 'NJNXAM': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_externes > 0 OR nb_ambulatoires > 0)'; + break; + case 'TAU': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_ambulatoires > 0 OR nb_seances_dans_taux > 0 )'; + break; + case 'NSHP': + return "AND v_sejours_1.date_sortie > '[TOPERIODE]' AND v_sejours_1.code_sorti = 1"; + break; + case 'NJNAS': + return 'AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_ambulatoires > 0 OR nb_seances > 0)'; + break; + case 'NSFAC': + return "AND v_mouvements_sejour_2.est_facture = '1'"; + break; + case 'NSNFAC': + return "AND v_mouvements_sejour_2.est_facture = '0'"; + break; + case 'JRNSORFAC': + return "AND v_mouvements_sejour_2.est_facture = '1' AND [VIEW.JOURNEES_FIELD] > 0"; + break; + case 'JRNSORHONFAC': + return "AND v_mouvements_sejour_2.est_facture = '1' AND ([VIEW.JOURNEES_FIELD] > 0 OR nb_ambulatoires > 0 OR nb_seances > 0)"; + break; + case 'URG': + return "AND nb_urgences > 0"; + break; + case 'EMC': + return 'AND equivalent_malade_complet > 0'; + break; + default: + return ''; + } + EVAL]]]> + + + '[TOPERIODE]' AND v_sejours_1.code_sorti = 1 THEN v_sejours_1.no_sejour ELSE null END ELSE null END)"; + break; + case 'NJNAS': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN [VIEW.JOURNEES_FIELD] + nb_ambulatoires + nb_seances_dans_taux ELSE null END)"; + break; + case 'NAD': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND v_sejours_1.date_entree BETWEEN '[PERIODE]' AND '[TOPERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NADPRE': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND v_sejours_1.date_entree < '[PERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NSEJ': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NNONSOR': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND code_sorti = 0 THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NFULL': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND v_sejours_1.date_entree BETWEEN '[PERIODE]' AND '[TOPERIODE]' AND v_sejours_1.date_sortie BETWEEN '[PERIODE]' AND '[TOPERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NSFAC': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND date_sortie <= '[TOPERIODE]'::date AND code_sorti = '1' AND v_mouvements_sejour_2.est_facture = '1' THEN v_sejours_1.no_sejour ELSE NULL END)"; + break; + case 'NSNFAC': + return "COUNT(DISTINCT CASE WHEN COLUMNCHECKSEQUENCE AND date_sortie <= '[TOPERIODE]'::date AND code_sorti = '1' AND v_mouvements_sejour_2.est_facture = '0' THEN v_sejours_1.no_sejour ELSE NULL END)"; + break; + case 'JRNSORFAC': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE AND date_sortie <= '[TOPERIODE]' AND v_mouvements_sejour_2.est_facture = '1' THEN [VIEW.JOURNEES_FIELD] ELSE null END)"; + break; + case 'JRNSORHONFAC': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE AND date_sortie <= '[TOPERIODE]' AND v_mouvements_sejour_2.est_facture = '1' THEN [VIEW.JOURNEES_FIELD] + nb_ambulatoires + nb_seances_dans_taux ELSE null END)"; + break; + case 'DMSHES': + return "base.cti_division(SUM(CASE WHEN COLUMNCHECKSEQUENCE AND type_sejour = '1' AND nb_sorties_directes = 1 THEN duree ELSE 0 END), SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN nb_sorties_directes ELSE null END))"; + break; + case 'DMSHON': + return "base.cti_division(SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN CASE WHEN type_sejour = '1' AND nb_sorties_directes = 1 THEN duree WHEN type_sejour = '2' THEN nb_ambulatoires WHEN type_sejour = '5' THEN nb_seances ELSE 0 END ELSE 0 END), SUM(CASE WHEN COLUMNCHECKSEQUENCE AND v_sejours_1.date_sortie BETWEEN '[PERIODE]' AND '[TOPERIODE]' AND nb_sorties_directes + nb_ambulatoires + nb_seances_dans_taux > 0 THEN 1 ELSE 0 END))"; + break; + case 'URG': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN nb_urgences ELSE 0 END)"; + break; + case 'EMC': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN equivalent_malade_complet ELSE 0 END)"; + break; + case 'GMP': + return "base.cti_division( + SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN gir_gmp_base*gir_gmp_coefficient ELSE 0 END), + SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN gir_gmp_base ELSE 0 END) + )"; + break; + default: + return '0'; + } + EVAL]]]> + + + '[TOPERIODE]' AND v_sejours_1.code_sorti = 1 THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NJNAS': + return "SUM([VIEW.JOURNEES_FIELD] + nb_ambulatoires + nb_seances_dans_taux)"; + break; + case 'NAD': + return "COUNT(DISTINCT CASE WHEN v_sejours_1.date_entree BETWEEN '[PERIODE]' AND '[TOPERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NADPRE': + return "COUNT(DISTINCT CASE WHEN v_sejours_1.date_entree < '[PERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NSEJ': + return "COUNT(DISTINCT v_sejours_1.no_sejour)"; + break; + case 'NNONSOR': + return "COUNT(DISTINCT CASE WHEN code_sorti = 0 THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NFULL': + return "COUNT(DISTINCT CASE WHEN v_sejours_1.date_entree BETWEEN '[PERIODE]' AND '[TOPERIODE]' AND v_sejours_1.date_sortie BETWEEN '[PERIODE]' AND '[TOPERIODE]' THEN v_sejours_1.no_sejour ELSE null END)"; + break; + case 'NSFAC': + return "COUNT(DISTINCT CASE WHEN date_sortie <= '[TOPERIODE]'::date AND code_sorti = '1' AND v_mouvements_sejour_2.est_facture = '1' THEN v_sejours_1.no_sejour ELSE NULL END)"; + break; + case 'NSNFAC': + return "COUNT(DISTINCT CASE WHEN date_sortie <= '[TOPERIODE]'::date AND code_sorti = '1' AND v_mouvements_sejour_2.est_facture = '0' THEN v_sejours_1.no_sejour ELSE NULL END)"; + break; + case 'JRNSORFAC': + return "SUM(CASE WHEN date_sortie <= '[TOPERIODE]' AND v_mouvements_sejour_2.est_facture = '1' THEN [VIEW.JOURNEES_FIELD] ELSE null END)"; + break; + case 'JRNSORHONFAC': + return "SUM(CASE WHEN date_sortie <= '[TOPERIODE]' AND v_mouvements_sejour_2.est_facture = '1' THEN [VIEW.JOURNEES_FIELD] + nb_ambulatoires + nb_seances_dans_taux ELSE null END)"; + break; + case 'DMSHES': + return "base.cti_division(SUM(CASE WHEN type_sejour = '1' AND nb_sorties_directes = 1 THEN duree ELSE 0 END), SUM(nb_sorties_directes))"; + break; + case 'DMSHON': + return "base.cti_division(SUM(CASE WHEN type_sejour = '1' AND nb_sorties_directes = 1 THEN duree WHEN type_sejour = '2' THEN nb_ambulatoires WHEN type_sejour = '5' THEN nb_seances ELSE 0 END), SUM(CASE WHEN v_sejours_1.date_sortie BETWEEN '[PERIODE]' AND '[TOPERIODE]' AND nb_sorties_directes + nb_ambulatoires + nb_seances_dans_taux > 0 THEN 1 ELSE 0 END))"; + break; + case 'URG': + return "SUM(nb_urgences)"; + break; + case 'EMC': + return "SUM(equivalent_malade_complet)"; + break; + case 'GMP': + return "base.cti_division( + SUM(gir_gmp_base*gir_gmp_coefficient), + SUM(gir_gmp_base) + )"; + default: + return '0'; + } + EVAL]]]> + + + 0) { + return "DEFAULT"; + } + else { + return "indicateurs[2]"; + } + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000073.XML b/settings/ACTI000073.XML new file mode 100644 index 0000000..73fb19c --- /dev/null +++ b/settings/ACTI000073.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000074.XML b/settings/ACTI000074.XML new file mode 100644 index 0000000..2cb8c5c --- /dev/null +++ b/settings/ACTI000074.XML @@ -0,0 +1,586 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000075.XML b/settings/ACTI000075.XML new file mode 100644 index 0000000..163b788 --- /dev/null +++ b/settings/ACTI000075.XML @@ -0,0 +1,810 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000077.XML b/settings/ACTI000077.XML new file mode 100644 index 0000000..18ef5d3 --- /dev/null +++ b/settings/ACTI000077.XML @@ -0,0 +1,457 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000078.XML b/settings/ACTI000078.XML new file mode 100644 index 0000000..8518eef --- /dev/null +++ b/settings/ACTI000078.XML @@ -0,0 +1,1460 @@ + + + + + + + + + + + 0) { + return "1"; + } + else { + return "-1"; + } + EVAL] + ]]> + + + + 0) { + return "DEFAULT"; + } + else { + return "indicateurs[3]"; + } + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + 0 OR montant_depassement <> 0 OR montant_non_facture <> 0)'; + break; + case '2': + return 'AND (montant_comptabilise <> 0)'; + break; + case 'MTFACI': + return 'AND (montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 OR COALESCE(montant_facture_actes_inclus_dans_sejour,0) <> 0)'; + break; + case 'MTI': + return 'AND (COALESCE(montant_facture_actes_inclus_dans_sejour,0) <> 0)'; + break; + default: + return ''; + } + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nombre de séjours facturés + + Nombre de séjours avec au moins une ligne facturée + ]]> + + + + + Nombre de séjours non facturés + + Nombre de séjours avec aucune ligne facturée + ]]> + + + + + Nombre de séjours + + Nombre de séjours au global + ]]> + + + + + + + + + + + + + + + + + + Nombre de séjours facturés à l'AMO + + Nombre de séjours avec au moins une ligne facturée à l'AMO + ]]> + + + + + + + + + + + + + + + Nombre de séjours facturés à la mutuelle + + Nombre de séjours avec au moins une ligne facturée à la mutuelle + ]]> + + + + + + + + + Nombre de séjours facturés au patient + + Nombre de séjours avec au moins une ligne facturée au patient + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000079.XML b/settings/ACTI000079.XML new file mode 100755 index 0000000..5f5a8bd --- /dev/null +++ b/settings/ACTI000079.XML @@ -0,0 +1,955 @@ + + + + + + + + + + + + + + + + 0 OR montant_depassement <> 0 OR montant_non_facture <> 0)'; + break; + case '2': + return 'AND (montant_comptabilise <> 0)'; + break; + case 'MTFACI': + return 'AND (montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 OR COALESCE(montant_facture_actes_inclus_dans_sejour,0) <> 0)'; + break; + case 'MTI': + return 'AND (COALESCE(montant_facture_actes_inclus_dans_sejour,0) <> 0)'; + break; + default: + return ''; + } + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000080.XML b/settings/ACTI000080.XML new file mode 100644 index 0000000..a1022a3 --- /dev/null +++ b/settings/ACTI000080.XML @@ -0,0 +1,1587 @@ + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY != '-1') { + group_by_label = ' par ' + SELECT.GROUPBY_LABEL; + } + if (SELECT.GROUPBY_2 != '-1') { + group_by_label = group_by_label + ' et ' + SELECT.GROUPBY_2_LABEL; + } + + var date_label = '('+ SELECT.QUELLEDATE_LABEL +' : '+ 'N-1 : '+ VIEW.PERIODE_D_LABEL + ' à ' + VIEW.TOPERIODE_D_LABEL + ' vs ' + ' N : '+ SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL + ')'; + + return 'Comparaison facturation actes ' + group_by_label + ' ' + date_label; + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0) { + return "1"; + } + else { + return "0"; + } + + EVAL]]]> + + + 0 OR montant_depassement <> 0 OR montant_non_facture <> 0)'; + break; + case '2': + return 'AND (montant_comptabilise <> 0)'; + break; + case 'MTFACI': + return 'AND (montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 OR COALESCE(montant_facture_actes_inclus_dans_sejour,0) <> 0)'; + break; + case 'MTI': + return 'AND (COALESCE(montant_facture_actes_inclus_dans_sejour,0) <> 0)'; + break; + default: + return ''; + } + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000081.XML b/settings/ACTI000081.XML new file mode 100644 index 0000000..65d8217 --- /dev/null +++ b/settings/ACTI000081.XML @@ -0,0 +1,777 @@ + + + + + + + + + + + + 0 OR montant_depassement <> 0 OR montant_non_facture <> 0)'; + break; + case '2': + return 'AND (montant_comptabilise <> 0)'; + break; + case 'MTFACI': + return 'AND (montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 OR COALESCE(montant_facture_actes_inclus_dans_sejour,0) <> 0)'; + break; + case 'MTI': + return 'AND (COALESCE(montant_facture_actes_inclus_dans_sejour,0) <> 0)'; + break; + default: + return ''; + } + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000082.XML b/settings/ACTI000082.XML new file mode 100644 index 0000000..5d45943 --- /dev/null +++ b/settings/ACTI000082.XML @@ -0,0 +1,1037 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + 1"; + } + return $qmvt_select; + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000083.XML b/settings/ACTI000083.XML new file mode 100644 index 0000000..e916bd1 --- /dev/null +++ b/settings/ACTI000083.XML @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000085.XML b/settings/ACTI000085.XML new file mode 100644 index 0000000..76b2058 --- /dev/null +++ b/settings/ACTI000085.XML @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000086.XML b/settings/ACTI000086.XML new file mode 100644 index 0000000..eba84cd --- /dev/null +++ b/settings/ACTI000086.XML @@ -0,0 +1,587 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000087.XML b/settings/ACTI000087.XML new file mode 100644 index 0000000..2fac702 --- /dev/null +++ b/settings/ACTI000087.XML @@ -0,0 +1,754 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000088.XML b/settings/ACTI000088.XML new file mode 100644 index 0000000..1aba6a2 --- /dev/null +++ b/settings/ACTI000088.XML @@ -0,0 +1,247 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000089.XML b/settings/ACTI000089.XML new file mode 100644 index 0000000..d2dbcf7 --- /dev/null +++ b/settings/ACTI000089.XML @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000090.XML b/settings/ACTI000090.XML new file mode 100644 index 0000000..86e4f3e --- /dev/null +++ b/settings/ACTI000090.XML @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000091.XML b/settings/ACTI000091.XML new file mode 100644 index 0000000..ffbb67d --- /dev/null +++ b/settings/ACTI000091.XML @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000092.XML b/settings/ACTI000092.XML new file mode 100644 index 0000000..ea3757a --- /dev/null +++ b/settings/ACTI000092.XML @@ -0,0 +1,928 @@ + + + + <![CDATA[= + var title:String = 'Chiffrier comptable CTI'; + + if (SELECT.PERIODE != '-1') { + if (SELECT.TOPERIODE != '-1') { + title = title + ' de ' + SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL; + } + else { + title = title + ' à partir de ' + SELECT.PERIODE_LABEL; + } + } + else { + if (SELECT.TOPERIODE != '-1') { + title = title + ' jusque ' + SELECT.TOPERIODE_LABEL; + } + } + + if (SELECT.PROVIDER != '-1') { + title = title + ' (' + SELECT.PROVIDER_LABEL + ')' + } + return title; + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000093.XML b/settings/ACTI000093.XML new file mode 100644 index 0000000..18de42a --- /dev/null +++ b/settings/ACTI000093.XML @@ -0,0 +1,352 @@ + + + + <![CDATA[= + var title:String = '' + + if (SELECT.VAL_OPTION != 'V') { + title = title + 'INValidation '; + } + else { + title = title + 'Validation '; + } + title = title + ' chiffrier comptable '; + + if (SELECT.PERIODE != '-1') { + if (SELECT.TOPERIODE != '-1') { + title = title + ' de ' + SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL; + } + else { + title = title + ' à partir de ' + SELECT.PERIODE_LABEL; + } + } + else { + if (SELECT.TOPERIODE != '-1') { + title = title + ' jusque ' + SELECT.TOPERIODE_LABEL; + } + } + + if (SELECT.PROVIDER != '-1') { + title = title + ' (' + SELECT.PROVIDER_LABEL + ')' + } + return title; + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000094.XML b/settings/ACTI000094.XML new file mode 100644 index 0000000..3e3af18 --- /dev/null +++ b/settings/ACTI000094.XML @@ -0,0 +1,7 @@ + + + diff --git a/settings/ACTI000095.XML b/settings/ACTI000095.XML new file mode 100644 index 0000000..a756c82 --- /dev/null +++ b/settings/ACTI000095.XML @@ -0,0 +1,5 @@ + + + diff --git a/settings/ACTI000096.XML b/settings/ACTI000096.XML new file mode 100644 index 0000000..93e851d --- /dev/null +++ b/settings/ACTI000096.XML @@ -0,0 +1,1906 @@ + + + + <![CDATA[= + var title:String = 'Synthèse comptable'; + + + title = title + ' de ' + [VIEW.ANNEE_D] + ' à ' + SELECT.ANNEE_F; + + + if (SELECT.PROVIDER != '-1') { + title = title + ' (' + SELECT.PROVIDER_LABEL + ')' + } + return title; + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/ACTI000097.XML b/settings/ACTI000097.XML new file mode 100644 index 0000000..b1aab93 --- /dev/null +++ b/settings/ACTI000097.XML @@ -0,0 +1,486 @@ + + + + <![CDATA[= + var title:String = 'Chiffrier occupation CTI'; + + if (SELECT.PERIODE != '-1') { + if (SELECT.TOPERIODE != '-1') { + title = title + ' de ' + SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL; + } + else { + title = title + ' à partir de ' + SELECT.PERIODE_LABEL; + } + } + else { + if (SELECT.TOPERIODE != '-1') { + title = title + ' jusque ' + SELECT.TOPERIODE_LABEL; + } + } + + if (SELECT.PROVIDER != '-1') { + title = title + ' (' + SELECT.PROVIDER_LABEL + ')' + } + return title; + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000098.XML b/settings/ACTI000098.XML new file mode 100644 index 0000000..b4a3743 --- /dev/null +++ b/settings/ACTI000098.XML @@ -0,0 +1,711 @@ + + + + <![CDATA[= + var title:String = 'Tableau HSTV'; + + title = title + ' (' + VIEW.PERIODE_H + ' - ' + VIEW.TOPERIODE_H + ')' + + return title; + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000099.XML b/settings/ACTI000099.XML new file mode 100644 index 0000000..12a0d22 --- /dev/null +++ b/settings/ACTI000099.XML @@ -0,0 +1,648 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000100.XML b/settings/ACTI000100.XML new file mode 100644 index 0000000..b5a59cb --- /dev/null +++ b/settings/ACTI000100.XML @@ -0,0 +1,575 @@ + + + + + + + + + + + + + 0"; + } + if ('[DATA]' == 'CPETNONCP') { + $clause = "nb_non_cp_avec_sejour_cp <> 0"; + } + if ('[DATA]' == 'CPSANSDMD') { + $clause = "nb_cp_sans_demande <> 0"; + } + if ('[DATA]' == 'DMDSANSCP') { + $clause = "nb_non_cp_demandees_sortis + nb_non_cp_demandees_presents <> 0"; + } + if ('[DATA]' == 'DMDSANSCPS') { + $clause = "nb_non_cp_demandees_sortis <> 0"; + } + if ('[DATA]' == 'DMDSANSCPP') { + $clause = "nb_non_cp_demandees_presents <> 0"; + } + + + return $clause; + + EVAL]]]> + + + + '1'"; + } + + + return $clause; + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000101.XML b/settings/ACTI000101.XML new file mode 100644 index 0000000..8ad63ac --- /dev/null +++ b/settings/ACTI000101.XML @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000102.XML b/settings/ACTI000102.XML new file mode 100644 index 0000000..0e1590b --- /dev/null +++ b/settings/ACTI000102.XML @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000103.XML b/settings/ACTI000103.XML new file mode 100644 index 0000000..857b79b --- /dev/null +++ b/settings/ACTI000103.XML @@ -0,0 +1,426 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000104.XML b/settings/ACTI000104.XML new file mode 100644 index 0000000..92896b0 --- /dev/null +++ b/settings/ACTI000104.XML @@ -0,0 +1,580 @@ + + + + + + 0"; + break; + default: + return ""; + } + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000105.XML b/settings/ACTI000105.XML new file mode 100644 index 0000000..571ad0a --- /dev/null +++ b/settings/ACTI000105.XML @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000106.XML b/settings/ACTI000106.XML new file mode 100644 index 0000000..dc97679 --- /dev/null +++ b/settings/ACTI000106.XML @@ -0,0 +1,278 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000107.XML b/settings/ACTI000107.XML new file mode 100644 index 0000000..9d22f10 --- /dev/null +++ b/settings/ACTI000107.XML @@ -0,0 +1,415 @@ + + + + + + 0"; + break; + default: + return ''; + } + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000108.XML b/settings/ACTI000108.XML new file mode 100644 index 0000000..797986f --- /dev/null +++ b/settings/ACTI000108.XML @@ -0,0 +1,382 @@ + + + + + + + + 0"; + break; + default: + return ""; + } + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000109.XML b/settings/ACTI000109.XML new file mode 100644 index 0000000..5ec196f --- /dev/null +++ b/settings/ACTI000109.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000110.XML b/settings/ACTI000110.XML new file mode 100644 index 0000000..7078540 --- /dev/null +++ b/settings/ACTI000110.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000111.XML b/settings/ACTI000111.XML new file mode 100644 index 0000000..2b09167 --- /dev/null +++ b/settings/ACTI000111.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000112.XML b/settings/ACTI000112.XML new file mode 100644 index 0000000..adbb365 --- /dev/null +++ b/settings/ACTI000112.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000113.XML b/settings/ACTI000113.XML new file mode 100644 index 0000000..0aff019 --- /dev/null +++ b/settings/ACTI000113.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000114.XML b/settings/ACTI000114.XML new file mode 100644 index 0000000..c2b2abe --- /dev/null +++ b/settings/ACTI000114.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000115.XML b/settings/ACTI000115.XML new file mode 100644 index 0000000..0540ae1 --- /dev/null +++ b/settings/ACTI000115.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000116.XML b/settings/ACTI000116.XML new file mode 100644 index 0000000..cd5d40b --- /dev/null +++ b/settings/ACTI000116.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000117.XML b/settings/ACTI000117.XML new file mode 100644 index 0000000..0ef7847 --- /dev/null +++ b/settings/ACTI000117.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000118.XML b/settings/ACTI000118.XML new file mode 100644 index 0000000..d9f63ad --- /dev/null +++ b/settings/ACTI000118.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000119.XML b/settings/ACTI000119.XML new file mode 100644 index 0000000..f0f1b11 --- /dev/null +++ b/settings/ACTI000119.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000120.XML b/settings/ACTI000120.XML new file mode 100644 index 0000000..667ef28 --- /dev/null +++ b/settings/ACTI000120.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000121.XML b/settings/ACTI000121.XML new file mode 100644 index 0000000..92008c4 --- /dev/null +++ b/settings/ACTI000121.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000123.XML b/settings/ACTI000123.XML new file mode 100644 index 0000000..9c97858 --- /dev/null +++ b/settings/ACTI000123.XML @@ -0,0 +1,1167 @@ + + + + + + + + '1'"; + EVAL] + ]]> + + + 0) { + return "DEFAULT"; + } + else { + return "indicateurs[24]"; + } + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/ACTI000124.XML b/settings/ACTI000124.XML new file mode 100644 index 0000000..7c98945 --- /dev/null +++ b/settings/ACTI000124.XML @@ -0,0 +1,348 @@ + + + + + + + + '1'"; + EVAL] + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000125.XML b/settings/ACTI000125.XML new file mode 100644 index 0000000..f8fd810 --- /dev/null +++ b/settings/ACTI000125.XML @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/ACTI000126.XML b/settings/ACTI000126.XML new file mode 100644 index 0000000..5736854 --- /dev/null +++ b/settings/ACTI000126.XML @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/ACTI000127.XML b/settings/ACTI000127.XML new file mode 100644 index 0000000..47be1b1 --- /dev/null +++ b/settings/ACTI000127.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000128.XML b/settings/ACTI000128.XML new file mode 100644 index 0000000..3caf4ec --- /dev/null +++ b/settings/ACTI000128.XML @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000129.XML b/settings/ACTI000129.XML new file mode 100644 index 0000000..a540d5c --- /dev/null +++ b/settings/ACTI000129.XML @@ -0,0 +1,413 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/ACTI000130.XML b/settings/ACTI000130.XML new file mode 100644 index 0000000..2e5d1c1 --- /dev/null +++ b/settings/ACTI000130.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000131.XML b/settings/ACTI000131.XML new file mode 100644 index 0000000..bfad29b --- /dev/null +++ b/settings/ACTI000131.XML @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/settings/ACTI000132.XML b/settings/ACTI000132.XML new file mode 100644 index 0000000..fe67b75 --- /dev/null +++ b/settings/ACTI000132.XML @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000133.XML b/settings/ACTI000133.XML new file mode 100644 index 0000000..36e9c20 --- /dev/null +++ b/settings/ACTI000133.XML @@ -0,0 +1,278 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000134.XML b/settings/ACTI000134.XML new file mode 100644 index 0000000..720545e --- /dev/null +++ b/settings/ACTI000134.XML @@ -0,0 +1,589 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000136.XML b/settings/ACTI000136.XML new file mode 100644 index 0000000..05e1771 --- /dev/null +++ b/settings/ACTI000136.XML @@ -0,0 +1,304 @@ + + + + + + + + + + + + '' THEN rub.output_format::text ELSE ind.output_format::text END"; + + EVAL]]]> + + + 0"; + } + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/ACTI000137.XML b/settings/ACTI000137.XML new file mode 100644 index 0000000..cee2690 --- /dev/null +++ b/settings/ACTI000137.XML @@ -0,0 +1,990 @@ + + + + + + 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END "; + break; + case 'MTEXPHC': + return "CASE WHEN type_sejour = '1' AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END "; + break; + case 'MTEXPHJ': + return "CASE WHEN (type_sejour = '2' OR type_sejour = '5') AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END "; + break; + case 'MTEXPA': + return "CASE WHEN type_sejour = '3' AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END "; + break; + case 'MTSOL': + return "CASE WHEN v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END "; + break; + case 'MTSOLHC': + return "CASE WHEN type_sejour = '1' AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END "; + break; + case 'MTSOLHJ': + return "CASE WHEN (type_sejour = '2' OR type_sejour = '5') AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END "; + break; + case 'MTSOLA': + return "CASE WHEN type_sejour = '3' AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END "; + break; + default: + return 'v_factures_reference_1.nb_factures'; + } + EVAL]]]> + + + 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTEXPHC': + return "SUM( CASE WHEN type_sejour = '1' AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTEXPHJ': + return "SUM( CASE WHEN (type_sejour = '2' OR type_sejour = '5') AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTEXPA': + return "SUM( CASE WHEN type_sejour = '3' AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTSOL': + return "SUM(CASE WHEN v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTSOLHC': + return "SUM(CASE WHEN type_sejour = '1' AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTSOLHJ': + return "SUM(CASE WHEN (type_sejour = '2' OR type_sejour = '5') AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTSOLA': + return "SUM(CASE WHEN type_sejour = '3' AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + default: + return 'SUM(v_factures_reference_1.nb_factures)'; + } + EVAL]]]> + + + 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTEXPHC': + return "SUM( CASE WHEN COLUMNCHECKSEQUENCE AND type_sejour = '1' AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTEXPHJ': + return "SUM( CASE WHEN COLUMNCHECKSEQUENCE AND (type_sejour = '2' OR type_sejour = '5') AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTEXPA': + return "SUM( CASE WHEN COLUMNCHECKSEQUENCE AND type_sejour = '3' AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTSOL': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTSOLHC': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE AND type_sejour = '1' AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTSOLHJ': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE AND (type_sejour = '2' OR type_sejour = '5') AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + case 'MTSOLA': + return "SUM(CASE WHEN COLUMNCHECKSEQUENCE AND type_sejour = '3' AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END )"; + break; + default: + return 'SUM(CASE WHEN COLUMNCHECKSEQUENCE THEN v_factures_reference_1.nb_factures ELSE NULL END)'; + } + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000138.XML b/settings/ACTI000138.XML new file mode 100644 index 0000000..809c406 --- /dev/null +++ b/settings/ACTI000138.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000139.XML b/settings/ACTI000139.XML new file mode 100644 index 0000000..260a48a --- /dev/null +++ b/settings/ACTI000139.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000140.XML b/settings/ACTI000140.XML new file mode 100644 index 0000000..3a210a2 --- /dev/null +++ b/settings/ACTI000140.XML @@ -0,0 +1,740 @@ + + + + + + + + EVAL]]]> + + + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000141.XML b/settings/ACTI000141.XML new file mode 100644 index 0000000..d729f84 --- /dev/null +++ b/settings/ACTI000141.XML @@ -0,0 +1,1113 @@ + + + + + + + + + + EVAL]]]> + + + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/ACTI000142.XML b/settings/ACTI000142.XML new file mode 100644 index 0000000..7c03bca --- /dev/null +++ b/settings/ACTI000142.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000143.XML b/settings/ACTI000143.XML new file mode 100644 index 0000000..401c25b --- /dev/null +++ b/settings/ACTI000143.XML @@ -0,0 +1,2135 @@ + + + + + + + 0) { + return "DEFAULT"; + } + + else { + return "indicateurs[49]"; + } + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/ACTI000144.XML b/settings/ACTI000144.XML new file mode 100644 index 0000000..ccabb18 --- /dev/null +++ b/settings/ACTI000144.XML @@ -0,0 +1,377 @@ + + + + + + + + + + + + + + + + + + + + ='[PERIODE]' "; + } + if ('[QUELLEDATE]' == 'EN') { + return " AND v_sejours_1.date_entree BETWEEN '[PERIODE]' AND '[TOPERIODE]' "; + } + if ('[QUELLEDATE]' == 'SO') { + return " AND code_sorti = '1' AND v_sejours_1.date_sortie BETWEEN '[PERIODE]' AND '[TOPERIODE]' "; + } + EVAL] + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000146.XML b/settings/ACTI000146.XML new file mode 100644 index 0000000..ce91c4c --- /dev/null +++ b/settings/ACTI000146.XML @@ -0,0 +1,652 @@ + + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY != '-1') { + group_by_label = ' par ' + SELECT.GROUPBY_LABEL; + } + var date_label = '(' + 'N-1 : '+ VIEW.PERIODE_D_LABEL + ' à ' + VIEW.TOPERIODE_D_LABEL + ' vs ' + ' N : '+ SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL + ')'; + + return 'Cumul au dernier mois ' + group_by_label + ' ' + date_label; + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + 0) { + return "DEFAULT"; + } + else { + return "4"; + } + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000148.XML b/settings/ACTI000148.XML new file mode 100644 index 0000000..92da036 --- /dev/null +++ b/settings/ACTI000148.XML @@ -0,0 +1,440 @@ + + + + + + + 0 ";} + if ('[QGROUPE]' == '2') {$select = $select . "AND v_factures_reference_1.nb_groupe > 0 ";} + if ('[QGROUPE]' == '3') {$select = $select . "AND v_factures_reference_1.nb_non_groupe = 0 ";} + if ('[QFACTURE]' == '1') {$select = $select . "AND v_factures_reference_1.nb_non_calcules > 0";} + if ('[QFACTURE]' == '2') {$select = $select . "AND v_factures_reference_1.nb_non_calcules = 0";} + if ('[QEXPEDIE]' == '1') {$select = $select . "AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] > 0";} + if ('[QEXPEDIE]' == '2') {$select = $select . "AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] = 0 ";} + if ('[QSOLDE]' == '1') {$select = $select . "AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] > 0";} + if ('[QSOLDE]' == '2') {$select = $select . "AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] = 0 ";} + if ('[QCLOTURE]' == '1') {$select = $select . "AND v_factures_reference_1.nb_non_cloture[VIEW.CLIHON] > 0";} + if ('[QCLOTURE]' == '2') {$select = $select . "AND v_factures_reference_1.nb_non_cloture[VIEW.CLIHON] = 0 AND v_factures_reference_1.nb_non_calcules = 0";} + + + return $select; + EVAL] + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000149.XML b/settings/ACTI000149.XML new file mode 100644 index 0000000..4416519 --- /dev/null +++ b/settings/ACTI000149.XML @@ -0,0 +1,1567 @@ + + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY != '-1') { + group_by_label = ' par ' + SELECT.GROUPBY_LABEL; + } + if (SELECT.GROUPBY_2 != '-1') { + group_by_label = group_by_label + ' et ' + SELECT.GROUPBY_2_LABEL; + } + + var date_label = '('+ SELECT.QUELLEDATE_LABEL +' : '+ 'N-1 : '+ VIEW.PERIODE_D_LABEL + ' à ' + VIEW.TOPERIODE_D_LABEL + ' vs ' + ' N : '+ SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL + ')'; + + + return 'Cumul ' + group_by_label + ' ' + date_label; + + ]]> + + + + + + + + + + + + + + 1"; + } + return $qmvt_select; + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000150.XML b/settings/ACTI000150.XML new file mode 100644 index 0000000..1be688b --- /dev/null +++ b/settings/ACTI000150.XML @@ -0,0 +1,2565 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1){ + $nb_data = $i+1; + } + } + return $nb_data; + EVAL] + ]]> + + + + + + + + + + + + + + 1"; + } + return $qmvt_select; + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000151.XML b/settings/ACTI000151.XML new file mode 100644 index 0000000..3e69210 --- /dev/null +++ b/settings/ACTI000151.XML @@ -0,0 +1,2554 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1){ + $nb_data = $i+1; + } + } + return $nb_data; + EVAL] + ]]> + + + + + + + + + + + + + + 1"; + } + return $qmvt_select; + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000152.XML b/settings/ACTI000152.XML new file mode 100644 index 0000000..107ec89 --- /dev/null +++ b/settings/ACTI000152.XML @@ -0,0 +1,2565 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1){ + $nb_data = $i+1; + } + } + return $nb_data; + EVAL] + ]]> + + + + + + + + + + + + + + 1"; + } + return $qmvt_select; + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000153.XML b/settings/ACTI000153.XML new file mode 100644 index 0000000..f1d3975 --- /dev/null +++ b/settings/ACTI000153.XML @@ -0,0 +1,2634 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1){ + $nb_data = $i+1; + } + } + return $nb_data; + EVAL] + ]]> + + + + + + + + + + + + + + 1"; + } + return $qmvt_select; + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000154.XML b/settings/ACTI000154.XML new file mode 100644 index 0000000..696d8ee --- /dev/null +++ b/settings/ACTI000154.XML @@ -0,0 +1,8293 @@ + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY_2 != '-1') { + group_by_label = ' par ' + SELECT.GROUPBY_2_LABEL; + } + if (SELECT.GROUPBY != '-1') { + group_by_label = group_by_label + ' et ' + SELECT.GROUPBY_LABEL; + } + + var date_label = '('+ SELECT.QUELLEDATE_LABEL +' : '+ 'N-1 : '+ VIEW.PERIODE_D_LABEL + ' à ' + VIEW.TOPERIODE_D_LABEL + ' vs ' + ' N : '+ SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL + ')'; + + + return 'Evolution comparative ' + group_by_label + ' ' + date_label; + + ]]> + + + + + + + + EVAL]]]> + + + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1"; + } + return $qmvt_select; + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000156.XML b/settings/ACTI000156.XML new file mode 100644 index 0000000..232277a --- /dev/null +++ b/settings/ACTI000156.XML @@ -0,0 +1,1653 @@ + + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY != '-1') { + group_by_label = ' par ' + SELECT.GROUPBY_LABEL; + } + if (SELECT.GROUPBY_2 != '-1') { + group_by_label = group_by_label + ' et ' + SELECT.GROUPBY_2_LABEL; + } + + var date_label = '('+ SELECT.QUELLEDATE_LABEL +' : '+ 'N-1 : '+ VIEW.PERIODE_D_LABEL + ' à ' + VIEW.TOPERIODE_D_LABEL + ' vs ' + ' N : '+ SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL + ')'; + + + return 'Comparatif période et dernier mois de facturation ' + group_by_label + ' ' + date_label; + + ]]> + + + + + + + + + + + + + + 1"; + } + return $qmvt_select; + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000157.XML b/settings/ACTI000157.XML new file mode 100644 index 0000000..3c37063 --- /dev/null +++ b/settings/ACTI000157.XML @@ -0,0 +1,997 @@ + + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY != '-1') { + group_by_label = ' par ' + SELECT.GROUPBY_LABEL; + } + if (SELECT.GROUPBY_2 != '-1') { + group_by_label = group_by_label + ' et ' + SELECT.GROUPBY_2_LABEL; + } + + var date_label = '('+ SELECT.QUELLEDATE_LABEL +' : '+ 'N-1 : '+ VIEW.PERIODE_D_LABEL + ' à ' + VIEW.TOPERIODE_D_LABEL + ' vs ' + ' N : '+ SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL + ')'; + + + return 'Comparatif période et dernier mois de facturation ' + group_by_label + ' ' + date_label; + + ]]> + + + + + + + + + + + + + + 1"; + } + return $qmvt_select; + EVAL]]]> + + + 0 OR montant_depassement <> 0 OR montant_non_facture <> 0)'; + break; + case '2': + return 'AND (montant_comptabilise <> 0)'; + break; + case 'MTFACI': + return 'AND (montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 OR COALESCE(montant_facture_actes_inclus_dans_sejour,0) <> 0)'; + break; + case 'MTI': + return 'AND (COALESCE(montant_facture_actes_inclus_dans_sejour,0) <> 0)'; + break; + default: + return ''; + } + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000158.XML b/settings/ACTI000158.XML new file mode 100644 index 0000000..6064695 --- /dev/null +++ b/settings/ACTI000158.XML @@ -0,0 +1,1104 @@ + + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY != '-1') { + group_by_label = ' par ' + SELECT.GROUPBY_LABEL; + } + if (SELECT.GROUPBY_2 != '-1') { + group_by_label = group_by_label + ' et ' + SELECT.GROUPBY_2_LABEL; + } + + var date_label = '('+ SELECT.QUELLEDATE_LABEL +' : '+ 'N-1 : '+ VIEW.PERIODE_D_LABEL + ' à ' + VIEW.TOPERIODE_D_LABEL + ' vs ' + ' N : '+ SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL + ')'; + + + return 'Cumul ' + group_by_label + ' ' + date_label; + + ]]> + + + + + + + + + + + + + + 1"; + } + return $qmvt_select; + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000159.XML b/settings/ACTI000159.XML new file mode 100644 index 0000000..d0283b4 --- /dev/null +++ b/settings/ACTI000159.XML @@ -0,0 +1,4960 @@ + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY != '-1') { + group_by_label = ' par ' + SELECT.GROUPBY_LABEL; + } + if (SELECT.GROUPBY_2 != '-1') { + group_by_label = group_by_label + ' et ' + SELECT.GROUPBY_2_LABEL; + } + + var date_label = '('+ SELECT.QUELLEDATE_LABEL +' : '+ 'N-1 : '+ VIEW.PERIODE_D_LABEL + ' à ' + VIEW.TOPERIODE_D_LABEL + ' vs ' + ' N : '+ SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL + ')'; + + + return 'Comparaison facturation ' + group_by_label + ' ' + date_label; + + ]]> + + + + + + + EVAL]]]> + + + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1"; + } + return $qmvt_select; + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000160.XML b/settings/ACTI000160.XML new file mode 100644 index 0000000..6fb6a05 --- /dev/null +++ b/settings/ACTI000160.XML @@ -0,0 +1,994 @@ + + + + + + + + + EVAL]]]> + + + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000161.XML b/settings/ACTI000161.XML new file mode 100644 index 0000000..949c4f8 --- /dev/null +++ b/settings/ACTI000161.XML @@ -0,0 +1,707 @@ + + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY != '-1') { + group_by_label = ' par ' + SELECT.GROUPBY_LABEL; + } + if (SELECT.GROUPBY_2 != '-1') { + group_by_label = group_by_label + ' et ' + SELECT.GROUPBY_2_LABEL; + } + + var date_label = '('+ SELECT.QUELLEDATE_LABEL +' : '+ 'N-1 : '+ VIEW.PERIODE_D_LABEL + ' à ' + VIEW.TOPERIODE_D_LABEL + ' vs ' + ' N : '+ SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL + ')'; + + + return 'Comparatif période et dernier mois de suivi des délais des traitements' + group_by_label + ' ' + date_label; + + ]]> + + + + + + + + + + + + + + 1"; + } + return $qmvt_select; + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0) { + return "DEFAULT"; + } + else { + return "4"; + } + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000162.XML b/settings/ACTI000162.XML new file mode 100644 index 0000000..941f9cd --- /dev/null +++ b/settings/ACTI000162.XML @@ -0,0 +1,4733 @@ + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY != '-1') { + group_by_label = ' par ' + SELECT.GROUPBY_LABEL; + } + if (SELECT.GROUPBY_2 != '-1') { + group_by_label = group_by_label + ' et ' + SELECT.GROUPBY_2_LABEL; + } + + var date_label = '('+ SELECT.QUELLEDATE_LABEL +' : '+ 'N-1 : '+ VIEW.PERIODE_D_LABEL + ' à ' + VIEW.TOPERIODE_D_LABEL + ' vs ' + ' N : '+ SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL + ')'; + + + return 'Comparaison etat des dossiers ' + group_by_label + ' ' + date_label; + + ]]> + + + + + + + EVAL]]]> + + + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000163.XML b/settings/ACTI000163.XML new file mode 100644 index 0000000..75bb7e9 --- /dev/null +++ b/settings/ACTI000163.XML @@ -0,0 +1,571 @@ + + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY != '-1') { + group_by_label = 'par ' + SELECT.GROUPBY_LABEL; + } + if (SELECT.GROUPBY_2 != '-1') { + group_by_label = group_by_label + ' et ' + SELECT.GROUPBY_2_LABEL; + } + + var date_label = '(' + SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL + ' vs ' + ' ' + VIEW.PERIODE_D_LABEL + ' à ' + VIEW.TOPERIODE_D_LABEL + ')'; + var option = '(' + SELECT.OPTION2_LABEL + ') '; + return 'Comparaison en-cours ' + option + group_by_label + ' ' + date_label; + + ]]> + + + + + + 0"; + break; + default: + return ""; + } + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000165.XML b/settings/ACTI000165.XML new file mode 100644 index 0000000..a8f4cb4 --- /dev/null +++ b/settings/ACTI000165.XML @@ -0,0 +1,4331 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + 1){ + $nb_data = $i+1; + } + } + return $nb_data; + EVAL] + ]]> + + + + + + + + + + + + + + 1"; + } + return $qmvt_select; + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000168.XML b/settings/ACTI000168.XML new file mode 100644 index 0000000..29df1a2 --- /dev/null +++ b/settings/ACTI000168.XML @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/settings/ACTI000169.XML b/settings/ACTI000169.XML new file mode 100644 index 0000000..3b26135 --- /dev/null +++ b/settings/ACTI000169.XML @@ -0,0 +1,952 @@ + + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY != '-1') { + group_by_label = ' par ' + SELECT.GROUPBY_LABEL; + } + if (SELECT.GROUPBY_2 != '-1') { + group_by_label = group_by_label + ' et ' + SELECT.GROUPBY_2_LABEL; + } + + var date_label = '(' + 'N-1 : '+ VIEW.PERIODE_D_LABEL + ' à ' + VIEW.TOPERIODE_D_LABEL + ' vs ' + ' N : '+ SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL + ')'; + + return 'Comparatif période et dernier mois d\'occupation ' + group_by_label + ' ' + date_label; + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/ACTI000170.XML b/settings/ACTI000170.XML new file mode 100644 index 0000000..6bd5d55 --- /dev/null +++ b/settings/ACTI000170.XML @@ -0,0 +1,500 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 OR montant_depassement <> 0 OR montant_non_facture <> 0)'; + break; + case '2': + return 'AND (montant_comptabilise <> 0)'; + break; + case 'MTFACI': + return 'AND (montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 OR COALESCE(montant_facture_actes_inclus_dans_sejour,0) <> 0)'; + break; + case 'MTI': + return 'AND (COALESCE(montant_facture_actes_inclus_dans_sejour,0) <> 0)'; + break; + case '3': + return 'AND (montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0)'; + break; + default: + return ''; + } + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI000171.XML b/settings/ACTI000171.XML new file mode 100644 index 0000000..48fcf7e --- /dev/null +++ b/settings/ACTI000171.XML @@ -0,0 +1,2691 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1){ + $nb_data = $i+2; + } + } + return $nb_data; + EVAL] + ]]> + + + + + + + + + + + + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + EVAL]]]> + + + + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/ACTI000173.XML b/settings/ACTI000173.XML new file mode 100644 index 0000000..294289b --- /dev/null +++ b/settings/ACTI000173.XML @@ -0,0 +1,6520 @@ + + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY != '-1') { + group_by_label = SELECT.GROUPBY_LABEL + ' et '; + } + if (SELECT.GROUPBY_2 != '-1') { + group_by_label = ' par ' + group_by_label + SELECT.GROUPBY_2_LABEL; + } + + var date_label = '(' + 'N-1 : '+ VIEW.PERIODE_D_LABEL + ' à ' + VIEW.TOPERIODE_D_LABEL + ' vs ' + ' N : '+ SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL + ')'; + + return 'Evolution Comparative occupation ' + group_by_label + ' ' + date_label; + + ]]> + + + + + + + + + + + EVAL]]]> + + + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/ACTI000174.XML b/settings/ACTI000174.XML new file mode 100644 index 0000000..e3461a7 --- /dev/null +++ b/settings/ACTI000174.XML @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/ACTI000181.XML b/settings/ACTI000181.XML new file mode 100644 index 0000000..ddf1572 --- /dev/null +++ b/settings/ACTI000181.XML @@ -0,0 +1,3 @@ + + + diff --git a/settings/ACTI000182.XML b/settings/ACTI000182.XML new file mode 100644 index 0000000..a252f7a --- /dev/null +++ b/settings/ACTI000182.XML @@ -0,0 +1,833 @@ + + + + <![CDATA[= + + var group_by_label = ''; + if (SELECT.GROUPBY != '-1') { + group_by_label = ' par ' + SELECT.GROUPBY_LABEL; + } + var date_label = '(' + 'N-1 : '+ VIEW.PERIODE_D_LABEL + ' à ' + VIEW.TOPERIODE_D_LABEL + ' vs ' + ' N : '+ SELECT.PERIODE_LABEL + ' à ' + SELECT.TOPERIODE_LABEL + ')'; + + return 'Cumul au dernier(e) (mois/année) ' + group_by_label + ' ' + date_label; + + ]]> + + + + + + + + + + + + + + + + + + 0) { + return "DEFAULT"; + } + else { + return "4"; + } + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/ACTIKIWEEPARAM.XML b/settings/ACTIKIWEEPARAM.XML new file mode 100644 index 0000000..acc23f1 --- /dev/null +++ b/settings/ACTIKIWEEPARAM.XML @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/settings/ACTIS00121.XML b/settings/ACTIS00121.XML new file mode 100644 index 0000000..c5faea1 --- /dev/null +++ b/settings/ACTIS00121.XML @@ -0,0 +1,542 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/ACTIS00122.XML b/settings/ACTIS00122.XML new file mode 100644 index 0000000..b83f3c5 --- /dev/null +++ b/settings/ACTIS00122.XML @@ -0,0 +1,556 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/ACTI_components.XML b/settings/ACTI_components.XML new file mode 100755 index 0000000..97dc84b --- /dev/null +++ b/settings/ACTI_components.XML @@ -0,0 +1,22486 @@ + + + + + + + + + 10"; + } + else { + $select = "AND jour_semaine IN ("; + if ('[LUN]' == '1') { $select .= "1,"; } + if ('[MAR]' == '2') { $select .= "2,"; } + if ('[MER]' == '3') { $select .= "3,"; } + if ('[JEU]' == '4') { $select .= "4,"; } + if ('[VEN]' == '5') { $select .= "5,"; } + if ('[SAM]' == '6') { $select .= "6,"; } + if ('[DIM]' == '7') { $select .= "7,"; } + $select = substr($select, 0, -1) . ")"; + } + } + return $select; + + EVAL]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + EVAL] + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + annee_toperiode) {return 'MONTH';} + else if (annee_toperiode > annee_periode) {return 'QUARTER';} + else if (mois_toperiode > mois_periode || mois_periode > mois_toperiode) {return 'MONTH';} + else if (jour_toperiode - jour_periode > 7) {return 'WEEK2';} + else {return 'DAY';} + ]]> + + + + + + + + + + + + = parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return annee + mois_fin_string; + } + } + } + else if (SELECT.GROUPBY == 'NUMEROTRIM') { + + if (ROW.COD == ROW.COD2) { + + if (parseInt(ROW.COD2) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD2 + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD2; + } + } + else { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + mois_fin_string; + } + } + } + } + else { + + if (ROW.COD == ROW.COD2) { + + if (parseInt(ROW.COD2) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD2; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD2; + } + } + else { + return SELECT.TOPERIODE; + } + } + } + } + else if (SELECT.GROUPBY == 'TRIM' || SELECT.GROUPBY_2 == 'TRIM') { + + if (SELECT.GROUPBY == 'TRIM') { + + annee = ROW.COD1.substr(0,4); + mois_fin = 3 * parseInt(ROW.COD1.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (annee == annee_periode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return annee + mois_fin_string; + } + } + else { + + annee = ROW.COD2.substr(0,4); + mois_fin = 3 * parseInt(ROW.COD2.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (ROW.COD == ROW.COD2) { + + if (annee == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return annee + mois_fin_string; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEE' && ROW.COD1 != annee_toperiode) { + return ROW.COD1 + '12'; + } + else { + return SELECT.TOPERIODE; + } + } + } + } + else if (SELECT.GROUPBY == 'NUMEROTRIM' || SELECT.GROUPBY_2 == 'NUMEROTRIM') { + + mois_debut = 1 + 3 * (parseInt(ROW.COD2.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD2.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (SELECT.GROUPBY == 'NUMEROTRIM') { + + mois_debut = 1 + 3 * (parseInt(ROW.COD1.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD1.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) -1).toString() + mois_fin_string; + } + } + } + else if (SELECT.GROUPBY == 'ANNEE') { + + if (ROW.COD == ROW.COD2) { + + if (ROW.COD1 == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + mois_fin_string; + } + } + else { + + if (ROW.COD1 == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + '12'; + } + } + } + else { + + if (ROW.COD == ROW.COD2) { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) -1).toString() + mois_fin_string; + } + } + } + else { + return SELECT.TOPERIODE; + } + } + } + else if (SELECT.GROUPBY == 'ANNEE'|| SELECT.GROUPBY_2 == 'ANNEE') { + + var row_cod:String = (SELECT.GROUPBY == 'ANNEE') ? ROW.COD1 : ROW.COD2; + + if (row_cod == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return row_cod + '12'; + } + } + else { + var to_periode_comparatif:String = SELECT.TOPERIODE; + if (COLUMN.NAME == 'D1_OLD') {to_periode_comparatif = VIEW.TOPERIODE_D;} + if (COLUMN.NAME == 'D1_NOW') {to_periode_comparatif = SELECT.TOPERIODE;} + if (COLUMN.NAME == 'D2_OLD') {to_periode_comparatif = VIEW.TOPERIODE_D;} + if (COLUMN.NAME == 'D2_NOW') {to_periode_comparatif = SELECT.TOPERIODE;} + if (COLUMN.NAME == 'CA_MOY_OLD') {to_periode_comparatif = VIEW.TOPERIODE_D;} + if (COLUMN.NAME == 'CA_MOY_NOW') {to_periode_comparatif = SELECT.TOPERIODE;} + if (COLUMN.NAME == 'F1') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F2') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F3') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F4') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F5') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F6') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F7') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F8') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F9') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F10') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F11') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F12') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F13') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F14') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F15') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'D1') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D2') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D3') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D4') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D5') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D6') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D7') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D8') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D9') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D10') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D11') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D12') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D13') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D14') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D15') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'L1') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L2') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L3') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L4') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L5') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L6') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L7') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L8') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L9') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L10') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L11') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L12') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L13') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L14') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L15') {to_periode_comparatif = VIEW.TOPERIODE_D2} + return to_periode_comparatif; + } + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + = parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ANNEEEX + mois_fin_string; + } + } + } + else if (SELECT.GROUPBY == 'NUMEROTRIMEX') { + + if (ROW.COD == ROW.COD2) { + + if (parseInt(ROW.COD2) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD2 + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD2; + } + } + else { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + mois_fin_string; + } + } + } + } + else { + + if (ROW.COD == ROW.COD2) { + + if (parseInt(ROW.COD2) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD2; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD2; + } + } + else { + return SELECT.TOPERIODE; + } + } + } else { + mois_debut = 1 + 3 * (parseInt(ROW.COD2.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD2.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + ANNEEEX = ROW.COD2.substr(0,4); + + if (SELECT.GROUPBY == 'ANNEEEX') { + + if (ROW.COD == ROW.COD2) { + return ROW.COD1 + ROW.COD2; + } + else { + + if (ROW.COD1 == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + '12'; + } + } + } + else if (SELECT.GROUPBY == 'TRIMEX') { + + if (ROW.COD == ROW.COD2) { + return ANNEEEX + ROW.COD2; + } + else { + + if (ANNEEEX == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ANNEEEX + mois_fin_string; + } + } + } + else if (SELECT.GROUPBY == 'NUMEROTRIMEX') { + + if (ROW.COD == ROW.COD2) { + + if (parseInt(ROW.COD2) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD2 + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD2; + } + } + else { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + mois_fin_string; + } + } + } + } + else { + + if (ROW.COD == ROW.COD3) { + + if (parseInt(ROW.COD3) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD3; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD3; + } + } + else { + return SELECT.TOPERIODE; + } + } + } + } + else if (SELECT.GROUPBY == 'TRIMEX' || SELECT.GROUPBY_2 == 'TRIMEX' || SELECT.GROUPBY_3 == 'TRIMEX') { + + if (SELECT.GROUPBY == 'TRIMEX') { + + ANNEEEX = ROW.COD1.substr(0,4); + mois_fin = 3 * parseInt(ROW.COD1.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (ANNEEEX == annee_periode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ANNEEEX + mois_fin_string; + } + } + else if (SELECT.GROUPBY_2 == 'TRIMEX'){ + + ANNEEEX = ROW.COD2.substr(0,4); + mois_fin = 3 * parseInt(ROW.COD2.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (ROW.COD == ROW.COD2) { + + if (ANNEEEX == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ANNEEEX + mois_fin_string; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEEEX' && ROW.COD1 != annee_toperiode) { + return ROW.COD1 + '12'; + } + else { + return SELECT.TOPERIODE; + } + } + } else { + ANNEEEX = ROW.COD3.substr(0,4); + mois_fin = 3 * parseInt(ROW.COD3.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (ROW.COD == ROW.COD3) { + + if (ANNEEEX == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ANNEEEX + mois_fin_string; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEEEX' && ROW.COD1 != annee_toperiode) { + return ROW.COD1 + '12'; + } + else { + return SELECT.TOPERIODE; + } + } + } + } + else if (SELECT.GROUPBY == 'NUMEROTRIMEX' || SELECT.GROUPBY_2 == 'NUMEROTRIMEX' || SELECT.GROUPBY_3 == 'NUMEROTRIMEX' ) { + + mois_debut = 1 + 3 * (parseInt(ROW.COD2.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD2.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (SELECT.GROUPBY == 'NUMEROTRIMEX') { + + mois_debut = 1 + 3 * (parseInt(ROW.COD1.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD1.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) -1).toString() + mois_fin_string; + } + } + } + else if (SELECT.GROUPBY == 'ANNEEEX') { + + if (ROW.COD == ROW.COD2) { + + if (ROW.COD1 == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + mois_fin_string; + } + } + else { + + if (ROW.COD1 == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + '12'; + } + } + } + else if (SELECT.GROUPBY_2 == 'NUMEROTRIMEX'){ + + if (ROW.COD == ROW.COD2) { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) -1).toString() + mois_fin_string; + } + } + } + else { + return SELECT.TOPERIODE; + } + } else { + mois_debut = 1 + 3 * (parseInt(ROW.COD3.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD3.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + if (ROW.COD == ROW.COD3) { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) -1).toString() + mois_fin_string; + } + } + } + else { + return SELECT.TOPERIODE; + } + } + } + else if (SELECT.GROUPBY == 'ANNEEEX'|| SELECT.GROUPBY_2 == 'ANNEEEX' || SELECT.GROUPBY_3 == 'ANNEEEX' ) { + + if(SELECT.GROUPBY == 'ANNEEEX'|| SELECT.GROUPBY_2 == 'ANNEEEX') { + + var row_cod:String = (SELECT.GROUPBY == 'ANNEEEX') ? ROW.COD1 : ROW.COD2; + }else { + var row_cod:String = ROW.COD3; + } + + if (row_cod == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return row_cod + '12'; + } + } + // FIN TRAITEMENT DATE D'EXPEDITION + // TRAITEMENT DATE D'ACTIVITE + if (SELECT.GROUPBY == 'SEMAINEANNEA' || SELECT.GROUPBY_2 == 'SEMAINEANNEA' || SELECT.GROUPBY_3 == 'SEMAINEANNEA' ) { + if(SELECT.GROUPBY == 'SEMAINEANNEA' || SELECT.GROUPBY_2 == 'SEMAINEANNEA'){ + row_cod = (SELECT.GROUPBY == 'SEMAINEANNEA') ? ROW.COD1 : ROW.COD2; + }else { + row_cod = ROW.COD3; + } + if (SELECT.GROUPBY == 'ANNEEA' || SELECT.GROUPBY_2 == 'ANNEEA') { + var ANNEEEX:String = (SELECT.GROUPBY == 'SEMAINEANNEA') ? ROW.COD2.substr(0,4) : ROW.COD1.substr(0,4); + return getDateFromWeek(ANNEEEX+row_cod,6); + } + else{ + var date:String = getDateFromWeek(annee_toperiode + row_cod,6); + var month:int = parseInt(date.substr(5,2)); + var day:int = parseInt(date.substr(8,2)); + var toDay:int = parseInt(SELECT.TOPERIODE.substr(8,2)); + if (month <= parseInt(mois_toperiode) && day <= toDay) { + return getDateFromWeek(annee_toperiode+row_cod,6); + } + else { + return getDateFromWeek((parseInt(annee_toperiode)).toString()+row_cod,0); + } + } + } + if (SELECT.GROUPBY == 'JOURSA' || SELECT.GROUPBY_2 == 'JOURSA' || SELECT.GROUPBY_3 == 'JOURSA') { + + if (SELECT.GROUPBY == 'JOURSA') { + return annee_periode+'-'+ROW.COD1; + } + else if (ROW.COD == ROW.COD2) { + return annee_periode+'-'+ROW.COD2; + }else if(ROW.COD == ROW.COD3) { + return annee_periode+'-'+ROW.COD3; + } + } + if (SELECT.GROUPBY == 'JOURA' || SELECT.GROUPBY_2 == 'JOURA' || SELECT.GROUPBY_3 == 'JOURA') { + + if (SELECT.GROUPBY == 'JOURA') { + return ROW.COD1; + } + else if (ROW.COD == ROW.COD2) { + return ROW.COD2; + } else if(ROW.COD == ROW.COD3) { + return ROW.COD3; + } + } + if (SELECT.GROUPBY == 'MOISA' || SELECT.GROUPBY_2 == 'MOISA' || SELECT.GROUPBY_3 == 'MOISA') { + + var mois:String = ''; + + if (SELECT.GROUPBY == 'MOISA') { + + annee = ROW.COD1.substr(0,4); + mois = ROW.COD1.substr(-2); + + if (annee == annee_toperiode && mois == mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return annee + mois; + } + } + else if (SELECT.GROUPBY_2 == 'MOISA') { + + annee = ROW.COD2.substr(0,4); + mois = ROW.COD2.substr(-2); + + if (ROW.COD == ROW.COD2) { + + if (annee == annee_toperiode && mois == mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return annee + mois; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEEA' && ROW.COD1 != annee_toperiode) { + return ROW.COD1 + '12'; + } + else { + return SELECT.TOPERIODE; + } + } + } else if (SELECT.GROUPBY_3 == 'MOISA'){ + annee = ROW.COD3.substr(0,4); + mois = ROW.COD3.substr(-2); + + if (ROW.COD == ROW.COD3) { + + if (annee== annee_periode && mois == mois_periode) { + return annee + mois; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEEA' && ROW.COD1 != annee_periode) { + return ROW.COD1 + '01'; + } + else { + return SELECT.PERIODE; + } + } + + } + } + else if (SELECT.GROUPBY == 'NUMEROMOISA' || SELECT.GROUPBY_2 == 'NUMEROMOISA' || SELECT.GROUPBY_3 == 'NUMEROMOISA') { + + if (SELECT.GROUPBY == 'NUMEROMOISA') { + + if (parseInt(ROW.COD1) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD1; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD1; + } + } + else if (SELECT.GROUPBY_2 == 'NUMEROMOISA'){ + + mois_debut = 1 + 3 * (parseInt(ROW.COD1.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD1.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + ANNEEEX = ROW.COD1.substr(0,4); + + if (SELECT.GROUPBY == 'ANNEEA') { + + if (ROW.COD == ROW.COD2) { + return ROW.COD1 + ROW.COD2; + } + else { + + if (ROW.COD1 == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + '12'; + } + } + } + else if (SELECT.GROUPBY == 'TRIMA') { + + if (ROW.COD == ROW.COD2) { + return ANNEEEX + ROW.COD2; + } + else { + + if (ANNEEEX == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ANNEEEX + mois_fin_string; + } + } + } + else if (SELECT.GROUPBY == 'NUMEROTRIMA') { + + if (ROW.COD == ROW.COD2) { + + if (parseInt(ROW.COD2) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD2 + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD2; + } + } + else { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + mois_fin_string; + } + } + } + } + else { + + if (ROW.COD == ROW.COD2) { + + if (parseInt(ROW.COD2) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD2; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD2; + } + } + else { + return SELECT.TOPERIODE; + } + } + } else { + mois_debut = 1 + 3 * (parseInt(ROW.COD2.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD2.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + ANNEEEX = ROW.COD2.substr(0,4); + + if (SELECT.GROUPBY == 'ANNEEA') { + + if (ROW.COD == ROW.COD2) { + return ROW.COD1 + ROW.COD2; + } + else { + + if (ROW.COD1 == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + '12'; + } + } + } + else if (SELECT.GROUPBY == 'TRIMA') { + + if (ROW.COD == ROW.COD2) { + return ANNEEEX + ROW.COD2; + } + else { + + if (ANNEEEX == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ANNEEEX + mois_fin_string; + } + } + } + else if (SELECT.GROUPBY == 'NUMEROTRIMA') { + + if (ROW.COD == ROW.COD2) { + + if (parseInt(ROW.COD2) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD2 + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD2; + } + } + else { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + mois_fin_string; + } + } + } + } + else { + + if (ROW.COD == ROW.COD3) { + + if (parseInt(ROW.COD3) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD3; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD3; + } + } + else { + return SELECT.TOPERIODE; + } + } + } + } + else if (SELECT.GROUPBY == 'TRIMA' || SELECT.GROUPBY_2 == 'TRIMA' || SELECT.GROUPBY_3 == 'TRIMA') { + + if (SELECT.GROUPBY == 'TRIMA') { + + ANNEEEX = ROW.COD1.substr(0,4); + mois_fin = 3 * parseInt(ROW.COD1.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (ANNEEEX == annee_periode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ANNEEEX + mois_fin_string; + } + } + else if (SELECT.GROUPBY_2 == 'TRIMA'){ + + ANNEEEX = ROW.COD2.substr(0,4); + mois_fin = 3 * parseInt(ROW.COD2.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (ROW.COD == ROW.COD2) { + + if (ANNEEEX == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ANNEEEX + mois_fin_string; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEEA' && ROW.COD1 != annee_toperiode) { + return ROW.COD1 + '12'; + } + else { + return SELECT.TOPERIODE; + } + } + } else { + ANNEEEX = ROW.COD3.substr(0,4); + mois_fin = 3 * parseInt(ROW.COD3.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (ROW.COD == ROW.COD3) { + + if (ANNEEEX == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ANNEEEX + mois_fin_string; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEEA' && ROW.COD1 != annee_toperiode) { + return ROW.COD1 + '12'; + } + else { + return SELECT.TOPERIODE; + } + } + } + } + else if (SELECT.GROUPBY == 'NUMEROTRIMA' || SELECT.GROUPBY_2 == 'NUMEROTRIMA' || SELECT.GROUPBY_3 == 'NUMEROTRIMA' ) { + + mois_debut = 1 + 3 * (parseInt(ROW.COD2.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD2.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (SELECT.GROUPBY == 'NUMEROTRIMA') { + + mois_debut = 1 + 3 * (parseInt(ROW.COD1.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD1.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) -1).toString() + mois_fin_string; + } + } + } + else if (SELECT.GROUPBY == 'ANNEEA') { + + if (ROW.COD == ROW.COD2) { + + if (ROW.COD1 == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + mois_fin_string; + } + } + else { + + if (ROW.COD1 == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + '12'; + } + } + } + else if (SELECT.GROUPBY_2 == 'NUMEROTRIMA'){ + + if (ROW.COD == ROW.COD2) { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) -1).toString() + mois_fin_string; + } + } + } + else { + return SELECT.TOPERIODE; + } + } else { + mois_debut = 1 + 3 * (parseInt(ROW.COD3.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD3.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + if (ROW.COD == ROW.COD3) { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) -1).toString() + mois_fin_string; + } + } + } + else { + return SELECT.TOPERIODE; + } + } + } + else if (SELECT.GROUPBY == 'ANNEEA'|| SELECT.GROUPBY_2 == 'ANNEEA' || SELECT.GROUPBY_3 == 'ANNEEA' ) { + + if(SELECT.GROUPBY == 'ANNEEA'|| SELECT.GROUPBY_2 == 'ANNEEA') { + + var row_cod:String = (SELECT.GROUPBY == 'ANNEEA') ? ROW.COD1 : ROW.COD2; + }else { + var row_cod:String = ROW.COD3; + } + + if (row_cod == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return row_cod + '12'; + } + } + // FIN TRAITEMENT DATE D'ACTIVITE + // TRAITEMENT DATE SORTIE + + if (SELECT.GROUPBY == 'SEMAINEANNE' || SELECT.GROUPBY_2 == 'SEMAINEANNE' || SELECT.GROUPBY_3 == 'SEMAINEANNE' ) { + if(SELECT.GROUPBY == 'SEMAINEANNE' || SELECT.GROUPBY_2 == 'SEMAINEANNE'){ + row_cod = (SELECT.GROUPBY == 'SEMAINEANNE') ? ROW.COD1 : ROW.COD2; + }else { + row_cod = ROW.COD3; + } + if (SELECT.GROUPBY == 'ANNEE' || SELECT.GROUPBY_2 == 'ANNEE') { + var annee:String = (SELECT.GROUPBY == 'SEMAINEANNE') ? ROW.COD2.substr(0,4) : ROW.COD1.substr(0,4); + return getDateFromWeek(annee+row_cod,6); + }else{ + var date:String = getDateFromWeek(annee_toperiode + row_cod,6); + var month:int = parseInt(date.substr(5,2)); + var day:int = parseInt(date.substr(8,2)); + var toDay:int = parseInt(SELECT.TOPERIODE.substr(8,2)); + if (month <= parseInt(mois_toperiode) && day <= toDay) { + return getDateFromWeek(annee_toperiode+row_cod,6); + } + else { + return getDateFromWeek((parseInt(annee_toperiode)).toString()+row_cod,0); + } + } + } + if (SELECT.GROUPBY == 'JOURS' || SELECT.GROUPBY_2 == 'JOURS' || SELECT.GROUPBY_3 == 'JOURS') { + + if (SELECT.GROUPBY == 'JOURS') { + return annee_periode+'-'+ROW.COD1; + } + else if (ROW.COD == ROW.COD2) { + return annee_periode+'-'+ROW.COD2; + }else if(ROW.COD == ROW.COD3) { + return annee_periode+'-'+ROW.COD3; + } + } + if (SELECT.GROUPBY == 'JOUR' || SELECT.GROUPBY_2 == 'JOUR' || SELECT.GROUPBY_3 == 'JOUR') { + + if (SELECT.GROUPBY == 'JOUR') { + return ROW.COD1; + } + else if (ROW.COD == ROW.COD2) { + return ROW.COD2; + } else if(ROW.COD == ROW.COD3) { + return ROW.COD3; + } + } + if (SELECT.GROUPBY == 'MOIS' || SELECT.GROUPBY_2 == 'MOIS' || SELECT.GROUPBY_3 == 'MOIS') { + + var mois:String = ''; + + if (SELECT.GROUPBY == 'MOIS') { + + annee = ROW.COD1.substr(0,4); + mois = ROW.COD1.substr(-2); + + if (annee == annee_toperiode && mois == mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return annee + mois; + } + } + else if (SELECT.GROUPBY_2 == 'MOIS') { + + annee = ROW.COD2.substr(0,4); + mois = ROW.COD2.substr(-2); + + if (ROW.COD == ROW.COD2) { + + if (annee == annee_toperiode && mois == mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return annee + mois; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEE' && ROW.COD1 != annee_toperiode) { + return ROW.COD1 + '12'; + } + else { + return SELECT.TOPERIODE; + } + } + } else if (SELECT.GROUPBY_3 == 'MOIS'){ + annee = ROW.COD3.substr(0,4); + mois = ROW.COD3.substr(-2); + + if (ROW.COD == ROW.COD3) { + + if (annee == annee_periode && mois == mois_periode) { + return annee + mois; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEE' && ROW.COD1 != annee_periode) { + return ROW.COD1 + '01'; + } + else { + return SELECT.PERIODE; + } + } + + } + } + else if (SELECT.GROUPBY == 'NUMEROMOIS' || SELECT.GROUPBY_2 == 'NUMEROMOIS' || SELECT.GROUPBY_3 == 'NUMEROMOIS') { + + if (SELECT.GROUPBY == 'NUMEROMOIS') { + + if (parseInt(ROW.COD1) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD1; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD1; + } + } + else if (SELECT.GROUPBY_2 == 'NUMEROMOIS'){ + + mois_debut = 1 + 3 * (parseInt(ROW.COD1.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD1.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + annee = ROW.COD1.substr(0,4); + + if (SELECT.GROUPBY == 'ANNEE') { + + if (ROW.COD == ROW.COD2) { + return ROW.COD1 + ROW.COD2; + } + else { + + if (ROW.COD1 == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + '12'; + } + } + } + else if (SELECT.GROUPBY == 'TRIM') { + + if (ROW.COD == ROW.COD2) { + return annee + ROW.COD2; + } + else { + + if (annee == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return annee + mois_fin_string; + } + } + } + else if (SELECT.GROUPBY == 'NUMEROTRIM') { + + if (ROW.COD == ROW.COD2) { + + if (parseInt(ROW.COD2) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD2 + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD2; + } + } + else { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + mois_fin_string; + } + } + } + } + else { + + if (ROW.COD == ROW.COD2) { + + if (parseInt(ROW.COD2) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD2; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD2; + } + } + else { + return SELECT.TOPERIODE; + } + } + } else { + mois_debut = 1 + 3 * (parseInt(ROW.COD2.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD2.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + annee = ROW.COD2.substr(0,4); + + if (SELECT.GROUPBY == 'ANNEE') { + + if (ROW.COD == ROW.COD2) { + return ROW.COD1 + ROW.COD2; + } + else { + + if (ROW.COD1 == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + '12'; + } + } + } + else if (SELECT.GROUPBY == 'TRIM') { + + if (ROW.COD == ROW.COD2) { + return annee + ROW.COD2; + } + else { + + if (annee == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return annee + mois_fin_string; + } + } + } + else if (SELECT.GROUPBY == 'NUMEROTRIM') { + + if (ROW.COD == ROW.COD2) { + + if (parseInt(ROW.COD2) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD2 + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD2; + } + } + else { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + mois_fin_string; + } + } + } + } + else { + + if (ROW.COD == ROW.COD3) { + + if (parseInt(ROW.COD3) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD3; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD3; + } + } + else { + return SELECT.TOPERIODE; + } + } + } + } + else if (SELECT.GROUPBY == 'TRIM' || SELECT.GROUPBY_2 == 'TRIM' || SELECT.GROUPBY_3 == 'TRIM') { + + if (SELECT.GROUPBY == 'TRIM') { + + annee = ROW.COD1.substr(0,4); + mois_fin = 3 * parseInt(ROW.COD1.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (annee == annee_periode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return annee + mois_fin_string; + } + } + else if (SELECT.GROUPBY_2 == 'TRIM'){ + + annee = ROW.COD2.substr(0,4); + mois_fin = 3 * parseInt(ROW.COD2.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (ROW.COD == ROW.COD2) { + + if (annee == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return annee + mois_fin_string; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEE' && ROW.COD1 != annee_toperiode) { + return ROW.COD1 + '12'; + } + else { + return SELECT.TOPERIODE; + } + } + } else { + annee = ROW.COD3.substr(0,4); + mois_fin = 3 * parseInt(ROW.COD3.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (ROW.COD == ROW.COD3) { + + if (annee == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return annee + mois_fin_string; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEE' && ROW.COD1 != annee_toperiode) { + return ROW.COD1 + '12'; + } + else { + return SELECT.TOPERIODE; + } + } + } + } + else if (SELECT.GROUPBY == 'NUMEROTRIM' || SELECT.GROUPBY_2 == 'NUMEROTRIM' || SELECT.GROUPBY_3 == 'NUMEROTRIM' ) { + + mois_debut = 1 + 3 * (parseInt(ROW.COD2.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD2.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (SELECT.GROUPBY == 'NUMEROTRIM') { + + mois_debut = 1 + 3 * (parseInt(ROW.COD1.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD1.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) -1).toString() + mois_fin_string; + } + } + } + else if (SELECT.GROUPBY == 'ANNEE') { + + if (ROW.COD == ROW.COD2) { + + if (ROW.COD1 == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + mois_fin_string; + } + } + else { + + if (ROW.COD1 == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + '12'; + } + } + } + else if (SELECT.GROUPBY_2 == 'NUMEROTRIM'){ + + if (ROW.COD == ROW.COD2) { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) -1).toString() + mois_fin_string; + } + } + } + else { + return SELECT.TOPERIODE; + } + } else { + mois_debut = 1 + 3 * (parseInt(ROW.COD3.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD3.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + if (ROW.COD == ROW.COD3) { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) -1).toString() + mois_fin_string; + } + } + } + else { + return SELECT.TOPERIODE; + } + } + } + else if (SELECT.GROUPBY == 'ANNEE'|| SELECT.GROUPBY_2 == 'ANNEE' || SELECT.GROUPBY_3 == 'ANNEE' ) { + + if(SELECT.GROUPBY == 'ANNEE'|| SELECT.GROUPBY_2 == 'ANNEE') { + + var row_cod:String = (SELECT.GROUPBY == 'ANNEE') ? ROW.COD1 : ROW.COD2; + }else { + var row_cod:String = ROW.COD3; + } + + if (row_cod == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return row_cod + '12'; + } + } + + // FIN TRAITEMENT DATE SORTIE + //DATE DE VENTE + if (SELECT.GROUPBY == 'SEMAINEANNEV' || SELECT.GROUPBY_2 == 'SEMAINEANNEV' || SELECT.GROUPBY_3 == 'SEMAINEANNEV' ) { + if(SELECT.GROUPBY == 'SEMAINEANNEV' || SELECT.GROUPBY_2 == 'SEMAINEANNEV'){ + row_cod = (SELECT.GROUPBY == 'SEMAINEANNEV') ? ROW.COD1 : ROW.COD2; + }else { + row_cod = ROW.COD3; + } + if (SELECT.GROUPBY == 'ANNEEV' || SELECT.GROUPBY_2 == 'ANNEEV') { + var annee:String = (SELECT.GROUPBY == 'SEMAINEANNEV') ? ROW.COD2.substr(0,4) : ROW.COD1.substr(0,4); + return getDateFromWeek(annee+row_cod,6); + } + else + { + var date:String = getDateFromWeek(annee_toperiode + row_cod,6); + var month:int = parseInt(date.substr(5,2)); + var day:int = parseInt(date.substr(8,2)); + var toDay:int = parseInt(SELECT.TOPERIODE.substr(8,2)); + + if (month <= parseInt(mois_toperiode) && day <= toDay) { + return getDateFromWeek(annee_toperiode+row_cod,6); + } + else { + return getDateFromWeek((parseInt(annee_toperiode) - 1).toString()+row_cod,6); + } + } + } + if (SELECT.GROUPBY == 'JOURSV' || SELECT.GROUPBY_2 == 'JOURSV' || SELECT.GROUPBY_3 == 'JOURSV') { + + if (SELECT.GROUPBY == 'JOURSV') { + return annee_periode+'-'+ROW.COD1; + } + else if (ROW.COD == ROW.COD2) { + return annee_periode+'-'+ROW.COD2; + }else if(ROW.COD == ROW.COD3) { + return annee_periode+'-'+ROW.COD3; + } + } + if (SELECT.GROUPBY == 'JOURV' || SELECT.GROUPBY_2 == 'JOURV' || SELECT.GROUPBY_3 == 'JOURV') { + + if (SELECT.GROUPBY == 'JOURV') { + return ROW.COD1; + } + else if (ROW.COD == ROW.COD2) { + return ROW.COD2; + } else if(ROW.COD == ROW.COD3) { + return ROW.COD3; + } + } + if (SELECT.GROUPBY == 'MOISV' || SELECT.GROUPBY_2 == 'MOISV' || SELECT.GROUPBY_3 == 'MOISV') { + + var mois:String = ''; + + if (SELECT.GROUPBY == 'MOISV') { + + annee = ROW.COD1.substr(0,4); + mois = ROW.COD1.substr(-2); + + if (annee == annee_toperiode && mois == mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return annee + mois; + } + } + else if (SELECT.GROUPBY_2 == 'MOISV') { + + annee = ROW.COD2.substr(0,4); + mois = ROW.COD2.substr(-2); + + if (ROW.COD == ROW.COD2) { + + if (annee == annee_toperiode && mois == mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return annee + mois; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEEV' && ROW.COD1 != annee_toperiode) { + return ROW.COD1 + '12'; + } + else { + return SELECT.TOPERIODE; + } + } + } + else if (SELECT.GROUPBY_3 == 'MOISV'){ + annee = ROW.COD3.substr(0,4); + mois = ROW.COD3.substr(-2); + + if (ROW.COD == ROW.COD3) { + + if (annee == annee_periode && mois == mois_periode) { + return annee + mois; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEEV' && ROW.COD1 != annee_periode) { + return ROW.COD1 + '01'; + } + else { + return SELECT.PERIODE; + } + } + + } + } + else if (SELECT.GROUPBY == 'NUMEROMOISV' || SELECT.GROUPBY_2 == 'NUMEROMOISV' || SELECT.GROUPBY_3 == 'NUMEROMOISV') { + + if (SELECT.GROUPBY == 'NUMEROMOISV') { + + if (parseInt(ROW.COD1) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD1; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD1; + } + } + else if (SELECT.GROUPBY_2 == 'NUMEROMOISV'){ + + mois_debut = 1 + 3 * (parseInt(ROW.COD1.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD1.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + annee = ROW.COD1.substr(0,4); + + if (SELECT.GROUPBY == 'ANNEEV') { + + if (ROW.COD == ROW.COD2) { + return ROW.COD1 + ROW.COD2; + } + else { + + if (ROW.COD1 == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + '12'; + } + } + } + else if (SELECT.GROUPBY == 'TRIMV') { + + if (ROW.COD == ROW.COD2) { + return annee + ROW.COD2; + } + else { + + if (annee == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return annee + mois_fin_string; + } + } + } + else if (SELECT.GROUPBY == 'NUMEROTRIMV') { + + if (ROW.COD == ROW.COD2) { + + if (parseInt(ROW.COD2) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD2 + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD2; + } + } + else { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + mois_fin_string; + } + } + } + } + else { + + if (ROW.COD == ROW.COD2) { + + if (parseInt(ROW.COD2) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD2; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD2; + } + } + else { + return SELECT.TOPERIODE; + } + } + } else { + mois_debut = 1 + 3 * (parseInt(ROW.COD2.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD2.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + annee = ROW.COD2.substr(0,4); + + if (SELECT.GROUPBY == 'ANNEEV') { + + if (ROW.COD == ROW.COD2) { + return ROW.COD1 + ROW.COD2; + } + else { + + if (ROW.COD1 == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + '12'; + } + } + } + else if (SELECT.GROUPBY == 'TRIMV') { + + if (ROW.COD == ROW.COD2) { + return annee + ROW.COD2; + } + else { + + if (annee == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return annee + mois_fin_string; + } + } + } + else if (SELECT.GROUPBY == 'NUMEROTRIMV') { + + if (ROW.COD == ROW.COD2) { + + if (parseInt(ROW.COD2) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD2 + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD2; + } + } + else { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + mois_fin_string; + } + } + } + } + else { + + if (ROW.COD == ROW.COD3) { + + if (parseInt(ROW.COD3) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD3; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD3; + } + } + else { + return SELECT.TOPERIODE; + } + } + } + } + else if (SELECT.GROUPBY == 'TRIMV' || SELECT.GROUPBY_2 == 'TRIMV' || SELECT.GROUPBY_3 == 'TRIMV') { + + if (SELECT.GROUPBY == 'TRIMV') { + + annee = ROW.COD1.substr(0,4); + mois_fin = 3 * parseInt(ROW.COD1.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (annee == annee_periode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return annee + mois_fin_string; + } + } + else if (SELECT.GROUPBY_2 == 'TRIMV'){ + + annee = ROW.COD2.substr(0,4); + mois_fin = 3 * parseInt(ROW.COD2.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (ROW.COD == ROW.COD2) { + + if (annee == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return annee + mois_fin_string; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEEV' && ROW.COD1 != annee_toperiode) { + return ROW.COD1 + '12'; + } + else { + return SELECT.TOPERIODE; + } + } + } else { + annee = ROW.COD3.substr(0,4); + mois_fin = 3 * parseInt(ROW.COD3.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (ROW.COD == ROW.COD3) { + + if (annee == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return annee + mois_fin_string; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEEV' && ROW.COD1 != annee_toperiode) { + return ROW.COD1 + '12'; + } + else { + return SELECT.TOPERIODE; + } + } + } + } + else if (SELECT.GROUPBY == 'NUMEROTRIMV' || SELECT.GROUPBY_2 == 'NUMEROTRIMV' || SELECT.GROUPBY_3 == 'NUMEROTRIMV' ) { + + mois_debut = 1 + 3 * (parseInt(ROW.COD2.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD2.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (SELECT.GROUPBY == 'NUMEROTRIMV') { + + mois_debut = 1 + 3 * (parseInt(ROW.COD1.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD1.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) -1).toString() + mois_fin_string; + } + } + } + else if (SELECT.GROUPBY == 'ANNEEV') { + + if (ROW.COD == ROW.COD2) { + + if (ROW.COD1 == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + mois_fin_string; + } + } + else { + + if (ROW.COD1 == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + '12'; + } + } + } + else if (SELECT.GROUPBY_2 == 'NUMEROTRIMV'){ + + if (ROW.COD == ROW.COD2) { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) -1).toString() + mois_fin_string; + } + } + } + else { + return SELECT.TOPERIODE; + } + } else { + mois_debut = 1 + 3 * (parseInt(ROW.COD3.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD3.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + if (ROW.COD == ROW.COD3) { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) -1).toString() + mois_fin_string; + } + } + } + else { + return SELECT.TOPERIODE; + } + } + } + else if (SELECT.GROUPBY == 'ANNEEV'|| SELECT.GROUPBY_2 == 'ANNEEV' || SELECT.GROUPBY_3 == 'ANNEEV' ) { + + if(SELECT.GROUPBY == 'ANNEEV'|| SELECT.GROUPBY_2 == 'ANNEEV') { + + var row_cod:String = (SELECT.GROUPBY == 'ANNEEV') ? ROW.COD1 : ROW.COD2; + }else { + var row_cod:String = ROW.COD3; + } + + if (row_cod == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return row_cod + '12'; + } + } + + // FIN DE VENTE + // TRAITEMENT DATE FACTURE + if (SELECT.GROUPBY == 'SEMAINEANNEF' || SELECT.GROUPBY_2 == 'SEMAINEANNEF' || SELECT.GROUPBY_3 == 'SEMAINEANNEF' ) { + if(SELECT.GROUPBY == 'SEMAINEANNEF' || SELECT.GROUPBY_2 == 'SEMAINEANNEF'){ + row_cod = (SELECT.GROUPBY == 'SEMAINEANNEF') ? ROW.COD1 : ROW.COD2; + }else { + row_cod = ROW.COD3; + } + if (SELECT.GROUPBY == 'ANNEEF' || SELECT.GROUPBY_2 == 'ANNEEF') { + var ANNEEF:String = (SELECT.GROUPBY == 'SEMAINEANNEF') ? ROW.COD2.substr(0,4) : ROW.COD1.substr(0,4); + return getDateFromWeek(ANNEEF+row_cod,6); + } + else{ + var date:String = getDateFromWeek(annee_toperiode + row_cod,6); + var month:int = parseInt(date.substr(5,2)); + var day:int = parseInt(date.substr(8,2)); + var toDay:int = parseInt(SELECT.TOPERIODE.substr(8,2)); + if (month <= parseInt(mois_toperiode) && day <= toDay) { + return getDateFromWeek(annee_toperiode+row_cod,6); + } + else { + return getDateFromWeek((parseInt(annee_toperiode)).toString()+row_cod,0); + } + } + } + if (SELECT.GROUPBY == 'JOURSF' || SELECT.GROUPBY_2 == 'JOURSF' || SELECT.GROUPBY_3 == 'JOURSF') { + + if (SELECT.GROUPBY == 'JOURSF') { + return annee_periode+'-'+ROW.COD1; + } + else if (ROW.COD == ROW.COD2) { + return annee_periode+'-'+ROW.COD2; + }else if(ROW.COD == ROW.COD3) { + return annee_periode+'-'+ROW.COD3; + } + } + if (SELECT.GROUPBY == 'JOURF' || SELECT.GROUPBY_2 == 'JOURF' || SELECT.GROUPBY_3 == 'JOURF') { + + if (SELECT.GROUPBY == 'JOURF') { + return ROW.COD1; + } + else if (ROW.COD == ROW.COD2) { + return ROW.COD2; + } else if(ROW.COD == ROW.COD3) { + return ROW.COD3; + } + } + if (SELECT.GROUPBY == 'MOISF' || SELECT.GROUPBY_2 == 'MOISF' || SELECT.GROUPBY_3 == 'MOISF') { + + var mois:String = ''; + + if (SELECT.GROUPBY == 'MOISF') { + + annee = ROW.COD1.substr(0,4); + mois = ROW.COD1.substr(-2); + + if (annee == annee_toperiode && mois == mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return annee + mois; + } + } + else if (SELECT.GROUPBY_2 == 'MOISF') { + + annee = ROW.COD2.substr(0,4); + mois = ROW.COD2.substr(-2); + + if (ROW.COD == ROW.COD2) { + + if (annee == annee_toperiode && mois == mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return annee + mois; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEEF' && ROW.COD1 != annee_toperiode) { + return ROW.COD1 + '12'; + } + else { + return SELECT.TOPERIODE; + } + } + } else if (SELECT.GROUPBY_3 == 'MOISF'){ + annee = ROW.COD3.substr(0,4); + mois = ROW.COD3.substr(-2); + + if (ROW.COD == ROW.COD3) { + + if (annee== annee_periode && mois == mois_periode) { + return annee + mois; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEEF' && ROW.COD1 != annee_periode) { + return ROW.COD1 + '01'; + } + else { + return SELECT.PERIODE; + } + } + + } + } + else if (SELECT.GROUPBY == 'NUMEROMOISF' || SELECT.GROUPBY_2 == 'NUMEROMOISF' || SELECT.GROUPBY_3 == 'NUMEROMOISF') { + + if (SELECT.GROUPBY == 'NUMEROMOISF') { + + if (parseInt(ROW.COD1) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD1; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD1; + } + } + else if (SELECT.GROUPBY_2 == 'NUMEROMOISF'){ + + mois_debut = 1 + 3 * (parseInt(ROW.COD1.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD1.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + ANNEEF = ROW.COD1.substr(0,4); + + if (SELECT.GROUPBY == 'ANNEEF') { + + if (ROW.COD == ROW.COD2) { + return ROW.COD1 + ROW.COD2; + } + else { + + if (ROW.COD1 == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + '12'; + } + } + } + else if (SELECT.GROUPBY == 'TRIMF') { + + if (ROW.COD == ROW.COD2) { + return ANNEEF + ROW.COD2; + } + else { + + if (ANNEEF == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ANNEEF + mois_fin_string; + } + } + } + else if (SELECT.GROUPBY == 'NUMEROTRIMF') { + + if (ROW.COD == ROW.COD2) { + + if (parseInt(ROW.COD2) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD2 + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD2; + } + } + else { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + mois_fin_string; + } + } + } + } + else { + + if (ROW.COD == ROW.COD2) { + + if (parseInt(ROW.COD2) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD2; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD2; + } + } + else { + return SELECT.TOPERIODE; + } + } + } else { + mois_debut = 1 + 3 * (parseInt(ROW.COD2.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD2.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + ANNEEF = ROW.COD2.substr(0,4); + + if (SELECT.GROUPBY == 'ANNEEF') { + + if (ROW.COD == ROW.COD2) { + return ROW.COD1 + ROW.COD2; + } + else { + + if (ROW.COD1 == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + '12'; + } + } + } + else if (SELECT.GROUPBY == 'TRIMF') { + + if (ROW.COD == ROW.COD2) { + return ANNEEF + ROW.COD2; + } + else { + + if (ANNEEF == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ANNEEF + mois_fin_string; + } + } + } + else if (SELECT.GROUPBY == 'NUMEROTRIMF') { + + if (ROW.COD == ROW.COD2) { + + if (parseInt(ROW.COD2) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD2 + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD2; + } + } + else { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + mois_fin_string; + } + } + } + } + else { + + if (ROW.COD == ROW.COD3) { + + if (parseInt(ROW.COD3) <= parseInt(mois_toperiode)) { + return annee_toperiode + ROW.COD3; + } + else { + return (parseInt(annee_toperiode) - 1).toString() + ROW.COD3; + } + } + else { + return SELECT.TOPERIODE; + } + } + } + } + else if (SELECT.GROUPBY == 'TRIMF' || SELECT.GROUPBY_2 == 'TRIMF' || SELECT.GROUPBY_3 == 'TRIMF') { + + if (SELECT.GROUPBY == 'TRIMF') { + + ANNEEF = ROW.COD1.substr(0,4); + mois_fin = 3 * parseInt(ROW.COD1.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (ANNEEF == annee_periode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ANNEEF + mois_fin_string; + } + } + else if (SELECT.GROUPBY_2 == 'TRIMF'){ + + ANNEEF = ROW.COD2.substr(0,4); + mois_fin = 3 * parseInt(ROW.COD2.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (ROW.COD == ROW.COD2) { + + if (ANNEEF == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ANNEEF + mois_fin_string; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEEF' && ROW.COD1 != annee_toperiode) { + return ROW.COD1 + '12'; + } + else { + return SELECT.TOPERIODE; + } + } + } else { + ANNEEF = ROW.COD3.substr(0,4); + mois_fin = 3 * parseInt(ROW.COD3.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (ROW.COD == ROW.COD3) { + + if (ANNEEF == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ANNEEF + mois_fin_string; + } + } + else { + + if (SELECT.GROUPBY == 'ANNEEF' && ROW.COD1 != annee_toperiode) { + return ROW.COD1 + '12'; + } + else { + return SELECT.TOPERIODE; + } + } + } + } + else if (SELECT.GROUPBY == 'NUMEROTRIMF' || SELECT.GROUPBY_2 == 'NUMEROTRIMF' || SELECT.GROUPBY_3 == 'NUMEROTRIMF' ) { + + mois_debut = 1 + 3 * (parseInt(ROW.COD2.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD2.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (SELECT.GROUPBY == 'NUMEROTRIMF') { + + mois_debut = 1 + 3 * (parseInt(ROW.COD1.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD1.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) -1).toString() + mois_fin_string; + } + } + } + else if (SELECT.GROUPBY == 'ANNEEF') { + + if (ROW.COD == ROW.COD2) { + + if (ROW.COD1 == annee_toperiode && mois_fin >= parseInt(mois_toperiode)) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + mois_fin_string; + } + } + else { + + if (ROW.COD1 == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return ROW.COD1 + '12'; + } + } + } + else if (SELECT.GROUPBY_2 == 'NUMEROTRIMF'){ + + if (ROW.COD == ROW.COD2) { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) -1).toString() + mois_fin_string; + } + } + } + else { + return SELECT.TOPERIODE; + } + } else { + mois_debut = 1 + 3 * (parseInt(ROW.COD3.substr(-1)) - 1); + mois_fin = 3 * parseInt(ROW.COD3.substr(-1)); + mois_fin_string = mois_fin < 10 ? '0' + mois_fin.toString() : mois_fin.toString(); + if (ROW.COD == ROW.COD3) { + + if (mois_fin <= parseInt(mois_toperiode)) { + return annee_toperiode + mois_fin_string; + } + else { + + if (mois_debut <= mois_toperiode) { + return SELECT.TOPERIODE; + } + else { + return (parseInt(annee_toperiode) -1).toString() + mois_fin_string; + } + } + } + else { + return SELECT.TOPERIODE; + } + } + } + else if (SELECT.GROUPBY == 'ANNEEF'|| SELECT.GROUPBY_2 == 'ANNEEF' || SELECT.GROUPBY_3 == 'ANNEEF' ) { + + if(SELECT.GROUPBY == 'ANNEEF'|| SELECT.GROUPBY_2 == 'ANNEEF') { + + var row_cod:String = (SELECT.GROUPBY == 'ANNEEF') ? ROW.COD1 : ROW.COD2; + }else { + var row_cod:String = ROW.COD3; + } + + if (row_cod == annee_toperiode) { + return SELECT.TOPERIODE; + } + else { + return row_cod + '12'; + } + }else { + var to_periode_comparatif:String = SELECT.TOPERIODE; + if (COLUMN.NAME == 'D1_OLD') {to_periode_comparatif = VIEW.TOPERIODE_D;} + if (COLUMN.NAME == 'D1_NOW') {to_periode_comparatif = SELECT.TOPERIODE;} + if (COLUMN.NAME == 'D2_OLD') {to_periode_comparatif = VIEW.TOPERIODE_D;} + if (COLUMN.NAME == 'D2_NOW') {to_periode_comparatif = SELECT.TOPERIODE;} + if (COLUMN.NAME == 'CA_MOY_OLD') {to_periode_comparatif = VIEW.TOPERIODE_D;} + if (COLUMN.NAME == 'CA_MOY_NOW') {to_periode_comparatif = SELECT.TOPERIODE;} + if (COLUMN.NAME == 'F1') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F2') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F3') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F4') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F5') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F6') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F7') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F8') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F9') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F10') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F11') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F12') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F13') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F14') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'F15') {to_periode_comparatif = SELECT.TOPERIODE} + if (COLUMN.NAME == 'D1') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D2') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D3') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D4') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D5') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D6') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D7') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D8') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D9') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D10') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D11') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D12') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D13') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D14') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'D15') {to_periode_comparatif = VIEW.TOPERIODE_D} + if (COLUMN.NAME == 'L1') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L2') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L3') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L4') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L5') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L6') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L7') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L8') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L9') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L10') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L11') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L12') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L13') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L14') {to_periode_comparatif = VIEW.TOPERIODE_D2} + if (COLUMN.NAME == 'L15') {to_periode_comparatif = VIEW.TOPERIODE_D2} + return to_periode_comparatif; + } + //FIN TRAITEMENT DATE FACTURE + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + = 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'VAL'; + } + else if (compta_array.indexOf(SELECT.DATA1) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'CPT'; + } + else if (fact_valo_array.indexOf(SELECT.DATA1) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + else if (fact_array.indexOf(SELECT.DATA1) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAC'; + }else { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + }else if(SELECT.DATA2 != '0' && (COLUMN.NAME == 'D2' || COLUMN.NAME == 'F2' || COLUMN.NAME == 'L2')){ + if (valo_array.indexOf(SELECT.DATA2) >= 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'VAL'; + } + else if (compta_array.indexOf(SELECT.DATA2) >= 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'CPT'; + } + else if (fact_valo_array.indexOf(SELECT.DATA2) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + else if (fact_array.indexOf(SELECT.DATA2) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAC'; + }else { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + }else if(SELECT.DATA3 != '0' && (COLUMN.NAME == 'D3' || COLUMN.NAME == 'F3' || COLUMN.NAME == 'L3')){ + if (valo_array.indexOf(SELECT.DATA3) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'VAL'; + } + else if (compta_array.indexOf(SELECT.DATA3) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'CPT'; + } + else if (fact_valo_array.indexOf(SELECT.DATA3) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + else if (fact_array.indexOf(SELECT.DATA3) >= 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'FAC'; + }else { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + }else if(SELECT.DATA4 != '0' && (COLUMN.NAME == 'D4' || COLUMN.NAME == 'F4' || COLUMN.NAME == 'L4')){ + if (valo_array.indexOf(SELECT.DATA4) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'VAL'; + } + else if (compta_array.indexOf(SELECT.DATA4) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'CPT'; + } + else if (fact_valo_array.indexOf(SELECT.DATA4) >= 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + else if (fact_array.indexOf(SELECT.DATA4) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAC'; + }else { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + }else if(SELECT.DATA5 != '0' && (COLUMN.NAME == 'D5' || COLUMN.NAME == 'F5' || COLUMN.NAME == 'L5')){ + if (valo_array.indexOf(SELECT.DATA5) >= 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'VAL'; + } + else if (compta_array.indexOf(SELECT.DATA5) >= 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'CPT'; + } + else if (fact_valo_array.indexOf(SELECT.DATA5) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + else if (fact_array.indexOf(SELECT.DATA5) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAC'; + }else { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + }else if(SELECT.DATA6 != '0' && (COLUMN.NAME == 'D6' || COLUMN.NAME == 'F6' || COLUMN.NAME == 'L6')){ + if (valo_array.indexOf(SELECT.DATA6) >= 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'VAL'; + } + else if (compta_array.indexOf(SELECT.DATA6) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'CPT'; + } + else if (fact_valo_array.indexOf(SELECT.DATA6) >= 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + else if (fact_array.indexOf(SELECT.DATA6) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAC'; + }else { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + }else if(SELECT.DATA7 != '0' && (COLUMN.NAME == 'D7' || COLUMN.NAME == 'F7' || COLUMN.NAME == 'L7')){ + if (valo_array.indexOf(SELECT.DATA7) >= 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'VAL'; + } + else if (compta_array.indexOf(SELECT.DATA7) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'CPT'; + } + else if (fact_valo_array.indexOf(SELECT.DATA7) >= 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + else if (fact_array.indexOf(SELECT.DATA7) >= 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'FAC'; + }else { + LINKVARIABLES['QUELMONTANT'] = 'FAC'; + } + }else if(SELECT.DATA8 != '0' && (COLUMN.NAME == 'D8' || COLUMN.NAME == 'F8' || COLUMN.NAME == 'L8')){ + if (valo_array.indexOf(SELECT.DATA8) >= 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'VAL'; + } + else if (compta_array.indexOf(SELECT.DATA8) >= 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'CPT'; + } + else if (fact_valo_array.indexOf(SELECT.DATA8) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + else if (fact_array.indexOf(SELECT.DATA8) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAC'; + }else { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + }else if(SELECT.DATA9 != '0' && (COLUMN.NAME == 'D9' || COLUMN.NAME == 'F9' || COLUMN.NAME == 'L9')){ + if (valo_array.indexOf(SELECT.DATA9) >= 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'VAL'; + } + else if (compta_array.indexOf(SELECT.DATA9) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'CPT'; + } + else if (fact_valo_array.indexOf(SELECT.DATA9) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + else if (fact_array.indexOf(SELECT.DATA9) >= 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'FAC'; + }else { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + }else if(SELECT.DATA10 != '0' && (COLUMN.NAME == 'D10' || COLUMN.NAME == 'F10' || COLUMN.NAME == 'L10')){ + if (valo_array.indexOf(SELECT.DATA10) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'VAL'; + } + else if (compta_array.indexOf(SELECT.DATA10) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'CPT'; + } + else if (fact_valo_array.indexOf(SELECT.DATA10) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + else if (fact_array.indexOf(SELECT.DATA10) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAC'; + }else { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + }else if(SELECT.DATA011 != '0' && (COLUMN.NAME == 'D11' || COLUMN.NAME == 'F11' || COLUMN.NAME == 'L11')){ + if (valo_array.indexOf(SELECT.DATA011) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'VAL'; + } + else if (compta_array.indexOf(SELECT.DATA011) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'CPT'; + } + else if (fact_valo_array.indexOf(SELECT.DATA011) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + else if (fact_array.indexOf(SELECT.DATA011) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAC'; + }else { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + }else if(SELECT.DATA012 != '0' && (COLUMN.NAME == 'D12' || COLUMN.NAME == 'F12' || COLUMN.NAME == 'L12')){ + if (valo_array.indexOf(SELECT.DATA012) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'VAL'; + } + else if (compta_array.indexOf(SELECT.DATA012) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'CPT'; + } + else if (fact_valo_array.indexOf(SELECT.DATA012) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + else if (fact_array.indexOf(SELECT.DATA012) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAC'; + }else { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + }else if(SELECT.DATA013 != '0' && (COLUMN.NAME == 'D13' || COLUMN.NAME == 'F13' || COLUMN.NAME == 'L13')){ + if (valo_array.indexOf(SELECT.DATA013) >= 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'VAL'; + } + else if (compta_array.indexOf(SELECT.DATA013) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'CPT'; + } + else if (fact_valo_array.indexOf(SELECT.DATA013) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + else if (fact_array.indexOf(SELECT.DATA013) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAC'; + }else { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + }else if(SELECT.DATA014 != '0' && (COLUMN.NAME == 'D14' || COLUMN.NAME == 'F14' || COLUMN.NAME == 'L14')){ + if (valo_array.indexOf(SELECT.DATA014) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'VAL'; + } + else if (compta_array.indexOf(SELECT.DATA014) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'CPT'; + } + else if (fact_valo_array.indexOf(SELECT.DATA014) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + else if (fact_array.indexOf(SELECT.DATA014) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAC'; + }else { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + }else if(SELECT.DATA015 != '0' && (COLUMN.NAME == 'D15' || COLUMN.NAME == 'F15' || COLUMN.NAME == 'L15')){ + if (valo_array.indexOf(SELECT.DATA015) >= 0 ) { + LINKVARIABLES['QUELMONTANT'] = 'VAL'; + } + else if (compta_array.indexOf(SELECT.DATA015) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'CPT'; + } + else if (fact_valo_array.indexOf(SELECT.DATA015) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + else if (fact_array.indexOf(SELECT.DATA015) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAC'; + }else { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + }else if(SELECT.LS_DATA != '-1'){ + + var liste_indicateurs:String = SELECT.LS_DATA; + var my_array1:Array = liste_indicateurs.split("="); + var my_array:Array = my_array1[1].split(","); + var i:int; + for(i=0;i<=14;i++){ + if(my_array[i] != '0' && COLUMN.NAME == 'F'+(i+1)){ + if (valo_array.indexOf(my_array[i]) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'VAL'; + } + else if (compta_array.indexOf(my_array[i]) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'CPT'; + } + else if (fact_valo_array.indexOf(my_array[i] ) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAV'; + } + else if (fact_array.indexOf(my_array[i]) >= 0) { + LINKVARIABLES['QUELMONTANT'] = 'FAC'; + }else { + LINKVARIABLES['QUELMONTANT'] = 'CPT'; + } + } + } + } + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + = 1"; + } + if ($selected_value_array[0] == '01') { + $tranche_fixe = "duree IN (0,1) "; + } + if ($selected_value_array[0] == '012') { + $tranche_fixe = "duree IN (0,1,2) "; + } + if ($selected_value_array[0] == '1X') { + $tranche_fixe = "duree > 1"; + } + if ($selected_value_array[0] == 'X') { + $tranche_fixe = "duree > 2"; + } + + if ($tranche_fixe == "") { + // Intervalle de durées + if ($selected_value_array[0] == 'I') { + $select= ""; + if ($selected_value_array[1] != '' ) { + $select .= ' AND duree >= ' . intval($selected_value_array[1]); + } + if ($selected_value_array[2] != '' ) { + $select .= ' AND duree <= ' . intval($selected_value_array[2]); + } + return $select; + } + // Durée explicite + else if (substr($selected_value, 0, 2) == "DU") { + $select .= ' AND duree = ' . intval(substr($selected_value, 2)); + return $select; + } + // Autres (classes, ...) + else { + $selected_value = $selected_value_array[0]; + } + } + else { + $select .= ' AND ' . $tranche_fixe; + return $select; + } + } + // Spécifique durée d'occupation + if ($field_prefixe == "duree_occupation") { + + $selected_value_array = explode("|", $selected_value); + + // Tranches fixes + $tranche_fixe = ""; + if ($selected_value_array[0] === '0') { + $tranche_fixe = "duree_occ_eta = 0"; + } + if ($selected_value_array[0] === '1') { + $tranche_fixe = "duree_occ_eta = 1"; + } + if ($selected_value_array[0] === '2') { + $tranche_fixe = "duree_occ_eta = 2"; + } + if ($selected_value_array[0] == '1EX') { + $tranche_fixe = "duree_occ_eta >= 1"; + } + if ($selected_value_array[0] === '01') { + $tranche_fixe = "duree_occ_eta IN (0,1) "; + } + if ($selected_value_array[0] === '012') { + $tranche_fixe = "duree_occ_eta IN (0,1,2) "; + } + if ($selected_value_array[0] === '1X') { + $tranche_fixe = "duree_occ_eta > 1"; + } + if ($selected_value_array[0] === 'X') { + $tranche_fixe = "duree_occ_eta > 2"; + } + + if ($tranche_fixe == "") { + // Intervalle de durées + if ($selected_value_array[0] == 'I') { + $select= ""; + if ($selected_value_array[1] != '' ) { + $select .= ' AND duree_occ_eta >= ' . intval($selected_value_array[1]); + } + if ($selected_value_array[2] != '' ) { + $select .= ' AND duree_occ_eta <= ' . intval($selected_value_array[2]); + } + return $select; + } + // Durée explicite + else if (substr($selected_value, 0, 2) == "DU") { + $select .= ' AND duree_occ_eta = ' . intval(substr($selected_value, 2)); + return $select; + } + // Autres (classes, ...) + else { + $selected_value = $selected_value_array[0]; + } + } + else { + $select .= ' AND ' . $tranche_fixe; + return $select; + } + } + + // Spécifique age + if ($field_prefixe == "age") { + + $selected_value_array = explode("|", $selected_value); + + $mode = substr($selected_value_array[0],0,2); + $oid = substr($selected_value_array[0],2); + if ($mode == 'LS') { + $section_id = ACTI_get_section_id($selected_value_array[0], 2, 2, 'age_section_id'); + $oid = ACTI_get_classe_oid($selected_value_array[0]); + } + $subselect_select = ''; + + if ($mode == 'LI') {$subselect_select = " age_id = ANY (array(SELECT to_id FROM activite.t_listes_contenu WHERE liste_id = $oid)::bigint[])";} + if ($mode == 'SL') {$subselect_select = " age_id != ALL (array(SELECT to_id FROM activite.t_listes_contenu WHERE liste_id = $oid)::bigint[])";} + if ($mode == 'LS') {$subselect_select = " age_id = ANY (array(SELECT age_id FROM activite.v_ages_1 WHERE $section_id = $oid)::bigint[])";} + if ($mode == 'AG') {$subselect_select = " age_id = $oid ";} + + + if ($subselect_select != '') { + $select = $select. " AND $subselect_select "; + } + else { + + // Anciennes codifications + if ($selected_value_array[0] == '0') { + $select = $select. ' AND age = 0'; + } + if ($selected_value_array[0] == '1') { + $select = $select. ' AND age >= 1 AND age <= 5' ; + } + if ($selected_value_array[0] == '6') { + $select = $select. ' AND age >= 6 AND age <= 12' ;} + if ($selected_value_array[0] == '13') { + $select = $select. ' AND age >= 13 AND age <= 20' ; + } + if ($selected_value_array[0] == '21') { + $select = $select. ' AND age >= 21 AND age <= 30' ; + } + if ($selected_value_array[0] == '31') { + $select = $select. ' AND age >= 31 AND age <= 40' ; + } + if ($selected_value_array[0] == '41') { + $select = $select. ' AND age >= 41 AND age <= 50' ; + } + if ($selected_value_array[0] == '51') { + $select = $select. ' AND age >= 51 AND age <= 60' ; + } + if ($selected_value_array[0] == '61') { + $select = $select. ' AND age >= 61 AND age <= 70' ; + } + if ($selected_value_array[0] == '71') { + $select = $select. ' AND age >= 71 AND age <= 80' ; + } + if ($selected_value_array[0] == '81') { + $select = $select. ' AND age >= 81' ; + } + if ($selected_value_array[0] == 'I' && $selected_value_array[1] != '' && $selected_value_array[2] != '' ) { + $select = $select. ' AND age >= ' . intval($selected_value_array[1]) . ' AND age <= ' . intval($selected_value_array[2]); + } + else if ($selected_value_array[0] == 'I' && $selected_value_array[1] != '' ) { + $select = $select. ' AND age >= ' . intval($selected_value_array[1]); + } + else if ($selected_value_array[0] == 'I' && $selected_value_array[2] != '' ) { + $select = $select. ' AND age <= ' . intval($selected_value_array[2]); + } + + } + return $select; + } + + // Spécifique heure entrée + + if ($field_prefixe == "heure_entree") { + + $selected_value_array = explode("|", $selected_value); + + if($selected_value_array[0] != '-1') { + $field1 = intval($selected_value_array[2]) * 10000; + $field2 = intval($selected_value_array[3]) * 10000; + switch ($selected_value_array[1]) { + case 1 : + $select = " AND v_sejours_1.heure_entree < $field1"; + break; + case 2 : + $select = " AND v_sejours_1.heure_entree >= $field1"; + break; + case 3 : + $select = " AND v_sejours_1.heure_entree BETWEEN $field1 AND $field2"; + break; + } + } + + return $select; + + } + + // Spécifique heure sortie + + if ($field_prefixe == "heure_sortie") { + + $selected_value_array = explode("|", $selected_value); + + if($selected_value_array[0] != '-1') { + $field1 = intval($selected_value_array[2]) * 10000; + $field2 = intval($selected_value_array[3]) * 10000; + switch ($selected_value_array[1]) { + case 1 : + $select = " AND v_sejours_1.heure_sortie < $field1"; + break; + case 2 : + $select = " AND v_sejours_1.heure_sortie >= $field1"; + break; + case 3 : + $select = " AND v_sejours_1.heure_sortie BETWEEN $field1 AND $field2"; + break; + } + } + + return $select; + + } + + // Filtre avec prestation dans séjour + + if ($selected_value != '-1' && ($field_prefixe == "prestation_avec" or $field_prefixe == "rubrique_facturation_avec" or $field_prefixe == "compte_produit_avec")) { + $mode = substr($selected_value,0,2); + $oid = $selected_value; + $field_code = ''; + $view_join = ''; + + if ($selected_value == 'SAISIECODE') { + $mode = "CC"; + $mode_cc = True; + } + + if ($mode == 'LS') { + $section = substr($selected_value,2,2); + $oid = substr($selected_value,4); + } + + if ($mode != 'LI' && $mode != 'SL' && $mode != 'LS' && $mode != 'CC' ) { + if ($mode != 'D2') { + $mode = 'DP'; + } + $oid = substr($selected_value,2); + } + if($field_prefixe == "prestation_avec"){$field_id ="prestation_id"; $view_join = 'v_factures_lignes_prestation_1';} + if($field_prefixe == "rubrique_facturation_avec"){ $field_id ="rubrique_facturation_id"; $view_join = 'v_factures_lignes_rubrique_facturation_1';} + if($field_prefixe == "compte_produit_avec"){$field_id ="compte_produit_id"; $view_join = 'v_factures_lignes_compte_produit_1';} + + if($field_prefixe == "prestation_avec" && $mode_cc ){$field_code ="prestation_code";} + if($field_prefixe == "rubrique_facturation_avec" && $mode_cc ){ $field_code ="rubrique_facturation_code";} + if($field_prefixe == "compte_produit_avec" && $mode_cc ){$field_code ="compte_produit_code";} + + if ($mode == 'LI' || $mode == 'SL') {$oid = substr($selected_value,2);} + + $subselect_select = ''; + $field_section_id = str_replace("_avec","",$field_prefixe). "_section_id[" . $section . "]"; + + if ($mode == 'LI') {$subselect_select = "$field_id = ANY (array(SELECT to_id FROM activite.t_listes_contenu WHERE liste_id = $oid)::bigint[])";} + if ($mode == 'SL') {$subselect_select = "$field_id != ALL (array(SELECT to_id FROM activite.t_listes_contenu WHERE liste_id = $oid)::bigint[])";} + if ($mode == 'LS') {$subselect_select = "$field_section_id = $oid";} + if ($mode == 'DP') {$subselect_select = "$field_id = $oid";} + if ($mode == 'CC') {$subselect_select = "$field_code = '$selected_code' ";} + + + // Spécifique avec prestation + if ($selected_value != '-1') { + $select = "AND v_sejours_1.no_sejour = ANY( + SELECT v_factures_lignes_c_5.no_sejour + FROM activite.v_factures_lignes_c_5 + JOIN activite.$view_join ON $view_join.oid = v_factures_lignes_c_5.$field_id + WHERE $subselect_select + GROUP BY 1 + )"; + } + + return $select; + + } + + // Filtre passage + + if ($selected_value != '-1' && ($field_prefixe == "lieu_service_passage" or $field_prefixe == "lieu_unite_fonctionnelle_passage" or $field_prefixe == "lieu_unite_medicale_passage" or $field_prefixe == "lieu_etage_passage" )) { + $mode = substr($selected_value,0,2); + $oid = $selected_value; + + if ($selected_value == 'SAISIECODE') { + $mode = "CC"; + $mode_cc = True; + } + + if ($mode == 'LS') { + $section = substr($selected_value,2,2); + $oid = substr($selected_value,4); + } + + if ($mode != 'LI' && $mode != 'SL' && $mode != 'LS' && $mode != 'CC' ) { + if ($mode != 'D2') { + $mode = 'DP'; + } + $oid = substr($selected_value,2); + } + if($field_prefixe == "lieu_service_passage"){$field_id ="lieu_service_id";} + if($field_prefixe == "lieu_unite_fonctionnelle_passage"){ $field_id ="lieu_unite_fonctionnelle_id";} + if($field_prefixe == "lieu_unite_medicale_passage"){$field_id ="lieu_unite_medicale_id";} + if($field_prefixe == "lieu_etage_passage"){$field_id ="lieu_etage_id";} + + if($field_prefixe == "lieu_service_passage" && $mode_cc ){$field_id ="lieu_service_code";} + if($field_prefixe == "lieu_unite_fonctionnelle_passage" && $mode_cc ){ $field_id ="lieu_unite_fonctionnelle_code";} + if($field_prefixe == "lieu_unite_medicale_passage" && $mode_cc ){$field_id ="lieu_unite_medicale_code";} + if($field_prefixe == "lieu_etage_passage" && $mode_cc ){$field_id ="lieu_etage_code";} + + if ($mode == 'LI' || $mode == 'SL') {$oid = substr($selected_value,2);} + + $subselect_select = ''; + $field_section_id = str_replace("_passage","",$field_prefixe). "_section_id[" . $section . "]"; + + if ($mode == 'LI') {$subselect_select = "$field_id = ANY (SELECT to_id FROM activite.t_listes_contenu WHERE liste_id = $oid)";} + if ($mode == 'SL') {$subselect_select = "$field_id != ALL (array(SELECT to_id FROM activite.t_listes_contenu WHERE liste_id = $oid)::bigint[])";} + if ($mode == 'LS') {$subselect_select = "$field_section_id = $oid";} + if ($mode == 'DP') {$subselect_select = "$field_id = $oid";} + if ($mode == 'CC') {$subselect_select = "$field_id = '$selected_code' ";} + + + // Spécifique lieu de passage service/UF/UM/etage + + $lieux_passages = array( + "lieu_service_passage", + "lieu_unite_fonctionnelle_passage", + "lieu_unite_medicale_passage", + "lieu_etage_passage" + ); + + if(in_array($field_prefixe, $lieux_passages) && $selected_value != '-1') + { + $select = "AND EXISTS ( + SELECT v_sejours_1.sejour_id + FROM activite.v_mouvements_sejour_2 + WHERE activite.v_mouvements_sejour_2.$subselect_select + AND v_sejours_1.no_sejour = v_mouvements_sejour_2.no_sejour + GROUP BY 1 + )"; + } + + return $select; + + } + + // GME + if ($selected_value != '-1' && $field_prefixe == 'v_sejours_gme_1.gme') { + + $oid = substr($selected_value,2); + $mode = substr($selected_value,0,2); + switch ($mode) { + case 'LI' : + $select .= " AND gme_id IN (SELECT to_id FROM acivite.t_listes_contenu WHERE liste_id = $oid)"; + break; + case 'SL' : + $select .= " AND gme_id NOT IN (SELECT to_id FROM acivite.t_listes_contenu WHERE liste_id = $oid)"; + break; + case 'LS' : + $select .= " AND gme_id IN (SELECT oid FROM acivite.t_gme_c WHERE $section_id = $oid)"; + break; + case 'CM' : + $select .= " AND v_sejours_gme_1.cm_id = $oid "; + break; + case 'GN' : + $select .= " AND v_sejours_gme_1.gn_id = $oid "; + break; + case 'RG' : + $oid = substr($selected_value,4); + $select .= " AND v_sejours_gme_1.rgme_id = $oid "; + break; + case 'GM' : + $oid = substr($selected_value,3); + $select .= " AND v_sejours_gme_1.gme_id = $oid "; + break; + } + return $select; + } + + + // standard + + if ($selected_value != '-1') { + $mode = substr($selected_value,0,2); + $oid = $selected_value; + if ($selected_value == 'SAISIECODE') { + $mode = "C*"; + $selected_value = "C*$selected_code"; + } + if ($mode == 'LS') { + $section = ACTI_get_section_id($selected_value); + $oid = ACTI_get_classe_oid($selected_value); + } + + // Pour champ GHM, il y a plusieurs cas selon le préfixe + if ($field_prefixe == "ghm") { + if ($mode == "CM") { + $field_prefixe = "cmd"; + } + if ($mode == "G5") { + $field_prefixe = "ghm5"; + } + if ($mode == "SV") { + $field_prefixe = "severite_ghm"; + } + } + + // Pour champ GHM, il y a plusieurs cas selon le préfixe + if ($field_prefixe == "v_sejours_ghmgme_1.ghmgme") { + if ($mode == "CM") { + $field_prefixe = "cmdcm"; + } + if ($mode == "G5") { + $field_prefixe = "ghm5rgme"; + } + } + + // Pour champ GME, il y a plusieurs cas selon le préfixe + if ($field_prefixe == "gme") { + if ($mode == "CM") { + $field_prefixe = "cm"; + } + if ($mode == "GN") { + $field_prefixe = "gn"; + } + if ($mode == "RG") { + $field_prefixe = "rgme"; + } + } + + + // Pour champ code_postal, il y a plusieurs cas selon le préfixe + if ($field_prefixe == "code_postal") { + if ($mode == 'CP' || $mode == 'LI' || $mode == 'LS') { + $field_prefixe = $table_name . ".code_postal"; + } + if ($mode == 'DP' || $mode == 'DG') { + $field_prefixe = $table_name . ".departement"; + } + if ($mode == 'GP') { + $field_prefixe = $table_name . ".code_geographique_pmsi"; + } + if ($mode == 'TS') { + $field_prefixe = $table_name . ".territoire_sante"; + } + } + + // Pour champ ACTE, il y a plusieurs cas selon le préfixe + if ($field_prefixe == "acte") { + if ($selected_value == "ACTEREGR") { + $field_prefixe = "ccam_regroupement"; + } + if ($selected_value == "ACTECNOM") { + $field_prefixe = "acte_nomenclature"; + } + } + + // Pour champ LPP, pour les classifications + if ($field_prefixe == "lpp") { + if ($mode == "D1") { + $field_prefixe = "lpp_classification_atc_1"; + $mode = "DT"; + } + if ($mode == "D2") { + $field_prefixe = "lpp_classification_atc_2"; + $mode = "DT"; + } + if ($mode == "D3") { + $field_prefixe = "lpp_classification_atc_3"; + $mode = "DT"; + } + if ($mode == "D4") { + $field_prefixe = "lpp_classification_atc_4"; + $mode = "DT"; + } + } + + // Pour champ UCD, pour les classifications + if ($field_prefixe == "ucd") { + if ($mode == "D1") { + $field_prefixe = "ucd_classification_atc_1"; + $mode = "DT"; + } + if ($mode == "D2") { + $field_prefixe = "ucd_classification_atc_2"; + $mode = "DT"; + } + if ($mode == "D3") { + $field_prefixe = "ucd_classification_atc_3"; + $mode = "DT"; + } + if ($mode == "D4") { + $field_prefixe = "ucd_classification_atc_4"; + $mode = "DT"; + } + } + + // Pour champ TIERS, il y a plusieurs cas selon le préfixe + if ($field_prefixe == "tiers_payant") { + if ($mode == "TT") { + $field_prefixe = "type_tiers_payant"; + } + if ($mode == "RG") { + $field_prefixe = "tiers_payant_grand_regime"; + } + } + if ($field_prefixe == "v_factures_reference_1.tiers_payant") { + if ($mode == "TT") { + $field_prefixe = "v_factures_reference_1.type_tiers_payant"; + } + if ($mode == "RG") { + $field_prefixe = "v_factures_reference_1.tiers_payant_grand_regime"; + } + } + + // Medecin traitant + if ($field_prefixe == "medecin_traitant") { + $field_prefixe = "medecin_traitant"; + } + + // Pour champ Medecin, il y a plusieurs cas selon le préfixe + if ($field_prefixe == "medecin_adm_sejour") { + if ($mode == "MD") { + $field_prefixe = "medecin_sejour"; + } + if ($mode == "SP") { + $field_prefixe = "medecin_sejour_specialite"; + } + } + if ($field_prefixe == "medecin_adm_mouvement") { + if ($mode == "MD") { + $field_prefixe = "medecin_mouvement"; + } + if ($mode == "SP") { + $field_prefixe = "medecin_mouvement_specialite"; + } + } + if ($field_prefixe == "medecin_adm_facture") { + if ($mode == "MD") { + $field_prefixe = "medecin_facture"; + } + if ($mode == "SP") { + $field_prefixe = "medecin_facture_specialite"; + } + } + if ($field_prefixe == "medecin_adm_comptabilise") { + if ($mode == "MD") { + $field_prefixe = "medecin_comptabilise"; + } + if ($mode == "SP") { + $field_prefixe = "medecin_comptabilise_specialite"; + } + } + + + if ($mode != 'LI' && $mode != 'SL' && $mode != 'LS' && $mode != 'C*' ) { + if ($mode != 'D2') { + $mode = 'DT'; + } + $oid = substr($selected_value,2); + } + + + if ($mode == 'LI' || $mode == 'SL') {$oid = substr($selected_value,2);} + + // recherche dans des codes + if ($mode == 'C*') { + switch ($table_name) { + case 't_ghs_c': + $source_field_id = "ghs_id"; + $where_codes = sql_codes_list_n(substr($selected_value,2), "to_number(ghs_code,'0000')"); + break; + case 't_ghm_c': + $source_field_id = "ghm_id"; + $where_codes = sql_codes_list_a(substr($selected_value,2), 'ghm_code'); + break; + case 't_ghmgme_c': + $source_field_id = "ghmgme_id"; + $where_codes = sql_codes_list_a(substr($selected_value,2), 'ghmgme_code'); + break; + default: + $source_field_id = "oid"; + $where_codes = sql_codes_list_a(substr($selected_value,2), 'code'); + } + } + + $subselect_select = ''; + + + $field_id = $field_prefixe . "_id"; + $field2_id = $field2_prefixe . "_id"; + + // ME/MS/PR/DE + if (in_array($field_prefixe, array('mode_entree', 'mode_sortie', 'destination', 'provenance'))) { + $field_id = $field_prefixe; + $oid = "'" . substr($selected_value,2) . "'"; + } + if ($field_prefixe == 'etablissement_provenance' || $field_prefixe == 'etablissement_destination') $oid = $selected_value; + + if ($field_prefixe == 'traitement_epmsi') $oid = $selected_value; + + // actes CCAM ou NGAP + if ($field_prefixe == 'acte' and substr($selected_value,0,2) == 'NO') { + $field_id = 'acte_nomenclature'; + $oid="'$oid'"; // sale mais evite de changer v_actes_3 (ne sait pas quelle conséquences) + } + + + // sections nouvelle mode + $field_section_id = $field_prefixe . "_" . $section; + + if ($mode == 'LI') {$subselect_select = " $field_id = ANY (array(SELECT to_id FROM $module_name.t_listes_contenu WHERE liste_id = $oid)::bigint[])";} + if ($mode == 'SL') {$subselect_select = " $field_id != ALL (array(SELECT to_id FROM $module_name.t_listes_contenu WHERE liste_id = $oid)::bigint[])";} + if ($mode == 'LS') {$subselect_select = " $field_section_id = $oid";} + if ($mode == 'DT') {$subselect_select = " $field_id = $oid";} + // Spécifique type de séjour (s'adapte pour tout oid concatenant différents type de sejour ex 12 ou 125) + if ($field_prefixe == "type_sejour") { + if ($mode == 'DT') { + if (strlen($oid)==1) { + $subselect_select = " $field_id = $oid"; + } + else { + $subselect_select = " $field_id IN (" . implode(',', str_split($oid)) . ")"; + } + } + } + + if (in_array($field_prefixe, array('mode_entree', 'mode_sortie', 'destination', 'provenance'))){ + if ($mode == 'DT') { + if (substr($selected_value,1,1) == 'X'){ + $subselect_select = " $field_id <> $oid"; + } + else { + $subselect_select = " $field_id = $oid"; + } + } + } + if ($mode == 'D2') {$subselect_select = " $field2_id = $oid";} + if ($mode == 'C*') {$subselect_select = " $field_id = ANY (array(SELECT $source_field_id FROM activite.$table_name WHERE $where_codes)::bigint[])";} + + if ($field_prefixe == "severite_cti") { + $oid = $selected_value; + $subselect_select = " $field_id = $oid "; + } + + if ($subselect_select != '') {$select = " AND $subselect_select ";} + } + return $select; + } + + function ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT="", $CONTEXTE="") { + if (substr($GROUPBY,3,3) == 'CLS') { + $GROUPBY = substr($GROUPBY,0,6); + } + $field = ''; + $field_id = ''; + $field_code = ''; + $field_texte = ''; + switch ($GROUPBY) { + case '*TAB': + $field = "*TAB"; + break; + case '-1': + $field = ""; + break; + case 'TSE': + $field = "type_sejour"; + break; + case 'TSECLS': + $field = "type_sejour_section"; + break; + case 'EDS': + $field = "v_sejours_1.etat_sejour"; + break; + case 'EDSCLS': + $field = "etat_sejour_section"; + break; + case 'FOA': + $field = "forme_activite"; + break; + case 'FOACLS': + $field = "forme_activite_section"; + break; + case 'FSP': + $field = "filiere_soin_principale"; + break; + case 'FSPCLS': + $field = "filiere_soin_principale_section"; + break; + case 'POL': + $field = "pole"; + break; + case 'POLCLS': + $field = "pole_section"; + break; + case 'MTR': + $field = "mode_traitement"; + break; + case 'ETAT_PMSI': + $field = "traitement_epmsi"; + break; + case 'MCO': + $field = "mcos"; + break; + case 'CAS': + $field = "cas"; + break; + case 'CMD': + $field = "cmd"; + break; + case 'GHS': + $field = "v_sejours_ghs_1.ghs"; + break; + case 'GHM': + $field = "ghm"; + break; + case 'GHMCLS': + $field = "ghm_section"; + break; + case 'GHM5': + $field = "ghm5"; + break; + case 'GHMSEV': + $field = "severite_ghm"; + break; + case 'SEVCTI': + $field = "severite_cti"; + break; + case 'GME': + $field = "v_sejours_gme_1.gme"; + break; + case 'GMECLS': + $field = "gme_section"; + break; + case 'GN': + $field = "v_sejours_gme_1.gn"; + break; + case 'GNCLS': + $field = "gn_section"; + break; + case 'CM': + $field = "v_sejours_gme_1.cm"; + break; + case 'CMCLS': + $field = "cm_section"; + break; + case 'RGME': + $field = "v_sejours_gme_1.rgme"; + break; + case 'RGMECLS': + $field = "rgme_section"; + break; + case 'HME': + $field = "v_sejours_ghmgme_1.ghmgme"; + break; + case 'HMECLS': + $field = "ghmgme_section"; + break; + case 'CCM': + $field = "v_sejours_ghmgme_1.cmdcm"; + break; + case '5ME': + $field = "v_sejours_ghmgme_1.ghm5rgme"; + break; + case 'ETAB_PROV': + $field = "etablissement_provenance"; + break; + case 'ETAB_DEST': + $field = "etablissement_destination"; + break; + + case 'CPT': + if ($CONTEXTE != "OCCUPATION") { + $field = "compte_produit"; + } + break; + case 'CPTCLS': + if ($CONTEXTE != "OCCUPATION") { + $field = "compte_produit_section"; + } + break; + + case 'CPA': + if ($CONTEXTE != "OCCUPATION") { + $field = "compte_produit_analytique"; + } + break; + case 'CPACLS': + if ($CONTEXTE != "OCCUPATION") { + $field = "compte_produit_analytique_section"; + } + break; + + case 'BUC': + $field = "budget_cle"; + break; + case 'BUCCLS': + $field = "budget_cle_section"; + break; + + case 'PS1': + $field = "v_sejours_parametres_personnalises_1.parametre_personnalise_1"; + break; + case 'PS1CLS': + $field = "v_sejours_parametres_personnalises_1.parametre_personnalise_1_section"; + break; + case 'PS2': + $field = "v_sejours_parametres_personnalises_1.parametre_personnalise_2"; + break; + case 'PS2CLS': + $field = "v_sejours_parametres_personnalises_1.parametre_personnalise_2_section"; + break; + case 'FIN': + $field = "finess"; + break; + case 'FINCLS': + $field = "finess_section"; + break; + case 'DUREE_SEJOUR': + $field = "duree_sejour"; + break; + case 'DUREE_OCCUP': + $field = "duree_occupation"; + break; + case 'MODE_ENTREE': + $field = "mode_entree"; + break; + case 'MODE_SORTIE': + $field = "mode_sortie"; + break; + case 'PROVENANCE': + $field = "provenance"; + break; + case 'DESTINATION': + $field = "destination"; + break; + case 'ETABLISSEMENT_PROVENANCE': + $field = "etablissement_provenance"; + break; + case 'ETABLISSEMENT_DESTINATION': + $field = "etablissement_destination"; + break; + case 'DSJCLS': + $field = "duree_sejour_section"; + break; + + // Si contexte "séjour", pour service sortie + case 'SER': + if ($CONTEXTE != "OCCUPATION" && $CONTEXTE != "PRESTATION" && $CONTEXTE != "PRESTATION_H") { + $field = "lieu_sortie_service"; + } + break; + case 'SERCLS': + if ($CONTEXTE != "OCCUPATION" && $CONTEXTE != "PRESTATION" && $CONTEXTE != "PRESTATION_H") { + $field = "lieu_sortie_service_section"; + } + break; + // Service de sortie pour l'occupation + case 'SOR': + $field = "lieu_sortie_service"; + break; + case 'SORCLS': + $field = "lieu_sortie_service_section"; + break; + case 'ACT': + if ($CONTEXTE != "OCCUPATION" && $CONTEXTE != "PRESTATION" && $CONTEXTE != "PRESTATION_H") { + $field = "lieu_sortie_activite"; + } + break; + case 'ETA': + if ($CONTEXTE != "OCCUPATION" && $CONTEXTE != "PRESTATION" && $CONTEXTE != "PRESTATION_H") { + $field = "lieu_sortie_etage"; + } + break; + case 'ETACLS': + if ($CONTEXTE != "OCCUPATION" && $CONTEXTE != "PRESTATION" && $CONTEXTE != "PRESTATION_H") { + $field = "lieu_sortie_etage_section"; + } + break; + case 'ESO': + $field = "lieu_sortie_etage"; + break; + case 'ESOCLS': + $field = "lieu_sortie_etage_section"; + break; + case 'LIT': + if ($CONTEXTE != "OCCUPATION" && $CONTEXTE != "PRESTATION" && $CONTEXTE != "PRESTATION_H") { + $field = "lieu_sortie_lit"; + } + break; + case 'LITCLS': + if ($CONTEXTE != "OCCUPATION" && $CONTEXTE != "PRESTATION" && $CONTEXTE != "PRESTATION_H") { + $field = "lieu_sortie_lit_section"; + } + break; + case 'GIR': + if ($CONTEXTE != "OCCUPATION" && $CONTEXTE != "PRESTATION" && $CONTEXTE != "PRESTATION_H") { + $field = "lieu_sortie_gir"; + } + else { + $field = "lieu_gir"; + } + break; + case 'GIRCLS': + if ($CONTEXTE != "OCCUPATION" && $CONTEXTE != "PRESTATION" && $CONTEXTE != "PRESTATION_H") { + $field = "lieu_sortie_gir_section"; + } + else { + $field = "lieu_gir_section"; + } + break; + case 'GRS': + $field = "lieu_sortie_gir"; + break; + case 'GRSCLS': + $field = "lieu_sortie_gir_section"; + break; + case 'UM': + if ($CONTEXTE != "OCCUPATION" && $CONTEXTE != "PRESTATION" && $CONTEXTE != "PRESTATION_H") { + $field = "lieu_sortie_unite_medicale"; + } + break; + case 'UMDCLS': + if ($CONTEXTE != "OCCUPATION" && $CONTEXTE != "PRESTATION" && $CONTEXTE != "PRESTATION_H") { + $field = "lieu_sortie_unite_medicale_section"; + } + break; + case 'UMS': + $field = "lieu_sortie_unite_medicale"; + break; + case 'UMSCLS': + $field = "lieu_sortie_unite_medicale_section"; + break; + case 'UF': + if ($CONTEXTE != "OCCUPATION" && $CONTEXTE != "PRESTATION" && $CONTEXTE != "PRESTATION_H") { + $field = "lieu_sortie_unite_fonctionnelle"; + } + break; + case 'UFTCLS': + if ($CONTEXTE != "OCCUPATION" && $CONTEXTE != "PRESTATION" && $CONTEXTE != "PRESTATION_H") { + $field = "lieu_sortie_unite_fonctionnelle_section"; + } + break; + case 'UFS': + $field = "lieu_sortie_unite_fonctionnelle"; + break; + case 'UFSCLS': + $field = "lieu_sortie_unite_fonctionnelle_section"; + break; + case 'SEXE': + $field = "v_sejours_1.code_sexe"; + break; + case 'AGE': + $field = "age"; + break; + case 'AGECLS': + $field = "age_section"; + break; + case 'CODEPOST': + $field = "v_codes_postaux_2.code_postal"; + break; + case 'DEPARTEMENT': + $field = "v_codes_postaux_2.departement"; + break; + case 'CDPCLS': + $field = "v_codes_postaux_2.code_postal_section"; + break; + case 'TERSANTE': + $field = "v_codes_postaux_2.territoire_sante"; + break; + case 'CODEGEOPMSI': + $field = "v_codes_postaux_2.code_geographique_pmsi"; + break; + case 'EXC' : + $field = "expert_controle"; + break; + case 'EXC_ANMO_SIGNAL' : + $field = "date_signalement_mois"; + break; + case 'EXC_ANSE_SIGNAL' : + $field = "date_signalement_semaine"; + break; + case 'EXC_DATE_SIGNAL' : + $field = "date_signalement"; + break; + case 'EXC_ANMO_CORREC' : + $field = "date_correction_mois"; + break; + case 'EXC_ANSE_CORREC' : + $field = "date_correction_semaine"; + break; + case 'EXC_DATE_CORREC' : + $field = "date_correction"; + break; + case 'EXCCLS' : + $field = "expert_controle_section"; + break; + case 'SEJOUR' : + $field = "v_sejours_1.sejour"; + break; + case 'RIS' : + $field = "v_risque_1.risque"; + break; + + // Occupation bloc + case 'BLODAT': + $field = "date"; + break; + case 'BLOMOI': + $field = "mois"; + break; + case 'BLS': + $field = "salle"; + break; + case 'BLSCLS': + $field = "salle_section"; + break; + case 'BLB': + $field = "bloc"; + break; + case 'BLBCLS': + $field = "bloc_section"; + break; + case 'BLC': + $field = "medecin_chirurgien_intervention"; + break; + case 'BLCCLS': + $field = "medecin_chirurgien_adm_intervention"; + break; + case 'BLCSPE': + $field = "medecin_chirurgien_intervention_specialite"; + break; + case 'BLM': + $field = "motif_intervention"; + break; + case 'BLMCLS': + $field = "motif_intervention"; + break; + case 'LPP': + if ($CONTEXTE == "PRESTATION") { + $field = "lpp"; + } + break; + case 'LP1': + if ($CONTEXTE == "PRESTATION") { + $field = "lpp_classification_atc_1"; + } + break; + case 'LP2': + if ($CONTEXTE == "PRESTATION") { + $field = "lpp_classification_atc_2"; + } + break; + case 'LP3': + if ($CONTEXTE == "PRESTATION") { + $field = "lpp_classification_atc_3"; + } + break; + case 'LP4': + if ($CONTEXTE == "PRESTATION") { + $field = "lpp_classification_atc_4"; + } + break; + case 'LP5': + if ($CONTEXTE == "PRESTATION") { + $field = "lpp_classification_atc"; + } + break; + case 'LPPCLS': + if ($CONTEXTE == "PRESTATION") { + $field = "lpp_section"; + } + break; + case 'UCD': + if ($CONTEXTE == "PRESTATION") { + $field = "ucd"; + } + break; + case 'UC1': + if ($CONTEXTE == "PRESTATION") { + $field = "ucd_classification_atc_1"; + } + break; + case 'UC2': + if ($CONTEXTE == "PRESTATION") { + $field = "ucd_classification_atc_2"; + } + break; + case 'UC3': + if ($CONTEXTE == "PRESTATION") { + $field = "ucd_classification_atc_3"; + } + break; + case 'UC4': + if ($CONTEXTE == "PRESTATION") { + $field = "ucd_classification_atc_4"; + } + break; + case 'UC5': + if ($CONTEXTE == "PRESTATION") { + $field = "ucd_classification_atc"; + } + break; + case 'UCDCLS': + if ($CONTEXTE == "PRESTATION") { + $field = "ucd_section"; + } + break; + default: + $field = $DEFAULT; + } + return $field; + } + + + + function ACTI_MOUVEMENT_prefixe($GROUPBY, $DEFAULT="") { + if (substr($GROUPBY,3,3) == 'CLS') { + $GROUPBY = substr($GROUPBY,0,6); + } + $field = ''; + $field_id = ''; + $field_code = ''; + $field_texte = ''; + switch ($GROUPBY) { + case '*TAB': + $field = "*TAB"; + break; + case '-1': + $field = ""; + break; + case 'SER': + $field = "lieu_service"; + break; + case 'SERCLS': + $field = "lieu_service_section"; + break; + case 'ACT': + $field = "lieu_activite"; + break; + case 'ACTCLS': + $field = "lieu_activite_section"; + break; + case 'ETA': + $field = "lieu_etage"; + break; + case 'ETACLS': + $field = "lieu_etage_section"; + break; + case 'LIT': + $field = "lieu_lit"; + break; + case 'LITCLS': + $field = "lieu_lit_section"; + break; + case 'GIR': + $field = "lieu_gir"; + break; + case 'GIRCLS': + $field = "lieu_gir_section"; + break; + case 'UM': + $field = "lieu_unite_medicale"; + break; + case 'UMDCLS': + $field = "lieu_unite_medicale_section"; + break; + case 'UF': + $field = "lieu_unite_fonctionnelle"; + break; + case 'UFTCLS': + $field = "lieu_unite_fonctionnelle_section"; + break; + case 'SPM': + $field = "medecin_mouvement_specialite"; + break; + case 'MED': + $field = "medecin_mouvement"; + break; + case 'MDA': + $field = "medecin_adm_mouvement"; + break; + case 'MDACLS': + $field = "medecin_adm_mouvement_section"; + break; + case 'ANNEE':case 'ANNEEA': + $field = "CALC_ANNEE"; + break; + case 'MOIS':case 'MOISA': + $field = "CALC_MOIS"; + break; + case 'TRIM':case 'TRIMA': + $field = "CALC_TRIM"; + break; + case 'JOUR':case 'JOURA': + $field = "CALC_JOUR"; + break; + case 'JOURS':case 'JOURSA': + $field = "CALC_JOURS"; + break; + case 'NUMEROSEMAINE':case 'NUMEROSEMAINEA': + $field = "CALC_NUMEROSEMAINE"; + break; + case 'NUMEROTRIM':case 'NUMEROTRIMA': + $field = "CALC_NUMEROTRIM"; + break; + case 'NUMEROJOUR':case 'NUMEROJOURA': + $field = "CALC_NUMEROJOUR"; + break; + case 'SEMAINEWE': + $field = "CALC_SEMAINEWE"; + break; + case 'NUMEROMOIS':case 'NUMEROMOISA': + $field = "CALC_NUMEROMOIS"; + break; + + default: + $field = $DEFAULT; + } + return $field; + + $prefixe = ''; + $groupby = '[GROUPBY]'; + if ($groupby == '-1') {$groupby = '[GROUPBY_2]';} + + $cls6 = substr($groupby, 0 , 6); + $cls7 = substr($groupby, 6 , 1); + + + } + + function ACTI_MOUVEMENT_field_id($GROUPBY, $DEFAULT="") { + + $field = ""; + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, "", "OCCUPATION"); + if ($prefixe == "") { + $prefixe = ACTI_MOUVEMENT_prefixe($GROUPBY, $DEFAULT); + } + + // Classes nouvelle sauce (avec les tableaux d'oid, de codes et de textes) + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY,6); + $group = substr($GROUPBY,0,6); + $field = "$prefixe" . "_id[" . $section . "]"; + } + if ($field == '') { + switch ($prefixe) { + case "": + $field = "0"; + break; + case "*TAB": + $field = "-9999999"; + break; + case "v_sejours_1.duree" : + $field = $prefixe; + break; + case "v_sejours_1.code_sexe" : + $field = $prefixe; + break; + case "provenance" : + $field = "mode_entree_id + provenance_id"; + break; + case "destination" : + $field = "mode_sortie_id + destination_id"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date)"; + break; + case "CALC_MOIS": + $field = "v_mouvements_sejour_2.mois"; + break; + case "CALC_TRIM": + $field = "(EXTRACT(YEAR FROM date) * 10) + EXTRACT(QUARTER FROM date)"; + break; + case "CALC_JOUR": + $field = "EXTRACT(YEAR FROM date) * 10000 + EXTRACT(MONTH FROM date) * 100 + EXTRACT(DAY FROM date)"; + break; + case "CALC_JOURS": + $field = "EXTRACT(MONTH FROM date) * 100 + EXTRACT(DAY FROM date)"; + break; + case "CALC_NUMEROSEMAINE": + $field = "EXTRACT(WEEK FROM date)"; + break; + case "CALC_NUMEROTRIM": + $field = "EXTRACT(QUARTER FROM date)"; + break; + case "CALC_NUMEROJOUR": + $field = "jour_semaine"; + break; + case "CALC_SEMAINEWE": + $field = "is_weekend"; + break; + case "CALC_NUMEROMOIS": + $field = "EXTRACT(MONTH FROM date)"; + break; + default: + $field = "$prefixe" . "_id"; + } + } + return $field; + } + + function ACTI_MOUVEMENT_field_code($GROUPBY, $DEFAULT="") { + + $field = ''; + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, "", "OCCUPATION"); + if ($prefixe == "") { + $prefixe = ACTI_MOUVEMENT_prefixe($GROUPBY, $DEFAULT=""); + } + + // Classes d'age nouvelle sauce (avec les tableaux d'oid, de codes et de textes) + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY,6); + $group = substr($GROUPBY,0,6); + $field = "$prefixe" . "_code[" . $section . "]"; + } + if ($field == '') { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "' Résumé'"; + break; + case "v_sejours_1.duree" : + $field = "lpad($prefixe, 4, '0')"; + break; + case "v_sejours_1.code_sexe" : + $field = "v_sejours_1.sexe_texte_court"; + break; + case "provenance" : + $field = "mode_entree_code::text || provenance_code::text"; + break; + case "destination" : + $field = "mode_sortie_code::text || destination_code::text"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date)"; + break; + case "CALC_MOIS": + $field = "v_mouvements_sejour_2.mois"; + break; + case "CALC_TRIM": + $field = "EXTRACT(YEAR FROM date)::text || ' T' || EXTRACT(QUARTER FROM date)::text"; + break; + case "CALC_JOUR": + $field = "v_mouvements_sejour_2.date::text"; + break; + case "CALC_JOURS": + $field = "to_char(v_mouvements_sejour_2.date, 'MM') ||'-'|| to_char(v_mouvements_sejour_2.date, 'DD')"; + break; + case "CALC_NUMEROTRIM": + $field = "'T' || EXTRACT(QUARTER FROM date)::text"; + break; + case "CALC_NUMEROJOUR": + $field = "jour_semaine"; + break; + case "CALC_SEMAINEWE": + $field = "(CASE WHEN is_weekend = 1 THEN 'WE' ELSE 'SEM' END)"; + break; + case "CALC_NUMEROSEMAINE": + $field = "'S' || lpad(EXTRACT(WEEK FROM date)::text, 2, '0')"; + break; + case "CALC_NUMEROMOIS": + $field = "base.cti_extract('MONTH_CODE', date)"; + break; + case "v_sejours_1.sejour" : + $field = "v_sejours_1.no_sejour"; + break; + default: + $field = "$prefixe" . "_code"; + } + } + return $field; + } + + function ACTI_MOUVEMENT_field_texte($GROUPBY, $DEFAULT="") { + + $field = ''; + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, "", "OCCUPATION"); + if ($prefixe == "") { + $prefixe = ACTI_MOUVEMENT_prefixe($GROUPBY, $DEFAULT=""); + } + + // Classes d'age nouvelle sauce (avec les tableaux d'oid, de codes et de textes) + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY,6); + $group = substr($GROUPBY,0,6); + $field = "$prefixe" . "_texte[" . $section . "]"; + } + if ($field == '') { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "'Résumé'"; + break; + case "v_sejours_1.duree" : + $field = $prefixe . " || CASE WHEN $prefixe < 2 THEN ' jour' ELSE ' jours' END"; + break; + case "provenance" : + $field = "mode_entree_texte || ' - ' || provenance_texte"; + break; + case "destination" : + $field = "mode_sortie_texte || ' - ' || destination_texte"; + break; + case "v_sejours_1.code_sexe" : + $field = " CASE WHEN v_sejours_1.code_sexe = '1' THEN 'Masculin' WHEN v_sejours_1.code_sexe = '2' THEN 'Feminin' ELSE 'Autres' END "; + break; + case "medecin_mouvement": + $field = "$prefixe" . "_nom_prenom"; + break; + case "medecin_adm_mouvement": + $field = "$prefixe" . "_nom_prenom"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date)"; + break; + case "CALC_MOIS": + $field = "CASE substr(v_mouvements_sejour_2.mois , 5 , 2) + WHEN '01' THEN 'Janvier' + WHEN '02' THEN 'Fevrier' + WHEN '03' THEN 'Mars' + WHEN '04' THEN 'Avril' + WHEN '05' THEN 'Mai' + WHEN '06' THEN 'Juin' + WHEN '07' THEN 'Juillet' + WHEN '08' THEN 'Aout' + WHEN '09' THEN 'Septembre' + WHEN '10' THEN 'Octobre' + WHEN '11' THEN 'Novembre' + WHEN '12' THEN 'Decembre' + ELSE '?' + END + || ' ' || substr(v_mouvements_sejour_2.mois , 1 , 4)"; + break; + case "CALC_TRIM": + $field = "EXTRACT(YEAR FROM date)::text || ' Trimestre ' || EXTRACT(QUARTER FROM date)::text"; + break; + case "CALC_JOUR": + $field = "base.cti_to_char(v_mouvements_sejour_2.date, 'FF')"; + break; + case "CALC_JOURS": + $field = "to_char(v_mouvements_sejour_2.date, 'DD') ||' '|| + CASE date_part('month',v_mouvements_sejour_2.date) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + "; + break; + case "CALC_NUMEROTRIM": + $field = "'Trimestre ' || EXTRACT(QUARTER FROM date)::text"; + break; + case "CALC_NUMEROSEMAINE": + $field = "'Semaine ' || lpad(EXTRACT(WEEK FROM date)::text, 2, '0')"; + break; + case "CALC_NUMEROJOUR": + $field = "CASE + WHEN jour_semaine = 1 THEN 'Lundi' + WHEN jour_semaine = 2 THEN 'Mardi' + WHEN jour_semaine = 3 THEN 'Mercredi' + WHEN jour_semaine = 4 THEN 'Jeudi' + WHEN jour_semaine = 5 THEN 'Vendredi' + WHEN jour_semaine = 6 THEN 'Samedi' + WHEN jour_semaine = 7 THEN 'Dimanche' + ELSE '?' + END"; + break; + case "CALC_SEMAINEWE": + $field = "(CASE WHEN is_weekend = 1 THEN 'Week-end' ELSE 'Semaine' END)"; + break; + case "CALC_NUMEROMOIS": + $field = "base.cti_extract('MONTH_TEXT', date)"; + break; + case "v_sejours_1.sejour" : + $field = "v_sejours_1.no_sejour"; + break; + default: + $field = "$prefixe" . "_texte"; + } + } + return $field; + } + + function ACTI_MOUVEMENT_param_data($LS_DATA, $LS_DATA_COL, $DATA, $DEFAULT="", $CASE="", $PERIODE,$TOPERIODE) { + + $wdata = $DATA; + if ($LS_DATA != "-1") { + $wdata_array_1 = explode("=",$LS_DATA); + $wdata_array_2 = $wdata_array_1[1]; + $wdata_array = explode(",",$wdata_array_2); + + $wdata = $wdata_array[$LS_DATA_COL-1]; + } + if($wdata != ""){ + return ACTI_MOUVEMENT_data($wdata, $DEFAULT="", $CASE="", $PERIODE,$TOPERIODE); + } + } + + function ACTI_MOUVEMENT_data($DATA, $DEFAULT="", $CASE="", $PERIODE, $TOPERIODE) { + $case_when = ""; + $case_else = ""; + if ($CASE != "") { + $case_when = "CASE WHEN $CASE THEN"; + $case_else = "ELSE null END"; + } + switch ($DATA) { + case 'NED': + return "SUM($case_when nb_entrees_directes $case_else)"; + break; + case 'NEM': + return "SUM($case_when nb_entrees_directes + nb_entrees_mutation_[VIEW.MUTATION_FIELD] $case_else)"; + break; + case 'NSD': + return "SUM($case_when nb_sorties_directes $case_else)"; + break; + case 'NSM': + return "SUM($case_when nb_sorties_directes + nb_sorties_mutation_[VIEW.MUTATION_FIELD] $case_else)"; + break; + case 'NJN': + return "SUM($case_when [VIEW.JOURNEES_FIELD] $case_else)"; + break; + case 'NJNS': + return "SUM($case_when nb_jour_sejour_sorti $case_else)"; + break; + case 'NEX': + return "SUM($case_when nb_externes $case_else)"; + break; + case 'NPX': + return "SUM($case_when nb_passage_externe $case_else)"; + break; + case 'NAM': + return "SUM($case_when nb_ambulatoires $case_else)"; + break; + case 'NEDA': + return "SUM($case_when nb_entrees_directes + nb_ambulatoires $case_else)"; + break; + case 'NSDA': + return "SUM($case_when nb_sorties_directes + nb_ambulatoires $case_else)"; + break; + case 'NEDXA': + return "SUM($case_when nb_entrees_directes + nb_externes + nb_ambulatoires $case_else)"; + break; + case 'NSDAM': + return "SUM($case_when nb_sorties_directes + nb_sorties_mutation_[VIEW.MUTATION_FIELD] + nb_ambulatoires $case_else)"; + break; + case 'NSDXA': + return "SUM($case_when nb_sorties_directes + nb_externes + nb_ambulatoires $case_else)"; + break; + case 'NSDXBB': + return "SUM($case_when nb_sorties_directes + nb_bebes + nb_ambulatoires $case_else)"; + break; + case 'NJNXA': + return "SUM($case_when [VIEW.JOURNEES_FIELD] + nb_externes + nb_ambulatoires $case_else)"; + break; + case 'NEDXAS': + return "SUM($case_when nb_entrees_directes + nb_externes + nb_ambulatoires + nb_seances $case_else)"; + break; + case 'NSDXAS': + return "SUM($case_when nb_sorties_directes + nb_externes + nb_ambulatoires + nb_seances_dans_taux $case_else)"; + break; + case 'NSDXASSH': + return "SUM($case_when nb_sorties_directes + nb_externes + nb_ambulatoires + CASE WHEN type_sejour = '5' THEN nb_seances ELSE 0 END $case_else)"; + break; + case 'NJNXAS': + return "SUM($case_when [VIEW.JOURNEES_FIELD] + nb_externes + nb_ambulatoires + nb_seances_dans_taux $case_else)"; + break; + case 'NSE': + return "SUM($case_when nb_seances $case_else)"; + break; + case 'NSEDIA': + return "SUM($case_when nb_seances_dialyse $case_else)"; + break; + case 'NSECHM': + return "SUM($case_when nb_seances_chimio $case_else)"; + break; + case 'NSEDIV': + return "SUM($case_when nb_seances_autre $case_else)"; + break; + case 'NBB': + return "SUM($case_when nb_bebes $case_else)"; + break; + case 'NBP': + return "COUNT(DISTINCT $case_when no_patient $case_else)"; + break; + case 'NCP': + return "SUM($case_when [VIEW.CP_FIELD] $case_else)"; + break; + case 'NJO': + return "COUNT(*)"; + break; + case 'NJNM': + return "SUM($case_when [VIEW.JOURNEES_FIELD] $case_else)"; + break; + case 'NEXM': + return "SUM($case_when nb_externes $case_else)"; + break; + case 'NAMM': + return "SUM($case_when nb_ambulatoires $case_else)"; + break; + case 'NSEM': + return "base.cti_division(SUM(nb_seances), MAX(date(date)) - MIN(date(date)) + 1)"; + break; + case 'NSEMDIA': + return "base.cti_division(SUM(nb_seances_dialyse), MAX(date(date)) - MIN(date(date)) + 1)"; + break; + case 'NSEMCHI': + return "base.cti_division(SUM(nb_seances_chimio), MAX(date(date)) - MIN(date(date)) + 1)"; + break; + case 'NSEMAUT': + return "base.cti_division(SUM(nb_seances_autre), MAX(date(date)) - MIN(date(date)) + 1)"; + break; + case 'NJNXAM': + return "SUM($case_when [VIEW.JOURNEES_FIELD] + nb_externes + nb_ambulatoires $case_else)"; + break; + case 'TAU': + return "SUM($case_when [VIEW.JOURNEES_FIELD] + nb_ambulatoires + nb_seances_dans_taux $case_else)"; + break; + case 'TAUHOSPI': + return "SUM($case_when [VIEW.JOURNEES_FIELD] $case_else)"; + break; + case 'TAUAMBU': + return "SUM($case_when nb_ambulatoires $case_else)"; + break; + case 'NJNAS': + return "SUM($case_when [VIEW.JOURNEES_FIELD] + nb_ambulatoires + nb_seances_dans_taux $case_else)"; + break; + case 'NAD': + return "COUNT(DISTINCT $case_when CASE WHEN v_sejours_1.date_entree BETWEEN '$PERIODE'::date AND '$TOPERIODE'::date THEN v_sejours_1.no_sejour ELSE null END $case_else)"; + break; + case 'NADPRE': + return "COUNT(DISTINCT $case_when CASE WHEN v_sejours_1.date_entree < '$PERIODE'::date THEN v_sejours_1.no_sejour ELSE null END $case_else)"; + break; + case 'NSEJ': + return "COUNT(DISTINCT $case_when v_sejours_1.no_sejour $case_else)"; + break; + case 'NNONSOR': + return "COUNT(DISTINCT $case_when CASE WHEN code_sorti = 0 THEN v_sejours_1.no_sejour ELSE null END $case_else)"; + break; + case 'NSHP': + return "COUNT(DISTINCT $case_when CASE WHEN v_sejours_1.date_sortie > '$TOPERIODE'::date AND v_sejours_1.code_sorti = 1 THEN v_sejours_1.no_sejour ELSE null END $case_else)"; + break; + case 'NFULL': + return "COUNT(DISTINCT $case_when CASE WHEN v_sejours_1.date_entree BETWEEN '$PERIODE'::date AND '$TOPERIODE'::date AND v_sejours_1.date_sortie BETWEEN '$PERIODE'::date AND '$TOPERIODE'::date THEN v_sejours_1.no_sejour ELSE null END $case_else)"; + break; + case 'NSFAC': + return "COUNT(DISTINCT CASE WHEN date_sortie <= '$TOPERIODE'::date AND code_sorti = '1' AND v_mouvements_sejour_2.est_facture = '1' THEN v_sejours_1.no_sejour ELSE NULL END)"; + break; + case 'NSNFAC': + return "COUNT(DISTINCT CASE WHEN date_sortie <= '$TOPERIODE'::date AND code_sorti = '1' AND v_mouvements_sejour_2.est_facture = '0' THEN v_sejours_1.no_sejour ELSE NULL END)"; + break; + case 'JRNSORFAC': + return "SUM($case_when CASE WHEN date_sortie <= '$TOPERIODE'::date AND v_mouvements_sejour_2.est_facture = '1' THEN [VIEW.JOURNEES_FIELD] ELSE null END $case_else)"; + break; + case 'JRNSORHONFAC': + return "SUM($case_when CASE WHEN date_sortie <= '$TOPERIODE'::date AND v_mouvements_sejour_2.est_facture = '1' THEN [VIEW.JOURNEES_FIELD] + nb_ambulatoires + nb_seances_dans_taux ELSE null END $case_else)"; + break; + case 'DMSHES': + return "base.cti_division(SUM($case_when CASE WHEN type_sejour = '1' AND nb_sorties_directes = 1 THEN duree ELSE 0 END $case_else), SUM($case_when nb_sorties_directes $case_else))"; + break; + case 'DMSHON': + return "base.cti_division(SUM($case_when CASE WHEN type_sejour = '1' AND nb_sorties_directes = 1 THEN duree WHEN type_sejour = '2' THEN nb_ambulatoires WHEN type_sejour = '5' THEN nb_seances ELSE 0 END $case_else), SUM($case_when CASE WHEN v_sejours_1.date_sortie BETWEEN '$PERIODE'::date AND '$TOPERIODE'::date AND nb_sorties_directes + nb_ambulatoires + nb_seances_dans_taux > 0 THEN 1 ELSE 0 END $case_else))"; + break; + case 'URG': + return "SUM($case_when nb_urgences $case_else)"; + break; + case 'EMC': + return "SUM($case_when equivalent_malade_complet $case_else)"; + break; + case 'PCP': + return "SUM($case_when [VIEW.CP_FIELD] $case_else)"; + break; + case 'GMP': + return "base.cti_division( + SUM($case_when gir_gmp_base*gir_gmp_coefficient $case_else), + SUM($case_when gir_gmp_base $case_else) + )"; + break; + + default: + return "0"; + } + + } + + + + function ACTI_PLACES_prefixe($GROUPBY, $DEFAULT="") { + if (substr($GROUPBY,3,3) == 'CLS') { + $GROUPBY = substr($GROUPBY,0,6); + } + $field = ''; + $field_id = ''; + $field_code = ''; + $field_texte = ''; + + switch ($GROUPBY) { + case '*TAB': + $field = "*TAB"; + break; + case '-1': + $field = ""; + break; + case 'TSE': + $field = "type_sejour"; + break; + case 'TSECLS': + $field = "type_sejour_section"; + break; + case 'ETA': + $field = "etage"; + break; + case 'ETACLS': + $field = "etage_section"; + break; + case 'POL': + $field = "pole"; + break; + case 'POLCLS': + $field = "pole_section"; + break; + case 'SER': + $field = "service"; + break; + case 'SERCLS': + $field = "service_section"; + break; + case 'UF': + $field = "uf"; + break; + case 'UFTCLS': + $field = "uf_section"; + break; + case 'UM': + $field = "um"; + break; + case 'UMDCLS': + $field = "um_section"; + break; + case 'MTR': + $field = "mode_traitement"; + break; + case 'FIN': + $field = "finess"; + break; + case 'FINCLS': + $field = "finess_section"; + break; + case 'ANNEE': + $field = "CALC_ANNEE"; + break; + case 'MOIS': + $field = "CALC_MOIS"; + break; + case 'TRIM': + $field = "CALC_TRIM"; + break; + case 'JOUR': + $field = "CALC_JOUR"; + break; + case 'NUMEROTRIM': + $field = "CALC_NUMEROTRIM"; + break; + case 'NUMEROSEMAINE': + $field = "CALC_NUMEROSEMAINE"; + break; + case 'NUMEROJOUR': + $field = "CALC_NUMEROJOUR"; + break; + case 'SEMAINEWE': + $field = "CALC_SEMAINEWE"; + break; + case 'NUMEROMOIS': + $field = "CALC_NUMEROMOIS"; + break; + default: + $field = $DEFAULT; + } + return $field; + + } + + function ACTI_PLACES_field_id($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_PLACES_prefixe($GROUPBY, $DEFAULT); + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_id[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "0"; + break; + case "*TAB": + $field = "-9999999"; + break; + case '-111': + $field = "-111"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date)"; + break; + case "CALC_MOIS": + $field = "EXTRACT(YEAR FROM date) * 100 + EXTRACT(MONTH FROM date)"; + break; + case "CALC_TRIM": + $field = "(EXTRACT(YEAR FROM date) * 10) + EXTRACT(QUARTER FROM date)"; + break; + case "CALC_JOUR": + $field = "EXTRACT(YEAR FROM date) * 10000 + EXTRACT(MONTH FROM date) * 100 + EXTRACT(DAY FROM date)"; + break; + case "CALC_NUMEROTRIM": + $field = "EXTRACT(QUARTER FROM date)"; + break; + case "CALC_NUMEROSEMAINE": + $field = "EXTRACT(WEEK FROM date)"; + break; + case "CALC_NUMEROJOUR": + $field = "jour_semaine"; + break; + case "CALC_SEMAINEWE": + $field = "is_weekend"; + break; + case "CALC_NUMEROMOIS": + $field = "EXTRACT(MONTH FROM date)"; + break; + default: + $field = "$prefixe" . "_id"; + } + } + return $field; + } + + function ACTI_PLACES_field_code($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_PLACES_prefixe($GROUPBY, $DEFAULT); + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_code[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "' Résumé'"; + break; + case '-111': + $field = "-111"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date)"; + break; + case "CALC_MOIS": + $field = "EXTRACT(YEAR FROM date) * 100 + EXTRACT(MONTH FROM date)"; + break; + case "CALC_TRIM": + $field = "EXTRACT(YEAR FROM date)::text || ' T' || EXTRACT(QUARTER FROM date)::text"; + break; + case "CALC_JOUR": + $field = "date::text"; + break; + case "CALC_NUMEROTRIM": + $field = "'T' || EXTRACT(QUARTER FROM date)::text"; + break; + case "CALC_NUMEROSEMAINE": + $field = "'S' || lpad(EXTRACT(WEEK FROM date)::text, 2, '0')"; + break; + case "CALC_NUMEROJOUR": + $field = "jour_semaine"; + break; + case "CALC_SEMAINEWE": + $field = "(CASE WHEN is_weekend = 1 THEN 'WE' ELSE 'SEM' END)"; + break; + case "CALC_NUMEROMOIS": + $field = "base.cti_extract('MONTH_CODE', date)"; + break; + default: + $field = "$prefixe" . "_code"; + } + } + return $field; + } + + function ACTI_PLACES_field_texte($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_PLACES_prefixe($GROUPBY, $DEFAULT); + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_texte[" . $section . "]"; + } + else { + + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "'Résumé'"; + break; + case '-111': + $field = "-111"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date)"; + break; + case "CALC_MOIS": + $field = "base.cti_extract('MONTH_TEXT', date)::text + || ' ' || EXTRACT(YEAR FROM date)::text"; + break; + case "CALC_TRIM": + $field = "EXTRACT(YEAR FROM date)::text || ' Trimestre ' || EXTRACT(QUARTER FROM date)::text"; + break; + case "CALC_JOUR": + $field = "base.cti_to_char(date, 'FF')"; + break; + case "CALC_NUMEROTRIM": + $field = "'Trimestre ' || EXTRACT(QUARTER FROM date)::text"; + break; + case "CALC_NUMEROSEMAINE": + $field = "'Semaine ' || lpad(EXTRACT(WEEK FROM date)::text, 2, '0')"; + break; + case "CALC_NUMEROJOUR": + $field = "CASE + WHEN jour_semaine = 1 THEN 'Lundi' + WHEN jour_semaine = 2 THEN 'Mardi' + WHEN jour_semaine = 3 THEN 'Mercredi' + WHEN jour_semaine = 4 THEN 'Jeudi' + WHEN jour_semaine = 5 THEN 'Vendredi' + WHEN jour_semaine = 6 THEN 'Samedi' + WHEN jour_semaine = 7 THEN 'Dimanche' + ELSE '?' + END"; + break; + case "CALC_SEMAINEWE": + $field = "(CASE WHEN is_weekend = 1 THEN 'Week-end' ELSE 'Semaine' END)"; + break; + case "CALC_NUMEROMOIS": + $field = "base.cti_extract('MONTH_TEXT', date)"; + break; + default: + $field = "$prefixe" . "_texte"; + } + } + return $field; + } + + function ACTI_OCCUPATION_BLOC_field_id($GROUPBY, $DEFAULT="") { + + $field = ""; + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, "", "OCCUPATION"); + if ($prefixe == "") { + $prefixe = ACTI_MOUVEMENT_prefixe($GROUPBY, $DEFAULT); + } + + // Classes nouvelle sauce (avec les tableaux d'oid, de codes et de textes) + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY,6); + $group = substr($GROUPBY,0,6); + $field = "$prefixe" . "_id[" . $section . "]"; + } + if ($field == '') { + switch ($prefixe) { + case "": + $field = "0"; + break; + case "*TAB": + $field = "-9999999"; + break; + + default: + $field = "$prefixe" . "_id"; + } + } + return $field; + } + + function ACTI_OCCUPATION_BLOC_field_code($GROUPBY, $DEFAULT="") { + + $field = ''; + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, "", "OCCUPATION"); + if ($prefixe == "") { + $prefixe = ACTI_MOUVEMENT_prefixe($GROUPBY, $DEFAULT=""); + } + + // Classes d'age nouvelle sauce (avec les tableaux d'oid, de codes et de textes) + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY,6); + $group = substr($GROUPBY,0,6); + $field = "$prefixe" . "_code[" . $section . "]"; + } + if ($field == '') { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "' Résumé'"; + break; + + default: + $field = "$prefixe" . "_code"; + } + } + return $field; + } + + function ACTI_OCCUPATION_BLOC_field_texte($GROUPBY, $DEFAULT="") { + + $field = ''; + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, "", "OCCUPATION"); + if ($prefixe == "") { + $prefixe = ACTI_MOUVEMENT_prefixe($GROUPBY, $DEFAULT=""); + } + + // Classes d'age nouvelle sauce (avec les tableaux d'oid, de codes et de textes) + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY,6); + $group = substr($GROUPBY,0,6); + $field = "$prefixe" . "_texte[" . $section . "]"; + } + if ($field == '') { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "'Résumé'"; + break; + + default: + $field = "$prefixe" . "_texte"; + } + } + return $field; + } + + function ACTI_OCCUPATION_BLOC_data($DATA, $DEFAULT="", $CASE="", $PERIODE="", $TOPERIODE="") { + $case_when = ""; + $case_else = ""; + if ($CASE != "") { + $case_when = "CASE WHEN $CASE THEN"; + $case_else = "ELSE null END"; + } + switch ($DATA) { + case 'NBINT': + return "SUM($case_when nb_intervention $case_else)"; + break; + case 'DUSAL': + return "SUM($case_when duree_salle $case_else)"; + break; + case 'DURET': + return "SUM($case_when duree_remise_en_etat $case_else)"; + break; + case 'DUTOT': + return "SUM($case_when duree_total $case_else)"; + break; + case 'DUDBT': + return "SUM($case_when duree_debordement $case_else)"; + break; + case 'DUDIS': + return "SUM($case_when duree_disponible $case_else)"; + break; + case 'TXOCC': + return "base.cti_division( + SUM($case_when duree_occupation*100 $case_else), + SUM($case_when duree_disponible $case_else) + )"; + break; + + default: + return $DEFAULT; + } + + } + + + + function ACTI_PRESTATION_prefixe($GROUPBY, $DEFAULT="") { + if (substr($GROUPBY,3,3) == 'CLS') { + $GROUPBY = substr($GROUPBY,0,6); + } + $field = ''; + $field_id = ''; + $field_code = ''; + $field_texte = ''; + switch ($GROUPBY) { + case '*TAB': + $field = "*TAB"; + break; + case '-1': + $field = ""; + break; + + case 'PRF': + $field = "prestation"; + break; + case 'PRFCLS': + $field = "prestation_section"; + break; + case 'RUF': + $field = "rubrique_facturation"; + break; + case 'RUFCLS': + $field = "rubrique_facturation_section"; + break; + case 'RUC': + $field = "rubrique_comptabilisation"; + break; + case 'RUCCLS': + $field = "rubrique_comptabilisation_section"; + break; + case 'SER': + $field = "lieu_ligne_service"; + break; + case 'SERCLS': + $field = "lieu_ligne_service_section"; + break; + case 'ACT': + $field = "lieu_ligne_activite"; + break; + case 'ETA': + $field = "lieu_ligne_etage"; + break; + case 'ETACLS': + $field = "lieu_ligne_etage_section"; + break; + case 'LIT': + $field = "lieu_ligne_lit"; + break; + case 'LITCLS': + $field = "lieu_ligne_lit_section"; + break; + case 'UM': + $field = "lieu_ligne_unite_medicale"; + break; + case 'UMDCLS': + $field = "lieu_ligne_unite_medicale_section"; + break; + case 'UF': + $field = "lieu_ligne_unite_fonctionnelle"; + break; + case 'UFTCLS': + $field = "lieu_ligne_unite_fonctionnelle_section"; + break; + case 'SPM': + $field = "medecin_sejour_specialite"; + break; + case 'MED': + $field = "medecin_sejour"; + break; + case 'MDA': + $field = "medecin_adm_sejour"; + break; + case 'MDACLS': + $field = "medecin_adm_sejour_section"; + break; + case 'MTA': + $field = "medecin_traitant"; + break; + case 'MTACLS': + $field = "medecin_traitant_section"; + break; + case 'MOIA': + $field = "CALC_MOIA"; + break; + case 'MOIS': + $field = "CALC_MOIS"; + break; + case 'ANNEE': + $field = "CALC_ANNEE"; + break; + case 'NUMEROMOIS': + $field = "CALC_NUMEROMOIS"; + break; + case 'TRIM': + $field = "CALC_TRIM"; + break; + case 'JOUR': + $field = "CALC_JOUR"; + break; + case 'JOURS': + $field = "CALC_JOURS"; + break; + case 'NUMEROTRIM': + $field = "CALC_NUMEROTRIM"; + break; + case 'NUMEROJOUR': + $field = "CALC_NUMEROJOUR"; + break; + case 'SEMAINEWE': + $field = "CALC_SEMAINEWE"; + break; + case 'SEMAINEANNE': + $field = "CALC_SEMAINEANNE"; + break; + + case 'MOISF': + $field = "CALC_MOISF"; + break; + case 'ANNEEF': + $field = "CALC_ANNEEF"; + break; + case 'NUMEROMOISF': + $field = "CALC_NUMEROMOISF"; + break; + case 'TRIMF': + $field = "CALC_TRIMF"; + break; + case 'JOURF': + $field = "CALC_JOURF"; + break; + case 'JOURSF': + $field = "CALC_JOURSF"; + break; + case 'NUMEROTRIMF': + $field = "CALC_NUMEROTRIMF"; + break; + case 'NUMEROJOURF': + $field = "CALC_NUMEROJOURF"; + break; + case 'SEMAINEWEF': + $field = "CALC_SEMAINEWEF"; + break; + case 'SEMAINEANNEF': + $field = "CALC_SEMAINEANNEF"; + break; + case 'MOISA': + $field = "CALC_MOISA"; + break; + case 'ANNEEA': + $field = "CALC_ANNEEA"; + break; + case 'NUMEROMOISA': + $field = "CALC_NUMEROMOISA"; + break; + case 'TRIMA': + $field = "CALC_TRIMA"; + break; + case 'JOURA': + $field = "CALC_JOURA"; + break; + case 'JOURSA': + $field = "CALC_JOURSA"; + break; + case 'NUMEROTRIMA': + $field = "CALC_NUMEROTRIMA"; + break; + case 'NUMEROJOURA': + $field = "CALC_NUMEROJOURA"; + break; + case 'SEMAINEWEA': + $field = "CALC_SEMAINEWEA"; + break; + case 'SEMAINEANNEA': + $field = "CALC_SEMAINEANNEA"; + break; + + case 'MOISV': + $field = "CALC_MOISV"; + break; + case 'ANNEEV': + $field = "CALC_ANNEEV"; + break; + case 'NUMEROMOISV': + $field = "CALC_NUMEROMOISV"; + break; + case 'TRIMV': + $field = "CALC_TRIMV"; + break; + case 'JOURV': + $field = "CALC_JOURV"; + break; + case 'JOURSV': + $field = "CALC_JOURSV"; + break; + case 'NUMEROTRIMV': + $field = "CALC_NUMEROTRIMV"; + break; + case 'NUMEROJOURV': + $field = "CALC_NUMEROJOURV"; + break; + case 'SEMAINEWEV': + $field = "CALC_SEMAINEWEV"; + break; + case 'SEMAINEANNEV': + $field = "CALC_SEMAINEANNEV"; + break; + + default: + $field = $DEFAULT; + } + return $field; + + $prefixe = ''; + $groupby = '[GROUPBY]'; + if ($groupby == '-1') {$groupby = '[GROUPBY_2]';} + + $cls6 = substr($groupby, 0 , 6); + $cls7 = substr($groupby, 6 , 1); + + + } + + function ACTI_PRESTATION_field_id($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "PRESTATION"); + if ($prefixe == "") { + $prefixe = ACTI_PRESTATION_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_id[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "0"; + break; + case "*TAB": + $field = "-9999999"; + break; + case "CALC_MOIA": + $field = "v_factures_lignes_c_4.mois_fin"; + break; + case 'CALC_ANNEE': + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOIS': + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'MM')"; + break; + case 'CALC_TRIM': + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'YYYYQ')"; + break; + case 'CALC_NUMEROTRIM': + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'Q')"; + break; + case 'CALC_NUMEROJOUR': + $field = "CASE extract(DOW FROM v_factures_lignes_c_4.date_fin_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_c_4.date_fin_facture) END"; + break; + case 'CALC_JOUR': + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'YYYYMMDD')"; + break; + case 'CALC_JOURS': + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'MMDD')"; + break; + case "CALC_MOIS": + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'YYYYMM')"; + break; + case 'CALC_SEMAINEWE': + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'W')"; + break; + case 'CALC_SEMAINEANNE': + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'WW')"; + break; + + case 'CALC_ANNEEF': + $field = "to_char(v_factures_lignes_c_4.date_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOISF': + $field = "to_char(v_factures_lignes_c_4.date_facture, 'MM')"; + break; + case 'CALC_TRIMF': + $field = "to_char(v_factures_lignes_c_4.date_facture, 'YYYYQ')"; + break; + case 'CALC_NUMEROTRIMF': + $field = "to_char(v_factures_lignes_c_4.date_facture, 'Q')"; + break; + case 'CALC_NUMEROJOURF': + $field = "CASE extract(DOW FROM v_factures_lignes_c_4.date_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_c_4.date_facture) END"; + break; + case 'CALC_JOURF': + $field = "to_char(v_factures_lignes_c_4.date_facture, 'YYYYMMDD')"; + break; + case 'CALC_JOURSF': + $field = "to_char(v_factures_lignes_c_4.date_facture, 'MMDD')"; + break; + case 'CALC_SEMAINEWEF': + $field = "to_char(v_factures_lignes_c_4.date_facture, 'W')"; + break; + case 'CALC_SEMAINEANNEF': + $field = "to_char(v_factures_lignes_c_4.date_facture, 'WW')"; + break; + case "CALC_MOISF": + $field = "to_char(v_factures_lignes_c_4.date_facture, 'YYYYMM')"; + break; + + case 'CALC_ANNEEA': + $field = "to_char(v_factures_lignes_c_4.date_fin, 'YYYY')"; + break; + case 'CALC_NUMEROMOISA': + $field = "to_char(v_factures_lignes_c_4.date_fin, 'MM')"; + break; + case 'CALC_TRIMA': + $field = "to_char(v_factures_lignes_c_4.date_fin, 'YYYYQ')"; + break; + case 'CALC_NUMEROTRIMA': + $field = "to_char(v_factures_lignes_c_4.date_fin, 'Q')"; + break; + case 'CALC_NUMEROJOURA': + $field = "CASE extract(DOW FROM v_factures_lignes_c_4.date_fin) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_c_4.date_fin) END"; + break; + case 'CALC_JOURA': + $field = "to_char(v_factures_lignes_c_4.date_fin, 'YYYYMMDD')"; + break; + case 'CALC_JOURSA': + $field = "to_char(v_factures_lignes_c_4.date_fin, 'MMDD')"; + break; + case 'CALC_SEMAINEWEA': + $field = "to_char(v_factures_lignes_c_4.date_fin, 'W')"; + break; + case 'CALC_SEMAINEANNEA': + $field = "to_char(v_factures_lignes_c_4.date_fin, 'WW')"; + break; + case "CALC_MOISA": + $field = "to_char(v_factures_lignes_c_4.date_fin, 'YYYYMM')"; + break; + + case 'CALC_ANNEEV': + $field = "to_char(v_factures_lignes_c_4.date_vente, 'YYYY')"; + break; + case 'CALC_NUMEROMOISV': + $field = "to_char(v_factures_lignes_c_4.date_vente, 'MM')"; + break; + case 'CALC_TRIMV': + $field = "to_char(v_factures_lignes_c_4.date_vente, 'YYYYQ')"; + break; + case 'CALC_NUMEROTRIMV': + $field = "to_char(v_factures_lignes_c_4.date_vente, 'Q')"; + break; + case 'CALC_NUMEROJOURV': + $field = "CASE extract(DOW FROM v_factures_lignes_c_4.date_vente) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_c_4.date_vente) END"; + break; + case 'CALC_JOURV': + $field = "to_char(v_factures_lignes_c_4.date_vente, 'YYYYMMDD')"; + break; + case 'CALC_JOURSV': + $field = "to_char(v_factures_lignes_c_4.date_vente, 'MMDD')"; + break; + case 'CALC_SEMAINEWEV': + $field = "to_char(v_factures_lignes_c_4.date_vente, 'W')"; + break; + case 'CALC_SEMAINEANNEV': + $field = "to_char(v_factures_lignes_c_4.date_vente, 'WW')"; + break; + case "CALC_MOISV": + $field = "to_char(v_factures_lignes_c_4.date_vente, 'YYYYMM')"; + break; + default: + $field = "$prefixe" . "_id"; + } + } + return $field; + } + + function ACTI_PRESTATION_field_code($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "PRESTATION"); + if ($prefixe == "") { + $prefixe = ACTI_PRESTATION_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_code[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "' Résumé'"; + break; + case "CALC_MOIA": + $field = "v_factures_lignes_c_4.mois_fin"; + break; + case 'CALC_ANNEE': + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOIS': + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'MM')"; + break; + case 'CALC_TRIM': + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'YYYY') ||' T'|| to_char(v_factures_lignes_c_4.date_fin_facture, 'Q') "; + break; + case 'CALC_NUMEROTRIM': + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'Q')"; + break; + case 'CALC_NUMEROJOUR': + $field = "CASE extract(DOW FROM v_factures_lignes_c_4.date_fin_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_c_4.date_fin_facture) END"; + break; + case 'CALC_SEMAINEWE': + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'W')"; + break; + case 'CALC_SEMAINEANNE': + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'WW')"; + break; + case 'CALC_JOUR': + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'YYYY') ||'-'|| to_char(v_factures_lignes_c_4.date_fin_facture, 'MM') ||'-'||to_char(v_factures_lignes_c_4.date_fin_facture, 'DD')"; + break; + case 'CALC_JOURS': + $field = " to_char(v_factures_lignes_c_4.date_fin_facture, 'MM') ||'-'|| to_char(v_factures_lignes_c_4.date_fin_facture, 'DD') "; + break; + case "CALC_MOIS": + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'YYYYMM')"; + break; + case 'CALC_ANNEEF': + $field = "to_char(v_factures_lignes_c_4.date_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOISF': + $field = "to_char(v_factures_lignes_c_4.date_facture, 'MM')"; + break; + case 'CALC_TRIMF': + $field = "to_char(v_factures_lignes_c_4.date_facture, 'YYYY') ||' T'|| to_char(v_factures_lignes_c_4.date_facture, 'Q') "; + break; + case 'CALC_NUMEROTRIMF': + $field = "to_char(v_factures_lignes_c_4.date_facture, 'Q')"; + break; + case 'CALC_NUMEROJOURF': + $field = "CASE extract(DOW FROM v_factures_lignes_c_4.date_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_c_4.date_facture) END"; + break; + case 'CALC_SEMAINEWEF': + $field = "to_char(v_factures_lignes_c_4.date_facture, 'W')"; + break; + case 'CALC_SEMAINEANNEF': + $field = "to_char(v_factures_lignes_c_4.date_facture, 'WW')"; + break; + case 'CALC_JOURF': + $field = "to_char(v_factures_lignes_c_4.date_facture, 'YYYY') ||'-'|| to_char(v_factures_lignes_c_4.date_facture, 'MM') ||'-'||to_char(v_factures_lignes_c_4.date_facture, 'DD')"; + break; + case 'CALC_JOURSF': + $field = " to_char(v_factures_lignes_c_4.date_facture, 'MM') ||'-'|| to_char(v_factures_lignes_c_4.date_facture, 'DD') "; + break; + case "CALC_MOISF": + $field = "to_char(v_factures_lignes_c_4.date_facture, 'YYYYMM')"; + break; + + case 'CALC_ANNEEA': + $field = "to_char(v_factures_lignes_c_4.date_fin, 'YYYY')"; + break; + case 'CALC_NUMEROMOISA': + $field = "to_char(v_factures_lignes_c_4.date_fin, 'MM')"; + break; + case 'CALC_TRIMA': + $field = "to_char(v_factures_lignes_c_4.date_fin, 'YYYY') ||' T'|| to_char(v_factures_lignes_c_4.date_fin, 'Q') "; + break; + case 'CALC_NUMEROTRIMA': + $field = "to_char(v_factures_lignes_c_4.date_fin, 'Q')"; + break; + case 'CALC_NUMEROJOURA': + $field = "CASE extract(DOW FROM v_factures_lignes_c_4.date_fin) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_c_4.date_fin) END"; + break; + case 'CALC_SEMAINEWEA': + $field = "to_char(v_factures_lignes_c_4.date_fin, 'W')"; + break; + case 'CALC_SEMAINEANNEA': + $field = "to_char(v_factures_lignes_c_4.date_fin, 'WW')"; + break; + case 'CALC_JOURA': + $field = "to_char(v_factures_lignes_c_4.date_fin, 'YYYY') ||'-'|| to_char(v_factures_lignes_c_4.date_fin, 'MM') ||'-'||to_char(v_factures_lignes_c_4.date_fin, 'DD')"; + break; + case 'CALC_JOURSA': + $field = " to_char(v_factures_lignes_c_4.date_fin, 'MM') ||'-'|| to_char(v_factures_lignes_c_4.date_fin, 'DD') "; + break; + case "CALC_MOISA": + $field = "to_char(v_factures_lignes_c_4.date_fin, 'YYYYMM')"; + break; + + case 'CALC_ANNEEV': + $field = "to_char(v_factures_lignes_c_4.date_vente, 'YYYY')"; + break; + case 'CALC_NUMEROMOISV': + $field = "to_char(v_factures_lignes_c_4.date_vente, 'MM')"; + break; + case 'CALC_TRIMV': + $field = "to_char(v_factures_lignes_c_4.date_vente, 'YYYY') ||' T'|| to_char(v_factures_lignes_c_4.date_vente, 'Q') "; + break; + case 'CALC_NUMEROTRIMV': + $field = "to_char(v_factures_lignes_c_4.date_vente, 'Q')"; + break; + case 'CALC_NUMEROJOURV': + $field = "CASE extract(DOW FROM v_factures_lignes_c_4.date_vente) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_c_4.date_vente) END"; + break; + case 'CALC_SEMAINEWEV': + $field = "to_char(v_factures_lignes_c_4.date_vente, 'W')"; + break; + case 'CALC_SEMAINEANNEV': + $field = "to_char(v_factures_lignes_c_4.date_vente, 'WW')"; + break; + case 'CALC_JOURV': + $field = "to_char(v_factures_lignes_c_4.date_vente, 'YYYY') ||'-'|| to_char(v_factures_lignes_c_4.date_vente, 'MM') ||'-'||to_char(v_factures_lignes_c_4.date_vente, 'DD')"; + break; + case 'CALC_JOURSV': + $field = " to_char(v_factures_lignes_c_4.date_vente, 'MM') ||'-'|| to_char(v_factures_lignes_c_4.date_vente, 'DD') "; + break; + case "CALC_MOISV": + $field = "to_char(v_factures_lignes_c_4.date_vente, 'YYYYMM')"; + break; + default: + $field = "$prefixe" . "_code"; + } + } + return $field; + } + + function ACTI_PRESTATION_field_texte($GROUPBY, $DEFAULT="") { + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "PRESTATION"); + if ($prefixe == "") { + $prefixe = ACTI_PRESTATION_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_texte[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "'Résumé'"; + break; + case "medecin_adm_sejour": + $field = "$prefixe" . "_nom_prenom"; + break; + case "medecin_sejour": + $field = "$prefixe" . "_nom_prenom"; + break; + case "medecin_traitant": + $field = "$prefixe" . "_nom_prenom"; + break; + case "CALC_ANNEE": + $field = "to_char(v_factures_lignes_c_4.date_fin_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOIS': + $field = "CASE date_part('month',v_factures_lignes_c_4.date_fin_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END"; + break; + case 'CALC_TRIM': + $field = "date_part('year',v_factures_lignes_c_4.date_fin_facture) ||'-'|| + CASE to_char(v_factures_lignes_c_4.date_fin_facture, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROTRIM': + $field = "CASE to_char(v_factures_lignes_c_4.date_fin_facture, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROJOUR': + $field = "CASE CASE extract(DOW FROM v_factures_lignes_c_4.date_fin_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_c_4.date_fin_facture) END + WHEN 1 THEN 'Lundi' + WHEN 2 THEN 'Mardi' + WHEN 3 THEN 'Mercredi' + WHEN 4 THEN 'Jeudi' + WHEN 5 THEN 'Vendredi' + WHEN 6 THEN 'Samedi' + WHEN 7 THEN 'Dimanche' + ELSE '?' + END"; + break; + case 'CALC_JOUR': + $field = "base.cti_to_char(v_factures_lignes_c_4.date_fin_facture, 'FF')"; + break; + case 'CALC_JOURS': + $field = "base.cti_to_char(v_factures_lignes_c_4.date_fin_facture, 'DD') ||' '|| + CASE date_part('month',v_factures_lignes_c_4.date_fin_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + + "; + break; + + case 'CALC_SEMAINEANNE': + $field = " 'Semaine '||' '|| to_char(v_factures_lignes_c_4.date_fin_facture, 'WW') + + "; + break; + case 'CALC_SEMAINEWE': + $field = "CASE to_char(v_factures_lignes_c_4.date_fin_facture, 'W') + WHEN 1 THEN 'Semaine 1' + WHEN 2 THEN 'Semaine 2' + WHEN 3 THEN 'Semaine 3' + WHEN 4 THEN 'Semaine 4' + WHEN 5 THEN 'Semaine 5' + ELSE '?' + END"; + break; + case "CALC_MOIS": + $field = "CASE date_part('month',v_factures_lignes_c_4.date_fin_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',v_factures_lignes_c_4.date_fin_facture)"; + break; + case "CALC_ANNEEF": + $field = "to_char(v_factures_lignes_c_4.date_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOISF': + $field = "CASE date_part('month',v_factures_lignes_c_4.date_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END"; + break; + case 'CALC_TRIMF': + $field = "date_part('year',v_factures_lignes_c_4.date_facture) ||'-'|| + CASE to_char(v_factures_lignes_c_4.date_facture, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROTRIMF': + $field = "CASE to_char(v_factures_lignes_c_4.date_facture, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROJOURF': + $field = "CASE CASE extract(DOW FROM v_factures_lignes_c_4.date_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_c_4.date_facture) END + WHEN 1 THEN 'Lundi' + WHEN 2 THEN 'Mardi' + WHEN 3 THEN 'Mercredi' + WHEN 4 THEN 'Jeudi' + WHEN 5 THEN 'Vendredi' + WHEN 6 THEN 'Samedi' + WHEN 7 THEN 'Dimanche' + ELSE '?' + END"; + break; + case 'CALC_JOURF': + $field = "base.cti_to_char(v_factures_lignes_c_4.date_facture, 'FF')"; + break; + case 'CALC_JOURSF': + $field = "base.cti_to_char(v_factures_lignes_c_4.date_facture, 'DD') ||' '|| + CASE date_part('month',v_factures_lignes_c_4.date_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + + "; + break; + + case 'CALC_SEMAINEANNEF': + $field = " 'Semaine '||' '|| to_char(v_factures_lignes_c_4.date_facture, 'WW') + + "; + break; + case 'CALC_SEMAINEWEF': + $field = "CASE to_char(v_factures_lignes_c_4.date_facture, 'W') + WHEN 1 THEN 'Semaine 1' + WHEN 2 THEN 'Semaine 2' + WHEN 3 THEN 'Semaine 3' + WHEN 4 THEN 'Semaine 4' + WHEN 5 THEN 'Semaine 5' + ELSE '?' + END"; + break; + case "CALC_MOISF": + $field = "CASE date_part('month',v_factures_lignes_c_4.date_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',v_factures_lignes_c_4.date_facture)"; + break; + + case "CALC_ANNEEA": + $field = "to_char(v_factures_lignes_c_4.date_fin, 'YYYY')"; + break; + case 'CALC_NUMEROMOISA': + $field = "CASE date_part('month',v_factures_lignes_c_4.date_fin) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END"; + break; + case 'CALC_TRIMA': + $field = "date_part('year',v_factures_lignes_c_4.date_fin) ||'-'|| + CASE to_char(v_factures_lignes_c_4.date_fin, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROTRIMA': + $field = "CASE to_char(v_factures_lignes_c_4.date_fin, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROJOURA': + $field = "CASE CASE extract(DOW FROM v_factures_lignes_c_4.date_fin) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_c_4.date_fin) END + WHEN 1 THEN 'Lundi' + WHEN 2 THEN 'Mardi' + WHEN 3 THEN 'Mercredi' + WHEN 4 THEN 'Jeudi' + WHEN 5 THEN 'Vendredi' + WHEN 6 THEN 'Samedi' + WHEN 7 THEN 'Dimanche' + ELSE '?' + END"; + break; + case 'CALC_JOURA': + $field = "base.cti_to_char(v_factures_lignes_c_4.date_fin, 'FF')"; + break; + case 'CALC_JOURSA': + $field = "base.cti_to_char(v_factures_lignes_c_4.date_fin, 'DD') ||' '|| + CASE date_part('month',v_factures_lignes_c_4.date_fin) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + + "; + break; + + case 'CALC_SEMAINEANNEA': + $field = " 'Semaine '||' '|| to_char(v_factures_lignes_c_4.date_fin, 'WW') + + "; + break; + case 'CALC_SEMAINEWEA': + $field = "CASE to_char(v_factures_lignes_c_4.date_fin, 'W') + WHEN 1 THEN 'Semaine 1' + WHEN 2 THEN 'Semaine 2' + WHEN 3 THEN 'Semaine 3' + WHEN 4 THEN 'Semaine 4' + WHEN 5 THEN 'Semaine 5' + ELSE '?' + END"; + break; + case "CALC_MOISA": + $field = "CASE date_part('month',v_factures_lignes_c_4.date_fin) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',v_factures_lignes_c_4.date_fin)"; + break; + case "CALC_MOIA": + $field = "CASE substr(v_factures_lignes_c_4.date_fin, 5 , 2) + WHEN '01' THEN 'Janvier' + WHEN '02' THEN 'Fevrier' + WHEN '03' THEN 'Mars' + WHEN '04' THEN 'Avril' + WHEN '05' THEN 'Mai' + WHEN '06' THEN 'Juin' + WHEN '07' THEN 'Juillet' + WHEN '08' THEN 'Aout' + WHEN '09' THEN 'Septembre' + WHEN '10' THEN 'Octobre' + WHEN '11' THEN 'Novembre' + WHEN '12' THEN 'Decembre' + ELSE '?' + END + || ' ' || substr(v_factures_lignes_c_4.date_fin, 1 , 4)"; + break; + + case "CALC_ANNEEV": + $field = "to_char(v_factures_lignes_c_4.date_vente, 'YYYY')"; + break; + case 'CALC_NUMEROMOISV': + $field = "CASE date_part('month',v_factures_lignes_c_4.date_vente) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END"; + break; + case 'CALC_TRIMV': + $field = "date_part('year',v_factures_lignes_c_4.date_vente) ||'-'|| + CASE to_char(v_factures_lignes_c_4.date_vente, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROTRIMV': + $field = "CASE to_char(v_factures_lignes_c_4.date_vente, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROJOURV': + $field = "CASE CASE extract(DOW FROM v_factures_lignes_c_4.date_vente) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_c_4.date_vente) END + WHEN 1 THEN 'Lundi' + WHEN 2 THEN 'Mardi' + WHEN 3 THEN 'Mercredi' + WHEN 4 THEN 'Jeudi' + WHEN 5 THEN 'Vendredi' + WHEN 6 THEN 'Samedi' + WHEN 7 THEN 'Dimanche' + ELSE '?' + END"; + break; + case 'CALC_JOURV': + $field = "base.cti_to_char(v_factures_lignes_c_4.date_vente, 'FF')"; + break; + case 'CALC_JOURSV': + $field = "base.cti_to_char(v_factures_lignes_c_4.date_vente, 'DD') ||' '|| + CASE date_part('month',v_factures_lignes_c_4.date_vente) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + + "; + break; + + case 'CALC_SEMAINEANNEV': + $field = " 'Semaine '||' '|| to_char(v_factures_lignes_c_4.date_vente, 'WW') + + "; + break; + case 'CALC_SEMAINEWEV': + $field = "CASE to_char(v_factures_lignes_c_4.date_vente, 'W') + WHEN 1 THEN 'Semaine 1' + WHEN 2 THEN 'Semaine 2' + WHEN 3 THEN 'Semaine 3' + WHEN 4 THEN 'Semaine 4' + WHEN 5 THEN 'Semaine 5' + ELSE '?' + END"; + break; + case "CALC_MOISV": + $field = "CASE date_part('month',v_factures_lignes_c_4.date_vente) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',v_factures_lignes_c_4.date_vente)"; + break; + case "CALC_MOIV": + $field = "CASE substr(v_factures_lignes_c_4.date_vente, 5 , 2) + WHEN '01' THEN 'Janvier' + WHEN '02' THEN 'Fevrier' + WHEN '03' THEN 'Mars' + WHEN '04' THEN 'Avril' + WHEN '05' THEN 'Mai' + WHEN '06' THEN 'Juin' + WHEN '07' THEN 'Juillet' + WHEN '08' THEN 'Aout' + WHEN '09' THEN 'Septembre' + WHEN '10' THEN 'Octobre' + WHEN '11' THEN 'Novembre' + WHEN '12' THEN 'Decembre' + ELSE '?' + END + || ' ' || substr(v_factures_lignes_c_4.date_vente, 1 , 4)"; + break; + + default: + $field = "$prefixe" . "_texte"; + } + } + return $field; + } + + function ACTI_PRESTATION_2_prefixe($GROUPBY, $DEFAULT="") { + if (substr($GROUPBY,3,3) == 'CLS') { + $GROUPBY = substr($GROUPBY,0,6); + } + $field = ''; + $field_id = ''; + $field_code = ''; + $field_texte = ''; + switch ($GROUPBY) { + case '*TAB': + $field = "*TAB"; + break; + case '-1': + $field = ""; + break; + case 'RUF': + $field = "CALC_ANNEE"; + break; + case 'ANNEE':case 'ANNEEA': + $field = "CALC_ANNEE"; + break; + case 'MOIS':case 'MOISA': + $field = "CALC_MOIS"; + break; + case 'TRIM':case 'TRIMA': + $field = "CALC_TRIM"; + break; + case 'JOUR':case 'JOURA': + $field = "CALC_JOUR"; + break; + case 'JOURS':case 'JOURSA': + $field = "CALC_JOURS"; + break; + case 'NUMEROSEMAINE':case 'NUMEROSEMAINEA': + $field = "CALC_NUMEROSEMAINE"; + break; + case 'NUMEROTRIM':case 'NUMEROTRIMA': + $field = "CALC_NUMEROTRIM"; + break; + case 'NUMEROJOUR':case 'NUMEROJOURA': + $field = "CALC_NUMEROJOUR"; + break; + case 'SEMAINEWE': + $field = "CALC_SEMAINEWE"; + break; + case 'NUMEROMOIS':case 'NUMEROMOISA': + $field = "CALC_NUMEROMOIS"; + break; + + default: + $field = $DEFAULT; + } + return $field; + + $prefixe = ''; + $groupby = '[GROUPBY]'; + if ($groupby == '-1') {$groupby = '[GROUPBY_2]';} + + $cls6 = substr($groupby, 0 , 6); + $cls7 = substr($groupby, 6 , 1); + + + } + + function ACTI_PRESTATION_2_field_id($GROUPBY, $DEFAULT="") { + + $prefixe =''; + if ($prefixe == "") { + $prefixe = ACTI_PRESTATION_2_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_id[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "0"; + break; + case "*TAB": + $field = "-9999999"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date)"; + break; + case "CALC_MOIS": + $field = "v_mouvements_sejour_2.mois"; + break; + case "CALC_TRIM": + $field = "(EXTRACT(YEAR FROM date) * 10) + EXTRACT(QUARTER FROM date)"; + break; + case "CALC_JOUR": + $field = "EXTRACT(YEAR FROM date) * 10000 + EXTRACT(MONTH FROM date) * 100 + EXTRACT(DAY FROM date)"; + break; + case "CALC_JOURS": + $field = "EXTRACT(MONTH FROM date) * 100 + EXTRACT(DAY FROM date)"; + break; + case "CALC_NUMEROSEMAINE": + $field = "EXTRACT(WEEK FROM date)"; + break; + case "CALC_NUMEROTRIM": + $field = "EXTRACT(QUARTER FROM date)"; + break; + case "CALC_NUMEROJOUR": + $field = "jour_semaine"; + break; + case "CALC_SEMAINEWE": + $field = "is_weekend"; + break; + case "CALC_NUMEROMOIS": + $field = "EXTRACT(MONTH FROM date)"; + break; + + default: + $field = "$prefixe" . "_id"; + } + } + return $field; + } + + function ACTI_PRESTATION_2_field_code($GROUPBY, $DEFAULT="") { + + $prefixe = ''; + if ($prefixe == "") { + $prefixe = ACTI_PRESTATION_2_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_code[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "' Résumé'"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date)"; + break; + case "CALC_MOIS": + $field = "v_mouvements_sejour_2.mois"; + break; + case "CALC_TRIM": + $field = "EXTRACT(YEAR FROM date)::text || ' T' || EXTRACT(QUARTER FROM date)::text"; + break; + case "CALC_JOUR": + $field = "v_mouvements_sejour_2.date::text"; + break; + case "CALC_JOURS": + $field = "to_char(v_mouvements_sejour_2.date, 'MM') ||'-'|| to_char(v_mouvements_sejour_2.date, 'DD')"; + break; + case "CALC_NUMEROTRIM": + $field = "'T' || EXTRACT(QUARTER FROM date)::text"; + break; + case "CALC_NUMEROJOUR": + $field = "jour_semaine"; + break; + case "CALC_SEMAINEWE": + $field = "(CASE WHEN is_weekend = 1 THEN 'WE' ELSE 'SEM' END)"; + break; + case "CALC_NUMEROSEMAINE": + $field = "'S' || lpad(EXTRACT(WEEK FROM date)::text, 2, '0')"; + break; + case "CALC_NUMEROMOIS": + $field = "base.cti_extract('MONTH_CODE', date)"; + break; + default: + $field = "$prefixe" . "_code"; + } + } + return $field; + } + + function ACTI_PRESTATION_2_field_texte($GROUPBY, $DEFAULT="") { + $prefixe = ''; + if ($prefixe == "") { + $prefixe = ACTI_PRESTATION_2_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_texte[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "'Résumé'"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date)"; + break; + case "CALC_MOIS": + $field = "CASE substr(v_mouvements_sejour_2.mois , 5 , 2) + WHEN '01' THEN 'Janvier' + WHEN '02' THEN 'Fevrier' + WHEN '03' THEN 'Mars' + WHEN '04' THEN 'Avril' + WHEN '05' THEN 'Mai' + WHEN '06' THEN 'Juin' + WHEN '07' THEN 'Juillet' + WHEN '08' THEN 'Aout' + WHEN '09' THEN 'Septembre' + WHEN '10' THEN 'Octobre' + WHEN '11' THEN 'Novembre' + WHEN '12' THEN 'Decembre' + ELSE '?' + END + || ' ' || substr(v_mouvements_sejour_2.mois , 1 , 4)"; + break; + case "CALC_TRIM": + $field = "EXTRACT(YEAR FROM date)::text || ' Trimestre ' || EXTRACT(QUARTER FROM date)::text"; + break; + case "CALC_JOUR": + $field = "base.cti_to_char(v_mouvements_sejour_2.date, 'FF')"; + break; + case "CALC_JOURS": + $field = "to_char(v_mouvements_sejour_2.date, 'DD') ||' '|| + CASE date_part('month',v_mouvements_sejour_2.date) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + "; + break; + case "CALC_NUMEROTRIM": + $field = "'Trimestre ' || EXTRACT(QUARTER FROM date)::text"; + break; + case "CALC_NUMEROSEMAINE": + $field = "'Semaine ' || lpad(EXTRACT(WEEK FROM date)::text, 2, '0')"; + break; + case "CALC_NUMEROJOUR": + $field = "CASE + WHEN jour_semaine = 1 THEN 'Lundi' + WHEN jour_semaine = 2 THEN 'Mardi' + WHEN jour_semaine = 3 THEN 'Mercredi' + WHEN jour_semaine = 4 THEN 'Jeudi' + WHEN jour_semaine = 5 THEN 'Vendredi' + WHEN jour_semaine = 6 THEN 'Samedi' + WHEN jour_semaine = 7 THEN 'Dimanche' + ELSE '?' + END"; + break; + case "CALC_SEMAINEWE": + $field = "(CASE WHEN is_weekend = 1 THEN 'Week-end' ELSE 'Semaine' END)"; + break; + case "CALC_NUMEROMOIS": + $field = "base.cti_extract('MONTH_TEXT', date)"; + break; + + + default: + $field = "$prefixe" . "_texte"; + } + } + return $field; + } + + function ACTI_PRESTATION_H_prefixe($GROUPBY, $DEFAULT="") { + if (substr($GROUPBY,3,3) == 'CLS') { + $GROUPBY = substr($GROUPBY,0,6); + } + $field = ''; + $field_id = ''; + $field_code = ''; + $field_texte = ''; + switch ($GROUPBY) { + case '*TAB': + $field = "*TAB"; + break; + case '-1': + $field = ""; + break; + + case 'ACTE': + $field = "v_factures_lignes_h_3.acte"; + break; + case 'ACXCLS': + $field = "v_factures_lignes_h_3.acte_section"; + break; + case 'ACTEREGR': + $field = "v_factures_lignes_h_3.ccam_regroupement"; + break; + case 'ACTECNOM': + $field = "v_factures_lignes_h_3.acte_nomenclature"; + break; + case 'PROT': + $field = "protocole"; + break; + case 'SPMF': + $field = "medecin_facture_specialite"; + break; + case 'EXEC': + $field = "medecin_comptabilise"; + break; + case 'EXAC': + $field = "medecin_adm_comptabilise"; + break; + case 'EXEF': + $field = "medecin_facture"; + break; + case 'EXAF': + $field = "medecin_adm_facture"; + break; + case 'EXACLS': + $field = "medecin_adm_facture_section"; + break; + case 'PRF': + $field = "v_factures_lignes_h_3.prestation"; + break; + case 'PRFCLS': + $field = "v_factures_lignes_h_3.prestation_section"; + break; + case 'RUF': + $field = "v_factures_lignes_h_3.rubrique_facturation"; + break; + case 'RUFCLS': + $field = "v_factures_lignes_h_3.rubrique_facturation_section"; + break; + case 'RUC': + $field = "v_factures_lignes_h_3.rubrique_comptabilisation"; + break; + case 'RUCCLS': + $field = "v_factures_lignes_h_3.rubrique_comptabilisation_section"; + break; + case 'SER': + $field = "lieu_ligne_service"; + break; + case 'SERCLS': + $field = "lieu_ligne_service_section"; + break; + case 'ACT': + $field = "lieu_ligne_activite"; + break; + case 'ETA': + $field = "lieu_ligne_etage"; + break; + case 'ETACLS': + $field = "lieu_ligne_etage_section"; + break; + case 'LIT': + $field = "lieu_ligne_lit"; + break; + case 'LITCLS': + $field = "lieu_ligne_lit_section"; + break; + case 'UM': + $field = "lieu_ligne_unite_medicale"; + break; + case 'UMDCLS': + $field = "lieu_ligne_unite_medicale_section"; + break; + case 'UF': + $field = "lieu_ligne_unite_fonctionnelle"; + break; + case 'UFTCLS': + $field = "lieu_ligne_unite_fonctionnelle_section"; + break; + case 'SPM': + $field = "medecin_sejour_specialite"; + break; + case 'MED': + $field = "medecin_sejour"; + break; + case 'MDA': + $field = "medecin_adm_sejour"; + break; + case 'MDACLS': + $field = "medecin_adm_sejour_section"; + break; + case 'MOIA': + $field = "CALC_MOIA"; + break; + case 'MOIS': + $field = "CALC_MOIS"; + break; + case 'ANNEE': + $field = "CALC_ANNEE"; + break; + case 'NUMEROMOIS': + $field = "CALC_NUMEROMOIS"; + break; + case 'TRIM': + $field = "CALC_TRIM"; + break; + case 'JOUR': + $field = "CALC_JOUR"; + break; + case 'JOURS': + $field = "CALC_JOURS"; + break; + case 'NUMEROTRIM': + $field = "CALC_NUMEROTRIM"; + break; + case 'NUMEROJOUR': + $field = "CALC_NUMEROJOUR"; + break; + case 'SEMAINEWE': + $field = "CALC_SEMAINEWE"; + break; + case 'SEMAINEANNE': + $field = "CALC_SEMAINEANNE"; + break; + + case 'MOISF': + $field = "CALC_MOISF"; + break; + case 'ANNEEF': + $field = "CALC_ANNEEF"; + break; + case 'NUMEROMOISF': + $field = "CALC_NUMEROMOISF"; + break; + case 'TRIMF': + $field = "CALC_TRIMF"; + break; + case 'JOURF': + $field = "CALC_JOURF"; + break; + case 'JOURSF': + $field = "CALC_JOURSF"; + break; + case 'NUMEROTRIMF': + $field = "CALC_NUMEROTRIMF"; + break; + case 'NUMEROJOURF': + $field = "CALC_NUMEROJOURF"; + break; + case 'SEMAINEWEF': + $field = "CALC_SEMAINEWEF"; + break; + case 'SEMAINEANNEF': + $field = "CALC_SEMAINEANNEF"; + break; + + case 'MOISA': + $field = "CALC_MOISA"; + break; + case 'ANNEEA': + $field = "CALC_ANNEEA"; + break; + case 'NUMEROMOISA': + $field = "CALC_NUMEROMOISA"; + break; + case 'TRIMA': + $field = "CALC_TRIMA"; + break; + case 'JOURA': + $field = "CALC_JOURA"; + break; + case 'JOURSA': + $field = "CALC_JOURSA"; + break; + case 'NUMEROTRIMA': + $field = "CALC_NUMEROTRIMA"; + break; + case 'NUMEROJOURA': + $field = "CALC_NUMEROJOURA"; + break; + case 'SEMAINEWEA': + $field = "CALC_SEMAINEWEA"; + break; + case 'SEMAINEANNEA': + $field = "CALC_SEMAINEANNEA"; + break; + + case 'MOISV': + $field = "CALC_MOISV"; + break; + case 'ANNEEV': + $field = "CALC_ANNEEV"; + break; + case 'NUMEROMOISV': + $field = "CALC_NUMEROMOISV"; + break; + case 'TRIMV': + $field = "CALC_TRIMV"; + break; + case 'JOURV': + $field = "CALC_JOURV"; + break; + case 'JOURSV': + $field = "CALC_JOURSV"; + break; + case 'NUMEROTRIMV': + $field = "CALC_NUMEROTRIMV"; + break; + case 'NUMEROJOURV': + $field = "CALC_NUMEROJOURV"; + break; + case 'SEMAINEWEV': + $field = "CALC_SEMAINEWEV"; + break; + case 'SEMAINEANNEV': + $field = "CALC_SEMAINEANNEV"; + break; + + default: + $field = $DEFAULT; + } + return $field; + + $prefixe = ''; + $groupby = '[GROUPBY]'; + if ($groupby == '-1') {$groupby = '[GROUPBY_2]';} + + $cls6 = substr($groupby, 0 , 6); + $cls7 = substr($groupby, 6 , 1); + + + } + + function ACTI_PRESTATION_H_field_id($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "PRESTATION_H"); + if ($prefixe == "") { + $prefixe = ACTI_PRESTATION_H_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_id[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "0"; + break; + case "*TAB": + $field = "-9999999"; + break; + case "CALC_MOIA": + $field = "v_factures_lignes_h_3.mois_fin"; + break; + case 'CALC_ANNEE': + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOIS': + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'MM')"; + break; + case 'CALC_TRIM': + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'YYYYQ')"; + break; + case 'CALC_NUMEROTRIM': + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'Q')"; + break; + case 'CALC_NUMEROJOUR': + $field = "CASE extract(DOW FROM v_factures_lignes_h_3.date_fin_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_h_3.date_fin_facture) END"; + break; + case 'CALC_JOUR': + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'YYYYMMDD')"; + break; + case 'CALC_JOURS': + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'MMDD')"; + break; + case "CALC_MOIS": + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'YYYYMM')"; + break; + case 'CALC_SEMAINEWE': + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'W')"; + break; + case 'CALC_SEMAINEANNE': + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'WW')"; + break; + + case 'CALC_ANNEEF': + $field = "to_char(v_factures_lignes_h_3.date_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOISF': + $field = "to_char(v_factures_lignes_h_3.date_facture, 'MM')"; + break; + case 'CALC_TRIMF': + $field = "to_char(v_factures_lignes_h_3.date_facture, 'YYYYQ')"; + break; + case 'CALC_NUMEROTRIMF': + $field = "to_char(v_factures_lignes_h_3.date_facture, 'Q')"; + break; + case 'CALC_NUMEROJOURF': + $field = "CASE extract(DOW FROM v_factures_lignes_h_3.date_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_h_3.date_facture) END"; + break; + case 'CALC_JOURF': + $field = "to_char(v_factures_lignes_h_3.date_facture, 'YYYYMMDD')"; + break; + case 'CALC_JOURSF': + $field = "to_char(v_factures_lignes_h_3.date_facture, 'MMDD')"; + break; + case 'CALC_SEMAINEWEF': + $field = "to_char(v_factures_lignes_h_3.date_facture, 'W')"; + break; + case 'CALC_SEMAINEANNEF': + $field = "to_char(v_factures_lignes_h_3.date_facture, 'WW')"; + break; + case "CALC_MOISF": + $field = "to_char(v_factures_lignes_h_3.date_facture, 'YYYYMM')"; + break; + + case 'CALC_ANNEEA': + $field = "to_char(v_factures_lignes_h_3.date_fin, 'YYYY')"; + break; + case 'CALC_NUMEROMOISA': + $field = "to_char(v_factures_lignes_h_3.date_fin, 'MM')"; + break; + case 'CALC_TRIMA': + $field = "to_char(v_factures_lignes_h_3.date_fin, 'YYYYQ')"; + break; + case 'CALC_NUMEROTRIMA': + $field = "to_char(v_factures_lignes_h_3.date_fin, 'Q')"; + break; + case 'CALC_NUMEROJOURA': + $field = "CASE extract(DOW FROM v_factures_lignes_h_3.date_fin) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_h_3.date_fin) END"; + break; + case 'CALC_JOURA': + $field = "to_char(v_factures_lignes_h_3.date_fin, 'YYYYMMDD')"; + break; + case 'CALC_JOURSA': + $field = "to_char(v_factures_lignes_h_3.date_fin, 'MMDD')"; + break; + case 'CALC_SEMAINEWEA': + $field = "to_char(v_factures_lignes_h_3.date_fin, 'W')"; + break; + case 'CALC_SEMAINEANNEA': + $field = "to_char(v_factures_lignes_h_3.date_fin, 'WW')"; + break; + case "CALC_MOISA": + $field = "to_char(v_factures_lignes_h_3.date_fin, 'YYYYMM')"; + break; + + case 'CALC_ANNEEV': + $field = "to_char(v_factures_lignes_h_3.date_vente, 'YYYY')"; + break; + case 'CALC_NUMEROMOISV': + $field = "to_char(v_factures_lignes_h_3.date_vente, 'MM')"; + break; + case 'CALC_TRIMV': + $field = "to_char(v_factures_lignes_h_3.date_vente, 'YYYYQ')"; + break; + case 'CALC_NUMEROTRIMV': + $field = "to_char(v_factures_lignes_h_3.date_vente, 'Q')"; + break; + case 'CALC_NUMEROJOURV': + $field = "CASE extract(DOW FROM v_factures_lignes_h_3.date_vente) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_h_3.date_vente) END"; + break; + case 'CALC_JOURV': + $field = "to_char(v_factures_lignes_h_3.date_vente, 'YYYYMMDD')"; + break; + case 'CALC_JOURSV': + $field = "to_char(v_factures_lignes_h_3.date_vente, 'MMDD')"; + break; + case 'CALC_SEMAINEWEV': + $field = "to_char(v_factures_lignes_h_3.date_vente, 'W')"; + break; + case 'CALC_SEMAINEANNEV': + $field = "to_char(v_factures_lignes_h_3.date_vente, 'WW')"; + break; + case "CALC_MOISV": + $field = "to_char(v_factures_lignes_h_3.date_vente, 'YYYYMM')"; + break; + default: + $field = "$prefixe" . "_id"; + } + } + return $field; + } + + function ACTI_PRESTATION_H_field_code($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "PRESTATION_H"); + if ($prefixe == "") { + $prefixe = ACTI_PRESTATION_H_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_code[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "' Résumé'"; + break; + case "CALC_MOIA": + $field = "v_factures_lignes_h_3.mois_fin"; + break; + case 'CALC_ANNEE': + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOIS': + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'MM')"; + break; + case 'CALC_TRIM': + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'YYYY') ||' T'|| to_char(v_factures_lignes_h_3.date_fin_facture, 'Q') "; + break; + case 'CALC_NUMEROTRIM': + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'Q')"; + break; + case 'CALC_NUMEROJOUR': + $field = "CASE extract(DOW FROM v_factures_lignes_h_3.date_fin_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_h_3.date_fin_facture) END"; + break; + case 'CALC_SEMAINEWE': + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'W')"; + break; + case 'CALC_SEMAINEANNE': + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'WW')"; + break; + case 'CALC_JOUR': + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'YYYY') ||'-'|| to_char(v_factures_lignes_h_3.date_fin_facture, 'MM') ||'-'||to_char(v_factures_lignes_h_3.date_fin_facture, 'DD')"; + break; + case 'CALC_JOURS': + $field = " to_char(v_factures_lignes_h_3.date_fin_facture, 'MM') ||'-'|| to_char(v_factures_lignes_h_3.date_fin_facture, 'DD') "; + break; + case "CALC_MOIS": + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'YYYYMM')"; + break; + case 'CALC_ANNEEF': + $field = "to_char(v_factures_lignes_h_3.date_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOISF': + $field = "to_char(v_factures_lignes_h_3.date_facture, 'MM')"; + break; + case 'CALC_TRIMF': + $field = "to_char(v_factures_lignes_h_3.date_facture, 'YYYY') ||' T'|| to_char(v_factures_lignes_h_3.date_facture, 'Q') "; + break; + case 'CALC_NUMEROTRIMF': + $field = "to_char(v_factures_lignes_h_3.date_facture, 'Q')"; + break; + case 'CALC_NUMEROJOURF': + $field = "CASE extract(DOW FROM v_factures_lignes_h_3.date_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_h_3.date_facture) END"; + break; + case 'CALC_SEMAINEWEF': + $field = "to_char(v_factures_lignes_h_3.date_facture, 'W')"; + break; + case 'CALC_SEMAINEANNEF': + $field = "to_char(v_factures_lignes_h_3.date_facture, 'WW')"; + break; + case 'CALC_JOURF': + $field = "to_char(v_factures_lignes_h_3.date_facture, 'YYYY') ||'-'|| to_char(v_factures_lignes_h_3.date_facture, 'MM') ||'-'||to_char(v_factures_lignes_h_3.date_facture, 'DD')"; + break; + case 'CALC_JOURSF': + $field = " to_char(v_factures_lignes_h_3.date_facture, 'MM') ||'-'|| to_char(v_factures_lignes_h_3.date_facture, 'DD') "; + break; + case "CALC_MOISF": + $field = "to_char(v_factures_lignes_h_3.date_facture, 'YYYYMM')"; + break; + + case 'CALC_ANNEEA': + $field = "to_char(v_factures_lignes_h_3.date_fin, 'YYYY')"; + break; + case 'CALC_NUMEROMOISA': + $field = "to_char(v_factures_lignes_h_3.date_fin, 'MM')"; + break; + case 'CALC_TRIMA': + $field = "to_char(v_factures_lignes_h_3.date_fin, 'YYYY') ||' T'|| to_char(v_factures_lignes_h_3.date_fin, 'Q') "; + break; + case 'CALC_NUMEROTRIMA': + $field = "to_char(v_factures_lignes_h_3.date_fin, 'Q')"; + break; + case 'CALC_NUMEROJOURA': + $field = "CASE extract(DOW FROM v_factures_lignes_h_3.date_fin) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_h_3.date_fin) END"; + break; + case 'CALC_SEMAINEWEA': + $field = "to_char(v_factures_lignes_h_3.date_fin, 'W')"; + break; + case 'CALC_SEMAINEANNEA': + $field = "to_char(v_factures_lignes_h_3.date_fin, 'WW')"; + break; + case 'CALC_JOURA': + $field = "to_char(v_factures_lignes_h_3.date_fin, 'YYYY') ||'-'|| to_char(v_factures_lignes_h_3.date_fin, 'MM') ||'-'||to_char(v_factures_lignes_h_3.date_fin, 'DD')"; + break; + case 'CALC_JOURSA': + $field = " to_char(v_factures_lignes_h_3.date_fin, 'MM') ||'-'|| to_char(v_factures_lignes_h_3.date_fin, 'DD') "; + break; + case "CALC_MOISA": + $field = "to_char(v_factures_lignes_h_3.date_fin, 'YYYYMM')"; + break; + + case 'CALC_ANNEEV': + $field = "to_char(v_factures_lignes_h_3.date_vente, 'YYYY')"; + break; + case 'CALC_NUMEROMOISV': + $field = "to_char(v_factures_lignes_h_3.date_vente, 'MM')"; + break; + case 'CALC_TRIMV': + $field = "to_char(v_factures_lignes_h_3.date_vente, 'YYYY') ||' T'|| to_char(v_factures_lignes_h_3.date_vente, 'Q') "; + break; + case 'CALC_NUMEROTRIMV': + $field = "to_char(v_factures_lignes_h_3.date_vente, 'Q')"; + break; + case 'CALC_NUMEROJOURV': + $field = "CASE extract(DOW FROM v_factures_lignes_h_3.date_vente) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_h_3.date_vente) END"; + break; + case 'CALC_SEMAINEWEV': + $field = "to_char(v_factures_lignes_h_3.date_vente, 'W')"; + break; + case 'CALC_SEMAINEANNEV': + $field = "to_char(v_factures_lignes_h_3.date_vente, 'WW')"; + break; + case 'CALC_JOURV': + $field = "to_char(v_factures_lignes_h_3.date_vente, 'YYYY') ||'-'|| to_char(v_factures_lignes_h_3.date_vente, 'MM') ||'-'||to_char(v_factures_lignes_h_3.date_vente, 'DD')"; + break; + case 'CALC_JOURSV': + $field = " to_char(v_factures_lignes_h_3.date_vente, 'MM') ||'-'|| to_char(v_factures_lignes_h_3.date_vente, 'DD') "; + break; + case "CALC_MOISV": + $field = "to_char(v_factures_lignes_h_3.date_vente, 'YYYYMM')"; + break; + default: + $field = "$prefixe" . "_code"; + } + } + return $field; + } + + function ACTI_PRESTATION_H_field_texte($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "PRESTATION_H"); + if ($prefixe == "") { + $prefixe = ACTI_PRESTATION_H_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_texte[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "'Résumé'"; + break; + case "medecin_adm_sejour": + $field = "$prefixe" . "_nom_prenom"; + break; + case "medecin_sejour": + $field = "$prefixe" . "_nom_prenom"; + break; + case "medecin_adm_comptabilise": + $field = "$prefixe" . "_nom_prenom"; + break; + case "medecin_comptabilise": + $field = "$prefixe" . "_nom_prenom"; + break; + case "medecin_adm_facture": + $field = "$prefixe" . "_nom_prenom"; + break; + case "medecin_facture": + $field = "$prefixe" . "_nom_prenom"; + break; + case "CALC_ANNEE": + $field = "to_char(v_factures_lignes_h_3.date_fin_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOIS': + $field = "CASE date_part('month',v_factures_lignes_h_3.date_fin_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END"; + break; + case 'CALC_TRIM': + $field = "date_part('year',v_factures_lignes_h_3.date_fin_facture) ||'-'|| + CASE to_char(v_factures_lignes_h_3.date_fin_facture, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROTRIM': + $field = "CASE to_char(v_factures_lignes_h_3.date_fin_facture, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROJOUR': + $field = "CASE CASE extract(DOW FROM v_factures_lignes_h_3.date_fin_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_h_3.date_fin_facture) END + WHEN 1 THEN 'Lundi' + WHEN 2 THEN 'Mardi' + WHEN 3 THEN 'Mercredi' + WHEN 4 THEN 'Jeudi' + WHEN 5 THEN 'Vendredi' + WHEN 6 THEN 'Samedi' + WHEN 7 THEN 'Dimanche' + ELSE '?' + END"; + break; + case 'CALC_JOUR': + $field = "base.cti_to_char(v_factures_lignes_h_3.date_fin_facture, 'FF')"; + break; + case 'CALC_JOURS': + $field = "base.cti_to_char(v_factures_lignes_h_3.date_fin_facture, 'DD') ||' '|| + CASE date_part('month',v_factures_lignes_h_3.date_fin_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + + "; + break; + + case 'CALC_SEMAINEANNE': + $field = " 'Semaine '||' '|| to_char(v_factures_lignes_h_3.date_fin_facture, 'WW') + + "; + break; + case 'CALC_SEMAINEWE': + $field = "CASE to_char(v_factures_lignes_h_3.date_fin_facture, 'W') + WHEN 1 THEN 'Semaine 1' + WHEN 2 THEN 'Semaine 2' + WHEN 3 THEN 'Semaine 3' + WHEN 4 THEN 'Semaine 4' + WHEN 5 THEN 'Semaine 5' + ELSE '?' + END"; + break; + case "CALC_MOIS": + $field = "CASE date_part('month',v_factures_lignes_h_3.date_fin_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',v_factures_lignes_h_3.date_fin_facture)"; + break; + case "CALC_ANNEEF": + $field = "to_char(v_factures_lignes_h_3.date_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOISF': + $field = "CASE date_part('month',v_factures_lignes_h_3.date_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END"; + break; + case 'CALC_TRIMF': + $field = "date_part('year',v_factures_lignes_h_3.date_facture) ||'-'|| + CASE to_char(v_factures_lignes_h_3.date_facture, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROTRIMF': + $field = "CASE to_char(v_factures_lignes_h_3.date_facture, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROJOURF': + $field = "CASE CASE extract(DOW FROM v_factures_lignes_h_3.date_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_h_3.date_facture) END + WHEN 1 THEN 'Lundi' + WHEN 2 THEN 'Mardi' + WHEN 3 THEN 'Mercredi' + WHEN 4 THEN 'Jeudi' + WHEN 5 THEN 'Vendredi' + WHEN 6 THEN 'Samedi' + WHEN 7 THEN 'Dimanche' + ELSE '?' + END"; + break; + case 'CALC_JOURF': + $field = "base.cti_to_char(v_factures_lignes_h_3.date_facture, 'FF')"; + break; + case 'CALC_JOURSF': + $field = "base.cti_to_char(v_factures_lignes_h_3.date_facture, 'DD') ||' '|| + CASE date_part('month',v_factures_lignes_h_3.date_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + + "; + break; + + case 'CALC_SEMAINEANNEF': + $field = " 'Semaine '||' '|| to_char(v_factures_lignes_h_3.date_facture, 'WW') + + "; + break; + case 'CALC_SEMAINEWEF': + $field = "CASE to_char(v_factures_lignes_h_3.date_facture, 'W') + WHEN 1 THEN 'Semaine 1' + WHEN 2 THEN 'Semaine 2' + WHEN 3 THEN 'Semaine 3' + WHEN 4 THEN 'Semaine 4' + WHEN 5 THEN 'Semaine 5' + ELSE '?' + END"; + break; + case "CALC_MOISF": + $field = "CASE date_part('month',v_factures_lignes_h_3.date_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',v_factures_lignes_h_3.date_facture)"; + break; + + case "CALC_ANNEEA": + $field = "to_char(v_factures_lignes_h_3.date_fin, 'YYYY')"; + break; + case 'CALC_NUMEROMOISA': + $field = "CASE date_part('month',v_factures_lignes_h_3.date_fin) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END"; + break; + case 'CALC_TRIMA': + $field = "date_part('year',v_factures_lignes_h_3.date_fin) ||'-'|| + CASE to_char(v_factures_lignes_h_3.date_fin, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROTRIMA': + $field = "CASE to_char(v_factures_lignes_h_3.date_fin, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROJOURA': + $field = "CASE CASE extract(DOW FROM v_factures_lignes_h_3.date_fin) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_h_3.date_fin) END + WHEN 1 THEN 'Lundi' + WHEN 2 THEN 'Mardi' + WHEN 3 THEN 'Mercredi' + WHEN 4 THEN 'Jeudi' + WHEN 5 THEN 'Vendredi' + WHEN 6 THEN 'Samedi' + WHEN 7 THEN 'Dimanche' + ELSE '?' + END"; + break; + case 'CALC_JOURA': + $field = "base.cti_to_char(v_factures_lignes_h_3.date_fin, 'FF')"; + break; + case 'CALC_JOURSA': + $field = "base.cti_to_char(v_factures_lignes_h_3.date_fin, 'DD') ||' '|| + CASE date_part('month',v_factures_lignes_h_3.date_fin) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + + "; + break; + + case 'CALC_SEMAINEANNEA': + $field = " 'Semaine '||' '|| to_char(v_factures_lignes_h_3.date_fin, 'WW') + + "; + break; + case 'CALC_SEMAINEWEA': + $field = "CASE to_char(v_factures_lignes_h_3.date_fin, 'W') + WHEN 1 THEN 'Semaine 1' + WHEN 2 THEN 'Semaine 2' + WHEN 3 THEN 'Semaine 3' + WHEN 4 THEN 'Semaine 4' + WHEN 5 THEN 'Semaine 5' + ELSE '?' + END"; + break; + case "CALC_MOISA": + $field = "CASE date_part('month',v_factures_lignes_h_3.date_fin) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',v_factures_lignes_h_3.date_fin)"; + break; + case "CALC_MOIA": + $field = "CASE substr(v_factures_lignes_h_3.date_fin, 5 , 2) + WHEN '01' THEN 'Janvier' + WHEN '02' THEN 'Fevrier' + WHEN '03' THEN 'Mars' + WHEN '04' THEN 'Avril' + WHEN '05' THEN 'Mai' + WHEN '06' THEN 'Juin' + WHEN '07' THEN 'Juillet' + WHEN '08' THEN 'Aout' + WHEN '09' THEN 'Septembre' + WHEN '10' THEN 'Octobre' + WHEN '11' THEN 'Novembre' + WHEN '12' THEN 'Decembre' + ELSE '?' + END + || ' ' || substr(v_factures_lignes_h_3.date_fin, 1 , 4)"; + break; + + case "CALC_ANNEEV": + $field = "to_char(v_factures_lignes_h_3.date_vente, 'YYYY')"; + break; + case 'CALC_NUMEROMOISV': + $field = "CASE date_part('month',v_factures_lignes_h_3.date_vente) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END"; + break; + case 'CALC_TRIMV': + $field = "date_part('year',v_factures_lignes_h_3.date_vente) ||'-'|| + CASE to_char(v_factures_lignes_h_3.date_vente, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROTRIMV': + $field = "CASE to_char(v_factures_lignes_h_3.date_vente, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROJOURV': + $field = "CASE CASE extract(DOW FROM v_factures_lignes_h_3.date_vente) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_lignes_h_3.date_vente) END + WHEN 1 THEN 'Lundi' + WHEN 2 THEN 'Mardi' + WHEN 3 THEN 'Mercredi' + WHEN 4 THEN 'Jeudi' + WHEN 5 THEN 'Vendredi' + WHEN 6 THEN 'Samedi' + WHEN 7 THEN 'Dimanche' + ELSE '?' + END"; + break; + case 'CALC_JOURV': + $field = "base.cti_to_char(v_factures_lignes_h_3.date_vente, 'FF')"; + break; + case 'CALC_JOURSV': + $field = "base.cti_to_char(v_factures_lignes_h_3.date_vente, 'DD') ||' '|| + CASE date_part('month',v_factures_lignes_h_3.date_vente) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + + "; + break; + + case 'CALC_SEMAINEANNEV': + $field = " 'Semaine '||' '|| to_char(v_factures_lignes_h_3.date_vente, 'WW') + + "; + break; + case 'CALC_SEMAINEWEV': + $field = "CASE to_char(v_factures_lignes_h_3.date_vente, 'W') + WHEN 1 THEN 'Semaine 1' + WHEN 2 THEN 'Semaine 2' + WHEN 3 THEN 'Semaine 3' + WHEN 4 THEN 'Semaine 4' + WHEN 5 THEN 'Semaine 5' + ELSE '?' + END"; + break; + case "CALC_MOISV": + $field = "CASE date_part('month',v_factures_lignes_h_3.date_vente) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',v_factures_lignes_h_3.date_vente)"; + break; + case "CALC_MOIV": + $field = "CASE substr(v_factures_lignes_h_3.date_vente, 5 , 2) + WHEN '01' THEN 'Janvier' + WHEN '02' THEN 'Fevrier' + WHEN '03' THEN 'Mars' + WHEN '04' THEN 'Avril' + WHEN '05' THEN 'Mai' + WHEN '06' THEN 'Juin' + WHEN '07' THEN 'Juillet' + WHEN '08' THEN 'Aout' + WHEN '09' THEN 'Septembre' + WHEN '10' THEN 'Octobre' + WHEN '11' THEN 'Novembre' + WHEN '12' THEN 'Decembre' + ELSE '?' + END + || ' ' || substr(v_factures_lignes_h_3.date_vente, 1 , 4)"; + break; + + default: + $field = "$prefixe" . "_texte"; + } + } + return $field; + } + + + function ACTI_ETATDOSSIER_prefixe($GROUPBY, $DEFAULT="") { + if (substr($GROUPBY,3,3) == 'CLS') { + $GROUPBY = substr($GROUPBY,0,6); + } + $field = ''; + $field_id = ''; + $field_code = ''; + $field_texte = ''; + switch ($GROUPBY) { + case '*TAB': + $field = "*TAB"; + break; + case '-1': + $field = ""; + break; + + case 'TPY': + $field = "v_factures_reference_1.tiers_payant"; + break; + case 'TRG': + $field = "v_factures_reference_1.tiers_payant_grand_regime"; + break; + case 'TPYCLS': + $field = "v_factures_reference_1.tiers_payant_section"; + break; + case 'TTP': + $field = "type_tiers_payant"; + break; + case 'SPM': + $field = "medecin_sejour_specialite"; + break; + case 'MED': + $field = "medecin_sejour"; + break; + case 'MDA': + $field = "medecin_adm_sejour"; + break; + case 'MDACLS': + $field = "medecin_adm_sejour_section"; + break; + case 'MTA': + $field = "medecin_traitant"; + break; + case 'MTACLS': + $field = "medecin_traitant_section"; + break; + case 'MOIV': + $field = "CALC_MOIV"; + break; + case 'MOIS': + $field = "CALC_MOIS"; + break; + case 'ANNEE': + $field = "CALC_ANNEE"; + break; + case 'NUMEROMOIS': + $field = "CALC_NUMEROMOIS"; + break; + case 'TRIM': + $field = "CALC_TRIM"; + break; + case 'JOUR': + $field = "CALC_JOUR"; + break; + case 'JOURS': + $field = "CALC_JOURS"; + break; + case 'NUMEROTRIM': + $field = "CALC_NUMEROTRIM"; + break; + case 'NUMEROJOUR': + $field = "CALC_NUMEROJOUR"; + break; + case 'SEMAINEWE': + $field = "CALC_SEMAINEWE"; + break; + case 'SEMAINEANNE': + $field = "CALC_SEMAINEANNE"; + break; + case 'MOISF': + $field = "CALC_MOISF"; + break; + case 'ANNEEF': + $field = "CALC_ANNEEF"; + break; + case 'NUMEROMOISF': + $field = "CALC_NUMEROMOISF"; + break; + case 'TRIMF': + $field = "CALC_TRIMF"; + break; + case 'JOURF': + $field = "CALC_JOURF"; + break; + case 'JOURSF': + $field = "CALC_JOURSF"; + break; + case 'NUMEROTRIMF': + $field = "CALC_NUMEROTRIMF"; + break; + case 'NUMEROJOURF': + $field = "CALC_NUMEROJOURF"; + break; + case 'SEMAINEWEF': + $field = "CALC_SEMAINEWEF"; + break; + case 'SEMAINEANNEF': + $field = "CALC_SEMAINEANNEF"; + break; + case 'MOISEX': + $field = "CALC_MOISEX"; + break; + case 'ANNEEEX': + $field = "CALC_ANNEEEX"; + break; + case 'NUMEROMOISEX': + $field = "CALC_NUMEROMOISEX"; + break; + case 'TRIMEX': + $field = "CALC_TRIMEX"; + break; + case 'JOUREX': + $field = "CALC_JOUREX"; + break; + case 'JOURSEX': + $field = "CALC_JOURSEX"; + break; + case 'NUMEROTRIMEX': + $field = "CALC_NUMEROTRIMEX"; + break; + case 'NUMEROJOUREX': + $field = "CALC_NUMEROJOUREX"; + break; + case 'SEMAINEWEEX': + $field = "CALC_SEMAINEWEEX"; + break; + case 'SEMAINEANNEEX': + $field = "CALC_SEMAINEANNEEX"; + break; + case 'SEXE': + $field = "v_sejours_1.code_sexe"; + break; + + + default: + $field = $DEFAULT; + } + return $field; + + $prefixe = ''; + $groupby = '[GROUPBY]'; + if ($groupby == '-1') {$groupby = '[GROUPBY_2]';} + + $cls6 = substr($groupby, 0 , 6); + $cls7 = substr($groupby, 6 , 1); + + + } + + function ACTI_ETATDOSSIER_field_id($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "ETATDOSSIER"); + if ($prefixe == "") { + $prefixe = ACTI_ETATDOSSIER_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_id[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "0"; + break; + case "*TAB": + $field = "-9999999"; + break; + case 'CALC_ANNEE': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOIS': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'MM')"; + break; + case 'CALC_TRIM': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYYQ')"; + break; + case 'CALC_NUMEROTRIM': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'Q')"; + break; + case 'CALC_NUMEROJOUR': + $field = "CASE extract(DOW FROM v_factures_reference_1.date_fin_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_reference_1.date_fin_facture) END"; + break; + case 'CALC_JOUR': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYYMMDD')"; + break; + case 'CALC_JOURS': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'MMDD')"; + break; + case "CALC_MOIS": + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYYMM')"; + break; + case 'CALC_SEMAINEWE': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'W')"; + break; + case 'CALC_SEMAINEANNE': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'WW')"; + break; + case 'CALC_ANNEEF': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOISF': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'MM')"; + break; + case 'CALC_TRIMF': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYYQ')"; + break; + case 'CALC_NUMEROTRIMF': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'Q')"; + break; + case 'CALC_NUMEROJOURF': + $field = "CASE extract(DOW FROM v_factures_reference_1.date_fin_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_reference_1.date_fin_facture) END"; + break; + case 'CALC_JOURF': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYYMMDD')"; + break; + case 'CALC_JOURSF': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'MMDD')"; + break; + case 'CALC_SEMAINEWEF': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'W')"; + break; + case 'CALC_SEMAINEANNEF': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'WW')"; + break; + case "CALC_MOISF": + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYYMM')"; + break; + case "CALC_MOIC": + $field = "to_char(v_factures_reference_1.date_comptable, 'YYYYMM')"; + break; + case 'CALC_ANNEEEX': + $field = "to_char(v_factures_reference_1.date_expedition, 'YYYY')"; + break; + case 'CALC_NUMEROMOISEX': + $field = "to_char(v_factures_reference_1.date_expedition, 'MM')"; + break; + case 'CALC_TRIMEX': + $field = "to_char(v_factures_reference_1.date_expedition, 'YYYYQ')"; + break; + case 'CALC_NUMEROTRIMEX': + $field = "to_char(v_factures_reference_1.date_expedition, 'Q')"; + break; + case 'CALC_NUMEROJOUREX': + $field = "CASE extract(DOW FROM v_factures_reference_1.date_expedition) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_reference_1.date_expedition) END"; + break; + case 'CALC_JOUREX': + $field = "to_char(v_factures_reference_1.date_expedition, 'YYYYMMDD')"; + break; + case 'CALC_JOURSEX': + $field = "to_char(v_factures_reference_1.date_expedition, 'MMDD')"; + break; + case 'CALC_SEMAINEWEEX': + $field = "to_char(v_factures_reference_1.date_expedition, 'W')"; + break; + case 'CALC_SEMAINEANNEEX': + $field = "to_char(v_factures_reference_1.date_expedition, 'WW')"; + break; + case "CALC_MOISEX": + $field = "to_char(v_factures_reference_1.date_expedition, 'YYYYMM')"; + break; + case "CALC_MOIV": + $field = "to_char(v_factures_reference_1.date_vente, 'YYYYMM')"; + break; + case 'v_sejours_1.code_sexe': + $field = "v_sejours_1.code_sexe"; + break; + default: + $field = "$prefixe" . "_id"; + } + } + return $field; + } + + function ACTI_ETATDOSSIER_field_code($GROUPBY, $DEFAULT="") { + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "ETATDOSSIER"); + if ($prefixe == "") { + $prefixe = ACTI_ETATDOSSIER_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_code[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "' Résumé'"; + break; + case 'CALC_ANNEE': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOIS': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'MM')"; + break; + case 'CALC_TRIM': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYY') ||' T'|| to_char(v_factures_reference_1.date_fin_facture, 'Q') "; + break; + case 'CALC_NUMEROTRIM': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'Q')"; + break; + case 'CALC_NUMEROJOUR': + $field = "CASE extract(DOW FROM v_factures_reference_1.date_fin_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_reference_1.date_fin_facture) END"; + break; + case 'CALC_SEMAINEWE': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'W')"; + break; + case 'CALC_SEMAINEANNE': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'WW')"; + break; + case 'CALC_JOUR': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYY') ||'-'|| to_char(v_factures_reference_1.date_fin_facture, 'MM') ||'-'||to_char(v_factures_reference_1.date_fin_facture, 'DD')"; + break; + case 'CALC_JOURS': + $field = " to_char(v_factures_reference_1.date_fin_facture, 'MM') ||'-'|| to_char(v_factures_reference_1.date_fin_facture, 'DD') "; + break; + case "CALC_MOIS": + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYYMM')"; + break; + case 'CALC_ANNEEF': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOISF': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'MM')"; + break; + case 'CALC_TRIMF': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYY') ||' T'|| to_char(v_factures_reference_1.date_fin_facture, 'Q') "; + break; + case 'CALC_NUMEROTRIMF': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'Q')"; + break; + case 'CALC_NUMEROJOURF': + $field = "CASE extract(DOW FROM v_factures_reference_1.date_fin_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_reference_1.date_fin_facture) END"; + break; + case 'CALC_SEMAINEWEF': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'W')"; + break; + case 'CALC_SEMAINEANNEF': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'WW')"; + break; + case 'CALC_JOURF': + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYY') ||'-'|| to_char(v_factures_reference_1.date_fin_facture, 'MM') ||'-'||to_char(v_factures_reference_1.date_fin_facture, 'DD')"; + break; + case 'CALC_JOURSF': + $field = " to_char(v_factures_reference_1.date_fin_facture, 'MM') ||'-'|| to_char(v_factures_reference_1.date_fin_facture, 'DD') "; + break; + case "CALC_MOISF": + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYYMM')"; + break; + case 'CALC_ANNEEEX': + $field = "to_char(v_factures_reference_1.date_expedition, 'YYYY')"; + break; + case 'CALC_NUMEROMOISEX': + $field = "to_char(v_factures_reference_1.date_expedition, 'MM')"; + break; + case 'CALC_TRIMEX': + $field = "to_char(v_factures_reference_1.date_expedition, 'YYYY') ||' T'|| to_char(v_factures_reference_1.date_expedition, 'Q') "; + break; + case 'CALC_NUMEROTRIMEX': + $field = "to_char(v_factures_reference_1.date_expedition, 'Q')"; + break; + case 'CALC_NUMEROJOUREX': + $field = "CASE extract(DOW FROM v_factures_reference_1.date_expedition) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_reference_1.date_expedition) END"; + break; + case 'CALC_SEMAINEWEEX': + $field = "to_char(v_factures_reference_1.date_expedition, 'W')"; + break; + case 'CALC_SEMAINEANNEEX': + $field = "to_char(v_factures_reference_1.date_expedition, 'WW')"; + break; + case 'CALC_JOUREX': + $field = "to_char(v_factures_reference_1.date_expedition, 'YYYY') ||'-'|| to_char(v_factures_reference_1.date_expedition, 'MM') ||'-'||to_char(v_factures_reference_1.date_expedition, 'DD')"; + break; + case 'CALC_JOURSEX': + $field = " to_char(v_factures_reference_1.date_expedition, 'MM') ||'-'|| to_char(v_factures_reference_1.date_expedition, 'DD') "; + break; + case "CALC_MOISEX": + $field = "to_char(v_factures_reference_1.date_expedition, 'YYYYMM')"; + break; + case "CALC_MOIC": + $field = "to_char(v_factures_reference_1.date_comptable, 'YYYYMM')"; + break; + case "CALC_MOIV": + $field = "to_char(v_factures_reference_1.date_vente, 'YYYYMM')"; + break; + case 'v_sejours_1.code_sexe': + $field = "v_sejours_1.code_sexe"; + break; + default: + $field = "$prefixe" . "_code"; + } + } + return $field; + } + + function ACTI_ETATDOSSIER_field_texte($GROUPBY, $DEFAULT="") { + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "ETATDOSSIER"); + if ($prefixe == "") { + $prefixe = ACTI_ETATDOSSIER_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_texte[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "'Résumé'"; + break; + case "medecin_adm_sejour": + $field = "$prefixe" . "_nom_prenom"; + break; + case "medecin_sejour": + $field = "$prefixe" . "_nom_prenom"; + break; + case "medecin_traitant": + $field = "$prefixe" . "_nom_prenom"; + break; + case "CALC_ANNEE": + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOIS': + $field = "CASE date_part('month',v_factures_reference_1.date_fin_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END"; + break; + case 'CALC_TRIM': + $field = "date_part('year',v_factures_reference_1.date_fin_facture) ||'-'|| + CASE to_char(v_factures_reference_1.date_fin_facture, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROTRIM': + $field = "CASE to_char(v_factures_reference_1.date_fin_facture, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROJOUR': + $field = "CASE CASE extract(DOW FROM v_factures_reference_1.date_fin_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_reference_1.date_fin_facture) END + WHEN 1 THEN 'Lundi' + WHEN 2 THEN 'Mardi' + WHEN 3 THEN 'Mercredi' + WHEN 4 THEN 'Jeudi' + WHEN 5 THEN 'Vendredi' + WHEN 6 THEN 'Samedi' + WHEN 7 THEN 'Dimanche' + ELSE '?' + END"; + break; + case 'CALC_JOUR': + $field = "base.cti_to_char(v_factures_reference_1.date_fin_facture, 'FF')"; + break; + case 'CALC_JOURS': + $field = "base.cti_to_char(v_factures_reference_1.date_fin_facture, 'DD') ||' '|| + CASE date_part('month',v_factures_reference_1.date_fin_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + + "; + break; + + case 'CALC_SEMAINEANNE': + $field = " 'Semaine '||' '|| to_char(v_factures_reference_1.date_fin_facture, 'WW') + + "; + break; + case 'CALC_SEMAINEWE': + $field = "CASE to_char(v_factures_reference_1.date_fin_facture, 'W') + WHEN 1 THEN 'Semaine 1' + WHEN 2 THEN 'Semaine 2' + WHEN 3 THEN 'Semaine 3' + WHEN 4 THEN 'Semaine 4' + WHEN 5 THEN 'Semaine 5' + ELSE '?' + END"; + break; + case "CALC_MOIS": + $field = "CASE date_part('month',v_factures_reference_1.date_fin_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',v_factures_reference_1.date_fin_facture)"; + break; + case "CALC_ANNEEF": + $field = "to_char(v_factures_reference_1.date_fin_facture, 'YYYY')"; + break; + case 'CALC_NUMEROMOISF': + $field = "CASE date_part('month',v_factures_reference_1.date_fin_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END"; + break; + case 'CALC_TRIMF': + $field = "date_part('year',v_factures_reference_1.date_fin_facture) ||'-'|| + CASE to_char(v_factures_reference_1.date_fin_facture, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROTRIMF': + $field = "CASE to_char(v_factures_reference_1.date_fin_facture, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROJOURF': + $field = "CASE CASE extract(DOW FROM v_factures_reference_1.date_fin_facture) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_reference_1.date_fin_facture) END + WHEN 1 THEN 'Lundi' + WHEN 2 THEN 'Mardi' + WHEN 3 THEN 'Mercredi' + WHEN 4 THEN 'Jeudi' + WHEN 5 THEN 'Vendredi' + WHEN 6 THEN 'Samedi' + WHEN 7 THEN 'Dimanche' + ELSE '?' + END"; + break; + case 'CALC_JOURF': + $field = "base.cti_to_char(v_factures_reference_1.date_fin_facture, 'FF')"; + break; + case 'CALC_JOURSF': + $field = "base.cti_to_char(v_factures_reference_1.date_fin_facture, 'DD') ||' '|| + CASE date_part('month',v_factures_reference_1.date_fin_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + + "; + break; + + case 'CALC_SEMAINEANNEF': + $field = " 'Semaine '||' '|| to_char(v_factures_reference_1.date_fin_facture, 'WW') + + "; + break; + case 'CALC_SEMAINEWEF': + $field = "CASE to_char(v_factures_reference_1.date_fin_facture, 'W') + WHEN 1 THEN 'Semaine 1' + WHEN 2 THEN 'Semaine 2' + WHEN 3 THEN 'Semaine 3' + WHEN 4 THEN 'Semaine 4' + WHEN 5 THEN 'Semaine 5' + ELSE '?' + END"; + break; + case "CALC_MOISF": + $field = "CASE date_part('month',v_factures_reference_1.date_fin_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',v_factures_reference_1.date_fin_facture)"; + break; + case "CALC_ANNEEEX": + $field = "to_char(v_factures_reference_1.date_expedition, 'YYYY')"; + break; + case 'CALC_NUMEROMOISEX': + $field = "CASE date_part('month',v_factures_reference_1.date_expedition) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END"; + break; + case 'CALC_TRIMEX': + $field = "date_part('year',v_factures_reference_1.date_expedition) ||'-'|| + CASE to_char(v_factures_reference_1.date_expedition, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROTRIMEX': + $field = "CASE to_char(v_factures_reference_1.date_expedition, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROJOUREX': + $field = "CASE CASE extract(DOW FROM v_factures_reference_1.date_expedition) WHEN 0 THEN 7 ELSE extract(DOW FROM v_factures_reference_1.date_expedition) END + WHEN 1 THEN 'Lundi' + WHEN 2 THEN 'Mardi' + WHEN 3 THEN 'Mercredi' + WHEN 4 THEN 'Jeudi' + WHEN 5 THEN 'Vendredi' + WHEN 6 THEN 'Samedi' + WHEN 7 THEN 'Dimanche' + ELSE '?' + END"; + break; + case 'CALC_JOUREX': + $field = "base.cti_to_char(v_factures_reference_1.date_expedition, 'FF')"; + break; + case 'CALC_JOURSEX': + $field = "base.cti_to_char(v_factures_reference_1.date_expedition, 'DD') ||' '|| + CASE date_part('month',v_factures_reference_1.date_expedition) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + + "; + break; + + case 'CALC_SEMAINEANNEEX': + $field = " 'Semaine '||' '|| to_char(v_factures_reference_1.date_expedition, 'WW') + + "; + break; + case 'CALC_SEMAINEWEEX': + $field = "CASE to_char(v_factures_reference_1.date_expedition, 'W') + WHEN 1 THEN 'Semaine 1' + WHEN 2 THEN 'Semaine 2' + WHEN 3 THEN 'Semaine 3' + WHEN 4 THEN 'Semaine 4' + WHEN 5 THEN 'Semaine 5' + ELSE '?' + END"; + break; + case "CALC_MOISEX": + $field = "CASE date_part('month',v_factures_reference_1.date_expedition) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',v_factures_reference_1.date_expedition)"; + break; + case "CALC_MOIC": + $field = "CASE date_part('month',v_factures_reference_1.date_comptable) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',v_factures_reference_1.date_comptable)"; + break; + case "CALC_MOIV": + $field = "CASE date_part('month',v_factures_reference_1.date_vente) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',v_factures_reference_1.date_vente)::text"; + break; + case 'v_sejours_1.code_sexe': + $field = "v_sejours_1.code_sexe"; + break; + default: + $field = "$prefixe" . "_texte"; + } + } + return $field; + } + + + + function ACTI_CLIENT_prefixe($GROUPBY, $DEFAULT="") { + if (substr($GROUPBY,3,3) == 'CLS') { + $GROUPBY = substr($GROUPBY,0,6); + } + $field = ''; + $field_id = ''; + $field_code = ''; + $field_texte = ''; + switch ($GROUPBY) { + case '*TAB': + $field = "*TAB"; + break; + case '-1': + $field = ""; + break; + + case 'PRF': + $field = "prestation"; + break; + case 'PRFCLS': + $field = "prestation_section"; + break; + case 'RUC': + $field = "rubrique_comptabilisation"; + break; + case 'RUCCLS': + $field = "rubrique_comptabilisation_section"; + break; + case 'TPY': + $field = "tiers_payant"; + break; + case 'TRG': + $field = "tiers_payant_grand_regime"; + break; + case 'TPYCLS': + $field = "tiers_payant_section"; + break; + case 'TTP': + $field = "type_tiers_payant"; + break; + case 'MOIC': + $field = "CALC_MOIC"; + break; + case 'MOIS': + $field = "CALC_MOIS"; + break; + case 'MOIV': + $field = "CALC_MOIV"; + break; + case 'SPM': + $field = "medecin_sejour_specialite"; + break; + case 'MED': + $field = "medecin_sejour"; + break; + case 'MDA': + $field = "medecin_adm_sejour"; + break; + case 'MDACLS': + $field = "medecin_adm_sejour_section"; + break; + default: + $field = $DEFAULT; + } + return $field; + + $prefixe = ''; + $groupby = '[GROUPBY]'; + if ($groupby == '-1') {$groupby = '[GROUPBY_2]';} + + $cls6 = substr($groupby, 0 , 6); + $cls7 = substr($groupby, 6 , 1); + + + } + + function ACTI_CLIENT_field_id($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "CLIENT"); + if ($prefixe == "") { + $prefixe = ACTI_CLIENT_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_id[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "0"; + break; + case "*TAB": + $field = "-9999999"; + break; + case "CALC_MOIC": + $field = "to_char(date_comptable, 'YYYYMM')"; + break; + case "CALC_MOIS": + $field = "to_char(date_fin_facture, 'YYYYMM')"; + break; + case "CALC_MOIV": + $field = "to_char(date_vente, 'YYYYMM')"; + break; + + default: + $field = "$prefixe" . "_id"; + } + } + return $field; + } + + function ACTI_CLIENT_field_code($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "CLIENT"); + if ($prefixe == "") { + $prefixe = ACTI_CLIENT_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_code[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "' Résumé'"; + break; + case "CALC_MOIC": + $field = "to_char(date_comptable, 'YYYYMM')"; + break; + case "CALC_MOIS": + $field = "to_char(date_fin_facture, 'YYYYMM')"; + break; + case "CALC_MOIV": + $field = "to_char(date_vente, 'YYYYMM')"; + break; + default: + $field = "$prefixe" . "_code"; + } + } + return $field; + } + + function ACTI_CLIENT_field_texte($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "CLIENT"); + if ($prefixe == "") { + $prefixe = ACTI_CLIENT_prefixe($GROUPBY, $DEFAULT); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_texte[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "'Résumé'"; + break; + case "medecin_adm_sejour": + $field = "$prefixe" . "_nom_prenom"; + break; + case "medecin_sejour": + $field = "$prefixe" . "_nom_prenom"; + break; + case "CALC_MOIC": + $field = "CASE date_part('month',date_comptable) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',date_comptable)::text"; + break; + case "CALC_MOIS": + $field = "CASE date_part('month',date_fin_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',date_fin_facture)::text"; + break; + case "CALC_MOIV": + $field = "CASE date_part('month',date_vente) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',date_vente)::text"; + break; + + default: + $field = "$prefixe" . "_texte"; + } + } + return $field; + } + + + + function ACTI_CLIENT_H_prefixe($GROUPBY, $DEFAULT="") { + if (substr($GROUPBY,3,3) == 'CLS') { + $GROUPBY = substr($GROUPBY,0,6); + } + $field = ''; + $field_id = ''; + $field_code = ''; + $field_texte = ''; + switch ($GROUPBY) { + case '*TAB': + $field = "*TAB"; + break; + case '-1': + $field = ""; + break; + + case 'SPMC': + $field = "medecin_facture_specialite"; + break; + case 'EXEC': + $field = "medecin_comptabilise"; + break; + case 'EXAC': + $field = "medecin_adm_comptabilise"; + break; + case 'EXACLS': + $field = "medecin_adm_facture_section"; + break; + case 'TPY': + $field = "v_factures_soldes_h_3.tiers_payant"; + break; + case 'TRG': + $field = "v_factures_soldes_h_3.tiers_payant_grand_regime"; + break; + case 'TPYCLS': + $field = "v_factures_soldes_h_3.tiers_payant_section"; + break; + case 'TTP': + $field = "type_tiers_payant"; + break; + case 'MOIC': + $field = "CALC_MOIC"; + break; + case 'MOIS': + $field = "CALC_MOIS"; + break; + case 'MOIV': + $field = "CALC_MOIV"; + break; + case 'SPM': + $field = "medecin_sejour_specialite"; + break; + case 'MED': + $field = "medecin_sejour"; + break; + case 'MDA': + $field = "medecin_adm_sejour"; + break; + case 'MDACLS': + $field = "medecin_adm_sejour_section"; + break; + default: + $field = $DEFAULT; + } + return $field; + + $prefixe = ''; + $groupby = '[GROUPBY]'; + if ($groupby == '-1') {$groupby = '[GROUPBY_2]';} + + $cls6 = substr($groupby, 0 , 6); + $cls7 = substr($groupby, 6 , 1); + + + } + + function ACTI_CLIENT_H_field_id($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "CLIENT_H"); + if ($prefixe == "") { + $prefixe = ACTI_CLIENT_H_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_id[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "0"; + break; + case "*TAB": + $field = "-9999999"; + break; + case "CALC_MOIC": + $field = "to_char(v_factures_soldes_h_3.date_comptable, 'YYYYMM')"; + break; + case "CALC_MOIS": + $field = "to_char(v_factures_soldes_h_3.date_fin_facture, 'YYYYMM')"; + break; + case "CALC_MOIV": + $field = "to_char(v_factures_soldes_h_3.date_vente, 'YYYYMM')"; + break; + + default: + $field = "$prefixe" . "_id"; + } + } + return $field; + } + + function ACTI_CLIENT_H_field_code($GROUPBY, $DEFAULT="") { + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "CLIENT_H"); + if ($prefixe == "") { + $prefixe = ACTI_CLIENT_H_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_code[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "' Résumé'"; + break; + case "CALC_MOIC": + $field = "to_char(v_factures_soldes_h_3.date_comptable, 'YYYYMM')"; + break; + case "CALC_MOIS": + $field = "to_char(v_factures_soldes_h_3.date_fin_facture, 'YYYYMM')"; + break; + case "CALC_MOIV": + $field = "to_char(v_factures_soldes_h_3.date_vente, 'YYYYMM')"; + break; + default: + $field = "$prefixe" . "_code"; + } + } + return $field; + } + + function ACTI_CLIENT_H_field_texte($GROUPBY, $DEFAULT="") { + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "CLIENT_H"); + if ($prefixe == "") { + $prefixe = ACTI_CLIENT_H_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_texte[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "'Résumé'"; + break; + case "medecin_adm_sejour": + $field = "$prefixe" . "_nom_prenom"; + break; + case "medecin_sejour": + $field = "$prefixe" . "_nom_prenom"; + break; + case "medecin_adm_comptabilise": + $field = "$prefixe" . "_nom_prenom"; + break; + case "medecin_comptabilise": + $field = "$prefixe" . "_nom_prenom"; + break; + case "CALC_MOIC": + $field = "CASE date_part('month',v_factures_soldes_h_3.date_comptable) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',v_factures_soldes_h_3.date_comptable)::text"; + break; + case "CALC_MOIS": + $field = "CASE date_part('month',v_factures_soldes_h_3.date_fin_facture) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',v_factures_soldes_h_3.date_fin_facture)::text"; + break; + case "CALC_MOIV": + $field = "CASE date_part('month',v_factures_soldes_h_3.date_vente) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',v_factures_soldes_h_3.date_vente)::text"; + break; + + default: + $field = "$prefixe" . "_texte"; + } + } + return $field; + } + + + + function ACTI_REJET_prefixe($GROUPBY, $DEFAULT="") { + if (substr($GROUPBY,3,3) == 'CLS') { + $GROUPBY = substr($GROUPBY,0,6); + } + $field = ''; + $field_id = ''; + $field_code = ''; + $field_texte = ''; + switch ($GROUPBY) { + case '*TAB': + $field = "*TAB"; + break; + case '-1': + $field = ""; + break; + + case 'REJ': + $field = "rejet"; + break; + case 'REJCLS': + $field = "rejet_section"; + break; + case 'MOIA': + $field = "CALC_MOIA"; + break; + case 'MOIS': + $field = "CALC_MOIS"; + break; + case 'MOIV': + $field = "CALC_MOIV"; + break; + + default: + $field = $DEFAULT; + } + return $field; + + $prefixe = ''; + $groupby = '[GROUPBY]'; + if ($groupby == '-1') {$groupby = '[GROUPBY_2]';} + + $cls6 = substr($groupby, 0 , 6); + $cls7 = substr($groupby, 6 , 1); + + + } + + function ACTI_REJET_field_id($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "REJET"); + if ($prefixe == "") { + $prefixe = ACTI_REJET_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_id[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "0"; + break; + case "*TAB": + $field = "-9999999"; + break; + case "CALC_MOIS": + $field = "v_sejours_1.mois_sortie"; + break; + + default: + $field = "$prefixe" . "_id"; + } + } + return $field; + } + + function ACTI_REJET_field_code($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "REJET"); + if ($prefixe == "") { + $prefixe = ACTI_REJET_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_code[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "' Résumé'"; + break; + case "CALC_MOIS": + $field = "v_sejours_1.mois_sortie"; + break; + default: + $field = "$prefixe" . "_code"; + } + } + return $field; + } + + function ACTI_REJET_field_texte($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "REJET"); + if ($prefixe == "") { + $prefixe = ACTI_REJET_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_texte[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "'Résumé'"; + break; + case "CALC_MOIS": + $field = "CASE substr(v_sejours_1.mois_sortie , 5 , 2) + WHEN '01' THEN 'Janvier' + WHEN '02' THEN 'Fevrier' + WHEN '03' THEN 'Mars' + WHEN '04' THEN 'Avril' + WHEN '05' THEN 'Mai' + WHEN '06' THEN 'Juin' + WHEN '07' THEN 'Juillet' + WHEN '08' THEN 'Aout' + WHEN '09' THEN 'Septembre' + WHEN '10' THEN 'Octobre' + WHEN '11' THEN 'Novembre' + WHEN '12' THEN 'Decembre' + ELSE '?' + END + || ' ' || substr(v_sejours_1.mois_sortie , 1 , 4)"; + break; + + default: + $field = "$prefixe" . "_texte"; + } + } + return $field; + } + + + + + function ACTI_ETATDOSSIER_data($DATA, $DEFAULT="", $CASE="", $PERIODE_DUREE="") { + $case_when = ""; + $case_else = ""; + if ($CASE != "") { + $case_when = "CASE WHEN $CASE THEN"; + $case_else = "ELSE null END"; + } + switch ($DATA) { + case 'NBFAC': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, v_factures_reference_1.nb_factures::text] $colsecend $case_else)"; + break; + case 'NBREG': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, v_factures_reference_1.nb_factures_regularisation::text] $colsecend $case_else)"; + break; + case 'PRREG': + return "base.cti_division( + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, v_factures_reference_1.nb_factures::text] $colsecend $case_else), + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, v_factures_reference_1.nb_factures_regularisation::text] $colsecend $case_else) + ) * 100 "; + break; + case 'NBREJ': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, v_factures_reference_1.nb_rejets::text] $colsecend $case_else)"; + break; + case 'NBNGRP': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, v_factures_reference_1.nb_non_groupe::text] $colsecend $case_else)"; + break; + case 'DELGRP': + return "AVG($case_when v_factures_reference_1.delai_groupage $case_else)"; + break; + case 'NBNFAC': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, v_factures_reference_1.nb_non_calcules::text] $colsecend $case_else)"; + break; + case 'DELFAC': + return "AVG($case_when v_factures_reference_1.delai_facture $case_else)"; + break; + case 'NBNEXP': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, v_factures_reference_1.nb_non_expedie[VIEW.CLIHON]::text] $colsecend $case_else)"; + break; + case 'MTNEXP': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, v_factures_reference_1.montant_non_expedie[VIEW.CLIHON]::text] $colsecend $case_else)"; + break; + case 'MTNEXPHC': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '1' THEN v_factures_reference_1.montant_non_expedie[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MTNEXPHJ': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN (type_sejour = '2' OR type_sejour = '5') THEN v_factures_reference_1.montant_non_expedie[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MTNEXPA': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '3' THEN v_factures_reference_1.montant_non_expedie[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MTEXP': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MTEXPHC': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '1' AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MTEXPHJ': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN (type_sejour = '2' OR type_sejour = '5') AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MTEXPA': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '3' AND v_factures_reference_1.nb_non_expedie[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'DELEXP': + return "AVG($case_when v_factures_reference_1.delai_expedition $case_else)"; + break; + case 'NBNSOL': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (v_factures_reference_1.nb_non_solde[VIEW.CLIHON])::text] $colsecend $case_else)"; + break; + case 'MTSOL': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (v_factures_reference_1.montant_facture[VIEW.CLIHON])::text] $colsecend $case_else) - (base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN v_factures_reference_1.nb_non_solde_0[VIEW.CLIHON] <> 0 then v_factures_reference_1.montant_solde_0[VIEW.CLIHON] ELSE 0 END)::text] $colsecend $case_else) + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN v_factures_reference_1.nb_non_solde_1[VIEW.CLIHON] <> 0 then v_factures_reference_1.montant_solde_1[VIEW.CLIHON] ELSE 0 END)::text] $colsecend $case_else) + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN v_factures_reference_1.nb_non_solde_2[VIEW.CLIHON] <> 0 then v_factures_reference_1.montant_solde_2[VIEW.CLIHON] ELSE 0 END)::text] $colsecend $case_else))"; + break; + case 'MTSOLHC': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '1' AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MTSOLHJ': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN (type_sejour = '2' OR type_sejour = '5') AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MTSOLA': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '3' AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] <> 1 THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MTNSOL': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN v_factures_reference_1.nb_non_solde_0[VIEW.CLIHON] <> 0 then v_factures_reference_1.montant_solde_0[VIEW.CLIHON] ELSE 0 END)::text] $colsecend $case_else) + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN v_factures_reference_1.nb_non_solde_1[VIEW.CLIHON] <> 0 then v_factures_reference_1.montant_solde_1[VIEW.CLIHON] ELSE 0 END)::text] $colsecend $case_else) + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN v_factures_reference_1.nb_non_solde_2[VIEW.CLIHON] <> 0 then v_factures_reference_1.montant_solde_2[VIEW.CLIHON] ELSE 0 END)::text] $colsecend $case_else)"; + break; + case 'MTNSOLHC': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '1' AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] = 1 THEN v_factures_reference_1.montant_solde[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MTNSOLHJ': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN (type_sejour = '2' OR type_sejour = '5') AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] = 1 THEN v_factures_reference_1.montant_solde[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MTNSOLA': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '3' AND v_factures_reference_1.nb_non_solde[VIEW.CLIHON] = 1 THEN v_factures_reference_1.montant_solde[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'DELSOL': + return "AVG($case_when v_factures_reference_1.delai_solde[VIEW.CLIHON] $case_else)"; + break; + case 'NBNCLO': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (v_factures_reference_1.nb_non_cloture[VIEW.CLIHON])::text] $colsecend $case_else)"; + break; + case 'NSEJ': + return "COUNT(DISTINCT $case_when v_factures_reference_1.no_sejour $case_else)"; + break; + case 'NSEJHC': + return "COUNT(DISTINCT $case_when CASE WHEN type_sejour = '1' THEN v_factures_reference_1.no_sejour ELSE NULL END $case_else)"; + break; + case 'NSEJHJ': + return "COUNT(DISTINCT $case_when CASE WHEN (type_sejour = '2' OR type_sejour = '5') THEN v_factures_reference_1.no_sejour ELSE NULL END $case_else)"; + break; + case 'NSEJAUT': + return "COUNT(DISTINCT $case_when CASE WHEN type_sejour = '3' THEN v_factures_reference_1.no_sejour ELSE NULL END $case_else)"; + break; + case 'MFAC': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (v_factures_reference_1.montant_facture[VIEW.CLIHON])::text] $colsecend $case_else)"; + break; + case 'CAMFAC': + return "base.cti_division( + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (v_factures_reference_1.montant_facture[VIEW.CLIHON])::text] $colsecend $case_else), + COUNT(DISTINCT $case_when v_factures_reference_1.no_sejour $case_else) + ) "; + break; + case 'CAMFHC': + return "base.cti_division( + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '1' THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else), + COUNT(DISTINCT $case_when CASE WHEN type_sejour = '1' THEN v_factures_reference_1.no_sejour ELSE NULL END $case_else) + ) "; + break; + case 'CAMFHJ': + return "base.cti_division( + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '2' OR type_sejour = '5' THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else), + COUNT(DISTINCT $case_when CASE WHEN type_sejour = '2' OR type_sejour = '5' THEN v_factures_reference_1.no_sejour ELSE NULL END $case_else) + ) "; + break; + case 'CAMFA': + return "base.cti_division( + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '3' THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else), + COUNT($case_when CASE WHEN type_sejour = '3' THEN v_factures_reference_1.no_sejour ELSE NULL END $case_else) + ) "; + break; + case 'CAMFV': + return "base.cti_division( + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (v_factures_reference_1.montant_facture[VIEW.CLIHON] + v_factures_reference_1.montant_encours[VIEW.CLIHON])::text] $colsecend $case_else), + COUNT(DISTINCT $case_when v_factures_reference_1.no_sejour $case_else) + ) "; + break; + case 'CAMFVHC': + return "base.cti_division( + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '1' THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] + v_factures_reference_1.montant_encours[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else), + COUNT(DISTINCT $case_when CASE WHEN type_sejour = '1' THEN v_factures_reference_1.no_sejour ELSE NULL END $case_else) + ) "; + break; + case 'CAMFVHJ': + return "base.cti_division( + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '2' OR type_sejour = '5' THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] + v_factures_reference_1.montant_encours[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else), + COUNT(DISTINCT $case_when CASE WHEN type_sejour = '2' OR type_sejour = '5' THEN v_factures_reference_1.no_sejour ELSE NULL END $case_else) + ) "; + break; + case 'CAMFACA': + return "base.cti_division( + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '3' THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else), + COUNT(DISTINCT $case_when CASE WHEN type_sejour = '3' THEN v_factures_reference_1.no_sejour ELSE NULL END $case_else) + ) "; + break; + case 'CAMFVA': + return "base.cti_division( + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '3' THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] + v_factures_reference_1.montant_encours[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else), + COUNT(DISTINCT $case_when CASE WHEN type_sejour = '3' THEN v_factures_reference_1.no_sejour ELSE NULL END $case_else) + ) "; + break; + case 'MFACHC': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '1' THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MFACHJ': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '2' OR type_sejour = '5' THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MFACA': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '3' THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MNFAC': + break; + case 'MNFHC': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '1' THEN v_factures_reference_1.montant_encours[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MNFHJ': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '2' OR type_sejour = '5' THEN v_factures_reference_1.montant_encours[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MNFACA': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '3' THEN v_factures_reference_1.montant_encours[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MVFAC': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else) + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (v_factures_reference_1.montant_encours[VIEW.CLIHON])::text] $colsecend $case_else)"; + break; + case 'MVFHC': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '1' THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else) + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '1' THEN v_factures_reference_1.montant_encours[VIEW.CLIHON] ELSE NULL END )::text] $colsecend $case_else)"; + break; + case 'MVFHJ': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '2' OR type_sejour = '5' THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else) + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '2' OR type_sejour = '5' THEN v_factures_reference_1.montant_encours[VIEW.CLIHON] ELSE NULL END )::text] $colsecend $case_else)"; + break; + case 'MVFACA': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '3' THEN v_factures_reference_1.montant_facture[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else) + base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '3' THEN v_factures_reference_1.montant_encours[VIEW.CLIHON] ELSE NULL END )::text] $colsecend $case_else)"; + break; + case 'MCPT': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (v_factures_reference_1.montant_comptabilise[VIEW.CLIHON])::text] $colsecend $case_else)"; + break; + case 'MCPTHC': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '1' THEN v_factures_reference_1.montant_comptabilise[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MCPTHJ': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '2' OR type_sejour = '5' THEN v_factures_reference_1.montant_comptabilise[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + case 'MCPTA': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_reference_1.no_sejour, (CASE WHEN type_sejour = '3' THEN v_factures_reference_1.montant_comptabilise[VIEW.CLIHON] ELSE NULL END)::text] $colsecend $case_else)"; + break; + + default: + return $DEFAULT; + break; + } + + } + + function ACTI_facturation_clinique_param_data($LS_DATA, $LS_DATA_COL, $DATA, $DEFAULT="", $CASE="", $PERIODE_DUREE="", $COL='0') { + + $wdata = $DATA; + if ($LS_DATA != "-1") { + $wdata_array_1 = explode("=",$LS_DATA); + $wdata_array_2 = $wdata_array_1[1]; + $wdata_array = explode(",",$wdata_array_2); + $wdata = $wdata_array[$LS_DATA_COL-1]; + } + if($wdata != ""){ + return ACTI_facturation_clinique_data($wdata, $DEFAULT, $CASE, $PERIODE_DUREE, $COL); + } + } + + function ACTI_facturation_clinique_data($DATA, $DEFAULT="", $CASE="", $PERIODE_DUREE="",$COL='0') { + $case_when = ""; + $case_else = ""; + if($COL == '1'){ + $colsec="CASE WHEN COLUMNCHECKSEQUENCE THEN"; + $colsecend = "ELSE null END"; + + }else { + $colsec=" "; + $colsecend = " "; + + } + if ($CASE != "") { + $case_when = "CASE WHEN $CASE THEN"; + $case_else = "ELSE null END"; + } + if ($DATA == "NBPROTO" || $DATA == "NBPROTO2" ) { + if ($colsecend == "ELSE null END") { + $colsecend = "ELSE Array['','0'] END"; + } + if ($case_else == "ELSE null END") { + $case_else = "ELSE Array['','0'] END"; + } + } + switch ($DATA) { + case 'NBSEJ': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN est_ligne_facturee = '1' AND v_sejours_1.type_sejour <> '9' THEN v_factures_lignes_c_4.no_sejour $colsecend ELSE NULL END $case_else)"; + break; + case 'NBFAC': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN est_ligne_facturee = '1' THEN v_factures_lignes_c_4.no_facture $colsecend ELSE NULL END $case_else)"; + break; + case 'NBSEJHC': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN est_ligne_facturee = '1' AND type_sejour = '1' THEN v_factures_lignes_c_4.no_sejour $colsecend ELSE NULL END $case_else)"; + break; + case 'NBSEJHJ': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN est_ligne_facturee = '1' AND type_sejour IN ('2','5') THEN v_factures_lignes_c_4.no_sejour $colsecend ELSE NULL END $case_else)"; + break; + case 'NBSEJAU': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN est_ligne_facturee = '1' AND type_sejour NOT IN ('1','2','5') THEN v_factures_lignes_c_4.no_sejour $colsecend ELSE NULL END $case_else)"; + break; + case 'FACNS1': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN montant_facture_1 <> 0 THEN v_sejours_1.no_sejour $colsecend ELSE null END $case_else)"; + break; + case 'FACNS2': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN montant_facture_2 + montant_facture_22 <> 0 THEN v_sejours_1.no_sejour $colsecend ELSE null END $case_else )"; + break; + case 'FACNS0': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN montant_facture_0 <> 0 THEN v_sejours_1.no_sejour $colsecend ELSE null END $case_else )"; + break; + case 'FAVNBS': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN (est_ligne_facturee = '1' OR est_ligne_encours = '1') AND v_sejours_1.type_sejour <> '9' THEN v_sejours_1.no_sejour $colsecend ELSE NULL END $case_else)"; + break; + case 'NBRUB': + return "SUM($case_when $colsec CASE WHEN est_ligne_facturee = '1' THEN nb_rubrique * coefficient $colsecend ELSE NULL END $case_else)"; + break; + case 'NBPRE': + return "SUM( $case_when $colsec CASE WHEN est_ligne_facturee = '1' THEN nb_prestation * coefficient $colsecend ELSE NULL END $case_else)"; + break; + case 'NBPROTO': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_lignes_h_3.no_facture::text || '|' || protocole_id::text,CASE WHEN nb_prestation >= 0 THEN '1' ELSE '-1' END] $colsecend $case_else)"; + break; + case 'NBPROTO2': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_lignes_h_3.no_facture::text || '|' || protocole_id::text,CASE WHEN protocole_id = 0 THEN '0' WHEN nb_prestation >= 0 THEN '1' ELSE '-1' END] $colsecend $case_else)"; + break; + case 'MTFAC': + return "SUM($case_when $colsec CASE WHEN est_ligne_facturee = '1' THEN montant_facture $colsecend ELSE NULL END $case_else)"; + break; + case 'MMTFAC': + return "base.cti_division(SUM($case_when $colsec CASE WHEN est_ligne_facturee = '1' THEN montant_facture $colsecend ELSE NULL END $case_else),COUNT(DISTINCT $case_when $colsec CASE WHEN est_ligne_facturee = '1' THEN v_factures_lignes_c_4.no_sejour $colsecend ELSE NULL END $case_else))"; + break; + case 'FAVNBSHC': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN (est_ligne_facturee = '1' OR est_ligne_encours = '1') AND type_sejour = '1' THEN v_sejours_1.no_sejour $colsecend ELSE NULL END $case_else)"; + break; + case 'FAVNBSHJ': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN (est_ligne_facturee = '1' OR est_ligne_encours = '1') AND type_sejour IN ('2','5') THEN v_sejours_1.no_sejour $colsecend ELSE NULL END $case_else)"; + break; + case 'FAVNBSHA': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN (est_ligne_facturee = '1' OR est_ligne_encours = '1') AND type_sejour NOT IN ('1','2','5') THEN v_sejours_1.no_sejour $colsecend ELSE NULL END $case_else)"; + break; + case 'FAVMTTHC': + return "SUM($case_when $colsec CASE WHEN type_sejour = '1' THEN montant_facture + montant_encours $colsecend ELSE 0 END $case_else)"; + break; + case 'FAVMTTHJ': + return "SUM($case_when $colsec CASE WHEN type_sejour IN ('2','5') THEN montant_facture + montant_encours $colsecend ELSE 0 END $case_else)"; + break; + case 'FAVMTTHA': + return "SUM($case_when $colsec CASE WHEN type_sejour NOT IN ('1','2','5') THEN montant_facture + montant_encours $colsecend ELSE 0 END $case_else)"; + break; + + case 'FACMTTHC': + return "SUM($case_when $colsec CASE WHEN est_ligne_facturee = '1' AND type_sejour = '1' THEN montant_facture $colsecend ELSE 0 END $case_else)"; + break; + case 'MMTFACHC': + return "base.cti_division(SUM($case_when $colsec CASE WHEN est_ligne_facturee = '1' AND type_sejour = '1' THEN montant_facture $colsecend ELSE 0 END $case_else),COUNT(DISTINCT $case_when $colsec CASE WHEN est_ligne_facturee = '1' AND type_sejour = '1' THEN v_factures_lignes_c_4.no_sejour $colsecend ELSE NULL END $case_else))"; + break; + case 'FACMTTHJ': + return "SUM($case_when $colsec CASE WHEN est_ligne_facturee = '1' AND type_sejour IN ('2','5') THEN montant_facture $colsecend ELSE 0 END $case_else)"; + break; + case 'MMTFACHJ': + return "base.cti_division(SUM($case_when $colsec CASE WHEN est_ligne_facturee = '1' AND type_sejour IN ('2','5') THEN montant_facture $colsecend ELSE 0 END $case_else),COUNT(DISTINCT $case_when $colsec CASE WHEN est_ligne_facturee = '1' AND type_sejour IN ('2','5') THEN v_factures_lignes_c_4.no_sejour $colsecend ELSE NULL END $case_else))"; + break; + case 'FACMTTHA': + return "SUM($case_when $colsec CASE WHEN est_ligne_facturee = '1' AND type_sejour NOT IN ('1','2','5') THEN montant_facture $colsecend ELSE 0 END $case_else)"; + break; + case 'MMTFACAU': + return "base.cti_division(SUM($case_when $colsec CASE WHEN est_ligne_facturee = '1' AND type_sejour NOT IN ('1','2','5') THEN montant_facture $colsecend ELSE 0 END $case_else),COUNT(DISTINCT $case_when $colsec CASE WHEN est_ligne_facturee = '1' AND type_sejour NOT IN ('1','2','5') THEN v_factures_lignes_c_4.no_sejour $colsecend ELSE NULL END $case_else))"; + break; + case 'VALMTHCGR': + return "SUM($case_when $colsec CASE WHEN type_sejour = '1' AND nb_non_groupe = 0 AND est_ligne_encours = '1' THEN montant_encours $colsecend ELSE 0 END $case_else)"; + break; + case 'VALMTHCNG': + return "SUM($case_when $colsec CASE WHEN type_sejour = '1' AND (code_sorti <> '1' OR nb_non_groupe <> 0) AND est_ligne_encours = '1' THEN montant_encours $colsecend ELSE 0 END $case_else)"; + break; + case 'VALMTHJGR': + return "SUM($case_when $colsec CASE WHEN type_sejour IN ('2','5') AND nb_non_groupe = 0 AND est_ligne_encours = '1' THEN montant_encours $colsecend ELSE 0 END $case_else)"; + break; + case 'VALMTHCT': + return "SUM($case_when $colsec CASE WHEN type_sejour = '1' AND est_ligne_encours = '1' THEN montant_encours $colsecend ELSE 0 END $case_else)"; + break; + case 'VALMTHJNG': + return "SUM($case_when $colsec CASE WHEN type_sejour IN ('2','5') AND (code_sorti <> '1' OR nb_non_groupe <> 0) AND est_ligne_encours = '1' THEN montant_encours $colsecend ELSE 0 END $case_else)"; + break; + case 'VALMTHJT': + return "SUM($case_when $colsec CASE WHEN type_sejour IN ('2','5') AND est_ligne_encours = '1' THEN montant_encours $colsecend ELSE 0 END $case_else)"; + break; + case 'VALMTHA': + return "SUM($case_when $colsec CASE WHEN type_sejour NOT IN ('1', '2','5') AND est_ligne_encours = '1' THEN montant_encours $colsecend ELSE 0 END $case_else)"; + break; + + case 'MTFACC': + return "SUM($case_when $colsec CASE WHEN COALESCE(origine_facturation_id,0) <= 1 THEN montant_facture $colsecend ELSE NULL END $case_else)"; + break; + case 'MTFACH': + return "SUM($case_when $colsec CASE WHEN COALESCE(origine_facturation_id,0) = 2 THEN montant_facture $colsecend ELSE NULL END $case_else)"; + break; + case 'MTFACHI': + return "SUM($case_when $colsec CASE WHEN COALESCE(origine_facturation_id,0) = 3 THEN montant_facture_actes_inclus_dans_sejour $colsecend ELSE NULL END $case_else)"; + break; + case 'MTFAC0': + return "SUM($case_when $colsec montant_facture_0 $colsecend $case_else)"; + break; + case 'MTFAC1': + return "SUM($case_when $colsec montant_facture_1 $colsecend $case_else)"; + break; + case 'MTFAC2': + return "SUM($case_when $colsec montant_facture_2 + montant_facture_22 $colsecend $case_else)"; + break; + case 'MTCPT': + return "SUM($case_when $colsec montant_comptabilise + COALESCE(montant_comptabilise_budget_global_1,0) $colsecend $case_else)"; + break; + case 'MTCPTHBG': + return "SUM($case_when $colsec montant_comptabilise $colsecend $case_else)"; + break; + case 'MTCPT0': + return "SUM($case_when $colsec montant_comptabilise_0 $colsecend $case_else)"; + break; + case 'MTCPT1': + return "SUM($case_when $colsec montant_comptabilise_1 + COALESCE(montant_comptabilise_budget_global_1,0) $colsecend $case_else)"; + break; + case 'MTCPT1BG': + return "SUM($case_when $colsec COALESCE(montant_comptabilise_budget_global_1,0) $colsecend $case_else)"; + break; + case 'MTCPT1HBG': + return "SUM($case_when $colsec montant_comptabilise_1 $colsecend $case_else)"; + break; + case 'MTCPT2': + return "SUM($case_when $colsec montant_comptabilise_2 + montant_comptabilise_22 $colsecend $case_else)"; + break; + case 'NBSEJENC': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN est_ligne_encours = '1' THEN v_factures_lignes_c_4.no_sejour $colsecend ELSE NULL END $case_else )"; + break; + case 'NBRUBENC': + return "SUM($case_when $colsec CASE WHEN est_ligne_encours = '1' THEN nb_rubrique * coefficient $colsecend ELSE NULL END $case_else)"; + break; + case 'NBPREENC': + return "SUM( $case_when $colsec CASE WHEN est_ligne_encours = '1' THEN nb_prestation * coefficient $colsecend ELSE NULL END $case_else)"; + break; + case 'MTENC': + return "SUM($case_when $colsec CASE WHEN est_ligne_encours = '1' THEN montant_encours ELSE NULL END $colsecend $case_else)"; + break; + case 'NBSEJENC1': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN code_sorti = '1' AND est_ligne_encours = '1' AND nb_non_groupe = 0 THEN v_factures_lignes_c_4.no_sejour $colsecend ELSE NULL END $case_else)"; + break; + case 'NBRUBENC1': + return "SUM($case_when $colsec CASE WHEN code_sorti = '1' AND est_ligne_encours = '1' AND nb_non_groupe = 0 THEN nb_rubrique * coefficient $colsecend ELSE NULL END $case_else)"; + break; + case 'NBPREENC1': + return "SUM($case_when $colsec CASE WHEN code_sorti = '1' AND est_ligne_encours = '1' AND nb_non_groupe = 0 THEN nb_prestation * coefficient $colsecend ELSE NULL END $case_else)"; + break; + case 'MTENC1': + return "SUM($case_when $colsec CASE WHEN code_sorti = '1' AND est_ligne_encours = '1' AND nb_non_groupe = 0 THEN montant_encours $colsecend ELSE NULL END $case_else)"; + break; + case 'NBSEJENC2': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN code_sorti = '1' AND est_ligne_encours = '1' AND nb_non_groupe <> 0 THEN v_factures_lignes_c_4.no_sejour $colsecend ELSE NULL END $case_else)"; + break; + case 'NBRUBENC2': + return "SUM($case_when $colsec CASE WHEN code_sorti = '1' AND est_ligne_encours = '1' AND nb_non_groupe <> 0 THEN nb_rubrique * coefficient $colsecend ELSE NULL END $case_else)"; + break; + case 'NBPREENC2': + return "SUM($case_when $colsec CASE WHEN code_sorti = '1' AND est_ligne_encours = '1' AND nb_non_groupe <> 0 THEN nb_prestation * coefficient $colsecend ELSE NULL END $case_else)"; + break; + case 'MTENC2': + return "SUM($case_when $colsec CASE WHEN code_sorti = '1' AND est_ligne_encours = '1' AND nb_non_groupe <> 0 THEN montant_encours $colsecend ELSE NULL END $case_else)"; + break; + case 'NBSEJENC3': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN code_sorti <> '1' AND est_ligne_encours = '1' THEN v_factures_lignes_c_4.no_sejour $colsecend ELSE NULL END $case_else)"; + break; + case 'NBRUBENC3': + return "SUM($case_when $colsec CASE WHEN code_sorti <> '1' AND est_ligne_encours = '1' THEN nb_rubrique * coefficient $colsecend ELSE NULL END $case_else)"; + break; + case 'NBPREENC3': + return "SUM($case_when $colsec CASE WHEN code_sorti <> '1' AND est_ligne_encours = '1' THEN nb_prestation * coefficient $colsecend ELSE NULL END $case_else)"; + break; + case 'MTENC3': + return "SUM($case_when $colsec CASE WHEN code_sorti <> '1' AND est_ligne_encours = '1' THEN montant_encours $colsecend ELSE NULL END $case_else)"; + break; + case 'NBSEJFACENC': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN est_ligne_encours = '1' OR est_ligne_facturee = '1' THEN v_factures_lignes_c_4.no_sejour $colsecend ELSE NULL END $case_else)"; + break; + case 'NBRUBFACENC': + return "SUM($case_when $colsec CASE WHEN est_ligne_encours = '1' OR est_ligne_facturee = '1' THEN nb_rubrique * coefficient $colsecend ELSE NULL END $case_else)"; + break; + case 'NBPREFACENC': + return "SUM($case_when $colsec CASE WHEN est_ligne_encours = '1' OR est_ligne_facturee = '1' THEN nb_prestation * coefficient $colsecend ELSE NULL END $case_else)"; + break; + case 'MTFACENC': + return "SUM($case_when $colsec CASE WHEN est_ligne_encours = '1' OR est_ligne_facturee = '1' THEN montant_encours ELSE NULL END + montant_facture $colsecend $case_else)"; + break; + case 'MMTFACENC': + return "base.cti_division(SUM($case_when $colsec CASE WHEN est_ligne_encours = '1' OR est_ligne_facturee = '1' THEN montant_encours ELSE NULL END + montant_facture $colsecend $case_else),COUNT(DISTINCT $case_when $colsec CASE WHEN est_ligne_encours = '1' OR est_ligne_facturee = '1' THEN v_factures_lignes_c_4.no_sejour $colsecend ELSE NULL END $case_else))"; + break; + case 'FAVCAMHC': + return "base.cti_division(SUM($case_when $colsec CASE WHEN type_sejour = '1' THEN montant_facture + montant_encours $colsecend ELSE 0 END $case_else),COUNT(DISTINCT $case_when $colsec CASE WHEN (est_ligne_facturee = '1' OR est_ligne_encours = '1') AND type_sejour = '1' THEN v_sejours_1.no_sejour $colsecend ELSE NULL END $case_else))"; + break; + case 'FAVCAMHJ': + return "base.cti_division(SUM($case_when $colsec CASE WHEN type_sejour IN ('2','5') THEN montant_facture + montant_encours $colsecend ELSE 0 END $case_else),COUNT(DISTINCT $case_when $colsec CASE WHEN (est_ligne_facturee = '1' OR est_ligne_encours = '1') AND type_sejour IN ('2','5') THEN v_sejours_1.no_sejour $colsecend ELSE NULL END $case_else))"; + break; + case 'FAVCAMAU': + return "base.cti_division(SUM($case_when $colsec CASE WHEN type_sejour NOT IN ('1','2','5') THEN montant_facture + montant_encours $colsecend ELSE 0 END $case_else),COUNT(DISTINCT $case_when $colsec CASE WHEN (est_ligne_facturee = '1' OR est_ligne_encours = '1') AND type_sejour NOT IN ('1','2','5') THEN v_sejours_1.no_sejour $colsecend ELSE NULL END $case_else))"; + break; + case 'MFACEMC': + return "SUM($case_when $colsec CASE WHEN v_factures_lignes_c_4.code_facture = '1' THEN v_factures_lignes_c_4.montant_facture $colsecend ELSE 0 END $case_else)"; + break; + case 'MVALEMC': + return "SUM($case_when $colsec CASE WHEN v_factures_lignes_c_4.code_facture = '0' AND est_ligne_encours = '1' THEN v_factures_lignes_c_4.montant_encours $colsecend ELSE 0 END $case_else)"; + break; + case 'MFPVEMC': + return "SUM($case_when $colsec CASE WHEN v_factures_lignes_c_4.code_facture IN ('0','1') THEN v_factures_lignes_c_4.montant_encours + v_factures_lignes_c_4.montant_facture $colsecend ELSE 0 END $case_else)"; + break; + case 'MMFPVEMC': + return "SUM($case_when $colsec CASE WHEN v_factures_lignes_c_4.code_facture IN ('0','1') THEN v_factures_lignes_c_4.montant_encours + v_factures_lignes_c_4.montant_facture $colsecend ELSE 0 END $case_else)"; + break; + case 'MFPVEMCHC': + return "SUM($case_when $colsec CASE WHEN v_factures_lignes_c_4.code_facture IN ('0','1') AND type_sejour = '1' THEN v_factures_lignes_c_4.montant_encours + v_factures_lignes_c_4.montant_facture $colsecend ELSE 0 END $case_else)"; + break; + case 'MFAVCAMHC': + return "SUM($case_when $colsec CASE WHEN v_factures_lignes_c_4.code_facture IN ('0','1') AND type_sejour = '1' THEN v_factures_lignes_c_4.montant_encours + v_factures_lignes_c_4.montant_facture $colsecend ELSE 0 END $case_else)"; + break; + case 'MFACMTTHC': + return "SUM($case_when $colsec CASE WHEN v_factures_lignes_c_4.code_facture IN ('0','1') AND type_sejour = '1' THEN v_factures_lignes_c_4.montant_facture $colsecend ELSE 0 END $case_else)"; + break; + case 'MMFACEMC': + return "SUM($case_when $colsec CASE WHEN v_factures_lignes_c_4.code_facture = '1' THEN v_factures_lignes_c_4.montant_facture $colsecend ELSE 0 END $case_else)"; + break; + case 'MMVALEMC': + return "SUM($case_when $colsec CASE WHEN v_factures_lignes_c_4.code_facture = '0' AND est_ligne_encours = '1' THEN v_factures_lignes_c_4.montant_encours $colsecend ELSE 0 END $case_else)"; + break; + case 'MFACEMCHC': + return "SUM($case_when $colsec CASE WHEN v_factures_lignes_c_4.code_facture = '1' and type_sejour='1' THEN v_factures_lignes_c_4.montant_facture $colsecend ELSE 0 END $case_else)"; + break; + case '0':case 'EMC':case 'VALEMC':case 'FAVEMC':case 'FACNBJ':case 'VALNBJ':case 'FAVNBJ':case 'FAVDMS':case 'FAVNBEMCHC':case 'MFAVCAMHC':case 'MMFPVEMC':case 'MMFACEMC':case 'MMVALEMC': + return "0"; + break; + default: + return $DEFAULT; + break; + } + + } + + function ACTI_facturation_clinique_data_col($DATA, $DEFAULT="", $CASE="", $PERIODE_DUREE="",$COL,$TOPERIODE) { + $case_when = ""; + $case_else = ""; + if($COL == '1'){ + $colsec="CASE WHEN COLUMNCHECKSEQUENCE THEN"; + $colsecend = "ELSE null END"; + + }else { + $colsec=" "; + $colsecend = " "; + + } + if ($CASE != "") { + $case_when = "CASE WHEN $CASE THEN"; + $case_else = "ELSE null END"; + } + switch ($DATA) { + case 'EMC': + return "SUM($colsec CASE WHEN p_factures_reference.code_facture = '1' THEN equivalent_malade_complet $colsecend ELSE 0 END)"; + break; + case 'MMFACEMC': + return "SUM($colsec CASE WHEN p_factures_reference.code_facture = '1' THEN equivalent_malade_complet $colsecend ELSE 0 END)"; + break; + case 'MMVALEMC': + return "SUM($colsec CASE WHEN p_factures_reference.code_facture = '0' THEN equivalent_malade_complet $colsecend ELSE 0 END)"; + break; + case 'VALEMC': + return "SUM($colsec CASE WHEN p_factures_reference.code_facture = '0' THEN equivalent_malade_complet $colsecend ELSE 0 END)"; + break; + case 'FAVEMC': + return "SUM($colsec equivalent_malade_complet $colsecend)"; + break; + case 'MMFPVEMC': + return "SUM($colsec equivalent_malade_complet $colsecend)"; + break; + case 'FACNBJ': + return "SUM($colsec CASE WHEN p_factures_reference.code_facture = '1' THEN nb_jours_f + nb_ambulatoires + CASE WHEN type_sejour = '5' THEN nb_seances ELSE 0 END $colsecend ELSE 0 END)"; + break; + case 'VALNBJ': + return "SUM($colsec CASE WHEN p_factures_reference.code_facture = '0' THEN nb_jours_f + nb_ambulatoires + CASE WHEN type_sejour = '5' THEN nb_seances ELSE 0 END $colsecend ELSE 0 END)"; + break; + case 'FAVNBJ': + return "SUM($colsec nb_jours_f + nb_ambulatoires + CASE WHEN type_sejour = '5' THEN nb_seances ELSE 0 END $colsecend)"; + break; + case 'FAVNBEMCHC': + return "SUM($colsec CASE WHEN type_sejour = '1' then equivalent_malade_complet ELSE 0 END $colsecend)"; + break; + case 'MFAVCAMHC': + return "SUM($colsec CASE WHEN type_sejour = '1' then equivalent_malade_complet ELSE 0 END $colsecend)"; + break; + case 'MFACMTTHC': + return "SUM($colsec CASE WHEN type_sejour = '1' then equivalent_malade_complet ELSE 0 END $colsecend)"; + break; + case 'FAVDMS': + return "base.cti_division(SUM($colsec CASE WHEN (v_sejours_1.date_sortie <='$TOPERIODE'::date ) AND v_sejours_1.code_sorti = 1 then [VIEW.JOURNEES_FIELD] $colsecend ELSE null END),SUM($colsec nb_sorties_directes $colsecend))"; + break; + default: + return $DEFAULT; + break; + } + + } + function ACTI_facturation_honoraires_data($DATA, $DEFAULT="", $CASE="", $PERIODE_DUREE="",$COL) { + $case_when = ""; + $case_else = ""; + if($COL == '1'){ + $colsec="CASE WHEN COLUMNCHECKSEQUENCE THEN"; + $colsecend = "ELSE null END"; + + }else { + $colsec=" "; + $colsecend = " "; + } + if ($CASE != "") { + $case_when = "CASE WHEN $CASE THEN"; + $case_else = "ELSE null END"; + } + if ($DATA == "NBPROTO" || $DATA == "NBPROTO2") { + if ($colsecend == "ELSE null END") { + $colsecend = "ELSE Array['','0'] END"; + } + if ($case_else == "ELSE null END") { + $case_else = "ELSE Array['','0'] END"; + } + } + switch ($DATA) { + case 'NBSEJ': + return "COUNT(DISTINCT $case_when $colsec v_factures_lignes_h_3.no_sejour $colsecend $case_else)"; + break; + case 'SEJPAT': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN (montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0) and (tiers_payant_0_id <> 0 and montant_facture_0 != 0) then v_factures_lignes_h_3.sejour_id $colsecend else NULL end $case_else)"; + break; + case 'SEJAMO': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN (montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0) and (tiers_payant_1_id <> 0 and montant_facture_1 != 0) then v_factures_lignes_h_3.sejour_id $colsecend else null end $case_else)"; + break; + case 'SEJAMC': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN (montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0) and (tiers_payant_2_id <> 0 and montant_facture_2 != 0) then v_factures_lignes_h_3.sejour_id $colsecend else null end $case_else)"; + break; + case 'NBDEP': + return "COUNT(DISTINCT $case_when $colsec CASE WHEN montant_depassement <> 0 THEN v_factures_lignes_h_3.sejour_id $colsecend ELSE NULL END $case_else)"; + break; + case 'NBRUB': + return "SUM($case_when $colsec nb_rubrique * coefficient $colsecend $case_else)"; + break; + case 'NBPRE': + return "SUM($case_when $colsec case when montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 then nb_prestation $colsecend ELSE NULL END $case_else)"; + break; + case 'NBPROTO': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_lignes_h_3.no_facture::text || '|' || protocole_id::text,CASE WHEN nb_prestation >= 0 THEN '1' ELSE '-1' END] $colsecend $case_else)"; + break; + case 'NBPROTO2': + return "base.cti_sum_distinct_on(DISTINCT $case_when $colsec array[v_factures_lignes_h_3.no_facture::text || '|' || protocole_id::text,CASE WHEN protocole_id = 0 THEN '0' WHEN nb_prestation >= 0 THEN '1' ELSE '-1' END] $colsecend $case_else)"; + break; + case 'NBCOEPRE': + return "SUM($case_when $colsec nb_prestation * coefficient $colsecend $case_else)"; + break; + case 'MTFAC': + return "SUM($case_when $colsec case when montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 then montant_facture $colsecend ELSE NULL END $case_else)"; + break; + case 'MTFACI': + return "SUM($case_when $colsec case when (montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 OR montant_facture_actes_inclus_dans_sejour <> 0) then montant_facture + COALESCE(montant_facture_actes_inclus_dans_sejour,0) $colsecend ELSE NULL END $case_else)"; + break; + case 'MTI': + return "SUM($case_when $colsec case when montant_facture_actes_inclus_dans_sejour <> 0 then COALESCE(montant_facture_actes_inclus_dans_sejour,0) $colsecend ELSE NULL END $case_else)"; + break; + case 'MTFAC0': + return "SUM($case_when $colsec case when montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 then montant_facture_0 $colsecend ELSE NULL END $case_else)"; + break; + case 'MTFAC1': + return "SUM($case_when $colsec case when montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 then montant_facture_1 $colsecend ELSE NULL END $case_else)"; + break; + case 'MTFAC2': + return "SUM($case_when $colsec case when montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 then montant_facture_2 $colsecend ELSE NULL END $case_else)"; + break; + case 'MTDEP': + return "SUM($case_when $colsec montant_depassement $colsecend $case_else)"; + break; + case 'MTCPT': + return "SUM($case_when $colsec case when montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 then montant_comptabilise $colsecend ELSE NULL END $case_else)"; + break; + case 'MTCPT0': + return "SUM($case_when $colsec case when montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 then montant_comptabilise_0 $colsecend ELSE NULL END $case_else)"; + break; + case 'MTCPT1': + return "SUM($case_when $colsec case when montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 then montant_comptabilise_1 $colsecend ELSE NULL END $case_else)"; + break; + case 'MTCPT2': + return "SUM($case_when $colsec case when montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 then montant_comptabilise_2 $colsecend ELSE NULL END $case_else)"; + break; + case 'MTCONV': + return "SUM($case_when $colsec montant_facture $colsecend $case_else) - SUM($case_when $colsec montant_depassement $colsecend $case_else)"; + break; + case 'MMTFAC': + return "base.cti_division(SUM($case_when $colsec montant_facture $colsecend $case_else),COUNT(DISTINCT $case_when $colsec v_factures_lignes_h_3.sejour_id $colsecend $case_else))"; + break; + case 'MMTFAC0': + return "base.cti_division(SUM($case_when $colsec montant_facture_0 $colsecend $case_else),COUNT(DISTINCT $case_when $colsec CASE WHEN tiers_payant_0_id <> 0 then v_factures_lignes_h_3.sejour_id $colsecend else 0 end $case_else))"; + break; + case 'MMTFAC1': + return "base.cti_division(SUM($case_when $colsec montant_facture_1 $colsecend $case_else),COUNT(DISTINCT $case_when $colsec CASE WHEN tiers_payant_1_id <> 0 then v_factures_lignes_h_3.sejour_id $colsecend else 0 end $case_else))"; + break; + case 'MMTFAC2': + return "base.cti_division(SUM($case_when $colsec montant_facture_2 $colsecend $case_else),COUNT(DISTINCT $case_when $colsec CASE WHEN tiers_payant_2_id <> 0 then v_factures_lignes_h_3.sejour_id $colsecend else 0 end $case_else))"; + break; + case 'MTNNFACT': + return "SUM($case_when $colsec case when montant_non_facture <> 0 then montant_non_facture $colsecend ELSE NULL END $case_else)"; + break; + case 'MTFACVAL': + return "SUM($case_when $colsec case when montant_facture <> 0 OR montant_depassement <> 0 OR montant_non_facture <> 0 OR montant_facture_actes_inclus_dans_sejour <> 0 then coalesce(montant_facture, 0) + coalesce(montant_non_facture, 0) + coalesce(montant_facture_actes_inclus_dans_sejour, 0) $colsecend ELSE NULL END $case_else)"; + break; + default: + return $DEFAULT; + break; + } + + } + + function ACTI_RAPPORT_prefixe($GROUPBY, $DEFAULT="") { + if (substr($GROUPBY,3,3) == 'CLS') { + $GROUPBY = substr($GROUPBY,0,6); + } + $field = ''; + $field_id = ''; + $field_code = ''; + $field_texte = ''; + switch ($GROUPBY) { + case '*TAB': + $field = "*TAB"; + break; + case '-1': + $field = ""; + break; + case 'TSE': + $field = "type_sejour"; + break; + case 'TSECLS': + $field = "type_sejour_section"; + break; + case 'FOA': + $field = "forme_activite"; + break; + case 'FOACLS': + $field = "forme_activite_section"; + break; + case 'FSP': + $field = "filiere_soin_principale"; + break; + case 'FSPCLS': + $field = "filiere_soin_principale_section"; + break; + case 'MTR': + $field = "mode_traitement"; + break; + case 'SER': + $field = "lieu_reference_service"; + break; + case 'SERCLS': + $field = "lieu_reference_service_section"; + break; + case 'ACT': + $field = "lieu_reference_activite"; + break; + case 'ETA': + $field = "lieu_reference_etage"; + break; + case 'ETACLS': + $field = "lieu_reference_etage_section"; + break; + case 'LIT': + $field = "lieu_reference_lit"; + break; + case 'LITCLS': + $field = "lieu_reference_lit_section"; + break; + case 'UM': + $field = "lieu_reference_unite_medicale"; + break; + case 'UMDCLS': + $field = "lieu_reference_unite_medicale_section"; + break; + case 'UF': + $field = "lieu_reference_unite_fonctionnelle"; + break; + case 'UFTCLS': + $field = "lieu_reference_unite_fonctionnelle_section"; + break; + case 'SPM': + $field = "medecin_reference_specialite"; + break; + case 'MED': + $field = "medecin_reference"; + break; + case 'MDA': + $field = "medecin_adm_reference"; + break; + case 'MDACLS': + $field = "medecin_adm_reference_section"; + break; + case 'MCO': + $field = "mcos"; + break; + case 'CAS': + $field = "cas"; + break; + case 'CMD': + $field = "cmd"; + break; + case 'GHS': + $field = "ghs"; + break; + case 'GHM': + $field = "ghm"; + break; + case 'GHMCLS': + $field = "ghm_section"; + break; + case 'GHM5': + $field = "ghm5"; + break; + case 'GHMSEV': + $field = "severite_ghm"; + break; + case 'SEVCTI': + $field = "severite_cti"; + break; + case 'PS1': + $field = "v_sejours_parametres_personnalises_1.parametre_personnalise_1"; + break; + case 'PS1CLS': + $field = "v_sejours_parametres_personnalises_1.parametre_personnalise_1_section"; + break; + case 'PS2': + $field = "v_sejours_parametres_personnalises_1.parametre_personnalise_2"; + break; + case 'PS2CLS': + $field = "v_sejours_parametres_personnalises_1.parametre_personnalise_2_section"; + break; + + case 'BUC': + $field = "budget_cle"; + break; + case 'BUCCLS': + $field = "budget_cle_section"; + break; + + case 'MCO': + $field = "mcos"; + break; + case 'FIN': + $field = "finess"; + break; + case 'FINCLS': + $field = "finess_section"; + break; + case 'ANNEE': + $field = "CALC_ANNEE"; + break; + case 'MOIS': + $field = "CALC_MOIS"; + break; + case 'NUMEROJOUR': + $field = "CALC_NUMEROJOUR"; + break; + case 'NUMEROMOIS': + $field = "CALC_NUMEROMOIS"; + break; + + default: + $field = $DEFAULT; + } + return $field; + + $prefixe = ''; + $groupby = '[GROUPBY]'; + if ($groupby == '-1') {$groupby = '[GROUPBY_2]';} + + $cls6 = substr($groupby, 0 , 6); + $cls7 = substr($groupby, 6 , 1); + + + } + + function ACTI_RAPPORT_field_id($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_RAPPORT_prefixe($GROUPBY, $DEFAULT=""); + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_id[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "0"; + break; + case "*TAB": + $field = "-9999999"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date_reference)"; + break; + case "CALC_MOIS": + $field = "EXTRACT(YEAR FROM date_reference) * 100 + EXTRACT(MONTH FROM date_reference)"; + break; + case "CALC_NUMEROJOUR": + $field = "EXTRACT(DOW FROM date_reference)"; + break; + case "CALC_NUMEROMOIS": + $field = "EXTRACT(MONTH FROM date_reference)"; + break; + default: + $field = "$prefixe" . "_id"; + } + } + return $field; + } + + function ACTI_RAPPORT_field_code($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_RAPPORT_prefixe($GROUPBY, $DEFAULT=""); + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_code[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "' Résumé'"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date_reference)"; + break; + case "CALC_MOIS": + $field = "EXTRACT(YEAR FROM date_reference) * 100 + EXTRACT(MONTH FROM date_reference)"; + break; + case "CALC_NUMEROJOUR": + $field = "CASE WHEN EXTRACT(DOW FROM date_reference) > 0 THEN EXTRACT(DOW FROM date_reference) ELSE 7 END"; + break; + case "CALC_NUMEROMOIS": + $field = "CASE + WHEN EXTRACT(MONTH FROM date_reference) = 1 THEN '01' + WHEN EXTRACT(MONTH FROM date_reference) = 2 THEN '02' + WHEN EXTRACT(MONTH FROM date_reference) = 3 THEN '03' + WHEN EXTRACT(MONTH FROM date_reference) = 4 THEN '04' + WHEN EXTRACT(MONTH FROM date_reference) = 5 THEN '05' + WHEN EXTRACT(MONTH FROM date_reference) = 6 THEN '06' + WHEN EXTRACT(MONTH FROM date_reference) = 7 THEN '07' + WHEN EXTRACT(MONTH FROM date_reference) = 8 THEN '08' + WHEN EXTRACT(MONTH FROM date_reference) = 9 THEN '09' + WHEN EXTRACT(MONTH FROM date_reference) = 10 THEN '10' + WHEN EXTRACT(MONTH FROM date_reference) = 11 THEN '11' + WHEN EXTRACT(MONTH FROM date_reference) = 12 THEN '12' + ELSE '?' + END"; + break; + default: + $field = "$prefixe" . "_code"; + } + } + return $field; + } + + function ACTI_RAPPORT_field_texte($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_RAPPORT_prefixe($GROUPBY, $DEFAULT=""); + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_texte[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "'Résumé'"; + break; + case "medecin_reference": + $field = "$prefixe" . "_nom_prenom"; + break; + case "medecin_adm_reference": + $field = "$prefixe" . "_nom_prenom"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date_reference)"; + break; + case "CALC_MOIS": + $field = "CASE EXTRACT(MONTH FROM date_reference) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || EXTRACT(YEAR FROM date_reference)::text"; + break; + case "CALC_NUMEROJOUR": + $field = "CASE WHEN EXTRACT(DOW FROM date_reference) = 0 THEN 'Dimanche' + WHEN EXTRACT(DOW FROM date_reference) = 1 THEN 'Lundi' + WHEN EXTRACT(DOW FROM date_reference) = 2 THEN 'Mardi' + WHEN EXTRACT(DOW FROM date_reference) = 3 THEN 'Mercredi' + WHEN EXTRACT(DOW FROM date_reference) = 4 THEN 'Jeudi' + WHEN EXTRACT(DOW FROM date_reference) = 5 THEN 'Vendredi' + WHEN EXTRACT(DOW FROM date_reference) = 6 THEN 'Samedi' + ELSE '?' + END"; + break; + case "CALC_NUMEROMOIS": + $field = "CASE + WHEN EXTRACT(MONTH FROM date_reference) = 1 THEN 'Janv' + WHEN EXTRACT(MONTH FROM date_reference) = 2 THEN 'Fev' + WHEN EXTRACT(MONTH FROM date_reference) = 3 THEN 'Mars' + WHEN EXTRACT(MONTH FROM date_reference) = 4 THEN 'Avr' + WHEN EXTRACT(MONTH FROM date_reference) = 5 THEN 'Mai' + WHEN EXTRACT(MONTH FROM date_reference) = 6 THEN 'Juin' + WHEN EXTRACT(MONTH FROM date_reference) = 7 THEN 'Juil' + WHEN EXTRACT(MONTH FROM date_reference) = 8 THEN 'Aout' + WHEN EXTRACT(MONTH FROM date_reference) = 9 THEN 'Sept' + WHEN EXTRACT(MONTH FROM date_reference) = 10 THEN 'Oct' + WHEN EXTRACT(MONTH FROM date_reference) = 11 THEN 'Nov' + WHEN EXTRACT(MONTH FROM date_reference) = 12 THEN 'Dec' + ELSE '?' + END"; + break; + default: + $field = "$prefixe" . "_texte"; + } + } + return $field; + } + + function ACTI_RAPPORT_PLACES_prefixe($GROUPBY, $DEFAULT="") { + if (substr($GROUPBY,3,3) == 'CLS') { + $GROUPBY = substr($GROUPBY,0,6); + } + $field = ''; + $field_id = ''; + $field_code = ''; + $field_texte = ''; + + switch ($GROUPBY) { + case '*TAB': + $field = "*TAB"; + break; + case '-1': + $field = ""; + break; + case 'TSE': + $field = "type_sejour"; + break; + case 'TSECLS': + $field = "type_sejour_section"; + break; + case 'ETA': + $field = "etage"; + break; + case 'ETACLS': + $field = "etage_section"; + break; + case 'SER': + $field = "service"; + break; + case 'SERCLS': + $field = "service_section"; + break; + case 'UF': + $field = "uf"; + break; + case 'UFTCLS': + $field = "uf_section"; + break; + case 'UM': + $field = "um"; + break; + case 'UMDCLS': + $field = "um_section"; + break; + case 'FIN': + $field = "finess"; + break; + case 'FINCLS': + $field = "finess_section"; + break; + case 'ANNEE': + $field = "CALC_ANNEE"; + break; + case 'MOIS': + $field = "CALC_MOIS"; + break; + case 'NUMEROMOIS': + $field = "CALC_NUMEROMOIS"; + break; + case 'TRIM': + $field = "CALC_TRIM"; + break; + case 'JOUR': + $field = "CALC_JOUR"; + break; + case 'JOURS': + $field = "CALC_JOURS"; + break; + case 'NUMEROTRIM': + $field = "CALC_NUMEROTRIM"; + break; + case 'NUMEROJOUR': + $field = "CALC_NUMEROJOUR"; + break; + case 'SEMAINEWE': + $field = "CALC_SEMAINEWE"; + break; + case 'SEMAINEANNE': + $field = "CALC_SEMAINEANNE"; + break; + + default: + $field = $DEFAULT; + } + return $field; + + $prefixe = ''; + $groupby = '[GROUPBY]'; + if ($groupby == '-1') {$groupby = '[GROUPBY_2]';} + + $cls6 = substr($groupby, 0 , 6); + $cls7 = substr($groupby, 6 , 1); + + + } + + function ACTI_RAPPORT_PLACES_field_id($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_RAPPORT_PLACES_prefixe($GROUPBY, $DEFAULT); + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_id[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "0"; + break; + case "*TAB": + $field = "-9999999"; + break; + case '-111': + $field = "-111"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date_reference)"; + break; + case "CALC_MOIS": + $field = "EXTRACT(YEAR FROM date_reference) * 100 + EXTRACT(MONTH FROM date_reference)"; + break; + case 'CALC_NUMEROMOIS': + $field = "to_char(date_reference, 'MM')"; + break; + case 'CALC_TRIM': + $field = "to_char(date_reference, 'YYYYQ')"; + break; + case 'CALC_NUMEROTRIM': + $field = "to_char(date_reference, 'Q')"; + break; + case 'CALC_NUMEROJOUR': + $field = "date_reference.jour_semaine"; + break; + case 'CALC_JOUR': + $field = "to_char(date_reference, 'YYYYMMDD')"; + break; + case 'CALC_JOURS': + $field = "to_char(date_reference, 'MMDD')"; + break; + case 'CALC_SEMAINEWE': + $field = "to_char(date_reference, 'W')"; + break; + case 'CALC_SEMAINEANNE': + $field = "to_char(date_reference, 'WW')"; + break; + default: + $field = "$prefixe" . "_id"; + } + } + return $field; + } + + function ACTI_RAPPORT_PLACES_field_code($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_RAPPORT_PLACES_prefixe($GROUPBY, $DEFAULT); + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_code[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "' Résumé'"; + break; + case '-111': + $field = "-111"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date_reference)"; + break; + case "CALC_MOIS": + $field = "EXTRACT(YEAR FROM date_reference) * 100 + EXTRACT(MONTH FROM date_reference)"; + break; + case 'CALC_NUMEROMOIS': + $field = "to_char(date_reference, 'MM')"; + break; + case 'CALC_TRIM': + $field = "to_char(date_reference, 'YYYY') ||' T'|| to_char(date_reference, 'Q') "; + break; + case 'CALC_NUMEROTRIM': + $field = "to_char(date_reference, 'Q')"; + break; + case 'CALC_NUMEROJOUR': + $field = "date_reference.jour_semaine::text"; + break; + case 'CALC_SEMAINEWE': + $field = "to_char(date_reference, 'W')"; + break; + case 'CALC_SEMAINEANNE': + $field = "to_char(date_reference, 'WW')"; + break; + case 'CALC_JOUR': + $field = "to_char(date_reference, 'YYYY') ||'-'|| to_char(date_reference, 'MM') ||'-'||to_char(date_reference, 'DD')"; + break; + case 'CALC_JOURS': + $field = " to_char(date_reference, 'MM') ||'-'|| to_char(date_reference, 'DD') "; + break; + default: + $field = "$prefixe" . "_code"; + } + } + return $field; + } + + function ACTI_RAPPORT_PLACES_field_texte($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_RAPPORT_PLACES_prefixe($GROUPBY, $DEFAULT); + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_texte[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "'Résumé'"; + break; + case '-111': + $field = "-111"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date_reference)"; + break; + case "CALC_MOIS": + $field = "CASE EXTRACT(MONTH FROM date_reference) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || EXTRACT('YEAR' FROM date_reference)::text"; + break; + case 'CALC_NUMEROMOIS': + $field = "CASE date_part('month',date_reference) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END"; + break; + case 'CALC_TRIM': + $field = "date_part('year',date_reference) ||'-'|| + CASE to_char(date_reference, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROTRIM': + $field = "CASE to_char(date_reference, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROJOUR': + $field = "CASE p_calendrier.jour_semaine + WHEN 1 THEN 'Lundi' + WHEN 2 THEN 'Mardi' + WHEN 3 THEN 'Mercredi' + WHEN 4 THEN 'Jeudi' + WHEN 5 THEN 'Vendredi' + WHEN 6 THEN 'Samedi' + WHEN 7 THEN 'Dimanche' + ELSE '?' + END"; + break; + case 'CALC_JOUR': + $field = "base.cti_to_char(date_reference, 'FF')"; + break; + case 'CALC_JOURS': + $field = "base.cti_to_char(date_reference, 'DD') ||' '|| + CASE date_part('month',date_reference) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + + "; + break; + + case 'CALC_SEMAINEANNE': + $field = " 'Semaine '||' '|| to_char(date_reference, 'WW') + + "; + break; + case 'CALC_SEMAINEWE': + $field = "CASE to_char(date_reference, 'W') + WHEN 1 THEN 'Semaine 1' + WHEN 2 THEN 'Semaine 2' + WHEN 3 THEN 'Semaine 3' + WHEN 4 THEN 'Semaine 4' + WHEN 5 THEN 'Semaine 5' + ELSE '?' + END"; + break; + default: + $field = "$prefixe" . "_texte"; + } + } + return $field; + } + + + + + + function ACTI_RAPPORT_BUDGET_prefixe($GROUPBY, $DEFAULT="") { + if (substr($GROUPBY,3,3) == 'CLS') { + $GROUPBY = substr($GROUPBY,0,6); + } + $field = ''; + $field_id = ''; + $field_code = ''; + $field_texte = ''; + + switch ($GROUPBY) { + case '*TAB': + $field = "*TAB"; + break; + case '-1': + $field = ""; + break; + + case 'BUC': + $field = "budget_cle"; + break; + case 'BUCCLS': + $field = "budget_cle_section"; + break; + + case 'ANNEE': + $field = "CALC_ANNEE"; + break; + case 'MOIS': + $field = "CALC_MOIS"; + break; + + default: + $field = $DEFAULT; + } + return $field; + + $prefixe = ''; + $groupby = '[GROUPBY]'; + if ($groupby == '-1') {$groupby = '[GROUPBY_2]';} + + $cls6 = substr($groupby, 0 , 6); + $cls7 = substr($groupby, 6 , 1); + + + } + + function ACTI_RAPPORT_BUDGET_field_id($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_RAPPORT_BUDGET_prefixe($GROUPBY, $DEFAULT); + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_id[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "0"; + break; + case "*TAB": + $field = "-9999999"; + break; + case '-111': + $field = "-111"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date_reference)"; + break; + case "CALC_MOIS": + $field = "EXTRACT(YEAR FROM date_reference) * 100 + EXTRACT(MONTH FROM date_reference)"; + break; + default: + $field = "$prefixe" . "_id"; + } + } + return $field; + } + + function ACTI_RAPPORT_BUDGET_field_code($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_RAPPORT_BUDGET_prefixe($GROUPBY, $DEFAULT); + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_code[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "' Résumé'"; + break; + case '-111': + $field = "-111"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date_reference)"; + break; + case "CALC_MOIS": + $field = "EXTRACT(YEAR FROM date_reference) * 100 + EXTRACT(MONTH FROM date_reference)"; + break; + default: + $field = "$prefixe" . "_code"; + } + } + return $field; + } + + function ACTI_RAPPORT_BUDGET_field_texte($GROUPBY, $DEFAULT="") { + + $prefixe = ACTI_RAPPORT_BUDGET_prefixe($GROUPBY, $DEFAULT); + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_texte[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "'Résumé'"; + break; + case '-111': + $field = "-111"; + break; + case "CALC_ANNEE": + $field = "EXTRACT(YEAR FROM date_reference)"; + break; + case "CALC_MOIS": + $field = "CASE EXTRACT(MONTH FROM date_reference) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || EXTRACT('YEAR' FROM date_reference)::text"; + break; + default: + $field = "$prefixe" . "_texte"; + } + } + return $field; + } + + function ACTI_ANALYSE_TT_field_prefixe($GROUPBY, $DEFAULT=""){ + if (substr($GROUPBY,3,3) == 'CLS') { + $GROUPBY = substr($GROUPBY,0,6); + } + $field = ''; + $field_id = ''; + $field_code = ''; + $field_texte = ''; + switch ($GROUPBY) { + case '*TAB': + $field = "*TAB"; + break; + case '-1': + $field = ""; + break; + case 'ANNEE': + $field = "CALC_ANNEE"; + break; + case 'NUMEROMOIS': + $field = "CALC_NUMEROMOIS"; + break; + case 'CALC_MOIS': + $field = "CALC_MOIS"; + break; + case 'TRIM': + $field = "CALC_TRIM"; + break; + case 'JOUR': + $field = "CALC_JOUR"; + break; + case 'JOURS': + $field = "CALC_JOURS"; + break; + case 'NUMEROTRIM': + $field = "CALC_NUMEROTRIM"; + break; + case 'NUMEROJOUR': + $field = "CALC_NUMEROJOUR"; + break; + case 'SEMAINEWE': + $field = "CALC_SEMAINEWE"; + break; + case 'SEMAINEANNE': + $field = "CALC_SEMAINEANNE"; + break; + + default: + $field = $DEFAULT; + } + return $field; + + $prefixe = ''; + $groupby = '[GROUPBY]'; + if ($groupby == '-1') {$groupby = '[GROUPBY_2]';} + + $cls6 = substr($groupby, 0 , 6); + $cls7 = substr($groupby, 6 , 1); + + } + + function ACTI_ANALYSE_TT_field_id($GROUPBY, $DEFAULT=""){ + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "ANALYSE_TT"); + if ($prefixe == "") { + $prefixe = ACTI_ETATDOSSIER_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_id[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "0"; + break; + case "*TAB": + $field = "-9999999"; + break; + case 'CALC_ANNEE': + $field = "to_char(p_calendrier.date, 'YYYY')"; + break; + case 'CALC_NUMEROMOIS': + $field = "to_char(p_calendrier.date, 'MM')"; + break; + case 'CALC_MOIS': + $field = "to_char(p_calendrier.date, 'YYYYMM')"; + break; + case 'CALC_TRIM': + $field = "to_char(p_calendrier.date, 'YYYYQ')"; + break; + case 'CALC_NUMEROTRIM': + $field = "to_char(p_calendrier.date, 'Q')"; + break; + case 'CALC_NUMEROJOUR': + $field = "p_calendrier.jour_semaine"; + break; + case 'CALC_JOUR': + $field = "to_char(p_calendrier.date, 'YYYYMMDD')"; + break; + case 'CALC_JOURS': + $field = "to_char(p_calendrier.date, 'MMDD')"; + break; + case 'CALC_SEMAINEWE': + $field = "to_char(p_calendrier.date, 'W')"; + break; + case 'CALC_SEMAINEANNE': + $field = "to_char(p_calendrier.date, 'WW')"; + break; + + default: + $field = "$prefixe" . "_id"; + } + } + return $field; + + } + function ACTI_ANALYSE_TT_field_code($GROUPBY, $DEFAULT=""){ + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "ANALYSE_TT"); + if ($prefixe == "") { + $prefixe = ACTI_ETATDOSSIER_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_code[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "' Résumé'"; + break; + case 'CALC_ANNEE': + $field = "to_char(p_calendrier.date, 'YYYY')"; + break; + case 'CALC_NUMEROMOIS': + $field = "to_char(p_calendrier.date, 'MM')"; + break; + case 'CALC_TRIM': + $field = "to_char(p_calendrier.date, 'YYYY') ||' T'|| to_char(p_calendrier.date, 'Q') "; + break; + case 'CALC_NUMEROTRIM': + $field = "to_char(p_calendrier.date, 'Q')"; + break; + case 'CALC_NUMEROJOUR': + $field = "p_calendrier.jour_semaine::text"; + break; + case 'CALC_SEMAINEWE': + $field = "to_char(p_calendrier.date, 'W')"; + break; + case 'CALC_SEMAINEANNE': + $field = "to_char(p_calendrier.date, 'WW')"; + break; + case 'CALC_JOUR': + $field = "to_char(p_calendrier.date, 'YYYY') ||'-'|| to_char(p_calendrier.date, 'MM') ||'-'||to_char(p_calendrier.date, 'DD')"; + break; + case 'CALC_JOURS': + $field = " to_char(p_calendrier.date, 'MM') ||'-'|| to_char(p_calendrier.date, 'DD') "; + break; + case "CALC_MOIS": + $field = "to_char(p_calendrier.date, 'YYYYMM')"; + break; + case 'v_sejours_1.code_sexe': + $field = "v_sejours_1.code_sexe"; + break; + default: + $field = "$prefixe" . "_code"; + } + } + return $field; + + } + function ACTI_ANALYSE_TT_field_texte($GROUPBY, $DEFAULT=""){ + $prefixe = ACTI_STANDARD_prefixe($GROUPBY, $DEFAULT, "ANALYSE_TT"); + if ($prefixe == "") { + $prefixe = ACTI_ETATDOSSIER_prefixe($GROUPBY, $DEFAULT=""); + } + + if (substr($GROUPBY, 3, 3) == 'CLS' && $prefixe != $DEFAULT) { + $section = substr($GROUPBY, 6); + $field = "$prefixe" . "_texte[" . $section . "]"; + } + else { + switch ($prefixe) { + case "": + $field = "''"; + break; + case "*TAB": + $field = "'Résumé'"; + break; + case "medecin_adm_sejour": + $field = "$prefixe" . "_nom_prenom"; + break; + case "medecin_sejour": + $field = "$prefixe" . "_nom_prenom"; + break; + case "CALC_ANNEE": + $field = "to_char(p_calendrier.date, 'YYYY')"; + break; + case 'CALC_NUMEROMOIS': + $field = "CASE date_part('month',p_calendrier.date) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END"; + break; + case 'CALC_TRIM': + $field = "date_part('year',p_calendrier.date) ||'-'|| + CASE to_char(p_calendrier.date, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROTRIM': + $field = "CASE to_char(p_calendrier.date, 'Q') + WHEN 1 THEN 'Trimestre 1' + WHEN 2 THEN 'Trimestre 2' + WHEN 3 THEN 'Trimestre 3' + WHEN 4 THEN 'Trimestre 4' + ELSE '?' + END"; + break; + case 'CALC_NUMEROJOUR': + $field = "CASE p_calendrier.jour_semaine + WHEN 1 THEN 'Lundi' + WHEN 2 THEN 'Mardi' + WHEN 3 THEN 'Mercredi' + WHEN 4 THEN 'Jeudi' + WHEN 5 THEN 'Vendredi' + WHEN 6 THEN 'Samedi' + WHEN 7 THEN 'Dimanche' + ELSE '?' + END"; + break; + case 'CALC_JOUR': + $field = "base.cti_to_char(p_calendrier.date, 'FF')"; + break; + case 'CALC_JOURS': + $field = "base.cti_to_char(p_calendrier.date, 'DD') ||' '|| + CASE date_part('month',p_calendrier.date) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + + "; + break; + + case 'CALC_SEMAINEANNE': + $field = " 'Semaine '||' '|| to_char(p_calendrier.date, 'WW') + + "; + break; + case 'CALC_SEMAINEWE': + $field = "CASE to_char(p_calendrier.date, 'W') + WHEN 1 THEN 'Semaine 1' + WHEN 2 THEN 'Semaine 2' + WHEN 3 THEN 'Semaine 3' + WHEN 4 THEN 'Semaine 4' + WHEN 5 THEN 'Semaine 5' + ELSE '?' + END"; + break; + case "CALC_MOIS": + $field = "CASE date_part('month',p_calendrier.date) + WHEN 01 THEN 'Janvier' + WHEN 02 THEN 'Fevrier' + WHEN 03 THEN 'Mars' + WHEN 04 THEN 'Avril' + WHEN 05 THEN 'Mai' + WHEN 06 THEN 'Juin' + WHEN 07 THEN 'Juillet' + WHEN 08 THEN 'Aout' + WHEN 09 THEN 'Septembre' + WHEN 10 THEN 'Octobre' + WHEN 11 THEN 'Novembre' + WHEN 12 THEN 'Decembre' + ELSE '?' + END + || ' ' || date_part('year',p_calendrier.date)"; + break; + case 'v_sejours_1.code_sexe': + $field = "v_sejours_1.code_sexe"; + break; + default: + $field = "$prefixe" . "_texte"; + } + } + return $field; + + } + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI_dboptimizer.XML b/settings/ACTI_dboptimizer.XML new file mode 100644 index 0000000..de952e1 --- /dev/null +++ b/settings/ACTI_dboptimizer.XML @@ -0,0 +1,1696 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/ACTI_globals.XML b/settings/ACTI_globals.XML new file mode 100755 index 0000000..0830229 --- /dev/null +++ b/settings/ACTI_globals.XML @@ -0,0 +1,3477 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/dashboard_indicators/iCTI_activite_chiffrier_comptable.XML b/settings/dashboard_indicators/iCTI_activite_chiffrier_comptable.XML new file mode 100644 index 0000000..1b3530b --- /dev/null +++ b/settings/dashboard_indicators/iCTI_activite_chiffrier_comptable.XML @@ -0,0 +1,23 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/settings/dashboard_indicators/iCTI_activite_fraicheur.XML b/settings/dashboard_indicators/iCTI_activite_fraicheur.XML new file mode 100644 index 0000000..a2e1d8a --- /dev/null +++ b/settings/dashboard_indicators/iCTI_activite_fraicheur.XML @@ -0,0 +1,65 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/dashboard_indicators/iCTI_activite_integrite_tables.XML b/settings/dashboard_indicators/iCTI_activite_integrite_tables.XML new file mode 100644 index 0000000..8e2915b --- /dev/null +++ b/settings/dashboard_indicators/iCTI_activite_integrite_tables.XML @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings/dashboard_indicators/iCTI_activite_nouveau_parametre.XML b/settings/dashboard_indicators/iCTI_activite_nouveau_parametre.XML new file mode 100644 index 0000000..34043f7 --- /dev/null +++ b/settings/dashboard_indicators/iCTI_activite_nouveau_parametre.XML @@ -0,0 +1,25 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/settings/dashboard_indicators/iCTI_import_activite.XML b/settings/dashboard_indicators/iCTI_import_activite.XML new file mode 100644 index 0000000..ef19462 --- /dev/null +++ b/settings/dashboard_indicators/iCTI_import_activite.XML @@ -0,0 +1,23 @@ + + + + + + \ No newline at end of file diff --git a/settings/dashboard_indicators/iCTI_import_activite_CONSOLIDATION.XML b/settings/dashboard_indicators/iCTI_import_activite_CONSOLIDATION.XML new file mode 100644 index 0000000..b8b5d82 --- /dev/null +++ b/settings/dashboard_indicators/iCTI_import_activite_CONSOLIDATION.XML @@ -0,0 +1,23 @@ + + + + + + \ No newline at end of file diff --git a/settings/views/occupation/admissions/annulations/ACTIANNJSF.XML b/settings/views/occupation/admissions/annulations/ACTIANNJSF.XML new file mode 100644 index 0000000..9cca890 --- /dev/null +++ b/settings/views/occupation/admissions/annulations/ACTIANNJSF.XML @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/views/occupation/admissions/annulations/ACTIANNULA.XML b/settings/views/occupation/admissions/annulations/ACTIANNULA.XML new file mode 100644 index 0000000..ae5292d --- /dev/null +++ b/settings/views/occupation/admissions/annulations/ACTIANNULA.XML @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/views/occupation/admissions/preadmissions/ACTIADMJSF.XML b/settings/views/occupation/admissions/preadmissions/ACTIADMJSF.XML new file mode 100644 index 0000000..9d36a83 --- /dev/null +++ b/settings/views/occupation/admissions/preadmissions/ACTIADMJSF.XML @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/views/occupation/admissions/preadmissions/ACTIPREADM.XML b/settings/views/occupation/admissions/preadmissions/ACTIPREADM.XML new file mode 100644 index 0000000..e69cd80 --- /dev/null +++ b/settings/views/occupation/admissions/preadmissions/ACTIPREADM.XML @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/swf/CTI_ACTI_BudgetManager.mxml b/swf/CTI_ACTI_BudgetManager.mxml new file mode 100644 index 0000000..c5a2d52 --- /dev/null +++ b/swf/CTI_ACTI_BudgetManager.mxml @@ -0,0 +1,455 @@ + + + + + + + showDetailBudget() + } + + public function showDetailBudget():void + { + var i:Number + + if (currentBudgetItem == null) + { + return; + } + + oid_GUI.text = currentBudgetItem.@oid.toString(); + code_GUI.text = currentBudgetItem.@code.toString(); + texte_GUI.text = currentBudgetItem.@texte.toString(); + + var urlVariables:URLVariables = new URLVariables() + urlVariables.budget_id = currentBudgetItem.@oid.toString(); + + CTI_Utilitaires.startRequestHTTP("modules/activite/php/httpService_ACTI_budgetManager_getBudget.php", urlVariables, exec, true, this.parentApplication) + + function exec(resultatService:XML):void + { + + BUDGET_XML = resultatService + + detailBox.percentWidth = 100 + listBox.width = 0 + + } + + } + + public function setUpdated():void + { + budgetUpdated = true + } + + private function askCancelBudget():void + { + + if (budgetUpdated == false) + { + hideBudget() + return; + } + + Alert.yesLabel = "OUI"; + Alert.noLabel = "NON"; + var alert:Alert = Alert.show("Les données ont été changées, désirez vous les annuler ?", "Gestion budgets", 3, this, alertClickHandler, question_class); + + function alertClickHandler(event:CloseEvent):void + { + if (event.detail == Alert.YES) + { + hideBudget() + } + else + { + + } + } + + } + + private function hideBudget():void + { + + detailBox.width = 0 + listBox.percentWidth = 100 + currentBudgetItem = null; + budgetUpdated = false; + } + + private function askDeleteBudget():void + { + + Alert.yesLabel = "OUI"; + Alert.noLabel = "NON"; + var alert:Alert = Alert.show("Désirez vous vraiment supprimer le budget " + texte_GUI.text + " ?", "Gestion budgets", 3, this, alertClickHandler, question_class); + + function alertClickHandler(event:CloseEvent):void + { + if (event.detail == Alert.YES) + { + deleteBudget() + } + else + { + + } + } + + } + + public function deleteBudget():void + { + + updateBudget("delete") + + } + + public function copyBudget():void + { + + updateBudget("copy") + + } + + public function saveBudget():void + { + + updateBudget("save") + + } + + public function updateBudget(action:String):void + { + + trace(BUDGET_XML.toXMLString()) + + var urlVariables:URLVariables = new URLVariables() + urlVariables.action = action + + BUDGET_XML.@oid = oid_GUI.text + BUDGET_XML.@code = code_GUI.text + BUDGET_XML.@texte = texte_GUI.text + + urlVariables.xmldef = "" + BUDGET_XML.toXMLString(); + + CTI_Utilitaires.startRequestHTTP("modules/activite/php/httpService_ACTI_budgetManager_setBudget.php", urlVariables, exec, true, this.parentApplication) + + function exec(resultatService:XML):void + { + + getData() + + detailBox.width = 0 + listBox.percentWidth = 100 + currentBudgetItem = null; + budgetUpdated = false; + } + + } + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/swf/CTI_ACTI_ConsoManager.mxml b/swf/CTI_ACTI_ConsoManager.mxml new file mode 100644 index 0000000..c564534 --- /dev/null +++ b/swf/CTI_ACTI_ConsoManager.mxml @@ -0,0 +1,599 @@ + + + + 0) { + result = false + + var fullText:String = "" + for each (var attributeNode:XML in item.@*) { + var attributeName:String = attributeNode.name().toString() + var attributeValue:String = attributeNode.toString() + if (attributeName != "oid" && attributeValue.toString() != "") { + fullText = fullText + ' ' + attributeValue.toUpperCase() + } + } + + var resultMot:Boolean = true + for each (var mot:String in mots) { + if (fullText.indexOf(mot) < 0) { + resultMot = false + break; + } + } + if (resultMot) { + result = true + } + + } + + + return result; + } + + public function getRecord():void { + if (recordUpdated == true) { + return; + } + if (list_GUI.selectedIndex < 0) { + return; + } + currendRecordItem = list_GUI.selectedItem as XML; + showDetail(); + } + + public function showDetail():void { + var i:Number; + var item:XML; + if (currendRecordItem == null) { + return; + } + oid_GUI.text = currendRecordItem.@oid.toString(); + + code_GUI.text = currendRecordItem.@code.toString(); + texte_GUI.text = currendRecordItem.@texte.toString(); + + if (tableCode == "ENC") { + ENC_dateencours_GUI.text = currendRecordItem.@dateencours.toString(); + } + + + recordUpdated = false; + detailBox_GUI.visible = true; + detailBox_GUI.includeInLayout = true; + } + + private function askCancel():void { + if (recordUpdated == false) { + hideRecord(); + return; + } + Alert.yesLabel = "OUI"; + Alert.noLabel = "NON"; + var alert:Alert = Alert.show("Les données ont été changées, désirez vous les annuler ?", title, 3, this, alertClickHandler, question_class); + + function alertClickHandler(event:CloseEvent):void { + if (event.detail==Alert.YES) { + hideRecord(); + } + } + } + + private function hideRecord():void { + detailBox_GUI.visible = false; + detailBox_GUI.includeInLayout = false; + currendRecordItem = null; + recordUpdated = false; + } + + private function askDelete():void { + Alert.yesLabel = "OUI"; + Alert.noLabel = "NON"; + var alert:Alert = Alert.show("Désirez vous vraiment supprimer " + texte_GUI.text + " ?", title, 3, this, alertClickHandler, question_class); + + + function alertClickHandler(event:CloseEvent):void { + if (event.detail==Alert.YES) { + deleteRecord() + } + } + } + + public function deleteRecord():void { + updateRecord("delete"); + } + + public function copyRecord():void { + updateRecord("copy"); + } + + public function saveRecord():void { + updateRecord("save"); + } + + public function updateRecord(action:String):void { + var urlVariables:URLVariables = new URLVariables() + urlVariables.tableName = tableName; + urlVariables.action = action; + urlVariables.softCode = softCode; + var recordNode:XML = new XML(); + recordNode.@oid = oid_GUI.text; + recordNode.@code = code_GUI.text; + recordNode.@texte = texte_GUI.text; + + if (tableCode == "ENC") { + recordNode.@dateencours = ENC_dateencours_GUI.text; + } + + + urlVariables.recordNode = recordNode.toXMLString(); + CTI_Utilitaires.startRequestHTTP("modules/activite/php/httpService_ACTI_consoManager_setData.php",urlVariables,exec,true,this.parentApplication) + function exec(resultatService:XML):void { + + var returnCode:String = resultatService.@returnCode; + var returnTexte:String = resultatService.@returnTexte; + if (returnCode == "KO") { + CTI_Utilitaires.alert_error("Mise à jour", "Mise à jour non effectuée : " + returnTexte); + } + else { + var updatedOids:String = resultatService.@updatedOids.toString(); + + getData(false,updatedOids); + + currendRecordItem = null; + recordUpdated = false; + detailBox_GUI.visible = false; + detailBox_GUI.includeInLayout = false; + } + + } + } + + public function print():void { + var printReport:CTI_Print = new CTI_Print(); + if (printReport.start("ECO_TablesManager", titlePrint) == false) { + return; + } + printReport.addDataGrid(list_GUI) + printReport.print(); + } + + public function exportExcel():void { + var xml:XML = new XML(); + var ongletNode:XML; + var similiTabNode:XML; + var selectionsNode:XML; + var datagridNode:XML; + var columnNode:XML; + var dataNode:XML; + var rowNode:XML; + xml.@viewName = this.viewName; + xml.@title = this.title; + selectionsNode = new XML(); + selectionsNode.displayText = ""; + if (textSearch_GUI.text != "") { + selectionsNode.@displayText = selectionsNode.displayText + "(Filtre : " + textSearch_GUI.text + ") "; + } + xml.appendChild(selectionsNode); + ongletNode = new XML(); + ongletNode.@excelLabel = tableCode; + xml.appendChild(ongletNode); + similiTabNode = new XML(); + similiTabNode.@excelLabel = "Liste"; + ongletNode.appendChild(similiTabNode); + datagridNode = new XML(); + datagridNode.@total = "false"; + ongletNode.appendChild(datagridNode); + for each (var column:DataGridColumn in list_GUI.columns) { + columnNode = new XML(); + columnNode.@dataField = column.dataField; + columnNode.@headerText = column.headerText; + columnNode.@type = "Char"; + columnNode.@textAlign = column.getStyle("textAlign"); + datagridNode.appendChild(columnNode); + } + dataNode = new XML(); + similiTabNode.appendChild(dataNode); + for each (var itemNode:XML in list_collection) { + if (itemNode.@oid != "-1") { + rowNode = new XML() + var c:int = 0; + for each (column in list_GUI.columns) { + c++; + rowNode.@["c" + c.toString()] = itemNode[column.dataField] + } + dataNode.appendChild(rowNode); + } + } + CTI_ExcelUtilitaires.exportExcel(xml); + } + + public function exportPDF():void { + var xml:XML = new XML(); + var ongletNode:XML; + var selectionsNode:XML; + var datagridNode:XML; + var columnNode:XML; + var dataNode:XML; + var rowNode:XML; + xml.@viewName = this.viewName; + xml.@title = this.title; + selectionsNode = new XML(); + selectionsNode.displayText = ""; + if (textSearch_GUI.text != "") { + selectionsNode.displayText = selectionsNode.displayText + "(Filtre : " + textSearch_GUI.text + ") "; + } + xml.appendChild(selectionsNode); + ongletNode = new XML(); + ongletNode.@excelLabel = tableCode; + xml.appendChild(ongletNode); + datagridNode = new XML(); + datagridNode.@total = "false"; + ongletNode.appendChild(datagridNode); + for each (var column:DataGridColumn in list_GUI.columns) { + columnNode = new XML(); + columnNode.@dataField = column.dataField; + columnNode.@headerText = column.headerText; + columnNode.@type = "Char"; + columnNode.@textAlign = column.getStyle("textAlign"); + datagridNode.appendChild(columnNode); + } + dataNode = new XML(); + ongletNode.appendChild(dataNode); + for each (var itemNode:XML in list_collection) { + if (itemNode.@oid != "-1") { + rowNode = new XML() + var c:int = 0; + for each (column in list_GUI.columns) { + c++; + rowNode.@["c" + c.toString()] = itemNode[column.dataField] + } + dataNode.appendChild(rowNode); + } + } + CTI_PDFUtilitaires.exportPDF(xml); + xml = null; + } + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/swf/CTI_ACTI_Synchronize.mxml b/swf/CTI_ACTI_Synchronize.mxml new file mode 100644 index 0000000..6bbedb4 --- /dev/null +++ b/swf/CTI_ACTI_Synchronize.mxml @@ -0,0 +1,255 @@ + + + + + l'intégralité des données permet d'actualiser en cours de journée la base complète (occupation, facturation, règlements)." + synchronizeAll_description_GUI.htmlText = synchronizeAll_description_GUI.htmlText + "
ATTENTION" + synchronizeAll_description_GUI.htmlText = synchronizeAll_description_GUI.htmlText + "
Ce traitement s'exécute normalement toutes les nuits" + synchronizeAll_description_GUI.htmlText = synchronizeAll_description_GUI.htmlText + "
Si vous souhaitez néanmoins le lancer, il s'exécutera en batch." + synchronizeAll_description_GUI.htmlText = synchronizeAll_description_GUI.htmlText + "
Durant le temps de synchronisation, les tableaux ne seront pas disponibles." + + + CTI_Utilitaires.startRequestHTTP("modules/activite/php/ACTI_getSynchronize.php",urlVariables,exec,true,this.parentApplication) + + function exec(resultatService:XML):void { + + var initDft:Boolean = false; + + jobsHistory_length = resultatService.JOB.length() + jobsHistory_list.loadXMLList(resultatService.JOB) + + var _sort:Sort = new Sort() + _sort.fields = [new SortField("start", true, true, false)]; + jobsHistory_list.sort = _sort; + jobsHistory_list.refresh() + + + var lastjobs_node:XML = resultatService.LASTJOBS[0]; + + last_job_all_GUI.text = lastjobs_node.@last_all_active.toString() + if (last_job_all_GUI.text == "") { + last_job_all_GUI.text = lastjobs_node.@last_all_endded.toString() + } + + + setTimeout(setBuildComplete, 1000); + + } + + + } + + private function setBuildComplete():void { + + buildComplete = true; + } + + + + + private function resize():void { + + + } + + + + + + private function synchronizeAll():void { + + CTI_Utilitaires.question_yesNo("Synchronisation des données", "Confirmez vous la synchronisation de toutes données ?", responseFunction) + + function responseFunction(event:CloseEvent):void { + + if (event.detail != Alert.YES) { + return; + } + + var urlVariables:URLVariables = new URLVariables() + urlVariables.option = "all"; + + CTI_Utilitaires.startRequestHTTP("modules/activite/php/ACTI_execSynchronize.php",urlVariables,exec,true,this.parentApplication) + + function exec(resultatService:XML):void { + if (resultatService.@returnCode.toString() == "KO") { + CTI_Utilitaires.alert_error("Synchronisation des données", resultatService.@returnTexte.toString()); + } + else { + CTI_Utilitaires.alert_info("Synchronisation des données", "Synchronisation de toutes données démarrée en batch sur le serveur"); + getData(); + } + } + + } + + } + + + private function displayLog():void { + + + var job:Object; + + + if (historique_UI.selectedIndex < 0) { + return + } + job = historique_UI.selectedItem; + + if (job.logFile.toString() == "") { + return; + } + + var urlVariables:URLVariables = new URLVariables(); + urlVariables.longfile = job.logFile.toString(); + + + CTI_Utilitaires.openURL("modules/outils/php/getLogFile.php",urlVariables,"iCTI_logFile") + + } + + + + + + ]]> +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/swf/CTI_ACTI_TablesManager.mxml b/swf/CTI_ACTI_TablesManager.mxml new file mode 100644 index 0000000..b370f57 --- /dev/null +++ b/swf/CTI_ACTI_TablesManager.mxml @@ -0,0 +1,7410 @@ + + + + + 0) { + BUI_indicateurs_TAB_GUI.selectedIndex = 0; + } + + var urlVariables:URLVariables = new URLVariables(); + urlVariables.tableName = tableName; + if (firstCall) { + urlVariables.firstCall = "1"; + } + else { + urlVariables.firstCall = "0"; + } + + CTI_Utilitaires.startRequestHTTP("modules/activite/php/ACTI_getTableRecords.php", urlVariables, exec, true, this.parentApplication); + + function exec(resultatService:XML):void { + + if (list_collection != null) { + list_collection.filterFunction = null; + list_collection.refresh(); + } + + if (tableCode == "ENC") { + if (list1_collection != null) { + list1_collection.filterFunction = null; + list1_collection.refresh(); + } + if (list2_collection != null) { + list2_collection.filterFunction = null; + list2_collection.refresh(); + } + if (list3_collection != null) { + list3_collection.filterFunction = null; + list3_collection.refresh(); + } + if (list4_collection != null) { + list4_collection.filterFunction = null; + list4_collection.refresh(); + } + if (list5_collection != null) { + list5_collection.filterFunction = null; + list5_collection.refresh(); + } + if (list8_collection != null) { + list8_collection.filterFunction = null; + list8_collection.refresh(); + } + } + + if (MED_medecins_a_regrouper_GUI.dataProvider != null) { + MED_medecins_a_regrouper_GUI.dataProvider.filterFunction = null; + MED_medecins_a_regrouper_GUI.dataProvider.refresh(); + } + if (MED_medecins_regroupes_GUI.dataProvider != null) { + MED_medecins_regroupes_GUI.dataProvider.filterFunction = null; + MED_medecins_regroupes_GUI.dataProvider.refresh(); + } + + if (tableCode != "ENC") { + list_collection.loadXMLList(resultatService.RECORD); + } + if (tableCode == "ENC") { + list1_collection.loadXMLList(resultatService.RECORD.(@type_parametre=='1')); + list2_collection.loadXMLList(resultatService.RECORD.(@type_parametre=='2')); + list3_collection.loadXMLList(resultatService.RECORD.(@type_parametre=='3')); + list4_collection.loadXMLList(resultatService.RECORD.(@type_parametre=='4')); + list5_collection.loadXMLList(resultatService.RECORD.(@type_parametre=='5')); + list8_collection.loadXMLList(resultatService.RECORD.(@type_parametre=='8')); + } + + switch (tableCode) { + + case "MED" : + MED_specialite_interne_GUI.dataProvider = new CTI_ArrayCollection(); + MED_specialite_interne_GUI.dataProvider.loadXMLList(resultatService.COMBO_SPI.RECORD); + + MED_medecins_a_regrouper_GUI.dataProvider = new CTI_ArrayCollection(); + MED_medecins_a_regrouper_GUI.dataProvider.loadXMLList(resultatService.LIST_MDA.RECORD); + + MED_medecins_regroupes_GUI.dataProvider = new CTI_ArrayCollection(); + MED_medecins_regroupes_GUI.dataProvider.loadXMLList(resultatService.LIST_MDA.RECORD); + + MED_medecins_a_regrouper_searchChange(); + break; + + case "SER" : + SER_finess_GUI.dataProvider = new CTI_ArrayCollection(); + SER_finess_GUI.dataProvider.loadXMLList(resultatService.COMBO_FINESS.RECORD); + SER_mode_traitement_GUI.dataProvider = new CTI_ArrayCollection(); + SER_mode_traitement_GUI.dataProvider.loadXMLList(resultatService.COMBO_MTR.RECORD); + SER_dmt_GUI.dataProvider = new CTI_ArrayCollection(); + SER_dmt_GUI.dataProvider.loadXMLList(resultatService.COMBO_DMT.RECORD); + SER_etage_par_defaut_GUI.dataProvider = new CTI_ArrayCollection(); + SER_etage_par_defaut_GUI.dataProvider.loadXMLList(resultatService.COMBO_ETAGE.RECORD); + SER_etage_force_GUI.dataProvider = new CTI_ArrayCollection(); + SER_etage_force_GUI.dataProvider.loadXMLList(resultatService.COMBO_ETAGE.RECORD); + SER_activite_par_defaut_GUI.dataProvider = new CTI_ArrayCollection(); + SER_activite_par_defaut_GUI.dataProvider.loadXMLList(resultatService.COMBO_ACTIVITE.RECORD); + SER_activite_force_GUI.dataProvider = new CTI_ArrayCollection(); + SER_activite_force_GUI.dataProvider.loadXMLList(resultatService.COMBO_ACTIVITE.RECORD); + SER_medecin_par_defaut_GUI.dataProvider = new CTI_ArrayCollection(); + SER_medecin_par_defaut_GUI.dataProvider.loadXMLList(resultatService.COMBO_MDA.RECORD); + SER_medecin_force_GUI.dataProvider = new CTI_ArrayCollection(); + SER_medecin_force_GUI.dataProvider.loadXMLList(resultatService.COMBO_MDA.RECORD); + break; + + case "ETA" : + ETA_finess_GUI.dataProvider = new CTI_ArrayCollection(); + ETA_finess_GUI.dataProvider.loadXMLList(resultatService.COMBO_FINESS.RECORD); + ETA_service_force_GUI.dataProvider = new CTI_ArrayCollection(); + ETA_service_force_GUI.dataProvider.loadXMLList(resultatService.COMBO_SERVICE.RECORD); + + break; + + + case "LIT" : + LIT_etages_etages_provider.loadXMLList(resultatService.COMBO_ETAGE.RECORD); + break; + + case "UMD" : + UMD_etage_par_defaut_GUI.dataProvider = new CTI_ArrayCollection(); + UMD_etage_par_defaut_GUI.dataProvider.loadXMLList(resultatService.COMBO_ETAGE.RECORD); + UMD_etage_force_GUI.dataProvider = new CTI_ArrayCollection(); + UMD_etage_force_GUI.dataProvider.loadXMLList(resultatService.COMBO_ETAGE.RECORD); + break; + + case "SRU" : + SRU_compte_id_GUI.dataProvider = new CTI_ArrayCollection() + SRU_compte_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_CPT.RECORD) + SRU_prestation_forcee_id_GUI.dataProvider = new CTI_ArrayCollection() + SRU_prestation_forcee_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_PRESTATION.RECORD) + break; + + case "DTG" : + DTG_service_1_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_service_1_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_SERVICE.RECORD) + DTG_service_2_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_service_2_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_SERVICE.RECORD) + DTG_service_3_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_service_3_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_SERVICE.RECORD) + DTG_service_4_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_service_4_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_SERVICE.RECORD) + DTG_service_5_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_service_5_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_SERVICE.RECORD) + DTG_service_6_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_service_6_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_SERVICE.RECORD) + DTG_service_7_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_service_7_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_SERVICE.RECORD) + DTG_service_8_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_service_8_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_SERVICE.RECORD) + DTG_service_9_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_service_9_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_SERVICE.RECORD) + DTG_rubrique_1_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_rubrique_1_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_RUBRIQUE.RECORD) + DTG_rubrique_2_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_rubrique_2_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_RUBRIQUE.RECORD) + DTG_rubrique_3_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_rubrique_3_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_RUBRIQUE.RECORD) + DTG_rubrique_4_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_rubrique_4_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_RUBRIQUE.RECORD) + DTG_rubrique_5_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_rubrique_5_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_RUBRIQUE.RECORD) + DTG_rubrique_6_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_rubrique_6_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_RUBRIQUE.RECORD) + DTG_rubrique_7_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_rubrique_7_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_RUBRIQUE.RECORD) + DTG_rubrique_8_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_rubrique_8_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_RUBRIQUE.RECORD) + DTG_rubrique_9_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_rubrique_9_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_RUBRIQUE.RECORD) + DTG_rubrique_10_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_rubrique_10_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_RUBRIQUE.RECORD) + + DTG_to_rubrique_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_to_rubrique_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_RUBRIQUE.RECORD) + DTG_to_prestation_id_GUI.dataProvider = new CTI_ArrayCollection() + DTG_to_prestation_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_PRESTATION.RECORD) + break; + + case "ACF" : + ACF_etage_par_defaut_GUI.dataProvider = new CTI_ArrayCollection(); + ACF_etage_par_defaut_GUI.dataProvider.loadXMLList(resultatService.COMBO_ETAGE.RECORD); + ACF_etage_force_GUI.dataProvider = new CTI_ArrayCollection(); + ACF_etage_force_GUI.dataProvider.loadXMLList(resultatService.COMBO_ETAGE.RECORD); + break; + + case "TPY" : + TPY_grand_regime_GUI.dataProvider = new CTI_ArrayCollection(); + TPY_grand_regime_GUI.dataProvider.loadXMLList(resultatService.COMBO_GRG.RECORD); + break; + + case "FSJ" : + if (firstCall) { + FSJ_medecin_sejour_GUI.dataProvider = new CTI_ArrayCollection(); + FSJ_medecin_sejour_GUI.dataProvider.loadXMLList(resultatService.COMBO_MDA.RECORD); + FSJ_medecin_sejour_GUI.dataProvider[0].label = "Pas de forçage" + FSJ_service_facturation_GUI.dataProvider = new CTI_ArrayCollection(); + FSJ_service_facturation_GUI.dataProvider.loadXMLList(resultatService.COMBO_SERVICE.RECORD); + FSJ_service_facturation_GUI.dataProvider[0].label = "Pas de forçage" + FSJ_etage_GUI.dataProvider = new CTI_ArrayCollection(); + FSJ_etage_GUI.dataProvider.loadXMLList(resultatService.COMBO_ETAGE.RECORD); + FSJ_etage_GUI.dataProvider[0].label = "Pas de forçage" + FSJ_encours_1_from_date_GUI.dataProvider = new CTI_ArrayCollection(); + FSJ_encours_1_from_date_GUI.dataProvider.loadXMLList(resultatService.COMBO_MOIS.RECORD); + FSJ_encours_1_from_date_GUI.dataProvider[0].label = "Pas de forçage encours" + FSJ_ARRAY_SEJ_XML = new XML(resultatService.ARRAY_SEJ[0]); + } + break; + + case "CPT" : + if (firstCall) { + CPT_compte_tva_id_GUI.dataProvider = new CTI_ArrayCollection() + } + CPT_compte_tva_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_CPT.RECORD) + break; + + case "BUD" : + BUD_indicateur_id_dataProvider = new Array(); + BUD_indicateur_id_dataProvider_oids = new Array(); + for each (var node:XML in resultatService.COMBO_INDICATEUR.RECORD) { + var comboText:String = node.@texte.toString() + + String.fromCharCode(9) + + String.fromCharCode(9) + + String.fromCharCode(9) + + String.fromCharCode(9) + + String.fromCharCode(9) + + String.fromCharCode(9) + + String.fromCharCode(9) + + String.fromCharCode(9) + + String.fromCharCode(9) + + String.fromCharCode(9) + + String.fromCharCode(9) + + String.fromCharCode(9) + + String.fromCharCode(9) + + String.fromCharCode(9) + + String.fromCharCode(9) + + String.fromCharCode(0) + node.@oid.toString() + String.fromCharCode(0); + BUD_indicateur_id_dataProvider.push(comboText); + BUD_indicateur_id_dataProvider_oids[Number(node.@oid.toString())] = comboText; + } + break; + + case "BUR" : + BUR_budget_cle_id_GUI.dataProvider = new CTI_ArrayCollection(); + BUR_budget_cle_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_BUDGET_CLE.RECORD); + break; + + case "EXC" : + if (resultatService.GENERAL_SETTINGS[0].@EXPERT_ACTIVE == "1") { + EXC_EXPERT_ACTIVE_GUI.selected = true; + } + else { + EXC_EXPERT_ACTIVE_GUI.selected = false; + } + EXC_EXPERT_DATE_DEBUT_GUI.text = resultatService.GENERAL_SETTINGS[0].@EXPERT_DATE_DEBUT.toString(); + + ref_list_collection.loadXMLList(resultatService.REFRECORD); + + if (ref_list_collection.length > 0) { + has_refsettings = true; + } + + // Charge la liste des prestataires Activité + _prestataire_collection = new CTI_ArrayCollection(); + _prestataire_collection.loadXMLList(resultatService.PRESTATAIRE); + break; + + + case "FAC" : + break; + + case "FAR" : + FAR_filiere_soin_id_GUI.dataProvider = new CTI_ArrayCollection(); + FAR_filiere_soin_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_FAC.RECORD); + break; + + case "FSO" : + break; + + case "FSR" : + FSR_filiere_soin_id_GUI.dataProvider = new CTI_ArrayCollection(); + FSR_filiere_soin_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_FSO.RECORD); + break; + + case "POR" : + POR_pole_id_GUI.dataProvider = new CTI_ArrayCollection(); + POR_pole_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_POL.RECORD); + break; + + case "CAR" : + CAR_compte_produit_analytique_id_GUI.dataProvider = new CTI_ArrayCollection(); + CAR_compte_produit_analytique_id_GUI.dataProvider.loadXMLList(resultatService.COMBO_CPT.RECORD); + break; + + case "ENC" : + for each (node in resultatService.RECORD) { + if (node.@code.toString() == "ENCOURSNOW") { + ENC_ENCOURSNOW_GUI.text = node.@valeur.toString() + } + if (node.@code.toString() == "ENCOURSNEXT") { + ENC_ENCOURSNEXT_GUI.text = node.@valeur.toString() + } + } + break; + + case "COV" : + + break; + } + + searchChange(); + + setTimeout(setBuildComplete, 1000); + } + } + + + + private function setBuildComplete():void { + buildComplete = true; + } + + + + private function resize():void { + + } + + + + private function searchChange():void { + + if (list_collection.filterFunction == null) { + list_collection.filterFunction = filterFunction; + } + + textSearch_Array = textSearch_GUI.text.toString().toUpperCase().split(" ") + list_collection.refresh() + + } + + + + // Filter function + public function filterFunction(item:Object):Boolean { + + var result:Boolean = true; + + if (Number(item.oid) >= 0) { + + // standard + if (textSearch_GUI.text != "") { + result = true; + + for each (var word:String in textSearch_Array) { + var result2:Boolean = false + for each (var attributeName:String in list_collection.attributesArray) { + if (item[attributeName].toString().toUpperCase().indexOf(word) >= 0) { + result2 = true; + break; + } + } + if (result2 == false) { + result = false + break + } + } + } + + if (result == true) { + if (refSearch_GUI.selected == true) { + if (item.hasOwnProperty("nbref")) { + if (Number(item.nbref.toString()) <= 0) { + if (item.hasOwnProperty("nbref2")) { + if (Number(item.nbref.toString()) <= 0) { + result = false; + } + } + else { + result = false; + } + } + } + } + } + } + + return result; + } + + + + private function MED_medecins_a_regrouper_searchChange():void { + + if (MED_medecins_a_regrouper_GUI.dataProvider.filterFunction == null) { + MED_medecins_a_regrouper_GUI.dataProvider.filterFunction = MED_medecins_a_regrouper_filterFunction; + } + MED_medecins_a_regrouper_GUI.dataProvider.refresh(); + } + + + + // Filter function + public function MED_medecins_a_regrouper_filterFunction(item:Object):Boolean { + + var result:Boolean = true; + + if (MED_medecins_a_regrouper_textSearch_GUI.text != "") { + result = false; + if (item.nom_adm.toString().toUpperCase().indexOf(MED_medecins_a_regrouper_textSearch_GUI.text.toUpperCase()) >= 0) { + result = true; + } + } + if (result == true && currendRecordItem != null) { + if (item.oid.toString() == currendRecordItem.oid.toString()) { + result = false; + } + } + if (result == true) { + if (MED_medecins_regroupes_oids_GUI.text.indexOf("," + item.oid.toString() + ",") >= 0) { + result = false;; + } + } + + return result; + } + + + + public function MED_medecins_regroupes_filterFunction(item:Object):Boolean { + + var result:Boolean = true; + + if (result == true) { + if (MED_medecins_regroupes_oids_GUI.text.indexOf("," + item.oid.toString() + ",") < 0) { + result = false; + } + } + + return result; + } + + + + // Ajout dans regroupes + private function MED_medecins_regroupes_add():void { + + for each (var item:Object in MED_medecins_a_regrouper_GUI.selectedItems) { + MED_medecins_regroupes_oids_GUI.text = MED_medecins_regroupes_oids_GUI.text + item.oid + ","; + } + + MED_medecins_a_regrouper_searchChange(); + MED_medecins_regroupes_GUI.dataProvider.refresh(); + toggleUpdate(true); + } + + + + // enlever dans regroupes + private function MED_medecins_regroupes_remove():void { + + for each (var item:Object in MED_medecins_regroupes_GUI.selectedItems) { + var regexp:RegExp = new RegExp("," + item.oid + ",", "g"); + MED_medecins_regroupes_oids_GUI.text = MED_medecins_regroupes_oids_GUI.text.replace(regexp, ","); + } + + MED_medecins_a_regrouper_searchChange(); + MED_medecins_regroupes_GUI.dataProvider.refresh(); + toggleUpdate(true); + } + + + + public function addRecord():void { + + if (currendRecordItem == null) { + + currendRecordItem = new Object(); + currendRecordItem.oid = "-1"; + currendRecordItem.code = ""; + currendRecordItem.texte = ""; + currendRecordItem.texte_court = ""; + currendRecordItem.nbref = 0; + + switch (tableCode) { + + case "EXC" : + currendRecordItem.texte_abrege = ""; + currendRecordItem.description = ""; + currendRecordItem.is_datim = "0"; + currendRecordItem.is_hide = "0"; + currendRecordItem.is_active = "1"; + currendRecordItem.is_cti = "0"; + currendRecordItem.gravite = "0"; + currendRecordItem.gravite_texte = ""; + currendRecordItem.etat_cible = "0"; + currendRecordItem.etat_cible_texte = "Tous"; + currendRecordItem.complement = ""; + currendRecordItem.rule_oid1 = "0"; + currendRecordItem.sqlcmd_where1 = ""; + currendRecordItem.sqlcmd_justificatif1 = ""; + currendRecordItem.rule_oid2 = "0"; + currendRecordItem.sqlcmd_where2 = ""; + currendRecordItem.sqlcmd_justificatif2 = ""; + currendRecordItem.rule_oid3 = "0"; + currendRecordItem.sqlcmd_where3 = ""; + currendRecordItem.sqlcmd_justificatif3 = ""; + currendRecordItem.last_execution_timestamp = ""; + currendRecordItem.last_execution_ok = ""; + currendRecordItem.prestataire_id = "-1"; + currendRecordItem.prestataire_texte = "Tous"; + currendRecordItem.table1 = "0"; + currendRecordItem.table2 = "0"; + currendRecordItem.table3 = "0"; + currendRecordItem.is_alert = "0"; + break; + + case "MED" : + currendRecordItem.nom = ""; + currendRecordItem.prenom = ""; + currendRecordItem.numero_ordre = ""; + currendRecordItem.code_original = ""; + currendRecordItem.specialite_interne_id = 0; + currendRecordItem.medecins_regroupes_oids = ","; + break; + + case "FSJ" : + currendRecordItem.est_ignore = "0"; + currendRecordItem.est_ignore_texte = ""; + currendRecordItem.medecin_sejour_id = "0"; + currendRecordItem.medecin_sejour_texte = ""; + currendRecordItem.service_facturation_id = "0"; + currendRecordItem.service_facturation_texte = ""; + currendRecordItem.etage_id = "0"; + currendRecordItem.etage_texte = ""; + currendRecordItem.type_sejour = "0"; + currendRecordItem.type_sejour_texte = ""; + + currendRecordItem.encours_1_from_date = "2099-12-31"; + currendRecordItem.encours_1_from_date = ""; + currendRecordItem.encours_1_est_ignore = "0"; + currendRecordItem.encours_1_est_ignore_texte = ""; + break; + + case "CPT" : + currendRecordItem.oid = "-1"; + currendRecordItem.code = ""; + currendRecordItem.texte = ""; + currendRecordItem.texte_court = ""; + currendRecordItem.code_original = ""; + currendRecordItem.compte_tva_id = "0"; + currendRecordItem.taux_tva = "0" + currendRecordItem.tva_texte = ""; + + break; + + case "BUD" : + var year:Number = new Date().getFullYear(); + + currendRecordItem.date_debut = "01/01/" + year; + currendRecordItem.date_fin = "31/12/" + year; + break; + + case "BUC" : + currendRecordItem.code_original = ""; + break; + + case "BUR" : + currendRecordItem.priorite = "5000"; + currendRecordItem.budget_cle_id = "0"; + + currendRecordItem.liste_specialite = ""; + currendRecordItem.liste_medecin = ""; + currendRecordItem.liste_service = ""; + currendRecordItem.liste_acte = ""; + currendRecordItem.liste_rubrique = ""; + currendRecordItem.liste_ghm = ""; + currendRecordItem.liste_sauf_ghm = ""; + currendRecordItem.liste_diagnostic_principal = ""; + currendRecordItem.liste_diagnostic_relie = ""; + currendRecordItem.liste_diagnostic_associe = ""; + currendRecordItem.liste_finess = ""; + break; + + case "FAR" : + currendRecordItem.priorite = "5000"; + currendRecordItem.forme_activite_id = "0"; + + currendRecordItem.liste_type_sejour = ""; + currendRecordItem.liste_specialite = ""; + currendRecordItem.liste_medecin = ""; + currendRecordItem.liste_service = ""; + currendRecordItem.liste_etage = ""; + currendRecordItem.liste_unite_fonctionnelle = ""; + currendRecordItem.liste_service_entree = ""; + currendRecordItem.liste_etage_entree = ""; + currendRecordItem.liste_unite_fonctionnelle_entree = ""; + currendRecordItem.liste_acte = ""; + currendRecordItem.liste_rubrique = ""; + currendRecordItem.liste_prestation = ""; + currendRecordItem.liste_ghm = ""; + currendRecordItem.liste_sauf_ghm = ""; + currendRecordItem.liste_diagnostic_principal = ""; + currendRecordItem.liste_diagnostic_relie = ""; + currendRecordItem.liste_diagnostic_associe = ""; + currendRecordItem.liste_finess = ""; + break; + + case "FSR" : + currendRecordItem.priorite = "5000"; + currendRecordItem.filiere_soin_id = "0"; + + currendRecordItem.liste_type_sejour = ""; + currendRecordItem.liste_specialite = ""; + currendRecordItem.liste_medecin = ""; + currendRecordItem.liste_service = ""; + currendRecordItem.liste_etage = ""; + currendRecordItem.liste_unite_fonctionnelle = ""; + currendRecordItem.liste_service_entree = ""; + currendRecordItem.liste_etage_entree = ""; + currendRecordItem.liste_unite_fonctionnelle_entree = ""; + currendRecordItem.liste_acte = ""; + currendRecordItem.liste_rubrique = ""; + currendRecordItem.liste_prestation = ""; + currendRecordItem.liste_ghm = ""; + currendRecordItem.liste_sauf_ghm = ""; + currendRecordItem.liste_diagnostic_principal = ""; + currendRecordItem.liste_diagnostic_relie = ""; + currendRecordItem.liste_diagnostic_associe = ""; + currendRecordItem.liste_finess = ""; + break; + + case "POR" : + currendRecordItem.priorite = "5000"; + currendRecordItem.pole_id = "0"; + + currendRecordItem.liste_type_sejour = ""; + currendRecordItem.liste_specialite = ""; + currendRecordItem.liste_medecin = ""; + currendRecordItem.liste_service = ""; + currendRecordItem.liste_etage = ""; + currendRecordItem.liste_unite_fonctionnelle = ""; + currendRecordItem.liste_acte = ""; + currendRecordItem.liste_rubrique = ""; + currendRecordItem.liste_prestation = ""; + currendRecordItem.liste_ghm = ""; + currendRecordItem.liste_sauf_ghm = ""; + currendRecordItem.liste_diagnostic_principal = ""; + currendRecordItem.liste_diagnostic_relie = ""; + currendRecordItem.liste_diagnostic_associe = ""; + currendRecordItem.liste_finess = ""; + break; + + case "CAR" : + currendRecordItem.priorite = "5000"; + currendRecordItem.compte_produit_analytique_id = "0"; + + currendRecordItem.liste_type_sejour = ""; + currendRecordItem.liste_specialite = ""; + currendRecordItem.liste_medecin = ""; + currendRecordItem.liste_ghm = ""; + currendRecordItem.liste_sauf_ghm = ""; + currendRecordItem.liste_diagnostic_principal = ""; + currendRecordItem.liste_diagnostic_relie = ""; + currendRecordItem.liste_diagnostic_associe = ""; + currendRecordItem.liste_acte = ""; + currendRecordItem.liste_service = ""; + currendRecordItem.liste_etage = ""; + currendRecordItem.liste_unite_fonctionnelle = ""; + currendRecordItem.liste_rubrique = ""; + currendRecordItem.liste_compte_produit = ""; + currendRecordItem.liste_sauf_compte_produit = ""; + currendRecordItem.liste_prestation = ""; + currendRecordItem.liste_sauf_prestation = ""; + currendRecordItem.liste_finess = ""; + break; + + } + + showDetail(); + } + } + + + + public function getRecord(event:ListEvent = null):void { + + // Spécial Controles Expert + if (tableCode == "EXC") { + if (event.columnIndex == 0) { + return; + } + if (qimport) { + return; + } + } + if (recordUpdated == true) { + return; + } + + if (list_GUI.selectedIndex < 0) { + return; + } + + currendRecordItem = list_GUI.selectedItem as Object; + + showDetail(); + } + + + + public function showDetail():void { + + var i:Number; + var item:Object; + + if (currendRecordItem == null) { + return; + } + + switch(tableCode) { + + case "SER" : + + fillFields(new Array("oid", "nbref", "code", "texte", "texte_court", "code_original", "nb_lits", "nb_cp", + "est_budget_global", "est_sans_mouvement", "avec_facturation_intermediaire", + "option_jour_ferme", "prestations_presence", "particularites_encours","sej_sans_acte_fictif")); + + setSelectedIndex(SER_type_t2a_GUI, currendRecordItem.type_t2a.toString(), 'data'); + setSelectedIndex(SER_finess_GUI, currendRecordItem.finess_id.toString(), 'oid'); + setSelectedIndex(SER_mode_traitement_GUI, currendRecordItem.mode_traitement_id.toString(), 'oid'); + setSelectedIndex(SER_dmt_GUI, currendRecordItem.dmt_id.toString(), 'oid'); + setSelectedIndex(SER_etage_par_defaut_GUI, currendRecordItem.etage_par_defaut_id.toString(), 'oid'); + setSelectedIndex(SER_etage_force_GUI, currendRecordItem.etage_force_id.toString(), 'oid'); + setSelectedIndex(SER_activite_par_defaut_GUI, currendRecordItem.activite_par_defaut_id.toString(), 'oid'); + setSelectedIndex(SER_activite_force_GUI, currendRecordItem.activite_force_id.toString(), 'oid'); + setSelectedIndex(SER_medecin_par_defaut_GUI, currendRecordItem.medecin_par_defaut_id.toString(), 'oid'); + setSelectedIndex(SER_medecin_force_GUI, currendRecordItem.medecin_force_id.toString(), 'oid'); + setSelectedIndex(SER_type_sejour_GUI, currendRecordItem.type_sejour.toString(), 'data'); + setSelectedIndex(SER_est_sans_facturation_GUI, currendRecordItem.est_sans_facturation.toString(), 'data'); + setSelectedIndex(SER_mode_calcul_journees_GUI, currendRecordItem.mode_calcul_journees.toString(), 'data'); + + + SER_histo.removeEventListener(CollectionEvent.COLLECTION_CHANGE , SER_histo_changeEvent); + SER_histo.loadXMLList(currendRecordItem.originalXMLnode.HISTO); + SER_histo.addEventListener(CollectionEvent.COLLECTION_CHANGE , SER_histo_changeEvent); + break; + + case "ACF" : + + fillFields(new Array("oid", "nbref", "code", "texte", "texte_court", "code_original")); + + setSelectedIndex(ACF_etage_par_defaut_GUI, currendRecordItem.etage_par_defaut_id.toString(), 'oid'); + setSelectedIndex(ACF_etage_force_GUI, currendRecordItem.etage_force_id.toString(), 'oid'); + break; + + case "DIV" : + + fillFields(new Array("oid", "nbref", "code", "texte", "valeur", "description", "valeur2", "show_info_module")); + var obj:Object; + if (currendRecordItem.code == 'PLACESREF') { + for each (obj in PLACESREF_PROVIDER) { + if (obj.valeur == currendRecordItem.valeur) { + DIV_placesref_GUI.selectedItem = obj; + break; + } + } + } + if (currendRecordItem.code == 'OPTADM_DAYOUT') { + for each (obj in OPTADM_DAYOUT_PROVIDER) { + if (obj.valeur == currendRecordItem.valeur) { + DIV_optadm_dayout_GUI.selectedItem = obj; + break; + } + } + } + break; + + case "UMD" : + + fillFields(new Array("oid", "nbref", "code", "texte", "texte_court", "code_original")); + + setSelectedIndex(UMD_etage_par_defaut_GUI, currendRecordItem.etage_par_defaut_id.toString(), 'oid'); + setSelectedIndex(UMD_etage_force_GUI, currendRecordItem.etage_force_id.toString(), 'oid'); + + UMD_histo.removeEventListener(CollectionEvent.COLLECTION_CHANGE , UMD_histo_changeEvent); + UMD_histo.loadXMLList(currendRecordItem.originalXMLnode.HISTO); + UMD_histo.addEventListener(CollectionEvent.COLLECTION_CHANGE , UMD_histo_changeEvent); + + break; + + case "UFT" : + + fillFields(new Array("oid", "nbref", "code", "texte", "texte_court", "code_original")); + + setSelectedIndex(UFT_est_sans_facturation_GUI, currendRecordItem.est_sans_facturation.toString(), 'data'); + + UFT_histo.removeEventListener(CollectionEvent.COLLECTION_CHANGE , UFT_histo_changeEvent); + UFT_histo.loadXMLList(currendRecordItem.originalXMLnode.HISTO); + UFT_histo.addEventListener(CollectionEvent.COLLECTION_CHANGE , UFT_histo_changeEvent); + break; + + case "ETA" : + + fillFields(new Array("oid", "nbref", "code", "texte", "texte_court", "code_original", "nb_lits", "nb_cp", "est_urgence", "remplacer_par_valeur_par_defaut")); + + ETA_histo.removeEventListener(CollectionEvent.COLLECTION_CHANGE , ETA_histo_changeEvent); + ETA_histo.loadXMLList(currendRecordItem.originalXMLnode.HISTO); + ETA_histo.addEventListener(CollectionEvent.COLLECTION_CHANGE , ETA_histo_changeEvent); + ETA_lits.removeEventListener(CollectionEvent.COLLECTION_CHANGE , ETA_lits_changeEvent); + ETA_lits.loadXMLList(currendRecordItem.originalXMLnode.LIT); + ETA_lits.addEventListener(CollectionEvent.COLLECTION_CHANGE , ETA_lits_changeEvent); + + setSelectedIndex(ETA_service_force_GUI, currendRecordItem.service_force_id.toString(), 'oid'); + setSelectedIndex(ETA_finess_GUI, currendRecordItem.finess_id.toString(), 'oid'); + + break; + + case "LIT" : + + fillFields(new Array("oid", "nbref", "code", "texte", "texte_court", "code_original", "etage_code", "etage_texte", "est_chambre_particuliere")); + + LIT_etages.removeEventListener(CollectionEvent.COLLECTION_CHANGE , LIT_etages_changeEvent); + LIT_etages.loadXMLList(currendRecordItem.originalXMLnode.ETAGE); + LIT_etages.addEventListener(CollectionEvent.COLLECTION_CHANGE , LIT_etages_changeEvent); + + break; + + case "CPT" : + + fillFields(new Array("oid", "nbref", "code", "texte", "texte_court", "code_original", "taux_tva")); + setSelectedIndex(CPT_compte_tva_id_GUI, currendRecordItem.compte_tva_id.toString(), 'oid'); + break; + + case "SRU" : + + fillFields(new Array("oid", "code", "service", "service_id", "rubrique", "rubrique_id", "compte", "est_compte_force")); + setSelectedIndex(SRU_compte_id_GUI, currendRecordItem.compte_id.toString(), 'oid'); + setSelectedIndex(SRU_prestation_forcee_id_GUI, currendRecordItem.prestation_forcee_id.toString(), 'oid'); + break; + + case "DTG" : + + fillFields(new Array("oid", "texte", "dotation")); + setSelectedIndex(DTG_annee_GUI, currendRecordItem.annee.toString(), 'data'); + setSelectedIndex(DTG_service_1_id_GUI, currendRecordItem.service_1_id.toString(), 'oid'); + setSelectedIndex(DTG_service_2_id_GUI, currendRecordItem.service_2_id.toString(), 'oid'); + setSelectedIndex(DTG_service_3_id_GUI, currendRecordItem.service_3_id.toString(), 'oid'); + setSelectedIndex(DTG_service_4_id_GUI, currendRecordItem.service_4_id.toString(), 'oid'); + setSelectedIndex(DTG_service_5_id_GUI, currendRecordItem.service_5_id.toString(), 'oid'); + setSelectedIndex(DTG_service_6_id_GUI, currendRecordItem.service_6_id.toString(), 'oid'); + setSelectedIndex(DTG_service_7_id_GUI, currendRecordItem.service_7_id.toString(), 'oid'); + setSelectedIndex(DTG_service_8_id_GUI, currendRecordItem.service_8_id.toString(), 'oid'); + setSelectedIndex(DTG_service_9_id_GUI, currendRecordItem.service_9_id.toString(), 'oid'); + setSelectedIndex(DTG_rubrique_1_id_GUI, currendRecordItem.rubrique_1_id.toString(), 'oid'); + setSelectedIndex(DTG_rubrique_2_id_GUI, currendRecordItem.rubrique_2_id.toString(), 'oid'); + setSelectedIndex(DTG_rubrique_3_id_GUI, currendRecordItem.rubrique_3_id.toString(), 'oid'); + setSelectedIndex(DTG_rubrique_4_id_GUI, currendRecordItem.rubrique_4_id.toString(), 'oid'); + setSelectedIndex(DTG_rubrique_5_id_GUI, currendRecordItem.rubrique_5_id.toString(), 'oid'); + setSelectedIndex(DTG_rubrique_6_id_GUI, currendRecordItem.rubrique_6_id.toString(), 'oid'); + setSelectedIndex(DTG_rubrique_7_id_GUI, currendRecordItem.rubrique_7_id.toString(), 'oid'); + setSelectedIndex(DTG_rubrique_8_id_GUI, currendRecordItem.rubrique_8_id.toString(), 'oid'); + setSelectedIndex(DTG_rubrique_9_id_GUI, currendRecordItem.rubrique_9_id.toString(), 'oid'); + setSelectedIndex(DTG_rubrique_10_id_GUI, currendRecordItem.rubrique_10_id.toString(), 'oid'); + setSelectedIndex(DTG_to_rubrique_id_GUI, currendRecordItem.to_rubrique_id.toString(), 'oid'); + setSelectedIndex(DTG_to_prestation_id_GUI, currendRecordItem.to_prestation_id.toString(), 'oid'); + break; + + case "PRC" : + + fillFields(new Array("oid", "nbref", "code", "texte", "texte_court", "code_original")); + setSelectedIndex(PRC_type_valorisation_non_facture_GUI, currendRecordItem.type_valorisation_non_facture.toString()); + setSelectedIndex(PRC_type_ventilation_jour_GUI, currendRecordItem.type_ventilation_jour.toString()); + + break; + + case "PRH" : + + fillFields(new Array("oid", "nbref", "code", "texte", "texte_court", "code_original")); + break; + + case "RUB" : + + fillFields(new Array("oid", "nbref", "code", "texte", "texte_court", "code_original", "actes_inclus_public", "est_force_etablissement")); + break; + + case "TTP" : + + fillFields(new Array("oid", "nbref", "code", "texte", "texte_court")); + break; + + case "TPY" : + + fillFields(new Array("oid", "nbref", "code", "texte", "texte_court", "code_original", "type_tiers_payant")); + + setSelectedIndex(TPY_grand_regime_GUI, currendRecordItem.grand_regime_id.toString(), 'data'); + break; + + case "CCR" : + + fillFields(new Array("oid", "nbref", "code", "texte", "texte_court")); + break; + + case "ACT" : + + fillFields(new Array("oid", "nbref", "code", "texte", "regroupement_1", "regroupement_4")); + break; + + case "GHS" : + + fillFields(new Array("oid", "nbref", "code", "texte")); + break; + + case "SPI" : + + fillFields(new Array("oid", "nbref", "code", "texte", "texte_court")); + break; + + case "MDA" : + + fillFields(new Array("oid", "nbref", "code", "nom", "prenom", "code_original", "est_medecin_salarie", "kiwee_sigems_honpatcpt", "kiwee_sigems_honpatcpthon")); + break; + + case "MET" : + + fillFields(new Array("oid", "nbref", "code", "nom", "prenom", "code_original", "no_rpps", "code_postal", "ville", "adresse")); + break; + + case "MED" : + + fillFields(new Array("oid", "nbref", "code", "nom", "prenom", "numero_ordre", "code_original", "medecins_regroupes_oids")); + + setSelectedIndex(MED_specialite_interne_GUI, currendRecordItem.specialite_interne_id.toString(), 'oid'); + + if (MED_medecins_a_regrouper_GUI.dataProvider != null) { + MED_medecins_a_regrouper_GUI.dataProvider.filterFunction = null; + MED_medecins_a_regrouper_GUI.dataProvider.refresh(); + } + + MED_medecins_a_regrouper_textSearch_GUI.text = MED_nom_GUI.text.substr(0,5); + if (MED_medecins_regroupes_GUI.dataProvider.filterFunction == null) { + MED_medecins_regroupes_GUI.dataProvider.filterFunction = MED_medecins_regroupes_filterFunction; + } + MED_medecins_regroupes_GUI.dataProvider.refresh(); + MED_medecins_a_regrouper_searchChange(); + break; + + case "FSJ" : + + fillFields(new Array("oid", "code", "texte", "est_ignore", "encours_1_est_ignore")); + + setSelectedIndex(FSJ_medecin_sejour_GUI, currendRecordItem.medecin_sejour_id.toString(), 'oid'); + setSelectedIndex(FSJ_service_facturation_GUI, currendRecordItem.service_facturation_id.toString(), 'oid'); + setSelectedIndex(FSJ_etage_GUI, currendRecordItem.etage_id.toString(), 'oid'); + setSelectedIndex(FSJ_type_sejour_GUI, currendRecordItem.type_sejour.toString(), 'data'); + + setSelectedIndex(FSJ_encours_1_from_date_GUI, currendRecordItem.encours_1_from_date.toString(), 'oid'); + break; + + case "BUD" : + + fillFields(new Array("oid", "code", "texte", "date_debut", "date_fin")); + + BUD_indicateurs.removeEventListener(CollectionEvent.COLLECTION_CHANGE , BUD_indicateurs_changeEvent); + BUD_indicateurs.loadXMLList(currendRecordItem.originalXMLnode.INDICATEUR); + for each (var item2:Object in BUD_indicateurs) { + item2.indicateur_id = BUD_indicateur_id_dataProvider_oids[Number(item2.indicateur_id.toString())] + if (! item2.hasOwnProperty("indicateur_id")) { + item2.indicateur_id = "0"; + } + } + BUD_indicateurs.addEventListener(CollectionEvent.COLLECTION_CHANGE , BUD_indicateurs_changeEvent); + break; + + case "BUC" : + + fillFields(new Array("oid", "code", "texte", "texte_court", "code_original")); + break; + + case "BUR" : + + fillFields(new Array("oid", "code", "texte", "priorite", "liste_specialite", "liste_medecin", + "liste_service", "liste_acte", "liste_rubrique", "liste_ghm", "liste_sauf_ghm", + "liste_diagnostic_principal", "liste_diagnostic_relie", "liste_diagnostic_associe", "liste_finess" + )); + + setSelectedIndex(BUR_budget_cle_id_GUI, currendRecordItem.budget_cle_id.toString()); + + BUR_Qliste_specialite_GUI.selected = BUR_liste_specialite_GUI.text != "" ? true : false; + BUR_Qliste_medecin_GUI.selected = BUR_liste_medecin_GUI.text != "" ? true : false; + BUR_Qliste_service_GUI.selected = BUR_liste_service_GUI.text != "" ? true : false; + BUR_Qliste_acte_GUI.selected = BUR_liste_acte_GUI.text != "" ? true : false; + BUR_Qliste_rubrique_GUI.selected = BUR_liste_rubrique_GUI.text != ""? true : false; + BUR_Qliste_ghm_GUI.selected = BUR_liste_ghm_GUI.text != "" ? true : false; + BUR_Qliste_sauf_ghm_GUI.selected = BUR_liste_sauf_ghm_GUI.text != "" ? true : false; + BUR_Qliste_diagnostic_principal_GUI.selected = BUR_liste_diagnostic_principal_GUI.text != "" ? true : false; + BUR_Qliste_diagnostic_relie_GUI.selected = BUR_liste_diagnostic_relie_GUI.text != "" ? true : false; + BUR_Qliste_diagnostic_associe_GUI.selected = BUR_liste_diagnostic_associe_GUI.text != "" ? true : false; + BUR_Qliste_finess_GUI.selected = BUR_liste_finess_GUI.text != "" ? true : false; + break; + + case "BUI" : + + fillFields(new Array("oid", "code", "texte")); + + BUI_indicateurs = currendRecordItem.originalXMLnode.INDICATEUR; + break; + + case "EXC" : + + fillFields(new Array("oid", "code", "texte", "texte_court", "texte_abrege", "description", + "rule_oid1", "sqlcmd_where1", "sqlcmd_justificatif1", + "rule_oid2", "sqlcmd_where2", "sqlcmd_justificatif2", + "rule_oid3", "sqlcmd_where3", "sqlcmd_justificatif3", + "is_hide","is_alert", "is_cti", "is_active" + )); + setSelectedIndex(EXC_gravite_GUI, currendRecordItem.gravite.toString()); + setSelectedIndex(EXC_prestataire_GUI, currendRecordItem.prestataire_id.toString()); + setSelectedIndex(EXC_etat_cible_GUI, currendRecordItem.etat_cible.toString()); + setSelectedIndex(EXC_table1_GUI, currendRecordItem.table1.toString()); + setSelectedIndex(EXC_table2_GUI, currendRecordItem.table2.toString()); + setSelectedIndex(EXC_table3_GUI, currendRecordItem.table3.toString()); + EXC_is_alert_GUI.selected = currendRecordItem.is_alert.toString() == '1' ? true : false; + EXC_sqlcmd_where1_GUI.setStyle("backgroundColor", null); + EXC_sqlcmd_justificatif1_GUI.setStyle("backgroundColor", null); + EXC_sqlcmd_where2_GUI.setStyle("backgroundColor", null); + EXC_sqlcmd_justificatif2_GUI.setStyle("backgroundColor", null); + EXC_sqlcmd_where3_GUI.setStyle("backgroundColor", null); + EXC_sqlcmd_justificatif3_GUI.setStyle("backgroundColor", null); + break; + + + case "FAC" : + + fillFields(new Array("oid", "code", "texte", "texte_court")); + break; + + case "FAR" : + + fillFields(new Array("oid", "code", "texte", "priorite", "liste_type_sejour", "liste_specialite", "liste_medecin", + "liste_service", "liste_etage", "liste_unite_fonctionnelle", "liste_service_entree", "liste_etage_entree", "liste_unite_fonctionnelle_entree", "liste_acte", "liste_rubrique", "liste_prestation", "liste_ghm", "liste_sauf_ghm", + "liste_diagnostic_principal", "liste_diagnostic_relie", "liste_diagnostic_associe", "liste_finess" + )); + setSelectedIndex(FAR_filiere_soin_id_GUI, currendRecordItem.forme_activite_id.toString(), "oid"); + + FAR_Qliste_type_sejour_GUI.selected = FAR_liste_type_sejour_GUI.text != "" ? true : false; + FAR_Qliste_specialite_GUI.selected = FAR_liste_specialite_GUI.text != "" ? true : false; + FAR_Qliste_medecin_GUI.selected = FAR_liste_medecin_GUI.text != "" ? true : false; + FAR_Qliste_service_GUI.selected = FAR_liste_service_GUI.text != "" ? true : false; + FAR_Qliste_etage_GUI.selected = FAR_liste_etage_GUI.text != "" ? true : false; + FAR_Qliste_unite_fonctionnelle_GUI.selected = FAR_liste_unite_fonctionnelle_GUI.text != "" ? true : false; + FAR_Qliste_service_entree_GUI.selected = FAR_liste_service_entree_GUI.text != "" ? true : false; + FAR_Qliste_etage_entree_GUI.selected = FAR_liste_etage_entree_GUI.text != "" ? true : false; + FAR_Qliste_unite_fonctionnelle_entree_GUI.selected = FAR_liste_unite_fonctionnelle_entree_GUI.text != "" ? true : false; + FAR_Qliste_acte_GUI.selected = FAR_liste_acte_GUI.text != "" ? true : false; + FAR_Qliste_rubrique_GUI.selected = FAR_liste_rubrique_GUI.text != ""? true : false; + FAR_Qliste_prestation_GUI.selected = FAR_liste_prestation_GUI.text != ""? true : false; + FAR_Qliste_ghm_GUI.selected = FAR_liste_ghm_GUI.text != "" ? true : false; + FAR_Qliste_sauf_ghm_GUI.selected = FAR_liste_sauf_ghm_GUI.text != "" ? true : false; + FAR_Qliste_diagnostic_principal_GUI.selected = FAR_liste_diagnostic_principal_GUI.text != "" ? true : false; + FAR_Qliste_diagnostic_relie_GUI.selected = FAR_liste_diagnostic_relie_GUI.text != "" ? true : false; + FAR_Qliste_diagnostic_associe_GUI.selected = FAR_liste_diagnostic_associe_GUI.text != "" ? true : false; + FAR_Qliste_finess_GUI.selected = FAR_liste_finess_GUI.text != "" ? true : false; + + FAR_updatable = true + if (application.sessionProperties.properties.CONNECTEDUSER != 'cti') { + if (FAR_code_GUI.text.substr(0,3) == "CTI") { + FAR_updatable = false + } + } + break; + + case "FSO" : + + fillFields(new Array("oid", "code", "texte")); + break; + + case "FSR" : + + fillFields(new Array("oid", "code", "texte", "priorite", "liste_type_sejour", "liste_specialite", "liste_medecin", + "liste_service", "liste_etage", "liste_unite_fonctionnelle", "liste_acte", "liste_rubrique", "liste_prestation", "liste_ghm", "liste_sauf_ghm", + "liste_diagnostic_principal", "liste_diagnostic_relie", "liste_diagnostic_associe", "liste_finess" + )); + setSelectedIndex(FSR_filiere_soin_id_GUI, currendRecordItem.filiere_soin_id.toString(), "oid"); + + FSR_Qliste_type_sejour_GUI.selected = FSR_liste_type_sejour_GUI.text != "" ? true : false; + FSR_Qliste_specialite_GUI.selected = FSR_liste_specialite_GUI.text != "" ? true : false; + FSR_Qliste_medecin_GUI.selected = FSR_liste_medecin_GUI.text != "" ? true : false; + FSR_Qliste_service_GUI.selected = FSR_liste_service_GUI.text != "" ? true : false; + FSR_Qliste_etage_GUI.selected = FSR_liste_etage_GUI.text != "" ? true : false; + FSR_Qliste_unite_fonctionnelle_GUI.selected = FSR_liste_unite_fonctionnelle_GUI.text != "" ? true : false; + FSR_Qliste_service_entree_GUI.selected = FSR_liste_service_entree_GUI.text != "" ? true : false; + FSR_Qliste_etage_entree_GUI.selected = FSR_liste_etage_entree_GUI.text != "" ? true : false; + FSR_Qliste_unite_fonctionnelle_entree_GUI.selected = FSR_liste_unite_fonctionnelle_entree_GUI.text != "" ? true : false; + FSR_Qliste_acte_GUI.selected = FSR_liste_acte_GUI.text != "" ? true : false; + FSR_Qliste_rubrique_GUI.selected = FSR_liste_rubrique_GUI.text != ""? true : false; + FSR_Qliste_prestation_GUI.selected = FSR_liste_prestation_GUI.text != ""? true : false; + FSR_Qliste_ghm_GUI.selected = FSR_liste_ghm_GUI.text != "" ? true : false; + FSR_Qliste_sauf_ghm_GUI.selected = FSR_liste_sauf_ghm_GUI.text != "" ? true : false; + FSR_Qliste_diagnostic_principal_GUI.selected = FSR_liste_diagnostic_principal_GUI.text != "" ? true : false; + FSR_Qliste_diagnostic_relie_GUI.selected = FSR_liste_diagnostic_relie_GUI.text != "" ? true : false; + FSR_Qliste_diagnostic_associe_GUI.selected = FSR_liste_diagnostic_associe_GUI.text != "" ? true : false; + FSR_Qliste_finess_GUI.selected = FSR_liste_finess_GUI.text != "" ? true : false; + + FSR_updatable = true + if (application.sessionProperties.properties.CONNECTEDUSER != 'cti') { + if (FSR_code_GUI.text.substr(0,3) == "CTI") { + FSR_updatable = false + } + } + break; + + case "POR" : + + fillFields(new Array("oid", "code", "texte", "priorite", "liste_type_sejour", "liste_specialite", "liste_medecin", + "liste_service", "liste_etage", "liste_unite_fonctionnelle", "liste_acte", "liste_rubrique", "liste_prestation", "liste_ghm", "liste_sauf_ghm", + "liste_diagnostic_principal", "liste_diagnostic_relie", "liste_diagnostic_associe", "liste_finess" + )); + setSelectedIndex(POR_pole_id_GUI, currendRecordItem.pole_id.toString(), "oid"); + + POR_Qliste_type_sejour_GUI.selected = POR_liste_type_sejour_GUI.text != "" ? true : false; + POR_Qliste_specialite_GUI.selected = POR_liste_specialite_GUI.text != "" ? true : false; + POR_Qliste_medecin_GUI.selected = POR_liste_medecin_GUI.text != "" ? true : false; + POR_Qliste_service_GUI.selected = POR_liste_service_GUI.text != "" ? true : false; + POR_Qliste_etage_GUI.selected = POR_liste_etage_GUI.text != "" ? true : false; + POR_Qliste_unite_fonctionnelle_GUI.selected = POR_liste_unite_fonctionnelle_GUI.text != "" ? true : false; + POR_Qliste_acte_GUI.selected = POR_liste_acte_GUI.text != "" ? true : false; + POR_Qliste_rubrique_GUI.selected = POR_liste_rubrique_GUI.text != ""? true : false; + POR_Qliste_prestation_GUI.selected = POR_liste_prestation_GUI.text != ""? true : false; + POR_Qliste_ghm_GUI.selected = POR_liste_ghm_GUI.text != "" ? true : false; + POR_Qliste_sauf_ghm_GUI.selected = POR_liste_sauf_ghm_GUI.text != "" ? true : false; + POR_Qliste_diagnostic_principal_GUI.selected = POR_liste_diagnostic_principal_GUI.text != "" ? true : false; + POR_Qliste_diagnostic_relie_GUI.selected = POR_liste_diagnostic_relie_GUI.text != "" ? true : false; + POR_Qliste_diagnostic_associe_GUI.selected = POR_liste_diagnostic_associe_GUI.text != "" ? true : false; + POR_Qliste_finess_GUI.selected = POR_liste_finess_GUI.text != "" ? true : false; + + break; + + case "CAR" : + + fillFields(new Array("oid", "code", "texte", "priorite", "liste_type_sejour", "liste_specialite", "liste_medecin", + "liste_service", "liste_etage", "liste_unite_fonctionnelle", "liste_acte", "liste_rubrique", "liste_compte_produit", "liste_sauf_compte_produit", "liste_prestation", "liste_sauf_prestation", "liste_ghm", "liste_sauf_ghm", + "liste_diagnostic_principal", "liste_diagnostic_relie", "liste_diagnostic_associe", "liste_finess" + )); + setSelectedIndex(CAR_compte_produit_analytique_id_GUI, currendRecordItem.compte_produit_analytique_id.toString(), "oid"); + + CAR_Qliste_type_sejour_GUI.selected = CAR_liste_type_sejour_GUI.text != "" ? true : false; + CAR_Qliste_specialite_GUI.selected = CAR_liste_specialite_GUI.text != "" ? true : false; + CAR_Qliste_medecin_GUI.selected = CAR_liste_medecin_GUI.text != "" ? true : false; + CAR_Qliste_service_GUI.selected = CAR_liste_service_GUI.text != "" ? true : false; + CAR_Qliste_ghm_GUI.selected = CAR_liste_ghm_GUI.text != "" ? true : false; + CAR_Qliste_sauf_ghm_GUI.selected = CAR_liste_sauf_ghm_GUI.text != "" ? true : false; + CAR_Qliste_diagnostic_principal_GUI.selected = CAR_liste_diagnostic_principal_GUI.text != "" ? true : false; + CAR_Qliste_diagnostic_relie_GUI.selected = CAR_liste_diagnostic_relie_GUI.text != "" ? true : false; + CAR_Qliste_diagnostic_associe_GUI.selected = CAR_liste_diagnostic_associe_GUI.text != "" ? true : false; + CAR_Qliste_acte_GUI.selected = CAR_liste_acte_GUI.text != "" ? true : false; + CAR_Qliste_etage_GUI.selected = CAR_liste_etage_GUI.text != "" ? true : false; + CAR_Qliste_unite_fonctionnelle_GUI.selected = CAR_liste_unite_fonctionnelle_GUI.text != "" ? true : false; + CAR_Qliste_rubrique_GUI.selected = CAR_liste_rubrique_GUI.text != ""? true : false; + CAR_Qliste_compte_produit_GUI.selected = CAR_liste_compte_produit_GUI.text != ""? true : false; + CAR_Qliste_sauf_compte_produit_GUI.selected = CAR_liste_sauf_compte_produit_GUI.text != ""? true : false; + CAR_Qliste_prestation_GUI.selected = CAR_liste_prestation_GUI.text != ""? true : false; + CAR_Qliste_sauf_prestation_GUI.selected = CAR_liste_sauf_prestation_GUI.text != ""? true : false; + CAR_Qliste_finess_GUI.selected = CAR_liste_finess_GUI.text != "" ? true : false; + + break; + + case "ENC" : + + fillFields(new Array("oid", "type_ligne", "sejour", "nom", "facture", "service", "prestation", "rubrique", "coefficient_calcule", "coefficient_force", "coefficient_is_force", "prix_unitaire_calcule", "prix_unitaire_force", "prix_unitaire_is_force", "ignorer", "code", "valeur", "texte", "description")); + setSelectedIndex(ENC_type_valorisation_GUI, currendRecordItem.type_valorisation.toString()); + break; + + case "COV" : + + fillFields(new Array("oid", "code", "texte", "finess", "valeur_2019_ars", "valeur_2019", "valeur_2019_saisie")); + + break; + + } + + toggleUpdate(false); + detailBox_GUI.includeInLayout = true; + if (tableCode != "BUD" && tableCode != "BUI") { + if (detailBox_GUI.height == 0) { + detailBox_GUI.height = 400; + } + } + detailBox_GUI.visible = true; + } + + + + private function ETA_histo_changeEvent(event:CollectionEvent):void { + toggleUpdate(true); + } + + + + private function ETA_histo_add():void { + var ETA_histo_item:Object = new Object(); + ETA_histo_item.date = "?"; + ETA_histo_item.nb_lits_theoriques = ""; + ETA_histo_item.nb_lits_ouverts = ""; + ETA_histo_item.nb_lits_cp_theoriques = ""; + ETA_histo_item.nb_lits_cp_ouverts = ""; + ETA_histo_item.nb_box_ambulatoires_theoriques = ""; + ETA_histo_item.nb_box_ambulatoires_ouverts = ""; + ETA_histo_item.nb_box_seances_theoriques = ""; + ETA_histo_item.nb_box_seances_ouverts = ""; + ETA_histo_item.est_ouvert_1 = "1"; + ETA_histo_item.est_ouvert_2 = "1"; + ETA_histo_item.est_ouvert_3 = "1"; + ETA_histo_item.est_ouvert_4 = "1"; + ETA_histo_item.est_ouvert_5 = "1"; + ETA_histo_item.est_ouvert_6 = "1"; + ETA_histo_item.est_ouvert_7 = "1"; + ETA_histo_item.lit_force = ""; + ETA_histo.addItemAt(ETA_histo_item, 0); + } + + private function ETA_histo_remove():void { + ETA_histo.removeItemAt(ETA_histo_GUI.selectedIndex); + } + + + private function ETA_lits_changeEvent(event:CollectionEvent):void { + toggleUpdate(true); + } + + + + private function LIT_etages_changeEvent(event:CollectionEvent):void { + toggleUpdate(true); + } + + + + private function LIT_etages_add():void { + var LIT_etages_item:Object = new Object(); + LIT_etages_item.date = "?"; + LIT_etages_item.oid = "-1"; + LIT_etages_item.code = ""; + LIT_etages_item.texte = ""; + LIT_etages.addItemAt(LIT_etages_item, 0); + } + + + + private function LIT_etages_remove():void { + LIT_etages.removeItemAt(LIT_etages_GUI.selectedIndex); + } + + + + private function SER_histo_changeEvent(event:CollectionEvent):void { + toggleUpdate(true); + } + + + + private function SER_histo_add():void { + var SER_histo_item:Object = new Object(); + SER_histo_item.date = "?"; + SER_histo_item.nb_lits_theoriques = ""; + SER_histo_item.nb_lits_ouverts = ""; + SER_histo_item.nb_box_ambulatoires_theoriques = ""; + SER_histo_item.nb_box_ambulatoires_ouverts = ""; + SER_histo_item.nb_box_seances_theoriques = ""; + SER_histo_item.nb_box_seances_ouverts = ""; + SER_histo_item.est_ouvert_1 = "1"; + SER_histo_item.est_ouvert_2 = "1"; + SER_histo_item.est_ouvert_3 = "1"; + SER_histo_item.est_ouvert_4 = "1"; + SER_histo_item.est_ouvert_5 = "1"; + SER_histo_item.est_ouvert_6 = "1"; + SER_histo_item.est_ouvert_7 = "1"; + SER_histo.addItemAt(SER_histo_item, 0); + } + private function SER_histo_remove():void { + SER_histo.removeItemAt(SER_histo_GUI.selectedIndex); + } + + + + public function LIT_etages_etage_id_changeEvent(combo:ComboBox):void { + if (! combo.data.hasOwnProperty("oid")) { + combo.data.oid = "0"; + } + try { + combo.data.oid = combo.selectedItem.oid.toString(); + toggleUpdate(true); + } + catch(err:Error) { + } + } + + + public function LIT_etages_etage_id_dataChangeEvent(combo:ComboBox):void { + if (! combo.data.hasOwnProperty("oid")) { + combo.data.oid = "0"; + } + try { + combo.selectedIndex = 0; + for (var idx:int = 0, len:int = combo.dataProvider.length; idx < len; idx++) { + if (combo.dataProvider.getItemAt(idx)["oid"] == combo.data.oid) { + combo.selectedIndex = idx; + } + } + } + catch(err:Error) { + } + } + + + + private function UFT_histo_changeEvent(event:CollectionEvent):void { + toggleUpdate(true); + } + + + + private function UFT_histo_add():void { + + var UFT_histo_item:Object = new Object(); + UFT_histo_item.date = "?"; + UFT_histo_item.nb_lits_theoriques = ""; + UFT_histo_item.nb_lits_ouverts = ""; + UFT_histo_item.nb_box_ambulatoires_theoriques = ""; + UFT_histo_item.nb_box_ambulatoires_ouverts = ""; + UFT_histo_item.nb_box_seances_theoriques = ""; + UFT_histo_item.nb_box_seances_ouverts = ""; + UFT_histo_item.est_ouvert_1 = "1"; + UFT_histo_item.est_ouvert_2 = "1"; + UFT_histo_item.est_ouvert_3 = "1"; + UFT_histo_item.est_ouvert_4 = "1"; + UFT_histo_item.est_ouvert_5 = "1"; + UFT_histo_item.est_ouvert_6 = "1"; + UFT_histo_item.est_ouvert_7 = "1"; + UFT_histo.addItemAt(UFT_histo_item, 0); + } + + + + private function UFT_histo_remove():void { + UFT_histo.removeItemAt(UFT_histo_GUI.selectedIndex); + } + + + + private function UMD_histo_changeEvent(event:CollectionEvent):void { + toggleUpdate(true); + } + + + + private function UMD_histo_add():void { + + var UMD_histo_item:Object = new Object(); + UMD_histo_item.date = "?"; + UMD_histo_item.nb_lits_theoriques = ""; + UMD_histo_item.nb_lits_ouverts = ""; + UMD_histo_item.nb_box_ambulatoires_theoriques = ""; + UMD_histo_item.nb_box_ambulatoires_ouverts = ""; + UMD_histo_item.nb_box_seances_theoriques = ""; + UMD_histo_item.nb_box_seances_ouverts = ""; + UMD_histo_item.est_ouvert_1 = "1"; + UMD_histo_item.est_ouvert_2 = "1"; + UMD_histo_item.est_ouvert_3 = "1"; + UMD_histo_item.est_ouvert_4 = "1"; + UMD_histo_item.est_ouvert_5 = "1"; + UMD_histo_item.est_ouvert_6 = "1"; + UMD_histo_item.est_ouvert_7 = "1"; + UMD_histo.addItemAt(UMD_histo_item, 0); + } + + + + private function UMD_histo_remove():void { + UMD_histo.removeItemAt(UMD_histo_GUI.selectedIndex); + } + + + + public function BUD_indicateurs_indicateur_id_changeEvent(combo:ComboBox):void { + if (! combo.data.hasOwnProperty("indicateur_id")) { + combo.data.indicateur_id = "0"; + } + try { + combo.data.indicateur_id = combo.selectedLabel; + toggleUpdate(true); + } + catch(err:Error) { + } + } + + + + private function BUD_indicateurs_changeEvent(event:CollectionEvent):void { + toggleUpdate(true); + } + + + + private function BUD_indicateurs_add():void { + var BUD_indicateurs_item:Object = new Object(); + BUD_indicateurs_item.oid = "-1"; + BUD_indicateurs_item.code = ""; + BUD_indicateurs_item.texte = ""; + BUD_indicateurs_item.indicateur_id = ""; + BUD_indicateurs.addItem(BUD_indicateurs_item); + } + + + + private function BUD_indicateurs_remove():void { + BUD_indicateurs.removeItemAt(BUD_indicateurs_GUI.selectedIndex); + } + + + + private function askCancel():void { + + if (recordUpdated == false) { + hideRecord(); + return; + } + + Alert.yesLabel = "OUI"; + Alert.noLabel = "NON"; + var alert:Alert = Alert.show("Les données ont été changées, désirez vous les annuler ?", title, 3, this, alertClickHandler, question_class); + + function alertClickHandler(event:CloseEvent):void { + if (event.detail==Alert.YES) { + hideRecord(); + } + } + } + + + + private function hideRecord():void { + + // Pour Expert, remettre en mode normal + if (EXC_mode == 2) { + EXC_mode = 0; + } + + // Ne plus afficher le détail + detailBox_GUI.visible = false; + detailBox_GUI.includeInLayout = false; + currendRecordItem = null; + toggleUpdate(false); + } + + + + private function askDelete():void { + + Alert.yesLabel = "OUI"; + Alert.noLabel = "NON"; + var alert:Alert = Alert.show("Désirez vous vraiment supprimer " + texte_GUI.text + " ?", title, 3, this, alertClickHandler, question_class); + + function alertClickHandler(event:CloseEvent):void { + if (event.detail==Alert.YES) { + deleteRecord(); + } + } + } + + + + public function deleteRecord():void { + + updateRecord("delete"); + + } + + + + public function copyRecord():void { + + updateRecord("copy"); + + } + + + + public function saveRecord(propagate:Boolean = true):void { + + updateRecord("save", propagate); + + } + + + + public function updateRecord(action:String, propagate:Boolean = true):void { + + var urlVariables:URLVariables = new URLVariables(); + urlVariables.tableName = tableName; + urlVariables.action = action; + urlVariables.propagate = "true"; + if (! propagate) { + urlVariables.propagate = "false"; + } + var recordNode:XML = new XML(); + + switch(tableCode) { + + case "SER" : + + recordNode = readFields(new Array("oid", "code", "texte", "texte_court", "code_original", "nb_lits", "nb_cp", "type_t2a", "type_sejour", + "est_budget_global", "est_sans_mouvement", "est_sans_facturation", "avec_facturation_intermediaire", "mode_calcul_journees", + "option_jour_ferme", "prestations_presence", "particularites_encours","sej_sans_acte_fictif"), recordNode); + + recordNode.@finess_id = SER_finess_GUI.selectedItem.oid; + recordNode.@mode_traitement_id = SER_mode_traitement_GUI.selectedItem.oid; + recordNode.@dmt_id = SER_dmt_GUI.selectedItem.oid; + recordNode.@etage_par_defaut_id = SER_etage_par_defaut_GUI.selectedItem.oid; + recordNode.@etage_force_id = SER_etage_force_GUI.selectedItem.oid; + recordNode.@activite_par_defaut_id = SER_activite_par_defaut_GUI.selectedItem.oid; + recordNode.@activite_force_id = SER_activite_force_GUI.selectedItem.oid; + recordNode.@medecin_par_defaut_id = SER_medecin_par_defaut_GUI.selectedItem.oid; + recordNode.@medecin_force_id = SER_medecin_force_GUI.selectedItem.oid; + + for each (var place:Object in SER_histo) { + if (place.nb_lits_theoriques != "" || place.nb_box_ambulatoires_theoriques != "" || place.nb_box_seances_theoriques != "") { + var placeNode:XML = new XML(); + placeNode.@date = place.date; + placeNode.@nb_lits_theoriques = place.nb_lits_theoriques; + placeNode.@nb_lits_ouverts = place.nb_lits_ouverts; + placeNode.@nb_box_ambulatoires_theoriques = place.nb_box_ambulatoires_theoriques; + placeNode.@nb_box_ambulatoires_ouverts = place.nb_box_ambulatoires_ouverts; + placeNode.@nb_box_seances_theoriques = place.nb_box_seances_theoriques; + placeNode.@nb_box_seances_ouverts = place.nb_box_seances_ouverts; + placeNode.@est_ouvert_1 = place.est_ouvert_1; + placeNode.@est_ouvert_2 = place.est_ouvert_2; + placeNode.@est_ouvert_3 = place.est_ouvert_3; + placeNode.@est_ouvert_4 = place.est_ouvert_4; + placeNode.@est_ouvert_5 = place.est_ouvert_5; + placeNode.@est_ouvert_6 = place.est_ouvert_6; + placeNode.@est_ouvert_7 = place.est_ouvert_7; + recordNode.appendChild(placeNode); + } + } + break; + + case "ACF" : + + recordNode = readFields(new Array("oid", "code", "texte", "texte_court", "code_original"), recordNode); + recordNode.@etage_par_defaut_id = ACF_etage_par_defaut_GUI.selectedItem.oid; + recordNode.@etage_force_id = ACF_etage_force_GUI.selectedItem.oid; + break; + + case "DIV" : + + recordNode = readFields(new Array("oid", "code", "texte", "valeur", "valeur2", "description", "show_info_module"), recordNode); + break; + + case "UMD" : + + recordNode = readFields(new Array("oid", "code", "texte", "texte_court", "code_original"), recordNode); + + recordNode.@etage_par_defaut_id = UMD_etage_par_defaut_GUI.selectedItem.oid; + recordNode.@etage_force_id = UMD_etage_force_GUI.selectedItem.oid; + + for each (place in UMD_histo) { + if (place.nb_lits_theoriques != "" || place.nb_box_ambulatoires_theoriques != "" || place.nb_box_seances_theoriques != "") { + placeNode = new XML(); + placeNode.@date = place.date; + placeNode.@nb_lits_theoriques = place.nb_lits_theoriques; + placeNode.@nb_lits_ouverts = place.nb_lits_ouverts; + placeNode.@nb_box_ambulatoires_theoriques = place.nb_box_ambulatoires_theoriques; + placeNode.@nb_box_ambulatoires_ouverts = place.nb_box_ambulatoires_ouverts; + placeNode.@nb_box_seances_theoriques = place.nb_box_seances_theoriques; + placeNode.@nb_box_seances_ouverts = place.nb_box_seances_ouverts; + placeNode.@est_ouvert_1 = place.est_ouvert_1; + placeNode.@est_ouvert_2 = place.est_ouvert_2; + placeNode.@est_ouvert_3 = place.est_ouvert_3; + placeNode.@est_ouvert_4 = place.est_ouvert_4; + placeNode.@est_ouvert_5 = place.est_ouvert_5; + placeNode.@est_ouvert_6 = place.est_ouvert_6; + placeNode.@est_ouvert_7 = place.est_ouvert_7; + recordNode.appendChild(placeNode); + } + } + + break; + + case "UFT" : + + recordNode = readFields(new Array("oid", "code", "texte", "texte_court", "code_original", "est_sans_facturation"), recordNode); + + for each (place in UFT_histo) { + if (place.nb_lits_theoriques != "" || place.nb_box_ambulatoires_theoriques != "" || place.nb_box_seances_theoriques != "") { + placeNode = new XML(); + placeNode.@date = place.date; + placeNode.@nb_lits_theoriques = place.nb_lits_theoriques; + placeNode.@nb_lits_ouverts = place.nb_lits_ouverts; + placeNode.@nb_box_ambulatoires_theoriques = place.nb_box_ambulatoires_theoriques; + placeNode.@nb_box_ambulatoires_ouverts = place.nb_box_ambulatoires_ouverts; + placeNode.@nb_box_seances_theoriques = place.nb_box_seances_theoriques; + placeNode.@nb_box_seances_ouverts = place.nb_box_seances_ouverts; + placeNode.@est_ouvert_1 = place.est_ouvert_1; + placeNode.@est_ouvert_2 = place.est_ouvert_2; + placeNode.@est_ouvert_3 = place.est_ouvert_3; + placeNode.@est_ouvert_4 = place.est_ouvert_4; + placeNode.@est_ouvert_5 = place.est_ouvert_5; + placeNode.@est_ouvert_6 = place.est_ouvert_6; + placeNode.@est_ouvert_7 = place.est_ouvert_7; + recordNode.appendChild(placeNode); + } + } + break; + + case "ETA" : + + recordNode = readFields(new Array("oid", "code", "texte", "texte_court", "code_original", "nb_lits", "nb_cp", "est_urgence", "remplacer_par_valeur_par_defaut"), recordNode); + recordNode.@service_force_id = ETA_service_force_GUI.selectedItem.oid; + recordNode.@finess_id = ETA_finess_GUI.selectedItem.oid; + + for each (place in ETA_histo) { + if (place.nb_lits_theoriques != "" || place.nb_box_ambulatoires_theoriques != "" || place.nb_box_seances_theoriques != "" || place.nb_lits_cp_theoriques != "") { + placeNode = new XML(); + placeNode.@date = place.date; + placeNode.@nb_lits_theoriques = place.nb_lits_theoriques; + placeNode.@nb_lits_ouverts = place.nb_lits_ouverts; + placeNode.@nb_lits_cp_theoriques = place.nb_lits_cp_theoriques; + placeNode.@nb_lits_cp_ouverts = place.nb_lits_cp_ouverts; + placeNode.@nb_box_ambulatoires_theoriques = place.nb_box_ambulatoires_theoriques; + placeNode.@nb_box_ambulatoires_ouverts = place.nb_box_ambulatoires_ouverts; + placeNode.@nb_box_seances_theoriques = place.nb_box_seances_theoriques; + placeNode.@nb_box_seances_ouverts = place.nb_box_seances_ouverts; + placeNode.@est_ouvert_1 = place.est_ouvert_1; + placeNode.@est_ouvert_2 = place.est_ouvert_2; + placeNode.@est_ouvert_3 = place.est_ouvert_3; + placeNode.@est_ouvert_4 = place.est_ouvert_4; + placeNode.@est_ouvert_5 = place.est_ouvert_5; + placeNode.@est_ouvert_6 = place.est_ouvert_6; + placeNode.@est_ouvert_7 = place.est_ouvert_7; + placeNode.@lit_force = place.lit_force; + recordNode.appendChild(placeNode); + } + } + for each (var lit:Object in ETA_lits) { + var litNode:XML = new XML(); + litNode.@oid = lit.oid; + litNode.@chambre_particuliere = lit.chambre_particuliere; + recordNode.appendChild(litNode); + } + break; + + case "LIT" : + + recordNode = readFields(new Array("oid", "code", "texte", "texte_court", "code_original", "est_chambre_particuliere"), recordNode); + + for each (var etage:Object in LIT_etages) { + if (etage.oid != "0" && etage.oid != "-1") { + var etageNode:XML = new XML(); + etageNode.@date = etage.date; + etageNode.@oid = etage.oid; + recordNode.appendChild(etageNode); + } + } + + break; + + case "CPT" : + + recordNode = readFields(new Array("oid", "code", "texte", "texte_court", "code_original", "taux_tva"), recordNode); + recordNode.@compte_tva_id = CPT_compte_tva_id_GUI.selectedItem.oid + break; + + case "SRU" : + + recordNode = readFields(new Array("oid", "service_id", "rubrique_id", "est_compte_force"), recordNode); + recordNode.@compte_id = SRU_compte_id_GUI.selectedItem.oid + recordNode.@prestation_forcee_id = SRU_prestation_forcee_id_GUI.selectedItem.oid + break; + + case "DTG" : + + recordNode = readFields(new Array("oid", "texte", "dotation", "annee"), recordNode); + recordNode.@service_1_id = DTG_service_1_id_GUI.selectedItem.oid + recordNode.@service_2_id = DTG_service_2_id_GUI.selectedItem.oid + recordNode.@service_3_id = DTG_service_3_id_GUI.selectedItem.oid + recordNode.@service_4_id = DTG_service_4_id_GUI.selectedItem.oid + recordNode.@service_5_id = DTG_service_5_id_GUI.selectedItem.oid + recordNode.@service_6_id = DTG_service_6_id_GUI.selectedItem.oid + recordNode.@service_7_id = DTG_service_7_id_GUI.selectedItem.oid + recordNode.@service_8_id = DTG_service_8_id_GUI.selectedItem.oid + recordNode.@service_9_id = DTG_service_9_id_GUI.selectedItem.oid + recordNode.@rubrique_1_id = DTG_rubrique_1_id_GUI.selectedItem.oid + recordNode.@rubrique_2_id = DTG_rubrique_2_id_GUI.selectedItem.oid + recordNode.@rubrique_3_id = DTG_rubrique_3_id_GUI.selectedItem.oid + recordNode.@rubrique_4_id = DTG_rubrique_4_id_GUI.selectedItem.oid + recordNode.@rubrique_5_id = DTG_rubrique_5_id_GUI.selectedItem.oid + recordNode.@rubrique_6_id = DTG_rubrique_6_id_GUI.selectedItem.oid + recordNode.@rubrique_7_id = DTG_rubrique_7_id_GUI.selectedItem.oid + recordNode.@rubrique_8_id = DTG_rubrique_8_id_GUI.selectedItem.oid + recordNode.@rubrique_9_id = DTG_rubrique_9_id_GUI.selectedItem.oid + recordNode.@rubrique_10_id = DTG_rubrique_10_id_GUI.selectedItem.oid + recordNode.@to_rubrique_id = DTG_to_rubrique_id_GUI.selectedItem.oid + recordNode.@to_prestation_id = DTG_to_prestation_id_GUI.selectedItem.oid + break; + + case "PRC" : + + recordNode = readFields(new Array("oid", "code", "texte", "texte_court", "code_original"), recordNode); + recordNode.@type_valorisation_non_facture = PRC_type_valorisation_non_facture_GUI.selectedItem.data + recordNode.@type_ventilation_jour = PRC_type_ventilation_jour_GUI.selectedItem.data + break; + + case "PRH" : + + recordNode = readFields(new Array("oid", "code", "texte", "texte_court", "code_original"), recordNode); + break; + + case "RUB" : + + recordNode = readFields(new Array("oid", "code", "texte", "texte_court", "code_original", "actes_inclus_public", "est_force_etablissement"), recordNode); + break; + + case "TTP" : + + recordNode = readFields(new Array("oid", "code", "texte", "texte_court"), recordNode); + break; + + case "TPY" : + + recordNode = readFields(new Array("oid", "code", "texte", "texte_court", "code_original"), recordNode); + recordNode.@grand_regime_id = TPY_grand_regime_GUI.selectedItem.oid; + break; + + case "SPI" : + + recordNode = readFields(new Array("oid", "code", "texte", "texte_court"), recordNode); + break; + + case "MDA" : + + recordNode = readFields(new Array("oid", "code", "nom", "prenom", "code_original", "est_medecin_salarie", "kiwee_sigems_honpatcpt", "kiwee_sigems_honpatcpthon"), recordNode); + break; + + case "MET" : + + recordNode = readFields(new Array("oid", "code", "nom", "prenom", "code_original", "no_rpps", "code_postal", "ville", "adresse"), recordNode); + break; + + case "MED" : + + recordNode = readFields(new Array("oid", "code", "nom", "prenom", "code_original", "numero_ordre", "medecins_regroupes_oids"), recordNode); + recordNode.@specialite_interne_id = MED_specialite_interne_GUI.selectedItem.oid; + break; + + case "FSJ" : + + recordNode = readFields(new Array("oid", "code", "texte", "est_ignore","encours_1_est_ignore"), recordNode); + recordNode.@medecin_sejour_id = FSJ_medecin_sejour_GUI.selectedItem.oid; + recordNode.@service_facturation_id = FSJ_service_facturation_GUI.selectedItem.oid; + recordNode.@etage_id = FSJ_etage_GUI.selectedItem.oid; + recordNode.@type_sejour = FSJ_type_sejour_GUI.selectedItem.data; + + recordNode.@encours_1_from_date = FSJ_encours_1_from_date_GUI.selectedItem.oid; + break; + + case "BUD" : + + recordNode = readFields(new Array("oid", "code", "texte", "date_debut", "date_fin"), recordNode); + + for each (var item:Object in BUD_indicateurs) { + var indicateurNode:XML = new XML(); + indicateurNode.@oid = item.oid; + indicateurNode.@code = item.code; + indicateurNode.@texte = item.texte; + indicateurNode.@indicateur_id = "0"; + + var indicateur_id_split:Array = item.indicateur_id.toString().split(String.fromCharCode(0)); + if (indicateur_id_split.length > 0) { + indicateurNode.@indicateur_id = indicateur_id_split[indicateur_id_split.length - 2]; + } + recordNode.appendChild(indicateurNode); + } + break; + + case "BUC" : + + recordNode = readFields(new Array("oid", "code", "texte", "texte_court", "code_original"), recordNode); + break; + + case "BUR" : + + recordNode = readFields(new Array("oid", "code", "texte", "priorite", "liste_specialite", "liste_medecin", + "liste_service", "liste_acte", "liste_rubrique", "liste_ghm", "liste_sauf_ghm", "liste_diagnostic_principal", + "liste_diagnostic_relie", "liste_diagnostic_associe", "liste_finess"), recordNode); + + recordNode.@budget_cle_id = BUR_budget_cle_id_GUI.selectedItem.oid; + break; + + case "BUI" : + + recordNode.@oid = BUI_oid_GUI.text; + recordNode.appendChild(BUI_indicateurs); + break; + + case "EXC" : + + // Controles normaux + if (EXC_mode == 0) { + recordNode.@mode = EXC_mode; + recordNode = readFields(new Array( + "oid", "code", "texte", "texte_court", "texte_abrege", "description", + "rule_oid1", "sqlcmd_where1", "sqlcmd_justificatif1", + "rule_oid2", "sqlcmd_where2", "sqlcmd_justificatif2", + "rule_oid3", "sqlcmd_where3", "sqlcmd_justificatif3", "prestataire", + "gravite", "etat_cible", "table1", "table2", "table3", + "is_active","is_alert", "is_hide", "is_cti" + ), recordNode); + } + // Paramètres généraux + if (EXC_mode == 2) { + recordNode.@mode = EXC_mode; + recordNode.@EXPERT_ACTIVE = EXC_EXPERT_ACTIVE_GUI.selected == true ? "1" : "0"; + recordNode.@EXPERT_DATE_DEBUT = EXC_EXPERT_DATE_DEBUT_GUI.text; + EXC_mode = 0; + } + break; + + + case "FAC" : + + recordNode = readFields(new Array("oid", "code", "texte", "texte_court"), recordNode); + break; + + case "FAR" : + + recordNode = readFields(new Array("oid", "code", "texte", "priorite", "liste_type_sejour", "liste_specialite", "liste_medecin", + "liste_service", "liste_etage", "liste_unite_fonctionnelle", "liste_service_entree", "liste_etage_entree", "liste_unite_fonctionnelle_entree", + "liste_acte", "liste_rubrique", "liste_prestation", "liste_ghm", "liste_sauf_ghm", "liste_diagnostic_principal", + "liste_diagnostic_relie", "liste_diagnostic_associe", "liste_finess"), recordNode); + + recordNode.@forme_activite_id = FAR_filiere_soin_id_GUI.selectedItem.oid; + break; + + case "FSO" : + + recordNode = readFields(new Array("oid", "code", "texte", "texte_court"), recordNode); + break; + + case "FSR" : + + recordNode = readFields(new Array("oid", "code", "texte", "priorite", "liste_type_sejour", "liste_specialite", "liste_medecin", + "liste_service", "liste_etage", "liste_unite_fonctionnelle", "liste_service_entree", "liste_etage_entree", "liste_unite_fonctionnelle_entree", + "liste_acte", "liste_rubrique", "liste_prestation", "liste_ghm", "liste_sauf_ghm", "liste_diagnostic_principal", + "liste_diagnostic_relie", "liste_diagnostic_associe", "liste_finess"), recordNode); + + recordNode.@filiere_soin_id = FSR_filiere_soin_id_GUI.selectedItem.oid; + break; + + case "POR" : + + recordNode = readFields(new Array("oid", "code", "texte", "priorite", "liste_type_sejour", "liste_specialite", "liste_medecin", + "liste_service", "liste_etage", "liste_unite_fonctionnelle", "liste_acte", "liste_rubrique", "liste_prestation", "liste_ghm", "liste_sauf_ghm", "liste_diagnostic_principal", + "liste_diagnostic_relie", "liste_diagnostic_associe", "liste_finess"), recordNode); + + recordNode.@pole_id = POR_pole_id_GUI.selectedItem.oid; + break; + + case "CAR" : + + recordNode = readFields(new Array("oid", "code", "texte", "priorite", "liste_type_sejour", "liste_specialite", "liste_medecin", + "liste_service", "liste_etage", "liste_unite_fonctionnelle", "liste_acte", "liste_rubrique", "liste_compte_produit", "liste_sauf_compte_produit", "liste_prestation", "liste_sauf_prestation", "liste_ghm", "liste_sauf_ghm", "liste_diagnostic_principal", + "liste_diagnostic_relie", "liste_diagnostic_associe", "liste_finess"), recordNode); + + recordNode.@compte_produit_analytique_id = CAR_compte_produit_analytique_id_GUI.selectedItem.oid; + break; + + case "ENC" : + + recordNode = readFields(new Array("oid", "type_ligne", "coefficient_force", "prix_unitaire_force", "code", "valeur"), recordNode); + recordNode.@coefficient_is_force = ENC_coefficient_is_force_GUI.selected == true ? "1" : "0"; + recordNode.@prix_unitaire_is_force = ENC_prix_unitaire_is_force_GUI.selected == true ? "1" : "0"; + recordNode.@ignorer = ENC_ignorer_GUI.selected == true ? "1" : "0"; + recordNode.@type_valorisation = ENC_type_valorisation_GUI.selectedItem.data + break; + + case "COV" : + + recordNode = readFields(new Array("oid", "code", "texte", "finess", "valeur_2019_ars", "valeur_2019", "valeur_2019_saisie"), recordNode); + break; + + } + + urlVariables.recordNode = recordNode.toXMLString(); + + CTI_Utilitaires.startRequestHTTP("modules/activite/php/ACTI_setTableRecord.php", urlVariables, exec, true, this.parentApplication); + + function exec(resultatService:XML):void { + + getData(); + + detailBox_GUI.visible = false; + detailBox_GUI.includeInLayout = false; + currendRecordItem = null; + toggleUpdate(false); + } + } + + + + public function BUR_execute_rules():void { + + var urlVariables:URLVariables = new URLVariables() + urlVariables.tableName = tableName; + urlVariables.action = 'BUR_execute_rules'; + + CTI_Utilitaires.startRequestHTTP("modules/activite/php/ACTI_setTableRecord.php", urlVariables, exec, true, this.parentApplication); + + function exec(resultatService:XML):void { } + } + + + + public function BUI_budget_import(BUI_indicateurs_cle:XMLList):void { + + CTI_Utilitaires.inputBox(this, "Budget", "Copier le budget depuis Excel", responseFunction); + + function responseFunction(value:String):void { + + value = value.replace(",", "."); + var BUI_budget_import_array:Array = value.split(String.fromCharCode(13)); + var BUI_budget_import_currentImportIndex:int = 0; + var BUI_budget_import_count:int = 0; + + if (BUI_budget_import_array.length > 0) { + + for (var i:Number = 0; i < BUI_budget_import_array.length; i++) { + + var BUI_budget_import_row_array:Array = BUI_budget_import_array[i].split(String.fromCharCode(9)); + + if (BUI_budget_import_row_array.length > 13) { + + var cle_code:String = BUI_budget_import_row_array[0].toString().toUpperCase() + ' '; + + for each (var itemNode:XML in BUI_indicateurs_cle) { + if (itemNode.@budget_cle_texte.toUpperCase().indexOf(cle_code) >= 0) { + itemNode.@budget_01 = BUI_budget_import_row_array[2].toString(); + itemNode.@budget_02 = BUI_budget_import_row_array[3].toString(); + itemNode.@budget_03 = BUI_budget_import_row_array[4].toString(); + itemNode.@budget_04 = BUI_budget_import_row_array[5].toString(); + itemNode.@budget_05 = BUI_budget_import_row_array[6].toString(); + itemNode.@budget_06 = BUI_budget_import_row_array[7].toString(); + itemNode.@budget_07 = BUI_budget_import_row_array[8].toString(); + itemNode.@budget_08 = BUI_budget_import_row_array[9].toString(); + itemNode.@budget_09 = BUI_budget_import_row_array[10].toString(); + itemNode.@budget_10 = BUI_budget_import_row_array[11].toString(); + itemNode.@budget_11 = BUI_budget_import_row_array[12].toString(); + itemNode.@budget_12 = BUI_budget_import_row_array[13].toString(); + toggleUpdate(true); + break; + } + } + } + } + } + } + } + + + + public function BUI_budget_erase(BUI_indicateurs_cle:XMLList):void { + + for each (var itemNode:XML in BUI_indicateurs_cle) { + itemNode.@budget_01 = '0'; + itemNode.@budget_02 = '0'; + itemNode.@budget_03 = '0'; + itemNode.@budget_04 = '0'; + itemNode.@budget_05 = '0'; + itemNode.@budget_06 = '0'; + itemNode.@budget_07 = '0'; + itemNode.@budget_08 = '0'; + itemNode.@budget_09 = '0'; + itemNode.@budget_10 = '0'; + itemNode.@budget_11 = '0'; + itemNode.@budget_12 = '0'; + toggleUpdate(true); + } + } + + public function FAR_execute_rules():void { + + var urlVariables:URLVariables = new URLVariables() + urlVariables.tableName = tableName; + urlVariables.action = 'FAR_execute_rules'; + + CTI_Utilitaires.startRequestHTTP("modules/activite/php/ACTI_setTableRecord.php", urlVariables, exec, true, this.parentApplication); + + function exec(resultatService:XML):void { + getData(); + } + } + + public function FRU_execute_rules():void { + + var urlVariables:URLVariables = new URLVariables() + urlVariables.tableName = tableName; + urlVariables.action = 'FRU_execute_rules'; + + CTI_Utilitaires.startRequestHTTP("modules/activite/php/ACTI_setTableRecord.php", urlVariables, exec, true, this.parentApplication); + + function exec(resultatService:XML):void { + getData(); + } + } + + + public function POR_execute_rules():void { + + var urlVariables:URLVariables = new URLVariables() + urlVariables.tableName = tableName; + urlVariables.action = 'POR_execute_rules'; + + CTI_Utilitaires.startRequestHTTP("modules/activite/php/ACTI_setTableRecord.php", urlVariables, exec, true, this.parentApplication); + + function exec(resultatService:XML):void { + getData(); + } + } + + public function CAR_execute_rules():void { + + var urlVariables:URLVariables = new URLVariables() + urlVariables.tableName = tableName; + urlVariables.action = 'CAR_execute_rules'; + + CTI_Utilitaires.startRequestHTTP("modules/activite/php/ACTI_setTableRecord.php", urlVariables, exec, true, this.parentApplication); + + function exec(resultatService:XML):void { + getData(); + } + } + + + + public function print():void { + + var printReport:CTI_Print = new CTI_Print() + + if (printReport.start("ACTI_TablesManager", titlePrint) == false) { + return; + } + + printReport.addDataGrid(list_GUI); + + printReport.print(); + } + + + + public function exportExcel():void { + + var xml:XML = new XML(); + + var ongletNode:XML; + var similiTabNode:XML; + var selectionsNode:XML; + var datagridNode:XML; + var columnNode:XML; + var dataNode:XML; + var rowNode:XML; + + xml.@viewName = this.viewName; + xml.@title = this.title; + + selectionsNode = new XML(); + selectionsNode.displayText = ""; + + if (refSearch_GUI.selected == true) { + selectionsNode.@displayText = selectionsNode.displayText + "Uniquement les codes référencés. "; + } + if (textSearch_GUI.text != "") { + selectionsNode.@displayText = selectionsNode.displayText + "(Filtre : " + textSearch_GUI.text + ") "; + } + + xml.appendChild(selectionsNode); + + ongletNode = new XML(); + ongletNode.@excelLabel = tableCode; + xml.appendChild(ongletNode); + + similiTabNode = new XML(); + similiTabNode.@excelLabel = "Liste"; + ongletNode.appendChild(similiTabNode); + + datagridNode = new XML(); + datagridNode.@total = "false"; + ongletNode.appendChild(datagridNode); + + for each (var column:DataGridColumn in list_GUI.columns) { + columnNode = new XML(); + columnNode.@dataField = column.dataField; + columnNode.@headerText = column.headerText; + columnNode.@type = "Char"; + columnNode.@textAlign = column.getStyle("textAlign"); + datagridNode.appendChild(columnNode); + } + + dataNode = new XML(); + similiTabNode.appendChild(dataNode); + + for each (var itemNode:Object in list_collection) { + if (itemNode.oid != "-1") { + rowNode = new XML(); + var c:int = 0; + for each (column in list_GUI.columns) { + c++; + rowNode.@["c" + c.toString()] = itemNode[column.dataField]; + } + dataNode.appendChild(rowNode); + } + } + + CTI_ExcelUtilitaires.exportExcel(xml); + } + + + + public function exportPDF():void { + + var xml:XML = new XML(); + + var ongletNode:XML; + var selectionsNode:XML; + var datagridNode:XML; + var columnNode:XML; + var dataNode:XML; + var rowNode:XML; + + xml.@viewName = this.viewName; + xml.@title = this.title; + + selectionsNode = new XML(); + selectionsNode.displayText = ""; + + if (refSearch_GUI.selected == true) { + selectionsNode.displayText = selectionsNode.displayText + "Uniquement les codes référencés. "; + } + if (textSearch_GUI.text != "") { + selectionsNode.displayText = selectionsNode.displayText + "(Filtre : " + textSearch_GUI.text + ") "; + } + + xml.appendChild(selectionsNode); + + ongletNode = new XML(); + ongletNode.@excelLabel = tableCode; + xml.appendChild(ongletNode); + + datagridNode = new XML(); + datagridNode.@total = "false"; + ongletNode.appendChild(datagridNode); + + for each (var column:DataGridColumn in list_GUI.columns) { + columnNode = new XML(); + columnNode.@dataField = column.dataField; + columnNode.@headerText = column.headerText; + columnNode.@type = "Char"; + columnNode.@textAlign = column.getStyle("textAlign"); + datagridNode.appendChild(columnNode); + } + + dataNode = new XML(); + ongletNode.appendChild(dataNode); + + for each (var itemNode:Object in list_collection) { + if (itemNode.oid != "-1") { + rowNode = new XML(); + var c:int = 0; + for each (column in list_GUI.columns) { + c++; + rowNode.@["c" + c.toString()] = itemNode[column.dataField]; + } + dataNode.appendChild(rowNode); + } + } + + CTI_PDFUtilitaires.exportPDF(xml); + + xml = null; + } + + + + private function FSJ_code_changeEvent(event:*):void { + + toggleUpdate(true); + var sejours_XML:XMLList = FSJ_ARRAY_SEJ_XML.RECORD.(@code == FSJ_code_GUI.text); + if (sejours_XML.length() > 0) { + FSJ_texte_GUI.text = sejours_XML[0].@texte; + } + else { + FSJ_texte_GUI.text = "?"; + } + } + + + + private function placesRefChange(event:ListEvent):void { + + toggleUpdate(true); + DIV_valeur_GUI.text = event.target.selectedItem.valeur.toString(); + DIV_valeur2_GUI.text = event.target.selectedItem.valeur2.toString(); + } + + + + private function EXC_show_generalSettings():void { + + EXC_mode = 2; + detailBox_GUI.visible = true; + detailBox_GUI.includeInLayout = true; + } + + + + private function EXC_execute_rules(controle_id:String=null):void { + + var urlVariables:URLVariables = new URLVariables(); + urlVariables.tableName = tableName; + urlVariables.action = 'execute_rules'; + + if (controle_id != null) { + urlVariables.oids = controle_id; + } + else { + urlVariables.oids = ""; + for each (var item:Object in list_collection) { + if (item.selected == "1") { + if (urlVariables.oids != "") { + urlVariables.oids = urlVariables.oids + ", " + } + urlVariables.oids = urlVariables.oids + item.oid + } + } + } + + CTI_Utilitaires.startRequestHTTP("modules/activite/php/ACTI_setTableRecord.php", urlVariables, exec, true, this.parentApplication); + + function exec(resultatService:XML):void { + + if (resultatService.RETURN.@code.toString() != "KO") { + CTI_Utilitaires.alert_info("Exécution règles Expert", "Exécution terminée : " + resultatService.RETURN.@message.toString()); + } + else { + CTI_Utilitaires.alert_error("Exécution règles Expert", "Exécution terminée avec ERREURS : " + resultatService.RETURN.@message.toString()); + } + + getData(); + + detailBox_GUI.visible = false; + detailBox_GUI.includeInLayout = false; + currendRecordItem = null; + toggleUpdate(false); + } + } + + + + public function EXC_getSQL(controle_id:String=null):void { + + var urlVariables:URLVariables = new URLVariables(); + urlVariables.tableName = tableName; + if (controle_id != null) { + urlVariables.oids = controle_id; + } + else { + urlVariables.oids = ""; + for each (var item:Object in list_collection) { + if (item.selected == "1") { + if (urlVariables.oids != "") { + urlVariables.oids = urlVariables.oids + ", "; + } + urlVariables.oids = urlVariables.oids + item.oid; + } + } + } + + if (urlVariables.oids == "") { + CTI_Utilitaires.alert_error("Export SQL", "Vous devez d'abord choisir les contrôles à exporter"); + return; + } + + CTI_Utilitaires.openURL("modules/activite/php/httpService_ACTI_tableManager_getSqlScript.php", urlVariables, "iCTI_expert_controle.SQL"); + } + + + private function ENC_execute(controle_id:String=null):void { + + var urlVariables:URLVariables = new URLVariables(); + urlVariables.tableName = tableName; + urlVariables.action = 'execute'; + + + CTI_Utilitaires.startRequestHTTP("modules/activite/php/ACTI_setTableRecord.php", urlVariables, exec, true, this.parentApplication); + + function exec(resultatService:XML):void { + + if (resultatService.RETURN.@code.toString() != "KO") { + CTI_Utilitaires.alert_info("Valorisation", "Exécution terminée : " + resultatService.RETURN.@message.toString()); + } + else { + CTI_Utilitaires.alert_error("Valorisation", "Exécution terminée avec ERREURS : " + resultatService.RETURN.@message.toString()); + } + + getData(); + + detailBox_GUI.visible = false; + detailBox_GUI.includeInLayout = false; + currendRecordItem = null; + toggleUpdate(false); + } + } + + private function COV_execute(controle_id:String=null):void { + + var urlVariables:URLVariables = new URLVariables(); + urlVariables.tableName = tableName; + urlVariables.action = 'execute'; + + + CTI_Utilitaires.startRequestHTTP("modules/activite/php/ACTI_setTableRecord.php", urlVariables, exec, true, this.parentApplication); + + function exec(resultatService:XML):void { + + if (resultatService.RETURN.@code.toString() != "KO") { + CTI_Utilitaires.alert_info("Extraction CTI", "Exécution terminée : " + resultatService.RETURN.@message.toString()); + } + else { + CTI_Utilitaires.alert_error("Extraction CTI", "Exécution terminée avec ERREURS : " + resultatService.RETURN.@message.toString()); + } + + getData(); + + detailBox_GUI.visible = false; + detailBox_GUI.includeInLayout = false; + currendRecordItem = null; + toggleUpdate(false); + } + } + + + + public function copyRefSettings():void { + + var urlVariables:URLVariables = new URLVariables(); + urlVariables.tableName = tableName; + urlVariables.oids = ""; + for each (var item:Object in ref_list_collection) { + if (item.selected == "1") { + if (urlVariables.oids != "") { + urlVariables.oids = urlVariables.oids + ", "; + } + urlVariables.oids = urlVariables.oids + item.oid; + } + } + + if (urlVariables.oids == "") { + CTI_Utilitaires.alert_error("Import de données", "Vous devez d'abord choisir les données à récupérer"); + return; + } + + CTI_Utilitaires.startRequestHTTP("modules/activite/php/httpService_ACTI_tableManager_copyRef.php", urlVariables, exec, true, this.parentApplication); + + function exec(resultatService:XML):void { + + getData(); + + detailBox_GUI.visible = false; + detailBox_GUI.includeInLayout = false; + currendRecordItem = null; + toggleUpdate(false); + } + } + + + + public function getRefSettings():void { + detailBox_GUI.visible = false; + detailBox_GUI.includeInLayout = false; + qimport = true; + } + + + + public function hideRefSettings():void { + detailBox_GUI.visible = true; + detailBox_GUI.includeInLayout = true; + qimport = false; + } + + + + private function setSelectedIndex(cb:Object, str:String, field:String='data'):void { + cb.selectedIndex = 0 + for (var idx:int = 0, len:int = cb.dataProvider.length; idx < len; idx++) { + if (cb.dataProvider.getItemAt(idx)[field] == str) { + cb.selectedIndex = idx; + } + } + } + + + + private function fillFields(fields:Array):void { + var dobj:DisplayObject; + var field:String; + for each (field in fields) { + dobj = findChild(detailBox_GUI, tableCode + "_" + field + "_GUI"); + if (dobj != null) { + if (dobj is RichTextEditor) { + if (currendRecordItem[field].toString() != "") { + (dobj as RichTextEditor).htmlText = CTI_Utilitaires.uncompress64(currendRecordItem[field].toString()); + } + else { + (dobj as RichTextEditor).htmlText = ""; + } + } + else if (dobj is TextArea) { + (dobj as TextArea).text = currendRecordItem[field].toString(); + } + else if (dobj is DateField) { + (dobj as DateField).selectedDate = DateField.stringToDate(currendRecordItem[field].toString(), 'DD/MM/YYYY'); + } + else if (dobj is CheckBox) { + (dobj as CheckBox).selected = currendRecordItem[field].toString() == "1" ? true : false; + } + } + } + dobj = null; + } + + + + private function readFields(fields:Array, recordNode:XML):XML { + + var dobj:DisplayObject; + var field:String; + for each (field in fields) { + + dobj = findChild(detailBox_GUI, tableCode + "_" + field + "_GUI"); + if (dobj is RichTextEditor) { + if ((dobj as RichTextEditor).text != "") { + recordNode.@[field] = CTI_Utilitaires.compress64((dobj as RichTextEditor).htmlText); + } + else { + recordNode.@[field] = ""; + } + } + else if (dobj is TextArea) { + recordNode.@[field] = (dobj as TextArea).text; + } + else if (dobj is DateField) { + recordNode.@[field] = DateField.dateToString((dobj as DateField).selectedDate, 'DD/MM/YYYY'); + } + else if (dobj is ComboBox) { + recordNode.@[field] = (dobj as ComboBox).selectedItem.data; + } + else if (dobj is CheckBox) { + recordNode.@[field] = (dobj as CheckBox).selected ? "1" : "0"; + } + + } + dobj = null; + return recordNode; + } + + + + /** + * Fonction qui cherche un displayObject par son nom dans toute l'arboresence d'un + * container. Cette fonction supplante la fonction getChildByName dans le sens où elle + * ne se cantonne pas au premier niveau de l'arboresence mais inspecte tous les niveaux + * + * @param container Container dans lequel chercher l'enfant + * @param childname Nom de l'enfant à chercher + * @return L'élement trouvé dans l'arborescence + */ + private function findChild(container:DisplayObjectContainer, childname:String ):DisplayObject { + + if (container == null) { + container = this; + } + + for (var j:int = 0; j < container.numChildren; ++j) { + + var obj:DisplayObject = container.getChildAt(j) as DisplayObject; + if (obj.name == childname) { + return obj; + } + if (obj is DisplayObjectContainer) { + var doc:DisplayObjectContainer = obj as DisplayObjectContainer; + if (doc.numChildren > 0) { + var ret:DisplayObject = findChild( doc, childname ); + if (ret != null) { + return ret; + } + } + } + } + return null; + } + + + /** + * Initialise l'interface graphique en fonction de la table passée en paramètre + * + * @param tableCode Nom de la table à rendre + */ + public function setupGUI(tableCode:String):void { + + var mainDo:DisplayObject = mainBox.getChildByName(tableCode + "_mainBox"); + detailBox_GUI = (mainDo as DisplayObjectContainer).getChildByName(tableCode + "_detailBox_GUI") as VBox; + texte_GUI = findChild(detailBox_GUI as DisplayObjectContainer, tableCode + "_texte_GUI") as TextArea; + + if (tableCode != "ENC") { + list_GUI = null + list_GUI = (mainDo as DisplayObjectContainer).getChildByName(tableCode + "_list_GUI") as DataGrid; + if (list_GUI == null) { + var subDo:DisplayObject = (mainDo as DisplayObjectContainer).getChildByName(tableCode + "_subBox"); + if (subDo != null) { + list_GUI = (subDo as DisplayObjectContainer).getChildByName(tableCode + "_list_GUI") as DataGrid; + } + } + } + else { + list_GUI = ENC_list1_GUI + if (ENC_type_parametre_GUI.selectedIndex == 1) { + list_GUI = ENC_list2_GUI + } + if (ENC_type_parametre_GUI.selectedIndex == 2) { + list_GUI = ENC_list3_GUI + } + if (ENC_type_parametre_GUI.selectedIndex == 3) { + list_GUI = ENC_list4_GUI + } + if (ENC_type_parametre_GUI.selectedIndex == 4) { + list_GUI = ENC_list5_GUI + } + if (ENC_type_parametre_GUI.selectedIndex == 5) { + list_GUI = ENC_list8_GUI + } + list_collection = list_GUI.dataProvider as CTI_ArrayCollection + searchChange() + } + + mainDo.visible = true; + } + + public function toggleUpdate(value:Boolean):void { + recordUpdated = value; + } + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/swf/buildCTI_ACTI_BudgetManager.bat b/swf/buildCTI_ACTI_BudgetManager.bat new file mode 100644 index 0000000..5b6ca96 --- /dev/null +++ b/swf/buildCTI_ACTI_BudgetManager.bat @@ -0,0 +1,9 @@ +@echo off +SET ori_path=%cd% +CD ..\..\base\swf +SET sources_path=%cd% +CD %ori_path% +:: sources_path permet d'inclure le répertoire CTI qui contient les composants maison +SET OPTS=-use-network=false -optimize=true -debug=true -source-path="%sources_path%" +C:\flex_sdk_350\bin\mxmlc.exe %OPTS% .\CTI_ACTI_BudgetManager.mxml -output ..\..\..\CTI_ACTI_BudgetManager.swf +PAUSE \ No newline at end of file diff --git a/swf/buildCTI_ACTI_ConsoManager.bat b/swf/buildCTI_ACTI_ConsoManager.bat new file mode 100644 index 0000000..203e2db --- /dev/null +++ b/swf/buildCTI_ACTI_ConsoManager.bat @@ -0,0 +1,9 @@ +@echo off +SET ori_path=%cd% +CD ..\..\base\swf +SET sources_path=%cd% +CD %ori_path% +:: sources_path permet d'inclure le répertoire CTI qui contient les composants maison +SET OPTS=-use-network=false -optimize=true -debug=true -source-path="%sources_path%" +C:\flex_sdk_350\bin\mxmlc.exe %OPTS% .\CTI_ACTI_ConsoManager.mxml -output ..\..\..\CTI_ACTI_ConsoManager.swf +PAUSE \ No newline at end of file diff --git a/swf/buildCTI_ACTI_Synchronize.bat b/swf/buildCTI_ACTI_Synchronize.bat new file mode 100644 index 0000000..8b9fefd --- /dev/null +++ b/swf/buildCTI_ACTI_Synchronize.bat @@ -0,0 +1,9 @@ +@echo off +SET ori_path=%cd% +CD ..\..\base\swf +SET sources_path=%cd% +CD %ori_path% +:: sources_path permet d'inclure le répertoire CTI qui contient les composants maison +SET OPTS=-use-network=false -optimize=true -debug=true -source-path="%sources_path%" +C:\flex_sdk_350\bin\mxmlc.exe %OPTS% .\CTI_ACTI_Synchronize.mxml -output ..\..\..\CTI_ACTI_Synchronize.swf +PAUSE \ No newline at end of file diff --git a/swf/buildCTI_ACTI_TablesManager.bat b/swf/buildCTI_ACTI_TablesManager.bat new file mode 100644 index 0000000..981b955 --- /dev/null +++ b/swf/buildCTI_ACTI_TablesManager.bat @@ -0,0 +1,9 @@ +@echo off +SET ori_path=%cd% +CD ..\..\base\swf +SET sources_path=%cd% +CD %ori_path% +:: sources_path permet d'inclure le répertoire CTI qui contient les composants maison +SET OPTS=-use-network=false -optimize=true -debug=true -source-path="%sources_path%" +C:\flex_sdk_350\bin\mxmlc.exe %OPTS% .\CTI_ACTI_TablesManager.mxml -output ..\..\..\CTI_ACTI_TablesManager.swf +PAUSE \ No newline at end of file diff --git a/swf/build_activite.bat b/swf/build_activite.bat new file mode 100644 index 0000000..54f9eea --- /dev/null +++ b/swf/build_activite.bat @@ -0,0 +1,5 @@ +@echo off + +CALL build_activite_silently.bat + +PAUSE \ No newline at end of file diff --git a/swf/build_activite_silently.bat b/swf/build_activite_silently.bat new file mode 100644 index 0000000..0227765 --- /dev/null +++ b/swf/build_activite_silently.bat @@ -0,0 +1,12 @@ +@echo off +SET ori_path=%cd% +CD ..\..\base\swf +SET sources_path=%cd% +CD %ori_path% +:: sources_path permet d'inclure le répertoire CTI qui contient les composants maison +SET OPTS=-use-network=false -optimize=true -debug=false -source-path="%sources_path%" + +FOR /r . %%F IN (*.mxml) DO ( + IF EXIST "%%~nF.mxml" echo %%~nF.mxml + IF EXIST "%%~nF.mxml" C:\flex_sdk_350\bin\mxmlc.exe %OPTS% .\%%~nF.mxml -output ..\..\..\%%~nF.swf +)